From 184e4bbc9ff5224b957fcea1329bcc6e45d10ae4 Mon Sep 17 00:00:00 2001 From: Adelina Simion <43963729+addetz@users.noreply.github.com> Date: Tue, 23 Jul 2024 11:34:50 +0200 Subject: [PATCH] feat: add hello-universe 1.1.3 pack DOC-1273 (#89) * feat: add hello-universe 1.1.3 pack DOC-1273 * feat: add tolerations section DOC-1273 * docs: add Upgrade section to the readme DOC-1273 * remove required from useTolerations --- packs/hello-universe-1.1.2/README.md | 4 + packs/hello-universe-1.1.3/README.md | 91 +++++ packs/hello-universe-1.1.3/logo.png | Bin 0 -> 88384 bytes .../manifests/hello-universe.yaml | 329 ++++++++++++++++++ packs/hello-universe-1.1.3/pack.json | 15 + packs/hello-universe-1.1.3/presets.yaml | 50 +++ packs/hello-universe-1.1.3/schema.yaml | 104 ++++++ packs/hello-universe-1.1.3/values.yaml | 16 + 8 files changed, 609 insertions(+) create mode 100644 packs/hello-universe-1.1.3/README.md create mode 100644 packs/hello-universe-1.1.3/logo.png create mode 100644 packs/hello-universe-1.1.3/manifests/hello-universe.yaml create mode 100644 packs/hello-universe-1.1.3/pack.json create mode 100644 packs/hello-universe-1.1.3/presets.yaml create mode 100644 packs/hello-universe-1.1.3/schema.yaml create mode 100644 packs/hello-universe-1.1.3/values.yaml diff --git a/packs/hello-universe-1.1.2/README.md b/packs/hello-universe-1.1.2/README.md index 0d0c548e..3b1bbf98 100644 --- a/packs/hello-universe-1.1.2/README.md +++ b/packs/hello-universe-1.1.2/README.md @@ -34,6 +34,10 @@ The following parameters are applied to the **hello-universe.yaml** manifest thr | `manifests.dbPassword` | The base64 encoded database password to connect to the API database. | `REPLACE_ME` | No | | `manifests.authToken` | The base64 encoded auth token for the API connection. | `REPLACE_ME` | No | +## Upgrade + +Upgrades from the [hello-universe-1.1.1](../hello-universe-1.1.1/README.md) pack are not supported. If you want to upgrade the pack, you must first remove it from the cluster profile. Then, you can add the upgraded version as a cluster profile layer. + ## Usage The Hello Universe pack has two presets that you can select: diff --git a/packs/hello-universe-1.1.3/README.md b/packs/hello-universe-1.1.3/README.md new file mode 100644 index 00000000..0995f9f6 --- /dev/null +++ b/packs/hello-universe-1.1.3/README.md @@ -0,0 +1,91 @@ +# Hello Universe + +[Hello Universe](https://github.com/spectrocloud/hello-universe) is a demo web application utilized to help users learn more about [Palette](https://docs.spectrocloud.com/introduction) and its features. + +You can deploy it using two preset configurations: +- A standalone front-end application. It provides a click counter that is saved locally and displays Spectro Cloud themed images. +- A three-tier application with a front-end application, API server and PostgreSQL database into a Kubernetes cluster. It provides a click counter that is saved in the deployed database and displays Spectro Cloud themed images. You can read more about this configuration on the Hello Universe [README](https://github.com/spectrocloud/hello-universe?tab=readme-ov-file#reverse-proxy-with-kubernetes). + +## Prerequisites + +- A Palette account. + +- A cluster profile where the Hello Universe pack can be integrated. + +- A Palette cluster with port `:8080` available. If port 8080 is not available, you can set a different port in the **values.yaml** file. + +- If you are using the **Enable Hello Universe API** preset, you will need the `:3000` port available on your cluster too. Check out the [Usage](#usage) section for further details. + +- Ensure sufficient CPU resources within the cluster to allocate a minimum of 500 milliCPU and a maximum of 500 milliCPU per replica. + +## Parameters + +The following parameters are applied to the **hello-universe.yaml** manifest through the **values.yaml** file. Users do not need to take any additional actions regarding these parameters. + +| **Parameter** | **Description** | **Default Value** | **Required** | +| --------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------- | ------------ | +| `manifests.namespace` | The namespace in which the application will be deployed. | `hello-universe` | Yes | +| `manifests.images.hellouniverse` | The [`hello-universe`](https://github.com/spectrocloud/hello-universe) application image that will be utilized to create the containers. | `ghcr.io/spectrocloud/hello-universe:1.1.3`/ `ghcr.io/spectrocloud/hello-universe:1.1.3-proxy` | Yes | +| `manifests.images.hellouniverseapi` | The [`hello-universe-api`](https://github.com/spectrocloud/hello-universe-api) application image that will be utilized to create the containers. | `ghcr.io/spectrocloud/hello-universe-api:1.0.12` | No | +| `manifests.images.hellouniversedb` | The [`hello-universe-db`](https://github.com/spectrocloud/hello-universe-db) application image that will be utilized to create the containers. | `ghcr.io/spectrocloud/hello-universe-db:1.0.2` | No | +| `manifests.apiEnabled` | The flag that indicates whether to deploy the UI application as standalone or together with the API server. | `false` | Yes | +| `manifests.port` | The cluster port number on which the service will listen for incoming traffic. | `8080` | Yes | +| `manifests.replicas` | The number of Pods to be created. | `1` | Yes | +| `manifests.dbPassword` | The base64 encoded database password to connect to the API database. | `REPLACE_ME` | No | +| `manifests.authToken` | The base64 encoded auth token for the API connection. | `REPLACE_ME` | No | +| `manifests.hello-universe.ui.useTolerations` | Flag to indicate whether to use tolerations for the UI pods. | `false` | No | +| `manifests.hello-universe.api.useTolerations` | Flag to indicate whether to use tolerations for the API pods. | `false` | No | +| `manifests.hello-universe.postgres.useTolerations` | Flag to indicate whether to use tolerations for the Postgres pods. | `false` | No | +| `manifests.hello-universe.ui.tolerations.effect` | The toleration effect to use for the Hello Universe UI pods. The allowed values are `PreferNoSchedule`, `NoSchedule` and `NoExecute`. | `PreferNoSchedule` | No | +| `manifests.hello-universe.api.tolerations.effect` | The toleration effect to use for the Hello Universe API pods. The allowed values are `PreferNoSchedule`, `NoSchedule` and `NoExecute`. | `PreferNoSchedule` | No | +| `manifests.hello-universe.postgres.tolerations.effect` | The toleration effect to use for the Hello Universe Postgres pods. The allowed values are `PreferNoSchedule`, `NoSchedule` and `NoExecute`. | `PreferNoSchedule` | No | +| `manifests.hello-universe.ui.tolerations.key` | The tolerations key to use for the Hello Universe UI pods. | `app` | No | +| `manifests.hello-universe.api.tolerations.key` | The tolerations key to use for the Hello Universe API pods. | `app` | No | +| `manifests.hello-universe.postgres.tolerations.key` | The tolerations key to use for the Hello Universe Postgres pods. | `app` | No | +| `manifests.hello-universe.ui.tolerations.value` | The tolerations value to use for the Hello Universe UI pods. | `ui` | No | +| `manifests.hello-universe.api.tolerations.value` | The tolerations value to use for the Hello Universe API pods. | `api` | No | +| `manifests.hello-universe.postgres.tolerations.value` | The tolerations value to use for the Hello Universe Postgres pods. | `postgres` | No | + +## Upgrade + +Upgrades from the [hello-universe-1.1.1](../hello-universe-1.1.1/README.md) pack are not supported. If you want to upgrade the pack, you must first remove it from the cluster profile. Then, you can add the upgraded version as a cluster profile layer. + +## Usage + +The Hello Universe pack has two presets that you can select: +- **Disable Hello Universe API** configures Hello Universe as a standalone frontend application. This is the default configuration of the pack. +- **Enable Hello Universe API** configures Hello Universe as a three-tier application with a frontend, API server, and Postgres database. + +To utilize the Hello Universe pack, create either a [full Palette cluster profile](https://docs.spectrocloud.com/profiles/cluster-profiles/create-cluster-profiles/create-full-profile) or an [add-on Palette cluster profile](https://docs.spectrocloud.com/profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/) and add the pack to your profile. You can select the preset you wish to deploy on the cluster profile creation page. + +If your infrastructure provider does not offer a native load balancer solution, such as VMware and MAAS, the [MetalLB](https://docs.spectrocloud.com/integrations/metallb) pack must be included to the cluster profile to help the LoadBalancer service specified in the manifest obtain an IP address. + +After defining the cluster profile, use it to deploy a new cluster or attach it as an add-on profile to an existing cluster. + +Once the cluster status displays **Running** and **Healthy**, access the Hello Universe application through the exposed service URL along with the displayed port number. + +### Tolerations + +The Hello Universe pack provides parameters for providing pod tolerations. These make it possible to provide [Kubernetes Taints](https://docs.spectrocloud.com/clusters/cluster-management/taints/#taints). You can only apply toleration for the UI, API, and Postgres pods. + +The parameters are applied using the `Equal` operator as demonstrated below: + +```yaml + tolerations: + - effect: {{ .Values.ui.tolerations.effect }} + key: {{ .Values.ui.tolerations.key }} + operator: Equal + value: {{ .Values.ui.tolerations.value }} +``` + +## References + +- [Hello Universe GitHub Repository](https://github.com/spectrocloud/hello-universe) + +- [Hello Universe API GitHub Repository](https://github.com/spectrocloud/hello-universe-api) + +- [Deploy a Custom Pack Tutorial](https://docs.spectrocloud.com/registries-and-packs/deploy-pack/) + +- [Registries and Packs](https://docs.spectrocloud.com/registries-and-packs/) + +- [Node Labels and Taints](https://docs.spectrocloud.com/clusters/cluster-management/taints/) diff --git a/packs/hello-universe-1.1.3/logo.png b/packs/hello-universe-1.1.3/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..eeae3434e51b554c16914826c5d992b4f4dd90a7 GIT binary patch literal 88384 zcmeFZV{~P~);1d3w#|-h?%1}SblkCR+qP}n=%mArjgEQK=bZPPbKmjZ|M$nY_E@84 z&6-cmSy;7Z)vj9M3UU(gFgP$kKtS*SNl_&rAmE>0w>lKW7YA5CKj|v~GZ&H-0s^X! zg?%#w|B4eCODf3%0eMgW0r>?10lj>&{EmTuT)qJTof-fEai;+RVLD`WDDr+K1et08 z%w%POXufDDAaGz5AkZ%g`0ED*j05yHw=W7v3K;j_v=T7YzhppwfI=;S!2Ttp^%efT z2)^#Wn16<#dBFe4F%RT_q=A3tf&QCT{|mF7QrY?npdBPNoxX~c{r3j;Vztf(0s@(^ zRMBwOkd@&!wzp+4G_f}_WpKB3_=^JKb?5#fZB3mGiQH{%?3}pW`AGgD!Tm-5Wiyfx z{X@jrnvX<7R)I*w-qDnZo#7k9HxhmrA|fJQM-ww{B~kHz!M|dBBo@xj4&024ZfO^TwGj?-UjTV#;vJj>SS-@^4BbWmT$cO(D46a{>Q$50{$bfYG>)p&-^dQ|6>1dl*WJ3|D)!= zng1Ig?`UcIRgwR&i|JoF{+st-@_$RmtzhYHYNH`)X=`fd^tUW*Y+tDVW6J+VirCxO zJ1RRE8k_R}59GgC|6BSWdNlu|hxOZ6rTs_Gf2I5j$;2)L1-j{UkV7_;%;r`EmP=F6v|mZjCt zX@c$Xhc%}@Tb<>+yq1<$t#@L5 zHOWdc;z~5=XtAR=k_x=>MAuXR7*{NRBX_>^AW#5Las(nG(xpKZFbXBfU{J(jP(B8J5~ln4 zCP}e@BZW41W}5^GRfdHEN)?sO^q9(*w7BGWxHe?V*Md#tCd1c8A&qO&p~)nIRe@`} zx#)Qw8!2&fIb#ODC%j+xVt9e!`3ppTStJ09yuJHn;NdURo0U74GXW=yz0w{H8>vYs zC6XEk9`mGGJMSbp#Arn^AB^Wf!wAtr=KP4TR+uNobeXYwb>QzSmZMEFRmH^z`;Xkm zbFjU6T@h?5tZwaDaKmMs;S!wtrIJ)&2?%7%IJz6gxo~dyJOz}uB+uiG(8edDds$-9 zrCxhq4K*VH#@U|}>lPe);w2=gsjp8sD&llf!g$s8boguagr41(6>E+p9$>T4o}IJ( zh@*;rn1C2AO*gG>QgYf3zfVJ*gci*6lZQq84-L&&N{%eS5gPn`OZXfFh5UV{}Fp6v@@5_+vJxlC-`KN5#`?6@X__5 z02jy+HVBo?5$@OEam@}Td4KO&*7K3_^y1R`{?MS^>lNH@gb@19A6=vpVOturkoZe4 zk879<4MwcbalAFo8fCwtfXJxo`w^CEfDRkc?8gi$8cYaPuMP4^wAyW3$=FdkMdG~V ziRKR?4NyP=ikgjI){JF9a+J3jSnn(`HF|`FtI!YC`-Dk7OM#mS16$i}5P&>kxRxfF zFSIAP5YybxF-$o7Kc@SPx@k~dhV9;ldO(D15Nj(HdTn|3k~*Ox4piO`r<;0 ztUFGmLlx-ap)V(^y4NrG zVk1@WYVujs)qhTH+5idgR8yf^67IVy_4d>&L9!6^2P5|-0#m=_l1rl>j2DcMOHGur z@tByXEZLedb0q0>*PGVDAv`4?)rghp2;fi5V%cN0&CN%;O-x2ARw#EiS;K0yGUqoTUnXY8>m|VTN)kW$w@Eyb?>u0XK_s8d}pw9&7qV?D-{ivoO zkK^2&Q;7B0CaclgA)B=0-)7JNOT)w6{_>;z1xSEyLhVwPirP=FE?>0P-q1%xnGrf! zsG0J^a%vWxkLN6D#$*bKbh_;&YCa778kzxZUQU*Ik8rXcg-Hn+BGr@#3P6{?7r0=l zjvwd7jbANH95a%LR2tXBxtk*r=81xNQTKC>OUnJta4z_z1}|#oEnfL?uDE2{%?b;; z4;<)rT)fWq)P0Y{ODMp1BiBfN3Fr+zf5`moaG`C~3g+QR4gT~#6T0Yq^V&vCqS>1X z>E^kLgVb+5sGW1=-)78>y|M=fw(I|>-mvt^zJl^!SdgV@^Gp|W(KNg-pjGv-B|H8@ z@>ZS)Bzbe451OPM7hz*Kq-&^_;{@M$L`O}H79J-Cr|cn4;nI>*;Fm|4$rk z7NaC#D;vH4@S+%zNUmKj6lce|QxNBg!&Wbsph7oJ4c?id0GbJaDTcwQ1~Y`wn3ihZ z$>E~rHWwF*WIFqUb#$dUOJLK`&GUNa_0B=vS4h9%%`v4c6xJBr?;YE^oxh^Ze{jsj z{AnRknv`w#LUCJ2h;40=)~{Okd=l-LbaWPc^Zh&676!0fojok9?~Oeg@UG{!CsT+< zp4FbJemhfZQ^N0gsLE#KBpP`5`$q-qN2qD)*-{72fDW}{oj((GMr(sp^0Yy`Nhzj< z^YOqDRB%P=Vf)x;B-Q;=HzrBEEQ4fJOGS$n*B(3--oJ}hisQ60g&~|Uj9O{pYJ$pW z+1o-3k@Bx!%=Q|skd4q4$q+|%SbsVtBn?LhpPO2GT(hfRq;E^x&x@N$aN4(UYgDOT zBvsX7q7Z4m_{QdJ70jQ0sM>#<&BP-t@P5S!H0+hGlzqy@!6Ai&n8ARl}Zo%q=O$d2of<7s*@Brytbm-ck5(T^py0wtdw>dNy7~R%NgD`VH zY@0kShz^}Sn@X;iB1JA&DqPCfs z*%Y&QdG0qbQcslB3>AP04Z-@N2)MGqW?=>q> zrEQ<6u9)u&r?TOaoJ6Nd6pda2QnS6Cx6QeD3vc_@l>v_*x03PP!*9lPa5dqh#^Hx0 z-uWZydMob8i8bqOb9;D~-(;OHKG|yW2odQCjuZMgV)}w(zuXeoPl8+8Cs-r{5_nQA z9w!l{2^CI5Rx?Um+*9v!w{B{u9$?MxGSA|XBVWdv?l(2ZpQXpesV#~r!;*=6J|4xr z(Q0~*==AMv2oW;u9w*6sD(v>ibW4`EPe`=UPsrBGbt^8%pl8MD`4~&h1(66b0*h{G zV>%*9`a(a_qS}i|O+W z`>K;iBpIJFSRnrn?rdE#T53y%l4#u8qO2}qjd2ug!=R3AgqKHsK2bvL_5ch9U0BD*IK@@5c+n&+ zx$L~CbIoK*HOk4R2-G;$s1T8`<(UuYN3XEC)n(h{mMz^>KU|#}^NTApz<}^=PH3h; zPDb{tw26&r(BN3V>#t_Y7<{Bq@lg_RO>WByr(WpVR?@i_c_MYh&Y;GNr#Xx`_p4us zH#xV;y&O;u0p9iw`x0EANJv&zcFJv=R`ryt7^Qq}q(~j2z>cN>nVX8qkA55|cPVl} zv-8x2)GP~*x;9^8XirF^;LnmEq69Vrh^RcQf_9M}p?Bd2CVg0OY5#+*>fo0!RjHju4RywoHuH47vN zhJt$lH`)(AyEm12&V*bXH`~(ia!Vx7vFUoR#~RTAUy(mfM2+8qoS5hmzrHIE?1XY<{&o2lwL>BMBl{!<$yy0hu7hOfqq zWK!y?SqZer?l;RME)Z$d=YXkhp zAcZb?K*5@|Dki|1e7by5-*vSw$LWXo9*;1t7kL)7b_Q}^kRG9c3F z@R%Nr`$s{82}uX=ryF4OB~3q*r?S*yY*`g?4O z&aW$#*Poz0w_d~m*2HaFn8~0zmfYvx;Kl`3=DD^WCLU!{Hqx6CmIdrG9q1UT(j}gs z!QJ59I5r&)?>_8*E4A$Q>pa;2_lE-!y%lToZ9LxJYyXCacT{VE7&W9ZbrdG_akTkV zGT81vn(==_a6Rb!n$#GBrJZ5kS2XU!JYJRXs0LdLxM|LJ{JKJy{FAm-;rlT4G*+9H za&D~nIEK2_j|v_hrhg!88NHm9Fg7zDD;tYI9`~~-W~AWv($lveLP0XLoLJY3L&s1j z3%3AcN#g1eL18*c@$Q%?cISn3tHSvYhJ{QPQ@?^bUNP~aGEGwuG?_bjW9p%#kb4_A z`U`_@F=CZ|=E!ui0{kI9_5(7u2~Sq{q+-pnykXw3azw(>XBFq)Pl`~wPjMS2MOz3} zc-KE_Hvx-@d$(X~oA3QR;nuWg`_IM~#i_pU8P@h)7DI%pG;AJ1N)^RqHEf$!(kaVR zibYy1!Rciv06jSv_iQl7i{_N79>q-Ecam?KHBv!^F(>0?O4ab@<}=i@#RG)8&-a8_ zz-A3Kb`N+*Hyl@81UQuf5d9SV>YvWf@cQ1z=E-LQ_f!DzRl_-(-2toU=Lde0KKh@J z$T~j9h(N$qGuAD!09km%;ffX;MRs;}Q7eXLsUAM87i_ba$~1!>-bkWM^+Y|HLeS7S z!KBQv*Amn%chR}S)iCoN7`e$Q|9YzVa&JoN_X#$W+>E5obu1YSN4aQ)sVsSF%>&lb zs(=ppi{#GzG7_N)QAoV|j!Mh6PdKQxNU(ApjZ#U+0aE|1IvF|=XlvDlbm}O&-<+Z! z#sT2_lf27S(47g++@#cZR$Rmp$X2`%_Uv26cIqpq4AW)BgG36yDjAhFIA-`$uDS6G z6jM{K$-D@qM(8VTyS)LbMIRiYw8*tRRFsUlD>JmQIp@bI%*xdof^GR_#)OHFn>_HN>=lP)TuMCM2_qD4iJ38UxyR=jo;xN90yaZG4a zbXm5y$U&y)H|k8Kz4j`IoZ|He; zdFaWW|IYlNzjTZu>R-(Z^PnJS+7G$g$#ZaDMJ19%G*#b^+ukEf*2-K8)B&wCaw!wh zZ8Zax%?FcEsi1Dm17Xt2J%>>9>#Lr_HiKXCRKT2kX&-q*;LXZQT@zqz%R11jMZRJk zCIvQ8%SY$gLKS*B&$4sgRGfqdHG_{>^ZkVSfp$PgPE@Uqa9Nt_<0jxK0`=npkUc_| zfmXKnjMQ?i65;jTDmtH?K;C3OTFAeU8r~y&PfKUR7-NYng61}|}5^Siu zq)KrSX%JpGB*iP(b{`Wp*H1 zFngZS?mkTJwzkXdzM+6HX}|j%Kx1o@+Y`#9@y~^~$d_mL3PCS${Td-SZL9HvV`$Op z3~snNw{y0(xI2^oru!ndXK$1-2`5Mu;Z>9fFS^`@nmU3`yJ8U+OqaBKPv!h{PNn)t>F$2>UcfaLLt9L~~I zOf=lw;O9Fkx7Rh0luJ|t&$GPY$b|Rplz5hM(KLs5_TiEa%~0Tc8d(IX?e>B0 zV4jJK1eH*@h8B$`87PvE01N{PPni{H)kPUpHpc_q2sg0EZ>mVIG|&I<}<8ED%jrmBdYoT8sFuWQ8CoV_35V?BRjzg&hRjT^pMRIoVwDl(1gAC>&7Mi?x5 zXz1(qSSl0X@5+nncL=dMHcVy4=xWUfATI^DOeho*@FfkmQVwb^SJ zatdMlLy#yU(W7MS7@4gP0FvgqddBbi=zc;~sWUeC6cXWqTUkn!H$P+DN6SnyY2iT; zay`1gFE+|w6EwP_CO~+GsWcwmnk@g;!b!LKGoqXnx+Z7U?C<>)xJL5}{l3)(YV*_G zGhMh+7g(Ng{h>X0rbcd}zStm3Yw50_M*}|}+8ONDpkGN(F?zq&#^5aUEW7zP>MjGO zWM*R!%n^MFXz0Uy{5xYkg9yMGQ@9{0ZjixDV{_uD%tXSU9yJXuq=i*m>b-3^UKE-E7DkUCswv)Byv9G zaR@C+E5xkFAwwMrj6$8Hq%Dii;MN*wO%$Pg;Y>o9v7*)FX@(^B@`>Odv&2KQ=#Wg) zX0kSY3d^^ZhIMW#97x{Cb$qcg;1x%wnwC~LBKGOn9OA}w+M-xB z`vg-(JagX3!8eqf>blZON_NdcC5U3Qw#H--q5Gu#gCjgW(p*0-^&C680g9%Ay7if+ zohaVd?b^4Nj6=S0NEFM<%auR3A#r^VMr!R~ekpP9>V1PHJ_<20@DhY6czn(#j+`&bQC4Hf zx;)JzCl9VGVLq0$rmWUsjm4m+E8YCnG9Rr!RTvz(s^BI8+x<4C>-?@xSYR5Nx-fOe zIj!9mAa$gk=vfp9N3DhvQr5H0k*aj<^(g(za=PQ5mCrdO;70G%AIVo-j#$%njdfua z0FfCyGH)sY8=11){8IW#&4+m-iuy9_QSz;IIDQVTz+#Rxb)!zNc51-1V>oB1Tco64&Tzts|bU;_ez@* zUuOMY|E&NB97^mxghXu%xl+%^RQ#;X{%mS#iCZ~>4JBGUnWkx;CEeNaHU&jjB6ZIm! ztAD)(`cUV{;{$e$<`smXwzpIyTu!K*tK2E>~V_g#WbFcPuJZ|E5tTzi#f~MvLZ@j39xC zir`+$QD0M`_w+2FpYyYB4CVE*Ru0YUEv0sw)%Ur0TS_zl^J1f$hqbgo*tDe>ddk-4 z6iw^6|NUz{t9>RNd`9aJbX@cjmJ%SnJ8bUNWd#S4-#t~Qa9Uv)hTI85he77dkuQ)~euBK#w0&MwyI-%P?3fXrB-Z@i;H=2#3$g zyxGDy)P#~E8w=bJl0w@8V$Rmp#MFfne5{rsRl^vz~?m5zb5=$!0hDbGzvC1RP zni&~ZB09vmEuJ1|0%=l(su(LGXqkJn+kvmp{+s~(Wz-S#@N7FyfM3YA(tSTnx7~OY zbV`?yzOvn_eZH*M(=pE_QDEoSa?j_uZ{JyUapt8$>%3?b0-LCrt$NAtp;kngua#dy zw1qcbUuqB#R9p*-C)+aj`)X;50O#7TWpZ|wC1e(yh9am_X<0gC=%JRqVsp#o1~yh^ zZb|&aJ(Y|UA>yTM3S&vZfDlI7#_`#i!K>hXTu!NnhwdaTP3b{nW5?$xF?%A&Q(fa6 zhonZQDkt8kRc1#MWHhP)c8#<%G#ZfNx z(W}%#bkX#{hKkq78y*wZmq6YyL>8I}3$O>JjLoRCxxL>ATR)C2c&zL^6*TpGcj4EJ z&i%ZMp_YWptE#JIH|h(CyUu?zuIbd|`@+2F>buH6VtXlP=fVaR^!D3@ZzQ{{=inob zrO-=U4hs2oh6&(pJZo-agMcjCqW{9Z3_q&ry+;T;5NpbH)lGbOJ`+S z2c;hVu2gE4sAf`qpk#q^Q*)lhdn+iRVLC%XYZPbAu`ReV1%eaMb8WIs#AP0`;VO>3Xv`|IA#zdY%_ofrF=C;Cff$OA0>zl&2Tn#{w6wSDv@38=DSVF_>O301D4P* zd6iB4V*aq+(Jbq7R$ZB{Dw_NLVDD4!@kchZ5k{(!gy_wJ6HkaO1_FyFPhJfF;zIJ6 zd2T1Z6p*e3SLMI5yu z)^Q7>05jKyQ}ZlW*DtQMPA(kjbE8wkSl$M8mZcXGQuQA1u)n(|M8I-$Up~cwZpg)y z2U9FerzulLMK9a}!-D|CLxbGiV)$lu;?4eKPV8ehWinYQNpu;`oK%BcBG}mJto}um zD|p${)iw=?{!Lx3JmqBmMJ7RM5%yDCA~^U((DSj&k!HtJgwW(*ZQ=P#p;N0L4I=rZ9ROkgq1f(qB^;*uLfg6)QkF-~Kc_<=KFx(&7@50hy`h-q>3vi?LNVqJYh#V} zd$OVPg-}A{kd-n{uV5x=nj~)GuX(0} zlAIk#hY+ja+{oUpFSgIc?$x*fr^G&?&=nZds=4?3CdeK6&uVuLTnu9uqYLNcxnulH z)2BG62g=Dhvz&P?^7!qdH}pC(X+>o z>}xxSKLl5_c^l%InrjezyCHMUZf``Z%RkPKX3FPjLuaxi<)WQGSY{qcU1u^faL6~# zY`U^^u!#t7*;Pr&ur74IVVrLrTR|5 zX4IwC77eapi4ryvopzl?N2}9!Vv?Jamr!BK%Csb=TZ)hmcvZ@Xv^k8*B0=Jj#ABUa z|5eY75Bb0sNN4UmCY0icbAXZb?K{wV&qcTi5gL?s67=-WxUos&npwo+f;wOCmD}b$ zm~er|8r@L;)-r^&grG6Hn0tjpmy=WahSlWImfy3WG?23>*jWPzG9;LhHhb zY#Hc^0;VV|PR@G75IuZCEgF%W0~J(~Ze*9g-&z0#u(Vg-MKSBpWT_%;R{5%ER0tZn z&agSj$3BT#DfQ$tn++F-k1Nn~&n&_5?3yLo?B`K9uihw{x7*hZ{IuGjc*wD=P2czvn<*Qxk zs=LD?MrB}i`!<*Y8bjYFt3)9;{XVwD#UGBVdReE|?pd6kQVgC?1V*2FcoE*|U*0Mw zB63-1v_`H5|It+~?3#=`{Lp*9s_LI5j7nJ>{_jca;uKWdRmA-~as|bLu2&SGt_w#D zan%aqG7Fl|Le7+8cq$~17LW;P4(<>?S%?XoS|A2y5uGA7OjB18C6eO{$-*bXB$?Z)^$a#eC2CMb!NZf` zy78jI^OUL@EnPu`3miue`&bk5Zunu4OGS_ zdvld#NB>kF~bT3c?<937|I@{}9tF$Ejwf^Id6^jkqO zJdKYdTd>dO-(%_uF&wEhoy_^QA-ZEGOJB7I z=F2{}rKP2>PEJk?uUL${e+>_x4Iaw#qk+wM6Z0n}{z-HM`(OmKI$6ZIqIr+x?=}i# zJch3%5B8X@xKGMS7kTf-zkBmvHK-D&nl*yJHmravgs0BPnq&Z&wFHo18#Dbj?)6ZF z*}L2f70p^}JWORQyjR~4UJG`bFPV|3#s4WH$0%i$L<94@i57gO9^SruR3AvS*YprE zn|~Ia%?$}TRuy{q4Wxl?Vk}0$dM@kLNw|h?<{}{Gdy5>jA~@qc!o&Q;GN%7nr3o9A zzzhr9LTm|$F`6KrMzzueqVu14Yhz7cjnK^;=Z*m37}e2{8%=yvdLFoeYacG@>g^Ms*0_Xr0#iJ93%yYNiZawa5avmyx+$}J^=_( z<}jMGtNN}?=&5Q8(v0?{^(WX3SkA}VlVBWXvm-_uJ@p6?LJT((@;-qPM+_rI!0-qL zhwMGKS;pH}S6VTAp2t-KsJ6+2=$uoqw#vuzVAqp1Ac2VrU$fVFUJcw&w{4Ca#%|}{ z?SzQ!F(}cLuu)8#lqfF7Hfv#CI#nWJou68-gB$t$QHzW^5?{~Edtq;@nC;;>)AIr4 z>V0PMJ>@v0*q*`B5d2o~(ZAP`+VcMUj8w$D2m7XT`SPYF`#YeG0|Snr@5mq0Fn_2h z_}TSq5#J8!YyZpD2x;j;+F8-CNNV~0v$GmNV8l}E=Z}oiIsOwEcCliw~}ZV`fGtO#DN5K zvM|c;`M5l!gwLkBf?G@;H~v#b`pu%tlePY;nN|8$H;+FWXUr?Q!55$Jqw+chY(+ls zn_ekGn&TrIOY@T7P-4Z%oh9R(`-p&k3!U*>S@X-uUu}sbw_`7HbBobVM8x@_6LpT# zwyqij*ltIB29~3TWsJ`67>Li$Bdcm(S7HKgpHD~w`PMf(W0x0yI?dL1Of^Phn+ZI& zd^UiC{W@LipUn~U0bU8s)2tM+mcW`m^}Sjs zSD}C|ViT4wD9?o2(EYrwp%3E;<-3tP_YRZ6#V6R9F^s=~Alyq=0AwU-DrogR1%(9| zEHqo>FX@VSlR2hcY~ITZoC{87x0B*UwzFFG;Jt-fT%TJ_NCY}x``MV=4McwhYtehR zJ)ED+SMv5z8dp89c5u$Fy_Nir@77&2<@R!LIhrer4TKZ#J)SC>&+=^$5IUSNRo{yY zK7T}h%IC)Q{^=pT?llj2d{27&yPGkzugXQuuEQd|LeSHM;#^9!2|Hjqg*a$qk=5o= zLD7epUM~zK<4#7C_0zxX{9bUz~Lby0JBQ!Lf48PtEOEQg~4}I!UYE z{|=ixttzu3TVNDE#sSxxXKRL4TJn0!bI0kwn zTH%;a45?y-?7ZV+wkTTofSj1#2d|si!^SDT{3?rYOPvdCL&f4k(962k$mI@u8{L8O z=gD~Hh108uY(%J?{s3L}0WQ1u$EU8(1ueGquGI3?G`;(#)ufTT;S z4?!CE@c}-gf}AUNw__JH!w+{YAvI+^GUxu^W-0uUn4j}vaFGO8qlNKdZf%;$4$Us@ z-SJv@gqIp?3r1vjBeFo{b)#I56=08yysMr+X-?=(RGR##KBX!odu{XphNeP#G2|?? znN=9L4edfD+}^@UG~kMYXjx2XHP~=4dc%e@TbR#&4Xys17fIrXjI8A6OuPPW|@ zKR9y?>id0UU0t#Ywt2f{sRZ}J+MN7eGWCm=GX+F2_5VB%9UIiPeIAs`*KR%Cgr_Xh zw|vxx$1UeI7V4C1mM7#~uH8o_*6M#d(~PP)`nlD`IiO+9u|b;cl)CEu>`#*G^wv3Z zQjZHclZDjva1#ozcGjI3sQYdnJFGJhrE?(7{fhJXoq&Ys^LtL{-fxi?Tyei}JcBJ+ zosJK}-p0d2+^h6-?1=N9FLg9v>ZCHWdYz-Y7TfEZO`nNm}`eT^4rWs#DqWX3{uxnr(?fHB$rO zgUs1ESi#KmOx#VLknx4#Q`n{^GeRZQ6lSxcj3}N85s9kAw5au*RlKN^D=f}YA_TWF zElLDvxy%a<$5RFZpz3fL5U3FsH?1;%_QJ3N1${z4Nd4-z^TYX24;LO zY(G;px^9)2ek10hBo81i-;BlBdw-`l3JE$bu2#ZV1zfl!*LQv|^2AwBUfObCz<7FT zEk#)CSG|ZPs)w&{&a?xZ@pzm*S6)7iG;pz58zC>{{tj>$F90e)+aaN-9Tn^SSc|p1 z?4s$oo4~ce6lK@*G9^@1OO3;1FhbUvvZ?OFsTiF{RL_@<-y6Oq3DgXwN^ybDj(LHI zDQj8@(Er@a25sH+=3pTdGHL{4k!Gk{IbE&Ayc!V(zA8tKjm{>;Vt@K&*D3ovCxU2- zTK$tw^>CZDmecoSgG=@Ftw4z`XsT!tr=UO>tv^?xDlR;!o`Q6AwKhARB24X2gPlJ; zdPWgt%NUlqMLwbkuN2y)5Q4pbaq3w za1iuv>|Fr8=cU^NP|h}27|RDIgiMd|!$xy-Bp&XLz^*6d?Nz^~x_Vh~2IUgEpiwUj zs?p|bU2Hzd`19Jyzv@d)q4ti;i!0MnB0fKnui4oMn=M z)~L5if-JvNGa)c`41PhWEWD3y?H6WKB5)2Lr3j@i15naSh0O7wYZxz#?&Cjjjcqk! ziXMpkhy^B#l`*%#C^b!vpG=cKvtlT4!L*mrVs0Rot;+M;b`n*h@;$`9643Yzh6gpb z&+r?^U6D7oNpTKu$#MbR2JR1oyxgFp9Dloh#Ba9pp5Tx>_x&)YURkm@={iuN+5vB! zNf~IQxH-q0vhv(br!2oof4?j4?1>WdkNMbJ?ajZX8)E1;j*~2kGlnv>V+*cVm@`pL z7)b*DFdC^p_lfQd$uLH`Rj{@hUVT3ImRB~+htL|a!8IG;Npqzj><)S}nzU}Z^A zn7(i=SBLb%xwB-{Qs?r`FV4#gQ`-Gl#+^ov%MZh<|2i{J&ulPm4UU%0Z!AZh`d3P ze7VIH?d*cGhDj1m;gZvx<;z01yds?48)UB&y{_jgqUCNy^iB4!TuD5O3zWmU7@=JU zo%}d72H!qy7V}FXX)CRfaplp@fSPek2{{{M6KpfPTQB_*2Zr#IieEjg8&{5AU)y&! zybeuB^Ly@nE36pWE2}M6k!ZUut(ZYN#j#5{0!DLlx1s77IsQ6ns30~eW^`bL2I69H zi6!11QWL^Pi(=xa&5zClI8AXg5e%$pjtObk)7Nd}fr?V6whh75{;aIr)iO1ycFz)8 zO%GPiOX+@OMvxS;_$azEteihZnYBj{3 z#SWTmmdVFp9u@@8^fE5FBpIUSlo~RWn5Bf$Bqi@<5+O-GK^pn<+bfxbQIJsUkS`~D z;_V_TY)sgT#_%0TkY3I2n`n$_!i2~`>GrTx@&_zPkU-lroDPMONCI!a?e=zj0u_rK zx!rIpt0+;ULKObsLMtR_JxtDiz9D?k585}%RjQ;8sa$s)H^-m-I7c{DJC#fp|2vS9?PEQl1SQg{1(G82GVHh{go-NBuRB_qu2?+7?EcMI8 zcb&G1TKB!WEc(R+tZd!y+;PR-mTe!WBO$zU)37f-&xhu)rMFMIYnnFNw@0-f19c8M z)S8k!dEV+^w`bh`o)NinJGQs+sv8m2Fpe^qR9;|is`|KXUUh|Ci{qS{m>AthT);UF z$pb@?Hwb1TY3jwf ziC13DIdneo9G)E+9(+y$V{P=(A2=#9fs0%nDtu;-m3OZQN+%jRO0}FLQBjvZmjf7D z0vRQSPE!ilu@Rj?Shw0g%X?HZRZT`SSe2EZPYTklw+KxYh9;9mAR#?F6Ny~4ea3)B zzR${BJRfWlZ>=-;WxVBsF@W_0H^uta|7H3kl``SQcsBdZzFF-P8jgyeYXS4vg1=1H z_j#IGt?`bgli9RE2nBH>Sf%cq_zzSpnG<-g$1T`F36`m>X^9cJpI=(=%RlVBe@V>k?&>J)T)PB=4KF?BTRx8qzN`+d!0odIxZ=>}k(W!5Ds^ zXmMcn=$wX;^HG*q>Ra93evNJ$lB%jI`q?T?r4>`$lj|;VAN0dOr#ayXvS;@}+6r!Y zMhydd23-Q>evDhwgR~tPmTW<@4!fjU_&8HI^w&`XIv587HZ8y$Q6yFsM#wl?9pWT% zT@x3s#rB6f@}CTmRPS?|Q(o^ZR~zqm$I3sFvCyse7MN>N3*%!|#4jtEl8}ko!nQ&aoMS%wut^QT$T2j)| z=p;lR52Uk-++mAr0x$_H;~*FXAorb9+7on=7UZ}}N&wMUo|P244kv+dEtc{{DL`;S z_GLUVj#vt7JBZ5sMpehhp*9LpG}Oj0bg~rutc6aH3+BqPtT>>&=W}%Sj+LXkt8s5+ z_S3;-Pua64LBC^1D%ObxZna_O`!APw{87uj=3MY{mi?b0Oa{iV$>TSM4JBp@LW#An-U#F(sL~yjQ;8o-RHGXG=K>z`)vR=gKt2hQP=m3@+84$_NXOC75!KvliH%m7d&*LmaS8+HyMl z7;7u#1sQ-PkH$7%p_1K&hyl#pKiNKUE_H*1rs0quGkNrfigX@}7lKcP^+*|7T1(Ht z;;H;DDl1@?r_LSclnYSEN12u0t}0Nb>$K?0_qg${M?>ziS9{Hg|7B|5ofm)rK)0hA2UDxgW&Yss+6ED zn|vGVx85F_NI(KYjS-{Hz)W~4b>S(>7()ult{B5n-0WalKs+L;X7q{GS_XXk$T%BB zaH%`3R%5?v^!edd%Bo~O`$Q3pHm;gASdC5S`DY3^jm8^lWPs$ikQHaijR>LgT8nls z9pwFq1e-a9Y#JqHKxScqGJd!7>6p*WZ`xB89QYvuQe?9Oe_XLce%YUt;;d55FY`?S zRc*#LRFg-pSZ{WoXyd9-T-Ib9boAiLKqFk{KhTW_T)s6JuJyg@`9N$fsjNE;V`#Nj zg|zg#21yClHNNH?NX8)y&Lrr8JhD3ojhC6XC3_WKIN(K5YT#+1vB^X74vqq$MkJVy z^FzDTk|d=R5W#nW$$NQhRqS3WgA`9KhoF`0PZYCFbOoTq(>t43qpw~BJ{q~_g|2I9 zA3Liv(ybz4u;ECFZFJ!kO@zh8mrd^F(+ap^Cnu>7Zbrs|;P5%;*cF_V1IT*0#-ppu z1y1#5Qf);3=UV`4!v6OKraG}GRAUwulCj3v@DL_WnPW*t5KOp$SvtKTGg%8wtf1zI zO><%*axTSIx(d3YreXsx?>TdXak6Pw1C0h9h7C04p}6BitYJzquA6Ww)RlUDIB>po zNmeWuId0>?i$Nt4>|Z=?ALQF77Hcj~?eXkGpXyc;9tgoW9ynM#UY%cG2LSW*-|mZD zxIQQ^w^a*NiyL9^I8WU!KC^$OH2nCjn&zzPyfX*v_>z@GGE5D2q1QSPQnINQ5x5a2 zAMv$U`#B`GAO)RaItVj>4|;-jM$Guu#>$pUD08(c&jq*E}^6-ulLJ+A*kST3gT?5kWVm?a@M!5X= z5bys3ctD50=oEX&j|8XQLw`UgACXcr%TWspw;`-o0hTRuyUH^*M!{Uh@Pd-4Q;{*f z0_y{#+@zdYwyX;cOW@O z-;vmK;~mAA;R#kNX;aKG5UT<$?u5a-n+u>NHb&VG4hHz}@*Wx~Gj>|Pk3 z5_wSrn~w6PS<=9cj6jgZ&0^o?f+cXN!s`pNW$tY+vbN*C@tDGpj=G)LD0GG&oIP|E z);Vob?WgM%jlZpD8MOawNrw$P)%RPY(VTwjwH>6$sgPK61RJug8PPLK+A%Xly=W-k zeEKxC_K%Q4qmbRynW;=rgtcl!pfD$2cmV_XXwzrSE#9_l_nDukK`x#if2EE>k_cPRjVQuo@+tGEJ2M-x#R%B zrsmC~Y}|vv_U%}RAyfgkKTa^~6#%)i#g`HF&LjP8xSs0}*02(#mC;c53HiH{Q!tm@ z)5F?yqp3R?_k056Itg#EDlM%Ry>A;K5yrQV3Iek!gddfw;n#6NBhX&gF14eB%D=DN zs%ed%{AO?80qc>|y|6Mgf)%>H#l_`N4luWKJxP;JuS|3j;;pji113&p3C0l% zRfBlNlmg1h%7uH+Pc{e;tl4lGl4F##`=xF4KR~Sd9dv zIEa?@h&7`99Ba46EaWgIbX!Ua6(h@d#_5zNcX%;n>rVzAlQDBMtI%Z!z1PT6un@7- zB9Lzu+}Ji8Hx2Go_OQuGPAt)hxtZDVp?{Bg9}~M=rwKNbiI}~lAn!yMc_#bdmd&OV z=>P6-X+w!_E0va%k|i~hM*BPIM_=1SAOGYxgcNIftf%Er9PVJ&77v!IUU>BJhv~rK zljMV&RExHI^Hy9Ux6EUfC?hl$pJXoUAy|t8h^tOdA!!I!p%Ld|WFc>|)yph2;DqZ? zux1E&Pl1LDcqtj0=||;`TEv3j-blo^4WH2vV%Fs7i4L4-5ph~-3fW9LGUFPwsM$r{5%xnY7bGs>KC#cJ@m*k6tVO3G z8(hs+lb%q+irh5Ym%sw-&Q0b&-G&(WZ^6G!# zTB7OcRnoCz$H4M@`zRs63HGCOH!tvOK~jeZf~Cvy>J+COhi>;N!#0IyAlY`TQ#dg> zMOIh^Ma6R=o?k<`kU3N)!Zb56gvk^0H`>hkonvT>?w*~1l}5@bo=>NTC#kY1k5<=i zloNQ`QQP{59WPOS8OREgDC4o3>iHO`M6w{Zj~L>b8eNt~-fJ z)ii&Jf;wJi)>sKympt;-dmsE#^^)2|+wt9|k~uY507`5+_?lqOF2=PJl7!rdm+z$m zM^BO&#FzoSXStC8ENkX9U>iHVJOuf-H~(XXwVehb3}&gadl7?m%1WZ*uvFRa?7{BM z8z1cY*!!&RS>6|f%3`#rU6M)CY}C`rMe}g~Vz}>qGQpKR(7cl>mt2M{brW?RYk?*0 zhNmC{i#VUGY^4UlCNN&+9q~o6c!7!`tG#x>ZH=sISo+f_b3(u2iEhE(b5Nx*T6e`F z!IA0dT3pb3(w^_l!0_KbR0KG|eyH&ClfMyx*9mrIo#N!+p)X9j`fbp#OBz!Wf(a96 z>kw*K;XY&&uN5xE)a+7-NtnqVf;$y;q)}v-hM^w}|0-Ft;ga)6blIAfbkSuW2Vp7b z@cv!YbfSq$^N|J25>v1-ONJ#!vBv1k@?h4bq%o1COF_v@H7r^cg=hLmfTgC>r;x>H zpuNXV((;9iC@eU{0BM zSv{v6RyKZvwWY?S4c8}*!Wyu<;f@Z&@`<6YSC6uN-ilLJ&y{1=pQxYXVX2?iJ;1*^=7eg&O zRW6+)*Zm#=K1L{8y>**i6v+NnyanQA?p%y7INcZV_8n45I$NVkiu`>f^6gMztx4fJ z@&`t)>(^cP?cZ(r^cPl?SJ#B6#|9OT{^-ke>2+U7jt!m>ntLYUzPEwD;?y-Z0qZ?Z zS;)j?7_x;%4A}i~G4j?Cz4>=Wps0-nLC(H@?sM#R%-)eV@6UddUuW-Qr`ZR45f(bW zUwvaURJ(FH)o#2R)^HjzTr}`9ureG8%^%9DR+1N)>pe%eQKvl$Le=4W34saRICfk% z9@Op9>0^yF3Qvmxaa|U7m%Ss=pcwNxBc}Yt26MsUY}ZK3<8YHRN3bi?Yt`-3r@rV+1}(;drAdg%3%;>-vSQv3`#p5Jvz>-eLJ@|vU=)cf zNkJhKSOoD|){f4SiWYQZKH7BMO;mg7$7NB8!*D(J_YTprWvgYiqNWoqlq+oVZm2V#-X-De9e}DC88YilLO`^HM6x zN~&<&;oeRf>25_W?iw;k3FsIfpcM3*mDI?V#zCOXjGE7BdhVCsrfWZ2k8-3Hbo3x5 zbBOh;AiX#+K22$?n-2(<5jLCo8Nqr4Jq5?wXx_4mWh?IwPyLQ!x+F?XrV+=S!jaEf zi*NZlvGOOmB^|R`8JR_b3ExzA)YG$1B`UQqOGew@`<#>0$N*2e22RDO;EJz(^2^`( z<(f+_&$d`C5m@P}zRo7GY40{+!_~J@%dx$JOVl7t%H$>!vg=!kMHF)b%Y9|f65m^f z@h5+sB}+z>e{z?1^aitV8Ntq=%w}$J0p;cw%hr7qC0s}G{mDndS?m5MsC0fUnQfWW zb^JxjPD>|IkGf{unOTO#AaG40V(vOM%7T#Crouun0YMQKw`QUw`ix@IS~5k1G%`J7 z?avb31MI4B08X&)=tf;2J8^=&KyK9E!Z6PgY;t+&Rob4ZQ(v%$oMvm;3S`yhBhaQL zEov?q@x@&O2MZLmfZ!i_(8Yy`2{6%tOKVtcgmrblD0BA55V`4&rejIwmI1tUXpr#N5S< zOk_(IE@audojgsG!!Fu%&EHW0&UNHf#O;<{N?AGibb9wrs#-7~r8C*ocKl`8f@KZe zqpo4N9|e>T4U-<_JUQ99NbH%U9Y>B(E*2Ls=b=c2)d;M5F!}2iToM+u&7h^O!_S~6 zEhC65YJre{4C7<*#r}zDGQe&A=8aja3fT&G^d4ai6q0`XV9YbvEQTgJ6rw`+h%SHL zt;i&nb%smV)}>|5z3kD&3l@LXmTFU)%_&jTo-)OKq3hHEs8p38@vKTXdGIB8l$qGZ zY+RScRvED}hWu+u^3CIacfT=$g$fgDqp{F{)n8m%CYSsu5yw5%(oA~v@MZ4*{_Ym! zNJG6VB@caxUqiATV(UnDN&rV@4a=b8Ub9lBkaLt`?oqj0Qphz5rLkkcR1|&okw|c| zOKZz1A4JCSK^zeAgmLD);M+$80ZyF6pAwc~Ug<*0E?b1;6BQYBh}9v(GX!hai>B*Zqm=?^FZZ!6Um#O@A*DtK=-NxF zWbuGQr>1Dr6`Mg`1+XxfF~JgK6vz?|K`m;WCQt_&fKUYJMlS0p$}gZfRSRkE+-jPK zW&lbdN{6>S3QIB<-F)WLYmGZmR#8a##TDRAHKjnHp}4FP=WgHi4ie zxDYXSQ)p&DUL-`(<%cOhNtzV7DSASW0SvQ z@C2ExnP@^_qwX_jWOuooDT_>4Mlf&OEKk^oY9$kD;c>tAZOoDCw-<3I(0t z2s%b(A&JUMzjU#rvOH}ur=oYMH}>o=o=BE2C{t$U=0k)dOvm>NcbF=zHu2I-9h_<)}?d>GNQ1h2NC37TI~3N@!R(&BrjfXCrTS0CkO<!A3QO$*mv zBWD5E*5uQIxdn9QOeakU*_4xJrdM8ginhP9i<-CZrNh}9pwKT~>2YH31v}oySDg?1U@xWGEx?wralSSjBgRo*3!Bveo94w#oOh^V| zf*wFw%xuGVa2<%0S+R^vLeMXUeS{JdR_21(t;PtFPtfSZ7>y3~ArloceI=!cF=rsA z2$d$33k{7T2?-4e>^(=wGY(gI$qLyrVvX5Z$dT1@nvrRHEJ!>@M9mbF-t_kCaD*iM{1Aqyc80wq8L6eyHw3oUKo@3iG>`_D|% ze>$DgZ>GyIT_|1X(9)JPEW;A^IQ!~2iDNt7b_WgW!{?7U) zk<=>e_KwJI$>hfZTK!!{Q=Zg-nnRh!C~h#AYF~vs%0Y@ues&>OC zmZqm?{g2H#d#7#E5&76nH$)dKs8{y&_K;%=*~@uZAb_YvIh31r{qjF(&6c}_oBmXL zH<`0CL{|35*c7?2S#W`F(BYUy4Jv9+IUASf?JeW^+x)>vR?zPgWjn_~?oov-bV0cY zE0$xbdtNy}ncyjAP-R&{4ZxDimRwy(DuX(bN(Xf&VU1%u!yt?MBgN)WgLt?E)~+8k zn=DGf9M-76mB>>Oqn;jq0Y@{nWD;QiHn;h2auxO=C0lX^-uoGVd>OSPlM??;*e5@9 z>(*Q4aNS0l_wSMGvNI8DEEIBX@o<22DWLCz)jBfN1BydX;6W`VJYxeGFqZ*Bk64`9 zMal_F{o^j$d00XQB`6GAo5^_FE%dq1-$DU=J~zKuSiDzW>4(W6p%Xj2eFrd#-e2H{aQ`OUy;2Q`H6SAHgm{5PwNYeGL&sH& zNx&NV8uQs>Go#&c&qP;>LTwn3rDc2t?&&Ay&Ro0c)At7>@vpackLVYbW%)mP$Aiku zoI?5O6NkX;=mmiXKqZCA_2r_Rh(E^)HD1=BMah*P8;P>qELym^5w)Tq41o*WJ?)}1 z?Pq9s(hkcUAj@&t_o(r;Gf{_oXzy;y%+6=sS*k+J{l=Rd)O`FTl$Dl~?by>o;DISJ z&9$3oqWx8IfAqPvxW{n0<34g?6K}5KTz8Cb8gp0k9AmR1QKjgkfmyp|*503SZkX@I zp5i^4;rV~rB*4!9dwh9}a66a@?%jyhbO#k0Qo{LgD>^2IQKf@=RJa$@L1m{g7m890 zm<@FH)B$SU`yxf*y3?XOBI-npi>(DTB}!Q$$S&3)&&Lpy(ixkVu3KQDN51zUov=ZU zuCPqRUn2l6qbXBZzo$S)gCU2B8Y$3W3-jkc%>r401*xr3dLfKU|EFKw~1N%WhPF ze8Qu6v32?PK#YOGQjH15CONX21CwU~>N=Y0IZWoNH7I$~BYcP?9sGmhOuTph9!#h^ zn4VYrxOc|?&43$zZ#2!qoAS!@3%_J{dF~%`&Co5^ZS*c$vO1M5>DQkBHNE)LXQ^!C zBAT3n7y#nXOw!>y$K}f&2cHj~P`JOj?;AH=4|hKlg#hlD1VKA!&djE7Jq~SEBo=XO zmdmHaF!|ztqsDy;!HPAa#Oc(ajf##Rq?Kz?KMaoJ+@ezQ9X^8Zq><9AH_+6n=SZ>a zLr6j^L(D%&_U=96mgw^Uve;a(poEwM#Lg!=UZYfF5j+<?U7>H+hZlJ?Q-zIlO*JMde%9)-ek#@fB4RO<9%mONsb;p zNNQ;QMIgUor^NM6aI2~h5-0h&TJ24y+zr;meNehhA33$kA;skFL* z)?Rb7P+ejEUNwj&yr^Mi`aw?80l@<-YY^g3yQv`4LIbDwkfmaU=wrm|BvsBrLCa`D zISyMh!m@#7=?R8uWHtb>M{ITg#PR`7%H>j0FUdr@Q?EkD>b&DIiU3FC)I6qBH=NrU7Z|9CsdFj6Vv9zs0v5G?mahzaXN7WL@l zRP3sIz9_>c<;9&p`0~f*PFjA|{U1VI&Nohv*b5fsm}4KgrXU;&1fKu3{$iD9kX@>jw{u`dlTlvs+KL3K~haxKj{MjaF`;$&))N zbJ49}{;Cr0e@D+=JV!~FTZ0%ZC?~-~?H%hvI3X4LL-1U?tl*#qi&&8w3Ph6(s0^~n zHqT}t39$3*hF;FY+0h}0;Hm5AGl!H4iL10`iG|A?T+sPcfUYhG3AyRfUJ9TbM~dVU zGl=PV5oD{&59@%50Jx>XHHoY!nuOv?VY!*s$}KcL)Ise7aL++%uDb(qSV+2@IMGdO z)-=$DYqkiYiQ}+R7!2g7&Gf^1EY8iNGaYB?g4OcB$9*zDed3Ii+P53(HypfQv((E*-!+3)1>Nl&Q!d;GLpEt!*Go zD;8!`sRgcYWCEA0uR$VLCX|CRLH?ko7hZako_u0AG)Bf=nvdaRs(>9yO>jr^oGK9~lUG4yAuRF20}ytOlc}-+G>ix7 z1E2W1WW{xN({Kj@&}f@({CviQKYFh>82p!Z>xkmoE0+h?th-i$ErMz{s3%|e@#D1q zLm#9~TW&@ySxKFz5TXS-Yf`vh*e?J~(lg+uM+>7?7xY`gI%SKRHwPkSiTCERm=iUz zu%;PX-@_J%mmtnu$)Hkv`prFH_KJ|npoO{;Qzvq15!8^fE5s(pd3HCMYBmyEu243j zNm#4AiAqPz+-)BuKWG*eDCc3YRYC+J4o}R?c()`tGaiG$L5PVml5Kv?KoVf**ZsV_ zN7LReFiUC3FK#>VbV}QSL!{0rh7?>06i>je1Q2PgMqRAtCXg(QK~Q~AxDTBG-mqsJ zU{oZ=&ug*{e6q*etdt36APoTRaEFsTQ7t(pdyzO)1j{5$*Ia|FVDKCFba(L@kJ{K} zc#h%kc7UK42{#U?tY|5JVF4`SF!}H}bf%N`x3tln+is!-4NC<$FsQO6>V=DW1d?jM zdg&!$;Y8r_R6(4aU9MpeHKalEu6Ll1u0sa$-T(9rSa&G>0Qi}q%%TMiAG0(WLHEb8 zJI>x!0ECp-Sg?!q$tQk*@fAWi0M;MQ7XrIeVA_VP)jTB2jFUF2T#P~d0N^tKb9qn{ zalfErfDFY;v3Zb@#|oyV(&b?VELB}zjbggvHHlvmq?)|dq(L8AI$x%yO?SkWZn{kh z;exL3KeY9yO*ee*gCpMHzjjQ{RAnM9@)P&m9xAP@Q`v_5>5-rRoFe1Xbl+FMLX{|K z;u0J#cXDFxax(P*68Pycxf~}~gGZXJeC`{DAjZg>0R9~Zp?~5R0JH)`8c0loRX_I{ zAMsu^zCOod(QPWtM2#^z%fKo!wzU~y9yhh6x3%Qq160(aX-L=NRptNqV5TD zkDP%!K22x_Lpl(fGK4ii$?5eu;U!K9%j2oD(Wsk;$X{Q6B-=cgfh54rgPS;ChEP_v z8PajPsJOU#L3YvB)Ye1Iu^F2Sl66QB!LA=TBe;2y7(x}frKHnsL3Z#s9Xq;*JhpCF zvI(wqFBp;RLtTjb`Dn+}uaO>>Q&6I#!M+ZvYg|fwXWIm8Qx1}xh6aa_>{JBn7Z%6( zF#hg`B;GV>QC~U^sWY}zR;^e=gAjQihy0lnEA5K<8mg{agte9dA+a8^1$*Y?5!$(D zKNT54i--P#J1Ox#4r4E;9wZnv(@UGL{vvJN3Wg~p8FBMMuI|l)1JvC=LK{{VP-O{9 zXAoBog%aa&BXLSJ0PonDSD<0L3bEKh#7#GdtA|lnnE)+-7Z!ZZF!rI|R;7al41oa8 z=$SZFg5oMkECZ%Q{9^E^CaeS%0-urPe49?|+SUKJs%~ebWY7|G)#3k(nnnSHp0r zasruSY6e-t7Hk?&GK)AeE8j4<@0y7}}p9(59X2<(rsL3u|;u%N+>?NMidBxQ+veBc>pMhXuQtSpJPy{+HY!tj~c}iWL<79imjk z5m zP#tBmTwNcR*q+LsAl$gShrG1Ph4)R;E$|UtvunnaVxf2AagFc#5Tv zlV~JhT9TP6S4Rwu*UKXT&+Bl7`z6u9)$qZFrfdVs>Xp|@um8Ze;zgBy8Uw>r^aPhkP0#H5Zu1pIXN~4 zENnjM;Fv1|4we{xgAqwsf?(cat5sP20A7HTXn5lKSN@w_%&gDq2@fVdCpI#P!`|zk zzXR6uJ2D5d*x<1XUJ5$P06Zl#AQNHY6HR&n&EosOI>CHs&^IH>bRxmos6J-_#~8e> zk+zX@r#v?y=U*WC`{gFbkpsCZs zZD>Sd3|mQ4peh^yMPLd5B^I8AOEi&)>G!#@u!Hm=JD2iGs%Ug@fGVr11%2S2=DqZ> zPu)k^uv+^e9oGEH3pCs_M%UhUy~sXpfdUOD4{=P82?ullkJk_FqXk7pg!m)XRFu<- z4cCG!AqbF!Weq?W8@1B@=MPfJvJ$wjRpbL<1&U3DB^d(v$AeL1K zG#FQC^uW|GNR^zhW{1c#*-vVHh6Kti63=)~JmMXfczh0tcld;q?L@V?*nvTrQFq&_ zHRvB2Ir{9q?x{ZRko?w%ejq8XhQ@0+BpK;FO(&XPq$3@}Qc5)#mgi+gH*WfX%wRN2 zTaWIiCwA?^*kZKe>L##FtrkpD0c26Lb;_}52KWHt*EAIp3|kDa0z~m1tJW}LCgQD7 zyg|&7x+11Syfzy2*#NK;v~8OVMAUKGzFnLv`Q!4Rfh53Q{`YX+ zj36srD^{uOf^sA&De1>w-yTiNP|BF(o`uoF@UvvSGu^V#O+D(~oBg;Vu;Y4O|S!E54jttV0<;$o52}+Y=BlPX>{}4R9M0ebO4;Dcs zoq~&(sT*VwKlwrK&Phb93yVSuI^K7PVyT(rKpbua8MAt$S&&Oak@RA-jZj)mwjh=8 z;cqT2;flu)i2Nh?Jd0Lyas1;_u$pNb8n6 z>81UBbjJ-r)cg9Wxn(#mPfwRbq7(RZ0GYo!$+Y#j#5)192*h7G_BYeFmu8S<3yHNT*#6$#Xk?PWuphu7ZI51T<202EC|n4I=}X!S(!D zsYuqrJ>U{1evcbltzJ-Aa>g?(al!K&fD2rJ%{g%5;~0!3*c=%#zYOGpYy$5Kkmdv4 z$Bm6~-kf<+P8Gy=M~CmN+ENN@6@n0O)yF^-f{DP60Wo$YK|#h2oE=EagAl^v#f#-F zwJcDdZ1ZUbk^noO?&jq^miV~SBiv&Hy`3jYYZl%1z`uS|`Qt~n$6W2NN@ZY60;#K5 zn0T06b`s00qbN9l!+tlGZPaI`7m^`Aot(B-B$Q-8f^Gdd3d2MN#Q5kKl~+{?>+|T* zqjcA;w@`jziJ&|D_0v01Pm8mFB5`u?q|og|P7rCb>fnk^2d$kB&uKI?GD83N`;Smf zKC+3yRm?*05iFc492|dBW(z84w7NPW?_kOe3F}5r68xvM^E+6(nq$! zQp3BpiCKVS6u_;6Ygk85ch1sxd{NZcdciT#uc%y9*9Nime*gtzArgbuMSS+U$n1Ef zRHZSa>}DAL;5U%O)GLi^?QywmJRb1&hqN*qIg4RVwuA?dK0$*hYQ^Pu)hyqVy6lE~ z!sR6m3iqjY+WnP>=?J|-MJw(kEd&BG(~Y!l!_|cH8)|6RXaR38k2=R(tsOzAW$;lI#^z?WV~R(O&S9A95=bzKxxoSjR&37 z)A~GZyZ0d+3)(&K^m5FTOK;S$ggJg%URF+}l~r^W0P>@s{EW&yBG)?KVYw`wlko zmf!u*qrXkl>i7Kjzua~lf7j+VZ4-(lT3C|oiexK_4I^$5SO6TmRB4PT;{lL?>M#Y_ zvqYfV>u#ak@+QOrHCX%rB6SPlwp0qYWobnP5}vx~d;jr0s;Dmmcm~NkGlirS)QD!( zq0FKJr$VhGVrp0u;nl{(ge=iXO2XO~t<|2_RA*>*g zLNJH3%CT{P>5B0DY$D?wF?GcGaoZ!QQI9hp({l)9|2!4^IQI?5Z^?Gq&Op)~aoOIw z`PK1)4QuAs*xJJK`t+*B>u-AKzuvrS>&O2c*6WNkFf|MS;Kd!~9k3*0=Xi(1-f56W za_c* ztk@87PT6InHml>4w=NR^d+)v1gYu}CF_oijb>P? z3M$Ob5VC!|(lhW03w7=;i3{S#TN)q3e8WnzWEen+=o6MOzo=oW6^%2L(+r5O!dTpAlaXXOQB$DSa z8a|R^()=uwt56XYRmDSO!JlZg=gn~9mE_OMcLtIGd->kGdDZj$1uKPH?86Uy_lQ!V z8t{YkUa3wAr)L#Qv&)(&tTMp$imXf|4Y8TTi7<>QkpPm2@H=#4VKE}924DtKdRV+h z0AU^-+4U%5o_GzfGv6&Q;>^_K1^}Mw>_(!L6t$(zp|O3f#(WmjnGqpTn$# zGYei}WD~?ZIDk1) z2EFcB=g~Lm*WdpZ4NV28xVRM7sUJ1EY<(pp|mVl0u7(x9-P-0 zDA~eSt5Z-OXd<^D8j<11 zL=6|KT_oGQnSmt0&YN3#c@HF~Vm5y7qsJB3-}XSCQjdf&Saeqtx`{SkbrY_mAzvUM0Qv1R8bLyj5>jdg)Vj8`pQY~IhvVOP_*3+gAAE%# z{@R1|wSWCAc#1bb96d}&UK)a{+C=3@hT?2zn6DJIpM`jPrEm#L0k)s}U;+K4eFmTd zw<27pQ!@b?9CgtSy!MfstC4j(DS7I*&rsviMWfu8b?eqiYHK^rgSG8)xYm^|EiK_~ z+qUzH{c+h8?Ys30Km5YAAOGj{!kWc?SV#&aPpR$0y|O*OeN6t#|NaSSEO`KW2-Bm! zmm6;!c(Wqhvj7VZfR*LiI3|3-26sE_-_BW_{8`@Mu=|~*`zCC|)HdlNFZL-x%q5dn zV6#L`8*d}$-ve{rA&z z!aa5jQO#I+ic@q(XmzepPIcR{5ghCT%?*WcZhU>(9&95KHn>xSl z=jA(^Jw!P)8z0E(lB2#<+TIFr@fnwNO>Hf;Tdh#GNkw@|8ifauSj0(0h{p<-EdUed z7WsX%lmhEkiPxDSNW=@3u#`%h=otuo7nIdg32Hrq00ORI9USNd9iIYqitJ4#TC^NW zDX_YRQCFLWgdDb_&TsrT9}l5%YJ2$zed_)dbnkr+(}D#HL`=7($3?w9Gc8}gg*L8U zK`GN6^yL4%Ooxu+{EM?_O$Jf<;w{wDJxxmxI+aLb)L5aSFRawl!@q0;g(HOCgE1PI zjL>H`S*T$_ChdOnG>r}WX;G8T$>OUPizU8&`&ZDh?Tmat?d?HU_(NN{W5@PyY`o)( zYwFj2fYP(_;6j$jU{PwAWWTp{FTL^fuV^x^rSc{90u24WMD42h^xJ;$++D1RX@R?& zYhQ)MdTyTB1ulhP#sA1(bLN(~@=^+|} zW-OC}q+vsqK&Hf%8FW}4uC%a#UPq>LMaug((Fwi{di{LU5?cyEFU(8{15`@OmP1qAxQ>0MM;3k z{WED|V3=Ne`UiCTryqvgm;qKq6fwd~3bnP7?d*Qqc-t2tNmoFx?s^vWs*p^>q8A1b z&%q2^8tgiSZQ_QDpSg_ zzlf{2T#GS@I~ zXiz>x`;qitQ_AU2X7*NTohVV$G=2=|Fy^ybWbdhVzHN;lr~MM%_vROHnoWP>H^ zuup*aqga5>T;Ev0L4|V{pp1%+okENl7B)Ki)@{!p-SfZRfxN+h2L+Qs{+Th+KZ#5Q zZDP*XdmF%F1bnz0Oi%10R^S<71PQ_(Z0<72bh6E}8At-`JiDQn_i%R5$fQM{W6GB; zUA>8HC?h$0ww=^SLJA`(i3ti+`Z7@q%WmOVU>4Q_7BhCoVS)3(J;$s@+APFTv4Hu& zZWNO!sAAD_>NxrwojSCEmR)(XU~J0DDWLF#opjKctzC45V1?>EGeA|1<*3hOnuy;w z8Ls6=X6x|2m+1#T+)j6W_;#8J%IN#ggANZo!VJh}tx~Y{IJ{w$=76fu3o-GM0`a)+ z>NWJhr#?ozUfE0E__t;o{PZXt?--$n?!AWYxuFP)Eu`qchm3BcMQO-tjdyi* z%PGS|VVQD>Uu|y|2~D2Gx7??1A^L}k#aDfP>D3>~DXv={Q>SPVO63|5sltbfom2b& zmtK18Ta;G4mddVNBS0<)tCKeX370UR@lR{qHMZn+$l7LwBc_v#!a_c}e>XUo_mT!B zQ5A*QxG=*NLk&IvFN9!gQovd>W^i~I6*|b)&MvGVwJw1A))?7Fhr#WDvn1-N@XUwsBiZJ`3?u<|9^AzFFa%q7n&d0@u8SUjq#4GdQqj@YLi^f# z;0Ogl0q7Cca06Q)Qq4*vY%wK-tPz71i6oc-EXZsxIJyrAO;ZJq53|rY7Qd)GmGWz@ zpdCMerHX~Ue8FW#*{4agxLn{&6jnV9^Ur;0Z;JzIl>8CyWyW-WA)e`II1eh6M z!BR5^O>bz~@uSav;8WjRi%e@WShB;>NDL{d5*Z7$4|X1-!!JHgUB~*UWbJL(fWQq7 zxCe6Ck0lBZDb} zuDa_kl*V{O!j1!^{!)~eh$JX1?z}uERytT2Y)wg!hy=IvBsh^-mQIg8-P3>~R3s*K zO-X2EDhNUZSh0u|20`NA17Y`Z&@C2ar@~#Tz-tlc)T(Ifbyp%*>8Cqx{V!U1Lp2?; zdFZ1LJq`36!4*X%4xSlEVErOq%HD1om=)kj&lBNDes@!xvV$BdT2j~iG2_L=`jV)NV#MEjTy?o>t7_6jJSq3E? zSgmYjGH?iR#62--QSUoGF32R*NK(^)39GbrDYYGWjcS|LQBA{gYCd+7`dGVnd_;)a z&%qLVD3~0Ci9yOibGaKdjS>JX--|hLx)kI2i_XE{3v620V)eOD`-;XTMf~zR8;>k8 zIyu*CbJn(05(|a=vWRcmuhLnDS-1i1f}eip`I4_(4l}^%{mGV`f%kj{G_ywOeYWG& z{MAoLNSk*{cVA!T(uRexyxaom*ia9pBBq*SHqk)OX;Fg1NkUBgz;UeEi5?OEVu`r) z!X`48tz?!QL7~X8*$~&GLU|@CQBy{Sg^DW|iBg>$5dIewmI@V~<`XB#0C42Ro3&y& z7RywCyeRUbX)qb-SHC$(qkTtc44~ohxG5DNlb;S3v_(o5&?t|4BH*}(LJz#0S|!dC ziGz$nNqLr30YL2H93CB~Z~gGMbQXZ5gC%H$`b=h)mQr&~WX`RI#9I;NmNZaKX&KgF zwImh|#!tWb-JO!o#<+Z2i*AL%Eqf;>|UA7fK zhEgC{t(?8f;CiVVgR30LJj@4u))gQNM94GKG${2!Mlt@)0Utl}u^MbbY{(|AUr<9j zFf+0DVb*1*SD*S0U9shEkxhK?m8VIYQAm1lO|mxcoTAR}&V~MSEVjSvjL=~Hvtq}W zY68vy)JOmIj0k$fym+Wi;iDP`^Du z6&WC2FhGnO>evgFR-_EfC zy6&S76<&4cKkCi7C1EVoQpB8PzFC)~{m?7)voGIDy(jmOrE(qRlrI+NV@sPC^f{3F zOTIH~bMZX0=y)nXPzgZk=y1`>vJ{M!XmA>;IVfFvdt*1g8Xf`LxC<6;A!TIcimX|# zMLzWEufU$Q1{$f^wEwy9Qbth&*{9u9RZ)o=*@ToI_gw%rT+S(}S_(il=xBR4Wk8Ug zt>sHGwzv2B5B`lY;lk$~#(k8M*D*+5)KSZnNL~`z!{;4x?pHpJ>tqqXfCxYps6KW0 zGZ6NU_sYY*saIUqlRI%JdlctD_MIn5zH-^kKoVdtyIVGIJ1p7uz}KZ6%{!u>`ud}r z>gt=8xt(L2*dobBqL0JYk201pWXw>%>9kQ)2`*wR{f>bX6!Ae43~olIqzgb@hD&(( z?}2tO&p};AYebEV9Kfqjr?$Pnp)$l^GjdA=w=mD9V{(kz`+E`Rm68tGuNyX8MFubr zS)ki`vd>B@YO82jLj(0%2f)>=5K#oK#xN%q1FM{6e0-A9;Xd2`UN;N{R zC~M(#pSU_zQn7GJ6n*E674nF()4}H+#fpr2(ZV{260p=C3z~xsHA`T{D;Y;SJ6{HI7)dHMgi=M4Clj-9P>E^bs;l6 z18kitV8P-hkz;&_T91J_E3QJ!Rz@m?j0WIhFU!lMtenDgWBC10(6&PuopcAEOXRchf!x8fhR-(Pl~WmF((jRfTsl6>%(UdqHv49F-dQmg~W;Z z9C6Tb%Cwo3mRTYaogh;e_l$KyV$k~-rkQC$`Nr{nCfVl63?yT)^W;We?!&nE-bdvd zYqmvqXcpwBq-ZuVRi4W|6YD*FL~78%g({1aA2BK)erL{H7CDc@a*75#T!M%-FNRVb zaQ)U?MH*89;+-k9e8bH&H8DVLWOqjW(;z~qq@3yv^xWhBMma^bP-L@UF^|$TfXz2O zOAZjw*RQV@HJJ*ypIJ|~r+0uF7Ow(mzaszuKmbWZK~%u8Ci?YnpF=WFw&3Vx3yK+# zO3HIcSAQQJv5wG-AO9lVc+-`%`RXgFp?)D%XJ%8mSp{&4(@U^;AN=Iww0uiB*`bod z;Uscw>#g}HJb3MMmGrM|uvx4uI z&)$dcRT2KiRmJN#9=``c>>rrwLvoV=yAiImxk#^Y9-bXFRE0Pv0A~jMwO0}GPR+vS ze26+q;(4??gS0D(Y$zjTRMvLuQ$#9x;RYgK{xX<-=@ zaSYIK1)#~G$?Bh(q{ys|CP%u-V9rAb2RavZN4ouu$cJYo0Z3 zTlPFlr8Uc_vZj&jgKfw#Hqn`pDXJ;TClik2%wtYCQ{oy?-0G7VIWS>;&Z6ZOD}&zygjKkawMtsnr+ z43{ti*{N5p^p6iMp$9&>4HADvC?g69?*S)IrKW1g?Vh1mpFB&J5-sXt--->~7e3Al zOEyg|p`uc_iE(e_=Ak)4DBpkQVcK;F%p%P+3beNP;S_sDY&ik$S{?L%80- zJ+IM@mtF&ib9OcM5$NP!8(&4XGWyP&mZ^@{CpdNHkKRFPs^DtnD8k-d)ZqD&5IM8x{J^yY$1 zxS10rO!~ZfQfiHn!0d!{cJO3ap-umP;VK@*=Qv!)E{kNFM>BAdZ^S$rVR9(%_Zg4? zT;p}CZ#Q^+p8KrUp7NQgiMV%mO6r^(iiiBHof$+%t(3IcRao#wVA1&~4SKE7FeKir zM}_;B6MJGvB1r)=liFN_#UGixnoKIMYD5B2ov6iRWgCvENqIpGIccO9V%RfIQ5UPk z@mgrX>f!EXZPXN4nZS6I(BukQK>Oqbm7yM!DH?aTwh3y+aoZ@lr>DgG94};O;qo4K zVTX|1qkz?k8X#(FS^~XVE%l5}&@~%3i=?U-59}c$uE9;vGF}Wd&cy*GAup_T8&qo2 zsJ4D7H7r?6`6bnK?DZpL&H-r#==r$6g4ODRR+PBZMSn0AVG2xptwup7Uml^&pm6-J zuiZ^cm!jAgErbmKkMaC68TJSmkkvZ{Z^0W!Y?P4>4Om9N^BP-%Y<&;frzt00C$wkP z@Dgx+@4=UU0piD0s;plnEY|%ye@s>NE9i807rE^=I)3yp9XZ=e6**=B=z_rFV)Jy~ zHUH9Ic@EiY!dk-j?8gljkraniz)N>O6soN>d&2;~!yIheBY>DcZa^xMb&Ke(Wggae&d z=GQeCbod=yy6oD7MLX-BrJUS+VY#Jh;SR(ipNfPXwkyXSlOonCEFQeh)}0KAL0n4G zJ~)P2+%QP)OW=Ce(6v`?ppl_|+WFtVpnM||lK@!n3a%KZ0ByLCc~MtNK%v-vke>PZ zf6|%byM;xy5%o99Yes0nN|_Z0$s@b~X4PFosx&Of9yEY`wko zfvsC96WqF-h%-4g30El#Y$yDDy&zY(`?lL?Mbly`!{_n~%TRujhdxNbSTszf4dv85 z2)8!~8yKK?QD-2!P-76D1+o69H%J+fnM#ulz=jVuPh zX6p-*2Tbc?idDTPIi(ZrtL-Il5NOJ$BrGLWBtQam|sFOwzEP3 zsibxpE~KE=mtUfcvMNePX^$Fn%G8T|u0McZb3M8w&rHJ^#D-<6^L0`n#9$}@qZZ=E z%y$j<2-6zMik@{O24hGSDsb#FOk`?8GI@kf4%tB zUDod;0rs-KeeR=9diUTa}FhMg+-;L%dV!;v-@Cu$^qaN)Ui9uX3X`xl8MJYt3pBO}HE;=Yrf}=7VY+=w0e$UDchaK9IQje;^ zP)pl@c~DT#i5Tq3O3i_Ed;7vIQp<47-E5l7NjcxLdl9JSj&2+fW?gJalw<>J|7n};)y z1lW0aQ!lq6ZI`T*KmE=7!#98O`wNRI7CaR2dyFkD2jkX(vr^}9uK-5|NM3A}uu!=q z#WRkCCt;}pLa-=CLJ&z;>sdlBLG}-Ka(&ZU0O1CdxgdrHpyW(qJ<35?XuNM|5V1j( z5Xm0vcoV8Rd1UQ8LaqCsr=xE?MOKKkAK&wg&@<&28(%{OceUPVro!@SVG(Q7(m>KL zqc@JWzy)fcn{T>>Hf*{QwVVqPb4?Kxj2^d(hI`wn?da=}+=H=#7%;OHaS~5{b~+NR zpdShsa1doU36RBtjAN#~KGejjX>?*3Zc-yHUa^VtP%h*g8>aSwA&kQaAT?9(;g_JI ztD*{I;4w(8r?bi{MbY0|9hY*EG$MUu}H;+<+J>L^ll zqE0d}Ju0jS20*S?^dj4nV|b!uf@>6!fHdodCMie`*fpyJKxSs=)A;Bh+`3N4%SFjE zHA)%-yIp;xf%=QqkR{^1DwK(+P!iMEwx3QP+66A$lQcTeDd-sCD-@+FDz#cHvXj;x zP%s8*(TddoU;sFPl#e~u{0!~i^-Fqf$0O8n{B>&C`z*u;T8WdbGIELun+d9@uBC>? zC9t~PbfnKp>F9$8^p6`>twUK(CQUk~Xt2MFoYoVth_h+&vMZ=0FNY4dpMiThh4f&H z8a?$qc_V7Lp^KqVlTHITUc?SPiG6%SD;$Fn#Ykchc2YT_F;Y z0s&5B0tYi5Z*L5!{NEgC^0Q!O!htMXmzJglu*d1CM-Nf)f-KNWf~g7{hqpH-=SVOy z;avE~uGc8&6QiglO~WRKUHmi1&gFVp4hbZfsovS2x1aYf|C?p!paz84z2j^%tmhCJ zkU6XY?IxFhG0^jdjwKPNIk67RU@Wrm?u|DYa4F-vm|nIruGFMO+@ojZff?KXM18Iw zC?9cm|RH`#!!oe=l9LHm}1_n-#Smet7bwhd;4Wmu{+Achz-~ zs`}+JOEzMku;jR8!(ktXn-Q6;$`oP6dSS(~NS%lg0!ZMngk|9(-_#&VD7t8B=oF2d zJwyX%_R?_YX-Y3(_iQ;86qO4>aO>zON_uhxNPDJ+L9^&!Lxm}JKn|W z$dn!KIYI5mUV~-(9GyA(2K9lmupjbpAjP23{x&H79HtX{pP^k(eoFvrZ`(m+47&i_ zAuvo`L+QoKpv2>%w*5P4d}M&ksKHH5LpcyEYc&WIPM$sq%Ti5Y)b_G6k8?IaZn%hZ z^Gd1THbIAWepAFV7c9PlmNqoOQdH65vwdWc`DvtcFS2NmO$-<2^tct7%#er!GNtt$&`qF{6qX<1fvsHjAxP!6LISI-{S0c_0 zl9G!zfGezXb~h_@IbyU*E@Y7WN4+4Rm%suwqQ zAW;_`v63RUhDz#+ki=|+G@Y9QhzTnVaCyQ)O3SZD!DE!pw!9%8r3+U<@O=ZVy82dH z+fav^&lW1R6w$Glen<_QAD~TFK;8~XUM_GHXRp174($3F1&}Sg?cT3~yBO?N9toL> zme4e6g-^crLsDl06oRnYT|S>bAZa$C1V;&N`&j0pTz|6+~9aVZthqm05XXBV-v_S?!D_82+}`61zU>A1Hk@6 zrdb@`2c^zJdMF?{x|-q2H_^KFTd5l*J;$LpTekW-WFh0LhwF(B%}w~Fd}iwuuHjin zKY4AZ#RecPuQox*&xuW#2;O+GoE+04GAme|Rde38p})v5jzPGAlbd8RWqj7rftWcx z6Z20T!AIeDhF3h<=JgCDE!cT|doRi0WK>%#ugzE|&B%~Q?RGl@Ew?|kb|#Mc<9Wge)96(s9$ z-LXrLi}>YWc&e*kPW3A`Q*P-3#9zyV*f%FhooYEuuN>S%XI_7m#=4J@fAkO%ruvbD z?1kGIl!t|j@rpw{AuDYJ4TyPUljFKD+voWJU2&v0r$aY3w!%{Vw3l@mD??lILYCo}; z3ab`VF{m8}+D?%Qe7)X45d6y_Yz``DaCne9Ph;#xBT88csPoX%lvP+m#TE5bT$~Hh z^JyCAxU3OdJ=0*SsN;wM|zKB`%It=Let?0X(oxKb!1MFDhgx2`XA#y|NrT%T)RLm(b; zoOzzN6(rYYfmosu`yrIzoQu82@%>^qJ(!p9I+E5HcrV&8CaC5_Lq3$|fxqnx zg#jdTjb6MKhXtzyIBMWx456%rd53M*F6usWoL+hTWjg!j3uL$Tkv2LB$vY>-12$4+ z*1>JuNO}-hFo}TyHMCmPJaQb6!ADYzMek&;2l(5RVL^TdAtgMDFZ7z zZP^Otm@0!N11f{r9H6nK%7Cjz%$eVxJBC$m`1Lt!mg{9TaB*`v($2>YfT1ZJw2K^b zeHY^s*8z%QzL8N32{*T`19F5Qr6>UF6XvOF-xGpVM9NkpT)1<6;$Huyjr+}6=j_I{ z_a26|2>}Ugri^7P1gjJaLGax0I6dIJb`KrL#tNeE*eJbQW01y94d?SiMiB9Btw}OF z+9~llhrS(&203$>W3Nf;_1z|Mp1hX?*m-gz{|du^rP>@Lt2JgaWq&v|z3|^sQgmxI zF;}Y}p(kajQf6#Oc=8K#noB8IY z1KBz(Qgi7t0CXbjScQb4!0Z&j6>&`L9XRgBi@gQMFwd_9NiFFG3&{iR&j`4InV!*D zxQKEpSJK#Qh?dkhP(^JcjoXIkhfh2~S_lVRvFa)c1-x|PjVH+ylhLB3SHhY!(wV+K zVF8s^FQuri1lNOrKra}XvP-~?4DySoULbjv5kABK#0+|9@zS-laPe9i9k$Z=j7JdO zyHGzmj&aIVTAG=eCTn*qXcJ*wLv2Qe@}eTh=?xC{A(^U_9{Swp(3d5YUyz4*D?o$+ z6F`{&R|Y>MEO99jV;zGIgB}|HKKIO^%3yk-HV3j?vcq-3Mv!QPA~t&A*aQ`3YsrsT z?A$po^m%bzd`^x{iwbdLPtRVm1z=69kIhRhR(tcRkkyFK~eud2ARb z*8xutw~=qGjU)h0mAQ-z`E_^?UvB^`TdOQnXK#BMhx5h*pA)gy#2mfz%-A}~kwK2{ zM+zha4S5S<5&x{zb@sIm5N_Oq<9Slqa!pL`J5P{&Wgg8y5@6@i&AfC&*@o{$2j#8U zrj|#7Kh|W|{7Y(9Wu;7OS`52qYkYP>7mn8+BC_*Vo>yJ|9{mLt?K*(DHD0!8UFuMG z%T2kZi*m9GDxxi?PsnDc#;CDrHLSceI@xj%gb&rQRAK3$coao8aL_8qg!r9A3hh-# zAI*%NMGSI;P(v%Yiq&Z*@CHv(TxkO3T?NW#j3hUekUT8|prWR-l2Rn%NXdyF1*tG5@1qIo36fva*(Xl*4arF`MGrE#_N#Sq@#|`lcWf+T;7-T)9SMFUMK59ve8`g-j2hM&c7V zhlLf*hUdk=l`$I|7u54gu-P-idX;Omv6;bEsdswxWBA}1Ja{7C&A*JdlWo4tK;r+J z`7)a1I4;EuARbz%a5{S8QONqq>@f0HjPhe5w`lbI2$L=*B=q;jqFYg!?%K?pd(!U{p}zfh&=@h8bl2 z=~c84+NBy~@{V>KhyE;x8}wP!+u2Hi$Sh?b_S@0jK>;kd>sG8M9mL*Sjvt|=ix<;^ z#$_})+6yv^Us4>d+?4b@tm9G|K6{WFR&F7^DGSFQq8KbXV|E$!op>1vJ=KWO)={4o zRx7Mcj_(n&Ss{oZlC7lRA})Z1>X>pMCObtBe&zwX5o}W?lSu$Cqa4?sra>Z4iTRt$ zEauoMTdxeJ0ts;^7<5_4fFEp~GI+ind@uAx<73!O%w;>7nHEaZgy`3gou;B1)V6|3 zktrlE+VEMH4&=C}A{F()J$vAWPZjQZB{oT6uLH7hPEsM!44qG$2A}zJ8e7?Xosh>N zEK|Nt6oTox!X>0-&S7>9W4;)G{Sbz5qAzlgoFq7h8JaJ2U7k3^UcnF+1#PDRF?n59 zc_1)7rgV1gegdC*m}ngk+nS8K{y8`8GW|>vU@y}f_t)$8I=R#NdRRxaM4MCoA5KMP z+T_q!OsDXv5qFeH6snL43!X}AsfASBN8^z%6)RIS`=jB3G4zR7AC52msf&n&%F5*S z6R-FU=E618W9?0zU_7cz&yul6t`ndonH{3WRo8)uDUmc2M0V~}Aci{7G_1FAhyVI!2G1TN zEizb{70TXw6mG$3q5xv7i0d-3g%8P40v|w+=TFV2Rm;}Wq9v;!rxu{@gU=!6rlLtt z7#7h8KslYP*0VGL&DZ4%n^5aoPiH$$Qzb0P%pwO{@#DKp?g%&jJQstL(Z zam0Lk$N)M-Q&u4j3=RO4P@AhwC#fNy;)tadl!NUE0A_mB$zVHw&Uk=wcfN_qbpYxyrm~m5vg~9Z92mt_vL@hfZm}OVEhvTqVCBkLQ zul^A&QP;{F4+a?o7m+;0pU=md4SLCrgsN!31#d8twiH@2Rjd@TcNVVa z7(5^2=-Q8KdITU}l(mWbfX#sfS?8iG2NHsovSnfPQRVDCG!gVq--f;-9o@=Z=Kn{M z?eAm;k^uX6a-;vqVX~_>ws`Tqil8#|tO-#{Bwb1XfTM>!DMPM~ zF_y|%v;p6uplAF;V1S6it=5X`Fo7+ITg5{1$1Wyum|eWeM`bcqwN`7~6x(N zGDZ9@00IXOVw5FdJu-mPcX+4+b*VETMF1^eXc`OdUVvP$NYs&nmsev(qD^M009Pg) z2!V`3jTmor-AXLJ9@MdBBSTq5r#d^3fCQ2TfH6ptNrH^ii8HTKY27+nw&F^}JEZ{J zE*M5JYB{9aB64y|q42#GvB9Ypd{Iyixu`KasQ zZz->&4rCcA)OP9!#ZdAQ4*D=Y1Ki1J0$jJ=a07khuDh{UDHXuVF;QWeV*TeV+`Iw^ zD1Zq9Nq_HACa>US>!0WQGhv$H&f>74GG|e_kv@+{Pmp~=^)=^7XY8#$B?7Dpyhh* z3h1}U9FF*q*t9N=O+eT^+9{tIIrabGh-N$xaNlb>wt=X&T8& zc^MgG0KvrYaGwA*IY4F-yuOgdqcmft(2|v;W`f$Tn*6AD<;7lxB&eCelW--%r3>1{ zu_+`LfiZ~zj2HTezLR9gC`9tpEV4~e&XL(jSD>D=6vFCooYL{*$FU(80fB^u%(-RI zjOEfI@F)XdqaZL)8}mq?TT8>XG0HG!pk7i!1H;20lR&%`mekBh8wmBSGy@CS-G31M z@Ck*V$%!$M4P9~X6DthAk$Dx>`7h(kO znpHe^QJhP~);r>!j?Py}V=6-I-5`L~i|lURz6p@!gd_Zpam;=4g3oiYW&%DnE0s8O39HYhY@fslVIa!HwqU@y+aiwb|o zc!A+%@Z!yGkC$Q19C1(fX;Mu~kR(zQSL-7wsd`yc!(#DaTiggh_drtZaRvyu;{u3% zA{&@V^##~6@Ind4=O?Re6yoZssrFfJtIEZ=yya3M1h{^-ac_4Ia=S*yY6keUT4yF?NVTRjR88t8=!Qii@U zlhN?_B)MT(r+^%vCy?EmVGv%h8+-=TjwxCrtV07$KxCk9VLg5M%U_0Dyg}5hYB6Sx zgNE^77cp-#m{20WurM+A=k5f*2QZZ)E*fXoFUuOVkW+(<(ZtTAHL>%2ATm_lLcsI_qAC{{{NF2&jOk^%!AVR*ay*xLr)ME+S45WbRUy>Qs;9aSj0F6yyK#UM zkEHdAN%(tgNr3%(yz3Vo^E!MVtg-aWk}}(1=O>Xslv0k`Q?M7wB1kC8$}Iq?dLRYMxQJLHLy1&KdQ%x^<{Y^1N1yfdIUMA8qJrzj9f zWVIG%JL2q9XqSK-!b4NjZqO~-Nsf4$eYA)AKzSH-wDa-^FkL_?0P4~1LCR^m8c9f3 zkc)-X0ZvTJ?}p{7OfLe7MKe zoaY(DI4B`yq`V`+X*LlNx#gC3%LhL2ej?c>9+HzVCI%j?_G~;S8jG4qSIlYa>R{tR zeNcgjJHXYPL&-!=C*X>nG6x`J`3aDozGA2GR?ndvDBaXp>A}?~RZR{QNFUxlDqnii zFBR6btXooT1S#~9IlxI@Pd5`Dtmk^W8j*se$8|O?)fFgYalbzQXCC@D6B64XkJTYv zN%n!1t)~KZIE->7KE0m#)6L2vz}Xfh3l8R#XMiL z2})|prIX^vXE+r?Bt%ogY35O{!5I&Bm^Qb`L|Cc6l4j27W{GS=E_7=Dhj_|U+%yOO zO0rL9JbUrZU;i0+rA6=8{~Z?J!Ot-RgSz6uhN;ig)Ye_HfBTlMs^+e2YezR_GYeRm zgmK$Q+s9%fqmjpXK(nOriLs5{iML-IBr(AUHK3(*wICGIq$c*pSke5?ex&R?@PI z&S(5>GCVOSXRW`Cp3@C7H8~3G=J9)N!c}LtAt05ai#s?oD{Gf7A@zF&j_(0^@GIYy z+Kz$&{0#l69_ow%T4yf4_VRYn(Q$`UhP*BzW&J5nRDpROY zEMJMDh$@+9ogf8TRcO$tOBekBy2>R^T7+=t(M$A^kA9TapUaH+gOZB$`luUEf@`G2 zCIxA|ud%6-mYGTuO%~3ar)KKRD-h#hO9;!O^tk}19XUl!`z%3pJ_| zUPGhYGvcAXRN-J;8XHDzoLeJ%$; zs_iyew56xnknvzcTuVi#q^f&8tl=&;V)W^1ZI`zb?IFz=yP0M`;u&pRZO zQn%ttWrHVTGs7*PZIqTa?*cH9I0!LTQt zt*vivyL9WWfmCBtt-ZOmlNBp(7H@To>FHf8IR~VjN4H6B3x28eiRO_2oE_b7O*uU_ zYMg1G-R-i(gI8tkfpc;;*KSrhjb=5^s3fTQmGC7)H)>IqXk_N;cYXNF>ld!Rbiw$* zlc|H-?v|SNRn}(A(^Z3aidGaiJ(Di9hcgL;CX&;n6B|rQPXWV=B9mI4IrzIi#$C~3 z1O!SO7KyjETjCW9W!YMsX*zpNf9bk&)*C^G^73+-^G{H-Y^Be1Kn9#Lq32 z%9)Kz5Tz*pT+-B4hbJO(d^jYB`vbD~s9$#MpOzo(o|K1?LA-POxct{M(?+Gq3pm$s zu7{3>VJ$$c*mD{P%{x8Q7ya02 zyZuL=*p*Jl z-^-KdftA4*k2mTJ6an^)dgXt{`<^Z=H@R@qbE3?exUiya$f?5;NyX8nXqHk>S-K>ZT!=%>jcJ=B*^}$o zJ1euw8lkb!fUN@Vi;f#^xWRV#@ZtRBH-BV*X=UxX9ZSz^NhE=9Z+X&JR$=e!J7j8n zsz#)(6d~$rs=AiFx``mVICxX8580AmKoVnnLX?%pdGTyTNZH?+zSrU7;$ z&@2(r)X`0{aNXMw(2vSEHQw1!T-IN7mDE!s-nRF7@t_H;zO#9BYHev+KTs-)hNChX z2s0yTsij7H_OfNNa^XVK+A#?te&OUjDj~{?zwFfLQ91X#^UQ1OguM`4brN-Bq4$*o zs+AQL1?W<+Iej?jYqe5ibYO8a?vKlp&y30Q$7bc}{WJ0;!1+Uf^Lsm{bJ#v22$3bJ~1w8Ol%&&d5hIF4OkHJb{2Z~^F-Klrt+E;7vm7n!+vPsg2);XQDsHpW@O+$rj-ndPuzCzMz z5C`J-DMTOqrw&J-# z6KmGo{N2iy=HZ&A&eiqJ9Tn*KCW#yD7^deP`Ltzb;5h{D2dI~^Fmf7oeaRA`SZLeP znwnbAX^J%qIm$xa(JYLp^wbdDX?-&qf%O}jlie5r?Am`o%BhtOpExMHAO0_C>|G}5 z(pKu1UITRMXw%wQFE_vI-BQD5L6rLn$B#`>N!Bp0g(Q3dLs!_<7=ars+e z?l#MJ?zu-6cecnfL@hL;OCp~b8XuHEEJ@n5M;7-ilJnNCL$~-`DXTy%pYe`EU`n!) zQI#o0i8PKpZl-MSzC&`+#TP?zDmUj+P@O+C-K>4Gsu^4c$g1A(X@ntarA>zU&~8^! z!*c)TQThF^4a?(1t6PU+G7fOg8Q{!IWeKU?a=R?Aa>}wAr!3{Rq|za6Wp=6HZw>%8 zPpa4-%gInABm2S`ITp;w6fd{y`KVNvq~+XYbq2UJl{|lFsJC(yAa9N8l|lmK$(GI?ErYK=o>4@ z>hlV-RCugL!d5m#dcV@hqO@jBqvliqSKa&RNPbrI3UsqU%23NM?>L7jco{uU`Fv>f zux)O5_iymTA92&q^n3)%kHzDSIs-rX*ZD@Bf#Ul1Pd!CW6e*4?fT<$VTL{SJgLF!p^BebuyER%9q zNy-)rW~XK++>vZ@%x!c0b37US{OK3hXjWIYLYQ*;&Rciwax{g*`A=PRQRY)$+q<6n z;Jzne%%bUQ6C$KF{0N$x%~(m4hx#eq>0V! zAPhwW8cieG!7Y}g9?9=h{A_d%6{0lKbXcSlknJFPZS>kmn*+Lf^EsF!yHu57(MHO- zt)Wzw_7I^);wl306b_Y6RT7h_LC?<@_i5cVHhx4V`<^na z;(TJR@EJ1o*cT2&m&w9MQyIf)$Wf&&tEIYg70Cs6A~MnEo;m#ZXL-b5$(l6|c5Aw; zc+qG172Z_w&#%)NC`Pca(+m5*ds~O|OR=b%{?LcA6^)Ch;-g33RnxK1zV}oh=gTLo zZCwiuNa<_nBCg9%Q%i>|UC=8>kDovUVoIvZd}1$aGATSiQD!Wcr$fbKE3?5a%H^vf znZ#w(1J}B3u6?O&YW(zgUsRjjef#aX4Ojhzy>{sa_m@8WmVWH$Qo|!7R~2z{nmO{pLe|LfAkprR9=>1ZPCO+y{_(%d5(ryU(^E(* z9yH{rs+xNGcl+hp&9I_%ZRXr1)M52C43k*jSA5z4)@7GnhM<0xNe9mZEZ;$dJj7$j zXhgnq!JzrOn{hda8Wnss72@4dDHS*S-rTLD7`{f zEP!mpmg`TyeoQW0QYrP65Yhm(j>~*j%$%hV$f%_CxktADXftVIJZ-B=+4P_+O?3S7 zhh9fsft0X~O@o_kNiqzpdg=t^CHiDx@j88|RdMa(+^6kLn%%IQO_qK<6#F!yH4|$} z4M{(BSw0U|oN@|t{nFa7KAw%)kHK}NRCTP(+g+Yye0Ib=bKsE&a{@FmviW$K%d-Zho<+@_3o=`uJ7{YqCEVD8r~=WE z5^GGP1kkFoQAb<53=9lNA7r4$ayO#-^$>YlB|6?Op};6gi=~bVmnY>QN{FNri_nw1 z+36^WWwWX07=$iN3bGnLm=I#~JzvV!ZCIN7z=jR-pP&EBqwe}8c2{a@B_iz}r>{Kc zu-UUw|ClA4iR7(TM_vImlSx^;Rc+M9mKZ?Qb{&IQd`&`fnLGRd?H5Ee)ZbhvCZ!S) zY~2EgFa@wFgRN?X2t=B7Hs_S4x@zfOyb{9Gpggv9hb-!7#k{>a$8`L*)tYun|$>+0nC zbL-`;0Oy94b#m_V8tTE-vZSk0dfLjQ4S&~$YOhq2r6~2e*cjNwMbv4)lgLz$Bt5|o zZKHMP!6|7h&GGyyQr1MZTv^3Vl~vULRQ#eI@r#vb^~mE7{D^FV6Oi>u=#?~!&8z69 zLr+#H2`EvF50=cK#KmsLZ0a;c?4;g`m5u3{&606Z2}aeLHqX^@aMQk8ZyiixTDKE{ zA%L599cQ`OBotv8(uu&B%fI)&y}vBXVsu0Q7{#Z@9 z>X8AoDj^Il?1iKg3CW(lhozpLM?2!}US%1RCJf9BK=N_gd?+oI*-8j*GNts)Ug@+u zSCKm0Pm9R}r(*g4i51@9=FPcHn>NX(KmF+>b*_!J(w0Z8;j!9WJhU_w_1j`|r&6r9 z{AX2w&H|_wyNjL?qMX3sZlanp6WwHa{R}M~HcuU6ssO_2J0-f+*e`>|t+vtxAt=?C zmB@xm-Y!mSUN&!kPF5i1;32Jf1ml6h(P5%hr}Qpb4qLWHjt>q(+Clsuom@W(K}~H- z+C<%+mo{ z#54H3G&MC)dtM-$AKfBhs_Qj?Y&Z_cy<#M5PFOe@V^csascc4}33)@>upBrpslkH_ zqMNddHB%8sX3^*j1F{<7T9^|Rt5ETe5=;b2=yT4%_D)46OoVK;`wVa^_^N<^C2c*G zlsoJ$cP0@SclZxJGLp(>Zek?;+;n3|-K2OFXW%C@P)rg3WG;$7y<`ReSFIyi!{MnD z2pQV$VKs{D>@ExCAyaicTy_^NYF?S$t*X(%rK_ye^w;-?3M!ytIe7 zeNuwOn>OP6sV7DgL5tf{X)AY@WDrKkMbgP7)Cg~MJKUjkHno%2osVWsEemkf(OCqB zabm|~F;fpe>TV;ZgE2rWBp7@cQ{(DnkzQNH(LC~(cSH<`zO@gM(5!pEt>Hp6Ug zSSE`WE|<3UE*V8}YSX5TvT^5g_{H{1ATTQ>C^;Eq)5$S?>mNvYb2JEIlOLX0&!HZVlp@$k-njz>^mNi{l{nJzU}J8%lm79hz;%l06+jq zL_t&|;!^=uWR+8FrdM~( znqJw>W@Z2f#Kt-wpASG*Px?y7>BnfwSX03zC}F9z0$>_fijKv!_K|quJ1~<0|lSzI?2*wm<&zH z^zj{hpCDptkWz<}r)1LpXwVfWMd!5IzYmK1bt)C1xM~=g3bG2gdRW%1S!3UQnn=>p zwX!#wh%8FPLXK3}U&12af-dauq~gJ@^7eI^>aI0*9gkB9IsmNJC+81M9cLqc6XCMn zBXgL*dTxu{{6}A)nrV~1zM}{`OiSP332ARzfQ;g_iNH!A&V-0IwGYzmR6&P=7{p}X zHbog}K)hlqnv_^LBAsaQ-gM)8B|(qtzkL25#5(pPsqa`J8SL(Qx)zga^-2Fpl(D8} zq_Lu$^C{Dpzznd{bgBk&vFVdCiL(r?rnDSYNC-03SHJo-T8nD5&WdWWKBI6blUVD* zb!ZZ|&TKtR7&UsokN_D;%`|8ZQd>h{PO%wOoQ^06zLrG}L6Q~+~#1fAz_ z1kzgQTr`76ZdN9_jlnKH4(TbSgeQnnhU}yh7R|}_k1myEkeM_E?GGm8)-N7Jg^F}E zvRk1P(KkPT`S+F(A>)PvXlwMVtwbu0p*QW1)%WSe)L`J`uzdcX?vRHL$7Drs4P!}g z$+Ua-RUVwjfF;jKaINNs_DKT6dSBZb2yY!mjKWH~Tv^6y{E*^vs8gr*cv`>(%uF&eOW9x!;H@(4JqS|d;(^gz;P6I!#$$a~HWa^$6BNPqRbHMq;=_s&>>Kf_ z{~YgmaBwi!0pDhD;%LNIUO#0CPv4yNR$HoTYvuWa$1N2sq?+E;B%$^c8X^%urVG19 zQ3zDfhSDWRPY%i8fr9`l4gW+FKGLyPYMp_}V-icnEFPE7URL7CvYck4nZz_;^ZC&H`1pA4Q}QXxX4z~H1tz8w;n}`SB6@_y`v73No!-c)Tsro4H1)Ey zWH2PV^~CtJ_`@+Nrw%#4WUKOzjfh$o<Ca8ju5${p{xs*%$J3u`z{cREiK_VL$%Z4J#>EFm851Q#q)Ml=axGr3 z9uMqj9n5Kf)d*6@qcv9rSN*O)t(DnSCY%4-W2Y=(K-5iSsaRPGBlzCKLHXCGXXN{b zg7Uzzusl8(l`Rtq*)yA_jVMcP6gxbI(LyS@i^6Re1gNvB91@1O^pW+|a>bikOuASj zqm&LU8X!QBiWK#Zw`tC(*i7JVTRr*oYrgXUa+0e0Tw5{JYU93j&t5%^B zHgZxnJuxnAJ(#ak)75uyI#AX3`m+yx5a&}6SBpU}wSO-yIoZI7_y?XP{Z6YE&$gHN zj6j8^g>C$-QED2nCF=p`P6MhaIB^~&M(JisTY5+d=fac6GNJx04uJNLGRe$;aViDZ zpX}Iv_Q;BVd4tYC5n$h-7yjpY+f)K`Ygm{1uKH@9_sI8`+bp)FmeSf(Rb`od+b#^X zn`))8xt;W4q4iG}dcEmFr=Y81{EHVYVX@B2{wH<=3)oXL5Q^r(*}_)`Fz2&U(uOu8J&r<1@U5Tk-Vl`fM@G#euM52aM;#}il*Cv&j9r}S5>G^u#<;v14PABV zQLso&A4T#IFo6&i86&V(vJAu*J=CXEQ;$i~&6T7PM^iSr=Hg4`>^EJ+`_Ib8#~ze} z&(kkk#nb9nn3kDzJP61YbcfZBPNTXk^QF_O5}HPb9=Bcg^#v?{zGYUrq31D8m>@+QWgOI*jT#i` zdNL_mN-*LRY--Y&u_yRU#AiqI(a95;*yNFX%0J+=y2?J8$|UDy5H+j9ixrRJ44ioe ziU51&c`4re;u*+$dwLwR+rE*+BMvMPR{b=lqpOIYa2<=JNrh$S&5B@l<4ENs5|9+oL=#AZ%X`-@q;?lN1s%aetG zl88pH`rK~08_W0~q zTzQ>k>B@EDvSef{Vht*L_~QdW({!~)Fj{|8u?*GIt*fk*=7u_%3?(H`RFg#4*o_7< zZ_xBlY9!{QZcB5FM6i>~uxM*4G90tY+LbF2ji{7Ok3T5eh=l8fbYxjOYECs0!6=;` z55r(pAW#5dvI;;>S~5A^C#k6;oO7pyXD1|X@gPot(L3!VE=y2GPff@rms}pbgCH#lx0?xvB28satQ&UpB<4iL!J3E`} zkdBg5;bX_W?yAMsbo{JbX?@n?_E>}1!}-UCAvP^EA`D7=c_GN^;;$g9Vh0^v3#1)J z?eixmWM=R%%0Mi(xSM#YTS=SZkP@1aV0aQ{r<-WD)PiY1HkD16!@arQZnH0NI_~SnpR{DlfcNMO88f^|H^75&xTBW_I z)aVjxN?6BZfK|bdL&vT6>rJCr-7M(O8ii~6d*!NSFx8Xty{|nj)h#u&896zZri=^c zF(-MMFPi#ShH!#@*eIW=NMMZTQa3L}%8}1oDK{sk0ckc)VX_k85qgkG^QYob_;NVi zrV~g(Y1zZFm!8{?kMDi(A4Cvg8C=H@HY>mukKzox>~r36Kqr9#Yc)i8;NNs?utEmDQRJB_bJ&HgADTbDrDj z{&+kU{|={Ba8;~$p$e1%-0GJ0XU6(wj%DLBYv-gPH9UC2*}HfJk#vQ$)>g>~;t(q2 zz@UtqN>T;;0Zu>B<*K^t+yD&Z5g9)|C@rh6lT?gW5!_$OyWebpz5uSIVF7_m za1;jfW4slSW#?TjZQU!RzNHtNI}GJ54w;^skjzeeOtVq(@7yJ`0nM1}Q2;9wfsulZ zL?Q-Y?aDwlpp};Zgr-kjR3Y`{Xd1)puC4Y_i>5V&6tH@_YA>tabi-i>gteZkQK*6; zhC6cq6N9n?cJI|~m>m%I-rVkngjA(PuT(lHBxq+HFeU}-AhkuiR|9AA5(xZ!@)8QGi?v#6Bj@m#r!---3+pl)$MTE+*VsMkxA81 z>Al`zbGFkyvoDds$(u);ioA+1=_Gy$)gvFd_ zZE$G!{c`qOZjtLg_;ERV!#kv{cLgcrGHe0oWMpVSPL0!|!|uYvSZAzd(o<#0FIw1b zJY46eST`?Wn9G`GRjp#3iWG#XmO8hr>?xDp77r4JB}A2F`L?DCOAYA*HAz?bL}rrs9L< zXJA^U%>q;7?tLy3AHT`!qKCm(&6=38)>f6tmYsWLVMmK-I#&B*UkI>zj``me1bn4s z($U!sF^CqDXO06%0kP(YW|6E@lWjM3FjdhB%^-QF6-v9)4zQ+dRtHJl+*;VTSJ-U! zFfBfNIJJT+31=g+t{|IpSGES@fm1j7yguJ-){`m8r>))e?v}s+etyp`vC!w34h+I1 zEjNtYI8jqW`(in=?YmOnwOSS}gWAQBipO!-sgd5^1>(RoV1o7$uMfXavw$m8m-ZHP zm;HnLX!VKH4;vCMt}iw>eU)`RhRl`ce(lM0lJYgoSyIBli9|>%j~&`5@A>c-<-AL8 z5?^@@0u`rZ|DI=I(*963Z+%+&k!H*@muhRLAzOsZ04l$!)n_fv*|8J?5cQgvFp(6x z5vj0(`ju7422vl@NL4{i=U&Ggk0&h|dUTRdiGvWjWBSAm zt|NYV;`wP(!YQc(T$R|g40*-hx}x2PQK$&Tp%b(6k&P3w9ICO0-}fT=|IQA#+;njp zpbbb;!=3ME<>fh)tn`!5f!_1NL&vD8Vx1$6WDWU?-`h~PI{WP9Y<5EOgKs`3K6+*A zYsyTNo@6ti8FSGGt7W4=C(j$ zJnr*Wge{5iwYIXlOxETyu45jwZjT>5f?sT}A^BuT`OVj3=g*~!s76}~vRbojBjRoA zXp*OnjEEf*az`#ik0wzSkzNUa<3esRJ~t)t=(L(!+pDcvi#taW(PBq2!uocb)z+KK zIiIFuVxDQN5v?U13yj)arRU_5p~clzjp;#u)V{F06W!!a{6iJQo(=TOCAuW z%n1ne5PZ`Ha=K;7raq&Jg#aX0=Q1;}TU`05+=4c7U2CtLz=m(rlRuP)H*J>w@o|Ln zOQp5BQK}&Q7ywaG3&!BhW6j1G&Re%MUsB?-WwKd|{@t9~%q?w00H;a=M%k~7O~+AK zO32Bv7~mO|0|OD+c_bj)56;L&0Q8}qQ*!^a({lgLY5DFhzkFq1K<+ynl1KW((ocF> zTXafD6>FOKPcKvn#X1wcswll(p2jVIIiM z1<`933(4f}yCsK62ffi|-hp>?BZ5*+Z)|nfISQ`XY$BY=Bm*U>$mCcq6@J(3@Ud@; ze2P~cbV+EK88jri`JooS7iZvA&p;7iU-eWKANbN4sBc++I1}hwZ?Ttj+sbRP|IFGw zZkG%N!_*o{<@GGW>WygOG}HB^&sUH&LI^}x4NYybxT{@8PR(HUjk`^LPSPy24m?v8 z{8VAbbmTxnDqC=&)l=2(u+N=JMzT4u#kRt3%Uy4?Ii@(@0UoH)EGw#{9G;qFIx=-* ziQDa%PPnoQyE?2bC?_eq_UZfYmgZ&a5QLaT5Z{BpX99Mw6T(%SanIR$=!gNchUONN zR=n$*x68KOd(q-81w4?5JPi<9Yc9d~+gI0VLodj#_B@t*q@VNj&X(lk z(syvux_aJ`V8>S@zi4Do4E1>Y+i(g?V!NJoOl5Rl3rU)j#agI;1D z-#-$RKYw^s78AW{Z*4zJqL^gR0c(BJj5Fz*ng zX=2^D0K-29W8IKBXld#|hH}H3&XNl+Li{5XmFXIQd8GJU6zQFI^uz0Shw~l#^YfWc1i(S4@9C`@zu0r>R!dln4ryK zzddWU6Vy@c%;(hL^?IAt*_O*Wb`j0`c@0~AP3cf5p1sQJ@is=MbJ?Dyi)>986)4%s zjj{Tkp$V9;$OFO@R&(~)%m@HWe=cccA8tF(Jhqvfa{}TJO{}cQGt=X=t7J*LQmSLj z1^7@T0N{uiVV_F))IOuT>?In;amDy%IvZc;Hx{ENQ8hH(hX%Xj(fK_R9=)SSPhoZR^1^fm*U3GxrLqqIZjK0Y0Lq0#nHp*8cfBp()(EJUGA5oXF;d18wCwDnP3H)8 z)T5+(j}yU00j`6?Df#pBYh=SYO3OwuBoYEgOkI&X0IG%vrtDZIjMi+ zv!=bo;mH#cJh=mvCiO4QkhY&gMzKxmmR+W$2ec*T5~=W*I~AGEBto;FnHxUzo6+c0 zz}U@=@21u|uA8*tQJjJQ)eIB?_J1{fZ}=x$!-?Qfxh3zWss92?XolVnMEmQVxU zAF#-SckV_h%Ofq#4H74BUFFMX7gsqf`^PQ$rV@*_jMT11o(Tpt9LdQZ$QUD+WO7zQZ0NgwxehqgHBp%JWttAcErRQyXb9);*u&u2I7 zJN{X8knj6}-14q>%fWbqENrH|i%kjF+-zpT+WUI+N#-9*zxXU%fP_?aorizx8Zr^~ zR4RNbp9)X9k|F=W=+Kehq@C+_hG7w92|xWb;95M2Gw_RxladEmhzZv>q+2Ss#*qKVr zbl9w}>&m>AeBWTqvg+*B76o#xt=87n)5Cj8MgtKelrfv4C1(G9($c$5YUTq-aVdfUyv%kcBE>Ct=T$wzm{2pYa| zyPFLKU`a1ARzXHZssYbkFY-|LJ$wjTxUzgFsnbl(X0IyE#@$(~>zm`2Y^Nh<4N*S! zA&a=a*(n>EU2;{IN8Yi>D>pAKmG>^E@AXX$a^0Jo<&v}OWW(xuSr3q|#ou*VPnGnx zmPt#!&xrNA0Bh}gbpo7fN%!@GAz4amj`qFoBzpbBv#aDSXE%~vU_OW>U+$Ry94N5r zO^-8ytAef`UY{2mzO+2^%ro-OpS?|P|LXUo=e(PZVpS4x6C3jn+095+299r~zZC{E z_Jb}wi5nKI$2YbfppB&x!4YR7G-XQ${QnV}8u$%TAA2#Tb;|SxO0JI-qgFH9#V^08 z87KnmFKQ;=nCHp&VAC}eo|!5wsVK9gVi#G;8j===!=6oNEDqABS{v*?eiYZ3#VnGg zrp`9MxSnas=0VoZg4s%~w5_31wj3H1AJ$_M8X>BrKeCh-9(-LvWEOIR@$;wBKp0wY zKCMwDEAHBCK66=H=elbh4lf3ts3OfI@KV<(b}_g}pCqYZZNb_7%w9GE?Q-em^sA#4JK{(%w)HgSHa3@hDBeaS0@*bF%|`W!37HX^+SK`9y5; zGfma*bILQ`+8zFMh7_;$Z?CGCE6=Ny72Q5r&aJn_%XvKbySms2xuhPlkdL~lw(F?0 zp!ULQ{j_kc3K<5SWDnvS!?^0)_TZ3I5*n8fy{alygf#LeukDoDN;m9eqD}69xkG_d zdtEhJ)#InYmEcyH#4ZPo6eJ(cfRTo}P(x~L8_GalDK(9FC5RXKNR@{)DFmXqHDF-o0 z+h0I(hEYg4qG@bX%QCyelWuNb(PYEeGvFV|&&^I+>)TtfTk`|>y{0D?OFMc-t7P$# zUKqt~(uEoozISrqp~q$2B^Sw?5t-<0ZIB~F<1$XWN=3O3qj8UUC1ZsKxyj}vx{CTy zayrKM0Aq@n@%!o*!i2_)bap^y#!kwW@B5gXeev~1(JB@R$`60|1357{Bc0V1a&p@} z^6o$RM~Gb(893f2=Uj4u)K^tV1?B|Wr>d?l30h79W5;1VPe^EP#;9J!B7uBenI}7w z_S%Pz?fv$3*Easi#h3hc|E=%4eyG}Keb<2@TkiZii@ak)okcxf75L_BqXq(*<0RxE zQwk*$ppG}HD;z)`Qd@UMCZdp;LZ%&O_ffy>*bm$I*-7aqELPb?l^xtht@cmPs*tPK zw;GAbGZC9!_zy%uRl!w3R@1)%2Bg-zi ziVZ;}-mxi667-SCJ|f;RbMOfWO{02;AvM)6d^6IBjXAa#IfzcSL}1by^H1Ix4^6x~ zpU>=2+e0M1SpRS}C?3Tb_$AH2%WpG(NiSMF?dxg=EJU%+ez-eLRjoJCl=rQ!1)!AyQ#Jps8OLdF7u*q9K`?7{@%lgXqZxfZIvu2IT~`(1ZK;QGc8y(nGBZ zEC3QTQZ}0bbzO;K_C3A-VFSS4rWH~OnQHv#Q?mY=Tjiqbew%YSWRjHd6OTV6eVe`_ zi#B{vjvm@8S6zO&bSyqcHs1FwsjR6b9U8}Qo%$i&vNU1F6$3`2YxBRbW#BeRv_rMr+zY@+t60Ouw3{N!Xx zw*J8)($qCPN5vt|ysXRvXq>)cooi(Z&l8&Tz3BB;VAY5<#$%p)_8IxFuYFCnZXJ@& zH@`)EWI&<`YPCA=%mwTuQo@HZS>LBmCoNnh70pX<(P`pLnM^!9Wlu(DEs2@Q(R9rJ zmu%VY)R*B#vDWlU>(9lbI0L`5894L5gkRdr6;J&7oPir`Yvdm5ZZdsM?y`sM4NI=F zwyjY4LYIP%YVA5mIra}v%J01I7Fn_SJQjL2yq-@%zTB)7dLvyfH|f!UJo)&;vhmqH z((WS-2^q+OXaHWYGCj0kl0=bu_!^c-ZOdYbLOPln*+)hfZC*gPe&PA34!TiV>XU$H zp}hI*b#l$yZ!-GHNfz{ZGjLtx5wM_7mmXdKJBEy+fASQdT`!|UC*&LV-6x%-Xw@uS z1@-5}`t`MEPd<;P?QT-WB~n@2BD2`hwJ%;RH-G3eoMS{b-v3QWJ1gYWb5BTpXS+C2 zc1lejlN*2Q6EfI`VE`HKAMW0VMl(`|8trrb0wxe?YC06~s>C~0TZEhdksh?^WL?e@ z+Hm9c=;*$iMvp&z4|AKp_wKt_x=X!}J#)fd_xvdfJB+-25O(kw%;G6-2C4M)oC_Cr z^Sy=4dIgcGI^w7^j*(8}&zdAQivP@6|Ku? zVHrbNX(udRyhy2u;sPY)tt%kCXbVYFJn<1Z7KF5eUT_<=UXQo*^nwq70BV}X)Ks?1 z?U7S}>KFd(t+MI9KADP7Q4dA~9z0U8)5q#fK}z2zrtgSijGFcwyQ`eEZmHb(2Ol+( zi?{#H`(-W^#v(2)Nq?WzEWca^2an68Z@Jp&`bH7FsB7twAR-cN^uqdhU)80h7^0U+ zePy{U?dg_oYO%A^V~B1n7N72S#^aH@Kl#b`yWV>Bdq!`1 z=e6Z^Rizg^ekhUekLRt`5S6NlI<-Zom;M~Js?(p%4Hj@6Ea6fF`?arC)4z(p8oeg@ z5=TiQLi9UJE6*smX(HT{gGu?jcXdc-bD61!&R^>@ee~zS^@WkE&Ycps9Bd}W#>VC0 z2Of~${LSCSETCQ%t$izXRu9oNWdN`jO zE$%<%h)be;5x18V0}x)qc{VB za$uThXnGWjw`QX`tXqK}gQfx}5x7RS6)h{IrmaGIiDWjGkg=&bnH{4h%DF4hQ`U7` zg(S2kBnJ7(4k=5CSU3E^Com3QDv#dz1sNNlZK->Sj2?YP>dv~xjNKcbl#WGf<>@CL zFpSvR23%g)KzLEaswnkx^O0hw3kj)3?Q>15R3k1#3DVeF#|;Jiq*_V)5=^7Ltkj~^ zgZF;>8&_TR?$r6`H#oNqF514XCw<<^j_U5s1L%A+xp7^UY*^bsq^taHg}lO{ zbEumqO$94UST`&hvFh&%wEDBQ-MHDn&`KpwZP_B9`}>c{H@>w`&bsLBxac&=R48W7 z>ExPc5@CFJkIM9sAK~%pm$JsCQbXH~w;DSh(JV8wfKtXS!O>=}iUtw^&@9f0(tg5%`^u55&Kg>}M3wqjWhiSDr_zNAzCXP4^RjchRwB9tDQX@>U6xdF-jbqK$eEiP>T3z!zkX}K zOy6(?!NX5+4q=lAcKkg^)P0afzMq=qfh$!O8Ewt}ms*%d@1Tq6b7 z`N&oYO**%3$Zu(Y_rQSza_{%=mT!LRE@?aaomlfVi$9t)DPa$8I=Uf>&7LyettlLb z+=xX~HZ7DAnB;0^pF}Vs8Jcz^!?U(bD7ZVF3jPgK|G?>gV+yX?15`{2pPrE7w_oiH zu<#X+;tc$vW?*xsr>Do&-~a6KrrO?*$zc$<<~t*2rdl5&qeuDS(}-LMi)K2}AXbtuj8`Cu5U-DW~T#hWDqgrW)y{a8L2p zFA{G}hlxrRTzL_I7R4VFmg*N>D8tX*C9TUZk#NE-U;6f)a>23%(z9TR5%*W{cflA| z=CcxSR0u-#hdrdKle~Ti5|V<1)?gKc75p+7qbrW<(YxY&86O=2T)!Z#*w2miJqNHr z#36;9qP|;(tu4VmDeJU!_O3)LcvNsAH91VH`l z-{XM3{-8YSSSl9;Ts0*sAN=4W=}nt9m0WbuMF&m}p1A+oi#p#G2q)7Hhs{ypqs~e? zSmhD*riK6o+d7!RfNm9zLLN859wsu^_of>pJu6sF^s5^W{aqtr{x{<=f8$QGv4Q2Q z;F>{nq_9CL_`SMFuj?ER4Gzg84?ifk{lgb{+MDE@tN%cvM9HJGu*3mpH!eo;AmSZF zt&xet`q5!ia)B~~*;AlnoeV-0_vZoDl2l+OlTAiHnew{62%Ksmo^-G|&=D>k#Tod& zn}H(0{@>00>*kejAP%}gZjc-0o@{@Ae|jkkTypId--&Pe=2iLW6W3c>S0-6yT^i-- z8XafxUDVkmKX_oH)HSupvK40&8R}Z7%jhc~DutJ&&(sO=X>x2(zWX1akXdVk)Bpk# zeNQ2VbMcN%rOsat-f3?Fzz8W&w4-B`>$(?29zb{`^& zbr?P3Y6K2SkuOA4->`}G`5MVi&IV*`ctX1-5nZudEOojrq9)+}cp{A^_AA?z~DO|lKw6zqz>jODnbd~t! zCz{NKzvy#gv6y+Rf~!Wb3YtEjPXhG#KDA|&{M-NgcR7v`{Gtu-$CK706FB-PVADcv zdRl`>9fk&Ol*)r+i zV$^D`K=I4}l)=V`wuR2R+`#0KqFQ~OvwWR?7l95{f!`Bp0 znMEG3f+*>I@4wYVjGBJc1^ML<(!@kXWJ669d;iz}LALE1lEur;lCh)P4f)0Ct1;pZ zG)T_QnT!Ki2ml#9%Sai;eUfXy24n9MBQa}34 zM6h};23uR<%?}*eX?gGa-WR?3<{J-0BavHgyz#~ZU-`;c9Jk(jYnJRl?!<``e}Z7f zKl}auIAG@1tbranGkVO=j%E@x6_0+iiPkk`Z6fFS2NWLuqOS_jdLjkaxH80#6Ku74hG{Z;yQS_WzW}HvUM;SKln%^|cU~P;#OTNaqy#FKtdEGIwGdpq!DC>TW4- zS|pyb8bal`Dl;V$QNJx2oVBNeGZW19=Kxj>f%VW2j^1=PP&|q=@S2!`BFX7BaT#83 zgP6`WHHl|zY+}?`)>vioBQD5|2ch zKWin|^e)e*jYJpxryl;MJbur^vgFMhBoY{x>BEm3R~!|oun@6Ub)N^>sFdgYqz3rn zndY_VUBze{LvB=_0wYFhFRsxS^*uXc@?=jDRDj6j;AYE6r9CTHqDl!wA(cf8BH%xJ zY%5ZVN6e`$q(5_+B&pysnH)JHwQb8FHZ7Cs(Ze!xVyD#hoGpWMae4E(7eLnPm8Um9 zgzhrYG|&*o)h801k&qt-G^$TCQ>SEdVpxWU`ea~uP)qm_~ zK9h|H$7pY!EQwE#S<~V1Z_%FhfmAm6u)a5Lx{m2?p%}F?3B}{JGXsTxIj^1Z6i4#< zn1TG*82uwGezt|{K9k$~*aqul|9Wfd3iJ{zM6n#YfU^jf)s`Wsb4ZpfUjr!ljD(>6 z?M#R9Ugb|J{;+%NLvr68|0atrc@M(-IN0Fjs)xnqMzG&6zUH%tL@P-lRYA_$-_VENvH2uh%dx`N}94eeSk9SyE1+(kdw@sFS75M z$MYq=DoYhTv^qkqUskfg=!8raMvbXs!77=K#^gB+1*++9)%v2Qf$fN5s9d2Q4wR;< zE3pY+qo9Yrsz!&}Mx(V*ct#S103|I|mYUj{oPTC2?r@b{e#1>S{5b%2+ue8HZQHeL zmv!yhwW%9!xZ#t4=3^!95-Vy-SvEUr*ly1I!Y}h6sS&Byf)pfkSV$vlja7kI8NvmN zIZbct*p#fM(e6AucxGlAf7>VJV}JhVlFYA@WgBjlJeh|GHD`nRxg-(mxKY502ZoqW zk*c2ajqRV6jYkaia)<* zW}pbLubE5nx*JH=5T2gCC*Ih&>`yY|M>pHc>b#c9CYU=Z*62bMTjTS{(8wtX24}?s zgI1UNGvlHD1?x4^qQ^;*-toEHr02q$=+VS#judSi_O9ZQY5?ousctpVss65D@v{$L zl60i%2G=dUNJ10GB{cAi8G{u`MvGPV0|fy3aSfN>6_}NBr0PuytXikcqfe}y84kweoFz+)YtTuAB@}q$*=cF3aWMXZt)D)hGAT^r!nx)W z3F@~wX`mLY0IZ zkOZohCx(ZIzd-u;&j7@P-p9+Gae_>y0nm)X)YeGUWEb?o%;!7+&x5n}Dd*W-Xj(bJ zc(*>aMeh2}H|3#6o|3Nf-Yq^h2{EGFG~k*i!cWdoM<&f3M@CYQ(w3Db9c*W_lLb7J zff2mVAu&bf?5W^v77^;t*{dr4HHKUj51(JR3N8WW48Zx&U)(5r>*X?9D2ntUnt2E&MJ{75{aYI6vSCZ7jFfppH35N z%CW@llaUh#<<2jEPTJOAVp>eJ6(mi)Glk%UlAFjSinFpqTzJMR@V%;o7gdn8;eMn2 zu14pWh&VE~hq@qcJuf(3ibQaw0G`63c}jO}H|Oz4Y~m>9?QVt;lIYAyDQoDF%9dp^ zbt**kx&Uw_+5;dfDyk9BpD=Qgb_i2?eg)7H>Xr&t{32d})lQUr9Kj2``Ea+P@08z9 z4)@DkB!Ru1O~#%ckSl)oEmBtIg}Iw`!1|3t80zls?foF9`~=Z!VdudwLqkJ%b@z0? zkJ@N8WF(DZUv?c(ha)S*GL2ldHmc*(cdgfC9$+}D>AjseBC~;M9AlK&L`s(ZgZAu3l8QO_ z)ppjH$Tpcw<5!R_QRZ_`ch^Tw44n7?_0$2P&S}U;R)DcL8jV(J^r}(n%N-i2YUG;c zeb0lcKE42~q^AK@WeCsu{qp$ZkI6?r`Z1BRb7b*bewV9mlexG?_KcNz42>OQ({jKd zqXT{Aa_X!;+=eWq9@61SO0oV-Iv#PvnHSi>Gh`6{Cf!>9pXtFtrI_pfMUNkE6bio< zzZPfUwL1evfPL*=o7c<8G}0h6vt%tbJ%5y&I<`rC)fQ`23+3H=hQ@>Y;P5i-#MNFO8ElrS< zN*J?(QvL?bdVX`yeSZA@JiP)i~Y2+{(`ZqC7L(UMeF)qwL)D}Sej z2cd})9_J$JHQ4M$?vWHb4>tb+jF!5(I$kOd(b?AGE_Jsk5bB}IO4>%F<4^#7r9-cc zzOVVmYUHZYg)Z8M0BYI0=Xts9Gq=fsLka0R|AVwN5y8W}w&YQ4qAxf)GXyhuyI~;d z2ueHFp~SQh&YQ2`5)>TCWD|3AQe~Wpnb9;GogY}M>OY>G9_^RGkUmA%sY1T|l?Ge< zdvOL{Lo-kW*w@g-cpVQ#QO7bm)4!#;tl{ru;^-&DS3zNqFprdHVTsqTFV6ZYsHwPv ziaBg~=v%V);Fv63ceaEhVL*v`C5wI%3pe%tbizDMN2bJ4iGaSh;xriQ`Cb`7etO;u zaIXZZ9FbxHgSd~htVIb-3QRmn>!3OYMF7&W20#>q^gadW3R0glN1uSDT#J?3n2|ZO z6S--tO_cX=?lm8l5Vg|?Z7n_`L0+H$Vw__h%;u-Wh-;7z*Vi@u#AXaS4vqe^vcQdS z1S(nje$}n0vJ$4T&u7u-pEP<-2~GTQeu8bBUvJ#?>JELZo=e+r+%SMM%*)}!hvf(N z+$CTAuWv}>svAfLHy|TPTT_atH651-nT5#ceqbz^Ew=suI72m((^x? z+q>}s%jAg*rD-V*lhA$v3$p^7FY}-Xc#ytSP}{fd5qb2k@5{0)u9dKnMnqH}l^;9A zq;xb`Xnu@Np*38A@cSy#w?v5w2B%ZT|MR(2pqqbo0h<(LG%c;RaifSPL_%@uy>4lw z_IVnXO^s4P)(g=pQqgQS0VVuPOT;4dyH+4Hp>8-!AwjssTJS8RAdi61>KfBm;#q=#vtoO{*pODJWP$w(3jC3KOwHfkdm z_Yatt@v!MBqvgh3(P-XV+<#KibHhm`MrG4kcRCiCvpVhn=4x5<|H6H{XLu4~5lb25 zp(2Ut=ebbD$G+xfpa`(9xl8i89gt#$W7M#U7yYSB9{ZuCq`cPB)T5&)5>u%$A=eZ8>XA2WJInO6Dw*a5$oLDI z&_Y|0lCo4>;>fXK*|2_%oVDs~Inj4So_c<-)FNG|@`fcuwkqS8&AFtsd6^^*Jw|V* zPv*iQ>1oE3mQ6#1o>wI?HPzLN)juQUi25s#Du6iwZ*AvMonI$uSQVV0ph_D|3bBUW zfN0W~0VG2+GDdB--I65jWUx!z%SH`0NC1wORuF32~zl2Bknk(r-7P1Vt8&6F;`zSk| zHB*uZ4C03n%I33qSBC3JYWVv!`TR4lvm?=m;UPRRZm^jS>18b*#Toduo`E93{#swY zU%SC)dWcT?$B*uAsc!kZ{K$cSmFjvda-24V3M^m%cu=VKsR6o@fbO~DpQUBRg+^IP zL0ENxBNKh%g{`Y8)y&+GR4=#?fbB6YGukFI4=TUt+3}JZO#o=ePmaj7Z@X01o_C?t z)HO<7LyH{k?`H#$kZOeZhy8OBnvPOzERj~~!FEp_p?g%)vwmu(NCA@aoQiQg4OwTh~F=M;wGN%VOYY-1386Qq+#pXLEr%9{ve;DtMTyib1nBkz*B zx*GF$l^U$&oEp8FlrHo6KRMrKz*pvdNS)n+hMNUFYx9ix%7| zhfJi3rsPsU_0WrH+y9fn7oSs{f!D|k6an@%av|Oz!^ro`4TP8XSnIF<#Ft0E_J>#H zXHH%w$ugw-@+CxY`Hc4NC~(pm^3)^WmZ7ji7B^Q?cMTcg{V0-zv8h3$>8niM#&d3= zl#37o|7qm2bT{;Ly0N?&*+q*Pds*WFLI!Ua^xVw$ANAM{tVwmBgMcLONLF)Yvdmj7j59 zTd%~3%gTO z!!BBK_HKVv9{<4;vhbn{VXB6WCNE?d@gLicL||QkH4G4IdyGCuZ=mZhY<9KRQ&Yi8 zWSX1{(Z3m!Yc71VtUCKmQeD?zYN)d_ld^aB)3SZnZj*i;3CHDKS6{(n)01RwRZ~)-2ko6T4}6s~G7qc;6(+aLalWlvHp{y47Himo?iI*MOjZ!=H?*w@MyVGmd0J6Jx z_ql2=`5hTJ_=9{ROkifsy4-Ht$ce*p*WKUw|LuJTU=`<;?wOg})w>WvNFchwU}12< zSlHN(9XoO2V5d3jRBy6LHd~X;+ug`7o0se+Z&NqPv*Yw^vLVHeyKxc3fU)Tygg{+F z?W!bQQ+Q_EvW;zaY}>Xw)*st8I_%iCZQHhO+eybxZuYs4>v7dLF*K_-D>gPJ-=}?D zn3i@yAkIFXt`@%R2EClt-OPuRXjD7njFNdC~ejH{Q(8{4F)Ru07JZtne$%jc5G_Jv=td2NGiDtE=&yJL?v3TTKLBnzc$@ zx5+4}u#4bhs!9ZGRwda~7xas`Rq9a)bkU?VHlsqMl8vg#g2)ni7z2la*G^LdAnphi zY@G+Hb;)HgGIxUyaBJ`g2ns+$pFNNeqw>)S6nXf1_AJV?xlsMlGj|iGq4!(Muy=PG zh}I%$)&lUWn5++uQgn-Rz8`?!77FAQkLGzSZe@#3`67y;Bn{_xK@bp{3NB3}(i3QE z;_u1{r-Av5r)#4_LXgd_#528EZTqisBEfX*AzN}Q&v?QPF?}S*Afl^Gt9jxF6Zw_z zc%_g>Kl0?~&&C?*Rlo$R%iS)sQ?mcSjJ&i(AE$J8T$bb5e9bA|QwX%_xna%#IS}PR z8xMnxYqU8~vfnc9VjsWI;EtcGdcTtM)}fEkAJaO&oMAoYeUJ&=_^wPf{+pkms>zkS z>Wf%C^XuZVc+c)Sg$UHtZdI(Q>4>cEcC9*xTJ$Lm!}q*2;9gymXs8%R{%OseZU;oj z51d0C^r>rU7orcw4V@G+O!Oj<0yu+3YpZ`8g&%H<3<0NGO>e5CtQ2Df{ugY4ONv1LEmT-BA8?S3i$ z5M}2TQEEv?*L|y8PVdGWerej;jCugdy55Aj%&XE6Tc)GnR5TB7>KA1Uc5CR180`XN zV2_3%mR~J8iWxBQ9uiD(Bar{qhma4^t-NnFT}LKTA|UuGhSWNWjO5=nD!(h{^@34| zh8nS4<-}U0_uacIongD7d3&+p;oVorP;|!9uz5P^uY|+im#R-hm-^Qn7!ls^+cL8# zC|UPqDJRW()&KCt$jJ(^O1u4UwT=_0Y(*u61J|yrnB#(dAuV zs;+DdTHWYX%S>JOYo@nHRGd=639BaR~=sfkKokw3RI9F?h8FJKtw8 z^rXbO4cl&2n-n{g`Iv>7w3D$qO^(XtxIKgQ)fZmxcYz*>EIy6K!(dM$)4g0tkP+a1 z`TXc4)QREurwaJvsn$rx;wiB%2V`5YS!lD?EU6WcG2u6^vW(l%iPwtRg53KO<<+;nDP=(K~3OPIxk*~zz5S^}%JyMlkm3T^HzNa19=r#4^N<)xpIg_joCH#yQOLB^d^D$WsBjOw`V z12b5Jm7YHwjE$9iGqJ&0Qx@30?(E{4Of*L1TF0ZHYT@hT6ijG7K}Om*8e zxq4OU1{gG%1Fp^$UvI|J{eShp#u^lvbn6mG5)2zybq-k9yqRX4--Z zo;BRX?c9A7uvQJk=xnmG9MvgSL$0^^ru5J(k11OrXY!OVTuMTDJfSV?UuD#Twp-dX zxHNlNsNerQIinn`39VZ**IcGCiorP^JFVTx(ui8$ zT~-_4r!@GVp+37wZyrdxfn-w8?f5wqYlgnN4F_ zQG*+U#N!9TNf@GH^F@pOVqjvF4TGW`OoSM|-)OsAw=O|CeZ-S9=A)_gP*8nxYs$U` zGQ4S(U<6I^CM)Cf(+WpXnJ*p21QgMzq)Gmssa4z^G-_?y=nh@cRJ9R{WBCZHw$e9* zI$iGgRqe?}RV;Nnq^d$>WhE6+UmqVVjRjS(YaMds;!b{SD^*2punel6*4rIf_`ds! zmN@tY;7v)V=K+JH#@EylkAX(}JmByfO+x#zVvL)k5C~DY`M5J3WriMP=!EYnRWi+T zsHr6D4ODKN2|6%c%3KvGJn-Nl9JsHW1J95c1F4+3-$XFvx=t@bG0`#sq6_hQRFQv?F46d3G5Z%A>N{HrNoGqKH1cV=#mZhXu?P{bSrP&_;vwB;6*Y#! zZCPNmUfHr#C$ReE!UY}58mv-nyZ*50G`&GAx*bzhxNLHWd%AUr%3FK*5fiQxOA_ct z0~~48mX!Yt!QDk6EJ$l{%sts?mBRU>!czaHf-<47P4uC5lqEoiO1_d&ue-d9%9EjJ zai-twMoKrg5dhc7%6O_RfCjpQ2&?I32i^tlmFj)1t#r zvul6F2P!tC$4D?;nXk(m#r--WF~Ux2IsAFQ+-YGCI}nwLk*L2WN%<(e>c<09*9s;r zrirv7sa0d)cvM!AN_RX;jI^cTuK8yps_{x6XUkz^q)djOpfBF4?Aj(LKhU%USRj6A zA2?iO*RaqDF)a+J4aUrH=YC98q0D35(O(&E5E~I8x5*l$6W^(@AGjke+(yXgy(S1W zAm*PBQ3|l$BcWV$tQ9um9}F;EAwk+zwc1!WJ9rQP>-mBc>v*01kw)g+1ivi4yW$_= zQa{-~M`ciY-63)_;>L%0>OZ4??&Rv}nh>4N2jSf1T6HjQedwV!jsgn~+_h#rHmj|1 z;zVEieOnzL^U|m5O)dIqXGllS3*A*4r{JxT4LaN|wo!BN94GVT8CIubQ6XbVCxxZq zLB)txhAktVy&xm-!YI`{aCrHD;9eEV6H;I+7Qy?VoB4$bGizCcZH16qGc=gvl(QX$ zO4pFyLWq1>6ITBn2F#?%#H_(@-$^uc3-vAXVCN1sl#cHo2t+rT3hiJ=xK#yB<7v?A+3Q3EEJ7<4i$pTLjfPKK* zkLExv+YGqWFIh@`+z?k9xgUV&6w+P%H3rG&!Z>EPQD7MSgPO{?bZFG4P< z!p0+k8!G|xSa^9Yd$LeoBllWZA1I`)F`5oP5VgUEoBO=;=Bnwz#p<6{`!C1sAC%4Z z11(>NC&82H+{Zj|yWvq%sZ~`0Ei1!~r2t%8ui2TTJPx|4r}+vC-$S0fuF$jhSHY>e zvfwagkJQfhly1A17}jsEeB+U?Xd`SdeM1?hpJWjN>_V-H@~l9csP3)w6)fwJen)|ePu}QX$n&Tau6XdT% z+wU;*av#wevHs{lWSKcf_GI@Y6G1_Nln4t#J*kwAx}CuLO;5|!ngncTTdFHT&>-4O z2uVvi_M2p86>?kha|wl73H(v7V;sc@M#VUw`3!3uPNqq)0;}F8()(-MjY7YdR8dw~ z2~uH>CajiS%*U``G-IdoSc9MHc+>uBs@cAeZH&oNR#OttOcHn2yN8jkxSMYy|1>`$ z&=k-Ae)c>^276rk(+m1}nNCYI=evL7bm!X!w5qjDlZ}7Izmo*D6B`w>6nkWV`-GGf zAOqJYwz>U4e1xvrOJ|*zfxuiSH2*O!{OQMumIwrFH!?-PAFr9X_s@0iqNY@Q38dl} z;;bw4n5*lavT}Lv_=E}>t040?C1cXGXbDbZLx5){OEO7lgLv*B8s1f;hQjQ;bIHbU zF;Ad3H^YSz?-Wff4MJk4tl0XDgMJBkwn-~Clt zEjN5RoJY3}!}w(xG%70Crl`!+!|brY)jUFguMCrL!C4=;MLE>=e2u8|c=^X%^I8dD zYNtlS#{Z1gwFzees~+#Pi{kTMbyLW7&rn2I|HrMnH4fkB_)qyblm6?PP-DPDg`Thf zwgU}w)E==ZI0d;geT7sXjH^BYLB~7Z!+S_`F0#-sOBvUstP2I~e)U*8^nV0e)wnlD zao1`U3)xjjCAq@Xt(W4z4mQ;Zp)nhzS!RPMAOS2X+l)*EIw1~yL@S#Th_~5U(BVhwj4m?~S3dGg+bBE+kKz_xN<6ARJalUMC9`S28ME=l#`Uyn4x90Bt}_KIow`A%3{)0uYH_ zjvg56z>?{(H|utjj>E5~=^9kf+c9;`)0`g0Hgfikf2-h&jNfV_@sV4-CLbG z<#cD5s^sG!NQN0zVo!FkiZI(*EY33t553Y;Q;+6n*lEk^z1?xQ-{|4zqqoqBf3L<; zmnk~Npaz~!Gf)hKksp@wEZN`>sxv{xmSWoM48I{(KpbIck4iwkFr8l%ZemT85|*&q z#NmJ5Uhe#oL&ONC0Mb~6CS?)|8w-ziE~G{6^03A?r%xZq-3nG8d}SeK2$-A(9@cFP z0QQFy+KnP41bY{sO>o&^1(Ts;8V-}Dg&k$bj`uK785#=~&Ai;VbaZ#TZ9v6PkB$EV zW_FTJqFDn8t1lWRf$l%7H1Os8?dx+bwFGW9acqMYGP!3ROVgpf)$Zn^!;e6`(` zpsBg>PYdhHvo8W<3F`AY#uql_-y`)cWx-BHGhm56F{9O&QgG+%mi}&-?rmE@7kVzt z`fal0THNLm`R&Lq{d641bb(NN7@AbXDIY!MY?beiigrhQFamE_26!y39YRlCAhA}X zBB@r<)WL(#YO)JDK-qQ(B$;@So%vqnv=EbffyLgy$4n^(!A&!-FJMfC)O=tH4qs4R z`m29dDF-n~7!);QpOm~={SO5*7_iVTJh6Rb(m#k6(h69R8bo0By8crJ4-)I4l3r#n zKZ#p&rIjmG1&vWc z04XSqic1Ud7`fnhm-hf`MSg7i+znZqRqWSZ&hqRC{~dn1mR41B|KZQcgU{4Bg@cVS zpIr>>VQ+-U*SH~{qpKkqfr+N1(Vc-YMU}r^PJGVCEb06CtXClLag3z%I<1*FMw;l( zpAiTVU)IWCjVt`^*9TB#P6+Rx2XDLE^$o=W930G4l^1NDMc69?x3rEW(MvXj&h9T9|Mtsq6JQ@7J_loxM^0 z0U|_!jqq<-(*gCqOWpV*L_J=o7uW0v2b)|C>%SV2lMvGHb70Mub#ftL>FvMXT9SxV zPKJBMNhnp{n?7*=%vL;6(du4xf}w*7MNL=mIuq3cASD2^% zFNj&AD<$;<*ndQY2kbwt0&f=zata6V`Mf=@2nbmLY635QNr}0y#*PkNP{Cq2H#4fT&i2Ne{nP~IYh|+!|om0@}WI9(O z@aUAU!R5Tve}?AA#)lgkZy=Nd>||7-?PL-l88Ir1>O!vcrE8*K)I+`TtA=}}LpTyd zqYDj-Ab1F;AhRC3sMk5s7z=b$loBNvNy6C+$fXL;!MSIT|AyY0HB$K=b@AH=M@l9n z%u=YbDza%%Bj$4;_SwHT<39$S0at2$-3aw}Ioefg50)q15$^^f#0$>Zkq*TFlG@Y? z#y5cwE=dvgh-BL5=nc8CV&W8;BwA7h4B2bZNjLzBEgzSg*Qa)AoQHQypSb8Nv0nWT z7P$&QUI{dCXfQKy>FiPLtma|@c_nHARlq&Yr`{&<>5E*__qE8e9hR+zM@!t|tX_D0 zM#}6=xH;wS-tiQbpd;e^9Aoa;_rddR2vk17bK5yRTAcw^V26#-;!Z&V+VJSBn%9gR z@Rb~vd{C{pLl_joGxySoSEp5!FRCH7fSy<0uf8q0epO+qLn5gk?!JLas9Z|dhaxYQ zBg~OwCo0@+=B}9kn-b7i50ju?1%vnp1#B7*#KLW}ZKK;-18G-~yo31Fe;N^${9=kQ zmZ10i4aX}x1`^Q}LzQ+Mt0U7QB45@RE`|gYqhE*+M?x3;h^V63p8GAKT^~3aK6cvM zP!Xg+MyDx_MWF61^QwMMK`YhKslfT_{K#B%x~U%5O_l=Uw!)28M&NTx=IY zxBW35eA*zDf{Fc}F&9L@GAVS>Ua4~Y+qVesVyM2$m z(WfEpL1h9csQ`c>P(ml?s&kO1y?OZsK8G!NXP6%a89e5D2=p3jGHHlJ2~fovB7?1# z=vU*9PSP2XnXJw9LtG!z@FVdwWU>nxsJ~>lZjhBG`{oA3KNlT_J|jJio&bGskGviS z#|Q@hs0EouV1xdABS7+VQw_JHgX82x6X&-g62bp0SA%l~-dhg*c6v#ZgLVr{A|$f4!f5yFH4dp##pzp>`PN=p&z~0*d~v3v5aOZdRlS1Xv#)jo zA_yHU_Rny5s(%94Bx;V8;pKDshuhZ}QbH zoR37N+`8_VaJU`Dg(D}>=mFq0%uL8Q5l&=kezI+DT}KQdO+K!cx^As;l&Ga3H_gi{ zSblxU+h}0~o)3oS?g&fQW=o{wvt+XPv1&)D*en>A9zMh@opmHhSi%mwOgi=RG|}gT zgB8*r+1i1bsUCg2sm6qC&G}^NzN}|P0)y-$5t-&;VMRDp-F9d_IRtSv1Czh zVH}AB09tj#Xv7Z}Jtl7Cu-^3y^!cF{Gv{l^FLPf*Q>@sUt~!clyX9PL2U4vQDgcIT zgm*0-*``rPI73?Dg}h(YFd8;#L2lrRbuTi~E@ez8G188*_jQamNRr#1IQ97tpPlt; zr+=^R3KepYgELM2c~I?+_`fp2{*>uH=;3f1@gDf6P)RzmwaJ?-a3pOIJ6>Sc9(3IU ze+keqy-Kl!plA1tVJ8Ed#;Y|3;-s^~hYrQPD@aOGaZmr8JDUZ_I14Y+;MsCX{*hwn zx-W2>tygVP*ocl=G{so3cJ7kO<7zi#Yl>;`>W_QtuT?lfTPX15l!?IjMEtxz5dfZd zsgP=XikuU{L0C8*@UgUloeQ~;wwS<7Uf9$ak_?j zwp6RGcrn2o-WyVc#ygs)?5Ph`{q zHv4C@xiKh5oKf2sfyWN+HfOw$_DbH}MwTfx2mQ1+xZ5oTf~OwFJbh#M zM9rl>;pVr@`H`fRCPh2Z2eGj)N^ZXb%-y%EmZi;v2Mn_yBAOEE07x`em<>ZPCe&cg zLMhxo&W@z}xuke-`WzVF(Y*DmNbcPGmH3C2ALD%F0tXiy*Uo5R-U!bBP{1A@W`*#SziV;OCd&uzm|Ih55IZ`6jOzt8 zDk|*<)A}>nCepeL8tpEwY{@Dr;*zyre)+G6DgOo=?a4D-KT z5jZHci}Yh@|CJjC_n`dX=&u}uOE#$E9WdzBVR`K7NB7~{ERYNc zDp6-a0Zf~)ql2i&o=BJnm{rtyEI4n$-(iDnqwRo{`*jtb<%tq-v|`UPaVT4FJr+bYks5g~cGi*O;W z5;u@Wfc`o?%tJMcM&6xF!Uuh{07Z)XsN8g6&oLk~wP22$9ykBGPbl9{C|y-cG=)}6 z%86b>$Rw#jRS6ZAt}u2K6hQ^&0E_@qyKkWD>fyrf3y*9(g<7p18kCE7J>u6@L1`FW z?p+ZFNieKc3OMd6op*U2d-x904&M4VE!k|L_3OElajg%d(8iE?YA)zq}>99da}<^_j0c1rT?^p z(30WrGu!c*`UF1w5}g@>e77!NF7K!9X9eK(&Ci*)k+TZDFFsX0fS6dU*h5G@TF`z% z7HXVed?f?!En@!Fwj8eBw@&%0H8`)yH{kuFr_YIiDH& zM{A4S4Y_*-d&+qCqE7wNp-Jg2IAjJEkoX@U!{q*P`!V0JxP3=b#vn|Uh6%snWW|I+kXN_IBwn^K$Z_MP7zisM-V_MD5#DtLJ9j~p==Q<8gCv9U|4tLcq_ znr8baQfB=ps`JkONS76Q6_?wXU@~h}YCDaKBwh6y{(LNE*J>Fbb8jy0tjYAe3}Z^= zID`>jf-zgIts5D_*e5&%%#_|ZQKt|Wx1sTdq-&7USAfwp9VO(fzC}A-ok=phHF~IM zulnJDE_eK`!P4lN{RmRHpFnbfC{TVTeaWKgUCAN5w$x1B`QbQwxgak(K1s15!@ZsdlA07LR@M54OCDqJy z-T`X2;@4L_yu?qi);HP}Cgw0_hSI#zpkLLGeP7#jKJ7O!?;u$ zrlVg_QPUP|s^)F232%Wm@{+WaQgf~v22w4l`~#|9$w5Ex)w zIA@L27Rj(Q7Fw8wlebn6594MgSmvy=+@$ur0tm4_s16sk;tetc2eO+>l8A@%@G2CN zFeFrt3xTA96b!uhrsTu>8$2nRejBbapzo!NcAW@71Nu|H)=(sc?`?+sgCr4eW#rn% z@OHP>_vUXZ5T_Y<{|`#ZUE4ub1~H{5P+Mu0WiZs%`T<4Q8M`6FfAE#6tU@h)=SDQM z2v^$8?4W%>k8Vv$%^|WQv=#QYPMG8?M@_|GFK#Aw8TtX=lBodQD!{$wzp;Q6n9-PS%K!ef!uyJDeWx z$L*RGohC}b@z$KHN#5ue>kNsh&zXvoT{}G(cK~$YpoFi6IC>jZbjp%@HCGy3k$Y!( zR=r48Yzh91T5Tt&-><6?Cnhmp8z}%Wob;w$@9RkU-+m?fZ@=zIc^ZXm=B})8oM)-n zTv%5Izt{P3QSH?7d_!3^;cNC0;`pL4t)P8zT2K2^^Hmrp9|yL_qxkQ(QbQ$q7W;RZ z_wtB-C7V*`?B$V7s1>uE8dq6k_yWjGdesdSt&t5=-erTe2$GXI%9g7_XXLWX$}w=l1bY3I>8Q?R1JGge}Y zRFTq+)`&e~f}dENl$^~AA-Y6tp>+oJE~~APkRHxv!mA#+TJbhc=)OrClG+(13B!t* zIM5KI;zK{VKJdz{fphKhH`bVOGhZP{nph7k4dOGyMlay%Ac5pl+w%axPsnS#8PZs* z-re-&Az<5V!8pPX7)#_M8@6dX4v?T@4R{U)Iq6RwCs9gC@GO=%Z#w_7m%67xrAcrZ zwlpy{E5JE~2@xc{zS%Sp9NmG?_H^-l`rNxE*%>Y#x!v`R$ZVP#90&XVQ_u0gQ|}Jd zy?CIe#;(>yspRS|UcvD5?XkA++-6BlRS!hAKWTKj3svpzLOq#*bsjt}*HsH(P&5qk z4uO)4me#9zv}y?w$OUxPudmF*{AZ%f_4apq*FVQ}b|-q16AWrYDPdKrT>{nXo$G4$ zSW6r>JRzy*VzLOw`bm(O1*KyR&fP{~No<(N!N<@Z)d&dg__EOm!V*keRcYPrj%N$B zw(>q1OZriUZ_Fz9r*8x`TByGKN$$CDS%z^Y)mU1?(tr*EIWtr(bv`CJF<4s__;s$a zP@}x_m@l;D%6Ki~XS&e!l{VP=z$%OWLD?WbS|j;0USlD((s>fO$bA`8u}Lo=b@4Iw z`X;!D)Uo6=)v$Yo!|2y{;ipXt-&(H58nEDZ&02B-gpuYobgxQ-$e90u zK11;z-_?-cv&QjKrc#&TOjZ`&!pdbRB>YnD9bWQSsDkqfVvv3faeNsAGpql!aaIIv z#eML1n&)g1_^oO(eWcQgZs{$V_)i*QWv()a#scEuZ^Uop2$%Lb0KMEntx5=FjDoxx zPg7INT(xd2wWY9hy-pc#3f~cSi}rS8+4dMO7{%l9|*6%$YEBRq;5Yp>sI(qd|ckxG{wJ-RcniCE;%n zra4jfUtKB;1-zrk^V_(~-RT}JUbyCg2Q=*Cf+j5DUaB(a&dS_%Cb8gAL$_{!z zxGX*ydc}bmo3yn-DCUe*@2J_;IIaSzTs7P4L5iUE&+`|wlx&^2#BHWsU=aSVy`7KUxCnB%CpV6NSTTXR5tG1ss{MaNg3jr57X^deeI=r@fZQhGUR z5G&ZZy21V}Xy$lW6(ORWy5aOAcmV4;yn><>y-tfG^wOk`Fc~^qA~>IZw3efcOKA^e z;kx)0;nHWVicuITdONOZo^nHGsGcQqk3pUa1s3k3#on$Q&7P<3f;L0OTJ=B(M8^h; zSqVPCh2asqY7r)X@4$99Cy`ApqSlOtTH`ozvU|kV>4THq$%6W9T7+69z9EP?Bh_8j z6OaaERO*DcKEPJ5ASb-+#0)k>X~usvqnme#&8D7%@l3djl6TM?F!Ok1cHxQoCjy!{kCYyZA7p1k>4 z(bv_Zf03!v*ZGGW;FI*}~~^P4jS{)2P6OTFtHm4TxYLZry-xr@Ql_SP~-`ndLQ{cE_=nOtwy!6=)wR$UY!ava*6B^s?VVE_txy&N{J&N z5|8%|#my`2*F_|^<%-)Z0>AB$32IFmIJqv)1GgokLSRCwp2{aGpWQm&-WhBG#<@Lf zb88HVgl-T=5`BP_xYuFGu84jvIJ72s?eDnEK=n$Trm{BFrZQ^N@i1lUE_|Luwumcx zYrqxgwJs^gka)+O`4(gfS7NFo3=zAc=pPODn4|q}U2K~jze^KD6HGY?^yryi7i(L< zh#x$88g+Jt_cGPQ7!I_{ce+Tag+C!h-AoEV!J9{_%Hu4)IVUy0Leu#tIJ@W5l<9aU zCWa=SOed{evyd<&_h_HCNd!7I0yV5U8EqOG40u^jM@FeH#Z-{>-uT;w`EveG48B$+ zOq>)+4G-(QWcmri($=>5>G?s+!59?1%|??yjop*j8aqxg3q+d-dyjh=1L=uCcB&gb zJ&b|ie9PnTSEx`qn3C$UMX-9z>+7N&CY|P?xus?J3T>-xu~Vr_glcy#v8Fa^2-UR3 zcnP6~^^YV$7BNX$#KSv(%Utg#lv*wPyYJ1Idx~05aBbnZ4_q5+hVyXRza|%rOPZs<5%6aT)Me(RI z=y2@6)LiPYIK=MPRV_j@Zmq8M+27ApnWW=ClU{sBjehp5q##66(A2NUpl||ULc2hR zsNTs2o)XeC^wzw5*n*|*|McY!MlP@;ph%@cDeb93psD|#xY4L3S_4=1= z7ZdL^QgHR>zlXH+cJcUgS`#Hp1UMUmvmCU+R#0_#(YGmt7dE``kK}PFLem?gI)-G? zG4dY_vD!_kIxme^l)B=dYdbmSO~ECVk?1@$=<$Zm>(KIS3I~L=#N&Kw6HWGwqv*R| zwV5ya^0|`SE-UAdy#kO@8=*3f$5|~-Jmcgh=P{}}7UUp9qmx%FKLp8WiV{KR1UOWiL#q{Em#X<8S-#vtqCbnE=; zNpY$C!u)Zm!u-o$nyRNXkPoC6mC2OcV9+eb^N#3kVPQrwXj}f%hG#U)oz~Jkp>^*s zxYZ{W3YISg`xMy3HpH>>|LzI!|3s-;`FeobGqe^fcd<#R%kYvL0|(qQUag892o?PS z7%mI4d|^CO;RRvP*mdn1(ZAlp^!<7)^?XoIH-qG#mG-8?>UOroiV8m&F;SsVcA!-L zn@^_-aN$?Hc-@TPWKCOoMA)veyNoBtSEg}LP>6^ZX0=ymI+15L?--uF)G*=3!6C5X zg6sTfTp<3ts=(#VW8X2?i5c!^fU{(C>2XTvh!4>1YAE=vLE`maW_bZ-f3!>?T>P`V zx@x{eDB(x~=-<8Y9KWO-k7f$z4PB#nN~_v(%%4C!o})PC_KRF3pQuNaN^ii6c@v`< zZGXRzo1RFYLcZ_Hm#JHoIM~&UYX?Ka<{{wOyie*46&w%@QkQNhUhl2g4Bh+uJe~0G z9SQ)_R%fOc1rw~KrffCpN9R3AN8AD1%6S%=-SyDkqM;as%cr6wAVMCwelpI>i^$3k z4TvT}wkSP7(r$gXm^0y z*y5Rq+COhsHP4(RqUH1p0f6c7sUG34ZzAm}r&V}sp(Nn5S_ozfJbZZs|48#1?pgV- z;!nwQi-NTXwYl@>9kB)suYhnG(|p~f0OMjH7dMx}bwsw3r<)x+7dDp-s*y(diKS9z zp1&T;=ET={I~yxIuf&9FGAfNMJsuW4HBK!xW@s=n1@g*lsvXwG4R_~vlXyI~(h63f z9Xx51(>Q4lltw6 zgLY}qU?|8*u{kG3192c(-B7M6gg@+kKiX>6x?}CnmF9_M+2Je+8eIjhcC<>Byju}H%KP>N%ABM`8to3yEd(7nA}(|8p>WQ zXcVhj@pntgpXD?ut;+^)rG~9q!q`k1l*QpKr@|rwWJ5X{iopHWt})NzE0*VZ_@AZH zb-M(IRI;wEY0%&_z4^9GCEoK?7P|Qs+bs|S1C_;flQO6$5)`g+E@C3Zn#qSfngb07 zfBK=9=D-(OnQKf*sxGzamuglu(yvMVHk>0Z1Xg|v+sWi`Jj%NL%dA?7Pk%N%tTQu7 z*3Pfm^Z>J!@I5oCKrLiLvwnpnGoDbTu8YY*721)nDW#EvF(hJCy7D-O;36crJJVtohZL6$EqE26?1hjKxHc(i?1#qQkzzD_}}U&h63?Y zqdTY)%mseTig~~ah-T8dS$;(34~&0vS*sS^X3p4Zg;nh4iAz-mF(fm8B9EH{6B%RN zuPsGUK=dC(ih_ThyPHr`cd6JePLiuRs>f!*h$t2hft-q7#<(cD+K9aV%yPXW`5a|S zrlle6DK1$j2L8?=LH^F!d-THUxZ*K*!<{guiLF|YiJw>O=QLPrxhq%(;vNtogIBG2 zJKbRIxK9aX9NXr z$I?r>Yty?2Do6jd3xq&$iBGmslKsQ1Do#S~NB^*8_k*y`q+?ATU3+BYoEEty>K zgFW9cI-^|i`#OYGO~lm@NJ4mWz(0{S8~DE8ayDZm*wv>7uF6cro(~Cv0YKH^T$-Nn z9v=Z_2LbZS+V^u>GFvY&mYOSu^!DH)Hwt6|7Su`URe)t3_BLdpXSsR8j8q;YECsnZ z&@pKU=IS-F%4Ctsr%FhY&~jYizW8DxqTh8L^|^|^m4P3BlpR?-m;a9Y`}ZCS{xCtW zYzb2OB~O~l;b90deU_TH(WLgN)}JZL8;Uay&>3NsEnq@{g$NUrxG?J*>wO_e{;ikm z(iTgeJ3<3S{Fc|(^608ZCAmYQ88|s}9UVNlA?*Ej5fCQ`bh8@!q3m20lUId9y4Y9e z>uhjXVMfJclYJ+AT^(wYkJ=_*_zf2v-*l!~xx?a6cC4%1*f_fV__nDoTO~a}7q=w( zja=sDK>1N4gm*Jav96=ImVMh@lp|@f(;qN_(sbtZR*P&<7NdJY)D@|DoBcIMl0;j6 zs3Gn&@tLeRDp|F%VkMMKY;1J@G@HpLV16!}L!tlvI7?c+y7BAlr{RgdRrS|sR&jMr z0GkVZ^_z)4koIC#EBvRBf$Uk9gvX=1Qw6)X0oE447kn!99-4-tW)Maq|M=gwPWlwT zr65=zRDZem@tK4@TTG`)S1t-Q%vZ|8;_6pDv**QfRoD2{coa|G!dg1}jk2la|6$*XB2p@hnPrT*1iHFlZil1@`I z$%wjngAQIU2WiV96KdtI3W8>a+mqaP#FHorx7?>?l&bm+);Wj7(b9^Z^`9M<>i@$M zvO^NO5e~xv4yKRgFxW~QDi9Dlnv|%JN(5KmnKgv98tw2z z0p&?6dTf61@BOfv=Gj|J5lTbGPGk5+BE z!XqfLZVL@1kC}eI%#HqqK{1$+G3dwf6?M<^GITam)$~L-vZ!6d>>=D7dyT$XjQt|A0v+HX>+TRA(&Yv<# zz@g+ldhHF1=&Z6NpEFI!jJ05t9p7DGVJ8Z0l^rHy5M8B8j)&{QdSncLM!o4gYUUv=a~c zaq{Bts|tUp)^wQ2p4!NEN7FIi*7)9j7KQy?!P-GFgCA0Cqh^-TWVW-tT}_uk)WiDX zI2W0wRilUGy|(8%VGCIbn+N3 zpEKmf$DQhbusrAomh+uZbo7xLBi4K$XJtA+xHY+bS~auyzC8wrZ0k?-ouoh8yx?ti ziD-p|KY#aJ$zQj*z1|H<&ivxr2&l(GvaIS+v9s~^ui1u*h zW!{+25ZY!}$y6n0q@6=HMsfN`5^&18sH5LmxK2J}xf1HV0E;Q6VpBrFhWWD~0MnO^ zA^0kUl$!b9rj5BD_vjBD>Q~)d##`8FIGZ5QfpxNg>k!vY@>mFAlzFEAhJ{?(zO2j= zN#tNHj8BLyBf&i8xWxqr@wVV*eYpC&ytua@CV&^jjD0^#h?1p_J$DxT3oSJHv(pTl zI%1X6forJNAl8aJLu>jV?Qh}^xS!O23Hev!S}ftP?OlJRa)RE;)O+o7$2}B;G!*#Ci2e5t>m)DJ}LGBKuk? zQDl&^gxtK>b-(ZPexCo}`Q@2k=7;&5=UnG;e2?$3oab?!hnnd1IY9>|(`Q!u!yyM}qbX^ypzgx#D zRN9vD=IZaygXv0bDN7FPxx(ssYlTX@)%>N)UFywIma6vVe)0JX2JO_#=_u`Zun)lp*xkjv!7x@z8htK!p@W!j<(6mCvWz>s%&pqhJ4FXk0f6{ z*_*TI*=&AFW&n&gN>F6q zXD`_QRCO0X&?VhMsS{}iani5bPTtvQH%-Hu!mW>&C?#(#7zDR3z)CFL_Lfghdc@UTx%kl@x->Pg$KELwx`3c^3Dxan%PeJ-Lo0Qn^^pJpvSXGM_f~{Fu z+*;%I2}KEpBw4sxHbX&(#DWmf9zhP+zz5yNj=Xh{YBz}(QI$8t)eDO~aZ*i+dy#Z* zBn68Bcf%k|w1Bf)qg?Og4Wt?^pCk|7!G*LxoG+ zywqEM4J~iOAwS@5W;rx1;pR;Z!N(oqai$rU@@<5w>lyKU%jAJ*gcLi*5u9eFDmR59 z#LB$mzk8ALm_-LMw$f{DDozrjgwUNwkM@|@g;|@ASD718DF2C*)duV>QVM1-SAR0@-Ermtq{Q$LI4{V<5I1JSE zF>9c{H45~syg=X28MQCv?MBTtOjSGaO>`_W3q^KQ5S}MRDEFkCI6{T1TW3S*{d~)W zh}BNzf6i*!90DIGINR&4kHMi%N0G&gPWfUhRBKGgMS2kWSR?Xm2JNi|#(DA_?@=xGe#lMmpi|p7w3n z^5LFmT3$9D6&iLj%Svt1E{6%gwN63`PY7Mc`mF%ft zmWci-bgJ%sPB!t2)5rtvHg6Ki9`woXAYf<$sw29(tWUK*wOeD<+%{o_pX2A{cwF7z z=B_-7Y1=0XP~@MJQbbZqxyLDwoVV|9=D^$!z@0@mWf@>SxdY98f1@CUQz}A+`8^Ch zB+<%6qd}0Lau<#wc=A1AO5Fnmur>xK@Z+A5b%&!ai-K z*eMGuNTQi# zBP8H(ZFZL5ey}it%j^Zo&V6(nBH*ZJ0$W!JQ-18^&J+{zuP9%a?%Q7;vh{ZCNxZ5S z{SZcBO_Wg;M#xAR^WAR;)ig^yWuq?|1EY6c@}Z!}4;j*WX*Y4U)x>nva_gF!X}clP ztzS8o!roaw*a_({=>gQ+FSSx5 zn!l^em@h~n(>(sZ0fn)1`wgpWR&5;D@6DPuc0B$XuSiw@;eJ*j0H7IYfCGS<58&gh zuB*@^VeGOhY}35Lg=$2doN~^Y2B}#;O>vpxAW!$y!u|MFnwm>41M(+n>S|#G?4G?{ zt*40k`^N6w?91Il3}rx3!8GuY1g%J0do?s6+Ey^QY_1~zMs(jLzO&yAjKc$o#6Xv% zc=^Tv1%{@14N6QX$y{>mx`zjw6SX@kyq4F#Q3YTu5oNGCxGcG@GPL>$k{?J?QE{YEE`EK z4Yh4EPrr-6`1bVgtB%oXqI~&}5lU@j%LFMI>-);r)Q2g9jl67jb^oN@OQ0k+TMm&A zde|T62Ov;Ld_n%pCLJtiNQXqy$0bQ~6*S?%KBG2-k?TQC?lQ`3rv|J#&$yb&{~X;~ z>50q<0&&Icl^g-BbINnY7J-a;0h~n6;w5Gm!~T4lYf^7)!}E&d%m$4);XQIPc4kdc zR=`{qEu~tp#UJNvNINf`*h|DK*t;e?Pac3!fzD723y6@`zeq~W5s-)vc3F-Mi`dA8 zRQ;9s>n1t^H5YvA>7HK(33sv1yH}*X{x!kVkLglelFXE?nBZ-y0o)iGbYmZtayecr zvBP;Ua*0%#mmGXhttEU_^pAOK7-#I-P-|RD99HW3-A5Jh(izHH#Zg23aZjG#{<|PV zu^tK@?L`5$`x-S+AijCS08U(laNZJq$z@pe*Fc1JP0_3s=ix5f54m%70WC`}K60kR zhJc$T$j);MvumDUWiL1e;H1cyVz~CJXS^}J3_UqiR)d0TV_!~jPfldVE-U`mA2S7B z?s1i7t;{*WEgnBlvn<0xiWF`i$j1S$w*rN*n3CsLEE)q`*(CVH$!A0F_qvRy-22R5 zkdiwvm$8z?&J^s27a1P(Nx{6ONy^lV!1ZXiI3Uhm$9i&r#M%G?W7%$E{mx2YpQj~cJ z(1y*Lo?f=w@yNL+&$l*jk+aP-YKWqb9} z11UX1TI%-2?D;UMVn^*WhM&bj6=blG`Yl)?Vq&8$0xlX7M-pN&(4;p99W#a(%Cr5n zXen24%<972RgHp%8gKU(5I@iRp=y2TYm7{_^hZ zD%mR@Cv#SUzY&Gg6jsg@@cf*-B&Z^FBy~LeA1`(R^kU@}Etq`-^iZ24dSx;zSZDc8 za%XFa%H6O(s*z_Q0bvjO%%Vy~oLU_&!CHTT8|BqqcC z-+nWLES(6rbU8?8E~NhdNBrNw|9<^Tg#RH)071<5K>^k@pmshe;}G!q%M@!;YvdOD EKb9;gUjP6A literal 0 HcmV?d00001 diff --git a/packs/hello-universe-1.1.3/manifests/hello-universe.yaml b/packs/hello-universe-1.1.3/manifests/hello-universe.yaml new file mode 100644 index 00000000..cfb34574 --- /dev/null +++ b/packs/hello-universe-1.1.3/manifests/hello-universe.yaml @@ -0,0 +1,329 @@ +{{ if not .Values.apiEnabled }} + +apiVersion: v1 +kind: Namespace +metadata: + name: {{ .Values.namespace }} +--- +apiVersion: v1 +kind: Service +metadata: + name: hello-universe-service + namespace: {{ .Values.namespace }} +spec: + type: LoadBalancer + selector: + app: hello-universe + ports: + - protocol: TCP + port: {{ .Values.port }} + targetPort: 8080 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: hello-universe-deployment + namespace: {{ .Values.namespace }} +spec: + replicas: {{ .Values.replicas }} + selector: + matchLabels: + app: hello-universe + template: + metadata: + labels: + app: hello-universe + spec: + containers: + - name: hello-universe + image: {{ .Values.images.hellouniverse }} + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 + resources: + requests: + cpu: "100m" # requesting 100 milliCPU + memory: "512Mi" # requesting 512 MiB of memory + limits: + cpu: "200m" # limiting to 200 milliCPU + memory: "1024Mi" # requesting 1024 MiB of memory + +{{ end }} + +{{ if .Values.apiEnabled }} + +apiVersion: v1 +kind: Namespace +metadata: + name: {{ .Values.namespace }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: service-reader +rules: + - apiGroups: [""] + resources: ["services"] + verbs: ["get", "list", "watch"] +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: hello-universe-role + namespace: {{ .Values.namespace }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: service-reader-binding +subjects: + - kind: ServiceAccount + name: hello-universe-role + namespace: {{ .Values.namespace }} +roleRef: + kind: ClusterRole + name: service-reader + apiGroup: rbac.authorization.k8s.io +--- +apiVersion: v1 +kind: Service +metadata: + name: ui + namespace: {{ .Values.namespace }} +spec: + selector: + app: ui + ports: + - protocol: TCP + name: ui + port: {{ .Values.port }} + targetPort: 8080 + - protocol: TCP + name: api + port: 3000 + targetPort: 3000 + type: LoadBalancer +--- +apiVersion: v1 +kind: Secret +metadata: + name: db-password + namespace: {{ .Values.namespace }} +type: Opaque +data: + db-password: {{ .Values.dbPassword }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: auth-token + namespace: {{ .Values.namespace }} +type: Opaque +data: + auth-token: {{ .Values.authToken }} +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: postgres + namespace: {{ .Values.namespace }} +spec: + selector: + matchLabels: + app: postgres + replicas: 1 + template: + metadata: + labels: + app: postgres + spec: + containers: + - name: postgres + image: {{ .Values.images.hellouniversedb }} + ports: + - containerPort: 5432 + name: postgres + resources: + limits: + memory: "500Mi" + cpu: "500m" + requests: + memory: "500Mi" + cpu: "500m" + {{ if .Values.postgres.useTolerations -}} + tolerations: + - effect: {{ .Values.postgres.tolerations.effect }} + key: {{ .Values.postgres.tolerations.key }} + operator: Equal + value: {{ .Values.postgres.tolerations.value }} + {{- end }} +--- +apiVersion: v1 +kind: Service +metadata: + name: postgres + namespace: {{ .Values.namespace }} +spec: + selector: + app: postgres + ports: + - protocol: TCP + port: 5432 + targetPort: 5432 + type: ClusterIP +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: api + namespace: {{ .Values.namespace }} +spec: + selector: + matchLabels: + app: api + replicas: 1 + template: + metadata: + labels: + app: api + spec: + serviceAccountName: hello-universe-role + containers: + - name: api + image: {{ .Values.images.hellouniverseapi }} + ports: + - containerPort: 3000 + name: api + env: + - name: db-password + valueFrom: + secretKeyRef: + name: db-password + key: db-password + - name: DB_HOST + value: "postgres.{{ .Values.namespace }}.svc.cluster.local" + - name: PORT + value: "3000" + - name: DB_USER + value: "postgres" + - name: DB_NAME + value: "counter" + - name: DB_ENCRYPTION + value: "disable" + - name: DB_INIT + value: "false" + - name: AUTHORIZATION + value: "true" + resources: + limits: + memory: "500Mi" + cpu: "500m" + requests: + memory: "500Mi" + cpu: "500m" + livenessProbe: + httpGet: + path: /api/v1/health + port: 3000 + initialDelaySeconds: 35 + periodSeconds: 3 + readinessProbe: + httpGet: + path: /api/v1/health + port: 3000 + initialDelaySeconds: 30 + periodSeconds: 3 + {{ if .Values.api.useTolerations -}} + tolerations: + - effect: {{ .Values.api.tolerations.effect }} + key: {{ .Values.api.tolerations.key }} + operator: Equal + value: {{ .Values.api.tolerations.value }} + {{- end }} +--- +apiVersion: v1 +kind: Service +metadata: + name: api + namespace: {{ .Values.namespace }} +spec: + selector: + app: api + ports: + - protocol: TCP + port: 3000 + targetPort: 3000 + type: ClusterIP # If you want to expose the API service, change this value to LoadBalancer. See below for an example. + # type: Loadbalancer +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ui + namespace: {{ .Values.namespace }} +spec: + selector: + matchLabels: + app: ui + replicas: {{ .Values.replicas }} + template: + metadata: + labels: + app: ui + spec: + serviceAccountName: hello-universe-role + initContainers: + - name: init-container + image: busybox + command: + ["/bin/sh", "-c", "echo 'sleeping for 30 seconds' && sleep 30"] + containers: + - name: ui + image: {{ .Values.images.hellouniverse }} + imagePullPolicy: Always + ports: + - containerPort: 8080 + name: ui + env: + - name: TOKEN + valueFrom: + secretKeyRef: + name: auth-token + key: auth-token + - name: API_URI + # Leave empty and set QUERY_K8S_API to true to leverage a single loadbalancer. + # Otherwise, set to the API service's URL and set QUERY_K8S_API to false + value: "" + - name: SVC_URI + value: "api.{{ .Values.namespace }}.svc.cluster.local:3000" + - name: API_VERSION + value: "1" + - name: QUERY_K8S_API + value: "true" + resources: + limits: + memory: "500Mi" + cpu: "500m" + requests: + memory: "500Mi" + cpu: "500m" + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 40 + periodSeconds: 3 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 35 + periodSeconds: 3 + {{ if .Values.ui.useTolerations -}} + tolerations: + - effect: {{ .Values.ui.tolerations.effect }} + key: {{ .Values.ui.tolerations.key }} + operator: Equal + value: {{ .Values.ui.tolerations.value }} + {{- end }} +{{ end }} diff --git a/packs/hello-universe-1.1.3/pack.json b/packs/hello-universe-1.1.3/pack.json new file mode 100644 index 00000000..22c55c76 --- /dev/null +++ b/packs/hello-universe-1.1.3/pack.json @@ -0,0 +1,15 @@ +{ + "addonType": "app services", + "annotations": { + "source": "community", + "contributor": "spectrocloud" + }, + "cloudTypes": ["all"], + "displayName": "Hello Universe", + "kubeManifests": [ + "manifests/hello-universe.yaml" + ], + "layer": "addon", + "name": "hello-universe", + "version": "1.1.3" +} diff --git a/packs/hello-universe-1.1.3/presets.yaml b/packs/hello-universe-1.1.3/presets.yaml new file mode 100644 index 00000000..c70784dc --- /dev/null +++ b/packs/hello-universe-1.1.3/presets.yaml @@ -0,0 +1,50 @@ +presets: + - name: "disable-api" + displayName: "Disable Hello Universe API" + group: "Backend" + remove: [] + add: | + manifests: + hello-universe: + images: + hellouniverse: ghcr.io/spectrocloud/hello-universe:1.1.3 + apiEnabled: false + namespace: hello-universe + port: 8080 + replicas: 1 + + - name: "enable-api" + displayName: "Enable Hello Universe API" + group: "Backend" + remove: [] + add: | + manifests: + hello-universe: + images: + hellouniverse: ghcr.io/spectrocloud/hello-universe:1.1.3-proxy + hellouniverseapi: ghcr.io/spectrocloud/hello-universe-api:1.0.12 + hellouniversedb: ghcr.io/spectrocloud/hello-universe-db:1.0.2 + apiEnabled: true + namespace: hello-universe + port: 8080 + replicas: 1 + dbPassword: REPLACE_ME # Add base64 encoded password + authToken: REPLACE_ME # Add base64 encoded token + ui: + useTolerations: false + tolerations: + effect: PreferNoSchedule + key: app + value: ui + api: + useTolerations: false + tolerations: + effect: PreferNoSchedule + key: app + value: api + postgres: + useTolerations: false + tolerations: + effect: PreferNoSchedule + key: app + value: postgres diff --git a/packs/hello-universe-1.1.3/schema.yaml b/packs/hello-universe-1.1.3/schema.yaml new file mode 100644 index 00000000..a4609c29 --- /dev/null +++ b/packs/hello-universe-1.1.3/schema.yaml @@ -0,0 +1,104 @@ +manifests.hello-universe.namespace: + # The namespace in which the UI application will be deployed. + # The namespace should be specified as a string. + schema: '{{ required | format "${string}" | hints "Enter the namespace in which the application will be deployed."}}' + +manifests.hello-universe.images.hellouniverse: + # The application image. + # Ensure that the image follows the required format: registry/repository:version. + schema: '{{ required | format "${string}" | hints "Enter the UI application image. Ensure that it follows the required format: registry/repository:version." }}' + +manifests.hello-universe.images.hellouniverseapi: + # The hello-universe-api application image. + # Ensure that the image follows the required format: registry/repository:version. + schema: '{{ format "${string}" | hints "Enter the API application image. Ensure that it follows the required format: registry/repository:version." }}' + +manifests.hello-universe.images.hellouniversedb: + # The hello-universe-db application image. + # Ensure that the image follows the required format: registry/repository:version. + schema: '{{ format "${string}" | hints "Enter the API application image. Ensure that it follows the required format: registry/repository:version." }}' + +manifests.hello-universe.port: + # The cluster port number on which the UI service will listen for incoming traffic. + # The port should be specified as a number. + schema: '{{ required | format "${number}" | hints "Enter the cluster port number on which the UI service will listen for incoming traffic."}}' + +manifests.hello-universe.replicas: + # The number of replicas of the UI application to be created. + # The replicas should be specified as a number. + schema: '{{ required | format "${number}" | hints "Enter the number of replicas of the UI application."}}' + +manifests.hello-universe.dbPassword: + # The database password to connect the hello-universe-api to the hello-universe-db. + # The password should be specified as a base64 encoded string. + schema: '{{ format "${string}" | hints "Enter the base64 encoded database password to connect to."}}' + +manifests.hello-universe.authToken: + # The auth token to connect the hello-universe-api to the hello-universe-db. + # The token should be specified as a base64 encoded string. + schema: '{{ format "${string}" | hints "Enter the base64 encoded auth token to connect to the API with."}}' + +manifests.hello-universe.apiEnabled: + # Flag to indicate whether Hello Universe should be deployed with API server or not. + # The flag should be specified with true or false. + schema: '{{ required | format "${boolean}" | hints "Enter whether to deploy Hello Universe as a three-tier application."}}' + +manifests.hello-universe.ui.useTolerations: + # Flag to indicate whether to use tolerations for the UI pods. + # The flag should be specified with true or false. + schema: '{{ format "${boolean}" | hints "Enter whether to use toleratios for the Hello Universe UI pods."}}' + +manifests.hello-universe.api.useTolerations: + # Flag to indicate whether to use tolerations for the API pods. + # The flag should be specified with true or false. + schema: '{{ format "${boolean}" | hints "Enter whether to use toleratios for the Hello Universe API pods."}}' + +manifests.hello-universe.postgres.useTolerations: + # Flag to indicate whether to use tolerations for the postgres pods. + # The flag should be specified with true or false. + schema: '{{ format "${boolean}" | hints "Enter whether to use toleratios for the Hello Universe API pods."}}' + +manifests.hello-universe.ui.tolerations.effect: + # The toleration effect to use for the Hello Universe UI pods. + # The allowed values are PreferNoSchedule, NoSchedule and NoExecute. + schema: '{{ format "${list:[PreferNoSchedule,NoSchedule,NoExecute]}" | hints "Enter the toleration effect for the UI pods."}}' + +manifests.hello-universe.api.tolerations.effect: + # The effect to use for the Hello Universe API pods. + # The allowed values are PreferNoSchedule, NoSchedule and NoExecute. + schema: '{{ format "${list:[PreferNoSchedule,NoSchedule,NoExecute]}" | hints "Enter the toleration effect for the API pods."}}' + +manifests.hello-universe.postgres.tolerations.effect: + # The effect to use for the Hello Universe API pods. + # The allowed values are PreferNoSchedule, NoSchedule and NoExecute. + schema: '{{ format "${list:[PreferNoSchedule,NoSchedule,NoExecute]}" | hints "Enter the toleration effect for the Postgres pods."}}' + +manifests.hello-universe.ui.tolerations.key: + # The tolerations key to use for the Hello Universe UI pods. + # The key should be specified as a string. + schema: '{{ format "${string}" | hints "Enter the toleration key for the UI pods."}}' + +manifests.hello-universe.api.tolerations.key: + # The tolerations key to use for the Hello Universe API pods. + # The key should be specified as a string. + schema: '{{ format "${string}" | hints "Enter the toleration key for the API pods."}}' + +manifests.hello-universe.postgres.tolerations.key: + # The tolerations key to use for the Hello Universe Postgres pods. + # The key should be specified as a string. + schema: '{{ format "${string}" | hints "Enter the toleration key for the Postgres pods."}}' + +manifests.hello-universe.ui.tolerations.value: + # The tolerations value to use for the Hello Universe UI pods. + # The value should be specified as a string. + schema: '{{ format "${string}" | hints "Enter the toleration value for the UI pods."}}' + +manifests.hello-universe.api.tolerations.value: + # The tolerations value to use for the Hello Universe API pods. + # The value should be specified as a string. + schema: '{{ format "${string}" | hints "Enter the toleration value for the API pods."}}' + +manifests.hello-universe.postgres.tolerations.value: + # The tolerations value to use for the Hello Universe Postgres pods. + # The value should be specified as a string. + schema: '{{ format "${string}" | hints "Enter the toleration value for the Postgres pods."}}' diff --git a/packs/hello-universe-1.1.3/values.yaml b/packs/hello-universe-1.1.3/values.yaml new file mode 100644 index 00000000..3ba129d6 --- /dev/null +++ b/packs/hello-universe-1.1.3/values.yaml @@ -0,0 +1,16 @@ +# spectrocloud.com/enabled-presets: Backend:disable-api + +pack: + content: + images: + - image: ghcr.io/spectrocloud/hello-universe:1.1.3 + + +manifests: + hello-universe: + images: + hellouniverse: ghcr.io/spectrocloud/hello-universe:1.1.3 + apiEnabled: false + namespace: hello-universe + port: 8080 + replicas: 1