From 14e768e99e7dba86cec9b7e1ae65965390a54673 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 2 Jun 2026 18:20:15 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 02 18:20:15. --- .../20260602/20260602182002-Binary.backup | Bin 0 -> 259937 bytes .../20260602/20260602182002-Config.rsc | 3468 +++++++++++++++++ .../20260602/20260602182002-Diff-Config.rsc | 28 + 3 files changed, 3496 insertions(+) create mode 100644 MikroMaster/20260602/20260602182002-Binary.backup create mode 100644 MikroMaster/20260602/20260602182002-Config.rsc create mode 100644 MikroMaster/history/20260602/20260602182002-Diff-Config.rsc diff --git a/MikroMaster/20260602/20260602182002-Binary.backup b/MikroMaster/20260602/20260602182002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e5a45020b23fe2dbd1d373e0cc5dffdeb4af6dfc GIT binary patch literal 259937 zcmV+aKLEh*sF8DF_X7Z0JL(@eQPP!Ea$R_S!Jz&C000O80004Z`SAPzLsU3os3pq* z!i;Nj>wRU%eQ|dvlZI5JwZWO6H2n}>w|~(B3H38`{9{}Yu2PAB;o_8IzR74&OFk?} zB)w8%Gh)d~n2wUe?R&l#w|9*8cGGpPAM;#1kk!=|v8Db5fOZ=|^73Lvka5uJj2&ly zY=X3K^e_3JqsLd@j3|zH{4=XglX@b5A)-yo4Aa>s_U>j)phJf{%KJYudghC|P@@b{ z-nuf>@rhyv0lhA>Ci)iI-H3;VXf5GIA~31B6wLd+zUyFt&6hM(>iQSWH;`c2<&kK67%u#CV`S-o3mq16zooQ}a7w2Da@uGPH7*nc|N$d7)(WPOP1-QC1 zy+zQAUs1r`psda?N(Cs4{(=cLrfx;BJMEAW8fvsWL92>2$*y&kFzQjX$Zhy_f0?O} z%)<2{V-45O;mRDqf(I@z)Ag0x>fpuf6u1lniwtmuM_8oko%_yEhOMX2@irAI19oLt z$uwD#4}wsdiPz>yeXf$eOyo?G{JxE?v?*}I?nc&ua>zN(V?r3`9U?0+aW2Fo+bRcp zs=HOVooSK}<+=IxB#9?**CFPxZyVq99xT;xT!soOUtcrYO~bAk!O@b!+N$f`!@;}j z(5RTy;eIP{V2ze2oYo(DJ-M6{F`A|>pAi3FyQgW)*vadwu|D;ievs1^|Dw9`SJcz8 zMdD0NsB}JG$&`(tEvWW^i7Q`f6u_(8ZvW6yX-An@n?<$3QI$}V0}@kMyifeRsN4J0 zkGl|ym3{XyR>q@n5tMlZSn6orLVH`R_t05W=Y-_=`{!)Z8s)Id?BLRrn&C3G1kEcy zms5b*VaQ@;SbNJh!68ILG%$fUn5v>lnomOl>ZE*g{~H0z<%5W`rf*dB#OfSqTQe>( zH7`~#PLx*sDy8cu;mzK!ZpMzNjZsC21A1Y6P1)PD;1{;?95})}DBijDOg_gDm3l=|DHM@h) z@Ow7Ex-Ta9iVBp((H&wmT&B{TvqNw&df!*gItI{pq9j{WhQ9!f0eM8y!eCf>o|Q>y zLKTFMRU;E$J8|@{h6#=}=2rLh8>gQFvaqPL5hR%bfmrCCxQRUoIp~?NSmY90EtUNQ z!o>3>k0X7gZyIeJO@Y!oAg9sVeWEj$R`pHq(2l!2YqJH6ieqptUrO`ok|hZ8sEi08 zA@}jK?5f2DyacN#8k0__-*5Hu6Dd@!rM57HIae0X#L_=93IpIGGm(!ykZ){>xc##}F0(#VDZ|J)>1TfUanIdX;St2=E!T&_=kDd&7d0tyg?)M1>e~Kn7r( z{E_LBK(8L}IDMC^N+Cx4@|HB-fH4sW;EJe+9oJQE=+R<$7tq)|BF6 z+-{5`Ebb`h8uY8x;7K^_{aZYLf@`;9kr+uu$yj-s!87@NX0WuLBP#0sQ4cg1g?RJi z?6)eDShD#3X}7IzmwcE7)(lVm90aMq@$Zs$Kw{)CaAlDb9yb^*#-DzqykXM6M0zm6 z#2*gEyXDIhsV!3{nXW?ltHlk0e)8$ou20g;|8@cw`Uk(9QKzf$dzx7PHb)PUJ~QVtbJ9SPHv96iQ#y0;PqS*@l zTwBFW0Vr^^Z@^if_H&aCcusBO=bw>_sEWST!+x1vwlhJj{~T2BLEvGJXh@yw1|Lsma_@Z@#jGV>%Jk-bm^1*`OWh=PJ@{{DF z;&HE3H5e{KE>?$}WweEV%dge9-j{CAa4ixOm+(DltV(}7rtOF_Xg)A`Fd#I@hkuJ5GzB39q*gA z2@P%>oQ~K!9eA(ZBK2NrBBrcwT9t(|3=Saz@z#U;rhb>9UUd+D8c+|Y;gI}&6p#bvzvQ~5A{Wu3H*Krs#ld#7fh!oc1m zsyX2yiID`>k{SHCq*3DnB#s9aGT6z!;%;-dnj&l@Hhyo%S>pn?K)S{P8(Z}P3ObEq zEgt|_l1`aYnEnj1i|Qb&2b(I7DMNyE_6?WXeh(j7d{pp+Rq{{OkOf^JiQZJGnSNL` z@S4<b9N0KJ0)}kna^~B-CtX_F*bZ-}fFn$^&#m;YkPe zdQ29KQk-O-9*Z9lf2hbXz@HQJYX#8z+1&@#)b7x)g2Kd`HY0YAT zG1a(0#`U~yV-js2b_=l*tF6~bBv5w6_}OipAHe+)mBEMOp`&kn zG~yTYp*Lae|6K*+_QvZ}VU#%;soj|1hUI0Ag9MhGAACDK+Ej_l(4Q_{jZd&^IDsHS zDReOe*=lmx0oHxh`!$op(T2V;)?|@Mp1KMgj3;KnBu{>0* zF_7`u8|NiJg*D#yI)396DfMn%F}#|eXy!ykMllcDx#S!#i{-c{Y@^<6S8V_W0I^Os zO1h#1Z*x8c8yGYR>AwyMu4c>HD__HMAVA zaFNc-AMWBGOT0--tQAkLCMNYcPMh2VY3>wnCI2XeOx2fk_)$~^g30@^E4Fyf;OHik zCXwUDc8>rVBFwggJ2Sc@0f-lGlEu@5K6qqcnHMV9y(#+9TZ{2; zW9aFOTa>@ym%Bcf5xEW^;H|Z+0mLM;<;n^Nqa_M<0g%*R=N_Y=;gPXhrnD z&h|)e`j#Pp?J)@CFDi=PFSdp(M1aby37yJ&?zL}^@59C$_QjCQ%V4(9fK z=YpyL@Zdp-NENG0w#|;>a&HQOEzPeGyZtl-UaM08!>JWY z`9r08?s~xDzM3NAQM5QLpmcnpjszR zRw1<}MJj|y)7`Nrk4AzwE@TXZU~J2QQ9uVuSw7oA(^K%zA!M1TBPyx}ln0yCu=hjs zfUGhBR$x8oB0O9id6Q{eONh#$YhACvJKusbdGI@{u{i-_+_f->M$N=<-cleV zwcOq*C6_N6&PZELQjtYSlWwPwd|__+-ZIV$avty49uOID^EK|mKX#O@xiD1VS02%X3D<2>hWIO6w4E5 zq)cEL8SNMxc(Cy2Zf|~Zv&D2kc3H)n_3G`4I&xO&3>xWF{4#@he-0qy>@vG^E`>`V2Dfs{W_)hc>(-rlT%8a>}=4r{8D1*$XfpZ&`0cU169OX;Xt)vpKB?O2AV&?EO zSHW?;C>u;h-o&gfaLa?UszO%CCuex75VpwB?3-R;>5~tg5$XCwzw?C0jJd9Kg5J2G+`Y) zMhke(?IkK4sHLP7=gPS(IyaprM(4z5nqZDiJAt9p^&BG6v^W>bF3&23702XvcKv%v z_W`QJWroHG_iWWuI3Gl>Z&-f^x$q9wF#t`TY&k-6RAzd2A>9!UzM4bSDv@EdiDp5J z+rRZJ3I*%I0X|mW)U12}2w%v?g&BarDH=t;aS?Nll?9KF$0fH?_QRs_5irp5NGZ-$ zNAmMAY_D@!91oco1l^@lZSc8lP-klkngFA<9vn7lc2OyJD%)>Oe&QU;f+y~k_Y|F5 z!jXRVNq={*Neh)g%qX`jiItz{oZL25liCo=_Q(p6>ep%hjBcjI&v8Spn)5@<26{vY zXYfI#>zVpbY?EHJH#4b}^U>$cNI}RA z*;_`2NByILR%c81A>p-0aTxaDZHLca6qFy#_*xv-w{yI-^dFV*?zJt35BK2ZjDy+c zcFLYY&(fRvO9UR+*MrkEAX>~Q8TqNFj}X~x)ghk3=F>v$-{oXSm#c?W6JuuX_Mqd#yf1}*IRHdxp)ja z5*fs2NL8xVjq=ebN5%3tyF6@mK<2gY!<3HCB-kOx%SC-8CHa zvO5oYBx~50u1Tw9n3on&-3?t-?P?uC!Aub|HjCx$A{LQxz4A{#KZC^+{#Ln>GJN<;q@|^dL&b z#6%cEWe=u;$$hXWXGl2uSwNP1KAsbITC;1*fthKn$N6SLIb|X|G@V5_!(Opn6z3`1 z+OEd)l@<*^00fnjP2E+dntOn%NM!KsmN8DxpSzAf*Rb#wluHspBveI8d6urc3x4P% zm|_lv&cbk|D3mOG^!&~53Nta+3Ps17P0~tY;V-U;7_j#6Ry_^0d^*z22IupYLgRZ6 z#o{1e9#yI_9ZfeGMt#Bou&&whVl@6da^8NgYm;Tx`9z<6I6WJej7iRSwh;b+J61Uv zjt}E=d6KYZY#@Xo0Zhp9pD%28R6KB7(NB1?< zL!SI}+JhrB>; zFqZ#*IY2^4wTqV@?pD9NE<$Vm8rJIGT(td0s=E%Oz?>T}EXML4loGhd(#>u%A|phq zM&@T(jT;-=tGkJ&VD}Lj3^x_D)Lxe=tswe8U^%2gM_7o_4|R7Un9uEnW^!JxozJtX zHpYN){!BK29*fLiOw^kL4XBuV40!I&@qNFyJ@HNokWv7WK6tu1D)`dk^d%qapm){3 z_lQfVDta8hupH$t`_&SGS(1Q6C+JGY{EI@DvYt}>&j>$+!-DJrdSQ5%dK&!HvU`@KT*rJaNMiP@R*b zym9Jg9vYEhWRX3Zyyp)j?|h>!SDiSP{ZxtNyg{v|n-TOiz(?{0bGyjY*ka{A=WNOE zJ^c~#?~x!^htiO7jt%-+_xx8aj)XsZ|Gyqy#;_5bYFt87k%ik0iP!1_ zc(^1^Q`oPQS8+@%@$3CTDjD(!c4)U{2kVo$67$=Q-$C|PR#V_`+W6CfFNz1MRCoZe zb|E;(@tgxerG08+Bx6WscrO9ZtB|J0)?JOgNN5)^mbYB zG?rtE%{xB>LvwSpqRVA0wJT@F9bjqWIGC~f-yG_{ovc_Dx6aolJRcoP0h=h^ zCBcZ;&m;#7#7d2{L1Mh+#4z!_vLVtclX`Re9;RzqYZ zcB(40V!Nk;5@5FG(SKUCSwonKzwh4{%i9IuH07((567Oym1Q=!+h1-BCMJ3Q>;&yh z;Od^mj8SWmLiHUfv3Qd9G;zRuFmu6tw6a|eQ8)5Rj$9Y39+rLksV@Iwj z{>Sv_Jeet}pi3CH`zOGzBFE{Etg|UI=l-lssoP%tJ<`aJ6!5Tr-HbKKT|~;nooKT@ zAO+h_1jQUOM}Og*#Ox6$X5c>Mw}n z3x-H;siH}>6RpLzOLRh)?aFYA@7WrkKPfCi>JzWS^-Vi=8Zg1=XW{D}J;}GVB~?9H zNXr-KrzyIQCE>>6|L064u%d502jBAY7Ue&X9YQ`bgMV0$DyC~>DPplqd))Rb2q}Y@6O9< zsukdOU-dgoTu8&^6CKN}BO4+PjFfJT(;XjkS(UPPD#F3aoq{{_L?H~j`+^tN&DnSMPKxJ>Oc<}th_ zrSB7Xu5(mN7Fii(Cbz|SX4jf zCIr79#Q!ebRPiM^#x{HU|F5n_f0KI42iQKlQl6PFkhwYL;uE#=a!Qlz#~OJRFk(Nj zI9qGBpSvYqTfOJ^M*H?`az7`x5kqe9VTF@QVQoJ#ZzSAvKqgP&*!YbsSXB(}cV4;*27OCr5JKCn? z5rImaN2AX_a81Ew=-|()QZEqWZ0_SmYiOHRiRV_?s$8NV-0p)y~`JyO%wkRe>rGrC93?erE= zRTf*0u+GpVgSX)6S7|&mU^4vBX&jf~@i_5gf#X2p(XF^r$cA zi~^Z*>COi+zJQ}9Jzsz=Rm4!;^i#pWl-=B2VoZ;~mx*(ZkdaFBV}1TmmYaP;JcNXA zhix{?HzW#aF^lvKXa?KBE#B_KG;Orwol2SM=WLvUL}B*97KwB!(SK{_Glq~csVWn! zQ`LQUWIuU-UfZ?ykTN|?!dx56u^&2qbG=3Q6^WF&@_NxF+sVM))G!pAH zL1wjV!bpGI+cZ**eiztiFdTPnBJSgl>s`Nm+8Fub7ko&g(U#>Pk`FWbf=7S3DNNeP z8mO}jqZ%L#nx7txw|ft-V|~zQ1D-MquW4!PPpIzGySi2gMg&ov*Rz%X+V(!J0)-*r zSY@QB3QYYbg`X~Bb)+VAhl%T)gkqqqCq@Dr_-^()i{GD->4#0v{_lq*WF!s+nG=zDL?1x8pDLoWFTFM!D^r{m zdI#gZ!GaXMQ2&lV`)C$nra9Aa8??Xxv9FA#I8xQ&nQ5JiT zu_JTe9w)vqqBZ#iRkXA1CcGXdcd5*7nKR0RQh|&ne-(FI;*v3ss z;I^Z^*%<3%k+hD&4NC!oL^&1_{ZQ+rex$3boUZ*$=@l5oZR6KIl+zzJ(~+m9U`kVR z5UKdGA?naCFuN}LyDge;xK-cfXM@L4q)LQK#Dce5Iqc@2B(`-fn({$rX1t zYKgtm3U_@}+QAPH@4WQHXxM=)H>M{e)(8E*XCTk5Oa{uf#h2Xtx}$(GbY=hGljQ7u z$i0Od31)w^%{I6IJD|2T;7)cl;h0>!3C6_1dCg9SdC0*-pmAx3r&PpX6Z{84TUd7P zI`(-E5*Vw*oimM3j(r;9{}X(tZpQMx)o%*%cD`Ee){ZfV`G1V84`$Z$(KeR>de>_a z%P2$WI=Rit2zDZm_bqh5-McN-1%a&kTowfcCY*PEyT{*x@-m_U$)bx1bwEg&G3Vb5 zZ7==gj!RMo3WmpzPPv62qQ`LDMT>>C=Mj$W44S`V55<(R!#mZHhPi*Ko{0U__7jp6AquODphVY^!9fZ9(Jp_PXd8hIj$CbFwJWGPqnA-pc zgM$u(TdE_CTCtX;4<;!_Y+wGE~FY@ePREfC&H@qml#TvmDSo@n{wInzFL#x*N zC?MSk#-%tx&!~R!cMGC9rnudoc>pqSH$C-)UKFG7)-jqH#rm|ODVH@c6ozD5(4pDj@fH%4W75I z*n^Z$jACHYHIbnP$dm&95~AK+hq^j_eM+Rn)O)B}JJ2Jl-u@Y6(#DKIFFR7>`M?=8 ziRqUADq%p&*f**Cs);>AOAE9wImyr8f%=EKAp{3uhr%$3a#46qe8_lr9|A1RHr9+7 zA5Cd!2eYciIK}GFo+w2X5IU_AQJL2FF^*o!Ii=O{%;j(%?m*fnbhz4|0(h&xl0o1P zcSFThZ5rNK#bA1ffmd(;OyPAFqnQT+ip(>>BkcmrY#+hbTXrde6wLOeSdzlqf2%*Y zN3YtQ*oqEvNAHX&Vft&myS1iDg2pPEJ8M;icBq8;e;6Qe*ZN)}h_X9iR|M&+)lbm7 zY);eKJatT2OimHgcb!2Hcb-Bs*p>UZbC)mu^xQ18&gL!4we{bjxJhp(3lR>*x54O+ zStoq;m=Ph=Y97tsp~gx6L|GPQQk7}jKy-EN zZcx-E43!~f#~!@TJ;MV6{w$tHpp_vdW5-$9@)PC}x8|8ME>R)GCqKH(LQ#J)q|jK4 z3PXp{-e=^tL|3XJ8-1~y_aR=W@i)D*!=G5=x9%&lQp_Xi1IzaN_-iNe@CF+x%j$dK zVzG?`YCd9fOW>a z+s2*;tXYt3LcRaS1k;Kqo?XHjUcrA5Yy+<$LnKPmelmQHpD!6M1=>cn)+ zd`RR8>5wmAa_)!-HYp~SEE_fJ#NYHUYW2#wFpd(D-zLt1ckP`=gUy`1zciYg{+AEt zGQDCi4?u9bw}X@633XcI4^qT6vYwth)HNF?ue{&NG5Sxzj$&Tpv)>Z`_(G>>?23DwiZ zGU!xT6cA}jkD+@rFAvAf3>717nODDaT zC6`1_rMvZhe$UZq!ff=Ur++bS0FdZ%pt+;|${3V1eeN_kkxI*?y6L@=c1eY4Ta z2)%m$XylNIvU4H$ZtCn#bhnj?UXt!b&b<9hl9{>gK26oFC#$wLx__SCFWj#Bgri3| zT8H>8Z-1fpR(R!1D_FtL^SWqbjp4rBsB^^Ws`?7nk~b48bn2)njLfPZMtmj7nO_?p zr>{mSleR)5s~ z$B)toz`D)*n~Piqt2~<+>xN`j1_AMb8;``zvfa|{#LV;5NKf_mOPM0z&JQZ@#o++d z!KsZl;UV}Ff3fy^edyPyuvI@44;1;k#BNrK=W%bVM9c=09Y%tK4CTi76N<|d!3J`Z z%pH5aKMPHQ2PDR%a;C$QA1@h@&aK;K89xt5U%x9i(zI~Z5w~U%@)hT@NsLg)`vu8( zFjho@+~{xtmHOb+ak|w()wo0tW{dCyc!MNoO;KarocJks&Ae#6;DQKr&0*1QyBkqF zjyx{GwACjUOti_<@R$(MYa5Nq7CzWU@ww&^++mO@zSLK`VMyR5=2nko*q+`!&dDMT zJP4AtdY<164X@}YDoOIpn#=3_&1*aDH2-K{$u&@~ zxeZNkw?UfYTxv_zaA76Rk=63at>_YLD!|x2!V@Z6H`BOFg|K^-x?glLi6@9sp%ZWC z=PgeRz5HJt2lpH#vSPt1$8xMzpO?2qS--bT&Jf7daC@mXGp=oZ`eQS=i<_2Sv`$!L zQ>hcB-9z@TG6mHSL+oxaaCuiGhha&gCS~|D_br`kgQuN2oD8;6zkTv@FYPk3J1eFu zjyF>cahyg5MQrZ8LUp3|JS$wSy<(4=>;QpRi0NYYt3WkCv7 z@Y{801yax295h&gqbE6|D-s9j_ZS(0`X;7FHnp~#^pj-GrgnUH-d2_+Lh3+(Dy~Ah zUnz39H*IPFMETn--rTi)yk!=&G479FFAp(UPVsY?KQrOXk?Om@TQ-S&YE$XjtFH5} zAme7n@NjCm1d4GS7jQOY_ex#_yz4?(Vz-mF|bt4;2X|YcZ6x zp(5Z!_ke}_!6XxkR)v6+{BM@1e<}9*ZC96FQ%Cc@zVH zT<%gKP1-Tk-FM|slC}4(SXg~uH2XLW#&7A2WgRksZQl-bw5S&1Hoq9KButNk@RbaV z$%oT)_S3lZDkQPEV7WHL6IDo6FP3&K+#fae7n3r{5I{y2pE$QcQJ3GA(_JIH4XI@# z(^g7gVl){3QwKJT&t-*;=f~`DRz#Orl*%6?uJ#RII?Z;9LvV=Xqz_wsCOaW`=0b6@ zB}}Q@z!fx*>WJc2R5lxzPjg%Zv9h<{rR#JIRi!jlp@1C#fg9%M*imWe*KMsD#gton zT8395TNtTSv)1Vh4~7K<=sDrDkE;<||KS<%L&nW)jv-wqL3j!~st`vWhZy$BX2^|| zvjnus(7{OwV&Oon zu3of?Fwww5dPe6*_=pXt$zDqscKr0C-YGp<>PMuNMIGV-A{#Z_n6edu;ciVSg{Sk*NEe5Z~ zId^7*bWp6D(ElKM*TQl;)0sa2=9eu}|51~K(?^T$=ENa-{YGjr4WuyP#3FM5bEfur zKyIy!Cb80zUHl?ql}W>~O;~dC29G=7?h!xXUp9@i)DjcqkX2#rdoQLTEzu*! zNTrDCsd9;h&b3I~AW50F%6&tc0UIT5+}(WT=}4qZD?F$SBbFHto@c(?{T!Zt$nCfC z4r=*(pVq%P3rbCrk5<|`pdxM^3Qz9Kn9HLf6iyq}wEK zC^FJ@QPFbtr67EQgArTF62K|F)8P?8Z765P0zt;~qHmZb+Hs7`4n52`d**w}_nNjL z&H5?cH3z1`ZC0tr@;P91w|``mJ)Wu4<>t`IbVd}tc>~Wco@>r9Ao*WK zM5mHq+>374EXC!O19z=`P;%L$3obl4R0WTWFn%?K*SS7Fq;a=IoD^|k(Us?%dfwxo zOT&z1UR}N}wDq_(pwaWO1I=6^G1P+_no~s**=u>4Pt!sf@-9s|43Yu~!BL=d(j$P$ z2O?qfV}T*}Q_6sSb3?#ZeQFk+1GG@EPIXZwYts3FD%a}_CZR(Tw`n|67G?PKp{bP& z^;3Ad#(u4D(U<6wNcb7rbN4roPU8(Y&*Y5Ung)yv$8W;Un2NLUHagw9U?0f>@YKgj zW*EuOO-vX@4KejjfsH2wlb9=@OA-!Ay$!joj8BvmX^tkq2~`?`)TBBBVBKuT(JXgO zX#~Hk&m&>T1}6VF)!AGp`OGks@nqAVedR}-Ax9BNn^P`<4{P^Z7&D&&6jA!J$8)6B zq=88l93T!sY}rB3W;&`3FBLQ_G#8pIIvW5wi)AxrR(#lLJr{Njfx$(+Xr~;$bsu|e zdd)V9aw={0mTZ4~E$<7c>rAkdR(gz#b=q!#I~$uhchBus^pCbe+=AHNO=Wb$$M^z# z0yQyNfO&D6`0o~beQNrclvDEuit7*UINNFn?3(7OwU4zI%OfFvvP?u>gCnDYgf?5}RP zhz??JuwQ&+ri6LjN@LhY>ipLC`0d=Uvg3An98Q;}7^VH8O3*Lj%>opW{LHjtL`fEQ z*UHI20aZ~$w-Q6w0};3oMP6KB+}n!kJr5$}(& z0``FYaI0%msfGPY&}RNV-~kU*vt!wqIRfzOu{KDc={QyrG?&%R?k1Wnlwz9X+1-b@9-0D-T1ob<|9=qgs zgeMzhN4nb@-jMKDG((NYeoP?EaS;HzXBWogev|0~1)m)x3hxQOFbK3>l~I@H_;6wH z%&lCKRRJSpnrdIc%L10cI3Z?JfGcj(1HGW_l}2?kal9?_0khg9q*;zgNOt$HIHbK!4-jA8HffZDXP6T-xe(W?Ul74rG6U-kP@- zPO?Zg$dH~gaF%bmFdHzXvAg5J6azt_2a!X8V-6kSm2o;#jvdHoA?L(^L?*?i_dXQV zpUnP;7_+}HzpmOt9wDim!#D*-MHt-1N;#N_ZXhwBaVqCkPf_%}VHZ_>lT4hQI@$HTveF79sXm7aBqe1W}f!v9Ckmj?Z zeDP;3d^DM3N@4N^ezt3YIF|+d;5(4iHiHyUqdBrEKXV)*CJu3XdnnON5Tk7WoAB2o zHSXR8Gq66bl8a|5F{SviM)YY&lWqR$P~}3xs-X-qteFdC&9Wmg5?3$^v{Unq(Udg? zgpQ99W}`9|zMw7{jq32W0606Y|7EZT!ax5 zon{HN!}}}-gALsrY|)$z6Uz_i3%8nq&3?rlK#}Sd^yY42Vv%t51IZ!;@zxnZ#ZdeO zVPoPrj#B8)l8?-=`fOkg)##O3HBN$aw@xz>lrP@_)y_)5*bqbmcjEogK*gtyx}u6O zG3H#GBLPW_0i=Y+{iqv$)I(%ELn#b}#WxtZntGPA?Q^K9(dS?nL+m)mJ#55^$ch4! z7z*Vnvo%fHsoD@ZSd4G`*Dd5|IRt!0mRLvuV;hX*73ytcRxppwC24!_QxOYuW98VB zQsWUbWaZ1Ppeer-mIjL-6mWUDQ>!zfuKb!!GV1DOr&G>ouZ^cAt{eHh6tKar2PX>J z%IX~{duEa3WIbn2=N)P<_wn7>@EX08@vSh@(nS`d6VFPonmVEY+7J3IU>W}aSwV6r zM#kJWoRBS4JA&H~+?ekAD-|_U^MJAU_Brapd)g8Iz1vZg51vd!vmJM??nB6YeUQ<` z5<%a}0y_xy<0Eea=!?_IxuYn_5H#z#d$$*efBxc7`C(?&TYn5m}b)2%$peid$A{J z5)-7az~}BWq2?FDQIugU-3fcW3JW#i`Jsum>O9K&U|2Wi$MX!1*{LTTtQeVHA z2uE=H7TSF%o;rsEQX>D_E1z#lixww#U(^^WliGpz#BHsgl>Yx^{0@3^OUU|Ab?Bqe zkMXZQ$q{x;lh0?16^UU36Lll`6N)ddz`awIC{CxfFW$*;|2s_ITqC8*BRwe9s3=hmj6rWYxLS0s1*9aUb2BinY-Mdl|PD7YJo{X zfYx|em-CWJMowHWtoV3M>rEIOuq{yr43{PY#BSQG%5e6CCML5JVh!Kz3iR8?KW2yB zEJZY<6l42Dx<1dR<%$kQVq=ijfLk#<>WoY`-s(evHM&z_GSye(XXuYujyxrneYrxZ zF@e`VdYp%3Z3Z{rOKIrXIM>a1^wGES&Uw(JZhd6r*%Wm?SU&Ypui=KWf2Lu+$AS}W z^HP<%2eJdDh4Hb*kM6<(kKu+&hTJOJK3MvFhDa4Wx787Zx-26l2zt=5}1@rX?KtX*hdI1@wH zu5+NeH)TEfxii7(b)8Qeq4pj^#+*}`LZ{@2QQ>!eoIf9Vw8bkOi@n-BjjTG&_wj_@ zAts;@DLMxy3Ox;nY1>m8_p~AX();qFo8;!OasZ0yQv6rv$;r?#{XHSn`_QMeY4Y$u zjSk&AOeavI$cNDm4#07Ovif1LI^(n+oRk{Oj8K z8;fhLp@CmHTQOSp>=%4%_bvkZq8F1E&Qv@hb9 zIx%QZ#m=qH&;VFnGJ9LMgRFq=E~o};9+YT)_KS?RkY`y>I4{1d3j<2g21_Oqgibmr z!-wNut-m7&jp#dY`-YbYwcMU#ekn}He8b))lCqu zH^`s_;#6UZdu0)9-B`e0Q`Io5b;LDK!D2>%T=`xeqEdV}u@n#+?x-YI**HIjVo(Z} z;P=19?rgc;{hPQ^kif@B&D(dnbI#qO8|x_kJ%(ZfW9nLNfWX5h%q|-Ccs=iQ*m>p= zED$5Yj3%8K*5vZ9MPt_T1)X!$d73bLLuiRZUso)m1%VJ>51QBe_Hbk4+?* zLhJmZY?)%=g@I2EK-%0wQgXb<8BG!Z;irB~o2|+1BS9KwSWAh6sB_X^eM*j{vcl@; zUUJ{fl-^%hKaAZ;k-r0~pMlJUv%*MkRt#2mqrtMtTFWlfqIUre`yU#vx9BY0ptVX; zvEb+6$0cY9ly9J=^n)sF;Izb8))hDpo1j~~eO=q--y8%yW0o-KXMa6K6Z zJIax{{)wgie1M^~D50#-J5>+G0M60#(q)_eN+pKmv8LPly=m4yrJbtGt1^(>G59XW zwL?Vm;9_>TwG?$&E5z@$UQU(47rrTmR$0;}ve7lk?(9d%vg@~#UGGwuY}_sb?qS?(u1iedb5)qcFDxj_12#cU;=g;&DFNxw9x_B2M{?7WTckE31xwfxBmMwlc5%-a-DiTJp zn99AAQ>9)PwvTxP3)lY+uJ7MY>yHbIT|dm`%Pbb=s#0%?ei=7|vm`$L5R`%^^KA;1 z4}b4!LNOWfV5I8!w^}KWk-K!C(bc4n>La8!MAr1L+Pk=-OGT~fI=af9)6T_u*pIlg zb#vZ6|Cvgxqj^L~9tuDV!AsOb~c zN)}Ek9=zm^IR?PM3_10pIAc0_H#KXEopbqJO@X}wedVZTUU$gCT~!+4iRlBg)Z)Y~ zi}xh<_yh={{90Q@znIwuX2E}n`%tfg54LVV5)INw>j>#$@pAk0_M|Wi0PbFho+ApP zxSM{0CO3XwTx&!}*Zb6fG1kLSxuoNEex(?l?VW>vEm$OISP-hCj z{ZkF#Sz!U)h|o*sCIwQydAcXYml+Of{i=W6F&+1t>$kaloUz>2p6l9u?c?Dk)#AZ! z7LQ21C?C-|(%eJ5nakHNQgD;84OlMYc7fXc z2&97tVdkX?l9{_&{-n)FvF0lzJ3FZ5#aipM`zo?SKt?`^Ydwd18>|ir8>|R(Q}{A= zq|QeMBxSc-(ug>>5koZz3S?A{6N0|F2>!*u9~`>Xq`7J99zo855U0@#{O!9$c|}qq zE-_JN#$=S?4@2Ae$6Oeh3$}DCo&qHfTnl=7b&AJ~Se>t;47~w9gbW8?IH!8WC))xs zU4H8pdU(QL4oZiDc_MLYUMlnTp=rf9@277RAN13TEi-A3(>^wu0iUOR2!2A-T%Ga1 zo*+B9SuOTh8KzKdz62R|+TlPx)Tbcqax^RiNRH>4B+%eAmC9x z8xWt1Tq0O8LY%XU7A4z&bdf|5=!h^~ z=aLm|zQE||-iz{cP-$s3jbT>mt^YB$opm07!dHSWD;aC4R$SCZ0dzqe zfIikE!jkc$^`Rt{DdmACnp0AC2U-n)=yO`XnF?xbph7sd0(`(I7|J^{*wha0$zzs zeQqmOJft98G&#a7NrM`(e_;0-Wa1fEf7!&`O35!com1H4#4}9!6I=jtci7ay8xdou zjqGBGOs>eRjJ^Q>KLEh2^_H?Aeths1OO%Z0f|IPG*?4}Wlq<9=bPYH~04^dDw2diJ zK;?xRzimpkmOfP#qOh3}4hW8$K4!m~2>Pm-#UU0?g?AVLVc}V!2|nv=gef%?ycK-X z&M73{RzwvvRE*>S+F>?m@JDbA{jpB`t(sF<8n?Wb2r2wEm3Tv}e|{r};#zi+pnAT- zeU=6DYFd%^0nlxTxRgvkj7OuPWp6?mYablfvX- zzE_=j4RVr?AoJ6Am=j(DAS~I6fZ|TbURNeIwQtelwdI`QiE}_AtBga$;ssOBD`3U5 zBCJZJg9y(eO|v-r>c1ceT~StV;d!I&^XCPB&}hRy?&rkxha{xx>)YV$^Rau#FmcWD zw$bIQ^K&h)_ItGatE3zheD;(5Wlsm&3JTM9P>xqLgi;)z!Hr;^fxNX!APi$;;Pf| z?FdbnOZA~p$TC@yF_&=_K3|B(vJ#Z&S@YDmYdmI3R7Z+q+S8D5ssq)k5J8u zx{+iZ6ZFwm@c~az0Jf#fQMobNNETp(C@5F1AQ>owI+ZK+g$72aQD_ml$Uf@FKjzzB zTX6s|W}##I-Sa&z^o#*a-6JwNJ8A@Opuj!hFM+jch-!O0XCnz(kv0{HHlc{|QeABm;$zsQA&RNG!fUHqRfBYHRrky@c$o!TG!2Z(N}pxFc*rUG~@y zPMh97lcZzI55PT$05Cpb?5Isf2fHk*Flq!|Zk@s7n`4z#WLV-pUFt)dh7oXDciQ9N ztV!3e)-fgd#}P1suzeJoa&seLma7OOWSZ;0VI}~*4=Z{zqG4O%v;edou1tbcRpg#I zqR&!+gDy@OPg&MKElA(wIZ$X8Gq@iytK<0v?Y%r0&VSptK!? zTI1ZAa%IDyOCq_#7lLU}@awRy&Rk0B=5VN?Oj1jX@%xbx=%2lqF!$dl zQMRp3Q4}69xyBPA8D9-Ic~&xdB_r{s+D{u;ef84xpqrc$3Y5%DYZ>(9^2J=q4&F56 zOl>}|w&lVI*`crWZK%EqX8cxf2m!gf<)0(^%V=^p%)aOsy*L`n^3>of>itO~BP?S1 zhVGGs`pw#mA71tX`hc8TcbTjAW$;G8&fdt23#>Uq%)~A&`|p*G2xzl*z70qKRpiN; zf@EANVpMU&(%}gz^4j+NMKCpOzcQT#s_*yzr6tox|C8%&wYzPmkswa(mHrS-oZxvG zN1F*o*4-?fuuJMzOrz34X3@(D6n(01LY1z*huxh`M5(D?sm($?LELTg==?~XLq|TN z5K3f=r9@yA1dnNs27rNEn&1=?Za>DZoMci#2W12wUz z9?0*yF{<#_jT4h$wbcTOd7y!PX<%pjnU)9>A5R@32x z*0k!+WdsX8dV@vf&b=}Yu{`4=l_y^W?lbfZNuJ@_r?ntMps}AAjOYO%a%4RR*ZJ^XgOPOf zLE@Mln!$^e#Rj*+JDut5P?2=`N|~VRv1x798*LjWLNSGA#L=CZ+ujAIOjLa$`m=IA zQO))lMmB_aLI|efG?KU84(yQjLxY5Rbc(5Itf>n0U z_$wmysWY2BGPqF$x9F>aEwm4(hiWNLf8v>Afr(t$%AnuMfU}gSmYLpYu+qOV7(?@= zk7+EWa5qO05`FN|lb%rI{V`2IDJ8VOm_(`k28t7w!6Bygxn*SVuQ^`j<7!cK8*u_; z1v`JU=EDB^OV$}!nVKhNM-(|q8Ozx&mC6NhX*N2qedpmJEE6Jy@f#9b&aoysT(Y$`B5gcLB>Tu$^uxrs=7R2#s2dpy(W_9||7_8#N%3+ogjlF@GkuJBPHKd@ zENQ2(*h()d1Nwf%KKFaSh4^`dy&_UNJ4N)iBROnLl++;-@-UqGx+JN}-oz}~xq2)i z5W@l)8^Dqq>XfxWOrt$mye`D?gQ&F=%-!WSgeN+PFJu-3G{3(3Oumel+sF{7h{gs; zkdIqL@bZF4C`P(C(YVI;+QTaa%F4#tXN+)!^ON4Lt(Q%WvsIJo3^rbhtpYZWe}%L} z%!iSB=f`qIZKW>@l9l%kn;W|UWaCnj6acmUGDI_A|st3WTK<4e(u`Lu458KXBZ3H8XM&B>&3r-+6eyl>Q%f9`YQRW zn=xHAZn++Pie!E0RW{h!4=@=kchm!i={sp~vx%-Z;;nW;>_8) z4FqR*&)ntDoK^2zk;LAb7T(@DagK`S1gvs*EVlnjW}%V>D7auW^;$`r)-gD`d+M4C zvb&F7os;_r-K2gPRW|f_R@Tl}dv!d2#70+6^}=-q%w=R@yZx(&3Pn&g7KwbqMObS{ zsfU|UNy&!$)4CX(ZeHeQS;_bL8qZsTb0Q@!@5wq@I!Ba~;K zCj4vrbxg6@$CrXF(Pee}%-*4)n3rLa-xz)Z@hVOr=L@8b{SU{Y%BxM%UE4K)?3O=W zNd%2+d^_XPGD)^CuY;zG^a#C~N0_DH%#l)we;xZW#s1TJstK7e1io&HNOM4Y4-|{kOe&k)7~d3oC4xn?h5~`wZQ~hdpV0d}0)f zhe-?62EPjwb_qZgXalB8-!2{qGGgt;z@*LFeGTI!1n@c0ELr@Gqys{xuX92s`%c)$SCa_P5iFQ81bqq1=+;@1nL5KkU==?3e zOjy{mVcwm1m)^b_CGHfE;MU1BOE83-5Uu$UFQ;`JgEwfsIi8Je6K-mnA5!i?Nc38& zuF;<@Pn2{qSxD|z{8Mpt_7aJ&d1pD4MXI?2l)fNw339jE<{Hx{l)@^3aGhPGnLf9B zaR7FI5oZ30z5UifIIZ3~{5U~llb4z%j_wzFe0T6jx`b+?V|b|`+ZtVW6)42_R4J@l zN8m{xH>6*d4rG%5jho5o-0F~s`Vj$2o8 zgq7)I=R-J^@3<@hz^LDbK1cLqY&)tO?~n#1d6~AnBB$;>qa`BryD?6mu;BPh3IbU9 z8t|fy2cTM|A}#`@dn*~t!2+^b*-sBEYI84cT<5T|56`LZ*FHU2de-(5knG z(-<7DoSfZan~nc|ie6i4Fhy{Frs6w9+x>!>$Tv+{1I-lSQb>5TL#2RvAn zTsGcC{EMUuQJBvM9=X^JNJWBewI0{n2@w;h7p3~CTzlr*0&W~9ChO|An+zV{KIX%-L^wGd9x7qb+4!L7 zSam)-3FN!1&~lof3&G@rLboxYFhUP?L@1F)<*z>i2Cr{EU^m{dPYXK#;-Ki zQOO@;HK#K%DZ8gLm!%LG`LWw4<-^zZa(mU0h=#cF+iAVJTsiRIsKfp=DQRsx-b6N2&!S}g%1>Oem4$R{bDh|Cy@yz)7eWC0{Pm>Ptmz+j3)oL~j(EYb{)ETu_`r2Y+yGO%epdrVe(GIk8WV0? z8V}W$Z-(eq8H-S?H^prTkgyzU^o6EKvtOYa=;Fkg`8|bH(o0ulUihM`KbcKdYYR1@ zvZJMpGjsF@J73wj_(BjaiR z`^0dQ+2Vj*cKjM>#JvMXYw;S;I&617b|JsNO@NX20*1lVL}-f{b~`6=l2`BmIt9b| zgVZvaRy$+JEw+&>sC(c^{Pp_+Xm;abU1Gf5me$h6EE?*N$xp1E>(QN_{d)G8B<7Mm za02BMk>aj96$XNt;@@iO;+%YMLONBs#>89TN^mc+JSQTi$2y7Qqp5L#MPmTP?F$s+ z{HOhdFCt#lX>X=31ZW*yC|D9`SfjbUk#*-y6BcG&1b-8m?uYKr_Z@DWvEa0HwbC^4lX05aFn?EC#EXo*&*~Fr0Ypo{GCIl z?3Yn?ED5o09z9j21VC2$mMqbRii27FaDWK5q5cLi0J*YmsE~- zl%+iz#L0qY=kNnv!;CTRX9ezZDgjx7$$7md1zyvppb5ssnQ#$BJ%nRNX#)`dORk`X zUg?^Vw0G*jW-+gBp^V&R?cF!X{bWnWBtgk!mMFnS1Kk-rAYSsu0^N{3XE?3i&j!p@ zLfk7$na4jWmGihzIasTBiX3$Rv#>rSqjsOn=3OA@`vOglc6 zYyJUURmL3l>+%?TGiTx`*|i791>P1nei0}lmQ~sKv1lx``c> z2wS1A1N%E3`Y>*D7_7vfbx!ILyrjn zovJKwM8yq$PQRlbTW8aos&o(d+z)Y8GLI-<$s}_(>eRKN%=zJo!~4@yLYsjz+u%J) zUMr2YKg!COqzx^EQ!viKm8$fn+=Pk?&xE8v!Zca@xtWZS%gDW3LR%GA4uBo&Kzag9 z-G}}j@KAErC&z${WOHp3+zwlyMYbLq4F4qHi*ijbfw#z(3rBWQLhCT^sRKMGl9X?z zFnX+r!;ZOwOmGkH{unr3(|mdqL>>4nzM+hdwG+3pcDU?U(16aJ@ULKz7Mj_ZT z2@&^$Tltq(XyG-w;+3Ux>7KxZE%W$%Ynt4i!J%@Z9c$JSJKp;&EQKCX>GOsx7ga$} zyn*t^(-PW_p&9b=&q$F*M$)@P`ArUrR0rh4XI11({a|i`f zp`%LRq!8ZOCZ|;gAb(2ZmG?1c-9QRtW0z!R>A#VdTb+Yk_TM84S4^P6vqF+sP+t7$ zvGoi~$0y%}pldU$G193)KoJRQTYCD%40M?Xp=`x(JP6Em;rSK-(M&y=0n9Rw)C6hC z<#e7bv;Q}IJUo(Z{;);zTOcFX9pZEqG*qjaYyzeim^hA1Fc0`_Wb(6u3Qz`uW+dxg zfHI@yyTYvLul|3jJRnSEqno}+c&e~P^w<$eA7M8Cz~5&Qh$cO>@H!?lv|kN7zY0UO zFZxRL+N|OQ$$ZFHPXy^a1&}ZSnElcx<$Aoho%EX4+h(n)DuLtmVtGm)1h|;Siiezj z%2pAVFh@cHkEpx%BekUeW-k3Xjmn^F%@hPB&hVf%!F{&oW`gn2q09jvYu~nlb!*$z z`Oj109z!D4&O4yRautJ)wcpy2T{`m|NrmGCtTey~%|@bqiPwhlkyH}~;MarIs}cLX zYKmX*1#u7`kmF&WPQ2{z716)T@kTn7ff`RP&g6(R=q%S^dx zMxs!QGZ+6?II)=iLe7V|oh1xmnaM`141w?0`PCba&(kv50JugMwD+hUm&vuj>VB0= zmRy&u)4)iXdl09c6h37_PR|<#dkWpEz7-@Dn%u7AR{kHwtq}?kS{Kl3|2u#?>TT((H66_NWwDE*!(Niq@ZG7b*96% z9#AZdaq$gd*rhj0mL7ug{ZCS~dtc-3EJGjbZ?e;2?OGOSTg)e6&QwAfah5dl(SWIn zO0BN>`_74(f_JjbdDXM-&N=!n7VTdVva=o@gK&%#A`0l5ZXk4?O!?AymJJiru!T(y z2Dt14F%6n2YzREBKy}qDPY-7K%3PS{eLI0YQVl9OB!uTY^gThQRo%ES6n6H|npDZY z(^vA}1Ff=t<-s?5eW6NqYc&z=QckJ;2+Cl`R+X7@;|*5IWoMw7#Vg}fpbJTMj?rHBV@;U1>Jl)uAgHJFX* zNMHonl9ZkOn$06nFge-Tsp09pLjl0R9Ib08J;fdDwX{Dmct*F*9`)g8r<*SeE83ah zDs@a^C7sOT!X>swa&zTVlQ({cRhme#s>Ki_>#-iDO-kP3yg8=q z-A*R-9AWCkWpLOryCwVr0?T_znfPNsRs$KA4!lDmVpPU8gk#8mmM>khVA$>kX!Nly z%3C{3buW1j{*3zBk|Bho`J<4gK+LWE8zB5b0UgQD6jlkxU}*g)5|f{1sfPkwB4!!% zWb|pW4caEgj~-7k(+mXtT0x0qMdc_sWmP5i&Q@`aiX(TJOXp~np3&86Wh6%deIGG5 zCfd4y@Z)9nXiYgI*VkAw=ms1h5ZO+WCphM!h4lY$Ph_5G)lg--x|z@`C=7zvKIW0d z7>#aiM(;XYS?tF~heSEi3-3SA*PR_!4*_qUPUxyEDQ*@r=zG_B4SS)gR(dgk8xvAQ zYWFqKyx;&pz~`zvR!>=XhFgUYsDB zE+1&FkLgsL=fPI|M{xz5R`#R3)CXhVwslzK{cOHa_584(;~dW+*afD3JOrJcm!iYn zW?Z-=ae8&n9CM~S1sd94Dgcm?Et$}@m1H!bAgc>_h{i|}OiLQ^zOd<)oLXeZ7oo2t z`Y6!wKa*|1Mr`FTHAL>^x-K06)&&iiV|+H5Ui^c>5B@99b-IplxdcfH%biM!)Tk{Z zFDoYfcvJv79)61t;4lYUKCzHg66#%}Lm!8{!M2jN7LSejD{&%CH|%OvI_%f`$!pd8Ph5-nh zyL)%KQjPyJ?QD)ux1p;uSo|~T^2++>NUPAiF+M8%Wm*!V4o6Ci_GaP(>`*Z<1ue(C zA-5YO26p>V{w}8EG5wYOud{(I4BS4P3sK~t!rT``fwOm=qpM6<sNcRnEQ`~^G(w4D70ptA(lPO(_*57(Pdnyk-I(QT2i#n8gR{#9iJx5UBliXE+niG zI3v&IyCwio*rQ955keKFVhpVadh7zxkEs_rq~E=71`#D7$8GFJuH|puV&=eJ91=%2 z%a%A*T4x4lk4i&N8eP{uV^@=9xD%V_Rq%Xd+F?)zWohG82!UXFqnGg@$lz+TIJ5vB zM9(An^fz+8rQ$iIVsuO6kgwqBzO9O;#cM;WOgf*=thRiY+mvvU334gdrIj}YGWdb< zc3W^%f~2F3>C4dy~JZ5l$Lb%C+iJ%ul%X z6Jt+amYMhRYasuJNHN{~B9juqsM6PR%Hz7e4q&S9ohxs6A~84bflRY4KDiu@iey#daYd0vex%F z#*BkS$g`X7CJ7`Y%QM+O2~{P@h#*23i~c!{$#twSiGme3WDWVYSPQWMa`bTu#S3oV zA!;R$uF~*mwh!``8e*Zb_K91BvUqz^WI;@ui*8bl)YRnWf7mAc{m@J^22$U=&VXY} zJ|7Y9*^nVu6ZQSSO4U^gH8)q=uMx7gl&OVz2B(2-v$8C_2(R)f2dMLU_!??_AcR(K zKnp##eYHUn6YdQ5CoYK{oUFybZ!ZqV|77Y!E;^d)GpOibb zU%i+@6~`T7E-wb#QMBtGFt4ZYAt+mi>*Dicta;1od=ug-K7NlG96WG1=? z_bR|ahKTKrm#c{hoE~>YaIJ9#yu?YG)jH5hN*!z=U>wj&4ZtbA?^PaRY z-Mpn3!bZt=kiU;cISl;PkT|`?i-i9sg)+%OD-)Y0JCfZQUgQoRP+ig=b&`EfRg>Lu z_Px(w%PCpbON2&A3ZFgnm|QP*gW$uT;WPh|ylYj7XeM_Mk>pRIJLA8@Q{AeGpmg-o&fKVPCxq z;7J-OXdE3LKbyj6)wXkeASU2_VeinJb*6K~RUSz}goQRgzK2sbe032OW=HILOj^zE zg&jKRDDLnVi04L#I>`;Ptzj@^XYD`|G35mxHQ$;jJ05v3si>57_{_9AS!uMjPhB?ylbl#8Elg}J=|_wK=EPfMcx@_4cubLpaA*4fw@nosh2 z1zRK9O&zn*ffj%QQGg6o?#7!&$4H#L5A(L=_dKxDV5kcm-?*b=J)2C2_HnUTLi-3}i6@kJjj(Uq)v=FcX4e zOg937WCQxg)W)UN^Om(4>_wS!xtcwCU&%Px?D*PR0i=G=_1LL)vo7yIwqOyZuoZdkGr69iLg@+TFCLaj`Mi+v>3QqE*P^M{-Z)%i@kwT9u>Jp3REjH^qSE5E8)pRe zyox(BqBxw%@{H5z`OmT3E_J6{w={B6QR7SzY_6eB_V>tKwK@S4v#xTUD>o~?R3n7Y z`7tmuL`0@?IPq@s$KZ(V71+28v)m{T)G{c|Iqno5e@&f8iEgFej*iE|PMGw8e$~7( z*X>-{s}nlL&p{-K%6p#w+kL38bv*r;FRZ{nD(U?Y9ky4(7q&P^60`!@CXZYCrF>^_ z5x=jjQFpspurW4BJnA6u^HS**EW7?QN2|N~mpQCoFph9^IrTW*8vfu<<3$~GA-71w zBC!g!h6Ek5u?f-5eaR$(RsSFQcEXNWaZ!We<^QYW*)B+bZ0MkCVtcaRewPkXs&&B1)Ob-0r7in%%~DJeMgMSA!wspY1&QLk`>KX^r@Ccm!)k$ zhV&nrPo1eii*zSwn;moXX3k^&oQnr%>%ExM<2qG=KQ|(hU4;(C%aj0X*q?=K)lClm zvRy9BaA=Ah$yq?^k}WiEYfJ7%wugkoc~N$=_(i2ni%cC3IHrXw-KT;e z$W+d5G3DlO4!wGCk~k*kMC~amQd*Qu^K|e>^QHcjqz9G^4Z5o7nct_%@(GY%n*TPa z?w)T`MZPLV$9vgPH|bV1am80!2J_g!qzE-VJFp8NQCBi%Pi%LO<0@BcXQR|;tdluWNz)b`PcM#sNvmJ(X;&=nS1Ff5Oe{~Gg9iU!oKP^-yj znsRM7;QP{VxT!D|$0ENejmi__Y{i4*}5#p78gQqlFQ-VV0ZnQt~pwSm4qF!^7#7_|*z8ERiBBf9pKcgaKvxTQ+TCl1&3 z2}910Gx2|PPv$EHPLkZDjnTX}X6*wS^aSWlm}r$LB99_ui|u&qehwZ1Pusr^_#B~ke0j&Wyi$wlLFS6fQAAh^sPz!8@PF4}Q~ zN@S-w`o5w7;rL|22b-9{Y#Q1S=1z*?VK)OvKwnTf3du7m6LkDDT~K8(|Cl-D$ft7E zc`ZOggakGdA~+$F+J&7hlzX+A=5}oUyRLa6a7%9f+*>6fac!yUw%qA4@p=K}{% z!>_x%ww>G`-rlgiMP;Z#pbg1Q(sqvk8+sOIbU=j?>e2342VkY#NgB;Wyo(*kGgIZ0y#M8(?j&4}*a?&tkP9Y#^+o!D`>=O4NROm}SOBhM_!&pL z%&V?m^5+UAE;T(65Bvl-8lPJt4EAEZE5*Aq(|z#E845G zB(4JTUAa?5xpmD?lkq;(e4-Bv*Lev?dOls@Snbi^E=blyX95drsjhjT z)mzP8Q3eeHFU(a}_HrWVhWN=;r9kL7^>tOEC^YioO~w;^>Qj$u8)wd#eYovGm_L9Fn3+O@kn3oF8#*I^Szh{7asz zRaswzvo#(4@wSgtG&R?ifKjGVHJ-893ZusHziH`QU3#!xMG_?2N{()p3Ib{ev~PJN zVOQxTt%aY#=ldW8>|^LbM6&9YYJx;f#LNFOclj$!e4J#t&>rr`f(G1fXe)UkMKQJW zVf;l)-aRJX9r9#nO{05VVT^pqyh3t$ScVE4ZEG?c=y*<7YB#TtBeT=id*nRD4DI`? zg`jd7XMzc;ukB$P60{9eQK(9dh)#(+D5>6{Z|YY zktT{g@EuI5NV_YU8y(LxM3&??;{5)rY@Vq)_+O{ZGK(5_2N9vRPQL^jL)ma|^_|y? zWC8>;b#?`qzgk~$$u}F7$v|e`Mrt-PZRo@l_JVb1l!dSk$6-2zi=-@uGjEmqY#|rP z5cvsUnm%mo{OR*jXTH0hJL@D)+iM=;mdH2vEeEqqxI&i}Du7FSuUEe0A^2T?gfJZV-`7H zP>8JbHhDaMfA5Zi9d7`5ZEaOT6Bdb^Ke|7e%TU~EMR(V%2hF7oV~^vYDgf#h8)$8Q z*LE7*a9T({-olFOzi^QWy>wAH@+Z>MnKL6(b)x=0isVFc`USH3dA;;Hf2{ZDQLJq3 z+UckWe550f=E`F~v^wwJzWELE#|$KS`j_J`L0Qzjbh=yg`@{6X$&;c}DDitBK2Bmq z30LbDm8511audym5uc*Tg@=T$W8j=|^c}iIPMXOLg}W4%kT45?>2%>}Cn_P7&j7xos>BM$mck;~RjnE}~YOstcY^CiKj z8i?|4!G(X9t<3rv_Lve4e?K12t|?t2ePUkt3l>qIi=J1ny>|q_#a-chCFah$q_K2^ zsf2f>aTtI)cOBE*Ay<2Xug<(CBh7#Ej_$6@Z`Ogzq_>M#Kh~G|iEOi94e&+++dF3v zaUa)8UXsopUQT|6vn!Q&&+2nZdz)itiBOLNPFw~x z`k4-YQfG}9FGi4vH^i633TQ8O_g8_aMGKwj)+DfN+g-!`A~Z2_hFDaSFq)S`mph2Q zs>2EdPxR=dhA(#60r-NA%TM7myDwOPisHe8^q`|~Jo~9^$ed7;1(Jn;6|#45Dd$mh zT$SecuT#AM>f2(t~@rGK?)f^(5l#sr%04Wy`u5g7MpV<|ghcWC1y8h!4NZ}Ap2>(UWq?3S{ z6NgI=BZa~dZce5SfsL}Ld_TP*#Amg{hN~n5HP7R5K+b1-3NTYWbfUT;KW zuBZlF`T1g#Z;F7NiS_s=e*42W3 z89B@O0Po}ws$C}ZT7!5|+s0Q>_Ml|7a8Q#Sx){Wed|Mvu_i4vk3RcY|6+%$W`0E3J z%pZ@^x!yjdF)Qz5PpC&F!Tffy1QLsve8*0_k!fp9DtlTR-8;n!rm3PA^MdZP!Hvk6 zr!E?C3S<5;Bq7z&F>MdX%G5x(v4xbDM-Jf2VVpSG;?}N~NonsK@gF&UaWrZpr^skO zvdWE&G1kC|6#|-9ZB3?Zo!!(KpFXz&Vf~c34aA$G8?{QmUr|D2d4RFD`lchw73vjy z=1Lrb)2Oq`cwj$DyS39h$&G3E@UO9VsMQSzg40mF1X}VVM#&gzif0N}Jf>j+l?6nu zUuiQN0G(2QwDhMpo^94{afpr^tD$&mBHzmhR?T22yZcfXkJ%2BH7aWQmIUYUU5Vi& zkLXH<&g9tZbsY2`MV$;mMb_3q5mx_lrLhj@d*vfmp`t>+EEVHe(adt_UC!G0ZSj_CXpn#V*(}y^)hL;?$LPe@!f|7Mi;CE0(V0hh{PVC6LUhUpS~f*CU|xGg>NI#8n+hw`xpb+A$eR|IZdIJwU;`yx@!GA*z z5yZ^nk!Ml2&2t`>0qe11N$O2h_fDe|X7~4gS%EvnN>YZg$Q<-Wb0X1*wAJ*rm0bCHvLr6Fz@K1G-s>M-e5#$AN3e)xzxFFXEbyYh>>9Ea8V-w+Z~Z z|K~SfH}yym>2AKCIVKP|!j?g=t5W6(;rqm=HP+%Zn}q$GW6-;o`ora5R^*$xA{fu? zr>*lcdR~})Ph zkQvKV(=hTSlr~HMM5}pQ&r1+iIxTG5q=xVlU~bvC6|%gHBUk$zgBsMHtrwd0d+`&~ zog0SKe^SdX{e-HU9(JTEYsQrhJXCAvEGO^zG8<+M_KH7(Ch)2L_5ixW(!%7)Nmhe-jRXlDX*60`;J9#P#YF^X3c`uB;#$`EIOv@z^Nj z)vpjkVSJm%1Z=v-hPM`u?+DvYqLlKOt+xEoG@~BsQg5cGW%xY*SE3!&Jflc?dy&8f z&6x0B+ii+z%Pi<>u>;FinAIP7cR|y5Gy9BU@hv-{Vh!b3{1Hcm)>yRk#PcUgMTjjXrjZ`Rj{6wc1wH<>!Dfk?`OWmu#xh zF{zrgh!1OOpk>lpuGC^Z-Gt%`fB70=2=oUC<31n}Le;OJ>h-R3e!|xy10$Lm>{lR% zuHI>~X%qXB$+c{g*4Tz0C_&fezans^^GGC#ew11g)Bir?PdTxkzaI=a=9OAzSBsa2 ziPb8!w80FKLXI=6^(ExKD<{YTsz5XQnoxQ#i%9HziORIpKveLn!W*a|Vk1S`{wD!A z+9tO4x1l9vA9M!2g!ImhCJ4U4(@`%*rWPE=L~frYdXJ{q)z>N1Y)iZiJO6O5-|a~a zvjbYET)#6m7Q1z}WOX}lv>((D{!%;_%lkL%(xZS5dz@>P77eZ&nbEOu*;*x6xsDMm7t<8Lb*0koVXAaeAF z$VBI@qyaJ=OAw>6b;uzU$D)OdG77Xn#O&M0<^Wn(ZYbUF$GKWDm|eZ0jAhMA%n+Xd zX3s+;rn4mKVI$Yl=Vh4VpMaLg5aV;vU0c7}#dj(Jxxo{!Z&q~zk;sLS1`R$+F>$_F zjd-oO-x!|JyoW8;&Gzj4st|vMc7+lPfz@j6aTXeE_hIEa zwr)grwzlz?j{~XByy6PZ0^#JsL>nmxtx$g=z12c*eP<6TAv>aMsjceR+GL`E{(vxc zznql&S_Bz%Q+Ao?qUNrc^gAa@Hk}y%j^Vh^pH+tn2V&)b%6PE0>U_4w4fFnT*2#CU zbD_=XH?Ak~{bJgX+JyKnASjr{3fHxpJn3f}K1c`GMX2>u{$k!s>dOWId7%$RV62f) zS&H2KASCel#gpQ5apdSy-x2=1_OGV~ycA~xzl*CYwbghRo9&?~nOny7SBo7Wu_3&W zm5d_UawP2>5ygWGkVQy%AT}BZ(sZld?!32R=Zyr9cEAW~sXkz~k-H2*E*;ZRWrygQ zxWW-_KyYm0@0Gjjq9YmQ9Lv5n*W2`ZMTXFUs@7LQG+S-Dz%L|`yvGarerS?geV(#+ zPtB*Mcz|mHFa|2Yu2VydIx)gwMT0Pduch<#GWUI+ z1A|mCs$j!;hb^Qs#w-&ZE+zHS4mkMm+X?}P#O>-QWoZUPu06?6eUAvO_c<_|1cZ+5 z6kQ*=p@_D-{33~qE#R%=fc@s|tXCtUuaIub5aNtA(@15)*kQ?9vtw+Yb)3|*(s+3= zdbG?0jQ_(698L8}!~7PMey!}or{*Bxapn6;VEs0EKPU7wJoDvslo;|agDbyf9{Eul zk{ZXJ_19eX39>t3H3?-}pTu2>>B#ygFXwz zsZc($$K+OxFXB6HWiK`f7#xo2tZWoaie>sbl`K0+s2&*@e_F2Jh7S%f3llV~>OgdH z(sO!{`5_hrReIMqrF{F3ZqY-NcR)9Nju7*VQC1awHrhv4WDbqR1}TvFx)nWFGD=ap zi(4{E!ysb6X_()3HevDHb8Gs9)kp_vBdj~n(8v(D}vQyH6{m;4~7X-dtZ zF101mP%UnSPRl>yeWlcuhLoST4F6llJ@rT4hTu*P9-PU)dA(2V?aGglF&}%0h&Uz1 z#*G@FA!q=Xh~fjuSuB!zvYc)-@YjF(i0r!#>%8x+px|+WHbiL((CaB&r>93CR$+Jys?Eephv{j29TxE@v3#Dj$`;1)QZWsbZnF zv?4>`0N_5+{NFFKs!0y5UC~-$>B50l2oIV7)L1c$_T8F5M?~j!8kH<_(SN7~df~9Z z@^e-=@&4uDj`-5o8;T5luA~6}KLEh@K-Sx(wPTj6g5U33SIMUNC4nH}#S!I%D#4D- z2!7e*JgSpyg|Y;?$j=(4OLg;Wshi7vhj~z~{_=u5JUe!L-g*@7;;UK_QyS1VHstoD zP9r~NM4kaMzV9CA47~yoX#i&Zd2A;MXY0I*STRF}UT!Wnw$HQ~ zW4NXVS}{(go+FUfr-0^&dTMBHt>NFpMSC2lVK@hf%jjri$f1^c z_UFIeL(0%-*6>bAFRvIFY*rT>Wyga-XkPt_Zt1WlUP%pU|0r~;4;-%cgMV+jWOI8I zqmzRwG1Inz<~xbmUCXb_kdvG{j4iX zNl>3beiagCipz`J#e3V9{5JZ0O+O6$c#3lMYTPf{%f6Cp5La2km5LZIlpg$p>UD( zuV;#a>r8v`R4&^fdxm9Q+dU0MlpxAIW8TaOJQVQ`o!&vgU`t}KGI3`We60*#EOk`G zicW{oj?-K__(RaNp{uKRL{TI_)g1gK>WkI0T<7jrp2J`ED#z(DTP^E+KLbhm&& z_Irb}_-?c|@}F`{BWQX9@d0C>W<`Jyd)-(c_wb2j5)hp`DwmI>NV;W_&9b=GF{Pg( z@vKr&j&1Ado0y9kwJuD09sOl9HbHQoU^b*L@C<}gp(G+UERV|mqX>jjOz$d(5fl%l zB>11zL=Z8n^O*@2Kjy05XGe>#QmnyB&F6j}=ES#f92@z;ULvnr(W5~m)bI*Hs(#nX<>kO6_>aFjgs5#l_#wq2Npc+XpD}So3=v1b zmvWGw+o|yuBsnqfg#w`dJ{Z<+6qrbyVFBTU(SCs8pB!~L7J5mGf>}(Z&<+~4VZomK zG0Z99V@aNIo(}l68D9#&(AV(spqj8);Q0w;$jTh|0~bf0UkW2nWe8#2LBi-f@r5R( z8m0&-<5`Lex(_EL?l38ixMeL#PA~U0gewOoln*e>nEDo=IFrQh@vrH(pr>@JBwMb! z)@LImBifsa78)T1-EV;Z8)23Z`>M*KM-u9P6g zN1`{R74qTpAlie3ZDiFETPgWk|_y)SU!PN>pc9Ma!^|4nu59QeZ$3Pn_%so zoOMz^=RJ?vdC&5qTIi>Ac0P7Cf2)+KA$}VDbyb%j)}7`(ke_{mSgm*vKl4+lz>6HB zZ_dJ+#TH>ixpdG-Ua%rnO1Ho`g_XlyS<(~|-`Pc3S%J}DgX%T#9Zjm^WVX>v!Y3Sr>_9k%`ST4dMZ;O+!;!i&`PSmrTLs2^UC7DA0#|0;e@ zi>rk4hi&Z~IT*}(;5^WBr>$CA+cmsn$%bllpk}Qoh{TCA(Eq?Picz$QS7rzB*>?vbzMnsK&FM&i)o>D$;AaBwIGu=kM+p7)+KtkdQu*wQQS%li|vNv43x*$_0%~ zclso1Kb5(!^W013nif*|-WXCKw!(ACuCd{Ys4Y8MC@sVz7iE35x>=4bS$uH_Hxq3e zf(9Z}*_5lPG-~QRrLuZGYo)*;L=8>~9$-^-2^w?ava*cMIO>%n)bV|9}MsgRzK zf34M3!_dH8a&&f%bW_ylEU!^Uz;8*l1kLlkDVyich;I%wjZU;6&DtOzV;A{sR220z-m-G6#ON^{|Zf zzy59wL|+n!5Jksl;?Da41=Ip06Hy$2Zf@>`fDGQt-=EpK9vSR2yt+ale2ppNn2_(I zCq$b5Nu#0?0ZlgRdY?0BGvnTu4f8o-jC%%*TIQbHMiKzVINkwnV4x=5F-Gl0WuQHU zfCbYl%~$l~N@8Fceqi|jAjXTBByMU+2`Sf!2qMAlVT6G~f$(6@&TUYVHnFiZMI50# zx&{`a-20VFRA0aaNu+>863V^`c0(SH`TrubjtyORQ@$k2Q`ZDqmGYy!e_8M$_uvlS z@OpntQjf`;DwS7ZL0shSE;ll0AQGRDNE}rQ%ptZvh~u ztlnuVB{k?#fl(*LvnF0;V!+8Ri98WDtL(2GCWLY! zI;>=CdNoiGx)TgY1MeWpHjXs9+VW6BAqs*v)smq|cL)bQ$R79~o5J?N763$_D@~mf z(eL`?<#zoPP4aj879^_qmILC#Lv(i6U^*DlK~`T&{mPaKXCqO;+Hzt#8ftLh>%amm zk%b0CcQm2(LNC`GUsgcg z`6zpZf?gnnUVT+%%pk^tmC2ZL;su#ckN%BipdB7#{#xIZJggXNK0S`OgSYQ2oozRi z6G)DXdoq^uU4T{(-;CZmEYobS^)01+y-t^{HA=*m%g|tK2cg#hCK*GJKDgSb z8cjrn#ReBRzHFer0csD&wbJrQgG~rF{RWHzOIM(9P!uoC7uY}yJM6WoUHsZ^bZc@HCvH26S(s}CdQgkZ%Ma;oi$<8@&kEJHB{{o&zYuXVF44$ zEvs5AkhcFA%srgt@H2j7Fo6*z0O{Mnde57Xa24D1d=*=;k#8+9CMqCrS5zYeNONht z*5+R2R*P`0pw|K$h;N>|czfo=RqGEee}3CpRWodAbKH%+!6V4KBYB zz#tBre6)#sTcw|T{tJXMwaD(O(->&Ta?(vA@z`c>ut-|!4iH0o;olimi1ZtNLJVozx0 z9QEtJ;U%-OBC_wtb@eqDr+>R?IVkWppHqY~uraZ%wH%nn5MPJuBs+3Q=K<~0Tv2Z_ zVs?)ICqHHM|GGf4bKH-+IB4ReIF#W00~e?}@J2~n9D^F5C`5vhrb<7f09tU)aUi&Z zXOP(rm>eP-Lct4Zc4V}puE5*l>sznst!o{7$`hY?^Y5A5QZ3!&_Z~KaJ!0e zRxwb)*BWFta{sc#;d7mKNq$-HXekh4-$En(%}Q{@_EZ|)?@l4=QPVK+rTq`itaMUL z*RLfY%DVYc-C|tov{w=7)BSRu`l~UDo3dzyhQZeheI=E#8|S6JVN63FjiV*}DC~4b zq|&yL;FxU6xBv-Q43Wjob9_^L zN~SEQa*`2~DX>g0qdSd)+d!l2iwXZrB30!r_YJLyQ|WLApAcH`7arUaLw}?{V`yT_ zL_Mtw-DAtdnm}^EP!7k^h-3q2@e*V56O!y*gvBln^!l1kT5wcL%%7Y9Z%585;=i6z z#l6+)Q+!}b*pGaM0pt~%|H6cvzt#8Y35C$mP?RSu{%@HsBd&B^Q7$?I-S@SMHZ%1; zRYH>3Zty=M&k)*XpT48(`LB~ri(nZH#dm6-OC3P7`}|Y8Q2YQXsMF!5f%~HN3H`}s z{eqO~HBzt+G*Mq2ZgnV3Z}XdnNx>HPY9b720&)gKTr*U?SN5lwLl+U=9`;XjeCgn5gfAlCL=9zs z_?2QijcT_)U2A0mNoor)Z6=9s4O+amSwi(WQd)~Ij4oT*YB1eZhEJ$g3Tv2 z!k4@Teg)`aD!jAU7k?~w)7@lR(?K)@S{09Q6qr0uMJm)8%U{fvPxC1m_>bN^F$9@* zk(By*R5Dk>qJAt-MXhMtB1(&Cs$T==2ZGM22gzP>AP^^ogk^Q{aa zkYW(cs>Lo}5voHp-{>5V%yf5y$hKqs!B|EkxOTsqvgBRzAY5BZa%E`7od2O&)KNGbON0NrYCh zUCm!bE9G2Y(~cdxwxUqf<4!h*8f7=X0(kzKy_IhRLO>f1thq#D;0`H@U;JDK6j*th zNVt*dqiBUboPAXVvMlYdTRvm4dm`N;s_3Nfj26>xwAR(o?Q74Ry7x6i>2hV=^_CbC z)`w2gT6z<0g)~3}?VdHQ*12d!SY<}sL;4E{eOddu$evZOgV5_xp7}Z=!kLkzE^o+X zDpFEd>+HbhMLX9_=hBT)0fn-qvN)(*j$i-SBk4T2Jp)o5FrumurF#q&&wc^)|G(qP zHdlpyBu8|#lW7QUNMRLy3LNmk-{Fv@s5bsQ5vvmQ2{_;o8>OJ`sUqGgm*Jv|>vC~c zb0>bR-}n;_jJF`)aBLmP%)8=jJMyHov=sle={VGto|hf)Sz5!Z6TliKY)FsNio^9! z&)Uld-RQ(O_T_(%U2Oc3(_**0p=%5ZAAx4^Rfh}^B`bu(k*@UX0}7?fhBG_1iJi0H zkFWswdo66S94CW-T2JY;yZ;ce&~Lcd&r)Sxy0CpUWMjccf$q`I6HegmoffL(vEep2 zrv(K%T*|BLG>*;=TT`WBXH+a#?YV2H6(zg4I+p(EqF_|1$3sBXIGSnh+?v(9;VDh% zY(eD{=NLk1(90W(vv1YI4*KaPk){9z94UlV%FxOvP(0gQyQ8PI+k|emB({uf9Y`2p z-yZ6)%mLS7Y8^K;B=#rnL13n}Wj(4BghKZT{e)z3LDEC%SA&-gyJRX5;M~Cho1o#E z`|}2Rl+v3V+!Cpx(U6W(2)+SG_o zgb%3%qy~q~KY_TF1$K-g(Y%);JxZAmmO+xgt^tlIy4)ib$8h*>>Vd&<`iK!851D@G z`qOhJ_n>S0qC8jq%?f;D;hayx!HMD#d#n8bsPe^5d2JjRj8928o%;?m=_Gz3nIGd0 z&-4ND`T2$1ZQu3jp+%3}08qHzfC_?0B+tIcv`Cc}RW)rV-54hwVouQHAFVG-TO>hL z>(~nM{}XzTpbQfSG>j}W?ckb?uI zQjU2YD6uNPINc(TA>9`S(;5ggLb|G~c$U$z;(l<$!WF!x;#9sEV+27*C z>sqXy=A&PL$Qt=$6upi)f~pVGzeC`+6Om{(+`B4oJ-Ed81kF&14UqBA#E};dVA;gn zdu7yztMsmF#}}V-Qv&sY^A))x>|8iyTS9)_7#eLP2I~uJGMK7>8NWqwH>1@Zg3lqJ z*>{Zgk=k?22S=axCa?ae%1AphB8OYPB~|0DzD5wHaE12hbZOkc9jWn)=s3TALUgGo z&<3=as9Xydy^6-U{k^NAtbQjtxw+=^8 z`4+WtszE`#{zePPNXd9sY)QH2xR+57F?Ui$v}w+DuPA1?{}uQFS9<$p69SwZe>`8r zvsc_t6??Avbyr4*vS3n!)ix+;O++W3!tnO26@t91&>G^^DN4hNUi*31XCp38HLLLX32u6 zU`*TjRn=<<8e*)_JZ6DJTh*lkTP?L}lB8%`k*cE#4A^LI4z0zM1LoHPW0v~-&Tl%L z)P*Gho7WGiFOQBn#yvuzhBep&N^5|Nm9Qt$pv?J^gNktDOhx&2d76i`lN;m8=5x*2 z0qI9~k^A%g>^nmfW$Y_6$)2@9IYk>HJtq-YbUB+UkE}kFWWQu~p+)Cm=& z*$_GwdndLC2oaU80(QNYLOAsFrRQ;X{doW?#zkk_i-#koZ?R@u&wJEWyl>kzLMCFp z3-$%YWPXIQdLXclkyY+qRnsu$mX1XYROl9bmoEFpQDL-aT*)5dm=baS>Y^Ubh%wJO zO6y$I5|&TUbWdNngZon3fyK7?oHJW0ViQ&YkDUxVeDzw&g0PNd(%3Y#HI)>*!pJZA zpE)M*V9n{26d)8DZ?%=lWeU57=cBYmS>H5Nzskm+IEy_1+IF)^m~9QCT>hxeJZUKS z$~mAFzoT-M6`i5@kCCw!eSii=?1UpVSD!~bi}(5uj1lBzXMB-g*Dky%;y2%Z=bb)8 z(ytHNtT8}xwKnYmK((8?JIn;fMi?o1XJlMY$D%>MgaU(ooiKG2u2+0?|9jCy>=H3m znx>K+mUx(CxE{dWfnNq7=5~vES85NUcHgn2Z6XS-VN{De3bqgEc^oHbteubq85b1M zqB%03WZv+|VR*r+RLWp3Z6pyx+yw3&*%14FW$LF7oTEF##~#^XwP%eFU2^BkJsDmH zfCJ2pJCFG)d3nEmoJ1B{804Ar%%rBy&dyY4nmoak}3)z z&WEK8(*8+%J9dzQ1OoI@@7NPnTiwj&q2*J4*v!m5^B%kb2Ni;2r7{Cor!2=ot%gmm zD!-kCx7B~_(P*5OtDdXf`9uI5JVC!}7VWz{Ia&hH@?HEa{ z=vXlWhQ&b`B--Csg*2q2x@)aBS{HUhkCK6GvncsHkviZm0I>+t&Si}UCIjRA-`+9R zkD(6kq0^USfL%9X8tOwktoTo_4o_eQ1!j|iD87hdvSP5}@5RHUK>iP;n{jpuW>O=f`{CeUC9()U+fx~*-mEg_;F;O7 z6~Q4Ljpq4fER@(^?D2Bu%uo1hS7xUwc31m7BZ%^Coz5i)DNYBt3^zrR(3Cv)P~A9O z=mKnI^F50jfUSI46xB{rXUKv(u9ueEE~Wj(q)DGyra>5LxdHJ@a4G1l%kP+6RJfB@Sl$^IO*7VFp2>b?j#snVb>8}ulFdLAec~iqk z`UsAoL-WLW^mq}a@h7q;$iGqEMe#&)mP!~ARolWF`Hm}gPHtOhwS+dNKh2#V-gr>_ zp}~RRj!l-XQC()-u+`qDVti(`39FGfV_Vtqo5rYl%NF3f%IQRIP`3cuK!Ks_HB=D5 zE3**-{`~O?rSRU9^3_%FEU4pw??#wB6$by4=K!iLV|=-~#MV_`@I6w$4kBB{qyQ^@ zkozSOJ2Cv50N**i2(W;H*HLZfb2dS|Th^&Yik5$YjiMP>x>kl3)91N^CLlZr2V=&&w7tbL= z>Q8lrXb=e>X>3uuhiDi}(~g?sxWQZb=pLsW{MIQK$b-ar<}ycAOl3Twd|tthX4Sx^ zGIdPDoP~_o3e~IGr1T;V4Ob3k95$#D&ihptz@+ZRbg>>+yl$XsQ=F0wAovD0g}3nq zB|AaOZQSEzJ8Be7!SO1VV}!EGBbB8Jhdfw~d~dj83a#lVGS$(LMP^esM-?kQC4@`o zvK_V=8&fMSFCtV3khh|WPO)K(-}#2#=V*)YSM$ySRk$LcRb2^j$#8+Ke)eV(^Jc|7 zU4Kgd1rgLlO$=2`itfdC&jIl!MUJGRAqu}6QME73EiUb|_7J15dJX6)%?8auB*h=; z_GdW}-yg|3k5R<>qZBB^?mu9b=vM>vRIn5p3y~;WeIKY0H&wPP9F-YF^%gBt5NW)V zR;zjrZ1D}T^dDOt#aY2Rvj=k{tntJaLM_qYY+aCwOfzxsBS+?rB3Jy5-FFJ(b6PuIm^XLJl0?3RA_h-*g$pO^ume zfX>2@ZBxi%mS**ZKs^01&)m=MZco7MtnO5}rq>Yuedy@tT|a}KyhwhzYKIO9^3n9X z!Kv?TrL0tVtQY$UE>faeoMuW0FZyJ5Pzw@!^+r4dT%=+K1(u<-QF)ay1w#C_2z2kb zwz|2oKo03EK7Rk4_633cz}D6T0jO(w?26YN_sPi4rbwSxNS@Sk7FJl!IYDpnJrteb zOcP&WiL;GF+T+cviJAr?@a&kTK+9wjEJV}PC{VV5K0L5uK^w@W<)xc6^TPAP}y&y*P z$J_eRr;P))`z&+7yBfklhPIg~|KqdN5W^DGB2#Vm_$~PDfzp$1&GZ{y{S$cp|FA<~ zGS~K#j8Zgj8ka_t`-{VVv9^h>ua=d$Fzy)B%_~^vZcf$C)1ejSCNYYdv+dr1v5#)* z*S{nW(=K0~P=_*U5uJ*7w->0zQIjhmP zDO`7v4yR>{J?0V95>Bp{!-3Lu!1TuaaCIgJ8`Ah2ToR>d-{ePe=rqEkDJ+2VL&SJ_ z&9=e;Oo+eE)ezOMojsmr*#`Nb-_twZEEf=E@71aC4IUJ+Zk#@y4<`z^}Jd5~uWku2}*(QJ=3?V^~x=N}WQK41HN|hXvK-}4nMkl$_d)I+c z`Gc~i+a~>uZfDx@?q5F$A_m)|pbI%}#z-gG9{UqSEMxM}Kah-FrSQlJ>zwo8a^1H* z3=e<`EhctQhO1w-^O=R~w~ukaNbBl}h877(j-yTd=wjIucmE!&7LORD7LW#rn8{nIiGi4mpA)Uy17=fEgL#0g^HDWx^ z39;EeHYG1|DU)$WKn?8Qf;e4DK|(lW%?lnejie@~bH$dT3HuZ^3*aVwrIzg+qBKVx z$B>+7%S0q5jCU|6qDPs`*V{y5^RUdir5XS;9chrmd*XCJE`b3ZkHK|55;N;PswA@T z=T@3!iSor$%f57WMCq$_Q&i@%b)Q#y6x%^w&ujb4y(=x zK+MYBW=FghRjw??F6-_vmqBMJJ5WJ7e*lzmW;=A?P!g7yU$3>Fx zC6;7XEjjWZUQ#g>|0gdJ_os3wKRps!IcA|ZzC(efyzsKRc;8QdWlD+HY?KT-kZRx} zy4A5JDW%5djM$kW=`P59?Sfe2aWT@^M`s#qTK-`4%IHEJc6Q%lKiLZ5X?N7f9)s$N z+H#+iJpOI<)p6Z}9eO?cF@NfxM%fMM#uHv_j_xT3{|aRZp>~B$`fllO<3YoIG8{T5psiN==Ai?XCXojWT(CQyF_X25=(c-1kb!Sz(HIC#DxN^?6 z14uHP`5thfctFt;ANzJY&nYsW3Ivjh;#;ZJ)lfx)#~UFF07L=WcrmK*)2kW(FKs8G zn+5QvSc~+5;kTTAIg`x|1@!W$Jb@sY-Sp@R=|uMpMyVEp9AiFDNYm^KQ{8Bl_x+n) z*Xb{#(mBQc!R*vY;$g5v<^kPOO+Kp}L2-h z%S5)^s>#}6IUCDnmcx861BZ7EZ~eavqiaUT$aPvj_b}Mu0DbAz=rf@~0nL&vE2F_k z`s1w=Qk*T(Q!Nn6v$lO6qKpxa(qkj>*vjqeLSRW%2`!qH=PXZOK@ii}s#+v9HJD3H zjnzoC5)E6nPDr`W;52|(kts-<# zfdX{w1@n=qz_I-(6t_ShS*{(3k?ju!AHKdr5I3&?KeL5O#yLk=;qIdD#hio=XvZg; z#aA!Z)DC_iiya^-=sTBZO0!o0xS2;|x)~8~2=Wz(arDoq_h-k`UI0(~UJuGmpc#t| zhnnDLfc%NcepbVZiG^kN*R1D)-}3OTA$n`5h3G^J?dtW9f*W$gdRjC^zu2LY=SF+n zsrw2n2RuC*<{fYBugz2IR{XK;}Y471*WmKO^Rc+ zQePFStir;)e_hx79nBmItrwgXML~+8$SOuU$tp0aAm!9|nS+UmCWm4p<*cn7$)EXQ z-6E1qI?<-=ct5=qnRAigF7p6)RBir0Rsa89|K5_bguo^$Rsq7zK+e0AT##YB-{j{0 z@KV7;#_FyI=<^4BCw4-99?43(FK_S z8{mdyb!CUpV%!cc+FhnI-bH*v;7b?WJDuF&AL9$A=z*gNE4rgxn;`y;R9mjMVmJn- z`qk_wK|{yC37U_o7!oz?w$MM&VEh|h=neypYNGS-J!9 z#9rnBQxY-7Lh_MBQjHlv-+4zS~95Wm=BW+roLPFiaT+1UT~g_~3r(Kk^b#dDW9Zs*kA(}xnY zIMZ}7(A~QfD^hN(FrTy!1+=u)1Uj6}UyIKH#tkJ7egTLeRvmN)iZ?Bx1gklx8(suk z15Pvz!Tw-Ugj>R2cIh}fD@%ecNF74CK220LAs;A3S=%>P*W!yahA?!}ynJCtt~3|! z6-c&V)_7i4_({ChIn0@0qg#%jD{cd)Z*E?1XN2E59|VsjAevw!X&Q4BO5dE&B4O(V zVBJSX6Yb(@zjmd~5XWlU9yM7Q<$}5Dw2*`>!3-BfhU)!Td6Zn=G8(HOGGI}CIuRw2 z^2QkDsHxhkMYn$z#__bdRmK3j5irFwtC)vCP3~FHWNy^%mOf|0?R5L~@~Sd(3hsV~ zptOKm&bP-}=&S&$M!DjRYQw-Bl>0^tvY>)VkCc@wHp)=4r;cy8*1Tup>P?{E>ib7% zj+Glt*th2~=HRm@LVG1DG75d}+m^Djsv&@8)W$-m@HCx!6hXx@0cdwW9j!P#Jt80- z>jzD;Rt3;B%Dijtnq5ZHoX`BW<_xIA6MfK-P6(n{0IrjL3`K)|k`gQF2tGHNdGb)5 zoBK*N^BXCXVaQ*!634#M?oEDDL0rjq>QW0;NI%yKz>PalhO{N35puX0APiCy{$2Zj zuI2tH3pT(wj#^rbeqcjwsc^6uAbR@_KiJ@$hqZ@+nu}yr2-n!JWO`sm5SR;;>(G^mxCvZ+yl_x*+P7zE}9p0*|t|P1gVe zhE&Jqx6fNP@e_)j;`_@jk&0{{>Q2y`1X_%%2(Ydrfd_2AGBHet2_B9o(wjdi^;*%> zwHqRhDoDuaJs(#M3qy@0H#_wP+)X3HY|HU%k#+uI<PV$v4`ehfym48D5JTC$|YnGpKEw>{Z<;Ia`YK(sJ>b7vOBUQY(Q_jK_KVw zuHKv$fB*o9O_cSiuuhD*9I4J2ks~Wnf+iQpkTe>8fp7dP+$%7ouWEF%M4VIItC$>U zr;2rlA1#_9Or^U4iN}5aa(VM!N{xe@fh%pvj?xa?MS& z1g1s)(Why83IOndv}4NeS7z}}lR3xnaN5GN%e$gTLNZTlx|8^_cC;qRzgnk6>@e)4 zd-TjsGif$)gohghEFx9v6Wb-K4l0jEIUUTjQksdBk`ZE6*n}#X)@sY~-W#S+Xx94o z9r4KsG{{YfRlq}ws#_d7gR&z=+(J|@)ofm zDP{bzXg{L(M_PgBGeuGp7$seVhn(U#{SQlPQVw_OSM<5|_B?Cbeb@sUZoY9cMfIcm zNQ{w@XkLlRDks$Or5KvY72P zL!F+j5HY7b+O0?9jt8q*3i&fGiwdR-;-Up$W+--*{^b4K!KkLSIxtXN>%<@UMRMX7 z%AFz738F<(AuW_j8v7Qa0}(e0&x-%tTjYw$(k#~n^qgcpPlSK3(0!%mH6#!Csf%C`& zCDe5D!ia-ou&wKg_%m{u$>4JMMCQjDF|YbCeO|gM;`x(dfB=`1YLfo;tedyi$SOeV zM%8>FRA5M8;imdThnN%wmqIl2*N5k3WP3x9BhL4+Y5(VV04qx*&8x-bFOly!)4jh= zNy%!KAm0bf8qAj-842s`ijAOWsO1uKy z8b(uFdZ0IN&DY332>10D!WsAWJv) zd4L+>QOivr7K(M304#6Hb5?Lw7ax-yH=!+%_#rn0+f70@!0ZC4>d_Y0n!+HFX{|=V zZH?$x=Bx$A1ogTGjc!Ysus6vn32nE`qq)O~OrB^bEHXpCOeSmbWK-Tg&`*7UguDF1 zQ{gq`i{3%Uo(B?oy<&N&t)q4Yt7u2Uh+qH?6zxV5(?3xvZo5SC@;k+LNsLfGZX~KE z>g9p_p6Q_n!j(!5U`e<&HY+!pDTmvhCx2QGDYF-l+*#ZY>Xkff_Rb5^Y5r1ty&b0W zoD}D@xl*(G*^0IqShg{TKttMo9^*C3DFJdJOUAf#^o{R8*Bg}4I^AY3FL}I$-gS>N zuxmqMNm+HZNc3PKQL<99^rR&F@zU$6De)*X^$-lH9~t9fqpN3^MrwQxY<*N>d8zkt ztScV&VzEp8*&hOXL^_<>RE--nDd!kM@c$Gw>!G)#J~9`90!bavWGXyB@3>eD52f1X zftLoIJ5F3_uQjNFBQ# zi^5I}#r&cEv}n_KT|6?3bcdEs0#+0WTyw~80mP%Cd-S%nIwf>ZkzZs)!b~P)EVG-k z+l@%P$lL`qhE)d~O9AA6kM=6@m@kOP~Vy&94{DAks zhQ7N8+^^(7bkkE&FXyg4O3i)NuQ>nZb7R1Dr3jr`@yjsGvY4 z?CZ*5&mRZ*hRAT4k&>)8i@g}Di-A12%K}B(GorC>ZCnrmGA-luP1n94HdMnX#dlE| zUWJ`LUK6{H_d>Q%CHHglyy5kb;io6sVb-l4WhBn?Gl7Y zBMHEWUnO2?>Mk(*QY<08KtG3JW@Ea}4oEoWac^PN&-7VxY?p%Nr9`hZLq)XmcoN@q zX%1g{rsl47x|?>5WWLDwTqTa{$`q*qWefVr0J8m1os{yiUPQSNd9EN}e=yqtZOk!Fehxcy3Z ziOJTQ@)I_Q(Rx`OP)lk1F9k}8S|f>X_Z#@U=5cCVCxRwFnnXR0CM8<~5~x6{+L=N- zp`r6cU8T>R?*DGk8&Av~$3f27G>qAymC~qODt4fBR5bcV!D9*+*K;;GdLW5t5-1OscrfK-Y;Oej3r>?TTFW)t17Tw4n=pcr67 zU2eDgZP`kT4v(v+iaRhy^v&YnXjLVvNjjJu-+tiaLqEi#y`20e9M&LKvU(I)=sOuD zyj@}rJjLr6B=nJP>VE6lX8`tdyO;&UzQjp%%FWS-Hk|Z7C$tl@Fx6?IQ4VX<%Shcxq?KILzi?3QT$#?1p$^d^b~ z&*UjKt03@QCql8N5z9g9J_PS=iUjOf4_)&``J4F#NfdSImApR zMZQl&gYV0(=?lLWMeGB0>61M##-jLCmtBAUN%tS%0Vzo%-G)wdQ;Pus8~R*6?ldjF z-@xqv;!TcYk??eE^ZU2V>bOR`&==ZP1RsinD1=1Eqgx=Dx22I@;tA^7dx+*u$*XEY zpTyg-u%;F7N{iAP#-h4dzhvnR;e^L~2Nfz+9@Wl(;n25Hlrwng%bzS`L`NISXKzz2 z_!(L>h}@M~r@2^KP?5r#6>TjOB@KzUf2Cxs`)E&-r=%VUaxDKLIVDk-kTGn`dZF|V z?sOEnH0maZ`bC0C1p&k0hcKtR0>-Pi6pISYlp2$gq#d6!%g0#E<-i6Swey=8bm_r- zi#BEHWCH$|v*BSDr2+@5GZk_@R&OPWYjscTnZR=xihDR&{-HiB0Hynh9@188;QTub zx)t{zOLMsrbQO#v#c2~#d;rf(`id&2VL>65>i%bvzA8Es2s4r&XmN9EG>#u3j)>>6 zNW#qQ#4V@wIQwjy=P^)rlMKxmC_3ES{MxHxbK-4@z(4_J4ZwkMFhj}ZxfpPGm~C>G z0u=m3>v?T{-6qc%mHTiJ##8!16UY>mdDsUtm6mMV44J{GujTkZgMY$N*Yfbtvnooxi6SdO&9L!65np<_lW*m4$f#r%z|M5AD zki(-dBXDdfe_rqh0Uso(u%uv>oT_ru!3idHENKOFYS-*skbuk@bSL z-9@W|nasaFm33`P1i{xXGGxbfF$Y8?SF!=JVQq7vKk~9wOI6noeUg5R39i<_T4%J= zgBUx=|IP?h4QZI82FLXtesh$!{w0QCT++mpW7|Gkspg2jgROjBpkddl)q#gN38asPe;DQy_S$2iSIaOqr<&x;#T;{ezGGI%y-D3h zh31@TWR{b?x{JGs3uAhY#HX?NnxeyzzCU13sXe+Iue zv7jK27g7uClc7kWp*>ce?6EMUu}T;cmu?fT1R%LDSF2qOT?6L>H7^_o9;ppsS}p3h zj10NoQP`=)u|s{=lV!6IG@%+Tjq+jGfA3GCUeYMJ&GCyWVu=aqVjzqtR2Ow}8rU#a zrV#V);KX|>eX@=&whG&#B8@Bjq_~u^lmP+;9F3v;C(?0p0jhiji#1;YW~{__%abhq z4b_{woGGN1IvhttG$i~e!kfZ(u>Ax;v^Wx3XBqo!1A-9+l)??i!#ib6AR_hJ)5tb_ z>m>oMs>mz(sRNMY!F#0^$8hn7|3bBQoMMmqM_B8kCF1TjjHV9rB*ZzM%&6< zFz_C~X}r6wff5UL=mOpBTN|f0atgl^TJ_(&F5t$Z1#gEJHV?~E3uBLdyXJ|$2)-|E>a}c~vO0iQ zx3sulo&ChU1@=BxrGfSWdGUF4ro1BCKHl(NYqM%Frf&bkN!_L5IX z2A0ua$j<3)uI=fS(xOvH13oX%#Mf+1p1=VAKLEh<`Xp@vyv9cRxVEzfG+GhLMyY9% zASX;(*jh~s@B#UT%@iI6WE0H3uh-(L?ljA6UiTaM%u(^%t1v}_wVL999C(?^A9zD1 zL{x4Z51;JW@5`J`Bv9sMUGQqoaxQ>k|o4dqsTn;6JS!edVGhK}Wk@FPo_Uo~XJ zMa|Zz`FkS60V$~b?yKqU1S$N%Hpgh+%yr*PYn1aMBs_(<&kqAVy)BV+U_jn)XUfOL zGeVN!60<4~Q-Xzn06fV>1Klv~T!t!vOQWWK5yao|c9@9pV3_8XG=a z7!#zZQe?9w+r+_^IfpG?Tqg~?eUH!d4Sa_juNkB~5O?{o;4Msl5_9;PVuuWWRDBTW z9v>-4J$g|G9&WOSG+liRPN)v-a!>T6IMYrR9^cRG!pzX2OZ6BqULB^#=>jvZD%Tfg zI4s~R#tR6>nPvlS091O=?7)0^F1{1js{Z(*4tR?R*eL6cw-sjNGi}cxBjcE#%$egU z;x|e!S1^_M%peGIC4#Dq*Z;-zA(5Y2n4EBkaNun!Y=>ADKsxsYHs$`V&)W>r|C6Q* z6}LIKAFiH@&|}$69HP2C19+Eke$E6=o6kWm_aF!?HBhc=nWjW7`SE)~rk)U_`@rDW zl#@ZbE`5CJ<0elAf{_lF;UFS#XOF}e?w2-0)X0#auAt#`&xV03+~1|J?MorZ@^#^# zV=cYsI}8-$vwzo==bhf{&M2NH8V~soMe5EUy2QZz!u}DLT79RLmS4UkWU@-4Rh(R$ zC>E51jc5Jt+;y5@mxn?L%TB`(M}@pNenzXieq)xzTg8S`tLiZeKUEYrlr&c@UJl0z zB8MSKM4Vv)-k=aQxFrfgp76fTvXG8J7s^6OcW{7UXgA(s>hMUY$GPtBAvm-C+(n;s z82eeqh&HY+#HEINk9FBvOjNc;ueOj&viVfi&bwF}(icQOLHLQA_8DV%vlbSmP#P}G zMM9WqHD}bvpK$M|KWA#YX=T6GNia8u)E@paMA1Dl7&yZ>hLm2-$~_ekRN`k*3CQR# z&ygqCRoYQqNvlMl zk%~DHL6ZnXCI`^Wi(*NkLqM<@4Y|c*&N(}uiWYEQ)$a?kcuEkh52s|Wp%1$nXC5J< zQYctoJl^BIO1l16W;rsGubqPxrtI#XWG}#>CD%=@^OxRfq}+Xzk6%Rh1KJ5}5Xu^b z>AyKZor~PD@c5hk<5=9BJluQTXFshoK@=Y$S4#@QOU?Q6=JKI!X8&OFo(dGT`f_$= z^gdU#OeOC+ZDM8UnOz}0@YEr%3?5Hx+g#27B~Y=spA=N6w<~u!DWG_dcKSOrVm{zi zffRekGdHh3Zt1-u12tbXHXMrE!;8gTX^Q&|7TOg9cRc^+Bb?@2f2e4bNj^a zh8v4FmZ90#TU6I~&NdM(7d4TDl0)t_>_I0KC<)>t+pHt@|1P$RM>|Qw=Hl|8tQ*a# zz<=U;WHnLEwdR*4R)I>N8a@B|n$J8gpjJh8??_&=&C9z&9p!Fw`ZsDgx^sc!W2Wjj zJqVZT)xjx3p>iCoLDqFvnk8)V5VgQkkeRZaec0dSZD_p&9jgH>&c>JH6_ZRb>hu#wxVW(C&W>RB3zdsepiyh z5KvUF%jtw-%ojff2R*4eKySLs?k7EAqZ_ET@Syebv-aI)Qg}5RnG~ybNH)JVVr6aR z@e1X0+wC<*hp!R^j4V+92AyV?f?B_w$6qOkxV{Rk_NvRQ$0F18?@@ikA9z(@Doa?F zLVLc+{5qx33tuPxgN%mgTfgZe35MS`Rds072qWgS&*}a0y22d4b*(+~qT{4} zUNIxgJuG5{51L4&#G-hDN&g#?;mCM^*|H~}d>aBe`#$19ys~52?(!Pre-g3_K%K#C zA8rcQI)!uJU>OhVVvt;-mFk%Lrl|F$JD&3|PE@mm*>H@?7Hj?W2-;TeI18J`ov+{$ z8z&up*sLTJzoKP9(NR`K&Gsk{UYhEIpLeqYRh zjanrVZukYY1GA`L7}d4YmLQmRXl+ONd^4H)QVspc6!A5P130wRLUu3=ZZd$)I`fqJ zs+@ZGG0!*ExaHdm-ad2nW@{rs%`1Fib^4Bx0Rj4hSr^`G7 z%=B=OF_0_>VU6}LB&kynt#?PD{M`9rkj*5`9q5&uR?KadGtvCv|EY0X?<7@*8rr*E z)hBIFw_T^fJ2ox*84Q=&-m&WzHp#S{B}7csN0zC2>(M1gDUGz!P{u)%A#XNKkv9xF zU?KrYWirAM%k*oWP>HP~p)eb<- z$Rz6BJrI2fNztrA-00!F&65Z8&LYW|`Q_6x%O2e?#3k$y$1es{ zzGUXEIBj(~PA`QFv&HB-Z|t;e+MpvlA0;tDzLjJD&@hTuHuagKIejWGZjcQ)RlR=6 z%F%N2a@T<#>AH7iq2tywNkiqwgq;*~IfnuNa+I&p9;{-wy)jV(9CuFdUQf4#nN2^m zgY(w`z7zXgN0fFUl@v4Y5r5QSc>stxS25lE8D6--RU=@xPm)%39^~$QzJPY{d6Vzl zD&O&|G{^+=df991$r$}d7sq;hs@x@k*HETR2G%9Iqq_B+lzTZY?Iv3{*Upmhi|#{rCSh*r`cDh0Kl#x=28*8CjlIv z>ZztWd>ZQtG!qkNJQNIR=yvgM;5apR1EhcxCJLKT@#LbY)NLS`0NS2oT_k<@+RO}9 zM~|ko$Zeik0q1e3gX|RsugR5bflyGu;#@?P`ln&Lzd!oyXtsH_?i=^SlL2@$AQ{AU;TxBYn+-Z~hpkUsLNZH%&J$?Odiy$iYk}1qebyz;-Xga>K+W!ks zTzNKMGB0j?Y;}}FxrOGgqfxlY;9fPV_w{-U-l#6*5wRTog}8H}HrKBxYo@H}k<`cN z{y`G$1fn z38RrgfV^&UBKBLc1e4?(8IjKF=M&65{C$Wma!+iF;ohh*hBd7baO^#I_kn3!V1}Vd z7TCE$45EJ(oD)hmF2OQ8-uEOuWzlGi6whoG0h4>hY5e!2;r)Es2C3@kqs8||JvY0K zUxT=aj*DlTduq32e7;=n74vlz-8XNsei9zLzWSMHq0u(nK`p6zi>OzIiTU?p@PC9x zTHl|t|I(zh_KKC)yx@IX=ok!42 z_^3)-)fU=TK|zP&*exwqmtXBc^5%Ei#7Z1j6v=++Cc(r}nnieJCuK@`_a*!e(m43b zT6}r@olbKVcVo-`3F@_77snb54!iBz#2m^*@#h|yD_IdJ@iLQ7SH%KZ1yX8HN>4IP z4vnG7{`jmggs0n(o-*)uri9f~=fS?0$Bi(etk6&VT=b0mkO>yDy()d8%f~c7J2Ijf>4$riSbnPflz2gfLkCBv)=Km}Hp+x^cWIQ!1kYFn{Zpr( z84vL@mcw)7;a{?KdxmO8(Yv6FZ~&?gPuUW(P>5S<(|^4>CJX%W8|atgdhqjqR)DF1 zMZHB;Cf;LVWvZCZ$e+cRG=prY2B0mi$6F*c)Ah=vC%WE8s2~^Wcy3F^;WNrJmM-+F zL_d3BA96}fw9TTb++@ZjlJ5<+S9jm&?1QJ{f)gMT5b}oqk=c$?ywf)cMJCNMr_!*Q zi=)2MKpL)^>Cig>D)FkmdjRb@vO_h1#a?FT)a+qTXla2@6QuYy6(3fg?FJ^U*Jp=%~}R1ypf_o$!(s zk5i*qL;c^0LPQR*!KI>0lV>p3(H$hy@Sqfp+b?4qei@H=0k_hcY|XPv3xsE}%3R*> zg9lLw%+0f-1xA(JqbLCmKC6Sh^>+aOY%F0p(w^6Z43JlS2p6in_nqflGT^L1ydXZ& z{;;29K+T47H6);iK9R$yf8WV$t#ZeBeQ-_FOUU7LZ{Q;^tasCE36k-9UTP#!?oX4! z$L$I5F#_@OX+u8ego*Z-e3fv#Dv4I=d~tt@J3xoQ^H18xQ?Ck1EE3Wc?Vac^Wr*Ls zP4N_m*i#$CdW?z(Y=5snGV4Vn9w$EU%XZ%WRj zWG%%m13fdOf6d1C`Y|9cF_vvd9IFIiQk1>Vzmed=|73;r093wTa#d@hr{$^P2XJ>P z1N+_LPwTyU^u%5mhx9JFN@+G#US!N|clS|l*_Qd_Z3048MN4FmVfmU8!o=sC2F=J!4@2dfU$~++fTdvo%hj~(YLw` zk=lb4Sfvhv41O44fzQsn)JyK6Y@fZcbdYM9oy{_QZ&_P)@uTHx95nqAho(%GU@$f$ zs@nKAp+>Fub<9Qf6bY$v;)=j<^f?dT)mBhIP2!j(5pn7cj|$n+LmDKaTeYl_d*VgEtMsh1M3vWKb7l2Vu^jWyc5jmlo z*2)WDFG&Wla)HO4h;VDOvpLLR!7wFU`W^can5#vpML3n6+B7ei;CVr7!jG<7X)Ql} zKYS*n8^E=3?0GKg#jFQ>`k+pKrZGK~QFLmN`U|eJyZ4NDJRa%?6UFnD?^yA6u~O0O z^qDEL_-b3YlN}qvv&OVDxGFuYRi1mS+d(~_YblwIG2kE;$C`vCeO18Hn z8JCb*Z}1vnT(KwMI0W+E?u#fRMEHie!cFQr30WqmmIO{^k3*c ziN@&1!pc_TGabAMA1l}WCdly|8d$GMFrjz@{g2GEQEa6P^j^H(yiopz^#e``Z%zX< zatYAlVSSZdbxIlbnnvQZcqe9X;L^?nG~2%g^~{r2^+YqV@@Xcj;Lsg=omC=0_{rX0 zS9tTn&lGP$YSTMId>6f~W|T_P&;n$EIY)JupM|>hz5K6XJQj-3m8w${4?VJpfwqf~ zn!~vKhEO6mfp>9qq~hyI(rER&nKvGa1LT-Ef8=<<)c5lmLoIge904s|3Q(^^8DFya z*!(EGR>a=?nB{c^I_Uj4{{}NauzZn84ziROn7Qy4h{*=bJtY5aqUd531AEaJ68j zNrV;7WD9gD@0#%Bu1{5Lu3a*-1T>oG%aOH5FV8R7lMZor{eSRkX=UgC()x0lDgBmj z))DRZtW?<43zBBiYlLh-m240VFWR)U_i#ToT3gwoc`MFFYH2SCxyWG(B)RED-jx|D0(AO@<#6IZ8(d76 zEuO<@j(m_aaqMXu+WOEP0~eiWqmBZ?tLXE0jyPU|4NkC8iq5J~+hv=nfOq4-@wg$LghW$-3s;LUAL z4JD7$cl8>WyJ2?WY?i$oBRYSS@IA$N8DKEg@7UQOsB#_y8u-U!ZzC%gE~ynvmlnvegL;sCTP8<%QKS1P$>b{RWVW@7Qal^kd+A> znLsRqc>g7S4b1g*jzJG zgOuTdg04bmGwnlw@4uLbqq6$7u4Gk{%U9MPjJ^OO70Rv&Ws-IeJQaH}TljDnLA$j7 z33SSNDEj$MA5mTi)EmhMH4xc0YyIIaXew(PIoRT~{vff3YRg&jdKa0-`4`D5Z0ir6 z&AO`qW|#0H(?ej1EByJxDCPD+!c`t_4t3qFeV}|Rr{ou`fOgyyu1bY5geeG=HO9Zx zFM8s)#As$m(!Wpb=c9Ot!x*3J)bv1D^z`Y#1=uC4&KbnyirQ(quT;VZ_V>BMycsV1 zW~Pocv}G#;shYpmOpGm~L=8Z8a6NU6co^M*cuV9wzSVqLvVc<_E6ah^w8m|Fb;^Rfa5ng-dz}m|G+tmvS-P?lEg}_ zN26oJ(C<#clQ$oMJvgiVnU`<3n{Pe0{`bnsrE=w#vzH2WdyG}z$}~DSM|d)?QRRHr zM`6Szmd&{LVp`Xe*nN2hpC`unuo3iZ79|8~(L>K*YKPcsngYi_eNe=2*LN0_z%c%x`~0UAa7(#Ty~nN@*a z&pe({jCHKtXwU>leT%8SV-Xm8TXVCuF#ec>t(`Pnf=M{8A0?X6cSy;b|KsDntmyL4 z26reI^KRjO^v5Ps0_)4SC&j!KF{96X7sOn$kJinfD4TACtHFH)Dm3Ax+0R zt8XK`f#y<)p2;Z|UVkB3hJ9XtVpa0^lHGZr7*?EU{8)tl&T z4$>Z~>_(T84)`%*^sbyvL|(BJFF9Ye?`e2FHZ4Z!QRDVh`Bi)`ntv%G24uaE5Dc5@ zZ-KX7q9Eh)vd07{z{UlBeQ7by;7~c=3ScQ2t9bifaF|l*PW4bw%JetI4@g`wvVbY^ zLIP_uPYeVtYMDmEg6YeTk577LVr;b~tI0rknbKHY{O`G9;4C&F8vk5{0RNOaps7i9 z&aunXPXgI#(NTJn{pde*FBw1_K_Hm5bJ%BlEPmWzf(0sdmjS0;SM4@Y@;r-LnO*pU z3e$8b?i|+AstRB{>6?P?@{B7Kk_twxyDg^IfSFPoL0IXIiMjNJD(OE+@g_)3IfqCP zAh?AD97*Zd)da2h^XI}zh8p^PKT;(4rdzC{#jGdL8avH>J~J+juvVOl&bp8&IW@i82?so~>>)Pwg36nH1=89GEdoLo2 zJCKBRN!jOwzSWsVS0_=fWUzr?CueXwv0S{)hr0dXL1lY@YVc?UJ>#-;)t_gim;KTw zj}%}4c29Q!lK>RRB$S>6_p$-^z}JHTcR(MLD3WbZot8P#{o->fzl$;2X~=gVdY7$! zMT(`EF@z$&#GZ%d=t77vFH{PXouiwQ^Tz*!;G@#r#UpCMJip90PjR67IBMdQ?GY8oKDWT){c`R2o+z~C6xw4|vC z5V>s9&w|5N9TKe0EkQFVlnE4h0YOmQJ-hp`7g>s2on%9qW$*2)IYaEi-c&ihS-XU# ze!L_>;JxZbS=dVYv@M1Tx|?uzdPG}U%h>gr@#hy!fSbG{_z(#a-e)Dx!Bh0j8w!Yy zdK=(oOo_*FbSDHK)oEM6lCxrX5x&P~Z_2N~VM&C-9Ty&59#{*^9wnn#XVMOFnVf>0 zkQ-kL8_aQYAqW|nL;cY>83Ww@Qw}=sejoSBDM-*u+hp*31 zaZBa_EJv}7Xak3uwFJO1Nmcy#2@E&ymAp&>X)Ntc6SEFUC#~;j%CRDTflM2KcdRRm z<29x&Iyb}dvZ*O7O_u*Le86h=^`&E$_F@`Zyak(~9OtAdbo^kNtkUZtyhBnt8>V?= zR)2och`kRUbj8E;1kZ2gtHhF!YUJ>JxI39y02c$lv2BJPg62yLGC(R-*|1r}KBpV$ z)#AP}mGpL_2gC|xiSZVSM@#I!4>dKPm?jfGR_z}yq7!Wv$Ab20(=JHIYpBOhR#9C49b?lGX+`O&m2{IB*> zIYVDyxp@eJU59&iv(8JuNupVWZMCD`%^^R1E8W@cJ~N@g$m=Pwft)}=XKGKuyKdC6 z<;oW#{5eJ)*c4CmYd1u6a3pf`r!Nc1YgS%i&QUz7?g&aicVqxVFDP2!Ldd|Yz*l{iw+cQK`CF(JA>R-0?m}7nmdH8uiJ(C-A&_@1j>_4t9t6Zl&ibT zf7{7rHIyO-N@x4ke$HmOQKjUK?GG<&v{s#O)0#idxvD}4zoa~IPHZ#BXA0<&Xv*`X zr8t#XhF*S1jHa?QDKtoloW;=L{mETDp{v?~?Iem$PJ?u;(xIevG=6Dtl7o6(Xi_lL zrcSIMJrhE5-jG&2qR)>r?&ufsV^fxa?F(PNq2z74@c-uPXy3{i@V&;dzjfHqi-BwD z+snYj=znRP3C~;BHx^=@;M6hgFCSigAH2noyJkTe01hPRlO8l(}B zI(VY_37ol6yEzGbg-D2Z@~X{ZSSe?H&pM?4D?Ue3c?yK)=3lss~?zV5#UE zvmz`^#_%cZ+PpA;N}r08t-Gg%0^+9}VPf#kUc4Gtc3=9@bX_BT&eH zOgzCYCcRPizh0Z=$JC>%y62-quD)JO~_?>oRniruih)Nhhd&O zeiX^Nl$d5hJ9$&tsz)M?dyUUNlR1YAoy=cdUn?NOvBVn=zjKr4S}>{Hr3de;g_<;$ zH6U~>0@_cF|NrO657@ukbM)OAXjRQb#=(pxJ4vf${&i&;~3` zS4L9@-wW*6Bpm5x&r`QuILzkgcn+65_NLp9x|2obv+=FR!)nX2Dx#E|v-Qq1wrnYC zd!pj4h{^@x8P4~^Zs)^iBsAjI328Nc?Bil1d;oYx@TEGLq}n0~ zw7cj%B@thH4BJ1Xy8YCREm6H4v|$MGBZE-aH>TTN^s;_8RMSbW*aB9S!A#O035M*~ zI+Sy76Tj@cfT3}uoqtEHCB|Au4CZe2dkLFPZsKIUQ;!B-1_R0y-Mhel5Dp9WC?y4p z2Rc#J*-nbmRcy}k8$Tso1v_L1$f5z;d_yFH3Ej;P{BAx!NUbrN_+Jeh^Fw7Ar zQsWo0$Tnmr_)1q+5E@f&Ce{$nQHSw;vKvRoA}2T1{+uBS!X4qbCi0nt8&t>e~|867wiisw`drAZ^;QUM-l zQ<`V{Jn&i~(;30*9X1cCctdf2GF};TRtJWo^8{7K+!G;jb(PSm0;0+~ z6j^BC-T^8?@TqqnyZzBVy;&uS9K;xiv1+y5L(%G18X7B*1Qvje2bow?)zk90eiVc8C48ZIjG>1K~2fvKFB;DX}tuQ$+FOv z!*WX4$$Ecqr?MTmf*bZ@Tcj`^TIZS@yV9{zYm7&B+T%cZo=IxQDe|ync_kFEW@Rem z&f>%aVJV56AHq80AM7`B*!;M&XDh0joiGJBA=nJ?)a>9gV_|4Lrl*Zzw*Bi_6jpIw zo#HBn(heMjCzR+5B;!Z=n7>mj9z}4>R3^HyXSs~|5 z&OM@vKp_m%WYvSyZ9BztjgnK(VdOGW)gcdPgK1P3fzG-Iso5p# z=vH2Hs%nS*N{G#xx3c5g(I;<{Yv0SdP(!g0i7$kPu`qb1YB>;xzO;e-*~OzukD8za zrus-5LmU=M6;kt6QqAz|7$S6w+Wn-DdY&*u+#tf>gVE_qQF{4z;7K9yM$FhozE1z_ zIQSaaXx9ynmb>a?gev}asFHB;wc0+D`pzpoy;GeJ1V=lFt7>hC9j|E#Bz55QdHTn< zSRtcuHSYlwS{nUu7=hr^r$=#?PevOq`$s$HW;XsalHw%4>Iy%{7P`-B@szm?0$Dbn zx*XI_HD-*Uh%PGIR;2LdF$qfGFHSX>oBDxCBhsfZzJ-p&wo-(!4cD+rx4V3LUHg18 zUCc?7Gz_C^R&Sb0qSeB$2b}kHL*Yn5quh0Id>%oO+i7*#@ZrNv4v)XJC}!@`JIgWh z);S%O>vz8bkwlu+8`<=z2K~S~p)irf3|fph5{U0T-O6+V07eA%A{4mkP%f)8pMjl+ zuly}_r9ZTWR`3{+cUADNpVb<=5H0d!gO&1t!Br#3Y1=?{jmZ?$-kglG`U>OQfuwJ- zWA&C8D4VkF?{V0D=Yv7_N(r)f5>WQwEzlhhw zjhl7gMe^9jHFmF(EVbTcbPjM(tb=72qxTmq>Ll-_auit9^su?Lpl7YzBv91bFBo;b zJWvZuf&P95VRIGT9j;grjk1~#ycw(A1VK4Nt(g@W*jZiQM;X=SM;jO40C2aLcU~Dr zU7TLff~A-T=z*@melemKnl~$sPCHdOQ3@Zt1BP$aKD(u>ES})R?3Zk$+IgNvq8hi2 zNKe!3!-eh0OUZiawJXT8mC(HK?a?#Kz}m*AE}0=tR5(42wWj3Ek$bWU(J^f*jDR@D z#QM(AnZw-^DI&X-291lsF<_V zlg#DIT*9WND#MW^lCh{K^grV3X^gXAOdfQrX5sd;m%@)Kd`mta>3Gt~oYSaK%KSji z8O@y}k?yF1k0{(2qL9vrXJNE09+W9pyv6n~$_#3-JxWzJ(pemdIj| zWHV=kc|?fZ(+HW*zhKut9Qi~(Ftg8(U-eJ38w=AioC6QP{2SC0#?d){%-FZd8kB2a z+{d`U%f>sYcg^AGTsDNQiGg#RDKUEmX^LQvL#@(SiDaJ%EyzP=_Ok0vV3&BGoE3wc z*2c&K8*nCHO|^^#JD#{y$t#Xhhq@VT1gehJN~+Qt&c{zA3L6?VR83?K5)@Ums7o=V z@j-F;bg-cf5_JQhq$eQBw4!%0SD0_K`j{9$3TdH@$K>aBZ3;VS3<(&G)@c-wVqy~G zzZu9;zmVL=(w;=&6POp`?il#p!8Yk!&n4L9@p5NnlnVXb2b}pDL{M_oT#*^(u+Kiu?`hTHI<)As-l2j2wa7S*&H>3<{!PyOd( zZ1*-y^V8w$(KhpO{vdaY<|hQ;GMrB!s&;p$6d#N@_9&lQOH@>#10_lvC+{G~>2Fu5 z0r4l^2WF%&(k2F3N3dCo^=)b*%uN+;J_VyAUZnG@ZGKA3z^hZ1ia8(`{chPRIUj_i z6ymz|pFX7w2WUrqrBmHdcwj!y|68X4i32!2k^pdj!6Yck_IUPSBxY740w$*=Iz=jb zolNeI4n87F?9Z-Z;&y$r%qqY%iC_t5cx+f$8P-U$k9!1#L|BuaB1k(4p{I$oQRWAl zGK_ zYB5pJYk?!7biY6V^xlB2)NofK+coq!M~#$Aj0AzeaW4aj%K=hJOfrB55uz@&j@vx# zi~`ha+i^zuH19Ud*i(OZ>bZ8Y*Izn;XaQB{Ehm64&f*VC5By`7g4<9t>VBHdIajsw zq}E}hFEkIp0Mel;eXik27`HY6iqZ0bbACxnJl*6~Qylldg_q%_DU0B8<=a?nep6hN zL(KxI>x#fC&`2EWQ#z1!l4*C!(=;@M0ki!dof(onQu0E`)tZ-9$rj+GB)i-ff*4e{ z_vAuR5@DHwmJSAJ4$lWUGX!dBk(*%Fmox9GU@SG)MEbMX){Sxyxi5QJt$%IsDb%|_ zafw+@#Nz9=dlZ#ARb?lZ)z;UHy`+K6t0J}B2_G=8;-7QA1H_jp$_D8^L}`aD1NHJI zWCSdceGvUIMT|Y=g7UDq?w(DG1C){|b0TN4;|;A=wkqtm|5DA7wel~IwfKTIy~D9% z1Q9ik_ADaRd~ojCj7uD7dExyf#%oq@{&<2#dvz+jNA)}7MresS}-y~-WjMu0yfP-8A`QNUx7m}|D8BSv> zgx2^)lPZKRbsR^VZ>d0#7)=r{QQ@l+$?nE-rx{lcP?HXfNPFqtS=8v}m{Q12OFV>G zWG7=I_}~MEp6uZ*=kCSH=ge8i=vM~hVKB*mUIw=w_sW|~i48E(S!e8w^bbMNuR)Fr z^S|Bp8ki_FR)KDuz3gw6!)GxLV{r$5$Zf9Jv|k`(+ax>iyyC(fZQ>8N?13b6rF*0fD?P*MSPf0q<%OQiNvX<`5yAiMRU#D@Y z)ARk?4oSKDUm;B4rZWJyg9+TFU@gvZjWii2g%~SXsKrC<2w!(eBZAcwUKLzJIg^ z*I=>c?`F_HW7{L9BlKR`=)Ht3fLcRIZa@Fz#`ge1@SWn)@{FVzT)FsB!&N2P%~Fyp zx{k7!cILxDnAf7CJ9S-`E;xUTh6?_3o095^s;B){Lp}Rv4o+FmrMB-Y!n6b>$@uei zS1@FC)~6RB1&8pV&vLR32Qd{zSq#k|;&=1^2A--`B$Iy7{zLOMKQEjZ9NW;JV5lF* z7eVB<7G1aGPbZ^m()cavyf=3f-uIE;t423l^kNr=EFqgH|HY_NwWPLwa;%9Fa%0Ld zwT)}F`-WMHWVaj;Mcw?}^BHO`V;R*y1S6?LQYD@kld8yA3g-^a;Feh zK}LEX%0x0Kp+lL>tbDP^6KH*L6S~_=jWO#yPO{P|d-M|h)acA4N_PPz)BXkvXvRWT za-$=Nj#b!_)!A~SJNMiZ(I*nqA|C+f7X^B$L0(h{QMM(ooYmza588!^R8V34rkWG6!B~ z@q5<{Q3(F_o~m!T4y}AnPmd81$@a*0VmEvr8)}2s^rh0cUs?%Gny!e#s}6R!AJa&6 zvvL%85YWe(0lNrcKYj!-h2iGOs2kTi7)d0H$Y2Mk+&B<)BidTSWIkGZR@MNF4a~Qj ztiikqLBRFS5v+0k)3VDv{iNYs*4>Yl0Qn0iZ}-Z~roe+>VzygOwioZ+%R!^&(+h{0 zGf6ejm>a?HYaT)wfN2V0aM2@Mj4X*TOW`X03m+)Qt*D_fX=wgZg~0L~NQbhTV_8dF zVX~J#YYtg_T>V&|cz6#wC`9wu?S}?N$5=qMqDwV*Fv%gPW6jG7_-68_g%?9wf~`;c zMe!8hV696H-DW2HlZbnmvPceA*XGnq7%ca zYo&_SM%2^jp=1wBdtJ{?S&pEjD+TNK`DPY@DFk^+w+s#&X-b#AOQp(ISY^=o3`7v2 zxSft`^iOx4nVdWhn#nW*)L{t3zH)d@sBl5tXb*v5c#yeXEJT#9i4s$~>?wJhS z_WPppUZXf3N zOpucOriEf|lAz#E=`}`!zJiSvVXXC<6*@h1r5WvwTYpB^Nyj&;C+x~aHdDG3mof;q z85mT5Ub*a3e*O>h87HV{vkrlpOal;M|NS*~zr!${N}beq|Ccx?q@b4GTuv1eT1FC5 zy_PqN^d?wElPC-qDkT*m8n%Y86T|%vUKks&Xzd-VVoPDg<0IMo*C62 zR#9rDn>^Ir^=puhP`QwYVI*I#gBGf(a3>asAQN?!Q?sXBlBXt3DrXGce(tqc|D-V5 z#x<*GV!XqR3#XDbAwR8e)nzq*j7L+{(=fBiFcQrhFj#O=+>7 zsBSF#8!Iq#+0B&j6uWUBOAX}qCoOS&=WMo!0%kXXducBLn#&PQWvlu?#7l3w;Beg5 z_}0QWBev`?<2nYX81WXmCeJ8>7hTh?Euf(B!-+;z*fYRl|K{bIQs#OLWrv-yvc?s<*?Jj&Jv(8hl!FSw$>A>`L4gSSHq+5Ora~jXy}- zx|wyAlvjg5Q0a22C%uI*pS%m59Yz|yi*xPvsKdF3ms4wM#nr*qxaAfESfg4QX~4{< zoW$7P2dHc6i*yS-|AbM{PV1d5+hu9z!O3!M7#7hx{zR(_zY_%bBrkDaifc(im5LO^ zN@EC z&XQ~!6iIkttuO3x)Z}VF)U$iNtBmjXJlnRQ6pu4Q0pJpgT_75G6isd9Ns>685<%k6 zd|4X#ymnVXyrTU?2tCrPw^_^ehhv`a&?~CU2S&FsJ#M*k+npzEaJV4?vai)4s?A~oIP@ATS-zh7xX_I} zPK9+B)oC>Lg%a__qN!F1jR!YLV?e@V4!BzRj@~zbCJAtW&PEG%X_S6R+zbUQO=@jJ zh}0C&7KZcT{3(tj93E0f5U3W)`A_Fgv%(7vSZa?l68_i{0oEUat#}oV>N+kUP>>C| zhTd_`zk1Hdj@rhzmwGCQiQ*y9}<6wR9PY>h&!uw=^%)r(`9`8ywa*+T4 zp`@z-laLQHxq%v9SF_GG5~B(WS76nBCM@i-uQz))TXvaPW1JIn} z6G51`35=c`HW@`d3As(R2D;^99yrOA>D^`@1M8VBo32qc8Da+Xv$4=EM8AT&FS*F# zH5@UfoLZ}@8QsaL%cF!%(9Ysgzb&>?_uPIstmTp#Pp*%SX7YK<-CNO;ej!a#VyaS@ zNeG$m3TRO!6(vm6>%gDzK>!rdsD5&+-`8ndi!*VSD4NVEAwKf--WXW^dTTRNUCW{% zv>bTPVsd}0z}$a+u8#L$`U{*LbN71aKp%iEeP{$N<<^WL7xxzZh$RyRC27b*ywPQS>D7oGk$VKLEhCqj^EUUGA%`jKA|T zdXI~>j4xo8wQeyN_;~p9S5K-Z2+D8e8L>t6d&P=4yyrv z+u=TWcB+Y?Hhc90AS#;g=g%$iE(SVsPAEKv+_MT!)auXrGtXaA5kAU3bCN_|L3pkUTUNEO zsnV?y9wzD7Y&~lk?pB5`D3>z;jc;#lK1BC(Fk<*|OWk*YYv;b!084N!_zt(`d z?ghA7#w1lBPX`OLHgBTSRrU8x6N-FDc`q-D|sJS_P!i+%%i zu9#tzZRtfd$L_EKf=JXioKG!}(>tQt13Kb}x(14=6F{!DAZVp%Z7ZziHXH6@N#GrL z{(EXXdiSyvukrLPKh7mb;+A{Ru; zYD7f(ncvlIbhG{KdDJA&^#eB~C>n}`fiY`yVaQ9pvOgm{_E_fvoGn;r#tt$6X(#4l?F3DeOavM)4UQ~{O9|NT;U)ORGQ6uakn!y7{t&?( z>D5+UcZWuu>B&YR_6tAt< zGlIfI+O7|Z5|9OypO58CBO?2eDnpt);Ge!;dh)YGUA$qLI3F#5Pi6y2Rp-+HsYeV+ zgwK2ba3o+;pf=qocCNHhfmyOGhA826P{qBb0+A#6-jP@IkI>?mOT2#bg077M1oafR z1=>wCkTBY=psv^wkQqu1H90l?&R;DOLm5|7K(UInSM_#XFGXEtWbJ51Y0a@Q|*5zE6eTW zkF&>-9xzZH2N&&XphbL?HW^^Oh1gF?obKt#{(jW`16ZBMfX-vjI4;b+(@YfLxNo!V zx%;R*ZIV5rO)YQ-6IzpLG5Z)YHu;=Qp#c`7n}HSF72@SDPF{*}`ut~yD34#LtAb8y zrUH`tI~{)FfU2u@TGJ)2;?6;hBTJYqOa80lEmm5AK?Es*vbMEgc(I7s=iR3|pF#Jf zB^;h2;b5Y=$nO#~td);(q=Q>vKqb9?BU?Jcp4ao4a)m-{5y&4?L`^02`@xdhLitlC5+*kdC2aA2#&dx^b;6nLB|36;n ztY&-<g`%uC1oL_q3*=IxSFt%TAiNV~5TS2qE0lXf%{Dd%;3_D6Hl_hdAd8sTQ=C zZ?(d!6(cv~X>4w|96&YHsR8O#yZ~EYj~?Uo3%DyQj-of(b7upHOqbY7xE#Q?UMZ%H z>orqtR&$=K>f}-~+@e}uFqF}yXOU3^*ul^}D|=(OyydxfK>_b%sjj>=1Hj}qk_ohO z`gVq>N-J_aS*yLjKaLWQX%}nFStON%-2k5cB`WMwy>N`DS&E|K!9_K3`K1(uqOckW zHKKj``kAROj{8vd9IWt$24He`<6}t7n~oN`7H9v$uqum0Y|IMPShmumR!)0mPibR5 z?D-~DJx#aNDAC{*{V?6A3Sj>g#!7||{-^6`}~%~T%Q3+E<)o-wCk557s`rU4<_S-U)*_|36|{=&CC;lcwt8Ks_gxZoEWwlnzWh2f&htwL*Akm z!Z5;*OGairJ)@UHCE{A<>CBa=(1&waePp6#na_|@JUmRt6ipcCAtAT2heDbVlG5_8P-hAks0x$Z0rLVh+QhBDLhkqwmCz^=tU}(ti+k78#di+b&IBshh1 zt_Zr|fy`>>6m4n=MxX6jtvoj{fdx?ws+LE{Gmk7F=-n}YwP)F-(>YK!A{P*SNYmsH zDx@hBeF7zzKDKtYLnU!zBNPlbTzOt|XjMliPG_%kvXQ!U5jYZH+&kE-M-_jcrR0X- zVN+bZ(km{>vh!B()JklJ#&UU|Lm-{i8H333$n!(yn=xcyLtHIk=w&DARE+|ml=C;I zJwH&({~S&j1j7W`(j8Nb>gM{T7uYw8*5+SXXUucpjtN`E-hfHWO~x)X2z915mP*Jc z#uV|o;bq82IO*LGjnIoU0ume5iL}6tU-MKu8j(DvtwwTlR%Hyie^87lc_3mL6{pEQe15kBW&;dhR_=h>UjzL_lXZ4F$jF1T+cp z#0E7spWfgcE8r}%y2;87&XgMlR!=Bi@Fh^!A}Z8FhaupbJM1~>4J6bs%P0Np$@RZ2 z7>k%%FhkqAq$R>=Eq<<1J(F8Kf`8v3DZ@=p6vfA8Bn*kngU3LmOxR(Xg~{g2Y1; zwjikbqlwWg36m%ZHHm%W4`0eU3>*FQZf5JYv9ER++9<_WIk{k+($2ugfJL+qn~+g$ z72EF9_FPHuXv*cCeyuuolF&M3Tu`1|lh^*QN*~>Mj7=J%9~quvrV?Gs4}r^n;wUp? z>zyx`8X;yJbXExGkAT)dN3C1QWed(~Rz40>vEQdx{Dz8p{{NB&w3DuITb}%N zfRis_sMSt3^tjj94Tc;{-Q->Csc7mHvwBjB8DZ?Vqb99EyfII&cvKtTQMp~M2VL-% zmE*9KO&vQ}5IA3P_GCC@il#Qu&}@X+k+*9OIUTFTKM&H7KUbQ?$WT(< z#V~nri{Dx|H0a3x&%IQV^j@UFO=aWy#>s_!h9iv|kz|+U0E4|(rAB`Dzm(;{bnCcy zeIK`e%~zc)4t(g39-FRIYAR5&D}~+TDE2Y0QF8b#W3Kr? z;WL%sa}VRRkh+mbjcGEAKYDU&1t<`%8d&JWO$V-_Csg^Rhpe&bny8n(Q@@nBbEe*sA>p zO&nx9{6GnNgXML1?{ztCwdqaWH38!QBLw-tn^0H%Yv6$;BCS-pAElMTejfEg_V|r#m@5l2#=iDdVAz zn*}VFO&bRihVqB3f&-CW^F71}Z;&f!$5aQYK9eDxkyXM3WZho&z*(T7xO!lMF<{V- z2`f6!i$8za<+m%_zWimF{I>T(-n~iOg2weyhlr?4Wu;0W3s~`?OBnEe{WN+jfNHHZ z87#g0JkTcjh6yp?*Ivaw9o;6XkgDca4>z#JA->hMDl{y(2=1Or(`|X{!JXht=Mpq- zL(6RoEZR$!q!$?JWr$kCi}eV7U+-Kh0OvikCt!2F%EOy$`h<6Up7vgqQJ=0HwS8=R z)3rsg9^vUapbZ#nYc+Hk>SGJWw5Eg4&9>B@q#O*YaBidG1>RfDp0VfpHp>sSUw!ql zYMD|exWnIWBAd{Zo8MKY zEO(w<$!J0hpY^ES6^?gF5ppVFtJF6$E9WF{6z(8%rZrzp!V97e`jug0W_CaJ%>b&M zbl$&FEzu+s?b*t=Ik)P6GKr>v**Hm@NL?X@D~^qvpfrzD;H9Q0DHAN#QOmg%AC^El zKoT={sId9bhaE05JLA3hr=cifg{7LGseu7}v^G5=Q3O~r1Nj07sHaynJ-zo3qDY!^ zUGzp(4DZBndl1CRG2Z1yd+49N4~Qp?5UVjgG6HMQdvHODrb^etWDRQ;gn3Dy8pmEUEdZfC-LzVT2)dUc5S{Hzr$p zc^}?K4`fKK@xj(MYP{}L&LuIw3uy_cpOz0NQzi;{r>=iCe90_dkUL=TlXaTQ<9%Ra zhF4>yR!{@wN0t=Ug9RvO3ex6Lsx_b$qqZEcp9P=X28JEae{EIvX;HA)H8E#c`*7aw22+Zw31r6K z(y6h{{N`l{eXRZdoDm&`gU1ENW=3?bNx%6Rz6aRz--*<`dz7OJ0O29c=9a;D9_aDw z7WgR+cax)Ss-^6eL&`Q3bh{B4gG2_s^*v>iA;cd6>G7~bs!+!&|m56?wqay(Z!XJbD+3^7o zNg;W!0eR|It>ro|SX?AcSKBIIte7s#?oKOZc5$i$fPMN(?rj`gdtmTdyuSR5kC{JN zMknKo?B>~WGm|P1aGWa;c9s1ODQx^^U^GKCgS!^fBZxoCVT2L;Sa?FVv^tlD=^Jb= zW7BVS;a!yUc~$1UaKEHR`mT0r>*WBAK+H)RY-(MOYXz`~=gYY#Es5q|l6r1DdF}Ii z!Zd4m7y)Bk=!^{Enq5zBliWmSgy}k9uzN~ox$jWjr%aZaD++8*(DOOwR3gCYA~f8u zuiS-H%NMmzx4r~qkB~s{jz`QdRO_v@Q@6d$g+`nmqLPGPuy6FO6mE!~v*!#nlqOn; z#y0Zo!>3Xq6d?I&LYnuIJf4I4;B~?GbWyIB8@WI788;oPI%05TyDoCS2CHqtj0T%X z{CM{bVUOEQ*COk&*;ZigPwT^Wv2~1tfK%+V{Y!faY+sO45%Cj0qAjW3%5=f{xtN8W z&lU`d(mYtu08?$T?!y#nR|7o+1Qox@(~ww}8DT4^O;M;BuTzy^EZU_#q)z@WBRWm2P22^%JT&DQ^jK3;!yb{|+t!nIU3R=dOO=^gB=~J+ zJZr2@xlBO4H35A-`?A^Cj-!_zPhV~BMdgP$|1pb@ZrJlI9RpM_Gw7W8P!Cz4@oq;i z5@W@T(3u$|8L_rpdI{(X4i!1wwx3dk+;*h~`bAy;ehL!lT+#-Q2Eqvx&c|JaY%+Eu zPgfyjS{d_vUR6og`@z00KqA08yT}YyWRQNy5FNH3(fk#p(Kz> z5}+R|JF!m)TGXRnQu7&+0X|53;AJ^7;8C3l8%%6{Nl?Zh;BRJ)M%Rif#ITtb3*#|# z{Bx`HQ%FW1tH+&unwi&~9oste{=EclQ1GVYK zmI!W)>Tw9_2(@OJLJg4XhPP@AtCz!jU*0}IXkapTKzwn23O=qGh+9_3%W!Lr*_bq0 z_#9;024dk?e6phI#;j^p3Q2Qcdr|k?a-OU{P9|-VWEd$&-%cSyTw>_U?`i*cjhb;xjYq18wz*X&02;k=)7ta7=>CZEq0NOjdKldxmL z7Iwiu&>!(EvEIX)K4G_b(so-ZvO1m3RB|+EO>AW?C=p8L37;BO^-;Bd09tDOhl21y za&?;r7(-jv>M4;g+=&KV@}#)n&axLnym94D7cu$Wxrz)8gdB~!|3ptw5hl0`86;x3 z9RL-44^O!aZ2*|m=Ts}}O|9&yVB1PvpRt(6eDs$9d$Mj&Z{+HvV2YvI(r2XFq?G)+ zRmY$2wZn*X=(O7Uw@UTBCL-!bpNnk;Wp9 zO3$Im>a2Jn#X&%q79p;z*(P|)onc@+s+$EEBmz9d1k>oPKXJf8*v|NFI+ESMADFS* z{3+C{IrfT#;9nGTA`HPs<>eE7C4)x8xig>!9Sj6SF?R(JfGei3d}k*Q(M!PS=eq{j z3(CqaPi<$vcVc~EQc8wp?R69n1eLmikj?$;t>r02ahGDYlsT{NiJg#G^7|cUc)G-r zc+@YsBLTY#lNcgkBwQeLsg^6D{n0BKBd1z%2_@-E!=Lq~#UP4{i1lY42`Lx2lY0bh z(5x4(bffe`Fz6X5c_qUpT08i+r{)Jxk#K^7?TXE#aRANdOpD+>_m_lx2 zB=poJU{VJIEVMjw2zuK27CB~AQwsDl?fTDNRp@em1Cu0#3P+AAKYdvhK0_25wrZdz zyr5`DlJfD0a+^r8yi(q6c)wpX*+aqEXpiG=pWQD7qKy32dqk`e>yfY1L*GmoglRsc z)V$TUAf7inUWDYL2%cvALf)Q&g>qdv@}yAExqjixaaMrRG_NnDAL~D1uBu zysy`4IVTYF;yzV^ zeNgr9VM!eph{S)u_*ZqVSEX7?hoR*!i<2UfILEALb&f8KNS|JYpa*7vrS)UO)8d%d zTT@NMg5z``)~+xbOI}b(QZM7b=l}n<5alcr89hX;*p3~aA1?uUIx6a8bZe|76o@~$ z`t(5ts9eLIE<8kb0>x|MWBq!|+(SL8h;sPo{I6g~zB34;mw`{9yx;4%n40Cn=3Yf< zJw`*ub_e`7l6Nn z3d;ZiPd@VR3fBY{t7xDfV(9OJCPM5%g)D_0X7G634?AYRMy~8!&6r1fE`;hjn20!r zuU@uRmJdjHs>Rj}O5YWhJBQg=GEL)ztAMmeFmj-alytLq5snAfN74ZhX0hFQ*o#gh zlJd4~KF$|uX#T+C3>{8^z^;pxNl8C5|G zJ6^t6D9a<7oAqsPt%!(%loP6x^wL3^=+(9`+vMr@-b*NB%HZjT*z4Xd zTsN$)H9rcQzt$M=tghlGAV3A2pM0)#y&hZY{m{$yHl54utP@3noyc-b%!oPQH8^x$ z%|2S3Lk}q9>D`boj8>iOFn4jW(ER%NthguBYPtj5*66C^Mpn#58~**kx~sS^rY{*f@}2<)$w{py1k)%M zF($MnLyR`D>!>lrY!|L(-p{GvVFDq-|-2^&y`_^+Fo7r zSK>luf0#S2Fi(|7>}49Gcu-j7kO*EyGk6#uR=^OSx_|CVdaQr&{=%qP9McV;;_blj zp9WsDJhk`-+m!pM|7RvcF|zy;Ac&04@@Nz!MG6XK$iOI&m(Ayo zhOvrDM%6Q5{KS=f=of%8X3JCJwwIfdX06Y|9Zr4aD5hRLh0R!H%@}ycfcA6c&Jqi# zJ0X1dsZUGaik9Q|Ag2haZpw_M*0PZHts!rtCk;Yr<_a7!UTrWM%4skmi`@4&s&vL| z1P-0xA3JM(@Bd(oT}fGUFT*~ct~q0pbvwSiC%iN~X7P{4Yk#!v>VDOar>Tkd*+D*c z*#g(7vz39!ZErhf^I%?v>0O=4o@_V-{b&t~FSN^X22Xv2@ivI%NCUM@d{efqHXHYoK*gs{e(Fs4ja_MzZl%qlg}cEc~rv$s>w)& znmc5j#Y%Nky{zc{;s4OK92wCBRinjke9Z7IvfLmAtulJp2GTx&d|K^piKo*;m8=?; zEj50u(kD?$gt|W&YwR0?^er=R@_{KGgm8|?e+uns%#bcsmi$77cAoA(hWk0fG72N) zp90^dM>sWU!(OploNk>}g{0;odS}lHV#Ky_wSley@&hKJ@Xio>I9A{8v}|wfILRdm zJ(8+mfk)o|$JM_AG)@yz6L8i%X&Z zYamTj&j=xsFs28!BJnV-x7WkR3D9bewDzxoam{6Y;63n>KjuS=iv?RAaE&>we`BF7+m$+nn)-t3NB5Oh&Cia8eKfbV*TQYTG8}}*a%OrBt`y(m@M|1#X?T8-B z{ur6dNIvd{7c0bPr^bTn@BRCU`&uW1UJ4Oyk4;c z#_P+c(@TX$?B-ih!EqQ@*DCEEUQpwK9`y*hCj8)E#qlX`|EW{SUGh$32kA$jl;&Z1 z9}UIBd0x9r#c2fPJge|y+e;Ey1UpRc8Dh|7ETA|@gy{(DogvIqC62Kwq=yH9iRP!r z_it@{s1G+Y)<3~>?Nq?ffKd@U*KaCYbZeinL!2CWw<9(T_ zR$$dfit&~IQ4?^dEA1``FwVS;6#}~U^%JQLm*4KZ2|y57;>VJtq_WVSqpdgb9ndM& zU{jUg^Bla!9qw|+g@nCWtzkt5n~Xo?&5uo9#N@K37~Fu z!jdHV%X6P#C z^jquyI~Y*Q&g2Mu%+c%vaZUSOV()}P?;A)kk~Os2wXD@I$7a5SXSQww5|rdP%}LE~ zB;D<=aNm?r#|=tPy$HwXFw2bL$$_RSkleq})JOX8$*9@!%ApSt2bruYbjL^j10 zEG>n*OFTc%S>Sh%9A1+7sMTcL6EQ$-&(&)*Cg1r91Rg7N%L@S+h@L6!tKzP#!pvSq znUM=9Rkrqf)ce$qE){>ueJ$Bv&utp$2SL4KimfB=uHv$EYvH8Pbn5CT`ow!{Uj2{M zH^G}2xu&ix>9TqL?OSE|@o%Lv9E2586n5Vzdq~l3PayS?PmH|(9aeyHFDeW2zEXGw$xs%G(%9SX3V@ zo6eflL5~!dv-(KndG-DinMpdW-TluG6zBUaneJH~hoV~cbSB1thAcU?OkX0ROZ=_0+xyb)KB*W zN$?>oq)dNh14J!lzW{P!G{xzx)EOQ0yysD?eZUXof2o#9ehpaPse)**`M|<FRA{9^fXl4&t@JA zqm;f3LX1zvIv<>CN5ds)#kWKr*`3)tPhaGlRsd^wH96FZ zYrlHn=GRG1V+GDA?0Fd`2!t#{amWjzQFwnRdZ84N&+)H&gqS<^|Dme>{+F&mV+*cF z$C1dMK$iBMlnd@q(6zk~O1ZfK*dtEZCi#t`e+qPTjY zr;Mt~WMt`^czcmc1`2RFJ}Ue0siD~-&!poZLQB<6N66zv!E~CcGZq|65A$*T?%5G* zT0vYcL?8H-Mywd|Zw${ec_Ye#>x0i#V9NvcWaD=l*XBr;3%U&-_44$BQ+t*#ZxWEw zgSf&i*KyE`jsE=PG}4V~Ja`D#4r*_M0%wT~FFI3uJ4D$~6y2T?6?!BG?qxzxV2;9e zecT|I9wrCCijWNj7E*c0zc29Zj{;j9kKEYcoTU#03i?(9UcG-rPZsq?u?N$(xW~PWa{?zw=GALt>i41*Z>EN`_a>(>Ewg(F76T?1X-WFb{MC z=xvvP-8z0t_O%DPHfs4wY2LcPd?ho4SI%bf&%gK;lxLR0X+Upq7U4by5REv`OLGqW z?h)INPHL`^9qxzUghS3A*X_3|FljKxO<5CaV-=#a1=&Is+S8Ka2Cgl))=)*X*kFx) zX?6QhI>PL?Fo6+EFnN_N{clM|b$vx=E`w8xb?yr0pxU=_N2N@buVcSdFxVvRd?W!w zgL`cVxk^_zRhJ|{*?Vu_#a8{b(E6`|$utAbhwD`$lv#^GcT4wRoY=v@Ey}*2!{6<< zPzw9Jz#wgRh#Q`7uhRL%H-OH!u%`Nq%zwrMf1>`5vaQSg0*i%6kIel1bg}t=CmJMh z4h_0SBhm&vI&^P->k3dw=B-&rerI64w4q$8WERA#BbA;pI4Q%t6)_(f-uAGJRPB~8(zSZ=04m2;GP`E{rw{_RUoS}U z7T#q}NSU~cSbN!{Y;#%|XRY^fN!0{m(fjGXM>G}D7JQkOD7y*lhdK)`>VVRfj9 z?aoIG>9gpes19EPX`q$AF{n=afeE?|9d90dHI!dUFCiE=3V77XzRcTd10tY#HQSf< z5~xS%)P#1PJyv6v!B*^>-j90u6ZScs*2E=#ADwMx6+}TJNKJTsf>UH<%CnaFl=Lxr zaxI+-HPN2|&w~GVfb}gXLM@v}wvS{6NFA|sa=h8H z+E!XPK}TBy439+iGoMf_h9_QEEGp3Z+Pao2f7ebWGVnn%V%VirRt zffncFN3eybaKXKKvjh3~Rc{!-i8aUAg3=$4wJcj-e_(=}s%nvRl#W2UcIZAhiM^3* zV0=CrRWS=Ts+7;gkEd&y+oWwdz|P|d6^Utf^_3fmP)IzR+8soR+-`fPOtKUuhW&rj z94cYdmt_84ilmnF40?vowyq`r<3sHC4)FNEHw?rdj=AHFa zJmC5+$Vw$FSXEVV?G8w&d{xg!IGElS=Qe~U6(-dndr9)pya{|~tLUa0>_YDKH5M%& z)tAL+H^lF(|3bZicyA_^wP&IVB$YW{XwH=mbtBLwy@qMI7MYHGM){rBa!w9eAOc#q zLS>~o57*I=7<2I(U^fS$pBa+znB_d!e&h?+z#bf84Q>Kj}yyaK-1jl~!<`>0!1i1Xad0}>($fmUt`9N=QKVK3o` zw!9W2%%-sXp?=D1c@*n!3+*iQf9z=QL7$d~Fo{P;kv9>X4eFux!{_hZ!W%XE`ap&+?ZGZ(mGsCpp9+@NcZs5_WB3R4~pO>)t9k)saRAE_vCAWK-6-3j=)pO zFSyD3dB*6=a*0n2-bRpELAhZKfp1vf3bGCVd$o_S{>E~;J%sK61 z9EavBN`|b(B=prz+{{N8A;6dVGq&DSpuMs9goOv8EY|0gmeU|LmGE3UuzNk}hzFg* znU5qA+y1Gz4U+&qyCtSQSOxToCwPj!+_eZc&QA+BHoV)C0N+*baNld!e@zT7GLp>E z{Ll?9Qp7Y_hW$%==PNE79=aByK7P?c>GKKlr_55OVFhw+L3_q^veAo31OqfZ5+(9s z!WLS<6@ZsMp*um?InjYLi*Snu+`q~mX!)A06F;ai1=FMUxFoD@MJ!t}&C}Sbr-~CW zWM(y zzsfY0rbg~K8{=S0O8daO{y&)Z<*dkSX^~dDauTm^SAV4 zj(qZ!xc=kG8mL%UjmZ)1@C4#@LDmOB*wHjNx=8yHgy70eC+&~G=|YB;d6W(I!L-Od zGJP-p#2RPY-4L(eV8vSUA@{X88)f}1Z|{u=IK5PZP{is*vp!?M`p0aI9M`X=?>ssG z_sc1by1Q{1oz+At&P3SFz}8_Du%c%C>_uKuf--3fWGA&+fZ10S^QiGrI&@(r{nEy< z>h1agHRVcc0p2{-&fJ`yh|P*UDjn_3l$K7e8ZHi{-?@@hB2p~udsrLrq?3Q^%XQ*~ zkjML{k3yi?JGp1kG-#?0x3?o~aI{kr=U^jjPWV8)OlP_&kVMApyz0AuY>e1hLg-kp zHmsqdW%38V#{Y+=uE@Aq@Jgo`Hq&MeyKyJ=N~k?$fUzZrtPZKQC};$=`z&00P=S=y zEhdvh&F|v8m;uxM9@=Af-erSTm}#$FA_r^s`qTjimWioPW67Zk3k^4jsRU5?y`K{5qJs~@23?3 zfJuB1-mpeVj?q9V?+JrAdJcRd2J4d>&StyK^fU*dCTHw=9^&^A3s&Djio0ktV8Pj- zH}g$cDy(<<1xL$dh38u*Yw;*F`Vq_41KpLySON{Y`=j~_)J9%(U*ceB*IqARP5n#Dg2R31!<#gC z0d@-V93=~oS88@t4r$==i)Qd5mDHo3|I)(^GV481%^a84B*bAJ8ibOnC?!D^1prk= zFhC`9VAl-|ZN7fI$TCjBNa)ydAUmaEU#n55&)3r6UCH>wEk#sjSLl7EV{YY< z_4PR*;C378X@yt6%g^bmD3nOq<8(m!!g^7@9^jgT$kn9wRIoOyJnNx zk37Gbcr^SY{o(2WOjCP*qkO#o0HTf5DT1Z%M$lz)rTglQTl^BZMDkd^1YMo2(V9hn zCz}CVQalDL=Ku+S(e`*~7}AmjK)3z4Th||V$n|xCS8Gprrx~H)L_5`kqZCrDjJAp* zOs(7?F6vz2UD)T0IIp}CWQtjBSZmmeHHz!Bh_+K1Baa+{6qHC^Q`c%hzy9eQO+Zd;Ix z2)g+hRJ8k4i{c1<7eIc8mL%GUy{%Aa?05oup;+HCckQ?jSnj?Tk7kcyAN&&kebDV$ z9usQOrL){i##$dH4d`1QyhKuS-w-B|>DRJN;C&_C)fr4HZU}{;%eGm(i~FV2GrNlU z{E9aqJ*`s?>NEv z{z3Y_y9{GsMmf8&^`|&u!`BNUS#c%5S&jf{z_RfAEa9wd^x5TVmmp}y5=U93m{C}T zca=Z+J8VTkpbe?+wf2(50)tU;v8V1EUaN3w1~6)pyp`qT zYds;G6a}+UApY#RRH#wepO@z^^8?&*DXr!~&-!N@9;z?b&QS}Rk~9O&iTXN1K~@H) z4>lc)bIuWw*==}yLgH^r2FE4!`OF9?TNb;H1K*;VU>vzpR8EPZ?JfQ5(X_P;dxrUx zFXiKYE~R1PW|#`w2==-M-pcV8*@A6mN_~Qqhu1Cj>F%>d+9-r%5 zmOXwlmSw5K`(Rt`if@V|L2S~Yp)CA|N}&m%&iEGn7?4G^sAMif=!_?<-q@SX#Oub>lqcZUI1)Ng;CKF_0W?1w%OPUE+-)*`o-@VBi(!EHG?l2mHnkm~s#nHJ{u zK3ydThxTxZ81WSxA$%2yL?Kx!A}~iK1iVbyGj1WHhsw_+q>ZlwXeYS}!)R4K#`i=o z`zfmkNj3}UdjwI&>*D(&INWS8M|lgI|97S=qF7*p@h9{%H7foFypgV%cXF}cA@yt|g{~fBIci2NJk{b3 zv<75fTlXYyij0DzGM6MCuy&+58afRek$V}SfqRc`0Rh%W-xO3q3FF~L??EE-{d$`h z-iNF-MMpjr2pny9J_yF~jpcgm{%gHagO_&;=7xa`RmS1Qxl(Lj`C$7vBFY4!yZ2^1-H)IzI>b-bKZgOT52v>XIa*6Z zV3Hr%v2u)^-^di$DNc4H&Xv89{70l}Bqo6_p0C>B26h06>9WotR?f3qoYIn1+u@of zzJZ7AdbgFE(`6Kg3o(d^kX%&QIJ@R1R1-~W~A|s!@xZ55O zH)eN?LHnJDVpii`(>yHFQV;&Y@&Gx+Fx_1})va6_P};pk@5I1}4om?v@p{so6IfJX z$4_+;wvI1R{FT5RG-}2B^sT$Gn2%WwApE;TDi1VopezSGuza&?V)p{pB7zri;Hp$M zJUl6Ujas%WjCC7O>~1tbY`-rjG(&=yqT71X@o`x>-o!i+Odhk2QQd+ma}p1t-|~@8 z8S?SrGaWF8pckm{R?YG_rX@;k!Kl983=y{wiT{SS;q9DYYY}spkrXoJeTnRn#fijL zmZ39eD1?ju$V3X!rq+(`F#)K3#27V&V!j=yJrdE*njQI9k zTtoRAOB#d;ES0ja{;+tW_s9=1y|L2pnKeHEt_~ndQqJpkAu@TzNMD(~p8;#x9fq=- z@-u_Vt1L2Hcm#L`>N+;t6$UJ=rH%6+$H+X0qPiPIM8a_moF=O!5tJjU8! zx0Jqz8^X3<2@{Bof={KX{O!$WqonA@$}`*-6LYtqu&?7?zomj+A2@J{QRSOd8wE0T z(1^BAJ8!zO(K82Z5LEY8IYk%631V|5F>60Cs+=+W zSR5iQVSIOVLek1v;~|4f*;;oBluMA#h*2JuIUJ2Gpi;fXe3yncT1V2ow z`Pa=H^ptY~nC8t9F$I+DvzCCFhr++;II6M~rB3_X5clDDt=^0<2Of%`+Q-F*3?!_$Z z?@Sg;69H`FK$uf_qx2}&{b?l>T?v!3&wNj-8Qga%z!KlOsF^Mw#fmW55{YKctX?$Ev23NsWY29cs{iR{req1@6B}T( zweN1}c9b9=n{qU@3$-9?3|VU%GqQ` zrnW-vb{0c6%QQ}5YW;L6V{b7YMrx@<9^Lbyfv=xs>SNw_$qZ*g`$8e=4Ij+!Xnf=- z{7(ptTt3Y==|w$@Yd4mr==uuDVl9ivlso(`ZW3mWqdNn*LSIC4&!*E&kF2g_$fNN= zjW6{7Zh{=tS96?AU`zCpmSp${yxjz_y_|?ha<8}%B+z1EijJ_dqi=6A?ht#xIAp~d zupqh*nIi1?A2R5Y`vp;LRB_@x%*EE8ShITAj*5go=e+w@y+6QM)@@ zZ+el>$LhI3%nbsLhgGE7ekDaI_$+q%3WfE_*<&zDwMO9K&8<0vA}HD2a~rt%l#Y=; zc$!*#s;)0|Y>Ae*)VI;6S)wm{fqwI&afWd=0k(4WFf+&oTg_aOe)tP>SGuZ4KNHrZ zRJ$|o>W=#vry)9xu?T0m>ig15v4l45cH=Xg8d`*#)K*9ybH&0caTVb?-@WG`h5;Rd zaCn`FARbzZ<}8XQ%)OAS2T&o~{hQuL1;?=5B@p=sMVd#2o1 zde<^n?MdSK80d^yAu8Y1F_raHM9xh?Q+yYYD?c~X7QfTUzK+~N1mOVxKLEfKK&3Jr zI*rrO=uj|YdOR+;KPVBm4e&-e{F^i^0OR8OZoaTl4?{RgpzIbeGMOMZ^uF65IG!7} zOV!74X;*~>M7J{gfD2LzmXVe&wOboFTR^DwWS1M_Qv!Ook{9{xQbR}L&dGHo@GPwD z_SYB+hm#Tn#<9IeAz%<&S;n+ZQ5EJj5vtjL{+&%mLk<|&zGQ2GFuK0l*M?z?EIY^9 z22+q}-17Gd55@X9F>rT@oQ$_Zi(}y-z<(K%GZaAdD+#pp9XbTms)1tGDvr4h9OwCG zRdv>UH8T~C5|cdm`U~wNjiI>A)Bww0S58`3;=KH5?}}O!c+n(j%DCeaOAL&bynKIs zWHOLiF^hghwn_qBG$8&A*G<=PDp_pV*>Ogsp4)Un;J)XnO@E^dsup54zYKxfazn41 zft|ZwpA``-oo*tG=`?1W#m6$u^Z1*&9cNF`jE(CVxb4UeuZEOoUsa{?m>PnWfwgqB zg1$8Z3k&BuGx;FybO~hnjfskP1^*OL!{pek6#vj+#&Pz>j5V5%UpIT0fE#amY^!~n zL~(YsK(b=|UWx(aCw(OCHKx_9gv<1R0b&L@b<>NEuL^ZBv>L-);-zL}033i4_uGkU zQz|uRX*WT8kaxF3x6PorA%8=tAVP}wTUAexwG^f6JkdK`7GC=D*?&%Mla=0nYK4b+i59x zuhm_`&gdIC3qPrGLCTsG6{-?Ke$jR4Rzy5nDr~|=~n@8I)ubRoq=ydng!dSn5Hi~o+pgej1 zijV=&ZP&o&4!a@KG=RyAnN|NlxyUALRrSh@v(gF^(Tw%C%XA{#=I%exNm||EU?1H# z^KuJG!w!z0Ruw`v!pT3$0+X`%-hjWB?@{ubut((I!C3rbp}MFoGP)K64(5v=?-I&K zGwiz^_rKN6O>YsANSlEcGoButyPJX1Xh$&06M&TLq$YL8bBn77TcySY6SqW zcver0zmJ1gtY_t_!FO&6{LC1>j7PY0um0fO57wDE!8unbiM;jIry1wxHq91|YvKrBN68T72V>NY{cVKG}7rDo6OP?FQznaO`=LaV$T zDQ3a;_&yMI3(M*fB=Fh;v>fX+zYJ@1LXM{YFn;}RzK#h!L{0&Wj##(ZwA(mij?fLn zE|T_<{kD)|5rD={>F|oHyR6+(wFTrzfFcWX#0gOGi+n{HwLV3;i$ZjD+1lD5zCG*N zxTNua98ETQL7|%Bj1eu4V%;Ld4{^WiH}?Ov#s#fL5ukR1)|W+(HJMN7PnnXq!^fI( zD}DCKO_R62ADH9%uLy*(UA{FO7vYH}$E_E8=83`lHsK{dVr}GuEpUtqSv^vjImOM1 z4;<7>GoGvrTUj^_*d%oLczBl!&_k|UCo4JH&uhMNG-6vira-UY-e*$*7f9myLJlprdGpOx)yUnrK7UdJqc+U!kn61WC8(iE z&U;q?bed3d79nigefaCiH}|2j101QjZl~VU&^=#K68lz?i`%J3Xh49tW3t_1Tk!XK z-|s?e_|H+))=EXq4{32RW%^B7&6MsTnu-jiQ~;4+62RpiV{7As)b2y)$`l5s0P_qq zJQ8oS(+(V`?lfb0U72p`oIumKSu=E#lb!k$Od_q*>4!fo&@?ONoTzAnf_s?W50eMy zkvyfLr>sJ~XU3{6J(3;`?aLL?8+|_ItmZ?u_QmZ#!47yBa$xv<(R=tI=h3B&W5?O>0des(OILG9_(B|5FTQs__8GmZ{#e}(Qt~?E9mVKdo$}E3! z`~7m;w<$(y?w;`JDExO>%Unmc%p>Y7SVV4BZMkVgA4RGF8I|)@HbRELInkyRnp{{k z8GG(0Iot2yRUCF+btp{9y2yAq_#Js`h%#RB0}aY987DT&;|X10kM(?d6C!f?Y89BZ ze4w8C9HaOsYMSh~F({|7dDF4<(lU6H|8)`sb(ZZpP4x&=d`2coZHE^BMoT(7Zg*q& z#~&y^TnM@NvmCZ7B0007E}pk>LWj%UbvY9UL|*tcfO>LJp1%lv+DycnNST;M#Q9<2 z46V!bfx4*PaeBE23e~CJuOo5=Y={k*6<=487JnvvB=yQRYNbYtDA@-g0Z$3rxP|DA zmU%4l=bxaA9gJdPGgbl%Ce_sYlW98R=rH_#TvgH;ngZOmAtTIN8 zJe7D}S5n8e8QUD<{?|V1UA4VcXeF}R#Zvx@A@4ZAJNF=r999RF9|66*kLSDJASi?^ zkwb9UCroG%x;I9uHi!7pNG}w7M9OP3^|NVh=)4U!;)5CgMM9P}VfVPyt}Z5ie@mp# zQhvt#XihN}88#nv1>k*UggrD3_Y7Q&1Z}mY=#r#JSz|GT*=?^Wh~G(t)~UboCjJJbLBV?_;&aaEU?4XPc*sm4)1KGSv*Gv z!>tY!q7TmvbW9|Pd;KRf2Gy-BPemZucRC)VZ(zjSn})wowph=y5^HY3bFIa>iV&4$C zk977Ih1a@>7^+c9tptyG0Op~N+bG7~d$|B8P1tUdyUUI!+2GHE(vFyW@;{gs2S-I! zGM|Sw7KmecI$b`%G%U?fWH=83=}Nh=%Rk5;u{}_rNK;N;C6c(hA4aSb{KXu&<)#M) zrm8)ze0`t@W^A(*OnTL~Tu*Te0HYH}e;7eO2_(El7E1O`y1aAthQYv;>Q-T?YQC#i z1f@*#QSujL&ZmSroxf#;f2oblc$ckajW6(O&{*)w;teFK{UKE}#7Qug~tYvX3#Ssm^CC^`>m&9S6aydu`GVS>mmL%~hnZ>lcwp9laUX!E zEi?ZpY!J*ezCZBHek)Yv1ZwI>UuCN;0m!4|nRWzV{aGBPQzZTeqMRVOQl?ax`_#os z!2ztjp=Gv|{O%BI-*CRg#qGW$IwtK}F9>oX8l^7F+X9dybe^Q2Fy)O?u_oK)JxhS1 zHI|j0`x@AKc{F=-k8;#Ix!uhF?Sb^0BfsX9zg#lpO+?cE-jK^GM1KlM!zlZ&q}GCSC!N= zGQta>*uX$>v=Al97W!R4ciHj(p0W|C>gdoOA7U>L6u>;g?$u?GX-um!lZU#gO-)2P zk+Ya3FF6{poOo9eY*0|etqnG!?(qS=#lmOs#N5)0=zUqu=d-B~-XzrP!*V(`A2YZ> zQZ+}m(B1)lsE{b5o)x1(1Ww?+!`W4I*&7#NgwKr5WGWo!+q4tBAD)4TbtIPb)=m;~ zlpb_*+5e+=w#Dorj_WPdo?gY(LvFt7E`_pZ84l81&^oIbE4=f18C8C9uJbs8+HwxqSq#{G4()*e7qe2pfv!qR12c9Q zw8S3)e7l(#4e1r|oWuq1SMyL>p$_gX(5UMhZFw{bhD8Gs6@O`9T6YQjDq);`GhuY zK+>iJuHmo)iy_PTgW#0-esm;Kn@Khu!Z;*QT(fQFeNtQcRDa{mXr@rdQv-+W9$Xp{ zbkS?#xzZ+PX?as>v>@bo3Pd~(F~yIUFr?UaO z$9TxYm&f;3C`Yt*Be#^=`YBBi?kWona~+3iT6i_2D* zH}oI;UX8m{MwOwS#w?vYOk-b;*wy@14WUD;55@tqxM&Pc-#d3xyn%ESNR=6RMZyTQ z{ykPwulyPvS*BvPr|IACK+aoo#Nw)HCM*nAFDv_q_>pz*@bo;zGftd1wew9yd)Sp_ z^!$tMW#{W7BUmS3k;beDhT6|ieEe@hBPL~ZcV{halOOXoT{=UG_AyDzY#WDfQ2~ci z|GvE7UE4J=~<0eKUe(HvC8A}7x$S)9!)%@Kc7MvHVdpO-D`GWkpyIUJ|CsiHE z3?jjyAq+ov+Etks5<+z_CnI8=v1WhRI~%D3fe30MG6zbGO7+^)zNb(JacWAL9#TzN zVAN+o#f^^TX}_ZG&q{R3V~Kw=6q=9H8-yIkpKzUQ@Fh-sR*}2ycnU8|!>AW^?RDx) zzxPbQFczfc4%XLU9?FDYG*&A-gpSq181Ue87Re9T5HA>tepTj^mdkfD$af7xEEh8a zr}$bw3MwSxv?9-V@W2M> zeS?4{oOQ#M+dvit^s#M~3Aogfl*gvSfbI5AUc;y}Z8W%7smPmw3}7abHR_$e(w2Fg zw;M>65_L_&Fr>F?onsl>e$>cdg~_SGF6!@ zW^qZ?aMQ^`t#!Mb8nHdPdQnlrXA;?TQB7Nh30|hVc-&l4$$l6UzjI3QzWi^h-@R5t zKUKCq262O$y0uL+((@TfYtcaxfnUZrt@T)fx^NWlO|g`?92Eo8V7cQTvl{tYWjB-k zxEVsva7it8jnJl=T73&6FRjql!A^^9I&3w3!n46Ah84QyJR1n={7_rKK{9))jwvqb zHLIMXgbyV`uQ>~VUVoE|&o$RYWZmKWYQm_i*4oCE>barLkhYF|y?I`QC+J~j{e*2E zp^&2W3O02dHp9={L<|0e3|qJwRRLFG|AM#**zzmfjf|=(tI#c2MJP1ht`U41#r#ug zFyEoS;T~knSNCU5srbNkPpa_3xk z2E}3RvOmYVsr1`=fl>U4&3dQ2HPx*X?U#UkRtO(Cbfx=krC3SOUn?FKEanS62PW+T zO30gw^2B85+DMvYW|1y3Z)h#>nej%ns>WyGI7B82S05{3Gd`?~LHeAgmkhZ$CEY30{L>$ZOGqf`&u&iE~xenjI<%juT zc68FB`pLg{;zgp=$;(H|hVuSXJQVZ8sPoh%>~ed%$}K4@Bgn~;@_mx*Nuj_^-Bm1 zJ>Vt~98aKV)jtVgN`;U3YOLNi=h7{btly#SA0v8}RSCPWx0{m45{hoZ$N*PMC0DIG zpzY;o2M^gzJ_-+^o66CN`7y32i%f;zNs!I)tIYYvXI<2g$aKKHq0N`-bb0j8GQUc; z;biQ`I>wlUtr(mC9fb52U~?$?&SgojxCml)8fY&XYRym}f?zN>{@6@sgjbS0BM>`e zi7E3*ZwATU=4>frYN~4<4qdSE8*bzPB!pXSxM{fyND}}K?>e&q8)iVOVc~iZ??WQJXaYYz%$}%SPpVmA-Wu?EWgszGc^VZ-YspOe?# z&d#xN@Qu}jrOy1i5cc6+=^DW8$i0zy$ZghGHg8_}PTiajV2iz5I7s1c-I^dZpGjcDooBF&o#h!NG8-{O1xod-1dXUQv<;QC}}l*<>IrEpmkCs z0AQ}n;zCjLm)L=b5hC01HN$-TX|xsgPuA4`)cDFD3hF}+y`JO>d_4o??ly%;hiBoN zrxtz@cj7m}gssrDnA1%9U!St=!@}N)-xx_Pu|z^e<2;`Ad2Y$Mq@a-pBU2NY0tO5k z#W8ty{TvynKR?9%K$9YmTJepa5bLhW^hxEyjX^@`8Uj@I>m!TuAA}G~JCgJ+hfMJ{ zDz9cAtJN^xBoL)Xgg?K{jW(71ffSr8hYCK}Rs44}u@7F8HE^!@3ILR@preL?|Az8h z^dA7=*lHd(sIRG>P(YA-+;HFTRfu)m5#?2o=<`0AT_P@EX1(rAnC<;DQ^CF|B&dPw zn4L}a7dL|g9H7IN!iz^(W6Zg41)c#akfZhY%0~lzj=S~MtiBX;n}$4*9L4RDkRwV( zVU$NB4VWGAC$H*`UrH`ZB&>jP2}V0(i#sLR)ZP<|;CeTgw-0UVG|n)zs>OMpVA23^ z+Mb@0D;%R!emijA7&ZE#NFe0qoLGCTBjCfaFu`}=ka!85G)%x-9GXe#K_4OG?Kwn7 z8YUKO0kE-=|4b?q$-xr483u%`=_HA$nmhl?L>esH_0O65>TqoD8#Ir zm}+~xsK*Z@-H}(&gR$XNIwtm87WeaJ_`XWpYJuP8R81ZiN(l;bovKz(JKbBPIL?haWe90tTUhx)_AtGLJd<7`nKE(h z>%T6+BY?7=*h0GA4Q0t(au#vsG7V<;em0+t3*s&D3n|$YH**ng19T8p%biK=Mwp83 zO->ERzlL4kbZEGS0pp@#6N6NNsged$p4l6R3A#ctt9n9V(vjJJuQ|oU@i(Y_WNyAF zt{&>jbkxrHhdKM^2PTTyG)z^a;O6)=Rl+~I6oHu~%$XK@uVlU(cs z<&p>Ts5Ev*Vh?=rcyP%FNpe`{nsYgo6t83_$ z2D^RK5N@ATL6ee3nDbDdsE8JwV$y(983$-jR>>h$546E3S;*?>;$KkD4q+(Xb@>6_ z{XJ*|W-YmG;|%%Ia#1i&Y$`ZMZ~C8d$|SGZ_G!5;!*1hwcymYdO4bZDvDyTp^P#3Y zG^v*M3Q|Cag0_{`9bgX-iGSCJmLzX-K>~YSiR#7`F{FyuDzaqH0?I*gHS@QI=^1R1 zA^)n)L;JEKZ|(G))aTbS@$?RoYf#6}H~)jky`MniX$Rx0V!^7i~1?Tx*=9NuEP1iw}Z|wPxuw5^SQZW#WcA0MAMGs znNQkJ3`7$u==P=?CCjA(E2$Ea3t<7vbx6SHp&A`9vhCGbl=9w1QC!@|QxiP3vGHCK z{05$T!Lm8C)^J97=DNnba=sxuq$zZoopw;v&@`zwmJd!8pf?aBX8F+ouv_i%`q{Ra z1uEJ5S22FBjbtSRwdg|eJOZVxG!Ke$< z+Y82x#4uG~PVFZ1PK2#%x=t7h1S90_%EXMyC;4wq&-} z;S^!3M(S%f`%xus7FQt;IbsGv&(5rY2hA%EaIg`UPFH%7cX2b&5zINK-BLd+1$973 zlZm$fN;M~JD>6f;Am?Wz;1IVgwqlwR_o4?M{2tOwAUX}f5U+2`t5Gp|fkjUv=LJzH zN`~@fv?v@Rei)38%Hlgu{e4wzLbAPQ?r70y7Gh|G8aBRA*{wYK!&J}#!ub;c zy(qq#lT7{@_dn003|PJDUtW9r8|g2YrpL~oc_+pmV)ePRPo!A7>XUg*3%7IjZcZ?a7aUhV71m*H`4PFoiyMPNXN>z5_w~}tNc_$BP z%$C9T23*~2`NBWfZwBhLNO%;?uq1f^x;s@BppdZ_=7+z*_XaqjS#?e>Yyn7TA>vH^ zdGUW3{~WX9xn3|M%^RMnKprAe@6FvHd_`j&pT?wfhyNJUa&mhed*7jY+mCwe(_PETrR3@$u+>JJ_Ep|J{hC}mmo`U6l<0DC7;wp0NPUh z>RTKY>abdWj|y{_AEdWh2GBpsPI{spn(mbTWYRvv$ilF)$MQ7bZ|)w&n;&*dC4y)= z54-Gq9C;EzKzR8#-X!}w;c;cJGKD!&`KAYqPk0rY0boS^ssvxmeY5r9qjjekiFnnT z*|7bqUd@%&TuuLoR6_bO)BWN4;5hlc_NT6)PCWAv6D`f-@-K&|@^*38?CN)YXsj5C`(4-(D!;lOI~<-vb4`HA=QZ8ZjE;qkItEb@bZQaC}{?z;f$! zd-1(M$T45LL9!60)!kIBv8TlFf?oLfic;b3KXHm(O09_8a91YM@v&85m zI+zQ|Fgb9Y|H|5puMJ5Ku1ks9ecGMLu{(JU`D9QkBZ6n0+QKHl=1YzSFAae*uwRy` zOQ+OqR$@-Uw(y%j8dH8>LSV~ez);285|Qh>6|qFws0nJ4)?A6mLi%UGpyA0z@oODQ zofsCG*O(79MktuF!b$H-SZQ=06H8q+yX0Q5E%YWGz(M{V)U)X(OL|dPN%2u`F^ILN z9orsR7ALvZ82l}f)*FEb6h|$`NcA|$>**~CX%B(Vjrml2$`Y9)5)_@dsJzBC@C*B6 zC8g+4vn%o69B~T5FZ(huhu}E(1Qhm#GKRJ@u`A^^x8@)ckBBV3CgE}hvgG}3ZAbY_ ze_Kf8J{oU9xR~jd!{(%)Sl~_j4PJIB;MfB%Pt*q6?FATH%jH{Ao4(y;qPoF=H`b1` zPAzo-f3?#wc#V!iHUpH0kf)QMW!lG=`jzod62J7b{b^7McPdPw1_8%dZA1r ze>{mejWUIN6oBcXn;T755d0AO;E9Z6wM8HR5@*qQXKw|QMg2i1#DivWw@7)9x&7D? zoAiiRv%~SOdLzsVnwjh|$S(aEM&Xm_44Yv;j7J)39BE-}hoc zA#9=;3saXeQhkaHjN&~<_57SbuO;3!;oM9rb!vO^u<>whe3voB__uC0%snzD(?Zk1= znSO@W9!D$d?&{%LXySO~6*$64d44i{MjfiXOB{CwAEkh(zNS)667S?w|8f>n>Y{LZ zZTf^gguI|P*K=!j(&7y3XvGxV8qTnhnChhUTGiWaj8P^8d1t0wOEG}qBnK34wl~q=UTzIajagVt-si~9r@Hy0f zxyogG@PI?8QRsc_c8@l`U_yLH6;|O6Mq;rW85m8}#QuEX)BPt75F}52N+%(?PEbw4 zoYnqge+g~(Qg!QrhMIO7Ka3^P;{QCizhHddY@yMu7 z3W5*is2+2z94j*|fRrkuneGJ2uvyqm{R$iI#r=v1LB{Ye$#-07d_7$H45oI##97{# z5fruHuRs@K-w{9dNc|EINcRTnX^F^s9&~tYU`GCB%+JfUz(b|RnY|2=IfB?QLx7b= zK1(bDl|t{D=Re=Tj^*#kAFTEp_P{Re+!>~|<8#@ittxW3D*r!-T+$4&1bIZ~?&b0i zFL$zubkJ%3nwzDg(iaQ6R^Z8Ye6}xjBOM-F*`E6zmxY-kBeML+d)B$gu9DE;zH6tm zf0ge;Mt_`cE1P=ww%R3Xj=cJn9xS1xUTj3HVe0J{!Nw#Rz+LD^_+04?uxZq1zq6TJ zjznhY~-M_xQz%@2Yp0i z{{1`NOzdnN+oWdZC7tCwEBwx4*Xb(uM*S~pN$Hobu8Zo6PNm&~=HaIqWKV8ZiDm}R z6^PBRTVlF=nR%Oa*Dz4P<%ZoAaU5GG*2rqt z5@c(7B)I7nVy)q3HXk?<{?0%XwqtVtpWB zqA%Li<{uTVy%&KE1{R~KqEmiYUd9C@MJK}=v`F$nk@RB3K}Tw3)I=++OhhN0MQ_DV zs0G&9KME=WZY#0Ni}xZ6*aFC+bitEYOF1=k#UBZ_-o~-Z`{BsMYLimf~l#Le5>)7*MT$Qo)qKH{Tz1ZU zVisv6Wt})73EHlv9749Jc}9@v;*3Sx7>LNo(m(YzcNI?$a4}oPU_m3$UfnhOt;=_? zf0dO0V4}iZk-VwV-8lKRt2WF_`u{apqK%GRAiMCLEyz<=2G|||=;y$ANOya1*eW-L z9&@^@2c~Ggf*hxw8!2bAhxRSEMC2>-oujwVPv*kSk?y`&dThsI%r>MN2a8?6_(m<4 z(b{{VPK<@W*7bwsGbaU`&UXU=5M9ledDTQ=u6s0}W;_E3%94DeHXn4U$9E;p(02~; zIsG@^7TU7C@^9{EV2Iv8q8RRm%bRy6H}ECuv8e(GX78W27F3_U&Dnw%Sk}?OVH!F; z1Jz+NgrVbZ(CE-aR-(cs@?(=;UeJ7GL-+wo*UtX8xSA2ea~4MZ@O8ZJh0+N_N-m1= zi;XGA1B%R)d4DDpPMeJkj#x0nOZkoG&PvfuH@k{q;83IqJG0d;5g+3H|8MT#we_2z zrF}UxR!W4EK4wEMrk`G@#tdjO22ZWy;xt4Mh@Y3eWXu);)vcKLc<%`@Pd0u2D}A>r zM!%ml@}+9o$xFK)fOPB~lgpz&W+0)edLOu?W{G?uZ9@azrQ{7%r~1QKnWm2A>j!U2E)bcHwr|UWVY5+f zc?*QNa0mH`Y3AN8=u#wZVGSt?WKP2e4nP=d5{iN};-X|vHnwp2ef@YFoVvIHX$OXj z0jZN4F*vusBkWY~85zLRom*%5;2&rk-A4Ur&PJ=oJ*p%#+HiH2U6##w9ckZTPsCHP zs~F$LL-QLf{Juj?Cy|m0R>~ZQ!6AdRp1_3@hpw--I&0}ycb8fE9 z)5x^c$XL9d_NS@o-50Z%j^zIy34g~Il$&bb>>f$jJP5CpU)vBZi?rWyE3UBR@)4WE zluLS^0w=}6TbJYHml9415j(XQD#j-3EvBX3uWHeiEkd|0xlI*v;L9R;xqQG|%=-9ggs4wuC4886sTHIZRe-PtK zB)(JKpbaofw;tRRC2X#2f^}BC6}TbqK6usA4=eVSd1Jj4dy+?TXkOOG2J+M{(L=SA z`Ppk^X@r?us_EW%j1P1=I{bkO(Q{eNQM}?I+A9jd3MUCrI8HXr*c`Za)Oc1sZ-w$b zw^#j94I*W^hxTdt8qqVYqoUyH$-SM!LHEuFVTa`}M9%A7a`2ZQ%~xvLW)Gw-y6}%# zz*9(v){&AbXq4TU+5=^+c+V9yO=x+B_B1+*;2dsLh15>h*jk-t6vs2j;bUAN@$`e- zGa$!iEvkg_)NK;x0o;B@P6Favh}`^65Q_N@FTTn=r!KUBogodiFNZ{uxT+-mXiOhVnf#+`dEg6=u+0{Vijn84=Dl#jy`6e0&xYwhhxfmp%66bQ0O|`GmjF^ z7lcd+yCm@hHR5wwD`hFGN{fO#cugOLLbUSy{516O&51Q9vM*5dx5iSJyU(8_Q8Xcf1Fn$z zJ7`5OKPNjYK9`iB{#21`DvEpphzp;=J*>9ypJA?1ii7axu0!H@hm(nIYc6nsx>q2_ zI$f(blQxA>%2FX|_!Tpbb9q(Gn6;MOPypoe@G?Rb8 z)@0+F)KAcKyVyf&Kkh>ph_DGig%qa|gH!1(Gl-DVuO@8G08D!PxrFM!e=2WGg*10-~s6zf8;CVc!=DuCjjn{4Gc7tE9vJEjD z)?)FiWXnR@5g7vzoxg zip*7c(Xav@nb0X-J3vVwSidMBg0RsW$#k&-gV16hYY|y?oQTe4X;j+SQVkpLKA@F1 zwo^{8Pe_i?atlW&&l|&((6JC=q`0HQStKiFO$X1DNx&cV$MC7WWxFYCYa}{J#2d=! z3p>hiF)-8IM&+M_{U&>6{HVmMJ+*RAwmA>T4>kF42Xs7LHyWiAR82j;%5afJS_H5Sd$R6%q^FQ&WGn2mEm%u1>JxQ5RuGA&JSDT`8Av&Y!^?cbPRc+(E z)v#5mcn(D37;V1dqpVG0c5wZ3Z#OB*SR;t%7;yXm*)E91r7J|hUy)A83R05aRB%g& z>4|6#a-a|xe-X*8)d(>kqDCkF-jZ#+1A-be6gdBd4?#ErrNP+{;t7)nlM;VpTb6zak9|Ou)fh3Z;a#W8(qq!X-)d9&mM%Vs^|GwSPP=>ySOD6&r=&7X>Oz(VzN6tFYTW*f>&~=`19j)ZA zwi{o`#j>P`Qvwx;2Odno;?qPu*(?;+?aGLm70^SA9p7F6loHx9ZK!d9y6F&S$1a7J z_OY5GX;+|=l|MUC z#PZ9Oy)nBL=U^<~Wv9n+4>eD3y?#Od)V4RBEqh<6a`K#~wa*lCwG0F0D17PT{AyKm zk)E=z*nCjR8dJccYaLo&ZQoDD;YJIZ~1R6v=wgmPSaBwyL{=M7c zh%9XObRtEbvtZ*LzWM{9d(MUPcA`I&G%Bgd)7y5KJyL^}WZ5nNA+i?GM}Ip1+v4(v zDk=9aW0{_Es3`G7dKrbAx8!%HC-0#Op3S38d=6VrnzpG4RP?opMU-cffM6EJPw)K3 zW#)FB*Ditm@(Q*MNPmf~(a60!v6TIu7EhV{vmk2nkK9`HTtX@Rar@_7>z@r7f(X846Z%B^-lEJ?f0<> zlFGp_Sal)?_ybwVhDHNfG4|zyU!7u-djtP6wEv^log`3i*nMgD#VsARkqZ`B+Kb)_ zCZXr9rIx);fv9D>YS4EH|Dpn??@(V1BSAR{QG~?q6!13tkula=V-9;%)rAEb9g?W4 zr=WOO z(IsCxnNQfiG5DCg&|h;})H(AO@8ob&Hs1BLgeORR+peSa+LVy*jN9xM2omtzpO$9+ zaS8H3ag6bQD&mLf?B>R;pzY86g0?PLY@IvI_G%y z9p$-!OkU&gaRYPL*lPKO`^HpkP>B>`a!w+z;F|pxjhtkLmpdi3((G*}TxfNo64tQ4 z7F#U#J>T)uAld6fZdMpNzFebjx(j3b{dH!F8HRp4%qs@`G#Eop*baXU?Z`{!v8D{c z82Vnu_$#&qogMvrTttudxnk=6{8A32Bmg;hN|tLA)?~F%6hX8_l{16_^LyH-$j%`Z z;NDW8YQjXA9Io*#%^zy7M}~e@IEr>Hn58&AouJ@HFg5&dQlCBg1jMQ~MXF5r&}j&e zLubLjT`e}4)v6Tyde!q+pSTqW1!!A;nGsd}$6a9W3Pnh*TvmSOd%Zw*v!*a5AhICl zOzvVM<~5a<5pE*EZ(Ieb8Ymct#>$JqrO%Lg-y~t4#Wwe@?{KmfQ4+RNN4+c)Dyljy zZ6XhU+r>5ZeiXuj7ubQGD+NxnQQ4k;=E zupjXFz(3uRwEHN$+)yDO_CZ|zhNlS+Riq>yFw>D$9QLF&I^SM5VPbVU5-6!?!ekDl z3dOZp0N#MSnr!d8g{!uEB>Rri*(bqs6?VnX-7?p0`v3RGc$II+@WkpBIDx`qPe-Yr z;K&()$TDgNkGKnt5!`XmW*b1W$t0)oqprGytro!qLQkG31SY!j<+a2B5aVwA0#w8X zDI&SAm;nBLxYV4l^&dl6?cI?m}@Xlh}byzcjH8Ul`qCw)ynifIe*D!b3 zy(eSY)oxxT*pxqP>Kxk$D0^&R!znj^2hL`~*n=J4v)i-K=RuCkm=k6n2Vsq$yX@n0 zKsKVFtL1bd#e?cKPtBt&WFwsAgG?zp@%fq0)9%*|ob008$8ZxSd=%omwsty?fz@mU zUHc!+)^67=jML8ppo}rBH`3Q?FJ*Zaxd!0fp(p%H==5Y^W;cKTsv+YW8%{a#V&)b$ zK)_OAcj@ESODMtBX4%ag2tj(rY5-6kgBrW4U*apVCa`cQlC=YK*XY4708Ao903B`Q zpZ}fzzYXuuvr~WZh$HkL^1|HK+Infa<78UyK zp}ui2Ele*q06mZ*sDfCmjbyxJKmrj_=cN}|Ss_=<*vqC?Y~m<;d&6=X_Ra?>V~k0j zzp&fjqqG@aKhK-QGMHJ)D3V58O7Hr+i10{yd!Y2kbp4;2zm*pKLnJa5C!>i2EKG#F zRtki7;~_~<$~tm&qvDBFGm#bDtPbbbc?zT=_Z1!FCFT96>K;}(m~$Y#q;Wqh4doz* zmJvI8m$)4Iocy$=ef)%n?3EQdz(Gg^#>hX*9<>KDczj4iC(OC6o)?!vluvXtMvB9JYM_|5 zkW#w3mL7&ppqpfoxb)`RqRYE*+_>K0~iRgd3RK`^J%LJg)?H4>$<27*!-O*Z{6Vj z3rFl#70chhZSF{r^%)+cUvRnP^Kf}QyXc6I8Y&|MJywx2G}|4}B&Ozi^Gs>{+Q3Nx z#*J>^8O^!nNej!PiQUS6bl4V{B3vCwE_2gFlSl+}wJ_=k0Eb&e*$d(M#-93edjyo& z2{o+Cz~4*+DJa)u6I2f7-E#uF$kvw^`Rdhq=0<@q-HdDip9cZ4a@L5UKW!6W6u#%w zMjCJ_WIwGyGB1(Vk(fWFq1F#(gQ-C)!lFQjJufa^J50g*t-2vZ49D%tI?}}1qUH$K zi+s0PWd7tG#9u^lYoxW++Tq}Q8H+yhkISNrRGzLaMCN_o-xsS{Y%kq z7TPPt=aLjl^Z2E*PgDQiYf&!~NpY?Ch9Lw?+T+U+7q-K>(lmDWMlHm^-@mNLis~@|mhq)&W-iX3TOh=r>t+^AqSX0(BcsCo)-^3(;x~@P_Ke z^kZzCD2&&x@r6EW{>c^P$>ivUAY zLxL+q0AzHFgk$DRqHzzb!0F3WT-n$~H^ZRyvO()9zTWLc>R+V!VNr-0^ z`5@SswKYdRP(l=g5R^+?I7;TGLi98qINm&Y&Q@fPRUW(61AS;lqw(xtd!*SmwZhxW(_AgaG4uTFA zvit=aD4j_`kqhR*p_f@>(gDd)+v@vXrogWkkOa4U_s%tO`*5!2%_ zrg>~Bmq)|qp2^4EX@H#DT&4WThJm|p`~C`|Nu6|UsTwYG|5LNO#s^IY-{SidNibIQ zrqA_e(w07Xt=Q?@v0Ga=wCfOC{}54kL;$!kAkQ`uTme2RSDNzBg$k>g?_A*b54a9w zezY#Cx3`t7QifP%6Yl7;=G9Vg1Pply5kbFf8i(k2u)jQOf5Ka%ptSS}(`>g-(0$rc zQiH=~XO$dqdIvQT6Ev6&!NPLkvJcxSg6=Xulh#s0TA7QX=Ub3Bby?NSs$pzniw=f- z3&Ja9brx1{>?ebYo$6Cven7v3NgkXZPiZ*)#vy~+eWm95Z3?G}8O)|*2wIkbsEoTy zYa__yL2%3ESR4W78F$q3B!jRKfWOl~(v>DM2RNTzc9l9H73_IvC=moty9v>^6d{Xy z7331>k5MJgI8ZE5#j>DD;AV)h!6N|dWVx$_m2+U0)a9^!e1-JjRIm2LotsW{KJ$~- z_Tvy-Ad6iYF*z|=Cx@=Nc3X7j5L!Hw)=NRJYkGw-1p0_OaMa{HU!>(+Lg*L_+_C`w zKLEfg@&lbLiGsrzWi&6uMhkuu>1h=X{V-SbpmCAA6D-5NYzSC$-QN#e)JOoG78firZrYqD7O@?cj*6$-=w;Bu^*P{hDGHr0j}L2`TmQ zp!{F=Z@FB}%elhDZ>hYVIzgcO6rkxvbLA2{sH`peZAWwlUAGL#d+iH7MhA;VI|Mea zAddt01?8#z-=f#0$7kUr7&2!0KZHGN+(alm)B~+*wu&9-RBF-_%Q>}S1;bAXo1^)C zPj%9HHBDz$G$eBsHaLID=fgigQw7^Gad`aq9CL*4IIUh5ZDYM3+|DuDp~OdT0{BA; z8fyghRsTdwI#;X+&YxAHJag$-v9xh>6IdAfoE2sP3%q({c%PC)L|z^bCHv3^QRFyD zv-N3V9Gc#pg~ngv6&rtd7Dz&Di`@a1P<5S4AEAw$deIit?(IF9ApQ(nbzxI&yByXe zj-rD#R(h=uun<`T!&0$LpiGvU`p}P3fXhFvFf|efASUxjZXz{{W0RI@(dZfaf-pWLR{h$^*#xdW@HfB4N{H01etVafJQN6M z0jrvq1Cs{m`HKU>meW622R4DHr>lnmk8UW6SqeXAccM zSOJr-wMGwQ;5L@guyz1KPKBk3YU9~XNDHQ1kI(5_W2RMbkG9hAAj}%wu52YMduyc= zkcS_~yaEsplr(=U(;CmH>HI2=$Cn9F0c{H><*=Iky>CXWQ^c6@-HdwgBiNS0Jx)12 z%tPsoRkG;c2(;_3yQl_BC_J41WM+*Z-h@VSizVS~SGxqa7IHg91WWler~XFQ3sO7n z#p2D=_k!0GgrPCn3a94P;=zA;a2hIjEJ$$|lP$T8mSXW|L?!|gl1x zPcnh&z#D2wsF=*Sn&R~WXV@Oj&FMhc5>nWj{gas1;oe6|0Kvuv9wV96#P2NIfcTh+ z*i!bLS9%~NG;WE*9Sbmc#b|2$udS+uTy^LIYzPZ1UFe+-p95~Us}<@I7O}lSG8?>* zT|2lViUz=M<_epi%lL@?AhF&=YQeSy5e74<$|@0u5rVm=G;N1esq)e@Cg<9hJwF#>PeWeIWVXJvCYJ|pMJelVcW0!!jh+~QBjn9w_<|HU2Yv}*(Me?S=6IE+~m2Nb3C=@})A zFFRTWP_mvE_p-P=Af<4^?Cth2v|ntkgRW4inu;~1-^XF{UPPWjxqfprqV?8amBr|CI z3pd{RJYg0GF+^-dPNZn|W%_@XJNIqG3-Vvz1Y3q3Wc12z=)SP*D6>mNXDl?N$(-{S zMH1WL9OdK)ibeYdX_bg^{{6{83nxK@G)10%-LC0RIg)i?&CJYM{Biz~uV@uInL9O% zX3U)tHN{5gJaFfZ(9Jo^TuI$#W^X=X;d2@Cn%|X3y^~$tecOdJZY~@5KvAqza7GHy zUVN6k*ov78`vh)XOh)Lc9Wkgj)0d@hltDC~!+F6uW3&C3-K~w_=+u}3B;e!AFQu|z z2mZO}{}~J!cOCNC=}};VGN*$^iK*D?JO6M+YL0wAy6u9jSJ8&-_m=BXreyvvr{n|N zTd%KBb|!fj8Bm3766lv4a#OY;%&}*^Vn5*M))aRwdkTtFAGc^GdjMJHVTQWuESwx_ z7u9(*N>&QkUv7dPd(bM3Xe7Lys9(DOtbqvO*@W>Ud}4tfRlPe(Yt-?aSM*S}R(!s$ zV%H=UD!XmS+yfg6lnZ8AuzpBrP8qi)=Qf$MAOuy=BktZQag9+n$?;m513D{6o&^nX zA?v&Bd#xqx{%9S^ejSF%vfAH;8as{s0Y{py4G+MphyNhvegXX~JAPG4I;9bQebQmT z^3zZf?3^d&@KkIQ3-2?GtJoA8+$OmTKWOZ$`wa;9fl&P@vqzj+2z-vhH8v$@4ip2l z8;hZ17@?73>(ZKDe7Fwmn}PtPGOOI0D4n$Fd2h*!-#EvLSJ9#$)?-DQ*N@t+M5seA zVrq4TO2}jjIhGP6Z(p#nD*Pe2uCPQ;{-Psw(%q)XffjKdgE=gqmTE5hyX#r_(tCGP zU}1+wV~9jsiE`teo;P4OT(sn2Q{$(!*Zb2tMsb(&h-^hWFF@N_KhF-sUuWvT-Dyt^Sw@}#+z<{YJn%LW zx6!BRgKj7Z^Q#X5g2xJewZvYqJL|aF?NrKN%lx-LO~iu$mKshC0iWVa{#*|^*DgU+ z$fBG_w{8{d%DZ=Si379;v-~k#<1&C63chCl^LHYq>g#iY25w5F>5hd`V~T`xNp$9? z{aAaFM@Uc4ECN?mRCUYiBr|N>2}qT;JP`*)sG8Zwagk7&yFdY$;&Oi+%5(o30^#Gi z2@oA|Lme^r>dX+AX}Sz7FGI-Gl`phoF`?U?gW21iMwBH~XN}K5kk=Vo7yg`W}A>v%b+E z%$~i@@S41l3YZau#ZKnt+?+r%e@MvN<)0>N-Kg2!OV}fJ0M|6X>bRh!XnP_e-}kst zLa_!@NlxiFce7AJa}#1`u~ko&UhT|?8C#OG!{0P7W-GuNW0=QQ;9GVB@tkadwcI6~ z?IOYE7F)h&bv8NPUOFPiQ&g>O0d3UrGYWnf<{G*$2bjvlloQ`Dz#W;C(P#QU<>Z$$ zMhOwTn---UXPuxjUfkCU5mKOnWu2w#GcJ2+$cUL+C;dOW^O7hAVpCUm;(L|G(2ohW zndT4U#?RBf>4PN+z{m`>YlEH&qTe9AFERH%_^)&IA5dr%f-r-mZ1bHoXoXI%dgpFl z&8_k*-V@oPhF6dXR1~k841EMjQ_z3xc*B#U{hp6u+j6Df$F)YtYP~`w_wAT6l>#t2 zho^7Uc#IK=HuWcbR`!3K(enfD;)V%TYa{JAab^#z?`}&iuQjp;sXUu64kR+yZWFp~ zqunVxNDW3JYou8Y6|-KtB~-!?o#0Ic`s+r@#|c)X5%mb`;75s(SY^%Ied5!_4{}XL zERBzpPsE!k=48U0f}8N5v4jNRW5e9kN;lkl6uf_wpH^2QTF#628%6#Q&rf7plC}P) z;P5WE9Ww!}idmQwcfu+0=&Ld28;L$dE3X4Vrwk4>5@o*dD-x$>!ZinMxp(p~_52Ii zFZv@LFj()hls$1P`q)ww{q zl2sUvSr$tM0NEm>uG&GR|JCddNk?A+u54$Lqd9bg28_b$H?x#TA1a8gq3s96ldtP`UNj>S$qabGqN_O?c}ghY{|&1BPC0=DQkWHUK{hZA{g|J)hcF4< zc-zuNl_+p!(umJ}6FEE9iACu_$f7d16|&}#Rxy+?recJxW1i;Dg-ncluWgdOL3M%; zIt|WxYY2r(>lTQCMM?2 z-o-wJtPWXODnew?Hoo2}h-wQMX+TWUiEoY5Bs`IxT5@U`f=jjxNSNS@dyDYf0(`L3 z3m0!eB^iG0v=~#I_3cMg1m44n#WGO}Bhvl-<5US)z+6X&)FSqQ67lj-B95e0C2517 z`vsFbk6u3N^D+)c^fpe7%3&~4DqY?d+RO6Nj^+4VvvCu!_5bKLf2Qvs8H9=O6HCEK z$S`mb z)Bdu|T`p*POwhMLp<>Gj2P(x)R?){3Zd5qVwR}mw9>@W(1<8Q0uD>Zwg-GPAL}`|D zJL01J6l6<*!(002I(78O#KsjIy|nbrAK(RbEYdgB=DzxlVPci8?t0(~)(E7sYNjrG zz@3A`a{m9(l3h&Fw0YqqB^l{ICAw#@3;NkZcH})*Fz_TlJ~_mr3$YnW(w=30^8Zp zAaEQ)!0aDojbY6b3ny`bbR2x>UY_&n-EnTup;}b}?N`kp7hlz~MQk7VLR9OwKyzT@ zT7F)joIrlWJh1(RfrVY(s#6-U2m;vO^r!vm=1hZ5*RTd-BH1`)JTA`>tyWRFWhlxO zvHkr_99}k7ia>~wEik-&`2EnQ^KmD8$B08lV(joTKln4vWnk3kAo;hT8z|K>!W9$M z*bx+@aH}ReGOyO`SrBaagTwaU0ZIi7%Jmq(#~^!g^vYdXh0}Zy!IC!tUXKrl-7Nf| zfR1qQBW{yZfVYih2j||ha*#bMw30ljd)HemUTqxgl$-9j>%iQ?6mXSI$%MLV(F%jg zm72PY(#H5byM!8hsz15J-3E*2-UEw{@h7ef??2rde3BHOf#2DYJDyoP<(W?&1h_%z z^*5JY@~%QFECk%`PyZ5%k?_`CkPi~Q&8Y;yg6QG#D<`+9#=g~QXr@rDm z($dz`GBi$#1#k_NBNy}Eh4%Ik;23J@FiU=Ju79`lr@T8#*Q0)^?7hF*XyF+@_K4g-ciIa0%uqY?P6@@jcZ z3{iobxcUp-CHT*zEM63^H=gJ z8*bT|Z7$#fT<8-}>G4XICk8u9Zz3%LykkBThFk;upl{|H(-sJ``o z3z|krFyg;oGK)e0UW_l)^7sG#^vgKPA!SvAjjk??!{tC+6linw;l~p9q@L=+`@sev`gAO85 z6=?Tos9BAeo4d$%GvN{4`a>G>z%p zvoR#t55yeomZC_^lA3)Crpqm_9W&#hf71537rK+oldV=K)Q^TAW;wRxuwrClZ&V`B zo6kTFt6eJX@OGtiS5=DHg)>`8x&JK}zdq+>Y577`{0lOuRrTaUZIeg#H$YWs-t=Fz z5(r-8Njn&6?!!^pagcl{w;ME~MEA=*NBW3TU4mJjbG2uOQM3vx9iY0(!VVVaVptJV z#c_s3DW_$m*zS#aUk{;2NIP^9hfzWXp7AL8vS|w(Y$F2|`XdUPAGpy5l7ux_Maov( z=N0}(^))NyNm3Eg+O%cxxJ?0N+{618yjlBcJ{ZNTE>pTPYZQLt&{F3nfMU?-sniBH zT54+)_E{9$s?MV`$L}>8eH6}PTRh&lrFh|$BMFfSKy6(6Rbs~RG1Ib#!)wlRnZoLr4|e&VX|iscw45&~c$ zN{sf~pBr9rAmFFXjh3^WdCjcXGC~>Z9%IOJURZU^ww#oL8(60j10u>?KVwRo^~JOT zkqv3j6)|Jyz!MGKreoYzI|?su?l+JySjE>%W@pb9MUw}!fwYJ}Dc8#tQr`6~F;cYV z+T8MO8c2-SXUr1U;OZ55X+-TYl+uO{Z8u=clAi1CH(KpX+uJ)`0G^(gsieQHPZNFE;!;23&Mh$Q zv&ehg4TgMGzThcn*WYya&p-?6l0KT`bhNF3qvs?f^P>2i|bc_59ShoL7U zik3BdO&IZJF(944ihbLLqveZjl5(%z|7}Er+O{b0B=0ndnwY8gHTX0m>tC~}YiN*l zL@HNPqbDoQUE^oOG;ar$tEmH@c=GvfJB4TyxL(2drWUk@?dyK~Tez1N;0XLVgIQ_@ zj_Ak*A1kZ;Qz|t zSpP(_u~PUQ;x;1Mp#Z}~bdn`Dm1}V!e4-#;a%?|>h@XCj36zdfe!%FrwK;^~(9X>u zcTdVdt4HCkhyIwy0q;S^*12cTDfF4OTgv2=knTce>NPOVG0L8ZH|P(X11zsxjwenU z@(KhKjoi64I|IILu4j=FsdKp51c4bVHkz!X;d09y%+j|p=TUt@KP=lVV}z8@X~Eno z9GJFV2z#hfk%y|U-^-54lU zWw2)AfuMeCPpVu>7R9re$vh4bo2hcwrCWiA zofj{{_xsQ&A6*gLz!@`=WwB}N#daTIsDA97FKjZLxO6tbVN;|2|Bg;k-3>srxDXCS zz>Cb!@|x3iZONW+V!_bl6;M>3m3<75);0jaPhN6#?qh_wQYE<+6xZCX)ACe9W80TrfcA5s= zl*f)fa4S1zS$9UYZ|$gVqR-6#45)-}IgEkN0t|?ycl&}#f?`KCzUzStl{WW(_>Z}? zTx|XoGLh%U_3Pe?-jFv#sm(FY*zzXz06ZRI-9^$;>O7$_g!z`by#R#|YvV4?uSd?Z*!gGQ2f2qN9h=W1GRd zWX2&6GpXA7kEl}m$Ljj?%`)KCY7sc@@rk1@d(2lY$Ciea?#7HTVG9KF!RH z?dzq@593zWt=Me(ukt4{v~#rjKE|wiRp|nRR&b;;5Df7a|J&XCnYJoNdV6Wys52o% zM2edvcy=pVo{gDWBhPeo29#&qfE_^Zb?ZV=vKMndf+8Bgr};AhREkvq@SX<4B>+&E znM6X(Ry(DJ}Ru!DC-2D#*#*Tj|R4XP9hrIf!gZud-n_PIrKR3K4&zS6PADC{9Mm!g|LB zdjRiC<^~WwP*B%O9xzvDjjB`gB`TcS_*ardqHNX;XKY3?qX zj;4eYJt_-|fY~WmoBmt-^zL)#Qh41k$%J8iZ~5uD9|RqmAZQ!VLY{s-Mnf6C)tmWq zRrKs~b}jpvPGUjyRD|=Zc`iamC{XQOn0ZEU&;x@J`nmujPMt&GU7BaALd?DW<^JV= zHCo*;0-22*em(-(;1|aRmYG#<(U&l6t@j#k5BxRUpU;6e0^u z0%)^h5AYxRL_Q5P4Eva&u`{qk8{_Pc2(2|ntepNeIoDBn_+z4k$D9ih6iJ{^ggY?d z{VttMObl7>Aje){X7dtp%(V8di`aqaz0?>KpY1thJE@Xw1E|^ll zJP5ctHILUmcFMkFj<3<(H8zrZW%_#muhzXXSs~Cd%)`sE=M$+Dm7)&2J0h;2w*%hS zBGufZRl*53j#@VKE3&crN0Yey0XA-I;9PJ*jZw9vTUUT+L@12$hroQ{Wq*qx;{SIQ z(yuG!*O9yhG8$z;`p>fFLD-VyiAkqGB;b%4TgNTfAiJ4yi*#+ULBBb~xMtOAHInj( zYEY=M8`y`oalrVQQVU+l5){>3!BFM4ixv}<%QyP^^S!hX?it_y4x=U$e#i;2SY~wl zkKI}i?TO7~b|KZr%AFsOyd5m%^=8YHQBOC|hN@Cj*0 z6NKRf`%^Wkf9iF!`lADf<^o6RKRaPzf!RqrR$C04E3K+}sNkac<_BIjzU&tjSgRA@ zT7teZS1M~!L`~tZN+E&J4YC47*%Gvv4A>;)tWC*xnh6I`2mS|-F3=c$zM1n&P2WIV z;RwR_p;`MJC3(=@%6`^7fSRvXaeYM*HEm1vLg{>?_}2m%?Y2|NcwNi(3wSq|HK_tv z25mfS-5zjSHSy*qt!Hhk8v%Uoru^cZA_DyF>al+KOt#t`(OMTrxogVyEPGOQfSrD8 zgk(wix}AwMYm^-?i5q7VhvhT$II+*#zR>RfVnCn_R?-F%7Ik)By2zS^qh@Xw4j*PC zw{dEtalZ?eA7)Y3xu9%eab^IoXR%aK+u|`EQYtb#ISxL)-_b1ShCSW-z-n4n`lg2s z`a=8`Tqj~q62II9pD`SUH;aOgT!FRdsQr#$cQEvn5DU~ip6H@LkM3aEj`-=uwz2LJ zVi+`gBnLY*nJgBsGf(F2Z$Xbyw<2JAfblT&aF}bCWV=Y2Wm{nbed7+BQc3qg!LVYe zp4T?Y?1-Xnf$h&`9mKvx(xI%m$U$qeWhF>{a(eJOPCS!s#5Kn9hwXdIIRk1ST`^~l zjC@ak%CO6UHB)q?(%1lnTx(sY-eA1>`BR~p@pEu23z6ksqrOz+cO0s2LkWyNN(-(< zvt90kHZ_d6@_*Y(ozy=7dt@vJ-1Rph=E0=G(ym2UKTgWtj6YtU3E^bK0JV;YTu^HU z!#*MlGc86qObEhH^o7mZb8>Xwy;&zcAma81QIeTNzkcrTTyGUup6Jyc!O4zvMX`lZl3f^PH*?pWgFPBfra zJjcg{#7OWZy@M;dd=t{s_(o(~*6=t2+!9!$h#QxcK}~7y|L%4pLai`Pv7G%JsslWD zkZuQk7?(#fq^H-;emmNf?~~Ny*@dcPOq>(?hSMM1Qu}{^@C2g85t0IB6b-kh*q{E$ zG#C9*2QR43bI7t6orKN*`eG$@NZrXu2*H}2$a4HoOIW@cAI5BFnMm-3@DzDz(TI(D#R0I>?$ujX^;Rk&I+GjGP>33oy!KXTfObxrD*>3f2+hel{qT1m)%<+! zU}jY*0DRQs7W+uogJNuhk)OV^v-}&VJ733Q%b8(*)^t-YRGNk(`W ztIt0)y91R9O>F+SEE9)h=DXHPQA%$mMjKWP zU*CfY;Yb69(QqBFXGos_S7z)>300koG7n?;$^;2PM8fzO=X7#wz!vqPviB%6tr@Lm z-Z&C;$<1;4{Hy_e3&K;+RuBJ(WxGL2Q! zR3(6HQeTZ2gN)6##wcfpxDtJ@rGzv3Dq)L7-%q1u;;i)vL;@c!T?8sIKPb05;|_{4 zHml@>mqZ%K#gHwdgE=<+3@Nn7*0j)SpmhD2bAv8Mq_+BZkAcx5ZhB{ZLcPi0F3rbn zzrL6L9+USgFeu|G=o7{_DUwQdDKG(suJvF9*~%ez&hVswrK8nJ=4c6RZr9+NUqug$ zP+TPaoLbtAT-Zw#1$QNf5qv@JPK!T(FG-^z681*rE13_$bQ~1&({I?N`b%nMEu@dJl{}QG${e8-)6 zSx=oB&j}SoB`#oL7_>o~{QlAX_YRG!?Hv>zx54kHTcN)_%eN@u)L5Q{w8!nR%<`A& zeVYxeQi{_RVPP`k8W=|147Gx5TS}9jCbhdt>;6P`d@93zVu}|W81c9wEvpQb3VmWh z{e>$8B`G|VMFB?O7kY$jC#NH!9VMD-<-Ylx88@3i?A#ip?wgfllm%r=fox0__>^Sv ziByTvNeNi%C&K;F_v+lpAa7p1+yd^jkdWRMC#s!))A=)irbNy>e>Zs3vK0km+S^fD z-93OZWyVk%Mc(=g1-R)+N`Bkh;G1#&4yQlX01D`+1%eDb^!+VLbjIvcNi>LEZ)dnKT(WYjsrs_~wIfn8X zq{y_PNgVCeg$E;J-%rGco2kP_j35jPZhU0#V=d#a%K^lTssKyHb|KKbGzaKgZ|Y9p z`(=*mfYHtDQ5VKsJQ++$LM|cK4_BN>0#FsAN4-Jv2W}pae);chLc^jv9x*wE#Gjv~ zIj?uK!E*RABqhuCXv4Fz^g7GVmikC;a`r28UZG2&3S4Tj5_EyK(6ld;%*pt0(i*KY zHbeq{=K?Os-LCFTRq8DyRVmR%BuulXuepzT)FBiXfqR zT0_=&f1(#bZ?O`Ol{Gft%3Bz<>+7T>tc#XOkxh!O=c`1=G1@A+6jS)h{j@{HiI6GcqnY78MLl z>Cw6N31IQ@R*tN#9D?sq_CLaW2R(1eWt`8>B`KnS?Aa*$1)-Oy<*sC<{{fK=k%0nH z$7!xwd~3#iRbiu43km};n(9*Q41e;Tar{qrU_nfELud$vba9Z-EE{vO?qecVH(L;P zNgyZ&#kHBk8>u+hDM6ZYC4n4U4vLQ(kyP>PItBx1m|OHJX4-K?7zxW)IT(#`$qNCr(<2=T_kom{A5{eBO~BP2}nHvrojZ+ zvIAz*Y}O{rM!rSqIpKd@)L`$ywNV;*h@^SJb!`a00&LM)dV%AJ>68b~n8xFgCt>3c z6h-q}Q(o)y>Ed%cz|Q-$2B6?sfnrp1A~#w_SaRa5#hn1E$)&&llPB!l3hX}{3bSXi z$(+QgYB@xBp$S96Gq#-Wqjm;^+f{*^*7TP#?@=H8GWZQ2x zdkx+Eg%X|Y$TC$?4j!}=Bb%%bWB9<)Jb15FeZ(2K-(mB;ka-Xr z9znTnqFE`k??TKDp+nxWs+nu#vso9lwT3o#RgToipvFw!dlPU}%O=EL)t7s~E11#( zILJrIKzutQ)p5#cyNeeNV10WIZctLQ&2%C*?YdxA9Ch)$M5uD<8qnVQ5}{Ma>!a4| z&Jaik6!6;e(#*fRcPvj-sILDk2VU)dm*3pG@%LaJ?hC=2NR?g*X$J|3jwy^}yOmU0 zu3g$BWEUsL-O`I-H?e$pB4=7zMU)l@5)?vU)uDY!FB4suYD5 zEAJp{5~fGipkOw9eT^ULYwe-K@th-Tmeg{!t?~f(jw?RZ80FGV)-$QMHg|wIwHLZn zF^2hfm%dZUuKwO2Klqjx)i>p2=tj?2m-hH>RJ3(?jVk!$-MS{+HG}R1FLz275vJnB z?_JCEYY*l>GA50aflFO8IH(-itnUClnn^9J!jhwe;m*h_dysB{WhRp?r08F7OhdaQ z9nXA~v@9@{7hb`IY;-|h?+lb_xJkJ8sl;;G>$}DAUi%Q8$be$u-_J}Ur9VCy^u=b}p9N|LZ&TkdG4CbrwpB8XAXvjuEO)ykgY4SZ0SY27=s44RjP_33YT;QPEc*+xN#u zfTg_=z0gW{iq{lH9$yvv3mFY5Qso8oZ1CIpJ!zb|7q39)(z@sblZZ5i#XD>Gpo0|? zY|nIA-ASovG~Q)%{oB{VY}<}yPk>OOeGF&S_KS31ZRCQX6n%8vW+n!y4i){jPuQA+ z!MP(}oTHxxHlw>TXz=ah@^X-`Z%O885Bk$r*Xey#>9ZP=NF_xyAfCXkE?@!2Y}nOf zy;XE01A5t<^N2!2KT5-M)xZJckKZVuB^BqULpOw8wD}GV7R%th|l0+3vQZe}Xejdt1REz#Y zMogqH_>chG%$HPI4GN-mDWPi~NZ+t)@J=&r7WlJpDi7;fl8-bKq$47qRm`kPB?WTz z3AJ`-^fM-%2X5KU%90RT?-4|4Tr?!C7n7)?-t`@wM2lkM5aa&@77+Cr3}hnlrq=QJ zY>~CDanKV2Lx-W%F!>t~0k^R=bDyQZV4-@6kfMUCI{~yX$#_ODHu?z7ddD;cdfEAV z4k2d8$`k5OqKcd17-)F+oSv27tO4X`axslbYwr}$9;2}U(v1%kqTkNIrIy0e*#g|%}&!vL?*X+Z*l=D zyniA^vc7JwyV|fi7T|)9jyyC{40P6>Mx1AJ*_Bc7TAA^4V!qFq)8k1H)2SpG5~7=c z`i9aZ<&+0R(#lNTduwHz_qU~Paf!L%S9Hd#@pTFRU}l;dVf2Ad0! z=~65l9!=?4*bXtiUzMd@#Cb7vGZYM)d?S<2fntLe&8fhoFG}Le#xmkxxn{)GDaZ!H zcZOd1>b!kDrI_;On=K#|Pi(~%gzZ5J6~)rkz0?ur%1S5x%zF0rO<>Xe!toUUyxfrACSyruqBlGAcTDC1llDOm)cxAqESaF3YIff4 z`#D*aEx>N;1iyf=HLMK~^RU@3d0ov$Y5mC4s1_j{w*&iYptQ(v8tj!8%+t3y?rxI% z!Cfy@;z#J0;?ptx?LG5XsM}KBV`MT>-R%vfFKK%PuV#M1fR_Wjd}9)8Px_n8b7V?) z!S%ib|Hlt83%KrMe87i{%(G_`1(O%Ud?^G~<&+x|<}8_TG2Y!_>9)b7ZIa`JLSmfdMV#}h;>_y{RfuI#W~7jf6_yL2-0v@|A-556y76{?p_O=#1;g@m3QqPdkR=)z<`t$!Ki5 z25E;(Cy06I%+ks67-EF2$MDb^yFg|6WMcP@o@&+-SDexyDpmqr$046>Qe(Ij_I5MC zN@ZcfXJ)(vIvTavWq4#i1cN;y4Z1ITUK|@-ytiX_J^p>Y7^LQOvrz4y{P`@kJ4vZq?II5d%5TDfH4AdE+3z9Kj7x?*u%+ z1Udb~9dI^VQIq+dG+V}>memNtgo8*ebShpptoavhuv`#LhzSr|dJSncrk>)`bG2LS zF15lO>|$y(yFgUcE{DJsnFa{3fOgiqrVg>cRV+haMl-)aO{3U82-N9@1Bvl=_22{! zKy+pXvV~)PfQcylaZLv*H=-$MvpxaW#|l|k;M28Dx=c{>qAZYj2=)B))`V?{!0=1mcT zlhK)PFwzxDyf29DmdCKi=a##cZy&_@{N7OWIC2B^NO>6cU2*8}s$SgwHzu_fE6Mw3 z9QdESMQ7zuIW;_9yrR`*h!UX=u89is&?Eqj#6;i5N7#e@I1f=UZ1H^uOz-IyjRPlf z{wv_tDU04#)8;Fq6Gb@R1@EAI>D;Vb`M}gM>A+vu?LscTYt?%e0x04h;_?y7aCPlv zI4s6W<@a1vpQBF(le=A!RwQnt1Q9adN=#eOR@DEy-+7H8XAzhYWwIAH9ad}_{*3vf zV!dv5cQk;w8qyUq{A;42$LS663JnuLuCukYzniGQ180dYym~F&|&YRDP2`9 z3mne}lgeGMdEBg=C4^lc>dVQ;T!zfWq7~|B2agh$0J2vVjgJ-ui=81PjTe%VHaU7?F^N-s;ve2&3k2d}Y*? z7oZE4rvSCVixa`HJY4lvaB-TdBYB>HVcF;q27}{=XEQ=6oG347se4!R=jkF4>$xvs z7o|8;r)uz&n#`8pjX=vYx-j`3s}@`>#CP-{u+#rBL{--z(u#|% zq{;pz*%9{LRS9`S;L02K66A97$QEThcQI%R_3~ReM>ktflberT6tl8qruw(o!Bv&x z+kd|t&Z{53By~f4KAys9xV&>1`IZtaE5z0ISuVa*k_e6q8jb6v{-NXp0aqfWM|gOc z8@tJfXeFn=a74KxfX-mTT^kYBlkJ5u7pLW}1=qd@+V~$uKw&NM`<k+R z_w<|vt>8kC$B(c_t;-+qZV+e-)9n|ilH#s?KAY~UbWE9|8Z&GCyiq0flv$D@eoD7~ zNsaOzLzswGR}ydlY#@glWk!az3U@sUIm-yp5kK-WytedN@Q{JT2VbX!g&F%u4#lne zP2Gi5qkz*(I!w4I03R}x+4eycJZq85R0;b&MXLcPNoDiZ|_qOqo*G(Gc?C% zM!WMUvzHtb#P}&GV6_6u80xLuPk!)LLO8;Wbg*o&s;RH8SSnG*{R933=4vg(uIWqQ zZ2(7p3R)nzkq+MYm9RfCD?&;xO~kcflGyY+_fWvLdR5Q z+?hrNZ}_Q=0WQ1i9pt_yP4ImNSOi z0DlIqPD@=gJnrD&=t-Y%Py1<{@Cb~U6Zy~5rQ28rwfq4?G-<1oh>YjH%N$h|&rA5d z1sqzr(cxL!u^2(P{v}_BS{2~&L$vC&Yu`k{Ba!L7y8U~6EdmNTw$aLikK7!M#z1k3 z@=L5a*8*o>Au?Lh<)Q3faqFV3itPVdEt@CvH#U;EPDN$6jBU+1yHC*ohCQo5 zV9yS}e6T!(W$}Q&c+5PT4C(XZ&s=X8I3z6vT;~6!E8;;JsIM~+BqK-o`$O*7)PqM^ zqgB5fv&U#6=&I3oAFQU+!Hq_EXl|MoCMWxg4K^|$=&4e;SP6XISvUeQSy^cKgVIz@qFhujLA7ZJ%3cnJe0d$=w(T94Kp=z$%)zDRt?)j3ki;kdn5-0k5ZB%+bqunz&N zgmZa$9dk8mMB@?#)BRNuAcVZ92WQyDzOw~qWJv)KNSqij(9Nluiuj4I{a5=JK?VeR zYNItJiKt;zY9C}MX%q|N?gQ;)h>i- zUjjfHDzeGnm6W71pS|rssKVbcQC}!0c>*W_qqvz&L#&J@KtNUrA~PsI#Mxxf##GvQ zT;IF+_Lh^}`rwlTPwB(I$)5X{0buVxr*lP$fKw+k+U z)$6Oh_8IbPxdvtk^AX0Tnknec)5wSadWJWpK8j zG1b4MoZlA#JCjHEwuJlx?&r)eel7Q%$F3aXgxG988|93K|H_YAJYNgI)IA}|!l{1$|>vggs8j>|Ye|s^)i=I<1iVE*E@j+^{?kK;ooNix3&;o@(Z{1lo zaj6yvK!~}J-G;P|qD`EX4va{dj5DzJjY42(sv&Dp0nM0cZ=CO$wBBQ_5oNunW+F@K zQ|>kJR@}t^`UcMY6lcaK$Bcbv=tvUbrg9i)yoIE;E;ZG&k8LZS%F3O>`7t2eu+z$c zVGnRVgjQYexjh*OEQ{DRTVyS2-Jm;%;2jw$dHNFQSmUztSGg9BQjcNjH`bq&4&h^N zwt>N(uADa5UKBo9eA=#SG$;4)o%C_?n>G0*91;1@qY=*jc;Tnomuz!^_=HS$`hH5a zQ4Qd}OyO!MxJUC{mH}FJefzb8&8OwTSfI^yL`h(`h@_Ex zR3uMR#n<)eGVp;b5l{G<{9mTUapAaRm^dK3+U2qO=ST)M)&@z|GaTmeEu0<62(wq6 zW_F;1F-_laN#KjZuClh99-LIyv2OBx?Kl^;Wa{B0a6Hl^k54rnMBO#%iM;-IHi33j zdq6vlR0|wfbV>0RA&7@Rd~1_(n4K7*{xQ;Ad1CI{Pb*iNQy;>A&dKUh02Diu1jk&lUzV2sOk=#oK^ zi`U1opT`8@E;jZN=?E^j92FC6BY5Kj>E{I7D(fN&*}9_rsw{R4xApXoAd7fC;j!P2 zgMEr*NFe{q@aP{K1(uRLZfL3z#%;uGWb53g(6Hg%j~BbnEQ2YDgsAWmq-wXhb)ilS z+e9q+awUYZv^tX|(^f=3uD_el)V6AZfdvsn%Ogq<^)FS>Z#IOXI<+P&}H5jf+i~2UtNWNcm!@Avf9;vAWiedWxb zZ}~v^5yfdlWVySdr$O{VzLVuq{QV2^fQ;Q4rr>a=vQ1k;B^SkGn~^v7hS>af-6Cby{$I8f_FA^*o#de&K?otv)_Q({ud z-ifTPx8#2jOvjo6jA+ydYeNH`~!)Kd@tw!Qc)HT1@amz6iyW!;1{hs1ejK%S8%NRxmG+4>lc&AE+~ z@=+ZQZPin`|z!)(p2M6w~5-WHZu*U|-q|9dr5BF;! zdoUiQn$qyGOcH=3=f!{NDeD(!`J;s#G8({&lG?|0GUEb^UtF<%cirA6da?e%n}pE( zM6%ZK-jE|RHXmAkxFXj+)0;k%xN^Zhn$om$H(xv`1aFpAgBFFtwDPCM5w#% zfEm{WQ`5!TNU!NMn<05ct7BaUl!03den56ul5wXNH0k9voOSg|3oAVC2}JQl6>My$ zLBlW$J>-A{2zP|Me`|UujXhl+D-L`kqUY43QG&@2Nb%XzV0I=YG#fV(eo+|?)wg@8 zn*i7$r)EyUa|nwGOY1mMP(_bX@z)SciFV7#Ef4QQsT``yE(zURj`fe6Lnu6|>Q+C~ zu2%?+ej$}SCAMp`^70xo7m2{y>)^xf8KYm8JJp8;-^1#Rx=`kn9-kT>^Xd@Qut|@x zpygTA=Jm!@#;jn-Vr?i>s|$PGaOm_135dCI4TU5tX5g}+gVvSWdcPL*P{>_oY6e*m z%ccTrf`4b#3lqk;v@p_0d4@N<@8 z%EPufhs{*Zdwnm)EmAO|hukPsROk0AB%4T8q#BXty+FCUu-g1BGRpw@%(7=%Zxe|u z`g=(u7RVwT0|u(0ztxkLU*SUr5f@~5ew>)l@RrzOWL2oB+2yu=18;|aB}LP+7Q#<# zdT-XakKRU`oF{XC1J`z|#he7rKT8yUE7h%|1$%4?6A0X~SjBB}QZe&;XIjEo#QtdS z(2CNIfR5clZm=kUdZxnHIhvybb{cCXo7059>Z5pIWdt&8S)0(799HK#5NQU{%%rS9 z;;q=G0}LRct}^2)5;!8%lO^Xb$;83UJSwG0r^qoE=OL3ZbcTjig~QB%PDjK#!@B+} zb24v1I#^3z-92Y-{^E|)K9V3e_uh$+l)nG;2#u{Li8VLL5{EW2mB||)Y^BpeC}}v8 z$i^MB;)Zh}VEIfyxu8+OvN;vr6G;p__S>nLv*iupkMu5@al{dyo|7MbM{3lt&S$i; zj%bK#ky7+q;s~n0!=7G#ZhqoNlu4KBV=!5e21rA1%>0FjvZpyJdC~g|qMF^%c?kjo z5OQ(tp_M?zt47(1`0t$=*c2Xfj_42@RcdEQAf7=jaeINCygCiiv2)5t2-P!;nPrt$ zefCC^Stk8ZG?pdpXO-hD@6HeIu=oixg#r=RXG`xzuvL@0$qHt!#@g7c4yYMWkR2wTgr`tT$MC$(bZSSo1bVZg{@?z@ z)a?{7$gyRh5m!IZb_?g+~&Bi6h6RcIA+ahvfb4+Ir|J<)P zz&opCCMN}Dv(Pf7k6uQVfM!~Kg^PQf9VU+=U^)SnuS6+a)uC+8>GQh0!4sjcK(*4PO^mhZFih)1KNwO@n&Y0&6c|~>$4v{QeK@C zA9Efua8iN)N|MOpCuNGETYDt?XHoeHn%f|9I})dTaK`5kYPE#f9g}9l*KugstK2Y{ z(o9}Rt*na#b%^>=QVo=ax^4eR)yql@Iv+TN5F<~4LDj0$e_Px>8>pl!LSCRyiA;{7 zsp1Z?y4AHREJNt`tXxKbC&F~K|N1rFame_Y;)=^{gxMFBCA!TLyZQsk`mPPouPa`^oLkEx_XW}2%GPcScD zp#xXI%@vzqkx1=U1+S@{!4UBN>TjV#jl}4&1UP>Zm_PUrS4xsW4m&O2avsX#Xz{eM<~~(7EnshPBk# zwswcI?O36KZOYU&P7(^Vl~!^YwDkTxJ~UfJN)SOYWyB28^)lC33bVsW!?ww(cih9# z+ot_;neB0bA6m57w5pk}LmcV{V=ngL3ZB8kH{lBj=-Op4 z({28Q<^-R~z*S(+pgh3cOp&oxz`2VGufeYzCPNRLZ7lopwIKT#wvbd%Td$;jE>_$P zgOQ`<)R5vX3m*DVjFLJ>tBjPxt~EL)Wu+`m#y>cB(w_^|O4beF&!K4{i$EkHz}&m; z9TjkVV#uCN+jR5{kw+HNK-)aBetMC-QOBF${$QI|7t>fmR7HK$${D&SRYy|I{Xr`0 zjbTh+%s(z=T3#R4_iJ1iI1xBb4S}+IT8fah&0Mfw-B@LX zxbHOus2h@A?qE%`2vO9rj*o2cvWc)=5cP`j(0ogtri7eiM7cxZay~hB-!e}DjG2(1 z`#pBMVKVMw{oi$|5cfuVJCQ3@9i#bWqHo7VU<^1qZw0+_n4IF zo$=NzRkv40P*#&(>LG<3LEc9)xv|__M5&T?Z>=VopyX*~L5L{wVED~NS~zFv!^Qp& z1)G0gutiX}EeMNh=nN2s z9)_{PxhRX@+V@_^NRM1L>Ag0A0&Ztiw;93rj}BliVm*?<3>PI7SBbZ3I-n4oRQ>_- z9m8hQapVMu+mRu1S*xTl#K0~lKZZN@?mKwS=!nZuSuArEEIuv|;NvL?Toy=}>CuuDvTdrnv7RsEsLxxyUy{nh_My+eW3JB3nyXRc2~MX2ZwxTeLB5>;A#gcph*n!uH?3znOwB zW`DG!@HDc%9!Icl(N%(=FepRoI+^p#w~if;uq|Kwlf586=D5 zrzLe^8`FsG+6~EclfyPLU9TkN1v%MXDTm?8McsR9{fbHv_;`EvL^>tO1r~&afq4Is z>AAioistjT77};`I`a*;VnE{HqOz$X_#yBC+-j$H| znaoqVWcC6he2+>b;w#N?M&dHddjlu(Ht%mV#4?h&w(*5~dWhnJ4vZf$NJ%Tamr)9{{=}PxJlcvWPJ=ezd;x&J0eC{WCpd|!w*kev=s6fi-|3(S@IdkslLI+ z`z@C7)b#i>g0!A~Dm*=l9^Pz0ih-ERqovCQ(1O`Sv#fm!0dtUt1MB8O9D6VT`CO%j zOa!mRwHG{4uiHa%b2mw3M;QzhqMm%b;SA^F4v`Xw1*7jW@;*0kLJ3l%pJ)RB$*g;f zL@z3uHL$<&}dq7#<~gcZcp zHlj4u8z?QS%@pZe>~BsWkv@B3mjNJ?nfgJC5wb*f@lLod8643jeA*#9YYX|8mZwi7 zqm&0qxgW=UM&g-3!Ey#WoS*XjcxmaXCuP(_(Rpl~x3%e$g-T}rGPBUjG52(5OL1k1DI@{<* zu6}-!;wWQ#G^2Y6JdUjv$x{?C?BLy;;hb7Q&UM|*bP>;nSjv%Ab~}=CwAeZ&amCI9 ztKV4yg%w#!!Qq74%FD&cv^6D@gbbjpP|vx40~W|PuQNF5Z+O15&i#NV>O25@*aksg zY#MjUvb-pQG5haugq~=x$Om0penNUH>h~T<4z~_V8N8!dX?$ik*u5|G`M&OK=T@Oc zW_Oyi=!Y~z1In!dxjZ7%pG_tflDr(oL~h-LX%uCg0YY$n@>taho{%LGM1ym#5F^x@ zVImPy+E*WeekH2g%6=DZx%VzP@hkZwA^SWtQgww_dz3#gZ#VIJHd~}15?&d}<&JBn z6wdAq?*wo6Sy}s{Q7ehHDVcI>R}w5rS85Pn9r8N3a`2qrYsY%1M{D#_yXUxfuAA+= zcv>gF)hfINaxH|AkULH3p8eH$kMUVh9 zR|^BDyy-m3ebs!xch2ZnsY0EGLkmX3j&N$6#Rg{81lZYc1FO+CI}z3M(WVMV|F6BI zngZ~jYV(M`;IJ!WWV^LjS~AQ8ioS>Bp6FAd?v(`M<~<6LH69zO75;fku!4F)-W8>X?|OQWA^o1 z5H{fFYaj1i)%T1oZNpV9H<5$@GR_is#AFFRC+j|R6`!Jw!ey?NNS7;i0Js99rq5BP zD#3JzAn%I=*udaNGi;$8mrgL?EpX_oZ11r9Q4Xlxls5i)W(N)4X7~!V>W;qw=7Jj? zsgyCA{B{u!sP4!8Hp(WDsB+ZlPG3IeVg_1DevG@4xQnLJ+l9iB&<>K5Ov;7~2jvgh zM}!BL?OUiP8>*cac(4wQ#k71aVTOMqz^PEkwEU`dd!sl%7>Kw+>YIsmgCeScO_^zf&@?=8XxS@ z&vF_EvdIY|aGpwXubJD z0=T%@!dD;^vQfAQTDE^AGNHQ!14fn3fuk_#3BvE+;Vo}W>~4B~OSLh*Itx{Q9U047 zmu8{2p~%@O5ZoYX;`Sf6!MGcbGjSXw|I%(2ZHOEf0-=@3rILq?0q*;# zl}_z=FH8Y>Q`Bs2nWHiO`2D^i>-?9>&J-MktqCC(!N+o5Zp;9|FNq3uL*RweHel0$ zJM_V$FAvV#oJ7VO|5_VPj|3Gwk#@$w$W*{`3HdeQMX?ySB_WtYmS#m8aMJF&$Lhvl zS3>JK9%&P`x{f$|hHNOg_V4vteNa8n0Gp$^`zrzPUZY9m^ZycuK5<^e%_5Z2gZXxg zc1+YrLc8Dk+`e2!}T5S_b?k6hBPnVgjbL}+rz8(hlyhW zRxtk=d>Pjw-j@^fcv;N2A~ot%rocBrR4wN?ouWvQ+{&<`0$K}1fdUoOxi@EiwBQg3 zB#gp$?gMUzdTaC0=euEXir>lvJ`Tw1%!=`7or|g;Rmq}MhuTyjJP`UY=1x%pB?s|k z9l%}XUbfS(f>B{Vb2xI`94j}78g7W3ysuc+=MiDk+pLahFR8<%ydF@xEem7wc}>_- z9j$QzL(jW4zKUdGPZPxubcy8p%!x?fQ=IL+YXb7#(nP5`I0@Y#k-ODei9oBC=n%+0 zvZixt*N8!nK37saAj`#{I>t`~vK#Dzbhkp$zJVF^PEmvHhj8X>0~R=s9lDAb6ee|D zD+|6i(vvUwWZg8Cp&%>czPvEAb4KfVJJ@dSAr&m^VfF|_Ke=%fzHg{^E_zm-?K_wl z3s}(FcQ;98HZ#mYqIiyqmZ%_TP*Gny5&R&rSEFRm7TTKHz8G^`LJevXZ;6I@(j?zhbz}>*+u1aM>nNkv=k@qpJqn(4V(i9KjO}r1 z%bYG5!PZV|#wJbpTfL!oPy#?WavEupzDQ7<@$`J<;_)D@2aL9=?m8O9c`0}_Dj_j=uv6hN&2ni>=tg@zb@U;%y$g9pN!#4X z+#B!+kDY~dVZ2TCT&u7_0zkMjep6M@nZzfcxaQit{3w#jegi53{og|SwGie>h4eEf zc#?C-wdp1gR8n0hxgG)naGwXu>$3h}kqqr@(c{WbgC0gO^H;KgvnY?U%KKdwV&SkG zEMgI^)KP<59HYai?>zQ3tyHoY-ZC(_fKye(<)_Ot3|mIelsXI1nSt9&?K0hb*SWs* zCVX-w7VNc29?27jVNksWG>cUG64QM)SyQz2C_)iQqu)`Ou#d>a)h z92!1olEY4zoeBdq+ErQ6;<05qo?0}TZxy)P_Z%Nxb4^}0j6z#3;wHZ1&^hEaR~tL) z%L3DG^dpvl7Eu}Z!o5)A5u~;*NjX;udFSb$JUpU7NHlDD0>GHz&rva6!RAeVuU%k# z+>`ECtVh3Y5Gy@5UaRWiM<;WM?uCEf&cfi++{zsxU0Pyjymhu)2T63og-=AZ?4D3l zQ=J}#4LbD#O~(|@vx@zd*{@+m-@mX}BRuuBmTMZXCzb9L2*}W*?O(d>AloN<9&6&- zD2+Ln4Jx?U0YpG_q#8IaE?1@7E-7d?m(?s@dyNUCJ<70`2{uLJnUg4HvbO4xw_jW` zEQ{+b26P|)$oglje;Gp5;+C=@do;-=27x7F;NSMzK3T>FJ&UuI5zR0Evx(h z2Lad^F%cbiq(P9;>+_ws3uQo;xRP`1UB%58J3gfIXl&o5`; zqc;{k_WzBTkiM@{`6)j<5k8b+V{1>camYMv+;q)b>dqf&+d0 z)k6o)C4~@$b8%&fVqDz}ed4`PV?MCw%3z-z$!h(d@}j>p9YVhwe-&bm8%F3QY8ZvW z;RGs1UpaXzLDXu(^3$ztG{Fno#F-v9_Xq^)_;a2gd56F+N7+qOs@Ap3i-H+-+~_;5 z>kZway&dE|`~dN!MI>xoV+(b>_h3$^Pyctv$8R9WKDJ~JRtpPQIH$W5RNf>9q1+t~ z)i32?NlQ)TYWJPmlobO2&8+jo8aAcv^%$&gz77!>+FRX_`ccq0#n_w{TZYdS>x<`?-*bgh5!=zN)e!q}`_*f|CToBBmv$yf-DQNdfS zA)V<24Y9#^!W+LX<%9v`0L0B(5JyMAd~_{wPXk4MWM7^J-nus~|;X zLb=^usF@GT?Vl|D?Go6z0958`xoN#E1>shmlNj_8-QHccTKwx!=UxN$loAm@!&VLy9poT{dFX$% zVF8qgxJ)$c?k58Udx00BnOdwm6{wVsCfWk6SaG_-PC1(I}M8G#^3vJ+Agx+G>z!`!Ra%epR?7){J=VYoZ+us1%h!->XD{ zM>c|EuM_M|7}<@4mq?qTmAEZBZrKXP)HRe`Tv;z-trpKu9$i3&d-Uz1W|IfUQ76sW zVU+W^F1^`?(gH-GE&6J^l4t(;ox}dg5+DcQlv%8?d9NC4NsWe7ilXcn4txv~KKT~Y zj&Yy|b4$lDT-Jlw(S2NE0d-=O`I$TakbRz~GI#HYBPw`PuExqMpj=$X`$Fy~=kItQ zgl=8lxlBgwH}9(;&iycBBf>)8swzj&IKP9!TH)|x0+dI6Tc;`!^0~Qw(SK+KFk$Op z*Ri+CFc1u{^b7G=$3B};4(`)yIVW{odYNai))RV;Z%_G2@3=aIc|Of#;&XivxJAf@ zu3Tzvj;tia<~j6SQ>p}khb<_*VOUqq$?`~Ih9xp|6@72nKR&4wI1{b*SV(@m8u zHtmBAYZf}KYI^!8Dt?JK83kaRVP0`x9<=0K-6ti>Q$b!q0GS0P7N}ZSLAD`QiX(_U zs;G~sLc#Hwa*lyt3(8`29vbYd-gGYjEiK@IpEB{gWjy-2dKU#FUb{o%D8jD0z{_5g zf|>3=8k<>VZN#E5pBIab_9fj(=TK?edExD$Pb4NXfmQx=Z*h;O+#+@yEPoMF4;z?I zg7(FP{QiLRCj^>w((k+R3cKM?Y@n16pxLJs)cMYsQO@m5Ec_4Uyl?Z!2yC+^+!Klg zMe$Lfla_t(4pIW{5m4fE#;t(&;>U))zA6OTZ>hlE-fC_)EMK-0C(!) zp}XALxUT1qJND!U%tHTrP9(E+**ezW6TsPyehoUi9uNY$j1}j|{ymFwf8)nXW2`TL z;qIus4&-(`nVo#?CHcz`sbG)B?tQEr55OP<(CLd9s~9a5h&eaC|1j`m9P5CqFCm7z zBzug~jC^7k1@UlV8L4U07eFc|KnA6fKPSO4^vX#jNY3#}cjODy`|A`VPZ2QR&NLUQ z9Ab*s1ftj)qPS)s?utAKUimc#0zUlD!(vo^;BHcF$B^y&&r$T1i4$!w^xKEydld}B^(80tV{1*Wzn$279nbc{{J?6)6BhARdHd* zJ+N>VEi>`$OY;wXNu(dd{hC`w)2}EevzA0gnbzEDeyT%);&j9POb_xxCHI`W4qqSczfJUSpL!-;U3H-tJcYk^s#ZDIXU*t|jp#$C-FwwA*0ew@p25?P^n(;s47@wr-aBgwObyFafjgJIC0?F$EB^-!IZn?EC= z>9}(>f6(Vu4emTG^H>yTF3%fahFJ$D0ut;!Cp84c$Q|S@#T0f}mIGq0F(^grPJQk6 zIFvJfWdCgAan9r)M9(0PUkm^k)Z-m!ZENPM_OsmK60nWD-gCUH5;Nh+)$1AkbkgZCsC9i;ZWAq@ObboF$|wXIuf*!isvLa9ENn>jLyRl5pO zk&r=Xkxe6Wc`IJW;t|2^$>UOvF=oOQ*s!-nQwT1n%c;$Z8q3??q;XbiA7Ixwtu)=# zC(!HMO6CP=h5*O~&SS?axcx!K$0ti}3~QKvkwN|Mb|(;G=iUkQ02sns#&oT#aVi_} z8F2%Sy9?j==Pi}76!V#4Eh#WNxPkj1^y@n$IZIc=NgeLl$O|`l_mzRB57Jgd*%X@w z0YJLISw;&2d^bpiVyaafcuVyRD-5`?tnwBwnmjTZ>7_P%AoU%Q+Z}6l6HXISo zh9Zp+1q?xzD~!QQ1WM?H+|#87d%|lj&n#)uC0nFIdIW605BO`0`f{_hpVnZ$ZD)); z%?gj#!#|om7|8IXZD&e-8=#_J6n#bunidqx7VR(|PQ7abt!YSXaz8_0pMmsZ{>6_t z;sQpa?*s9YMUS~H(>QJ;rEcU;sc=#Szqj{Z?e}of@*W0KG z5K&uRyFrev+o!io_f4&iH}8s)cRfSwHa?N2Ki{XwQaSNUlCpWIQd(n4;!lvyKc7g& z)HaiXjB-D0hL*8gszeg=Od8SRLV$R3!&?XCDU(YQTs`b#w_g|1T>Z|hH_(bE!>=)Z z$wjPod`@kJ9b@|!B>El*e-iS8>xMR1_h}3rSG~EeOF{6*+=LQnUv}!5?sV1%!;@Xr z>sQ;8(Yj`xiwwd zE@vMtix6g>VllS@y1sthc`@qSO2f0fVW9cpPfTbr4elgsH}5%uaGqAVcXnd#1N8L+$=p^}v$(!q#!dRb$isC@ z_+yV*E@B*}CW6csGna+phAilvqTcHU>u<{JHaKYC$*j=Zz}=Uae@l<^x;GRQ2o(ip zG`9ba786q<1-M(sfaM-f4wS;z{SrJS+-JDQ`ljB&j{Z0#j*)Q0nZ)Jz(?0NjlGP?Y z2~3FXe@h8Fs9p&1q&8`GDCUq-Qz0;VPb!6*jQ{9Cq`1fW5)Ja~qKgAbISC(jR)++k zr=?ruz=LoI%tQ2 z0%E&QH*4_|>PU*+#<-jY@nT5PQpllOnkN>iF2`4J~J3^DmsvhGz(<45jjc!k9AJxbY7z!s1y$IU~b!K?+WEz;q zx5E$BgrA!QYhGO0t(c|p@zyK8;wO6NQw`z4(q4Xt@W^HjG%*T#B=-5cq&A!DYItu| z$GA16*R;-?AqW8_7_MDpNbO`9rIyt1z;D2OEtFep_Vbbr;p4%ix#RI>Rl zB0C$<<>qZoPWt4UU&~iVq-gBmQ53HgJ{q&RnMscur67QZvCC~{d=~g>8j7EaF12o=$zH+m4&K*^5qa7!)3`Y>eKCMgf{cvjXoS3)Xn@F zVg<@|b$*}kDF=o%tNkZN+`Vg~pg4KsXsuE^jZK~}u zfRz7vha`#06s3;{V1hlwv|5`s$taM+tfzh`1vF)C}FVJ$2deRN2FNm34 z2ZSL(FT!J|4%9=%%d@R%+EJvTf+l9qaP1z7{l=H3nm&bYAbW?x{&@mk$X^b7=xv31|s7r&*Z{amU{ySKfO5@aQ0CqgZ1|(i2nZd6a#A%j z7!s{7t+5<}=`0Tl2Y`7%Adc{F>CU)0WJ8J*7K?f6zWN%-7ZA}#ls4V4T9yS4E-~hN z7g8XZ9vA0FfI5!oZF;O8eZaP8gv+Mx4->W~wH>+bW5#e*yB)wjv3Z7AceD-k;Z#bM zp$tFH_4Pkv%DBVX2v`bGwb~f^IDIMhK%H5Hx1ovQ>`ocD0s>;N6BqTUlRcoxQ^{D2 zlBl@drb3V`vRp5R)4kObG;J%?Os-d8Tq!J3!^oudDX^ET?4i95MxeWSkH?v1K-Zgd zTEW#GTOYXA6S{i4muEH{sNET0wuXj}&z)H9K!&@yl8a?w2z1WKScU~`D=0=9un6DhJwXp>N;4*erMLewDJUgoCavIqEN{x zswcA()m(oGzb!D7qKkU%1<}-RF+^C+vnU7GAvdvj$Kd4X{NB039s5Laum-|=@Vb+= zgTpg$NiNG!2uAF;mwKCTtT4p@7PzL_!Dbi;&EiYqrxD5`{B%MZPkDv1o~o>25TX6_ zt~e7f0n-CfnAn(BtlVc6&X?%cf@FS)Cb8&5fy83hp_WsuXQa5hV8-aex*-pWT4cG@ z0D7(6#=U5^FOcw~yNbO-=uRh_pt0MO@F{+}H%2@WHEJ(;|!o1IDDg-Z&qa7CEwvm?tGG?qxOK_yHrG9 zdBGdqyZ<{NNlb(p>new*9v=M7KYeC*O!cNCQ?J)CFQ@6gnRmc#6NaK&k>;D@E>v&UigF4o1{;I|`RX#MWOJd3^DSM&F9cnjP~H z-}2f2?nsb$tzE%vXe`|jOu|;vLlwVlyUY%1zNCXjR+ULinN_FYF_1qKL@COzPs7>? z+n$?)-l%sSW_NB4K>B`#y_N=#tb(9vYpzV+t?;|zP(IG%OoJCl3+`%nlb{6!ndgC9 zrt&i^555No36$=UBG?f9zNUT6it?79-GL_&IYQjp!(@idj)PNvzJ`>bNScIFDFr_X zMC^D@X;zXhVk}4O77m!q$r*aC_>yUQLizMau;VnWf=Tp=prh1?Q2AKZ-hFrnF$MHCvIt~ad; zd{mV~#JE?+?r||z_gh|EnJ4TKjz%Vw*!k+@E2uMYhAJZD=uRUXFUq@zo0rAZ*8XH( z44Ah#KSwfbB;Ty)230>snw-})6csUM)`n7P?t#n8TT^%P?L(kV>S zj05wJe>Ov27ceUk%=k?blzW2*j=I>BaD#0>IFQ!9PgQKx1685)s#Szs^kXz|XK0&Q z1Cic%RsKwaz0+j}vC0T<2L99O>b~N~^5*6L7CB9fB@jhtr1lol9M z`FI@nHkrdW4T>Vu4?P;S+y}OmOI2tyC$8x_RWy35a95W>y3_6{mB!6<%BtSf_fUhY zAYtfV-aa;(B{y;>vR>Ul+OSJ-(>sCrY-0D1*)g2D{>etvXC$?eu3~Kuofe9=aJunf2?I>f)^`XI{1f^+=lGBPlwm@JL*x@-@xcC<{mV~2f!G$k3QwZoI zWlF>OGT=a4EV6sDDP?pH4;=%nQ1sSD-z&Wk)smaHe$w+_*dQ%SyhB2z&A%yek)5CZ#X z$8^nV+Gb?7dr!0&TgVo3$N2>5JW+%WWWrfCCl0rUL@_qAvzQ@A{D5U6c=`9$;Vw8U zC@TUnDIP*K`F3i(huHeD5C*JwHJC6-_SE z1BhemA_w)J3Koo7hRXGT7fmPIs6bQ9b7f-zg;(TUUSJP1t5fb*tob*362~Z$a-N0G zJni|Jz%y{RgcR}w49Wb9EmT8(`G05~Nq>cVAJ~L6su})P`>*c#yfg|*HOvhA z)~Y@w+!@%lN!lzJxeu5Br*89B|RMIV0ce%se=TLxY;ccoi0MvR& zV&ic*qwW*^gz4 zJib^62;KE_p`4AOc!PpbnlzWiK~M57+)<$e|KeC|#BGN)AYv>W05P0%Y%=_1Hh<*9 z+Fl`v9c^LwT-QcP$psyFxtzPrG)6YZe7YY+*N?L;G9!lwrJjK6_GqP67V5&V0CJs^ zf(B2Cx z%gxADSO$@?oV(gdXX}F+eh#lykTyBu>>9eL(9&zKN#7AGCznCI*{0;R9#Q6-f|hW+ zWZzUSngm=Goo1~xi|9CVneg=QexzEN(>Y;T!zJBOCz#KLEftoNtwCd`jgu8xH_l`d?D)-8a?Ee!OUFys5jQXV~A% zsAmkFjQoi<{MRF!oe^VGK73m#y4hzZt7(p`03RyE#5rK z)ys;g(WjI1rY;H)0f@I9Jy1(QB*ie3=OtVVcZ}d8@EWR?4x-6R{QAglB~Qv83KyzN zpk+l*_mKE%G@<7&FU{XD&EbyeW{)d8_Dmi}Y%*fIhj~fIHlST|elGdKjOD7-17?dr z;r4G~YJ|~oOxvx47ao5bLDD`A6vI2^<(BNIHX%rd0c{u!3<;S`P{6I=R4~l;lti__ zedy$6q%wG%wU!^B6m{Df?}BM<7R@SFzw*_ep6xETUInsV#}3)oP$;7{Q$2cD z+V6ZUxYT7y%9K2c2RK;j@KTgaX67pxd_HF`*Er{L3m@7$Gqfvk;YvVK@CDSRYpGeT zO%;US6Kgu@5^KF2#(NUriXfm6g0$frLVL6|EDu&U7FcyLllx0TuGYq4 z3E*4(i%Q?eWe3(lm?}Fh+R8Wj2VL|#qp`CRqM8arFl&rE9IW&y3MRRVIjx?)bh}+e zI2RYO?vn}ep`L?Qp;FR`89yz|%bHqjvKc012Yhoj4^A4VBs3@XHVWS;{+hnSG;YYe zEfzsGby<^hdRxa52W4MzOBz&P#n0=t5E+^H>(bs_t$JtST&{$LIAu=&yr+O?C$HFZ z7i6NCr>~bI>=5I&P;StBkg#V4{Cz=fZn1SzCnPT2zQj+bXt1pKx%Wqki0LV!s`I@g~KY*=J- zP%8&cNd5gn@bN&EZ_4T`Uzuzze4&^!W40qJH!2Ss&e?;SUr2L zR!A`bXMOI|VEV_=Y9OvHmBd+8WQZ53{E;zBvWvj&)lRhbPG=Xta)nH&{W0EaAlJD} zQL#VJP0(9I`J?&Wl|#mT0q|Y@q2i_xCeRW=ZBHz}9!9>LnVD>?%bwLC7qT^wH5C?> zzH?i!S>3eRY)`$6Q=^wn$v77R%obt;sc3OH1E?t7(uvwQ^hRk*$M362_4VB&kU8=> z=1q}cY|tu`1al%E0-aFJG3~ToT!?v)OhMuz#_r1?i7jC+<)@PBK^vac1{Ic6<$$O0BB%);_>hFDN%++gX9r|!e-4!VZVP`3Q0J?GO}RJ#a+ZH z=_HANM^IrRBiOPV3{G1<^6{#n5$GN)r5&_u&|IE6CvS~zTapacn(&Rl4oYv2m*)>= zN-Y)l^*i$6U&^FW%D}J;`Tu|_SDR9^(#d05^a?Ko#>2gT0g!s6(@ z^oyVkwG7FF1Mk8svSEyX5k+qx#Nb*U5#S!ub)a$N|L8q@K-tKGPIKchf)vAd)cP3C zZ7@o4t8Ov34G^MAK)RZWy`eeA-($nqn6}vY?E3nFm7~4xG<40m2WsqPeY4~@v$UU@ zriuh48sEF6!f%POQKX+nX%XF_UplB)LJgGoS@QU!`~gqg{n|`oDo-jy09`qp50jQ!U~@KChpq6mPuJe78uwww zSwr#r1Gapn!to;YcBQ z>2SPC%kbSK-DGRqCfAvf{e<3}QVNWMbQ1tbX!=K|r_O9`7R;rqa+gc=`H$IWliUWK z;X^bWB0#D^rc^Q43GvsLV1HTtq!7sb@=EU~pfjZqeDDE-csn-YBG)BauJ*vIUIMSN?`fw<)kOki$?QnSzcX> zJ$C%}V}I1UYxum5MDh)$TZoNLb2-Kmc6Qj-BBgbsh6iamQUasU3z)TK;OyKk5iyZx zH0io$Ik@^8k8X2QI{OXKF>4|V$i)KYzWDU^{rKK9A;5cZ+E|ZQ#%Qr}bT=_Fe|z3N zMHKJ;VydDUYa?mb;8nKYXy?dg!MK-Xs@yYyZXfNmp?)NE7!?BH=q2pW?wg3#TxSdMm@mj3O z$O#`doP(FjYVJp^04@Vo{l{VHkVa`q^>J4kL7409?=Xyz9b?SXaw z?ay~Szc{n6XH|qh1wt^4>I7Gl3mpC9<=u~;=R{(z;uWBhnko|o-LX!9(qHV$@a&K> zsYmsb0oIpp)=NipTw7#~9Se`5@7859K?`SN$!JOw=mEBhJk{MTrXns zCF#Yc&wX0|(^sC#omJ5RMJyW5Xr-m;Q3itu<|NNK3|d`Lt6X(~UZi2y<%G3fq$swG zO(`zf7$l>yki`4PP+%(_v&dsyZ(I4OTSNS}HP4ww>kkVCS7cc;%C@i}yM*1ObCU3h zwC^}eUuo1R<}_3Dc~sg!B?or`$QMlT>apCS)g&fw+e?~3Wcabtc{0>eTUCv>lQ(y& zlmcGS*U?~Y*PJ%!Ahi27uilW@lgN-C)7?y74}{^DfJ=Yb>&|$9_^k!#n6;Cstlf74 zJxy8*Na1FNdr7nCKz$z)EL)yqIgyR zTr3`%r#BNZTzZTHjX2 z$_*D#!tL=)lTTQt6_YRpCy;|j#egykaY*Q^OZ@ypx{o4Uk)AitP{gT5bGuu4DADQl z)j-qw+Ydz?rZ9@_jtGgl87|>#c)7X@i0~+lrzc(N^tMJ`a8dva$Fb#ajW3x+0=1Eu zj09cOv=ZvPL$TGe88+26c|MchodoF8+0x(W|9$hZ3=^JyP&8sM0;wC~UHuW*iKyl? zpFsPP?cSE1y1R~q+zgBbhFyQ&9>r1M0K+r-qw&BT(2TyxT?=482zw9IY$_l^Cif@BPq5$X%%H`?a)| z|0eDao)j%AMXJ`|Z7V>XqnwKhqtI~WOTJ;+m}ma!nV${VavK;8B56`B?eq+zdXkFh z{RTWOrCEe%M0^u@UrNgiA=VJG2xhutz}ET8UdQlRT0#SF(NZqvH&2irxXJq#cg4-g zT>*iyn15DyXOmR7Kf*K3L;gTa+YLArS=3{zk_U>sEuyRL(&!_W7o$^ES^u-M#!{g5dz(Pf6BT6Z=9n4 zhJx-ioPHh8oBS?vf@P_VVVfQNt&@Twm!TI7QGTGfnfPE>m0t>{OP|>VZ|&RxQ;HSi zisGi?PRtbu;-u;?!oI_wb>?5gKvG5r8rkvga(XO;w#2M_dDVOcl5F`)(Ge46Y$wsE z@7e%PLukHyQ6j)(NU;_@GU@fx%-Mjgpz^L!7Z^W2*i#t#70nKUnvuE<(A2*QrCL&h z25>6-k@T`J^&PC1*ohmmrobeaH8~i`I;E&g4!*KR14LcDb?icR;TMHjK>GgX%Qpjk zQ-&HShv+zMw(7&DN8ouTnBmRt!r@$)u_8*?odxpB6PHyIG zp2D5e@hYJJE!~R{9km_eLkVPqOW|#PV#ieyG_L(#Z6K@GvhdSAF^|kAX(WnTXj0qnaJFX5;j2e|$IB>Z7e36*pMN0Ag-M zF)1H!$E0p5Vu}-da4i(KBV0ZRE_RQW3M$!$C9oxm6%1Z z_wQwb^mn3rmJ*>jmd9=67p=#&VPo&-*S50fIc#~=+dF$8Jg-CV18&C=xJV5IjijeO zTVe0bAPiXwqaxjOM)W-OGWS7w+s(0iv*i!JN-Vx=JEajMgme5iyO${!B2n^N-Jc~R z0P1@XApfw<-z7iQ1^2hzg3(v@fu-=Y8~uTH1rpT+S7fjUd#AETf=TVI%)_`96PsB= znv<*t`{1SmM9kBv11c=YH5{1-H!9(S+2yvA)k`%aTzQ#QZ+$dzjzF=pb z3v^{Iva#9Hj)QvVrMbTpr~d0cy(*!xFR+taLAYLONK}C+=Ip$>Ps~B+BRNrHz;*(G z-2fCOF-ri))!LS@da0^YF4NQx}m*@xo-5ZRR z_Hf$I7C0_(5{_}3z*yUkMD=z}TO3kj|NZ7WO3{Nmor66!KJ3u(NiTs^@8Ck93B{L0 z5V*m-4sJ+mTRC#BEx_@xzJl4KO$h_CzT<;}VOYk(X-3k?QcNj4$OJ5pUjmY?Wy2@E zfNM2_DcC#`fE=6(GcL`*w#KZU(k66EUBbvT$M^hU4oIRqhd3IIwjGeKJR4tm(8El)Eg~Lzs?2pY*%Ln{#ah$$1TJ?xeNmC0H33%4Ufmk z$jQyruK@1d7rB;|{}ewM<2QejjDjCvjnfqP*r6I1b6Rh334Q-r_cr|yY^?(yjmMSw zQ;xEEBPG{K9oEdl7L+Mj|Ud+c598nymD;#MWaJ4_o)Vt=fJ2U zxfa5%xY8~#HriZhnK1TRQak%}xj~!M%oXmZkxpC`qH!|l&u?Z9+5D&dksni^y>Vs5 z+d3ipzMrTL4n2~MlSWhX&}UsAvN7U%diF&0OtS<&+?e0D(jL}E`h{Wi?VmrjR1qij zou@N6B#Y#B#iNHX?Qf7?S~Op*U$|9r3DdR3Xyx$$G0q%JKKz^8OEx^~ezo7F#?Yci zEU;hpss0Izqp>zN{Sl7iw4(c}wg+kw2hrh>XV7-l0BP7S4Y&th6f zp_Pe%%${Gk2y*RG$-qF=nZzsBRKWem9D)Y&5iJ6j)K{L$w?0yZyKo>)`WSs*BN&&) zMajCe`}j+~u{Vcg>z5+hW$5_dA*e*--m;lC4nfIip@WVh9UWq_i|@h#mh)dUmp zl1@>fHk?q@YDrsuo4-C%*K>K0fGR0{8_2I~PgRPhBTWoHaEfnBzpvF2+0FKn#ijy$ zm{EE!EqA4Oisknt00C~<3$c{3^sl9f5Hc|p0#AE=V=t{R-iv#>t=7ozTibTC)E<&F zbU*7XKcE<%b4;r*UpY*(STqbN%5DPm>tXX|KR6vGO2- z@u-n|`(A7m;jq{l^34!qllj}hGnbFloDBFlS}QyBu)PGopLbybTDcG5bE>2cKeAI( zQaA!SvI8ZX;e{aHT(TQcMdK&tROzv-=SBaKgj9A!V~7OY>S>?HRD31b+P~qdigy}B zT7(4qmh@Z*OH=%Hw1`@f8kRKW*5z>nV2|mXUt5~pYFCTt;fC9%`qtPm-iz1Je~Y6Z zW9?j!Zi+LzbOX05ek?(UGLq5DCzbax|Le+!@$O#`(Hm)MXtPdhc4t|wCq5Jz-HVsp zkvIn@g=h*&t;vo^oU_c>WN$Dg%e@ z7|k=5l0WdZcDn((z5DgjU@u)v=jj7d#2{Z$bPFWO(GU6R!@lE{M1rHu5uF2=&XKp; zHzDloT zd_iCR)3Tn69RnLa*8uox$mpyD*w*p^JIaJ|XXF>)go5IR=w&>=Sz2}dmLKAgf5PA7 z{P#q$dey5HM<IjU6cRC-N3zR=B0T9EMC8n15O$%}gaeOscyx;)u zVEWFzE`+la>#aM*iThuMQVpSGLOIVWh;^gRG?x-(6bfY#VW_^VbB_sqlLl-NSV{K4 zZmnYsDw{|&i6tOhuRhM{Y|u;bj(?qN9Jz+4XHlX2`aoV<_{4vRjaDeV(?pvt5%%9u z;gS^syRWVs?tKZx0eW;smio8$J61q3sUljVC^`gX?lV-;poJOCdaemJf9cQIq}HJy zy4OPN1WYUU>I^%8f6DdjOM~;gs4Rm!_ntQF%}2$oRapX{$>};kZIj zI$Rudo)@v*qEq7k_|%H9-j2h=*MR6sy7Ehd*KzuO#=@9%OvN;5iNW?ajr=1|^QplEOGJBR$H+!l%cIH24n>i-W|mU%B_NCHV8j5hy~1 ziI%Ew3eN-?Cd9{M?s@&CKO?xSr>;``9Jh0mWNXJRFB>1-%J{yjg>gyn{>QCrY$XyB z+&jHk6U~_on|g6ym_G`02_uJCSehI0qLJQ*8n-slGjdHwDX)c|NG~25DT}~4YJ*+X zws!zhuIhV(;I!Lg<57ewXiQBF3h@%N2tcuWK>*6@Cwlv;GLGdZ^jPWQznxM!|5%x< z+3c6MFn|V@ho|Fct?rK4PS0D5IhM?3dA7eS)h%~489no+MIvR`CXzdZYe-FNI1bh- z^&B(1o{Y1>Fc%~cpsJ>Z)GFd_7q{!@Ik*#X&MjR@51FH@qyx?AlX zsi=fX_eWlRT%XEjB*Nof!MmgDm*l23VAQSIPPR^1=Uy1qG8-wB#x2YNm}L9Xbp;{dE_zJA6$b+ z88M^)Q*l3-5&S*ip>IR;>XLUvBH5yiL;LnXIqU~uVNX8M&!J+lMqNLY0PhmM;d-#C zPSA5fc%Vph!lLVWq`$|O`CIa{Z45K-u${bo<ReY3n zWH5PYS*a&!R_HZ=Y~3``iU;e!tkP{8=w9Fq^~~u!687*w#TUji zjvr;Vrrc|E!{;9CS*Lhq@w9*deif)>=sJ&yluFu|^9)FD9mx-6x{un(OBzp*oe6i% zJSauIGwzBFsYM}_9^0tSdNOlre6uhciRJ;fVB{Hy)xX9BWe+bJWsPDk6o|QO8A8-y zls6j_ashlV<*FS5!8XlWbj2rVJXe-LQb}f*%}4;!Po12c#S}AaE3+o;IXnfuq)HbJ zAxAyq`1t~vTfU({@QrH(k5#B7D}XH9oD?4*>kus&+ms)@R00OELQh@)x+#o&3(4DW zzTf`&gEWoy$PnX>2!Sg;0hm?2OlrpFGXSAURIOI*%n%gPqM69Auk~^)u=Ai)wo@9y z)GTl;ubJBq!La^fynvASVimjdWR=%P8 zi1Q4QBfM(vu~rr4!kxOS!bTM115NRbiyD(-CGgYyUU3bhNIKMOR1GOO9-0 z@UXqxb+i~xmP+(DITI9!@SitM1x6eabej;!Zr54S8E`voCN)CfArO!+iVxz*oXXF( zcdEg^-}P8~w<&_ek(R+xRVCl5bLr2_yp*0%t;6ys0#S{Tbm5HC9>Btcy|+vt%&!2%FX#blPhbNQMRZbJ4l2X-TTr z(+b2?A{FinNvw3mWvxdtUb|p*p556{I1@r@azzO~{mW@>@QM(GiTo%Abcr#fk{Esa z+2F(V`lChrxW)KBS45OejQ90=OSivZbsv8=ru-7i95flM>ZA%fURt!4(}c%}Wy_s+ zAF+}2g>;q6dC|LEbXKGKz;^nE8^ZNzo%o^uMzR}yYX6V#i1xDTWQh*1HRD|VskD8q z^}|T_X%e-k>+pjJ;(fJfMD{s+-6c6jV7qL?WEmNEKxFFJ-SXo70Cr#YgVq^xbQiQf z>KCG56J}hpcj>Axv6DxTGg(8Li0u>cdJ>MN$(OP018AgDvskZ}ZAJkyuL9G)7?3V#2AOk7p>vQlXGtUN$%Poz*%EILmEl~`T z(6IiUK&nLY{{-(x)L2prz+B;>p|-vspW_x#SsPjBNwB7u?6G*aRT%;A+P2uWMPD+a zZ&2uqZx7Uj>X`;T5cn;N8zJu4eRl2uuz%f+#JQG(3)e!I`h<7bNz#t**VU9#c0abk zw)blilNL9kZU7ekHv7-yF!5M>+PMwhN7IM`3my4Y5X6op~@_~O5HUd?JUb2 z#$1z2(|6W&5M-gbTOn#Q`j*r~wzlJoak#j@0=)CShjzu`+>MlMLZj!zjOt;cLPvW3 ziq~8P$s2}E56yd*%;I%i?9RUIG(R<9PDMsMgsvMr&FJsTg24-8zm!UuuXS_9B($y$ zpR~UUN(x-DU0eP<;$k?>H}tIAbEcDs6)<__-Udi9*IYa6sqNmo5)3R=N;Z6;=u^?< zcZXRa;F=(cP)9eCo2+&t9|QsbHC0G#F2vL^gY?ZfI9pRMhn}8#q1xNUpbgB8Pu)#< z{3r+F0bvo8=FjW@DribLJy>2E8JA25YA?Wyx^m86&lKG+f!`w^Td&$lSTg6@;yXW= z?yrAOUr68#&zw2O%N5f^_BnCV(q!2y?i~^4wA1?k`#qYYL?5JPc^6ds^E!gNZDbqH zB&cyV9}4s*O>L&!qY72dYdK25rpyIVL=>`no9CT1J5!G6_ES*f@m$7JMkK0QJ+rlG z#L4jzXWk?S+E>A6W=OjU7B>|#0>y|+oX=IZ4ZAv<-@ncf_P)#1`}zEAPekuw6Oh1fH|q&TRowm4@*A4S=PunX`61xuf|l2+(JdRG*Fy$Doica4@oLn#KOV zxPjTnz80V3ioV4E&iPYwJm%C_k0&%s zP*(OkOEo={l;IDH3gvI_x@msx3fQRm4rc3g`zp`$J21HfIhGcLr7lY7pSFyHqCrJd ze&lAct@%jiO*T0WeimjZI8!NZUIPC;43_8TqSdTNIpW!alwE#}G>?(R5>6G!^4<^&>T^F(9|Wf#MmJ zsUinP{neM2^y<%)6uVi?r&#S0HP##P^nQOwt1TPR5<+n*1D2WXX2rR`;m*bO%zR=l z4Fc(MBb)fuP4#)GJKG;eA8Jkz^A-MH-p8pFldti zsyRNk1SoG7G$KkgrVdpz$BE`Wt11ShGE!@_HVd|-#ijos$2Z;ekty4XY%lew(CA{j z*io9nXbl+6JWnjF!MQtEE~pw^g$Bap zYuh~F;{Hfx718s=h)8j%9m&nnqkl~|tV#7^`F{Hjm762N;|`nqn{UC4&Kl_Hk?F!c zyG4N5Ci=H=-zHrwxdBar)kviTm+d%4FL*MX%luGmLoz-#P~5_G*L1|WFBBbny7W0n zm~*H-<)J`BDj(`jbi-xay+wC8IRY+74=^k22-aJKN<~!Ij1ED63$o;a`deY4K~T#R zM9<&Mmvj}+4S~xFv(#hL1p_b_)(b>tIow&j#y-fjP1br28RO@f|8 zoSIgJ1MBu1k0vry_rAN`U}LRA{A@{Bdai6NCTFml+GfC%x)#0u6!e%Cm7mk!Uz&(( z9v?&do}H}1WeRknav_2PA3;nHsf8rwXWTU+6TFFDD?2KR?_@VZ??E`)%yq@xaqt_; z3PqtGq@$m(g`B~n^1I%c^0u`zhd%)yzFeKCzmWk)1gDWzy+WkwL~f;VaQwlJpSHIo zExXC9tpp&NK)b{HQ}6$>0XWtOo57R!FoygGaX@w~K}0-I%2r0tdm;=N9|IcFGI3CtfvXGSv<)RyYkoH7M|rc?ax6!KErmj@dTy4+$Azq;6i%^YVdO@3=zv3$1OsxU%)F<#1Gkg3GFBB zG(omH1MjVK)SLgvoPC`=J4CWNGUi7|SiXd2KKK$hA+Apa?;p6Kikk5L14a;cm&xxV zw6uohyRCW7*d{o#gKTRTz@#SV zeL`x}FMS)BQL!FSMY=G@8d)8X^~vr98iFAW$6Mzb4;p3Fvv3=6hi}d$9uSk@^k{Nk zou-64UW#3$3RQ%XwOkziatUr=W-kU7DNxngTC(_wuQ1+zuIj3{?45s7)cY{yeEDM@ zr|xJ%Tobld!2qEvMaq2Ns}<2Cud08Z3tA6001$}+sfFz{osS~QUL@oL#~N(CFQ!gb z{t{&H$q?#(A48Sj7)K?2o=MA-iA3{7+<}?}_W=Ffb}yM7OwojL=f~dv#t$}oXhAg= z%;fmSY^0_GOnd3+-jw#%#(kuNKU***Wh3NiZeT($Y6~Sww#i-;$O)%y3sUaS_P7_U zrxrvJ;fUyWN4js#`PyyAlm6cfV55K?P5>d;d17SUuTEZD{2q0bNy-H8zF(kp)dv6#LLN zt!UIxBSj})Kr8ATGkCc1wZATULBz|Dj^y=%$#1@tUxmfJ1##pcPk*bogg(-J92CYG zjK(PNIaD9MhWWn_95=%(0GaiPw8$7lops@rM3ZR^qo^3(1xk9Vc?BmMWTsys+YPPop$2dITfv z(r{$2x@jQBSP6)`eCvbkU3R+qHfMt;YIMzdNKPHS?~B3rv^u&IV;OkWosn00Q^B9^ zMVStvk0xcphgxzaQ2#CfIRd$9TBejNX{jzKN=Hd}62K2JcP{0vE_dCPctB0{K~P;F zZckT!@zW30Yt`Q@jWxA92|2nwIv9Tyt3g>wi1Q(k zlBqlR?($c#6uoxqT8By`W`G7cw?7uCssxb11uf&~h=l3zoG1hn3YU5^r0;^e+QgH+ zQRd)!+8Bd0n&k}_P&!YE1Es0j!UV{B{KWtkGu9)!yUj3;1X$Sw&-aQ={r$13=(PUG z=HPlUnoS*NT$uluSQUXlx6hggu6l1dI%=o7@`Oz={L)R&A?OolFeuM?G!}XQicrEd zILnoVR#=*I-}CTv;sxQ*F&i|XCKtR6q(@N8Dd)}o=B^aYIdfk!4lr6O=3yuz%VTeF zY2`Wc7E&Ef9tlu(lv2)F^=5d2c)$x{;_Y|6qYsrvKKKtH^wR52abe|@@iqGwMKnTZ z_6)QS43sF9jv&SXg35xqr#^UoPUqoG8AN-su^E=e3t;+riL~KO2%b_6%lpC@d)KYw zHj!hTq>Bg1s!BLeGX8887>Zo;e-A%l69I1%XZ{&Q)h|?bZf-fCiNIU(9I-0g#vd;> zK2EdZ3Fwq7kW&#yPGrd%l5xvp*GFa_-S&~bn4hv}ynr{Q1)AD{2bAm^Jv!@7fz4}dgfe)T5;y@DrtdW!kny=R ztiY~u2iNz_m}XIu2T*0P1)6hLkm5p#h^+cVb*HlE>#o!Uu^ap^rt)p@2P!$P?**3Bf zUlKD7yqhSRp)50k;~6{R%Q#bxEfot!hy_4E5Cq0LbMUn~=#?WIhU53kR#Vt$NxoN$ zkTNnfZ;X)x8+q7^_L7qFNO;;?agxlm>|`n%pp88ErD|4b@FuQj7kZ znMMEG`<*`b@>CU11|oX?k(0W2rj@^er?6z<7=*c5t zj@rb!PwWF69Z`oze0nupxSg)DK)CTE=2U?^FGE*$gItE%mM3{{lGIq_M>5sn^vG`&p^qE?wxG)Q6U75_JZNHSd z$2jz-Pbm|}&0ow@r}BJKrYWDlp8j_ch;h<~I_%}>$e4y!M&QcPKbozi=(|oH8VTxw zBN%HVl@k2j(TuR8!~iyX59p$uN+POLgxR~;i2!Vkqho98^sXIhdKGd&X(q3|^8@$6 ztbZoM0yvIMgwx}*VzD@;y3yeQuiLh;vN@l$XZ}2c_dwdG*M4gJJfcRxOQ-P}(_3=B z6s*WeFPjN5k(9XgNT;923$tiDp(KDcK-t7ZUt(A|%e47>R=xy8ZQKch4G?{37RR9> z^ijAJW5o~5_BDWiiH-rAog1Mq;?s&{GTE`uJ43~Lm&=NzwL1v@?R^xrTGK3Fjw8t zG9DQy$z%QiX=aQovs|)`2KN3#mRR&W`YoNcm2tKCJWH4xua1ei}1K60x_^>a19>xPhLT(++;tB{(KtVl^ed0`6{;1Jz{WLT2d?%zjU**5)jwQ(fHp7F1Q=AoMr?g365Wm z4$+>wmoxb$X7qLj9176Glu(S54;{?51kK_Gd|EJMVPctFGk^#-zqR*gO#Aw}!zWoj zrSKxyFY)}RXVQl>l1;R{dSbX}dokm$ynRPZg3(Bsy=4E*%VGvz{@xw;iv^WIpH0ma zFk)K}T#kt6->>hpe&0s{?Yz{oaE21FvIHOYg6>uVQa(Vh^mkYJEC}sJAaq-2j2fkySDSd(1nFMA)Eb zYUR=IJCgVKE(>4)iuG0X8IAO(A4$H^79bv@Iu+O#AvoqbK>x-Dgjq+jTabHGaXF3{ zGAkG!3Pu~G@*ES*U;3T7)3U~Ee7)ITgLmpSy?>jpa~y|TCUd{A;GeLLZ}g51N-H10 z5yII#7lcm58py(v!E|!dmb=}sb9XwZc}^thm{6CpIRzkd=q=JzD(M4XM(alQDPF>6 zFng==XWNZ!r;1Ew+nq$Hy=LSah5`(|CA8L83@N|yQ#Da#uDB^*`TyfCXTgVr|DpIx zI$3E*+d{XYHdnPH-Q)fFzivc_ULO7K-Q_ABi@KSXSdF)h zk-rN{2GGrO&Q;{O+%PH7nUN9`;U8^$8f!1n!MW#TNUL-4Lp)9^ZjSr{iLuEz4Sm`V zA`Nu!NmpoYZ}L{xz87PXpUlEO@UO4#LkEd|_;{wiOt>W3;1zTS9Qq4o*LvPw_GGJS z7SHVR<6pYuhe~Wyi+34w!DHG8=p6XZl9p}Yf?jp)QdZRFyCIh3J#84=*y)*gbwQ&9 zxjD>{ljF*J44?LM^p4ZWj?M5c^m3fSgXk*^mQKg{@U14TLr(K@?IW?cIL4m?QA>J2 z_Xzm^hIiCH=T^-$D$w+9eDOlO3eTlWM@kmVksf3hbAxSLVrQKJ&)IED?7od2YNq#a zMhPmiC?%uddGV^xwN|ncl-+v*3YH-=KCGfgN9pQYRW8OqLOm!POx;1EWOGuq6L z-W>ou8^KyLxj|!3u&+c`gFe@F%F6G$2&+2or(ThQu`GTha28;bReSMwZjdIgY0asX z8#+U-?3a#(@Gc66LG+m%pdRE?=X|0q8yk^9d{dN@BywZ?&4Af(93gDg8Dmoye=;zr z1^Eu1f51J3zT;I~Uxgrt!bu^Uwk~VB1N=Y;-_|H)M38}E9degLiEI0GBdre7+zDW% zGrX1TB|GHkF!$+`8i}M=@z8E$gdo`StRR zG+ezU#Mj(X>J|?j@-N^LKg$>UvkAw=lTz# z9x}G$)z;gwsYBatf5E5RA{OSz^6%4&VR4?b(JCfr)yhB2Pf1uT-?ds6YpA_l7oZkq zcA)^=jvrth5@Yl{(Yzcx7H$6{6k3t+%jyvtm>pbL;7tP0BOAzKOZRKNNvhl!skMHB zYVHQJWzWXij^Evm_@D%nEd(0~^(F>rVGafGb1YI1An+@^?y}V52PWCzgR7+{I;}l& z@o$iM77}04U`z#Nb&JK=CLA>EZh5386ASnB!cL<(V@sCgB62b zf}A;nQBNi-BIX6_{*kF;GCkZ3CVJ!!68f~7(_v~4%Ge1WUs`_n%*Ct0YkJh&3!UepZ8j)hw&+KOKz_0#j%yq`PXLKIqRXqwa`l z^aUpRzPtVtHf*!rqQ`gKX{{>>&|cJd4wlXLBIu;LrMLo-wad8k*(no{ubj+I{-n_) zG81+OqH1*Y<1wgFK6QJQhW6_Sei~gq{V(6*eHT8XN)J>nX3by*P4*p(%9W&vP z`*~Lu8XHUjyhE)=ro@2yba6;QRY;)b+P=3Rpt1Y6x9V_gl#XDT@XE(W(#sQB2G(UM z0(d`A7Cut%4MqI`Y`_rZQ|gK;VWG(vNd*c$FL7Dj65$=URQ5B`x z;$c*VVJTE!ho|ewz%FrZ$1DgxGt6Xa=5Dy)>Izy?a7%5%WLO|?^0%ur{Wy1_9=<&R zVO-^30gI|1PsZv0Pq~L+15FkCgW0^Ko?htW^gYYeANd&n=I)>5T;M<~VI9tT ze-^`!*iSpP%M zM)5rPi(mq*Fg$M2`2w!S2>QHkA5T4+uKB%^J9> zoUq0H=MQ@(4VSXQU<)y!baG+Uzx5()lNZP=i#Q-Rnu7viAEa%2H z{JyB@+{G_Jw%CnRglk7QsKIDpnj6ls+m)hJ5NRwGvIZr8_UV;a86pyp_%V9i`B>Tb7O>dgL%nv!r>*?pUte4zuxAZWy;spL(W109V;ZMYGXqk zcJFv}@yHdHmO4yU0-A{|KqBP|HU>^Yd$Dj_=3|oU-W6?M?S#aG%wFg@aDIkPYW?~M z0)%MXdyZ05!JO}to?*}9oARAD;(sE&wlU^5@8b^K{4ba8=HOJs_5__kR%*+z@|IINMq*L3%WY%TAoBR;B zoLgpo-LnnxDbx#{%AdJ|77z-%(xz?gQd2fd8HE$78&hF#_X=jq_D&We6wp)S*Mwi< z1fpzblzCT{N-ST>$jH(dK7r7e1~aQczBw^TP4?DCbQeK$0z;&6Qd z?EU)qwYLlz{8yKQUg5BZt85qBfjfRL3F;7Wuu>K(Gv2!3?TtAe83Pb8v#T4|C~S ztxAG^*k3yO2%C?00NI2%B=f7yJOT4)v=+!$P5!s=4A09!^6XYCG;~MErWyyC`uY3p z3E4!{y=@wJd}GhdcyQq{m3vkC3ter#gF=Ur~N2mAeNa@Il_ zi$pKI?zEwh=0%X}`NE%+`J>m?rb&)@e%7B{;k+m3t>e>!3k?loaTUlJzglNfJ_9^W z1+!Jpu#1T6Nh8&FWDQTVi9WxdgqP{CB2mi{JCd#cauAl_@VOdG=fFXl;@U za(A^#6!Z&y&Mxealo5Q>cKi<6y&dhO*}LoXdC{-*bYHquZDvqRXpFn|OlM3HwJb$< ztn|Bn^;ld98-Fr81%r5@!>^WOP+;WP&q$oVvEwI!x1MyKA|Bci+;G9qSAB5MF<@Ng z1!^xO>Bd$EnA7qs3WB~?wOs7Hu-K;{)<&&8LrxUjbm#*G(N7W+;FoBiYclArL1`Hb z-5$CWvGa6NFEDvQazDA+sh|%$4U;1M`NXwI)LIJShaBxkH#l*<(b@mjna?alx|JXq z2#!C#o0slmA$}!k@#1>8&}b0Xo$j4MD5rWrHan*{{0u5JJ$kqwa@~SLOv%UUXunw# z6{iYp#!E!Bz35SwW%5lmQ0NYi=lZq0!7wH8*}e&0{fchD;cT?k)0h|if+c>+sdq;{ z;{0ntMT)zkM44#m+r$)rfU*oYhF3ZbT4;Nf`^@y~HS3KchkRLSRLY@Few{mnn8CRu zz!v`i90ihiS;+*@;01GzN#H(E`R!v8emn2e%7%AU;v4JAq48b-9~nqt{R{>Y%Pf06 zDi*pUO>S}82g%c$DUfZB^yP)o{^L&*av^mp^3r+SkS_Y5QHA!iGIvN2)`}+B*z0;> zdHtq5KqhWocGb;-SpBUw%(0nn&FT+5)Ou)G^}t>M6=5gCBlvW;de}G<{o*OYLBh26 zlf8MNKIzV!WK<@>a z^ooZIwC~Ij@e~DV{>7G+KsZe|J=L4o0wkJ8sBTS8{68?-;J_vApb{)yACp^c+a{%y z`bAtOJl0J}q@l#Asv0u3o6yAtMX$^tLde;IWVNW24){ZA9ZRsd`E7Jh%JDbZtnYECcmrV~_0!doNMyqqNx}^HL2Hno4;vQvD2Xf3({mhG_)q#7t?%)F3(;&$+(v z-$qtjx8p-r0oj&^pzQMk6-i08&{$mx-JZdPijnzObeod8P)p5sZW(`&M~&26-`7+J zyeTxX%bSye9b$T&2`jDsXF|C-^kxM(IcDz~&T3~?lg#7V%ly?a({-z!@|gt57E5e` zW*1o(_KoY~8XmDe<3H6GPs!Gmot1JMOsw1I-N_Y>g7UScaS#yr_` zM(4Rx1t*F3TUc#1nkKd0j?92MO(S*o3Jt+=@HLrskP@XxLIO9Bu?p6-TNTHlq5nLGAyWTA;0^8IW_aP$`r&(D^ z-I)%y+0d8p^$Ny**@M!%IX6-dP|T{h1TC<)Yjl7QB9ea8g>8~<&EIyH7rosaSf=t- zb>fVpVo;UFXdg&4(P@QR9Ru>Usg_o(`>PaCyjrw8`Uy+GI1d{-Uuvp$qt+M9?T%Oa zB^k6@P%FVJunuF6JRw>NY2k<*`~bMv27&martuN|D>Nl=MsB7*lS@Rd86uqMhxmlG(0_$2M*%~5KiZ(0c>iYdK z1Oxt(5hBJyl9y-xkKnRlq_^yfB>MZa^ctJy`0DM=a5@(+Wbo)1eH^1fYA=yZ=@r08 zBeHISad4c4`K_eTyvg5xY~co37_!@;VoIeWHEbqvgLoglUsDGlDp0kk(=a@6C)cub z$-kqRl?c{w`HEey^{ozJT~6`(gpM#1zTqlUFvMH+LUi-mDGs0u2M%7C6NvLEl_#k+ z7{?dg=o$2LI(c5pq8o8;uO|ew>MTu~Zhf>o8!R-I>^2wMDneL5C7k)c(5Occ_z50} zzB8AryB;cee|TFO8$H;cd1k=Qx&sH?k$9*6iV!=jiji`PH@GpLj_NCHK^b8HF;+Is z^Tp$iv=UODY`U3$2l}S^26qspMan^$IGx-Eu{LjCndX^F8u}eok)Wm_DNPz6PB3X1 zIF1)gSfpEk$-QmP?MH6kx`2@}K4+%`7CW-tp@5o0I7rBi^R_%P@&bu%Oy?osvsrmq z*w@0WrU(aubVz(sdS0{Hc6NpkE$PM`x%SNe_gM@VqFIIF?YGR0-JOZpLskfn&^t@9Ku}Kw3bs0I1>_qnKT>-;z6x#@Y3`LxJ548Rc_Nd zoGm9_peaOX;d(SE$J@t@@K%ea>&p++?fwC)tW5g-09dYjcudj;;xY5^U$ zqjDB~PD^laf7d>T!y`Ers#^UYp;Jf0o&(fGdUDCVZQ9|8Gwf-*!QFi&dQqjUV29+yJoOLFHn6jDqm%M% zE^kS(8OqQ9uVp8oWJ!3M%!aEEHh#`t{@L-8Gyf6`)k-!*-97}$ho#h_;BgDr=*}Jb z;%1=wYtj%G+uzQi5L}Mfz4M^auzDWhR#AXv+0X@NKsmMA$u?zo#B{)?Qbj`A(TU}F z+3nuAuVTeH!0R@VP8^rKTN{Aa2hxK|w3f{nK5+p{@%nxviBbbkK=QxSuM*jJcQhg! zOkAbrMVw#bKQ`q35>?m_REKo38h(|4tcE}>r@P^4Wn&=8I-YvCFV#i|WnFa8)%q{G z(IQssb^LO_2c7p8*Ts<;+0X(nUUPAWA^SM6Hv|%QY4BGDCA9CF?qr2`(0}jBRbd_&0OTmqwS$G}Df_bb$(D*Eecg|sv zF6n9qsRBefx2!qFc?ppdj3`Ozda(zU?W|KNY1+k_vlr_)Qk%7JrNR)9T^MNVYiS&1 zDh~Spsu&s_@-E8*@me=Ts!<_mab+C#u!$v~`iuA1Uaods?8WqE;fjZ?T6zzpCO4A9qLIub~RMyis^4uzg8NgeZ>hYDC;NP7m$W(aXA z@D+<9n{g-1nfyeE9nEC&*oR2U)YsU%FV;QJrno!5Uzrkno6{XG``q7=ccVyc(z;6- zMZhkA?yqEY>;4FSC_+&JT{M8P9RxBO%Oa?puY+4vPri|;0RzWY2`!L8)%IJlaop?$ z_hyaWC#t(%WICDM0XkqZ6R@DR?2IB4Ii7q&CkObZtI3(9V1&*ufhi3dKcWm(8h+X% zH-gNI*&CPq*}F~Mb!hlexws^G>pF=-PU9@Hilrcnqx5(VB)r3l?Zagaa8`cQ@sfq` z^;~?jf6V0`G3N}rL@IG^NT~JOh$s;!^HqC7=w**XPS5gFfr)wO1*|PGuM!5D~Mdb8+}U|JtVW~ zr&++fHXkX(nVGQbQE*QT0QBlKL^*K}4W$vdBe_KAVzk@gBYu{=hH~Fmb4~gd<#Wq1 z1)8ztSxb4f>MOwCth|_yE4@MEX%jXF#MIvhySVY3KdOJxE4YA!1UqGJu9NU$^^@u% zCTYyb$QSl7l{W3t08a2r^GI#%AnGrY6(94=jWA%A6W3u9I-P)YlXTT&R{&s06Mm_P z;$3*J3QD(83k)WoV}sjQRVLIAtCyaN;fLE8BKr;}m9$mnW z0jj3ksm_NhHqm(HEmw)*C=HXKU{iPTCSv=d_c#&dnrRa}LWn(#wzYZPPtrh<$k-1p zgCKp53){wTwnbL^whD7yYd8%~AZ%O8k)idvg+lfp-O?B^<3{kGloW{8&-kx$IX38d zZr`OXn>^G5Jja~Zmb6MYn@*ujp2?9Ln!hbNP1)g?TIJ0s9n~iM?ufMTz(|N6_b)30 zIO_A%hu^)UU1qn)-LM5oryNbC&d95R6{zIV>O-+0f1`%I54*h2ONb`OAkH_lV(=V{c?00({EI<-AOI3HADZi%a&$lliW|c~U_%EVSJ+m>r;+bv=?26@+ zDkK1-ktB0t(uf*0!PRV)V=Jr%($nfmIrC2n`a-O`fYY64$8DIJ(bH^{yy-?9QL;kb zAt-|0{$a1bNWht67AyHfn^1y%VLty1Wd+4E;J6Xgi9V-GqvpZv=S;L}4G;!p+(z_N z2?{WwVl#F?i&qbrH}hLQqvouuSHa=cbeCmcHNpfD7}RVfK?ranQC{D{gz5N$ zSqmP=11jZyAr2G(yr!H{O&M(w|2_XmO+#zunUii>| zi-h7NdZ7F395f|Na;Zf4?K*x>3^ZO=Vn;pClM%p1^dBxLn=5r|cq$t{OOhn^dBT|} zl1TmJ#P~zn%6?SY<1)nyykX4H2bb9@&HC$xaq~VsMuJA)GXYOrh1qv53c$2eTZvQ_ zTU!f+$Yk*7E@z?|c6yQ&LH3&(8TSc@`}2Du*c1d9g5tf6kg zd}^ZQ(LeOyatcwJ;bvGPEia|t;z2dH4s9&6E_jpdm`nqq9i+~G8>`4sOvzrG`Z!U6 zt$^Ko$KuI37Iy>y8KL#>haHu<(U8mS?PZerL6@$E=_`{eD| zRB;EsWN*ZzI4&gA7_118)gi!xj6MHjzURRP^ni9Em{uq@Hv)nEmw9p!5cRk(S6^IZ z^xfc%UiUQ-DerZpmJ;m#moFubQW8%}XWx%6&3hW9O&<$@*4)x@G-)RDS%-D#f&F%< z?oqpMe&(^TQVz(N3(u&S8$e1OVQM8`Uw*vVx{%`{3YJA@ex{|Qykq9 zE#w4sChG1^Q%e`fP@5&^W}Psi7a+ts$>zq(te<4U=P^Ei$Q}gvEZbVAPc=xODI1jvf4o4mWP)7>z1!Cfl<(@v$6s`f@Nq{dDEI6l&7;~u*3A2l{HJa zbDJc@^E16!Jm5qa(#1K_%sdy!eaNB>xsi3j<3df%l_Mx19%SOt{o=ar4f$k!%7(HZ z8*<-o=B4XT4zoNxYk$DRdRaT%#lx*dy>$_I`<)HNy{syKqHpoyB@r|%ksw%6g+RsTG9)I=J(JjF<~iJ)HVj)|w%nXNdPnT% z!_gWh>A@_4X1m%;>=6~$*7VlrV{$sJJj+{edd?0x+Cqfq$(TrDG_1QbO4YyqJJ&f` z7<169%Nsc`W;olpCY%`IaZx(K0Z3I*QDG=;^DKKJO}960bF5_7x4U&>N%f$FjktkH zJrmiPf|{X)s>|se^Br`U`(|S9_oVQ|^LjKT?V-EeqJ!t_c%e_Bgs|a;@@L+$z4!RU zzT*7Zz1f|$@A!{Nbo%B?BeSJHs*CXq1@Pv_(X8}$Vq5))gl@al`pW_ulj1JXj?#RB zhF(Kjv~uX6kl=O0RRgC}Dg33fN(#b|_Yz|*z%Bq)KU#p~540fpGq*LF${u$za}~!6_hKrX zOtK!75!d+L+@e4_yMw?7TG>IZ5sbjzsH#^|oUBw~EmiQL5!a1r_E1d^>bSbFDNPsc zhpw>-f3xN4vwI_E4X7|zFvZ6xooKxf^JQg|im`Rkz{t5ueW`bU8{fMQ;xtl6OK!yR8n6HI@r5XirIw4Lksz<1y~d%>2h6cY zMCT48BFqq!&UWB+>6TSp!dSzA=-ZPeR)Z&j#iXdEM9B*iZ}sm8S(MEhs=cPrI=A<`>!leOu^MN^50{uu+kf-;ryH-g zut_g2N2%!dm_h3d;Z0$S`FygvGEATAWB@_UiD>Dyftdt|q{QaRZQq}eK*XqGHU%qV7u$6Ige;a~T zja)$|iL`qujkW|feZOt>R|BP&%SpC*|H{b4%#=qYGp43UcezF-Nzuih#{|~7$E7%^ zuvNeZ6z{@n_|Ru%HoHAo4@d(! z&p6CiBUO<9Z8$x6*O6RZweZv?zJ_^4gp$D?KosoFGR)~i>N#B?zo6|U)T|F^RyErA zDoPU)yB1=46!3@2*wnN5X71hFTB=`Nb)8RW%C!@HBZ}Xam=*6hEAc8jJDWx4d&FD%;&mOZ)58fa_iO= ztW7iB0)EqSGpYz+g_Y6aYp2L!1WQY3;az3ucTA)C`W8PErtj#~%{A*6|23_uyV>&5 zJRlfjLVP!oRLL*+J?Vm9K2IJB;I*4yA-OGe%E-B<3D(lLQec!Pz-&|EhDapkGaW+( zxyyKO?5nh_uE-KyM4(Dmz`^n(K0P5iy1 zOS(q5OxY^h<^7S96ZeS=f0E^Bh1#q`*uUI!UUoUfMRz>!DOkl{CdvirD$_epZBHtN zh5=AuI(LR!8Vv303}Gr8^G<(1YwruZSX-hX$KtH=HIsH2{}gOgQdPL~eOYKi$sSj$ zVL(@_#DLiEiS7mxx;n!H?8-5tgdN9QaJYjVQFxqDK!FjgT>?;m);D4GNJdBJ@+jHW zk4c?s0VKa}1@O}rmV%|l%-hCecoDdKNoc>#nUA^zoSntAS>*sCAiEtf9AR|<=( zw7X@2$9#EQ%U=Iag70syqz_R+e7~nl%se)=L{v~HiXj(QxcCCc)~`b2O`3V6O4=(u!apie(wUxzU!A!OY!gt?Vb7H z&zX=eT>TbKuB`tL4tWypIW0u+{-!@1*`Ax5XM%1_b)#@0w6R?#XT=AiHXK!t;LN%d zjadQUx!chG+&_zGzKd1A~H1fRM9u1 z42pZ%8mN>y=<0L8mIuwc<5H-z5`1}WB{MaTF}m{=ijs0@l(HYC?> zwBiz>#O1DbdI9uQM8fkJ(Wi%$*yy@-iNjL32)#N7x!t!vYz3h+>($&zF5aF!p^u_e zC0q=GX6LVqBy8ZV7{Ez6U~iYNDXkbtZunwvhB@WbiOiZ&O`-QbSRnL!O3hHeE=$?q#=4Ix-Zyi536!eB0}*N1>wsP$FU zt2e|X{*;p^gt*C+a-@zXx8YgpNnWnizdx&$RSINtqN6bxNJ9pCdU}4>wOIho?iP;W zEVng6(gSH*kuQC)@H5f#z6eo|Er>B9-$w49oi99@%0io|R)%-2I!$BMUe`(z z5Ew9!^*%NSbXL^h&JYMx&G zP$C-3|N91UsO1!WP57`0oEw(EN)}#9z)21FZ^rR9PtDRRC;=R$ zaTe(}*ssUu1@;p82_k25L2mS6I_B6Qp7UwpiE=33V7(DLtHX5^h0;QuF+b(4fYG`% z27D`|d{DhH1dD+@Ej-QrHaw$|y&Ii&aW;@Qrz{%c*%GQH8lSRmkxWCc@fWYtM-BjA z6zl%KX`SKLRnXvw9&hS-j2L3Xfr6U7WlI=186!oK+?2ebDVA5dc`=jCeG(XZ_6TCc zCOp;k<28cl4gUWP;`{qU29Jv$=N%6MGk*d9%A1S-Zr2;h@UXR2Jp$yQo8HSvEgIeQ zV`!;Dy{j6_I-+F8)#K6s!UWZ$H;sgTG#B=959j zM&)mz1E(z`IvqDpC3Wrb@ils#uA&5YHXITkEw5j&2>{tXZF$!mM$8Tw`r&Hszh-z z_fOh&;rQpNiywNnEW#t`3k1d;30WSzRf5$qH;0f%I{adgMI;-xX}Luvj{TE4nsmbQ z*1@JgqF(zfyRzI;*xzCzW~@9JRL$iOYvwK};0HZVIYd{0$;WdcnLkJ~bOeTc&Z$B( zcZn8BCa=P8dzxHiVLd0|qDGb(VaVR&LI`QMRFHCZ+&8q59#OqKBa^fTvbbIDTZ13| zUv9^2saeah^;rF$TT}*tUiG-JkdLvC z-_LmM$qS&q-wON7YWJaY>ykRoKJ1As2Q;6JF4Wy2IQR*^;<<;uJtUUmLe7XubV}`# zDydZ}M4p;mZly%+O60FidW*|@C;Z=@(W3Z7DxkuK;U2lAViXI(Ooc?O$p~b!E8p&i z)r3kq0B`Ipr^Ypg_zlD2shL@(K2Va#5LtK5Lsis@m8oV zUi78>K=F?Pr1-rArA5)mH#lAj+1~!Facjk|Ug%49#-QYAiyBaALOUpHIf3>09$C$b zZ|C-fM~qVmV9-#TF#S%JdA@3*F0B!WLhud+4iL>|;pc>*Y%%;%b7XQ}f``?I%Rq&ELvP5&UjK#9_{M3`xR_`a%>=Ug{}aGC2W)e_X0{YmRk; zuYU?~DX&?EM}UvE19;H0Ni?EiS6b2V#&P*y`rckzL;M16Nn5<}hZ)t|Ax!igJBu9= z0ho59QkyoeZ|1g8sv~FwsGZVYg?ne)-4kls&rzqJvN^sPbr4Lp4R;0j;~6IP!5A^) zMzmp=86SMk?`Z~49s%RzQL+fso!o15T^F&{RH4KEC+Fcbh-7d*&V&MQcK-(vsx9Da zrOv!L7bgu&t_l#yEaG#r4EwCuyVRg{Ooo z3(%UKOyYB$_l4OZS-K`zAQ6B|F0>|qR;p$XghCYhPO%HAQ;=+bBBmuR+8dB@r~KZt zXkM6)(e>Pd)WvgaEaY?g*M` zp1Y=800!0dWqW)U`J_q?b+Xt5?i={{-&d8024L_q%EsUzd9L*hK~F>Al->T*GwxB& zgXvC`tXFRi%!1KFYF!beBr7~lx_94A5Ny4|-hwW0=Y73NTt<4A6+{mCEY1V?Itq7K zmK?`P|JoMtW`dAV;3-!+zoi_^EaJLFc&tmQ`2?QGOvpCjI%)H|qQtf0;A%JHh!}@~ zr}%c;TbNP1!InNDH&(PJAAx9KOe6ctwLhQH=h}Wfy~*Q6W>bECv41e_&+G=rdCD=^ z&ha4xO)qHBGvY-ejXA4J;vVdl&BKe(VBE`_?OKs`yZ}XBvT8wbeV|1 zMpA^R`LAuvcVL-fmuI8KH6`?NJ*^GEdo;D083#yNLZ8LN9UH*(hRv}$bXhp<3!3RN zeraM3L2_sC2xTnYXcmjkj3qzN~0-Yj;-FGrhQJrA%SW!*9?^w6365M`9qH!fl`A8>HAtO-7 zsh_oA2QXsFy=oBEEe3#kcnrdtIfbVI5K#M9I)Wk7i?yK%C#lKMlS%bxfrOQ@LYx$h z%5L4_11UlptwEHbWnp-oK4lw)1zg7^U}{-YK!MJ9Eo(_SxKlnw9s)Dyzo*J+VZL}= zUe^w2*?X<`cb>U<@CK6#_`Pf;;zd9>=V%5wzPapDsR?Wg#%{Hxq?3$*iv0UaBvR6{ z=Mo~Flj3_>m=L=PG?FtVB()w_ApsxvAWi#}lZnPgT0xCiC%xB-C+E#wlAU8t7Wpm) z-^2t^eQCGO2s71rT+He=m%KBI2>8POD>NC(v;~xGUL+<8Yx~|IX#pIVGxpuPeyPmj z`!O19!A!V2HmzgOV#z>V4K0Ku9*yJh7Z!p>2F$=GrAQCN;YVG=g<^*dX~znRiDJaS zc%?=?26*-Hn6dM0&VJ0&s*~ z&3pyB=Cteo=%OWGhu#O`Ny=sH)^bK-89inx?__c=@8Ta&hGltSh<;SGB%%SSrFmd4 z2ZHA~8O7xoVy;7<1Sl zMTunbJwLb`>Xf16d`POhz|;LgcBzs_KjsAPV#$q(hcwL?n!%OV%${m(Y0oiafraKQ zw5iq^0-^0G9Od@jS@~59Sr4l5Qt!S%l*(@1HH4RXW(bGGjPPo!fzO3ZbXz8w1Ip3W`HkWS8#ogyrZFfOtkLLb?{Mcs*@@}Z z{k0`!ky7^Ld+inE1Ve?@;$$frD}#F3Ew*)Shd3H7h0zBhe^X-pUtuyxASY_!cA}!$ zRCFHVp@Pj6o6O2)kSVm`%H&#ZP+r+&Q2=l@=f;FiZx^Ya<|R!1~oCPn+9SH{?AGdh4Nq3yxXrqyJS5IVrp zObWyCo9dd(D0z1gYo@;}ye;NR%s=p+ssbIMNnL=PG|>W?e{A9 zHR;eLH|81^GjRALd-JDO#~4^6CAMgeczl(0glQ`RVZLzYowS?9$OUA*xRx+LMw-x7 z)bSn#28tN)ny;AMTB>WNxNOfP8nS&Yct_XbD#sLeG3H0vVd1oR0{nAxN@NK8JV-dW zOg34DncwD6x0@%uuT)Gt#&X+3luho%zO8&s_fmhFX`=FQM?DUhzqxyW{QB(w_Pn}) zoO#9gsI*RhA$-bdqHSWHSX!4|7RG=o;ss{afNHlMQ?3znf2B0N0C*m9FA$H5&TKU9 zwoLKM+G#14_Aq@y0bI8^&l<2nO$arBL;MEzXLErh8p>gE$;}W5@m1#B6Fk4^;0GBq z&*d)>T=l?xjbWO?+sEs5wXvZ}wIW;S0mma1+dP3`V?!F(Qp*J4-4z#K9(swys9M4` z6&s+h#{anIzv=}7@D2TES6?V1b63MI^5%S+V;{uw<#?C08g^N}XqKJ%Jq)h^{XeDH z@+5W4T?e)?=sPIF^Wvd3S#tz4dd{;zMx!h_^Puu*#po8wuZQOhxMaL8&IuIHs3o@q zI^FSvcHT4KeX>HFj(n?DJPBge2Tl_jc)?iRKbM`c{sb=Oke$*Vonb7#NFh_BFnipq z&xZ=u&Uy8i;_v2_`1UJy$NTpl;`aM;R&1bBK%N0Iwa{ zz!*i)nTJ1>6JSB4c$5}ol}`*s#k-H^Z_~aS=@h5jO9BD4CZaML0`rLOiVHnosRnW; z0M+!PdG+n)IkB$VSG+Cr2&A9Fv8sbO?@Z4+16xZoUNdqShvxT84H0qP@=qvId&^K` zmj&3}!kk$g3^>onK`~K%jL^oWI_dQZB}b1Xz2!o5f;gR?N3A5S#jPJOykZo1TtWsTTJF;5VxNgnG2Q3y6VzrKqJ9w!tS)aEf z-ko_!$ZGJ}(8@~JJo0GrI|I7EZ*>f}Gks-j&Ml~yI;e0;0b|eQ!rcu?EgE9x=!vcK z{3CJRDwWjd)O6jMV)a~$V1y^CVCsq;Xps(oHuQA+SBJdoukkK0*$nfF<;1*c=3mHd z1^e?05v>S+=i38Ql6$x8g$UTqX=h@Xz5#uZ1jvACdZ)HvRR~!M-^J$B1Nr`p2DrIo z_Y1*#(f`!iro}Gz@nLy#8DGCTAp1@Q1z7o#$#}S|0mu+gssgyQON^rEGCV5f`nV4a z8G9sK9DtBu$_wGaLNhbdP39Ua*b<(Kxbg9fQ@R5Z_wyrJMIQZf=MSe4`{wqLYw5&d z4PXGU_lOz?l>SGJl>i+StV_`@)p`i2E{KiKlliaQwCv*H7gkOex2c;(ANS?=MG$EO zzrCgb0%W=Om@$&A15tE~{UiwOeP6e`J(4Apms4OT;R|>ynB7ye*za^?zSM?77NEHh zzbr|WJsU~x4w)by_Ot)VtR8(l+*7Nm2d~jfO`JKf+T73z=Nv2mAiQofuOjb~O9bjA zaaxxhA9J?2z=Pki37tiV-kLa3XfeA47zI+&5aS?WsNIc60{H4HT;^R z3bbFYRex*G{}=EOVr#06Z`1A!Wsh?!yO2 z{S2f&DlfN8&xU)~WzUHe6*lvc1_!bZ(L1kvEjIUyt0I`)5l}xG0IvTq(X(@Y!&f}@ zpo=T%Qq9zsrH8!}Xsa4hH(%&n+Qs^TU1dM);Q!x}S!IjAhqLXHt%!=nKek5(qi~(z zHY%)FiSV$Y+H+hUp_K_L#3Y*RH8fdWPN+Qgs;pEGuQFHSmT5Y}jSv~|hOa5w$HYpT z>lU%U@Ru=+_0prl_D>i@AtRyv$mIzp!=LD)V`Nk^_1BM;Ly>6VOmPB6pS6#7MWD1^ z&W*tKf*qG{&z_o6|WJl{qS2kgo(?rif&1gG*#etlci@5wx&Dcy+*w9dq3 z`zuvz%*tZ}w006ULe=t1g_>qv*FibTkN|iARLhE#Q%Sa5_(yAZjtL?QC^u-QF`L9= zgl7mcD(i8PFt;%80v>`E01fkf*bdM=iQkY=F;XX$xLey$YE#BZ)5XS3&f}2?d&tvgS zXKlnYOhTD+e{G8Z>Toh5$iS~q{vY!H1|z9xE9|?du|aJS;B$THF{_eW@^fl4{kY=> z6~M^~##j}wgc#ZiCgxn*Yzjkx0nt~#NPjqI(J2zeT_1%<$0F?&;r_*PU9tW_dBx^? zzEBmH&V{bx9&)UKabKU`K*wJNRI4_iKYH-Rsz`a4jkk_2D?&$elc#(Yz8UK{Fn$2# zNN09guQO*pVarJA)Tr~HaS2H*K1MaTJ#Cpz7PxBhVqw2=PM4`v_gzJMzK}!xy6auK zVyU0@0sK-kFV!PREWzidcyXz3{EYO^I)q(XFBrI~=m9mAuSqyIF?=M&i3sXmC$CgyUB zq>5;f)r&s?aSqSWF6;UH0PImi3Kv%M}fE)6Pf%Fd|lTGA0naoY!egKpcoB z^=(E=dr!ZgwXtuClNR9%N!5Ug@=>DXAHOqyVs^(o{_&005Dm5lr@h<4Ggw1Fk!DRz zT<~3lSc1EYL2o#)8QN?dfAzQ+6W%UM%I{h2#~h=w9c5j_`Sr96vLLF$t<{Duq8b7F z74)H~uqEI&jJQ}DvgFPqs025#Nb{!KX9w;7R$$Wkd_${DHlxOsxfO0%!r+t%?~_kd zkFLGxAL27Wzy&agYIMC%ZB9@)8#HCY*(Gmv%=ka25ahpn=!y72?fR{m2J3R#AbM~0 z#jqjYbP=g(p!=(*X!2q^3kEgr0nD|Fp481it(7T{ed8_`k_2EQ7}gB%DjFTB_&n1q z*M^Vj%l>l>y8!|Om%2T;;Gy-fGzf^4nLseBj~vstr`>8-+_{#HZ^yNTrwNl0&^?Q3 zq~~4xWMM1O+=b~A)k)Y78|N0`#({P6N0iieVjZ0PsQi}`IhWr~w9m!$#R_hl|E{PV zcbZN)!WjW4Y7)Z!ykBSS7o^rv_vlz^f-_^EarSK!U|qpyFw6M+NB~Nr5Yt9qZ&3Fg z5n&axBoa$#%OwnkIx~NMZOl?J!@JX8?PCKcFT@d@oEgJh1Q?P0UvUa9|CsS_J@pX? z#kK{4o9m`+|80S&08EYJYG`_Say^Gqqk3dq>l-qQwT)>@IQ;R-IeqKTTXC*>=uthv zZ7Du1A4_S=3h|8TziNnM9L^b^Obc_0NKn3%RGL3puD2Zhgq^=E@X@Tws*^CkIfm0N zm&8BKkzu4??TG$v3{r5`IEULW&rR1He_Fxx1Fn(-h^3J3XiRhqA~dSS7`Nvb9H(^m zs%zI18hncu1RHs<_0hGhBB0`jiZ{kNfvr8+qBmalO{!aJ6d-bT#^{h%h)Y4qM zZNASDn^jBQm8mL0T(s6Bl<)eeGKtNd25xK~4P5Fz$l|yOG*dn#`%HJAoLL21-5s%S zwNF#oER<*p@!8F4b}q^-fq2=+-mz=JG8SvqJW7V9T(qT`SeKV0Pp8}#o~TGSJk!+u z$LX)@G(exu(o%(HzD;vx`IvZ&kgK*u{H2_hY5PCg`RstGtm`)CVm0Oc`|W*Krhd3T zq?y?k4@G|Q6FwzU7SXDT6R}(ut7tsQ8@-~Q!x3}`w3%%r}pdJ`#b zea7sP8j|&<^C3APa)NhY39f-i#|P!@*6K*1X1M&nR>gmAjWzKl^~ut>q^*CmD;;P= z%OEQRL>u3c3X`HmyL6mBO%Y|3O0J2L*ym91d&K5KBGbTe;F}*ivwGYK>g67A9Ut|! za^`&tC*U8{nDt)p(S)wx$~C~;n=X-X>d_$rg&!9;p)%3+K9;u15J$>0~l_)zH) zhAn)V7&%32Hfrr%}v4usr(fYi93MF&zO+$csMBaJIG(7&(v)dyIKfL9+bcI9q73 zC|`J7pb>Dy(b-_kW=K|x^5WDO1LyZFrfpKwx7bg6z{Deuu%*J;_Ms<|^yR7m@CBDK z-C609Ngw+BZCd)3aAeauJTXw&K;xdo>v8;%I}f_Ejs4l`BJW|Mn=AEUaO3AgvK>H+ zP&VSl`}i=&sDc?r4*K3};lNddL%YFQ(;qDB|@I!INFJyM%xJ#t2vHDC18S2 zClMIk2gP;YrOKxDFMN-6$StY~LhNfTtxXE?xm1;H>%f9lA;bYpiV&SM`;#-!VcsKq zz3@rdYU`yo>@c=T#%mX>Ni*yg!NlU)xK{yp09FYlw$~^UN+?ALgh3Ov@x$*zjEZT2 z2=-d^vTVZGGIITmGC8Z7e>-;rowrsl)Rk``pUd6f-X{BkjgDm-D2P|1Et>la8@spW z1glJ^KYugGa6Y4fbkAxw5|WA>b|PbBjp+A^R9ILK2}?#>LB)^t?Z$`dugC% zzg+osJmJUf&@$T-eLh?$o<`mEbB0cVT0NY|00vJ6Yn-D1oePY-lGmLqz))z-QaC5=DE!I0vw646-!iK5MFUk4oY>_wA(N*4v)O;BZc881k=!Daj zu-C7}_3~3O*tdY!Rk)LGTD#L*=OW1n68nb|(z}4aJ8BeoZUf*N^m5P%eG1{$xSHT1 z;Q_Ht+1Bd zpF$(=LfC0ZEeVt*cIm)jnQfl8pmJHV)4yoJR(1gYKLEfh^kJI;fW}lTxb^fejWTIW zeR*a38ZKsSggWF%c2n5Ss=MkNcEoEWE#Z^;%1d(gjAPG1AboxJF5Yk^)YG7U>u zi3-3QypvoUtP7IkIt1nAsaO)%Z;1rZE1U#miAtPQ5l^7X`I_rfGV)kW90Av8!u^18 zwbdjDOr9jr z*_<7h{}L#FKn&bBJ@v|od)mh{I>|=?#8BqfJ&!QPSh!nje1cPj$5WKdHO+r>1hNrv z_aT#BFI)g|u@zHETeR(ST0XvQ6laZ(5S7lK7s=j`P$yi4u?=2_StaG$3t9aF*rfM` zeplh0X^~(lN>pbr0rVe#rCfoi3$aq7XycZ8B>U0o*e`kgr*4YTNrP)Jbmd9Q__b7m zI3{v2*-8PJLY#_gs!X3Ts66^HH6|zMST>K1bs=fWWveOWen)+C1g+ zO`-M1G3_5Jf-Eum3Ri{G@bV{I#~fyg?-G|o|K9`U6!FZ}%!7lmp_;1ehxI{@&hJ&M|CaYnFkEym zj$$nEw~}nx%mDp_riW))VW|n{A}j44o_wOz&XhwrFVpTGf7a^Pk2>MMBY6(zZ(t~V z$2f(55%V-K-u00j$f{QS$Ek$KRi8*wlA5bmn#>+^S$KWkOx@}Mre58`{-dMe870`< zXK)YhFfgM|&jQSmLOj3}*n)Slha{!vs=ap+E-!6E5tm1Fwz&enyi&wOn1%yRVZ)>g z*5OIFv~@t>@^5{PHn8$vPP+Zvezl&Al8KI&Ii5=I zR_d~IHial~3=wjA-=$SdAX=^Sxe-*US(2pCmL|&Y0XiBPMUJ`^PX#TDz};N)Pme;u z^;+*rGiQKNab&WhaulNRo-W>zB}fBg37nd$NhOWP9Nmj)POe8vv#48FD-K1(!{sr5+goe{m)f|W>kV--10H{XX-6)}dHc?uIb29YJ z(r$@4<;t`9g3;UI>qWZr^g^z(^jaSGdrqS&0?L;Iv(#=Fzr)}Q<#!nt@@P=uio~h7 z#QrP2)~RK5Q4jmk>hxjVD_nTWla`9p9!xS|B@owP;rSDigzr6@UKfUkuAYkBZVqN z8iJwwqOUkeuSx|3Yz4bFgnqHT_t;@#haU2it95r@4Rqi*`U!H%Wg2?n7nk9$5HB=9 z+Xw+=IZs;XInpcz_Z&qBX8n6coNmVc>QOU#Z}y_weQ@vQaTZS=V~EU#!ju@U!R6Q% z3fgJd%F=>cYlO|I_%PwD$9@JT2I})FNvU40KevOxy-h_EDth7v+vm*w^C?>C_-&hr zkDlPI)XUJMd|y%#lXG?%AO~JgmPy^~OOKOs5&AqzV`)V%86WWtp^j~2oobrpr`~3&frD7SrWg z-?XC<|MTYdNR7CWhXU2B1g|`KM`8N!(G9qtuD)DUhIgZk&H!Z%05n9}_@ey}7*nGJ z_-O_Ag?xZ=1mZ7A-#vnB(a&)XNjuz|mA-gG-y0ej@URmD1L>9DYj*NCrpn9+#RNvT zr;;OStwNvjg2!HQo`2?_wXvCo;6%5lS8&0XzmdS^o^gyO)XDfgDY%l;=!-sf+o({_ z^!7e3?^Pcxiar2KC2DYDi`ZoRHp$8fbSlv{KdfhKhhJvqUrBVMp-0ZIT$)(e1(;J) zRRbl0fnfif%?xOCHo4c6&v%Wlxy6DTvuE%m`b4SQnueI>s+F-w91zrC6ed#4uUad< z?NuFrDb}R&?!I`|Q&_f^;*?x^6u{{x4#r;qvUGAr8eLksWd4@|vKR>s!1M!=YdjJe zu%ID+j&{Bx|DHK8)O^OZ{UL*KDX`HBFkPn@VA|d5JOzix(j@YI3LXJ|M1EX_Ye{hn zr7zGwJN&0X>h2vXIp_7TMM@Ykzk^0|RIb7MC(-mWrmPKtQydaq+gwVHNhW1v%Lg1} z6+FvPk$p&lW6F?PxT@NBFSibABTheT1*zG!$65>tA? zg(NieRP=X;^M4tIyg^6BdusHi3KoVF#Nk47UX&N}vB~6ueQLC_MazOOy!K6|h&)WiVU+@nfA`SPQ`^$^Jf(<$V$B1YaH?dojA|0AG zE-}MQ0eh|l19X}U+e?-`EE-y)t$)&$ap>)6D!p~9l;StHP3KLu*5g3v=mE;efgk(l zI%1BnT&kSgTkPqii5kOIT$;zApLqFnZ>op%=uAhz_)FO_<%*uE{f+ZM0~P#_h@I>u zq8f&J4A-Sx2t4R`MFOs6lM1z_Jit%C%adrOCDslLmlxe)$|8bukHdCGyo3EWTkOm0 z!ZTM8GV~SUge1O-n!)HFexA3C%cEbITq7_@^bjhyy<~rB7?6}N2_e0*<*-?5_ zh+!-Ti3Ki<@y$pVLPnr;O0N=)as6xAmh{Sp}0oP*E>goCR?W6W1 zM4e2$M~53FCnWFaX3#v4YrYz#P#+)FIg&gPSIADiGzSZ8MhH2BhCv9GGxuX=K>?kC zAB3^#W$nuZ5WcgQ7P~}d`eM>IW$(CK+@>k}9r%laj>n;7zt`(~_w3aMzkUs0E(d3Jd7+jyldxtYMf_E}rdc@KhPr=|9Fj=w?cQjZvm+(EJ_cEOuKiZQKNCcGF zGwpXbu8qTbE6%)EgZe3xO?z}aE9e%CVm9i-LhzQPasDwHnEBbS%!@HJaz9BSBluL!#K=d55sLvT`}vXcJ1flwsw>wxx3d(NJ5@h#Pffdj1T%EBhZjQ^3!GNs3y6If0$v}4k0{RL#n%Si>!BwX!Fn^ zVQdIOo0^e6|5hGLsC0-*dWZodYkXIIR9D61!3PYdPgp)4rmbYyX~>daCd6pT6r^gm zW$_}KgH3Tf1(bPF+)l@#4#@1-Jkr9&7b#krqk5TQP=6`HSS_8@GAaJ~bKg1IgJ}NK zAjXLA`V}Y>^{%8x==}m@FtoiQ#3lI^MHnCHGxPY{9b);q=D&9XSK%oCt^?K&D57N$ z=ZZS0yr^E$_Sz9W5Be{COvZ#+G75IK7w4%73x8n{q}#2Z+rSkS=R=PDwyFh?idjn4T^HMy{^XxNltT($ z`{s)OE|in&oa7k7u1!#f(Qbe$DzM-3la|%XIR5{jU7v3PfvYwwwv=uJFu6+p)PVcZ zM$ctlWw^c|Q$o|KJ0ZF(qf7cX050-Z#U~^v8Ki!Y;AF~@XE6rswC?g>dSjWl`Vxw( zaY(DjoFBT@pfKIyeGTS3FUs5sQbMPG$FtYuCwIoRA$QcpILrkf0Z!$tlbWe#6^bKh zEi#g@$Vqm*tB!BKGwB+QzWm{Oh&(gxSc5r@mg>&lL#b9Xd>iXF_=}wpI6qc}llYlA z&qSXnG*b28OgAFRjn5R;U=oUJcV#;`gOOw0@kq^7wEl4ql_vAZn2}DRvRo+1>E~-ynw=Jc+Rx&>1Q6jMYz zq;-LUNTGK(aPS=U6r4&_tAvv`FHm*^(fBUjuiQ#E$Jm5=W&ZcAE2{pcq)iUlG+aRe zaTx1=eg4Q?Qwf6sZGuW|3s?91ZEHWBPN^#;1D3ARLw2!PVNQn`iA8Yle{EB>$}cDz zHoMH4JRQ0EVqS*;gK>;Y-MNdHr%R1Oy1{`}ES+f-p?O$>?g5=X>{xBUVOXNzv549+ z;&EB-z_+O`O2ndxC_M0+U=wPz7D)?$6RQCR)GukKiR*0_{=*T)j|VaYG%TgbuD9?; zeC@;)HfV`{MM|m%KW`SfQ8#I~>P!8gCA^%U^GzLFr;byDPG5Ze0?wGXl8Nzz$+|kY zr#1~Szo3a@b>l%`DNtk*W~oU44%n!#FU3jH%FBIZbtHZkB;!SL;ZL3Y;rDI%kVJOw z+O=OCd|WI^-afIi+&2C;;7Llh-?`WnIgG|A61Doi;MhKe zLC_VK!EQLTv*4STi6FzTIlY3l2U373^ESu{5@&pCJ+>u5kxt$XY#vD=+#i$+XbHE- zCAYOUhu{miKUBbn4)v<-PR=UgPO$nc?NfT{o@+>5444hU)|#iCFEP3gwLM$xXpFqI zJN_oaGPKGayuexo0J&hpFDvDX5hWR^q=W;|Mjw^r^a#WnzmsLX?V+3+h`8(jeNaeh z1Ea3;d#(fYX}NGR^5H|M#))?s{T+9fZJLwGQddg^413Ct?DSkA&qWnNj#A&AJ~B5& z$LkANUy3ukRBgO_4urm#zCdI9!jAdj+Jtj+B?$X`cIf+rWYH(a4D@bqrY0cpvq6NW z#=}y&FSZGqbt|Us2G~KUusL#-hX&{`a+}sIbU8d09?)O%%CDdExRg>@=r|V->d2?X zl;e7sP9jkfD2)QIFuM4DsCVOcB~ciaA8(($H%Rm4@*ZV40fBqP-$?kJ+Q^6h z1g*L7O=Q)sqg6G0ad69=ss_%jnWGf1^=HqNr-(G7%l-)>@_Tj|gVDrbFb97UHYPXX zc%OvrSP;UFg$e@1t>Br~!mT_%(kXxm+tQAHqU1dvMI;29-;iN07LROtqeU`JjgGM? z6vU@opEo*cM-2gQ!D#oKa#4#bP8b`SXk>qZ)G&P6eDgsiU-{7iN&u_({-#ql4deq$ zU0+L3Yw|#a^JGE)eye4}*4?sP^ljQ((el2nczsS@<(J3*ForcEJ|$n4f;YFLx~p@} z{?)_Ke?okzWQodoU>de~!%T?@$epeWZ^(zOaP9w6Xq4C8g_y7GL>CIFu&V~Uz@tpO zCIlE*MFq6t(QaVX4?EEAu^{av3tyI1*Uqz|+F?0?C2dsmbw#xlHgrb#HGt^=gFTA^H%~kxbCEs} zqSvXfEA-0YVnn~0ok<;Yww_>R)9I@NE592o`9~_MZZ!hC4e{Uh86@0pvM<|cn}Pq0 zb4>*-5B=}W1|IMDc)h*BSyB3D3a@Nsuh!+`VKP3t$l%tHhI>$6A8@XV2kt8DaP{4d zhdR>+38{2z?NjEG3EHjO9Y+#_L@7?_C=_L%`?yE%FT_kPECJa4_iDUcJgg7Z1KtvJ zMq=p}sa9Gj8kSJg>nc2kECHN>Tc1*`$!xJk=OZ16@wcAA9FBOzpMF0bORYMqu{k@0 zG^@hoh(-N#4c1J|{Za><`lWHe*)9l9?939~D~1T`YBK^inZwb_)u6!Od08RK0QQ>6 zD@?yFVo)K3ZlT0O_0p}+0&M&wL7Y)KQ@ zGt8B0!QfKKP_VS;u)%ewvFwxm-tr~yjGTd_YM!}1@Of886Fkucs+=BYb7(O-FP zkmPKe>so?q~RD|Wb>Fni(N?%Ul$o_)AD&fAu3qY`_fcmH=c z1u-<4o}oewcH(VQF%tpRTpqv4-n*`GY~mFLS`nwEV6|e9OC38Z$)DM zUp^QE?U|M~AyuMSfJ391L)g&N_-`UaivCAkmeQ{QBe5Dx$TN(OiVJ0ZAJ5oC8O4Af_; z_26F~JY$B(LCS&Goo@8~0<=azig9s{_ay)=L`D)r_#+Y5@zTd2I)$_z(3c|f%t%QPhT$=t8 zzHl3VOi1*Ly9%jT<;d$}+)oL-w{+^SWLAoIy3Yoxyu%`!)as$WiCj)Nq$3WrJR51L zmR5qc=x4Qzm3biVr@-O^MsI!neJFNVmgMV!q)r%$C){3iCmI&9yjf)SiJ}ULur7Qd zj**O~<;j3GWI}@m#5(y%$2;rqlV89JmeIYqr(lEqpM@-a`Y?aR7C8HI5zJww+`m86 zeI>nzt)}JpfIRev(1K>9D)OD7w`Z_98ANgW`sFTZ z2OoCsN}b`a>TxPh$o=*w;eQ)z+^??K2qvGGIa}9(TW40>BU;AGe`Z~T_N{toOzhFL z>6foS?~=%Pz95Xm`Cf+uhGRBh`}VL*s28xj^UuoCPsG%FKdOf7ngP;Pii!4T1<-wn znXjiXkz_4xB4KEO9zc|%?{7T5IzI+gx22u=z=QSG;d=31u5`DUW;Zg~T>Yt?RKoXg z;+x7|Uri=WCEkW+NwER#G^2$v*t2sYLTz5Me^^u+t+VFf$SZoSwnLipVNoty6 zuqu8?QDfG}Wjkb^EcHym19@+%WA{a6Cw3SNsMH+&F;=S0{zoB5+ENvQj9wjig2}8# zyOHyp(J_8eQ$lJlm#x~Jo;4E#H{T=z`dB?Z!-`)Js6bsz`}XS+PopwL<0~wXQvnyn>YlASupusLIxS3K zOAQ?OqjzN&D*Ih);i{#Ep`K&vf_)yj0^F#TNLRRaZD~U#-MG9tnozI2Src_tPwFz#MaGMbVU90-cOto>4p$yf=`^*8lJSIn&K;Am{dt`0$TCMOmv zRD6THuI~S-;ywgJiUW^WT7Z!-l(iMdHGP!!T?^F*fHfH##*EhfeIq?;cLL5b3pBoG zJ+4H+Yu)sTJGi~VHy#nW4Ul%ZLWvCrO5PodcAsT!cmq>xl0%3eVuJoy%Q{w%*lZe*(Ej=7aVy|Zq8g?> zBLWTU{~XP%E$k+jn53`Jw#5jNcXlxS61JG0QAzcW5sD(7cC*Z>9GFok70I9@7H7hO zK-#Rl!86Iaj_dHfL;Y1}QN$EXbYPPRp|H;~W)k^rXzF(ko&R@gj$-lUbW}}{_-H@g z=Kk<$4jjY7ulpkX(kbOc;Hnw>+X|s)w1RLGjHCqJF-X!4yxNIO^Y;`W`5Iwyn*UBY zI;TCJ6t`Sm|KYwzgV(NJdLL5y)kCmDF68PX)eWIiG#PiaNo%(GF=d|(<)2AWkYbt$ z-76^i1#GnF!bewO;rHT*N8(k^LFu`lx<*dV{A0n4pQhDRT+7G}69T!I(+(U9hx%&7 zh3O@cTI1kc4LIi&q~xp~N&O6&IfK}VSFFpCyBplH@G@i%F;4b`H2)*h+m=${`Sc(@ z)5WI>CZgKS-lC<+uLLyrbmuKGhoazb4d;)u){dj1%*|;;TeE!KO0=z;e9XUyT9Wwc zNp8dn!pZpM2N*lWz&Rn3u;;Hc(5gwRz}BvG@s^z&Fx`9_=V61i8D2Tcr+asUW()1d}&n7>)lU6aU>lpQME2c&m7*H0XI%zc#w?vMS#ybf6ccNhK5qn zFIbYHmFE$HpGEmHhcLU>DCDJxO%ds?U@>h{7mxx6E@EQdyXv(oN&>MY<)|wctjX)R z=Tjf?%!hZCLAR<|PN$@O_=&>W$BIN5Rn2{_Lf-6`>LGQ~0xpuQU6=jN0Tot1YfIWe zO{4M)Z~%T|X*hkK2~qA-?rHyKYzM$Wp-`#QecQJuX{Yzi z%XC)<9vmR(eGTLWdObNHj(365k*rjJeME#5(|bwnws z#fH$QRCZlNT2PnihNAbH`ZV}_n)S*Le0Xq?*-b54=F1JIbohyHZR+abDTIhiP?s^^ z$bxpD_$>ox!;pFf$}}xOzCrAL zk!k%V>&CxETwdXk9lD*ilwYZTlxr5N#oNmnF@tvHg&!(h)fx?H4o8c|p z4K=*czk?w?nqLNCYN{eMy5u$_Ab+SA0G@d&R|pLmssGBe5w+HjF zG1LPSz-JN$GsG640zi7!>`wM4Jp3Xgp0#?wS-H2E*Ttzj%oi87S|?ET53@tE*Hyg5 zoy>AqW=NH&a#L^hX!j!r!5FZRX1zQTWf2Ci7`rmVKvm0ErXEd^-ET_TS4(wO zZL_M9`0F{_MN|Nt5&ZS{fOC7?A51RTKH1X$=n_M*Xb0h1*I37|tls7s1WT<>4;wng zDZ8G^n(^e^C&H&rP!!vOV`j5-4e=&8ReztWS2}K~MQcc+ zAmc6UbiR7a15b$4_?!&ct140__eUNK7Gq1vaPSN8; z>NLqpeDm*Q&`Lq9THS8KWM=TAz%fj-PqM(YAbwVf+5%&H5Y(>E4u{lW2e0_+?ZS~m zQ(ms#^M(XxE45gt@1fpHL?AMl&_|t8mc5sHyKLzdmY}x2H}-c*vK-k_A8cMA^Wk_A zv2ZIi031^CJ=QsLcINFhC^jQ60Y_4k)rF9OLjI5*G(k7PL@P!b5G|r;mcLJoorm)+ zk{99>)U||dhlB)+0m!&bI4K9h%Ry48F6NB2uqf?*a@aZ3zMALR-t|?~r7xPt+CZR> zVP;3|%ZZ}v9psc-b%T<|{|Bg21QYYK#;W=3gC9d?Os}z>=`KR-X!?D|_6fftMG4b% zVKKt`v)x}MSAD?ya62#5B-n5LAjh&3Sdt88_i_%HVFrA729%w3H%1cbO?FcSN|NVQ zWF`y&#G_5}$8j(cNS+z)io{L1YB*Gb31hQOp;YAnKE5+Jeg)FXO&YO{S^PcI0JqE9 zmP^?+p7#1AIctr+yNFxi{4Aqp1@n4o8vVt`jYcujN~U#*o$!*-2}*fb!lAFqO!j$c z^2S>jkGN2)r{WXX;dIabxMP%{WGpiZ=Y%v8Hp#Qt_nN-y*O;oSu>wbb})Q=1a^`s6(MIbqC7|oVm$UOdlHGIOt9K z#nDc_1h#cnQDaSC>aeq326fmvh%mPE@RudLIM`}LI1!2XdoabO(o8F3_crO9shh)8 zbePT`8I#+BDiENsOq#PDse_IfUdTlDp)l72ft}?XbUQ>lw>yY=Q(e8?wTY$U##mE* zlayJO{OTy*kKpvUw&&}oRNwz2`J>zH4aN!>7!2LUtU|6PnvN(x%LDnXGYfG0JBRvo zd@{?#SNn#O5s7pPIJF!J@GsnX9YP%&g;}o4lw7I2Uf{KkTdh>TnzM15;)x}5&1eT; z!p76pA`}ow7E5gu-{k@I;x*vyD8L+-Ln2~ydn`({VO25qplo3gkl3LK0}aT$10g=yse=FhPEQ6TK%?*q;EiT0Ww|WOL2^6mk|JClUs(FOA zi5C23VA-|#1xY`obPEhRNY)caXGwB<+Lr$KP&M;NA8PW(dD91e0?dT})u3V!Gh@J@ zc3@UA3;fn(_iCbRX~wz?AL)!S!R1pO1A+}Rq3_7=0NTuC;=RsN;725!V<%$MI4L zK5)yBhP(E2EFlKjQ@43E4}-j-6^SY+i*SoEUl`ST+1w1B!1_FfW-dYt7!>TDQ`g|( z^sqIHll+dxQ1Kma{Iic=XxE*_Fzefi_AC~LbYPa9dS+)sGe)>QSRGI;>Dlq$G+8>@ zDFV<+f)d+MD(^_oSqS%A?=FXI#PEP$;jD0eL!N}IJF&y)Xy|8>WRQG6cHB;&PbndP zUiw16AOJh1Bq)6JGE~zh;na%?p82}v-@V5Y)7A8e8$_HX_=F*S5kW9#|0!w3X);(C z9Bj$5_=kM1!mVF9>9r$i^Ut}KvO`g+&d0IphD~v-&lR0uE`GUVkUN@fo3h)VITmK( z-%<^cdwZ3xnqS)`R#fc>-8d1WXn*lKPl{IbkE{8#+NgqCHxY59>FV?+ywR2M1A_D^1C zB2lkV;<^$a4D?W5pQFpEdjxrVK=OWW*Eq;a55)+NI~=Epc0vW{4q=1{ONfzjV6aRO znuJOJ=dqBMtwyPsQQ`E{Jm|@&`SNP754)FFf%Zae&=ZvAZj68}UQH)? zz`0JCIuWE@BQEK9kztcRNoU-Q`JVbQ@?1VVP~wz z?ZkUz%=6Z`DDjIOVBFQhuzLb&Omy;*OIVs1hj4vp6 zV;AO!kOVb;tN#6h3{g#`~uL zo}Q2t!l5bhg|*1#WYV9`?6%2fgY0h?E6k8^UlmSODB}>$jr`1zxZnzjASR>4B`Ot^ zmZ+3cPxzFXwj?ys^Zo2w}$=RwrrzgXsGfaQbr zPj8~n?{$&Yt_r&m0wKP?Q1>yV>L|`7! zmzLF(wv0pq)0!2^YqTOL>U#IK=^}kD6QS~M<1WeUfJcaa8I+~cJ<*4~E=F`qFIlVk z5gjMzDFa>{9LZ|i7Y^a@qJ=J-#o;c;yuU)MA;Jd`gOpOCH1PfhsY!*Ph|XyOR2gyu z7^^pR7j^3-QgXvD6unj2Gz$c<@t3Nr;$|%><024@QUsduyvM?GjesD8pJh9D_11n}`Lw77h|8Z#X>;Kf z0F1 z4t=E)_X2c7+WHB_g((uo)8e1T`FplacVWfpkQ)RK+gLLka2$m_xeU=NJ&$jdhG!r4 z_3FaElt+4l6gocpLr}KPHyD&2{f5_%0WVJGw)K6Vb`Lm8fr(m6UYdX85@UvSi|Nxo z6+VT0AFgHpe)@)iOP2OtX6Qe5O}MA)5zbRkfX8Xxudu=Cz_N24Q=4Q2wUNKj$r+mP zW#9+7r5<3&q&RmNh;UHq>}a%;G$Cb~RQBPRc^nQb{E9F1MSfvDMo-(tNC`Gh^S8(Z z)|Sr)RVb-9Bhlw#3I&$o5xbRUnQ}OK6h4VRsDIIQRQot8rDMSeu3}CU+)8N>DX>-2 zpS_1%Gch1k=95lC6qowKCxSf9*{ETzzSAdf!f!9-ELOc|b0)J2Sy7&O|?cl_e{1r&`2HmK0?x+9TLd_+^eoE+g4*GiDY#^5obW*3|JG(0gO zIdZkEAmFJSy*_`Y9`99a-(_W`P+T?3SR)8tl{X9Fh<^L>04w({L~}z;O<>4O+lm+( zw2wXS;fE@gVEz@8udi0OI5}Y%Y~*+NEljLbpnzf0l>sQTOFlNl%=1*OY!&!*$LA{p zqrjm_sO}r`737K2*>xQk)@*Q6J@xAuw@MtZMO60OdFbH!JiW*=$lqY`r3+<0x87cZ zJZR}OPeM1l6VopJuQ^(0{$J~)59gNF5VUUt**hVklgBpL0;DXCL+7Z^2!k_V`_#?HRozG9fI zQ7R=L#)`6e#g-71!tT?oGJI1v=*oCw`=bTzFs^VZiX`qTbB40LXXC4p77j;#jofzP zcCTdT*UfhpAmHcu8+O$Hxe+LX_g80lCMUwJuNqrn*+Va$O3-|mLzV^~@kg0}Irxpl zCLd+WvR1F3H8*w&Ox#%bl?ZUW%esGW83T(AyOxz+LW_BBY&>S@?@$WfTihGpAh>ec zLrQuXa;6nwyy>pfP+Y^Y^^J^gj8=xH`Lo*iX~toFjfs0;j>}Tju=^vaEqjATPBZaq z0-ID9_h$Tn-Py>rw`E@9A&wSRh2RL1Qig-BNQ15QbmFl!kS&@O76O%fDj%04XwxA2a|FkQP~D!#?!4%&Mj!w%j(;>p2snAb zZs0ctHXP>gv+X5S|&gNW{`cXLcl#+}k%UtYbN}J>3 z7e3B$9EHSG`fjiNb@WL>(*BiWs}I5Y2L5F;3?j`ST1$-0lO6OAd~8FloM^%sJqnql zna($Z@zkj2vJ!T|WKwEoXA3c-`*c{AP<2K%LNyc0^KzDzUQ(iP64T+F!2tvT(j?3( zXL~YD4vWfO4EULznj&~MQKN9mgO*&PNAebDAGQRva@997K~KSq46!erS8Ay4M9+Z! zVrwT;AekjTy1}<~hf-&zhvQ(~f~OQbc7WfAjW4v2-_EBV1d}sgC@+x#h%S;Ne)t=q zEwhW)^4l2ua15+aK3)>m{_XMyGTE^{pbK;`&A+NhmB3@Rw>i5aNS7;$3l;9DWCLC# za9SJ!X~fRWWYKF3E1>A>uW$lC$`WaKQ0jJ!y<3mauRJ2WyPBs?QDa*BDcVm0w6?TF ztd@%2n?p~}h+(160+Vzri18&YE&0GFMs1;v+riR?Fg=5bqw$g-vIpu9`L465f+OgJ z#Rm{#@EJ!MJiZnP?3Q}^G{FlW)Mh0*(>wk$_}v&4GqR>2$1o(x(n{F+&`02TmOlQL z5BHIpQ}R23SV*LCRJXekSjGeDRyDHTlr%y`vGlAHVUJ8=ed6OC^SqdS@A?rcb3wum zkGxLr>AGs#St%a(0qt642QFvzo(XZp2-gbqOhyh9>mgx*Q3Ucu-0>Deh?otw2E8IW z`viL!bPzeQ{h|0>hsuEF8TT!v03 zu8rK&0wpxBI8wnV6qhb!q7HP@;>NsNc9aI~?3aD4SH6TQB=tf52S+q}Tf2TcX`r_sex9O)2l7< zQ2L^#EbTVp$3xD02kQBFG9r>zUya0sa9??{DlWHayT-nPS zneQQP+iB7RLV^3m{SEY9iM#5<8Eb>Ojoqa!{Cr3N$%j{0!TOLh0AlOVB2L2reM^$W zAhbn_NyujyrCWUDN)CxN;hk}%^aYB%=DbOYeV17u`rPsjU9H;b%m+bOY)T=NHU|BC1R@tWRHuX28{5)WreP)d67nH`OiYL}D^1Oz zfOP-0>gODAyTnOgnJi*Yl-*F%vqE^hZSE+y`0NPg>AE7zb#SDmcK7NsFCLkGI?8G0 z8)Faa)#Nt&_0&AE!_lLLqGv)egGHK$SKuf76=OOgxF?*uGa7@i0)GQ0$cb{1%w^(X z7Li;hz`&ZhvnTmMyyfCJr?u%;f~R6_)J!C=OX2;fv4nTV77OEW2Y{c3T@jxxg{}7Y z36S>oOyB&=-QRC9U#ax_IvPEMC(m$}4=lKeeo!D{TI#>_A=Ax2W=Zv)@{QPOU88eN zxK?pw33&i6{7#4sc%2GpMY8`Toaf!#d#y7n?O1tDsxkif+XV6XmS1-m#CO+K6-?y< zq>9ij|I>L776HCTePge%?KYH~%|%LP=4DUb2DGGf$B-P>v2Wz>6j*?4cxDC$26Zk9 zLDi(absR-8qf`o@N zOR~TTpyB`1N;0!L3`nWvg&>lyUNPUwCFPtA>>dp+z6n&2=NNoO>X$98?226f=S_xX z6OEuoulDn7#MMqg4H-f+4VL^TLT-7u8zbX|U~97pTY52PvN$dT6^D&+XD6o(Mn47& z0M2%-F{>d1z-~iX)WxT>)`4F>4V#o$z3YTlF-K~Ea0LgT;gGB6_V_it1A>~eQMXj; zw~gxTmIr`$p4JwoTA95R7IGy1JE1E6_nQe`sTiIcxrUz&c;oM@F8eW$DJO6Ht+Cy! zOp3|X&-OnZQh$TZ9tq&nm28z~lS9spy9K<}Mme0nII=!-e&*rCF*)qwl8tU4HDUw z=$BX$={=C(4F-Bi+$s0fp654^Hb`nkRrUX!*0HMLF=Ds-E?q7tt872mMNH+Ryo7SQ z8|h=K)X47}Z3lln;EY?L7dTtqCd%)O@g+0x$8@q}d!38r;D1T44YleNiqi$E7epp6 zcRtTPq@9dSPDB}HUL=^Rz2+oPwCFyXWpDB`Ix>{${3b*Iu@2G2wCj&5)hfh_|NnQ>4v^Lij!PsJEc#s`nq9)?I^JwugQt?sd1vE$Oqe@s*@ydJ7;Cn3r z;v%J(y=rtYythi&ZepW))}{u3Wn&MWX68d4sAXD+f;of{LQ79Oy6QgZJT2D}WU2G1|$iek2Y0VMxEVM{HKe`J@A214u zLOh==5l_S+XV$Y8cb)3Jx#V%$yvt*viC$<=0&KkBCnIZIc-tT&hF6N8L?qolR0C$}yccinF1XXe6)lE)(jHU6|pD;@*uwkY*&l6FCF$5$(fz`8T>~`3RRbbM$ZZf zv|9R~Afn%wODrTTT?R zq{8bA^XCwX%+tnyZ8r5$bDENnnb&#OJa_zzO|^%!xtoG6sMifEbUUO8INvoQB%D{h z>pTTd2tUgMdiYSsQx~j(@uS-Le6`#_7H=RZJz}VI)F%a|-pLhoxkvI%K;CRte!HKj zvC)-$N_0%;37d5$8a`5(W&MbC^U8j7*pN`~Tp7^Ipv<@VLWRKKo(&G8h$oM%p7e!m za+5Tt@pnPI#c52Ck{WcynG8_1)$3PH9U%ZF;puwERglGSjnvitsAzCYmH|cM+`y0sB zTGF)z2|6hFxgy8|B6Y{i2E7bX9id3aR47eM>Iwzt0g^ov39Y@~ly%}-u6tN`N|w7J za*kQ1DT~EQ@**>kLCOeSxFScTv-g1U!uLuQQ>-@k;+@d+P#Y_Jh!;VjzvrqGu6P5S zHg7M9=WHVUXtKb!UITNdYSm)^YDy=;mI_Q@Ji=&`Q=gpSOfgr}!Z_1mT!_8Md2C2? zTFM}}%3;hU)X~KFdL*!Ite|o&ARE=ZGc-cZ`cRf=r;@X53picaP`GgJR-DCXD{r9HeV<+iYIEUzA*Kn0 zwhQ<<&tSf6${4h$G~|x089mtoB@c^!HZ7JjeIt!>KOLh>?sIsN!a6`xQu^MPe>`e% z;;7Wm|Gr^P+323mgjMRiez?4pK*kGb+r@DyzjF&zisT*Sd+JqY`G22V8`9f{iqFhD ztv@lD+7`JMb>>LE%7vi16i|#pwCo$fwo+CK`*awKWfT-86_8opd=|jg$_N0yz+Dgt z%kv-_jGM~#?-BxLx5TBN;-rHq7A%t3Gg}=$K7!xuasZ@k=|I(L4?W{do~m$5#5Ncn zNKJ$CJXE!LnvQvPAZ5hX(l04?%Nzp#Mp_BvDo!du5u2h-lu@4cEAg>!Vm&~11)~W+ zMOQy8nquM;*5It&Fj7jP#6kQ>Y!?NXni2Kq_-;nO;O%Gi?SsZbvJe)%Cn zy4Hb!^pQV}oes(M+!$5KsDx0{ea8zPWBsb@SIRQjKyt`(08W%mn>AZT)LJL2rtfcR z>^^sJnG3gn@qp*F^0ja_0c5eNxGIilH_+Lp%}3)%OL%ccxH0vPlcrw)7sumRoa+zV zCT2WqVU)0~HcP#_UT4v8Y75R`V8q6V@+c2yqA*1G%0q;L1Jr`BZywn*G8A&VAwZF@ zNmT*~8`6>n6e|8g|A=aA92*ceu&339QgEX%%+dIgH%zwx4_6g74(Q%*7^$GkRHQYO zw=YsN*4c7x7+HJQlW4fb##7)V2kIGSK9Z^KHHCg4gNsW?t=CV@6Mt_IZ7iI%HorpD zw#Y>A{5>w6>4x&wuEvk!QDkIo1D^{)W&6S;fW<7YOW=an%YS|I#i^~{^zUFtvHj9> zE<>rQaS{lf|9l2WI0)3KoE&xKo#51s2VB@Yu}1RKEZnUTeoQ2$6MgCefAgBbT4SxO z&##cM4CX6Pdt}aNV$jBE1RR$&fgrBZkB9C9DogRVrEOjO-R41HUDOq+T9+N5LUd9Q zo9jljid1wi=g>zV4dJYg;b)35V+T1?Dqx;}(1Itx!x~8*h@|#iRS;{gARv21N6C73zt+tPUYXF?^>3u! z@i|g4lz$<+Vxn)ydKGBm&9ghNw~>RE9htr22tp7x+~}C^=cjm;{_21dn_zNjsjde8=N4 zbq}_AkHbNi>UTsty#mA4M1b$i&l-8>t)|0MVvBV=U>UVd>xgZ{c^#7T0DnF)O;h5lj8&ZEsYPTY z?xv*-`l-j?J*@Vib5Yy^eeBFrx7E$W@xkyNj&gc;_|=0uV@{qLLn9?bkoFaH%*cDf zLAulTI2IRVy6+!h?fPgBoYLHYr-D=f-hmi9t$_|d!)Ns9aBpM6F%tR`i8F1RE5hF6 zWl)@(lR>Spe;N8FEx6mY9uwm65}PCZX9v}E%~z+_Sj|zZi&&^AeC*?ZR^rqv~Kxq@K{_elBXu4A3ATpyp6WZ&*dF!74UW-4&Yg z5||$U@RKcL;w%E;#3+Y>#$@dR(wVMx4sGSf)xq$CoqgfiTt#3q=vS3t~1 zOpU#i!LO|_3G=#bS>*o~>h4+KTpAMTkm$VB$8};z09d?N)&y31&LOWYYkD9vBK1l< zX0EH-+|ZA)Dn;DA!#5%Oksjw|oDFy7@PEB4e7?@L|BMqS{7vZ~zSj zJ~(A7OBX-^vUCs+0|YKO4ai2*B`+Yn0m<)u7sO>_qv&kY5T{S~nZcAu44G_hy_pjz zjYt!0Ra~c!X#gHZO`-X6#_~TSAs?`YepJL-X%93IyJpB(T zYQ%kwo{94nd(h8bT3;HN&AByf8E5#z4)U<_!G62hopBF(MDk+uaBlYKWzfi(!rgQe zuEy*Hl;+=3RStCp=1_@rQpLTPvY!@sjSvPM?=fh^w}tN1lyHyR2cSz^@K9<8&|J%L z0~`==cOl;H7da=%?yD79Ez-U^Z1LtF6=-bcZ6UhIG-_(KW!i$v*FxtIt^ z3{{H81yj*pyIi4AxekLP;-_!d(@(j^mRS?vB0OkP1uA=#KOPJdjJA$35+Q5tDxbT@&H6&rq4=rDEJ}I)%jT-pKDQK!>>+^*JnEkm-F_GwX3q({T${lLq#DNwk zvhQhxKIu)#yX2eyYP-=q#FDENyt_%I3q10sg+?2YG8@KhLxV#V@Qis|09guQk4%m_ zHIE9g(%vLW4P$c$7GI^!C;B~HC#uos&S3a$xQSbC!BMxeIxc3CZd~ld{C>1aV7s?W zCp;Ym7|HMzeV__nIJl?V>D!ZRf_a8|))je0(n|`IJ?NEpnW8xM{gbYbj~Cb8l8z_3 zN`78Aip|3)Xs=YLz0kI2084@jN*bIDIk-3GRX(uS+|_EgxT#e+Y96r$y$^B^AK^zAa* z?cOK_nJ#~tl_k~M15KXPdSrf6pZrm!P65?iSh&7yCt#)7L@RLs=s9q@5?0W6m8A|Z z?j_%GLNm;Z@$g(Xbjp%fj@~Zdlmgvp`ODcUjYs28=eyr{5nw-*EfCo_x2eAvpFK<9 zLBT3&=7*Lj36n~X}|+%@nhX?+-;YT5+87B|F}IAe(hbkSC^Sz16T1*z$4F%4!Diipj` z&pi#D^WgN*#I!nIr_>o%>@K>Fi*fZ=+%-2yC5-cHbs4S8=2e{G6K+;T5K{+!T& zGs?c9{?(`dv5)5VJj*aUW0_I2;VJ~-0o??@Zw5j-lVe{q7Q%+tV^}Z2&F|k0X77I`*}sDsCb$ojttQ@SsyHWxK-xoL*<>R!0HN%H{8aT;5A>tH))TI zp%~))Bav%%$G{H8O+B zN!g~@eXwlPFsf_uS9%0O;3Si1(4aNJ0x0qp)Dl1=ug<$3sWxS;f3@_$oO75iR@$Hor<-;V6(! zSvl7*h~~>Y(r;2jQzBwa7+S5i_pI(&L4VjAPrl1?$!*?=JUbWV9zq<|`{|=1pTj~i z4U2%7!C~C{+(E^XNn;=cH z7$NOsU}oIXSQh2W6cxOAf>79t1N&7;bz}-52v2ZLrR_wD$hnYKoxhQZ(v5~t#F5_H z-{k*G&ugLg+e;XgaagYNY~r^SPm|w0bFdG%_*x_*YCXeMk?HZp?(!J+oDP^-Uxw4mx- z?poGmarT}*{9r|P6sWX&zH?ny4Uc)j^(-MeKUnjb{L&>lkA`EVJ3LZ ziA#Z*_s(yI?*yWgLbLY?aM>k5P?Uo$)1|C~*2D}{SSaUpj<^XJ(xT)8?{+VOq8?%; zetrC!blV5YWfAYn!Kl)#9h-kM)F=RQc162f{fU&UAvXXv2`eVAh6b9phf9GAkPAL| z$gklQqq?O0M}Vor!)XfN7+b3fc-^-Nqtu!4@y0!vt~(@9-RbT6`etOtOD6BSwi@^0 zR9wVfaVpsw?DgXTcd|=2L*@)3*8E-*NtYYJiT8OLptFY$9e{|h`B7S1=|$Cl+FwCN z8K&P$FH0UyHmi;VH-WSOJ*PR?^9wKn6i0n){qus(NtzH-=>%WvclLSq7($5dw3R^6 z4-Bi53kd0hofQ0jMpXz@#T>wFk2ye)?E#Y#wI3J{ zgr(74#}(Yc3NloJ-2sd{PYfO&e+0K}SGD3xj!|Mb?NN~wD0ZcHZX5+?#=WV8R9(7A2jsb4*r%GCEFYLvBlhBiC zmuqawEO5(CUum~k_drbL0u#xf!Kj#V@P9fDNulOl$ZQ4xG`uXLUlwC-UTxo&@Xe@1vX6FFm%>VwV8q6F*qU4$!%#o)O z6jwS0@MG*!y~mEQvTJ`9{qM$5A>_64Hq!?2eG4GQ;Nlevalte4C_4TfiV>87vK70} zkiO}LxNmDTI|vc9-g@XR!2HwzWRcVZP0g=+rP0NUzQ^L6ZO0hEcUQ@m&MuoHLY-Al zZt+xkL2Yva+$wI~7OM%yAX033JjNZ<|5AF?Zbo8+nS{%Kdq}5Gww**&r%dd+pl#Mr ziewX&`0x22y=EexMTV7HIQQHvae!=V^Zpj9owlu}6(R!+rf(S0idSSg(#t+tF!=2! z9->ZeI13%JN=2^I@>hc3@s7fcys5-3EoEDM`l^7PI)A)A&#JQ8%@jL&vDS_LWdIiS zncGvGs^yjBwnTny3e6PK-El3g92E7U?;U7b14!_by|*QjOFlsW-m55^f7*VxGx&5KU}tUjg8%}u?XK8*56N6w7uUFAvppx+leC{ ztqELvDi&`DgdcD6g#%yaw$oFqo+mJi@X8UF(8u$>N?ex^$Y5n_TEE4EI#|*5<9#(D zf!Rz$U7wq3!_cok-bXVYrXupj@n$|!ZN-j>2#H$dXPZysvVR9FE96>=Z{kH07jCY; zYunD#%3d9i*DLDJI73|(N7;Ec+&*Irp~7D?E}Qm;=jBHyq3m_bl!k_}VD<~Bw3Ot*FQOvLY+{I^&!CD3D6fd5Q^^;jx51((4XCYE^lbwq%o1G}bkPZ} zS&c(d{Yk0UeK5WOA@u0vLbIP6Vn8>m-k|-VBzvjq3JPkOq{@OvLl_BQMvl=Ut+Xg> zhfC$3?Ffd=RXr)fs;liGt@5g8jx^xJJFA=&ry5l;y6hzLV~O-t7H*AjI!Zs6;KV$P)tj7l`l6s1nl+=uNOlC+k zn|-VvvT7R{VKu7C1msmL9E@gIimX;8ZOiMV zz$3D|BaQ($8pT{d>4gf!MQePi%D#%r0G0Z*;at2f)RSD&j$?d?;98EXNLxYad_tU# zc$*bx0HAw1{g!(F-=@Coy0TkwF6yK)AOV)Ui3n5*7o?n=9h%D9_ZjmPqOimw**hB` zZZFXq3Nu2qjIobnqG9e$=X-Aby1}&7gUyo$`(|n@YO`fsItw zV2rq|xIJD!%!s*V>f^D*-e2{NFrJj#|J^O*)*>eUl+9t_k{CfKD2|xbk4>4{fv;v= zD#f*ERA!-q#c+O=)6^rY{25PrQ}He9YXn4#l?wMls+Ybx)g(iQ6{OC>XX-4pfuOt+H1nV_+USCMK4NDn%SElbkW_M7axMy-nT|694Ns74G z7}rC|C9qS#C0ld@L6D&RMb^pFRv-rPExt=01B&N%n6fC8i#J%9{~$>M2!WoR5^H&A z{v9DG=K9chdwE$_X6uGc2lwP_RvF$w5HS^Lw}+GB%6^~Hz3(a|HrX?e4JXF4?8w}v zzW;A8nKrC-5cRYG-L&@#BXQ16b6_u`)0MNrbt^0K0eP-Ww^%CZSza)LW-S-%29C5@ zvPi+liC>QFiW=NDz-W9&5tpp(_`s<0X=B@76`0i-eCA}ZLSmgP)XYALg5?v^ zo-8U*Tg{&^%#A+pZ2VV0>@p?D&rNKa=uWI_jrQb-Ps$B>Osiib_y*mFWHa)4hHZxd zm7Jr2rKV~|x_$IqYs83SBGcLd1zMQ#)pZY#s*T2NmWATrEZm}`yArkn%SjC4qc6PS zH0XDoEB8F?nt6UdztSu};qDb9eu6aAXjfh5q2aSvu1teE!6H=wREWqvm^U}t^HujB zp+6g26q4M6p`$zC?F$+r^trADzrQjS{S=yZ}xYwHW9!<9S7-WU#R|1h=}L$~;Lyy8cvX z1{rj%0-`eT%_ffqY8y9eVXnL#EE}SC(?;A}%@+#z}J{zkw z%#iWx6TUh@u#Il{x1_=Ak#d6klS6!M_tAwGd4+8ALP{oCQc90Ak7S)pl?2b0GfQSk z8@?)GWV5RnwA5OOz|?H(LT|Cl7OlZt#N6c)Pd~R2m2uI`&`QeVLQ5~1nqVM4V`iu! z$+dx*+8XQMN~RY;C}DHnmyqx$@?PsBhsv%dZ3WDqrFEPkTJK15E_#!#nEh z^mtIg`3$7uS!-t!a_G)0TbG8z8WS%cS1{&&l^k-J!q~{Y7_#X{S*Zy$`{;w3ipP}l zo_s-l1Z=?z;^Q&bR=Q z!?2IK`paDp^DL#YJoY=ADMwm+*%Xs(5xnpXg}vb*_ZtUWu8bLz2L0(X#RYh@#ScbL zxhWmC5E#yVU(bW8Td6cS`^dSN^m%CNggpTZo$!?kFF<5}MRVHVz zpkW#)3!zp9{E@r*)y4RS80dkfhL_6JAGOlqN^V--L|%>9OdV=`(2x3qPK=$yD3ADq z2PN!?jNm*a*iA|`G;&_wnso-;$K7%FB}#6HL3Pn{_KnE&J@$fZr3>&Ob*K#l{TrLF z{?1_fL~_0d0iw@;9MQ~l+-18uf9rR4A1}-n(Gz6cKov!~4$TtX?)vu`Y}lrw3+I*_ zm2pYqA7Ctse(kSm1OkDJoJ1({a=rxxp$m7o%>Nw0igX_~2*u>y|c4sDW%RlabL(mI9h}(DNg&hD zzZ!Xbtl#6CFbtsiW^@Qk7EJIvc7LHDM(iG^cg%gCpsRITZ<`nSOqijVq86@DDvLPF@GD#M*S1C1_h&3q<5P_a=pa|T z!nWyzOseK{4}_dZg;64_DE)}WuA|Ud;Gc>pR=@hU;|8OF*2S8N3g-R+hFPRQILFZSg_RW4dKH)UMO7Vo{K;|2rGg93#MIcr z6*+3B!Yiu^$+jTt@;MHsNqhO@6Nxsnm@(ir{I)PvQc0CCRe_e8msr%Z&hq)Hp6pUF zIB_?fN5=|C+en|*Z?(+iASw@^39D&BX}#CF*`_h6yiE27G*`qH0>q->s-q^qYN_Rx zT*3UcMGU!Kev67^^Sc()cRQElRn# zlY-33jk>>)-F4p`PRU0cVbQ=iGNu|(2d{ZHa)11fs4K0IR|Y6t|C44ejP<5+`ao>m zNf?Ud9=41R;I~ALN9x|z{gYO<%X9e|PLUb85MTTX){RZi!MEkjy-r?X-fyVwg1Wut z?CcA_BbFkd?P+}bOUTcxzH6Rf2Ax&17^c#vtJ06c?KL~r>YN=|zq5Ki+?=KDV)6~# z*}*#ds4&I{W>I36QMUHa%}&1)7popr6IeP`$tib%R1SBwSZ0gdH^Rdc6ONBu(2AZ^ zj-F^GK&l<0ZQOSF?7Gd73ItZ@8UkA+w>}=VY)bh40ntXl_++!8@MY`@n&6!OW!RN( z#TK$@1k}682vlxCa>;#=*8UdN)89n;R&!z&UV}o@I;=ZfW!Dr4J#(WkT{x97K8EYf&X~_=YIo zw(}?x1_IR*&5*!D)!%NYQAr;R%+Gd=9>iTpnB0NbZ$u65^mvoD8Yn91(j#@byAd(x z=3X9^`3$gdj`61)fo-TM1rIW4aD4F(jFLxn@r|Q3i#r(`Mm_ z8h1|W7ei}=YD*50cXCjh@drk-Uz6?qN0+IQ$81E3cY`N+2(Ix#;*NVYMic|+nIc(8 za!C-wMDtk&%%{zD6Z3qcBmPC27JO>tw4rL2*{e8c;v_cYIAh*gr%V>8y+`{@FY0A*5BXKbP1C0Z zn8^}s&uxLWOz`35Fxbj&l8`8FitYQm^~L@3Wp3 zQ!PCF+Y45RnWVs2NrIaSO$Y;rkDcrj%beJ@+NcD$6$T0?hahapl{_``&)=21;BV{J zF4#Yb2>cF>>REa{uI=lpMU-M-a9+GyZ>FR3^?m5#0rb5m3jl^mA*~n8h2B<9i`qe1 z0ScTWj+>V}ogl5ZCP-k?sve`E@Wc*{o6fO|;Ys;WR<^$IQ% z>D4C)9UeVp9<@HK?kxlimNW!!@JD^Aho{HeT@#a3=dNroa@DA0&hrT`DbxhAV++oY zN%Q+4!+WHFpx|o&IwRIK1M-Y6Y>`}S#vkpGp->VH?s@Ewy{B2g^ncNRDU)gu$Elbk z*xwTs#}Af0?Ksd;#s$<%^P@1*hQ#m=dChP$9@VD_I{kF!#ExA1Z<5pH^MyYUY2Ed6TE~S-OsJuQK5}uk% z$je<*5FJMjI~B@YqBD0=MD{}YZP@ ztm}v3Jl=68MR)A~{bMnDA79--pVu7|f}MLgxiV~krfw$%9$8m??M3#6tD(7kMrLp$ zA03M5|8%e*M|kLbu-|B$KzT5*#Edl~;hacJRGim#^j|Qx&(SQuq_mY9irgH@W$gxw zww?R1%@H#^?dTD z8YKi=6u0VY5!mEO~ zN~L$_0qV|F{qh(?uy^waT%s6)QTqtARRJTgiow>akb}zI09NRNhOATf;(w8cFYJIN zZ=XIBu`ncP>Bd`*bd18Y^@V7EtUPQ;j^zdfg5S+@zVDAY|K42Hd{l`7CE_NTz6AZ! zm7kG%rGm|?$smXAwD+mBBA+6@Z!(m1_oD5r$WAdf5m*5S0i$DNhnl!*gr7{@5d)7+ z&kL1bsU8W@N081uP#e0p5nzrG@6KVRa?p)*0l`0x>=R?eC~Yj1NK}QH&(M}lA97>j zU6iesDxMGg2qCoM5tzocoC4DZ*eU4` zVZ3{`OBHQZOynUcJOmS-Dp^8%F~w0_sG}ga)OH9F>+feMBN+4OrG*!_dH7b$D`S8N zFwa}6fpY89a6=nVu$V$7a{rD-I)#s^#=_Fsu|xB(E>z&RUZ1JKz7w^I zQEk?Ci2CgKX`clzdI~ROXBBeG`)iINn8hA|m%`Rc&?M3jUIVh$L{-({-0;DvI+515 zuO?;Ib$&x?Mf<2F3LuzN8WXlM_yb?TyWQHmY#+eboou@g?JV7A16P?@q0ZK4g36e3S8nU)WY!9 zlmmC&{76;76!PVKjQoD*W$qg{r@FW4gTe-C=LhYC-Ej;(eDGh5=(RUGN=AAr3V0;5 zBBkzjNmPGWx#NQk4}M`x1D^&*Vhou(x7(IFZR^GhbdY+mQdt@ws(zU0DPey6lHuK> zeZ*_>0%KL_@5q_l=a}Udmi@mCWMpq>JVRiTW`+Q)3!-mqurq#?rVg-zPU{N6RQX9$^8hMG2lw@#TM$*wR@-J}Rw|8(26XaTZk-88*pJ-&H%@tm)` zlsR?-^j-u;EPGwl>98(As2G@4$rI{I06Zgg#FreeP*#kXsai|vRi<9OD2M7(0W&p)dDm}5kvYwfC=BUvki?&j9s zj|kS>z`q|xG4C>+47KivqD}(hs=%2!CTP~HOGX}tohaQ0rF07{ntMw_CSFrEU5kX5 zUkh-I+%N!pl+Dq3gg!1~wUke<8qXN;`c#CGd&%@}a zye&u{ZHft94*_&>!r^JN{R^0PGOc(^00DBS7MB{Em{uZ?Nr(&E|ZV6{c?X zEpcv}uuWc%T>H=@`t}tZ1f}Z6GaUJTAu}XdXlJl5D`5al6jW)>M{N89aoMLg&gha2 zF9&@DMmTv|VinpW#LfUGfaL{K=XCX$d@0K7C||~WAzeUcB5&3z#Ou}0ukpjva z@2;wyC`J~B+#5i~XyehqEKSM9fU5Ha!li7Y|J+`8D>v+Wm>T?EL;^!3`7 z8%82+(2ij}H*&htfH245=T&@=0-OwHs;r z>Veh2T$>E`;6sO!I|0h}BYy%480Zr*J7=e3fthp$PemKNE08i6O{$oryXx%slmMG! z{U`;G%oieu+?B^45q`jD?bfK|x&1X2{@JPPbKLdZ$o;T1rTO92bq8pu2KqjS!@9<50b9rz0jEaLgnOh3;N0*X*9Za?9^dIx%MqA7bGk2$?0r-6+O+Nw#`elD>UEQW5AtLD)(RPikW$j8jUJqMPKcc(_Qn;upp_)vdj1B%V}(bpNY7!y-5o#U z!BSWhUZ+wx-Q;v(2!0$$JWcX0;GDLj9-b!Mw@*zG8RO_!>so)>I{AayP~LLyXYD}D zM?h_lzdKNP1ZVcU8ljb+xm@y;_%-d+E7sE{q%EC0`UU&L6#_OJyJ9K18z&=vHVIN% z(Ax?(zwMjK-K%!~X3biotFXymTgyp``qUe6WNdK}bLU3h%TW_bD4Vy`iEI7|nSb>XmJ^V=JUEkfC38I7_v9>Wb+{@ z$2F2AQDL=fBJ$Rprid^MGnXzd9Wx4H5BJ4wQEP zPIZ*jbqQksM;u)fdxTbfP^?vfgJxe^HNpqcg2+)>EsEuA+Z5MeW1Rt z9nhi}@(oJ&Jh_lNML3#$(+s-;l#RJ;T^i-?(KTHW%E-s4A*3kajTcdKo;N~AIpLjl zA&}<{zb&uu7`WQ`1R>NQrySeg{~c#(7`B{z)ATp1tC}xZ=akkTi0<3^Z&2O2GtQxU<(Z=^G8ay9E?J)vZb~DRd$(!b7M6l2d&%c8ENSW-JNNK* z({ouaK_u>bXDe%?TzMSk+c=*xjMyTK>!-w_N2>VijiCXi_Z1?^*b`# z;@t4WcSo>PF@B3|9_+bhOaPWnn^x2GycUs7{oP2tBH zAhup$oZI{dgHLaMJ*KOcin_wfp6T1o=J|3daTbf!XJjpvF4pi<$Y|Sbp`#<6Z8(63 zORp&T&$(IW1>y&SJk%h%1)4BObk*Gt!1Mu!SM5P^^)TkEj;9{tLr%l&Plx0z(iG~+ zd1?=KwlNkTw`vSUpHyESKAiHghCKhpd0xMl?Lu$Ym=dK3r zv9m_mSv+v;M}0K&abv91{ht38zl1 zO@2&z%R0;!nEiE-s(&JF2clOz zH0_3}a~K^cg?5JKz~H05_4FURt}=C=gc027m_$6M+AIag4_*TOB>FXeT%XyH?PXAJWyGJNQ9^6dY{fr8xox-A;m?Sj z9L-<$LawgP;wr=w2%tEZwrJRAwW)o(KP8B#w*1tem0fkST#g+GVHfKt-Bo}$_Q%O} z55&xRAV!fb2Hw42OxYVNAGIp)DH;cJ_8Yo!O$Zwa9>Buo?Y}t6zJXY zv0l`aJ><2d8)hk8G3&0DBC6m#TnWRSA%@uryOqFR5wPh3$J(y=zmKsxt-V~4X#&B% z63UKQGgc<>pg z5@?xRY<Md<}u87h(;ANE76CZR(XVgY?5RANRV9*&!0-EpGBE|%&N4@ zI4GaW7jB5k)9U;VZp^Y|OP$~Cj-LiOEi2^WhaWrPVPM^IWjr1B2Ad38o)RK65RnW) z9AKW>L4}qBL5-JNj{F^EWi_c(8BMzoD{QA8jUt8C$0v~HewtVU_JsK}4=4$EtY1iYuo^D_SY7ZX7TUI;n$_*H|nJ+Cp1%oFwMgrwMh|9o6* zQjsu>c=*h{3t56r+Y|aaTdf9dd=ZOd3>fZ_1UUNw1SrW>QFdfYlydE zKk;`m&B$9SJbi`vMM-}6`uvknqCvRJO&4D7(C~O*0*XW(BE2+KmfG0)!_|=31ayeX z_u=#t5f#EfO#Z+Ok7t|ZtT)HBCJD!bSj3KY3G-UA;g}%Nyl$SB%2;T+))yt@y3oIh zyZ2IRkTzur?mVvBdGPYZRJ5cU%g~)X;~t{Lesqt~o{j;!r$JVWtU_&XcZyA=$xd|F z{#D4I$CjJWvyU`~HL2LUaL&ELWMPppiw&BIw2#{6F!%eEk1I?pq&0tO`i{|ewe0Z$ zIdF=!wF!;ftA&5jM6MGBiymxUG2?H?mx{(XDIlQAe*OBbpY~b<1O?%w_IWD<7T|a=_j!ojL@U$jZ?De}!0t0RaU|Z@b65qkpkt59)RL2E# z6T7U7bzbxk;^BabJmcOWzS}=GR&_;D!^0@EP(7s1qn0+P2h(I+JG-G-&qt|m_E+2E ziU$p%fj{F1rPF^6@KQDb1OlrW@<2EH!H}ak=KKZ3#k0CjSRD=Z36lPB>Tv;CpP|T* zWcATv!NZLQ)bpsL4xYMh(zH7E4N~}{&db`y)@IUxPf`S%pt<(9wd8Q7_OH{eT4Ax* zZQW}7>U;y-wA}OXhpnl5^-raIF_*YVMpYE#32so_079tW$KixIwq%*;KPm7WvO;Zq zuLw({e0q%lj32x#F4e|oHVwrtg~06QmV#$Xp5n~2UNG8kY&Et#7xdB}#dL*vdr`CVXbE}Kn2A=}{1dP3k@Q2q+u}PDiFOyk2 z_#m7uYyCPI#rx-5s_>Orq7Uc%&wZRECj~VL_x^L}8`0gCA}LdhI{?6Ly!8(DZChBl z>ZXy-yKyOid?}L3yB0Qn1koY2IhR&^| zy?T@QrK=~Y2QC|Vg!veHo$pQmc;q4vsn20?l2;TXWq`V-)@+m#BS)Q2=9RPt41_~3 zSDgv@d%yh&7f`j3;fbDJbHxUPw8PZ}nxtu9E2}Pcs=vUxCiW(Z>DxJ7v|O;=ZyzLa zf;x*ZA@+MxPykZyn@9TIt))vZ97#4?${ZF?}p9ItRjT8Tco$m_h=D z*E#crva0+PTLCDKV(iR6DacT4@FPX7b&u^gll0uGPemU)3j^HC)Dm?ZdGiFHh?Fgu z0ki;^wt7$ggtz;;7aAyoKP4$i>H#KLhusdr^!%Oqtgzn*=DAM~jH!4CD# znrik71|TTgX81I^J;P9VoiUvW06xe)_FJu;VcCh>%R7V?7v^vAIoJV>g+~CI-d!d~ zANx{XSHTqPYF4$}I zRH!SQ^lX0SP$t*KF1G|u2DJsAF@FhNaQVza^%XXJ`F_!6S{}vLz zPcK;i0}B_lZ-x|>%TGaBjnU2jxrk%xF4#fLFhxn+^S+vad{lnvNi{_XiNme_U&u+X z4R%ohhU`1*!Eyid6WDpP1E-^Ni7kW-q5&;AfMkUOTbetZ>ijzlG1Ht7ME!QXFTIDz z#xj1`)#;*j#;kOXs$$$?SxLrFGTo9!K+y(5Hx!-%XRF}3w^|&y@xsYXn^iS&MAtoqk3Vzpov) zGV=+xZ2l=Lwo|k#bQnYDvyexNTcv{&BE=^(>l^ZF2(TR+tb^rU^g*T%m6S=*Ny>yQ zbaPs=6hxWe8>~Nf06LH9AdUd!HqL*=`|)=E3W3-RUGM;RB|?_H!k1vFB~(rCtX0I$ zlq{cmKCBeA@&pS?n(@^0^h#@7ez#kVRN5gWi z#PPe{p&=j>P@wo4nGazV2rJ7Kynj+*8QnO5G4nsf6-|;80e9?Qs_osD?!kLAYUKqk+^d@Q+Z)afG!eeOfCnMRN_;d?=-Z#=R5(tHnaYK zTH_coWnjs8?{B|hKx`E3$vSH)ZcM{BUsCv>7BRt^u3z7sMb*R8;j?nIq+SJ(cl1O` zH%^FtURm+AfWNrIDipxYg|cMnXi03FvWclsjDVcZK_;EiP#4ld`w|3u5tw~9sDp5f z0Q%*%Q}tPSE)N`j%anLZl|VGQR@#;rXMv8wIBcDYaA|b4=%u=*jnQ49G4KA;eaF;k+%ob1Ek>kt?@E$fJ#ubmqde82O z#Pneq88e41?S_UelBZCbB^cbBE}xevS6iGy7cuTH+!BD^ww>GF_1It;BCErH^tJVI zTlI4g@*>~yn4m7RGS}=Kw1HO~bpIFa@1n>?(I{~j_!H7a1(uDH>W}!mNfvVlRtsy< znkjMP6pP}ZokcCAZV|5qlSGDL`z9zG!Rbq0f6sM$NG-P(J}j<}(^om5Z@;bfM4#%J zqz_T3EG%s*5;My-tXW$`L))*@Q#Uhe`un_WLB+=SqGvCM#QDb+isbl#r5ao#!Stpm zPX!Jr&8*f^Dcc^bFholVTd6SiNXPI5zJ)9KBp>+59*I z1g)^mw2yts?PCTb(hj-d1(TXa_R-oA*$7jj`lM|mvwcya{t5fv0QdAbq3O~Ab+#7S z*pBB^32$or;Xf8bEd8+cX@!pbfn61*XU%o_7Geyr*VGD9xhsN<8%oK)XkH0 z@MGWiHPEstKR$N!&;YFj^LLdced6VU>hX_46M@&{eB=KX{woGY?nzN+F=4nhwQeM$ z)MNw8yYHusVnU*sbm{IS7ZQ_Pz+^TD;+AhqB1d&%Qci13A&w`E9J@Un$Te8j5`-Uy zRD5L)-9~EXQf1ssRX${iM0LGZHrlIt!ShV^6oWI0-W&65oiEromo-ZSg>BUa-e~w~ z9Z?!f7@l~NQA_Qc5o@YEaT_t>u)I3Y(f)_rDajQPJf*r%-yfJU$_j<;rA6=M7!A*v z@cG+|vcfdub3rXH_4yn5oQ>Dp`RZnSybiFXJ}PlbKhH#%4{2~1@UB0eNoEd#2ZL5K z#(jm0H!_L)K6AbByKmB#5I;Q;Rn>ptW~qgJ?-Lj3%r7sxbSE)o(7&ux7ss#? z`MU#H7I_CRZYN2pCC&7zgQbKmwE^|Pg>_S-DNHw$x4EvlDptRT?Ct>VmlSt5fYf1` zQxb}v2B~E`R!AYhbiEv&=NyR)hfV@dyf8JpcJOVn*#zJVmXl%bm(Vx#~<73gEbaE&F5_fNvX{!WUO z8SCl$MN+xJUY}sEyE1Har%mD5i>P1KD#~q?J0&fy@l!>Bc;xBy-CL zD@=(d_ibm2{sPrvwIa1dxsrXxV~=TzVKVwJTb1 zcYCF~{_NJXn&<2s1gYLs6uR<2$IY4Bc3(ubaM$3qxR~8 zXG@yo{I1*jvw+m}G^`c~>Ob*6p+@~_zCmnoi6c7aH9z*kkCO@JG2C`}E}fKFp-$=Z~ESK+1<+n{0x z-!5B)81(+8kjgghx4u~nJxa&CzFVlmShe=0cj>SS7G66`U7sVXfi4Uiwz4_KwvE(9 zM$EZnsfS34hK51#Q+YF-_1W*)!RNqk@EKSgUz00FG4fQyilJ^mX3o%a)$OfqvkA~7 z{C+~Hb_D{_haxe1))2+W%?)LMrRg>^3Tqz1N(NS3$*UUp^nOzP5@qzg+YXuMCY*;a z8Fu zXWUG|v>_K$NOW7ht&`OTId9RY-gH&tz_rPY!uu0LtSOv1pELWM@_lT?#WXEvnBIC2sL$=wrciJ@xawQ;We%fmKrv4~w&XciMv{K;wBMbr) zkvf~4&|E=FmgmgsdzhUbhh7YEThBB`JN;W|E5k^;z>p6IV}pN0yyP!~u_NgF2&XpG zIB=+Av;>G(`8Grdbr9|I9@e{mH#kvrRvvIw*y|%uf#}kq&8l#peE08iZmM}|5uuaK zF>4*z8YQE4W2UmWsUAFYdRlD%P+4`w<=c<&wDQMD{f&dz6opyZ;kHBnuZ5g@6oY+N z%J|gOrvU!bqL_^Gl~F_P+T-7kQx)cs>gy=GI@ipR%nM$La^WCM62Dh3u|v8zfT#@! z`%=y)V)1;M%LYF}h6HMnXb7J3&kTW+0jA|t`cp4-BiPVfuT<5#BAdgBHQE8mI>cFm zn=}mGvOAJ12`423U)sXyEWCB-&zh;`8jN_5>XgrUC6QwNQk94Tg^E;kFznj&SU_Q} z*(L}UBH@{|p3+a~q`yoKUwYGG!D!YlOwWg4=BM&2E9|gL7#1>n3tr*kw!WpY53+u; zFFkz8fvaH>T)n`su*RWz=F()r3ls=3pP{0&wHojMT0EGEX1~=&sGY7@%0{IEgRxJJ zu}624OC*jav5ASjeUMq1Z=>{}y03F}Q`nvlzt68Ur*J|nYT)d+F^nzCW;T}E3Z)hD z&mxpP6MN2h@kZ9m_c7x$)X{Z%EHZK{#P$~%vLIhbUxnV-p~f~r9_z&gSqWrwe|}*& zkdmtcZ4J;QIvk|NS9Dyz!4(x9GKwrImIj=aBJyL@zVq9y`{F&B9U+m{(@MLUaWD^q zF|i`oE^!(T?>t3~&?75@Lxdp`NAKDMQ4WaEs3^IHeka7TFlVLi-Y;JOB5VB@ckx`G zCBc(&QCGOGhPCHQySscjbT^C9#K&Ps!Y?0UPyGfxl!?%9YGu^w>y)aT+B zI23G9T0*=B^=Ddd)}GOR#_Cy_=-q1*Gr1Of6{kA>^?{%DfA$2-g^i96?#i{{GbXzA z?+%k%HFf12y*#t#IT02J`BI`Tr!CHAYOHY#|0GHq5w_?Osyz>=gKyXX`mG}K4V_5g z&rjm3XIZuw!Z>^b%4XlxXgunTatl^Pey@KgAcqpK5y(fFj<_Y_PhYsv2qOVIU}TA=GGA3Ho1yfg%$PbdE7p-Yy;yqzHt@8l*7o)oLI8TYO{P-) z2|uSIfaE##`+ooQgRDn964rH9_CVCA`$(FWa^dQ^Qbu*KwEbKor!3nddm597y#=7n ze;Ul6(kDgjg|+uyKS7=^AI40xwH)WZ|FC=q2gl_sYDoGil$WWSoj6JiLP;W9`huUJ zV5#E}H&$O-yq$7G@FSbWt%y&y0Kck#(8Xl?KRYv@F&+;xyjZa)Fb@J7pjx=bg?;2e zaRamN-uVyK3<^L{OhU+2g7NtY2FI2mIuh(g%kOk={IWDb*8(;V%1q&PNx^{bs=LqE zOl4Sjckb=(oeeyJWnFS$*-BTW)dW59tE$aHaQ=8mE6y=|KgU`$2kbRfI`_szpQ17( zZ5pfv4dh>Q=7+M5T1EWF%guBQ$pD9jo}Q&(J@S5pOgsHTI-7XfuijY~OoT%NE3wgO|?gYr<|No56ZOX$A2)b!dqu z%jx%rxmtmM=J9U92neE(s)pS;-gEFjY_yPUz{v6N8IW_f2gzn}#S*Mi{F>M9G}&@K zdh}||CiBVXvR<7oiSq?*(O??$mGj}1|51j5E#8CT2p__u(M5+V>s*0r;eUu;MrB7~b)rA1pK(}@_wkoH%d(uXE1LsX}i_4-x-4L;8Y_(P1`ceC`#)zp0 zz{2WQQVM7aO-@+=u=#A7$Zjm|l8(Fed7zn&Sa|+-52>eVcmvk<1J}5fS0ZeQ&{g-E zyY{{p;J;9-{lXjZUs!K3MtHr7@VDIbA0;Rvwg}eqoH5ahTMSLs^2v&OI=nkJ#)ff` zMRH755swNQ?e6zzF`4%S z%!Os%`@6Ue=>Mq_TF-cU^B7oT1ss4WOloe)0cXjM4-sqL^OJUWhN!VjYRGE<1HHdR zZmHb(pqh1U{o%Qiis(e8Dk;I9nbnj2a25eA$|eU}>ALK|yK@V*&ilsSqyTj}#XScN z;JlsJs5GDfTaxm#D{sMPHV6vsTl59~YUZ2GT0hxjIWpj2#0@x*k=ZFYNG^{pN&>$^ z)G71qq`AO^C4Zd*uojyOS?Q+6uVd2wL~@`L1O2h43P&!Vx*^^9*%r;MG|@G0=Zoit zpzOEJBbYwzC9a*kGY+#IetL!qiIF zQDR6JbEDK8zoN^_DNn@ONsgm_Nx97nkuNBtYP>{T^Ccz=P}B#c9Sf1A!{~iP7SI=} zEpZe*(?b-T{U z2U=Wchyr3ZaD`TPUXg_kY7HK1&EB~YRlFYy)oVk-(yF`QjF6ShNQYFc0%1-pB|xw% zNyx=M+Lgt15Q~6CfGGnuwVD0@H@(*{)dTtq&-@Md_lq7!X}8`crHx%Fl;*7%u%Hzb zU;)m22_zMHXzNH=6*x8e(B^ELpE;!w+M5$=HQ;%6<*hJVOZTs;!Y}Wj>$HEx$*y%K z9?>%TGh{JXJi|Y=_nEbD%O#1kWq~an&z5fgyyh@vE^r2rxOK@NF{K6!Zwtx{_t~4S zT(jsN7l8PVe0=OL0hqf~>5qF*0F-Kv3;aq^UfTo^pn-gTJg>6Q!!r@Q_ts99X$Wi>?lHx+j*Nd)Th0cJ{mvMAbfQiQZ*>uv6) zduSn*L%_;Gu)Isn%VbC~mo}0=&~hcB4V)Hw^uC=jJTI% zg;-tQJgRH~lWn~-%H9~y=bJxw$@bke%~3uEwTEOD|54^-Y=xX4Okcz~KtqT9pv)7$ zL}@3JI8hAbXxZJN`rq)|wb%SfmbgNqAYE~L16r2(d3&4jBf0E=szCm7aKN2s-x5Kda)#@YS&c2;;6q{wzaf_}v<&3_?ugo&|JLS9xr%yB1@oicd?3eMsgiXELjQH3ru`HwTF``xuZS zM2$VL{uQ|j{M_sfdf~m3M7jDQHP#1wV7XMSVqGaKr#4scS6BHgguQj}K;ERqYz?UM z50Uk8M0S{#oK?H{QFyXv1|;;XN+HnAw0E8lye+{k|UG;@O|g2&st0D^`Ia*X?-Uj6po?Y@3b z*o!s}eFhii6|#{G-CkmXyT#NGCT;`yEF>TF3K2z3>bZ7Oxv}K1Gs@#m4Djq{!+Zra z5L_Yj+$c0_5u&Z&6BQ&xGwcKdlVZvqArPr9GO#ojq3QkXMjJ~Rx$5o`&|eX zyaF{qJ>pd*&k7*@ni!e9()`+RP>3zwq;BH6h{l?|nEi7&cYJ&VZaCzRnSWO$Q7fB& zSWXu{tM6&xt||)|L9k`6Ll&pnz@FXl={|*);a=A`Z8YRf#%qkIysF;eYUXWU9s>Qetu5DMN`?Q7m#H-xOz*$XuNsQl&W!;w zu2WB9m2!`Q8{UzDt|Z;M)znayYH;v`MXO@D=;g0>KN|s-alZ;MTaVE70Bw18wxur) zZEsYlLH2^{*MBBt>%iKms?pcT=zQDe+$IFWR zpkck-E+T~WnzZAsA;*kGgoiGeBtn)+d0my4HGXx=ML25emQIhzC21^7J)jXUHT73) z8xqSA3S`_fY1a;s}+^tSg8Es?A-_LT??-BXo6dcw6YNw;6hd`$vR= zHfX|k-qJvNw`r1DQ@SOXSAi|K6wvOfA2;XWD_2xM;LUH&YAbY;k7;FSrCq~(7Vd<( z(k%1KzWEBc?7r`4_gKtF&ck|SE!s09Y7&eL%DBV&?q~>&LP&E1`|d@#BaSYYB7;vr z5Hdj^J~=TdB8HoW#KSqlg|peC_dWA==65a;8X19MXL800IJ~`?f zjmGELZ@u@L0w(Y({m%y-VWQ3KX48_R-l(cgi>X%I85crg|NFaQPWt7iFukYg*_%~g z5W_|#8m0^m%_OBI3r1VC_7{%~J9@Hh?8$Fe-+1jov-bw>?ftuoMGT+_Wz;!xa&xS# zCVtbJOYdbhPkgGfOy&vw7-8u(pjdn0%!zHcIiPgixMupugT*G<=TLXpU2GzgS$c)`hge5Pr0IFET1z63E3 zDMOmGYUJeOlDAXtGl9<7V<4v|cPdLnLrXi)63A z$Vp6Zdv~<|*{;9{IEZG$XNcWm#W6JwOi!sgeQ-XS+U)S0%#PKv(G_Z>`I^Oo9iRT1 zK42x*^|hyG0}&-v_B1!Do=fF~jke?a%4&t!IUp>3ua>ED;h`4rm)zt$=`bz5|0)4JpU0&wi2wdD5K z^>huvqxAc~!pz0EHL07YnWg{Juh5ac^woORj<}o@IAMGft^QuQ1^Hi7=g5y?^)WuQO3)C!VZ-nNAN#1(vS!7Gs=7ZLSq8USU`8PyWl(FFW=vp=*&m=3XNCRZElcW^br$GQ1%e&>NIgZNDf`%ly=%d{SMS>tz(F{N{HdgR zOVNyiprU;1SWa+wNHMBg zaqUdHn?6%v!d7nurg!|UkBP8hX|Vw;m8Ec=T(2_Pelzc$kjQES96^+tAKEr=oDbgt zS{zLZB36)ALb3^JJ^h|AkWbUIH}~s5hwQU|m#D%d)VLtlXTd}IOd{o)O#hY#0=}G=8*~T7pG=jthnlVEc zU5hRm6KYpJlmmVnqtu7!a23+5aG~A@K01ND8~S`P_t~Fd&>Pjop)rD~cee3vVMbN= zb^yrlq^{u1lS^=d@fihkYhVIT^fRnoL>fg!j_yjFR-W(tel+f39qFPueaE(&Z#E}> z8iU-RDObVZUlwgJ9Sv}9C;*H}ZdCj%gt{^5(o^Uj_=nMJM>Kg;<-@kF=|~KFYhMrN6W^KPNE4QIHSa4;Mg z$?1T_qZ&cCLLxQs-l7>Ee|0;+kZhP2!&g*YE0yv&$+a0G3BF`NRCqaCMqC@Gs!$4; zc?uW>Nv4=}7fXXw())rhxPQ`N6@wQB1_f-;)!9vH{ijs@_qYs@OLIiC+5yGKI*Rr&x9)EoYRE8OhP#1D-M^ztrSTu2oHV%N0v~bD^g|$-F2)4@r(Awus~fiSBsxf zby{RRcnWypJe-x}P$3VC7{2dwzH`G#!!zF{z@Y0$&4WjUJmJj379;DOIil5JyS|$I z>W=yeW!2YuLTGFt(5pi)C(M#*P;Yd(QxXQt&Yq!I4{jvzs?RkWJ0+JANdEPCOf& zmEWHEYCYS4IJ>@NBAa+w?^SU(vABHI=Pro$jWd@wgUb(6g|16%{}KD~ zj7h+Io|6I(4Tu>@Y)tw=1rTNVKN=m=XV2m=Ov_+sFZdO_fhW2$Og`Uvi$(>Au3V@@ z&se~qM1lJf%I^C0Thclo+GqmQa7y>uu|It&bxri>l$clSESSPPxwbz#C(X7lx1bzA zRdUR9T0j%)z0ul_sd{c!V}LW1obaVVFX}^PJzU)(i5UZDlxmS(U#kcu>!`vnrAB8{ z?4yqM0TS|wL7Dyp5Yz%Z54${*#KYH9cvb6-Yf|vHPDOayb-K}p`sX-d8n2Jq=&z7T zJ$x|8BxR#+l0`Z%(jb*=7PsiQv*F-BIZi`esh){}2c>B7Pr&a!@|@$Cg|S~|XO3>? zvJh6l`>QW5SuS184Fqm|ip^l_gk0sV~Re!R0U-3P#q5SuSjv z3G+2~>$d|sI>pL#Ew)taa8c?$hGLj!G~wb+CbJ<%aP}&<|K4FyFhG@kPvL!?)Jl#h zjbc3Ry=I?wVS2wr5HY`=R?I0i`TMQMrE8>iOiMpY=U864bzAOF1 z9opK_CwMFoZ4S8Uk&!a-C!{q-F6YP$fp@M4bBx?!2WtD zZGzs(3S7IOCQ>rvg4NyuDhT3t?Y-ewj_(t;$XXUCiK1||+D1c!l-z@FjzD3U1#)9# z2V?lI#(C^j$Y9P+YU)|RVkZ0NP4MfWSTVqqvtztB@l(b-MJMCE znIUuksiXEaj@vD)4T2>%qH_-~6!4fZ>pX&0kZ!eSf0!fcTs`sACjmdrZ9SJK7IIl| z6HIA&9J(Yo^v{jlKb?uNfBUvgs&B&ocQzo$mxxva0#Ynvw!8(p;iIOzsI?G6aH1e5 z{1)e{_7Om*c;v|yeDaMgl<-7_CKxw1J*7N#@B4PSy$@|5MggtzkqXaecYp7_rSF0f zG4bUt`s=y9QeP?5x7lrqJ;U+2F2KfUNJ%Q$M3%uo$aT=0tB_TyTW08Ztw9KVhFKb+^TW-(q-lZ|%#j#)rbd-|qu9h};5l<-?z;ftm_mJju&+cP=5)ub`@*BrbUjxnaXe z*A6NMz6<4I4ZJ0dBM=ow)fkzMwhP}i3w;zkr2Q?cY>sIJyd}A-YoCy=TyZC`q0=PX zU(~gzFEO{YM9(5lB@I=2LSU(s*S3yb~A10?yC99VLI(+bk>`eFSYmTPZS0H6GPQmwhJBRFo z3pMeTp$;bvRjb-iWGZo`1bUOo9<_lOjSs$ymd>(;$T~;R4HX`mfe_l;A^FlVwdgDA z!T5TqbiIr!l3HWq*cQbnUh?L>oc}eR=mIY~q;Xjb>6ih7p>Y;0v_EAu?!bkm<%+i| z3~`6rGy4`wqsi=T2AH#VoYkXM`fv8hYXpB%DD`+vU*8K8h0xp^ydp761>=%t{=;w` zm`BM-)}t@h4{qjbR5zURZf+9OPxs2$Zz_SRy?o)DZ}YjEco>aCKnlO%V`gl}$~RLq zey7X1HbIS{p3m08oORhvniSNrempSFh&FK4i39i*0cpu_%acjTBYgI`Pnla9yggdj z;7=RV}qc#mzsYj+(<+e<4ajZTrOLg8dl;nQ_v{+ z7S^p4ylUSN37@KT^T9(v)eXW(8I7Uv(c{u7EEn|EN3J4DW>1!+fKuR2-x5yjiP{;z z?1UmB7gl4}#S1H6+^rg5|QV2aSlRTYo7vMi>VkB_= zdIzp7`1=35V_U%sOYPtv-yREdi3y5PgccxK|1`qo|5iHNE7etsKp%|y+7Avw0eiQ? zZTKdp#D zGYZnG9)5v(LKEH3RQaXA^~&qdKTKAk%VrzwoIe z(0;LC8y$xN4vRz+Zg{qpNAut_4HSV#D{CmXLCtISAq0tPfQMDmu&ABe|H`le1VuSdmw2C2DT2|pj?xPT@>4!jgQS)4u zCA+92FO`4d{L3au_s%wxD-}#>Q8eKmsCWk;Gb57B!EhtE#O0D*AGc+Oo+pOWu(zw zr#Zs9o6zPNq{ipxXZ?P-A0VR{(?$iAxQ!x(QiHS>iZB*ynQ1(n4vKv8B`@pIg~+|)+4x{UB46woOi-?Hj+sP|3xtQO9O)sHd9Gt9y5TL^;}Kp%0Uaj=AOQNp zSsmo&n1uQ~KK5-tO*1_~Y~L)?219K%tvpaw9+C9KViv8>5sTaQssR7>-Tj$SBT$_3 z5Wi8xJnFz&fAccLPQV!r&k&|sFG&|+E+eOf;z?j3Zz<1Dz&hW@7*Ln)uzp2_N@&$F zN-D2ujOZ)jOyp*d(Z*PvO=NJe#B{aR^T{e2*n%zryFk%!^`+{O!#jWp5EdzkTO*+= z(rTO6`7Dh1@Jb4ZX_g7&z|ul<+6WqD-ZY8D3gfWWd9dDFDey~MnzqMC97{p<5nCiA zC=!gGDiF4{7v;*_l_O_65_0W0{V&=RR{Luc-O~WF&f&U+NcWVFovsI-=j@78_chWY zXVTNSWaL2PT8OwP=t_ayFQz*N6g*c~40h6Xix5D8gSU`dL?4}F(i}{Vn7PXPt`6#D z1H17Qw42A~G571kiN2zQkj|jEjbrk$gH`Erhe$JL%+^KUIr-N0eSJYH+a zNM7%7f;LK;T2s1Ot1xBad^n9W%H@6O7RdDk3oN43LN~>~B%9dI7s8iE1tZrI%w+v> zAN-35W5V`DSP=^-F-5*SO`vN&*<`E=D4T>*h{)`UmLi+@Vl3#2NoM-Y##l?L6fE;l z8-=*R>ipWdZNl(P8_i1n$^3kB-CUv#O}d&JemG)T^Y@J%5BEB%W-%O|r#$QdW8?us zeV!shI@TB}g!a!ty<-9+o-&WkPGjRq-9$`5>-N%V)o>omjrZNwgV^aNzH_nH=cLN8 z+pzGkpOCefYZbQ z@_?`*pv=o+-47V#sKOpe+R2q+>j6ZN6*z=&G8Q8uAwRj&y);S+Nm?n-!6Yhzr3SKn zxh@7suXA!_@@J)PxQ&9!>Nds%4rcVYLs24IW*Iw7m+mtXyr&}!j?LDMs1$qa&Vn-- zXO@W1u`*HG<*?dTe&-WjpyPvAOE9gEe~iyF_e|uRa7;M1aVFP?g{IzZxXoAunR&iaB{O zTt9LyZXQ1^{t>{7sk+WfhplnK&d@TudKU?#q)=4G7x~GU1u~VFJx=%??G5(6%MY?a02WE^4(l|3puMi@ zk@&mAv?|F^F_n=6z-xQc2i&9Bi?ofwetL+Uavs1eyQ$B|*}eE0u>#n7DQDznw0tt# z*Quh3xpiht#e)5Z4ZzU(yL#Vg(B-OKA+ONIhB*_5C-8e^DP`Ws7HLD?n=w@u(znF; z7^gQ*1Ae#?=fVa7r&4f7CPeObb)*EAP zNE4Dnq`23{#Nw!C4M0)TWKSm}8R?XGF-bnChrR@}mA}__hh>g8u3w;xXr99c2LzbjSR7*WiT?zp zMH|#`a35DZiw!8IXA}}-DF)OTX0>fjx0Q^J)Sb?w)u;vL7;_?$J#w=mcgf^wqx|_LLgMF zGgh0)7-7q1ur==73^r8EGV~HtnOo*Rc^BZ>BF^QghdOjF@h%F9oG7@6nKSb5_|C0iLrR%$;muHJtRX_ zjqXZsS%Qpg4)h8cP7ZdebvPUrrzqnOzj+)u(rx!i_Wtqn&c1ps|0I+2FV%6+Jn_5i z=Kumf*ZQ#?#a zI^kt|QrHpCU`MUih10ahB7f`}ez$)3ZPedknPmovD^Yd?-bDr)Ytjn00$AmC9E7CE zP7i4SGkCKNBIJkU5%nJ~LJ}?d^B)Wv_z|Hr6H#A=6U2kRUUjzEhyF$qtKaiIIW8~r zPT@^w`rCZ(T%lckIp%3{F@L?jpX}^02oUv1b;YdX#I_m;{=tM$ig-~{YD z=h5oWl4=^tGE}v|{LmC-r>)QHe98qC#EFz|9!Ggz%+($bhUvD^c4hK8DCivmda*}t z8?+9x0)r1XUZi3)%hE~eY+UOk@kktA24hIXOIr9gTCM`r=Cj&ZhxQd9MxrsVwH5Cp zt(rCR&B0EHN&XLBo*G96sc^6;hHaFOJ08RXCh=7&Wpx$5_(SF?;<5L6UC226FCx|j z^wPEQ$ee^M)0ki(OT+=>9sKf)d6@A^c#Xt5>dmg83J(q;K3g-U@UbJKXJOTJyZ;^>k2*Ck8%5B3JI=gu^oCU~Kk|?e5P^eZL#qB0 zsY;Gn-+q4{t_dw*qzp9y1z)0URR_}LeH>8)#R!)97XpbUitoX(N$;0#vOAaxavfaT*Q7l22ox(%H6;&>i@&EqMliJA^Y#3GOVXWCkhYOF$4v-ir;HA{HI33XcOk?xAq9z$Y>m4N1+Aj|8ID?Kcjey;o=|R@F9^dQ^eDmOOHu3Zea;9*<8|a9 zg)yp<_?P*V`$`u)?+ZR(6S2n~&gbiQ9zF9sDiRS9$#BiC_b#@Ed3({$7ohP`jA>m7 z`@hp7H;+2u888Klv5UX9J+7i}!+$n!rgaNB>(oigjuu1xhFSb=flGUn0=V6T9@v;Z zu)%$kuL2t`8T8SI>VLB!6vc5n@n9ZDbnnCbblKDoIJlINPrwKt{HtYJjiPBF2YBdR zwrt{9^89s~2zq?H4@rq4>IVYIGH@e(>}<7t(oaVw_q!IS)1(nx^DU>XwojkWGmWQ3~NL=n3@ys-YoWwmUuj=g3 zj>@*0Uc)hP@8vFNwp|KVpWmqTeV00NW>iF1RWp)lt=Af&hw+1I={Kpy9IZotHRUev z%7yh*>46~TA%mjV#{4@RpRy;28Z$?z+K$8_i}bOa1E`hi6+92xVtwMk6ibBaYKjHg z;EA4>xu+cbQBC2jHzfuyUtJlBA7<%$httB$HQUj7=s-lP)*$JK{|RC|0up=vOzPL* z0=7-R8jXYQ=u6DriJ)sfw$RqbO{SN!F?_a2G)4grHjIh1Z_1$}L~50w#d%EAvH+fg zOW@{1Zq5JBj2v7l5=n#u;n^}vhmS!?O-Wr++sNE-YpBwfo=OF2aRhl*BSV*cxljS9 zBNSrbPbivldAYLpHZxm_c!Xx3INak%yX6AAij2V4#ui+G2X8X49ml7N9ea;G4fsNqnRGRFYQYc!Xa zp4q>U3NmBzxg$1|UPB6*vhC zn3#o0-i|Weqi!3+)S63iwB^LgFlU}Y-PWgXowp5M1B4B1qXrKkd6Ruy{f(oXdM$RE zBFB3qTm%-MaG@>p*a6M!-?!Trz`t2icym^^G)4FX=p3>+k=a7%Z1x4sD44JH)}Lo( zi0AiC8MG4f5y@bRWaxTcfv|%x8TlC{y&mQ4I2U9X2+}Ar5(G_Vu1^{GM|8)df^SI9 zDG3`I_?D&mH451gH__?WZ`)Goo=4fY6bRW3&53+5TZ@znWv>7PfyNlYL#9^9h%GVd zI&ng->=};!>291G0r>!b;+kvaNs3xM6aWihbn0wW@CK9vvl4z26rW?Fn|+l)&bd$1 zt)#R@ZGk0f6*UvDYd%D!Xhj1LR0KW(m#wRqgMhwLFxypPA>@%^ZeHs8uA}lu&79_t zeBai&r?aetr`n%BBu&tvN!uwp18w+yzglIeLe*#` zpf-CR#DNpw4!|BCnfp_1a^Y{9klv1zoifCySJ(ndVhRV4gkuyD##04NM*QxkdzA zV%f&Y3rIswR>@Z}oQH+bG?l6wSwG9SMYz zM1sv!Oe}|~7ojbl=wZC3JuZ+LDfDj&S z^oL2aV)L{_7-}~D;uY4*Fzc;gGP68>?(UTm0u{7lSseSP7`}DASjhH1UbvTi$k98$ zjUQgm6}IG$5=|V5NTHQDvI3U>gxw@BcHTd_%02$ec3|f&2yf{{Sy_DK=_y*c_!Ih; zcZGxQ;^~Z76ePqw*oHc=lC`So+e-BLI%gOBh812LJ?qM8*b-%bqdQW~jnJ&3z(|Pa z@*+(`wm=o!;r5tz{Vsbrwk}O&*un?h$%&uEHT)x@VX=Cg&c975GI%04(-i6=bZD)W zEb9`-onn{f`I#g~(y3slfC?Asn%5{L+BQ|HJHMn4KinWumU?gE_q&A);dU%r^)Jh# zbabb;I>)xZ@k+^sv)DfEa>u&P4l6Hqph|g2>O*4nn0Hh?2SD*e3ar~>yzEZ+x>oFT z_|UQSW+*z)*N1rSh$WtWD|Ymt5~sHjQg6Eg$EF;;AB> zblOcM{yS_tcwxaDaO$5t$}og-<4ZC?L$A(-r~VGw4}cMa(o;8jujXihSL{<8iLMfX z#*%U&>3qCfwr5Gs|EjknAF<|J=&ID~Sm8y%y#Horu9Y>?XTLE=1e0B~J zc$%wwM_;Nj9dsLpl;Iqzub-L5Nj^K{gVqosZHOV~CD>U6eJB1A2g8sqCE=2xv&seurS z+tpSmJ&Y9pch`$?AvfY9D5t2PXij4nH)Lnt{v>_+s!iq&TX17|puVJV+BtpskKe=g z?4N7io(z_E9urjF$NW5_U_J|s<15empHkK_D1q+_4Ea^S))hRZd(YxDT5-Afi2)yz z?cxCcKLEf#{3EPHo0l6+7)O6@a-h%a92qa))3MBWVK0&w?>9Gai@Y`};;z9Uv2 zQ|lI#zwI9AC2E+Xk+Ntsc}&4N*DU2=7?>z9+1TckN1Fs(+)bd{Q{0{|d-@145<*ef z@`-zjO0)_k1g=*po$!#Ms`z(M2LcWH@a_64V6=%E9*}|EdiVJBw~S~{aVEC{Gp{Tm*a0d zKu3H{wRl}&njxnFc=Mw$*e768o{R*g)4kQkpW}RSr;EqRRX^o>-H344XFI$5l{b`7 zNJvx66PuFA7jmZ$QF0u9Nw1QR>S%wJStXv1%KG5h=}z30N6MI2c7RI2b)tDkK@n5| z@as&DEZ8$j2pn)X5I{q|*vZeT?15yjIJ9;A4e~oV7wYO{XD)yKtHlH4(R^3J05roU z%tli#sY_t&ue1Xr-VNwX(Szn}7ZUp^OlNxi7M%8IgOkpRv7tV`Vh~bS6N5D=6mkJ9 zL;*0suv}3d1Ma!j!#vE-vQq&+AcJdLn;Iu= z+ay;CE)^I3gsnrjrURdcZvn@!zUFxTK*yK&Jy|75yOo^^5zkSq5q@A$Xl`*=T9jpC zXUG#6FL6*nPIDVDBV zrmaf~H~ujdJ!9yn(GQmX890T)XZAPvTY$W+X6{K2Ze0+B|&16Z)GwB4fv$3SSU=k{s zmP#0QyQ9v_x96}~&$du!$Ah`qrXY>qWRnsBXmZeivA&ZM^ zSJXK^uL;KXVS^p6SXCWKGV>V zqm+ntWxRrdYMcPD5b*pot5g9ve;@kM&n;Vak$e976NZALAZ31WPGot`(}^Cbw^M>> zQZsD9a<1KxeQ)R^!xU}ViuW)-@FxJN*kBh^+U)vo<~odw$rYnBcyL0P7G!paIN6E*QPdnmvbLHF#4kq$fX4%qA7y843!ORwowVeU7OCIYH&IzFR zCm_}9j7H$1B69lvHy6x*99e;Q!4sp*`qCysB-TL%ZIa3dy$pR*sjdAxbJ6=G7$TTB{ zO4n{W_?>G_kXJ65g5$vvmVcZ5`Zkql0r6&XE0f@PIuU`Ne8?Pl4oWkwv@>|{tN?}w zEzT$~?nyXBA=Osagnx3AJAi>lO8k0GYG0LW%UO}QE>L`GXar}C+okB zlRQ?C+KC=IyP2{P5Xnv-TPTB_SN?rs~z?`_!pA9%|$)>npJ9zizSh zkGF(L>wx>wKBIp7*3Nrg)<|cfR`0zVPs#BU2`e$}GEqCGiA0eB{~s!Ts}N5x{l!nE z38m~aD9xN!B{mmRQha73`(TnD99*3#Uh1iAXA3cimV6Mi>Zv_j&q&IqYaCrJ0?U8r zlNpwx><2eZQ#-Tu;?8o>Z6APkRd@Is29jyp=#9Fu&1HR)TG1;K*#>W!a!h zX>QKZA4XA;s^W4`cBanv_5zAV+e0kZHJ^WHZ%zk>sF+eovXophBDUD|6-)h@&3;X0 zXQ=seU<@fEqnixa5=Ft7w0dinbz4K$dK3};lDoyaKv1LBZ~8tg-cnKI@jbZW%^)mz z1_Q_CTH3O~MPn>lZ=kQTMoAzRz=>Y$_PIUL#lWX)5@qEv@0NAU%bi)Q2h6!uZ!&cd zF!Wa(m4@mz64Pbk_+m!8`ZRrAljio7sr}q~XKKex=QmP^tav|#x{>Ap1BA2jP6ZC? zuPbt>93L>W8G#f&J|}cYai2-0(n9A`JgK{453@fzx~?67OrJE3H?}cg_kh3T10L>V zdA>pT%BGWq4c*A@)5OyzW8ZaOG`OpB+H6~{)JYpy@AcV~0uMKIZ7O+vYv7EwnAGi% z+qAvW4j)2^TO{}sapNS|6584d0W58wecz044)xN=yrot^%G+9)0i2-rx*!e*2<)T9 z=Yxq!YYSY&N9J}3{I2>9=l`VQ1DHdz-4mR@%2c=Y?KY$uFc3&#XYNddENvuGe#dnH4GSef3t zW|-Ad7<}%tVZ4QzYKR({+$WVV#0r}na<**VUrX1b9_ zYTt>PwN2afBp1{;gWbQ;DRAQVI%4upUrbufLTh#mr$kzp|u3AUR zwfkQOhdkCbwW@B36f_&6d^fd6AW`9s`!sUdeT0~5ZBm`k+XAsN!K7P z?Uc7?=RXVYBc~)T9{Wd!_jE%qYXMSMD7EjYr@wHj99==i(feypx-FM%J{IIUBG*Mz zRsCp0xr>qebeR6wG%;I%=6+)1nxzaG=~XKM%>aFwQN8^PKc?TYA9 zAF&z?w96!D85&i}@wuuLInE;KVBWR&7_#ZR?JAqt@Hzvo_^In}nQ0f94_^ikeVwZ% zB_RVsDlXi341cZbEc{gc(v6uwT%RD_jb5U_q2A@%9saYshPEJ4z*Ot^ug?+r1%mGU`I# zYyWb5jp{_|2<#2-u&L4D0RE9*Mr9pjm>y%*zPFq=da^pC#xHneEp%s3WyKNGR;e5E z!IB;pO`$M)S*JJ5;%>r&z=eba z$R)|a6~m(;CV{J$a@E5&VrQ}+Wiv~F8@-B3pn}N-YXL@jK^w_R+K#C9@drrNN&Mqc zZ29dEEFKbRfp_jg#dPL@(gtUKs|a0qA)v*5o=G*h;Qp9!t{46sk8Mp7IQZKRGXMIO z_rcY>_0rm#eo?*_hBk`;ns~}r7sgb12R?G&Bfi6FoMDq#NoNC+8o9rDWt{cWz2>Sm zq5acnUYY>GH7a{dY5QdK32c~tb7;XtE|RrCw?m(w$LA|=@buE14v9bFfzKdN=&W;6 zM%L}qIUJ-WWd%|V1X@iSTX?{M7fk8R9+t>1pM;}Db&Bm5_TbolD`*Pm^tX2kw+VWy ztqe;Z!be@?>qG-Z0@IPDd}zGrklGLIFov%r}AZvj`)p zz`Dt6Oi5uIEUcg7-QFBQrco!_Sa-$!6iNnTqJ*G0m6LDIn&-e!XGkAqyH)zu%l7I> z042pv(Bi0c=W4;jK#LUL9`y|$$wc%cX}EoR9FiZS_QlypQohoNRsN3%RR?k3)=a3ZZmS1urjs+qa z487L!MLRR?&K24QA12Hgp+RK?KPus^bTK!=0dX~=x&CIrg3RYdvh9b5F8z?3f4$;e zFbgK*E-E}1xJ9PX<76y~Ofc+mw#-NqAM`z37*3xIIWnP_)&4iH0 zQ!biAMGwf2Wh#Y=2A=@Xma%^37n09kZ;`cd-Wf?mx+KlI6OSG#EII@ihaxiwm(k@N6)LUz9f*WGEaf9WBxidE_mH)oJ7YjXF`v zzr56mTXudjB8a=K&f^*Bm^Bix$bOhY9Jro=eU2#ifWlpPmc4y(RB1C+SGCW#=59mv^|vmyND6q9A*N5{ zn7h$$P+FDsa~$uexeqrX4*5%@kVf*(^c8W5^4N`V*|oomh`lWi1Bz?Ufz~O3qwNtd zzf{Jba(QQ=*B==B){rrm{2(VzPdOg#pze!Ls>8DTw}jDr6bqD4W<{Ben&=pagY$i%`^!G}Ojq zkwl0Ib8AwinrcXj>bvxR%|ey}TB+SX6?`HIA>uWqESeg{RKqGtzPum*48FPqE_5f# zb0OM3Z~Kw~CUIPWeVHva8^I+#sl~Do73QO99rexH@+(fb&*|AxG(ATSA=XkHH&#tY zri~foo&fku?nhRqNGCx#b2iN}P3b5UG^QMlf&GDlaton*T8S!SAcIFD9_3U6A5ed4 zD9t6W^0UBNxD5%#ZV#ZUDP&5(26KmHt-98Yg;0p;2b?q>aGhPBP5C6iWm&X`r>dbooQNcBei6|M!P*)oLwgsFR`oE29@hwH@&RL1)nT_fuvJF~6R zade(hHMKTy6oK0@4qr3%7^LQ=ljoGbAruYHfyh?YVTYA~%e0^+EgVgIGg$9XBWb0X zbx8sZ1D@wirZ2wNLYjO>gTG3ONled0?~6ok+q8R|YOZ}VuGF8MQY$5+zwTu8E~x}m zv#E*-T*5mya6y;-BAV()ChMDwFD`E^6Z6Ys&Tg^PLw_k$ZI-Vu*}9MpgUd+^0qo0; zMtS2)K&OftQPMUDLZV3@k7g!{TTd;rOAYB+e=NAA@z35r z{okwv8~pYuYUswnEgaFG)T?kUPwVP+KGN?==NGeoW-DxX`-w9;MkXpN>CFjHZ<{2G zh~DoZ&cD?yF0Vc#Nr+v(EgQ{<*deRYT*3fgbWlJBpZ9nej z_e#{rcsgv#TsWLDpjq2kWIhl_G7w_$1FdE~x6)}oVgwlR(gt)TBqZXF9N2o}scAwv z&=drIVU0OVe09RTW0Vz)UlVQwB7NQhf|u)uHcjdSaS!n(kxAy>UXF5?AKDJ{jBS1@ z|LN(T5*+_@dkZ!pbM4*4()(}$klxS9O;%QWg?-|4gTq!?aw0Y{47i!Ed-P9hs94&d zGx$vLdQhN*rsxCz0{{>f@XhbsX&UGS@-np7OcGzkEa z_=@^iUFEwThNr8q#qFE(b|lpp&Xs<3rZGIf_? zqUq6iPv*6YlCoz~ggCYP%57fz;5j%b4qe60I@QNuf!&53?{wo=jl@0-T)r82W~p^` z5Pm~{lNOR#FnL2^X6=nSnds2pNr0*G{k?#XoFcBXKDuyN#|3j6z_<@IA`2h5p?tIp zaA$UPiyBzMT0i<1DD3>&*Wv@XJ5mUQ8o%S&tO&Y4#4vUf8%UaRUmqoY<2b)hoGD*stACMuh*lxg#c6 zeRcIfH~jX+Un|m?lr@6qm8hMe!(X8ZfSv)Y)ain?I*_R*0l>n-tAm<%DRcw*Es zi`@m%Zl!Ck@x_)zC6(N?n^qVImfC| zkA_0r@Zf4g!eRXNw5tJ@)}*&r*+pdM==6ziy6rb(nE@$ZxK0}@6V?-U`+uZ{LC9?F z47EX96Cf9se`~X;5cC`0+pB7AAdmo7WI!nPm5ChI6xs{*z?v;-2ZoOK;G8|{lulx; zY+u<70b13K%<4R1%(0G63)$@2@YRqYpS7fx$#TPwAco2ZXgeJ43#aZ0h>d`}M^g05 zaf!T9&sb!ap_DTiek^s*>}-k(|D!093vjR0^9}JIPSkJr_QP1e#Ku2X)R^lnhfYtOw0G$L3U_`vVYYennML7&o%mKA7$bYHXty8nn@7D>k`2tBSNE3H240@l`2aZJN zU_fn%(@nz@<&M4JeD~2>cvS>;lC_N#`3OkKbniuEo@|EYr)(DsV$=ZE4v{MkH(e9* za61)oNxG-Sc2OdVJY*u?0)0rWUu})pOWZ2Rx=2FpNMn|^&I3*Kw2aSr5A-r5r&rk+ za50`RDyMYzbgP7*B!1P|`%i#X3^R<7pkNOX1I9x1vB)SfN^M@Pcur@$Fi{uay@*Ay z4E5CMnAp-vczt7;g;p?u)Mo2^`CYPo3{7(C~x-#p<{C4@a~S!ZYaM`tGlfv5Mk)pwd$@GJAX6JYY_LVN41XxvRX+sk0V zq;7NeZHoS+k`nX!Rjgjj9ZR_`0~@zqU+-^BPu|e$Gdm|IiVmHBHvJrCcRqZf!MN?s zkbLF3&kPb-LIrerSyq)I#IpH)N8JahJ-v`^?q*k9dG-U?AwY022o9dl720r1`+N4g z1~++Du9(YE#O|EKo+8ZiaA2QSV~&H>-m~dpETBJv`>3`MCHj;GJT)}kmk@I!HOoA7 zXVGzvIiYl3FX_zFC}?5%3{F^#5{L3c{%s5Z|NH^ zq0OA`Q)8GowkYS34ZN z#FEwxqGbJ=22XV+TCK)^Y`+MTgK@2~%s>ktx%>v~^%og!0(JrtLa$udh>P*bS1FEXBm;GbYAxx7Ya;5HXc`ZmA z*?=(>)+v!R^}dZAnAK>9?BJz>Rr~@_y$7c)K0I0;jq;G)ZiZ%0P|fXQggScAgu6P~ zXO)<`TGLZNoE{1j&)RKw2a~JPc#+ZK!n9i-PY^_6x?MxlDBKLnW3uqW!bP*4OP^r& z&9dLk5^sloY(51^1Kl!w03S+pjp4t8o=qOe^udrtx|`nscXO>{=_g6qwVb7|67I!{ zg#5E%(uOdHvNn*&ks%YDJX0eX##}A|$`3jSCXzPl#oK_UHXIT_enE?6`khlR`QI)B zAA4Ru%X6{!<4Vwowak=|WKT1(g06Z{=U+xPcQ?(v22mFOSv9@8HcH(=J`myGWcWTX3iTP<5jh`F1RTf$MnYhKPAn%0No^gfqfocBEtEp0X`aA@6$ zH(?h=MNq!5>P(y)-(NBmkA}qnWLk>GcUF5{NQc>uUj1LJT#%AQAx~3a^h9LoE{O}# z1BB)doCs-qNC>4?mo}vC&sOBenZ0DxM~97o!mod?8FRxPy715XKrHFyRbh283f0Yh^u3a@8W0YD@(1+ik#<;!rkDQN0wKlw~As?(ra6VNkl`R+uzW8_; z)M#Rmz}C#bx)sPPMonXeb~pUv&0POC^Uk!rg$gtwD~3rhMcw(=bc=tEFJamRM9qYU zesdYrB*;O#`@Dj%;suN|hZH47D>f!y4+$vduHQRa?-yw7bz+tuqlGW>(2Xyn4 z5VpbUNa_(Td_M%DrDW0V*ws7cq7bzpq+87Z7PZ^rmi=UASAou2Ub+;;S!rNy{@_A| zAlpI{0tJ_=7>HC7_fN>NB~pz;@BINs=6&^oSycd#O$g+ki7n<=`BgHMT3SkuPqxE3 zzWN)Tq!)@js*yqT*O*n}kR5LTwoJ(!og8dZJ-j!p-NVZnu)^EZZM&6;KO$UHgp zDPkq2`y*w?(W3;u0(g#)mvJu^3~Xo{v@~|)4-#xeIV5hQ#+W;h`3vsyqj9dd7p#>c zJ4P&zFzYIRA#dqrpc~tk`q7NYD)vl{?m8tozloV`M$}G>ey~1YLh^HV*b-@uFfkjH z2e}Nr=sd%8!8D<^shbqhcciVvYHagg0jDO2f+0mAl2f#erbG(IOt4vFEVXcIKYD4ga+#!!cEGXc_TtT8?olunM;5Vid5YO3i;G1%VQ7x^7q zt7>-08rB_I$M>c`81%b?9`hhkNjNFP{LMP<7U1AvPY+Xdm$S5binIM>m1kNI0}a4` z+dsn>bmWn6B;?gOpVsb=ZN`YsjHr^<9c6HY)CCBv^qNg+OqTPtySFfJMUT>?GE8qSahjW1Zg zo&&ax*PLj)|27DY(BEAHES||yxwr1U&L=sYs(Z$y_>AY$WM3s9c$lT(HvLCInFO~# z`zU-76CTT?{~T2G+-&PF+`98l(Vh2bQwZ_3U`72M(PSHqKGqI=mA^Al(WmFDgneu1 zd#kS5^^W#C%D+6s1C z1OvkgU$Wr~zy}k}{TQO?A7@nfTQ3DDI%j&w$K}#IOqmz=b#Wqmvih5BRJZDFwf1Ha zjiKfOS+`MriFBZ*A@t`% ziZJ|XsNv<0&qHlaNfJ23KRKPC=lf!c5sW%H-5~v2( z`RxC6Lm`Xry^iMVt`bRR(evbFaS~=uPLhpO5pAlGv`T&vaRx|35No~BO8)~+eOr;d zaEu20tDTA~@*oVV{K*C~bq%^UMMR8M60b=kmNns4Jc`_wkAUm`hAq7ZU1pwc2%vy_w9 zRyD9)6{sp*P%bpx#H=ThAHe<%RjjT-atWfCp3Gafm9^50PGerkt`u|V`H8aJd^k^h zb9x?d3H4@oLC5~Wy^1CrI|zbo^+(5t9X>F;5DkR`wx+;&_zpg|2=|jL7rxWDTQF6a z-d@pgtktheefoY;C#s~GLVa+0;m4r{yk}RweF0%QNttGn?FAeF?z*>qxh<>@g+#s( z5s#Ni>|*)Td1Fq?d{kb3JqNV-6i402`pH-L3t^<&>{Em!a&@ClOIJF^4+@XvNw-2DM(y2~Mk=N?Y-lHKFEanUiDNJEZ*JeP>*B}lrs2gal6Z3KUGPr? zmaRcqyULOPj=EcNjn?sReRf?e(`Uw}rL4cn6}9;gK6em5tcM11gbb5y$&te3w3Mbv zX-fog1Gnqg&u+42Z zOTzs^q($8z5KGwZFm7oS_YX`aD88#|23j;hmC%$;6zR+wi{mwp<*OQm9D<6_<&^n!mf zdM`)TRlq44H^&S0R?E`u`R^r*uM3EgCh07iG5qBPOah8Pl+GnX0^l*s>bxOx_hfZqn_PjShBN%tjOpL9|1e*;P^BzQRvOJ+(U2iv>9(KBxDW zR`+`Dn&!dJFq+H!&(S`UtA#v33q5{S4k$#M_Yh5n-Y|v8^S{NYLP-r?J*r|SA0MX-`OE< zIYeNOOVyx#n+{g2VLr3uV?5Lr7#cRFXq%VZILI=ps)$qiE2kYNqy=^tjUF{}BQirw zfr$|(X9^0>IOt~YJ^GZT-qu`Vh{=g28v}b|q3v*ANcE+dlo_@fGkvmX(rr2LL|to} zO}=+vhc-tSU$mI95{imRj3mn_`X?ZdFSNti!oUun?#EnlxKu=YfJAHDn-Zh*Qd{HQ z9Op<$ur)9Ats5gppOhdITpl&Ks%SRKB>i)E)?|)UuNv~(d7FIC@Ragg+7u;FEUT7n z4W`AydUpf|v7#(K&0|3>**CJ6)Hana2aXw|PHY(OM#4$vu%4*-0$WTuM%hoGqiGgH zP4;_+OUu)8WJ7UvII&kqB|UV>6sw-L(8k47z>!^MnDJ6VwIAMclgG)++ ziP}?aMP17Ai_^NX?BP&$bETzUC>U=twmAeq7#>`?&UtR|7=!a>H{~iSCfFr^P6-Qz zSFKCniBTC_-8z{0w9#W>j&_2yc6}6+mvQ#o4L99F=$ZA-2?&+!8QFKLxSSW~RA@vw z=a5L>D%sWnHK|hM+++S?GIwN!F6=tFLm|^_NYjO}k;w^r7i2B7O=k)p# z1VV$tYlMy~Y6;5sFs|n%#tsXi^^_i+6mm*l8FjuApV<(BDt~*7d zDju$$l(~*&3X8T;K3-5|s5cfGD;sd&P)@#&kc|0A4evBrGUC$7$vX0hD$cbRjPKl; zW;-+ibZI)lhF;5xZ<e} ze?q(P1*p#Tf5?Pk_U~v2sJ**1nH}1So3%~`;W%6-mJVsbT_X9F`3VBBG6Wy$(qHvJ-h~tfv`r%Ef-l0{})a@L& zdXwF8W!=~ZY!{u{b7q9CKUvrXEJPw`4f&=)D2%3eG@jK($uUr`XhuZ9=@aY^MMJ@c z=_U~$VYGlSQKi)ZEe_sG@L_vyOuZR?53yZm+Z32$Xzp*|nORn%;%5KjA&NMXAy@b?gZVJP%!ZpgpLV?$3BbgUiaxJCYxZ7~N#UOJ8V zL*aI@d;l={1dkw?=z`i{iH?a$K^^go&+eo)9Dg!gM}b@RKYWaY%Wwk+-!tmE`pUjj zj6wF)q~p0cpP;ACm|y_9v%J5KX!t37`Z8OgdIwi%#)$WbUO!dOb_(?>iQ|DdbH{XE z9N|xX3H^0P&B2sR0xny8DQiYGxj1%*MoZyJ8V!D>xsIN#WUohTt8mSXBW^}m%33ES zX1#5y`yefUM{1*wZEpuItM)7RF6%|n4+E8$~es{cmSTD zP=DsP3M0ChNr3!ZQV+7bj%+mjBl55ve^W4f^{6p~F~;kvgj{dwH(`RogU}HQhL_%g z`pjJ{6y@=V#B8D^zj0ASXk?RrG0gE`IfmV>*srwC&NY*uNNY$Ny;%ALKYj+gKt1 zip-r6d<6O?y&;}k+zFlgkpnCo=+#K^-sIMLEG$TU$jY;6K!7VgJz)j58^ui za*Ujdn(zJ)ti>DI^MnEasHix~)XWXrSAmDTg6WMAcje>VlE#fokJ zB?cm=V2W(KT4c0!QvJ7Ivsq{lSm@5>$E-5044KPkP&TeLL`3~<2pFC6!{Kq!Q)xCV z?sSz&^e~TZ*eYoU;Rq@;NP_{UJa?k=yx17BFlrs5f5}kiywl7#uzn3~)iIK}~YPt6tk#rr#+@`mWSLLFts6z|? z4zV%Dt@QR-J&%Q(K|8axriMu%l=A@Mo};oR%{o^O;0ufHT5v#Y@qB#Xn#HY4SXNH= zt*)7od>WO5JHb{jf7LNM61h_V>p_;iyS0g*&={!<$=UsXH>(AG#3S#dywdU0wcbDQ z1mFy5StHoxCyzTdj$BH))R$~TD5Q@s!f4Bn{_jae(d$Q0@LwX#oEhA5>DRd9Edz=X z>wInEJOhUeSMizxB6}J^-$QA@8Y_`}98_H{hLyzQ4G=USAM=GX-08PPJw{OL>Y11u zi77w|1e+9Atme&3OFM2tHT-073I|Xjbm2E$k6|&k7GsXYB4_5uXh{W4>E;er!*Ed3 zgA&IJt(k3eRH?kbdA}>UCC)Md_SZM~A`$T*u`DhPp9D>P8Ovn()TQ*<)RxvIDXc8^ z_Mr$}3(Oxo(hHkd^3zrScbZGCN}2;T`K290v9Ng9Xwnqwe;G^7G~7*S-0->KT#sHg zcy^KQIR|sMREOCc1AT_*|CF8-3GEDjwze8zFw|zYA`iK^eoeZs}!8)XCA_YXrO96g>)MJJmsmWcY-$ifhLmRzWeg+n8!nG_e#!Yi=ly2J+UV|hEMSW z?f!{6pq1PIDW{3Z8SCbt{@PLTdxf2^reR@#{cyB{kow69#E+A6Xw>0R$~dUT=;PdHvn^dyuVk!7)KF~}?gqF0m+DEydsei)bCWa(oMa|W=lmHThHPIPGw zVeQ?pFAQT^BLJuJ)L9fEEnnn~*{W>ShAPW{MJjMnj(($e5h-ry=(K4?B#O}h-gSS7 zfOHx7jf8UUR(W~Nn+xWek^>rEkny&?tQ?8r2l|>xsC% zrcgygyh}3qS64Zggfj@0e8zMPguKPa5^{H{8X4}4?kKLoP=!1LS^(^cyV5Jhzk_C34zJbjPmWcg^=f&9HLG zz7u!WO|f;lJI1+Ch>M*r0iGid4P$;jlZ*HNhar)X0fh0r)1`qQveC4&pO-VtN<$Te0N{3)*eRx4IQScuU6GcW7Vo&((~CR$4Y}HhMlBIv zwtK;b5c8h9ep4v~SZnsF`tOgCY^64S3F6_#RCyqv#}^&j@xFV0u#4*^l{^3N!-Wuz z)>nN>YNmb!cZQl5QIRDEREw+iqE(eJ=pQu^GRc+uh5Sh#t}(H~lz-1S!4o*u|D6M> z*PWXOHQMh|e=9Nb90;JS9GTSvra~nFX~?EL^%2u z$R=p|9FA$N2%Uw~+m5EpvV-N|d8k?-@(8&cxgy<$^cLc+wFc=JC#OTSLts%vM~b>d z?tumv`gagz8=jzf=jYcQO)IkK6z2e7LA-ZS)uuL&p2n%^A;Y56;W%m_z8ZIpaR|Qt z=ja#vQxh{-Scem@Zx{bArb)`JxI@i1Jp>FPN6P9}T0BD-bZmdq!qNsx6SHh}=5B-# zIvsC)x$#a#9Fpot39IV&ES~{!Jz6{0y^W?5AhTWUWn}%BNa&Pts$p(?bfes(K1ZI0cwkr+HaOY(-xlET z{ni#}2&wZahu53UhL>gb?64Ai#C@t>{FnBq?=~V`A4}>rV z{@grtnP|q!GB!Z6JdVAaCURfWmZyODS7%8^?^oA(QRasFmUNXHpT^}HpDj!%xE44| zF03on8?W6C+M^E~UT)&NM5*qJW9_=Mlt966?kUAi<}sF`n}s0I%RI|Q_I=A0mQ<;> zH?756#g~-sfHBf3Dj&-)d06uM01Yr?Ny9FG#)bQSt5h2@#Q1vaUx7_ zV2uRmof>zxSbgjO<+L>L**e<1Q3E!*f1DWG0>PQ#hmKXaFcBRjfee0TrDaV6=z0kF z5|^lcwfdHG5msFDR(xM^#Nn*QXUqO5Dxe}aWz;?`&knOa5fg&FSR?D8=oWD}FVHhV zf{IrSF<*$n=wjM6&z`yx4xt8$e^IG{|Mn7p515u{`Th}17>{|)8wBJ$jJAf}!3>q7 zIqkL!c=X^SZywFVS5PrVqoK`;YV`DUgb5Zj5&YjAF8cv44krde^fj?iwg@LWh#r_& zQx7&6`dZhVy0_q;-2c^cCEG)V#WXbg^$Zz-kCZB)IeC65A`A>)M@h{n7SULYKJoL~ zMYc#`v8;}LK-zVSt&tT}H_`>kJ%huFDpyse`p&w^^{U$?wfX0+c+ zWr&h$8TPN4qeX!*GPyw_A_(q0K89zOD2ZZB`R38l!pIr=ey9JRhr(nyN)nILgdjgv zB9e;Mg!`A`0B!w5EdwH*B(>-uUCtKq;i4x{}XIK!4n%It0^nRmRX~ zoLs+IESu3wTXQoK5;hx<#b`}BEN@@7Un3>2F>3mFf#o{X*kE4`!g_>41?raVo3%Hb zZW`zjcd@?mD~LyZasPSq>**ktQf?{I^-L5Ar5e`x*{`oe_iGHe(C-qCiT?a=rlkvq z$m6tM0fTXq8Oi|vKLEh8cMvu+q@?kF5mpA$`U8=Cj$vlU3H07Hx2{Xw-y}7e&*|H2 zN=KEa)5z?@-0^O_pvIQGb}^x=k#NqhB7$?cR3|uFcv!T)!7gw2^97I%dc4bdn$@;e zfM`D0flNs>-H8qW4^qRFs;Fw|C0{s>)|t_r2OR&6SN8kGrHf+&Pf?N`3m*nhK~O;L zFHE7kshlkwcoI8;uuM-w7Rcp>|zna=Q=652U z{seCdydsu?`zuZ;hNr1ONrwE_s5;!yy6Z40(a~sb$(ZKNF0y(_Disb{dzlA;3!Hsb zUnC&KYEI&c2@~o>#2bZ%4M# zd!yb=Jv1eOY#Pntx-u-PeEkv{Oc8faohhj3Rpf}`C(pbTmy;O-jl`Y?*1}@1DYwZQ zy!_%c73BC{wEtj4{T`AM?joLf-N;2h=Uh1(jkR8~j4RsVAd9qq-R zBo|&%A~#YR6_BpUy-dWzNpfK>IKaU05vB7)DLYMmsek=<-r--kfc@zr@*nt5W zsKR_|{sFP9yIs>D{N^>IdZbZuH;Y=M?5%1_D)LVjDA;(fk_zzEU!>%&>stkNnu=01 zE~uUh`@icKo_6A9PoAN212gc~Y5A<_E4$LRi%pPf@T#L$;$gX72XC%2z;+4pF^C#2 zgw1?Dt30ego}x#&oB}&Vr~;xKqVKK&ers{mFN6(OdAolH0Vw@B-B{-XY3H1-rs&|~ z&OS@E83O*)C5+J>2ro2W7ezP~ho5VPI+cSL3H*NSr}DVx-?^r+fqGT-eTMe-j8<1gW%UeupgyssMB1LM={$TX%uU!$C0H_DgWjfhJWLv9B?5fzB|dq^^mC|Hb4O zG8=3Gv37f!H1*EJweiYq_Ou4?R6aP(6FxU5Z$ulG?Hn)!4*3UPNm7hrDIt#euafit z-3^AxMUVKuvp?itrqfYuItG}HJT5s4q;xAg8p@J@XF(q5viQVAStGm$hhk9`E600i z_~j$^yy>T9t_P%*VXI}u4In0XV(!(4Q%JBF50!}JlDh15?D!1ASTd85$*v1 zJLPbAI8;tuRxrx@!eTe;XbDN|?cB7=yd=SCyv9;*uyJ2RTQOPAV)~Xkl6n#kqyQ4Y zy(nSn#*#*`J71z&7?t8FmhmwWP9_Te7TSdJ+9ab(oqfdxw`_oL*S`NT_)mb5xPKZ2 z4AqEqr$H}OPUY4>x|X(+j|0R(r%)A>^0tqo_N4|iV?oa!CRH_uBC~iI2S1*TT3%)2CJ*o;=%Au;u_GAobuJ}%gUC3wSKj2MTk99lnH`+E3NwJ zb|c?=&~#71c|Tzy>v^C(9n?Z2k(eli{++<0=F7ANSodjF!C|~f7FV$(cgZdS}z(3%oMY8%`itoe48Do-_Bj?Q5oC&{oZ?G+Su;BIAIRC^Xk6N83rQ{2Hu;M5Y!rsZxit5V=DkO0|_Ne`M|cp(WmabNglb$Z@X z_1N*ZpdBF$H_dAj=W3yutnTQlG;ye`2yvbOwPtu99`^;hpyOEwvT^`GfB70*LzH*= z_;T{p8=agch_g#7;r_^hOUo)~h#rt=aSbc>bFXd?a)gKT4B=bf#H3r;oLqFPdD?gx|4O5 zHMqof@dsUy(9$JcIO;Nx@tVZ)W~gmsK><;E;97MnK>gv+ z{{JQS#=uRpZ#&4?eFumNv&5@<(A5_2`jtrx2%(;Z)HmB*sB-Bzj_F!vKTex&d+^9a z-o(r`aJY>Oz|dTnE+OAD!y~^$Xg?#!fLy(qOLJ7@^r!TR*7@Q6R2{T^e~EL-R6+sb zvAI)E8XYZK@b%dHOW8YUtR}fQFc5lwJ^5^7a$>03RA=OMewaxLVu%z3q3QL30>__a_Jq)%&g5cm? z==dzuk)_w5;aU6Q)vZ1%U+W-$rHe=UaiKn(f&&9S~wuG>NQm&T_ z+6!MuW@NdI%}8huQlYLWYZga3m`;F6{1`Q?_Djf9jO!n=hc+gvE**3v5IudMK3EJE zxIaraXRsrQKbKY@kl*OSE2rED`B+0ct>06~Y&smV*iMqm?Wu*ituTX>$1JgHeN8O{ zcts(GL0a<6axD0q7i&nt=pI2LVLu5(&3B>p!@N@XOX(<}l1E!lZH-3cMz%g^<-AsB z#Vo)sWri<|u{7dh{TOzi(TAD^)h^j}+YM&uUF<$ouI&B)orQ6`EZ$hObi&_U8+)gq z{o4%ELREvF96uwj0>h}Ae!dtZl>xbuF?}8Rln_ojA)0}ZE_bO=M-fBLL(J~{%a*7I z2tvqPABmn6lM)iP77B~uM_c-pGLg~~dcw>MR;-+~@vVMS2hDb$a$G14TkBCmYVzv` zDJtwJ(nx3>G<`_WGU#x-MN)j{#!3eSYxmqhGSfD1@)r`wZeBuXO)NY|Xi9=wz3bLh z!cuyOR}4-dUkk;kI5l$L5-;Gcj^|azCFQ-=^G}tFXs6hTK!wbk6PyseKCcU;Ekv}4 zhB{4EM|8Yd!!IrMJ)>g&E90XSF2h1sp8P2@6P>4cWtXbam%?{)bEh=(lCzG96x^qx zdZDmGaqn!jD(>{Y6AFM^-cU``22F!VTccp7fd2IoKp0SxkjCs`X0g~GN(klA7=aqEx5_ka^d$)HNQ*I*P~l=1@jB}wfPYo&CL z!p{hY!0i?ZuByJB+8HqGUA{zPw^28^0sMOXI84vBw@kb)NKsyFTN7`=lgshDWdPO( zUBbZ>a+C>o49n3|&NS{5d^_5Ik}I;0NlXX*6S|(XG&OO;zT;u}6*^H0P=RugyvyhG z2lcJB zdcv4R=#Ngdz3zqltCukkK`z^2*-zFySmwDr=B>ONuRAbq3}`7k7<@ zPKbZpx!H(6;m-~Zyz`2!*vbggq*_{t1x%HS@~t40vpvBL&MqrRnPOP<+RD2$x0hp zKZaCY3ebv_MRk!Nw_fX1{kN$&I4KSyy_XJdqheznBj*XdFhV#zBIxeF>09tgw{(Qzj=k8jW$~+Rl}eV??xA|A{8L9JG*~yA%vm_x>Fw!>OofQ zUOg9BqWUrP)EV~2<}BsO@0^7RO}u8%#vah0Nu9>9A(R`ZZu5pGQ;d(Bw@s*odoECK zTYo4NA;9h~j#X`0HwB!Q%(ZgC7&24nOjoR6o6GumogqS0E?Ez=SmHZSy#$~3<3SUtF+Ogd=AgPD@WqU&SJZo8--A>$nL?*;LBT{Yr=K2|oS>*8+zGj3IAV0S60a?qXt6>ZrzNv_HqaAH$&E7#E*M zHGH9Bh>H{Rn033Pe52jqVXE5Ic7;PU!*`J5ntVMY-5|)JKzRNhN9;#88?Y5~QBmsN zR1Kv$5Nm|u^sqsKy05S^`h-ZBNhZi0wMp0d7?~3>65DhNxC-;-cw+|{fg7Zk+Xd5d z4|FpEHXV@GH8}xI`x7fHib$nCSKDfu=WF9`fA8~N;9^{F3;(iZnIm$hG6>WI@eZ0-yZZhV3OHts%$;$ z!pf1)0zpRO$@HVm;`zOm_nQdb(>`c@+Yz~#yGz6Qjt$D|h}d)*N>uPpVc3WNGG6j1 zT*dEsxM6wQ0yp3qV@f3*IEmsEaKE`oxRBT_^mjz+ZHj|DYg?wW2RP2UATZd^28l|K z!9p6o!|xHsA};;}brr}x*XU;<)tx<0sFLw=zj}9RE)vQ{InZ{Q@!9F2ImSe17->W` zO*W_|Y>-8`$zhH`-C2$~9e`cnQND)uhQnLJu_IOqqaWBE8Oh>&Tb~EF{ zVgUJwd2o8LJuRHA7^t5fr7tM<@QaZQF8U_2^4}|I%m?8I5=8S{m2YywIYrO-tz{YS zp9Hp>N>{z-s|&F*!uN3fK$<$Kuy-SWXmb(RJBJ$IT;~z>3&f^u0)8O9_QMVcr~J(qb>!j~L|; z+6SN&V~P!6=hit?Ti)Hlx!{4~aSKjdA&uGsch}Y`Xw|yU>7J*G3pn&l-?{MVv%Jih zz^BItDe(-PJS;!Wfsoi+R;BZXf;0&#F=+@sVj$7g(yL3zP*9}aAamHou%6%w>RV!m zAw{rg7HIAk-kBKTJI=;KU8Pqz&Cdl_>Q;GNClncd#`iYUjH_bJO~4XGgti|qS0_ow zn*I|FM|r%&nbB_A``{|}08P3;?U8Z@Ovw4i3d8|qtEUY-;_(0nW-ygU`J<~%r+1+S}< zVQGY~0&bz+*4JvaYI_Jr9-VX3eLKZXGn=6a^CPO@MY}L6xys>-|Cj%G?{-+W|oKs5Y+zUrdG&Gu)rgS_?4TVY-f5KDx z0=_<{ySdI&rpPOFm>~*4{=>ii<*XPPI=QF{0`293;xmJY4ovv16?5-jQ@H=`m#s4c zsRbDh)NKoDEgUTuhkiSnlp*#Aa5TaIr^YellIWQ$38}1*YKI`2g2?vI%;z}<#dUM* z3pegMDc}hwRkMGPpTwa=k{z+PHIKlp6(X#8!oe^w?)K#;xd9LeaUIi5x2pCSi3^9@ z2w__5_iYzSTlt4$Vci|E zJ81v(|C2JKwQi$A(!d#7ZkX&a3${j0MpkQGN9)m(&eZMF_ zQ$?t-d#KDEovveAg~fz#U{Sr*u1uX9!`NMI+z;{?SQ$F?c^aDRct{-0y9;JCp}ZYE ztKX*DTt1#U!Q|kj)b1;w?0&pl2Ek9JjxN!n8mFpAbIBx-S8QT!TEEv8;VidZ;H7^R zMDV6CuWs5dSe4>p|E|dLeF?CD+4xs zM{RsNmlQ~DbxyKPPdit_neS`2=0dkLJQX1@veS`V8kI)02qdz;YgmaICj7d8bj=D| zS9|I&P#W_!wtsRbdcn2m?{1n@fxxpJ>FiNGV{Et*oXRFa4!%{PrUvq6|3nj)@b%sW zS7FB+uQO!4ZcOFCEu<^qI;qKU-GrqMwv#3uuw#x2+6gp?qd*c-P4E(xa%TC5;rK0P zjS&3a?!4S|H4+QvkKauoh1ZUdN05M#0HBg_;Oy{;B6se**RpdKVvaU9k6GT(4pOhM z*sn~-oc|AIJR92RnAlbAs*c7U_If=9_6(PlGn}K{li@a2%7a2$of31LG%s_I?eLfI z6o3R0iaal@2XBoHpo|DOc4VFj`m^&uO>b^e!#I;dYXNjNAp@eA2HRA(itujqc79e+5{%zLNdETu4Qrasxo~?xQ!fKkzEGbaK@hn{pq~(j2(| zCmr9wAUg&S3KfORaOnNzez0ZZpvvoKBwiw=P_0yC6-K3E`hk6A71SJN^h5+Myym0A zn3mZv$Pu|&l1|J*02ORaU6sU2=C_&KaqWQcY8F!!8jW=#ec}|DU^Cm#d%c=dN(wA+ zD@2DBEmVybV@gfDk%>hgS}8V?<>TNoOtOtJU75Yk_3G3D#{U(P1SCmPLazShOS9zb zBQNbURXE|T&pZBPilZ>PA?0xDaJ1UvyJ2Evww#Pwv)2Cl7|lZ|Yko~E0jS$p_^(`S zVoE~?XHh9;!T2)RXpY^)v_Mw_7ZG%)+4?sjN7|U!j4MMbBp=Diqz5^ru7DJjmFWa$ zpk`-+sgvY=zRXILzPoalaweiY_5s^irH%{tBIE^+US76i)^mH4{7^BLI@W1iEi77t zptTSevQf8jX?G2Rw&nxQDOyUw;Z9~SE`xS@Tht1v7N!(Dk(XLD>^1EJ0aR|}J39O@ z=BsJ&=R@{tQeUW9BR&CI(XWxwSTs`81?NW~W>O5|ReB-P@+CT>Ec4qN`ii{o3$JpT zr0{WS$R7dGwheba6R{V=-o+vryWVy0sPk1t+G={Z55x%WE~)(dG-?D_`;pipVs3i8 zTqbOXHWVurw*bk+;RVb)uxU)`Q~i79UVRJ2TF0{3ddsriB~+LcwF4#hkk{0Wq7kemAF?+QUa)1aSWti>qerR?BsGhg&DOtGutG{K?gbRw@@g)&tiIr{3+ z+b)MU@$0a3b!34?6Q1O7CZBg~GfsXQOxK!p1-E1CxI&l)Hu^%hjZ~>^KGp~a93{wu z_9a{J(71!WGL2K*lSh8LI5V!ls*>TkO|i}+;?`1?OtN9{m@tE5F?sVg#&Ty6S_MKK zNiSGd*ZUE`UUuhx>oi@B8L!!fRAQFRM=ozPRlIO$!X7go%g2AQwtO{e7yS~uO$)pgmmRAYgl+B)w zBbJ>CUQ~k4nWYcOi28CxSf)+e$R<@vblhNw+csvbciBo$y^#72PAl9pLHdN&Ht&jesGuojaM_~WI}1|36XIpE zE|L@>3u;CY6CaJMLN&s(w7i^RolvT09e^7_%75n?qy8_7T^G7S?x^K$D_?p9vk_x7 zL~w|*9H1*_S&^?qn%}f+B;abX%(R|{^U(ii|MBZzbn5>+fxyQ*a30LKf}|k({SKU? zg0Y}T5-qxJ01}}X+D2`pGczJ5tZ(p){mH~=8K&L0T9hpBa-*yu39+6usRUuWSbo)V z-V7F1*Uxu=v8-Bf`cDk_e^5xT_-@fgG1XW(F?-5`wff{TZ$ORNoXf?XN_P(%4+>i~B0(*||` z!D|p}GcP>N$}kjIHsU{;n$mHCS4Ge`$F?z+8Mu_k3u`*eFm$Ru0Qx)U_M;r`<3@E= zL~(nQ6dTjw%<5oqoUt==NCEl~6>SgHijK;I{ytV*LEqK5@Y3i}1C7`C*bq>;ydrc(U@VP6Vvr@4p;_ZlR{xJFojf(YAN^ z-NhIk31V~|hI+V^IOZ*NOX=}jgzN&DooR*A+QQ*8_XwDIUHMwa_6TT=RktC^?D8w` zZx-fiBlFLk7YU2G)W&e}6`B>=&bTo~1_$X6vn19MK#yO5aF+nki+fwEK{N<2 zHM&mm8XowOE*4y>unOOjLNXzE2vwZAm0vJ%-(E)%If!SamgbY%Fggvew5Z==uhtOi zwTTI4L90A~LBe#R0;VWXa4SIx)@GRa9cky5gjm$xtu!pMws-6*n4!-Xz08|ZOVSo91uQl3-Ea=5y24tWg2oTm@=9sKG;`^rQybOL~T#w zl4Ld4m)Q*_je;{t)==`*{R;&$uo94qv$VBm#rX;==FYTz66^sQ4+g0gp_b0N_k=g) z-{zwRguSE^n2+@kH);I8)b5p%Q>UhhCdUJO8Uoj}KcgO-{~-i{%mHwnq;{h%)1~-f zT>6nDTDfR`f@jQ)`-$V->ffM1t+@4KZvUgjt27Nf3CWMjjzt%a_4*9U5JQSxA{$X3 z15iz;j#0ao#6d=)APl9qFS?60yxV7{sR zyk46!10w&gn^UxIU8*iS7wi$gAuCX#%HJ$4g}np4Sh=4(V3BKLfysGFP4C@N?OSN- zim1Rd_q}PAlnm2$+?#z#A~$_`MNMM2VO|gxBKzAHtbZxokUN==-pBSnK}lSH6n8wy zGw~cTNn&HKZ^+sBs>tiE!mH8;9G)Q{Pk+_kds}=|-)|J3&8rPPI>kqAd{|Lyyn76Q zhc)sHN?2f)1}4R5txBUZdrGe6Z8tuIYOJ~1MiGWWgwk~xgVh2zSo%Ucnk$mP8o!xZ z-MHHWL(8cD9v0DNm!6zw+7@Zdo`DBD(qPzIh(puR+)$5aGY}tcCYT z7y=K^?NY3JbG0aPTBUvqNyZ!8afc!flL;n_yHyG|x5a%qy!SI-HKMMbI8t2D@nDtR zk`qmT%eEC-sZrs2vHJ37zOa@SQ@1K%`8zQ|u5m{#9wr3}>s9FfKHD8p`Bx#QAOpBz zO6}_|{M_SDkc0fX)?vV@PXo;Zz-mAPYW#wqCjJRTGkhZ6oFPP;xQEq|6q~*|=lo@k zHV)AJL9`JvG3}W+)b=N6pq<%^gOy_N~X>YKlG2&vRq?y)7!b}i!g;>+I{ z=}1sX)cc$YtTWJZYOnFgJnyVcrEG}G*q#w1WrmS^=xAG-OaG5gmH~RAl1Kg2XLZ#8 zP?3QR(H~dQdaL|*Jv%qli2P%sTem>#2v&6QIefN{i*}AxI=Z)CAK$*#+bKtK+x({i z(B3gMS1CrjH^eQT+>(^8AeS1w!aGV?Ck*7=X#Vz8a&-8Txm#_AV9D(nm8QC*3h<61 zrwXL-izI~LIPT|HhE*d`AY&>Gx(-| zG%1r;{BJa|cpiHpji;QIDcZyjZKPai_AQvH%30ijVtN#g7b}Qcz0G{c$zBBzEJyWi zh(Xe*L_HR1d)mbuA6EnyvNX*y7|;xp7rVpjVq43&C z-2{U?hiFS|#0MB{AQj#-J!)H_2T^GZ_zSboH>O<%Qxe~+l47U>fLRUb10g`rXeXhZ zVKb==3kqnzQ^pZhIlPKza{T~$w}7pjUzhayKUQ`KMis!*VA$YBcUSpC%0dPOmqK9^ zG==~7RQ3W;2$m?V?5qBY#UQ}Gvi!@;F+9zSpMpopTR_d%H%p{h9Hf8Ymp>701N9}F zJx7SWMd(7ZQBd@0CMYY3Poi>%bqaFIK4oxO`V9VzalK*|gy+rTiR4Z^qpz+92vcPR zXbi7$5MDb6v{!mOq}12)L5hzCBnjg(yUmNJbS6s?7m2mj;;IBipNQX=4}m+P-@qmi z7=9Z#I zn>(y;3vfoOGB-`lh8nT{w008Y#&Ml3Jg7yR)XE`Yy+*fgf4E+p7*k@y_?Y}}WmYb7 zcDOU3mzDJ;16>JRy~S8u{*AVJ9!XPsK3|l8CBuI{HyoU)y&cJ&dFT@Ge-hpi*NJ@W z61OYJAlX8fc}T5r@RD&JRaCICQlY|jS%3Dt`e}K82iix*i z7TnQgX(HSH9x7`iocD8a5x|F===ymb9`?e$rOun_f5PrYIKRZOZT&FiKUDYZt@+QM zzEqY(GFs=ml#}-Zj>UTIE}ws zncA>1p2%IfHC^v;KH`vH!BRBIhg#8zN<#|IsR9Sb4ou-hU`eoBW|`ldr0sI65q^te zH7oTk>~Z|PQE3e&r>ykr%1D1VQt0}VIKv%F4n^R|rY;sbz=citcexHCaHmLs&Qqh-;$!(ngk1zC;>o?0=;=fALg!PgiPhix(x@!LxLn5fMsiE&5LM z9$4PL6OVRbso0xW+!Wo^!!Acfsf@olCeUEdF8kzgy7j#8l~Vce z)nf+hf7+<1GPj!SuAOLOP-D{o#%eF6piD=0 zfE7S1<-6}>96$z}$M2Jxqd|zOSmuOgQD~tiah*3Vm&ps~3S_DSas9zzz8;;S)yH9n zdAmp=uh@zoFf}xy+VcZGgyEW`d~Tl6io8_%81PuyLyxT@gUzq=63J;~4VvZmuUj=$ z%2I2##wt_MFxP7NL#0*}QE|bQbE0P0|4*W*PJZuXJ-ko6XlsT=A@I(LSw7-AR^10# zMkMsChJK6BGuD%d*9G<3Uf!)ZR^TKtLuHVa(LR2zXyg9-CpvZ70!13EXi$usLbp%@ zhgU<9iMTj4cvTQ1JZ0PI2tNyt&FA9m0rWpp-Nsto%Ui?0Y&;fV=W2<_q@5o>CL65$ zm-(Hvpseuy%_$`!4W_xLrbX2^^|HQNfe_u70x_;k6C8HD;VmBRgM@^4CzR0K4;CD# zib}y?Bsm>-pA}Q(G3lRR7OWsGEz%#j`3v|@&bq82jfyhiW3#$D@Z7%Bj0VDQo!MNm zb`A_@-=S@{YH{qkO~8l3vqUs&42va-_w{0`L(z%*$FZi-pUbVmvjzh=bgb9(NQg2pr)53%@$ zI-r3WO#?W872yaL{fH9hmZugD4}U#z#9I7OVYaG}bc3`0Sn2jnYC9k}3X!@Gl(Z|5|>yC{kjtwRiPErhL_y((c=_U^o$snU?& z84@l`hZm0J(&5Xv|pL(z4nqc(Hss6 zFc~~A7cP(ovsS=Th~yW&UjCFV&zM!AL*(?{>i7YO`vf&2=dljB z`gHAeh9~WbXuxRt!|!AnjdIU6=kMo!JDV)~8>hW;G_hB!c7oZt9K>vZbbzEdPX@oz z${X*BdfZeh6B;qzrA+Htab-p5yQz~V#bpP3HrYmFzt{JTP_k8%DT(;I*$MpF;I>zX zy^U=0MH=4JpOBx@6hgLg4gS!4umb2S>%&Jq2S>@MuX9T`2_N#DDOF=Qgi15I=wVhj zrSI9vPr^b`mJ!uVSPPtrCj(gnt>yIVn4^z%uL{wqt9`eUgus@Bqy7}>`#uDv5aGs1 zLfJPq@I}#qlbiw1GQ0ZLCn%1EP3X^0IfJK!6 zJ)0b#JVwD(%S=IS$?@pSu-MqFI`=hIEq*+3+4!LTma4~}eZ&}#C?gk($Igz)5bP46 zS}14hYwKx+4(1`X)yF{Ha)d6*D`W#N(xATpW*BWBYb$>FN#e8;6|!zhoiZM=r}V5} zA*;NHRtW5zzAaILX(Zulf&0$mH;9`7tA^Dj^9WoAg%76I#*<W9QFDN6YpM9m=^XAyX-h*P3$CY9TNSn&(q?PLSHUUhK9xE|Ui(%nx{Rak)B zB-TI8vsJaxb_bkv#4x;6M!8RoePmM<@x!W93;lq@1FhtJ-uB#tA>9{^+k77D+Z-~4 z=_}t_tU#{m=?6HVWns}**TGazf+uKWzXT+AYOm3dlrzfH+JIpNkh3o(2_?9YCh0$r zhj0C<*)Q?oA~jyK9q_BiVuoHk1fiw*8|wxg2$cM~CCG(lfSAQtGdBQjRQVGj62h@;UNtp=B*nI!Ko+b0+0nR4 zQVie?@+cf(9e+o6n|K5_J!$){xhse~MBAZxzwCfiYUa6st34pBIx z5?wX~uGR@&d(EG}Gca}$O7SJ*VY&>G{)Mox9RoKaaXWMETQiAx)lJXqd!$G|7+02vH9 zSsjPV*fqzPCpbq-3F3n8mL!d@?D7;p1&wWsXY1IjdeZCsoBl6&Oz^vqce;!~_eI0w z+7NJS#P$X6YNZ;r6{jXHCg$VEt**VRG|{rwllZSE8W}ysJy_9#JW~fRekF1Fs zX#f)e-i}(fg)&+F&DN7_qwdO}4*mHQV7W4@zB^GNORnM+`Jdi1s>pIEAq;!Y#v-%3 zFupTA>U>DX^S$*UT9q3UTO8w*ZWMLk5OgSD_3b#|SIG5=pg`&$KS+EiY|_t2%y~O^ ztjZ89E2;US+seK6&mkNDj4fzJveUyeDJ{WetJl&O2%qiUQpZl19Lr#3UluDnmuwL0 z1W8cGs)^edlp#P3BrrM4lDk;dxTQKu=^Rb|8H9N%sk5#Ye+YG#vZ0D$sv0ltHG-Uo zUlg6lY$&wt3TRg@a>|6E7@=1`9J|oGbX|EYX%eb2~ zZWZhyio328SrfO2s5=*&*ghe6IHk+~|59qDAV)#;C%5bkhlbk$GZ!#!3)|rKj3vwC zl=8GU-JbrUO6T$Vix-joS-m&P&qUC&t_%7grf6)iE;J1!@hhVaU_4szR?_AKSCq_fB!Otk{64 z3II$v!WTu>h#w3c(QhlwtakDS&Fi0>7o5*PHyaRd@n;WCowH~1Jpyrze%j&H(Y*eG ztu&cZ&XD4(&7d=A4UKbyflG6${GNo}u*^sQj4qz@+O?<;HJ$a9ZXyo6aXFQD-p~5s_ahrrmn9$C0KgPS z83>s3CIoqd7u!Q`1opius$89pd@FIS?tOugPPnQ*aEZE!If9&t!;n{vFN;do(Nz6o zGcHk75e=b34(zU9gjn#-IZqqFv|2mumiW?~JEsD@m3E0J#w zw1y)dHXzU-r;y?jwa&R>r$kVBzPZuHQAU2A0Qtk6NImKHoML)h_zAv=`c9mkrv*JJ zo#LF|)XhJ{qx6YH*>AnT`muGrzbz#j3cH`f-%3xi8UmSKpdy3fa>*amO@GXJukDDV*0}Ggco> z6#Wn<6om0mec+1cr;IU?(;rYt!q`!TFFGX$kZu*16za;A=r8b*PPI!C`?`gXSwp&vvede zGu~F!uTf#~#`^!tWu^#b9~M$3WYSM=o0b|bBu>&9?A%;O79QYZevA4l$+YSt7hgQw zy8CVhHPi1`dlcFMwsR8eL&p6wc#VOIx+tA_X zK#zcZ7pRUbj4UXgKfjNh5(Kw{WV_t#85#vW$Qh;ukqrHGLSbdAu{ninf%{{stqT%a<2uGQKmJ5`J$aFL~a0OY@wXy6+R)uFLt?3SS?mBu3 zf=iVYdz8WLfqdkQ3y}9ppzH+9ZyH7-Z(62sdU33UJV*7OnWal zJAHIOju1qwEN#Jwmf^**Pc$;`lLnb=s1C6E#69bpa(2QC7w?!Y1O`(LaAb=pxcaVl z0%nC#ew)IG7z98f2Xibp)9;er=6@$7DaHFR5|`dvN%9Ty{)$PawmXCR=J!1*gN`t-OuR6-06LMBgsOM86PWuNr|aw52RS;u7^fp-byuO?G39ky_LFIfhxYtCriuEag z^z<#4x7JIj}N#;Cl$ptEl#t^A04qMKqu&gd`R5 z{Wc_{_k{1M+UdfF84r$_YWNS|fg8qoXTOwPp`-6?G>e$9DI!@eehCocrHsthOLo9< zvs)Gj*X=w_7ANpFyjd0n&9 zaB{ltHdJGN|0ZK|`H4c&0C0q_chc9|gt}gUh`k~cm9 z)&=C2r~giic=q7{$022}6Rq|}8&%{tP<2hXD+b8!*#nbY zXi^<^|6W}1yML$06nC9O3Mg8{A=>^~MWs>q*vua~BHr2z$(u(}2BwwVR^W)*h3Oxw zfuVx5C^J7~hEHCLc4f-oGPj7FWXjWj+`qca;QP-}Qn0O6C4jvL=FT09EjXYvJr>Ui zI|5}bczZ|mGTFS@dro+2 zR_>tS!BsrWIow^^skb3WM&(%7bO?qvR2rWXi|IzEnF6`_Q?$~R*XCbhTf5#~(i}etmL|qkj~OgEG_PvuXGtzN9V z)xX-i3Ux;wxbSm_mmClTIFZdC;8lKyz^m=kKj%l3ax>l2aSXjJC1dg=;;ZF8Tb#%b z_aE|MK4E!$ZSzvvjl-YJk*W%#E#H)!vpjPMw;rxfhg1?~`4lY&C4RBjKuegyTDH>QdNFR0V>i3*Z&$pVm3uD-8me5mYXP#9H;_uE!v0KG1I74`sCjFmZK@1c8L5_pP+=fx|q8F|_ z>dNfJ`leAIR_pNez4D<)H_&#-$k~Ckcn5pi3)ga{_~9+fJkREEB_6S*;=qF?*{vU!rw$*D7^W==+ zBaF@{nWWX@dC~8o2@u;YeEocqW?i<)2*lTx=hTh;Gz>2Eo-J!Vinnq7{AlRf;tDxK z+CpY{`bP-_5JsH48}7If%6ZQkC9a+=!k~PZ%b(2n={X!FR7MgDG(-y8*Vq~#Iq|Q) z&*>1>^C&PS;)zw@i_`-pfGex-GrN+=Q0RoXigaL$diioT(cFwAIYTV&;?li1HZ|H6 zC;qi{!=C9QiA-`*4v(~LntSha6Yy*)z5Z5G%gMa^nEfVQ72hvjr=jog>F3l*pGD{0 zISYB8VeAqILR%|rW3IhTE0`j}-qocyrA~y`TJejV7n1tj*CxSbp2nm$96w$TWsHCc zJv71_It*G>s~h5A5~5h9ipcq?u_euR=3c2m(jx_{nK4#&OPmP22NKGqwiDG2Alh@e z+6FSEqFbtqS2){|!>eU`m%-~+vEQmvx|rgPC6w6x-`=_r&4Z4!!KIQ_gCv&r`J38+ z5SZ!~Kj)_NJ_k}ari92olJhHo_jSOtoY^i+$!ur(aa@3r>IJ=l!Sf9dV$Gq)F=uj^$KVg z-zIaq3#pYG!N`o0e=}E8GH5=y(-S~g1?mUi~XNwbA0LvFd8&jjUM_nkyKQx_$Yn4O#1JB z>pD@^35n*M6-b%I@Ou?2viEhi637t3_cCm6%VZf$IF9P$6*G_`gt7pSO&z)B6aXu( zPVTRuI#kv(`$RvEDX#riggVia&il*Bn#}%GRGG&-z#{~DT0lAS>MMERCUS%5K``+S z1|6G*ObF2L$i9{ih(TBgBBVhnwo(2lf?pxJ2Ta_R4`Qn#@umrH`yMLZb4!2fQ?aRs zwO~%P!IvHaSd<>zxBuRobEc>oPBw`Vx58wsnLbKVCf=} z&h)wy>Mr9J_te}HMY++Kb&O}J5K`{j=DWD&FBiUKFjMb8Fgu3Z;BrOR?<97wXVJ~2 zjnEE`Gcgr;Dk|K=@+utRnfi!ueAYBTkN*x(beFs4l^6ZPO@>=)t&f$w(m*(rv2h{y zIx=pdmw`iaw}2T{n>81uB9^li=~>?10n|!KrGZU!a#-XWU1KET4CnPUP|05u;TI1y zWVwR#^dQU@RvbU*@J!coz%gb4)L<9K;11`ORA_VtIg4~Pbyykna7f(GUq6Iw>!;BW zcwMJcdxtyoNv6nqxuz=IG1)a;IQ(?g+Gmm)T?TW-ZM?nt%sZ_L#Y=9%MKLzWxBl2t5WPcb%t@7Zbz|glmA6q7*M*!w)}Y{h>PEJ6A5}E*epPf4;SE2~Di* z_C+@lzpYvjXCNYU_pp3`EN+Q?1IT0r^N{v|sZ@UVG58LjL0d|QfVdq7#Uj82sV2iM zs^`sLfH&)eAG;hHZ~*${lxPJF@d$0-l@q&{5-{nxuwH(pcHEWaLpGj&FRKGXq9Bg4 zjwb4@_VBpn=ya9lWqD2x5I&p*-iBVidR=>B1QU&<2ia8-Q?%t}Fg()wApz;VouYBN zO=IHE4mnJNLZRRWf$8WsR2IdRJkqqklm$$8xn-55dF0_xI%LnSqw-@uq)r!j9XUaU z5rSkKY(&kS+xh7T>XG8Nmjr{>iW-V3@5Qb3wp?Y-gk+dBs%lIHp@kjhQ;O4@EZ|WN zo~==V=Q25%Jb~4~Y~!?l2xID(u+>!VLq{T&#zRiMF7*?U1CKLG{j-AlHMb4IT)DHa z5^McYfYVwFp#>%L&3$$!)0e@Lm9=(DR_ztdv9~KKgsJVg?n!e4aXp%pC^!es!vDX-b&c zH)Yl)J?%2i$K#!YA z8k_0Pe({|Y*;etPP(Eo2mviVxA>d4u0yX-T&in)tQgc12 zy|Of?j(ygfuk_5(ASnm(Q-jSd<;q1frF}ur8JhZ<$#uK0h zPM1>Dl+bozjr+cZ^+TQ*$`ui)QO>j* zOz>~^J1Y1pbn7QRxDi_o{#c+#Z}81Nq!PFX4q_M)Z5r$W$nQCLu99J8UbPJj3egOC z&~(S^h7i5iMMi1@{d+0|uRJ-o9xm(x8Et!%du`>xY1-v*4}_@n$4(?bj6#H*CLPAdI#Oiqcy3CY2G`@ zfL7oDwvs_$=kAZ+8Vbe zB3mkZ@ZWro{`BJC#Jl9plfVQt4sDOrvXKrsN;QgWrW+&$dgl-&N=Cs~^qkiKZf`#M zAwGjet*(spxgM>KF+&ygvi7yd~$Y&3qE9xni(Ay*ih(I22Gnxxe@ilTX!k4!#Y*|^-HcT^K zhl|wTRZqPJ9*K*Zrtp*){-I7f-+2qyjI&m4tRe5JqjI6SvgiEmEWWsE%3iKEUE{2u z#jzGB^dx@4$et*R3toMq_25h=XF_HzACrtQCw0OXs&hLt<>87XUkzLM?cJ%HO(&T5 z$3~>}X%LRVHQzhjlVvEFeDYgCcg*f{@}R(ckemeaXXdc#0%YR0@ENvEcy&}2=XrEi zNRU%nBOJrV5`AaI5?q3812~UXA%D?*$zjWnljnsMil&tvo4$(i>-BipIB#;0e2TY0 zZ@`tb(N|zxtGf1U;&MmS1bSLhjLY^P&JQOv|L0J&&tE^{XUW%{y3<&)T~q=<(wvke zY;yF$CEzDlfqykL$)4<_)ZwM`S3y=wKQ*~?b}L!~x&AYtK2`pr@g*ha+B-mPyLot6s&UDL+`Mqey6UL z+s1%6%eJvZ&WS=b5X(E=Nl3zcO7Tv?jBBSFYC=F=bTzY-3=>-fMhSj+N2JTh#v=h8 zfTH${!k1A2I4Q!F5G8|Zt-vutVf5u`NpU^Er4BwQ{%Hl2a1xjc8WMZzf<$Jeo2|eu zv;Q*COVg4u;S7LC$`i7XM&+BjdzN)H~@n0-`^3nmZTaVI6`eJVK17ED6Ft1$NOrn8-Z> z#@E>`r-BkUOTac!rHyV-C(7K11VrEk+_I8mF{}-3~exFze&Lzq@cv6>rT!UwRT%l47!V3;2^eQ0>m2vc3$2 zQ(-MR$-htZTgkAHZBBL=bZiix*4@ye&uHy1=%nI^*D!+RJGMM_P>^h5bbdKwt7~x` zo)%{lEjJD{-~IqvC*%6;P*AT>&|TXcl5Eay6WzJYrf1XK0^xz*kB?E2iZJSXt~E+0 z@CKT_*+vma2LFg#$MEU9TNU&H{VHpajGS@EW+)3|@+>-!iKH#*tTZ!7kY*;MZj(~V zu&|2eK2I;6RuFJx>0KlKID>GSWZ2w6ZKo1P$_+vF5QB;IQuI2l7iQWSzIwz5H4B%!4U9Q%{_lk~r)`(ioU>VT{ki=)%wOjZ<=$Z`pD6U`w z?@sl!(C7KR#(<6rPA$EVzGGLr6GFs)B`oTHK}O+ZgxI1!9zN=#Y}uC$rah-S^qW0# zC&7GyUcuGg(U5tXBUTwC$P!s;0k-nC_(d%j@ssY)mCT4;(1a>Qo5~{19_7&aNC>sNDONPO0l)ePCk(o-ifZ02e`K+TxZbkw zx5Pp4IMqljlhw!YftfGNrFk(9Fi4CLD8vc_pIm?SjFA<)4j$3T1&udj%^Mc8%IDk$ zjIJ4`(J%miD*DiQ$NpXgT?LJR$K1@%?W+E-ldnbk@LDH%_aU6B&eV~$Lo*R){F%St zMVCi6Fye6h1yI>73%>Xt#M?+ID@@80WrSUVb3Nw@%Q&USDYi9jj#l(*CVG1f z0E&t}qc$y3i)|F~;XNch&S7NXc}N@jG%facfuv`Zu&D=W2-9m2SvPkDrD6A=?|y?e z5B_<7Jt}%(LS^Q(+0{dY#DWPEwe-v-_D-7$V~3Xw2RE*kdTtlbe%hkkL;nIiZLL{w zwGBJUQ~OA&&-zu91OMukjsy8@=42zA4|KxGYn070ehhZ+#c8PMn=V3VHHfL? zhcQH8v>jRx{xwd#mX$*C)AtpUldobkk!CZur>c)Dh{CulR9zGxWQcv*L`qGEoQoIL!;773HgwW!#(B zq7pFJh{Ol)C~4F8@5^*L0V#dr0kP<|jb9`)*J|0p^;Br23B=;|)6KCHffaYfLzd`Y zW09!&rM@@Z2W(Z~k=WZzJ*c>~5`K(?5JVDO%0FM8ibBEMn<Di|b#?}rfc2p|zO3m+Pbr+L^)SjjFo8#8eS0kuZJ_c*`w;6J5X)WR&_EUh zwWNzxuhct#?Kf;WG}b$X?#XlK?eRAW!@^nz_{e+(dkXH{?9l#`2K3Jcx|c6R z!E;-qp*v6(5wq_2ba3=fziyzC0kyc}U7pfmRtxd!{>G!E*N6lZkp(xM;yUUAf#0Z5 zxdFt$qM@?fhn?l=m|t$Yg`9}B5pg=nK8d11m12)I0y=FgAeE)W!Q^zNv%FEdcbY64 zvWP;Nm&LgQ>+Tguj$4>qIravY&VHfbk+>W%dr%RV_27}Fq$cnE@#5;Ywl*S;9EN(1 z?(d7L@?v^|;$w89@Xyd@__bR3ek0xxRz%j38N-GTpv*m%G2357NlPL-?i5_r#UyP+ zX#uz4;A5N1k`-6a7fw(t3%g^pT3gi69p(NKB39ku3tQ<{{_ZyK;xdUY_-1=7vRd*yVncy?vRNRAx2(}_oX zZ7nP#>q33#I}4@wn$XR|c5Fc@1wEK7c8+!(A-|j;FHRd}a=dG~C)*2i{TujxV`pQ$ z9qqWlEvqY-v^3l-yliAX+D)4Bgn1u$9}1DibkEvA5s&?cACvNo!FGIM`#^U6Qys25sBK&*I&6_OS_?@$huaW> z`83nhcqQM!qZ3Bk{7K3c@7wgOZ8dFT zC@p7Gm(toxWWTR%F>UzgQ}R2Z#8J)_VA_9`A6~irCkLwhOUq>O6})<_sZATQZat5T zl2bct(?rtt-T15oUfp&r+5QLmb*Ls62RrQU?-?w@^IOwf9qmYRydl> z0dz4d5j`)`>N(23JNobQbXTH0B7?i>@28OaVgv#K`?-5U7ajfL)zdYqwX6B^sGTu2 z#@IVi*2G%QtVKnm4}=N1a|&)n_5^xbILk+m9?gnSdOV@I#l8bL8=J!c4awcAJY|8< z_5qepg0RDD5PtT)4|Mm8D~%2=1POTIbiENJ_cB+0i@s^qRNquJTp1;QBgg7N20mZ= z(F`}MBGv*PV2?c&)^C>bz>+F~KNdG{d&pm2@WKL6hr(yn@SQyrNmLolD8y&v_`-ic z+dI)cvdF{N`E*?XnD61m?q${#;5R_9H~Y^>h@ZH44&p~rVAI=9KDl>cG$nl%FX9C-;du%0w@ z)iA;r^vgfAem#x|hLV--Ocq*i{ne&RSW1!H`H-BwouEwGK@w`-&n z<7^j}_&XGe{aiai(vpxxsa_Lx!FlXDmP#w&qRYNU`5t{oDP#oxFQlpzLO{&J zp}H(nvwI4iCCr(C&oT33Jpc%_E`S(R3Qi+?0Z@Io_56$zSW$VV7RwS@X#LVJwA0s& zG$jG1?pXAuLYn!qis1^V6XP!_xHcmHq17JbL@GCK&5ur2PuRQj^2K7MO~TiP z=K~`}m8>{lA}1@i?=L|}-2lSPein24dGJGt7lP-#FM<({w%ir`=hTJ*nhGyf{>qez2-?k#3Ycx?u;8qGTOE6d3&Q{e2DkX7 zV7E5WCv500|He-QBxoZ6SFsGrWj=A^DKSi;nJmY|QfPkQcQk@|*tO>zVyfX2kpH_9 zyvX@Ka8Fyn+va@2s?_md3K%4*4$7=Hb?abLoSkvK?G+VM{)jaT#K=w4Y|cXOHrL-n z?As>S!LwifH2%oQbBLR%8zPy-!b8NiN_SES zQHV<4D`uUpLp0x^P;n9x!iMyJ@@@ApiwzsRrQdW;9|3A^!z4BjPRO@Nz+4Rk+`Ci zp3UfCHQHBD`HK!%WszD*pQ&DU5=K+dlXY0J~1v;e}651S_Ex_*r zOuoy=`Br4VGCEi`LDs+?20@PfX?CRy=V5{1p#OxG*y`QQJljZEmjxP=xiYNB-jOA= zlZGAkXe?qZtoDs?7IaC(AE<*JKDGT^Q%SqPtrUjXcfz5OdUI=|igYw&Kz(@yI*;3y zW&=m@)AtQ3&Gr=q8Mcd6AAs`+j;`&>@3!^dI07Do9w(U`P(>ZwSS`k|`9aLGBP3cm zPtJz6eX4Yk3Qvg;x91cghZvI5qT;Y0xWL!e4s%wmR(k8n_M2Eg+(GON>6=eXZn30u z@<3-4lZq550I@4gPOp?)S{z|yEcaPs)P=?A`$LP@dupx@D{)eA&8|@jAN#G@{d$E3+pN(6~r`gZ~bPip3)rXCFnE?$|zjF#bi&k?P$E-6n@O*s%Kc6)GR_qvEI|Y4AiOGs(lLNkGr1(tm%HR_Kdui5;)EVz0ITnjguw zH2>J9CIAhBkSS^E90!{sa9LWxLxRdhwYzrEnpel=dK#`cE z(H(l+dPOM-g8WL)KFT`)eVJnPl$Xe!rpibB{u5!qyER1>VP`iC);54$p2qC3l|Omg zb6ObXG>Xm?(x6Nko~ZqySR$mPK0}j~REvPr4J_!&)jf+_+z8&CGnzi#q0_crgiY-V z25TV^xnv$2s9o#)$1MCxoGJ9MHplD2;pO?d-AxoHZCsXNf52_X!pRoIGa*SvM%rHZ zVLk1A#zG*Pf{jA@!$|Y$lNyfcsk@)~+k0uJ9WrLNEM8W|ti(R4^6Vj+tV(j0JQ_{H zQ{t!LW=fs`qmlE1ymTxlTrm*A1CWNLJ~2_i)O9B}!lG!9I~RwbO|WNF(0|}ILq>T> zkHF=2m1~neKSE%DZP6ZYRK183G&YWgE6E>bnRY#jLoi+5 znORHIV*!xwHs>iw&`T=f^ri_(ow83MU`xVr01b)bo(DrUG9+5;+rga#LL0V-$D|fW zpv@PdTj$~-uzL%O@ApZiMy)VVIr8X6W?T#yE`%6EVhR4nKGw&RuwH6E+}nuNlB{p} zfgy1cOwC80uGVpdUIWr8f|roMouEu;Lbbd+MRuSN8sI1Umy3vD6q7Eb2o&D8M^3-M zAgB;y?h1p>)3DZ|X`*PzDfyfM4i0K4kt@^8EVf3VzL^aQe-)2piuRP}r}il3d*Md>;GM1P*#`>`-&TO@001+4kiCi`Xl1WUFWQt@nM~lTSxU7pdV|w;1a$JngP`0i&7hf)0j_cSIX897#ik}w(UgljxR;}OxZKwCCGlU;qG|nG$#0nH= z&ZSPb;P4{=w=D+wvX7mk@Q1>Af+6ZHQ-H=aEeWS{ZXgoPdna~B_Z$s|*4`(qEEOgB z-gAb8*?PqY{kH*u;~HJWQngArY~W9+NUJm` z9Pj9H`TljHZj5S{EFB{n*s39BRO_wpcO%z zlvJR}%cgeJsDZjw8e)_3o~znh+@KBADr`O}wGquSQD!f(_JPumt~(C=qM62CyZdfz zVTezu>XZ~~DQcil%o8!-Yw%3XKnJQo&l#(J&^J9#BsvP@s2I9s_Snm5GTBD>;;~qO zj^1-z-##xBUI-^&_cO`lB|Yj|=)lS!|CrLvYZzLQ5Ohd5 zLZ%&XjiXl*gUf*%@-v84m`OD9KBU?4_@Ql2!W&Dr|lT!+AD% zC#_Q+OqWuV1xyM2Y$b%VjM`0;pf9M|89gi=dBhM^=tOn z1b|iv;iZ9nJHko;FQ@q&8NC(sx0(yB!$I$BEEJ#U#HpJL+f)2zZ3dCCS2DDsY{wOZ z0$@*z0pI|v1iB~yI#FMcX2KVVSd$4e*YuKaF12?UP&@@k5gQD{kI`936<(19!2a%3 z_ceJ!%_uA-phrH%;Y<&)9d;1q(`ha@e%cYk3E(?77~2!yCk(eOeK<+ zWf~ktxkXfHX!{`#P2@~Cqx^bI$=aHx8@(z6H-Kdc`H7aYU`51|qIybDtd#i^E^f97 z7JMlJs6Dr36Xft|qCU9YYVPiCks(?D%l48f2MQA(`wN`2oq3Q#`&*psA7ve#?qdEkvW29re ztRpN*V$h?wP~!q#*w+;M6gM9FXo7J1uW2~eQMgx=C=e!Mn*IjPsnJ+%k(vC5F0 zFy=*UxE^~Ek#$=-=&YN_8??3=+mVci&yA_U4_6`;&5o7bve7jkXNA9`r$9*rk)!Aq zxj?nxP3rxcz`ieY$-5*l^y0^_+#$O!o^c#Mz6J0Q=>#lk-m^0O+g?j#j%;2|jwDo>OVV z9A+hic|@xl(g?2AF21-ngYKKt?Dztn$fn|bG`brY-wMX!yOwOJ3qO5CxZyO-6fVH>?8lW5%BFx2i z_}$m};jc}4kJ}i4sk|4mf+J>P{;YC?p>2X#e5CaSTiGI&bs1Bm$99#{KtO)p>WIr} zc@uTE>Kbmh5L4-*XpBC~VDkam!#6qyAbaQ*8}HzH0sZ9nZ_2;Ktduz+GWvKERr+KA z9F>CvA3sAqqolV%xVc;0aYLkeU)0s0pYjh3>>Ox(Ka_8C@)J-B{m20q%#3rWk76xx&hRaPpTT~Q zOlQD*kKBsm9Z^Z?kL*x$-^#y10+ydISTx!>5JTUAIKXce8@yK$<5Hq#8uaQAc3BL3znJt42+KIV)TcCnB(uSJV@5?A4WP{; zJ1rX&fC}#xL?9VIey;!Gv6LO3%$sgDzE0X|$)Z1TI-FmiG;2Pu zp0d)3w6Ftl`-$Tgaa(c4huC8`>7o#Nz5@OED;2~I;^{WkAGj3E5k|xY#rOrnrM=;V z`|CFS{ra=jP0gFwM`amCql8dv3dT_lazeD2SIs@vZ6FXTwFZtIQT;YBTC{#V31+bg z)2j0MLxZBst=iEn15AN8Jv zUFr4-vM1Nb4RdC&UJgtu$D`sWhTVF8fj!1%_45+4->OKIL;C z$LIM2x<@>cRiiK?T4__DGvL7OJb_@BgX%aZ-7O$NF`ZzDRSCN!X8y(w#qvX(Ij zZB6XsN*n8C+}!2fJ=xHSUf2?8g5-71u@B;IY+0lcNjMfciEQW==`7s!e(##{PvhFFKNhx@Lk^@?5iS zngNkI82Yz`27^&&mOFmDAtThejROd zfNND|vxdMY+Ck@BEdoOr$<-4ZeiKB$ugDf(Cy&vKOeH!}-jScJTewSNC5+vRb6xTS z$}9kg?lRWaTdu71)VmSfPPZn&h%})5%vStiG+l^F)-$!~?)jsO{TC WD8#FqvhX`Z&SSPB{s(Jd?&Q?{#?D3n literal 0 HcmV?d00001 diff --git a/MikroMaster/20260602/20260602182002-Config.rsc b/MikroMaster/20260602/20260602182002-Config.rsc new file mode 100644 index 0000000..7352854 --- /dev/null +++ b/MikroMaster/20260602/20260602182002-Config.rsc @@ -0,0 +1,3468 @@ +# 2026-06-02 18:20:02 by RouterOS 7.23 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.1 +/ip cloud +set ddns-enabled=yes +/ip cloud advanced +set use-local-address=yes +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + dhcp-options=hostname interface="ether1 - Unet" name=client1 \ + use-broadcast=never use-peer-dns=no use-peer-ntp=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" disabled=yes name=dns.comss.one \ + type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + disabled=yes dst-address-list=Trusted-NTP dst-port=123 \ + out-interface-list=WAN protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" routing-mark=!To-VPN src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set ip-version=ipv4 mode=http +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" name="Cuad9-DOH IPv4" test-script="" type=\ + simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260602/20260602182002-Diff-Config.rsc b/MikroMaster/history/20260602/20260602182002-Diff-Config.rsc new file mode 100644 index 0000000..db1525a --- /dev/null +++ b/MikroMaster/history/20260602/20260602182002-Diff-Config.rsc @@ -0,0 +1,28 @@ +2518c2518 +< doh-max-server-connections=20 servers=8.8.8.8 verify-doh-cert=yes +--- +> doh-max-server-connections=20 servers=8.8.8.8,1.1.1.1 verify-doh-cert=yes +2537c2537 +< add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ +--- +> add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ +2539c2539 +< add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ +--- +> add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ +2541,2545c2541,2542 +< add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ +< dns.quad9.net type=A +< add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ +< dns.quad9.net type=A +< add address=195.133.25.16 comment="DNS Comss" disabled=yes name=dns.comss.one \ +--- +> add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +> add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ +2546a2544 +> add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +2553c2551,2552 +< add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +--- +> add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ +> A -- 2.52.0