From 61c1365ba275febd28b860b8e61205a3ecc1f900 Mon Sep 17 00:00:00 2001
From: Clement Michaud
-
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- - + +
## Limitations @@ -41,7 +42,7 @@ Users must be enrolled via the Duo Admin panel, they cannot enroll a device from ## FAQ -### Why don't I have access to the *Duo Push Notification* option? +### Why don't I have access to the *Push Notification* option? It's likely that you have not configured **Authelia** correctly. Please read this documentation again and be sure you had a look at [config.template.yml](../../config.template.yml). \ No newline at end of file diff --git a/docs/2factor/security-key.md b/docs/2factor/security-key.md index c1f748cf9..aba3898b5 100644 --- a/docs/2factor/security-key.md +++ b/docs/2factor/security-key.md @@ -1,30 +1,30 @@ # Security Keys (U2F) -**Authelia** also offers authentication using Security Keys supporting U2F -like [Yubikey](Yubikey) USB devices. U2F is one of the most secure -authentication protocol and is already available for Google, Facebook, Github -accounts and more. +**Authelia** offers authentication using Security Keys like [Yubikey](Yubikey) +which are one of the most secure way to authenticate and get authorized. +It is already available for Google, Facebook, Github accounts and more. -The protocol requires your security key being enrolled before authenticating. +The protocol requires your security key to enrolled before authenticating. -- -
+To do so, select the *Security Key* method at the second factor stage and +click on the link *Not registered yet?*. This will send a link to your +user email address. This e-mail will likely be sent to +https://mail.example.com:8080/ if you're testing Authelia and you've not +configured anything. -To do so, select the *Security Key* method in the second factor page and click -on the *register new device* link. This will send a link to the -user email address. This e-mail will likely be sent to https://mail.example.com:8080/ -if you're testing Authelia and you've not configured anything. - -Confirm your identity by clicking on **Continue** and you'll be asked to +Confirm your identity by clicking on **Register** and you'll be asked to touch the token of your security key to enroll.- +
-Upon successful registration, you can authenticate using your security key by simply -touching the token again. +Upon successful registration, you can authenticate using your security key +by simply touching the token again when required: + ++ +
Easy, right?! @@ -32,9 +32,9 @@ Easy, right?! ### Why don't I have access to the *Security Key* option? -U2F protocol is a new protocol that is only supported by recent browser -and must even be enabled on some of them like Firefox. Please be sure -your browser supports U2F and that the feature is enabled to make the -option available in **Authelia**. +U2F protocol is a new protocol that is only supported by recent browsers +and might even be enabled on some of them. Please be sure your browser +supports U2F and that the feature is enabled to make the option +available in **Authelia**. [Yubikey]: https://www.yubico.com/products/yubikey-hardware/yubikey4/ diff --git a/docs/2factor/time-based-one-time-password.md b/docs/2factor/time-based-one-time-password.md index 2ef9bbf72..ee372ae33 100644 --- a/docs/2factor/time-based-one-time-password.md +++ b/docs/2factor/time-based-one-time-password.md @@ -4,25 +4,25 @@ In **Authelia**, your users can use [Google Authenticator] for generating unique tokens that they can use to pass the second factor.- +
-Select the *One-Time Password method* and click on the *register new device* link. +Select the *One-Time Password method* and click on the *Not registered yet?* link. Then, check the email sent by **Authelia** to your email address to validate your identity. If you're testing **Authelia**, it's likely that this e-mail has been sent to https://mail.example.com:8080/ -Confirm your identity by clicking on **Continue** and you'll get redirected -on a page where your secret will be displayed as QRCode and in Base32 formats. +Confirm your identity by clicking on **Register** and you'll get redirected +on a page where your secret will be displayed as QRCode that you can scan.- +
You can use [Google Authenticator] to store it. -From now on, you'll get generated -tokens from your phone that you can use to validate the second factor in **Authelia**. +From now on, you'll get tokens generated every 30 seconds on your phone that +you can use to validate the second factor in **Authelia**. diff --git a/docs/authelia-scripts.md b/docs/authelia-scripts.md index 14fc2b12f..75de7c716 100644 --- a/docs/authelia-scripts.md +++ b/docs/authelia-scripts.md @@ -12,10 +12,14 @@ Then, you can access the scripts usage by running the following command: authelia-scripts --help -For instance, you can build Authelia with: +For instance, you can build Authelia (Go binary and frontend) with: authelia-scripts build +Or build the official Docker image with: + + authelia-scripts docker build + Or start the *Standalone* suite with: authelia-scripts suites setup Standalone diff --git a/docs/build-and-dev.md b/docs/build-and-dev.md index b3a7582c0..9abe00833 100644 --- a/docs/build-and-dev.md +++ b/docs/build-and-dev.md @@ -1,53 +1,83 @@ # Build and dev -**Authelia** is written in Go and comes with a dedicated CLI called [authelia-scripts](./authelia-scripts.md) -which is available after running `source bootstrap.sh`. This CLI provides many useful tools to help you during -development. +**Authelia** is written in Go and comes with a dedicated CLI called +[authelia-scripts](./authelia-scripts.md) which is available after +running `source bootstrap.sh`. This CLI provides many useful tools +to help you during development. -In order to build and contribute to **Authelia**, you need to make sure Go v1.13, Docker, -docker-compose and Node with version >= 8 and < 12 are installed on your machine. +In order to build and contribute to **Authelia**, you need to make +sure Go v1.13, Docker, docker-compose and Node v12 are installed on +your machine. ## Get started -**Authelia** is made of Go application serving the API and a [React](https://reactjs.org/) -application for the portal. +**Authelia** is made of Go application serving the API and a +[React](https://reactjs.org/) application for the portal. -In order to ease development, Authelia uses the concept of [suites] to run Authelia from source -code so that your patches are included. This is a kind of virtual environment running **Authelia** -in a complete ecosystem (LDAP, Redis, SQL server). Note that Authelia is hotreloaded in the -environment so that your patches are instantly included. +In order to ease development, Authelia uses the concept of [suites] to +run Authelia from source code so that your patches are included. This +is a kind of virtual environment running **Authelia** in a complete +ecosystem (LDAP, Redis, SQL server). Note that Authelia is hotreloaded +in the environment so that your patches are instantly included. The next command starts the suite called *Standalone*: - authelia-scripts suites setup Standalone + $ authelia-scripts suites setup Standalone -Most of the suites are using docker-compose to bootstrap the environment. Therefore, you -can check the logs of all application by running the following command on the component -you want to monitor. +Most of the suites are using docker-compose to bootstrap the +environment. Therefore, you can check the logs of all application +by running the following command on the component you want to +monitor. - docker logs authelia_authelia-backend_1 -f + $ docker logs authelia_authelia-backend_1 -f -Then, edit the code and observe how **Authelia** is automatically reloaded. +Then, edit the code and observe how **Authelia** is automatically +reloaded. ### Unit tests To run the unit tests, run: - authelia-scripts unittest + $ authelia-scripts unittest ### Integration tests -Integration tests are located under the `suites` directory based on Selenium. +Integration tests are located under the `internal/suites` directory +and are based on Selenium. A suite is a combination of environment +and tests. Executing a suite therefore means starting the environment, +running the tests and tearing down the environment. Each step can be +run independantly: - authelia-scripts suites test + # List the available suites + $ authelia-scripts suites list + Standalone + DuoPush + LDAP + Traefik -You don't need to start the suite before testing it. Given you're not running -any suite, just use the following command to test the *Standalone* suite. + # Start the environment of Standalone suite. + $ authelia-scripts suites setup Standalone - authelia-scripts suites test Standalone + # Run the tests related to the currently running suite. + $ authelia-scripts suites test -The suite will be spawned, tests will be run and then the suite will be teared down -automatically. + # Tear down the environment + $ authelia-scripts suites teardown Standalone + + +In order to test all suites (approx 30 minutes), you need to make +sure there is no currently running suite and then you should run: + + $ authelia-scripts suites test + +Also, you don't need to start the suite before testing it. Given +you're not running any suite, just use the following command to +test the *Standalone* suite. + + $ authelia-scripts suites test Standalone + +The suite will be spawned, tests will be run and then the suite +will be teared down automatically. [suites]: ./suites.md diff --git a/docs/configuration.md b/docs/configuration.md index 4fafa7985..45aca28cb 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,11 +1,12 @@ # Configuration Authelia is highly configurable thanks to a configuration file. -There is a documented template configuration, called [config.template.yml](./config.template.yml), at -the root of the repository. All the details are documented there. +There is a documented template configuration, called +[config.template.yml](./config.template.yml), at the root of the +repository. All the details are documented there. When running **Authelia**, you can specify your configuration file by passing the file path as the first argument of **Authelia**. - authelia config.custom.yml + $ authelia -config config.custom.yml diff --git a/docs/deployment-dev.md b/docs/deployment-dev.md index 4a8d47c54..80343ad34 100644 --- a/docs/deployment-dev.md +++ b/docs/deployment-dev.md @@ -16,8 +16,8 @@ non resilient to failures.* **NOTE:** If not done already, we highly recommend you first follow the [Getting Started] documentation. -In some cases, like protecting personal projects/websites, it can be fine to use -**Authelia** in a non highly-available setup. This reduces the number +In some cases, like protecting personal projects/websites, it can be fine +to use **Authelia** in a non highly-available setup. This reduces the number of components to only two: a reverse proxy such as nginx or Traefik and Authelia as a companion of the proxy. @@ -26,17 +26,18 @@ either by pulling the Docker image or building distributable version. ## Build and deploy the distributable version - authelia-scripts build - PUBLIC_DIR=./dist/public_html ./dist/authelia -config /path/to/your/config.yml + $ authelia-scripts build + $ PUBLIC_DIR=./dist/public_html ./dist/authelia -config /path/to/your/config.yml ## Deploy with Docker - docker pull clems4ever/authelia - docker run -v /path/to/your/config.yml:/etc/authelia/config.yml clems4ever/authelia + $ docker pull clems4ever/authelia + $ docker run -v /path/to/your/config.yml:/etc/authelia/config.yml clems4ever/authelia ## Deploy Nginx -You also need to install nginx and take [example/compose/nginx/minimal/nginx.conf](./example/compose/nginx/minimal/nginx.conf) +You also need to install nginx and take +[example/compose/nginx/minimal/nginx.conf](./example/compose/nginx/minimal/nginx.conf) as an example for your configuration. ## Deploy Traefik @@ -47,11 +48,12 @@ TODO ### Discard SQL server -There is an option in the configuration file to avoid using an external SQL server -and use a local sqlite3 database instead. This option will therefore prevent you -from running multiple instances of **Authelia** in parallel. -Consequently, this option is not meant to be used in production or at least -not one that should scale out. +There is an option in the configuration file to avoid using an external +SQL server and use a local sqlite3 database instead. This option will +therefore prevent you from running multiple instances of **Authelia** +in parallel. +Consequently, this option is not meant to be used in production or at +least not one that should scale out. Here is the configuration you should use: @@ -88,8 +90,8 @@ from running multiple instances of **Authelia** in parallel and is therefore discouraged for production environments. To use a file backend instead of a LDAP server, you should first duplicate -the file [users_database.yml](../test/suites/basic/users_database.yml) and edit it to add the -users you want. +the file [users_database.yml](../test/suites/basic/users_database.yml) and +edit it to add the users you want. The content of this file is as follows: @@ -106,7 +108,7 @@ The password is hashed and salted as it is in LDAP servers with salted SHA-512 (more hash algorithms such as Argon2 will be provided in the future). Here is a one-liner to generate such hashed password: - $ authelia-scripts hash-password mypassword + $ $6$rounds=50000$BpLnfgDsc2WD8F2q$PumMwig8O0uIe9SgneL8Cm1FvUniOzpqBrH.uQE3aZR4K1dHsQldu5gEjJZsXcO./v3itfz6CXTDTJgeh5e8t. Copy this newly hashed password into your `users_database.yml` file, prefixed with diff --git a/docs/deployment-production.md b/docs/deployment-production.md index 67555cd31..a86db6e8e 100644 --- a/docs/deployment-production.md +++ b/docs/deployment-production.md @@ -31,18 +31,17 @@ the root of the repo. ### Deploy with the distributable version # Build it if not done already - authelia-scripts build - - PUBLIC_DIR=./dist/public_html authelia -config /path/to/your/config.yml + $ authelia-scripts build + $ PUBLIC_DIR=./dist/public_html authelia -config /path/to/your/config.yml ### Deploy With Docker - docker run -v /path/to/your/config.yml:/etc/authelia/config.yml -e TZ=Europe/Paris clems4ever/authelia + $ docker run -v /path/to/your/config.yml:/etc/authelia/config.yml -e TZ=Europe/Paris clems4ever/$ $ authelia -config /etc/authelia/config.yml ## On top of Kubernetes - + **Authelia** can also be installed on top of [Kubernetes] using [nginx ingress controller](https://github.com/kubernetes/ingress-nginx). diff --git a/docs/features.md b/docs/features.md index f811973ee..78e091afe 100644 --- a/docs/features.md +++ b/docs/features.md @@ -1,6 +1,6 @@ # Features in details -## First factor using a LDAP server +## 1-Factor (1FA) using a LDAP server **Authelia** uses an LDAP server as the backend for storing credentials. When authentication is needed, the user is redirected to the login page which @@ -11,11 +11,11 @@ You can find an example of the configuration of the LDAP backend in [config.template.yml].- +
-## Second factor +## 2-Factor (2FA) **Authelia** comes with three kind of second factor. @@ -24,7 +24,7 @@ You can find an example of the configuration of the LDAP backend in * Duo Push Notifications to use with [Duo mobile application](https://play.google.com/store/apps/details?id=com.duosecurity.duomobile&hl=en) available on Android, iOS and Windows. More info [here](./2factor/duo-push-notifications.md).- +
## Password reset @@ -37,7 +37,7 @@ email to the user email address. Proceed with the password reset form and validate to reset your password.- +
## Access Control @@ -63,7 +63,7 @@ Please note that Authelia uses the *Proxy-Authorization* header and not Authelia and the proxy. For instance you can use the following command to access your service: - curl -H "Proxy-Authorization: Basic am9objpwYXNzd29yZA==" https://myservice.example.com" + $ curl -H "Proxy-Authorization: Basic am9objpwYXNzd29yZA==" https://myservice.example.com" ## Session management with Redis diff --git a/docs/getting-started.md b/docs/getting-started.md index d6bc21632..54f5fc494 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -5,11 +5,11 @@ In order to deploy the current version of Authelia locally, run the following command and follow the instructions of bootstrap.sh: - source bootstrap.sh + $ source bootstrap.sh Then, start the *Standalone* [suite]. - authelia-scripts suites setup Standalone + $ authelia-scripts suites setup Standalone A [suite] is kind of a virtual environment for running Authelia in a complete ecosystem. If you want more details please read the related [documentation](./suites.md). @@ -28,20 +28,21 @@ normal to see this exception several times. Below is what the login page looks like after you accepted all exceptions:- +
-You can use one of the users listed in [https://home.example.com:8080/](https://home.example.com:8080/). +You can use one of the users listed in +[https://home.example.com:8080/](https://home.example.com:8080/). The rights granted to each user and group is also provided in the page as a list of rules. At some point, you'll be required to register your second factor device. Since your security is **Authelia**'s priority, it will send an email to the email address of the user to confirm the user identity. -Since we're running a test environment, we provide a fake webmail called -*MailCatcher* from which you can checkout the email and confirm -your identity. -The webmail is accessible from +Since you are running a test environment, a fake webmail called +*MailCatcher* has been deployed for you to check out the email and +confirm your identity. +The webmail is accessible at [http://mail.example.com:8080](http://mail.example.com:8080). Enjoy! @@ -60,7 +61,7 @@ Here are the versions used for testing in Travis: ### How am I supposed to access the subdomains of example.com? -Well, in order to test Authelia, Authelia fakes your browser by adding entries +In order to test Authelia, Authelia fakes your browser by adding entries in /etc/hosts when you first source the bootstrap.sh script. ### What should I do if I want to contribute? diff --git a/docs/images/1FA.png b/docs/images/1FA.png new file mode 100644 index 0000000000000000000000000000000000000000..e28a104da37ba076f1158e04fada63daac3718c7 GIT binary patch literal 21508 zcmd?Rby$_{*Dbmb5mW>Nq(cEwQjtbjgmkyGL3eiu3aEe}h;&J}(j6io-JR0i9g8#9 z`^CQY`F`IyXP^D&zFuFIwVw4ncg#8F7-Qbcj|y_)H?EOhLm&`0Bqg3JArKfS1mY47 z&J}niSSGLvfw(#9s`A2K>6H_;wXKz*iMau_y^FO0wSlvVAp+q%Iv=fJtIuckeyaQ$ ztM?slCVx!gzZA~Ls5*vBj>)l=+6GoN-z+I3Y9ZXHtCT$F2^RtzwMSoKquZ3UmQ$TQ zZM*pKYS=H1mJj)l+^06XdKOE!P-U}e&b6X=bOL>|&nbet9&@wQS~^G3v>!I>xW#{5 z=jq=4-S)P{uq5+9i-w1is#(MnuYZ3#bx&<7nwQG)WWQ=Fdgm;zODJCywO#7wMy*~| zc`9BFraXH9G=cg`hq#hMSc zQg;gMMlKsLSZE#u7hE64Y3;lB$+5sS$LB01?RV&_jh@wB$FTQotc3Pl-!xeI?p?b1 zRh(wJ2=h-c&w=^#rAY1$vbCIa^;EnsGrnYrUShwr-)HzdejCD<*4Lq+N9PduBMc8F#b5p;Pdl|_##hR_oH3(OVHDYsTL+>ulXcb{8$FqzC36DSobk(*PD8v ztkCeu_1hJn+Wbfq`2ulPW2LkMak0%G(I?+apY*Mn{A01w?qc=94afpxkD5F km8i%kv+o#fcQ_wd9R)F5lth0ODb($BpikZJCC-U%1MeH62a} zy~9_CeBy+1`8678!rmcl-z2{0Zf4GQTn#G|RK{PD*Qe*kl M^~=8 XX7ZFjDm?f9y?K_J-(HE`ic7ST603T0AorIPl!*?7c1tk znswv-(L;}^i8bf^9IZ_HL{Pt^GV)7Q63L1R =`~6 mK*}LBA_J-=CT%klZ+yw-`)RdT^DE-$INjJu)yiV?-`Snx2+z zSt+%l&Y&^Gh_OWe?vd!CM(Min?cWld-bK=sxy)G~Lr43cRA*bTF|1$xHZSuoD2s+p z_(9#0;9h6anIh?6Kl_M8rQ>6x@Vhs=>1cnmw}|LbD%vbrrINp)nJ@Y+BR@sYIrP#^ zcs)|GGhu9TIIcX|=bFd8Uq85>zr~OFT>Ir?Ns) LuUmJ=k~Akv*h3U4`b-0N7p^a9rxh2voEYM( zAQs5gf|#)0$l!EFvrVuyN^#=_QLWhV+MD11%EZ`**>@axC+u(4JT-}6AWeOe2AQ+J zO&AB4+SC_RYO?Rp{YVL9(fu9vVH( I977do4si4h zTpzwJ&~I9(+xMj8Q?LkmLSyg7F0yKdPknYp{>J{`T<)cD?(csay2Xb|AI?uU+Ao z_(??0OiAgZvU5L}?2}8F&rhvIVZY`Owi{&h8tZkOIH76MH$zK|7)oaA_U&Ds5UzG* z2nP9Lk%(I8Rfvt1r(afBVZS_RWb89BuEc_oXM{bBBM{#G(q-87_pjH~j8XBgADVP! zjvbg?fApF6W&1BBER95cM_tdpn;W8=)(^HUDmhB1IwKu&OJtr*ou!if=oGnwt4}^a zAE$*c#Gf&1Zuj%=ZHw|=Wz|%yC<(;(Ap6AED@C%5q~vvDyzFO~G7TJYeqw|xNkd7` zFSmsqU;1|6 a1rTeF* zbljvk6T0>zjf%L!WD3`bwTm$&HvDMZDfb_ #(^#@DOjAT2`CFe#yhvPt z^<8wL+vk<@h*`e~MI`>p {Gjn3gAn^CLFr zkm=gX--UNyaM#lqT4eihrE@qFP!`?petQ|qUuI#wo6o{cNPXl^)wK-_`XGi|V=wc! zOi~Bu5RJzDn{2Hzt{Qblr@ 2fp9NMumtl@8bwXxVv{#6BT?Q%%ub9e9+0w u{9yF0sNCCEME)uFBa^Q0_M6{D+~ykha(e64A{WOH6yH8@Ejsy@{ZnLysonT` z{cE>(fjSH?uOA+U>6V!Hqx$ABad?sa2VTn$jPIH$Vdl4-nAefN6I`Z!KfHU3LwJ-i zxnY{ZO-aF)7-!Sn)!sKPi{$mSfZN>00-QBlciBVRwM6swQeslV&rXiUaU5+=CrRBJ zg8qE%GZDxo^vDXU%C`%jVP5QUIo0}N)m2uS{y;5`!{>hV3xj>+kFILuw&{e?tS+uI zsbTMY?yHTyk6nfXqP`-c_FDmlZvE`}3G3cCbz9B?Gh!xAZc!|ElMHpLpYfg_G)5h< z9}m3zLxA n)+Qr|mD^s}bJQT>mS?c~Cs;kCES|X^(fnDns#+Y4R%pDK(S5 z0DWa4_9cgvq@_1h#3D` 4VvLs;)vKgT4dHN4EFWJ?NK>twT*AN%`!nI$^Z{KD@I zN&4RUxc42hbIfRU76q?D^Fw^fTXXlG2<`ojHek>dr}2Cmd#aB8?wtYCTQ+)Eg8{B& zl7MGcEgLq?6NDAX)v?ZA?)Vb&8uYjy<^*3|;W-#T9C)|kq#aYswc ~R_ z=G-rpq4 MfxD(#gQFDDG^O%D=Pn!3b`9Y^k7bd{0dYC#Q-CW0gNer7B_9 z7o~~^rb*3U-@SC#=gS|N6dr@@IKxzox6P=Ax9rT+r-qlZmDtZ1tc!fu% )||XEk73vs8e}qurX;UM<=0e8_1a8=N%YXxP5(&}+do zL7-elv6DE5ZM|s`@q7l=s=Ogj*>X`!n&C5o2s_o|l@#o$qceL9w#R!D5fKGR5t09J zIl$Y9_4vXs(I80PsHZF~%7C{{4S`)@ETr;VF ^#R^#4~lrrvXd05!U zyV-awofW)g*L (?Y%S$>q+|0 zKfdSOPPh{sWiK=%p2tX8Yr|5;wAKD0O0MIM_=iSeGDeH`PibP$M9Eb-;&yxkn;90F zJ2lH&qYvj;ap(8K4f6WPpI-`i;dA-cwXBCpxMWW>9h8_-jFFS|$mtV0+edQ@-e2Be z5E_T*AdjfdHU?Ye<(wsxxNkb!#0I~jF1yZd`gzx5jXUU0-36}pGP74IUb}m!u9-;> zO`;W9S(&9tE2VWg<{pxy;8A60LRv@{=BCk}tOm9F^}QUIYK}vj6GTd8_S_9?Yn(uW zhi=skm6c;|r-w3ywN$Q_wpq2hlsI5MU3o1n{v2_E{x7jQJq%vCYAvB*hd|){M*oiy z&WJ|_FJjwE%8Fvo;$q!lCVq#D!HPgoBP5>-sW^|WO*px$&i`%R-mEUy;JO#^eywqm zHt{X)9Y4YAIAz#U#uTbr7`cObT8u@X)qaX 2o_sBpP1H9sduW_fwJwY61AP3;@}p ;?t~#m2fHKYo;wk?Aio=_3FG z;qRr($hRd*h4ON8gWp91q6ZdYa7o!EJUu<(BJ;Z|p 6$;EIgPhi`q2uaNJI_$oLD4Dz+gxIhn)b#NH@qqN{5&XE6po2v1H;NqNY{ zHFO-6kdUy@8JEptw-CGUjsc(VRJ64%fS1OYwv0NWQ >7juRgXW(j=F$9aj)f0SGztw(P-n-Ta;}SZBfE=TR*siKA|o>z1Ben1 z4KS&Xyz%Ji=tK*Rx*P|0?%cjzq~8*How9;6Mi! 1J(yQBhHVQs3u~9~Ct ^nM?*{C15&IrYbpGtz z93JtApMSz7Dls!yP x@+nvXr=P4<)i^X2QsNiz#_uZu<=9)iVdMha@Men1K z6i6geHbFoqnEzl{qm !rqpyEm zI6^>0l@EJ=gOq(KC!rMirYTVE`uS|b#rfeBGTUTkW~Rtx*YNoG*kr24 p$ zoqVv*u!+cgdRl}gzU+A&mYSMc+VJoTSnWsm?j?=TxO6>-@SmBT?ONrv94%VTu{xBN zkx_AV<&{ODccGaNb;E7ZHXk)|fW=L;SP+<9~z@@RSt}d6j3-bgS99Yg#*{#yOCnZD$h1${) z1NN2oIXvN2-q^I&af-huo?&Sg^Q7phP{>(YviPFWmG{% #(N-BVg-Tthkq^Sx% zS4WqcSzcMZv53^GM>=hctHr4ImGt(*QVaUu@QmpgWGF4Axad3`oLODXPDx2oi&94~ z;s_SS@?9}_g0=8b@! b^nCD?nCThJ$etSzjFjCtBxTU8M-Eaad*B52 zNUJ!i)`U#!gi{!bi*?J;Nnc-|mPLHPU1rnb<03;rE{iv2I=tvQ6A_zsvuMOTS8X)` zawAPPX7Ia9do)M3D&O_Aloam#&4hfp59s~r2nYzU<2+>5C`eIV93!Qt%}q5KyK;lH zKdX!NpBtIyUcAE>FpjWVD;zODnSO^)TfC9$4IiBjy@5(g-zav>KPyQziP7906#QpY zJG;AfgYUz_!p5HG))o)e8x}s|;fWd*fKhQzj+fiT6{AK9jY^$8nX9D}Gfiqzqf1hY zt!|(rDZ)LscA2vZ5X-KHuFJ5{q$!Yu*^^p9O6t=>N6gT7`fDtjMSsdEb3M$c-wqnE z;Wi`^zrD`- WJpN%SEouB?ZXeCvTb_GBQd-AVGnc zxhs$ul$=RbCh_|9>)698BLf2yK&*6fE*>6@pFe*_BfU^AH_p=@Cm_9QUcY%${IcGs zj|B}I@Zr#Y=a#qK|KQRS09F9NH=(3d?z`umo+c(HpMrzcm6Uq1YB8t% ({v|LY7C5B<&X3d#YS^NBj48W?3=XW4O9TG@qCa=BRnx zzV}Z`|DE~rDMwHr6WV`5^e zs;c^v#qlTX`(#}YC!7YlyQj$y*Gs3=Bqcv8DJzGEh4rPCyqRweA1yYEfc5^ys@M4$ zi$(E4!(-e}7{(rcuZ#zCG+bwcxa9bB<>WrQ?k(Mu)GRg)x2!#Pgt{g{<-X;ut)ny6 zen9@rSt0C!tdfUE^*3fMbnS6ugAp0;oUG ZSMkMqWA)x^|kL_Gwnns0v=Diji zJUoHFg~{T UEG;cv7ov>px2A9+O+$V^5> zg{D6qMQ<%?pY{0Y=phoR7yN7o2OCRJ8QJYA8~;qh>ui?F;OC34adEjH@6cz-CkXt* zP}|zNOm)XfER=zC(k=r*3h)G8$-vI8VpymF6$2u1(Inl;!9i6;wHahZZy}Zs( zr!Lf9yoe;n^Plv(I9D542no4)e0ti}&>$itBvi3KsI~w5j=Y3vRqpnY77_4T!OGoi zy>ls;K%c{q4!yd%`ugxsk==z3<>$}eqqh8!88tPiz=hq7%1x=zU%!6YH&ZwjwN{ju zmz$g&ZHJ~*yB)?4-JzDu%F3GghlH%_X=}%RW6{Z~s(QwMx>mR{m>ct%l0R$ee8Y*9 z$2Nt5fx*+75*R{gN*imfHY{*%iRGtwZ_j?Psf#F}@jekz#BL2al&0 V~F7N0VN=2~}77lOG-hgCqkJ)7OT--0Ni%6%Jvvxq7wn zKA4b17CrdBE{29_w2vM>T*9W>dTP>3D;YF&qO7d^NE?0oL76ySRjzUCcaxr{7V~p+ z87V2xv9PdO+uK!?ltKlLrZFXZJGiFK-t9&|b1ArjNB&T `h;fb zu<|XB1E1E=-9%(;V=jKIt*tGw7)ukU@=&>Y^(q>ODl03;CngAQ-Ac+-PG89_o$Sp5 ztqXsD8f^sBx7eib!2|@y%4l(RN|T(|od+`A5Ma`hrpo!-Slyi4jsl4k#;#b_kb*^k zbk{BeVNK-MDlv~rY2w1TRJUv$L{;{jmY$xGfdP6F`^pLmAu y8sP z%@ij)ZL9``BlbsIuXxDuL`6kShJU=O*zM$V7*JJLR6tJ{@piMj98~sy5!e3;#{Y-@ zh9dJXWV*GY2Jej6(7-@uMur4nAUcR2BHlXInHDnu6xG+)+uGSB3(D2&6Z`e_2z$X~ zKLrM=ynLDXjGv$98X}P*BQH o6ph^z~`os1Qf-o7TMJ z9H^O@*H~As6f9yS#$Ch3Rk5*of+e)Y1yB3#LWLN8A}=q0Vs-1^&4hnFQi#g`X3pq& z3sxE?fsaBYy%1e2b^bbhWp$;~*j=5AD~N(iR~?s3>hGace7$16-MjOiSWT($kRkuV?XBb!Io+~lDtzkUf*@Vgd`JVtQedGh25Dbn*9%rrR{ zXxCt$JTiA6Tb+@bT2L)p_0gk8u27C1kt0HB@$vB&Hv#wAqGagLahb&zYj#0|tG7k4 z4%NTIo}Zcd4k$L^vKZHidD5LEq6v|Bus%i~(D)q#^NR7#TubL?OCWtf5dd6z0mKc8 zH5~w_9zJ|1fsRHza_+=WpRPejVO_p#yf*w3*n=I5*J5Yf$x?E#iiXA`$(5dD|1_|! zK`~1znV4h(5s%$UH=XQxJ_Y~;8v+gadENh`Th_g0YM7b4Q-aC**Q7wBq#Ip z^Cy7wEHFIT$j3sUIZsxy^Yu%|93~uwc;2DsMapFv>+bHZqN}@syKXU7^6373VH)wz zD!>*vttNAvraaW499+Z4kDzsNbv2!?^WHf;R0oz)gE}#z;B%CLD@s$EJg@Tb@Kmf7 zv=I;zra}-K=<6G|ePdpks;vdSp1iYTi(VH>O3KcCTW)d~_)lOB?5=ypa8m{j4porO zJ+VA?b2Br&IZV7x8#w?%3{Rgb!x8}ARjg!X6OfX&dS60Z_BvHiQu>~i#h~LdAHFhH zx_LDrJvBA6q(lvPR6^l5b7DU>Ha2#b9eubpZ!-*WP139pczDIkCq`Py2tCj8c=sJi zi{T&jBxj0>iU5|TYP)i>vZ@Xa4u!|~ &g)1$(| z!eXxr&k5(*pw7E~b#;PtfNu2k;vOe^Jg;=%-F+zRt9g|hy@0h~&fG==Xou!4guM*F z^iQ=s?Mx^wlD)rtud5!`#-BEOITmax#qy87=n8|oxwyHRjT9I_EC?jgjK%Z25s;8P zqN1XL(ZH|9-@nmS0Sbsw^)tW%hvi;Tuw3ZR#~ wgRTEMU^*{| zK`q(Y9YLxkbEAQK*(kBe>+kjU*Iy f$2CQGGimGZVkg3%kaVq{-x&s3Pi$#|4@$sG3mb~RJfTV&fGbkO4D?XdONUG`T z=*S&8kO-o%i1sV5tjvbt-nelC?4f#+{K|-k2r!UnIVMBx=EK!(A7gMcLjE$U=cQ2N zpsu%db;;Aw(b3}~ZRbAFa;%OI0t@Jf=huR1qjMj1zUkH0+$;_N1J0K!ggb}J&fJ{^ z$P;_HRYSI@Smx`neo}IBYQSMEtG2}er`AV{rS;sm8}U15Rp_y08z4L8R#vhSP2h)05{OtLRaMp2mX;*+II_)#@>>7==|-KO#tn7dXixx3&~8|`dvdZZEG%rl znp ;Vv8|O;93b0Kc2ZC{a9ID<**#*c32&h4UI0oQuN%}xeQ)Y zRaQ>ct#-9hKyVx7Sy~#M(+Uh-6wCNb*HXih6xqy*RUeF+fkccbEiHB2oXkBxJv7@} z>gm)y6#q=F=;~VWJvkW-i4&DheDarQAAuwW^y$0KT9pW3iC!0&!p_0LV0RL;*A)k2 z;|vfC#qP(pHz;^jV7o?vCT4%Fe~W>+w?Cu@lbGxU&>4Uw9vB+R&dQPkRWU=2Vcpae zNZ};Mx(vmj-r3D<)d+bSC2+d-6wpK#qU0J5PB(ChIQ})d%)C4~Y ?Y*ZL0>T3+6YM*IeA8=D?^ zuM_3m7e9qZMn*JCE#rXG5>QZdU|gEc2_zPfq4C2{hE{)=O+~!!x`LRPpV((|m%+Ym z$C}-M(p?PW>r?v_81NTFw|95Hd=LQwn8p7f06^RR-#q$%QF&3EKn1cYDx&%E5$h@r z4#hcYjOfz+?^WE55;2 FJjM&dZ<_`_G`(59|T%Bw}LYJ>=$&yu^bA z)k92tY^kDxmynP!v#jg|>=Zc`q8sl;t{U(I25#;bK!*u%(7ylD0Q~m9(*T&h{d)NW znU1=8`uFem35kecYd<9;5Th8`16cq`SlHNY9UVdcF{ R8YY-~#2-rhTVdvj 6MTT+ za{W{WJZ-@PVcZNvX}MPPKiJFvAJ(=W?Ry`A&}ND<8)VoIP|eEE=1bnznHXnx9Cy}v zV*b!qd@Dh3e}A9g*WvKGqXv_a7Y>@^I3sA6bA PX0 znI*V&tG*sHQ51C7{rmU7hJ}f|Qkbo^{!GsEokgc&3GOxU^^r1KkF8HuYq8cGeFwTC zjv)y(GL$rC&uMM=?=vA|Qar@seK3+|n}gHQaKj43C_=|E%I^kQT1y!H>ZIFdc#A%o zyFVnCTph|ELZ`UL=|RiTkUAuwW`X`kfs-YgYuI&?F3!%}UO)#TTJ(9Bjf{DsPqe(j z9YLcMP-#ge7nkzTurO8dxK2)7VOqwmUmtz?{Mk{i@KwVV@PD&G*FqHsTGR)IKwO{K zP7D2Lp;0iT?m)Sn5!%lv(9Cs(S2;Y-oI(0`Y6R$l(|`NU9S*~GV#%Pmjk`=Q64CPc z*ZZrXDedht28M>90JSkNFi1H}zp~Vx*)E=_sHhkp@5}=N)q*<*s+S!YP-Am50D&>u z6#4P$ovEoQ0Xcb&pP!%dH*r9ALihm|P#BzoKKcZA^!h><$?qLj-PJUisPBMyt01&g zfVpf`AL>$oDFV)v -r5HFj8NU_3z5(1;Gs*xptHep_FkGSr=m z<1Q~Wdk>;Q>cVr(2K&yD7stVP6uc={?>zX^(IE>;1Q7Kblr0}0A2h*VEQ4yDm7Q(I z$pn(#u~G-Ba5!yhTAC@?2WWcahfkFU2)$Z+ah^{~O3LnjWG$%#W+kV^Xv)!%v#7W@ zAEs`o0P5&Xu5Ps^K!l3EehQElaMI|q2V8r1mOwUx)wJKqxA_OeJ0L|gr$sbccDw+G zt9B1U9riN|pckE@Feh02@W{xAnLndefDJl+rXnTHLYoVtl}`C+d* 5m*FTx ^& zZ4Qdy^QWlmd8k^|o|ky;ge6#SA-L;7=;nkos%HU12raVyD?D(XzlhpS*k2!u_;vq? z6)YCVr55@Gdz3}7CYp-`5kHxEZ$p9SUnuToV311t2vjIM34PB8GLhE8!H2+lfCvf! zl#xDj{sCGzE&*hUGR#y}NXQ#Zj3TQk0a!MZ*`^@iR!R~Q9}YGqvcW?G;4lT64?By7 zylCdxf;N^uNM7`cFfG*r=a+}g26x#=RSdi_HQ2Og&z_;f7)(ODX#{s_T6aXs=;)}j z=M|re@93sY Tf4v7%?Z3UU^i_fJEaqj zF`z^Nkdgu6N6a~8W4RSW?bn8%NQMRn%NJT0pHwdIDudV!p>=U_iBly3M)in^NhXwl zjI2!vGqDjoN#L@QLO0Kd;(>p-9;~^vc1190d> *R_^sn){gEbQlO;2#h`S{ix)<;!A5s#Kw z#O#*TrG@$b{{0+HjiAoK2zo(66uoK2la1lb)wu9hF18E=mXFrUX8F}=0v;!S%sII# z0}zPLfyke;oy&Cm)JJ1qwJgg;LA@!Pnr4}rnayu( 5(op^7|_&i1Yw;ghD()p ztHEFKCQ(Ss(#!Qy5)u;d3FkEAo5zkd@vRmyyVYt}`7S|A upoKtO&VXJ~37*Md)a ze=j-0sceT+Um{ehZI#{Yuh{yi*1d+u?1uW03zGx#mU;aancJm`;0}XXRdwz9b%(h> zw-&b`e9gdE0yI?uw+{|aPy)d7Ausm& jnmr)UQj?bO1#1=Vad z4zfk6iz9zfHJRWPfo3+_ny#m3u1!zy)C62XuQ{}sP7c htp1DeR_pa&RU%pwHnKrt&hpSu)!KK+tN1jVUk4{Qfc3?Ib$pTfgBbG;* zYr;MZnqb9H;z4W3!%>q(k4af5uIYMbGeqdJqU$nGNJmR+Jd~%?x$ZXiMSKsIn-RL8 z0KI+L`88QUi_Ore18q23ljYvjf)R7qr6hm-Vog;oEw|o+Q;1k_;J?$yI}3;IEyP%v zF0@C1W7`iLF$by(+SP&Ep`9>zMqCooVMQf~l3x>gI (EgO *?g5x3zh)Tp;A_x@Cmf z-!i5eF21_oTx-$O#M}thDXEu1BxPA;t?hx@QWvY$z~s1;i>u~d;g}m^o}ST!yL^_e zo8#At<`ap~G`igWalTU%n3iO3b+Eqa+ =|u+WB-pC>jZ^t0%yEa=qP*y5 z0!pDpo_0TVJw5!deacd?a$54PJT>c$#PO&sl<_(~<(yxjP<`=1Rdv9zQOqH zX!ymKPa7$6aoRjL<;PTdG5GhoMVf&9*(;_caF~6&b@S#+asl_@KV4m1oR;Ip&){u8 z+BdLSo!ii85@-N(X}HixzHnZX>27jL%J0Xx4bCf>>9~?&;9%Ot!Z8yP8nHlY)I@jp z%jaTZq{``X)zrHJBla haalzLsnfWPzg;X?S7d701I}CZ*l`VD zju{7%^Xy=^?VZk2z)-+{c;b1!s>kP#=29X0&!BbH`3g$*Q&+Hn&2^xQXNpV0_8ZaJ zn1Cv2Jla=Yjq@7AQz7NLU>b0q+jj5+aX(l>)1=DfZkl39K Z$e`pCu1<+#T1w3Tr+FqVJ5^SJ$Vf^_yT()|rNQ;zNDh;7*~uZaD&S7P{ruov?= zOwGswM@O%KkU8cB*s`Q;Kl(jflimLCVHTT!=Fcf&uk&; >)X!_Di`esJ9Ehs{7%5sj7 z{3)je-|KN(`K;}o)v*|h&E0$tv+><*+~krHZ_FJ6 vhl6*u|cSw`cGu2c+1k-e z8n0N1fYZ7MUIz60m&4U{d;F<9Gp5cKxOR3 9=;rq3kv@zwb1Waa+I4{<@8yYu3m6Z2R|}PU*|d*&t_XYmwND zoto|!ovueU-V6`3dRe_Lg5psV3j1ezABZCQjfYOIrF!aEk6$gaPbpIKa6MX9hwu4% z)x;$e-L)EG9 {Nn3R;rzH^oM&OnRHjCE0K-lE>Q+G+t_ zcGf71x_aTs-c}f`4i|^m0EZ+0*{KylZ(~-%#H7|XChzLs1pNLfy{V)z&-lEyD_AQv zBOZjLYnkvx>b)^!o;m~p2O0iqdg)$&SeJ!b&tKEr5oZY+|0`|g->%`QK4SXKK(y;b z5k>Q>s%R(sOgYbP`wOYB{dWKIi9o(Y+Yo=@$)COkU(7GlR%Sy89keGS**hPhmk06P z5zQeD&HS(c=~)aiXaQSJR4l{sjoqt#hbsfCUw1j7$7a8GjQX+5v#HDjYYT0eHSL=I zVV8WXshW-^KGa+~ou{!*%;4Xe(~Z9NsHgI-wpU`Wb8!)2IUFcJM0eEuOpo_`6`Pb5v*&~o5W_%i(6e+6 z tKgX0-B5aedoRvP3DK+x0;6z^2d4YF(u>ey3@ZAwUCJUY>5KJEUV(Qz{<( z?5Er&D`kEsYU5--R;YqLGdSMmRY1JEfV7v#%(cdS{16Dv8g1naipo}Y{koesg7ACQ z%>urb=SkpC4LQH2x;>XkXmV`JJ!hWuhmkw2`{nARAs+5O$_c6SnMw5_0c|aP7pcgg zkV?L!3lZb%CYZ$+=vFpVlU}`x6ZOR{^x+gfJ}q=lQ^4K1FyY(a^RC4z`Gwssq`ISH z33ySxFK9jmM~s*cLOjdAK!Lx`B2n(N(k}^pr*81{*g=Ed8BAWjjBEUnEbnvpD+%ez z5jsh9eN9MRFcH FkHv11(fI=N~9{v`m^ zUMcfvaj9@4U2$vYBV}2O+4+nQ3as;Mx!ph!T48!V-&ex&qydr%DYMj?xI|B!8$HjR zwP#zbs;js4%W5W*PF%$c$37me=c_>Qaj+AwP_8DA^7@;ulA~|wA{wWy(}CVRQG;sQ zmPYg5vYuD2sABUQl*G`OExaxMekJH)?OS!d!r9xVu#5M%lCrYRx}{sj9DZa->3J!q z;3LQKmyw?Y3^X2m#tpBo?}lQtQdj?m*F8n7IcsgI*oQmCm(^k*df%UWD`UIVLpe>R zC)jh3rXvBV_tdBp-D0P7nY#r#MMcCPZvaldLZ>hblnc5!<}~4;9`MacU~ys&&IBc2 z!o(~FF? )sm3aKST}Yi&y5>(|#uZVmCGZK)d|$qEd#HrE`!*K1X@J z#}y0PWko(%H}A*GY%zSRs>zGGH)aMlPfQME`Q=Fy8GCp4XF}I^*5}f+@|M%6f-KgA zkh{^AC$m!}#)Id}S=n|O%Jk|%=X$JXtV0B7 F@n zM8#drCMTwfU&_SYOucY7x0~d6>@E>Pjwhln|G}1X{nWW~g|(I{uNL)G3mJD9ehKrL zeOJz8$A%bpQs~@zmMFYObk}G#-v6nJk<-KODUqIwRi~Gwd_{DX&-p7)Y^Tp}y6)>8 z>7K(0Fo9P`a269ctVRE9MZMM*udTC_6J9VpIz1%=PgxAuQ&4)m>q-&-(qenmo1>Ex z&X_~!I+^aR3}lb|*yY%S%1r_V_-Tdx@@q6*1K+1 @;pS~yh|Hh9K&CK=izmt8qk`+3uvyT7|T5gmjd7i$c Zmw|?ZY2;Y!t z C9Cz3fE2)%4Jmc4n z4q99=9h?ou?U}$gSlap$eK&UzSb(wDq+;%bePrAf^cPeH5^FF{TrH9&k9Of~an- zq$W)EDsOt0$+NPIpx(`Hj(Mr R%C(S~9FUG~@WVtF|)BQHa^h^?* zcmA_;?X$_tDTJ@TW|#4qO>#s3ORl1$DIOzs)SWJaOuM(08?htVqN~T9*lxvu2k1K* z*6_fAth#cSc|E>xy%(u-i?`V?BDP6~xu%O|#eLl#)ow**nRTxDDvJjXt{!$-_BtrP z=E%?!3>e&(_Zs`o0wCsM;p9k;K2u9%Fz*n3x >Zi+l2&Z?Q0O_(w^AQSs0ssyq6AIy#MN# zYb$F#-yPiNgD6(|TU24Z1r2YdajQ?f1I#z#&cCW#%apr_&zn9mTg!M{uGu~ss$<)` z?X;QQ?UpcX-^|QUNcnm|-RzpGl~ab7)diLIprzJq5tr=h=y!*_OpEUC>Lts;wdJuC zIOt6moB!!5Th1W$s$OkijH0!JFH1aOGI1@oKv`~g$V=aB3MC~QL!1lyNGsV$$060m zbW}f2S6e7OE9P75Ts>sYos(btC^Q{gkESm5w|-II;ayIPZw-G#8vZKi=)^&v&Y`cG zY-APDjd6C`SdaF70D7TGWPqCT$atXKyb<#YjdXCx{$HWp1y*;D)n5dnW>*N^jrXbb zh(C^!dEnw|orj57k4yI-Ij#=IyL;BW>5M*LOs#&vizu?YCzRJwbIOCUl*r*(IFcjz z5o65(VZ8W&?g|*&caG?L?oHN!jv)6Van4a0$**R)vvwm7kaMmew!qVyUker?h z&i~cQxrW7 6y5`HwJMZCn-{*M$e)mgJ6nP(7 z8U1bM-p=lBqjc$VeBh1Gp~lY%^&fX?8JL#O(UGwKX!u+C!KhYdu0e(T_dq=q2L(i5 zF^_zPS@%oNSwCn!%`5I1NQzJD4rbs_Y{gq;cktnHy%oysbNgD4sl#=TZ= 6F$%dc56Lcc)NWJ&NL1-+gSy@AgLN+Qz z(fE)!J0>Y3V+SV4d>Vn=$f@W%&}Nl^4(> !7Uv1W^RjXKzjs`HY02dj!XapInO@C`LU?PUef yXRapXEt?F52Fx?u@0 ze%xQ&+{mZJK2JjMGabkUb0dUw*Y%t@HP#gcM8%gLmY&x#B!Q2Bmg8F>vqwVh1&Mrv z#dFU!XOD>bru#E9FwrGO7fG?Ks9?h>qV*7k2lU1ih>-yBg=;-(pdZlIxVrwH<9-D> z1PLGmxU60P02YRP#->dqh7D{8+GYYB4|v-f`VG{|IMa{6Mr_^?m+95 xw zX!P^%2wKBgByIL~cGcj{+OuaTA`;#kd#tEZ`MLu)KN09T4Zh?`jZJX#>%fo&!Wm0K zlnD^45FSXqcu`|QzJ>0%VMA!1M{^n$1#!NG9UUEW_4I^IP5TIBEa<(n3&a{R`%avg z$D^JN3%jAIf|?WwC7Md5)*z&)Xv(k7pG@|_O()2jf9splpPwGglp}2-ilajyE0L~R z3WK=7S)>{<7(5guHqJcGp4en}+o$4rf`}{Xv$qtUc=NIZ>54b~+zuTgz96CD+;K!N zkzo_yI@*r_f30Z0sH(~lBA* |5lpBR_$$(8EVM|;%Nr4>)?T+aLJy3{);dwEOeRam6b)?t8V!#LmO-5N zVr*)->-7s5A)@LgFk)vq;F&w^$L0Frw#D!GlYSNL6GbNbLbgPqu+MTcvpry+*lj5j zSTO3s1+jaS0&~T5_7{lb-K`&lqgdYVDR`5o6ZTnlec!%IC^>v7V;h^I`aqCPsB}^o z9l1!;l)*gjXCb2v?x?}N=8&pTx?+C# K7;c!szBS1PuA`yBmgGc6_ zo|e1W?0~8+B#Cgbbdfj@#jKa$Y-!N7h@q)H!q4%MIpAiEsZ{0f9A6bG4?3-7>C%QH z3(#~x8k$cIKbOR78GdESm7&K%$*kS;0om4XU+l09I0(Si@5YAJM`O|R4|mD~fwLuC z72TIN1>Mt&SH!MGjfceuW7dJ#yxCJ*bGdAgWRl839yQt}q6*yt(DzIv9@I1*D>lVg z$$1oJY+*5S#tr$_DG+doPSEFnkF0KSsB#!DNUJ8$8(j`SnxIa4Nru(}s{jKM#1N9z zA>odZHjPzWjIi#t>Gan9@wj8e=t1|5md8Q}6&|b+n7Qm%o=xy%vCEe^9L?!e^OJKm zPBYk-^|zLot2rOkp{PAL==E&lpzv_@Pf3YsiqUY-<4@zog+9-Q7rE4JzUH=5`>}ZJ zs++Dj%eHlNG#Y&0J?2RP-n`aWt$yoH@Aagf#gkSQ)(mAykGJ!up~V>kK^Hr8jy4uq zucKImwAtyEYCSTy< nl8#l z?qm*5_GXqgrerRj4yI(L9+qYh5FTq)nU+orc}bz5hA4fgyIP{5h?Zb|KYy82lgZ^< zYlicr?^slPInbJup!aEI(15~N-xpHlIO=bc@hsgdW0{rlx%D7|3*gp!!{PJP`j&>E z2~c31X?T&?pwLVA$ARCI=QewoB@n14+*9{_e*CsOmzSJqTI$F^1-x+FdTJ 4K9L&F4d3p z6m=`dOQ`7f?Yw?fEVUrDYxs50y^6gqyQ7V@Jak@>xZtx84=x*|Uu!?>4DvvC+-2`R zZs5}YzTwQibFWHV{yltN9&f>!L(-IL%e*m@fbZQx8r_M}69}~IL8_^&xJ>sst|qLp zi>lK!rQe%mU1a0{Hf6>|Y|3Z0Y6GeOz e0G2eMzeUG zM~@AYZzN&GOEVei?-#PZFSnV$v@4>cVx~%Re&ek~8Bm64%74ru1*f~NG1 e~E2?R{gsIX%sU6#ZQ1M$H}ji86y^t z53NSkG6e{Ol|yhND}0!etVo(vA3Dr1anm8RX>`h5r&8L_mt6^?8_?W@f1`blL0jAo zLL>j1@Krr8gh20}?Ju563YA8(tZ*on%6Gn0)rN85a3be1zF)f0OmReb-x +H2~D>PSz0=KHUMl=Mr` zfD_WZ5a1$oF>Il&o5@Wg?^snJe_A8+h7yC+{-u@;qnS-(E1X^s`%Aw72mpwR (VH__~^iq%diw@oIJlcPh$A%}BFMPbaK2nA% z?VX~MhuQm?tus$t$}vO2qvDWa)NV)RovG`{%2p9M@KE#-`j}2~jcFI(PK5~0^z||> z;P#tHx(xL)AF=slxuUkQpbV(qKHA8Rryp?m5}xQdZ4|kiaaPIhU~QMB@@Eobguo+` zg!^xpjaH_# zxOamqpZZqXJ;dS|DpbAm>AqP-Z_i0@W>lT=m)%QtriC;SlvTnhoIoj7e(6#VX$gC( z`y>^eoh9T$Ow6@oS*5{gdngCfHxnssJuyCs fa-O&8^SyK7f>o&Bs>xJ37lQJUooho;Nyi;Z017k7Evo&3B(qk)zT0-H) z-2=9Ck}&HJv=X|jNmgtWz|mYK%sSd6Tm*uGA9g5IW{!uhAYD3Cr$T;1P@(`fF*2v* zr0O8D!<*gI#Z{Rg);XI^l6~K;SPK-*G9)sja(vp` zV)hTYUQ6x14cJIVWs@7kK2wdwlO0mPV?4=WZ}5-h#aT*pl@WFCq8aens}SseYTIZp z`L2jjdlj_Vq#5&+X}D30pgIh1Rk;4gESLq? Qqf&u+qcB5in}IAyc+FU3%8sfbaL9#To)P5GnzGj%HLQ}^WS9Uac4)DrmSz_c zsCAshKgr1K>Ql)tMlv-q-!oFm#j`a7=+P`#bWkw`S>=&XJ?Ru{q$$fFl!VSLJe{!1 zF%lHkpztr!T$OZ<34 W6kR6!<;;@xw*(ZFim4aoe2LBQ)?T$p4Z=U=qbBhy224D zm2lrc?;T1@Vw9%}X2Y#w0SU0Y;y3Slc^s73pRVIbI4!iz;mctGOU1M&Sy{SdG=Gv- zIMp+;QepH_$ur;@!j?oyZNAd|b!Lc jExfS%O1*%F%h&u#6&ee68EUMSbVI-}#c z@v55a*g8QSwtcNQTJ@>)WTtc0B5Ucvuo5bL;1h}@QeYZFN|>y&6cZPBYPzs$d*dvE zr9>F2RQ?Kfo4bz=CtKl|b-ZuI%H7P*3Sonl{)h6@goB(wP>VYK$_g%{I^EDBfZs$( z3bPDFlQlD(Y-+86tza!x<@U4mA@(=*Ua94%%OV%N;ILVYdY>aE<^aMWIHVBwricTM zPWOyUA+gbt5f{-&jy^4HVdywp0(0gg48q#dCBsn>UU!p5`jE+{)0k}pT-hl$ZT2r_ z6I0}2( I7Ya_(02ov4q|WaJ0MgZr_rx7+@DQFy!r#d~3=qp+Wx2qbDaTKg>8 z0Ep+2Q~ <8b_yTRtQu9x>OLlM5)NJot^T<@>gnlK7t#MdOpQ z5i8{|=_L0Ynrh+cHz1}4567^&_wH~bF&ig; gPFqt4U z+Wz&Q8%Wd?qvZs@$-V@7maCZ1DxS?SpppK@?&?mUj;Yf>Q?@lFL2#^D*@~co3WT1x zoUpaV7rL5YJj2(i(!8)b5U~6^cGY>j+8a@b%G0BX_s~^;lWYx=c4DjXsu+7XcM%bG zzgqrj=xV%U{`w(3Colb^o$OPzDX^aHdKK%9%NdSmCA9MB+de}2{v-Pl`%HN4vEsA( z)xxtaLWO -|P()CNQ1UUC56tYOmaP{ZLd`9%pg!G3d@5+q3!bUY+{pW!CfZmYa zO?OO}mQ~N@5ZOK^<8R&z3pRAO9G<10*ID~5M0tG6;)a4NFQu #QJ7I`MyN#@ZIXtp zktuN8k2QD|H^H=k{wybN0m1qeelxH7($O&vwqc^SpP{F(#~vTGd-KX;RxEm q27W2kVeXV!J@S^zDe7dYzUk7k}z^ixmkGg EIvF<#QzRz)B) z&uUPpRX~Hl%JOH%j1+Wh &`NGMPemR`S&zul%H{t5+j#23E$|$&mT5FOLvVYMaYJY z7E%CwixIs;fY9s138`u;pK!=RBWu6)DQi2yy=>^|) +sDArKr zF^01TF_Md)&84Hqaj*sC^ZyOJwTPu|qzwF;{}U}Q!IZNwx3#RghCF(d# pqaQL04*0S;gO(0;a0oZ6=Do zJQ*{S{yc8UE7%;I`agX_>s^&4J;&TEVF<$#AlKoGlDj~=a(pXKN_!vIRjFuCT`>OC zG(xifxODhaHA!K%jPPuQqv+cz!8N^dWjLCwXUZgTBh&^`J$V#7HGN^%ACWgQi64AH zK-7G)SE^_C-eGIBly1W=gZe8~gp&Z{0lE_-*m;$e14+RwvauiPf&^-RAHP9Ii+!zk z_Tsy5GMti=!F=;b^6v8_tvPk4YVCUaNQ17hm$?=|t?Xu*GPh;+(1bSH@rz9<_(Bu* zEB}hmwS<4|i=rI`3bp4#>O6n15j|Au*dzbd zeIJjlGA(G;KldL|bWZZyzXTw@>Q#>sq-Szj)CRenNsP~;P?QaF^LRnG16swxt(>E2 ztY0ZzTTn|+UO#6wiv%`Zzxe>@-*N;UXiJkgZzxanCk0G4Zkp{RyAZw{KJF&VE*&ed zEvikS2)AVENJrk0vYp&wsRX=4=3c_6*;Dxz%mE4h{VbbNcv0P=yH6Hg 9|T*=7x&PA^^TMWKAu)o>V@mu@AB! zf1XL9gD0a#OLJ~5(Ogn|cxf}ydQ^-%S>0PT&8wA;L=8vuQ;JP7!=5LF;Cj#Ki2Ji< z-;!=8(+O$qbr@bpKB?Awb8$tkiKouoPUTe#Qrzzk#o5K4*;-x9*fPI*>yvskr^B|4 z$WS5`XjjvcPF#r-(*d|$D26H;d`QTjyk*I?&5&0cp_-5QyVsastbM1L@~_j+N7^cW zwoh}8WBMG?t5d`9`N5@)sg-Lb{D5J3X;2)PtAObI$@!x*%bvp)*I`lC7P?su1r3gF zt L*`R%*b=)rmf(Qhbn|!%8+00tx zh^A>!EJ3V)uzBx@dS6XXLzKCGa>76lh6$NKnqatvAus(oL)?ZtuQU`?R+6hbUUG7) zrG~#u$rg1m+qGpVKo;ywq0+4hW^Y@CtQ4Zx2q;N63yLqFRwNoH-AjZ(3#lI9B9m6y zHl{8Si#Tpy?ArMm25<1~6S2}0^iX9)W+u_lFL4e^_xZ?>uX2^=8j-Bh{UzEAM^BIC zD+yJ)hNPTI5noj!Y U@I zFclLhh4M%6I_rl#_Y3tPn~f=rE7zo4?~cA32Lg&Tc0W9zZwq>UAo0ZZRSCI!MBg1Y zJ&wftp3NH#mQJF)#C_X3yl`}MiXc76lGVs8m0{B5Kwo1j{jlmL*e6a*X^u+tV1fFL z>{A|u LHXj$gA&soobDfk#R5Spkl7&h*{TOZN7BU-o#2= zdtlGZN=FDGAd;fig0NaBiF?@JR!tV-7Q{`1JWC(MY= %3bx zyta66oL-m#^*p`T&gA1$#Q#UOXU20)F8<;g-O92;F)ecvMxUgli^Vd;f~uHjm?fqT z-JYeC=u;AZ2VYns+PH(^h8)@Zg*-SKC?TXH5dALrT`H;f!O>#+Z;)aNn-VqbC%T^% z8M7>SQF+}mE7n>k)o!Gr;+FY?#*;mVH1ONfN?$)7+43;%g=wfjOpe6*+^9JwJ@^Kr zv&Z5gK8d|@`LQk>r3|mNqj!eWUyb}+cJ>1lFFpH=Z2={)%#<6bE;Xsq$^@{u6@gP9 zRS>@D-`$)JA-hN#|7>dQRH1KLi2CAPg*se4{2}?~ZJsTTPI~{x59?-&FUZR__lj7| zSFyKe$MKmhvAt WwHafVKmd7Q|p8=VXZ3ubDiHB1Tui%IDd~U)ZY}{Tn!J zp Qp9SWzu+VZ!WP z*dOt0NKyBx(Ww931hIm}`CQ-FMRq8stUlJBtWxDfLnSdbb1fPXA)7GT%Od$nwU`*% zM9V)F`}oj`AjNKod*S;=syyO%s#=D>Mo#+8?^dxOyX-mInqEgwh*^g=WU)W|#lHRD zrZ58UN-c}rpRWiKJ{L_ve&VY90@d!lCbbiIB&rY!)f}vq5Q}MkEA^R^?`u2H{^_y6 zL(sE85(@+Epwx=M_&dz9UHP4(yZ>t^L&-#0&%>LyU=I(=Yg?SRZMmOUYu9^yxQ4hM zsfK^*wi3jH1|kWp;{V&PTl~9{5D!v_7`-K^N&L^ R@VQ(-? G63qMmj1*%%mJ?!cQq^|_p$ ztvF 2YLkWxSq<$dI4Jl!_Sq zO2}Y45mo$6P?AWEEBiJyX86ky)0B4G*l*xI3-ZBzs%iB+kpxt Navktfo(%cU^|c@LR9-p?M6S@A|>t)Dop;_iIU zd1EnqLCCr%O#Vfv6Fy1$)|RuBf9wfcTkR~zNF3Ur??v$I={u5gixZ}yugvd%Xp#AR zy07%?;sQFpKopi$?4vk1AjDwNd3OzTbO5|xfpQH!q+WJT j;- zhPw~ZViyRsoRP7y_`O2kMyuYYZG@Q6Cd!r{27@dROL_$5In;jbM_W(G=cmN=%zhMl z9@uWn!VL#ZE4yPRwna`tLVVUswR)ye^()))iMJ0;S>{&huW+M&BBW?S$a7Ou7U~>V zcYMx=G0&U8?juSH3JO{n*$z<&35h-y@B@+`Iy$=2b#z2TM34bki1h{*=5OPIrLa9< zA>EVY|MS)Vqi_Ua-vT!x3xdgKydN)^?J%O|&X;rxcq6DF@Z;ZD1(9rU loTHa1i^(X#*mfb=p?F+!9qz*K90f1lNHR|4tNryD`E>AP!R0|AwPO)0zjYierD z55`h$Hri90o4I4yq)=|UNdjYHkjKWx(goa^2L}g{{QpfkM&iaJYi&)N#QU6$fRGSU zT0z0QKLpXl)D#^Vj-HOL*HsVPzavq2dHEL`Kyg!3YIQX;KR>^Pl~sOcXV&el)9vl; zQ!l)*sEiC^vn}a^Q{cZ%*vHcV&RV3TrQxJ8YJD{|rG`)`mNS|wl-WN#RMyp%`}Pe^ z)c;` 55y2;7O7-E66Xy*0^nPi%im!1&|0rxEL%eJj$yU+M~L49Ng2M3IL z?I~kp-*K3AN7OX*2GiM$rDbGJdYJ5apSl%T@u)aBlG~h*ege49mTSz13Pn8tjSKG#LWqviVc3Yr4{2uX=J1 z#(!Z(N@zA(B!2Nv6f@iKo~3ixJTuUifUB;qj_bH={}k|vxiuj46D~&dU|g%5loY)6 zQsqwDQI5d5_oe;idRvz7<0=?W#E*sho+QaMKX#L3nRoKSNp??4a%ltvGEe49&OC7O z!+ZqOP=bt?7HfhHOgtFgr>5ln-p>r6uRnl2xr5QTq)l@*RaFNqJ@2+4CO>Ff-Ok4~ zYb 2Mv7>MG8N2JL>J;A*(U&h@=vY{2KO-CmV|xA~fF2fn!hWQYjn8*UcP@qpFk$vA5a64N?LC94!Z_7Oa?I_Zc^(s}GDxJrk1fr(<<+PStRN|Yq zq!7XFiQ-wy=0&eYKr}L=4cJ^-+Sr&(W%0ew-^9Uz4JQ~#^Xuz!=H?~Ba*5~(zOOX{ zYoN@lAr?jo=uaPu6&lc^8Ta4jFC24@*!(|yAe!wq%3oh3zbUG}bjQ0^s^{0@dYbq3 zI30WknR^xxYug_fhMJ^15|Xr&7dB8yZ1WdVT?!#xCi%506^B(_M+BS z!QP%lPfyPyhi4o7l$n%-0pWJBHdv|E;8Ho}=vmpV;R%#qvPC%xBZ|g}gM%82^k6^f zKoh}2LOIpPD@j0^|4Qg0e _n~31r^$Bw=D=YUiXKE;3$B=1TeE z2QrOs&f-ds#T%3P$*aKKKEy(sBu(|z&h9cHt_Rqjc=0N{BE&EwrB53dtPDIxS2# z>%N4Dl8dYB?81VCzW!!FJp6clI;SN@CKzZ-wqKZ;X_%O7djUo J%xG2=>hL03hb)B(l>P7i6;8clmWW|v|BOanKVf)E&Tc7AB4>p zqa!1RV3!q4V6ozk415qiPEW&pPZwTW?px(0YV&S2p7x{-6q#8jdRyybWN@NDf`Nke zBf9LPNJId;QvBv}P;%}Y6(1j8YqdZr5^bWiB3S1f9qS10^P~I`v^*OR;MbrXuFooW zklzQI^uy*TF!&NHf-5U4KW5*>PnO0fC#fkZ_lWJsJ3a5 3#HqjB8>4NeR@KCtg8>_xc2{yt#er7gIuk(_T{AMA#npP#Qhba0ro zISWh9p1Tz|31E}vQKLs@?yeN^U*( tn zejc9q gQoR{AV#nlJftKhe{ zH?eSkL6W0?9&1YAis=4jTKM(+!x2t=7ATtge0Nl_!%S;K?cXX$aBkQcs0w=Zzp_XL z1<+jc%>@LxV|0sWCra;2loFUtWsQDf>Fg!6@9YCRCqx*iV87g;ASkd>mX?*_U$c99 zddlSpW{8rp7TWoZ*S}P}<8zo9YNf^L;HyE3EKs=90ryCm*5mKH!(X0758-RW1n%P( zy6Qj?pg=)@&c?eFg)Ddr)*3BURaL _ _uFCwgr4|VKVN%%f5OVz s#KZze zt7KRm6#nTA=fc=~*P1>$pQ5=rt@U#C!K!(#(C#{k6#wBP8c1w%-Mw%I43aF*!wg-o zlcJXtiOpc79Ze>Yxn)|XPFe6Zb~axU1`3kI_kQ+c_st>r6?O2g^W(Y&4)ap##Sd&% z&2v19g~`#;6OI2Vq7?DIK*H_@U#lc*I?o#Dq53Q-Ik`aLn}ozZ9vECg+sql_dOae_ z2mZY&UE&!g+uPrQ;0_}rB04)zc@Tio88*ZhlHtG8+)IJHQ4tX%0vt2C!t3=*hH!T% zt`wx;00F;yhE)2AlsOYkKm)Y1DM}6wDA@VEpiv3m#BGhvx5j4XTfo6XTovVyO4rg# z;RWle0<~9YMBfJ}aAZN`?K_RZyXMhB846N5Iu)6l#(DzB9#=WRCH clf;*!k`@ae+7?C=Jkkl;xhZ)-MLfXDk*u;b$= zX|RcEmh;h_`|$3)(Ds66r$nTCL3;8M^c5WCs205r?+c+Zx5ImNZQ&me5to-=>5MwO zD@*+r*p{xs2XA2_#_dr0N9XCQJ1?n*uLG=q>lnzP?F1QY3g plYX=+=uYC3>kvz{sau~0NTj)L3Y2lb56KNIL+5SUPjp+08b*tV`L6672 zx~!;!;kRzC6L>P;c#ZLc`oK5-cq3&Q{v4jp#gD!nzrr!lcJ6bx|I;?99JR>XGK-JZ zS;zByHlc@| qW~+5w>(L;1Ifr)RiOH- zlo!^vgT_bo8Ad$qb;>Ik2vLLi%$Kb2pjiS4DTaxv0^5m18W>)j9*Nrud#b_@@JX3) z-raeUGx2@FrHXYn21i>x7&FaI#bV@2oZ+rG*F>z(i WF23Mh zHW~5sZe7-b_T5P=_XlIw)1Ckddh(z C6gBrE`o@ebVk0reZSeUwN0&ve)S z5GIgw^swb6k|1?Q;tG`;4Dzq#fCCRPa;^Rj-35J>fcb>H9ELa93=XW>DG1=CexmG$ zioa)o@!bhD>H&eh6_S?%<{3D?j)@2mnPU$pUKB~-(P#pz%Izj61RQ&U{mAlDJU34d z0mMI?+b#NEue1jWOAXI4W1*w-IciE-6BAX9{ogIrLBXCI0VU^Zz5jar2n%?ytCj;} zeiKmHw0VZ|8I0V%qbo&@6@pWwMFjAp=M}?8pMHLe>g>M;r~_<5-F8Qq;Ev xqU zfzTQ~t^Uyl=XB-YVssXDMzVwg<@~Kzb=fw6Rhe%qU(o +;6oa(Ws!BMy--Qo?EEZN^K<51XdE!f88ljj2V@_e|W7E$A` zKfboK?uI?AzgMt-?7hJHJQ(0Q3{tB=)Y^(`uN lKb6 8G&|gW?yviHrZ7?-;L;n<@3pE5e&(eJTr)d`iT-A07Vm zS@_(-sqOvndHwE;qiy@1=+f&C)OZjBGh<=J@?sn|{!Q#hplRb5zr;N`>z3)z=-WEm zflNYeO;&+yHdsq3T{A1okY86qxxj1{306brzI-2j&x%xu{=NJLq%sR7_nwiPuPt|x zMCSZIg+pPDAk?eu_bOGQWDtqlV@Z+tbUkIrHGDnb@Duk>dYe%&Whn%EDw9Lb5|gnD zsmnKo6ZeFlUfYoux>(rTIfs3noP+-E3cFUZ&2gX_T=<_=aPYZ1-T=Bu5#Y!H`3)RX zAvY&8`{HGfRU;P8rLWJ6i!4rAqb|r7#EwCb;% &@tTTVZx;g_U$Gbj8cEoy~r@NX_9|#rHbK0da-J1d^q) zum4eDNo=3l5HG!3gVwWH(Lh^#KKrkkWu-QQLjC)%-DoJWLRl|GPIm8o5@sm}cl!+; z$LBGpGQR(KKKxN6c4EJqUl-@)m)rf$!*{W=&gqXQ2c4arzndRd0Qy^CL``zJ>VAa& zYV*=3Abk_17n+3u3f9KPsOku)?(^oqf^|}bk6xH(tNl0VC0^wj^kGY4S_I&`>UZk) zc4jlr%KD-22Q#kO*yMI|_@dtZocYD?K9oZEwofJn%hUmIrJ ;%svrDPM=RV78Ha&8*6e8>GjkSC?IwjZVW}`fSYF}-= zYma7kn98G#SRQWhA0x^3W~3sC+p_+M0~Bh^j-F;Qnu@WZNi8%6gk1=%t!ixyCQo0Q z3>>O^<&!{$cK>&1Eg@$OmfrC8cDl0e6D1s{doKz2>>*HLjR~{IzW)eFB88a1g#<|} zgxk3$5eaz-f*OYZZ$|ZB*AiedhvqsFGwtYkp|MqUp#wsW#F&G5{4%#|ioMpwI3_vD z)@jc6?VZFFa2>J0{K!32%S zKwc-!(1K0)Ip?RX@Ki3g@AI}pCM3M!)ux6gYjn=E{3ay;Jj0XUbX1QZSfdw{%zhhq z`ySi)Az$_L81eAj^+V(V`e*KwS0TS;cE#BQL-VfjwuZ0pZ Sbu#7gGXMEJmv)w{?rXf>OPvLD`o?%|wd~x2CO4(h++>2Pm zQvx9be6#qb(a4qbu8vtex|+E8#p6J L_8TERe(5&{Uk?pB_dYs|3^ Nag6ZH+k`G8X9}w zjQ3sae&XWOYHeMh!Iqkgz8lg7;nXlZqw)34jc#rS>H1XeM@v#=qsff#evq!d=f3JL z8}9OhgHWzv?~o%SiI)>RP*}C^lfS0KbGg-}_fNFd6I7NDKlDtV<(m#~cXXt4Yu1!2 z$1=|oU%@8{YX6rlVyc)Q8}-1%q+LU;QQKOk=;7S5-Pa!7>GVq9@RzcN`L?@X&UiYX zX%er?Ha7-?K`W!lveq)6sF&*+*!pUEgp!jL2nO;iezDWLZ{2pIIh&i@07%o6l!@}X zyEA{OFF67!1#a}>9Yasn-R_WSa7t$92=>4RrtN44>GJi&=k!eAX)-(YeiC_ob}tcw z6^1DID%g?e3#cwZ;G;R)+@P#L;82O1Em+4ct3L~W)x~Yl^X=rzrH3KBmL*OOe5{_Z z0_a86EbYJ$FtbjucYy8swy&Tw5|2l)rrZ4xTBhsc$7Z<$k*$ZwZD)I+0JJrqZ{}vF zd;}11gY8Y?Ugcb_BGJy#mYygp)^-MNIU)=rGrzr{IV0Y njBk5dS~D*M6EU;M z%Q@9hY^)+DcWhi~II+vfxa?jAu6u*0H$$AU5wcC01+Bm&KUw3aJ8=`!qMH#B_qk1M z^Ot?bk9X@5MdjAS4wALNqrSiWSn|J96>eHxs{IVmSvuRp9Y)qVd=hf~LC9|BR!27_ z75FL%V;Lo}JFot0Qxi93;ETeb>c!<@ow*er4^3)Y!`;)Qp3aS6ZhybrSFvc1^#Mo5 z>MkcJ!j{H*KUu=+BaS9IIWaN*rUxO9?&*W0*quxRp^UW`k{plbu>K%cgQt5r@DzrZ zdko~imH#kDKAadicxYnk>@H4pG*)?@fv2gxUZ~4*o>bngo}RGOy1(z;K(nK!6dK8g zg @j>D_# zP6L9%zzZh_BG#Ez;-e#waD2S4C4To6@vV^F^w9~f``y}a8s(tTKdy`jyszc=*&W_( zd-ec}Qx_S;Rk>WEopzlThoKaRIF!9xaqoG)XN6uiu-A1q+h?`@9-^Ud-v`VaXnHy> z!i*RcbaGZcju2O8ZJQXcS-d&sSRA$UCbh|IaW&V$ad8>+wAA7{V`#U$cx-zp&d~MQ zp(1%3X4V$at>zVo*X;i}kfvV!{$%3!tjT4LrSo@}q$Gzu%!6?X_oIu5g<$xOJT0KE zEUbcsf#S0RU55>Qi9)?&*Zx4@oQmz5c1MP`x~Nr@r1gaH+!JeV>reKB3PQ~eOQvdg zmG8 z0BJeQcAJLP^Hna(?%H@%+d*~qN?KlVb>`M)M>bmqs=?DB+{a@VpDu84)n;XF=!J 9C0>v#_e1 D<)G(PpLz4!%A~S0}tUD$&Xgz6kIrtLUGm&Fyi!r=@U; z(SL}3pGn9t+w&Ag`5|Od7(TM%ePZloNr0b7Mms$^{NVc&F}JM9^1S+D$kpgDg)<6i z{&`ph8^%_g&QK}k;yPKNLaU=J5_D8fUs>&Z1HAMervjR~{XLwX=7CgH&O*`~eK$r9 zfyT)T*jb+=%YB;CJ|*yeep@VBX!PV~1v`7E&ar7XX&J{At;G!yQDj4#;(=tAbI9#; zmHN_nngOyMuea&0Gd@#&a`UW|!MyyfX5`#XA3>20BYx0xlcf)kLB;a)K7#sB6Rx(` zACBM1>w(w42%$Da00-cJ0I%@}o>TqTCrw=sH}Y|Pzz Sg_>btH(NZ5Uw(+RR|GhIsN{^MW?4|y*#iGtRo~Z-i{FU*2Zb}l54DWq zrfO(q^r%`V+|9Oh+3ADLV>q|<;wf?QpWX9XSyP2vv#I_W9hWr$ud>p(pOwA{fdIsvU`cU}bw-V?hepc1@*AAmLT4I(Gd6pNFlzP_xCBYzqF>01hB z>9R_Ps61!ipV%vJmq!nHm^xE2aoJmbFR$Oh9W4l)aA}=$f8m*J4$2vduW!$4h;MzJ zos|(wcny&wL&m4v;z{+jCfcHhjkLmw4@o{QM3&hS98H81(s2F)eLvbN1E>8uqpgMc zBmD)tg70GxYI@qTvpSLc>A7JT-@5dW_*RV=KgGzXgJXD~ns 2-6&s*<9GOg88 zR#r%Xe+Gnr_W3-AY@R H zhvKKrPR17ti}-b&{MgP~>?wpOC)#5tJxD@Sh;|)+ oRNnPkFuwM}`3M@&cEdnBJ2NBM$TLJp z$j@i&_hkt0mOZIu7T>rP6qzmfp^K8}P%j`vef {6bbn8_|EP)~{WYXuU`;_y zv^(%Cwj)yY>Hcbw)ZOBY Cj{DDNWyK+OR2$RZha}tw$LjJ8Qek`_8Nl=y&ho%S|peue+Tb8o1o!A<)Cg z6;6xIJdGUG%|<;4$+LcQ>MtvethW;<#?2AQ$bTanqLMmb$;uuq!i_u1oz_4^CA6CD >0~KXCMK?64`qzJYUu_#fDT@5LBWwaZ+8 84fpBV`84=vY2 nbYny2}C6is2s8S{KS+XlaCYg1g(^wX7q zKgLPfD55twY83hChoMO`xi0Z;VfD}2*uvcQ6mAae$gMtjXgPiQ$4JdzHh_i~c=8mC z!^e$9eoLAC-Dz=GQ%orWJWKo|6~>)~?0T#PL|)?={T}ujJY3a?n~gO)4UxgMQ|tG4 zTrtxqwGCYOQD!|e>4~;av-V5Z(N{TPY`*TB)KUlj$GaFfQ`5t107DC#)1B&Yx1`@r z5sytWZVEl`0Gj7+67VH#dmi&{1O>4EzU`Kly4>I^1rIqq133Gs6&Axu*g_8p$IR &>F_7i?*O(>f!(+x+fM8}K#0?wP~!%-NzUvOHTa;?&VJeBOiz!W^_k4$r0> zBhyZ;*PV!2!aV^^XPK-+wNLkK3ybd8!{Kgs4fazeK1w(`3_5+`9EZ3wb2tY(=GJr* zPMWvhDGlBk<(MY78+cNa6Ri>nI0frX;J4Z?P4xBk2dmrhEXge_;v9j{I;}euw0Gk= zICW;?m~DLI^4Y(pomnmp1O3$#f9=f7oEblWgoTsuh`OD|`8PfGec!gnO?_T;&LU_9 zzelk@A08E>qY6x9r%GAM5Qud7GM(|XBqism U})H>4Ns+SS=OG z^m=LkgRYA9Sit3`n9Nw<85(a`aj~7-xsB1fUm#Jmx2i_V+zQcPeO?2{*pyzCW_LVW zn8&*D#^L_^AsFgw=*Gj nE%N+BWUv+@qUBDw%#&dz%) zVr-4ZS~FitIJ8;>IAmFUJCpf1jpyCPqAYgW BsXpOr zdoGT7hp|=&_*m$_cot_)o()q6ougupB;P!QZK|VHQjC%_%w{()>Y7JQZ=QO|gGcXt z^s6JBmkJ@`Y&F~Y;5Gr7k4LE&I`E W*pvK3MT;%I>O~^KAc8yzWYIoiChFO*;?AfjKSY!qT<=~pahp= zczeU6q?tZ|TKGz7>+JP>L67e(|2V0A7$iTG%YO-j!2hcL{(sd6{$Fg?|NiQK6xaVQ z{6Cfw{_pLTuH)&tg^9q)4NR&h6g*#E3JND8R!WAMg+*{4B|i$(Wk-Z>1L#-&_gIjQ zS<71f6i@WzD?mr&h5(xiE@@=ve-_?1f!|ECzw$ITDO7(`p()~MVf=eK+0|M-t0@A` zq;WCssia&vEaA6p$5&Fg{e|uMSFecALldi@%NFK1USVl*Or5BB4^B*tm;=HlCLp5a zSq!Z#X@=_SDii1Xg!6-XY6$-}+d}nW(WLDspx+!@*wf}j1fz9Zfiq6{ffJhob2b2S zjL3xKWLZ|MA;&Ce_RFrzThcu29!WZ^emrqjJPH z{HKlU zJJ^NIZff4XT7U~G(eY3E>>Y^05i#rWbv_r@R4>8^OU3!Gtr@>v4d}E1BelyjcO~@v z3x$rrC8hheHqdS8;p0 $JIYPeOnEoql^wU+$(I_$|_y|vzTDDBOkTdQSNRA}{ts>^-AvvB=it-WVdQ(@F5 z3W6Zg6qH_7K)Qf5DFFdN5l|6n3B5}1Ei@4jk*3m1RJziU-a8l|AP_pChnmnKB)}Z} z?sxC3xif3Zn!m}(dE0L9^X$FzDfC5anU^tTNjlR@kKs?fFV6s~F}ll5(l!p@wJe71 z-o4+9EinG8{(9%wYkvuUl2x(}oYdMXUh#bHZE()}iw{L7P0eJNEMEc5xm8}wy}RC5 zIJ=qwx{z -$K007 zSI5Q;k$X$?oXqIuLU9r!6f#nhRgh1dj0<_CM|+d3`mgk-pWZJJ47|g4haGpPCpAeV z*@Xb(2Vdk)5_U1d{pYQqlO42)*=pB?*_g2wVTF;BKRqLK6E|h}k0=;`a_&{U1N)nc zT^y!M&g>p #V?GFhosr&~ TyY!r zqqlR~T&2G_y6z{-U4paYhmU(#1n9_hpPU3$By(l$>>hca;T3C3L`W`o$*L2`E*|$1 z>o%hTF0=+hZ65Hcla9>v+C>t2eisS(vqk6UT+g){bW|eMy`2RlGb4a&vy-r57JW{6 z#~96RS(^1buwJ*@grO-0%hLm}`-qc?p~*nZh4=Mw=!4`7zs87Q+}dm8`K~8#QqC6^ z8rLy$*0qgiuB*(J>uaCfdIF8>j_7qYD6XDN-!;Z =0dWKw#bd%Ylm+U0h-YD`pl(3!LLqr!L!OBKTYBm@wV zA>>U bAe`8*ONE<`kt9%4m^Lj!K?*;$?hLKwz(B~G7F%T s*C06@H$o0U9Fy<51xfpXh+= z1$~3e_A-!}*--=@SN72t Z1yoPL z^lVghV_NSp`rkQSmx&1Z(m2RTV@O!#3@C8fScyP<{X4TR7SA1E&mWOkIxZgYM5OIo z-q{UVjx`Mi*};4A1`i}MDG})**p4g(_N_uETjcWn;HF?!(`Fli;M!6;lm`mg6kPB# zSYJ;r7KkNQ=DX?CAx|zd_4h<} 6nje<*brpODZl z$;r|KyJ-I6y0(@Xl(iW~OTqXR_iueK$C?p8a6q!1d3U5qs7Tz8zc(2BwQL7}d* zoG8~~>Ith^>{jZI+h#Wb z=Os>8JU7vnro}$9KQE;XGi}W;&1k0&ZVJ&dHm*A>O*gE{qv+YAot%Za26i*N_uEez z;pZQmhok%x<5$e>U&H=cAQ41lRzZ)1==MSl?Hjkg^*XTMx^Ivde0{5M)4XrL!Jzp^ zL^qPuZM>(Px{g_jv8D7YEkr&+%Qzi(($cK-TRPTK@Zg`k3XrmO6txo>*VMSp(x%rf zFtXNRzVJYIe(Zw1he-i? S)27wChbR~HMMiQD9wEX7;!_ROr3Iai(O{s>2~js;xFt{j8~=>1tzm?iA #H0I^gnk?Azc5fROEl_`$ASX z7-f0oIlZO%Cg#>cN$4enyU`OevF1xzGF69j&5U@Zp9_tJ%JQ64L&HmZ{!Nq+MO7+3 z^rThJl;@#;qY2E+&5bAkyW}oRqA9r4KTz4Lt<#*>C_t>BIB}!zcS@=){hS YPNkJ|;M`t}>F_VfTCk)!FFq#e!tEnQS@VJF@demX_T@NjT^ZEUZ7( z;iM*SvYG}PT|#RK-9&B(SGbpiVdJ-uxdQm9a4`XK@utjOlh5bESA=h%x6AFbvg4=k zxeDF5@kUkqtd7-FQrLN`%sCWC+I{Q&r0)0t2! Z-TB#c2TlFqg6Y_t&BaE+ W`c_5VK z|DCKysy{VL^WG~pNODigyKA#AJ3jL?Tq6~t8X8#==bimgJ-c+|GO!qig{k5;o@50U zCPneAgFP|6907R|2fvA~;?_xzDO*cw5x}ognKL`-6mxm(t!#65Pb3-u=2dp2vhHwI zqIQLG1pwAmpAF@G<9d8=?EBB= uHjUdE^kva7chxb$-6Mo zxgBvH`-uKeH*mQ18NUnUIR|M^^%~}BnWeg5GWcQY)k^P*tr#hQsSp$u`c^BGtas5A z`a +Uvn=Q5aRRTdkd2c}i{+4hQC{c#(J_s}8dp2nIY;kJe15iJy!g D|GMSmBou!%(9g7F#vJAZ#RR$v>Ib>r z;nRtFF+SA6%!huF!nwE#(_5M#_wqXFla8xbG;OX(i5?VP2>=P&+G;VjH7RrIoDc}H z!k-3aYRa6LP5iQB1m8}{1h&bT1XjkFwJrjCU1Vb1Gnh6 mfmyp*$0jWd zt@0#o#B?koZ1vl`xMxGWD>sI>0q-=uSTu5dqWo88F8nw?$-;a(!mQPdl`JrDnkmeQ z84zs982d6h{AsOAaHbRUyXwjGnRpAnWC^k>vF7W7W1aL7aZSNORqPxv{3z8WEP)>X zeHbSpQ+v~W_}z0wTsgD+>9W+D=1D^J_#yA-mH_vF&!Ar}vAci%unZc>WHn~o@PPki zGX2~kDERY3x0jdcC7!0?_|!OJDvx8%XuMTYKPe&EsnXL=p|oV3OIl%a@JJr^que|Q z7sD@89lper n>L&R4B*gWUe|Q1?m|=ytTnWO;VD>71dm(b~6&2x<_1%F0o0 zvTU-p_)ETN37>G+A~N8o-^EpW+!kN{@HA_FU11oX>053!TLIwm(5oRS1z(s384etp zru<2z)HHye`X&_@Ee6!M^h_DwL|cWY$Tktd-zl});8>j=R;g0t%G_I|03&*;X*f3` zg)h#mI(`5Q4`;9gO*8qz=ndv|b3jhm+ql7e$Dw?%>46_3-EP}sBe=~A=O0bQk-xW8 zNL$E(M6EjsT(mBZ_mXy^-uDMJ5d(m9iflHK<>&EZxd374Mmg2{7&r_w+3! @TKd z>oBnsz>+x9N7s>t5j#$^`7Q*t%y%;N2g$BY^f~(>_VJ>8K*^bh<`t^`EWO^aIH%QA zYw9zSU9z!g^Z6KIh~vbJhRu@{)U5tf^P}%N?A1;aMw4ybT3+BFduHl^rWt&%$dv$5 zKPJl$U4e>+1A5E(#sNK7PYxgyz0WJ_R@xMxt4r*)B|SQvrRWTc%)HC+>TZS;vv|i2 za+M~jxh~;p?j+b>S!_JeO(JEv>0sCHo$8*p%%{*n=j4cP?Pq+eHz (nE<-(KB2 z^c?SLAfc>WEFQQ8PC*SV>YY@beya{74bst0cHXNT81PT?CJjC=_&(Li! WLqiRq+hhL5d@Xc|XIDi6oX&h5p@1z0{QgxU9 zjzcJ22?|u}q^|Wf#4<(lF5qNF*bi$L8|B5t+Z`w8o(+|s3I>fIu5Ww!t@UMoVx?c` zzl!t4a;Xn+KR%5wl`z}EEnurF%ymgXjrPQ|Sur)Hv=KEZY!(5lQu>1L{$-4I*GPUr z_Yrrd>6sa~sL-$P*@A<`)|1aunHE}t8pwF3eL0@rf3}o|(7IbzvpHKq6{n!r#U6)r z|1 Y)TuR*RCL9P2br5jyh+MQMmY23A;hBeqo>GG}&v3kjF9+V4-mgZLc zq=au!nuJZVwj)~R{`4Tn_C)mu=6BH!w9j|LNbnkk&arH#&8Xw%K1S<^g^w=HeW#HK zv*`ODPdd%xF!9Ze2qEED?l=UYo{wdj%mtg=Z2LB#tLfv8&z# __qS5a9Q;_0EODNRTq+MJwy zHIIpfrG9N~kK!s-H`B*gbTiOR U=xFvIuFd~ zDOgxo8p?!WGx5$qf~fOqUb^$%an-~Zhzn5`x@kM$JZRRV8GGE)y)O?ud4fk>C@xb2 zxGrMnf*k({zP%Kif3YGOL?^CBhxBcE+^N3iBbyl^o4QoP?a|= z1A>OG?2DeWW SZldIzS z4~9T?A_+T&)jZulD!97iGk&!IAMwXqf6L=(!-&9iqe)yE?wL_NtZHy{^pdT-=i6I? zYpy#TVe5F` tnO@3}RnTymvDI5q_Bd>KU|XT$95D-Oxj@#-WVxigS)2De zP5(UXaQ^9mG|E%F?S(+Klcga(Z-e6_P~VaO6bOHMDpev3-?+dwmj?Fac(t|!UKD>c zwW>89;q}u*O%#Q(kcME}ev8qJbhDifZNf*kJ`Bhvbf7$8Fmn&>?(e}_i8cv|-e!gv znFtRXOvCr{42m|AX?De1HnO*D+ -%0th`kI&N6EZhc* zmg`3xJ7gsuM>;(?bb>FxQ@RNF*t_$00w`4YuaKq7l*WGr-MEYChW!(n4gC31DYk#B z1T+0v7?lilO~E%`rvP2cd8)zvHT$XEGmWQ4--O>UkAKdQP2*hVvL7+ku+wI_@?Pm1 zL58mXHVJPCaabF9v#4PO#xgDyi>0++No;JGN_6^NfkO1C(3X1J+SsZm&7lxJ&HL>C z-KqTlYs>$S3eGQYYyVlWe!gpd*a0kDR`ne!WSCZ6Rh8ySUfC5b$QiKupC>&HZdR`B zx^^-50Jyl(H!JLA7ffO23wc4oME3ohWyYHcQGG@QMc20zU6$sU_(wkm&t lA%oa`?QANX!>_?bZ*nB*n^bh_Kiq1@%7gs&;gJ z#GmWQ6555f3ylJwmKJ5gN7_tYw86H>fLcS>+7Gf44h8jG-zu}ieDBa8Hv|BnnZI8E z#7xLi_cN5Os`7f@t_D;>t_W~T{AVtJ&{B5;yhTYcC{p9zmDe|D)C+z&a9z7XRHO$$ z&l<#J7iQn&V#7A;RqxycO6OvA4M+&r_t=6fG;<0HKD@a9zUoaVAP4k$#PLEFUreu` zQ;`cWV~|tk %N_aT?(S#2V+;vJ5Xn#- u z @7#Gc u)Cdy1>bo z?Bn99BB%pnOOPEaM^Xo0z$pr-N} 8t$ts z1O~`&U@OVBCQIiLp@Uce9%g&|pGx+BU$P@fbt09P=aI9FJ9|l_okA(#Kg1nB_(cvA zOK7q#HGubXYx`AOq{qby<$eC$GVggmR#F28H!!(_a5vNE;wvax--EsZ=mjI|ebK*S zw*ZJhqwU!V11eI(m#Z^>Jo02hO^YyII%n?VAj-4@jtr;VDEK9~q9f{J`8Nk>X1SGD zBTYtj$2^V}A_EfyO~B9MB$s5urm2Mz;s 6AM;k$j) zAo^;oLgQyjL}~ 9@EUzSaGC%XC~nAMITv3ZW~C z>1Ja0xHOTU(zmx2O-~xs0Fv8i@X`0rYFc{ogihX1p-D&%=hJS7=OumH;|fV-;D9bi z`El-~vi@|v!9>P^`4T+Rb+u5!_h6FY htT~6hFH^A>N@=!A<+ek zj0tXI {U+0w>9asp;HCx`Cm{0rf35z1w@t|=FsL`u$f5!I=% ;2 z+x2|36^p?vO^FsS7F;E%S&!in;^TbTc02ju%U5iR=aEQv1U9`;h-2;M+C~i&OG&0q zzaP!^^ $|=fphIPyW&}b{Vm3T8F&1&r^}9Cy)2V~{bx;kKV~_fs{4e0fMkNBeeCW5XU$%J zDI%}7SBtsBwvCA@;#VnHW5Z4nR3={oC8w2d)`gs3qQR*eixluopVFn4peB*h!!0us z>5hBY~p#ts=)w=A4(8&h>xEbz5BwlPca(YOiUml2A6zze=JVwb08F`H_y%k_%(} z2BT3{J9n3kB?U1kR#wiVEML}NOlvNDphhxhf4II@{`xD+s(!=Q+j0i;saj&OE<5*Q zsGu$(NK8l)2Ml-k-F$zMmBiSGZ!JniH%!{`O4ir_1 >kC+P+N=W lK }ETvR)kBN)Mg=%r)6gkLOBHSt7f1 z9~U`kzkoOv@K5g>W|xO}H3WKl88upTe6A0*%(z9GWGme%>sPNXvrHwIr&IjV?Jqd) z$IwpTC1=9+xF~#b b#Ue$z1`?(#+N1=H%XIx?{KlX zyMiNY#=Tw7^i7x002XPC-CC`Q!_NP<{OLPCc(+X1T`}0sK6)>cvsvvv+hQ`xxYyLA zCgXu(iNnO-wE4gLEOq zewp4PFtBX23z^77C7U={u5+f_V`*v^(s*WE_2@&x|5_y5>;5XZPrF^{ZkfbSZT(Q{ z&CqRX-;1Y`P#i3l`xZ?lp=y>%x^pp)1>7^wlp@yj@#mjwZD!4Q;^#jFZQfd5&61OU zzeu6EwCp}8>mfC6@-W;Eide?!vce0033C(#EhW)rh(*Dmcq@kf(iI(--y=w7*R%Y% zWn_Asg}(Z`RU{Mqe6; $$UC?7qu|FX;t=wsZR3FvYxjHH zCOpkID8OQEe^k#eBXCt{&Ic*P!bg4Jyfwv+#(}CTJPjqVMOgDcU!R#63=aYW`*~T* zCGv>G#H>93DNIHZMN~qVzZJA|s9R9NZ;f+sx>wYp@A4@2muRL+dyN6*LK*yb_cP~< zae9NlyBl~qHDwMTL zE#nr%4%;RkbH;Kf@~(SsRaGV71+yxUM*pA+WrGxJ(StSVSU-i1T7 z)G@zKGHEZ1BwBJbqHb@Icg|#_O~3h2VAxm5$Fx-)0qfR+DSSkm&UIPpI9V rI@dU@nupUp&K%`<0$N6y_`!H~~cqf3IQNbuvV)F~iaGuW3Vy5ubB#5fa~ zbSz &oc#%+HC_x|1)=nQQ8cXp@B$Mz?E*XcZZ-`1qJ0EbOSQ~@RoOKZETwx*<(>Q z_b47A<+9@eHzAV5U!W7osi4O5H-g-VJ)mqWe&={Dl1D4|dAd 0GDgG(8D5CA >pA;#(O z{hnj(7IMtf`^aM~cYosVD#;Csh8g$G>#+u};V4t_%w~gnWFim +7}saNcty9k zZ22~-N4R172h*3PCkKIW)?Y@cNQ3Swec{D-5^tk!`5p8e<;0+wV-*{d97JJl`68)p zwxua;GlqIr)1E*Q>|n#(0s;Ype^yKEs3sqpFi^I&<=m7~k94x_ql)WEa<<&~O2>dy zzqYqFRjp+I^h5Ny{#{tT)uZ6RT~9^VC&II50Y(C$;Y+p*K$rZ^Y#pbSiFK1HF!dEp zExi=WxT2-dp6cCs`sqtA? `IJRlgwaiq$JtKC&Z@9_G)c5 zZ+RULQ_&i=agC1$N@cV5pkqHpHdmug^fSRYM} E?qF~L)VpO@H@{Pik5>p zf|Kp~bsA!s1zuB|BV4gqV}4QNzPezku$J?aVL*MIgAUWH8VPU4&35F3j9$PG3RhHS z2PMbUwj85uFi&0C&k@4Lve+&AnUl$EnPXi9wcvEL=3`Y$#ip~4W3grCG-G@@Lmo0B z>gWLNCG-dWIKz{03mQBx5b1@*tfDY;S#*RX{xS1UV!wSlT{91glV@iY$4%wq4CLDo z7ekNxYoNJ;e^xj%2fR!nZJ+92Xyb1g03q!Xo;b5fQEeq)t~9T=EW0jFSBFX&k(Kp6 z-qv^L!fE;I5}(IzxP-y(Y|SAj1i&{c^8ZK@b@O1zw ppf$x|{mVEW1J6FneqS~^H z)1}v*4$DfiG((q|IOC9;jt-a}rfY 8)<;&pu|D$G~RKlAcznc^-FupP<60Iy=Pd z?^t5pab3}=e#ic2>Ws<&!V#uS7Ai^Dn;V0!G`Q@oOrsVUfvPU1tys+Z;V$^TcAW{- zxHPw#w;gkIf1&Mp#_I*T= 0(l?tyG1pf^XyssFjRZjr)F-jEZ@6F^{&ox~Mwau!hUS zZ~35kOTO2yjCKF~lytfkNqr`!X=|z^Z!TtVil=|yA>#Ze*S|ZZEi{A|{h(Uu<-|g` zzOf&!3i7-}l$nL;q