From 02f7d20bc3a8519854ec007e077087768d97b943 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Wed, 15 Jun 2016 23:34:50 +0100 Subject: [PATCH] Fix #248 Add Servo and AngularServo implementation along with docs and tests. This is a deliberately minimal implementation designed to be added to as we agree on new extensions (better than making an all-singing, all-dancing version in which I get things wrong and then wind up making backward incompatible changes to get it right :) --- docs/api_output.rst | 14 + docs/images/composite_device_hierarchy.dot | 2 + docs/images/composite_device_hierarchy.pdf | Bin 14029 -> 14649 bytes docs/images/composite_device_hierarchy.png | Bin 47420 -> 53677 bytes docs/images/composite_device_hierarchy.svg | 78 ++++-- gpiozero/__init__.py | 2 + gpiozero/output_devices.py | 310 +++++++++++++++++++++ tests/test_outputs.py | 112 ++++++++ 8 files changed, 489 insertions(+), 29 deletions(-) diff --git a/docs/api_output.rst b/docs/api_output.rst index b6710c2..7bd888a 100644 --- a/docs/api_output.rst +++ b/docs/api_output.rst @@ -43,6 +43,20 @@ Motor .. autoclass:: Motor(forward, backward, pwm=True) :members: forward, backward, stop +Servo +===== + +.. autoclass:: Servo(pin, initial_value=0, min_pulse_width=1/1000, max_pulse_width=2/1000, frame_width=20/1000) + :inherited-members: + :members: + +AngularServo +============ + +.. autoclass:: AngularServo(pin, initial_angle=0, min_angle=-90, max_angle=90, min_pulse_width=1/1000, max_pulse_width=2/1000, frame_width=20/1000) + :inherited-members: + :members: + Base Classes ============ diff --git a/docs/images/composite_device_hierarchy.dot b/docs/images/composite_device_hierarchy.dot index d57cc2d..5c28394 100644 --- a/docs/images/composite_device_hierarchy.dot +++ b/docs/images/composite_device_hierarchy.dot @@ -32,5 +32,7 @@ digraph classes { RyanteckRobot->Robot; CamJamKitRobot->Robot; Motor->CompositeDevice; + Servo->CompositeDevice; + AngularServo->Servo; Energenie->Device; } diff --git a/docs/images/composite_device_hierarchy.pdf b/docs/images/composite_device_hierarchy.pdf index 6579003cdab8ba889bd2c7a74589f9aeb84b5108..500833ed6786c815bbade6e55db5eef6ce99d4f4 100644 GIT binary patch delta 12039 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 a-y3tWgCK4^3MgDaE)HY>KvGEx`M&^+n(2!G delta 11421 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 diff --git a/docs/images/composite_device_hierarchy.png b/docs/images/composite_device_hierarchy.png index ef7d22692365f276660422c95789c07cd8b3a105..96623f40c3517056e53aafc9940142e2de759d0e 100644 GIT binary patch literal 53677 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 %+jbuXo98Yya zUJs~*KiS!HT>9fmIOBRnJLGjK)zA@H?P;GoZho}4t`osD#^iI0_7{AoBAX5ar5!9Z zyVp~T@-nqYYl)q?%t=UveQXrV&?L=>VRUi$)=z9+jku2Scwpw~c&N@scaLUoxMjg* z+Rl5wAgt%tALfaQrG$|3Iuw}pQFB-f|D5lN%goCY%jnZ9R5LL%6V6l${qp4}+=}+D z>|q5uHu~NL&6Cf7VvPqu2GqAg-<1wPb|4}x0M9f8*c4XaTwx2@3|zCf=ofw+FoPRq z0R7qkj_wJFPyp_kggEIADS}c^E7ZRV7nug2>=T5Qk)rX>G_;HWJ_XnKcnHD~9RurC zi3WUg|IknpJHKqE()9W|TuQrMzkSu8AdyAmC8S$gd@v7I*sZyi7{!qd|u?J4OZKEuu9pZdFgEA_ieeWn%`Kd3kWVnCYw zti$&%C4xrMutcr=kfGM`!6rxKRsJE9L#J*`y@6jVy#Q4k1o(_0)@Rf9RQMtIBB)F3 zu8!aokBrSb1d9E#EE{iD)pfV`rZh(ZP;3zdYsN+Mii_FO($YZdhx-Yu4dcnQKXW-i z?s|^nl~hz)N~b?oI!Eu|~@E<{fxaf_)VLsR4wkq^!*SfbKt2sa9lg zgF0*}$C5ZOU4%*#ZKLLZ43w1|D79d@;riHS(*2;&Y=90!jHWR{RZDBks6->Itr0L; zN2|p>BzKfs9wE_J>l!GbP*G8NBWf?kN$!#0{=cgntpPpT1hC;=lc$JPd7M}RX<~Kp z&6?ZMT-2gnB}ds~+?)6eYHz$L?+q30NRxX-K1xra(i9L7K=50o22$Arh|bJ>Pg0My z=ZPlrIKXCgA4PkW55{j~2pRBv<3~dN^u7Lpfh_>lg0xBifJ8tY=5NJ9qDUIg9{quJ z-5G~VO(Lk4Y_?Jcb3GX?bqCa}vGhZ}%!&$i7uqI6cFWNp9G=4LWU^M|6{M<(h*V_ae-grT)<2vI254qFd_w5<%*P=Ry09l(aOz^+rmQzTVns2`(O< zcK!Fp5;}T%|IeRqelb|@3b>*Nleqx^C)64a^-Bc&1@0dj9^MGp z9TLK{J8Svn<>g&wRXhpZgClC%+FgL>$+t5h4MMW!7Cjz5KA;Aas9#3^1e`0k)8+%f zVF_#qK)B>vP~sPl<#k+Vo`3+0z?pR4n>3c>!P}>%rz@zdw}Et#6R5P=I68`dll!WY z4e|3SJG;D^+Tx-d3Kti*5nzr0((6!10S#lM(w-hrPWr819#-!SYGV1y`O>F+|9%}H z_bS<I81AP0>yafT6Q{dc)d(r0U0l*u;&`92ql#)WkoWR$pkcsm= zAL*Ua{sBr|@rZ>2E-VIH@bnI#Ys7sXH5#%5vI~UJhybMsXwzRHlN26~TU1npM4*&k zD=+Z>)e;1+Ko0FCNLc}{daL0UGXg;y&h4mFLFg2zsgJUBSS`Kvnk-p^=fz5a2$ErAz^;l}12dqW9qqo00ed4*8YZQ5?p1jg8L%04D0@#s}l6`TDp@ zSc|dyG=L8G<|j;|2EfCT;QrSh<9~VM|AeWH2fRBgKv~6odaW?8p@VCaBA98wSQ!FM z!ScK``p(b?0G8?u^m(HE5wo%R1iEy(+Grxzw^m5F-+BQ(fel2v#C`tcL57m$+qy!p znr8qA)!mKBq}5dmaUZHiLr(Y&plxxx9TudBEXg62ny(7Jzc({Rw^e5W>5FR?$$E#QfF%dW<;G6#~4<4{`oSe9_Rr4L}Xh}aK0~33hsdbaqxsxhWWVbUnZ9!QbCR z)IllHsCcCJo89$)Q)Y@xSr8Q?V_;Dc>%Uko#}ofwLlhRi48XqEKne)LlJM2F1c0oP zs%o+M5EGcoL&Ss1jTm*RqoFP_>WXcO=eA7+yC(e!xddT%(bBfU*Sxs)@jYlg20LCOV9Kw1(;pz6-X$kzUMba(K%O-puY>j)pnW8KPG2;wYX*AtZan<5r$He6 zO%B1~7eLYiuQApXSd?Bw(%I+}K+6xj;d;PKX=H4o`}GJ+K?{xzr> zOd}HX;6s&JXH-|mLlja_R3rr>TzCW%^>5ObUtGd`m?v=i_H78}?Jl`ekZGF00SVcR zFcH}D-jJ>%yzLKDSTH2qtEw)*NG1P`ROH`CC8ed)GBf=^$B>67JUdY*e*rMx2LClR z1R9o=MF%7GN(eJ&ffL1^(6AArl$TIfC7NfA98aOeXRcr(?x^?9hiIs z%?Oa;FNmvr@hY$Z@keg%qsk;nT1ceHBJi%C05J#Y{L5uRVJ&ZP8pf59Q6YHlNQpTC z(DQazhJpdD%)|5Op#{K49mWaTkZJ1G15~^(n3}-xBBkb~03ZM%BRq^SGdCXr?p)50 z8O{I6)Q}KZ1OWx&IkN1?Brd*@!T(u47pWP|Wkc~lqiKT8%{zrm;CME{0v7)_AOd+$ z9|9u0Ht0moEfzG|Gf`1ph3XcNmH+E;PY}}|N(Xkx?|fZB5FjNXZD+Rz?#Svy&3$Za zY=mnA6=;gcy&;wa8F5L;cKaGDWKN&^{EHqAxjHo(>34L5{&%bEG%5yn8OlWB_|Qrz z;`LlguvGyD*8}iuWI=Cd<>VLuX-t7+=B8ryK=tk)DMY^wiO&Ful~YohMTTtxm|A3c z{`^r8_nE$f_&>?K!KDD$1cbtjOCnY!1mIZFjJ{qd_25WBn;0z7)YKFr57Z^k0se}- zKn$p~YH4djC`m{WvAK>!L)Cb2!0F>cK!*eQ#aAWU-i~%CcXRU%grgonD-(fSW`5my zCGzKYOEkKG1(S!e*ZdcP2qAPe?uieY+hame2bC1U0@Cp~G6ZVjb7kcS-O%kAanA@NxzHu;+VGL@!i_6!$k6&A+mhz6W&5KVLsX4vFIM=?s~6?m@3+R$na!&NQ|Gq+G+=hBw7B)D zF&g2vn;#^XQND5f^W}JTj(lJ|OtVS5xD2MHDNP>Dda^g{{_8WDI_LKR7B_6LZhBwN z{#bh@Um1=F;e0-7`15p8BZU{GX*eA*qr&GCv#(YyR|(7_F54Ert~G|8()6~%V^pm` z2>bu@(;Vb5>Hm08WG0UBpmBiVbqh7|%E}88uIU_01YxxBqFKERo7j^kZ#{8Ut12LQ zi~$XocJl`2L+V22Ys^W-`d7sv4?ysip+x=P(o+{N5{*h??lM`=jg z#u-FuyMZCZ3Uc9p>HD(%wC~-y<=uW?vAEM{`l{Xso74pvxehT z?L~t~U;S28H%|UG^0v(~a0UOx#S80mF2S=LOO1%oO!r@wo~i?!g;d!A@t==xnYkLM zdWtn4?R0Wa5nc17a;`E#?!8{AzP$7tZdkh_vsd^y zSi8xYjTvnnXSI4~&TZ@%S|kJAY;Uv#ZrbPx2S0GrwugI{LczM&2#n98b7zxe1_n~T zQU%6+Jr?Q$bzPQKgG`k6BW}xC*=y(O42(2BT~eN};O4DgSyfRZx}!2_etR_+{c!4| zr#}ChzTIS`J)h^$8yN$mJA+hYb${P*FrK}?=yF>8pr1oWpFT0Xoi^A%{LI;=o=U*1 zRiGfMPVgyQ#AB0tPP<~4&zADiC5U;~O9a+SNV|P`-{K=Sdd|U>DgPL^E~|!R>(Zku zMCBL7q^CAIJP9@0hvQ$bC!Vk*pajMw!$#V-1B7E4>rM?>IUaub#!_o(g-X;G@|g41 zuC83{KddzCsc;uQc&3wZ$5Y7i5+5IJs8#(nOc}EeV+l@M>3P+zsy(+RE?hWDtO?yI ztDkUXE=_N=w8thQaqk-+Q1!9xj*;G~`{XYZ7@VEgWyw<#n(;{-XMHW8UZU$A ztu;RXXp&H`u_IT>cMl2Ma9-!Z_8`9l95Bi%b zzg6b9)k#Py;uYM1$6p%dkN@#}y2Zi8+j$#sH;es}4kY=E_mCBG!GlZlYkFx~7G>PoQq-?MxyV9weDdou$bf zuQd)=pP06`IB;`&=?)>8pHIHvRvY@-elG3fM=L*d; zq$Z*g6LJTert+}ro7~TdF*->Naj(mmF84&nA7@%N=I`kjiu>{^?@4o+D|4A^G7(2^ zFei_=(QOTW54XF;`q%n*n4)~k`Kg&lrnUXa)?2!jSPM^cWl5{+J3o~(sQ1*k&##dh zis2~lWvtJn%7@%rl71Z)lRJV3_a5-bE9EOTut%`2k!z2JN+Q%(8mSaJi+-Nrh1k7Q@5^bKT^Qu`|=xLT>+bj5en)a3N)~tQ(KX1R| zt7*zU3kLelC9sR%c(MqpTMjj602-Lm=`LM((9q&dtE&ok{g9Vaw|@+A{(;lLNxkX6CP??_#}nH_Eh3dcth1e>zT^YiVF@g*VS8 zCZ=s~b}Z_os65%2hlA%piA5X{O7?KwiOUq3B_ZXG*I?5#$;x+Er=GigeZTxE{T7*g zRp>4;p7q3FLIuj!X=mXjY7N5OmpcXpXQZ?1&tJZy2Sk#)voh{LJh400o?Uu(e?YN{ zC|s;TEF_`J63SNi!`X1_UH|L3r!lDYVR?EyJ8XxR$*&ndN<*}{Bce5vUMFZsq~_E6 z+%#Y88@WZ05GyS%mB|)!0{|=!TYuIM?o7ofN&YKD2t7H|-KxhOJjR@pKa74df*(&! zFu|muxED-TOrkSK^m#An@NVJ@#5OdNy|1o2kIp?ie1=}1C__TeGAh<9GxU~h|3Ou! ziQ_ujo4)L&yQ@I}2b8snSUV+LTDkcwJc<5V&8LRtYwaFQ0oTNd@D^lMOi9J1%woa` zJMYtDqe_n|mVSQ^@8{s?%P1yLwwJc(U@AMY+IsWn3*o$wNSL?f$Xw%bmCg6>pWxOI z7QpO&?BjfMXR?0Dt1RbMr5iqM&J`w0WUE0cX|u27Z-dcUpiXbQ;J$0K_$Euk%z85` z#!cjj|32R4@wQ0mN!Mt!;ZXWzU+lLuts*@k(;BEFOpR_S@B;`=)0f9z^yG`BC?xJB zE)xG0b5KuMtHvWRdC=JBx2iztWS{ieja z9b{@bL7)+u<|*imjb9w|Q%2tHcofshdDHZhOzgIQ3vadSeYT5jSBhyI`79;)jNJKj z4|{2>1Ox4spu11Rq=&HEHX4W|bkrp_g;~1^FK-_`?I%({p2I*JJKijwCFSirRlk_Z zPh!6MYNb8ta66FT#Uh(;QL@`|Uu-L|c@kBzaT-|X zQF}lij zSJ&$EOh(PsPE>*q+?8e=P{ZM4D?{GgxA%9;m;0-$_OAng@6x8-;C5S$#H><3&di3S zp*GHeM`Z%q$Hemxfx~h$OBR8hUpi#>@3jqkJyQsdn95P!LY*f>Z*P@yyxw}-`)Amq zP#RUq_88Y%mC;k($*gj1)zxKdbI5eHBYS$nV`@<&;~^d16NbTHLFQpuJ!N!9YM;^l z8wYQxhkyAARxnS8EyEyo23XBu`@4h7}HA9 zvEnQe@)}HpGgOjQ=w7VPwz;1*RLp%;LhV0xZzzA*A2!)F(gYWOV|_FMBBCYbyqQO+ zMkfzWn!w%DNK@a7n6ZSh&n|r0PiIv*HX*ek1pz%4E(>cn_D7wrVJ|d*e(3)SQSf-# z@!CQd&69*wYPpbgY}ZVuI+MQc%#G$qd5`v86ip-BgLWUrT$HusbuRPeuR1Byftppl z7KPhm!6(17x)Ze&t)AYUw_hfClIuycF1ys2PHEV9rCc7u({8>)?{62O*}0slos&?A z!6I6(I`%Q@#zezLKKO)vQa{*jF!KhSRsKug1;K3ABP&%VbPD%P+dj4*{>n^pUur$I%_isPPVg6Em+y0ru&%UPPDsWA3n&j z-O|fq(aKO_j|p+^X#HEQou}cPx+3G*xSbn&E~hECax^2p4#`l&!4T;T>^9NL^L4py z2wg)tW;U5M>3hGzrujifmCnI)CBB62+|ify;^J)jTYTv7d}i z$LtKE2IPkf=DScXPgcA3N;5CC(Z>#_&nGaC4>WLp)>*B|K>Bn@`2Mx$J0ZO0)Lat= z)A3Oh6yXlxwf5-Nd^U7T^4aWsM;o%;RkAOhW1>_TuYCP`c=xg}FG|d7v}o4Q98lp!mgFM?Ni?5Civ^0qovU`Pza7GvUNSflzJF)#7rA)Lrsw3^rJv&xBFn`Y z>0JDR)RFuZ%GHN`9-7uu`3aRy#&2njvLjrLtbbXQ+?&~G4(>Y{8K>#&h`F(0Nu805 zMHBeBMD}*NW&yA3PS&BGD$~bgcS{!G4h{d7h4c}o)9!%9t#2V?DVxnHbw|crz z;+8Ysxw+9S8~shkNzIK#G#Q@(q#oUgUuqPE&dC4GmVEKoWMrwKDlwl+5bd~a*>?{%^>o-PMX_pq22qYS+?D*3ok&UieG z&(SrH<4~^N+i-|v(PrixRHOalbS|AM-J^1xL-Np*Q*3AW_lv}&r0(){#+4%K+OnAC zPmu=~F&omb>)SY^4ngLx_Vf;Z_CTb?-gTRn7G?1QpF~aT>!pEeUas6bC*S191kCAu zKAS<&(CPja`(XD*@t%d_zK!0tk0zJeFss7O*>3IFA2wfW$NBBQKf3{qvGbFFmqjyo zcWJf>{C9Riq{*#}KFW{(KC1NDBQGG#jeQ2vM`TxET^Ff zRB-ymRbCw(w95>?=`pJL^K$?N6js@ZB#o(!uhwI0Zu<|ki=gxF#7*cqv<>$Cs`{d; z-cysb&b1KR4_S3W*D<^wG0b;B>bXOSVJ1v4v`GkXmZEc5C?GoV4 z{K@bCoZh`$)S)5P1<@kQQTWYp-5oDy+`ybx+(*8u0reS9Fr=U+pKSOq+b%v_`QE2Ni(s+ znDerqR_iP>=c12-CBc6O^kIe~xE%jW&S zMykCsDvft*gmsS&7KL)umPTCMyoH78)SL|lF21Z|E(0`?-(9dJg`O6(f;$6Wn|bwPe+5S?BJ%J zwGQ6nyE=f29yBb~;#1F6fzzp%3gsBx8h}?LzKprQavymKS7uU%oT+n@q_2VV^3fb891x!X{Iss553Ouck@7uW@p(fm_*fQWI-Sy;C-*1a=VPyzB zZ)?0;3uVLRZ*F-*N6|bv26x?5s38`jaW6+;PoNC)sDwV0YPMPwX>wDh`lPl z{h0dR2TX@PTwYf154JKJyqO~wde2oouRV8u{oDL^W&}i)6a_j9f`Sz`Da#8%1ucXk zQajjV2Pb3Rpz&O>f_hns3G}5$-hbLqM1hiiNpXqY6B*rxP)L;I60F0vBu9Y~{@TL( zO%U#VA{_EpL-V!ObZ|~6fw@y4-E+?VGE>0)@~5r?dYV463gt9{U$>^p^{w^s^1uc{2pT^%acb~M$-pMmQ_<0Pll56N zHF)^p{BLGJ1MNk={5_N3VW`Sdr@mg+ss--i@<^5q3xj9j*fkA&(SK+H#IK37&V{W( zZEyH2l@sDfdG1i=98QG2^rI^ksL)&p_^aI#JB|ys){}1pCf|~jDAY^exWu>T-ti{@ z)AjtE>8yLh$6e$3sTEO1F={hWB@bbMQO3 zaY~LWHSA>eS5)CpyZ^rVX!V5z!c^%uTMih=uu}Tjg)QLSWbti6%|FZ^mH+uH70`Yz zG$)P18>^BvTm1wT`vFTI=t{2nA1$9y@Mcy{2slSWZi;igwlz`t8dqrmXK~%G{?I)4{&w5oul#%CWYl)p`fmux6UipL?R})2 zmQQL*Z{>dUW=}0ukH`Wh+fD$d64k&!mL_|sPOaIi#_ZaVVqdSpLkh+;; z^q{L-%OiRsYAA|)x>V=k>6b|3s%Q^0Cju~Kw`%UV&{(m1AI9Oh?Rr(|eHl$z!%{W* zgavkvMRqv5ap*BM&GpOI%(z{#+`q6kr%H#r$lhK&;Y!25cc#PYZw{NM?X{2Y<$IrA zK@jlqSFs;F=^Y*p@ZaxG>xeO{F`~5X%$9qGb&OeOvZ`E|+~GX$#+IFMu2OvQ z@i?i(Hz-QN9S6y%>Wav$2}ngM50kkWM|jTmtV-43VC7;g4z6e{-C7_z)RxzALJ5Cp zWz1wx&DMA9D4fr2uj@Z>&iBWn@Xs5KlX;Hrhp;~{Vo32Vv)-uRs2ktO#>sODi-D8U z%g+v8ISSM;$G~w19DdZRXD1hop1WCCSTu_|W)*LC?s?Hna=HZGOcT~SsO35GR2?6P zvdF}}NxgqPxp1TbwuG1dPUTRI_TVuSRO~Kuz?vi+dkK-bEXQ_QSSK(}B`czGZLd8^bkM0FRP7-W_g#6W zE-w%lb^bH@aUJ^Cp}+EOCv|mUmHGmYQ`WLClq2z{re}n<_jR-b5+_EPTc0|XZ;W0L~ZS}LVT(c?eDCJ(qsZSc6@$PF*=@6nKcteFPS2SdJ)J=?Dg<~VBC3lhp-}Z=(;gb{3-Nn3xqz>#6 z0ps&)XNHe&+Po#6MwK1>J(wKMU*gGZb35-Q`^nMd+`LG*eqn(Dr=Bk`d6gF>ggSU~ z`oyX9Ph}GvVI!)2svT3t8@&99nr=DP_tw+lo4*<{h~fNHQEPmdIBc#u0f$tg?uE71 z4>RCF29G;$FHQBnTqJW6TEW$<<>a%VZ1po%qRY*)ZsHJFwyOg3cZ-&t! zR(sCo$u)u`sjI_H6VM()RXw=Wp5NNYhS7Tfy8guLf}uN$J>)#Vq-fRd`M`e!RLm$M z3BS$KDo?ks^`+En`fwrNNJZBss2BIiQDHKK6J5@UVkO6NT=CP?5{fmAf`;v*{jK@m za>l8f&+&Oxn5n;Qyb_z((nRAsyIgUyRJYw!cm8t9@AY#>S+Q?&1+Fu6z%iVQDXY_; zP3Sx9xsaxM#2WckrkCOPRGX*CA;nfJc&B-7eyXXJH)Csk2b=9^%6MxVJDH0!ZY;$o znrltsI3WIKDD&jPjOxYD-D9@Yun6Br|OO zPRKAAx#S6%8<;*Ly1!XjiGYl=RL;2$49 z{tt(JAI^4f9$W$RG*a-W-!DG2aS?n=Pob8i{#hm^)scpIkd%o#dwO`_QGQV(Y-61* zUZm!JspsT<>$I{@meavdlKnCoW?=jFLtJG}*ah=VRxKg;E2K_zo+VRtJUWl=^LZXi!J9 z6OZ5!Xd{<*biOcZoq5{vBSm?YBQ3dQdwN0TdsXVjouf#c-Rm~Sz?61$|FPGPb<@e& zjU*|ZECX&hAh(R(^l^)HiFe$PoHdbPR5uj!;H3QkwJz%9?+d>Wn{jmDf5@pp;WXB+ zyT_+}1EN!P`5VD}8DE;;+CBTLH=*c6*UV5F-|AI?3ss`HJI_Y_B;B;^`FLheNiFNd zBm(`Yi@mE(ybAfNKEQd=^TYBl@^WV#yt?lo!pr@;eQ&87=}Kq2mp3zK?^J1WB>k2a z4vphbFIv$AMx&dG;7+T;{^khHJr2_s+B+hGgX ziJzVOyNM>Q*x5>nfHMu+S~mWsKwY8oUskDvl(MvxYi6CVjPLsnGKP&ZQFe z?g#8RRK0P{|8h&R6t;)~o@1f!!o);h7stQ^T(S_9FJ{mF0C$i@G-dZnB-=iscb{oH z!o3|FR$8u{0Q=JLzB_*uoFXb}PXY%zLTNDO#qw-h0iiC6xc^{~Y%a_-?E80feOCu= zE0^1k0l`p3IkaB2_!0`dok^7Ibh6?Ip3aenDp{Wb&ra*#7lX!;ZxqX(@x`+01QM!uJE9D0!(AiH|z-UmFNcPZx_t4dYKxkwFJ9gnhgQ zmve6DA~E35z|Kk<53iSD8DESIZ}_II`9iY}nl@rWUSm57AzF-&hX6oP>B_39diH$u zQ-qhj-^|3qxfOkuUQX7dr*!xm?_R~my?j;jr$qJU=Edr`W3v+ZsQ(qw)hjbj%UGAOig5jt;bEaBLxObqR!lQ?+41>u&52)PS8>-w2gwV)B>eL1WkG@`qjVGc zgy(N`OQW0g%hisza;Yf+kF_UW#Y%YlS_67c&Ty1Z-5qTPa_I6HJRSwCrI&ZjCa|9s;NXEEVUJ1QGXPJYGU ztaoXCMwrxzZ!hc$$;rkG33j8fkSrbozbUMZowkrmZc(wa>Lp?MibbHfAn;{R3Nxjk zD01NBR%Vv%UH!5*59+3Ku9cMqUVmkgbjZf!m{)2XS-_LK`GbJyuK0oLyiHw5DQ8AJ z6HC2?1oM8WgMgE%>v^G*?#ElT8`yY#%#Q=M&X$>3bv0{~c%oWR32dyt+Xp-ES+96C z88qs%y69e<%dyz#IaD@ZQB+^i*R`tPd>*(&+M+!E`g&=cdPUv4oKUl@WvxzBVpjoH zNWeziv!UVRrHH<5`ZsDXl?Hi6BGsq)FPK)wKAmoB+-x_$j{T#El|AWmigpR#&-xFN zqh&V?q%|&0uC}HdYthb}G~c!0+!-6wo+vQjjB91c(wCLt#@32`sq`gqVSa7b1FKjv zYa~*>A$p=vtCu~NRNatI&^oG&cOr84UIRLVUGS~?wJj%Wt<&f>H9CQE+Te-yE&M1T0K!6Xs%fQ8|mx+ZI;?SSl#V68Qu z;1Yhk68G&=zwcr&9(eim|D@l8fwSh76r)^TeIEYlDmlWL<@P(QEGr2 zX8R+}MAdg-)tWst$qk$2x_$ssmds%nH@7%|5Of;cs+60A8uX1Iw>2r){Ig65h<*+R=)V+0zdBd4Dv-x19QWY$7?ReZ`#`^a4#g*w_B-ND+c;Cqh7A^^s8e!opy)7>Y z9Un2gf?^zFrS+5P6{@av6SQaI%swD+sydtxAAA}eSyPZ42{x=X$o;va^0^)dv9ryT z&L9cD=T5u1S}9F1eWe&%tu7z`^oKUuEd8^3;bpDFl#5Rhp{`>+51+aFyW06CfYYcI zE%>wsH)x}PXsfA+OZ>cjZZTY+9RC`5Zepi=5 zpa{Z{WlY+H4b2}n!Y6N(4`}Z-bgyGD^fWDcx;u{Y>JfaL!Eo07!xTScz0so_R%iaC z!l%FL$LmLm>%_y0D`#)c^mKH71QRc08b|Zq=iCjN8B(>IJyums*fDtgc0Y$2-IHj@ zzfgQ*ku$P~(|CI*-;q7LO@o1&(t3jX9r_X8>D*LOnOm|*k$aeA`> zec8C`w2MZw=TvMoLgTS^)u$Dg~$?%K6u9?nR|H=(LEIM;-13cBGYdzfmdD61h`n9vEv^nnaLyC|c zW$gvCC!*D@EOYGLVck#YjTbuW3g|$e7yes#sV4=Bw$Gn8V&ML3V*LEM+q3`cKWYr- zBa;oY+W5O}DP75LN)&JC&DC+!t;ovJGD3Eco`T}fJz5LD_z%n<DEszpIP4Cj+D;e;q9VX=~myQzM3siudO;0wpXSEqMmh9 zUy5h#PTq_&xhMH)F=(xac_wyAYx%tJze8k__F73UC68_A_a*$Ev-qQ80qUJip${Uz z4o!M_gn!+4rx$pNI4r(k|+1Ykt?E%lliOX z#yaNO{mI3Zo`Q+y6WMW*kxKP|${E#NQvORRnTDr*ef&&~G%IU_c#Y)~fpz&!j-eDJ zfwkSUt!T~re&)M-k~?>&3l0rx?!L$OSpK+SUh&4}+dfVrn-gCm^ZPAn-JsScW*{UX zFk67)gW&szajOi_!+rmh5To3lIJu^)hv*HA{jUj0GmTNJADmM@t1xzgg zDNYHU(LwBX!&WTi?#KFPleO;7z;UaX{!CBoUIq5`-S8zf4sgv7?v+VH`*N;YVRF59Uj3`T%$`S5VM7nQM3j~BJdgX5s)cSXYic>J z4o?+Z3V={|`8bWtibKv-C!phE0$Bp+nMKx<0!af8!Dqt3gNcQJhy+ry+?K=JPJGa! z=63eLs8_^*X002yeT($b`r8WNR1(E;T3c;vG+rS606u^IO#Gwvn8!j?T->&W)G>bh zR1m)s;f5&6@(;|`2|*i%>038pxeNe`UcK3Hi-vSZzeK}%vmOIDcwXdm+1Q$bR?0|! zBKXiFQ~Z>MlQW7y*DYjpbo5%!(BNPZP+gL&PJmicBDtktb?1je_5LoVqOEEcb56R26%;(F>n{bKvZBK{E4(H<8klS!NLy(XzZ>&&nq!oPdhG;=pUw)N_p3N5~q)nbrUe=kn% z9*#iuqoWCdKPvs|)dQ%nfnsFaC(U`3+YF@0{cwWcB_$;<6L=z4S68X?Bv1AJq)O0O zD)Xf0v`-&sM3#LA3@2I0KAa~B== zJ!K$B4*kt@0}73<+tyXkEQfv{P5Jgr>P53Za`Bj={DHSpbA$e#CqnK9X>NhFMjVI; zF#kz|dQXX+q1_CS<)Hl+n4AbAlMjt{o`bYK(4FXIGWs&up%2JYJa5L3odWw66{d>W zd%)To0qO4{E!(ae9RbAbpFw6EX=);4(P-kmERoCWZtqdJV zIIYl`N)0$s&^+lvBEydWCf@YvP4!ulE>PKq_5OlTe}H9q8691=!U6=&V+)FK42_JC zo-e>Ter9380Gt)1JBgP4fb!{@wWs+eO7pGF3iNtN;IZEpkdcu126RV6H6DnWUqVA0 zpi4_^s+1|nqC*#f9}srycc5v8QT>OjS{_Gpr}Lb3Q!v0iXGRDzwW$SEZzJPnXn?f+ z6cMoZJX_Iqp7x`OJ=^VvwpV&U$-JF-0__2SF|F|1Yz`W|T*t;XhBj;-Bj>>%2U#Gv z&G|Fe{;gceqXb$skQgid=yBjR`M?j29|{U4fx>to1m?{y&dDb(yC$Adb`#SxGu(EI zU+OyU2%-vKV<558k%-0~;@?giP0|zSXanwa2rs*`5egZ<+rJs?rXGx?Vm4F?oa+^k zE*W`DE&-`O1UNGrtc^V|u*HGwsJafWG?2#MMi%O1@*)vl|EP)t!uU=yyeToc+vX*t z5yF2Z1R#2zRHfd+Cm?7Ep%g#W{&c7g-PQPA_jetMGVF)69a(@&Oy;uq5Wae0<1I3j zn1;w!39ba0^TQUww?K&8f=C>L$k{{B63?gsT6i^}j}2N_=c++u1m=&)Afsl>>2_4z zEWFw*^hhuQVS#fdad7c?lg`N2;Muu38)!5Z3QPCl>aB9{;xlc9l+XVDDd1F)A%Gxz zrX6%x-<`l~Q=!#WYq%1Qo#-_nqqEV^nkra~VX8Y&Dy7bL&WndWk8;G15?bA_1a*F*x9?d0Dy6(iHs51mN} z1>Cq0PA*WyJuU(nbZ=l|w@kgEwJ6bth9)L=wXX*oKOuC2aT9XCeFRae#Hb(lZV0}R zo|HySY%DP{X~3^(lwz)F1n$2L7s)wON5)eLv6aCwV+uYzhLu z0_-s(t$-?5!^ns_O4oxMVYWfDCB$OkQ)vnT0UbuoTs5g^zfC0)EDUG_f(H>p%XO^; zmw@1;>JhB6qQY>fiaCrKQV!6E8^P^*fX#TStq>;Pp|YZ^pdc(JCgyK3!b1%#-=m!c zMMcG5pvC_^FK_?f0BDc_{DJpBY?Jk9KvX55R)CHd=S-OrnTFYWk`fY^z5;dKBX70= zeCrdm&_Q^*xn&cd`<8b9^9VT@Lt15JEC!j=I}p;}YQAs13F{7t=uBHBOcBNr0Sf`@ z3H9~$un-?WPM`=nN`Ssa3sfu_lR-FlLyW{>A_D^gFcAhj^uACBoeF4E1M9qfzr>Judg6$SQ!z*A=<{EXT`TG7KxvBYwE=R5KgV4uo(9iGa{A7cO_ZDjTXO zh-m zzsIl|-h`4azfQ`G1H9uB*V|d&24i~Y^DJv+wJthTWZwx4t{4tWVu*6s&|m1d)8E&3 z^07sm=n^!mKvL7#m=1T^nrmk^^5gGGVv z3LrIn&eW9QvE{G331nfLoi5H|Xc+{XA_|J!=!QtGr+j4CAizMuIrawKaonB&v_e46 zest21U2|(|EB3r5qJog7g)0J4H9&GIgrg#8qxPQ%gje2e7ySmrOXwdM4EDzcv`>WP z>lxL*`q-jG07ABw``*AgQ%V~`%LT)>9k(AUge31@d6EjrOxA296dxAP9rHd%0EE>7 zpu}CxErwsru=2|FZJE)7cOaO1>6M}XgfJSWK1$nxNLAY&52*nW`~1^RYa!vk4Zz32#EtCx=Pc zk55jH{nbV@_c`dHWXF=sC_!^bb!bcjtpOLnFcmxUe0>kY8zP^&wlo`$JIw?lY6D10 z1{NtKg=ueZ@4I*IAWwLQS~CJ7WiArMVUh}=ZzRlMN2)~FsdkXBuU4am@q)W43#buP zfQ2Bvra+2-8(8!QjuHfTT`z`tRwwI{K<>dicLw6B4~TZyKvOClQqnHA9zO6?NGlYO z)Vl`3C6HzfK%fSo4%I<3y-dHG7Dk6;{p(scr zQX(NpOGD9?~m_{bH2~v7@NVqx$kwa zHP>8o&Ffm%9FDVUI)ae*g004|=_j7t;Lee!W3-NPjn*2MZ-?#|u7icBBU91cK9?O# z34eoL)6@rYI|=4T>?>?tgEOR!`$W#nuF=&E=B!-S{5b22O&jHEs!OxS_LcM&bQ|S| z5nX!;0ZV}qTtt{&LK!(6mAMMfA9I%M*b%}EbgP$V4wg~sSkL+J=}cAFy604H8Efwl z4^2@2AUqXQIjlsYW_+|>*>lwIhK8i*C8xhO6VY-6-r&4uR(c_lFahUQ_ZHi)!J~Pb z2_kNjfpRXtJ$6s5TBmbF&A9DOfI17|4{h1N`tYy9_j;}og6#JFaXD_|8~j;iZO{GM zO!_$YKDVF_ykSe zhaih+hh^qi?+8h@{7-iDGidnKhm!j|>T*k33Lw7LD{A4$HM!(n9FS<|lzwE%Cy3Q{ zv?wk6Vafg1^8AgG+e<-huePU8iDOJ+Y8a4`B;FXbkj}NLH)cN+eaO^3I$i!MA_lOR zE7Sg>!8h{G`{EL(a5ESd!HJnltL6hsP$w7kKxy^i8(P?!_lmtRkk)PTp@O zTyVdAmnnJdQaSQxUEOyYnPDt>V$XuW@io|TR#~$u;?0Z2Lib6xDX;FD8h-JG=hh=G zcJm>_wQ6e%<-7GHRmB!vAI@w#MDsh^bKHX^j!!xt|IC(n_A<>zZGzhiU5N4?zQ#gN z0NWi6R>qa@62*Qur`1Je%2QNdRu;AW{V3C9ICPJEbvinpv8wV!!+pt{@-6Oce!hW1 zC!ujcjGqU(lB8n|EP$8kx>=ruk-leUAN7;mO=+s|H5hj)d*VdCTj0(zI9^&SiX)0| z6{3D+cu$AwdF`8DDGX|51?<)?9I?5Kb(04wgXLKFPH5n2Xp*Mb*2~392TDk{MXzra zD~tX18jdk>tg#wPq@)+Y=3O!7CGHLXK}tbHlBIEqbHqnhlYR9(_{}ZL$Q8W%zaK}~ zXdG_|SvFWcSOY}i?Bu)uJ_irS(X# zbo&>#@65T+p4Qiy=dFLN-+Rnis_8UUbh>^hj;Vc89TD3%1qJuS-_j{RD6mr?pVz3% zP$pNqwB^+ukU&7OEhzAZTJeOgH6$>x-* zCI2OCDAmQ8g){roA&5wa`5v*>l7%J}Kc|3{%#z+j-J3V-_$Sm}v-#1&ZCMWw%H)x3 zd~786kD(X5iUS_zRV{ji%YA0>_I$MQ_(^8Ac0=78qMFe{doGrjYR%8bqxupD3XR1W zNRzK*|^WQWR!W7Wj${r0jiZ&Z#5PyJ?~xRRrT zuVDX6UtH+w2F2C~aHNBWyoQJvYw)>!Sa|ZSjc}4N82Vg7 zvB`+(t_eH)GIBqwjnir^ky3u6D^0=a$p@-|Gpi=ORTVQK8~<6mWX_^J;iuR>-+uXR zHE!`tw2of&L~yYq(dBID!5Kim%)jQNau04eZX1q&J{9x!O{9D4Xwk2ShT=7&;f<>N z!DR*NS1#FIk3=HAVHUr48ZS8cm2gPGl~_|LJrwy6%-62EDBdV7W?6$cfrlkj*KwC2 z26H}aAW&UeG-COo3#<0tt+h_x&7>Oj_XJ?-d=iFO#|x|}VCLsD6g4M}7Hp*SNtvA; zGDEg=dmT|IJm&L`^IREH|2ck05a|c1eNhZ;SGDWEqRJbI(_aRZuqbyA-d|ef!&^;Vy7Q3wmx@w# zdAyTu6DC^VnE~D-t17M;TW<3?4E~@p@QD)@Nq(kIo-b7U=RI9?chzG%W})w&>> zwFWKx;jHtpEdxjSYH>jev^ zXJe%`BjU1L`}O0ku*DVsI@4p3QiH9z>hguEvg!Rf?Zd^;z8dkwqk;~t`HcjuYpc!I z23}2^&6XwZr;TtD6+`8PqA$K{#9a%WELi{H0?-h<5-99$)NpOhB^>&tRdfza*V8d| zzpL%pOb4IxJ!`c=#pG)ouS-z-ncqBcYRyc zh^KFm#3;XA^0aZUcHeKkCBwY>%rdP`+}o#G`&2EuJ0|7^WxTCQ*x1}7*3ub!>-Mky zK`9Fg+iOwEF6ldELt}!2ppue97upS!Fx0Va3k5snOR(qTZwM@4M<4hfZ}tFN}o zjY}i{E)GTXf@crSejguK6!PpsA5XG(cbwF3dDttsQOk#?lMth z?lI2=jEEEIJu!+jNFW-n3dJ?H%eXjwX|neGHw2X;vE^6aY$AHQkM z0N8z*bp|E_D`Eev*f#Z>Rr*)oNBPcDhM0ut~W zw{`rjMkM;*S5z_HLdYepQtF(~KOJ3ers@vpW8+DbqR&}2XLc@V!UGW==!#`_icC1Z z!i(lp{iROV$2!JeF$5i&UMYz5{p~d>S+;zk_ZE3{i3LDNX&T>9wYqxGH;5S^q*<8T z>N`HIuSVd>_B*)a_mfwe71WJ)b9Qp(cJrSL&KKmDP*o2T&(j*kIaRU;@NLvrH@i-J zdDH4|ThjVGHz}z}&?Nml>6S7X4h(#tjKl0Tbk2a#ouM7>V=Ga7pl^hz^=~sfnW&?! zx6&t@Yb^&TSY8 zJSJ%Eyqi_tCyX|L_u~?4HS4fwFcKL|QFo8UZL45z;kG2Ha$r?RRr;^F9MA0`ro+E{ zQxxMRNg2lFWXBSI_^AC$i$Sd!V^58^hI>~mYEzB@u|~&AV;X7EfwryBH}FdZPYmxhIYHf ztwc(md}5wEX=2V4#S2iM@bu)ghTu;1$bafBJ=lRyOGdHzy+4clv-jes;#8Y9%=4DK zCN0lqqH_gqDA}*~nNAW(+H#3KsN1n9=f-OK(|B#{@AO5Tn5z9}i0(2hD?~8tJ~cmy z&w3a$;^;o3GfviZYpD)qGUeMrNdY`EjhSTh8+#X{{7%Ie46G9Dl4?U69$m2gW|2HW z;^%qOo1z#q1E-SCXa=PO)eoxBZ_}<2-5Z~F%hFf*%0BJ4-tVTH=UfAF^R4AZgwW!W;Q_M&{-&HL0Bm^YH;z7tx%H4w>YvkmJgALV)7ao8gL zE9u*J-#8kc2gLOGw9w})*37glsZ4br24#ypn}%f-2qlleZz#;| z`{<1cf3x+7*M5ECV)=eR`&c0%{S6_^yGF|#xo?`-W`v5DF)Bb!+AK?!)+44mnUnGK24QkV_92ZtsX zc1|xY3UtUtX0TmG*)Ng|CsspnS0^H*rrukaV5(jsK>!y^-}Y2XG~6z>33x>wubz8c zS6seJ+8#EMbbQn+%SJ-__=*M_VbvNAGNxQtg93K0LCW&(6Iw}`gN+mXV};Z?fyNHM zyQyA%E$%zRj_BK%X?gMf)5f98wUKt%^d$nLBxM`n(Bz%J#j+*dmNy-*xj`_>7>0SxbwtxuAu7_O;fLaR_~qsQ{dE0-g;!x z@p7+t`#}u<^{|iMF=kgc8Fla!EHAg`ZyQOU>uBGAO`Sil>X6@vasaLdYY^_@v=3dB zz6-Mj@MZoopldrc28XNHsq&B7H;cbfz?atxKi%Z?9@^=B20m6N|uV^0@uf?F6Dru6(b{|_}TMeOnIF#e)1RCc`y=V zT~q9UCEy!I;Y?G5-6_T=m&x24%u&}z+7&y5wobEF$Iq6=&fBM?d9Rm`UEPzhf(X5- ztY&ApgF61g$lH!I2KzxD9a|*O-M-!|X0kV=CBp&g70zqeTmst%D^*yn;6(y52yL9} z;TMfcPxcz|2WHD_~Y7H?8O`1-;)S z4flnxOtMI(O1lh};oUal>U;dJ&nb!5u<`7hE#tnA7-;CEvF-cfaAaxsDO$A}Rh`a@ z0pW+OXeXt}MF@RNF-qyRO@wzozx%>RA_YkWhh|NnWEhZxiJJ!B#uJ~4Q!HNZAxi0I$ zQgugr>Dyl+i5ID|dX}v0IAS^m-ZyJRTBxbALaR9zNSB)aJRWtXO);zMv>d z{A_jCpNoNFWC{hn+$dtz`wu~h1%8SiU(b1~SjOBur3+c1f6~KWS<26L!!O6gP?6Gmq-8zY+d<&_>}o>0u*1SaR*F^KvO8sus3FxG#DA zRC;iL_N3!_UePu9;v#~3YwD%w-nnYib<2vbEoRDIqL&l&t`QF@dNU)>RX?9Sr2gIc zw`NDbx@v5J(x#!*B=(Zg8=2E!z_hdH+C|N^xjtk`Kj>N#=}cHz_PoOXYnd(2NRuZM z0j4-I2ay$(5Z|z4v`H(95fxh=5b3)`V1N4JT($GMh(D&muBjKg;)~3^9|a%8{9Mhu zw3rMM61?dd`7Y@B1X2bV{$(M7!|R*`vDYY27&oszzy~Ds6BijUaW40GFB_&VFYFRb zO947UX{e&0RQ-7SCjGHHmw%U&1ImEn16b!0NFEQHu(?K1!T|LKcgVBX<0m1J;eeBe zg0y=qfUzjdD+JWO0X+wz0$@@o{y~DND+q{!@GusN@N{g#Im-*O?9Dn%(rRj*04@NM zi|S~fwEThgjgca6-m@7T0bsKLU0@Fi(9i6AO3%pHq1P@@{0s24gn>bN*XrNx2Al$= z90Uo-a*M~X9h)f6lA~_AUTR6vl9^8lmOLz_~Hc)BA~ee_#=wtRzDN608+kVID&_a z&H%swU@UCR8~pC_+2p_;ssdD#z^{fgG=|NTf{w1^v@A8%3*I;m_bg>W3FND7D<@8e z0YhqimiM=S0&Wx(E~%Lnwc3-64!CZE4pW>JAqY4B-I*(2FKlyCYJ-MIL_YtKpC1Tv zuAOOPVX1q7QL*1VkVp#w(c$k6-Z-ZPwEx^lTr-Q180t*J*bY8TV?O%Cb+(sqxo?O? z7T^s~{Itg)YtcwM=r%9+nTqzM=j0stU+0Q%)SB^QpWK#_L(Mt51i%s40RRIHb_s)- zLZuw8i@$TAA$~b6y?n8iDPy@`9Hv{^ozqJZt_e((e6u_tD zJ)+;Gz*Xs=9)G0<1TAtKXJ~!Ap*Pfg zE6{xP^_>S_cR|k&txjo_88)K$@ZrO_MFSQHQWrQJ7*%`(dA?u)383M+0q@E+0%&j) zy|aex^7n?3ro=!fYXn}1fk@Em(eUSwXlYvkgpUo^ zdyMx_qcN0uSb+Bg{-*(aQ5%>-!Po`>vGcxgd!YDiqtHH>r}6dSIN-b?l>LAztAJ9~ zr4%b4QT? zVC)H#r7LCVu}^aTZBW`RrcQoSQ#x>V4^blCgV`T^NjV3hgIQ=x{uy$Wm!3J+va+(j z!8(VF^l_$KPU(Q4hZ=G}iGNtr^Y!o;claHHUONG>JVBWECn!`yTYl4k?X|SF?*7*h zMBgBc`w1X2BgnMhy?Yn6Hn@eW^!FE{AWy3qJY;7*NX?^&ON5{ht?qix`s2qB)P2(a zC2G^h)(;Z?W58zRp8r*~h1jPNWmQi9X^Ua|;8S3vy6nYFF@RY>d67<1yYU&gBw9>B zz{90q@jpEyU~kU>WnVZ!++7c3lT~a-bm3VkBG7+Qa&m$|y2AEu_=k$}wOANKnKw8r ztP%Jnz$4HEDk`eR3aXpR|NId~z&sQY7T&gI{m0TmnoLObPY*YMSb+%(Bk1Ad6{ie< zRUx{|{_Xa}e4BpY^Ob@8F|cYF{@bkoivMd5bN@_O`p@CCAXbB5{ zRr>du*IC%guw4CzB;pDT&40$ZKyK^qojhpWf7zZz{WU_!e(ly(G+dqq$|o}^oQnk=tl9>xHm4vr`@@0HB=B;mh431@ui*ii;JU}i4>i% zcw6rCyA8sab_{l>LHE>78`J$E#XEUMzu|lE(eKt`-kc)}C8cqm&||xM$6!HNL~}i8J=t+qGYH7EQaTD~o5QNMMK7(&f!`;U_1{If2Rt zRB(mL52;F-{tND7d~Tb2l$`z@ps#f6@)rixh^wPsmbya*0HEQ84#EDc9#Zx%Cu)u{ z(G|s=cK%qHMHhM%8l_1hQLBR$JyEspGm7pefP<-NhlL=$VCg&;#k=zUmEd)>{Ev3@ z3#-^0R@76g-gGeUXMSW2eKF~?p47^$UWH>wUe|H;p5)1B z?)rOM{fM}QDT95lz>t*?+*b4>ES@YIR(;6j&hOGod%SE%rC@Rru%=yw?9lwZpdscpv6D~lJsCZFA^VeJfll2}?#u=bO~9#9e`Nuh zF7sZ_b>`y2Il^Kn5Xl7@TG7M#_YU}WaWZ?YjKpg%{=#X=E8VPYk-J7TAE@Ler2uqK z1a#Ijti(k8#SYR*@cKx8lwYVkC*kNLH%Kb2w{TSAc9X1k((ieNLpr(?>z&qWtGiB^ z?48AYK=d0m85xWDuL<6_F==^1O;P(U;kOhZuZ~u&px%0`zmyHzm|R3!m+p}*GyI?V zA`g6$uoC)Uf3@+vcXWx%2Dd5u)me_d-hT9y;5uEl(D3H?{3S#nCuSWoc_!xG9 zN8aD_qkUgam|3+MRkeY&dzA##8nG43Xgtzol>jUg_V0>fHyoNg5&68o+*T`292|dp zP9N4@R9W@zKBIT?J{^uOzJkK;5ym)pyGP%u?Vat7-1p8t8mXG$um7oAIE3RdC=LZ= zExXEaAu}-PJPm+x2*JD01HX~JcQI&J1JYVF5|vFD;N6yE2!wP3!ysvmKph;z86v+i zE$;0Z7N9P1G^~Nt4MzYRkmjhuK<)k|G`sgkju|8=GgrqW{cfNzm$@0O8#He%w0~V| zy3}X&4v2S0^bL_EslSgrvh-&AG9NaCOKOs)EQb5+{a!}8We;S)kay5Rh2%yz2_8qtKAbIzd#gp2Qw)IISMZYGR z#wfRY*-`aY*YJsDTdjZ=|2o(C05CE{Rq?UHuq)DS*KKxRGjsbh+ z+J!?DeFswNQQf>>;EWs)TY|zB>c01%;onC}=*vbtAtMPA%W2~mlBQB-e)s1|uGXSE z|8S_9Z`;OV6ywD4mYtzf{w9N}wj1FDcQo4}>xz z1o&RjE-|o0R0fTK80&25@IrR5;wuJnXTC%=YI};cj0?~#f2u!vhl6JUjgBiZ1Wn|* zE3KuDdkjQaT!$f@VxO$B2AWj^+3n!)WF#EHSjRUbj1(688h3d#;NMq6({DD@=k3L` z?HbWd!-zs2DLpuD+9-mY=j?)@BftXfS)~V$SxaMgiD&>SZz0z+)wfYX!_N99Nlw(d zTWt?VBELT~uGU=pG=nCONl?Yk47R%6D(*ZSEbZH3Fn?^xZSOKkzqs}1#;Wq{8&ZI< zO;Z-bWu&Cr{Lbg1s#&x6y02^_ARkv9pdLT$JzhwJy5fO+;hr!dj_+6f*Y63uZ$A^c zX&p$gIo)YD=-6=Fo`9oiqXad9Vu;dWmYNUdfs+KC`nz&+sp$}Aj}{BT-?g&%@mDr< z=(mXmQK3sOo)bRujlb>j8X57wIr1K#wLKIouiXAMg=E(x-%ih9;f09i_^T&Dmgd>1 zWtrGlx2HJKEx?*4)fHSLYP4k^YO5&^B;H@p3L2*l{C26@Fgbo=sSFb#i^g@ybi|mP z@Xrzs&cYnlN;bEYaQ-=NfXd*PW}XR**U;f@l>$4bT}XT7tnhQQP`h)Sfc4JtRmC~9izJK+E|B}y5rZd)7uP)1a2r_u9fP*BvQc*=o-22g z3=BD}v;=b+mc`x9On20*KqS9*!<*d%O#pqY%)V7AGwxui#pj+wk&fLaj%#HL zSXsyE%jERdN*)|Cv-m>%qn^FPgN0LK-v^F|US#8}DLHmx#I;|}FfPn5%n)Q1#oUr= zV}4_)xqCG=KxZN+ImbpZdBoNe{s7Js-xz-%!W%;sp4-X^+$@+lWEg;ZcxVOETArWH&K=rQ#%ggYNUW{r$jxpkK(?G-C1aeth4WnR z@s6hdJtcxp6n@e^Y*AL{xm7M9(F;eu;UsL8_WrxfRYgaY?knlJ)&)kcXi`(V1)P<> zf2B^J4wW-k`l|b`zW$i+7nX6n&h`GCXe85uKKW|bTLc1kRz!eLmVeB0Em6QI*6e-Z zyW@jqWg?q%@MoyGQ9>1??C+n(OpHb8i4N<`kIiL`JagOF;ph?vS2WS1c}+$_@WM?E zk2$w5$13}l(>qW7=YEZ_B&%K#x%ueP>*w_v;Tk6GvtbTDL@cz1I(tXy)S_QmI*-Pt z@Z`)5)2!^)?})4qE>ViBknrb|D!CVk*M367WMjK|8#l%_(BsgCCHaH7`pp~HZi)y+ z5VlNpaa5HlG{jwwb0#zMa(C_hs%%yMm^6^AG2BhZT==n}81rWn=Y0N$&=~x@moah| zeOrD<0jz><;r+y|?mvnYbl>SEx!7!RHIC#EMXdM7CR7vO`m2n?E`++Gy{3pklDV0t z&9L<83vM;6IA`7l^Mt<0g$@3LlT+o?R$X4s`_^MYMSNQZ&Jh?zA>J-;&=3f(FNT_H z$R#_WL6fLQ0}FvVPZ}4#u5-!`WklPW>x{K81t4?xD!S>O5@fkn8YAPKkIFKYxiE;m z%;?%z_ozNT30AeWIi)u@itjV4Ow5Yo9kv@IzIk*@w9Z12&G=GV?w3QJthc1i>LB3< zrIJseMz$0U6gv|_^3^GY%;n3Q>9r{5LMc_$*@&|-KHec zK8%;`QK55jjc6(FFPS3i_xmReJ||p2?b<LM^3-)DBtBQm#7P?{+dNmgz_sgwVXc*4P8h4Mo`r;%>azJF|g z{JpO)sBoF+Z>o8vB{L@WFsl+sc7zTdE%B-%Iw0{JyC7~>;&^3LwI}HT z&+{$PiE#&&fgG}hl#1eqysBL_jw^6vc&``l=7Il{&Zxl5k$dkcjFV`iD{YptO`PQi zGWR`Ra@+3pqpe*wq|p?k`Z>Eo-uN(9O3=Dg1v|^^mr*R&h19P;9)7PMtMUOCyA|IY zv|V#@t6q(44y0a9V{ujqu3@8jD~i$7%8&wmY_xYRbh$XA<6d_V z-{juP`@E%!7HyWx*zkdd8G)>~=H%Jr{SJ>~29oe1_&M962kv3EE#$X8z&u)6x6Q5* z{U%YlsT`PQ_(8mb z8LaezwzN3iYP6LsYbzE;ZoUM$(u|s-x8Eej1oOt0XdF4~2kZ{ht1^@yHFPVZuZ6|U z_J+1oRy%L^ujJZHyiy!{Pjod7TcK}JPFJ+F>PsL`p5ahc6^l4gO#0Ol z(sz;;%bg!aPWG~jSm7bRoPLQ3(sagq`xFSDT!>%iFXwVEtVy?(GQQF`OG;~MrC$74 zEvavE$vHl3y<&R&gx||QcJ;lI8$ai}nEOnaq&Zu`9Y#Itv3OMF>!ZpOsa=xDtlZ?c z&-C<-8wci4k2sYmhGNMP&+!e#v|^D7N9AIYzCK*)Lcua68*1EpgPLKi2gqPvsj(lo z40kH@`EsrLW)Iqq9Ej!CpP0U9FnPi{`J)wIGQsAHCcndyR5jN{qFH2khB5|o7%w&7 zLdV2O8asCD9FAc8>1$K(=m~x0(ya`mzK%ZTlG)Xr)%9Bj2h9VktG9$Iuy`D_zg*~Q zf2(11bu){O&*-2!IGM<$6{%P@7PA=c@3|+{k|8>kKBl)pYE$jfI*gV_gFw_iBrPKF zD&XsFWp0oyf?bjJLjZaE&!X(>zbM;oKBe(|bX>_e&5{K2Uk4v{JDJJfEi^g^& zojwrn<)u$x%Wl4oK&TrLC-eB>CXcM8D*ha3P-jfL5BLr@1-cCK4 z9HoGX{UU85HJUB2;=Evj6}Moc=5jLGt25pp0v0HSCmwW>v?c@(RI{!*-SPc?1@Sp( z-eu)Y`eZ=Uyp8%4dp&#w^?45$iTbF$_W$;4Oc6;{!(vg?&4fIBymF+5 z%X)2oXKVbavcAJ6G-!`)TatMZclq6xur~kpE+-BG5n1bU;lGnXpA#E%&reBfusAzK zlXtN!G{`QV*V#Jeow5J2SN7*7->v{#4tKo*MKO-e-TLSEbtt2)OjPWPtllT7!YdHy zKKIfz2`pwB^?Y~;aDgP89&%WW(%*-3V1kt-(42?iraB$?H-1)Csld_BKuV~p_Nt;0 z)zHTX&D-vUkne}T5ebHxta7rlcnja*o6o~S!}W=%MDFgfQ!r&(Uk2n-1CBS=K@;w7wC2bz|c!+s$#ppa0(S?QlI6q1O+n z2Pcq<8xKeQN&upJB8M8{-#qpB^oGs;q(%k?Wg5SxwuUNf*5;2+lcny%x45S_mCI5f z(cL;@p|Y>9mZt#P1=aQUVbBqeuWH^t$GCRIVWVW|gtWR)@wo#OgU+>(gYRnpydHk@ z3-lb4Ha9n2T*)wRl)$03@`=r7im2N%FySJ*^WYq)+z+Yc;DDWDr%^Z_c|Y?ed`H0X zKXvQ+Xo;v=9(!RmhyidP&xedw*;^+xFDxt=Lb_C;f(x#PPA-01dF6L5RAk;Cfov`` zM5)HfK9m+^WZj;)(6_8u8vUakB<(;JZ9fK)ke>zyChyE(O+L^%^VLx7F|33C8)qi!X8%vq{tNf$b&bDtbOc%T>v$r;ym<2VAo+LVzAf7ZttCNH}#xIILl5lr7TsKFo@#3h|7j(z}a=e1%hpdv+#^o@{q*K zvwRh6>Xgi?a^<`YZhH>EsKKP}+*D5P-i?~u5Bp|#vi&J!mXwXVSSR=}!DMJI?*VE> zff%UODCqrcm)eE7YDil3fGMr9m1wXE_E=zipHac`)K+v3c`k3_Y&5pbsoTkhI$d{s zru_M`D^4a2Zm=eSk=3d9K?%yz3clyFzJr(`V+k4dE_m{9mBbqPhZMJV%7GHcg&p*P zh1)_d^dhJg%vz+Hjr8SD*hcgf2J4h47F)cpxJ$z3Y*8gb?=8M(B@-5pn-*fKMw+=6 zNXfAw-_a&26Wm81z?)LF|4HQi#qhQB6$^fyN{GR|=+zTm(fEsW`&zc_UgsZmO;S~@ znGSo&4GsFda#LCT3WSWoDG-P2Eu}2S?9nWL8Av!d{hO_mcJcQQg|kJrh;59ZxGE3o z;lD1|JdM^@r7LL?^Tfo4f=(nrl?d%;Bj?9Uo8#aV^xQ6mCnm8jJl^u{or6g&+LR*J z)-ngH`ZNbI0kl*iyfvm?HEjA-wh^U&7V=joua}?HWhKPe)1un)%nN#_aU}blCC9v# z;=y)r%j)(G+0kivHHZ4dfP(5`k-V*}ZzirsKPB(q^rRA@uaq;t)W}#|OwBAy<>$38 z5+FZcrsm#h;TA=bt*nh_0TRND5o8Y#x^rC9Fco5!9g9 z6Y48)f9NA-c}=5C(`t3HUr-{I$fE{=T}#w^C<+b}{bYlv{u?{C>L6om*^Ayxv~b&tbta41dt7)9!ba7Jw70dWKkWIM@5vVx5|imAk)SrJN|j+3t!4Xt z?KXK{c1zA!UMpGZD(bS~25~>eCvtRT;$$(2V|herSxsrnOV9M5c3w12@vQk6vC=nY zBxFO~B908D$b{U=B}sy&@8HTlFKg)-<3X%M?Y%L}m!A1knVihHLgNx*I=PA7v6B2T z^7TFf{@~V_afjWGyAzcU6@rU@lu0zQlF}NlSHFmOK`^*>YJ`Uwr)qc5S?9oN8?PF2 zAfoHDDrsKn%r~(YBe`GNmb%HuMFa^!>F$>9Mg>G#L^w1^N_Uquhwkp~?!4>Z`;GgJ zasR*fjKM(n*?aA^*331ZXAuAl0~P;MYTY zQAtHq@bN%3{0{z)X7f(X9^5|$|9K!v7v};l5;?q8bx^Q2c5v3SGeU57c4jfN`ebjQ zXJf=-ZD$g?6smx{Pv8qgQC(@+rnITn)8!)scDa&`_86GL$kSx^i&i- z=v-)jC_+prAZx{b!GNBU!nN@>+u@z4e?KMl<9B-zF?(U_x(}bSbyF|Yk9MjX_VT+! zI1L+x-4ja;3f1$J#o(XiSPp?|1YGb5-}>^k;ye69M&}X)|2_UCA{FB?_^L{N;*oJV znY6P5k&)E*0+NqPLS$OsuCX3jgD>fw4>6dj<6(B-%fN_%OtP%LoY4MzV)d*Eg z=(8{2AE)GbX83P?l>g2J*-(~OU=}TjQQhZ=B~=Irw6ug@n_mQ2O%fBTRLB!~&z*)` zAD&1AyWGXe6Ui}P=fPLq;b=6vw!~j;O~_9~L<*_&SBsc65}Q-D(5m{Q*mj2XNAxC& zOv;EUOSN~ z5Dep`DQOvpoX9_?cXSsax&Kk-B-XiO7`Apa2)M8-=HROp44vMV$(9&-`RDTD6K8L_ zjf)(qY%hx#x9PW>n)Wh}&Ba&h2Ly0gX|Fvv`|z?9d5iD{^OfFf5xhjN@AL)2@29O9 z&-W)J&KFYe9@x+vJS)K3kkETwzjK)oH@ZJyAEwI@^KQH-QcnAsv0%CTk$Pf79iFuJ z`OiwnE?4hmq_lKuq(avV)>;p193Ga0u40M?{o^`eNq)zs&_2y=Nyd9wzAB3yh!=2s zOt*`~%0bAnnsf0iSlq6J!}Yeex3oHom3xb~wMHJH=u^~SiZlhnDD!y$k1(<>Ta@My z6H~`pkctGyevyf(_tDO)11SMz#u&4;^UIz!*URP&-;pewzkLz2dZ%kkuIDQUP9CfJ ztp60|^MGNKrmDx#N^eNcAH|o^BS*&Lq3$Z^^Zog%=EM0CQ`!~9R*iC{>x2H=-46O= zOh((o815~2I26wrg(HEOCdfITVd}Ek*sSr$$jXvVko1Mu9UweiU9&YkJN0bzP&YX^HX4ESdkRiQ_BfpubGh*H_=__=dU+kltf#y~IwoeM`T_Sn>uKm{MV%bk`TEOC| zNF*ZP;|9OcnJZlKnID(TQ%4IWZz?ao+|92nNi2pxEFSC|aO_8Na%XPwk}+rtCR$p5 z0k`{nF)KaXtDhzLo0GxzCUi`6&zV=aR+|vPjBL)ntNd|(<37a?cE@x!i}qm4d!^zn z#NJR&C=$^pz-$29gir+mF~=|5Zj+C>W=1rDhS_o~7UPKhS+E$d<)c?V%4CIzB+zcX ztIc%2nrivIZ>N0xfywmSieweEq$78-SVpYjjv1`a4 z6WeaqEmO}6Wf29_T$YOOV$qeork8+zG=BD3;Pq^2=&`c{{UNV|eLCFz{VzZG|2W3~ z;swpK!M?YnP3)SA~gc&gVsV`63 z+c`XdYqCn`$izEE`~q)oaVKS(B?(B+U=^pU!?N_9TP>q|cjtvjq>Q+p(#D!@4fU%$F};h6{A&C{K=e zrU-LJ0w*ktyP}v|T3Xo52C4mrUyLRGTNfcVg@{a!a-Pf0$ykvp6L{mo_O?ue*A3e< zOzbRr28Pb^Can)2UdhU0zwyUT*Ql_H7jW#P5s}0u$PTrB zk?Q(TW*8Eq&ubs#g-y45$drCjq1%bMzP^66uzNWYW5i$vIXskQ752vSHzVN){Y`lr zM908TJzp6SftQt)<>ESV(bfr3t8?Qf6LebE5AW7xW7GYMKqHqJoRpM=lpQgchJQc8 zk0>TJQ5hLbX(&sb={nCd%xRaU5Nxa&1k0)NIzuewoJiNBRa`v0=FUjQ9gXN;0{1aA z%O=tDRL$*py>X(%gr1JBa-E-rg$3->SZ}0Ohaty6jk9%pJWG9-{p;5cU@(}&?sN>j zLdJNN0R8)W=P17*biLoqWikHP#AHo6F(N5RZf~}3M|C9qW(X@0yp=Y|<7cA}%2W{p zz2)Y82tkJd;aE-cX?vb1C7)-sLNIV}*7g^gL+N%9iHL|EK76Rl6DKXSyS*J;QzJN( z@!tOYee&U+S*r#x9tLV!TH3ZyvMygVy#2$&rq|MyE} zWhIDHY{Vh8*N0tP*0b@ni7sEKr!^&@wCS(%Xn;=2>&oxwnO z#-sQy$@`YyezjWSFGOF66T-$^17xq^u0FM^%9z~q_#**}<~s`u zrrXiCPO;Qondq$uzrL(Im)u<~*(y% zZ~2ZJ%JP=Q=ik~jv)46HwDZe8jSUtVNMyW^Yul-q+g-O?w!Y74-&NVyS&+F@!8P}4 zuR#thR8LP2ER^N-{f=}dY#D9+?J@!$V>FNC(W6JXnpN@*^7X;;VQ@wH#W*%J`UTo$ z%5``$rc+|lM-KF94UGQepZHhA;o^_wS_t8toj+)&aCYD~>b<@=+L)?fm5yTi4Hg34 zbu0SsU4C1h;9Vyzcyes+rxuHgi{Rv7+9WD*1-D=YcF`uLD($;Lzi zvj&dwk9rxy(Q3~S$uABuVR%9&znZ6B7I-%69tNBOox>fHii!$+?F9|Doxt!H!3^d8 z&CqC)LIVZ+8QW)YbKk(qFA})s13jiD;ju`zU1|f<`zI_8S+I|FHM`Y8;PpJ#v%&uU z{y;@`|E2bwOqOKldme`{+U3<%4v%vi3FwP|8%z}W8J|sZId&~F(Cm&L-nnkz+t(+{a^TbWH|H4JDa(o?_cJR?G8Zf?3XymsPUFXf zgc2V<`~WxQ|K}z)+eNW&I264=i>*<_BLe#O)k}8=DCDelB%n?cp=9Gd!xf2Zt$ij)KcapH*JKjr z?VXhN6XR*@pePdD$aSKlNl zj7U~>$4%(=QVjFkqVDiQlpudGZ+(kvJNEYKaRAjrrLbf-MXjl&tV}t*vab;(oLA-6 ze<5_gVo&1q%T&ipEQKFc@r&_(@`;l;=(JaMV^G`3I!At33{HYVo*r2vg^y@5kJytt zELP|9Ee+GtpD1UFJZMz1Y|kaYxYFkh_u9oI*A{`FN5Lj*i+FLFtB}_A(a`>cM!fIL z!XuriL6W1;$@U#ZcrHj4((Jxiq|P*K(f<^OHR(xT$=XcVL@!9dJ?<8AWL#GDX0P?| zceQ8BFR}LmsBX52%!fmZ61;gfsGngzeCRjX*45WTxiL=Jv^h-s$L(SL10|_$s4a^h zmHQGqA;A;eq3=>kUoG2vX=v>n=46HHJOj-8b6Y+sjwbZdc{KK$vl!9~JnOxt)^Zj(BzF*SPDDFRjf1;&LZo=&J_4+X+vw{Ekvozi@<@; z4cqJ2n;HXfEJ{n{Z|&}z)$dlpu(5NZ@wzGKzPmJt*P8jGox{?8y3;h%6&H?I-wK=X z1IOYvoCc74i`uBZulKl7Ll!y3B)gjNYn5-&ked!j|MMM~$q%r_;GkON-ohBqR~i;3 zF5KjP#8YCw#2~NmGeD~*7!S=oAa^W!*BM)HEQ4EyocHTwh`Mf(>iK5R+OykUsA5=P z{rZ*x+p}lqa}5Q?6jGl*p71LqRwDdec` z=3`>LDL_wdOPf`2b5}e>XhwWaGzXs!lpyzlGf(uf3d%m%??GZ7_n^k7a5j-I!B8#Q!who_Ow(EV zFiMlQ|6$68r*JpilJ+@H1*=Yc9K?y)Ad;U%y!j zAhj~q707CQ&8eXUTfLI{F>Jph8V!EVCy>TXMRwF3%NXG@pL+B;&A{KqwNnTfRJ*2X z2P4i*cdRR<-|X)U)A_1`=FAMyMI%?RINp^3FZ=D?Zo1@E{_@(Yjl~^{h;}iOPf_KY z5%V(b5BB~VyUP`iAOl5ry6Vn*IImu7v*^?c{PfpxgSzpSqUcV9=^Qpo6tFMeShHMQ zCunJ+0cSZ_^akPje1pVy%<``=mCmC;4aYW-et&`l_kmgkoO;hQBjCs1hp4k7_#JxRN!bS|#Fp2WId&CRb zPm&&0k5W9bUkh@VDj%s8vgW1r*7<^c;+VOY*#P7rmhjx#SY$BpEQ;d!oW;Tg`2f?L zdn_8`6NEn`+daSB<4P>#I9yj3mDXF1g}!-KkbUmxOq?EK2o|Bpqhc2(B#a1Gd!u1b z!%6WOxQ4_{&7cQ(V^gc%dDfof7I?kxT|p`<&DX+}D-n*Qay_jx6D^&%WPb=ZyLwxW zpY%1(4f(Nq>R0Y<^=!ZIe5mUJRTrAbqUq~l(Gi}%k9$srWvcANSkFSB^*!d^+cd;w z8@@o+2-;q^T&5#mJd5Hi8U-_4HKyJND^Z#2m8qLuyHEKKn7*JE%C5v(a(+ERg_@&4 zL1*>RY_^CN2yqZdb~|iFtVYC#jrcvnu$2cAsJp<+jG!81<9N30W8&Xmywx-O$(3r> z>lS*VDMvaj;UrE>pBY+W-s^w>4_c*yrxXR;{QP=FPf_XjA+X+A*DD>NfXfuAEi5pu4<)!KBm2v}6 z(IlNd=_`xE&*Fb1qwT!>wf%N~s`2TemvtYXjQ|Gbbzv`_4KKlsp<&yn^I7Lvm?h~q54G??gdVD zl{}~!ha%>T{MA%_Cp8!V4%5&GznnOUfc9x2Ay^lGgP>nfT+L3O_cp@eTDuGlZD3&c z%ltb|6=xi~k`k{Z)~gpsuHkVJ;4VRf`b)n*$UWzdqZQX@Q6#F@Gs|6W`4cf4pk@`3 z5My;^=j51vR@cl@ZGMX)9UilcC-FzVtTIfHmk~+&T2g_*o`tkMu~*Dfi;J4Es?S|hCs=;^wCJ{f;)xFbqqVDK z``ckW%Odq6)!gV{WX*)&%GlsaKB5C#`*Kgu^2^6Wu4`AhoJYNPLREZ3^w*v*uW=rE zU(Sy8paqSn>(^45*hk|zcRI;hy@rwRq|9wyFzPtdc1Qg*Na$hEz06orIbh(Ax<7qw z)8#sOe*Gj?>~gs_Eo`S5U|>cM119?7j~lgym)3{H@$fo9vzfX%rM@_iYqpCj{>o}X zlx>46XFO5@v{yDEsG+-4k~wjgh(97C8)G6Q(DFZeO!GefF?)uc3U=wcR>?0`ZTHw+ zXAzG^QW{!Xrqv@o2Cfu>i>j*9%~71YxI>iZ+=Ky3W@T3O6_{ zkpP9KcG}_KVM^>VSQ4pUcLhci?y`(fHKA7N?iR^MK&&0q)8+lUJ>iX%C1dm93y?2I zY*cOYM>bw3NZxro_+cXuB#@A5W6v|8JV2syR#FxVvczNOCLSr!& zwVLle8dmsXE>^wklQC=Ry^2A_gtS|i>#$#XkHhO+_$k5iP~m&pT8|rkP+(1;^KSHg zG-Wz=rM&8WgjPaRCmlgjQ)JXC+Dns=Y`Ld#*V=+y?`H5+c-PJMO^yCUxf>c#tVf^Y zth~RUiBHRwbqGB4A2Yliqrg)uV8?YNv0a?kE-%m)omsWCJv%gBYa3Av`Qtf2pDjMB z*F4BySy?sVq+V6DN9Mt2j*3L?N!-x+g_=xI?C^l-x+dNh9B+KL{f2BQ% zzmug&$NJg90qZQZ`tAp=46z_7NG-$JLtrw364R3_m@WkDz)_}V%a-7hrJ-_<;K*8B5zQ3%60A|Uma=9o z9Mw6SCL>ax%6_ycH&816GW()x>g!qdjfu-2OTHx(?&YqzP=d2a6nBFn)fh6U%iF$B z?Jx%(Qh|1VXRg(u5&w=3<}_n`R*#v4nDUKr{E!vX40ce_wspV-C%Tn{34J3I{Whb7 zEsAHNT~-w~i}U2=dD>04wVd2g8{G8Atk-Ceyatb8BlreFLb00rooGY-ZibR97#f;qICp2sM+LS zTJ7hWd`MC4a(I2Ow}@IemaS-t6331&QJs=egnHV*)Mm7Q^=PpjKaSs~$ z8Vuz)wDV<;tsaY3RKIqq;V;^qS9>zlXYG3KjLelK^{3zplH?LXlQT1 z=|*f0(3khQ1-@qUXu|hkv+Z?`w68=*T~@$GmUdRf^xbA3HJHh>+*c&!8(lAyo4Uph zC`zPTkJfZ>Snp)6{s#;GFG3#IpCnFq=}y>t{2rx?WPGQ(F9-d418c`A@j75Ke(wgo zo+g!mHV30Ey^|Eu&NgVfJ7tV$!(MY~nw2N3C{<$`{lt4(Mxsvo_kW5hvf@Y|m1^^0 z<7z}3+o4mPyOnt@))RksD=n7|jr6&QT|XUSZjPYV(i~~$FSp>4exH+Rx@;|VvvA1@ zA>mJk9MLp1ue-bV*S<&DB|6oKEw#`vUxH>xk@u#H82<=k^d#|%x~v>aMUYdGfFgWu zG%wq%`vq!PM0z}N6IJ%KpuVPib9s`hRTI_hj|0v|Hja)jd3nd2b_Mrpn?b>hRMoPm zV%9ClB*`;Mz0ADG`)>a4ZtMSW0dD2VuG%TQm&>QDnhiPhid0RfE7@7=&tHHsn@xvN z&gARw%T#=->gvRx>?e?;Qb5DQ6IEL)G(9r|5QXGFf7ZVqX=!SLYS?p7o^^gzMwqQp z!Qy^KP~o#ZUgUFmvIU(S2Yw|w`q}B;Tv)4qqbZj@+cQ*b?A49Tq}6Z<^2V8&y5Uv4 zs;Fb-k042E1a-afT31dIUMp%=R-Dh%)6>%5cB>t?IE*@u2H2_B7A|~Q6MC}tgl8JG(6uXtWFNGPsQdE4}CwxWyQ{~Dnm$k?XF#5%nuV15(*^uF7hg7r3?+1A+sMQa@9C@ zYma*6lXTL!{z)#nRezzRPb5{Z`P=#B<>4612Y{V?!y;*G#(``nqqADU!HMdq>5RPO zEhz@YjgTV`dfH~x#bJkFw?PoGAi-ldC1)b z4p^ifKv&9NZ7nW}f;#duh*zx-BQs3Dh|O}c^ob>ncSm=(VQV0My2x7cYo9-AC998e zX2Bl$`umqyOmNiJ)k%A5|7Y2Y2on<%!NlBw#yzpPk01X{6n1~cX^aW(_SkPk0r*9* zIMwUdue)QpF=#W3PXzY>o?#115R;+7n*+t(tUfa?V(D!g#Ma+})YQIsw6cW&A(Ky1 zNaMP<_VI~Y*CV(vA-CsLpl)t7TkAUf=VP;z5V)In)&&VLX9$>7U%h(u87Zf((rhS0 z>#*k)z*8VM#|i;DrwZy;H9I`O=>kNEPf!q#fS@gkS>wFn?h4{|w%Y^nC}~gG|13qH z76peq&7?08la%kr?adV)05}V@>sZ`&0ivW@>tdUA%Mm;HGbyPr408MK_3Or$eZZo0 zLD@H5q+-Byc|=90)x1o;&dqT&SMAM8XQb=Nhzb$6`BQ+B>Vr$^A_ecv?#t>`ZRi*n zu17t*Svn0ORaI3jZEYNSO%H{Hg;`wzikbqpz$y3ekXf_x$M*JigK#^5=s+IwiQ^8) zV;vwhpGI>j>F7F6&p|=mWhGLja;JPMn#XdIJ4R!9j!py10IV3l8(@n>JQmLYa48ed z7w*1Wm8s}m6-))t*Q9i5Xp~E?^;|t%bfbA1Q{-1$p|t6(0MdY?UB}}<1%m*d3rsfk z&!6w^dv#~A!_V!w?<*4dU((X36J1w{;NZf1qmL{2w$rfSbmV(r;0p$Z>=px>hyd{r z;(@YHDkw^hv%t6y4i6W9`;#|W@Epzi;0RPxM-G)1_Zevd1Vx1i%?GhB=z|#eEaB%RMup1YJ_cgn)`{{CKl2;0F zv7s!|p8+Ilz!6iqmgo+!q{UW39S86j*}umKy{-==5`YF^RcQ!3?eH zPL%EJ?Om5bcuB!?{{NnPWo5+zY?{Wp_5c~!qTbc%j+lgmU^P<}W}W+)F;F5*0NMbb z2?t6fpwweTa40prt5m-g9ry@wadBh-9}JQYtb7O~7gnvbq4c~wretIc0@zO4^j;3j zioX|})zATXCnK{w>%Iqv%^lYJzktyh9H0hd0uH*3UmwZD@q|cFcs>nkU0naUEbtrd z-|WzgOJdOQXdaW1_2g^Sj2G%50c&k(Z*Lz+hcyh>d%8!l>hyNUa8`j`WQ*$wWs%HB zx)&E=k>i%KdWBUFP}XO>R-|z}mH>Mp0Q)ZWF^GU!wc3F`h>%tJoS^33I4&ZFhZPgu zHtDS@7m$G-k5^bz$O)hP^1_vUGy?o3u-~>~qpnJT8iS|+1SS9F-c=xgpp~VN`2@_b z$qz%V)`cB%y^jRg2B9qP^NRpnQv$Glpz0ELw>Pk^E_?9cYxsj5j@ICc!`5g>JGp!C z?>GL%2JP6@PCJ|H#Vw(mqj_C{_>A8}LejnOZUM>#R5$B0Tv*H1kr5HiU`eL^$q#mS zceiKj;=o~HesgnkeX!-h=5SW?WZ9<)FnOSB)QpT>11}{X-7^!$(*J|~uO)f+!he8^ z11jO{pth*Hu&{7_xm6I)XZuyV&MiD9W@G(l8sbNwzu{Y*un1ZrF4M#DU%!4;t@q#uY5?SK zx7tkv6mTUTo)0Rj0{D4pK!PG2KyO@@lf&h-6$5|3ejPqUMlQBnkpg(#M*nXlz{UXc z>tw&_q5}S@m%`m{EK9*3i-f1pxQ94HHbE+qL5Wl=_SYNmTOY(R5C8|O>`g#|0N;jq zdH6P;=h;F$}E`T z-F`C;P-}m<&X%1y6&|;JF&4cNY-b=}DtN-_#+LPyf$glU ztgH_%3oI-yHsL_7UjcWwF_?~VaBu+Mz6Wrdr&m$VQ-8bE7UBxrKZxK$j4JtQKxKec z<-hUv-HWrT4hSU^EH)dW0b(+`7t=2cz}%Szz8uaQ0r46nmtN$q%ea`xKB>|XThYMZ z=M>a0Mrl~Vp;n9W!bY$YL>X}FH;Qf5*8@5Yj~#&eQfM_J0GAio$y8~)2Z7CJzvva7 zvFRcJwub?TeDG<~(Mk|L2Y!Qos>0f2z5n<2bX5dAUjxv;K1U3YSH~le8${5`wG9nL zhuYJ8Ue14Gv~k%~Q@v4SI}QrEbRWxBaf$#(~HVi<&lZzL$l$vdEnx(Z!22 z5(%K;gGyQ2u!MbtuunXf@-}w1jm=$aQb|oO6W+_VWXdD-vgDVy zN8Oy`Kf0(wh?ePnIQIQ{wb>`l8DS}--sYO6^V{aJXD1st0DpDGU*75L!Fppkmua|C za`_5<%?_Pq>(YNpe12Ddu~`Q%-~2Y)YZm}7naLe?N@GyMSu5G;*<1m7wTtdhX(roT zi8@_yoaLlt2?s~^J3i&)3P!aHV>|S~e5EQoEI4f>9|II1{{}hFi47Jt`%3UqKd)o} z&~WFnEfuNOBt9Be!CSGJZwSjPtNYt|ygwsiY~LDq9Q6iy95%55TqGcS?iU`)*+G+* z)P4^W_k!8)EF?0c=sUVOegwS={$ z+e;hCT0^{v%QqAm3?fZ_d+lCVd}0RGrh_A!4C~Yn1dx$X05w1z>j0J*DHLDecAG?Q z`BpJ`Oi4#a`@BlMf?Fu ztq1_Sncv-bzcQcga&dtKCny8TYGYTylaE-j6Ur?W`I;TEu5+B1ITxT}iS-JwQDZJP z;$%o~C}!iU0B@UDHi_?R4HRd#Axy=P$6iPeN6&FH!gd#vKV~B>QF66omaNj%<%uR0 zSPIUf0{!RGUxrV@s2?lWkbfCzvh3Rc2*uZIzoo@h>{qhN$Q$&TXlP-J067QLN=X4H zR6<^7j~m7*?K{AF9m+Mpnc@Rnf#oBWTWM3VohJnwMMyRLo{OjeY57C0MEJS8)ZQ>X z^T`wCA*aL<{RL2MQw+%s8GHNH*~*E)|Ewh(l=uKw`elBPj9~kMuaEi+8oaRC@r6QU3tsqlow5NhhQc10TNMZS~idUj}&G{FeyIdPq^q~tY4XkMWUY`Wc$TBM)4ro zU51S$EIw7k0rq^ykgNYsECtZ82~UQImg7Y^Z&8n#eH+`9>?FYxQIC!ePJ1D46gq7* z>klK)Tp`XP+QAN9Lhr!&1^pDampItzhC>`p6hW<>*8aVdJN(k@Lm&@o; zv0j~z0f!cok@$^xp~^6S9rCb7n_C|dpT^HRD~osQ9KGrLmxZsl=jy|OSm4y->+FXU zh|>UiZk)B;ny9v;G>MR9Tk=ssLkn8W8IuT)iES#TsHa{TMk6lWMSWU;S^%IyM+~nQ z5LW+*i1vu2xHk?%$_UikxsLjXwQ*ZT{1s9{#`+P!?FYsGQdL*RFgq;5VTCU0FUxQ3=QA->QjzPY`O zU$_tyum}9>;!j7!qpUG+E~_}H$%MrwV+;X;-F!tw@!V<#y*yX-6(C_iJdPnANQhY< z8IeCjcXwq$i-ARf>$P>m;f$}!`uHA;R|0p)jK(NXr?#S-8g_pEk9EqJK^bx>AE#J+ zze!A(=Y16X20-&4aS5+)qIl&Ed5$)MnpK6JkuO~NnPS*u6eO?*3*Van>uJh)b2+e6 zer0RNqOCVw;YmdyBIrx*EZn&;W9xCbxHRo>^#)-(Y^o)$*^2h%!80=xxe|cq008oV z90dfh>Q`>UaehD}VT}n>(MPTBT&6Qj^-vf9O{8WOMDd0+M>yHhr#8-tSlj z6zth}8bea9fbYp!d$kzKM^(d>u^STvmpp4>a!ZPUAXvwbQ`}*+L%r7eA%xNZ%;eWf zI-qZU4#wsj_CDe$%JOE+BtU-Pe0xb1Ag;F z)Dy-`_hLb2w82dTry}U@$VTU6!7c1-f+Q*b)!E(XHJ*;M$*vhuo1ip~jdz@lu?0W& z-y`9a3#%hrw=o>O)$)k=-tP9XnV5n->(^K6k!br43mb9f5iuslV_BGP!x$+VGtaMu z6h%-cEw6C11kGCfm_+;x^nQs3EV2wsg9e;IMP?)ayq@y!zTyz3E5 zx%$7^RdWY_kE|z}becl*a?dYFv~Qfy0R9ZpGMZqIA4(;eLp!G^l0vbsG8=rY5S-;$ z8T=KOhQqyg2P|i^2;-t|L=9!A+%UaLTZ)>#dL+j2;iV3=}e zynn5}U5)=r<5Kuq$DFr*f#TC2CFz$(>oxiEWYJSmwRJnsR6} zwOc&@B3y1CTe@d_We+-$hW{w_jbh_IQO3(@l~R`~-idG9shON)0NCw^RAo$*#fqPC zk+1;Yy3!5yzfM+DiAaD25C!DfWIkrF)~4if)hoR{T^S3mXlUIT0us36iQdbq z=CxA%-kYu@rnu|OjX4v}S(Pzq{yA~3nBDYSs|cZV$CGi3p!eZ(2yYy7151i!fd=cd zqhnZVytGuBK|_sHuMwB6;T|@C;p2r$!<6hZ;M9dfyJ8D_#iw^;Wdu|;Bdajkk1`iK zs2~s`C96eKCitAUz9*Mx0!o zk$Ve_0V#@lSz(tEm(5RvHMCERL|V_e287?J+duc}G7=t(@5aPLh7$$K3-+tAOh
    odYu>A}rtDP6H*Lwii9(bzU+bK)x%+QLd7M-M$xEd5!e!@GK+pu{L?w_ILX`Opz ztA=R+ACwYWTTO6(f~(+xXAY41@InI;`b^nE$CVc#t(utBxn<&I#G@r7)R68>S~1L6 zT3*)F$HuXy07Qm`94~C6ft@64!}*pI%-GT|R~r5UrQaw%OeZC1s2;vobMpEaz~d9& zK-$Ml*EBTZ3p4%OGa)AX<>I=i=|y0!a;;{;9M0@oTSAJ-jqW8kx{Hl&R#Hl6DcG5sVMMz5$e!m%G`1Q`gU?%eN$lNu&%B8GyZC>IahtxNx1_j(l z4QMzBq1#hmph*pRM$|&p4;BWnDsNzf7pn<`7bk1he?|&j0}k#?BMYA<-1YHu6%)8u zAENF7_h>c3kc`OtcLp3Og}$M(#0|0?7gpj8@XB$SZJT}xvG z!eD4!Z=24OlI)Eq`9W5Xt4OtY#_kD|k}D&-`=k*R5z%FoSGhM^9O|1eRq421(g0bT z1VFsojPP;Fn)}toP@$uQm&Q3BAcEGeoAbW<5Q5t6=SM0xZm_j;_r}zP8IV>?=hmF2 zurl!{z6_~()ZNncoqad%Ps1YRk9(hl{IVi0mvFOrQELsd5P*HiVk-owk?%?5>5EnQ z!(*jozT;fU5jJe(l5B^J1m^M96?Oz3a6m?~=m1u$>b*`nn=ebaV+OI~@sEB?vAQRN z__w_$#ynEU!gF=Cq1ITUZ{_j)hUkw9Mp(mKJTcy8^Fqm8{+*5#6cm^gT|g%#2yk>F z6oT=9Z}{8zCgUl749FC5K|7St!KGOB9KUY>D@0Pa%qH7c*#z`%nvG}Rfu{=GW_{0@ z;fbDOT$yoe-`xBT;VVFhV0#ua?aHm**3Z?S21l^)8MaN%e5XFyng94Bm`4V7j*8^f z(+`ddR<$cmfOye;M^4tkj3eR)fO+@w+qM+52$%hf3X7ZVfgW{E_rvqWu};m7>#U?- z(KY5`mgV{CVk-IGmw`8}UHq#zQ;>I?v^r*!J!u<``7T5j_PuRwHU zKm8)2h@CI)GfD>Q>(ZMm$KtZ`j<6hyD6d0dKglEP=zX_TWJ{rSyw^1}1qJMq9|5U% z&6Z&hf1Q=**t^rRL)bHDA%ETm_10a?$M|oY?cXhE(SHUft)EUb0YE%en@Qot+gn%? zMAOB{37Zc&1X;o*tb+|**3_A%;$+6EUn>?YH})0LTCS<&E%)xTl&O|729Te8JvejF z8^~YmKVPwyaLJZt1~f`oC-0GFm}&i--E=vMW77uHuEocM5tL~@7n&=bIZZWfp&Nzk zmtmejU6Zh^M4Mum!0F`3^y=NBY+4a#Q62uK zs^PDcAiQwOo_&dvwjFj6WC!$pu1v0Mnmw0TWhY2IqxdC1k6XRzlM1mA)p`H*&gku8Q0O2^MlsC zjMrV*mDTRRMW!r1j*jc;oESPdz?lCHoh`G35YCk1gTu2UhOwQCoDkX7tWnKxR$khm zyc~iOJs2r=i)DuGRlY;RkshWv6$laM=PE^IQZ1#X?M1%A@d7_zMfPthW~uvt_F9|8 zei1mg33SJ@6NhkF%;18O1MvI24pl^8?tri&b6vd>9UouizRX8lF4B;vUG~Qm_=4Po zJ0x)K8uac!{rf7_DFJYbL4_n4ob*$#oIm_Hy8~_Ls){C)?FV~YZmjYxh&)flT4$w) z$G;D#^7Optj+?QVK3<+NG?3wR97^3FcEpoRDH0oKnf;JLm;5~N^Y`OflW5nwR}#1_ z$o8*x`y5@h?2K3A=epzh?fdK#*Z5Z)&^Fpbxgl&`qe$_Akfy|tob`V0?=?vtkMi;} z1J48d|rQD-J*H9_4XbZTvNJiAlX?L2O35SmbDvmglX4eq_g{sPyqigkOE} z*HbO?QGojf^XJq>U?5qeQSsQJxbxhK%1=|qPYa=KLb|8h>)%gdFB_)~I1fMkij2t% z8BHED;82e16FOdpU?%hidd7{}*tkD54~d=sLe;OPHe}Mm7yQlq1#iJZUmgh^J=1fS zzcxZsZKHX zAl>+&)res5vCP|0Or}K7M zNTB+|e1HG{Z~>+U(nF{&R+OmcbQvw}6Gp^Rl^0A?4J7ojkqu@Z3|W%qO?YxZ7txVS zFc`m!X#HJI6barP{g%4X%B1SueO3EC?j(Qfb{3hc zJ@)ie)$Sae_eR$`MWv5i&(;hp+J!Pld zi`N5~ym%2=>3az(tepC|m)DrB<<@k)FFy@IpHfV{cXEo-=l3=JuDpRDifT)>?LaKx zEeY2I{h1oRHP6}^)VcDw5P~tMc*|-eb28LVy$82Wu%ieLEa73k3+=k zUl9BF`#47Ady5e|Px7gAZ}8-&(OoemWwb3o-G4NulFQTiv7(@3A6<=MtY0r73OH?d zzyUmdJ8FPaP(6P>|7}!+`Y)CV$%Tw&w|M490nwmTjFcnLeKLCjD{-}mEeQa4;+Cu>1XJ==FZYSOA^Mk-uT;_Jr zsMurQCoBPF(c<&Eu1rw_a7Ak$C`|Ni|ObiFDlDJgC7 zL`wNZM&d_CMvhNSaRNXJbiX%)-dQ3c7dD1Sso%pXWj~rUP$`Kg(j+6sD{YtXug=WN z)InP;pT{{{ettfIl(Q?qa11~L^s^9gfb|2YyK!_>c|$cNCMYZ{6TmPCsu~(c!wPZ- z02XA7-8es3I^G!aFD@=d-piEFVvCXKP85!#@cL1Nm9hcjC!q8-H3Xn)(`5C6R~cf36@^cBWp4RD{b z>S{pw0Opt9`SYdppWIxoyM&k+SiR@fQyE1nCZ=G34Pz(BI!|1gauLIuVQXt^nWAM% zjpbc1D8=wxwu{==LDzO&YlU*o3ILJ~0OE~Koihgp>)$$AZOF;VnE=4EpPwIk#*-c` z(2$!cmy};7lQ~ob5OBXIBd1`OI6)&~ZtiC9Wy;V7Di)RzXy!(z#>8eHgZxgJ5u$4US zZq7hP?I*7V)DH~@r+sLsq<7vZQmPeT#xB4U?5RR$R5TjeOt z6L~H&xP~kuQ@?!44#+IK^;cGK8U|>0CK3d0%?Wgh6ELek9PYk-{Pby>;;>t5dwblP zPJWndCLA&(kfBx&T`=ZG<`=zt6jw7FVg^@jw%$PP@;a!t33;cc=hJB^B|A_QN0?6%3gt zbDnO5H^Tx8!hbhe7?k-nN6yITCA=GT1u=l&cX9F0{r!Cb!ar52N=o=!V+9qu*^C;1 zNuc9>!%ay^>1eezQ^O04(g=`#gf5mNg2{zrTUx{($p^;8Xugs_rOY1y*!cO>+^x8q zn*atO%kqLhg;kMCEe0y;JWy<`S&4Lc+rwqa>zftKw!nPr?{3}Ulo~il4Ls=Exq8pY(3k3b_u^#$BrrHNXJL7{1;|J{ zhvKZq5Ku<0!J8b>?I`nGV6Xtt9S-lMr6)`OXk=)(-{*ZBF_NPK_hRhcw;mQ27QeuF zbQ?<`He*!|&P!6Z^z=+k#qICgcwMXz0v?I1jg3u748zA#p?k+5oNu(B_IPoXkbpoO z^lAgl*cb!~I4BQ@jp+sf1mft{l)jZMVDI67NT8th5FPZgivZX>6$neJ{fQ`D_rydD zfYN_}KLAh+U~fPcytr6Pg0JiG{kr0hR1!%6R}1dlsj1nVcc%#i4FVpgm|=oOVDL8t z*qwJZcdNHpnwpyU>{o*ai^MRV!EiJ(}Gv#BJBExET%o|NjQlQzGAlJ4%72I=nZ?sx9zT<15O_mjxptTor1 zqt`v|!JP!K33BS{e;k>|5g}odDW)O#US}*Y(GZ9Z01D~@Bj)e#e+m$&p9v*COM*@B zmO28$y6ApT!ssghHY*r3o}&U*3xEcwzna!aW->trC=>8(@Q}sYDKxsC8VU&oAZB3j zf8Kr!Z~-`uUI3H;zLlJtTXRp9{}trCtvMkV8z%t3kZ`c|XZ@s6wg9FHz%Ih->M0Wy z{xD)-ef4Jj2^0aS!|4$bNEbV!6jW59#lvd14S&?D{kbX%AR1eM7GN8|y$m<|V*r$inoxq70kTuH^I)e8^z|V-kS!!zGzC}< zenJibU@==yrInNtCdLKP|2u$>dsptu?gzBs#)ZYj;5wxLE&k)(!vi`RTE|4L1Vm3E z^a^mu1hSlormrE7sGfG=M*#sq@;;sl)LJiz>+1dj4~DuP2-2ar*;!ThtNos65`iQ( z8zM3?GO&XYqF}oP!$|zVGqW{aU@zYR?g0oB2{=8=0B=F|LcE81vDl~oQd`SolZ)w1e^>Jr(^Kl#m*oQQo$l7!+ul{;<*99TN0NG zokE`E8nCcn%`@L1Yp$xYn4tq`OIpa%*9p?4`yi1WfZhVp0E@vA|L;pNnVB|3+yF17 z0}*A^pFk#zZ;qD$IF_sVazY{;hv5f+=TH(#Xp%urXqeyCl^u9L$Yzt2uC61Tu(Pv| z6{*lej9SB~^#5q5-2Z$m18m}4y&WkCc6L&2TC;T8yak1YslaJ}1^4#<2svhc=13r} zv7l=oAQ~ZH;VAC&U`^Nj*IwvP%sm zcM5CmoFB(1h8F#^&l7p0RuNl7z9O}LR4m!1(? zl#imGe%v^dC0|%?Bl{pMsYJ?B7XFU-#QgFqG*K)^`E0%WtMQG+%M-8m%5qmLXjOM}z7?_HXF)qj6)*I5 z9Nz7o)w^SHR`R=}Cz^WAWj6*JT!JvQkPFjC5fIu!aypv-j_m*Try@rv67@=}B9$?+ z-}F|{jZ+OrQJIOdYI4dJ$t^idr1{G*?SV#NU-VvoEvo69X+r>I3PBSiEfXz@4dk<( z+6auDoz?l?AW%`*owsPmyuiIwdVCnEXug~>C(v9}eOT%%kY(6v?JM2cOG&`O)Mdo8 zv$bQQe{dULU}tZ#J4i=a8f#1~+Vh%UH#Si^vC36~eRf&BWGN~0OC_Y2eEU16iEu?E zuac89-A4xg)9g&h?qq1t!Z@@i)Y^WIi2I2 zUz$EWSIx|YTxYmF{=||+H_j+<7F3s0@rrn*^`)$l(~DT^7SBzZI#Qsl@h-VX#naNl z#3pxZ8fmrP%H&3%YF zS%L%w7#xb%#cRn871W)!o)A`7(4jeEwEjlP&0Nnx%N8kCJ5`Xh{Q6-Yx0ga}W9GXY zDf#w1FCvF!t|#G8X2jrTV3B-oy8c)jBjF%Ka>U}&iECj$33tD*5-^?Z7QM19pJuEo zBOcF3V0Uc%9`QoZ>m`xh|M^e*oN|yl%$*T-q>kU?(%Wk%*mhm!*jSC;$nLZvZ{nXz zeBbNX$ZR(y*I0Jy#{bw=RDI0Zz2^&?Sf}kqnk~0PqkLC!wOngGK=G-ED7(0z|FNuj zlYjhdGP_QUEBULM99q5%fzejJ&FSTlA4jE&Mafn1hlhP+XLP-N*Q;p_y%X%L%30496=%5r;@P}1<%6*Zr*tWXi(ZTJg_JcLTS;HSEH?FzU%~`to**)9J zsfn(>7)%u80wvkddk$3#S9?qB`Nr8*!y+Tc8CJ{NoiDJ?j!ox&HnJXUT+=+P)#KAU zpx$Q|rgNJuT1+RnHY!^$RmE&^Pkd*UIcHd6NxKcn3C>`GicH^$z^zX8cy@R zG~40VbVq{%PeRG363@pyl-VcjR9X``zBHc{)y6wg`?%8mwe`t@kC|#p$>`LswnI3- zq4d#rY{&lazLM=n$54a@bO44F?WInB>qSc@&5 z9Muj?sou9KKijlKnnrxLA0kqppyu`px7#G(FT^8Fs88t%XugK0JAyc6*B z`T3xD&<+>lc8_88$T`s}fpT&Fc!&rjVtSgDfU6$cgiWULazARH3MEZkwUNH((Z_?D zR=SpR`Gp7V`$z^dySl}hb8VIdK3pxuwyd&}l#7kXe8ZfaYUz%wIWJ~l%IkUwd^k=w z&gf{l@XRn;D4qq*I0gBTy0{28t_PVZYdiajDYU}_|MY~!9FwrpSt>K;Z-ScS34sU! zb*br?Uh_?|@@A`}@t%!t9PcybG>dBb7X|`(k2KlSb%YNa=mqFSEC?*kGYq1m(8&^D z<1XO)g-0aowgwX|k$>iLRDYeCFS@+JU8nyB-IFN$8j9i$>15UDF+N z3*HMkO}#HZk&bvQsoO{<`sHkcA1xwnsLXlsm!(-h87J6M)m4vhE;P))KRg&3ID8*z zlJKu_xJOweIFkvy3+OTn*xs2Ks4`yJ-#!u*3-G<{JXbIIGc07vh5hU#VM3&OPw_x+ z?yKEMA0VB9{B_s@WA{iD&c!2?dfyv%^yGraGwsyAa_y@ln;-RF0A@Gy z*!_WNNv;YP_F)Ng+F#0&E4-#TjWyj8vbO5bj`T&~_#HlQ5a$dCW;)Zkva6ye#HyTF zEcA}2l${(&Sh}OpmxeGAQ?L>a|8D++hpjPjY-L!q)H!3lQU6C^20LVq1sQ38X^-Hqx+yBl7);?>! z66Jp1LoqrERIgPLAJH@J7V*XX27lfKsd4?1V^SZiSl|r+e?Di`c2x>P=6zmOdU#yN5 zpgbRXs|a|?!>qIX!~iQw``9<`TYV|&yOXsQJI3n|m`1s`_bzL$j-PnoBG=1C+vfVq z3XD9z6k(g)ZPjzB+U5O9BQ=3{a}$>K=J(#c=xGM>ina8C{iaLMA zb3S?=e+X=8ifEpo`r(M8R%NFJepHM!o$Rz%qGOt-z0cKetVc)cW?!{Nd-`9PQJ z)q|x0&zc8}C$7fvktr;V^g!oQmYy@9M{3SKK2(Up(p&NCd#1yyP%g_$p3TeLrOwKm zKb4YSymul|c~`t+S2n7kb`Q-)vzr8PuSZyc`xz>O`JV5`;x*s!<#EX>9O?37_voCb zMjLV|V7%Cx)6oa|F}ULr5G$wn&DoCZC3!KOjg`Edfe!ln77BQwAWtXF$_f9s=$3~! z%v|7trkOrbMO_H^nO}LBUrK(Zp*)K+uRJdgX+L5)Bx1rzU(8#5bLCWz)0X|FLJwEW zY<~P~%(r!K&P`DKHj^t@N`z_LToDApLzxqPTv#V$RrRrZUY_FxO4~EfVE`63_<5Tz zu8FBSj!TXb=JM3;6Kz|X8#RgnbF%4%>9C2*^(%9494FhVogD#_eMkB;m%5#cru%YB zA1XT&!2TlQRTHxg-*Sf-t6Z{P#r3dypbyl9gkI`c`Zm+dv--;ajzNI4fr+F)^)~$D zGY>=b)`P;Gr^tJ#tRt;kQ)ioO8SGz5MQ&DqNPRTyqHn|X^KQ%#+JW=TDPuho_-FP} zhQ)g(6rZIVR+KZ@w5k&-VLAk+(VHf)%?8+8R^w0D3dsJ zTuw7%zXjF%>$Zlgk)UM9lN>02pW5iHleQs*FmLlyJK%~1i*I99ep+=7lx$b8Q_ypF z67$jOO|(RvFWh7*$SME*al)28HI;VHf>$J0#Bzztn^8IOahvm&bUs5DiNlO3hZ(RTk|h24!LEl zj0a&}+w{>WwP{~{iw3iP^B!rL?ih;zZSLgvR4sqT zf#MTR-)_Mr@vOXh1Dg{9;u*&q=gsjgxL3EM^EoxwE%YaQgGVi177+ro?%b(5DEZK* zJxf`VM_Yr~P10v0c^inxwrp+JP#aAi3}Y)1g_$S0{5lcBx$AvFaP}4`^sL=Rre=0-u{<2f;zQh-XOP@&@(&}OSDJP4`Hl!!N07_h-Nkeihj9#oz+ziwufxSd z{?`145-NjeCIOqmc_+i><^n8o2=Qv8M`xqd{LxSTHTMxm+O)0CCcSe88-#}`vAUT%8)Y}OB!C`L+C;m7*}Z4@xtwWqCDIa=FK10W>MbL&#W zOE%|?``57)IgoisUQ{1ztsVJz-ml9$8*93()7I9;hwj%r+=ukN$0eweZkqGS0nfPn!AW%s!z&tkcmA)O;bZAgKSutRV-%I|0X zr7loM2kgX3Drg6l>B9{@65eL^LM|@p%~k!PjevJcu7-EtkbiIH$Q9nYOY3YSU+kn0 z_o+2AgEw&b6C#l;-B9%G&lr{#0o+4x^eS{uFX z`T#&oIN_EPRLdg^>4aLdg;y5%8s}9bwX>iaYieAgjE`TE z;sINopIQe!J)c5{ajiTvQ+E1jHXVkLcrU%dCRidrJ~)~?jlGnYlgw==@l*X~!JE5p zk#?s4saSa&S^4*?Q4;WKC{9kU+(Ou_YnvL{Uf9WG_W<`={T$2l(Ud5Jic@ngDik*cu7v$ z@aO80p`Uv0pPTxL+z9BpfZMU&aXj$)b>I!*($P?W%VF}z%24Xz1Np*z>ywG616y?x zQc!K4vQAak>L^tPaX|*b0*psd%CU_DaFoj^_q8r1Q=vq5%yDeiD0y-DEe!{YHWk>B zuRtQlHK(aYZ(xnLQ}E`dDaYc-zOm&``5N?hyNr6Wo4=UG6gpGOJZlKr~y%q zj&?hRSEd^?zTuPkbRH|Al_~U}@fQ$u{;<|w<3vm;D#z;?SvfQW$*XGyiRU6`FxH#V>^89~rB(s=km2RS{fzOy|Zm6)?}L2G*)$)S2&YfADXl3dZ(A~`uHxmQ{%zXmU8`M)=e<_ed< z?l0GYuU`szfT{t#1FX~P@PeP4gTZS)P3FPwWd*nGD*`SJK@hB~Rg)Gjw>Dl~oxR+2 zf3?ER^_b1u4x97N33`J%&B{W1FidB%Ma+$0lu8(8R>OkQO82FDqF~JI zUyb_O=pb#0{x-3RL^QmE$*zh zjudoH?~xWBzOC#8Oo%mI1@s!5k-C-MipKfOz-FP&Ci z?ytXtwD5L+xz+Pjx$(+NyK2 zvG$LhLsTG!VQ*+OIN6mH0HMz}9i;*PrftT(43Xg%*oZR9doM2MweE)L6A80w^>8GN z0qvtFF&-in3pIOw#O0$W`itPyums`Z?~$d=O?T{|e2eB%yIZM%rX2yYuv^ZBvEGVf z#WKAA3|KQw}UD%k1PAC+sJK?9-iLh zz843dX=XOu#}6h3a-53}z5KYo^sl6YVzAbM$Pd4o#L*LYqpeIc;5;p~wdKt|fXjgT z1Mr@O>My1FN+k{bG^Lw4B^0j4o@~W6EIJDo$oZ2^=}aidR}?M3I=NX=>f(?Hc@EX; z8GN4xSRR&Z4%xt2rbvXAqpOkOgy(UV?L~GINd7y_Yqqh?4H}1GMplRf)?(m{J zS0n=F>wKs_<&1iu!RYd|!4_6BM;TNMDyE}qzn&mK4>;kmXmJy=CuoQp+rePo@2f|l zoZEc_MFRk<3Uqjg6JGL!bA*PZAu(Fq?@kN2#_BYfjs@`NXK0T6#<5)xwo* zo)h8$=M42>EA}a`B#d^1l{40XUh>4_%zNWRFG{)OBgj+Y7a8Xp=cn#ta5p!)3mr`K zE>&W7#DDi_1mk1)*b?9WK_JZ|Ok3LJGJh>Qsg+Z`+gYeoquvGaoozWTPaSic=onjD z(Xpr!mYc}OUe_$1PZrWID5=bTT}>~mC2ga|0L;}r(?;C`(_pDllNL>q1Bs+@Uw*== zT`&98KMbe}hO$~&@915}{Ezn%$*P@(|R z@4WkuYc1UBc2BC;+1f5CI-^GC5#h5*(zwjuya{_@RGMxFn2Sxts5j{ zb|=5Ce{UwN>E~~h`Eex?&wxUUOytqu1N?OhuMpwf&5QYe9{`;uC`98BtRjE479;Dc z62G+_eD`dl|3O)urH@JC)Un#w5IYL?A-48SQO;yC7x(vMuP3l@al2gKD+XL{PR8#u z-c6^A=i<~B>J4x%x}yV{y-qd)zv@T}?~IU&p8%^5DiP7KjJP!}oC1PsD__Fg)1#}i zC!2TJ@Yj5~@rBWV99$v6jK3R`M-*-b=3g-H&Gje4c6Y5sKn@N^zpq?*rwU4b<`7$- zfyn1M$B~VFB&vVJ7dWxB5QF)kpmtS9vdC5sEk}7bbUYIY-%_E>7T9{E1&LkZVlV1F zzIs$jPz_g^(=7e`D-rkF%}Rh<8IJ{$ldyTjzAE^F!;!Aj3oXEDzbQ##x2KXpCi)I! zdsX+goGU|nec(G{{hxcsg$Jv7tvF(oI(=S5KXKH>d%)IGJdQHoJK1g}wzH=FZE3uD z5C=tx^P8A-oauq|Yf&{-dZ-%&e6#HwtWTC+53oO|CTr=k!$OXv610T6QePgOF`jfXA1M0 zl=iU>fQxZ{xkd+0AUwkv#o#zeq3Sh6r%@RVnK`Mcsl>zVF3xiSH1;1Jk{^X6DJe@x z3%&{(egh%!B>k&$><#X#hs%M{Bz3l?CT|`-D#tmICs=#It{*R9twg3*RMwJlJimqE zPP?(>=?W;0d?K-x@pwS1ApZla@Lk; zy>yw$8=S5kzq~ADripN=aEVhPIX0R$2$y^WVg_EUb(>&7 zDn^tfyl-4*(Lr{wST{L2p29=nV38hL3ar1es)@@*04Lrgh^p~v&i|QXj?{8GXY^o^cFrhH&2OS`sqCSYf4^Qal`p8ZPyd@`eYf&0pDygRcHM)KX6p5_hfr>%I%OTxo- zDiCRdiWvLc?yPrd4PN`Qx`4IV@X-`Gddz^Ef3;KZN>>I5$0rb|Z?F2*z}sSbfKR@6 zvCS?1lcGgoPg%+wou(l?l>CwWjT=)#K1v4IYU#f~8{mP7rKpk+rT$DoRu*1=`LXv+ z?b_+yYegzdaB+_~I*c_?FA^{MQ!!;03^G#>ePocx+gU`j;RawrqKOL_=QJzF;;?}a z?UNaEUJEe_>OE~LeR9sFsajlu=)8L?Ev^lx3G!VM2)r z_I;Kd_;f}B>k%)a#sV!R`nN6hV7jx9CqYh;G5F5H-6G z2~{wd+Z*ZW(gJ2mP9?%HG9m}+563-ytP$$q<=wQWB;zYk4Y8}88Xxb<*qwx_wyS2~ zdp2~Y#Dpd7XdPi0C8fj`v7lA!NvJXIUumOJP?D-@ljfM(lr6V5Vl(56v!@t>5#~ZuNtdkc-cC`zGlBv_j60PK=vNQVIi}s1n z*DRg?oNQ!H#KdwtxIO$$IXyB6Bf?6K|GG58zC1ECPJfu${sjUhix-A?Y~`LxvMe_v zixBIRtwH=cxEXbFEh&H0?1bIJy><}TlT+qzJ5shcC(Q8CCdvwfDl#`yDRnDd?GQWL z7r9{kt8Q8?S6xw&kCDceEg5u#*>?YdzDoo_4K|K%NeZNt!0@M07SwN>y$d)833$2g z69YIx?TW#0RF#7To&nER(!%NRPuXV>ToG!Cs9it@H(aG@awyehcX~ppZMGfD4#K-7 zNkh(W{~v%5Fbo-!X=+RUp39HqrB%;f3l7TJT?@t)&lHrsK{y8R>+wa%a|9^iBLX7+ zgfc8{F%a8@S=|T@ePgB3FswMLQKZU+R!u6L|9VevqxXlEdEj25)gy5IwneJ)IM474 zUP9yt|N3`k3CJG=9X3y_MZ}Dpa!N)`ncrWSd`g{p>?S_&&Z_>M^ev~Cf!5MK$7(~o zmN3fLrkg6m^_dJX@YB{V_2yY;|DEkn2c4gee>z8AiknVI9^EZRl`)+S^)&2iJoM4iow z@Jb>8>9|Zx2?h%%rlk#O*t7(IvKpXU+yJ;(a%yS>;6wpdlrue&ZN+mkTgV0ANdb-A zn^iCx2SV(qzkoG7LtWPVqeHiSem*5fB#L!_6)+|y@p=KfiySxbA82u=j2L{f4Zvek zl~MqKRSMvO*=S&d(HX#xP5>Amz>7k-$H2@d2zopDBp<+W7aN$Oc&?L#E{;~(i2c_1 ziI)LDeldFidsqhWK|vus21(00YiPj2?XJp0*KtC@bGZ* zLD0`J>0o={b*0$V~4scS$#VMp?S?lQNfa}sM-_yk#F(yN( zjK;^uovx<<4JJVLr5ZN5w-5pDNr1b@Yt9tUT_2=x+w6cNwu~j7>+L#181@q6LRZez1AqU1c-2q@ybx zs4be@yPau!Ryx^%Hs>V;fn8bay?CfKz*kBDgc{xeK!k^chIUR()hJU}f|dg?hYP^z zC1W(XoDbW3^N!OxrlzJK3&3h|&jSzuB}_m&XW6op{m zDKiAb3x-=Uo57O!%f|k97JeP=fcb9}GW85R+YmrzmRD9XV&kZnBu4Sxi&l67rnr*2 zlhOghj|>bk!NG4~Y}n_9>k6Shdk9;=>Puw;zF%l_mz9gbLCA)WTf>u0c5-uho5p$&&Wt53h(WA z0M$+a#E>}yb)Zj4JXTJLUo#&dp&7mI9RV{byX`6z;ICp{VKwMQgisg)iS7_U;rXrF z3lvaZRn>KF0n%hpWr7kD69b4K$9@d>=hCW{e_vk*^sq=^m#>y7XlWxtLqpx0$XODJ zc-+4LS~0L)fnYoupt{Nj`*eGE2box`M6bMY2dI?tCfT8sh*w6ZghVfhp zYycQ14Y-jS>FDqs8~ zYb>wev7?WzYC{OxxoYJpi311J;*+TxFG}gb)NQgqRO93J{o2z?ZiLj2Q&D zDYZN^Z^#()^Jh>~lSldj@7*Rk#1<=;X%B;@m=tE9rm87G0yT3lFCC4Ck~#opQnkUJ z3{WP@b51x_)YVY{XmDtXvNh=AfP!@9tbKB70T*rtv#S81`WMjck-Gt!!E$1@=}1aD zkC&SEfH?&+v%9;CrQrze>fsTWkx}Z1m{ksNwSdGfK2oj>$Wwv{k(+;c`4?m&?gB>w zV04+m`w2T39nUiua26z>Sp{IlsaOTX49>2uwt!_6??Z+EQ(8*S%iF4Ulj9BAL6TXm z@Bpgz0}08uJ$B%CKLfM9&PYW~?FO1=+(1hR1o{iWqGv{BjWe+zECEb*Vs373Rdmgx zI!8|J-(Q8}vqb{B!(7sL0PGzHzz*)98!`~=V5MFcED)-^-T3bj!+m`sjVaak6%`fi zoB$x?<%dz`@OU++Ar_5Glyq5~j;JFV)L zAe5;op1cMSK0fg<7iz$qH&fh{toau}{QlK<@x2a(v_` zf7BTOFCX7e=k-cKBNaXc8dC*m86gcNxuh(Vz*+-QotvA3T%_R7A7GLyglb$fcXoFA zwue(g!oxRx;fTJ{34miY16xuue|@w75sTW|TF^H#4m>KjOvA+_iMUJLG$k)DQH%D< zM+BSibXtvI(s2i%4+JaEn6Lwg>=bZr>LoxeepDFr*@Jn77ho|PTU)t~pTcbI>^eq9 zq+wNS<-xv!hP3M4rxukmZ3t~57|<6xqvN9mkqo=3YH>K!&IxgGao1H}I8`u66WFPm zyNS7y5J}2e_nK5cXVFve@?`J1weWSO8x@1fW!>IB_6J{WdhhS z6`>d!W3KLjlQ&gI>NizY8~`V$1=Gfe0r&2r%Zit{$b0@^STPm!adSZB=L<$Mj)Ad% zfUI!LJj^<}NTt@8)=oGsa1ns9Aw6CYggc-QrX~bkEO?-grhYG3k{qJepyL68>IQh{ zuBj=dJ=M_IQt}c7HGpCp7+{kMyK#HD?c;M@3&2hS^A&+RlI4s9LX_ypg2q+@j3(sB z0E;KM12JeH44jBbfdL`_W)kK&BI@bc*#R;vVKDJB%Q0T~<}Y=btfr*+n? zRB&rcD=P>er?j**n42o6safp!iNqfY^0y&?{TdbtuNz2SaCo>OF#O^o=F^+|2_-V# z-n^ivv0+c6dDOw)ULP2N`1trQpsNRH-hT=t?;4h9Gn~Q#VT=V_ljyj(VgOH{5c%(8 zfBcUU3D8GlUel=L#mmjj4e2BU)R3T)5Z|xk7r471HAO(3X~mzSB1qH;y5e>Kxu+4} z4TZQT!lE9C_|O4~zkPTxu(2s~#0Ue9*#I<$0a(2~FpPuW^-27*!4uHRYikn$O4@Z0 zEgOTta3b@86LR~(Vcr}u0YLW%M({#de+>Yyvv?mGf3-eiRGq0E82vf~)Bwb2pc@Yw z%pm^=yrK)(_dVXj&|;64^m7-k^V^ePu;wPn0bptW0|kVu1+8{Xu^nq~~vX zdRkn>jP?2XrY$ZZp$FtNkcJ09`36Hxxf1Bdwhcp(GvsOqm01`HV~3HkrsUfFWS^2A$h)Z68sRB z&RW@QD!sP@FvEHi-3M|>=Z@vyn$tvPb6&q^d>%jg*dK<0^5cTQ>}6%^^x+p4F?qcO?GoGLfo~)^rfJK-y^j zkADJf;OqB}V;N)H|BD4Ucl_l8r{W#VskKuJ@F0jMhjJ!&k=>R6UpfX}0(cW@4i7p= zP;&rG{N`e%`b{Rl98%yDLV-#rrJE6G63Cl3HQzLGaEprA7YtbLS80+_vrLT`7B1S( z@Fl$6)5U|?x>v88(=cnO@@e9X0)?v1>5Vyn6m{^R*SRexvP>wX^;Bm(_F90l% zMj@uSSm7W`u;j^*S|eL%B05?+d~R!bK#uw|^Z@&uuFW(s^jqcqTQXG9-OsuPQwf#2 z-vWASgCrahtiyswV-4WlAQG-0{Oe@tF%RMJ>JZ{{YdgGAu% zoBp9sXAcc@rC}T<+q`W<9C4nbUdIk7d0Y7(w2Hp>tbGgV_%S7PW$NHwT7NY1=y5Dc zv#b`9ZX~6*Aj}*wFrhE#uGwEXX^bzaj7^l1=BMLR{_>+NGYvm#E@$HGR3vDmiB}=N zJ3=7#N0bJkH9?70&v@f>^v=`Cklw84-{6zTX&qY+gcF)}6F7_Vz29p;Mh`;H<(ccL zL{|3hS$eJt7#ErrGoacH6zuJe+TT=ja3?(+6D{&GA~7LMME^=$J9cs2c=8b0SOfAn zVc4Xrv2nlmOHQ=>SXH3^d;xyawz?Fv?_hyWU8b1-br#f@h0@0=X~DHVq7!X%QF}yh zCWeRRgY!vd*VTRRvCrKkFQ2m8kBL%CdeSOz!T&{rWAy&6e)2qDI8${sd4=&_t~~vr zY(HpRP2Chj|C5>F?Pw-a_rp!3ujq&1{?WHk>bV#d@M7Jy*vR%FZ+%i?5z@uy^|Zn@ z!}+8Jgv`^p4Rt7g`#wb%$E?XH*k>t;{ZbPD!l)32Z8O;Svn}=e^Sgart{Eip_Msn& z;0E24WVb!Rip9?xg1>txOAD^mUB)1PPeRh4RO=Ff021^yfs*Se#oE&UKOo921s@^C5G>9@` zNAf&v$w?7GWrVh3e9&k@C?3rZpW~(iUh19|^AC!KuA{Hc%yF07Y?w0|%}}??sF3M& z6c)daqD(Cw#Fu&&`i?pv-!uGL;fO~yiZ9-0I&-mVb z0KUZP<(p-$3fb>FCdggcP4Hi=#+_Y9G=15XSFjfIUqk6U9#cu;rUl=)D7}W#H`EXB z5B3wM;%^uajf+Usec(*MFi*xIFGAR;aw@Q}Yu`U#Et?El9~h1FzYO-SE`x_Ta<@>> z-#Wd6RuSqoG_wPOnJ>j^xF3&`R1i3G(uXodYg*a(qikThNVm4(m&)Lm58ndNk*o+y z>!Ez9xf(*u(=1H|lE>X~Pb^23%&VPm!~YoRThcPX5{LP}4nNBGQ>Oe@H5}omG+f@) z(s5;9fr@^Auy%G|k>82IEezGZb{$wv|1Ukk?d?s^TPNKn43OZ)5#3MucYMZC>F zoF?Fwbd26bRbEjcN=J4S3QGhz@l0jy8x#DohDEK%V=wxERAx;T(6i?&O%@}H|Yug>LJM57dbWexjwDbb$ZH+gT#=Ev&0s?+@bND^7|z=NM3{Xv^H zK$E6(3oUsDLc|!u76Ff1H&)}F4Ipb>m=W6aphc3$ESsg;lo7zrhQ>FL+Sh-GpOb~l? zT4_2{)&r4iF3DhU?QSom{2*f8-_7rNTV!YIR4+GYC=e?g$naFHT3+$y>xbWMUZbY} z>e$ElzQNSZL^Z7}FPZ&%U%hr8U6FC2>kO4r;Q{unnifU1gcbOa}~&C3B%=Sdd7u#TJt_!iy!Qw-4&f}5s6 zDckxMSA%0wfaSrIwc+`DmqndV#gWb_@VLJMtz8Hyq zG;V1{Cxb<(7JrAer1dsH(0{#A85l=k@ktYpIF@qp;#llyymS$fm227$F4mIG1j6DoKNbL@K!xxHF5pk@DFw;f<57-B2$iZ*^Yo$WA#xwgXv?;Ft7efhxHNs zcG9GmoYz(fD{qTJfE+8!=Lh_#r&4%tZ9DP0N3Y2@Dy-E=HkXc#3sQO^zpXaBu&X|N zS)uO<$qW=C{&ujj)`1n^j$;#R^;l1ZgpBP`r z>eG5j*V<*;(ZJ*8*I}5xB|KW`BuhHOgM^M%p3+RLlOcSVEZOg`-kDo+j|T%;`cc+k zwpP3PJVr&P`q2N$v%Kg%lF7Bn%NrKs=2{-t@JEa5xA7U1Mae|@?NOwXh*r|+ooh!dD ztl@;fpSXRoBDvngQ#liU8D`IpBy(ISRa{^iMLg73nX<#`Wf@m<+S^tpP}%q8_7)YG zXHg-3OIJ%q;hRZV8S9b!f4aV-CnDF$t4qt_YlXKriHx4*50)PgaV0n5j=eqD9^a;6 zEOC((&A{0};Y9!Hy%buI^U71v_=K^#9RSAB$%czY^#F@}c9*3N_TX*0_>aOa`O{g7 zpjS}P=u@|+DjPqdUahw4Az|)t?~GBveeQMmwnxJ1<$m>`B-YrCpe^Qx84h5 zaxfsJxY4B((G%)5HLGIQdqaUJD=O%Eyo-`&HQ>Ac%_0b6-C4AS)Sj zVZ28>Cd>?26lD3WPg1#|RNl}`vY@Hu$f_CnH?%9VGEbMjWN!PoiftzSAjeCI*|ig^aif^pJ~s+0`&(BC^b$pNMv;)gY)ARJDXetZkIwd4k&Tc|f-FCze*$-dc(_Y`u&js;d`bO84{H8RNEE?VEtA4}?ADsS1i!MNm zPD-JTIWaxI9=OU-S2lqdHW}6&k8{Y0PQXTB(;eki*SD{6R#fz$b;+|QC7o&s4jev? zb`y4vstSp!5a*@Y;LS7!o34nNLVtO*cpNSJV%OGH)<4~E=9W7ft-kFH8#f!x8y8^* z>Syg!b7P-B&D#GB&Z#LOVLP>Ew{!M^xa_||wNn}dg=X&ptv{R+N#UVJ9l()&kfsdy zii)$3mLKg{&(R18Zcd|EC2Z!F-3eLHG>8)xwTbsN(mRaEU@gkihw~9}5-@{6SXy!V@V>w>8~NM( z{`ps01OjE7XZug$c(k{Nx=1wAqsgfQ{5J8HPH9LMRE6~d9;`0A8?ELqW*0Dhu9?)r zbi&QzSoQ{K zRy?&rz3#Aa%wsj28`YVEg<_vA6+wZTC&=>MoI$U$>sl3j^svC)*C6PRRMAs3-lZYh zIo3!Wgibg-Ec?{-V7Ys9|A>k}>Y`xtDao=F!CQEkmCd-N0-Xs#{;XX|?e?Kq&-FUh z;Pz5?H6zS{kD4fxI6JIaM9m#jkpEkM3l5*VhXx1GOAx;Jv+YC*3Z$Z=G`FFUYpnW@ zja&OT8ELc#9dPs=4-3Sd-NtJ|oQY!cQFQQ|dOOkghVRjAaXU0<RV*$oRtc~hrC_5+9~NXKww&4?>{H8UG0Iq1OLUj2U@ zYfaSTNWp!vS_!kZ&1e8lK!WM=sKms+cUVk=*YL*74nF>-0{?TFqE#4SnH62nVV(0v zSy3og`al7-|La#oY4H*AelQgHoXa?SaHmi2pr6l;(8$}GakVpv`35ESXJv`m%)S%p z5S8}S30<+vPulk!CE(ED#4Oj~ijSDAL-8nMPZ>?b|`X{j+{{ogVigJM;Cm z>y5s6;aiATpjnW^+vOPV?;)HfEHvw=V7lleFEC2tp(1=AgNmyTQ%al`jMaqi!)21T zn&ho6D)>4W#CU)IWoK%KQ1Bsy<7-zIy&ojP2{X8|`dn(!^Mqb0YgVaeBc#jv-mfRb zgThensX|yY4nImxZ64wJw1nUW z`@9^pL;YGb?Kvskiz<3J7~ei!MVYxq8Tm4qoIQ`#Tv3BqwygBMhl|>-8hF4=VsPLj z@8LNw>uXg&;9~rZ3P`1)X@cwOA8*182cQT9g;qTw_pIE^9B>}gLtfU~vD9)&XhAW_ zcEDH%b{%!yTJlJXgP ze0hT{U?61e-z^+a{|#4`B+dw>%@3Cy=)Uc$c`7StnPL5@zm^UIT!w8yBkrCZJV-II zxy^X%GTb&Q%b!)DyFZc;wbuId%O3=w7kSi2ji`|+AJ zlQFx#6jLkNNSquEga#i;gt5*~6mwv(^5Ntw3c4D5St+QbSU>0L_m4Cym&JBkx@>HC zDc$Y_#zue1RT1-B7%Tb>H0g`aRK@B~ejHl5Lprv#?W}<$Ms_ri=VjdOe@-JJeuTPK zOtQNeGlZOA%`mcOa~V8&5q^(T2`c;>V2eOfjYB|se0Eo{=1OXflNM}tN69{?+p(W> zRbb}q$PsO{r<9bqVyC@mdz+O9!!?*fcOSt2gNd(5oE&+M*a{g%98uX6EClck)uB1?_)pN)} z3qf4Mxj7$5kq568vr2n>yQYRgUh^wDRM*bc_BZP#f--mn+u~BB4F|`1J=^yn-7jxw zaosM`PqRc!>+b3AF0gX?_0QIsn6SXScl9^UqIwc+x_GFM6%7a@P^1%FEcEbrmsKKs zP4Zl*8B|Z}Y$9Q7p8pm8W?!_1=MRy6Tc{dLs71i*wBqmGK_U}VncwLTk|M1X^5ecj z{86vAT$Anj6$QOO)z9tSug;QEGJgy-y!*_eetLed0HSIT#-HAL&aNEyZm{QKP~gqW z&a8iz^t`?iXjX^K?+XG25!dIYjgHiuQ7W%FZv{f9bTAn;OiyimLG@)%RK*|j~sz*+<+NPO{d zguSOIINi^aclGqPq__Gpyd_lF0Uy*Cq*qwcail%8WWY%0-V+wwDX@B@(`lHEq3rXt zjl;_!i=^|W4Y#r^IW6@&+ct)Q=q?*Q>g>9yL|K44iYi&+b0E*IK&h#1t$maTQ5@}&C zp1ER2$2fxAL*F1Yx^YE=_4uH-fT1}+HLvAx+VGvu4a>t=wc$1C?o9ADjN!vYe&Afs zsEo6&H}?Z}!Mf|}<=s)*{pXI`K zWci)SXW%ntWeV|_#^|ksqx79ifrg?^t^Q2qUAG$E=GRQbp`R~C zCt5qVN_hneyNB+mqmunj_C8WRt0>P3y3%;eIa*|79XQJtL$z zJM$$WU&qq+WF^_ELN>AR2j;2NH+3TXIhou)*ag9=Owy8qGJ@}XYSiS1t-1dHz@0uy9?Obk9__Jrv z_>6(S9^Qo{-AW;s0_^5`pfYG&ZS6(5onZq$e*Uo8jp)fW@_XxA!p*c_OzDL!NQ;Mv z(|aSk;u$)6JRb*t0Cr(uYKjy^8Q+Dt0v4DdF*DnNoyOZg3XwZG+}6<3>(P;#egLj_ zXDlkEqzen>U)_i+&Iup^GUoIxdGMCv6A&O#kYpqs19ot%{>no%T;jV$FVy{^RSfHi6x5M;M$Kr#P;OSLK z{?{%0OPMLpUF%H2o-vNk=x=j3mp-ul*y>^LfrHDE&Dc~k0zupjrRzFOujuNMf9UO1 zebUw0+2(jrMc{GN-AURI$xJffnmBqgl+G$ySXjJ!Ob&!%gV>L)b&N&Omb!NKrJbfZ zBW`LAMMZXCY>1u7fZ*GpYzR{_0UpuZ1g-P18qCeew|fqbLTDKnY@r^Weo0(R%*zey z&2`KJ6%OzLC5TiRpa+VT`@OjopST@_|pc~b0TFD zdqE0dzSm(TlI7Q|&8uo)Ky#yHGf0L&{W8>j1aA0Kqb?sUQ1-ZBpGsBn&jlv?QGE4! z>jBK>d{MeZJJbb^0!FIe1PDVrF(!Om9C$%5bXAR3+xOBlCU)zNLL-8Xc1Eo$Bif5w zTG)z;in1%xHMsrPBtjD9;7wB~GUQ_2Z8q1H z;r@BJvpl1rc-WG3Q(Q(jah|m?!rz$b;wb` z)4rvuQPsJvX}?*BDy6(@O1x>xe56N@&r%Ydr6s8blSw{94Hztb9tnOF)q%Tihw}`r zO2B~vVIDg+Humxh6eXyJ0qN1o%I!7~I4aHqsgSHl%kUQsyce*V~!hn>;aECxgGhPObpD5gL%-%TLP- zu7Vw)T*3NWlDQ%ay(zVDEsgIMh?2nNEAd>8Kki1;wr(=n^sgZhDQOssQGg8uY^Y^5?EqJF|pK!9|SL}H@#=f^x@$&L|RLTL@a*MI4pv|Tl3nIjB zDB_1q8rnH>G7~&hI7ImFVM=Xm?htk&R+~vx6BDM|xeBa;f`Vh!wuHbH)2^k)gmY69 z4?9V~6q9dG0+*QEAv#0l^YtASQUy{hgB0{3cHdvHT?O0J9(XkIkuo-M*@5%xQ)y35 zIAJ^(?}4U;1J0M7Zc%xAlb4f|1dm{Y$RE@XqOKDc5qZJh-a>NTHNJdvYW?D|1sydt zTIfORue%3`#pB_+Uuy@9?`o(fNOk1H;1)z>F=wsfp!Qy$h5NR<70JToD5~VQOlsW4bZ~!Z#6rznauk z>M5^Y!D|AK5pmP!p`ikE>OmgxOw7_vL7F9veZ%ZJ+rkPO9VPI5Me2}7xve~w9)19y z$}u)IzK7bLB2cCp=u$#3I8@Pw0@7NX4Hy3Tf8;N~+VV8GL7E*du%EQS&u6J)p~-{x zL(4vn&dw3Ni*dgEFs%iX^!Quiz|=f@xFod)s-G<=mTd!ez=J}u-{Y2jE}`!K`wf<5 zY!Xfzcj*RkP1Hh9vMtE@pfarw(n@;L893e?1{=%-LrD|}eRy1f5RT^N&6{wrmy_Rj z0*LT&leXce0G7QF91B{C2q?^YRziaAZ>hx>3RgHEDwP|FBdNn(aRNwJ!0K|LVYLFW z_zMTc8JDD_B;4G{NZsNEGvsvB37E!ssH1#ecKr<=DC+QMf_Kd|xS_ArXeG0HAx2&v zcqZ(s!}yW=^S!`-wH&<(l3QC~tl^sYe*6lM|LEXd+Y9v`R}7$S5WH3(*BWaHmId3| zcqm+YrI9;7278SL;�UJ0085a0!XqzP`SHi(AepRUJr_8rT7yxT3F5)t$^v5vvvs zK7?XELwe*$PNctUyQ$CvrmrGUggb#%mLAME)l^hepzGqK36Nod9R3qLyCa|&>^!Jc zyTGoJG*X2M#zlU(ZBs0A{0J!&OxK{tTR@5u{}ZUVM3F(x-;3kr|8~g6xlr#Scmf{n z&L%@e;yKVnc0%t_BS+D#94#m>Clg9Pef`zNiA7{^6Duxbry*)V$B|c7M*442OXYKk z71ib<$;Hpl|6v6ATQb)0-4A#Y(jI?`x4M{$4$%39pAsf>k5K0YI!*NTeP+JNAJ>Ep zls2G8H{v_$#tdc}g%*vkiera+=9Yy&oha^m4{k<=N#GQpTl>0@m*jNAt0s9PX{<+ zL3Q8w^x|)mQ3_2p-KLVEosEr>2a~I-UV)w@#K#9uI2co@BV2iO_IjSt{AEe^Tv$z6 z-Q-&TNay6rkfK}PuI9V;G3LaH70>~U$@)d`tvjiOsUNlCu#cHvMPScu<;o}XC*_JG zclvN~fD#iv#`}HECJ(i%^PM4R%Eiz6$}8eJL0?qZ!eNAYadkl%F{HByCBf4uAY1Eg zU_p&6fX^w);-WO-4cZ2l9;{L)g?Ya!w3(9U<=Put-kR6YIZtlrcPJV8dJlzS48E$S zd_&Gc064(RpQ%90o_?$LV8TJR{t=^R;pv{P#fFe;oDK;Zn1b`<(XPxe2^i;31~&EV z3|W5~BmIXD_W#)(W)g5>qM@epv|PwV#-3CGp=7k*4d$Y=S&MWq&yQ+2t|I)~w7FCA zi$`(Kfr-_R0VX#3fYRKUGSD>%)+(1*-{3P@0_}-DkQRA?Y9uGb7Rx$ru zKo*q?C>I*SV)vHjN<|f9J-jB4rTb%z=P0rdnTddmpx zb^Nfj%taDWSXOLxPpQZS1h3Q8l^SYR%}Xt8t;UXvjGIZD*heX$EP<2ln#g zX@9BNsL>SYeksloY@9(nz9o<)Id0__7||bVs3D?oix9ZiW;)(Is_$z_#_!Kk5sO?@ z#{-TKC|ne-vEk==+Nw*<0J^+2{uLuUZ60g86ZYps^gKI-*$74B2c0pC3H*q~d1Ei9 zXKPi`@~HbR%_M;90|!WiV!ZIl%3m+xp|xWPfp0nkp{^8RV5e<=*4JV5B{*}mLnCvY zAUUdSa#A2%eiJ@kc+X5YZ^?|;^9GYZF6_86W*0?j@^*LAB&NhiGCusv zrLQ;yYEaw*{+BzEWu(s+;v2L4+xp~=cvjAUMJSA$QmZVEO z*9}(QfmEd_XN7qPPGp@KUmQBGs$1@UcHKAG3ntc;F!9iFlLG|fFu+C7w>BMC$K zFIM2bEVRjTs>MR9Y!<`LG*uUoqBdK_qw~hsFNd2(X{M2#J9D8~z~A!Sf+90fopu6H z(SYbfxIDe61X2_+kCMS~=}7$k6C1{m8Xv`^5%e4|ain0dZ&0cP!jQ9+Gc>k#nB5y( z47M6^1jfyq@+d2l5&}@BD5b(eO={nvA1B%z*@y7fmCaq zIikUc@XW33y^)b|p!2&Uddcyl^M4JMZm!E0=sQ(e**UNP>a_(=62_;r5r?%VM5o#+ z&p8xyt#=<9cKOeJ3Hr)g;`yfGR5b~)16|?#pkBb}KsfL%N58gE_tV{&lhiY{WV3!{ ztu`pfKF!GuKS=-4F??tTOzuYk4fWEFh`KH^li*r5bh36wsF@T>wpV+gv`8c2;atn^ zF2?Sz_2>KkNE^t}3=k@SO=FA|hwqLh>GBZ2wb^QP{f_nhnQZrhL zaX4LGgdRe3;2n=+ePdPW)Pvkbp1EXp))f)j4@*A@^m2e}SJ+?k4+?EZ#cH4mMj{i> zo!OdcwzYyAUH|r43RN_WpyVv3OV^(=Meh&&92i?tQ%{rdz~!XH9`Ej+($l=?MLg4d zo7O3ll`-XI)bwK4l;3XKw_VF6s6fuSqF_xt!EHiS!Vr zHx1)S6uU-qzaQT5FEeio2>PH@J2vHyJqq5$8+cW?w?tvQFqt0!gEai^)Yg)a{{fbL z8VGm4rnl$EGX0)w#ylo;3SVV^Q^L-cl@)Qtn5FyHl`1+ltnreMaZ&4RX<^QU zy!f+2*00Vq?f2@VaGSIG`&purcMTV2Z}o<|#^I++wk=|=%1E1z#`PEr z#?7GmbTa|!`Bg=;MEwlYABwDu4ryf%7lbX@x<0+;jlsvg(BghEL`F#5zdbw8&}wNl z`r3?Lr1pi*?w$(FyN}X8O66p=qyIGG72tZ~uIZSCv3)-P1kMeEzwn;UJef9%8w z0Jw5KNq-q*4@_)SkyAJ((A85lmvkCcwdHRct@Ry3!P@QxJ&-8@k7+$M-`m$^Q*w3O z$Cpr;Fs6Hbczw3FJwdwZZMoc@|Ik&{=uDhlqi2IFL=V3IF(Nc&Wh-?2DsodciN-G= zh)=?#dh-)*(2lBL{gaD%c_W@zCDeQK8&A(|9}L>~*)DkESxnyu*kUjb7d`TEtZozq z?$PshcQPL6k7{hU&L@1a`tG&?3@!q4r^a~zIL+3`!O&_RfU;<1hjhg+=~L$bZC{49 zrC05kJV)ipx?}L>Nx1mA+ibJrw)RHK0uX1hCXtMaH_%u#OdO--Zo8%^jo8Nv5ZW4v zhDzMDNe)z=#5O1sV@A`N%K6+$NM*dCG48JkqKy&k^Oi~Y zE~dm`s>a`4`WgA>cRZ9NxbmxtruUu`EUtCmL(9m03%rv%uta(^p3~%cmVoaPQ z&!QCs@gZ#g!v4&NsuVO`2+`Gj+3~hJe_2VQoY5cw4%KKj4 zlk6jjFUK=Ds7?Q1N=vLiOe=APRmofHLa!XfMRe1}=N2vox zGfSIR?<+Jfj2p%RgSqzuL+pRo;5}U~_b*8|_wU4-R|`%Fydu)_Gj8`hB}Mb06NIot zgM>i?6&b6JnZPhxCe*QbPXF)D->-3P--2jBg zqzAH7cKdQ3JaSqz#cjS)n@w9LFT%iRuC zh{-8>^I4b#QbUsXwYb~n%1s)lXL#}jT%Q+20*A+|oW1YiiC5Qd|NiaO^4nSo8GYv#qAkDEc z4I$A?q-S|a@^R7Jy4L2?n0DEiaisoDQ*EYHMwSmF8T+Mi)n8jgO?-?wjM&Ss1efB0 z(vX)T=8C!2x7G&-hBJRu4fnI7{pFD0JV4ja$uUFeu~_&S#;Xpcxz%Gz&Cog5#Z z{-O#%ib2d$f39NdQ8;9ao`-S^N{yNvbOj@Gn7ooC%XSzp9JC}6&97k@WM@M~ZDWTC zy;MYdODkc3zX3m7D-*`ov%_9n8RHl2#zH3&Akj>8)df;Y%_5G# zlY}3p#_+}-yZJR&I?xC|PmLY0yBnDxn`C^o8r_~?6irx^X!NEjgj8$ftg>K7g&56c z`!0mkd?PAMteZ@+ZOp0~ztCPYVu!Gjxt|wg-R0(H%i%%>n22AFdzC*irX){(NKfyj(fK84BK$PM$dccXC>XX~eQdDBuu*t~0;H)LJK!xPXa`;VZ)r3H{FMjijN% z#Ypc6ta zUT$*m0HAy!IKlShclwMXJ(qa@N!K-4yiIegsOr4jxUQ+bx1O8^%0DFz;-FG&S}yBy zjd&lzxtSA1NJZ*oc0@2A*PY5RJvC*aSn{zx<<3%!P#0#X&)-LV9@=tbYMa%NZ$6oJ^WXpdKnL~xIo3flh?e3g!ZH0)!N*QD z1-S}G|0HtN4RP;dg-QwwxfvU9+N?yZ0AbfJLq2%9YrXj*-W00O*oocTtXAX1z#gl7 z6KD^W{zgY0ua7>I)8G>prnpH@LxWc^Nc8HFxH57x@16>5S`PocF+0oQgLl8rp#uQJ z{A>UGUnf?Fp*Cp$XNoniA~g{{)V8@pD*)HXxsnaQ@TJA={gkXM(g=*l%nm^1IyySn zUfrOoNciV+lBMoC0l5X+7qcsN_k;GJ+!)utuBQvDlWkh>!o*E|wRkmH0omD3jR9H& z?uszEMBcVn<1}oy4rEDR#sQ5y%s+>ro-MTwc%Bdg#Qjz{QucmVhYSr=2H)! z(O;OoMYkq)ji>Lv0ef_DD<1&zPbK9}883eSSLmmU`tRbxvK~o`gO2$asBaN<;ucek zUalj}Q@YQ=e+Ge#Iads&hYQmwiQkrnaMNuy1CpIT6HOe2bUh#Le;LmN+Wh4~A5$7m z(Zwp~$t<=Xl@|*-t#D8Xwtr}XngK}L)*Ayo z4&Gh-ctJxI0ENcc@xQD z-lSB|<~ZgIXyh-u*5H9Y^o+XI?yBK+SeSQ!3=L2a6bd#@2t_6QvvJ~Mpu6w{iyJ(1 z{2iRwmYQmqi*QcDyHq(g_kHoj;5jU_sk ze&)YlX$Mt4U^|73$XQA=HLX1Zo*P`vOO2!AqOmorCx=Bo?PwjR=;bI#3_)-XzvRD= z8Q@~8d}6Kr1QJRH5KzPGa~%n2K=zK5qKt4*h+^)GFXk3EA>)!yjIk*cx1`UvQ-B+Fzb90ZGP=}sbLLZ=Zmy!B;;EtNVkJ)M{QUQE(~G>) zQx;94e%$1Sr`rEm7Jr-Tsynv{0$$h$()D!;zp(oQf*_($b=st{*C>NXQ3g@mHeXg{ z^=+z@N*`GbPDcU^2huimfCg8SBy7fWhO7hGk=V+Q#WW_vV+mjh1m8$s5UWOi4!T;& z{(ne^v9d#4@|^PY@#_MepenE4QsaV0^$T(>jBPFp0SfRRLA`liw~u;9GTE4BgR3WRjL=ituCKnMIRg45Y}yN0z%F*#MyWXR1YL;R_yQ243B^ z1$@O!kq^gHlOG>fsW_EWmqWQ`I{5vL&bz@mc4yrvQo%V9pmI1@dKsGzUc#UwN!n^* zDNh;@2?jZroB|KS$&?2P2#2{jaoku^@gWf~yS!=C%U#vrU%&$qapdE{=Dw1874O&H zPY=Ns!IGYb&z_ujtAqqQ=GU0p%fHjDpA}5ES2G6VmOBip7avgxWH5%lsXw8s+nrdt zexa!bRqjgxx=Aj1-7v{$LRe-@-w;Kjtsj&Mgh;fN$nO8l1e}`ni^Sx#Np19Wdys4)7@I#0PGMd=5vAf$z^*L@kg8^XkkWX&CSF9;SKUdBF z_NkPR_(aj)hZ0lIe^$)%|1d-Q3D529=bNh}&;9)Q&zyG!(d^8BUZ8y{Dkm{v|BDYc zSq%z>L8yLDB{~dgRh&>q8bh^nm&FNr0IAX9{ADcF)Tr7J0vCDXg#BCN&Ak*`Di;)d NT~*grt5C5D{~ypK#&iGx diff --git a/docs/images/composite_device_hierarchy.svg b/docs/images/composite_device_hierarchy.svg index 441ce3f..c66e1a8 100644 --- a/docs/images/composite_device_hierarchy.svg +++ b/docs/images/composite_device_hierarchy.svg @@ -4,25 +4,25 @@ - + classes - + Device - -Device + +Device CompositeDevice - -CompositeDevice + +CompositeDevice CompositeDevice->Device - - + + CompositeOutputDevice @@ -31,8 +31,8 @@ CompositeOutputDevice->CompositeDevice - - + + LEDCollection @@ -136,13 +136,13 @@ Robot - -Robot + +Robot Robot->CompositeDevice - - + + RyanteckRobot @@ -151,8 +151,8 @@ RyanteckRobot->Robot - - + + CamJamKitRobot @@ -161,28 +161,48 @@ CamJamKitRobot->Robot - - + + Motor - -Motor + +Motor Motor->CompositeDevice - - + + + + +Servo + +Servo + + +Servo->CompositeDevice + + + + +AngularServo + +AngularServo + + +AngularServo->Servo + + -Energenie - -Energenie +Energenie + +Energenie -Energenie->Device - - +Energenie->Device + + diff --git a/gpiozero/__init__.py b/gpiozero/__init__.py index b756bf1..a89e973 100644 --- a/gpiozero/__init__.py +++ b/gpiozero/__init__.py @@ -100,6 +100,8 @@ from .output_devices import ( LED, Buzzer, Motor, + Servo, + AngularServo, RGBLED, ) from .boards import ( diff --git a/gpiozero/output_devices.py b/gpiozero/output_devices.py index 62bc911..1b3c2e2 100644 --- a/gpiozero/output_devices.py +++ b/gpiozero/output_devices.py @@ -898,3 +898,313 @@ class Motor(SourceMixin, CompositeDevice): self.forward_device.off() self.backward_device.off() + +class Servo(SourceMixin, CompositeDevice): + """ + Extends :class:`CompositeDevice` and represents a PWM-controlled servo + motor connected to a GPIO pin. + + Connect a power source (e.g. a battery pack or the 5V pin) to the power + cable of the servo (this is typically colored red); connect the ground + cable of the servo (typically colored black or brown) to the negative of + your battery pack, or a GND pin; connect the final cable (typically colored + white or orange) to the GPIO pin you wish to use for controlling the servo. + + The following code will make the servo move between its minimum, maximum, + and mid-point positions with a pause between each:: + + from gpiozero import Servo + from time import sleep + + servo = Servo(17) + while True: + servo.min() + sleep(1) + servo.mid() + sleep(1) + servo.max() + sleep(1) + + :param int pin: + The GPIO pin which the device is attached to. See :ref:`pin_numbering` + for valid pin numbers. + + :param float initial_value: + If ``0`` (the default), the device's mid-point will be set + initially. Other values between -1 and +1 can be specified as an + initial position. ``None`` means to start the servo un-controlled (see + :attr:`value`). + + :param float min_pulse_width: + The pulse width corresponding to the servo's minimum position. This + defaults to 1ms. + + :param float max_pulse_width: + The pulse width corresponding to the servo's maximum position. This + defaults to 2ms. + + :param float frame_width: + The length of time between servo control pulses measured in seconds. + This defaults to 20ms which is a common value for servos. + """ + def __init__( + self, pin=None, initial_value=0.0, + min_pulse_width=1/1000, max_pulse_width=2/1000, + frame_width=20/1000): + if min_pulse_width >= max_pulse_width: + raise ValueError('min_pulse_width must be less than max_pulse_width') + if max_pulse_width >= frame_width: + raise ValueError('max_pulse_width must be less than frame_width') + self._frame_width = frame_width + self._min_dc = min_pulse_width / frame_width + self._dc_range = (max_pulse_width - min_pulse_width) / frame_width + self._min_value = -1 + self._value_range = 2 + super(Servo, self).__init__( + pwm_device=PWMOutputDevice(pin, frequency=int(1 / frame_width))) + try: + self.value = initial_value + except: + self.close() + raise + + @property + def frame_width(self): + """ + The time between control pulses, measured in seconds. + """ + return self._frame_width + + @property + def min_pulse_width(self): + """ + The control pulse width corresponding to the servo's minimum position, + measured in seconds. + """ + return self._min_dc * self.frame_width + + @property + def max_pulse_width(self): + """ + The control pulse width corresponding to the servo's maximum position, + measured in seconds. + """ + return (self._dc_range * self.frame_width) + self.min_pulse_width + + @property + def pulse_width(self): + """ + Returns the current pulse width controlling the servo. + """ + if self.pwm_device.pin.frequency is None: + return None + else: + return self.pwm_device.pin.state * self.frame_width + + def min(self): + """ + Set the servo to its minimum position. + """ + self.value = -1 + + def mid(self): + """ + Set the servo to its mid-point position. + """ + self.value = 0 + + def max(self): + """ + Set the servo to its maximum position. + """ + self.value = 1 + + def detach(self): + """ + Temporarily disable control of the servo. This is equivalent to + setting :attr:`value` to ``None``. + """ + self.value = None + + def _get_value(self): + if self.pwm_device.pin.frequency is None: + return None + else: + return ( + ((self.pwm_device.pin.state - self._min_dc) / self._dc_range) * + self._value_range + self._min_value) + + @property + def value(self): + """ + Represents the position of the servo as a value between -1 (the minimum + position) and +1 (the maximum position). This can also be the special + value ``None`` indicating that the servo is currently "uncontrolled", + i.e. that no control signal is being sent. Typically this means the + servo's position remains unchanged, but that it can be moved by hand. + """ + result = self._get_value() + if result is None: + return result + else: + # NOTE: This round() only exists to ensure we don't confuse people + # by returning 2.220446049250313e-16 as the default initial value + # instead of 0. The reason _get_value and _set_value are split + # out is for descendents that require the un-rounded values for + # accuracy + return round(result, 14) + + @value.setter + def value(self, value): + if value is None: + self.pwm_device.pin.frequency = None + elif -1 <= value <= 1: + self.pwm_device.pin.frequency = int(1 / self.frame_width) + self.pwm_device.pin.state = ( + self._min_dc + self._dc_range * + ((value - self._min_value) / self._value_range) + ) + else: + raise OutputDeviceBadValue( + "Servo value must be between -1 and 1, or None") + + @property + def is_active(self): + return self.value is not None + + +class AngularServo(Servo): + """ + Extends :class:`Servo` and represents a rotational PWM-controlled servo + motor which can be set to particular angles (assuming valid minimum and + maximum angles are provided to the constructor). + + Connect a power source (e.g. a battery pack or the 5V pin) to the power + cable of the servo (this is typically colored red); connect the ground + cable of the servo (typically colored black or brown) to the negative of + your battery pack, or a GND pin; connect the final cable (typically colored + white or orange) to the GPIO pin you wish to use for controlling the servo. + + Next, calibrate the angles that the servo can rotate to. In an interactive + Python session, construct a :class:`Servo` instance. The servo should move + to its mid-point by default. Set the servo to its minimum value, and + measure the angle from the mid-point. Set the servo to its maximum value, + and again measure the angle:: + + >>> from gpiozero import Servo + >>> s = Servo(17) + >>> s.min() # measure the angle + >>> s.max() # measure the angle + + You should now be able to construct an :class:`AngularServo` instance + with the correct bounds:: + + >>> from gpiozero import AngularServo + >>> s = AngularServo(17, min_angle=-42, max_angle=44) + >>> s.angle = 0.0 + >>> s.angle + 0.0 + >>> s.angle = 15 + >>> s.angle + 15.0 + + .. note:: + + You can set *min_angle* greater than *max_angle* if you wish to reverse + the sense of the angles (e.g. ``min_angle=45, max_angle=-45``). This + can be useful with servos that rotate in the opposite direction to your + expectations of minimum and maximum. + + :param int pin: + The GPIO pin which the device is attached to. See :ref:`pin_numbering` + for valid pin numbers. + + :param float initial_angle: + Sets the servo's initial angle to the specified value. The default is + 0. The value specified must be between *min_angle* and *max_angle* + inclusive. ``None`` means to start the servo un-controlled (see + :attr:`value`). + + :param float min_angle: + Sets the minimum angle that the servo can rotate to. This defaults to + -90, but should be set to whatever you measure from your servo during + calibration. + + :param float max_angle: + Sets the maximum angle that the servo can rotate to. This defaults to + 90, but should be set to whatever you measure from your servo during + calibration. + + :param float min_pulse_width: + The pulse width corresponding to the servo's minimum position. This + defaults to 1ms. + + :param float max_pulse_width: + The pulse width corresponding to the servo's maximum position. This + defaults to 2ms. + + :param float frame_width: + The length of time between servo control pulses measured in seconds. + This defaults to 20ms which is a common value for servos. + """ + def __init__( + self, pin=None, initial_angle=0.0, + min_angle=-90, max_angle=90, + min_pulse_width=1/1000, max_pulse_width=2/1000, + frame_width=20/1000): + self._min_angle = min_angle + self._angular_range = max_angle - min_angle + initial_value = 2 * ((initial_angle - min_angle) / self._angular_range) - 1 + super(AngularServo, self).__init__( + pin, initial_value, min_pulse_width, max_pulse_width, frame_width) + + @property + def min_angle(self): + """ + The minimum angle that the servo will rotate to when :meth:`min` is + called. + """ + return self._min_angle + + @property + def max_angle(self): + """ + The maximum angle that the servo will rotate to when :meth:`max` is + called. + """ + return self._min_angle + self._angular_range + + @property + def angle(self): + """ + The position of the servo as an angle measured in degrees. This will + only be accurate if *min_angle* and *max_angle* have been set + appropriately in the constructor. + + This can also be the special value ``None`` indicating that the servo + is currently "uncontrolled", i.e. that no control signal is being sent. + Typically this means the servo's position remains unchanged, but that + it can be moved by hand. + """ + result = self._get_value() + if result is None: + return None + else: + # NOTE: Why round(n, 12) here instead of 14? Angle ranges can be + # much larger than -1..1 so we need a little more rounding to + # smooth off the rough corners! + return round( + self._angular_range * + ((result - self._min_value) / self._value_range) + + self._min_angle, 12) + + @angle.setter + def angle(self, value): + if value is None: + self.value = None + else: + self.value = ( + self._value_range * + ((value - self._min_angle) / self._angular_range) + + self._min_value) + diff --git a/tests/test_outputs.py b/tests/test_outputs.py index 444b1d9..eabc414 100644 --- a/tests/test_outputs.py +++ b/tests/test_outputs.py @@ -920,3 +920,115 @@ def test_motor_reverse_nonpwm(): device.reverse() assert device.value == -1 assert b.state == 1 and f.state == 0 + +def test_servo_pins(): + p = MockPWMPin(1) + with Servo(p) as device: + assert device.pwm_device.pin is p + assert isinstance(device.pwm_device, PWMOutputDevice) + +def test_servo_bad_value(): + p = MockPWMPin(1) + with pytest.raises(ValueError): + Servo(p, initial_value=2) + with pytest.raises(ValueError): + Servo(p, min_pulse_width=30/1000) + with pytest.raises(ValueError): + Servo(p, max_pulse_width=30/1000) + +def test_servo_pins_nonpwm(): + p = MockPin(2) + with pytest.raises(PinPWMUnsupported): + Servo(p) + +def test_servo_close(): + p = MockPWMPin(2) + with Servo(p) as device: + device.close() + assert device.closed + assert device.pwm_device.pin is None + device.close() + assert device.closed + +def test_servo_pulse_width(): + p = MockPWMPin(2) + with Servo(p, min_pulse_width=5/10000, max_pulse_width=25/10000) as device: + assert isclose(device.min_pulse_width, 5/10000) + assert isclose(device.max_pulse_width, 25/10000) + assert isclose(device.frame_width, 20/1000) + assert isclose(device.pulse_width, 15/10000) + device.value = -1 + assert isclose(device.pulse_width, 5/10000) + device.value = 1 + assert isclose(device.pulse_width, 25/10000) + device.value = None + assert device.pulse_width is None + +def test_servo_values(): + p = MockPWMPin(1) + with Servo(p) as device: + device.min() + assert device.is_active + assert device.value == -1 + assert isclose(p.state, 0.05) + device.max() + assert device.is_active + assert device.value == 1 + assert isclose(p.state, 0.1) + device.mid() + assert device.is_active + assert device.value == 0.0 + assert isclose(p.state, 0.075) + device.value = 0.5 + assert device.is_active + assert device.value == 0.5 + assert isclose(p.state, 0.0875) + device.detach() + assert not device.is_active + assert device.value is None + device.value = 0 + assert device.value == 0 + device.value = None + assert device.value is None + +def test_angular_servo_range(): + p = MockPWMPin(1) + with AngularServo(p, initial_angle=15, min_angle=0, max_angle=90) as device: + assert device.min_angle == 0 + assert device.max_angle == 90 + +def test_angular_servo_angles(): + p = MockPWMPin(1) + with AngularServo(p) as device: + device.angle = 0 + assert device.angle == 0 + assert isclose(device.value, 0) + device.max() + assert device.angle == 90 + assert isclose(device.value, 1) + device.min() + assert device.angle == -90 + assert isclose(device.value, -1) + device.detach() + assert device.angle is None + with AngularServo(p, initial_angle=15, min_angle=0, max_angle=90) as device: + assert device.angle == 15 + assert isclose(device.value, -2/3) + device.angle = 0 + assert device.angle == 0 + assert isclose(device.value, -1) + device.angle = 90 + assert device.angle == 90 + assert isclose(device.value, 1) + device.angle = None + assert device.angle is None + with AngularServo(p, min_angle=45, max_angle=-45) as device: + assert device.angle == 0 + assert isclose(device.value, 0) + device.angle = -45 + assert device.angle == -45 + assert isclose(device.value, 1) + device.angle = -15 + assert device.angle == -15 + assert isclose(device.value, 1/3) +