From 0b6f6d74c1aa92edad0f11fb37b2e35a7689ffb9 Mon Sep 17 00:00:00 2001 From: Abdel Sghiouar Date: Tue, 26 Oct 2021 15:55:29 +0100 Subject: [PATCH 1/9] work in progress on mci https --- cluster-setup.md | 42 +++++++++++++---------- ingress/multi-cluster/mci-basic/README.md | 14 ++++++-- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/cluster-setup.md b/cluster-setup.md index 5a1524a2..6058ab36 100644 --- a/cluster-setup.md +++ b/cluster-setup.md @@ -19,24 +19,24 @@ $ gcloud container clusters create gke-1 \ ``` -## Multi-cluster environment (basic) +## Multi-cluster environment basic The multi-cluster examples use the following GKE setup for deploying the manifests. If you've already created `gke-1` in the [single-cluster section](#), you can reuse that cluster. 1. Deploy two GKE clusters within your Google Cloud project. ```bash - $ gcloud container clusters create gke-1 \ + gcloud container clusters create gke-1 \ --zone us-west1-a \ --enable-ip-alias \ --release-channel rapid \ - --workload-pool=${PROJECT}.svc.id.goog + --workload-pool=${PROJECT}.svc.id.goog --async - $ gcloud container clusters create gke-2 \ + gcloud container clusters create gke-2 \ --zone us-east1-b \ --enable-ip-alias \ --release-channel rapid \ - --workload-pool=${PROJECT}.svc.id.goog + --workload-pool=${PROJECT}.svc.id.goog --async ``` 2. Rename contexts @@ -45,35 +45,41 @@ The multi-cluster examples use the following GKE setup for deploying the manifes ```bash - $ kubectl config rename-context gke_${PROJECT}_us-west1-a_gke-1 gke-1 + kubectl config rename-context gke_${PROJECT}_us-west1-a_gke-1 gke-1 - $ kubectl config rename-context gke_${PROJECT}_us-east1-b_gke-2 gke-2 + kubectl config rename-context gke_${PROJECT}_us-east1-b_gke-2 gke-2 ``` 3. Enable the Hub, Anthos, and MultiClusterIngress APIs for your GCP project as described [here](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup#before_you_begin). ```bash - $ gcloud services enable gkehub.googleapis.com + gcloud services enable gkehub.googleapis.com - $ gcloud services enable anthos.googleapis.com + gcloud services enable anthos.googleapis.com - $ gcloud services enable multiclusteringress.googleapis.com + gcloud services enable multiclusteringress.googleapis.com ``` 4. [Register](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup#registering_your_clusters) your two clusters (`gke-1` and `gke-2`). There are a few steps to complete as part of the registration process. A quick hint to get you going is the `gke-uri` for your GKE clusters. - You can find the URI for each cluster via the following command: + Register the clusters with Hub. ```bash - $ gcloud container clusters list --uri + gcloud container hub memberships register gke-1 + --gke-cluster us-west1-a/gke-1 + --enable-workload-identity + + gcloud container hub memberships register gke-2 + --gke-cluster us-east1-b/gke-2 + --enable-workload-identity ``` Confirm that they are registered with Hub. - ``` + ```bash $ gcloud container hub memberships list NAME EXTERNAL_ID gke-1 50468ae8-29a3-4ea1-b7ff-0e216533619a @@ -83,14 +89,14 @@ The multi-cluster examples use the following GKE setup for deploying the manifes 5. Now enable Multi-cluster Ingress and specify `gke-1` as your config cluster. ```bash - $ gcloud alpha container hub ingress enable \ + gcloud container hub ingress enable \ --config-membership=projects/${PROJECT}/locations/global/memberships/gke-1 ``` 6. Confirm that MCI is configured properly. ```bash - $ gcloud alpha container hub ingress describe + gcloud container hub ingress describe createTime: '2020-08-16T05:15:32.127012063Z' featureState: details: @@ -107,14 +113,14 @@ The multi-cluster examples use the following GKE setup for deploying the manifes updateTime: '2020-08-16T05:15:33.464612511Z' ``` -## Multi-cluster environment (blue-green cluster) +## Multi-cluster environment blue/green To implement the `multi-cluster-blue-green-cluster` pattern, we need another GKE cluster in the same region as `gke-1`. This section builds on the [previous section](#multi-cluster-environment-basic), and assumes you still have those clusters up and running. 1. Deploy another GKE cluster to the `us-west1` region (same region as `gke-1`, but a different zone) ```bash - $ gcloud container clusters create gke-3 \ + gcloud container clusters create gke-3 \ --zone us-west1-b \ --enable-ip-alias \ --release-channel rapid @@ -179,4 +185,4 @@ In order to use Multi-cluster services, following steps need to be completed to $gcloud projects add-iam-policy-binding ${PROJECT} \ --member "serviceAccount:${PROJECT}.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role "roles/compute.networkViewer" - ``` + ``` \ No newline at end of file diff --git a/ingress/multi-cluster/mci-basic/README.md b/ingress/multi-cluster/mci-basic/README.md index 041b916b..949af678 100644 --- a/ingress/multi-cluster/mci-basic/README.md +++ b/ingress/multi-cluster/mci-basic/README.md @@ -4,7 +4,7 @@ ### Use-cases -- Disaster recovery for internet traffic across clusters or regioins +- Disaster recovery for internet traffic across clusters or regions - Flexible migration between clusters - Low-latency serving of traffic to globally distributed GKE clusters @@ -117,9 +117,17 @@ Now that you have the background knowledge and understanding of MCI, you can try $ cd gke-networking-recipes/multi-cluster-ingress/multi-cluster-ingress-basic ``` -2. Deploy the two clusters `gke-1` and `gke-2` as specified in [cluster setup](../../cluster-setup.md) +2. Set up Environment variables -3. Now follow the steps for cluster registration with Hub and enablement of Multi-cluster Ingress. + ```bash + export PROJECT=$(gcloud config get-value project) # or your preferred project + export GKE1_REGION=GCP_CLOUD_REGION # Pick a supported Region/Zone for cluster gke-1 + export GKE2_REGIOn=GCP_CLOUD_REGION # Pick a supported Region/Zone for cluster gke-2 + ``` + +3. Deploy the two clusters `gke-1` and `gke-2` as specified in [cluster setup](../../../cluster-setup.md#Multi-cluster-environment-basic) + +4. Now follow the steps for cluster registration with Hub and enablement of Multi-cluster Ingress. There are two manifests in this folder: From 6c8a521c8021958fa92238028cd9ffa9204ae749 Mon Sep 17 00:00:00 2001 From: Abdel Sghiouar Date: Tue, 26 Oct 2021 15:55:52 +0100 Subject: [PATCH 2/9] work in progress on mci https --- .../mci-frontend-config/README.md | 348 ++++++++++++++++++ .../mci-frontend-config/app.yaml | 97 +++++ .../mci-frontend-config/ingress.yaml | 102 +++++ 3 files changed, 547 insertions(+) create mode 100644 ingress/multi-cluster/mci-frontend-config/README.md create mode 100644 ingress/multi-cluster/mci-frontend-config/app.yaml create mode 100644 ingress/multi-cluster/mci-frontend-config/ingress.yaml diff --git a/ingress/multi-cluster/mci-frontend-config/README.md b/ingress/multi-cluster/mci-frontend-config/README.md new file mode 100644 index 00000000..e5bcde43 --- /dev/null +++ b/ingress/multi-cluster/mci-frontend-config/README.md @@ -0,0 +1,348 @@ +# Multi-cluster Ingress for External Load Balancing and FrontendConfig + +[Multi-cluster Ingress](https://cloud.google.com/kubernetes-engine/docs/concepts/ingress-for-anthos) for GKE is a cloud-hosted Ingress controller for GKE clusters. It's a Google-hosted service that supports deploying shared load balancing resources across clusters and across regions. + +[FrontendConfig](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters) is a Google developed CRD (Custom Resource Definition) for GKE that allows to: +- Implement HTTP to HTTPS redirect +- Customize the LoadBalancer [SSL policies](https://cloud.google.com/load-balancing/docs/use-ssl-policies#creating_an_ssl_policy_with_a_google-managed_profile) + +### Use-cases + +- Disaster recovery for internet traffic across clusters or regions +- Low-latency serving of traffic to globally distributed GKE clusters +- HTTP to HTTPS Redirection +- Customizing SSL policies with Min TLS versions and TLS features + +### Relevant documentation + +- [Multi-cluster Ingress Concepts](https://cloud.google.com/kubernetes-engine/docs/concepts/ingress-for-anthos) +- [Setting Up Multi-cluster Ingress](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup) +- [Deploying Ingress Across Clusters](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos) +- [Google Cloud External HTTP(S) Load Balancing](https://cloud.google.com/load-balancing/docs/https) +- [SSL policies](https://cloud.google.com/load-balancing/docs/use-ssl-policies#creating_an_ssl_policy_with_a_google-managed_profile) +- [FrontendConfig CRD](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters) + +#### Versions + +- GKE clusters on GCP +- All versions of GKE supported +- Tested and validated with 1.21.4-gke.2300 on Oct 26th 2021 + +### Networking Manifests + +This recipe demonstrates deploying Multi-cluster Ingress across two clusters to expose two different Services hosted across both clusters. The cluster `gke-1` is in `REGION 1` and `gke-2` is hosted in `REGION 1`, demonstrating multi-regional load balancing across clusters. All Services will share the same MultiClusterIngress and load balancer IP, but the load balancer will match traffic and send it to the right region, cluster, and Service depending on the request. + +This Recipes also demonstrates the following: +- How to enable HTTPS on Multi-cluster Ingress +- How to Configure HTTP to HTTPS redirect +- How to Customize the LoadBalancer Min TLS version and Features via [SSL policies](https://cloud.google.com/load-balancing/docs/use-ssl-policies#creating_an_ssl_policy_with_a_google-managed_profile). + +There are two applications in this example, foo and bar. Each is deployed on both clusters. The External HTTPS Load Balancer is designed to route traffic to the closest (to the client) available backend with capacity. Traffic from clients will be load balanced to the closest backend cluster depending on the traffic matching specified in the MultiClusterIngress resource. HTTP requests are redirected to HTTPS. + +The two clusters in this example can be backends to MCI only if they are registered through Hub. Hub is a central registry of clusters that determines which clusters MCI can function across. A cluster must first be registered to Hub before it can be used with MCI. + + +![basic external ingress](../../../images/multi-cluster-ingress-external.png) + +There are two Custom Resources (CRs) that control multi-cluster load balancing - the MultiClusterIngress (MCI) and the MultiClusterService (MCS). The MCI below describes the desired traffic matching and routing behavior. Similar to an Ingress resource, it can specify host and path matching with Services. This MCI specifies two host rules and a default backend which will recieve all traffic that does not have a match. The `serviceName` field in this MCI specifies the name of an MCS resource. + +The MCI below also defines via annotations: + +- A [Google-Managed Certificate](https://cloud.google.com/kubernetes-engine/docs/how-to/multi-cluster-ingress#google-managed_certificates) +- A static IP used to provision Google-Managed Certificates +- A FrontendConfig Object + +```yaml +apiVersion: networking.gke.io/v1 +kind: MultiClusterIngress +metadata: + name: foobar-ingress + namespace: multi-cluster-demo + annotations: + networking.gke.io/frontend-config: "frontend-config" + networking.gke.io/static-ip: x.x.x.x + networking.gke.io/pre-shared-certs: "mci-abdel-cloud-certs" +spec: + template: + spec: + backend: + serviceName: default-backend + servicePort: 8080 + rules: + - host: foo.$DOMAIN + http: + paths: + - backend: + serviceName: foo + servicePort: 8080 + - host: bar.$DOMAIN + http: + paths: + - backend: + serviceName: bar + servicePort: 8080 +``` + +Similar to the Kubernetes Service, the MultiClusterService (MCS) describes label selectors and other backend parameters to group pods in the desired way. This `foo` MCS specifies that all Pods with the following characteristics will be selected as backends for `foo`: + +- Pods with the label `app: foo` +- In the `multi-cluster-demo` Namespace +- In any of the clusters that are registered as members to the Hub + +If more clusters are added to the Hub, then any Pods in those clusters that match these characteristics will also be registered as backends to `foo`. + +```yaml +apiVersion: networking.gke.io/v1 +kind: MultiClusterService +metadata: + name: foo + namespace: multi-cluster-demo + annotations: + beta.cloud.google.com/backend-config: '{"ports": {"8080":"backend-health-check"}}' +spec: + template: + spec: + selector: + app: foo + ports: + - name: http + protocol: TCP + port: 8080 + targetPort: 8080 +``` + +Each of the three MCS's referenced in the `foobar-ingress` MCI have their own manifest to describe the matching parameters of that MCS. A BackendConfig resource is also referenced. This allows settings specific to a Service to be configured. We use it here to configure the health check that the Google Cloud load balancer uses. + +```yaml +apiVersion: cloud.google.com/v1 +kind: BackendConfig +metadata: + name: backend-health-check + namespace: multi-cluster-demo +spec: + healthCheck: + requestPath: /healthz + port: 8080 + type: HTTP +``` + +Last is the FrontEndConfig object which customizes the SSL policy and tells the LoadBalancer to perform the HTTP to HTTPS redirect. The redirectToHttps instructs the LoadBalancer to reply with `FOUND` or Response Code `302` to [redirect](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#https_redirect) the client to the HTTPS URL. There is also a reference to an ssl policy `ssl-policy` which will is created via `gcloud`. + +```yaml +apiVersion: networking.gke.io/v1beta1 +kind: FrontendConfig +metadata: + name: frontend-config + namespace: multi-cluster-demo +spec: + sslPolicy: ssl-policy + redirectToHttps: + enabled: true + responseCodeName: FOUND +``` + +Now that you have the background knowledge and understanding of MCI, you can try it out yourself. + +### Try it out + +1. Download this repo and navigate to this folder + + ```sh + git clone https://github.com/GoogleCloudPlatform/gke-networking-recipes.git + Cloning into 'gke-networking-recipes'... + + cd gke-networking-recipes/ingress/multi-cluster-ingress/mci-frontend-config + ``` + +2. Deploy the two clusters `gke-1` and `gke-2` as specified in [cluster setup](../../../cluster-setup.md) + +3. Now follow the steps for cluster registration with Hub and enablement of Multi-cluster Ingress. + + There are two manifests in this folder: + + - app.yaml is the manifest for the foo and bar Deployments. This manifest should be deployed on both clusters. + - ingress.yaml is the manifest for the MultiClusterIngress and MultiClusterService resources. These will be deployed only on the `gke-1` cluster as this was set as the config cluster and is the cluster that the MCI controlller is listening to for updates. + +4. Separately log in to each cluster and deploy the app.yaml manifest. You can configure these contexts as shown [here](../../cluster-setup.md). + + ```sh + kubectl --context=gke-1 apply -f app.yaml + namespace/multi-cluster-demo created + deployment.apps/foo created + deployment.apps/bar created + deployment.apps/default-backend created + + kubectl --context=gke-2 apply -f app.yaml + namespace/multi-cluster-demo created + deployment.apps/foo created + deployment.apps/bar created + deployment.apps/default-backend created + + # Shows that all pods are running and happy + kubectl --context=gke-2 get deploy -n multi-cluster-demo + NAME READY UP-TO-DATE AVAILABLE AGE + bar 2/2 2 2 44m + default-backend 1/1 1 1 44m + foo 2/2 2 2 44m + ``` + + +5. Now log into `gke-1` and deploy the ingress.yaml manifest. + + + ```bash + kubectl --context=gke-1 apply -f ingress.yaml + multiclusteringress.networking.gke.io/foobar-ingress created + multiclusterservice.networking.gke.io/foo created + multiclusterservice.networking.gke.io/bar created + multiclusterservice.networking.gke.io/default-backend created + backendconfig.cloud.google.com/backend-health-check created + ``` + +6. It can take up to 10 minutes for the load balancer to deploy fully. Inspect the MCI resource to watch for events that indicate how the deployment is going. Then capture the IP address for the MCI ingress resource. + + ```bash + kubectl --context=gke-1 describe mci/foobar-ingress -n multi-cluster-demo + Name: foobar-ingress + Namespace: multi-cluster-demo + Labels: + Annotations: kubectl.kubernetes.io/last-applied-configuration: + {"apiVersion":"networking.gke.io/v1","kind":"MultiClusterIngress","metadata":{"annotations":{},"name":"foobar-ingress","namespace":"multi-... + networking.gke.io/last-reconcile-time: Saturday, 14-Nov-20 21:46:46 UTC + API Version: networking.gke.io/v1 + Kind: MultiClusterIngress + Metadata: + Resource Version: 144786 + Self Link: /apis/networking.gke.io/v1/namespaces/multi-cluster-demo/multiclusteringresses/foobar-ingress + UID: 47fe4406-9660-4968-8eea-0a2f028f03d2 + Spec: + Template: + Spec: + Backend: + Service Name: default-backend + Service Port: 8080 + Rules: + Host: foo.example.com + Http: + Paths: + Backend: + Service Name: foo + Service Port: 8080 + Host: bar.example.com + Http: + Paths: + Backend: + Service Name: bar + Service Port: 8080 + Status: + Cloud Resources: + Backend Services: + mci-8se3df-8080-multi-cluster-demo-bar + mci-8se3df-8080-multi-cluster-demo-default-backend + mci-8se3df-8080-multi-cluster-demo-foo + Firewalls: + mci-8se3df-default-l7 + Forwarding Rules: + mci-8se3df-fw-multi-cluster-demo-foobar-ingress + Health Checks: + mci-8se3df-8080-multi-cluster-demo-bar + mci-8se3df-8080-multi-cluster-demo-default-backend + mci-8se3df-8080-multi-cluster-demo-foo + Network Endpoint Groups: + zones/us-east1-b/networkEndpointGroups/k8s1-b1f3fb3a-multi-cluste-mci-default-backend-svc--80-c7b851a2 + zones/us-east1-b/networkEndpointGroups/k8s1-b1f3fb3a-multi-cluster--mci-bar-svc-067a3lzs8-808-45cc57ea + zones/us-east1-b/networkEndpointGroups/k8s1-b1f3fb3a-multi-cluster--mci-foo-svc-820zw3izx-808-c453c71e + zones/us-west1-a/networkEndpointGroups/k8s1-0dfd9a8f-multi-cluste-mci-default-backend-svc--80-f964d3fc + zones/us-west1-a/networkEndpointGroups/k8s1-0dfd9a8f-multi-cluster--mci-bar-svc-067a3lzs8-808-cd95ae93 + zones/us-west1-a/networkEndpointGroups/k8s1-0dfd9a8f-multi-cluster--mci-foo-svc-820zw3izx-808-3996ee76 + Target Proxies: + mci-8se3df-multi-cluster-demo-foobar-ingress + URL Map: mci-8se3df-multi-cluster-demo-foobar-ingress + VIP: 35.201.75.57 + Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal ADD 50m multi-cluster-ingress-controller multi-cluster-demo/foobar-ingress + Normal UPDATE 49m (x2 over 50m) multi-cluster-ingress-controller multi-cluster-demo/foobar-ingress + ``` + + ```bash + # capture the IP address for the MCI resource + export MCI_ENDPOINT=$(kubectl --context=gke-1 get mci -n multi-cluster-demo -o yaml | grep "VIP" | awk 'END{ print $2}') + ``` + +7. Now use the IP address from the MCI output to reach the load balancer. Try hitting the load balancer on the different host rules to confirm that traffic is being routed correctly. We use `jq` to filter the output to make it easier to read but you could drop the `jq` portion of the command to see the full output. + + ```bash + # Hitting the default backend + $ curl -s ${MCI_ENDPOINT} | jq -r '.zone, .cluster_name, .pod_name' + us-west1-a + gke-1 + default-backend-6b9bd45db8-gzdjc + + # Hitting the foo Service + $ curl -s -H "host: foo.example.com" ${MCI_ENDPOINT} | jq -r '.zone, .cluster_name, .pod_name' + us-west1-a + gke-1 + foo-7b994cdbd5-wxgpk + + # Hitting the bar Service + $ curl -s -H "host: bar.example.com" ${MCI_ENDPOINT} | jq -r '.zone, .cluster_name, .pod_name' + us-west1-a + gke-1 + bar-5bdf58646c-rbbdn + ``` + +8. Now to demonstrate the health checking and failover ability of MCI, let's crash the pods in `gke-1` for one of the Services. We'll update the replicas of the `foo` Deployment to zero so that there won't be any available backends in that cluster. To confirm that traffic is not dropped, we can set a continuous curl to watch as traffic fails over. In one shell, start a continous curl against the `foo` Service. + + ```bash + $ while true; do curl -s -H "host: foo.example.com" ${MCI_ENDPOINT} | jq -c '{cluster: .cluster_name, pod: .pod_name}'; sleep 2; done + + {"cluster":"gke-1","pod":"foo-7b994cdbd5-p2n59"} + {"cluster":"gke-1","pod":"foo-7b994cdbd5-2jnks"} + {"cluster":"gke-1","pod":"foo-7b994cdbd5-2jnks"} + {"cluster":"gke-1","pod":"foo-7b994cdbd5-p2n59"} + ... + ``` + +**Note:** Traffic will be load balanced to the closest cluster to the client. If you are curling from your laptop then your traffic will be directed to the closest GKE cluster to you. Whichever cluster is recieving traffic in this step will be the closest one to you so fail pods in that cluster in the next step and watch traffic failover to the other cluster. + +9. Open up a second shell to scale the replicas down to zero. + + ```bash + # Do this in the same cluster where the response came from in the previous step + $ kubectl --context=gke-1 scale --replicas=0 deploy foo -n multi-cluster-demo + deployment.apps/foo scaled + + $ kubectl get deploy -n multi-cluster-demo foo + NAME READY UP-TO-DATE AVAILABLE AGE + foo 0/0 0 0 63m + ``` + +7. Watch how traffic switches from one cluster to another as the Pods dissappear from `gke-1`. Because the `foo` Pods from both clusters are active-active backends to the load balancer, there is no traffic interuption or delay when switching over traffic from one cluster to the other. Traffic is seamllessly routed to the available backends in the other cluster. + + ```bash + ... + {"cluster":"gke-1","pod":"foo-7b994cdbd5-2jnks"} + {"cluster":"gke-1","pod":"foo-7b994cdbd5-p2n59"} + {"cluster":"gke-1","pod":"foo-7b994cdbd5-2jnks"} + {"cluster":"gke-2","pod":"foo-7b994cdbd5-hnfsv"} # <----- cutover happens here + {"cluster":"gke-2","pod":"foo-7b994cdbd5-hnfsv"} + {"cluster":"gke-2","pod":"foo-7b994cdbd5-hnfsv"} + {"cluster":"gke-2","pod":"foo-7b994cdbd5-97wmt"} + {"cluster":"gke-2","pod":"foo-7b994cdbd5-97wmt"} + {"cluster":"gke-2","pod":"foo-7b994cdbd5-97wmt"} + {"cluster":"gke-2","pod":"foo-7b994cdbd5-hnfsv"} + ... + ``` + + + +### Cleanup + +```sh + +kubectl --context=gke-1 delete -f app.yaml +kubectl --context=gke-1 delete -f ingress.yaml # this is unnecessary as the namespace hosting these CRDs has already been deleted in the previous step +kubectl --context=gke-2 delete -f app.yaml +``` \ No newline at end of file diff --git a/ingress/multi-cluster/mci-frontend-config/app.yaml b/ingress/multi-cluster/mci-frontend-config/app.yaml new file mode 100644 index 00000000..2872354e --- /dev/null +++ b/ingress/multi-cluster/mci-frontend-config/app.yaml @@ -0,0 +1,97 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: multi-cluster-demo +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: foo + namespace: multi-cluster-demo +spec: + replicas: 2 + selector: + matchLabels: + app: foo + template: + metadata: + labels: + app: foo + version: v1 + spec: + containers: + - name: whereami + image: gcr.io/google-samples/whereami:v1.2.1 + env: + - name: METADATA + value: "foo" + ports: + - name: http + containerPort: 8080 + readinessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: bar + namespace: multi-cluster-demo +spec: + replicas: 2 + selector: + matchLabels: + app: bar + template: + metadata: + labels: + app: bar + version: v1 + spec: + containers: + - name: whereami + image: gcr.io/google-samples/whereami:v1.2.1 + env: + - name: METADATA + value: "bar" + ports: + - name: http + containerPort: 8080 + readinessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: default-backend + namespace: multi-cluster-demo +spec: + replicas: 1 + selector: + matchLabels: + app: default-backend + template: + metadata: + labels: + app: default-backend + spec: + containers: + - name: whereami + image: gcr.io/google-samples/whereami:v1.2.1 + env: + - name: METADATA + value: "default-backend" + ports: + - name: http + containerPort: 8080 + readinessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP \ No newline at end of file diff --git a/ingress/multi-cluster/mci-frontend-config/ingress.yaml b/ingress/multi-cluster/mci-frontend-config/ingress.yaml new file mode 100644 index 00000000..f89c3d6c --- /dev/null +++ b/ingress/multi-cluster/mci-frontend-config/ingress.yaml @@ -0,0 +1,102 @@ +apiVersion: networking.gke.io/v1 +kind: MultiClusterIngress +metadata: + name: foobar-ingress + namespace: multi-cluster-demo + annotations: + networking.gke.io/frontend-config: "frontend-config" + networking.gke.io/static-ip: 34.117.81.208 + networking.gke.io/pre-shared-certs: "mci-abdel-cloud-certs" +spec: + template: + spec: + backend: + serviceName: default-backend + servicePort: 8080 + rules: + - host: foo.abdel.cloud + http: + paths: + - backend: + serviceName: foo + servicePort: 8080 + - host: bar.abdel.cloud + http: + paths: + - backend: + serviceName: bar + servicePort: 8080 +--- +apiVersion: networking.gke.io/v1 +kind: MultiClusterService +metadata: + name: foo + namespace: multi-cluster-demo +spec: + template: + spec: + selector: + app: foo + ports: + - name: http + protocol: TCP + port: 8080 + targetPort: 8080 +--- +apiVersion: networking.gke.io/v1 +kind: MultiClusterService +metadata: + name: bar + namespace: multi-cluster-demo + annotations: + beta.cloud.google.com/backend-config: '{"ports": {"8080":"backend-health-check"}}' +spec: + template: + spec: + selector: + app: bar + ports: + - name: http + protocol: TCP + port: 8080 + targetPort: 8080 +--- +apiVersion: networking.gke.io/v1 +kind: MultiClusterService +metadata: + name: default-backend + namespace: multi-cluster-demo + annotations: + beta.cloud.google.com/backend-config: '{"default": "backend-health-check"}' +spec: + template: + spec: + selector: + app: default-backend + ports: + - name: http + protocol: TCP + port: 8080 + targetPort: 8080 +--- +apiVersion: cloud.google.com/v1 +kind: BackendConfig +metadata: + name: backend-health-check + namespace: multi-cluster-demo +spec: + healthCheck: + requestPath: /healthz + port: 8080 + type: HTTP +--- +apiVersion: networking.gke.io/v1beta1 +kind: FrontendConfig +metadata: + name: frontend-config + namespace: multi-cluster-demo +spec: + sslPolicy: ssl-policy + redirectToHttps: + enabled: true + responseCodeName: FOUND \ No newline at end of file From ae3acf31b9716e380116b1fe0b36b0f012c93337 Mon Sep 17 00:00:00 2001 From: Abdel Sghiouar Date: Tue, 26 Oct 2021 16:03:19 +0100 Subject: [PATCH 3/9] add some stuff --- cluster-setup.md | 12 ++++++------ ingress/multi-cluster/mci-basic/README.md | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cluster-setup.md b/cluster-setup.md index 6058ab36..f5d415a4 100644 --- a/cluster-setup.md +++ b/cluster-setup.md @@ -27,13 +27,13 @@ The multi-cluster examples use the following GKE setup for deploying the manifes ```bash gcloud container clusters create gke-1 \ - --zone us-west1-a \ + --zone ${GKE1_REGION}\ --enable-ip-alias \ --release-channel rapid \ --workload-pool=${PROJECT}.svc.id.goog --async gcloud container clusters create gke-2 \ - --zone us-east1-b \ + --zone $GKE2_REGION \ --enable-ip-alias \ --release-channel rapid \ --workload-pool=${PROJECT}.svc.id.goog --async @@ -45,9 +45,9 @@ The multi-cluster examples use the following GKE setup for deploying the manifes ```bash - kubectl config rename-context gke_${PROJECT}_us-west1-a_gke-1 gke-1 + kubectl config rename-context gke_${PROJECT}_${GKE1_REGION}_gke-1 gke-1 - kubectl config rename-context gke_${PROJECT}_us-east1-b_gke-2 gke-2 + kubectl config rename-context gke_${PROJECT}_${GKE2_REGION}_gke-2 gke-2 ``` 3. Enable the Hub, Anthos, and MultiClusterIngress APIs for your GCP project as described [here](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup#before_you_begin). @@ -69,11 +69,11 @@ The multi-cluster examples use the following GKE setup for deploying the manifes ```bash gcloud container hub memberships register gke-1 - --gke-cluster us-west1-a/gke-1 + --gke-cluster ${GKE1_REGION}/gke-1 --enable-workload-identity gcloud container hub memberships register gke-2 - --gke-cluster us-east1-b/gke-2 + --gke-cluster ${GKE2_REGION}/gke-2 --enable-workload-identity ``` diff --git a/ingress/multi-cluster/mci-basic/README.md b/ingress/multi-cluster/mci-basic/README.md index 949af678..3c762c47 100644 --- a/ingress/multi-cluster/mci-basic/README.md +++ b/ingress/multi-cluster/mci-basic/README.md @@ -134,7 +134,7 @@ Now that you have the background knowledge and understanding of MCI, you can try - app.yaml is the manifest for the foo and bar Deployments. This manifest should be deployed on both clusters. - ingress.yaml is the manifest for the MultiClusterIngress and MultiClusterService resources. These will be deployed only on the `gke-1` cluster as this was set as the config cluster and is the cluster that the MCI controlller is listening to for updates. -4. Separately log in to each cluster and deploy the app.yaml manifest. You can configure these contexts as shown [here](../../cluster-setup.md). +5. Separately log in to each cluster and deploy the app.yaml manifest. You can configure these contexts as shown [here](../../cluster-setup.md). ```sh $ kubectl --context=gke-1 apply -f app.yaml From 62e0730ff7e61a0c701a747a863dae6774225208 Mon Sep 17 00:00:00 2001 From: Abdel Sghiouar Date: Wed, 27 Oct 2021 15:51:33 +0100 Subject: [PATCH 4/9] adding few stuff --- .../mci-frontend-config/README.md | 65 +++++++++++++++---- .../mci-frontend-config/ingress.yaml | 2 +- 2 files changed, 54 insertions(+), 13 deletions(-) diff --git a/ingress/multi-cluster/mci-frontend-config/README.md b/ingress/multi-cluster/mci-frontend-config/README.md index e5bcde43..9eb409d2 100644 --- a/ingress/multi-cluster/mci-frontend-config/README.md +++ b/ingress/multi-cluster/mci-frontend-config/README.md @@ -2,16 +2,17 @@ [Multi-cluster Ingress](https://cloud.google.com/kubernetes-engine/docs/concepts/ingress-for-anthos) for GKE is a cloud-hosted Ingress controller for GKE clusters. It's a Google-hosted service that supports deploying shared load balancing resources across clusters and across regions. -[FrontendConfig](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters) is a Google developed CRD (Custom Resource Definition) for GKE that allows to: +[FrontendConfig](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters) is a Google developed [CRD](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) (Custom Resource Definition) for GKE that allows to: - Implement HTTP to HTTPS redirect - Customize the LoadBalancer [SSL policies](https://cloud.google.com/load-balancing/docs/use-ssl-policies#creating_an_ssl_policy_with_a_google-managed_profile) ### Use-cases -- Disaster recovery for internet traffic across clusters or regions -- Low-latency serving of traffic to globally distributed GKE clusters - HTTP to HTTPS Redirection - Customizing SSL policies with Min TLS versions and TLS features +- Disaster recovery for internet traffic across clusters or regions +- Low-latency serving of traffic to globally distributed GKE clusters + ### Relevant documentation @@ -30,7 +31,7 @@ ### Networking Manifests -This recipe demonstrates deploying Multi-cluster Ingress across two clusters to expose two different Services hosted across both clusters. The cluster `gke-1` is in `REGION 1` and `gke-2` is hosted in `REGION 1`, demonstrating multi-regional load balancing across clusters. All Services will share the same MultiClusterIngress and load balancer IP, but the load balancer will match traffic and send it to the right region, cluster, and Service depending on the request. +This recipe demonstrates deploying Multi-cluster Ingress across two clusters to expose two different Services hosted across both clusters. The cluster `gke-1` is in `REGION#1` and `gke-2` is hosted in `REGION#2`, demonstrating multi-regional load balancing across clusters. All Services will share the same MultiClusterIngress and load balancer IP, but the load balancer will match traffic and send it to the right region, cluster, and Service depending on the request. This Recipes also demonstrates the following: - How to enable HTTPS on Multi-cluster Ingress @@ -42,15 +43,15 @@ There are two applications in this example, foo and bar. Each is deployed on bot The two clusters in this example can be backends to MCI only if they are registered through Hub. Hub is a central registry of clusters that determines which clusters MCI can function across. A cluster must first be registered to Hub before it can be used with MCI. -![basic external ingress](../../../images/multi-cluster-ingress-external.png) +![basic external ingress](../../../images/multi-cluster-frontendconfig.png) -There are two Custom Resources (CRs) that control multi-cluster load balancing - the MultiClusterIngress (MCI) and the MultiClusterService (MCS). The MCI below describes the desired traffic matching and routing behavior. Similar to an Ingress resource, it can specify host and path matching with Services. This MCI specifies two host rules and a default backend which will recieve all traffic that does not have a match. The `serviceName` field in this MCI specifies the name of an MCS resource. +There are two Custom Resources (CRs) that control multi-cluster load balancing - the MultiClusterIngress (MCI) and the MultiClusterService (MCS). The MCI below describes the desired traffic matching and routing behavior. Similar to an Ingress resource, it can specify host and path matching with Services. This MCI specifies two host rules and a default backend which will receive all traffic that does not have a match. The `serviceName` field in this MCI specifies the name of an MCS resource. The MCI below also defines via annotations: - A [Google-Managed Certificate](https://cloud.google.com/kubernetes-engine/docs/how-to/multi-cluster-ingress#google-managed_certificates) -- A static IP used to provision Google-Managed Certificates -- A FrontendConfig Object +- A public [Static IP](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address) used to provision Google-Managed Certificates +- A [FrontendConfig](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters) Object ```yaml apiVersion: networking.gke.io/v1 @@ -61,7 +62,7 @@ metadata: annotations: networking.gke.io/frontend-config: "frontend-config" networking.gke.io/static-ip: x.x.x.x - networking.gke.io/pre-shared-certs: "mci-abdel-cloud-certs" + networking.gke.io/pre-shared-certs: "mci-certs" spec: template: spec: @@ -126,7 +127,7 @@ spec: type: HTTP ``` -Last is the FrontEndConfig object which customizes the SSL policy and tells the LoadBalancer to perform the HTTP to HTTPS redirect. The redirectToHttps instructs the LoadBalancer to reply with `FOUND` or Response Code `302` to [redirect](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#https_redirect) the client to the HTTPS URL. There is also a reference to an ssl policy `ssl-policy` which will is created via `gcloud`. +Last is the FrontEndConfig object which customizes the SSL policy and tells the LoadBalancer to perform the HTTP to HTTPS redirect. The redirectToHttps instructs the LoadBalancer to reply with `FOUND` or Response Code `302` to [redirect](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#https_redirect) the client to the HTTPS URL. There is also a reference to an ssl policy `ssl-policy` which will created via `gcloud`. ```yaml apiVersion: networking.gke.io/v1beta1 @@ -154,7 +155,7 @@ Now that you have the background knowledge and understanding of MCI, you can try cd gke-networking-recipes/ingress/multi-cluster-ingress/mci-frontend-config ``` -2. Deploy the two clusters `gke-1` and `gke-2` as specified in [cluster setup](../../../cluster-setup.md) +2. Deploy the two clusters `gke-1` and `gke-2` as specified in [cluster setup](../../../cluster-setup.md#multi-cluster-environment-basic) 3. Now follow the steps for cluster registration with Hub and enablement of Multi-cluster Ingress. @@ -163,7 +164,47 @@ Now that you have the background knowledge and understanding of MCI, you can try - app.yaml is the manifest for the foo and bar Deployments. This manifest should be deployed on both clusters. - ingress.yaml is the manifest for the MultiClusterIngress and MultiClusterService resources. These will be deployed only on the `gke-1` cluster as this was set as the config cluster and is the cluster that the MCI controlller is listening to for updates. -4. Separately log in to each cluster and deploy the app.yaml manifest. You can configure these contexts as shown [here](../../cluster-setup.md). +4. Create a Static IP for the LoadBalancer and register it to DNS + + In order to use Google-Managed Certificated, a static IP needs to be reserved and registered with your DNS Server. + + Start by creating a public Static IP. + + ```bash + gcloud compute addresses create mci-address --global + ``` + + Get the reserved IP. + + ```bash + gcloud compute addresses list + ``` + + Copy the IP address (not the name the actual IP in the form x.x.x.x). You will need to register it as an A record with your DNS Server for every host you intend to configure the LoadBalancer for. In this example you will need the IP address to be mapped to ```bar.$DOMAIN``` and ```foo.$DOMAIN```. Replace ```$DOMAIN``` with your own domain, Exp: ```mycompany.com```. + +5. Provision Google-Managed Certificates + + Export you domain suffix as an environment variable + + ```bash + export DOMAIN=mycompany.com + ``` + + We will use Google-Managed Certificates in this example to provision and HTTPS LoadBalancer, run the following command. + + ```bash + gcloud compute ssl-certificates create mci-certs --domains=foo.${DOMAIN},bar.${DOMAIN} --global + ``` + + Check that the certificates have been created + + ```bash + gcloud compute ssl-certificates list + ``` + + The MANAGED_STATUS will indicate ```PROVISIONNING```. This is normal, the certificates will be provisionned when you deploy the MCI + +6.Log in to each cluster and deploy the app.yaml manifest. ```sh kubectl --context=gke-1 apply -f app.yaml diff --git a/ingress/multi-cluster/mci-frontend-config/ingress.yaml b/ingress/multi-cluster/mci-frontend-config/ingress.yaml index f89c3d6c..821ec8c5 100644 --- a/ingress/multi-cluster/mci-frontend-config/ingress.yaml +++ b/ingress/multi-cluster/mci-frontend-config/ingress.yaml @@ -6,7 +6,7 @@ metadata: annotations: networking.gke.io/frontend-config: "frontend-config" networking.gke.io/static-ip: 34.117.81.208 - networking.gke.io/pre-shared-certs: "mci-abdel-cloud-certs" + networking.gke.io/pre-shared-certs: "mci-certs" spec: template: spec: From e083d18e5ff90b411405dc75c5d9189408cf03bd Mon Sep 17 00:00:00 2001 From: Abdel Sghiouar Date: Wed, 27 Oct 2021 17:12:00 +0100 Subject: [PATCH 5/9] final push i hope --- .../mci-frontend-config/README.md | 223 ++++++++++++------ .../mci-frontend-config/ingress.yaml | 6 +- 2 files changed, 154 insertions(+), 75 deletions(-) diff --git a/ingress/multi-cluster/mci-frontend-config/README.md b/ingress/multi-cluster/mci-frontend-config/README.md index 9eb409d2..704a93e2 100644 --- a/ingress/multi-cluster/mci-frontend-config/README.md +++ b/ingress/multi-cluster/mci-frontend-config/README.md @@ -155,14 +155,16 @@ Now that you have the background knowledge and understanding of MCI, you can try cd gke-networking-recipes/ingress/multi-cluster-ingress/mci-frontend-config ``` -2. Deploy the two clusters `gke-1` and `gke-2` as specified in [cluster setup](../../../cluster-setup.md#multi-cluster-environment-basic) +2. Set up Environment variables -3. Now follow the steps for cluster registration with Hub and enablement of Multi-cluster Ingress. - - There are two manifests in this folder: + ```bash + export PROJECT=$(gcloud config get-value project) # or your preferred project + export GKE1_ZONE=GCP_CLOUD_ZONE # Pick a supported Zone for cluster gke-1 + export GKE2_ZONE=GCP_CLOUD_ZONE # Pick a supported Zone for cluster gke-2 + ``` + NB: This tutorial uses Zonal Clusters, you can also use Regional Clusters. Replace a Zone with a region and use the ```--region``` flag instead of ```--zone``` in the next steps - - app.yaml is the manifest for the foo and bar Deployments. This manifest should be deployed on both clusters. - - ingress.yaml is the manifest for the MultiClusterIngress and MultiClusterService resources. These will be deployed only on the `gke-1` cluster as this was set as the config cluster and is the cluster that the MCI controlller is listening to for updates. +3. Deploy the two clusters `gke-1` and `gke-2` as specified in [cluster setup](../../../cluster-setup.md#multi-cluster-environment-basic). Once done, come back to the next step. 4. Create a Static IP for the LoadBalancer and register it to DNS @@ -182,6 +184,8 @@ Now that you have the background knowledge and understanding of MCI, you can try Copy the IP address (not the name the actual IP in the form x.x.x.x). You will need to register it as an A record with your DNS Server for every host you intend to configure the LoadBalancer for. In this example you will need the IP address to be mapped to ```bar.$DOMAIN``` and ```foo.$DOMAIN```. Replace ```$DOMAIN``` with your own domain, Exp: ```mycompany.com```. + Save the IP address for later. + 5. Provision Google-Managed Certificates Export you domain suffix as an environment variable @@ -204,7 +208,15 @@ Now that you have the background knowledge and understanding of MCI, you can try The MANAGED_STATUS will indicate ```PROVISIONNING```. This is normal, the certificates will be provisionned when you deploy the MCI -6.Log in to each cluster and deploy the app.yaml manifest. +6. Create the SSL Policy. + + Create an [SSL policy](https://cloud.google.com/load-balancing/docs/use-ssl-policies#creating_an_ssl_policy_with_a_google-managed_profile) with Min TLS version 1.2 and a RESTRICTED profile. This is just for demo purposes. Later we will try to connect to the Loadbalancer with TLS v1.1 and see that the connection will rejected. + + ```bash + gcloud compute ssl-policies create ssl-policy --profile RESTRICTED --min-tls-version 1.2 + ``` + +7. Log in to each cluster and deploy the app.yaml manifest. ```sh kubectl --context=gke-1 apply -f app.yaml @@ -220,6 +232,12 @@ Now that you have the background knowledge and understanding of MCI, you can try deployment.apps/default-backend created # Shows that all pods are running and happy + kubectl --context=gke-1 get deploy -n multi-cluster-demo + NAME READY UP-TO-DATE AVAILABLE AGE + bar 2/2 2 2 44m + default-backend 1/1 1 1 44m + foo 2/2 2 2 44m + kubectl --context=gke-2 get deploy -n multi-cluster-demo NAME READY UP-TO-DATE AVAILABLE AGE bar 2/2 2 2 44m @@ -227,9 +245,12 @@ Now that you have the background knowledge and understanding of MCI, you can try foo 2/2 2 2 44m ``` +8. Edit the ingress.yaml file and update: -5. Now log into `gke-1` and deploy the ingress.yaml manifest. +- ```networking.gke.io/static-ip``` value with the IP address you reserved earlier. +- ```$DOMAIN``` with your own domain. +9. Now log into `gke-1` and deploy the ingress.yaml manifest. ```bash kubectl --context=gke-1 apply -f ingress.yaml @@ -240,7 +261,7 @@ Now that you have the background knowledge and understanding of MCI, you can try backendconfig.cloud.google.com/backend-health-check created ``` -6. It can take up to 10 minutes for the load balancer to deploy fully. Inspect the MCI resource to watch for events that indicate how the deployment is going. Then capture the IP address for the MCI ingress resource. +10. It can take up to 10 minutes for the load balancer to deploy fully. Inspect the MCI resource to watch for events that indicate how the deployment is going. Then capture the IP address for the MCI ingress resource. ```bash kubectl --context=gke-1 describe mci/foobar-ingress -n multi-cluster-demo @@ -307,83 +328,141 @@ Now that you have the background knowledge and understanding of MCI, you can try Normal UPDATE 49m (x2 over 50m) multi-cluster-ingress-controller multi-cluster-demo/foobar-ingress ``` - ```bash - # capture the IP address for the MCI resource - export MCI_ENDPOINT=$(kubectl --context=gke-1 get mci -n multi-cluster-demo -o yaml | grep "VIP" | awk 'END{ print $2}') - ``` - -7. Now use the IP address from the MCI output to reach the load balancer. Try hitting the load balancer on the different host rules to confirm that traffic is being routed correctly. We use `jq` to filter the output to make it easier to read but you could drop the `jq` portion of the command to see the full output. +11. Now use the hosts defined in the MCI to reach the load balancer. Start by checking HTTP to HTTPS redirect works (you can also check in your browser). We use curl with the -v for verbose and -L to tell curl to follow the returns HTTPS link flags ```bash # Hitting the default backend - $ curl -s ${MCI_ENDPOINT} | jq -r '.zone, .cluster_name, .pod_name' - us-west1-a - gke-1 - default-backend-6b9bd45db8-gzdjc - - # Hitting the foo Service - $ curl -s -H "host: foo.example.com" ${MCI_ENDPOINT} | jq -r '.zone, .cluster_name, .pod_name' - us-west1-a - gke-1 - foo-7b994cdbd5-wxgpk - - # Hitting the bar Service - $ curl -s -H "host: bar.example.com" ${MCI_ENDPOINT} | jq -r '.zone, .cluster_name, .pod_name' - us-west1-a - gke-1 - bar-5bdf58646c-rbbdn - ``` - -8. Now to demonstrate the health checking and failover ability of MCI, let's crash the pods in `gke-1` for one of the Services. We'll update the replicas of the `foo` Deployment to zero so that there won't be any available backends in that cluster. To confirm that traffic is not dropped, we can set a continuous curl to watch as traffic fails over. In one shell, start a continous curl against the `foo` Service. - - ```bash - $ while true; do curl -s -H "host: foo.example.com" ${MCI_ENDPOINT} | jq -c '{cluster: .cluster_name, pod: .pod_name}'; sleep 2; done - - {"cluster":"gke-1","pod":"foo-7b994cdbd5-p2n59"} - {"cluster":"gke-1","pod":"foo-7b994cdbd5-2jnks"} - {"cluster":"gke-1","pod":"foo-7b994cdbd5-2jnks"} - {"cluster":"gke-1","pod":"foo-7b994cdbd5-p2n59"} - ... + $ curl -v -L foo.${DOMAIN} + * Trying x.x.x.x... + * TCP_NODELAY set + * Connected to foo.$DOMAIN (x.x.x.x) port 80 (#0) + > GET / HTTP/1.1 + > Host: foo.$DOMAIN + > User-Agent: curl/7.64.1 + > Accept: */* + > + < HTTP/1.1 302 Found + < Cache-Control: private + < Content-Type: text/html; charset=UTF-8 + < Referrer-Policy: no-referrer + < Location: https://foo.$DOMAIN/ + < Content-Length: 221 + < Date: Wed, 27 Oct 2021 15:46:31 GMT + < + * Ignoring the response-body + * Connection #0 to host foo.$DOMAIN left intact + * Issue another request to this URL: 'https://foo.$DOMAIN/' + * Trying x.x.x.x... + * TCP_NODELAY set + * Connected to foo.$DOMAIN (x.x.x.x) port 443 (#1) + * ALPN, offering h2 + * ALPN, offering http/1.1 + * successfully set certificate verify locations: + * CAfile: /etc/ssl/cert.pem + CApath: none + * TLSv1.2 (OUT), TLS handshake, Client hello (1): + * TLSv1.2 (IN), TLS handshake, Server hello (2): + * TLSv1.2 (IN), TLS handshake, Certificate (11): + * TLSv1.2 (IN), TLS handshake, Server key exchange (12): + * TLSv1.2 (IN), TLS handshake, Server finished (14): + * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): + * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): + * TLSv1.2 (OUT), TLS handshake, Finished (20): + * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): + * TLSv1.2 (IN), TLS handshake, Finished (20): + * SSL connection using TLSv1.2 / ECDHE-RSA-CHACHA20-POLY1305 + * ALPN, server accepted to use h2 + * Server certificate: + * subject: CN=foo.$DOMAIN + * start date: Oct 27 14:17:45 2021 GMT + * expire date: Jan 25 14:17:44 2022 GMT + * subjectAltName: host "foo.$DOMAIN" matched cert's "foo.$DOMAIN" + * issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1D4 + * SSL certificate verify ok. + * Using HTTP2, server supports multi-use + * Connection state changed (HTTP/2 confirmed) + * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0 + * Using Stream ID: 1 (easy handle 0x7fe198808200) + > GET / HTTP/2 + > Host: foo.$DOMAIN + > User-Agent: curl/7.64.1 + > Accept: */* + > + * Connection state changed (MAX_CONCURRENT_STREAMS == 100)! + < HTTP/2 200 + < content-type: application/json + < content-length: 357 + < access-control-allow-origin: * + < server: Werkzeug/2.0.1 Python/3.8.11 + < date: Wed, 27 Oct 2021 15:46:31 GMT + < via: 1.1 google + < alt-svc: clear + < + { + "cluster_name": "gke-2", + "host_header": "foo.$DOMAIN", + "metadata": "foo", + "node_name": "gke-gke-2-default-pool-68298253-q0mx.c.gke-net-recipes.internal", + "pod_name": "foo-5db8bcc6ff-j2cf6", + "pod_name_emoji": "🦹🏿‍♀️", + "project_id": "gke-net-recipes", + "timestamp": "2021-10-27T15:46:31", + "zone": "europe-west6-a" + } + * Connection #1 to host foo.$DOMAIN left intact + * Closing connection 0 + * Closing connection 1 ``` -**Note:** Traffic will be load balanced to the closest cluster to the client. If you are curling from your laptop then your traffic will be directed to the closest GKE cluster to you. Whichever cluster is recieving traffic in this step will be the closest one to you so fail pods in that cluster in the next step and watch traffic failover to the other cluster. +The LoadBalancer returns ```302 FOUND``` with an HTTPS URL. curl reconnected to that new URL, negociated TLS and returned the output of the app. This proofs HTTP to HTTPS redirect works -9. Open up a second shell to scale the replicas down to zero. +12. Now Let's try to connect with a TLS version < 1.2. ```bash - # Do this in the same cluster where the response came from in the previous step - $ kubectl --context=gke-1 scale --replicas=0 deploy foo -n multi-cluster-demo - deployment.apps/foo scaled + curl --TLSV1.1 --tls-max 1.1 -L -v http://foo.$DOMAIN + * Trying x.x.x.x... + * TCP_NODELAY set + * Connected to foo.$DOMAIN (x.x.x.x) port 80 (#0) + > GET / HTTP/1.1 + > Host: foo.$DOMAIN + > User-Agent: curl/7.64.1 + > Accept: */* + > + < HTTP/1.1 302 Found + < Cache-Control: private + < Content-Type: text/html; charset=UTF-8 + < Referrer-Policy: no-referrer + < Location: https://foo.$DOMAIN/ + < Content-Length: 221 + < Date: Wed, 27 Oct 2021 15:51:30 GMT + < + * Ignoring the response-body + * Connection #0 to host foo.$DOMAIN left intact + * Issue another request to this URL: 'https://foo.$DOMAIN/' + * Trying x.x.x.x... + * TCP_NODELAY set + * Connected to foo.$DOMAIN (x.x.x.x) port 443 (#1) + * ALPN, offering h2 + * ALPN, offering http/1.1 + * successfully set certificate verify locations: + * CAfile: /etc/ssl/cert.pem + CApath: none + * TLSv1.1 (OUT), TLS handshake, Client hello (1): + * TLSv1.1 (IN), TLS alert, protocol version (582): + * error:1400442E:SSL routines:CONNECT_CR_SRVR_HELLO:tlsv1 alert protocol version + * Closing connection 1 - $ kubectl get deploy -n multi-cluster-demo foo - NAME READY UP-TO-DATE AVAILABLE AGE - foo 0/0 0 0 63m ``` -7. Watch how traffic switches from one cluster to another as the Pods dissappear from `gke-1`. Because the `foo` Pods from both clusters are active-active backends to the load balancer, there is no traffic interuption or delay when switching over traffic from one cluster to the other. Traffic is seamllessly routed to the available backends in the other cluster. - - ```bash - ... - {"cluster":"gke-1","pod":"foo-7b994cdbd5-2jnks"} - {"cluster":"gke-1","pod":"foo-7b994cdbd5-p2n59"} - {"cluster":"gke-1","pod":"foo-7b994cdbd5-2jnks"} - {"cluster":"gke-2","pod":"foo-7b994cdbd5-hnfsv"} # <----- cutover happens here - {"cluster":"gke-2","pod":"foo-7b994cdbd5-hnfsv"} - {"cluster":"gke-2","pod":"foo-7b994cdbd5-hnfsv"} - {"cluster":"gke-2","pod":"foo-7b994cdbd5-97wmt"} - {"cluster":"gke-2","pod":"foo-7b994cdbd5-97wmt"} - {"cluster":"gke-2","pod":"foo-7b994cdbd5-97wmt"} - {"cluster":"gke-2","pod":"foo-7b994cdbd5-hnfsv"} - ... - ``` - - + The LoadBalancer returns ```302 FOUND``` with an HTTPS URL. curl tried to reconnect with TLSv1.1 but got a ```error:1400442E:SSL routines:CONNECT_CR_SRVR_HELLO:tlsv1 alert protocol version``` error ### Cleanup -```sh - +```bash +kubectl --context=gke-1 delete -f ingress.yaml kubectl --context=gke-1 delete -f app.yaml -kubectl --context=gke-1 delete -f ingress.yaml # this is unnecessary as the namespace hosting these CRDs has already been deleted in the previous step kubectl --context=gke-2 delete -f app.yaml +gcloud compute addresses delete mci-address --global --quiet +gcloud compute ssl-certificates delete mci-certs --quiet +gcloud compute ssl-policies delete ssl-policy --quiet ``` \ No newline at end of file diff --git a/ingress/multi-cluster/mci-frontend-config/ingress.yaml b/ingress/multi-cluster/mci-frontend-config/ingress.yaml index 821ec8c5..330fd606 100644 --- a/ingress/multi-cluster/mci-frontend-config/ingress.yaml +++ b/ingress/multi-cluster/mci-frontend-config/ingress.yaml @@ -5,7 +5,7 @@ metadata: namespace: multi-cluster-demo annotations: networking.gke.io/frontend-config: "frontend-config" - networking.gke.io/static-ip: 34.117.81.208 + networking.gke.io/static-ip: x.x.x.x networking.gke.io/pre-shared-certs: "mci-certs" spec: template: @@ -14,13 +14,13 @@ spec: serviceName: default-backend servicePort: 8080 rules: - - host: foo.abdel.cloud + - host: foo.$DOMAIN http: paths: - backend: serviceName: foo servicePort: 8080 - - host: bar.abdel.cloud + - host: bar.foo.$DOMAIN http: paths: - backend: From ac8b0bac68d14eb892d593916a1353f01c6c742c Mon Sep 17 00:00:00 2001 From: Abdel Sghiouar Date: Wed, 27 Oct 2021 17:14:26 +0100 Subject: [PATCH 6/9] updating the cluster-setup page, pushing the right png image --- cluster-setup.md | 75 +++++++++++++++--------- images/multi-cluster-frontendconfig.png | Bin 0 -> 306079 bytes 2 files changed, 46 insertions(+), 29 deletions(-) create mode 100644 images/multi-cluster-frontendconfig.png diff --git a/cluster-setup.md b/cluster-setup.md index f5d415a4..f7c94886 100644 --- a/cluster-setup.md +++ b/cluster-setup.md @@ -27,33 +27,40 @@ The multi-cluster examples use the following GKE setup for deploying the manifes ```bash gcloud container clusters create gke-1 \ - --zone ${GKE1_REGION}\ + --zone ${GKE1_ZONE} \ --enable-ip-alias \ --release-channel rapid \ --workload-pool=${PROJECT}.svc.id.goog --async gcloud container clusters create gke-2 \ - --zone $GKE2_REGION \ + --zone ${GKE2_ZONE} \ --enable-ip-alias \ --release-channel rapid \ --workload-pool=${PROJECT}.svc.id.goog --async ``` -2. Rename contexts + Clusters creation takes around 5 min to complete - The prior step will have added credentials for your new clusters to your `kubeconfig`, but let's rename the contexts to something a little shorter: +2. Get the clusters credentials ```bash + gcloud container clusters get-credentials gke-1 --zone $GKE1_ZONE + gcloud container clusters get-credentials gke-2 --zone $GKE2_ZONE + ``` + +3. Rename contexts - kubectl config rename-context gke_${PROJECT}_${GKE1_REGION}_gke-1 gke-1 + The prior step will have added credentials for your new clusters to your `kubeconfig`, but let's rename the contexts to something a little shorter: + + ```bash + kubectl config rename-context gke_${PROJECT}_${GKE1_ZONE}_gke-1 gke-1 - kubectl config rename-context gke_${PROJECT}_${GKE2_REGION}_gke-2 gke-2 + kubectl config rename-context gke_${PROJECT}_${GKE2_ZONE}_gke-2 gke-2 ``` -3. Enable the Hub, Anthos, and MultiClusterIngress APIs for your GCP project as described [here](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup#before_you_begin). +4. Enable the Hub, Anthos, and MultiClusterIngress APIs for your GCP project as described [here](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup#before_you_begin). ```bash - gcloud services enable gkehub.googleapis.com gcloud services enable anthos.googleapis.com @@ -61,23 +68,23 @@ The multi-cluster examples use the following GKE setup for deploying the manifes gcloud services enable multiclusteringress.googleapis.com ``` -4. [Register](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup#registering_your_clusters) your two clusters (`gke-1` and `gke-2`). +5. [Register](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup#registering_your_clusters) your two clusters (`gke-1` and `gke-2`). There are a few steps to complete as part of the registration process. A quick hint to get you going is the `gke-uri` for your GKE clusters. Register the clusters with Hub. ```bash - gcloud container hub memberships register gke-1 - --gke-cluster ${GKE1_REGION}/gke-1 + gcloud container hub memberships register gke-1 \ + --gke-cluster ${GKE1_ZONE}/gke-1 \ --enable-workload-identity - gcloud container hub memberships register gke-2 - --gke-cluster ${GKE2_REGION}/gke-2 + gcloud container hub memberships register gke-2 \ + --gke-cluster ${GKE2_ZONE}/gke-2 \ --enable-workload-identity ``` - Confirm that they are registered with Hub. + Confirm that they are registered with Hub. Your EXTERNAL_ID values might be different. ```bash $ gcloud container hub memberships list @@ -86,33 +93,43 @@ The multi-cluster examples use the following GKE setup for deploying the manifes gke-2 6c2704d2-e499-465d-99d6-3ca1f3d8170b ``` -5. Now enable Multi-cluster Ingress and specify `gke-1` as your config cluster. +6. Now enable Multi-cluster Ingress and specify `gke-1` as your config cluster. ```bash gcloud container hub ingress enable \ --config-membership=projects/${PROJECT}/locations/global/memberships/gke-1 ``` -6. Confirm that MCI is configured properly. +7. Confirm that MCI is configured properly. ```bash gcloud container hub ingress describe - createTime: '2020-08-16T05:15:32.127012063Z' - featureState: - details: + + createTime: '2021-01-14T09:09:57.475070502Z' + membershipStates: + projects/349736299228/locations/global/memberships/gke-1: + state: + code: OK + updateTime: '2021-10-27T15:10:44.499214418Z' + projects/349736299228/locations/global/memberships/gke-2: + state: + code: OK + updateTime: '2021-10-27T15:10:44.499215578Z' + name: projects/gke-net-recipes/locations/global/features/multiclusteringress + resourceState: + state: ACTIVE + spec: + multiclusteringress: + configMembership: projects/gke-net-recipes/locations/global/memberships/gke-1 + state: + state: code: OK description: Ready to use - detailsByMembership: - projects/1050705688268/locations/global/memberships/gke-1: - code: OK - hasResources: true - lifecycleState: ENABLED - multiclusteringressFeatureSpec: - configMembership: projects/alexmattson-ifa-081520-0404/locations/global/memberships/i4a-us-central1-01 - name: projects/alexmattson-ifa-081520-0404/locations/global/features/multiclusteringress - updateTime: '2020-08-16T05:15:33.464612511Z' + updateTime: '2021-10-27T15:09:33.451139409Z' + updateTime: '2021-01-14T09:09:59.186872460Z' ``` - + 8. At this stage your clusters for MCI are ready, you can return to the tutorial you started with. + ## Multi-cluster environment blue/green To implement the `multi-cluster-blue-green-cluster` pattern, we need another GKE cluster in the same region as `gke-1`. This section builds on the [previous section](#multi-cluster-environment-basic), and assumes you still have those clusters up and running. diff --git a/images/multi-cluster-frontendconfig.png b/images/multi-cluster-frontendconfig.png new file mode 100644 index 0000000000000000000000000000000000000000..c43d41a3dbfc3a5c7acd07b35f69f4fee1df3836 GIT binary patch literal 306079 zcmeGEby$>J`#ugMAqY}}g1`_WA`Q|pFo1%z(hY)i=g^3PfRqZ-DJ><^ty0oMH%Rv& z-SAtppS`#4{k+fqevae)cXJ%$EY}_DUTa-(Ugve)6Z}X~8XuPe7Yz*!U*_R`Wi&Kg ze>60#hd7r(Pv8-=92(kHD+@`3LEuYXo}Q z!z*=H`tqWPv@tK`J`a11c}+I-igmBg^TnSZa1HXpo`xkXIZS)6MjuZ*3F21&i5 zix$@rDWmD&(2Le?cma3!C82$F9v}I9EoJUP&G``hCL!8Wk*1qoH#rDrP0@bfiv;t~ zpuLx{6XZ2`|JjLd=-pQ|I{kvrTC%lre%w)&7N75MCF5^hM;pk|E#$#N3p;t#!}{Gs zoI0$Bs3z#>78hE4BOSr~l`5~G>&1jU9SQlLuM>@ndtPbcr2Zbc1u+|%KIDFRST&JP zm)~gx8<2Q#Plg?Se4!P8!RB7IEl$Jt@o_-kH@64pA755D-H~SEygtkBASIvweu(Jc z)nR)z#xrIA?Qgd;p_ZMI#ZS)AFpS7V`FU`SjDs4RtGIfZy`{45CSq{uvMuvG7G)$h z!U!U}^7P3S<^;CBwk>7@bG@vnF6EUThfEBg>-E&_PH#1t&-o=TNjFDWkm8c4&}PA` z)o5kI{WLL*%(N6GqS{TLroD!6o72B*WtpvbE}%~vj`Mii7%Q&thub@Ei)3p~1M84S zO~H?6Fpj=9Jv8zDs3L-dopO?`zk+qjQp^*7Ymp*c{7UBklF6x6AE!y?3Uji)jL*Yb zM|Qzju6zFmGlRCvtpmQ8g9TbC9~3x<}c8vo@c69&DJn*v(Eccmaq7#|PEQ$tlW z+|=`q*Xr&r=y4e7SQy-npSgo}V5Hvy4z~TYX6fwOzB3I3ozEoUQ4+Q!;3XKHPOo8? zP4lqk1gl%jzo3qbe-YipX>^zCExBT8YuFFi1Wm-tVZ)ILdzuM2XN29pznMSZSL3hv z62ddxw;#XR4ZJJ;!u1<-=o_L=smPXBTmw&FZ9kdDod-^^zoN z39zev4@blNadL8!P`~niMqjKH&Gy1<+PS>-yOjjZGba;~s!~{P<8?B0FFEtCNv1gR zeheR9993T8_)hp-oSYoXNc`4AERrYh0_>CIzNm7NbYd{1US-9$`t0%XrZq;*XMKCL zffsk|(GxF`eYtLrG4UcV8>1F;@;h`{lE~j5K_p}p6iYW0L_hoTkk;=Z`L(bn`rL;? zZv%pe1@Do>MMTlDyxIGvo}W#`L?CTsLd6C-77 zKJ{1cjMX&RhHz4Lc=I7^Uqxr{Cx&x7FjhXN-@2U`sPx5bPVUFvA$u)>Sb#wz&CKMX z26~vGy#4J%VgdhRf7Y+65?9g^KfbV!wWmO45`6W%_2wJx*tNPDeR&2`5;LM0BK~U! z#0kMRO^i*{*Mgrubi9rA+DJxMSv1$bG`uv>InnvufcUDKiUzlelM0@OoC- zx=>JET^&$ebWHB@=2&+RckgU%)c#E0#NzMKExT{Ks<9I((Gbjy?(Djj-ip*X-gz&b3F9@UQ%}5eb0)0_YE?k+YrhmPDs6CaW`L5q>$1w`Q+Q~ ztexeZmGPDA6-f1cJsrJp+j84Dr2eG(q%9NzC9Hc|XW{YALwaxQCVAt_FHh$0MRO5w z+TIggNmwq~#X1hzv)U_K_2nctC9WPbcJd$gL3X z8-%P((W23D(Rpk-tThFl`BFMvr5}o`trW`li*INbm5ExNeQ6oG(`=fiP}ha0gP{{{ zlV%gP;Vm4m_j;1FhPh^K|Gp>93Drs1z6RAJY$fb8$;?I*>4Dyk$McoF#Wn&@DmU%7 zetejzNX$`W%|_3r$d>NDx@5j|Ysq6tgFas>BTSQPc0H(wJ(<0VeOwP&wOSeO$mVF{ z>^-;my~Qcdxdy4|L~rbV;J;Mh}Pnl)iG2c9EhT%ck=t z{#1pRv-hl5^kL!-!{N)r?k$_`v*o3Qm`(WSO%7ki3#yCBa}KGoaMI8T(QTP$5777x ztze$C+?-H*IYZCa?nL}K%*zfRO*qBeq<=U?Ls=5a0{57k817Rz3e01SM?ga+sa^$0 z`A5Gjf4Sn%5KutqNp4G=d|jVp3Nmw(i~hafTcVrSt8Q)IX!UQLQ+2AAc8`eXT~#IJ zWu~+A9+)!^G`Db`Gk4z2>CKaxjwlW%ZXIZSuBo{GVFcTu+(Bj52O>#D!k^{XS>iT) z7`J6cvV0}-nk!?i(p4GVXg7{FcA4aXxA}1*qE$jilCtLQ?NR&1^ex>Ko?L@>)uP5; zOUcS9j=ve=X1AV*cYw@6TVp~S1i!d`ExoeDNTJY~%X$ zv#ru)Mq^1S{)jG}4$n5i#iB(xE;=R)Ru4DEJq^?PZ@AyI-wiTdy%vpEbKknxqjzon z+j`e1jiZs1>*DTG);zL9r9-Yq_|_2dQjn4YUy_K8V?xto{XKj~Ws(0z0%;GM&nH?V zafM*1;L`aaiHm>)vYC+kA=+d$9QqZ9R!j}M5^-``?xRZ#wG3oFj%T^E+2@&Yayl{Y zY~!VgmAbX3i?33z*Qi?-vFaW@9b8s($&1UA(`eA)w&*%?jM(n7VzOGW8fSUWLNTOO zpi__B@t8TLd`I{0gpb@#vv#IY>bxZ{;W_`HE#Iha`BDFk-so{1`tl*QQPp>L^tLP` z`_`V@`z2y0r@D2G=F+3#9Ky}QW~a$4o{|TA144tg zldU5ff^TJ>7M-UfayzKygL#KL0N zPUJLir${)VGl4l`6{6=F>X?71d9n3%4%+p0v5-WIF}YOUvI_3F-nN$Al4uEqxExQ! z{orQo`P5AG- z4dWN}MU#1F%jpQ|7-~k5`UC%i`305H{vJqkk9kjfN&>XVXJ-F>E_dxtJI&nrvKy28 z=&;&$_I?Vb{%D=huEr08nCezncx`k&(zj&3U}ijNQ)H@aw`otrE9IbmQ_`a7$!1}M zC{2%#?9pzm-KtsN(kqUA1BwPI@4D%f;c1Q;*(!_%baHER(>rK(uIMm1tY-v0Hc<}k zCEuUXw(qQ=pHp1}I&#D2gq`n&4hh=BFf^|>`v(U$>zfy!AeTL{pDi-AbLU6|{pkG2pz4RrmtA~8bKhO` zjJ=h{Gd1Wl#_7lf-VS}lSK;R7w;=j>Wuhr#s-S?z4B9won3pKfut4h)_=sMj{Ie}} z=`I?^Z~f>XV6i~M{QVq7@QwO=4L+!A{_~CT_9YrN_}?|~aZ5%2<7{02RE$5`SP#K5 zG;tM485!`cV(e&QV(VmX=gcxll?pnp*gw>ALPNX3fcjjLQNH~H+<(MERnu8hL0-t% z&W8QTQ#&IQb~hV)a5fs6h?@{-+L$;$p>?ydwsjJ6gWme>3?a})b#vUJ{p}QIE9fmv zg-5iKc8(^reC(X;oVP@AX=!Oi9G{vBDc_g+{c`X>=q+<+XL}(I4mcdn4(DdKb2Q`N z5)>5V;Jn9i?;aaCgU!j^*7=DWo2?W5e{S-}eeRn$89Q3oJ6qV<(xUGB#K_LY8G7p$ zYM?*={_~tBZWcdBvUU1>T3~`4s3RO)?3^5b-Wyyhg6b7|WZ`CFt##kR2CNwvLzIh~ z_nyda7yQ?upF{p~spij1@9_!#<lv*^za`+eMB5B`3k2nTBJ zzpTZ77W%hdu+pNqA{>A2nkcSIkYN|tNGgl_N~+)+h#Be+Jp=r6_dnmDjUEs_ryCK9 zh6Y2Exi7Bjc4>X`N^H`CJI$%*Vj{Ph)Cs}0hd4wh^~Tm1Q}#yoK^sl3e2j_>LM{n> zw0WnbNlyO{c`Ys^-yTQXiFWetjzu& zH~-~&SR@XPKc7sRP2_LS`+pb&hsa#_k{_a_pdg9(k7@qDFH^WhOEh*npj-hg%K!W9 z-_A*Oz`~TEtSEPt`p;VaUoPVbeg-p-Bpu_s@_#w|w{!ejt`p(dOpJ})L~Ypr?J~q| zbo4X@W%KcWH|O8Y`B!uP)trCL+P^;MU!U_YAov#${EOE9h0^~*>3`##UxQEzbwhj3 zTW5AxuioF?Ba~t|TUF|T1hOOEDzcT9-!CSA%v^fkgW`?P0yg$P#$bDlv_#szyd_3I z12qK}&ezJRb??56^z)MIzzLi7yZuJ$;I#YBgzD3F+OZDSwPl$M?U_MZ8wFf&Q!Cck z!D~BaWi6fiq}LQy5WB@M{wePD6S_u(Q;=??#r)@U`I%n-1`%gDBNkRUbZQJa+Zu85 z-uiqjD^gL`Fh<9N{a{BhT#_t@53>s*-d{w83!Pb(NGyI&niqY;XysI*6KSphxlefJ z(fyC1qoD_geY1zBCx3}!-LCsl?XM#tp-bg^t=?uQ#U_f?$*V$AmI8qZH#FE=P3BV^})}5`|n7bgo&0&=uLd#gJ+-V@SNfB zRuplvF;-S=GhQxvo=gIs9U+g7N5&qC$6iSr&0#PlKVGhZ-iThcWrn?jw9k2&+IT;5KjZb=G`ywKmP{t1SGg+Y1ffFz80Y6GfQ1;#4^bmF zck^>u8)}YeI9+htZeyhMDdKzh49$<8SYWeuXZCE<*LU7FjR3vt_G{r6`@0L>sb^bt zypzQqdUnpPgi<~Rw9ebU*BpOvW5dY0*_)bkRhARFWzrDt1-YI%50~fHYB2tktN(8J zZC%0f5AW%!z#$Sq_nUz14(Zs1trgZFaSCVi!1|dJ_`PG%Xc3;;3K!TLP)RUubd~we z;3s=wXzf-kW-FT{zWFeH7QO)q-HkTJ#d6#&K~NMw)u$^ID4~i;>AfM{#pd6;rJ{*h zaqAaC=a6AL)MBKM3FU{^}$uCd4MiS^}{mlNru?DHB!#5 z<`vm~*Bhho>qW=FAQl$Fo(*sHm_4qkF-_$( z;?W^Q(6Mp-lRZ{*x26v2`J>tO#ze?nWq}|Pqr<1Y;a=xEDKuM(tL zkiYcQveFVAe+mFGp8T6E+}gZXDIo8<;F5i(8v!XhI%JE_{5Q>-TG=D zrStRPh-Jqr`sLZG0*9lU3vP0&q}Aq%blOi{BEAj8{F5b;&j4fGx2(Q#2|e&OEs@7V zdBt0>)GNRuCVX5j7h!!(>4#Ljgb=1#3oe?Nx<0;tH3OO2NaLxDfi8He#a!Cd*73?= zgJEOPHf`bUeRKS%mTUi{@2cR&XS77LoC{#VRTPmgF>wY^G-48I`#r`7so8d%)V}rC z_`w)?!+Q^W3dEK(9z~qIA6zy&wgHybZNtK5t7NI7^%GXLe>mj;**{M0BbXZIi)yM% z=tb;cO;@G5fg}l{rdEPpHBq|BRd!i-g|!jF(n z&TZO*!<*06PHt6P9)vhEv)H>Gv?ocJl~y!8$QzqoVz-T02zm8J@;$*n>Pi-%ot-_- zCX-+)xPVMH8MTQ=^OFRs3B|mf&65a25>z|r_<9}GCm;4UP8M4g-8F}j3Sz?|Waeh4 z-CPBy?A1LxWiLI}lUPf090CURzir`vdJrfh5T>i=N&hGvr5xJi9k*bHV<=Zyhk1ju z8T|#*NmaHdEmCKg%%CApIC)e#xcxIJ$JdP(hS!ZL3r0;hS!A~ghdYBv!r4`&TO-zt z>hJ&W;b1`b0XwdUlO94uYcBvs3`}3pMaPVn0W^Eu2b&_T)IOT6UA%XdPh5VJd)&ZP z0&OL+n}Vd(hU!+j4yJ;ILKReUi#MFF6l9}ov;41l!Jfey!QSxc%Gd9NEc&La!mo(#iw*9e55&E!jZD%3o$a^;p~1OB?%wSy|_%ejHC>0P0nkA zBR9eaEuMO1-XlMLF=UYDbn2wPdhK{jWqj7G+b$v#54V?@MB6u@^cP6>i{1DS!Tu6u zrGxH`Vfr1T;8c-^7TYCs6<|GtT!xT5b?8;X%Xq@rvnPbEtqN8iM$${L`2(swrbo>8 z^EGwzFH0DBYU@PFy^%;$PTSK`$h-4X&i}r5Ic8v59)-zeBsnUeCB&9!LPE>A0(LG^ zas4vyEktDX3(;M9hWco!X0dJg6i)N70h8K}Z@oQ^I&v;gPiyr1i95({ynpI^>L%zN z@jnF-NJb@Ct5$`j5KNpK=fo zIw6kFN5AVBocS ze?IUGw}H?oUd!(o3WX88aCIeYsZ-i-8Ah(ZTB_KSHt_9Y?U4wF(FTfjWJU{kyK@!R zRnjX$v&d~$%KjPk=8^!p6S4vh`8&fUzei%YU`xq$z$~rFHu=I~1}2=zV|_II`N;4T zks(S?&%MhwiL1!*w&$Y-xsv8Ox-R0BbXSLBVk1%nlih&g-CaDJNjn525P7Nq4_yB{iUOrwf z@!s0-tTFCV@qR3mKD&o)Q%e&*6m^~`oX*QGn91g|f4VPV`h*UbB7jdnZ6oL(cI*xq z&gv8EjR&d4pha0z?<)Q5^C4)q+ASrNv2n(}P0?{BXgU~jZaqM5hUbtNn)cZMO=%)i?sO-(#KHFRx>+Tayje~7r1ja`bGVe^+o`|tHM zbOcji93CFLLPRbJMB*x`9RNeLKoXC+%=dh33q93A-%e>W>@Py*2{wBxL=}c8QdSv)-ujv8^Ns}^}gUP z@v$t^=6?_KvnN&n+&j3$nE@S>;4u(HqO?S*XRv;han@_2^l1cvrkjzm@5IMyVdSxe z-R}Mh!Pt)nG{s-2E_69-%Est+KRAsWZ%qvF4T%5u+WqYLoPknZiUK?mT6gtf9LEETqq6 z0FpS%LC*;LRDqHom56)@02 zRoprN-uty|&g+x^H60d081&-mBoq>1yg}g;G(J?TKbLFE}1pQYup;`QOh( zlw$+dW2`V@kl6eoXuV|3Qy``V0)U=I@@)AUFWqZlL)%e7qUo9j;rbLGn@#KW5o3bq zd8~M;cYvYvj*l|i^Z%{c&tS$Vc~FOLyoBiid@%GNj`b~? zp9S!8Ntc}~67Bt{E^mM^opip4>}SzJ1@0P?A^l_calaJs~mC%!jug3Lz|uOdZR^IGK#n88&j(gf~*O5 znzO$z89E<4D3e=m?AdLe>rtCM+Q>CFUxM+}xtNpn>M)<-xw@^r6zArw zfwOyol$0~y=nzytShJ>0%cUvs41!1^*jr>QSiK1R*=4^V_DPA@GJ1BZid^UI%?(z` z$Kq=BCwPgJ8Xg6wh#CZE^Jy6EgaeBq2a$}_(F(Lb`o$hY4LSBJMIMeM0!goP2Ac8Vh$ zDcnWvOs%M(MZ94m98D`MvJPJ#H}l-6XK=yuHsMD!GM&LFuBU92XF6;vS?4#6nVrnW zksZ$kBw-8|rg`I&e$eC0%0tLZ}EPi{YtbY`euv z$FpsuA17m5+BT6ME7~sB@xC|4lr<1@DzEp=x~(FH6SWKLMPrTY&QCS@|02Ub%`(bd z_^qH6jKJmKHewz;vcfrr;R$f%kARha#v_{J;FtJ#U537U*f!_4s76xhKux-NSjV-P z0$rhDAv^`L5QN2q;~|gxJh{G>G#jE5idBNgL>n)vMAu7YG$A$;cOV>VTDugUtOu>C zF=ODf&CB34^X*Jf3pK%$1>E720rR7?qBn9$7#V^O<6B$oWaj2*yt4SIJ^A#kPU^$c zMuk!$Tib@m-_#ViM(NCcB^jU9i*ae{-O*8b1<(b7`&KM(_%QF}vE}lZ&#)gEW+V0!ODF zNE?Uq#`$?SrrS?gGtSs`MkwqAv!VKMDZ#~Va?gvhN*}9#;&dK$fVq|FLagW! zsVE`T)*J_jGYHtIh*$(xmN;!7@j;et>_Nd=h;LO1OR{${U|5|fqVE;zEQXp@MYVkG zF%M(d(axLeRFX5E(O_q4IgMj`EISD!be(5UnykYpX2BA#uvYTxB1QLJUMbuip&UQh zm1b}`md{p=*mq88b_#Kr{p6VFpev1=RNnk{*Tc0MuEP`-DfTUF+uP9$VZ&ryW2?eI z?UTiktoQ{%2FF*$$o76Wz_m*|U6dK&h{msz=%UNybKbWvU}3@JVp5QKT^sMOQXEU| zH+AkEDV?>1L;}+0kAt7@Um;cDkKfKag|`G(51$Vc<4hVfSpj}a4;YfZ;7K6zLZCFM zp#LlH(Wf2rojsl7xfWii!}wS-X}FglnpPf<;A_o?7uTXCg9UM_oyDyZYx7C7i|)3( zYHlVaQb@^;+;%@2K9?r=vY+j5sx%Gb-97SJ#Q{{Q$LyCqy}|HQy*5Ky?_|lu6Ply? zf|d6rDvW(pSD{uW(yLV3;h8%jTxL>qSduy)AUp>b`aVgU2}N<6b;2(A-pnpnyS^Y! zD+R-%r>o$c9x71B)*&ui=nzBpLY;iP9$Alqocg!dca)A z-SL~3{`F88-D}GJP6ZN-@oWKdW}-22F)>&1)IwD7^FjB9+_TT5fMHOiE7ws7f)Owx zCxnUMB4d=(_1VIFoAMB@6UO;I5}!9z64nZFja1*(&8>n1O7Ld@|m7?0-wRkM9^!1Q3ekKxL>~%zS+&R+&Wg@R;s1l2- zekpov&A?Zy84O7h%&)d9aAynrn0SWd4FDG=5UoP8D1}XpZ=x0ov`HOY8f&8zr3g&mdZyW1N&^pWCu)9Xf83z<8 zGIwnZa9Ab4jY2hw1c#F)1C^{-BQ__-A@H-(Y>La!D9(9ROSO`ul?r7F8Bu;045(08 zfEZxvg|fT`KN+#cN1m(eueQf6m1*=$+BpnznjEuXLw7U}!^V$|8u99Y=tMxrBc;kU z-V3|nc3tY)q87{$O4oguBpbp+8z+@RqY`d><6R%liLy)L>7$B147~=i0Q-Zi*Otg@ z$0H@)gZ9f#I@lk?d!dsYSdxUh3l?4t#}&8C%3Dmb%bR)0$~CMW%hPH8DjERpnBVbB z-X#;Q$ZUAJ`U`?g<-%Hw(lIu*)Z|tRge|Me)DT_*c>(maM$%;9Lky#U+q+A^VW~@t zEoLynOC;u&%4qA8T60`G6rETS;Es8cKXBx~X3>%`D zI9CA+L7?IW#L4e5ScP+g!|&nH*4@n;1dAc@;o8aCJf{QBBHe$Vd?2pVnP8;yhXT_6KM z!J4{?$x?nI?@y05&IY?vQ9LV1QZO=5x##F~(zR2C187FYF5+QJr%nxAB0!T4a<~@q zUTMeYenQrZhD(OHkN2~AOf-%oI1}Ki%FjMAV(EGI8QWQpO~nXV6R5VfD47Iy)n-$j zCniXwcHD@XZOU8_c%r3~ud5vXAlJ&AphEpcfyMNw;RSu5j#Dc_FSl`}#Rj9;M=oVUbll^a&Y>zVn|J>c%R7wHY~^n77l|2U+S zB3>TCu$0lDR$*>y#cH4$)E^x)J3nyUSseGq;+ri&d$*7Dfp?tvfg4os^YNIQ$*!3z z#-A+a4GY-(@P+{5PRQL};GhcVt+7}8yDTpK@&H*~O?tPlFFQ96Tyl7pJ4XV1w>7e~$1+vMrsm7D{C#hR$CU3|sMt}H%Fj~DE-_y2) z^abw|Le-A3RYqKBsV5OJU(?>X?T*%y`fn)dNwgjhoomD;4!d`SfDC0qk42FyZW6yr z45ICgtJ=@$fsM}L1(Vj!3)=gMhhsHCSMZ)QFFK|r0Klb}LyTmA#rFpmUm@ztErMIG z8~w*sq}yo3`bhXQV9U`-Oag*kX>I8Mcc%z8K=pm41WmIXwlae|?WFp7SQ+l|@9=$x7nQfJ`6}>d^UI;`FNt#9={efh&Y_V1XNsxv@?iq%f|+ z-^o_DHLy5U8k0TOrK@5Rxmt;vk1|Q|(*vD(zf(#vVglyfrSMP~g|R8WA1QYW7c%0y9RD;jZ2r z;b?v!i?`Z}I)v&A-_OEGz878?CpsPqh02QcZ7)dGd@ zq&E}nXkzHRQqTqatXHyb@R13!UJI{P(+@#ayN;v`Dg*d3EDzqQq#}(-^2AmSa!IA| zNX&OxN;I*Ob$YsKeJjM;8Uj%jp2$O?R=DKRhU@6t zYvF(ljvFeqf%{rds{|L+92<`(pD)XN8Em^6u((IoH>;>UbYr;Q)K=H6uX9!ND9yX> z9#OnlTN)y5YpcJXsT44~+|gunV<4{{dYvgT-b>n52cq2|{a1;6v|DHcsoUiDWBcLA0(s9sfjNNJgeu*%bv-e_y6y?VWL+#EtEqs96B1ITS=ZZbIp3W2@Ax! zcK7Oql7NJ2Cu-S-T@M+b{TgZ3)STTJ8ek#fsYB7PFCWIcb9fjtmwM9Dxb%2SkbJCP zn7k*;a5>3J*m#dbuh_xU0KojGhv6JV@p-)WNQKIhBuaFU*F3gANt~`@Z8#vW*bENS zLmB6m+IasWhR;5$0*jznR(bN18jRHjTa>%!$`3*yaS#eqASMC5S`BuqAmkoz*DWXV z(u#ZJRw)Hd{K(Z;fhj9;MOJnv{nv52o*-^o+&`58O7_mI=hcpSSCG5KeJ`tHTHk%k zR?%s{k@OwKEUZ1tRLs}%Y;3-Y_88ADb(#l< zC|QQ2$feIk#Ovf-wqabq%>GkZezS9yFqH3oWq9SM9lQgw2F}+U^gsrD4E4leLYi2Y z(92Mz5}v#ki`Vh5-nSkdq!IJ@$X^flgEQyNVazdDPvz(-6)|K z-EofvGH932{oPehLxfoz#v46nvv_OfstUXar?OOMQPYi_gy%LZ26 z>8|t9dx=^$mn+^~xi(xi#;fSL(pkvypAU$#*xwOA`3bw)w0?H4s)4EKvzSc+O6?P{ z19U2aZ_xbifJC6pr{}{zT%8Wu3wioZ&-c8y!cv@DtGnJ=Rv@%>x1BL1LIR=%OvRa| zoTt{^dJ(ueKM5zI-m4VA*tjq`r{?u1&B!bgc7_zszpUnFFjo|(U8d_y`y5= z%F?H&-!RhLuSh0IjO(wGdf?bRif~&vD$FIZs$%FCtY<5%%Ydpw^yCjxp5fJC{%MPU zYvd3EQK4Y+H~9q`p(taS=Pp_R8cBmWxmrG90MIBJcvPFg^f-?XKQS82ehmVD7 zb_Z4EBnrYEenuX)+Xx%MHGHqiBbEgDB`%g`-QNItATL2Q=)&=rh+ z`sK%+zwHqT*bpJ6D3hPu=O3UZ49)KtlsFWmXlpTnih$pdJYP8sX>qQWV_ZiBA38FT7`4#l*Fv5h9iZB5u!qk6}bUeLH>H*3uNWlo9>a?^lO5K!p^1F zb&Q(dmb;zZOz?Q>t8iA08WnUM|(D)T9(>^;56_;qciRWvt*>6DfZph0pUSLaMMRkA(IS2G}p& zN0@TJyZ)a1RVd4$(w~?Td;}r6m>h%_TS#Bzz>L|9-kj4d2h&)mWSgg^N~4MScIL7r+M7O*4AiYRHc%(c4$gfDwJKIm~CvlkK*N? z2;HB)@VCYuNWE*PxRhA_be(}f#5{78yXj%6wji)vD|f!32#O6*bHDeogGQA$P~1}` zu)VBDeb!2B<&|{GT1ayJ3!lt8qKT`p)P!qtmzd9Q1-IAnVI_ZDlsL`9SIi4huCTy&9(9{{4a!3Gvx`Sqw zG+wH*BCB-qcA$h)3}O_*=Flr+1M0gVZG}Y5ZCz;uHUsp36}ea*lnqFCdGd2kymVli zBqkqm0KcjNO!Pe$y#zEr4*$bz_6(xSbfPs1G)aB~SvdSDRJIBO8%so7&3G+yq#! z*39f^V@2GczZLJmpkVEXoc8jQe#%`Q=&G-N!wup?CzOJ5q%MF`7YiVQky2}4i*CKf z2y+)XT6L+*6*h;9lw@A>CW(CD^-h@Ps8t1mqgPf+)o|K!1UxhM`+`c2(8?aWRH4N) zn)(X103id&W|VQqRy{vk5O?@mkkONA7sr@hsNR{w8gN1(Vk5~CRYg8YlEjG3;qipPYEHV*`RNh1i0=iVhlhvJ+3{Yn(^9u)srh3n z@7-Q5$9VThGGI-1|tg&{d-NF2_Iw$3!Ks{)o#Df;9JCcY^2V#|dOj zGOeNOL_(VQkwY4Rh_sZqZ_*H7Gr}W!e1J$KbThRkblVoWUg^@)_*;H9l^Uf=#g;=q zdED;^&_y`e9tZqWF7Quhq{sj={h*5--*Y9Aqxs0*;bDHunWaQ0#o9T@W>BVFOt^>d zd`KX*$KCql!J?L(9x)ohLjh;fkmkzSS1hRN+rrCqfm1Xdr#oU7JFD>RwMa!FCehOw zLPBqz!q)EY?!&t2lRB;jox7w)N81Yyv%!q&7;$DP-mazch95F&YJ^3%-$Yym=WKf0 z>G~WkG!}_%1uLmGemV*}JufC)6*H(0Yn+6Km4Fulb-PAmJRQfp3fTk zcO&A&&X*l)_fAJ0MpsIt0%V=ChxQUY=Ej+>daThW^$v2kVClQJX?UBhqNlkt36g3D z4N15wx3-cg-+<4o4^_@~I@X>6Z#bBY%#&NrJ7*Q}`>P@=0Y%=oGaAp9%f;3=(p9=X&7SVgUdUy^d$6O!xrkPSi#>ygQ_He7Q&F=E z#dI=VdvUMt7&PQANaxEEI}(b*8>NTevBk*U8>Bs`Sc$6Pn^T8p(-&t?B27A?o2A8$ zd+F;kH-|wzmpO#2C_H9rl$#uWQOaNc20d+!|6o{+oTo&|B@nT%EC)i#(8FdPzH|S~ z1yWzHqnr%b(n~Urxf84XCcOxF%MdA1!EW|58_OHB%XnnjdZ?H zb&lNf{nL+?m;d6PeyO_oec}9=fYD1*w&kaX843Yto-KLy1L=NocF^j3v3cQrC>NvW zs#UvJU>BAiF2wAp(Sa(#r}jCVSzQvGKN@d18y_TEK#+k~1F9=mvJzhEx719ZAuE^P zhkQta4HxQBUYzz^P`Oiii=ry^1<_E&>@z!z!bBd6ab_)AW=U#w2Gk}g!%?l{5mZ*b z8)d^S<5TU4dDGH9t{U+qPb zRmw^@8Cr*6Tm>fyRV3R9|cPH3AR zJHO4Csy7RK{1g!=%CkMESz)U;k66C0p-b$3|KuC;{ZUgJfxo^}7w^`7MT7T1yuQ~~ z^I^Z(S^x5;Qo%%D@zb`qhlj0VqN|BpwQgmwWw*i=;V^)F$12MT7LuUnUJU13(w_8U zu6v4)&>e93MF5nqEvo{=*P3F=&0*bp{Lz`O%?NY}AX*>A7z7Vo37fJu-jNb)6omVv zMAnyhIq0y)tAy^8>RM0Q)w>hC72UU1@&cPZ7cMQFr}rSR&^;rfp9H5X4+!nz)>gpo zJq7{BAK%uU%*vbAlRt8$kF4la{iYhnC$3KKv*w_?YrYB?5cK#M}5-D~RIYW?ImA9O7Hky)2`zq+pbn^iAXhYED^(x;Ys0OC(}GeS9~L4pq_ z^mW>_yNd~S;ZVM?ER;wK~?K`5`P(Qh{v)C0PVsu_sbuce*S_r&KGZ&?zc++R2Z2$#% z>#BsMCQhE(c_CkRkJOvdGVcx3I=4%=ETzO5QS8(kIWSFmO(j;|a=DT;`S_u)e&|Iu z6ZS)X+qIC*f++}p(I`Y%=-_O@f6KsOmp>aYB*Skc({d>-)1pFUR~9;EMtk!_PBo5X z7f>cjS?6^1dexdGcpv6(@nI5hxf^(W$iVqG}*hyt${3P&K|QcI)AOq?ZdC&QrPA03CJTT28!4CBg>eN|u@|I)sh7 zLx*;ICQjSZXxy8;GJQGAH*%XMBR0b*Hz%(v*{vu*qzKO_0v#83f#<*t6bdM3NH_9u z$6OgDrtBVzJ53}Ro8_MtNk1;(oHbVZX%A4c{7W6*AEx@30`GwkU_>@FJ`@#ki0&6h zsMS0sDB#1!>k--Mtek%<_aS{&E^}aE4XqUg$b7fRd>?OE3p&dZu;@GYK5*D-Cesks zUPN2)3tz$UM~)QJpC3kCxVd$Oka2_qm?l=l?f|58OT%|h1N-U=f(`mjCTugOk50=1 zZviEN8Q++?He5tgJ#mS~3EqR+;lUoey1k*p>5CIz!W7Rg-r=V4>GS=W;UgJ>^79#* z^C!Cpn`;vAF^lZxK+)Z_$4hQpdmt`Qu|tLvqbLv2y*=-wS8KgUX@Xj+BbyHVPb$U+q_JuWLE9I6%1U)It1p;Wd8HfL&`wFtx~OZeZDV{I&bMa& zYc6oVDU#CjeYV}KaaBJJP8Vq;87>r*DW0cPbcPy}ZJfwaVf!Ck`eRZ5BfB}`Kw2qS zUorf``N2Tfl_qDVKf{Ah7atr0+c>;t@Qhy)n*qn8q3>=|yA@`KLiWgu!PPZvYB$>Y z!)6XC0&S!(t6nwF)afF>MvX-{udL4}jI^aBxPGE1vTD!-KO@>LLS*}4zE(+=5IP9e z1YvP6q67uvUZe@bkyOVy6y{wsBkMmVgBNey zn|K9bF!QO=d4Gu>@apHqF*8V#9gaHu^~XtKy}(kp@w;OG437IzuU;k{BNd)~jzT@t zl^y?y+kw}7chhN_hwJytzD+V8h}~e-Bx=~xX}Hd!Q8;mtzPd*BvU9qNetD;CUrbT- zX#VgswkVO{cY*ELbzmbr!}h!eKd5bOUYs=)g;!oI@;BTZHt;?BVIhcfBG<4h*I2X@ ziHc;-_w6oR1xP(699o-c&U$IodT!d$?)FO4gemzR_ctC?{rHME$M3ttA1FPtMCf>z z2b2z68m=u|=!hXqxd^lKqOS+Q2*07b8wDQsTnd|0PTNwNLOAL*z3YIpwUi!t;bH@+ zf6W+)V$O1F*?rLbbesYab{Pa|D>VH@r;K}->QyD}B1Y+W3heA~b*J{+%ybXtHnuvW z+W^<4n3icIhjOVU;hRAv5q1&p}xNr~^*)+WMf9%vhg4I(T;QW~uF6B{h0oHJbTA*j4zzjw{trtJs?22+mEQEL-m zHv$p91(M72G2M{A7=J@$fV3C`1|R%1S_7fLBy~l7l>oU=R@8pJO{!f(PSpwje|&v) zSd?4$wgMs`Ac}}|Ntbkopn|k?qtY$iC8bE$NHZc`(hVv~4Kb8R3k=;ILwtKYzxS2n zdtKij$LqO9&pdmtz2aW?T5Hcn?Of#1c9fr}Rk(Mvv7VmZ>1f884x4`Mmj8_oI)r`0 zdUfsD!MKb|Ww(*w!B6ADtT7o-cZ}#6XYYv5`-VuUDVfl-l}%@ZQ+mAJ-2CMCW*>CkVw7zU=kIpTu45H~?O>?Z{M_UG@H4-$y7@*u*6-s%`-_K0WR2v_eo1?>LfnaiaW}CmV`H z1%{!oa(|9XAq1dHle~IBg7Sfm6J51=!J_Yo-q@SsN6!&kbBXMFAuTB)>gOqbyY?YQ zR7+1OP1B{b>%8VWBC|F@oSnl1gS1;CPeLBZV3LF?3wAT6rKN4hM0uNZ+t0sREH{PC zej`*4pCH-$@Q#C&=+o)Viy4VW%F4?74W(X_tFt4%>mzNAz34YZ2>^~V50yY}g-Vd; zg5l9xnKr)#o{W4~${u3!Q3vNE%+M{w4WlC|z77%R6;vvcvX=tdN8^^!Z*gJXgD|k8N*LPqb47j z#@Y&QQwp73(%z?&^3z`Pr-BZaLOZ0pF=Ve7R94(JM~RG1`VW|KgBBWE$Z>2Hq40Y$ zOuU;P*w4-)ZfI3~FEtdRi%e%ENH+a9?V@4?0^hy{XCb{L7{fU~raI@Sw)J^2#GouT zm+IcCS4y&%#bBklD^yAHiVi{HTCUAP`0<0!Cv#>c1bY8m;s z?EBU=END~k?}pYP%?wB2wMgrdI) zd9TLh&t(d~t?9iAD)!GibAfP65ezta+y^t$ zhu=*h1_xn}K>*s{?y>iEIyzJK-HGEe?@e8iJpyTS;mKJ9nSf?{C#O!i$x$Pekq$jd zhQdYNd(D`N?1YH{q{^S3FK*EqdhT5J+qzz6+#b17II+#+c22%}^yQ{6!Ns2P1@CD; z)x|bddl(UG8wJ+c=^~)#$lpf=-yn{}Nx`2+5Ttvb3}!^iQ2A7Pn&EF4f>g#~Ef)%~czgDH=qvhMg<#-A)R`LE&(X#~*WXRbwYQsK){fY1c)I&2xI%BPcrg+D zSJS?B2cNv_&cdg;xxRyM5Z_w%h{(+`zwx+(`n#Z{rU*$B=9%&v{;K_;A^M#5Tk|hd zfSUOm;bbEhCR(IqEg~+sX_1m!9V$yRE;#HTPZ!It{s$p9Em62n+OWx`Xo> z*s~h(tuU-p(BozI6tx)>4L^tf!iHw{E#(efSy0J{!svCjxd_*qjy!5u#4%X&a~6%So{d1A)!%h=25fUZkkw;sAM<*nGU& zEFw;s^0rD13axHOD975I^*=Nf-FA-h8ce zz6MgPb*2{bD#E*k5|vZ8K93J zp~h2CHMcXV$hD~?trYaoP0x{r+4shgZ$(4A_g998IpUYV1b+o?)jZ#Hc@~08L+zwNPU>NosUD zOFTCdN<}H0Jr=yHS!OZhBHkIeJ$tvrCRK}*f0oZ zX{7J8#Jyzez5Xa)UVi&2{ifcIX~&wuiT$BxA}E)j_RdWAsnti4KKu3GjnFls1B7XS zRH@_*BWFA*I+!>sM^&0Z5P>v+8(N`&p!(i2(M;FeV&=A&vo)tqUUe6%heB)=d0^J4kH7!Dg)Wfp7Gi?jNpF5(MuSDR_!lfYZ07*aCN-BDLPpaWn| zd8G|h@_B!wj**@G-1M-P^VOCT*Jkp%u?cKvCJf=7v%{8)Gl%7D2!2b|#nB%0X4{Ex znRZdgQ<+G1DiSP;lZ^n%!%Yt1A09Hdv3f?3U0TiDqGmozClnMEs0s>zUoq`n39NI{ zR3|EkzFn>fqFs7V!`gB`iMZ~ zR7rY3?QVbXQH#VBWnc48fgZrE6@Utks;5x3gLsA5@L8pC*mebRWxEF>Vk7gqxIo6= z)38+_i_k4hDB}S40HAt3jD~kB+x6^Dl=iiJeLqQ4?>!e5rvv6FjvAZ>jUm5#`F!G! zVq_@a_W2%Ea1B8ni!>G=EP74trd!E$pGov(bps%EayCu5FYJbURy=)DEV%uRP^QVq z8Z56?v{@|5LE>kb-#y+8uloV;)3c0I1mpIh-^HOZro-;y@p}nB-_tKtrw{iXrbV*+ zHkX(4UCAaJ+%~taw;Wiv+(qHS5F;;DGL#)W3pLY!?00gp*!Zas)b^h%SE((f1Lhl| zVxh-XF!$AOBlbYhe17TqbNuI1JHOJcAaHhOa?g+0-Q-gG>0c8-vn!>?-ifvh{zr~< zy)d3g>nJcCm2bQZd-xsD8w*!f!ED4FMQIxGVtO=M0p0635fLXz7dKLp4D^CCnJ%8Y z?SfNYLU+anbQO}|TEgZ7V7zdyxi9Tx{8jU%uqhKsA8e9(Hp*rTq5##E)H8sCry z;1(ls?k^~1czB1UXRYtu748l?<|*CO^;R-Zc3wMP z9|r9MJa)BiT5C!E_yy8P(VcdPG_;uc4kDJTR-4^$)KayB>ZF-BFElkzTr*7888qb$5KDtd!K>9S;2a7sd z6%9iw&R%$RW#v&Tv^|m{&iCx36AqQ87Z9i!L>Kbh%Of%?DlM&f{gITRr%SGPFNEV= z=2a~NmZ`aI*$iax_YHE3QJQyXmd1*Gv!HZi~N zL|PsDfYittJZc0DkV~-I`Mv8-?G;ANB=748Bb2yAj#fk~FJ2 z4trpPxjMa*k)od7#pS!v^67@Utn&Q4uGXTYYi#Ttu}+LcT@g3rvW?2HS)Pn~(h=ys zJn^0xqOChvyS=QJN|dKvz=NE6R&%=BL+UZ9{!F9rn-!pxg{K2gOgc>moe&dmbAOkl0xV{Vg&n7QG0srr@f&X|XRtkMU|PqfgW?S)ZtKDM?g*2|GQU!?Cd=AKbd9cRsn{~VOVus%#>u9y9aSFI- zgGgT5#~|elLux$w6Z%yQ0t-4&QN+U*A&{gV1_I3)3+GOMMC=aepyIBavA*tZg}TEj zFA<{qihB;(FE7Bqm@Q%$dGBqOc0>{Cz4I~ucD)@$CRzXO-P<;+`7_D}{O73-O2@x~ zuc;>6C*G7uxV4wEO>V!{d82R@K_zeXZEpR~8F4ffPekTJDt149#gNX&Cl#?R3A!w2ENZw2 z&_J*Dv<6y#$sHVW;ZH{CUOSr<9F`>#@{OnUhn=a%#2q5`&1R8)ye6N~F*Q0ETlV&& zed=%7Qac|;+U`K6r#bCv3VW(p6q)t|sV>3=(}Zlr3&lOP4Rub#ZFF0n=vL`UizsT{ zAQv)g)c4$v;QsXTm59uD*P0M@zx~#WTad!<^`8!ACf;#Cz9h6FO8rh1Q&MhW*-C%K z#~_f*1g%$a{`+f^R|3=tsR@#;c)Hwg>tyEVKW*MgD1Gl&nRXhw1o%>fF%?pq)=j7w z`GlIcI9K8Y<}`eQ1y<8ApG4GCzWAn3eOTdrN!9qRP-bB<%RK2ysipT}HiQIXI&|tc zQUTRe?(CE$y0hYtU$Xlalcr%H7Wh@u*JZ{mjtHN{#IDq`Yq^Di>5e*0Sx+f_vYxn- z+aO!JO74AMOdSNZ!d&Smi6V#{k~(hl@Ijo=w#9UPBA_OcSN{AFkPg;A=JaC%`zl7P z(eu_Zjh&(C3lq(4CpW7HJbi}GS#0s+zbjwxAda*#qz>06ICK?xRPQ+-<#9Q#%1DrK z;nutCVtTB_NW4L+|Kk2=ylx{%u2i>yUIRlcSBweKRySyI7|`~e?v|>mtFj18dWJ5! zS5A}q;@M+JwLbp&1gvEY2eju|f2G7Akmb6H24&`l;xa<7-Q_f7i;_5Z&x`_>bk&5D z3vqwyN%;o6RI>JNOi9yrlF^eXqxHD&*2(kx5q6gR8d44Kp=(@UZ3w-K)-u?&x;tV# z=F(K7tzA>CbcvkjrtW%7uthXGC|A_hYt!?RfE2G6H%W}&Xv)tnDV#~-OmB%azL+aP z%}CFPQ<~(py*2`uySxwEvc%sFwx;Pv}@~Fo^ji5a5mYnn@8KR^~J$el*hyjT^ z;DELUH<3ZgGdd`;5!by@A&LQLxz&J2&5Mbf`_$7vh_3|JY^6FY*OEP+7Y`dOAH&avDLouCni?Ccl~$6+jeOh183zh6 zrEVy~ombw73i-)FFt=j%cuy z7z~A(6D3K|tC9{G;T>&=&BiiLmn76E?hi3&jVQcsr`S9cGOI&kOYhE~ILVp(ct7Dj z9l1*PFLw*vfHBGqgeQ~H_)FftF_fB@IDLBLH83!7C+?XuBj{!r!S_IXF?v#jD{Qrf zQ8ypiaDRNpVz5sdIURT1ZyS9(>EeQ;kqEfSV4c{eyxK?jYvXjGH#dm=g0c~5LUlWx zoPLUOu#*rYTF~MvHK){#2M#hA9AwTGf}0nEK#*CII-c=rK>DqpWyYbPUd0oT!meMd zlB1MH`g1{X7MlP|u~F#h2&H8LoQ_YtP-?TUUD z=!hs!`p#{sU6TLOlB&NVK&5H@h^EeQ_nK)Al}FArBNE!;wy|5)HAd01vjrP2Kg^S9 zG!uzQ>7Dmi4b|t*`dNFoimXi$!37uix6uQWLs@+~F7g)eV1sCW$E~HNt2u7Un^>L# zuCsTN_*ZS1OYgCfBqcc>efAywWS3y0UBSJS2d^=}3)&cOQaj%pH+qB{7)c`W)b8Bx zfl{QLx4r=@Te))pFN zw3&YuT=F>vgNStdw5uaJ5-Q%AhUGIPPu>VnS%+vcikW*iV+S3SvE-PguY~Fj@g2`c z;Nk5E%src4TXmG=pP(}w_h9h%N-P^%$(&<#V&8S2e78#bx55sh6jnDC2^6**duZfG zhjKG=pPz__Pr;+LhblIoXWU zArJR|x)e^uFrJ^N99cR}UbllRJ1ta=+HY!CBZxfC^V`=HSNR6Rk@C~0>38nj4PKkB zHqCOM*ogK?8@(rP6^WWp@GI zvwl`GLUFaYNN0QrlC5EPJW_C1=#}VpVBlF8_x!A-kmGWtzBTsoukF>_>zu{;5WnKQ zxRsM?`5g?Z@zFzkLQD$nM0R7$MOlZb&RD2UeJQVA4sKr@%^CU2>s*Df@xju!{K5I0aq*X$304>85WmKY_Hy&ZgJ|FI4DUpZXS^on zK@mv5JqjVmEy)f>t*Nc6Njw*?qkSaKHUvH{JaXx1?zNfN?&R$H6qD8G&J+OWx$S@g zE$|W`Qdi3(uvFE@Ahjy!zCQ^#`4uqT6c>rVu;2k!D!9|3sm@r zeg)gf&J#~(}Hbq>Dy>d9Af z_>1L}U&uKp8x2%{&8)YrNyiCV5K?SuL%MqwSMf~GN#A!Ttu%BqvCytj2lFPyl$qaAoWzY4dhgSjw!HOc#Ss;(D1jGX#H2L=6d(}Yrk-3jrA=|WTx!h7Zone0$ z^zE4Q=s{RHTb;LAq&_d-h%UdObnuvS{$4Aep-y9gQo4X2sov=%PVkB;K&f6f&5aim z+$8*;EhlrcF7_T#tNU#TX5QE1NHb*9$}o5tY_iUhE$lX2W$5w3B~A29sn|lWk}qI! z&=Rc~1-ZgTzjM3k2aw2{$#&GxS&RP<2mliyK@2d3eq{gx*aMIkhkl3-Xdq1umB@?o ziIaZikTq-jx&Bb9c*WI`Aa8O-YF@;*PZ3VN4YC{!2RWabpeZ6Xb}^xT$X$5aI}1TU z;bY4O6^=(8(W}?(i*(MbMfaEJzBJUIH5VyMfGZ?gC>+6nJ`K4IDksCH2bmZ&C$JX; z2vM-}Ht7UwkSegC)Hqm2p@+)?%XyL`O0=p`$CYyDE#?ivDxr$UPax(nA|9un@@1t$ zshmlz(ozk4%EJzM>y=_TsAhr+vX#k*5a4S|VZOX5>5}&vY{W{ev9qV}{bA)HBw~1f ze`jq+SdD#{aQ=18pN0{#GJ0y)h2 zW_%r|4)OX1XWYBeMh+7rFS636t)iujUv~>7^9(EOFRt#q<@7C{oL`;xHZ5!1E6sgv zKfQkFb8-Obo7$bG8PPdugE0t>-!3oZAsaNyV9z%7>2qKD(L;vdY-wrfamYCDvzKeR zI&XVWfyxIZe^mnSGLE()1cUKZT9{z9u29eAIJ0icpN%5 zEWtncPYA2!@-VN<@9>zOW8~`lxu(YxnPGknsu!(q50V<$v`TDg@%mp+%WcddhCN&x!3ExyY%D-`zKus1kYM4*n47F(!$QLxsq2PSYKXXAt@{y zQmt0zyxwKHgP5ko7h)6{r!i(!!XG8>d6J(`FgA7ep-zdn{Wey_lXu1_V1z;;P)ZvR z%yB@5qWI;hsVs1igy2)I7YJGh0(i$q83@_*WN%-7)^Hkr}Zv3`mUF?AP zkJ#m;6TM>!-j-?3meX@T*!D^mjf@LDfw0>bsU(+PwBsJ-W=8Q+0fgsRRFwA#jN4>s zEBdUy%o?fbu_PdYH(Dy+sBz9NelbVhG%3Kq7`zG$bm#g5?$rylN=+}0S^1h_3y z50PJEtytB~V7dGeMwoO*VL|N5Km_(l~JIny-*UoHAe2to?B? z_df};`W>*Du!^qtU^9tmrJ^meQ|`-k{E$XO!K&%`SNZX^n^RC&9;fd~#+Qbo!+uPu zKA}z8y0x*CBB$|H<%@uM#}VRY7J!gx4pDp%mEWTE!s0TtCEITv?}EW;A%n`%#*54_ zDtD58d0d3?2NFA|O*eiOsGTq>!N?soE5iDi4@AeC<{ko)L36Mm&nL9_OQu&1gnbWh zm9pvfv%v}`W)EZ`h1P9OOr*g>&u6v*Mjh8v^^-)}EYVVO(PKUB3tuiQU>=X`2#>ma zo1A}D=%TTk5w5l`NU>nbxo$ZGAv|yZ>3<;zEezq16slHd$%ZwO+gT5DJ5dR zstZa;>0xTy)L2_@XqDo9`(5To4tsH5*+_jirF^1Z(A>D5<65tN7AJ2#?`|*xDX1yU zE!7Qheq|J@|B@w^L$pvfY?r%7a9uD@dstFn%`(wk!3DnGp!dzVEiF&6uqd*)Bc@Q{ zlS@gyYe8bJOl)3Lj?rK2B$hK6rMEad6(qZgF(Ca5dfk_SbSr$wtUHZ!&@7D|ofY#P z$9FJ|=&Mt+LZMT&*27PuiafOd1yHjLx{-_V>+5R8S_WSYA>}vi>zz;2GR~Cq?{V`Y zvVbq`G>$qIH_5QWCDmu%ynv?-lj#p2tRkL9 zb5qU@KUj!v)^Y5tBp32ijYQ19|Afd7g0|64n&rD22%j6Vu9(bMGw>vC}PBwo-8-^KBwL|22gW@VlC#m+;=k;P4H9pS0P z-Of$lb9A9vKckd6m$%0xP79szTUj5KTdvN!);(%(aQ&_-v^6!w-!4L~bbPe9nRt$V zz3P}PT?9ZKHHbCfp9_F2757QZys@aMF{C`OP|&agM0L7`PXc8ayt2#O54+slyby2Q zbWIj%N~_Yen?y&+dI*InXw^c55%qN*+&Q#*j;|9VN5V1{*?n~yvN{XK>UKZDaNfF_ zv*`v`W?=J2^1<355YtfgRcDXW^2JYj1qTg9U1^hbQ6cnvzl2TQOY}u*9<^yK$d%-O zBAFmn{OnSNT`yi&`J_78i^1xiI&zJ7m%EHx*)G+HR!s)+7Sr1DZ>{|p2ppU9d(*Zz zASES$hh@B@M9Q;q(3gQ3si6@-&}`XSTH09+=I(MdOK~)wCP$wE_Pop9_f(AV$Oe0q zYQ4=RM|as-t*SDYEC8N{vBV{(A;Xe*VZoa`ucH zg=6QSS^kk*HNT69zo#zS!RC-Ph(;Xz!w)%=4e$HBtI%N)Kj_xK^=|-8{SXy3m%hQ- zfeFb5n93W*e1As?(ezu?^dc3oEU02bT62n$ai;@LcK`KyusV;zynmG6hTZDa7lD$o zy%N!b-064ibNEw}%ZECdaB&Z^M%==zFE*!|muIas(#<{7d!XkZL@OzSv zC!4uoTGanA0-h*FKq43yWRITO&jItFqq>xleX570q^w^u3?kb}T4Loo?z+$?@VU0H*u;{^1|YoN>O?;p2; z6ompH#`WmXn;PhS)-MtCe3HYqe z_sDTvysAFr=o#v0ak5tPcWn!2xHsr9^HNgdSHz!WHjkFSl8eC(N-xMEiO<+ep_2T; zcWjzX(pmvqHL210FlCJP0i?v1M=#LH9gmA{qbOUH@3i~in&?aO7g)?Z&=#ZzzR6(9hYPA1B;c+ zBNfuc<$J{srASo7nGmF6O%JInbHCS70nvdgD&XqLifym2pxpxUdSdc|5wI(tW4A@o zpECa9lb9a!8Di}#v5Cn}nVjYSB5hD2dMhOa7vw2L*>jvJF|5)Gd8&R~B7)v|UpmDY zB#&oTgb8tMV~x$2j~^8j^(wb1tGtR zZ`)HL>aXOM;7t=av7af9kAa7>4QLDT9R1{)UFBV`317?e5TiUE^_ebzo%p3a&95_| ze5<@L&~2OYx04H~1wJN%jGY*`n@6_*DrDk$C;=Q&KX6D4W8v_OUM!0Q_+f$1&OrTL z51&B!Wc}jUE61I03`WM{NUu-~2*`8r2Egl#(@>=tg_)k{1@13h2BG>pW1a@$%})zf zdv>;)YS-#H+$3sCr57Suqdf?3n7oq6T^iVSbysc89BV-bl@42jK(^7J)G}6LZw)Ah z-XHQ@9l6oRk_a=qo79y%O5^ky^HS~i_h~KDf+I38OLhQUgWEON&7Tac5caYHpOZ$z zBte(@#*09=rAH2%)}0qBdKc_AHU0L#fth7TBoROk4HrTIKZofMJDtKHEw3|BlObu`Z!JA=7D zu{HGE6y(G8{P=@aUXft$czEA&Xm2;5IG+QkN72~Q_ zhnE#H+pwx?6;s0fVKhXX|A-{nXlZ&gGbtf^NVaDst^nnVK z>~M~o>EaLeTTv}LA%1Z}yM0kdBqIMruQ%X#m*DPsj*7r;n1Bby=A&>1Z@MiDB!Q-g zY4BE8vd~;}{jlo;5qr5E1d}nV`B7AQW?k3oR9q4Xz*UN~wyWnmYhP8sdx(1whU(SREEuP_S^^Jcl9s_F)3|droHS4s7FyoJ09L|1hRX)094^^`g~1%m*<&US|*w8UhP}Q@w5!93LG^7j?Vml zuwN>m#g<6k3WBeSMFHvZKI$`>D*^5(uK-~iS;xLwob1u~g;Sot&SaYuLSC{>@0_5* z*RNvn!Y)Lis5>!O&B;U|SXxeTOI7;a7e&@!{_3OR&+{o{q$az~cR{)0uCh%QWQ@u{ z&POG~M#%b6b2mwby#`hf5ArMWqlP43UcHr9MPv23$-N<>xpNG%Z!1l$K@y>OuK*Dc z7U2;iNI`PDjiOM`f#P4AMJ*Wo43LGY0%029r7;M8S{3-7&ndSMN3~C8PsJzhCx}QO zsZ_PqC$e{iKs_A=%1clciG&C%Fb4U)V<9LoBC;a9t`^+ve2q^pK!jK0y$qzelD!fluC_wwbCp}UH z6?OEiNn3oivx>?GFbv5wZfk{RjfWLR4%H^tG_F-`&TyRx>K2|^aKC_ud{#X;SbTd@ z0R1uW)kfz*zDh~58XJ+>=+UdiN9!VIQhy(=Az0)bz2Lw};eYM|fVrT!=4%J*qx62r zIs1=gQ1OD9h%~{+cD2XSu@EDIVGr`~-=v)+8_eA25N zj($r0B(?V38D+eHjR*4WEfv|%3Z|SoxzzI2ATcAKEqE16i-~w{IPqjR4$-KEEP`ks zdLU63?wPZ!eRMWy*h0<=Rd1>Zd3ZBzD{N%%DKc?Mv0d2pRSC$_-*)puM{Ft-UEq&0 z_)bFq%{vm<13TTmyKn-Kk`)?djoyzUZ5CK!BTIV}#quk6X_@fYBy-MaP~CfP~2=gHh;R#B*NKld@J23CrzuaE>2n>|a_1D^zYCiLS}3eIKR*j3@D;6ip$0L{ zLnN(CF2TUpUYK3I5X3h&8>`C9!5#-~m64l1M_1GKhyKP*_rX;LaFZnFlebsU3;+i- zW-6=%jOPw9aHX?^sSK@yatWki-fpEblmZ%3Zj?J=9P}BuipKACl4#Mx9-Bq=Bv!P~ zcSSejcM5z_#0w7*h+>#{p!rH_Cx4*j*P>U)|-C!kt{Kr_RU!cymTOEE2Fi7CGDY$#5 zqX9T(S0J-a@xVO^?O)nyMuvvdFVAZc7PdS0iTQHg$Mmy&_bBGh=T=)#>`35Z_@raS zNkb*tp|)8?nx`zCqR3Eb$r55!1vdztaI9^k!^@E>7$0XLeZ$805dP4IoV$F2*;w&0 ze1?HQHyXmMqdBVLH2ukX)kVzg?Gas-;pnFZoy6p>%oGJaRS2U{LCIKaf2MUX$sy>` z>dtt{%x#?WH?H;n{1mKM6#E}H{Tr!#L@~BQ=|)e0MSvf2VTuApWNHE(-~>&G4;XU& zL#S&gwz_y&bxnqqYTN-e2KP*QE5d4ll!+tH-_{-0+TS&?Tv30{Qq)VSM?I3EMk|dJ`5r?dK5IgP zclPMd8U22uJ^=P;Y~Mw6DUX!Bk1|GHvb}4dsEopQ97XzfKrL4i>=8$SRvHV-!lEpv zpVQvf0mTF=R4HT}f$^#PUEImNC-fqNK|(i9xnI1I&WRA#VXriLT8+(TrVE81e25U% z#B;IYQ^pIkO6Zov;#Ex^>c~$zx8zz}8rao9>YDUKnvK3p%qq24DxsfUzy7c_qg8=^ zh}9g@aZL@U_<@B;YmM^E|FF@OsQRDgV9)bEd-#*TUrOo;mWsg9^~yQumt$E}bsNYu zmb+KUCu-Cw!pnwnL>c5SihYxV%&ZHwQj;i2CKy`_?g+a)N>|@=k#l&MgGj{*adlH5 zrM7iND!%!_*l@GKq!{~k$@DN=Xm|OpxRG1wl-DAJ$gI;tEex?zN6($d)^I5NHSN!; z{(%Xys2U2kFqbpn|Na9U0`8$g{jK{DQ0M)Is!G*5N%w)OlpDzV4oW24qMH0Q8*I2~ z+BL>e@E3F>Oqgr*grB9&dOucUR##wBKc%!LIqvesPvR0*Zqr&wexBE=i#D~~@uv3F zOGZqMsx+T+h5O-XGG@k_$ZTSSS4#1Nr5WAQ+TxWD6b3Y95`&;$IKd}Ac7(Y5 zPc_X75sM~WpH)K@?j_S@U7zo|Qo-h#@zus!==e01&8hn-d5^27Pw~Ldmx;jw!;(=W zUh}^kqHKT*EAU|lk&FWoGG9E6LVd#G*1pqLKV7xq?I zwN1sUrUii^Zo}*nd11&yf9eC10u07eK6-Gl}jSGUUzN=JtdUx?r98PRsb6g+I)_lN^R8JU+Cu2hYA6SQp@`C;y^#8F( zuwvQgC^Homat3vqm!OH5mp@V;I7C%cNnxdjnNFBJ^Gka@LknB6BkaRGyJO`KMzi2O zgl&LIUOOArCf}Sz%9g2BsbBpDgi|>77|1O%=4c@4bAX1(HxegjaJY<;PQ@b zd?k@VYn;GTl|&n=lA$9$WhwW$O9$@ee^cA3ZF|ZEbFcNAsEN4_TpLj-)-4a7r@w}oxNK(t*4K@c$ zHuZCf)xy^B;9+W+HkN{JRNf30F6S`;y#bB(50exq6Iqq6S3Qhdco!G>7p&R?x17Qa zvliPfxt_f@;4{h>3k(1&r+~M6sbzQpo1{gl4`LK*Uv_&d#dP-O@DU=Ik3*-tlb(_E zw9`n7=aaYhNr+ShH;>74oocpJ-TRPUrr7ciHe3xBm%jZU+j#{pRDzmcnKk~eO9q*Z zKG1^qovvV>dZ=w=a*%89W>jm>*4GFZZpHnaHuSU@?)R$72n?yJ+5d`ZU;aa+F@Rf8>kmHuEtNEc24)pjtp? zQSB*)<@&^bR4w2es*CB~t|TYeV*2PM@z~eofNw6-x4YeI`**4a?koCr;`2k6LfY8_RTsA<$AqJSHN}0Mk z62Ps2>v-Y!liBJ?d9Jo#`)^2WfX;DUL{AS#MYy+BFoQBD)h3sHQyV*98ze1>X5NR~ zai)?M6;kiao4*}>{CBI@l>jD`^TuwQxg?qUNvM~kJg9$n1+5?KI$|oE2b{MUkVQ_r zC{I^48hg5?hg+0Py5SUU%Atp9p|xy5lA(J}9jG>l50)rT{ZZIrM~PAFFS-Xb9H2p) zM6XW#L*)MBJ_S+xpc=>~27)nKYq$FE z^G_4L4+owW$w8;o5~O?<0uc&LcZp3p8?l2O_fv0!?mQZjJJ<1&O{V^Gm(&DlK)g$h zf~0?RKfnYveqqDyg6#UT@aM^ltgqKJdQ_wFPG%8_PLRHDz#l0`}Yf6@*jOl>n;{_J= zt0!Q;|1|l^s)0vK;cZ+I>dfsvGp)j+$@!REg#o_ zbZQKEumrM2NY_!9ey58H1@G3@&i}BT94O|BmOS@Tnizc_rDrA|mKcDZ8DutriD?>X z#OZDyMBL}Z`D`{7*c{gVvd`eoF;g&%PeaGV!V(MS_q#N-42a4z@Gw+0B+)akD<7F` zC*Soj4wPR3ON_@2TESp=mJMgCP(KAwQeSl4#07qus!$M^vqDTW_ZNOyLUj&_b@lXI zlGc&~>NBNYyjzl)x!1;S1RXd_)PkxKbu=z&!7mb*jEk-%PZsZNP)3PXe0a>i4%lV2 zD!II`^iP>8A8^W>MX^R(FWiOY?T~kNh3^+RiT%sFg2Na<;b+fYku21}%0I7`r2=nV z<{1gU6HtjtW2)8qK7$3^0IzKDZ)1MSnRyjX7~$(-U7-i;osDmysc%hwGzXxRL&VN@ z@l+6*S#>_Xu=n#weW6_Ky9#X4qKv~23GHH+2rela%FX>3kzZ0vXF0H--1mZ5Aa?8g z+L~$InQ-ds9LScB^SHMs_80>P2j}C54^obfj#5w5wX_($4ma>d+cD9aXjC*cLH~?* z*?z9TMxWTNCHAXP%Ai@el+AFGmbJPe`wJVzrt)ajT!dpGNk*T#^nP8B9*_Ie@GoX& zX0p>CY=rFPp!&j1vMeXU+APgA%}lkR_Ib%0`Af>7tf14lOkwTS`gh8NaZt1zivg9*SJ`!1e4A?Z zOWqr0+@OW)TrDOLcK)fdtag_aOU(DQ)@HI^!&@8=0Vi1UxQZ8eusWi=(49nAVcxfK zjQ>gopbs-DUC)l%N1=sXVQjB?w>7sC;4%RVX!ly;yxow0q#U&f%1=7x)2YM55_3s~0}7+KLR3 zw8ysiRgsiM2004M1Y>7+*L3UG7u$l7gQ2s!n`m!oGZUm% z6`A%XCn-IQv*fFjRq{BfHhEUt8QVUrI7H(BY)uwQ=Iq_MR-~}3_Y%xB?U>H!1ap50 zdRU=YrSd=Xl33qR0Ax+Ej`oszTq+-d-F$46l$H*(nQk_~rx3owt!W_TJNxaesfd(?SU{%hp{yeJFKA?*9~8$Wr6E^MhMe#`n z#?ha%kSAJ&?%r>2VGUcQ_u%oVYBfnbVuj7bzm7eRHTubD;%9IBUNmo??CrHWl306| zAT#r~`FE|(_cTNQc0*UtESW%L#$!yQ`9p?$OaQB`Ot!-W5Dl2iIBJIOV11lXLqmhc zfSHXgzCTMw-owMA!xzl?o=ij#&cZNKKa-{?m#7FBwRF2B34E>yl)s zt5AUa;FMeVw;E#*T5wjzWn^$>J&B0@5_p|aJ8BspWfqbjZd4w+-3S162cf^~4glYR zXus~^v;mr<{$uZw%BZ;f)OO={b2P|b)`MMvlQ%iqn&E!=?M(p3@(ycEyC^%_u1-cj7&q+{mcHC;Wuc`)`}{-X8&QTEnR zQLa(@uz~_20~n~FgkmEh9nvBQ5)wlRh|)+%N;{%pARrRb-3)`kfV7H|!hkTOgi5Ch zLktf5_M_*#ujib1t#5tj4;CjpGtd3(d&jk}eQlaf=bWM9l9J5gV(o^fhpiXC{01h0 zFZ622vA@a_2X|O{?9SQyLC!@mT=e&s{p+{?fsX%1L~?oI#o#AnI)8b$<0*3P?syhD z2S-Q7Wj=0h#g^7q;Al5TL`AXm5f1g~rnOu0&PUa2&Mvhu*|knK9L_OBuc9{l4) zc&xZ9!u9`){i+xvk0nK7`1N0>l<%;!x6ib*k2->r;rRHV)^EcIWFo4o|Gqn19na)^ zFdY#Qd-H#|!7#g|WFml*|1^1oeGYH8(?Ur1f6f(CigbsgyV_HJdk`Htp1_5H8nu;$ z{=*-ieu=ojD&~=3BM=$%>rCXVcf!53AS6i_+xHfR>(Kpw9URO#{FF&P(pRT1T4=(n z{uK57)y`hzA?&sNUkxTp)f^8zln38|B3Vvtu%wm|H9<+qp zRQRpFB6;5lP8E+<(Yj`BLql8MMf=6SsMi>wU8M)aplSH9rvW(#E zFBic_F!U4t!wsR!z#*rU=yM4w0=jo7E=cHYyLR=Tc3+(?kLJH2a+j?(28{3ap8HY;0`8 z=LgG;iP?c+r77) zpP0F!60tFk_b1*9I?joAUjM5&#kA9P6N$}b4ufM;o#{t|R~JXjU_$mRV=%Xc?BRb~ z6IXaG)${>66PRT*EV+@}og{t~rbfZlbb0<@m4Nagse9@TP3-z%Q5b4QT8rm6F|@dHDHbY`d~{E`EXe>OT`%IE{=7xyqdiTjXG~ z)-vA1N`X5NbPKpjK~InH>JK}YFdWf+W@GXsPZku@*=X3sol`#fZ_Hmcc@hY20OO1V zKBwCCtOC;-$uVwZfa&Pr9SVx#eZM_QiuI1=^6;=D636029rnhwvb@UOyp*!})#lTy z+dvfC_sjcDd0}Q|>^f!H%6NErqgq;2n+b%)^-xGG+qs-So%75JNZzsKVPR#J#lU6} zeI!nBoWc4Op^@yFO>sBW(YdMD)q`ubpllRFDhO(lJP?BRVkf+_vbKEW>o{2s9;B^3 znER-`rhRqo`&XrarvFTiq;O;0U{k1=NXy9P;`aU$S0Cl$zK9=Nj+486IktLB(NlH2 zXirT~u)!yBZ5XPvf;+BNF`49ZI^U%#4& zv(HF7RuOQsylwQJM^630y0!POlj5Cf4cny_t6z&c?Nu9vk?rE!UoY80P;t8w@a8(? zx^REry{;X;lTLUhqd8DmIdgVavy@_EXBPqc3Dkz~d_~R1oViCR4`}tB>wD=!A@!=s z%gcXj+_h0#Sg278>bVA@l0jkq%jtqXD{~JiCa|OB0%#4ntbH?|T>^`1saYMiui08B z1UR0ft~FXc_5NtI{wu(XfjLS|IE zTl3m8?&lkv0Y?LGP-BiW{~BFi8x2J7tQB(a{p{R?68pq;(DaVEDtfFdz`zeArFRQ_ za%tstd9(B2jxw+322^bOuR+1H=36V*xXj8fXz@_*wq#Ms!Qm-a3t9zSE!nP9z+Kn@ zRN;DhGigo}x?5UW#^B(Q+$njwF(iX~EeK?e#W_`UeR}9peqZ>H`E)*Gu zZTyI-JJMG+QVr6yKL`PvUBjiO^Kv<8wqC8=p=GfJP~ciru1@y5qFFPuH1+*X!6538 z!0WuCPdcj;GXFY8c1Vy|W)G^Cl$1yXebGVgW&_pJr%z$JTCq^|Zwuo}1K<4c9Q(p? z=7FP3oPR|l+3lzWn}^xpBrN*xVE1Qz-i4isE@&NX(0t0n&CIzSOHa<0rCk2$AD}Dt zLdvrcQDA#ClVBnK0u~~E_}DBnBjodKRNiZK$Wu`=F+Sd&;_~Lv|El;Xcquf>g zfOR!pvlzC=)ga|=@#fynqa4!sm!6BJ>kFQBhhGhWe7IMvfVsl;LH~3X6MSX%&;h<{ zr;Q$oy|Nweb@H1vcJNoZMXMm%}&*+fn!gx_b?Gs*Hq8GV86BOqlnz?~4KZ`YFE94W3hwnm+_yO0Pgp+^ zBVymP1KrbU3_vHf@UM|%03F#VkuWLv$EhJj8K~($r1^O7aBBmt{WlKG+Af<1(k3p3 z)X5%QnenoqXH{yP>RBIz`mx-lX{@GWFEXNg3jiu>G>O$8a`ghct~WJ&=gyTzYw+{) zGYt=YU98$m=Uz3`(`%`&uAWl&{G@t>rtg=1U!29MHs-{PPUywx^^O$wK2A_lQd&`# z-W-7Qv6cj3;;?3raJFI3Ywfd@6XoZ}31zR4&jXC6U&s<} zBe15vDIX*;XOLkia`TBlz-DG4fId9Nn)c)u#|J6SHxz#_+kvBdr!SYkBn_g3n0TAa zT10kwK1d#n;m1?7Q#ZXoY!WD`?K#ZGR?rd@NXrzxzBFkZwVmL01{;~9cUfdPdwa#t zpT3=3GjshVmJK1SY4R^u;%LUvI8z6`qZc4qWXU=#dh5lNWSJpyIt!h&MkZ)O}GAkw<*9*w(07ceh+SlXmZ!?p#5q;R|O@pYCXN&$q1`@tS0xWi#6O9oG9q zLmX|j7%X#$e$*a6>^e|t+jCpeQQ8_jSy~jg$VG9BCgzGCEj*bucQeqpdMXBLe9HCQ zwNW6vX{~ox8a5;-SLL@T6dvB>&ubmgSIJ4f$Uw7e42{wSKhCGws z!+*+Vi^STsK}eM9_12KAtfSG6;Wu-nbbhzHesx3Ib>hk_Np|zAY(`;W`%HZMkVx;f zeIE%bhd)Q1m!c1(NyeEukwZ#*)7Z0nXYqMX1HD}p9o9y5PP%$}hGx$}`|)McWz^%@ z-aHxQfq<&%-drQQ!{=|@Cne1IP^4g1DY>^C-GysTRSbT-xk!adu>s{q`wmHHy+z8|OeP-)1sa$EB=S!)Pxiuuv>Omx*eJL5{duQy<$PKj>>miB zh#7V}-@Z8Ja(+kUX=k`7Mta^PHxz0UcH0!abvCKK)?~}JM(!v0TRnKEAVW9Mp*2M- zyC&bsd?#ZC6dg@WVOx+2r{RXMTvqE%`@8(rwncNW3LucBd-v9ra*>prR3+3)TSy(2 z#>xgAONKp9GUv%(#2Vxr?S;XRx}LKbKl1XU<=fe-ShG4)e^S1gVWU0C0z@GbZmvy{&yeANHgJE}zJhSK46PjWkDnlb%yuW}9--Iy z+kE*5AFgI4&W3o!0d5UVfXPh4Y_FxGqvN;nbpMg4+d%>BzSC-E#Z+lVkGdV%;wVkZ zGRHtvR~AXxianKmiE`7}@?kqa2q)%-Reo#roMlPp6KVY}RecoRPs!EvJ3FRZGn~Bj z)0!va$Pf9BAeze}beuoy#43N>vYT3Nl-;}ydIPn@#oZ9i%$jITV&lVi{~Ie{26P6T z(N$>yghqNEakE0Ie9+yqJ&8D@T~PJ>Pv?tS2eT6Ww0ATDozbO*lp;6yQ!uAY*oGP3 z+FBw??%XHEKH}_Aymq5MuFL~Cj=%Tfb81KXjt|QN&+Y|PZh@raw7`z6#vSD_1!=TP ztNy_oHE;XtT0E{ZoK?0RR}`Iw4BtwLyX9UY*If1E7NK0r$JvPxSK@+(K{j-gN9(dn zTbu|wNAT4Mn@o4n&2KU_!?ZHrwpYO7AgY+qEGO@XAZMrQ@0VtMu`=uFoRp@#7F#o| z4csamdzq&pj*XtuQ(num_i?vsn0IZZJxK}A=x9{q2EzY6;&YVGAWgG{3!uz~-?kGl zsuR5zk4~fXHOg4&-Nmoki?nYn)|r(GS}F6cc_;3=KT{);U?Yb5VrNh+h0XuUz;r)4 zIy&gW(m?h_#``m?qNpQv-y05Fk9FZXw>B5I%Fd>EkoxCTxk~e0T^qLl(lYrQoq_Nm zR|PQmuKQ&h&WLWzJ3S}~uX$C7Lp@Xksnpb|7&)6|tAyW3kKC1=!bNY2zn?!beuK_U z^;a(fM52Y93(zsuYhRvF53U^EnC%)4UCtvii)h)3VI#6XpRTes&{T8}q(K!&@9eew zgqJKD;;R_j>ou}5Z0*z{M7Y5Hv5T{ zyjE_y3L)ybu&Ag}Z}0dgeDMu^W9O-lwU?BX9^ie;R+M6L%3^BDWqb9p(K!=FiQ0{a zj}&*SCK|14$I~#2T&TL$FBp5ltN0pdVfXy_0b#i(VyM!$obM`5y*|f?q&I17oKb6Q z1IaCa=~>K7F^P@7OtFzIv^%B9uU3W|lWIaTiGB~n5Cbm3z!z<357iAvs<9YIqx51$)yLDI)xj|aW=EN0mJ{xuKSmq8d!h-p?BBhsEsNuUeXZm#nZ@L3OQu1M~@mN05&pJ zdza=_>D#m+8FFV>OM-;!T-)n>ngroe&#bJ^l9V_i&eBA6$dOw)G?D;i&`~10$m#4x zo4cyR|mm<2^M1FTeH>oR`m=b>f?@!W>s#Mu>X~kR}srD+VY0b;ac_ZgAveqC* zHKJLnS;=1O=5r?nSAywy|Ky;tynIa<&6iRtn>CjSHk<#JI}tF2yp zXdKNxg5>PE+3;^2nclvWQX{+W*qzqhV7}I-GkG=Ud(Wn=ajkC!{#+&AeABg+x4dbm zmF@ayR_ootqjjScHfJJp&QNJ(4vi09X(rw%CNi=w*qB9Jj|}pP``%jY>J6nzUAg_nES>Eql*&Hy zVN^J>pJHItz&+~J0Z)p|4gD@6=$+$DDFdBLfV(;QN!xHqu1UI;TJ2F9cOdgYpL|znS2meNYXa1V483ZIcrGicpI#$xiQ3NEiFc z@Vj`v!Iz@8Z*j1kKp(Nw>{=jeW%c)WkM>cU=ZzA)01GoYNQb-FXZoO{okl^#AXENz z9cA7rO>bk)0~`=OcQ_~cLGZ3EWRZ{yEG{t6+u*n}x_!gVp4A8S^MM#@+*Yf*P{x)Y zizS}JduI%}J#sP0yHGtXnb6SqlI;4>^{?2*c0*UzZK^2s#{$`N91=w) zUqAxtli9Huc>#p`Vkic?sLKv)g2d|uXbECVI&4x{qzblQL&s<^Ingq4>_>GBV1+PR zCNrDHBjjkm$8OmQHlB^F9CYlE+Os@HF{;x@de5k*?NGpzt-q~4L#hb$iT-b!Grjjs zUW)z{8VX(MFU8%?lC$xgY^Y_z{mWq>Y#XRlC_44v6_|Ge;{Q@>j133?2-hk-*_|r2 zGye8ppzZmC9da?~FCXP}z3a`&>meM1AuM#tIsfJ;?Cow{WA8FSjigEC-`iyF-f@iz6rXj886?6KRXKKSDN z&9PRq&0_q;3Yx9C1845q1Z3$Qg__{HgNGF3>1&KVag7 zm4tH6f_M1tZDfiXJvAI0k1^vD`{b-RdefwbB38GqKDzXpcF*vR5!nmOdD~5}f^46J zwGRGdm=dz46&DG~*W(%i@Nrbv< z{M8x{Plz2IYWy|2$VwZ=jd0LG8(rjPyG~rx^oSZ}q;;ODFO-R2!4vk=%`bfFTm3hG zoeLS*h8GfGCl2~VH;|Fn1COu4uOE?y;c|%vm$0```)_QNi;qfo*RN5F6h+LaT?|`c z*V*LHtyblp7$oxnj)}G3g&Xha)RrSK}qfY!u)%^95&$TPibrGqRwvIDOR^zz1K@BX%mWs6jV?Q1z{hu5nlgRtA;Z z2)O`E7JG87S<_#TIqm74PC6;PLN1!nowdCgfQn1vGs}GJPihLh?@VduE8CGij2<{b zM_jrWGglU7&(ECKnw6hUm@Hw!SL0iPsZtm46TmhGL&o6+Cm)=NpXmH- z;u+?Fp^BG_^}rST0|vM&w+uH0;_6nnGu)GR$e`P~{T1+QMmm!5SttIP@m<@IvzP54 zn(wh(FjeJ|@}OPwS#K_5HST16iw*h-5tseg1z0>WzB1@k&X+FRZ3uykWU81YOPSW> zrjdllMo*Q-*I3l>?b~eP4(qFWU)XY}@Ak}7e?muidJrvMJyB9mhLo$>44Xp6?9DcS zjsA{4)~-*uy5bt2ee=3aOb8RB_p~5sU{OfKy+hW-7G!rIT=26gFgVTcRN(aeCU02b zlIi{`h)Lv|q|2C!eY@Mb3o2yuE9Vy7H9j%8_=i2wg zLeoR#8ZPELv{mF{vU~F4L_|a|S8eq)vG@B-PwVp7ZIXNI7qmU2Hwy@GK87rD* zfyQee=M!_8^CoHaFA-nbM|G;m3!%K2WZbYA*y)nHpAd#B<&8W>OGE9 z`wI_$rXYJ}$EZ2i&`(aX3&_F^ zCB~21|C>b*?fzem)#nDnj=X^okkJv>Xu+|nBaT(*ACA?Lid}CPvE^3fIZ}~%{TGh_ zz7RP{dYc!>7OSf%1KDg-5o6FGNWGFE-bp`X>#UJKVN0iz&o{urMC$t%9?#)}0MbF~ zc-y801TIlxu3=Iu-_2lOE0u*y zU5VAxH1nQ5vB5pN-a((~0rpRj`SzN+*nJkwlY;=vEhl2G?G-nrj#mynvg_9D5-hCk zHE5iX{Xk;%nS0rI@#*}5P5h0;u;ogJLD5#3HGB1~%`RN)?XL}n@?X<`$@$~*YPV!J zk6J9&?4whZ)B3bqN%ygjZa#Lv%svs@W8#T-bQnU<+H8eN=4sQW*$kz9Nur}`qT`km z-L*?$?^-ee<0CQoDe;q!>+|Z`Fxp|)T5DOtiD#}Ot4r8?q55!G)`Xwhct>mqW#@sd zmz*C~%`^*3q%a*TD;`1?bCL(8tx*rMva_EAH8+NFI`KVrqsXbMQPYahZ+ju{hi1^%-N== zz}?c?zUSN7lzJXn%5qm(O18Zcs?Si-q0rxt-Ht&MtN2VRSh4qR9HY_#o3?2$Q7aO? z-o>2g9>BK03hvV_b2)Ym!@!3o5)a|%r!FHRTGo# zW`Us76q@8U!76lUb|9Cghp2$_Y>qgwkdnvO>(4G@#Dnt4RuTknmEOKINf6UiS9CQ( z=>)!J%j#ZL0^#lX(s~v;;_I(~uq_OiGj0?Tuah|J^|aWdhuDHjX%yVK-FseV(zsyN z>(d}nYRPK1f=`r9TCAAlFz(Z%em_1wKCz)u|D6Rm#I6kb#kuF@@__4aGoo|xlF<@);?d7T7{zSQ)q>(6n)9J#F zSxGZLqQDfiG#osXxS8`7P5c7N%gQP>6$8+=N`@2(3(9&1%QL9!Z!D>ulJ;|&d6OW^ zeeG1r>iip8PGM^w7pH3*|CYkza{J|D6a#vTc2d#ZR|Ll*zQ3QAijLvpcFF~F2!3S> zr)I+K_UB7{?=H!_p+c0i`0mrTLxJ+6=+`{-Hq6v+n{P_gW=2tMY&2a$sj4>1i?qr| z#Hq-h8k|kyTf<)aIz~s$gW0V%zq7b?YfaTN$b{;@2Jx@5*0srN-c=MOkrc4GZW6z_=g_!fU)`+VwmME!F z(judI6xt)scd^<9BFuRk%Lkge{H?oEn`%(KGS=-!Dz-K^9Ns9*mKlB59SJrv(KpV4 zD{_fPb!J4(KIiI2jR?gjm*rxZ)PlHYrj7}&syBCVdZU-9apC*LSPR`*RQGc2E70I{ zPiLni-n1{$S4<_>ej_f|tN>)%$)HfxGu`Z?vzm(0$4=z4=wRE}=!lyO!-r>OV*i)A z^($kh16L0TdB^bi0to$|k1bxB_(y zmRh~@uW!Ih9i2w@fapqkoV zl!QLqZ5PwX;ZwkB;hC%@cJdgUmd?kHRP;kUBc^cGCfRT08Gz4|RxAd+xyTD_M?kA; zcsXSo`B9RvZ1{@MIWi=q@xdODU5sW&T_n{S#iK=uEn$-Hs)9_A#A5Y}&ti@K^02`m zbbQ+ELd|@?KTtl64j4J&)*+uplqc33cfEeeNWs>ZSH%@dc`w^6u?ZXG)DBecqa)5Q z8<7?>(CQ90HXVG%YFDmAg13*|KL7YJ{h(m)70*JU7j?9S6e%;j1QCQgqN1WK(cimMOg-bEWTe;@ zsjp@R1mnp!i`4UJ>|d$o$Jm|L3uakG>va!qmMWy9HQYog66wUtA|aXT!PLE@W;yDL z*=jL-B3QR%wqxBLxoF`9HFca~petL^hYuejQya8ab8~aAR_v(3dEfF2$T5NBo3Jfw z_I@c<4&!dzBFesNH7IC9`0iSdu~V$Mx=G=xV(`ONqOeLOV6sb;!qm=BpRRSi9`tFf zfaPjrj*it=9Mt8l$|SvD zyU)<@vBFP$lBgbV!1j;`aEgCQq{%+{iC?G|OWf$Fj2+7 z+vb4^_ES#ODUon!J;r$Lcv)&U^)*a(L8c3-&Y_xENU}cWu~T>~U+*AkH4yKTO~Z(H znPZfiyN=$dUZ|Y?q^H>!!pe>8W12JFZ~dE<_-AMMDon!xjCR&Zm=QF&5UFWtl_|u! z?jcVjB6D1bKI8a+49{-6;G>0+;V-zN6qTFggE>yDKTtaAI3$%1SRlJ+=xX z!$szS6``);E~`OT-eufHpC<||0#C_dGFwj&?_G+fC7OT2-^0HmCS*K!<&(WT;cGR_{k8ad?0DF6fbM^7Pn+m$IrrU^rbX zA-?~2eVj^f6IEAPDQQ@A9aCCfJ}7EEb>}dx5RCEe>3BW*RBZS(tbU6&eYUoCr^F=# zFC;B(!Utj1^^lLfY}ZSkl&x=x=WhlzhOZc*&;e#s9g96>;FMY~pGvftzwu8CLQa<^ z=U4qky^JMTa(B!knG)rIGklc}<()TBljMI z;Y-;H)G;w}pz#&vnz3VGUyK+9nr`*3bEee>3*g>t?d_M!`sUQs)Sf@#t5gA&tzTjN zy}o@0RUTMFN=a^Rvxf_L=RM%7T>^Ava$y7l>lmzb3#tY5dD|PY` z5BHkGQqavw*!Ys#B=c9Am$FTVQ<#A~?6cSm8*?&%a|taR3)9w?F7AXJ~Ka3)VufZF9VKq1u95k<~%d5lz+`kATS3^0!GT64gg3v#S@azl~5^V zrEQp6WDs=OM}*SiDVqoWVcVT=eSGTX@bqYHA%H_+?K-bjY(~o-m-m*-g z5nk1bkmOJ`cK`kkp-;v@zXyJa)#>gsDzJ(_dT754@Gf9n$OrHF_Xm&iFy|$EaRmJQ zu8l??=y}q8^$>t}4oIVTK88M3lyUF_S9(jol`+%b|5xTnI5FDy?^NMa6QV%?pCLziynREwE74C4GY8fzKclL>`DS!Iu5SmSu9`NxBLO_x7`}G{cx1-Gh}GlP{yl*{|(fo~$eX{N?%c=ay3) zsT0ZHIHRQhJ*;?FF5q_)OSUGt;=m3vGPhIfRxYj&x8nqSrPL7={D^-EsWfu9HD^;4 z8zDuHOHGN3V+(V=tg0IEkMqdD)3f6$k`Yg#xihR=qpQL{pDe5&uE#M@s9*-)lA9yny3dq;fH|9g95hBGnTT_!jFcTjyFP`tWuS{X02SV9pG}h<@j8~NmFLR^0^Q7ny zd@v$er%*I^06rK|E$nbQ|BnyeGc`3OK&=3`DGF-iK`-0W!ctPk5JdUb*VoG|Km0QO zW!~+S#=^~lUfG^#xHH_BLc+g%xnVEX_4{u8dFTHBm>gHuj^%*6u-E(~kA7h!>ab{E zJDe+_txZHRm5uTD%-XU#Ca8fXR?51t6p!!clM85=b^dN^Yg^`T_2*0f%Lbf&J-WA# zSqF&rJVS5nrg;9_R#;H}1W}dRT^>^of*RA2|eg?VR1MSp>6t6p@6Wy!iJ4to^e4?p~ij;I%(Q zWN4bm#hwsw>)@Ly)|JB#v6~Qp5qrI%AqP7XvDgW%w*WYDOvZ$Va{-l25Qta`sT`7S z$g#fUEpi-^G<@Zp3h|-ABdxi)SrGWeOJNS%|8|XtclzrM+-3T8-~FmZroi6mkoztm zP^Ap_od+>}<3CNG>*R0Kw?K#6J36k2E5m0V|Mi*Y`HO73PUhz4KlfUic(fVVODvVN z@%OI{VH0`$`HRWv{~9}_IEbI2uDxsk27U|~g+Ep>2U0>bcYm3j;6F@`<)60hm3Cht z@z@8XFnh_Hvejf#>6W|R=$)lYi?`eZ-WZ> zWl&_FfFcHXuv740E@gA9aF@z|U1I)!JlH|5{cKC+5BDLXDOB`R&foL(anTa46Ds=p zF+P6me6>YIS_mR#v>yB4oRe+`ydy{`iWXUVz;As+z#-fzANUo6h>|S(z`~UO3DhZ? zbj4;_>*2hv#AGCBi;$ZflDIcH@$!ot<6EV5u5DVXd7(x4!alKa`s% z&YWp(9B_-LYM4?=d`c1&=TW9PuX@#Bct5<=w@n)GR=52E$+G@@t5Z5uZ|*CQwyOYZ z#lqTpHP`;D1;SX}Je$Il8w1`1$TP(zX^aQWu3fvucu@Avx9fv~|A)80$iaEs_^`Qj#waIf{MPU6RY48`(W0(?ca&e4`g#PaL>ICoC-7#P0d&D0#+?t+-|^LT&BJ zyPd@({LQwrxd98e`-|?R-YPgh{Dd8}>u4_fY9zfo7^6D=bXC0Uy6Ao+;Mu^^UplTL zKq;m~pIpy|abTYJ-oLNyvN=XBwF6S&6}twh0G3mg7hK$j?j56*9a< zuPLh|{LsEnY^$WK&6sNZKu_~Y?z`;Ci9%esTd_oe?piDLyN?R))9FD~&Gc`aE<0C%yPEjv3qK1$KgN!mHO zTb9Ic>$`bo>);ix?mA6oHSRrh^HY7NXG7AcZa3IyPqW5;G)|t!W9_4Y7i#s4;^IH; zB`@W|fM4OOFZ7B}64^O7uUeLa8OGE=cvR~dhnj}jO2Ow@_Uc9k6pz4)@GIh;&PR)hB$UR>nc2*Kty z{_wG}NG%O)4qWYHG8r7n`_C3$0;+O5uR_IeEAj^ch~;>p@#6$tK4JB z5~~@PpO1AYGR@=fx|M5uDt;Dv#IyNCjDdIAl}&_R4!xxQ^Z+h5#C7xi)VU*s{7j6ZM(nX374wJxFc#mLET-8!1hA7X{d z-ESqv0o%<6kH-v0o4GzK*xIxoVQAR+aEJOaGaboc|5yYZmT|9W>maV~+=%byBMS?w z*wl_6N9!{(3arq%3(+`HKIyRsS%t=0_&m&G!(3K&N^ETn1EYK>L6tb|e zxImvl4IrQVd_whJI#RVBAP(wOBsi7h?_7Ro3*=NefmAKOsSL$^OssjC%#Y1K&z>fCoGR5m zp6#jJl-v43tLBjP^Xt{PCHlu11vef>vIRU2$xHQGe-N?v&DHI@?pLl;GzxysihNv| zruFabd;l?vgHEq;ZtfOBPd~xKqh`Hvg`0WCE1wQL&yJa+%xo$T$N%!BI@?hXL`6kg zW{4ooS%zLd8d-AU`0 zKTwwTPz^S|-kGLkh1X+ef68y-WIlZ>=lOfns`T2~Ajaokis_rh?xn@{OQa=lJt)~jhbpM>U+^scNtoO) z?bLhPYY+&%LaNlq(#Xu&Tyg7hKEC#HzYyM|a6F3t$MM|U&Tf?jZUV}@w(B|NS~-kT z&!0UrN7ECpPmR6_+;~YB^J}&(=`Id7eY=*Img<7|L>pmrxJvp6q&@#gxiS7w-Chted>AlX)svZo|{8`LR9!N}u|B^;OlD z7wi|v(^IjCaiB3hwI`SE2%TTw({4|D&Wt0$jf7% zz7aV)0eQ#i`B1yYLKcGfSB8Fv^4hPLxw_pa%WC%04O#7(+mGqEo@ww~%ns_~QThix z-Q6mn(7?*`43FE6C^+RVLUdD(5LejC#+Y0n*Y~HsKPt2J)77JsSW>$WD(w%C({tq+c(CtJ zEK4Rh0Dfzga(RO!6wD<1Qwv>q?F^e^Cv%v8gMekr{?41{42v&HN=YSF3G_k?U7A|$ zd1=+g<~q`D3ANjVyX_Vr`Ihe=v$X4FKxhMvgbU;vci?-po=Wz;Vfv(Uy4p0bayl8h zccyNK$P2nDT?Ct2%8Ie8iVt>2et?^7rCD!|JWK|-8q}Vyt;pB$k8`@;R#rx8aHH&F zs<0Zuy`MBYv+L4{%l2yL@+03E_V@6GO+OXk$rz`IS>9}Ona(lhHc>|jiVGR<4H-38 zxSeZpMO-T)c%4z&XRbq8c_YEeGV%Oe8KdRMRehfLK_g3NQ_S&0^=YTj=*vABXZAXM zXf%3qk*joA;LapT-=c8O0;Jn36xpuq(zbCRJOAF`-S)CF)1(0KbAT4 zG4HqF8|E9`S{`E_Q^4-syDedQ(wwv56u?QQ|F|y5?MdPP?SFG*Xe&qW?Y@}YYHaM~ zRUuK}ps8TkLov*rgp2}L{p0ae(e!2*=0lC! z-2G@=1z`3?Wp1CbXUbzh^CB6Hj|MVD-wc!PNgwG?_18CXk20KkTQT>Tr!YLVLEz26 z0iZj3e!3kj;Xolkx760Z$9&#Z!#>9y;-i%%nxar%m$khevcwUFYMOlv#HD~O%IY}u zr-WtWzn3q<5_O5uyVPUhij33fsc!sYVYHQ@TMNOY)-WX}f{Z1QSO>O4x~UlvQgdp6Ox=FSw9V;COqTv84?9oHhM7q|&q8I)`MH%d5!Z-I z+w!&och(8-#dHi1^T&p^)MLC#s0XD8!tIA*&o&VDQH)l0;pETa{PyR`6K!R@D*d4^7;_388`^b0FW$d-6evlNdiiKCfngx= zMkFN6b#gv|^}EuG^cXG8=W^0ez3zJXTT=nE{dkHc2^L3=^bz%))H&&<15tk0(~q7A z3SZ5-h)63jSKqAz|2S$=SCdEF_g|60yKYF*Br`?7L#l?aW>toN` zCgs~Lhhlp>K0|-c0vg90+jRprx}Lplm)W@08J<@@!Ncs0a8{9VTJ+X(S>j3sRch_o zOuMzKJUKM#L>2s>x#rrOMqbD_t^1$7XU1y`7gHB}Fj6{$*`BW#F`73H-v4f+vm{CTRUXzl} zASmNX-z|#AKG$0vKIV{2pfAny1J>NzuJ-41XO#Okd~EsP6^V%OjI(nyO9r%iN>}FX zPygZ|e>FE!kMVq75aYAAU-mY)w+Yd|-*GSnVs-P#%gRfVhs*tXDkm^f7GGN|%UE<8 z=FhEPa_%3XVU03+4tzxquPaWXG6V;TMOG`C%7f5SRy^u3O|PTuqG$ zU-dVIFli)BJ%~Ld&3qVY{YA+?3x0pz6vdhXlPYvH464b5fAq4xN#~VKw*@YeT-CMgZ)4fLP|g3AjZTCr zg=fp-X{jIC+>@{V(@8JbeDi9PuP(KtFdAPx_oGCq-hIfSUzwf%L3YB>P+NVO354$a z5WC#PS{aiAA2wvpP39(VSz1mW(o+nM(^Gs>jz*~yn)YK)&*bl+BSji6eH$uXA=xJF zrdob?FuJLTHhHD8Co8!}t-d>;b)ekrxq8D0D!@TYH4o~mbL*!z`Nob;r)!gX3C*j= znI&Pgu>#zm^vZ($t958gElt*J%5>7FZyIT6gkFggJ~O4-QRp}APx5Sm^xcv|CKWn{ z>9eQm5OkEMe**jQv{6&@0Ns6!7#MkPRlPxDN06920-7K%uyxr&L zh{{I4W7T}Y6Do~a=P^y$d1+nv>p0X1dpS9s&}X|Qb%x`DbV>)ZN{q5`ayjLG;u{5+ z4g^)<@R>V5d3Hj?{&l^6*H<%Wj$V?#;3K~q%jXRv6fb(m2SmH&a%8f*QXi09Ba%v+ zpPy=le1Gxf6J)^Q$NPh3cb4s$opR29sG*S&5h!*3tYBE~nAqq&aC;O(+k%XA<63{Z z2MI9`tbGZ{*nAXBVdu-SGz{k8RsxnhA_s75ihN)DpgP9J0`*?fyLQ^-GBDSNDz{{a(S|eEUSA2+vqx`PQi? z2R`iH*kun|cxgAz2n9vP z50bOl#&zJYJV9&cvU#wKTgO&^_t7!Z_9x|8M>|43Fq}Cb6n6Ub>2FdDkIUz$kvx&6 z_%5SjT795657iU_?YAan*PY|&HyFSb?=t_pjQIoH88rsvdJZ<7wZ36v2IC(M^6uek zjXb0CAuqN4Zq`yL4q9@+NIw}ibA#;#BFNC@XHed0ZZGm8*IdQAODjF-FqZcPy!T!< zY41{rxoZEOl*tUm4Eq!%9vi!^8EZCicN$I-S-5YS=hhNTa%!61`Mh)XOl+6(k=yr= zc#SreoA$6LedES+sT-up?I>>p9i1EyCOh;RFKM z{8KLQZ*<`e632jmH_Y!xv(>_bYl6h)qH@HpEZaL;ibo~AV{ln41Yutr2QtG}gc{%Z zA zoOc1Hv-h%nBa%=ZC@JFW<~Oi^D9qC;6Jie>2RI~UggZ3r*ftGyn#6o**9U~dXbzwCF+eMRVNY+i293as*kOSN<$j;m6AVS$|#qX zQ8S9m{hD>IQb=;#__5E>R(I5`EOk}pI=-quc%T@*vK_gZqs&ChEty5-&ZZC=C>kuq<_pWKM<8y zH_SMfiIc);QCK%X4xnXuI_an<_OTz}7gb>yN|KIsl$Df##Y!=^D^nZBim65pgT_7p z<0;`zTziVJNVJC4pnKJM1J-*W-7A`$yE1eiBUYftA2DkL}UE&fs^1M_uur5lK5(Yf-peR!dD&Q!F^2NT1N26{XByv#edx z7wF!<>r?_4ExTJdzV)V2U{WPkC?PM3Pvq5<-6mY-FWmyxMe4h+UW2h%j>hghdl)kc zl+v0WNXFfrgdl1jBx*8SVd{rnbXdF2-aaf55f(JyHuU&0FY&y|2ENvgR1R)(Q4mna zeyESy2+9Sm?nXR4w&Rl4UEw(g2EO&W8GNPX^zA5njLz=j%1biyGzM7|6JC4E@6&bR zZK12S30HZGzesX3NLsugbWICyYVcK&eW$PCKi*7CT|IPEm;3sZ-K_;eU6yF&r%2mrVC z4c({2yi^IV^&bt(2QTtOR}RQA-7h1oqeXR{4xg-E&$P}+AC}p1=LS)wS+a@4m-AM2 zxzH)~+vi(ajJM7?B>Rmem1`W2)>D0a^{GD3cmu1siQi)RVd5RJLwYxB@EM=eEt*C+ zI#gxL-goAa?WJ;(S841`VL4C3~z~joY;L?6K9-ph=O7IQ0N!2p)J- z9x3~jfW9L0i6#f5BE@`tLbB{g!T+P|ucN9?-|umFL|Rg%QxOzUL@DV5s3=G&Aq`5m z(k)VBAcz7=2nQ67w4}6%w7{Xeq+4kZ^}Al^%v)z>eV*_04-40N9$K}}g3PamW;=j7TIBTt_TeFvdQXv0v~0?7|>2c8m? zj{mNdQt=b4#%PG8KazT(^X^t)_puvJmv-V!y{Xgyu7bNBdqMFV`r4!1Eha7t){+KF-P+aV>afbM6r(~9Q@#kp~T){Pa z_fBV_?Osd1?sD?UTv~EL7iVV$#~VpS<(<5=2ho`;?PsZc5jZ)&(}Y3`Hr86wyYr!m z@ApPSiI2hYUds<8aMMX$8coh;-;dx41l-acF`b-AiC-t~oOYOmTE0`(0-$DEa-H1t z3_JM-#T~9$^r*>&HoLT5qI-#Eu&xN2mD-vYu#OVV(C8Da8?&hd{57!~dAV4OCJu=U z;s%ekz$ENmWT;e5aIqjU4%$LoBjti8(v90FYE`FozA5t#I~O{iq$=*Bzw6T^ZMSm4 zF39pKuNjU{~FiSR!|_^Uk$PCu?V?R3Tac_r~6QY->a($On6Vp z0=l|0&%JWaQ>Z00cXRZ&7`bsUj&XC~@X)|{TSDoO@=PWDoL)Dx#6XhO-ulU=ns}v} zyzj;JZiDmhyq>-DYV_!job$MxV)*hVMSzZq9&g|b)uhhaHKkIa48CL;6>A_~ix$N% z%g;(_2SmdQX7AP3#X%^QEkgAlX-SlHA99h6e>Uho6~~$ep#4{OXWyn2Z>?!ZYw|m5 zs&ziRQy%n&LYPVn!Ggm`^I+{=B?||6-s-hHOQS2n+!W>|Km|~(8_{DF+6qH-gE#iV zlcyGpQ)Rf{p8xVL$|UUEL%oE8dV0UbT0=JDbhACr=y!W9ugAA}2V>5bdXAQZh3`PZ8{Hf|6)x$LA=(r%lv)4vBx?rGpp&4H zl)s$6D;<(Q6UDXqh+;QY)|&ch$x?ZLx{1}GW(s1ToXbycHyt5fOQ|~lGYN#*j=h6v zlwMBLM|a|N;?}!XeG}Gv?bdXa#R4QcWy`o*0lfmibvC`ZDnt7!m5HgT7!67cg&1~- zM(-bd(?GUQ{ig}LlXDZP`^MVL^%AqrF4d_>s;Nl$`E@cfd#Y6kOWZlglO2~cV#*HR#C>Hl4(}3>thW-*BhGqFi2hlKo=r=PzP-|N_ z$OX-m=EblnC_miIk~k_RxjfYyIRk3w zI5OXCZT!ls631c2^=kq_k6VO-9=7nF3XdI-_&)CM`o?y!pydz=jMV|aUEisOq^(oc zykG5>Wf9rVR>e+`j6RdP;W|-o_E#dvR>bNse3D;gx-S~$UrL+Ja?fVpJMsh}`s#>( z3TzXuY#Q>F+bi*V^RHZ$=HY%U`|fS{W@^W0i4Bwzev8{1PBdi1o~3->2mg(?MPf`F z-NV4_oU!BuL}9xp&z63@pBn?+Gdwh_J*hO*Eq6w;f&6?w5c4`TEq&3sZVa#j0v)e4 zw9B0!eNqe1V=Hu@MS@ypvh_{w-pwHsN@bX4 z`!|6#I~9rF74UeE(f#J7U(-K-U*zqzkPu&N(iFNS-s_y@ZQA8&f3=C!lQX-VmRLjH zn>DK{)jD6*Tzva$)dVI!H5eRok&u1qn<72uM@jwB2sLrr?35%9>Vd zb3snj%SC)yEr^@*d{>HW?YYGlkJEGy0TrRh4aX_+oW&|vo3s;}^evZ`+&cyfN1|?g zx*}RU<$QeU(+$q0%@61^-IpJ!NGe0Pj`*A|bgd18S$`K(9D_Y@B(IW*F4LX7dPh5u z`utqq;dMbCJnNCqWIj5{gDaOO#+CGS7~G$wV+@WvmVdv_$bzoCqW6>mPpDa>me_BS z=@=F|=G?*`9|Tr&PPSn7WA(?zWBMT|jN+|EYm6VZsb;AoutMxp(ya4PeTw4Hos<2p zi?=fuzY)E$?8{|UOxykT{KV0y=pBfx=I$K!5%XXqW&wyP!`ILC_3v0rVQltpi)8=( zsm#DAeV3O2VErsKx3M-EV~@~$^^18h??{eY0W_hs6o_v!wKwMSyA9@?F>V{Ax+n7# zFwVZ26Y2n?n)Nt~zXC{idd{xDqVae+WjhP6pDN4xHd2m(S@mnpFtXBW^%rh*iq6Ma&L0Me0q57@{5&oh@GmQ+SU=%$^bi+GnRQ7 zv+CkH{AD=)L|lFvtnjIGUF&tHNrD0?LjgcIJ-*ViQ0cz2{Bfbsev84p-|zNi-xfoMN&+)uuDRn#l$5a)jB5X- zpMrql-lqo6e*K2PJYhK6BZD?oyv=^bie5b}aMqt9=qY7gBPrmjRq$8Q>qtmmF*uWs zNtZqZ6Qx;82lh_;Q$g!xD2pzd4C~-NI>Fg0M zrO3m#-_ON&6*fBV?V5iE=e|l${>I{ucNw;g4(lngcORZ{m}zX#4g3s9<06=9AB?#s z5~S`u5upXgrUoU~ZbRR)jI5IaPoYNpecIux*y++-eMlJ-<-UsfXX-e~rsbQOn~RIw zX(3`Fj+6E+AAm4vaY640aKC0gW)f)@>R-?z$2+6<9$T;j%qkP(&-~L?&HMSU2|!b- zOM2^tpw!m;1v01U8RNYrcLtjPrh`HmJ#Qn#*qK2UgnDPtiUpxV|GGHHzvunZ{!}g=}s6G&d^JZ zKsjGS)caD!-X{Ca2~BhjhRF{nT=PjDLij@sPHy5^@}YOMnAv%6E?^)Z)k+_JBm^|ZU=qPWZL8#a)n?68sLzGEzc8`|3(Tz_7+ zF0M-YNO92k(M{0eS#czn5R0dt37l447aK3mT8Gy6pM^YTh{nY5wwW%$1#$|5yY-yQ z&~5K^c~jX6!;IL4+q&rR#8R)_hBcC!@Eqjwh9-rwHHckR~UsmXC1{pl@3K2R~3ttzPC-Oxd!E>7;)i-#CD%!F^`XZ z%&=7*Fyb!XWK5bJxoBNzi%SWVu3Mhti)>n0DDW99m^Ey<>gAGIvUf76;cHG~i%Uxh zms8v_(_-YO98#^QTI*cu6B$ByZ<-@-YIDjh`F!eS$^Q;mw~D>VLjqJfg=Wsv-RNW3 z4#D~+-Y~t}>J^D!&I_n!9aCj#ka~WZT`*e{27x)qPaRU`Pwi#Q>WaLLpK|E&AI|)? zP5!P8eIm)8>05 zDc&*wN&@!~XGRW0gksP&ug~CX)ME)Fr0_L>U%1EiB zsc+ws6zgDuWY?JTDt!*6^`EQ_LaN+H3AV{;;v*x?r1H9qBz~0}`Dsl4%tHx6--CT5 zgW+twNWAaqIhM+-D|*A3o(sI5*Ln<>4?VIqu0?Lm8jK|9oN3c#LK-Xq@1LYjSc#pF zqKL?>dTYI=Y%V_Y`kBezP9fROoX$Fs-!=k;&k_{%fEn`B5tUV)>g(~wmh>yohH}cv z;_zaDah@FL^z;Xfhd^Qnq&Q}8gf^~jzQDjd42y!4>I%&tZ4c8Kv-1jI%vW|7h#z!H zK3irC;2s%n%W^42kH5QCRi>k_{K({eG;I~up%us;xoK$n??2Lcqfr&t?DCQ1WZeNG zW+MTYjHF7AL0?71M`?-(_zmg!Jf=VQaj-k?0Yukp7xJMMF4*E$ITq$mSgZK$lCKNp zC0l)&;0goxD$^Xuz4H5GmHQo~xl86fLU-TLz2ag@qw`#?g^J{N!^N;qq+2@z4J8V> z)II`L2{n1SG_fw3h|0@2A2kJo3{$!SpWL3b%nhE0RSZEt`@ny9m z2mwyZDOqz)%bmC#2r$L91bpLJp&o)%z7VOVA)wMVFGNNUX1^tWZI@y1prm;8)9WOd z<3YZK!zQB9GOOtD!sNX=Cvpx$b#)U>vQBp-wZcXbtRAHDK9x?{7AIFd=WjxOf7ZVr zRpqy4da!w4lmT&CfBUdo^6ZR$s%3rEmpMOlCo4r1cfJ}ebg=wXd$P{XbIE+Wx0_73 znn8mwUHkl_*%_j}`8JJ)>!X87K*-s|4pWdjaX zGWGX5dJy$}w>-Gt;(eEL=terd*Z=Iv8jT6%W^ZQn0L=C|e;2-pFg+1c6H zlv^=-3--ReIw1n8hd8NHNBec{iZ11SNhwS=(}}yG(`ItIPaFxA!tDr>793ro*R|#t_a3&4-^q7kjPNfL9%GmZ)7?9ERpZrYm$RYQX(18A8E1io zYp2r$L!Vg$Fm&&IEdz`$(~Q+1ZEU_By?wgC>U!|O;OTUxKzA{Ktk{=tUNi&PZ4Kd` zuiCEyYW{UVnNbLc#0_~|Xr**uWWX z(M#(CuHo}}TL$5A&!&Jm6sqB!x4th=+y%1Uhgk{c*#>|r%t2^#<^ZK4WT3U)`quDP zmqK)xYEmX6WP*!(z@Zxs5R2K@-N|SeV=wC@)A!J?Y-0d!50UmSv?7B}&$_9SO$!g4 z43%8JDGI#(l3iQCGK@(1yps1l#e)0(U?}R-r%$TFD>n;EfNG+(xW)WxQ-&{XMnms2 zO}DPVaPO~bQm$$nJqO!XmmQ^|h;ofoWfRqhJSw`emi+y})^Ugz+qH=--RrV$8?f-* zO`l3XrkZ;gqehFWq)Z=uUEMwI{mD5DBYumJE4NfC5U7>$4qi_cn zU9k=kZzEWcS$mrJ#=MUc+$phN^24ru&!$-cM(*so|8#_c=88T9a}8}+5`E3uF6N4GRIgdgI2|AFH*Q%B8{2xyge>I;=` ze(stL90V~rrm8|Z#;W&Q)-fT}FRbh;H2b7>u)|j6Q4HwGFVY5FFSl66J>yQDd2o?^ zwNXXt`AhpUKI<5!rnD>Pf~Z>{$u0~+DMA%sbVT5MuGellS?vULmePBmySI&1B^it!Hjo*Q_D)F#5=uU*IveFCOb#J2AQ z&{)QN7w_pGbzW_F${`+nY3kWZ*xeZ18EFu#xiZIv> z7~fCZaU;y8%|$E-xmoi@K!rOVde`aZUn6A3bl5%PE@L~VO}7mC)B|cP*L!sx3FOue z$OH75fdX9HS^)Wn5OT~NA-V`!dHD9xh{^vP&tDF0nB<}WRdJ%n zgVN<~UlZq$jnTpq|CpC?97nizt`!X5nYt&(QtJWCQoabrU5MXXlhvj@H4YF9?=4Q9 ze~~;|1HjeKb6>xe7qryZQ?uY{#T&X?KLs-8bIx@Gz;p0n>?>nV>G#Q)OD*SKbRpZT zmG)i=DuKqb(k;Lx?E-_CelY~`~+mGBo; z6-e?7Y=^zr!{!$n_(5rg37v2<8>icTkR{q;1 z&g&la&fyX^uM4ZymH=M7x}q&`X%89prKc!Ikv_KO<4)rb_HPlC(tRX==ih1p#SC6o zKpJ++MCm)1+uYlcLa@Y%-sa(pt?y#aC89bUNvfx62b|S$Fqi0Lk4C2Z*kC zcoauT+Ri+@%E`M)m=9rZK{Xp_bjk|qKAzzK~9Lp zXje)rBk0dlmQuN9KAoH`QzTz_GQ(MgIU@VUNpk7$1A6}U+Bcqr&BwD?lBFz2 zZcjRn5%c|dk=?02bfpRFt!&_TH0t?Fjc1-?D*||Ezu^mmKu`55|Nhj&IliaRdnAww zixT?cxbkLxw!(vqW=T(oQNuT`c2$^d22#5lX@Yavi#ne$;s{VbQLblhs=GYeM{^Zn z-JfhGKl2&*5v(-pGP4TzBshUk1jd4!bfx`N?Ri%JN>bGES7oBC>A!p2?n#(THmj&q z-I2GsY!-BsjwWV!x0C34**D65%!mUO6hU(FaH{%g;vF3wZhHPfC}3Y?jXV}7;i3#Q zRR1*KFy#snB)NaN(Cz5cfd#$lPyS%m@iYrs(LVv` z_a~!Xl#x3wiq-nzQsYgxA#k2tk;*uoVu;t>3Wc@h&v>+wJIjR>is_>#%1+|sm!1th zL)a2PRtHdxtK=SIk^^RB+JnaG1dABM+W~S+rrGDz-DPE-o}l*)Zm(J5@jran)9Xx3 zU;mqh5`fRRV-4iePd$*ob!l3)4}sWOVJo-GJBAl-q$mqj?Nu_%`Az{f-kas=q|oR~^6C9ZI$-53jUUbR z%M21b)tv*@{OW8jGY2WjA9`448jlMI2s8yB!+qccUY-8b{lizI!^Z35MtthqIBSSl zSqjDk)JsGB|J?|lCP0du&M!7!+E?)D7(wfNu^Umk;{&<35AKjXa(dG;dNXB&A!w&LiM)vs3Da z=wLSgrJ-!ALK99t%_(@y(Sk)=S^h=)=tzEF-jkr0@$vS+1}S!`sRU>zmiTr(ev8Cb zAKs$~PBd2S&K3fIfK-dW5oUi-8_Ew(J(S+4Y(TQCuzl;2gD!I#BPEmYHPS?ikUzx!bT{O{Rsb}E7cbNtI|snvU|ZFz64+Y2bgi_y-B`YH zcVje#O?n)(OC8G7ZLP>=b&&4Q7VCve4LrdLUS8A2s*=PoV2sfQ$@WBKh+F}S95xQo zRmIwK|AMxM|9;AdJSbB;_j2B~J(#%jdgYgY3-OPlv0m4&hqtV0BNuH|9kqANih?ue zR*{oU9%XPOOhitYP9P$X%h_g!{*jb#!ygc_9RD6zeSV?n zq-k$B+d)kd7D>C(YcEy>xVf_gKPG%@RwVX#g|fh^r-L%78WnI%5SUN^r^F7TDmq>G zE5`&h!PpZj5zeB1rv(Btc-LIjx3@4w=a7 z6eWJa%XX|Oeke9NPzQSk72~VG%vl?8f{RnZUAqY6kFI{~BBf{LZT&Zg74hnQ6hzP< zV!iRoEv$tner2jTQpC_*X4bm!_HrnCWilWQMn$T~;I=9p&R6us3Z4yx%<`r<@2EswXbuy9>p z|BO(Y)$7~0gBKc{E(ow3_d#MP4cY%tJOw_v)e}_3MnfCRi+cu7VeY7u;z&ie4^cy= zrxO4DxIn2iFT0+v&#rl{lV}^^%Z(j59HNl8)u>#ubVggW=rX+^Uph#7RyEW&|NkVx zV5dsL!Wb?Lmi`ueAkyD7N1xJVaU@e%x5v)fOd zaF0-~2hkyG`OAHZH%z~UuDofa#|`!hk`-?SJP3c5rXjUMBwn$(dGI?fH`H{C#WnJd z_!1YxOAv{^!+Q1wBzBdj-hnpqMMc=$yw{@e>#E59Emr&O7JqtwPl$eh2L5Cg&Ca$^ zx9Tzj1A|!tsClZuoaeUfN5C4<8{q-54X`-#0_|iHn1rrmHYW>WL=iMmTKd1H)=rZ; z0s61JOv$WtHFo>!PGJq5iHL`u<|)YX-E19`1Vw}u3}n!+-S<;6)ufG~=PG9992sY< zB{MlX_%Vw{?a4}sEp}^%3Z9bs&)y*pNX0{Bk}ko%rVo%b1MNO8djHbG-1RS)7WV?> z>W>DN9kYB@^59vv`)Kd^8pmSdfU79!*N9kV;2{J;Hrw(Lv`F7#Fkt}!0sJfxga3@b z!4-|t5ex0-(A!HBdkqZ}on~R}9+x@fLn97Sie7)H(8zIqykza>;7cy5J{F+@FvV98 zQ~dn&7Lc>;@*$>J{8y%kKm4S4u6n4d~#Nao4|7Mnco6bTb-%f|HF=6BZc&MO+KRw#&=Jb;$Dh+*lqySd1LdEm^@VfzgsV2k?* zhZzAp$#)KP7l^>&J%Y$euEH9A{7vjcHEoVJN*rWnYI+s2VvA}NeD12ZAIeyj+>e4y zN-ysg|9=!-r+M)z0oVmisTjjk!K~h;>LJWDxpLJdiv)hEQJ^&l+8#(0H_GQg0Z|;? zeiYaJTNH;?A@Dd1HaAg-J=s@~S%E(gV#If?&%Lmd4U3FVF)Inu;~);XtoFcHjD`19u-E&1;y@NrQn zdHLXU7+^w*hd9b><_J9_Ob2lD@Pq@w;MA@EeDSozNB4^vT83_#k$gJr2z!?`gQ!RP zHK}cSBqji^``*avFJyk$o29%!<#137Xm>u8ZRo);%<477v-g&%1Kj)&i(zwOw*K-uhZ((bjp{}I`D}7XZH90xC0h!uw zNC=RTblay0{aHf$S<;bWr#eL?w$OWWe9OK<@Ul{`MM?DY4na{|fMFvs$5BR@>C>f6 z6M$n~Yj!XoCc6eV>)=YcV<()jBVzcOAc^^#9vnEsN#5T_Gg1L#m+&4;o_5*ut3MEA zPCbwVS+yg*yZ3&(>C>xwnx&YuGyz_Jk3;@kCr=`UM98;Q83fnu*vx?j_aARghII2# z0N;y^veI)q1aGtS7v2?m1A+!{5+}en!GXhYyhZvDL-Qd&KW^l}hg>rOBkzG2DJQw# z4xCIC@;p1ia)x2xzk%B0WIV{8_X3ZpAvJlB)r)IsflyV5$r6i2%-1bB5L728CpV*4 zmm6+ILUq$Ore@BnJ0;itgHQpNdM^t#jawIfxjyhL=WDQNTW7Cji3AJJ?gzOi&lB73 zK6vyf_spXS26&uat`|h`315L_@N;b`x&>Au6tNO4zgdZU_na6hFF9|zkq1~^P_Htn z#FulP-UM<%WG9tWRH7ibWfIj8QA1}v>vwQ2@q>Zs~{^lrz^AfRGI$U+H=5ml%m z9{<_l`uq3skZIQM8$#RWA6WmxTTYY0V3BZFcSGZi_()SlpQGLew`{%dVBEUDA0c+W zicr$NV~0bfUBsIL7v_y9(@eXD{1%21yAfOPJHc?R87BRQ>2I1vv-0YQ3DQRc3z8;F z$LRQ4C!s1CDezgQS256wCJ6n7?G3g65?btpKZ%TM`ylU#sn@)m7(Ku z71=*uGx6%d1J>+L-kvenJQuHOZ&oqS%+BZO57xEbHeDXAy<&Xl?X*B+Im{lfSC`a? za$tQCvVvjH#t7gfH9_3U;;%%3V9D;&IuOVqVaDj&HK2IwOg}zre-am_5&Wdv3R;Ci zm8!lvr{&n){9v*H;i_uk$L!Z9?RLu!`DCU4+r<#ClEV^LgO@6xB<+2baki^RS&CCg z>50^6_xX>+fwOg&z4L*yE6w%E%H;%KU^iQc--t+q9JLNe4ao;Vh5BzIN3doAryNzX^V#Ih9&_PV?`iI>qt-i2H;743yW6> zU;HmO5P65*Dj#Tw*R)uiI(k?p%!Bvz0P2AoBG74uFH_(PmIRYu5H$shgT!GrKuuk1AWfbv_g3axYLIjqT#054Ex zZK(^3mU{ydR9~BKLTvh*6Z!E+GEo-3Srn;-(2->Ges;Hyc=ZM>VrRAHt~NvlcMxB3 zf#}Ejm>*==%l+PAfGjwGDLGP@G({pUT{KZ6$Ea_M1b642@LuSiIej38c>= zBe{T9;yR!oNk~Wz_C0*`uVM+Xs3!Pfag)yb1(H!p$Jc4O?JkvD*P>5*sz_Wpe?He{ z$NLTpMjMt|#|q%>fa|r`D=XB4*5t+gq_+I`jbcy7VZ5I?nMHTAi-WlK~^Kw$X0q$Ty&`)IKJnN}E9*QKF_ zkBRjZ80eHdS!z!SWl}Z>W!x>sU{3X#!FyXGSjD>ohPYrfgS^WtyJ&FjFrlsd$A2Sb z>m2>gh`aWCSKtCObau^3&c2S{+Fe;-Nr`P0W>m{6Rb{7&rW>rg#2zLBmw6?bw+Q+T zb%@&O$Ovd@{jYk$9;SJKK#r1Cf}TOS988ufe_l>bn+BOir)r=aNlfNd0Z;;yfpRCHmXzj2RtKZJB!5QKrf8lp1Y9=^B3n4X3qB@F*@=Wt1Q?O z6FroM9OxoV1%+qXV+wCFd)W??W6ow6Wz))(Z}5HI2!>auhCtb`vz zJq)^<86XRRA=7c&X`%TScN^-KAJDP(J^~ur@)u`gLt`%VHpkuZ>m*~273q|D0}J_9 z_TexbTPdvXbByCf_!Xgpt=xKwvT*o|;Tw#34p)NFGziw~@Fuly-@aXv+g;%|S{2-%ZCsTO%+rH+ z&Hj#C{&%|Hc}7zGcbB6IJUV&WJs}1hAJaa$0eg9h?YKZvgEoW6{RzGZM zQ6RjwWkhq%z=?wnigemYO_>?S<$gW2yVp_Z_hp_N#iQe84i@twySG&a(&%-xwJjMH z3_@YfA@iZde6fT)I~{@3@KVpasz4cyGa?0+7Msw=Wr8~L+H5DU%ej{S2ntK-PJNn9 zm{rF^yZc%@`Vj{xz*;cHkDfstf*GMGFBJg3(*I?*DE1Trbs?wWa_`LRh|w165P1>w zOr`5688GVRvr2lrHv%G3p-QZY(dkAK`-8i%@X_ z`E_e$k0l@mR_pKg0FcYuq^+FR(BNEbQq>^sR9yzI*af89CNbG$evc0^pCJQYN|S?x zWc+27D)fS5gU>dIynt)3TcCN$JnR{(@gnf&9S}XC ziUCa(f(IZqdCLo$tla4rksUbCnIOvwqM?G`E@MJ?=vVlm$miUGcl^NiFwpu%UkUpD z*BwW_B6h390=h>_NIf)_J~i7SCpi`EaXZhj!Uu65G>6|D3$yiu*P#vIzl@vjJ`T3O zn@Zxh*xTLFr_Zw=E`RsP{Rt|CpnN?)t2bFGMy!m@1vUx!i!TWHfH4#r@+%*`NMgl* zyes#!*{(|lCBRKFK*zXq;Dr9>B`pK%BPrK}yhSApbrVq*@idhN~G;bRuKz5 z?~(?csS&^Sn2%Of1B=WaJlbej{NeYB<3E5P#)4z~mfogvtiTTf(1d&VuRLbCJz;`% zkXUxNkyYeQj#B)Z43nxjR$6=sh%qMhqwdNOkH>wu*C*pLYU*h7HJch;E*$ij(s|>~ zGVwTKLr3&4f^q*PGegr^SX$nxs!h9&33@&ZmH@6bXBnRc87F=8^FISEY2mS(8M(wG zZ1>M!+=Px6l$-y6S|}~*q~nAAQ$y2&^eOPr)dK0cnTJaCFezFLlewX4ohEs1PiAY& zde5AQa(?5;KJWE-zz58`BlF&LdbflQ5>0&i?zDOW8rQWXUNc#NE z|GpA3Bp54<*15cL^bnx^^g6L7#P2GxQr@_mOG9N!5e$~ZuN7ggbiOyYwkuPg$rWSA zAC%_Rw)Vpd;h1~$vvKCpPRR46NZHB zdsibR*S5YF*sYOT+ir#LgT|PSnwij_twVv3nm{@mD!% zAP+UUJOWh6)~@V$=!GjUezZbR&BW8*&k^RzNPxg**lL{LS@@{Pm;0bL&ct+LVz<{_ zJc9>Kz9ydGV;;9K)M>;h`T+4UCb|iG_Za6oOWJT6YlY!$Z8q`BDWNLtdF=u7@P@-7 zWKp{R%!t|#i_ic0Z%$fLHFjb8KE&OcKK35#u}|W^Y}wC5n|inpyx9#@USi@$^0P~Z zp_ce!JlKv7lew;pT%{P1YI1*`FbT8I^saj_!ekSSO2wKh4w+?_hM zo23v~{yf0SNTK!v(-a&PdRL%#r)l&NKcL!=_DjPy8tsl zkk9Y|p?}}R>-nF8YI!6l(kMKD0*c=Q8foiIYMU5S{O8z`rZ#X&o_?7J1TjqDAzpC(z>MF9lt{=i^M{ca&OQYp#H1J9o%=t&>qUH8&{73pU$*UF zvCw&yBVZ+5);hKN@1c{@--=pMtNd8QG{UT{{O#R2XtS$=!@YF@vGF%SZ|LWqeO37p zYFlirF9;CG&CSkUCk?Wie)~$&QwO@)m8y%$C_K=8EnJ)H?hh&y&ST;-5C`7dC?=~Q zehYR@%|$%05&HM)`1b#x?0)@TzlLN#vOJ1`xTrZ!ygTx=_APMRYNT}fPEX@}a5G)k z)$Kef&)aw$rTDQ@F-~lrYv|7GlypH8lZca*v<*mV5#v*<8YiCh8a=f5NJXYVyswyy z!B-Hy-dK_!Na7aQIut1S_t9J6ubM5xs`c2_G^hxiprb6jF|e#&Hm=5IFo0O?R+lC8V4BJKD$m zuz#?8Ytevlr(dI+lLV`hY~(X#j#JA0`9K}jv0~E1Mz#R?R~mDw0~`4Pl?14P6hO51 zF#$5Qq4_!vV=OVj5p4)AqB-3t9wA2qJWucImzF&b?}rbxR^%daotrJu@!e4Nf7E-y0-Q9jN7_O zfld8!aVmk2J+Y#WHXRr>OKB-0c+K;qm_O7kE#Gc=iL#i>f~)2EJ&y{I{lG?+VUMx* zY#km6icoP`-hGIMY?p&RnvAz4ibc$+ZWhEL0c?1uD&dXk8)1{LR3hr7_kof%2ho7l zU1p}+f1oj70CL~9y!#RQUQrqWJt*NoSs|OOitlOuR#G&wJ7Pa(#sbtv>g9c{vv$@v z`zy|RbQH(f71whq$I{m*eu)KB5)9^uaEa{q%_fexcOOke!R$~~*S&z@pl3`SYHY6O zAxnLj0EmveG_to_WIItp&W$3#-7JJwjZ45{v$Ylju%G~L_yF0 z0c01_Az89Jm8Od4(8hgeez2rFPzJEb9d=CQrpa5ztJAHT+S{ zri=q+Xz)8!mm!^x`FKB)wS3{k5~fihs(mOdtUZ>@*u)ExQ0 zPn0hkgl4y@&-z-X^HM0W{F`U zfewWC2ONg#GS~^@d7)+oAQ6Td!;scL5>PEX7HFJox@kO8uZGJ1Xa#5V-!^mBrRpU& zS?cJh&^0gUwQQb^vIkvQ zEOzme=lZ-QWZ>D*#LV&Ru$@X&N0!Y9Wz=Zgojfm3!f-6}BC}qM@Gjp8kJgm1;9Kfc(W|X9|s7fqc-J-CB zR7T)~uA*SR5caiirxFXvxJaxQXr_H!(+*?8!)4#N=WMa=~QzYDt$N z-ASo>tOqKD(Y%tC?)#R(1c8@v<%`n(h!5V9oYu*!WA)iI?k{$>?jXF8eC-`Fj0)s6 zw>Tw=klsjtp8GQ)Hk&76isa;mH*Va%UHe3coIyp7T?>hTtXiOdiL7)6+FH@d z`s+XH>L`Z;-lHzSS5aV6f7sg6@rxDFktNgbv85nsq6emx+rhMR-x`2J=-`p0Ho zN7dw?(2&!1FvT*z6vxC!yc3c{*j+)x2;b*5v0`&!FAh9VhTZncs z#x4$)l$0Zx0VEM3jphxb)K`#xWf7&~{&_DWl2AVDyjuGyIh6qtErZ!-vU^|2b?pUJ zA>?JyWpLYy6WFhTUpNiwJmP?LYJ&!-;CsH`ebv$Qd#Qm)nFvY;V?04!-Q6WKFdF`z zYu9+3h>U*ZBRZ8;p)vCw&bq(Awg4bSHwX^--k?`MhCO$?<~@6sFGD-=I8uMoo2O~s zPaN3?;c~X0`Mmq%auRbn0LgKTEc#ui3^FAa1H%v+T3ROuAchGLJiQ;)?pxh3r=uwk zP*>nY2$vwD{52{#5g`J(#>Phd52{slX;zq^6Dg(!BhZP+ zY?ymU!<&vqqX$VacLP5r_!Cju6+UM8zZZE$|2N-t*&}oUI78pvej>^>vtC3u4cP()s-^vE=HzSSSN+kXewyl6K(Z zAq6wNkn}nUfCi{v?Z?OghS4}zB|s68GnypHhq`p??dPk|eWZ%6imQ72 zW39-a?6c^FqySl~A3iAN*iuS-y$2sUw7UDETb;$JIaX8{=>K{7_}0y8y-!dvMg_k7 z;eU~EAhG$2IyEsG@xO6UYyGu;L41M=%QOsrqQHC01@2+Y+q-}mv>wRcsZ`Zaz`T8X zRm@9sAdX+a^uU@w&Sat?BAExh+g0Z23iaxoZ)3H(kdgZWU}wKP61#LLvjO1Qf@U|B8L5A&g0-5O+P>rIMogp!%v<;^E!Z{Vw-@M_pIvZu^ zQxpecW10pAtU}VgNAS?~Kd1Sq2>mYlVOx{rZ+zt-W2qB89yW%@P&-|fl1Hy z%Ri`JjRje5d+N}u_=4)&U^i`=qJKanwCz!LXz$(X2}Lasw%%mwInBb67h zQhn74^Ata>!ykALQvGLlA`xd9Qqz{9TljnfbYx9=G!Z#Esya3J8mivARO5S}n9C%T z;S%MXhS0|fXCt~Fn20XNqNb@2{nEQVe>%Z%1p4-aUv=OLcQX;1nwoZ{sIbx9QrA$t z|M-EpVkRzmpdo^{pPa_<`t>h7nP3~b1eN62=V9}!hWujz@D2A*9-s6KRcbdW?nghN zE)yva=X&CaI;@&NHB2Sm4jIJt+~cWx3&5(x>f-(PSad4v6nKoO2JjgB9Y>{sC@32B zXYXfR`{f4qgLnq{Sp5>0UU+DFVQPLgZc1P_i94y5ceXanF;CsD*sdJS(ccZ7C`jVN z$vMJ0L6;WyhrC=(J2WofF?`29(mS}nN>x8u(f}@8g%pNiZr{~78K9P`y*8`ZT$Xs9 zeC$UDmF%{*oY;z+z+(5E z?+gA9ON;~sZP448hDd0TYWc1Dp^VJT0&0%SRHPv@kCVu0q@k)vhY9I@40?2$>}pp` zfG1Pfx+@)PK({YG2K#v)S?Q41N|QQ~l8XQ$f(U)#d$Q=^?MV>FITo{yY6}kk*{fth+SR&jWI8%o2d}sw7Po;qMF{J zIWE5>C7tkqWaR&2?9BtAUf;0sQlgQlEJe0dwk(ATVGNRFH)L;7*_Z5ulr3eeB>Ps3 zvCFAJ?VYQ!g8IG2~$-n>% zzH92&GqpEE+;vx#Ei8C*ARO_Q|2A#hF39LFrNeOuAvsNBe6%svc%<2_uJv5?QrbH3 ztFwSzIGE{=e@}#i#~K2*rV$JN3L`(Hr-PL#2-qEtkYU`Z?*4wvNOP-)>+IQWd~E!f zFNW5y|IbwCc)D7=CE^?l;oxGU`ZA?p$`R>b? zRkHMEFGH%K*2z_VuVy!+iL=@wZRKg9DuY`eKGs|@RH*jtBW=eJT~giMXeR=vn;8#|M41*N zYf35%E-Wom5@!!eOcfvh>KY)|d>?IsRQQ=QKX3eV4dobgvIh2TFJOi?-31?MANBW~ z-MD1Ei1)X2TY_!J@Rfc6^%X3%8?YI3u_8K^rVl6XK?I7)mHy(qz37i0;$1?IgLj1u zOksWw`aR;^Oi6(>J#E1KczQ+091d2wRc0HeOhUisJe@Crv0cs|aQ{9*fb9OcmIb7T zYvRnq{EtU%b0mdFt1%-+{6bVfxVnxYP{lvM5IE`vwL9g_b9VjKU$*jlk+zCMR8$lJ zQ24$?9OVT$&MC2K3H-m=wlWd-v=X)fd~F0`=?m&s1&@K_ZD2SQ^fvS zWiGR_ih|U?K+hX3qWcGph|>&-mL1pQ5JSxE1#lmIo3hd}8Rci&mG=%zHGU-AKj&A; z?+-;YM5^E)Im|23fU^qiD^ImmYI{BI0dW@u!t>LD8O3%lAjG=rl~YLD5!Mp0dwG4E z%}7*V;92B%xL-bsuMqBc?v&WuQ%p!J3|7koX&c|La0_P)Hyg=CO+3 z9n3}KmWEO&TIKiY6u3KAO`WC366i)XP2{br@90a20 z+zq=wWz_X2?9fnLKJC9A6m(Vr6JSZG{&D4>Bfj8NQo}xcTM}1mi4B3tmD=4O^98^w z5v_I%@DmE|br?JTLVCc)#_@ut)xAf4kqiK7s12ko0iVt`5iS&2SSrzp1WKGV7`ve|)cmn(wVT5tWde=dZ+UKWXR zo#{q@t0Th#VWHGw!&Jjk^T!14JMxqnD@vLju(RsSarW7$gcHZL^Bkmi0l}nNk@yn0 zh{a;7GLh|^<2d}=UcZxN(pM3P+$kEJOoaiet2tPml&)iPIEnhuvS2*I> zyO^t9cI;of!FM0En|!@pPvK`QO$ZytI9&sJ_g-sD`7qC=4`;7==ADz7`+@pm%dHgZ zgpa#ft-O2O&h(ZYefEC#j9AL|b}E7=l*4q(XL}c4hl&Q~2KSNp#$YOPh?%zy zz$y?R5dwF{O&M7m}_d2(|9Q0fOd7ma0O93m;T|OCCu_u;fNK=1 zj7+C|GGy#bjEu<1VhxfFGX@1$nuZS4@;nS~su#;;qmFpl=S3pm47d^NDgJH8#pKfFD3aWEYD`WL$ycDLu{!&&le{K$52 zYGDn12#NeV6oUb$7;C$nv*Q73!7iU0M(2?badxLyLY@QJV7->RCO=+^2t}EMP2G(; z|lQ0Wn-COFAb{U#bC{@lVieyy$Y&T)W#`EH1;X*?ABv7g-m=8-jnMcvFd5UQv zFFwpAEDtfB8%OzKX#8ZrybBSDBfx4&`2{T;WYM~qQYb57?EysT{SBgwQ}{w<+LgHV z%hPjW^-lRUyD19ziu2|7z13$7+XsZU>g#OK({EGlG_F|znImui*xi2)>N7k^8VCb0 zD<`LkmMb^;=S@Q)umCM_cWwfw`*YaLxe{QEbb)3mf@N)XU*Xmep(taZ#&%s;88Cn6 zw3`_*Yi7v1Ume#9_8(7x&jBgHKTll?gkeTz%Es6YVdiMU>#$G7UrSk?z>J2*LQ(W~ zG6y&8rK-B}c#E`)Q0{(HZz|Ml`z+Y|oHTBsXSD9XdiJi<x`5C@ItZXJckj zBO9|L+wfTc21~vUP7)o!zRQYB-AaOW4%|h!yPlt)pJnVPQr#?1+Wj7$0c=?(od`Z$ z=;#f26uw94n`h1DVPw^f-&oYHE|kq>vGH69q5Es}ZVVw=1UbDgJw$U+VxU982Eu;E z;HP!=-mkgBsvLnrG_E?YYBhU#rN`8?K)Qmp)qbo1_-Sb9^z>J-p0fyM^ZAkS?p)J5 z!I+-var-g4YKsusWeGQzIDkohX2Qw&K^pL-d|E`98-COF$M_lFRDTRi*dyr!n5afC zYmA4+OIc5_st~a3Q!S~16A$-N>RC`T;L$l$uxr_RbtQ5<39$_bn`4KsJxyC@XY3~L zhe11tiY&%b(6O+R?q-EWPp^{%`xi=xH>PBw9stk{F70xNTZ$AcH;7rUG8y5e)hO9` zSj9^(yv@yW(5oscEPVAil8j{gzPp#2jB|r8OU<{vnR?=?PFH9nloQ8Gj~}#BR8$m7 zI5P$zn(Ls3B3asVrBDh0q3KH?MB{gn_vJsghvuxJxK8bF8MKZN762(r5dk#w?fso+ zExsRz!PPLN&xcax?A(>SMv?$S+twQW--l%>C6pKzDBgqAjYhKY5ht#M)Hpwog3hVG z(!KcFI|?gHR+G+wG@!dMo46%UeBqclx||#i`;Ts8Vt#eyyW_WC8QaV5?!}}6b<_1u zVIR>uP3fsT2ZibJTVIx<-(&TR+gthy*x+#u?uPts+}p<+cpIq-a32l|(h$f#zB}}< zB?zUpK=@@|Cv@WuR%uHo-D-(UejU5&)im+57wM8;hj-T(6JG-gkrWQmiRtdFBVz3Z zi7vI@?G8gFsC3;OLm^U9|Dr^3(U-f;--rbTVVj=9jJ_zDztJ@dhG?f^sK1M$*=Fo| z?@O^w|8q61?Z%4J)g;{XolVt}ji_bYOeU65Cb$jZtjWidCB1i5UJ8deDj`c;<8&+{ z#Iy;%yo&L(zRkR$I6%Tu&;Q2Zw{x5O=rySQ+UKr8c+Cq42yme~#mASAkVYZ6U6fD8 z$K>7m!sH2TpDT7RJyq>`&CjocF~HSald8(@3&%9VA#BnVY)@jMIR%gu<(nF(*y8BX z1F){=Xc#b@OVDpGhPm`2)^a0Qb-*iR1!wxiAce)j7p7H;x|ltpxrLOXcH#r)$7MkQ9XZ;2VIQ7Q0OMlqNTW z(iWG5iMXrDZ{>8L(*}VW2 zAu)+X$i(#1@;R?n7bry2G|bB(mnq$ip_?R4wAKyKZfBepjBX%$LI`Piz3U*gs(=*a z8@?Bi{JfI;zb>&{0jUj9NS!do`!efgJN>4>mCLVm2z*XbjpMV^{ z4zNT&-BOl(hBnt?XZoks=L|R5Ny|~=JgI9~Vr$&1VXmm?&njucfqEs%5QCG%1>|zT z=vfGdtV|XC6q|22(#%#?a)?2eJv;nM<2@eOx|I@22t>F+v3iu+xYRyb8rZQjUrINv znw*?9*eV8hCHH-`w6dI@G~Ft%5!jYN`Ocq&9tTg`+v*qQ7205u`=Y}fg3AR7K&d9A z@*U3WXA611IbqvJsqYfaxc^t+vs%{%(1M9GgEJaX0bZw{^$};?<_2-Mj8|U)Hj1EH zF0~y?Gkt_lp{!QBtVFe6rwHUe^5P2L4|(#0#;ruS_8k=SkY;_-R-U~8KU=;v3qJ!= z;et4_O8)K^8yFg<9#;FOEvM9|J_fKZfE4aN`F3!rNL5))3}h5b)@3T{2F0!e>Ojw?<; zZ{D--@U>?rRSQ6BNl1c8O77p#PHg8(SAVo!&=Yugwl)RCraBh?u{#XOM<{?S&Kl)#g+R^Yb;OX`N z2Xhu$lZ@QKk00CoJ`oEu5BEg!gqxSTL2o8n#|IE4`>Rm0xKbdM06Gnx!tKjz_3%2` z^RJ=cz10VxW%gj0g-xtcewJp3t4PCk$VndWJ{p~N&HN|x~i&pszSs)O!Zz@8MxY$ zqvel(ikAec=`B6BU@|AY2i$Y=EJg?k%G4ncr@y)~{<+QU0DhT=_UYg4?0HkXYV?_p z49GqXvM_sjWn1E0)V;>x6r^K+_l)VsOW~^qUH+ZR05@Q9NP`y`6fH=b54Kf^WT*_M zMtcx|MUc|ero3=odek4(1Ct>cH~ecXN`L*8)`&`4M{ga4&I2+8{x{DO?G1TY6m6CM zqw|GK{rF=hCnr_ky@3dUyUE9ZZ-@t5lM+~%7X>Hl4+T7)4PqfM6u@0#X1sC`Mceu; z&UDE+1`>a9BP+|b2xD5h;NrHyOS;o%Ipa2Xbd(h6S=|M4fXT zj>6Le|MaCGN^NAhXuxZc`}p-g8Z{7ug_4p#EDgPj5x43US=ii#_fUYsHROosC!}~W zWpI;hv7bjeOp-XfZZkc4FbFP+o9W8-wtI!lrg?Y`Ps6Ci1;$b2XVHi1)6wIgHEI3s z0VQ&DP`;cdCP~6XF+@$<%Wy!VFCr_~FZv<;F##SpZGZlMy;Z25XySlNSE_;ZSKCfQ zhrO?P9vm}g=fY<`2R!D0@WPm1o<%?E{+HPaUp%bR9S+qm2^BkaUH)J_pfNgdki9d-{#i{3xQo)!3P(h!w0+-?cxGv!i0{1|dt{B`J%IOYl zP_;MDM@B}T_4sO@nVqpLeAzu_=!bUN4aMEZD0HYpG(@(WUE#OkHCgNlg?>x2gU0r( zgP8^=2aGs;@9!;hwE6t>#B@M#;+b2)@jjcY`dbG%kWGDL<4$8TyqZKfW6Bu+|5o8? zScS{)mcSr_K+A^6DmxqCR9ju;#7KaZp`Mx{svc_G69{@XZ!*%kTF7 z*YhekhNO{j3>Se>ygnFQwMmTc3dp}%S3cCA%5>bV0B95I>pyA?7vGK6v*5LouT4OS znGJpwXA<}R+j#{fCYJQSP$s%;kx3N?jFG&i5I{d0X48B5o{1-z0jE_9g%m+!)?^U!`!mP|I(8fd#?k_E zD9y>7pl9iQA_(gScGvbteawA+Ra|*`fM;0tK_F^f2OfeWR_0m!HAlxcRfxUJz10O= zy9a4z8vg_ke-TR=poRV4&uMByPDp^NR=|0r3$z8M2H!o@)L{8M5-gCDHykP@G7I1f_?bPTF!qrj@15kDnPGC3qi$u+~T^ zor0uD{(BGHDAu)&`l|37SS zm}zN`WMYoGT4LMx-J?aCP(3An_p6)KNR}%hiL3UzM^;V`lmj^+aR}iO*~-X=*(Ed< zM4!9AzgAHdeo&dld;!jITiycb`V=$EebjuXL2H~Qf|J2%_-pv@+sL-7sXlA*n z-F?osLR^8RNUXi~d(0slmQHH}tLqr_&kFo3(_~=6+buui%s^NEO>Ifns%ou)Np*So zhs(1A0|*%lQYt>1Z`!4h)m$EUb01M#}8J9twJ8x6Y#*z-$7rdldIf z;}$4TbyuX6Ffub%z?pQfIWP|49-+(a24q@Szyb%qFXpj)^y;?=i`@kvbt6WQemjq3 z@$V6C=4y4*7<$|)x9T<`W6MCKWH!2nzvf!FBD=LHTWmk{9@k#|>!WZFDW5X1yu^^Y1Lk8}!2Un_lNs4(FC zibbXjQ#7#g^H!$o25psHJTMel2wL!qwy$<>6$pDxsMwlOY*mJ;30xtyCT@xqtm@UQ zVOcM@+5ap%S*QkwOKf^xB){9Iv)BY3&NeF#)kW}r9{|y#D*Xs0vRe9mYe*E#Oi~^J z3f~Q!FlMZSSfry`VU1Ih`bWNaNN#80)N29kq8i6(KIMVz{BK?}j>*|stEn91`hK_J zkosGVaT2Y!8)F#Vn-qwEZu#ZF1h+S-VxUZT;*)oa?$G>S5s8U(N1b?Z!uT0dUoG`t zpMn(m2i$!~`g>#yfKwboQijB8C#be|Ui-s-7V2o;u8g65dRa!-rCb&0$o(xU%~Y?e zJWH@lHksd3WKDS6XoA)ft$uxQVg5WKbc(HW7eVrf&NU?k$L=Hq3qIums>@9XmIparq$Kr!jR3yI<3jr~Muh`mLf3}C= zW=TubR8Hv+l+^GO(cTmzTEDa(44yU<_tGLQ*r~DNL&!Kg98HA2+Vaa-W0}8l)eKW7rVivB6r(9& z3sitfEePBjf;(UnJ7G9A0a_OJETkRCX*pC;Fg;KsJ2ShkL#>+Cn?3z-^23Qo2kq+q zHRT0C2xWk_J3K)d7T`(RH1Bf77Pj0hkCFMcM3K^;D${isW?noaB6EfdOn2YKa`p%I zNOoH5?CdFZxLM(|1!FU5D3!Gm6=X1%p1K67XGo^docRXsbck8pp&Oa+N0Dq)@Y_c; zPHiFAhny)5PP;RYZO0OQymheZf~GLS+UG*B(Y&sKWyRJzL3#s7wJ8Cn>arn#!&Ett zfo(#|Uzc8ZO#p9j6E4#d-WS(1hqmnuu1)}J)BfeDZd5C`yo~N#uR5>Q?(j+l< z6+p5kk}Q&T=aYnC82k?^1*Z??K}rm^a&#BRult^j{gHY#H$I})znE^`@JOr&uc$Tg z6fiWs=sAb5fc}c`zNHi_2Tcahi|-TrQ%#o4tJ#ax(qi#`{ML||cL{BMGEU3&ALeR4 z0PCAg^Cm0u7kxt!hFp-rSTWxRG>+fm-mK?#M$qP)3bQeZjPbs zz2Km9;TCjTMg{;)^W(R|uzFEQiSSMP#Y zF7jAJ{?}tch6xfke)8CSeR3?)T{D8Qo-g8yhm6|~m0s#kifjIp&>=OJW} zW_E>lt$NJR`9Vvl!vy#X^_H_fTk8bMQ;-c5fI+1V^rPtBkUdA79FcEzx z;gMe+lJ2AK;`y5KTrpK?%Lq9=0l$#$(=|g0G7?adRbl&N4*JV+3lyo2KX%Kn{dPj~ zj!maN-E0@j(>1V+bmTx!I49@aL7+2_C3Ef4?^bLM3&riT#fY~gz}25!K%-<$!M9kn z>3r>{5Z1A5CUy zqLE`;glsfubfBIYmh$TNXGWm9ZYB?}%znAxhplcqwLVx8LA?33t@g|IDuZq0M$)olCXIEs_<>sM9WYD`nKw^c&e% zgAz4cF)P#PG7XQ%o=a}FjGgiQ`h1wr(dgHg<5BGR6DU1PoCmFbV%EfC%Yn_667I}j z0$K@o8~9ur#XA*VcrC^bIOXPw$=5b`L4+y-%&>le^U$Lv{q^yzKnfg-_Xc?0X}{Oj z8rN;7ZkPP=Y8tV9glY9Lu_Gma2fCswx!SUe(cctCAr>aSQR47w6N^izK`f%v(BlxG z9T6itCjD1CCIHsiRVHBO0mf#E52_>L$&MJ(TjuIHO6II3;q_1Fst@e7^PYRi;WVVN zHMeX)N{h9(0=BK1Ys zI9b!O&e)+8wtg_z1RbrbxzbwBoLey?DYepd^Cojyl8w^7o@w6QqIU)9Jqkr|@9Pn( zRMptCjg$UDvJ&5YxrSVfelw`ECo_+CLEFd=AR{2Te3Gu&mT*N#lflc+?# zec?2!?Q+<8Oc*qI5&BW`%7sp3+QkehSw|ab_~`K({k3$mQ{jxg+E=wAQB_Q=XO?nv zo!>K2+t}K=USNp*puTbNQZlf;&t( zz7YQ*V_jHNTfBMJYt}P@KCMH0hqfgL9ntR2e2qmhGJ)hPjtUc__WH=qPP zRp0%9-{Ps>mx>?UoVp|X_^ao@djB0}BYR)Z9AXj-p66CB1oy$n{NCE6ezjZkxm#7m?g*=D5J&L3GGrKMk*swI zXaVCo&hnHe+I4KSusl_1b1~;WR0NDxLztcpl-)=!InV8@LHlfmwl;fclJTNWYx4m9 zQ+gUc_)da*T5N~uBYr=kb0i+^A$WFt9LSOIRy43z+vg@Nkr^^|FQT^4IBs2=Tmaf5 zQbT@+reOTmxwf9lSu65uAiD?e-He4+`gzF?V2SjG&!I%{d`Yb)+H)2T~MIY1>RvUS%|oT!jJuxJNH0#REE*VhkD8+a;|Ar$yo2 zft5}TCAOxWoJp5>GZxcx9b|3|kQW$ImF^x2kOp+$V!UsL!ed`WS}$$`{|!uBLCa~J zbJ|#QURg;l5q0V9+BNY|2&<-f3nUo)0Szw<_e``xI4oz7Z+O!$X^>0_6>1st+EI~f z_sN|;i+_!`& z*W%fGV^TRR83_VToQ)o9hM}AF|9ia5DN_^;Dn-?hOEQr9AYqJ&rI&g}@{t_MjstLt} zETqhPX7&E7EAnLTcrBOLuUGuZ-GBzR%LUT1j>_D7oZa*EH1&QzbSU+QfW4KiF#tpJ zor?He>@fVvMLrOJ`2~J;!A|^{^gD!k=DP$bi)xrvK^2o0=Mv;=4nx%-$s&zeu-jU( zOG5?IFrCVSafkBNe)|QOe=dOd!Bb${MUjl8X6^D-H1#8>WT=m~ZX&McuK1iYY44v9 zS+S8iI1x=LAnf$#jp28&5|EY%4YQEb8*BuY>ta#YZ#f_&C>XwIFlE7*kfK(m{k5v5 zm!z_0RAxz6DW9LS?iysGJ96d&!|u>dhTcWIpNITgD`_82ot-L_N{l~M+7jGHkE}P^ zc^}e;fxQQbmI#+HlW9V5X*1jH+aXE}D6ZKUbXv8htC!G0XzFjRPo+54@2qsYSk%#{^j>(D_++C^ zY0@qE|k(iyslO<%(Mt$oW@3S(ahb*-%Jha9sa3Fi}?7RE&FMa)Q_Dybpc zOx;#ajC%gOi_Yhle5=TGzHc+BnpEWi{KAucGX0q4Kuj*nQ^FPt32f{h@0P_L5%1UN zn_n4gl-k-@j1Ngz-<6!PThEytRpL>%gij}`#GvrRv4=6$r&c*22ej>37trKvGkvEs zNo2nO5xc4}bgfJOVJbT(m0taAzznYWgXG@h{=i2zD27DXf;msEiZ>I3rPD)Yc%VEi zOeO6n002}6i`}I+R1j$}!NZt!Jn`la$yuP6PMd^hrjYOR-W zEe--NUQL!xG5Z=Jcx|S1tveD`R(Uiap!m~bN7QTOG7XX+TR*9%O}W`eN;x1ml+PbLGU!b)d12YTWPiiV_Pj@-fdnE z-)iQ})lk>)J-3=yo+WO4VAvNz>$kQm?(<59kKsIj1pY@Azbii{{w$2Y#wel-(l=1cQIWu`x&$ zfn_|8Jue=a=9%ivDTOZ5au4_<^ISbcijCLYBtUd~^uQPAKj7ff`w$;so}rh1A^JR|RB6N{NU>i@nxA|taq-Wg zBTivtl!wR>YIL2|=e*80#!nOGZo=)XDNrBbo7QGw3r6gCo>g@@=!~AZmi%+74EnXi zt<^+bZS6xJ*$t!5K!*bRs?C1NL~5pV*yxf-H~o}>UTu2VQHeABJD6Z@vaME1R+^tT zqw_wC;14^W^;o{RadH1NMh_j0Rx2eMzcpH&dF@CcIEyE366W&nd`qy^x8_`u=U5BR zd~w)Lo_6n6RL#amEJeHf0AOs>Gc-1?kn5INwK+i((u+K4+G(akeU+>7v2b-)qxwqJ zsS9DDyD{Rg$ep0LRnG;u(JfSVHF%HPCTyzWJThJP*?ok;DXcrWL9hBp_9*`x(Ll>) zb8{+44qx~A_3{}u7&n^#CQXXVwppjhd60~n{BV|hVf`(Y%wRuji!}X;2refKIgYy4 z=JPb)9%5Q_9+y{Q@Q za<&aTMDeOY*PC)dOve#$-X0jnfl5BhXAKq!f4sM=YR!7zY_W=PRa>JP6Lko!65^S> zowXK7d6lUqU!t6>WD=vtH(Nq&OfVwVrpqkz+39J9eTFP-*KsyIuB*9hf(&>RKJ3Cm z5R$Tkk(eZNXnS#fXVx&ny`MhoqOUt(i$)0BknJ|N7JZp}q(-ZiS4%i7$jrXZEMgCFYcY zB8;>T02x*YX(4uHD-zgo(>l(2a`HupU}9AD(rXuAjDINOhBTmOM!)(9u6JlF$$k^3 zwS6^m`Ei&pj{<_CV)@IfAzODu3=h7GXr7dYAP)4Fe$G?S@+(9lFO7f{!Xe$J8KwSr z3+rT3^6>KY2$_17JFS7RdkPS}-*Rn20M$yA-}X8we05W)mOzkl4g-TZDA%=`uWpcYbwMRN z7PstK#Q&n9+X~=^Vq@>skr|7u{H7t8W`DH%q_dqgVCW|gEk6oykcD8^n0cF6)1(vl zq|?_~1`LJMT`xx{>02bSC~_B{05VGz)CctmAgxq?k|)moLB&OX)%LnIY1KMyw5G4T z|9!>}9rKb_^b+PlC(l6N^))}PUQK4ztW`RL)6N>(MIZ4=8jCE0;r_#4k!1ilxvGHh zHrs5Q5clwZErWBRI)WED%!s?nouJac%Y5{EVAf`^$b=;Ox+3Q($Q5h9Yb!NrbNt%; z$s_9^8Y;W#who1fhuQT6b!5v3`6V@2Tl%|@uMK&q zk(a|~*;kePyYS^+*8Xolcm~zH(g5f&Wd5VDcMA(EE4K(r8DUvPj6vbp({DP`LNEuu z=SgV)?2YWCaZi745!Mylr1uMzmBS$}^e>zfbE8TZg*B3W^mS%Nwy?!)yN}?8w zJ*SHt9(rujTiv;!6Rpjqo_p+dXr^%CxOe9y+UvB&x}LV87F*|lmV?&#(h9+@1h_v+ zXR$$gpq_-js;#cluH=RGs#)x-<(0%!Ix(l{`QJc1sg2Jq5jL&~;Lr1t=I=6&xvHxQ7Vdc>0uRPL9Oa$|j|X28;Gt!V4Ja$B&(=Bte9FM_U{ zgRvc5_NDk5H9b@N7Un0mWg{<+%6h87INM!gcqeo0$Nq`9<>;iM>8i;hg27aFx$dN1 zOWz)nKmoB~#yIbe3j$L8thvvhY<}sD6D?aVT{=E9)7V)9E0_$bc?evqbn5+?$VmuC zB4nf%{dy-Q;Q6dM zr%v5!Eyw0Hh%}elxMWFX-@0MsAa>{V64;C=~yiNGbppj7RJTFVL_0P0%R_Who?R zQr~{XO;4nh!-imG$Cj_(O&KhqNE$1|7PK>GELD_klE-dxBgqlRtX0llUn8V^{ypA` z7D6zleyM)}AmIgXXT0nP;qz1P22*DsiQ6*qW1cYZVa zqGVdWgri&C%%9<;_gybjLa%*&^?Y*#KOLX-sP4o7Q(NWaaA0O@;7s3X2(k$9s;&ieJj$QOtVk7I>TfiuF0`y#MU z67($e{4dJ6QF=bmp%wgz9tRlZ3YV%lZOBH|tk*Y>rSl8y9W8K(%m5~Px3+fjAxkb_ zDUvH!*hf-0o6vxHunTCtIIZj9RIUqE>1uNLK>kH?@oeK7<`yVc9alLbT>UFW8jfqB zk|;dYamNFWjPPuZBUlV-lMy&7jzdy#ynWsmn5gTIaV*VY0PgjYB_vg zL;1^qBXy3!4eRr2@@4}2@ROtxNau>k(8HQ`tywp&K)=F2P=j7-PW75)W>(e`2mhID zN9_}W*w0UB^N5?0BhR(10fSHL%-`&YM&m+Lhi0mX#dzxx^7s%o2!cuf>ag--6tdi-G_#nT) z?c1urnG2csDAx7vX`mWhN2;NB|B4Tsw{}uu#(Eu&*SqT*9$xw`>UpwvvwAGXy8k`5 zZ}a-r@+Hotr?YI`>hIY;=+C`jrK7@ZExrq-#LTY#972z)e4*=cHB>4QEKb-7MKRpEVK7FCVBU1&%9CNc*zDF)kDp!mr#4n$K7Z}JF%)9ZstKU zUc8-e?)=z#Q%-c7q5_v(*gS?|(TtX0AOOf7jj8##4y~xl7aO?QvOd{vN#KLVKhrzE z^y-;fuuhd;*Od8C^S%9kE^4C7*^GzV@`eFjbd`@0xYXUwxPmbKDdM0Jz=q$=>M4#Q z@X=>-y%N7t`rul*9z&%LZ=q=R8+Mj{;}WysI)Z5o4HCyCdp6D80DOW{IwX{X4MdK(3UsS7CwV8 z#YCHqg7et6e$kxwzX&(J&nZ!->4`)4=Gxd@ZW$J-=T6K1D)#!NwCs{3QO<9!uUz7? zxTlboZL2kGrRZrfDpAQw4t7-M#IwuOX>>YQHN8Vu9K~{kjJ>DBCT+$NYKQud@H{6t zkDbnPilTTUx?77LC~a%^HRS8oGv{9AS-i(C4gEmogsHUl>fP8$K?wk#*uD5!I==+) z40ic^BC7N{x;<(w+zoQFwCinHT3(aZZ=H}2mRhQzf^mG|^GL6_u*OaP;N;jMq6@7} zDN2shau2)KqVvY@?%M?Yv%uU+G(KbSjFDgJX7 zSVKmf@?86{jo;4#hdQ`K`Mo>JX=6g&=WgU@hS0;HbNb;D7o9kzjE?4&FXBdaQ$=<# z){Q_&%(&9I_cW@JpW2puQu*!q_9YF2B@m%2zee(X>)%=cH~aERHia+no=UaE6I&rg zt>E%Tm<`P55nIPaDQFb;$uQb$nF2rXE5lribLJX;D{e`VmiAEAx^gGCKz6Rp@;w*; zK*p8N#T5}IWVbE@4`?})_>#YC!T^SQ<058Wcj0X|$sc1o$T*Y@%SnAw!I~kdPXA6k z<2fUSSGmq~8SfLCCV=3bzeOI{DmtO^qEt9{yt=uD(YPiC4+N?ntDFJnZ<(fTuAAPE zTsQsChoQ|om&(0su;a)m+sr`H1MhOu4}baP#UD^>*}4uY)SfRfj5xB*sfj;G4M*>+ z2kJ=Xk8I{b?6N7@HgmAC#efS-xeRQQ#y&L8d#kf5Ye2bD`2J+k6Ot0P(t_TcgVJDr_E!&vkH!hhxujtju<%)rR3bGq zyj3!AcE;Lyaeako8x`km#w%<$@+SSce(Pq*bgoVN(VK)mpB}=>&dH&&X8}xv=(^{M z*;*z&js4D3L+<(SzR(q7cd&KM&Na`VJT1%k@2?Tgq97AAw56 zcSx*1XFpr&6OrB3c7v|E*(^85)+IKoaC+s13cn4pKDDOofTs!my`=Tqp_`VM*7SM; z%D1ct`G#JzTV5mIFH3nZwUDN3n9>Lk@NMkgAKhKRm6R8N5yp>y?@nuwHgRs&$!v03 zd1)Pn{!67TMZgcQ6(@5__q=d1->Fq!x_g|K#TXyiU+?IQfE@QuHW9ZliXhv#1|5_= z8L%Fgx<@4;6d7xS`qx!y6=QIG3Z(9D-W`I~K!Y<1Qdi$t9JcZNB3M$IXIgn{bI6^s zA1E#By_Rblnvsi3$*D2;;}(b4yOIqV8!D%Z3CB9q(8>HS_}cJkT)u!c7@hMftXaC= zi(rB!Rm@+t+C{u}^gw$?`<6DPMSJD-VDWp|Un@}tYa%031FNBvi9mTdbuh^bkisdD zjdbPOL8%L>8jNLURjme46qyrSEr_fpRud`kSfA=nj>j-CVPi$_gwlB7iTIhl#wBa| zsxGK7zPFj9WtK0EDTS9sG@{mjt}y1GfyeX6p0OK%LrQ09}GTcgflc&OuC>GFIKYEK#P4RPKat)5J4J_=hL zL{|^;*N)kgHCe5#l5tX@4kk%*m)BmET-v4e*WNr6#LJ&P=bl+t0qGKG>ea+fe!1&0 zJzQlQRHeOCjxoL6HhI6R(=vZ@;er9$RCj&#n-BZ4C$9SI$|LoADTAA2&ofjV{dSFn zttn~eus)T{?6EdG#l~UfP6(URk}4~}EA{`)EB%)yJGz0wm=PL*Zw-C=%yV<4H-;v| z@yFJc33GFDJ&FU}2lif8ldbNRS?T}4$bR!-)Rw#AYt2X9V$e|2_7HNPr*x*n>!w+Z~^fr^g;&e89#g{Q{GO@*m%I0EPlT zAcgP1iKwwP0Y8ti40JLDdNVP0&3+o#VlkPODa%W~1r+!3l0U_T?~edXW!g^5h+2NH zfM3fXCRyS+-J#SfpG(54@tfhic-wHxH4BlsrFn787j(wIvBu~!a>^nFBl+Gi>wrD> z#*%_;D&yLfHU_-4jZG2K-4Nc_3;eH$ycB%HxTLA~>Mf8T^&V;(fl4BeCYrwsx23*0 z7byFZA`*3;|2Qv?xcj}W^??$YZ7;J7Lp59atZ8_!E{wR$R*}l-ej??gp2L}zRf}qw z4|?I+wTt`;_{+F8dXq&)+`XR>N=AdKJ2AOh6FyKoRW!tI(!XlLP7)thB7Mo3aMTt4 zLOh*jE{JmJscProuVvsPk=6+|uL^Y^7ExViBCzS2u*%rP@!G5Yx1DS1RmrOnVfQ{z z*6S2uhs2jN@zxFcjWm9itZaHil-S)^pG=Q-fJ6;F0pK>~RF%`oeXkD9vBa&7JD!8S zRK2VGPU-YXdZ#b3_Y6QvPUKH7f5`Jo1$&M0eOurs$t_TetFY3tUp!Z{8j^Vp&!0?` zDhgdHVy2Evevnk|I`Z0E<1n@}#Z%cUYg6}^L5=G;iP<={X#@dR;~kqMW{&=v%)8GF zElE+z?g6)9+7h%&IgezVV}lXYw{fJbW#;HV-zEa$DP5!Q*o*a0W|R#CYXJ z5oz(A&jo(qEB&4y;{kCe{6O@^7HNWHOt#G)2zekTOpR}7S?jA`Ptgqb`dM2J^@src zPj8l_^1b!cUQY}>tUl}lq>z?$4bDOgt=O6RVG|osEw8uRGR$JX6&@&+FZ4!*Hd zXR0a%S3_&fo6^O)LXpxXz%*rifWexY_v%i{SIQClpVEJy^r_kVM#|<*g>vz&n)M5L zqA=(b?LKSv<*U?K{Q=MPOBXGtpAt8)BWK8A2UlHV%Q^M+vr|$}Hpmzsq|`LnGB6aP zX}|kiw|oAsSz^pM_o^cH%m}mkQfKYTl@}|5mdA35Qq(y?N%$!8bFm6T!}Z3RwJF&Z zubF}~`c)Yim0bfF*au5GaUOW;+)tOXV;O7hm^z*ekMUy!Q)*N0TbMd$@mhQql2BAG zIdvROk<5LcCN?N^r^RQ!A5UdHVI;mqj?DG(Y`)rkjQLXhPF*gBloLOtgQCM*=o__t zX8kJ90Y!V76EHhR*BF;VHemmqWWK?rbss_T3<@uP9lm{3LGd{iyBqr1$3 zpG_p=5ok1LTa0qOKE}d>Qjk<=EM!t>de|IDVX>dD%!^SP&-)=wEnc!LR^G`kD2SB^ z@{VT(<+*!xd|+zU40>+{$F&v26y;lgraw0elk|cq$KALZPAKRHIRu^BdsE%w-+|RoaD7~1^n3|F!PBdIG zgmQgP%i*zp7&9xRmc44rh*_@A-}fVr-IrmJmtIga%)t+5#TFK$D}I;f6Kl%p-KOMw zZBaL+pjpG9pydDR(I)XsM>%~k`F@^t?|xekxf#XX!q!ylH+xOJ`pBdK(?fTcy@oT* ze;ik^d2;By-01DS`*&8Fa%vsj?BFyqr194fIMDQL$KG(XJ+<2*%w&alaMJAu3>a=D z>UJO5mrC_DWk4x=sD1G>@{E}kLWZ{@uOwGL5?uRiS4-~zMF?TO(IH{?TByAt_ zBH{X46+midPl&w@hCfkueDstAcmTEH$qyKRtNv7_O}O#G=>KW8#Eh!ExdNcWO;Td#(cIL+iVg&4jsK}&(Y2=(CCdhJJz3vYLDIe}`DftiNFFGv1g zSN!}Q(*#^935}%(>Bkl`9j_}P7~W64yf0GJ6*v`-e~0$3#Q~*kf^QtEWgZBE-_0(Q z1B5=Y*Ny2cIUc;5Ewe|LOUG`P`w+|%IT0@+b>2I;8KxHbc$83*Jla2KDw|`{!}*An zG12b|m0YI*=hqygGOf5{bJjhD%7#=Hm0Y0(Zq(xkFnoRvK7v& zQ^0}sj;lEw!<*y4X&`GdZ_M|C`+n z(TvtsrmeDqqb*R$zI5XL&2OU}Xb*DkJUAD7A4@&mDXsk3TU?VNUNSoUm>9&HlflPd z)QFcyzrve8?!Wx%^^>jn*)#4-!|^kHiVR;fLo=0+nCfZ@c2-r&pS8|?^!?FA2V(Qe z^ov)=%pa&cJ$}MXR@XKC#az3aR>8rdN~yHGp@AVT62ZR{f;V3KRDcgp*TJm zzr$Z+*7}(9BcYD#Tl72kpGnF88YiLM?=dNuZ3#vs2G1`kI2?tN{e|S=jA|}DgTzxx z2G~huNl%qeZxkJytk3V^oRorB7k%_CVv}RMy^AILtbOSoT zB8urw#6v$$nTb)qyrdj-Q*q5DD5k#ww7-t$Ra?_&j(@>A z8TW~%WoMdtVve{xaUQawy3*jYA=Dy4XUf4ZqxH;DDk0Qx=@JdDoSqm`mGFW+MMUVh zAx(-Ahy|)XE_mdq$czc$>&l))&&Zo;1{DF@AhEa$TCAFq*^`ou+&3oWsMvlM*0W77 zZY+L_lHV`!AwMKvOO~{Y&B~biqeN)oQb$T+*ttHZXD4qRj+&%6bF5qPHSuh5ND-`* zWL5`-I{(rz67{4f)ye}nls`Q%Jht;-kPXE$BW9kSp8eDN+6yl~xw06I<#|Vi*)$N( zU9yN|m}%H(>(bZJ)vf;!IP-$7Ea5&)imiO1ZM%VI9)Db2u58dqAsziot~0~uMnMy? zXx~n?={c!AHGFf%0Ux7xGf1C{b?ZJ{@NaIWbIkK=-e4H9#mVl*S2lHO->Yxl`E1ep|IzgoKvA&ozKSRds4OiYv2>#dA|bJW5>iXIAD}cy zH%Lj>QqnBaupmgMC@CUcONU5Eci(rv|2gN*ojG@gVdk6hV|01m_kEt<^9!TYlH&#t zBOdF09|3U@FJKQ6aoW|?r-x~5(-1W*wS}dpKWyf-GKw0Hh!RB`_X~`5{15;q;bkhg z`hV8l!H>Oxf1>mibd}AEWgp_WgECP$FKVof;xSEiReB78ya>y|DC&h~PJ*}ga|2flEWZ ze>?K{uhe5ysmcuo16@_dhDw=eFZz3X&DK2ok1C9$2~dYK*A?5#ghL&l7&gyo&EF_! z>80DusIjPc8!;#fCG^6)n0w{Jt&_*_D|uQKR=A7gsjkaN{&{@F-mGEe@km-;$*~72 znDlSQ#dag?*5Ck?gN(!fl1DB$vd|#(Z6`QHs-iauP}Tck?RhU?WGbpl-%=`8ap>2b zVa_4p#n~@8oslGmhl6)))fkl5Er*B=x4>pS31D;+jD6LX!!I^ywwu{I3B6}?Wzhe; zzh1-16l7cn+R8V;22uQzJ7b_#f+saW_;cP#4_mkF8^(J~z^^Xk6hY|b#=Y>!;hLI6jEx;IL*1FtkEusj>A2wtf zaRhxZhRAl}UM@W9?+!g`HUstmm2tuwPsqD zMkHb%ju`B5`JabF(v$-3BlWDsINZQfqXA8oW9NJ774|Aqmsz&a3~u@!&RCP7pqU>u=PLJcT$GYei!N$O;71M3yvf2Ox z%I{xazKnFlrZ)3wse~mL`%O}78%@W}FzC6_YiSso3}tiJzb|yW zyK@VHp&8EGIDao!YM$Yegr><&`zHJ562}VMhQNr$+co-?^4pK9npj*lat{#i}!9U2>Uros#Pie2=}2vM;=cTWS4pOAI) zwnaPV_ae_SufaHRmU~XVO>EfU?9e}Mj>FGC%O|b&&ZdqE7oTi<4tgDjco4T7xxLxx zgMwP+wpn6(2?*UydpLW`wdNAMBDxy zV8cD|A~kBa+27A??~pcYyRuuIwIEZOKVAZQtLnL&ll#^ev{W4-ntu!npnB%cE=G^R zK(OUEl>jYf47%ElSZaAA*rSDD&-vgQm+rcmC)+!QEb=Al=t|oT7Abou$r7w;u0saT zs6Q#TWrvYXtxeZ|IeORNYg{7IBc1-}wZU?(mgO8x9fnH08z^Cf*p0(Yx- zjrP&uvy^oVQti4mq3N;pkEP?vdrTJpl$s999EZGPX8=N-+QT_6eH9s&{8o{R96hYP zs}0%A&Pjf>gC-z8Y*yPaZ47PjD=hH9MOxO{7nwV&f~`|E9@(Q$I5C$ zRsjbVX$)bzv;8^*C_9^U2LDjT_k@bjw+DpjEw1;4_8MI`f2?M=NID4P|7Dbf37jbh zHxQs=cNu=8=I_w()~ykL;N;@^4VLrqz?j~u7lfI;69)3UYD<~I3&5_Zwlo!SGTix& zBZI=GkdNKTN#?zs15Z}j^(`|lY(GEKHulM@4(VRwGGV6nB!#<7;xm#3X@#nd<;+>g zXrux{ly$^m+P++M6;KxHYY!s6GV!wo@pf0lmNq2=l$qZyY>ES9&FNaKr2`oWhxo9=)gk5%C(GYfGby<2EwExzP>op;=dfgz@QawTovPMo4RDA&^Rg9yI{-M^pEy*33k?;C;^&JjP zz@5T;4Fpe$25bF$7HWwLjhlIc7B9Mj?WduVmZQaqNmn(#&EqXka~?>?j`RYB?}7ZW zHQ-hKKHDgF!ybxle0O_@)*y@OLsHypY!(TN>eAE0V>wgWe2yT!uy>i*IWj<6@|w#rLB2-mzPAD2Ls^^#t-XrzoTqTTtGK+5;G2v<^pR#gXn3KI4to$L<)jz|U5|h!|2xz_hv)V9fG0uGSo?qnZjsXvGX0!QD({|3f;i_7W;1y|LgtA%t%ROj`|wvL z7S}V#<^18lLMrG>z2Jd-&eS)^aNGvnJh5@Y9FG=n7j=2XnmHL-5#PpyLiUgTWQOj7 zFYb4oh2Hm^$ow^k?DVNr&(kZHpPT;A@i>okI!GFKtNRp`qs%w&vai$KMJt0oTE%2Ib_ z{UKOAmn}7M2!jml8$>3jajQXbM?5lsFbY`84%%t?0fzt9svEGB4o}Kdw$8nhCUD6` zyp&29u$yVHwCruog`*!vJlOn(yVIwmMlKSVH!O(ED0gg&e{H;S?DXe&TOu_`y@5 zYI6(8^6Q={uHB<=zDrI1*^@Q4`U2JXs6y$g32+)--WNZ4EeudHC7}ygqDDd*m_-4U#nZryt7~vW=to|x6c!WbfivQ2{I$j&A@&!g3lVA%!K3>q zngB(1MF9d-18!rFSpy6rnhRJv+f~7n}o-n*^%gdyy)^P~9E!YYoM(|J_q#enC_$GBAW{cLuMO zX-EHFE6>hUso(V##$M1kjh&r6Hi||lHFaSd4J6%qv~*VAq-}seakwTJlHvXi8i$D; zyxDrm;4Vro)?|7yvpDji9H7$n@0#zIPY_+!e!ObN)IDrX-kF-33kaciv0EkTiYeTG z9TM_%*Q@trYHZGT@P28mt{IS(U;?k)KNFo7Nc;>6VFCOp>$6Qdxoc%x+Tekz`$*sU z621NPAB-Gx7a1Bh=W4|YPfO@WSxB;wOvqFw{J#4M?Mb&}3|aykbZQOJXGJIWWoJSv z8?_Aw61Js=9Jb87nwRS3yGlo@*GE-lR$1j`u|F-%9>Y^bu+NU8|t2nvSAx8P;~Q`3eLq(e~tqQ;H0`$Z5Q+qMQ9Ed~khyuk+9bZhmFVu4l_eNaNnts@JAhfD|JwTk<5pD=Kb^_ z*&!8I?rRDF49t1s4D_{OWL>xpyP(&0QACX`1-au14?pNZsPx#`mh>~FGBG+a%2pVq z+uean%3?edfRoG*;EYja*<>z#<3Q7j6z=fl?hsqM#B^Q2LD+bnVzSjDgI%RD;7ZrX zW!FgscNf+@zP(F&%}}|RPj1J$*h!Zov?erju$nM24wL@S4epVx*-hZ`*9%mzsJzHI z;Lt6IqEOlY#5Zjqy7Tqc@0R$j>ID zGA%O=NUl}CW8EFTkRn;5MJI^i4zJu>-yaa%yyp#IXczWp_K}pI(ZukE zH%!t8=sWSdZqUWrAEp8B=*cIr;ZfK)5s*roFP^*iK zbtU36x~W4W@Ro@mB}sQl|tG$CME z{afC9u@KFd`-J_$Xg)(PHDg8e9Nhc?}Ih!Oi;1Fg{cVp z{0sc=$Gz(5>0tQXZwq_?jp)1}IW^U+H$V>+6U~ZFVqVRjqU2^Z5jjSzQ8t{DoQvkR zSa>*W50kt%9q_4_#j(F$u(Gg1;?qc|Ps0ghPE8A`Av4mBn_PNbjwtg*u_8&&#I`>R z2%Ab4S9l#CM3rwrWyoY76QF1`=(VZN>eeUj3Omw2Nh43=G>b&OIm{tMeJt<4+PGXR ze?vZ6c``?EdOqiP3XscF?aef!)FKD>qi`E}L>HQJsU~JSnK7B}cUndZudzI6(^PH< zNilRtKJaHZZB7&xOY!3`jgv=^S=X^P742(~hU&`DRq?jf<0R}F(LKVb< zw{0Ev2`Pou7^blPNEm^fw~Nob6EQ)mr4cl%Q2sbNx~XwOv)*B4QKiP4h2vDl6@1&R z*DbDrD&<{Q@TR8u078K^h4PoJu}>W0?{iE?;V@$)2|D`tWb_8@=NI1MGMZ!pFj4P- z)Sz3I9%=$~cyQa4SqUTJUD6@mAVo-3-RFo9m?~bI2A_^E;8+s=!i!Y;9ITof*yY}O zb+(bp9dUVs4N_DmWuaug%^YMxYjDH&PllU7O4aAjP)$84Gum{*lZWGk(KJF@4#TA2 z+jmty9m;^)?K&BPNm9@b4;xwlg2=3@d6%x|nWXHp3C#b60s|DL@$&t4#7W4u zdu(x&JnE$Mt6L^keZmvA=F^Vh3Le-YM7e+7T1iWMXYR3s_lMDUdqK3}iow9AU&ZDY zoGDkXVAErRey*UbX-|Pi|ARUWn{L4u62`d18)`mLt;UfX8*uh@Y{z{HfT5^}YD-9> zGVwb4UIp*jXNrrJZ`*p!BeIYVFZ@c4`D35#+f&${ta|SK>{##wP#~ArebI5ZHb-~e zDtc{@R%&h7WjQMkQR=2*46}{a;xF`kR{cYGv$DE8DE$+QOYMft;?JA1k(-=u+(=~W zmL{=CEp>^HigqJ&QSWVJ>6I|KJ=~%bm1PAlQ9n>^&gx_ivYV|lYEkD{x;Cm(m1q)a zhT{Z7!wXTiQzeBcv}3OP@LNu%Fu&vb0QNLJW(|6K*WK7azE2}`p0jA;>Pv$C*^A=v z@rZ-?s?hpfU9ZB{9@skSk<(YEKRlDx#4yUK^67em!x9|k#FCcLr^I2}5#1$> zE38#wuVi}hsnWW$(Wz;vCK)NG^eVMO3O48-^*YZgGe4+(!mc z;Eh+|&-)ehKLEN-h%AjvOjoslb(@Q{*!ykt{5f-({eqN@K}?&3H^uw{!kd**l#K3U zVgIE-(=pS>8+5zu9bNzLFB59$n{6Rf|jhjs_tMG-K>V*n<TU!Du4A3pVF0q6?fO*z?6&JWIC#zy4VsMdy>_1!i0?x=gf|BGtAUCAiZgeO5)z>%5`R*oAF%1ID8nBs$Idc* z)Fb3IGQDVug7FHNHaQTJzj_CoE~0Oq12C#_O!+-&FoJldzrT;IY zwDyif$8D|;ad0j+#amT>#oP1n(STMz0f_}S?mA=8dRH`F<_=NOGVI;jT-M=l_dGH^ z=|Jqrpc;v5MlQ#teESb4U4wMHs+fh=l$&e8VU$bk{kWQD-rKE;;1+B>E$xsWYqKX0 z<&jg|Mn4Evy`TtsVBKsNHrE`wqdT?DCidQaSV_o|XppKlcnWMQrI*sG6Mj|KW8XGX^AAgK{+6f_N#*$jrAHW)x*WIm2U=nRL&HTK4{dO`Y~_Tn zlIhl*s4T(8JgEJoC;LWR@IccZT8P@LE<~+Sr5Ke9zBUB_SDYw5YP8I~N92O5sEj=} zC%Co{@2izZd6;5+yK9%C!gxfY`{pGk)nOx1^eSQKjf&-YzN>*gB7R~%@`wzt_boDt|OwJ{fm=KF0o-pzcjn{e8m!Q9t< z|2gaAq7eupZL?y?;1c6>H=a03zj*K&?)vcqHw6BEo2V||nmgn!9pfbtEjLw4+_tPL zL@@ec0eGY3vif35pisXmD&X|Ji%UFNxPMvig`aZi8&-P_5Ui*-LH3C ze6!Lmf7Z}B4j$DiFQc9WV`{S>-@Vv+3rU|B-S^d1V89iDm9Y8U3X8J2>K)7$@E zZ6Mp{?WI*wV;{EewG-!qsFKTG;}Go4%G6>o?my10oj@A~M2d+^V+3QyaR+WIC}iwR zDs!k3D;}DV!PVRrNT*m@3*QPePg*N?$6htE6h(+J4*T)NQJRxAyg^h6flbZiwaXOe z@0m$ioDZ>@d=C;>3l3CVuFbAxqPnc-JTh^7tlVo{4JPms^b?mG%nX%AhGkfWjr?QZr8^z=Hn~{`|keVP+swYpd^(NFmK_HaUjZ;4-}RqLW;XAs_M# zANBb5d%US^T+qKctdp?I;7l_}<<_1lWOt&$=Q=d+TnAb1KYQ_1sjlB)pA1f0@wt+i zxG)AgCC_fUv!9AS>d> zM1`r+BxSlQglG=-{VVV!uZEZ?+cu5Dm;y6xzhUwLFAj6d|0M0}Ezj=1^BN2Vl9(!S zXAlPNu>M`g9DID+o7-2BPkzOIiWd1%S8S=*k9b|I@kBXA3Wppnae1K5Q(RoVE%~Rs zVV!dlxRcnHG@mR+?13#4W*v3~(gSo!-@)#B^j-v!XYi*_h?M4iliw=NtM8ZXd0v*3 zdsKkIB$j$h{TOetF411N)sZ-}p7UE?@6~M3!GYy@t67A}Di3IS zO^;ILNZ?D0i*F|KwB?h|^xf(g1#V807n~HXJ#$g6OUMp$l1>|6x6VI&nw9_+aq862 zt#Gcml-$sbN2ao(^=j2jEZ8iETjHyJSTZT4)v6LbE|~DlhgwPJXo6o&*|HWAAYB}( zexEcb(Jn@V2%6;jwA@XXm^!4j$9#PQ!s@D~_1%SjrL$#fl;SV7y+d5`-7kqnMp+J? z{qLdFS(A#gH|RE8ycVEvm@A`cO!YKSDF^fmnEHPNNKSv+Ru)yVS6Zj}lS=QJcS=YPH;4}phCP}t&JM81*HnfgIYbK^;Ske4#Pt4VV~6OEl@F@6Fll_{M+tN zjAN6gbw;WwYjLegTealVZY4IYm7I{k6?;qG9B_%6eRowk+kaf}_D5TzS7wfd%N% zSPc+GwtO-OV=OgcPNB(M6k}1#G<#4^S=l)e>v+>gbEMLj;U!!I7o%U(>|5hM)XiW zlH=UlAGxPZ-u6<~5;Ufr3SZM6d^i{m6N|pdGE=e zf&($Vf7T8L5I*3;IbvQtE*YdMrXvAT?4@dOt=o=OWNc;M-t#6hZ1$|47a5%MyGF~h z*VMe!x+B->-apt2kmo}A&u2|n1jGkmF%=I|IM+2XTqlxR-;Om*+fLuFqP6OKCh}`6 z+3I^IW)ovMcKeRvgYqxi6USa~I#F7v-6+v$SIMobNwU(eG&{)3HLDyOlSQ;RG?4LS zWE-d?qE!@cmFEz zxwGcrg9sT#RI_aj$wsGwL261hY9sp<;~w{~4nVg{J?qjr`dgjMT+$tQ(&&GKx_}U+ zKrxzMEi%$&?Z}Q zptaWbTiF$YaF7u(x^o2w2V=}D4xdl!do|N#jn>tM90K@+Jy><=blw`fs)HLSW4BX> z43e;syF?t*^zIUK%sQ$1Be}M%e+!+dhQ_a)Q>uAZeDF~gfeD+nEiKZ;u9v?38iNvX zA}uLM-b0fp=HhW0<0-+2=c2n-z3~>glGO;MfOPWC+ZvJ8B9g}=Q~n*HyZAtc~y>SLx{=imIc>OC`_3I#8-h&tZZ-y;cy z;M`*gT6`Uw3LG}BbIH~pRf3=L64J3F`TB+4F_0fUi%fDFZNsDI2G5fnn&W%MRc7qE zE7%|nwKVU4za6XcnQv@0(VhLzFVSs*%~!T?cDfg>VC7*32sA?ICEGh|3mJ?BGk^dd zy~owU#x#_siE+lL*gS#44#3ikREEBq!ax!G0_6dOdQ29_(&^%4*RBXsG#!V)ilJEB zNY4qW#;Bvn&!ZgVm6WOvqX@biv~#P%G(?NEi0s? z^ziM?rxly>$jYhe{6hda#vw)XHr@af_|>q;Li#Ri&WI%L*C=?FpMtY5@A$v7&SB&V6;q_MiZrOolrxq$w4b+h>dH4P`=$1OgmD4N^N zwC4#8w~f4ee{gTsYddk;p#Rj$uq(^MyKL6?d=nE$q`YYi{6{x$5)`~~Df$FefCg*kRj>TY>J;^=?!Ch;XO)PL%}a5hyyDn@8|wtW?lI#4YLIN0d- z)n$mdM$4nhYAuHajO@gptBYS(Ph{xLat7sW?nROBO|Xf+iAPEw2C(OX&1(|zOY`p4 z&tF~_lp0hZV(kh+USa_KS1bj`pEUcw*3lI*^95PH z$Qbc6x!9I%z|M@ylm1h2$6t~gtkYv9qoiN{i)5piRa-nh{XNNN)f>y7;-T)ToI@z$h=oUhZki4DLm3Xvm;xIa8ArmL@Ao1cVoLCnB zVNJ=Wv6;QetRH*cp9T z0S#GS7bMYm10J>G#6KbUL54D<)f6%$vdbdY{>rS3MgQYRvv_fft9}e_VtJH!wW;z%D)^O#@7`^9tN)T zEJfmPi%XOsO6$&LNEN=v)kMdyOo`!951(ipoIO<_*c>Q|P+*xuw47bs;!yQ_>4}1J zE~-OZSQNaEW|0G>S?%VVWxjZ&s)O!+@x@K22t(bRPXf*Pe?3B&Yp5-Xzuyg7&yhVY zbg`y;^sb1#uBh1#ak-VBM7?FNttmHorjqMi@2TRDB7LWxq>^Q6fXLRz%d3BY1}>sx z@m%MPz-p1~qhNQvxbwzv+;r5@KasOPx3%rF9)ocW>AW>PIYNY!!?1V+VtT8)`|^Vu z-!k+|=YX}Wlb09t)=kYF$y--aJI27L?uclwRb49gt&GiBi|GUE3qa@43o@5Z^df1~ z175g7n_o!cP{hw^1~+#Nzfw<5H6v5A!Py>h7e7hO|DPT54Sd|-8##()>W=I=rZqpJ z{sqPcQ@$M?Q*wfF6XTTM0_=D6BC%g2+L;E>?c zUVEhBKmu2bu`NF@hmYA5CFD~H7EKXnJc&hQU51P_sL>ur!^xk2woG@{R8tymf_xtH zfqQz%JhDZ(OJ%=-0XCx;j{7(IwSt{?(-^wv4`>DUK7@Lav4Ae|MUSL|(7%HxF*K9~ zMkX`>_8_KGdP=!Lb3hc?K8^aw(Bc^FdK=;VwxY#bWO>ssd6daB9N zQMr}*n6tXr&4GQRdx`l^IL%0u(I0C;eIsAQUdu`MOo0nyy)}`g-?4k*TfyOm(0yho z84jSlny~rEqeB1U7Tq7bW+-cihuwiW&tNn;xvF&$Z4;%&je2iz_Paed#>>>kcc1T{ zos3qgZfRdD= zB}EgOdS!MOObxX*hV@-Nlexll{Ba)w%RL;q7^Dm7^Qv&}mL5 zzr-KksuhgX<4!el)pA=qTk9fukppHb98)`a3A|4tzUX8+gr15<2*E}YKjyWM^wcCA zoQVf*RD&IXNG~o+pP=oS0mED}m#_*S8Qcega9TT(IU~Zok=eQtFLOl6+)QJRi z!s8h>?Q*X26|`EiWpRQ-*TQRi*F2|&M&t8r5>LP2^zz^FF3f%BG*558O=Ur!JZOkG zrsi_s5dLTzySVuzpEtwY+}wIl>ad@r`;*&@OR}jpSi;xcr4<=rb<5cWL@XXGe!t|Y zOay0e6xd?XAvC)Jow^aG%F@)38QlG&vl|iN;WoXhQm_Pg;ZoQ_9ui(i`KXljCYD*n z;QxVnJ_d@3oia7X?$76Cva_=#cZet>u#~m+7XU+>sdM1@&maAY-;RV55R>lR%29^N zde;#I54?-}<9dr6UZSyF>vB9>nB#Q0Mrt&s#wPdcx5CqEIg~!@b0&{0(YXNu*VJiS zp|y9%&sf~d9+U_x;Yh)tcVT3r>xu+QDk{l<*V7eAMr{KdVRt%Xde`t<>AS9G(Xvp1 z3A$W04w(^NouPk6*7SGxOOqhg4Tt#!I~mGzz$c;|F51|{;)MFH0e}y!k*|yn6GPXQ zY;QPp(XxRBe`O<$ePwhld&U-d^Q&j_X%?O!7@!vx@^H}zd`?$Ltnt(HautT5ZLkt8 z>rXYxIQ#HGz+q8FUDV9$1eoN#a)DwpJ=crwgfT{1WO8Yj2^<>FQFYhGzPrVv?5JJM zC0}{}{MDpk%csC(`;V+Fid~aW(=dNvrn6=GOY0$ZPsdXU0N_3kB&JZIvQ^#IhzT{mQY3s({urDazAnIzyg@CG$3sxw#j zeyPInTBCvv*`p`mD{KwDfDAAO2#(Hi7YLQ=B7 z1t|)S@7mTQ^`6|Xb(mgg zn+dnDb*_uVHdo+_I`l^Hz#W_(J8T^R3O#bSe@*_>)8%KPJi`a9P6XAqf zGIKIyzdo=F&3S)WdN5Y79l_fm2SUc_-%)}ZMXTZQ=ofO%G6XyI*N%ke{&j6;u6h1T z!?@y7o8!ue=UNX zBeS&GOWb8nTRmCfF=Nfz$4fGy;5r>?qmKrguSFD?u!nL!S`*LU!_8^NaJ-wP9p?V?TQrypWz{q2vi zG&y>2@Xh=e4+g)K+QUDg{90Q-R(RFI^2y#?^-qf(gumye%3a1;j;EzXrcVpoi!|yz zIp&(wu9{5~Bn3vpk--hk7pSB&+Cf=uBgY1f5{NSUuI}W})hvGMt76T<>te74pSi46 z*!?zlz-j3=6^Lvxp8poscuP6B*p+T zeD)vqmT_1E@k)yUh=4;I`fy&5!(nf0ECzFw)36@Rzro8>jgA;;v7M?JMf{j^9#&F_ zeUhag>w{f`PI-C;x55iaYcrpFSrz#lwyf`aj%sSB(AGyHYxtroN3s6+g7x}C{S{ya**D_ug!})@bM^x=CzBtUZR-W`r2%J9u zcplRND`zCJ_(H*x=g~Vh)S#q)Sl)a#uB?AF9fZd`x8n=w>W$FUF}Hwr^X*Ni?&5GE z&QlDp0jsOnOGJYQBZ68K&OBQ=TF!~rxFQtnkm7(z9FqrsYVt}vK0!63wB5=Si`48L z+%i^gmB!GdJ?(b(2_ATUJgpw_Xr{_iefTPY%fS;E;@5O%C=b>saZ$e&zu1vZ5%+08 z<-gqn{D^pvXJz$d7Bda>m(fLw=nR;`Dxjm7q2K;EF(h)MYRfH}YXcP7YLL3#r(?Li z20TuziQ)mx3Re z0dR&1IJ+w~Vik*7f~4qL`8OOK9F862+5%@IyKNNkWS&#SS+7l5mX_eBdKtU9L3cfm zZYOiJaZ0m_i)pzo+Z}U9Gr-7@f3T`2z$zWg`QYI?nA7A-9%za*?%aR4 zTIO=5Z#7n$f}J~NSO>zIk7xDoi>xvnTg{r$$|!%YSx0D<>cGJ8TWCAV6eEWC1u{95 zRn<=&!AcJ&ldyhk~OsYmL|n`|((Cl2WuILIS3 z8#Kc#H}V{(R5+g>DeHUT%Rs9C1~z}$8F8nClP;&GZ6~oRZ5+9MvDwYqyNoQVT$mGV z6MiI@ZMin|O7=!DE=EB2B0p`!fM4o5cRTOr}Td?-Oz# ziJsxlNk!j;|Hx@hYNujIQk7@mVSxi)gJvEFqp(&QpP%{0Z8BYZhC!P_UM}$7tZH^zZ-j8tkG+f|!_} zkin$`QfPLi0Gq2}t0gUO^*B}FD?TT+`gj4G=#d4vNLq%6f7JueIGgKb+R3Aamq)8- zi(bfVgpWv~pwQi91o>|wmNzlYc}qSj&jd|r@dX~-WTPU?VB$3K3F6qe4?4swtcZXx zM@E-$$c~6!yh%+F1&TBd$9GRrC4@(zkT>w{(;lrM`@C1)t6QNY@VGmkYeRYb)??f} zhaSO;w^MG%b$H8;akI0(i_{W!-+3*3Zlj{{g6(D{Og(F9yECm+ogPMZ381THlc>%_ zRQoLG>vf>Iwi{Ys$b!33p$vNZ4vTT=>D-|ZD{ke@M^EK$MIIgUK>Zm$(e(ZkLdyzB zGno~f%)`oX_T1jc@8W89+8_FT*w2q|aTxBFq7B!@mzYtO#^@G)zc8{(*J`wqckg#* z+y1FUnH6YMeFI!UtMK@b3w_G?C#coRKOfJ}%Ww0m8a{_mb?#1%Ps?ed5Gp;g3nofPNZ)gzuTd)I8RmHw)seKGzV zQQ?wbRL1+{iU8#x&%@&L{yC4QVU49>*Od9)pzh~K6W>R~)ZR!-3h4R$07CjtKAAdG z(Ns@fG`MZspws}Q} zVaZTOa$(gjd$mHU!ZSVJD}02ZMs9VV`0gu9m%+r!%}x2r%ga=nfwB|awW}im7T;$t z4|T7Dws2QLr=LsyL=YI7csa2vJ4tYbQKPRthM3*0OBIw*}Nl+l4i;yS#5TczJzVFFU`Qpqe! zzaIdzXa=@S_nby*wH|23Phj~50y{hPY|}!xGqS~Lz7FW`vTlrMLo$FLPSaI`VM2h} z{`q$6lq()TOYRR$c>L-bbCBnfYbTX?x7tfu%_-KZH`ZgNarbFO+{xp?s9hTNwKEzz zx)t}5t|+m3wxzW66%u(7!CqLtv^lB<(Tq|*sxy?`dbn&W=;kwc@feX}O&@a*IGa?L zprzMXd8nT2Jc)ZOawc=uwk>B+x&NKrLcP*CAi@4)j!?M=*adCz+VchnQ%P9A6X?gDyk&z`y=b}8@xeQm(Qz@- zA1&TK5H-)@MyOd>A!D5)bC0N(%1XdIK*skjbY(j{{$%AAGpr=J4w+gEX}ZnHxc#(f zxr`BSoxPZn(neG|XNh&Ft%7ktVJxy? z!iRz9+AR-^G_NKfn}*x?x;8boe7__e?OSf1-rvG^+4ty>Ehwhx5UnacxFkw)t)1RB z`iV~hx#O>jkD73kL&dhg{rM4<+omwQAQ=?+Zs3c#O1Vk0WiWdhelV0enjIA@g?C@r zXhQwbv&kn02%BDW#!vToR*pdEm293v(70 z7SF^Z%%_(`QVLTTGqTda(2wreXl_BNPWiis{}yC$q$gm!$fFb_HcN6jJT_4wbbD0I z!^W@?n%aZ}GAdEmQZsXNubDjX$*S$p0ma!9Dv)#g(6JlF*;ga1KK&z+OYn3U(^Jt! z$Awi#RAU5)sNBI~M97TT3XaZEDN1Os*r@!#qxIsUPYufH9v`h@8Fbk6NoYhrk<4d!*> zp&vgBIf(^f3~upD98HqKRyE2BLBMPMNgJ#>D&SIn&W!4i`o%?M#YLzkH^|3yS5Pos zKI2#Na@n=hI3-V=E@y3;dV+Q%lG$f&cYS;Ep_;mJQL$M(+0SMjgV8+f$M!K;6_TWF z=#sek3RhYz^ISAi#_Ro1jU|{C;27@peZ9rFB-v7$D;z zAk~?q)nH~uN8L}3`}bDEwtD~b_1+(F&2QaR{;vx!5nOoLi!Oh`aKl8Q_2J`tKA3>p zkC4j4#DZzB(X(QjydL7NhChd4JjF_xRwa~%7u<%;h_T2Pjq;?Q-$UfmtT)vh3BbU7 zk7#beZrppd0}KAo>;s9|YbYcSxOs%^9Q}OKZ^4m{CjLn6lrW$QLCv4fXseqY)f!I* z>2q7JE;0w2(8RF^nY2QiNe9`{w-WX-dHRNAL#|yykJGU{2f`Eg6=GkkCpT@ z-BN{iy4BB*O2oOa$j?U-O~TIUSF{abL+s_pI(3;_Tyk} zc;;o-%Q3ZiTaJ?XaFn?$v|6nxNYB%x+m2*yVKt&bv8DB-H;PJMjKc zPVHMOjv8xf(^3XEy$~5Ec>)Ya0jg>_DoTn{L02McWIlNFWI$^iS zOM(HYCXGVI*o?}T@m+2ghf!ZGA)H=V9a((UMt?_&}~c96O|`w zn*=5*a$-Q=G?^l0ep9=VuFXG^RF=v8ri7Ks%8FI}-@fy%!#L$namC`^Yo~rwMpRz~ zvf=z*z6fZ^CS5r`n)(sh{sijNxiy~$+rwB*|C0HqII0#t6Q3qN8bZ1o@2kpNLpF%; zA56Wb&MIKb`sssyO5__i2)0+g?$3F-fG(cJ(qtr*dN zU?4cS^ehVHylSLjBi{qm7ns09i=Iy5yEgF5Z&=XR`V#K|{89G?kshmYoR?OW8WevM zrd8$=H|afxgjlOL*fX-c`+QWb?V8{U+83Ld_KrV$h8F)`bL=wdAL{eomgrB4BBj@G z``laol$Yg>v&RChyz1f&LVVnK$--dOhlGeOtV2)D$ZjY}xWKgZhr30BsV0v+a7(tq z&6t$lRK4p&A^2vGL<{RW!{?UeT=vDG%D1qS#knEk4JVO@HJHT6?=jq+X5 zwAJkIKn}`K87asU)J?P6fAAfsZly^`NoRWFj_9_9mGb~x#1HmW;D(6GEs?8za1Q>O z_(P&ikhSg&mb z39ZIHq~c<#>M8DNDB_hf`j5$FE72@F0b+lmdtVa}04kzMs;fixc)sMi?>2J=6bK{h z&z9mMrNwtHnqlY*x0gjiFZRvB@_7L{vSwplyLI~CT||@k;6(5Mu(wbUKU-zGd^b}L z{aaqYLS3#_u$vO3u?v2yU%Y62aI%WrC*XX*Z(A?dP9|4~!aLdkh+r_%6rG++0^$+a zw4M_xIV`lZYp^S*1RJ4*@v{B*lZ*v){`2K;2wONPaP)2ZjnpiZ+Q%Z)nC!C^FO995`ppLn>nA9Sh2~0y(EXE04_x zD{$7(S`c1e#>D~b^cBP)?U z@&Gd%t><1V!BGFl$ELZ!eYPeM?9OdZLFL;X`fEs1cho&#nUNejehE2jlwh&W-`bD$ ze3zT$LC#V^e&y`{{8Ch}Xyjmb(kqOMLm#`zAN}PgQyl(tgXRx=5VhsU{6E(s+Spo| zsh%I%O%}m9j-oSOA1yDQk6!*7C9N!`@)kb1xmykq6+fOwt!4-B z^Cqo_XKac1Kgfa7IZtCum}xu*>Rm6AL6V@pqv-fYAk?VFTn^+{V!rd zZj|0ulOc9!0K!zv_j_lKkb+Qdy(za_1Sm52;eJP!HqaTUn$Y}rwfs-n+$2%O){Vgb zuWls3LAU!ety^h1t;3?L%Xo*%bw>WqD5W&P<#Dtc=$~WZhrwIgEP=(&d%7Vdq0-#U zP#heiGfUj1v`1N>|H?xzI3lfLW>blgucb?^d76&>hY%g>*J!CVUC?5B_o zXFroUcqS89qUitE2}~b^jGe;dp|T)VAz}W(1|n6!lJS{uNiL0?u`=AkJH9!$QZ+1v zJlNkkj}dx5ez^=7F{#%t@o}6<=XI1F856j%m|<8zixlmxcG}f1VF_gQN49!t%gbae z-cOxg;`CXTFsmlsZwVuj-W8%P1$wy@8#H{iO!M8ZE}lc7$$8@ zqexy3ANjzmXTDc8t(I3H>JRbMX@iCnp4-Q_j|ILuB(L|ATU!jtEB?t#{OKQ4O1MKL zz3&O?RhBqyd`-ad4rnN>iBYf_KEnnLtuli(L4;8IFKnvr7!jkr#Kq^uzrRrrWHx3^ zW1d$P4u?LA>JR$%4KwG*fo-lbEUGnBA?VxpDgU?TDh@PPO!t(rf@LsG#$%_+A(yQ* zP{)*GAClgKj^n6!r?$TGurE2+=1^f@xwz1*$m=js3ncV}-?g%1M$}vxPx7x>av+Lc zM5)OR@)k+6S^EC!Kza=PGd2oLpQMmUbas1*7eAazezKGpk z2X-)mqEzVrKeW9GIMn_3Hy&9AVaQU}(T-@dL}7^R`xZiFiLzAo-9(WRDJ>*xma&z! z>``cu$!@Gg_I=Ni|M|?+eb@8+zR&gh|DONrJ33IF-D04G4!%Ns zuFhGv4>B7pf|IZ(C8{BI(*6Yt@Ai-A8_n^0oRFdTIrs69X^KRe>tt_H?8Aqtx8x&z zF9{!)ooI*7wXI>SUEuleglTxzHa4wo<&8GLC>QGT_a=^3=oRQZcgYo9>$t(R}RDvEqjZS`n7B9_VVv5$V5XBm6SM?lY^F)ATsp;#Z zC2GFjoYCe98u$kb=H>;7ZIyLr&8dDRB(L{)i9RW5vN^Y^fr?K2WIpN~)zsMP#+G;dFaW~r%?UgZhfQ>>^+ z?C~2qiW9NNuO=O|tmx)=p8;#cu5-_*#P#e@OAjWvT{Z^kuiW#)%ZuL3EhsT)TS-V% z?{>o$QOmtt!8$x!lUe}nRD9H`cAKEk+%pO8djiM+nK~YqJA3x;Uz7H2zUJE~uc()j zoGn7RQ&Gpk3ibs?-Me>wtmgQ32bf(k$06?qvu-Ssow=5EL_Ht!-pT6$c%keT_(GRwMfe+vHG4ac2AXX!el^6J8)2);H2$Ltur(U~(TfA1-d@=w^J4RlN-A!hU{eZ2rUYT5{rTnkOmfu{&R&0aE>v zV5_Q$p7}Yi^pCF@JRB9=EmeDl1=ioZ8b7(cRj;6*BcuE0?X(Z=24`bfZ>dLTI(|Nm zW>7dl7#te9bT3`fkvMq!!N9e$c1xEA@unQ}6LsIy6bJhRZz zNw^9LohJo==N&MLckLcw-mub`VIBxRBEK0Y?G^=@o?xDHhF^sQ`y{mS>c#2x*Wa-| zic0=jc#kR?aO~YDXEt~U1E8R|wLwF#{**FCkCGhF%)2ba`rf4u|K1bx^X!__3QCw^PHRH`p;sDB zN006$pzZ)dUZ9}}q~HypF2x?ZCYMf+<((Dmn+q~vch+GVW)h)1lr+1`+sXHIu{7^l zw^7L1{U|oz$THl>dGxBKNPHt>Bqe91KzeZ}gYZ}BZF@AzzVY*+6;f>1$BBiR9IB-i zJQ5Ba7(i#VG`$(WS7laUC*ZfX)S493R=inTBAfJjjM-^t#1Rn@O=QD{NL0zoii+m> z;l}o&kow8mYxVsCO`C)_QTLwMWZkU?Qn5%K>=yjr+&!EMa(-6j8*7S)OotW3*_&jM$$`0hBWL(LWXC%oJ zcn_O`N>t&MyZY_zY3{vZI{@9i(?I*j&rzTI&y%VJZe-6Yc8Hr>?qutM;apoj3V{`S zfd(taG0}YhIC!@JJlhN|<=>G-aHfC%Lnnh$s~xGDe}OzGW*eg7_@w`ObUk=q z!q4Z{?b{5a6<4gtM`uI^veX<~Y~B5@>b|ayi3%pv^6V`T0F0fDj?DM9UvBo9%Makj zwubN=vL78?l>K@jxQ$!j1bFv$7{HTrqxO^{xIR^+<%8cH2A3Th;QE(Bzo~UZ4ZiXY z(@Ex7lJsEVr;$W`xGWc^d&qC@Q0-Dhz4I4uJCF!y^VKN%xFlaABZK-HkGuEs^7IA> zrD@!HG)ieO`pr%XW=ElI;rnV%Zs|S=w`72LAuBVwD8{Ed+kXYGe}p5Uy6|2r*M6@K z3hP)$za4HSWi`>UN7I# zRTvizZd0bA)=w*#1!ekDgg!B$3T6PJ>EIhqS0A{-59CQgQk7N8cmExp_?ODU-a$OC z=5qQkTr)GN)O6n{dk_%qpJ|KH|SCq zJ}Z*kYF6x{CH_cd+$j6|GoPv1ma8OPcO8+zNQ!(P_~_G`@c;ca>i=_j+(Vz(QCZ8e zw?I~5hyhHHCtME*w z{N86D!9BDgCD8S4@Q}X;iT%ZJ{~f6W50j2p#=D^ZbivC#d-l}B-j(ODk&=~@^Ws^y zFU@Z33M{;?s}CXyQ1NYBw<*%RD+y(#7c5wF@=>{<7gbnF6Pt!6o;v`u{3Ee4aGdP@ z*c@mYK{u1wV*USuEs&&!uR}GJNrl4`?8uRauo34Y6p}@6-MUpf7WypbHrmt-zk;>V z;blr8cQWGhafO5(POL9N~f)qNERlP+S`N+Q>tK%rgELHtqljf)^K=k%Gg3 z!F28|Il#{35b88UuV8qncA20SA4>4)D)9SE98uNMVxrBHc08s-0>{oR2{)>qf1}m4 zG$s^8l&06CzCpm?Y>MG3C=hu(d^Cq7{7&#KJqOmGL7R!BkOYYv|FR*WZtw=Hjcxt2 zBo#h_sBqrPe(G!rZmdWvHU>9?4z&iL`M`dyrw0(2gc4o(RLOXfkfU#c!ibM^*`9z+ zsXq7a-_E`w2x_%xIB4P^!nDYqHj0&RnPg5dk2Dx%2y6~ccSsa)a_DvX&nvzxU_P7Cz zmI&hW`(`h%z2?+)WeYnnLEyVo_$ztjQ`0>=!O_6(hLMM2GZcRe!TW#9yG=KAoOKoM zN%#Y3MtA$(7E1xK82xwS!|XS7;;4}E8r6u5zETeC0=p54=*g}8GXEEP8AjJuNZdS- z2nFlyQj$W-w zJI5a)W1S(%9Nx+zIjN3v+?Mgp4HPVyMgKqkdKh(VMqGgzcOPN5e3AufV|Fd~d#rst zoweHKTMrFpSN-)-t*SH8@T}d4Me?C~}Q1{w#E?iv}&ZdqUeF_IY``9GN9FPLCk zYwOUD-^0GJd?UMT0|Gkfig%Kdc6Cv}AOo$Y=4QvmH(5K5TnNry1E|~w=&f|lj2NP) zPyBMyyW0bvvlfeigT7ee*ek{b2izBYw{)08u)gp7i8xFU6VJ7>lp8B2LLHSUp|gz( zb65hT0L2BjEPv|bU676ofru%kee$18X{f6J+pYsPgdH+cB$pxlF4oPhus^;~2UW;w z|H_L#k+CjHh7=T;qZIF>!ww_@0+^%wsRV~2ogcIw?vaw}Jj1Ko4AUAem=F1%c>6lHKr9_fQ7W znt^guN#H)so|HI${h(#hrw0;zuxG?04in{m_AHO>?i@%)T)xfZy>Kf{wJgd!8QRgq zi&zGJMqvj)H5JU>6^Q_hGG+xi#^=ZXnKD4of1C^yG6lmkNFH7sI*%ddW#trx7)-F! z*?f#t=HUhw2^ZNFZyvC*ShQ-F17~YUuJc2Dt563pl>j7(Ny`tJRI~Z@>pjFUz?LS z4LNAC%74~k$U)7`MF1XpzpU(}TH+CJ**PQ@xNsY*rWPi4xlIEY`rY?yHx~K@gP$Qt zl?y6QTu5#>`ZjXPcRS=!=6Tk)R8dNP)4k>2A+z}C?OVl9rwyR{v+#Ks|M5XjRsBAh zBw)VqwtEBq_pt-Jkt+)qj0lA*b0uBbA49eOQh4AOhVBtyI~92Q{faSgLh|lvG9^0% zA|Y?7M8jCPjlLSm^3{H}7kqo+?Vm58z=vVdLG+mi8D3j3TZ>98RH6+Z0v+e2CSb7tjWOK9 z6-2E}vGgy&dy`;T9QeTz|CvQY4Zwhh1d$E+9`r5{6|mnU1_QQW{x3Ym!lc9tfA4Yc0ILp7=yx{hW@g}+3W^xhe?81Xl7|Ti^?mQ(zpov8p*;@K zMg$W*0aT}d$yHi7*dLj)F=X9J|HOaKe1%>mJzwog{1#@!_9;>&8KS74)$P-W{QmJF zT`<4ZYjBlPetEW8Oygp~1n0^PtyJwFDnikpE**r-=z(9MUF}$U9JnQgr=Up$cUl=v zk<6{fhX%!tLM$qe#DC9eIs)fE0I|>J_WrM+n}S2JVho92KqD!PbaXjC1b4sao{a0v zm!mTy1AAp<-xM9>5{5u$ApL5*YQj~BV~EG=qLm>(2y-hzAr5Q&XX*Ph^uGgK0{yJD zn^c}FAjSf_&G^smnE7~+n^ncPH1O6v{SaK~ zqf{V(|$oZE9k@G=;$c(~c%%90skGC{nO~7Xz&=}T*Btvj4@`UF&MeGNhceo@^ z+`$1)ZU6s+r-(NQb}HPPfX4bj%kO_6nw>pWSLR$5b|<1F)U_pBmDjexTlnRtiduJzhV&9i`cO=NK9e z0}JtfzswoH8J{toj0i_oQNPAk&??OPu6X&vTM~Mx*V#}FZT15LhO{zX3p?9h9xhG| z^XMy}QZT2pV8JGoQ^R+F?+zRGX7ab-2!qNISi3pfr^s4sOyEB+k!i4Lcpfq-4#+0H zM);$lAKZa;%5VmvNtHHEN7tsSVD^V8uYnbdFuFuN*W3ZR6s3c2!Y5cOCcJ*#iL3z` zj#$3QdxC?w*Z8cXjf}Uq_Y~mEAcbnG7e7L*ezesmocH-%;ass-Y5wAdKo0FXNX+V2s@rVe7 zR+0N~XPRq;(ZtGt%{$ZzhoEt;3wpHP>T6bvogOdJH+j2sw(Ese9h1-3cx|FS!_W{h zdG;jy-EK-?3gX^JmX5qz`MG9XGP5&Yo=EFCXX!-T;k(Um<$R;easj}Mj=l<~Mrg*4 z&@2-+MESs9*b!HVz!CrwSWb-y^FbQaV zmdEfJ=`s^Us9|@z3y8J-9KG*U#~yr z%P%`8tDp6KXvlWWda`cmLs9^-(!x)w?Ysj?DwNKp2)J;NL+H1&vLoc?5r7$hemB7W(<~q8tqPd3^C*rW_ z(>L!hkw}z+Xh1IXYtk{X7IX)KrJ%m5f4F5Wf45(M9v=T8?Dp-h?%hUi1WU_+`)&t2 zGa9DjMI;GlS{!~fwfV0nIx?0uA*|(qCQPH3I!bdFyS+GtKjWCcZbvoT^kDbHVmuJ8 zlPdy#lN{IvS4&cD2}-!CkjAZvRUFI%f$pq!moDWYvnVf7Ha~uqt)Hgl4k+b4XDMa@ zpjHfXd%wu^cp0ipaaOJzKnR(W~5OR&+5;#wyUc;D&j*0Q;}qS zrd|&#NH4(7PQuUe%Adm4W?9iNcD!n##?5&xU~_u26Aip8Pv0oE6YD`#5emGA60Ul-?# zcf71Nc~Sb7jFhqfNnyldL1|Y=&6I(@GJ%VGSxy&RTXdfJw-850RoxUhF)^fE)G?+V zo3&|iqbLBggP2_q6u!ei0V}rmOOcf78wEqEMG3=429YnGr&e_X4WZX>`Nl*o!tjjDexJEzR}x@bGY!;hWAn>>n9KUsYwC+gTB@m`e?1 zeTPHk3sJ{3ea+2#+E1{a)mt%&pOO7Bc;7L%d`WHQU;zJVOiSN@@-&HHdfUMRiQ&FT zCPQ(cke*hI*n6>e&x;Ee3ub5WK``s=gS+dPgE%8@G~ABtJfx_C@`%B_-bRVqvlo<} z1SgKrAu%COVs&`YW9`sucVIqklXF$xh*&CG-B zMlAu@x0mrL>GqXnlQ0&z7db6xyu#aD5WsXHT z@yXl;SSicWT(f`PVYLJS4aK=OskXsJ32Uvz?=Pto{G=RQVTnBWSJA*mW_0zVWG7Hq zN8B;SF!v10?6J6_rxLQTmKwGUm^tcG;0R@Y%5(jQYtV&iX>BEzduSEAUB1vb(JJ9F zga>A7q(pQIGOWdWc`D9`CiRZ?v;0&2oYTI82fZXe|MvFy>BJnIiyrklzUXV{;woiy6FvI;ijj5a0vlh%zSDo>yHZ7wI+h6I14_W)?j3xrm|1c2=>u8>9DJ=h z;i&raqjtx?z|tP;KE8R!6BlM!jP&$aD^8@f!Di-`D|3fQw4+0uYjju*S@)y1*F)GL zVn_>n2{ZjnDub|g9miiHx(q{*#-(BnCyM)gYxrJoYG;?CFCu!1j^1?}o3PXZ0k>4c zzfLf)-X9kZ9#qU)KfD(NNMaJy9&aK89Nds+W&Wx3Yy}80OYf#;NER>s?X+O4db)dEru#T}g z>bBqAP{Fp}Ul0TlgNc*iz@Uk>RcHA~Zs|p8vdcNOzAo5PS>}`>oo@RB1UTPWl5ZQl z!_FAzh!aY5-W+!`D_XF0?2TZI&n`YB>AWqYs^_JZ@_2Jv#OSiP7}ym@iUxECU`9{C zK()BsHCH(ia8H%!{)~e9k5N!7SX%U+YaXi2MaR@zy<-T)N2XII7qrox-HwvYF)x+y zWYKKSxpFa!p9?|VEv@x!%6gV@++^l=f~ooL^%B_yu$dkh&SiC^{3|u**>iwSr*m3` z#=}WybjgRwL&xR6=#SgTvHYF|pe6MVT#ul&0g?47k4hIIr`nVIZeY`eVquox{-M2v zyDcy+GFMyihD$IIoCs}P_8Y5Zn~ zEzW)93*lVP)W*1?jCV)LdiZjsu+WY5q8>M&HrSw23&Z zQd4d1&HkN;S=QH>E8@;v}H&ib2;6RU`aVkVMIVw-whBr&Eu z>Armd(^~G>_-YbI>knAGIERy29Z4409}fe{-61o5)4|2K`qVSx&ySWrn_x@jI3KGo zqg)Z>`j)!-eoDORGxwZ(zuyty`BV6Lu3Uu?xE0&V)z(~vyPH7W%Sd-gzGgEnQ_ogY zQ*&mA;WHgrTfb+Z5W=<3-~&|j3#=MU0yyr%YDD}w{rYP|8qF1oF+wkUVY-{Z*HfB{ zIinxSMebqKmsjjQ#td1s9_mTW_~cyi!`36ZJ+KN4-)OK)dzQ(4cV@#3!)Su5VWy@J zZSxg*%0zqYAS+2pRDcZ{D-}qtA^l_mLneuy)Cz0M)A2=EyR5N?eI}m|XD24gdREvnoPbtIN5KBQaXg5)HyN;JTGIki7yrh+vTQmS z*J|@v2W6KociEE|(+acm{UPiZ5>`3{~f09Qih>mB6h`SE}y|aBmd`9Z?7l zs+cubRF8XCgMp2h>E%qUU4hVZq(_XA=Qv^XW-6sIb^VMxbb7yy`)t;#xOi|8r#)NZ zxG?eswBiM3nT5#G_kxMNA2X2}>vYs`VW9|7ol}*Y{?q$TOcpe2G{027?8t)JfDC$Eg<#pJ z#G>)n58wuNcBW)>iYxhe-sXJe;N%4Dp{bov6bMR#y`UBnHXqn7(k~foO$6LiF?hk$ zxh8t17mPPng)+0V3t<|L>??DI*;USK{l>yEt7mcg<#^)FpCcts&4&y`E7z|zyAUck zbd=5-USBkd-0*fDe`Fxl#;8|<(^xh%)^;-)rq*IoR7EySGce$(8y6IX0tt+qW z+9TW@ban5EnB={EeRKH`WugV+Lz0JeO%o`b6MmpE2%&JKDsHl?xa-c&V;XM=05GL; z&JK$+G&D>d6*cQ(&1S-{p;3<662l}Xy`UHfzQji{6@hhPKxpjyw|+i_TcQuXsqeKl zY3mwCC(dX6;-&PNfjK`JQ^Gv7sTCm5q2SZa<+-MXLa#K>A2CdsfNdyOVm%VYaRg-f z!iNtZu0PUm)uQHyAmT?PA(`p;N`KH~l)5M#A9&*Q1ww>RyTnSl|7eJ`qok&-lhpbd61QkQ#byrLktZ9o3pY`iPgl{`6(MK?XhpZ=}k= z{t6U|hM{eFWiY+W^+HcdV6m$e95oRFXfDxeX~fOOiUJ!oJpVFiLSjtfDJ+g)^YNk5 zda+?I6?TL=W2>hb)h{ccLRIGO*%VTaG#R)q^+!idBM?up5j7Uf|)<;3G+2f;p8~=KCy@ ze4;gR1={>N%Br@BXyW4Ed3Mcwt#O>_c$pf{>&1=J$))*7(w6>gpkwQFlN(Vh%0RF= zD z@Cjp?y^YAMiDQmWx|S>a)}-~bOPl@ESW%4eMHbPj&;@mA{7Z6(OKcHSuuy>{?91wc zIchz1-xh^&wEVsV3z&4->=X2`ED%4GW0Jq`n<8Z*%N_@k2VE}!F`Jaw z1my!%_ULrT)z*7+bJvDz@&OvGmSKr!l9of$WM^dDIvz0Ak|B`a_=*+{BLqE_kl1A= za|=$V@-END=_-EEZuj~3|CJ>xxEE+y^X%nuHcAoH`tz`a9<>Y<*GIv&C1VS(cVf{+ z#c{A+RpP>1)Wv2)V{@B$|5f`d#r`@0kkEL`XjWu{DFC~idN@7xwzH-WER)orkT1@- z^fuRjQMkFF!%1BNy$VxTkL$Pj2gW${^OHP=c7&F3$X2~kZf6^ZW#qS{%YU#a^PGp^BxWuLcF4Y(_p`eQ5ed-8d%o_&DMT;`Lmu)?@i zdd^-*%k8a11$&F1LCOT^dU0UJ*Ahu5N!bIe4++_oFD9X#tOy$64|%E@dcaz5gSUQ=J)O)h z?xp8Tqo!7F<&SgezFJ4UEVDjSQ*`BPH4qw!&GnV^ox2L`?`KG76!ZEme0g(`4f(U);vw<3 zJIfiEve^(LE<70YdMwnxLJX9Nx;xQRlT*%T$)P#KrQC64=BtGJ#F>jrOw;ZjPq692 zZ-fyh5441o<*M7@h$Q7tQf=n=UwLSZJcTnm!7j`uf z0(!?a66>BEyLj_yhF~50Spy~YVtX|QY9%v#Hvv)_cvJ7KiBsjxizT)VT%{0coB6$l z5Q+$-9XqR>`1<|*{mO9_G8x>|*HbrnQE#UpAk@{?e=K(L+?b4x{`<>B?_yqv%C#1a zJ!JYU7jN$}^xGJg+qBQqFm8T)hgr|7)lw86ci#!GE0Y+wzi_FJX~)44AxFlGu$3O4_&{V zwc*@x6~d3Xvoq#KVPHZ~se7jl=S8lyei{x9Lj}%*XZj8Nd%)ggD!~#@L_=^_JPU&Ka2r(**`0yIq;WYQbYve1ILD+;}tuM46*EGt~GHbZUrwc z>L!|a#aCJ4j0`&7FcI?!OdT8JZj)UvY(g~sJa1>8;g)v1@1n;Vz(S=-Da;ts3#phT z7*+VLya_61_R!So(QQ?bFS9j~UI$M<2*%X`{F6d3xe_TygX1X^VTVZ4#$s*&;}gBf z$5wY=LeIbCg>8_oo;HwmblCQQ?k7I_(W4XcmL75K*fTOZ(biBl_}p^M+tHExsC8%@ zOnwB5URt=MXA&TbBV_UKk`5(>12k~+U0b5ncaf5$&#_qm+SGV_Zewkk`A4Vb$%J1S z)fmWpDqBHx_R_lJF7k){oS*{zcM7iF3X~(&0G$4G%H}MpvMKRfMk?hl6?n)x6xi@P zYuj_JxZaT2zVksFjRM{EeMwJ$S|MuZp_$Vyuk(i6$|1R6HMKltmkXHySN!TQQYM-B z45{}^a%-K9*T?C@kfDKZ7Cjk|bhu)43siZIM_*A_SD(DjAc}g1IB3cmejMGSCOU>{ zCO)y(Gx5jq?w_TG&%jpNIGY2VDuy^z1SEZy7n zE2~lDvHc?j&Q+5)0DQPk!L+9rU;s@(x8?Eg^wLmv+Nt_%D_kR??b&U2A)nYjz;q5f79Ys5b`>m zIq^jF3blf>zx8bq%ll_<=oD9KFvjQHQ<;*c=hb?0bnhOG(emn@7oUFB2%qfXxcs^t z?7_BG!YO7YSK%)oQors$UE0g*(ao~$!cG48`cJ%d>3 zVSRvE9i9o#{C2D+A5zr#E-D3mo|9UqNYxJ!j^3u54ya(K z?pI$jy78BuzZcVtc3&M$+wY>*%R8>czX>1l_@@K0AVX=Zp-ZdSEd7j7WLMLnSktnE z2qsW7$#0S}Nvva!W8A{m!K;+?6HJ@OS-PawZZyV$MWoIIpX;F_GuPKr%S71#J(ne!;;>95O4r7&$pf` zM%S|-BFel6oY{usB%$2`Ok+3sU?$8%aNv3SQWhnb^A%J2VEi;St`fW|eTPcF7+YUR zUkmUahmjkOP=pfb`j%Z_j4|-@hD_Te>=Z79`uqM*9&e~Q-#)!7(|gR$5-OmroSODO zk%VR6=FjDH{kP+f{gyiGDmEsay8yFTpr)>XeM4AX^&Zv+V+T1HsgE&vT3@xP!#uzW zmElobpOvAw9PCDV0$;>6VNU*ZjHH*X)e=fdh^gA~d@QI|+IwIOE{uaRX~{{K9(gL| z@-#j?nE$Zbm;tm0GxYJe0Rq8*LxS{|D=LB5^az^UIlKB#kto6S7bRHj8Xn9z1s;vX z2i9`){7wbmG(x$>2Vv|^$}BxUg?%Gy=-2X~mwL7OeIk_C?U3H|Y>0gg-sh#K*Z+7| z2d%po0dM^|asPMSJR}uT6pq>;Rf_6^;TAOxxGhyZN&m-rhPJM~KwNIgH#7*4cwmr;hKJM2yX6&x>qj3z0fIejcC z195{&VXv-iGv!B+Gw%f(0nBMJQD&>6>w*J zxgx^fD!D+V1@CL(2$d+P{@`>Z(D7ei3AG22Li&K-F*PJlU>G%!8q zAHcEvgcKalnE<6^BV-#913!oyYMs~T84n_X364~36HmqLqgvbBL%I{n%DVSyJ>9{A zDu5E-kbBJ0&AzdrREA1g(7}a@aWCUp&M4Dx?CVYN)#KlW9Vf$3$c7L~mlt7r-B% ztZ9t#<-N2h%Zy|`uoZ9@4a*)|8W9l7U>df9T0zpG;~XL-{!9|u2)N4nRuz~s2PkbP zjEWnZwHDYLm0wV*FPNpzH!w6b0Sh(r5((yG0W0!6Svp-*4I`%V5rHuU25M6$Q7ibZ z9&qKRpz_@Vwa}$=EU0kD8b0#Td<6+SBX0WlP0UZ_Z(Mf!re9Mkual~~{QX6DLIV>deH4o4kXJ%Er99C+AQgRxUUi*T7*Dg~>q z7qleZNnuHs&Slqp*LE$hsFTn8WgCYmU0m-0V$CZ70<@IN5?%5DE(ZtopuTWJaY6m~ zMp6`s+aX;?kDQj6KlJVKoCZP)ODZ<{@~=0!*PD7$R$sf0>cxs*ekd*>ar3FCCT<2f*bgq)|#or7DT29 zJ<@!3vU8Jp*o#t=T@KR2jT{^#@y?USg17cm+Csld8%o||vO1yt`ZuEBxV zOc7^BB0r{I8D|ibfTuAvZFy7i()nIEpWcPT?~VlFb3BQn^R2|!`KCyYcJEU;PFB}UvF?aKvgHTKfQQyva4MbQTotP@8MGY zkxF5E>OZE=4(0p!TTSb9=LzTX^RX2jk>Ax3ZmLBshQ92AUrACm;xxspV+hv+bOdp&PHTwXAZb2s(0mm;g`^Rm zZ7>BZN~?e*ToB-8YHDiaODLEXAZD)!(z%h7ra#(>D{Ru@++zff$EX3LhH(v(F3&m^ ztKaP2RdzMG)j9KHQO*|-@A@OSySxmJX?!wSDSOt^!aPRlf=gJ-$dnDlhGJdLW#?3M zS_I@G9uysVSX z@`NA{5t&p4n>!p4guun&YZ%wgJR1p@A&tup4%@t@M9oXiXgX$_Epy5-AWnD$65QatHY-5Nk$1qI_o+yE+uZyF|EMSae0zue*zdD*R)O z7Q(|g9>le?+WKLD%)Wafr*R~CANi8JJ?|Ta^qv;#pUVN8?H0bX??M>{uVDTV0|bPRV!?cBY&l$is9dycpZ<#$HrMNcvrtVFk}}(X3z^z zZkT+~dL*-iyu>3;=Z`H-e&k;@2_(dew@HX~MHz}{GixgmTti(LN&kc(ZWqVvzc`Z~ zuMKhvd(p(0W#(aokhkauFJoML%e;!ty}4eMrHQkT{Z`-#mi9X!a^!6}$^1uRLMaSL zJ1xyUWl~6w#Tep-s@7-37pdg+7Y9y~K71XaZ-CY3?WB6jV;1Lq^|JvOu`(-gMb|0FPC&_ZbLE0cK&^DNN+;hC<;m4zAJ6ETaT<95+~Q)*~2zJqI| zgU+eJ*IF=2GT%m+egTwGjSX(k1}T2u>Ct&hp6R`M+mK7dPm%B96e zGDdK43Pb7*YyJD0v8Am>IbD1u&G{Vlfic$;o@+2q>z-#JA6Es0{oXzYvN!7oKR_08 z)BN-HU4d8$)SwGy0RXD`4Y88S+fMaW_&LrEzBe*3V0(F}l@S8gXflib5}agTFe_EKY7GCh<29Ck74PNL}BzlYEFH zgRP)Z`0c6yg763KXLYqgCZL$Vefw4r&Wa-x=w1^be-7!&^7P=!jF=eW6iBfY#tmnU zzmDHE(!X)rVIh)Lcv}DQs;1O-^5dRlsfU8Rxp|zvQfg67Tb7hI4XzGxQs)d302AT8 zG-1yxJ(BGA1Yi|(!M01hbv?jtmeh0NXs%4@^fg&B@R42^21ZL3jzRe#bLBYss>xrF z1y2*RcuJA>7ZEfto%jSBb9#sF7kb=B()YaNzQXp4J$|3Eu!t!ZOi8(8cF7@s;Y-u^(qhWSHBi zEeA3LP|qDf6ZPD5%DGn;$1g(u>LnnL1Vx;g010t^aMvFy$2uFBF^iW=`j@Bmk@CF( zwT<`6Lm4SbGNB$)H6VTU0%KhRe6=(6 zoCrEb1-^PGJp%(^+7WDT^IR_wo8z=7S&Yc$stv(^6B84y$ftSBsgf#mpt+{5*!mEe z?ziZz^)arHS~t?yzi-zr#e|#(qYNTg)Pu#ZExU0&nd#{-u3xA0(EpGNLXbM3_y;%oB0|7fqqv`Z|0||}_ykL{7v#JLHkEoE zjWTTAp(&_Aiq>X|t6+pvk}MD_{h)m(lutzNoTY*TshD6ODSFF@*6qlzY~_CR*!3B5 zMv3>PTkpPF4!w5=l?mxgTptnBd;-P5P=xOUh0@l;IB7#zIKF;bVOkdrHJuZJ`VusG6(V(!-<-lk*8uV8TIj2(h7 zV5TT4VgYagh72wsGje1PxCr?^z9YP3O5n7EV*Tm8pvh2tqz4j-lQjCwqPCoY- zpIoZDd_lIdI^p>{UWb{VN)p~Gx1yH??|2Rhz?v84hd>}~KgXOvOwbRcEnt3n3uWRH$>F0C3Baj7hfML&V8T$JVnKgYh_|+{$Qp?B-$(&j;a>kJ=)%CQvlAE?Zjy6a> zL1c<;)_}Sp#A9nCDQzF=h}@~8;s{cJj4Xv8jv*lYW6qy>5y8sE=Flow!Pgti0u(3@ zVlio+u43n6XvH=0^Rr6~gn~H?Yukm>nU1}Qbg}$%hET{mamiQzf({XtG4}+&WzZ94 zt!m845_<)t>bHAdPzd}`#BsL_Dhevwi%4DoTm5%zdUXPV&54PLK{dfZ#}06HHCyF- zjK~<<^C!fjTZ}c=z-DE=dezbMph=irLI1+Qo$!Q)V9UXL@ z%oFxM^YLozLf1!PkLtf=o;0@R44;Tee0G)l*NugOk`Q~wM0OFI z1mTCcm|Nzzv33`j)LBa2J_hlk!P4c#WxIn|*ya?BrHNk6*aw? zQpeLzA~1@`=Ol4F{FgXVD-1wx0w$J@6UBdK>A;k;LX&)36DzCaNAF#yV3bWZgm?m7 z+sy^gG3jh|h*lx<7^YtvKKmz+q&G!!j&?W!rH%% z%X=BI3}XlruUr_XSLmk&)3*PSFY;I|6yST{(uoRZ8UgAunzZv94iUXV$MiieDx;mXbb5 zh%F`qYRURd-K4}^f;lxCO;3Sahzzjxq%>3auL#~1v1i2x+DQ&jDAIfJP@~InKbq)X zbQbZXRTMFtl!-Ay{;)g}oTH*pWvx`{bf3AV=jx8Ia)70|7Qr*a(zJN!BWdq7D6SbR z(yys=8)8SE5qT((m$NJ*EiZ!>$DXd!)|t+)gE>vEdre}v3bc;ML^w|SjNFbx+di<( zR_sv!oi9SH{}mQ;zJ-Vcf@be)D@6b43ppy#zx=1_7rh~`9L{9}qrJmBIGux_5l`07 zTM^?*PHKB11&p%hfvGOm$I|}7`gL{U7fA8luRHW-9pOo*CuYB@qCaZP)ACgSJ(lJ{ z=SMP)DyHX@&!xsecs|i4W#;(3WRhigeA8nwprX|E(2Mt0B~Xj64z=p|EkvEdKt-Rr zo6is?c)bsPnBNT{)%;L5!kRPmD>7*BPMb%aU@6KY*v@LX<2{$({+Alkj2-26=v7?j zfH}PdOT8`yo?>{UYVHhKRD)4$w$jvNuTS7~m}zd4e)oE>4(E#E;$>lOhpBIlM{53X zYUs`ry1D$HkyE4Eh_-)^oqr5}h2=nU1M3))M)N>|uQE!1reM7E2tYeEDL&6U{9rKK zd)eT(CNf@kO8Ff}xcX6NKAjU@x!{xRu9M9@lKxagBEzKD%*QTSg^Yj@h#rgFob z1zGC2I5&d~=yXcbB-a;#E|BHW;b-D9M<7qWNSpNhR;W<@OEqyckwgETk2$R5IREjX z2m@X4rGVcFYkA!Am4{@H;Wy9SK@|1@Nl9`Y=JMZqj8)n(!e^QZCuSFc-Qn7OxH~obtoy`n21GOxG^xc-HLf;jx{p82K9UxC2o)^v@mt}q zNboX>lF$!R5^%^mHLRB+3hlQpo3X+y050z(EIAWT@=kj;t}M5DkC96( zy_Nl>IO7J%^vV`so_i-!!_;+hB55{)5v3br!xHfWO>C*B z*{8#Hs=Bl%lFI5&GYblABN}ae<3^@+{R@!MZ9y(4;88FUBrjkF;`HBM07WIWg1F&2 zlnfo9bGo zO-B0kKOzg2$GcygGlqD=Qu^dW58he(P*N4j^@u zXLZ!NJN}iP2hX$vO56X@wEvaClLpUJ{o%ovQ2ahYWf(oKB|VxF>G;Ly=iH;p4(RUO zkv9%-_+ls>@3%I?3nTkOdSE>Io92LxaZ58$q1VUXAMA$K46S~hVIHWsyF;f~?aA_@ zqBaCRi!^jPK(~xQ9nx>?-s5Jx-+J$UYK?M{IKL$eN#jR=(R1_}yr=AdRJhMe7)qX8 z>adz@(boPSDid`8YN^v=R_tx1z@tC17)m>Lc1n`$H$qPzt@odv zteuumIDZqXEW)9l4M+vTycMnWOG0#S(?3VS{i>BeiYjLrYH5A9f!8m6bAY#bf)Ig^ z*6+w%w-(Mgs`AY}G6z)4uGUpzL^K z1$^<>?9!n$V#1YOs2MCzm>;A@+)pk8QLF z+}O6t4-6fCpUl6HXC-K>%;euayDsuCCGVDV88lS2+a$d|gDUNm(KsBex5mocCa1$FzSP zXx<@EsV^ub03D17^H-8!>{?e|0?mfVcrNMdkADmRc=^lQPS%};XY)Jg!n)HTR$@n& z%GuB55vwteCGc4l00zhR*C6#N8-54Q(S24J9dSTcYBn~^yE`LHd=%_CwQ<9kw^i=@ zn?c7T*I;NC6OV1Q+tEgAAxNa=2ghDGCVBJ}gx`&T)GcCS+zAkRo*2I9jYnfXQR7?z zbOK+r&a3sc7aLY-u77^<~(OcEWIt=8v?fDra%iT;nSM*>_@y4kOK+ENXBv) zJR%fbe?D7yq1tizhgQJ~DC^c;8gAtF7NF8xvysvP!xlM7Ee)-jRJD%@{U!kquxmG- z8bgN|9Ob^WG>L(T-UM2LJCi2otvrfvLUr=&e^q|qnzj9l7^#J`wZB?@@W^d(0z#s@ zQ~lkP(YPEJm596s)s=|W68-`nMbLHMCi<}t)sH^`e3P*M4uV@PEb=DYe|4%~?`WTe zgjFOTUl#bp7J7HPtR(~l;2r|fqBR)#!)cr#CB3TGL0|6I;tvC$mRSK$s3T^L?d<|T zR$7tFkq+AY81Ok0fo6PxuC>Rl1%u94O6vh6$U$5}n#3Kp^19voBeYl}R4@;~vaj0`AIqU0VU7~Ad(d1<*{WF!V7e?v=A}`ptn1FqW-*aL*?|}0-WyQ`QwBKeS_3H zAJX*=Dj6N%G`s2EBZUQWbeDu}uH91`@;f8bgI)zvP>F|dpJ6Yifs*BTD73P==Fks~ zj#kOsmNh^>e1f3}2%7`r#iVuhJ*Psq3u#cGdENexHy=L%9GaZy?a@}Bs&e1g8s+J{ zB&X4Ky;r0~M?fQ)#GWL)ke8DTSBa_x3ntDd(Gp&o3{=ZqB`3XhK$+$^h~DoLv94hE zgi;niKA82F^2Ng;BdJ{)ewX1K)x7kcz_KvVEdwZ1zLlG{6CVQpv^5CZ%bs5xt0)F` z3ZB_dvc@#*?7t2)Sf{wH3K`Tm6+#9Zy*z5{;#F|a_Dzvf%+LB1uBR4xEa zU3)OW^~XD7Dzdtc+Pfz|1R53#AmNKjn+}?Edr}=e3~4p@luFQVZ|e8CxC7SRMs{7}Kgc1uCzLHm6{QJf|gf*=EmDYFbw;kbPju%^k?EwttTFLBPqUfXgors8;zj zxSo97?z1Y#MWM;H)+Am@yYvlZP5zqfcG=@v)E^oe`4Z1l2o-@K%@y^{?Nft}KULGe zfIqtK+t7Xqd);w{&}Pb|X5Grg_>f_rjAprcE7SCKem*40o^LVyyO#bN#P&{vm|FYy zzT^N!yFJ_jBbz^-i%G>0uwUU@+tA;|MUk@Bf}G~k5sQYyiM7P=)S4n4|6jo2qkM`P zy`;6S#-UxQp*dhh@!h2mVCqgFVh)FJLpxLJ+&Z4bp45|Xmj%Y}0tvGB`=Y!UP$*i0 zP3z-v`;Dfh_eDMWgg9z^$9vG|J6v~51>GSV_ls)jL z&cmjZ)1)x~zc zJuchkQTUm(5-vkq?KQ1?chTgbgIjg7AC3J}$Ew+)3ke_e4+WBOEesW>Tv1#B?W2LS z_ww1)_n)$Z2;4{p`QMFSI0sh3d20wMxpn)Y+Od3bX09)_y0K|SU^D`^^R;&d?e99z z6dI-CzN;byMN9ZR)(9=E5ay@BJm1ecr%9)kRtpkMhsh=Up8ub>L-iOdl<1w78i3;{JSx*fG{Sq zdC#*ei;s`(8TxoxKwzZsY5C}9N0Za=Q8B%HXOf{(lL#Z;lKh(ZKU*xKjR*YGXZ%y5 zH^Dmsm`0Blb{V^h83%I#?6Tn50+jITG?A6J7-h^-<`{|b(;Szf{&6ThRyjp{Vj>CX zld~0^bEXHkw&4sA7k&(+%l^2LkC_2{&6OL=#k!;@^kp=fZi0-)!J&fX0NgJ%wC+G@ zx8>o__hHHaGr<>LI?l7x1MI)cG@`?hP{oX5-!ut$oOlTi@JyJ+q+|yT)j^zlCH&%Z z83|ay06%n^^2QThp7vJTy@oTxdlT--o+=C|dw07vwJ~(d+Jg=^w+2igDP*$rc_ZZu zYu1q17&5(yr#Bu$+i9Lxc~zI)e6rhcx`J&sky?O?#^^5b1CxS@a$tQVNGgTyRPU>> zs&*E0bHOnf2?ZJuvCd}$yc4cueA{TGC64vL3=YcCI%zpzmt;I@A1F$eY7laB1+G%o`vfx!<*m%S`5h+P7iScsJ*fS>II0ex zok1-Bl%s!u9($uR_#hf*i6UX8Eao!5^G12xz3!5mI8KA=5G-z~`66pvNad_50|i0> z0M-)FpQOy7Y9SF~w(n1OR)BlN=q#N=`(#n{uNMIPGvrS}P>u4!lrLz%>@S_hycPt8 zE>o$d=_vE{N8UKf_^aCKTCin6t=(BAxY-Kyu&0!(XJ_sKj;fM<8V68K6tRE6KwU@; z;AZFNIHIZ()$cb)fNK+TlIWX_NJX#+Ec;I#vJxI*ZkonvAnmL6?MR)N5x!g zjKoJXZm=-?8V&5M_FH-b7}7h&je3JT9Y)@|d}tED{`FecVi>4KRe*{YKR_7F4WHyR zjOLJWA~1`q`T6-tvn03!PqzTWOK-@ex}v@uioOE*c(aMSS%;Sj`CyYxau-L4&mP6k zsTc4FO3l}D%6|+FWl!?hq<*VQX`DSsmZIw?o&Hyu_pee1GGw~6p{?@`7{?gcR!GnY zue^3EVfQ7*b>#b7U3;(J^1hy)+5`-Y#|J`cA^qk3B{g);2q-c4neN`c{rnBI&01d% zR|Uv=^V0INa-V928F)4qfP`hy@6e`hdysA)lFf=tJ-_f1Xxra{f@NrARfXlOMuxPr zQ|~-4`e7(C8`Et%e!$Zpr>_7OZM|kpkny` z6UxIUGvPb z0vwLGyHzIFR|9mty8%QH7wR~sz>;M8ZNJNTd|)b{U99>m_4qYi^Fr@keNR1`HLyFa zFV&?MlM0Z~+T`3?NR{#}$jxPS*SS4NdP}?c$NJgqFL9|BC{#boOH|_jYtx(p&E8*m zs=3a2e<=ZLzyku#I{tT-GIp45U4Oj|)54_|2>G0q~;?)CSOR9qp6BCcrIF)@-do6Y*K^f-7wcMxuN;k^@@SDpJ(| zoEjMNR>R2w+`^fuF@^ITkh#;xZPTlxC8*qNNgYSU3dP(CTVP71g0KeOq&GG9l=?~o@lcTU67YX=9siZF((l5$g$aLXWMs6CKzlm+reH!a zsV>~sph97$G2Q<+iHKouVUTT_IJtoIXI$b4)It7xs z6+U^P18(c#(gb#@RvTqyxEzyo7YWV3N-ls@KxDGsC zPF#Gv8E2zC$>KEUA1(Yr;SVA-WdIJTdTL=|2n5_yfj9^@!)o``(1My-AH+Qlbb%i* zk3JtS;M2h+@*2|BSodM?f()0`kMJ)<$P@>4f)< z%{*HWM28rbnn!5H+xKNFPiiJT-1Y)9W+$Lq^8abou5exnU87V!0lI#bwi}{|rOQuR zYO?Fg)6w+k=0k7{ap^9u12Irp%JEOLu3yXOdtXcwoL$|({XzZ$@E;jxmR;XoUe$oz zP@#bt&!aD}ADgw65`4X^Gi*!oM|2^JnEnuCY|07K7o5W05O-Fc5g1K7g{UjR4j9M%YZ z_zGCrDj*I#k?f`bVyP~!@c}TVvBLydvOmMw9d%XQcfaIkGg&)QR5=rTH&=euhDpYM zfh0kzjnzG5Mw#4e!f{CGp7EMXfKK+~Fz|?LSPDB;Kpl?fW>iX3l8;d<#>X0<&eB-g z?Le8Z{p2u52i@Dh)r}cGI9M)z)A+)sZ^#!_G>M4?PfQ&yW-m`M7T^NToaDdCfRMhc z9_$Ow4Tnb1W}lv%b9Z8<`DKz~>eB9jjtTWfefNusar>9QLi8u0CT!HIc;LP~On1Pl z^%dp(8-|3xi$162!ipA=fsq`x6%Z|&Fl7g<&H4Sczq!m_HhWXgtW`Hq7wC2u zJW7~aW5)sX>OB=4W3fBwog&G3*BD(>9t+>>1HM{Br-2ejANg^8hQ=)I z{qLr_1Bhfwo=QncwK-{@Jvo10yvqTOJNmlX@Qf--SM>i2$-Hvoa5`(T066FgZD3#R z=JTKpYzNT>Mn_gf&u2hr=bF~lev&S0a)M6KTql}!B`#_$I&@A90pq{PF5%@HW_-qU zyrNV9G%*_mS@KiHEqR-{YMDNckh~t#y#xtJ`_Qu5X*uQ`#{R%Ctmu#(d%65IDh-ng zoOQxRL1Fj^5~AM{r8xOgy#|)?sv*C-NeNALP_iQ+1(VUxKrJaG1hd&qx&@lIRmu{Y zuZsW_g6Exc+v<@U1BmQZ(Qig-;p#{g^iQoUr3$7iK>9skQqjJiBXOKpvs8(vE|w2cR1R(Q zSuq3cG0Dc8hNE7rZ@KB*Y?q4G%v?{&NJ(YIvc>q94t?vLuk)^2ADrYaeVk5vxW@HA z6Ni62dfn;IJri~QsTfXDXg>s`WYSv40-DhKP!Jx`JR!JwCjxwoQAC zGEvra%odg{0BV8nYH>=_(d*CsOp=kb2UTFI3&9gfOOF$1-UK`c%A8!CS&5G6X|=-Z zqA^8li-5L@UQqe?e*MQ~>z0dt0XpdZ-S@w~N_-<()zn=Ci=zVEIOO-uNvl9S*1BoM zT}CuJI!1}l{{ml3osT|TmipQEh}C;gapg-=tvRJCB~t-O(6ZN;0V=m}45OlEy>{uX@c04G&Ssb|5oK1s=ft>3Sh1VGgq5bn3}l7>$g= z1baf8vJjjZ@-NIr#E)&A-l>>ydSih(5ZfK^15RnYBHzQM6DPoau)MUC_$23WjnhbS zK&D~4&{nAHz`2b5_2&_5fU*=M0e7b^%gT2LsqC+8?rN+Rf}$fqiI+K{#RHs>KeTz2 z`4E_saj?#8VttBBB8`BA)pu;%U)Ni0Wp_t<85|`}$?9LzxQwgpvz|)$-zF8*g6T>< zo+vKEtxox-&y1CJu;v3I$v;nm_oxK44O;PW5-e?hJ&$kg+2vrO{syRd*cMi;K_)Z5 z9ptoOO!BXRU1}!);LC-$1kMi4bvWy#YKvt8x4RJQfcW47_pTtA(P96Y(E+w37(Bi9 zD{(&k3s>|>*}|CI+{UYu#nwMu$i~RQRosCO(&LF{!J1C&@$MI>8{ZBmcSnDU8xE&{ z)iWFRrZE-%j_qysx%=Q4HK2a}bx1N7Wf5!QS>=(({>+5WpAnc@&lI&JaU0LO<%?Fc ztN`+@O4c2m*v2=zr!PNA+xB3kc>xQ8pP&af+k2Rpnki5_1g79uUBF(UG-MU3L8LZt zE5mx|8GO^|$wwS@U)M?TiWX_w1+})mLixNyNS~M&ng2Njv!1t{zbH*xU0lI5li8h@ ztvVD)Jf2;Qd==Z6dN4U_4M~y{71KsvE757ST7BuyStsk%^RCIi(Dyl?*5;yDa%3bi z3+x81|3U2<2aX?KvnwPt?yHmfB9jv`^kQ?s4X7@bb{+yRtDUHnqb8%v&t6@H#f+?Z z?uz6ztSY#AdVJL=)3?2=eF(gB4Ml+O&bTzS#G0D~x$l&$ducc5UIkzn_*>A~AlFi! z(4P(4=lrBT?LO>qg{FAaFzuReSNb_UsM)rXiwG4>JKp!6>G1vnqHQ*ym>Cfh-+~yP zZEW6tjj3nj*N5G9pK>oHX!?Hr^cz?C1CQ}vi0#|~=b&NT=I867ei(0R@HiA|AQ7YN z^&v@0bi5Dx>uZSsK`>Bxx*Gu1y3lNM$r~UInu^oifQqju?9OhFw$LiOUD2G6z&wDA zEWP$V(T;y&Fm@~i&K3NXVk4lA#lR)lo93+HgG`jLfqmeAc;YG@F}ds-i_TLgm1+2u zw1%B?V8hllN)hJbjjk|(yRju=*e2>Y)LGD6X!9GBzdE!@1yqIRqNg|_FZ(UYphc4e zY>n3`ddRdo4exaTGYX0O73^O=Ga8@ao4{bG! zYXV62oRkkgA^x75PSCm8Wv7s-0|=~j;B5K{h@($wWMk;jTqS(K3e9SZ+Zm8DzUUop zs6c{AV05AZdG|mt?=9uE!ti*Xr>@GGb5H3Uz??8UJUb!#TRp(3m6L6(*btamW7kC{ zGgp^2l9o+c0h>gRS;}v>aF)hjKc>@~2lAMfs`~6;a8pk}NZ(&uiB;XyF^tW~Z2G@RqfUP)HME!B z2L3et3j_bIf6Om{$H@BmXQs0e9twx|>EIvwK)Joq_fk{1?`smrw+x@p*!GR7Y3>Do z$X$|D;2+vODRBqZsyAp;MOSEmsDyeCoA!;QxsMtbf#!f3nzBE?G0hbk0*zZZfKe!g zFWbr+(rf*tvruKhlU3yty;!6%)ZKlTA|JRKw@`nTp;fsjf^%Qu^ysNs!V{c}q}`h9 z8fo2wrGu{KuFiVwskwRmbBmXkT9yscRZ6siv<77P%BnHemhk;@bJy3Z636||X#6X- zTa#w$vJNd=_jWIk@(-AxW%~E5LK=NjIgE1Zc8B`=1*J@s6^eIb52;=Vx?J9>UjfEW zdFfd`@2Yx%JsA3&1F&!WC~-j1J(N1GZz-|&k?=8a1kf`f?LVaYhZ39XGk!J!J)WG^ zJ2Te#|Aw8;%cT~jjTjq@+HS%#YQe~4daHnnU;1;WE%*C@f< zuRGf8*a0IGq4Q~=Wg5!!8z?lW$UW9RHy!`MAnE`3}OlJOwpc@T;V{@DDp zZiUIJ5N0?_@)Oht^bG}K(iZiA^Q}Y;K*T3Lp^QoIsxfh(A0C2*s`LXxkS#H(Xlg&m z`yMWzyQ$-1^6(J+Wf2bzGzZ`Dj7f|(UlAOK)jaL)%N7OiTeh11MZjicC>~dL_SaXh zlRi)hP_tAr@+4)12cTH0v$L-b@|7vatO5!GV~%i=oARrQNm@`cV4ik?l4~u_7BolX z7bZ?Y>y3|J-*nN>lIjEil_EoGE;8BNy_Ia|BF!~nC>2-jWA(Xu5PBzqHpe5Rq2kNU zde?t=47O4G?5Y8t<@$t8y?aR8U-fw38Sv_cw(4UtT5hj7`^SIJ6=!wH+KtShR{u>zZ!SW`bIg=i`R!rJ>)iPI3)TDlf#40}vG9aFOw?$@c>$~4FKu`iV z0mzf$4)b9J82$kiq#CmEBg;S+B*-Fbc-*jn}S zP0e9WeM(;Q@Z$wJ3HvUv{kbKbGb)`eh3cE9?Bi@xf+;H{?q0MN&Z z)~p5&2M!}?sg|bXM*7Q}aD3LK*d-pbE{8@p_HCn&ZsA zo8_tJ1qMoZ71#YR%geDR3B72|v8AehXMb)-YqUn6-70Sa+~xBp>!KcTB3S`x=#$Wu z$-0_fmjQNN&pRG(J6jVv&ERMzarBt(w^_ahsY17^9TO33tG>t00Z6 zHD8j#&@t6-Y^vMI@%+)-$-oi&mG42WC)?DZMxWb;*U7wBVqTzQK~aXH-l{_voXm>d z%vRI<7wFZV^0Qq_TYrzTw}kf?xh`fQ`wpttyrFp$^98XtlUA#x_4X7%sQ?5MLQ;>n zO&(;`=UF7&_0P13z_Ov!@+Pbc9N&$Y99uo)+AJs^N#A_{CW;dvjrdBvP?n=IiGT4@;R{SyAPL*%=Sobi(QDmlV>S?Qi{Ety#?IGoUSLvy}2~JFi^Wjvz z>A}Z1ypcrz#}vQHUDy1@?RE-*C&S=}7fx+9tnz<*9(}hH+oC$43k7bsfnR!!(ng9^w*Fhzi9M+7CJ5NEwG0d>H#=tk zP$xup5iBqlP`hG#wPW7C!SJw~=RQeJ@a(}LQhkywG2BoXftlW};7kxhB1RT|nx~%` zsuQl}oe9Pk-+-rNclzN=!(-y1B>vKplHNS_17NExbWd(R-MfM0dw=QccL|hE{f;D5 znlSZgmI(tiEttDWi1fvr40#>L_FWZ7-2;tyd!D{4gcAT4`#CML-uE|+YlrcB*wrv} z*(eW7n`>(4C69ac&^)9R{SI&S32iZr`xOnxop~4x-O8!ino?>erpx1Wz)*|}7LFa&B8-`&T%~7GLLT_szw>zm6L@ zo~usvUW+7}`BHGI;H_=l3H0`kmq3l6BL-80In;7Q4|x?27?};5rPO)3>8Lv#FC8N4 zu24zrOz%HDXUN?)mW02hs<#!|6j&rcH5l zLZ~ety65ugs$$#GWV}F~o#T(yFA(wpJK_dJ?AkTEJ$}FHB68|?+Q0h zr4+nOZdpb`>AcP@|1ZJv>f!f@sELS5>8{OEWuj&5n<-?a`V9-bLE*`9>Lc*|qP%_h zBjh|tZP&7?US#gPIuytETpSWRAK(p1uKRYs-1hbK`2-kzj+vTm=|TE6fO)_%1MoMa zcYI;|dZYN)kR(qDlXZWwPF^Z}e+cd%G4N4*OxT2<5X_ z4!g8>K$;XBEP|f+db;k`dgy)ragEb!Do@9#OGyTO77~{TL+oZ!OhPCdJn$Zj8;Z&P zx>ohQUL~u$XorD%Fq?MqZC563;;%iuudPB~O;?o1*EIsaj_vjQSW8C3%658XhFae# zHK|%r4zF_1=aOHYyfZCEG5JmJqMurAL+AD(juma?S$-+wSpX~aswRrf>PPm~@M$LW ztMDsWi=R_{533$-WRYqJWs32csR*}1S*gFjwuC`&(?w^+LKLf?7%Wl#@Ny4)lU5@$ zLvn{VVx7){ej>O5xgceeUtBz-PKWGHlMJZ_bF8xdNA!1R1e+A2x~Md$Gn+xy zfaEv4d1dc5*a+cVf>lw^Vr{38C`!g%>4huv!y{*OW>={A6kiEL`W^ZhFcn}Z>|9)U z6;43pNNi8*$Eq1#P1D1*f}_qEQBIT2pqqM)95KVN`r!EOq^FoJr*W+=ZFz8XHcgWh zl^kUdvjrns#v5gV9GV0mwU5>s;xe-GzNeB{sV~XaPU(&y0UK0GCS2c3zjix_Ea(tr z$@dU|A+C>yRhfO_t&oJ$^tZWCtb=%_%JOdpeR5N-;iW%-K#v1=ZX~2*6y9FcGfQFu zg@0Wce%<9XvipUO)=XL&c;U<^02JzOr2KI$GN%j}f=OR2l^+uaJ~|wgC`nweFLOae z3@=8cb2plQut_}$Z33}R;9xJ~iuogxi!5QY%TXa@Zei6tHz zjcuqwzj_LNO~&`kkh;**B$-wSXATJw*BW+0y{IFKM#Q# z6rfJF`qRL_8!!Rk^s)&c5<{Le466!}_Z8WUL@_qWkOZORW2|Eckrog;3hNyK4l&)5 zo~8}MWifhGvRw4Z+QC3P!g2|@lu<_bqw=^1_A)OM)&H&1F5~q*;1Oz1J_T{L?fd<^2oUNeiuBZA9L-Qe8hpw)N`T_h|0Z7CYS8x~P@J_4Vo zWB8&xO&dqYuVUSrr@CHjW%X5fo_QwUsG8r3kUQ6-D@q}4N62=~X!_Ji5!M`=wm!#J z%PF0?MZBH-HeB;lPJ&*oS@YFr2=q7oTaRiR(h-(fjn+^i@PEF%9}|I9%Tb~*>c2cP zN){u1S$+SznvBz$ZIsc{e8$&Ln(g|Yt5$9}Lur}6zf!Hha&~%UAa3}O6oq7f%=wB8f>MKc2U){s=!ofY7-VFk zO?w$bfw8nP@P>Y=Tm|Ay9=3##>oXfxJ6I@@46qDvMu~fZp&PjzjL$mr(A=~&G+mzF zdJmeqC%MwFEvO^vh>2KF!GPP6ymy?Cn7v7{?R^mIi_%rr+qg{+xS#bHhRHp_Ds~7q zx?kE+(f(b!-y8eIg69rlGg09ci=PqP6KxFv>Lo!13k7S=r2{y9G2T9DwSX(nPV% zt2ZWbyr^213)7?cdgVPXP*O#Pi;ov@W!`A6{5hx7a1awJ2;V15=f5L*-s-c~s6n#ZSXCRmIpHOem_9 z-ARkzVz@H6K)GsWs@C;vXwbMssNzoAqZM*;-jPIutZuERHbvLJ%dz;WwWS8>6Oa=V zO>IzodvmAopy3X1Ar;PePR`O2vTNB!_5lT@jsN%82$b$T=7&C97x{E=JCK+3vcu5H z+uFK(^yG1>@(wNh&K)Zm1P2LmE}7H-gGV=&lHzOId!nkb!G5_|{=ss`n{I}^#b20W zr0eWkSW`l%XEaN4gRfyiH7|8;`n}yRApT&b9Tn_QyI4o|?1_hTuiLbcw|tdmizcoz zJP7Zfl~)ZVd&l-{@A+#ZNl}do00xb zJ-~PM*<~?Lth{CLga~N0-$dH@scAO6mtzodVq{5Z%Ux*g6!=ykt1a&*-xKOE4RyOJ z9W-!%ho;ZK1YYIVYg5z$AonKGRgE47Im|*d=hElGPo^Xf7b`tvw5SDa49DLAl7<$K zY-tWeG`vTk%)Sk_M3wORBcMeXAU@aI#?UGBy~z~CntqR-J-bd4)*QHaUAy3IN^f3` zCVpCwOt8aFI~-g27Op|5?Nt;Zjc6`I9R14C_x7kLJ|dBTdUA3;r|uGOSVs8WSWc57 zAzc-w3EpMuW7Mez>6h)UB#{T{c|@qF!t)G%qZykC;#LFR|r z6Df4K`pf!R-LE|qiP3E1%BE_XUq$tqI+YH*gMtwx5l&+=xIhXm$8%dgEqvK&qC~fV zxF9c3j$t~UWb$_Jo4xs~g#%msOZr)A>usg9izO|!!_AU?$gNN8{(}uC_M^wSaqc(g z4L5jxg>0LayWQ{VtlKzJbnfbW`Yxl)Y)~;xTo~yGa^8!__GSp^C3bgwb}>PpLpkO2 zE>1>;Qj2KIDVEX9^ZzLw|EVDbK?r?rpN#bi(u2GAqnG_HdfS!9F*-}AlC_s_d3ohB zl@-#XC9FTVZrt<}3?r8D^{lwGG#iPD@Dy?`Pz|`eC9l_A*xX|*>P}D?3)bfF$Ah2( zl?Zy8Pc5Ts20vcw&BwGgNBIag{nwKc3U=qEYo8MZ`bojsWMPzv1{xDMy~1b*fUKDT zEYKSW@`+rff}O0quff^Yz^WSHX6${Nk?6kJF1%fyXGMw;Pu z36Ttj*WwnD-Y+l)Pa_jVvW{xDuZ>lxuBzpIdy4d<_ZQV@XSq%(U=t0HK2%P;9CZyM z*y;mKk7W(zKs$_d3QMT`{r&W0&+UAZ7+d#QN`?G4ux#KWrTv!cY=QR&HzPtwSpsYX&;KULOj z?D`TBY)5{Ncq|WFHc^^O!@MJzu({Y&FY}UsI{lax)#0n^aMW&*el}rtq*N#AZFsXM z^ReWy7B_2Gnr>^HBCd7uGbMO)J)eHAkgW%=#sU#jX1Zx_m{JS)Gd>S44c5#L1v|b^ zi&8Eiyx;T9hojUJlb=qQd!KNxnf#of1++mx*=Lb*Egj-H+^Zm#aN!JDII22v?%QIx z8U__dYf&5Go%-vxS0|l!f4nnj?fBo5I2oj1^S=Cv^yLpo7iM3`A46>(?1Z~x(tR|r zJL$Ku%qi@t#6K+?EWOqYJalMkvSZ1E!7OQeWc1`y)nJ)Sz8JmCF0*VBcbg@(Na?zpV`oCD1_VW-Nquxel?X(D#NB@tA;N$g^La0ysT9D{O1Z zB0s<)laC1v%DtV)JHKJBk!a#P;kcQ_>7kILAGrRkNA_xaMg2C16}qm@eom3&u_M%n z>dF-QMdK6f@cyjC_Y+8z^Hb6Uy)Yv*LUh=YG{oZ~mAGvxE5_iCBJtm|;JkaWr3!(9 z3dbNps~??PIQF*~RSRAMEKC8^0#RD9<2g<*Hjwm|pyC)TpR?n$UFNoH6MyTT&#~5c zJ<$`+$|)?sRI9(@OdxVE#u%5#0LkTBK{O2!S~;4e65n5C_%TCKU`+x~b5iVDp+u5c zwd&uJ3+H;O2cif9{Kk+=!+?o$CDeKD+@R>7CqI0U+c*%3>um&@16?MyWwFj*A6zeu z)q(hW7dj>SlJCQ(`mZJkUPcfGeld#Ez~#Gqjg7>9>_bNpZ=j|)3VwWl<%-4bg}i}6 zi}#xR1uAz#g0$c-%HI2U+8$0ebTmmc^y{HHVDu<6VbN|~9bFMIPNNk$;RoLnS#HKF z%~LH4>-lN8b;OHaT^SJCVeh`bu@H&>$=zNZEr|(m%SvzR+}dcarUOPXdq0;YrDX;)gDzp3&9<%7 zBr0yym!jAM89krq-IadypVDtL`ka5aXi^++^#IuAI>kW%i%+fyYq%hC0iPYrbqjcLU{<^MZ*`b~HoMKT6=i%R|Mnz<7U2J|UbJ85{2=Nl*(S&$e8Y z4=MQ{hqI)(Ypi86_|b3kj0Oe;o2UMm1i?ySKhtv(>1@$&JtgM#1&82I&jG;@mDa)njiyozF7 zeRi@xf04dU|D}S3ZHz;dEUa0#$3#ZIX|Lc{2;l(`J7s6cLYV=tFLKtZeZwL$Cz`&( zy$0+;w%>gUB)m9C?>7px1&VTQB|EK|K>}7+=Py}hhO{QUyB&=>aL!DTqotF3a5+N_ zHgK(E^CilB_iciCYPclwCE>MObXhRVRjnJSTyjoYs1&062FoNyZHQkho@EV6oERKr zMj$upH;cWF^H0+6VBSf>{i*hSX^&EMK1ba3-u>uOY{jwX{I-T@zHr6v&EF#aZ#Az0 zbrr!%0$~jBg}{`+Ij>2Z*Hc9`c@Mx11DH88n|0Vyy*VuaA|j6;_CkbhSdHH!#v9j~;jUITlao$W1J zVTasDq5A<^A-p;A55w%Pr6J=HaFw9(eIPm1m*bPEb`EL|dK+BzoY4h1xwnCtGv&(? zI6he`vhn^HNrCJ-u5+n(`P)}c2=un!6_sxFCtP1yb=ShhKRSbXqpRn7(Ej;5Fg!>h zGY1&t{1vGP3Wn(;T>tJb@f7$ZY*P`{^(7@Gn)v;$SK(>e6ywaGd-NW^A`d#Oy2eA| zBT0m8znYAn9QKwe&Z+p+vAJyw%4*v&)lr{`Y=3afJzGF5^z7~Yu!2p5Bn{E? z{>gsg80EFHHs58+$el~eRg6=SY_rGqvmp=In4+|QNd2e5eexWv5j?sbwJS!Xs2(GE zd-<%BrTpTS-cPfF-(_V^WwvA)d}jpVej>17TCXF!L+^|Rtqmm?De)XYV`tL^^v6DyM=)HyX_(8TDYGk+DNiEf(R2)gp-cQc zr!F{VM#?oQL}gPnGN-$vh#^vZA2A9^2|+Ol5q!-otAvZBJ>1B6lph}s(Gg;sxJO-` zPLjTn>A;)+$)rB8tH@wLNg4Xny>x|$AX{8*=UL;fwnfD;1m%JC5rLv4x}Wmw2YDVq zERR3vO9k(Nm`!@-sTmn?2+Y&@qk@h>a?FFL-Wzn)>@5#oP2yYZ0FrZTvB!#)eLGX^ z)TZvoY9GU3rvjW~z>Ku|4h56Y3~JykNu$aYal)4oS&qQ6&u*I>$x9HJAwq)c`}ATS z=lgn*V(MUx8mz2$%Bcvy)Z?Ut7ch)}md{1ek~xnA4T}rNr(T1Z();N@n-cp8l6kfd zC1v<3>I1p9*Vkmh0s(AU7NF*P?1QjMuhxX|KSBqJp^IA5*6Po!%<@Iw z<>}>w*rE?_Fm@B24>QObTwRVhb##@ynM@MR&D8%cTvD9qL;kQ7>7t8cFv-Tkb#3c! z+!bGhi)D%*P(48YgLrs9z5+HT>&E>Far*11E#K}SlJ%e`_1@GtEYNKO_8xlZ!z~PPJU&)<138D{fdjqy%)de}Zp@gU5 z+#AzRF@&if=Y0vq!vX(nDJXu*g0|S=dX(Jw)s+AgQcSxou8I|5Vd8b{=6iP<5OW4)yem<{Wkb!jdfao5STRsV#+-dG}jGc+`g)2vgK_M56JZOXYb^m}e zfA@3wR2~4Ji!ek_KieL8@e@rXmEw`1XFS|XFGrCPLXd#`biW`p?8=3uUvD)74!`$4 zRm@ZrtDcp3aO3t3s;9|_56h$80YL?e^0?^bvW7^h;zUJqUe)YZ6Mr^y?{uUjveY~~ z;R2I)2>!5tcL?Pa4&z-=5%=TDtel-%M10puO0Ll7R$cK|llBP{lLB44s@lBRuUC@J zerh~qG8bh_zkuvuW|=QCz`)rb6<`F;-l>bIK_5=0=?+B_RH4@Y?m$z#=izAt#Io3R z{G^w+lu4<#oH=>hlfO3hQnY~MXd&^r9KPd)gUY#YDi=QwvEVT+Jk688kz~?J!5FTL z6%o{SB7IM-RaS$ zUA=%}T3N?y1%Rv&f217=BMW(7US8foj;kc{f9f~yP_RN)f>Z+L8<$QU@U#@?8XEfO zz1(H9qO8<=q!xW2$-i^SmoE5qJ=Uhzyy1&*gH`~|JW)!H%d;on#qONrG*VvT`}xYt z|NElO8_mzDQVn;yincnK6z^wW8h!t?r6%f6d-0AKv=;?DU+tnK=OF~ID~OMqLG24F zH$oDm7%%|O_|PoBwa2*Nk8TIezgGaajeoIZ1%;f7Mg(urTmAsHGFiHr-K5vGVH&Ll z{%TKh^YS9zJ!lOcTWPs@@&9z;DxeGZm6v80UI-2QRAQX<(rf=1k>M-cR<4_{nR|Mg zB08Kw@AulAtMtYPL|QZV?mn+dTPj}6cztyS$p%K{g?@@=%i&xL`P_cL$BzHs$|bc8 zTrZ9i{P`yebQiF~Bu*-8w+9XE!IW*0aDt~Y8m&Ob=6#<8^$Hdoy$)vM+^$>ZY#bb< zGI*V`X^4c2pKImVvG7p~RblxUB8!RLZ@o_I)-U*1ujsVj-5?OuIb!J|i7mFpWP|Qp zb5z_*d6d95W?|Zzo+hQzhb5@Sy%amZ2zk@%)Xz%VZBUVSt4e&8`j(!kM}FpZ)M-RH zr*X`BnsYPtHM)=QE;bqQb5HAoN+<^=$mW->x+tFphz-$8OO_ihaFP4C--iNeTv?Iy z>@5NhT0(qiQ#7qYR{jApet#pV3SCI0Hz@V}oZ#$=otQ@>8wzje?z3LRH$|PxtH7hT zK5BZdl|mkUGItbU&U~a>afpo=*n?_%2S#6v<7mSd4jmPah?gulHC~$K{{`+%fX%y< za@~dPcLRDGJ6HiWQS$I*0YGkn^AabZ{BhgOG$kse4l1MpQ2OJF;gz5(sEnIzNu^o| zlU35`g@IS9XErZ~_i`2@Dk4Q!m`dlvdJT8InwhM3G+n>V;RkzdQE|lRU+1kCH)xbw z+DiMdu*^h!fYO(6Z`7An?5b3)J^mUZ(n3xAB=UJ5iuGVHo`m8O?!$wvMQ-cSQlHn% zfW~18DCOXm?QP6H1a`|azxERo*~?}B1yX{ehzsm|4_K=k)W4C$%vY4QX}(EtSlWa2 zH9ON^#~Fxo9ckG7^evu<3}OF7=LerkE8xR4}W)l zKd?w%PCa>`#a};iL$$V_k%Qeslzs)AxXjqmRxHLbICEdrJprJ8JtnP{)JZW~simu0 zOzs>fTA4%rnY65+=fS{_Xm0cFwaE9^kL}yP(>?4?esgm&{_lVE;Wk)@mtlX}!IIml zaemzeQeWQQgQt;WJ#du6Z^BQLGjMu#y~*v!pWWk7CI;6tw$$^WR_2X(@WhZNm$oe2 zC~IdU);Q*F{j&z%hNm@tghMZEn{JTeY!Oq-^7fYMjEZ|m>7Q)pVg_i0`uk3Au!+rH zJrF)Bfv5dQ&G}}*E_+N8V_z>LOXy)DM_Q(snN35h@PQ3$gc#M+(3J^{e%Rx|R8vZ> z*AD@FCk6$PBoB&#k%IXM>4UrfDK5^c4A8=mpr{kyNGrmQ*8~zCcHVhKjE>k@@D+wt z$R{+W;1e-zl}3o~pOkV7S%4FPKK_7)lG!+iU{KD~QI2f}okUDp<@DL5VO%hyw)NmM zr48~F0pJ&TIu zsb~(3N!Gib?3vTL!_`2hHTH5(ym)xOygJN|BQ|5_k#}d2Q+xUT>?0lsdJ3-2uB7hP;W`}+QK0~5g-O~6L zv%pV~GbhnLxN_nP@l}Dv@&CCtPy9eJE_bV3z&;mAzl`*&AO3zf|1stoz9g)U0JR_q zPiq!Dt)k%3Xrg@_(w3lN+Fk$9Cf?Ebg`p^0Tz=7p_D{Y4x?!4U$7#8P8u<^Q^za*1p z8fRVYC7QV@p-2CUR-vQ(;k)X&`D1m%dU%~JDat50HQHnUw7IMK<`gczX}n~)znVis zRh1s-HDki{spow@rYfa~8)YlM(GJ&O?QP~XsTY-ktz7O=<&wDZpP%+@Z`=n*U#{;j z6tZ6`PIj{2f*~5AuZ%2hiAnJQc56hd1#AxHBUNE9YfR;Pot8`vUdtHlEI*x`<&2EfJasNGHvg(` zF3FD03sz5<958}~zNYkvm%{O0*z&D8S*|L0@|6kbB&((1$00Yh`@O_FdfOWN@{zm(8?ZHC@&u> z>ilBVs!y&~`jLG5UbCeL`!=UBTTl0Sk8vX|6`!TboX63^q_3YG^W(1=aatcH56o`> zQ0Eekz^0$%O@B3+KEn!|Bw*02-Z;G%RE=N-Poqh=I*KbB(hl5H0!E)WLdl|f2|scF zed{FgpcQtGrB9Ot#lzHckO%b^vH`6%im7ZQF+&xBPzm_(uzp8EWo*nok7VOGo_;da z|L~uW`V7=$=EYKE(ylRXzlLOYbNJEor4%YZS|!sK3p`-)?UK^#0uhQ>L!LDD&(lT?tZf+w$7h zU9z#m>Fe{D*a6uw0&hrwv5v~C(WyojclVck=TJvHy*L{a%|GmpHXX1!e>pxH=7e^d z1rKnket4>|`Ta;1T5}0`ZUk#4UkhI(rgAK-Ji4G2{*~EcqC!f)oQ=HSzo8MyoU6m$ zWx#RMqyZbrd+Sj$u`K7%_WJeSqZhojPD$_^u0L&^z=w1>`;Z)d_lNT|S{W1=^|aDXnD0QY~eWd$oBFy@iFvi+n>pJ+_NiZ<3^Zz3QAO^3UD) z^G&xA^jO{LwiokPyLf4g*^kHFZuBU(Aw)suc$mQ_ie_5i|3w9z4HoMy{=cmwW~@|1ute@A~X!)O0WU5jGJ~b1Tpe`EHlCh%#((s z*9;g=u9%gtVYD^_QyP@2(pQM%I)>zGeRE#qtg#VW9I1ioOe5V|?n~A|1j?L>VDl@M3MUcQTEnRQFmR~up;UJN{UEHrvlOfQbTulsdP(s=^zc#(%mK9V9*E*-5?Uu zNH@G^;12I+t#^Iz_m4|vP5jO|`|P~-wMl?$2Kb6@$C@=dj_bbWt{gTeW|Rf zQbqFd=4ui9H>Y#02>&rAP_l}oTbXhtfgH=bbzqjT`)W}9#^h>EJJsWAsm@ddQ#7$G z6~kim%DnbZxf{6?s(Sva*}03CE$F@Sb8I4H6>pa4N!(D|2^0ipkMNXQe$AhKlKW>j zdx2$HeJWQadgT^=hzGkeWKre-G(lBI*|a^R1uac?``!z&uPKcmcN8x>XCps%Y_%j| zY-kh=be8z@7){$mheVltD;^_5O=EsA)q#V=O9p$r+{oZ?7Kr-Rex|xbKgE(8CU)n*LF$qvHY&CT#HDm( z5B4W~;h!P|w4#tF;6%8ePS?eS`FJxQWB4tK4=QjeOJw*{YFhY0O-g%e?B-=S>1mZ( zc-j*g!v6uuJq3r%+nwS>18$JdYjTi*IV_g}|9p38*GDdd=62&m0XHFhsqQY-UO%f% zxS-Aq>h}F+NhFG5ZpTu?Cwp^B17&NaHABDYa~hD_zT;L)^3Lw{T9!`yeUV)OPUSZ^ zZ+@?fv$xoEN+E`T%@)D4vF$wMXZ*hwlkx{9cp`KkkYc5U5n!<`+jW2Dv%=@=pb!e% z?U1m<6il9WK6g%+mZ=CdBqks3lDPeuus!w_2l@Rc&L^B*=_c&|Lr`-Ouf z?qy+`>CsKe`3We|(wA6oQPSs{xf-wKn_ugqh*XwY#>hR|$Ke#WM@40w>1(J|_ z}OZ%EP5nnX<3AfL@c#9!Zr6tQsg=mwHN(ydF#fF%gcDUqtM^X zC+kTlAC-sWJ~bCtCK%0z6US%Yp2F;}DM7{x))+F7X2VZ;Bz``m*cRKI_pkrj^*3s;dz~^N8h*c#4rO1NcFt;4P??AHz5KykQ%8!z4~^i z7POu5?3KU#f)vN^<>_}Kt!gn|CIaTd5mnPNGR83Lw|%?}ivzQ8u0Hj75Sj1dNPoQ6 zE~lkAiTgS|(X%?$v>jq?U!&*ZQmgH<7)`v|sGZgT5YMaVN^r0F{aIJks~HsV=c2;LxL zJMD&H#(Mx-VDm$?g6BFnxivSl(W4H7jt9kbP3p>caQ-EHq zfq{Y7Vo!tcm|{!^v&mrGxo`gdiR<&)dw&CJV!hm|lduJDWlHN8^0;SHOzk8DF&Q*> z4aNDJsou4viJ!h2a(`tj=TT5NiyclgYZ1daV_B8%XXZZX{y+!|I(PwDRPj5x{ZsDy z);Arw;qG@OY*dK}xVS@SY2ogD{At2Vy-#JwLM0L6akaTW9FQPsx_W|b7(iq`14dhD zd9x}cZQQt*7_kRqC^dqR;cd!Dy2b}o%Dy8Yy=IRI1>+^jfXfi|@|lTPAK%~Nc70er zk8uPb8_ac~cuVD&tE{gzNN@~4St!fP#$iQ#la}1|5oOyoW?p+$z|6lUBizz6c_@{} zWNj8REgGoA#WkX}Y^|I41OD&Bz|2l4yRcbL;hHFF$mA!Oiru*sQ{Fi`Z zc9?^wcWG>pMn{}Q0fZE0r%_e^pau# zz(^TjCW6VIzH9&Q^TWaT^0daUzZ#zF`N~HNsxT(7(39qn=sp#bhKSE%r(1XxjwAFB}O0&e96Hhop!Wc z1&GQoRwDX{fNv^y?sw;8zt5Dj319ep+wyL4zd(YPuvv9g$1Q4|gLo%R>60T>1r0Vm zRH#W)p~2R#v@Nt@&g#x52?3}RZt;8nd^sOBkoa~LLs`UuPDvmne(mia67QV=gS-1< z*Ma+73yM+TK2I=90ZQtq*w~=H*wza7P^|xv?FF2hFgRPW5g%%rU~>oAyK~#s;7^IJ z>SK~PDWV3AtNCBVZRy|59KO!57{e|l_gf0W3B;Tz5TjsX95Jq~Uzuaq-11gTN%VpS zd{5Fy#M?E-#_WLH-0ktY)SD5n?k+{GZeeYHtDZ^1p%eM%9DP#r%22~gU&9yJWU z&iX49v7UA0DN5LCO~YfVitKDrM6s8FfqFHd2=D<2J!I4tpKvC`as21@Bd(@TGD4ua z>e1Df5-{^4##5X4j+I5!mx%CVN`k1Z*9;!z&k{*hhn)DbDDrv6(jjY{071pcilvkV4rcrmz?W zB1SPOc!!XBkT(oj6Vpr+Cf=cZE4k#kv@i5Gtyt-i7ROa!u* z?2VeHL(x5IvSp?0bZdC^~y@vOhnm$cd#txgzU+vg4AgGq5v@fCV*j z{tj@0BKzFi#G9s{BA8xs)ys!3sIfrCx8KFrlkpjN%Pd8#uu9r$}I^-x_-1x(f&Yi6E_wyVqNN` zm6cW1$V<>|p-SV4vr?0p+2R^w??EFIPuWiFln6RxLFe9rpg9cwLR~l;vAdrsuGF;r zf7G-LWVqCYSJGs7XHl{K)w>Ea1OHnh%|8(S;oO_&s;v+IuPQ_WqC#S{K-!#WNd7MQ z1@F^$GMVz#F|IPimySVaJ(;0iyNxjo{@8(-t0OrKcJq={K(bTIsc~@G>bhvOn(hZJ`T@SjG|k+E?+!xdtxUBK?|$ZljHQ25Dzxy#Q3DL(Lg_a#*u^ccpp zn3l*@m5_+P0N9@N9ZTRBmKm{loY)^v{otJ zJ#T&kn#*$db!?;W&gr$CyYjGrK6eAEINQc@M*=duoGK=Z+Ue5%uzMl=rkd#85QZdC zlBg9n$bG^0LtDC+INOcmCofwZV!&?x)lvNmPQiPzV1&K8S!H%<*sU^NTr)Yzyw?X zDI6&O9bx!$uj!-|1W+q3D~LU&1C^tS^cKevKD}Nt*iyG73kJf+*rf5sj6Y|G{;5Pj z$}yBlBMJ^i@OFSapiYwObhmyrKjAt;>maoDwFcRw0v~Ow?4%*HZxLwz&Xun&%kw>x zkR2(0QtBPnsxGGjR3*27SpkaCcF*p#11AiFjEy{EV%fqWhcaMD=KnrzVM`>wYb zl4k0DXGa9GPk3oJF_!ASvVcuTh#!@Dcd9%$pzP=ijlvV?vIi5pq!e2STEe?xOsL%r zUa4wj4KB0fKH~a}va@6l35vI?Z@~3lI#js5(Pei^{?^Deq(qz*Z{Pzw3i3gmqsOJ>49eU3T`VQnA~m$7EgHV z8~Jfh0THXrF(8Jdt#{h0N{Il>{pzyM=a9v8oX{V8>?za&v>lO*A38BTfVo!?*|cD# z+YLh^0YxkOEXQd-H~#9bO2Om>|QCI_*{XWp1#l|5>%{IHOs-I zIj)KOfVu};dH)@rWFN|M9Rig{7t|E6`P^#i`SEvSKK&w{rV=!$Nji-;_th?TAWlJA zexpGS2Jbz7gHW#m*(fzCkYN`!20g|~LJs?m!Z}~sw1Bqal4Al` zV}R?mmMCx(v;+0dGK0 z43X<{S}1q4Me||fmPEtyac!T6EFWl2;hD%Eas@cwZom=xBUf%{q~H6UEK2TYx6AXx zAU>MB%mBHOJkJlASWt)az2lBw!0GHO=$=C8gPI`V)g6r90^0g}Ed@eF@Z97?OY2lD zaT6@m2JB4xO|oZemtZcUniyy0|5cZukqwEPWZXSnOw^#V-P!xF#|({ElMF(^RxPI@ zzdW^QjONqLc<)+C3UhT>#17LEfxA*X<*#m%@O0GE`6+tWY@btB1Oy@y7_)S=ve4AK z$WO`kvPs0}PdMG)IP6G$5Q;4CT)>b11x64MS3d{zzY9TnXXzQep1;qxyk^Om&0G&t z&K778u9+KaXB1{WX8;}-d)X2K&3ABWKH(TLlvid>`yfI|j(0fl_t?yj&$4IQ51*=& zf?022)OFEQEX_@DX6CZ@?6s9G8$o4)COH6 zg2_XqU{ns2~{(&I9b7AmBWBx_EgISP%}&xD2u8D zu&7?mk`Bbi=NYM8e#9P;+n9T=K+&Rb`R*Nh-!{Au(R}?O42jo^`31!hU?5;CdQp+> zWQD1cTT<6MM4Mm^_8cHgp+U?WnJno~dQ#Fb5NI%$yO1h{1n7o}&-yOU!axzGw7V*g zL;e_$A=I*fUPWc5eQ7tCeBV>tTfT_!#^ox!f&M4Fc?w&79vKh~5Hn>U#gB65-N8zY zk=|^MMwLa}JTDb-;^hCwshE65wvT70qSWKb2)noP3$NJ^>4j`k7agOX_{H48chV?n z1m{Ap<(iC!1S zD3eNYiJt)#FAe>e)oc^5OUC15d_ZE6=rE#@t`+huJ#W{Z@HBwf+(7NruK(NQ;sOf{ zp7`=tHo|Q|jXeBO&sCcAH*J> zWVA5nr7dmEpNvn)w3)9PORKbGjnJ8X!qlkTb=fRGinb21{VGlWnJKy?{eX^K3AzjjznBPa4(W#SUpUtSg6Kl} z5Z8RDiFSvD z8elS!#L*b7fCW`@r!_&pvdg^G-k1~m_PkA)WEJhpHJAvit_i8pfecGf2Vv*Oy#hIc zkG~sJDn73m(!_7-&Q1n;k>mpEjA3$frktL|Km1ql$%lyJ!zvpE{Fr#N&2r(1p3bG( z&aX)#8Tmrqlnq5^hj^JPl}{b0H@bg%Lf;=6Djy>{P(KNBJE3}2C9)#O!=-udMOcEy zGSuWIRilBYRAe8FBv`{!^PFTUP1{5>%Z&7klzt4^6=gS>?w+WZqfefDQ1j2uA>k=M zUx3^3JrTL-lwE9lGoR7#gZQ5Eij0UH?)TS=pp763Wb#_ji#7naCn;ivat5O#oRF-d zuu!`9`Fyatn(9ywm?_seQE6Vpc|0jcG}aGEz@d?~DABDni*5j8CN|pZc72)LzXbkX z&SksH-3!nyrWO{#{L#PFGtvOPSr$6S#Bad8k9F?duB*&J%x)IdNI!Q`R6Rq_)bJa6 z$`zt~0wTiP^N&fJSVuk9p87VymzcS3YB?n;4WtA(><;D|Ya`UrZPnEzcv*1O)2g71 zk*08k^QQA~X%&Hx&RkbUUGeEseZMoHGB$4f1nf;QfE}`D)eS(>vC;i_DkPj*LB@~U zzmYyQ44*ao+m>$KmWUY~_a^C(3x=Vlna`Mp&n84| zZ>{@_cYpC#H`QMG?&J$5aJ8+}2+0Y{&p+$%=Hom5x{ZkOY`EVGlK6^#rncrLH*>_2 zVAYDq#=G59$PX2Dr)R-B3=Ae6vOWl4`59;XBp|0bOGgS{&|TO%wQ(F?Ex0QYU+ zBta_3R7C5I^5f^rAz-{^Gr$26*}$~H(52A9`1j|4`zpy~NcQ~4&nP9?aKKcxDN5X6MRca#bmv%GAS&7%T0JM3JObV;7jH??+Gm)cq2;K-+``NBbL z$YAphDX+3Sa|0<~hi^mp+3<25iRaO)yNdBmZ^k~oN@vLhl<;jKYjEmmTu9mqwdB>F zPl;S*5`F&6B;vv3iLKN3)-<=4Xw!f*KH^4u5&*f2LZ_fyfeSy=FL~lPqVbLZwwEi@LI>IP)l+)2II!;nD%YMlMzv72G9b*Ck z&$lW(WWb$aSqns;nAd$(DJ7x=G$E=cHRToW7=ya28)0;d=h-}o)=K&06HA_POelL} zeRipu4~s&-jX5AuKr$|D?8-popm6EfRAVg)&fQm}^sqxdKGI{;sm(4A!?ir!O}TtQ zm!i%yjpzUg?FgpdKmUo>ygX8Q;EC#@M-hjhDpiHaPv>N&c#GDb=XjmuWMVsWZ~0@! z%f|2BM&yP(u5v@vf98gqMIbT{EtObnpX$^NMcZaI-A&c&P+=ZQW)^NHEyRCSw=1G^ zs#*Hq$V7lt6r7hR`Ta?E&?k3)M@s=s1@(Ts_A3b zP9M)_7lSDmL(JBe`Pg}=C16fj`d1V8{tA5rAC@vdpae?~SKSct9ZwVTn<&8EZ1;LL z1U&8_kFRaY)KqW4q>gSJxff*n`}-1;Z_|@DT_`sYzgPtXuA?Ft|&(beA&*Xo-QrowOF3Qwn24CS|&u!|rH6Au{t! zMg(h|7JDC{jsK zOsVHmkH4h|n|DxRgCKoizX8+iaSPeGyX{hVtL;oFH8fXDsjc|}WJxbBR~M$k(gz}L z|Dp*AlXp{tq;1gJR%ImX4P`D{Szx*B7a?L6(eauhyKn0JKS!J40g(7|L#fLU{jWJz zk-`VTSyt6z`%l%!S>s@NPcoWGC3^AjU06&d$on4nexqJ=75Uojp7sGoBO~*sSSG#R zshj5Toa;+1n=;mYw)>cFBff!Q+t@$pauUgZrFb>rf)Z3odlw7^XF=~0u&?={R5xNl zjeFvUlZ$nE)NV>sL}!;boU9h8YC5{5AlQEq*^>i$bG_CkK+vecVL376Y1QJ7WxG*1 zT18@RRt7p_^Ul?s7(w4F7ocw@atJ_2l+yrsb0a5PE`ynT1pwgL1%~rH1+6R(qXSe70?zFnrpzX)iA}7n6Qs#Q@WkB)85Q)nt%$|)MMU6C z?sI4?rURMEOft0|+xvOP!sI=O z^R|>geU3>Z%Y8a%n7S0h;o_=Oes&PfooCL574m}R;OG@OtPQ7gy|k$>!i-Ix zIQ+tu^sSMjrR(&m4`=^RrMk(%T637(C|U}$sS-)uty5xH53<)QH^G7ReS#dgpr)^U zx=*$MACC-)%K{c6jk#Pi4hFvvnGT3;f2#Z!fh zLqnnSH=<{7ey{m_vYAV96u}IGpt3i~Ac;{{rVMQdOgoNx?R^gg8zla*0}vPDhe4}Mwq1A zuT|7+g8Rx$BhBgicFEYgvHJ=*2t+_>REVTC_m2a?vO#vAk9&EOw@jz!ef!!b9I&NU zHskF#OF4HUB$DqU%heCz2bJNIsIX3lv(>-f?0IO41r4~fI?;Lwf`^6r*>kI$l}yC! zpjyCeT$dw|eTBn3^h9K^wYi#={IGe9Hmt-n!r$gwgC@|>)wZkm4%i5CFIp|M zpW(yXY4n~qA>b#yQvxf;q&~O4=BSP-)wfHfl+vaYWAe=#$ceGZ?UFiBxsW?Q*1oXc z+*gMT>$#U_H~qw>OXAYH!|Q~ z^S~C&2JH~R)1jp2ZV8;xQ-Yhv+qr3!83X`i{Wl1J-K6$mlGxJq&^c`BDq>8=W_)fIHQ)=)<#&r7(mnrgWqFdr<-R* zj{rC`6qaR6Ne^pJ$M0wy zdbWsrnJxo!0peD?2GKCw-N8YV)Y6LIgCUe23oWGNCa$r@Ue*$seIsq6rc*U~n`JqU zeR+Fv>FXNq%X5l~9K-Q6>BiKLlQ$3Z`g&%JQ=&Hb&utDFxiRlo^aWE0kCygTe8Uo~ z7h^OoVypWJ7!8ttUx1-(;fRbk_Ig{waxFGgk!V;I#9J+e;%SaRpTTo)#E!h`jY0#@m&nyTH9tjx$%@A?!uRSnz2ne`PY9w_ew= zy3z#T5E~kopCnZi$^A9U zqicxbKh?87094vv9|&0R#WXuIH=5cJdTaY70F)A_Nn0O_6PB#}tX>c9x>dr~MNz_` z*)Pbu{tjTD`Yy;nNu`!pSjB)M19k{eLO$~9VGyjx&TB|m7#^jTjq$P=`~h)*9GQG-@~b{$3(vYd_)T99W``SqA?`} z`>rTD;#C}#1xWzOn6e*~8M*uLz{YfS3o-Vfpzs{blI#rhpD;~s&&`+W_G4`}T&m>A_l1KEm-LKrpFjO)&u7o32W|WHl2DzP8E#63h z{o@g_21;#8;aedzL{9DkM?;!!nSC5MAr8$`wY?SzSr;LrS*E+LYd;gkQ#j_7?)Ec! z#J4h{`W4Zp2p?6%(z z0NFRzAhw=eR#2?bbUAG;VOPG}m}G-P)2-Ij)Z$>eIo%Rk`e(fI84V#M(XQ_1{z@8i82#j6BSHDW z=Jx#;u4Evh#tVIQg#!U-Us4!3>|pig&(~Lx0Ob!AGUXgKL?jUZo$#PyTT>5ou7JTh z)LO}I1E03oQ_PDrkCj~9?20HX8)gmI>Q*NRdrn_$Vyj0}-2RUZUFHK-_sw!!oo;tv zkzxpq0PxAtSzMMi9O{R`rU2CubHDUH;Hc>APKaN;h$S%mHsbHhrQ&{%8DtV$E{ah2 zOlK;Xv0rN?w2=E8C?gGm|M^8$UnF}e!uTFO#S|YTeGwcRf^TWVb2)HUJHGt$MIV^kMC;ck>Bmr^Ofb1(y zIO9USYFCZR@~RLzvFvZ1Sk_b{_EKi2M*jXExr>_+N-~hMLJr2u-v!978M4Up^6$d3 ziB9$bL^=ec`5u%;)8T>|P!Ln3z%!EqL%jbS-*0U2g-k`NQ|h}iU>;b3o+i+))U_xvVMSR$a+mpOXhXE^Q*&th7t&$C*m48QUdNL|R*^ecgQ7 zAM4Rl3ZHzx7I!9&8}p!0nKA^On_fv~h#Hx_ zlTOgoo1W^d+S<-i<#}q^m=br70AwsEvG((S0Z;&377I4Z)wJ?wTf8+iS61#eJdN7n z48`yLLLo(vVapAiFLGJMM0gGmc9pZBN_upTu1TKs0qh<;Vzy>q`T83Z25&t^tSrMl zLM$7x1@>)%B~m?c##O1{8Px9=23fyhqdutR$IjK+3znKMwlimiABg?d&hguf;4Q+6 z`SPT$zZPc!ZA2Eg+G;r`7M(8MG`SOQ(< zi@dp2wTioQu%szA;oQtmil^i1D?!NbTe0o3o6su!kHZ9_ln`(M{M25M0JQb`ThUxX z))uB5X^c*k!LKZzhGGZB)94?VnH_P;pl;vQGmUbf4sjML$69)Ew%&rlOQP6D0y&~v z<*qV)uBOCxe%fZaf+bMdER4Mj5MP^^0`(tWIGhCt%efIa6@(mfyy+!(TfOm`N+L>* zy(Q@Dt0x0F2v17X_3+V)e;0|U<5I5-a9%Gm`f8C{DKc#!y$;|yV3C~zZL!hOonT&! z4vqsWHH_~9-ncWQk0HrM;P65mthH8}F~z7Xy_Pm4MIZJ*S*Ii{fF=$O?e1I5z|8MZ zsT=eU()T-F9KwGUr}8lBi^q9-_@jMo4ymCIUx$#QGAk+J$9jX5=Ch`y3-FKbAA3p- zc64>Iq5A7M0VzGyNXvwxQ_~f^6Z3mpj=d)hrZCOv2?`%0ZKTT1B<|!YWQ7++C%2yc z%y4OwN>kA6bYq zD1PQqNfMGkkPSc}si>>FiQ36R4YMlNp}E|j)DzEa6(0Tc&wagNI&Y~w_LsAFWx%|h z5K?Sh#2w5AF!f2flFsq2ZtL>RiEIp%Vshx6pKf}h?g=p<5Ypg9ND5=kSW zj~@+=sj}G`7mh8;7MYt{J?w)dmr5*iXu#ywh!prXa>qa}_)7jhYatA3rEc)wj!`Py z7co&Q^DbrM)pHBvAUkeO#r-}5xqcem{A_C9>^q(i}vd-_f>*ND(M zpsG{MO;e_#)BlCepn*ghfyYj2Rji3fgH|j9+0YU%w_<&J$BN5hq3KLzCeKgfb-sfl zIn7q%nX4nKa7=3p^#>u(Li;o48sS*i#v5>H&SuWoF~lr1u0 ze``Frv|nY%DA7N|mu|H=mhQHSD^fMY40M{Rq*D=1QN3d7-#*6&Ij}vurtEQOSKDPD zD*#Ny^rA4&mE3gPyUB!-rYlZJf&+D^v?|agv$if~PjPsDOXF|r#K%Ks>28#4=K7~B z2rL0vFbcJ7bL({?W4j}7*eK}XVLOzW`aKytLW1HJxbrj@_Zse~;8*kt-}KnZ@NYO! z4SLa>rZIC)OCQh8mm&qS@OYe&Jz5%6^qR9qJosx*;+FB(GPnkegyr?$8PyyG4{2m# z=i=+bo<@fQGwxb)(5#lXz9Dw_dDYkQQP&@qR%svL~Ef8$}qXWIW!Ison z2rA;s0{nZI@HAVo7JPv7jK!n6Y0+ z-G58f4?3`W$(oG6UZMfObX>t6{$7y8uZ>8XZ)dg(EveER{ZPMyLkZAm1G^=H{p?pg zg`e4*?pzyW74z=rG!T+(GLtX+Dd6;%iBxR_5@1!x5CoH&W%15>X$YRJ-~#M$Yaiw796skzj_aR{uoOWV}VD`#s;EcF8n4koQ@LUX%bT-Vz=7<}lIvOC`1 zMziJde>}zenzB3kiCW-=*1&}8GYlP4%nz+Wcv3DdF0x9clR(waBvltj$W*cq7!ekX z==~MR^O>{eo&3A&2*20c7-1od^0?6}Fn#5DZmZ0*>A0u-Bu8Wo-<_NUW7b{f=%tXa z=(oUAvBb{XP*uK^Q%x9U`KnUT0uQjJ7&txtiUVPmAzW568OFPO^{`Ksp~&Z066Dy zMCn&&X6pX+b_jy)kaxl~esFbqplz-|tt199MaQ6kRYB51#1{_w`f4R1)AHr2n|0@E z*a6_^tCZKT9Q(gbPC1Y;-g^7j0l|ljL$pr3(?8}kGOd^M$4m|2@^E1kc7DM~sIG7S z`D&5`mh}{LH%nRy)zZwglHB*9q~uXCtue@R;_>Q77+Xj?jw`LbwWO|eo2HK3Y3!Uh zcs}fw_z}N8rBa5}s;!si!Snsh_X(BJN3=<<^bhk`N2DjmvSf?I)`R7aP z04W=OtDgqPU8AuJ_JzKO3(xfbb}SG&WG@*wQ(O2;g?`X5%y`z{F3$S6Q1fbht&u2o z``&khPgxijJn;uwGDou!R?z@{=%uHBwuW!cU8VrR(J3kB8tftu#>Dt}D>GZJc)Uzsom|zVCJZ$Cd%H{GbAUU8A+9=St&$rUK`$Q-*o(*43815P1nkyC~}D zY}8e32f*Mxm1_&lo~J?Rrt>+<(y?evP12ySnlr|#{^yxLU;$@I0RcogE@a33H6$ zxX3rRj{49^Eq0Yz|5t)RPwo)mTGX2;&^=ZvKYj}=h}XM~>TfLzuJUalv;r1ou214_IgB4FTJGRZ6{`5r!z=2WHxEpz_b*K`|%rhAnThIThYbh!(tdZSj zeD{ahzJXkZXpKy$7<6X>S@>HFKQ=L;XwKVl-2aM=fF#&XrLQ8_R|0T0fM(UQ57O70 zTPFKC#B@FqC5_N*q)VszQj$FU;a!@6Hl8>C?VcP3?S~HM*iP!n5@LpRSe3^-{FTLW#L<;I%gLiO6_)T^qiJWKiVNR7jJiYQj~&FMeFGl;vF8n-zZ#qw3Aq7{!$a5{ z*xSF~R1*V?nR)DcAA~35EpP{9GK?@8b*^(cx;XxiI&Bf1RIg167;xSGu@tpO?&C78 z$$$sMx2DL|x1q6iB>c)^ip1)^8fcRPE~GAh(N%lzUweNAymNJ?0w~x2mj`h;DYf{U z3*dhqY6eHW(Y12Q>+&2sM3mT0h0Gqz{3ynTMrMWZ?-$xFWU?*=&Tct<_qp|l?EZzY zny#jvevAdmVha7A(7?{<-1y1%@44SVMhD*iq5=>v#DP$P1Mx5DO}sh~QXOPKW@`YZ zEfEj2^<8(Je%x1HPZEK681IVK&W~tOV#ogUd_AsQyPU!lD}b&zm19o4eD|N72Al2+ z1v3Bb3BUo*wc3rtv7kCtr1$=K$LC7KJ+5cFcU?PT5eJg`?#&9p)pzV9duNB}0W>%Q zF|m|yI$w~Vf7OW3>H&|#Bw*KX+#M|tCrnupN%i`31iD2dwDse5w*8F00me#CzDjv7CKzk3s_s<`i{Tqo}|WC&;Dz#Q@V z-4PX#-x8hp+2-1x72CbAvz}AqbYuQs0Yk{zG9osQ^`Dvq%dh1SaW%PsTlV`DIlMF< z88Jft9#+}Ue?YQ1OZS5xJlp?|yJ#!=m!g{{vphRH-n}C7J3KAts49lR@3WgP7EgLn z0pC_%T8TazAkp+hC!Fu%{-M~c!Mtb z?LbNsPo$+WV}ez7Gw&(_LblgU&iDZp5_ZCwTocs&xg%@GRgMyD)Is?#@=tx`!Igd$ z9e361a(xN{++cUJ-;sM<-8%14gwJHz`smtB)r1HDZj3_p()4$jnhFYJU`lYr%V!@e z$(*SEbHz{3Z`OjmDAj{5tH9GjpE=RL?=Rv@uQb$S-41s==mR*~8Do<)5eO>-rRga!p;<=Yw$eN4fk@ZrG6uSm<2SxuPC>_20x zB%0#*IPbc9Qq`MiZDGYeO7sD0X_RZp$pP)N2Di5vCjH0Zl1c%IEk}-@yj~olmA}r6 z>(RX{(Q*DD&>|l5M6LJ%t`G>W0FmxhXM7@WXW0`n`1#w*JsTjsyHALwOyT;_Px$0v!O=?Omvax6*WSnY z%dtXtP7ObfGcj-sEQREXrrc9 z@e~Hpiy`HmNhguT4PvbEGFEz$c$0LJEmj3#LM@p+__-zfPVOiwXkb?j-u}ZWUkC&$ zrMSaR@A`D8!0BiY{F=Ew9VTQp%d;}W?##TrPUft#G8TdZO zte;hC*d|pMkg_c*=doIV;sA3vpWhxkQf|N*m*+>lHuU=)Kbk}awggrW4kQBI*JXD@{+|u5AXcts zleQVB#hc6!3}mD-=k1?`Ss`1pFnJx|-Qo>pbQ&P6(O$f_(d+5@Q=H?MlMhX;tTr9I z>=BVaDgMorJ{qC-_haWMFeFAYf2@HEdj@d^_>U~544*q85KST$(;uhD!DlP6Hlj$x zmIiPvYVzfm6z^l+ABrLEPuNye5pWG|j#yVEP1yhQfyg08WFZphz*47^SQ*#Zt3jwN-Luu+ULcmUfN?WgkpI{@=f&aB zykh<4eN&U%zLZX89ALE_klm>X=3o*^3(NX)9|8=ObU67q??K3h?iawnG1q87Duv~D z<5iRz51-JLEy&>twqsy)v|xGS^Sx|Fj`tm{*6cp|5qd;4QzvN?dErc0TxID4jscDjrZ}jZ&U{v z8X4&Vh{epT*39_w=)c;c%fa0Teah%z728!JudfRr5!i6AQQfn4oSh%5{4|!|P!KY^ zLYblEi%%86JG5kTv5xN{$$TF5W#ncf}R z-r;8hjkSYvxQ^xiuIKUD2sigyYi8EWXJ$V08!QpUh-7;@ ze=OhtNBAi2@(_}DY@tg50uYY!9Hd1HUt{cz6BbH7ro1&yD@XrTZ^ekyvA!WI1$>{4 z;u{_|I$?HaBA^0BjoO1;u3VU=Jr$0i75U#1V=~%6p_KcbFs>Zh_h6xPytj2OkNDH#eemqRQZW`{J34Qr z_jstJp2Q{x#qT^IxrX9;y}vPGAhnmTk^PJQvJCknXRukM+= zA1+ZM$Me~6LS{Y2p&vH$RSq5obbec=`Na>DwQ?>i1~YQ8+SGVr27jk8lm5uruefet zoNy1emnc{cSYqO!)=F}73pmhnw`lSH)#BCI=;WVm_}B!g{sK_=Uo4q^6#f5cz4ItZ$;d ze4lx4kVO}~5viuDsnQFRzh7{e$|km4$QF1iAkKw&uc{w%N0RQia0>Zr2QJYl7%%+eMu8p<+9lk zc?O{2fD|D_U3jhuJY^dFz$)M5CZ-yb)o z06rFW8ft#dxikG$_k>L6vn|7jqv|S@-blkBQ)Jx;%i5G<6q_1-Ix907Lb9pOa%g7A2mj0gs!yPO^OJ5>}np|T3WXUB&;_c6efj(64ASB47O?Ejs1 zjo}?r0D#D$QZo-wE(;i^a_)uxzH-rSW011l|2UA7?t8pK6%n6UvYj&?sTe#640h1x z&q=z@xS@*0MFj=XP9ijgDkq=8aS*nIT>>wFvV<(6t>6gpPUa{Sgi3z~N<`b3p({P5SNkCGMGa$kOSe*F8c zM|W0a<5D1w#|b8Lpjc+x)0q+`7>cS{CHKFi-vin&B8oW9E2Ja=3r`v5v;L{Qh{y)8 z$=56(uJDHMGyxC9HvNtg{GxVtoK*?Ce@!|MmgAuS0WTq=u9Eh{hl%~72fDDmC*$tO zzF!g(zsP}7+y~FTLtzVfLoT4k>$JV|my z{rkIgj1}`QlnB60Dh^bj+PpUvytyNAkkow60Ce{BcM^9QBht3ua85IdMvRT)#nT%< zqDWtp;D5o9og$RS?mLhQHAF0zuO%ytipAv56C?iaYdv}LU%PDs#YCg9{E*$FgbiMy(yA;zYg|OzTum(`N1t^5D&bc-y4VF;~fivhuz!B~>C|uHD*vaNrO_2-O|v#QFpvbNNCJrk0xctmJzT+>l1FU$z~` zqWKOrt)PYJw`!|n59xPz=lvYcM7W^Dg+}7;w%4jaf-oJU;3hpg8^jKFWg;2gv4Mx# zU?>Y;F5^GxJ{&0Fz_1BhD2ErkD7@^GtMLc(8$dC^ZK+4ci=9(2RMOpZkT8p`5*}4C zD*XGR@P7(`mXn^s8Ha>an`MCY1W{IO`=yEKh2W4L0!BestCDJ_n}}t=%qHrp_&~~j zpf!^6-8n^SNx;fL!1^=0m?dGsAFCA93mdfk;SnT^g67tj=Imee$pAg+_t-0b+RJ4u z-v~fZAfVP7s7g?Q`SVrTDZ>jaI)eP}Q@7F)Z0Ywo|-R)$r(D&)lyUIg}KFszsaKvCx^xOZsOm|X%(xmb7 z4PH5Ikeww)kV;YNLiXmKKmdXaL2mXBFa-5{irFQXHax|ulc_!eUVyoy5(_-03TY`9 zAbq=#C(k?c9AJ@}eU}>O`%eP_^%Xj^zkWCYHDiT*PUQ6(tEs@d?}(&qDz)3BcMM|$ zD=pX*fm)#?^}7D6$_#i)VB=KYu3f%y(~rxyt3N&Ee+e{4919Q7{J`?AEU`gxS($d{ zj~{AH@wVUcEL`B)&Lf{b^0bAJ`Vm* zF&}WK4f8u)VJ82i@Bw%i5BTMKWx&B>L6P6wi(UYF2dtBF=rRhDgnS1`ioEpl=Y-Hu zyoX?_64vXL?zx29j6>J21di_Y1Lq8oIw zmplv&Cj<=aneHnz|D$|p7@VM_OYIs(#N|0LXaHjZdI~x+y9B{zB#?4gFuH)uhqjK+ zJRIR#4d`t_D~_?Z)T42I-c&^1L?%@6x$z0b3~U1d*uz1zsM|nUUxBPa(s3E{m9&7c z)ryl}436vzpUZynA8CL#I}5;Wf~>}Zmp*BL1Sr@Dg(tB`@(+SzF;>rb7uYBCY~&s& z)c~wPBKkJxr$_vNBxw8O?CtRsO_mO9`1u!66`%l)X=EkfIvIcpS|;UJfOX*@yVQ5V zD}DdJZa*1TfVCjku{kfGoBWX9?xG4H*BZd7S8-Bg4c)6~7y#sedXoIotgJ8qjZ>lw z<8`RfzwAkCC?UdHK_QUGu;SjU=EvjlwRZfzMZLW>8>Dh|+wd(@1u)*L|FZ_7EFT@G zrNBT)uZ2y&i&}FsX2tM#&r0h@wAukI*(Zb!x-KTF921U%JZ+wJcRdR%3F*5Em&+6$ z1BQ%&Tn+k;K*~@^T#A=cPQY0OssVA)H1Pl#dRto>MBd0%_8H{pq$Jl}JCJ|?64I1< zU*l!SMl%CV5p2og2AYxqVXM=y4%1_EOEyHC@%#(|zsiO@44$^dVy{Utt z?u^_0Tk(<7G}<8!gYc ziYMHo{8bpZE?ZBvb#-HhIU)75+6$Ps0z%PD!r{W`@;|@`Xq2;rvVb=bdni|P=!SW9 zwuTImYl;J!X;RIDj|ceo&;l&L^szTmk7pP}eg0HCf9r3z`ukb3fdXM2*}r(+0#ZhISC@$1xQ0@LyZp;m1k<75P>0BD|qwI*YaRcgvPCHeRnegI>qj# z2rm#)1ge7D9}vzoUaHt~IF$gT2PF78>^oX)OvqK8wKnJ!15XaF3B2*Y32a==b3IB@ zaKB??0Kg`0F#knQ6sg8V1=cD0sJYx#?)h;}VBdn<@B0nF)OA;pTS{H|9s#eh1XFi~ zK-2KYmi4&!_)d^JTihMga2t971t4loYKUdfC7xAMQnDsH_z$fK1w^jL7u9xv$PSc2 zNICw3G{+bt@HSGBi5Oz3TE?B)2ZN-tuHeJ^n)Z`K5`?RaLm1#79iMMUUI%vyK5$>V z(R6E|M#oqFM#w%=b#Ya7F`p7Lii9s|;)uMp1dby#-~*S>-nRv3r!%i`Rbb%nZvYb% z7XG2iThG#XGPy}3rwDVMnfX7hI41ZR0kl1tgbt?i?$j`N5}<~~2NrFH0dfxG=e`VAqZrRKWa3XDE`=B}vfH7r~L?rFHedf=8Qe*7CZAo%ZCrig@RM`!@)`wXv z5G_Ep3Zni!5PDX}08PWVFP22ERkgx%tZ?fr1oUof%M;R3R3cl?u}yAF(3(PMEEuw{aw_8Zd{(+ zI|mHFngR85qrlz~-W$*dye$7BjSMBQc7^}R-td~%Jpj}YzdadsDH`(gwHzAuA7xjM zQLPL)YCkgtB{Te=>_R=dSJ(OlqE{8bZAp?T3D%|z)|Qy1It^r1iu4{E5~rIY!m2mz z7HGayS=*I9oWbnxeFa)ZHkK(EhXTGn2epMw{k53LzNzi`)z{z^h{_)S^Kn5f>Sy~2 zHtEA=BC-3*k0@^$f6-*S|GsaQhWyH~-$vTvH3KGl2IR|z@Dxb30P}P0%Z+HL{ba83 z5dgBQ7Xg|~W8?|llYO+{-IzMgZzX|1b64`M^dq&{J|#~w*4;C= z>F9p*_FM&O1z1Ee4AdAkLHG0IN4#)QBDci^tUw-46XeL;PZH!T9xMP1_R#$U_KN0= z2`T0zLI?quo^F6rO5E4j2c*xJWpAusM*X0EGEm0EBz5n};&wazCSSHzrXnkug1BH7 zP?BYtrVWJk^XH#fk;mR+A)g1(;b5KMz2Du%;Cc-@ZAcjf?d5C#a3mt-IuA?6`XR-- z%npafB{_rI8Me+Gff_3S5CFm#-8#@j!=|!q;`WQHJW~2$n+DffB^fXmZ>R4cgNF`4 zv^*v(D!;QnDI@v4VXl+L)9SadGJKx`Ne4P6(?;Zf5Hm zm`(67o8Kz0QM}s*^Phw2j|*c_rI-ff0^BC2fQw=-;31zp>HQ2=3~3R4qO$?MGU^E-6Ze)Q;RckPp7;+;U= zi}EPB*Mx-mG~g+Su+QMca)9l%O5!^MDCp6p^Bo5qb0`M?X)?`4)G)x|$B(d9)s5)m zY4va=K*xzD#PE$#-uWIPdo)g!&F={Vb^6V*QkO0_8b&qSJ03A>z<3Jgj}GZ*bnn5d zrT^2v*WLu(q3&-%l(e6K|6dGsVAIY7|J9>F6AIdy1+2Q>1zxAv7qj>N3=*B*Tv`an zn*B$X(^HchFZNF`omW#{Kp+TNW8>5GM~ukN^A~8KgHsAuJjrT#qWLquB?3>KU^>PD_{lJyAd6xzQW9mOC=r)9K_2F2aXv_7@?T^ z*5ji#;RZ&4?`@sZB%)zCL!xT1Pz_Z)1hhcd$eGZ8)00C-5^;}(352wyXEPI~ombqq zX(R~oFcRAYNg=UiIlq%I`R-pEtYm~gC>m=t+0@gR6cqCPft*Pdv^1GRo-MI0g_((!8td)Ad0#{!vFJGLCF=p= zn7i-=8f+lr2?UUC;lULN1_LMz+=#o<5EeU@j;UBXMc~Dc6#3|#pPo#su*`+K7nChk zHC)i|bpE|?$_kB4pZH%L{+@fccVkoCVNQlm;A6LIzAHen?H zEIqFru~XA<(>Pe~TJP%davPY`8`c}XSlvkbb3W`vu~+@d*H|R|E$xryocuU87YR&M zPP8)7?XFh1{6QD+rCVC&AjT8~Bak|K5B3Yj z0NYg!AgSkMl=Ysu*4ILS{E)mhQuHBmD#>z{RghPBbTbNzS}ZLLX-MJg`Ys8 zlu56UM&nw528ZhaOM=;dmh~V2&h?m_i%u;kH+K-sqv2p?W=2ZR6g&+0sp%ik_mlFe zl*-lmWzlgEU#0QDdpvsK5OujRCg4k|Lmz9{D;*}2fV;1(jE>YWs7%0y+b*%{?){kN zf7iE-k380i`wO;*Aq9^QPOV;9eG5F0Lj!zR^%bOoxt2bZ-#|xmne4$het?E5tXfj# zMRg$+hu{i!Pouvr^arhk3@sJmxtN`h1<5kM%=%(pga%IaBSw+GAGU~YonOQkEN(at zwDa-N#zg=AN*a9L%hlZaTRf8tMllRpCYUIOgoHFZ#y+#STKpDAlT4lx-mG%DKm0D; z0h^?q#2*Enockycc1E|{9__?{DNq#GA;mU)8Bp`!MGI~xm}5T(Z~{MPEu#DTE|822 z2`=!E6D>=Ip?WLgO5B;=^^}<1uk;?fi+&oKBeRHo5^61Gvc%K?w>~cNxx5#JWHldD zv28U40^~_(OA3%MvAsE5L!Q%*R~#8?JX_`A9gR-@X7pg4OO^xNQZF~P_QGe&V6@Dt0#o%2``FR z_&)J4DmF{R)>Jsk^ZI7SQiZzJW`?DRSfCQ&U=GT_%Tv>QW;*}3zigWQyvoRlV_&mh z{gSeS)QLc7>4T`yoxj#!_k1K*9Q2bUF4$<#_orR928kxu*?#CtT_6hFM$epmHrIHy z_Zy`JikVTK1O-l=HnEUAiY( z*SUprxs!{=0YybTNun><>?do6m+t+)Y+?oIm>2*-8Hcp=H1|B9W6A`i&t(J${H z1haDnQ-)3mldkvK>b0Rv6TCg^WW+Ex?%mgd7=+ozF6bZU+nNpB-)6T7z2-biV!YhQ z+R}jl(M`{2qq@J@xG)pHZq_sxVQwnkdbP2?Oa09nQ*PzSJVuMBVR=)_Zx)WH4AOJu z{z`2dDH*q_3~dFlb5^Q(HCk#lX@XDX$kkQD_lTSazIhA7q2@U;t2yswgWfPl=2C;^HPkEl&*u z{=T2%clogz(hWvvXN51G?AUAKp?(KNA!`R&`cEw@mkON+x01gWXl$Ln}_)?l6ul4z!;(z^eZVgxn0tIYCS`{b1~VN+B} zrqb@$Yu1xC%kDS`%;*HSCqTjBoIqWJk&Cv#jAs0Tw)KS3>QY^6m70}5_>2Ya{%G?y zthuWpgYxshBRA&AL=lVInXNpaX|cV)e*Mxek>~3-;gYy}9jAoiJjWA4Pmr{j*oc({ zWwG5o{%YX5m#99wHsZ(ut0=f2qPQF~fNMcA=s z;O|`b&!3`=8yWTNre$-eB#|R@Qk^UnaA3S8j}`l4PwxpWlY-BPR^G)z>$N}Jawj9E>v z+YzL~=bn43{mhXPByUTcZWhUOLHp1}AWF}7DPWe+56mW{1@vt_>$z2i0c1A=+ME)_ z?c>;d9h@&PzSIUYWPUU2G*`ryMP(Jf5WAEB^iNwh#Z5$9-qds5BiB#H4awf@fPDOrdp zLf#K{pR&SV{Kw-ryQPZ%R!I_cTA3)$6J4E4MekgMlhO-%E9i`oJ`P)=4II z+D(zRTa!u0f|mdCw|r(yyR-HDEzG>-Z_gjl0~X=&ai{APjfmuBtcHQ-wWJcgdgr@J5q z8H*d_K<>}-1mLTt<-yaKGfSU-F^w}k?ps{ju|Dg;7=MwcnWN01iz!z*94vkNPlg}1 z%Qw2vZqqKsCf z7d{o7Ts#@fsuTmWfzz5(CA9L@>>MboTLtd6UIm^Vma)dAsD~61Hq{eVeJGFgzHQgS z6^ngY6=FIa9S!l+g1wp)yhyqnyKdEI$9uwF`{G-r2g?hOKHA!@eb!wmx}7Fb>AYOn zoB#Misygu($LoQf#(S0?@!2bWXWI zjs0sMZZ_VYkf^cyL|J~zS(34sT5n^xcQ9c!fhY^vsV6Z}*8&c2R;!5~KPf(55qS0U zn%lEfgbu8VV7~j6hBv~=UrPwfNWp=*%o?gOAz;D_>R`T8~( zuuWY+V|-%YF|>TGu5iLc`O8xH{$-^leM|ew{v6S+#0;+iEGy&nUc$6uF2SJsE)Uo) zXABXx0E3DnIx;)^A4WcC%D$)DO0OEgkgS{%lUkg0%c?pXa}S9Yf#=NufZWqCbuK!Z zC+vC93m}57CFBX0rcuVgKS0xj;OQDZQf!cuOBMZGB9^%>(4m`xPVTz3l0NE}RJ>QT zbL$IpUo)*wqncW8oBQ%;o@nHvziJ`1Mj%q~G1HSs*qeK6hDnxVgF;BK0^jtZv4wh$ z&&2g{%#gj*Emo3*bIE+WF78@nmQZO!)Jv(ocPdPia;rfogZ>UV zSfHG4@$_`wexJC+;!x*^mqX?+f>xixp+#?7r%m}d)`aX8X|$h`E#l9j&>na5RQllB z9?oRV;d-JYOKOi1f&Hok7(UsASnhwW>_>3Kn%B(`@4IBIVXcb=mxt_>0luk$i5wQ01com$dSi_i zgX$nbK(C{MhcWj5J9F8+_j&3pqhuoRZR8CGviVcM6F&&%g~)^CMAc9(n7!fx zxV&^S6(e|lI0cnrfLRo|VA6E_M_rtzm#2r@y2XYoRv*^(h<2;`tDb(X#QtEuuj(2JK|F~Xy zpjwr<8JftjUQsQ1aU!yT_R;A&e)hj%Y`{dDI zV_+5QbG}`L!7G%Dv20V)?hSKMcwwn=G``tXEC}X)hK1mET~~<{Pc&w4)}M>k$>Y%Qiejs?xa+y_P{rOS$)MW2@j^vB?Mvxl z^C)+&#n%T0d;xs}yV8yZZ1&ajZP9N-E8S zl0kAfX`em-ymO&P>x z4<47KUHW6v;G1l3_x#s-kp02ioIT5G4Qk|07iwg_ir#)6F zhn<`J(UHospRA!c-u2QCjPvq83Q+3%b;{Jq4L3_}^}~L0bEQ>6^BNgh9Io}?$~+TR zYbW`Sdr$-l24c=C9Fcc^5b`R6{vDlVzL!bw)#|f_5nJOP7hN zdpL--DWAqAr=9Zs4!(^eaTS>y5#sTzqoPPosbR4NNiIHHT`iluCc+Qh-EFSYj^Hk7E~w~IChFw>84SG5q)|c?*OIAB2$Qk*pElPDuQuJzi8|Bx zh*I6er1~8xvukqJN5$rEbow7LPDcgtZKH9_b7u{Fnm$)m3OvxHEs;-rjDgBtxi}Zy z95{D-q>#X&ZasO}LBWx&EI>SW4%@g`z9qKXdZA@oE0ABaWz6MDPPB_Fb#X6Vy3VOV ziNf8ec%)H&&{pz9+q+ezjOOAixHV8ZGl$#ryMVH^Z^E(Behl_CBYwaMhZ{};`Sl@1 z#+;Y_Rgr%P@Vt|PN#Mh5k;5wI46SqWLFdxWrMYN)h z_60+`dAO#vAufP%%DyP$lfy&T?9I&3T}3xBh_!T^Ff1R7wh(uRFR}H{HZrk&xIV)_ z(|-sEt2tiNDLBMb8wvOSNl4HB!}M^7 zK6LC+=c$!0mgGkcMk!pkFf8-GCy>+dJFfR86wn!BZ#4+5@qKH7u# z9yrr^iCigdkPisH2@g8^z=C~Oez3;P01h<#?GYX(>YQxuG|zy6mp2kHdCG#>hBc2XL-Vw=Rq%rp&+_8aG5G>% zTQTFZ$!mA_EP%IzXK=8$nR+j-XL&)Cu$EjW;{Hn+%3U$$HrV%yHwJ&EMju6+@0-LWI<8YUi+q~@eh->Zrz}0U3{4~#^H#$Hwk_$NDeYUAKdN&28!hhv3V|Jo0sO&SKw?fBuedgpALFfI zeSc|#1Y12tgt30T#MFc&jY?)On3%avqBDM-*y!1sQ*@fcp>OO+A$_)M<9jYa zM};FVx555J)x0+H(dAb6$!v^SG{oL*bUZcU9_N->p;!LX)FZ9dZAo5T`?Q-SM zJd64+W9{Uxxg54>eK6(4J3C=mK?xjN=2n@!Qnqt#2Dh#L35bAGLwSF%I1%8tSxJa@iR5n`)@Ui>94J2@}Zdz;@pRAcgW*ODEHJu5`4nJ+ZSj^%EGb8yBy@2k)s304=x*_FH;sbr||xQ1Pcq zNyhtXqVgI0BfNRWc<8WOO2J{zj;8#>iS(iP?UcC}3fPEVhP}6Vv&2>R7n@`88yctC z6S{M8m*saU{%^KkZS}O>Fvi{@b_6LkelA5%&l>#c2cMp_&fL{jtej0c1EU580FAZ! z;^O;GgbEI#STCL5m8prAIReH#Q z)-JpC*)Ug~)^@6{TEmxzjck2dDLIH>S9EuE&P%KKro*=K5^{hO?!chCcbCRgjtZt{ zYs5>`bM}5e#PbvHf4BhZ?@Z>(I4iy=7^#)k6V0uC-vw7{AHC*o;=NhI@W=9_MKhPZ7Ss(EpgJH_^WUDh`>7-?l5)q$(g>65Ka8*g~MMI$!$z|djS%L|A0 zbOBQ%&G$4p$W#sc4dM4XE`X=iYY};Nc93t+nw=3m!TB9B@2rChUFoGk^5X0xrQ}2; ze%}*Q+6~Uw$`sxc**qU|-@z~FD_VRsA@4cSp_Zi8HZ&^XaT)hF>!9)OY&$)rV4^F| z&dC`7<6#wE<9Iw;dNoQ~5&~o@1t2haq;X&HuRJ*!J^(%nQgYQ4W&)Vz0#Mmnuwa-( zou8fPfFUHiEQ5Ps_~sj^!Z;3>h+8d5Bob}DvfOO`VA?O&z|^BP22Td(ohrj!n*o+< zG*6}hxpzN-u)Buu@Y=Wb7FN~x@9;9T7cO7lJZNI_FUlaDqFuYuCAGE}Ke`9#?1|BW z0aMX&lO6D#avOY3j;(3b3}?LGOZn97`Um$-f)p|XTB+S12q!Wu2bIwzyLUW)V!_8j ztwu05B0>qP7sc0vsu}Hjj0xD5Pp2enmupKKGWMS7d$?k6{shdsN+4j_QXv{`qxUas8!0xrS?-Zc?o{0LY1%KFmbC47eRMfw$#O_K z9bcUz4#N@~xtdBCH>!z)aEvHfsGI%c)oLfHH>pWpaS#G|G%&$bi(36H0#t|NRkxAu1|LQt{y9 zK?rU&M)n2yx*}_2;RY@*$N~dSL90A>_HLP|){bK_U40XT8aO zBCYWwilgt>iIT3_=+*n*BOAZ7O(*tw?&(9R+oFNg(t9M?!HI@78~L zSk`2gN1lJ>bQ|5^0wIQ~Rq2qA5LkPtR14&-@%*?DKdzwAu*$*26SN5Jv821o znZRmkb7UQc}{o|^mHvONa#)3J_J!CRj9#%$ZA%v{$3#eWQaP-Zo23Xpu74(R9<5s zXI>51mj`}+GS3_-XUn+VWYUS2$haVo>;=3CkYWbT{f=RNNnim>MzE1%{jlE8Lnlv| z-dTm=s(&6HFK@!cU7e`k1jDv|g)YdqoBf5nLiS^!H+=tY24f;->wW_pyT2lZc#o-1 zkPT8#alYqAPg^Wt?(H~_1H4SY6}(_UuP4{BCl~;n}cEKx(s#SsR=B@WA21o4&AM5K~K3u-Q-O}fxr3KZT+Vi4HDo_}m>U1A`(rqE)(86q8c(A>EGkq zgmC2R)0QqQ;6!ku3M4Dyt6t#J-k6TtdFhaQ>f@ESHRF4&hIP0^PT6%0VD-GaM}$km z!CxcH{Z18?5^hDK*8d)CWPeCuj@2x`!J0jqv(ToNZyRYE%ki1H8-b0KI{WS}=F8JQ zJc~2&40!10i_`lvCN599RZ3sI>mbt02RL>L{|y! zflU1}3x*2$>$%T>|ECxFBknr(e(;-QB|2Zwo3raCgC7KG(rXkDvU9!N-2SNS>A{i? zR(jqU?23+shh*u|Ox(N@DQd|MM>omO_Ouy4sY}`(_URyT4QyJT{f^4MZgcQLBN)Do zt($LdP_TDE9Q!Np=a1G|`rkk5=2}?jjn^W)-gA8xH9@3SGj)kKb=2LusYhHr6wsH7 zu`j`upxCtvw;IGcXd#Z1SW#gPfLY2~6LC9~pUzKYYUS)#==TYX9M zY&%jr1;&ac{>g#BzV?D}mZjpSs`Z9ZyJn>+D{o=>lvf1d>9lwm&w0Mbq-KFlN zqlV)t&#sh%cCPqU3~%@O2x0G?uLQ`JWYw21Kd-lAQy9xYqr)}QXSPWf$#}4V!OHKy zamx^l!8}My$W<|?n!h_k=zddjv+l2jeijBw-G!gdh@-08SA1TS!mMOiB!3_H9x`9w z5E&$ERSLGy&Z5~oiD=d?CfhDvJV0LBLt1|#8FY;tTpBr0 z+v|-^B>P==L7{OlVVWcIy6O0qcuN-_BQ~jyso$BaA*e~!hysLv$dZ~>u5=f3j9ss- zW?a^vwq1jMh3_XLHO~P?u(h^Lqqzp4OE&i0pK1;=K4@~=gcMDMI(&jZ=U@5$q@qc& zqjAnQA^uTU<2I>bgHa(U;7&bx;paHGt;gL}RzIMfl#UQ8sYxqv+4vpz$4xH$09Cp) z(9C-t2{LCB6iQz<2%qY7KYODYm@{JPw!wYPw`5xw(=c!J;~kT}Li$Rv;a_X07*mO( zKI;{aG3AHl{LNd`oxq7LJF0cl2I#m(TN;2b>bmTK<;(gk88gu8QDBtv1$Vh8a#y0# zl!fgF?a>OZ*nT@67hF>i&F=YN);GgS)~?j?0s=i^!f0Lj`<3YvmR}eg%^NYW5n8=q zN}UqDwxMJB?s0V+5ELwv@R0STE8< zEJLv(!0Wlb{tdG-SrGRxX0@xQigg@6zi2Ao0IcCY1uZNY0=*K0?2V2qlm&&&Yt8yi^y}7kk&;MHFPPr(GO9aDzw&@w_vs-=oSIU+ zH~ZK0FyS+Pf;9OUqlynm6+JAnYQvW30w*YaXwg~7DnQ>Vl^DaW*`pDrOI#gZY8*J% zO0@F|^Q3-YIEWBw<#*yZ{&!AVFW$H)pj=yB{Ub3)TJ&7Wr**;r(D^rP6NqP*BBwaEd!Z z7$mNm5;4^4U(KP21jYbDYSjsgUZQ;}xu6ZelE=CJ!%A50Xs_5aoTw%2W)$Ka$hmai z@qPv~MEedFU9ZsDfbSq`>)VP{;=w=xUtDSu=w$qpuU~(s`<<`El*-+ZO1w>)(iEpI ztK=?`3>tw>^Io=+8@&57Ogh=(H47#*cr|Bi-NpO93x-0XY=;Z_f%BBr&X0_l{%H1E zf*Sd;9k&|r|8?54`@~~^J&n{!Z5b{GMYZq2Sei{62hc}=Bud@N!*K+I+z(MhH?a$J z^O+<^#P(oI`GOewGtIdExNon)^*}sN`&x#$?<{x~0~59X^^WDLt|6}k&6*}P+B4%q zopa}Rj~~fBcVO{=RjxVm)xEjfX|2dfu5I&mT)HlaYwg|kGJX@8`-&iS%TIF>jFt(U zuV`v>Qz8IzqDLDp@kQgSn)a<_l`zLfs*^8qO0a)D$&KS=80ysFV*CE}bwQ)s&8?pB z&*39r1al4WrzAS`H=R$>QT{K{KDU_H+!Ws%(phA|71t<4QB(Mx;fuk!dP<9krn4|x zL_?gV=1PgU8dq5pbT&}Toa$%>=lJRxFD0czoPAAKOY__s@@n_H-L5_5nDu$OG#L_I zd=DF;M-*WycT>n-J)+fB@b+y}@=wP6@Kx^aw8UPmeLtzc-CHry94R}3UW<~0+QE3$ zz_23)GW-UWXURHx=8)zeDjXy^&uWs5-((S8U$7rM8bCuGs-6FO(R(!HK<+@->j%zQ zl(8Tvan!b+$vy2)f94zRE&7v8(~51-wSTX4*faImGloqKcJ{5j|9cd(4_p5oxL88N zQI1GW{s2L5WM8MlheED3tB}92#?)}Tv1$tA`%9008o4K{x$2lC##%B|+_zX#{Goz= z`uNeOCxI!?tx{Z$h62TlOQ7SbnumQrt5J02Vk?VfotZNaG!tn?c8K$~q_O z6b7R$?JcuqsPoqsD-7d8yrH<2G1(H6`wAgRHIB#7eLPQ>t@6}mNV`>_=)Gm-e8|c2 zm-n;Qwk_r8b&kJz9?f-(1ZY-NdkkrIPJbGXDJ^9gc_z~_*M0_|Ywnl`84eQ6jf>~# zbxb@Gf@OmJ7t{vRGApCg>n8FN-+ydjKQr*i4Z8*48~js04UH~%&JR}QikU$Q7w8SKvTj?0Vxna1{NJJ6l1y zH)R-PGPiO@KxN;GsBZ7l-cKC>ww&C-Jq(H*6oZFKq7_vEbemTq*B0c+boVHJ$ke}S z3v=`sewH=p>#jb?L*lRL&n{qf7__QCX*X8JYBq;+j7MY{kQ7Iu&c25(*d|F&${cQm zjr`Cka#vhOhNBZ2D1vlaQN#@QJYHeaPL7b3F8>@vNULH}6YEW1=9yrQiv)!x2_#dW zY^LsBr_)5yvi(VVnAg@?bW8G9o=o0hP%LLk=mL*Xk?^c-eG6xk|brcmX}fOy9R}EVeuueTr&H{bNgy?!ENJ0>GeW>sm7o z;zgAs@mp`Y?QQRnFHTz7?_I;wrMzUBC+}r#0dm~1kuFjL| zNf(V5XOW<7!2Y_;u`UY<-!?R1))|3%*pL>~Vb0rl%0D~S9x_~FVk9MuZY!itW5xh5 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 literal 0 HcmV?d00001 From c6438ceaf190e4f6bd226d86237bb28d32fd7257 Mon Sep 17 00:00:00 2001 From: Abdel Sghiouar Date: Thu, 28 Oct 2021 09:22:23 +0100 Subject: [PATCH 7/9] fix readme files --- cluster-setup.md | 53 ++++++++++--------- .../mci-frontend-config/README.md | 4 +- 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/cluster-setup.md b/cluster-setup.md index f7c94886..aa90a3a0 100644 --- a/cluster-setup.md +++ b/cluster-setup.md @@ -12,10 +12,10 @@ $ export PROJECT=$(gcloud config get-value project) # or your preferred project The single-cluster examples use the following GKE setup for deploying the manifests. ```bash -$ gcloud container clusters create gke-1 \ - --zone us-west1-a \ - --enable-ip-alias \ - --release-channel rapid + gcloud container clusters create gke-1 \ + --zone us-west1-a \ + --enable-ip-alias \ + --release-channel rapid ``` @@ -87,10 +87,11 @@ The multi-cluster examples use the following GKE setup for deploying the manifes Confirm that they are registered with Hub. Your EXTERNAL_ID values might be different. ```bash - $ gcloud container hub memberships list - NAME EXTERNAL_ID - gke-1 50468ae8-29a3-4ea1-b7ff-0e216533619a - gke-2 6c2704d2-e499-465d-99d6-3ca1f3d8170b + gcloud container hub memberships list + + NAME EXTERNAL_ID + gke-1 50468ae8-29a3-4ea1-b7ff-0e216533619a + gke-2 6c2704d2-e499-465d-99d6-3ca1f3d8170b ``` 6. Now enable Multi-cluster Ingress and specify `gke-1` as your config cluster. @@ -146,7 +147,7 @@ To implement the `multi-cluster-blue-green-cluster` pattern, we need another GKE 2. Rename context ```bash - $ kubectl config rename-context gke_${PROJECT}_us-west1-b_gke-3 gke-3 + kubectl config rename-context gke_${PROJECT}_us-west1-b_gke-3 gke-3 ``` 3. [Register](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup#registering_your_clusters) `gke-3`, following the same steps used previously. @@ -154,16 +155,17 @@ To implement the `multi-cluster-blue-green-cluster` pattern, we need another GKE Again, figuring out the `gke-uri` of a given cluster can be tricky, so use: ```bash - $ gcloud container clusters list --uri + gcloud container clusters list --uri ``` Confirm registration of your clusters. - ``` - $ gcloud container hub memberships list - NAME EXTERNAL_ID - gke-3 8187e1cd-35e8-41e1-b204-8ac5c7c7a240 - gke-2 47081e57-c326-4fa0-b808-7a7652863d32 - gke-1 90eeb089-cd16-4281-85ce-e724953249dc + ```bash + gcloud container hub memberships list + + NAME EXTERNAL_ID + gke-3 8187e1cd-35e8-41e1-b204-8ac5c7c7a240 + gke-2 47081e57-c326-4fa0-b808-7a7652863d32 + gke-1 90eeb089-cd16-4281-85ce-e724953249dc ``` @@ -174,32 +176,31 @@ In order to use Multi-cluster services, following steps need to be completed to 1. Enable the CloudDNS, Traffic Director, MultiClusterServiceDiscovery APIs for your GCP project as described [here](https://cloud.google.com/kubernetes-engine/docs/how-to/multi-cluster-services#before_you_begin). ```bash + gcloud services enable dns.googleapis.com - $ gcloud services enable dns.googleapis.com - - $ gcloud services enable trafficdirector.googleapis.com + gcloud services enable trafficdirector.googleapis.com - $ gcloud services enable cloudresourcemanager.googleapis.com + gcloud services enable cloudresourcemanager.googleapis.com - $ gcloud services enable multiclusterservicediscovery.googleapis.com + gcloud services enable multiclusterservicediscovery.googleapis.com ``` 2. Now enable Multi-cluster Services. ```bash - $ gcloud alpha container hub multi-cluster-services enable + gcloud alpha container hub multi-cluster-services enable ``` 3. Confirm that MCS is configured properly. ```bash - $gcloud alpha container hub multi-cluster-services describe + gcloud alpha container hub multi-cluster-services describe ``` 4. Grant required Identity to MCS Importer. ```bash - $gcloud projects add-iam-policy-binding ${PROJECT} \ - --member "serviceAccount:${PROJECT}.svc.id.goog[gke-mcs/gke-mcs-importer]" \ - --role "roles/compute.networkViewer" + gcloud projects add-iam-policy-binding ${PROJECT} \ + --member "serviceAccount:${PROJECT}.svc.id.goog[gke-mcs/gke-mcs-importer]" \ + --role "roles/compute.networkViewer" ``` \ No newline at end of file diff --git a/ingress/multi-cluster/mci-frontend-config/README.md b/ingress/multi-cluster/mci-frontend-config/README.md index 704a93e2..9173b101 100644 --- a/ingress/multi-cluster/mci-frontend-config/README.md +++ b/ingress/multi-cluster/mci-frontend-config/README.md @@ -148,7 +148,7 @@ Now that you have the background knowledge and understanding of MCI, you can try 1. Download this repo and navigate to this folder - ```sh + ```bash git clone https://github.com/GoogleCloudPlatform/gke-networking-recipes.git Cloning into 'gke-networking-recipes'... @@ -218,7 +218,7 @@ Now that you have the background knowledge and understanding of MCI, you can try 7. Log in to each cluster and deploy the app.yaml manifest. - ```sh + ```bash kubectl --context=gke-1 apply -f app.yaml namespace/multi-cluster-demo created deployment.apps/foo created From 543b9ab868edb9ecd2a83247ec505fb713c1c6f2 Mon Sep 17 00:00:00 2001 From: Abdel Sghiouar Date: Thu, 28 Oct 2021 09:22:23 +0100 Subject: [PATCH 8/9] fix indent issues --- CONTRIBUTING.md | 22 ++++++------- .../mci-frontend-config/README.md | 33 ++++++++++--------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 59047f16..8e103923 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,22 +16,22 @@ The goal for GKE Networking Recipes is to provide a bite-sized, easy to consume, - There should be clear ownership of a recipe. Each recipe has one owner. If you contributed it then you own it until someone else has agreed to be the owner. If functionality changes and your recipe is no longer valid or no longer makes sense, it is your responsibility to update over time. - Each recipe should be listed as a bullet point with a brief description on the [primary README page](./README.md). - ### README guidelines + Each recipe's README should consist of the following sections. In general the README should be concise and should not try to replicate the docs or be a solutions guide. Keep it bite sized. - Summary - - A brief description of what this recipe accomplishes - - Any references to specific GKE features or GCP load balancers should be appropriately linked - - The use-cases that this recipe accomplishes should be listed - - A diagram [of this format](https://docs.google.com/presentation/d/1Wngda7LN4GcMpASvdnG-laLUDOt3hzmPeUuVvMdSXA0/edit?usp=sharing) should be used to describe the networking flow, example, or architecture wherever it makes sense. Images should go into the [`/images`](./images) folder. + - A brief description of what this recipe accomplishes + - Any references to specific GKE features or GCP load balancers should be appropriately linked + - The use-cases that this recipe accomplishes should be listed + - A diagram [of this format](https://docs.google.com/presentation/d/1Wngda7LN4GcMpASvdnG-laLUDOt3hzmPeUuVvMdSXA0/edit?usp=sharing) should be used to describe the networking flow, example, or architecture wherever it makes sense. Images should go into the [`/images`](./images) folder. - Network manifests - - This section describes the primary capabilities and configuration format for the features that are highlighted in this recipe - - This section should only focus on the networking-related manifests but not show or describe all the manifests (such as app deployment) + - This section describes the primary capabilities and configuration format for the features that are highlighted in this recipe + - This section should only focus on the networking-related manifests but not show or describe all the manifests (such as app deployment) - Try it out - - This section should describe in a few steps how to deploy the networking manifests to achieve the use-case - - Do not try and recreate an entire tutorial. Try to demonstrate this in as few steps as necessary and put most of the description and detail in the Network Manifests section - - Demonstrate that the use-case works and display the output that validates it (whether that be a succesful ping or a specific expected response) + - This section should describe in a few steps how to deploy the networking manifests to achieve the use-case + - Do not try and recreate an entire tutorial. Try to demonstrate this in as few steps as necessary and put most of the description and detail in the Network Manifests section + - Demonstrate that the use-case works and display the output that validates it (whether that be a succesful ping or a specific expected response) - Summary - Use this section if it's necessary to add closing comments or add any detail to the example for explanation. - Cleanup @@ -51,8 +51,6 @@ Each recipe's README should consist of the following sections. In general the RE | [Multi-Cluster Ingress Blue-Green App Migration](/multi-cluster-blue-green-app) | | | [Multi-Cluster Ingress Blue-Green Cluster Migration](/multi-cluster-blue-green-cluster) | | - - ## Contributor License Agreement Contributions to this project must be accompanied by a Contributor License diff --git a/ingress/multi-cluster/mci-frontend-config/README.md b/ingress/multi-cluster/mci-frontend-config/README.md index 9173b101..bd467dd2 100644 --- a/ingress/multi-cluster/mci-frontend-config/README.md +++ b/ingress/multi-cluster/mci-frontend-config/README.md @@ -1,20 +1,20 @@ # Multi-cluster Ingress for External Load Balancing and FrontendConfig -[Multi-cluster Ingress](https://cloud.google.com/kubernetes-engine/docs/concepts/ingress-for-anthos) for GKE is a cloud-hosted Ingress controller for GKE clusters. It's a Google-hosted service that supports deploying shared load balancing resources across clusters and across regions. +[Multi-cluster Ingress](https://cloud.google.com/kubernetes-engine/docs/concepts/ingress-for-anthos) for GKE is a cloud-hosted Ingress controller for GKE clusters. It's a Google-hosted service that supports deploying shared load balancing resources across clusters and across regions. [FrontendConfig](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters) is a Google developed [CRD](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) (Custom Resource Definition) for GKE that allows to: + - Implement HTTP to HTTPS redirect - Customize the LoadBalancer [SSL policies](https://cloud.google.com/load-balancing/docs/use-ssl-policies#creating_an_ssl_policy_with_a_google-managed_profile) -### Use-cases +## Use-cases - HTTP to HTTPS Redirection - Customizing SSL policies with Min TLS versions and TLS features - Disaster recovery for internet traffic across clusters or regions - Low-latency serving of traffic to globally distributed GKE clusters - -### Relevant documentation +## Relevant documentation - [Multi-cluster Ingress Concepts](https://cloud.google.com/kubernetes-engine/docs/concepts/ingress-for-anthos) - [Setting Up Multi-cluster Ingress](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup) @@ -23,7 +23,7 @@ - [SSL policies](https://cloud.google.com/load-balancing/docs/use-ssl-policies#creating_an_ssl_policy_with_a_google-managed_profile) - [FrontendConfig CRD](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters) -#### Versions +## Versions - GKE clusters on GCP - All versions of GKE supported @@ -34,6 +34,7 @@ This recipe demonstrates deploying Multi-cluster Ingress across two clusters to expose two different Services hosted across both clusters. The cluster `gke-1` is in `REGION#1` and `gke-2` is hosted in `REGION#2`, demonstrating multi-regional load balancing across clusters. All Services will share the same MultiClusterIngress and load balancer IP, but the load balancer will match traffic and send it to the right region, cluster, and Service depending on the request. This Recipes also demonstrates the following: + - How to enable HTTPS on Multi-cluster Ingress - How to Configure HTTP to HTTPS redirect - How to Customize the LoadBalancer Min TLS version and Features via [SSL policies](https://cloud.google.com/load-balancing/docs/use-ssl-policies#creating_an_ssl_policy_with_a_google-managed_profile). @@ -45,7 +46,7 @@ The two clusters in this example can be backends to MCI only if they are registe ![basic external ingress](../../../images/multi-cluster-frontendconfig.png) -There are two Custom Resources (CRs) that control multi-cluster load balancing - the MultiClusterIngress (MCI) and the MultiClusterService (MCS). The MCI below describes the desired traffic matching and routing behavior. Similar to an Ingress resource, it can specify host and path matching with Services. This MCI specifies two host rules and a default backend which will receive all traffic that does not have a match. The `serviceName` field in this MCI specifies the name of an MCS resource. +There are two Custom Resources (CRs) that control multi-cluster load balancing - the MultiClusterIngress (MCI) and the MultiClusterService (MCS). The MCI below describes the desired traffic matching and routing behavior. Similar to an Ingress resource, it can specify host and path matching with Services. This MCI specifies two host rules and a default backend which will receive all traffic that does not have a match. The `serviceName` field in this MCI specifies the name of an MCS resource. The MCI below also defines via annotations: @@ -144,7 +145,7 @@ spec: Now that you have the background knowledge and understanding of MCI, you can try it out yourself. -### Try it out +## Try it out 1. Download this repo and navigate to this folder @@ -158,16 +159,18 @@ Now that you have the background knowledge and understanding of MCI, you can try 2. Set up Environment variables ```bash + export PROJECT=$(gcloud config get-value project) # or your preferred project export GKE1_ZONE=GCP_CLOUD_ZONE # Pick a supported Zone for cluster gke-1 export GKE2_ZONE=GCP_CLOUD_ZONE # Pick a supported Zone for cluster gke-2 ``` - NB: This tutorial uses Zonal Clusters, you can also use Regional Clusters. Replace a Zone with a region and use the ```--region``` flag instead of ```--zone``` in the next steps + + NB: This tutorial uses Zonal Clusters, you can also use Regional Clusters. Replace a Zone with a region and use the ```--region``` flag instead of ```--zone``` in the next steps 3. Deploy the two clusters `gke-1` and `gke-2` as specified in [cluster setup](../../../cluster-setup.md#multi-cluster-environment-basic). Once done, come back to the next step. 4. Create a Static IP for the LoadBalancer and register it to DNS - + In order to use Google-Managed Certificated, a static IP needs to be reserved and registered with your DNS Server. Start by creating a public Static IP. @@ -189,7 +192,7 @@ Now that you have the background knowledge and understanding of MCI, you can try 5. Provision Google-Managed Certificates Export you domain suffix as an environment variable - + ```bash export DOMAIN=mycompany.com ``` @@ -247,8 +250,8 @@ Now that you have the background knowledge and understanding of MCI, you can try 8. Edit the ingress.yaml file and update: -- ```networking.gke.io/static-ip``` value with the IP address you reserved earlier. -- ```$DOMAIN``` with your own domain. + ```networking.gke.io/static-ip``` value with the IP address you reserved earlier. + ```$DOMAIN``` with your own domain. 9. Now log into `gke-1` and deploy the ingress.yaml manifest. @@ -414,9 +417,9 @@ Now that you have the background knowledge and understanding of MCI, you can try * Closing connection 1 ``` -The LoadBalancer returns ```302 FOUND``` with an HTTPS URL. curl reconnected to that new URL, negociated TLS and returned the output of the app. This proofs HTTP to HTTPS redirect works + The LoadBalancer returns ```302 FOUND``` with an HTTPS URL. curl reconnected to that new URL, negociated TLS and returned the output of the app. This proofs HTTP to HTTPS redirect works -12. Now Let's try to connect with a TLS version < 1.2. +12. Now Let's try to connect with a TLS version < 1.2. ```bash curl --TLSV1.1 --tls-max 1.1 -L -v http://foo.$DOMAIN @@ -465,4 +468,4 @@ kubectl --context=gke-2 delete -f app.yaml gcloud compute addresses delete mci-address --global --quiet gcloud compute ssl-certificates delete mci-certs --quiet gcloud compute ssl-policies delete ssl-policy --quiet -``` \ No newline at end of file +``` From e66c928974eb3931896968bb9d095807484a8157 Mon Sep 17 00:00:00 2001 From: Abdel Sghiouar Date: Thu, 28 Oct 2021 09:22:23 +0100 Subject: [PATCH 9/9] fix markdown style --- cluster-setup.md | 19 +++++++------ ingress/multi-cluster/mci-basic/README.md | 33 ++++++++++------------- 2 files changed, 23 insertions(+), 29 deletions(-) diff --git a/cluster-setup.md b/cluster-setup.md index aa90a3a0..60f76b26 100644 --- a/cluster-setup.md +++ b/cluster-setup.md @@ -1,12 +1,11 @@ -## Set up environment variable +# Set up environment variable This will be referenced in upcoming command line examples. ```bash -$ export PROJECT=$(gcloud config get-value project) # or your preferred project + export PROJECT=$(gcloud config get-value project) # or your preferred project ``` - ## Single-cluster environment The single-cluster examples use the following GKE setup for deploying the manifests. @@ -18,10 +17,9 @@ The single-cluster examples use the following GKE setup for deploying the manife --release-channel rapid ``` - ## Multi-cluster environment basic -The multi-cluster examples use the following GKE setup for deploying the manifests. If you've already created `gke-1` in the [single-cluster section](#), you can reuse that cluster. +The multi-cluster examples use the following GKE setup for deploying the manifests. If you've already created `gke-1` in the [single Cluster Section](#single-cluster-environment), you can reuse that cluster. 1. Deploy two GKE clusters within your Google Cloud project. @@ -68,9 +66,9 @@ The multi-cluster examples use the following GKE setup for deploying the manifes gcloud services enable multiclusteringress.googleapis.com ``` -5. [Register](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup#registering_your_clusters) your two clusters (`gke-1` and `gke-2`). +5. [Register](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup#registering_your_clusters) your two clusters (`gke-1` and `gke-2`). - There are a few steps to complete as part of the registration process. A quick hint to get you going is the `gke-uri` for your GKE clusters. + There are a few steps to complete as part of the registration process. A quick hint to get you going is the `gke-uri` for your GKE clusters. Register the clusters with Hub. @@ -129,7 +127,8 @@ The multi-cluster examples use the following GKE setup for deploying the manifes updateTime: '2021-10-27T15:09:33.451139409Z' updateTime: '2021-01-14T09:09:59.186872460Z' ``` - 8. At this stage your clusters for MCI are ready, you can return to the tutorial you started with. + +8. At this stage your clusters for MCI are ready, you can return to the tutorial you started with. ## Multi-cluster environment blue/green @@ -159,6 +158,7 @@ To implement the `multi-cluster-blue-green-cluster` pattern, we need another GKE ``` Confirm registration of your clusters. + ```bash gcloud container hub memberships list @@ -168,7 +168,6 @@ To implement the `multi-cluster-blue-green-cluster` pattern, we need another GKE gke-1 90eeb089-cd16-4281-85ce-e724953249dc ``` - ## Multi-cluster environment (multi-cluster-services) In order to use Multi-cluster services, following steps need to be completed to enable feature after you complete "Multi-cluster environment (basic)" set up. @@ -203,4 +202,4 @@ In order to use Multi-cluster services, following steps need to be completed to gcloud projects add-iam-policy-binding ${PROJECT} \ --member "serviceAccount:${PROJECT}.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role "roles/compute.networkViewer" - ``` \ No newline at end of file + ``` diff --git a/ingress/multi-cluster/mci-basic/README.md b/ingress/multi-cluster/mci-basic/README.md index 3c762c47..4553637c 100644 --- a/ingress/multi-cluster/mci-basic/README.md +++ b/ingress/multi-cluster/mci-basic/README.md @@ -1,21 +1,21 @@ # Multi-cluster Ingress for External Load Balancing -[Multi-cluster Ingress](https://cloud.google.com/kubernetes-engine/docs/concepts/ingress-for-anthos) for GKE is a cloud-hosted Ingress controller for GKE clusters. It's a Google-hosted service that supports deploying shared load balancing resources across clusters and across regions. +[Multi-cluster Ingress](https://cloud.google.com/kubernetes-engine/docs/concepts/ingress-for-anthos) for GKE is a cloud-hosted Ingress controller for GKE clusters. It's a Google-hosted service that supports deploying shared load balancing resources across clusters and across regions. -### Use-cases +## Use-cases - Disaster recovery for internet traffic across clusters or regions - Flexible migration between clusters - Low-latency serving of traffic to globally distributed GKE clusters -### Relevant documentation +## Relevant documentation - [Multi-cluster Ingress Concepts](https://cloud.google.com/kubernetes-engine/docs/concepts/ingress-for-anthos) - [Setting Up Multi-cluster Ingress](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos-setup) - [Deploying Ingress Across Clusters](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-for-anthos) - [Google Cloud External HTTP(S) Load Balancing](https://cloud.google.com/load-balancing/docs/https) -#### Versions +## Versions - GKE clusters on GCP - All versions of GKE supported @@ -29,10 +29,9 @@ There are two applications in this example, foo and bar. Each is deployed on bot The two clusters in this example can be backends to MCI only if they are registered through Hub. Hub is a central registry of clusters that determines which clusters MCI can function across. A cluster must first be registered to Hub before it can be used with MCI. - ![basic external ingress](../../images/multi-cluster-ingress-external.png) -There are two Custom Resources (CRs) that control multi-cluster load balancing - the MultiClusterIngress (MCI) and the MultiClusterService (MCS). The MCI below describes the desired traffic matching and routing behavior. Similar to an Ingress resource, it can specify host and path matching with Services. This MCI specifies two host rules and a default backend which will recieve all traffic that does not have a match. The `serviceName` field in this MCI specifies the name of an MCS resource. +There are two Custom Resources (CRs) that control multi-cluster load balancing - the MultiClusterIngress (MCI) and the MultiClusterService (MCS). The MCI below describes the desired traffic matching and routing behavior. Similar to an Ingress resource, it can specify host and path matching with Services. This MCI specifies two host rules and a default backend which will recieve all traffic that does not have a match. The `serviceName` field in this MCI specifies the name of an MCS resource. ```yaml apiVersion: networking.gke.io/v1 @@ -134,7 +133,7 @@ Now that you have the background knowledge and understanding of MCI, you can try - app.yaml is the manifest for the foo and bar Deployments. This manifest should be deployed on both clusters. - ingress.yaml is the manifest for the MultiClusterIngress and MultiClusterService resources. These will be deployed only on the `gke-1` cluster as this was set as the config cluster and is the cluster that the MCI controlller is listening to for updates. -5. Separately log in to each cluster and deploy the app.yaml manifest. You can configure these contexts as shown [here](../../cluster-setup.md). +5. Separately log in to each cluster and deploy the app.yaml manifest. You can configure these contexts as shown [here](../../../cluster-setup.md). ```sh $ kubectl --context=gke-1 apply -f app.yaml @@ -157,9 +156,7 @@ Now that you have the background knowledge and understanding of MCI, you can try foo 2/2 2 2 44m ``` - -5. Now log into `gke-1` and deploy the ingress.yaml manifest. - +6. Now log into `gke-1` and deploy the ingress.yaml manifest. ```bash $ kubectl --context=gke-1 apply -f ingress.yaml @@ -170,7 +167,7 @@ Now that you have the background knowledge and understanding of MCI, you can try backendconfig.cloud.google.com/backend-health-check created ``` -6. It can take up to 10 minutes for the load balancer to deploy fully. Inspect the MCI resource to watch for events that indicate how the deployment is going. Then capture the IP address for the MCI ingress resource. +7. It can take up to 10 minutes for the load balancer to deploy fully. Inspect the MCI resource to watch for events that indicate how the deployment is going. Then capture the IP address for the MCI ingress resource. ```sh $ kubectl --context=gke-1 describe mci/foobar-ingress -n multi-cluster-demo @@ -242,7 +239,7 @@ Now that you have the background knowledge and understanding of MCI, you can try $ export MCI_ENDPOINT=$(kubectl --context=gke-1 get mci -n multi-cluster-demo -o yaml | grep "VIP" | awk 'END{ print $2}') ``` -7. Now use the IP address from the MCI output to reach the load balancer. Try hitting the load balancer on the different host rules to confirm that traffic is being routed correctly. We use `jq` to filter the output to make it easier to read but you could drop the `jq` portion of the command to see the full output. +8. Now use the IP address from the MCI output to reach the load balancer. Try hitting the load balancer on the different host rules to confirm that traffic is being routed correctly. We use `jq` to filter the output to make it easier to read but you could drop the `jq` portion of the command to see the full output. ```bash # Hitting the default backend @@ -264,7 +261,7 @@ Now that you have the background knowledge and understanding of MCI, you can try bar-5bdf58646c-rbbdn ``` -8. Now to demonstrate the health checking and failover ability of MCI, let's crash the pods in `gke-1` for one of the Services. We'll update the replicas of the `foo` Deployment to zero so that there won't be any available backends in that cluster. To confirm that traffic is not dropped, we can set a continuous curl to watch as traffic fails over. In one shell, start a continous curl against the `foo` Service. +9. Now to demonstrate the health checking and failover ability of MCI, let's crash the pods in `gke-1` for one of the Services. We'll update the replicas of the `foo` Deployment to zero so that there won't be any available backends in that cluster. To confirm that traffic is not dropped, we can set a continuous curl to watch as traffic fails over. In one shell, start a continous curl against the `foo` Service. ```bash $ while true; do curl -s -H "host: foo.example.com" ${MCI_ENDPOINT} | jq -c '{cluster: .cluster_name, pod: .pod_name}'; sleep 2; done @@ -276,9 +273,9 @@ Now that you have the background knowledge and understanding of MCI, you can try ... ``` -**Note:** Traffic will be load balanced to the closest cluster to the client. If you are curling from your laptop then your traffic will be directed to the closest GKE cluster to you. Whichever cluster is recieving traffic in this step will be the closest one to you so fail pods in that cluster in the next step and watch traffic failover to the other cluster. + **Note:** Traffic will be load balanced to the closest cluster to the client. If you are curling from your laptop then your traffic will be directed to the closest GKE cluster to you. Whichever cluster is recieving traffic in this step will be the closest one to you so fail pods in that cluster in the next step and watch traffic failover to the other cluster. -9. Open up a second shell to scale the replicas down to zero. +10. Open up a second shell to scale the replicas down to zero. ```bash # Do this in the same cluster where the response came from in the previous step @@ -290,7 +287,7 @@ Now that you have the background knowledge and understanding of MCI, you can try foo 0/0 0 0 63m ``` -7. Watch how traffic switches from one cluster to another as the Pods dissappear from `gke-1`. Because the `foo` Pods from both clusters are active-active backends to the load balancer, there is no traffic interuption or delay when switching over traffic from one cluster to the other. Traffic is seamllessly routed to the available backends in the other cluster. +11. Watch how traffic switches from one cluster to another as the Pods dissappear from `gke-1`. Because the `foo` Pods from both clusters are active-active backends to the load balancer, there is no traffic interuption or delay when switching over traffic from one cluster to the other. Traffic is seamllessly routed to the available backends in the other cluster. ```bash ... @@ -307,8 +304,6 @@ Now that you have the background knowledge and understanding of MCI, you can try ... ``` - - ### Cleanup ```sh @@ -316,4 +311,4 @@ Now that you have the background knowledge and understanding of MCI, you can try kubectl --context=gke-1 delete -f app.yaml kubectl --context=gke-1 delete -f ingress.yaml # this is unnecessary as the namespace hosting these CRDs has already been deleted in the previous step kubectl --context=gke-2 delete -f app.yaml -``` \ No newline at end of file +```