From f7e5fe6c7ebc6e58a25d20fadc94a2c4d958649e Mon Sep 17 00:00:00 2001 From: Sammi Chen Date: Wed, 22 Jul 2026 22:37:51 +0800 Subject: [PATCH 1/2] HDDS-15864. Branch merge checklist for Short Circuit read --- .../17-hdds-10685-short-circuit-read.md | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/17-hdds-10685-short-circuit-read.md diff --git a/docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/17-hdds-10685-short-circuit-read.md b/docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/17-hdds-10685-short-circuit-read.md new file mode 100644 index 0000000000..e5f6b88c32 --- /dev/null +++ b/docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/17-hdds-10685-short-circuit-read.md @@ -0,0 +1,91 @@ +# HDDS-10685 : Short-Circuit Read + +Epic: [HDDS-10685](https://issues.apache.org/jira/browse/HDDS-10685) +Feature branch: https://github.com/apache/ozone/tree/HDDS-10685 + +## 1. Builds/intermittent test failures + +There are no intermittent failures specific to the HDDS-10685 branch as of now. During the development, it was ensured all the CI checks were clean prior to every commit merge. + +The plan is to run repeated CI checks on the merge commit to master. + +## 2. Documentation + +[User Documentation](https://github.com/apache/ozone/blob/HDDS-10685/hadoop-hdds/docs/content/feature/Short-Circuit-Read.md) of Short Circuit Read has been added. + +## 3. Design, attached the docs + +Design document can be found here : [Short Circuit Read Support](https://github.com/apache/ozone/blob/HDDS-10685/hadoop-hdds/docs/content/design/short-circuit-read.md). + +## 4. S3 compatibility + +N/A, S3 compatibility remains the same. Short Circuit Read only affects the client and DataNode read path. + +## 5. Docker-compose / Acceptance tests + +New robot test [short-circuit.robot](https://github.com/apache/ozone/blob/HDDS-10685/hadoop-ozone/dist/src/main/smoketest/short-circuit/short-circuit.robot) is being added. + +New acceptance tests are added, mainly tests the Short Circuit Read metrics. It does not test fault injection. + +## 6. Support of containers / Kubernetes + +No addition. No change in existing support. + +## 7. Coverage / Code quality + +[New Code Coverage](https://sonarcloud.io/summary/new_code?id=hadoop-ozone&branch=HDDS-10685) for Short Circuit Read Support (HDDS-10685) is 80.78%% and [Overall Code Coverage](https://sonarcloud.io/summary/overall?id=hadoop-ozone&branch=HDDS-10685) is 78.5%. +[Overall Code Coverage](https://sonarcloud.io/summary/overall?id=hadoop-ozone&branch=master) for master is 78.5%%. + +## 8. Build time + +[Build time for the latest commit](https://github.com/apache/ozone/actions/runs/27126447271/job/80056268213) from HDDS-10685 Branch is 9m 59s. +[Build time for the latest commit](https://github.com/apache/ozone/actions/runs/29915076929/job/88926295859) from the master branch is 10m 43s. + +## 9. Possible incompatible changes/used feature flag + +Short-circuit read is gated by the non-rolling upgrade framework as HDDSLayoutFeature.SHORT_CIRCUIT_READS (layout version 11). + +It remains inactive until the cluster upgrade is finalized. A global enable/disable switch is provided via ozone.client.read.short-circuit (default: false). + +To enable the feature (after finalization), add the following to the client and Datanode ozone-site.xml to enable the feature: + +```xml + + ozone.client.read.short-circuit + true + CLIENT, DATANODE + Disable or enable the short-circuit local read feature. By default it is disabled. + +``` +And the following to the client and Datanode ozone-site.xml, to specify the path of the UNIX domain socket: +```xml + + ozone.domain.socket.path + + CLIENT, DATANODE + UNIX domain socket path for co-located client–Datanode short-circuit communication. + +``` + +## 10. Third-party dependencies/License changes + +There are no third party dependencies introduced by this feature. + +## 11. Performance + +The major workflow of Short-Circuit Read is: The client detects a local Datanode replica → opens a UNIX domain socket → sends GetBlock with requestShortCircuitAccess=true → Datanode passes a file descriptor → The client reads block data directly from the local disk via FileChannel. + +End-to-end read performance is therefore dominated by local disk I/O, similar to a direct file read, rather than by gRPC data transfer. + +A benchmark was run against feature branch HDDS-10685, and get this result https://docs.google.com/document/d/1xmjCbK4rP287pPN0_iOonnQee6HgwSI3h5hVbtgfu3k/edit?tab=t.0. + +Metrics (ContainerLocalOps, local op latencies, local bytes stats) are added in Datanode to observe the runtime state/latency. + +## 12. Security considerations + +Short-Circuit Read does not introduce any new CLI or admin command. + +Short-circuit communication uses a UNIX domain socket (`ozone.domain.socket.path`) between the client and Datanode. + +It follows the same [Hadoop Socket Path Security](https://cwiki.apache.org/confluence/spaces/HADOOP2/pages/120730260/SocketPathSecurity) rules as HDFS short-circuit reads. + From 1b302c6751394372faaaaa071b6fa7bc5122a182 Mon Sep 17 00:00:00 2001 From: Sammi Chen Date: Mon, 27 Jul 2026 17:17:23 +0800 Subject: [PATCH 2/2] address comments --- .../17-hdds-10685-short-circuit-read.md | 28 ++++++++++++++++-- .../cluster-config.png | Bin 0 -> 14003 bytes .../ozone-fs-get.png | Bin 0 -> 9488 bytes .../workload-a.png | Bin 0 -> 8645 bytes .../workload-c.png | Bin 0 -> 19450 bytes 5 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/short-circuit-read-benchmark/cluster-config.png create mode 100644 docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/short-circuit-read-benchmark/ozone-fs-get.png create mode 100644 docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/short-circuit-read-benchmark/workload-a.png create mode 100644 docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/short-circuit-read-benchmark/workload-c.png diff --git a/docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/17-hdds-10685-short-circuit-read.md b/docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/17-hdds-10685-short-circuit-read.md index e5f6b88c32..1376415323 100644 --- a/docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/17-hdds-10685-short-circuit-read.md +++ b/docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/17-hdds-10685-short-circuit-read.md @@ -11,7 +11,7 @@ The plan is to run repeated CI checks on the merge commit to master. ## 2. Documentation -[User Documentation](https://github.com/apache/ozone/blob/HDDS-10685/hadoop-hdds/docs/content/feature/Short-Circuit-Read.md) of Short Circuit Read has been added. +[User Documentation](https://ozone.apache.org/docs/next/administrator-guide/configuration/performance/short-circuit-local-reads/) of Short Circuit Read has been added. ## 3. Design, attached the docs @@ -77,9 +77,31 @@ The major workflow of Short-Circuit Read is: The client detects a local Datanode End-to-end read performance is therefore dominated by local disk I/O, similar to a direct file read, rather than by gRPC data transfer. -A benchmark was run against feature branch HDDS-10685, and get this result https://docs.google.com/document/d/1xmjCbK4rP287pPN0_iOonnQee6HgwSI3h5hVbtgfu3k/edit?tab=t.0. +A benchmark was run against feature branch HDDS-10685, testing short-circuit performance with the `ozone fs` command and YCSB on a ycloud cluster. Short-circuit read was toggled with `ozone.client.read.short-circuit` and `ozone.domain.socket.path`. -Metrics (ContainerLocalOps, local op latencies, local bytes stats) are added in Datanode to observe the runtime state/latency. +### Cluster configuration + +![Short-circuit read benchmark cluster configuration](short-circuit-read-benchmark/cluster-config.png) + +### Ozone FS + +Use `ozone fs -get ofs://ozone1733996033/vol-scr/buck/scr/file33 ./file33` to download a 10 GB file. Node9 and node7 have the datanode role; node8 does not. + +![Ozone FS short-circuit read benchmark](short-circuit-read-benchmark/ozone-fs-get.png) + +### YCSB + +The tests are performed by running 3 consecutive iterations after changing the `ozone.client.read.short-circuit` configuration and restarting all related services. HBase `l1CacheHitRatio` is around 90% during the test. + +**Workload C** + +![YCSB Workload C short-circuit read benchmark](short-circuit-read-benchmark/workload-c.png) + +**Workload A** + +![YCSB Workload A short-circuit read benchmark](short-circuit-read-benchmark/workload-a.png) + +Metrics (`ContainerLocalOps`, local op latencies, local bytes stats) are added in Datanode to observe the runtime state/latency. ## 12. Security considerations diff --git a/docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/short-circuit-read-benchmark/cluster-config.png b/docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/short-circuit-read-benchmark/cluster-config.png new file mode 100644 index 0000000000000000000000000000000000000000..5d994fd929d51768463bed17668ccca35b7584d2 GIT binary patch literal 14003 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πh%}nYB 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 C=06bt literal 0 HcmV?d00001 diff --git a/docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/short-circuit-read-benchmark/ozone-fs-get.png b/docs/08-developer-guide/04-project/01-git/03-feature-branches/03-merged-branches/short-circuit-read-benchmark/ozone-fs-get.png new file mode 100644 index 0000000000000000000000000000000000000000..e795bf5ce2f0c9406980c5b9b4af3a99c3901339 GIT binary patch literal 9488 zcmZX4by!s2_V*#ALs|s^0l##kgb1jF3IdYS-5t`6h=3B(ARr>$-6bL^AtK$~C0+00 z-uu@5%^yBI}Ahkp`nXC&)MR9yhBg7 zuqc&(Ga`dWK#=kEYkPY;!eQ*#pXcmyfBEv| z>(~2#|2lG9ez=B#At@>O1wO3S;2{|69M=2x`}gnf-eLXjox&9Ui1>@c&i=o7|$`czg_gdpOQk})wc4dst0DH9_ih}Ny_?ROWt zVl#uFljEs!3GCs?9d|X`N2?@{X zBBsaSIaCX^jf{*Qy8X>6DJiL~Od@D z*r<`P{FRd(kwi9@PLGbBwlWaEupfa;vYsv{(JX+)-2w=d)KzE z@7J%#sqz{9R2N&>+1d5=^$0R-EG>;&aSiDk9*&EO`tDKUdc12SDfwf0dHJv3(C^=0 zGcyfDcYS=2by9s36AB_CA_@xU?dj&ezCJagPtr%nODXhpbnu`{y(uZt(bpJnLN#sA z-=d^kTV1_HOzcNIzOHL&=`s5~2zoFylz@hYX1E2`3kymX@yyB2ewNlhIywrw6C4ua zeY`-Ss;Y|kUTUkV9_}tkvoSYKy)P)RHZ#kvtUN4iyhw7wEp1_KtzBx2k4(d(EiNu1KEHn}Sy@?OVg|w%EWRe&t`zRrcAZ{a z%*e~5A|aVuUCn_%h=`h7TAt8er=zF06VQYuDJm+;%ZG=AbfrECyn**NI5;>laqQ^G zMNG^mIQY4kSkv-yR&a1Owx4oA4KxL8t_ zl9J+m^4F}YfRuzpQ9*%@mUjF6a0;3?0GHxhQg?4Jbc6@yh@P8zxp{Pc{>Jt;7vdw~ zz{y!yRK!I_7Ohq5WHnsWJUW^n;Q$?%B}hXvwQkldkH*dyoZ`;Cu3ne8-MjBXI)tmNz>FblHA{YWpf59?xjSvs7 z&S5FEuI}vPUFm5TTSG(fSFdjT5Ow>z3~*{-U;tdJUUa zhRv51_3`7!04H!=KtKecB4A`^$7l3sQ^tUu{8ON{Ha*?f-(T!;Y=5LCEiK*jcbu3Y zaBXV~fMRBD4h^{~L+MzKfLatJ?jj11OQ~8$0{fL@j1w>)ej5YAmNtD7zIOKR?v0tJ~EJ*h22<(|7gf0JZQvL`*^9 z7r<2vyN1k*7p|_ZGw-pHB7k>+Id@FHd-uFgRx*LTOifMUlwYJB!@X;3YNj*e?iJ?e z!+~v#mRl5RR`b**NJ&UE$H1{mN=aSrrChqWxd9e;c6Fg4-&dG$}JP zdT_d4US2o>ALHX)7rSqwq4@*zG&PCwNqFkm3VcdTq&)MTv8{q~+uhr18S2&pG_~C@ zGc^2KQbK&uJ?%;s*wRe%?9rn~uV24*bS%rsSp_nmrd?PAOf2+p5k|z6lpIY>u{frx zYHLjl4Y6==z6}-!2jj$e8eAM_=j41_GX=EiHVAKTf6C6D51m6u7^YEat<~T$(%gJU zP|y{Sb9>HF=(aZ5&)#00dbfLLQ6(k2XUBUslXW*qNxx=g!Rk9F8{WJ@*IdFOARxfT z25|&0ucPgm!CciD&g$G;>Bo;}C!#o+n3mVq--m_uc63zR&Y;#V=H%qqE@}gXMpA?< z!Un>#zzdo%PV48!`nqn{ScMfmanMpv5-tu-Nm<#OIhB}mVb2psB_$qJBy-Q9fm?_(fu0t0CT zY^OmFjEsy(fOfieZFrY8;Y-7Vh=>SSfdCajV2kHYD+SckI(Hx;O+`t`XoIJ_v~*Xt zVrCHmCi1G2P*&9fOH)(mS972m zLeaDBqa6cnZEX}3Ul2>e)LSbn*vRt6h9_*VKPKVyc;EN$;yOB)A)F1@NlAsh&IH^~ zL3cvsdw6&R1O(XL#6mu&raodI=H=ymAtM7amw-m(%({e?h2;Y3+T-lVPD-ln@_g#D z81v}lWOQtdm5B+IVTmTMr}t07+d_uM#{aOhfB1PJU>@2s1M&+RD>^Fb)~#F93beS; z6t&JS)k|uG7q-ktj7J*)6;=C2?8Udqwxs|MI9Eqcjnq=&iGhZaDITQ85td& ztaByNp15!!5i-_p^vW+R?47m-L^@a>+51yeP*AYBxw&GHrL@}Kj&w{$Gz=(fa zTU(}iuw)vy_w5gofJr8Vl$4YPQ*sAIK|$C&@$c&c(#Q_Z^)9F3OI=Qj2Wx9<&Kslm z1{?b(CqZZk*6Vl0u)F83^WCyaKzQPXxw&`l@X=6F8OFw@Ek;I0f`mI?%UHPq_((;_ z6f(_s>%*}XzzlF(Ep~EvI9H@sPk^JNqisjBM~@uOyWrq&*zJ5x4xE7z?3|okW!ErT zBxrj4^|ZAY3+EOV?h*&B>)AGRm!z!gfw1fD;s>_IC1=x}qB$UhGc2(*vDSgIc>X-6 zrY2#oaeK_B(be6(v2newZr~>#fRBrdi^!WrFcn(bp$T(4E>O$|g^3vk+dwPApV|EO zc6WIiCn{~GA{pi43TJw1rZwMHRS8V@xY@qzO-}K?h(G>E&)Dm1M=ErLe5VJ#hK`9T zx39_|@Z9#D8pb3w_uw?{3h$aN)#06Hl$zjR@G_->eu;5$H*VjCl}|4wSzB08Qc=zC zCY@HQwa$P$%|r^S_mn=dSwbY_Vp`z)tD8SD%?q);G=e+^5#qR^@D)5%+xtnrhf{P2PZEkLK7p?ot-K%T46LYW@KC6C1^%yx z`nR=0A*fs|i5kO{d3_iX5|ZgAL~QH4!b&dvrt#KDe}A*)dJ*V80MlCD;=;l(ak>}# zpAN=Tp#n29-Y&d-5n5JR85gez-TyYdK#@Ov(tZHg%0)RZ&fVN!wlV1z8ot?d+ zbeE%wc;S>lQ z5CqWsp#R6l##HmwjR2=?Y`oY0ut)VbU6N~*Ra5}({TUj9g8nMcR8v!P=gu9#@Hmod zywFcY&%In-t3j~=;Q0CZAqa@;xKg_5Z-E~bse)0q$3k?k|^>*9eSw*I(@bK_2U+9FXy;pwS z<%yS}ivY}VSm-2cnkT=H*}ByJfs!9K2;BPN)>KMF#G`Zt5dQ99cRD(rJ$u#x#xap!TKp=D|NH4fRlwq%B6@*)V$8EulICwtI5x|a&r@MXV7Jdi%v`oA!}4o zQ1Hu00aSvB1M&bkP3S@3JwV>X`&Rn=c?tC3d;3@Z0?&Qym{-nKd6}&QavdN!D=Q1u zQ&U^Z$iN^*6A5hhs=TVKObJo}q{!?1BrlJx8{LUz2au%UY*$)GM+ZvsH58Rv2{iWC zhK9-R?(Wvs^vq0?p5WeypNagJVAWwmK=$?j{_SXM>r?UI#fukLu-0QuiqkqYM8WEk znUN6_9UYyJP-DN)35po}O3Y}NrYc8JYX}nq!<&)J)$c(hARJ*q0#pU{^+{>C5#{Ck z#RhE+mlvntE9H!eK|b~l4DgDGTtEUa3=&QX9u3X_)fcQv#g!Z!*A08qq(gi9c^K;a z&mZzz;vh_5p-sG)>p0zSl^p_y3Uy43jAnL@z^Bqhyla`+9It+oIna1C8`9k^LrqQH zJ&7V~1~w2@gp0(j#;cLpdr1tpN+HgrZ}=`5P; zH4*4T2YdTP*b_m)p#08_;o><^p4}0cgw%ic_gl$@K+(a);HhU?0>N-SdGZ9VQfoe# zV>MP`XXa$CAfIvj!$dEtEJsRU`=MhWd+Thr zjg2Lyq)fH7F+O;Z_>`eQtCpNqkA;>NVfEPA+mn-(Es@gSQ*i=&U}b3ud6R6iF!to{ z)boW{9WYc-q#%4#^_1=GieqDAOH230k0n4oCX0Gsz!G9Pw1hlQ{=!Z}zCuXY`z-)> z<}Zn{H-`Vr;-ZSGsxx@GMm|1T;vmrLwl_@m^mf)qO3^S0nnZ64+Kaz@xpO$>ol-hm z%EiMoyS6qqJlx*Zbj(9bHL9WplKA4KCkjit#Z#TwYt7`u6P!@V|5s;K{+t zRa%aqs!D@Yncv)OFlY&K_3 zU0q$LM@K+7delssp=oJpxw*N;#l>J`K7J&Yv7!pmadUnSQF$x;SmulYio1Mo~;2uv+zPg;Mh3s-Yqxm_!ut*tua;a9(yhd0Tu}SOnD|S zB?vfDL{3hQkuekY@%P|hz?(PFS28xQ_SO8_=IZO}KmvlJ1+0ey$f!xms;{4bm{3v@ zLmR!Qva(HQ0<0 z^2+?6_b2fMPy}Dt^MHa?k39Bl|JA5A6ncZ&iz%Tu%(EiJ8AcXR-?u(7c> zV=bYq^7CJ)s5m9WLH*{1XTN##9nu#z^S4%d+&Ed;+08h{AHu>^Ra81VI(`CqH*Bn~ zqT1lxETZ5<9Ga9ZOiiD@d}){S+&0d7{V|v}?i+Z(yo>E%f|``@P-6mhgVwjU3JVJ% zsWxJ!_C*j7zm85$z{il@pdibRZfa^HK=R}qngZuUfF@AV{R0F3DSoZ9qJiiXH*Qqv zx8k_FyT@!mNiHlb$nywO>!_=Do=Xi44nj9m-1;s%l0(LRqNl8U6_qzOib@+gIUPVO1{oX=4-cdy zBBn2_wy|r>wW{qUq@~x6_m*znyorj6N_pQ>{^d)^z<0N|i;9ZkR^Pn~38}5E&CSZX z!nUbKQDNavVPRWO7^|EMG5JMAw6(M*#>YQ>{P=5N0FD3P@G$f1SID_^^?(9ESK2u{ z6XN3s7**KY+b0XVe$!MBkxYX;jEf?8cGS%lga%MNB#1^_H%M`=d@6V=PR_7qUAUWw z*O?1slg+x2k=U|1zMgN7fc%ly1{({jZ(u;9NEgK;F*zB?{WXUFO9cgeW8)vXTo?O= z-jHW-d4J8xVd3U329)CX?GGx6lA79>>jqdrcrgF^0_ZGydIOO4_4VhlG3V#!>yJTp zvZKZG%X$m;1&IyJE>p3pbq-;^6|Y9 zf(&2OWqW#aq884f==#^I^p&BD2pjAVHZ~;F3k{y9Kib;Z+1RGT7W{YlYt5TK0MF`p z?vpvBGBxFg^>EdqgZiMnc@s)AN!S(i4-XSl`_Rx~cRa77(E0w_5cunsj2DS<8}i@} zKo}Czh;)zt6S5Zx`n+<=OG8m{4n($r0UE-@%v|lfl??A!J1jxUqPmvAemm5vm26RZZf7Niry-Mc~JbkbdIp|>BnAFM-YGC~irNwxKa5F)0g77q!a z{UEAh?G+%HSy;3@TZSaMH1>WMQG7^&I>fDfw>DrjLeo5Va;|5Gjf$9BSe%}m7#kZW zKXBdzngx1+Yp-o=Ow_sVfs(#~_XC12Qc_ag`bA&^Hy4*8HU>LKujg`dTmK41(GezA zR*)=(+V!LT{X0P35PF7?v-8}$H&N}t=qrY_E3bXXB@dB@v!Ng(V`pZbSy+e;508tB z(@maKQBne{@R%?Pq*Q1Gpsy%UB8*J*wj>JFeIj%J0EGM@gw!E0FmPs+`;_Py0z8q1 zTyifbt@7z#r+~l04=K)jLfCdo7h{tgv^62j@#L8xJcGTaqoad|z5I8gnUj__H#-aQf`X0? z;o|$;7%0Vb=~x6&tTr#kijIij78dpZ3kJa*G1eR4l@dHWZU?r|2;hFGvY?GLny~1s=_rg3JL>)Ctxtanjk(v=YV?kuVps3 zwg@wuK;%J^09XTL2n~WD;7PuGA-;JtJ3T!*DQRP7#+Ut*zu;ERJwd?^I?{-z>zkWz zTkStzk~nxkpaemNiveXjaeP#iBRu2#_jpxep_=7QzYEmC(Q&!n0*I8%ehNO$J0XZr&<1g(giVW2pv8LZlEB#Knu3E+b}*IuN$~`@17D%beHq4 zgOP^^74xNCR$-ykITi3dx>$iaQf+?cKlJaTS&pdt|5s%3uZ#XC$>4Zu3%fosF`>niQBc4K-R#&~1w~y~oF*=KP z&m@c?vIB|?a$8$_S-k=+bx0ul`h4mkQGid!(G&kmiVVFl0de6BzQ$|-CY~^zEehM- zW05g7C5&!504eICoJgSq|v{V;;kBQP$0u(GlOnNt7YAUxGM^m)Va zVxpk65U)cT&B0S|?@M4HW=IkT2OoN!#f@~lm-)wLxM-#`niVPoL0;v=iqXCc3eu`^ zWai}Dnr^48)qil8+uW2a~ZP2y82S4E7h= z3^)?t6Kpr6rC_#TQgZR5!e;7f*aGpZNiQ`^G|q4*-(;hAV}3q90-mA|{3#WcB@7HV zHXaHI)xbz4>49@hRMe*j&IBjCx+VdjJ@N7JU!`o82C6v>ul>(_0n?(AOG@FtbA&p> z4&q_m|HK=!X@H;5WJTt4KujQ)N=i!$bs7r**p`+6k{32NCr3uqUcCY&&&|mRF8T2( z?n_Vb%KM0j{)t*=aQXo0)!vpoPX=z@y_*ioH0OUO9>?+rl~2+&rgvn`aE4> zh8q=ug99Xk$;s;SvZ09ygsV2AW!UjO-Tlm~r-?mRa|YBHAaq-5OcBq4o0e}ZOiWBH zEO1F;uA&?>W2f3kFv$-D1fD*9I=`?0Id52KXb;@q>1QSn-2baWHq;h$KIFUSK=UAT zN-Rfsju^p5EEe`bO*t;h14vMZ^>%jprFX*vkPs73n^A`Dhp%*hlD1vX;I);Q%g^9N z5K|$C-T4jxd>AhS1cEeFRZ>C<_>;gu(M3ERi0eU+|JV2mzDVrbL?`cevbT4GkR7<& z&)*-m6_gCMunR2<%j(h+razDn3@5Rz{%UG!wj0`ui=#VQo@(k1X~JwdZ3WMrA>!$8 zP_zCIaB)LSdXqOM>l5cHyHi9(Azxx+lTlFEg(1z`R`KKGW0-Ttg0_L<+}*V|6#_}S zzOWEbJxD9Emz%X^BlLuUcxK_Tlg9P!j)b1RmA^nY!y_XvQYH|_T5z1nAnQ(!j@Wb> zG+_`XM%!&P5Fc;RL!Au+E%=$o)x;w!KR^28$Anc42y-|!t88J|B+xf7Gz7m1cq?sh z$fKsDL>k}oIX4Tbi(Ki3;SmhDX*oHkhKF4s+}c))>w$sb;?j~L6Dg#4h?tlda=J@r z+}*72{A+5;d-ZoV$WySrl>F93?%CbUSLc|jx-LV9g1``$pNk8oFA-!ijUm4q20Ev3?HU*DIL(eeDcp6+2pHNM}t$y3ZC|KI^4dhqfp9_xL%HRVJW{MW=cl|r>}D}x7c z+oKd>%`OpKCJuYs`LtD;>bg8RB90K2Pz;yPA(qvzxYcUUpgcJl7&s{uZ7 zmjTJ;X;BxeAJZ-zNDSfv4vtUAgC=|&oENX~U>$^na3Ljy3q3ttL`2}?Yi zWMN@JPfF;Rn3#z5IiheJA0PK{b*;-|x*nyksVQ^Pv-FIUlQUR1{{8!#NE#V^eSI%4 z(Q-;0oa}{JTs*w8vNCey>FFs6EzikHZsyk66*{3WWpk(Y`)= z1KmqxWLURf37!43v$GaG2^Hn#_p~qI@DY>tfBSZFc6v;NdHwpbmDO^2xd0lG+E-Xm zkS^{~c#o;GySux$cX8X32vbv2^Zxz&FJE+c62mn%*Vj)MqNL@5(6?^gGB!3ooQaH# z{PN|?@xkT-1p+B5DoS=;;_B6L^uV%d{qx_M=O@dPWmcFx9Gt5c39T$G6XN3o5z4Bn zMz!t*b#*?nva)`DXEAIl__zV@-YrGY3CG05sH&+|8#y>R6-Pw$CEvA5QoXtFP+3_y zkRi#cJXPg5GhOekqN0+>ZK$WMy}P%f&B^%*R{P-t2Q4iv`b|-hqo=2*mX?;P>T4x6 z`1eO&>hg~tG}P2=2%@(Yun?LUJdeIK(XxhyjDh7Dtp9muG;2aaLS9~8Utb^m;IZ*7 zS;Tq1z>uATq)O4mho)fk{JuU4T9UVE6i{{tbWSN_r8?1Ze zz1s27awZ-wE((Qmb#qfuR;FiQfLnR??3tUJU?9@Q!GR{P3vS8B*H>3p_xIjjOl+)v zq0yx)1UQXK*sT6cX=!HW$6w2B1g`ZpH?y#_v){ct(%hVd!N{nnkT7N!6nq~Xe1RDL z@}<>#b#)c?ed}0U)y1VOB_$;%=LS+qMdcF)6VPYr?d3H&HD!wRGv=TY5)x9+kVr;i zn9#7OE;nmOM-2^)^Nrd~8eWrLGrs1Q7R=vmf%-T&_#JLNhSoz5T4nm`>FSP-kLP~; zDCWJt_U)UIPwy*2GRxki07RD7xpqiHgH*cuK!1OKZ*Qyjm(kJGl$5Qhs$eq4{-iss zTwJ|dbh&+Ynrm*4po2c%oWYtJ7$jw84w&)1 zZGu${vED{@!i|lN{%#H=ned0IsAWnqFq_-i*;!kEHt(Xi7V#c~d2DZgdc28^)rfoZ zM#SYuZ;jipt%C>GBHR}{qnCOTZEbC&G?gzc=Tmt9*1=7de-R| znW$w*9I55rO;*J`;NavWS-*hOXu38F(~jU8{R>F{0}wPe0b2a8F!BGr`r@qgMI!W< zyuAGF+qW4%Hmj+rJ$?FgaBK7Bj~_p}V%ZmnemB+zwah^&$sf}M1Qbu&bp<@kgwBO_ zlF~_MlzeV(W`<*b&cngWJ3c!4Zphj!?9Piel%SAMm^uH2&b|HpFtN|KwBPrpi_y(V?QC;O~q+r>s;{RkeHi^jfuj$%={X zRF#&Fjw{p|lf)w+ARsNx$iuRSjh{SoY#Yi}yvxu3LFXwTfU~o+qobpXiwhFjTnFn@ zPwzJ89~mBguaW6sZ9Vb*JB(7J86WiH)YMc&M8vyy@5qrWD=UG4frqbrt*xyeJxWPT zq>WeR=Hz@*VxX+7{PE+*hs^L@$h>^g`1C$kF71I=GRa9 zMg08y__#6}8d0xay-G`?&m7RWe;+esee>o`D&nOm>9Y?-MZ!Wt0AIF_jz#(TK4&M@ z)zzZGEh`%v3PkaViLi62NlBeuUE7{@i;LzA4C(v(`v;SizkmOhl$2y(U?3+aH}(BJ znrP}5s)CrRG&t?-R4TPUK0YpK)sQ+uH<>-)h|9{#8jwCWQd5fnl&kly!eVE>e2HtB zE3c^d4&%ajei)pPK=Zh!w^x-k_{r0!%9sZqKYil7efyE2p(s76ksRMkZ~v0g($dOG zDd%}KY*BPHIg&$2D4`7nI1fwXZ8&_{u^_Mb_o1(&lmD>n$I3{qk5p#Q5`}0PB_(Aj z$+O)beR_I&0RaKH0cHmq-(AJ(-@Sv)dskH@EFyBa@x8XzeH}>@A0H1-N_y?w5ED!3 zSRjA5edGgZemnjeEp0F&EGmlk_H8lGEi+$VUro)SJnh_{u7Bb=^>g06(=T`w$kyK0 z27`WlcsT3tIMcvDL4m|P7%MdHS=g=wx&Wq|a>T-VVFwd=jERYfVWQ@@JgcqZ@d-Ij8|mv;`5wF9j(@)XRq*r6#-{pld;)?DQ5OY0J@>v8!GHewhlrV% zx2VE)92!W<@5DeuV_;}#8>k1Cgd}=sU~qVR3>4?R@vZve#fva#HWSIOskd z9iQDkVef;DHrXWDvy6<4UtmFQ?jcs z?jFg=$Ut*OU6*Vo>jYwOcXyYPlDdEY{^t+B#*3u=&+6*xPWIQQ0MqG&?21cDj{f{A znj?OxsIw=<`@^9Axf=?VRa<-fB~N?vTXpu^w=aAz#4E=~N3X1{$q~7Ectp_&lQQ36 zWtBCu1IDwow1ip$^+VY}9}rPfdj*P<&SbK#h24rGsNW$r#nZ z-y5JbG{{)Ed8@s4e|)d?fO*Q*$ZW74%98Znhpn9@H}&_&!q7Tz9d0kw*VkM1rC2yP z6z1iHl5B2nG9HtEJGL~mu~`8c-Rfsj+Wm_10^z|KkbKqC(U0=sG&Z)j9`5c63JUW> z_zFNxGBQo$<5d{UTw?&9oe4R&8%@56TG|ou0I#r3H_%&VH)$#S0vJ`*nZ}7nfbfhNE_1 zcIfT3@kX+q%C4?1Pb_pE%=5y+0&J*MO{K2B{`lC~bc3%qybT&u{;9avj=5NRzh&9> zi*0zqu*$)Af9;=i^^TVMzEojvPtQT?a)2*$zzpaYUQW&)kQV*4o*Lw5!T^2YG~5(^ zpH(xZd}q~9o}a1ZLVv?l2jpJBA*WgbS~2o>46h}*=Zdks%nMWvviAh0pD ztGoMU(FY=C7#4W^es3D8$R4fT%42R8z``EGD0=7c@oEKDi-T&X=&G03QPZ#UstRsD z#)C(l3f}9{AUIm@B_S~&rJF1882zu99cU>Ub zL)p{w5H_~MWaMCuKfs1XHu)y5upti4EW>|sB{;LQ|93Hz!M(k`Z{IT2F;G+M>gfd` zpczsGZD}IEkA44s`rTs&qnR?lxU{r1H#fJj5y|>?{cFW1EY^RnIgpf;6h_?7&kw+Z zoqc&{sVAGIBrnef=;iwL>mY1ph)N9dVXm0a!y_ZGr=Xhk3LcGq`63V|7ITS|^ya)W zYHDMmq-A(`805j&7!AAR;ZmY0Xj=vOZ}r{>4JSK2g0^F`NgE_6M17rz4drk3eX2#LMVPlIO7>jj?iZ%qXv%5<|O6s?M2O1j4 z2)GnX3oHkZ3~~RZ%!Vc0!K?CUBA{oqiJS=6OV|zM_Tu8ArkyGNT#VcgN;YA&wNE-C0bDXAyeQ7;sHk)v zJ`_Ea_zdo>BZ`rojSY67?)h(J4k~aZmjavN!@hm{1{MtSASpGK?)r5eDq>kAa(-cf zgqS$;y5wyt;^l$ND3Zy~&a6^BFn2c&2O7Pc{<6j1&mj=yTel2QpsxQjwfFCbKHz|l zzkLQ@qr*XUUGjPP+qZAa%0?z8t}0&X?(2hZ=p^a$nvDq>x%%r`I%7RP6X#VcXZ+8`1!~mva4dX2D^PL`EU=2Cp1t$>z35J{qIsDL{Y%D*4#<@8- zt`?5*kvU8l7#L7dQ^zMHWJvp8XQra1)z{Obp`vnyy9o*+Nc+{;)Wj?xK*gAumUaTR zj1}!EVPax3?J?u4m^-qq0k%jav6%@G%D`jVV5Ft>aL=U!QTIHju1p2 z`4o$mQje(14;@|IuAUxn@zJb*!V2u<>a2&=MjO>2RMW+Smq;~70uUF6SN1@*HTU+e9nAPE z5>eC8Sc3guUbZqfpS`nkw7cBW-0XL}UIpsP-PP6H+&nHW4z3cue_YKdE@!1KEiQ6B zDz|l6{twot<4-nSl5*HWq{c{tyB897sZ|kR>RQ)o_uU`){7`*M8Q;_AC+L z~Cgl9w*oo&9w*)%hgiNw6|@Y@?w+}PLv zsqmq&uzh-@r>AFZOb=A`8;)DI@;-e!-tJ)BJ@QGLHw&Tok1QsXk`WOTd-U)jV9sUc z8{FLM3k$Ic2>@gfcJbw-__o(fJBgT0`qaQvn!%UDK%{InR^HcgOzf$@(wqKhK2%^?%X6S%#TY*XusmW zzc$Gr?yj2l7lH0bNcc3pya+0rquQ7#RD?jx!S0zKj#TF6+S(e-nU$4d0tYv@y^T#M z0vLmngQK{-oW4+wG`PjGtOU!Xk~6ZRlE@<{AOPmu&fXq;BM}DhmR`&?WMElENl8af zZ)37-8OB&PP6RncQEZS8s14!H6EgAJ-S2aAg98JN>z`BeF1B{Fpn;n0?d&?`$)zL0 zO2JZrECjg*FbQ3WE(K~7A;&*5VNr--GBR^^E&=H<-xf}egzyMz4Wt6lwhw7grQPJq zD5DzJJotm$Ourhy4B22(`^i!^utDeDmSyrWW_FXM7sqqU%CrGk-U#sv2;3ln&u5u( z>4ID-fr}ZR84Zcj_Jr4sN3UMdQIuH?>>nH)?C-fQ!!73Uwy=;8c(yD$S`)M&Bo$yH z0e(RyB&+^_O(92upMmC;jkC731u-aK(H(b*@@B|MPHt|M&B#qqrCwfM5TL=8CsEvH z_=dE!G?ZOUtq;^whLrC$W&tjSwleO98t|3CMH6=WU>rky*8-#KDUs3XWQXnsiHLvkBCHCSeLgMt^Fu-!elE33PSTi> z6(GaiW*RN zxV2vQkkZ@y7C#6 ze3szNeyy&O+HOn`fmr}@gv62Vi5dhh#>U@Gy^~=i0YRXtwor~)RaN?Xl+!u)V}Yhb zAE|tvk%hRAo{>>HfdYKEEecf%yir0vJ~C2f*_U!>jQmtIa241Kyz!HpcX)UTOG>uW zeSBpdL)D7ievM)G`STzN^f`2bTt=i+So6UHCQ+xt7v<&Um6iL!AIoxb7O&a{)8a%V z4;B{kT#MLGEN6;P7#SSAdRm?0sPOP%H6*iZ@xF{au|Q7${F6*}sKpR}jHvq?pf@QJ zz>fS)%>N&4`gVvcac^~$b0_}}P!zlg+&=`c(Mt6YA7al>9qGGv3${G#T7t<4@$u`j zFX@2|fe^`v=K!!`cyx4W+tYR|AKYOw-(y@aI>v7k6Q6yL_njBoA?LYBKoG`0^!+mnK*azjf>i{4 z_5_6jzs`yvLdwd<$HkE{N*QTtHZAXh0g7OqJ^_0x^7Mg=%iVPK@u4B|sY>&Qpy?N% znp;`LQY#YG`y7ETretnKm0Z4j`LECml8f%1Y4A-g&VBv57gl0nZk}II0J&qtS(@&` z`Z_liF$5kJ4&TK}1gY~*8hnpC+rsur#@*|p56m4MH=$!^iw~i`(9DLAEy1U3FLXG& z>PAm{uYSoJ9@YY}CM;ZadVFyF=T8{<^;KW1E!|chDJ%xV%)&CC9VPYD+Pbl18h|({ zDak-nGa&od++{r6fVWU(h`vRbBwsag@bI*&yxhiJ12YNrXV=I8_RkP=>mDB7nQI9K z`+YdOv$F%J3Wh&mdAinvj5#ho{x=WJ6r`vCPtQcsfFfu7&+BVzr<$8lFoX~vF51r@ z{>>4VmlqQ^8qr3y|nE`Q~*gk#wb!4OkRRY8`X}1qqOi4k=;BS_W@RA8BX=(rS zv(r{A$af@$PfF?xni%q=Lorn)r4JuJvSh}mriOFgjcMCAf5Hf_#lzzOPDnPf=Vz~s?9LO&>Eo5th3r#+g&>r_V=5sgRs%L3&I!Q8 zLJ|f^V^1P)rhrXMdirj>n3x!=(Tx|JyeJK@1rU$0Y~ufMu^>^Gc?%iv zPTM89C73nEtO=OE|7?E2*|+Iw5Q|AMF)w|s&CJXU4e9PkP_5M8wd|d!^(bm+@Pi;Z zl0kfy;hVofmBV*XVeG0&knSRo5MF`eA|oS%!;n)*YEDm1)YHY}@m)Loi%hW_tE+!{ zc(Gi@HB_|xR{d$ve)$F^xVcPx0sQ^NK~~ssK95~*w{Q%mwvYS9V~XG{S=&1QBzStrJX+tIXMvp%fq2c zBPo%`gNqjffBdjKNh|vBK`DFa&!0bA>BP(ekDJj}0~wIevgF~D25V4(3}m4q1_1;i zfqcJw&TIDUNN~wvVPR-=D`a`WG5BTG)st;)Yytv%BO21w8YpNuSy?=!5?GpnUii(8M9=MEr zu#-OF1w}=SbJs3EgDLkrJ6gs&o^TSMMpQd55JbkF{T#{$?f7$L1y0c@9c;}u(*9PLQg4g+_T`?mv8h9_=*eKUkZ5VrTbyA>846&1ieO zCFpdp_$-q-gPA0+0qMU^O=)Xu!;w?x@@+Uq<>WMc^a#{(WX&1;8T;`RVj;44A57nouja&y_4nBWL_W47s4PXc#Y zMTKz*stu01Aj)ev-8bCXM*aLyP_Vwf4%r7cFRvpC^>T)y&T|_D06{{-6%rW<%GePc zLS&?r*G>-HQFXPKjm<4}3K0r8X}PJIbgwgO$XZSiBt>$3ygWxF;+d1vXXgcA_sLFK zW<)$~$=?(RIHBNLfA*kC@Nt_A6!z9vR+uY+@}^Ug z1AOYPlKUR{NcES#URhsX+C6INGiEZ8GcDzcetKDcdnn?kO24?w+1g##UD8v2@>}~A zzIHbl9688+32$>EwY4ex%Nx!4A=}xhI_`WCge^|1V@jTYM8xLNqpy&F!f92**&ka0 zCUWw4Wwrra@-Cehj>?;nni_ihdRvrYEbmh3{%p@jly+&!1>KhIHD=nsdZadbHEce+ zK`EnCJV5Cdm4da&UQqAlMU?4O$Fy4q-G_XlR@P2PT(->_Jmshf+1TDe4&nBuY8H+K zi9j~#@x$fcQ^tS)2f`mZIK1S$3MFKmjS<*8r<`m}nhH=5l2m^5=y`9$6QaOo@X`>U zlvLTPsDwk`dG2OLf8H(kl9*0fs=b%fN(+|Ff8C;a=@~dzVDF}IjBsv0!p#XzCl5Af s2uE;mwk|}@!ngiM!u@+JxHZ1zAG*V45PGk4z4Z>6Ynh)u$Ror5DIdX44t=g$*gziMe|@f*`@+{;n$@Zq_} z>)T$jzIfl;+iYFpzqT@0rD|bpY<%=+bVy}QRg`sPih ziw%-0Iqh4hskcg4TsMEu>Fn&Rm#R3twspz!VO}1as7avTi`=|Co2z;usi_w3?lLoV zB+|Feym%2~0p;1+xLtbWr>>-q;m!grEcyQT`&(%#_xkk(zf_Q)|J14XrCq6-s%ol| z-^V$AR#w&+o&y5@mwxtFoX9gOIQ6`%t}di**wf4FLPdX!(J6Ct-=F>RwI2wgx3~A; z!Gny9j1m@=6PZ_NIrj~*j*X3_$X~i2bD)}PaG>H+PF0ovL{(@Z^S8d3n+XYXeJ<6% zo80kR_}z&e8!Ueses;Oho}*`PYkM^!Vr5}GZDC>I)2C0gw6wy)!pf`jqw~|FU){V- zP47H=_N=N(DPFrEFE8)GgXTAHurM-v_g-l~-`?JS>Cz>a!7AFepvRB*UcP);N~#1! zLm6@}KVR{De|b|3Z{EX)-zF!=$H&`J4?Hg|EzQhSQ&Y1UdmTSLJ^kj*8_%=c+}zu? zZByha%FAnc`BD{+sAX)RIv}9_Dq~|~;|`{;X#uMb3Jdq`-FsKkO4ZTP@$A{N&dxs` zooVTD+83`)K~(y$Jj=*<+0$c!->n<&e|}j{MRo0$b&EBdR~R+F1;#ZNuE z^~SF3@#Fqy?vqPX)oF@e(m$W!rb>IiXX_-~)Xche?b^+oH@|$b+m{@5RKP8MZl{%< z-P4O>uYZlV6`4MHT~k94u4AuRDMPHzoM{+#?J6*98g_kIxBk-6*6u2@w6w5zJ9g2> z+uJoeYyah+LpixIF)>L=Noi@kF-?6~2VGs=qhrgktH;m&-goa9*w}ETt8c2JqN0A! z%@q|Djl0U#^GQ1ls&+H_MOr0BMbRd|iN1QZ+<(Q}*LS(fZ^_%+JAGG~b6?lT_1CjA zEn5kdix;KCtOf=K&YU?@{0G;)Q$nKX{{67!W@a5-U3Gf~YA;K6e}Dgg zmEQ^Z`QI0RPwtVHCWxOue?EQs6sz3O(4e58aQpV{>XkocPEMjkO-DyZU*FR6sjB1y zJ|0JpzKz|kQD|NfY{eeaw2}9|$LP+v*;%dw-fkbVv|hh{-PP4)Txh<4I;Y@F&&%8I z^T!EwM5vrOlYRSk*Bu#0kEwyEsq~y2Hg4`W!>;)S1>FT^IeB?Y*ar9S3lf1>uGGKJ z)M&Q7c;W$U5$@{R+j-)DLAxX_~ zyV72kVSD4Lx+$!DeBwxo?tJ}PTT3gVWo&V2sjRGwZR^&Tedm09mOAr{Q3?YueAu?e z-@0XJX10Wt=qqzk_9WHx_IhUu#o!X`C)emq*!uxh|ZZm4)TB z8v`?QTx{$;eIbI_9j|clvnCOE{W^{R;@NZO?j$A(2?<@_w&%;+l>J}6d?5ngz0((r zi%5{zzP--6p=md#&vo z#4R65Q(AcyyPbtPyRvc_J3Hw2waCai_BrgXzK*1n2M-3Pb@=xiYPn>^qM`p`b(M0Jp)S;@IX=y`^xo!v_zmFS4%k1pz z9Wnp3Qqzn&!!q zCvkydVq)kBsCcJ+eVv`GKPzpTqCcS}B}r#LcyJa=k}T`;w5%*4K0f}&jd|InKX}+A zA2G3lm8H3+rY7{*$gZ+;=gu9!uiIO3$^OKNPVB6C)4YrfCT3-7xecoEd(MgIXgnrd$|CPg;7v#8V z)yS*AVq0Z0h$ln_{Cxhnuu!~;J5g6KuDQN!##7OkIi{&jc9`J}ztMqZN2fLCs_gc! zq_3%bzCW_szxwW4Q}G^k1oAib`_D8M4zHM&I}KRh;*3x2G?4KXKxOwzhWNZJw06VHP&F zHq?PH-GdQ{{8#+?hT75od`dQ z&5!M-p~`cY_C{RXuP5F?Z|v~SsO0Vs>o1O{rBVtC9BKDu?@F>?H!iY>;*dGlbFQ_e zCG*&W!-o&!o#VBS9693d=C+J?&d$y*E&cV^JD)nmefJpMyUNPp`ntMNH2gXv?oieD zxPrrvC03VzwfQamp{>qd3u`BT)1vl~4L42pZgR^%Zu{Sn&>&L`ukxR{x$rcJQ_lvX9YoE9|)W41NFk^XI76B;BxWBmN6xY=UtM?Rv^5O-%AFUU;LX z6?r7~?D>UGBJiN3s%qfv+qa#azcC94f->a7Pz@QO;_bcoI$i{zq$~gAaZ5`HRnCaJ z3hvZx^_%^k+qb2TwImb)kM#F*UDH{fZsNtnVAXO5TzOPdaxlBMMiU98~Y;X%oT)ALgDN{j7DYCY3(`=sv>DqgLGWh)iY^VGQy zqwUJi(H}pYF+V+inCj@XV5-(~&(|NmTIYm&@SA1i1s*6r<#|z(D&ap9e?IwK<^&o56I85w!Fxt(UeosbZ2Wny4pfNz+Za)eo7 zqX(=m>A7PZgnt4{NBezbk)<(*Nt&7=`lk%G}^QX>~M4`RBlkNcuhd zl7CE2_G$1=pQyKIvpi&0cK%Is^S0bhhnv@^BxPjYw6ysA{&oUbh2T?Ac$S;{YH)B3 z_}AUtUH|yYmoEi`gs6T7ObxuKxHP_jkmGvWk|2Sy1}xYpTVVQx`kc`$nRxnzmBrt| z!5ijVXb6)R-tHGJO#hzj-Yy_OLqnr@;DA-yn?$Km)UTbL9TA8^+rlQkJg&TkJ)WfG zr$C(k(wYP$|MmG{bE6GL9czahK zP}Qv5mB00#?dj95vlH+AKg#h9V#M}0H%GLU1>PWc!#lbRRK_MGxST!9Z+D32aS1;^ zKcJPDmlt?IV-y8pYiDQi%hz4gJ)nBcWLIu(?xpd!fI|f) zB^fVX9N4}+Gd-OTUn?uk^_|Fh?SL{c6(=%d=673{m?S8@8yK)SaU#^Xk_k&8UHe?c@Q)uy1Y)mR9=)?SLRWDA{{6;=hBcnwe*Qdv{(NC(W=OXX zKmWagf&H( zR~~OmYa5+j%zPNqO|_?`?&q#=lCBlzK0ZFXcI5#4F+1M6dDFDYSDpwwoH_RSv#4d2 zZ@SE*UZ<^*6x*pv8gW6`+>?`&j_1zpla-BOm)bx`2COdE)ToFjh=_|@n3{S6k=57N z`*+Ey4+gKDs{ixp@?dSE2$K!iT3gEg1azIa0#zF_0&pEPQ($YT3sXc%MMcGrA3soY zn2|eo?kq21Vq(&F4Vj;mrt%UrIqmOX1(^IYbPE~LmZn^kn_FB~w)XS+)Xlg!v|743 z^GeSW`~bc3^3cQtJ3D(hhTQC|TX}qg^>jp((_j_%({R;$Lc4eWd9Sg!xLAK}$IhJ* ztLBd#-e(+&Bwd3Tksu!0-K|!_5n6e023PEbCGqqGwl*bk1igw;UQLXRokr97@YT(; zR~dV6FktOPK|w)!I>DAdFQju@6nwG*P<%+b28#r30Au^c4F=$$jT=KS9aexJ@$&$^ zxHG_TJQyMn&s#dFzl{S#6tk}}np>ot#t8W7&6^{~j~@rvGcz-@u&Bz(u}2p`x7f31 zPkTp)sDuRlmMt3znpcgr3tLlNuz@dLyePVLvOa=Y^4wlo**WD972Zbl>a*Bh9v&VT zLb0*2?@S04O-(BCeAF&2U3lH)=6&imPaZ#BURgo^Gcz@%W)-$7quwgbr*mOQ4kb7J z=TEAv3lCA#(ju~B$LF#^|70l}%H`fbr-90o;JUS^hsxH*lBA64h$1u=Cv4veN|4CJsqX7Q}?TERIOe z%mZvCd-rV}#SxYP0-kuhw$hM3s*FP9x!y{e0j%L-!wWtDy6sC|Iq7}lja_#~M~xPL zotmSgNT}*Ie;e#-<)yP5j<5PRzP9JMzGh-? zBwx0Hz_srX6gGgu>H$UwmJ78MULH{tDvum3lFZY}l3_>Uj7dusF_ z7=k9&KJfGV1)y@W)UNsUYYukyN^q>qrJSrRE;-lq!os(ZWOQ`4d?{>x^(s*Ys>8`r z;86;qr_3eo{{1gMKRsWFesOtf02sOUotqdzRIe^hK5^_Oh$4#@kHGs&N`!as9%;|? zT>4Y+;sv(5n69GF)W8As24Iy{EtR3|=jeSEXrP3F7Q4B*IXODoNGAaSh>MFiMRSk# zk#F&u`3#IkKQU-~Ku1SscRV#gMNKUb*NjO8x$B*Ybkg_FpUHi;)=A=jCu&^6ubDk{ z3i>+5d%)Y)-X5^b@YpeFxxq&!`G+F60#nyyJy);uQcMjG508v&nI3H-Bi5FG#h|yO zq;PXd*4xo^m{?a=2CNN0b7*cBmXu`J7uY7ypC%yt2iza+0E4FZMEx`AJ$sJm>WYer zM)MqaJsuvUI%{_LFy*ayNoi^DU1%5&_CxZJldGXQT3cI-W`x@$0=H{K*XTA_D)Xke zex8`1BCcM)p0!T(1>;WY>k~Pa5GC{0S2xbseq0Q9vFYK{v6%rANjEvmx zHt`OaYnN_f&FJ*ry?a4MfmJ~Yj7&^&)6?}&oXAd3zmb-vr+Bw%6v_a!B^n0{9)s=; zb;aMme+Rl-{oQTJ9)<-(gDiXU1Tw+QR|7df2V-N%X;2)Yb>^Ft1i!IMxP2Q_$lndW z{v${)ytb!@y{>qEejXJbh8f)0XwB~N=X-BzD$j_Z+}gSf0Hn&Bl7LON&dA)|g;}T* zS`N5PFoap*RZ>y{dIk!@9+sVzRS5)KSDc=n4yFh~1px=wpjHwL&>I-IzKRwWsGor~ zFE8~$J9~Rx`HSR(>U$L-iu9D&u!p6{T^Jdz3%8YCK%WHHpX@FgcWl%cA7hLfn@j*~ z22QhKe`@#U4iLIh*-A=zHSG=6~VB#JhX* z^PWUtcJ`T*Cwn31K(AtBWP}Eg55=LPyxjbm+vcB1v9bKSc8!mX;pvcCB&xATz{9x} z+#q|4%FBBJ$AU~l!l-ng>VXQrZ1m2cEafr)M&Je1W=xva+)1SLPKL z$G{u$uxzZX?qT46ZjQ@2l5AvXsIGWdU0{V&M^C!=V2#0DY{Jc3U;jo?k;J^DkJ+I^ zXD~l8WPQC^@D&)Sth96qJd%@x13=(KWhJ)2$Fyw=>Q6Q)aZ`G}RX=nH@K!)X1hU7= zw{MSvaI2~Ymv1J9#>X#{hH6*Ye#RQT%B;M#5xk(~SY@ijR)+4#f>aET!LZO_3bR8>`ne*eK^ zWD_^{1p8M=p<}*U_u*>zMndq&9YYHXB|bKWCv1PF2B%=E&T zKt(25K=!W_6W}|NNv$zoG&rTK$y1kTd^OV??d-NPG9Ju)U*FIGZYOy3t|w@pS~#7T zx3@Gq4Rz>Ev=@QcyLazqWn~RTJS;5yIXUSAx1@H#1G*ZvxxO~-L;InyqLZaxpw(iJ zLbuq#B&?`-S62{saadiQYG3ABBlRDhOP5MtyjVf?3>DXlG0o;sMfuJB&1*`O3d)~Vc1SU5)5aiXhfTsa+yjD6`qiUNbI!q1{Hs>uMg5%gWB)zJ2@X$OxJmR51MKHX6#fW>AY@ZUC$I=yQU4) za)CMJs04n?YsMBDG068?UgmoTRFyt#I?QfSQCwG8#al>`dfCS?Sbe_tlwcTup0jM- zDsK8%Q$xf4$Hyli&6xaokO5Jo`eW^@q?s|D`Eq>&gV?4~M%o;Gp|$a~6|(1n z121M~E}~Q7F?4kqRoMlS-EZCTM@LN!=7*ZTJ_FYk^~m{UVN)B87#`Z=H_)3L936jk z#;2x=^YcqV4i^$XI9sP8vU8D^a9vyV^HdAmAV!^4#IQ0N#7ql~6f(GATT~DgD!hna^5;in+P@<;!Jv?tH}L=H}wk+;J1V zHjSqtXyYa)XJ>c^`<#0CL_{Fys0zjnZ*L*%e3ertiOSK_YlAX$z~_&{xpNSV8k(Ab z3t{)g)E`k^nPpDWJ%8>TU`ltO^c-jlgep%TA7djUN^X)R~j$WfksvbtgS+@ z*B814w)nzl?k(29$f)b}>vJdy;HccgRsPezemOcjf2z2&i{KL#b;1}aKV&PNG|`5F zW#rgz(?|p91D-@T{E4uza}EwvT@=S@TVB0lSRp7=d0FN-2|i_IUbglM&*=i-Xz2Ad)3ks84-bBW@@-x^{Jap^=nKtSuAk+@-M6d5VcOn&h+;Vo(ol1X(*x?i%i;ug>MskBoU_c{s23A-_e*98@syQU3IIfvae zN`L-5xn+!+)pe+E@5JK`qyvWo_6oSl&`gXEn7?m(yunKHGW=QW7?TxFEuswO2^fjPRaRaXK%z9)Yp59T!D^1Idc5?j`K{z zCO_%~VmbRXg6d1w$J>kntM+^%)!OCd`RRG~Lc15UGlXzc%GEwIe|ua3iie*51Q`Tu)lfh_D$M{Kk0m$9)24 zxU3ALVeTHQh^eQd1tw*op2A&#XNXOjnlx$09E^?G5?UaRa@py~a~(A^>jP8kaq_UY z&$)Ju`kHn6oH_|Ngys7#^7#dPR*Zd!e=DXhNV8wt0oUm4qtK=P;(}2d{^Ei*4i0kg zVy8zMzW0`f9~s+7pcyyWO2f4Z?>z>1YiKy@r56W?i|z!mEc0C#C&-}cJz!x%$(>yQ zDjDR%nktKq&d%_P!}RnqAO^H%?kv=Y^z^1m=Z*CApt5_*Ij*Z&b3giImv66f9*u*- zQea-eq&EBZ|04%sY4~b#VnTm=v3(m4{9xs^866_4gsers2%9J?hr zIQW(AqvT{WL<=-D!qMU3vcP#K2s9MnBggK-_2|O%%G9Ul_UMz&&TrOco(G`w(9_ey zFUR!WNcSiwwID9zlZ%2bs6A#<^ydA{EZ-h0e~XiFJ7dkp&=&}y=Py6;59ct$jT!B zDctk);IGM|YK!L{QAK2`KcL8>zdtH2E-ooyyjSAdk1+vPV4zVKXc-$aH1v?Qb%y5Q z8LWv7IIg|@9A@DJ`Clxx-n!(nO z8-T&LZ^Py=!vEpoTBq|6(rlqSr&w0|r$B+j#njq>8N-Kyw3U;X^>XYYPa(u!o7kAzAy-)%6rQJ(2^xz1!*}5oqYS#~${hzk=Dj z@8!#kygbLNafbb$K8?2~g;@10{2GT!B}HRaYIg*GQ$>Y{YlditA{yUM{?z$hoZ+L= zQcTySZp(ma8I{~q=#JnJjGa4JE5&!mgD}AS)w!qd&ADf?tH7qjMBr`~#wZ+Dn1he} zR~A2fIEDhFse`OLQ0cY(v3;|xwBp06s#Q#FhnompAyab%R0{J#Rn>Z=J_1jG2qck6 zw{G2nS|YP=-{QgognDSk&=|miR_ChMQczYXSY~GCmF4B3A`OHpkdZ*&JAUlgRxwi+ zR#u9l^N2WD!`6VrnV4AaIXwdEmYAH})X*@^Z3g}yuuHl5L}6kN!Vr)-Gcq%yu3x_` ze##p};?#2wF_U6q?Gq9M(Q$Fi^TjnPz?dy9lN0YVLy{vDoIgHBM24J_@`J-(AQ>=) zp`js!n+B@}QsYoDGVee}ENN(MLla&q6+Yaoc0G1OSO-CJ?k(Kp%eBAihu@N|b&dx^^ z$zA$}&cSE~poDS}Ov`Z27*NdH`&oSa2^2F!6H`ecZVp2AORu#TQAv0b02xru>EAcY zVc!95{hpq_@R!K)uRM_HW9jjnqX#@m>8YuRM~&kmuAO)CX?Xkg=SV|j=HaM^4<3*a zP9Gmbar)M#yau97vt8C6})2?^u-xB8kWEDC?m`F9fHJ3SJbojry-g;{^j z(UFX3Zf-^i&#$g;^oI}eXGfc2z;(B&N1+A7u7e#5j4LKAtfi+1zl2@>V%Du&ES5GT zwV#94)z%Hy4)(D#Gq(>66e1S&;6ZPHzwSN#MBV$ykrC;|#jY?lpxj|NHH7bvIt+BV zfDypL!g3!ulnHML!Ejix$HC1rGc&RKxwyD6>HO!1H_c~hLCxvtcwAAjjlqa&*qM_H zVFZ{57cN}D0)ji&Q&K&d1g|9-BxGca=r^*bmDC?mZK8=f-16p4=0E;^<}fBiqGO?Q#yra@EFpxRHI8wffsxnk=EYD|MehZ>+ly!$%4aT6T^meNVO z^S>UQ>wGv>wR9AtVIouwvM4e{re$@ z{3*=Or=g;%k!)>hvWFcax>X0ouVjfLy|UlT#AL^=UCD`wH=1oBNAuRvvtXJ91gxR% z@pu{`?=&@mN8Hfdfo5CP2vM>hlmU4o%&SWXtUZpxDx(Xb24-evz)bakc;S%rKSqGy zU-<|eegjNvtZZ-Z$rC5sfsUl5r9%oY*9KFN7E}%$0-XuR3~_Xvgpfu?Ks3zMh=EIv z=mOrq+$HkbHPTbsXh53{1j+?sI@Go@^s!1ZRE+xb^b)X}X%Y!pq-)4E0h}E=BRa@F z%DLxVPi18#Y?jWhF1j&~psT1{z=-_(eB^&hN-lVMmY0=X#!&S1^mI9}^dF3b?o6WJ z&LRm)ZF~D&s}(sp;dR3`Z7_zggOGAUZ>dQW8NG}68~Bpw)-8i+o}yt^PWzJI*abY3 zc?ww9GWN0!$x2YQDOGkF%9tk3*BpIlyvuvyns=CLI9<=}>VZ!O!FYgC@Q0oF0QfNxUxePUGk`o4g!qTnC}4Y3(<@43-L@3UuWl^H6aN9l;08h`ua7> zahf}pg>`vj8pBMsOAWpUsPS>U{!0AI&K*OeSCvu?Nk5cnggT9Wea{jgr2mZnAm|^;p~H5QO*JSMn+Yx!>TT331ZOld!_$_a{O&? zs88J>A%lfSfmqn=bncQ)4#4H{N?yXRaMO)jx0X9xP7}kdz9`t~10RYHW*>teJCwCk z(tLzck;kRS?GRygTPW)AQf1EOgqAas?5_SI8)hFVBG8G+#q%$|3jT>8)2!%!hnoJA zV(_i{@fX2&K62y-hKgk#8^Q)O$8TWk0kg2Nu_d-?=%C=2%9*EFD zdcasfm5jK`fm%mizpe;lfj3~8OsUlt$T~VQ@{+sz0q9Ue=VnPH#1(=z9ESUWj*U@! z!QK5wf$PX>2oju*$U^EL+3?2(kn{BE)9Bi0big1cChXyL$XL_*YvTQo8B00JcF$$Y zmMy4-+jsAB@$%9Wa=!B<*yxB}lic2sWCf+9VkN{T)1yKM=a-g_3$d)nR%cQV_#i)I zQRUnF@gud;4lB4(*m|4k>3K7<3|$&$JS(wSSOnP1Seg*}xFm{da<$t_xX92wE)h{d zqkqr`V5-l*MXNY+^r({SPz@|Fz*wY|&~9Df`l6>nYw>UAk7*h`g}4Z?2znsoBXDI* zQGx)8fqb^*nyK#vAZ&69iXi$(J&4+n(SXZ$?ASs6dmD1lx_fsB3vb@O$|vW)EGK^d z;H~b70@tdQP1?K)G^$S|=09&&A2U;m-wec+ks-aF?lAg%ujL>^6oub4ml|$Fl&o&s z(b7iouiDMoE)!!cyHTlb#FKI}I`70sTfLaClS#!^k zS@e7b2oR2Wv4|f#_u+MhTspZXjds4WUnZ1h8RaV}q`TQ5Y1c z6oTReUI2&E)oo38=f5h$G$!LMa@Qq5lEiiH#aBtH&MLmw8Z=TG@+D)wyO}-hWHYkW z5<>VmmJFt8*}aGC5eVYHMmuXI${=|5LtnyaDlPU4_Dr12Y-~B1nUF$Z##-IKKsp$A z8bZ6|Vt8mMd>qI@U8u*pI-8c;Vgi+)R$r=GKt7)v3`o0mYp=)m9_XVSQC|RpM@FoX z6Nb!(dpMMdTnqFrc0W(W)O4kdVOF4OzoIy0!G4g9R6i!{&pRhfJszSLelYhBg@IDA zkg~M;yrJMfRM`4U_SekmGF+xS@x9!Q;QO2{Hs`yi8z$?CT_`xQtL3a%a0y?$oj{lco~3dlqx#m8qC710xk@|Wx| zS;E6LATI+OA5>Nss}jW^0;V4s9Yv@MJ|3T88Zt}#!om-pJzGQ?LWSid;p#=p6rnE4 z)m=phbT0CJlhg%?(O(J{;+0|<<5t35JVn~$kn#}sY|f342{YgA^71DkTXc5D>k7gx z>4XM;MgCeu<0_mWY}@jz&F4i8#y`hJpF=Mbj7z?A2eayolM{`P7bJVwyurcKHxPZo z-MYK~Mo|NkL~38A^*!^E%`ei__ug5GtJla>e{ah*{KoJ^V)3*}D7|&?@ipjs#t)G_s->a{r%>amN6fwsq8WR zMYrb38bnI4SW64w?17RqH4%uho%1|vB`Y+9UV)~5cbM2_rnJ{rpxCFo91`C&ZJ@d1 zLyl%`y?s8A+G$g8crag^r_7R95oq7Lcj&DL{lZlE!loL#nwoM73!|HD;j@XKd_+#HwF9GBX1&#y})NpcA4N!WZyr3Qs-%0}qpwawj69 z84@aT4RH9Nsrdi?)(J+4@x{%Z0tX~P!jebH*ApNNTwgz6J%13ky`Tomhf^qD-4=lZ zF`Wrwb#?Xq`}fFT17yKe5EU1vB)~FLust3v0x&6Q|u3Wi-KHS&WhqESZEG&wC zi*O&FA`O~Gd0~0}0=5o<_}KaI7)}@)!}$28JNB3FwRb{m0otBa;thK{J6I#1hlhiz z&jz<^LlA>!30pwn!iYK%i1v-XU_K68ybqQZGG)-?&z}7X{}iTc;+;D{^`lD!aX6Yw zSX`WL@HPxH8}={XzXRlpqDR|^M5r_Q)~+9S5}@;fSpxSChg=eHHUjtv@RN;|6<%c) z4$vU`4xm5PTe_)G8Qpf9d7I{EY}+kFdWy*ifT6>8Wn=L7R6e)O2nYzwcM&L^(O-$DKT<;Z#gO)Jcdy-M;dzI;JiV>I zzp|tRGA39b<{N4;FE=+IK}@39sxA!j1QLPF7Lypa73=yxQuJg5V1G{gS7^(wM?N5I zdi87obX9A)V^^5QotaoomlEGo8D%4;O54) z&SpFD*gt}_0d`nD1$C=HM}-!RP5tBh_vLGPo%fC#8s55bgA{vX7c3(Lcn^`Pw9#9_ zdY_?eA;Z#}W#clyXw$Mc0cLI$Hy3*8_Kg>ZB+QZMn~y4Z@L=J4juwaskcqMH!)u>y z14u(;DsAf$w#xq=oxduv|MSYat^~^kliJE74yqeK7fPuY<-CFS<^$a{r5Ca**C5`) z2cpl8K!aK7xVSQwV2Q(9QtxJ9!|prZKQS@U1FOx_5+2w1w{O%fUb7RixZJq7nA`L6a)v_}4>^dIOk?*!iNz~X*2Ut? znK3{yjG((IDG{f%+@fc9+&430?vg2OV|lFONN%gC@rO+qt&vzD?e} zd+?+y(fe>}&x-wiem)l`=MoAXOIBWobs>oPYW6T#a`3frN>7TN28akNg@y_l9*Q7N zz0uS`m_W=1Of@z&m5v^j^ahv$-~8(g9tW7;v?n&*UJhpjzu@-30LE8j9MBK*i;DD) z90~oH3B45aGXUT>%&N$;I#tT1QN`T}uwIHLGA5?lbJ`l-KjaqZvkBr2lA=g z&kyKv_hAlPy-Gz>cU$yiuvHJD5+b8~abev5AF#3QvUXK?THkot!-Ge` z4MBLk5H3I@5MeW#y0@tZ`k;)l*o1!Tq28wi0~FYfi>~R_EBq*6IQD{R?j`jMo8-8- zQV2QlP^kZiUWj|Q0%Ov9VP*_(l%Fq(^93Vcm*0Htk!HURix43Vq-I_OtW{w(Afro4 z7R#=@K_7t!jUgtEQ&5nc0jr?TpwU1Ty%rVqq_|j9Tl*QFB;-UcM#hr!pVl`!EH`nB z%6SB`;F>x(J0p^O6rSws*B9N~@-dr=iU6bGkGx$3N zCrj@?c%TKF{r-Ks^h?t~1!&_utgKHU;b5;}enJ&RUX6@cUS5XyT)Cc}D>yX2=MqLC z?AiGw)q8kQP=w$CSKPaI@SjRBBtUNYi?-I*BM{7L*B-u(;*vk6t4kx;KShtKd4c=E zGfZ#QJbU&*a&jM{{P2$fK9D5ZNX!q1^WyQ6c*4DEph||_^h$eUR~OHYNd>I8TU7MQ zHVZ%$D9V%n%+(}{8Wl@W8Vi?9qo)5Y$@BU(jK1R1Qk-UsMU=OoM3r;hGKP+enT*4A z+lX|mR!WLkhrGZxV>l^TgRqky=e=*2YfY?Trl5NSpjF|pFGk{{M>AzUHa_1vaJ(W9 zd4tH7vDeMbJ9q6$xOM9^y9ZF=z%mxN`uGDwoMJ^q!&t_S*3#C7qldqSuthUGiy-kT zILVN1u>H)<`=M;WmBP;5b@c88hCCbF<&{NuM2NqAJ7>;i18jpP17BqjnMWu+XfhBn zIXF4nKYZBdGLR3Ch_W!I_O#@O_I5ny1ksZlTxyU~!>I=R#L$7OxQn8qDG1i;6SK&) zjHcn77nzc6(Eaxgs5Ep>XbnhKAVqT}J^BfL6y`dX;ixFNuTw-Y#w;`qNHKUD96Cii zN5BiwF@7m2DJY6WAmS)E?v>Yr&Ij!Y8JREvfkIG3@M~vhZe;ufV&}h6|3lH8Kc-k) z#ZDd^CHoIu8^$=^8Y%)Rx7;Bu_d2VS@A>mTL2S_Pt|%n6tv?x5ho^yWJd^C^Pk0>f zVFWybB!KK4t`!N0j-zZ>V?e+f zwquRRL80h_0s_02uj>uorKENosX@ zx3KUbb@lR!iWH1M;L?zHO%7+zBASo5#cj+oXqz}|3*QV&ifwi2(yyZG)rZiy5s2vT zUye{v!C`1Tsw7>ENi0785O^n$IRZGdPuGBaR)3|fUFVc7OgmBOIsNj(hl|)0kSKv0 zaB4cVE~RA*4ZY6tD$HGo6(p->QxIMpBSbh)5_!9OihI@%sJir*TVe3zF&PaC>)P~K*I(M3V{a{9v*Mg^=%vLXnDNV&*YyTg}6NY zWEn>#PG8yi*Q4MyR`q%60^I=TtBW!+W?&J6V8CTBHW4M!-lr-kEcCc^2_AxurY7`v zPwX9_Cxm_Afn1Q4OC$)KMmz7|&{KY4dqNBTDE{;TXeqdgGT5YN+XWR;c(!fZOnyZG zY73A#8IjExhtvvIbj6n*IaeM;VRmDBEXINE54L1t@b!WBJ*2djUP{Dx*0S~&n5ND0s{6in$P-@kJuu>6o{ zg|LBthxEw7ag9^QE&5ecCm>wJftE7XeJZ3}*>+QYd6RuyoRH@x9oF+5#u~v+FQT-FAaIpCIE4ia83$KOBIRX z7b@Rl2NWJdoIadM+i|R_n~ecTFS%}X`l@@0iRi&WrX_2JA_;O%y?gpsDL#Ciy~ims zyZ7t!X?R1f%mcp4OR&?SKhaTU@fU_E$*d?QNJu}N31kQ>z7upi?e z9^qGgv1^vnmVwP&opXVQk=i2{|8q4k;3`9k7EUp_54TDAAUiWqvFtKBJ^a3pkL6y8 z-(CxcqTl>%8`W=3Sg9=4b&C>#$SM(8eo{_XLPHtXQuf%>`OeK6kc8HW$=`vNe>t{F z>QrvQjPpgwp~!IzK$zvVq}d$wJ-|LFdh~kk5FsFqm(HHHu^EkE-ZgLG;dcz8DU=Qp zr%v`UoCSdObIjCqku~k18u&S0KezMi0m5OR>*!48MNKm?ft_HWG-6*m#RIJ1*aWBv zmy~t=dLpS>RDFjHdW_S2l(UP=+V`9Ypv~*oTR|W;7_`p>*1B2QeKeAP0sUcYIJL8%m&3f`k)vhQbsQnuv z>gCJIzVpTU2Eo{CLI))bZy(IHRS%d)WZX*oU5u$q%8ye{|@0ZyRi_baXt=lVr*O@5JpZ=ko7rx;N5?Tn+xHd{XaLlN2V@zI$rqD@GX=|M1~(>FE!1_{B+L|dCWpRP`_YGrB9 zf94(x^l#OC`s9bM_@Y^wD*pQX#Ey6n5KQ}*9bM}3ROM?JO zyM3d_+Qo)NZVUNKJ8X`wdLn^IOwQcS{QN^}D@|KU!?=)i(t0Wm2n!D7CxETw)GXDG zs?(C}=u#L3P=9a&dZT64pN6Z9+fR2jR)!*4B`4>JPYMB^p;Wu=F!am$A5j2ST~cSb{zeAD-uHU{8YkHBgbb%r^Dyo~E&qAv z#eLap?xJbuH(QpdPct)WyE2?QXJy66!lK@fLo4Nu-QtRuZ>ML1JM0fwUB(eV3A3l) zldDR0p0mWqW+241e!zSn-H+lU+mPC`huDCP@Ns z{M-9~>GCXG{C(ike?^>0&&tuZ>F-hU=|0L_lffB4C|($Hl()BWaD4mvRoEm_pOrB~ z@)h6p2JV&|vzNyCLmOCQHC;((PX?~VTX?T7%ln=d=rDkk0LYqKQ1Apzh(zi^@viod zCU;e(>kEM>LGoJvd;$RC+JquMG8=Db_V~<{2=$TnDq>AUFg+t<1Hngqe6}RO<@1*> zs5rz8KXr86(&It&7oh4xTU!wV2MP+NxuPNIw&WAxm4|^mkXuD)28yf!UGUMIe-*j+ z95`?aVVTdbVmWN_8==GN7P{!O0ta|{d@|yUD`DwS>wqyTwoff>FtefGk|jo!4M|#`sY|Y zKHCnohd@MaS(3o5Tt9vh5g(i^KuRX*&K+^+wZ01<*`VOiQcxmPysr#HiLM^=@f0fsNJ_rXbWMtsxw)FIrL%O8CP-B~?b_=C1*6McP z%xe}euLb;Y$UrDZx=X}OZeZ_~{0^)%1QFz!NE=EYJ-P^iz%>pZ2VmeEqIZa#17{n; zw}b?eeNhwq=0tM-mTB@{+jaJ^zrRwdJzJM25hzB-z|=8<-`7SSOUxfD`1?;D6k@MoW7!ygVM0yXT7}enkb!a0M8%Ma z7Mi1<`AaHl84~^qH)`Ns)HdxXKe<1d4cGL8ZCr=E*+^t`Dj(U1v+JM8^mq~K;osrU zs{t!fVj;C4;M^ljB>{Wf6#Nnka2VWoaaK6xDDS?FNCYbD&;wC{ta1iiR;Iz@Lj;Yc zx�=ZDlVA&shhD`M<G$vNYwfxqcNYU4GAd-lmNA40 z|CG)SLBWN}BlXTJ_OyeJ_DRt$5@(BbiPF+p)y(%p9jYuJRi>DB&Z|;#F)6)g!{rj* lx7Wqu|M8Jo%bfGoE)DZv_pYqz<1@VotwTrE3sp}C{~zIP6|4XN literal 0 HcmV?d00001