From a8c66c5419f0142183f6b7f473f1e0a819f58082 Mon Sep 17 00:00:00 2001 From: wangliang <1991wangliang@gmail.com> Date: Wed, 25 Dec 2019 22:45:06 +0800 Subject: [PATCH 1/2] lesson02 --- _docs/txlcn/lessson01.md | 4 +- _docs/txlcn/lessson02.md | 137 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 130 insertions(+), 11 deletions(-) diff --git a/_docs/txlcn/lessson01.md b/_docs/txlcn/lessson01.md index df32b7551..049b4ae32 100644 --- a/_docs/txlcn/lessson01.md +++ b/_docs/txlcn/lessson01.md @@ -3,7 +3,9 @@ title: 分布式事务从0到1-认识分布式事务 permalink: /docs/txlcn-lessson01/ --- - + 本节课讲解的主要内容是先介绍与分布式事务相关的一些理论 ACID 隔离级别 spring事务传播行为 乐观锁悲观锁 BASE理论 ACP理论 拜占庭将军问题 共识算法 diff --git a/_docs/txlcn/lessson02.md b/_docs/txlcn/lessson02.md index 75e48e222..049542fba 100644 --- a/_docs/txlcn/lessson02.md +++ b/_docs/txlcn/lessson02.md @@ -1,25 +1,142 @@ --- -title: 分布式事务从0到1-了解分布式事务解决方案 +title: 分布式事务从0到1-了解TX-LCN原理 permalink: /docs/txlcn-lessson02/ --- - - -# TX-LCN分布式事务的实现原理 + 本节课讲解的主要内容是TX-LCN分布式事务的原理介绍。 -先讲解核心的控制流程 +### TX-LCN的核心控制流程 + +协调控制流程 + + +#### 各种事务模式的原理 + + +| id | name | balacne | +| ---- | ---- | ---- | +| 1 | A | 200 | +| 2 | B | 100 | + +#### TCC业务处理 +Try Confirm Cancle +如何实现A转账给B的呢? + +``` +//尝试方法 +function try(){ + //记录日志 + todo save A 转出了 100 元 + todo save B 转入了 100 元 + //执行转账 + update amount set balacne = balacne-100 where id = 1 + update amount set balacne = balacne+100 where id = 2 +} +//确认方法 +function confirm(){ + //清理日志 + clean save A 转出了 100 元 + clean save B 转出了 100 元 +} + +//取消方法 +function cancle(){ + //加载日志 + load log A + load log B + + //退钱 + update amount set balacne = balacne+100 where id = 1 + update amount set balacne = balacne-100 where id = 2 +} + + +``` + +特点: +* 该模式对代码的嵌入性高,要求每个业务需要写三种步骤的操作。 +* 该模式对有无本地事务控制都可以支持使用面广。 +* 数据一致性控制几乎完全由开发者控制,对业务开发难度要求高。 + +#### TXC逆向SQL + + + + +特点: +* 该模式同样对代码的嵌入性低。 +* 该模式仅限于对支持SQL方式的模块支持。 +* 该模式由于每次执行SQL之前需要先查询影响数据,因此相比LCN模式消耗资源与时间要多。 +* 该模式不会占用数据库的连接资源,但中间状态可见 + + +#### LCN代理连接 + + +特点: +* 该模式对代码的嵌入性为低。 +* 该模式仅限于本地存在连接对象且可通过连接对象控制事务的模块。 +* 该模式下的事务提交与回滚是由本地事务方控制,对于数据一致性上有较高的保障。 +* 该模式缺陷在于代理的连接需要随事务发起方一共释放连接,增加了连接占用的时间。 + + +### 负载问题 +负载情况下的事务控制,对于无状态的TXC TCC来说是不需要关心事务的。但是对LCN来说需要考虑负载调用同一个模块时若模块不同会可能触发锁的问题。 + +举例: + +目前TX-LCN支持的事务种类有三种,其中LCN模式是会占用资源,详情见LCN模式原理。 + +若存在这样的请求链,A模块先调用了B模块的one方法,然后在调用了two方法,如下所示: + +A ->B.one(); +A ->B.two(); +假如one与two方法的业务都是在修改同一条数据,假如两个方法的id相同,伪代码如下: +``` +void one(id){ + execute => update demo set state = 1 where id = {id} ; +} + +void two(id){ + execute => update demo set state = 2 where id = {id} ; +} +``` +若B模块做了集群存在B1、B2两个模块。那么就可能出现A分别调用了B1 B2模块,如下: + +A ->B1.one(); +A ->B2.two(); +在这样的情况下业务方将在LCN下会因为资源占用而导致执行失败而回滚事务。为了支持这样的场景,框架提供了重写了rpc的负载模式。 + +控制在同一次事务下同一个被负载的模块被重复调用时将只会请求到第一次被选中的模块。 + +### 保障机制与补偿 + +#### 超时机制 +当业务模块在接受到事务请求,并完成响应以后会自动加入定时任务,等待TM通知,若TM迟迟不通知则触发TC主动请求的状况,若TC没有请求到数据就记录补偿(回滚事务)。 +#### TM清理机制 +TM全局都在记录着事务的状态消息,只有当TM确认完全都通知到了TC模块才能清楚事务信息,不然将永久保存。 + +一些特殊的情况介绍: +1、通知事务的时候通知不到的情况。(需要超时机制,超时机制有分为两种可能 1、联系不上TM不清楚事务状态,2提前询问了TM,业务还没有确认最终状态) +2、通知事务组执行时没有响应。(1不清楚有没有执行完业务,2不清楚有没有收到消息) +3、若业务模块死掉了,TM的日志在没有全部确认清楚之前,是不能清理事务数据,TM清理数据需要全部都确认OK方可清理。 + +由上述情况可见,需要补偿的情况有 +1、上面的情况1中对联系不上TM的情况需要记录补偿记录。 +2、上面的情况2、3中描述的场景可能会存在业务模块在没有接受到TM消息的时候联系不上了,*若是服务挂了,那么就得需要在下次服务启动的时候通过切面日志来与TM通讯确认状态,然后在执行业务*。若是通讯出现了故障,那么会除非超时机制自动写补偿日志。 +由于这样的情况的存在 *若是服务挂了,那么就得需要在下次服务启动的时候通过切面日志来与TM通讯确认状态,然后在执行业务* +所以只能在切面进入是记录数据,当出现时可通过切面记录来触发业务,然后再补偿事务。 -各种事务模式的原理 +##### 补偿出现的处理机制 +1、自动补偿 (需要开启) +2、手动补偿 (自行处理删除补偿记录即可) -TCC业务处理 -TXC逆向SQL -LCN代理连接 +
8x-je%qdzzGQ?wM6gNu!QG@C&MxJu})$#@qaXKASV zMMQkjRrDeth<{PceT_IG4y`cn9Sk=-r{yw*e`A|k 912A1+jEw-)RNO2NQ0K zX@C(ACzgRc^*C06BbTC8y8q%S(p)`x)(%Xswmt4w)`{_`z}Ti85f9|N#68~*7Xr@T zkO@-t#g}W-wy>DtegBR$YqroEgwT{F7Q!rnyP>voressuZHZsIPQUq@TbQ-Dyy*Kp zi*S;4P!s*sTto``6waHUj1;fzui%8oSSd68)pI^v1O>NSoqO8YLMIWzQ6qCW`o;p- zS&Q()UH;jjx%ve5qit8~?WCZB2qZ$G#1xDmM;~wBf8g^g>eQ+Lx1}sqV=zrWkN_py zI-+F)V?UxNz`kh5hV}c$JHhnI=0&|||2r;Sn#nhclY ZW1ilIha<$$zA_BgEcP!Cgr$JOXZ74lIsL-u=xq70pWoT~upLT-VE z)Zy3U*+$?Ka&7MXjmtb?1`xd3s`1d9f8~iu$#t*!Kx((C1uEg7FV6*)A9DOibn5Hl z?WKPDGsiwX_Tm(u1qM?6#TVPCn+DXTNU7~w4utUoYc%DX0ck>!8+J~rup%x?Lx!jY zYyw6`I>(}Y`ZG=E_ I%Jj(Ml|C2jq1&pA4*r0hxGYVT#h8p4Mg!Zu(mDYGsXF`^cT&na!C3OqZ6@X z31iDNcHGFaYsdV;NBTW+d@ oI?~N*`w4BL?x~7`C7d<*B@*i!9>@Qt7 z3wkHa@cJNE$fP?tm{uaagHOO%%mwWqmo!_Mon%OG2A>k~oY46xPmcA-OLxRHr>krh z=Y%2h75+wULoXca);@Q%+g4hm;Di{RQC0FW4~_-0FG@d=%RE{!h4%{JKa;xL+x}}q zxHLPBSHokeFsf(m=7yYxywjrRB4~t }_ _AG=EV zLcwOotg8Q}Kk0ZC{@j@mhj2tU@yn)ww?&_5Hq>yYLCf?@W39=pG3wDJMhFH*-Y+h| zigbQaV0pmWKyErLnOj7f9WcAp^n1)Gpiw@ KCgEj{w^5Ej z@Q)T$ZUTG%^y)hQWc>J>5xMOt+#>mOe;`LboK86Qq4$=g(FTE=cDnsN?v$QIveulW ze9d*>MI#nTJ87C&j}Ko*hun)4dnWF&nSdG3|B|&tU~SUapByp4UfiCkbLCGbnk?ec zThR7nER6q+n`z+jtOrWX|7e#w-qxr*x?21vCCs4taKMrWF||edhH;=F%KZd>04vL6 zRZ)&qA$F(Q>MpK^RP8WpFcWpbtrzEM*1e=uhlKHgs=kUC%yozQCqzB1aZzbNSStIc z`0aJ^ui3+5a#hQ7wuna%NBpe6>=nvkP9E- N0#LBy44}&2*vG*0$(3K}m zJq=oo*?$u$dVPRBpmHvS;a^+#nX?=0^OQH8NgR<0tu9X_e~F^PtIFsZp)6|dS1e(| z;-fCN?aR$)LGzs=G |d^i)^k8^B4P{7Pv7KexT;|0oLXp2vHIIXSqhN8_@ 6Ne%ju3}Lr`bF2} zDrVHL#rOlGULF3W%0@ms1lvoSeAu5RP&iTKh+Onoul5jKuOpNARrFRSH>P~kp>DZO z*IVggIehV_8|7G~YJpCjypfK>*=`m&><9lVMd`_oP2Q>9K-&e_C*zaOA%f||6<>b3 zlju(_BF1P)E1hSCRuzgb*^T$Y1dP7XiR*>$G9KPDAEc3vqHkqbsbqtlo`zy!Z=0MP zuy `#l+$Z9T4+ph~8nNdTW;0jRHaw1J z!!4^GMnl?e=zbk>o3cq(vIlkkih>fj(!9PU@77M5eyEeok!~WBd}) ?sT*+|wZhLYk!1x%V zZD&!?wONF&3yN6z+Ag!=)_WqcB}NK{-neAx3wCI@l?vNzSfCMTV8fL !rGBuT?lvAIFbKAVQyTv6iu2?};7A|CIj$ z{%ud#swm$TVm_Op>p)p*h(HaJZ^6aE5i27NwhBfu)F5+7+{*_e>MHvV4ZH2zsWUkB z!!juGP}da3V}IYZVQP4c;Rzkc%f~*>`2v7e_@0O%8k-2H6O&{(dA0@}!6(m5&i`Rl z)Dhk&aoWvO`jv`)bb?`xVVV_Sq% y(E`u+;GtayN9$Z!Y_Hvu!`RBbGT#xD0crSf8@^cPAy|%~gtqpm0ztNCd zf7TGX1sWU;>Z+M>sVvQC&FfQSks&d8=4cV}Qd}yEs)m(0l~-a;4!7dZCi6*QB2xR- zj<{44*idVPLcTToN*)!+NUj=>P_hJF)B6VEwuGQbbAaIuyJEP`tL7=eBY!J>8e%0+ zT+KWQLwJWl#O?|ByndGFhPAp%2>FJ~YKKPNf{_ek4fGveI*zJ)==qUpsJ>GlN+`BN z#rb)@DX?d(UWKR1xIJBGg`GT(&$B3us{kO^$^19t^7&i{Zr$K8Z-Hm2#2&uP;9|{e zc> oHQV~%ksM~xAY87KMmkvt6_7P@{3tR$Y!1F3~@ zgdM$Gs6h6At`UrN7|(NTI&N=7&2E(W8zAkOO4m!9PLf!TFZ >zZX>;|32;Rzcd2Zyny6b>mMIDCi8#1E8DbVSW*1R z#_sc_ONCY&Md0}z& zLvFsk&U;a{7KOzmO@0R?p&rxy<@V gu>I@<`mbfP%l#ig$|k$m3vLa7k%t)CPI(@5((InxuhTG!vHs>G%k*;eWa z)b4z%3OIL7SKlJGNYl++ B6yx#oDtO61_3cJnBA!A&EI+LXIy6-a^B5Z^ z-0KyOoEEsFV3;R$FLSnx^{GoX_`CRbvtO+d&W}Z#fEZC{F!p-Os#xQ5kj{tMuFkh_ zGI7!0m&P5Loiy#oECCGkI$<{y4qG_K_?!033+fM!$NiXd8&R{UTaJqfrjzDQ9x6IS zDN|UbIERtMmgA}}Cb#*aAT?dgo-^#^(^Z*S!A+4uF`A-0{n-sF994qrz*Ak;SF9Aq z7R%a80Ilj5)b?`QEbrKeGHpkQJS&^h&RN8P*V^%?x?)=I{|*?=o`Lr1 yJZ?{}%L&*b78xNtV(F!iG(XrZ@$;+%Y47(+L^Vj_ zEY>Sb kr%(ELD7JY{!&iKA>tArs9kuG`=r&aiu%S)%Nfscp0Bm3wqE8 zAtlBQaxs_2UdxI0fU9h>#zqR;;zX)BgL)u crd)}azUrvyX6QPz*iT2iCeV9 z`YXRw{Y~bVH #-s1@~eTqxI6SJ&j<#EZufWBU1oMWVvD-wc>GF9PIqVS>E6evj|%lg z=W {mrA^zy3fEx#$K8nr_;!wy);fhsgZ`o;J2`qw>WQfLhL3 z9fII{MMgAH`R6fvMpOAPb0^z85}!f*Oaf4Yg10I<&uB!*KJdVOTwg&1WiKQOn%1F9 zNK9_*nF`vxk}49PT9>u?r2eXvir~^-ERJ4=;^b&CD(6j}x{#~&=%>F40s)l0P7boF z-~aTlti8_AIGwOr^|=!=+!$J&%0Iciw}e*#aCaJRr|ZfoYzWtf0U}&nIIF*&>+zcH zZJD8wDCtwheo5D|NyPgW%O6QVKs2YGkV1H-HH-?6-Dr!(80@RBity}pM6gfVKRCv% z+Ds{zj7=pYwyKkjco9?fozyH|vL|?~fV=?n?e9waz|>lF4zhDn_1m-u;pEGvC||L^ zGg@=}VU~Qx_CCMK^2GQ4?;oQm?I%(2Be5<}LKWJdFmbb}Qh%61(iNmNd15IybNPsW zN++7jrk>l{L9PQ(dK;}zfe3fU{({%Lg7~)LPln`68q%`0uWO|)SKg`SeB1B@5QHiS z3@*nFHf=Uk2J&uqSW=!SVQBe|lO7TdW=9An11~=%BUx&&l@mLsHes6#qk^Q{D2Da% z;^c u(2e=J)wGe #;pYp|$V*pfTYz*6S2W-8rBMdZD9!y0w zO?Ui{7S<14s6|E&4N@N`3di;JRpIzPJ5=)400_`U`+ClA31P2|F&*LgCcIW-5@d-X z0NaSbEW&dj7M?hg?za~~(;G%3^1;`F)?8O3J=f^q?r#yu5WuqRA5fl~ldtBW_*o7$ zs*I#DmvE1kIg3G>ZArQP4y9L(SAV{55>9vUzRQuWw__uR1Ymj{8+<`MoR0aS%;`>W z;UK wfYR!+WpP+7_eu>sxpgyh!%PRx0jcK9^@w!Pm8-21X=(W~ RIcB@_@5QrB=Rx<)fHx5p8um|n^3;U zOyKTZYS9u}G4FZ&TfiJH)O9T8rYX@Y_7L$NHfKyJ=PZOMZ5%+m*n_v+0g7{c0PVfk z&0mahJ=UNxC6xpg+E KgKm_e>fT4v})UIcd#bmE>bXVQRyo@YYW$qVA=0Y z_!dxUM62=|RSv1a5Uld-%BHI49p!e^Q^o75rlq^#Sj)QmZ(h^nEbfM%?0Y}kD4G>$ zn*3$cJOwYx07DPQc-Nm7FKP%*N`&?Bts726Mh*q6pJ%eyoY)jzwOdIS#~6E&Y#*9L zJzpSVXS{FO%r)qroa!GtFSd7mEqGH=S`b%hHB8yIiz_Dum`;xttnY)-$ZMo IqR|MR^PN(!!824 zkB^kt{`|XOE4i0E_O#zZMWav-HO2jx{n;V>Jqy7C!PN8~l^G+KgzwDwV2T~Ya94h5 zy$y5RU+Ftc?W3O1tUt{`o-PYiEQB%r2F|gTE|n%R0aG-u$Rn3H>0W-klbCy+obJ*C z%Zs1wwPy4i23^^1FYmZ>tIE3}J~c(;Do}DS(Lk7q`Zt;Zs>amq?Cj2d=;4=;6T3 zh~dViZ5|ybAD>xWTYo5Y%B>K*vy^I8 >figN6H|6Th;PKW>)RZ#)E`qjvOE z5&K_XUxcvKk^>D7#{mbOXVxd5T2Jm(!LLutDf&>@hON?i>lDWxX};?EJ`t2PMX_t* zFq|uDIHz7_B mP8)IFj03qy|+auVlVHWtA2SfRQ5W2ga gbl5t;AfNT2}%9;MTi=No<(XlV_P}G*l zA3~8mb}e$Tu`#~EoDfROn4$snWaoUbP_;gB+n&dHLS`{byNex&=KLG #!{V3K$FK=W&OCKB=_Di><}v+r~9|B z@0rj;tz0YG1`4pRu0G?xqdaVc*NZ 3an7A_*1k(OhuT>mO>(a z$}0Vv#co#5`oaxeL-uR;{jg-VP;7dkv|S73R7*HLBcX}3(-P(24e_P+Fq(UlCenK5 zKQ#y0EC#munS4k3RQZ3anfY355o5I`m2JAVH0`5#%*jMi^UllV8LIUbyEo#sMw@aC z0@^4A+>M5hfF9)sQ+bhVL+uNoDk#v&IaLZx7eQ4zwOc{I*8?4D_o-h6O5uB)^fH@| z^tI8m^_firPm#-+z0N>%@~d3n4?A6$Y2Ppn6(?P;t&v2-N&`#EmJ4YMD&5l0r@+UY z$W}VdPbI0>Dcnyv)15Kzj8p_mnoewOz8tW1EqZi0`|ydsOGk1~u`;;lbBFhfku-IT z;C8#ALAb5NGT5%AoI`RfYZC=rB=6R*-H_c5_v!MS@Wi?}nHU$Y!;`Xr+G52r(s@je zFSdcFPxu0{6h>5ulp!4%N^zw)1x+HIkoJxP^~B1YS_o_PXD; {-@{5I5wI=`p^PV&l;Akg?FleUEgkkD24#D3_x(kn-I_)t4fa1?UglZ- z>u)O%1GuSXvK<&xU;J4CB{rIOFFy3IEb<87D4l=<-CB?XlIT$fD9=#0p>v;}Y%ksu zyWOdLJ91hEvsvjkSQN=81<0}dc{FEZxhprm7se^3x+_(GEJGPmF9vwUs*W#*dd@;b zz1MT%TPY7hK?&MEKyS+`K02`82)95Lp2UMdHodcOPVT`3d$8MhY%&5^A$w}`*q01V z9+Ges5w$NAzXj`J6?{Gbp7}739sZe>q_yTTrLe&oU$e-8kSIIZs2r;yYU16<=Unq_ z2n(iFHSBe7V{gH}3e%2{Te(#7T_kSRpigY8?r9r%ZSt5|WQH $xtSKf*@~*=ekgWz(XP zLU;86R^TX^Rc(AjRCcA@tfQN$Ua}GuongENzDWjR;GP7wp;D4`v^e}-yU^`rUhKt6 z Mk$Q$E$2Ybe5I4QokOybsGqGF{H&j!aUJR zBn33@Ss1w-&Uh`VRkSfA_k3e!bccuRqV}ySpECK-R2q*&ax4ni=Y9XKKR%W}5LcQ> zbd?TeR_d?x*Bx)tzP24zI!td1Q0BVj#NyQTu@Sx+5_njs&-Tm!z{a|YA6-5Hlw)<* z0<$K6v~t0~fDGBN9VR3_x?Q2FW=TM)ZXV69<#dax8o0b^*$1DV>k?j6jQ(0bOE%n{ ziQsGd-DV|JWfOsFrQ>tB!D*G|9Y&t!fWfw~UmFp1Ffz%8dAw;E3W&)|12B?nQvcug zp^@uA7CgZ+HU8 quH;?{$}<8^D)lnlIX6Gfl0RVDp<942NNO1Sc*%MbGSs5YsN zb;KW7OQ4<+_@8QhUtiF~|3FuSFFkm3A63AciEn+qxQgva_jlWJUmN_fZ1avDq(0?% zybBlv#C4(Ymp3a{W!52+Hbaj{=XVF-h9|A(TzMc!^H~2=9uNH?slS>wvI99_lB6-6 zk>yr-f{)ZkbdJ7%PYP*E@gX b9y;hBCi!d8(;*eK*U)MN-1% zMo2fbzNE3ZkFp&TYtX0Of+T>5%@Qx)$5fLEcE5Z2Ws_G=arovF8+6w0BGO%M705oW z;&`gR75&@?K+(6E6ZQGSVKv$2DWCA~ydApKn9yo!?- owJ-#fr${ezVq+23tL4LopJdQRz#Qj?9kxC|`F! z-t2x`F+OeAC5|b2WA0Aa^6ZQQIlQXSWnW{!#dSq)N!3*AQ*3__Xi~(uMZo =A9=v3xgh>W&C`=4fDveORT-yVKlPt%9?@ tfIV7i7Asz?yqX z;scbRUt5&B@eB+l)II3QOt4hKJX~b0IB6{1*MObGxNVFoNgpr8% d_O% A!89x`O3}_%dU1_UoI0JG#y=gRe@8zWdi?!K2 z&+AUO_|2)O+qH`>$3G+JtHOK}a>J;QH9g`hZX!NUNSpfb=Y0v5-MX((`Xs_CA%?(o zT~`y0gV+CDEiKzVl`6_1)(UV&(qKg5T#}0~4`MU?&&3zI-`WzIr9V4!jtBe`7OSoE zMJ_mU*i$lnL5PE-z~US-$wLj8{6d3#p8hHO|K)zNeh9RYle<&DrT-y3a2o53dl&E3 z>Ak*+AH4W6$sjyHZ;N)x^$zr4NYG)XmbW|%r*MgtA7RV3g@uuQw287o)N558K*CU>QJ^qGFy#@WKY-IO^9Nn5nk(&1Q66GeY1hk)i(80Pl+#_Hm zrM|6@E)6{(B5pg43-aTve0wY=4x6{0tl7yuR>2G1gQk@tN#cbXQG0UDGdTyXL1~yG zJE3CXF5T@?8>Vqm$D;HX$139q>Ir|i+s2GO1K@Q0hJ$=BId>ki;xMUW Ey;q-1ux`1^+lOxH8Wy^DL%JH4r%&RaXiYX1 zKEo)F98P}H709kkg36Odwi_Mv8>VWoxnRN_Vc7lUMb%@rGUTt5YsY!VJyl@H;)I<} zzw~CE=OVY$gTJoY;p!#HHiV(TzS}kJGb1TgtVaFJEKhe7y)nf#hUA8fT9aL1Q%UTx zO7$Rm2wTZSKHY7-wmgn hljG+sMOl7#g*BA8-<%w5XI0ijDH3dEE0+Tx-m7mkB-DIx zn*|TXwvDQ*?MwL5nVh?<(xGv2@ZckZ?Po)=+*U3L{eSf__NGoDY-b6!t_4$F6sZx= zF3$KPLV_Os9kId2V38heQoh|pi3@%fr*6PkM6Br8K3+{10A~d8RA+nac(%b)t7&*O zwPM`S^gmz*VI_rbW76x @xEf6sZ#0i6W{dX2(Hw%J1vtfUbE1_@Rd`Veovt=W<`UF zu;4-eRGP2fdG-X{^+z_t@5h5Z>JYcl H{tx$s0kkYg~D=&8V-l*z?jJ91gR z@>Xu6&tW&ES!OCXx4~pnThJykS7B|hd}7quX6tt&*?l7FA*3}&Em>r2tma@?MOTu8 z#;^&1_Af-5q@1xspQxsP%M@5k9IcKD=6EIMH~gmq6trx5B@IX(s)?|T3G%~9TQRxf zwimKPPy1spW~uVmJ%QaRspTNP>yMF7&YIE$&G=uqFrMS!i!Xze_zepXzWiVnZ}FY; zUM*I+0beO^hAkY~onDcDk|2uq5jx;sH?Qx3Gu? 7q6!fN$$-f2zbpf!|i*H#x3wi*%%Q!2bHxJwTx-E%zam zztn1Fp3uvv#@X?vAa8zp=($i>+N5mEdN~@}4?A6C9WDmdd`_5?m>>@d5QOEcAON=6 z#;$7Xf|pqqAB|^GGxJGomzkx)K3~)BV*gvEvImH(WU?bg-yfgtlWf@p&s8f-PUe%E zY)A{-tf#vke{f&hK(bB4p(vBcK`CU2ev1HRy63mE$}W5y41>~&99tx-Soi}7*5V~) z|8EiH`t#v9Hz?|nlB+cBeUOQiJ*(eNV2W%1(}mHk-z2Ig#f?Ejc?EhucJgYARjPZO z-_b&NMXz8_?bIx@1b &~_KBiHR%Yhfk+KoD`n4CN z(701XiFN7EIpzDom!O}pFqa311HyVvrdzrVHVZ#-m}~O_6At+!w1T%_@}r>djXS5I z2$sDNtFB_I^jgN1i{6Wkhm}nvTx@dr?s^Ohl)OlqLd4Ch54eILst#}wd-Rzzbp0K>?2J(yGv{+=3S^^ZP3CT>O59c{wJUOz! z^7$`*5_Q3n`m_^L4hDVv0v;(1irCj}T<*UmX#Q>!i2t1T;}5oAWCHlBz`; O06=K3oLIRb$-N~WN7cJb(#W_@>`b$A0w4;@txZO4F> AW;godv$XGVO$}bKO1I)cL}Q= zRDh9Ngk%7RMomavWBAPUJ1n{L%f0vhJ6D@9O+4e}!yrIgpYffG0t5?=U`H}w_=-&< z;J=Pd=ry{@z5W~fy`2NF- (vK$)e}-O2aqe z!TcgZQ$cla@7pGvSugxPju(I}#AUKPHhr$;ySwm=hK~bC=CF^@WeeH^>pT4<{b~+P zG0WbYj42y)jlRwc2CsP^ng7_&ei)A$Oa0g%)Us=dm68T}(`}X*gG~4O(tAL;O%sUs z;N}0q96qld_j-S5QA0AV=W<*@KWBec%%epSJ2uwmfQyY;*m2IV8c59FG-kNRgZx`T z>wb`z5}n)EDfhN{YQw<4Zu!IanP-Hd7cemsP~GDYw!Cu+*m?|qPoi(V=kz)&Ki^Vi z{m=4Q+|I0lT_1e&bz{xZ)P;d`Uv8CA^UArc@Z0)?V^*pVH(y!E#r?8SELugNk)!&F zTSKVe%C(c>f;U|2ljUY9#W*voOi}UaXV6S2!aNYg2p*m lz{ubw89ccI|3;uzayq?*PO7)hhrg&+OGYI}|0(D_*@ftP43t=e zZPB*PNN(2;vZP*`|Hk@s$0i`p{w>LF{ K&jdc?kdwL*C;8AWJtC1YBg`sIUByC )H=~J8mnqn4! zf>%NWI3piqaOHXK?8xZlqKZpEDAvvZEuxZA5f4;_&K?&-LPfv`$Z^s)tg?@?h+(t3 z&(=C_Mum~Xt>BiD%R``lU$RfT>W(Hzk4wRv)qT%9AdIN`OCG|=;6Yiy5eO5&-3z)k z+y04ZweVdU^7o}0`O{uDroPxpz8GVN =KO=i<2s~s?)VXs`5_=ADM0aXpDdx-hE z-GW+(*dgqk`T_1|ms$6TE+BhmT{Z#iT5k`SI`tcejw-Rfdw%-b4n0jU#2UU2N D5l0Bz4Ljaw?M wmrA%dkm)QyE$$ZO*iAJ3^8TjD0w BX73e(YFd90^4dbg6x0|=sv}TswZ$;BM=;WWb zC)zwA3BnBsjf8^|?s@yb>MEIaxe^3CZBp=8U$Sug`fW-20Wh2eG!F#?Ndf)2xflsR z$&7E%Nl0jtF&qj46$H3) cM#8&4;(nJ;9AjVTb%nmeaEvQhPhvkCSfq$kh&eG|D2 zEfWuaPOu0|#Wm9zQt0*gJXYy6^5BwI+!XkFLL#WPE!N ~~s__58RijU^*lx3fBhR`PngHwZ1ZckgaQqVi4FGoO`>me9Wl;!pXA%E*Q zcCCG3RU$OgGRwffO1RwjCjN0GtBf)31lhO*h#RBgQhFkPiE`tO*8l~U(cKQP5k&(R zgQ==Z9gcpp |d%{Xh2JGpebr zZ5LMTB4PzW0TmIXDoB^22#83N-is9JJ#-=}SZE?mI?{U!Ed&VI=)HyjkzNB*LV%Fu zo7wMqc6%Ir=l2=!pFNPVCu_~Q?s@m?x@{%79FVhnf!g%C=4XY^3uEgoOQ!OR+K~it z-m0D11jS;by3BqTl(QtFiTCI7BVTH|41LQui%GkMQXU@r)o;nEuzakjE`T77g`ZzO zc4{r==*fz4m#HfJPBKtWz3$OPyE5+yGZos#xwxHBG>6Bsys1YI&Ewdudi_@$9xZqE z>m^3^{02s~t}-H{-Sl0~tRRbrj32+h!4PQ}Hz(!Gw;s1)MS63hKCs*0R8>Th7K;u) zD;LT*LpJm&M2Gjg5`=B~D_jb*h|lJd44 wbmkxaa}sE(?Nu zt=?WL2#z23vG}}24cBBXg3mJQX1Oj{b&QnWq2Fl|PD>RK@*#2iWfe?-axCKF*-nwE zkg|i=my?Nq>-M2^e%(C>T8BfY<+^G9OsNGNJ>wJ*$}vAV#jfWZrFCCGXv$%fJ!M-u zmTNVQ-yh{5fmvLIMuIcR&Y1;&zNKZQuCAU{(j?vjHdD>B?S}EgTfAcn3lm%9*a<%3 z)!U#{@26P#a|>ii_=M7{M mQ ef z-ULMu+xipOFth>ri$Y@N-Zspj-jBuH^`gbs0aopNmBH)YSxt=sN|0mqem?BZYzef> zJB)qaZ5o@6$5^Uol4+OSQwvJIoLmQPcBUveD#yxx%gz6A0SqZ&E))C7Aw8%D0MpZp zXTJheL2>Q+djr>wfwIxEw$}T{n4;>3gr-jrDConR%6p>1q)c%hLm_G5?RJ5gSD;bD zeB=!!bKUW&%6qconEU{Wre=4k*SViCaD+q!QDw(?7hq7aSBlq<}_o0i}<} zDoJCDG5Q`%r9!q2QVF8PhkBL;$DrDoRzot-GwTT37@I!NJ{|`tC2k*+E`=Pv{-=v^ zeKGEBBgUXsX%5a7N8WUl6B+Ny#7>dI3hH+ki!^eE;2Jyeqk+@uIYjGdiH-Ui&polq zW=mbaoAQ`DdPkW>RUsqR+11p7ECf^A $SJC%e?W%N>*^u77mreVctQwl|@} zq#jhTr$Lv ~2@yBWDJCGPO0OWq&h`xKw6Fzfks+ zJ}I=edia!fJ^=(CQ7P=o<-GJ2EMkKNUIO^e(fDxzJAu2wmAB7$H15F;MDo<3Ybu}~ zC3QYt-pswxB_`RSw(HX^_0Z2U?@G~Z_QUPADFs*!LB&JQ=)$R2XDYVl0K6j2VNl|l zgATmhh595CKvOA|?zZzF@&^6H8Ng5r!#VxB2iZ{sIKUUG?#N)0mRDl8FgA4t&`T!d zNubdnDF9A*THD~x6Un__GNqX%)KwtSp%wYD^<1Q;mQm*I1o0}15B72{qxBa{GkZYy zzEN37G5=-g70+^$jl!C5Wz<^ix& |7{bD0f)g9QhxKyU)k8xRFWpsGE5G$DdZ9n^_qKjOnEI9rTE1W z@u+MS{Cy2-m&|~U8&2L?omVR?fHYK&u0?B~js#6<+OJ}S4ypM>ZFao*kvG%ESN{QI zpbX?fE~ynU@*u+!ynMf%ePdgq&=hynA@WxkdS|K% >H>8b-m2cp& iMnAMZCAOF^;yTkQL$8|_p1LW=_Pe# zWaF!2bL%JthtY|=Fe&A#hE=8A&R@7eePigA+qYUY*(#^^iV#@NE(t XrUn zb;I{V*TO>^E6uql`q{HmoCy#zP(Auyh8S(TBIgg{iRkf|IuHHzy&aaP8Jab(mh1aR z{p&T>;*R_ZXA~)!e_2>_8?vmU3lPiiiw0tTl54m9QD^>5XEN&>(CSYmF^9PQ;4d?A z^XAV(w bdptkkYd HHgrH>g@%mus=}5)S0$v;QZaZH8sB8te9Vex0rV^Pcg^pp zLlasIF8y*3fcR+i73v9%nfGmSOM1@6S#9=X=04QxPMn+bo|p{gi;-vc(+FS3rep~~ z>5V)mRLk2XjiHGxmi#HMVIA?Ej>X8Wn&IBn86jI3$Yr+7s3I{46(;D0WrsyDPvwV+ zuf;v6DdV>Jp7igQ?_;UWVr|=c4R2TdB(NOwwB^+A5oCHucR0+pnSc&wqvWcsObNe= zm+}nzHWlycBs-jL63?{GJZ(V8 i z)MU~(F6Jn1>Fa-n+AriaJ$ddlM5+zMAok`A=GSoOhFIEG-!fy zYCA K|7A8^d6h+;ALgS= z4a{S2L_D_`u~KvQ1HFwOX@}k%RLCC3i17*J7$}maK~sDb6J)rtuF2cqFy03wj@<-m zd_cKZNS#P$$h!+Lx=)ys3-~_gb^E{V+;PR!cbHd!9*jm5Pt~wNBzO3%a*fSuV afhNG4WX0DgG#^r9W23BG!313>McE zKbfa8;&dPVp>5SZ*9jpkDL)GZX_|L_j;;0}#MSM|Jk2Clt=kU5)mT2{ZZ8k(ILu0= z)MDDolj{=s)R4C7{fX@j%%K!f0wEnPkoPivv)>T-wWJd+YW}wQyjc2+PtGm-SV-k4 zRGkB83Dim)@mG3h!r(Jacs(0wV1d?f(SVxaUrCktPX`oj{(;;*c=$23c_TB8$MX-| zi3pL$3)d~w?QdZZ(TZFx{2Hio_j%e{q T%zK+AU~J->K6Zh0ta}fu|a5C3%dac-Z{= zQ`22Y=W%}h$C%tc?17X@46IX35r81Rs`{ab848ippkkz4WR=8ihY>rwJLwoP%TrCJ zD=_jHbI;VTa&UmVQu9`UoJ9^6n&kBI-gdW4eDaRI6r>N;|Ln&-tmOxPken+rc<%a@ zMwpXfj}p6&A~IxHwWe;?Btm>wmzi2XMcFEzuY9CHH~Q4TRew0kBORvCM9)14^yHz1 z!TOGVL(r=@0}}Ur0 CPD>j-jzgDz0nbC#N}5qpB5a0TNey+@!y-^9zR9~ zZB|RVabh3=k?C#M)@|iZs96*%(l+wa+}*;)4qh6miatM5<+vKNdAjQ*vDp-)zCRj5 z#&owvT=`G{9{qS6t%^#aC&Fqi6@zRaY+p8LIfYYY@%i&^|6#xbvaV4o<)iH0@BYl| zs0K^(4xhXJRpCh!1cw43`b#^HV%0i@Xt4881NYt1r?Jt~)l*?@yhCfxLBcF%41!T| zfbY=JH kdaNc@`w>hHt~?R(z%-ol~~k z*?u@;Uw4dWqpKW^tFCw=AlL`%r?AB1z89}`Yv@b>m>oO4k=y5xD|eofK5fd^eDS DHMbcT&TPY>Oc_>s_Zf<0MvN<4?hxaOAs zEhtp}OLkXX1C>3X7vL!w9Xk?hzvaAldbYgt+_Aw~@`BIX;vo;wCbYgI@>ZMM3irl5 z;{DW`ej5Q><(McaQK_4|a_!VDF%nV^7R1A0D8# )95GT#CGx3I{X7vXsyIh#rdPC<# z0{^x>r9*eI_b}mLGq5Eq=#ro>SxKj`L4MWKTMA~?mQrUP2`in#BMo@yQY#sT1?}q{ zq)1MD-w%)oT&ta9q#Ft>iQ#IzDFj_>`TcWk9aa*_!4AUpV zklL&Dty5L~bGdPyzZ_9z79-k(&o6Q4T{5tvh&xIE?%#(q+;Z?; EhFA;FNB;^Za#T|vlY@ +Df^nNO1V1!+u(SVw3iVHJs~FkNk^ z2LV2AthuVK?U`}!{3qH7xC(UskfYck{I9R4>3xdrOr3b#27g!zBtt=+q`c6nV@qr7 zJ>w~HX{&4s5s8_A26YwC4V@jQ`Rp(?0|j|;dlqrX=GOdzWy|8?f=1zl?}#raxuUS@ zro_xntWiPjI_LV=a7-){@>$OpCh}+x(W$|5@<&3)b7La{GpQ{BhYUQ5r=$#DVz!Kz zyq`M}ZqYO#N@WA_!+sucHH;sV&_=0;CSO5g{}!W2vi6}MzWU8HAEa9}vQ~r8|L%fpUtF>mk>+^ny|@0#o`#Fl0M~IV=D$f z(i{2SiPiEnYx_*g!2eDE=2TTf$&uH>!zQopB8bux#_W4sCtI!XL;P&AeS6M&xwbf5 z)#^CF;z#7Cod1`G`N8#ptm`v{WtaF{BI!VY-eJJOBUlQB`6{NRnkL)sC208wyWP87 z`}mdrR-|^U@DA2CTRF+%Tl3j6;KvOO SMNmY3f!?;4-mEc@a2wr$ZDT+tcO z0o;ohr|rv3GUka_LQ_H+-D*Xiy7Gd8)qqMoi@sCamXNEfB{$g?_Svy^?WnM=-|nWh z?39P^icALPK5?|HEAR}!69W` r8!P;*MHg* zK-+Nc3d<1=Hy4_AU%l|82A(7Ar!PQ2^O5mLG8~mVK_Y8f@p~-x=T@fS>XXmFT?VzP zmrM&j`=u1$Ue3+kO?ldt(zZ%%9W$L8Gmc76;CWy)ti=mc#ZxJEIcO4XZ2R-WR zwQNg7`-kAJR$jjvj|rNH8I16J;yJdWzuEX8fkxbWlL-!y*#QN}CY~X}JKi{dkcfE4 z!&D2%Y2Mep^0GXfAcNRi(WmYdvK_pqu 9k^r7U!%=@d-QHUXxkhNq)iO$Rjo{|38eg}| zG@HiP0Dsd9eFu1D8Lo~wncukc!B_uN5M~S%`q3~L{VoMrV35dKSa7xUr^aP&J1PGa zYL~9=Tpn2meWj@?4>wRiZ4|70CMAdRM_?oGjW_w*IRl1*Xl@Tsa%u&2l`-+g1Yt+D zX9OCoF*;o3G33+3e@Qm#X2Zu3SZH$4-yE<{0*9CD3b%|*=;!-HVvcC@%wG~pi0}pM zH(6~L`Km_O`Awvu3j_H>r|QxNVom`a**BAyU-VHS@+N%CUUwM;@rXeWlQ;Dpi*-Cw z_6Ju|pgnkQ#HW D5^URyR+lPY zZ&sr1mTGM78!jQKoob%tcOFyux?y$enz2Y_9j%b 8=k<#m}ME#7bFLHYZ zxwtP>bUVf-&nlhnbv0fD_#lr}Z0A7ZiGPJK=>V-h`rMI*>2I1Q)%y6bcsQ1+b8E$d zdf2{tBFF_`VY8E}JQP<;h^Nb%l6{(2b|p;{-l0FBV~zb6EFT-Yb_fD^cCLMULfxwo zOD?oe5tgZ4C~}yp67&TXt5@+n+6MjhEg&bTk-eA6k6T8m{|I52;)5Tzi!QhBlZ(-{ zWI&luDP>f3CiD7+yXAV%4&L>VswVzy{H_pbve14?gvI&WSqC})UzI+va$aiWa#`Es zlzKn&OkS=)#flZIxJ_Fp8s-7qtHF3=)+xG%WD(~yeZht>MIwx?5i5VfL9Y4;A(Dkg zr_NdLQPlx&LnO5zF4Xq#b`;!m7@!T^D1c?L{atcDy`!SAsBK} r#K@C;$DQ|78x`=Meum=l^Tw!2jh| z-S;T}ms|BeoB_YPzW+=1`&VbgZ-4rKi|m(&lT-HE;WMA|4+B=wQP2EuTLb)cHQq&x zQm_8iR{Sr8&B4=fYOa?z K+omqA(Hf;05Ouiq z=3kxjzdMX0pr^y?AivVp+u6r|9i0=MQRY9r@2i KqUc_|>I6R`+Z$-nEo6-$l zrxBk|9SewKQ;qJlySaW37LrT9pBOy1p)^L1Fr_1px8Dr7JI;;jv0FUZ@vnmTpPTrf z=l`uf&R8eSUmCa55lT|-xxe3unZy9T^JI(uyRW6s)0e#KV6-o)q!rq41^7-HfL}Wt zK$7|m8w#^JK90B_V`cxRyZcX@blZv=JOsANmoAeUa9BqL5pXs4=ziP(ln%a1ms(Y1 z U! z$W9yD>Bzyu=MK`FRfeDOlH2#R!I^;Ir2QG#qWk$06M@KtB}-Y}efPq97PJ$`jy?~1 z*AQ~N`d!C>zqdeSqSeEXW&2)*L^g00I%`rwjt0bC|M{%re^#Bm6TPosD?J5;-N;&d zH^u;6F4dW|_I9V_ipBDMo%g%`-~)w{nR{doGroE8Jpsoeka)QXn@Ydm`$<1L^StMh z*nQA1nCeVjebrU)^Xw15*m zc<0r9C87q1UQzHluQQ+8j!a&1y;$s$+?H}Q=r7p$Kc)K*yp>efJ-^r2qN^-N(Vf3x7#? z5PRmi-TxS(z$#JUO5R?U{WpdJQwqF 9NC~PzJ*6F8ls*SIRU7 z_`Icn#$n5cshmluC(~YXS8fIGtK$@a1k7b1T6E5Uu-v* j`nZe`|^0BY}#RB$U?!lib zi{2^U8kPYWYi$0jPV^gjZbwnJvrK54KlA+R!NER ;b_1|VWz*b!QvF5jrw_ge1 zG<<}%cWC-JA|M~9x9^wFVh3fbg)sr|kOpr0X1=r}sf3xN&-+^80|9bCT;M&UC&gY$ zv(k6J>u9%kn8v?d+4rNubiiffKAJ6hIKJS8vYn-aYh;~|+m-*iX{3}o!hsKIk1k7+ zxEZ3ZzC9~zd_Joy#ER+=$0g;iw{hxS1)p&3p0iGt?e8Z#U%X69K6nw9J^$`K!^Mly zcGn*duX^Rxc-L52L98qfT_zEk#U;iDF8WJ2;&r+-1plVzDz1Y~Xz8?E2$17A6YgZ0 z=*oHzara+jF#r6J911|UE7)CmE!}tS_%%zZFLBPDN=wUqdix2?RV0w+J)!0M2Lc{7 z1b)J*yuHWzYCloF`r-vh4b4(4T;K_vlDNi>K;4Lw|8-D*yKm3018GTUewP(@TtmKr z#*P>NHGyH;fJq^2Uk8LS7QERHcS&m+s)|1hoTtF6MBBhmPxh6VqZCN+{bV7|Q0cLg zQE(0c*2E>Pq~5>1&Yu?GKfepu _+j-@SKGI6+9=M!5F8eCWPA z8UeS{08u|3COviLmrSC&9I$T=S3=V+{+CAn$4woeEHk_xCZDQsd|TQTF4+iA{Nx%b zG6h`QeFTEzArPW#k2CJ4zN5bJtli>XEBqal@ww#RMDxF%`vG_`iKQk$%d8(CZnmt7 zVw36eItSY~IFn9op=c`p?D(MTsx>bH;|vSn_fAX1CNs$I>%bhp%NRfxn#FeaFo-gg z8bTc{Ik9>hY|r-Dl630llefRXKPQVWhDtM?yuse9Tr^~Qkz-$>l}=>_VqWxyJ&^O7 zD(3K)pR@e8s8w8x95pi}|LXw$aqz+SfhsYR&VF>5G4FtilS7VGnD@SlzJj8!AO 3TVg1a3- g&YJM 2W5uRog}4^m(n~ZzpYue6bzU-oBxH$ z|HtwCpTp}uKnX8jL_WNDHiw?7r@``v@K7-9KHGmT15Bz3z4<1j`Z0weNF&QBI)NRW9^wj%&c?jgbWpcO!c~yKe!SoHAk%RB@T|9gSPt`k4^nNSthtmpdFFWul~_q!X$Q^L zvf91@R;m_wx1p0 KtJq3K}+XtzI1ghb;x&D77 znxfIpi}u_-4 lR5i_ z2C4`kJhnrzqi3IAq4IwV>&(Hv>I_X+E8o{RN~hL a~t1 znTEFY<{|reOm{U7%83Z~3&_`<&5;S1emK&C6Dy#S-S;vb@0S7Zhx?VG%651$LHg3D z!A*+^>rPzZ`~G9UQ;mQA&g2d_L8DXi7v4$BT>N>WlLptW=D6RMQX!P99>xW~-tBqh zlR9E8SzmA8bif6QhxO?8N7nA?BVYDLl$gPE#(l3WxUOKfAGoe^LiDo_IrsaYQ%{^I zfBwLp2cEkz*A+Wt zW+SeJ*3GF^veb)a*TMsoyM0$Q;0QHcGnn9X<7w8=z`VFzIJ1O#pOP?7>m+E2jRbUO zYG5dpp*4W{sx=L2PC7{eQm)V|fQH>&)2=XP10Z4FRkX$MOT5{VaHimyGGmQuwA$EQ zf4gt+ZQ~$e7HK)SLI^HH63}}^f*}i8Hn8b)ip{G6R#}yrTUmg_XdO@oy{8?qZYnFf zw>zI+Hk9n63DGHBMyt2&0sgP)RV%U~sjSJ^fZe+ALis0t!}8}5A I=NVaQ=+mGq9^a|GEo-M zZ^8sTRy~u6FM+((^e=r;GiX6hgQ|~9sD&>C-<{XQYvGn1@$ZOSkhnX~g6@H?jdef^ z*9MrF7+ECMk@7k(M7#>67BV8I0cBrk-;+3g*`u_~+<^A`J>lTfTGmoCsYkm20G?5x z8|P*WM-(7QyJq+20Rzs>rvt>iv2Y#^9}E%S@~bJRtw0x+`Ha1e1-fRDG#=hzNtp>E zb6WHpG5^*(&|$Aa;prhNXN$@S+uE)Ih^V%@><8N4YF(NKsoO? =rQ87j zle@W!Q2|^u2kGr9H*on7p_Kgepvzy@0j{xWV3Q?|U%1B0irDkT% hg;U|pqwF*bQxyE7)!trm)drEm(&|24uIZ_5mxU^ti&en0N z4hn(>^r$J5#GFzM{C6z)E!#hx1ViO%)0XV`1ENKzW3H7A#@n_402DXqe)n>zdXgkI za3sP0*-n~E+-=jBwZtv)B4Y0A;E7Nq3qF>xiZHh9inkDqGKTI{D6cjF-tkxpB1Ms} zp5qO(cg`Mh6{^yqqs~J|;C(*FEg3M-8v5$D4j}L+4kuEJxSK{rEvfd0$ubFN%FoPS zEV@zr;SEl~l7_BuIwyY2;{FV1Lis+UFD^+~77*PC5%`{kQsxB=?lIh8uvks8}o3 z*we9i0ovjhuZ8D>E%V3Uw8QVbeg+_vCFW{^^$zOqnSDl` Ap00v2tkPD1L$_g)GJs_XX&sfRj`tqdfX;kzx9=*mT=^ zrZYuk2Sf5}LNPMD>4aT4n=|Y~b@Z~-#IE*qc!!wB%JR!e2$=>?ri_CV_uxX=!*o@@ z;E$k91dK+(EViOh>NfgC+Fa61CHz}Y3SdsTsn=GHS((6@mJ-%ZuqXb^J2&F!xKguJ zBnD?e&;J4vK7M3JW(PE#z?UnAjKoGpsD2LUkIpsoLxS;EM?d^*{GFdDtxlPB+JI7a zXRZm8#hQiex>JjcvN?NIzglL124}0UFT=VZeO^K9GF`jhV-2{O+*%i=%~-Pv(jfo~ zwTApPZq!G<*<@|VI40%(o@up8C2n~mZgM?wQBIhxEiV)oeAE~~Z%b<1M#O%BQ4?~R z#_j`}6>0{dGXSE;(o%g}!Ya`ge#Nc({u<(Y%{g7(K`~Vkpdq~uQn&67J6^%IeY#Pk zKC!#%I1)#2tR`Ee4M?)!h25bl( ~M4Zq=3S0=ky8o88oQ(w;CG zYW88P4)OE+vL!h}=JFj&(exF_QTYR$QM!?rxnDS7-I+!|7wM6{0=ohDQe>3qG}FB# zGH|ZJ&o T_gH64~p?mh3cd zhHWPSErr(rf@BY%;$|?7*97wQq%E<%?OWPTy%?x$5n@G*0r!QY@B<%Gcf- 4G0v%J|tY(3Y+`fH={Q tk+6k( z-=Axhga#`ny8QOca(n{l+>On@a`%WmHq O`jMAE@&R?* zV|=c1g5UOp{KL$kq#1{A(eBUZ^4>@oi=k$xYiw(ehE9?E`OXt7_6iL@XYMY_rS0HX z9EUIFJyk3QoxI3|_imeQe71&upEukxKDkTJCHI!ca6WxlIe5^Kg*xBic2!RYyi@Hg zN=w{2Cs?Y`eFI(y$!q~GA!A{K5O4#^c5{v)ghp@@wKZJXB$GT{nB^Ko<~aVvfyq9; z-YM=R#R&)n;=PU}6Zz^%BZ7QhM127Gm7$ZZOZMLd1gLw}uU){D7{XXHCX7kkMl#MP z%aDv+Ay7c2Ry6EwQd^& eh;gV5#R+>rZ|>|X03v%5SH8&@{RR`-YM^XjJ!+uVC@iJE>nyif%uA%cU{ z=79eC*$7w~^`{Fe99?s)%LE2K>J!qJ(>k?c6^66K1?2Ty#!MB|8k%MC=eK@J9fP zWN_3e=QuBN{IXwaLm7<9ujJZzHkVcnUmh?vGqERUFgXY3vXi}ASw80E ;)X6y-0n1T94Ul`mE^o&sPHX-n=6|BsjeOGP2c6p5SX6Y0@`s90|G@g(kSlLso zV-~jf7pk=!lReOTZU&DsJ?8Z|DOh)Mx8_yv>id>A 8vL~kYHxOAe#VMaytPfrfRr=2qn my*=2t z{)Qj<7hc*HlPKy+<-1J&K9{0M*utj!RP5xx&kB_|7l^J`5<=aGcabQ4rTJU8k?|8q zIZ!F `tS7ZyWF=eRvio`oldjMpwT0W~uUzV)xcIr$_yox7br$$_&5^ zGiR#|`>NB*iY(q1JZ_$wJ@PGgcCR#<#R4lPC% xaNmp>;N!*2 zTq4a68q6RzN6fVAk6dg07T&zh5ZIM6^RZnR?m)0Rf&P+@;f%+;EYTayw~XROR=-l9 zq?r1p0>FKLcSNGNc9C;O@Z{T?;B2G1uQ(`RWQd@U=YuZII2*yA9~F5c0I#+tq?aWC zPNH@Z{1Re?z2!4BZ%j&z=qbU}Y5b{nPabV2XN zw) HxC(hSf>n&3Z82}GE&`f#ewM->?yDH zOOcMcvo(jI +cL8;gmxLT(B8($LSToEZ( zHWj97>9uw=n^#Q)cGwO;GM!62-?7Cwv8G#gCf;K4yW7bghPZ+?S%N&_onbsqGP=3A znZy`5z~)hvfsM;ZO8w3|)f67f 7oje91+);613Pk;8T z+ZDU8$|K~5=ky1r sk |o0A6iLpUvUS78=)GL*dOBwf z D~@i?hL$J`gH$ho*x-fx z9XfjILm)N%56s17c^xnbE0(Kk#e>eNvz~kp3~O2;1Rz-C@R`%)eL{L-dnR_v!=<}S z76FJuyS4~qmQj8CpIiVJ!58Uyz$Il=RzyA HqFfm Cyfn!hXAVJ; JTdTmv$P9%$w)7=aB=AUx{Otp9?{O}&fh0`XjFh2 z9~313(9g6xQ)Z&xgOvRG-LuISWzQ$Bdu@aYSEToNh(qRwKYzJqni7t?iC`B{5Fm#5 zBUj7Ym#Zo?vK_s(J3YGYZG>C_5eEP+izSuw@T#XECDMPbHL=99#TxXk+8&1 i&$PK4Cw%PLG%s3O5z#CC9j@ z{qTC|uJ1JyJp(vKq6W0|JD41q3L#G{)D7mib9jZ0igPJ0v5fC#4P(lYq9d2AR&`;d zowhF8iN(00@`Tgw0QA|h_d@zSTNknz`rNiZIp_SCMJCiB{$Z2%rGr)k!DqsHZ2@rn zb(mF0%q{g^^-wy(p&$;fXHMiV#^_E8aan)m3ng~qqHVEd5!Cxm{4eZbYXG)Vla&Hd zy$gshC^HU5{lq0jYP8UrRaRXc(;$$D 7bIEq|hl0rms%KkZt_mI3E?Cp;&3YmP4oWM+SpzQ213WT#Ns zoNm)Ul0xe9``q0|QgY@5+_1aKPch^xR?+iJH2Dt3dve<4i7rwGBdhPlQw$Y&Wl~0K zob3x2XFwPfxzQ;h>`f}p3P)e%ZMJKi1!SB}3}gOHOfJ!qmwS`XiaPz21`toBT1V$X zAoc-eV4Mp)Z12pIiW;44zxvb8K7*5hkS)I>v}P&VwparH5d^OstIjQZWo@PFcKTae z%j;NFKL9M6Kibx>p+vZVglU86DHj@m`%h2+slMZ+Lo-j_^R)YMVpXE#OPeAoL(n)h zO~AC3^(k7ZA44o23@7o69DTq6dJF)WT+tGz%>etodD 86iRQb~DwLhg8gl*&Z&&ycZiku6}n=EBN}{Gu8g&bqo%LaEY; o@SVa z-CtvX{+5hSH3fIFXxbO9JZ@f`i}TnGmCU(Zi2l*dPy@*P+BU8GrVM1VbKOV6dX-I5 z0%$`3SCPc}oD^A9*_I1{KWz8xeyG+jT~f(xCC*Yvb-8ns+Ck#ZC#vDi_aP%Id#|-X z`tMnNr`t9c`eqVgT`>#-md$`*g^T`lz3R~ s&8NN5yjzrst+)_A@Pfnv%0jH4m_)qiCG-LN){d^Aqa;_$k-4 2hs?n&NauV&&!0IgrT?IeW{3 1b(bB2q4x~*zCRX zd`j^>aMwNJu+4?QR{ABPCrEixrqqE9Xl)**QLbfUS5(2Dz7 zK?YGatg7512uL_{%?jcI)-gfI zeg^0nSEe%4sP|0fjlF<+6EPJD^*tlFI5Ef+6CEnus*El&6!*{>^|D^&e*^d1A?Y;j zD2ron2-)XI)sG%2e{-5Co^jw=Qwo5R@eVI yoop~O)UTF|B6P)DM5zd$B5an zvsdCpS$`ya@$O}}gK3Kok~BR^dlV~g*v3fI rY6@zF&tcI=O2e+RZ;r3X=C3bZ<9SP$lAk)ZR zX?;Lv19-lE(0EDx5jpo1@5S8pSmYkt>N7q&4G)o<8o5jSZ8z6D3rHZqT1)8mr?wl~ zG{ZkL&Q@h58)j#<-MS$~eHiT#Pod)B-Kln-8oe;z74B^`sN)y }A6cN&WIC4ezRsZ>D}J}Hvy9g9qn1gdfy&uT@jb=HP+jXx zhjrkDv@lpDs+k@xb@xPXgwgXF%%3iW==h1vU+4!&^4!ZkOzZF4hJI)d`X`78z+Mls zEv^VHq)?5dv}FIP5bc>4g1+VhG= u&FTdR=`KKDX+wnzU;?{AnTSm2OJHB(WiWIq}h3WH-^+L zLwhkHOWcc$E?o_C0pvLd^Ur%uPqrg;JX2N&EFYKlR2ut|WE0Ip1qVL>eZxP>h+~d} z#|Et #V@W&Q!m}v4kt!p zt5`Y)Hu>4xMJ62?SEzqX*04~Lj%9Azw&|5(W@TF{as1yURtbG7QiYI>zB#E}eQW_G z)AQd2rhubt4N)UU5{s&3?kp;9`hEHSV^JXK%V30^U#XCo$dFlj-e`4h_kEkX$s@dj z0efJm#^a*1vV(E;m={FzN!s&;gaI5f$odP`D;iSZ{>?I$g+9p+DR_OcvBF00Vx6MF zLdmtqboN#0cMB_|AfeP8_TQ6rlMG3di$9esuHHq}1qtU~037H|fSZRtTlj}nlh6{% zsS@IAIkvpqbYf!Q>Bw;$@H&QVYO7gpo5wn47e%p&@t!?@i;X^v(opc8{*e)Ml-Oid z3Tj&|ND}S^rHZsho4cH54Ybu_PWm*+^tDD=3_T@U;aL#eBSgNv<~IM=7G5E~W*I80 zMG4m_BbG-2gTjj5Qc+dqQ1t5g*Hgs%Ae9Adt@Dr-J$G0upY8aQpwo52g19P2v$%pP zlJ`1J+qk8G!_yYtx$PBXkd|HmjHCno87RPRPQLKoBCg8PRO461#5Lp2I4M^mg{V4_ zO9GMU2{C-eaboU^QF)4nb){B@NYcpCiW*>}BouN9l|unG(t)rfX6U`efj3*6Tm8BP z+8p<+(mqWo{I&-``WfgOGH8e^KP`)i{j~6en@>e$N>@`zs3XJu<{N*Twp;*J6s2`# zeI|JSk@2H95dL(7MoTnwP}iyj5a<}DJWpdQ>cfFy@FB2fUJT=EZ}#<2y5)YXn%sn7 zq(beiRsm1t4fJZ226+`^nlBBpPRDc!Ef+5hb(5A|*j18mP WvRsD{_w7CV)&cZktnz@1u zh9gH(XfZ*;{@m$&C$f)eKL`8~^kIy_vLwTZ x+jm>MR{kV7k9;TT4}-^mJ^xA;Qcs`gTyi zF8kS^UK_LU9!)^y>3SL2+oM47Q189>$_m?cPD=cot*$=f=WiC3)&J8ZODnE|LICB` zAvk0%^w1WR8eZP})o{pRGseE`tbwAtUaN E7J;l$-4C{zT2NKh}(#rKO>YfpP_e9l#crKH|w;Fi9M@5Kk6yS zY%@DP%WeES=|$sAT<+_QX2a9^AQc{ BE itE zV^NrAKSCm^F#h6ddfh!rdY?U-YL}=`Ej|U8ClYh2kC=fPOLA-a&GF$2KW|>xD||p1 zALaAy&5Us?QFxR(J^Y2Q&NQ(a(B`azI&2GIV_XeWs@wpRN}N(6oFqRIPU_OmVT_m@ zhgF*!Gk)9YlzNsT2S3gA*kP**{mT8_Qw+E(`X6wWXb0EEQ802xPH5QVkT4GpOfSe) zcZNiRD#{Ocovy^pz9%*5=_P5FaklXaLk#%~26;KI!_mgl5*uvr_4i!U?Z_0(&wHSZ zY|BnSj%tid=qyE5<=#}(wR6LQH@u{)+f>#JX5mg`-Qr y3H#kMs~JB%zoV2 z^D;JWY$XS+^O%^X6!@ycwc~^H6>Ih$_rWOmshnE@RK-%UfDgjwNh7dAGb>V{L>W8^ z0x8~MUyu)P17ucHwo%pN= ^D0X5z#J7Fk R7Gn<=+vT8lOU~<(Ss5xu9!>O!%8e8}VAG_3EZx$yE394c3+iP+(FV$fN$j~y zSD`(Z3w*P;Z936)&n*o#(rwVn!;f#>a9=fR~+k_g3qV z&PZOZ5-FwKNpaV)EpGC|wCA^BQY9~u%y#OZ=n&hZ{4<0uwH1Rslf}K6H*)Z>l^nl8 zWoTlTz?RBI)0sCkqzx;f?|f=wRCa3&PKPN~yN}Y &d>2n5*}SCwQ+#pt ~-%E56N*D{qdNX5cp& z`V33PXBb*NWC`nF7J|-?i*FqY;y1yBvC#UU8(}cFT_MyUM}*G~$bC#E>ik|9u7Ors z-d_c52%5sLPUE9qE)zeg)0Ne*8WrTe=45w0DapwbU~o;5Uim6~F2&U^-#^{hez1Uh z?m~yq;&(9<;$)5X*Mu}9d$BGscTL8Q6Wg7;!2cG;SG=}xcj`r+WA*B%uDe+|yY%s% zAmSdWZI-$c#f?cTY>AA0j+Bz{w-V9jb-wZ$N9u6D;W_`|w5$fs=HN$>F7q9)(;+{oBW04#K3qB~KMnnQYyEDYqGd{5P)t) JiY@MByC3S9zU6H%=;Yz#u z3|e!jC}fA8@VWQHHJMRvb~@k6v%@VGyPFFuYFFr&AP6h&UZ3!p=jsktd=v62*v&f^ zvr`~7dsCCalS^bZd6rxHjujQOBJz0T1Zz;+hd3E?K!+Cv7{k6>#XcvCE%p00?AZF$ z%4+!gswj@%J2!*qKv@^!bn(Xdp8Uad9r_piq?GlFKo(|YXBZUIOC*mG2Kz%;R$S>Y zm_4EtVy}I!D+Ov?^wr8>6-`Bo0}e7W<^WU>A!svgG*=d8nLxPZwAsDX*CUZC_>4)+#2^ z_pO}p{wiH8pI`!2*kvhy-`UZJ3xH3Z6^zrg^DVFFJFjCh5|SQfCK2webP?1jV^3h7 zybZ62?(Rt$(fOWW{^ACw!A9|udwH3J58o-1yfh=|MRu=n*WLD=?K1wkGS+pE5Hjkq z>KA=9(N7UqJ-?l|(j~r9olboiKgb|kMt?bw2pF;yeP})w_tqiYj584lLOy{PwVIXV zy`haq=Gq9WWR+y^#aq_djcYKnKbT>o|Nk*|o?%UG>)KWn8;S)1X`&*aR0Zi(5m1n- zf^?A*I!LcUL_|eEx)3@7(o1NeD+to1h7dwTdY6`vgphA!?Y+)+o$c}Z{;g{XBy-L& z$9T*0-cS0tiaYvA2>@n(JPyon;y5wpKiDY1|1_!-&NJ~MYP_R }hu*jBSN$Z5+FJC-q8 z>}Z5f{z|P=xB}CIudhyXjpJ;*#uXMOmOiFdNpEzhT!cg>_sE(dz53#rSvdTGd&c-y z1`ru!6__<{6x}kwWJ+CrgMN@P)sRE?RVM`iRddjJYZ0;=cgjvTXA1z89}*&L80y*9 zG_)XdLULhE{-8nJo1RP^6Q;8rgo0rIc4gX8^<;fLL%iOmhe4f0k8Acvci4<`c$s4L zOv_(yWA?MiZAMQrVxyD)i^^Hy0lz|{Ge`xPX6 yXc_Z6KeZd!ew|Eh;p;) *DQ6NJD!KYS~0fKRB?3JZhCkYv>bL5JW1QVOUkj z-rd(docm0n$gnEf+N#IIVD<1Z!%}{k+9gzb>na>4_X+xT{w7&HQJy|qS)HuLQ7LmU zH!IR8HnOrsp$nC7;e*hsI3GidGTiUM{l7>!|9-sN8lb=Q r*AmlXnbF#&xnb>-hw-b^E%|ZJc`mK}4W}fVy z1Ss7uAbpJWjd!!&idcIjJa|Chn#uf=zE`{JyqpeI78RWL6W)LwMQoRM^;-BF`0|va zn6cj1UX@VP58g}LMU``2@wJwPqI-fyRRUslu}vi=()^ouU6dCFZTSM2t?Urf V`4^9k2I2kQ5F#dSDC+eEk9j_$Fh4E%Khy{U3W#kGref+bJ#`{YUYW_w@> zwR>Kx;|4%^n4E8hW24ihR=rmJTE6nC Nb)+9vd1>q_=d zlBh;x5thEyKtC&wF0)4SY*`KW0sW zRoe&w)MWxV|1S)ivy{Wr=R!ICuYg0h;dtZxrNnL0nog;~{oAyoR~CUW@jU^>hEIps zYLpybxOox~G_Ny~mys!AuL4?5n5n=5G}WujbR!0IRFKAQ;n-Ax3o^lW_0 ;}E8pC4}g#w2J+EoQ5A>!kIhFzzcgMuUR&6DZ64C=Wlc!sn}M33pTD z^50d %zZJw#J$}L(BD7UNntG^{czdum$jk8GcF>oN}usO%V`=oeNb)_5o z?T*2UeL=&a7J_S3&^yrkx}^j;)hkJMPn2;kMxQVCz%5(VHH}sbb?CICW+dPlNS}C6 z)b9*oHvQ=Jx%KO^wxavJ-54&+9;jA+Jx5OXn5rHp+d6Vm^7}q!8&gnH)a3?f=ic($ zb=QijKn6Nr*3PlibpORY4>u2JY#iUU^|sY^3oKqVVyDMy;8qjw_Noby> i zz1@pVz!<(HerB&El!Hf=(<9a$*>~q+7Z43B1oymd9nmD6-beS_hp1tYzJu^!D~qS) z6P#ZrSqVN$vUSKQ8BsV~^RQq9SpI}g9~TeJ5-0(lB^tFQ^{&aeXo#DDN@5_n2U!lp zokX3xwSy{X%Y?NYr{jrw>$RlSy3j%~D@0+_1aV{a{q_E>be-TcGx|{`I(02uSeEMX zo8K};iY~8H-vaXz+MkY>jq a4>&a87{cc?+Ndaq^pS(ECV}$Ac`mP$9Keo4XfzqoO +f`%_-P$^^fyHbL2n_D( lyHM+{UyU_e+9gv!JtCUgKm_3G${LMH!*k*S z`L1oRwzl=lJ0r8OI&B>rN-P=Ofc0U!JPc*`_;&NKGR&W(fQ%ZtsD lm4Ul2$}~IxP{#s@xQ;T|o! lyVspgx%;IQAuv0^jFS z?k4We0jX7FV3~eYnI|B6-#ygnewU0PvKIpLbOY^z7=WqezkX?S;L%GfWsN+?o15A3 zi_3?+IDF?bHbw%m19M_8b+mO7 $3?DGL*%Um^W07)May2{4_GY9(W+92(~rHj zVrJ8pr>pBMl13S_{tFRO$#bgMv12K+N9E}rVXlh@=5Pr>{ydGV>SjhOA5b_xC>-+x z{ed44c9MFb2|CL@gBFnA0W-Gsc~_oawz@9QeI6~Qx{^@`?mU#rmUi79Pst}Ccx&1N z;*OJcnZMVo5;gaV?6P6^)efBMQU3a5z(g-z@wG9|)S4EFRiOAtTqUIHWmI$@g5`aQ z|3LASaY(zX{do*j+Rb}jG1~{WM{rExvy1D&$t 0@BTYUFNZ#0=iU@GCgC zI)Fp-RREAKc$5o47DKmU)SWoO6U}7}q&{HffsSn91hJR?1Q}DT{s?Q-_mgT{ZeLiY zl04ycGNFrelk%$iVdaziYHOf1T@EsVF3`1074^BIfMH1$wbfx`7Tgf?Jgi(0BF*^l z9S;@LrYR@Qv(+J^(AARKV36|V`8o5Wdn+=rl24>RO>T6rCqA9KAWa!LXC!F(v^Z&k z@ia%8{bhe4iZS}wRZ-3RHr!JO{>qlrnD1Z;wutw0m>WU<|DbW_mg }PQuvqVv&|M&tQ&LoN!T!dH+@% ztqRfr!a-#unxxCINBhfdd~M>!j(n{pm-ebewTFG0FE #YabXhmjavfjd= DpXq(C>9S!1Xl~}x^ahZ&sKWz7GPa8i;jUFtn5vp2mEo1fPQC%v z$dZLGDuL)HUq+wcuhV^R8+=ddQKnQrbHnLk`cc$Tly-+3RZ!FAmd74dO$QFscMAb+ zcB&3}zEqVjnF4U75^+L=w$!+QP)!U6V`g3F_*)4)mhvp#%SPnt|B*9#gRR#fx6}=i z5+RNK;m3oScyQP|b&IK vd2F4un(6;U}4UU zQj0AQjU>kJO~>Bf(6UeDf+fQWgJsZ7#QWaFP0p10Lf4hU`>L)!dtHxTJ?EoO3E|!w z{lX883@ixD!i8>i=&zO7{)q4pY?mHWH}DV2X79KT&K1QDnpM`s+P&DWy#t3p?e1iU zF=cC@3Muc`Ra8CBXHx6lVKCAq9O;QBlZ7E?$~a+i0OsoYOdgF&RcC+W*k2xUsC+FR zNPBLb>^{gBhG-8513L#$eLJ#Q>U-z?cDW&?C_4$uucv&Jo49JY^IyS4(9RtsWU6ZY zfExena9O?d9b(|98O5+8vVX%`e<5PsEIa|wdHXS+GkFl(_cf)m2d0jpY(*muQc86( z&o;khC|N;Wc^Hb^b2T|IAE!DOZ+QQFoY?gEW^8L3rDyB30Mmos>d}+T;uv>PmMpv* zmR=bAL`XSh@4yEzTtT3>lKE`_bVBn2_S)zn (%ZTm-+dD{mxn(h~)(t z<(- Y*p0(cVaK>O-Tc(^ xa%hp;y$vK~eDNX!dmvazFkshyT0y*^)qU5dtU_#F$4Ocl$I; zRis3za$IFfrm8{5;i(eiHe3YI=`lXh!aZ0VNiFz<7*+$T*YnUFbFV;pBo^K)t1dp_ zZJ`14AQ!o~ubyCfFMof{r0T`S%IS0B+g`;pREr9alQTvn$1!Kpp7!vQ`@xhO3%m&e zK4eZAPlt!0ObwK7(O&mR@|_6^66ix%>p4j i=WV!F8ux$f$5s2dlEWke z6X}&wen^_V5bo?t&GiFZ)g_rFf$)f-VaygPz`WMUuW?G7!*P%bWTw|zO74E!z0v-N zcWJGOavnJ#%_sOOAkp)Q;ZIafJT=*xA`|q+Hv@{&9&EaCjMn}*5KoA>0`(i}{5DpD z`Z5 nV7!2 >Roia>EQ|#aaWW|w0`BNgSgE6 z$zx{hWZgv)@=Jp0r9ipmQdS=xkB1(Q6@L5HdR%;G|JBMQ7JaSj6)|qbN@w1&cQBea z)%%viA_P2OdN* ^X=HDU`A9OBDp# zW%{~&?_tB+DFsf-NKq~0;ve5=yqL$ kaWgQtFoV-OLV3($fH4&Ek0&aMh2q5e1MleOrRI`CV@Wf^!bxNu5XvlSCxaL zyj8UNY_dV>i&f}ytJqEVJ$>N0E}K^{;SVe+Y%;qE)m+Pm1Hs|sGZDPvKRUDsBo}+s zLVP`be7PIEp&O&Tu?ij=XYpB|mMiLiI{^JJuEjG^=EJ&0N)P?mx-i vYUQ zvFh$yZ`Ly2s+?K6ZeN1Q>O6g2+}BolMVqXmDiS&q%E?pvaH%5ohEKF-0`XgRIKdFu z3EwJLGgD$SW-w;s(=ZKBDV7np^Mz(Tp(~Bj#L2cwZO+bTB;wFR(_nh2Y1F17>Ctjx z0`$RCo@!m`8nU;n^Q0 3^K}h$0790nZ@)Rp4mBr*;|vq;st*x^;XZ;zrw_Ym4_XBC|%pW1R-hzG)S} zxu;Xsjk}bz4h}Fu&_)@-B>L&LM~GJv$PXhv_r^hr9hu%mCd}`Kx}A0wcKJdx&7~SK z F{jNr^YUWeF| q*b$yuZTgSkJ?KA>bKU&ymn&nQW~f((|WY-rOD^6 z!<>0 hz$KokI`mp^{k Zx6>JsEm=c>O381z*u6D$Q9c@mh(4k-U-XQmP@cXmS*@%LF>DRNFN`L zJCUf3dbSjY`%%nwqhxR3grR|nR64Kpa@;rzZ^355evxpgVwC`W#JKowZ8$Y N(ctcl~z2kSYn_!aRJ}B#bniF)_UEDvWf6nU}gu^+@rWd#Yw(6}s9-_dbzLHkq zT2K7;sP^WMO#RoDHNJNlKWMxoaLSIOv!BPyMU^9i>YO#xccrrZq4ZPl%Fhvb$)e7M zyu*9L<4>|`!N9AR&t^}xf6nWOodfie&2k0hIco3-cbN3BU@?nT`H*gk+Uj?D#;VP= zd=uFIJ=r5Tsmh!e8<+y+^f1#)JM-D|EmBl%)fIzgA=%o?#R`PgPx2YBdZ6Z!DWzWq z44>61hcVHT=lQ3j$VtatA^B&91!bN_;KhyF5Ob+qkTkNF4=^vE0h7wE_rc%`D<*Im zDs7~C`XsA+v`lYKL2u>ggYiH@*ZC*-(&;CW!QP7txuD@=7DdJ@T==BVgWI*Dt2udI zR?_EA_R=JDw~fvD!$!I9`A02y3mLC0mGC#c2&Ac9Ubb2-XJDR!9+e|s**n=zlavPK z!J+&(4Rq3`QtZnV;VGP0ZL`Lrw5M$>d5KnFrjM6!JGe8=;IYAh?kcC7vw*vATeVj+ zKR=%mmt&N B rW*b7K3ZDj;^&d;5z44hfzM?mcLN?vUBQ p+ULTyXhw};El_!Bxvk?71o6*)@s-nm67l<$(`)?vrF*WnZNVYIr3>DjNi z&Gl-`SoI}WT}>AJD)+c~kE$>U>pAj+*(^RlxNJ@i?T!&2t1kbt+U~bvg`Y}bziHDn zjHW> _s`;#Bw#eDfY$jNz2Hj$ z#b&9c d54^cab{A)eHxf*N(hiExB?Dk3y{5~0?mw6LNB{>xxUo;}7Sf@Je; zC{@9DexQ0SqIlD5&;P_VRqjaA&Q$B9Asg8Y3@$UE`OG|0igdDXVajE`^Y`7Ho=Xd4 zg3*krytWbsW*I3Fx1gfOj)&%Q5jDxn6(RK$Fc1D$YTKWsS~op5?rqzji5L&Wl7Z28 zuD8)c{t<(T{D%d}9S&(8t!5rGaZXKvD%G3`^*|&zBb$>Sp4YFIm`cc}=l7+6rU;+4 z)hAkev$`tB?6_hy>AFSR{8o|I5`=poOtU_qD$FE$Z&K92;rxexwOBs7ko!+?rFnl= zNRqVti2mFlSpU*wRc!3NbDGBP_pYN?Kil&$Q+Q&t?;b-$j&WT#^_gMxSw+lEPlle4 z&Ku0h79IYq1Qv$Y$EcEouRsUIL+yn+R2gV-kV*BU^P`(L_Hi(oSp-rV7II*gz*^`? z-E ?|q`FqZIw|=9QMW2p<`_uj3K4J%(E{{EY%p)$iW0}HJ9)3s+ zZQt&$dP3goo2|OwV^Rk%XV>SDuph~{NHSil)a#r%yt2F6)YbcBFb3U {`+~Y;u$*tMbI55Nvyh8l1;SLljKe!`#ThzdrygmJbLDMD3 zv`aMK_s-RJb}!=)zXbA;1&~rjX^2nUhF0kyUaK^HfWLAm8uU;g58W@1hC=QNiH~{B zrFg}kR3Kgx;$5yL%^lz#j|7pkniS>v=GJ-iCrk`_(d$h-F*t8lnywoZM!DeDq`Xft z_&_?F1XqPBKgupG3&~~gaLQS^HR&5XzT`>L+6?R{R&wZ8Utm>J-07+iWW1nZC$MO} zYLZ}TXbPPfj-_l8m0k$Dk2$0N(t!L|D-Ymyt~f-@y&S7Ovj_$)jYyhCOV@`2pF&Dz zW+q7Y{4S@aI1C!lbMDo6UNb~y3hq_jQ{8(6DU?$$ADzkk#EjV8h;!!XWpk|1`Gm?* z8L!Q9IIH>5*&H?c>Vie0C?w)uqO3t9yMif*N#&T&nburOOzT5d6*l0;Lafebmq+OV zlbme-tw~kJU85!U_!i()iM#sKV6@};$~j=>o)yGvcbKSe7LJ4nL32DP-!#y+9v Seb+-X}g=@-L#>DT;4A8O?L#)#@b6E)W z12CVzWU)EV*p!n!$ahV{-XQh}zQpcMf%$y(;-w~& e;AS*A9(@?M-b_Ppl%2jlkrVW2DCtXan zKDEo79}<4&|L9d*1jz1QX+Ngr!qOLwY605?R<4VAxosVQ#^7yGYtOvm-tB(VuofhP zdGk><7YBQ`2;K1|My|1eleEk)KhQQXiL5{#vLtHQG-aRQDBP2@52z(K_&VM {TDjqS9_ r2@ z9&P1HHrc;N9L#oOX0BN(6n*Z#ni<(VUmx4JSlgR#4u3JK;3uGxAQZ1@rsRupw%u*I z5;;_6ZuGSvtgmImUDWeM!DDxhZa1k4X)~+ATXp0_KZ}8Rt-!I*a(#r9YAn^sm)8s7 z0sGQ=KKv(;Jk~0@iT1dG=Gbbewzw;jR>(vxkX#KB!GhXz-eY&q9Ds)juHPC68>qBL z4w2W!H+$niI4v1RRca Q^_%Ao?%#kqW>y;Fm~Ue=CX6yo9mtapOHq-j z``F )5IS4*nB&M9>F_GKrhXM3MkBnXPw&-E(OY2-(RukzPW!>V9~<>> z=Ow$vIp5DVEWLyjttrUATYFUqpHFX2twCvv(&$+Bn)xg{C+_YHMy?{Z#qKMbBStGm zi`*CIrpdy_ShtyPbzaUWa$j8+1F_!LXgT!>mKg`KEfjd@Ca0v3Pdgkv-_jbduyg`g zOg><0R5{@Xq{ZO0DHP9EY=x%aHq YlB$(VB#=09gg^s! zQ_|6DnCVsq&2F}XB?7{@-(ugi%>aZAl5&);?ZgP=%Gglv$R}H_V8M6D42#2fe>pl| zLx=_L$^9#ahi5>6S%_MXW_R1Vj=K8>>O6z>T`F2dgizgQ*S1m5se0w5LLq5Ux#sW} z+j2Oenz8Zlw}P^~u(3hud`G**Q_t?5cf223QoEQx;I^46^7C5|_u&JD7;sX;NAINj zt+M3zl|$RYFRR5r>?CG{o?leqBm*MN1}I;4j{CS-P1O4c?X%|!bhM12-A~0U=$317 zSfph|a7fqoX^r*+f?26yR>_Fa((OoQIVo|IJX*SCEXDRGR^<_x6*GU*_esF&DJL5# zW~ntH`eHlvETugrP!5DJL< >>EvGcEB3!fjPVyoqmGK?n_b`?U>`)Rd}DQ5lH;~x 9WBGw?JT=G9CKc2T zHrhKNhT~UB?N@V?f8=lr&xAf6E;`))Tf(4r42{)TP_4JGlYKek_7!2eHp9@X>ODsu zeOJ(b)@1F u#5gCo*O}a4K4bKiBIGLY4cpMEH5SMdq3;( yedgog-xh?yHvgBTtoaGU<14FAvT`3EWQ|ZnC?{qSEE3OTOeRa% z{Z>-=x6E*;3KXrzn0NvYvIZ$8hKbaDgu@K#PTzRV^Izf8-@o$LKMXwszsIV0neJfH zi@yv8xRPP5sGO+3zt2B@_}_m@@g|MnF*W5&2T$1y& h~P6^7xdkw|Kl}rfr+T`JDQh!6w}3Nqp#13oS!j< z4Nd z?t8q>HqoYAYHI0CS >`TQK##d84(FXQ4MH#byx|V%3VpO0q z&)JRxK{*#rop7-Bce^i%syO|hzxv<*b>$vdHs+ci02hF5w6K5HmGqYi_YW`le|Yh9 zHK>Y2-8z?Ry1yN5{`-#og}s`RZ>pdVVm T}^whWDx zbX1kmINg0aWP}LfkDv1wm!(ApGITCTn)!}aW(rh)E-pjyPam}}$d^j%o=85%_gqnq z`CCxWTgT$LxmSz7-GcwVAP-P_LPUJJN*{EHKm7oV1wH<_?>ysgdpduwV>@MVn~O@L zuhN8TUpPP6Ejg#+?P>dGhnr}yi$;%19tq0%%i-pQ=u|Rn1eII)r!}BRHFqI6jsoU? z)HAy4=(PV&hnsfrMUPP(Zh~QS@Joz;dilTI1~0Ni6oZE7>5mc5*hY<4LnTDNBBZ0) ze>)cX_hx@X2z;~fCI11|gLcZz?MdXH)`z5!$F3*-`I%A;Zh~bUAFu}1GG1}hu~v~p z7D;FS@$qb%QFlTG)uB^C#EXyDt;y|2=7>+FKhpl`sU@QplRH8 zfAl&UY5)!OrHSM-r)|9dbpSbe^G2}#asQ~~2aCrupo1f*?c(1j(6}V4GXI};1HeI` z{#xyG_DIE;Q$K@dT?3xGNnM}gdD>=s`Hz?N3M`^qv3G)jht-|7_g&txZVZ$g-~9jd zQd|J9gp|c606&^OT^iNnbXEOj>gHu@(La68GsT$GHvN`{YJk?5Zn>Y?dPHGn=IK0Q zx?ZvrdSnaXY)bxkr1IYfP>`?i&(9Z&mI65PE`Y&})Mfw(xBvu7>Wrm;c6SFj%Il)- zh&`Z_3!th_VkwTvSb%!L1Wt_|A~{d!IgZ_FO7VPypEF`nfYt*XDtf&v-U*;LqJY>> z27A%rmp3uJA0+EeTe _@;jw6krnkqcC-&A<+zCAB zx92lQ1zCo5hPGzYC3{T}Hl|~^7+7LEKs}g;iZ6I#v^uPlrP2XLZZ1&8R4EtwMnEIg zj4B8Lwe_NzX9wut1>iCI0Ot_R>tPF{hM$QFfl&XSB3%Mppurx2oip;;9!5?B$n0jF zpl%VR$e+NN0AyZ3S{HFIO o!kF|N+V`ikbCf$u&IW<@0hlG4i5tpLab1L>AW-b=t8lT;`*j &*a7)`QDklc4pl@Dv}n6v^0#J zX81dz1*~wSt^P13!RX1B&@M2%CbULgle5LtR?@M9RBmzMMO=LycsQ5|Dulxn83;%w zX9_k=yf6 7)}9Y4Zl4Wf5^`mO0sxy780whOBeM%+a5ZB`nnk(N z4ltGcXUhvW057+Nd|kx}aF`sy93AtRlu@_4V)nn7{&u?G!Cg%N_gw1$qUVOwQt&hA zXG^-(+DFCwLI<4$f7nn`rh-4}TzG^fG?zG5Qdl=gj_6B0g9A;(#e#thrNasOJEDFg z4vFF(c3a{xxeCUcM`54$uNTZd%Ha;7{Cwl~k=WFv>o_naV({Yg)^JfySDKi;p0Te+ zNwUvuB5*5a>aH4#?Wp$&{0bCsynt|Qd{fx~bKd{wO*xT4DBEkQ>Wk6c|I_QUeSSWH zUcGdZHGq8gH2*tj dZt~U&S|2bNK9IVm@rj~VcntpCb&H88K(uUYFQtyk{2e-5 zfLM0?Tpyp~t@QYVpVyY{ulkk$Gpf?1d3x&GkDQsreU^MWKYD=pMiAFMIj(->^WsEn ze)hI=%*Eb9_VUhZoqAMP=It5@2IBC$oJhMx`^;~x`Rd;XK6Gi3@%nm%3x>kaUeyK=&3m==|=&Qn_Kj