From ae882a3a8f511d6b3549803851e99ac89c614158 Mon Sep 17 00:00:00 2001 From: hailong <605739610@qq.com> Date: Wed, 26 May 2021 18:57:31 +0800 Subject: [PATCH 1/2] add png --- docs/open-im-server.png | Bin 0 -> 109213 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/open-im-server.png diff --git a/docs/open-im-server.png b/docs/open-im-server.png new file mode 100644 index 0000000000000000000000000000000000000000..35df36f395c894870d9a89dbdcc1fc1ccfdd1b1a GIT binary patch literal 109213 zcmeFZXE@wl*FLPbM3)dfL<=FJ6MYa}h=`sglMFlQELv;NXy}-+}1k z;1IFn;Natu5P|R54Et8&;IQMULlp0MS*%Tx`d%6wJ={i3T;mSGHTP;a7m$5rw5 zSY>>kokRA6T>Z+Sr<2c=^FLM@4cu4J+bg*6wEXFy(Q1By;mPr@#_K9o=pbI+8<&QE z1-<>ub**|Ad%Ir-jnvwB|8vrB_vp}mwoBHn3!U8da`&fq1T_T#l>!d#zkF%3#hr8W zrVGZwBVqUdmoFsXIdK2W&kqF^aK3u#lR^IVQ*dzcsKWkj3Fp7HW$usjax;rA zzBU4O2K;|tB>PM)4lc>GIv>@4`5Y33n?(OD7@lCA4Ke!c|K(w+{2yNY*GRGZ`)`7E z`toEe{7bygAC?{G3&X$f2oCNvA&J7Fjz++Lc~}LU7sCIxUFWN7xIpE~@n1d%m!##tY#7P^CdS{<`QOC&Bc1;@G5$9({z!+v>*@a{ z#{Vygp|^*ZsTL{6%NWke!2zo}W4gC@>B9?>dEGQ^$bCsHAzlDIy^zIidA|gd1_^r< zWk58i8pWr=!m|KtW6O)Iw-1|-c2S-Sb2Vo8xCE~))6&x)CFJGh_21|?t`2eJoh{S;pW@FLnrc%UzHSeWJ9NdtzrR~XN zGJ?P_>nigm9VLkP{tI^{@vM0thE*Fu1SwxB<+p$K79|Z}#hYshXX=@nlH;NxNp>U+3#V`XJ!(Ig(4A-uR5Zw(h>rf`^v2CKYo+9WC_#&VUzGxUcC#Vg^( z<(irrS_}C8V7W?*6(bWMQqu z#TfI!KIi5xuX5}phpY*3G}=2j$aprtzQlrAKWK~LF|xlBDSzhW>DTe=1jO4fprxf{ zlfh~YRcCG7_%S~p=Jn+T;W{}vd0)0va5|Aj+;UG10F89Py##>_oXYe@*aV-f%Ns4*+ zulg2eMR8E|kYAswFYYn$@vaO=d3gup`+>rXA$q)ft<3)Obu3aJMN~Na z6{1N#w^~QL6Abd&;2u;7EKV(3O_C_=QAZRlsInj2JhSv%rZ;;QaC+D(-_=RTcPZc& zo!8-P@WNt}%SLaB0{fPec#hz=uENjUVq#+9VcA#vBy9X-?RwJaO-)UUddz-RzyEn% z?N@K6nuKcRUGj-L>{ODD+rOHlT^)Ixl+uz34@Rsa#}osJCa-evn8ril*Jyh0xi>c) ze?cPnc=(52e3?NDbodN0^iK>9LchP|(v;hQF?;n1Eo8AEh7-ZAq;27?JvTm-OC!qW zZ(>cz9{1GgBvpt-u*Dl*c>n%=A#JoKQgyjKn3%OE!CZ<;ft@KJMn}4>mgcdIB=b-k zDFuPX{j}oZ=fnlR;Ilgi3(U0fn(vbgczAkxib+UR`ta-rQL;4{o10I5wiB(%7q&4M zWrWN0)2W&qfGt0uiM|@3@X#6#$G~<`-J3h<26$Gj5iB+K{W4#nGX^-n zJlrztC~@v|j~P2FGaAq4yDKd%P2@CI#s><>RJ@ZkotSB*^P~}eK-0mfkL|C#ebYt+ z=AhTkJraDZI2DON$1?*n5$B1j8#2<;4K~I@m*vp5+=ku5QnF)L!c~n7jf{%4tOi_? z+|iGS!YM)dDiG)xQ$FGO=7YX2&T!FLkR!>ZV$`OW@WSP#6f*dzF8fXJZdZLMLw*E7 zJVvK%zdU^ANqrP!ZCncq*PUxL-cm?)ZgfUPWq!VcQT;UJiFOcLS=A~FRFIq0M=qYn z*@y|h`uF+P1?IH}mpe+j#9JorTUyHB2uv+9j*Nk<-?2@d*+ooqZU|@2)#m4~vW=ek zt}E9ck>Qc-Df-I_p7^&IQ7zp7+s1YKI*CH;GgO?_VAA{dqLJ&7$ra|%LBk!)re7m- zl138MkK87a?%SL`*s6%uud`diQuVyAIHPO>&K7CVS?=$_;Wlr1$FDMvk`CR3=X$Z20~ zw1=b8x@t#B4wuOS^>~QsDy+fz`?}ybL+L#T_tOZdQNzxA$Yku2(`-Z8u&nU#fPLLp~7>Z8(+ygyqTi$La+QrylMNeFbz>%6vIQJbL9loz|v zx9ETM-8k#|5zSdyP*{k7Kw6lroG-po>aQOT*ET!Vft-yE4vJ-GXD{^MTW6JUp19A# z!crr=eRz)vBQ7SktjRXaMW(vUbg;j_uhx8@!TaQ4f$(A!Xfizpk)Is*YDcGnmycyY zrdSyd>8e0B2U*dOHH&&sOgx5O5MB_k>DY;g?CR>e;PCWm7gcnJN|s>1_J%os`ATN* z(xU(c1&KGQmzemGQx6rz(Z(-C-7O-@eL5Ex7l%vg>086Dl$we%)(?~jV2tmft{+-a zOM$K^zewI8I6li^mDZ8d1l1sg~@IXOd?yjsvlh_BtE-V_mCNvV21}J)luo9#-*$0*)`Tl zz^+j?*IquRt*w2P+TL}{bF&_;p{%T2EuP?UHA*Dl&NYq?$$eJi!OtX_DHhjW(1j_a z5cX;RwAE)pL()T*$TI_8ximMdrtpe_w@?fDVa`#4Y^Yz&x_PTbtFMtZTF2_=^K`vC zJn*^Js^@b=WtEkd&SAZw9LUq*w)M{q#*SfE*iJTLI7;$299ED5Lxyb9-rO9S^+}En zm~dfA(|9qn4zZTHhsHz19JjbD_|{{judtH65(ocQu9fEGX^1PL5T;eS>-&3cn3i`c zHGLdI&XdZCbEfwS-+60w*Rig!wwh81e3n4xeufnE@ezkoonI6#P^v z=<=Izgv6VZo93mku<-|2f!>o&1`!Sq%MsdDM!Qc%MXAda3^lF6A<52Rqw+)D2T%h- z*NICPhyra*;>C<079|3!tX5%Xek`Rv0?(?g;i=W1)&?I=eY;Yr9CXpR(qr9(=UL*8 z#lT5HLBYB$M+Q3YxXf-+1tMYA@1Hwl-rD2|@Y{5#e{aPYGUgc{DvFM*=uH``rdw8m; zwcfk0ly&m_3kpD5Q0{hZJLB4w!HbSew)z5goVzI)lahj`PoMVPqYq3bx{W>Eb(AzO zsaJ2lz?Vk3PD;yNmEUujBAA%IM8}K?SDx@T?QRTb^bgw6_|5mczRD0ekT7+lHc6d> zp>xGntrRBpKG4?Jm-wZbn3(*YhE*Ft&MuJUaCo+@`ZdzSf zxN#p@HBgBS7q%T79+uzK@>vm+mXU$F?i@atgcVTTiC^K2M=aQPlr(U2h>VSm+0;t7 zh1cUY8l3md?}xK>+kzarpt2>$J|t93D_Y;znt94@W7<(7c;&X&RtA9PYGQ=pB7CWN zMUNNE9KyUmHZ+_SZK(gs$>GL)$*~@`mA<-W)=?aWITEq@DI_uOSbBn#n3aW(I+QCp ze%)6j*S}(QR$5bYocHPiJ%WZ`S0Z~*T@hKfSuEW|s&I|03G_Jbj*=8=YM7FgV$v^M zGIITMR`B|we)|$Zexc)1c}B}RD8{WTFUvz5-8Ttom}F`=lmjU%hX)4CDxS?MOL6QHI^S>{Rcn0jZ#D4QDc{L|~5nYwI9!+n@A$6zgCMn zT`Db}vAiuglpy@88tcB$r@bM!GvUWLAj6TQT`tCQ*U71%utIu}!A%oDkme~^bNBOK zI-J>{Dw~Z;|iWoYc+x5>PEA;lRue zI>TMA&Ro7z)@m)vi1Bc9+x5-TQ1i!uEbker43y>O=C&?+r$-5f%qZXlG>{Mk%F^F{ z`Rx&65l#4ZlP=re;g*AnkP#Kh#jjltb+NP2^|pNS-M!*tT)EP&4;$a_O=IfaFV znehU~8TR2m%%R-xpc(n)<%ULbOWdP=y4&WqG!J;LqpJJ8t9BD%FPOGT7q!sOd&po@ zUh@2OWXnVqvJnjxMi-v%hZgR6jWUREfo~#Mj9JE<$sb&6FP|P5*xMgbotH6dgL>aR6A&=y{ zdYBSi10ctN04A}g0}+FRgWV?agEJ|Pp2Reed9=B?xx6OYrXqgXXAbTpa6>n8kQ!rO zRI976U3cKAS2Y$TTCSJj;MLc-r_o4zf#mying_A(1Z{cCyXlI`%G5Z!O;YVfeM7_j z&cd3OE^`YGPXG9)Lp`AmiVG z(rWs!r-^FmD~Hh38*h-h-gYq_S{rG=mmRY<9%=$z7{<6#4MG@U40@{8%@vyjH+Y)u%dKt#>E=Ol)gv2GEygf~fy~_*I7B`OQkQ}Au zZ4bA2e2$wQYa{7N;!a~S@r{0z9VIOcR-*f18`aSQukL;AAP7_(zjZ*g?FqGV-V9BN z!}qXUkt$SoofMhvvlAV2xTN*zlM91YAry6_dq7mp|7wV-yu92N>h3;~mTM)@;aZgZ zj#=|c7Qa;&^uvh8qugA0GDgnl)5qt2t>tQv$cM3@I5h6GDzM*#0|Gg=Xn`4JOB!L& z^=8Xq5=nWU$G6=WW)+RMmOa!$Gb(-o@*HnLalsqvp8@F^tI8tUsYipbN;(J#RP z+$qB7G4~5k1X-YBhxBzX+EwlHdGec2QE4Csp@9EfTQDeiHsS(>|^vitn+g2P?y30R* zLs8CiDEfTy`hpO6kv-iCpympU0#Gxv8a-M9fq{(+73 zmv`#vfRAD{K>CdqlYc>K8^Yj&m?1=s>ty_f;q|FaE@LSwUC+1;=`Pg9>23 zoUK}msf_voBCm3d#&|JLtmgwcMBlkS2J@yzt{MD~Y=hEYk8;u5%WfXGWd z%I+bf`(5nZ@u;$=gRKYg@TjZ@k)kaff$a- zTR_KKk9wcPu$(iTLO44enUnjJf^MaJpe>hLqy)nJ=x3vIm=p&cnZ5HaYwJ50+ z)^JsN@Shup2M6KR07Ss?1N@zFQVfr|&`h&!0#-?QXcMWKlpgwMY>5E>=t{8HE?z)W ze;3o<2F}Y;C2n!W(^zX``X!C%hc`dc4%N_q|MI@Z{>_aFFRS&jau4UT2kn>4L!*12 zzCFvbbVch5P-XGMbZDb%Mr>=mchmv9lIR?QL8c@8OwidIZ?w75k7|VH!p5}@@}Cip z3Us`lc4^Z`X4h7r-E93xCr8FhKCuCbq-Z;(KlMbbV~3#ZZMJ1iGXTQBxHPTkEV(kB z0nO+w5tyu!8SJiH0K7A@+Q`-VmTFnk*@R!>L4bp97-8|AW@>fgDq4~{+L$BbB*HFg zPonKU?~zwz2n_7vcwcy^7P%B9*hS8!Q&nd(zVcgy@1}Xz5j;3|$1p}7N*#-8Ul}WrIZHa|vobcQO(wV*SP+<*^(lwgu?ov`{ zyLi_1iG5WsH-L4hHRA<(D-&SMZ7&oHWqAg~9(}$(SU%};w3>p$vGYFUwoRC^rKzcm ziUg%c_!V;}w<=*9e`{muHY^s1KRViF(~t~@9Fx0qa`OF`q>GWNDp8ZFl^ zUDbCq@IkXNR$ycijleC2@ys%`4M-SXUcck~mlxosI1=ut(#yi(T4HTHti}=DF@ala z78bLyv7rt`=iAi1ogc))N9UhOp4L?s9#yG<4RA;JM&RI8UwVk(tZaz2Fvk1o66@hd z>(9G>#$P+O>n~Uth@_X8#jhyJ(gS7&2oT<3o{<>%)^xIi*Q&U)F2y@bx ztoq4|-KyVp!3jiet>hOKu1B7q0%@!6mAAow_2mNfRXJm`T7uofWeK@_c*lr-_-RBI z2tEq++Tr$Sk{OSwb#z;|8hRzqaU=U4QCrKM9QlspnETyGi?-1ZU(Jo=Thuc=%F4^v zIXP;UPboNdUeM~fTgtGZ@7!c?7njqmQG?WMcc6g$E`z%$;cBbd7RLkf-X1N58`8JY zSduSGxm2>M&v;J(m$irRJE~8LddsS$XJ2)tg^usWub38&x3_rehT2$|w+PsM>cjJI zp39K~qoYzrkceUV)ue5pqmvTfh}qM$c&Hn(YX!tKgFZ+~uT+6mZ%YbTTuNsuo!RqHFAau8A83-+l^%FLhAp!GFa2PFqo*=5Q=o~2H&&5Ii z>f5a4DhgBFHZP}zR{kF2!@WG8PlN)rc%yINcD%K@h}YJP1Ivk4i&~A(_cbV?f6mrx zVmq3NO!!%KhPAhNM1ue`MYp>pXFsf0RtIuzmQ_-xdMeeWP2g>Kw3e?d+OnkVu6pg& z$*09;;V}>Di^>EXRM!wI<+GlJo7CO!?u;fRhFNtf;^1OIVcD9FrQtX7KML>LfPpqK z>1S;OW9_jX&KCXXk9RxmLP&SE8%LD=F_$*Vz|au-CS<@93S}AY>nrKY)iW?K7z_P+ zJ^*nB6}PciU=>2$TZfhhTFLuWIl1ajw9WuPNrNFpVJL*7=1~#6if6)IJ_v}Afj}o) z9BF+oXz$KWRb>oeEJJX-eg2zffDuf?*wE0yXV|y?5dsX9BZJQdF%Bjb@iI=44m4{9 zMm=0|k2Z{825Uu8uD8D*+<3<(V}DM)#KgCqRU=t3<#wWZ%Z4qj+(-Hi%NzAktK{>n zNlP`|yIFqA)ECK!0*OuH_w^kk!`05EJ=3aZvpijBD2;39dofOMZq(zgJHsFxvaa2= zFJx*Nt%e@Nm$(0BUj-UBZ7M>-ix)zta&$Zmyt(83EDa2HcL8CqSVliSIu>JjhtyDS zwQ=m%uFgnlD~Oneynw%ZobY zF}y4fxMMIT5w_Vsr-3r53qWjP%kzUPz3ztN4jPfp7Plk)RbgD-TEC94Z869gj|Vow$F53U-SOxlPgl+drGO6gHL zjy$)M!(W&u$uv5Jc~6!IAg>Koj-qu$XR~Pg0J4#2b`5kGl@>m(ur{tae)!SaSSIv` zVavNoQB0@==B-R>weVv6@$vDSeJ7`G)35JqEzmSQZF9XGC8^Fqc`lZo9v)|PKpQsj z%rwI#!K_9C{cW0I*TTtZeYu8M(J@17cV;z@6q!84nR#H-$Focn=z1cPGFV9qbVyGE=o{Cfg6~|^ zdaTfx3IB|=HZC$UG(=W;ZU0*6f}T8$>4d-QYKk*aM|X!rx?toPKlRtVxl=1_qw3(W zy1vn5o-@Z8C@sk!<}T!aKJ|SwEpPM~ZP&i1X*}^}19S72d?o}U@ob8Zip19({Wuik zok4rA!z1j;%6RIYrZBw>4)yA8T(8}p2*!AFXvibIe_D!}$D)IkZ{8IiDG7i3bZ*yu zE}@%RfxQy+zxknrK7P&Lb;9Le_8LzA!~IrADW2lAZ^J;_g-wl*i1 zpAsU!yR%8FpMVjk~=lvr@Md zo;dwekdD7iC zp)bO!Yt$yJlpsFY^X*U8Tq*EK<}JVuPB6K>YNvjP$SgZ~j{~tsTaFH<5W9~;`N*%Q z;ZQE&{c>A=LALZ#&&bHg=^D*ZQ&Nol`0HhY(c}Hq%1G5r7yOgRNLg} zd+*pkC-8b7Gw{HY5>&~L!Zs?rbbW?`vIjYL-0ybA32}^v{Me8l3KwSMV&a+Fqz?$s zk?2<#WNmr(w4>xq3ba{_l`5T!AJ)*sA5?IWNLo zQ)RG<05v-@@YVluo#-LXA*E$%U&dF`n~irRVe*AqIA1AM+PAd*iOXDK>0bIbSWhZn zWv18_NqrumfJ^u|Nu~Qz^c=0zW%H)I=k|a59#hYo_?6gS*G+yOP6QCPYO(Ew2e;EY z3N`KZa0$H>=&4dQjgtL0PN+x-S_(`nH@Zm=9`%&5!3gkhI}Nb1)ZYK2Ef(ZS@-l|~ zwa9xRIJ-=j`g%o0gwD_ZD=Az0t2ogjCS)6LK$bLo+-4!5xv=GL^MpN0K44_AvAae5 z8N8h#Q!xnIYgg9GAYuWb80ZA8OZR+i0CfDu9V3~-mw&xIdz1@^;m(b&{dVKuD>wg_ zvcj*E1}3l?)YaEjzD<7?SUoOx7?w+X_zKeO-TUybIIvsdfjN~QO|*1J32T0CuJ`Hw zu%#t3(m|v#n$o)PF5hnmulp|$-aHg92h7A_)K^$Y2vk)vdsh_Ldw`~t1k#}M#*G`B zp?At?9@&ZfWmwg_b3VJH3=@{AUP-gR$@WGyGZHYv#`ydi;l^lw5rfyWBJjN*v;on)+6fu{3+OES(sOsoobN%nYf zX6>6?sgH!Le!2l*9OoWxh2TU|rE*49gWO6qy)>6d!2Y_}=z5jTD_;fRK@?ZrVp-0TRbZWJCVS z_VefBy%E4n#6CfF185HF_%tAGu*<|pDbu_K7U>lvPtGfqhefl8IBv+})o8LJ-3GRv zDR!k>XUqK`I_BGA=Ga_DJ}Va1?Pz!}XD6&Rjz7&Wn14yD6V=KJ`)N@gwKQUz3ZIWR zb&gI~4sMY@u)rS9MJ71_sNFMU@y_n{~v>%p?jZajb7Izb0I%e}3=rMoW z41rG@isB^bYNx8mreI(_K6ro*L%zC z`+wy|vU<-`S1;!z{hIEb`I`G7<$5cNXYxgcn@wjYz~)S!UsEeE`24ayo#&A+?iYW~9;M@N>D*7cE%lEeMzP`ESD0^2%#Zzm z!w=4#<^RdiEB<$0eV{$7`TB*Fb?J=4AV;gX@vYs$S1D97=X<%fdWk@1JNQO5>fnL; zEQNwsAOkV;Gyi(smpN{(Y?YH9NfUlp448j7m!TRI3D{j-eqQ>^are6_1ZV;8+LMg$ zQY6>LTpa#KW-~zb47j7{)n{?J2DVu9Mt}pYLM>R?Gk&xNY9j@gcb-k zGDVMNl5il!`*&Uq^H@^aP1eqC)NaP}r26Uu>!E&LB#X=t1>V5$@Hnb7NkVtA3(17- z`k5$V{q-ejeS1$mSC>5Y)axji#p7K)3Sw@KtiP^=e*WzK1FdAqyY86|lgeM=c4XYz zm@>!FTPH=8(+F7aC2Gc>GYafT&==j6&ZVQj55a<9)Hj^(PpQ3CAt_8ZA2zuaH5{*) zR9ZJIO0?Hw?bz_H|K?Bl|7m_FzPHn$JJ{F!g`bUXFA3ZAu%8eo7Rrsl(US`p^mKxh z+v0bpZs}D4siXOrb@?Lm+M%hKN3&mF9i)0rdE1^$AU(!%)hw5|2TE-^X|zk{nKu+v zaumaiEWA|&t7cw!QE?ilWvmh5k?*L0=n93=z4&vrTmmz0I2_kG{6L@8W%LSxa9}l5 zV_0XP61vRemE4^}m8`CYL5wwbg`AITC~M zxu#*e*X?)KKUMi?FwgKns;2Q<`LKn9?%C?BdG(A={=9n&D%DRg!NMn3l1U5L&pJTm zpr5Y%!u0*lJxX)MbiRx|dDP)7rJo(KW}W@}c4w*{_Gtnyg%eeE#eb|Y0}n%@@Dczc z(DCGlCnoB6#}`qq2+r}EXL5Mig69c=X8(`;1s4Q$dr!S4Pf-FfSJ)!mg zEZ~qWyhvFy24LxGUa%Znb@KF*TlOIb9@lvihkBTO8v6?vRQoD`nxNk$cd~Z4Le%Ww z=vdazX|Ivfh*@`$70)`zu{0@p5~_ui7HfE37Ffhj<8H7N5kcXNp7ez6h30tm$#N1= zvN~en8SFv3ug+n>QwIl?)oNff^pdLS{w_9b#tEFLytQXJiq&AnNK;DCfim&y+1->*cJ97d*eTGP{K>5e?xJ zQ-op5B|?N<=kM4%Ifc7~tQU-I&3;>lv)7#{$C|hHrzMkY`FD}>zxwmGj{+&_HByBK zjP5;jnjAZ=z_MCBt=+zG8Z-^fzD@Aj9Hi{y&GdnN&i^2|?gf04KoX(4trzuI$_gRR zA^_7E;pZIsWNbyu3rgHtWR7mCU<{9L1-8+1;YFcFPwX9`hQo{rw{BV47gRNQzhVt^ ziY49*#cFg#^M(k!EozOrcHFQAex(wh{guP&8sYuttt>ohEYN#Jto@o$*iQS7pDx)O8^8*^!>1KR_p9u3eqn{e&tq{+7^f9nc0Uru($*xzdpu4;n5EZc7}_p z0v*SJXY{})_ry|Zx*-}AvWCGhm#ca{=XAg#wc0`JKXAk{jMC1$`ljcG8O+KK)f0E2 zrcqg3jhF5%Fky-`n0#gV{v(IEONHG4sL+WT&sqPd@FeUrMGC@QE{Eev8p`Z`;GO5Y zrRj}0aH205wy%{c2+O54p6&oMjDe=+n@K@)vDr^%Kg!Y(gu=J#Sy5Nh0JghA{AYde zS9nD5`Z*%=CXLypfU^rX8+-k}DaC_nc+|03ZNmBc)$`MzpJaMV-{OIRfhQAzQ|v)G z#_wfe6>C*<5myqvgpxer2N>8?xa-eDflF{o&D(NB?q{OPM>1~-66-YS#9IZA3h`9` zek0-QbzCGs58)D1yyq?WzSBNuNc13~)D?g~{$CgR0$z~Pji0K1VXwN0Cr1K+6>hP= z3LwLP+icv>bELGBzb|-r>H8gVi_1b50vG57V=3hho6a`BQOd_cSBHe_uHShG26dk$ zMA*a~-(jXlimlG)qgfC0(u5TZ{*h%>1h1VCnN{u|$?-Er6nc9T2&>P7i|&V9ufsge-;xCTHcDIaE`fjX_6;g z3OF46g&8u5Z67mM-?kT0Q7-*F#x~Pi#^x6_NV5+7STjvFTm}=?>u`b|#6MCp0g#@f zw~Nwo>|is?V2OW=FUNv|ag_3hUnoiBvOfH}2ySJN1QGlr#{dchYAoGxzBf8{X3>5PAHaMCy1cbNv)sL*FDm?ika+-o?v=ORljz#a2W7gI4$URTt1d zzgAHD^Ck&?xcX<->CK;?Rd3?E^>1ka+S8vL%rE(?n%_<{@XU3Vgpb*O*q2;>aX~PO z4UidYiOY6+(}b*u!$;LX4uV|*PqmrjOZz9Kr23%>(#)|;l0IMn#6$!3@^8sRXENIj z)fMNxyV$JT7e`5XdrM(79G`K(@7%GTJFG#1M}_gsCipXi3hcBX47cw7VkWpn%Z?MB zXi%J@f|Kz8mZP-Vj4uss)lHQ%cgKH54c+{PsO z=lUYgHwD-g;;x==%E=#_vLYzEQ8hQeUO63+>i!@9?0*)xxM*`U+Ko`f$-u_O{?RA_ zmU?n7hz~vS#SO^%{lL%u@xar^LzPb^YoOaPDSl_(;>m)wwN0r+%Pj-6+**LXQ}Sg0 zNuO}=jDb89eTkljGfMw_+bOC37D;kz2Tt(8g^svMhBU=9(k=gk?zeCM3E&+8_y3{# z#*O-ivs@Tmf410Tpd{S)i-S9PE7+p(6L27-(=?c;0Baz&x2^vX=(KK-4tt3aLL5E6 zRbN)Rzmoy<%gHpshk^g2Ed7J@t6YfPIc)(K1)cy5m5~bvRQt)u=SLpLwixUvbFbY! z00=~mW&$a{GjP_fS0r7$a_jpU_=&@CVVvhQ+^Eb#W}_<85%_eChq)&AC!B`d%Ikd! zKwHbQ96Ts6E>*o>XvPO*nFG&;>t(vPw!BXr3-elDF7etlw@t3fdD&} zvTkH)>4H|y^We(!6^Y+KGQR8tOFfLXD>$B4?nAQED@HyS^ zYt_OE-Mg!ge^ed6uABouG9A9oY*?5zh8F0ZI>WamnTd{(7ag^!> z8x9{E1B41sA$p9!tXg&e4(W_N0vDfX$Y}&j%6RQr#2DNsp~G!oh}n{%EFZKI-=dRZ zj>79=PJ9%>^>$bN2Y!Sa%ea%%6$c9^1nkEd_p7I8am}mYx*h)r#%H{2(Z+O_{#4jT z^}#qAXz4Mt--0{tn>uk_xGWHL&Rh4Kd}Q4RUo_m62L=A58_+DCZRo;FbWe%sWFOF= zCLC0nsnwXT0=X;^!`;BzwO?<&1Ub`@S%30@qK{5%Lm6wqb97QdmH|XGpjQ!jFDBZq zaX@dKF-;!^`J!Z|i^mHTg8;K>JF9i;l4`Z!O3Mev${-@Pz!@bmi~OHe4+_X|RGQMYi?7k3vsW3Z>)*sx)9qri{3tf1fI zm_2X4#ovrSB=FQok(=8tSH%`=H%*KOYZ#4Lf1C*ms8b-W=uURE{UHkUqLEf z_MZQSt-;A2aACn8=Z^?&`xlNBewh77!+IE?pE%tk3X!J9?icx)yDuoRQ-ySR^JF8{ zU2XA>`*r2xK=SIw3t6&aBZ!3d)_u)o(_pf8TQdobr`fWKo6P4VAE~5{zIsP=yC8u0 zhLMqhU6c|JHWhJfe^P)z^}yMkYuCkPv<)hPJqKItKOngoZ$7Iu4-^FVSq`of%8DAs zRCJKaF?-KPd*pGUb^*@*O7TlF_v3_<)_j&?B-`l>vFl#1+W5(>rPpK_iBq6$PIBU; ze|ZVOZcEZ(3zN%;BJ~H>8b(EP&f|^p!4o9UC8&~ApeAbW?QM35oVU0bQ zl`*!5&WMq>JttyxgDu(#drdm^h+LlTf)NpJ$k$P~1p>V69e=@lDA3$veeEq0h~4cE zn9Bd5HTTi;1|N|lUk=CNNgovj6R|qi@82HY?3Q5`z)n<_&;v)$2A@-rt;+3WqPHD-h5BMep;G!jg6pv7Iz(A zxsQWHVP3!Tw0#lR90AvO^Jnu*6D0seM%hSl={tg#u4Fo8SXA!Vc2ctmuJvBD&4Lhk z7y2C*UJy~73kp&|1AsxJaxT7?@pL}j{99jv@t`JM_G&NmN!v#$@Qm#<$as93@R|!h zSiyC9_7x*rFbqKCBi*6Z^yLK6rfrlwwpvXVYPC8SDL%8TVIF|p5lE#=*+O+ZBoYP<3YOX7tI95qsWIO7wlva*pumTnCw!z;zcJc zP)}^JM?!u_Z;(Un>P1=k{Gv@Wat-H%qBDl}dvDX5gI5QQ5^?wQq%Z%Xc!J2JS~)Y1 z!FlNyA3GnY07^03&Upwx^B?a&Wi$fESVnDX%Rf3cE}_OFgfdSGG?f@RFhsiN9<1Xf zlXThPnbP#uaGRejpoLaNh@Q~r=yckh^n(C>OkT{q_& z5C=dZ9?us}{+4)q_!7~SIt;z97Qt+3%--*j*nox^}O0>(!ZdvltjUZ1b1kO8nbD?G3)nm+_ zr}oB%c3#O1p<&dne^>d@55QwC1rSmet1WeMxYc z)q1SV{-6;B2pmAY_j-slm~;)9aT)z>wzb zk>6t7m2@VV&UeD!x=3>yfBNpU@oewx1;{~H?wus0L2$_nS{;h&ZTwuoZF1R_=(XD8 zj^1;qS0fXARx(?+yuH&Qg!YnAa=X4Fq}XLj+^o3)z_tXOf61JA8Ovz{3DuTvNoJ#yFEyFW!-0qSVRvS7kpe3c6u z&wN04%3yENMeNYRbeiCHEKsFM(w9q~`_t z(xMm%mU|hSHTYE0!_STu5;}mkEOb6%={LJS{))Q|(~b4&ilGOr#ykRYAIFG8OR zCaD(&Pvg{aIQ)jp`0xWBBNS})Fv+RZZOLz4T?hbG-_P!fgPhJ{D4Ua&XXm5HCY)Gp33j6r9{J!?P0?xVz}+pBQBLlK3MdH8zBM;g z;JbF$sp{1MOf5Gq308owjrcs2Cp~ot`n#WSN#G+5TVF4D=qRBf^$j;ZgCjfI=xeva z;pwd6a&|}CAuAdK`9h>!nHBAaA#7$MIUjPZ5r1~G+fWWaka1D7V~LPn;k_dK_$8*J z1>jZ2qF}jL=#|W~7g@oDWj)%+WaWNQd*psXDloS2)FH%OF7Lr`o*0AKg}@g{mOrTv z)t372u+t7PGXGZYL25p!lsWNtt?CzAhBTawTk^Em2j`gU?77(9u#`|AqSNhSr3Qm8 zla!QvzDRHeGb_+iY6o!8d6;J@PY#epDQ-x2mk^QD7S=RGp7O9eVod9?yqT=raWaK&FuM3H(})E$E9*)~D|^^vl2 zAW~JTHyzreT?n;)v5WVpLYa5;dqZt?)}=b`exOQMJLWHzM8yr8f_WteS3zCGt0UxrRC^3-$jX2Jpr>TfY{k~$I+7f zPd)v_fKPR7^Bu4Q7Zm4!vR`$Nb$kt^AO6X>v?Zl(_!3zc7(Fi0=)%*agB!G;4H_D? z0ctat$-J4wsDqo#d3^a5s}Eeed!B%8Z?g^@fmKC(x|&n{1kDtn6K{Jg;al|c zS4;HnR4A_IxJY`9n_RR~Sp{I`fzJz{KlKuYY*6J-gBlJ$BA>7@uH;xg-_1^Dg^9_&9nBS)R6}2v4%=4 zVojM&=hN6ZzU1FE;^)wG;0r$dc5@cG3fm5K|nMct-gxn z91ZN1@h%F$CFfomrvv-J-51KHb)Z4M6+X3u|Y#pgxc#_d`VC_Wh1;L=&kCYlt$-C>2Zhi zYaA!;8%q5*xg2b-Zjd4^dl5Z`)Y3-9-za28pjyL~uRc164?jV0G8O!i0dm&%zPifr z$KMbs83f8p!s$Q|bNfbo{fa zo*!AM6CHQz1HzwFU#b6p*n7*cD%Y-U6p#``N)%}UX+e~3m5>glO93UObT^1fg9r%H zk|HI-q(ejrX(XhjOS*fH$+Mn!>3Y9?9N+%E*T3~+Il1rq8rQhSILCROS1n_rW1sdm z;G@3*?4{?pIx3ejq z&PMJ3I~%q0kT@8S{d&=-44UXAs?c^6q3sQixmp2}`%YkIvAj@SK?}9xd@45gMNU04 z?~cT{X8o6(jy>wm{ed1?tM!}-!8nw`Q^_A|E!sm&1x+w43 zW<9q1wmS2!hbjgtfjl$Ope-nnaz*b{|4|?fV|}yqV(9vYl}Jj?Z6v9oKTlv(W~kKq zo=z#B<@Bpo{?AukLSJ&mA-jk6`JlzWgcop}4T(`G6}P>Y(R_=1U-2KQrS@V3enZV@ zSx}6f#LVVOZb!cPup5fCQ%6^23q&7%yHH#CqkkQyw%=qQ{u%EL7}I>U5f;i{6jTrK zj7;1_+u2c|yj&&M|9SxWt{0s;;`(GMIpmu_A>x{XWDqK{_J!0oh#^eiv%y*lI}S<4 z<8D%}>PR%#BW-ulx7W%1h;q;zgnqvP)I4tsX?^)XpjZ@o4Xg%(Y; zik*@q!*Koh)f7Ckv-p9!0jo%gU)=*>LnNAoydgjDPkCq|JpFrCM8kM~fu$6n0+`7V ze_=66wp;pqHtO@C^teON$u}Ti)rPaZe=)u7vt79n#ESOT(j7MK^b1O>xh@6$h!l6~ zx%bZjn=Nfj!bKgceuN+i$tzlP zTsbTVo-dSLm(B?i-DOtE-JqObXq!E`_~4^|gvx!4=}n(@tS5z#gP;55YuvpcVN+`8 zM*@B9dn)H)TPKw|K@e-xqv%%zlzczDGja$wFU9SQx^rC_`)iO}o8oc2H|r$oz%X~; zADe5Y^^Nh0=v#khV{`pz+k>UjmUpUYZWksAY!qM;!K9p&5X`xaY&CL|Kna`R_xX3o5V$QS{r7q%4_xp&#qp?)U-1f&NC`gcGKDNOgGd;t~*Q zA5kYkM?#ZBy;%f!W;1|lS1Sx5CI0G6vkmO#nqR=wFHCWl%{8bN@~X*n=>GZqHSdE@ zKF{vvXym<$x2j;RkwqRbDwg(icG3ZUSoN#+>w)Bj2~3lvypDK^@_*D>HY zx<>$Zp&y=N;fdC&)@|1CB%(b7+Q~!=6r4S;zLNXcSmYis&dEIs7u#Dj(VSXY8O2YO>8%BdU-{*W$kqy`WXUgGyR3d#idV;0QqNRW;PT& z)VVQzVF49J4q6;vUtv?%#Icg22Pk9+fST^_obuO1{mO!-9LDpwF_x=oM)~Z(l3Py1 z%cUfo>n4ye5!U0?f3;lN+1vZb+i~JcU}|0!WBxQV&Ng5#?P z)F(ex?owYgN$wpbtiDhjhew!nD0JuzpJiNeaq$m=J|6iZ(~j4GQx#&!crM2!1mkRi zX7h!kvoq~wd?B-+S8T)b#CU?yBxyT$!Kvu)%yA(DMq^R~*Y3ZU#IobARZYEcRofDS z=<0yww5~Z#XEd=7tWexv6g{$XbKewKigK1p832Uh`%=o^EqjhEZ*2U~IzMMZ(0aVYo@82(6Z~2(N^8NWP$?p#c z!WlX6zCA~TxzG7>{!n_X;1j<+D-4ulDxwmRF!aSB(k7&+d3m2M5(mcNX@o)2X%z*2 z$E92ezpV>uh5pNCWS60Xp~JT>mg?6eJ}lK@?28nnJ}|!RJ0sE&+OmzVh?gniOce76 z6E+CN#N^gjykk%Ia_La|{CkOrBXG;@A{41vs6Bm%bwVK+%y!g1IkTt9n-Y>##Hi(br*NGA(|Z&J0qY0O_=kCe0*W zr2-CT=E32m35tJp-!zRWU?#;3S=Wk=Zlgvxfy_xPz)Rw2d3CT-Yk0ileZqgdhl1OI zu_)1=cjzGjv^}RRl$(YTdSJbssw)Ojxk`q@@9V_!48rxf%52;;+s|2G^-_@8S3*Ym z@9M*>7KVh&H3wD);%>qkoqGREK}{PynU-`7ax9BQ0?hfBrZj<{(W z9tVO^_>ae#fEl`fg6HQRK_l9i$kF`(v@Hl4OC zwcCRTJ2-sgH8o?7W@RIpnt^q|0Y-F!rQiC`Q~-h9ALQx-A9ER`Ogs!J;e`wAJpN35 zim*Y97Ks<`eZ$y;P4@^=pYU&~4_9K&O%t~OeYu;M}~4& zh|I)iL#Ij4RsS^j@7xAEkp?v!KXW7I9l5Vj?ASZ=VMU(Fk$`3{II4*)eyqD%*@O+@HeB@ zy|T65&>1C-8F^1XhxNg4a(@Lv9S^opSc3Mu^n|E90v=f z6~bW^mZ=2K+!Y#3Z_r%#|JAdC_W-|YafTKDrJGG zTF^WA;h|ry4)R;g3mUK&3a!54@P5%{F~hN6l&Wez=5%b6ogKoBrCghC$-a%V`Ios` zUo`Rl*t(5?M_fUo;yBH%DLXe5Z;7>d&e|y zE2EZg8a0*s1$^2g3ca`+3#bGEvjQ0&%cz~sO;yw;g$`tMcMkgKh|?^w>Mz~|WW9-G zOP~wb0gL>b;qiJ*`g}}P4g70M9oK^AbT~AEDAOr(R9{a zSHt~tVUQ4*+L3Emn6L0al{4t~U&1rUqZT-?ZQ|jMIP9kebH0)azBoWO;yRnS6nFrH z+vejU{^?Et#yNok7zMtU^bhMB!l>C{O#0#w@PXGE@-a*zvjGfYADE{PDjJ_DZ6b8i zfnU$Zx(wrYaFeL$ zVS%3`FSW%%W6_q8lOyjm;;1=4H}?`%@5`KV{QmezS(AlPSZ2uMyCVOVTz^#aPivs> zQCgMVN^+gKeBe;s$6vEXu-EQfV_a~fGo?|UtJ>sb1Q_VXD{U!tIHD(zIExmSsp2wG zwVM+~Hk5hq`lmZYHWW}4=1Ews_PA7)MX! zCS(4cFbTfvusq|yQB^O41NY-1sjS;6zFMd+EO8M?-*`y2k;fSn0aEBN#Vx_Y5|Q6n2IQsZ7Q_HX6hoE~b^^gwdC-avj+UQ!2~3pxyn&ANoAyZHuvQSqnZ z0?~#yhSQVcfl3xjHLY#An&$B;2PnOhQmA1Q8PPzxVK@H)ihPEewN4Urt78kjIRRzO zfOpocfO%j-B+sK)R?CMlK^-_|U-^cyGHY;+;JVqT+svDhi9iX?ALn1?`$a0zyJ8*lE^(n0z$I$m>5~$ z{o*|vJM|xj|4%3!$3r3=7t;u}MB6GTUBrJ(IT9=6@yUGdMtRBlodr1TgZ{%2(sAgQ zqNCY02feqg7IM9JP_wfGjw)yQ0h+o{~=?zia}p%jX$3y2H(RU_qZMk~XR-p9nv9(bRD9V>G}&@_8DPoVu{?y0d-je*bS(`JXw0HQUB76WaU<A9EwEPfdf>)%EG<{VyAPQQ$qlc=6uRVQw%sHJl;L6vkdw zA+A|qr!)+C+-iM;LPx{cc(OEvn=7cPR&r_;oI_rZ^{0rSY8>Bh7on~Bc#zz8zz(0K zHffJD6iu?`Yq^0O>a*b7h0g+RWjqglDoiK?5kcwJ{d@O}t$+Sf%$qU@Ou4ph#kr)< zn=%W{PkNmnF@yBxK|YYpkk#g!D_%RoT_-DI4$+bT@>2)60Iy_{7DkkJiW8UbXg)nW z-l;9+|L%0&`6Xk-*Wq$|sqdQQ{3|ptaMlCAZKt4YJsQ~3+42Lh1qopGX2pGe+q?CaF63@W z69Zk{p*QRrxpPf*jw~dobe8fI+TV9S+q33tfV(^{Y;J(hh!&w~#rawZRo%S3jY;Rw zt6dydgfIRLQd8W(G@zWePe za>WiF+lenUUu)JHC}Ca`^W~m|Ia(bx;~GE(94MIJ4Up8H{8(M-=?=uW{-#HK$Q~3T z>ys&`tD6WB@?&0Wr;DoS(F8zlxa(-~$$S251sxPH?L;Z&vHRH3@g%w09X&Fgjqv0oDeg@oajZ6v z#ml?rY^z`P4$Lp>^RcV)F;U#F5_^h4OoqvjLKl~UYk)?4Bz1v|RB|os(&3wwiO|}| zz2adlR+=4Q+Sb}DmsF}g6mhg(7j^XNsMJty@7c_FKjW~o*;<7%I zced(|jHIeVI`>RIOHfTe$JiI}pvPCe;HkQZ`}Aj7qOh}uP#0l_nrzHGburkZn|XNX zZ9MF0t54BoS{kc8xutp`FF4iAkO*_EIlfhUaj?{SEV^$nhQfGMP(;MzxWsbk{k434 zmT0-1qQ3m1J{l6KF3Y2%BXO&~7e<9H2>~7rGQw06SuC=`9e9OAoBS zB9kZ`HaM50(I(=@4rhF2_XoG-t*o9+^~p6$cDnJJmuSe*q_LBXZsj`%VhextvdFo{ zW0QL8+16q|?K`8LRo5W8+k*VM_&yOzozo_wF}<3K~Lzl>NnjFWn^kz z{3bd7%kI`x1CkYK+592{>!Qi>TL(SqoR~yftQbnG4|{anpK?p5bsG{z9CMH!F7_9Q zo7mW_`cae-MFi&}SGXIhlr+@>ntYJkiqUe@yhyY!Aa6YZ5yo}~z1{18L+j7<5$43@ zHYO%hiO6Qe4#AQ1GIA-fJR^a;e)g+g%%~pt|;Lq245-5=pudqdqM|IpI0z~+_W~|@!wkHbLt{m@7X_a?) zE^maP`i`L^IcE-XV<#C^2crzNJtZCCu+#0XRRbqK$5_qVN7X2e?aJ1hAtMZ;>Je}D z{H@`XcxUshGeq|G_UmEJRd>YJBf?wx6(W^S+Qtsse7$#&NHx2I43OY|%ZM?EW0$#I zB-x7$X1Rc82jgX0+}k~3dEd-$%%jlq^*kWXNko{uOpks(<7-p;uv^Gr>%C?()W@AA zE8P5ZC0%OVfJwdkG&eUF;pypFvD9s7zIuzfSw5p%yKgY3$g1`}$3>aRPhUR-RI!}r zprZWVs)I;Y$-WN;x0zZTG+gv6#1ZwIc?W|**v27DltK!Uk3+e$qFNpiFqWNtg|nbq zIYbJU`=U&^82VS%4y2o-8XFqGDbPc0Lzhw0^#b1W`mI4JleB=tNbVW#zQKEl**q-X z;mHtgA=_gu#L}eXlm=pHC4@UXyg(`!$*+r0ep2!=O`|ryI3RUS$GEjQ^o4qA8@|Zo zgL+PcrCCVV7u9$Obw_gvGZ&X#J7@K$?$mvQSVLUqx7X=#^S>w1S-|$xj+T>(yidDJ z<+<7AeS@Dri=C%O#*fO7zu|r^GVYG#Nn^xze+&)|jxq%;ZU3>rs%%KKcS)bcr|Ax< zsrW$!;(-NB`uxN0k-IkAgw_p5S z={wHx9=@#7ul^ygd6=cVWX~@%s!Q5T6Ns{*pww$xFuaBem|^ng)!e4`DDF zSv7slnpoewD~u35!0DYDGepIEpGceihZXpS_mBXqD@fbM3)MD->vt@t=Rj59K~#qOZk!`ZE`@tHp<(pPZzHE_2dTkPApl zUQ`r`k;`Zkdc#E@=ddsPkX(uB(D8$Znlc`;+3o<_g6V07DL2=O-uAQ9)|2a zBEpPW`B6A|Nw?(5<-uBS@9TnsgwRSkjvn2@9*!=b=S)DLV=ebF2^UX9 zZroTO7~HZPE?ZNDLq+M58Q)@K@oTEno7z5r{O+rf_GBlruWH3}C9<%vaJoxC$5(>z ztb&3<6Hr=~O9alpQp6exbauRsGo1^wG*_ z_4@bZ)p&K(?sfG7K1l3n6^&B~IR-g9_?aH3$LM{58jYizOV3f)8U z_4rynp#UcUtYok@2^@@DxB7Gv^^(SDnp|({58bnVT5Bats=Lq{)D&EQ{ZQh@*qyg3 z0_w~ej=gt~I-XD`R5~%Ub41H&Y9YAZ@vrF(@ySYxiQc@qaX3=xe6n(ayK9U#iN3b* z{91GA-pEG!u$S!0o0wd<;-DLw^aQySb4(=Fh0n~yBo(l$BcM2*Zy;7%cOZ-H0dP1FykRs_w0J>)uBp zd%gh)I-D_%@>zQwknHMUO)Ic^?Qta>HnV&qQPV+7GM0vJi4F5DY( zQ(}{Oa23yEyC|9L=vW|G`NhNCglLyM_N}*&GL_;F{xjj$R6 zfn`>?B=(3pQ@d7|?P{uA#`@dz=R^Hq*m(UMm-Y15u~Rw1>spCItseJ~{QDxSu03fq zS7{GZGQ%eTU(&`*Iysze@jlt{u9V^=tXHwmTbn0_F@|WjYEH(RUlBj5vUp8Dwec@1 zo%23i#r|rs_t>PiUC0`@^~J+7o3ZR)y=oZH7|dNozsbk9T}+2NY8|o{jodbI#!mwx z%wrcfxBYtCkK+}jhoPK(uJtwD{rx+efcGB`i}I~y9>wG$HO-U!O+5Pmk)v}#T3w1# zpi6vwka7EMifjh*(6QO%8`54-kp80Ofi*Bz#LG4AKK zpK2xo5X?)pPi>AvM_~|1F>cfn@<=?ziyZaUY`~*SJ zBi?5*QpP-IcXUBzhh zPP!G85PMfPf2_c1y9_6F*)3A4{v!e3-~+};f_^;4614qiNR3EB{zJ@LDQ8o}wdCoR ztm32eE{`V|%MNi}EoFFrpDp=)zr;?NKwIJ zR;PD23yu5?kH1u3eV*7gKEO;Y@W4VT5S-@i7qRGu)v4*%z4MTv8se?|47g7z5$v)F zh4jr+V@Qk)wfPj5pnULXUi{#AM#u87LWLKFTua1bK@IGei#%bV$0^;re?R<_1LCl|iJuCLzaenIL^PdByYoJY9Z)8#jQWuT<1m zldYCL=T)=8E~nRV;cOf)kzE+~47~gn?6+CC$mWipa0OYn?^5Qb+w9Ct(q+s#SNhcE zEaZt2ZvCo!^P*izU3ckH(n|%J5eu8%k_8JMjpC}JuitGhNHr=dD0md9S0A48SW`+d z;q#pB8{8p%Hkap>hHO!i@FV2nh-rzt8KNAHx>T(2yzYG4qwp_%qPdZ69WD(wr;^;4 z%{{M!O)fs>t<_Rt=Vg;{NommH=DMJJBJ?Hscq%*TaA~aaj>PHhOsfh`xcum1;d-zf zs0fA!-aU!C=19_O|j>8i1P^MwW=U+BAH%&vh8_A6qtd@$v?D!5g4o(4C z#4OXIY-OI>;AGI(30wNqr7p|-g_!^|%%4^T_qk4dD{rT$qkUGqZy6$(vF#Jr#J$!I z1;R#FX6CV+B#-&#IQ{xGR7;Vs_AV!U`GNmRJ8Qm`2e^^8ByWq3)F`yVz~vLu?Y@NO zZRm}fmtx&E?acTvsL47lVyp&DZe(aWWcF828opNo5XFzTC*w$#at<8?zY(%K8)^doi z?H2cmEavqE>`MvhUkS5Ir6T((omWPKL%9ojgCZM4!op|<#>NVCS*d$Xbg#kYz2 z5qihhJZ5%P+9){nMdW5$S{fl0bb#SZJ|%qyADxy4;vJwy6J7C6r8t?k1Tih-S!HCvnZrk3k<|9g?OJa*U?|v|F2VZQY_xTib$%c7% zQE?Qkk{)^*8jeNN-_Xm`P_~WKycGNuUrN%Rx@W{ocC7@+ipADrHHchfR!|eIuf-VD#jd?D$E`oG$R&!QdWoM?C3|CYZFc!p?vP#xrB1h11C?dNbsUL zfeV~|eWka1oM7hKHFS{2bc6`C)j<2z6L=(-k-B%|q6f(kS7IkijAWXxI$L!9hdzUs zxDuGQbP}aTb{q0g0k%M3j4n<+!G&n*f)+4@TL#hT3CC*{)OusR3qljUm-uxM{lQK2 zS!&sv{C$H34PmsjV<%T*igGFZ1(JrGON(Da853L=a%R7q?_+ef@u zJ1#1-AGdt_&ti6?`gq#Qd2bolB)dk%Q zj9(FDa>7Y1(rCU77*IR~ud{z?2Dh_S$u@$YN_fl~ObPn1U94}7C?{C|6rTu0h|ai! zziuAVKOn&BXrsxEbaX9!Q+2IRf{>V4(cnlQk*8FZteJhkVT;_kTiogs00haGjjeZyhs5^Gl9i)nsVoX(UfzKj{vs*Fn1--g_+} zm8IfN9t>^`wDDoY%q}`yJzCb99NhHK;!#Ms85Hd+cBFEpW#{=#pJ|lRU2)95uY<@t z@(B=O5G%lrs>y492i00zjLsPUn@aj6t!&F$lf3Ey9e1OmrP^*SyL11UFpiKspsx~M zFLQ28EP4!A{zi<1kWizJu=BU<`KH7aDJw=`GM~j^)$65^8pG=PDn@?Hau{TE1Z}KAd2XJ_Rz)kB7d0FsjtF= za@;7n3}zifZIoH~v2{oXXAEC{j}wuPR<>y6dVVn4mv4*T$(*GiawaOG@Ymrgfxu(M zY+`gwjcgyKyP7$@bx_CJI}fFcPzl|t^*%Yqky0(r*U3Acf%!#+C4hjDz>R9`NiiUJ zFx;VY@Dk1zLmE)t)mj$IJv1|$!$mBe3E_7CHvKVw!A#vbN!}cBxov}vp76a!&K-X$ zyQU7S^685N>pcgt(DuQF9F7gKUWg^a{(Sude>c7w%3O3m0I&~;>FsQYFvW=?s*yjV zR_s-2|FhoJj4B)#x3GLShWT_6CwXew3BB_DUBQ-D(Yk`GON53L(2N|ng*B_sVU^iV zEnXO2FIUAwf#<)wPGsO+2>!Yf7=S%L(xHrvjm_6%cmLWJRa61jCl6ePG)-{l+LTl7 zYA56R6v|+DY4UYPsM_xo6zGd^IiwzdB9|~JF|k)YZA+{JzkZcLK0Eni8&)jg!)Kd8 zfMFQSvksQ0V*R+u?Y(1H-)1c%`{#4O?P7SaSTWj&g7=yLnt5iZ30}1xi9%fa+$v!>0jM{V9jEVBE_GCw*EMUSL&L zh8_pJ(4Dt`ztA<*?^ME+*-KdN&&e+wLYj1YA_iGW_Mfj;30WUSAvjTABmM7x%ntup zeo@D&OnxJc=Rd3Q_gB%zqIhyOF?S~O`nm899sb5F(g$LUiKH@)hS2ft9Qa(!wL{-l z&>KYi`J$3XT<%XX9Q<*06iW2%MUhTaFc_CgI|D;q7;!{32EK?d`=qG~MPN}l!o5<+ za@qm@#Psje}C+WsZ{~;%&-CJ6Jok~$xyfNc{t&AG1%;xvCVVffXHT*wc z1Pvn(6RPboxFOKWQ7^F;l_|MqSY#rw;UTW`xJkk47HnQv(zAunF_$G@KE5AKdb{zz zTmakji~oEaowKm{ye~yuDiz|~b2e_Rh5j+d;LkHcu4=7ZcDG-niqUX z?qzp&nsov9I_+nhIWlO*tGn+N+e@AOV47OHJoRF+<5k>0m&uG#h2?^QMTo160Sa-4 z!#%2Mnza--$3)VS1z_Sc7oC)v$SwzQd*sN>ujl=`=Wnyt|3r=i1ArmBj>N9NNS-a{ zYUG5+CL|oTku0Q`{c{Ijg{3~Oh@{LHm$&%cN(YtWQe@FSyLAfQJXenp?I~Kwc_3y2 zz*!PHP!MnGOWn~7f?(TUlC>)H63r&~XHrauEaFiW;PKV3Rq-J?&C1&(bwjL;D>+`c zo9AHPB+au?RH&hr#9A4aWKq`gpG(4s1%U#W+;OeZrRA{DKodog$#0y;^8$bgq$re-=0O54tyMC$eIqCKNx$#!eP5_-BevQ9dLW<6Nqv z(gb%VB5CQrm*qBUS)3X8^-eN-{xC#@_mfbBtdw+(er282D1S3*1puM?%o7mH(26u+BTpiV6t45I#kyR65Jms<0$pKJ6`FQHg`C}zUD z?PhHNW<{gF_;p77VE6qM}oNb6S#5BLOiGxc_v8aqZX ztY)F8-&0B}cfD+~f5rn3hDc17>bm#2WvCAdMd2tKoRrJM?ZKD$U}{9!fW<$|m!fv{ zpXCc9Uwj3uOtG!{CKczNwK0bu#NiCi%j|p!!P2kxrg@*Qq>>M~RQG)ZT8J_jfq=_SxUe<%O>V)5)N zi+}F!rYoQ9UC;9nO4;oA+$Ez1ifN7#3J3!23T{CFr#92@X_R4RDqR+E}`%A@z*d&gP;# zz<99B#@(K#|6#+1DroHBWs=Uc-60+prBjoVLA?xI_e9sJ<3lNfNOP0<`F|>0c8PwL z5BnQ!3)ys7Ne3>Y(o>kQsnmlAH2yFTKa5fjtEhkGl~4W;Z#*Cy6tgfeU_<nj1Up48)Qy~>S9g$vmywATJd2SB1!FPa zduPmlL+#&C`#047&1(NKTj|L8u6^hTVhFB_Whz<9DxLa~HG34_fAi9J!0Gc(=;fIQ-Qmb92>iv?4fx(8yf?-=QR?N`NR?Eh^1y2 zLm21C0;NOrzNDCSo~W8+(#03!mk|Ai92dh$BDeyY#`^}Df!0@$$3&U`2mD*X)fqUu zzHB(XjzC{-DNr_3^@K+WIfwZ=5CsxacbzRYDiqL(pR(-!me@C#rO6g;I9*91*Gmd& z511D_lxlZX3*hgj%Ov_V-?8J9kB?e*w2dJ3~LJNQ4J4wBpZ-Rv9W2cAcN zK!CoYm>&D@FrS77A&Ja|C&K>-srP!4daBs(1r@-JNE zr(aLMevWwq8Ks76atRD?T;qzNv!ZXZ}5V){2v;Om2zktBBU6 z*ohu0WncP+E0J4FGwtT40hnz~KB6?f=%~#RuKzV%8YnVlGL&b1F5!f3dU$QnsCmF^ z{*(_H5*~gcc5s>HR3iF6lSdB4l#z~UdBn)KYoQ02=GPc|zIz-V%XMtQ)!`~t};YM>o zs!Is5Bnl*MYa^qHb{@w$4Y6K}ttKFAG15DOSSQi0+`~EUqg#mkGE30*qif0ABCKKf zFn%Ef0*p&+$>gZ}N}_^LzG1DGqPO=+{RHBucMys2{^>fDdpblf1KlR=n-X!#t;EVB zHM`)erccD=B{}ixSM5p+<+yJP{NWp4gH?K{7u?IG{ zJ3JSw&{^+L{ptT{XbGH$BuW9YRE$pGj{E^G)B}!2%L!~Py z&5hJlg|Dw~OhINuur&gOBHE*RzflcRgaGkg2=`1Q{kjSNUhzSx1#-U! zz8p*oivmO{oRk!GsHM6BVY3PYJqu@NXD6ARzQCb+#Q1f0UzyiZOAIqdy6XBbrbp*D z69e9jnK~R42n})dlB5y#4|p}hpn8_vn8*3cl{jG|kPme?H#Z;2mrH;9bGW~SIk=}6 z=3dAS~jWVp7~{0o*P*%e{5C_(U%q6G&CuDA|B9G znumm$o=k9n5(i;GQ!a8_3ZC`OvTX3ziNh~N+|p;rJ1#{un!o&_b1>ErYdj%T{NqV= zG^OKUitDu+Hu{}Q5m{eIHwW{XA>-u@?j?GVQ-*R2MVx3M@{$hz60uwYv5X612|g$3 z_x#UyKQsAJFK=rG)_UHS^vaZtlbTwz71c%D!ZvOd&gos?y+x#F8sZuo@I;=bs0Xus zkhvjtF%P*YHRWX78k2_ z`UjY;$`>HIw&j5W%7Iww9kjNx;V|HR>w8f#&MPLMisxK?I9yISRVR=2dxG+jp!RhV zjqw}NLvxnC`}Y*l0JVKNtzzOM4|m3`S~e{YUF?q7Jd4ESb4o$Al?*f>{(vU&MM-4M zv=}e1V|Bb{sussFGQdMmk|wpe!2iXIBxg_=|H?^heB;u0lBvsa1dFm@S6;<0#soSh zE}n)%U8<(t{_E#XGD=?EVtxmN8TSaJ#!1(wIzduWQelMmSefl)S}MzaLXx4R0jc$p zeagb%d%s-~XL4gsT_CjMG&DA@be&|P;}P$fP+<;Og$UN@ah~u6t1fBr|9F@u3jEP` z&A#CW{KTsMi1)nU zIvl&;z8rNcZ!3`Td7)%{PLVM{<*Q)GtNbq)pfRY)e^Tsthb4$J?><{?P=`5?=}4s{ z{jibI-1sG07R5*1;6ZZ44Adu09fWeP`X%@;u7udw&J=9g-_xi>iY3O98>h9dpXS}K zWd$$8^sr)Xp&5}m+=%%>d71<6RSqWv9!nE^C&TCf21k*(PQLZh3ec*Jj9U?*+~Obl zl71@5^)CdBE%(b##RN4yl|B6OWrH@ArTgsTk<`WtOLA&z&j*kd6!)2`h0AGxXUl0$ zG=*r0jRdx|rImIY4zW}hu$Lko<uga^?!_weOpl< zsAKr0x(3>gdf&LHM>&j|%QnpRzmY&KQ6N4v^%#<5-!@3(`*nDQg()|8b}mg;?`;t{ z9dZ0P&Kw|v)M5;RrMHb{t8cZvo&lZZIdc1{3EF1}&jhqnuIT$1m)%(7u**qFNyi_M z+w&DzU8}3BdqTGi5q{h=VUX%T?c%hgR3g|ezbZ!DMTId7GxVIz*e~1i1(Y;2HC0Mp zLA*fmAI!Y@7gg>f)A#(F=(QnXyy^LlWXxb z0B^axZ?JSxE&=SMW|fqc#dS1Y%<^&DuwLmskJzdZp!ws(ZldqZoL%Qo)QWDLs9~$D zX6AyMot2#^Lk$8?1I;391b$Hmv4kTzb(wzs9zXA;oLEraJ^;q!bGZlYM=Hgoq*MBdm>pD zK|O1R^8y}To8nI^{OSC6W)22zk>l8`6C$|$0Rc?e2Ai^&?CAsB@@>Z&Ic2I(X9maO zuaE?v^aooC0T8V4Qz_bAQUMs2%m3UUnvCW^dITMy2z4fvw62vS%QciVN7s zr?;y$L3;$2I?q{x95_T(O0$9@HLR24h1(zs`O&BL5AuqKqmgh@Np@Y#Au zS$4P;S$hmPejB)#Hu&U7c(Lg-Rck6%~(i0_JE=`r+i32BC#;Qk2+-74IB6X<*Li zAb7b;to%0>66dUn-_z%n6&-a;B6UQ);2f+~cx}m-4RxnmLVWxcLDgg?A~mjC_Unhp zyqB-oc|R5xwHLtl60^eTwdIAAr9N}1Hj#YkF(Z%9s2 z+8QF3{VU2jU%Mz?`16)G9XyBq@~TIE8qMfs1+T&k&|_rLjIbQ&V?NwC?G75xSDJgh zxD?RDOTRt_%35G&QuW1)(n$V6QuJre;UL@7UqCITEh!I3eo-gm zFz!b3V-SdZxoeA(E1#L1>Z2S%leFwrxKZemD(CE>h#*;l6QkNmA^ZMdZeW(w6pcQX zebW_x4|h;+T9@=CanTnw#NGqGF1FzA?;J)n3~JK3ReRUQd_;LN?#}e+o#Fx}3ACq$ zKA&z7qc$^x&|GF@{k}#;O`_M`!Da(~w20xjrs@gMM~N9(SuNi|$$+W^&fQUT@O+R% zYdYat)`f?gs5J(m{k0*s-y(JHzehyh`tr6o{YScNTQ&VfTR+M+4aS~t`*A(iB}ZyS zwY`H8Ov*0`qA5b95ugct7vKSG+4KMr=5zHY0SBvih$SpVl9(gKiX!1~7 zFj2nBw59wGG*jQc$G1JDHpjT4loWEns7cr}IBA?A{Z?gH*tj(rwwb_EJ;P6vIIqcR7A|u@*+h zRBpw9PWX}*Vk~_&u(5-3A@61Lcjl-+$u>G?cRe_*9XXGWYca}hQv6L8T{}$#gj1f1$=a?%D44h@pLxz(^gwn5zB9@}KXT)p| zutT^jA>$bcaB~+jyv;_(PQ2hPb2w&-tO^LxMbJ`V)~T*h9_+6u7u;uap0f>9$2nCv zs8}0S@?~?;yF)R24|Pf;WbuQN8^mW7pG{OhFeuV7PH)Rw?5YuK_b8hWCTK0aog9y+ zUmqz`4(qGwA;T*wDl%14QaaAm$cl`=v%xzjb4E)1X2ZFFfPLkK*NXJ(8b`)Ay2^_1 z9w!Hgpi~GtBXGgF5NsbMKb;CU=|;}8+20+Q8h_uIK9|r9JEjdNih|hcJjooL!VTHb z187zx;%ea_;iH-2rO}thz8B z-fD z?Z=TCDFg8387Xw}e$FHK7h&Ma0C^XJ${eKmI8<3H}ZZqfd4M+#1Vgnhb{Zx}edx(6thXUFR};wBVPkF@`=j{S$F*TL2Q zxR1cTTxrje{9jDWL52@clUs()%w%f}i{4UG96~)xVk{}@vUW-tp{yxY_TIJ;uVx*0 zw+yv%&Sawh#r-o&{v_wgX`LLK9A~=&9PuTP|8#j7xBGxepA}Vh>_zHgwGrSX1Kt`h zHKloq*44%<2mBEvDEzEg`9X$QOsR6Ka$DJfZTjnNAl94Ja+^xfMMI$6SIA*PQ)P>$ zxh&P?cd);oc^;e=ZJ^lh^|<}NzDMDfxs{v3b!_CiR_LEKh@;NPz~TqPEim;-<_nFeP8T#%~`59(kUt|hu}qrOw5kBqk^tpj2K~kI>kPM_K5+TVzB0i6`Ne%n3w-_L_8w5IX5(=B zGW`y_ePSch3hkI~d8=z{c)nVKvKy$jci)02UYR7kn&inoB_U&c+Kmkbg9mB~QDmP!gbQG~xQkJ<5^n6N}B1(hrCI@)*kZ-g@ z6McfZ$S+Gnc_&>NrGEalZl_k7Nr_#XvKXDjo;6Xc^KKVHctmHU-;2L`t z?dcKp4eFu<*!+Tmdy~Jaq9o|5A8sQ8m+~)to-g`zxxn*6WiYTBW6euFu z5%1kti4_1XMsIXCxOKLXo3^C^;!m1j!&EISJfVoO8PMob!$M z?LT*XciiqDjvjPF)${DV*IsL`Ip;cQJ~tV_gU2#9pibWDSQnxMiK;s6-}!AiT$;6o z#Wx;ke%wTPRt0N1I=m0I|9R_4ZUYV9y2`eK@82IxpYNjZa*w-q;3fz)VR9K~b8p+U z3b(MZ>qd2T_4~vNea@h$Rc0yT(#E&2;JJN4t;&S+G=|$=LN187Y}(N@_W1*>YjTfS zK#4gRS`m$ojz%gZj5LxJ1)v8&PVSt??A^VDv}=P7SmNU1qDX(PihGRzWk^Q=b(=+v z-LPB-zu1+X{iOUH(<%cEjWF_g;<;{?=ZOm-F*kLqaEC)^v@%QuI<9SP^ImOpGQY&B zLijq2f;8_Jue8neGGuUo>~1Hnp+O$Uz-sCF_%=+H_k|`yg*SQtH&zzBR$OW$R26m~ ze!LEDL=RnP{AI+ba+o^D8o0VGXCVP^RaxwRozA#2@FzeobLfLgOOzUGYWI)v+12?! z{LMOtX0xiiNn}YM8D2n!y;aKa_{39pe8{m^-z#?9S>%heD=A=|=Y%;^;Xi%3`kIy2 zSAMysZkHT$ap5$a4=cXZ@4KD%jfzIYnu03yDFI%K{S7dnThTUKA3=0fU00~k%+fee z1#mMJ@=tFq*>15VCGJ(Sz1tAn_uB)hLNf(5zpa&Gy zaJkNj6;#psLmS1~h|RiU+_JQw_27?GNO!qT1?B5mBO<7RjzLTxjJRuuy%%OPYAUb3 z{;1pv(DvP)zSGaqYjX&{#`WnnL2$Jw(hs>3SHn{qzD(mTTZw>B3#!{6mAWc+ibt-- z_aEw}=xhDMVC&6#v8$2j?7C`ynH8?I1~mI7XN(N=C*5+Z6ScXzm#FxKWkRIMNJ+(7 zNmsB_L_06^g|A%MC^YUEA6t;O+djX;fp1E^#A+_z_?BH1XrP%nCPZ}Ph=I6>$o3^f z2{X?#tD>G=BQPer-gi^KjI3*O2cwaD+yCNReo#;lJhVjJdgfUAZl{i$0mPi4j>C-W zv3!Dp&hF%dkVP(ZB(%*G3C^wB(EZ$2%wq5^ZynE+O%v04?gna`?y3XqOjMCGo?oGT zGngQs2(qaQVNGtUa~=EI*V^!1es+RjT$e@SrNtr@bbTvoj32S-s@K}nmt0gS4`TTo z5}#pVqfhTq#=1+?=5tYOp^fGpN0h$GXKDGN-?XSlbdMFx*Jd!112O!p|LlGRR^)j2 z2~P@jRZX_M#j5KG{UVa+Ghi%1mq@hFBt1*m1QRt!E8?uQXKP6^Ye6 zq~GT&+<=iEV_zi9IE2D-;K@Z-jD9>HNtKjh~@The)g0<^m=h& ztbHqr68zJwC??A_=Y;}!XbyNntIQT@mkF=2HoUIR==$$AZHoEV*=!lpnoKZa399Mt z*Y~bK05Wi;>3c)`aGO3~Bsv$5D$UN*LaXaA49gK$? z$M+zoZs|&E_FrSo`J-bHYy6JWSFsF;D7TQ}j;{aeTLf3av zSic>-fzfQWWp#|)6pXr{px8LOCef>&+1;z6tUTW++|KWJlYu*n)4z6R5QS@~DKV7KUK{c+V7?&{x3y3EyRDb>HkCPZn+PC)#2A!b|**2})9#%#fyhuCjMNe4s!bKq(lDTqjgTTd1 zCgPSpaJ)Ifc)}t-X@>R&*-y`WKe@*;{j$T4Q)DXbCbdENM_?e z{7Bp_^F2q%;Z&VhQ3mXmYDjX&fBC#=dVO`i;}-3{U35mqsc8<3H65dlPjAgF__@6}qRa?}R;$pBcedy+PP zB?d)94Z-V)v0Q>L-bfYBA3QTK5z^#ezW{9pM`$zb89w)0y*=B5xmsaaNHNrU*!zNs z?s@&q<;OCk7v^jOYd2IY!yqRu0VdC;;z|0dm>kN%(wJ7fVcTyH>NksbY{JmdC!dXk z&8|wN@4K~K+7Ofb5ld$SonRhd7nBO%?)6pGhKB(^sI_=#_3f?mEt|dT8KG z<#wy#h8Eq2P`?Ngs~?=I|E^c5{{l0XD$ zJ-y>%Zb{G-^Fv;wWQ@f~sq$i6c-z*}@bIvFgP;oK+|~x5E@uF|?U66re91TB{JKm@ zHgoZ-;@Yg!S+Ai7RZIL0C8Ko5N}mR2UkM+wI-l#<@VgzGfp4LpxUUrl_QHYoOA@k{ ziM%Cq@^r@Sw>w;Mhs0yi=HWMV`{6cWxQNu5IGAfv;W04DO2fze#j@`_l&688x4cwl zHIEti$yK4F$)6=;U%u5*x8upe>KgNCf-y4S9KAIb^InJE`8Kb(Q0=lO7cTT@>8cJL zUCdAhD_6jBSzafuHbXORc}G|k6*=+6798I;#K3#zecUQ!IxRXPDTU@eS({7Xjas?t zrTn;Ck4QPLmyJ`T>Zx7@N5V?@6SIlXo3`6l*5*1-G|$;c0Y3leiJ_2As&{a9J8h`Fh7_7_I?!rH+NNVJ=a**zFMl% zRGf<3oa-4wXtMPWeL8fJrfa9J6F#jp#&qw@2pE3wd5K*cW+LXllk+0# zur>AM&U5^Y99GMbt2&Yad63q9CA#@BpY~9xmxVo40X&iAT8A{T3xnQ2&ie6u`R*?C zGHR&L;^I)#2jh~<+bK-M23UJ`cc({xaseh=a2GY7cFkpJg3ni_VO%U^>7Esm$;;c$ z&#WTe=p~F~vjKiN0NFuz@2KP5N}%uj&;`pl=Y}JkAFt15#Hg{(3sflq%62DaNPTCg z)AC2**oJ-^=IbCeD}muF8=cnCEWI{8I;-qRX^(`OrOHZi7=AvIZKW_^Z=jj3?vR<4 za`21$(DlC@6$-g!y~;>YVMk1{^YzH(OBztKUAlFN3e0dl9v4m%mgLVVXAmYegLB(j zkxpHqT$WzHLdBaK4(-Vr`3F_mLLFvVlzz)12{n(i28Y{4u%mPh5xFV?27Td7#18DI zaCPF%CcAT!AJ|@{SXuy2fXaW530W%O$C9T1+p1a;#w?m6WkqS$Rk!9+=?Q1u4F1y* z(Jso`Df4%L-8B8y*1k4pLfcIE;cOwYg>)&)MfFw)ui)0Da7E`j<3EkM3~EH{N^}D_ z#@*8AE}lH9>u`+4LrvT&?npoX8nC~tyVzxMSc<*rTEg%VE-J!gN4ggQ0j4LSI%&qcZDyT)nvNCj zC{Uuzx|M&$D~Xv8cZh~1O&A_<24($c2Dmf4-1Ap|w_A%Iu&}$BTXCa_j@+-vdkAkB z?P;kh(fmZy|3f2@3<|oGX3rEwa~*@xdWqIe!uJMw1q4?6TzIW_oAo>>!38J;t4UdR z8Jy$3??Bq8GP8PF_i%7lyupEY@+WprZ%x=j8{V#|+edb5Vi86xEaOdQVvIFuW3t=~ z-|Wm$>Q=hH(-Faa6&6TXBMOV$yV_b4c&-_(@2+@M(D?@^^||JjG+j^9aG9ix`(0|o^Q?>cJwTiJBk2&@Nx)i9#)CfTOYNc zPn1uLR626jMsvd$Anep*o%g-?zdvu?bL=d>%3oLuY{+w*R*tL z9Bz1IkU40}TIm>701P`CXScY3A^Dh35_QzeC!jdOCy!3wJ}1}I1zv_+x$r0AV6rFCC-N`JO%{ zD4AyZCu_s=L)b~92k6(k2v~HugXlK4Ag49OUO(H4a%32lxd-4#r^WaiV#1W8l2^RN za0`3W4LiG|4Njy16<0RhhAlFg=ff2Z^!r9>0vF%9bJ5DPYCe2xz(GNDgkP|B5`&d3 z-82L@O|3}m7O5kp2Cb1YxW$(4^!YHiV!Iyz_0Q`RtDd+Xs#5gI6_<{Ujp8FuCnOYd zuW!>9zP@dPbg}h`VwdAeyvaLnEK%y05yE~AUf7byp^Lw`Gi2(=ciV41SU2lk9UbJ< zo>}FPJa7%As;F$XWQLmC2p~ znrx?(R?3DuO}F2Eplvmzhr;x%&_!*NB`eSK0cDQz6;3QUopq-}0CoJRX*Ex6(Vf%h zb8@H^UqZA|FI$(YGDTPvw}&f=ICU})rLVgM%U$N`>62~<4Z9mUA!w0abDOnhB^El}uc4S@Wc8dS zvtUil6r~wI>DO-)i`DdstD2r@l;=t5bmIHn+Vo%8y+5IjSeR4~!@+@m@ZQ*k4hi$% zo6|u#z}gbCu6sc*p*6n|cpEo3dKXbrr;}-&>M6ZPRdslW0wH9$js)V{9M*61eu$nUtkp%o~pz(M+r608}MuT4%~P2!~)~KU(w6#(AVi=R2v(x2hSloEa%JlwOqC=zbq6fjGZ!WY%vu^@XjW2_OLNwIN-=GkZ?4Ypz&9 zTs9B2barUn8->=qHp)RHZAq2`Tn1fHz$+*PKjD#zL2=P5!8d#C{bSzpLO)(I;YRW0 zj-1FFZHH1OPal1{AX{Wi8KespR@wG8Oe4uW=5sq6J;iomC#LuP%Q_1`zAxbx4&N^8 za856PL$_-V5jf>}-MfAJwgR@Iafok6H z_wEL08?uG+-w|;|yPRu{me~sD{W))aB+23Jx-gz5AbVhaqF6Q4>mUXBsZJ(h<$@m1 z^d$+$rOnF5Jq)F;$V_qz@XvC=J=#12M^0EX(xW35uE~n5Q>2qVVMNb&GbJ}@r@U_G zlInVTPoDw?Tcl$?bTj4vW><9DJ2A-qyc1Q>K?FD#7eXXohxQPIxH(2F_r`?*as_Vn zb)#N|wubj^>_pA;u?@xs>HXOs$YKLMW((&Na5}c%q8bINn)L+G-)eH);AxLbRm8Qc z7;`z`BBdq9J+VD+;AvYzF?VY%oK?T1j1h&3cZa(L@;Gao7oA4nW~2jW=HJJTX@wHW zQebOOEM&LmyacXM&D)0b)Bg2N-S(PyNsjGo?)3ESQ3X|?jMLHXz0`ckAr*_KP6f>c zKX}nlzp&1`gUgQA<+l2E`ATilBs2dHw=KBnA;r=^ zBxg{XfxD!cMLu_U>tupY=VC$&O0VM2y@*9XgxY3V@*Wtmt`%%N$d!o|;`C7ZWn8Qz z6I->rjPU5eb%z17Zv97usE>+dcLt&J7EwC)61^gG!SVcu^MHmoP8B^}o$SVFI$VRX z!^R0WZoS=O5DVz0=DYv3B8UVdQz=a^cB3Hg+Hi_YsYF;4eOdzr;>$VB-HS$_iU9EC zoL^Y*VloID>;$w!rLbqFC@D!?N1YXs1AF;QV4(Y~Qzg3m{PFj3U1haXMXiB6Lo^Vi zFK&@e$+QgUmxu6;&oNDiyfr-nwM41YX&{;|4H zfSV$89$q&Xa~hU8VXSHdCSJXDUDsTg6umM-(!Klev6ZmFiPJ$`UDVrTG)A0#077Y< zqZ}8uatM9$0yksw7^|suZKs1esmi*Ey=uKz>lkX6Mez!Yk(USyyOwi6*{*@+?r!v1 zB%}Wx!|V);`P@f%NBxUcj&Oc2M|E3IXFg>?G{zOHj1L~#iDEDo9?@l?Wc5gQi4pB&+RCj`6bW0jr2Y;)O2v=(xWny8yV)22T0J=7|+gvTbEj9 zXJ%&jYAxy~mtDiBr>I2RzlQpyZUT*#Oo>~5u;4}1^^c*4u#OtO+4F7k@3tpeVz$*+ zzCH7s>21gw92^vbs8+7XV!sEcIRs8Kt%pjj%J}Ys4-ZsF9`^KY_VnGgwq9V=#OS=$ zo$314JCpqN4Tr81N9grspi~;+hbWv|y_@3N3=x#1w0QdS5YQ`>;f0+7*q;QjYRbT& z`ddRDYu~=CXB$-Lv?3#HJ~5ZMO5Dt@3fpp4MmbRgg-vh7eySNi%Dy_UbBW3g2J~!8 z;0Ml?QY81(T{0+l$>zCV$&=DQZvCohwTo@`fk5|~d!1IGG)ilJ>Ust1(&mr+%KilL zUtU@K&4XdnyPq^7?94-LuKqx1fJgS@tuMb?QT!#P2 zm5KsBBlbYE6!AO*d3xe`czB(6isy*CP7l}I97@w983-;x{E{rfodZ^0gJ9)V+Us3b zb_OvGe_pOGMiW8JTK)Lk7jS-xpuPFa%>;}F@Uf~G@J$3Kud*ma&SK7%s;A@RQPQvnJdULo9!(0hvjf(30iTl-n7`whY8kHI0>g*`g~ zvL4@HGlW2dBsrmoUp=%%=Cy&%9)rA#_<8Ct(8a^`;-vf25X5^*Em9RL&^TGaLYCDNvv0EZF9K=4yfD-OsuZCO#>&-nw zUXDZ-iu(Kc+q6cSGZ0-(#+El*a|wJF!F>FuSJ-uW>dE@j)=> z)`#!R+o5dJbU)vX#^?l){3K@Z5k2DM%@C4HhL!G7(DFYAr7HLF1@a(@yFdL+eA>Et zSa_tOyz<(t!tkK0y^bOaY-If6xxnfN1)ThU1-H%V8IWJRi2gJ=J3fbn%xJLr#5T?)tb_m|1OZ5aXC-B6k9>P#JLf9(Yt zqkxAgK;G>KA3=wt-h_1?etv!v0EQ#L99&7Q!dIrB)aSM?;!F340UxxR`yayp=4JvJ z2M8e+ps%?5iAp8#x!Q@J7d55qz{2?S3i=kD|B)RExIJd@GbKjuhN(H0| zKRH7Hj?;iB(~_aOViKV^5%}@0tvO3bi6rU-T235x&Ln{0{+r8_>z^X{Cgl*D1?X=# zGXu=Y@E6Woh`5U8b2pJ4wEk6gFsm~)Td%~9dusvzCGSB8>m)+xCdw(`hhkHVkV#84 zyJohYc0lczUCCqAm_#7YIuMiTf+5>tLmHk8+C(nN8hwH?mCLU_wx@3tD3Ai!`Fk}! zhx^yp*6VS;gmn3&km$)KX=^sLXEGb4%o>$6e#yiJZlY#48A0ZnMt5baDc$@I&K=Elc=h-y9w6OpeCe`c_Y~fK4v*xjK|F z@Ty5*5Yt(Mw0nU(FfB>qZosAwc1;qod9OSGyCwo}_ldjsp2g#ec*>}AP%=<9mHGaSHB*>v(>!YT^lY1PfHoN za*dqO7p#}{QM&*vr2vnLH}63;{$}=stcOpy#xR{Lr1}0!m}Vty1P8&-yf?dhOe)>3 zqTRgY0W`42X5L)?V&NoMA%W0FA|u0Hys>KmCH9lq+9h`P%r=+CMUIn_&Z%l&0^9ef4QgcJ+O!7`qqr)W6vwRDZdNVoo;Qo$3C&o`VRHrsW0O4AvDMMB0i}> z`lO;0$HEUGSI2x3sM_?P!*PKU%zsxg)Wd_9F!*jTJYs;JN9sU5ruHyvx`IG$~flGGk`0{4c z%&OkyC@~!^hN&6632YDWvM?{})N=$qIlAY<*w`6lv^Y_t?Cd8znUOhJ*u!e$kyX0# z_2m-KxHo-g3?rInY3b<7TXfvg(9s%SJk#|Y$qCD#gt_kpz0W_&KG#m;bsEB&L1ZGk z@``(4yHg?$tbv!&r|UT3>!?9$=&7U(|9WG7y5;TU!4)@8@3ZZ&a5g)KO_Bi5{pZK0 zJz3}ay5Z_kbIb(CTTD-%Gm6YK+tYlAI*D@AcVc;SJJHp(+FnKFWo(cQ95k59A)9cc z?eR-l3IEevgEiDi>`a5?aqc;M4V8*H@~v;lgVv$@r13apNkrEiMgU%T@Va*{g7YK- z$2RjET9{Z${&RmQJ+xqv5gPUMBaK>h1SCh zDXxjuP*xEsO{o_)xx%^Ww4ZDd6ZCxZwAMKP%brodW(iM96|fNUfJ5RN66l`zOPb_8 zeYP!oVZ2ky`Do4Wi(aM?&A^P#DoLq8H&htLb$ zDz@SbbGvu1KM|LOwNA5=SI;@^!-QsGish}177!Kvftk51)xPn0lT-rRGn2e)Q%-6= z=MoH|(?R4adh ziQyS&vhI%w``1mND2V^&aaOh1Y@+puHU+&Td|0FVcUW_18n**&_e0kWJE%~~7K%q- zGzZD=EP)2jGv(gh%oEx8BHIrbebmoql%1*_A=3L^XEY7ij7FCWQ`mzN3od}Fn|mBl z%`?oqz3h|p1Gh2s(OJ8SEX%-s;)9^ATk_H$gH1)(hd)jqb?nkPn6L;`{VgAs>nm-O z5VL!QOI?w9!J{QmLA60g{g{rm@xA)k(8ndK7Jl*)?cL0!&1#T)IOx7rWKp97E!SnD z8@(aplfPVfl!SeY6?E$nOw|G{Cn4M8dz)I^Qh0jUJ0{D&znR1Jveb`PlT$@&tilI` zVeUd~iH(}x<*+6VvfO!gFkgUn=1>HxDwz4o4N4@E*KjsXxlgt=AuUWYt=q|A`>m_r zqo>DCTlL~_7{3?iGE5{1ui6x2*M^`B$2iKZ!#RRn)yXJ;ArJTcY*eTZ0*5}%X`C*lTJw(eKXpb8Cx;fp5ObzAzQ zjNdhUpE=uuw9{2lX&uSb#B7=K?(79-Fl5mwNq(TX7}qqp%xG_RE^kK__de25Hx2Zr z(8$z}d{l4D8+oIoq$8H0!^65@t|3^o`@<6j0whI#Y4D|o@5T)-`u~#IelqrUa^s4- z=;6JsIDIiY1OoSge+BNSe&c>Fr8T~8bK`y_SwC0cY#KbTvc4G;@(|qYZ9p?5O6*7a z$u(o*GfquA%C>5wvtzky_1a-_RzgF|9XQVcJf+eany5h*q%UaNJ2wuiyczRjro1dz zD$M+QHr^|ec@4!IY8hWkpB!VcLiua8lg!m-1^J)Tjj1F68i~X-y&YLv1=>2vxutG^7<%xYM2}eGD#Ffm-UA6)!L7 zb+yIi+{#UKhM5G0Fl&_qsp40^c!zo>I+^}oO)Ma zP`7TYfy=#$xv&Cv{)1C!8I*fF?O)qwq?o52%#BLaq4%?9vzSqBIi zwie4>?(_S#yiAFc6sZVPk-+)o5U)pc>Be|qn3;sj_DZ(RnDIBQNkK^e*N^^&Aq~c! zNTlo33N3ipqZQq`@_Pn#W=(>4iFD1a(_tXbCb>DLNoV^7tY7MEgKTRkd5{|boR$IY zk1>X+n*@P^wbA$?8)gpgs`3Im$k;+Qb-o!GebVpgo0B$XM0_dh(UcA1JJq9OPR4Qa zs8{Sa8Y2>7jxDc1o`rOVXY_&H$#rdQuVNQ%fL)yosp9xlt3b_dOgD3*gvPE%v0ZEH z8Kc5otx(Fy)tL>qPP`e126K960 zkV6?z`*&*~1n==iG$rNcZWk9rlYOP3&@iLt4DJZ9YbqU~L~<1y6%RT8FyrZIPQ4AE z`T6-Kw*D*A*U>YwAqa^^V_rr8-sW)ajgIH#ApO%~laH8s$v@GHv}=GY)wA%<`y)yN z-+!i-A0+IPi4WsH^Z8FMK;U4LiF(|ycv5L*64x6-l&rIaphV1mzDf#M!FhBezU=gc zf-CHKJzSU*UNGS)E-RZLJWCw+&I}5gGT4lpuC zx%o@kZTr6maBfHA%Q~>t{@fZ(D$4g25vFe~%I|9UL(`{=IsYP+s8Ys}!F-Fat;=dN9(L zeBU8m0nn?0ClNB_X7zxV3h}|LQkTVqK9dHnX0QN(2 z!;p2^ysO^2yn?@`i}35VCcQ3f<1Ba%Ne}A+r9B%UU*M0<@Q?oJgzy=xlFQ^i zWkje9Q$Ijo-f(vk1AO9Q(Q|F!+y{|2%D2C@GJF??10dy5rjl>L{a^8YoG%725{ zpWFA(jr?Cs?4OuZOb2h894EYbV~i#y^RvPk;bM%rE_jsLrJax(Z+_e5$g#tgOtrbT+#z zc1446^(ThN{w8Rf2G5;jJ^~vR;Eds*n^GKw@Rn2qFeSi*)Mr@TeC};*H6zJ;8$lJv zn}5SpiP6OH{f{5|`_qqV1Lloyl5C4378i?V^0<$ym|vf~dGW7Xkba+AOaIah$aFKD z!$zvD6&gr#$$i+Q?=dp0X~!2$ce(p4=z7<{__NABW0m~nzvA$p8`%ry@}7%nfAsrb z0b~akKuj13jDw`h=H!HRx6G?}G*-BeZ@LL;puYa%G6D!BnuI$psO43)7_bH%Pv5@Q z^5-uby(9df4BTZz5Pj-_y%6r>Lsy=I;ORotLN`K6;cdsBQlADmKY*=l zT}UnEul-&8iee9kx5}9q5C6`weD%mi@En163N+lq!yR{jY>EM8Xr0<<;(WCi)A9Gr zwj`0rzY#TCDDZD^xAym!0L93kG)*2MbI!1`TPX4H1AFga6;;S(iT}EY#9avdZ=dz~ z`}?;d_<8`b`IOxgEEIEqk)_;wrSaF+4IBypyC?W&Xa$l8=bLZ5ZMlyJ+@7&HB40`3 z0k;A@&al%#dON{h?1*P)y(aalFZ|lJ1Pn4$B8bzl(t<*%WEhB`Jr9ifK4{u z7U29qZP1pA5nXG2oVNW1=;Oy=RQr5Y7l+*6_5`^cGf>Wvg%^oN#P3~WGYtZeo9b%k zae`GinO&4yLvfRKB|s(kNcwtLpZb}b;Efl^zXlhkS1?66;E9de@%J9jA3Z5j1kz?x zni;Wo1H2Ue%h!CEKKJXC8K8I_ku4y1$*O(u_HWEuVrKlp`t@}g*~FEe6)2E_zhNG2 zcG$ZVPyD0^q^cjc8v;)wWvV*?5B0_4_8dpCs(&3&dyr5M_NUFMWifh(9%fX|dEYwcC^Jsjc-iAELGNnVP z#7Eo(otT>{Q`Qo#_w&on7#%^4ZBn9e)XzplXmWyr|Ncf$@MoAGsJ*Q5n0eOKMgw02 zW1Dh{aONm9ffV>tBw?pRcbe~Nmo4;vTQ~n2Egwlz!jqUH=b1G||8~}Fj9|)m>AR6< zIyd$8^~N8kX!tG^Ww`gM%f2um9VrEw4DS5q`+`CMVl40d2Y}3 zt`FF^o>v={0D6x z#bmetsDT%hPJBr_&sZ8HNRQE%E-h(zj1~_#3U+%Bh&;7od zZMFpXll&l{1ckcng^M%-s^kyP%6c5$Un8p1xzi z`m{ve6?u{rV%-Tms^tJ4u=}cl-n=ph4qBafiP!fH3%SMiKi%+`PbYv+KT*^J{xSX7 zc%ewic>TkL)J89wCzk~aXG!f0VNoT^NPtDSApjj-R%C}@O$8~f(Tm7huYM(RLfodi zXEAOorDrD#SPpLEjiKie?R({(d0)P@;NAU1d^IqCi=`8 z93tRrItfsn0%M=CQnZDV_4EyexZe(78kUv}A$QBAc;|mU6#rhEsqjS4aeF1o8keHcomh5IBpYWu!BId|hAox__hD zhY$lj$I-q2tyaa1#?o3*mHygiBeE|Z>$rQVF;4Huy?F>W-3@%0rsP6dV_mK>xK5pY z_`QZ`JSEC17<`1>0v=n{y>6Wx>JPdyz>nV;j|m;_y1BTxM2XB78`=NJTkp57s)R2% zn}zk&F}KF{R3^dwHa%_Uc9lH(0j5H|DtD;Ae|uhMom)TKF{3x3;SEp#z=YgCkjEF8 z<%~+$7MjJRe&7WQ;C)MNVc3F{lBqA-?{`Xg9z2yAi=z6$dB4xZ*RMk4JvzlNlq)%2 zJ-zqh&Bk|MiAxKI_&HSn*k;5Dhr_v6wjyf7*}-H^yufa}@vB2|m#N(cYI_~=xGD=_J+1ugv&24+L2O2C zv<32%vv_9qXJ_5qxv&?PP9E*uwtBqvdl>kBz8Y1`C12!f- zMF{0@ozvg^-fZnj$quvFPhOdTAs6gt@wd&Tx(642-|K1?nV=pUbTL{w0N6weZ3 zDTAieBgOi-|vtia&6+cn?*5ZQ!U5r_9On zZ2ME8BZsg4hCy41fX`e*aB7;HaSz{mofa3Ss+ja|vWRpe4!ZTPnIm=aK9#bp^dtln@LR*r%Uy9tW} zx|$bAry2DrwAypyd-X3-c?|{3rBDpep4|_%opO)-zB>pX`Z+;YItiC1n6!vwD7nw5 z#RUsiZ8j@e1Z5yhRlFH@zxyUuNd&d7gBwbs*utAKJn5%TH{Ncdx-O6>jy%Yk+DQ3< zF@eWEe|%+SN>FH!4QZllp2J`3u8JB=HIct%E}?tjB)^cQh7DK)l^rJ|i$fy8eCq|G z`|6HQeYB8$cABz*Y*m6pkf)XeoUd&;1JQS_NFg5wzo;U7|P03HNSe#B@;xr^_Y`)AxtqoZeaAxb@|JlqILv ze97cWsRRZ6u|5O13V<-XVVUIgdOtpxdL3kW*EwzUb9&BylPRoeT$)+S^6RYOUMa-R zVm}U50fM=UZ9_v`b&Ou_D-)3HiY&hhSo?N&9%v52sN48V+J53wyS+OnB1i-Vy8u~N zmZoG!kF)3oYF7cZg+k4?eR#JU`WfW#w0Oq#meQskr!yL@cM-|eWsTF);-@w`(dk7Q zbjRq^O^7~}BosnS+GHOY*8Qwh3S1Vy_8Rk^(LcM`>vuv8Na2eoYQq;`;1fC6&_^}T zr^u7wS>GT%eHe&cn|hGcoh(xj%_GCwVrYW#s6Y?g!+3O1+e?lcd>E%A)i+D<^`SLl z8KC5MYBmyOZ+Pa|(+4tbHiUMDA7zE75-}*DV;J>A$t%dr=fda0s5o>Am_i!#j6gK2 z1VSD^7@I(r&gr$UvI9xO)KSvacIG;+K%T?qbCt-YzQ(f?60_6OLUy3N>0=yMvB+}o z(#a$VJ3SlT*>p1KR1oTe255*`^C=R8hORZ@uZftm)hHL?oq(U}1T@RhF*_mLk=x2x zzqs9%RJtoTly!!c;X$$Rt?EN$0fWP!&6zA*ptm={$FNVQ)2srMomDSUIZw~e8)Oez z<+uxtHbP`o83b=ZmCLTF5PnTDJHhB5GAIVV+5vHh1YFY}mO)Q9A-XvhB86wNw%pIJ zqcN&PBE4FSd0Dgd%QQm{kIw}-@am!Xd47vS2SmA?@VOnKJmHUKh~BB?K2CJEH#KCj zG;f5jJM<`4(;7ANkh3yS%~1r2c&Lur3gjUJ<;rqzmiBTR(A3>va7{26G<>GGm>TxI zm}i17-=uX{#_{RZZw8uLnx>-dX{lDSU7elF(g>j%YI|EaOw)^V0c@G42UCgc{Oi%# zc3^H2HodCR-#%B6h26{cSAGz4j;Cf#p*^`4qLks(+?<$Tsq5Y8j<;?QD)mz3S&Tku zL9s7^1qDu(dSAB`Mj+h=yB5mgy0lrI9eKeEX(Sy&<(l$QcJfoi^81+`4(+@#4Tz;w zh%feeo)%rfzgzFjK}?55^80m>KJ2+nESEC*kO4CYLF|)zjNu*kn6)Q`9G=|jO+~D( zDeSI|dg0H%{u-@^k$(aL8`-cXv}HQqCFBA`eA>lj28agj!WS`_48V-lg|RS2;)BY+ zE4gz77WHtK8jr@)g~`l{DVc63d*;sfZ>LDe;?uH_;%{E+6Y; zVm>!Q8STd{Y{n?zAXI1>9IKE(@|q`ZMpG$-K7~%~T%uj&M^mv}%g{9gbySU3afJ%qCq|O_)h1dfKbFq27;Y6XGgM{k0eOQ<&1#*0?|(>z2voI~cd@H<|8_ z_wYA)rAx`@2LbzPtiTfyuKipeMa{F1_!WX}nsOVT;8$I4>G}0oxaS^#4k8De7sLiYJ4e zS(WV^6`IeS-6?+`Ayl?x=|~&cX-|wAtLy0t>&?trvKO1W;#&KD>dOhW0Z+4cu52M& zuJKD3L(X$2j(^SMPh9V*e-Pkz329JTI>G^$s?eFFI9G|6Z(>Z(%Y5@(r8^=vynPrv zB=P2jSW?={$GeLw(+s8b&xlnag*CtWdewbf`GL;yuYV%{{25IuIV8l7Bz2E+BVv_{ z{*d4}v@FuqJ4lu+zxtAD z8Qs-AfCDb@dtcTcaQBHF*ox{tl$_Mh@=;3$)z|j^m9VU7j7$)vl4 zndJW<;Yw_e>!zkWh@!Y^q)GNc%$%N$K8G*zM{W;;_Jxz#y}a$)gZ==jq73f>0@HO%MN>ID9&YbO9w6td_%b$584CR%Zo7<2_ z9li5Zk4#crdhFBqQ__V>Tjnd|;}6c|a`>eb?5I}A@6@j;>;MV(73i0yXS{jhrp_SR z<@aP{zI01+k{G{? zhCd@3|GbQpX<58&b78wTTW`XajPqA^?=8j26n6R1GwhUrievJ4vAaysPK4<@{TvVQ zI0h}`wo(DM)#vcB!iDMS5)ezB$w_Uu45fkDNaH6c5EZf8(#aEN5U`9zS{aVJR~?>8 zRuH1bh8G_03k1s<9*9jm`ZjY}6$+$2S=36~6b?0J0!l^M+Ex=ZU4YmG_pFR?eo$`W zDk}K4MO7E^rF;16=)}p}NYNPOx}VTY6eXbB{NUFwq70=}oud%G-sh8(WNpy``6dNo z$9h1v%2C33ejp!%HSw>Xs|`N~Na49vE1spmjY*a-swSz8H7!jnBDz=mGxSV&`m8Q_ z+d{$Adnl{U9qCK8pl$BYf^h~L6-L2Y_iKkn@BOJ0C{lGDXYOZ{KQ~UJAIKAA=@{&l z7)qVX@th?(*$^tSV}L+7zKw0ZgV|XD=Z98(5c7R0?D0^~-VO=niI>^axp1D`m|TlC?+UZRi45_4K>)frm*U{y&(jLvaN(b@kwgudT}Z!&FA4P{vYol z640xz-!eB01p^3JO%)U;ZeNH9hXS(M2I~Aub+(EmzPG`!H-wILykWn6o+JP6$LE7k4tO==1+Ajzk#)XzTc^wrAlOfBn<>rkN;Hi7oHPI}BE^zoZI54WnpWUtk` zNcICgGata7z3qKoo%`K>E_(5HZ3;?KkWz4hF+GEVq%oV{0kHuQ*UAsSq1|mdQIaP&qOb9vj(ehpnL_$}{f5?2G23g47gu!1xm1`GGWSLxMJ*DlPf zRi7((3vXPfQORf(Q2j1SxCr?#+q@9ltxx#;rW?8HE4 zsp7AkAzO6sIin)IZiJ00;HXQ?Av3On)nsgxz5f z9b&f8v1byx1BG4*6Z^n4IBV0qjE-!U*PcnfH))NiG_srn;`H06ZlzmQ8DlEC|In4t z^868NOi1vt#_NBKHD{3VA+^XQ67xAfkYSfu#MJjKg{r#gbzeNr zOLG=&k)GsB1?DyHz2)V2uaZxFId)o_f}#7Xu%Cw->}GfHV4oeGR8}vf>nI$eP4^n; zkqVUx&3VyXRil%c$*6h8$ciH9{GwFCx%DfCcnD%dJL>QP_S5u=z|S4Q$P2KC z{EF3awy?W|vztopz`nafu+_W{$q_vu6^0pM2A8PzxOsV(94bicVqS4l`HMl%u*R?D zmFeqitW!{p#6br5= z6csr`Q3&uLDWpm{q+PhF@uI9~7JZa)@7>(bWjkyAd($sO=G&N6FfXkV1i;j1h`Q4f zQ(-+nP@>YEx9G7L$?dZC#RMi%^uvV&9kjsivDXWQX=L~t^?-L8{wV{9el5u%EK}O1 zmyW{OanK91f4`5Q{P~Y$6Ck73LJv!>{^!3W1pXHFW&#P2b3Us;|0ETu_$%mz%RX)_;Gwt zmx50bXer=zga=d;Og{1wekgjkP+mhtVyEE8k4cFzJc_(7_!m@S+=3V0a1?ou)K%0hunw#>vqZ8-Rd|xz25W%YUiozW6Z@ z=8m)$Z_AJR!0t;>j{12K@yp3?2!~`j(5&VqyiI7@eU%409oG8GY4=@RZgG}QAxjo( zX`7t+Oj_uKKqNL!YV9ILJD_iF<^6ku@aJugKk%CP&Jy;@+<8cwgVbLXr{G(>M`r^t z1+Kf`@*KRgK4j?hlE^5CS1ZDZ*do)e-()@F`ZrYg%xPJKB7jtoQ$E|SkbCR&uu6)pvbm7@R%r&t{r z9*+MpLgw`f(wHV?kvV2A&qe=xfO|U5c4!=SrC%TN^4b*EyPFhhF7{Glw^(#z`0?F< zpo+D=%yNBIowzBe{8s9l4A%1UY*#|ME@9lR_i>V-lkGnI)#He}0(P9@!tTh-E||Rd zv~yz!`-BcIet%EagzYt8uiE&?Wei!&=zvz%t+R}q^|Hpj`p)$0d}2f+KF2tzcbqw# zhrNj!1$y<)4ejl&-vf9)NuuBArP!ES+}3M6nt6Xn99oD=ql|mEDtA|NnhbZB!g%h* z?){hy%emUB-DZ4kHHqXIna7mWQvc9y;SZG@myhgY!3vx~Q2f0nd)~8Gv;_*(!f3}H zZ98a-yi9+8FFw6HJvCNG`Nfn80JY=qQ=JEF>z2TJe!+_?HQMgF&|(53Rs?p~z15lS zrS2S0Z1nMT&#vVk%dK3!i@jC5*pvvCi(Tt)xjfRF?kR8Q!RhljZR`Ely~j)edjuUA ze-bW&S#M3WSm7&E(8cGj1{JHGUq${Epa09-{@tXC|AlDQ8b z^2>HEJreXNJX`F&Qm)W*4cNRhLawF$(HAW#a`uS#VOn=PIIBd`BjQ=?xH@`2; zM|p9=Wn$el@GqnXqcQ{^Tpi8;`Ru3vnzSOOJA#H^i<`X;aB1Nt|P?st38(y!8Oo zxt?vi(ROucy=*+}XOw(Q(F)R`R*y#&$mE1JjKA2_*37+|jSI7Mcv&w{Y*U5Z64*oP zE(G)MPrD{$#nbnEAB2U4ts=etB9MN zHkBLqJ05`&>cY5>BRCXW#iVYyftNR18f}E5PBq~)2FI6x%i_=q#DSCxio5=snYlNJ zQZhj6Y8}>WgMJ|$YT<`+IA#fm{__0`cAXf97cg(Hv2DRUR|VHk0=F3MY0Y=X1;T<_ z%zPJm+q1WP&nvVsot>Q{x;G4dB#Sg$?S7HGD@*nnc6`ElQ3;xL9Kw#95p_|k0CDK>@(K11YjZO@V*c`*eK&svHF#sy`+D}a_7k#} z!S(R3Edq3)sZ%_TQWltOgH&(Kp5!*ADV;1F51R;9XEl9T#>zPNCwAM&TH8s>o@LqG zdL-y^$yMPxn0OVu@Y0E>NGs-MWD)2`^_pfHejUImb1*Zv94k+Qxkr*EV>poHkHZK> zCpmAAZ_j2dD@NEA1W!~i6n8*}o5QwEX$;*eB|-O>SPX8vVr3ls`JY=|VvseIyh>s{tJsyrdkiA!`hpWk)#K3ter$k}X$d^e%rCR+bC! z?zbcKg!DWPDKF0+?sG{qtFS2>lhP2U{k;+r0UA!kV?6;8=M^)x+D}M&7yTNmY87s3 zjRU}9{?WRFof%wN2Wu?eu1+O|F3Tn$=C?ME4l=&hnw$cHNU?S0Vu|hA;nv29N8)gs ze!PSY6vmH;_4f#!R9 z$pR=fFX2TWD@-^NIvKtZ2G&Wz)jenH>*z?x{`qrglky^%!cK21iG5dhCw#ji94han z@i@JF!VwJgihmq3QB8Ubn#uNqW(n>yyCA^CGsBTwIQ;6aPsmLopqwr^BM+iirdUSh zW#UI_F%pM;;4fQN_Hj8#W>R{l3k!WDH|j`S;po8=$Y`@)gTP;J z{}ZrsDHO@q-|r!6YAO;f)}MV9`4#d6@-I+`BlmiP)=OUO{%+LWx-N&%u7V1EY-<(a zWa{}kUD*Ns#_CL!QyC4eueEI5OwOB>gRcR?MraX@5`O2SPjH3KaBe%$>=gHgk~*eO z3V=A!J)qB2_-cB@5&CN&NkwQ|f5G$YnPpd7U&USi!g9LVAU<*b0PQ^?D8j zKM!^ivKi?utjn+$(2CTPHYTLqp4AS$A6BEhH+8zq&fT$3;n<9tLLdF%X#Q8eQu{rO z#lj0v!3Ge6Qb;Ze5A3nOO@Qk5qN(5{u-NZDN|Jf1rh6RrjigMjcG3!8yqfmDyZNro zvPpX@cWYrF$Fvdu0z@?r?_-m2W1U4O%|W06SNxr4c4w@!b~ezi3U#2HrvrShB3-bJ zOzyfWlU7Y3vG%t9<_4?;Lm{5ij$pw}zlQK9aKzUt&!t0MMDr(3Wg@J~uvv2YQe{|L zRNw4>z-!Ri4X2lZH|%!8!3+J1$@GZE4(6Zc3aWf{gqMQJGkqv6Dd1kZHn zal>NXIdZ4OJ@!8DJnYwKb*RxPvpsABNH76lAjgi&NZw_XKj7h2zy@vW;HVfLXu0vn zdWpwST!xS_k=!-Lhg4Kfxvr{sCxOsRFZvKrTn|TVSG-tATlyTR552aUZw6Pw8-LJWx zTe#76{gS&;F!7=vPtT+3r`vX!!^yZt)GJXl!9CAC_wU*~o2T-%_YhaXb(=*+#Zew4&>Yf}B zWFBdTLyBP=R1}REt%cPn@7aY~`TqCifaVz5ao;8Wch#7A?{n0=zpERai}o=qn78tC z-#i9-`=hZSt5!Y64Dd5&Gv7A`{L54O>jC~NTQaT)xN?ag8Po-P z4NdO*p(c%L==?{nIx|2lIyH1D`QQ&YPt4s@MZo&;F;UJz2xv(=_Ma(H|5x24l7a{F zC57#9PQWV0c(TPF-Jby@C4c4(0D80U*?5Bg{bmnmfhYKCR!kSIV|)^Q(Z z+!Nd_Yr&VQhmDf{b$iP085u%Tt)wRK2Sr56ev)AON!f~uSHO2UT|*xHFQ(;QA~NOf z*I?dLw`2|Epi@4ruU-t^kmihZQfLnBuxvf)lG|TF%|7U<+Yv=o`#-Dz$VT%=z!irU zf?s@~`1kgxATa2DZ-il9);(V+;YK1``26-l5WCQK1(-c&fD9zQ)9rZpSMgfB@7Ieb z!C(#=zy{-zkBY5;ogl2wrUog`|K!sDa<&8a6ck7G0^dRLD-kEd3WXJS8aTEH{ver@ zd!p1tC&B*fe;6}raD6Cf(Bu%nv!j_<4gPIlLHeBJiwfZDg=H-My~h%$L*Tn#uzbtc z+WU5_9}d{c?)RueKY-f< zThbh(Y!Cz1&xsmu5d+>!>b{q9E%*T|^IuQgOyT}3rYm+_G{9F>X_)Q{0nve5Xp7r3boSH5HpFIvFiS+-Tu6{dfUGLoH z`-&2H9(Tg-w(w71DV0Sn^lnAuHBI9nLP_e72b|OfSvec_MMyK5K46BSp`b8il4ti) z(vfFUehx+h|H&-uRoO=tvWM6cH!+qJ*kjv0fQpINZ6^7amlucMUG(=}N{XAROQ@@# zslHzjFvSci@9hoVn{R;HYg_{ULXE_fAuhYDZYGp_&S^C82yM%Ty=UqNYJCF-w@3}X z;%+2V9}yo;!sjplm|-DKJs6?!Uo;S-geZ*SPm}QIBYvW2M?!JGe&coVwh0)ijUoQM z+>wzHRF+-PxBEDN#lsi03AAW?MZXD1mu!$u8&B%7|F!t5sQ3KM?)%Xs)AUzF)-_6C zW?2M)3^k|q97DW*^A|(!f2<|w$%7Q<^4pu=)i99G+7tqqL~qqQ@1sGUf|82XCJXeD z3=nb~y;#rCbAK!mR^fG0!pX|2Xn6{#n$fcQd1(ORV8z`SH+{zJ-So7ACSeU2|L2X6(#=NWOK(E^eG62!U`Y$fU5m3|J2~XTlttVI_&Ec zl7n|PiK-Lz!GMgc`aqY!gs1E<=BD5`Zku_-ctUp46{X)9XQ4&mbmWy3P z|M&X^Paa*DrGQ$6bh{2zfA3&B5l-ZAOu*wzBX;@;bpxM2g1K?^$=1$J1Xnj>dBX?p zS*vQZkET*#Mcg7FappNIuN3`bn(X)ItWD+L-3QT^=+lw@z5h@vEf zQ%4gw>Ux$Bf#Vht^Gk!Rmmt9lZ!H0S6k(_B?$*EeftWaGG8_wnoe~S@-8^PMu*=>x zIIKxu0-PoafWF?zU9^LFhUaNk%h~)Fi>`)?Un!P>e$VQEekyO;D%SGIEPl z8}ZsUMZOPSc78=BlTBY&yNj$kUy;O?^uF^Z-nQ-uw(T5d(@rm96&V1%?5ZOpG4YA_ z_XNc_4fG5Ux~!IX(`o;15873MJO>wvCbz|4gIA{(|F~dFe}C@i1q2a3oMNn;iJQTo z`@LFO&x5!8^S%d5cx~t6wMP*=^9_W)m4J|$*b@8+9IWwRw7bULrtMyhH=uw0&Ui55 z&5LJ&3LeW?Ky;u`+#D#=SI*-$_zGq+GSXv zL81oF6y6&bU%)xlXvKao_c@>2^U{zTUB&AcT2FP{01{tH_#&Q3Q#9l1=X&u%=g~CG zD;`t$dcWzzR6gAD{k20dvE}@B~0jMQ(-b3E7-~hil9U&^)$dNNEmSN<7fI0UQh>Uq7ZS> zvC0d$`C5+Bjhcm5TUXU~Jc#ZyMk4NcQG*bU`GwPuf`~l%MZ|)^-zi>w#15!F0-|G& z(+i++Mgx?qjZ=Y0%5H%8eiQRx^gQ7R1|44nr}%bR{hN~l;2OmMTIk2?pGP1JkSKIg zq@Xs+Gv~4r;WWrKIX2JpNPC+k1u6JG6qCGF^yNzmq|9zqjz=veN1yA5#Mfb;^|Q7+ z&vD+7Le{$HzQAP)YX#O!4Fli48~;%-!El2nLRYiv(K|3UtJk(x7}_F8k8R~66-wUr zUsUH96;PPJf;T_h3)-VRlRn<*2P28Yz}cq5-Tb<-!S$a(yIf(sRU#%V3jcVE0t4g5b<4i`1p8Ma2joHp zeK(MEl|?xN^b)@A)fW`d?w^n&AX3unGaZaFru|Xf8)UHWENwb+vw-ltDZ0Fqf}Y$H zUZS3;M}GK5U|QU7wwWw`M=f!J`$W(wP!oXpNqLvW-)F?2voBGQh@1vNZ8zpGR{4*q z*5?L096T+1v&r?ITSS({ZSZ{LGaMyph*H}UvhX>auKhQhT08}z3u8XO!S$BnLEnn7 zwprzK^8tosW6>`uc!!bQ+Z_=?*3V%I^ale7Da%7vfJjcj6DY{(_#(+B)Wy0as zW#yA7^=8b|r{J!>_2e1od^s)!Pj{FBSQZNlsxklljC-{)4#a>Ljp6m&__$ixUgb{R ztok+!lXhLHR*u2l%^B^OTKk^M{+WvW^KX1NPv*g{-zF+*ET=jSWdUGWIpp$TLCgODdTa?Re}UV-b;FSWbCV_AHva27ql#9KnK2gB_pSkis^s=#|FrT+bUuxbOv z(PfqAaRo~OCO{!alS>rH2le}ppXRL|cEX_}NfO(Om9@fWBbB$^UT(D&t}lnN-H4IfZGn)KiYbjn_O znwbRyJ~nDFm;ONKZvf;UQ6)#bzh;&-jQ3VmqkrIsJ$M1ir3{y4RKAsP4ixdcL1g-{ zk6Rm4Mp0#XG(ToRv6V#x3O+@5PY-Q#RE=!mxLq$rkRo4N`K?X9o@h!*c~fW|h_D3e z5E%Q2jDZQ}EdZyWc;W?q0=#%adF!PGfMp3ZH7~Ua{V@50L4knkcEL2;P~F>aP)K#e zvVh*-n#Ji*psh?8*Ji!v!AiXe2aBQLN+tf>Ki6w<<7xpBl4Gz}>JblFQA)wyt@6rK zN0HAxiM@gW>Wb^b1Bn0t1L`j;bV>0k^}9q`9u43f-On#Ab{yM&Q}f-Wpp&;FR1p-w z-o1cYP=XhmW%&w*m4S%ZfeyJW02-s= zZKIBmDgpIrioXHm|Di4Z0DIq4NnlL=B@zP+4oAkc1aL$M{?8F{NbD;ihTimR+-3Nb zKxg_=o_+oMTLM&P`|-PL8feRhsCzJyh!@3Jw z0QBzcgVCTQd z{{35;VBW9nc}*&m1FS5ZoJt{E4w5L1;4icW2w0nmkrCfslxz2&&T~<X>s3&=y%`9BScn0@jt{4eI1vxm@y_GtfAQk}VJ}SX?M0H@f;kUA&M5awgmx|Hrjf)AQW6a9N2`;Qx9 z!hOHL)5mG=s*S+OQxQCFhyY4Zj0h_zsQbT5F_Q?`%4(n9QS(snxcu01RUQAmhI)^7 zaQ@$qGjSTF63)|9xn~V^J&#->pT(_OL{+T|vdlnHY6}7xuL{kU29+ z#LKIzg-_CXLd_Y1~DV4%mF^jD6njX?ZFR8WGgxZNK>bqkCQYOyG~ z=I*n#1+VuzOOm&o58pfiCCcALgR666>z_wDih>MI>q8;DpN=#!zMs!ElCyrnR0IQS zuUqOeJ7?NKIhqxP|9K^(!;yGBXwAWujBsti0}l5*+&tfD6)EFor(=+}hq z6CM*i?T>&Q!Sr^-Q$g*9KLmb#iGqIZYk(+R_o?O)$Ov{8gnfB~a`1wF?J0PG_?=WT z*J{QImUVzY`VKoaDpnO7C92!C&37okX^bI-lY8g)DJF8zRMMJ_RNH zk>A4bI$v|-pmTG?-nnXpw<98g67_k}VEzNY*u!eDRrR1K%eb_yt*wHjg%S*8$!Cp( zjQGSJo`V92731hyUyl^r{HVGm#pv-xum~OguqApvyyhP zi=a?2D-?{HGJ|ZO)IQ@#mGw_gr714=OuD=GWSQZCqp30pD%E;cyxx8u(zEY@j<-%< zh@Z^Lx0RUX*g~NbI@TCXnV#M`; z{NR56X{&+)C=&tb+nWU2h9x90_sX`I#VZ7wIEVr&P)84XIvd+g8_KtTnQ+h~UR_@t zaip)`2vZW`h>E~@-%U+TeFrZun7&TJ=-1k-kvM8?fCTv+`Q?g)Ey> zx`C7i@6U0(Grc@7FTB8D#)h0YBdH$=gXb~Fdu{wgR3e-!o%w4H7sFtT^RxS260hjb zcvyEFh}RW!*D13Xr08jLUF?b1cRhsmw&r`qoXWSG@aj9BXX0@F5(>UgT*Kh!=NEn< z79>N@0xG11Bg14EVS4s$B;&0(M`4!|{5R>}*XAX}&ZOzHja?(d9D&yY&_{@$`d5;eUow%)j`?FiLKasNv?D-S(6^`OtZfVT zscB9i2dwUr<0lyv>k9N7q=(4A7M?kxnsmS77iui3yrFCJ$nr)yE^X%>H8@(kF5(FrAwAz(J@M8Vbb5D^!aO;E+I z?M0w$vUhSi&V8Vnj$%Y~!96YUks7O#!28qf_?H;@Al&e(Jl%71B7aB<*2oBGH()-6 z4EP5f9Goii*iR})67#)B%{PF#Rmup-;C=y0Z(B5^FCI~J*#X$44-yu^I++?(5_&Uo66wi@3ziRoqjhf-i~&|)u$ zChjGV1q+JpGj6(`_CEhULO8MK_!21N^T+T##E$4Ufd3p@YM64?T?NCY9yg1EIv>7> z!z9Z$FJ6LEZvg}~%Yarpp{z%p?&~CE@cF?$q!L29haw8%tG)pqmX>Q@zMW%LAE^#g z9FS{IeZA*tyudULF6Dlz07#G+!5nDz^h&wk(#m0=n#bW0>iBZGosABtZC+FES3sjE zmoFGCpn9twCR{zyl(Kom;hPre{)YJ1aCUQ_ed-Mue1P`r%4$E{kFNeL;ubV)yR|#zOuKz*!RY2O$Fn8~|06u+pH3bg9?1SSIeS%ARi=Yu(t|p$V+QcX zI(Wjq8M3gF5D^hYr0k+5-p|M#j9jrI#j{O0`EXFCS#9D7JNo64Uf*w@Dy)h74F}w5 zA~3UTCpUJxJ~5s9WkxZ#^AUJ8GGGrCB=uwQiPkWtbcHGjKZ5KF?oY}? zaGp#(f^aG>#7{<=K&txuz0I*^ztQ}@7D_5%qkTSM^31RmSO}t09!j@y2f^0|QrszX zQNgzw3T?6aH*%SA5gsZJgO&UYg|L4x+PKV!r&EmX$9|*qqQND(v3SQPC%RK+uz;%UFJFk}Re~he5+`T3HWRKr=j~IS zK#Ab@-d>c@Rf!2r>88m*ef?VQi1%21wof^#3Ml2|i@*SoDo_=W%`EW}oypj1Cv}B4 z5-VT_TO13HujD9Uhj8>F6Y4cMpitH**T2R-l$B-rt+1*tS^e_Nsqus77aiuihwI%Y zr_GhFiR<^p&a{9FJPeH(n7p)dTRH)g8gj~js{&Bi?T8XR_N zdQ!G?GcB&S00~k~{>HarPPk$YMcb+tr|v=)+J~F5C@C}h{;YnrW31W_$0a@NeTYhqn(()^)@^O1S3yd5#Jd0OiWvAy;@nCjLu zorZl3P>~iR=JctUYiUI=aH9f*%S&Ej6M^1eZ!@pSv(E^{+}Z&gA?dk*{E&P_Zws&h zqFy6W{^I^sBB%>?1EM1(cVbRCBfY1MQk5EvDG}*BD8unl@&mKL;DCmPl^R1F0&$Nk zBh*s`2cup-0@Qe3=EepUyY3jG69#m*X)@u$v|BwcEVT1A`dcahWRkp07#bQ45W0S|eULX-9>dJdy%>l2tPDZVtk&fFE1}eCC zwl_8!(t=M#tz*CjxE_6J)Uk<+ zBGjPl4FF*`5%+`L%2%uoCBf*!mur}J@X(V)OOEh88kKVV*AFoa;xdqEcC~asCk<^u z7{9hOs^(aZ^Q{6U-=OmxSyF!zufUIv6CQ(k`_+_?Fm@!p(AsQgohPC?vGN5hm@4W# zej50&E`l~14XuuK6GEom9I!##s)Qfc3ZE@EG5^3BNB6N`7fPy$`gB)#;FEeFrdk=D z=60D!*O}fp0gU6FW|3-ZXpP)Q-PFKQ+TJs%o)!#7 zxndl8UVBl(J$Z6^n%)GuB2+c73mY=O2h$x@t_4S=l(62-qsrPEaodbvFovq%?qN*e zB&!~PiCS?huJb3N!HRpWna6?vYumocQzlDLHq@IN#>XRclGyc)vmG|{p z1BD{;M8Nh7^|$%Bv!gr6h$+I54gL@;H?{x=?P03gcDniwkx84@Gg8ME)s(HGPFbze z>LEUj77&BrT~Ey##WwW@0Wd}|^9F6Xg?GCz{(XvIbqf2~QF9wGtBdI9x}Ur-iw;FV zJ(q5dqjuG6f!gY7N828IX3n89xjCZbc3Wv!H!JZgdKh(f`&EE2n3z>vFFkqD1X> zWBL4%-`BKFJuU9QbC#cJMxxKC#ykK$#J#mjmx?2g1bBvMPfdpfR6!vVWWYNjG9$;)woa$@9Q9WmStkEl>>1$wa8_kd@=}Taf=g*PvWPo`>Lq(f@k^jRH-%UpHi9$D;h~{rmT1n|Mgz5+*EvfGm$A zt&AlperC*nE{Vfdb^z&?6BB+SO3rdY2^_01tpp$zU-%>amcv_pVyS8 zk7C7o#@DKLtQmMh<3FWY7Pb|Di-f7tSbBsE_0&PB`jYK<5)*;`{4x>TLbJmM0&GhM z7w>?7^}5AkoMB;V!tR-2OGISk^5>{pG!Kd34LHgfF>TvL-?N7DE9AQzd)Hi?Z5Fd3 zd+f+2E2YB?duLb4mdv-oq3vm}J!uuAhne0Oco3Oh7e~b(G~&W3@3?`uIzRBMav+8p zy^OFUc?N8>{rL)^!6DDjW@Jy1z&-*+B z=FM0>Ai1;;0)@ZDd0EuXC@H$Il>6UfDajky?*RN+R7jiiJZG^Pa@-7wpYOK%8G4lP zmNV~u&LsuqV$OGcbkw8t?LA@pb-YRw-=!So{C@j%t%|4=yhxXh@d#saSfVj#)@CqU)8V>)fq2Gb% z0azs&@QY``F7e9C=%MaU(ot*6!&@E}9ogMounw^)_e=UiZkmWE))ZrjF)lqB-j)o` zI1-!Q(INQ13ueZlTL6{ac*oHYjACO+f9lz z>SX@r;A&A3F8L!BJxw)Px1_WCTAu=R)zq8OThv21OEs&dx@Fe@qsz<}=q2Z7H1(8gTmUDZ1YC@$t1bfUHBh zlzkrsI|BdgTzUIVBJvODpp_UiW8U?1s2WZ`oMSNoo!#c{_BKDPqd}dqcfNN6Ktfzm z139sZZ8U;!{K38L-}X|{($dyJT-|A`2P#pkTvYQNG-%4)!n52XJq28MR5Sp)qJ*G+(q;hG}8$~A<>!0i!A^SZ|9W8 z$-4|;@7p2Z=86*BS#(#KxOBbt4%TUsEr_nV)gR**(eRSok>NfZY=4Ubz2S?K_A~)C z^Yq7$g|r$S)*do!A$!j(IP3OaZH+R$Q8KEJgO#m13S!`{CYTs6yq0#=1pY^WTdd-z zM%uU*?(>JWBa}Ug`_09fHe(5`UOBO;-CEul{cNzKq2Y+biMb=6CR1Gk(c44{KBQLWF%RwH+-k?ae z>1V>%ZmpZ@;;WOIs0ihn`J8MPqvwof?tyJQ<3Hxi4tXXnN}z+BLY{A=U1dRAkTP6* zYCwjq=PDPCUrtY$cukc6=}n035k9T0mXwsV9i8+Ig)||s3-!Jd<@e+MnURtg_sP8A z6+H_LC0(lU?C7Xt3X8i_V-9Pn_{DVp!&K+s4P56pw@J)LBS9Ug&P>o(=*R&G$9!zv ztp`s+lM!URz1hz&=-1K#T6-~jkd;Ojffket%A92tYhooH@hsad=DZ%Me_Nn`+n ztmF(iyl_mnn6{`s1-XN*W4#ZuVz&~YBSm6}rr7u&^ejib=8rWSllZNsJR1O%MkQ6+ zHp;&l0=%)r2mvRV7@$1#^No^UsH_&T!p8*qpt0S4h@kZRfy9Qvw+k%NgnjB>At%RU z4TiWJFa*y6Z&*TQSTJNs4#51!x^-3r%DCf#fJZZGS28s-6a_-dY3>?g_Wlt$8zY~ua24D9^(&-lNWTw;a(H@4cNo;<1>9Y z6yKirrXbDpHRchl0kq*e7Z-e^@olsR8o4l$8tF7RQH2=nc*&pm+B@*Y;vzpk$rlI* zVq@dyHhECQ!G}Ynrkyg)eTLDo??7N1`7tIYWk=qUk+wcJ(~UAs%yUr`d-so@gf==~ zRkAT>Hi%3#S7-k!y1{Jn^bal%fcFcIbkaS$&D0t4ihMgdWx9`y{vx_@*{_>t+Tq(> zz5lKxEnOGhc z%F;_0X&zPHtp+Lj3PLh6;U3lF!dU$AWSJ&Pdek@E%~li{+JozAey&xov88rCVEZU8 z0?ZQ)Tc;qhyts@R5G?v#`<1ycB0dmv{>+)4w&QXvwA}`u>gEUTR1n|}LQE_Kj1&sP zY-B%Aa(7Vg&d5@>sg3bty9dAiQdC`i#5wnxgi~HSDdYQ^A`DI1ODqU!_tA`2+F~=v zT@cDtj+EU`u3IWn&uHstEh>;fmrlbzeKU4Fz(F@8)ATZQp+YNTTy!q~XBwK;#kL3m z8RRJ^#Yx_qZAvTHqfS&MUEuKu2OPl3(}GH~X1ZQTQJE+2P-1lN<@Bi~=v}m)LQkv~ znsUc+hC%d(BU{NbTJ-V@(zEtG$;R?WetJ72XO^QE)SGS=oKYsQ-%AgPeHN%B-!L8W8 zdmeej$jm#3FYTP@-;tY~LNdQmq`LJ}lGGJ(o<%+C*Q9Gaxy~6n*hujY zt;ccdcq?DV-cs)?2P~jJ4A6tr@*(et)a~@29sCMus-#J(@Pe8d+f`A@`$;5! zrQxhq9Nv~lJoP{3cac2HoXF8U?ks{V#{(84#;Z;>oH zFE#@rO8#lhu}Mk%i!3vm^d1gUOoqzTzFoPc4V|C`-WvoziZ!)M(W&}R`Z?!hn>Iev zxPuHg*31(#51%M8Gz3r3m!jXIU zO>Zk8hwlciuqgUL@MRMtbA|ryE8~i1?_TV18jY5jq=i*_aUs0TG*IwXV8kcdYR}x! z*e@<0A9(e@#8l{p(SVpdn;*2`LgnU4LeDeG%)(=rmku$Dj^dob^Z1rq1gQxL3|%e* z;z_ulN*01b8;hko*&<|N#eGyQ=vOS5mrV0Rbx5AO%<64&@wR^y;z@}n<%6U`Xde&n<^JASW?lafW^y?BbuCEWEbujAZ-)ojje-4mv z%aYcM22y{e>YGU{-vgnbCgsSU!G8p)hSA}rG%G70%M5P^bSUz!RkIXD(DIV&O;mdV zX~h?_#`jAb6{JJLxCLsqN$J7Wx|$<#wuw7-b`UWpHO0*x$~)5WZj11 z2k~&W%^x*~fewdvgxqI^k1Ri3ET;q-KH_{)Oe@$#9?JAy>22fFxYxQ*1zVkCq5+*PDL{`^Uy&>M;;Pg;ofeZU^gbq3&Jd@(d@-hb029w z1Y0zAb_(>??ypFKE^Z2-hXdUQ_Yb@FBs`wMgnsEN4b0gRJ>n%$rT0r*%$hE1q&@aR zU|zTXbA?RPCsxCa`TLAh5-uA@tmoXE&c1i@fB=@m#%?5KPWX-t(kOoKSrDt;iX?Ms z+nUF~Xtc}C97Swg@vXTJAIWbURcVF=hBpB&au!TN9(MbdEaLeDKlt>8R!DsSZki{q%zWjMyA3xU$|vvtW1g(kyNP5+}f;||H>aiyM{;TRY)9&xRVJd#?G z67zK)28>Nx?2~{v+m|hj!Ws?YoJ!P|wTIW^8%7e?zZpe?9YK%6XA#O>VuK2L)fhjl zFFT9Hy^{MiQ*IhHwem(c?aSmxVEz!YzV#zUzseuP&hTf=tRA&hS?X$;h6~;rj^xwQ z8V*EP=Bup++S{^Z)o(BJRMbNI6j#jf0V?SI>=hy$_uBNGHi1PdEWJ#X;p$4lA*JQv z9??S6fb$$|NucBu)p&c~GIG4?6J!~4(z(rGccfTJJ2j#c9pYv!rZ&4KG0>=X<@%}G zf#dxYxvSOhJh{G)xh`Th)Et!{r^stAAh`q~axi-}unv_9O2{9?*HN4c9S{X$BYlnG& z%Z4Q_D5LFJ44sn)grBQU#$Iw+ z-B5pHL|dd2io9$=6$)Cy*lgs+5>0IaeQPZ{x2UL-+(oB}9%^swB~xNPKY0vhG%Jd5 zdst0WEWAkM$*;nkJXventxaUX&6o30OYMx8whE7vcE(TvU z7O!nK{e_w~ulh9#l+UeLA?4;dYT0scO`#wQik_zxw*VpTMgC5Kv;3n=o@X#!Un>Z1 zL@|#|tXDUF5ZRI@hcb0m^x&oC>3|K@%keWydAKIufm5BViITkzu(Kem}ni{(rvl! zl}X)H9t${Sre8CK(0}^AHlY++ z{GQ5r^m4o6ZUeOUEpEJUhCL;cs8?E^(Qz5idy-xtRWXv&dV>ZfS!rSpHF;^E6NYb& zl!A{pJX~}YikgzzeEC*I&(=gM8FZ*LA}Sr^j$zVJT%F*)QI7qr*EalEhJG(vIos|% z)y1g`U)pVSxpB=B)G5*UX8Okq6<(zNdjHV<_{DKEW~CKdt_&<_GoKRALkZwiVVlWw zo)u+!Ldpr>O!V6iK6);HnfC=mSt5TtYPnoNJ(8G+EwYE zceUUQo!1+YP#~tfKq5xU!DLc-DxhD{d8l+^>V>-2+^|_=y=qWJo?9`8R0n+?$i!rQ z=AxmI00!O*S`ez!YS$Sy1AeWYG3E>?rz0if)ku{ANC37xx81(R~zZr1`qE(ty1!Y z_UQuRQK^7(e{E=>9XP?$v`zd-7AMdm0+VP6B@DekQ3c9&GwlKJYIx~ z>Sf(RzH(6~XeDOA*|j#N0K?f@!WZBBqtj|*={F0HWeh^URtk(LIa-nTRKA0E?ZRD< z=$6$9fRq7zyO+d0&*fZosW6Dp#wg@tY{Y+9{7qnNRypw4|IpoL{W&Kp)W+6&K zZ9G;ug4jGcFD}|)H{OZwrV6AeAoE>-km?*HLRO5#jU*2AhTku&sC=4T6MG10gVYU9 zPn`b5VSiKNST@*%%1^{8lSAhblR9lZB(rsO*;vLbS1>sLLFk`Z#J+G;Im)Lra*wr1 zW{msPYrCl?(-p|dMBa13!w1HIAjn4HLzA73qA6I;InCl(FTd4C0h<8ySD}(vj%m;e zkR~MYF`D+Dd2|pbHo%TN4S&3z)ovgu*+Xw1DjP&$vGNLg9p2QdhmJv)(HJimUomt; z@c2Uy9A59};f27K0;k8Xp|mfW-~qvYnZlt5P-hASc0K3U^11C?%yz!>4O)Z#X~&o7 zN)1zPl>y_+!Hyvqgkf(4l%zvYf&_D86|Y-*oacn;uDO*?kmomehYZr!J(Gjy31}<0 zFJBmUg8YR$G>TI*eI4yK5Fiw1hN`J1@bII{M87B#4|@%Y1m3nzocU)L zb00;8(u8hxW-2WoX^fqH@S2Pb#X^TD9gV_>MT0?YNsD5w7Y)!i1g3GrY=o}Ay`Sa@ zSh={Is}adYNKxfV-Z=IWl&Kfagd zi!ERpkUpSB8LXb0fvk*&5$IG$Es-l8tc6}E-9>X$FCPWZ?yD%K^nEO=vxJdFX?2Dv zi3r6>x4@2?v7my_{CNTGs8=d!C;QDS{lWKkek=UDKaN4pwCj-n86aA*3VR*@WbXMu z6MaMg8=-}Apz9L;h$3=e{m54wWku9Ei1_L4h@%W&uB<{sR4c>vp{M;0B;Z|9wyo(>taMh2-S z8{6AohV`nsuMMb-0HiOJ;R%;qpvr!EqBD1UZZ(-bMC)c_DfBD&U%3F6nXbu)&(OnI zNvpn2zV^=IqU>lTdAeY@_?gTi4Wg6=HD=%cvHpb1D<@L+`?=1NS8ME{PVHk)H2Ni{ zq!{B}x#8B$OGdu*nZ&!Ya7`AmG6V0MK!VfoTj-7-XIR7!mO-`dv>Jf6i~-tu`Lj03 z*mg8FS?O~dH`5-<*` z`}bCJ7twhCo@ZhM)g-s%jzpU@1(2zyanftJ6k2uO7zRC>$_ zvpUkK3b*f*oYBKuo-#S$j69X%aCrtTiZ-i!JkFC9$9mW~6&f%mPjp{cni{dU|>up9$=Zi)Q(}bT}D# z+ES>}By4w!*=$%FV5;uuqka9(tdjsH^wQ8K0>11V zNN>mkQ7w>Wcc1#TX-Or0VaXOqAI*p#lx|2thZ7Ldfp>$SZlvIneijWj&x}|v8d--& z$;Vee&k( z7vQ>n;?HRJdXN`dM=RD*-1k&t=M@XL8@)Us(kzEqB9FtTmbww*i4WJO5zbRGq_TO+ zk{Fnn*>(;mped>+P;3RtMFOCaz+vhqz34!qZ#;sN((WW_`6$M9Rz!A z0T4VeK}O3Oz4NLK*Z!@glr`s&2~6*Wlgi<*G3mU+*`=i=in$Hs3J^24L1#lhANlmi z86-Rlcj`Z1x-M>w;8d{t@Zz#LOjf~s_U3s^AE!8@(V#)NWK+3&Ta;fvMwH{>{8nl+ zgZ$;wZ<2~ScMQLO2YU9{r?N=V3p4w_-gTWf07SWhP)m&`LQy5AgD&1l&sI7vKFpIg z60gRrn9mfKNQ;y2-oi^9()1hviY;j-DOU2_V@ea z7+DTsULS?Uj_K*24mIP@ul1k>z;Aum`H(pN*YO89a?3m}`Fq_E4#_#e5w!2v$MZr)zaD}X2hn<5h- zT3pi%S~BfJhc{Hzv%>rG=aG7JuNil*6Cuk``lqp7`z8w%QU*EeV`^#f!5eJE=)i+j zm2P|r^;AMRPBZCse*h` zAPBqS`Nhu1=N9-*UvdjqOim=rr^lj|TRNYP(juYYSu7<1p2L7O$d?U+EW^80yo|EJ z-L@I4U;2ux6<(usiKk->7;5y=iAhDIB1xriEflt>;CG0p2H%)Zh&#lv6D{XhiJP+> z{!e>v8CK=i{)+;FgdiYDhlEnn-8JbBrAv?wX(x@;6bV6)l8|ncltx-=(lJQ^=}zf0 zSj)BEz2Cjh`F^hJ?-#k|gc;*`#y#%%1)exbNXl7#Y4@|{D}Z9;r$Mz2cb;PlW?XEg ze7}1}pYuL|YXP5;c}zItJ9$oAG#IR8g@uMvO|V(2n3*%~tAgU3gM;_jx*%R%{EnLY zK={Ob#8-kLupl$>EINK#{4-Mra-%J|Ql+NY8tVx!ie*I0xavxK7-^-DS6L~$ByDpY zMsKJM83_wzd0F!sA4X3urqEx-lIc7Pq<#Xn&0CH)JRv%S^VXaBKYx!=e4U?R&9UcA zPjTheTHxh9&8~$1a(R~>C$4^>QJha=LSt@MJpOJ^mPycI+>6f1LZ&zO1R;A#=;=`C z%=5TedafkZRlQ9JY!i)=`@Z!{ORSS7Gy-s_ghIqN!)V-iAAVJ z6Mt94l`s2CUtOtYcK|>qeDkW(bRPDCpTx%Z4rF_aHaK8uv@7!5^kNMyu|J9&BsRr) zUohzfE6BNygdo)|@(UxfvmahvBhAkND7fmx$S#??+bh2LVA%b^*E8a~CjnhQ-InTh z*poTMcwBcBXbqN%Mbr60IWZc1<;BwFgyu4=G*1s@vFHElc7kSrR47k~TD9 zvMXFB65v@cpq)5Z}tfWM!|O*Y}4oMhZz z>=RDuU(sF@jN>O5w_%R2bGsd+R;ZC*eP`@LmGqbM<{NtCq+m)w;QS`3 zfO~0&Tr#GQ@4yzoN2YHP!5~O}7{4~0aCav9$X5vyBF~t&oY0!2i2XF>PO8rwFNPQ! zJ64Fd?Dh0(wW4lKeFEcKnL`O9=yLY6Fog*tYJ`M^%kD2alOr{X z?HKyIpp#@?JHAs9C)HX*KeJi)iK{LE164;YW1H}ALG1we*3ga@&h?5p<+fMH6F1Xs zxZ>EjuV+69@T7Z^m~NDROmgFfq>*xP0j`EKbS^z9p8XM6jt#}Ls>W2BG{`>M4Wn~qN2Jc0IiSM0D59zP|kZly30X0 z{-Rc_ny7cscB14xjq{$oi`ZMGJP&)&$@Iv^ihlbK0S-e_;$GOC9>zXRN+lBZlmGCA zAaofyjne=qwnZIxPq>cQ@lV@eP!Tm#1d-L0-!0$fm4CE6fX2s=*K^=;t+*&KqDN*{RO!6+z_jWA=4bX zQgof&#cxc2Q4vZ}B*9l>Xv3-h!(Ow-N70YzHUMx5HLSwO(M&aG;9T(6SH{O!TTgg{ z)jf@rpJSr`2Jr~wa`Sw<&g8c=q+43QHRZ<{f`3+LkO##NU+Y=RF&hnP1a^@qycdJ! zgf_D#YcLIO(eZDr7@Yr#)9=qFyye`X;FFM$=;rA@9Z1j=0@(4hZ|?LY&;R~xf#Wn8 zIVMsnJ1a_BzojRArpbdL zBF!FO@NPkNo{E?5vZfxiw?u9Q&otgY{q75zfIBBE5T1GGPtdegcY!FakDAwC4cTyk zmz9V##P|XyMXvq-OXrb}jmUF4>=k!~gX^4nWRBtw8Xin`+9oNhCwft(cFB)3IG60nmq(>t)*$b(qJc^ zMxOK6hcYAbbM=S)Y}f8F$iBE0I{DQA79z-FLwMoA*CDwabFggrzkT0@&HE~ z=nNF4c6OO3`Q9=NPli5O_5FR3@!quDYA*mz&le!wMB}$!w?hq+2cMAr9?d|k=G=@C|OXZiSoQEdQ39m+KubP$lt9Jku#%}};VOu*p zVs1ZTAG4QjJMW)b@uL864h9YCZx?w*=qmsnrLB1h_&BpMFh2!|fjrYG6CoCEb+PM? zH6QJ*PzN%^4QO8up-W&mdxE1$0~hFe6lP~|z@GpW6)RN4oxoHNgw0i2TAJM}F=8nZ znjD`pa9bkG-EK%_0CCRwS|=I*7{1NZG$lkt5(@a<(eaudz+%M!poh{@SarcdRI4Yi z{`j*HArdP1?1cn>FA%v2)tFeFbC^v%#w+nob=JJ zmL?OVb{9v$og@7Axq98F;kSFhae5a}VMeQfu7q=i=wUJIo9$UuBQ9d|IF10|j#u^y z72-W&pBt?T_40oQiz1LROjFH++jk0A#!vv`wY7`8wECIY6gO$>-v$=W-Wsw^01%Fn zon2ItvZWJEd+Kk{fBN58aiC%N``NTJu&QGWsrH&H-sC!5F!;S(fmmtwt%81-#l8^Iu`hon+F(^sbrC=Wp&qM|kD;5EfxcCvbTI}Du z>k$@m@DS+mFTpTul#i^U@D_t0N8xyj7oeceya8Qb@waQ9;D@C; z7l*Z_o5p>z{070(d9&dDo{Lk=d9V6PoTmLNAY!c}NM`?{Z5L?!$wPMIH2t&%-?uB8 z=M4npJlmJ&_Iwn`g+GN!BC-QCI*SZ1quxt6z z_eQ=TV36!x7I#2g67j{(l0xh1KHwLVIbT!#9nD%QB_&SPA7!QkhL8EJOQw(oiWh1} zWL8!dgUT;6H$(tpqchCU1$MK!b!3kEZ`AW#OzCZ(w{kFysO8!ooCVVH=g_s zXkqWm?f2?J4dVB)tLVg-g1-r+s-`>UikqdSKF~anBMHOa# z&>;X%sfdBPn#42=*k-E$Igq)0wInmrIEfvf5fFDrP zq60dpe%zOJ7`O{=0s@Ex-jM(IDSHQ*8x>w$WsLF{Zy6B!c_e!kvHgI zrUHc3P==fA207zzSRCcIhB93s;Bbx4Yx1ti{HJwRWpr;tI65CwLhm#k>m6%Bkb2rf z^ce_SMN(jFw$+KXk)ES&3wj|nf7oB&z4rca#0*Lwr&|02x0#o`+E)WfkBm}>^|le{ zYXO&`gqRroQU9;1?x-)PfofWH^Hx7qeHviCQw0^p-I09&KB79?Vw?92=H zqak3!Xk8Rv-``DpMM>+$8!A#F6?ppAdbYHb%?U*H?o~&Xdf7>}kO=!D-@UPov7-5{ z-s5jvWG|&FuX0mh#SAk7?t9DNgx=q zlRV&Oi{ewf_~rsP#N}K4M1Q#v&CVQap1k+8N+M1BWr_dz=r1X3{U=jJ4&o!Fnau@`B1G+_XDUEPreTkHiLb2Z2;!x!9S7tS5h zEc~AjX3!bj>?-6o?z?F!ieG6eot#?^n6M(~3?#FDEK-Np-_RVp%E_VI>e8s}+(K-> z=MvrUc)tY<{s>bM!#{apfuw|5Ghq%YpC<3@iUzGM;bIUy(^1G?)A+ zJxF>1F6yIZni6D}10k{u4&PfcRTl&)gpymchaGRo`!g#4oVeVtfzpdZ0I!-?2W6)M zgaLmj6cKF>aq|EQ^J6Q4#yZwul=_F>^#PW#_PTR#nfP!OJ`Z+Ua@>LRpexzZdDSYE zdM}ca^CGkrK_=JF!ik5l)RYGKPV-}cyEasWW(HC>1=i760m_k|NtZhJ>m;6ot}%|P zgcuVcd$zGrJcogbv9Bz<8Rme6m0w18i7nRfrM~`x+>+DL)e&SLqks<8NZD2U9_BF= zAo+E~3BA{i_k<>=>^<1ImMV3t?UDN4cK4X+=8DJ^>`_yTaS zSv6@9N?i(eT2U0*uY+#fk4jo=+Mx<)+i^Q6h$n2b$6d!IWPiShAW}>Sb^zlmyb{YyYv|%E=yg4 zUwZd0k6xh2HQ4jSH3DuFf-{A@e$o%08ggXg21Q@2c>Fhq>dsMs&lyHZI3=>4)FG zC;lGD;XH)~OJ<6)#&d4G>x)ycb!mK~zEwY^XP<>N*tzCMbEmKorqL~ zV3*?+uu}cDo9I)NH{3Oja;czr z#=`W=%#!dshz@nmIhv9^pR(dzj%%b~Z{l2ZXuay|7Ut%G5<_+ge|cTpl4j5m@$1lF zyyjz(GGZo_>^OtFuk%_jsKUlJIV>rRuPRa0TMD2OHfNs!uR0GG=DgOVhrtPJ7`W~* zFan*y5_4dh81o)i`_FEGy7iSdT+Gdm0>sSkFo3$sNz$DQzPMSTSo{Nh1mZCm~u zj1O`-alIjU8IRevI5;HU21zB!jOyabHrsCdc*jsCe;u#DtlbV#&1epEYpE}BH;x!Gqwmpp=(toNAc}8~G3NqT_0}5V-W+(*3P~w~ zrm4w%NRO$&I#)UVx6tC2OKOdy*1A*YK>WSlc@M>t~E)=k*=#0Y&ttm`1|0~;BO|1XT`C4 zjE^|Jw#UCriAS(LtqiUYfa&Vl??A2i=M=JUoq8a9Hf?KBSd}$H0;@*-TalOCje1pC|p{~I= zSDn;Tu`9|Gz@#WlyZ&MXt=5CS!6bJ@@%J@C-uH&|DKeQ67N+^qWT{gFx4=g(U(PFS z%c_48RN7P=zfGotxj9(hYMx!RPDx?}VpK>cuo~Q@vpnvz{={ogEzVcB`&(BnH)3zK z26O_-^1V^Q+ioIZQFNK}g`8XKz4XNuAZC^<3GidlRCnn0+Y?k0lgi4^Nc*wpTxKl^ z9A?M0P_8QP*%_hw$h%46sqwp0V=t}>cw4Z5v+In-mbKF;2!J`?+kI#i7m($1H96rV z1HR1G_V(DanW8|Hs6+5l_@82&qYZzsVd$#O%KE-v39Gtf%tkMORK^2HrQM|x5&q|l zJt_!lRx9%PWBc2N0N@oHyj?Srg6+D2df6E`F{|q?et&!_z=#WDRAwTC;JhYJe=E%& zR|+H^R!t1G%^71oh@?capjv{ULe%|5df5P)8aOyOG^Ljn(v1T&JSL?#?vkkfg<`R?T6O;hW6l|~0Rs;)(FdS>_BWt`Fo-1gDKWFX zF!N>jj{ms=q-wBn0Z9yJC=mQ26JPvt2I}P22>y@%U;%`{sio9&k02rGZz@jw2so4Y zY3qVu)%V{P%YX7yV6s>!i0u9#^f+5Qo$r_4Jl-7{L2Lo_k0$wLk0Yqpxo*ci#HW~O z)m62ULnjX!S~7Ge#wj>LUo3mL2VR*0s`H#lS#sv0>aR1uzvx3ZMo@a=j7-|=V&Z6S zHl;mH!wrFfJfMD%rfz(G?p4a%=D>Dg=9ABY+$ZuI;lx2A_7ggX3A%0JUfG6i=W>u1 z;%D>zL{hIg!fQ+G2^}J!FN*s^VO<|(ICKF+KlPn8M>jjuFDB4_F5XiCM)>i zdtqY5(>g}B$ZOr8HYr#$7-H`)EG)PJF#=J$@nUDqg3+J&cQFRn32EA&g)X`bzqE+! z(+`DhSfDgwLMog{+Z(sKF+^itQ2gscvS=Tq|Kag6RguVD)ssPmYdeR^%S7 z^Juxkjvn!^+R}wZ@}7_prlhT=e%_axC8NvKGMorOne|W3HKRl1^N4W>IEGcKgThE> zqnx@2_%MFUN$cVKk(N{9MDoBGPfBERY|I_!Wa^f&*K{E3w_3lI(z|scVl%IADXyJfeA>?H~U97 zL=T2ou@2L7Gz;LsZCUJBjgI$0!n0BIh$!?m4drV;DafhRc$W$>K&z_LFA0mY620q6 z)Nt7DsX&}DSBqe(V_%bdXZoexp#~(vVo?DkQ(R~b74l4YqmZKUd2`M5IR!Pfi3!I3 zi0oaA$J9GdGE?2d;(yFhA6Ka3HEGe%MO%7s*KvROVfvl)L`GG6xmLvXWxqa2@77Slp{`zppvn6Qx0E1l`eBz^zq z*dw8l0%%&~4?@EJ^#8ti;13?!bt*R>g~uIaOMOOidRJG6RcpAT`O87yb3q#&k5THB ztHIvx5rD-dTh*65Q17*g&?X^Zo0Y@>zVBIPYZ9YDJ2p8r$E#+GFS2pH)G?ebz+k}f z3=yQH1ga$79`dtmZRX=4pmqH^48W7mRl~C)hnt2T9dkf`J#J>qw}cHCsH>(V;O1n% zLBYRVSapbelfQGS{NxT?=!oZ2;oIp)MlnE)D8*dexM8on=rDu7!FCrAJq3Qn$WaC2 zXP-POQDcsm3ePQx1-f%6rMVA`b?^eHgT^cP&=~<+tmXFV;PlmZSCkeP^3t)b{|Sz8gx09zqBCyczqtC!Ji)*@>OS4Mw!&*=x;*O zdhg#lM>lPreT|*z^;}{ZyO;&2#|UnYnReFu4s>D1ym#pwfp!7sBb?+Wt8vn^*ugKz zzP6#}({a8ECr_o3F{JGhKcR?zB`yxaz?^W`;LkGKCb%;%QHw+oyO_U05yHHkHU8!! z6^_-Xch5mHCdP4Ze|};^xrOP)oA3M|eo)W^w~#*NYhEM=B|D5ZFzAPv*^rw0U!2)7fx5FT<~)q+}+`FmGje%zGOb!G-w~f$r>Km8O(R( zzVMG|b!WB+ZZbjJUb2Kp$dfmBJDJ8QuqA8)Y}qTGWOZ~kVd^nKKT@mTLUKLJ$)EA( zQtYo4>Tb*;uIB(D{`PK?te(Qj9Ji{!0i44BMMBQB2Y)c0QA5!*t0XNqi_dY^JOpNo z{`@L~A^6)%FcMnM@YzdlEuU8VOn?@iYnrm)PIOe7>o%*M6M|W&r6DY^S%7vV?U_hR z(DRa&cFBxZYG7QS(Qgvmt&V6>8j9Zc8t@xkh!MOkWeAl-PORp$b*7^iD;o3T{x$ni zwmNB58kZNYV=h0(ncm}+<*@)MWjIE-#SnW;T`OLKe!SQ^omr2aOkSa;41B-D+CZf_ z*geCgQQUGEbY9NVn$<6NKfqV(`Fhnw4mK@6)C3-+vewnwu?vVB9AES<<^M zyGh|oB3mnTC-`%FM1Ps$ikz%VB^?}5tl&U7_JhE;Ogfy5rakb?XAWmWiyvuyfJ5Qb zHf8_90paFby7`xM1@7H3K%{Jvw|eHfmK1))iDkfgZmVe#{M7_4H;vcYOAd%gd~Xo9 z={cud%B>$gp%wi_LAtssMAsanX)ooazCh+d9nmVXFf-o$9b?@`Lzs0iP&zgK^3Y_~ zI32{qS~1(-;P3L5&}F=GP4<I?_{H_@MZEP@v7zBSEW*DT4Q^ z^esrHRUVORfxU(kR}`?c8dS=1ZUw*U{DKLO% z7%|7UA|xY&>f|sq_CD@A z;gJsdypM!Vp~8wxM3w=AbV=`k4700bLtW~jpVyDmR*ghN zL@p;XPGfhj5a(OBtL7`jRt(={$SiN{fey>5d}G-+p7QS*de=4`*I~8m zs_F`~pUueoz-^Bmb`8{$L#Yzf^sok=tmH3A|Y z^+T?Qazw|crx$jZ&{c;tvh=Q)SsYF4GhRZ#-d}MSLgN~?EUkR?vz0$i@$qZEwCsmy zX?vwfSh63o2yAn$MUb=ZXUg4mOM_ML@h<6ax$*JM+YlZv!RhQHALp1627-Z-8RUpE zl8vKfR-G+@9dxvzs@~#5b52>8Ro}U+#e|y7?q(A$Oddgz%*TIK_9rnuEkyTy{8Oi) zthe>ck%y!3Ph_c;cl=;8L|s9wxP&PJZYI727FM_F~Iz%qu+ z)0Bd-Tw8y8`psM^Ssu*;JD0iWQQMv$FF=LlbS#2fKqa0Xu7a*Y9;I6)WJ|Q3P`Iil zDmAmkqYzgSX;|}}ZL2gUxHTq56ir{`hqf{o6zy%tEZ383?|toAQt4Ce44wN)g)TCvjM6P(SQ=! zO+K`+4;u7zB--RTvK+z~ToTr3;`2a`)Y*s_t-c6u(c8_a2b-^$da5ZkTZrW(9^L># z1ddSDAp~R(ETHC@k|C7}8fND$A^B>Q5_)QJdmFh3{2)`3k|saTz#)7RuZVWmh)bKP zdOXJ+wM4MR`DVuRdAh=;cr)!% zS4JC|^T!V2>F+b;KV;=)b~|Jt9+_RVS{&F{96+|kV_Y>GO7q%azW?!E7rBQaOCs5TtFCh^bLnXuTKpWL`f_oIplUZX3j# z0{6FZUz@o!8=oweJ>Q98mdauxn=*YL?63d$LltAw-&l(tRnvFtZgyQjuUD3niv7=s zE1Pz~ySGERd9=HTXK>`(Gw6at%kAXO3glPvG^ki&O))Uzz4(s`hcO6>x~ke-hj-S~ z#+n}%!O+7g*jbxK^2&%J0)RQ#>1Yk->ki&vx+6A-`%(q+9;jl-AL;<3t(tBNy=6nUBTWuh^boOG%+?p)(4rTM}} z{7sy`hN6DZ1PYyuJ)5<2SHwxAg+|ueqZFs9z3Tbsj~~&{pr=4<&$qCqhPYrA?@Ci= z(39E1V)U{yj$#^sf;Dc5RN%-TKdVr%Ve^N-^hVN?L^MFBO*GZhwkstYdqYSW>#XqJmE8)7b?|UQqL79wh1|c;g>)~0EJez%SyTWV3t|r zvf-=_nKlYV)SBXB*pB}F-vW1GiM|sL>8d;WWNqg2*&Ekv)o(9;^S6}qly$Qbma9#y z>8XLoJ;H@X(D8g;b*n_q)l%ZNv3D%wiZ$Lq?amYwknIw)S*yPpGV5M6=(FwS^we+5 z7;HIY-q+6=ci>-I3IplZ|j|uIq^}krxv!C+G3>C&C zw8J=mvgY%=iO+wppTc8}sjkGN!LDx*frej%Li7eRCT=hD1#3$6g-FGeR}S7e?NH@O z$6S5y_UyJ8+_i7_M-qe8su;Ix8Z>QoD)nME+y7{1tM3zB&~>2iEH&XMe{wE8mybf# zsWN5j9hX~%pl_;(*}=kY$um~Q^{UdSFhDkSwpX1oADzs#vhf4=86zo2PJ zqY9*yf+M*>{9dUtbZj%EZ+Y_FOAqX0h4S^2pN=&bN-Qiab@tPw;suYw9N+kbQSn4o z*X2h9Up5u4jx^VVgoLD&R882-)>T!x7Y|wc$TG~-n(8^3WG!3qPj@|Sp3SF|n!9*s zX|{|yimRfg2AY_c<(w;x{g#JxcTS3w-bjR928uv;;h%S@X}HxYwxki=4M++ubJ}>> zHzk~kXIRj=yOi8(q`(w`!K!B^#+#VgXP(KxuXFJFn503%Ttrm#sxv3&ajK-}_$6L| zfL(cVFzv0!9U*46af^#^;FWnr?)%k9o)fXmiFLduUVB@nh`y?&WAm3TE(acV+vLSn{Cxuh*JhejS~k5K z)?-!~6Qqx6=WE6{xUY}fCpWPNZGJ;j;G4tJb%dJ!uFDOim_N?C#tPCW3LXysd{{2K z_s!DQB5pp=J*IiQ2DZ%hGt0fmgg7M5;l}t9DY)tc!5A(!y6xdEJfOUMa4utPBgFJ z^hq_7V*0gMHWk$g>7iU_RBRZ{srXvrsMoBMW0n5R+OU3IKNhq}i%u`-bP;2pa*UJx zHQ5Hm!OrqrV`=sH96jy4a`Y28mUam6yCse#rpeXIa+a$aQ0!$qe(SAs=8HcxRVh?q zWq>qerv$GWx3#KcJ9YtDww+GY;(nJG=NHbEV{OY?<6obNrWaH{#+0BK$?-3)qOKgb z{j&1mj!@@?QuMalMdC{$%``b67rZ^j=xz8=w8F77lFjw^2)sX4KsduFc_JW$%houCI0w2n0g|uSV9{ z*;&>&LY%vkVk}?;T%9q6uu$*u^9uW;o3XRyA0POitm^9OCO(Wg)wP>vpry3icIpJ5 zH2LaL>&(ndnXT2^`aE&RnrUiXBO}rH$<40*(b3VONKSF{h+2hHiJ|!%p|SH#!@R?% z>!a+#i+qA6#tae~=#t${%u9&{8o6wWk<~Y+e zyf5Egm9xFuehOKRUk`}WA>MsWnRM#oeerC~Yy$j>xcd`JuuEGVYl`gjZi=tDDCze$ z*6x+(p0AFH7Yx`tP*=0+{T$c6A;3QqG+L3p^SzC&Is4Q|8#m0u&`Q)itI`z>n$-(! zuyAnL9=RqPU}MZqt*kSgslGp{fhf*gHQ42iPq!Kk(HEr>bXmSs%{wgY@9!6OZ~mx0 zuR*Crj&&+rRv~0}cZ$LL@ykZxb&Pq&@Hwjz-vrK;*EQ2)8H@h8X*bKM%de6SHV~ia z-;bIM591K636;n#`$aHVdu1FfU`ECU;)-WvR^;nw ziD3g-ctILHaK@L@-v0h2u(b!KCP1l%l)Fm0x7|-P3aQ<%UvP)~)>6^57^R>e3%&GR znjr^o&*J3Iwy-iKr`X&sOV;LPAw$cOs&vJ1m`Caa?waLjXQC1WA}1`$ZpZyo^6jbY zaHBe;GU&$9ZoASWaic5JxK01Uz?tGEXnub~7P7h4XED-;9?5yCXNUW?JG!n})ckGM z`-GirY5J*)mik@vk}A7SlExL5;wrB)Cw)CV!JlF~AMXF^BR+Q)@S+Yl=e&YNy&118 zD=9G|uVYHAsf=~BUQL&~L(1+-J}c@Nan@*AaW-{i|4~C+`BRWMmz?lEHDOFO=Smwm zrChzM`kwsyZlJ#|b?OvtU{__XD{8WM!ZyXxY3P5j{KMd?L4h?j7e0CqvP|4?xfRce zpM;M;%f49nyy#eM9Y6HiYh+HeGJ^A_X-4{gl`HTvvnta`CKj}>sTG-T_=#z zq|19;mi2k1DT-_AuoQXtl0)0qOrEQ{O)16?vzMh-LAG()Hut$+gUjy ztz6ZdPIO60Nzrp1o%FqpI?ccG3M0Cy3yI!{YwNu=8aoI6@J!+j*JTvPbkA)$Gs=}z zgM@D+=f09RV#hNM`3Y6e(+`0VzcF*6&P?OE63e>yG2A?2Js!Z4;d*w*4bzr9wXR1e zh9r+kwmjo(>NB_FIaiu<^YZ3%lx(*^lsd=|e`GOvP9L8;UBx;Q;1?UMFg3hsz2NZT z#bWZsPW|pWy-C;D^RT!Njh8-Na80MX!523U7Z%v^OQluOqz(&F6ZkaS&lU~@yNauJ ziDDe)UFP_cnh0zg_npQOd6|sE3vIZ%b~oK5hgA50Z<2+$5##B!zgW5Fd((YEh0O%N z-5j&;9ef8bbmkfppm%#$G}bN#7=LwDQRYlHgFMK>GI9L-^v9n#On2M`Ly;gxF0pQZ zS+hpaFQ}k34&HE3yA9LG#-A9!xx!(*I;>5Qr0hTMM4qq-?{?VsxKQ;c^f0DfU0rpz z=;)GJZWwijlbBzZj;vD{=;=Y-S_Ct}o7CvqxziUpYHr_HcXh00G1k3=LeE|g+mN3R zZ~MNsMc=w`hvaW!oRm4&aIRc|+t=iXI!yGGF^cVV2BpW9TNoR`ug4MzanMNE3^T3J z@Z`-<)Z1t^6_wc)_^W+f486nZ{8#ljrN`3GBfSIZ{ppSy^)0X5`r&YPSht+a@>o#M zLVJ6Ae?gLHW81LJNK^)6_>Qt{d9ACB;PvG4@^ZS>uOO;bK8EXe$fp_9<~OCMHPzK8 z55;O35Xi^$S4f&X$?@RF6Ymk-nFRu0U>t;{UXZ)P_juKnfX*QM{h z6yPP5p3@96i=7E`nwP@9@B&ilY1w?MY^Scx?x#AZ_I6g`Yz$eFmCLJ2vyP`;=6%JS zD@A0l4ioO*E0KHmaoMFp&+(PJ=Y#BV@46~KvCu0Ys z?taiZY4k#nxVlzMT_Q4aSfo#eFbbA{(`M{F^2knN&244>^>2710lddb2GR9m3JD*; zp7T^yQE8lJZCshScP{3+^ytR9dQ1jdIgzf`=+6$z2@0xa#S~=ptsfJ+U*{nYrOJuI zuql%Q*)~pjw{>sjz;AE6ZFILM=?25@2B~rS%xlC3CF2PnDnlFmgZo5Snc+}yTc@Tq zuNh=1pOJZz>+wZPVau|Lvz6p*Soq)67QY-1?~yR_Q$xyR6I2lT%MSOXB*2eR^kS=m z_-*%h#&EZ*vkyNG*xH`-G%l}oD^Wtr=)9?uQ&W8{2eBiMYLA`NQia?>KG2vk>nQHL z&=T17@#9A~+1C6EwIlW%N<7-k-u$)vlQ76~LAi~}yuV)8avEa$r0=tISd%BPzOr6* zOrrMX^lhp-L9ui2wzORN>3s2UCaxBYf33(PL!%shz0A#*oQ;gLl%>M2bBo=FpuCQm zHXuHmM%V<$nK&J8U)z(Oem@-s^~|Dd*8X-7IS}v&k)s|G5@xpoL{eK-?{4B&ue5BzyCZWK@Xig6HQs)NGSO~Asd+ljpSu-$`Tr

QhWO?fVgU2fayDO7vOyKr{Hb^-BZMoa1e^>*StPb@#Wa6?-=N`uYeyLo0%g ztzUdGcNoTq`XSor24a|hXmLu-uWi*PwO|qY(zJ6k^N70;D$-N#n3*<=@uVLl)nY%A zee+ViGzc3TM%Igo8^yOJ42%+0yf4q5Hrz;}Z;hRN4R;EE5O8%W%vupCyA8x;2~ z;q$dc4WipQq3i*CAq}2Iv$=eI?b?|Lw_vT{(>9yzLMI5A>`Lk?p}Q@aZo`#Tg~Z(G z?~19A%D*4tU<+)R@}!x_D7mk(NP>!&pVBfj^J$=X$d`IYZTGEKO=W0y7!m~bpzA+A z)LVjq4F&t&JC?OHf14qnqz6PTjJ>RLvuSw$vTi`0#^Lz7*KLOc8C8}bF+F|a@yna% z5GvlzhN>xhF+K$8>5U2aTsKg8tbYuc11mIJ42C87nf-t~j9OYe9zEG#R?dNxczX#Z z<>O6sQA=v~y-5)pW*q`l$fze35)XVhI*aWc9E_^!>dxE!RN>!tQjyxf(F@}K>rCBJ ziuqefNY_rBqHCX8yHT#C^l{p~zb&}G+(Vf=P`Y8D{i|3eTPX*{iM8`n6pSrTone zA)(y^@4%P%@2CFxoBvss|Gs{IE!F=l%l|CPpFQ(Go9O=MPQj_s*} literal 0 HcmV?d00001 From 19ff006829eaed3cb7fa681f66ee68e1c23beac9 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 26 May 2021 18:58:28 +0800 Subject: [PATCH 2/2] Startup script and path information --- script/function.sh | 11 ++++++++ script/msg_gateway_start.sh | 48 ++++++++++++++++++++++++++++++++ script/msg_transfer_start.sh | 38 +++++++++++++++++++++++++ script/path_info.cfg | 54 ++++++++++++++++++++++++++++++++++++ script/push_start.sh | 45 ++++++++++++++++++++++++++++++ script/style_info.cfg | 9 ++++++ 6 files changed, 205 insertions(+) create mode 100644 script/function.sh create mode 100644 script/msg_gateway_start.sh create mode 100644 script/msg_transfer_start.sh create mode 100644 script/path_info.cfg create mode 100644 script/push_start.sh create mode 100644 script/style_info.cfg diff --git a/script/function.sh b/script/function.sh new file mode 100644 index 000000000..0deb52b38 --- /dev/null +++ b/script/function.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +#input:[10023,2323,3434] +#output:10023 2323 3434 +list_to_string(){ +ports_list=$* +sub_s1=`echo $ports_list | sed 's/ //g'` +sub_s2=${sub_s1//,/ } +sub_s3=${sub_s2#*[} +sub_s4=${sub_s3%]*} +ports_array=$sub_s4 +} \ No newline at end of file diff --git a/script/msg_gateway_start.sh b/script/msg_gateway_start.sh new file mode 100644 index 000000000..c9bcf953c --- /dev/null +++ b/script/msg_gateway_start.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +#Include shell font styles and some basic information +source ./style_info.cfg +source ./path_info.cfg +source ./function.sh +list1=$(cat $config_path | grep openImOnlineRelayPort | awk -F '[:]' '{print $NF}') +list2=$(cat $config_path | grep websocketPort | awk -F '[:]' '{print $NF}') +list_to_string $list1 +rpc_ports=($ports_array) +list_to_string $list2 +ws_ports=($ports_array) +if [ ${#rpc_ports[@]} -ne ${#ws_ports[@]} ]; then + + echo -e ${RED_PREFIX}"ws_ports does not match push_rpc_ports in quantity!!!"${COLOR_SUFFIX} + exit 0 + +fi +#Check if the service exists +#If it is exists,kill this process +check=$(ps aux | grep -w ./${msg_gateway_name} | grep -v grep | wc -l) +if [ $check -ge 1 ]; then + oldPid=$(ps aux | grep -w ./${msg_gateway_name} | grep -v grep | awk '{print $2}') + kill -9 ${oldPid} +fi +#Waiting port recycling +sleep 3 +cd ${msg_gateway_binary_root} +for ((i = 0; i < ${#ws_ports[@]}; i++)); do + nohup ./${msg_gateway_name} -rpc_port ${rpc_ports[$i]} -ws_port ${ws_ports[$i]} >>../logs/${msg_gateway_name}.$(date +%Y-%m-%d).log 2>&1 & +done + +#Check launched service process +sleep 1 +check=$(ps aux | grep -w ./${msg_gateway_name} | grep -v grep | wc -l) +allPorts="" +if [ $check -ge 1 ]; then + allNewPid=$(ps aux | grep -w ./${msg_gateway_name} | grep -v grep | awk '{print $2}') + for i in $allNewPid; do + ports=$(netstat -netulp | grep ${i} | awk '{print $4}' | awk -F '[:]' '{print $NF}') + allPorts=${allPorts}"$ports " + done + echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS !!!"${COLOR_SUFFIX} + echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${YELLOW_PREFIX}${msg_gateway_name}${COLOR_SUFFIX} + echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allNewPid}${COLOR_SUFFIX} + echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allPorts}${COLOR_SUFFIX} +else + echo -e ${YELLOW_PREFIX}${msg_gateway_name}${COLOR_SUFFIX}${RED_PREFIX}"SERVICE START ERROR !!! PLEASE CHECK ERROR LOG"${COLOR_SUFFIX} +fi diff --git a/script/msg_transfer_start.sh b/script/msg_transfer_start.sh new file mode 100644 index 000000000..dff8320cb --- /dev/null +++ b/script/msg_transfer_start.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +#Include shell font styles and some basic information +source ./style_info.cfg +source ./path_info.cfg + + + +#Check if the service exists +#If it is exists,kill this process +check=`ps aux | grep -w ./${msg_transfer_name} | grep -v grep| wc -l` +if [ $check -eq 1 ] +then +oldPid=`ps aux | grep -w ./${msg_transfer_name} | grep -v grep|awk '{print $2}'` + kill -9 $oldPid +fi +#Waiting port recycling +sleep 1 +cd ${msg_transfer_binary_root} + nohup ./${msg_transfer_name} >>../logs/${msg_transfer_name}.`date +%Y-%m-%d`.log 2>&1 & +#Check launched service process +check=`ps aux | grep -w ./${msg_transfer_name} | grep -v grep| wc -l` +if [ $check -eq 1 ] +then +newPid=`ps aux | grep -w ./${msg_transfer_name} | grep -v grep|awk '{print $2}'` +ports=`netstat -netulp | grep ${newPid}|awk '{print $4}'|awk -F '[:]' '{print $NF}'` +allPorts="" + +for i in $ports ; +do + allPorts=${allPorts}"$i " +done + echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS !!!"${COLOR_SUFFIX} + echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${YELLOW_PREFIX}${msg_transfer_name}${COLOR_SUFFIX} + echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${YELLOW_PREFIX}${newPid}${COLOR_SUFFIX} + echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allPorts}${COLOR_SUFFIX} +else + echo -e ${YELLOW_PREFIX}${msg_transfer_name}${COLOR_SUFFIX}${RED_PREFIX}"SERVICE START ERROR !!! PLEASE CHECK ERROR LOG"${COLOR_SUFFIX} +fi diff --git a/script/path_info.cfg b/script/path_info.cfg new file mode 100644 index 000000000..432a7ee1e --- /dev/null +++ b/script/path_info.cfg @@ -0,0 +1,54 @@ +#Don't put the space between "=" +msg_gateway_name="open_im_msg_gateway" +msg_gateway_binary_root="../bin/" +msg_gateway_source_root="../src/msg_gateway/" + +msg_name="open_im_msg" +msg_binary_root="../bin/" +msg_source_root="../src/rpc/chat/" + +push_name="open_im_push" +push_binary_root="../bin/" +push_source_root="../src/push/" + + + +msg_transfer_name="open_im_msg_transfer" +msg_transfer_binary_root="../bin/" +msg_transfer_source_root="../src/msg_transfer/" + +#Global configuration file default dir +config_path="../config/config.yaml" + +#servicefile dir path +service_source_root=( + #api service file + ../src/api/ + #rpc service file + ../src/rpc/user/ + ../src/rpc/friend/ + ../src/rpc/group/ + ../src/rpc/auth/ + ${msg_gateway_source_root} + ${msg_transfer_source_root} + ${msg_source_root} + ${push_source_root} +) +#service filename +service_names=( + #api service filename + open_im_api + #rpc service filename + open_im_user + open_im_friend + open_im_group + open_im_auth + ${msg_gateway_name} + ${msg_transfer_name} + ${msg_name} + ${push_name} +) + + + + diff --git a/script/push_start.sh b/script/push_start.sh new file mode 100644 index 000000000..43fdd9288 --- /dev/null +++ b/script/push_start.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +#Include shell font styles and some basic information +source ./style_info.cfg +source ./path_info.cfg +source ./function.sh + + + +list1=$(cat $config_path | grep openImPushPort | awk -F '[:]' '{print $NF}') +list_to_string $list1 +rpc_ports=($ports_array) + +#Check if the service exists +#If it is exists,kill this process +check=$(ps aux | grep -w ./${push_name} | grep -v grep | wc -l) +if [ $check -eq 1 ]; then + oldPid=$(ps aux | grep -w ./${push_name} | grep -v grep | awk '{print $2}') + kill -9 $oldPid +fi +#Waiting port recycling +sleep 1 +cd ${push_binary_root} + +for ((i = 0; i < ${#rpc_ports[@]}; i++)); do + nohup ./${push_name} -port ${rpc_ports[$i]} >>../logs/${push_name}.$(date +%Y-%m-%d).log 2>&1 & +done + + +#Check launched service process +check=$(ps aux | grep -w ./${push_name} | grep -v grep | wc -l) +if [ $check -eq 1 ]; then + newPid=$(ps aux | grep -w ./${push_name} | grep -v grep | awk '{print $2}') + ports=$(netstat -netulp | grep ${newPid} | awk '{print $4}' | awk -F '[:]' '{print $NF}') + allPorts="" + + for i in $ports; do + allPorts=${allPorts}"$i " + done + echo -e ${SKY_BLUE_PREFIX}"SERVICE START SUCCESS !!!"${COLOR_SUFFIX} + echo -e ${SKY_BLUE_PREFIX}"SERVICE_NAME: "${COLOR_SUFFIX}${YELLOW_PREFIX}${push_name}${COLOR_SUFFIX} + echo -e ${SKY_BLUE_PREFIX}"PID: "${COLOR_SUFFIX}${YELLOW_PREFIX}${newPid}${COLOR_SUFFIX} + echo -e ${SKY_BLUE_PREFIX}"LISTENING_PORT: "${COLOR_SUFFIX}${YELLOW_PREFIX}${allPorts}${COLOR_SUFFIX} +else + echo -e ${YELLOW_PREFIX}${push_name}${COLOR_SUFFIX}${RED_PREFIX}"SERVICE START ERROR !!! PLEASE CHECK ERROR LOG"${COLOR_SUFFIX} +fi diff --git a/script/style_info.cfg b/script/style_info.cfg new file mode 100644 index 000000000..ff28dcb88 --- /dev/null +++ b/script/style_info.cfg @@ -0,0 +1,9 @@ +#Shell font formatting information +COLOR_SUFFIX="\033[0m" +BLACK_PREFIX="\033[30m" +RED_PREFIX="\033[31m" +GREEN_PREFIX="\033[32m" +YELLOW_PREFIX="\033[33m" +BLUE_PREFIX="\033[34m" +PURPLE_PREFIX="\033[35m" +SKY_BLUE_PREFIX="\033[36m"