<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muskan </title>
    <description>The latest articles on DEV Community by Muskan  (@muskan_8abedcc7e12).</description>
    <link>https://dev.to/muskan_8abedcc7e12</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3814925%2F56a25a4c-6dc3-421c-9bec-b598c5c71423.png</url>
      <title>DEV Community: Muskan </title>
      <link>https://dev.to/muskan_8abedcc7e12</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/muskan_8abedcc7e12"/>
    <language>en</language>
    <item>
      <title>Azure Firewall Premium Without TLS Inspection: That's $693/Month Wasted</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Mon, 13 Apr 2026 09:10:50 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/azure-firewall-premium-without-tls-inspection-thats-693month-wasted-33ja</link>
      <guid>https://dev.to/muskan_8abedcc7e12/azure-firewall-premium-without-tls-inspection-thats-693month-wasted-33ja</guid>
      <description>&lt;h1&gt;
  
  
  Azure Firewall Premium Without TLS Inspection: That's $693/Month Wasted
&lt;/h1&gt;

&lt;p&gt;Azure Firewall Premium costs $2.496 per hour. Azure Firewall Standard costs $1.25 per hour. That gap — $1.246 per hour, $10,915 per year for a single instance — is the price of four features: TLS inspection, IDPS, full URL filtering with path awareness, and web category filtering.&lt;/p&gt;

&lt;p&gt;Every one of those features requires explicit configuration after deployment. None of them are active by default. If your team deployed Premium because it appeared in an architecture diagram or a security checklist, and never completed the configuration steps, you are paying $10,915 per year for capabilities your firewall is not using.&lt;/p&gt;

&lt;p&gt;This is more common than it should be. TLS inspection requires deploying an intermediate CA certificate, configuring it in Azure Key Vault, and enabling it in the Firewall Policy. IDPS requires switching from the default Alert mode to Alert and Deny. URL filtering requires building category policies. Teams that find this complexity difficult to schedule simply defer it indefinitely, while the Premium billing continues.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Premium Actually Adds Over Standard
&lt;/h2&gt;

&lt;p&gt;Understanding what you paid for is the starting point for deciding whether to keep it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Standard&lt;/th&gt;
&lt;th&gt;Premium&lt;/th&gt;
&lt;th&gt;Requires Explicit Config&lt;/th&gt;
&lt;th&gt;Default State&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Network rules (IP, port, protocol)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Application rules (FQDN filtering)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Threat intelligence filtering&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Alert mode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DNS proxy&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Active when enabled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TLS inspection (decrypt, inspect, re-encrypt HTTPS)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes — requires intermediate CA in Key Vault&lt;/td&gt;
&lt;td&gt;Disabled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IDPS (signature-based intrusion detection)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes — must set Alert and Deny mode&lt;/td&gt;
&lt;td&gt;Alert only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL filtering (full path, not just FQDN)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes — requires URL rules in policy&lt;/td&gt;
&lt;td&gt;No rules applied&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web category filtering&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes — requires category policy&lt;/td&gt;
&lt;td&gt;No categories applied&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The bottom four rows are what you are paying the Premium premium for. If none of them are configured, your firewall has the same effective security posture as Standard, with threat intelligence filtering in alert mode — which Standard also provides.&lt;/p&gt;

&lt;p&gt;The critical detail on IDPS: Alert mode logs suspicious traffic but does not block it. A Premium firewall with IDPS in Alert mode offers no additional protection over Standard for the traffic patterns IDPS is designed to catch. Switching to Alert and Deny mode is what activates the protection. Most deployments never make that switch.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Check if Your Firewall Is Actually Using Premium Features
&lt;/h2&gt;

&lt;p&gt;The fastest way to audit your firewall is through the Azure Portal and CLI. This takes under 10 minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check TLS inspection status:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;az network firewall policy show &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &amp;lt;policy-name&amp;gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--resource-group&lt;/span&gt; &amp;lt;rg-name&amp;gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s2"&gt;"transportSecurity"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the output is &lt;code&gt;null&lt;/code&gt; or &lt;code&gt;{}&lt;/code&gt;, TLS inspection is not configured. You are not inspecting any HTTPS traffic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check IDPS mode:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;az network firewall policy show &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &amp;lt;policy-name&amp;gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--resource-group&lt;/span&gt; &amp;lt;rg-name&amp;gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--query&lt;/span&gt; &lt;span class="s2"&gt;"intrusionDetection.mode"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output will be &lt;code&gt;"Off"&lt;/code&gt;, &lt;code&gt;"Alert"&lt;/code&gt;, or &lt;code&gt;"Deny"&lt;/code&gt;. If it is &lt;code&gt;"Off"&lt;/code&gt; or &lt;code&gt;"Alert"&lt;/code&gt;, the IDPS engine is either disabled or logging only. Neither blocks threats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check URL filtering rules:&lt;/strong&gt;&lt;br&gt;
In the Azure Portal, go to your Firewall Policy, select Application Rules, and look for rules with a rule type of URL (not FQDN). If all your application rules use FQDN, you are not using URL filtering. Standard supports FQDN rules identically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check web category policies:&lt;/strong&gt;&lt;br&gt;
In the same Application Rules view, look for rules using Web Categories. No category rules means web category filtering is not in use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fztx5vlaforvev9p99t1r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fztx5vlaforvev9p99t1r.png" alt="diagram" width="800" height="1403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If every branch of that audit lands on the non-Premium outcome, you are running Standard functionality on Premium billing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Annual Cost of Unused Premium
&lt;/h2&gt;

&lt;p&gt;A single Azure Firewall Premium instance running 24/7 in East US costs $21,870 per year in fixed instance fees alone ($2.496 x 8,760 hours). The equivalent Standard instance costs $10,950. The difference is $10,920 per year, per firewall.&lt;/p&gt;

&lt;p&gt;Organizations with hub-and-spoke network topologies or Azure Virtual WAN deployments often run multiple firewall instances.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Firewall Count&lt;/th&gt;
&lt;th&gt;Annual Cost (Premium)&lt;/th&gt;
&lt;th&gt;Annual Cost (Standard)&lt;/th&gt;
&lt;th&gt;Annual Overspend&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;$21,870&lt;/td&gt;
&lt;td&gt;$10,950&lt;/td&gt;
&lt;td&gt;$10,920&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;$65,610&lt;/td&gt;
&lt;td&gt;$32,850&lt;/td&gt;
&lt;td&gt;$32,760&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;$109,350&lt;/td&gt;
&lt;td&gt;$54,750&lt;/td&gt;
&lt;td&gt;$54,600&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Data processing charges ($0.016/GB) are identical between tiers and are excluded from this comparison. The overspend figures are purely from instance pricing.&lt;/p&gt;

&lt;p&gt;For an organization running three firewalls in a hub-and-spoke topology — one per region, none with TLS inspection configured — the wasted spend is $32,760 per year. That is not a rounding error. It is a budget line that can fund meaningful engineering work or be redirected to tools that are actually in use.&lt;/p&gt;




&lt;h2&gt;
  
  
  Three Scenarios Where Premium Is Justified
&lt;/h2&gt;

&lt;p&gt;Premium is the right choice in specific, verifiable circumstances.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compliance audit requiring TLS inspection.&lt;/strong&gt; PCI-DSS v4.0 and HIPAA technical safeguard requirements can, depending on auditor interpretation, require inspection of encrypted outbound traffic. If your compliance framework has this requirement and your auditor expects TLS inspection to be demonstrably active, Premium with TLS inspection configured is a compliance necessity, not a cost choice. The key word is demonstrably: the configuration must be active and logs must show inspection events.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IDPS in Deny mode for regulated or high-sensitivity workloads.&lt;/strong&gt; If your firewall protects workloads that process sensitive data and your security team has explicitly enabled IDPS in Alert and Deny mode with reviewed signature exclusions, Premium is earning its price. The IDPS signature database provides detection coverage that Standard's threat intelligence filtering does not match in depth or granularity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User-facing environments with web category filtering requirements.&lt;/strong&gt; If you need to enforce browsing policies for employees or contractor-facing environments — blocking social media, gambling, or high-risk categories — URL and web category filtering is meaningfully easier to manage in Azure Firewall Premium than in third-party solutions. If this use case applies, Premium is the right tool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhae8sxac9cv4b3eqagwo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhae8sxac9cv4b3eqagwo.png" alt="diagram" width="800" height="867"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If none of those three conditions apply, Standard meets your requirements at half the price.&lt;/p&gt;




&lt;h2&gt;
  
  
  Downgrading from Premium to Standard: What It Actually Takes
&lt;/h2&gt;

&lt;p&gt;There is no in-place downgrade path for Azure Firewall. You cannot change the SKU of an existing firewall instance. The migration requires creating a new Standard firewall and cutting over traffic.&lt;/p&gt;

&lt;p&gt;The process is straightforward but requires a maintenance window.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9tnhjnhdbo0yuweezp2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9tnhjnhdbo0yuweezp2u.png" alt="diagram" width="800" height="1817"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Key considerations:&lt;/p&gt;

&lt;p&gt;The route table swap is the cutover moment. Azure Route Tables point next-hop traffic to the firewall's private IP. Updating the next-hop address from the Premium firewall IP to the Standard firewall IP redirects traffic. This takes effect within seconds of saving the route table change. Plan the swap during a low-traffic window and have rollback steps ready (re-pointing the route table back to the Premium IP).&lt;/p&gt;

&lt;p&gt;If you have Premium-only rules in your policy, specifically URL rules or web category rules, those must be converted to FQDN equivalents before migration. Run the firewall in parallel for 24 hours before decommissioning Premium to confirm all traffic patterns are handled correctly.&lt;/p&gt;

&lt;p&gt;The migration itself takes 2-4 hours for most environments. The majority of that time is validation and monitoring, not configuration.&lt;/p&gt;




&lt;h2&gt;
  
  
  If You Stay on Premium, At Least Use It
&lt;/h2&gt;

&lt;p&gt;For teams with a legitimate Premium requirement, the configuration debt is the real problem. Paying for Premium with TLS inspection disabled and IDPS in Alert mode means you have the billing exposure of a premium security tool with the protection level of a basic one.&lt;/p&gt;

&lt;p&gt;The minimum configuration that makes Premium worth its cost: TLS inspection enabled with a managed intermediate CA deployed to endpoints, IDPS set to Alert and Deny mode with a reviewed exclusion list for known-safe traffic patterns, and URL category policies applied to at least the highest-risk categories (newly registered domains, malware, phishing).&lt;/p&gt;

&lt;p&gt;If your team has not completed that configuration because it has been difficult to schedule, that is the actual problem to solve. The choice is not between Premium and Standard. It is between paying for Premium capabilities and using them, or paying for Standard capabilities at Standard prices.&lt;/p&gt;

&lt;p&gt;Running unused Premium is the worst of both options.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>firewall</category>
      <category>premium</category>
      <category>tls</category>
    </item>
    <item>
      <title>When Autoscaling Makes Your Bill Worse, Not Better</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Mon, 13 Apr 2026 09:10:14 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/when-autoscaling-makes-your-bill-worse-not-better-285j</link>
      <guid>https://dev.to/muskan_8abedcc7e12/when-autoscaling-makes-your-bill-worse-not-better-285j</guid>
      <description>&lt;h1&gt;
  
  
  When Autoscaling Makes Your Bill Worse, Not Better
&lt;/h1&gt;

&lt;p&gt;Autoscaling is sold as the solution to cloud waste. Scale down when traffic drops, scale up when it rises, pay only for what you use. That logic holds when the configuration is correct. When it is not, autoscaling becomes the most expensive mistake in your cluster.&lt;/p&gt;

&lt;p&gt;We have seen production clusters where HPA and VPA were both active, Cluster Autoscaler was provisioning nodes on every spike, and the monthly bill was 40% higher than the equivalent fixed-size deployment would have been. The scaling was working as configured. The configuration was wrong.&lt;/p&gt;

&lt;p&gt;This is not a rare edge case. The four failure modes below appear consistently across teams that have just enabled autoscaling and assumed the defaults are safe.&lt;/p&gt;




&lt;h2&gt;
  
  
  How HPA Actually Computes Scale Decisions
&lt;/h2&gt;

&lt;p&gt;Most engineers understand HPA conceptually: when CPU goes up, add replicas. The detail that causes the most misconfiguration is what "CPU goes up" actually means to the controller.&lt;/p&gt;

&lt;p&gt;HPA computes utilization as a percentage of the pod's CPU &lt;strong&gt;request&lt;/strong&gt;, not its limit, and not the raw CPU usage in millicores.&lt;/p&gt;

&lt;p&gt;If a pod has a CPU request of &lt;code&gt;100m&lt;/code&gt; and a CPU limit of &lt;code&gt;2000m&lt;/code&gt;, and HPA's &lt;code&gt;targetCPUUtilizationPercentage&lt;/code&gt; is set to &lt;code&gt;50&lt;/code&gt;, HPA will try to keep actual CPU usage at &lt;code&gt;50m&lt;/code&gt; per pod. A pod that idles at &lt;code&gt;60m&lt;/code&gt; looks perpetually overloaded. HPA adds a replica. The new replica also idles at &lt;code&gt;60m&lt;/code&gt;. HPA adds another. This continues until &lt;code&gt;maxReplicas&lt;/code&gt; is hit.&lt;/p&gt;

&lt;p&gt;The pod is not overloaded. The cluster is.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8ocvwdq3f6hbyjvjbtr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8ocvwdq3f6hbyjvjbtr.png" alt="diagram" width="800" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The formula HPA uses is: &lt;code&gt;desiredReplicas = ceil(currentReplicas * (currentUtilization / targetUtilization))&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;currentUtilization&lt;/code&gt; is already above &lt;code&gt;targetUtilization&lt;/code&gt; before any real load arrives, the multiplier is greater than 1 on every reconciliation loop. The cluster scales continuously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Set CPU requests to match the pod's actual idle CPU consumption, measured over 7 days. HPA's target should reflect load above idle, not total usage. A pod that idles at &lt;code&gt;60m&lt;/code&gt; and peaks at &lt;code&gt;300m&lt;/code&gt; should have a request near &lt;code&gt;60m&lt;/code&gt; and an HPA target around &lt;code&gt;70%&lt;/code&gt;, triggering scale-out when load reaches &lt;code&gt;42m&lt;/code&gt; above idle.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Four Failure Modes That Inflate Your Bill
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Target Set Below Idle CPU
&lt;/h3&gt;

&lt;p&gt;Already described above. The signal is an HPA that shows &lt;code&gt;TARGETS&lt;/code&gt; at or above &lt;code&gt;targetCPUUtilizationPercentage&lt;/code&gt; even when no traffic is hitting the service. Check with &lt;code&gt;kubectl get hpa -n &amp;lt;namespace&amp;gt;&lt;/code&gt; and look for utilization values that match your target even during off-hours.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. HPA and VPA Running Simultaneously in Auto Mode
&lt;/h3&gt;

&lt;p&gt;VPA in &lt;code&gt;Auto&lt;/code&gt; mode evicts pods to apply new resource recommendations. Each eviction causes a brief CPU spike as the replacement pod starts up. HPA reads that spike and adds a replica. VPA then recalculates recommendations against a fleet that now has more replicas than before. The new recommendation is different. VPA evicts again. HPA scales again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhu8zwsc6gecreukln8qu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhu8zwsc6gecreukln8qu.png" alt="diagram" width="800" height="782"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The result is replica count drift upward over time, with no corresponding increase in actual workload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Run VPA in &lt;code&gt;Off&lt;/code&gt; or &lt;code&gt;Recommendation&lt;/code&gt; mode only. Read VPA's output and apply it manually to your deployment's &lt;code&gt;resources.requests&lt;/code&gt;. Let HPA handle replica scaling from a stable request baseline. Never run VPA &lt;code&gt;Auto&lt;/code&gt; and HPA on the same deployment.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Node Scale-Down Lag
&lt;/h3&gt;

&lt;p&gt;Cluster Autoscaler's default &lt;code&gt;scale-down-delay-after-add&lt;/code&gt; is 10 minutes. Its default &lt;code&gt;scale-down-unneeded-time&lt;/code&gt; is also 10 minutes. A spike that lasts 3 minutes provisions new nodes that remain billable for at least 20 minutes after the spike ends.&lt;/p&gt;

&lt;p&gt;For workloads with frequent short spikes, this means your cluster is almost always running with the node count from the last peak, not the current load. At $0.10/node-hour on t3.large, 5 extra nodes during 8 hours of evening quiet costs $4 per night, $120 per month, per service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; Tune &lt;code&gt;--scale-down-delay-after-add&lt;/code&gt; to 3-5 minutes for development and staging clusters. For production, balance cost against the re-provisioning latency your workload can tolerate.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Metric Staleness in Custom Autoscalers
&lt;/h3&gt;

&lt;p&gt;KEDA and any custom metrics-based HPA configuration depend on Prometheus (or another metrics source) for their scaling signals. Prometheus default scrape interval is 15 seconds. With metric collection lag, rule evaluation delay, and HPA reconciliation period, the data HPA acts on can be 30-60 seconds old.&lt;/p&gt;

&lt;p&gt;For a bursty workload that spikes and drops in under 60 seconds, the autoscaler always reacts after the fact. It adds replicas as the spike is already ending. Those replicas sit idle through the stabilization window (default 5 minutes), then Cluster Autoscaler keeps the nodes alive for another 10 minutes. The spike cost 3 minutes of real load and 15 minutes of real spend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; For bursty workloads, reduce Prometheus scrape interval to 5 seconds for the relevant metrics. Or use predictive scaling (pre-scale before known peak times) instead of reactive scaling for workloads with predictable traffic patterns.&lt;/p&gt;




&lt;h2&gt;
  
  
  Detecting Runaway Scaling Before It Hits Your Invoice
&lt;/h2&gt;

&lt;p&gt;The failure modes above are detectable before they become expensive. These are the signals worth watching.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Warning Condition&lt;/th&gt;
&lt;th&gt;How to Check&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HPA utilization at target during off-hours&lt;/td&gt;
&lt;td&gt;HPA shows utilization at or above target with no active traffic&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;kubectl get hpa -A&lt;/code&gt; during off-peak window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Replica count trend&lt;/td&gt;
&lt;td&gt;Replicas increasing over days without traffic growth&lt;/td&gt;
&lt;td&gt;Prometheus &lt;code&gt;kube_deployment_spec_replicas&lt;/code&gt; 7-day graph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VPA eviction rate&lt;/td&gt;
&lt;td&gt;More than 2 evictions/hour per deployment&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubectl get events --field-selector reason=Evicted&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Node count vs request count ratio&lt;/td&gt;
&lt;td&gt;Node count stable while request rate drops&lt;/td&gt;
&lt;td&gt;Prometheus &lt;code&gt;kube_node_info&lt;/code&gt; vs ingress RPS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HPA scale-up frequency&lt;/td&gt;
&lt;td&gt;More than 4 scale-up events per hour during normal load&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;kubectl describe hpa &amp;lt;name&amp;gt;&lt;/code&gt; events section&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cluster Autoscaler churn&lt;/td&gt;
&lt;td&gt;Nodes provisioned and deleted more than twice per day&lt;/td&gt;
&lt;td&gt;Cluster Autoscaler logs: &lt;code&gt;grep "Scale-up" cluster-autoscaler.log&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Set alerts on the first three. The rest are diagnostic when you suspect a problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  Configuration Patterns That Eliminate the Failure Modes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  VPA as Input to HPA, Not a Parallel Controller
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xalkj015ve7egyro73g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xalkj015ve7egyro73g.png" alt="diagram" width="800" height="1752"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the pattern that produces stable scaling. VPA's recommendations are reviewed and applied on a cadence. HPA operates against a request value that reflects actual idle consumption. Cluster Autoscaler provisions nodes against predictable replica counts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stabilization Windows Tuned to Your Traffic Shape
&lt;/h3&gt;

&lt;p&gt;HPA's &lt;code&gt;scaleDown.stabilizationWindowSeconds&lt;/code&gt; defaults to 300 seconds (5 minutes). For a service with 10-minute traffic cycles, that is reasonable. For a service with 2-hour traffic cycles, replicas will churn constantly. Set the window to match the natural period of your load pattern.&lt;/p&gt;

&lt;p&gt;Similarly, &lt;code&gt;scaleUp.stabilizationWindowSeconds&lt;/code&gt; defaults to 0 (immediate scale-up). For services where a 30-second spike does not justify a new replica, set this to 60-120 seconds to absorb transient spikes without triggering scale-out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cluster Autoscaler Tuning by Environment
&lt;/h3&gt;

&lt;p&gt;For production clusters, the default 10-minute delays are appropriate. For non-production clusters (dev, staging, preview), reduce &lt;code&gt;scale-down-delay-after-add&lt;/code&gt; and &lt;code&gt;scale-down-unneeded-time&lt;/code&gt; to 2-3 minutes each. Non-prod clusters are typically not latency-sensitive. Aggressive scale-down on non-prod is pure cost reduction with no operational downside.&lt;/p&gt;

&lt;p&gt;Going further: for non-prod environments, scheduled scaling (down to zero at end of day, back up at start of day) eliminates the problem entirely. A cluster that is off for 14 hours per day costs 58% less than one running 24/7. Autoscaling on a non-prod cluster is often the wrong tool. Scheduling is simpler and cheaper.&lt;/p&gt;

&lt;h3&gt;
  
  
  KEDA Scrape Interval Alignment
&lt;/h3&gt;

&lt;p&gt;If you use KEDA with a Prometheus trigger, set &lt;code&gt;pollingInterval&lt;/code&gt; in your &lt;code&gt;ScaledObject&lt;/code&gt; to match your Prometheus scrape interval. The default &lt;code&gt;pollingInterval&lt;/code&gt; is 30 seconds. If Prometheus scrapes every 15 seconds, KEDA sees data that is up to 45 seconds old (scrape age plus polling delay). Reducing both to 5-10 seconds closes the detection gap for bursty workloads.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Good Autoscaling Actually Looks Like
&lt;/h2&gt;

&lt;p&gt;A well-tuned autoscaling setup has two visible characteristics. First, replica counts are stable during steady-state traffic, moving only when load genuinely changes over a meaningful time window. Second, node count follows replica count with a predictable lag, and drops back to baseline within 15-20 minutes after load normalizes.&lt;/p&gt;

&lt;p&gt;If your replica count graph looks like a heartbeat at rest, your autoscaling is calibrated. If it looks like a seismograph, the configuration is fighting your workload rather than tracking it.&lt;/p&gt;

&lt;p&gt;The deeper issue is that autoscaling is a tool for production variability. Non-production environments do not have the same variability profile. Dev and staging clusters run at low load most of the day, spike briefly during CI runs or manual testing, then sit idle for hours. Autoscaling on these environments responds to those spikes by provisioning nodes that stay alive long after the spike ends. For non-prod, scheduled environment management eliminates this entirely. zopnight handles this automatically: environments shut down after inactivity and wake on access, without relying on autoscaler heuristics that were designed for production traffic patterns.&lt;/p&gt;

&lt;p&gt;The goal is not to autoscale everything. The goal is to pay for what you actually use. Sometimes that means better-tuned HPA. Sometimes it means no autoscaling at all.&lt;/p&gt;

</description>
      <category>when</category>
      <category>autoscaling</category>
      <category>makes</category>
      <category>bill</category>
    </item>
    <item>
      <title>Your Azure VM's CPU Is at 12%: Here's What That's Actually Costing You</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Thu, 09 Apr 2026 11:08:07 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/your-azure-vms-cpu-is-at-12-heres-what-thats-actually-costing-you-4d8i</link>
      <guid>https://dev.to/muskan_8abedcc7e12/your-azure-vms-cpu-is-at-12-heres-what-thats-actually-costing-you-4d8i</guid>
      <description>&lt;p&gt;Azure Advisor flags over 35% of Azure VMs as underutilized. The threshold it uses is 15% average CPU over 14 days. If your VM is sitting at 12%, Advisor has already noticed. The question is whether you have.&lt;/p&gt;

&lt;p&gt;The problem is not that 12% CPU is inherently bad. The problem is that you are paying for 100% of a VM while using 12% of it. That gap is pure waste, and it compounds across every VM in your fleet, every month, indefinitely.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Cost of 12% CPU Utilization
&lt;/h2&gt;

&lt;p&gt;Take a concrete example. A &lt;code&gt;Standard_D8s_v5&lt;/code&gt; VM in East US costs $277/month on pay-as-you-go. It has 8 vCPUs and 32GB of RAM. At 12% average CPU utilization, your application is using roughly 1 effective vCPU at any given moment.&lt;/p&gt;

&lt;p&gt;The math is uncomfortable.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;VM size&lt;/th&gt;
&lt;th&gt;Monthly cost&lt;/th&gt;
&lt;th&gt;Effective vCPUs used&lt;/th&gt;
&lt;th&gt;Cost per used vCPU&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Current state (12% CPU)&lt;/td&gt;
&lt;td&gt;Standard_D8s_v5&lt;/td&gt;
&lt;td&gt;$277&lt;/td&gt;
&lt;td&gt;0.96&lt;/td&gt;
&lt;td&gt;$288&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Right-sized (70% CPU target)&lt;/td&gt;
&lt;td&gt;Standard_D2s_v5&lt;/td&gt;
&lt;td&gt;$70&lt;/td&gt;
&lt;td&gt;1.4&lt;/td&gt;
&lt;td&gt;$50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ideal utilization (70% CPU)&lt;/td&gt;
&lt;td&gt;Standard_D8s_v5&lt;/td&gt;
&lt;td&gt;$277&lt;/td&gt;
&lt;td&gt;5.6&lt;/td&gt;
&lt;td&gt;$49&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You are paying $288 per utilized vCPU-month. The market rate for a vCPU-month is $34. The gap is not a rounding error. For a fleet of 20 VMs in the same state, that is $4,160/month in compute you bought and did not use.&lt;/p&gt;

&lt;p&gt;Right-sizing from &lt;code&gt;Standard_D8s_v5&lt;/code&gt; to &lt;code&gt;Standard_D2s_v5&lt;/code&gt; cuts the monthly cost from $277 to $70, a saving of $207 per instance. Twenty instances: $4,140/month, $49,680/year. The application behavior does not change because the application was never using the resources you removed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why VMs End Up at 12%: The Three Root Causes
&lt;/h2&gt;

&lt;p&gt;Under-utilization is not random. It follows three patterns, each with a different fix.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtj6bzmr02kiufbtnwuo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtj6bzmr02kiufbtnwuo.png" alt="diagram" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Peak provisioning&lt;/strong&gt; is the most common. An engineer provisions a VM for the traffic spike they expect at launch. The spike arrives, plateaus at 30% CPU, and the VM never gets resized because it is "working fine." Six months later, you have a VM provisioned for 5x the actual load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Workload decline&lt;/strong&gt; happens when a service loses traffic over time. A background job that once processed 10,000 events per hour now processes 800. The VM size reflects the original workload. Nobody resizes it because the cost is invisible and resizing feels risky.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Environment proliferation&lt;/strong&gt; is the non-production problem. A developer spins up a staging environment for a project, the project ships, and the staging VM keeps running. There is no automated cleanup. Over 18 months, you accumulate a fleet of zombie VMs that collectively cost more than the production workload they were created to test.&lt;/p&gt;

&lt;h2&gt;
  
  
  Right-Sizing Azure VMs: The Process That Actually Works
&lt;/h2&gt;

&lt;p&gt;Right-sizing from intuition fails. The correct approach uses a 14-day metric baseline, p95 values (not averages, not maximums), and a validation step before resizing production.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0rolababqzdp9px88ylk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0rolababqzdp9px88ylk.png" alt="diagram" width="800" height="88"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Pull p95 metrics from Azure Monitor.&lt;/strong&gt; Navigate to the VM, open Metrics, and add &lt;code&gt;Percentage CPU&lt;/code&gt; with an aggregation of &lt;code&gt;P95&lt;/code&gt; over the last 14 days. Do the same for &lt;code&gt;Available Memory Bytes&lt;/code&gt;. P95 means 95% of the time, CPU was at or below this value. This is your true load ceiling, not the spike you are afraid of.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Apply the 60% headroom rule.&lt;/strong&gt; If your p95 CPU is 18% on a &lt;code&gt;Standard_D8s_v5&lt;/code&gt;, you need a VM that can handle 18% of 8 vCPUs with 40% headroom: roughly 1.4 vCPUs at peak p95 load. A &lt;code&gt;Standard_D2s_v5&lt;/code&gt; (2 vCPUs) handles that comfortably and costs $70/month instead of $277.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Validate before resizing production.&lt;/strong&gt; For non-production VMs, skip directly to resize. For production, run your existing load tests against the target VM size in a staging environment. If you have no load tests, resize during low-traffic hours and monitor for 30 minutes before declaring success.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Current size&lt;/th&gt;
&lt;th&gt;Typical right-size target&lt;/th&gt;
&lt;th&gt;Monthly saving&lt;/th&gt;
&lt;th&gt;Annual saving&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Standard_D8s_v5 ($277)&lt;/td&gt;
&lt;td&gt;Standard_D4s_v5 ($139)&lt;/td&gt;
&lt;td&gt;$138&lt;/td&gt;
&lt;td&gt;$1,656&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard_D16s_v5 ($554)&lt;/td&gt;
&lt;td&gt;Standard_D8s_v5 ($277)&lt;/td&gt;
&lt;td&gt;$277&lt;/td&gt;
&lt;td&gt;$3,324&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard_E8s_v5 ($392)&lt;/td&gt;
&lt;td&gt;Standard_E4s_v5 ($196)&lt;/td&gt;
&lt;td&gt;$196&lt;/td&gt;
&lt;td&gt;$2,352&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard_D32s_v5 ($1,108)&lt;/td&gt;
&lt;td&gt;Standard_D16s_v5 ($554)&lt;/td&gt;
&lt;td&gt;$554&lt;/td&gt;
&lt;td&gt;$6,648&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Azure Advisor recommendations are one size down with a conservative CPU buffer. They are a floor, not a ceiling. If your p95 CPU supports a two-size reduction, take it. Advisor is designed to avoid false positives, which means it leaves savings on the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reservations, Spot, and Hybrid Benefit: Discount Stacking
&lt;/h2&gt;

&lt;p&gt;Right-sizing reduces the base cost. Pricing discounts reduce what you pay for that base cost. Azure offers three mechanisms, and they target different workload types.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ful4tn3pp50m428e7bpxj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ful4tn3pp50m428e7bpxj.png" alt="diagram" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reserved Instances&lt;/strong&gt; are the default choice for any VM that has been running for 6+ months with no expected changes. A 1-year, no-upfront reservation saves 36%. A 3-year, all-upfront reservation saves 63%. You commit to a VM family and region, not a specific VM, so you retain flexibility to resize within the family.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure Spot VMs&lt;/strong&gt; offer up to 90% discount for workloads that can tolerate interruption. Azure can reclaim a Spot VM with 30 seconds notice when capacity is needed. Batch processing, CI/CD runners, rendering jobs, and development environments are all good candidates. Non-production environments are an especially good fit: if the VM gets evicted, the engineer restarts it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure Hybrid Benefit&lt;/strong&gt; applies existing Windows Server or SQL Server licenses with Software Assurance to Azure VMs, removing the OS licensing component from the VM cost. For Windows Server VMs, this saves up to 49% compared to pay-as-you-go Windows pricing.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;VM: Standard_D8s_v5 (Windows)&lt;/th&gt;
&lt;th&gt;Monthly cost&lt;/th&gt;
&lt;th&gt;vs Pay-as-you-go&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pay-as-you-go&lt;/td&gt;
&lt;td&gt;$387&lt;/td&gt;
&lt;td&gt;baseline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1-year Reserved Instance&lt;/td&gt;
&lt;td&gt;$248&lt;/td&gt;
&lt;td&gt;-36%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3-year Reserved Instance&lt;/td&gt;
&lt;td&gt;$144&lt;/td&gt;
&lt;td&gt;-63%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spot VM (current price)&lt;/td&gt;
&lt;td&gt;$39-58&lt;/td&gt;
&lt;td&gt;-85 to -90%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hybrid Benefit (Linux equivalent)&lt;/td&gt;
&lt;td&gt;$277&lt;/td&gt;
&lt;td&gt;-28% on OS cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3-year RI + Hybrid Benefit&lt;/td&gt;
&lt;td&gt;$102&lt;/td&gt;
&lt;td&gt;-74%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 3-year Reserved Instance combined with Hybrid Benefit is the maximum discount available for stable Windows workloads. At $102/month versus $387/month pay-as-you-go, a fleet of 10 such VMs saves $34,200/year with no change to the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Non-Production VMs: Schedule Everything, Delete the Rest
&lt;/h2&gt;

&lt;p&gt;Non-production VMs are the safest optimization target. The risk of getting right-sizing wrong in production is real. The risk of getting it wrong in a development environment is that a developer has to wait 3 minutes for a VM to restart at the right size. Start here.&lt;/p&gt;

&lt;p&gt;The non-production VM problem has two components: VMs that should exist but should not run 24/7, and VMs that should not exist at all.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb65dbmiwgnhvic1dkhv5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb65dbmiwgnhvic1dkhv5.png" alt="diagram" width="800" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A &lt;code&gt;Standard_D8s_v5&lt;/code&gt; VM running continuously costs $277/month. Running it 9 hours per day on weekdays (198 hours/month instead of 744 hours/month) costs $74/month: a 73% reduction. For a non-production fleet of 10 such VMs, that is $2,030/month saved ($24,360/year) from scheduling alone.&lt;/p&gt;

&lt;p&gt;The hidden addition: Premium SSD managed disks attached to stopped VMs continue to charge. A P30 disk (1TB) costs $122/month whether the VM runs or not. Downgrading non-production VM disks from Premium SSD to Standard SSD reduces disk costs by 60%, and the VM's I/O performance in development environments is rarely the bottleneck.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fleet: 10 Standard_D8s_v5 non-prod VMs&lt;/th&gt;
&lt;th&gt;Monthly cost&lt;/th&gt;
&lt;th&gt;Annual cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Always-on, Premium SSD&lt;/td&gt;
&lt;td&gt;$3,990&lt;/td&gt;
&lt;td&gt;$47,880&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scheduled (9hr/day weekdays)&lt;/td&gt;
&lt;td&gt;$1,960&lt;/td&gt;
&lt;td&gt;$23,520&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scheduled + Standard SSD disks&lt;/td&gt;
&lt;td&gt;$1,450&lt;/td&gt;
&lt;td&gt;$17,400&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scheduled + Standard SSD + right-sized to D4s_v5&lt;/td&gt;
&lt;td&gt;$840&lt;/td&gt;
&lt;td&gt;$10,080&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Moving a 10-VM non-production fleet from the default configuration to scheduled, right-sized, standard storage reduces the annual cost from $47,880 to $10,080: a $37,800 saving with no impact on development workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a 90-Day Azure VM Cost Reduction Plan
&lt;/h2&gt;

&lt;p&gt;Trying to optimize everything at once produces analysis paralysis. This sequence produces the fastest savings with the least risk.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;Timeline&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Effort&lt;/th&gt;
&lt;th&gt;Expected monthly saving&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Baseline&lt;/td&gt;
&lt;td&gt;Week 1-2&lt;/td&gt;
&lt;td&gt;Export Azure Advisor recommendations, pull 14-day p95 CPU/memory for all VMs&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;$0 (setup)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Non-prod scheduling&lt;/td&gt;
&lt;td&gt;Week 3-4&lt;/td&gt;
&lt;td&gt;Enable auto-start/stop for all non-prod VMs during business hours&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;60-73% of non-prod cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Non-prod cleanup&lt;/td&gt;
&lt;td&gt;Week 4&lt;/td&gt;
&lt;td&gt;Delete zombie VMs (no logins in 30+ days), delete unattached disks&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Variable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Non-prod right-sizing&lt;/td&gt;
&lt;td&gt;Month 2, week 1&lt;/td&gt;
&lt;td&gt;Right-size non-prod VMs using p95 baseline, downgrade disks to Standard SSD&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;40-60% of remaining non-prod cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prod right-sizing&lt;/td&gt;
&lt;td&gt;Month 2, week 2-4&lt;/td&gt;
&lt;td&gt;Right-size prod VMs one at a time, validate with load tests&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;$138-554 per resized instance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reservations&lt;/td&gt;
&lt;td&gt;Month 3&lt;/td&gt;
&lt;td&gt;Purchase 1-year Reserved Instances for stable prod VMs&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;36% of prod instance cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spot + Hybrid Benefit&lt;/td&gt;
&lt;td&gt;Month 3&lt;/td&gt;
&lt;td&gt;Convert CI/CD and batch VMs to Spot, apply Hybrid Benefit to Windows VMs&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;49-90% of eligible VMs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The sequence matters. Non-production changes first because the blast radius is zero. Right-sizing before reservations because you should not commit to a VM size you are about to change. Reservations last because they lock in the optimized cost, not the unoptimized one.&lt;/p&gt;

&lt;p&gt;A 12% CPU utilization number is not a curiosity. It is a bill waiting to be reduced. The VM does not know it is wasting money. The billing system does not care. The only thing that changes the outcome is a deliberate decision to measure, right-size, and stop paying for capacity you do not use.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>cost</category>
      <category>devops</category>
    </item>
    <item>
      <title>Cloud Database Cost Optimization: RDS, Cloud SQL, and Cosmos DB Compared</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Thu, 09 Apr 2026 11:04:49 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/cloud-database-cost-optimization-rds-cloud-sql-and-cosmos-db-compared-4g80</link>
      <guid>https://dev.to/muskan_8abedcc7e12/cloud-database-cost-optimization-rds-cloud-sql-and-cosmos-db-compared-4g80</guid>
      <description>&lt;p&gt;Compute costs are visible and easy to reason about: vCPUs times hours times price. Database costs are different. Each managed database platform has its own pricing model with its own hidden multipliers, and the levers that reduce cost on RDS have almost nothing to do with the levers that reduce cost on Cosmos DB.&lt;/p&gt;

&lt;p&gt;Most teams approach database cost optimization by right-sizing instances. That helps, but it is rarely the biggest lever. The bigger problems are structural: Multi-AZ enabled on databases that never need failover, non-production databases running at 3am on a Sunday, Cosmos DB containers provisioned for anticipated peak load that arrived six months ago and left, Cloud SQL storage that grew automatically and can never shrink.&lt;/p&gt;

&lt;p&gt;This piece covers where the money actually goes on each platform, and the specific changes that reduce it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Database Bills Are Harder to Optimize Than Compute
&lt;/h2&gt;

&lt;p&gt;Compute instance costs are transparent. Database costs have multipliers embedded in the pricing model that are easy to miss when you first configure an instance.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Base pricing unit&lt;/th&gt;
&lt;th&gt;HA multiplier&lt;/th&gt;
&lt;th&gt;Storage behavior&lt;/th&gt;
&lt;th&gt;Hidden cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Amazon RDS&lt;/td&gt;
&lt;td&gt;Instance class (vCPU/RAM) per hour&lt;/td&gt;
&lt;td&gt;2x for Multi-AZ&lt;/td&gt;
&lt;td&gt;gp2/gp3/io1, auto-grow optional&lt;/td&gt;
&lt;td&gt;Cross-AZ data transfer at $0.01/GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google Cloud SQL&lt;/td&gt;
&lt;td&gt;Instance tier (vCPU/RAM) per hour&lt;/td&gt;
&lt;td&gt;~2x for High Availability&lt;/td&gt;
&lt;td&gt;Auto-grows, never auto-shrinks&lt;/td&gt;
&lt;td&gt;Egress charges for cross-region replicas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Azure Cosmos DB&lt;/td&gt;
&lt;td&gt;Request Units per second (RU/s)&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;$0.25/GB-month&lt;/td&gt;
&lt;td&gt;Region multiplier: N write regions = N x RU cost&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The HA multiplier on RDS and Cloud SQL is the most commonly misapplied cost driver. Multi-AZ doubles your instance cost in exchange for automatic failover to a standby replica. For production databases serving user traffic, that is a reasonable trade. For a development database that a single engineer uses 4 hours per day, it is $50 to $200 per month in pure waste.&lt;/p&gt;

&lt;p&gt;Cosmos DB's region multiplier is less intuitive. Multi-region writes replicate every write to every write region in real time. Three write regions means three times the RU cost. Most teams that enable this do so for read latency improvements, not write availability, and could achieve the same result with single-write-region plus read replicas at a fraction of the cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Amazon RDS: Where the Money Goes and How to Cut It
&lt;/h2&gt;

&lt;p&gt;An RDS bill has four components: instance hours, storage, IOPS (if using provisioned IOPS storage), and data transfer. Instance hours dominate for most workloads.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3vpm211ni1af0xmllvp2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3vpm211ni1af0xmllvp2.png" alt="diagram" width="800" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Non-production scheduling is the first cut to make.&lt;/strong&gt; A &lt;code&gt;db.t3.medium&lt;/code&gt; Multi-AZ instance in us-east-1 costs $97/month running continuously. Running it only during business hours (9 hours per day, 22 working days per month) drops that to $28/month: a 71% reduction with zero architectural change. Start and stop operations take under 2 minutes for RDS, and the instance retains all data and configuration. zopnight automates this scheduling across environments so no engineer has to remember to stop databases at end of day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disable Multi-AZ on non-production instances.&lt;/strong&gt; This is a single checkbox change that saves exactly 50% of instance cost. Development, staging, and QA environments do not need automatic failover. If the database goes down, engineers wait for it to restart. A &lt;code&gt;db.r6g.large&lt;/code&gt; Multi-AZ instance at $371/month becomes a single-AZ instance at $185/month.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;th&gt;Monthly cost&lt;/th&gt;
&lt;th&gt;Annual cost&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;db.t3.medium Multi-AZ, always-on&lt;/td&gt;
&lt;td&gt;$97&lt;/td&gt;
&lt;td&gt;$1,164&lt;/td&gt;
&lt;td&gt;Common non-prod default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;db.t3.medium Single-AZ, always-on&lt;/td&gt;
&lt;td&gt;$48&lt;/td&gt;
&lt;td&gt;$576&lt;/td&gt;
&lt;td&gt;Disable Multi-AZ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;db.t3.medium Single-AZ, scheduled (9hr/day weekdays)&lt;/td&gt;
&lt;td&gt;$14&lt;/td&gt;
&lt;td&gt;$168&lt;/td&gt;
&lt;td&gt;Add scheduling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;db.t3.medium Single-AZ, 1-year Reserved&lt;/td&gt;
&lt;td&gt;$30&lt;/td&gt;
&lt;td&gt;$360&lt;/td&gt;
&lt;td&gt;Reserved, always-on&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Migrate gp2 storage to gp3.&lt;/strong&gt; gp2 IOPS scale with storage size (3 IOPS per GB, minimum 100, maximum 16,000). A 1TB gp2 volume provides 3,000 IOPS. A 1TB gp3 volume provides 3,000 IOPS baseline, but you can provision up to 16,000 IOPS independently for $0.20 per provisioned IOPS-month above the 3,000 baseline. For databases that need 3,000 IOPS or fewer, gp3 is the same price as gp2 at the same storage size. For databases that were running gp2 at large storage sizes purely to get more IOPS, gp3 allows you to right-size the storage volume separately from IOPS, reducing storage costs by 20 to 40%.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Buy Reserved Instances for stable production databases.&lt;/strong&gt; RDS Reserved Instances for a 1-year, no-upfront commitment deliver 36% savings over on-demand. A 3-year, all-upfront commitment delivers 69% savings. For any production RDS instance that has been running for 6 months with no expected changes to instance class, Reserved Instances are the lowest-effort, highest-return optimization available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Cloud SQL: Committed Use and the Storage Trap
&lt;/h2&gt;

&lt;p&gt;Cloud SQL pricing is structurally similar to RDS: you pay for the instance tier, high availability, and storage. The two differences that matter for cost optimization are Committed Use Discounts (which work differently from RDS Reserved Instances) and the storage auto-grow trap.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4728qblor129nepr7wy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4728qblor129nepr7wy.png" alt="diagram" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Committed Use Discounts (CUDs)&lt;/strong&gt; apply automatically when you commit to a minimum spend level for 1 or 3 years. Unlike RDS Reserved Instances, you do not select specific instance types. You commit to a spend amount and Cloud SQL applies the discount across matching resource usage. A 1-year CUD saves 25%. A 3-year CUD saves 52%. For a &lt;code&gt;db-n1-standard-8&lt;/code&gt; instance running at $486/month on-demand, a 3-year CUD reduces that to $233/month, saving $3,036 per year on a single instance.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Instance&lt;/th&gt;
&lt;th&gt;On-demand/month&lt;/th&gt;
&lt;th&gt;1-year CUD/month&lt;/th&gt;
&lt;th&gt;3-year CUD/month&lt;/th&gt;
&lt;th&gt;3-year annual saving&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;db-n1-standard-4&lt;/td&gt;
&lt;td&gt;$243&lt;/td&gt;
&lt;td&gt;$182&lt;/td&gt;
&lt;td&gt;$117&lt;/td&gt;
&lt;td&gt;$1,512&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;db-n1-standard-8&lt;/td&gt;
&lt;td&gt;$486&lt;/td&gt;
&lt;td&gt;$365&lt;/td&gt;
&lt;td&gt;$233&lt;/td&gt;
&lt;td&gt;$3,036&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;db-n1-highmem-8&lt;/td&gt;
&lt;td&gt;$535&lt;/td&gt;
&lt;td&gt;$401&lt;/td&gt;
&lt;td&gt;$257&lt;/td&gt;
&lt;td&gt;$3,336&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The storage auto-grow trap&lt;/strong&gt; is less obvious. Cloud SQL can automatically increase storage when a database approaches capacity. This is a useful safety feature. The problem is that Cloud SQL storage never automatically decreases. A database that ingested a large dataset during a migration, then deleted it, still pays for the peak storage size permanently. The only way to reduce it is to create a new Cloud SQL instance with smaller storage and migrate data to it.&lt;/p&gt;

&lt;p&gt;Audit your Cloud SQL instances for the gap between allocated storage and used storage. Instances where used storage is below 40% of allocated storage are candidates for recreation with right-sized storage. A 500GB instance at $85/month that is actually using 80GB costs $68/month more than necessary. That is $816/year per instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Query optimization reduces required instance size.&lt;/strong&gt; Cloud SQL Query Insights is a free tool that identifies slow queries, lock contention, and missing indexes. Teams that review slow queries monthly and add missing indexes consistently reduce their required instance tier by one level within 90 days. Moving from &lt;code&gt;db-n1-standard-8&lt;/code&gt; to &lt;code&gt;db-n1-standard-4&lt;/code&gt; saves $243/month ($2,916/year) per instance with no change to application code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cosmos DB: Request Units Are a Trap for the Unprepared
&lt;/h2&gt;

&lt;p&gt;Cosmos DB does not charge for instances. It charges for Request Units per second (RU/s), which is an abstraction over the compute and memory required to serve your query patterns. Every database operation consumes RUs: a point read of a 1KB document costs 1 RU, a cross-partition query can cost 100 RUs or more depending on its complexity and the data it scans.&lt;/p&gt;

&lt;p&gt;There are three pricing modes, and choosing the wrong one for your traffic pattern is the most common Cosmos DB cost mistake.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxy7yugkj9s95byrl9up.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxy7yugkj9s95byrl9up.png" alt="diagram" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workload&lt;/th&gt;
&lt;th&gt;Manual provisioned&lt;/th&gt;
&lt;th&gt;Autoscale&lt;/th&gt;
&lt;th&gt;Serverless&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;400 RU/s constant&lt;/td&gt;
&lt;td&gt;$23/month&lt;/td&gt;
&lt;td&gt;$35/month&lt;/td&gt;
&lt;td&gt;varies by usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;400 RU/s average, 4000 RU/s peak&lt;/td&gt;
&lt;td&gt;$233/month&lt;/td&gt;
&lt;td&gt;$58/month&lt;/td&gt;
&lt;td&gt;depends on request count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4000 RU/s constant&lt;/td&gt;
&lt;td&gt;$233/month&lt;/td&gt;
&lt;td&gt;$350/month&lt;/td&gt;
&lt;td&gt;not cost-effective&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40,000 RU/s constant&lt;/td&gt;
&lt;td&gt;$2,336/month&lt;/td&gt;
&lt;td&gt;$3,504/month&lt;/td&gt;
&lt;td&gt;not applicable (5000 RU/s limit)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Serverless Cosmos DB charges $0.25 per million RUs consumed, with no minimum. For a non-production database receiving 2 million requests per day at an average of 2 RUs each, that is 4 million RUs per day, costing $1/day or $30/month. The same workload on minimum provisioned throughput (400 RU/s) costs $23/month regardless of actual usage. Serverless is cheaper until your database is consistently using 90% of minimum provisioned throughput.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The multi-region write multiplier&lt;/strong&gt; is where teams get surprised by large bills. Enabling multi-region writes replicates every write to every write region and multiplies your RU cost by the number of write regions. A container provisioned at 10,000 RU/s with 3 write regions costs $1,752/month. The same container with 1 write region and 2 read regions costs $584/month for the provisioned throughput plus $0.08/GB for replication transfer. For most use cases, single-write-region with read replicas achieves the latency goals at one-third the cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Universal Win: Non-Production Database Scheduling
&lt;/h2&gt;

&lt;p&gt;Every platform covered in this piece has one optimization that requires no application changes, no architectural decisions, and no commitment: stop non-production databases when nobody is using them.&lt;/p&gt;

&lt;p&gt;Development, staging, and QA databases typically serve engineers during business hours. They run the other 16 hours of the day because nobody turned them off. They run all weekend because the script to restart them is manual and nobody wants to deal with it Monday morning.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Instance&lt;/th&gt;
&lt;th&gt;Always-on/month&lt;/th&gt;
&lt;th&gt;Scheduled (9hr/day, weekdays)/month&lt;/th&gt;
&lt;th&gt;Monthly saving&lt;/th&gt;
&lt;th&gt;Annual saving&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RDS&lt;/td&gt;
&lt;td&gt;db.t3.medium Multi-AZ&lt;/td&gt;
&lt;td&gt;$97&lt;/td&gt;
&lt;td&gt;$28&lt;/td&gt;
&lt;td&gt;$69&lt;/td&gt;
&lt;td&gt;$828&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RDS&lt;/td&gt;
&lt;td&gt;db.r6g.large Multi-AZ&lt;/td&gt;
&lt;td&gt;$371&lt;/td&gt;
&lt;td&gt;$107&lt;/td&gt;
&lt;td&gt;$264&lt;/td&gt;
&lt;td&gt;$3,168&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud SQL&lt;/td&gt;
&lt;td&gt;db-n1-standard-4 HA&lt;/td&gt;
&lt;td&gt;$486&lt;/td&gt;
&lt;td&gt;$140&lt;/td&gt;
&lt;td&gt;$346&lt;/td&gt;
&lt;td&gt;$4,152&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cosmos DB&lt;/td&gt;
&lt;td&gt;400 RU/s provisioned&lt;/td&gt;
&lt;td&gt;$23&lt;/td&gt;
&lt;td&gt;$7&lt;/td&gt;
&lt;td&gt;$16&lt;/td&gt;
&lt;td&gt;$192&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpiui2fjfj0axum0iyjo6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpiui2fjfj0axum0iyjo6.png" alt="diagram" width="800" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a team running 5 non-production RDS instances of mixed sizes, scheduling alone typically saves $800 to $1,500 per month. For Cloud SQL, the numbers are similar. For Cosmos DB serverless, there is no instance to stop: you only pay for what you use, which is another reason serverless is the right choice for non-production Cosmos DB workloads.&lt;/p&gt;

&lt;p&gt;The implementation barrier is operational. Someone has to remember to stop databases, and then start them again. Automated scheduling removes that barrier entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  An Optimization Priority Order for Each Platform
&lt;/h2&gt;

&lt;p&gt;Not all optimizations are equal. Here is the sequence that produces the most savings with the least risk, for each platform.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Priority&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Estimated saving&lt;/th&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;th&gt;Effort&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RDS&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Schedule non-prod instances (stop/start)&lt;/td&gt;
&lt;td&gt;60-71% of non-prod cost&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RDS&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Disable Multi-AZ on non-prod&lt;/td&gt;
&lt;td&gt;50% of non-prod instance cost&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RDS&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Migrate gp2 storage to gp3&lt;/td&gt;
&lt;td&gt;20-40% of storage cost&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RDS&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Purchase Reserved Instances for prod&lt;/td&gt;
&lt;td&gt;36-69% of prod instance cost&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud SQL&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Schedule non-prod instances&lt;/td&gt;
&lt;td&gt;60-71% of non-prod cost&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud SQL&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Disable HA on non-prod&lt;/td&gt;
&lt;td&gt;~50% of non-prod instance cost&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud SQL&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Purchase 3-year Committed Use Discount&lt;/td&gt;
&lt;td&gt;52% of prod instance cost&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud SQL&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Recreate over-provisioned storage instances&lt;/td&gt;
&lt;td&gt;$68-136/month per instance&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cosmos DB&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Switch non-prod to serverless mode&lt;/td&gt;
&lt;td&gt;Eliminates idle RU cost&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cosmos DB&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Switch from multi-region write to single-write + read replicas&lt;/td&gt;
&lt;td&gt;50-67% of throughput cost&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cosmos DB&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Move variable-load prod containers to autoscale&lt;/td&gt;
&lt;td&gt;20-40% vs manual provisioned&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cosmos DB&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Audit and add missing indexes to reduce RU consumption&lt;/td&gt;
&lt;td&gt;15-40% of query RU cost&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The pattern across all three platforms is the same: the highest-impact optimizations are operational (scheduling, disabling unnecessary HA), not architectural (right-sizing, instance migration). Start there. The architectural changes follow once you have eliminated the structural waste.&lt;/p&gt;

&lt;p&gt;Database cost optimization is not a one-time audit. Workloads change, teams add new environments, and provisioned capacity drifts upward over time. Schedule a quarterly review of non-production environment count, instance sizes, and pricing mode choices. The savings compound.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>database</category>
      <category>cost</category>
      <category>optimization</category>
    </item>
    <item>
      <title>Developer Productivity Metrics: What to Measure and How to Improve Them</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Wed, 08 Apr 2026 06:29:36 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/developer-productivity-metrics-what-to-measure-and-how-to-improve-them-32bp</link>
      <guid>https://dev.to/muskan_8abedcc7e12/developer-productivity-metrics-what-to-measure-and-how-to-improve-them-32bp</guid>
      <description>&lt;h1&gt;
  
  
  Developer Productivity Metrics: What to Measure and How to Improve Them
&lt;/h1&gt;

&lt;p&gt;Most engineering teams are measuring the wrong things. Story points completed, lines of code written, pull requests merged per week. These numbers are easy to collect and easy to present in a dashboard. They are also almost entirely useless for understanding whether your team is building software effectively.&lt;/p&gt;

&lt;p&gt;The problem is not that metrics are bad. The problem is that the wrong metrics drive the wrong behavior. When you measure lines of code, developers write verbose code. When you measure story points, estimates inflate. When you measure PR count, engineers split work into tiny, meaningless chunks. You get the behavior you measure, and most teams are measuring activity instead of outcomes.&lt;/p&gt;

&lt;p&gt;This is how to fix that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Metrics That Don't Work
&lt;/h2&gt;

&lt;p&gt;Before covering what to measure, it helps to understand why common metrics fail.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;What it measures&lt;/th&gt;
&lt;th&gt;What it misses&lt;/th&gt;
&lt;th&gt;Behavior it drives&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Story points per sprint&lt;/td&gt;
&lt;td&gt;Estimation accuracy over time&lt;/td&gt;
&lt;td&gt;Actual delivery speed, quality&lt;/td&gt;
&lt;td&gt;Point inflation, padding estimates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lines of code&lt;/td&gt;
&lt;td&gt;Volume of output&lt;/td&gt;
&lt;td&gt;Value, complexity, maintainability&lt;/td&gt;
&lt;td&gt;Verbose, unrefactored code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PRs merged per week&lt;/td&gt;
&lt;td&gt;Activity level&lt;/td&gt;
&lt;td&gt;PR size, review quality, rework rate&lt;/td&gt;
&lt;td&gt;Splitting work into micro-PRs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tickets closed&lt;/td&gt;
&lt;td&gt;Task completion&lt;/td&gt;
&lt;td&gt;Customer value delivered&lt;/td&gt;
&lt;td&gt;Closing tickets without fixing problems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build success rate&lt;/td&gt;
&lt;td&gt;CI stability&lt;/td&gt;
&lt;td&gt;Whether CI tests anything meaningful&lt;/td&gt;
&lt;td&gt;Green CI with no coverage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each of these measures something real. None of them tell you whether your team is shipping value quickly and reliably. For that, you need outcome metrics.&lt;/p&gt;

&lt;h2&gt;
  
  
  DORA: The Baseline Every Team Should Have
&lt;/h2&gt;

&lt;p&gt;The DORA (DevOps Research and Assessment) program at Google has tracked engineering team performance since 2014. Their research is the most rigorous study of software delivery performance in existence, covering 36,000+ professionals across thousands of teams.&lt;/p&gt;

&lt;p&gt;DORA identified four metrics that consistently predict software delivery performance and organizational outcomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment Frequency&lt;/strong&gt;: How often does your team deploy to production? Elite teams deploy multiple times per day. Low performers deploy once per month or less.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lead Time for Changes&lt;/strong&gt;: How long from code committed to code running in production? Elite teams: under one hour. Low performers: one to six months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Change Failure Rate&lt;/strong&gt;: What percentage of deployments cause a production incident requiring hotfix or rollback? Elite teams: 0-15%. Low performers: 46-60%.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time to Restore Service&lt;/strong&gt;: When an incident occurs, how long to recover? Elite teams: under one hour. Low performers: one week to one month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft581le3j2viojvtcxvcb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft581le3j2viojvtcxvcb.png" alt="diagram" width="800" height="99"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Elite&lt;/th&gt;
&lt;th&gt;High&lt;/th&gt;
&lt;th&gt;Medium&lt;/th&gt;
&lt;th&gt;Low&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Deployment Frequency&lt;/td&gt;
&lt;td&gt;Multiple/day&lt;/td&gt;
&lt;td&gt;Once/day to once/week&lt;/td&gt;
&lt;td&gt;Once/week to once/month&lt;/td&gt;
&lt;td&gt;Fewer than once/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lead Time for Changes&lt;/td&gt;
&lt;td&gt;Under 1 hour&lt;/td&gt;
&lt;td&gt;1 day to 1 week&lt;/td&gt;
&lt;td&gt;1 week to 1 month&lt;/td&gt;
&lt;td&gt;1 to 6 months&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Change Failure Rate&lt;/td&gt;
&lt;td&gt;0-15%&lt;/td&gt;
&lt;td&gt;16-30%&lt;/td&gt;
&lt;td&gt;16-30%&lt;/td&gt;
&lt;td&gt;46-60%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time to Restore&lt;/td&gt;
&lt;td&gt;Under 1 hour&lt;/td&gt;
&lt;td&gt;Under 1 day&lt;/td&gt;
&lt;td&gt;1 day to 1 week&lt;/td&gt;
&lt;td&gt;1 week to 1 month&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;DORA metrics work because they measure outcomes that engineers and business stakeholders both care about. Deployment frequency is a proxy for batch size: teams that deploy frequently ship smaller changes, which are easier to review, easier to test, and easier to roll back. This is why elite performers have lower change failure rates. It is not because they are more careful. It is because smaller changes contain fewer surprises.&lt;/p&gt;

&lt;p&gt;Start by baselining these four metrics. You do not need special tooling. You need deployment timestamps from your CI/CD system and incident timestamps from your alerting tool. A spreadsheet works for the first 90 days.&lt;/p&gt;

&lt;h2&gt;
  
  
  The SPACE Framework: Beyond Throughput
&lt;/h2&gt;

&lt;p&gt;DORA tells you how fast and reliably your team ships. It does not tell you whether your developers are burned out, blocked, or unhappy. A team can have excellent DORA metrics while being miserable, which is not sustainable.&lt;/p&gt;

&lt;p&gt;The SPACE framework, developed by researchers at Microsoft, GitHub, and the University of Victoria, adds four more dimensions:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa2n5whgq09ircvrhqq2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa2n5whgq09ircvrhqq2a.png" alt="diagram" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Satisfaction&lt;/strong&gt;: Developer Net Promoter Score, retention rate, satisfaction survey results. Teams where developers score satisfaction below 6/10 see 3x higher attrition within 12 months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;: Feature adoption rates, defect escape rate, system reliability. This measures whether the work actually worked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activity&lt;/strong&gt;: Commits, PRs, deployments. Activity metrics are valid inputs, not outputs. Use them to spot anomalies, not to rank engineers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Communication&lt;/strong&gt;: PR review turnaround time, async communication quality, cross-team coordination overhead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Efficiency&lt;/strong&gt;: Time in flow (uninterrupted work sessions over 2 hours), context switches per day, environment setup and rebuild times.&lt;/p&gt;

&lt;p&gt;The key insight from SPACE research: optimizing a single dimension degrades others. Teams that maximize Activity without measuring Efficiency burn out. Teams that optimize Satisfaction without measuring Performance drift into comfortable stagnation. Measure all five dimensions and look for imbalances.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Time Actually Goes
&lt;/h2&gt;

&lt;p&gt;GitHub's Octoverse 2023 report found that developers spend only 32% of their time writing code. The remaining 68% goes to activities that feel productive but do not directly produce software.&lt;/p&gt;

&lt;p&gt;Here is where that time typically disappears:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Avg hours/week lost&lt;/th&gt;
&lt;th&gt;Root cause&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PR review wait&lt;/td&gt;
&lt;td&gt;4.2 hours&lt;/td&gt;
&lt;td&gt;No SLO, no reviewer assignment&lt;/td&gt;
&lt;td&gt;Reviewer rotation + 24-hour SLO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Broken dev environments&lt;/td&gt;
&lt;td&gt;3.1 hours&lt;/td&gt;
&lt;td&gt;Shared infra, no isolation&lt;/td&gt;
&lt;td&gt;Per-developer ephemeral environments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Meetings without decisions&lt;/td&gt;
&lt;td&gt;2.8 hours&lt;/td&gt;
&lt;td&gt;No async culture, poor agendas&lt;/td&gt;
&lt;td&gt;Default async, meetings only for decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CI pipeline slowness&lt;/td&gt;
&lt;td&gt;2.4 hours&lt;/td&gt;
&lt;td&gt;No caching, sequential jobs&lt;/td&gt;
&lt;td&gt;Parallelized CI, cache warming&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context-switching between tools&lt;/td&gt;
&lt;td&gt;1.9 hours&lt;/td&gt;
&lt;td&gt;Fragmented toolchain&lt;/td&gt;
&lt;td&gt;Unified developer portal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Onboarding / documentation gaps&lt;/td&gt;
&lt;td&gt;1.6 hours&lt;/td&gt;
&lt;td&gt;Undocumented systems&lt;/td&gt;
&lt;td&gt;Service catalog with runbooks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The most expensive item is not meetings. It is broken development environments, because the cost is invisible. When an engineer spends 90 minutes diagnosing whether a bug is in their code or the shared staging environment, that time does not show up in any metric. It looks like slow delivery.&lt;/p&gt;

&lt;p&gt;Non-production environment reliability is a direct productivity input. When staging is flaky or unavailable, developers cannot validate their changes. They either ship with lower confidence (raising change failure rate) or wait (increasing lead time). Both outcomes degrade DORA metrics. Fixing environment reliability is frequently the highest-leverage productivity investment a platform team can make.&lt;/p&gt;

&lt;p&gt;This is the problem zopnight solves at the infrastructure level. By scheduling non-production environments to run only during business hours and ensuring clean state on startup, it removes the flakiness problem at the source rather than treating it per incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Actually Move These Numbers
&lt;/h2&gt;

&lt;p&gt;Knowing what to measure is not enough. Here is what actually moves developer productivity metrics, with specific before/after outcomes from teams that implemented these changes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faag7zzouanokcfvds85a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faag7zzouanokcfvds85a.png" alt="diagram" width="800" height="95"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PR Review SLO&lt;/strong&gt;: Set a team agreement that all PRs receive a first review within 24 hours. LinkedIn's engineering team reduced PR review cycle time from 3.2 days to 18 hours using automated reviewer assignment and a visible queue dashboard. Their deployment frequency increased 60% within two months. The review did not get faster because engineers became more diligent. It got faster because the queue was visible and the expectation was explicit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CI Pipeline Speed&lt;/strong&gt;: Every minute your CI pipeline takes is a minute a developer waits, then context-switches. Pipelines over 10 minutes reliably cause engineers to switch tasks and not return with full focus. Audit your pipeline for sequential jobs that can run in parallel, missing cache layers, and test suites that have not been pruned in over 6 months. Most teams can cut CI time by 40% without changing what is being tested.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Environment Provisioning Time&lt;/strong&gt;: Puppet's State of DevOps 2023 found that companies with mature internal developer platforms reduced environment setup time from 4.2 days to 2.1 days for new engineers. The mechanism is pre-configured, self-service environments accessible through a developer portal. New engineers should be able to run the full system locally within 2 hours of their first day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment Frequency&lt;/strong&gt;: If your team deploys less than once per week, the path to improvement is not process improvement. It is technical: feature flags, trunk-based development, and automated rollback. These remove the fear that slows down deployments. When rollback takes 3 minutes instead of 3 hours, shipping more frequently becomes rational.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cognitive Load Reduction&lt;/strong&gt;: Count the number of tools a developer must open to ship a single feature from local development to production. If that number exceeds five, you have a toolchain consolidation problem. Every additional tool is a context switch waiting to happen. Platform teams that build golden paths that work end-to-end see 40% reduction in the time from code complete to production deploy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start With One Metric
&lt;/h2&gt;

&lt;p&gt;The most common mistake when implementing developer productivity measurement is trying to measure everything at once. You end up with a dashboard nobody trusts, metrics that contradict each other, and engineers who feel surveilled rather than supported.&lt;/p&gt;

&lt;p&gt;Start with lead time for changes. It is the most direct measure of how your delivery pipeline is performing. It is easy to explain to engineers and to leadership. It has a clear causal chain: long lead times come from slow CI, slow review, infrequent deployments, or manual steps. Each of those causes has a fix.&lt;/p&gt;

&lt;p&gt;Measure your current lead time. If it is over two weeks, fix your CI pipeline first. If it is one to two weeks, fix your review process. If it is under a week but you still feel slow, look at deployment automation and batch size.&lt;/p&gt;

&lt;p&gt;Once lead time is improving, add deployment frequency and change failure rate. These three together give you a complete picture of delivery health. Add SPACE dimensions quarterly to catch burnout and satisfaction problems before they become attrition problems.&lt;/p&gt;

&lt;p&gt;Productivity measurement works when engineers trust that the data is being used to remove obstacles, not to evaluate individuals. Be explicit about that intent, share the metrics publicly with the team, and act on what they reveal. The metrics are only as useful as the interventions they drive.&lt;/p&gt;

</description>
      <category>developer</category>
      <category>productivity</category>
      <category>metrics</category>
    </item>
    <item>
      <title>Infrastructure as Code Best Practices: Terraform, Pulumi, and OpenTofu in 2026</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Wed, 08 Apr 2026 06:26:54 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/infrastructure-as-code-best-practices-terraform-pulumi-and-opentofu-in-2026-4nc1</link>
      <guid>https://dev.to/muskan_8abedcc7e12/infrastructure-as-code-best-practices-terraform-pulumi-and-opentofu-in-2026-4nc1</guid>
      <description>&lt;h1&gt;
  
  
  Infrastructure as Code Best Practices: Terraform, Pulumi, and OpenTofu in 2026
&lt;/h1&gt;

&lt;p&gt;The Infrastructure as Code landscape changed permanently in August 2023 when HashiCorp moved Terraform from the Mozilla Public License to the Business Source License 1.1. The change restricted commercial use for products that compete with HashiCorp's own offerings. Within weeks, the OpenTofu fork was announced under the Linux Foundation. It reached general availability in January 2024.&lt;/p&gt;

&lt;p&gt;Three years later, engineering teams are settled into a stable but fractured landscape. Terraform remains dominant by installed base. OpenTofu is the default choice for teams that need an open-source, community-governed alternative. Pulumi occupies a different position: it replaces HCL entirely with general-purpose languages, which makes it compelling for teams that want to apply software engineering practices directly to infrastructure.&lt;/p&gt;

&lt;p&gt;The tool you choose matters less than how you use it. State management mistakes, oversized modules, and missing tests cause production incidents regardless of which binary you run. This piece covers what actually works in production across all three.&lt;/p&gt;

&lt;h2&gt;
  
  
  The IaC Landscape in 2026
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Terraform&lt;/th&gt;
&lt;th&gt;OpenTofu&lt;/th&gt;
&lt;th&gt;Pulumi&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;License&lt;/td&gt;
&lt;td&gt;BSL 1.1 (commercial restrictions)&lt;/td&gt;
&lt;td&gt;MPL 2.0 (fully open-source)&lt;/td&gt;
&lt;td&gt;Apache 2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Language&lt;/td&gt;
&lt;td&gt;HCL&lt;/td&gt;
&lt;td&gt;HCL (compatible)&lt;/td&gt;
&lt;td&gt;TypeScript, Python, Go, C#, Java, YAML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;State backend&lt;/td&gt;
&lt;td&gt;Local, S3, GCS, Terraform Cloud&lt;/td&gt;
&lt;td&gt;Local, S3, GCS, any Terraform backend&lt;/td&gt;
&lt;td&gt;Local, S3, GCS, Pulumi Cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unit test support&lt;/td&gt;
&lt;td&gt;Limited (terratest, Go required)&lt;/td&gt;
&lt;td&gt;Same as Terraform&lt;/td&gt;
&lt;td&gt;Native (Jest, pytest, standard frameworks)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provider ecosystem&lt;/td&gt;
&lt;td&gt;Largest (1,800+ providers)&lt;/td&gt;
&lt;td&gt;Near-identical to Terraform&lt;/td&gt;
&lt;td&gt;Growing (1,200+ providers)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosted backend pricing&lt;/td&gt;
&lt;td&gt;Terraform Cloud (per resource)&lt;/td&gt;
&lt;td&gt;Self-hosted or third-party&lt;/td&gt;
&lt;td&gt;Pulumi Cloud (per user)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notable adopters&lt;/td&gt;
&lt;td&gt;Most enterprises pre-2024&lt;/td&gt;
&lt;td&gt;Gruntwork, env0, Spacelift&lt;/td&gt;
&lt;td&gt;Mercedes-Benz, Snowflake, Lemonade&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;OpenTofu 1.8 shipped provider-defined functions and early variable evaluation in 2024, features Terraform had not yet released. The two tools are now diverging at the feature level, not just the governance level. Migration from Terraform to OpenTofu is still a one-line binary swap plus a state migration command for most teams, but that window is narrowing as feature sets diverge.&lt;/p&gt;

&lt;p&gt;Pulumi's advantage is not language choice. It is testability. You can write unit tests for Pulumi programs using standard test frameworks without provisioning real infrastructure. HCL has no equivalent capability.&lt;/p&gt;

&lt;h2&gt;
  
  
  State Management: The Foundation Everything Else Rests On
&lt;/h2&gt;

&lt;p&gt;State files are the most dangerous files in your infrastructure. They contain resource IDs, outputs, and often plaintext secrets. A corrupted or lost state file means you have running infrastructure with no record of how it was created. Manual console changes, race conditions from concurrent applies, and state file leaks are responsible for roughly 23% of production infrastructure incidents in teams without proper state management.&lt;/p&gt;

&lt;p&gt;The three non-negotiable rules for state management:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remote state with locking.&lt;/strong&gt; Never use local state in shared environments. Configure an S3 backend with a DynamoDB lock table (AWS) or a GCS backend with object locking (GCP). The lock prevents two engineers from running apply simultaneously on the same state file, which is how state corruption happens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Directory-based environment separation.&lt;/strong&gt; Terraform workspaces look appealing: one set of code, switch environments with &lt;code&gt;terraform workspace select staging&lt;/code&gt;. In practice, workspaces share the same backend configuration and the same variable files unless you add significant scaffolding. A typo in the workspace name applies production infrastructure. Directory-based separation, where &lt;code&gt;environments/dev&lt;/code&gt;, &lt;code&gt;environments/staging&lt;/code&gt;, and &lt;code&gt;environments/prod&lt;/code&gt; each have their own state file and their own variable file, is explicit and auditable.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Blast radius&lt;/th&gt;
&lt;th&gt;State isolation&lt;/th&gt;
&lt;th&gt;Auditability&lt;/th&gt;
&lt;th&gt;Failure mode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Workspace-based&lt;/td&gt;
&lt;td&gt;One workspace affects all&lt;/td&gt;
&lt;td&gt;Shared backend, separate keys&lt;/td&gt;
&lt;td&gt;Hard to trace which workspace was active&lt;/td&gt;
&lt;td&gt;Applying to wrong workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Directory-based&lt;/td&gt;
&lt;td&gt;One directory, one environment&lt;/td&gt;
&lt;td&gt;Fully isolated state files&lt;/td&gt;
&lt;td&gt;Explicit, matches repo structure&lt;/td&gt;
&lt;td&gt;None common&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;State access controls.&lt;/strong&gt; Treat state file read access as equivalent to production database read access. Anyone who can read the state file can read every output, every resource ID, and potentially every secret stored in outputs. In AWS, use S3 bucket policies with per-role access. In GCP, use GCS IAM bindings. Audit state access quarterly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fns3jzngrw72ff2z9qg5w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fns3jzngrw72ff2z9qg5w.png" alt="diagram" width="800" height="711"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;State file versioning is the safety net. Enable S3 versioning or GCS object versioning on your state backend. When a bad apply corrupts state, you restore to the previous version and re-run. Without versioning, you are manually reconstructing state from the AWS console, which takes hours and introduces new errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Module Design: Small, Composable, Testable
&lt;/h2&gt;

&lt;p&gt;The average Terraform module grows to 2,400 lines before teams split it. At that size, &lt;code&gt;terraform plan&lt;/code&gt; takes 4 to 7 minutes. &lt;code&gt;terraform apply&lt;/code&gt; takes 12 to 20 minutes. A single change to a security group rule forces a plan across 200 unrelated resources. Teams that enforce a 500-line module limit see 3x faster plan and apply cycles, and dramatically lower blast radius per change.&lt;/p&gt;

&lt;p&gt;The right mental model for module design is two layers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resource modules&lt;/strong&gt; wrap a single provider resource type with sensible defaults and validation. A &lt;code&gt;rds-instance&lt;/code&gt; module takes a database size and engine version. It does not also create the VPC, the subnet group, and the parameter group. Each of those is a separate module.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Service modules&lt;/strong&gt; compose resource modules into a deployable unit. A &lt;code&gt;postgres-service&lt;/code&gt; module calls the &lt;code&gt;rds-instance&lt;/code&gt; module, the &lt;code&gt;subnet-group&lt;/code&gt; module, and the &lt;code&gt;security-group&lt;/code&gt; module. It outputs the connection string and the secret ARN. The root module calls service modules.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj75em6088go53vls6u2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj75em6088go53vls6u2i.png" alt="diagram" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Design&lt;/th&gt;
&lt;th&gt;Plan time&lt;/th&gt;
&lt;th&gt;Blast radius per change&lt;/th&gt;
&lt;th&gt;Reuse across teams&lt;/th&gt;
&lt;th&gt;Test complexity&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monolithic (2,000+ lines)&lt;/td&gt;
&lt;td&gt;7-15 min&lt;/td&gt;
&lt;td&gt;Entire infrastructure stack&lt;/td&gt;
&lt;td&gt;Low, too opinionated&lt;/td&gt;
&lt;td&gt;Very high&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Service modules (500 lines)&lt;/td&gt;
&lt;td&gt;2-4 min&lt;/td&gt;
&lt;td&gt;One service&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resource modules (150 lines)&lt;/td&gt;
&lt;td&gt;Under 1 min&lt;/td&gt;
&lt;td&gt;One resource type&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In Pulumi, the equivalent pattern uses component resources: TypeScript classes that extend &lt;code&gt;pulumi.ComponentResource&lt;/code&gt;. A &lt;code&gt;PostgresService&lt;/code&gt; class instantiates an RDS instance, a security group, and a subnet group, and exposes the connection string as an output property. The composition is identical to HCL modules in concept, but the implementation uses standard object-oriented patterns. You can instantiate it in a loop, pass it a config object, and test it with Jest without touching AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing IaC: From Static Analysis to Integration Tests
&lt;/h2&gt;

&lt;p&gt;IaC without tests is a change management problem. Every apply is a deployment to production infrastructure, and you have no way to know whether your change does what you intended until after it runs. The testing pyramid for IaC has three layers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg5538k92zee6qnviztcq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg5538k92zee6qnviztcq.png" alt="diagram" width="800" height="912"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Static analysis&lt;/strong&gt; runs before any cloud API call. Checkov scans your Terraform or OpenTofu plans for security misconfigurations: public S3 buckets, missing encryption, overly permissive IAM policies. It catches an average of 14 high-severity issues per 1,000 lines of IaC in teams without prior security scanning. &lt;code&gt;tflint&lt;/code&gt; catches type errors, deprecated syntax, and provider-specific rule violations. Both run in under 30 seconds and belong in every pre-commit hook and CI pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plan validation&lt;/strong&gt; runs &lt;code&gt;terraform plan&lt;/code&gt; or &lt;code&gt;tofu plan&lt;/code&gt; and asserts on the output. You can check that a plan does not destroy resources unexpectedly, that the number of resources being created matches expectations, or that specific attributes have specific values. Open Policy Agent (OPA) with Conftest provides a policy-as-code layer for this: write Rego rules that evaluate plan JSON output and fail the CI pipeline if a rule is violated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integration tests&lt;/strong&gt; provision real infrastructure in a temporary account or project and validate it end-to-end. Terratest, written in Go, is the most widely used framework for this. It provisions, runs assertions (can we connect to the database? Does the load balancer return 200?), and tears down. The investment is significant: you need a dedicated test account, test execution adds 15 to 45 minutes to CI, and writing Go is required. The return is also significant: mean time to detect infrastructure regressions drops from 4.2 days (found in production) to under 30 minutes (found in CI).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Runs when&lt;/th&gt;
&lt;th&gt;Language&lt;/th&gt;
&lt;th&gt;What it catches&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Static analysis&lt;/td&gt;
&lt;td&gt;Checkov, tflint&lt;/td&gt;
&lt;td&gt;Pre-commit, CI&lt;/td&gt;
&lt;td&gt;Any&lt;/td&gt;
&lt;td&gt;Security misconfigs, syntax errors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plan validation&lt;/td&gt;
&lt;td&gt;OPA/Conftest&lt;/td&gt;
&lt;td&gt;CI&lt;/td&gt;
&lt;td&gt;Rego&lt;/td&gt;
&lt;td&gt;Unexpected destroys, policy violations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integration tests&lt;/td&gt;
&lt;td&gt;Terratest, Pulumi test&lt;/td&gt;
&lt;td&gt;CI (nightly or PR)&lt;/td&gt;
&lt;td&gt;Go / any&lt;/td&gt;
&lt;td&gt;Runtime failures, connectivity, behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Secrets, Drift, and the Two Problems Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Secrets in state files&lt;/strong&gt; are the most consistently underestimated risk in IaC. Terraform, OpenTofu, and Pulumi all store outputs in state files. If you output a database password, an API key, or a private certificate, it is stored in plaintext in the state file. Anyone with state file read access has those secrets.&lt;/p&gt;

&lt;p&gt;The solution is to never store secrets as Terraform outputs. Instead, write secrets directly to a secrets manager during apply, and have applications retrieve them at runtime. Use SOPS to encrypt sensitive variable files before committing them. Use Vault's Terraform provider or AWS Secrets Manager to generate and rotate secrets within the provider, so they never pass through state.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcai7edoe5cjmduohr316.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcai7edoe5cjmduohr316.png" alt="diagram" width="800" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The anti-pattern to avoid: generating a random password with &lt;code&gt;random_password&lt;/code&gt;, outputting it, and using it in a module. The password is now in state, in the output, and potentially in CI logs. Rotate all secrets whenever state file access cannot be fully audited.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drift&lt;/strong&gt; is the gap between what your IaC declares and what is actually running in your cloud account. Env0's 2024 State of IaC report found that 67% of teams using IaC experience significant drift. The two primary sources are manual console changes (someone fixes an incident by editing a security group directly) and auto-scaling side effects (EC2 Auto Scaling adds instances that are not in state).&lt;/p&gt;

&lt;p&gt;Drift detection requires scheduled plan runs. Run &lt;code&gt;terraform plan&lt;/code&gt; or &lt;code&gt;tofu plan&lt;/code&gt; in a read-only mode on a schedule, every 4 to 6 hours, and alert when the plan shows a non-empty diff. A diff means something changed outside of IaC. You then make a decision: import the change into state, revert it, or update the IaC to declare it intentionally.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3opjeogu1vvmek4zmr4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3opjeogu1vvmek4zmr4.png" alt="diagram" width="800" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Teams that run scheduled drift detection catch manual console changes within 6 hours instead of discovering them weeks later during the next apply, when the plan unexpectedly wants to destroy a resource someone is depending on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing Between Terraform, OpenTofu, and Pulumi in 2026
&lt;/h2&gt;

&lt;p&gt;This is not a close call for most teams. The decision depends on three factors: your current footprint, your team's language background, and your commercial constraints.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Recommended tool&lt;/th&gt;
&lt;th&gt;Reason&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Existing large Terraform codebase, no commercial conflicts&lt;/td&gt;
&lt;td&gt;Stay on Terraform&lt;/td&gt;
&lt;td&gt;Migration cost outweighs benefit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Existing Terraform codebase, vendor lock-in concern&lt;/td&gt;
&lt;td&gt;Migrate to OpenTofu&lt;/td&gt;
&lt;td&gt;Near-zero migration cost, open governance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Greenfield, team has strong software engineering background&lt;/td&gt;
&lt;td&gt;Pulumi&lt;/td&gt;
&lt;td&gt;Testability, real languages, component model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Greenfield, team prefers declarative config&lt;/td&gt;
&lt;td&gt;OpenTofu&lt;/td&gt;
&lt;td&gt;Open-source Terraform with active feature development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-cloud with complex conditional logic&lt;/td&gt;
&lt;td&gt;Pulumi&lt;/td&gt;
&lt;td&gt;HCL conditionals do not scale to complex branching&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regulated environment requiring open-source stack&lt;/td&gt;
&lt;td&gt;OpenTofu&lt;/td&gt;
&lt;td&gt;BSL restrictions may conflict with compliance requirements&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The switching cost from Terraform to OpenTofu is low now and rising. The feature sets are diverging. If you are going to migrate, doing it before the gap widens is easier than doing it in two years when your code relies on Terraform-specific features.&lt;/p&gt;

&lt;p&gt;The switching cost from Terraform or OpenTofu to Pulumi is high: you rewrite all IaC in a new language and framework. The benefit is also real: unit testability, type safety, and general-purpose language constructs for complex infrastructure. For teams building internal developer platforms or infrastructure abstractions used by many other teams, that investment pays off. For teams with stable, low-complexity infrastructure, it probably does not.&lt;/p&gt;

&lt;p&gt;The best practice that applies regardless of tool: treat your IaC codebase with the same engineering discipline as your application code. Code review for every change, tests at every layer, linting in every CI pipeline, and secrets management from day one. The tool is secondary. The practice is what keeps production stable.&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>opensource</category>
      <category>pulumichallenge</category>
    </item>
    <item>
      <title>How to Right-Size Kubernetes Node Groups Without Breaking Production</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Tue, 07 Apr 2026 07:13:01 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/how-to-right-size-kubernetes-node-groups-without-breaking-production-4ni6</link>
      <guid>https://dev.to/muskan_8abedcc7e12/how-to-right-size-kubernetes-node-groups-without-breaking-production-4ni6</guid>
      <description>&lt;p&gt;Over-provisioned node groups are the most common source of Kubernetes compute waste. The average cluster runs at 30-40% CPU utilization of provisioned capacity. Most teams sized their nodes once, applied a "30% headroom" rule, and haven't revisited it since.&lt;/p&gt;

&lt;p&gt;The risk of changing node sizes feels higher than the savings. That feeling is wrong. Done with the right process, right-sizing cuts compute costs by 25-35% without a single production incident. Done without the right process, it causes OOMKilled pods, scheduling failures, and drained clusters that won't come back up.&lt;/p&gt;

&lt;p&gt;This post covers the measurement you need first, the rotation pattern that makes changes safe, and what to watch for afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Over-Provisioning Default
&lt;/h2&gt;

&lt;p&gt;Teams provision node groups during initial cluster setup, apply a headroom percentage, and move on to shipping features. The headroom that made sense at launch, when traffic patterns were unknown and autoscaling wasn't tuned, becomes permanent waste six months later.&lt;/p&gt;

&lt;p&gt;A 10-node EKS cluster running m5.2xlarge instances costs $2,764 per month in us-east-1 on-demand. If those nodes run at 35% average CPU utilization, you're paying for roughly 6.5 idle nodes. That's $1,797 per month in unused compute.&lt;/p&gt;

&lt;p&gt;Right-sized to m5.xlarge with appropriate bin-packing, the same workload runs on 10 smaller nodes for $1,650 per month. The savings are $1,114 per month, $13,368 per year, from one cluster.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cluster state&lt;/th&gt;
&lt;th&gt;Nodes&lt;/th&gt;
&lt;th&gt;Instance type&lt;/th&gt;
&lt;th&gt;Monthly cost&lt;/th&gt;
&lt;th&gt;Avg CPU utilization&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Over-provisioned (current)&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;m5.2xlarge&lt;/td&gt;
&lt;td&gt;$2,764&lt;/td&gt;
&lt;td&gt;35%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Right-sized (target)&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;m5.xlarge&lt;/td&gt;
&lt;td&gt;$1,650&lt;/td&gt;
&lt;td&gt;60%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monthly savings&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;$1,114&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The data you need is already in your cluster. Most teams haven't looked at it with right-sizing intent.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Need to Measure First
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;kubectl top nodes&lt;/code&gt; shows current utilization at the moment you run it. It does not show peak utilization, scheduled capacity, or the utilization distribution over time. All four matter before you touch anything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actual utilization&lt;/strong&gt; is what your pods consumed over the last 24 hours. &lt;code&gt;kubectl top nodes&lt;/code&gt; gives you this as a snapshot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scheduled capacity&lt;/strong&gt; is the sum of all pod CPU and memory requests assigned to each node. A node at 90% scheduled capacity but 35% actual utilization has over-requested pods, not an under-provisioned node. These are different problems with different fixes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Peak utilization&lt;/strong&gt; is the 95th percentile CPU and 99th percentile memory over at least 14 days. Right-sizing to average utilization causes failures during peak load periods. Weekly batch jobs, month-end reporting runs, and Monday morning traffic spikes all appear at the tail, not the average.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pod Disruption Budgets&lt;/strong&gt; determine the minimum number of pods that must stay available during a node drain. A PDB requiring 100% availability blocks the drain operation indefinitely. Audit all PDBs before you start.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What to measure&lt;/th&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Minimum time horizon&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Current node utilization&lt;/td&gt;
&lt;td&gt;kubectl top nodes&lt;/td&gt;
&lt;td&gt;Real-time snapshot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per-pod actual usage&lt;/td&gt;
&lt;td&gt;kubectl top pods&lt;/td&gt;
&lt;td&gt;Real-time snapshot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;95th percentile over time&lt;/td&gt;
&lt;td&gt;Prometheus + kube-state-metrics&lt;/td&gt;
&lt;td&gt;14 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pod request vs actual gap&lt;/td&gt;
&lt;td&gt;VPA recommender mode&lt;/td&gt;
&lt;td&gt;8 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDB configurations&lt;/td&gt;
&lt;td&gt;kubectl get pdb -A&lt;/td&gt;
&lt;td&gt;One-time audit&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The Vertical Pod Autoscaler in recommendation mode (no auto-apply) is the most useful tool here. After 8 days of observation, it reports how much each pod actually uses versus what it requested. If VPA recommends cutting a pod's CPU request by 40%, the pod is systematically over-requesting, which inflates your scheduled capacity and forces larger nodes than necessary.&lt;/p&gt;

&lt;p&gt;Do not start a node group resize until you have 14 days of utilization data. A 24-hour window misses every weekly and monthly usage spike.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Blue-Green Node Rotation Pattern
&lt;/h2&gt;

&lt;p&gt;Never resize a node group in-place. In-place resize terminates existing nodes before the replacements are fully ready. This creates scheduling pressure, may violate Pod Disruption Budgets, and gives you no safe rollback path once nodes are gone.&lt;/p&gt;

&lt;p&gt;The safe pattern is blue-green rotation: create the new node group alongside the existing one, migrate pods gradually while the old nodes are still available, then delete the old group after a soak period.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuyfyi1v2d8f750gvl4du.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuyfyi1v2d8f750gvl4du.png" alt="diagram" width="800" height="1718"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create the new node group.&lt;/strong&gt; Launch a new managed node group with the target instance type. Use the same availability zones, labels, and taints as the existing group. Let both groups coexist for 30 minutes and observe that new pods schedule correctly on the new nodes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Cordon old nodes.&lt;/strong&gt; Mark every old node as unschedulable with &lt;code&gt;kubectl cordon&lt;/code&gt;. No new pods will land on old nodes. Existing pods keep running. This step is fully reversible with &lt;code&gt;kubectl uncordon&lt;/code&gt; and carries zero risk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Drain one node at a time.&lt;/strong&gt; Drain evicts pods from one node, waits for replacement pods to start on another node, then moves to the next. Drain respects PDBs: if evicting a pod would violate a disruption budget, drain pauses and waits. Watch the drain output actively. A drain that has been waiting more than 10 minutes is blocked by a PDB — check &lt;code&gt;kubectl get pdb -A&lt;/code&gt; to see what is holding it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Verify for 72 hours.&lt;/strong&gt; After all pods are running on new nodes, do not immediately delete the old (cordoned) group. Keep it available as a rollback for 72 hours. During this window, run your normal observability checks and watch for the signals described below.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Delete the old node group.&lt;/strong&gt; Only after the 72-hour soak period passes cleanly. No earlier.&lt;/p&gt;

&lt;p&gt;The active work for a 10-node cluster takes 3-4 hours. The soak period runs over three days. This is not a slow process — it is a safe one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Breaks (and When to Stop)
&lt;/h2&gt;

&lt;p&gt;Right-sizing failures follow four predictable patterns. Each has a specific trigger and a specific prevention.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Failure mode&lt;/th&gt;
&lt;th&gt;Trigger condition&lt;/th&gt;
&lt;th&gt;Prevention&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OOMKilled pods&lt;/td&gt;
&lt;td&gt;New node memory insufficient for burst workloads sized using averages&lt;/td&gt;
&lt;td&gt;Size to 99th percentile memory, not average&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pending pods&lt;/td&gt;
&lt;td&gt;Largest pod's requests exceed new node's allocatable memory&lt;/td&gt;
&lt;td&gt;Verify max pod request fits new node before draining&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Drain hangs indefinitely&lt;/td&gt;
&lt;td&gt;PDB requires N replicas but only N are running, drain would violate it&lt;/td&gt;
&lt;td&gt;Scale deployment to N+1 replicas before draining&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DaemonSet resource failures&lt;/td&gt;
&lt;td&gt;DaemonSet requests exceed allocatable capacity on smaller nodes&lt;/td&gt;
&lt;td&gt;Check DaemonSet requests fit new node's allocatable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;OOMKilled&lt;/strong&gt; is the most common failure after a node resize. It happens because average memory usage looks safe, but a nightly report that builds a large in-memory dataset hits the new node's memory ceiling. The pod restarts automatically, which masks the issue in short tests but becomes chronic in production. Prevention: always use the 99th percentile memory over 14+ days, not the mean.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scheduling failures&lt;/strong&gt; appear as Pending pods. They happen when a pod's CPU or memory requests exceed what any node in the cluster can offer after system reservations. Kubernetes cannot split a pod across nodes. Prevention: before draining, confirm the largest pod request in the cluster fits within the new node's allocatable capacity. Allocatable is always less than total node memory due to kubelet, kube-proxy, and OS reservations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drain hangs&lt;/strong&gt; happen when a Pod Disruption Budget requires at least 2 replicas available, but only 2 replicas are running. Draining one pod would bring available count to 1, which violates the PDB. Drain waits indefinitely rather than violating it. The fix: scale the deployment to 3 replicas before draining. Once migration is complete, scale back down. Never modify a PDB to unblock a drain — PDBs exist to protect production availability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DaemonSets&lt;/strong&gt; run on every node, including new ones, automatically. If a DaemonSet's resource requests exceed the allocatable capacity on the new node type, the DaemonSet pod goes into Pending on every new node. Check DaemonSet resource requests explicitly before sizing down.&lt;/p&gt;

&lt;p&gt;The signal to abort and roll back: any OOMKilled event or Pending pod that persists more than 5 minutes after drain completes. Uncordon the old nodes immediately. Pods will reschedule back onto the original nodes while you diagnose the cause.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sizing the New Nodes: The Math
&lt;/h2&gt;

&lt;p&gt;The target utilization after right-sizing should be 60-70% of node capacity at the 95th percentile. Below 60% and you're over-provisioning again. Above 70% and you have insufficient headroom for autoscaling to respond to traffic spikes.&lt;/p&gt;

&lt;p&gt;The calculation for choosing the right node type:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Formula&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Total scheduled CPU&lt;/td&gt;
&lt;td&gt;Sum all pod CPU requests cluster-wide&lt;/td&gt;
&lt;td&gt;100 pods x 250m avg = 25 vCPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Required provisioned CPU&lt;/td&gt;
&lt;td&gt;Total requests / target utilization (0.65)&lt;/td&gt;
&lt;td&gt;25 / 0.65 = 38.5 vCPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Node count&lt;/td&gt;
&lt;td&gt;Required vCPU / vCPU per node&lt;/td&gt;
&lt;td&gt;38.5 / 4 (m5.xlarge) = 10 nodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Verify largest pod fits&lt;/td&gt;
&lt;td&gt;Max pod request &amp;lt; node allocatable&lt;/td&gt;
&lt;td&gt;3.5 vCPU request &amp;lt; 3.9 vCPU allocatable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Add one node buffer&lt;/td&gt;
&lt;td&gt;N+1 for drain headroom&lt;/td&gt;
&lt;td&gt;10 + 1 = 11 nodes during migration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In this example: 11 m5.xlarge nodes at $0.192/hr = $1,535/month during migration, then 10 nodes at $1,395/month at steady state. Compare to the m5.2xlarge baseline at $2,764/month. Annual savings: $16,428. The migration takes a week of calendar time and a day of engineering time.&lt;/p&gt;

&lt;p&gt;One important check before committing: run &lt;code&gt;kubectl describe node&lt;/code&gt; on any existing node and find the allocatable CPU and memory fields. These are the real scheduling limits. A 4 vCPU m5.xlarge has approximately 3.92 vCPU allocatable after system reservations. If your largest pod requests 4 vCPU exactly, it will not schedule.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 72-Hour Watch
&lt;/h2&gt;

&lt;p&gt;The soak period is not optional. The failure modes that don't appear in the first hour appear during nightly jobs, weekly batch runs, and traffic spikes that only happen on specific days or at the end of billing periods.&lt;/p&gt;

&lt;p&gt;During the 72 hours, watch three signals:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Where to find it&lt;/th&gt;
&lt;th&gt;What it means if triggered&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pod restart count&lt;/td&gt;
&lt;td&gt;kubectl get pods -A --sort-by='.status.containerStatuses[0].restartCount'&lt;/td&gt;
&lt;td&gt;OOMKilled or crash loop — node may be undersized&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HPA scaling events&lt;/td&gt;
&lt;td&gt;kubectl get events -A --field-selector reason=SuccessfulReschedule&lt;/td&gt;
&lt;td&gt;Cluster approaching capacity, autoscaler compensating&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU throttling rate&lt;/td&gt;
&lt;td&gt;container_cpu_cfs_throttled_seconds_total in Prometheus&lt;/td&gt;
&lt;td&gt;CPU limits or node size too small for actual load&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Any pod with more than 2 restarts during the soak period needs investigation before you delete the old node group. A throttling rate above 25% on any critical service indicates the node type is CPU-constrained.&lt;/p&gt;

&lt;p&gt;If all three signals are clean after 72 hours, delete the old node group and schedule the next one. For clusters with multiple node groups, right-size one group at a time with a minimum two-week cadence between changes. Concurrent changes to multiple groups make incident diagnosis nearly impossible — you cannot isolate which change caused a problem.&lt;/p&gt;

&lt;p&gt;Right-sizing is not a one-time event. Workloads change, teams add services, and traffic grows. Review node group utilization every quarter. The data is free to collect. The cost of not collecting it shows up on every cloud invoice.&lt;/p&gt;

</description>
      <category>right</category>
      <category>size</category>
      <category>kubernetes</category>
      <category>node</category>
    </item>
    <item>
      <title>AWS vs Azure vs GCP Pricing in 2026: Compute, Storage, and Network Compared</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Tue, 07 Apr 2026 06:10:35 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/aws-vs-azure-vs-gcp-pricing-in-2026-compute-storage-and-network-compared-45dl</link>
      <guid>https://dev.to/muskan_8abedcc7e12/aws-vs-azure-vs-gcp-pricing-in-2026-compute-storage-and-network-compared-45dl</guid>
      <description>&lt;p&gt;The on-demand price for equivalent compute is almost identical across AWS, Azure, and GCP. A 4-vCPU, 16GB RAM instance costs roughly $0.19 per hour on any of the three in US regions.&lt;/p&gt;

&lt;p&gt;That's by design. Cloud providers track each other's list prices and match on headline compute. The actual price differences are in egress charges, Kubernetes control plane fees, block storage rates, and how flexible each provider's discounting model is.&lt;/p&gt;

&lt;p&gt;This post compares all five categories with current pricing so you know where the gaps are before they show up on your invoice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Part That Is Identical (And the Part That Isn't)
&lt;/h2&gt;

&lt;p&gt;Equivalent 4-vCPU, 16GB RAM instances across providers (US East regions):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Instance&lt;/th&gt;
&lt;th&gt;On-demand/hr&lt;/th&gt;
&lt;th&gt;1-year committed/hr&lt;/th&gt;
&lt;th&gt;3-year committed/hr&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS m5.xlarge&lt;/td&gt;
&lt;td&gt;$0.192&lt;/td&gt;
&lt;td&gt;$0.121 (37% off)&lt;/td&gt;
&lt;td&gt;$0.083 (57% off)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Azure D4s_v5&lt;/td&gt;
&lt;td&gt;$0.192&lt;/td&gt;
&lt;td&gt;$0.115 (40% off)&lt;/td&gt;
&lt;td&gt;$0.077 (60% off)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GCP n2-standard-4&lt;/td&gt;
&lt;td&gt;$0.191&lt;/td&gt;
&lt;td&gt;$0.121 (37% off)&lt;/td&gt;
&lt;td&gt;$0.077 (60% off)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On-demand: a dead heat. At 1-year committed, Azure is marginally cheaper. At 3-year committed, Azure and GCP reach 60% off on-demand, about 3 percentage points deeper than AWS.&lt;/p&gt;

&lt;p&gt;The raw discount depth matters less than most teams assume. The more significant question is what you're committing to and how flexible the commitment is when your instance mix changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compute: Commitment Flexibility Is the Real Variable
&lt;/h2&gt;

&lt;p&gt;All three providers charge roughly the same on-demand. All three offer 30-60% discounts for committed use. The structure of that commitment is where they diverge.&lt;/p&gt;

&lt;p&gt;AWS Savings Plans let you commit to a dollar amount of compute spend per hour. That commitment applies to any EC2 instance running in any region, any size, any family. You commit to spending $10/hr of EC2 and AWS credits whatever you actually run. For teams that right-size aggressively or shift workloads across instance types, this is the most forgiving model.&lt;/p&gt;

&lt;p&gt;GCP Committed Use Discounts (CUDs) are resource-based. You commit to a specific number of vCPUs and GB of memory in a given region. The discount applies to any instance consuming those resources, regardless of instance family or size. You get 37% off 1-year and 55% off 3-year automatically, with no upfront payment required. More flexible than Azure within a region, less flexible than AWS across regions.&lt;/p&gt;

&lt;p&gt;Azure Reserved Instances commit to a specific instance family in a specific region. The reservation can be made instance-size flexible within that family (so a D4s_v5 reservation covers D2s_v5 and D8s_v5 as well), and you get one exchange per reservation. For stable, predictable workloads running the same instance family: Azure's 60% 3-year discount is competitive. For teams that shift frequently across families: the commitment becomes a constraint.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6xm6s221m4x8bqfo0fe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl6xm6s221m4x8bqfo0fe.png" alt="Architecture diagram" width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The practical takeaway: if your workload is stable and you know which instance families you run, Azure or GCP 3-year committed pricing reaches 60% off. If you right-size frequently and shift across instance types, AWS Savings Plans avoid commitment lock-in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Object Storage: Azure Wins on Unit Price, Read Costs Flip the Math
&lt;/h2&gt;

&lt;p&gt;Standard-tier object storage per GB per month (US regions):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Storage/GB/month&lt;/th&gt;
&lt;th&gt;PUT per 10k ops&lt;/th&gt;
&lt;th&gt;GET per 10k ops&lt;/th&gt;
&lt;th&gt;Archive tier/GB&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS S3 Standard&lt;/td&gt;
&lt;td&gt;$0.023&lt;/td&gt;
&lt;td&gt;$0.05&lt;/td&gt;
&lt;td&gt;$0.004&lt;/td&gt;
&lt;td&gt;$0.004 (Glacier Instant)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Azure Blob Hot&lt;/td&gt;
&lt;td&gt;$0.018&lt;/td&gt;
&lt;td&gt;$0.055&lt;/td&gt;
&lt;td&gt;$0.0044&lt;/td&gt;
&lt;td&gt;$0.00099 (Archive)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GCP Cloud Storage Standard&lt;/td&gt;
&lt;td&gt;$0.020&lt;/td&gt;
&lt;td&gt;$0.05&lt;/td&gt;
&lt;td&gt;$0.004&lt;/td&gt;
&lt;td&gt;$0.0012 (Archive)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Azure Blob Hot is 22% cheaper per GB than S3 and 10% cheaper than GCS. For a team storing 1PB of data, that's a $5,000/month difference versus S3.&lt;/p&gt;

&lt;p&gt;The unit price advantage holds for write-heavy, read-rarely workloads: backups, log archives, training data snapshots. But for workloads with high read volume, API operation charges start to matter. GET pricing across all three providers is nearly identical, so the operation charge advantage disappears at high read rates.&lt;/p&gt;

&lt;p&gt;Cold and archive storage inverts the comparison further. Azure Archive at $0.00099/GB/month is by far the cheapest for long-term retention. But Azure charges $0.02/GB retrieval. S3 Glacier Instant Retrieval costs $0.004/GB/month with $0.01/GB retrieval. GCS Archive at $0.0012/GB/month has a $0.01/GB retrieval fee.&lt;/p&gt;

&lt;p&gt;The decision rule: if you write once and retrieve rarely (compliance archives, DR snapshots), Azure Archive is cheapest. If you retrieve regularly for processing or analysis, S3 or GCS archive pricing is lower total cost once retrieval charges are included.&lt;/p&gt;

&lt;h2&gt;
  
  
  Block Storage: GCP Is Noticeably More Expensive
&lt;/h2&gt;

&lt;p&gt;Kubernetes PersistentVolumeClaims, database disks, and stateful workloads all use block storage. This is a continuous cost: every provisioned GB bills every month regardless of usage.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;SSD per GB/month&lt;/th&gt;
&lt;th&gt;HDD per GB/month&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS EBS gp3&lt;/td&gt;
&lt;td&gt;$0.08&lt;/td&gt;
&lt;td&gt;$0.045&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Azure Premium SSD v2&lt;/td&gt;
&lt;td&gt;$0.113 base&lt;/td&gt;
&lt;td&gt;$0.045&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GCP Persistent Disk SSD&lt;/td&gt;
&lt;td&gt;$0.17&lt;/td&gt;
&lt;td&gt;$0.04&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;GCP Persistent Disk SSD costs $0.17/GB/month. EBS gp3 costs $0.08/GB/month. That's 112% more for the same capacity. For a GKE cluster with 10 nodes each using 100GB persistent volumes, the annual GCP overage versus AWS is $1,080, per cluster.&lt;/p&gt;

&lt;p&gt;Azure Premium SSD v2 pricing is more complex. The base rate is $0.113/GB/month, but you pay separately for IOPS above 3,000 ($0.006 per IOPS/month) and throughput above 125MB/s ($0.048 per MB/s/month). For low-IOPS staging workloads, the base rate is the dominant cost and it sits between EBS and GCP. For high-IOPS databases, the provisioned IOPS charges push Azure significantly higher.&lt;/p&gt;

&lt;p&gt;GCP does offer Hyperdisk Balanced as a newer SSD option at $0.084/GB/month, which closes most of the gap with EBS gp3. The catch: Hyperdisk is not the default in GKE deployments and requires explicit StorageClass configuration. Teams running standard GKE deployments get Persistent Disk SSD by default and pay the higher rate until they specifically switch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Network Egress: The Bill Nobody Budgets For
&lt;/h2&gt;

&lt;p&gt;Egress pricing is where teams get surprised at scale. The cost is invisible during architecture design and only appears once data volumes grow.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Transfer type&lt;/th&gt;
&lt;th&gt;AWS&lt;/th&gt;
&lt;th&gt;Azure&lt;/th&gt;
&lt;th&gt;GCP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Internet egress (first 10TB/month)&lt;/td&gt;
&lt;td&gt;$0.09/GB&lt;/td&gt;
&lt;td&gt;$0.087/GB&lt;/td&gt;
&lt;td&gt;$0.12/GB (first 1TB), $0.11/GB next 9TB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inter-region (same continent)&lt;/td&gt;
&lt;td&gt;$0.02/GB&lt;/td&gt;
&lt;td&gt;$0.02/GB&lt;/td&gt;
&lt;td&gt;$0.01/GB (within US)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same-region (compute to storage)&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free (GCS to GCE same region)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ingress&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;GCP has the highest internet egress rate at $0.12/GB for the first terabyte. For a team pushing 100TB/month to the internet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS: $9,000/month&lt;/li&gt;
&lt;li&gt;Azure: $8,700/month&lt;/li&gt;
&lt;li&gt;GCP: $11,090/month ($120 for first TB, then $0.11/GB for remaining 99TB)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GCP partially compensates with the lowest inter-region rate within the US at $0.01/GB. AWS and Azure both charge $0.02/GB for cross-region transfer. For a disaster recovery setup replicating 500TB/month between US regions, that's $60,000/year on AWS versus $30,000/year on GCP: a $30,000 annual difference from one architectural choice.&lt;/p&gt;

&lt;p&gt;The other GCP advantage: egress from Cloud Storage to Compute Engine within the same region is free. AWS charges for S3-to-EC2 transfer even within the same region if it exits the VPC. For data-intensive workloads reading large datasets from object storage into compute (ML training, analytics pipelines), GCP's same-region free egress removes a consistent line item.&lt;/p&gt;

&lt;p&gt;The bottom line on egress: if your primary cost is serving data to the internet at high volume, avoid GCP. If your primary cost is cross-region replication or reading from object storage to compute, GCP's rates are competitive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kubernetes Control Plane: AKS Is Free, EKS Costs $73/Month Per Cluster
&lt;/h2&gt;

&lt;p&gt;This is the most underappreciated pricing difference in multi-environment Kubernetes deployments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Control plane fee&lt;/th&gt;
&lt;th&gt;10-cluster annual cost&lt;/th&gt;
&lt;th&gt;Free tier&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AWS EKS&lt;/td&gt;
&lt;td&gt;$0.10/hr per cluster&lt;/td&gt;
&lt;td&gt;$8,760/year&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Azure AKS&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;Always free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GCP GKE Standard&lt;/td&gt;
&lt;td&gt;$0.10/hr per cluster&lt;/td&gt;
&lt;td&gt;$7,884/year&lt;/td&gt;
&lt;td&gt;First zonal cluster free&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;AKS charges nothing for the Kubernetes control plane. You pay for the VMs in your node pools and nothing else for cluster management. EKS charges $73/month regardless of whether the cluster runs 3 nodes or 300. GKE charges the same, with a single free zonal cluster per billing account.&lt;/p&gt;

&lt;p&gt;A platform team running 10 clusters (production, staging, QA, per-environment dev, team sandboxes) pays:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS: $8,760/year in control plane fees&lt;/li&gt;
&lt;li&gt;Azure: $0&lt;/li&gt;
&lt;li&gt;GCP: $7,884/year (10 clusters minus the 1 free)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's $8,760 of pure overhead eliminated by AKS. For organizations with many small, short-lived clusters (feature branch environments, per-PR review clusters), the gap grows further.&lt;/p&gt;

&lt;p&gt;The counterargument: EKS has deeper AWS service integrations (IAM Roles for Service Accounts, AWS Load Balancer Controller, EFS CSI driver) that have more mature operational tooling than AKS equivalents. The control plane fee is real money, but it does not represent the only tradeoff.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Determines Your Cloud Bill
&lt;/h2&gt;

&lt;p&gt;After comparing individual line items, the pattern is clear: no provider wins across every category.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Winner&lt;/th&gt;
&lt;th&gt;Runner-up&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;On-demand compute&lt;/td&gt;
&lt;td&gt;Tie&lt;/td&gt;
&lt;td&gt;Tie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3-year committed compute&lt;/td&gt;
&lt;td&gt;Azure / GCP (tie)&lt;/td&gt;
&lt;td&gt;AWS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commitment flexibility&lt;/td&gt;
&lt;td&gt;AWS&lt;/td&gt;
&lt;td&gt;GCP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Object storage unit price&lt;/td&gt;
&lt;td&gt;Azure&lt;/td&gt;
&lt;td&gt;GCP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Block storage&lt;/td&gt;
&lt;td&gt;AWS&lt;/td&gt;
&lt;td&gt;Azure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internet egress&lt;/td&gt;
&lt;td&gt;Azure&lt;/td&gt;
&lt;td&gt;AWS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inter-region transfer&lt;/td&gt;
&lt;td&gt;GCP&lt;/td&gt;
&lt;td&gt;Tie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kubernetes control plane&lt;/td&gt;
&lt;td&gt;Azure&lt;/td&gt;
&lt;td&gt;GCP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Provider selection is a smaller cost driver than team behavior. Three patterns account for most cloud overspend, and all three are identical across providers.&lt;/p&gt;

&lt;p&gt;Idle non-production environments. Staging, QA, and dev clusters run 24/7 on EKS, AKS, and GKE alike. During nights and weekends, you pay for compute that no developer is using. That is 65-70% of non-prod compute hours wasted, regardless of your cloud. zopnight (&lt;a href="https://zop.dev/zopnight" rel="noopener noreferrer"&gt;https://zop.dev/zopnight&lt;/a&gt;) handles this across all three clouds: it suspends non-production workloads during off-hours and wakes them automatically when needed.&lt;/p&gt;

&lt;p&gt;Over-provisioned nodes. Teams provision staging at production scale. Production needs headroom for traffic spikes. A staging cluster that runs 12 daily test jobs does not need the same node count as production.&lt;/p&gt;

&lt;p&gt;Underused reservations. Teams buy reserved capacity without matching it to actual baseline usage. Unused reservations are sunk cost. The fix is to right-size the commitment to match stable baseline usage, then use on-demand for burst capacity above that.&lt;/p&gt;

&lt;p&gt;The provider you're on matters less than fixing these three patterns. Switching from AWS to GCP does not eliminate $150,000/year in idle staging compute. It just moves the problem to a different invoice.&lt;/p&gt;

&lt;p&gt;Pick the provider that fits your architecture: AKS for many small clusters, GCP for data-intensive workloads with heavy cross-region replication, AWS for maximum ecosystem maturity and commitment flexibility. Then cut the idle compute problem regardless of which one you chose.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>azure</category>
      <category>gcp</category>
    </item>
    <item>
      <title>Cloud Observability vs Monitoring: What's the Difference and Why It Matters</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Mon, 06 Apr 2026 09:59:15 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/cloud-observability-vs-monitoring-whats-the-difference-and-why-it-matters-305f</link>
      <guid>https://dev.to/muskan_8abedcc7e12/cloud-observability-vs-monitoring-whats-the-difference-and-why-it-matters-305f</guid>
      <description>&lt;p&gt;Your alerting fires at 2 AM. CPU is at 94%, error rate is at 6.2%, and latency is climbing. You page the on-call engineer. They open the dashboard. They see the numbers going up. What they cannot see is why — because the service throwing errors depends on three upstream services, one of which depends on a database that is waiting on a connection pool that was quietly exhausted by a batch job that ran 11 minutes ago.&lt;/p&gt;

&lt;p&gt;Monitoring told you something was wrong. Observability would have told you what.&lt;/p&gt;

&lt;p&gt;This is not a semantic argument. Teams with mature observability resolve incidents 2.8x faster than teams that rely on monitoring alone, according to DORA research. The gap matters in production. Understanding why the gap exists is the first step to closing it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoring Is Not Broken. It's Just Not Enough.
&lt;/h2&gt;

&lt;p&gt;Monitoring does one thing well: it watches predefined signals and alerts when they cross a threshold. You define what to watch — CPU, memory, error rate, latency p99 — and you define when to fire. That model works when your system is small and you understand all the ways it can fail.&lt;/p&gt;

&lt;p&gt;The problem is that assumption breaks down fast. In a monolith, you might have 10-20 metrics that matter. In a Kubernetes cluster running 50 microservices, you can emit over 500,000 metric data points per minute. You cannot write alert rules for all of them. You cannot even anticipate all the failure modes. The system is too complex for the known-unknowns model.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What monitoring answers well&lt;/th&gt;
&lt;th&gt;Where monitoring fails&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Is the service up or down?&lt;/td&gt;
&lt;td&gt;Why is 3% of traffic slow for users in us-east-1?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Has CPU crossed 90%?&lt;/td&gt;
&lt;td&gt;Which service in the call chain is adding latency?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Is the error rate above threshold?&lt;/td&gt;
&lt;td&gt;What changed 11 minutes before the alert fired?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Is the queue depth growing?&lt;/td&gt;
&lt;td&gt;Why does this only happen for requests with large payloads?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Did the deployment succeed?&lt;/td&gt;
&lt;td&gt;What is the full path of a failing request across 6 services?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Monitoring answers the questions you already knew to ask. It breaks down when the problem requires questions you didn't know you needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Observability Actually Means
&lt;/h2&gt;

&lt;p&gt;Observability is not a tool or a platform. It is a property of a system. A system is observable if you can infer its internal state by examining its external outputs. In practice, those outputs fall into three categories: logs, metrics, and traces. Together, they are the three signals that make a distributed system understandable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwuoy8dghycolklmbfe95.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwuoy8dghycolklmbfe95.png" alt="diagram" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logs&lt;/strong&gt; are the most familiar signal. A log entry says something happened at a specific time in a specific place. Structured logs, where each entry is a JSON object with consistent fields, are queryable in ways plain text logs are not. You can filter by &lt;code&gt;user_id&lt;/code&gt;, &lt;code&gt;request_id&lt;/code&gt;, or &lt;code&gt;error_code&lt;/code&gt; across thousands of log lines in seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metrics&lt;/strong&gt; are aggregated numerical measurements over time: request rate, error count, memory used. Metrics are cheap to store and fast to query. They are excellent for dashboards and alerting. They are not designed to answer questions about individual requests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traces&lt;/strong&gt; are the signal that makes distributed systems understandable. A trace follows a single request through every service it touches, recording how long each step took and what happened. Without traces, you have metrics showing high latency. With traces, you have a timeline showing that 840ms of a 950ms request was spent waiting for a database query in the payments service — because a connection pool was exhausted.&lt;/p&gt;

&lt;p&gt;Traces require instrumentation. That instrumentation overhead runs at roughly 1-3% of CPU in production with OpenTelemetry auto-instrumentation, which is a small cost for the resolution it provides.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Monitoring Breaks Down in Cloud-Native Systems
&lt;/h2&gt;

&lt;p&gt;Here is a real failure mode. An e-commerce platform runs a checkout flow across four services: API gateway, cart service, payments service, and inventory service. Error rate climbs to 4%. Monitoring fires. The on-call engineer opens the dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhh96wpzt2j1szyf5eezs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhh96wpzt2j1szyf5eezs.png" alt="diagram" width="800" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The dashboard shows error rate elevated on the API gateway. Memory is fine. CPU is fine on all four services. The engineer checks the payments service logs. They see timeouts. They check the inventory service. Clean. They restart the payments service. The error rate drops for 4 minutes, then climbs again.&lt;/p&gt;

&lt;p&gt;Forty minutes later, after a third restart, someone notices a batch job that runs every 15 minutes opens 180 database connections without releasing them. The connection pool exhausts, payments times out, the API gateway surfaces errors.&lt;/p&gt;

&lt;p&gt;A distributed trace would have shown this in 90 seconds. The trace for a failing checkout request would have shown the span for &lt;code&gt;payments.db.connect&lt;/code&gt; timing out. The engineer would have clicked into that span, seen the connection pool metric attached to the trace context, and found the batch job in the active connections list.&lt;/p&gt;

&lt;p&gt;Monitoring told the team there was a problem. The trace told them where to look.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Difference: Known Unknowns vs Unknown Unknowns
&lt;/h2&gt;

&lt;p&gt;The mental model that makes this concrete: monitoring manages known unknowns. You know CPU can go high, so you monitor it. You know error rate matters, so you alert on it. The failure mode is that you cannot monitor what you did not think to monitor.&lt;/p&gt;

&lt;p&gt;Observability manages unknown unknowns. You instrument your system so that when something unexpected happens, you have the raw signals to investigate it. The question doesn't have to be written in advance.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Monitoring&lt;/th&gt;
&lt;th&gt;Observability&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core question&lt;/td&gt;
&lt;td&gt;Did a threshold get crossed?&lt;/td&gt;
&lt;td&gt;What is happening inside the system?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data model&lt;/td&gt;
&lt;td&gt;Predefined metrics and alerts&lt;/td&gt;
&lt;td&gt;Logs, metrics, and traces at request level&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Investigation mode&lt;/td&gt;
&lt;td&gt;Alert-driven, reactive&lt;/td&gt;
&lt;td&gt;Exploratory, hypothesis-driven&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Failure mode&lt;/td&gt;
&lt;td&gt;Alert fatigue, blind spots for new failure modes&lt;/td&gt;
&lt;td&gt;High cost if cardinality is unmanaged&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Known, recurring failure patterns&lt;/td&gt;
&lt;td&gt;Novel failures in distributed systems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tooling examples&lt;/td&gt;
&lt;td&gt;Prometheus, CloudWatch Alarms, Nagios&lt;/td&gt;
&lt;td&gt;Honeycomb, Jaeger, OpenTelemetry + Grafana&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The two approaches are not in competition. Monitoring provides fast, cheap signals for known problems. Observability provides the depth to investigate problems that monitoring surfaces but cannot explain. Production systems need both.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Build Both Without Starting Over
&lt;/h2&gt;

&lt;p&gt;The good news: observability is additive. You do not have to replace your monitoring stack. You layer observability on top of it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5jcvifx0rst6nxkk1cz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5jcvifx0rst6nxkk1cz.png" alt="diagram" width="800" height="1206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 1 — Basic monitoring.&lt;/strong&gt; Keep what you have. Prometheus scraping, CloudWatch metrics, uptime checks. These catch 60-70% of production incidents and cost almost nothing to maintain. Do not replace them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 2 — Structured logging.&lt;/strong&gt; Switch from plain text logs to structured JSON logs. Add a &lt;code&gt;request_id&lt;/code&gt;, &lt;code&gt;user_id&lt;/code&gt;, &lt;code&gt;service&lt;/code&gt;, and &lt;code&gt;environment&lt;/code&gt; field to every log entry. This takes a day per service and immediately makes logs queryable. You go from searching for strings to filtering by fields. The resolution time improvement is measurable: teams report cutting log-based investigation time by roughly half after switching to structured logs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 3 — Distributed tracing.&lt;/strong&gt; Instrument your services with OpenTelemetry. Start with the two or three services most involved in your slowest or most error-prone flows. OpenTelemetry auto-instrumentation handles HTTP and database calls without manual code changes for most frameworks. Traces flow to a backend like Jaeger, Tempo, or a managed platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 4 — Correlation.&lt;/strong&gt; The payoff comes when you can move from an alert in Prometheus to a dashboard in Grafana to a specific trace for a failing request in under 2 minutes. That correlation requires your logs, metrics, and traces to share a common &lt;code&gt;trace_id&lt;/code&gt; field. Once they do, investigation becomes a directed search instead of a guessing game.&lt;/p&gt;

&lt;p&gt;Most teams can reach Level 3 within two sprints without replacing existing tooling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost Is a Signal Too
&lt;/h2&gt;

&lt;p&gt;Observability tooling carries real cost. Managed platforms charge between $0.10 and $0.50 per GB of ingested data. At 50 services emitting verbose structured logs, you can easily hit $8,000-15,000 per month before trace storage. That cost is manageable if you make deliberate choices. It becomes a problem when teams instrument everything at maximum verbosity and send all traces to a paid backend.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cost driver&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;th&gt;How to manage it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Log verbosity&lt;/td&gt;
&lt;td&gt;DEBUG-level logs in production multiply ingestion volume by 5-10x&lt;/td&gt;
&lt;td&gt;Use INFO in production, DEBUG behind a feature flag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Metric cardinality&lt;/td&gt;
&lt;td&gt;Every unique label combination creates a new time series&lt;/td&gt;
&lt;td&gt;Avoid high-cardinality labels like &lt;code&gt;user_id&lt;/code&gt; on metrics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trace sampling&lt;/td&gt;
&lt;td&gt;Storing 100% of traces is rarely useful&lt;/td&gt;
&lt;td&gt;Head-based sampling at 10-20% for normal traffic, 100% for errors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retention period&lt;/td&gt;
&lt;td&gt;90-day retention costs 3x more than 30-day&lt;/td&gt;
&lt;td&gt;Keep traces for 14 days, metrics for 90 days, logs for 30 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Redundant signals&lt;/td&gt;
&lt;td&gt;Logging the same event in both app logs and a tracing span doubles cost&lt;/td&gt;
&lt;td&gt;Pick one canonical home per signal type&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The practical rule: instrument for insight, not for completeness. You need enough signal to answer questions you haven't asked yet. You do not need every byte.&lt;/p&gt;

&lt;p&gt;A sampling strategy alone — keeping 100% of error traces and 15% of successful traces — typically cuts trace storage cost by 60-70% without losing the signal that matters. Errors are rare enough that full retention makes sense. Successful requests follow patterns that make sampling sufficient.&lt;/p&gt;

&lt;p&gt;Observability done right costs money. Observability done without discipline costs a lot of money and still doesn't answer your questions. The discipline is in deciding what signals you actually need to investigate the incidents your system produces.&lt;/p&gt;




&lt;p&gt;The gap between monitoring and observability is not a tool gap. It is an instrumentation and culture gap. Monitoring asks you to anticipate failure. Observability asks you to build systems that tell you what happened after the fact. In cloud-native infrastructure, where failure modes multiply with every service you add, the teams that invest in observability spend their nights sleeping instead of guessing.&lt;/p&gt;

</description>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Cloud Cost Anomaly Detection: How to Catch Surprise Bills Before They Hit</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Mon, 06 Apr 2026 09:49:48 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/cloud-cost-anomaly-detection-how-to-catch-surprise-bills-before-they-hit-10oo</link>
      <guid>https://dev.to/muskan_8abedcc7e12/cloud-cost-anomaly-detection-how-to-catch-surprise-bills-before-they-hit-10oo</guid>
      <description>&lt;p&gt;Cloud bills don't spike gradually. They spike overnight. A misconfigured NAT gateway starts routing all inter-AZ traffic inefficiently on a Friday. A data pipeline job enters an infinite retry loop on Saturday. A developer spins up a p3.8xlarge for a test and forgets to terminate it over a long weekend. By the time you find out, you've already burned through budget that wasn't allocated for it.&lt;/p&gt;

&lt;p&gt;The problem isn't that anomalies happen. The problem is the detection lag: most teams don't discover a cost spike until the invoice arrives 30 days later. With the right alerting in place, you catch the same spike in under 6 hours.&lt;/p&gt;

&lt;p&gt;This is the practical guide to setting that up.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Cloud Bills Spike (And Why You Don't Find Out for 30 Days)
&lt;/h2&gt;

&lt;p&gt;The most common sources of surprise cloud bills fall into four categories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data transfer charges&lt;/strong&gt; are the least visible. Egress to the internet, cross-AZ traffic, and PrivateLink endpoint costs don't show up in instance dashboards. A misconfigured application sending logs from us-east-1a to a database in us-east-1b generates inter-AZ transfer fees that compound silently. A single misconfigured NAT gateway can produce $10,000 in weekend charges before anyone notices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forgotten compute&lt;/strong&gt; is the most embarrassing. GPU instances at $24/hour, idle Redshift clusters, RDS instances that were "just for testing" — these run 24/7 because there's no automatic shutdown and no one checks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Runaway batch jobs&lt;/strong&gt; happen when a job fails to complete and retries indefinitely, or when a processing job gets fed an unexpectedly large dataset. A Glue ETL job processing 10TB instead of 10GB costs 100x more and doesn't fail visibly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Misconfigured autoscaling&lt;/strong&gt; is a production hazard. A scale-up policy that fires on CPU but has no scale-down minimum can leave a fleet at 50 nodes when 5 would suffice.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAyAAAABsCAYAAACSAtbiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAY10lEQVR4nO3dZ3NcVZ7H8XkD%2B2TfwD7Z2oe7VVtbzFIzO7MzU%2BzsUjvsDIPJjBlgyDIZTM45GmMMGAeck5yjnORs2XK2sWzLcpBtOeeAAz5b32NO05YAqUVzW21%2FP1WnJHXfvn1lnf8953fubfhZkCRJkqSf1os%2FS37iN5IkSZKkFw0gkiRJkrJiAJEkSZKUGQOIJEmSpMwYQCRJkiRlxgAiSZIkKTMGEEmSJEmZMYBIkiRJyowBRJIkSVJmDCCSJEmSMmMAkSRJkpQZA4gkSZKkzBhAJEmSJGXGACJJkiQpMwYQSZIkSZkxgEiSJEnKjAFEkiRJUmYMIJIkSZIyYwCRJEmSlBkDiCRJkqTMGEAkSZIkZcYAIkmSJCkzBhBJkiRJmTGASJIkScqMAUSSJElSZgwgkiRJkjJjAJEkSZKUGQOIJEmSpMwYQCRJkiRlxgAiSZIkKTMGEEmSJEmZMYBIkiRJyowBRJIkSVJmDCCSJEmSMmMAkSRJkpQZA4gkSZKkzBhAJEmSJGXGACJJkiQpMwYQSZIkSZkpnwDSY9CmcMtjtba8dsczy8K5c6X%2By%2BjHqKzaUfJ%2BdDG29ZuPlvpPqzJBXyl1fy3X1rlrbTh2%2FEyp%2F4TqwHoObih5P70U247dJ0MHVz4BpNMDNWFu7f5Q13DM9k27%2FLrqcOasCaScPfXe2jBoXGPJ%2B9LF1Lq8sipMm7%2B71H9alQn6Cn2m1P22HNuVdy4oh4mOSuj6hxaH6sX7St5XL6XWuevSsHTNwdDBlVcAaWg8EU5%2Bdc72Tfv1zXMMIBdBAJm2YE%2FJ%2B9LF1J7rts4Aojajr9BnSt1vy7Fd06XGAKJWA0j91uMl76uXUqt4eaUBpJgMIC2bAaT8GUCK3wwgKoQBpP3NAKLWGECybxUGkOIygLRsBpDyZwApfjOAqBAGkPY3A4haYwDJvlUYQIrLANKyGUDKnwGk%2BM0AokIYQNrfDCBqjQEk%2B1ZhACkuA0jLZgApfwaQ4jcDiAphAGl%2FM4CoNQaQ7FuFAaS4DCAtmwGk%2FBlAit8MICqEAaT9zQCi1hhAsm8VBpDiMoC0bAaQ8mcAKX4zgKgQBpD2NwOIWmMAyb5VGECKywDSshlAyp8BpPjNAKJCGEDa3wwgao0BJPtWYQApLgNIy2YAKX8GkOI3A4gKYQBpfzOAqDUGkOxbhQEk%2BwCyrXFPePvdz8KHPfqH%2FQd%2FuMMfOHThvmqXrQsvv9o9DB85ucW2O3buD6vXbArzFixv9Q%2B%2FZevu8O77n4duH30Rdu06eEkHkJMnv8p9f%2B7cuXDm7Nnv3O7AwcMF7%2FvIkWPhzJkzodw07joRTp76uuAAsn5jY5g6bX7u56HDJ4a9%2B4%2F94GuogaPHzoT5C1bkHlu2oi7s2XvkO7efNmNBQf2vek5tm7cdOWpqOHT4q%2B98jrriOItVF5dyADlw4FC7XnfixMlYr219%2FaHDR8LXX3%2Fbj8vJzj0nw%2FETZ9scQNj2k15Dcm3s%2BJnt6pdHjp7O7WNGdU18bFHNqnDw0MmfdJxoT21fCgHkyNFj4fTpb8eQtvb95q9L49vWbTuKfozlqH7rsYIDyPRZi2Jd9O1f%2BYPzprbMwZrP%2FZYs%2FTKsWl0fv69ZvLrgeps7f9n3Prd5667w5tufhI96Dmgxp%2Fyp2tp1m%2BOc9Ie2MYBkHEAOHzkVrrvp%2FrBp886weMmaUPHgC%2FHx5SvXx8f4fmfTgbCkdm04cfLrcNe9T8WwwOP8fFPnB%2BLE7L1uvcOsOUvitvyhd%2B85nAsgjz%2F1Ztw%2Bva55R6ADdrrh3lC3YVt832uuuycOXgQjioBtmDQyIWQwSq%2FlvY4dPxMLb%2Bu23XH7pcvryjqAVI6eGiZNmR0GDB4bJzdfDBwdho2YFOo3bf3ObVvDCT7frNmLwu49%2By547Mu6Td%2B5%2F45kwNht4Z%2BvmhGmzN1VUACpHF0VLvvFVbE%2FNW7fG%2F7hHy8PG%2BobY%2F9cuGhV7D%2F0X%2FoSfZV6%2BOsdj8W%2BRL8leHDifb9739i30kl6%2B459ufdge0JCU9PBuH16L57jMd5j9dqGGIbyA0j%2BY%2FRh3j%2F%2F2Onnv%2FjPq8OIyim5fXHiTl8ZVDhu3ptaZHuOn2OgTlIds205B5Dxk2b9pPunRqiBtm6bb%2BXquvjaL9fVt%2Bn19Q3bwqlTpwv6nZq%2FZ6mMn9UU%2Fun3VWHw%2BMY2BRD65Lr1W0PXZ94OEyZVx%2FM%2FP6faoN%2BmvrrvwPHYr3meWuBr2g%2Fn%2Fs63PxrHDerw08%2BH5gIIY1SaJPEzNcFX3pvxjJrYu%2B9obpJD3VKPqa45hl27D8XH6xt2tKhBapuvK1dtDA1bmuL3fOXnVKNpLEr7%2F7Juy0UVQFJgJkBUz1kcZs2uCbt2fzuGtLXvN38dNtZvCZOmzg7TZy64YOEtvz4KCez525Zb0L%2B6YlGcr23ZfrzNAeRvdz8Za4V6uK%2FLc7GvMwbQt6kpvqdPP9r19dwcjD5LraV%2BzVjI62772%2BNx%2B7TveyueDffc%2F0z8nkVm6pbXMddi%2F9RQWgCjJqgfvqeeqclHHn8t1jI%2FU3PpPalF5pyMSwsWrgwPP%2FpKfJz9pbGKbTk2jis9x%2FvyftRrqrmmpoOx5niOY%2BBrHE93H7qglvn%2B877D4znBANKBAgiTsPc%2F7HPBY737jYjJlA5EALjxLw%2BEAQPHxNXjqzvdFTtN%2Fgn66effDTNnL44n%2FSuvujUMHDwu3PLXh2Jg6NVnWJzI9fhkYBg1dlrcd%2FePB4QHHn4xN%2Flihfqz3sNy%2B3z%2B5W5h%2BsyF4c57ngrvftA7fDFgVLj1jsfC4KET4mDW5aHzIYnjo6B%2Bc8V1cWWM42TbyVPn%2FmAn%2B9WNs0PvkZtDn8otHaoNndQYNjVsC7t27w1Dhk8My5avjROcr746FQYOGZf7m44eNy1MmFwd3u3WJ66osm0KKYOHTYjb8PPi2lVhzLjp8fnmAWR45eQweeqceOJnmzHjp4ely9eG0WOnhSHDJ8TB4P3u%2FcLoiTUl%2F3eh3fXc8vB3%2FzouNgLk%2FS%2BtaHMAoR8Rjj%2F%2BdFD8npMjJ1uuLtCH6OtPPvtOePSJ18KUqnnhD3%2B6PU7cmfzTlx978o048eG5V177KAbl1974%2BIIaoK%2FfcEuXuC%2F6epq4cBLnfd5659PwzAvvxX5K3x89bnp49fUeMdCzUsRx9RswKr5P2i%2Ffs%2FJ0%2B51PxJ85rv4DR8dj52rhE0%2B%2FFSd21BjvzwmWAYPf%2Bf4Hng9jxs2Ix8l2rV3ZTAHkg34bS%2F63zm%2Fd%2B9WGR5%2F6KKyv3xlrgH67ecv22I%2BnTpsbBg8bH%2FbvPxh6fDIoPt9%2F0JjQu9%2FI0LD5%2FCQZ3Xr0D%2FMWLA1VM%2BbHiQ39fc68JWFb486wrm5TWLFyXRg1tiqsXrshjBw9Ne5z%2FcbNYVHNirj98pXrwsQp1WHtuvowbOSkuDiQrkqmAMJiAMfE18%2F6DI%2FHxEICdTohbzJVNX1e3P6td3uFnU174jGPGDUlbKw%2FX7vjJs4MH382OFSOqTpf0w3bQv9B48Ozrw0Kn4%2FYVNK%2FxYOvr8rV4M87VYfeI7e06RYs%2Bj4TCMYP%2Bi01x%2BSCcWPchFlx4kSfpRaoFyZLd9zVNS4UpACSzvm0v9z2SHjx5W5xn9QG4wkTCyZjvMeDj7wUXnrlwzBk2IT4GFcxOAaCAV%2BZ8BDqqTnGsj91ujOOGWzLXQBp0SvVNuPTC690i%2B9J7fMY5xLGTmqZ7dgnE0Hqjuf6fDGy1QDSb%2FS2ktdX8%2FZOz5nx%2FE8N7di5O%2FZhaoC6W7mqLtYS%2FZx%2ByzaMJfT5BYuWx%2F7KY01Ne8L4iTPj6%2FjbNA8gI0dNic%2FxM7XBz9z5QJ1h%2B%2FZdsT62bvu25qnThADKuDV3fm0YN2FGfJ7FOs6f1GbdhoZYx7zHhG%2FawUNHQs2SlbGeqLOx42fEnydXzQkffjI6fDq0ruT%2F9pddOyvW1t9fNiE8%2FPrK0OmBtgUQriQwRjH28G%2FDYjFXRujj1BZ18Mvf%2FDnWHHVEDVJ73PXCvxl1xzhz1dW35yb3hAnGOsYTQgABhPphP4ylvC%2Fj2kOPvhzHyjfe6hnHUJ7jMeZqP%2F%2Fl%2F8Xxie8nTp4d%2B0dagGOMzP89en42OF7J4bUrVm4IV%2Fz3TfF1HBt313Csz774flyE4PdNNffsi%2B%2FHmmZeyu917Y33xUBCbTMXZP74znu94hh5zfX3GEA6WgChU6Y%2FKI1JC388vidV0zG4usFJvWr6gtjR0y0hJGwGCTorJ2hOupyAeY59MsniD0%2FnYPLE9gQTnmNSlC6n02k5UaVjoGMxEIyfWJ0rhude%2BiD3fBqMOPkTQCgOwg8FQwf%2BoUt%2FHT2AgODRp39lqJ5TEydb4MSKr06dihMWMBnixDtj1sL4GCdkTroMHJxgGTA4gbO%2F5gGEAWPq9HlxwsYEjEnRRz0HhilVc%2BMgwsoUA9Ha%2BiMl%2F3f5sQGEEzEnXCY2r7%2FZM544OVnzPCc4vqcO6I%2BcrOnrrNKkK3f0N8IAEwxO6JzQUnjODyCc8Jjo07cZCDj58n7UBDXD6%2FmZfkujHuIxjqmKAZu6oA%2Bn%2FVIzPPar33aKqz2p36evKViwf07ErFCxLa9hgNi4aXusB7b7vtvHOnoAoT3%2FxtAwYfLc2B%2BZTBCWCdtMHt77sG%2FYu%2B9A7LcEdyYmTGBmz12c6%2FOpdl5%2F%2B9O43Qfd%2B8XXMNln8nT69Ok4ODIA8jxXHVnVZWLE%2BzHJIfQTanhu%2FsJluasSKYAQ8gkXe%2FZy1XdDrKnX3vok7o9jTNsTSLgNcuiIiTEEUZ%2BsAKfgg7TYwERpy9Yd4bM%2BleGN7lND75ENZR1ACM5MVKhFaoNJJ89xFZ06ZaJP%2FVGHTIzmzFvaIoCwmkroIAyw4sm%2BGC%2BYQKWxh5bGsEFDxsf98hzvxXiRaoTaZ6LGuEV9PvXcO3Ff6YpKqm1WZXmc8wE1xkICP%2FM7pQDCnQMsABCg2DfniHIMIG%2F1mBbHHPo6AfyLgWNiX2RhKgaSqbNjcOD7uvUNcWyh76dAT5BmYp%2B%2FEPbt2FMTa4OFLeqiZ68hMdQT%2FKmx4ye%2BvSJEfcyoXhgatzfFKxn5C3CpnlmAYz8Edup%2B1er1cVtu6WKRIW27fceuOO4xXrKwwPvyOsZYgtLM%2BVtL%2Fu%2F%2BYwIIVxmoBRbAUgBhsYx%2Fe%2Foj27G4xvmNOR1jBnXz52vvjn314cdejbfSM1ak%2FbJwxWvo%2F9RHCiC8jisov%2FuvG%2BJr2T%2BhgMCfFtvuvu%2Fp3HtyxYIaYexNt3AR8PMXvfPnnLPn1sb3S3XFV0I%2Fx8bic5qvMt%2Fr8tALcdwjNDHGMZ5SlxwDixRsx3Gl42HxzgDSwQIIt4tweZtJEJMsBgUGCX7mhMzEitCRLpVx8iWhpgBy%2Fc0VcaBIE7v%2F%2BUPneFJnsGGFKF0B4TXsh45Nh2OilSZxXJ6jeHhPVpzpuFwyo9ORlOk4t9z2cEzRHBOPU2D%2F%2Fh9%2FjAMK%2B6QTphVmOmU53oJ19uzZ0OeLyhgy%2BLph45a4aptWfMEJtlef4fFeWgIDQYKTOlc7CCCsMDHRYoBYWLM83u7BpOn48RPx9eyHgYPJ1f4Dh%2BJAz4l71Zr18WTNlY9Fi1eEw4ePxr%2FHxXALFqus9BlWSOinnAA5sXKy43ECCP0tBRBOpARrVnSaBxD6I%2FWS%2Fx4pgHCVMAUQLmv%2Fy7%2F9Pu6HEE844b2pDU6q3LPLYMH3BHu%2B0qdTMGIQYfWG73me902XqtNX3oegRC3xPY9RJ9Qqx87vQq0xaOSv6pbbLVhMPmqXrYmTHcLzmrUbQ6%2B%2BI2Jw%2BPDj%2FjFMMAGh78%2BsXhQDCLeKJEw8QLCmflIt8ThBnXDAYE3AOXr0eLwSyJVF%2Bj%2BTILZjf6zQHj5yNAYXJkbfFUC4H57jo6Y%2B7zvim%2FeryR1LCiD8TryWWtu3%2F2D8Ph1numLJJI798FkvVqLTYkS53ILVPIBQQ1yh4GduZ2TsSFcc6atcqeArV9ObB5D%2F%2FeNt8bWEBgIFAYTbrZhksMBA3dD3qRXqg7pmYYvJByuiLGixeMD%2BCDDUK5MiaoXaZBLFKiv9gCsY%2BbXNlXveg%2Ffk%2BBhveIxJFBNAfoffXnF9nNwwSWLhjX2W4y1YhOttjU2xrzF%2BpD7M34OrCPT9dCVj%2FYbNsS5TAGHM4QoDAYT6PHbseHivW9%2FcvnkdwWbQ0PHxc4i8JgUQggC1dUHNL10daz5diUlSnfTtPyq3HxbM0lh5PjiNPj%2Be9q%2BM2xKkuGLKcRN2GOcYO3nf%2FOBTjrdgURf8fQjZ9D0WjBmz6LM33%2FpgHOcIDNQL4wILMIwJzMe404TvuZWJSTvjF5P7dAWfAME%2BUgDh7hTma%2BkOF%2BZczBm5WpEW3hgfec9f%2F%2B7auA%2F2n8bSNN%2BjVjlWxmTGR4IC43SaK6YxjsVA5n%2BTpsyJx8uckv0TUioePB9AuEKTFuN4Hbc28%2FtzLmBhmzrnCieLfAaQDvghdO77Y3JPCuZnOiAn1XSf65ovG%2BIJl8DBxIqTdXotJ3cmeem1nPgZSFg1okOQltNnSdhP2jedJP8YSMd0Mjou26Tt0yDEyhMDDytgrOYyuDC54%2Bd03x%2BXAplwfd%2BHdjt6AAEnUk6K6RYSTvBcCcm%2Fn5WTLCdTggQn0vj9hoa4LQgvYDLEilV6HJzMuWrCSXvJ0tVhSS2fgzgRv3KPL9szgeL98m9jKdcPoRNM6bP0H05U9BX6O1cHWIWlr9CH6X9MdFhNou%2ByopTu%2BWZbXs%2B2TI444ee%2FB0E63cNOoE%2Bvy78XnOCRQkC6V5YrdakO6OvUBa9PdZU%2BLM8Jm%2FdIr0tfeR%2B25%2FdLn0nhGDix81qeo6byP0xfjgGEcM0kgduomMQw6WDyM23G%2FHhrBiuerHLSr%2Bnf9Gdub0qYFIFbQ7iiwUotCCpM%2FgkgbENIZ2U0dyvIjl1x8s%2BtIIQG9stVQ4J%2BuqLBrVYHDx6OV2TYH7dLUneEe37m%2FTimhH0RnKhJJmhMggg5PJaOM30ei9VkfieCDfVa6s%2BCFPoh9NSoufQZDCY8aQGLUMKVC2qAhSTqk%2Fqj73LFL10h5D1ZuaWlz4%2BwPZMjJiSMXemzgEw0eC9qnCvo6TYu9pU%2Bg8j%2BqRFqhTEqfX6DMEK9sK%2F82k5jVrqyzjFz7uD9OR4mdqkmGYOo9db%2BTTpqAOEqIv2SsYCwTw0w%2BU81Q99PYwiBZO%2FeA7G%2FUlvUDyFiz579cfGMPpuu6iG9jqsQ3NJInVBffOXKYf5nSQge7Iv3Y8Eg%2Fz%2BckuqE2iPQUyfpNXHbs2fjY4xlHAsYy6hhsNjG7ccsNnDu%2BL7%2FyEs5fAid%2FkldUEv0W%2FoqcyPmXIx99HH6NGMYn2tkbkZjYk7%2FpUZ4jn1x5Y864fE0Z0vjGLXD%2BJc%2Bo8F4w1yL%2BmEORg1SC%2FR%2FxiN%2BTgvMLEI3XwBjX9QQx51qnNpNn9vIH%2Bv4vdgfvyePcf5gDtqwpSkeD8%2BnsZDt%2BTfgefbHY%2Fw%2BvJ4rKa3dimwAKfP%2FDC8n9qzeq72tIweQH2v%2BwqUxjFzsSvGf4SWksFJTzP%2FyVEdqHTWAqGPyP8Pb%2FtZRA0ixcEWSST6LB%2BoY%2FxleJt9cfaSlcP9TN4IMV0hKXW8n29gMIEXm%2Fwfk0goglwr%2FPyDFbwYQFcIA0v52sQcQ%2FXj%2Bf0CybxUGkOIygLRsBpDyZwApfjOAqBAGkPY3A4haYwDJvlUYQIrLANKyGUDKnwGk%2BM0AokIYQNrfDCBqjQEk%2B1ZhACkuA0jLZgApfwaQ4jcDiAphAGl%2FM4CoNQaQ7FuFAaS4DCAtmwGk%2FBlAit8MICqEAaT9zQCi1hhAsm8VBpDiMoC0bAaQ8mcAKX4zgKgQBpD2NwOIWmMAyb5VGECKywDSshlAyp8BpPjNAKJCGEDa3wwgao0BJPtWYQApLgNIy2YAKX8GkOI3A4gKYQBpfzOAqDUGkOxbhQGk%2BAFkbu3%2BUNdwzPZNu%2Fy6agPIRRBABo1rLHlfuphal1dWGUDUZvQV%2Bkyp%2B205tivvXGAAUasBpHrxvpL31Uupde661ABSTD0GbQq3PFZry2t3PLMsnDN%2FlLXKqh0l70cXY1u%2F%2BWip%2F7QqE%2FSVUvfXcm2du9aGY8fPlPpPqA6s5%2BCGkvfTS7Ht6PgLA%2BUTQCRJkiSVPQOIJEmSpMwYQCRJkiRlxgAiSZIkKTMGEEmSJEmZMYBIkiRJyowBRJIkSVJmDCCSJEmSMmMAkSRJkpQZA4gkSZKkzBhAJEmSJGXGACJJkiQpMwYQSZIkSZkxgEiSJEnKjAFEkiRJUmYMIJIkSZIyYwCRJEmSlBkDiCRJkqTMGEAkSZIkZcYAIkmSJCkzBhBJkiRJmTGASJIkScqMAUSSJElSZgwgkiRJkjJjAJEkSZKUGQOIJEmSpMwYQCRJkiRlxgAiSZIkKTMGEEmSJEmZMYBIkiRJyowBRJIkSVJmDCCSJEmSMmMAkSRJkpQZA4gkSZKkzBhAJEmSJGXGACJJkiQpMwYQSZIkSZkxgEiSJEnKjAFEkiRJUmYMIJIkSZJCVnIB5P8BWQQN%2BSp%2BMlAAAAAASUVORK5CYII%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAyAAAABsCAYAAACSAtbiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAY10lEQVR4nO3dZ3NcVZ7H8XkD%2B2TfwD7Z2oe7VVtbzFIzO7MzU%2BzsUjvsDIPJjBlgyDIZTM45GmMMGAeck5yjnORs2XK2sWzLcpBtOeeAAz5b32NO05YAqUVzW21%2FP1WnJHXfvn1lnf8953fubfhZkCRJkqSf1os%2FS37iN5IkSZKkFw0gkiRJkrJiAJEkSZKUGQOIJEmSpMwYQCRJkiRlxgAiSZIkKTMGEEmSJEmZMYBIkiRJyowBRJIkSVJmDCCSJEmSMmMAkSRJkpQZA4gkSZKkzBhAJEmSJGXGACJJkiQpMwYQSZIkSZkxgEiSJEnKjAFEkiRJUmYMIJIkSZIyYwCRJEmSlBkDiCRJkqTMGEAkSZIkZcYAIkmSJCkzBhBJkiRJmTGASJIkScqMAUSSJElSZgwgkiRJkjJjAJEkSZKUGQOIJEmSpMwYQCRJkiRlxgAiSZIkKTMGEEmSJEmZMYBIkiRJyowBRJIkSVJmDCCSJEmSMmMAkSRJkpQZA4gkSZKkzBhAJEmSJGXGACJJkiQpMwYQSZIkSZkpnwDSY9CmcMtjtba8dsczy8K5c6X%2By%2BjHqKzaUfJ%2BdDG29ZuPlvpPqzJBXyl1fy3X1rlrbTh2%2FEyp%2F4TqwHoObih5P70U247dJ0MHVz4BpNMDNWFu7f5Q13DM9k27%2FLrqcOasCaScPfXe2jBoXGPJ%2B9LF1Lq8sipMm7%2B71H9alQn6Cn2m1P22HNuVdy4oh4mOSuj6hxaH6sX7St5XL6XWuevSsHTNwdDBlVcAaWg8EU5%2Bdc72Tfv1zXMMIBdBAJm2YE%2FJ%2B9LF1J7rts4Aojajr9BnSt1vy7Fd06XGAKJWA0j91uMl76uXUqt4eaUBpJgMIC2bAaT8GUCK3wwgKoQBpP3NAKLWGECybxUGkOIygLRsBpDyZwApfjOAqBAGkPY3A4haYwDJvlUYQIrLANKyGUDKnwGk%2BM0AokIYQNrfDCBqjQEk%2B1ZhACkuA0jLZgApfwaQ4jcDiAphAGl%2FM4CoNQaQ7FuFAaS4DCAtmwGk%2FBlAit8MICqEAaT9zQCi1hhAsm8VBpDiMoC0bAaQ8mcAKX4zgKgQBpD2NwOIWmMAyb5VGECKywDSshlAyp8BpPjNAKJCGEDa3wwgao0BJPtWYQApLgNIy2YAKX8GkOI3A4gKYQBpfzOAqDUGkOxbhQEk%2BwCyrXFPePvdz8KHPfqH%2FQd%2FuMMfOHThvmqXrQsvv9o9DB85ucW2O3buD6vXbArzFixv9Q%2B%2FZevu8O77n4duH30Rdu06eEkHkJMnv8p9f%2B7cuXDm7Nnv3O7AwcMF7%2FvIkWPhzJkzodw07joRTp76uuAAsn5jY5g6bX7u56HDJ4a9%2B4%2F94GuogaPHzoT5C1bkHlu2oi7s2XvkO7efNmNBQf2vek5tm7cdOWpqOHT4q%2B98jrriOItVF5dyADlw4FC7XnfixMlYr219%2FaHDR8LXX3%2Fbj8vJzj0nw%2FETZ9scQNj2k15Dcm3s%2BJnt6pdHjp7O7WNGdU18bFHNqnDw0MmfdJxoT21fCgHkyNFj4fTpb8eQtvb95q9L49vWbTuKfozlqH7rsYIDyPRZi2Jd9O1f%2BYPzprbMwZrP%2FZYs%2FTKsWl0fv69ZvLrgeps7f9n3Prd5667w5tufhI96Dmgxp%2Fyp2tp1m%2BOc9Ie2MYBkHEAOHzkVrrvp%2FrBp886weMmaUPHgC%2FHx5SvXx8f4fmfTgbCkdm04cfLrcNe9T8WwwOP8fFPnB%2BLE7L1uvcOsOUvitvyhd%2B85nAsgjz%2F1Ztw%2Bva55R6ADdrrh3lC3YVt832uuuycOXgQjioBtmDQyIWQwSq%2FlvY4dPxMLb%2Bu23XH7pcvryjqAVI6eGiZNmR0GDB4bJzdfDBwdho2YFOo3bf3ObVvDCT7frNmLwu49%2By547Mu6Td%2B5%2F45kwNht4Z%2BvmhGmzN1VUACpHF0VLvvFVbE%2FNW7fG%2F7hHy8PG%2BobY%2F9cuGhV7D%2F0X%2FoSfZV6%2BOsdj8W%2BRL8leHDifb9739i30kl6%2B459ufdge0JCU9PBuH16L57jMd5j9dqGGIbyA0j%2BY%2FRh3j%2F%2F2Onnv%2FjPq8OIyim5fXHiTl8ZVDhu3ptaZHuOn2OgTlIds205B5Dxk2b9pPunRqiBtm6bb%2BXquvjaL9fVt%2Bn19Q3bwqlTpwv6nZq%2FZ6mMn9UU%2Fun3VWHw%2BMY2BRD65Lr1W0PXZ94OEyZVx%2FM%2FP6faoN%2BmvrrvwPHYr3meWuBr2g%2Fn%2Fs63PxrHDerw08%2BH5gIIY1SaJPEzNcFX3pvxjJrYu%2B9obpJD3VKPqa45hl27D8XH6xt2tKhBapuvK1dtDA1bmuL3fOXnVKNpLEr7%2F7Juy0UVQFJgJkBUz1kcZs2uCbt2fzuGtLXvN38dNtZvCZOmzg7TZy64YOEtvz4KCez525Zb0L%2B6YlGcr23ZfrzNAeRvdz8Za4V6uK%2FLc7GvMwbQt6kpvqdPP9r19dwcjD5LraV%2BzVjI62772%2BNx%2B7TveyueDffc%2F0z8nkVm6pbXMddi%2F9RQWgCjJqgfvqeeqclHHn8t1jI%2FU3PpPalF5pyMSwsWrgwPP%2FpKfJz9pbGKbTk2jis9x%2FvyftRrqrmmpoOx5niOY%2BBrHE93H7qglvn%2B877D4znBANKBAgiTsPc%2F7HPBY737jYjJlA5EALjxLw%2BEAQPHxNXjqzvdFTtN%2Fgn66effDTNnL44n%2FSuvujUMHDwu3PLXh2Jg6NVnWJzI9fhkYBg1dlrcd%2FePB4QHHn4xN%2Flihfqz3sNy%2B3z%2B5W5h%2BsyF4c57ngrvftA7fDFgVLj1jsfC4KET4mDW5aHzIYnjo6B%2Bc8V1cWWM42TbyVPn%2FmAn%2B9WNs0PvkZtDn8otHaoNndQYNjVsC7t27w1Dhk8My5avjROcr746FQYOGZf7m44eNy1MmFwd3u3WJ66osm0KKYOHTYjb8PPi2lVhzLjp8fnmAWR45eQweeqceOJnmzHjp4ely9eG0WOnhSHDJ8TB4P3u%2FcLoiTUl%2F3eh3fXc8vB3%2FzouNgLk%2FS%2BtaHMAoR8Rjj%2F%2BdFD8npMjJ1uuLtCH6OtPPvtOePSJ18KUqnnhD3%2B6PU7cmfzTlx978o048eG5V177KAbl1974%2BIIaoK%2FfcEuXuC%2F6epq4cBLnfd5659PwzAvvxX5K3x89bnp49fUeMdCzUsRx9RswKr5P2i%2Ffs%2FJ0%2B51PxJ85rv4DR8dj52rhE0%2B%2FFSd21BjvzwmWAYPf%2Bf4Hng9jxs2Ix8l2rV3ZTAHkg34bS%2F63zm%2Fd%2B9WGR5%2F6KKyv3xlrgH67ecv22I%2BnTpsbBg8bH%2FbvPxh6fDIoPt9%2F0JjQu9%2FI0LD5%2FCQZ3Xr0D%2FMWLA1VM%2BbHiQ39fc68JWFb486wrm5TWLFyXRg1tiqsXrshjBw9Ne5z%2FcbNYVHNirj98pXrwsQp1WHtuvowbOSkuDiQrkqmAMJiAMfE18%2F6DI%2FHxEICdTohbzJVNX1e3P6td3uFnU174jGPGDUlbKw%2FX7vjJs4MH382OFSOqTpf0w3bQv9B48Ozrw0Kn4%2FYVNK%2FxYOvr8rV4M87VYfeI7e06RYs%2Bj4TCMYP%2Bi01x%2BSCcWPchFlx4kSfpRaoFyZLd9zVNS4UpACSzvm0v9z2SHjx5W5xn9QG4wkTCyZjvMeDj7wUXnrlwzBk2IT4GFcxOAaCAV%2BZ8BDqqTnGsj91ujOOGWzLXQBp0SvVNuPTC690i%2B9J7fMY5xLGTmqZ7dgnE0Hqjuf6fDGy1QDSb%2FS2ktdX8%2FZOz5nx%2FE8N7di5O%2FZhaoC6W7mqLtYS%2FZx%2ByzaMJfT5BYuWx%2F7KY01Ne8L4iTPj6%2FjbNA8gI0dNic%2FxM7XBz9z5QJ1h%2B%2FZdsT62bvu25qnThADKuDV3fm0YN2FGfJ7FOs6f1GbdhoZYx7zHhG%2FawUNHQs2SlbGeqLOx42fEnydXzQkffjI6fDq0ruT%2F9pddOyvW1t9fNiE8%2FPrK0OmBtgUQriQwRjH28G%2FDYjFXRujj1BZ18Mvf%2FDnWHHVEDVJ73PXCvxl1xzhz1dW35yb3hAnGOsYTQgABhPphP4ylvC%2Fj2kOPvhzHyjfe6hnHUJ7jMeZqP%2F%2Fl%2F8Xxie8nTp4d%2B0dagGOMzP89en42OF7J4bUrVm4IV%2Fz3TfF1HBt313Csz774flyE4PdNNffsi%2B%2FHmmZeyu917Y33xUBCbTMXZP74znu94hh5zfX3GEA6WgChU6Y%2FKI1JC388vidV0zG4usFJvWr6gtjR0y0hJGwGCTorJ2hOupyAeY59MsniD0%2FnYPLE9gQTnmNSlC6n02k5UaVjoGMxEIyfWJ0rhude%2BiD3fBqMOPkTQCgOwg8FQwf%2BoUt%2FHT2AgODRp39lqJ5TEydb4MSKr06dihMWMBnixDtj1sL4GCdkTroMHJxgGTA4gbO%2F5gGEAWPq9HlxwsYEjEnRRz0HhilVc%2BMgwsoUA9Ha%2BiMl%2F3f5sQGEEzEnXCY2r7%2FZM544OVnzPCc4vqcO6I%2BcrOnrrNKkK3f0N8IAEwxO6JzQUnjODyCc8Jjo07cZCDj58n7UBDXD6%2FmZfkujHuIxjqmKAZu6oA%2Bn%2FVIzPPar33aKqz2p36evKViwf07ErFCxLa9hgNi4aXusB7b7vtvHOnoAoT3%2FxtAwYfLc2B%2BZTBCWCdtMHt77sG%2FYu%2B9A7LcEdyYmTGBmz12c6%2FOpdl5%2F%2B9O43Qfd%2B8XXMNln8nT69Ok4ODIA8jxXHVnVZWLE%2BzHJIfQTanhu%2FsJluasSKYAQ8gkXe%2FZy1XdDrKnX3vok7o9jTNsTSLgNcuiIiTEEUZ%2BsAKfgg7TYwERpy9Yd4bM%2BleGN7lND75ENZR1ACM5MVKhFaoNJJ89xFZ06ZaJP%2FVGHTIzmzFvaIoCwmkroIAyw4sm%2BGC%2BYQKWxh5bGsEFDxsf98hzvxXiRaoTaZ6LGuEV9PvXcO3Ff6YpKqm1WZXmc8wE1xkICP%2FM7pQDCnQMsABCg2DfniHIMIG%2F1mBbHHPo6AfyLgWNiX2RhKgaSqbNjcOD7uvUNcWyh76dAT5BmYp%2B%2FEPbt2FMTa4OFLeqiZ68hMdQT%2FKmx4ye%2BvSJEfcyoXhgatzfFKxn5C3CpnlmAYz8Edup%2B1er1cVtu6WKRIW27fceuOO4xXrKwwPvyOsZYgtLM%2BVtL%2Fu%2F%2BYwIIVxmoBRbAUgBhsYx%2Fe%2Foj27G4xvmNOR1jBnXz52vvjn314cdejbfSM1ak%2FbJwxWvo%2F9RHCiC8jisov%2FuvG%2BJr2T%2BhgMCfFtvuvu%2Fp3HtyxYIaYexNt3AR8PMXvfPnnLPn1sb3S3XFV0I%2Fx8bic5qvMt%2Fr8tALcdwjNDHGMZ5SlxwDixRsx3Gl42HxzgDSwQIIt4tweZtJEJMsBgUGCX7mhMzEitCRLpVx8iWhpgBy%2Fc0VcaBIE7v%2F%2BUPneFJnsGGFKF0B4TXsh45Nh2OilSZxXJ6jeHhPVpzpuFwyo9ORlOk4t9z2cEzRHBOPU2D%2F%2Fh9%2FjAMK%2B6QTphVmOmU53oJ19uzZ0OeLyhgy%2BLph45a4aptWfMEJtlef4fFeWgIDQYKTOlc7CCCsMDHRYoBYWLM83u7BpOn48RPx9eyHgYPJ1f4Dh%2BJAz4l71Zr18WTNlY9Fi1eEw4ePxr%2FHxXALFqus9BlWSOinnAA5sXKy43ECCP0tBRBOpARrVnSaBxD6I%2FWS%2Fx4pgHCVMAUQLmv%2Fy7%2F9Pu6HEE844b2pDU6q3LPLYMH3BHu%2B0qdTMGIQYfWG73me902XqtNX3oegRC3xPY9RJ9Qqx87vQq0xaOSv6pbbLVhMPmqXrYmTHcLzmrUbQ6%2B%2BI2Jw%2BPDj%2FjFMMAGh78%2BsXhQDCLeKJEw8QLCmflIt8ThBnXDAYE3AOXr0eLwSyJVF%2Bj%2BTILZjf6zQHj5yNAYXJkbfFUC4H57jo6Y%2B7zvim%2FeryR1LCiD8TryWWtu3%2F2D8Ph1numLJJI798FkvVqLTYkS53ILVPIBQQ1yh4GduZ2TsSFcc6atcqeArV9ObB5D%2F%2FeNt8bWEBgIFAYTbrZhksMBA3dD3qRXqg7pmYYvJByuiLGixeMD%2BCDDUK5MiaoXaZBLFKiv9gCsY%2BbXNlXveg%2Ffk%2BBhveIxJFBNAfoffXnF9nNwwSWLhjX2W4y1YhOttjU2xrzF%2BpD7M34OrCPT9dCVj%2FYbNsS5TAGHM4QoDAYT6PHbseHivW9%2FcvnkdwWbQ0PHxc4i8JgUQggC1dUHNL10daz5diUlSnfTtPyq3HxbM0lh5PjiNPj%2Be9q%2BM2xKkuGLKcRN2GOcYO3nf%2FOBTjrdgURf8fQjZ9D0WjBmz6LM33%2FpgHOcIDNQL4wILMIwJzMe404TvuZWJSTvjF5P7dAWfAME%2BUgDh7hTma%2BkOF%2BZczBm5WpEW3hgfec9f%2F%2B7auA%2F2n8bSNN%2BjVjlWxmTGR4IC43SaK6YxjsVA5n%2BTpsyJx8uckv0TUioePB9AuEKTFuN4Hbc28%2FtzLmBhmzrnCieLfAaQDvghdO77Y3JPCuZnOiAn1XSf65ovG%2BIJl8DBxIqTdXotJ3cmeem1nPgZSFg1okOQltNnSdhP2jedJP8YSMd0Mjou26Tt0yDEyhMDDytgrOYyuDC54%2Bd03x%2BXAplwfd%2BHdjt6AAEnUk6K6RYSTvBcCcm%2Fn5WTLCdTggQn0vj9hoa4LQgvYDLEilV6HJzMuWrCSXvJ0tVhSS2fgzgRv3KPL9szgeL98m9jKdcPoRNM6bP0H05U9BX6O1cHWIWlr9CH6X9MdFhNou%2ByopTu%2BWZbXs%2B2TI444ee%2FB0E63cNOoE%2Bvy78XnOCRQkC6V5YrdakO6OvUBa9PdZU%2BLM8Jm%2FdIr0tfeR%2B25%2FdLn0nhGDix81qeo6byP0xfjgGEcM0kgduomMQw6WDyM23G%2FHhrBiuerHLSr%2Bnf9Gdub0qYFIFbQ7iiwUotCCpM%2FgkgbENIZ2U0dyvIjl1x8s%2BtIIQG9stVQ4J%2BuqLBrVYHDx6OV2TYH7dLUneEe37m%2FTimhH0RnKhJJmhMggg5PJaOM30ei9VkfieCDfVa6s%2BCFPoh9NSoufQZDCY8aQGLUMKVC2qAhSTqk%2Fqj73LFL10h5D1ZuaWlz4%2BwPZMjJiSMXemzgEw0eC9qnCvo6TYu9pU%2Bg8j%2BqRFqhTEqfX6DMEK9sK%2F82k5jVrqyzjFz7uD9OR4mdqkmGYOo9db%2BTTpqAOEqIv2SsYCwTw0w%2BU81Q99PYwiBZO%2FeA7G%2FUlvUDyFiz579cfGMPpuu6iG9jqsQ3NJInVBffOXKYf5nSQge7Iv3Y8Eg%2Fz%2BckuqE2iPQUyfpNXHbs2fjY4xlHAsYy6hhsNjG7ccsNnDu%2BL7%2FyEs5fAid%2FkldUEv0W%2FoqcyPmXIx99HH6NGMYn2tkbkZjYk7%2FpUZ4jn1x5Y864fE0Z0vjGLXD%2BJc%2Bo8F4w1yL%2BmEORg1SC%2FR%2FxiN%2BTgvMLEI3XwBjX9QQx51qnNpNn9vIH%2Bv4vdgfvyePcf5gDtqwpSkeD8%2BnsZDt%2BTfgefbHY%2Fw%2BvJ4rKa3dimwAKfP%2FDC8n9qzeq72tIweQH2v%2BwqUxjFzsSvGf4SWksFJTzP%2FyVEdqHTWAqGPyP8Pb%2FtZRA0ixcEWSST6LB%2BoY%2FxleJt9cfaSlcP9TN4IMV0hKXW8n29gMIEXm%2Fwfk0goglwr%2FPyDFbwYQFcIA0v52sQcQ%2FXj%2Bf0CybxUGkOIygLRsBpDyZwApfjOAqBAGkPY3A4haYwDJvlUYQIrLANKyGUDKnwGk%2BM0AokIYQNrfDCBqjQEk%2B1ZhACkuA0jLZgApfwaQ4jcDiAphAGl%2FM4CoNQaQ7FuFAaS4DCAtmwGk%2FBlAit8MICqEAaT9zQCi1hhAsm8VBpDiMoC0bAaQ8mcAKX4zgKgQBpD2NwOIWmMAyb5VGECKywDSshlAyp8BpPjNAKJCGEDa3wwgao0BJPtWYQApLgNIy2YAKX8GkOI3A4gKYQBpfzOAqDUGkOxbhQGk%2BAFkbu3%2BUNdwzPZNu%2Fy6agPIRRBABo1rLHlfuphal1dWGUDUZvQV%2Bkyp%2B205tivvXGAAUasBpHrxvpL31Uupde661ABSTD0GbQq3PFZry2t3PLMsnDN%2FlLXKqh0l70cXY1u%2F%2BWip%2F7QqE%2FSVUvfXcm2du9aGY8fPlPpPqA6s5%2BCGkvfTS7Ht6PgLA%2BUTQCRJkiSVPQOIJEmSpMwYQCRJkiRlxgAiSZIkKTMGEEmSJEmZMYBIkiRJyowBRJIkSVJmDCCSJEmSMmMAkSRJkpQZA4gkSZKkzBhAJEmSJGXGACJJkiQpMwYQSZIkSZkxgEiSJEnKjAFEkiRJUmYMIJIkSZIyYwCRJEmSlBkDiCRJkqTMGEAkSZIkZcYAIkmSJCkzBhBJkiRJmTGASJIkScqMAUSSJElSZgwgkiRJkjJjAJEkSZKUGQOIJEmSpMwYQCRJkiRlxgAiSZIkKTMGEEmSJEmZMYBIkiRJyowBRJIkSVJmDCCSJEmSMmMAkSRJkpQZA4gkSZKkzBhAJEmSJGXGACJJkiQpMwYQSZIkSZkxgEiSJEnKjAFEkiRJUmYMIJIkSZJCVnIB5P8BWQQN%2BSp%2BMlAAAAAASUVORK5CYII%3D" alt="diagram" width="800" height="108"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The 30-day lag exists because most teams check costs reactively. Native cloud tools can collapse that gap to hours — but only if configured correctly.&lt;/p&gt;




&lt;h2&gt;
  
  
  How AWS Cost Anomaly Detection Works
&lt;/h2&gt;

&lt;p&gt;AWS Cost Anomaly Detection is a free service in the Cost Management suite. It uses machine learning to establish a baseline spend pattern per service, account, cost category, or tag group, then alerts when actual spend deviates beyond a threshold you define.&lt;/p&gt;

&lt;p&gt;There are four monitor types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS services&lt;/strong&gt;: monitors spend per service (EC2, S3, RDS, etc.) across your account&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linked accounts&lt;/strong&gt;: monitors per member account in an AWS Organization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost categories&lt;/strong&gt;: monitors custom groupings you define (e.g., team:backend, env:production)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost allocation tags&lt;/strong&gt;: monitors spend attributed to specific tag key-value pairs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each monitor feeds into one or more alert subscriptions. Subscriptions define the threshold and notification channel (email, SNS topic). Thresholds can be absolute (alert if anomaly exceeds $100) or relative (alert if spend exceeds 20% of expected).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAyAAAAMtCAYAAABn7hW2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nOzdd3hU1d728ffv53nOsWM%2F9t6PVEEFEQUFsSEiNuy9IKJiV8SOHXvH3um999577y10Qne9173iGvbMJCEJk12%2Fn%2Bv6XZDMZGZlMnvPvvcq%2B%2F8ZAAAAAPDHO%2F%2FPpycCAAAAAAIIAAAAAN8QQAAAAAD4hgACAAAAwDcEEAAAAAC%2BIYAAAAAA8A0BBAAAAIBvCCAAAAAAfEMAAQAAAOAbAggAAAAA3xBAAAAAAPiGAAIAAADANwQQAAAAAL4hgAAAAADwDQEEAAAAgG8IIAAAAAB8QwABAAAA4BsCCAAAAADfEEAAAAAA%2BIYAAgAAAMA3BBAAAAAAviGAAAAAAPANAQQAAACAbwggAAAAAHxDAAEAAADgGwIIAAAAAN8QQAAAAAD4hgACAAAAwDcEEAAAAAC%2BIYAAAAAA8A0BBAAAAIBvCCAAAAAAfEMAAQAAAOAbAggAAAAA3xBAAAAAAPiGAAIAAADANwQQAAAAAL4hgAAAAADwDQEEAAAAgG8IIAAAAAB8QwABAAAA4BsCCAAAAADfEEAAAAAA%2BIYAAgAAAMA3BBAAAAAAviGAAAAAAPANAQQAAACAbwggAAAAAHxDAAEAAADgGwIIAAAAAN8QQAAAAAD4hgACAAAAwDcEEAAAAAC%2BIYAAAAAA8A0BBAAAAIBvCCAAAAAAfEMAAQAAAOAbAggAAAAA3xBAAAAAAPiGAAIAAADANwQQAAAAAL4hgAAAAADwDQEEAAAAgG8IIAAAAAB8QwABAAAA4BsCCAAAAADfEEAAAAAA%2BIYAAgAAAMA3BBAAAAAAviGAAAAAAPANAQQAAACAbwggAAAAAHxDAAEAAADgGwIIAAAAAN8QQAAAAAD4hgACAAAAwDcEEAAAAAC%2BIYAAAAAA8A0BBAAAAIBvCCAAAAAAfEMAAQAAAOAbAggAAAAA3xBAAAAAAPiGAAIAAADANwQQAAAAAL4hgAAAAADwDQEEAAAAgG8IIAAAAAB8QwABAAAA4BsCCAAAAADfEEAAAAAA%2BIYAAgAAAMA3BBAAAAAAviGAAAAAAPANAQQAAACAbwggAAAAAHxDAAEAAADgGwIIAAAAAN8QQAAAAAD4hgACAAAAwDcEEAAAAAC%2BIYAAAAAA8A0BBAD6j1xpbmw5iqJiVa3aTjY7d%2F4d9OYFAJkIIADQtMVI86%2F%2FdqCo2NXsBRuD3rwAIBMBBACubT7CHqzd%2FtRY8%2FFPcykq8nXIuV3se3rGvA1Bb14AkIkAAgAugHz1x3yzecvfFBX5Orp2dwIIgLAigAAAAYSKWxFAAIQYAQQACCBU3IoAAiDECCAAQACh4lYEEAAhRgABAAIIFbcigAAIMQIIABBAqLgVAQRAiBFAAIAAQsWtCCAAQowAAgAEECpuRQABEGIEEAAggFBxKwIIgBAjgAAAAYSKWxFAAIQYAQQACCBU3IoAAiDECCAAQACh4lYEEAAhRgABAAIIFbcigAAIMQIIABBAqLgVAQRAiBFAAIAAQsWtCCAAQowAAgAEECpuRQABEGIEEAAggFBxKwIIgBAjgAAAAYSKWxFAAIQYAQQACCBU3IoAAiDECCAAQACh4lYEEAAhRgABAAIIFbcigAAIMQIIABBAqLgVAQRAiBFAAIAAQsWtCCAAQowAAgAEECpuRQABEGIEEAAggFBxKwIIgBAjgAAAAYSKWxFAAIQYAQQAggogt9%2F1hKnX4CYzctTkwA9Yy1rXXHev%2BezLn8v880OGjrevgWrOvKWF3qdP%2FxGp%2ByxfsS6n7XfPP3nq3MBfy1wWAQRAiBFAACCIADJ2%2FHTzP3sdZ%2BvhFi8GfsBa1jr0yErmyWffLPPPd%2BzcL%2FU6vPXuF4Xe57Y7H0%2FdZ%2FGSvJy2v1ffYebk0y8w48bPsF%2F%2F0aGXOfiIimbq9Gj3hhFAAIQYAQQAggggjz7xij3QrX%2F5LeY%2Fx1Q16zdsC%2FygNcgAohBw3gWNsm5ft36rfZ1OOq1WuQSQzPr51672eSZNmRP4a7snRQABEGIEEADwO4Bs2LjdHHncOeae%2B5827b%2FvYA94%2F%2BrYJ6uH5PGnXjcrVq43737wjbm68d2myQ0PmF9%2B65Z2v%2FzNO833P3YyV197t7nokhvM%2FQ89Z4aPmJh2nxdav2u6dh9o%2Bg4YaW685RHTuOl9qcf57oeO9msNpdLjeH9OoeiLr38119%2F8kGl41W3m3geeMf0Hjio0gKxctcG2t0Onvmm3b8rfYZ56rq356ZcuxQaQlq1eNf%2B79%2FFmxqyFabfrddH3Wzz%2BclYAmT5zoXmw%2BfPmwouvM9fd%2BKB5%2F8Nv04Jcz95DzEsvf2Bfw%2BdffMdcfvXt5ubbHrWvg7uPejpeff0js2DhCtO952D7Oup57r7vKdOpS7%2FU%2FfR76fWvU7epva13v%2BFp7Xyv3bfmtz96mDHjptnX2P09J06eY%2F8mCpp6jb9p%2F4f9mxFAACQYAQQA%2FA4gf3bobQ9y%2Bw0YZVat3mT2P%2Bh00%2FSmB9Puo4NZ3afmhY1N5XMa2GFIp599kf2eft7d75GWbcy%2F9zvRHhw%2F%2Ffxb5oI615q99j%2FJnsl39znkyIq2d%2BGo48%2BxB%2BCVqtU3%2F7fPCfaA%2BLCjKpubbm1hqp57uX1sDUFyP6fgse%2BBp5q77n3SPPPC2%2Fbg%2B1%2F7nph2YO7tAdHjVq95Zdb8DT3uDz91KjaAKCAdeNhZ5vU3P0m7vdltj5rza19j2r7zeVoA0YG%2Bekb%2BW%2FkS25ukMHfAwaebuvVvTIWQNq%2B0Mwf952xzVuV69nW59Y7HzNHHVzd7H3CymTBxVtrzjxg5yYYkPZe%2BvuzKW0377%2F6y93mj7ac2BF3R6A4bphpccav9ut3H36XaWaPWVfZn9Hocf%2FL59vfVc1Q45AwbPvT63dDsYfv6tW7zPgEEQJIRQADA7wCiHodTzqidOhOu8LHfgafZM%2FWZAeSqa%2B4yGzdtt9%2FTBGwd0OqgXF8PGjLW3uft975K%2FZweUwfKhx9dxaxZuzkVQHRwP3vuEvv1yryN9kD4oMP%2Fm5r4raFO%2BhlNjHdf71PhFPPm25%2Bn9WaceuaFNpAUFkAUHnRgrp4Jd7vmt%2Bh5Vq%2FNLzaAaC6GglC1865I3bZ23Rb7s5ob8uZbn6UFEAWK0%2F9bJ%2FU7qnr0GmLv8%2FFnP6YCiOtdcfcZPXaa%2FZ56PTIDSGFDsKbNWGADnnp3vO2%2B855W9m%2Fm2qMAop9TD4e7j14XvT563dz3HnvyNRskCSAAEowAAgB%2BBpAlS1fbM%2FDPtX4n9b1ff%2B9uD169q0m5AKIDc%2B%2FPn1vransGXv%2FXsCT1nuSt2ZR2H%2Fez6mFxAeSGW5qn3eeEU8634cb7vSo1Gqa%2Bp2FiGp7kDvDVq6BhYRo6pjP5hQUQBRz1rCgsuMByzAk1UqFmdwHE9Qy5Fal%2B%2F6unfTyFJG8AmTd%2Fuf2%2Fex5vKdg1anJPWgBZtHhVWkCrcOiZpsVjbUoUQBTA9PXc%2BcvSnseFvx9%2F7pwKIPrbeO%2Bjng4FMv07f8Hycn9vEUAARAQBBAD8DCDvvP%2B1PXDVkCe3tGzti5rY72kOR2aImDhpdtrP6z6XXHaz%2Fb8OtDUEKfM5NAdEP6tg4wKItxdApZ4MDevKDCBXNroz9fWAQaNtb42GFKnHRAfu6oEpKoCoLr70htRkcgUgtUNzMUoSQNyEcwUH3aa5FHptbBDwBBDN4dD%2F9bOZj1en3vWmVp3GqQCi3ovMORdHHFvNNG%2FRukQB5IGHn7NtynweBRLdT3M%2FXADRMDjvfTS8Tq%2BVAqfue3aVS21Pyqw5iwkgAJKMAAIAfgYQDTHSwb8ORL2l%2BRU62z9z9qK0AJJ5fQpvANF8jjMqXpz1HN16DLI%2FqwDhAkjmSlVqQ2bPhDeA6Nokmkui5%2Fu2%2FZ92zoV6QdT%2B4gKIenF01l8H2TrIP%2B6k89KGIBUXQPS12qS5JOp50bAxTcDPDCBqW%2BZcGFeaL6PQ5AKIhpFl3qc0AUR%2FG7WjqGWU3VwbBRBNhC%2Fsd1Sbv%2F72d9sLpQB37Inn2mFwBBAACUUAAQC%2FAoibf6BekMzbFBZ02yuvfVjiAKKhPTq7vnDRyrT7aMKzzvwvXbqmzAFEq0ap10Nn8d3tmotS3BAsN09FcyM0dEkH2k88%2FUaxr0lmAOnSbYD9%2BuVXP7TPr%2BFWmQFEB%2B8Ka5oQnnmgr9Ck3z9XAUSBSl%2B764S4%2BuCj9vb74yfMLDKA6PkV3rzfc7%2BfC4cEEAAJRAABAL8CiOYd6AA5MzCoNExIQ520YlNJA4iWeFUA0dAfN1dDQ7Y0mdwbEsoSQDSx3TuPRBPktZysvnft9fcXGUBUOhBXGwo7cN9dANHcE%2F2sgoOGU7n7ZU5CVy%2BHhkZpLob7OS2Pq59zFxEsSwDRKmD6Wkvy6m%2Bi%2BSOaCK%2BhZW6RAM110eunXiv3mIUFELVHc23cpHw9npYFLuo9QAABkBAEEADwI4Bo%2BJIuOKhrURR1Hy0nq4NfzeEoSQBRadUl9TjoQFsTsNVroKV7Ndl9TwKIruuhoVB6vBNPrWkfX0O%2BdOCu3gdNgC8qgGjyuNquJW1397pkBhCVltTV97zL3GYGEAUDLfmr72miu8KIhjfpuibuZ8oSQDRZXEv36nutnnkjdR%2BFEAUHXTBRoU%2FzOdxwuaICiOaJKFTq%2FmdWqmvbqf%2FreiXlGT4IIABCjgACAH4FEJ2ZX7asYFhUYaWhRbqPzrRr6JP%2Bn3mFdA1JcsOSXOkierqgoYYLqccic86FzsC74ViuNEfDuzqUSqtNeVdr0qRwHXxr%2FoJ6W9zvoYvwuV4GXTgw87HdBO0vv%2Fltt6%2BLVvDyrral0u%2Bv72kZXu%2FQLn3PLUms0v81wf2jT3%2Bw1%2FDwhi7VsuVr7TK6mc%2BpNrv7uuf3Ppd%2Bn4GDx6T1UujvphWvPvn8J%2Fuc6nHJfO30d8h8Li0%2FrGFXWhpY1wbJvNAiAQRAAhFAAMDv64DEvTR%2FQxc4LOraH1T5FwEEQIgRQACAAJKb0vwJLQ2sIWGZVzSn%2FC0CCIAQI4AAAAEkN9Wn%2Fwh7lXatEFXc0rtU%2BRcBBECIEUAAgABCxa0IIABCjAACAAQQKm5FAAEQYgQQACCAUHErAgiAECOAAAABhIpbEUAAhBgBBAAIIFTcigACIMQIIABAAKHiVgQQACFGAAEAAggVtyKAAAgxAggAEECouBUBBECIEUAAgABCxa0IIABCjAACAAQQKm5FAAEQYgQQACCAUHErAgiAECOAAAABhIpbEUAAhBgBBAAIIFTcigACIMQIIABAAKHiVgQQACFGAAEAAggVtyKAAAgxAggAEECouBUBBECIEUAAgABCxa0IIABCjAACAAQQKm5FAAEQYgQQACCAUHErAgiAECOAAAABhIpbEUAAhBgBBAAIIFTcigACIMQIIABAAKHiVgQQACFGAAEAAggVtyKAAAgxAggAuABy5X3DTau3plBU5OvA6p0JIADCigACIHnWb9xuvvx9nql3%2B2Dz1NuTzY0tR9mDNYqKW81fvCnozQ0AMhFAACTD338bM3DUKnPHM2NMhXMKzg6rqjfpb6bOXm%2Bee2%2BqeebdKVQ51r0vjDONHxoeeDviWDWa9E%2B9pw%2Bo2smcf8MA88rHM4Le7ACgMAQQAPG2aNlm89pnM8zpl%2FVOOzNcrXE%2F0%2B772WbNum1BNzExLmw2yL72YyavCbopsbNh03bz9tezzBkNd73P%2F312B1P%2FziHm956LzbbtO4NuIgA4BBAA8bN1207Tpf8yO7Rqn0odUwdkh57X1TzQerwZMjYv6CYm0jnX9rN%2FB%2FVEofx6%2BvoMW2Hf%2B%2FtW7pR67x9zYXfbUzJvEUOyAASOAAIgPjSUSgdZR9Xuljrw2qtiR1On2SDzxW%2FzTP7mHUE3MdEIIP5atmqLafvlTHNK%2FV5p28Nldw%2B1vSLbd%2FwddBMBJBMBBEC0rduwzYYLhQzvEKsT6%2FWwYWQuZ3xDgwASjJ07%2F071inh7BI%2B%2FuGAbWbgsP%2BgmAkgWAgiAaB5QaRiVhlN5J5TvX7WTPcjS8KsdOzm7GzYEkOAtXr7Z9ooooLvtZu9%2FekW03WgIFwCUMwIIgOhYsCTfvPThNHPSJT3Tejtq3jDAfPbLPNsbgvAigIRrntRvPRabS%2B8YYieru23prCt6m3e%2FnWVWszgDgPJDAAEQbjuKGD5yeM2CCeXjp60LuokoIQJIOM2av9EOxTrygm5pvYm3Pz2G7QtAeSCAAAgnrdbzwgdTzXEX9UibQHvV%2FcNMhz5LWVY0gggg4Za%2FZYf5ruMC26Po7WG8%2BNZBtreEbQ5AjhBAAISzt0Pj0t0BkEIIS4hGHwEkOsZOWVswx6rarjlWx9YpWMpX19YBgD1AAAEQPB3QaGLsSfV2ze1gudD4IYBEz4q8gqV8T75017a5X5WCxR50sgAAyoAAAiBcvR1uadD5i%2BntiBsCSLRXntMqWTop4J20XuO6%2FlxjB0BpEUAA%2BGv2go2mzUfT0pYBpbcjGQgg8TBj3gbz6GsTzYHVdw3POuz8rvZ7WqkOAHaDAAKg%2FGnyqsJFg7vSl%2FzUcrovfzKdMeUJQQCJlzXrtpn3vp1tTr%2Bsd9o1RZq2GGkG8DcGUDQCCIDys%2Fyf8ePe63bQ25FcBJD4X2ndO5yyepN%2BdnjW5q2sngUgDQEEQO4NHpNnbn58lNm3cqfUwcgJdXuYVz6dbq%2FEjGQigMTfzHkbTYvXJpqDa3RJ2%2FZ1IkI9JgBAAAGQMzrL%2BX3Hhfasp%2FcaAuc27W%2B%2FzzUEQABJjvUbt5t2389O6%2F08qEYXu7Tv9Lkbgm4egGARQADs%2BaRyrVp1RK1dV1E%2B%2BJ8DjYkzuIoydiGAJHf1rNo3D0wbhtnoweEs4wskFwEEQO7GfJ95eW%2BGWqBIBJBk08UNb396TNo%2BQ8v40kMKJA4BBEDJrduwzQ6rOLVBr6xJ5TrL%2BTdzylEMAghk7qJNWcv4HndRD7s8NycvgEQggADYvSmz1pt7XxhnDqi6a1L50Rd2N8%2B%2FP9UsXMa6%2FygZAgi8Vq%2FbZt78cqa9%2BKh3%2BGartpPNkhUsVgHEGAEEQNGGjM2zY7W91%2B7QpHJ75eMtXPkYpUMAQXHXCap14655IvtV6WSHa%2BmihwBihwACIN2WrTtN%2Bw4LTLXGu1az2qdSR9Os1WgzZvKaoJuHCCOAYHf6Dl9pL1jqvbDhLa1Gm0kzWdACiBECCID0%2BR0n1ksfDqGx2guWMMwKe44AgpIaP21d1oR1zTUbNi4v6KYB2HMEECDp5izcmDUh9JT6vexqVmvXMyEUuUMAQVnmnymIqBfW7Z%2FqNBvEohdAtBFAgCTP78hcRtctibl9B5%2FsyD0CCMpKvbA6UVKh2q4TJXo%2FaX%2B1Yyf7KyBiCCBA0q7f8VuPxea86wekLaPbtMVIM5ShDShnBBDsqWWrtpin3p5sh4e6fVjFq%2FqYHzoRRIAIIYAASVllRmcKz76yT%2BpD%2B6B%2FrlY%2BfS6rzMAfBBDkyvqN2%2B2ctWPrdE%2Ft07R%2Fo0cEiAQCCBD3Fa0%2B%2FWWundPhvX7HG1%2FM4IJf8B0BBLm2KX%2BHeb%2F9bHPMhbuCSNVr%2BpmOfZcyRwQILwIIENcPZZ0dPKHurhWt9AGtieX5m7l%2BB4JBAEF50X5N%2B7zMIKLrixBEgNAhgABxsmFT9rAE9X7oe5u37gy6eUg4AgjK28ZN2%2B2JlsNrdk3tAy%2B4aaBdNQtAaBBAgDhYtWarafPRtLQP3dMv622vWM6KVggLAgj8PBmjIHLoeV3Tlu%2FtN2Jl0E0DQAABom1F3hbTqu3ktGt4VG%2FSz%2FzRc4ld8QoIEwIIgjg58%2BRbk02Fc3btIxveM9SMmbwm6KYBSUYAAaI8zMB7dq96k%2F6Md0aoEUAQlJWrt5pn3p2Suo7Iv8%2FuYK%2BDNH%2FxpqCbBiQRAQSIEs3jeO%2Fb2ebIC7oxrACRQwBB0BYuyzf3vTAudQFW9Yy0bjfNLtwBwDcEECAKNJxKvRunNti1nG6lq%2FvS44FIIYAgLKbN2WCuun9Yan96%2FMU97Jw5riEC%2BIIAAoRdn2ErTLXGBQduqpMu6ckHJSKJAIIw7l%2BrNOqbdmKn5%2BDlQTcLiDsCCBBWQ8bmmYtuGZT6YNSwK8370MUFgSgigCCMtFKgTuroIq1uf3vZ3UPNlFnrg24aEFcEECBsxk1baxrcNST1QaiJ5q99NoMxyog8AgjCbM26beaJtpPMflU62ffpvpU7mcffnGSX9AWQUwQQICzy1m41j742MTU5Uh%2BCD7Qeb5faBeKAAIIoWLg039z%2B9Bi7Upber8dd1MMubQ4gZwggQNC2bttp3v56ljnk3C72w26vih3Nnc%2BMNYuXbw66aUBOEUAQJQNGrTIVr%2BqT6o2%2B7pER7JeB3CCAAEHqMWi5OaNh79QH3IXNBpnRk7hAFuKJAIKo2bZ9p517d0DVgmFZuuirvmYREGCPEECAICxZsdl28bvgcULdHub7jgtZUhexRgBBVM1esNFOTHf77BrX9Tdjp6wNullAVBFAAL9XW9GFBA%2Bq0SU1z%2BP596ea%2FM1MMEf8EUAQZTpBpBNF7kKw%2B1TqaOftsUAIUGoEEMAvOlvmDsBUl94xxEyfuyHoZgG%2BIYAgDpbnbTHNWo1O7cs1jHbYuLygmwVECQEEKG%2Bbt%2B40bT6aZpd01IfVf2p2tWvOM9wKSUMAQZz0H7nSnHVF79TiIeoN0aIiAHaLAAKUJ50V866icmPLUWbVmq1BNwsIBAEEcZO%2FZYcNHm7J3qrX9DMTpq8LullA2BFAgPKgs2BPvT3ZnhXTh9JJ9XraFa%2BAJCOAIK669F9mjvnnSupaMevzX%2BcF3SQgzAggQK5Nnb3eVG9ScKCls2IPvjTerN%2FIlXQBAgjiTBeNbfzwiFSPd7MnRnMVdaBwBBAgVzSn4%2BMf55gK1TrbD59j63Sn1wPwIIAgCZ8D7b6fbVc41Htdc0TGT2NIFpCBAALkgno4NL%2FDnfm6%2FN6hZulKrpgLeBFAkKRVD0%2B%2FrHdqSNZ3HRcE3SQgTAggQC4%2BaE5r0Mt%2B0Kj3g7G%2FQOEIIEiSdRu2mSbNdw3J0rxArqAOWAQQYE989ss8s3%2FVXV3trH4CFI0AgiQOyWrz8fTUKlnqHV%2B7flvQzQKCRgABynpF8xavTUyd2dJZLj5UgOIRQJBU3QYuM4ee19W%2B%2Fytd3dcsXJofdJOAIBFAgNJavW6bqX%2FnEPtBsnfFjuaD72YH3SQgEgggSLIps9abky%2FtabeBE%2Br2MBNn0GOOxCKAAKUxa%2F5Gc0bDgomFh53f1fQasiLoJgGRQQBB0i1ZsTm1TLt6RAawLSCZCCBAaSabH%2F3Phaa0uomu9wGg5AgggDEbN203V90%2FzG4LmkOoixgCCUMAAUqiz7AV5uAaXewHxgU3DTR5a7cG3SQgcgggQIFt23eaG1qOJIQgqQggwO507Ls0dVGpK%2B8fZjbl7wi6SUAkEUCA9MVMbmk12m4T%2Bozp3G9p0E0C%2FEIAAYqjDwQXPm57aow9awWgbAggQDpdF%2BSuZ8emLljYf%2BTKoJsE%2BIEAAhSl5%2BDl9gNBHwx3PjPW7OQCUsAeIYAA2fTZ0uyJgp4QDfUdM3lN0E0CyhsBBCiMViZxFxi8%2FekxXL0WyAECCFC4rdt22iG%2B2j6Oqt3NzF20KegmAeWJAAJkmjxrvV1iVx8EOitF%2BABygwACFC1%2F8w5T%2B%2BaBdhup3KivWb9xe9BNAsoLAQTIXKP9pEsKLhR1ye2DzZatzPkAcoUAAhRv1Zqt5rQGvex2cvm9QzkBhrgigABO%2FpYdpsZ1%2Fe2OXwdKnH0CcosAAuyerpB%2B0D%2FLvr%2FYbmrQzQHKAwEEcNxKJMdd1MMsXr456OYAsUMAAUrmr95L7LayV8WOpt8IVsZC7BBAAPn813l2Z79v5U5myNi8oJsDxBIBBCi5R16dmDoptiJvS9DNAXKJAAJMm7PBVKjW2e7oP%2FxhTtDNAWKLAAKUnOYgVm9SMCz4%2BkdHBt0cIJcIIEg2XVjw3KYFO%2FgmzUcE3Rwg1gggQOlMnb0%2BtSS8hmUBMUEAQbK99OE0u2M%2F%2BsLudHED5YwAApTey59MTw3FWrt%2BW9DNAXKBAILkmjFvg9mvSsGZpY59lwbdHCD2CCBA2S5SWKVRX7vtPNF2UtDNAXKBAILkcledZWwt4A8CCFA22ma07eik2az5G4NuDrCnCCBIps79ltqduSafz1%2B8KejmAIlAAAHK7pqHhtvt58aWo4JuCrCnCCBInp07%2FzaV%2F%2BnObvPRtKCbAyQGAQQou%2BlzN5h9KnU0%2Fz67g5k8a33QzQH2BAEEyfNL10X2IOiIWt3Mhk1c7RzwCwEE2DO3PjnabkO3PTUm6KYAe4IAgmTZsfNvc%2FaVfewO%2FK2vZgbdHCBRCCDAnpk0c53tAVFPyLxFDB9GZBFAkCxdByyzB0BH1e5mNuXvCLo5QKIQQIA91%2BjBgrkgz7w7JeimAGVFAEGyXH7vULvjfuGDqUE3BUgcAgiw57oNLDiRdsyF3e3FdIEIIoAgOWYv2Gj2qtjR7F2xo1m4ND%2Fo5gCJQwABcjOU%2BKR6Pe221KEP17BCJBFAkBxa8Uo7bC1lCMB%2FBBAgN1q3K%2Fg8Y0leRBQBBMlR8aqCyee%2F9VgcdFOARCKAALmbjK5t6aAaXUz%2BFuYzInIIIEiGiTMKdtYVzunM5HMgIAQQIHfOuqK33Z669F8WdFOA0iKAIBle%2F3yG3VHf0HJk0E0BEosAAuROq7aT7fb0cJsJQTcFKC0CCJKh%2Fp1D7I76qz%2FmB90UILEIIEDudB%2B03G5Pla7uG3RTgNIigCD%2BNm%2FdaQ6o2snuqLlwExAcAgiQO%2Bs3brerOurChMvztgTdHKA0CCCIPx3s6KDnlPq9gm4KkGgEECC3zrt%2BAMvxIooIIIi%2Fd7%2BdZXfQNz%2FOcoVAkAggQG490Hq83aa0zDwQIQQQxN%2BtT462O%2Bi3vpoZdFOARCOAALn1yc9z7TbVpPmIoJsClAYBBPFXpVFfu4PuM2xF0E0BElLS2w8AACAASURBVI0AAuTW0HF5dps6o2HvoJsClAYBBPH299%2FGXvtDO%2BiFS%2FODbg6QaAQQILdW5G2x29S%2BlTuZHTv%2FDro5QEkRQBBvS1dutjvn%2FaqwcwaCRgABcu%2FA6pxkQ%2BQQQBAff%2FVeYp55d0pa3fbUGLtjPrxm16zbOAgCyk%2B772dnbXNHX9jdbo%2B3PDkm67a5LJEN7JY%2BtzK3nSNru%2B1qdNZt%2BlwEQogAgviYOnu97YbWjnh39Z%2BaXc2qNVuDbjIQWz92XliibVGlpUR30kMJ7NbqddvMkRd0K9F2tU%2BljmbSzHVBNxkoDAEE8fLkW5NLtGP%2B%2FNd5QTcViL1Lbh%2B8221xr4odzahJa4JuKhAZ%2BvwqyefcU29PDrqpQFEIIIiXDZu2mxPq9ih2p3xu0%2F7MBwF8MGXW7nslm788IehmApGi3sJaNw4sdrs6tk53e6V0IKQIIIifX7otKvZs68iJq4NuIpAYj70xqcjt8Yha3UzeWoZCAqU1dspa%2B3lW1Lb1a%2FfFQTcRKA4BBPFU%2F84hhe6UddVYAP72Sh5%2FceG9kl%2F%2FMT%2Fo5gGRdf%2BL4wrdrureNtguQQ%2BEGAEEyZmQzsRzIDwT0pl4DuR%2BQjoTzxERBBAkZ0I6E8%2BBcExIZ%2BI5UD4T0pl4jogggCDeQz%2BOql1wdqhyo75MPAcCnpC%2B9z9j1h9oPS7o5gCxoF7Ec5r0T82pYuI5IoIAgvhPSGfiORCeCelMPAfKZ0I6E88RIQSQMNu2facZN22t3blQZa%2BXP54eeBuiXhNnrEvcpEb9vhpLHfRrH6caPDrPvPPN7MDbEbdas26bSZqlKzcH%2FrqHqficS695izYF%2FRZF8QggYab18Ut6JWGKKu96v%2F1skySf%2FDw38NecokpSZ1%2FZxyTJug3bzIHVOwf%2BulPhLQ331GI0CC0CSJg1fniE3ZCOqt3dnFq%2FF0UFUofV7Grfh0%2B0nWSS5Ln3ptrf%2B9Dzuwb%2BN6CowurEej3te%2FSgGl1MksxfvMn%2B3hp2FPTfgApf7V%2B1YAXMPsNWBP1WRdEIIFEIIF%2F%2FscBs3vI3RQVSz78%2FLdEBpNVbUwL%2FG1BUYTV7QX6iA4hODgT9N6DCVzWaDiCAhB8BJMwIIFQYigBCAKHCWQQQAgiVXQSQSCCAhBkBhApDEUAIIFQ4iwBCAKGyiwASCQSQMCOAUGEoAggBhApnEUAIIFR2EUAigQASZgQQKgxFACGAUOEsAggBhMouAkgkEEDCjABChaEIIAQQKpxFACGAUNlFAIkEAkiYEUCoMBQBhABChbMIIAQQKrsIIJFAAAkzAggVhiKAEECocBYBhABCZRcBJBIIIGFGAKHCUAQQAggVziKAEECo7CKARAIBJMwIIFQYigBCAKHCWQQQAgiVXQSQSCCAhBkBhApDEUAIIFQ4iwBCAKGyiwASCQSQMCOAUGEoAggBhApnEUAIIFR2EUAigQASZgQQKgxFACGAUOEsAggBhMouAkgkEEDCjABChaEIIAQQKpxFACGAUNlFAIkEAkiYEUCoMBQBhABChbMIIAQQKrsIIJFAAAkzAggVhiKAEECocBYBhABCZRcBJBIIIGFGAKHCUAQQAggVziKAEECo7CKARAIBJMwIIFQYigBCAKHCWQQQAgiVXQSQSCCAhBkBhApDEUAIIFQ4iwBCAKGyiwASCQSQMCOAUGEoAggBhApnEUAIIFR2EUAigQASZgQQKgxFACGAUOEsAggBhMouAkgkEEDCjABChaEIIAQQKpxFACGAUNlFAIkEAkiYEUCoMBQBhABChbMIIAQQKrsIIJFAAAkzAggVhiKAEECocBYBhABCZRcBJBIIIGFGAKHCUAQQAggVziKAEECo7CKARAIBJMwIIFQYigBCAKHCWQQQAgiVXQSQSCCAhJnfAWTAoNHmnfe%2FNk88%2FYb9d%2BRofw%2B8evUdZiZNmVOuz7Fx03bTrccgW4uX5BV6n%2FzNO033noPtfRYtXlUuzz9rzuJAdsxlKQKI%2FwFE26LeJ%2Bs3bAv87%2B9X9ew9xP7Oc%2BcvK%2FI%2BvfsNt%2FeZM29puTz%2FlGnzAn8dSlMEkPINIAsWrkh9XhRXS5auLpfnz1uzKfUcK1auL%2FQ%2Ba9dtSd1n%2BYp15fL8eh2Cfq%2BXpgggkUAACTO%2FAsiGjdvNDbc0N%2F%2Bz13HmoP%2BcbU46rZbZ%2B4CT7ddXX3u3Wblqgy87jUOPrGRaPP5yuT6Hfhf9XqpnXni70PsMHDwmdZ%2Ff%2FuhRLs%2BvgKevV63eZF59%2FSMzeuy0wHfaRRUBxN8AMn%2FBcvPv%2FU6075M%2FOvQK%2FO%2B%2Fp6VAr%2Ff4oCFji73f%2Fgedbn%2Fne%2B5%2FutDbp06fb%2F537%2BPtfT785Puct1PP%2F%2FTzb6W%2BVpu1Lwj69SuuCCDlG0B%2B%2BKlT6rOguOrUpV%2B5PL9OyLnneP%2FDbwu9z29%2F9kjdJ9fvV%2Ff8P%2F7c2X6tE3LaLrQtBv3eL64IIJFAAAkzvwLIBx%2B1tx%2FsH336gz1YcKFEB8na%2BTzSso0vO42vvv293D%2FwXQDYp8Ip5vSzLyr0Ps0ffcneXh4BRGe09TqPHT%2Fdfq0zS3qez7%2F6JdAddnFFAPE3gLz51mf2BMDBR1Q0TW54IPC%2F%2F57Wpvwd9j3%2B2hsf7zYAaLs7%2FOgqdv%2BTefsrr32Y2i7LI4B89uXPZsjQ8amv9Tx6zqBfv%2BKKAFK%2BAUQniHSw7ert976y7wu9V7zfV09BeTy%2FCwB639ep27TQ%2B9zQ7OHUdpHrz0%2F1qOjzygWOUWOm2ufp0Klv4O%2F94ooAEgkEkDDzK4Bce%2F39pvI5DQq97YI615rT%2F1sn6%2FsavqQzmoWdCdFOe2XeRvv%2FGbMW2mENy5atMavX5hcaCIrqWlatWbvZ9Ok%2FwlZR3dzz5i%2B3bSnJsCYXQK5sdKf9d%2BSoyVkHS8eeeK65otEdhQYQ%2FV69%2Bgy1z%2Bd%2BR1c6aNLvqcfQ%2F4cNn2CGj5hoh10V1hbdZ%2BLkgg%2BY99p9m9XTNH3mQtv9PWHirKzH0GvpXjcNWdHjlNf7gwDibwA5u8qlplGTe8xd9z5p9j3wVLNs%2BdpC76e%2Fv4YNabhW5nvRvb90m4Y2ahsp7DH0vtF7bPLUufZ9m%2Flez3xPuve4CwjaPt2wD7VHB0ATJ81O3V%2FvW223eo8%2F%2F%2BI7xW7rCiBuu%2BzSbUDW7VVqNExtl5kBRNuD9hH9B47KGoaiNrg263fU0FIFjXXrtxbaDnd%2FPc%2BzhbRZ25teM%2FVaZg6R0%2Bvh%2Fl46Wzxu%2FIxyfa8QQPydA%2FLdDx2LPADXUCi9t%2FQeXLhoZaE%2FrxN82uZKOtTPBRC97%2F9vnxOyhifqfV%2FhkDNS20VmANH7uEevIWbosAlZn796%2F%2Bt2tUltHzxknH1PZ%2B4HvPfvO2CkfR71DOlzPm1fMml2kfuSzGOCaTPK95iGABIJBJAw8yuA1Gtwk%2FnPMVXtzijzNu0svHNB9CH%2B0CMvpIaIqM6vfU3aAbDOyFzasJlp3eZ927PywMPP2bO52kl6H1sf3hp2desdjxU6BEvd2mqXex4djL340nup23XWSUPH3LAMVf3Lbyl2DLkLIC%2B%2F%2BqE56vhz7HwX7%2B39Boyyt3%2F5zW9ZAeSTz3%2ByO3tve%2FQ43vHp%2Bv4XX%2F9qQ4y73yln1Lavo%2Ff51bukDwZvN37ti5qkPlSa3vRg2m0nn36BPZh0z9XisTamYtVL7dmpvfY%2Fyb7m5fX%2BIID4F0B0YKy%2F96%2B%2Fd7fzkPR%2Fve8y76fvHXBwwZAlN3RSPYjexznx1Jqp27W9ajt0PZw6SNa24n2P%2FbfyJWbMuF1DARtccaupVadx2vMqeOu%2BOtjX1y%2B0ftccd9J5NkC7IVQq%2Fay2b3fG1NWZleoW%2Bbvr5%2FW%2BrlStvrn9ricKPRBz26U3gPz0SxdzyJEVU8%2Bh7aFlq1dTB0EK8Pq%2BenpPO6tO6n7a%2Fr1DH90QLL0G3ja7nlLt%2BzQ8TAeC3sfo3LV%2F6jE0PEX7LLVpvwNPM3Xr31iu7xcCSDgCyLft%2F0x9VunzSO%2BR62580AZSd5%2FxE2bakwvuvXPO%2BVeYJ5990xx2VOUin8%2B979329dZ7X6bd%2FvOvXc2%2F9j3R9shkBhC9F13PiKrCoWfaz4vM4WX6ndQGdz9tf%2B5kn3cIVvvv%2FkrbLlzvrI4b9HnvvU2%2Fp%2BvlV%2BlzWscZbV5pZ1%2Bb8h5VQQCJBAJImPkVQD794ie70zji2Gr2rKvGlC5dmh1GVAoI%2BmDVwY7uo3BSufpl9gBZZ1HszqbZwzZM6MNeOzztePXBrZ2h92yiduJ6Xp2hzQwgOouiHa5Ciyac6oBJQ6N0f%2FUquOdRsFFI0E5QB%2BhqR41aV6UOtDLLBQDtCB9u8aK9v%2Fe%2B%2Bt5ZlevZs0HeAKIzO%2FpgafXMG7b3Rx8sGlLiAoc3gOhgUDt1BSH9q4O%2F%2Bx58NiuAKGi459FjueCkg68DDzvLBjC9pvr9dSCjx9X8APt3eKyNOejw%2F5rjTz7fvPvBN6nXpDyKAOJfALn%2FoefswbTONupM%2FJHHnZM19ELBVe9Fvaf0vtd7QnO1tH3pwEGlg6HzLmhkz7TqzKMORuz7%2Bc%2BC9%2FPlV99uH1tBQgfWup8OiI45oUbqzGZJA4gOgM6oeLE9Ozp77hLz%2BFOv2%2Ft8%2F2Mn%2B3toW9bX%2Bn5xvZTa3rX9advUdu3toXjp5Q%2Fs%2Fknt9AYQve8VOLR%2F0eug0PPxZz%2Fagxz9zt4AosfXbdrOtO9RgLvmunuzAoieVz27%2BhkFGddmbft6jRUutO2qh6Nx0%2Fvs%2FtCdgNFz6sSETkBoKJ33pEF5FAEk%2BACizwL9zW%2B85RHb%2B6btVicQtI3q%2Fab7aJvSCYGq515utyG9j%2FXe0vu0JAFEn9EKNDUvTN8e9b2LLrnBzhXzBhAFIn2t96DapH2Ank9tcm13AUQh%2Bs8Ove120e7j71K9lZkBRI%2FhPrMVeNzE9IZX3WYfw%2B1LtL1rX6JtwO1LFEC0Xzv1zAvtMUF59wwSQCKBABJmfq6CpbMb59a6OnV2TzsqnQnRGGjXdasDG30Aa1hCYZO23YRZBQMdFGgIkbuPuqV1H%2B0Y3fea3fZoWgDwBhAdYOvA3duVrYMLnVnR2V9196qNmUMxdEbIG1IyywUAHdC4Nrlx3zpjevTx1e3O1x1ouQCiMzzaeWYGGx2gKYB5A0jmuHHtjC%2B8%2BLpCJ6FnzgHR1%2Fq9MyfIqwdFv68bR6%2FXRz%2BnrvXyfm8QQPwJIAqb%2BpB2YVX1YPPn7d%2Fd9aC58KD3qXf4jw6StS0pnLz17hf2vaHeB%2B%2FjK8ioB1FnJnW7gmthvS%2BuJ6WkAURfew%2B0daCi%2FYib0F2aOSAKIC6w%2FNWxT%2Bo27Yv0umif4g0gN93awh7AuZMfrhQs9Bp5A4hOYHjvo9fROw8scxK6d1t2Q13uvu%2BptMfQwZ0OPh994hX7tQt63raXZxFAgg8gOkGk90XmcGR9nj325Gv2%2F9qm9HOZi43oc6EkAUSfeb%2F81s3uC2bOXmRv08G9QrS2hd%2F%2F6pkWQLS9ZG67%2BuzSZ5i2a28AyZx%2FqB5N17uROQk9cw6I25eoh8b7GO7EmtuXKIDomKC8h165IoBEAgEkzIK4DohChs6G6ANVOys3rEm3dezcz36tgwSdxXCl1Tm0Y9SBj93ZNHvYDufI3PmpR0Rnat1ZI53l1wGMd4ftAoh2ntXOu2K3vTYKQ962aEiUd4dZXABRm9SD4J7TBQj12GQGEHVfa%2BhZ5uPpddKOVY%2Flfl7j8jMPhtzvsrsA4s5kFXbmVAdUN9%2F2aCqA6GDVj%2FcEAcSfAOIOCHQQ65bV1AGwe7%2B6%2B%2BmARR%2FoRT3O9Tc%2FZHtAirpdBzN6zMwDJgUFvZfdwXRJA4jCRuakcbstP9amTAHEhXb3XncBQj2lmQFEwxt1Fjjzsd5o%2B6m9n3pp3c%2Fr4NF7HwUanaUtSQDJ3B9kzk1x%2B0j97bQvLGp%2BSa6LABJ8AHHvcR38a5ifQocbkuQCiHr%2FtLhC5uPp86ukAcSG4EPPtO9tt7%2FQySr1xHkDiE4A6D2onsTMx1NgVy%2Bnd3%2BT2RuhXhb1apQkgKiHR19nBgu3L1Gvi77W%2FkojC%2Fz6OxFAIoEAkvQAorMoOtBxQ3u8pa5kdSu7nZQbA6ohThrPmVlfu7MdzR4uNDxoToiGK2gHqS5qHbh4z%2Bx6A4jO4Fxy2c1FttsdYGjeRGFtUVjaXQDR1zrYUghRgNAYec2ryDzg0M5Uw0xct7S3NIdEZ0B1HxdAdPbHex8N0yhpAGn%2FfQf7dWHXQ1E73XwZHdy5M7zlXQQQfwLIZVfemjaO2lsa4uTup15I9YwU9Tg6s%2B%2B9f2a5HpLMydXaBvRe1sFSUQHETUL1BhAduGc%2Bhw6q9iSAvP7mJ%2FYEhU5U6Dk0xEOPkxlANCzL22OU%2BTtq6KYLIDqxkjncraQBxM3H0e%2Bf%2BVzVa16ZOmBTANG%2Bwo%2F3i4oAEnwA0TBIvQd00K%2FecB3kq0dAJ4hcAFGYVljOfLw33%2F68xAFEX%2Bux9Vzuc8V9RnoDiPtMKWylOH1%2B6HPEG0Bcj4orbfMlDSBt3%2Fncfp25WIXbl7g5lgogGn7m19%2BJABIJBJCkBxAN3Sju4MDtpHRwrZVpCvsg14GBzqa6nVBRAUQHD9pJa2y4zlpmTtD0BhCthqPhVpmPoUl4mijuJqNqpSnv7RqWorYUtuJWYQHEDTvRAZXGxLvvZ57xPOGU882d97TKejz1briJtbkIIG5YWGYvikKbzii5SfgEkHgFEI2%2F1oGrDv51QOMtnSX1DrfTqnR6T3l%2FXgsy6OBXB9s6sNYciszhgnqPaV6Rwr8ezztJVKUDEX3fTVRVANE8Eu99XEAu7wDihhxq%2B1Nvqut9zAwgOhly1TV3ZT2WQon2J%2Fp%2FLgKIGxaW2YuikzR6HhcICSDJCyB6z2jfnDm8SnP0XADR%2B1q9F5nbpOYulSaAuB5yzb3UyTz3fW8A0XNkvpe9vRuaM5KrAKJhYYX1omj71ffdHBgCCApBAAkzv4Zg6Wypzs5kLnOrHZnmabhuXh0866xk5opLbnyrWy2rqACiqlPvenumVzvIb9r%2FUWQAcRO8vXM5dNCj7%2BkgSsFJ7cq8cKEOGPT9oq7cmhlAVPrdtXP09jxkBhAFJp3R8i6JqsnoGoPrDo72JIBoUp%2B7XY%2BpnifvY7hVTtzQLAJIvAKImzvgXcLWlTsIcAfnWqRA8xG886PcsCoNhdB7Vv%2FXQYn3MbRd6H7adnSQ7AKCKw1fVK%2BkDrbdUC5tk26uifYH6l0pawBxk8JLEkBUWl3PbZeu5yEzgGjb05lWTX73hjGdTNBKcnsaQNwqdxpipt4WDa3xHkTqMb2T%2BwkgyQsg6lVQD533faFRBd4hWO5A3Ts0WHNHdKKgNAFEQ%2Fv0M9ouFHrcYjGZc0A030tzwrwn4jTxXdu3G5q1JwHEzXFK7UsyPofdalduuWECCApBAAkzvwKIxlbrbIo%2BtHXQoG5h%2Fes%2B%2FDV0yt3XrZKhD3f93120z9s7UFwA0VlY%2FbyCTObFm7wBREPDNGZUH%2FrPtX7HDn%2FSjlo7VjfeXGeGdZZUz622aCKgdnq6f1G%2Fa2EBRKvb6Hsay%2B2%2BlxlAdBCjNutsrLqdNdZXw8T0weOGr5UlgOgDRa%2B9uu71O%2Bh7WrnEvcb64NHvowNO77h%2FAki8Aoh60XQ2v6jbtS1qXofe%2B%2FrQ1%2F81gVoHyG5lujvuLtgGdSB08aU32DOuGgKhUK5hF9qe3Ko0bkUchRmFWx0oaTv2Lo%2FpVtLRNqftT0MbtY2UNoCotG%2FR7%2BjGr5ckgKi3U8%2BlkOCW1M0MIOo50j5CKwzppIXOuKrXRivGuZWpyhpAtG3rNdZwMH2tIaZ6zRTC9Dw6yNI%2BS8Ng3MEnASR5AUQ9%2BvqeThppW1JvmCZyq9dcPQ7quVRPmU68uc9KfW5qm1BvZmkCiOq2Ox%2B339Pjue9lBhCdqFIw1z5Fi03oAoo60aZ5mG6kQlkCiE566DNW93ELyrh9ifY%2Fbl%2BiC6l69yUEEBSCABJmfk5C18RrHYzoA1cfqpoLccvtLe2QoMz76qBcPRk6w6KzlNq5eS%2BUp52l9wDfW9r5KSi4g21vaYelJS69PQzNW7S2Oy49nw52MseaaiiW2qC26EDJLYlbVGlMuZ7f%2BwGis876ns5Sue%2FpTLK%2B571QoYasaHWQk06rZXuNtMP17ry1s9bPeFf%2FUulgyb0e7vm9Q6z0Aablhr0rX6l3SB9eOrDSmF8dBHlXPdIHgju7Vt5FACnfAKIPdb0n3CpyhZXem96VdvSvzrwquOoAWAcZ3veHgoYOpvXe0cGCDhK0PbnbdcCsxSN0u95jeq8pVGdeQEzf03alx9D7U0Mr1A7XS6IzoYXNR1H48J7t1f2ubnx3WsDILD2OtgX3tS6eqOfybtPqpdX3FPa926rG2GsfoAM6HewodLjbdYJAP5M5REZz2tx8F%2Ff8ridDpX2E2uxdfEIHetoX6TVTGNPJAe%2BJFF0T5N4HnvFlu1QRQPwNIBqyq%2FeS93o5bjvRtqQTVPr76ySB3is6EeCG7Wnb0ueVAoTer%2Focfeq5tvbzZHf7Bu%2FcI9cG9bK472n0gb7nnQyuE2Eayqz3qk4%2B6P3t7TXV8GX9TOaS%2Bwry7gSZe37vUGcN0VRAcYvOlGRfokVjijomKI8igEQCASTMglgFi6IyiwDi75XQKaqkRQDxN4CUtRRI3LU0MnvHy%2FtilUksAkgkEEDCjABChaEIIAQQKpxFAIlGAHHXrVLPoHrMNGJAPSOax5F5HQ5qz4sAEgkEkDAjgFBhKAIIAYQKZxFAohFA3FBcrYylIKJ5Qm6Z2syVsag9LwJIJBBAwowAQoWhCCAEECqcRQCJTgBRqfdD8zU0MT1zPiOVuyKARAIBJMwIIFQYigBCAKHCWQSQaAUQyp8igEQCASTMCCBUGIoAQgChwlkEEAIIlV0EkEgggIQZAYQKQxFACCBUOIsAQgChsosAEgkEkDAjgFBhKAIIAYQKZxFACCBUdhFAIoEAEmYEECoMRQAhgFDhLAIIAYTKLgJIJBBAwowAQoWhCCAEECqcRQAhgFDZRQCJBAJImBFAqDAUAYQAQoWzCCAEECq7CCCRQAAJMwIIFYYigBBAqHAWAYQAQmUXASQSCCBhRgChwlAEEAIIFc4igBBAqOwigEQCASTMCCBUGIoAQgChwlkEEAIIlV0EkEgggIQZAYQKQxFACCBUOIsAQgChsosAEgkEkDAjgFBhKAIIAYQKZxFACCBUdhFAIoEAEmYEECoMRQAhgFDhLAIIAYTKLgJIJBBAwowAQoWhCCAEECqcRQAhgFDZRQCJBAJImBFAqDAUAYQAQoWzCCAEECq7CCCRQAAJMwIIFYYigBBAqHAWAYQAQmUXASQSCCBhRgChwlAEEAIIFc4igBBAqOwigEQCASTMCCBUGIoAQgChwlkEEAIIlV0EkEgggIQZAYQKQxFACCBUOIsAQgChsosAEgkEkDAjgFBhKAIIAYQKZxFACCBUdhFAIoEAEmYEECoMRQAhgFDhLAIIAYTKLgJIJBBAwowAQoWhCCAEECqcRQAhgFDZRQCJBAJImBFAqDAUAYQAQoWzCCAEECq7CCCRQACJQgChqDBUUgMIRYW9khpAKKq4IoCEGgEkzF7%2FfEbgGzBFqfau2NH80m2RSZK%2Fei8x%2B1TqGPhrT1G7q8vuHmqSJH%2FLDnNqg16Bv%2B5UeOvwml3NwmX5Qb9VUTQCCOLtl66LzLF1upshY%2FOCbgqQeE%2B%2BNdmc0bC3WZG3JeimALGhzzd9zunzDogIAgji7aE24%2B3ZkDe%2FnBl0U4DEO%2BfafnZ7HDhqVdBNAWJDn2%2FarvR5B0QEAQTx1uK1iXbH%2FMqn04NuCpB4BBAg99p8PN1uVy1fT9Y8PUQaAQTxponT2jG3bjct6KYAiUcAAXLvhQ8KFszQEEcgIgggSMZKRk%2B9zY4ZCBoBBMg9fb5pu3r%2B%2FalBNwUoKQIIkjE29oHWjI0FgkYAAXLv%2FhfH2e3qra%2BY64jIIIAg3r78fZ7dMd%2FQcmTQTQESjwAC5J4%2B37Rd6fMOiAgCCOLtz15L7I750juGBN0UIPEIIEDuNbhriN2u%2Fui5JOimACVFAEG8DR6TZ3fMFa%2FqE3RTgMQjgAC5V61xwXbVf%2BTKoJsClBQBBPG2cGm%2B3TFXqNbZ%2FP130K0Bko0AAuTeoed1tdvVnIUbg24KUFIEEMTbjp1%2Fm%2F2qdLI75%2BVcfRkIFAEEyK2167fZberfZ3cwW7buDLo5QEkRQBB%2Fp1%2FW2%2B6gh43LC7opQKIRQIDcGj9tnd2mjruoR9BNAUqDAIL4u7b5CLuD%2FuwXVggBgkQAAXLrpy6L7DZV%2F04WWkGkEEAQf20%2BmmZ30A%2B14VogQJAIIEBuPfvuFLtNtXx9UtBNAUqDAIL469Bnqd1B17pxYNBNARKNAALk1tUPDOcaIIgiAgjib9GyzXYHrcno%2BZt3BN0cILEIIEDuaGXHo2p3s9vU2Clrg24OUBoEECTDGQ0LJqL3GbYi6KYAiUUAAXJn2pwNdns6qEYXs30H68wjUgggSIb7Xhhnd9TPvz816KYAiUUAAXLni9%2Fm2e2p4T1Dg24KUFoEECTDL10LVgrRARCAYBBAgNy5oeVIuz299tmMoJsClBYBBMmwYdN2c0DVggsSzpi3IejmAIlEAAFyY%2Bu2nebgGl3s9jRh%2BrqgmwOUFgEEyVstpO2XM4NuCpBIBBAgN3oPXWG3pZPq9bST0YGIIYAgOb79a4HdYVe9hmFYQBAIIEBu3P9iwbzG5i9PCLopQFkQQJAcGzdtN4ecW9BlPXz86qCbAyQOAQTYc%2FlbdpjDzu9qt6Vh4%2FKCbg5QFgQQJMsDrcfbnfZdz44NuilA4hBAgD33U5eCRVXOuqI3w68QVQQQJIsu1qQdd4Vqnc2yVVuCbg6QKAQQYM%2FVvW2w3Y7e%2BILVrxBZBBAkT73bC3beT709OeimAIlCAAH2zJjJa%2Bw2tH%2FVTpxEQ5QRQJA8uhq62Y2UUwAAIABJREFUduAHVu9sVq7eGnRzgMQggAB75ubHR9ltSJPQgQgjgCCZLrhpoN2Jt2pLLwjgFwIIUHa6htU%2BlTqaf5%2FdwUydvT7o5gB7ggCCZOo3YqU9ENqvSicza%2F7GoJsDJAIBBCi76x8tuPK5roAORBwBBMnVpPkIuzO%2FtvmIoJsCJAIBBCib0ZPW2J6PvSt2NNPmbAi6OcCeIoAguWYv2Gh7QHRA1Lnf0qCbA8QeAQQovZ07%2FzYXNhtkt50HXxofdHOAXCCAINlat5tmd%2BrHXdTDrFm3LejmALFGAAFK78vf59ntRhcfZOUrxAQBBMm2bftOU%2BO6%2FnbnfsczY4JuDhBrBBCgdFat2WqOvKCb3W4%2B%2FWVu0M0BcoUAAoyfts7sW7lgKNYPnRYG3RwgtgggQOnc9FjBsrvn3zDA7NjJZc8RGwQQQF77bIbdyR9UowsT%2FIByQgABSu6rP%2Bbb7eWAqp3M5Fksu4tYIYAAbpLflfcPszv7yo36mk35O4JuEhA7BBCgZGbO22gvlqvt5cMf5gTdHCDXCCCAo0nop9TvZXf4V90%2FjO5uIMcIIMDubdy03VRp1NduK5ffO9T8zUcR4ocAAniNnbI2ddap5euTgm4OECsEEKB4ChvugoMnXdLTrMhj1SvEEgEEyKRrguhiT3R9A7lFAAGK9%2BqnBfMRK1TrbE%2BIATFFAAEK0%2B772fZDQFee%2FeK3eUE3B4gFAghQtJ%2B6LLKfOdpGvv1rQdDNAcoTAQQoynPvTbUfBOoN%2BbnroqCbA0QeAQQoXI9By1PLwb%2FwwdSgmwOUNwIIUJzH3phkPxD2qdTR%2FNp9cdDNASKNAAJkGz5%2BdWru4b0vjGPSOZKAAAIURx8EzV%2BekOoJYTgWUHYEECDdiAmrzSHndrHbxTUPDTfbd5A%2BkAgEEKAkIaRV28mpOSFtv5wZdJOASCKAALtokvnhNbvabaLhPUNN%2FhauP4XEIIAAJfXyJ9PtB4XqibaT7MULAZQcAQQoMGj0KnPoeV1T1%2FrYvHVn0E0C%2FEQAAUrjox%2FmmL3%2BWaK38cMj7AWjAJQMAQQwpmPfpeaAqgUTzgkfSCgCCFBa3QctNwfXKBizW61xP7NwaX7QTQIigQCCpGvfYYFd1ETbwXWPjCB8IKkIIEBZjJu61pxQt4f9EDm2TnfbnQ6geAQQJJWG7Lql3VWPvDqRYbxIMgIIUFaLl2825zbtn1qm951vZrF8IlAMAgiSSEN11dvhFjJ57bMZQTcJCBoBBNgT6j7Xuu3urFbTFiPN%2Bo3MCwEKQwBB0miIbvUmBe%2F7Cud0Nr%2F14HpSAAEEyJHvOy60Hy76kDn50p5m8Ji8oJsEhA4BBEnSf%2BRKc8yF3e17%2FviLe5jRk9YE3SQgLAggQK6Mm7bWnHl579SQLC3bu4MxvkAKAQRJoP3%2BSx9OS62YWPvmgWbJis1BNwsIEwIIkOuxvvc8v2tIVp1mg8y8RZuCbhYQCgQQxN3yvC3msruHpj4DWr4%2ByWzdxkpXQAYCCFAe%2Fuq9xBxRq1vBuN9qne3V01nxBElHAEGc9R66whx3UcHqiFqq%2FdfuzPcAikAAAcrLomWbTcN7dp0Jq3vbYDN7wcagmwUEhgCCOMrfssM88soEu8KV3t9aHXHmPPb1QDEIIEB50rK8X%2F8x3xx6XtfUKijvfTvbbN9BbwiShwCCOF4TqnKjvvZ9rTkfz7w7hSFXwO4RQAA%2FLF252VzbvGAdeHcF9eHjVwfdLMBXBBDExbbtO%2B3Q2v2qdLLv6ZPq9TQDeF8DJUUAAfz0Q6eF5uh%2FlmXU2bKH2ow3a9ZtC7pZgC8IIIiDUZPWpHo9VHc8M4b9OFA6BBDAb%2FqgeqD1%2BNQSjVonvn2HBUxSR%2BwRQBBlm%2FJ3mFZtJ5u9%2F9l3n1C3h%2Bk2cFnQzQKiiAACBGXslLXmvOsHpM6iaeLikLFcwBDxRQBBVClonFK%2FV2p%2FfWPLUWY1vR5AWRFAgCBpMvqHP8wxh9csmKSuVVRuf3oMF61CLBFAEDWLl282TVuMTAWPMxr2Nn2GrQi6WUDUEUCAMFi1Zqt58KXxqa79g2p0sVfS3bBpe9BNA3KGAIKo2LJ1p3nrq5n2eh56z2qy%2BYvtpprNW1nhCsgBAggQJtPmbDCX37vr2iG6mKFWWuFDD3FAAEFULiR7%2BmW9U%2FvhercPtvtmADlDAAHCSF387mDNLfH4xW%2FzzA4mqiPCCCAIs3HT1tqw4fa7J9brYb7vuNBezwlAThFAgLDSqli%2F91ycdiau4lV97Pf4QEQUEUAQ1iGwj742MTUEVheMbfPRNHuFcwDlggACROGCV%2Br9OLZOwfVDVLVuHGj6j1wZdNOAUiGAIEx0xfJ23882h5zbJbUIiFa3Wrg0P%2BimAXFHAAGitAa95oMcel7Bilmqy%2B4easZNXRt004ASIYAgLLr0X2ZOa7BrWd2aNwwww8evDrpZQFIQQICoyVu71Tzz7hRzQNVOqbN2jR4cbq%2FOC4QZAQRB07WW6t7GPA8gYAQQIKoWLMk3dz07NjVuWXXl%2FcPM0HFczBDhRABBUIaNyzOX3jEkta%2FU8rqvfz6DeR5AMAggQNTNW7TJTqB0PSKqOs0G2SEGQJgQQOC3ybPW23kd6il21%2FN4oPV4s2zVlqCbBiQZAQSIC02cVBCpUK1zKohUb9KfVbMQGgQQ%2BEXX7bj96TFmr396iPetXBA8dGVzAIEjgABxs3L1VruEpHeyetVr%2BtlxzlxHBEEigMCPoakKGm5oqgKIekDmLNwYdNMA7EIAAeI8WV1B5PCau4KIrimiJX237yCIwH8EEJSXRcs22x7g%2FT2Lcyh4zJjHFcyBECKAAHG3YdN2u9b9cRf1SAUR%2FV%2FhZM26bUE3DwlCAEGuzV%2B8KWvoKcuTA6FHAAGSdB2R99vPNsdfvCuI6AJcT7SdZIctAOWNAIJcmTJrvbntqTFmn0q7VgFseM9QliMHooEAAiTx6r%2BamK4Lb7kPbo2T1rVEWMIX5YkAgj01fto6O7nczfFw10EaMYGLCAIRQgABkn5RLo2T9l5L5Nym%2Fe2EdeaJINcIINiTfZWCRuZJk7FTGGoFRBABBIAxsxdsLBhHfc6ucdSnNuhl2n4506xdzzwR5AYBBKXVZ9gKU%2Fvmgan9kq7joR4QJpcDkUYAAbDLqjVbbeg4oW6PtCsGK5wwTwR7igCCkti58297IdXzrt81TPTA6p3tfkirXQGIPAIIgGxbtu403%2Fw5314%2FxB0AaLLnTY%2BNMoNGc%2FCIsiGAYHcLZXzy81xzRsPeqf2OlhFv3W6aPTkCIDYIIABKNvZakz3dQcF%2Fr%2Bhjl%2FbduGl70M1DhBBAUJjleVvssuBH1OqW2sccVbub%2FR5DQIFYIoAAKJmps9ebR16ZYJfu9S7j2%2BK1iWb6XMZjY%2FcIIPCaOGOduevZsXZeh9unnH1lH3ux1M1bdwbdPADlhwACoPQXNtQBQrXGu4Znqeo0G2SX9922nQMHFI4AgqJ6Vd3%2BY8dOVt8DEoAAAqDstASmVqTZt3KntKusP%2FPuFCaLIgsBJNnXH9Ly3lUa9U3tK7Tf0DLgIydyDQ8gYQggAPbcslVb7OpZJ9XrmbZcpg4utIwmIASQ5ClsZT0N3dSKVguXsbIekFAEEAC5o%2BFXv%2FVYbOrdPjhteJYOPDVsi0nryUYASQ7NC3vwpfGmQrVd1xY6%2FbLe5qMf5rAfAEAAAVA%2BdKEwDcU67PyuadcU0ZAtekWSiQAS%2F%2Bt3aNvOnN9xbtP%2BdvjV9h3M7wBgEUAAlK%2F1G7ebj3%2BcYyp7xn6rqjfpbz79Za5Zt4FlNpOCABJPq9dtM%2B98M8uc2qBX2vwOXTeI%2BR0ACkEAAeDvpPUHWo%2B3VzV2ByoHVN01V%2BRvTpDGGgEkfsOsNJfDuz0ffWF32%2FO5cCnzOwAUiQACIJheEc0JqXFd%2F7ReEV0DQBNWuepxPBFA4jHMqkv%2FZeayu4dmDbPSNp2%2FZUfQTQQQfgQQAOHoFdH8EHcwsz%2B9IpGnK1ivWZdebgnWrv2XZd22hQvPhdqKvH9Wurske6W7oePygm4egGghgAAIB5051YXIdGbV2yty5uW97YGPDoAQHc1ajU77OxZXWilp%2FuJNQTcZxZwg8K5mdWydgmFWi5dzrR8AZUIAARA%2B46etM81fnmAOPa9r2tlWTWpVr4iGgZTW3EUc4Pp9bRjv36%2B4ev3zGUE3N9b6Dl9Zqvtv3rrT%2FNBpoal148C0v1Pd2wbbkwSsZgVgDxFAAISXDoRcr4h3vLkuaqYzsLMXbCxx78oxF3Y3YyavKfc2Y5d3v5212%2FBxRsPeDL8qR1qFSuF96uz1u72vtidtV0fV7pY2HFJLZ0%2BYvs6X9gJIBAIIgGiYMmu9afn6JHPkBbsOjhRKdNFDXWNgU37Rk19%2F7LzQ3l%2Fj11euZoK7X3SmvFrjgonnRVX3QcuDbmasl8c9pX7B0rhPtJ1U5MVD%2F%2By1JCvkKxhqaV09BgDkGAEEQLRs3bbTrsKjya%2B61oB3HkFRE9e980rq3zmEISQ%2BGjwmL%2B3A1ltNW4wMunmxpWGKV94%2FLPVaH1Grm%2B1RdJas2Jw1qXyvih3ttqJexx1lGOYIACVEAAEQXUtXbjbtvp%2BddZb9rCt6mzYfTTMLluTbibJ7V%2ByYdnurtpODbrpJ%2BoR0Jp6Xr1c%2FnZH1mv%2FYeZEN6Arq%2B1TatU0cd1HBkEau3QHAJwQQAPFZrUcXRftPza5pZ3RPv2zX1Zm99V3HBUE3OdET0pl4Xn4GjFqVFbrtRT%2BrdSq0t4MeQQA%2BI4AAiOfE9UYPDi%2F0IMx7Bl6hBf5PSD%2F50l5MPC8ny%2FO22B6Not73B9fobIM6q8IBCBABBEB8%2FdVrSbEToE%2Bs15OrrvtEZ9ndhQiZeF5%2B8z4uvXNIse%2F5lq9PDLqZAEAAARBfD740frfLwDa4awgTbn2ckH79o0w8Ly%2FPvz91t%2B%2F3zMnoABAAAgiAeNJB1mHnl%2BxCeM0eH22uuG%2BYHRNPlW%2FVv2NI4G2IY9W4rr%2F599lFDzn01k9dFgW9eQJINgIIgHj6pduiQg%2B%2BDjm3i6nTbJB5oPV4u4LWkLF5pvFDw0t04EZRUSr17p3WoFfWMsi6dg4ABIgAAiCe1KOhybiajK4lRnWxQl3MUOPkM13bfIQ9MHvopQn27DBFRbkqnNPZvp%2B1DLWsWbfNDBuXZ776Y75dglrXB9ES1gAQEAIIgHjauGl7ie%2FrAogO0DZv%2BZuiIl1uyWMXQAAgZAggAEAAoeJUBBAAIUcAAQACCBWnIoAACDkCCAAQQKg4FQEEQMgRQACAAELFqQggAEKOAAIABBAqTkUAARByBBAAIIBQcSoCCICQI4AAAAGEilMRQACEHAEEAAggVJyKAAIg5AggAEAAoeJUBBAAIUcAAQACCBWnIoAACDkCCAAQQKg4FQEEQMgRQACAAELFqQggAEKOAAIABBAqTkUAARByBBAAIIBQcSoCCICQI4AAAAGEilMRQACEHAEEAAggVJyKAAIg5AggAEAAoeJUBBAAIUcAAQACCBWnIoAACDkCCAAQQKg4FQEEQMgRQACAAELFqQggAEKOAAIABBAqTkUAARByBBAAIIBQcSoCCICQI4AAAAGEilMRQACEHAEEAAggVJyKAAIg5AggAEAAKbxWrd4UeBuo0hcBBEDIEUAAIKgAsm79VnNBnWtNtfOuMAsWrsi6%2FcefO9vb1q7b4lubhg6bYOrWv9EcdPh%2Fzf%2FsdZw58LCzzBWN7jADB48p9WPddGsL07rN%2B4EchH%2F5zW%2F2tdu4aXuZH2NT%2Fg77GF98%2FWsgv0NZiwACIOQIIAAQVAD5%2Bdeu9iBf9dZ7X2bd%2Fl67b%2B1tq9fm7%2FFznXP%2BFeba6%2B8v9j5jx083Bxx8uvlv5UvM2%2B99Zdp%2F38G0eaWdOf3si8y%2F9j3RdOzcr1TPqYP3O%2B9pFchB%2BIeffG9OPv2CUgWQ3%2F7sYV%2Fv8RNmpgKIHqPdx98F8juUtQggAEKOAAIAQQUQ9SxUqdHQVKx6qT1YDzqAPPTIC%2BaQIyuaZcvXpn1fX%2F%2FnmKqm9kVNIhNAylKZASSqRQABEHIEEAAIIoDMX7Dc%2FHu%2FE81b735hXnr5g0IPfAsLIHPnLzOPPvGKueSym22g%2BP7HTiZ%2F887U7X917GPavvO5ffy773vK9mA89Vxbc%2BRx59iejMefer3IIV0aelWpWv1Cb1M79Xjuaw2t%2Bv2vnmn30TAtPb6GlnkDiNp01TV3mVp1Gtu2L1q8Ku3nevQaYq6%2F%2BSF7e%2BOm95k%2FOvRKu12P9%2BZbn5k6dZvaIWvNW7Q2s%2BYsTt3%2BQut3Te9%2Bw02XbgPM1Y3vtsPIevUdZtuiXgzdR69x1%2B4Dbek5Lr%2F6dvuYGzYW9JD07D3EXHPdvfb1VpvV26PXVY%2FRq8%2FQ1HPlrdlkXn71Q9uWOvWuN80ffclMm7EgdfuSpavtz0ydPt8OA9Pv3eCKW82bb3%2Beei4CCICEI4AAQBAB5I22n9oAorkfk6fOtQe%2BrZ55o9gAMnHyHNsToWFBD7d40TS77VGz1%2F4n2bkW7mdaPNbGnHrmhbZn5ajjzzFPPvumeeDh58zhR1cxJ51Wy4aINWs3F9qmO%2B5uZf5vnxPM8y%2B%2BY2bMWlhs%2B9UOtcH7vQ8%2Bam%2Fb6yavK4Ace%2BK5psKhZ9qD%2BtvufNwO8TrtrDpm%2BYp19j4KMXrO2%2B96woaEq6%2B92%2Fzv3sfbYKXbFSAaXnWb2e%2FA08w99z9tWrZ61RxzQg0bqJYuXVNwwH1kJftz%2Bx54qjmzUl0zYNBo8%2BrrH9m2uIN%2BvRaVq19mjjvpPBsa9Hy6v0KX7qPAUf%2FyW%2BzPXHfjg%2BaX37rZ59bXr7z2YSoI1bywsX0%2BvaZ6nTRc7aD%2FnG1Gjp5i7%2BP%2BltVrXml%2Fz%2FsefNb2HOl7fs2HIYAACDkCCAAEEUDOrnKpPbB2X%2BuA9fiTz0%2BdsS8sgFx0yQ3mjIoXm5V5G1P3%2Bab9H%2FY%2B6gFwAURfP9KyTdpjlWQI1uy5S%2BxwMDcvRf%2FXgfYPP3UyK1auL1MA2fuAk83osdNS91EPhO7z2hsf26%2BvbHSnufDi69Iep1GTe2zPgf7f%2Fru%2F7P1%2F%2BqVL6nYFMYWWr779PRVAFCa8E%2BULCyAKPzNnL0qb5K%2F7fPdDxyLngHgDiHqW9LV6WLw9IqecUdv%2BbbwBpPI5Dext7nH0tUIhAQQACCAA4HsAGTJ0fNqBr0rDgfQ973AfbwCZN395oZPVdYC9%2F0Gn22FILoCoVySzl6MkAcQdLHfrMci0ePxlc94Fjexj6XkPPqKinTRf2gCiIVGZz6FeCvUy6P833vKI7d1494NvzOIleVn3bXLDA%2Fa5vGFKpWFdo8ZMTQUQby9QUQEk8%2FfXYx52VGUb1koSQDT8S69JZhvVy6RJ%2BgocLoDotcjsXVJvEAEEAAggAOB7AFGvguth0EG6SvMz9D0dqBYWQPr0H2H%2Fr7P4CgPeUm%2BAJpC7AHL08dWznrOkASSz1Nvybfs%2FUz0IboJ6YQHk%2FQ%2B%2FzQogmq%2BR%2BZjq%2BdFQJv1fc1U0H0MH8Bp6pWFSz774jp1L4XqG3H2LPOA%2BspJ54uk3dhtAMu%2Bjqnru5XbuR0kCiIZ%2BaRhZ5mO44KUeJBdAvGFNpb%2BP2kAAAQACCAD4GkA0AVwrTZ1b62o7WdlbGqaj62%2B4IVfeANJvwCj7f02AHjZ8Qla5ORtlDSBz5i019RrcZDp06lvo7Z98%2FlNBD03fYUUGEB2oZwaQex94Juux1JOgORve76mHR9fb0ATxfSqcYl8ffV9Dm9z%2FiwsgmfNnShpANC%2FG9Z7sLoBo%2BNvNtz2a9Riau6IAtX7DtlQA%2Be2PHgQQACgcAQQA%2FAwgbt6BVmzKvE09DbpNcy4yA4gmXOsg97EnX0v7mWXL1pimNz1ouvccvEcBRMOHNI8icyhTZgAZMXJSqjcg82BcczcyA4hClfc%2BmktS4ZAz7MpcWmVKQ7A6dUm%2FvoiGmelxdF%2F1FmkSu3fei9qqx9CcjNIEEE0y995H80G0EMDrb35SogCi4WSaWJ45HEzBTcPK9H8CCADsFgEEAPwMIBp%2BpIBQ2AXyVq7aYEOArg%2BSGUD0tcKBekjUG%2BIO5hUqtAqThjIVF0A0jEmleRbeZXszD5I1DErzSdwQKAUfHUxr1SkdZLuDb%2FVMqBdEE8x15l%2B9F5pwnhlA9LV6CLSClFa%2B0u%2BgHg63dK2Ws61R66rU%2FA%2F1EClQabUqN%2BFc81DuuvdJGzw0t0Uraul1co9R0gCi3%2B3rb3%2B3v79%2Bv0sbNrPzT9T7o%2FsoCNnw8GcP%2B5pnBpBff%2B9uv37mhbdTj6uhVhoCpzksBBAAKBECCAD4FUB0DQ%2F1YmiCd1H30XwEHXDrWhmZAUQH8Dpo1vc0jEtn73Xw7e1NKSqAuGuNqBR0CntuhQQd6KuNup8mt%2BtfHWDrWhbe6130HTDShiH3mCeeWjP1HN4AosCh%2BS36nfQ4mkfienhUI0dNtr%2BLwotWkzrwsLPsxHDXo6P69IufbFDQ76vH0bwXt0xvaQKIVtyyywIfcoZti4KbQoX7GYUSLVesn1NPU2YAUSl86PVRe444tpoNNVpq1wVKAggA7BYBBAD8CiDqKdCQKXehvsJKYUP30YGzegP0%2F8wei8FDxtnlaTt37Z9a6tX78%2B4aG5mlg%2BOx46cX2QPiSj0CGir20ac%2F2Ot0FHVNED2PVszqP3CUbat%2BL2971UOj9ug2hSRdYND1rBT2OLpwn36nwtqvn9P8FC03nBmgNDE%2B82rx6ilRW9zXOvhX8FM40gpauu6H93ZXemwNM3PXGNF9MlcUmz5zoWn%2FfQe7itmUafPSblNo0c%2Fob%2B39vv5ORf1dCCAAEoYAAgBBXAeE8rdcAAm6HX4UAQRAyBFAAIAAEv8igABAaBBAAIAAEv%2FS%2FBQNvQq6HX4UAQRAyBFAAIAAQsWpCCAAQo4AAgAEECpORQABEHIEEAAggFBxKgIIgJAjgAAAAYSKUxFAAIQcAQQACCBUnIoAAiDkCCAAQACh4lQEEAAhRwABAAIIFacigAAIOQIIABBAqDgVAQRAyBFAAIAAQsWpCCAAQo4AAgAEECpORQABEHIEEAAggFBxKgIIgP%2Ff3n3HSVXd%2Fx%2F%2F%2F%2Ff9fTVRY4omUZOYaBJNBHtBUWPssZeIxCAqKhZQRBFEEBSlCoJYQAEBBURhgaW3pffee9%2BlwxbKcr6P91nveHd2Fxd39565Z17Px%2BPzkJ2dnTk73IvnfU%2B5KY4AAgAEEMqnIoAASHEEEAAggFA%2BFQEEQIojgAAAAYTyqQggAFIcAQQACCCUT0UAAZDiCCAAQAChfCoCCIAURwABAAII5VMRQACkOAIIABBAKJ%2BKAAIgxRFAAIAAQvlUBBAAKY4AAgAEEMqnIoAASHEEEAAggFA%2BFQEEQIojgAAAAYTyqQggAFIcAQQACCCUT0UAAZDiCCAAEASQu5%2BdYV7rsJSiYl2nXZZBAAGQygggAFD7ldm2w0ZRPtX2nQWuTy0AKA0BBABWrT9oWnywzDR7f2ms64lm88zPvrv6%2Fc%2B6Wc7bE5dq3G6xOanaUPu5XfPIJNOsk%2Fs2VbT6D9vk%2BrQCgLIQQADABxNn5ZhfXjXcdqJvqpNl9h884rpJsdLz6%2FXmJ9WLQki95vPM0cJjrpsEAL4igABA3GVO3m5Ov3yY7TzfXX%2B6ycs%2F6rpJsTRw5BZzyiVFI0haF5R%2FqNB1kwDARwQQAIizAZmbi3WaC%2Bg0V8jIrB2JMHfbk1PNwVxGkgCgkhFAACCuPh243pz83bShuk3nmiNHmTZUGbLm7DS%2Fuvr76Wz7Dhx23SQA8AkBBADiqFu%2FteakakW7HTVss8gUsmahUs1butecVTPTfr5XPTzR5Ow%2B5LpJAOALAggAxE37nqsSW61qxyNUjeVrD5g%2F%2FnOU%2FZyr3T3ObN6e77pJAOADAggAxMWxY8a80nax7RBr9KNz7zWum%2BS9DVtyzYV3jrWf%2Bfm3jjarNxx03SQAiDsCCADEgbaF1ToPdYS1XWyfIRtdNyltbNmRb6rfM85%2B9n%2F4xyizbM1%2B100CgDgjgABAHMLH468XhY9TL80wX4%2Fe4rpJaWf3vsPmukcn27%2BDs6%2FPNItW7nPdJACIKwIIAKSyw0cKzSMvz7IdX93lfFTWDtdNSlvaDatm7aIQogXq85fvdd0kAIgjAggApKpDhwvNQw1m2g6v7k0xbnq26yalvdy8o%2BbWJ6bav5Mza4wwsxbtdt0kAIgbAggApGr4eODF78LHFYSPVKI7zd%2F%2BVFEIOeOaEWbmQkIIAJwAAggApBrdzfy%2B52fYDu7PrxxmJs7Kcd0klBJC7qg3LfF3NGn2TtdNAoC4IIAAQKp2bH9x1XA6tikeFO9%2F4fugOGEmQREAyoEAAgCptL7gtieZ2hO3qXIPBut0mCoHAOVBAAGAVAkft9SdkljcPHvxHtdNwgmEkIcbFoWQ0y7LMCMmbXfdJABIZQQQAEiFaVc3fxc%2Bfn3tCDOH8BE7R44eM%2F99bU4ihLBdMgCUiQACAC7lFXy%2FravuLcEN7uIdQh5tNDuxJiRrDut3AKAUBBAAcDl1597nZiTWfMxdwsiHD3etD4eQKXN3uW4SAKQaAggAuLrDeXCfj19dPZw1H54Fy2AbZQVLptQBQDEEEABwcZX8sVfnJHZOYqqOn1v03l1%2FemJTgfnL9rpuEgCkCgIIAEQdPuo0%2BS58XM5NBn3fXCDY2ezs6zPN0tX7XTcJAFIBAQQAonLsmDH1W863HdJTL80wmZPZrjUdtle%2BqU6W%2FTv%2F3Q0jzYp1B1w3CQBcI4AAQFTh48XWC21H9JRLMsywCdtcNwkR2XfgsKlRa5L9u%2F%2FTzaPMus25rpsEAC4RQAAgCk06LLEd0J9UH2oGjtziujmI2N79h81VD0%2B0x8Bfbx9jtu8scN0kAHCFAAIAVa1z7zW243ly9aHmy%2BGbXTcHjmTvKjAX3TXOHgtXPjTR7D94xHWTAMAFAgioK2b1AAAgAElEQVQAVKWvRmy2wUOdzi591rhuDhzbvD3fnHfzaHs8aIF6%2FqFC100CgKgRQACgqoybnm0Xm6uz%2BWaXZa6bgxSh3bB%2Bc%2B0Ie1w82GCm3RkNANIIAQQAqoJuPveLq4bbTmbdpnPtInQgMHPhbnundB0fz7da4Lo5ABAlAggAVLbVGw6ac24YaTuXuiP2kaOkD5Q0fOJ289OLi6bnte6%2BwnVzACAqBBAAqExbs%2FPN%2BbcWzfGvWXuyvQ8EUJZ%2BGZvMSdWG2OOlW7%2B1rpsDAFEggABAZW61eul9421nUv%2Fds%2B%2Bw6yYhBtr2WJnYovnbsVtdNwcAqhoBBAAqg6ZZ3VFvWuJmc5u257luEmKkcbvF9tg5%2FfJhZtai3a6bAwBViQACAJXhhdYLbAfyjGtGmGVr9rtuDmKmsPCYebjhTHsMnXvTKLtdLwB4igACABXVte%2BaxBSaEZO2u24OYiqv4KipUWtS4kaFrB8C4CkCCABUxJip2YmdjLr3ZxExKr6Jgabw6XjSiIhGRgDAMwQQAPixlq89YM6sUXRDuWdazHfdHHhi%2FrK95vQriu4R0rwzN7AE4B0CCAD8GLv2HjIX3jnWdhK1%2BJx7faAyfTNma2J73s8Gb3DdHACoTAQQADhRhw4XmpvrTrGdw2p3j2O7XVSJtz9aYY%2BxUy7JMJNm73TdHACoLAQQADhRbT5eYa56aKK5pe4Us2UH2%2B2iahw7ZswbXZbZY%2B2Op6aZnN2HXDcJACoDAQQAAABAZAggAAAAACJDAAEAAAAQGQIIAAAAgMgQQADE0%2F4DB83X344yW7bucN0UoMrs3rPPHuc7stkFC4A3CCAAUk%2BXbn3M1Onzjvuc7TtyzJPPNjNz5y2JrF1AZTl27Jjp2PkzM3vu4uM%2Bb936zfY4X7psdWRtA4AqRgABkHrqN2hphgwbd9znHD161OTk7DYFh9iaFPFTWFhog8XIMVnHfd6RI0fscX74MPeaAeANAgiA1KEwoSvCz7zQwnT%2FpL9ZuGiFfXz9hi1m%2Bcq1ttM2feZ8s2TZanPo0GGzdPkas3%2F%2FwWKvsWz5GjN2wjSzYNFy%2B%2Fyt27LNnj37ij1n46Zt9jkzZy80BQWHzM5de0x29q5iz8nLy7ejMJmjJpvZcxbZ9wtbtGSlnf51MDfPjJ843WzbnlP0OxQcMlOnzzXfDh1rxk2Ybl8bCMvNyzez5iyyAaTH54PMkqWr7ONr1m40q1ZvMEeOHjVTps01K1auM%2Fn5BfY413EWHj3Rz%2BgYXrR4pf1ax%2BK%2BfQdKjJ7oOTp%2BFWAUZFRhet0p0%2BbY43zu%2FKXm8OEjxb6%2FYOFyO9q4b%2F8BezwHP6%2FzI2vqHHucj584w04VA4ByIoAASB3qxDRp3sE8Vf8N82Kjt8277T62j3%2Fe5xvzbvtPTNeP%2BtpOW98vM0pMwdKISLfvvq%2FXeL5hK%2FNeh0%2FN6292NN8MGZN4D3WY9PqNmrxnXmrcxrzWrL1p36mn6dy1d%2BI5CjwvvdrGPP9SK9OqTTf7Wq82bWc2b9meeM7rzTuavl8Ote%2Bl91SHUkGn8ettTeOm7Uz793vaPz%2F7YgsbioDAtm3ZieOmQaO3Tacun9vHFbo7fdDLdOj8mf2e1n4kT8FSkNBzdAzrGHyuwVv2ax3PI0ZNSrzHlwOH25%2FTsaj3aNbifXs%2BfdTjq8RzVq1eb7%2F34sutTas2H9qRR50v4fUmOke%2BGjTCvr5eT4FHIeTlV981Td7oYM8dfU%2FtUIACgHIggABI%2FSlYCiD1nmtu14aoc6ROWHIAUedLzwk6arqK%2FOlnA%2B1zggCiq8b6evTYKfaqsf25kZPsY0EA0Wur09a246f2Kq%2Fk5uaZt97pZlq0%2FiDRJnX%2B9H4KNHv27rfvN%2FDrTBs6gqvICkXtOvYw77T9KLLPDvGdgqUAomPqo0%2B%2FNNk5u%2BxxlBxAdCwr1GqkJDheg%2BAdBJA585bYrydPmW2%2F1rE%2BeMho%2B1gQQDSyopD9ftdedtRONJr4Rsv3bdgPBxC1SeeJRlh0TPfu%2B61p1qKT%2FXNRG46Y1u9%2BmAhSAPADCCAA4hFA1OnS1JVAcgB5s1UX2xELO3gw1zz9%2FJuJANKj1yA74hGED9GfddU3CCDB1JgNG7cWey1N19LjwdVhBZDkYKGO2XMN3zJr121KPLZ3336zefP3IyfA8QKIRiPC0%2F2SA4hG4nr2%2BrrEyGE4gOg8CIdlUVho9Np7iQCicBI%2BngOTsmbZxzXlKgggHZOChV6jwSvv2KmM4TawIx2AciKAAIhHANEUkrBwAFGI0M9kjJhQ4rUUOIIA0qbdx6bbx%2F1KPEePBQFE0170unpMV6KDCqbFrFi1LhFA%2BvQbUux11AELpqroSnK%2FrzLsqEs48ADHCyBvv9e92PPCAUQjDZp6NXb8tBKvp6lUQQBRGE8OKaJdt4IAomNTrxU%2BxlUasdP7bdy0NRFABg4eWex17BTFxm3s8%2FRemu61fMVajnMA5UUAARCPANL8rc5lBhB1zMJXgMMUFIIAolAQngMf7vgFAUTz3dUx05QTLcxNLk2NCa8BSaYrzfMXLDO9vvjGvPJ6W9suTR2jc4byBJDkUbVwANEUKf1Zi76TKRAEx7%2FWl%2Bj4S6a1IsHxr9E6jQ6Wdoyrdu%2Fem3hdhfLSdufSVK%2FPeg82L7%2F2rm3XJz0HVMInAyANEEAAxD%2BAiKaEJHe6dLNCzV8PAoiuAGtReZiCgUZJggCiq8ulTU3RwltNT8kvKCgzgGiHrg0btxR77eGZE%2B3r5ewsvvsQ0tuPCSD6mWdfbGlDcph2WgsHcI3WaSQj%2Bf0UJoIAMixzQtFUq6Sds7Sbm47zYB1TaQFEO3SFN2TQaw%2F%2BtmiNiaY9AsAPIIAASD1aRxHu9JQngHzeZ7DdiSeYh65OkbY4DS9C1zai9mfmL028zsjRk4stQt%2B1e6955vk37XsGoxbqjKlTp7UiwWOlBZB2nXrYkKP3DkycPNOOqGghOxDQcaTjQgG1vAFEPvykv51uFQRkjUQkL0LXa%2Bq1tV118F7aLCG8CF1BQ%2BFc06cCWoyu99eGC4HSAohCvN4zPKqn80jnTfI2vgBQCgIIgNSjTpAWnWuHnvIGkAMHcs17HT6x9xDRjjyaFqJteLXTzzdDx3wfSnoNsp2zFm9%2FYKeqvNqsvX1%2B527fb8OrBbrqnLV8u6udF68REm3JG95mtLQAonnw%2BjktANYUF3XS1CkblDSHHhAd0xrtU%2FAobwDRVs9aJ6LzQ8etjm9NrVJoVwgQhQAFFR2Lb73T1R7j2rVK6zU%2BDk1B1GifzgVtwav31g5uGknctHnbcQOI7g2in1NQ0XH%2BwYdf2PcqbQ0WAJSCAAIg9WhbW93cTzcCDBa9BjdrC2gqlG5aGL4Bmq7I6uZtmkKimxhqPYZ2FRo1dkqxn9UOVwoZ2vFK25HqXgYaLQnTDj8KDupg2TnxSTda040Ik3fKCto6JGOsDToDvs60zwNKs2vXnsQNMUUBVyE2%2BUaBOs6DXamCIK17y2h0TceXtoDWeo5g291weNFj%2Bnnd5FNB44v%2BQ0s8R8epjvNRY7JKTMlS2AhPtwqsXrvRBnsd51qkntxuADgOAggAPyiwKCiE6S7o4avHWhze76thxaaO6D4KuulhcPUYSGVaM5K8C5a2fdZxHmz%2FrGCte9KEKWhr1GTCpJmRthcASkEAAeBPANG0kIzh483KVettJ0xTXDSNKrhhmu78rOdoSpeu2GqURPc40LQT3a8DSHXDR060050UtnU8z5i1wK5N0l3Og2Ctu5XrONdWuxoRVPDWjTV1HxCNqACAYwQQAH5Q52vMuKk2dGinIN2PQ0FDO2GFaQG65tlrznzDxu%2BYD7p%2FYUdKgLgc59oiWms6dJxr3YamVSVvcqBgoilXWmOidSJaE5KdXbSFNAA4RgABAAAAEBkCCID0tHLdAdO6%2BwrTrscqk1%2Fw%2Fba5gC8yJ223x3jfjKK1IQCQIgggANKPpspf%2BdAE878XDbEdNMBHW7PzzemXD7PHedac4jfWBACHCCAA0s%2Fg0Vttp%2BzMGiPM3v2HXTcHqDIN2yyyx%2FptT0513RQACBBAAKSXwsJj5vIHikY%2F3v2Ee3TAb9tyvh8FmTSbURAAKYEAAiC9DMjcbDtjv70u0xzIPeK6OUCVe6XtYnvM3%2FhYluumAIAQQACkj6OFx0z1e8bZzlj7nsXvrA74avvOAnP6FUWjIBNm5rhuDgAQQACkj6Hjt9lO2Dk3jDS5eUU3JwTSwWvtl9hj%2F86ni99FHQAcIIAASB%2B3PzW1aOerD5e7bgoQ%2BY5Yp1ySYU6qNsSsXH%2FAdXMApDcCCID0sHrDQdv5%2BunFQ82WHfmumwNE7pGXZ9kA3ui9xa6bAiC9EUAApIeX3i3ajrT2K7NdNwVwYuKsHHsO%2FPKq4WzAAMAlAggA%2Fx3MPWLOuGYEN2RD2rvs%2FqItqD8ZsN51UwCkLwIIAP99PGCd7XRdfO94exd0IF199BXnAgDnCCAA0ueqr4IIkM409epXVw%2B358NkbkwIwA0CCAC%2FzV%2B2NzHvXVOxgHTX8J2F9pyo13ye66YASE8EEAB%2Ba9ppqe1s1W0613VTgJQwff4ue06cWWOEOXS40HVzAKQfAggAv11wx1jb2Ro%2BcbvrpgApQWs%2FzrtltD0vRmbtcN0cAOmHAALAX3MW77GdLM15zz%2FElV4g0LjdYntuPPUG07AARI4AAsBfr3dcYjtZTzRj%2BhUQNmPBbqZhAXCFAALA32kmf75tjO1kjZjE9Csg%2Bfw4%2F9aiaViZkzk%2FAESKAALAT7MWfX%2BFt4DpV0AJr7Yvmob1ZDOmYQGIFAEEgJ9adVtuO1ePv870K%2BB4u2GdfX0mNyUEECUCCAA%2F3VQny3au%2Bg7d5LopQEo6WnjMjhDqPFmyer%2Fr5gBIHwQQAP7Jyz9qTrssw3asNm7Nc90cIGXd9%2FwMe55067fWdVMApA8CCAD%2FjJuebTtVF9451nVTgJTWufcae6481GCm66YASB8EEAD%2Bad55me1U1W8533VTgJS2YPm%2BxGYNmpIFABEggADwT83ak22nasCIza6bAqS0wsJj5qyamfZ8mb9sr%2BvmAEgPBBAAfjmQe8SccknR%2Bo%2Bt2fmumwOkvH%2B%2FNMueL516rXbdFADpgQACwM%2F1HxfdNc51U4BY6N5%2FLetAAESJAALAL7qKq85UnSZzXDcFiIUZC4pu2vmX28e4bgqA9EAAAeAX3XhQnamOnzOdBCiP3Lyj5uTqQ81J1YaYvfsPu24OAP8RQAD45bL7J9gAMnZatuumALFxwR1j7Xkzdd4u100B4D8CCAB%2FFBwqTCxA37GrwHVzgNgtRO%2F%2B5TrXTQHgPwIIAH%2FMX77XdqLOuWGk66YAsfL2Ryu4dw6AqBBAAPij97cbbSfqzqenuW4KECsZ47fZc%2BfaWpNcNwWA%2FwggAPzxavvFthPVpMMS100BYmXDllx77px%2BxTBzjBuiA6haBBAA%2FtB9DNSJ6vn1etdNAWJFoeO0y4rWT23fyfopAFWKAALAH1c%2BNJEdsIAK7oQ1a9Fu100B4DcCCAB%2F%2FPa6TNuBWrHugOumALFz25NT7fkzaNQW100B4DcCCAA%2F5OUftZ0nlW6sBuDE1Gs%2Bz54%2FnXpxE08AVYoAAsAPy9cesJ2ns6%2FPdN0UIJZaf7jcnkMN2yxy3RQAfiOAAPDD6Ck7bOfpmkfYRhSoyDbW978ww3VTAPiNAALADz0GrbedJ93RGcCJmzAzx55Dlz8wwXVTAPiNAALAD626FU0fafTeYtdNAWJp9YaD9hzSZg4AUIUIIAD8oHnr6jy98%2FEK100BYmn3vsP2HPpJ9aGmsJC7EQKoMgQQAH6o02SO7Tx177%2FWdVOAWDpaeMycXH2oPY%2F2HTjsujkA%2FEUAAeCHe%2BpPtx2n%2FsM2uW4KEFtnXDPCnkcbtuS6bgoAfxFAAPjhhseybMcpc%2FJ2100BYuv8W0fb82j%2B8r2umwLAXwQQAH6ofs8423GaPn%2BX66YAsXXlQxPseTRxVo7rpgDwFwEEgB9%2Bf%2BNI23HSDQkB%2FDi3PjHVnkffjt3quikA%2FEUAAeCHn12WYTtO23LyXTcFiC3dR0fn0eeDN7huCgB%2FEUAAxN%2Bhw4W206TKzTvqujlAbNVrPs%2BeR136rHHdFAD%2BIoAAiJedew6Zr0dvKVb9MjYmAsiAkZuLfS9j%2FDbXTQZS0rI1%2B0ucS3c8Pc2eR9rWOvl7Mxfudt1kAH4ggACI370KrniwaKFseerNLstcNxlISZu25ZnTrxhW7nNp9JQdrpsMwA8EEADxM23%2BLnNStR%2FuMJ1382imZAHH0br7inKFj9qvzHbdVAD%2BIIAAiKe6Tef%2BYKeJnXyA4ys4VGj%2BftfY455HGiXZuDXPdVMB%2BIMAAiCeduwqMGfWKLprc2l1R71prpsIxMKYqdnHDSAdPlvluokA%2FEIAARBfXfuuKbXDdOqlGWbleu4HApTXAy%2FOLPVc%2Btu%2FxtpREgCoRAQQAP4tSGfhOVA5C9JZeA6gChBAAPi1IJ2F50DlLEhn4TmAKkIAARB%2Fj702h4XnQAVpqtX5t44umsZ4WQYLzwFUFQIIAH8WpLPwHKicBeksPAdQhQgggK%2F6DNlomr2%2FNG3qX09PN%2FVbLnDejihr9uI9Jp0cOXrMdPx8tfPP3feqWXuyadJxifN2%2BFytP1xu9uw77PqUAlwhgAA%2B2rnnULnvbkzFt258LMukk%2FEzcpx%2F5hRVWdWt31rXpxTgCgEE8NHW7Hz7P7hTLskwr3VYSnlWtRrNtn%2B%2FNWpNMulkZNYO%2B3ufe9Mo538HFPVj6%2FIHinbu02gekKYIIIDPAUTbauYXHKM8q8zJO9I6gNSsneX874Cifmw93Xw%2BAQTpjgAC%2BIgA4ncRQAggVHyLAAIQQAAvEUD8LgIIAYSKbxFAAAII4CUCiN9FACGAUPEtAghAAAG8RADxuwggBBAqvkUAAQgggJcIIH4XAYQAQsW3CCAAAQTwEgHE7yKAEECo%2BBYBBCCAAF4igPhdBBACCBXfIoAABBDASwQQv4sAQgCh4lsEEIAAAniJAOJ3EUAIIFR8iwACEEAALxFA%2FC4CCAGEim8RQAACCOAlAojfRQAhgFDxLQIIQAABvEQA8bsIIAQQKr5FAAEIIICXCCB%2BFwGEAELFtwggAAEE8BIBxO8igBBAqPgWAQQggABeIoD4XQQQAggV3yKAAAQQwEsEEL%2BLAEIAoeJbBBCAAAJ4iQDidxFACCBUfIsAAhBAAC8RQPwuAggBhIpvEUAAAgjgJQKI30UAIYBQ8S0CCEAAAbxEAPG7CCAEECq%2BRQABCCCAlwggfhcBhABCxbcIIAABBPASAcTvIoAQQKj4FgEEIIAAXiKA%2BF0EEAIIFd8igAAEEMBLBBC%2FiwBCAKHiWwQQgAACeIkA4ncRQAggVHyLAAIQQAAvRRFA8vILzcc9vjR33vO4%2BdvF%2FzSXXHG7qfXYi2bcxJnFnjdrzlJT79nXzTvvdiv1dcaMm2a%2Fv33H3sRjuXlHTdfuX5g77q5jLqx%2Bk7n0qjvNo%2F9taCZPmVtme%2FYfOGxf54eqzxffVsrvr9dp%2FPp7TjowBJBoAkjztzod91hq9fYHVd6Glas32feav2Cl%2FfrboePM8w3eLPP5O3fn2ufrOXv25pf4%2Fuq1W%2Bz3p89YWKF2fTlguGnYqHWx869lq87mtn%2F91wwbMdHMW7DCvs%2BqNZur9PPp92WGeanx25GfgxUpAghAAAG8FEUAUefif35yrg0grzZta56u39T8%2FZKbzf87%2BQ%2FmjZadEs%2F7%2BtvR9jFVxvAJJV6nc9fe9ntr129LPKawode%2B%2B74n7WvrvS6o9g%2F7vDbvfVhqe%2FbuKzCXX3NXohRa9Pxfn3NpscfLCkInWvVfaG5%2B%2F6ernXRgCCDRBBAF61N%2F%2Fldz%2FgU1S6177n%2BqytswbfpCexwPz5xkv27x1vvmtF9cUObzt27bnTjfmrXoWOL7s2Yvsd9Tx%2F1E2nH%2Fw8%2BYN0Pn9cuvvmN%2BdVb1xNeffjbAvu5DtZ4zk7Lm2HNdX8%2BYuahSP497H6hn3mrdJfF1g5db2XPcxXn4Y4sAAhBAAC9VdQBZvHSt7Vy83aZ4Z%2F5g7hFz131PmP895U9m%2FYYdxQJI0JHbvTfvuAFEIyb6ukPnnsWepyus%2F7ztUXPyaeeZbdv2%2FGAbd%2B3Jta%2Fz7PNvVMlnoNffkb3PSQeGABJdANEVfRd%2Fx%2BFzavv2Pfb4P5EAovPtJz873yxYuKpSAoguADz%2BZOPE1zqPw6OWuuig19WFAH2t9qrdan9lfh5%2FvvB689QzTYqdh%2BF2xKEIIAABBPBSVQcQdV7U2VBnJvl7o8dOtUEjmIoVBBCFFY1qvNas7XEDSI%2FPB9qvFy1ZW%2BK1h2SMt6%2Btq8IVCSBLlq0zrzdvbzsyGlFJfq9vhow1c%2BcvN8tXbrQdPk21Cq5AB6Uru3pe%2BLGly9ebJm%2B0M08%2B%2FZqdnrNm3dYq%2BfwJIKkVQNTR%2FvDjfvbve%2BLk2fZ40d9%2FcEwP%2BmaUeemV1vbKffKUpAMHj5ivBo4wrzR5104l%2BqTnVyY7Z3%2Bx1%2B7%2F1TCzcVP2CQUQjVCccdbF5sZ%2F%2FttOl%2FyhABJM7VKpDTp%2FgumQ%2Bt1%2B%2B%2FvLzbU3PGD%2FrMdnz11mfy%2F9Wef6A%2F9%2B1gYetXXFqk1mw8Yd9s9qf3h6WMfOn9nzQ7%2Fv%2BEmzirVB76V%2FLzTqqeld3T%2FpnwgXCjJ6b4121LzxQfu94PfRzyRPM9Nojd6n9TtdbVvD39cUMZ3POTsPmPc%2F6GXfq32nTyO7oEAAAQgggJeqOoDof%2BDqxOiK6A%2BNRgQBZMKk2bbDrxEMde7LCiADvx6ZCA4VubJZVgBRaPjp6X82f%2FnbDebBR%2Bqbiy65xX4d7pBpatWtdz5mOzu33PEfc%2FV199rX0rSrsqZgjRg5OTHKo6k555x7pe0olicsnWgRQFIrgGh9ho6PR%2F7zgvnlb6vbjrqOhfP%2Bep157PGXzc%2FP%2FLu5puZ99nhQRz7olCt8qDOt52rk8N4H65lf%2FKaavcqvIFGRKVjvtu1uevYaZP%2Bs6VFlBRCFk%2F%2FWbWROOvVPti0KEmrDBRfdaNZt2G7bqKmLp%2Fz8LzbQ6M%2FJU7BeaNjCnH3uFfY19P3BQ8aUmIK1aXOOHUU5%2FYy%2F2amVWjOm7wdTItUOnXMKMZrWqSlfej%2BdYxpN3bf%2FkH1tnatnnn2JufLau0udgqVQc%2FqvLjR%2F%2FHMN%2BxqXXf0vOyLb7aO%2Biefo%2FLzqunvsuaq%2F4ytq3GX%2B%2F0%2F%2FaNtU2SM2pRUBBCCAAF6q6gCiTok65upA6H%2Fu1%2F%2FjIdsxGjl6SmIKRmkBRB2vs%2F5whbnuxgfs1c7SAog6Gno9PaYOzT9uqWWvHGuxur5XkQCiK8vqIKqTFby%2F%2FquOozotQadPnR79XrqaHfxsu46f2tcbOmxCiQCi6Si%2F%2Bd1l9mpz0Ea915%2F%2Bcq1dz1LZnz8BJLoAohChEY3SSlMRwwFEoXbzlp32MY1q6LG%2F%2Fv1Gs2XrrkTnWI8FGyEE4UIje8F7Bq%2F1Rb%2BhFQ4g6tRr2qI68kEbkgNIn75D7NcDBmUmXkPnojr1CuhlTcFKXgOi9SZ6n%2BDr5ACi80BBbNmKDfZrta3OE6%2FYsKNO%2F6LFa%2Bzz%2B%2Fb%2F%2FkKARos0ahqMdpQ2BSscQHTu%2FeG8a%2By%2FGcGUNdVzLza3%2F5YE760AovfSqEfwHAUhPXa8jS4qqwggAAEE8FIUi9CD6RLqlKiTFix8%2FcWvLzLtOnxSagAJT98KOhWlLUJXh0QdIl09Pvf8GonXVnjQlIkfG0B69Rlc6sJY7Qikx3v3%2BcZ%2BrWBx8%2B21S4Qu%2FW7qeCUHkOB3DHckVYMGj7LBpbI%2FewJIdAFEnebwJgbhypo6r1hoCHdoNX1Pj4V3ysrZddA%2B1rb9x%2FZrTavKHJVV7Kp70BHv0q13hQNIMN1QIywa5SgtgNx%2BVx27eUTy66hjr1GP4IJCRQKIduPSyMUzzzUr9h76XRXk1GaVPovwRQZNpdKFgPDGE8cLIMHIrP4bfh8FGbuu7P0eiQDyuz9elbgIEf5ctLtXVR9XBBCAAAJ4ycV9QDRdQ9vyqtMWvqKaHEBUmm6iMKEOWGkBJLnUEdH8b11NLq2DUd4AovUZuhKqMBF%2BrkYrwtNBFCw0Zz%2F5NTVVQ9M6kgOIOnv6eX0GUXzWBJDUnIKlwBk8pmlDekzrKcJrIJJ3clOI0RV6TX9Sp1id%2FsoMIKpg%2FZXWZyUHEE1Vql3npRKvo%2FfX84J1TBUJIFoIrz%2BHp0GVVnqupnNpBFQjGfos1O7yBhAFDL1PMAoVLgWg4JxWANGUuPD3g8CoEaGqPq4IIAABBPBSVQcQdW7ea%2FdRqd%2FT%2F%2Fx11bLuU6%2BWGUB0RVJTnjQtIzmAaLpV8g5Y4SCi5x7vPgjHCyC6r4PmmIevfIY7i8GojIKFFsImv6auFD%2F86PMlAoiuaOvnNc%2B9qjsvKgJIagaQ8AhYeQKIAovWHtxw08N2pEyddp0HlR1ANB3p4stvsyFCgSccQNSh11So5NfR%2Ba3Of7AYvSIBRJs86M%2B6QFFWu7WGSv9u1Lj%2Bftt2fZb6t0QXDMobQIJ%2FS5LXjmlURZ%2BzFqQHAUSfefg5BBAgUgQQwEdVHUC01786G6Xd6EzTSRQugk5CaQFEpZChx7XwNhxA%2FnVvXbuAO3mUIuhIaBF7g5feqtAUrOCmbkFpNx89PnbCDPu1gsV9Dz1d7DnaIUdTWZq%2B2aHMKVhapxL%2BGY24BFNfKrMIIH4EEN1oU6E2HIiDkF2ZAUSl4KFOeHC%2BBQFEv58Waie%2FjtZ%2FaBQi%2BLoiAUQBSOdt%2BMaFKo1kaiqbNrJQsNd0y%2FB5ryCRPGJUnilYY8ZPL%2FY%2BWsulx7UuR18TQADnCCCAj6o6gGgnKf3PWldO1akKHlcgUcfkh6ZgBUFFO9kE6zuCABKsEdF88fA9QxQoNPJR1g0NyxNANEKhzps6YcFcc81x1%2BJx7YgTdH4ULOLbJfkAAAgxSURBVDRSEszxVwdRr6MOXLClZziA6PfWVJabbq2VCGV6nt5Loy6V%2FfkTQKILIJoOpMXLpZXuUl6RAKKwreMuOGb031r%2FbWCfo6v5lRlAVJreFJxvQQD54MM%2BJTre2qVO058UoIPHFJR04eHHLkLXlrh6frDltdbDaHe5IPxoIwjtpKXH9bXOT%2F1MeGqkSrtz1XrsxVIDiD5f7ZB1482PJEZu9O%2BMznc9J%2Fi3igACOEcAAXwUxRoQTWfQlAl1hrQ2otqlt9pOu%2BZahzsuZQWQ4KaDmmKRvAZEowya%2FvGzX15gQ4o6P3ptdYpatupcoW14tQORrsYqPGgBrq7yaiee8I5X%2Bp7miGvRuaaEaDer8BSOsrbhVXvV0dEWn%2FoctNtX8o0XK6MIINEFkKDDXlqps1uRAKJd43QsKrxq0wN10J%2Bu39RcWP0mux5EV%2FQrM4Dovhc63sMBRB10jfbp%2BFYY0O52Os8UvMIXF%2F7z%2BMv2nAxGRU40gCj8B3eW1zmtz06lfwP0fd09Xe%2Brc0pt0HmktSkaIdHOedqeW89T%2BFBbdU6Wtg2vdqnTe%2BhnNLqjERN9XsHudSoCCOAcAQTwUVSL0HXjPe38oyurWjOhNRTBdp9BaR63drcp654e6mDp%2B8nb92qHHO2mpVEP3bxQ88fLcwf0oNSx0usuXLS6xPd0FVYLc3UzNE11SV67oU6QOjbaZlXP0xXYmbMWF3uOXje42WJQClF6PbVbHZ7wDeAqswgg0QQQdYp1DJVVwVQfddT1dfjY1%2FGsx8IbEwTHpG7UFzw2b8EKe4xpt6zgnjHauUojE%2BoUa4ME%2FUywRbQe02Lystqs6U56fjA6k1w6pvX94MaGKh2nCk86z3SDTnX2k%2B%2BHoSCtHaKCbXL1OuGpTvq3IPx1sKuVQk%2FwmEZ4tL2wziftOBe%2B4WJwXiqcaR2YPns9ps%2Bqa%2FcvEiMnurCgGxwGAUqPB1Mng9LvrjUsOr811TP5hqAKPcn359Hvp%2FbqBopVfVwRQAACCOAlF7tg%2BVRBAHHdjrKKABJNAKGoqigCCEAAAbxEAKlYEUBSEwGE8qEIIAABBPASAaRipQXwPT4f6LwdZRUBhABCxbcIIAABBPASAcTvIoAQQKj4FgEEIIAAXiKA%2BF0EEAIIFd8igAAEEMBLBBC%2FiwBCAKHiWwQQgAACeIkA4ncRQAggVHyLAAIQQAAvEUD8LgIIAYSKbxFAAAII4CUCiN9FACGAUPEtAghAAAG8RADxuwggBBAqvkUAAQgggJcIIH4XAYQAQsW3CCAAAQTwEgHE7yKAEECo%2BBYBBCCAAF4igPhdBBACCBXfIoAABBDASwQQv4sAQgCh4lsEEIAAAniJAOJ3EUAIIFR8iwACEEAALxFA%2FC4CCAGEim8RQAACCOAlAojfRQAhgFDxLQIIQAABvEQA8bsIIAQQKr5FAAEIIICXCCB%2BFwGEAELFtwggAAEE8BIBxO8igBBAqPgWAQQggABeIoD4XQQQAggV3yKAAAQQwEsEEL%2BLAEIAoeJbBBCAAAJ4iQDidxFACCBUfIsAAhBAAC8RQPwuAggBhIpvEUAAAgjgJQKI30UAIYBQ8S0CCEAAAbxEAPG7CCAEECq%2BRQABCCCA1wHk1EszTPcv11GeVcM2i9M6gPz19rHO%2Fw4o6sfWDf%2FJIoAg3RFAAB%2Ft2FVg%2FwdH%2BV01a0826WTM1GznnzlFVVZ17r3G9SkFuEIAAXz1Zpdl5tFGsymPa8i4bSadHMw9Yuq3nO%2F8c6eoiladJnPMxq15rk8pwBUCCAAAAIDIEEAAAAAARIYAAgAAACAyBBAAAAAAkSGAAAAAAIgMAQQAAABAZAggAAAAACJDAAEAAAAQGQIIAAAAgMgQQAAAAABEhgACAAAAIDIEEAAAAACRIYAAAAAAiAwBBAAAAEBkCCAAAAAAIkMAAQAAABAZAggAAACAyBBAAAAAAESGAAIAAAAgMgQQAAAAAJEhgAAAAACIDAEEAAAAQGQIIAAAAAAiQwABAAAAEBkCCAAAAIDIEEAAAAAARIYAAgAAACAyBBAAAAAAkSGAAAAAAIgMAQQAAABAZAggAAAAACJDAAEAAAAQGQIIAAAAgMgQQAAAAABEhgACAAAAIDIEEAAAAACRIYAAAAAAiAwBBAAAAEBkCCAAAAAAIkMAAQAAABAZAggAAACAyBBAAAAAAESGAAIAAAAgMgQQAAAAAJEhgAAAAACIDAEEAAAAQGQIIAAAAAAiQwABAAAAEBkCCAAAAIDIEEAAAAAARIYAAgAAACAyBBAAAAAAkSGAAAAAAIgMAQQAAABAZAggAAAAACJDAAEAAAAQGQIIAAAAgMgQQAAAAABEhgACAAAAIDIEEAAAAACRIYAAAAAAiAwBBAAAAEBkCCAAAAAAIkMAAQAAABAZAggAAACAyBBAAAAAAESGAAIAAAAgMgQQAAAAAJEhgAAAAACIDAEEAAAAQGQIIAAAAAAiQwABAAAAEBkCCAAAAIDIEEAAAAAARIYAAgAAACAyBBAAAAAAkSGAAAAAAIgMAQQAAABAZAggAAAAACJDAAEAAAAQGQIIAAAAgMgQQAAAAABEhgACAAAAIDIEEAAAAACRIYAAAAAAiAwBBAAAAEBkCCAAAAAAIkMAAQAAABAZAggAAACAyBBAAAAAAESGAAIAAAAgMgQQAAAAAJEhgAAAAACIDAEEAAAAQGQIIAAAAAAiQwABAAAAEBkCCAAAAIDIEEAAAAAARIYAAgAAACAyBBAAAAAAkSGAAAAAAIgMAQQAAABAZAggAAAAAExUOv0ffHgF0HrQpJ8AAAAASUVORK5CYII%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAyAAAAMtCAYAAABn7hW2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nOzdd3hU1d728ffv53nOsWM%2F9t6PVEEFEQUFsSEiNuy9IKJiV8SOHXvH3um999577y10Qne9173iGvbMJCEJk12%2Fn%2Bv6XZDMZGZlMnvPvvcq%2B%2F8ZAAAAAPDHO%2F%2FPpycCAAAAAAIIAAAAAN8QQAAAAAD4hgACAAAAwDcEEAAAAAC%2BIYAAAAAA8A0BBAAAAIBvCCAAAAAAfEMAAQAAAOAbAggAAAAA3xBAAAAAAPiGAAIAAADANwQQAAAAAL4hgAAAAADwDQEEAAAAgG8IIAAAAAB8QwABAAAA4BsCCAAAAADfEEAAAAAA%2BIYAAgAAAMA3BBAAAAAAviGAAAAAAPANAQQAAACAbwggAAAAAHxDAAEAAADgGwIIAAAAAN8QQAAAAAD4hgACAAAAwDcEEAAAAAC%2BIYAAAAAA8A0BBAAAAIBvCCAAAAAAfEMAAQAAAOAbAggAAAAA3xBAAAAAAPiGAAIAAADANwQQAAAAAL4hgAAAAADwDQEEAAAAgG8IIAAAAAB8QwABAAAA4BsCCAAAAADfEEAAAAAA%2BIYAAgAAAMA3BBAAAAAAviGAAAAAAPANAQQAAACAbwggAAAAAHxDAAEAAADgGwIIAAAAAN8QQAAAAAD4hgACAAAAwDcEEAAAAAC%2BIYAAAAAA8A0BBAAAAIBvCCAAAAAAfEMAAQAAAOAbAggAAAAA3xBAAAAAAPiGAAIAAADANwQQAAAAAL4hgAAAAADwDQEEAAAAgG8IIAAAAAB8QwABAAAA4BsCCAAAAADfEEAAAAAA%2BIYAAgAAAMA3BBAAAAAAviGAAAAAAPANAQQAAACAbwggAAAAAHxDAAEAAADgGwIIAAAAAN8QQAAAAAD4hgACAAAAwDcEEAAAAAC%2BIYAAAAAA8A0BBAAAAIBvCCAAAAAAfEMAAQAAAOAbAggAAAAA3xBAAAAAAPiGAAIAAADANwQQAAAAAL4hgAAAAADwDQEEAAAAgG8IIAAAAAB8QwABAAAA4BsCCAAAAADfEEAAAAAA%2BIYAAgAAAMA3BBAAAAAAviGAAAAAAPANAQQAAACAbwggAAAAAHxDAAEAAADgGwIIAAAAAN8QQAAAAAD4hgACAAAAwDcEEAAAAAC%2BIYAAAAAA8A0BBAD6j1xpbmw5iqJiVa3aTjY7d%2F4d9OYFAJkIIADQtMVI86%2F%2FdqCo2NXsBRuD3rwAIBMBBACubT7CHqzd%2FtRY8%2FFPcykq8nXIuV3se3rGvA1Bb14AkIkAAgAugHz1x3yzecvfFBX5Orp2dwIIgLAigAAAAYSKWxFAAIQYAQQACCBU3IoAAiDECCAAQACh4lYEEAAhRgABAAIIFbcigAAIMQIIABBAqLgVAQRAiBFAAIAAQsWtCCAAQowAAgAEECpuRQABEGIEEAAggFBxKwIIgBAjgAAAAYSKWxFAAIQYAQQACCBU3IoAAiDECCAAQACh4lYEEAAhRgABAAIIFbcigAAIMQIIABBAqLgVAQRAiBFAAIAAQsWtCCAAQowAAgAEECpuRQABEGIEEAAggFBxKwIIgBAjgAAAAYSKWxFAAIQYAQQACCBU3IoAAiDECCAAQACh4lYEEAAhRgABAAIIFbcigAAIMQIIABBAqLgVAQRAiBFAAIAAQsWtCCAAQowAAgAEECpuRQABEGIEEAAggFBxKwIIgBAjgAAAAYSKWxFAAIQYAQQAggogt9%2F1hKnX4CYzctTkwA9Yy1rXXHev%2BezLn8v880OGjrevgWrOvKWF3qdP%2FxGp%2ByxfsS6n7XfPP3nq3MBfy1wWAQRAiBFAACCIADJ2%2FHTzP3sdZ%2BvhFi8GfsBa1jr0yErmyWffLPPPd%2BzcL%2FU6vPXuF4Xe57Y7H0%2FdZ%2FGSvJy2v1ffYebk0y8w48bPsF%2F%2F0aGXOfiIimbq9Gj3hhFAAIQYAQQAggggjz7xij3QrX%2F5LeY%2Fx1Q16zdsC%2FygNcgAohBw3gWNsm5ft36rfZ1OOq1WuQSQzPr51672eSZNmRP4a7snRQABEGIEEADwO4Bs2LjdHHncOeae%2B5827b%2FvYA94%2F%2BrYJ6uH5PGnXjcrVq43737wjbm68d2myQ0PmF9%2B65Z2v%2FzNO833P3YyV197t7nokhvM%2FQ89Z4aPmJh2nxdav2u6dh9o%2Bg4YaW685RHTuOl9qcf57oeO9msNpdLjeH9OoeiLr38119%2F8kGl41W3m3geeMf0Hjio0gKxctcG2t0Onvmm3b8rfYZ56rq356ZcuxQaQlq1eNf%2B79%2FFmxqyFabfrddH3Wzz%2BclYAmT5zoXmw%2BfPmwouvM9fd%2BKB5%2F8Nv04Jcz95DzEsvf2Bfw%2BdffMdcfvXt5ubbHrWvg7uPejpeff0js2DhCtO952D7Oup57r7vKdOpS7%2FU%2FfR76fWvU7epva13v%2BFp7Xyv3bfmtz96mDHjptnX2P09J06eY%2F8mCpp6jb9p%2F4f9mxFAACQYAQQA%2FA4gf3bobQ9y%2Bw0YZVat3mT2P%2Bh00%2FSmB9Puo4NZ3afmhY1N5XMa2GFIp599kf2eft7d75GWbcy%2F9zvRHhw%2F%2Ffxb5oI615q99j%2FJnsl39znkyIq2d%2BGo48%2BxB%2BCVqtU3%2F7fPCfaA%2BLCjKpubbm1hqp57uX1sDUFyP6fgse%2BBp5q77n3SPPPC2%2Fbg%2B1%2F7nph2YO7tAdHjVq95Zdb8DT3uDz91KjaAKCAdeNhZ5vU3P0m7vdltj5rza19j2r7zeVoA0YG%2Bekb%2BW%2FkS25ukMHfAwaebuvVvTIWQNq%2B0Mwf952xzVuV69nW59Y7HzNHHVzd7H3CymTBxVtrzjxg5yYYkPZe%2BvuzKW0377%2F6y93mj7ac2BF3R6A4bphpccav9ut3H36XaWaPWVfZn9Hocf%2FL59vfVc1Q45AwbPvT63dDsYfv6tW7zPgEEQJIRQADA7wCiHodTzqidOhOu8LHfgafZM%2FWZAeSqa%2B4yGzdtt9%2FTBGwd0OqgXF8PGjLW3uft975K%2FZweUwfKhx9dxaxZuzkVQHRwP3vuEvv1yryN9kD4oMP%2Fm5r4raFO%2BhlNjHdf71PhFPPm25%2Bn9WaceuaFNpAUFkAUHnRgrp4Jd7vmt%2Bh5Vq%2FNLzaAaC6GglC1865I3bZ23Rb7s5ob8uZbn6UFEAWK0%2F9bJ%2FU7qnr0GmLv8%2FFnP6YCiOtdcfcZPXaa%2FZ56PTIDSGFDsKbNWGADnnp3vO2%2B855W9m%2Fm2qMAop9TD4e7j14XvT563dz3HnvyNRskCSAAEowAAgB%2BBpAlS1fbM%2FDPtX4n9b1ff%2B9uD169q0m5AKIDc%2B%2FPn1vransGXv%2FXsCT1nuSt2ZR2H%2Fez6mFxAeSGW5qn3eeEU8634cb7vSo1Gqa%2Bp2FiGp7kDvDVq6BhYRo6pjP5hQUQBRz1rCgsuMByzAk1UqFmdwHE9Qy5Fal%2B%2F6unfTyFJG8AmTd%2Fuf2%2Fex5vKdg1anJPWgBZtHhVWkCrcOiZpsVjbUoUQBTA9PXc%2BcvSnseFvx9%2F7pwKIPrbeO%2Bjng4FMv07f8Hycn9vEUAARAQBBAD8DCDvvP%2B1PXDVkCe3tGzti5rY72kOR2aImDhpdtrP6z6XXHaz%2Fb8OtDUEKfM5NAdEP6tg4wKItxdApZ4MDevKDCBXNroz9fWAQaNtb42GFKnHRAfu6oEpKoCoLr70htRkcgUgtUNzMUoSQNyEcwUH3aa5FHptbBDwBBDN4dD%2F9bOZj1en3vWmVp3GqQCi3ovMORdHHFvNNG%2FRukQB5IGHn7NtynweBRLdT3M%2FXADRMDjvfTS8Tq%2BVAqfue3aVS21Pyqw5iwkgAJKMAAIAfgYQDTHSwb8ORL2l%2BRU62z9z9qK0AJJ5fQpvANF8jjMqXpz1HN16DLI%2FqwDhAkjmSlVqQ2bPhDeA6Nokmkui5%2Fu2%2FZ92zoV6QdT%2B4gKIenF01l8H2TrIP%2B6k89KGIBUXQPS12qS5JOp50bAxTcDPDCBqW%2BZcGFeaL6PQ5AKIhpFl3qc0AUR%2FG7WjqGWU3VwbBRBNhC%2Fsd1Sbv%2F72d9sLpQB37Inn2mFwBBAACUUAAQC%2FAoibf6BekMzbFBZ02yuvfVjiAKKhPTq7vnDRyrT7aMKzzvwvXbqmzAFEq0ap10Nn8d3tmotS3BAsN09FcyM0dEkH2k88%2FUaxr0lmAOnSbYD9%2BuVXP7TPr%2BFWmQFEB%2B8Ka5oQnnmgr9Ck3z9XAUSBSl%2B764S4%2BuCj9vb74yfMLDKA6PkV3rzfc7%2BfC4cEEAAJRAABAL8CiOYd6AA5MzCoNExIQ520YlNJA4iWeFUA0dAfN1dDQ7Y0mdwbEsoSQDSx3TuPRBPktZysvnft9fcXGUBUOhBXGwo7cN9dANHcE%2F2sgoOGU7n7ZU5CVy%2BHhkZpLob7OS2Pq59zFxEsSwDRKmD6Wkvy6m%2Bi%2BSOaCK%2BhZW6RAM110eunXiv3mIUFELVHc23cpHw9npYFLuo9QAABkBAEEADwI4Bo%2BJIuOKhrURR1Hy0nq4NfzeEoSQBRadUl9TjoQFsTsNVroKV7Ndl9TwKIruuhoVB6vBNPrWkfX0O%2BdOCu3gdNgC8qgGjyuNquJW1397pkBhCVltTV97zL3GYGEAUDLfmr72miu8KIhjfpuibuZ8oSQDRZXEv36nutnnkjdR%2BFEAUHXTBRoU%2FzOdxwuaICiOaJKFTq%2FmdWqmvbqf%2FreiXlGT4IIABCjgACAH4FEJ2ZX7asYFhUYaWhRbqPzrRr6JP%2Bn3mFdA1JcsOSXOkierqgoYYLqccic86FzsC74ViuNEfDuzqUSqtNeVdr0qRwHXxr%2FoJ6W9zvoYvwuV4GXTgw87HdBO0vv%2Fltt6%2BLVvDyrral0u%2Bv72kZXu%2FQLn3PLUms0v81wf2jT3%2Bw1%2FDwhi7VsuVr7TK6mc%2BpNrv7uuf3Ppd%2Bn4GDx6T1UujvphWvPvn8J%2Fuc6nHJfO30d8h8Li0%2FrGFXWhpY1wbJvNAiAQRAAhFAAMDv64DEvTR%2FQxc4LOraH1T5FwEEQIgRQACAAJKb0vwJLQ2sIWGZVzSn%2FC0CCIAQI4AAAAEkN9Wn%2Fwh7lXatEFXc0rtU%2BRcBBECIEUAAgABCxa0IIABCjAACAAQQKm5FAAEQYgQQACCAUHErAgiAECOAAAABhIpbEUAAhBgBBAAIIFTcigACIMQIIABAAKHiVgQQACFGAAEAAggVtyKAAAgxAggAEECouBUBBECIEUAAgABCxa0IIABCjAACAAQQKm5FAAEQYgQQACCAUHErAgiAECOAAAABhIpbEUAAhBgBBAAIIFTcigACIMQIIABAAKHiVgQQACFGAAEAAggVtyKAAAgxAggAEECouBUBBECIEUAAgABCxa0IIABCjAACAAQQKm5FAAEQYgQQACCAUHErAgiAECOAAAABhIpbEUAAhBgBBAAIIFTcigACIMQIIABAAKHiVgQQACFGAAEAAggVtyKAAAgxAggAuABy5X3DTau3plBU5OvA6p0JIADCigACIHnWb9xuvvx9nql3%2B2Dz1NuTzY0tR9mDNYqKW81fvCnozQ0AMhFAACTD338bM3DUKnPHM2NMhXMKzg6rqjfpb6bOXm%2Bee2%2BqeebdKVQ51r0vjDONHxoeeDviWDWa9E%2B9pw%2Bo2smcf8MA88rHM4Le7ACgMAQQAPG2aNlm89pnM8zpl%2FVOOzNcrXE%2F0%2B772WbNum1BNzExLmw2yL72YyavCbopsbNh03bz9tezzBkNd73P%2F312B1P%2FziHm956LzbbtO4NuIgA4BBAA8bN1207Tpf8yO7Rqn0odUwdkh57X1TzQerwZMjYv6CYm0jnX9rN%2FB%2FVEofx6%2BvoMW2Hf%2B%2FtW7pR67x9zYXfbUzJvEUOyAASOAAIgPjSUSgdZR9Xuljrw2qtiR1On2SDzxW%2FzTP7mHUE3MdEIIP5atmqLafvlTHNK%2FV5p28Nldw%2B1vSLbd%2FwddBMBJBMBBEC0rduwzYYLhQzvEKsT6%2FWwYWQuZ3xDgwASjJ07%2F071inh7BI%2B%2FuGAbWbgsP%2BgmAkgWAgiAaB5QaRiVhlN5J5TvX7WTPcjS8KsdOzm7GzYEkOAtXr7Z9ooooLvtZu9%2FekW03WgIFwCUMwIIgOhYsCTfvPThNHPSJT3Tejtq3jDAfPbLPNsbgvAigIRrntRvPRabS%2B8YYieru23prCt6m3e%2FnWVWszgDgPJDAAEQbjuKGD5yeM2CCeXjp60LuokoIQJIOM2av9EOxTrygm5pvYm3Pz2G7QtAeSCAAAgnrdbzwgdTzXEX9UibQHvV%2FcNMhz5LWVY0gggg4Za%2FZYf5ruMC26Po7WG8%2BNZBtreEbQ5AjhBAAISzt0Pj0t0BkEIIS4hGHwEkOsZOWVswx6rarjlWx9YpWMpX19YBgD1AAAEQPB3QaGLsSfV2ze1gudD4IYBEz4q8gqV8T75017a5X5WCxR50sgAAyoAAAiBcvR1uadD5i%2BntiBsCSLRXntMqWTop4J20XuO6%2FlxjB0BpEUAA%2BGv2go2mzUfT0pYBpbcjGQgg8TBj3gbz6GsTzYHVdw3POuz8rvZ7WqkOAHaDAAKg%2FGnyqsJFg7vSl%2FzUcrovfzKdMeUJQQCJlzXrtpn3vp1tTr%2Bsd9o1RZq2GGkG8DcGUDQCCIDys%2Fyf8ePe63bQ25FcBJD4X2ndO5yyepN%2BdnjW5q2sngUgDQEEQO4NHpNnbn58lNm3cqfUwcgJdXuYVz6dbq%2FEjGQigMTfzHkbTYvXJpqDa3RJ2%2FZ1IkI9JgBAAAGQMzrL%2BX3Hhfasp%2FcaAuc27W%2B%2FzzUEQABJjvUbt5t2389O6%2F08qEYXu7Tv9Lkbgm4egGARQADs%2BaRyrVp1RK1dV1E%2B%2BJ8DjYkzuIoydiGAJHf1rNo3D0wbhtnoweEs4wskFwEEQO7GfJ95eW%2BGWqBIBJBk08UNb396TNo%2BQ8v40kMKJA4BBEDJrduwzQ6rOLVBr6xJ5TrL%2BTdzylEMAghk7qJNWcv4HndRD7s8NycvgEQggADYvSmz1pt7XxhnDqi6a1L50Rd2N8%2B%2FP9UsXMa6%2FygZAgi8Vq%2FbZt78cqa9%2BKh3%2BGartpPNkhUsVgHEGAEEQNGGjM2zY7W91%2B7QpHJ75eMtXPkYpUMAQXHXCap14655IvtV6WSHa%2BmihwBihwACIN2WrTtN%2Bw4LTLXGu1az2qdSR9Os1WgzZvKaoJuHCCOAYHf6Dl9pL1jqvbDhLa1Gm0kzWdACiBECCID0%2BR0n1ksfDqGx2guWMMwKe44AgpIaP21d1oR1zTUbNi4v6KYB2HMEECDp5izcmDUh9JT6vexqVmvXMyEUuUMAQVnmnymIqBfW7Z%2FqNBvEohdAtBFAgCTP78hcRtctibl9B5%2FsyD0CCMpKvbA6UVKh2q4TJXo%2FaX%2B1Yyf7KyBiCCBA0q7f8VuPxea86wekLaPbtMVIM5ShDShnBBDsqWWrtpin3p5sh4e6fVjFq%2FqYHzoRRIAIIYAASVllRmcKz76yT%2BpD%2B6B%2FrlY%2BfS6rzMAfBBDkyvqN2%2B2ctWPrdE%2Ft07R%2Fo0cEiAQCCBD3Fa0%2B%2FWWundPhvX7HG1%2FM4IJf8B0BBLm2KX%2BHeb%2F9bHPMhbuCSNVr%2BpmOfZcyRwQILwIIENcPZZ0dPKHurhWt9AGtieX5m7l%2BB4JBAEF50X5N%2B7zMIKLrixBEgNAhgABxsmFT9rAE9X7oe5u37gy6eUg4AgjK28ZN2%2B2JlsNrdk3tAy%2B4aaBdNQtAaBBAgDhYtWarafPRtLQP3dMv622vWM6KVggLAgj8PBmjIHLoeV3Tlu%2FtN2Jl0E0DQAABom1F3hbTqu3ktGt4VG%2FSz%2FzRc4ld8QoIEwIIgjg58%2BRbk02Fc3btIxveM9SMmbwm6KYBSUYAAaI8zMB7dq96k%2F6Md0aoEUAQlJWrt5pn3p2Suo7Iv8%2FuYK%2BDNH%2FxpqCbBiQRAQSIEs3jeO%2Fb2ebIC7oxrACRQwBB0BYuyzf3vTAudQFW9Yy0bjfNLtwBwDcEECAKNJxKvRunNti1nG6lq%2FvS44FIIYAgLKbN2WCuun9Yan96%2FMU97Jw5riEC%2BIIAAoRdn2ErTLXGBQduqpMu6ckHJSKJAIIw7l%2BrNOqbdmKn5%2BDlQTcLiDsCCBBWQ8bmmYtuGZT6YNSwK8370MUFgSgigCCMtFKgTuroIq1uf3vZ3UPNlFnrg24aEFcEECBsxk1baxrcNST1QaiJ5q99NoMxyog8AgjCbM26beaJtpPMflU62ffpvpU7mcffnGSX9AWQUwQQICzy1m41j742MTU5Uh%2BCD7Qeb5faBeKAAIIoWLg039z%2B9Bi7Upber8dd1MMubQ4gZwggQNC2bttp3v56ljnk3C72w26vih3Nnc%2BMNYuXbw66aUBOEUAQJQNGrTIVr%2BqT6o2%2B7pER7JeB3CCAAEHqMWi5OaNh79QH3IXNBpnRk7hAFuKJAIKo2bZ9p517d0DVgmFZuuirvmYREGCPEECAICxZsdl28bvgcULdHub7jgtZUhexRgBBVM1esNFOTHf77BrX9Tdjp6wNullAVBFAAL9XW9GFBA%2Bq0SU1z%2BP596ea%2FM1MMEf8EUAQZTpBpBNF7kKw%2B1TqaOftsUAIUGoEEMAvOlvmDsBUl94xxEyfuyHoZgG%2BIYAgDpbnbTHNWo1O7cs1jHbYuLygmwVECQEEKG%2Bbt%2B40bT6aZpd01IfVf2p2tWvOM9wKSUMAQZz0H7nSnHVF79TiIeoN0aIiAHaLAAKUJ50V866icmPLUWbVmq1BNwsIBAEEcZO%2FZYcNHm7J3qrX9DMTpq8LullA2BFAgPKgs2BPvT3ZnhXTh9JJ9XraFa%2BAJCOAIK669F9mjvnnSupaMevzX%2BcF3SQgzAggQK5Nnb3eVG9ScKCls2IPvjTerN%2FIlXQBAgjiTBeNbfzwiFSPd7MnRnMVdaBwBBAgVzSn4%2BMf55gK1TrbD59j63Sn1wPwIIAgCZ8D7b6fbVc41Htdc0TGT2NIFpCBAALkgno4NL%2FDnfm6%2FN6hZulKrpgLeBFAkKRVD0%2B%2FrHdqSNZ3HRcE3SQgTAggQC4%2BaE5r0Mt%2B0Kj3g7G%2FQOEIIEiSdRu2mSbNdw3J0rxArqAOWAQQYE989ss8s3%2FVXV3trH4CFI0AgiQOyWrz8fTUKlnqHV%2B7flvQzQKCRgABynpF8xavTUyd2dJZLj5UgOIRQJBU3QYuM4ee19W%2B%2Fytd3dcsXJofdJOAIBFAgNJavW6bqX%2FnEPtBsnfFjuaD72YH3SQgEgggSLIps9abky%2FtabeBE%2Br2MBNn0GOOxCKAAKUxa%2F5Gc0bDgomFh53f1fQasiLoJgGRQQBB0i1ZsTm1TLt6RAawLSCZCCBAaSabH%2F3Phaa0uomu9wGg5AgggDEbN203V90%2FzG4LmkOoixgCCUMAAUqiz7AV5uAaXewHxgU3DTR5a7cG3SQgcgggQIFt23eaG1qOJIQgqQggwO507Ls0dVGpK%2B8fZjbl7wi6SUAkEUCA9MVMbmk12m4T%2Bozp3G9p0E0C%2FEIAAYqjDwQXPm57aow9awWgbAggQDpdF%2BSuZ8emLljYf%2BTKoJsE%2BIEAAhSl5%2BDl9gNBHwx3PjPW7OQCUsAeIYAA2fTZ0uyJgp4QDfUdM3lN0E0CyhsBBCiMViZxFxi8%2FekxXL0WyAECCFC4rdt22iG%2B2j6Oqt3NzF20KegmAeWJAAJkmjxrvV1iVx8EOitF%2BABygwACFC1%2F8w5T%2B%2BaBdhup3KivWb9xe9BNAsoLAQTIXKP9pEsKLhR1ye2DzZatzPkAcoUAAhRv1Zqt5rQGvex2cvm9QzkBhrgigABO%2FpYdpsZ1%2Fe2OXwdKnH0CcosAAuyerpB%2B0D%2FLvr%2FYbmrQzQHKAwEEcNxKJMdd1MMsXr456OYAsUMAAUrmr95L7LayV8WOpt8IVsZC7BBAAPn813l2Z79v5U5myNi8oJsDxBIBBCi5R16dmDoptiJvS9DNAXKJAAJMm7PBVKjW2e7oP%2FxhTtDNAWKLAAKUnOYgVm9SMCz4%2BkdHBt0cIJcIIEg2XVjw3KYFO%2FgmzUcE3Rwg1gggQOlMnb0%2BtSS8hmUBMUEAQbK99OE0u2M%2F%2BsLudHED5YwAApTey59MTw3FWrt%2BW9DNAXKBAILkmjFvg9mvSsGZpY59lwbdHCD2CCBA2S5SWKVRX7vtPNF2UtDNAXKBAILkcledZWwt4A8CCFA22ma07eik2az5G4NuDrCnCCBIps79ltqduSafz1%2B8KejmAIlAAAHK7pqHhtvt58aWo4JuCrCnCCBInp07%2FzaV%2F%2BnObvPRtKCbAyQGAQQou%2BlzN5h9KnU0%2Fz67g5k8a33QzQH2BAEEyfNL10X2IOiIWt3Mhk1c7RzwCwEE2DO3PjnabkO3PTUm6KYAe4IAgmTZsfNvc%2FaVfewO%2FK2vZgbdHCBRCCDAnpk0c53tAVFPyLxFDB9GZBFAkCxdByyzB0BH1e5mNuXvCLo5QKIQQIA91%2BjBgrkgz7w7JeimAGVFAEGyXH7vULvjfuGDqUE3BUgcAgiw57oNLDiRdsyF3e3FdIEIIoAgOWYv2Gj2qtjR7F2xo1m4ND%2Fo5gCJQwABcjOU%2BKR6Pe221KEP17BCJBFAkBxa8Uo7bC1lCMB%2FBBAgN1q3K%2Fg8Y0leRBQBBMlR8aqCyee%2F9VgcdFOARCKAALmbjK5t6aAaXUz%2BFuYzInIIIEiGiTMKdtYVzunM5HMgIAQQIHfOuqK33Z669F8WdFOA0iKAIBle%2F3yG3VHf0HJk0E0BEosAAuROq7aT7fb0cJsJQTcFKC0CCJKh%2Fp1D7I76qz%2FmB90UILEIIEDudB%2B03G5Pla7uG3RTgNIigCD%2BNm%2FdaQ6o2snuqLlwExAcAgiQO%2Bs3brerOurChMvztgTdHKA0CCCIPx3s6KDnlPq9gm4KkGgEECC3zrt%2BAMvxIooIIIi%2Fd7%2BdZXfQNz%2FOcoVAkAggQG490Hq83aa0zDwQIQQQxN%2BtT462O%2Bi3vpoZdFOARCOAALn1yc9z7TbVpPmIoJsClAYBBPFXpVFfu4PuM2xF0E0BElLS2w8AACAASURBVI0AAuTW0HF5dps6o2HvoJsClAYBBPH299%2FGXvtDO%2BiFS%2FODbg6QaAQQILdW5G2x29S%2BlTuZHTv%2FDro5QEkRQBBvS1dutjvn%2FaqwcwaCRgABcu%2FA6pxkQ%2BQQQBAff%2FVeYp55d0pa3fbUGLtjPrxm16zbOAgCyk%2B772dnbXNHX9jdbo%2B3PDkm67a5LJEN7JY%2BtzK3nSNru%2B1qdNZt%2BlwEQogAgviYOnu97YbWjnh39Z%2BaXc2qNVuDbjIQWz92XliibVGlpUR30kMJ7NbqddvMkRd0K9F2tU%2BljmbSzHVBNxkoDAEE8fLkW5NLtGP%2B%2FNd5QTcViL1Lbh%2B8221xr4odzahJa4JuKhAZ%2BvwqyefcU29PDrqpQFEIIIiXDZu2mxPq9ih2p3xu0%2F7MBwF8MGXW7nslm788IehmApGi3sJaNw4sdrs6tk53e6V0IKQIIIifX7otKvZs68iJq4NuIpAYj70xqcjt8Yha3UzeWoZCAqU1dspa%2B3lW1Lb1a%2FfFQTcRKA4BBPFU%2F84hhe6UddVYAP72Sh5%2FceG9kl%2F%2FMT%2Fo5gGRdf%2BL4wrdrureNtguQQ%2BEGAEEyZmQzsRzIDwT0pl4DuR%2BQjoTzxERBBAkZ0I6E8%2BBcExIZ%2BI5UD4T0pl4jogggCDeQz%2BOql1wdqhyo75MPAcCnpC%2B9z9j1h9oPS7o5gCxoF7Ec5r0T82pYuI5IoIAgvhPSGfiORCeCelMPAfKZ0I6E88RIQSQMNu2facZN22t3blQZa%2BXP54eeBuiXhNnrEvcpEb9vhpLHfRrH6caPDrPvPPN7MDbEbdas26bSZqlKzcH%2FrqHqficS695izYF%2FRZF8QggYab18Ut6JWGKKu96v%2F1skySf%2FDw38NecokpSZ1%2FZxyTJug3bzIHVOwf%2BulPhLQ331GI0CC0CSJg1fniE3ZCOqt3dnFq%2FF0UFUofV7Grfh0%2B0nWSS5Ln3ptrf%2B9Dzuwb%2BN6CowurEej3te%2FSgGl1MksxfvMn%2B3hp2FPTfgApf7V%2B1YAXMPsNWBP1WRdEIIFEIIF%2F%2FscBs3vI3RQVSz78%2FLdEBpNVbUwL%2FG1BUYTV7QX6iA4hODgT9N6DCVzWaDiCAhB8BJMwIIFQYigBCAKHCWQQQAgiVXQSQSCCAhBkBhApDEUAIIFQ4iwBCAKGyiwASCQSQMCOAUGEoAggBhApnEUAIIFR2EUAigQASZgQQKgxFACGAUOEsAggBhMouAkgkEEDCjABChaEIIAQQKpxFACGAUNlFAIkEAkiYEUCoMBQBhABChbMIIAQQKrsIIJFAAAkzAggVhiKAEECocBYBhABCZRcBJBIIIGFGAKHCUAQQAggVziKAEECo7CKARAIBJMwIIFQYigBCAKHCWQQQAgiVXQSQSCCAhBkBhApDEUAIIFQ4iwBCAKGyiwASCQSQMCOAUGEoAggBhApnEUAIIFR2EUAigQASZgQQKgxFACGAUOEsAggBhMouAkgkEEDCjABChaEIIAQQKpxFACGAUNlFAIkEAkiYEUCoMBQBhABChbMIIAQQKrsIIJFAAAkzAggVhiKAEECocBYBhABCZRcBJBIIIGFGAKHCUAQQAggVziKAEECo7CKARAIBJMwIIFQYigBCAKHCWQQQAgiVXQSQSCCAhBkBhApDEUAIIFQ4iwBCAKGyiwASCQSQMCOAUGEoAggBhApnEUAIIFR2EUAigQASZgQQKgxFACGAUOEsAggBhMouAkgkEEDCjABChaEIIAQQKpxFACGAUNlFAIkEAkiYEUCoMBQBhABChbMIIAQQKrsIIJFAAAkzAggVhiKAEECocBYBhABCZRcBJBIIIGFGAKHCUAQQAggVziKAEECo7CKARAIBJMwIIFQYigBCAKHCWQQQAgiVXQSQSCCAhJnfAWTAoNHmnfe%2FNk88%2FYb9d%2BRofw%2B8evUdZiZNmVOuz7Fx03bTrccgW4uX5BV6n%2FzNO033noPtfRYtXlUuzz9rzuJAdsxlKQKI%2FwFE26LeJ%2Bs3bAv87%2B9X9ew9xP7Oc%2BcvK%2FI%2BvfsNt%2FeZM29puTz%2FlGnzAn8dSlMEkPINIAsWrkh9XhRXS5auLpfnz1uzKfUcK1auL%2FQ%2Ba9dtSd1n%2BYp15fL8eh2Cfq%2BXpgggkUAACTO%2FAsiGjdvNDbc0N%2F%2Bz13HmoP%2BcbU46rZbZ%2B4CT7ddXX3u3Wblqgy87jUOPrGRaPP5yuT6Hfhf9XqpnXni70PsMHDwmdZ%2Ff%2FuhRLs%2BvgKevV63eZF59%2FSMzeuy0wHfaRRUBxN8AMn%2FBcvPv%2FU6075M%2FOvQK%2FO%2B%2Fp6VAr%2Ff4oCFji73f%2Fgedbn%2Fne%2B5%2FutDbp06fb%2F537%2BPtfT785Puct1PP%2F%2FTzb6W%2BVpu1Lwj69SuuCCDlG0B%2B%2BKlT6rOguOrUpV%2B5PL9OyLnneP%2FDbwu9z29%2F9kjdJ9fvV%2Ff8P%2F7c2X6tE3LaLrQtBv3eL64IIJFAAAkzvwLIBx%2B1tx%2FsH336gz1YcKFEB8na%2BTzSso0vO42vvv293D%2FwXQDYp8Ip5vSzLyr0Ps0ffcneXh4BRGe09TqPHT%2Fdfq0zS3qez7%2F6JdAddnFFAPE3gLz51mf2BMDBR1Q0TW54IPC%2F%2F57Wpvwd9j3%2B2hsf7zYAaLs7%2FOgqdv%2BTefsrr32Y2i7LI4B89uXPZsjQ8amv9Tx6zqBfv%2BKKAFK%2BAUQniHSw7ert976y7wu9V7zfV09BeTy%2FCwB639ep27TQ%2B9zQ7OHUdpHrz0%2F1qOjzygWOUWOm2ufp0Klv4O%2F94ooAEgkEkDDzK4Bce%2F39pvI5DQq97YI615rT%2F1sn6%2FsavqQzmoWdCdFOe2XeRvv%2FGbMW2mENy5atMavX5hcaCIrqWlatWbvZ9Ok%2FwlZR3dzz5i%2B3bSnJsCYXQK5sdKf9d%2BSoyVkHS8eeeK65otEdhQYQ%2FV69%2Bgy1z%2Bd%2BR1c6aNLvqcfQ%2F4cNn2CGj5hoh10V1hbdZ%2BLkgg%2BY99p9m9XTNH3mQtv9PWHirKzH0GvpXjcNWdHjlNf7gwDibwA5u8qlplGTe8xd9z5p9j3wVLNs%2BdpC76e%2Fv4YNabhW5nvRvb90m4Y2ahsp7DH0vtF7bPLUufZ9m%2Flez3xPuve4CwjaPt2wD7VHB0ATJ81O3V%2FvW223eo8%2F%2F%2BI7xW7rCiBuu%2BzSbUDW7VVqNExtl5kBRNuD9hH9B47KGoaiNrg263fU0FIFjXXrtxbaDnd%2FPc%2BzhbRZ25teM%2FVaZg6R0%2Bvh%2Fl46Wzxu%2FIxyfa8QQPydA%2FLdDx2LPADXUCi9t%2FQeXLhoZaE%2FrxN82uZKOtTPBRC97%2F9vnxOyhifqfV%2FhkDNS20VmANH7uEevIWbosAlZn796%2F%2Bt2tUltHzxknH1PZ%2B4HvPfvO2CkfR71DOlzPm1fMml2kfuSzGOCaTPK95iGABIJBJAw8yuA1Gtwk%2FnPMVXtzijzNu0svHNB9CH%2B0CMvpIaIqM6vfU3aAbDOyFzasJlp3eZ927PywMPP2bO52kl6H1sf3hp2desdjxU6BEvd2mqXex4djL340nup23XWSUPH3LAMVf3Lbyl2DLkLIC%2B%2F%2BqE56vhz7HwX7%2B39Boyyt3%2F5zW9ZAeSTz3%2ByO3tve%2FQ43vHp%2Bv4XX%2F9qQ4y73yln1Lavo%2Ff51bukDwZvN37ti5qkPlSa3vRg2m0nn36BPZh0z9XisTamYtVL7dmpvfY%2Fyb7m5fX%2BIID4F0B0YKy%2F96%2B%2Fd7fzkPR%2Fve8y76fvHXBwwZAlN3RSPYjexznx1Jqp27W9ajt0PZw6SNa24n2P%2FbfyJWbMuF1DARtccaupVadx2vMqeOu%2BOtjX1y%2B0ftccd9J5NkC7IVQq%2Fay2b3fG1NWZleoW%2Bbvr5%2FW%2BrlStvrn9ricKPRBz26U3gPz0SxdzyJEVU8%2Bh7aFlq1dTB0EK8Pq%2BenpPO6tO6n7a%2Fr1DH90QLL0G3ja7nlLt%2BzQ8TAeC3sfo3LV%2F6jE0PEX7LLVpvwNPM3Xr31iu7xcCSDgCyLft%2F0x9VunzSO%2BR62580AZSd5%2FxE2bakwvuvXPO%2BVeYJ5990xx2VOUin8%2B979329dZ7X6bd%2FvOvXc2%2F9j3R9shkBhC9F13PiKrCoWfaz4vM4WX6ndQGdz9tf%2B5kn3cIVvvv%2FkrbLlzvrI4b9HnvvU2%2Fp%2BvlV%2BlzWscZbV5pZ1%2Bb8h5VQQCJBAJImPkVQD794ie70zji2Gr2rKvGlC5dmh1GVAoI%2BmDVwY7uo3BSufpl9gBZZ1HszqbZwzZM6MNeOzztePXBrZ2h92yiduJ6Xp2hzQwgOouiHa5Ciyac6oBJQ6N0f%2FUquOdRsFFI0E5QB%2BhqR41aV6UOtDLLBQDtCB9u8aK9v%2Fe%2B%2Bt5ZlevZs0HeAKIzO%2FpgafXMG7b3Rx8sGlLiAoc3gOhgUDt1BSH9q4O%2F%2Bx58NiuAKGi459FjueCkg68DDzvLBjC9pvr9dSCjx9X8APt3eKyNOejw%2F5rjTz7fvPvBN6nXpDyKAOJfALn%2FoefswbTONupM%2FJHHnZM19ELBVe9Fvaf0vtd7QnO1tH3pwEGlg6HzLmhkz7TqzKMORuz7%2Bc%2BC9%2FPlV99uH1tBQgfWup8OiI45oUbqzGZJA4gOgM6oeLE9Ozp77hLz%2BFOv2%2Ft8%2F2Mn%2B3toW9bX%2Bn5xvZTa3rX9advUdu3toXjp5Q%2Fs%2Fknt9AYQve8VOLR%2F0eug0PPxZz%2Fagxz9zt4AosfXbdrOtO9RgLvmunuzAoieVz27%2BhkFGddmbft6jRUutO2qh6Nx0%2Fvs%2FtCdgNFz6sSETkBoKJ33pEF5FAEk%2BACizwL9zW%2B85RHb%2B6btVicQtI3q%2Fab7aJvSCYGq515utyG9j%2FXe0vu0JAFEn9EKNDUvTN8e9b2LLrnBzhXzBhAFIn2t96DapH2Ank9tcm13AUQh%2Bs8Ove120e7j71K9lZkBRI%2FhPrMVeNzE9IZX3WYfw%2B1LtL1rX6JtwO1LFEC0Xzv1zAvtMUF59wwSQCKBABJmfq6CpbMb59a6OnV2TzsqnQnRGGjXdasDG30Aa1hCYZO23YRZBQMdFGgIkbuPuqV1H%2B0Y3fea3fZoWgDwBhAdYOvA3duVrYMLnVnR2V9196qNmUMxdEbIG1IyywUAHdC4Nrlx3zpjevTx1e3O1x1ouQCiMzzaeWYGGx2gKYB5A0jmuHHtjC%2B8%2BLpCJ6FnzgHR1%2Fq9MyfIqwdFv68bR6%2FXRz%2BnrvXyfm8QQPwJIAqb%2BpB2YVX1YPPn7d%2Fd9aC58KD3qXf4jw6StS0pnLz17hf2vaHeB%2B%2FjK8ioB1FnJnW7gmthvS%2BuJ6WkAURfew%2B0daCi%2FYib0F2aOSAKIC6w%2FNWxT%2Bo27Yv0umif4g0gN93awh7AuZMfrhQs9Bp5A4hOYHjvo9fROw8scxK6d1t2Q13uvu%2BptMfQwZ0OPh994hX7tQt63raXZxFAgg8gOkGk90XmcGR9nj325Gv2%2F9qm9HOZi43oc6EkAUSfeb%2F81s3uC2bOXmRv08G9QrS2hd%2F%2F6pkWQLS9ZG67%2BuzSZ5i2a28AyZx%2FqB5N17uROQk9cw6I25eoh8b7GO7EmtuXKIDomKC8h165IoBEAgEkzIK4DohChs6G6ANVOys3rEm3dezcz36tgwSdxXCl1Tm0Y9SBj93ZNHvYDufI3PmpR0Rnat1ZI53l1wGMd4ftAoh2ntXOu2K3vTYKQ962aEiUd4dZXABRm9SD4J7TBQj12GQGEHVfa%2BhZ5uPpddKOVY%2Flfl7j8jMPhtzvsrsA4s5kFXbmVAdUN9%2F2aCqA6GDVj%2FcEAcSfAOIOCHQQ65bV1AGwe7%2B6%2B%2BmARR%2FoRT3O9Tc%2FZHtAirpdBzN6zMwDJgUFvZfdwXRJA4jCRuakcbstP9amTAHEhXb3XncBQj2lmQFEwxt1Fjjzsd5o%2B6m9n3pp3c%2Fr4NF7HwUanaUtSQDJ3B9kzk1x%2B0j97bQvLGp%2BSa6LABJ8AHHvcR38a5ifQocbkuQCiHr%2FtLhC5uPp86ukAcSG4EPPtO9tt7%2FQySr1xHkDiE4A6D2onsTMx1NgVy%2Bnd3%2BT2RuhXhb1apQkgKiHR19nBgu3L1Gvi77W%2FkojC%2Fz6OxFAIoEAkvQAorMoOtBxQ3u8pa5kdSu7nZQbA6ohThrPmVlfu7MdzR4uNDxoToiGK2gHqS5qHbh4z%2Bx6A4jO4Fxy2c1FttsdYGjeRGFtUVjaXQDR1zrYUghRgNAYec2ryDzg0M5Uw0xct7S3NIdEZ0B1HxdAdPbHex8N0yhpAGn%2FfQf7dWHXQ1E73XwZHdy5M7zlXQQQfwLIZVfemjaO2lsa4uTup15I9YwU9Tg6s%2B%2B9f2a5HpLMydXaBvRe1sFSUQHETUL1BhAduGc%2Bhw6q9iSAvP7mJ%2FYEhU5U6Dk0xEOPkxlANCzL22OU%2BTtq6KYLIDqxkjncraQBxM3H0e%2Bf%2BVzVa16ZOmBTANG%2Bwo%2F3i4oAEnwA0TBIvQd00K%2FecB3kq0dAJ4hcAFGYVljOfLw33%2F68xAFEX%2Bux9Vzuc8V9RnoDiPtMKWylOH1%2B6HPEG0Bcj4orbfMlDSBt3%2Fncfp25WIXbl7g5lgogGn7m19%2BJABIJBJCkBxAN3Sju4MDtpHRwrZVpCvsg14GBzqa6nVBRAUQHD9pJa2y4zlpmTtD0BhCthqPhVpmPoUl4mijuJqNqpSnv7RqWorYUtuJWYQHEDTvRAZXGxLvvZ57xPOGU882d97TKejz1briJtbkIIG5YWGYvikKbzii5SfgEkHgFEI2%2F1oGrDv51QOMtnSX1DrfTqnR6T3l%2FXgsy6OBXB9s6sNYciszhgnqPaV6Rwr8ezztJVKUDEX3fTVRVANE8Eu99XEAu7wDihhxq%2B1Nvqut9zAwgOhly1TV3ZT2WQon2J%2Fp%2FLgKIGxaW2YuikzR6HhcICSDJCyB6z2jfnDm8SnP0XADR%2B1q9F5nbpOYulSaAuB5yzb3UyTz3fW8A0XNkvpe9vRuaM5KrAKJhYYX1omj71ffdHBgCCApBAAkzv4Zg6Wypzs5kLnOrHZnmabhuXh0866xk5opLbnyrWy2rqACiqlPvenumVzvIb9r%2FUWQAcRO8vXM5dNCj7%2BkgSsFJ7cq8cKEOGPT9oq7cmhlAVPrdtXP09jxkBhAFJp3R8i6JqsnoGoPrDo72JIBoUp%2B7XY%2BpnifvY7hVTtzQLAJIvAKImzvgXcLWlTsIcAfnWqRA8xG886PcsCoNhdB7Vv%2FXQYn3MbRd6H7adnSQ7AKCKw1fVK%2BkDrbdUC5tk26uifYH6l0pawBxk8JLEkBUWl3PbZeu5yEzgGjb05lWTX73hjGdTNBKcnsaQNwqdxpipt4WDa3xHkTqMb2T%2BwkgyQsg6lVQD533faFRBd4hWO5A3Ts0WHNHdKKgNAFEQ%2Fv0M9ouFHrcYjGZc0A030tzwrwn4jTxXdu3G5q1JwHEzXFK7UsyPofdalduuWECCApBAAkzvwKIxlbrbIo%2BtHXQoG5h%2Fes%2B%2FDV0yt3XrZKhD3f93120z9s7UFwA0VlY%2FbyCTObFm7wBREPDNGZUH%2FrPtX7HDn%2FSjlo7VjfeXGeGdZZUz622aCKgdnq6f1G%2Fa2EBRKvb6Hsay%2B2%2BlxlAdBCjNutsrLqdNdZXw8T0weOGr5UlgOgDRa%2B9uu71O%2Bh7WrnEvcb64NHvowNO77h%2FAki8Aoh60XQ2v6jbtS1qXofe%2B%2FrQ1%2F81gVoHyG5lujvuLtgGdSB08aU32DOuGgKhUK5hF9qe3Ko0bkUchRmFWx0oaTv2Lo%2FpVtLRNqftT0MbtY2UNoCotG%2FR7%2BjGr5ckgKi3U8%2BlkOCW1M0MIOo50j5CKwzppIXOuKrXRivGuZWpyhpAtG3rNdZwMH2tIaZ6zRTC9Dw6yNI%2BS8Ng3MEnASR5AUQ9%2BvqeThppW1JvmCZyq9dcPQ7quVRPmU68uc9KfW5qm1BvZmkCiOq2Ox%2B339Pjue9lBhCdqFIw1z5Fi03oAoo60aZ5mG6kQlkCiE566DNW93ELyrh9ifY%2Fbl%2BiC6l69yUEEBSCABJmfk5C18RrHYzoA1cfqpoLccvtLe2QoMz76qBcPRk6w6KzlNq5eS%2BUp52l9wDfW9r5KSi4g21vaYelJS69PQzNW7S2Oy49nw52MseaaiiW2qC26EDJLYlbVGlMuZ7f%2BwGis876ns5Sue%2FpTLK%2B571QoYasaHWQk06rZXuNtMP17ry1s9bPeFf%2FUulgyb0e7vm9Q6z0Aablhr0rX6l3SB9eOrDSmF8dBHlXPdIHgju7Vt5FACnfAKIPdb0n3CpyhZXem96VdvSvzrwquOoAWAcZ3veHgoYOpvXe0cGCDhK0PbnbdcCsxSN0u95jeq8pVGdeQEzf03alx9D7U0Mr1A7XS6IzoYXNR1H48J7t1f2ubnx3WsDILD2OtgX3tS6eqOfybtPqpdX3FPa926rG2GsfoAM6HewodLjbdYJAP5M5REZz2tx8F%2Ff8ridDpX2E2uxdfEIHetoX6TVTGNPJAe%2BJFF0T5N4HnvFlu1QRQPwNIBqyq%2FeS93o5bjvRtqQTVPr76ySB3is6EeCG7Wnb0ueVAoTer%2Focfeq5tvbzZHf7Bu%2FcI9cG9bK472n0gb7nnQyuE2Eayqz3qk4%2B6P3t7TXV8GX9TOaS%2Bwry7gSZe37vUGcN0VRAcYvOlGRfokVjijomKI8igEQCASTMglgFi6IyiwDi75XQKaqkRQDxN4CUtRRI3LU0MnvHy%2FtilUksAkgkEEDCjABChaEIIAQQKpxFAIlGAHHXrVLPoHrMNGJAPSOax5F5HQ5qz4sAEgkEkDAjgFBhKAIIAYQKZxFAohFA3FBcrYylIKJ5Qm6Z2syVsag9LwJIJBBAwowAQoWhCCAEECqcRQCJTgBRqfdD8zU0MT1zPiOVuyKARAIBJMwIIFQYigBCAKHCWQSQaAUQyp8igEQCASTMCCBUGIoAQgChwlkEEAIIlV0EkEgggIQZAYQKQxFACCBUOIsAQgChsosAEgkEkDAjgFBhKAIIAYQKZxFACCBUdhFAIoEAEmYEECoMRQAhgFDhLAIIAYTKLgJIJBBAwowAQoWhCCAEECqcRQAhgFDZRQCJBAJImBFAqDAUAYQAQoWzCCAEECq7CCCRQAAJMwIIFYYigBBAqHAWAYQAQmUXASQSCCBhRgChwlAEEAIIFc4igBBAqOwigEQCASTMCCBUGIoAQgChwlkEEAIIlV0EkEgggIQZAYQKQxFACCBUOIsAQgChsosAEgkEkDAjgFBhKAIIAYQKZxFACCBUdhFAIoEAEmYEECoMRQAhgFDhLAIIAYTKLgJIJBBAwowAQoWhCCAEECqcRQAhgFDZRQCJBAJImBFAqDAUAYQAQoWzCCAEECq7CCCRQAAJMwIIFYYigBBAqHAWAYQAQmUXASQSCCBhRgChwlAEEAIIFc4igBBAqOwigEQCASTMCCBUGIoAQgChwlkEEAIIlV0EkEgggIQZAYQKQxFACCBUOIsAQgChsosAEgkEkDAjgFBhKAIIAYQKZxFACCBUdhFAIoEAEmYEECoMRQAhgFDhLAIIAYTKLgJIJBBAwowAQoWhCCAEECqcRQAhgFDZRQCJBAJImBFAqDAUAYQAQoWzCCAEECq7CCCRQACJQgChqDBUUgMIRYW9khpAKKq4IoCEGgEkzF7%2FfEbgGzBFqfau2NH80m2RSZK%2Fei8x%2B1TqGPhrT1G7q8vuHmqSJH%2FLDnNqg16Bv%2B5UeOvwml3NwmX5Qb9VUTQCCOLtl66LzLF1upshY%2FOCbgqQeE%2B%2BNdmc0bC3WZG3JeimALGhzzd9zunzDogIAgji7aE24%2B3ZkDe%2FnBl0U4DEO%2BfafnZ7HDhqVdBNAWJDn2%2FarvR5B0QEAQTx1uK1iXbH%2FMqn04NuCpB4BBAg99p8PN1uVy1fT9Y8PUQaAQTxponT2jG3bjct6KYAiUcAAXLvhQ8KFszQEEcgIgggSMZKRk%2B9zY4ZCBoBBMg9fb5pu3r%2B%2FalBNwUoKQIIkjE29oHWjI0FgkYAAXLv%2FhfH2e3qra%2BY64jIIIAg3r78fZ7dMd%2FQcmTQTQESjwAC5J4%2B37Rd6fMOiAgCCOLtz15L7I750juGBN0UIPEIIEDuNbhriN2u%2Fui5JOimACVFAEG8DR6TZ3fMFa%2FqE3RTgMQjgAC5V61xwXbVf%2BTKoJsClBQBBPG2cGm%2B3TFXqNbZ%2FP130K0Bko0AAuTeoed1tdvVnIUbg24KUFIEEMTbjp1%2Fm%2F2qdLI75%2BVcfRkIFAEEyK2167fZberfZ3cwW7buDLo5QEkRQBB%2Fp1%2FW2%2B6gh43LC7opQKIRQIDcGj9tnd2mjruoR9BNAUqDAIL4u7b5CLuD%2FuwXVggBgkQAAXLrpy6L7DZV%2F04WWkGkEEAQf20%2BmmZ30A%2B14VogQJAIIEBuPfvuFLtNtXx9UtBNAUqDAIL469Bnqd1B17pxYNBNARKNAALk1tUPDOcaIIgiAgjib9GyzXYHrcno%2BZt3BN0cILEIIEDuaGXHo2p3s9vU2Clrg24OUBoEECTDGQ0LJqL3GbYi6KYAiUUAAXJn2pwNdns6qEYXs30H68wjUgggSIb7Xhhnd9TPvz816KYAiUUAAXLni9%2Fm2e2p4T1Dg24KUFoEECTDL10LVgrRARCAYBBAgNy5oeVIuz299tmMoJsClBYBBMmwYdN2c0DVggsSzpi3IejmAIlEAAFyY%2Bu2nebgGl3s9jRh%2BrqgmwOUFgEEyVstpO2XM4NuCpBIBBAgN3oPXWG3pZPq9bST0YGIIYAgOb79a4HdYVe9hmFYQBAIIEBu3P9iwbzG5i9PCLopQFkQQJAcGzdtN4ecW9BlPXz86qCbAyQOAQTYc%2FlbdpjDzu9qt6Vh4%2FKCbg5QFgQQJMsDrcfbnfZdz44NuilA4hBAgD33U5eCRVXOuqI3w68QVQQQJIsu1qQdd4Vqnc2yVVuCbg6QKAQQYM%2FVvW2w3Y7e%2BILVrxBZBBAkT73bC3beT709OeimAIlCAAH2zJjJa%2Bw2tH%2FVTpxEQ5QRQJA8uhq62Y2UUwAAIABJREFUduAHVu9sVq7eGnRzgMQggAB75ubHR9ltSJPQgQgjgCCZLrhpoN2Jt2pLLwjgFwIIUHa6htU%2BlTqaf5%2FdwUydvT7o5gB7ggCCZOo3YqU9ENqvSicza%2F7GoJsDJAIBBCi76x8tuPK5roAORBwBBMnVpPkIuzO%2FtvmIoJsCJAIBBCib0ZPW2J6PvSt2NNPmbAi6OcCeIoAguWYv2Gh7QHRA1Lnf0qCbA8QeAQQovZ07%2FzYXNhtkt50HXxofdHOAXCCAINlat5tmd%2BrHXdTDrFm3LejmALFGAAFK78vf59ntRhcfZOUrxAQBBMm2bftOU%2BO6%2FnbnfsczY4JuDhBrBBCgdFat2WqOvKCb3W4%2B%2FWVu0M0BcoUAAoyfts7sW7lgKNYPnRYG3RwgtgggQOnc9FjBsrvn3zDA7NjJZc8RGwQQQF77bIbdyR9UowsT%2FIByQgABSu6rP%2Bbb7eWAqp3M5Fksu4tYIYAAbpLflfcPszv7yo36mk35O4JuEhA7BBCgZGbO22gvlqvt5cMf5gTdHCDXCCCAo0nop9TvZXf4V90%2FjO5uIMcIIMDubdy03VRp1NduK5ffO9T8zUcR4ocAAniNnbI2ddap5euTgm4OECsEEKB4ChvugoMnXdLTrMhj1SvEEgEEyKRrguhiT3R9A7lFAAGK9%2BqnBfMRK1TrbE%2BIATFFAAEK0%2B772fZDQFee%2FeK3eUE3B4gFAghQtJ%2B6LLKfOdpGvv1rQdDNAcoTAQQoynPvTbUfBOoN%2BbnroqCbA0QeAQQoXI9By1PLwb%2FwwdSgmwOUNwIIUJzH3phkPxD2qdTR%2FNp9cdDNASKNAAJkGz5%2BdWru4b0vjGPSOZKAAAIURx8EzV%2BekOoJYTgWUHYEECDdiAmrzSHndrHbxTUPDTfbd5A%2BkAgEEKAkIaRV28mpOSFtv5wZdJOASCKAALtokvnhNbvabaLhPUNN%2FhauP4XEIIAAJfXyJ9PtB4XqibaT7MULAZQcAQQoMGj0KnPoeV1T1%2FrYvHVn0E0C%2FEQAAUrjox%2FmmL3%2BWaK38cMj7AWjAJQMAQQwpmPfpeaAqgUTzgkfSCgCCFBa3QctNwfXKBizW61xP7NwaX7QTQIigQCCpGvfYYFd1ETbwXWPjCB8IKkIIEBZjJu61pxQt4f9EDm2TnfbnQ6geAQQJJWG7Lql3VWPvDqRYbxIMgIIUFaLl2825zbtn1qm951vZrF8IlAMAgiSSEN11dvhFjJ57bMZQTcJCBoBBNgT6j7Xuu3urFbTFiPN%2Bo3MCwEKQwBB0miIbvUmBe%2F7Cud0Nr%2F14HpSAAEEyJHvOy60Hy76kDn50p5m8Ji8oJsEhA4BBEnSf%2BRKc8yF3e17%2FviLe5jRk9YE3SQgLAggQK6Mm7bWnHl579SQLC3bu4MxvkAKAQRJoP3%2BSx9OS62YWPvmgWbJis1BNwsIEwIIkOuxvvc8v2tIVp1mg8y8RZuCbhYQCgQQxN3yvC3msruHpj4DWr4%2ByWzdxkpXQAYCCFAe%2Fuq9xBxRq1vBuN9qne3V01nxBElHAEGc9R66whx3UcHqiFqq%2FdfuzPcAikAAAcrLomWbTcN7dp0Jq3vbYDN7wcagmwUEhgCCOMrfssM88soEu8KV3t9aHXHmPPb1QDEIIEB50rK8X%2F8x3xx6XtfUKijvfTvbbN9BbwiShwCCOF4TqnKjvvZ9rTkfz7w7hSFXwO4RQAA%2FLF252VzbvGAdeHcF9eHjVwfdLMBXBBDExbbtO%2B3Q2v2qdLLv6ZPq9TQDeF8DJUUAAfz0Q6eF5uh%2FlmXU2bKH2ow3a9ZtC7pZgC8IIIiDUZPWpHo9VHc8M4b9OFA6BBDAb%2FqgeqD1%2BNQSjVonvn2HBUxSR%2BwRQBBlm%2FJ3mFZtJ5u9%2F9l3n1C3h%2Bk2cFnQzQKiiAACBGXslLXmvOsHpM6iaeLikLFcwBDxRQBBVClonFK%2FV2p%2FfWPLUWY1vR5AWRFAgCBpMvqHP8wxh9csmKSuVVRuf3oMF61CLBFAEDWLl282TVuMTAWPMxr2Nn2GrQi6WUDUEUCAMFi1Zqt58KXxqa79g2p0sVfS3bBpe9BNA3KGAIKo2LJ1p3nrq5n2eh56z2qy%2BYvtpprNW1nhCsgBAggQJtPmbDCX37vr2iG6mKFWWuFDD3FAAEFULiR7%2BmW9U%2FvhercPtvtmADlDAAHCSF387mDNLfH4xW%2FzzA4mqiPCCCAIs3HT1tqw4fa7J9brYb7vuNBezwlAThFAgLDSqli%2F91ycdiau4lV97Pf4QEQUEUAQ1iGwj742MTUEVheMbfPRNHuFcwDlggACROGCV%2Br9OLZOwfVDVLVuHGj6j1wZdNOAUiGAIEx0xfJ23882h5zbJbUIiFa3Wrg0P%2BimAXFHAAGitAa95oMcel7Bilmqy%2B4easZNXRt004ASIYAgLLr0X2ZOa7BrWd2aNwwww8evDrpZQFIQQICoyVu71Tzz7hRzQNVOqbN2jR4cbq%2FOC4QZAQRB07WW6t7GPA8gYAQQIKoWLMk3dz07NjVuWXXl%2FcPM0HFczBDhRABBUIaNyzOX3jEkta%2FU8rqvfz6DeR5AMAggQNTNW7TJTqB0PSKqOs0G2SEGQJgQQOC3ybPW23kd6il21%2FN4oPV4s2zVlqCbBiQZAQSIC02cVBCpUK1zKohUb9KfVbMQGgQQ%2BEXX7bj96TFmr396iPetXBA8dGVzAIEjgABxs3L1VruEpHeyetVr%2BtlxzlxHBEEigMCPoakKGm5oqgKIekDmLNwYdNMA7EIAAeI8WV1B5PCau4KIrimiJX237yCIwH8EEJSXRcs22x7g%2FT2Lcyh4zJjHFcyBECKAAHG3YdN2u9b9cRf1SAUR%2FV%2FhZM26bUE3DwlCAEGuzV%2B8KWvoKcuTA6FHAAGSdB2R99vPNsdfvCuI6AJcT7SdZIctAOWNAIJcmTJrvbntqTFmn0q7VgFseM9QliMHooEAAiTx6r%2BamK4Lb7kPbo2T1rVEWMIX5YkAgj01fto6O7nczfFw10EaMYGLCAIRQgABkn5RLo2T9l5L5Nym%2Fe2EdeaJINcIINiTfZWCRuZJk7FTGGoFRBABBIAxsxdsLBhHfc6ucdSnNuhl2n4506xdzzwR5AYBBKXVZ9gKU%2Fvmgan9kq7joR4QJpcDkUYAAbDLqjVbbeg4oW6PtCsGK5wwTwR7igCCkti58297IdXzrt81TPTA6p3tfkirXQGIPAIIgGxbtu403%2Fw5314%2FxB0AaLLnTY%2BNMoNGc%2FCIsiGAYHcLZXzy81xzRsPeqf2OlhFv3W6aPTkCIDYIIABKNvZakz3dQcF%2Fr%2Bhjl%2FbduGl70M1DhBBAUJjleVvssuBH1OqW2sccVbub%2FR5DQIFYIoAAKJmps9ebR16ZYJfu9S7j2%2BK1iWb6XMZjY%2FcIIPCaOGOduevZsXZeh9unnH1lH3ux1M1bdwbdPADlhwACoPQXNtQBQrXGu4Znqeo0G2SX9922nQMHFI4AgqJ6Vd3%2BY8dOVt8DEoAAAqDstASmVqTZt3KntKusP%2FPuFCaLIgsBJNnXH9Ly3lUa9U3tK7Tf0DLgIydyDQ8gYQggAPbcslVb7OpZJ9XrmbZcpg4utIwmIASQ5ClsZT0N3dSKVguXsbIekFAEEAC5o%2BFXv%2FVYbOrdPjhteJYOPDVsi0nryUYASQ7NC3vwpfGmQrVd1xY6%2FbLe5qMf5rAfAEAAAVA%2BdKEwDcU67PyuadcU0ZAtekWSiQAS%2F%2Bt3aNvOnN9xbtP%2BdvjV9h3M7wBgEUAAlK%2F1G7ebj3%2BcYyp7xn6rqjfpbz79Za5Zt4FlNpOCABJPq9dtM%2B98M8uc2qBX2vwOXTeI%2BR0ACkEAAeDvpPUHWo%2B3VzV2ByoHVN01V%2BRvTpDGGgEkfsOsNJfDuz0ffWF32%2FO5cCnzOwAUiQACIJheEc0JqXFd%2F7ReEV0DQBNWuepxPBFA4jHMqkv%2FZeayu4dmDbPSNp2%2FZUfQTQQQfgQQAOHoFdH8EHcwsz%2B9IpGnK1ivWZdebgnWrv2XZd22hQvPhdqKvH9Wurske6W7oePygm4egGghgAAIB5051YXIdGbV2yty5uW97YGPDoAQHc1ajU77OxZXWilp%2FuJNQTcZxZwg8K5mdWydgmFWi5dzrR8AZUIAARA%2B46etM81fnmAOPa9r2tlWTWpVr4iGgZTW3EUc4Pp9bRjv36%2B4ev3zGUE3N9b6Dl9Zqvtv3rrT%2FNBpoal148C0v1Pd2wbbkwSsZgVgDxFAAISXDoRcr4h3vLkuaqYzsLMXbCxx78oxF3Y3YyavKfc2Y5d3v5212%2FBxRsPeDL8qR1qFSuF96uz1u72vtidtV0fV7pY2HFJLZ0%2BYvs6X9gJIBAIIgGiYMmu9afn6JHPkBbsOjhRKdNFDXWNgU37Rk19%2F7LzQ3l%2Fj11euZoK7X3SmvFrjgonnRVX3QcuDbmasl8c9pX7B0rhPtJ1U5MVD%2F%2By1JCvkKxhqaV09BgDkGAEEQLRs3bbTrsKjya%2B61oB3HkFRE9e980rq3zmEISQ%2BGjwmL%2B3A1ltNW4wMunmxpWGKV94%2FLPVaH1Grm%2B1RdJas2Jw1qXyvih3ttqJexx1lGOYIACVEAAEQXUtXbjbtvp%2BddZb9rCt6mzYfTTMLluTbibJ7V%2ByYdnurtpODbrpJ%2BoR0Jp6Xr1c%2FnZH1mv%2FYeZEN6Arq%2B1TatU0cd1HBkEau3QHAJwQQAPFZrUcXRftPza5pZ3RPv2zX1Zm99V3HBUE3OdET0pl4Xn4GjFqVFbrtRT%2BrdSq0t4MeQQA%2BI4AAiOfE9UYPDi%2F0IMx7Bl6hBf5PSD%2F50l5MPC8ny%2FO22B6Not73B9fobIM6q8IBCBABBEB8%2FdVrSbEToE%2Bs15OrrvtEZ9ndhQiZeF5%2B8z4uvXNIse%2F5lq9PDLqZAEAAARBfD740frfLwDa4awgTbn2ckH79o0w8Ly%2FPvz91t%2B%2F3zMnoABAAAgiAeNJB1mHnl%2BxCeM0eH22uuG%2BYHRNPlW%2FVv2NI4G2IY9W4rr%2F599lFDzn01k9dFgW9eQJINgIIgHj6pduiQg%2B%2BDjm3i6nTbJB5oPV4u4LWkLF5pvFDw0t04EZRUSr17p3WoFfWMsi6dg4ABIgAAiCe1KOhybiajK4lRnWxQl3MUOPkM13bfIQ9MHvopQn27DBFRbkqnNPZvp%2B1DLWsWbfNDBuXZ776Y75dglrXB9ES1gAQEAIIgHjauGl7ie%2FrAogO0DZv%2BZuiIl1uyWMXQAAgZAggAEAAoeJUBBAAIUcAAQACCBWnIoAACDkCCAAQQKg4FQEEQMgRQACAAELFqQggAEKOAAIABBAqTkUAARByBBAAIIBQcSoCCICQI4AAAAGEilMRQACEHAEEAAggVJyKAAIg5AggAEAAoeJUBBAAIUcAAQACCBWnIoAACDkCCAAQQKg4FQEEQMgRQACAAELFqQggAEKOAAIABBAqTkUAARByBBAAIIBQcSoCCICQI4AAAAGEilMRQACEHAEEAAggVJyKAAIg5AggAEAAoeJUBBAAIUcAAQACCBWnIoAACDkCCAAQQKg4FQEEQMgRQACAAELFqQggAEKOAAIABBAqTkUAARByBBAAIIBQcSoCCICQI4AAAAGEilMRQACEHAEEAAggVJyKAAIg5AggAEAAKbxWrd4UeBuo0hcBBEDIEUAAIKgAsm79VnNBnWtNtfOuMAsWrsi6%2FcefO9vb1q7b4lubhg6bYOrWv9EcdPh%2Fzf%2FsdZw58LCzzBWN7jADB48p9WPddGsL07rN%2B4EchH%2F5zW%2F2tdu4aXuZH2NT%2Fg77GF98%2FWsgv0NZiwACIOQIIAAQVAD5%2Bdeu9iBf9dZ7X2bd%2Fl67b%2B1tq9fm7%2FFznXP%2BFeba6%2B8v9j5jx083Bxx8uvlv5UvM2%2B99Zdp%2F38G0eaWdOf3si8y%2F9j3RdOzcr1TPqYP3O%2B9pFchB%2BIeffG9OPv2CUgWQ3%2F7sYV%2Fv8RNmpgKIHqPdx98F8juUtQggAEKOAAIAQQUQ9SxUqdHQVKx6qT1YDzqAPPTIC%2BaQIyuaZcvXpn1fX%2F%2FnmKqm9kVNIhNAylKZASSqRQABEHIEEAAIIoDMX7Dc%2FHu%2FE81b735hXnr5g0IPfAsLIHPnLzOPPvGKueSym22g%2BP7HTiZ%2F887U7X917GPavvO5ffy773vK9mA89Vxbc%2BRx59iejMefer3IIV0aelWpWv1Cb1M79Xjuaw2t%2Bv2vnmn30TAtPb6GlnkDiNp01TV3mVp1Gtu2L1q8Ku3nevQaYq6%2F%2BSF7e%2BOm95k%2FOvRKu12P9%2BZbn5k6dZvaIWvNW7Q2s%2BYsTt3%2BQut3Te9%2Bw02XbgPM1Y3vtsPIevUdZtuiXgzdR69x1%2B4Dbek5Lr%2F6dvuYGzYW9JD07D3EXHPdvfb1VpvV26PXVY%2FRq8%2FQ1HPlrdlkXn71Q9uWOvWuN80ffclMm7EgdfuSpavtz0ydPt8OA9Pv3eCKW82bb3%2Beei4CCICEI4AAQBAB5I22n9oAorkfk6fOtQe%2BrZ55o9gAMnHyHNsToWFBD7d40TS77VGz1%2F4n2bkW7mdaPNbGnHrmhbZn5ajjzzFPPvumeeDh58zhR1cxJ51Wy4aINWs3F9qmO%2B5uZf5vnxPM8y%2B%2BY2bMWlhs%2B9UOtcH7vQ8%2Bam%2Fb6yavK4Ace%2BK5psKhZ9qD%2BtvufNwO8TrtrDpm%2BYp19j4KMXrO2%2B96woaEq6%2B92%2Fzv3sfbYKXbFSAaXnWb2e%2FA08w99z9tWrZ61RxzQg0bqJYuXVNwwH1kJftz%2Bx54qjmzUl0zYNBo8%2BrrH9m2uIN%2BvRaVq19mjjvpPBsa9Hy6v0KX7qPAUf%2FyW%2BzPXHfjg%2BaX37rZ59bXr7z2YSoI1bywsX0%2BvaZ6nTRc7aD%2FnG1Gjp5i7%2BP%2BltVrXml%2Fz%2FsefNb2HOl7fs2HIYAACDkCCAAEEUDOrnKpPbB2X%2BuA9fiTz0%2BdsS8sgFx0yQ3mjIoXm5V5G1P3%2Bab9H%2FY%2B6gFwAURfP9KyTdpjlWQI1uy5S%2BxwMDcvRf%2FXgfYPP3UyK1auL1MA2fuAk83osdNS91EPhO7z2hsf26%2BvbHSnufDi69Iep1GTe2zPgf7f%2Fru%2F7P1%2F%2BqVL6nYFMYWWr779PRVAFCa8E%2BULCyAKPzNnL0qb5K%2F7fPdDxyLngHgDiHqW9LV6WLw9IqecUdv%2BbbwBpPI5Dext7nH0tUIhAQQACCAA4HsAGTJ0fNqBr0rDgfQ973AfbwCZN395oZPVdYC9%2F0Gn22FILoCoVySzl6MkAcQdLHfrMci0ePxlc94Fjexj6XkPPqKinTRf2gCiIVGZz6FeCvUy6P833vKI7d1494NvzOIleVn3bXLDA%2Fa5vGFKpWFdo8ZMTQUQby9QUQEk8%2FfXYx52VGUb1koSQDT8S69JZhvVy6RJ%2BgocLoDotcjsXVJvEAEEAAggAOB7AFGvguth0EG6SvMz9D0dqBYWQPr0H2H%2Fr7P4CgPeUm%2BAJpC7AHL08dWznrOkASSz1Nvybfs%2FUz0IboJ6YQHk%2FQ%2B%2FzQogmq%2BR%2BZjq%2BdFQJv1fc1U0H0MH8Bp6pWFSz774jp1L4XqG3H2LPOA%2BspJ54uk3dhtAMu%2Bjqnru5XbuR0kCiIZ%2BaRhZ5mO44KUeJBdAvGFNpb%2BP2kAAAQACCAD4GkA0AVwrTZ1b62o7WdlbGqaj62%2B4IVfeANJvwCj7f02AHjZ8Qla5ORtlDSBz5i019RrcZDp06lvo7Z98%2FlNBD03fYUUGEB2oZwaQex94Juux1JOgORve76mHR9fb0ATxfSqcYl8ffV9Dm9z%2FiwsgmfNnShpANC%2FG9Z7sLoBo%2BNvNtz2a9Riau6IAtX7DtlQA%2Be2PHgQQACgcAQQA%2FAwgbt6BVmzKvE09DbpNcy4yA4gmXOsg97EnX0v7mWXL1pimNz1ouvccvEcBRMOHNI8icyhTZgAZMXJSqjcg82BcczcyA4hClfc%2BmktS4ZAz7MpcWmVKQ7A6dUm%2FvoiGmelxdF%2F1FmkSu3fei9qqx9CcjNIEEE0y995H80G0EMDrb35SogCi4WSaWJ45HEzBTcPK9H8CCADsFgEEAPwMIBp%2BpIBQ2AXyVq7aYEOArg%2BSGUD0tcKBekjUG%2BIO5hUqtAqThjIVF0A0jEmleRbeZXszD5I1DErzSdwQKAUfHUxr1SkdZLuDb%2FVMqBdEE8x15l%2B9F5pwnhlA9LV6CLSClFa%2B0u%2BgHg63dK2Ws61R66rU%2FA%2F1EClQabUqN%2BFc81DuuvdJGzw0t0Uraul1co9R0gCi3%2B3rb3%2B3v79%2Bv0sbNrPzT9T7o%2FsoCNnw8GcP%2B5pnBpBff%2B9uv37mhbdTj6uhVhoCpzksBBAAKBECCAD4FUB0DQ%2F1YmiCd1H30XwEHXDrWhmZAUQH8Dpo1vc0jEtn73Xw7e1NKSqAuGuNqBR0CntuhQQd6KuNup8mt%2BtfHWDrWhbe6130HTDShiH3mCeeWjP1HN4AosCh%2BS36nfQ4mkfienhUI0dNtr%2BLwotWkzrwsLPsxHDXo6P69IufbFDQ76vH0bwXt0xvaQKIVtyyywIfcoZti4KbQoX7GYUSLVesn1NPU2YAUSl86PVRe444tpoNNVpq1wVKAggA7BYBBAD8CiDqKdCQKXehvsJKYUP30YGzegP0%2F8wei8FDxtnlaTt37Z9a6tX78%2B4aG5mlg%2BOx46cX2QPiSj0CGir20ac%2F2Ot0FHVNED2PVszqP3CUbat%2BL2971UOj9ug2hSRdYND1rBT2OLpwn36nwtqvn9P8FC03nBmgNDE%2B82rx6ilRW9zXOvhX8FM40gpauu6H93ZXemwNM3PXGNF9MlcUmz5zoWn%2FfQe7itmUafPSblNo0c%2Fob%2B39vv5ORf1dCCAAEoYAAgBBXAeE8rdcAAm6HX4UAQRAyBFAAIAAEv8igABAaBBAAIAAEv%2FS%2FBQNvQq6HX4UAQRAyBFAAIAAQsWpCCAAQo4AAgAEECpORQABEHIEEAAggFBxKgIIgJAjgAAAAYSKUxFAAIQcAQQACCBUnIoAAiDkCCAAQACh4lQEEAAhRwABAAIIFacigAAIOQIIABBAqDgVAQRAyBFAAIAAQsWpCCAAQo4AAgAEECpORQABEHIEEAAggFBxKgIIgP%2Ff3n3HSVXd%2Fx%2F%2F%2F%2Ff9fTVRY4omUZOYaBJNBHtBUWPssZeIxCAqKhZQRBFEEBSlCoJYQAEBBURhgaW3pffee9%2BlwxbKcr6P91nveHd2Fxd39565Z17Px%2BPzkJ2dnTk73IvnfU%2B5KY4AAgAEEMqnIoAASHEEEAAggFA%2BFQEEQIojgAAAAYTyqQggAFIcAQQACCCUT0UAAZDiCCAAQAChfCoCCIAURwABAAII5VMRQACkOAIIABBAKJ%2BKAAIgxRFAAIAAQvlUBBAAKY4AAgAEEMqnIoAASHEEEAAggFA%2BFQEEQIojgAAAAYTyqQggAFIcAQQACCCUT0UAAZDiCCAAEASQu5%2BdYV7rsJSiYl2nXZZBAAGQygggAFD7ldm2w0ZRPtX2nQWuTy0AKA0BBABWrT9oWnywzDR7f2ms64lm88zPvrv6%2Fc%2B6Wc7bE5dq3G6xOanaUPu5XfPIJNOsk%2Fs2VbT6D9vk%2BrQCgLIQQADABxNn5ZhfXjXcdqJvqpNl9h884rpJsdLz6%2FXmJ9WLQki95vPM0cJjrpsEAL4igABA3GVO3m5Ov3yY7TzfXX%2B6ycs%2F6rpJsTRw5BZzyiVFI0haF5R%2FqNB1kwDARwQQAIizAZmbi3WaC%2Bg0V8jIrB2JMHfbk1PNwVxGkgCgkhFAACCuPh243pz83bShuk3nmiNHmTZUGbLm7DS%2Fuvr76Wz7Dhx23SQA8AkBBADiqFu%2FteakakW7HTVss8gUsmahUs1butecVTPTfr5XPTzR5Ow%2B5LpJAOALAggAxE37nqsSW61qxyNUjeVrD5g%2F%2FnOU%2FZyr3T3ObN6e77pJAOADAggAxMWxY8a80nax7RBr9KNz7zWum%2BS9DVtyzYV3jrWf%2Bfm3jjarNxx03SQAiDsCCADEgbaF1ToPdYS1XWyfIRtdNyltbNmRb6rfM85%2B9n%2F4xyizbM1%2B100CgDgjgABAHMLH468XhY9TL80wX4%2Fe4rpJaWf3vsPmukcn27%2BDs6%2FPNItW7nPdJACIKwIIAKSyw0cKzSMvz7IdX93lfFTWDtdNSlvaDatm7aIQogXq85fvdd0kAIgjAggApKpDhwvNQw1m2g6v7k0xbnq26yalvdy8o%2BbWJ6bav5Mza4wwsxbtdt0kAIgbAggApGr4eODF78LHFYSPVKI7zd%2F%2BVFEIOeOaEWbmQkIIAJwAAggApBrdzfy%2B52fYDu7PrxxmJs7Kcd0klBJC7qg3LfF3NGn2TtdNAoC4IIAAQKp2bH9x1XA6tikeFO9%2F4fugOGEmQREAyoEAAgCptL7gtieZ2hO3qXIPBut0mCoHAOVBAAGAVAkft9SdkljcPHvxHtdNwgmEkIcbFoWQ0y7LMCMmbXfdJABIZQQQAEiFaVc3fxc%2Bfn3tCDOH8BE7R44eM%2F99bU4ihLBdMgCUiQACAC7lFXy%2FravuLcEN7uIdQh5tNDuxJiRrDut3AKAUBBAAcDl1597nZiTWfMxdwsiHD3etD4eQKXN3uW4SAKQaAggAuLrDeXCfj19dPZw1H54Fy2AbZQVLptQBQDEEEABwcZX8sVfnJHZOYqqOn1v03l1%2FemJTgfnL9rpuEgCkCgIIAEQdPuo0%2BS58XM5NBn3fXCDY2ezs6zPN0tX7XTcJAFIBAQQAonLsmDH1W863HdJTL80wmZPZrjUdtle%2BqU6W%2FTv%2F3Q0jzYp1B1w3CQBcI4AAQFTh48XWC21H9JRLMsywCdtcNwkR2XfgsKlRa5L9u%2F%2FTzaPMus25rpsEAC4RQAAgCk06LLEd0J9UH2oGjtziujmI2N79h81VD0%2B0x8Bfbx9jtu8scN0kAHCFAAIAVa1z7zW243ly9aHmy%2BGbXTcHjmTvKjAX3TXOHgtXPjTR7D94xHWTAMAFAgioK2b1AAAgAElEQVQAVKWvRmy2wUOdzi591rhuDhzbvD3fnHfzaHs8aIF6%2FqFC100CgKgRQACgqoybnm0Xm6uz%2BWaXZa6bgxSh3bB%2Bc%2B0Ie1w82GCm3RkNANIIAQQAqoJuPveLq4bbTmbdpnPtInQgMHPhbnundB0fz7da4Lo5ABAlAggAVLbVGw6ac24YaTuXuiP2kaOkD5Q0fOJ289OLi6bnte6%2BwnVzACAqBBAAqExbs%2FPN%2BbcWzfGvWXuyvQ8EUJZ%2BGZvMSdWG2OOlW7%2B1rpsDAFEggABAZW61eul9421nUv%2Fds%2B%2Bw6yYhBtr2WJnYovnbsVtdNwcAqhoBBAAqg6ZZ3VFvWuJmc5u257luEmKkcbvF9tg5%2FfJhZtai3a6bAwBViQACAJXhhdYLbAfyjGtGmGVr9rtuDmKmsPCYebjhTHsMnXvTKLtdLwB4igACABXVte%2BaxBSaEZO2u24OYiqv4KipUWtS4kaFrB8C4CkCCABUxJip2YmdjLr3ZxExKr6Jgabw6XjSiIhGRgDAMwQQAPixlq89YM6sUXRDuWdazHfdHHhi%2FrK95vQriu4R0rwzN7AE4B0CCAD8GLv2HjIX3jnWdhK1%2BJx7faAyfTNma2J73s8Gb3DdHACoTAQQADhRhw4XmpvrTrGdw2p3j2O7XVSJtz9aYY%2BxUy7JMJNm73TdHACoLAQQADhRbT5eYa56aKK5pe4Us2UH2%2B2iahw7ZswbXZbZY%2B2Op6aZnN2HXDcJACoDAQQAAABAZAggAAAAACJDAAEAAAAQGQIIAAAAgMgQQADE0%2F4DB83X344yW7bucN0UoMrs3rPPHuc7stkFC4A3CCAAUk%2BXbn3M1Onzjvuc7TtyzJPPNjNz5y2JrF1AZTl27Jjp2PkzM3vu4uM%2Bb936zfY4X7psdWRtA4AqRgABkHrqN2hphgwbd9znHD161OTk7DYFh9iaFPFTWFhog8XIMVnHfd6RI0fscX74MPeaAeANAgiA1KEwoSvCz7zQwnT%2FpL9ZuGiFfXz9hi1m%2Bcq1ttM2feZ8s2TZanPo0GGzdPkas3%2F%2FwWKvsWz5GjN2wjSzYNFy%2B%2Fyt27LNnj37ij1n46Zt9jkzZy80BQWHzM5de0x29q5iz8nLy7ejMJmjJpvZcxbZ9wtbtGSlnf51MDfPjJ843WzbnlP0OxQcMlOnzzXfDh1rxk2Ybl8bCMvNyzez5iyyAaTH54PMkqWr7ONr1m40q1ZvMEeOHjVTps01K1auM%2Fn5BfY413EWHj3Rz%2BgYXrR4pf1ax%2BK%2BfQdKjJ7oOTp%2BFWAUZFRhet0p0%2BbY43zu%2FKXm8OEjxb6%2FYOFyO9q4b%2F8BezwHP6%2FzI2vqHHucj584w04VA4ByIoAASB3qxDRp3sE8Vf8N82Kjt8277T62j3%2Fe5xvzbvtPTNeP%2BtpOW98vM0pMwdKISLfvvq%2FXeL5hK%2FNeh0%2FN6292NN8MGZN4D3WY9PqNmrxnXmrcxrzWrL1p36mn6dy1d%2BI5CjwvvdrGPP9SK9OqTTf7Wq82bWc2b9meeM7rzTuavl8Ote%2Bl91SHUkGn8ettTeOm7Uz793vaPz%2F7YgsbioDAtm3ZieOmQaO3Tacun9vHFbo7fdDLdOj8mf2e1n4kT8FSkNBzdAzrGHyuwVv2ax3PI0ZNSrzHlwOH25%2FTsaj3aNbifXs%2BfdTjq8RzVq1eb7%2F34sutTas2H9qRR50v4fUmOke%2BGjTCvr5eT4FHIeTlV981Td7oYM8dfU%2FtUIACgHIggABI%2FSlYCiD1nmtu14aoc6ROWHIAUedLzwk6arqK%2FOlnA%2B1zggCiq8b6evTYKfaqsf25kZPsY0EA0Wur09a246f2Kq%2Fk5uaZt97pZlq0%2FiDRJnX%2B9H4KNHv27rfvN%2FDrTBs6gqvICkXtOvYw77T9KLLPDvGdgqUAomPqo0%2B%2FNNk5u%2BxxlBxAdCwr1GqkJDheg%2BAdBJA585bYrydPmW2%2F1rE%2BeMho%2B1gQQDSyopD9ftdedtRONJr4Rsv3bdgPBxC1SeeJRlh0TPfu%2B61p1qKT%2FXNRG46Y1u9%2BmAhSAPADCCAA4hFA1OnS1JVAcgB5s1UX2xELO3gw1zz9%2FJuJANKj1yA74hGED9GfddU3CCDB1JgNG7cWey1N19LjwdVhBZDkYKGO2XMN3zJr121KPLZ3336zefP3IyfA8QKIRiPC0%2F2SA4hG4nr2%2BrrEyGE4gOg8CIdlUVho9Np7iQCicBI%2BngOTsmbZxzXlKgggHZOChV6jwSvv2KmM4TawIx2AciKAAIhHANEUkrBwAFGI0M9kjJhQ4rUUOIIA0qbdx6bbx%2F1KPEePBQFE0170unpMV6KDCqbFrFi1LhFA%2BvQbUux11AELpqroSnK%2FrzLsqEs48ADHCyBvv9e92PPCAUQjDZp6NXb8tBKvp6lUQQBRGE8OKaJdt4IAomNTrxU%2BxlUasdP7bdy0NRFABg4eWex17BTFxm3s8%2FRemu61fMVajnMA5UUAARCPANL8rc5lBhB1zMJXgMMUFIIAolAQngMf7vgFAUTz3dUx05QTLcxNLk2NCa8BSaYrzfMXLDO9vvjGvPJ6W9suTR2jc4byBJDkUbVwANEUKf1Zi76TKRAEx7%2FWl%2Bj4S6a1IsHxr9E6jQ6Wdoyrdu%2Fem3hdhfLSdufSVK%2FPeg82L7%2F2rm3XJz0HVMInAyANEEAAxD%2BAiKaEJHe6dLNCzV8PAoiuAGtReZiCgUZJggCiq8ulTU3RwltNT8kvKCgzgGiHrg0btxR77eGZE%2B3r5ewsvvsQ0tuPCSD6mWdfbGlDcph2WgsHcI3WaSQj%2Bf0UJoIAMixzQtFUq6Sds7Sbm47zYB1TaQFEO3SFN2TQaw%2F%2BtmiNiaY9AsAPIIAASD1aRxHu9JQngHzeZ7DdiSeYh65OkbY4DS9C1zai9mfmL028zsjRk4stQt%2B1e6955vk37XsGoxbqjKlTp7UiwWOlBZB2nXrYkKP3DkycPNOOqGghOxDQcaTjQgG1vAFEPvykv51uFQRkjUQkL0LXa%2Bq1tV118F7aLCG8CF1BQ%2BFc06cCWoyu99eGC4HSAohCvN4zPKqn80jnTfI2vgBQCgIIgNSjTpAWnWuHnvIGkAMHcs17HT6x9xDRjjyaFqJteLXTzzdDx3wfSnoNsp2zFm9%2FYKeqvNqsvX1%2B527fb8OrBbrqnLV8u6udF68REm3JG95mtLQAonnw%2BjktANYUF3XS1CkblDSHHhAd0xrtU%2FAobwDRVs9aJ6LzQ8etjm9NrVJoVwgQhQAFFR2Lb73T1R7j2rVK6zU%2BDk1B1GifzgVtwav31g5uGknctHnbcQOI7g2in1NQ0XH%2BwYdf2PcqbQ0WAJSCAAIg9WhbW93cTzcCDBa9BjdrC2gqlG5aGL4Bmq7I6uZtmkKimxhqPYZ2FRo1dkqxn9UOVwoZ2vFK25HqXgYaLQnTDj8KDupg2TnxSTda040Ik3fKCto6JGOsDToDvs60zwNKs2vXnsQNMUUBVyE2%2BUaBOs6DXamCIK17y2h0TceXtoDWeo5g291weNFj%2Bnnd5FNB44v%2BQ0s8R8epjvNRY7JKTMlS2AhPtwqsXrvRBnsd51qkntxuADgOAggAPyiwKCiE6S7o4avHWhze76thxaaO6D4KuulhcPUYSGVaM5K8C5a2fdZxHmz%2FrGCte9KEKWhr1GTCpJmRthcASkEAAeBPANG0kIzh483KVettJ0xTXDSNKrhhmu78rOdoSpeu2GqURPc40LQT3a8DSHXDR060050UtnU8z5i1wK5N0l3Og2Ctu5XrONdWuxoRVPDWjTV1HxCNqACAYwQQAH5Q52vMuKk2dGinIN2PQ0FDO2GFaQG65tlrznzDxu%2BYD7p%2FYUdKgLgc59oiWms6dJxr3YamVSVvcqBgoilXWmOidSJaE5KdXbSFNAA4RgABAAAAEBkCCID0tHLdAdO6%2BwrTrscqk1%2Fw%2Fba5gC8yJ223x3jfjKK1IQCQIgggANKPpspf%2BdAE878XDbEdNMBHW7PzzemXD7PHedac4jfWBACHCCAA0s%2Fg0Vttp%2BzMGiPM3v2HXTcHqDIN2yyyx%2FptT0513RQACBBAAKSXwsJj5vIHikY%2F3v2Ee3TAb9tyvh8FmTSbURAAKYEAAiC9DMjcbDtjv70u0xzIPeK6OUCVe6XtYnvM3%2FhYluumAIAQQACkj6OFx0z1e8bZzlj7nsXvrA74avvOAnP6FUWjIBNm5rhuDgAQQACkj6Hjt9lO2Dk3jDS5eUU3JwTSwWvtl9hj%2F86ni99FHQAcIIAASB%2B3PzW1aOerD5e7bgoQ%2BY5Yp1ySYU6qNsSsXH%2FAdXMApDcCCID0sHrDQdv5%2BunFQ82WHfmumwNE7pGXZ9kA3ui9xa6bAiC9EUAApIeX3i3ajrT2K7NdNwVwYuKsHHsO%2FPKq4WzAAMAlAggA%2Fx3MPWLOuGYEN2RD2rvs%2FqItqD8ZsN51UwCkLwIIAP99PGCd7XRdfO94exd0IF199BXnAgDnCCAA0ueqr4IIkM409epXVw%2B358NkbkwIwA0CCAC%2FzV%2B2NzHvXVOxgHTX8J2F9pyo13ye66YASE8EEAB%2Ba9ppqe1s1W0613VTgJQwff4ue06cWWOEOXS40HVzAKQfAggAv11wx1jb2Ro%2BcbvrpgApQWs%2FzrtltD0vRmbtcN0cAOmHAALAX3MW77GdLM15zz%2FElV4g0LjdYntuPPUG07AARI4AAsBfr3dcYjtZTzRj%2BhUQNmPBbqZhAXCFAALA32kmf75tjO1kjZjE9Csg%2Bfw4%2F9aiaViZkzk%2FAESKAALAT7MWfX%2BFt4DpV0AJr7Yvmob1ZDOmYQGIFAEEgJ9adVtuO1ePv870K%2BB4u2GdfX0mNyUEECUCCAA%2F3VQny3au%2Bg7d5LopQEo6WnjMjhDqPFmyer%2Fr5gBIHwQQAP7Jyz9qTrssw3asNm7Nc90cIGXd9%2FwMe55067fWdVMApA8CCAD%2FjJuebTtVF9451nVTgJTWufcae6481GCm66YASB8EEAD%2Bad55me1U1W8533VTgJS2YPm%2BxGYNmpIFABEggADwT83ak22nasCIza6bAqS0wsJj5qyamfZ8mb9sr%2BvmAEgPBBAAfjmQe8SccknR%2Bo%2Bt2fmumwOkvH%2B%2FNMueL516rXbdFADpgQACwM%2F1HxfdNc51U4BY6N5%2FLetAAESJAALAL7qKq85UnSZzXDcFiIUZC4pu2vmX28e4bgqA9EAAAeAX3XhQnamOnzOdBCiP3Lyj5uTqQ81J1YaYvfsPu24OAP8RQAD45bL7J9gAMnZatuumALFxwR1j7Xkzdd4u100B4D8CCAB%2FFBwqTCxA37GrwHVzgNgtRO%2F%2B5TrXTQHgPwIIAH%2FMX77XdqLOuWGk66YAsfL2Ryu4dw6AqBBAAPij97cbbSfqzqenuW4KECsZ47fZc%2BfaWpNcNwWA%2FwggAPzxavvFthPVpMMS100BYmXDllx77px%2BxTBzjBuiA6haBBAA%2FtB9DNSJ6vn1etdNAWJFoeO0y4rWT23fyfopAFWKAALAH1c%2BNJEdsIAK7oQ1a9Fu100B4DcCCAB%2F%2FPa6TNuBWrHugOumALFz25NT7fkzaNQW100B4DcCCAA%2F5OUftZ0nlW6sBuDE1Gs%2Bz54%2FnXpxE08AVYoAAsAPy9cesJ2ns6%2FPdN0UIJZaf7jcnkMN2yxy3RQAfiOAAPDD6Ck7bOfpmkfYRhSoyDbW978ww3VTAPiNAALADz0GrbedJ93RGcCJmzAzx55Dlz8wwXVTAPiNAALAD626FU0fafTeYtdNAWJp9YaD9hzSZg4AUIUIIAD8oHnr6jy98%2FEK100BYmn3vsP2HPpJ9aGmsJC7EQKoMgQQAH6o02SO7Tx177%2FWdVOAWDpaeMycXH2oPY%2F2HTjsujkA%2FEUAAeCHe%2BpPtx2n%2FsM2uW4KEFtnXDPCnkcbtuS6bgoAfxFAAPjhhseybMcpc%2FJ2100BYuv8W0fb82j%2B8r2umwLAXwQQAH6ofs8423GaPn%2BX66YAsXXlQxPseTRxVo7rpgDwFwEEgB9%2Bf%2BNI23HSDQkB%2FDi3PjHVnkffjt3quikA%2FEUAAeCHn12WYTtO23LyXTcFiC3dR0fn0eeDN7huCgB%2FEUAAxN%2Bhw4W206TKzTvqujlAbNVrPs%2BeR136rHHdFAD%2BIoAAiJedew6Zr0dvKVb9MjYmAsiAkZuLfS9j%2FDbXTQZS0rI1%2B0ucS3c8Pc2eR9rWOvl7Mxfudt1kAH4ggACI370KrniwaKFseerNLstcNxlISZu25ZnTrxhW7nNp9JQdrpsMwA8EEADxM23%2BLnNStR%2FuMJ1382imZAHH0br7inKFj9qvzHbdVAD%2BIIAAiKe6Tef%2BYKeJnXyA4ys4VGj%2BftfY455HGiXZuDXPdVMB%2BIMAAiCeduwqMGfWKLprc2l1R71prpsIxMKYqdnHDSAdPlvluokA%2FEIAARBfXfuuKbXDdOqlGWbleu4HApTXAy%2FOLPVc%2Btu%2FxtpREgCoRAQQAP4tSGfhOVA5C9JZeA6gChBAAPi1IJ2F50DlLEhn4TmAKkIAARB%2Fj702h4XnQAVpqtX5t44umsZ4WQYLzwFUFQIIAH8WpLPwHKicBeksPAdQhQgggK%2F6DNlomr2%2FNG3qX09PN%2FVbLnDejihr9uI9Jp0cOXrMdPx8tfPP3feqWXuyadJxifN2%2BFytP1xu9uw77PqUAlwhgAA%2B2rnnULnvbkzFt258LMukk%2FEzcpx%2F5hRVWdWt31rXpxTgCgEE8NHW7Hz7P7hTLskwr3VYSnlWtRrNtn%2B%2FNWpNMulkZNYO%2B3ufe9Mo538HFPVj6%2FIHinbu02gekKYIIIDPAUTbauYXHKM8q8zJO9I6gNSsneX874Cifmw93Xw%2BAQTpjgAC%2BIgA4ncRQAggVHyLAAIQQAAvEUD8LgIIAYSKbxFAAAII4CUCiN9FACGAUPEtAghAAAG8RADxuwggBBAqvkUAAQgggJcIIH4XAYQAQsW3CCAAAQTwEgHE7yKAEECo%2BBYBBCCAAF4igPhdBBACCBXfIoAABBDASwQQv4sAQgCh4lsEEIAAAniJAOJ3EUAIIFR8iwACEEAALxFA%2FC4CCAGEim8RQAACCOAlAojfRQAhgFDxLQIIQAABvEQA8bsIIAQQKr5FAAEIIICXCCB%2BFwGEAELFtwggAAEE8BIBxO8igBBAqPgWAQQggABeIoD4XQQQAggV3yKAAAQQwEsEEL%2BLAEIAoeJbBBCAAAJ4iQDidxFACCBUfIsAAhBAAC8RQPwuAggBhIpvEUAAAgjgJQKI30UAIYBQ8S0CCEAAAbxEAPG7CCAEECq%2BRQABCCCAlwggfhcBhABCxbcIIAABBPASAcTvIoAQQKj4FgEEIIAAXiKA%2BF0EEAIIFd8igAAEEMBLBBC%2FiwBCAKHiWwQQgAACeIkA4ncRQAggVHyLAAIQQAAvRRFA8vILzcc9vjR33vO4%2BdvF%2FzSXXHG7qfXYi2bcxJnFnjdrzlJT79nXzTvvdiv1dcaMm2a%2Fv33H3sRjuXlHTdfuX5g77q5jLqx%2Bk7n0qjvNo%2F9taCZPmVtme%2FYfOGxf54eqzxffVsrvr9dp%2FPp7TjowBJBoAkjztzod91hq9fYHVd6Glas32feav2Cl%2FfrboePM8w3eLPP5O3fn2ufrOXv25pf4%2Fuq1W%2Bz3p89YWKF2fTlguGnYqHWx869lq87mtn%2F91wwbMdHMW7DCvs%2BqNZur9PPp92WGeanx25GfgxUpAghAAAG8FEUAUefif35yrg0grzZta56u39T8%2FZKbzf87%2BQ%2FmjZadEs%2F7%2BtvR9jFVxvAJJV6nc9fe9ntr129LPKawode%2B%2B74n7WvrvS6o9g%2F7vDbvfVhqe%2FbuKzCXX3NXohRa9Pxfn3NpscfLCkInWvVfaG5%2B%2F6ernXRgCCDRBBAF61N%2F%2Fldz%2FgU1S6177n%2BqytswbfpCexwPz5xkv27x1vvmtF9cUObzt27bnTjfmrXoWOL7s2Yvsd9Tx%2F1E2nH%2Fw8%2BYN0Pn9cuvvmN%2BdVb1xNeffjbAvu5DtZ4zk7Lm2HNdX8%2BYuahSP497H6hn3mrdJfF1g5db2XPcxXn4Y4sAAhBAAC9VdQBZvHSt7Vy83aZ4Z%2F5g7hFz131PmP895U9m%2FYYdxQJI0JHbvTfvuAFEIyb6ukPnnsWepyus%2F7ztUXPyaeeZbdv2%2FGAbd%2B3Jta%2Fz7PNvVMlnoNffkb3PSQeGABJdANEVfRd%2Fx%2BFzavv2Pfb4P5EAovPtJz873yxYuKpSAoguADz%2BZOPE1zqPw6OWuuig19WFAH2t9qrdan9lfh5%2FvvB689QzTYqdh%2BF2xKEIIAABBPBSVQcQdV7U2VBnJvl7o8dOtUEjmIoVBBCFFY1qvNas7XEDSI%2FPB9qvFy1ZW%2BK1h2SMt6%2Btq8IVCSBLlq0zrzdvbzsyGlFJfq9vhow1c%2BcvN8tXbrQdPk21Cq5AB6Uru3pe%2BLGly9ebJm%2B0M08%2B%2FZqdnrNm3dYq%2BfwJIKkVQNTR%2FvDjfvbve%2BLk2fZ40d9%2FcEwP%2BmaUeemV1vbKffKUpAMHj5ivBo4wrzR5104l%2BqTnVyY7Z3%2Bx1%2B7%2F1TCzcVP2CQUQjVCccdbF5sZ%2F%2FttOl%2FyhABJM7VKpDTp%2FgumQ%2Bt1%2B%2B%2FvLzbU3PGD%2FrMdnz11mfy%2F9Wef6A%2F9%2B1gYetXXFqk1mw8Yd9s9qf3h6WMfOn9nzQ7%2Fv%2BEmzirVB76V%2FLzTqqeld3T%2FpnwgXCjJ6b4121LzxQfu94PfRzyRPM9Nojd6n9TtdbVvD39cUMZ3POTsPmPc%2F6GXfq32nTyO7oEAAAQgggJeqOoDof%2BDqxOiK6A%2BNRgQBZMKk2bbDrxEMde7LCiADvx6ZCA4VubJZVgBRaPjp6X82f%2FnbDebBR%2Bqbiy65xX4d7pBpatWtdz5mOzu33PEfc%2FV199rX0rSrsqZgjRg5OTHKo6k555x7pe0olicsnWgRQFIrgGh9ho6PR%2F7zgvnlb6vbjrqOhfP%2Bep157PGXzc%2FP%2FLu5puZ99nhQRz7olCt8qDOt52rk8N4H65lf%2FKaavcqvIFGRKVjvtu1uevYaZP%2Bs6VFlBRCFk%2F%2FWbWROOvVPti0KEmrDBRfdaNZt2G7bqKmLp%2Fz8LzbQ6M%2FJU7BeaNjCnH3uFfY19P3BQ8aUmIK1aXOOHUU5%2FYy%2F2amVWjOm7wdTItUOnXMKMZrWqSlfej%2BdYxpN3bf%2FkH1tnatnnn2JufLau0udgqVQc%2FqvLjR%2F%2FHMN%2BxqXXf0vOyLb7aO%2Biefo%2FLzqunvsuaq%2F4ytq3GX%2B%2F0%2F%2FaNtU2SM2pRUBBCCAAF6q6gCiTok65upA6H%2Fu1%2F%2FjIdsxGjl6SmIKRmkBRB2vs%2F5whbnuxgfs1c7SAog6Gno9PaYOzT9uqWWvHGuxur5XkQCiK8vqIKqTFby%2F%2FquOozotQadPnR79XrqaHfxsu46f2tcbOmxCiQCi6Si%2F%2Bd1l9mpz0Ea915%2F%2Bcq1dz1LZnz8BJLoAohChEY3SSlMRwwFEoXbzlp32MY1q6LG%2F%2Fv1Gs2XrrkTnWI8FGyEE4UIje8F7Bq%2F1Rb%2BhFQ4g6tRr2qI68kEbkgNIn75D7NcDBmUmXkPnojr1CuhlTcFKXgOi9SZ6n%2BDr5ACi80BBbNmKDfZrta3OE6%2FYsKNO%2F6LFa%2Bzz%2B%2Fb%2F%2FkKARos0ahqMdpQ2BSscQHTu%2FeG8a%2By%2FGcGUNdVzLza3%2F5YE760AovfSqEfwHAUhPXa8jS4qqwggAAEE8FIUi9CD6RLqlKiTFix8%2FcWvLzLtOnxSagAJT98KOhWlLUJXh0QdIl09Pvf8GonXVnjQlIkfG0B69Rlc6sJY7Qikx3v3%2BcZ%2BrWBx8%2B21S4Qu%2FW7qeCUHkOB3DHckVYMGj7LBpbI%2FewJIdAFEnebwJgbhypo6r1hoCHdoNX1Pj4V3ysrZddA%2B1rb9x%2FZrTavKHJVV7Kp70BHv0q13hQNIMN1QIywa5SgtgNx%2BVx27eUTy66hjr1GP4IJCRQKIduPSyMUzzzUr9h76XRXk1GaVPovwRQZNpdKFgPDGE8cLIMHIrP4bfh8FGbuu7P0eiQDyuz9elbgIEf5ctLtXVR9XBBCAAAJ4ycV9QDRdQ9vyqtMWvqKaHEBUmm6iMKEOWGkBJLnUEdH8b11NLq2DUd4AovUZuhKqMBF%2BrkYrwtNBFCw0Zz%2F5NTVVQ9M6kgOIOnv6eX0GUXzWBJDUnIKlwBk8pmlDekzrKcJrIJJ3clOI0RV6TX9Sp1id%2FsoMIKpg%2FZXWZyUHEE1Vql3npRKvo%2FfX84J1TBUJIFoIrz%2BHp0GVVnqupnNpBFQjGfos1O7yBhAFDL1PMAoVLgWg4JxWANGUuPD3g8CoEaGqPq4IIAABBPBSVQcQdW7ea%2FdRqd%2FT%2F%2Fx11bLuU6%2BWGUB0RVJTnjQtIzmAaLpV8g5Y4SCi5x7vPgjHCyC6r4PmmIevfIY7i8GojIKFFsImv6auFD%2F86PMlAoiuaOvnNc%2B9qjsvKgJIagaQ8AhYeQKIAovWHtxw08N2pEyddp0HlR1ANB3p4stvsyFCgSccQNSh11So5NfR%2Ba3Of7AYvSIBRJs86M%2B6QFFWu7WGSv9u1Lj%2Bftt2fZb6t0QXDMobQIJ%2FS5LXjmlURZ%2BzFqQHAUSfefg5BBAgUgQQwEdVHUC01786G6Xd6EzTSRQugk5CaQFEpZChx7XwNhxA%2FnVvXbuAO3mUIuhIaBF7g5feqtAUrOCmbkFpNx89PnbCDPu1gsV9Dz1d7DnaIUdTWZq%2B2aHMKVhapxL%2BGY24BFNfKrMIIH4EEN1oU6E2HIiDkF2ZAUSl4KFOeHC%2BBQFEv58Waie%2FjtZ%2FaBQi%2BLoiAUQBSOdt%2BMaFKo1kaiqbNrJQsNd0y%2FB5ryCRPGJUnilYY8ZPL%2FY%2BWsulx7UuR18TQADnCCCAj6o6gGgnKf3PWldO1akKHlcgUcfkh6ZgBUFFO9kE6zuCABKsEdF88fA9QxQoNPJR1g0NyxNANEKhzps6YcFcc81x1%2BJx7YgTdH4ULOLbJfkAAAgxSURBVDRSEszxVwdRr6MOXLClZziA6PfWVJabbq2VCGV6nt5Loy6V%2FfkTQKILIJoOpMXLpZXuUl6RAKKwreMuOGb031r%2FbWCfo6v5lRlAVJreFJxvQQD54MM%2BJTre2qVO058UoIPHFJR04eHHLkLXlrh6frDltdbDaHe5IPxoIwjtpKXH9bXOT%2F1MeGqkSrtz1XrsxVIDiD5f7ZB1482PJEZu9O%2BMznc9J%2Fi3igACOEcAAXwUxRoQTWfQlAl1hrQ2otqlt9pOu%2BZahzsuZQWQ4KaDmmKRvAZEowya%2FvGzX15gQ4o6P3ptdYpatupcoW14tQORrsYqPGgBrq7yaiee8I5X%2Bp7miGvRuaaEaDer8BSOsrbhVXvV0dEWn%2FoctNtX8o0XK6MIINEFkKDDXlqps1uRAKJd43QsKrxq0wN10J%2Bu39RcWP0mux5EV%2FQrM4Dovhc63sMBRB10jfbp%2BFYY0O52Os8UvMIXF%2F7z%2BMv2nAxGRU40gCj8B3eW1zmtz06lfwP0fd09Xe%2Brc0pt0HmktSkaIdHOedqeW89T%2BFBbdU6Wtg2vdqnTe%2BhnNLqjERN9XsHudSoCCOAcAQTwUVSL0HXjPe38oyurWjOhNRTBdp9BaR63drcp654e6mDp%2B8nb92qHHO2mpVEP3bxQ88fLcwf0oNSx0usuXLS6xPd0FVYLc3UzNE11SV67oU6QOjbaZlXP0xXYmbMWF3uOXje42WJQClF6PbVbHZ7wDeAqswgg0QQQdYp1DJVVwVQfddT1dfjY1%2FGsx8IbEwTHpG7UFzw2b8EKe4xpt6zgnjHauUojE%2BoUa4ME%2FUywRbQe02Lystqs6U56fjA6k1w6pvX94MaGKh2nCk86z3SDTnX2k%2B%2BHoSCtHaKCbXL1OuGpTvq3IPx1sKuVQk%2FwmEZ4tL2wziftOBe%2B4WJwXiqcaR2YPns9ps%2Bqa%2FcvEiMnurCgGxwGAUqPB1Mng9LvrjUsOr811TP5hqAKPcn359Hvp%2FbqBopVfVwRQAACCOAlF7tg%2BVRBAHHdjrKKABJNAKGoqigCCEAAAbxEAKlYEUBSEwGE8qEIIAABBPASAaRipQXwPT4f6LwdZRUBhABCxbcIIAABBPASAcTvIoAQQKj4FgEEIIAAXiKA%2BF0EEAIIFd8igAAEEMBLBBC%2FiwBCAKHiWwQQgAACeIkA4ncRQAggVHyLAAIQQAAvEUD8LgIIAYSKbxFAAAII4CUCiN9FACGAUPEtAghAAAG8RADxuwggBBAqvkUAAQgggJcIIH4XAYQAQsW3CCAAAQTwEgHE7yKAEECo%2BBYBBCCAAF4igPhdBBACCBXfIoAABBDASwQQv4sAQgCh4lsEEIAAAniJAOJ3EUAIIFR8iwACEEAALxFA%2FC4CCAGEim8RQAACCOAlAojfRQAhgFDxLQIIQAABvEQA8bsIIAQQKr5FAAEIIICXCCB%2BFwGEAELFtwggAAEE8BIBxO8igBBAqPgWAQQggABeIoD4XQQQAggV3yKAAAQQwEsEEL%2BLAEIAoeJbBBCAAAJ4iQDidxFACCBUfIsAAhBAAC8RQPwuAggBhIpvEUAAAgjgJQKI30UAIYBQ8S0CCEAAAbxEAPG7CCAEECq%2BRQABCCCA1wHk1EszTPcv11GeVcM2i9M6gPz19rHO%2Fw4o6sfWDf%2FJIoAg3RFAAB%2Ft2FVg%2FwdH%2BV01a0826WTM1GznnzlFVVZ17r3G9SkFuEIAAXz1Zpdl5tFGsymPa8i4bSadHMw9Yuq3nO%2F8c6eoiladJnPMxq15rk8pwBUCCAAAAIDIEEAAAAAARIYAAgAAACAyBBAAAAAAkSGAAAAAAIgMAQQAAABAZAggAAAAACJDAAEAAAAQGQIIAAAAgMgQQAAAAABEhgACAAAAIDIEEAAAAACRIYAAAAAAiAwBBAAAAEBkCCAAAAAAIkMAAQAAABAZAggAAACAyBBAAAAAAESGAAIAAAAgMgQQAAAAAJEhgAAAAACIDAEEAAAAQGQIIAAAAAAiQwABAAAAEBkCCAAAAIDIEEAAAAAARIYAAgAAACAyBBAAAAAAkSGAAAAAAIgMAQQAAABAZAggAAAAACJDAAEAAAAQGQIIAAAAgMgQQAAAAABEhgACAAAAIDIEEAAAAACRIYAAAAAAiAwBBAAAAEBkCCAAAAAAIkMAAQAAABAZAggAAACAyBBAAAAAAESGAAIAAAAgMgQQAAAAAJEhgAAAAACIDAEEAAAAQGQIIAAAAAAiQwABAAAAEBkCCAAAAIDIEEAAAAAARIYAAgAAACAyBBAAAAAAkSGAAAAAAIgMAQQAAABAZAggAAAAACJDAAEAAAAQGQIIAAAAgMgQQAAAAABEhgACAAAAIDIEEAAAAACRIYAAAAAAiAwBBAAAAEBkCCAAAAAAIkMAAQAAABAZAggAAACAyBBAAAAAAESGAAIAAAAgMgQQAAAAAJEhgAAAAACIDAEEAAAAQGQIIAAAAAAiQwABAAAAEBkCCAAAAIDIEEAAAAAARIYAAgAAACAyBBAAAAAAkSGAAAAAAIgMAQQAAABAZAggAAAAACJDAAEAAAAQGQIIAAAAgMgQQAAAAABEhgACAAAAIDIEEAAAAACRIYAAAAAAiAwBBAAAAEBkCCAAAAAAIkMAAQAAABAZAggAAACAyBBAAAAAAESGAAIAAAAgMgQQAAAAAJEhgAAAAACIDAEEAAAAQGQIIAAAAAAiQwABAAAAEBkCCAAAAIDIEEAAAAAARIYAAgAAACAyBBAAAAAAkSGAAAAAAIgMAQQAAABAZAggAAAAAExUOv0ffHgF0HrQpJ8AAAAASUVORK5CYII%3D" alt="diagram" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The ML model needs at least 10 days of spend history to generate a reliable baseline. Before that window, detection accuracy is lower. Don't rely on it for new accounts or services that have been running for less than two weeks.&lt;/p&gt;

&lt;p&gt;One detail that matters: AWS Cost Anomaly Detection runs once per day, not in real time. A spike that starts at 2am will appear in an alert by the following morning at the latest. For same-day detection, you need CloudWatch billing alarms as a complement.&lt;/p&gt;




&lt;h2&gt;
  
  
  GCP and Azure: Budget Alerts and What They Miss
&lt;/h2&gt;

&lt;p&gt;Neither GCP nor Azure matches AWS Cost Anomaly Detection for out-of-the-box ML-based anomaly alerting. Both rely primarily on budget threshold alerts, which are different: you define a budget, and you get notified when spend reaches 50%, 90%, or 100% of it. That's not anomaly detection — it's overage notification.&lt;/p&gt;

&lt;p&gt;GCP does have a meaningful advantage in programmability. Budget alerts can trigger Pub/Sub messages, which feed Cloud Functions or Cloud Run services. This means you can build a response pipeline: when spend exceeds 80% of a daily budget, automatically pause non-critical workloads or notify Slack. The infrastructure for reactive automation is native.&lt;/p&gt;

&lt;p&gt;Azure Cost Management added anomaly detection to its alerts framework in 2023. It works at the subscription and resource group scope, using 7 days of history as its baseline window. It covers daily spend anomalies and sends alerts via Action Groups (which support email, webhook, and Azure Monitor integrations). It's less configurable than AWS's system and the sensitivity tuning is coarser.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;AWS&lt;/th&gt;
&lt;th&gt;GCP&lt;/th&gt;
&lt;th&gt;Azure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ML-based anomaly detection&lt;/td&gt;
&lt;td&gt;Yes, native&lt;/td&gt;
&lt;td&gt;No (threshold only)&lt;/td&gt;
&lt;td&gt;Yes, limited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monitor granularity&lt;/td&gt;
&lt;td&gt;Service, account, tag, cost category&lt;/td&gt;
&lt;td&gt;Project, billing account&lt;/td&gt;
&lt;td&gt;Subscription, resource group&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minimum baseline window&lt;/td&gt;
&lt;td&gt;10 days&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;7 days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Programmatic response&lt;/td&gt;
&lt;td&gt;Via SNS + Lambda&lt;/td&gt;
&lt;td&gt;Via Pub/Sub + Cloud Functions&lt;/td&gt;
&lt;td&gt;Via Action Groups + Logic Apps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-time detection&lt;/td&gt;
&lt;td&gt;No (daily batch)&lt;/td&gt;
&lt;td&gt;No (daily batch)&lt;/td&gt;
&lt;td&gt;No (daily batch)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The shared limitation across all three: none of them detect anomalies in real time. They all run on daily billing data. If you need same-hour detection, you need to build it on top of cost streaming APIs or usage metrics.&lt;/p&gt;




&lt;h2&gt;
  
  
  Threshold Strategy: Avoiding Alert Fatigue Without Missing Real Spikes
&lt;/h2&gt;

&lt;p&gt;The most common mistake with cost anomaly detection is setting thresholds too low. An alert for any spend 5% above baseline in a production environment will fire constantly due to normal daily variance. Teams stop looking at them within two weeks.&lt;/p&gt;

&lt;p&gt;The goal is a threshold that catches meaningful anomalies while staying quiet during normal operations. Here's a starting framework:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Environment&lt;/th&gt;
&lt;th&gt;Absolute threshold&lt;/th&gt;
&lt;th&gt;Relative threshold&lt;/th&gt;
&lt;th&gt;Review after&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Production (high spend)&lt;/td&gt;
&lt;td&gt;$500&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;td&gt;2 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Production (low spend)&lt;/td&gt;
&lt;td&gt;$100&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;td&gt;2 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Staging&lt;/td&gt;
&lt;td&gt;$100&lt;/td&gt;
&lt;td&gt;30%&lt;/td&gt;
&lt;td&gt;1 week&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;$50&lt;/td&gt;
&lt;td&gt;40%&lt;/td&gt;
&lt;td&gt;1 week&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sandbox / experimentation&lt;/td&gt;
&lt;td&gt;$25&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;td&gt;3 days&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Use both thresholds together (not OR, but AND logic where supported). An anomaly that's $200 over baseline but only 8% relative to a $2,500 account probably isn't worth a 3am alert. An anomaly that's $40 on a service that normally costs $10 (400%) definitely is.&lt;/p&gt;

&lt;p&gt;For AWS, configure separate monitors per service category rather than one monitor per account. Data transfer anomalies are invisible in total account noise. A service-level monitor on &lt;code&gt;AWS Data Transfer&lt;/code&gt; with a $50 threshold catches NAT gateway misconfigurations that would never trigger a $500 account-level alert.&lt;/p&gt;

&lt;p&gt;Tune thresholds after the first two weeks. Look at your alert history: which alerts were real anomalies, which were expected variance? Adjust upward for noisy services (CloudFront, Lambda), adjust downward for stable services (RDS, EKS node groups).&lt;/p&gt;




&lt;h2&gt;
  
  
  Making Alerts Actionable: Routing, Runbooks, and Programmatic Response
&lt;/h2&gt;

&lt;p&gt;An alert that arrives in a shared email inbox that no one monitors is worse than no alert. It trains teams to ignore the channel. Route alerts to where the relevant person actually looks.&lt;/p&gt;

&lt;p&gt;For AWS, the pattern is: Cost Anomaly Detection → SNS topic → Lambda function → Slack/PagerDuty. The Lambda enriches the alert with a direct Cost Explorer link filtered to the anomaly's service, account, and time range. That link is the difference between an alert that gets actioned and one that gets dismissed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAyAAAAMCCAYAAACRFKJVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nOzdd5Qb5d238ffv53nSCySBdAgkQAg9dEJISAi9BQgECIRmMDbYgDHGvfeOO%2B4FF9x777333u21vW7rbv%2Fe873NiJF21x7bsyNpdH3OuU%2FslVYayUGaS%2Fc9o%2F9nAAAAABCN4f8vojsCAAAAAAIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQADkhn0Hjtm6zQUMRkaMPfuOpfs%2FCQBIFwIEQG7Ex0%2FuHGbfuG4gg5ER4we3DLbN2w%2Bn%2Bz8NAEgHAgRA%2FK3fXOB2%2Bi69e5j947VpDEZax6%2F%2BPML9%2F3HO4vx0%2F6cBAOlAgADInQDRzt%2FhI6cYjLSOFz6cQ4AAyGUECID4I0AYmTQIEAA5jgABEH8ECCOTBgECIMcRIADijwBhZNIgQADkOAIEQPwRIIxMGgQIgBxHgACIPwKEkUmDAAGQ4wgQAPFHgDAyaRAgAHIcAQIg%2FggQRiYNAgRAjiNAAMQfAcLIpEGAAMhxBAiA%2BCNAGJk0CBAAOY4AARB%2FBAgjkwYBAiDHESAA4o8AYWTSIEAA5DgCBED8ESCMTBoECIAcR4AAiD8ChJFJgwABkOMIEADxR4AwMmkQIAByHAECIP4IEEYmDQIEQI4jQADEHwHCyKRBgADIcQQIgPgjQBiZNAgQADmOAAEQfwQII5MGAQIgxxEgAOKPAGFk0iBAAOQ4AgRA%2FBEgjEwaBAiAHEeAAIg%2FAoSRSYMAAZDjCBAA8UeAMDJpECAAchwBAiD%2BogyQ7Tv2Wt7ug2nfyQ0yCg6dsO3b8%2B3AwePn%2FLuHDp90v%2BsfO3buS%2FtjCnMsX7nRducXhH67BAiAHEeAAIi%2FqAJk3oIV9j%2Ffusx%2B9Zvb3c59unegzzY2bNzhtnfK1Pnn%2FLv5ew%2B7300dP%2Fn5jfbRJ%2FVt774j5xQzrdv2sJWrN4XyuLZu2%2BNub2fe%2Fgu6ne%2F88Hc2eOj40J93AgRAjiNAAMRfVAFS7qPa9rNf%2F9HtiI8YNSWtcRFVgFSp1sSWrdjgxvQZC61Ovdb2gx9dY08%2FVyrwbR0sOO5uq%2B%2BAkaE8rlmzl7jb0zZdyO0QIABQIggQAPEXRYBoGdPPL7vVGjXtYL%2B%2F4a%2F28qvlCy3N0o6x%2Fqwd%2Fm49Btm06QsL3c76DTvs8y79rGv3gW4JkP%2ByRYvX2LoN291Spz59h7vI0UyLhv7cvedgW712S6HbnDFzkXXpOsAGDByTtEzKHyCr1my2OfOWF5qZUFRs2pxXbIA0bdG50GXtOvZ2lw0dPrHQDJEe9%2Bix01x0ePExddoCd%2F0GjdvbmnVbk54zRUnvL4bZlq27C92Pln117faldezc1xYuWu1%2BpuVveu50e%2F2%2BHOVmQ7zrr12%2FzXr0GmxfDhpru%2FYUXlqly3V%2Fk6bMdY%2BdAAGAEkGAAIi%2FKAJEO%2Fff%2FN4VtnHTTqtcvYn98CfXJh0%2FoJ3hiy%2B9zl58pZz99Fe32JVX3%2BN2kmvVaZW4Ts%2FeQ%2Bx7F11tf7jpb3b3n5%2B27150ldWu%2B%2FXl%2BtlTz75ll115p4ucb3z3Cnvh5ffsrw8872ZedLv6fUWDF0X%2FeORld7%2F33f%2BcXXPdffbDH%2F%2FeRo%2BbXihA2nfq425P2%2B%2FdnwJJl0%2BeOu%2BcAmTf%2FqP245%2FfYG%2BUquj%2BrkB67c0K9u0f%2FNZuuOUB99xcd9Pf3ZIrLZP67TV%2FcrelgKtZu6X7He34X%2FzT6%2B2Kq%2B52Q49L2%2Bjdx4RJs%2B1HP7vB%2Fe4f73zUbXv9hm1dzPz6ijvc7el5Urzo%2Bs1adnFBoedNz9Wlv7zZRo2Zmri9Tl36ue37xeW3usuf%2BOcb7u8ECACEjgABEH9RBMg%2F%2F%2FW2Pfz4K%2B7PCxaucjvA%2BnTeHyD62auvf5T49P%2B%2Fb1RwO7teDGjpUrUazRK%2FM2TYBPc7mjHwAkTX0UyC%2Ft6oWUd3%2Betvfexuc%2F%2BBY3btjfdb6bJV3OUTJ8%2Bx%2F%2FvOb2zp8vWJ23z0yf%2FaM8%2B%2FUyhAFALayW%2F5WbfEdT%2F4uK5d%2FYf7iny8ZwoQjdvvedyFkbfzf9Elf7C585cnZinuuOcJe%2FDR%2FxS5BGvzll0umipVbexmItxjbdrBBZ5mhfQ4L%2F%2FtXfbv%2F7yfuFzbrWDQzEbqEixFiQJFM0T6u37He%2B51rIpmSRRmFSrVd5dpe%2FTvpNsgQAAgdAQIgPgr6QDRDqw%2BXdfyIu9nN936oD302H8KBYiW%2BXg%2F03Ig%2FUw71Pp0XzMDe%2FYeSrrt629%2BwD6p0igRIM%2B%2FXDZx2dgJM93vz567LPEzzZB4x19s25afWFalHWstb%2Frbg%2F%2B2vz%2F0YqEA0d%2BffaG03f%2BPFxK3pdkFHeNxPgGimRfvtrTdXhR5Q8umFBSapUkNED0XCi3%2F2bk0q6JI%2BKxdTzcjo%2Bv7l4zpedOB51qqlRog739Q026969Gk%2B9eSLV1Hy61atO7qgsd%2F4Lz33BAgABA6AgRA%2FJV0gGgnXDurigUtB9K45Bc3uR1s7cj6A8Sb%2FfCWbeln2pmvWLmhi5bU29YsgZZteTvy5SvUSVymnWf9vv%2B4CcWHIkR%2FVthoRkXLnhRIOkOVljMVFyDaRm2zduK1jOt%2Fv325LVm27rwCRMvIvONgtNxJsytaMuUNxZZ%2BX7MdqQGimQjN3Pivr6FZDC3R0syStk2Pr6j7Tg0Qzfp86%2FtXFro9Xaf%2FwNH2XvmadtNtDxW6HUUQAQIAoSNAAMRfSQeIgkOf9usTeG80b9XF7cxr6ZA%2FQPy%2F5w8Q7VjrGI3U277ljkcS0aEA0SlugwZI1epN3Y62Dsr2QujtdysXGyCaZVCktGnfy92P7q%2B4x3ymAFG0KBC8JWiKnrLvV0%2BcLcs%2FipoB0XOhYzGKur5mdb7oN8JdP2%2FXgcR96jYUTUUtwfrXi%2B%2B6Y2CKuj0tB9NSr6uu%2FXPSY9BzoQgiQAAgdAQIgPgryQDRMiDt7A4bManQZdrRV0AECRDt6GqHd9GStYnLFRb6mT6lP58A0RKw5%2F5dOnGZDgbXsRnFBYhGqdKf2gMPv2S%2F%2B%2F29SceDBA0QnWXrz3991kWHdxD%2BE0%2B%2FYff97V9J11OYeT9LDRA9L0U9Fwo0PWYdvK648w4w946X0c90ZqzUANGB%2FAor%2F5mvdCC%2BokOzPb36DHXBpGN3vMv79h%2FJEiwAKBkECID4K8kA0fEFv7z8tqSlVd5o26GX24nVQeNnCxAdo3HvX55xB33rGAgdI3Hb3Y%2B5g7W9A63PNUB0%2FIYO%2FtZxE5oF8cJC96HZgqICRGeX0s64zsCl2YazBcjNtz%2FsDmrX0HEfOvuVllzpwG%2F%2F2bS%2Bf%2FE1bkmWzvSlY1p0%2BzrzlHcdnfHqsSdfs5Gjp7rnUs%2FFNdf%2FxZ3SV8%2BHlnQpWLznWceUKCoUMjrIXf8Gb779ibtMpyL2Ds5XIOoYHQWRwkizMk2af%2B4OQFdsebMdeq713Oi5UlTpLGU65oQAAYDQESAA4q8kA0Q704qFoi7TDrxORavvw5g1Z2nitLTe0M6xfuYdy6DvvVDQ6FgQLevSFxvqE33v%2BnXrf%2BaWH3l%2F1xmh9Pv%2B67Rq0z0xc6Edax1bcuefnnTHkuiTfs0ePPnMm%2B56OvOVfn%2FFqq%2B%2FgVyx451h6kyPW9us3%2FUPba%2BWb%2Fm%2Fa8Qbml3QKYMVLJqZSf3SQW2blkoplPR3HRCugLrnvqftrnufco9Dy6W862vpVoNG7VyU6PYUFf5jQnSGMEXR%2BImzE%2F8W775X1YWGlmM1btYpKRp12zoWRAer65gRBZrOAuadcYwAAYDQECAA4i%2Bqb0KPw9CSJM1OjJs4K%2B3bEtdBgADIcQQIgPgjQIINnY72kSdetT%2Fd98%2B0b0ucBwECIMcRIADijwAJNrRkSUuvvIO3GSUzCBAAOY4AARB%2FBAgjkwYBAiDHESAA4o8AYWTSIEAA5DgCBED8ESCMTBoECIAcR4AAiD8ChJFJgwABkOMIEADxR4AwMmkQIAByHAECIP4IEEYmDQIEQI4jQADEHwHCyKRBgADIcQQIgPgjQBiZNAgQADmOAAEQfwQII5MGAQIgxxEgAOKPAGFk0iBAAOQ4AgRA%2FBEgjEwaBAiAHEeAAIg%2FAoSRSYMAAZDjCBAA8UeAMDJpECAAchwBAiD%2BCBBGJg0CBECOI0AAxB8BwsikQYAAyHEECID4I0AYmTQIEAA5jgABEH8ECCOTBgECIMcRIADijwBhZNIgQADkOAIEQPwRIIxMGgQIgBxHgACIPwKEkUmDAAGQ4wgQAPFHgDAyaRAgAHIcAQIgdwLkx3cMtduencBgpHVcevcwAgRALiNAAMTfwYLj9uv7RridPgYjE8Yldw2zbXmH0%2F2fBgCkAwECIDccO37S8vcdY1zAuPGJcfb9Wwbbnr3p35ZsH0ePnUz3fxIAkC4ECAAgmGsfGeM%2BvT91Kt1bAgDIYgQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABEOAAABCQIAAAIIhQAAAISBAAADBECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABFO%2Fw0r7qOFiAgQAcCEIEAAAAACRIUAAAAAARIYAAQAAABAZAgQASsKpU6ds6fI1dvBgQWT3eezYcXefh48cOe%2Fb2LFzl63fsKXYyw8fPuLu4%2BTJkxZHelx6fIcOHU73pgBAXBEgABCWYSMm2uq1G92fj584Ya%2BVqmSLl6yK7P737Nnr7nPjpq3nfRtf9B9h9Ru3L%2FZyxYnu40IiJ5MdPXrMPb616zale1MAIK4IEAAIy4cV69uY8dPcnwmQ7ESAAECJI0AAIAzzFiyzsh%2FUts%2B79rc1azcmBcjCxSvsy0FjXJwcLDiU%2BJ1Vq9fblq07bPuOPBs8bLwdP37c%2Fbzg0GGbNGW2DRoy1mbPXWwnTpxIui%2F9zrCRE93vLFi03C338gfIho1bbc68JTZg0GibMGmmHTlytNAyqyHDx1v%2FL0fZ7DmLkpZTpQaILps3f6kNHznJFixcbuvWbz5rgGzest1te%2F%2BBo5K2b%2BfO3bZk2Wq3PWPGTbNNm7e5nx85etRtp%2B573IQZtn%2F%2FwaTbKyg4ZOMnznCPZ%2Br0ue758dNzPHDIWBs5Zopt2Fh4%2BdjyFWtt0NBxNnrsVNu9Z2%2BRl48YNclmzFrg%2Fn0IEAAoUQQIAIShxWfd7K13q1qlqk1Px8RXAdKgcQerWKWxtW7X097%2FsI5Vrt4sscPfpEVn9%2FPS79dwsyfaqVeMlK9Qz6rUaG5t2vey8h%2FXs5p1WyeOSVi4aIW9Xbaadfi8r3Xq0t%2FKlK%2FloscfILpP%2FX7rtj3s3XI1rV6jr4NCMfRW6SrWqFkn69pjoH1UqaHVbdjOHduRGiAKh6YtO9s7Zatbs5Zd3GOrXb%2FNGQNk1uyF9sY7ld3123Xs47a1R%2B8h7rJxE6bbp9WaWp0Gba1s%2BVo2f8EyO3CgwN2unqMu3b%2B0Bk06uJBTnMm%2B%2FQfsg4r1rfFX26vn7%2BPKjRL337vvMPd86bJWbXu4%2B1ZIeNuv56j0ezXss3Y9rW6DtlaqTDUXVB79vn5Hz0etep8lHh8BAgAlhgABgJJcgtWwScfEDIZ2qv07twqQUmWquhkTj3aSFTNepCg8FCH6hN%2F7ne69BiWuv3LVeqtYubHbIfcCROHizTpoJkQ%2F27U7382wlPuorvX6YmjS7EK5CnUTt%2B8PEP3um6Wr2MZNp2cqtE0Ki%2BICRD9T8Gjmw6Odfe3g63EoQPS7g4eOS1yucKhUtUkigKRj534uSkQzInpevcejx1C1VgsXL3peFX1z5y1JOg5HIeLFkIJDM0YezfooBPW7%2Bvnrb3%2FqZoE8em4IEAAoUQQIAJRkgEyZNjdxuXay9TMtS%2FJiok2H3onLdcYsXa4daoWBNzTboZCRDp37uhkC7Zjv3p2fdP9egCxavDJpuZV%2BpqVT3vKpvF17kn5PMw%2BNm39eKEA0a9Cidbek6y5asrLYAFmxcl0idjza0Xdn5jp8xAXIO%2B9VT1ry9fGnjdxyMr9ly9e429FyKC1BUyRopkLLq7wQEf1ZcVajTisXS6lLs9p3%2BsKaNP886bn0IlDLxBRdijc%2FPacECACUKAIEAEoyQLTD7j9Nrn6mT%2B%2B9AOnRe3ChA7y1JEtLq%2FyjXqN27jqaSfii33A3a6Hr1qjT2h0vknoMSFE71PqkX7MR%2Fp140YyFlmylBoiWfvXsc3r5lGfz5u3FBoiOz1AspN6%2BRwHy0ScNEn9XiGh7%2FDMQohkX3cfWbTvd3ydOnmXVa7d0P1Nw9Ok3PHFci2YxtNRLMx2arWneqmti%2BZaWemmGJPW51Fi9ZoN16tLPGjY9HXb%2BYCJAAKBEESAAENVZsM4WIJo50OWrVm84631pJ1876goG%2FY52qIs6C5Y%2FQDQToT9rJiB1pqBZqy6FAkTbp517v6XLVhcbIDpI3d2%2BbyZCj1mzGPpZaoCIZnN0AHrS7SxaXuR95O%2Fd76773oe1rd%2BXI5Mu09IsPT49DgWcQkJL2fwzTKkUMlrOlXQf%2BfsIEAAoWQQIAIQaIOPOP0AUFZrZ0I6xf5agWq2WbgmS6PgFzQj4L9eB3jrW4mwBogO%2BdUC5lm95tJOvA8IVB6kBMnT4BHdMh%2F%2FLFHV8RnEBsm%2FfATcT4c3IyLQZ89z2HTt2rMgAUSTooHn%2FrImCyJvx0QH2zVt3TfodHbj%2FedcBiZmSvLw9ScfEaBZG26czfSlw%2FMeX6LnTQek63a7OXKbralbHo7NhESAAUKIIEAAIi86gpIOntZN7PgEiOv5DB6ZrJ1xn09KZmbTT7p2aVqeiVRQMGDja7dDr7FA6jsJ%2FEHpxAeLtYGupkg5k16lytbRJZ5bStqUGiE6P%2B2n1Zu4x6TTC2vHXjMGZzoKlg8C17Klbz0Fu%2BZbiwzvGo6gA0RIqHReis1ApeHQAvR6%2FZnREX%2ByoZVpaLqVw6t5rsNt%2BzRIpWvSca%2Ft1mmA9tk%2BqNLG2X83aKDwUb1pepseqY110BjAv4LyzfOnA%2FL4DRibOsqXtJ0AAoMQQIAAQlm3b89yBzYoI7dxqR1dR4J%2Bt0M%2B8g8d1sLi3o%2B2nT%2BR1nIeWPylCNHPh0e1OnzHfzQxoZ133512u4yJ0%2B%2F7rez%2Fzf7eGAkg78tpR1067f4ZAO97eQfKiy7QN2hbt5Ot2dHup303ip9%2FXzrxmcrQsyh8b3ily%2FXTqYYVV2w693UyP%2F6xVooPnFWo6u5VO6es%2FxkWPT9Gjx6KD9VO3TWGl7%2F9Q0CmKVqxal3Tb%2BjfRsjldrqjbf%2BCgTZk2p9B3kQAAQkOAAAAAAIgMAQIAAAAgMgQIAAAAgMgQIAAAAAAiQ4AAAIK547kJdsldw6yY7xkEACAIAgQAEMy1j4yxb1w3kAABAFwIAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABEOAAABCQIAAAIIhQAAAISBAAADBECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEAFLZp%2ByEbO31n0rj8%2FhEuQMZMS%2F75yvUH0r25AIDsQYAAAArbvuuI%2FeTOYS44zjS%2BdcMgm7VoT7o3FwCQPQgQAEDRmnZZfdYAKV1jQbo3EwCQXQgQAEDRjp84ZX98enyx8fHTu4fZrvyj6d5MAEB2IUAAAMWbMne3ffP6ogOkY7%2F16d48AED2IUAAAGf2UoU5heLjjucm2MmTnA4LAHDOCBAAwLkdkM6B5wCAC0CAAADO7YB0DjwHAFwAAgQAEOyA9JufHGeX3sWB5wCAC0KAAEDY9E3hfYZvtg5918dqfNx4ib36ydy0b0dJjB6DN7nIAgCUOAIEAMI2bf7us35%2FBiPzxuBx29L9fx0AyAUECACEbdyMPLdDe9e%2FJlndtisZGT7%2B9spU9%2B%2F1xYgt6f6%2FDgDkAgIEAEoqQEpVXWCHj5xiZPio1HQZAQIA0SFAACBsBEh2DQIEACJFgABA2AiQ7BoECABEigABgLARINk1CBAAiBQBAgBhI0CyaxAgABApAgQAwkaAZNcgQAAgUgQIAISNAMmuQYAAQKQIEAAIGwGSXYMAAYBIESAAEDYCJLsGAQIAkSJAACBsBEh2DQIEACJFgABA2AiQ7BoECABEigABgLARINk1CBAAiBQBAgBhI0CyaxAgABApAgQAwkaAZNcgQAAgUgQIAISNAMmuQYAAQKQIEAAIGwGSXYMAAYBIESAAEDYCJLsGAQIAkSJAACBsBEh2DQIEACJFgABA2AiQ7BoECABEigABgLARINk1CBAAiBQBAgBhI0CyaxAgABApAgQAwkaAZNcgQAAgUgQIAISNAMmuQYAAQKQIEADIpgBZvXaL1anX2v77RgV7p0xla9O%2Bl%2B3OL0i6jn7WvefgIn%2B%2Fa7cvbeasxUk%2FGzl6qn38aQN76ZVy9sHHdW3UmKnF3v%2BSZeusddseZxyr1my%2BoMc4bMQkGzFqCgECAPFEgABAtgTI%2FAUr7eJLr7Pf3%2FBXe%2FnV8vbkM2%2FaJb%2B4yX55%2BW22cNHqxPW%2B%2FYPf2v986zIbOHhcodu47Mo7rXrN5om%2F163%2Fmf3fd35jf3%2FoRXv19Y%2FsL39%2F3r7x3SvsiaffsIMFxwv9ft8BI%2B231%2FwpMb570VX2%2FYuvSfrZmQImyHj6uVL2%2FEtlCBAAiCcCBACyJUAeeuw%2FLhT8YbBtW75dcdXd9tSzbyUFyA9%2BdI37eersiD9ANm3Os299%2F0pr17F30nUGDBzjAqZP3%2BFn3aZ7%2F%2FKMPfrkf0N9nLv2FLhBgABALBEgAJAtAfKr39yeNHvhjZafdbP%2F%2FPeDpACpVLWxXXTJH9ySquICZPTYaS40lq%2FcWOg2%2F%2Fmvt61z1%2F7nFSD5ew9bwybt7fGnXnfLuvzLwfYfOOaWkK1cvcld518vvmufVGlkW7buTlynb%2F%2BR1u%2FLUYm%2FK5Q%2BrFjPHn78Fbf0bNKUuQQIAGQvAgQAsiVA%2FvrA8265lcJg67Y9xV5PAdKqTXdr3qqLm%2BGYM295kQGydv02t%2FzqkSdedcumDhwsvOTqXANEt6FlXJp9qVq9qVWu3sQu%2FeXNiUDSzIai59ob77dnXyhtNWq1sJtvf9ht14aNOwotwVKYXHn1PfbHOx%2B1WnVauWDRY5o8dR4BAgDZiQABgGw6BkQ769qB13Eat971qL1XvqaNnzi7yAApOHTC7rr3KTf059QA0dBB4z%2F%2B%2BQ3uNnV8iWYZ6jVoY%2Bs2bD%2BvAFEcKRD8sypjxs9wtz99xsJEgDz%2FctnE5frZLy6%2F1SpWblgoQMpXqOMu8y%2FJ%2BtuD%2F7Y33%2F6EAAGA7ESAAEC2nYZ30eI11qJ1V3vh5ffc7IJ26Mt9VLtQgOjPc%2Bcvd3%2FXMq2iAkRj3%2F6jbjlWtRrN7P5%2FvJA4hiQ1bIIESKnSn7rbSM%2Fd75MAACAASURBVL3ej352g33WrmciQFKPL9EMiXc7%2FgDR7b%2F2ZoWk6%2Bq4l%2FUbTs%2BWECAAkHUIEADIhgDZsXOfm0FIPTOV4kE76JoRydt9sFCAaGhm4eKfXu%2BWOPkDRLMUOq1uUaf61RIqnWXrXAPksSdfsxdfKVfk8SuaWfECJDVuyr5f3e7%2B89OFAkTLr3SMSEmEHAECAGlBgABANgTI2Akz3Y777LnLCl2m4zd02YKFq4oMEB0Ufs1197njJ%2FwBomVMN9zyQJH3p6jRcq9zDZA3SlUsNAOyM2%2B%2FffN7V1ivPkMTAeI%2FyFxDp%2F3Vge%2BpAaIoef2tj5OuO3joeHegOgECAFmJAAGAbAiQPXsP2U9%2FdYublVBQ%2BA%2F61pmhtMTJ%2B3lqgGhoidX%2FfvtyFwJegCgCFANdug5Iuq4OTtcMiG73XANEt6X78IdS0xad3fZpFscLEAXHocMn3eUKJ22zdzpgf4DUrtvKfdfJxk07EzGjiNJsCgECAFmJAAGAbDkGRN8OrqVUP7%2FsVrcD%2F49HXnYHaOtn%2FhmFogJEQ180qJ1%2F%2FzEgOohdP7vptofsmeffcQesf%2B%2Biq%2B22ux9LnJXqXAJEB7trGZYOaH%2Fu36XtwUf%2F47anbYde7nIvQDS7ojNbadZD19WsiU7RmxogCi9tix6n4kvxod9L%2FX4TAgQAsgYBAgDZdBC6Tr%2FbqUs%2Fd1yETnHbrcegQjvjI0dPdbMYqb%2BrGYjhIycX%2Bt6PWbOXWLOWXdx3hmhmQcu9gm7PtOkL3e%2F7f6YI0RIpHXui7%2FzQgfDeZV6AaDt6fzHMHfiuA9K9s3RpaPbE%2Fzs6zkXfJVK%2FYVv3Teznc7pgAgQAMgYBAgDZdhasbB5egGg2J93bQoAAQFoQIAAQNgKEAAEAFIsAAYCwESDFDy2f6tl7iG3anJf2bSFAACAtCBAACBsBkl2DAAGASBEgABA2AiS7BgECAJEiQAAgbARIdg0CBAAiRYAAQNgIkOwaBAgARIoAAYCwESDZNQgQAIgUAQIAYSNAsmsQIAAQKQIEAMJGgGTXIEAAIFIECACEjQDJrkGAAECkCBAACBsBkl2DAAGASBEgABA2AiS7BgECAJEiQAAgbARIdg0CBAAiRYAAQNgIkOwaBAgARIoAAYCwESDZNQgQAIgUAQIAYSNAsmsQIAAQKQIEAMJGgGTXIEAAIFIECACEjQDJrkGAAECkCBAACBsBkl2DAAGASBEgABA2AiS7BgECAJEiQAAgbARIdg0CBAAiRYAAQNgIkOwaBAgARIoAAYCSCpAXPpxjy9ceZGT4KF19IQECANEhQAAgbONnng4QRnaNfqMIEACIAAECAGHbd%2BCYvVB%2Btj30xrRYjesfG2u%2F%2B8fotG9HSYx%2Flp1p23cdSff%2FdQAgFxAgAIBg%2FvDoGPvm9QPt1Kl0bwkAIIsRIACAYK59ZIxbqkSAAAAuAAECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABEOAAABCQIAAAIIhQAAAISBAAADBECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABEOAAABCQIAAAIIhQAAAISBAAADBECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwcxZnG%2BT5%2BxK92YAALIbAQIAAAAgMgQIAAAAgMgQIAAAAAAiQ4AAQK7Zk7%2FP%2Bn050goKDqV7UwAAuYcAAYA4OXnypNWo09pWrV5f7HU2btpmZcrXst179ka6bQAAECAAEDMnTpyw10pVsgWLlqd7UwAAKAoBAgBxceTIUWvdrqcLkLoN29n0mfPt4MECa9O%2Bl23fkWcdOvd1S6927863rj0Gusvk1KlTNn7iTGvS%2FHNr3rqrLV%2Bx1oYOn5A0i7J85Vr7rF1Pa9C4g42bMN3mzFtiEyfPSly%2B%2F8BB6%2FXFUKtZt7U1aNLBXabb9bZL27Bl6w7r3G2A9ewzxP181eoN1qxVF6tSo7m1aN3N5i9YFvlzBgCIHAECAHFx%2FPhxFxIKkB69B9vadZtsz5697u9Va7Ww5q262vQZ8239hi3uZ7t257vf03Xf%2F7COjRw92UaPnWoff9rI3i1XMxEYio23SlexL%2FqPcD%2Br16idvfdhbWvTobe7%2FPCRI%2FZp9WZWp0FbmzZjno0YNcndnoJEDhYcSmyDImfSlNmWl7fH3i5bzYXO4iWrbNCQsfbGO5VtzdqNaXwGAQARIEAAIM5LsLwAUTx4%2FAGi2ZDX3%2F7UFi1embh88%2Bbt7mdegFSq2sR69x2WFDofftIgESAKjvIV6rmZDo9CREGh%2BPACpFvPQYnLNTtTqkzVpN8ZPGy8LVry9XYAAGKJAAGAXAgQ%2F8yCP0B0PYWCfs9PgaEAOXr0mIuRpctWJ13eqUu%2FRIC0btvDqtVq6a7vjaEjJrj70CyMFyD%2B29AMSJlyNa1CpYZuWdiKVesSS7YAALFGgABALgTIxk1biwyQqdPnWun3ahS6ncrVm7mQ8H5fIeHXo%2FeQRIBoSZZCQsd5pA7NpngBknpmrvy9%2B23YyIlWt0FbF0EfVqzvjgsBAMQaAQIAuRwgy5avcX%2F2DkgXLYvS8igFiE7rqziYNWdR0v3oYHQvQDp83tcaN%2BuUdHnBocM2e%2B5iO3L0aJEBsmHjlqRZGR3EroPXdRA8ACDWCBAAiBMFg5ZMecFwtgA5dOiwO%2BBcx2doCdTxEyfcGbJ0uXcMSKNmndx3i3hfXDhj1gJ3H16A6L4UKau%2FCgptw%2BddB9gnVZq42ywqQEaOmeJmPHT%2Fouu1%2BKybixkAQKwRIAAQN7Xrt3FnrdKZpc4WIN4pdnXMh0JEy7G0dOqDivVt8tQ57nLdRr1G7d1tvv9RHXfGqyYtOlu7jn0St9l%2F4Ch3efXardzvlqtQ181ySFEBojNnVa%2Fd0p0tq2HTju5AdwXJjp27InymAABpQIAAQNzowHEFx779B9xshA741pmrPPqzfqbLPPrz9h27LD9%2Fn5uNUIgsWJj8ZYa6TN8nostbtume%2BD4Pj25Ty650Jqtjx44lfq7r67Jjx77eBu8%2BFT9Tp89zp%2BLVdgMAYo8AAYBcdvjwEfedHlpW5Zm3YJmbzThw4PRxIY2bf%2B6WZXn25O9zZ7CaO39pWrYZAJDVCBAAyHUDB49xwdGwSUd3RivvAHTPkqWr3JcGanmVll6Vfr%2BGte%2F0BafNBQCcDwIEAGDu2IuZsxfa7DmL3FKrVDpLlmZG9E3qmzZvS8s2AgBigQABAAQzZ3G%2BTZ7DQeIAgAtCgAAAgrn2kTH2jesGGiuvAAAXgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABEOAAABCQIAAAIIhQAAAISBAAADBECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIDClqzeb5WaLk0al949zAVI6s8nzt6V7s0FAGQPAgQAUNjRYyfthsfHuuA401CU5O05mu7NBQBkDwIEAFC0cTPyzhogbfusS%2FdmAgCyCwECACjeC%2BVnFxsftz87wU6c5IAQAMA5IUAAAMXbvP2wXXz70ELx8a0bBtmMBXvSvXkAgOxDgAAAzqxhx1WFAuStqvPTvVkAgOxEgAAAzu2AdA48BwBcAAIEAHBuB6Rz4DkA4AIQIACA4Aekc%2BA5AOACESAA4mXQuG320BvTGCUw%2FvLyFLv7hUlp3464js96rk33fz4AEAUCBEC8PF1m5lm%2Fu4LByMRx3aNj0%2F2fDwBEgQABEC9PvTvD7cwNn7TDlq89yGBk%2FFi6%2BoD7%2F%2BwfHh2T7v98ACAKBAiAeAbIguX77fCRUwxGxo%2BCQycJEAC5hAABEC8ECCPbBgECIMcQIADihQBhZNsgQADkGAIEQLwQIIxsGwQIgBxDgACIFwKEkW2DAAGQYwgQAPFCgDCybRAgAHIMAQIgXggQRrYNAgRAjiFAAMQLAcLItkGAAMgxBAiAeCFAGNk2CBAAOYYAARAvBAgj2wYBAiDHECAA4oUAYWTbIEAA5BgCBEC8ECCMbBsECIAcQ4AAiBcChJFtgwABkGMIEADxQoAwsm0QIAByDAECIF4IEEa2DQIEQI4hQADECwHCyLZBgADIMQQIgHghQBjZNggQADmGAAEQLwQII9sGAQIgxxAgAOKFAGFk2yBAAOQYAgRAvBAgjGwbBAiAHEOAAIgXAoSRbYMAAZBjCBAA8UKAMLJtECAAcgwBAiBeCBBGtg0CBECOIUAAxEtJBciadVvtbw%2F%2Bu9jRoFG7877t0WOn2QMPvxToug2btLdPqjRK%2B07zuQ49R72%2FGBbZ%2FQ0bMcmefaH0Of%2Fe08%2BVstHjpkf63BAgAHIMAQIgXkoqQBYtXmP%2F863L7NEn%2F2tvlKpYaHTq0u%2BCdpZvu%2FuxQNd9%2Fa2P7bEnX4t0B%2FlsY%2B785e65WbRkbbHX0eUNGrePbJv07%2FGLy28959%2B79Jc3W49egyN9%2FggQADmGAAEQLyUdIKPGTI1wx%2FSEHTp8MulnBEiwQYAAQMYiQADES7oDREuk3v%2BwltvZvuzKO%2B27F11lDz32H9u8ZZe7fNr0hW62Y8rU%2Bfb7G%2F5qH3%2FaoNAMyNr121xkfOO7V7jf16zLug3bEwGiv1ep1sR%2B%2FPMb3OVPPfuW5e064C4fOnyi3fuXZ2zIsAl2zfV%2FsR%2F86Br793%2Fet2UrNrhlXrr%2B735%2Frw0cPC5xf%2FsPHHPb8avf3G7fu%2Bhqu%2F8fL7jt9C5%2Fr3xNt8SsfIU6bgf9hz%2B51t3m3n1HbM685faHm%2F7mnpvrbvq79e0%2F8rwCZOOmnfbiK%2BXsJz%2B%2F0W3jTbc9lHRbWnambaxavam7zk9%2FdYu1btvDBg0Zb9feeL%2F7nT%2F%2F9Vm3VM4fIE1bdLafX3arex7%2B8cjL7nnwbnP9hh1uyZUe09V%2FuM%2B6dB2QFCB79h5y%2F5Z6Xr71%2FSvtqmv%2FbI2bdSJAAODCECAA4qWkA6Rrty%2FdTmzq0E68rvf%2BBzXt%2Bxdf46JDx3b06jPULrrkD1a2XA13uQLm%2F77zGxcflao2diHSvedgFxteDFx%2F8wN2z31P29RpC2zSlLl28%2B0P28OPv5IIkO%2F88Hdux3nCpNnWs%2FcQFwQKEl3erccgd1u33%2FO4ixDtVOvvP%2Fzx761GrRY2buIse%2BKfb9jPfv1HN8Pi3aZiSTv8EyfPcSGg21y%2BcqO7%2FPGnXneP6ZXXPrTxE2dby8%2B62Te%2Fd4U1a9nFduzcZ23a93LPTYfPv3DxdD4Bovu86dYHXfgsWbbOKlSq7%2B5j67Y97vIXXn7PbcPLr5Z3j%2BGdMpXd5Vdcdbd7zHqs%2BvOrr3%2BUCBA9z3ruFGVjxs9wkXf5b%2B%2By%2FL2H3XX0HCte%2Bg8c7YLshlsecM%2BVFyD1GrRxz9OIUVPcc9G2Qy%2F7329f7u6fAAGA80aAAIiXkg6Q4oZ2mr0A%2BdHPbkjMSGg8%2F3JZ%2B8vfn08EiK7fp%2B%2FwxOX%2BABkwcIy7fPHSr5czaef5rnufsgMHj7tY0Cf6mn3wLlecPPH0G4kA0e%2FPnLU4cblmQjRr4v19%2BMjJ7jqbNufZ6rVb3I764KHjE5dr2dcvL7%2FNKldvkggQzW54waKhnXkd%2BxLWEqxGzTra2AkzE3%2FXTIZ%2BR4HmBYgCQ8%2BB%2B%2FdYstZdrlkQ73fKvF%2FNhZc%2FQPwzHvo3VEAoVvSc6s%2FzFqxIXO49Di9A9O%2BigPQ%2FL5p1UogQIABw3ggQAPFS0gGiT8u3b88vNLydcwXIHfc8kfS7WsZz55%2BeTAoQ75P91ADRp%2B5a8lPcdihA%2FvrA6Zjxxn%2FfqJA4i5Y3A%2BLtqGtoe7SMyh802gbFx5eDxro%2Fv%2FteVfuwYr3E0DKtl14plwgQBYD%2FPhU8mrUIK0C0vV%2F0G%2BHu%2B7l%2Fl3bLnfQ7k6fOSwTII0%2B8mri%2B4il1SZyWiGnplhcgRT2PWmKlmRstKVPIpV6uePQfAzJy9FQXYm6G5raH3H1qxocAAYDzRoAAiJd0HwOiALnv%2FueSflbuo9qFAmRn3v4iA0THOeh4hDMFSOpB6KkBouM4%2FJcrQLRzXlSAdO0%2B0P25Wo1mVqde66ShIPAC5LU3K5RYgBwsOO5miBQECiHNamj5WmqA%2BE%2Br6wWIHktxAaKISr0v79iRT6s1sSuvvqfIQPEC5O13K7ula1p6pmNJtBxOv0%2BAAMAFIUAAxEu2B0j7Tn3cAdX%2BJVzaGf%2FTff90O%2BphB4iOM9GfZ81ekvQ7WmbkHetQ0gEyfcZCd7n%2FwHfvNi8kQHTg%2BPYdexOX6%2FFq2ZWWen3%2B1eX%2BmSgdv6LLFSA6AF3%2FJvr38C7Xsjf92xAgAHBBCBAA8VLSAaLlODrwO3V4O8IXGiAKD33K%2FtY7lWx3foFt2LjDHW%2Fh7XyHHSCKGh2IrTNE6YByLSXTTrcO8FYYBAkQ73gMnZHKf2xKaoBoSVfq86ZjTxYuWp04wN8LBX1xoX7mHRdyPgGiy3XQet7ug26Z3JPPvOkOdNexHHqeNeOis3nped61p8CdTUzHjShAdDIAHfSug%2BF1ewoZPQcKlBatuxIgAHD%2BCBAA8VJSAaKDzHV8QHFDO6%2B6XsXKDZMO%2BNbQ2a7%2B%2FtCL7s%2BaVUg9SF1LnS75xU2JvytSdPyCIkA7vPpd7zS%2BZd%2Bvbs%2B%2FVCbp9rVsybt%2FHdye%2Bv0X2pnXkiPv7zp7lrbBO2OVDtTWwduKIMXLxZde585o5T%2BIXgd4%2B29TP3vz7U8Sx2%2FobFPa4W%2FXsXeRz19xz5t30LgiTY9VB3lrGZTO3qXw0ozDlq273QHvWgrl3Z5%2Bpt%2FXY%2FF%2BpseoU%2FF6UaffV5wpKjS0tM1%2F0LnO6KXnSs%2Fzt3%2FwW%2Fc8Kta80%2F9qpkNnHNPzoTOZaZmatkEzJ%2F7wIUAA4JwQIADipaQCJOqhmQmdCWvbtvzI7nPVms3uez20%2FOh8fl8zKBdy%2F%2FpeDi292rf%2FaCJsNAN0oY9LoaVZFv9ZvLyh%2B1CUeN%2Bzkjo0czJ77jI3i6K%2Fa%2FZE25n6BZEXMggQADmGAAEQL3EJEEbuDAIEQI4hQADECwHCyLZBgADIMQQIgHghQBjZNggQADmGAAEQLwQII9sGAQIgxxAgAOKFAGFk2yBAAOQYAgRAvBAgjGwbBAiAHEOAAIgXAoSRbYMAAZBjCBAA8UKAMLJtECAAcgwBAiBeCBBGtg0CBECOIUAAxAsBwsi2QYAAyDEECIB4IUAY2TYIEAA5hgABEC8ECCPbBgECIMcQIADihQBhZNsgQADkGAIEQLwQIIxsGwQIgBxDgACIFwKEkW2DAAGQYwgQAPFCgDCybRAgAHIMAQIgXggQRrYNAgRAjiFAAMQLAcLItkGAAMgxBAiAeCFAGNk2CBAAOYYAARAvBAgj2wYBAiDHECAA4oUAYWTbIEAA5BgCBEC8ECCMbBsECIAcQ4AAiBcChJFtgwABkGMIEADxDJBy9RZb3bYrk0bN1ivsw%2FqFf85gRDUqNFhiNVouT%2FpZnbYrCRAAuYQAARAvL5Sf7XbmGIxsG398eny6%2F%2FMBgCgQIADiZcOWAuvQd7191nudvVllnl378JjEDt53bxxk9744yVr3Wuuuwzi3cdsz4%2B3yv45M%2B3Zk62jXZ5098NpU%2B%2F4tgxP%2Fn7zibyPtpY%2FmWItua2zB8n3p%2Fs8HAKJAgACIl1XrD1qlpkvt538antjJ09KWhh1X2a78o%2BnevKx27SOnY%2B7UqXRvSXY7dOSE9Ru1xR56Y1ri%2F6OKEs3ejZ2%2Bk%2BcXQNwRIACy35GjJxM7dN%2B8nh26kkKAhG%2F52gMumH92z9fBfN2jY10w5%2B0hmAHEEgECIHutXH%2Bg0GyHt%2FPGbEf4CJBoI%2Fp7NxPRAGKJAAGQXZjtSB8CJNqw%2FsW9X4f1lX8b5X62afuhdG8eAFwoAgRAdmC2I%2F0IkGgdPVY4tr99wyD3d%2F38%2BAn%2BIQBkJQIEQOZitiOzECDps2bjQfu06VL79X0jvp4V%2Bfsoq%2FnZCtu8%2FXC6Nw8AzgUBAiDzrNtcwGxHBiJA0u%2FEyVMuvhXh37lxkPv3%2BJZvVkSXA0CGI0AAZIaTJ0%2FZiMk77PG3p7sdKm%2B245WKc23K3N3p3jwQIBln07ZDVqPVcvvN%2FSMToX7NQ2OsSefVtnsvoQ4gYxEgANJr34Fj7kvabnh8bGInSl92V7P1ck5DmmEIkMyNd82KPFl6RpFLFQEgwxAgANJj3tK99k71BfbDW4e4HSbtOHFwbWYjQLLjWJHU5YuK%2B5bd19jBguPp3jwAEAIEQHoOKvd2jn58x1AXIsvW7E%2F35uEsCJB4%2FLe2eNW%2BdG8egNxGgAAoeVt2HHZLqvzfa3DbMxPc0quCQyfSvXkIiADJ7tnGi247PduoccdzE6z7oE127PjJdG8egNxDgAAo2XXp%2FrP1%2BL%2FZGdmHAMlu%2Bw8ed9F%2F85PjEiHyqz%2BPcEu2NmwpSPfmAcgdBAiAcO3df8yadlltv394TNL3FdRrv9J27j6S7s3DBSBA4kH%2FfuNn5tnz5WfZd28anPiCw3%2BWncn36wCIAgECIBxrN50%2B%2BPWSu4YlwuO%2BlyZzUHmMECDxs33XEff9Or99YFTiv1v9O%2BugdZZHAighBAiACzNuRp47%2Faf33R0X3z7U3quzyFauP5DuTUPICJD40ocEX47Zan9%2FdUoiRC69e5hVbLzENm49lO7NAxAvBAiAc3f02El3AOsfnx6f2Fm57C%2Bnv7tjz75j6d48lBACJDfow4NydRclTpGtDxf0IQPHbgEICQECIDgdw6HlGvqiwNSz6bDMKv4IkNw7nktLsXQM19dnrxvvDmQ%2FdITlWQDOGwEC4OwWLN93%2BksD%2F3j6E1EduKqzWU2fvzvdm4YIESC56cTJUzZ0wvak7xT55Vdnz9q0neVZAM4ZAQKg%2BNPopu50%2FOTOYW5pBjsduYkAgfedIj%2B4ZXDSqbWn8WEEgOAIEACFvyugRbc1dvWDoxPhceMT41h2AQIECVt3HrZqLZclfbnovS9Osj7DN%2FPlhgDOhgABcFrenqPuIHKd%2BcZ%2FGl3NgrDDCSFAUNQJKXSq7T%2F9e1LidePX941wryX7DnBCCgBFIkCAXLduc4GVqbkwsaRC%2F1u6xgJbsY7T6CIZAYIzmTR7lz1TdmbilNw%2FvXuYmyXhC0gBpCBAgFy1aOU%2Be%2FWTufadG0%2FvLPzo9qHu%2BI4tOw6ne9OQoQgQBP1SUnca369OWvH9Wwa71xq%2BGwjAVwgQINdMnbfbndP%2Fm9d%2FfTYbLZfI5%2Fs7cBYECM6FZj78yzq97xOZuXBPujcNQHoRIEAu0A6jjuX480uTE%2Bu0r3pwtDvHPweWIygCBOdDB6UvXL7Xuny50Vr1WOtGv5FbbP3mgnRvGoD0IECAuJ9Kd92mAhcfPYdscmP4pO3uZ%2BxE4lwRIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCJPesWLXOFi1Zmfj73n37bcy4aTZvwbJAvz91%2BjzbvmOXReXUqVM2cfIs27Nn73nfxubN223WnEXFXn7k6FF3H4cOhX%2FGwMOHj9i%2BfZwtDLFHgADptHrNBus7YKT7302bt7k3djl%2B%2FLgNHznpgt5Ew3D4yBG3HQcLDhV5%2BYxZC2z5irXuz6vXbrRJU2YHvu3RY6fazp27Q9tWlDwCJPd83nWANWvVJfH3qjVb2EefNLDxE2cWef3%2BX46ymbMXJv5etnwtmzp9rkXlxIkT9lqpSknRdK5Gjp5slao2KfbyPfn73H2EGVZ6rW%2FYtKO9%2Fvan7rbLlKtpw0ZODO32gQxDgADF2bZtpzVu1skOHiyZM7UcOFBgb5auYvUbt7dVq9e7T9T0Zi36ZE1vQvr0USZPnWM9eg%2B2qOWf5Y22QeMO9kW%2F4e7Pg4eNt0%2BrNwt82%2B%2B8V90WLFwe2rai5BEguWf%2FgYNJn8jrNetMHzTUrNvaBgwcnfg7ARJMwyYdrVqtlrZq9QYXI4OGjHX3sXjJqtDuA8ggBAhQnLXrNrk3gPy9%2B0vk9jds3OpuX9P93qxHwVdT%2BqkBok8Va9X7zDI5QI4dO%2B6WDwRFgGQfAiT3aEd%2B9tzF7r9vzYbqE%2Fr2nb4ocgdfYfJhxfpuZ1qzo%2F4AmTZjnnXo3Nd69B5im7ecfs2ThYtXuNvS62GX7l%2Favv2nY0evu9oJ79Slvw0dPsH27z%2BYdF%2BaNdaHMrp81JgpieVQXoDodsdPnGEdPu9rvfsOs515ybOt6zdssW49B1nbjn1syPDxVuCb5U0NEL02a8ana4%2BBNmL0ZNu6bWexr4tbtu44p9dBUeDp9pYs6HiTUQAAIABJREFUW53080%2BrNXUzUNp2Pffee4X3AZl%2Btmt3%2FjndF5AhCBBEQ8tz9Gbxedf%2Bbqd6%2FoJltnzl6aU7ohd%2Fvdm0aN3NOncb4K7v2b1nr%2FX7cqSbMdCOuK6jN7HUMNDt6c1Ilw8bMdEtH%2FJoSYDuc%2BnyNda6bQ%2F3qZ7oja9Tl35uiUH3XoNt46at7uc7du5yb5Z6U9B2a3mU6E1YS4datunu3tj0JuenN4OefYa429Oblf8x%2BumNS%2Fer29eb4Lr1m90YPHRcoQDRWuva9dtY%2BQr13PNw8uTJxH3pjVWPt1efoUlvhnocmr7Xc6fnc%2BGi09upN0a92ep39Ma2ctX6pO3SczZ0xARr06G3u6%2BNm7YFDhAtxdKOgOjfRr%2BvnYkvB41x96fnV9tTXIBoJ2fgkLF25MjRIu8L6UeA5O4SLB33oNc0BUiTFp1t%2Boz5ha47cPAYe%2F%2FDOla9diu3o%2B4FSOXqzdwHKH36DXef8r9brqZ7PRe9DtZr1N79Xp0Gbd3sgnau3%2FuwttVr1M769h%2FhfleXe69DixavtLfLVnOX6TVTy8J0HR3%2F4QWI7lOvT7pPxUT5j%2Bu512%2FR6%2BEb71S2th16u%2FcKXU%2Bvr3rdTw0Q3Wbj5p%2B7JVF6%2FC0%2B62YVqzQu9nVR71HaNr0XKZKC0Ouibtt7TvwBoijTa76eG80wK4b0GPUcK%2FS0fUAWIkBQ8rTz%2F9a7Vd0bWf%2BBo6xCpYb24ScN3JuHFx96sa9Rp5XbadYbkt4cps88%2FQa3Zu3GxBuKXoy1Q1uuQl33guzREiUtDdBOrt6Q9Can63sRok%2B5tBP%2F%2Fkd1rHnrri5A9AmdtktvGFr%2BpJ3uUmWquU%2BbigoQvehrudTHlRu5T%2BQUQfp9Lxr0OPQm17FzP3d73XsNctvkj6miAkS3o%2FgobglWUQGiN2hdVzsCes6at%2Brqtl2zNqKdAz1WPQd6k1qydJV7LqrUaG5Va7Vwb7p6LrX9ul%2FRG5meUz23ek70Bqp%2Fp%2FNZguWFi%2F6u6NSOyQcV61v12i2LDBB9uqjtv5BlEyh5BEjuST0GRK%2FNCxYtP6clWAoJb0dZx5MpYvSBg%2Bh18K3SVWzDxi2J32nUrJN7TfN%2BR6%2B9ul3NvIj%2Bt1XbHkk78Fouq%2F%2F1AsR%2FuT6Q0c%2F0gYteP%2FW65l%2FSqvvx374%2FQBQ7eszeh1DyRf8Rxb4u6rY0k9GuYx8rVaaqew3UBzOpcXEmug19GKPnSctzRe9J75St7p5bvf8oiPwf6ABZhgBBydKLvXaEvZ102b073%2B34egGi%2F9UnSseOHUtcRzu12pnXC7EXIN6n66Ipff1Mn5ZrZ107s%2BMmzEhcrp3t0u%2FVsLHjpycCRNfJy9uTuM6goeNcEHl0X%2Fpkzguf1CVY2lHXi75%2FPbR2nPXmqaVT2nnW9f1nRtGbhbcUIZXecHV97%2FbOdAxI6hKspi07u%2BG9Qet%2FFSNNmn%2BeCBD9%2FpRpX6%2B91gyTDh71zzDo36XsB7Xdv9Pc%2BUtdMHmfAnrP0YUEiN4oPTqrjH7mLaXwAmTchOnujXVpyvIDZB4CJPeEESDebIin9Ps1Eh98KEAUHB69Ful1SK8neo30hmYIPqlyOgr0uqLtUETodUOzAh4vQLTky3P06DH3M32Yo%2FcA%2FVlLvvw0M6wZh9QA0Qy1Aip1mVWQY0D0vqD3CL12631CH3JpFv5MtDxNM0J6XfYizaP3OD1uvX8W974CZAkCBCVLswl6odYLtp9mErwA0af7mtbWC7M39Ibl7ax6AeJfw%2Bv9TMcorFi5zv1ZMy3%2B29AUtd48vQDRMqBUemPSJ0x6s9KOtD5x8nbaUwNES6705uq%2FD8WKrqNZDoWVokczDFqmtW173hmfm%2FMNEMWGdt57fTE0aVs046LY8wJEb3jeci3RGVYUKf7f0Vm3dD9azqUZEQWFnx7DhQSI%2F9%2Fd%2B5kXOHoMzVp2cc%2B5dxvIbARI7gkjQFIPQtcHORMmzUwEiJbFenQAtl4nTs%2BKt04amuXwXgM16633EW1PmfK1XIwoPoo6CF2B4gJk%2FtLE%2B0XqMSV6zfZeP%2F0Bohnzz9r1TLqulpae60Hoigl9wKVtLYpeqzW7r%2FjSTExRp%2BLVNis%2B9Pz5lxgDWYgAQcnSGT38O9meVm26JwJEBy1WrNzYvbmkDgWGFxvecRv%2BONB6YX0SpD9rBzv19%2FUJvhcg3vS6R7%2BnT941Ha9jOvQJmD6ZKy5AGjQ5vU64qO3UEirZviPPHZehZVr6XUWQd1lYAaKlXrpMoZO6Hd6OggJEb3Z%2BekPV8reitl9xV9Qbrd7wLiRA%2FEsEdACl%2F7YUINpG%2Fbvo38E%2FO4XMRIDknqgD5PiJE%2B4%2B%2FKfy9V739H4g%2BrDHm8nVcW36AEnLnfS6d7YA0Wu0%2FuxfUiVaCuu9xvoDRB%2FM1PUt9%2FW%2FdgeZAdHj1IdsCgs9Ti2HLYqWD5f7qG7itOZF0bIyLatVKOnYPiCLESAoWXm7Tk93ewd3e7Sj6gWIjjvQNLef3lT0Iu9fglVcgGhdr9vZTTkbiN4cdHlRAaJPm3SgoD5x8ngzC8XOgHTum1ji5H9j03bq4Ebdl3%2F5kmYPtIOeOqsQxgyIZlp0hpfUT%2BW8GYeiAkTLHHR8StLzfOT086znQ0scUs%2B0pXgqyQBRBGqHQ7%2BnEOKAysxGgOSecw0QvYboWLXzDRDvPUGztd7rgV5nFTaKAdFsiI7D8Oj1S8eYaVbkbAGi6%2BoDIr3e%2BV8H9eGSt1TMHyBz5i1xs7T%2B9zDt%2FJ%2FpGJClvmNAKlVt6m7XO7tXUfTepfvwXu%2BLosjSc6%2F3JW2TO9PXVycXAbIQAYKS5b0xaOfdezPxli15ATJg0Gh3hhPvBVrXUyzoDUfOFiB689Abmr7Qz7%2Fzr4Oa9UJdVIDo0zO94PvP5OIdV%2BIFiLfz7YWNfq5PsXQKRo8CRp9GaSdaa331Zy3r8uiMWJqZueAAGTjKzaZ4tGRNz4933IzuU2%2F8OnC8uADR2a30M%2B9TRD3PekPXJ2rewZZ6TrwzY%2BlynSWmJAPEOwhdj9O%2F%2FA2ZiQDJPecaIHqd1euxZoLPN0D0WqH3DYWG7l878YoGb9nU7DmL3Ha0btfThYheCzWLrtfNswWI91qn13LNaus1ULetE5d4syqpZ8HS9um1U%2B8j%2Bh29phd7FqyBo9x7j97z9Foa5EMVfVu8%2B%2FLB8rUKDW2flqXpOdOyW0%2Bb9r3cCUPO5eB2IIMQICh5OsZCB5Rr%2BY%2BWDemAc73Ye8Gg0zvqNIeKEC3N0g6xTsGondggASL6JEjLpzTVraVE2rn1R09RS7B0ua6nZUf6PZ0tSjvxun9Fhr6AUG8kOnBbZzXRbWkHX7MPug9dV7Mo3hdFKYT0pqU3M72p6hM8XV7clPq5BIhmCrSDrudPsaMde53R6uNPG7nnTNuoN2nvDbqoANEsjc4so4MbteRMt6U3OP8SMb3Z6TFr2%2FVvpNuOIkBEz60ef1Frn5EZCJDco9dC77VYli1fc8adXr12aYfaW2qk17DUU6brOAzvtVuztv7vt%2FDo9VeRotkUzWykHvOg7%2FHQslmFjl47vXhwMxDL1yR9gaz3M%2F9xH%2FqQSifh0OuXttc7Ra%2FoQyf%2F2Qv1%2B4oexYU%2BJFHQ6Pb8Hzb5DyL3vs8pKN2f%2F9g8%2F9Dzo5UE%2BrPeK%2F1L0vQz73kEsgwBgmjohVOfBunNSC%2F02nkfMWpS0gu8PrEaOWaK%2B7RMp2r0%2F663TCj1Z9oZ9%2BiFWG9UOltW6lS2XsA1%2FHSfOiuK7tMLDN2Gprq9%2B9eSKs2i%2BN%2B4dFyLDljUm543m%2BDRjIRiQW%2BMuvxMp0nUm5cegz6xE72pe%2BuS9Vh1mf9N1%2Fv%2BFC%2Bq9Dxq2%2FQ86n%2F9ZxHTm69%2Fp8H%2FmPVY9ZinTJtT5I6EdjD0CaDuy9sO%2F5tzccvc9u7bn1gC5j02%2F7%2BPts9%2FW1rS4H%2Bj9paD%2BUMTmYUAAQCEgABBydPshr4h16Odcq2NTf0SPACZjQABAISAAEHJGz5ykjt1oM6BrqVJOk5Cy6E44BjILgQIACAEBAiioaU1WrakGNESH%2BIDyD53PDfBLrlrGAGCWDhy9KTtP3jc9h04ZgcKjtvxE%2FwfG4gIAQKUhIMFJ2zj1gJbv7nANu84bIcOf30sBAAgM2zafsieLz%2FLzexp%2FLfSXNuV%2F%2FXB3gBKBAEChEnB8fCb09wb2XduHGTl6i6ygwVFH8ANAMgMIybvsN8%2BMMq9dl969zDr0Fen0E33VgGxRYAAYdAbVasea%2B2Htw5xb2C3PTPe5i0t%2FgxYAIDMog%2BLytdbbN%2B%2BYZB7HdeHSZohARA6AgS4UJu2HbIHX5%2Fq3rB%2BcMtgq99hpR07%2FvUpgwEA2WP24ny79Z%2Fj3Wv6T%2B4cZl2%2B%2FPo7QQCEggABLkS%2FUVvsp3cPc29Utzw13hau4EuhEB59v0u9Ru0tU%2BTl7XFftLl9R95Zr6svw6zXqF3o26Av09R32JwPfU%2BNtv9CvuxSX7Snb6ZGvOmA9IYdV9n3bh7sXt8fLTXdtuw4ty8YBFAsAgQ4H3v2HbNn35uZONajesvlzHogdPrW5Y8qNbRMsW%2F%2FAevaY2ChL%2BAsyrgJ0%2B2jTxqEvg3Va7d0XzZ6PjZs3Gqvlap0Qd8erS%2FpVMQgN8xdkm83PjHOvdb%2F7J7h1n%2FU1nRvEhAHBAhwPtPzVz042r0hXf3gaJs6b3e6NwkROlhwyHbvzi%2F2VNL6dnft4J7pVNP6Bnp9c3xRjh8%2FnviG%2BqICRN8yvzNvt53wfcv8meh6u3bnF%2Ftt9qLLdJ3iblM%2FV3wURzMC23fsSvrme3%2BAaNYgb9ceO3my6Ejff%2BDgGWcl9JzrcQcNED0e3Z%2FuN0iAHD58xD2G4rZP9Pj1PBAguefw0ZNWqenSxLEhr34y1woOcWZD4AIQIEBQ2p9s2X2Nffem01PyvAnlliNHj1rz1l3t9bc%2FtbdKV7HS79ewiZNnJe0kt%2Fism7tcO7kKhwULlycub9Kis3XvNdiateriLteo06Bt0k7yoKHj7O2y1dxlFas0ti%2F6j0gKkL4DRtqbpau4L%2FbU%2F%2Br2zhQ6I8dMcdup2ytVppr17jsssZM9bcY8%2B%2FjTRjZi9OTEfZYtX8t9T48UFBxyP5sxa4GVr1DPmrXsYjt37rYy5WvZ1m073XUUDVoi5j0efcnowsUrkgJk4OAxblt1ebkKdW3d%2Bs2J7duxc5fVrt8m8fuKi%2FUbtiQu371nr9Vt0NZd9sY7la1bz0FWtWaLYgNEz4UeY6kyVd1zpH%2BLxs06JYIuNUAOHzlibTv0dretn5f%2FuJ7Nmr0wcXv64tTPu%2Fa3Dp37ust1XW9bNYLMBCE%2BJs7eZb%2B5f6R7%2Fb%2Fh8bG26P%2B3d95xclUF%2F%2F7%2F9%2F5eK6Jgb1gBBaT3Lk1aRFRAKQL60qWoiEgJRUA6oYt0Qk8lkEILIaSShBQgiSQQIJCekATy3vfznPWsd29m%2B%2Bw9s7PP8%2Fl8P1tmdubM7D3nnueUOzP8%2F4t0EAVEpC1wXfh4ed3PbTswu2%2FAnNRFkpLpN2BY6Pwyw0EnHvmgY71wUcNMBh3d3pf2Cfsj6LzzoZvczr6DKCB0iJECRvxfmfZ66CTzAZ0wfuLU0BHmcRltHzNuchCDKCBTpr4WJIKZBpg5a074%2BwkTp1Ys78hR48L9x094JcweTH91VhCExwcMaxQQynPVtXcEsWBW56K%2F3RheQ15Azjr7smz40y9mb8x5K7w2fjf3zbfDfS6%2F8rbswkv6hA796tWrs%2Fv7DsxOOb13mAlBQHj8G26%2BN9xOZ53H5n0C7s9Mwg033RNmg3gf77znsey0sy5ulLLLr7otSMmcufOCjEQBaE5AXpn6WngPX5%2FZsGmY5%2BU5Hu33VEUB6XPzvdlfL7w2vB6eExnj73lvo4AgcDfd9kA2afKMbNmy5Vn%2FQSOyP55zRXh%2F%2FEDVnnku6HXSi%2BFcsO5WA7LbH56dukgi3REFRKQ1Jk5b3LjkavNew7NXXqu8dEbqGzrH55x3VaNw0PlEIhASJIOOLR3cPGf9%2BfLssX5DGwWEDnseOvz33N8vfM9tt%2F7jwSa339d3QKOAsPEa4cjPIPA94lCJ8y66Luv78OAmv3vksScblw8hIMXlSEOHv5CdfHrvJgISBQnyAoII8T2d%2Fgid%2BJtuvT8sf4oCwsxQ5Iknnw3vCbw0dlKYSWL5U4TnRACYhXhjzrzw%2BPnXy31PPO2CZgWE%2FwMb9%2FNcee0dQSSKAsL7xvfTZsxscn%2BEBJEC%2Fu7sc69ssjTLJViCd%2FI5IQhInA1fsdLZcJF2oICItMT9A%2Bc2nmSOPWd8WAssPZNwBaW%2F%2FD10kFkWRGeaUXkYM3ZS6MxecdXtYYQ%2FhtH8O%2B56tFFAkJg8LGv6590Nt7P8aeiIF5rcnt8DguggKTwPneSHHnkizEpUgg4znfu%2FXHBNk%2FLwd0hMFBBmWPKMGj0hLF%2FKCwgzJ5UE5OVJ08P3lKsSCAgzLnl4ffF3zMTwXPnyEX6HYHAVLd7r4r6M1vaAMJPEe84VuFg6xuutJCCTp7wavmcJWf75WSbW55b7wv35O2Zo8iggkt%2Bg%2Fp29Gj68cIfDnvEzQ0TajgIiUomP1vxvdtblk8OJhT0fN97XdJRUeibMekyfMSt7%2BLEhYTaEzi2dWvZJxP0SLJ3KJy7nQUDufaB%2FswLCUp9hI0Y1uf3Z58estQkdERo05JkgQcwwcJ8ibJam887sSrE8hNeBgLBcqjUBefW12RUFZNz4KeH7%2FAxGa1fBygvII48%2FGTr7lcrHHhPkq5KAIFHNCQjL3lh2xl4Z9t8wE8Myq0oCMnHStPD9cyPHrvX88TXzd1FGIgqI5Jm%2FYFW2z7ENnwP11V0Gh30iItIqCohIETaWH3JKwyV2v7Lz4GzE6NY%2F80DqHzY35zeV0zFmeQ4zIf964821lgvRyWeTePyb1gSE5Vi33N63ye1sgI4C8vSzo0PnNw9Ltq4vjNBHzjnv6uz%2BBxuWEkUQJGZOoLMCMm%2Feuw1LmKbPbHI7m9S5olZrAsLzI3A8T4RN4bwHzOywj4PHjwIH7J2JMySVuPCSG8KyteLvKgkIG%2BDDErJ%2Fb7qPsGwtbkRXQKStA1ZcJetjmzZclv3WB90XItIKCohInnfeXxmm0pGPLXoNd0pdGuHzL%2BKGZTZ1s4SH0XY64MgGV7RCIug80wGnI8usBt%2B3RUDiiP%2BIZ0aHpV2MzPP3UUBGjhof9mew54Lnnzv37XClrAGDR1QsL7MpJ556Qdhrwb4VZiwQjjjL0lkBgev63B3eE2SB8rCcKX5wYmsCwszJmWdfFjaps5%2BEx2a2Aqnj9fGeIg%2FnX3R9EDvuw4cQtiQgXIWMv2FTPYKBjPA%2F4u9Wrly11iZ0%2FieUP%2BylWbCocVkYctWcgLAhn%2F%2FDjFdnt%2FlSyNIz4OIk62zZP4jIhTdMC3tFRKQiCohIZMbspY2bzfc9bmS2eGnD5w6IAFdAYj8AeyvCJWvPvLjJBm02WzMjQac%2FXlI233m%2F94EBYYlQHjrIXFWpuG%2BCv2eJFfsguPQv0CHnsrzx8elYI0V8bkgluP%2BIZ14Ml5bl%2FuxHGfjE041XbuJyuVxlKs%2BkKTOCSEVB4ApX%2BX0mbNzmd3Tw42tm0zkzGXTK%2BT5u0mdfDB3%2FPMwssCk8whIpfuY9ZTnZFVff3niVL1iyZFl4%2FVxNjNfNJX2ZVWImpxJ8PgoSyGPxermsMTNQvKf8r%2Ba9PT%2BUn8cNr3HlyiCAJ53WcKliZISrjeWvfBZnjCLIC8%2FB%2BxofRyTy3Nj3si%2FtOCicR44%2Be1y2arX7BkUqoICIwNTXl2Tf3L3h%2Bu6%2FOceThjQPS6%2Ba2%2FcQb29OCtoKl6htCTZ%2Bt%2BcSsPFD%2FGoVLtvb0ocA8n625%2FW29%2F3nsVv6oEaR9jBzzrJskwOGhfPJgSeM8gpZImujgIiMnbywccTq7CunOG0uIiKd3py%2BzaFPh%2FPKXsc8ny1druCK5FBApGczcvz72frbDQwnid59%2FrPBWEREpDMsWrI62%2FXXz4Xzy46HPZMtWFzbM5EiJaKASM%2Be%2BVhv2wb5uPjm6amLIyIidXhVxf2OfyGcZ7Y5dESQEhFRQKSHwqeZf3mnweGkcPWd%2F9l0KiLNc9ltM7I%2FXMHniKQuiUj3gQ%2BwjRKyx1HPZSs%2BcE%2BI9HgUEOl5zJq7PNtgj4YN5xdc77Irkbbyg%2F2HhnqjgIi0D6Rjz6OfD%2FUHGUFKRHowCoj0LFiD%2B8MDGjpRp17U8GFjItI2FBCRjrNk2YfZ9r9s%2BJypw88YYz2SnowCIj2H1R%2BuyfY5dmRo%2FI84c0y2Zo2tv0h7UEBEOsd7C1dlG%2F%2BkoR554RPpwSgg0nM4uffE0Ohv94unXYMr0gEUEJHqfOjtF3ccFD4x%2Fd7%2Bc1IXRyQFCoj0DG7uOyt0nL7z4yezefM%2FSF0ckW6JAiJSHUaMnp99avP%2B2We27J%2BNf2VR6uKIlI0CIvXPy9MXh0aeTJhqQy%2FSURQQkeoPjG2039Bs8VIvzys9CgVE6v8a7JsdNCw08jc9MCt1cUS6NQqISHU5%2BuxxoU4ddsZLqYsiUiYKiNQ3v%2F3rhNC4%2F%2FJ0G3eRzqKAiFSXpcs%2FzDY5oGGQ7NYHZ6cujkhZKCBSvwx94d2wyY99H376rEjnUUBEumaZ8Ke36J%2Btt%2B3AbM68FamLI1IGCojUJ1zlasN9nwqdpQEj5qUujkhdoICIdA29b5we6ta%2Bx420fklPQAGR%2BuTMyyaHxvyoP41NXRSRukEBEem6z6na6pARoX7d3e%2BN1MUR6WoUEKnPa6xzecMv7zQ4fOiTiFQHBUSk6xg3ZWH2ic36Zd%2FY7YmwN0SkjlFApP445JTRoZN0w70zUxdFpK5QQES6lt%2Bd13DhlHOvmZq6KCJdiQIi9cWzY94LjTcdJaa0RaR6KCAiXcvb760Mm9H53Ko33nJDutQtCojUFz8%2B5vnQQXps6FupiyJSdyggIl3PpbfMCPXshPMnpC6KSFehgEj9MPrlBaHRZiOfHSSR6qOAiJTzAbpf2Xlw2MvoZXmlTlFApH44%2BMQXQ%2Beo76C5qYsiUpcoICLlXpb3jL9NTl0Uka5AAZH6YPqspeFDBzfab2j20Rp7RyJdgQIiUg4LFq8Oe0HW3XqAH6Qr9YgCIvXBH65o%2BNyPa%2B96PXVRROoWBUSkPE67%2BOVQ3268zys6St2hgEj3Z9XqNdlXdxmcfXqL%2Ftn8BX7uh0hXoYCIlMekGYtDfdvypyNSF0Wk2igg0v15%2BMk3QyP9q7PGpC6KSF2jgIiUy85HPBvq3EuTFqQuikg1UUCk%2B3P4GWNCAz3kuXdSF0WkrlFARMrl1gdnhzrHMmOROkIBke7NB6vWhI16n99%2BUFiKJSJdhwIiUi7vvr8y%2B8Rm%2FbLv7fOU9U7qCQVEujcDRswLHaKj%2FjQ2dVFE6h4FRKR89jy64QN2J0xdlLooItVCAZHuzcm9J4aG%2BaEhb6Yuikjdo4CIlA9Xd6TeXXLzjNRFEakWCoh0bzY7aFj4%2FA%2BmqUWka1FARMpn8qsNV8Pa97iRqYsiUi0UEOm%2BcMld5GOLXsNTF0WkR6CAiJQP9e1ruz6RrbvVgGzlKvc6Sl2ggEj35dGn3gqdIT6sSUS6HgVEJA2HnfFSqHvPj3s%2FdVFEqoECIt2Xc6%2BZGhrk%2BwfOTV0UkR6BAiKShmvubNgHct3dr6cuikg1UECk%2B3LgCaNCgzzltSWpiyLSI1BARNIw%2FMX5oe4d95fxqYsiUg0UEOm%2BbLDHkGydLftnqz90TaxIGSggIml4f9GqUPe2OXRE6qKIVAMFRLoni5asDo3x1j%2BzMRYpCwVEJP2g25o1VkDp9igg0j2ZOK3hsoQ%2FP2106qKI9BgUEJF07H7kc6H%2BvfnOB6mLItJZFBDpnvQb3vAJ6GddPjl1UUR6DAqISDqOPntcqH8vTPBKWNLtUUCke3L9PQ1XBOGriJSDAiKSjvOvb7jy430D5qQuikhnUUCke3LO1a%2BEhvjhJ99MXRSRHoMCIpKOW%2FrODvXvyjteS10Ukc6igEjtM%2F6VRdmG%2Bz7VJOttOyA0xN%2FY%2FYkmv%2B872M8EEakGYycvXKvefXLzfqHeFX%2F%2F0BAHAkSqzW0PzW5Sz76%2B6xOh%2Fn1h%2B0FNfr%2FxT4Zmr85elrq4Iu1BAZHu9SmwLWXzXsO9JK9IFeEiD63Vuy16Dc8%2B%2FMgpEZFqs2LlR0EwWquDJ5w%2FIXVRRdqLAiLdg7lvf5B9btuBzTbAH9v08eyZMe%2BlLqZIXTHn7RXZZ7cZ0GK9e9Z6J9JlDBjRcMGV5vKlHQdl8xesSl1MkfaigEj34fLbX222ET7mz%2BNSF0%2BkLrn0lhnN1js%2FlVmk6%2Bl10ovN1sFbH5ydungiHUEBke7DqtVrsk0PHLZWA7z%2BdgOzt971uugiXVXvNjmgcr2bN996J9LVzJq7PPvMlv3XqoPb%2FeLp7CM%2FlFC6JwqIdC%2BGjXp3rUbYS%2FGKlF%2Fv%2Btw7M3WxRHoMvftMa1L%2FPr5Zv2z0ywtSF0ukoygg0r03pP%2FoYDeei5S9Id2N5yLlb0j%2F3t7%2F2ZDuxnPp5igg0j03pH9m6wFuPBcpeUP6Olv1d%2BO5SOIN6VyG3o3n0s1RQFLAiP3CxatNJ3Jhn2nZEWeNSV6O7p4PVtX37FHq97fect51U7Mj%2Fzg2eTnqLfW8jt%2FzXXWz%2F%2B9GZdfc9XryctRTJAkKSNksX%2FFR9s3dh7R6XW9jysi6Ww%2FIZsxemvXUz44xphay1SEjsnpk6fIPGz88z5hazeFnjEldVXoiCkjZzJm3Ihzw6207MNvm508bkyxf3aWhYzDkuXeyeiReMW3rQ9O%2F18Y0l3W27B82FNcjM%2Bcsa7xiWur32ZhiODdwfG520LDUVaUnooCkEpC9jhmZfbDyf41JllMumtQjBGTp8jXJ32tjmsv393mq7gVkv%2BNfSP4%2BG1PMkmUfKSDpUEDKRgExtRIFxJj0UUCMSRMFJCkKSNkoIKZWooAYkz4KiDFpooAkRQEpGwXE1EoUEGPeea8jAAAbf0lEQVTSRwExJk0UkKQoIGWjgJhaiQJiTPooIMakiQKSFAWkbBQQUytRQIxJHwXEmDRRQJKigJSNAmJqJQqIMemjgBiTJgpIUhSQslFATK1EATEmfRQQY9JEAUmKAlI2CoiplSggxqSPAmJMmiggSVFAykYBMbUSBcSY9FFAjEkTBSQpCkjZKCCmVqKAGJM%2BCogxaaKAJEUBKRsFxNRKFBBj0kcBMSZNFJCkKCBlo4CYWokCYkz6KCDGpIkCkhQFpGwUEFMrUUCMSR8FxJg0UUCSooCUjQJiaiUKiDHpo4AYkyYKSFIUkLJRQEytRAExJn0UEGPSRAFJigJSNgqIqZUoIMakjwJiTJooIElRQMpGATG1EgXEmPRRQIxJEwUkKQpI2SggplaigBiTPgqIMWmigCRFASkbBcTUShQQY9JHATEmTRSQpCggZaOAmFqJAmJM%2BiggxqSJApIUBaRsFBBTK1FAjEkfBcSYNFFAkqKAlI0CYmolCogx6aOAGJMmCkhSFJB6FZB%2FvfFONuSpkdmIZ8Zkc998L3lFN7UXBaRzmf%2F%2BsuzF0ZNCHZszd37y%2F2elLFi0IpSPtmDq9H9ly1d81OT29xcuD68jdTl7chQQU295d%2F6SbNHilcnL0VoUkKQoIPUmIPPmLcx%2B9ssTsv%2F%2FyW9l%2F%2F2pb4f81yc2yA7%2B2fHZ2%2B8sqtrz0KF5Y867zd5%2B6GEnZv%2Fv499sNjNnz%2Bt0Ge69v3%2F2yXW%2Fl7wRu%2Be%2B%2Fi2%2BpqeGjwq3t1UEf3LQ0dnpf7i4y8utgHQ8l195a%2FaZ9TZqPJ6pb9SxWf96u%2FE%2B39lwp%2BzvV99Wlef73Jc2zR58%2BIk233%2FFB2uyS%2F7WJ1t3%2FY1D%2BT7xme%2BGrxttslv2%2FMgJjfc75rg%2FhHKnrkMt5cmhI0PZ57%2B3tMX7%2FfaEP4f7XXP9nWvdts%2F%2BR2YnnnJup8rxxJPPt9jmdTQKSMfy1rwFFc8tX%2F%2FWttnZ516RLVm6Oulxe94FV69VNuoj7ftLY19p12NNf3VO9vSzYzpcljP%2BeEn2pa9vWZXX9ezz48JreX3WW83e5wc%2F2rNiPexoGESZ8dqcqv%2BPFJCkKCD1JCCLl6zKttnxwOxrG2yTPdZvWLZs%2BYfhd%2F0Hjsi%2B8s2tswN7HRs6JtV4Ljo0d9%2Fbr0UB2Xyb%2FbLBQ56rmGqMjnQXAXlt5puhM8hoc1seTwGpbQF59PGhQexv%2F%2BdD2cJFH4RZBiTzm9%2FZPtt1j5%2FXhICce8FVoYwXX3pD9s67i8PvXp70WrbnPoeHjkgUpXoREP4HvEfrfXmzbPude3WJgHzs098ObU61X58C0jkBoaM%2F6sWXQwY98Wz2p79cHgYEel98fdLjlnJ96rPfbywbAnHXPY9n2%2B10cBi84HdtfayLLrkh22jT3WtCQGg7OJ%2B1VB%2BrLSDf23iX7NLLbqz6%2F0gBSYoCUk8CcvV1%2FwwN7%2BiXJq9120OPDgmNdX7khZP2wMHPZI%2F3H95k5DaGGRNmOuhcxdkTBIalHB9f5zvZldf8I3vzrfebFZA99j6s1YasOKrBSSV25GngKCOyQjleGPVykKqWBIRyIl%2BciHis4vNxO0tOnhr2QqOM8fWlMVOCGM3%2B1ztrlYdRT56XUZjYmWuPgCxd9mH29tsLG5%2BP0ayw9OW9peF1MaKUf11FAWEkj%2Fecx6jm8aKAdCy%2FOf6P2Y%2F3PWKt39982%2F1htjHWlUoCQv3rN2BEqKOVBgOmTJ2VPfDgoGz4My81OSaKAsKxwzFB%2FSg%2BBnWKzjISUmlpBI8Vb4sCwjHKcw4Y9HTFY%2FzV1%2BeGgQzqANIVf08ZKQfHKDN81KFi%2B8NIKc%2FL39GWDHt6dMUBCO7H34%2BbMK3dAkLHbp3PbZTddseD4b6TX5nZqoCwbI7nYxld%2Fn8R61t8bZSHrwgdbWxzbV5Ho4B0TkD%2BcefDa93GYBuDcfnfTZoyM9S950aOD8d78W84vp55bmw4B7BUkfY2v2SR7zkH0WYXjwGOJX7HsTN0xIuhXiIgHJPF56EebPjD3bIddvlpk3NqfoAqHnvcl1UNCMR3N9q54TzwzqLG47N4fmtuhq4oILQR7y1oWH5J%2FUKOio%2FH6%2BX3tDsTX351rfNZ%2Fr2hnNx3zLipzQrIK9Nmh%2FrG%2F6H4vjNIx%2Fc8D%2FeJP8eybvDdHbKzzv5bWFpezWNIAUmKAlJPArLL7odmO%2B%2F2s4q30bgw4kJjxs8jX5iYfXWDrbP1v7JZtsnme4WO%2FPkXXtN4fzro3LbxZntk3%2F7%2BjtmnP7th6BjRcWCUkYafUZzmRurbIiC3%2FqNveBwEiJ%2FppNDQ%2FPJXJ4efGa39%2BeEnZd%2F%2Fwa6hDDTm2%2B50UKMsFQXkkcefyj77hR%2BG10UDv%2B7nfxCeI96%2B026HZKed0Ts8Hs%2FLe8JJg%2FeMx%2BHv6GT8%2FqyLGjskvz%2Bzd3ZAr99k%2Bx14VPibStPg7V2CRRlP%2Ff0F2Re%2Bunk4KXAbI%2BfxpJgXEN7v%2FQ8%2BJvvh5j%2BueuOrgHQsLPX5xre3W0tWOQnTMYj%2Fx7yAUO84dvnfb771vuHY3GzLvZt0GPifc%2FyFY3f9jUO9jBKdFxA66tznpz%2F%2FXZjhrLQ8rKUlf3QAKGcUENqNLbfbPxyL1HOOy9jhoB4gXIzkUl5mUj%2F%2FlR8FWYkdL56LzgGvib%2Fl518dfXrj8%2F1oq32yY3%2F7x%2FCe8RwMktCuRNHhOahzvHaWz%2FCVMsXyt0VA9v7Jr7PDjjw1dPx4j%2F9y%2FlUtCggjuAyi8Hx8ZbZ22ow3GmeKeD4GWBA52qN8m0dnrprHkwJSfQHhf7bFtj8J31NHaEM5f1D3%2BF8yW8n%2FOd6f2UyOcW7jXHDq6ReGx471EwHnb3kMjmFWADArEf%2F%2B8CNPy3599OlhdoO%2Fo7PdnICQv19ze%2BPj08bzPYOE8XbOS%2FF8w3mZekm9oHwMrnEbg4fx%2FrxGbmPGsy0CwvcnnfrX8DWeg5g5jAMDtFf8zPFOW8Nz0%2B5VWoLFzzwG9Yg2gLpG2xcFBCk76jdnNtZvBmk4p8a9ZwzcIFe8fzwfj0G9Y1CB23l%2B2gzeg8N%2BfUpVjyEFJCkKSD0JCCd%2FOhSt3Y%2FGio4%2BlTmOetBJptL3fWhw%2BHnrHQ4InYr4N6yppdFuzxIspk050RcThYMc9NPjwuMiH8f%2Fz9mhkxJH%2BhEQysSIUmyUGVmh41UUEDrndNqYfo%2BPzYkpPyOEgHD%2Fa2%2B4s7Hx5Pl5rXFEC%2FHiRHTHv09qCAgNK401nbZKHb6OCAgduXgCRJy4nY5WXkDo0O57wFGhA9cVm5wVkI6FEVROlBybu%2F34l%2BGkT4e8uOY8LyAccwhuPLbpfLNU8oqrbg0%2FI%2FecoBldjR0ARPkPf76siYDQEaJe%2FeKIkyqO4hI6%2B3RG2vJaaC849m65%2FYHwM6OrdAY43vl5wsQZ4XY6GfzMqCd1huQFZNMt9m4UZF4Tv4ujmBy%2FdMSivDMLRL1ktoKfb7zlvvB%2B8r7yM50y5IvBh7YICHWZ944ZGn5GfngN%2BVmNvICwhI7%2FXbw%2FbQ9tA9KTFxBeEzM%2B3M7vXYJVmwJy%2FY13h3pFaINp92nD%2F%2FzXv4f7MetBu8%2FMMz%2FThm%2B1%2FQHZyaedF35mVoPjMYoMxx9CnhcQOuPMesZjkLrI30QJQEA4TyC%2BjNhTN1sSEOp5FIzWBKTSEiyOzeN%2B96fGnzmnUh7ah7YKCP2FONsYpSbWiSOO%2Bn3o%2BMfzDudgHp92IC8gtAcMJjDjxIwK%2FQkG%2BfJ7sXgfeL44qMF5lHP%2BKb8%2Fv1FAuD%2Fnf%2F43vHd77ferMCgQy%2BsSrLpEAaknAaFje%2BafLm31frHxy09zxg4%2FnRe%2BpwOw256%2FaJwujaO77REQZlBotIv52%2BU3Nd6PBv6LX9sinPzpRLDRM18eZh7yj9vn5nvDCElRQG669f7sc1%2FcZK0lKcycxJEqOhm9Dv1tk0ae0ZjY6MYgAGzkjwJCY1mcnu6sgFzQ%2B9rG22lweR2MwsXnP%2BHkc0MjzEmn2ks%2BYhSQzq%2BD5niOG7053jk%2BKwkIS4Lyyx%2F5n9JJRuz5mc52cVkX9TR2eBEQOvY8JgLe0vF45DFnhM3mbRUQOjP53zGTwAhlLCdSHm%2BjfiE%2FO%2B56SBMBybcFzCTwOzrvUUCYRck%2FBx0KOiZ8z1KU4vKo6%2FrcFUY8kYjWBIS1%2FshdfE9Ygsn94yxNUUB4%2F%2BIgRsxDjwwJbQHiFwWEx8nfRwHpHpvQ%2BT%2FRztMh5n50lKNAE44jZr05zvmZgbY4WxLz8GNPNgpIlPDi0kIkJh5TCEjxMVoSENoCHpMljx0RENoezptxEOLoY88K5%2Bvm3qtKAhLbHkI9ox2j%2FUIqEDiWG%2BYfA9HjPcgLSKybcfYw9hU4R0cB4Rx84UXXNXmsc867MrRlUUCQm3z9ZvaR9jTfXiggdYcCUk8CQoXOL30ohsaCERIaGZZRFG%2BnkxCXTdF5YMkFjQuVn0Y6v3azLQLS2hKsGMpTXLYRBYSlGcXXwH05%2BeQFBPFiiUvxsRmhjiNFCEh%2B%2BQSNO4%2BFYNAZjEFk4mgoApLfWFwtAYmyEUMHE4mKAsJJlN9x35auNtKZKCDVCR1f9jWwDIhObBxVzAsIyw0YkWVdOifW%2BL%2BNnQBGXFn20dxzcP94TNDRaW72Ix6zdCaau53yMeobBYTlKfnbWS7BzFvsmDBDQV2mk0%2B952tRQKJs5DtPUVwQkL8WlkQxukknhO95P0i%2BDvIcPAYzRS0JCOVDtuiMxQEOOmLcPy4ZKQoIyxmp4%2Fnnow3gb5CPKCDFteoKSG0KyOV%2FvyUMjhE6wsVZamYmGfSi%2FY%2FLDDleooAw2BS%2Fj5k0%2BfVGAWG2g%2B%2FpSOePGepYHKhCQDjntVVAGPTiMceOn1ZRQDhXtCQgDB7SaWfAjtdH%2FaEj3x4BueGme5rc58vf2CpIA4%2Bdr7%2FF5AWEgYJKbQ2DGjwWAxaUk%2BfLv3f8HN8byl2csWVGlvYx%2FqyA1CUKSD0JCOtev%2FW9HSpefpDpzzjFyr6IOIuQD5tR4%2F6LGBpIGnjWv9L5iWvSqyUgdN4YAaURQ4ry6%2BoREKZz8%2FdniRidPBq2vIDQkctP2cYgUXFZFieg%2FAwRe2J4T3iceKWSmDhdTGeupZGljgrIP%2B96pEUBYcqf%2B9O5iqPR1Y4C0v7E5Rv5ZYQxLNXh2IwdgbyAUB848bKumfXhjDIizFFA%2BL44C8CSkrjfieODJQrMpDA6mV9%2FXgzHM8dbXNJU7LCzZCJ2zitdBSsvIHEmgtkXNpjSWaIzUxSQ%2FAhzJQHJz%2FgVBYTliCz5KtZBQlvWkoAgPtzGUrX8Mk%2FKT6cmrmnPCwgCRztX6fnYCKyAdP89IPnQ5nNuoX3lf8sxxSxelA7k4ZBf%2FE%2BTv0HQo4BQ1%2FmezdHF44WLRsTHiEsG2yIgLD%2FiuOf8V0lAeNyWBCQOrv3uxHPCOZ06WuniES0JSDzfFAWENofnZllW%2FnbObyzRzAsIokBfoPj5Qsgaj8V7HS%2BIUam%2BcV%2FaS4Qw%2F%2FcKSI9AAaknAYlLq9iEWux0sOQAOaHjzucAFDsoTJtywmZzHB0pOllcGSreTkOc%2F5tqCQgNK%2Bu%2FGZWlkcmPxiIgxSuZ0AmLS0byAkJZKFP%2Bal40kIy%2BsOa7koDQoeFv8stm4vrX%2BB6mEpC4CZ0RLv42bsirZhSQjoW9GXHkM5%2B49Cjuo8oLCOutEfl4Xzq6jFpGAUEIOK7z%2BxaoC3FJZH4TOptSkRBGaSuVjzpO52b3vQ5bazCCvU1IUlye1JqAUI%2BLMyTcVk0BYdaiKNmMzsZytSQgvD8IVfH3XGQj%2F7%2FICwgzrez7yt%2BfPTjUczqECkh9CQjnkLzc01lmiXEUEESB%2FVj5K7MxaBUFhD0d1Jm8IHCccMzGfUztERDqHsIQZwUpD8uP8%2BchzgWtCQgdd6SBJZcIVUvvQXsEhDaI9iO%2FRAu54TzNuTQvIHEQL%2B5fJNQbzrtxCVZxv0pcNhnbNgWkx6KA1NsHEdJhprGkMWTpBCOYLCGiwcs3EnROGJHlhMo6VASFRjium6WDwTpZOsAIC40FV7CIt9Ng0DnJdzzy4TYeD2GoFDprrINFAOJGXDoslD02jAgIgsH9KSNLWGioY%2Bc9LyB0umigOdmwqZs1vCyjQqRip64oILFhpiPIe8UIFw0lszGx89EeAeEkVHydlKUzAhJPbrzf1d4LooB0LPf3HRhOsEgI%2F3uONUbdEXxOtnEfUl5AkHFmEalPdHY5FjnJs1YdaaY%2B0Fmhc8xJnuOUuhGXSuUFhI4SxzrHd3HkMYZjGUlhtB%2BZpqPE8UgnOl8HWhMQxIHlSrxOHpPODsujaDsYNKiGgDBwwgZe6iLfU964Hr0lAUHiqEvF9eWEOk8Z42vLCwjtDu0hdZ3XhOwwQh47hM0JCPehXW2uzetoFJCuFRDOXSyxo14xm4FQcwwz885sJB1p2lf23LE0lraXznh%2BEzpXaOJ8hsCz8ZzjgE58nLFvTkCob%2FFcQDlYpsk5jDY%2BLzycb%2Blk8%2FwMArJMkHNhFJC41IljNbYvSAF1nMerNCPbUQHhe%2Boe59bLrrg5nMNov7gADM9dvApWvJDMnXc9GiSN%2Bs45NT4Wg4PUbwZOqMu8L7RttJttFRCWqNIfoL5W8xhSQJKigNSbgBA6CzQYNJiM1tKpGT9xepP7MMvBCZmpUhoPGs84nUxoXBgholHkilkHH3J8k8egIabBpmGsVAY6EUhIc2EpCZ0SRn7zG2oZ5aBTRONMg8NmbNbG8zqQi3zHnWu259fuMgPB7AWiROePBj9%2F9SgEptjxp6PCa2AJDO8DV%2FPIf0AUJ7dKn6eQDyeJ5l4nksQmRr6PV9PhZMaegWKnL14BidGueBUuwkmQ%2Fw8NfDWPEwWk4%2BF%2FxbFC%2FeDEzfHDOvP8MgjqV%2BwYsPcK2eC45Lhm2QS3sdQuXkkH0adjwog%2Bo6uIa%2F74yH%2BCOccPx1QUlEph%2BST1g444V5djpqE4gs%2Bxn78oRLxiV%2FwQN%2Bohy0VYCojMszmUtfYMYHAfXm%2Bsz%2FHvEQV%2BF9sLOnRxJiLfIaKdytdlJIE6yKVM83ukeBwer3iBCT6%2Fg983d%2BUfOlh0DNkvg6Tk18gjT%2Fz%2FkEY6N7yuKHO0Izxu8TLL%2F%2Fh3m1dcO9%2FZKCAdSzzO4lUSmwtLGRFn6iodfc4BtPEMAsTLtHMFN%2FYbIicc78hKkN5%2FXyqWcxTnJo4VjhkGH%2FKX8eX4iQNp%2BYGK%2FLmAWQouv04nvXgRCeoUg4AMYPDYLAHmb%2BIsJxdHoC4jMPk2hqVjnJ9buigF4TXHGQfC9%2FF8k%2F8dA33xZySEuohQIFBROKjrlC0ux6Ze8p5xjub9oV5zNbD8Y9HesWQsflgrF33It6XFi1QgKpwn489cyYz2IV64olpRQJKigNSjgNRL6KjRYKcuR71GATEmfRSQtEFGixcFYQCIgYXUZWstLCUszi6atkcBSYoCUjYKSNujgHRtFBBj0kcBSRv2C7GkkplnLrTA0iBmOfKfKVVrYYM4M%2FNcTKarLtPeE6KAJEUBKRsFpO1hmQbLQVKXo16jgBiTPgpI%2BrBEMO7LYhkUMtLSpa5TJ14ePr8x3rQ%2FCkhSFJCyUUBMrUQBMSZ9FBBj0kQBSYoCUjYKiKmVKCDGpI8CYkyaKCBJUUDKRgExtRIFxJj0UUCMSRMFJCkKSNkoIKZWooAYkz4KiDFpooAkRQEpGwXE1EoUEGPSRwExJk0UkKQoIGWjgJhaiQJiTPooIMakiQKSFAWkbBQQUytRQIxJHwXEmDRRQJKigJSNAmJqJQqIMemjgBiTJgpIUhSQslFATK1EATEmfRQQY9JEAUmKAlI2CoiplSggxqSPAmJMmiggSVFAykYBMbUSBcSY9FFAjEkTBSQpCkjZKCCmVqKAGJM%2BCogxaaKAJEUBKRsFxNRKFBBj0kcBMSZNFJCkKCBlo4CYWokCYkz6KCDGpIkCkhQFpGwUEFMrUUCMSR8FxJg0UUCSooCUjQJiaiUKiDHpo4AYkyYKSFIUkLJRQEytRAExJn0UEGPSRAFJigJSNgqIqZUoIMakjwJiTJooIElRQMpGATG1EgXEmPRRQIxJEwUkKQpI2SggplaigBiTPgqIMWmigCRFASkbBcTUShQQY9JHATEmTRSQpCggqQTkizsOyvY59gVjkuXbez7ZIwRk79%2BMTP5eG9Nc1t1qQN0LyJd2HJz8fTamGM4NCkgyFJCyWbr8w%2BwLOwwKB70xqfPJH%2FXLpry2JKtHDjxhVPL315i2ZKP9hmb1yKIlq7P1txuY%2FP01pqUcdMKo1FWlJ6KApGDx0tXZrLnLjUme9xauyuqV1R%2BuSf7%2BGtOWrPjgo6xe8Xxnaj2cK6R0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBAREREREQkK4vB%2FwfoemsRUTOSYQAAAABJRU5ErkJggg%3D%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAyAAAAMCCAYAAACRFKJVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nOzdd5Qb5d238ffv53nSCySBdAgkQAg9dEJISAi9BQgECIRmMDbYgDHGvfeOO%2B4FF9x777333u21vW7rbv%2Fe873NiJF21x7bsyNpdH3OuU%2FslVYayUGaS%2Fc9o%2F9nAAAAABCN4f8vojsCAAAAAAIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQAAAAABEhgABAAAAEBkCBAAAAEBkCBAAAAAAkSFAAAAAAESGAAEAAAAQGQIEAAAAQGQIEAAAAACRIUAAAAAARIYAAQAAABAZAgQAAABAZAgQAAAAAJEhQADkhn0Hjtm6zQUMRkaMPfuOpfs%2FCQBIFwIEQG7Ex0%2FuHGbfuG4gg5ER4we3DLbN2w%2Bn%2Bz8NAEgHAgRA%2FK3fXOB2%2Bi69e5j947VpDEZax6%2F%2BPML9%2F3HO4vx0%2F6cBAOlAgADInQDRzt%2FhI6cYjLSOFz6cQ4AAyGUECID4I0AYmTQIEAA5jgABEH8ECCOTBgECIMcRIADijwBhZNIgQADkOAIEQPwRIIxMGgQIgBxHgACIPwKEkUmDAAGQ4wgQAPFHgDAyaRAgAHIcAQIg%2FggQRiYNAgRAjiNAAMQfAcLIpEGAAMhxBAiA%2BCNAGJk0CBAAOY4AARB%2FBAgjkwYBAiDHESAA4o8AYWTSIEAA5DgCBED8ESCMTBoECIAcR4AAiD8ChJFJgwABkOMIEADxR4AwMmkQIAByHAECIP4IEEYmDQIEQI4jQADEHwHCyKRBgADIcQQIgPgjQBiZNAgQADmOAAEQfwQII5MGAQIgxxEgAOKPAGFk0iBAAOQ4AgRA%2FBEgjEwaBAiAHEeAAIg%2FAoSRSYMAAZDjCBAA8UeAMDJpECAAchwBAiD%2BogyQ7Tv2Wt7ug2nfyQ0yCg6dsO3b8%2B3AwePn%2FLuHDp90v%2BsfO3buS%2FtjCnMsX7nRducXhH67BAiAHEeAAIi%2FqAJk3oIV9j%2Ffusx%2B9Zvb3c59unegzzY2bNzhtnfK1Pnn%2FLv5ew%2B7300dP%2Fn5jfbRJ%2FVt774j5xQzrdv2sJWrN4XyuLZu2%2BNub2fe%2Fgu6ne%2F88Hc2eOj40J93AgRAjiNAAMRfVAFS7qPa9rNf%2F9HtiI8YNSWtcRFVgFSp1sSWrdjgxvQZC61Ovdb2gx9dY08%2FVyrwbR0sOO5uq%2B%2BAkaE8rlmzl7jb0zZdyO0QIABQIggQAPEXRYBoGdPPL7vVGjXtYL%2B%2F4a%2F28qvlCy3N0o6x%2Fqwd%2Fm49Btm06QsL3c76DTvs8y79rGv3gW4JkP%2ByRYvX2LoN291Spz59h7vI0UyLhv7cvedgW712S6HbnDFzkXXpOsAGDByTtEzKHyCr1my2OfOWF5qZUFRs2pxXbIA0bdG50GXtOvZ2lw0dPrHQDJEe9%2Bix01x0ePExddoCd%2F0GjdvbmnVbk54zRUnvL4bZlq27C92Pln117faldezc1xYuWu1%2BpuVveu50e%2F2%2BHOVmQ7zrr12%2FzXr0GmxfDhpru%2FYUXlqly3V%2Fk6bMdY%2BdAAGAEkGAAIi%2FKAJEO%2Fff%2FN4VtnHTTqtcvYn98CfXJh0%2FoJ3hiy%2B9zl58pZz99Fe32JVX3%2BN2kmvVaZW4Ts%2FeQ%2Bx7F11tf7jpb3b3n5%2B27150ldWu%2B%2FXl%2BtlTz75ll115p4ucb3z3Cnvh5ffsrw8872ZedLv6fUWDF0X%2FeORld7%2F33f%2BcXXPdffbDH%2F%2FeRo%2BbXihA2nfq425P2%2B%2FdnwJJl0%2BeOu%2BcAmTf%2FqP245%2FfYG%2BUquj%2BrkB67c0K9u0f%2FNZuuOUB99xcd9Pf3ZIrLZP67TV%2FcrelgKtZu6X7He34X%2FzT6%2B2Kq%2B52Q49L2%2Bjdx4RJs%2B1HP7vB%2Fe4f73zUbXv9hm1dzPz6ijvc7el5Urzo%2Bs1adnFBoedNz9Wlv7zZRo2Zmri9Tl36ue37xeW3usuf%2BOcb7u8ECACEjgABEH9RBMg%2F%2F%2FW2Pfz4K%2B7PCxaucjvA%2BnTeHyD62auvf5T49P%2B%2Fb1RwO7teDGjpUrUazRK%2FM2TYBPc7mjHwAkTX0UyC%2Ft6oWUd3%2Betvfexuc%2F%2BBY3btjfdb6bJV3OUTJ8%2Bx%2F%2FvOb2zp8vWJ23z0yf%2FaM8%2B%2FUyhAFALayW%2F5WbfEdT%2F4uK5d%2FYf7iny8ZwoQjdvvedyFkbfzf9Elf7C585cnZinuuOcJe%2FDR%2FxS5BGvzll0umipVbexmItxjbdrBBZ5mhfQ4L%2F%2FtXfbv%2F7yfuFzbrWDQzEbqEixFiQJFM0T6u37He%2B51rIpmSRRmFSrVd5dpe%2FTvpNsgQAAgdAQIgPgr6QDRDqw%2BXdfyIu9nN936oD302H8KBYiW%2BXg%2F03Ig%2FUw71Pp0XzMDe%2FYeSrrt629%2BwD6p0igRIM%2B%2FXDZx2dgJM93vz567LPEzzZB4x19s25afWFalHWstb%2Frbg%2F%2B2vz%2F0YqEA0d%2BffaG03f%2BPFxK3pdkFHeNxPgGimRfvtrTdXhR5Q8umFBSapUkNED0XCi3%2F2bk0q6JI%2BKxdTzcjo%2Bv7l4zpedOB51qqlRog739Q026969Gk%2B9eSLV1Hy61atO7qgsd%2F4Lz33BAgABA6AgRA%2FJV0gGgnXDurigUtB9K45Bc3uR1s7cj6A8Sb%2FfCWbeln2pmvWLmhi5bU29YsgZZteTvy5SvUSVymnWf9vv%2B4CcWHIkR%2FVthoRkXLnhRIOkOVljMVFyDaRm2zduK1jOt%2Fv325LVm27rwCRMvIvONgtNxJsytaMuUNxZZ%2BX7MdqQGimQjN3Pivr6FZDC3R0syStk2Pr6j7Tg0Qzfp86%2FtXFro9Xaf%2FwNH2XvmadtNtDxW6HUUQAQIAoSNAAMRfSQeIgkOf9usTeG80b9XF7cxr6ZA%2FQPy%2F5w8Q7VjrGI3U277ljkcS0aEA0SlugwZI1epN3Y62Dsr2QujtdysXGyCaZVCktGnfy92P7q%2B4x3ymAFG0KBC8JWiKnrLvV0%2BcLcs%2FipoB0XOhYzGKur5mdb7oN8JdP2%2FXgcR96jYUTUUtwfrXi%2B%2B6Y2CKuj0tB9NSr6uu%2FXPSY9BzoQgiQAAgdAQIgPgryQDRMiDt7A4bManQZdrRV0AECRDt6GqHd9GStYnLFRb6mT6lP58A0RKw5%2F5dOnGZDgbXsRnFBYhGqdKf2gMPv2S%2F%2B%2F29SceDBA0QnWXrz3991kWHdxD%2BE0%2B%2FYff97V9J11OYeT9LDRA9L0U9Fwo0PWYdvK648w4w946X0c90ZqzUANGB%2FAor%2F5mvdCC%2BokOzPb36DHXBpGN3vMv79h%2FJEiwAKBkECID4K8kA0fEFv7z8tqSlVd5o26GX24nVQeNnCxAdo3HvX55xB33rGAgdI3Hb3Y%2B5g7W9A63PNUB0%2FIYO%2FtZxE5oF8cJC96HZgqICRGeX0s64zsCl2YazBcjNtz%2FsDmrX0HEfOvuVllzpwG%2F%2F2bS%2Bf%2FE1bkmWzvSlY1p0%2BzrzlHcdnfHqsSdfs5Gjp7rnUs%2FFNdf%2FxZ3SV8%2BHlnQpWLznWceUKCoUMjrIXf8Gb779ibtMpyL2Ds5XIOoYHQWRwkizMk2af%2B4OQFdsebMdeq713Oi5UlTpLGU65oQAAYDQESAA4q8kA0Q704qFoi7TDrxORavvw5g1Z2nitLTe0M6xfuYdy6DvvVDQ6FgQLevSFxvqE33v%2BnXrf%2BaWH3l%2F1xmh9Pv%2B67Rq0z0xc6Edax1bcuefnnTHkuiTfs0ePPnMm%2B56OvOVfn%2FFqq%2B%2FgVyx451h6kyPW9us3%2FUPba%2BWb%2Fm%2Fa8Qbml3QKYMVLJqZSf3SQW2blkoplPR3HRCugLrnvqftrnufco9Dy6W862vpVoNG7VyU6PYUFf5jQnSGMEXR%2BImzE%2F8W775X1YWGlmM1btYpKRp12zoWRAer65gRBZrOAuadcYwAAYDQECAA4i%2Bqb0KPw9CSJM1OjJs4K%2B3bEtdBgADIcQQIgPgjQIINnY72kSdetT%2Fd98%2B0b0ucBwECIMcRIADijwAJNrRkSUuvvIO3GSUzCBAAOY4AARB%2FBAgjkwYBAiDHESAA4o8AYWTSIEAA5DgCBED8ESCMTBoECIAcR4AAiD8ChJFJgwABkOMIEADxR4AwMmkQIAByHAECIP4IEEYmDQIEQI4jQADEHwHCyKRBgADIcQQIgPgjQBiZNAgQADmOAAEQfwQII5MGAQIgxxEgAOKPAGFk0iBAAOQ4AgRA%2FBEgjEwaBAiAHEeAAIg%2FAoSRSYMAAZDjCBAA8UeAMDJpECAAchwBAiD%2BCBBGJg0CBECOI0AAxB8BwsikQYAAyHEECID4I0AYmTQIEAA5jgABEH8ECCOTBgECIMcRIADijwBhZNIgQADkOAIEQPwRIIxMGgQIgBxHgACIPwKEkUmDAAGQ4wgQAPFHgDAyaRAgAHIcAQIgdwLkx3cMtduencBgpHVcevcwAgRALiNAAMTfwYLj9uv7RridPgYjE8Yldw2zbXmH0%2F2fBgCkAwECIDccO37S8vcdY1zAuPGJcfb9Wwbbnr3p35ZsH0ePnUz3fxIAkC4ECAAgmGsfGeM%2BvT91Kt1bAgDIYgQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABEOAAABCQIAAAIIhQAAAISBAAADBECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABFO%2Fw0r7qOFiAgQAcCEIEAAAAACRIUAAAAAARIYAAQAAABAZAgQASsKpU6ds6fI1dvBgQWT3eezYcXefh48cOe%2Fb2LFzl63fsKXYyw8fPuLu4%2BTJkxZHelx6fIcOHU73pgBAXBEgABCWYSMm2uq1G92fj584Ya%2BVqmSLl6yK7P737Nnr7nPjpq3nfRtf9B9h9Ru3L%2FZyxYnu40IiJ5MdPXrMPb616zale1MAIK4IEAAIy4cV69uY8dPcnwmQ7ESAAECJI0AAIAzzFiyzsh%2FUts%2B79rc1azcmBcjCxSvsy0FjXJwcLDiU%2BJ1Vq9fblq07bPuOPBs8bLwdP37c%2Fbzg0GGbNGW2DRoy1mbPXWwnTpxIui%2F9zrCRE93vLFi03C338gfIho1bbc68JTZg0GibMGmmHTlytNAyqyHDx1v%2FL0fZ7DmLkpZTpQaILps3f6kNHznJFixcbuvWbz5rgGzest1te%2F%2BBo5K2b%2BfO3bZk2Wq3PWPGTbNNm7e5nx85etRtp%2B573IQZtn%2F%2FwaTbKyg4ZOMnznCPZ%2Br0ue758dNzPHDIWBs5Zopt2Fh4%2BdjyFWtt0NBxNnrsVNu9Z2%2BRl48YNclmzFrg%2Fn0IEAAoUQQIAIShxWfd7K13q1qlqk1Px8RXAdKgcQerWKWxtW7X097%2FsI5Vrt4sscPfpEVn9%2FPS79dwsyfaqVeMlK9Qz6rUaG5t2vey8h%2FXs5p1WyeOSVi4aIW9Xbaadfi8r3Xq0t%2FKlK%2FloscfILpP%2FX7rtj3s3XI1rV6jr4NCMfRW6SrWqFkn69pjoH1UqaHVbdjOHduRGiAKh6YtO9s7Zatbs5Zd3GOrXb%2FNGQNk1uyF9sY7ld3123Xs47a1R%2B8h7rJxE6bbp9WaWp0Gba1s%2BVo2f8EyO3CgwN2unqMu3b%2B0Bk06uJBTnMm%2B%2FQfsg4r1rfFX26vn7%2BPKjRL337vvMPd86bJWbXu4%2B1ZIeNuv56j0ezXss3Y9rW6DtlaqTDUXVB79vn5Hz0etep8lHh8BAgAlhgABgJJcgtWwScfEDIZ2qv07twqQUmWquhkTj3aSFTNepCg8FCH6hN%2F7ne69BiWuv3LVeqtYubHbIfcCROHizTpoJkQ%2F27U7382wlPuorvX6YmjS7EK5CnUTt%2B8PEP3um6Wr2MZNp2cqtE0Ki%2BICRD9T8Gjmw6Odfe3g63EoQPS7g4eOS1yucKhUtUkigKRj534uSkQzInpevcejx1C1VgsXL3peFX1z5y1JOg5HIeLFkIJDM0YezfooBPW7%2Bvnrb3%2FqZoE8em4IEAAoUQQIAJRkgEyZNjdxuXay9TMtS%2FJiok2H3onLdcYsXa4daoWBNzTboZCRDp37uhkC7Zjv3p2fdP9egCxavDJpuZV%2BpqVT3vKpvF17kn5PMw%2BNm39eKEA0a9Cidbek6y5asrLYAFmxcl0idjza0Xdn5jp8xAXIO%2B9VT1ry9fGnjdxyMr9ly9e429FyKC1BUyRopkLLq7wQEf1ZcVajTisXS6lLs9p3%2BsKaNP886bn0IlDLxBRdijc%2FPacECACUKAIEAEoyQLTD7j9Nrn6mT%2B%2B9AOnRe3ChA7y1JEtLq%2FyjXqN27jqaSfii33A3a6Hr1qjT2h0vknoMSFE71PqkX7MR%2Fp140YyFlmylBoiWfvXsc3r5lGfz5u3FBoiOz1AspN6%2BRwHy0ScNEn9XiGh7%2FDMQohkX3cfWbTvd3ydOnmXVa7d0P1Nw9Ok3PHFci2YxtNRLMx2arWneqmti%2BZaWemmGJPW51Fi9ZoN16tLPGjY9HXb%2BYCJAAKBEESAAENVZsM4WIJo50OWrVm84631pJ1876goG%2FY52qIs6C5Y%2FQDQToT9rJiB1pqBZqy6FAkTbp517v6XLVhcbIDpI3d2%2BbyZCj1mzGPpZaoCIZnN0AHrS7SxaXuR95O%2Fd76773oe1rd%2BXI5Mu09IsPT49DgWcQkJL2fwzTKkUMlrOlXQf%2BfsIEAAoWQQIAIQaIOPOP0AUFZrZ0I6xf5agWq2WbgmS6PgFzQj4L9eB3jrW4mwBogO%2BdUC5lm95tJOvA8IVB6kBMnT4BHdMh%2F%2FLFHV8RnEBsm%2FfATcT4c3IyLQZ89z2HTt2rMgAUSTooHn%2FrImCyJvx0QH2zVt3TfodHbj%2FedcBiZmSvLw9ScfEaBZG26czfSlw%2FMeX6LnTQek63a7OXKbralbHo7NhESAAUKIIEAAIi86gpIOntZN7PgEiOv5DB6ZrJ1xn09KZmbTT7p2aVqeiVRQMGDja7dDr7FA6jsJ%2FEHpxAeLtYGupkg5k16lytbRJZ5bStqUGiE6P%2B2n1Zu4x6TTC2vHXjMGZzoKlg8C17Klbz0Fu%2BZbiwzvGo6gA0RIqHReis1ApeHQAvR6%2FZnREX%2ByoZVpaLqVw6t5rsNt%2BzRIpWvSca%2Ft1mmA9tk%2BqNLG2X83aKDwUb1pepseqY110BjAv4LyzfOnA%2FL4DRibOsqXtJ0AAoMQQIAAQlm3b89yBzYoI7dxqR1dR4J%2Bt0M%2B8g8d1sLi3o%2B2nT%2BR1nIeWPylCNHPh0e1OnzHfzQxoZ133512u4yJ0%2B%2F7rez%2Fzf7eGAkg78tpR1067f4ZAO97eQfKiy7QN2hbt5Ot2dHup303ip9%2FXzrxmcrQsyh8b3ily%2FXTqYYVV2w693UyP%2F6xVooPnFWo6u5VO6es%2FxkWPT9Gjx6KD9VO3TWGl7%2F9Q0CmKVqxal3Tb%2BjfRsjldrqjbf%2BCgTZk2p9B3kQAAQkOAAAAAAIgMAQIAAAAgMgQIAAAAgMgQIAAAAAAiQ4AAAIK547kJdsldw6yY7xkEACAIAgQAEMy1j4yxb1w3kAABAFwIAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABEOAAABCQIAAAIIhQAAAISBAAADBECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEAFLZp%2ByEbO31n0rj8%2FhEuQMZMS%2F75yvUH0r25AIDsQYAAAArbvuuI%2FeTOYS44zjS%2BdcMgm7VoT7o3FwCQPQgQAEDRmnZZfdYAKV1jQbo3EwCQXQgQAEDRjp84ZX98enyx8fHTu4fZrvyj6d5MAEB2IUAAAMWbMne3ffP6ogOkY7%2F16d48AED2IUAAAGf2UoU5heLjjucm2MmTnA4LAHDOCBAAwLkdkM6B5wCAC0CAAADO7YB0DjwHAFwAAgQAEOyA9JufHGeX3sWB5wCAC0KAAEDY9E3hfYZvtg5918dqfNx4ib36ydy0b0dJjB6DN7nIAgCUOAIEAMI2bf7us35%2FBiPzxuBx29L9fx0AyAUECACEbdyMPLdDe9e%2FJlndtisZGT7%2B9spU9%2B%2F1xYgt6f6%2FDgDkAgIEAEoqQEpVXWCHj5xiZPio1HQZAQIA0SFAACBsBEh2DQIEACJFgABA2AiQ7BoECABEigABgLARINk1CBAAiBQBAgBhI0CyaxAgABApAgQAwkaAZNcgQAAgUgQIAISNAMmuQYAAQKQIEAAIGwGSXYMAAYBIESAAEDYCJLsGAQIAkSJAACBsBEh2DQIEACJFgABA2AiQ7BoECABEigABgLARINk1CBAAiBQBAgBhI0CyaxAgABApAgQAwkaAZNcgQAAgUgQIAISNAMmuQYAAQKQIEAAIGwGSXYMAAYBIESAAEDYCJLsGAQIAkSJAACBsBEh2DQIEACJFgABA2AiQ7BoECABEigABgLARINk1CBAAiBQBAgBhI0CyaxAgABApAgQAwkaAZNcgQAAgUgQIAISNAMmuQYAAQKQIEADIpgBZvXaL1anX2v77RgV7p0xla9O%2Bl%2B3OL0i6jn7WvefgIn%2B%2Fa7cvbeasxUk%2FGzl6qn38aQN76ZVy9sHHdW3UmKnF3v%2BSZeusddseZxyr1my%2BoMc4bMQkGzFqCgECAPFEgABAtgTI%2FAUr7eJLr7Pf3%2FBXe%2FnV8vbkM2%2FaJb%2B4yX55%2BW22cNHqxPW%2B%2FYPf2v986zIbOHhcodu47Mo7rXrN5om%2F163%2Fmf3fd35jf3%2FoRXv19Y%2FsL39%2F3r7x3SvsiaffsIMFxwv9ft8BI%2B231%2FwpMb570VX2%2FYuvSfrZmQImyHj6uVL2%2FEtlCBAAiCcCBACyJUAeeuw%2FLhT8YbBtW75dcdXd9tSzbyUFyA9%2BdI37eersiD9ANm3Os299%2F0pr17F30nUGDBzjAqZP3%2BFn3aZ7%2F%2FKMPfrkf0N9nLv2FLhBgABALBEgAJAtAfKr39yeNHvhjZafdbP%2F%2FPeDpACpVLWxXXTJH9ySquICZPTYaS40lq%2FcWOg2%2F%2Fmvt61z1%2F7nFSD5ew9bwybt7fGnXnfLuvzLwfYfOOaWkK1cvcld518vvmufVGlkW7buTlynb%2F%2BR1u%2FLUYm%2FK5Q%2BrFjPHn78Fbf0bNKUuQQIAGQvAgQAsiVA%2FvrA8265lcJg67Y9xV5PAdKqTXdr3qqLm%2BGYM295kQGydv02t%2FzqkSdedcumDhwsvOTqXANEt6FlXJp9qVq9qVWu3sQu%2FeXNiUDSzIai59ob77dnXyhtNWq1sJtvf9ht14aNOwotwVKYXHn1PfbHOx%2B1WnVauWDRY5o8dR4BAgDZiQABgGw6BkQ769qB13Eat971qL1XvqaNnzi7yAApOHTC7rr3KTf059QA0dBB4z%2F%2B%2BQ3uNnV8iWYZ6jVoY%2Bs2bD%2BvAFEcKRD8sypjxs9wtz99xsJEgDz%2FctnE5frZLy6%2F1SpWblgoQMpXqOMu8y%2FJ%2BtuD%2F7Y33%2F6EAAGA7ESAAEC2nYZ30eI11qJ1V3vh5ffc7IJ26Mt9VLtQgOjPc%2Bcvd3%2FXMq2iAkRj3%2F6jbjlWtRrN7P5%2FvJA4hiQ1bIIESKnSn7rbSM%2Fd75MAACAASURBVL3ej352g33WrmciQFKPL9EMiXc7%2FgDR7b%2F2ZoWk6%2Bq4l%2FUbTs%2BWECAAkHUIEADIhgDZsXOfm0FIPTOV4kE76JoRydt9sFCAaGhm4eKfXu%2BWOPkDRLMUOq1uUaf61RIqnWXrXAPksSdfsxdfKVfk8SuaWfECJDVuyr5f3e7%2B89OFAkTLr3SMSEmEHAECAGlBgABANgTI2Akz3Y777LnLCl2m4zd02YKFq4oMEB0Ufs1197njJ%2FwBomVMN9zyQJH3p6jRcq9zDZA3SlUsNAOyM2%2B%2FffN7V1ivPkMTAeI%2FyFxDp%2F3Vge%2BpAaIoef2tj5OuO3joeHegOgECAFmJAAGAbAiQPXsP2U9%2FdYublVBQ%2BA%2F61pmhtMTJ%2B3lqgGhoidX%2FfvtyFwJegCgCFANdug5Iuq4OTtcMiG73XANEt6X78IdS0xad3fZpFscLEAXHocMn3eUKJ22zdzpgf4DUrtvKfdfJxk07EzGjiNJsCgECAFmJAAGAbDkGRN8OrqVUP7%2FsVrcD%2F49HXnYHaOtn%2FhmFogJEQ180qJ1%2F%2FzEgOohdP7vptofsmeffcQesf%2B%2Biq%2B22ux9LnJXqXAJEB7trGZYOaH%2Fu36XtwUf%2F47anbYde7nIvQDS7ojNbadZD19WsiU7RmxogCi9tix6n4kvxod9L%2FX4TAgQAsgYBAgDZdBC6Tr%2FbqUs%2Fd1yETnHbrcegQjvjI0dPdbMYqb%2BrGYjhIycX%2Bt6PWbOXWLOWXdx3hmhmQcu9gm7PtOkL3e%2F7f6YI0RIpHXui7%2FzQgfDeZV6AaDt6fzHMHfiuA9K9s3RpaPbE%2Fzs6zkXfJVK%2FYVv3Teznc7pgAgQAMgYBAgDZdhasbB5egGg2J93bQoAAQFoQIAAQNgKEAAEAFIsAAYCwESDFDy2f6tl7iG3anJf2bSFAACAtCBAACBsBkl2DAAGASBEgABA2AiS7BgECAJEiQAAgbARIdg0CBAAiRYAAQNgIkOwaBAgARIoAAYCwESDZNQgQAIgUAQIAYSNAsmsQIAAQKQIEAMJGgGTXIEAAIFIECACEjQDJrkGAAECkCBAACBsBkl2DAAGASBEgABA2AiS7BgECAJEiQAAgbARIdg0CBAAiRYAAQNgIkOwaBAgARIoAAYCwESDZNQgQAIgUAQIAYSNAsmsQIAAQKQIEAMJGgGTXIEAAIFIECACEjQDJrkGAAECkCBAACBsBkl2DAAGASBEgABA2AiS7BgECAJEiQAAgbARIdg0CBAAiRYAAQNgIkOwaBAgARIoAAYCSCpAXPpxjy9ceZGT4KF19IQECANEhQAAgbONnng4QRnaNfqMIEACIAAECAGHbd%2BCYvVB%2Btj30xrRYjesfG2u%2F%2B8fotG9HSYx%2Flp1p23cdSff%2FdQAgFxAgAIBg%2FvDoGPvm9QPt1Kl0bwkAIIsRIACAYK59ZIxbqkSAAAAuAAECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABEOAAABCQIAAAIIhQAAAISBAAADBECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABEOAAABCQIAAAIIhQAAAISBAAADBECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwcxZnG%2BT5%2BxK92YAALIbAQIAAAAgMgQIAAAAgMgQIAAAAAAiQ4AAQK7Zk7%2FP%2Bn050goKDqV7UwAAuYcAAYA4OXnypNWo09pWrV5f7HU2btpmZcrXst179ka6bQAAECAAEDMnTpyw10pVsgWLlqd7UwAAKAoBAgBxceTIUWvdrqcLkLoN29n0mfPt4MECa9O%2Bl23fkWcdOvd1S6927863rj0Gusvk1KlTNn7iTGvS%2FHNr3rqrLV%2Bx1oYOn5A0i7J85Vr7rF1Pa9C4g42bMN3mzFtiEyfPSly%2B%2F8BB6%2FXFUKtZt7U1aNLBXabb9bZL27Bl6w7r3G2A9ewzxP181eoN1qxVF6tSo7m1aN3N5i9YFvlzBgCIHAECAHFx%2FPhxFxIKkB69B9vadZtsz5697u9Va7Ww5q262vQZ8239hi3uZ7t257vf03Xf%2F7COjRw92UaPnWoff9rI3i1XMxEYio23SlexL%2FqPcD%2Br16idvfdhbWvTobe7%2FPCRI%2FZp9WZWp0FbmzZjno0YNcndnoJEDhYcSmyDImfSlNmWl7fH3i5bzYXO4iWrbNCQsfbGO5VtzdqNaXwGAQARIEAAIM5LsLwAUTx4%2FAGi2ZDX3%2F7UFi1embh88%2Bbt7mdegFSq2sR69x2WFDofftIgESAKjvIV6rmZDo9CREGh%2BPACpFvPQYnLNTtTqkzVpN8ZPGy8LVry9XYAAGKJAAGAXAgQ%2F8yCP0B0PYWCfs9PgaEAOXr0mIuRpctWJ13eqUu%2FRIC0btvDqtVq6a7vjaEjJrj70CyMFyD%2B29AMSJlyNa1CpYZuWdiKVesSS7YAALFGgABALgTIxk1biwyQqdPnWun3ahS6ncrVm7mQ8H5fIeHXo%2FeQRIBoSZZCQsd5pA7NpngBknpmrvy9%2B23YyIlWt0FbF0EfVqzvjgsBAMQaAQIAuRwgy5avcX%2F2DkgXLYvS8igFiE7rqziYNWdR0v3oYHQvQDp83tcaN%2BuUdHnBocM2e%2B5iO3L0aJEBsmHjlqRZGR3EroPXdRA8ACDWCBAAiBMFg5ZMecFwtgA5dOiwO%2BBcx2doCdTxEyfcGbJ0uXcMSKNmndx3i3hfXDhj1gJ3H16A6L4UKau%2FCgptw%2BddB9gnVZq42ywqQEaOmeJmPHT%2Fouu1%2BKybixkAQKwRIAAQN7Xrt3FnrdKZpc4WIN4pdnXMh0JEy7G0dOqDivVt8tQ57nLdRr1G7d1tvv9RHXfGqyYtOlu7jn0St9l%2F4Ch3efXardzvlqtQ181ySFEBojNnVa%2Fd0p0tq2HTju5AdwXJjp27InymAABpQIAAQNzowHEFx779B9xshA741pmrPPqzfqbLPPrz9h27LD9%2Fn5uNUIgsWJj8ZYa6TN8nostbtume%2BD4Pj25Ty650Jqtjx44lfq7r67Jjx77eBu8%2BFT9Tp89zp%2BLVdgMAYo8AAYBcdvjwEfedHlpW5Zm3YJmbzThw4PRxIY2bf%2B6WZXn25O9zZ7CaO39pWrYZAJDVCBAAyHUDB49xwdGwSUd3RivvAHTPkqWr3JcGanmVll6Vfr%2BGte%2F0BafNBQCcDwIEAGDu2IuZsxfa7DmL3FKrVDpLlmZG9E3qmzZvS8s2AgBigQABAAQzZ3G%2BTZ7DQeIAgAtCgAAAgrn2kTH2jesGGiuvAAAXgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIhgABAISAAAEABEOAAABCQIAAAIIhQAAAISBAAADBECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACAYAgQAEAICBAAQDAECAAgBAQIACIYAAQCEgAABAARDgAAAQkCAAACCIUAAACEgQAAAwRAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAgGAIEABACAgQAEAwBAgAIAQECAAiGAAEAhIAAAQAEQ4AAAEJAgAAAgiFAAAAhIEAAAMEQIACAEBAgAIDClqzeb5WaLk0al949zAVI6s8nzt6V7s0FAGQPAgQAUNjRYyfthsfHuuA401CU5O05mu7NBQBkDwIEAFC0cTPyzhogbfusS%2FdmAgCyCwECACjeC%2BVnFxsftz87wU6c5IAQAMA5IUAAAMXbvP2wXXz70ELx8a0bBtmMBXvSvXkAgOxDgAAAzqxhx1WFAuStqvPTvVkAgOxEgAAAzu2AdA48BwBcAAIEAHBuB6Rz4DkA4AIQIACA4Aekc%2BA5AOACESAA4mXQuG320BvTGCUw%2FvLyFLv7hUlp3464js96rk33fz4AEAUCBEC8PF1m5lm%2Fu4LByMRx3aNj0%2F2fDwBEgQABEC9PvTvD7cwNn7TDlq89yGBk%2FFi6%2BoD7%2F%2BwfHh2T7v98ACAKBAiAeAbIguX77fCRUwxGxo%2BCQycJEAC5hAABEC8ECCPbBgECIMcQIADihQBhZNsgQADkGAIEQLwQIIxsGwQIgBxDgACIFwKEkW2DAAGQYwgQAPFCgDCybRAgAHIMAQIgXggQRrYNAgRAjiFAAMQLAcLItkGAAMgxBAiAeCFAGNk2CBAAOYYAARAvBAgj2wYBAiDHECAA4oUAYWTbIEAA5BgCBEC8ECCMbBsECIAcQ4AAiBcChJFtgwABkGMIEADxQoAwsm0QIAByDAECIF4IEEa2DQIEQI4hQADECwHCyLZBgADIMQQIgHghQBjZNggQADmGAAEQLwQII9sGAQIgxxAgAOKFAGFk2yBAAOQYAgRAvBAgjGwbBAiAHEOAAIgXAoSRbYMAAZBjCBAA8UKAMLJtECAAcgwBAiBeCBBGtg0CBECOIUAAxEtJBciadVvtbw%2F%2Bu9jRoFG7877t0WOn2QMPvxToug2btLdPqjRK%2B07zuQ49R72%2FGBbZ%2FQ0bMcmefaH0Of%2Fe08%2BVstHjpkf63BAgAHIMAQIgXkoqQBYtXmP%2F863L7NEn%2F2tvlKpYaHTq0u%2BCdpZvu%2FuxQNd9%2Fa2P7bEnX4t0B%2FlsY%2B785e65WbRkbbHX0eUNGrePbJv07%2FGLy28959%2B79Jc3W49egyN9%2FggQADmGAAEQLyUdIKPGTI1wx%2FSEHTp8MulnBEiwQYAAQMYiQADES7oDREuk3v%2BwltvZvuzKO%2B27F11lDz32H9u8ZZe7fNr0hW62Y8rU%2Bfb7G%2F5qH3%2FaoNAMyNr121xkfOO7V7jf16zLug3bEwGiv1ep1sR%2B%2FPMb3OVPPfuW5e064C4fOnyi3fuXZ2zIsAl2zfV%2FsR%2F86Br793%2Fet2UrNrhlXrr%2B735%2Frw0cPC5xf%2FsPHHPb8avf3G7fu%2Bhqu%2F8fL7jt9C5%2Fr3xNt8SsfIU6bgf9hz%2B51t3m3n1HbM685faHm%2F7mnpvrbvq79e0%2F8rwCZOOmnfbiK%2BXsJz%2B%2F0W3jTbc9lHRbWnambaxavam7zk9%2FdYu1btvDBg0Zb9feeL%2F7nT%2F%2F9Vm3VM4fIE1bdLafX3arex7%2B8cjL7nnwbnP9hh1uyZUe09V%2FuM%2B6dB2QFCB79h5y%2F5Z6Xr71%2FSvtqmv%2FbI2bdSJAAODCECAA4qWkA6Rrty%2FdTmzq0E68rvf%2BBzXt%2Bxdf46JDx3b06jPULrrkD1a2XA13uQLm%2F77zGxcflao2diHSvedgFxteDFx%2F8wN2z31P29RpC2zSlLl28%2B0P28OPv5IIkO%2F88Hdux3nCpNnWs%2FcQFwQKEl3erccgd1u33%2FO4ixDtVOvvP%2Fzx761GrRY2buIse%2BKfb9jPfv1HN8Pi3aZiSTv8EyfPcSGg21y%2BcqO7%2FPGnXneP6ZXXPrTxE2dby8%2B62Te%2Fd4U1a9nFduzcZ23a93LPTYfPv3DxdD4Bovu86dYHXfgsWbbOKlSq7%2B5j67Y97vIXXn7PbcPLr5Z3j%2BGdMpXd5Vdcdbd7zHqs%2BvOrr3%2BUCBA9z3ruFGVjxs9wkXf5b%2B%2By%2FL2H3XX0HCte%2Bg8c7YLshlsecM%2BVFyD1GrRxz9OIUVPcc9G2Qy%2F7329f7u6fAAGA80aAAIiXkg6Q4oZ2mr0A%2BdHPbkjMSGg8%2F3JZ%2B8vfn08EiK7fp%2B%2FwxOX%2BABkwcIy7fPHSr5czaef5rnufsgMHj7tY0Cf6mn3wLlecPPH0G4kA0e%2FPnLU4cblmQjRr4v19%2BMjJ7jqbNufZ6rVb3I764KHjE5dr2dcvL7%2FNKldvkggQzW54waKhnXkd%2BxLWEqxGzTra2AkzE3%2FXTIZ%2BR4HmBYgCQ8%2BB%2B%2FdYstZdrlkQ73fKvF%2FNhZc%2FQPwzHvo3VEAoVvSc6s%2FzFqxIXO49Di9A9O%2BigPQ%2FL5p1UogQIABw3ggQAPFS0gGiT8u3b88vNLydcwXIHfc8kfS7WsZz55%2BeTAoQ75P91ADRp%2B5a8lPcdihA%2FvrA6Zjxxn%2FfqJA4i5Y3A%2BLtqGtoe7SMyh802gbFx5eDxro%2Fv%2FteVfuwYr3E0DKtl14plwgQBYD%2FPhU8mrUIK0C0vV%2F0G%2BHu%2B7l%2Fl3bLnfQ7k6fOSwTII0%2B8mri%2B4il1SZyWiGnplhcgRT2PWmKlmRstKVPIpV6uePQfAzJy9FQXYm6G5raH3H1qxocAAYDzRoAAiJd0HwOiALnv%2FueSflbuo9qFAmRn3v4iA0THOeh4hDMFSOpB6KkBouM4%2FJcrQLRzXlSAdO0%2B0P25Wo1mVqde66ShIPAC5LU3K5RYgBwsOO5miBQECiHNamj5WmqA%2BE%2Br6wWIHktxAaKISr0v79iRT6s1sSuvvqfIQPEC5O13K7ula1p6pmNJtBxOv0%2BAAMAFIUAAxEu2B0j7Tn3cAdX%2BJVzaGf%2FTff90O%2BphB4iOM9GfZ81ekvQ7WmbkHetQ0gEyfcZCd7n%2FwHfvNi8kQHTg%2BPYdexOX6%2FFq2ZWWen3%2B1eX%2BmSgdv6LLFSA6AF3%2FJvr38C7Xsjf92xAgAHBBCBAA8VLSAaLlODrwO3V4O8IXGiAKD33K%2FtY7lWx3foFt2LjDHW%2Fh7XyHHSCKGh2IrTNE6YByLSXTTrcO8FYYBAkQ73gMnZHKf2xKaoBoSVfq86ZjTxYuWp04wN8LBX1xoX7mHRdyPgGiy3XQet7ug26Z3JPPvOkOdNexHHqeNeOis3nped61p8CdTUzHjShAdDIAHfSug%2BF1ewoZPQcKlBatuxIgAHD%2BCBAA8VJSAaKDzHV8QHFDO6%2B6XsXKDZMO%2BNbQ2a7%2B%2FtCL7s%2BaVUg9SF1LnS75xU2JvytSdPyCIkA7vPpd7zS%2BZd%2Bvbs%2B%2FVCbp9rVsybt%2FHdye%2Bv0X2pnXkiPv7zp7lrbBO2OVDtTWwduKIMXLxZde585o5T%2BIXgd4%2B29TP3vz7U8Sx2%2FobFPa4W%2FXsXeRz19xz5t30LgiTY9VB3lrGZTO3qXw0ozDlq273QHvWgrl3Z5%2Bpt%2FXY%2FF%2BpseoU%2FF6UaffV5wpKjS0tM1%2F0LnO6KXnSs%2Fzt3%2FwW%2Fc8Kta80%2F9qpkNnHNPzoTOZaZmatkEzJ%2F7wIUAA4JwQIADipaQCJOqhmQmdCWvbtvzI7nPVms3uez20%2FOh8fl8zKBdy%2F%2FpeDi292rf%2FaCJsNAN0oY9LoaVZFv9ZvLyh%2B1CUeN%2Bzkjo0czJ77jI3i6K%2Fa%2FZE25n6BZEXMggQADmGAAEQL3EJEEbuDAIEQI4hQADECwHCyLZBgADIMQQIgHghQBjZNggQADmGAAEQLwQII9sGAQIgxxAgAOKFAGFk2yBAAOQYAgRAvBAgjGwbBAiAHEOAAIgXAoSRbYMAAZBjCBAA8UKAMLJtECAAcgwBAiBeCBBGtg0CBECOIUAAxAsBwsi2QYAAyDEECIB4IUAY2TYIEAA5hgABEC8ECCPbBgECIMcQIADihQBhZNsgQADkGAIEQLwQIIxsGwQIgBxDgACIFwKEkW2DAAGQYwgQAPFCgDCybRAgAHIMAQIgXggQRrYNAgRAjiFAAMQLAcLItkGAAMgxBAiAeCFAGNk2CBAAOYYAARAvBAgj2wYBAiDHECAA4oUAYWTbIEAA5BgCBEC8ECCMbBsECIAcQ4AAiBcChJFtgwABkGMIEADxDJBy9RZb3bYrk0bN1ivsw%2FqFf85gRDUqNFhiNVouT%2FpZnbYrCRAAuYQAARAvL5Sf7XbmGIxsG398eny6%2F%2FMBgCgQIADiZcOWAuvQd7191nudvVllnl378JjEDt53bxxk9744yVr3Wuuuwzi3cdsz4%2B3yv45M%2B3Zk62jXZ5098NpU%2B%2F4tgxP%2Fn7zibyPtpY%2FmWItua2zB8n3p%2Fs8HAKJAgACIl1XrD1qlpkvt538antjJ09KWhh1X2a78o%2BnevKx27SOnY%2B7UqXRvSXY7dOSE9Ru1xR56Y1ri%2F6OKEs3ejZ2%2Bk%2BcXQNwRIACy35GjJxM7dN%2B8nh26kkKAhG%2F52gMumH92z9fBfN2jY10w5%2B0hmAHEEgECIHutXH%2Bg0GyHt%2FPGbEf4CJBoI%2Fp7NxPRAGKJAAGQXZjtSB8CJNqw%2FsW9X4f1lX8b5X62afuhdG8eAFwoAgRAdmC2I%2F0IkGgdPVY4tr99wyD3d%2F38%2BAn%2BIQBkJQIEQOZitiOzECDps2bjQfu06VL79X0jvp4V%2Bfsoq%2FnZCtu8%2FXC6Nw8AzgUBAiDzrNtcwGxHBiJA0u%2FEyVMuvhXh37lxkPv3%2BJZvVkSXA0CGI0AAZIaTJ0%2FZiMk77PG3p7sdKm%2B245WKc23K3N3p3jwQIBln07ZDVqPVcvvN%2FSMToX7NQ2OsSefVtnsvoQ4gYxEgANJr34Fj7kvabnh8bGInSl92V7P1ck5DmmEIkMyNd82KPFl6RpFLFQEgwxAgANJj3tK99k71BfbDW4e4HSbtOHFwbWYjQLLjWJHU5YuK%2B5bd19jBguPp3jwAEAIEQHoOKvd2jn58x1AXIsvW7E%2F35uEsCJB4%2FLe2eNW%2BdG8egNxGgAAoeVt2HHZLqvzfa3DbMxPc0quCQyfSvXkIiADJ7tnGi247PduoccdzE6z7oE127PjJdG8egNxDgAAo2XXp%2FrP1%2BL%2FZGdmHAMlu%2Bw8ed9F%2F85PjEiHyqz%2BPcEu2NmwpSPfmAcgdBAiAcO3df8yadlltv394TNL3FdRrv9J27j6S7s3DBSBA4kH%2FfuNn5tnz5WfZd28anPiCw3%2BWncn36wCIAgECIBxrN50%2B%2BPWSu4YlwuO%2BlyZzUHmMECDxs33XEff9Or99YFTiv1v9O%2BugdZZHAighBAiACzNuRp47%2Faf33R0X3z7U3quzyFauP5DuTUPICJD40ocEX47Zan9%2FdUoiRC69e5hVbLzENm49lO7NAxAvBAiAc3f02El3AOsfnx6f2Fm57C%2Bnv7tjz75j6d48lBACJDfow4NydRclTpGtDxf0IQPHbgEICQECIDgdw6HlGvqiwNSz6bDMKv4IkNw7nktLsXQM19dnrxvvDmQ%2FdITlWQDOGwEC4OwWLN93%2BksD%2F3j6E1EduKqzWU2fvzvdm4YIESC56cTJUzZ0wvak7xT55Vdnz9q0neVZAM4ZAQKg%2BNPopu50%2FOTOYW5pBjsduYkAgfedIj%2B4ZXDSqbWn8WEEgOAIEACFvyugRbc1dvWDoxPhceMT41h2AQIECVt3HrZqLZclfbnovS9Osj7DN%2FPlhgDOhgABcFrenqPuIHKd%2BcZ%2FGl3NgrDDCSFAUNQJKXSq7T%2F9e1LidePX941wryX7DnBCCgBFIkCAXLduc4GVqbkwsaRC%2F1u6xgJbsY7T6CIZAYIzmTR7lz1TdmbilNw%2FvXuYmyXhC0gBpCBAgFy1aOU%2Be%2FWTufadG0%2FvLPzo9qHu%2BI4tOw6ne9OQoQgQBP1SUnca369OWvH9Wwa71xq%2BGwjAVwgQINdMnbfbndP%2Fm9d%2FfTYbLZfI5%2Fs7cBYECM6FZj78yzq97xOZuXBPujcNQHoRIEAu0A6jjuX480uTE%2Bu0r3pwtDvHPweWIygCBOdDB6UvXL7Xuny50Vr1WOtGv5FbbP3mgnRvGoD0IECAuJ9Kd92mAhcfPYdscmP4pO3uZ%2BxE4lwRIACAEBAgAIBgCBAAQAgIEABAMAQIACAEBAgAIBgCJPesWLXOFi1Zmfj73n37bcy4aTZvwbJAvz91%2BjzbvmOXReXUqVM2cfIs27Nn73nfxubN223WnEXFXn7k6FF3H4cOhX%2FGwMOHj9i%2BfZwtDLFHgADptHrNBus7YKT7302bt7k3djl%2B%2FLgNHznpgt5Ew3D4yBG3HQcLDhV5%2BYxZC2z5irXuz6vXbrRJU2YHvu3RY6fazp27Q9tWlDwCJPd83nWANWvVJfH3qjVb2EefNLDxE2cWef3%2BX46ymbMXJv5etnwtmzp9rkXlxIkT9lqpSknRdK5Gjp5slao2KfbyPfn73H2EGVZ6rW%2FYtKO9%2Fvan7rbLlKtpw0ZODO32gQxDgADF2bZtpzVu1skOHiyZM7UcOFBgb5auYvUbt7dVq9e7T9T0Zi36ZE1vQvr0USZPnWM9eg%2B2qOWf5Y22QeMO9kW%2F4e7Pg4eNt0%2BrNwt82%2B%2B8V90WLFwe2rai5BEguWf%2FgYNJn8jrNetMHzTUrNvaBgwcnfg7ARJMwyYdrVqtlrZq9QYXI4OGjHX3sXjJqtDuA8ggBAhQnLXrNrk3gPy9%2B0vk9jds3OpuX9P93qxHwVdT%2BqkBok8Va9X7zDI5QI4dO%2B6WDwRFgGQfAiT3aEd%2B9tzF7r9vzYbqE%2Fr2nb4ocgdfYfJhxfpuZ1qzo%2F4AmTZjnnXo3Nd69B5im7ecfs2ThYtXuNvS62GX7l%2Favv2nY0evu9oJ79Slvw0dPsH27z%2BYdF%2BaNdaHMrp81JgpieVQXoDodsdPnGEdPu9rvfsOs515ybOt6zdssW49B1nbjn1syPDxVuCb5U0NEL02a8ana4%2BBNmL0ZNu6bWexr4tbtu44p9dBUeDp9pYs6HiTUQAAIABJREFUW53080%2BrNXUzUNp2Pffee4X3AZl%2Btmt3%2FjndF5AhCBBEQ8tz9Gbxedf%2Bbqd6%2FoJltnzl6aU7ohd%2Fvdm0aN3NOncb4K7v2b1nr%2FX7cqSbMdCOuK6jN7HUMNDt6c1Ilw8bMdEtH%2FJoSYDuc%2BnyNda6bQ%2F3qZ7oja9Tl35uiUH3XoNt46at7uc7du5yb5Z6U9B2a3mU6E1YS4datunu3tj0JuenN4OefYa429Oblf8x%2BumNS%2Fer29eb4Lr1m90YPHRcoQDRWuva9dtY%2BQr13PNw8uTJxH3pjVWPt1efoUlvhnocmr7Xc6fnc%2BGi09upN0a92ep39Ma2ctX6pO3SczZ0xARr06G3u6%2BNm7YFDhAtxdKOgOjfRr%2BvnYkvB41x96fnV9tTXIBoJ2fgkLF25MjRIu8L6UeA5O4SLB33oNc0BUiTFp1t%2Boz5ha47cPAYe%2F%2FDOla9diu3o%2B4FSOXqzdwHKH36DXef8r9brqZ7PRe9DtZr1N79Xp0Gbd3sgnau3%2FuwttVr1M769h%2FhfleXe69DixavtLfLVnOX6TVTy8J0HR3%2F4QWI7lOvT7pPxUT5j%2Bu512%2FR6%2BEb71S2th16u%2FcKXU%2Bvr3rdTw0Q3Wbj5p%2B7JVF6%2FC0%2B62YVqzQu9nVR71HaNr0XKZKC0Ouibtt7TvwBoijTa76eG80wK4b0GPUcK%2FS0fUAWIkBQ8rTz%2F9a7Vd0bWf%2BBo6xCpYb24ScN3JuHFx96sa9Rp5XbadYbkt4cps88%2FQa3Zu3GxBuKXoy1Q1uuQl33guzREiUtDdBOrt6Q9Can63sRok%2B5tBP%2F%2Fkd1rHnrri5A9AmdtktvGFr%2BpJ3uUmWquU%2BbigoQvehrudTHlRu5T%2BQUQfp9Lxr0OPQm17FzP3d73XsNctvkj6miAkS3o%2FgobglWUQGiN2hdVzsCes6at%2Brqtl2zNqKdAz1WPQd6k1qydJV7LqrUaG5Va7Vwb7p6LrX9ul%2FRG5meUz23ek70Bqp%2Fp%2FNZguWFi%2F6u6NSOyQcV61v12i2LDBB9uqjtv5BlEyh5BEjuST0GRK%2FNCxYtP6clWAoJb0dZx5MpYvSBg%2Bh18K3SVWzDxi2J32nUrJN7TfN%2BR6%2B9ul3NvIj%2Bt1XbHkk78Fouq%2F%2F1AsR%2FuT6Q0c%2F0gYteP%2FW65l%2FSqvvx374%2FQBQ7eszeh1DyRf8Rxb4u6rY0k9GuYx8rVaaqew3UBzOpcXEmug19GKPnSctzRe9J75St7p5bvf8oiPwf6ABZhgBBydKLvXaEvZ102b073%2B34egGi%2F9UnSseOHUtcRzu12pnXC7EXIN6n66Ipff1Mn5ZrZ107s%2BMmzEhcrp3t0u%2FVsLHjpycCRNfJy9uTuM6goeNcEHl0X%2Fpkzguf1CVY2lHXi75%2FPbR2nPXmqaVT2nnW9f1nRtGbhbcUIZXecHV97%2FbOdAxI6hKspi07u%2BG9Qet%2FFSNNmn%2BeCBD9%2FpRpX6%2B91gyTDh71zzDo36XsB7Xdv9Pc%2BUtdMHmfAnrP0YUEiN4oPTqrjH7mLaXwAmTchOnujXVpyvIDZB4CJPeEESDebIin9Ps1Eh98KEAUHB69Ful1SK8neo30hmYIPqlyOgr0uqLtUETodUOzAh4vQLTky3P06DH3M32Yo%2FcA%2FVlLvvw0M6wZh9QA0Qy1Aip1mVWQY0D0vqD3CL12631CH3JpFv5MtDxNM0J6XfYizaP3OD1uvX8W974CZAkCBCVLswl6odYLtp9mErwA0af7mtbWC7M39Ibl7ax6AeJfw%2Bv9TMcorFi5zv1ZMy3%2B29AUtd48vQDRMqBUemPSJ0x6s9KOtD5x8nbaUwNES6705uq%2FD8WKrqNZDoWVokczDFqmtW173hmfm%2FMNEMWGdt57fTE0aVs046LY8wJEb3jeci3RGVYUKf7f0Vm3dD9azqUZEQWFnx7DhQSI%2F9%2Fd%2B5kXOHoMzVp2cc%2B5dxvIbARI7gkjQFIPQtcHORMmzUwEiJbFenQAtl4nTs%2BKt04amuXwXgM16633EW1PmfK1XIwoPoo6CF2B4gJk%2FtLE%2B0XqMSV6zfZeP%2F0Bohnzz9r1TLqulpae60Hoigl9wKVtLYpeqzW7r%2FjSTExRp%2BLVNis%2B9Pz5lxgDWYgAQcnSGT38O9meVm26JwJEBy1WrNzYvbmkDgWGFxvecRv%2BONB6YX0SpD9rBzv19%2FUJvhcg3vS6R7%2BnT941Ha9jOvQJmD6ZKy5AGjQ5vU64qO3UEirZviPPHZehZVr6XUWQd1lYAaKlXrpMoZO6Hd6OggJEb3Z%2BekPV8reitl9xV9Qbrd7wLiRA%2FEsEdACl%2F7YUINpG%2Fbvo38E%2FO4XMRIDknqgD5PiJE%2B4%2B%2FKfy9V739H4g%2BrDHm8nVcW36AEnLnfS6d7YA0Wu0%2FuxfUiVaCuu9xvoDRB%2FM1PUt9%2FW%2FdgeZAdHj1IdsCgs9Ti2HLYqWD5f7qG7itOZF0bIyLatVKOnYPiCLESAoWXm7Tk93ewd3e7Sj6gWIjjvQNLef3lT0Iu9fglVcgGhdr9vZTTkbiN4cdHlRAaJPm3SgoD5x8ngzC8XOgHTum1ji5H9j03bq4Ebdl3%2F5kmYPtIOeOqsQxgyIZlp0hpfUT%2BW8GYeiAkTLHHR8StLzfOT086znQ0scUs%2B0pXgqyQBRBGqHQ7%2BnEOKAysxGgOSecw0QvYboWLXzDRDvPUGztd7rgV5nFTaKAdFsiI7D8Oj1S8eYaVbkbAGi6%2BoDIr3e%2BV8H9eGSt1TMHyBz5i1xs7T%2B9zDt%2FJ%2FpGJClvmNAKlVt6m7XO7tXUfTepfvwXu%2BLosjSc6%2F3JW2TO9PXVycXAbIQAYKS5b0xaOfdezPxli15ATJg0Gh3hhPvBVrXUyzoDUfOFiB689Abmr7Qz7%2Fzr4Oa9UJdVIDo0zO94PvP5OIdV%2BIFiLfz7YWNfq5PsXQKRo8CRp9GaSdaa331Zy3r8uiMWJqZueAAGTjKzaZ4tGRNz4933IzuU2%2F8OnC8uADR2a30M%2B9TRD3PekPXJ2rewZZ6TrwzY%2BlynSWmJAPEOwhdj9O%2F%2FA2ZiQDJPecaIHqd1euxZoLPN0D0WqH3DYWG7l878YoGb9nU7DmL3Ha0btfThYheCzWLrtfNswWI91qn13LNaus1ULetE5d4syqpZ8HS9um1U%2B8j%2Bh29phd7FqyBo9x7j97z9Foa5EMVfVu8%2B%2FLB8rUKDW2flqXpOdOyW0%2Bb9r3cCUPO5eB2IIMQICh5OsZCB5Rr%2BY%2BWDemAc73Ye8Gg0zvqNIeKEC3N0g6xTsGondggASL6JEjLpzTVraVE2rn1R09RS7B0ua6nZUf6PZ0tSjvxun9Fhr6AUG8kOnBbZzXRbWkHX7MPug9dV7Mo3hdFKYT0pqU3M72p6hM8XV7clPq5BIhmCrSDrudPsaMde53R6uNPG7nnTNuoN2nvDbqoANEsjc4so4MbteRMt6U3OP8SMb3Z6TFr2%2FVvpNuOIkBEz60ef1Frn5EZCJDco9dC77VYli1fc8adXr12aYfaW2qk17DUU6brOAzvtVuztv7vt%2FDo9VeRotkUzWykHvOg7%2FHQslmFjl47vXhwMxDL1yR9gaz3M%2F9xH%2FqQSifh0OuXttc7Ra%2FoQyf%2F2Qv1%2B4oexYU%2BJFHQ6Pb8Hzb5DyL3vs8pKN2f%2F9g8%2F9Dzo5UE%2BrPeK%2F1L0vQz73kEsgwBgmjohVOfBunNSC%2F02nkfMWpS0gu8PrEaOWaK%2B7RMp2r0%2F663TCj1Z9oZ9%2BiFWG9UOltW6lS2XsA1%2FHSfOiuK7tMLDN2Gprq9%2B9eSKs2i%2BN%2B4dFyLDljUm543m%2BDRjIRiQW%2BMuvxMp0nUm5cegz6xE72pe%2BuS9Vh1mf9N1%2Fv%2BFC%2Bq9Dxq2%2FQ86n%2F9ZxHTm69%2Fp8H%2FmPVY9ZinTJtT5I6EdjD0CaDuy9sO%2F5tzccvc9u7bn1gC5j02%2F7%2BPts9%2FW1rS4H%2Bj9paD%2BUMTmYUAAQCEgABBydPshr4h16Odcq2NTf0SPACZjQABAISAAEHJGz5ykjt1oM6BrqVJOk5Cy6E44BjILgQIACAEBAiioaU1WrakGNESH%2BIDyD53PDfBLrlrGAGCWDhy9KTtP3jc9h04ZgcKjtvxE%2FwfG4gIAQKUhIMFJ2zj1gJbv7nANu84bIcOf30sBAAgM2zafsieLz%2FLzexp%2FLfSXNuV%2F%2FXB3gBKBAEChEnB8fCb09wb2XduHGTl6i6ygwVFH8ANAMgMIybvsN8%2BMMq9dl969zDr0Fen0E33VgGxRYAAYdAbVasea%2B2Htw5xb2C3PTPe5i0t%2FgxYAIDMog%2BLytdbbN%2B%2BYZB7HdeHSZohARA6AgS4UJu2HbIHX5%2Fq3rB%2BcMtgq99hpR07%2FvUpgwEA2WP24ny79Z%2Fj3Wv6T%2B4cZl2%2B%2FPo7QQCEggABLkS%2FUVvsp3cPc29Utzw13hau4EuhEB59v0u9Ru0tU%2BTl7XFftLl9R95Zr6svw6zXqF3o26Av09R32JwPfU%2BNtv9CvuxSX7Snb6ZGvOmA9IYdV9n3bh7sXt8fLTXdtuw4ty8YBFAsAgQ4H3v2HbNn35uZONajesvlzHogdPrW5Y8qNbRMsW%2F%2FAevaY2ChL%2BAsyrgJ0%2B2jTxqEvg3Va7d0XzZ6PjZs3Gqvlap0Qd8erS%2FpVMQgN8xdkm83PjHOvdb%2F7J7h1n%2FU1nRvEhAHBAhwPtPzVz042r0hXf3gaJs6b3e6NwkROlhwyHbvzi%2F2VNL6dnft4J7pVNP6Bnp9c3xRjh8%2FnviG%2BqICRN8yvzNvt53wfcv8meh6u3bnF%2Ftt9qLLdJ3iblM%2FV3wURzMC23fsSvrme3%2BAaNYgb9ceO3my6Ejff%2BDgGWcl9JzrcQcNED0e3Z%2FuN0iAHD58xD2G4rZP9Pj1PBAguefw0ZNWqenSxLEhr34y1woOcWZD4AIQIEBQ2p9s2X2Nffem01PyvAnlliNHj1rz1l3t9bc%2FtbdKV7HS79ewiZNnJe0kt%2Fism7tcO7kKhwULlycub9Kis3XvNdiateriLteo06Bt0k7yoKHj7O2y1dxlFas0ti%2F6j0gKkL4DRtqbpau4L%2FbU%2F%2Br2zhQ6I8dMcdup2ytVppr17jsssZM9bcY8%2B%2FjTRjZi9OTEfZYtX8t9T48UFBxyP5sxa4GVr1DPmrXsYjt37rYy5WvZ1m073XUUDVoi5j0efcnowsUrkgJk4OAxblt1ebkKdW3d%2Bs2J7duxc5fVrt8m8fuKi%2FUbtiQu371nr9Vt0NZd9sY7la1bz0FWtWaLYgNEz4UeY6kyVd1zpH%2BLxs06JYIuNUAOHzlibTv0dretn5f%2FuJ7Nmr0wcXv64tTPu%2Fa3Dp37ust1XW9bNYLMBCE%2BJs7eZb%2B5f6R7%2Fb%2Fh8bG26P%2B3d95xclUF%2F%2F7%2F9%2F5eK6Jgb1gBBaT3Lk1aRFRAKQL60qWoiEgJRUA6oYt0Qk8lkEILIaSShBQgiSQQIJCekATy3vfznPWsd29m%2B%2Bw9s7PP8%2Fl8P1tmdubM7D3nnueUOzP8%2F4t0EAVEpC1wXfh4ed3PbTswu2%2FAnNRFkpLpN2BY6Pwyw0EnHvmgY71wUcNMBh3d3pf2Cfsj6LzzoZvczr6DKCB0iJECRvxfmfZ66CTzAZ0wfuLU0BHmcRltHzNuchCDKCBTpr4WJIKZBpg5a074%2BwkTp1Ys78hR48L9x094JcweTH91VhCExwcMaxQQynPVtXcEsWBW56K%2F3RheQ15Azjr7smz40y9mb8x5K7w2fjf3zbfDfS6%2F8rbswkv6hA796tWrs%2Fv7DsxOOb13mAlBQHj8G26%2BN9xOZ53H5n0C7s9Mwg033RNmg3gf77znsey0sy5ulLLLr7otSMmcufOCjEQBaE5AXpn6WngPX5%2FZsGmY5%2BU5Hu33VEUB6XPzvdlfL7w2vB6eExnj73lvo4AgcDfd9kA2afKMbNmy5Vn%2FQSOyP55zRXh%2F%2FEDVnnku6HXSi%2BFcsO5WA7LbH56dukgi3REFRKQ1Jk5b3LjkavNew7NXXqu8dEbqGzrH55x3VaNw0PlEIhASJIOOLR3cPGf9%2BfLssX5DGwWEDnseOvz33N8vfM9tt%2F7jwSa339d3QKOAsPEa4cjPIPA94lCJ8y66Luv78OAmv3vksScblw8hIMXlSEOHv5CdfHrvJgISBQnyAoII8T2d%2Fgid%2BJtuvT8sf4oCwsxQ5Iknnw3vCbw0dlKYSWL5U4TnRACYhXhjzrzw%2BPnXy31PPO2CZgWE%2FwMb9%2FNcee0dQSSKAsL7xvfTZsxscn%2BEBJEC%2Fu7sc69ssjTLJViCd%2FI5IQhInA1fsdLZcJF2oICItMT9A%2Bc2nmSOPWd8WAssPZNwBaW%2F%2FD10kFkWRGeaUXkYM3ZS6MxecdXtYYQ%2FhtH8O%2B56tFFAkJg8LGv6590Nt7P8aeiIF5rcnt8DguggKTwPneSHHnkizEpUgg4znfu%2FXHBNk%2FLwd0hMFBBmWPKMGj0hLF%2FKCwgzJ5UE5OVJ08P3lKsSCAgzLnl4ffF3zMTwXPnyEX6HYHAVLd7r4r6M1vaAMJPEe84VuFg6xuutJCCTp7wavmcJWf75WSbW55b7wv35O2Zo8iggkt%2Bg%2Fp29Gj68cIfDnvEzQ0TajgIiUomP1vxvdtblk8OJhT0fN97XdJRUeibMekyfMSt7%2BLEhYTaEzi2dWvZJxP0SLJ3KJy7nQUDufaB%2FswLCUp9hI0Y1uf3Z58estQkdERo05JkgQcwwcJ8ibJam887sSrE8hNeBgLBcqjUBefW12RUFZNz4KeH7%2FAxGa1fBygvII48%2FGTr7lcrHHhPkq5KAIFHNCQjL3lh2xl4Z9t8wE8Myq0oCMnHStPD9cyPHrvX88TXzd1FGIgqI5Jm%2FYFW2z7ENnwP11V0Gh30iItIqCohIETaWH3JKwyV2v7Lz4GzE6NY%2F80DqHzY35zeV0zFmeQ4zIf964821lgvRyWeTePyb1gSE5Vi33N63ye1sgI4C8vSzo0PnNw9Ltq4vjNBHzjnv6uz%2BBxuWEkUQJGZOoLMCMm%2Feuw1LmKbPbHI7m9S5olZrAsLzI3A8T4RN4bwHzOywj4PHjwIH7J2JMySVuPCSG8KyteLvKgkIG%2BDDErJ%2Fb7qPsGwtbkRXQKStA1ZcJetjmzZclv3WB90XItIKCohInnfeXxmm0pGPLXoNd0pdGuHzL%2BKGZTZ1s4SH0XY64MgGV7RCIug80wGnI8usBt%2B3RUDiiP%2BIZ0aHpV2MzPP3UUBGjhof9mew54Lnnzv37XClrAGDR1QsL7MpJ556Qdhrwb4VZiwQjjjL0lkBgev63B3eE2SB8rCcKX5wYmsCwszJmWdfFjaps5%2BEx2a2Aqnj9fGeIg%2FnX3R9EDvuw4cQtiQgXIWMv2FTPYKBjPA%2F4u9Wrly11iZ0%2FieUP%2BylWbCocVkYctWcgLAhn%2F%2FDjFdnt%2FlSyNIz4OIk62zZP4jIhTdMC3tFRKQiCohIZMbspY2bzfc9bmS2eGnD5w6IAFdAYj8AeyvCJWvPvLjJBm02WzMjQac%2FXlI233m%2F94EBYYlQHjrIXFWpuG%2BCv2eJFfsguPQv0CHnsrzx8elYI0V8bkgluP%2BIZ14Ml5bl%2FuxHGfjE041XbuJyuVxlKs%2BkKTOCSEVB4ApX%2BX0mbNzmd3Tw42tm0zkzGXTK%2BT5u0mdfDB3%2FPMwssCk8whIpfuY9ZTnZFVff3niVL1iyZFl4%2FVxNjNfNJX2ZVWImpxJ8PgoSyGPxermsMTNQvKf8r%2Ba9PT%2BUn8cNr3HlyiCAJ53WcKliZISrjeWvfBZnjCLIC8%2FB%2BxofRyTy3Nj3si%2FtOCicR44%2Be1y2arX7BkUqoICIwNTXl2Tf3L3h%2Bu6%2FOceThjQPS6%2Ba2%2FcQb29OCtoKl6htCTZ%2Bt%2BcSsPFD%2FGoVLtvb0ocA8n625%2FW29%2F3nsVv6oEaR9jBzzrJskwOGhfPJgSeM8gpZImujgIiMnbywccTq7CunOG0uIiKd3py%2BzaFPh%2FPKXsc8ny1druCK5FBApGczcvz72frbDQwnid59%2FrPBWEREpDMsWrI62%2FXXz4Xzy46HPZMtWFzbM5EiJaKASM%2Be%2BVhv2wb5uPjm6amLIyIidXhVxf2OfyGcZ7Y5dESQEhFRQKSHwqeZf3mnweGkcPWd%2F9l0KiLNc9ltM7I%2FXMHniKQuiUj3gQ%2BwjRKyx1HPZSs%2BcE%2BI9HgUEOl5zJq7PNtgj4YN5xdc77Irkbbyg%2F2HhnqjgIi0D6Rjz6OfD%2FUHGUFKRHowCoj0LFiD%2B8MDGjpRp17U8GFjItI2FBCRjrNk2YfZ9r9s%2BJypw88YYz2SnowCIj2H1R%2BuyfY5dmRo%2FI84c0y2Zo2tv0h7UEBEOsd7C1dlG%2F%2BkoR554RPpwSgg0nM4uffE0Ohv94unXYMr0gEUEJHqfOjtF3ccFD4x%2Fd7%2Bc1IXRyQFCoj0DG7uOyt0nL7z4yezefM%2FSF0ckW6JAiJSHUaMnp99avP%2B2We27J%2BNf2VR6uKIlI0CIvXPy9MXh0aeTJhqQy%2FSURQQkeoPjG2039Bs8VIvzys9CgVE6v8a7JsdNCw08jc9MCt1cUS6NQqISHU5%2BuxxoU4ddsZLqYsiUiYKiNQ3v%2F3rhNC4%2F%2FJ0G3eRzqKAiFSXpcs%2FzDY5oGGQ7NYHZ6cujkhZKCBSvwx94d2wyY99H376rEjnUUBEumaZ8Ke36J%2Btt%2B3AbM68FamLI1IGCojUJ1zlasN9nwqdpQEj5qUujkhdoICIdA29b5we6ta%2Bx420fklPQAGR%2BuTMyyaHxvyoP41NXRSRukEBEem6z6na6pARoX7d3e%2BN1MUR6WoUEKnPa6xzecMv7zQ4fOiTiFQHBUSk6xg3ZWH2ic36Zd%2FY7YmwN0SkjlFApP445JTRoZN0w70zUxdFpK5QQES6lt%2Bd13DhlHOvmZq6KCJdiQIi9cWzY94LjTcdJaa0RaR6KCAiXcvb760Mm9H53Ko33nJDutQtCojUFz8%2B5vnQQXps6FupiyJSdyggIl3PpbfMCPXshPMnpC6KSFehgEj9MPrlBaHRZiOfHSSR6qOAiJTzAbpf2Xlw2MvoZXmlTlFApH44%2BMQXQ%2Beo76C5qYsiUpcoICLlXpb3jL9NTl0Uka5AAZH6YPqspeFDBzfab2j20Rp7RyJdgQIiUg4LFq8Oe0HW3XqAH6Qr9YgCIvXBH65o%2BNyPa%2B96PXVRROoWBUSkPE67%2BOVQ3268zys6St2hgEj3Z9XqNdlXdxmcfXqL%2Ftn8BX7uh0hXoYCIlMekGYtDfdvypyNSF0Wk2igg0v15%2BMk3QyP9q7PGpC6KSF2jgIiUy85HPBvq3EuTFqQuikg1UUCk%2B3P4GWNCAz3kuXdSF0WkrlFARMrl1gdnhzrHMmOROkIBke7NB6vWhI16n99%2BUFiKJSJdhwIiUi7vvr8y%2B8Rm%2FbLv7fOU9U7qCQVEujcDRswLHaKj%2FjQ2dVFE6h4FRKR89jy64QN2J0xdlLooItVCAZHuzcm9J4aG%2BaEhb6Yuikjdo4CIlA9Xd6TeXXLzjNRFEakWCoh0bzY7aFj4%2FA%2BmqUWka1FARMpn8qsNV8Pa97iRqYsiUi0UEOm%2BcMld5GOLXsNTF0WkR6CAiJQP9e1ruz6RrbvVgGzlKvc6Sl2ggEj35dGn3gqdIT6sSUS6HgVEJA2HnfFSqHvPj3s%2FdVFEqoECIt2Xc6%2BZGhrk%2BwfOTV0UkR6BAiKShmvubNgHct3dr6cuikg1UECk%2B3LgCaNCgzzltSWpiyLSI1BARNIw%2FMX5oe4d95fxqYsiUg0UEOm%2BbLDHkGydLftnqz90TaxIGSggIml4f9GqUPe2OXRE6qKIVAMFRLoni5asDo3x1j%2BzMRYpCwVEJP2g25o1VkDp9igg0j2ZOK3hsoQ%2FP2106qKI9BgUEJF07H7kc6H%2BvfnOB6mLItJZFBDpnvQb3vAJ6GddPjl1UUR6DAqISDqOPntcqH8vTPBKWNLtUUCke3L9PQ1XBOGriJSDAiKSjvOvb7jy430D5qQuikhnUUCke3LO1a%2BEhvjhJ99MXRSRHoMCIpKOW%2FrODvXvyjteS10Ukc6igEjtM%2F6VRdmG%2Bz7VJOttOyA0xN%2FY%2FYkmv%2B872M8EEakGYycvXKvefXLzfqHeFX%2F%2F0BAHAkSqzW0PzW5Sz76%2B6xOh%2Fn1h%2B0FNfr%2FxT4Zmr85elrq4Iu1BAZHu9SmwLWXzXsO9JK9IFeEiD63Vuy16Dc8%2B%2FMgpEZFqs2LlR0EwWquDJ5w%2FIXVRRdqLAiLdg7lvf5B9btuBzTbAH9v08eyZMe%2BlLqZIXTHn7RXZZ7cZ0GK9e9Z6J9JlDBjRcMGV5vKlHQdl8xesSl1MkfaigEj34fLbX222ET7mz%2BNSF0%2BkLrn0lhnN1js%2FlVmk6%2Bl10ovN1sFbH5ydungiHUEBke7DqtVrsk0PHLZWA7z%2BdgOzt971uugiXVXvNjmgcr2bN996J9LVzJq7PPvMlv3XqoPb%2FeLp7CM%2FlFC6JwqIdC%2BGjXp3rUbYS%2FGKlF%2Fv%2Btw7M3WxRHoMvftMa1L%2FPr5Zv2z0ywtSF0ukoygg0r03pP%2FoYDeei5S9Id2N5yLlb0j%2F3t7%2F2ZDuxnPp5igg0j03pH9m6wFuPBcpeUP6Olv1d%2BO5SOIN6VyG3o3n0s1RQFLAiP3CxatNJ3Jhn2nZEWeNSV6O7p4PVtX37FHq97fect51U7Mj%2Fzg2eTnqLfW8jt%2FzXXWz%2F%2B9GZdfc9XryctRTJAkKSNksX%2FFR9s3dh7R6XW9jysi6Ww%2FIZsxemvXUz44xphay1SEjsnpk6fIPGz88z5hazeFnjEldVXoiCkjZzJm3Ihzw6207MNvm508bkyxf3aWhYzDkuXeyeiReMW3rQ9O%2F18Y0l3W27B82FNcjM%2Bcsa7xiWur32ZhiODdwfG520LDUVaUnooCkEpC9jhmZfbDyf41JllMumtQjBGTp8jXJ32tjmsv393mq7gVkv%2BNfSP4%2BG1PMkmUfKSDpUEDKRgExtRIFxJj0UUCMSRMFJCkKSNkoIKZWooAYkz4KiDFpooAkRQEpGwXE1EoUEGPeea8jAAAbf0lEQVTSRwExJk0UkKQoIGWjgJhaiQJiTPooIMakiQKSFAWkbBQQUytRQIxJHwXEmDRRQJKigJSNAmJqJQqIMemjgBiTJgpIUhSQslFATK1EATEmfRQQY9JEAUmKAlI2CoiplSggxqSPAmJMmiggSVFAykYBMbUSBcSY9FFAjEkTBSQpCkjZKCCmVqKAGJM%2BCogxaaKAJEUBKRsFxNRKFBBj0kcBMSZNFJCkKCBlo4CYWokCYkz6KCDGpIkCkhQFpGwUEFMrUUCMSR8FxJg0UUCSooCUjQJiaiUKiDHpo4AYkyYKSFIUkLJRQEytRAExJn0UEGPSRAFJigJSNgqIqZUoIMakjwJiTJooIElRQMpGATG1EgXEmPRRQIxJEwUkKQpI2SggplaigBiTPgqIMWmigCRFASkbBcTUShQQY9JHATEmTRSQpCggZaOAmFqJAmJM%2BiggxqSJApIUBaRsFBBTK1FAjEkfBcSYNFFAkqKAlI0CYmolCogx6aOAGJMmCkhSFJB6FZB%2FvfFONuSpkdmIZ8Zkc998L3lFN7UXBaRzmf%2F%2BsuzF0ZNCHZszd37y%2F2elLFi0IpSPtmDq9H9ly1d81OT29xcuD68jdTl7chQQU295d%2F6SbNHilcnL0VoUkKQoIPUmIPPmLcx%2B9ssTsv%2F%2FyW9l%2F%2F2pb4f81yc2yA7%2B2fHZ2%2B8sqtrz0KF5Y867zd5%2B6GEnZv%2Fv499sNjNnz%2Bt0Ge69v3%2F2yXW%2Fl7wRu%2Be%2B%2Fi2%2BpqeGjwq3t1UEf3LQ0dnpf7i4y8utgHQ8l195a%2FaZ9TZqPJ6pb9SxWf96u%2FE%2B39lwp%2BzvV99Wlef73Jc2zR58%2BIk233%2FFB2uyS%2F7WJ1t3%2FY1D%2BT7xme%2BGrxttslv2%2FMgJjfc75rg%2FhHKnrkMt5cmhI0PZ57%2B3tMX7%2FfaEP4f7XXP9nWvdts%2F%2BR2YnnnJup8rxxJPPt9jmdTQKSMfy1rwFFc8tX%2F%2FWttnZ516RLVm6Oulxe94FV69VNuoj7ftLY19p12NNf3VO9vSzYzpcljP%2BeEn2pa9vWZXX9ezz48JreX3WW83e5wc%2F2rNiPexoGESZ8dqcqv%2BPFJCkKCD1JCCLl6zKttnxwOxrG2yTPdZvWLZs%2BYfhd%2F0Hjsi%2B8s2tswN7HRs6JtV4Ljo0d9%2Fbr0UB2Xyb%2FbLBQ56rmGqMjnQXAXlt5puhM8hoc1seTwGpbQF59PGhQexv%2F%2BdD2cJFH4RZBiTzm9%2FZPtt1j5%2FXhICce8FVoYwXX3pD9s67i8PvXp70WrbnPoeHjkgUpXoREP4HvEfrfXmzbPude3WJgHzs098ObU61X58C0jkBoaM%2F6sWXQwY98Wz2p79cHgYEel98fdLjlnJ96rPfbywbAnHXPY9n2%2B10cBi84HdtfayLLrkh22jT3WtCQGg7OJ%2B1VB%2BrLSDf23iX7NLLbqz6%2F0gBSYoCUk8CcvV1%2FwwN7%2BiXJq9120OPDgmNdX7khZP2wMHPZI%2F3H95k5DaGGRNmOuhcxdkTBIalHB9f5zvZldf8I3vzrfebFZA99j6s1YasOKrBSSV25GngKCOyQjleGPVykKqWBIRyIl%2BciHis4vNxO0tOnhr2QqOM8fWlMVOCGM3%2B1ztrlYdRT56XUZjYmWuPgCxd9mH29tsLG5%2BP0ayw9OW9peF1MaKUf11FAWEkj%2Fecx6jm8aKAdCy%2FOf6P2Y%2F3PWKt39982%2F1htjHWlUoCQv3rN2BEqKOVBgOmTJ2VPfDgoGz4My81OSaKAsKxwzFB%2FSg%2BBnWKzjISUmlpBI8Vb4sCwjHKcw4Y9HTFY%2FzV1%2BeGgQzqANIVf08ZKQfHKDN81KFi%2B8NIKc%2FL39GWDHt6dMUBCO7H34%2BbMK3dAkLHbp3PbZTddseD4b6TX5nZqoCwbI7nYxld%2Fn8R61t8bZSHrwgdbWxzbV5Ho4B0TkD%2BcefDa93GYBuDcfnfTZoyM9S950aOD8d78W84vp55bmw4B7BUkfY2v2SR7zkH0WYXjwGOJX7HsTN0xIuhXiIgHJPF56EebPjD3bIddvlpk3NqfoAqHnvcl1UNCMR3N9q54TzwzqLG47N4fmtuhq4oILQR7y1oWH5J%2FUKOio%2FH6%2BX3tDsTX351rfNZ%2Fr2hnNx3zLipzQrIK9Nmh%2FrG%2F6H4vjNIx%2Fc8D%2FeJP8eybvDdHbKzzv5bWFpezWNIAUmKAlJPArLL7odmO%2B%2F2s4q30bgw4kJjxs8jX5iYfXWDrbP1v7JZtsnme4WO%2FPkXXtN4fzro3LbxZntk3%2F7%2BjtmnP7th6BjRcWCUkYafUZzmRurbIiC3%2FqNveBwEiJ%2FppNDQ%2FPJXJ4efGa39%2BeEnZd%2F%2Fwa6hDDTm2%2B50UKMsFQXkkcefyj77hR%2BG10UDv%2B7nfxCeI96%2B026HZKed0Ts8Hs%2FLe8JJg%2FeMx%2BHv6GT8%2FqyLGjskvz%2Bzd3ZAr99k%2Bx14VPibStPg7V2CRRlP%2Ff0F2Re%2Bunk4KXAbI%2BfxpJgXEN7v%2FQ8%2BJvvh5j%2BueuOrgHQsLPX5xre3W0tWOQnTMYj%2Fx7yAUO84dvnfb771vuHY3GzLvZt0GPifc%2FyFY3f9jUO9jBKdFxA66tznpz%2F%2FXZjhrLQ8rKUlf3QAKGcUENqNLbfbPxyL1HOOy9jhoB4gXIzkUl5mUj%2F%2FlR8FWYkdL56LzgGvib%2Fl518dfXrj8%2F1oq32yY3%2F7x%2FCe8RwMktCuRNHhOahzvHaWz%2FCVMsXyt0VA9v7Jr7PDjjw1dPx4j%2F9y%2FlUtCggjuAyi8Hx8ZbZ22ow3GmeKeD4GWBA52qN8m0dnrprHkwJSfQHhf7bFtj8J31NHaEM5f1D3%2BF8yW8n%2FOd6f2UyOcW7jXHDq6ReGx471EwHnb3kMjmFWADArEf%2F%2B8CNPy3599OlhdoO%2Fo7PdnICQv19ze%2BPj08bzPYOE8XbOS%2FF8w3mZekm9oHwMrnEbg4fx%2FrxGbmPGsy0CwvcnnfrX8DWeg5g5jAMDtFf8zPFOW8Nz0%2B5VWoLFzzwG9Yg2gLpG2xcFBCk76jdnNtZvBmk4p8a9ZwzcIFe8fzwfj0G9Y1CB23l%2B2gzeg8N%2BfUpVjyEFJCkKSD0JCCd%2FOhSt3Y%2FGio4%2BlTmOetBJptL3fWhw%2BHnrHQ4InYr4N6yppdFuzxIspk050RcThYMc9NPjwuMiH8f%2Fz9mhkxJH%2BhEQysSIUmyUGVmh41UUEDrndNqYfo%2BPzYkpPyOEgHD%2Fa2%2B4s7Hx5Pl5rXFEC%2FHiRHTHv09qCAgNK401nbZKHb6OCAgduXgCRJy4nY5WXkDo0O57wFGhA9cVm5wVkI6FEVROlBybu%2F34l%2BGkT4e8uOY8LyAccwhuPLbpfLNU8oqrbg0%2FI%2FecoBldjR0ARPkPf76siYDQEaJe%2FeKIkyqO4hI6%2B3RG2vJaaC849m65%2FYHwM6OrdAY43vl5wsQZ4XY6GfzMqCd1huQFZNMt9m4UZF4Tv4ujmBy%2FdMSivDMLRL1ktoKfb7zlvvB%2B8r7yM50y5IvBh7YICHWZ944ZGn5GfngN%2BVmNvICwhI7%2FXbw%2FbQ9tA9KTFxBeEzM%2B3M7vXYJVmwJy%2FY13h3pFaINp92nD%2F%2FzXv4f7MetBu8%2FMMz%2FThm%2B1%2FQHZyaedF35mVoPjMYoMxx9CnhcQOuPMesZjkLrI30QJQEA4TyC%2BjNhTN1sSEOp5FIzWBKTSEiyOzeN%2B96fGnzmnUh7ah7YKCP2FONsYpSbWiSOO%2Bn3o%2BMfzDudgHp92IC8gtAcMJjDjxIwK%2FQkG%2BfJ7sXgfeL44qMF5lHP%2BKb8%2Fv1FAuD%2Fnf%2F43vHd77ferMCgQy%2BsSrLpEAaknAaFje%2BafLm31frHxy09zxg4%2FnRe%2BpwOw256%2FaJwujaO77REQZlBotIv52%2BU3Nd6PBv6LX9sinPzpRLDRM18eZh7yj9vn5nvDCElRQG669f7sc1%2FcZK0lKcycxJEqOhm9Dv1tk0ae0ZjY6MYgAGzkjwJCY1mcnu6sgFzQ%2B9rG22lweR2MwsXnP%2BHkc0MjzEmn2ks%2BYhSQzq%2BD5niOG7053jk%2BKwkIS4Lyyx%2F5n9JJRuz5mc52cVkX9TR2eBEQOvY8JgLe0vF45DFnhM3mbRUQOjP53zGTwAhlLCdSHm%2BjfiE%2FO%2B56SBMBybcFzCTwOzrvUUCYRck%2FBx0KOiZ8z1KU4vKo6%2FrcFUY8kYjWBIS1%2FshdfE9Ygsn94yxNUUB4%2F%2BIgRsxDjwwJbQHiFwWEx8nfRwHpHpvQ%2BT%2FRztMh5n50lKNAE44jZr05zvmZgbY4WxLz8GNPNgpIlPDi0kIkJh5TCEjxMVoSENoCHpMljx0RENoezptxEOLoY88K5%2Bvm3qtKAhLbHkI9ox2j%2FUIqEDiWG%2BYfA9HjPcgLSKybcfYw9hU4R0cB4Rx84UXXNXmsc867MrRlUUCQm3z9ZvaR9jTfXiggdYcCUk8CQoXOL30ohsaCERIaGZZRFG%2BnkxCXTdF5YMkFjQuVn0Y6v3azLQLS2hKsGMpTXLYRBYSlGcXXwH05%2BeQFBPFiiUvxsRmhjiNFCEh%2B%2BQSNO4%2BFYNAZjEFk4mgoApLfWFwtAYmyEUMHE4mKAsJJlN9x35auNtKZKCDVCR1f9jWwDIhObBxVzAsIyw0YkWVdOifW%2BL%2BNnQBGXFn20dxzcP94TNDRaW72Ix6zdCaau53yMeobBYTlKfnbWS7BzFvsmDBDQV2mk0%2B952tRQKJs5DtPUVwQkL8WlkQxukknhO95P0i%2BDvIcPAYzRS0JCOVDtuiMxQEOOmLcPy4ZKQoIyxmp4%2Fnnow3gb5CPKCDFteoKSG0KyOV%2FvyUMjhE6wsVZamYmGfSi%2FY%2FLDDleooAw2BS%2Fj5k0%2BfVGAWG2g%2B%2FpSOePGepYHKhCQDjntVVAGPTiMceOn1ZRQDhXtCQgDB7SaWfAjtdH%2FaEj3x4BueGme5rc58vf2CpIA4%2Bdr7%2FF5AWEgYJKbQ2DGjwWAxaUk%2BfLv3f8HN8byl2csWVGlvYx%2FqyA1CUKSD0JCOtev%2FW9HSpefpDpzzjFyr6IOIuQD5tR4%2F6LGBpIGnjWv9L5iWvSqyUgdN4YAaURQ4ry6%2BoREKZz8%2FdniRidPBq2vIDQkctP2cYgUXFZFieg%2FAwRe2J4T3iceKWSmDhdTGeupZGljgrIP%2B96pEUBYcqf%2B9O5iqPR1Y4C0v7E5Rv5ZYQxLNXh2IwdgbyAUB848bKumfXhjDIizFFA%2BL44C8CSkrjfieODJQrMpDA6mV9%2FXgzHM8dbXNJU7LCzZCJ2zitdBSsvIHEmgtkXNpjSWaIzUxSQ%2FAhzJQHJz%2FgVBYTliCz5KtZBQlvWkoAgPtzGUrX8Mk%2FKT6cmrmnPCwgCRztX6fnYCKyAdP89IPnQ5nNuoX3lf8sxxSxelA7k4ZBf%2FE%2BTv0HQo4BQ1%2FmezdHF44WLRsTHiEsG2yIgLD%2FiuOf8V0lAeNyWBCQOrv3uxHPCOZ06WuniES0JSDzfFAWENofnZllW%2FnbObyzRzAsIokBfoPj5Qsgaj8V7HS%2BIUam%2BcV%2FaS4Qw%2F%2FcKSI9AAaknAYlLq9iEWux0sOQAOaHjzucAFDsoTJtywmZzHB0pOllcGSreTkOc%2F5tqCQgNK%2Bu%2FGZWlkcmPxiIgxSuZ0AmLS0byAkJZKFP%2Bal40kIy%2BsOa7koDQoeFv8stm4vrX%2BB6mEpC4CZ0RLv42bsirZhSQjoW9GXHkM5%2B49Cjuo8oLCOutEfl4Xzq6jFpGAUEIOK7z%2BxaoC3FJZH4TOptSkRBGaSuVjzpO52b3vQ5bazCCvU1IUlye1JqAUI%2BLMyTcVk0BYdaiKNmMzsZytSQgvD8IVfH3XGQj%2F7%2FICwgzrez7yt%2BfPTjUczqECkh9CQjnkLzc01lmiXEUEESB%2FVj5K7MxaBUFhD0d1Jm8IHCccMzGfUztERDqHsIQZwUpD8uP8%2BchzgWtCQgdd6SBJZcIVUvvQXsEhDaI9iO%2FRAu54TzNuTQvIHEQL%2B5fJNQbzrtxCVZxv0pcNhnbNgWkx6KA1NsHEdJhprGkMWTpBCOYLCGiwcs3EnROGJHlhMo6VASFRjium6WDwTpZOsAIC40FV7CIt9Ng0DnJdzzy4TYeD2GoFDprrINFAOJGXDoslD02jAgIgsH9KSNLWGioY%2Bc9LyB0umigOdmwqZs1vCyjQqRip64oILFhpiPIe8UIFw0lszGx89EeAeEkVHydlKUzAhJPbrzf1d4LooB0LPf3HRhOsEgI%2F3uONUbdEXxOtnEfUl5AkHFmEalPdHY5FjnJs1YdaaY%2B0Fmhc8xJnuOUuhGXSuUFhI4SxzrHd3HkMYZjGUlhtB%2BZpqPE8UgnOl8HWhMQxIHlSrxOHpPODsujaDsYNKiGgDBwwgZe6iLfU964Hr0lAUHiqEvF9eWEOk8Z42vLCwjtDu0hdZ3XhOwwQh47hM0JCPehXW2uzetoFJCuFRDOXSyxo14xm4FQcwwz885sJB1p2lf23LE0lraXznh%2BEzpXaOJ8hsCz8ZzjgE58nLFvTkCob%2FFcQDlYpsk5jDY%2BLzycb%2Blk8%2FwMArJMkHNhFJC41IljNbYvSAF1nMerNCPbUQHhe%2Boe59bLrrg5nMNov7gADM9dvApWvJDMnXc9GiSN%2Bs45NT4Wg4PUbwZOqMu8L7RttJttFRCWqNIfoL5W8xhSQJKigNSbgBA6CzQYNJiM1tKpGT9xepP7MMvBCZmpUhoPGs84nUxoXBgholHkilkHH3J8k8egIabBpmGsVAY6EUhIc2EpCZ0SRn7zG2oZ5aBTRONMg8NmbNbG8zqQi3zHnWu259fuMgPB7AWiROePBj9%2F9SgEptjxp6PCa2AJDO8DV%2FPIf0AUJ7dKn6eQDyeJ5l4nksQmRr6PV9PhZMaegWKnL14BidGueBUuwkmQ%2Fw8NfDWPEwWk4%2BF%2FxbFC%2FeDEzfHDOvP8MgjqV%2BwYsPcK2eC45Lhm2QS3sdQuXkkH0adjwog%2Bo6uIa%2F74yH%2BCOccPx1QUlEph%2BST1g444V5djpqE4gs%2Bxn78oRLxiV%2FwQN%2Bohy0VYCojMszmUtfYMYHAfXm%2Bsz%2FHvEQV%2BF9sLOnRxJiLfIaKdytdlJIE6yKVM83ukeBwer3iBCT6%2Fg983d%2BUfOlh0DNkvg6Tk18gjT%2Fz%2FkEY6N7yuKHO0Izxu8TLL%2F%2Fh3m1dcO9%2FZKCAdSzzO4lUSmwtLGRFn6iodfc4BtPEMAsTLtHMFN%2FYbIicc78hKkN5%2FXyqWcxTnJo4VjhkGH%2FKX8eX4iQNp%2BYGK%2FLmAWQouv04nvXgRCeoUg4AMYPDYLAHmb%2BIsJxdHoC4jMPk2hqVjnJ9buigF4TXHGQfC9%2FF8k%2F8dA33xZySEuohQIFBROKjrlC0ux6Ze8p5xjub9oV5zNbD8Y9HesWQsflgrF33It6XFi1QgKpwn489cyYz2IV64olpRQJKigNSjgNRL6KjRYKcuR71GATEmfRSQtEFGixcFYQCIgYXUZWstLCUszi6atkcBSYoCUjYKSNujgHRtFBBj0kcBSRv2C7GkkplnLrTA0iBmOfKfKVVrYYM4M%2FNcTKarLtPeE6KAJEUBKRsFpO1hmQbLQVKXo16jgBiTPgpI%2BrBEMO7LYhkUMtLSpa5TJ14ePr8x3rQ%2FCkhSFJCyUUBMrUQBMSZ9FBBj0kQBSYoCUjYKiKmVKCDGpI8CYkyaKCBJUUDKRgExtRIFxJj0UUCMSRMFJCkKSNkoIKZWooAYkz4KiDFpooAkRQEpGwXE1EoUEGPSRwExJk0UkKQoIGWjgJhaiQJiTPooIMakiQKSFAWkbBQQUytRQIxJHwXEmDRRQJKigJSNAmJqJQqIMemjgBiTJgpIUhSQslFATK1EATEmfRQQY9JEAUmKAlI2CoiplSggxqSPAmJMmiggSVFAykYBMbUSBcSY9FFAjEkTBSQpCkjZKCCmVqKAGJM%2BCogxaaKAJEUBKRsFxNRKFBBj0kcBMSZNFJCkKCBlo4CYWokCYkz6KCDGpIkCkhQFpGwUEFMrUUCMSR8FxJg0UUCSooCUjQJiaiUKiDHpo4AYkyYKSFIUkLJRQEytRAExJn0UEGPSRAFJigJSNgqIqZUoIMakjwJiTJooIElRQMpGATG1EgXEmPRRQIxJEwUkKQpI2SggplaigBiTPgqIMWmigCRFASkbBcTUShQQY9JHATEmTRSQpCggqQTkizsOyvY59gVjkuXbez7ZIwRk79%2BMTP5eG9Nc1t1qQN0LyJd2HJz8fTamGM4NCkgyFJCyWbr8w%2BwLOwwKB70xqfPJH%2FXLpry2JKtHDjxhVPL315i2ZKP9hmb1yKIlq7P1txuY%2FP01pqUcdMKo1FWlJ6KApGDx0tXZrLnLjUme9xauyuqV1R%2BuSf7%2BGtOWrPjgo6xe8Xxnaj2cK6R0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBARERERESkNBQQEREREREpDQVERERERERKQwEREREREZHSUEBERERERKQ0FBARERERESkNBUREREREREpDARERERERkdJQQEREREREpDQUEBERERERKQ0FRERERERESkMBERERERGR0lBAREREREQkK4vB%2FwfoemsRUTOSYQAAAABJRU5ErkJggg%3D%3D" alt="diagram" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Routing rules matter. A $50 staging anomaly should go to the engineering Slack channel. A $2,000 production anomaly should page the on-call engineer. Don't use the same routing for both.&lt;/p&gt;

&lt;p&gt;The runbook attached to each alert type removes the cognitive load: "Data transfer spike in us-east-1: check NAT gateway logs in CloudWatch, look for inter-AZ traffic patterns, confirm whether it's a new service deployment." Teams act on alerts with runbooks in under 15 minutes. Teams without runbooks spend 45 minutes figuring out what to look at.&lt;/p&gt;

&lt;p&gt;On programmatic response: auto-remediation (stop the instance, scale down the fleet) is compelling but dangerous if deployed before thresholds are calibrated. False shutdowns in production are worse than a surprise bill. The right sequence is: alert → human verification → optional automation. Introduce auto-remediation only after two weeks of tuned, low false-positive alerting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Non-Prod Is Where Anomalies Live
&lt;/h2&gt;

&lt;p&gt;Production environments have governance: deployment pipelines, tagging enforcement, infrastructure review. Non-production environments have none of that. Developers spin up resources manually, forget to terminate them, and no one owns the cleanup.&lt;/p&gt;

&lt;p&gt;Non-prod accounts generate 23-31% of total cloud spend in engineering organizations. They also generate the highest anomaly frequency. A $200 spike in a development account that has a $300/month baseline is a 67% anomaly. The same spike in a $5,000/month production account is noise.&lt;/p&gt;

&lt;p&gt;Reactive alerting (detect the spike, alert, investigate, fix) is the right layer for production environments where you have historical baselines and predictable workloads. Non-prod needs a different approach: proactive prevention.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAyAAAACRCAYAAAA7DtwlAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nO2d53OWV5qn5x%2BYmd0v%2B2VrPsxW7Yfd2tqa5Jnq7a6Zrp3tng7jju5xt93ubsd2DhgnjG0ccMABA7bBNjbGYJKJEjkJiSCCEAIhhEQUSQkkRM5n6zruRyVjm1ey0fOm66q6S%2B%2F7hPO8vOf33Of%2BnfNI%2FFkQERERERFJiT9L60IiIiIiIiIaEBERERERSQ0NiIiIiIiIpIYGREREREREUkMDIiIiIiIiqaEBERERERGR1NCAiIiIiIhIamhAREREREQkNTQgIiIiIiKSGhoQERERERFJDQ2IiIiIiIikhgZERERERERSQwMiIiIiIiKpoQEREREREZHU0ICIiIiIiEhqaEBERERERCQ1NCAiIiIiIpIaGhAREREREUkNDYiIiIiIiKSGBkRERERERFJDAyIiIiIiIqmhARERERERkdTQgIiIiIiISGpoQEREREREJDU0ICIiIiIikhoaEBERERERSQ0NiIiIiIiIpIYGREREREREUkMDIiIiIiIiqaEBERERERGR1NCAiIiIiIhIamhAREREREQkNTQgIiIiIiKSGhoQERERERFJDQ2IiIiIiIikRkEYkM6uc2H52raCikNtp7P9tRY0lTVHst7HfYn2jrPZ%2Fsoky1Rt7cy6DtW2fF2q6%2FJTv9QXUlycPHUh67pb3sc42Jp%2FNWNBGJDxs5rC7x%2FfGIaNbSyIePDF2jBkVH22v9aC5cLFS%2BFvfrYs6%2F3c27jj6U1h5IRd2f7aJMv8069WZF2LVzv%2B%2BExNGPHxzmx%2FtZIC37o%2B%2F%2FRLXUF9IcXFwpUt4Zf3rcu6%2Fob1Mh56qTY8PXJbyDcKwoB8NKspTCrdH06fuVQQUVndoQHpZwPy07srs97PvY25ZS0WaRKuvTN%2FNNvbmLeiJbw5Xm0XA%2FmoX%2BoK6gspLhZUtIQR43dmXX%2Bnexnrajo1INlCAyJ9QQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpDcMSCdR0%2F3uf%2BOdp25qnrQgEi%2BFnCZQgNSPOSjfjUgxYkGJB2KxoDcec%2BT4ZVXx4Snnh0ePp2xsFedeuz4uTD10%2Flh0ZLV4fiJ81c8dk3l5nDL7Y%2BG54eOitfoua%2Fj6KkwY9biL2z%2FqtCAXH2ee7s%2BVFQd7rUB2bhpe7j3gWfC4CFvhKEvvf2Vxx3pPBlmzF7c%2Ff7lYaPDM8%2BPCLfe8VhoaT36uWPnzl8Rxo6bFg4cPFzUBmRFxfqrfn7jjr2h0Bg4rDbU1B%2FtcwH38cRZ4dFBr3zjQe2FF9%2F60u0bNm4LP%2FnFrfH1xEklob6h6UuPY18hGpADB1vCyZOn%2BqXtTTX5V0R8FfTr3LLmPul33MczQs3mxj5rdU7p8tDWfizMW1B%2BxeN6o8liNyDb6neG1rbPxsqerF1XE86cORsKFfLtpm1He21A%2Ft%2B%2F3RC2btsdX%2F%2FyP%2B4MlWu3fK08O7RHfXHj7x%2BIdSqxvHx9r2sFDUiOG5AHH34u%2FmzYsT88%2Fdyb0VQMeWFEGPn2x6Fx5%2F5oDh57clg0C48PfjW%2BnjlnSRTWu2OnhCnT5oUttTvD9JmLQlV1fRzgOae5uTO2W7FqY0xunH%2FHXYPiMc8%2BPyIWsCtXV4ff3HR%2FfE2B%2BuQzr2c0IE%2B%2BWRf2HDhpXKX46V2V4c%2F%2FriT8%2Bx%2FXhN0HTmQ0IA8MeDZ0HTsbX69dtyXU1u2OunniqdfCvv1tUR8DH38pLC1bG5NGch59v2zFurBj14HQ0tIZbr7tkaizhYtXRa29PWZiqK7ZHoaP%2FDAOtLRHoXfq9MUrGpBXxzZm%2FTu8GtF1%2FFwY8%2F7kMG%2FhirC36WDYuaspLFy8MtRsro8m4sSJk3EA7Ozsitu3N%2B4O8xeVhyXLVnff73NKl4XTZ87E%2FYuWrgotrYfDqHcmhM6jx8LcBStCWfm6cPLU6bBgcUVoaNyX9X%2Fz141vXb8i%2FOU%2FlIYbHl4fDnee7bUBITcNeGRoXL0b8db48Nob70ft7tx9sDvPHTx0JJpk8iL6xGxz%2FKCnX4v5iZxIvuJc2nz9zQ%2B628dgk8fIhx%2BOnx5qt%2B6K7XINtqFptI5J2b23OaMBeX3cjqx%2F132JiVPmhw0ba8OWrQ1Rm037DoZ9%2Bw%2BFxUtXhXUbNof9B5rD4mWrw%2FyF5VGfa9fXdGu3ct2mGHXbdsRzd%2B%2FZH9ZXbYn7qqq3RgNy7ty5uG%2Fp8jXR7Bw81BrKV66P2zdv2R7bmzu%2FLDTuas36d3GluH1wdcy537t5Zdi641iv9EtuYPKHPIoumbShGCM%2FkjMZY8mXEz%2BZE8dnircPPvo0%2FPHuQdF8kAfYjj7vf2hI99jOPUHeRZObNjfEMf65F0aGk6cuZDQgb32yK%2BvfZW%2BiZmtTzJNoZ9GSlVFXHR1HY55cUbEuHO06FvVI%2Fjx2%2FES32SX3okPORYNo%2B8CBlriPnFoyb3k8n3PJq2ib9k%2BfPhM2VG2J75v2HQrVm%2BqiZldXVsf2uF7Djj2hrf1IzMVodve%2Bw1n%2FnnqTb6ctOJDRgNx931MxPzbtaw0%2F%2BskfYp334svvRH2Wr6yK%2Bnr19feibpkUam3rirVk%2B%2BHjMUcOevq1sKep5XMT0%2BiYCR3y5uySZWH1mpowfNS4MPq9SfE6GpA8NSC%2Fu%2BXhmMgeGvh8mDRlbrjplgEx2d1080NxYKaT%2F%2BOGe%2BJKxeSpc%2BPMNh2OiSAQBOczODNLQwJj%2B6ySpd0GhLaGvfZuWL9hayxY3xz1UfjxT2%2BOgnvpldFxQKeo5dxMBuS2J6vD%2FS9sNq5S%2FK8fL42DIQlm8Jt1GQ3IgIEvdL%2BmwKLfk9UOVtDuuf%2FpWGQxQ4EukmN5j1lFC8wUJzPR%2FCThYEC%2B%2Fd1fhF17DkUtMmCSyBgor2RA7nmuJuvf4dWI8g2Hw%2BRp88KlS5fCrJIlcYURps1YEIusI0c644DGAMiA1dzSHiZOLgmbNtfHc4ABtOvY8VjsffDR9NDe3hFmlyyNA%2B3yFWvDpKlzQ21dYxw463cdy%2Fq%2F%2BevGf%2FvXRVGz%2F%2Bma0jB68u5eFXDbG%2FeFH177%2B2iK0SFmgyIL7VGU7W1qjaaZHIiRYJaNPmCQ5Fxy1sOPvhhK562I%2Beqddz%2BJuS0xIKwKM%2FPHMdwTGBCKwj%2Fc9ki8HzgO88OxmSZaEgPyxBtbs%2F5d9yVGfVAWZ4hHvvNxLNjGT5wVC66qjbXhvQ%2BnxYJu2%2FZdYXbp0qhTckYCWkbHo0ZPiOd%2BNGFm1G374Y5oWLgnVq6uiq9nzlkcqmu2xcLv%2FXGfxoKSfbRBkfjepNqsfxdXimt%2BuTzq9y%2F%2BvjTcNri6TwaEfInpQLcYWzTL9%2Fiz626Px9x17%2BCobwq5JcvWhDdGfBBzL5pLci6vybOM7dffeG%2BcOGLbI0%2B8HHV%2B34NDumewr2RAbh60MevfZW%2Fi9XfLY8E%2FY9aicOIkT10sivkTk8BExKHmtmgkmPjBLKA1QKdMBHEc%2BbSnAZk1Z0lc9UDf6JA8POXTedFoVKzaELWOJsm%2F5PCLFy%2FGczDZzfF662PbGBDaGTZqTta%2Fp97kW95nMiDojBzKmP7W6AnRgGAwqAfQY6JDNIxROdTcEU01T0agvwcGPBuWLq%2F8nAG54Xef5W0mLKkzmdDhGpiZK30WDUierIAwGFNcIg6SD8mJm3P%2Bwor4CBWz1wy8DAwUkBSJGA1mB0lcCI1kSBJk4E4SWLICklwPF8xjWaygIDxmyxOhkTQzGRAfwbq6%2FGbA%2BvCj21eHbTuP9eoRLGbYSCyr1myKiSL2%2B%2FLKqA1mN5LZN5IOukjOY1YZw0JBx8D481%2FdEQ0pxjQxIMzAoavXh4%2BN7VO4Xel3TQrtESwMBDBQTZ42NxZkmJI1a6vjbC8FFgMghoRBjG1Tp8%2BP5iQ5n2KMwRCTwgwbbTGDt2fvgTgoMnPMSkg%2B892bKsKvHlgX9h367HGf3hRw5J39B9pjnqNIS3IOhRf5iSIOI7JufW3Ub1nFhvj4CnplMgUDwWCJyUbrrPD%2B03d%2B2r2SwQTN4qVruh9rZfaZ%2B4KcRg5k4EyuOfCxF%2BOKcKE9goVOKezGT5wdjh8%2FGQu3T6aUxtlitqE%2FdFg6b3m4cOFCNBKXa5%2FjWO1Dx0c6PitIWMmjKKR421q3I5qYw0c6w6SppXG2%2BuXX3gsdnV1x5YWiDu3nMgNe2hK%2Bc0N5WL%2BlI77viwFJNETO3FBVF773gxuj%2BcU0YJQxxphfnmhgtYQcyooyOscck3MxKxSErIyQlzmWVRHGfHTP5A%2BTSoXyCNbGTXVh3%2F7mbmPBvY5GyKUfTZgVDQiTNrxHs9NnLYqrFORWNMbrjz%2BZ%2FTkDwiTOsWMn4qoGBqR2a2PMy6x4oHHqpJh%2FS5Z0axszghlnP6YErXIvcH%2F0XMnO1XzbdPBkrx7BooZkIuf2O58I06YviDUktQI5kpWQnrkXHbKfFThW9agnhr70dpzo6WlAkjqVwICQp9Esk5RXyqUakBw3IBSFyWuMBZ3JIMvAGme2Zy2OS18E%2B5kZ5FiKTbYxoDNLzWoG20lgDLhJmyyv9Vwiw%2BWSALZt3xuvQTu8Zl9d%2FR4NSMowE97XX0LHHFCUsWrFbFzJ3LI4OMbCaQHL3Ku7NZKcw6MtFHqce%2BLk%2BZhQOJY26Hdm5Hi9ecuO%2BJNlVmY5rvQ5Cs2A7Nj52e9rMFuHwUiW8FneZ2aNwZFHBBhMeeyEVQ1m2ZIVEM5nho9HXrbUNnTPPlPQlZWvjTPLzLbRZqFotrcFXE8tUZBdnnMYBBnUyGcUcuQpNMsjg5hgzAjnkAP5ie57Tpiwsps8tsJ%2B2iB%2Fcl%2Bgc%2FYl1yTnMvlSaAaEQqqufmfUHdrFQPB6WVllXLFIHj%2FZsbMparahcc8XtE9xhn5ZvUuKx%2BSewLQwu4wRidsa98THXXj8CtA8hRxmJJdp2HM8XLz42T3bW%2F0yVrYfOfEF3fL4FD%2FRE8UeuuURV3ItGmT8ZWKH48nHTBLypEHPsZ02ycsYGXJ5b37XJJ8MSEtrezQLaCjRDfpCZ5jiXbv3RRNCbiXvskqMxjAIBHkWHaJfjgF0h9ZoC82eP38%2B%2Fi4IJuT8hQvxNYaF%2FJtom0dpeUQ2yeXJpBITQmfPngv5kG97Y0CYfKaORHNM%2BqBBdIeu%2BH2QnhpmrMdsoGN%2Bn5hxv76hKebN5LjL61RWq9E2bbN6x08NSA7iX8GSXPwzvBRvGNVv2k6hGRDJn78ixGwdpqO%2F2s9HAyK5rV9%2B%2F5KnGlg5%2BaZt5ZMByVUwM9sbdod8wr%2BClQ4akBwMDUj%2F4v8DIvlIPv4Z00yhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDgVhQCqqDsfkVkgxbcGBbH%2BtBQv%2FofZ196%2FLeh%2F3JRaubMn21yZZ5uZBG7Ouw%2F4IBnspfG57qjrrWvs6QX0hxcWWhq6s6%2B7aPsbU%2BflXMxaEARERERERkfxAAyIiIiIiIqmhARERERERkdTQgIiIiIiISGpoQEREREREJDU0ICIiIiIikhoaEBERERERSQ0NiIiIiIiIpIYGREREREREUkMDIiIiIiIiqaEBERERERGR1NCAiIiIiIhIamhAREREREQkNTQgIiIiIiKSGhoQERERERFJDQ2IiIiIiIikhgZERERERERSQwMiIiIiIiKpoQEREREREZHU0ICIiIiIiEhqaEBERERERKR4DUh1XWe45rqycO2dlUYf4tu%2FKQ%2BzlhwKhcyFi5fC3%2F58Wda%2F63yNf%2FltRRg3c2%2B2u1H%2BxLLKtvCt61dkXRf5Et%2B9aWUYM3VPtrut4Hn2rfrw%2FVtWZb2%2FCzn%2B5mfLwvGT57Pd1UXLxSKrJa65rizW1rlGzhmQiqrDYeiYhnD6zCWjDzGpZH8YP6spFDLnzl8MP793bda%2F63yN%2BeWtYfhHO7PdjfInZi89FN6ZvDvrusiXWLKmLbzyfmO2u63geXDollC343jW%2B7uQ43ePVoUjR89mu6uLlvMXLoWf3VM8tcTQMQ2xts41NCAFEhoQI1NoQHILDUjfQgOSDhqQ%2Fg8NSHbRgOQGGpACCQ2IkSk0ILmFBqRvoQFJBw1I%2F4cGJLtoQHIDDUiBhAbEyBQakNxCA9K30ICkgwak%2F0MDkl00ILmBBqRAQgNiZAoNSG6hAelbaEDSQQPS%2F6EByS4akNxAA1IgoQExMoUGJLfQgPQtNCDpoAHp%2F9CAZBcNSG6gASmQ0IAYmUIDkltoQPoWGpB00ID0f2hAsosGJDfQgBRIaECMTKEByS00IH0LDUg6aED6PzQg2UUDkhtoQAokNCBGptCA5BYakL6FBiQdNCD9HxqQ7KIByQ3y0oBMn7koPPLEy%2BHRQa%2BEqur6PnVEW%2FuxULt1V2wj07EVqzaGAQNfCI89OSwsWrL6c%2FtaWjrD1m27wyeTS79w3qh3JoTHB78a7rn%2F6djGV7U%2F8ZM5oXxlVXz98cRZYfWamrCnqeVrCaxQDUhpWXM48af%2FMba3BuT4ifPh1dffC4OHvBE%2BmjDziseuqdwcjh0%2FF%2BaULr9qN%2FvYcdO6X5fOWxFq63aHZSvWfemxaORo15n4ms%2B7b3%2FbV7Y7Y%2Fbi0H7kRKjZ3JgXBqSzsyucOnU6HDjQ0utzduz88v%2Bp%2FeRl7ezc1T9a7692E6bM2x8uXeqdATnccTJMmjK3%2B%2F3UT%2BeHFRVVYefug1849uSpC%2BGPdw%2BKeefFl98JRzpPXjU9Xx7VNdvDAwOeDU8%2B83pYsGjll95Tme65r8rN8xdW5KwB6ejsCu3tHd9YX407vqjxzqPHQrZo2HM8bNza%2BbUMyMDHX%2FpSrX1VH5PLn31%2BRHjq2eEx5y4vXx92723OqJMduw7E8fFqaxkNM5ZfrfbI5b2pLTQg6VO%2BoT0cbD3dJwPy3gdTo1bfefeTL%2Byjn8nJVzp%2FzPuTY06mhvyyvH26D%2FFV99T2xn2hcu2WK56rAbmKBoQBtmlfayw073twSJi3oDwWfRuq6sIrr46JHXXg4OEwfOSHYcq0eeHU6Yvh7TETYzCg33HXoLC0bG1MgF3HzsbikOPfHPVRmDBxdvd1Jk%2BdGxMkr%2B%2B6d3BMgm%2BM%2BCCex3H3PvBMFNeIt8aH2SXLPvcZW9u6ws23PRI6j54OH3z0aTyPRI1hGfbau2FL7c4w6OnX4mfhM2CmKCxJxqPfmxReHjY6mhGSLv%2BOKw3MhWxArn9offjv318cJpXuD2fP9c6AfDh%2BeuzfxNh1HD0Vv1P6CbPBfnSCEf3htb%2BPJpDCblbJ0jB81LiweOmasHR5ZTyPAovi7t2xU%2BI%2B%2Bmru%2FBWxbfqEc4e%2B9HY0o8n1Kc4Y1F5%2F84Nw2x8fjyZ0%2FISZYeXq6nhdEkZy7Pd%2FdFOYOWdJOHjoSLjmW%2F8etm3fGzXy2hvvh5bWo%2BHTGQvD68PHxjbQKSbk97cODI0798e2%2BAxo6f0Pp0Z95ooBOX%2FhQhj9%2FuRYbM2dXxaqNtaGixcvhv0HmsOevQfCkY6jcdvZs%2BdiYVe5blM4cfJUmF26NNRsrg8trYfj8RzD8RR%2Bqys3hsNHOsOW2oZQOm9597UONbeF6k114fz582H3nv3hwMGW0LTvUNiwsTZcuHAhNDe3hbXra8K5c%2Bfj9ddXbYnbO3p8BozSppptYfqsRf36vfz535WEf7t1Vaht7MpoQNDQ08%2B9GQ0sWrrznifDxEkl0QCgC%2FICRXtS2D386Ivx9YxZi8PCxauiXsg1u%2FYcivpBp7TF%2BWiHbWUVG6KpXbJsTcyp6Ij8%2BdboCbF92uXeYSDmNe1zfyRF1kMDnw%2FNzZ1Rs%2BRProWm0ThtMXBzz5EfmRTgmuy%2FPN9yf4x8%2B%2BN43Vw3IOixumZb1N3mLdujTjEWmzbXR%2B1tq%2F%2FsHkODW7Y2xNecV7u1MZTOL4v3xKVLl8LWuh2hYcee2C6Fyrlz5%2BLxnJcmy9e2hb%2F4%2B5Jw%2B1PVob3jbK8NCFq69Y7H4kRa%2B%2BHjMRceau6I%2BqCPyYnkTfo5mWTZsHFbzKO85jzy80uvjI59z5iZtMGEX9IG380LL74VNU%2FuRdMUc2iK%2FZxDvmesZsKpp4b2H2iPukOvnIMmN2%2FZEfcx1t5%2B5xNR3%2BR6agja5hzGAvIu4y%2F3Bv8OtM1%2BrkvNwTnkdNrl38j53EvUJxqQ3OPFMdvDf%2Fk%2F8%2BLPE6cuZDQg1I3oI9ZXU%2BbGeozagbGZySE0h5mmriPnogPqNmqJpA3yIz8597kXRsbjyOGr1myKObi%2BoSlu4xh0xRhOG2h67botYdzHM%2BK9sW59bbwfuEe4PjUDdQnaJa%2FzXgOSogFhtpiiHREwMJMA739oSHenU5Sx77pf3xWTBR2ES0QcJAqKf7aT0J546rWYtBgEGfBJkokBYYaaa%2FEaEXD%2BDb97IJoFkifFJmLksySfD2FgWEhwHM%2FgTKKkAP7DbY%2FE%2Fays8BkoBkiQnE9CJqHx70iS2oBHhkajlfzbrmRA7hqyKfzkrsqCir%2F%2B10WxaCPuHLKpVwYEU9hzVo7BhL5mMKHgYdDESNCvzIBhEkkO9BnbWV0jCWAAnnl%2BRCiZWxaTw%2FoNW2MCot9ol5kR%2Bh%2Bz0nN2gm1DXhgRz2fmIzEg1994b%2FwMmOaeM4hoLplpwdyScDAkfCYMKv2PPvi8JCiMNBpnO%2BczuPY0zlcyILcNrk6p79aE397zYTjY3B4mTJoTTQMmgYSJifjw4xnRLMwqWRI%2BmVIai67tDbvD%2BImzomFgZmnJstVxe8ncZXFlBAPCsc0tn7UJFG2Tp80Ne5sOhtq6xniPYTJmlyyNKyaLlq4KH46fEYtGjnl%2F3Kdh5%2B594eCh1vgZ2D5rzpJo7NrajoTbHxrTr99LouW%2F%2FIfS8MI723tlQAY%2B9mIs%2FtEngxeranff91Q0xxRmiQH5v9%2F7ddTt935wYyyifv3b%2B2I%2BQSsPPvxcLKTQKfrkHLZhMlh1YxBjNTnRIJpHq%2BgS88P3yrbLDQi5lMGZfMZ3SHvcU1yLz8Z%2BCkjuGYwKAyv7e%2BZb7ikGWiaQMhmQWwdtzEoe%2BsW9a6MGMRFoGD2jQfSFRseMnRLWrK2OBhoTy7ZpMxaEjZvqovmdNHVuNCzoF20eOdIZ9YrO2w93hE9nLoznr9uwOcycszjs3X84tX%2Fbd24o79blX%2F3L%2FHDH4E29MiD0HUUSY9reptY4XtXV74n9SR%2BTc8mb9CuTcMnYiAEhB5LnGEMxG%2BgLrV7eBlqnHTSJXsjtGFruCfbTxvNDR0WtoTNyLSYBE8P1yOUYBY6hDSYCk89PAYgeb7plQDyesRZDT55l8pAClHuHe2Pjpu3R4DM%2BcF3a4h5A1xgTDD%2FnUFD2xoDcOLAq5shsaLlY439fu7Rb5%2F98Y0X46d2ZawlML7UXuiN3oh%2F0iU7pe7SCfsjVrECj4d%2Fd8nD3%2BUxSozPyIzUj9wr6TWqBex94JrbBhAwaZbynDSYZ40Tq8sqYUzEw6I57jnuCuhQzzb3DPaYBycIKSPKeQTMZUBMDQtJggMbBkijoKAwICScxIAzaJEIemcIERHf6yZzumeSeKyAExSTnY3gSA5JcGxOTHMeMTvJoFTPUyUwNyZLrkdgQNJ%2BBIpKESbGQGBDOR9BsTwpNhFqsKyD%2F9Z8XhHcm7QqnzlzolQFh1Ssplvj%2BmL3CCDLrwHec9Bk3NH2QGBASAdvZxuwXRRwJgSKBRIABpVCi7xiwGNxIIvQxRqCnAeE9A19iQJiZ%2B81N93fPaiTH0gb9jX6YLeazk3hon4SUfCY%2Ba08Dkmid66BbdJNrj2BRaGE2Vq6uiisaGIg5pcviSsQbI8eFilUb4r6mfQfD0uVrwsLFK2MBB5iC6TMXxpWK1ZXVcXa5fOX6WKgBxV3ymNeCRRXRiLS2HY7nYzQo%2BlgRoShmlnn%2BovJ4fWanWT1hxeWNEZ99BmLytHmfa7e%2FYPD7258vC8sq23q9ApIY1mQFhEGRYilZtbt8BQS9kvt%2B%2B4cHo97IU%2BQjtlG49cyT5D4mOxhkMSBoDw0yeRNXX0eNi%2FcPGksed00MSGKK%2BBxok3uEa3D%2FkPMYOLkPCQw5mkan7O%2BZb5PojQHJ5gpIYkDQGKYB3VRVb40rGvMWroirIBiTZWWVUV8YlLLytXFlDVPBqgf64r7AbLMyiHlmdYQ2uTcWL10V9Uz7aa6AoMtfPbAu7D1wslcrIPQ9BTdaueX2R8OmzQ1xZpZVt2SSBp2iiWTihvMYT5PHUSnY0CaThYzJ6OjyNtAyemOikGO4HxKtY47Ji5hu8jUGhPyIppPHurhPOJ5cSuHWs1BjdZrPz%2BeguKRtcjaz2sk9R66nlmBCi%2FuFsZtrMuHJezSOMUrGBYpTV0ByE1Y%2B%2FvM1peGRYbWho%2BtcxhUQJgGZbOA1Gps2fUHUHPmSWg59JpPX1ADcB%2BTbnjksWQHpWauioZ61wIaquvie%2B6BnG9wD1I1cE2PL9cjf3EPkZIJ7RQOSsgFhdo0E0F1Y%2FenxJGYhGNjoIDqVmTs6kk7kNcmCYhP3mjxGQwJCaCxtITKSFwJhHwNuw4793ZPHotoAAAXnSURBVNchQTIg0yaPGHBscu2kPYLBFtdLsMLBtflcLM9iNEiWbOccZoRYnqYtPjMJNHn8hyKAAorPS6FajAZkYsm%2B0HL4TJ9%2BB4T%2B4zvjZuc75PvFzDF7weukz5hZYz%2F9ikHlfdKX9C%2FGgP7mHPqPfqRfSBokJvRGccW%2Bnr%2FjQZ%2BRpBi4%2BBz0KYMwSYI2mU1LjuV8Bi0KNwwSRRpaQDu8Tj4TPwlmT%2Fh3sEqHXmmTxJXp8atsGBDMxfbG3XGml8dMeOSEWV5YvmJtWLC4ImzbviseR%2BHF7G%2Byf9WajXElg0dWMA88I8%2F5GJXFy1bHwi5h0ZKVsahraz8SzQqPxGAyOLeltT3OUtMG5mP%2BQlY9y%2BIqCG3Ez1C%2FMxaJGCCMT38ycsLOqGPIZEDQGlpNluuZRabfWbFg9gstJb8zRB5JHgNFT5hlBkyOQR%2Fso7hD7%2BQXNMtPdErBhE6Z1GHwY5YXrbONfMl5vGc77fOYIDPOfKbElJAT0SOrHORUPgM65ToUbxgMroOmuXeSRw3QOp%2Bd9hlQr2Sks21AeLyKFTM02tV1PD4uhflgO9plVY1VPbSEXlm5Q4eYcDRLrKhYH40wJhnTgUYxyBxLO5gQ9InxToutO7rColWt3e97Y0CYkU1WfenrON4OHxuLJTSE%2BeBRp6id4WOjljmWyTS2oZ9kVZnZXyYHGYfZh7Z7toFO0AxjJiu9vEeD6JVcjVFmQpCfrDoz4ZM8mpgYAp5CQOvJ41fokMcPec128jBFIHplNQdzgiYx7tQb5F3O5X5KnvvHQHMsNQLn8W9HvxyvAck95pe3hPpdx%2Fr0OyBMHGJeyU1olQkXNEoth%2FaS3w1GX%2BRmtNbz90kvNwZJ7YH2X3pldPfTNkwq8pP7iDbQI%2FcA9wT3GXmV67Laxn5qEOoS2uDeSHStAfmGFPpfwUqE1tugCCARftkvexaDAemJfwXrm4V%2FBSu38K9g9S2ybUCKhWL8K1hMQGKSv%2B443dfQgOTfX8Hid0ZZjcu2Vk9%2FjdCA9JJCNyD9FRoQI1NoQHILDUjfQgOSDsVoQNIODUh28c%2Fw5gYakAIJDYiRKTQguYUGpG%2BhAUkHDUj%2FhwYku2hAcgMNSIGEBsTIFBqQ3EID0rfQgKSDBqT%2FQwOSXTQguYEGpEBCA2JkCg1IbqEB6VtoQNJBA9L%2FoQHJLhqQ3EADUiChATEyhQYkt9CA9C00IOmgAen%2F0IBkFw1IbqABKZDQgBiZQgOSW2hA%2BhYakHTQgPR%2FaECyiwYkN9CAFEhoQIxMoQHJLTQgfQsNSDpoQPo%2FNCDZRQOSG2hACiQ0IEam0IDkFhqQvoUGJB00IP0fGpDsogHJDXLOgKytORL%2B8bqy8NuBVUYf4rs3rQxT5u0PhZ40%2FscPl2T9u87X%2BP4tq8Loybuz3Y3S43%2Fm%2FfZvyrOui3yJH9y2Orw5XgPd3zz66tY40ZPt%2Fi7k%2BJ8%2FXhK6jp%2FLdlcXLRcuFlct8Y%2FXlcXaOtfIOQMCR4%2BdC51dRl%2Fj0qVQ8Jw4eT7r33M%2Bx8WLRSCSPCLbesi3oHCQ%2Fp%2FoyXY%2FF3ocP3k%2B291c9BRTLXH0WG6a3Zw0ICIiIiIiUphoQEREREREJDU0ICIiIiIikhoaEBERERERSQ0NiIiIiIiIpIYGREREREREUkMDIiIiIiIiqaEBERERERGR1NCAiIiIiIhIamhAREREREQkNTQgIiIiIiKSGhoQERERERFJDQ2IiIiIiIikhgZERERERERSQwMiIiIiIiKpoQEREREREZHU0ICIiIiIiEhqaEBERERERCQ1NCAiIiIiIpIaGhAREREREUkNDYiIiIiIiKSGBkRERERERFJDAyIiIiIiIqmhARERERERkdTQgIiIiIiISGpoQEREREREJDU0ICIiIiIikhoaEBERERERSQ0NiIiIiIiIpIYGREREREREUkMDIiIiIiIiqaEBERERERGR1NCAiIiIiIhIamhAREREREQkNTQgIiIiIiKSqgGpMgzDMAzDMAzDCCnE%2FwdEMNNuHq7D4gAAAABJRU5ErkJggg%3D%3D" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAyAAAACRCAYAAAA7DtwlAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nO2d53OWV5qn5x%2BYmd0v%2B2VrPsxW7Yfd2tqa5Jnq7a6Zrp3tng7jju5xt93ubsd2DhgnjG0ccMABA7bBNjbGYJKJEjkJiSCCEAIhhEQUSQkkRM5n6zruRyVjm1ey0fOm66q6S%2B%2F7hPO8vOf33Of%2BnfNI%2FFkQERERERFJiT9L60IiIiIiIiIaEBERERERSQ0NiIiIiIiIpIYGREREREREUkMDIiIiIiIiqaEBERERERGR1NCAiIiIiIhIamhAREREREQkNTQgIiIiIiKSGhoQERERERFJDQ2IiIiIiIikhgZERERERERSQwMiIiIiIiKpoQEREREREZHU0ICIiIiIiEhqaEBERERERCQ1NCAiIiIiIpIaGhAREREREUkNDYiIiIiIiKSGBkRERERERFJDAyIiIiIiIqmhARERERERkdTQgIiIiIiISGpoQEREREREJDU0ICIiIiIikhoaEBERERERSQ0NiIiIiIiIpIYGREREREREUkMDIiIiIiIiqaEBERERERGR1NCAiIiIiIhIamhAREREREQkNTQgIiIiIiKSGhoQERERERFJDQ2IiIiIiIikRkEYkM6uc2H52raCikNtp7P9tRY0lTVHst7HfYn2jrPZ%2Fsoky1Rt7cy6DtW2fF2q6%2FJTv9QXUlycPHUh67pb3sc42Jp%2FNWNBGJDxs5rC7x%2FfGIaNbSyIePDF2jBkVH22v9aC5cLFS%2BFvfrYs6%2F3c27jj6U1h5IRd2f7aJMv8069WZF2LVzv%2B%2BExNGPHxzmx%2FtZIC37o%2B%2F%2FRLXUF9IcXFwpUt4Zf3rcu6%2Fob1Mh56qTY8PXJbyDcKwoB8NKspTCrdH06fuVQQUVndoQHpZwPy07srs97PvY25ZS0WaRKuvTN%2FNNvbmLeiJbw5Xm0XA%2FmoX%2BoK6gspLhZUtIQR43dmXX%2Bnexnrajo1INlCAyJ9QQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpD%2BRQMi%2BUg%2BFnCZQgNSPOSjfjUgxYkGJB00IDkYGpDcMSCdR0%2F3uf%2BOdp25qnrQgEi%2BFnCZQgNSPOSjfjUgxYkGJB2KxoDcec%2BT4ZVXx4Snnh0ePp2xsFedeuz4uTD10%2Flh0ZLV4fiJ81c8dk3l5nDL7Y%2BG54eOitfoua%2Fj6KkwY9biL2z%2FqtCAXH2ee7s%2BVFQd7rUB2bhpe7j3gWfC4CFvhKEvvf2Vxx3pPBlmzF7c%2Ff7lYaPDM8%2BPCLfe8VhoaT36uWPnzl8Rxo6bFg4cPFzUBmRFxfqrfn7jjr2h0Bg4rDbU1B%2FtcwH38cRZ4dFBr3zjQe2FF9%2F60u0bNm4LP%2FnFrfH1xEklob6h6UuPY18hGpADB1vCyZOn%2BqXtTTX5V0R8FfTr3LLmPul33MczQs3mxj5rdU7p8tDWfizMW1B%2BxeN6o8liNyDb6neG1rbPxsqerF1XE86cORsKFfLtpm1He21A%2Ft%2B%2F3RC2btsdX%2F%2FyP%2B4MlWu3fK08O7RHfXHj7x%2BIdSqxvHx9r2sFDUiOG5AHH34u%2FmzYsT88%2Fdyb0VQMeWFEGPn2x6Fx5%2F5oDh57clg0C48PfjW%2BnjlnSRTWu2OnhCnT5oUttTvD9JmLQlV1fRzgOae5uTO2W7FqY0xunH%2FHXYPiMc8%2BPyIWsCtXV4ff3HR%2FfE2B%2BuQzr2c0IE%2B%2BWRf2HDhpXKX46V2V4c%2F%2FriT8%2Bx%2FXhN0HTmQ0IA8MeDZ0HTsbX69dtyXU1u2OunniqdfCvv1tUR8DH38pLC1bG5NGch59v2zFurBj14HQ0tIZbr7tkaizhYtXRa29PWZiqK7ZHoaP%2FDAOtLRHoXfq9MUrGpBXxzZm%2FTu8GtF1%2FFwY8%2F7kMG%2FhirC36WDYuaspLFy8MtRsro8m4sSJk3EA7Ozsitu3N%2B4O8xeVhyXLVnff73NKl4XTZ87E%2FYuWrgotrYfDqHcmhM6jx8LcBStCWfm6cPLU6bBgcUVoaNyX9X%2Fz141vXb8i%2FOU%2FlIYbHl4fDnee7bUBITcNeGRoXL0b8db48Nob70ft7tx9sDvPHTx0JJpk8iL6xGxz%2FKCnX4v5iZxIvuJc2nz9zQ%2B628dgk8fIhx%2BOnx5qt%2B6K7XINtqFptI5J2b23OaMBeX3cjqx%2F132JiVPmhw0ba8OWrQ1Rm037DoZ9%2Bw%2BFxUtXhXUbNof9B5rD4mWrw%2FyF5VGfa9fXdGu3ct2mGHXbdsRzd%2B%2FZH9ZXbYn7qqq3RgNy7ty5uG%2Fp8jXR7Bw81BrKV66P2zdv2R7bmzu%2FLDTuas36d3GluH1wdcy537t5Zdi641iv9EtuYPKHPIoumbShGCM%2FkjMZY8mXEz%2BZE8dnircPPvo0%2FPHuQdF8kAfYjj7vf2hI99jOPUHeRZObNjfEMf65F0aGk6cuZDQgb32yK%2BvfZW%2BiZmtTzJNoZ9GSlVFXHR1HY55cUbEuHO06FvVI%2Fjx2%2FES32SX3okPORYNo%2B8CBlriPnFoyb3k8n3PJq2ib9k%2BfPhM2VG2J75v2HQrVm%2BqiZldXVsf2uF7Djj2hrf1IzMVodve%2Bw1n%2FnnqTb6ctOJDRgNx931MxPzbtaw0%2F%2BskfYp334svvRH2Wr6yK%2Bnr19feibpkUam3rirVk%2B%2BHjMUcOevq1sKep5XMT0%2BiYCR3y5uySZWH1mpowfNS4MPq9SfE6GpA8NSC%2Fu%2BXhmMgeGvh8mDRlbrjplgEx2d1080NxYKaT%2F%2BOGe%2BJKxeSpc%2BPMNh2OiSAQBOczODNLQwJj%2B6ySpd0GhLaGvfZuWL9hayxY3xz1UfjxT2%2BOgnvpldFxQKeo5dxMBuS2J6vD%2FS9sNq5S%2FK8fL42DIQlm8Jt1GQ3IgIEvdL%2BmwKLfk9UOVtDuuf%2FpWGQxQ4EukmN5j1lFC8wUJzPR%2FCThYEC%2B%2Fd1fhF17DkUtMmCSyBgor2RA7nmuJuvf4dWI8g2Hw%2BRp88KlS5fCrJIlcYURps1YEIusI0c644DGAMiA1dzSHiZOLgmbNtfHc4ABtOvY8VjsffDR9NDe3hFmlyyNA%2B3yFWvDpKlzQ21dYxw463cdy%2Fq%2F%2BevGf%2FvXRVGz%2F%2Bma0jB68u5eFXDbG%2FeFH177%2B2iK0SFmgyIL7VGU7W1qjaaZHIiRYJaNPmCQ5Fxy1sOPvhhK562I%2Beqddz%2BJuS0xIKwKM%2FPHMdwTGBCKwj%2Fc9ki8HzgO88OxmSZaEgPyxBtbs%2F5d9yVGfVAWZ4hHvvNxLNjGT5wVC66qjbXhvQ%2BnxYJu2%2FZdYXbp0qhTckYCWkbHo0ZPiOd%2BNGFm1G374Y5oWLgnVq6uiq9nzlkcqmu2xcLv%2FXGfxoKSfbRBkfjepNqsfxdXimt%2BuTzq9y%2F%2BvjTcNri6TwaEfInpQLcYWzTL9%2Fiz626Px9x17%2BCobwq5JcvWhDdGfBBzL5pLci6vybOM7dffeG%2BcOGLbI0%2B8HHV%2B34NDumewr2RAbh60MevfZW%2Fi9XfLY8E%2FY9aicOIkT10sivkTk8BExKHmtmgkmPjBLKA1QKdMBHEc%2BbSnAZk1Z0lc9UDf6JA8POXTedFoVKzaELWOJsm%2F5PCLFy%2FGczDZzfF662PbGBDaGTZqTta%2Fp97kW95nMiDojBzKmP7W6AnRgGAwqAfQY6JDNIxROdTcEU01T0agvwcGPBuWLq%2F8nAG54Xef5W0mLKkzmdDhGpiZK30WDUierIAwGFNcIg6SD8mJm3P%2Bwor4CBWz1wy8DAwUkBSJGA1mB0lcCI1kSBJk4E4SWLICklwPF8xjWaygIDxmyxOhkTQzGRAfwbq6%2FGbA%2BvCj21eHbTuP9eoRLGbYSCyr1myKiSL2%2B%2FLKqA1mN5LZN5IOukjOY1YZw0JBx8D481%2FdEQ0pxjQxIMzAoavXh4%2BN7VO4Xel3TQrtESwMBDBQTZ42NxZkmJI1a6vjbC8FFgMghoRBjG1Tp8%2BP5iQ5n2KMwRCTwgwbbTGDt2fvgTgoMnPMSkg%2B892bKsKvHlgX9h367HGf3hRw5J39B9pjnqNIS3IOhRf5iSIOI7JufW3Ub1nFhvj4CnplMgUDwWCJyUbrrPD%2B03d%2B2r2SwQTN4qVruh9rZfaZ%2B4KcRg5k4EyuOfCxF%2BOKcKE9goVOKezGT5wdjh8%2FGQu3T6aUxtlitqE%2FdFg6b3m4cOFCNBKXa5%2FjWO1Dx0c6PitIWMmjKKR421q3I5qYw0c6w6SppXG2%2BuXX3gsdnV1x5YWiDu3nMgNe2hK%2Bc0N5WL%2BlI77viwFJNETO3FBVF773gxuj%2BcU0YJQxxphfnmhgtYQcyooyOscck3MxKxSErIyQlzmWVRHGfHTP5A%2BTSoXyCNbGTXVh3%2F7mbmPBvY5GyKUfTZgVDQiTNrxHs9NnLYqrFORWNMbrjz%2BZ%2FTkDwiTOsWMn4qoGBqR2a2PMy6x4oHHqpJh%2FS5Z0axszghlnP6YErXIvcH%2F0XMnO1XzbdPBkrx7BooZkIuf2O58I06YviDUktQI5kpWQnrkXHbKfFThW9agnhr70dpzo6WlAkjqVwICQp9Esk5RXyqUakBw3IBSFyWuMBZ3JIMvAGme2Zy2OS18E%2B5kZ5FiKTbYxoDNLzWoG20lgDLhJmyyv9Vwiw%2BWSALZt3xuvQTu8Zl9d%2FR4NSMowE97XX0LHHFCUsWrFbFzJ3LI4OMbCaQHL3Ku7NZKcw6MtFHqce%2BLk%2BZhQOJY26Hdm5Hi9ecuO%2BJNlVmY5rvQ5Cs2A7Nj52e9rMFuHwUiW8FneZ2aNwZFHBBhMeeyEVQ1m2ZIVEM5nho9HXrbUNnTPPlPQlZWvjTPLzLbRZqFotrcFXE8tUZBdnnMYBBnUyGcUcuQpNMsjg5hgzAjnkAP5ie57Tpiwsps8tsJ%2B2iB%2Fcl%2Bgc%2FYl1yTnMvlSaAaEQqqufmfUHdrFQPB6WVllXLFIHj%2FZsbMparahcc8XtE9xhn5ZvUuKx%2BSewLQwu4wRidsa98THXXj8CtA8hRxmJJdp2HM8XLz42T3bW%2F0yVrYfOfEF3fL4FD%2FRE8UeuuURV3ItGmT8ZWKH48nHTBLypEHPsZ02ycsYGXJ5b37XJJ8MSEtrezQLaCjRDfpCZ5jiXbv3RRNCbiXvskqMxjAIBHkWHaJfjgF0h9ZoC82eP38%2B%2Fi4IJuT8hQvxNYaF%2FJtom0dpeUQ2yeXJpBITQmfPngv5kG97Y0CYfKaORHNM%2BqBBdIeu%2BH2QnhpmrMdsoGN%2Bn5hxv76hKebN5LjL61RWq9E2bbN6x08NSA7iX8GSXPwzvBRvGNVv2k6hGRDJn78ixGwdpqO%2F2s9HAyK5rV9%2B%2F5KnGlg5%2BaZt5ZMByVUwM9sbdod8wr%2BClQ4akBwMDUj%2F4v8DIvlIPv4Z00yhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDhqQHAwNSP%2BiAZF8JB8LuEyhASke8lG%2FGpDiRAOSDgVhQCqqDsfkVkgxbcGBbH%2BtBQv%2FofZ196%2FLeh%2F3JRaubMn21yZZ5uZBG7Ouw%2F4IBnspfG57qjrrWvs6QX0hxcWWhq6s6%2B7aPsbU%2BflXMxaEARERERERkfxAAyIiIiIiIqmhARERERERkdTQgIiIiIiISGpoQEREREREJDU0ICIiIiIikhoaEBERERERSQ0NiIiIiIiIpIYGREREREREUkMDIiIiIiIiqaEBERERERGR1NCAiIiIiIhIamhAREREREQkNTQgIiIiIiKSGhoQERERERFJDQ2IiIiIiIikhgZERERERERSQwMiIiIiIiKpoQEREREREZHU0ICIiIiIiEhqaEBERERERKR4DUh1XWe45rqycO2dlUYf4tu%2FKQ%2BzlhwKhcyFi5fC3%2F58Wda%2F63yNf%2FltRRg3c2%2B2u1H%2BxLLKtvCt61dkXRf5Et%2B9aWUYM3VPtrut4Hn2rfrw%2FVtWZb2%2FCzn%2B5mfLwvGT57Pd1UXLxSKrJa65rizW1rlGzhmQiqrDYeiYhnD6zCWjDzGpZH8YP6spFDLnzl8MP793bda%2F63yN%2BeWtYfhHO7PdjfInZi89FN6ZvDvrusiXWLKmLbzyfmO2u63geXDollC343jW%2B7uQ43ePVoUjR89mu6uLlvMXLoWf3VM8tcTQMQ2xts41NCAFEhoQI1NoQHILDUjfQgOSDhqQ%2Fg8NSHbRgOQGGpACCQ2IkSk0ILmFBqRvoQFJBw1I%2F4cGJLtoQHIDDUiBhAbEyBQakNxCA9K30ICkgwak%2F0MDkl00ILmBBqRAQgNiZAoNSG6hAelbaEDSQQPS%2F6EByS4akNxAA1IgoQExMoUGJLfQgPQtNCDpoAHp%2F9CAZBcNSG6gASmQ0IAYmUIDkltoQPoWGpB00ID0f2hAsosGJDfQgBRIaECMTKEByS00IH0LDUg6aED6PzQg2UUDkhtoQAokNCBGptCA5BYakL6FBiQdNCD9HxqQ7KIByQ3y0oBMn7koPPLEy%2BHRQa%2BEqur6PnVEW%2FuxULt1V2wj07EVqzaGAQNfCI89OSwsWrL6c%2FtaWjrD1m27wyeTS79w3qh3JoTHB78a7rn%2F6djGV7U%2F8ZM5oXxlVXz98cRZYfWamrCnqeVrCaxQDUhpWXM48af%2FMba3BuT4ifPh1dffC4OHvBE%2BmjDziseuqdwcjh0%2FF%2BaULr9qN%2FvYcdO6X5fOWxFq63aHZSvWfemxaORo15n4ms%2B7b3%2FbV7Y7Y%2Fbi0H7kRKjZ3JgXBqSzsyucOnU6HDjQ0utzduz88v%2Bp%2FeRl7ezc1T9a7692E6bM2x8uXeqdATnccTJMmjK3%2B%2F3UT%2BeHFRVVYefug1849uSpC%2BGPdw%2BKeefFl98JRzpPXjU9Xx7VNdvDAwOeDU8%2B83pYsGjll95Tme65r8rN8xdW5KwB6ejsCu3tHd9YX407vqjxzqPHQrZo2HM8bNza%2BbUMyMDHX%2FpSrX1VH5PLn31%2BRHjq2eEx5y4vXx92723OqJMduw7E8fFqaxkNM5ZfrfbI5b2pLTQg6VO%2BoT0cbD3dJwPy3gdTo1bfefeTL%2Byjn8nJVzp%2FzPuTY06mhvyyvH26D%2FFV99T2xn2hcu2WK56rAbmKBoQBtmlfayw073twSJi3oDwWfRuq6sIrr46JHXXg4OEwfOSHYcq0eeHU6Yvh7TETYzCg33HXoLC0bG1MgF3HzsbikOPfHPVRmDBxdvd1Jk%2BdGxMkr%2B%2B6d3BMgm%2BM%2BCCex3H3PvBMFNeIt8aH2SXLPvcZW9u6ws23PRI6j54OH3z0aTyPRI1hGfbau2FL7c4w6OnX4mfhM2CmKCxJxqPfmxReHjY6mhGSLv%2BOKw3MhWxArn9offjv318cJpXuD2fP9c6AfDh%2BeuzfxNh1HD0Vv1P6CbPBfnSCEf3htb%2BPJpDCblbJ0jB81LiweOmasHR5ZTyPAovi7t2xU%2BI%2B%2Bmru%2FBWxbfqEc4e%2B9HY0o8n1Kc4Y1F5%2F84Nw2x8fjyZ0%2FISZYeXq6nhdEkZy7Pd%2FdFOYOWdJOHjoSLjmW%2F8etm3fGzXy2hvvh5bWo%2BHTGQvD68PHxjbQKSbk97cODI0798e2%2BAxo6f0Pp0Z95ooBOX%2FhQhj9%2FuRYbM2dXxaqNtaGixcvhv0HmsOevQfCkY6jcdvZs%2BdiYVe5blM4cfJUmF26NNRsrg8trYfj8RzD8RR%2Bqys3hsNHOsOW2oZQOm9597UONbeF6k114fz582H3nv3hwMGW0LTvUNiwsTZcuHAhNDe3hbXra8K5c%2Bfj9ddXbYnbO3p8BozSppptYfqsRf36vfz535WEf7t1Vaht7MpoQNDQ08%2B9GQ0sWrrznifDxEkl0QCgC%2FICRXtS2D386Ivx9YxZi8PCxauiXsg1u%2FYcivpBp7TF%2BWiHbWUVG6KpXbJsTcyp6Ij8%2BdboCbF92uXeYSDmNe1zfyRF1kMDnw%2FNzZ1Rs%2BRProWm0ThtMXBzz5EfmRTgmuy%2FPN9yf4x8%2B%2BN43Vw3IOixumZb1N3mLdujTjEWmzbXR%2B1tq%2F%2FsHkODW7Y2xNecV7u1MZTOL4v3xKVLl8LWuh2hYcee2C6Fyrlz5%2BLxnJcmy9e2hb%2F4%2B5Jw%2B1PVob3jbK8NCFq69Y7H4kRa%2B%2BHjMRceau6I%2BqCPyYnkTfo5mWTZsHFbzKO85jzy80uvjI59z5iZtMGEX9IG380LL74VNU%2FuRdMUc2iK%2FZxDvmesZsKpp4b2H2iPukOvnIMmN2%2FZEfcx1t5%2B5xNR3%2BR6agja5hzGAvIu4y%2F3Bv8OtM1%2BrkvNwTnkdNrl38j53EvUJxqQ3OPFMdvDf%2Fk%2F8%2BLPE6cuZDQg1I3oI9ZXU%2BbGeozagbGZySE0h5mmriPnogPqNmqJpA3yIz8597kXRsbjyOGr1myKObi%2BoSlu4xh0xRhOG2h67botYdzHM%2BK9sW59bbwfuEe4PjUDdQnaJa%2FzXgOSogFhtpiiHREwMJMA739oSHenU5Sx77pf3xWTBR2ES0QcJAqKf7aT0J546rWYtBgEGfBJkokBYYaaa%2FEaEXD%2BDb97IJoFkifFJmLksySfD2FgWEhwHM%2FgTKKkAP7DbY%2FE%2Fays8BkoBkiQnE9CJqHx70iS2oBHhkajlfzbrmRA7hqyKfzkrsqCir%2F%2B10WxaCPuHLKpVwYEU9hzVo7BhL5mMKHgYdDESNCvzIBhEkkO9BnbWV0jCWAAnnl%2BRCiZWxaTw%2FoNW2MCot9ol5kR%2Bh%2Bz0nN2gm1DXhgRz2fmIzEg1994b%2FwMmOaeM4hoLplpwdyScDAkfCYMKv2PPvi8JCiMNBpnO%2BczuPY0zlcyILcNrk6p79aE397zYTjY3B4mTJoTTQMmgYSJifjw4xnRLMwqWRI%2BmVIai67tDbvD%2BImzomFgZmnJstVxe8ncZXFlBAPCsc0tn7UJFG2Tp80Ne5sOhtq6xniPYTJmlyyNKyaLlq4KH46fEYtGjnl%2F3Kdh5%2B594eCh1vgZ2D5rzpJo7NrajoTbHxrTr99LouW%2F%2FIfS8MI723tlQAY%2B9mIs%2FtEngxeranff91Q0xxRmiQH5v9%2F7ddTt935wYyyifv3b%2B2I%2BQSsPPvxcLKTQKfrkHLZhMlh1YxBjNTnRIJpHq%2BgS88P3yrbLDQi5lMGZfMZ3SHvcU1yLz8Z%2BCkjuGYwKAyv7e%2BZb7ikGWiaQMhmQWwdtzEoe%2BsW9a6MGMRFoGD2jQfSFRseMnRLWrK2OBhoTy7ZpMxaEjZvqovmdNHVuNCzoF20eOdIZ9YrO2w93hE9nLoznr9uwOcycszjs3X84tX%2Fbd24o79blX%2F3L%2FHDH4E29MiD0HUUSY9reptY4XtXV74n9SR%2BTc8mb9CuTcMnYiAEhB5LnGEMxG%2BgLrV7eBlqnHTSJXsjtGFruCfbTxvNDR0WtoTNyLSYBE8P1yOUYBY6hDSYCk89PAYgeb7plQDyesRZDT55l8pAClHuHe2Pjpu3R4DM%2BcF3a4h5A1xgTDD%2FnUFD2xoDcOLAq5shsaLlY439fu7Rb5%2F98Y0X46d2ZawlML7UXuiN3oh%2F0iU7pe7SCfsjVrECj4d%2Fd8nD3%2BUxSozPyIzUj9wr6TWqBex94JrbBhAwaZbynDSYZ40Tq8sqYUzEw6I57jnuCuhQzzb3DPaYBycIKSPKeQTMZUBMDQtJggMbBkijoKAwICScxIAzaJEIemcIERHf6yZzumeSeKyAExSTnY3gSA5JcGxOTHMeMTvJoFTPUyUwNyZLrkdgQNJ%2BBIpKESbGQGBDOR9BsTwpNhFqsKyD%2F9Z8XhHcm7QqnzlzolQFh1Ssplvj%2BmL3CCDLrwHec9Bk3NH2QGBASAdvZxuwXRRwJgSKBRIABpVCi7xiwGNxIIvQxRqCnAeE9A19iQJiZ%2B81N93fPaiTH0gb9jX6YLeazk3hon4SUfCY%2Ba08Dkmid66BbdJNrj2BRaGE2Vq6uiisaGIg5pcviSsQbI8eFilUb4r6mfQfD0uVrwsLFK2MBB5iC6TMXxpWK1ZXVcXa5fOX6WKgBxV3ymNeCRRXRiLS2HY7nYzQo%2BlgRoShmlnn%2BovJ4fWanWT1hxeWNEZ99BmLytHmfa7e%2FYPD7258vC8sq23q9ApIY1mQFhEGRYilZtbt8BQS9kvt%2B%2B4cHo97IU%2BQjtlG49cyT5D4mOxhkMSBoDw0yeRNXX0eNi%2FcPGksed00MSGKK%2BBxok3uEa3D%2FkPMYOLkPCQw5mkan7O%2BZb5PojQHJ5gpIYkDQGKYB3VRVb40rGvMWroirIBiTZWWVUV8YlLLytXFlDVPBqgf64r7AbLMyiHlmdYQ2uTcWL10V9Uz7aa6AoMtfPbAu7D1wslcrIPQ9BTdaueX2R8OmzQ1xZpZVt2SSBp2iiWTihvMYT5PHUSnY0CaThYzJ6OjyNtAyemOikGO4HxKtY47Ji5hu8jUGhPyIppPHurhPOJ5cSuHWs1BjdZrPz%2BeguKRtcjaz2sk9R66nlmBCi%2FuFsZtrMuHJezSOMUrGBYpTV0ByE1Y%2B%2FvM1peGRYbWho%2BtcxhUQJgGZbOA1Gps2fUHUHPmSWg59JpPX1ADcB%2BTbnjksWQHpWauioZ61wIaquvie%2B6BnG9wD1I1cE2PL9cjf3EPkZIJ7RQOSsgFhdo0E0F1Y%2FenxJGYhGNjoIDqVmTs6kk7kNcmCYhP3mjxGQwJCaCxtITKSFwJhHwNuw4793ZPHotoAAAXnSURBVNchQTIg0yaPGHBscu2kPYLBFtdLsMLBtflcLM9iNEiWbOccZoRYnqYtPjMJNHn8hyKAAorPS6FajAZkYsm%2B0HL4TJ9%2BB4T%2B4zvjZuc75PvFzDF7weukz5hZYz%2F9ikHlfdKX9C%2FGgP7mHPqPfqRfSBokJvRGccW%2Bnr%2FjQZ%2BRpBi4%2BBz0KYMwSYI2mU1LjuV8Bi0KNwwSRRpaQDu8Tj4TPwlmT%2Fh3sEqHXmmTxJXp8atsGBDMxfbG3XGml8dMeOSEWV5YvmJtWLC4ImzbviseR%2BHF7G%2Byf9WajXElg0dWMA88I8%2F5GJXFy1bHwi5h0ZKVsahraz8SzQqPxGAyOLeltT3OUtMG5mP%2BQlY9y%2BIqCG3Ez1C%2FMxaJGCCMT38ycsLOqGPIZEDQGlpNluuZRabfWbFg9gstJb8zRB5JHgNFT5hlBkyOQR%2Fso7hD7%2BQXNMtPdErBhE6Z1GHwY5YXrbONfMl5vGc77fOYIDPOfKbElJAT0SOrHORUPgM65ToUbxgMroOmuXeSRw3QOp%2Bd9hlQr2Sks21AeLyKFTM02tV1PD4uhflgO9plVY1VPbSEXlm5Q4eYcDRLrKhYH40wJhnTgUYxyBxLO5gQ9InxToutO7rColWt3e97Y0CYkU1WfenrON4OHxuLJTSE%2BeBRp6id4WOjljmWyTS2oZ9kVZnZXyYHGYfZh7Z7toFO0AxjJiu9vEeD6JVcjVFmQpCfrDoz4ZM8mpgYAp5CQOvJ41fokMcPec128jBFIHplNQdzgiYx7tQb5F3O5X5KnvvHQHMsNQLn8W9HvxyvAck95pe3hPpdx%2Fr0OyBMHGJeyU1olQkXNEoth%2FaS3w1GX%2BRmtNbz90kvNwZJ7YH2X3pldPfTNkwq8pP7iDbQI%2FcA9wT3GXmV67Laxn5qEOoS2uDeSHStAfmGFPpfwUqE1tugCCARftkvexaDAemJfwXrm4V%2FBSu38K9g9S2ybUCKhWL8K1hMQGKSv%2B443dfQgOTfX8Hid0ZZjcu2Vk9%2FjdCA9JJCNyD9FRoQI1NoQHILDUjfQgOSDsVoQNIODUh28c%2Fw5gYakAIJDYiRKTQguYUGpG%2BhAUkHDUj%2FhwYku2hAcgMNSIGEBsTIFBqQ3EID0rfQgKSDBqT%2FQwOSXTQguYEGpEBCA2JkCg1IbqEB6VtoQNJBA9L%2FoQHJLhqQ3EADUiChATEyhQYkt9CA9C00IOmgAen%2F0IBkFw1IbqABKZDQgBiZQgOSW2hA%2BhYakHTQgPR%2FaECyiwYkN9CAFEhoQIxMoQHJLTQgfQsNSDpoQPo%2FNCDZRQOSG2hACiQ0IEam0IDkFhqQvoUGJB00IP0fGpDsogHJDXLOgKytORL%2B8bqy8NuBVUYf4rs3rQxT5u0PhZ40%2FscPl2T9u87X%2BP4tq8Loybuz3Y3S43%2Fm%2FfZvyrOui3yJH9y2Orw5XgPd3zz66tY40ZPt%2Fi7k%2BJ8%2FXhK6jp%2FLdlcXLRcuFlct8Y%2FXlcXaOtfIOQMCR4%2BdC51dRl%2Fj0qVQ8Jw4eT7r33M%2Bx8WLRSCSPCLbesi3oHCQ%2Fp%2FoyXY%2FF3ocP3k%2B291c9BRTLXH0WG6a3Zw0ICIiIiIiUphoQEREREREJDU0ICIiIiIikhoaEBERERERSQ0NiIiIiIiIpIYGREREREREUkMDIiIiIiIiqaEBERERERGR1NCAiIiIiIhIamhAREREREQkNTQgIiIiIiKSGhoQERERERFJDQ2IiIiIiIikhgZERERERERSQwMiIiIiIiKpoQEREREREZHU0ICIiIiIiEhqaEBERERERCQ1NCAiIiIiIpIaGhAREREREUkNDYiIiIiIiKSGBkRERERERFJDAyIiIiIiIqmhARERERERkdTQgIiIiIiISGpoQEREREREJDU0ICIiIiIikhoaEBERERERSQ0NiIiIiIiIpIYGREREREREUkMDIiIiIiIiqaEBERERERGR1NCAiIiIiIhIamhAREREREQkNTQgIiIiIiKSqgGpMgzDMAzDMAzDCCnE%2FwdEMNNuHq7D4gAAAABJRU5ErkJggg%3D%3D" alt="diagram" width="800" height="145"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The difference in outcome: reactive detection recovers some of the spend after the fact. Proactive idle detection means the spike never happens. For non-prod environments, where most anomalies are "someone forgot to turn it off," prevention is more reliable than alerting.&lt;/p&gt;

&lt;p&gt;Both layers have a place in a mature FinOps stack. Anomaly detection on production, proactive idle management on non-prod. Together they close the gap between the spike and the response — and keep surprise bills where they belong: in someone else's postmortem.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>bills</category>
      <category>spike</category>
      <category>and</category>
    </item>
    <item>
      <title>The Complete Guide to Cloud Networking Costs: VPCs, NAT Gateways &amp; Data Transfer</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Fri, 03 Apr 2026 07:36:08 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/the-complete-guide-to-cloud-networking-costs-vpcs-nat-gateways-data-transfer-1oh6</link>
      <guid>https://dev.to/muskan_8abedcc7e12/the-complete-guide-to-cloud-networking-costs-vpcs-nat-gateways-data-transfer-1oh6</guid>
      <description>&lt;p&gt;Most teams discover their networking bill late. Compute shows up in cost dashboards. Storage has clear metrics. Networking hides inside line items like "EC2 - Other" until someone investigates. By then, the bill has been high for months.&lt;/p&gt;

&lt;p&gt;This is a practical breakdown of how AWS networking pricing works, where the money actually goes, and which optimizations deliver the highest return for the least effort.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You're Actually Paying For
&lt;/h2&gt;

&lt;p&gt;The first thing to understand is the split between free and paid components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a VPC, subnets, route tables, internet gateways&lt;/li&gt;
&lt;li&gt;Security groups and network ACLs&lt;/li&gt;
&lt;li&gt;Data transfer within the same AZ using private IPs (including across VPC peers)&lt;/li&gt;
&lt;li&gt;Gateway VPC Endpoints for S3 and DynamoDB (no hourly charge, no data fee)&lt;/li&gt;
&lt;li&gt;Inbound data transfer from the internet to AWS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Paid:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NAT Gateway&lt;/td&gt;
&lt;td&gt;$0.045/hr + $0.045/GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public IPv4 address&lt;/td&gt;
&lt;td&gt;$0.005/hr (~$3.65/month per IP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interface VPC Endpoint (PrivateLink)&lt;/td&gt;
&lt;td&gt;$0.01/hr per AZ + $0.01/GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transit Gateway attachment&lt;/td&gt;
&lt;td&gt;$0.05/hr (~$36.50/month)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transit Gateway data processing&lt;/td&gt;
&lt;td&gt;$0.02/GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-AZ data transfer&lt;/td&gt;
&lt;td&gt;$0.01/GB per direction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internet egress, first 10 TB/month&lt;/td&gt;
&lt;td&gt;$0.09/GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VPC peering, cross-region&lt;/td&gt;
&lt;td&gt;$0.02-$0.17/GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The pattern here is consistent: traffic that stays within a single AZ on private IPs is free. Every boundary you cross starts a meter. The cross-AZ charge of $0.01/GB per direction sounds small. It compounds.&lt;/p&gt;

&lt;h2&gt;
  
  
  The NAT Gateway Tax
&lt;/h2&gt;

&lt;p&gt;A NAT Gateway in &lt;code&gt;us-east-1&lt;/code&gt; costs $0.045/hour. That is $32.85/month before a single byte of traffic. Add data processing at $0.045/GB processed, and for any traffic that also exits to the internet, you add egress at $0.09/GB on top.&lt;/p&gt;

&lt;p&gt;One byte of data leaving through NAT to the internet costs: $0.045 (NAT processing) + $0.09 (egress) = $0.135/GB total.&lt;/p&gt;

&lt;p&gt;Since February 2024, AWS also charges $0.005/hour for every public IPv4 address. The Elastic IP attached to a NAT Gateway is $3.65/month more.&lt;/p&gt;

&lt;p&gt;The costs stack in ways that are easy to miss until the architecture review happens after the bill.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;direction: right

subnet: Private Subnet {
  app: Application
}

nat: NAT Gateway {
  style.fill: "#fef3c7"
}

igw: Internet Gateway

internet: Internet

subnet.app -&amp;gt; nat: "0.045/GB processed"
nat -&amp;gt; igw: "0.09/GB egress"
igw -&amp;gt; internet: "traffic exits AWS"

note: "Total: 0.135/GB to internet\nPlus: 0.045/hr + 3.65/mo (IPv4)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how a team at one company ended up spending over $10,000 per day on NAT Gateway charges. They had large data volumes routing through a public-internet NAT at $0.045/GB processing plus egress. Switching to AWS Direct Connect connections dropped that bill by $310,000 per month.&lt;/p&gt;

&lt;p&gt;A more common case: a CI/CD pipeline misconfiguration. A team's pipeline was firing 340 jobs per day instead of the intended 10. Each job pulled container images through a NAT Gateway. The result was 47 TB/month in NAT traffic and a $12,000 monthly bill, 87% of which came from that single pipeline bug. Fixing the configuration dropped costs to $667/month.&lt;/p&gt;

&lt;p&gt;The NAT Gateway is doing its job. The problem is using it for traffic that has no business leaving the AWS network in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hidden Cross-AZ Problem
&lt;/h2&gt;

&lt;p&gt;Inter-AZ traffic costs $0.01/GB per direction, $0.02/GB round-trip. That is cheap for a handful of requests. For microservices sending thousands of requests per second, it is not.&lt;/p&gt;

&lt;p&gt;Datadog's 2024 State of Cloud Costs report measured cross-AZ traffic at approximately 50% of all data transfer costs, with 98% of organizations affected. The reason is architectural: most services are deployed across multiple AZs for redundancy, and default routing has no AZ awareness.&lt;/p&gt;

&lt;p&gt;Kubernetes is the clearest example. Default service routing sends requests to any healthy pod in any AZ. A request landing on a node in &lt;code&gt;us-east-1a&lt;/code&gt; might be forwarded to a pod in &lt;code&gt;us-east-1c&lt;/code&gt;. That single hop costs $0.02/GB round-trip. Multiply by the number of microservice calls per second and the bill becomes visible.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;direction: down

az_a: Availability Zone A {
  pod_a: Service Pod
  node_a: Node
}

az_b: Availability Zone B {
  pod_b: Service Pod
  node_b: Node
}

az_a.pod_a -&amp;gt; az_b.pod_b: "0.02/GB round-trip\n(default routing)"
az_a.pod_a -&amp;gt; az_a.pod_b: "Free\n(topology-aware routing)"

az_a.pod_b: Service Pod (same AZ)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One team found 991,980 GB/month of cross-AZ traffic generating $9,919/month in charges. That was 94.1% of their entire data transfer bill. The fix was a single route table update: 56 EC2 instances were routing through a NAT Gateway in the wrong AZ. Correcting the route tables so each subnet used the NAT in its own AZ saved $36,000/year.&lt;/p&gt;

&lt;p&gt;For Kubernetes, Topology Aware Routing (available in Kubernetes 1.27+) enables AZ-locality for service traffic. Adding &lt;code&gt;service.kubernetes.io/topology-mode: auto&lt;/code&gt; to a service annotation is a one-line change that routes requests to pods in the same AZ first. For teams running Cilium or Istio, locality-aware load balancing configuration achieves the same result with more control.&lt;/p&gt;

&lt;h2&gt;
  
  
  VPC Endpoints: The Free Optimization You're Skipping
&lt;/h2&gt;

&lt;p&gt;The most cost-effective networking change in most AWS architectures costs nothing to implement and has no ongoing hourly charge. Gateway VPC Endpoints for S3 and DynamoDB are free. They route traffic from your VPC directly to S3 or DynamoDB over AWS's internal network, bypassing the NAT Gateway entirely.&lt;/p&gt;

&lt;p&gt;If your workload moves 10 TB/month to S3 and you have no gateway endpoint, you are paying $450/month ($0.045 x 10,000 GB) in NAT processing fees for traffic that never needed to touch a public IP address. A financial services team discovered they were spending $80,000/year this way, routing S3, CloudWatch, and DynamoDB API calls through NAT when free endpoints were available.&lt;/p&gt;

&lt;p&gt;For other AWS services, interface endpoints (PrivateLink) are not free but are significantly cheaper than NAT:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Without Endpoint (NAT + processing)&lt;/th&gt;
&lt;th&gt;With Interface Endpoint&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ECR (container pulls)&lt;/td&gt;
&lt;td&gt;$0.135/GB (NAT + egress)&lt;/td&gt;
&lt;td&gt;$0.01/GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSM Parameter Store&lt;/td&gt;
&lt;td&gt;$0.045/GB (NAT processing)&lt;/td&gt;
&lt;td&gt;$0.01/GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CloudWatch Logs&lt;/td&gt;
&lt;td&gt;$0.045/GB (NAT processing)&lt;/td&gt;
&lt;td&gt;$0.01/GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secrets Manager&lt;/td&gt;
&lt;td&gt;$0.045/GB (NAT processing)&lt;/td&gt;
&lt;td&gt;$0.01/GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S3 (gateway endpoint)&lt;/td&gt;
&lt;td&gt;$0.045/GB (NAT processing)&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DynamoDB (gateway endpoint)&lt;/td&gt;
&lt;td&gt;$0.045/GB (NAT processing)&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A team running EKS was pulling container images from ECR through a NAT Gateway. At 178,000 GB/month in image pulls, that was $8,010/month in NAT processing fees alone. Adding an ECR VPC interface endpoint at $0.01/GB dropped the cost to $1,780/month. Annual savings: $74,760.&lt;/p&gt;

&lt;p&gt;Interface endpoints cost $0.01/hour per AZ plus $0.01/GB. For a service receiving 10 TB/month in traffic routed through NAT, the endpoint pays for itself in the first week.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting Multiple VPCs: Peering vs Transit Gateway vs PrivateLink
&lt;/h2&gt;

&lt;p&gt;As environments scale beyond a single VPC, three options appear. They have very different cost structures.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Connection Cost&lt;/th&gt;
&lt;th&gt;Data Cost&lt;/th&gt;
&lt;th&gt;Total at 500 GB/month cross-AZ&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;VPC Peering&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;$0.01/GB/direction&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;2-5 VPCs with high traffic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transit Gateway&lt;/td&gt;
&lt;td&gt;$36.50/mo per attachment&lt;/td&gt;
&lt;td&gt;$0.02/GB&lt;/td&gt;
&lt;td&gt;$83&lt;/td&gt;
&lt;td&gt;10+ VPCs, transitive routing needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PrivateLink&lt;/td&gt;
&lt;td&gt;$7.20/mo per AZ&lt;/td&gt;
&lt;td&gt;$0.01/GB&lt;/td&gt;
&lt;td&gt;$19.40&lt;/td&gt;
&lt;td&gt;Service exposure (1 producer, many consumers)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;VPC Peering is cheapest for small topologies. The connection itself is free; you pay only for cross-AZ or cross-region data. At two to five VPCs, direct peering is almost always the right answer.&lt;/p&gt;

&lt;p&gt;Transit Gateway becomes cost-competitive when the number of VPCs grows. At 20 VPCs, full-mesh peering requires 190 peer connections. Transit Gateway requires 20 attachments at $730/month total. The operational overhead of managing 190 peering routes justifies that cost. Below 10 VPCs, it usually does not.&lt;/p&gt;

&lt;p&gt;PrivateLink works differently. It is not a routing mechanism but a service exposure model: one producer, many consumers, no shared network access. Consumers call an endpoint DNS name; traffic goes directly to the producer service. The per-AZ charge ($0.01/hour, $7.20/month) applies per endpoint, not per consumer. For internal APIs serving many VPCs, PrivateLink adds security isolation that peering cannot provide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Egress: CloudFront Changes the Math
&lt;/h2&gt;

&lt;p&gt;Standard AWS egress costs $0.09/GB for the first 10 TB/month, dropping to $0.085/GB for the next 40 TB and $0.07/GB for the next 100 TB.&lt;/p&gt;

&lt;p&gt;CloudFront changes the economics for any deliverable content. Data transferred from AWS origins (S3, EC2, ALB, API Gateway) to CloudFront edge locations is completely free. You pay only the CloudFront rate for delivery to end users, which starts slightly lower than direct egress and compounds with cache hit ratios.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;direction: right

s3: S3 Bucket

cf: CloudFront Edge {
  style.fill: "#d1fae5"
}

user: End User

s3 -&amp;gt; cf: "Free (origin to edge)"
cf -&amp;gt; user: "0.085/GB (CF rate)\nor 0 for cache hits"

s3_direct: S3 (no CDN)
user2: End User (direct)
s3_direct -&amp;gt; user2: "0.09/GB (direct egress)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For static assets with cache hit ratios above 70%, the effective cost per byte delivered through CloudFront is a fraction of direct egress. One team enabling CloudFront in front of an S3 bucket reported a 98% drop in egress costs with no changes to application code.&lt;/p&gt;

&lt;p&gt;AWS expanded the free egress tier to 100 GB/month aggregated across all regions in 2025, which helps small workloads but changes nothing for high-traffic applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Start
&lt;/h2&gt;

&lt;p&gt;Not every optimization is equally accessible. This list is ordered by effort-to-savings ratio.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Monthly Savings Potential&lt;/th&gt;
&lt;th&gt;Implementation Effort&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Add S3 gateway endpoint (free)&lt;/td&gt;
&lt;td&gt;$45/TB/month in NAT fees eliminated&lt;/td&gt;
&lt;td&gt;Under 30 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Add DynamoDB gateway endpoint (free)&lt;/td&gt;
&lt;td&gt;$45/TB/month in NAT fees eliminated&lt;/td&gt;
&lt;td&gt;Under 30 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Add ECR interface endpoint&lt;/td&gt;
&lt;td&gt;$6,000-$74,000/year for busy EKS clusters&lt;/td&gt;
&lt;td&gt;1-2 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Add SSM, CloudWatch, Secrets Manager endpoints&lt;/td&gt;
&lt;td&gt;$200-$2,000/month depending on call volume&lt;/td&gt;
&lt;td&gt;2-4 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fix cross-AZ NAT routing in route tables&lt;/td&gt;
&lt;td&gt;$36,000/year from one config change (documented)&lt;/td&gt;
&lt;td&gt;2-4 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enable Topology Aware Routing in Kubernetes&lt;/td&gt;
&lt;td&gt;50-80% reduction in cross-AZ fees for K8s traffic&lt;/td&gt;
&lt;td&gt;1 hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Put CloudFront in front of S3 for static content&lt;/td&gt;
&lt;td&gt;Up to 98% reduction in egress costs&lt;/td&gt;
&lt;td&gt;2-4 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remove idle NAT Gateways in dev/staging&lt;/td&gt;
&lt;td&gt;$32.85/month per gateway removed&lt;/td&gt;
&lt;td&gt;1 hour&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The first two items on this list cost nothing and take under an hour. Most teams skip them. The S3 gateway endpoint is a route entry in a route table; it does not change how your application code works. If your VPC does not have one, add it today.&lt;/p&gt;

&lt;p&gt;For teams running EKS or ECS pulling images from ECR, the interface endpoint ROI is immediate. At $0.01/GB versus $0.045/GB (plus egress), the endpoint pays for itself at roughly 200 GB/month of image traffic. Most clusters exceed that on the first day of a rolling deployment.&lt;/p&gt;

&lt;p&gt;The cross-AZ routing audit is the highest-variance item. Teams with correctly configured routing see no savings. Teams with misaligned NAT Gateway placement or default Kubernetes service routing sometimes find their entire data transfer bill is cross-AZ charges. Run AWS Cost Explorer filtered by "EC2 - Other" and look for &lt;code&gt;DataTransfer-Regional-Bytes&lt;/code&gt;. If that line is large, the route table audit is worth two hours of investigation.&lt;/p&gt;

&lt;p&gt;Networking costs are not usually the largest line item in a cloud bill. They are often the most addressable one, because the root cause is almost always configuration, not scale.&lt;/p&gt;

</description>
      <category>what</category>
      <category>youre</category>
      <category>actually</category>
      <category>paying</category>
    </item>
    <item>
      <title>Terraform Lock-In Is Real: Here's How to Get Out</title>
      <dc:creator>Muskan </dc:creator>
      <pubDate>Thu, 02 Apr 2026 09:20:32 +0000</pubDate>
      <link>https://dev.to/muskan_8abedcc7e12/terraform-lock-in-is-real-heres-how-to-get-out-4j8g</link>
      <guid>https://dev.to/muskan_8abedcc7e12/terraform-lock-in-is-real-heres-how-to-get-out-4j8g</guid>
      <description>&lt;h2&gt;
  
  
  The License Change That Made Lock-In Visible
&lt;/h2&gt;

&lt;p&gt;In August 2023, HashiCorp quietly changed everything. Terraform moved from the Mozilla Public License (MPL 2.0) to the Business Source License (BSL 1.1). The new license prohibits using Terraform to build a competing product. For most engineering teams, that restriction meant nothing in practice. But the change did something more important: it made visible how dependent the infrastructure world had become on a single vendor's tool.&lt;/p&gt;

&lt;p&gt;Teams that had been writing HCL for three years suddenly had a reason to ask: what would it take to leave? The answer, for most of them, was uncomfortable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9s39i1iv68hcvdaffay0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9s39i1iv68hcvdaffay0.png" alt="diagram" width="800" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Within a month of the BSL announcement, a community fork appeared under the Linux Foundation. OpenTofu reached general availability in January 2024. The speed of the fork was remarkable. The reason was simple: the infrastructure community had built too much on Terraform to let a license dispute make it a dead end, but they also weren't ready to hand full control to a single commercial entity.&lt;/p&gt;

&lt;p&gt;The fork created an exit ramp. But whether you take it, or switch to something else entirely, starts with understanding what you're actually locked into.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Terraform Lock-In Actually Looks Like
&lt;/h2&gt;

&lt;p&gt;Lock-in is not one thing. It is four things stacked on top of each other.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9g411smww6is7bbqwjpd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9g411smww6is7bbqwjpd.png" alt="diagram" width="800" height="893"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HCL.&lt;/strong&gt; HashiCorp Configuration Language is declarative, readable, and entirely specific to the HashiCorp toolchain. Skills transfer to Vault and Consul, but not to Pulumi, CDK, or Crossplane. Every engineer who knows Terraform knows HCL. That knowledge does not move.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Providers.&lt;/strong&gt; There are over 3,000 providers in the Terraform registry, covering AWS, GCP, Azure, Datadog, PagerDuty, Cloudflare, and hundreds of niche services. These providers are written against the Terraform plugin SDK. OpenTofu maintains full compatibility here. Pulumi or CDK do not: they have their own provider layers, with varying coverage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State.&lt;/strong&gt; This is where migration actually gets painful. Terraform state files are JSON, but they are keyed against specific provider schema versions. Moving 500 resources from one tool to another means reconciling every resource's state representation, one at a time. There is no bulk converter that works reliably at scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Module registry coupling.&lt;/strong&gt; Community modules on the Terraform registry assume HCL syntax, Terraform variable conventions, and tfstate output formats. If you switch tools, you lose access to this ecosystem unless the new tool explicitly provides compatibility layers.&lt;/p&gt;

&lt;p&gt;Understanding which of these four you are most exposed to determines which exit path makes sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Cost of Leaving
&lt;/h2&gt;

&lt;p&gt;Teams underestimate migration cost because they measure the wrong thing. The question is not "how many lines of HCL do we have?" It is "how many distinct state files do we have, and how complex is each one?"&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Team Size&lt;/th&gt;
&lt;th&gt;Module Count&lt;/th&gt;
&lt;th&gt;Estimated Migration Effort&lt;/th&gt;
&lt;th&gt;Realistic Timeline&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;5 engineers&lt;/td&gt;
&lt;td&gt;&amp;lt;20 modules&lt;/td&gt;
&lt;td&gt;2-4 weeks&lt;/td&gt;
&lt;td&gt;1 month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15 engineers&lt;/td&gt;
&lt;td&gt;20-80 modules&lt;/td&gt;
&lt;td&gt;2-4 months&lt;/td&gt;
&lt;td&gt;3-6 months&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30+ engineers&lt;/td&gt;
&lt;td&gt;80-200 modules&lt;/td&gt;
&lt;td&gt;6-12 months&lt;/td&gt;
&lt;td&gt;6-18 months&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Platform team&lt;/td&gt;
&lt;td&gt;200+ modules&lt;/td&gt;
&lt;td&gt;12-24 months&lt;/td&gt;
&lt;td&gt;18+ months&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These numbers assume a clean migration path, not a big-bang rewrite. Teams that attempt a big-bang switch consistently overshoot timelines by 2x. The ones that migrate incrementally, module by module, stay close to estimates.&lt;/p&gt;

&lt;p&gt;Beyond engineering hours, there are three hidden costs most teams miss. CI/CD pipelines need rewiring: every plan/apply workflow in GitHub Actions, GitLab CI, or Jenkins has Terraform-specific steps. Secrets management integrations often use Terraform provider-level credential injection. And runbooks, documentation, and onboarding guides are written for Terraform. These take time to update and they are easy to forget until they break something in production.&lt;/p&gt;

&lt;p&gt;The license concern alone is not worth a 12-month migration for most teams. What makes the migration worth it is if you also want better language support, stronger testing primitives, or a genuinely open governance model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Three Exit Paths
&lt;/h2&gt;

&lt;p&gt;Not all exits look the same. The right path depends on what you are trying to solve.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu99v4xxxv9qx1k895d6x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu99v4xxxv9qx1k895d6x.png" alt="diagram" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criterion&lt;/th&gt;
&lt;th&gt;OpenTofu&lt;/th&gt;
&lt;th&gt;Pulumi&lt;/th&gt;
&lt;th&gt;CDK / Crossplane&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Migration effort&lt;/td&gt;
&lt;td&gt;Lowest (binary swap)&lt;/td&gt;
&lt;td&gt;High (full rewrite)&lt;/td&gt;
&lt;td&gt;High (paradigm shift)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;State compatibility&lt;/td&gt;
&lt;td&gt;Full (wire-compatible)&lt;/td&gt;
&lt;td&gt;None (manual import)&lt;/td&gt;
&lt;td&gt;None (manual import)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Language&lt;/td&gt;
&lt;td&gt;HCL (same as Terraform)&lt;/td&gt;
&lt;td&gt;TS, Python, Go, C#&lt;/td&gt;
&lt;td&gt;TS/Python (CDK); YAML (Crossplane)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provider coverage&lt;/td&gt;
&lt;td&gt;All Terraform providers&lt;/td&gt;
&lt;td&gt;Pulumi registry + Terraform bridge&lt;/td&gt;
&lt;td&gt;AWS CDK: AWS only; Crossplane: varies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Governance&lt;/td&gt;
&lt;td&gt;Linux Foundation&lt;/td&gt;
&lt;td&gt;Commercial (Pulumi Corp)&lt;/td&gt;
&lt;td&gt;AWS (CDK); CNCF (Crossplane)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maturity&lt;/td&gt;
&lt;td&gt;High (1.6+ GA)&lt;/td&gt;
&lt;td&gt;High (production-proven)&lt;/td&gt;
&lt;td&gt;Medium-High&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;OpenTofu&lt;/strong&gt; is the right choice if your primary concern is the BSL license, or if you want to stay on HCL and avoid a rewrite. The migration is literally replacing the &lt;code&gt;terraform&lt;/code&gt; binary with &lt;code&gt;tofu&lt;/code&gt;. State files are compatible. Providers are compatible. CI/CD pipelines need one-line changes. Teams of 50+ with hundreds of modules should default here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pulumi&lt;/strong&gt; is the right choice if HCL is itself the problem. Pulumi lets you write infrastructure in TypeScript, Python, Go, or C#. You get loops, conditionals, unit tests, and type checking without workarounds. The tradeoff is a full rewrite. There is no automated converter from HCL to Pulumi. The &lt;code&gt;pulumi convert&lt;/code&gt; tool handles simple cases but fails on complex modules. Budget for a full migration effort.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CDK / Crossplane&lt;/strong&gt; is the right choice if your team is already Kubernetes-native and you want infrastructure managed via operators and GitOps. Crossplane treats every cloud resource as a Kubernetes custom resource. AWS CDK generates CloudFormation. Both require rethinking how you model infrastructure, not just what language you use.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Migrate Without Breaking Production
&lt;/h2&gt;

&lt;p&gt;The migration that does not break production is incremental. Never migrate a running system by switching the tool underneath it in one step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujpi82ryq4u0nkxxv5za.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujpi82ryq4u0nkxxv5za.png" alt="diagram" width="800" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1: Audit.&lt;/strong&gt; Run &lt;code&gt;terraform state list&lt;/code&gt; against every state file in your infrastructure. Count total managed resources. Map which state files are shared across teams. Identify state files that manage production database clusters versus those that manage S3 buckets for dev environments. Start with the latter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 2: Greenfield new.&lt;/strong&gt; Stop writing new Terraform. All new infrastructure gets created in the target tool. This limits the blast radius of any migration mistakes and lets your team build muscle memory before touching production state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 3: Migrate state.&lt;/strong&gt; For OpenTofu: run &lt;code&gt;tofu init&lt;/code&gt; in the module directory. If it runs clean, you are done. For Pulumi: use &lt;code&gt;pulumi import&lt;/code&gt; to pull existing resources into Pulumi state, then delete the corresponding Terraform config. Run both in parallel for one sprint to validate outputs match before cutting over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 4: Retire old.&lt;/strong&gt; Delete Terraform configs for migrated modules. Remove Terraform-specific CI jobs. Update your runbooks. The migration is not complete until the old toolchain is gone, not just unused.&lt;/p&gt;

&lt;p&gt;For teams using &lt;code&gt;tfmigrate&lt;/code&gt;, the tool can batch state moves across module boundaries, which is useful when reorganizing how state is split during migration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preventing the Next Lock-In
&lt;/h2&gt;

&lt;p&gt;Switching tools is expensive. The way to avoid doing it again is to stop letting tool APIs leak into every module.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03xb85hr7z69hxntnqm1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03xb85hr7z69hxntnqm1.png" alt="diagram" width="800" height="665"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Application teams should call internal modules with domain-meaningful inputs: &lt;code&gt;database_size = "medium"&lt;/code&gt;, &lt;code&gt;environment = "staging"&lt;/code&gt;. They should not call provider-specific resources directly. The internal module translates domain inputs to provider calls.&lt;/p&gt;

&lt;p&gt;When the provider changes or the tool changes, you update the internal module. Application teams do not change. This pattern does not eliminate migration cost, but it concentrates it in one place instead of spreading it across every team's configuration.&lt;/p&gt;

&lt;p&gt;Terraform made infrastructure programmable at scale. That contribution is real. But every tool that succeeds at scale creates its own gravity. Understanding that gravity, knowing what it costs to escape, and building enough abstraction to make the next exit cheaper: that is the work.&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>lock</category>
      <category>heres</category>
    </item>
  </channel>
</rss>
