From 5287326cffedc5140220473803f210133645d47d Mon Sep 17 00:00:00 2001 From: x-nmadwani <166458387+x-nmadwani@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:17:24 -0700 Subject: [PATCH] Documentation changes for postman sample for 122892 & 123174 (#214) --- .gitignore | 2 + samples/sample-postman-queries/README.md | 299 +++++++++++++++--- .../sample-postman-queries/images/App1.png | Bin 0 -> 64928 bytes .../sample-postman-queries/images/App10.png | Bin 0 -> 100704 bytes .../sample-postman-queries/images/App2.png | Bin 0 -> 45488 bytes .../sample-postman-queries/images/App3.png | Bin 0 -> 62401 bytes .../sample-postman-queries/images/App4.png | Bin 0 -> 49059 bytes .../sample-postman-queries/images/App5.png | Bin 0 -> 63651 bytes .../sample-postman-queries/images/App6.png | Bin 0 -> 83786 bytes .../sample-postman-queries/images/App7.png | Bin 0 -> 89374 bytes .../sample-postman-queries/images/App8.png | Bin 0 -> 66253 bytes .../sample-postman-queries/images/App9.png | Bin 0 -> 61154 bytes .../sample-postman-queries/images/EntraId.png | Bin 0 -> 57288 bytes .../sample-postman-queries/images/Env1.png | Bin 0 -> 113371 bytes .../images/RoleFDC1.png | Bin 0 -> 84428 bytes .../images/RoleFDC2.png | Bin 0 -> 71921 bytes .../images/RoleFDC3.png | Bin 0 -> 34954 bytes .../images/RoleFDC4.png | Bin 0 -> 59068 bytes .../images/RoleFDC5.png | Bin 0 -> 37797 bytes .../images/RoleFDC6.png | Bin 0 -> 24515 bytes .../images/RoleFDC7.png | Bin 0 -> 25952 bytes .../sample-postman-queries/images/SetEnv.png | Bin 0 -> 112612 bytes .../sample-postman-queries/images/fhirurl.png | Bin 0 -> 76151 bytes .../images/postman1.png | Bin 0 -> 125951 bytes .../images/postman10.png | Bin 0 -> 119065 bytes .../images/postman11.png | Bin 0 -> 123819 bytes .../images/postman2.png | Bin 0 -> 127658 bytes .../images/postman3.png | Bin 0 -> 99765 bytes .../images/postman4.png | Bin 0 -> 100031 bytes .../images/postman5.png | Bin 0 -> 97248 bytes .../images/postman6.png | Bin 0 -> 119233 bytes .../images/postman7.png | Bin 0 -> 126280 bytes .../images/postman8.png | Bin 0 -> 93945 bytes .../images/postman9.png | Bin 0 -> 94849 bytes .../images/rgfhirservice.png | Bin 0 -> 97889 bytes .../sample-postman-queries/images/secret1.png | Bin 0 -> 112403 bytes .../sample-postman-queries/images/secret2.png | Bin 0 -> 118622 bytes .../sample-postman-queries/images/secret3.png | Bin 0 -> 93876 bytes 38 files changed, 249 insertions(+), 52 deletions(-) create mode 100644 samples/sample-postman-queries/images/App1.png create mode 100644 samples/sample-postman-queries/images/App10.png create mode 100644 samples/sample-postman-queries/images/App2.png create mode 100644 samples/sample-postman-queries/images/App3.png create mode 100644 samples/sample-postman-queries/images/App4.png create mode 100644 samples/sample-postman-queries/images/App5.png create mode 100644 samples/sample-postman-queries/images/App6.png create mode 100644 samples/sample-postman-queries/images/App7.png create mode 100644 samples/sample-postman-queries/images/App8.png create mode 100644 samples/sample-postman-queries/images/App9.png create mode 100644 samples/sample-postman-queries/images/EntraId.png create mode 100644 samples/sample-postman-queries/images/Env1.png create mode 100644 samples/sample-postman-queries/images/RoleFDC1.png create mode 100644 samples/sample-postman-queries/images/RoleFDC2.png create mode 100644 samples/sample-postman-queries/images/RoleFDC3.png create mode 100644 samples/sample-postman-queries/images/RoleFDC4.png create mode 100644 samples/sample-postman-queries/images/RoleFDC5.png create mode 100644 samples/sample-postman-queries/images/RoleFDC6.png create mode 100644 samples/sample-postman-queries/images/RoleFDC7.png create mode 100644 samples/sample-postman-queries/images/SetEnv.png create mode 100644 samples/sample-postman-queries/images/fhirurl.png create mode 100644 samples/sample-postman-queries/images/postman1.png create mode 100644 samples/sample-postman-queries/images/postman10.png create mode 100644 samples/sample-postman-queries/images/postman11.png create mode 100644 samples/sample-postman-queries/images/postman2.png create mode 100644 samples/sample-postman-queries/images/postman3.png create mode 100644 samples/sample-postman-queries/images/postman4.png create mode 100644 samples/sample-postman-queries/images/postman5.png create mode 100644 samples/sample-postman-queries/images/postman6.png create mode 100644 samples/sample-postman-queries/images/postman7.png create mode 100644 samples/sample-postman-queries/images/postman8.png create mode 100644 samples/sample-postman-queries/images/postman9.png create mode 100644 samples/sample-postman-queries/images/rgfhirservice.png create mode 100644 samples/sample-postman-queries/images/secret1.png create mode 100644 samples/sample-postman-queries/images/secret2.png create mode 100644 samples/sample-postman-queries/images/secret3.png diff --git a/.gitignore b/.gitignore index 7557abe9..15d147f7 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,7 @@ # This .gitignore file was automatically created by Microsoft(R) Visual Studio. ################################################################################ + +/samples/.vs /.vs/TS/v17 /.vs diff --git a/samples/sample-postman-queries/README.md b/samples/sample-postman-queries/README.md index 83d477c3..10a3fc2f 100644 --- a/samples/sample-postman-queries/README.md +++ b/samples/sample-postman-queries/README.md @@ -4,10 +4,220 @@ To interact with FHIR data, you can utilize Postman to write FHIR queries to que ## Prerequisites -* Please follow this tutorial first prior to starting this sample: [Access using Postman | Microsoft Learn](https://learn.microsoft.com/en-us/azure/healthcare-apis/fhir/use-postman). - * If you already have knowledge of how to access the FHIR server using Postman, including [registering the client application to access the FHIR service](https://github.com/microsoft/azure-health-data-services-workshop/blob/main/resources/docs/Postman_FHIR_service_README.md#step-1---create-an-app-registration-for-postman-in-aad) and granting proper [FHIR Data Contributor](https://github.com/microsoft/azure-health-data-services-workshop/blob/main/resources/docs/Postman_FHIR_service_README.md#step-2---assign-fhir-data-contributor-role-in-azure-for-postman-service-client) permissions, you can skip this. * Postman installed locally. For more information about Postman, see [Get Started with Postman](https://www.getpostman.com/). * FHIR service deployed in Azure. For information about how to deploy the FHIR service, see [Deploy a FHIR service](https://learn.microsoft.com/en-us/azure/healthcare-apis/fhir/fhir-portal-quickstart). +* **User Access Administrator** role for you to be able to do role assignments. + +## Setup Steps + Below are 3 major steps that we will perform to access **FHIR Service** from **Postman**. + +A. Register a client application(App Registration) in Microsoft Entra ID. + +B. Assign **FHIR Data Contributor** role in Azure. + +C. Set up **Environment** and **Collection** in Postman. + +## Step A: Register a client application in Microsoft Entra ID + +1. In the [Azure portal](https://ms.portal.azure.com), select Microsoft Entra ID. +
+ +
+ +2. Select **App registrations** under **Manage** section. ++ +
+ +3. Select new **App registrations**. + +4. Enter a name for app registration. For Supported account types, select **Accounts in this organization directory only**. Leave the other options as is. ++ +
+ +5. Select **Register**. + +## Application ID (client ID) +After registering a new application, you can find the application (client) ID and Directory (tenant) ID from the overview menu option. **Make a note of the values for use later(you will need these when you configure your Postman environment)**. ++ +
+ ++ +
+ +## Authentication setting: confidential vs. public +Select Authentication to review the settings. The default value for Allow public client flows is "No". + +If you keep this default value, the application registration is a confidential client application and a certificate or secret is required. ++ +
+ +If you change the default value to "Yes" for the "Allow public client flows" option in the advanced setting, the application registration is a public client application and a certificate or secret isn't required. The "Yes" value is useful when you want to use the client application in your mobile app or a JavaScript app where you don't want to store any secrets. + +For tools that require a redirect URL, select Add a platform to configure the platform. ++ +
+ +For Postman, select Mobile and desktop applications. Enter "https://www.getpostman.com/oauth2/callback" in the Custom redirect URIs section. Select the Configure button to save the setting. ++ +
+ +## Certificates & secrets +Select **Certificates & Secrets** and select **New Client Secret**. Select Recommended 6 months in the Expires field. This new secret will be valid for six months. You can also choose different values such as: + +* 03 months +* 12 months +* 24 months +* Custom start date and end date. + +>[!NOTE] +>It is important that you save the secret value, not the secret ID. + +Click on **Certificates and secrets**. Click **+New client secret**. + ++ +
+ +Under **Add a client secret**, enter a name for the secret in the **Description** field. Click **Add**. + ++ +
+ +Copy the secret **Value** and securely store it somewhere (you will need this when you configure your Postman environment). + ++ +
+ +>[!NOTE] +>Use grant_type of client_credentials when trying to obtain an access token for the FHIR service using tools such as Postman or REST Client. + +## Step B: Assign FHIR Data Contributor role in Azure +This section shows the steps to assign **FHIR Data Contruibutor** role to a registered application for the FHIR® service in Azure Health Data Services. + +1. In Azure Portal, go to the resource group containing your FHIR service instance. When in the resource group Overview, click on your FHIR service name in the list. ++ +
+ +2. Go to the Access Control (IAM) blade. Click on +Add -> Add role assignment. ++ +
+ +3. In **Add** role assignment under the **Role** tab, scroll down in the list and select **FHIR Data Contributor**. Then click **Next**. ++ +
+ +4. Under the **Members** tab, click on **+Select members**. Type in the name of your Postman service client app in the **Select** field on the right. Select the app. ++ +
+ ++ +
+ +5. In same way, Type in the name of your username in the **Select**. Select your user so it is added to list along with app registration and click **Select**. Then click **Next**. + ++ +
+ ++ +
+ +5. Under the **Review + assign** tab, click **Review + assign**. + ++ +
+ + +## Step C: Set up Environment and Collection in Postman + +### Save collection file and environment file + +1. Access the Postman environment template for FHIR service [here](./fhir-service.postman_environment.json). Save the file locally (click on **Raw** and then do a **Save as** from your browser). + +2. Now, access the ```FHIR Collection.postman-collection.json``` file available in this repo [here](./FHIR-Collection.postman_collection.json) and save the file locally. + + +### Create a workspace, Import collection and environment +Follow these steps to create a workspace, Import collection and environment. + +Postman introduces the workspace concept to enable you and your team to share APIs, collections, environments, and other components. You can use the default My workspace or Team workspace or create a new workspace for you or your team. + +1. Launch the postman app and select **Create Workspace** option from **Workspaces** menu, Select **Blank workpace** and click on **Next**. ++ +
+ +2. Enter Workspace name in **Name** field and select suitable access level from list and click on **Create**. ++ +
+ +3. Your workpace is created. ++ +
+ +4. Click **Import** button to import collection. ++ +
+ +5. Click on **files** link and browse to the location where are saved and select the collection file ```FHIR Collection.postman-collection.json``` to import collection in Postman. ++ +
+ ++ +
+ +6. Collection **FHIR Collection** is imported in workspace. ++ +
+ +7. Select **Environments** blade, Select **Import**. ++ +
+ +8. Select **files** blade. ++ +
+ +9. Browse to the location where files are saved and select environment file ```fhir-service.postman_environment.json```. ++ +
+ +10. **fhir-service** environment is imported into postman workspace. ++ +
+ +## Update the evironment values + +Set the values for highlighted fields in **Current value** in the environment and save it. ++ +
## Collection overview The queries in this collection are categorized into the folders listed below: @@ -42,55 +252,16 @@ The queries in this collection are categorized into the folders listed below: - `FHIR & Terminology Service Integration` - This folder has queries for FHIR and terminology service operations like $lookup, $translate, $validate, $expand, $subsumes, $find-matches and $closure. User need to set up APIM and use APIM url for these queries, please refer [fhir-terminology-service-integration](https://github.com/Azure-Samples/azure-health-data-services-samples/tree/main/samples/fhir-terminology-service-integration) sample. # Getting started -To set up Postman for testing FHIR service, we'll walk through these steps: - -**Step 1:** Import environment template and collection files into Postman -**Step 2:** Enter parameter values for the Postman environment -**Step 3:** Get an authorization token from AAD -**Step 4:** Test FHIR service with Postman - -## Step 1 - Import environment and collection files into Postman +Now we have set up Postman for accessing FHIR service, we'll walk through these steps: -1. Access the Postman environment template for FHIR service [here](./fhir-service.postman_environment.json). Save the file locally (click on **Raw** and then do a **Save as** from your browser). - -2. In Postman, create a new [Workspace](https://www.postman.com/product/workspaces/) (or select an existing one if already created). - -3. Find the **Environments** tab on the left and click the **Import** button next to the workspace name. - - -4. Import the ```fhir-service.postman_environment.json``` file that you just saved locally. - + Add the file to Postman using the **Upload Files** button. Then click **Import**. - - -5. Now, access the ```FHIR Collection.postman-collection.json``` file available in this repo [here](./FHIR-Collection.postman_collection.json) and save the file locally. Then import the file into Postman. - + Add the file to Postman using the **Upload Files** button. Then click **Import**. - - - - -## Step 2 - Configure Postman environment -Now you will configure your Postman environment (`fhir-service`). - -1. For the `fhir-service` Postman environment, fill out the following values in the **CURRENT VALUE** column: - - - `tenantId` - AAD tenant ID (go to **Azure Active Directory** -> **Overview** -> **Tenant ID**) - - `clientId` - Application (client) ID for Postman service client app (go to **Azure Active Directory** -> **App registrations** -> `+
On clicking **Send**, you should receive a response in the **Body** tab like shown below. The `access_token` value is automatically saved to the ```bearerToken``` variable in the Postman environment. @@ -110,25 +281,30 @@ You now have a valid access token in your Postman environment and can use the to __Note:__ Access tokens expire after 60 minutes. To obtain a token refresh, simply make another ```POST Get Authorization Token``` call and you will receive a new token valid for another 60 minutes. -## Step 4 - Query FHIR service with Postman +## Step 2 - Query FHIR service with Postman 1. Try `GET List All Patients` under `Common Queries` folder in the `FHIR Collection` collection and press **Send**. If the response is as shown below, with status "200 Ok" and resourceType as "Bundle", this means you successfully obtained a list of all `Patient` resources stored in the FHIR service database. If there aren't any `Patient` resources in Fhir service, you will get and empty bundle in response as shown below. - ++
If there are `Patient` resources in Fhir service, you will see Bundle with an array named "entry" in response with list of `Patient` resources as shown in two images below. ++
Any of the above response means that your setup is functional. 2. Now we will create a [bundle](https://www.hl7.org/fhir/bundle.html) of resources by posting a `Bundle` to the FHIR service. Under the `Create Starter Bundle` folder, click on ```POST Create Resources Bundle (Multiple resources)``` and press **Send**. If the response matches the following, this means you successfully created multiple resources included in a bundle. This bundle contains `Patient`, `Practitioner`, `Organization`, `Location`, `PractitionerRole`, `Encounter`, `Observation`, `Condition`, `Procedure`, `Group`, `Device`, `RelatedPerson` and `ServiceRequest`. These resources will be used as references for creating other resources in the later steps of this tutorial which depend on them. The environment variables for Ids of these resources will be updated. ++
The following instructions will go through the various folders of the collection in order. @@ -145,9 +321,15 @@ The following instructions will go through the various folders of the collection - Please make sure that the configuration settings for export are set before running export, more details for configurations are available [here](https://learn.microsoft.com/en-us/azure/healthcare-apis/fhir/configure-export-data) - Below is a sample response from export. In response headers we receive 'Content-Location' header with a url value, this url is used to get status of the export job. - Export: - ' ++ +
+ - Export Status: ++
+ - `Delete & Conditional Delete`: The Azure Health Data Services FHIR service supports soft deletes, hard deletes and conditional deletes for resources: - Soft deletes maintain the history of the resource which can used to recreate the resource if needed. - Hard deletes will delete resource along with history so you won't be able to recover. @@ -161,38 +343,51 @@ The following instructions will go through the various folders of the collection - Once you create a new search parameter, reindexing must be done before the new search parameter is available. More information is available at [Test new search Parameters](https://learn.microsoft.com/en-us/azure/healthcare-apis/fhir/how-to-do-custom-search#test-new-search-parameters). - To perform reindexing, use the `POST Reindex` request. The reindex operation takes some time to finish - the `POST Reindex` request returns a reindex task Id, which can be used to check status of reindex task. ++
- Keep checking the status of the reindex task with the `GET Get Status on Reindex Job` request. ++
- Once the reindex is completed, your new search parameter is ready to use. - +- +
7. Explore the resource specific queries (Create/Update/Get/Delete) in resource specific folders (by resource type in alphabetical order). ++
- In `FHIR Collection`, the `Get` folder under each resource contains intermediate level queries that combine multiple search parameters and queries to fetch list of resources with multiple IDs. Some examples are shown below: ++
++
8. `Everything` operation for Patient resources - The `$everything` operation for Patient resources returns a patient and related resources. More details are available on the Microsoft Learn page for the [Patient Everything operation](https://learn.microsoft.com/en-us/azure/healthcare-apis/fhir/patient-everything). Details about response order are available [here](https://learn.microsoft.com/en-us/azure/healthcare-apis/fhir/patient-everything#patient-everything-response-order). - `GET $everything Patient by Id` will return a response with `Bundle` having type `searchset`. A successful match returns a bundle with the requested `Patient` resource, one or more related resources, and, if there are more resources to retrieve, a `link` with a `relation` of `next` with the URL for the next set of records as shown in the image below. - + ++
- If you click the `next` URL in Postman, a new request will be opened. Before sending the request, you need to add the authorization token to it - in the `Auth` tab, select `Bearer Token`. After clicking on send, the response will be a `Bundle` with the type `searchset`. It will contain one or more resources related to the requested patient, and may contain another link to more results (a `link` with a `relation` of `next`), as shown in the image below. +- +
9. Please check other sample calls or create your own FHIR API calls by following the examples. diff --git a/samples/sample-postman-queries/images/App1.png b/samples/sample-postman-queries/images/App1.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc307127e4071368133606718d35f56069e48b3 GIT binary patch literal 64928 zcmd421yGz#(>96(2oeYm!65|q;2taq?(Xgmi(3c~ECde@!9BPx1X)~yv$!p=*y6Tu zc)mAzzB+&XRp+a}&Z#<6wY$}`bKg7D+ubvLU42KXD9OFRc!hz0fbinOducTU1QZkm z1SIk2s82m(vOt-q4@7r0xpxRvW8`~J!ZT}0MM(sN+IY-+)2ERL=q~Sd-4PJ5yZ?D1 zHYeC0K6RSgYUp^VJK4G@T6&mTn0lB#^&uem(V9Ehx~MqYI(fL$3hDdN0%(OeS!sQq z-UC?wOXA`d;Qils@bdHi8S|ej{*es>4sK8C5fJYCKS)bz0E`Zn(ftW$Zun1(C7v0$ z^q`A zZB-{yB<${{8A$O2n!KKc_YlkuUngKzQ<1|u`!rdn^x_YAa`Zn%W1N-^&|-BnoUy$h zSdY2=Jbb;5b3@1EMu8@tQ!V6X{QZ;vjYuzZpulT?p+sIz`Kcc~Z|n)l4>KcM+}hHd zER;}1g@48kfFri+kP|_1eG_>-oK_1Qje@d&L=7H-EAYUSn?R=DUbx5@D~*eetu3 zI!^jSpZmQ*aZSjj=^3ACZiU)IWxX@iEPUr~1E)79cOANQX-ZGzz08us+KjQM?jD@t z`o6uPRs6@~E7!114Q-gcGA-O*uFGv4W5m!v=4FAUbMGKHO*JMx=z9q5rjnKA>QCE& zB*fRM95+1-YOvOK^I`R}TNmPUl6?UJv|+)jX1>h&Y-ov(NnrsyXLx->bB#cfz28 zpoz+%JOXq3lWL{8uP|h~?k4Pv82!jvYRnedkkN7nAEK?;w(gK(2MaVyvVE*RJ4-^L zJ#fZU5z1T-eJ>B9XF$2UXx+r-jsLnh<^)7*byRTR5?$>xkK?B9mzDIaK0)1qEB{9G z7bOryEo+}1Z9Tm&;y;Qu=Db&9ma3=`V1eu`YrN-Ih! >QCie%fYPbV~@4SSZLE&u4kc%HYvmlE5J{u{x(J z-}l4n L4>^1S{8!;uP%(Z|5-eeL6)X6lcIg9)adI-Z^28DUsy0xdV%RbWGUhmO zxs@WIXPqAU>w_yvV8p%5suzh^eGy`W*RH57?v4m${P4I b>!)vBHu4{YH()Wuds-^kCn>%~cTR)v6$) z*o|AS_`@3_F|gdSY=tzv*%6wvnLn^fpur=Rt0Sz^^@c6pbPVn6E6HU?-67ZgU@ C zQ|rT3!u>CL2&TI$>z fmiP-*LB_qX8KdEgeF{aBF|C_ic49xYciSK z7GOv(Ll|0-N;?OZ^3}LSfe>mY> zVa$F8=_ fw}J zq}7K1%N3<(^5etjsf0&EriZ3FEKv^O7g@ru5KBe%acH)GHkM_)N+e8s$%7ZpG|V|i zN?qQtugK3oBOEy^Fs)7YFGA8@!;LcT?2Tmf(6^9AV>AXd91}rQ#t~vExxaOCbY0dg z-XsniYd{M9O-cdYSoI6Oi10*IRnKz{dy&rc;m=g3r9Tl8EVW)S{uW=NGZJroaN=MB zVTNo|9d;jd;LdOG*m7Zr2_xKFZU!2@n+6b!zuE`%=N9FJkR*OnqY;hOY5|v!=^NCrREh&a7CBU z6TeFbobsCBwJI48gFpW{bnZ6e&hnrDmwZXW9*OS#iZFxlqaLsN`3}U@^5lbwaB+79 z^UIHrnSsKe%ExWOm;K^R6bIwyRjr<3L}adF#~W1ydZqqxhselRDmv+*+zvW=sv*DK zV0c0CyTCF7kBp} w z>| deKu 6PP}Cq#crnJ#wo);iUQ$SVf-~)TwWfm z|Ca<_*FJr|&8`r5Yy6Y0OYCryLyz9%qt*l&M;&2|lRbjN+X82eu2iLjx2L^YS?ZPf zsopK3wbj_&nPyIxp$xGwyN;qTtk;r_%R;8~_woib-i(Q$M6kSk+OzefcYh%WV}H0VD>JVJ%L(f5_xGC$72ghma;hR zBa7G;#;1VVi 5*yaa5F^DM<2*ml0e^$=dlEz;~Xjb7xp1&4>P? ze7rwepJNzZnC%9 Z}Z7Z-CdE>$hKlF p_H|G`4KTaz|n@;&2zQ(4DrFmHejYeteAq;yGJr} zu@&X$Zh Oc@E1!#Vqti4uzd+~lA zvzGAjdYcNCa8#a+0~<)@rD)pu_66JQYVxCh>v73Y&628K)heRc@=vm8Os_Q{um#ak zzhSyi%k8f*-QbDP^(lgN5q6{QM%S zk3Ds+o3a(R`z)EBv%1&UoAIvK6Etuo^*M^Lw(*|kk$x{9chQG-Up!xEr$kFoJ7Kls ztmyi@2$}ai40##fchU1OJl@;9C!6~`z>}^h60<}%=U8=l2b!oD;c^UY%3rNe+`nuq z^Y}2 mkk&KKksn)S*==fFg zdUU1V*9TQZqmDynLXAqbW9!(wzfd^wPjlL z_dhPnF}8Cq=E#-5m8W43ZZf;sU>~rlIczZ%yqe=ELi_--<=g{F&0u0sRz9a7AYhAd zJ)S?jRI3c_)THY9mD2W{Y)c3Zsh(6N4lfXkO8|x5hwjL_uI#%i+26zC;sk0fp9Km# zX9PA0S-9|0-T t(8Bq7-lln)| z!a}DR17J50o0&2~r^miS0Q_R1q*~5+D0q#(T-$tYl;3=NDA@)VH)NO{XaEGCds6XI zg#DEDLt9u;?kh|+Dl_sf>B{3toJe !k|uTvYfheVOA{ z4})x$^iZu3A6u+^;nI}>1lCj~0v_YUzoc#kxC6}f@}0t_zH+2Yrd7L>W_of*5O2NZ zv5wxZgXpWD`h*T2x2bfnJFV(1huU5ar?zXlzmNAS^IPx8y3m=)<;Ht(vZS6*7mKU- zWZe15-|&?{JCFU?K>c%8ZwuuTg?u1cI`>8)yPM1c+n#+bpn?*VK%tp&P$_QYf=4L= zd=cp7hMD;VgPfhMCt&rUKQYIltHM-t^7fNn=64OUdsVgwRXOkeFS^ci;r=Q+AU`c( z0DG}bYS*6N@Bu 15cM#b-XN@{~nx`yOr&i8^!dA zUaHrG6nk+Ucph!$u5R>jKo~sW2c9H#3fUBF8YDN=LMG03rG0ZLEZ1Sy>s8;dRWfsY zfx(jNypM-mu}Upewj#FGX>yEg^*MJru<8)xfaYny)9)HbMKF*EKA!i6Ir_FcX~)~5 zk6m7g$PW1mHX7PzMToHP?FnDzeLsRW)SiF?_HmI Dot4^F7|E0=0W3_J0RSqO_aAC{A14wW|3C9f96x7Y;JHNL1c`dC-w6h>K z3-X~)j8D6T%7+}RP{v+%AY@RU>b-f(PU1lxi2lSuf;do7N++3~3I)2Q&|p*LRlhzk z *zr}7EXLjj0y4FXWJr*L@U^jjQ z*Bi%^ew14hc4Q c8@pjyKrt<`Dw<<*LwLxysHW%(St-$^9H9ef?g_Z5Nl8)Dt4 zOnzIA+)giTE|4T>MO0$Prb3assKM8il_(vt4J{;fTBHbB*X$ahMSgB0FT5WR)G0a5 z2cu|DdRaKM^6~9X8jz1jo#MFMCvs25k`15grW%w(TtxlGw3X4_`neOKr(RNx4i0dh zkbLw}o)UG?jmt?@)})KaU!1aW>TyfzQoq5&m}yWUI_&ncoTpDlOOtN^Q_T~$-aN0% zxajzEM53ndXXBVscYcVFysaA+pTIGo>GLB7DPW@2Me!GA|H;@X!fFx3{44oR)~b2W z@W!vkt2&*pOBBe(Q9p~TdS
t$mlMG-3E~aOi=HT3W&E3KONFGWS>} z_R#;ac(7Rflj~?BBf-@2x*fAO%5+P>%*S}&sw$OhAV|hQ$Jqxbx^<7w#ljxNF}1b* zO$sqZS4mUs0fV)P)KM`q4}U4bdqu-}MRI)$|6yxGz2oTZk>gpEo8v+H1?pC`J=U^@ zwAR3{ujH)AP%I~IjzHY{V~llmNxfb|M9lK)DLCI8jWJKJ`J5HecPbXkotUy(+;F_8 z-Zqwp8WsW$qp38TG_sCQwzyF8*|74O;^VGjBvbp2NukD;7qPCEIfDVqLrQ)OsL>X8 zf}wH4bKa7v7yZ|gAsI@*esZ2o9ZG0>5xv1(lJ1+vKJwa8RB}2g3;}i&C16!tH7|Y8 z>o=UU3_MGgsOyd2xbJ=X*q2Ukt$3HdQeGBthekDasLriol%zx6UU`*rJ5VJ;XO9Ku zaDlfFOcFrt2*J~C IWPBl-3yg4lv~Pp``%OV zB9ITo9xd86lpEKPYb^LjvaW#M2pvv%>%9EBkg8Pq3I%Q|HG7Lp!;iF82GWat^6 p@LBYkv@)&zet+R+5a zAbxJI#}XFT$0QdEm5Pvey|V6`_o&%##IUU)wLrIFsiiolC_(0-(K%e>y-#_uv7u&F zIpEcd^Z`=_h!GrxIjt{~&eJn$zI;;|?J}pTSZ_=CQ2G$Ti4?ix^_}b5FkrnM@rIdh z!X{Dw_v(f1W=5q%jDb;da$E%jh}huGuF;N^;^T<=&)SR+;hArI_;&L(d3e?Fqwd zEDt0l5n;WY%HZLr**Tcqb+Ma~R26sAkH#fD*H5KzCjWu-L4S2vZUnvoU_>@(iAJ!W zKO*r4PA=EVpM1M@rt^|b8qrg?bQAVGKy#a4{5q~caT(8c-B);cvee}c3$_8KvjnM# z=fAx@bOap1k6}vLu16I@Z<-}7Kb78AQEfg)(yR?w6T9Y9k@`Cyb Y;)7xsSVChG)23*~)Psx3Ib13l(T*GRqJScnh^ZSaN?p>8RATTD2dXQdoFxx=OQj z(T(aLt})z|yJN?qy15-4+ZAhJ@O&uFUm!!p=zwgghlQK7@TZo?P9$O1jP9Gn5Ex=p zn&6Wax9ZDvvqL9jQJjAz)Ujt`S@bkqWu*IY?=tZqjq;V=l7_nZR6-<%Qpd28NTq%T zsl?IgH)1!4(Y!<9^Ewdz!jN*P5pr+bUW)?f5JFMk9G{ZX%xQ(=%I0=^8}1{_c=YBv zGmx$gfzHW41(fHldTbwlx0+3SGSn@vR+j`qgKs^v{aLA5pO@o3L16pK^{S`3L|+H( z``Y6Lz$tLGT*B?$NGU+Xnt|_#NlGTUG&If{ vQx(cbo(&Ek=W1z%47yy>4X+V%qA(rlX9>e!jgyCADbv#CFPf=*eMLb^pr8mx zHVU}VRLBq_Y e`Jjq}ypu(Y5zibo3q5}A9XkBmG|V#)cy zxJo606DDg|J!H|C|735ej2^};ITVbb4^opdtvaY2nk}2UpF=CAaw|f7uS0Y)ejw*~ zzJFkpDxT6aU5LayxmL6`zuqox$!1~<<8prZiNCWl^WlXy;a%g%#CVcg(`0&&(f~2B z^z92v+ >-!ul9v2?5KCQMZf&vW_hX$Mb*&F)+g7hTZcvy% zvP=r)qr6%574&ToC*`<5_t&5lilOkkG{64oTzls->b(7S@E}7ndekc!2guJ(V(55% ziaLk#& yF&9KH$dI{c} zub|i`nowy>Chr?&37QBn{hA(tOuU`~;#<>BG(Y)P<)@RbWaa~^z?om67(e1hcDRrf zJ3BJ&5zce*X6jrCBnjgXLy12Z)d!M^K^~ZSRw@uuk6Yg&X++PFNq)88q;9?7A?;b` zS&rK{x3OA@HLi#t1n=!`z0kVcp`B(|R}nh wE5G z&|sc!+R2()4Dkq;i((o#B(>s?eLN-B){CSZJYWrq9-=RsKbEq6qt7OOy*QEpqK(^n z;?e1X4DaOGAzZ(gkC^h8JA4$yPp%igS~MPTtg`kWS3Ad3#2Zu~1wY{)6F28t?}rxS zs;sjjoi+$5U1R*MUlQ#(s&yW~b=w)7NoTjklbhiC@HZ8knGmn_0EMa}pWn{nZZmVR z@c4TqsTrB^ae+XJ4A%cL;K-7SYGW5_TIIW| ZGTpBiURrX%r^y8+?>`T zWHn5J|6pvx86$jpP2~i(VPiePKt}@N{$=W%I*uGgzBT8JlhswD;3wbeS9gV&NO-`P zP@NNq>8m}u$$11OpC>;7Ci&v*U6&nblZ`XzI%!M9b6$1G+`2NWbhbB5%<=%0)XTI$ zb@kOtGPIVgz}kx%jE#Chnv+3OGaNQ1b)d-igo(U|rYYHXl*ZdUsLltzKiO$G!~^nP zj^kX8=Pz|uW3^#xto=TVkyxjb_ueQ_y||L0ykS}SNot+x^F~Rm#rN(cY00qp`e1gS zXhXs+;Gy1}4C@g0*5IG2NJV@el&F$yfgrdyb@s7X#~{kH9$2p;q$IlZdLhH*cNE)6 zTT@dh!tkN9gJdd?Uf$J6EOS9k%QL;Q-({AVtbV(1JVXlFh~6x(VLbncu4=uxkmD`c zm)9e}vlgLWva{voo7`OUxDXu !KZ8($-w+t^twBtW0_62n^sgl+i9d&NJy+G!9nze_&SrN4=a=B6w zHHDw1 i>`m6!CyN&cAerDo@Yfeq7xDGXY >w7IB*}*Bez6kkma@*StyfuxV4i%on ze{`TarBRu?#{YE1NHw-8C nHOpB@6q@YfMjvQxM#*Hgb!c!2;8ya;BM)9F-%xj(P}#*~xre$(GI%8)b1+>2?SS z?sqbrza}OY+yyr`3mCW!(zlNH|EqsqPg7BK7jUPW$W6BqIWrq5p z?o~Ct=vT4V_ B6~ecb0;Gv^NQRQ<1wC#82M4{ a%X>QXUiR-sfL^w2&uE*UaEah)Yisrd1<;o`s)4nG+tf-8VqaO^}}9*+Mrp zKE_(VI<83Z1$~2%jOSInPb|X@@5l&2(z2CRKChxXImF-6Thx+Wt>F9yl2gz;FZ`Nq zc>C@zKLbj9B6H{?hE=`l)!Hria$)?9@TlhdcKpgf$ekR^JMp3#dk^hpLPor(52^!W zTu5(QqN6zj6{rZe>Ub~{6CS_$$h%Nt6!1tdc!+HCW*3sA588jN;K5IowJt?4(RlmS zm~mw#GwgnsajP7LDdUagTMjD`ygr{&_DpRm` =QH>(P^_8XyN8!eU6gVTbT0wG2SiTy54Q?Kja8<=Uox0sq=uXIQf4^!+ z9(^s4<+{t2UHS6HzK-joHO8g#uvT~1K=U&KcB7DuOx{S+M1%oYsx>0A PXTKC^Q3HG#s>s*%SH zPY#pK@;g@NtI^$%!ZUmt`7OteaBg=F<`;=~ua0q8UO_vzbyRv{(<7uQ5U^e;uW;Y1 z5$q`Ke;J{fn(z$NlR(XF*95#e-Snfjm8Siorv8=f<0b 9^g}Exm4P=+^vqmE5L;i?pbiE$DgVaw8wR7e;9TDz1*D%- z!2r_v#M>g8mM+S`dDdeH5GB?+O4`g9=SRj_UErYro-0gdfIU*}>`3%wej8f;wBKK= zkOmb${a|5JCzIs CjaIvAMkJvZ{TGgfmwBJ1J`Fo$~r|FHVnW&spHm&@ct9- zsWb=0HE+fVd*p=tThed0{}lCk{kWwjSg08X-EPGG_1{mDl6IF{Y(04z7k@id)t`0+ zUcXb)(Eqjb|9Rh-bTt`+2K96!qj}_*c7q?g^TLj}qyC)-ZT@Cgjqqpl{%CbowV&D- zz?**iU9ZVL8^7O!Wvl KoN(elfsu%FR z)&{yUmbDuO(q>8C?yxS)O eYw};tay#+wI}4vw zD_`w(n&5AY_x3co1pRp)%MP2!vLkjtDa%#W!@K?dmocZ%9! U}8y%l4@Uum}PU_sipNQR1FNoh`k+pB zT-MP?m3i@0P-7zSC&BIED=69WuIyv%pHRS<|c&-F{hpW1RlRC69gR2d5x!E3=HFO6{4<)TLDW zRw{vb 8b7@C#i`KAxpk+ zb&!+1YjYi|8Ml15#*H#o(C9zcA!oR+=n2t`hL8C?XmPj;{lt!iUXuZqN@rT1+f$`F zt~qEgjE(V?Zo|eFy$)}tj{|jwZ~3@8L7 V0jhp4+5+al zor^k6C?GyZHb1%&C`He)Y;}3{R6tkhp;Avzym&0Wk_!m^pQ=bz?fNDo;*0t=xKWn5 z@|?LA8#gmXxJ-VxMT(If#+zObP>t?S#OMUU-VsIx$*O(tXR9MvlDyd~c_Rwqa*a6@ zHSTd7ZQE}tde3i*w`u(9vw@)cEo^$I_1p&q+gX(uy{{2W$makvAz3&*S9>}-({SJE zpsmtZNtNooVawl^b|m>PA8uTuj(&Eu`ahM{yAxCTZu%LT`Pmmfvh|;K@z#O4{ZF^` zF1`mSTQn$ZU7}Ot^{i$_tY>Ms7PyV7_n!uwZY!9yc3ux zO<{Ujxe`wvo=811J{1gI6mWvB1*ZlQC=j*Bfvvk9q-l{x!djf0TN z&FXPJAwW?BMZl>NQp(bPb4em3CVHcmhM_l*Ee D?8JV%x`=8X zQoU+f`<)_iQSp3P+pi_MZj$#SRXq^`>}DerApQD_H9d{^;J}*^{olw7b-}$q7%d |qq}5r+!dMHeq`M! z9=_>u*K>>b?vPSQK;zdUKp&SDLE6-7c8^!ElD9>CF40Qj?Ph%3T4sqim0+28x1SK{ z4}eDwFjeZWttDVAk@$UMuZ36d)*PKq6r!Ct#XXq3j>7rar1Y-)SHf+E>&*-GF8=L( zlZ^bK2nPDKyl@}Dx)$BpD4gv>5pR_z-nZ3~5^k=g1Ln>Tt^reKLBZ;0FE?BFUvpIa z8f;9Y(&G5?>n8tfGm{ppd2-%+9LPXwxRMp3G51qmX4V4^WoE}aLKmSKSW`rDQX$6P zfKRIGoEmXewJ@lTf|;5r<1W@kY6lzLJ<4wfu4cHSwb#%mCIe5yg6sS?+Buce>|W)~ z7WjwTIM4ZVfmKopBRxy%$SQDl;!LTAHF|Ww8I-Fxj!V)ojLaqjzN_|Ua)t~$Br@N! zM8Ag?wvI3{wrNyi>T(n)C>kq)C*vfE5l!oJ1Suf5u3liOHH*8L-fy8FNQzRx_8B-! z#>kh}Ab+GQrZ!R0B4|mqA(dnjj{JDfx7rQS8SF9FfXj3?!Hr*Hi1?fNC%;%)4>O@U zu~#i=aV-jQUMkQofy=Z*twWy=V>in|O@5>vWP)>HlT~7l_`i6SN2l-V$j3=KhZ?nd z(k!L8=mJWhBv2<7cR!vYan(3tjv@-Xj3l?Zn)RL9=0__~>PsWA?8I%dTWF)Tb-+x! z|0Q9yS4!qxWoA(wu*@~wo0AC5fu*xi-64{7aBh z5PVllj4Wn6XuEeceRp|jUq5Uk0v-9NapvwommgGg|7`#os?pd|l974UYXA|NbSy8j zJTCCMd*6Kr$hF_ts5K3%jRCLdhwV lt{AjnCXN=<}pId_Z=hydZ6$ie|nZ8_yXcUR~OqMkoqBq zqvCM-d*`IrEJVTmA^VUOP)Wth))6GmwYX_u R4};Sp+T0M#Oo&V(8@M7L0&R|WcIcvq{pDS3%f K)mh}@)!9*Vf z7Y*V!%i^EdS<++SOSx`=s%PVJs!;W6;adM$-?ynVx~svS2M#z8vEs$H?yBN_WgW@x zFu(YXiOvFnoAZyERLe-j4?j@!GF7UEa8e?#ddoF4Fv=fK0`KI=+bzwL#v
x<~*e`z9xlFIm_YR|0ZFfwqoly&PKt) zA{@QQPFd<6J&;M)Ea4_Er+FiW-A@m^I`>olDEok*ss)Cys@0tofZ`uBUESo{J&px! zwqg2=;*`%}=8_v`=9dI(rcmm6H2l>MGWA1hUsqWNozr5Rb1aE6E=Et@ zQN7OY|uFM<;m>Kwy%J8{!^0$<3MT@pA>vJDGKvT(1p8Bun9fj#(gWnIYD zxEAalJ@W8M>%6O$gMA|<5Mz*T$+RN+kwB6D1DX~~KcKQbZu}O#I`VLc*J0^Zy9#v# zK9!Y7Di;n}>mY2|kr7D4zhjANzT|nxu~QzIcp}Bg +D1R 8QsFUA7xAi`ZhPbi3^Cfp!d0@T3 zf%>{8h^fY@2#8DT=*$ZBCpiP6e18U2WM3l%!_ZHjvZXhp9JFIVRfoGOj&P)B6~;_9 zenfZQ3|B1((n2b81Ly&IUr1Kd_g*(u=fVYgn=b<$EUaEp)rXDauGfJs99H@9U1cU* zWx3~|P(UwX7qYC-c&wZL{;cNJwPQi|*fCyV80QYLQbO~()iX4BX2s^0u!ibE^XjZD zof+2^A+J`zOrHoUTTfV60FqY9#9e5{T>DmEl>p@XT~CHNOc+YCH?ZSQS*-a|>j<9` zWXf9u#B7W5;;vg)poy151br{2bfJouasbMU`0>x}0t36gQQ_Z=p{@ zoU(&r-`z?HP*U(VJMKCQ^##|)3qcMW*Z?oVvAq2{5L)QJ;-SVHjL(xNFaYkOjsHyLEF+*?^frk>kdvBt$E&V5?F7wYqOUOCg|} z3piQWxVqP!&v6fpIEP>6RJo8G=^^obI(zdn#TiU5NDNdY(U~I`I`8QgsPw|gx`jPp zHohh3(YCeRFjGXF1+^i Hv-Y3@ zVKSzK$jt>pu0<&7#gN6~eOZlF$ex|7$RXYMA31K!sb4TXfkh8g@~VO7j7q}Acnpn* zN zkFM=X8a9fbmiOCLRUi9+ZihFnaPnXnI8rp#|^bC`Bh4T%XIEe;1wr{zT< z)i@gkbzgbpGrPXwc?OS86LKvd?&&RfWo^DR{z~sPNEr!b1sR9M^yQ<{@W9%OHAUnr z3Ox#ptq5-iQxO$x-4g^Fd|;*JI%3IDY1pszn^^IEgpbeHAc&vbj%+pW?SA^K#SLRT zcu8k9$KrfHC3|z0Vfx9{{(b$;x-@0vw(%SrJ+~jbk*8+Pb#9?J$uK6p?WQmMFcs^5 zSqNSJp8b;sLj9}NUMxP2lD@uxdS)06_JP@o{AO8e<$%q2L|+2ac?79C)wwo -a@aU^o}%Xf(l5lq4yFX5JXCV&|8oYAV6rL zOnlzg=RdR7%=fw9va;4q?m2s(bI<;jjaxP3%}2H=omu_dE$!rofqa0?IEeuh7CF8h zJ4PL|-r-oWsl{Ljr_7Au1n@44;G~G#_Ypk9@c5g+v{|xWATlLdRzM&1_&_+YIQ(MS z(M6MB^MJsa!Xqn=LLY7yi{B)yo^6l)K}ukq#cXW&As#0KJ6PNdI)*)+Mg10DaLl{U zGUGyhS pXNzsHzJE%V^%C zqj~7jTq*^
rL>}zRBv)ybJ)aVtB@wRV3}5w3 zS?bTo=t7-I)&Qu#od~7NgX;D=R!7?b4q@0DK5{Ct%G`FUz=YfR(v?0~;yg?ptc(;? z8mlln{V=hy;Dm^yx!kNpu@vZFBSweyl`r{H$+2eo7zq%{8o8`1U2F5(@gmmCaIWh| zY+}pK-}4-GEU!yfg oa?`SO{OK#BDHVG=xK`5pQqK=7`#8DFP+ zJX<58%M)pE6Yk4-e6`1WarjAR{|rrHkeicVtWc#{wSi;5-#S=S>9O7ARzLJFmHC*( zWf);*@(PU(IkrZDBhf3eCo5&&iE6GRzrOXedJO&j>-oa#Ks)el#u)~UBFiZ@6&uzk zy@TIU0f%$}?chhOlIlBl^78F39u=L)wJ vL@3 a^00BDrLkwrHB+uXz% znV}v=t1+}a<>OoTUwT>6;uC!@Uy`!}Kx-)1Ow+@R^_Mz1N9Ol9*aTd~bMXXn_hr4X zw+$0(p{hr`vtg!?Cvz|DsBW3*zQZZKMIz7X8%k}x?z6~w9EoNMuBkmZbMidE-@cDz zFmtz}7@?wKNx@~$oAf2IZ7YD_S5omTtJxf*pofDJxb*YPvSDpLM-Jo874{(&4*3U* z8D2%vq@|Ik59)?76@qjlt`YqZ^k~b4W&1N|*63Rc#bJ_E);v_nQtHJfb<<^p<$Q1! zm&_?0&Da|jdn!Lu+B s^I+ V1p*thDrQ~$9fwq&oD7CFb_=shoRHp*=oa=W|f#sh4h z|7=3xm(n$r8-9WQgY3xZRpIu$f<)mJ=guIv>ru!3E2qRUP6tVxUU7Tuq;2`M%^)>M zg}IE_W7-gYdbVoVX%pC@JytqrU}4kAc3j0EF%*jt_I*sWlB E=7AGv)mKL$A+oJv^{w1}36<%S_{D@w`~6E=GK zBEdQ{`P2)CNr;s$9HS%4jNrIat?QSh(9J|oB(*$3^+(LutKd>GO+S{p@UcW$;MCBS zl-bnzC#>VXJ&_N?Ekdx=$vtGOxZh=oM4<2n^2a%qzSe$MqV1|)sX0q~0}WC}_ASO0 zdwe&2?CPEc&s?Hw`ksL;4#PXn`?MLHmp_Sf_Au)_XNc}Q3(N9)&&anV(BUbC!7(7D z;{tc{F|j=duowi99Uc9;+wR#dHPwVN$R;%3-d=p$ - Pt9YC^Kp>8r`
# zVbWHM@Mq4M_IAw)Gd;<*Zx5QVEq8lO=qL`py9Vj8Ovl*^I8hOqrfIV+h8Qx2whxAX z#ms+7>WhT0vmvuHzq{Ep(=LH9y(!rkQLc9Is=OYBz=dz8Tx<7L#Hg>)n1j}i>(Iv0 zDBOEP41aNI>9zV^7{cZYv}R|KWxc xzBP}v9ZMBNCMrh5%e?da4Rg!-`E_ePxG7vMk}u`z!dfS zlwhNWLnbNOk<`&|gZH@%%TqH*(cI#7kLp6@yI@B#bJMpang)7+uj)CIqbMaO2*c#5 z3_QmZ-tyYXB#gzdFPdK8?73@z2lJ)C(4tG(qdC_jdhYO^3s7szpQOv6v6aV`d1jMa z=O28o#LQ=y)V+7H(7~i<-CFJS(?d#frpiz8GI?%F jbBVnS28%IN zrR}*QhIGVXNP!0oBS5yslP_R-Ul`!0u)CFoZkUvrrN{g)WM_Pg3r6aZ8HHb58qz4w z5znPc7aq}JEBQ97k3f(ShrQEy*Cj?SV$-;e&Wv+U+O`Ez+VespaOjO>tSwohn_bIkg63T7ssE}YR)aRfs3w%{|{1V~!idmI-gr~N2 z4%ReiUc1 0%@NaI4!;Mq6eRxchAao<9Z1^+ zDoY}&xft`fjAHxsa@sw_%CULzcE^As;dW`qTNf{ojn!&^d*&8;C1*Q{R6m=hr= PN&hmj|Z@FYW~`6 A zepi(+DUdZ>t$Pkj1?LKw9<210I&XM67+Rdkt(S(Zw7AS1ri^(Bf_NS2wqI5h1Li;l zbHyS(=1_?l&=g?SBQP#K2iE7FFXPhd9w~rx;o(ZDpE)zeSxfs`kFlb|+(z-DF;x zqhMGU O87xH`GYA10wnVA={yntCSw zQ~gS^lA4XhFo3MSN)tF!{o0=lFdag97f1du#^Gb*?u8Ujf{n5*JWRvBBVP-gKpZX# z^%V%#9F$CHr`eM1DQTSkTWohA;FdblD4Paw4wJk(v^uy5*c6@t3<$5cJ^!&MXEUL* z;4DEretX8HzeCc~jHhLA*TE%GI6eC#*$`xZC_6gTI-9)S*;|5Nj97KC?CEQ511xAg zM<1B@y@9ULfvkmPQ^WH@OqCk0?m}$mO^G~&G;D8_TZ caHq=dc!@THfxqJ<*9l* zaj>oN(yB=o!PB)a&TKI_dD84Gr9@`IfTp$)NoDzmP~6E-LJ w&WI*D}d83O#1Tv>?)i9ccS&oOX9^XBF_@S0#S(Ci8Qpkac%XVoq_L+R>849Rd;+ z`pa7A^fMF*3*FBwPV)gV^9kXhlN~|syG2FW??&Nes9eaFQ(1H~bmJG2t%QsbNK9=x zlM?=z=CP%fDV4czf7{@*Z7CJ|Fhj_Cqq+KaklCgoxo}RM#k9(#kD)(vdfe2WBz(4p zXSxl44syHg6!4YFEwxvywf`vRkXT;b8e~M{$t1D)+Yly?jVR+GP>pAcohN5D&WxmS znL jcMI>XHQ63=5+HZxHi#cxn`Vc3{%PjP%$h+LNAwVqAu zx$6Y A!(8KC_6#fG{9B@- z=PsgV{x|kEeJ7V3nf!l;Uol(M4q_Z9m*x#F=hV`Xw(Xwu#JWbIu_*%ge@`DjJlXsH zqU**2!pQ^?7=Ku~)C`e{5IcF-3A{pEU+zDb7h!G@yvf!3zR~C l(VV%>f{X`bM zvDcrSNDr4^I|(Y+@dO16?otBIf~!JMeMMj1_{6-MIZW!MwY6gQSac9W@K+J!0&we$ z!+RV8?s1o;3H&_hYgNaOd_pN3b6?&OyrRK_tn=q8rjO#rdP05T-e9ZpZA?E!QEYi1 zD+&^ikd%Iu3(&`mx- zm-3=#9=)a+r}#F;w2>{S=25z{KgGz@1YPr@U(JK)6<26q=-Vu=%m@;Dj#)aAy`!$z zz~qNQmT|Ss4vU4?xw?uJ=|GaS@uWzy1;I)F#fb`I`E&Xy@BF}KQv5}ALB2NW3~jso z%n8l@h@9tOk0H_*i6UCvG7BB9PgVn^bLHTRkmngqGIFl&@?6td3*NJac+G)Ufn%ut zcJl?rAQ!Xn
0mT7LCTSM-v8#c_%=tC0J1p0$q)eftN* z7Nk0V%3Zp4ngv@LCCcfqn9U9IzZ3x) Q~l_ZANw3#0CxMf2y**n$~|?I^@(iL2|rN>D`*$Y;5OZSlxdqnQbg3~^~J zPlAKGo2#~+=k_u;CLfdIPiMhV#BFTpj!mylJPu}<2?Cni5EyrjWMkP{HA3O_77LHM z<~)o<=uBmCKfAFVamPW+m To*6j!a(47#79a}j-IvK?2jr+V|(4`%`9 z08IaNkj*Fgk!x>l(7|;smw!k9l6w{XW(7&c+B-Tiui5bH*iU ~mTafj0xwJm$Z=#Qhe%w?)H-wZM06)uMv>mA z;1=Y2MaY4qK%3pGaFKpWMT5N4Bp*`Uxp}1vRKZoXR@uz$dP{J^`kFraC5}NWbp!LZ zKI>k>weWzWQTM05?8TyTgkPU|W*)k#@w>#<@^z{0`VXz>0yk=LXKnUu9BipHvo)ye zHrHfsj~;yEn)~4~l0@l8)AD%MeL)Dg+ o&|kWd=ENU(XMXV$wf;cl zND@h#CFsKpF6y_bZ09#Q_!ckI$LAAl2(^wb? S_2Oqln}>2*oui0C{}BS4DxyX`&rgg*e_a P;18WY=MNx8Lr;ToDf6-xA(#va&&Z^a(t8k`TWsQwTruL(W*idR;FG^Vw~E z_T9x9vqeySjh;o@PHiD8OAJ1xYBJn)t|K0SWssj(kE4u`v{>}ywIp~eMoQrlD2d 4N)vl8f_2GpsMr@H0hd}sr(V|oR&b`)2aIZ!Gp%qgzSl$?NjIc)i3 zrI6hw=VceRVfSW8NxO37sfmGmjmy&cBcUOi!uJ>Z6}4|B8;@71*|2Kvrd=U9squVf zBNW$!;?fAEG~u|mWy6e*;s@S*LT&}VFjd~{VXdDS;$hwDp;*4Oers~9E{nUo*yylU zvXP8A@d#@^DKo7ZpZNr^E?oG)YSBjB!1V5rTKX2B45aBXWmTq8fMBe4J92q~5C`&H zGoJ98JvcOayXpIsWZaY^;YO-wzz?hTr(y7H986^-vDWLSy;WcgcZjl`gpYG4(Le+( zs|l;tZ(K^dSeKDk0Z|RErYmzD29`hA5BV|!+RH+lN=`nuz^LlmFUq%_mjd9xTeg_C zV0z`C_G9XkV5bC*PRk@ZMZ0#Jh?Fr9s#pRZMx5|yWd(DmY02@@-zkx= c6p}0`hx+5J9kD6>tB-8tGo=N#Rz^DyY(YOzqawuDEy039r*(`gL zV9z!N NVlmI!F*iD;k%mxO=Y^W);uAX! z&Bb9mQft$#w!5FsmURHlP7-DE>fC*G< T6(w_{dKq|p+Bk>B@2GTa 7DF&rc >$@A*wklnIBAj36JhMS{Es^cq_(dz_o}JG6J0=I- z)@4C$2~$@{(bLT0rQ570Q_EwIB+*;6xj`KH6DNlOXx*ADu9AEdjUTzC9fiiPMsipU z$< {d zVoa;R1ZSbw@h4dO$x=*tUN_j{&i5ik!a5t}TCg|#3)nA&1xMLyX%XOI5{d5|OzZCPXcZ2q$aw0> z#6m+_)4=tQEMG-g`Z6UW#=g7Hhd5L`Kn!;Bnny2nUVwHT{axBOUyo=oRsQkPa=`ga zJEZ?ftADP-&2r;0DxR`i(~PBZN>Ti)P<$1yzubJ>VODvHm^kn5&9;VC(#A^3sEY5q zgI{*CFIF0T&x8(Xy8c5i{&SKS_~U8Z*mnQk>K 5Z?7!NOp}IN<^)x zQYN_Mui0}{)b^_x`R;Fp;WI(?_w#opW7t>s5?*7oobp{} wj!-ufQe$}h&6&hZOq4Hjd{!8JG)q|y8XywdX5s>p$`hn!fs0ng=p zn<&n_m4@2Z*0BBLw#<@21OT)vf38B{ivg9nJtxUhrA_c18MKI%!Wc)K?gVF6o2IL< zxnD^=^47=yOSiqJEqz;(^At>?(G!kn>>kr_3DeOI>-}!qw3of$dyq<&DO}EBoUc^@ zrj$@*6Og9<7;8`>BZ+k)cw#vFAwjKSgR4c2R1^aJqO%qqe7&-;;SDM@dLp#?KC;da z#*uTTVOS0^Wjtg^;X20~?&Ic{toEJOQpqY$%*(enH>dl!EAbh{JxJQ8i@v|{loL6j z|GFTv(V%(AMKj>sql2 T zf9Ufu-%F*)+Ld0S%O9 {Q_67X5 6r(&MjDcV0&AqvKa{X1z> zoesq(>L%Ku4*|Tr(6MQ}$i(HJE3fA-jRZuPcqSAkyEfUVlvRFoWsX8WBlFWEdkU?r zn@sL|?f=m#pi3clW6{> u1Rnm9in!ZOngDu;faQn^O##`dlg |(bfNou~*0c6<^-)ovTK vC#cTOyPP+QfE+d-lPd;k1$iA5t^5~NiZa?iG;B6E%OwY9@1ji(^ zE64sW4QRk2ihcZ9gUYq&9VPLqT{}>2pr3TAz!*8-Fsaf}D7nSl^9E|hFlB>gc|ry2 z*CT53=wDfhZ|)fWPvl w&c79`FT?4o@#8}kDr|N2$3u#1S4;J)d(Wo_F6 zj?&yVs!xE`Hyk6{$ _c)B+zmwpW0CS$@wJZhVIbH=OcORj|pU2Q6`xvgJ})$%ER zzz~65ds!-m=6|0cC7eJCZeZj`z<0ie=d=`X*V!aD^y5&FyK`e5rd3XV{N#o474P~t zLg2f^-=h6nKHI5nxdw#L^}~Iydwwahr`lo>o!dLQ=H`{Hq5o$Yn-^%XFca{?2Umdn z=MqlB2{23=oWg7=7Cs~t*Z22)V=%ob&-HNINeX+&S0d&`YY&S1`5n`JhHSg!f9(GR z|F57*QE`e&zsRx)v?m!yUJM!!Qj9mS9;W(~xXMF@s0{e;5?d(ox)>*JD=HKq_~TLa z&qZ(C5d5#^Br58&%s=*3|M~7S-T%iQvaIh@ji{p%{xl>Q(~TQ>xFGPRdH280`8XY) zzcx;zhOD#yT3Gn}gaBUsCVaQ_6^|8hZBiNb)5b&+@9^Ith$;!jrQuA2qk+` F!Xu0>elc6nzFTH4w$v`r zK7O+Yl8-1ib@h}B`5 XK+#lQQ3pfUpzmLX_u! zpqcsXT`k`og@2fV0(ibS?H7~u1NUt*h4m=EL5Kynxe#jQ!$rMtRK|wtYwgSe{LoxV z0Rytu2SSB)N$mJR5FLJEq4;;-@MlTZLzVsfj|8PrHtU^Kz6?Tte|{WYF*iolR^Vzu z&6soAw^mYK-dAbXy5F~^x!f$P`Mh;PV?yEMSBjKXoa%vbFo=spz&*Le)FiL4?o632 z07Xyrdo}Y@%@(gDZtp33nyha)8~*jd`oqq ;xZY zEndRkO-*rBK0f%Zq8-WAj=eN`L`ZY32It+rrYRM6jDjP5dTGSj=mu$HydJUF)bZ)+ zTlTEp${iJ@OlXaf-YBx8n++G#(IUEL`&yXPJ~M)6`o@-c_#l%?NJpz}lY@ e*^B@nkeVisgl*%=Xrw+O5uBwOXp-F z#r >AlE5b?E}9juY4-|PY%Ibum2` Oob{)T?+uruF z->{+KNDntwfa=NLIiF(2=`G_&@-{*S##2yYD@V}n$Ee|R>8B8gt`CrE?3Mhc-Ga4@ zy%6vt-`nz-WbsD?%`H_9I73)vicYD1EKPrfhd8RhJNub-^ACTzK94DfplR>GSW_Y^ zIDHD2anp~|U2lW23($syu9Rbmb?5B{iYaaQpmoyX;*Os|qJ1t>m8nt5r4)uX(5RAp z!Xw(saD4g*t|JpLn<-0B`rF&Tyu_JD*-625YO1FFPR+3a*#15JyVJ{R?drLzn+X-n z^bQt|64;{}BZ?vkY>rWW`52YnP93nGlp(!bsjt`Z$dNbiTBB22A=bR=@>$RE!jry^ z4uz8sDtxXxDeWy|ypsVKd!k+crn|9T`Obhm&BLcv9V7GikAjM3{DnDikccpwAZ?TV znP(|>B%8VWW61o6^y0k8+65$fjY#kMl?Nxze|SqGi1*+LX8bWYRwk427!doPmreSb z>7puE;|5sqg`5+?4F~>?;teBCHKT~Ov*^N)$i%W;@I$16FRn?0^VB_YE9T9Fk}=^; zz+{_31!8Wpc>rZ%Z*@;6X`^G%M22j(aQ^2{aIw|8jmn#d;N627*ZeudusfLj?~3Y; z6V}!QwIr`=o>@34_ 2upNdenjp^Gwd+%-C@_CFslt1zXilr>$*27UJG|b&(`g5ePTH^2O7W+ zsE#xt3ddW!m98%~`a>7?PW4|0m)TwUH)7&ju_mf}BzMlpf|h*;h}!O~+NRUZk{)ba zcUNht$+n$g1GBdcBksfkvn+#VbXjJE`kMy$q24vy95Pz={y}1CYuoSOv+l~$f}{Qc z!L%n1`Jw1i9v?R|FR`Ku1a1e0-turF+BVTaoI-6qDrp3u)kay<_2JXajILfHe>9@5 zR<`Y iHp6y_`w-5E@76__PgAElwHV%!!i|}{+)=Zgul8t@= zi%`slUOL-0`|!Gidwq>(K S9CC&VBLBP&*I5pWK zRP-3^>0S0)e33$BUxw>eMe7ZyZScEzKB{s*$vJgUGN(@!B2 #t zmjjNM3p)gYTrHWLv|ni8{bIt5Q6EMn!ld6HS{Z6gl*Tr9 O?yPH11fQqaevQxj3_2W=P+>pTHttE~FH=6tng;C44 z9>nduXKo`fbCpf0+(S1fmeQaFZ07 PN)0UsZto5}B8@s$Ly-d&@hPc-}{tF||c={Mxc#@>!e2r#7zJ^r`u`CtkV*Y)4#|xeJF+W#k4`7i`uR%jQ%&*0-q`$(CgEvm$ zSNhFL-Y(}R8>gMaeA?5O1;f;}YW{l#! GO+4s3 zDt8eF2s?9#vz+V~Aoe&Li%{l-hzkQXTC4hK!^MIHAddRw82sLm)^+*_Z<`lEXO8_~ zY+iK`YFiyarmg8Hh6p6+MB6qun+=|Qc3$K0shwNM?9j7Ecx`yK4FFxjdt&Zv`U?#k zh;1WFTdnh;f6{X3+`qz_Xbd&D%2yW&gc%V#8CYAStij=7j w4_Q=%bRh~@$XfS37984WJm&S3VFvm%rnZtT z0FU9WZPQt;LG7@N00wtw)pY*3p3iyN<1*d7e$(ThD{)ZN9DD&($}| y1%?&E1dp_DF9%wVX-)%lv2b{DtNP`!f)R(KnV!3gJD=)L{+koRVsI_; zy@q_k=?Qa jm`t&nx0PZK zxzUlXaj+d!i&wzLJ{JRbtk+V{ERvgM+hw9>_AKq4q$0Q!vx~m^0?9S)9dz&f!PxQ2 zn*gek*lKNUJHqlFVPte>Z97L5a9+CW&{8|k-0>FepV;!QkjD<4SlBD=+JBbkd6n>c zuqAuJ<7!}E1L|(u-hs}^ZzxY_X)Qv$#W!-P&tM&nBpRJaIy#3AM<03{Xymj){M#Eh zEjNgkn9JLIHWP*qVupupml%I4h~l`Wj~pI# yQ&NOb0`m*jV_|MK@TUs~ zH0P``5+vf;Ve=WacPVM^IPpDS;k|QQAsR$^*FwuCsEqdWC2#SF3@48uI7X>02c%`H zYh#o4!*xTM4emLIej(zzS2BIk5Nf+6{WCdc%}cemW8n+8B9O|c^EB*SBpe$3qN9Jy ztFH4$+R|GD&9;?F``5xz6TIAuIk2l=uXE({b@rR?Hybq!m$rxFJ|;QS@&_Zt1Q5cU zzuE=3tm8pDjE{|<))(SwJGNJD@G`j<{vJJ!j!q=$Xg93nP8+oZ6>k|V9UphEe-ozF zODcD9CSC7jnuUK}tx33qDKy2k3`t}!J*A=Ea$+!I8DE?w*i^ok=xcU8c#ke>D5>|< zo?6Tg)S6cDuug6Vxc;(I#jkaHlW|=oky pI`sxAvf}d4AvkB>)MABMR0@G~=fO-8y+j)gCK<^+jPPWNWZVfFbj>GQ z6u~ckoKbcTZ(~hwaP&?voTeTe+%4ENgTKp$P}1SBP!kw)Xv4KHQkskI48O0%)28jT zZ2Mx(1+r-Ux~x4nB1o#%modC_j;6G3uXP4kf)*GA@|?&f`t22a%(L0V+CI%oBlmTJ zEh0({<5;ZoVuPSBEBy&P^ApvA5qp*o8(qgdV-u@o4YHg$i{E*x;Ho(?pmRpg%Q0CQ zhiYDeUC)&rRlP&Fozp>^cGJw@@vExsdE1KAE+EbzV=c4Yu-yKT_Fg@&Kd(*`IH0?@ zq8++diPCd9l!vDom|Z{#QkwT5&Vw@Kib|3vbk~ F{`^j$i6JH2LH4!o9$T0NFxayE%GNC_tfO*dcYSQwTDQ z-XOQ^O%NpQ+>tsfa%0{lmKeW9j!)WBPS!DZFX<*N=cY}fi37!oYJLAt&-f0$jK(R1 zuyzNQpAgxi)E+YP)g=tt%iyjuB}iz`9<$*Cy{=6a2t?e=-GJSHhadOOTf8dm9Jxw= z@=S^frVRY3076GWFenHjFX5g&UGCXZnl&_ALdR_`c;sw139TH;a-6Xi{m_0jy1?G3 zYPy1r|D^8HR~*e)A9W*m?(xMrBL%L|?QrXr3 !=e#KSN z*YI5t!^A)=XY*n;i@(Bfkur4Q%OdK~nX7-|yY54Jkgozf36h ~v_j)6DA+(D4Ohw;LK91Jd9Z z#$P8k^)l`v-dCUQ*}F6tK2Vyh3uyC?sAwMb4O&4qke4;E5biqi1p`ZV?duNrkH~Ca zB;Ty{G+B$O(~wUNgnsb{f)x UUretwBz4 zxJ7H?wTT`kpS+!}|U-u@8Rdk!m9465qho8}<#|&&xWb_Xljd56L`?46Kc+7n&Mo z9%U?%CcUy?>B_;ifsNfI C}&F05RSF4vQgJ6lN1Y=CdYi8nruSb7IA*;rT% zgT}mCD5&6(iu381N$i{liZEX%3e-$!I+(u^#MR*vYKCjWXWHG~@76W!&Xd>=sP~Ph zIJfk<`5wO7x$X=>c1ZjbCl{Da4SjUTrX0ARO^(d2pNV5OES0g0Nws_Z$sZcaqY1d( zK^sMt|7heS^%6(JA#n5vJ44l8A4=AyVlGthg?eyZb4}ZdsEi; pg;lx=N oY-=FaY*BX+m2O*h{E=oet zMCI}x!tb3l4j5pkPM)||mf+WV6i$so+2t* &w8B`p$PE=6SP<(}%vw633!AVnOoZfyD!K*z}ypg!WszdxNeg zdVc$j^QEH?%H<83$ t^8>`O+YlG3nEjIi=%KR81cj1+Mjd=iJRuc46h!W_>$>D^lR3ZbgI#>VD zcioTlATx5*eyQq7m9 m>VTS2E8OY}+}eH? )3^G-}51uL|$Ri1$pn~W4Nu{P2`{r5W8ag7+<9bF)VQFF-{Sa%AAJ6gpgZA{7 zw b6o4zK5a_N^`x~OMG%}jNZT?K<9t@)h&eVK&4qs ZPQW~&ADNvBU4@J`NW zK!>T$ZAq7Tu?2#9rymr%K%0|7-5tM>+TFTbPn9Qg-p$MbSJ?XDM_v+tYG@hJ$cVP6 zPfIxlC$RI+H_y7|g1bs#pyZp?@3tgl-I#+n6eq=)0N~f|J10)_!+N~yEXuShYG@mqckz9J!SM+k>J+2wgIE%vf=O4ySy`3KM z=Z0~_vYRN#=oE3oBce*(0-03VlWD2$ev)T$S0l};nfDS8nf1_>fBK8gtyEGl$y7<1 zC0UgH(8x|&@?>Z+>}EINreE70{0P^&2AqDF@jf=$18PKe|L&)CA^gjFr=oEIJL1=M zlbM19KD@Lhmn; OILv;Vzy^$6qPm*shB6?b@xLX!h-xXrw1S$6A$n*NJ!;6UzOrim}hh3y-@ z-X>h2Px{Xnd)qd(2vS5@y61YS2X6dZ;?+eYywh@9^oi68KD|9m!K8fFtsv&V{Kdch za6w*LacW)jhrL8d6wr_OPZQ<8Ek+d;skSl+2|AZT25%E?XYBCFy4`L)VVPF=3+mj{ zHj^xp@8&k{9VYkc;FD~230@EuZIHCGUgsugmbbNwcq1Sf`OWe@4@*k)>Sz{i(c&I7 zPT?;oF2VQb?}slyyOb)P>Un<|zE4%fFeY}-$ILf^xllx(wUw1x^$^AekR@xk9Y3J@ zrUIb6tmUCQ15{`!;LUc)X^Y6-8ytEL`+acP@W)WDQ}gc=dtHdx$#?&HWjWsQs=oOP z<++zQLq>i8{gs6p(T>!K6c6A>tOe_C_|QwopG(PT15;fb2oa2Xm3vf65@Xp$nRwb! zil59bcsKRoQez#-zs2nY4)7yR-*1KYdr6Mh0R55GS8`k~zke}nUe!}VrPiKNF>&_p z#gbb>Prmza{VXgD+hN3tEY0`NZqa`ix;QWT5!dPU2-nb-73cONz=bQsC)3g9kkH}; zT?d!9Y#{LH|7j95j$X~YMPTnN9r}KO=m sDq-CTX_FeM0EZFD@0Su`256NQg z%^%r`9TTa$Zn37av#K3FHwnAbQXb-smtteI^z0GMOs~JR&>#H%^6CZa5ck`^=4FbL z^?&fcR{24mZW$J*?vAh2EsyY=jc@!Iw_nwC^eGGODtUe3S8Vw@@wha*gfA@v-dLiU zE1~Ce#vtmFvx{d8D$i!=`EQJ~N$Ar{>Fh&T$gRc}@x@B(ZYAQJ2QRVYt7ontlgoi6 z1>X<|g+I^Vxo0coCS#_W2kreQ9OZEhqqvWj7G#;-Fpv|UJ?YRr3YIDBe>(_io4wtK zM@G}*|4)L9&I+6r-23-_65juENN{H9|G)K6N-)xL3ov?Iw8zsAAfd3{DPlLQsWR>S zYYL~Ri20pKK(MsvNmbV&8}q)G`qa`wJa5te7Wb>+8h`Mca!!fR_<-S~q`v{KsGEVi z=YIGe#qw4#dajYh7JIzX%JQn({rZjC iPt4upL4urbJH4;mXtOMK#uaXGH!}V*yNa Jt(K3VRh x_@|WVNap4c zBdn#h!F#=HweEdKKA~f5UU;&UBlYobABOj)*O pW`ueIV#deOSL&Zm zjD^;FxD544*JBf1ePp`0A!WKyz(nZtjv~j0@6}VyuEfZvZm5qOD-nDg1=g+l{&9C* zUdp*Hyfd3O>Q0rSQnqIW$f}dp;ZZ8%3ys9}{O&3VWmQcgFp_H#xFC&t#+N68V3qVQ z5+KXBe5Ac#9JWJH6UFtS@qH**cd35P75fJ%MP W1_?*DUOU4eCT{f=5mEKX4r&vgM-Q42rPtFddXE31G{FD zin-Gcw;qMQp3iB%lO0^XN~A&@Q%?GEF||)=Aw{=uE7-4whNT#wCqh&3^PZgI(yczp z0gRWb;C)Gk+;*aYuhlO|7sT)V9{>IH)bNs&q>$b)?_ -+kPb`=lBB|wwDt)63iTrrwuc4rF(ff zJ3Bkqg#TC#Db$v-7nXfMohcwpks&L{ph>n9gTrUpYhi{Xf$JXYnn85U8-6eLI1&gT zaoq;e6O=WL$ny|1l|LpsB5* RCAxl+$Fzl z#f-)%hB4`0i{q>gt=+Vb8*!}Pzj}E*U^4sW zn*rY07ov^sS$8-P0P{toKxmL0pp4P}9}GzxWPc*!s4>)x(ljh5!T;e+ni;v=+Bv+U z)R;@~d)~*XlGGaP@p;1CPMaR$Qn`kMXKV*(Y=go0Dgi&v#RT^*)AJF!e-`0F!l`BX zZWw5%w}=IYOkB%<`o!2}FU!~y; `lvMo>VP-gC3?gY#&NW3=g^(wh}6pR?~hYDD7RoO~1(pRfci0cX0yfZIxeM zSnZMU7Pfq9ZF)h_$i8;pM)&93ld@@|RN%4BV#+O>PMbZBvv MA3PsaM@8 ifKEB;g8Bm{zVa&p6kN7n$Z4pik7?@KVyqnR5ksu+`8WrdS-uTH-RS!i zdjc9*jd2X6<~E4_Wfh3=i+(#VJP4o(D(k>IU$hK*ne4Ot>f$iA!SHOIIx}0qpaRSu z%hG*n*4bNI)$b9Q6f>=p*E4U{Rq3}T@D%Hzc4hbp5T()@Kky7Mcg~S#Gnfs&BBUm! zQ-Azipf>$_{2r;rzVLxe@J-q43vH?M^vlJV_b+Us&>hD6lJ$AHACA(_$tY?QdW&89 zt3~_k6$3&rr(;U*9!0dD-t0(0$x4!+g+TkBrujVqW$o^pk2w~ F9)EAcnFsToJkI)Gq RXbMg5ri5+#3n|<7wz-D-~8{p{~$kdU-xxi kpFVjUBv&z=ah|KBA|mdWDj1ZC6f`ELPO;h$ryYDh%`59C#IxHio|$v&bAN0A zWJ)jU&q=4rj+0>+mkZ-Wl*q?w>~Dt4VR$9Ai8IXNxS>cidK^~wHj9G^JUx0KFIFIs zG#UIwyFhXq&vluPamieBGqnHUo0+@d*~+V}pM|)^s`@^O3Ewcm>V+PO1P+;UpWJ8P zGHDj{&->%+IQHX*Ot`?UYXk+%Qkn1Os5bfVN4Y+)+f5eg+@(%Bcc?8&(dJy@3$0{t zaK&n?WWq|Bd<@)06G8)LdWR#Z>YkIFY0X=)-P+lgJ3)oF^?tvJzy2Y1b70#zPXXVl zT2>%7+rPrtb*5p9jdb^%w5c%P+#haOY6!dy)?UjQ;Y&v5e9R(=?kr{x)~INH%yk|W zku>05xw|6wls}v9oCNfb7V5K_Cf;gUVlYG1;>g2W8Rzat^-L@E$N 1rv0z?3x(Zv-_<*pD_EksyMmuNXe3;ZJ<8q-|c&P=<%ps+V7(7sHsB};^%k?~A^ zG7godfy;I51y1Ko2e_-Y0xALqD&u~~xv9;I-3aA;JZ?Apz!h?dPcKmME;ClECj!Wd zgq>Gst+ QTx)Db3!`Hu*38${KC!IR+1ZLO$tQFOj`MI{6ilse( cG-#8vh)&*U#$d|`S&98kq-Aa31 zs!tid*miXH#rqh4VufV(8sn9UQGli$S;0KtEtJei=UAMC)H$Bf_HslkaOTl?4UJ^6 z|L*O)5glBZC){kh^;NX~Bmw1pi7x0>G*GlUhf3N07FtsbbHug!+V@Ty+S2^=7;RqO zzR=h%#M7x&pXD=1QL*I6|I%TYs%Q7icR|All3 <3NDJs LrCY<{U-HaGYW@N~U6 zl59Pkb&!8?FfEe c&CgC_d}pDk#`!zpz%M_wA?q0Jw5L+G&5xV?& 5vd8S-I*td9I-aloG8>?^KX?B`$FlH zN2vZ~LT5sVmGJBZx}iK`leUq>J3g*L7YqOaRmZ({qN3UWbR4XGH6e+teriCu7dRl& z3im|v{b8G}JF0PvcMX-#o-N`EX6O4_l4oz-eX-|lI>E%4ZlniyMr9>kCs*T)lbnvw z5VXnMqm}aQ=qjCv )YH<;$s *@Wl92 z&W~9x<@`F&c@*Amw?%0o!*6LC&^jye@p+aRzjpFeT+yQnv*E_rKA%cDUy~r3bBUCw zautrQbiYAincs*uSdRAy*@k=MMq8`EdFeoB`(j%wPtUVC_&z ;*7R8U~0ju?k78 z27cayRnwU@^SPHg&)54w+{ &bbMlCbrI>LA?B_DL14a+gc2!=pl|fXIUFgyflkKRA9buU6!)A| zglp)z-hc(xtB6;$<}W@IXnGDkw$N|CK(fEB&n)+~wkbLUVQ#P^+@JxPi3|q70rhd7 zK3HOm*)5)n`QFfyIJ)6p*RI&G-n_eijJhK6Yv({((JV7(GK*%|{|@fu7Aw7HkQst= z@`>F7984?T@6~jDp%RlxlnR9@g-%!PBdgBjFlyl|!Mm5Np-!CA`%&!IGJu}2xC2M2 z@gM)y#te?Bf=^*cSmQtB5UFDS->kuyV_dQHQ)DM;td97Fq?ek7YtRVKf7l%+@BB?^ z`LO&{D5zy8x5s=v{=t7}D(pl5k4%*4k^f|+{9hi0*Z@@*tjG_DGv2x(u_gQ-DF j}XB;;#@nk?c^pyiIg2@&@x{sTKUO0f5iSc9iyKLtX#SoQ`!;-P R;`0^ZCT8bjRv%-i)3l52lWa|5YF zoEZM}ks!WQg~Ss?Rsj9UGaNhR#r~e!JdGbe7DH@Fpl&EJ-dU^4|KMz25avBiCp0Mm@1#@hy+YXoVs7+|QH>Sv}y^e_epR zF&1tYF8k>GnS%hz0|A<@xQp1_YIVp9e=JtgzZOXM&2c95Sb}ycKZn!|if0qg_Bis; z<|ZYmFC*z6%y*v;tuKicG|V4K`~gU+Nj4m9SP8eh!FeA+dY*rsk7|n2y7Bnm2h6N< z9p-pn7ER&mGfjFsaJ|GqCyW~i2ymurUNEI^tG5u{zdRBH$)7ht4b+IjGRfB0CJCS4 zRlV-!zNPBXJI}2_gdDtm#73c^GXPK&0mzY94*XcZPFWc+lLj@V|7YDyls@~KZQAlx zKX;*@-SuRXDObtCi)>h|iA*@lm%cf3l-#CXNHRI>cVoZ|q1*Al_=o8J0Igt!f4L=y zn!ogMFpp8X??-q&2)Z`J2V%<~hT0#10%RV#O@xT9h964xr$woHD}<0$BE{Yqdy&xx zIq}PEZXT-))E7{E<(_)l?w*+9H$+OdvHd{^d*f@D+vi9x<@dfG&8!Xw4H{4W1?sBB zT=(|5Y_2H{ZZIgt-n Qv?a<25HbZ;uwlev@SJ=7>op)Gyqgxqoy=GDzh zo`&O+pLq(fdI(L{d011Bn+x>(E))P_V0j;#Qh2^Xk=CI6-)FeHDTajjq&+Yj3JdMS zLLP6Q<`5;tUW6w*V;)@@w%q3osH3@pRhj%56kRboTrwLc4cBJmh8R8NQ>WYQ^ec~5 zZN)Vz0aOY1aoHcehc`PPk{MZAo#az=ZH<*2NveMqGv*(}p{xJYvE!&XnEoo#`=b4a zzh`!+iqC2UQI}=P_!KBO*5+w!2 &$TEn zEhQSiObFXACP60bVZ0lk$;RF!>)m@fy`L@p{mcV?2&CVqD6|1ERZ+AMw%h2{8_QTw2acVy>WnF1XiJ)*OZD<4<&AfhAtQzkM9q z^g4(!iQ`PE{PN=NBBLRJB{j4@(TNrI?avpks|{QyT0GBs!3?0Zep|WoG`K^4vi|zT zG)1n#)n+_8I~_Fc^|(3#A}%A426OC=I`+Y%M>GoDU&~5l?_Qd3c_OuH4~xJ-p&J$L z?A`&YvZ9#Go#TVWTTc(R$QM>B?HI$pV|37heFx4ou0GH-^SOY%b4ER8#37!z>aAzg z)lMMxYj^$M2dV{~@1g~B81|<2l)VG@d`^+S4!O=VP&2^iU7uE`8us@B(97b-(6=jR zPAf@$wtMG}y|B0qpTKXy7sjRQ^Hv7hUg_(7qslOZM07X;ptHcI2HSUfQ7-^)cf0U@ z3Yb3N0 %Ul7X#&)bT*q$TrdAT2#4z)d>nHDrBf_hryA)T~SVV z_)2HEhkzkb8x{3vMzg@}howfVkLJNSWeSMw3pRr)R+RF5n=SrM`&)?F!F|Rlp4s~9 zm}?E-Pb#&2uBG-;1bFyYz+3RQN2dczhn4mhkBlB~qc+oAVc?42TF3J5IQ4Wx@q*#q z5TZG6g104O_vNeuVn1cdc^?N`@T0BsI^z+0^SEQ2Q*_v=jB&+pR{Y9oslBAW;Xxw` zgm5vCT`(XX#%537g5WRuP-}hS79sLg-%b7vq}!X8740eRXm7^WByG54rL5n&C7N8g zeo J5xRA&p*}ddXe(%}?XLhkt)O4@)V_uLHn15LODx9a{w|m2o zqXyfBT$XND ?-!(z7$$D;WnD5**+d{TFl z5HBL?Jo0`O5(&|tmE*4IAJpXz#pizW^@Xup3d12?j|pV))2Ao9?lw*V--3H7P(QbH zZdE6|VoNczM6|INEDuMx*`UNkubeDzPjoz$nMQRtpq6PYKX#V3c*%e)sNyixX~1Hh z8FNmES3qk4wJ7|fA}=2?+M9KTPoh(dv%{To^_25-^6O;Dr+OxQ(L91kU4BF>O*(RF zIGT4(T&kVo;nIF-ls((*<&E)uHZQmO&^n^^%IYBxNI4`O;$VOyu4s-iLoG8vJb`nq zb+>$vC&VO=D}`<)c*2ARMAsR%tab^izf<@Ebt99ed dh|$GCXp|mArQ#ad`ty6;XDr5y-XH zF^=wcVioWp5jnVdE3E_PWjNPhfpiKTTR27MYpTf9urn(d^zRg>{+VJ{c9QlPjQ6-? zdQiy~yG #$lo>b|cKd&VQOhY?>q*&lbN z0e|V?%BtI#u4xIUl_0EN&)X3parG;r9l`M2P6V6L4UT@kn9+ 2QIcI#+H8?DUd*0J*dCJ(nm8rWDfP5YS=iZ)Mq?B`; z0c-!>-&9?wSVY)bR5_*rl2#(8yM}cspK6}Hz7_PzaHQuAge<`G2e3{zC>H~Q8B%Pt zqt5DdZSuqlR&;3J-)VfN2gVURTSwuFZHZZ?^`H4UJGfzVg5jwvE%h&VJ?r{`^OPAt zFBdV H9lHcs%f3c)O? ydrYOLCzpo~-uB-^P0nO<-)}Md z5JaQdYWm8!^;GUSu+N6>+Nw}%`?FY@ODqhcef`poSLod#EFIu1RL6)&*7tMlQ%T4x z(`L%29yQgSmfB+{DB*__v~9k=x5?gZ&MFWjX#a+1dC71h>$??Dc%Y~2>JGH^C!x*) z9OojQl_8qkZ_Ouj5U8jAv7?*jR#g2&1w)>U+3Tq?y~Z14yfMZfnt?pDBz>CITQBX$ zk*slealQT`5mp+KlVyMvCoWHyhk0UmkZ s?y1`tZajlY*qGk9yoaBS=ev|SVRmN z0DF>+y}-aGyNfAQqvk~a1Q?NDGU!sAA%s|+&P-mgUI^PtjWzLkuGWsN{=q-%Y()v( z=7YQD|JXNzeNk!g-7l4WqnB(HMcV+&WjrilY>MgskzEn*q$=f>%6d4WOA>_DKLR_6 z&12zUu`bUVcfQM#!n4!dN&8u0BDr@6FH60!N0`Hm1`Xm^sb1Cl`}f%B=`nDcOF6`o zNfROH_|@*~)peSmrDz3B(9uD4+o}D^BT- 1T}cu1ie z5C#&22Oac08gHn$es$hGm<^T$g-kLa$gqt`ERFVUy*zh6#iGkpcS-ao2zIAj@{*j` zV1M|}>|^N)BT};)4o`COXZ&zHjuh_NsO~N+k^RmbH_XbFbgs1Sbhda$8E$Cd*5p}( z@?+h6 L}R|6 {CwwIVEqY z7nT&hIO6>#agS2F0LH=gqn?IMf`n-5bg*H?sZpsFT|XG%c6;R=*q0LHu~Wp;KGFD_ zEdH1=lown!s51Ki48CiLtJC}PboKA7EG|2YUN-B@iC@9BzvT=X-)C{b*gMK{&>rv6 zC+D>tf`V>PCIOWe_}S|-<41T(!Tc@> r#U!gLhA9EYg!w5rr8{W@4350J46s2b2 z_u1B*kjLD+7T~1l9jz(M 5ib9SaVzVo&b7HtTGZE;gIWx(ip4}%Yn44``>g9zx#{#z<8!rLD*_oY zk=Wsm011&>Wh!?Af-NQ7cf>{8kNH=A8(I%KO^>iVp;&*zlUr~RE^k?{{EG)4KZyq6 zEv^@ynNj7YwpUieR*3ZNgVAA~XNi89^*L>rPCD@j-?lmf%GlIBbDINLw8%1=O^)l@ ziB0e9kN7QnW{6D(Uch{t<1E&+ Q10J-`?oSZD8NWhiG^wn)@^LXgQ+Q2fKwckXmxVJcU6IUBHBdm$0 zcr9Vpp+uySHuF6$=VNk^^eAvKLt`mW)oLoMasm3D_e5#L0F-fIUpDt+y&Rmu0xr;7 zi;IXj_qgj_U>g6R(aFQ6)k#^y=FZ#*7{lfQCaTu 4H#vk4}ldz#-;OKs9sQk$k(2mgjO4f3O3 Tshfx zS2+m^ 0$Y;2$O zp{R0Sv|8)j8%irS6JDO>A|c`9E^^yPkAmm?FPgEvZrk$)H`co-Ee)XjNlrLu#{2hm zor<_xDyjAbIBr)OgGn*|E1U@x9;coA&VSC_w8As` m;BxhH?8O8-EX%U-Ge#oyF>U|~N2e$+JxM9~XN^;z*y_Fcegfwq|90-MZwJn8C| zc& |J-zUhy|3ao$x;mi*&@UeWtAj|U$+JJInJxZNz+2BM4}pHNzMKIk16Ao zia~YaFdXqulEb=&b8T?Q6bh#20Cl<*B@%9CT|w(iF8|Okk{#E8L*h2zJsJb0<&)*V z*65UOpzPO(i0@g)+n=b -g2@yJ}B9F#O8!L9=A{r;L~y#`0iXZ+ZmIpup#4OHv-uXOF!qTr`tk{vR6EVuvb z(%c$w-K%qWR6z8rfrL}}*NrB!ls8l uNB4L936;8A6|2fdIz~b zsLr#YvbupQg@CJIA%;=JG3ZEEarB0~er}XpsHD+wk77jroo8!ipf3q2bm?ExUYz)P z>7p1Kl9aU82fv`w_D_!H4Ei8tCmk7BD4hEyF!E7+lu5jmXam6g5g|aXvgY8N@p*f8 z--F-xx}~N2RFH*P(t?j?53sm2oH%72E1cu+Muz1{ju2)JmtfP~$e;(0ohSS4lwX90 zi@KO~<06{VYuAJM=jxr~A|`BaaC$8cKfB3~!ajs=pEG@Pri?s*s$-pj*EKF4joFah z%E P7Um yxZvHgiImt>tkwUFmg`)d))u zKAuNkr?c7q_XkSwRs*kW`t*Y&aHiOEu<2#n?|FE(PWUS^QZ?)nNzA_hNHurQL2mpJ zXV|SZS%VElN!_3kyNf6PrJKb07s4&bNkyyH`Wtf&-`AFk63fPFX8*QzF!Vov=piJw z#BYLY|L;|z(fgYDw0kPZyuV>&x#vDz_d@cB^l!5JmG(%H)7^7kM~<>C@rxbh|J*=d zB89^uo=T3g^%-M% TD) z%PR@4d9uBmi+#CD_VOXx6XX+<&)M&3GSz;pGoA}d8)Mg;zI{TGurs32Vt?WA+~7mA zzOBHJXG{0uM 245pHpu$#a9&a)a8#~_oA(_f0T%y0a?)!(~~mb4U3 hZD@eppS2Pi@QhqQak^K5 zrISN-zIz3D*=+&bkb;|s%G)4Hpi{AhIhL{O-*{*Aby$;<#|{twZ3(MXL4ZF(>6=4E z4WkEzEUr(=PGG>p_VX-WR2}vFM!=Kj3&4J%9oIGnvqh@1%w$ssBTxxL@Voq3ec2>v zno)_xCsGj}$-Y)XgMXX!l{8H2{B{vDd7%&N&ejgVY)jVX`!N=MQ`1F#({K}jea!5C zkY1k8r|cS{B97>2s8_WkYf5eDC@ww3RWmS2`}{qf5}%M+D@veTZOYpwYx9ZWM!M{< z&^Hl+J9QK3@FSD7{M+dHfh5b3WZw$7P~YZBmvufV%wg`3K}=lMx+2IZSNk?$KIWc& z)o%mCswIn&zgl@FSBN1MZu=S$1@u z;$R=BNuFbpx>;K>q+ZzxL^=Om6WQVCR;qjdq&T)E-W%pOxlDB;6jtic?@x9P$BR=* z288JFs{3zp`#paA `k6@2QLvz!8)w?Ge+=e zo6gq^U24&-lrU4(b`T@audn>$h0Ugo$tvR1c%qlUzw`ZZhj=gBH2;9#a&E9WY3GgE zOD;VWDCl_YK-P*dQ{OsJ5;14})GaXI2`Lj${Ml(Lr=L`@YG_n3dknyRx2%LXkb$9| zfDD%L<39~5-|<#`BgayA=u}|(Wy?{<^k?fc1~O&zoO?YB3#-PSCimf$4=Bj$V8MnP zQvgji%#KbJVl6|TzmHZ)q(^I7Q)l=ojc6{kDW~1rQDXB5C-NJy3Hh8L;3Xt_x`Dj; zcf7==IVq@aC<~BN{e6!r$E6XLyMO<;^v^@m+kZcr6G=+`{q(%&|NoEYZFiD}hqaQ* zGJMq#6@6Ovf%!0Bb@A=}UezQC$zm3FO??2ha#aat-0SbOo>PZ}ybZDraby{ Rm zX|VfL!jWRnCN{3hE$c&8@AkMCt(cFgJDVfb%`4rnzxSuF>Ae5m6+EOb+A$>p=A4`- z{VIuYtWlU;;`apw -@cuVPNauiT&!zhfV_94#YzMA)A1r9GC zXBj-+8Qo6}gx$IB%-h$`neP%=uGG{DtLE9;7<@4-IOyBcfgBdjI8_9`(|>p`9XP!R zy4OX k=Rcm9%xa35klQ) zdArPi_7lOvk6KoII}TB`tIuMR)N{~*3Uq9HooKDv2W$Hxfc0dl@XX?w44{?zmraPe z+^2z;Qu(lvubW4%et(w2!zXtMZ{E`P{_o6Cs2qSC(0eJ{XH%@f(#`jmoGuQwczqB>nD13t<`;qc)1_kzVC;V0(&{d?o z)Ej2_;0d1PoMP5iNUyj|joWtR$}6E{7og~f=9%>@{hz7g%AO7lQ2={x!mk=-Roa_X zsO?GYBQ@aX#(C{+KH-=3h5Z4TffiZK(<2V-t^ QnDuaPVdK45Md#+9vUPC0XE^-l CjPk |WiT)j)cvp~B%dsp z(~gtq9ZvSDsHL~J1$d!o7?{D#8kdyy6(BIcKUY(50gOnT4OAXEQk?vRAdTMez(hMi ztEA#vrZV?amPa&CcwzHNcAs|Q&CspG+KH`t3iFp5Ng33EV%5NTp__&56Tj#7e9{q8 z1<$Vs^?6uVoseUbPU%9uNexr1+W>6QNo&Zj%>F?gi`}5!`Rb{6gV-EZ;ng!3ouJmc zoOpJ*fp6?J`8(|TwSC{dpPuGjiJ(jd{XY&Q)z%-*`!Cepx^DKP?zoLR;f~0BLDp53 z8t0S%ax#p(%qL&Y aKg+ z6Crq{U