From a5dc32c5f03ed97632dcc88d4bb62c11b7d72fc4 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 15:20:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 15:20:40. --- .../20260515/20260515152001-Binary.backup | Bin 0 -> 237585 bytes .../20260515/20260515152001-Config.rsc | 3363 +++++++++++++++++ .../20260515/20260515152001-Diff-Config.rsc | 139 + 3 files changed, 3502 insertions(+) create mode 100644 MikroMaster/20260515/20260515152001-Binary.backup create mode 100644 MikroMaster/20260515/20260515152001-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515152001-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515152001-Binary.backup b/MikroMaster/20260515/20260515152001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1d01ead87762abb478f07ab4b2d2ff9b941a1d03 GIT binary patch literal 237585 zcmV+aKLEh*sF8CKpaTF}JL(@eQPP!Ea$R_S!Jz&C000O80004Z`SAPzLlIa}IeAv2 zx!nM+-VN@Tl3KH-`osK{=omrw)8VimPmPf<%`zpN9Z#I4cqkT$+L`3muSsoG;BLR( z1wp2+kxlBv7oRZ+=VY<3`pLqzB>0~x4vdszFUxD5=^R{W5oKX)K%poyR_!vBRZI+` zAAMBfxW@_E5Y@yN=+R?yu(JNZr|3h!0rhBaI*1*(1+Pi)(c)Cfyd_8@?&-F7sis+a zX5yFlaV0I$UZ(N=#7mxsvO&Fz&|Dm5`d}bSnU#ZA+-*B9nOF<(_-`%n$DxOQvMQCS ztL~yZ?9La}dZq=zQF9cItzR%VTwvx)GarEE2J z@r(D4v=Gx+Fw|!8y%_;R$iNy-7X$(YqaA+`U#14&a_R?n&Uz?5zca3)QX;04A@cA< ztmYRm8oEyBeDfy8KCbG1h;d1b@Ow@ zePEwb#IIZw>&kdTVO(R{?slBD!F+Gx4;c27o`D57AgoXkO0&7jSe42r%}WVyLy~hq zcko;&JRF%u9i)|584tQZ&Gm69XC0aM_4Sx5@dJdea0Mf(T9`D0B~p&9&dMM@OsAQY z{eHn1_Jy^sm-+jna9MIuY2HP-O_any&FuBOvKM_ka4#*Qk-?GH%tv-Xq9SCQ-qLK^ zt9H?#6|F|J59%Y0d&vu#1t9CzF%#s-<=|6+s}exIvaJY17>zv*mfNhK%lPenImE`m z*q)_qPLSP4NAg*6<|QIr2#>J8=tQ|BwX5&yDy=5~hnUaB19OF}Fb`9uYW#-BQLUG68>Cm1KeEPSWJB3D8qFLCRB%>SaA@Gi%x}k=VXO={GpdH)D|v_H^Z)6_5fR zdK}t>#3o&CfSVV&+OhhVh?5y+w*{C(o4Ph%C|F_<$i1Lx!p-pY)y9~7YhSL129Gq@ zxEjm*S{Gl8kDxo~pstRwKqc|>8ktA3t8$z@VAC*;6&d3{}1->!-W4WNf*DyUw z!m2WAyK!UQCMO{9$H{x;9N2Y7>lUfs&I1CCrY{4qv#=e4HSsDIzE^)jduecYTMB;Y zp;<&x$ahGGbfLwpk->fZQH*jX{_e>uSmpSfrDq+m$P2=1TZK$Stp>l2nsyQV8IhPu zegC(PvEl)ebpmVx6gwN#G{?$lcL&(nwMPE?i7k7e-a@+|Osozgm_j9qAA(Tv6n-VW zlQsWomNadj10w@ifk5|@0(@7}m=#LLIl-$sw_>Xi$3I1>)+i&{Ti@ehI2tP-Yk`Hl zMcp0fjJ1;+P-ik(dLPVN-nk&Sy)N(*07+Lex=2$VTiNseIMaGCi1FCgN$a;`H5+erF_rIURa?J zg9NUFhP5ny=E@VO%kJZyjEGWnOj(77xVZiKi*#Wy4=74`$4xPEAe6B$xJx%Z6WO>!RYh4-X%<@sFX8OKoUKPhYtVYzkkBNrU zbHu}U*Kp$%!%cF$kgou(RR{-x0r1#}sr9ba6CVv__*At&_kf*Z zo4QIH4fS3elNOydocNEv^Ri3e3@7LJ{tKN!b5~wZk0(4OFFl~R5T9ehL}qJbI@y~Q zwlpE-%iqtNR4=}5-Pz3;y zK57Q&&j%1Q0ZD_1hA0wf@E8yi75ZL1`Ei3m+;kmJ!0fKL8FGmOeZKUIPcw_H7eHHT zbXIA7u}|rT+Z}%}N9{l~%+dMjGKv>0p*jK#tpXkvj-Z_=!vhr*!yO9jhzd!gBr9T7 zuh1oTr@82yROaR;%?l|M>B%qQd^m6|L`jd+uTsro9%o}a=JR;`Xb5>A1fx|I*gk?d`XeG zXuP_;2D%BHhSt=ioj1uSbK3wv3sB<`0VSV0mESfXta|ru&x6|#XOUE}5d=oo9A7$d zgvE&Z4W%l2@gCa=Wmd>C40g*!#Ealy*hXbMuJ9iX;oC z%+0Cv5R&GK&Z3?;BLR1Nz+7Tevq1&bFqI%TVBv8hI2z{+AmR5g==i8=J^el!8K178 zx)0R9_GOyR0XR?+q9+V2%8k+8dt?q^;8ZdiTGO}Xq9lB7#mSSN{&_Z$&1?#@xg7#$ zB=nf#EM`bh~rvUY^e)QP-$)C>=?xYZ?321;Eh4>Gx}hWpUKT>9X@74|mX2(1)pcGs=Q>_%gMuvdg@O$*fEn#wWW~Z}YZh~=I|1&@IF~i@sEdrr zbjt~z(D;_{FNwQ2yR*iay4k}l;+;*(xIn`of3%O{4*h5KAjk?KkSp6gbT8!1&56cD z&!mt?X=|>Dmj7r!GS}GG9^(3+6UUoN0(sMhC`(p5pa(r7P@_!p_WF`g#(N`cwc|?o5?2m zro&KTCCk?sMexZ7n?JKMIZK$Y=}LMUO>xu~z=Rg@FXdFqd1rzvf15l{t;7xllPzHg z>ox||mGw-WhSal^;vtumlNXFv9tcATK|RG?*I?0IFRc77vt%0fF8+=RDWTgqjb`fv z>9`O){Tg^c0s*1GfJ$`al=c-*E@J;tqmKZL2V|edO?p22F_piX%dRhF3Ocy|kuB|H z2;U_CFr+Bry4lCAPl4>xFNQHi*9~CNk})aMakJS`b}rqhrna2nZQ7iq2q^trc7Yeh z7J77ZMFE{$fR`ZU>?~g~$YJFZz+T3G6V)YHg5nl5LiP4=3=8BRmy_=Whx*a zuY!uCAxeIyjs=vr^nY47`s7vy{-_b6ApjE$<8G`K&?;R;~Oca=ko#r)d&RYoAA*?)6Vn zUsfrp?g=dSPm8d01g7v(hUgdIP>s`??H40R|p_MxmrZ%b7lNlFZ0>Sg1 zaxRj~Uon%-okfugXBY*12KET;Bl_g0K~HxN9a;zcfzaAg&&&O6 zK$A8Ju2E$sYU(9Jn>=$*X}5X)6z*{QSJs`7{@fB0`Q&0M9HtcL49nf5%Z^ruNfZ9V z!)j&iB84ZvrJF~zJD%rw1R})_Q0E>!y;j0-8;85X>KeLhGW3wr97^z;gkNNM0-}ed zo7I9qRBFalR{-_sDx@edMPa(`1{Rv}z=Z!it_TXuiYkB+&22m*B9M?w@Pv+SjJv#ldN z7s>~d1D01UV}x%K(BIdaJY=t%JV8NLq7L;-Z6pK05N;<3d_UO^z!Krc>Nfrt&Kv%Q z!a1b~Pz`pT&Q$gW?x{J1N?Q+13D)04%Tr?*C^uX!X%OBSj_=kd1B(o7el!a9j&6Ud z3_K;gw=TJDVTRGH8_=4-Ajw{VcPu=sx=|O|w?hG8^fZeYtCYL8b*r^ilmf)-trw6= z$anJHIN-)tXbGw*VuRItfGYA%7I~dbhdMQ?B?g%u*i2XPe_EzRf?B4!LqR;GdJS(8 z$hZT<++SH9u4ir`gS;W|>*dWSTzt{MuNX4=*|i=c1fkHV(a+R=MYW5MVI^|CdXPmN z0<{}1!+fGmC^p+SqCkkGDgH4E^eK_#x&Vw7=|gUB==rJ7UQfDN;q)0qlANYn*izDP z2!#M`LW?~1&`7`wu(%U2`%~|k43;k9YdVvy){K#>8?KnxRi)vej%06XriE~X2NmxJK${dhFGcEJ zcfG0D`$1>o2fAK|*ulqXZ~V?7x?zlQf}vt&J$oaBgxqu_CgTFNFBBygy_F}G#I)n6 zg)!6Q823G|M=x??+4$x%)v43ZdCK-0EKac1-}~;%=&#uO@s4{G9=rB|GJm#g_976V z8_+P{?s~-{>^^-t4BAnE)6@3oc$=^Q!9+Z~-sdAi@h-}R@t&mZ1_gHqtNmi$v6L5Z zM(l+|{BX6oXc)ibfC0CP@IqU9OQS}c98-f9u#t>@5R6@J9k@jXDh-dyFA8Xf%<>t%Bcv z?R(Aax{mLTVHtgaa(PRrX&5Kv+#(lQ`0)RJIYTtG=v%x~u4GNLWx!0kQ-9q)Mm?Vj z@EX?NGBYuNzbg8_#a5OvYz>mji$qC1#p~Y0k)o)kX@pAg6DF<>Ak|#h;h4dLrrT4{ zes+9qU`mJf4K>NdjaV)?UqyJ5X=4M5OSu7aq0PGUhmf9Gp<9W;4e5gS3gbUJ*}WFK zoo)Sn=d)BeuES}vxGvx1TxQH|Toau{s-Qn4mb<``Q!}QH5SKD@;D`pNXEzl)|3~bI zKgwq%ufZN=v1rS$!eMpqdWAJ^s+{~FxxtBO!r!7vWBq_9Sela;c!#9;XsM)2Ke>A) zU50jjuccbIZYupbGi_&{XKuG!ZPXmi@S zv}jB|v7ynfFD~k@%iwB~9U&At)?UtjxbgzxKQsw4g080<3=?@l6U3ra0m;O7(mLH$ zrM)M6Y43!>#9}B*f0mwJY+DH592KiI#}=!hsMvzgGd2ZJ6UajHEA-Fl7()m(#XD~| zub?29u*>ZJK6^+}N$JiJtX&s;S)BL>jJAv^V`ypVszoot=xt1x%FsP|RDFJT#uX-t zg|)h`>tpi4iQFyYM!gqrefzCEaIcm!HoWpr0oG)W$9vlkc6nBE4-J-D5IwYH&P(Cp zBDgtpW;mWP#==M<%ZLbzm(J|PW)M{YY3fT-IQrb5u}0;7%<;Ak&n{!F zdAlW6FompHt)fO6jxcSE)4B!~Nj@{L42>SZRpJe^Ya{?1{=J$tqAbAcC4d>D4dQ<4 zFvCZSjYAXNe{_5Yt-{Hfj1n_Rnp06(m|!XHX>8y+n}xh`79MQ+k8Yn1&4^8&Z%q;J z8oG@|ye2sz@2UKqCKMA?-Bb9&IN(KX3pJr;n+A{{IF*g43=^0x$AtU(Htpxy2adw$z@vuj?SbKnz|^7Pm|XW^w6pI@fD zM-y}~4)={DENDFZ(t9ha#}T4 z27*_KLU33bI=%)4fM3}8RJHqHgLovRLLq0%H$Fir;7-%8{-FlGW`OqnR#p7g4+Fl zx6zyexDQvizSW`4VY!V;*?#^_@7++;u(Q)E$2YO$f$F+5Jg~kj3x+AnI+$HC_CPpT zY97M3?+|~%2_(EelPF3(yzD;8D3L1xz(u>e>vsPlG6>x<;>Cybs9m^zY}f+ezVerv zf-zsI({^Jo<+H_BRk~U z9=ERb1uFvb7X>;NdzJLR9f$J67tjj+r}J&~WC#x<#ftbAeo#A!L)m}Gg77mF!^p|+ zE_w(HG8Egls33v+FasE{8D5%Pg?>skFcrVNkMt33S{`~Gq(i0d`d~g?yAZf%fu%{X zUZZSIrG-hsiZvVZ4eZy2247mh4p=FHPUZ8=<*JAV1Ri6b)#}xtb&x^{_gQ0f)VE)f z8K#c3X7sVZvp+mt$ z5i%oNkuG!Dn`0_v?gxxOF#LHZIVC^}mMn=DMuPm9mQrN4>L*^;K=qJlyy&k3grb)X z);6noyF__^(yf~kk`e@4RqTRu9YrAWWZ4){&M|G~P z(Cc`lp0&(GgY9OMeE3lU1t;J{h)t=CMG|J9O{o^R2}lky5?cpE#MxGSp9)ATi;Cvc z+Ds@|_b(96W41?2aW9iK2zEIUCio%+^=HXl1r-<*Qv%>CP^IP7NR{Yq9fQTJP6262 zVgw{M)^J5WBv0FH)u(403cRD-ud8Fn=t;GURXDkYPnI)XV*neM?QR~2_ z4e68H1bz~pX&aZphH$3|8PN_R#DsBJt1;-m*UDIx=@(g;!R+GW4JII#;eFb9Pe>Bm z)V5>@8a`aylC8K0M;2N^G5OFKU^FWW zNclpV!3A&3oAi+G&dJ*9A90B;q5{uBc{`Y(t+MPkpCH#WBNkX~->j6Ij8B`6mU}at z>7K)vwWG0vgQ5vASqOym@YFX(rd;fLI#P(Vv<0Bny~y8gVmdocsN zhPp2=Cf5Ts?e{$jt=UGIW#^Aa==bqTxnSPO_7g^ytqNY%u$(|p{0T`rT_1*JN^{^$ zg8cX@C)tRzhOt04tNWRYP;x(I*!}GJ<$Kif3>rEBva)XM9Hg7c#VGv8#io#T*){Rv z$>gsVyF3Gk`MAI}SKk<+@%1LX{=nfIrC& z&r-6S_p2h%UyV{Dv)X^JJ(9s&d1nWNp*;D5Jzi$v`hvuy9)@#kCZ5L_|^}zNzwIve}qx+J%b%n?Gg|f(g zQ?~K$Yn07KBqhAIg`F|AD}A$_4h8fg7j%G9PS))UcKybSXnT+mUD=VzeN!ci5DB$T zmO?qEV}u>-Jiyb9tc4|`D1dc!=_~V!BqrPXGI1C6$gBpyl1h-QQOdTuFg}lX9DTQZ(b{6!yA`1&=gW_%r_23tfE&gMyvD0PbLQhi&_Y6AY-z<9%+CM}(fp;}I zZAbtkvlt93SP>&y!Kyl7T{npA%pgyJ1e9R5i3<{qZn}mT%$vJHNhA}-oepRgax|;6 zc)w&C+#^fWgy$9hd}2ZgY4;Z=!Kkw2+hS8mAIgtx*(??y-+$DoT;Qrkl!SduU#?ES z#NobLSElVrs(~B2I~Htmlvk>07GSpO5z{JLiX#oqsgQJ(n7e53npm&Vk;RG<(); zW#l!=^B(k@OvlJmjT~6VA&mq$zQkZw!4&jx#LY%y1kM-2^*Ke`9MYjcin2cW;>u)3 zxL-{|zIh<9F{OiD101h3WjpDEb)%eZjZWJw?03!rBUVHix>VWDG>;g)qg1MR^>z=o zk8Rm{dJW4MA5D5HEjyP^NySV)V>>7dIcfMri&+;!{MOQjO|@oCs#cZrKCLVX!7%WF z>;52k1{v0 zEw}`sOf|QR33(plH^+WmVWT7N-u^((nJc|IJC`J8c1nY3IMvM(Ki;Epn@xvu+M02W z7N9LO;j$>Hflsnt#rn8g4Bx+`b1@gLkkj(3w#&Lbzrl;V))}5-e$%r$V-~bCCyx`T zal*xvwNJEfxyPHE5Vh*eDm;(C>SW?keo1@Rz zCG}~y5r}B9;crz8D-%y6U8uHMDf*QC!)xcc6`S^ZP5;NsltZ0B*X4UrQO5 zn0hMDxdI{RT)$WR!s^$b7>CfaPiG_D%O54-(Gw;EVn{Q5_6p*Fz@jvNb^1w#>t2gK zuepz=_PCQ-`GYoZsEI@#njJ_ueth23bB}vGweuc;_y(B;g>gSrDEo+o(0vq>4{)NE zUE`fUjV0wel{h@H;(C=DAy%`h__{qKSPON{X0hix7|j6^p@kUD3m`ho*YI$&CQp{) zwbmjyPs5I9vj~8odbov&ZO6(hi3)p9n`IW6woN?6u3H&v`OOSZQKI+2?c1Wgl=L7z zSw8z7Ru^bPw?L{Es=32-;`GHrnYoe$_dCerRK}pRra7QbmZmb{`{`DEY)w2?ah!NF zN|sDDN+5yR!qif|0&*j-OL5$#U|(}M2e|MPTN6&y^nB?c6Cj)cV-A#Rx20M3rv*2^ zeD~uU@4c=pZ<$B;`kOiAmh2KmNvXvWo;|-gl=|dw#p5eX zB$P`3T(E{ehfS1^w!`^bgyR-hEY9jNQ11m*u+u=QL_z0ykMk40)ve_0)l1VsZK z(>LT#O3Ot=`aNF4+Lj(Jsg{~-Q(UqQg0Yp`RxXrue2gm%=@*tS>l-jabUE8Lnku#U z@BIP8Cv0};rI^yHnz&p4Qe5>z9RhH~&6(D(gOLZSTa$EMf}ilYZwKlqS!wJVL<@p) z2iVfRN*fr*`i|Jh^c}@-rK3>6@b%8{7wz|@mj9o-!yi6Or)0bGa8q-IH#2lMtueai zo7SW~8;;J2T$h+(5fqO7uGBk$$KB{)5epLNr2z=CSH}x|m6GPh%Yhr~w7_mTZaP9W z?p!hO4iX>Y);32JT1yWnv4;54#$x?zD@67kNM;+~7DNgXVyHBWk+!|hHN34a^m>=+ z$Fn;(ctIMnZfHOQ>NzM(7^edTsq?3U^FaURNe8u7O`1i^!`{ZlZ@T7v`$}X})+SUR z#4f3s=HNOeQxaWIU>_1w$pI`sw2LzJMQs)3(4Vg*Gdz zM#@?RWJ+cRNCfa%S_JztQA&&G9?`uWrBS=s`9fS0IA-Q6fC5MTORv#%vZE4}`MCzv zU!&mFK*#Lsqj{TOg)ng3?y9}dvjRN@;ohE)s)7m3;j?t>V)?H6%gm0%J`GG-M!=1V z?Km-m2#+m^9eE!rSY85~#9>wB%FBfzNIs}KGpAifJ^}a#s|6{DI3TID<9v+~?2$YU zB=P#fD;gs~G&(y!Nq{{8TJlBt6f-4G!ARro*TaDR)D36~>TA||0%PFy67J7$b*&W7 zb@E7ivJshT!0HtF>(UW=D@ULYlIYQX%EELd1;K4$P06U@OLBRDs(78OeRWPEh0?}x zZ(ihCW&tUFUyOWG>F1iQynvBh*WXz@*H5Dl3I9Q!4;*X5`+M3tS<=Edc~Olk7BSn6 zMr3o`(|sQAP>Dt46uC1^<`pb?xb}%Rd7}GX(BPw_`ohpLZv7h@F$MS?O0#z1$8mOT z7~X#?NWgs6ikz$AzZM8aUKFU>toz23tVXfz(TT--jUa}eiF>wp-*%tgz-!eqVZcO^ zn*}#ElfNMGSp_x`VoZDF+Ramxb=_9S}B986X9SukG&w%E72J#m}Oz!0DqIoP>$KG z2CR_bldmq-q@;B=&m>d8j!Wxu>72_FQ_W0pkRs2 zS$=<%E#kzc6s~}?%k>^iMk-DWoWLc>nmtcpJ*P$N5SA^%e?`;?jsP+$eGJPP#g!^@d#%mB zqbFXAL`!2(I!~8j)6mZ{`c*Y6)!HJP3BlkYZ98QH2;ISC&YmT1dT_&wod&|ERTND z4Tc(J>*?CJLXCTiffWYltdX~CTgg(|mgbOEsj{%#ZZFb6q7P{5MxrUM?c1r5I4XcM z_H_LrPt^@e`NR_|G>>g`@QJ^re3&c09edam4HP_|!@VIWQll>yNkgW>(oQd#?P9{e z8Wl(ln!z?zt4|{637#7tDw9tro*#64C48 zHCbO>O>zd9IrwVdBSg?b&ANWP&TY$Ou8|fw^cHV}CA{#LVa$>_h?Jo|`yAWkw@sV` zZE656qWWP){c=unG7SPtu-y`W9NVT6jf@?|JW7kDN}IbE6HL-yfMFngcWCi}{OaF8 zWD_i02yM9mVBAc-ja%E$yp>VbF27%Asc`Zvy8_u04F5P;hEKmnwzm=iX@jFgGakxz z@Bo*tY69aK_+t(s2j>>kClkYO#o+c6&zMgF7@E_N`M1&v1nVL^Q9t_9xK(T5+Px z=JCBA)sBkP+Nu!4Kp}2>FE|t95F>S&AX_TThcD9VhtT`(;-U&Sm@C+OtoY~HtCP0!p}Zh~4-6T5$DM?# z#1dv8i|!F$T&5bv%Lva>T+a!pmf=i-h+p7RzVSd6}>HgFh&bkyWW@ES}g1vm?VWy({2v4b`0sr zNWiUc0yytaPeayDEOe1AAR3gyZ$&y17ZR9XCNNY~VVX`%f_V3qCA?!0xFKWa(QvIy z&jt^~+U>A>)xN>9{tPOKB#r!tY$H%~nkoqcbwBc=mAzv#e^qizVsWUWVV%qyc5|J{ zyQYLWV*nj7pBw|E%1qz?pC3`nUq*l%nBiX2k%#TH8iI} zH+TdztKGf&%A{QGQxnpRMsms-M3gt;NHPJ}HW~!3w9I*E6^qwz(N8@Tfgpbi6K-MX zY}gk5+58*bU)=pfA|Uxd+bktj=3Qm}r#1P);9eA5WHXfd5nI}UL5v0K5~2Y))b>@l zxa$)DI6r_pA%yP*)>;GMAX}~s@XibCZ3y2)6O9fkE`H}97B2jS0DEJKGvh<>}H3e z9*0A@gzG98DM+yo#Ph;zsw(!4yTxfiGh43>9&2=h7?zpgQ3p7&{bP9slDnNiA&WnA ze5&eIJ?gQnztPTamUaJVGqXuUmw5mqg8~aj;lF0N+20qOV!h9r4Z(Y31l5Qbf^jy8 z$8smy0g|(3Y6idK#t0KuMsZe7cpF6-#T0Fn;UR{wwiTQGsPu}c`x+P=YcUa^qo>c~nfV{2cY zHtyVpI?mC0$9j*k`iHap*Hp)xijM&u*5`Ryn!E$_frklFBv(+GRA&put}H;KIHRS5 z90Ry%PRaBqhh%nu&{2I7cP+j7{dnq}9QFBY20m}$sEtt-Iq8PKBKdzO@EN+~=+#G6 zhiUN%5eeW=-JFL?QgcHHaMifp-r~k>2XqnnGNAmZ##*{5Y5CKnu}zp%%oSw4gvMdY zAf2^Klyd0!{hx($Q5Y|kqpmjLRsox=8jGtB`p7&QO_Cp)KQ~U0Q$pI`TG4NN6LT|a zA3=WqAQcZhV-CnF9@9^e`|vc6&Wwr->0loJuKtrSlPTfAJOh7lsI1pFECJ+($eH;O zm!jbW?!R$7rR+~U5CfZWIvjOC!k_cSD;HWlK->Nk2RS)WygZF@JRK_iH5(d@xwq zRCzYK))^0sVo{POW6)kec`SOQ@meGCR&Xep@6wy*Z_XGAkbz~d?M9i0J?oZ(Ib=aP zCOaucf2OuNm)!jU>lJ8$E>ZUt8Xs!A_;>0|vOUvD@9vY0P`zST$ZZ}MHSEk4v}q41 zcA@YoOK~|P9&q`&PnUd(4}xc)+aXs@awRVgAZdRx$l9P#ePs^5P5gtp{8|Q6Dzs;p z@Is~euEYono@5Lybb=?iHibEB*Ct8BXn5pVTc)gT4=1gv9#}j4VXcLecwIHBVfS1p z3^gD2SQh>e31>3~uKK*agtJ45!~E`?3?+)H9HnWt)X4N|46&5(u*BixDFnfXKy)BsyT{f8I$nU`5sL@60shxjby^P~zo zv!a$kr{f$b>62$+JF>DGKbBwW<`S2h%>eC@r=KaEN!M~HaGk&^6mY@vDs*X6ey&HJh%)6=3F}#~$FxQV$ky$}Xh0T_`WKj0{lNqBuuEHiT+t9@vEn zDioPDF#<v>e?DL?G98sB= zeznt#1A^XKI#*RD)DOs`-mHP$m%wL|pn>D%hL;Ae3A4f)LjK24XYZD05ANN^;|5Xp zOuNTkLsy>kTHH@|!8Yw{XiG2^*hX)~P#PpzB|x{3++zj-?+f??dXgj1+&=?&5*j;bCXJeuE0VR#xGm$1l0WUc~SMOU9I-J7R;i?pAkgNK~UixN!6GDVmG6-ma7 z&EJVb8sfrs$cU84v(~?jIIl|s>4`q>b-@JBV3JKkVh7E*X(=`L>Hv#OFaNB6MEs}( z@fb$f#uvGWBVn11M#RRd-x1*3{L@ekvr4n126A*@vjwhAonTibsAUGgws@0Z2>dg! zn2)i%elsL8{~9O1(SMi!7`(vFrO_MqK1sAXX4^`Kt)$OkzKotp>UA zDbjET+o+bIc!8kLaKV7pi+?HBjG&B#ODiL0ZC}5}woD)fiz%w`1e4xIapFo>B;^+> zoza_Kto<+4*LUjo@BF?*&63OE7T~xL3-mV{EZ~S{pZ88PCj5{M*)=MS2ZIC3cqNu_ zT(zY*l{tpXJ#k}Tg7V9AHLhrJj@W=LBK-9BAJXmDf8LuzOg zs~%aT{;aA6qf>W~JHfxql*)@jY8a;1--Kr`4AZQYu1#AYt+=(IRvINd@sXcD>0_Rw z?&L?2!WvJ@r>HEwCsl!B#U*3uB{q73zD!&yxUxPQdByqg`3kO`@PWjgFD|(^V1sTk z1A^eFGM=N|*O=c%M^c^!ot<% zgG*Pf-VP)*fiX4bJ;fK@Y+{(5VcFnf>-wXD_>wxn6HTR_|8?~|^sf*}uN8F&n_vir zbXr{V(A<06LD-Bbu*zCq*Q=H7KIGu53FU*j`pJE=p5SZV zmQDs*b;A&55!@tYui%u3rcy*lp_4hphPsCAk2>D<^#__A9Ak@C#Eba7W$Aj>V=QJT zC{!mTU{oXkLc=Lvcp&K}bobwhB9w?5mMhom4IgpUd1ciqhsj^1^Xhjh|a zfg7jvq+1C|_FIXg^_(u%6b&8N zgWZ|R5I;G|nJ9_$6_o8W8O`Lh1lu&h)N@w3IyuHE7J&2%D(u@OgTxo7hVns$hWuy6r^P;k%+k-mE$q!!U=0mO#b1@!r&q}3_ z!IK(1s?$DilCQIqWe?Y6INsJI>K~5=Z+k8!?3^}rW52trr~fF0l9;g9*clUWk)m32 zdKdLNZy!&Bd{dJ?L8W6f8-h<8q@ku1Fnl}0Z3kDDdI<6u1qLN54$c)=L25;$u_2pv zL4&U75*u0#Wb7(vg&mv3m$5xwFHgHtj%!hHL2=Nf-a>_zL1T0}ebiH^^->@?1B8K& z>6OeBrr!c1gI@VlMEOhYHL`gqzL-*f+#mxHPokKKYni$H+}m0S-DiXrEpOlFVp3m> zhnogs-}a#qoj4lhVt^~&b}IXP2w<)5Aje}Zam=tYCDvf8BpASfo8jt97yD@H#);tu z!c+o}v*2v*LssjvSTSAn&(|Y6AS;w%1Qa}bQ!5`N6rGGsUnRhfDCk!RJeIzyd*;Qq z8rS;;$VYG5OU}Z*gA(&o)5m_he}-SPS0NIpTZOhT>Rs(hW9YWFD@j`$JFhHgV53rq7o8Az{Mpf}Md@m|+DX#E=lv>pz2P)xZob!= zaLxGh(g_MgDwZO(5@RQW58(Mrq2(Gw>-tdln&ENnS730X!O&`lJ+mf!iGGC3NIj34 zCH4Ro&7Q`yLA{UdM4cC5Kn!*OQ{`jF)fF4d7>9m#39o3DMkWSOfb20ILF|M^o=%-E zyq)a|GlH+BYt2Q9U+$x-D+OG=^|#5dUCYhSF;6al)4(uM-w|RJHZap ze1D)$*heF@b~qi+kw2SU8QXPGR)rZ3+!2)uEo%pO4_>6S2@9faI`?YwZQP2z0_AzM zLyN;IRA%HPYukkgt|k?1WZy;<0)E*zx$PU}k-_sE4r_9P3b952>r`N<=VmG=#rq`B z;rYz_i-7T#|6)|>SPNoucoFKm1R2mk{*6THf&v-P`0{O@zz;d2FKW4D66AWb+g3CC zEcg|$O_!9#FcKZrfD`~5-2PhpeTma>2-)gJjF!yr{;u#!=j+C`hQsLBy9V%DOWhNC zYkr>WK+7pZ>gw^rVNtY8rZyLgpMgx!?i@(aic8okA3-)qL^u(Xp{Vfz?h>yHLt7qX z{l}b)(JGj;#Q3Y|=6d^}Y{wjLqcIu*IwC+VvknhJ)%3ye|zG^7z4{9Oc6Lw1v z{&={#)0z6*zqQYx5R7YaHk*N^4m53sBl5MGJzVSAjyWdfet%|mU^%#fF*n~e zwZP(1s!{teBq5_0l>*mvI*e2dw`J=G=5;xo`?L)3XzrM(9iL~#qTg}3;+T1@Ao~>#!pTHc<8DOLA;xNkssK=%zRav=zH_dv!Ni<&SmpJ|7>GaO-BZ-=cky z%&8f^So&FZe)~pL?)83v5+$vymfl0#TGky9-=>^<-={8CY_{k=?{nP@QsjaqEye1Z z+M%zdHiHJW7t5%exy~eo+e+w0B|lq;0Ms|s9ps!U?sf>j-6hyS>nK1=DE+;yr7J&0I zQ}gRaZ%+eG{p1KbrALvTusmoz*yc>2Z2xQYxG;5rGGfmMwCofOx`8*JGTx+d|D6F# z;i3YBCP@|KshCTgi4eVTf9OZ^e!voYs34Z6n^!jEe7RlMZ3n2uqIs z^Uz0y3dqDpJ8b+@e$)|=Wr}KdZfA;9G^d(@S4(NmsyM3DqB;KaQuyR1DuD?FZj8hLL1ig6 zg6k|!#pz8gXQ>;yquP>Zf{B3`A z3@JH<9PNL}4z(5+(e{S;&8KsJYxYBymwE;|kTr58)`)}XZOR4ul3=&a>6eQ1Pa10( zXfiU=Y_`N2X(i^+->q9|*LerkoT4|xq26v~GD@FH6wwL#Fui*WPE>ADv_@KH^*(aA z!KqhUnyzOK`al5xKLEh{gaw5EG)GPy4cL|N*WuNv(azYvr)M)D;+6?VHuZh=3e+2; z0``c{ra4<-_A%RyW-=gYy{%tu1kp7@L@J_&AwoG6EK@iL?eyGA&b*W7CL07I8^$jG z&@5ReQh4_Bp%AMu7Krw$xYaJ{?fNvcr8#Sv9N`v`PWQJ=)&jim1}f>xjAwK&Zr*15 zDBHoZVeSPMg}C7AYr$6_v`iKe^!|tn> zUdw)1G_e$6Kt0z(hvwT5u_8lE_wI?Shj_F5IcA!NmVaw+Ka7q=YvF{YT6)Xsuk!ml7%n|-7#G@0w5wj*OH%1T*I-0va$mt$!M=U z)xR^jKc34%l+150oH- zt#?q>ZSnv_8!<@Wn>67yb}LdUEFup54M?))NENwBqo>Fbd_~9zFStlCcgJ)hJ{aIl z@$Wff1Zpz*ot_qn@`nBj8+j)ddmP<6cg!;iCk1hOYwXo%m3@T94g!$&z;R)Pc9%I^ zOzDbyA=(brL3r5X&(zy<8eBh6C+Y$`A=}jsnW~#(gP_s?exM%7a-ppgddoV^@T1`+Ealw4N zvGFJ(^2?3uv4a5?z-sK@z?df73vreA9$IWQyC+W8!?j#A0}II4?LV8MXi} z?1f$dqT-|W!Q(j|E59IILC>ZvFc)7X5Jp!X`H)7H;fo^1`c@tAy-7#ssZoCw4!Bh& zl4k68A=o)n*06FvRvQzgGQR=9c%K!W=pjkdM#!;RFb0b7?(vimT9v+_A{{VGouUrT zyA!lKz}@0k`A|N@SNy-=1-+dfD~q~1ElwChuxX~{sLu}({OKBrKUDsLXPzA2h zOIE!Tm3dq2V4!sBn|D5wV=Z;2Flyv{I??-C8-e!k#Z!(dVdHBMpT*I5IQ z0~pGpr$K!=3g6Pyc_XU3Lw_ogp@!xFne$BRNNLq3feFUQ71Z4GmJjn2o;Nq|(gC{o zH+Kw?tjDaiqJfzfkPPFx(s48lmz+y5f z@dYDMjKQdQb8CXWMW20FU%-&tUZ9`Yz%#kXeU^|6gU~$u*9s{GHs;x?wcg(LvfO;Q z!j>{LmDaVMca>jP8toDF({70uJZAs$wI=I(Is`|f5D+h{(Fsy}k>OXGelOB50`NZC z=8n~Df;#G$Ym}0Bi_>u<=ue;4-}?wZ(c5K?GD7|Je&3?+-+=Cc@3HX}(#?`6?{-In z?v-np#uO2q_Hy~mY1QO+K<7o`&&6|Mnf-V7zsr5W7ot_QhIgomk8hecIvZpw&w?{- zR%mu2bfu9!2K^HIrjB^$>EPM&h_oe*MeW#(A|2b}biPf7S~U7uWmry$F*xIo7UAW% zZfJ!e9`FRqvh6;#xkp+jNO{Q?pGkfI3)^(L+)wd$wJ&Tg^`L8jIR%=ZHpMbdLG<9H zi~GjJnwQ_JkKilJFFAXp%L`t~6PrX$n-y88(87`g)3Ca)#41jZQq*35=*h}xt{IO& z(D5j0D2~Q39+DS zxoLln}5B&3vaj?WM&smUlQkft} z*R+6lxE8&C1BO}w|51E@wrNzkt#}Qv3mJaI@%fci*V+=EpCdhC+3AY zmw1BEjbSGkl5xU~igNBxCR4LmKe+n=*rd8HNI6}qZrVxiX_VuLNG;jTW_Ju_^CaW3 zd4V_k~Rpoh6qa?yy-XoExS_;jjiy37J0+z7h`8pIU@KsX$LUCHQ2<3x^b2K zlAVcErA;8P%VWMPTO(`%wfnfZB5kn|BvXwEe;UNcPS?Ow5kN_!QOX&N!SB?n1L_7H z>d%`zW-=TzKtmAGIF=@#Or6c~$>(0P<;sVYj?b_L+(C!!$q`(|=JlsUmm?@O&DW_1 z(xt`pS@4{|Zo-*)Oo~qjWW4reD2HGLiI3QQGoM zIF4b?@%LA@9;4-=>H=t8Nl2gWhy=2}ts7FJ-@*mf7!L>QV>xG-w#0A867z`fD zO`%OyGowv#e?2JjYAu||!Pq63f6{Q5UAsJ0pDUIyhjLfrg047H51bIqg|sy#pAbZ| zkBHwJ+JS2AvIP6%BnzQki}3L9OF<&dK_K(`ovq|=+27j@WS!_0(Zm5K7~^BsvD90F zHgOfdKTXiYGI16K1E?Aat?R^}Xm<{;XVaN-e@@iIv+rSfS=#+SrcuuRLk1O28_;(( zC;`>O#VZfF0ho1$js`$r^1MY)_BEpTH6h*l_{jMTx)j64#-0%K-eOGD8TJGf`|<*N zWU>xqh=l6|XdI!}u;5Vqw1X*Fo^mulD3kid0ZNOuI6`-fe55lWcS@do7W1CW3qZh+T>8~nj6wg@ zxFMZgGgXJSXFkniLFBuDd*Oj%+st&w}qbNLu12>?O-6 zcKd1>{0S_amr|fJhChvMd$` zy+%UzSi;n}VHJlTY+_%ZkLQ@1^!oWTu*{E#B^`Kb=TrxV<9dY+nD17oYaHJe|fc?>p1@=KbCXezq?m4 zRqHi&mml94JuVjVTcn>fzGk6wQmpf_ZUkf4g2RC}kYL#Rd9>%;?s0Eq5wibZ6jf6> zhW!8apDW_0#bS<=e@AyY9x6JV>p?lgJVU{r94=1zn2W$s4*s`-IHfzmX!hVrEE+9P zpJz2EQiDJmm#Hix`ULGx_pwRMI>jPEzI+X>67dPI9-VLdm;=$KtECHvD)rPw^DkZ0 zkOVzIg>~MrTbH3Sogh~PRrR5kQ4DqTC|V+;r1N-vn(p+R)vE97*L~eTc;}T6a5w4Y zbPhfe5GFTY-tRN?t%UY!#=1SE2Bm-|w)uzXhYGARwQzc|^m1h82rfmgmai0E&-cYs z_1e^q;_S-uYuc;hzO|}qv5cJ!t#ceq(Rve~b`n6CrSnve$Tl{yP6L*duUFi)zToXO zvOwVTu52~%V=?X{E`EajI--Bq6J*<#Y!!#J;E~E|NlYt%v8{O@VCdnCWT$+76iqVT zsru`3c{BXE(Wr!#RSZNJfc3{kgLB{>7JK%Sv=w3KOvk#+4iwxgyn@3VW;C98u;eO> z`_xNm71IaR>Vy-Bc6#p^g8)cunvsmDPHtMQHSkqMGk;!7pgND*W?P(GDV_wD zyVfTiuOMF6)|LnU)CX3-ncx!*8l~i;bPghGMt|Xem8ivs2|JY}*iNL6)-W0*P-LxSX^u2d~ek+jw88DNCy?<|H~Gp&J<+9-uFS}qSL=MN)?JJku6&S*$FhUqD_lb#e~Qy^A0|LD00DUd%XQ)jf4wpS6Vh$5Tm^y$484dmB)fv4oL6hVWgc^K zIhpCu&%7go0pjAE=BLPzq!Fh`n>d05c={60Dp$T&owbw7%7@ZmBzHH!w_oQLt<1O(!Xn#zSU&q36 z#=ek*y~urd7Z{W|K4g6T{=SYGAMH=TdS!Ec6WNR0nq;a-`!mPOu{Z!E$b~7?*)9%A zKI(i+Qx@G*dMIp{>$3s$Lh+;Kc}_6riMsb%=2ah|ATmQwa8J;`HXheLOHRu6P@AY! z8inDDJ|BaaZO0wBIzf(HI(tP1%s%ssXOt+FbVmpu7qA`zYkVGAf=5}@L72PpM3}o$ zc6ro_Uv(W2$dK3q;2>5>d)cG3Kv{0~)+OTQQjOcc?U&)(K})WC)NBO%9U<0N>CkX` zt1!fHw{${rh9HPP$T~a@<3}xS9!H0Z!u?9w^+V2kIv~J$kJq+I)eXV+Pj?_^vX1X- z?#KF{%}!06hDB^rZYxx1)ilG(9Q*6|!3!4kX>)3FR#6 zt_wRGX)$r^mT=|^gOlasG33hgx_0eT(0tm%xZ1MN*?-mw(<^f#`HZm9Y7$Tt9ugjy zXjDlv-8UY+e0hs?bQEKygFIA<5QDtC^VqA*EJ5Gm6C?RL{M0>hK_e4Yi*enxkkL>| zW~^0A(Mf%F&3_zGiO__+%e5o!*0ZmI1(aD;|^nc zv>Dsy3Cy+6wDqxF2*dr?Euk#Mv7wf#&Vcr1q$l2Y7^exZq1|=CoM@HklYgRwnCqJg z2`XMPHcV_9K`kwH$rJz979$q(u57t@rm~F;m&7gQKUn==xVG-``3$zP6TjzuOU5_v$T8PygN-wS$WyC zSGm}3SUthxfMZ8j6&cNeSseyq8tZ=;X8GLMM;jo!FRkUV3;8JmSKVga6uz3MuE_{n2p1>9a(WS^r z3_QFWojK}SlJ~A35uk5GJPGh+Q5_isQCOqPw5+3zBzEQS@gbS0(Q`z?RMC5MMcP@H zcoK3mvg48}Kndn~n!(Q+VcHWe?jr0Q78Ag<`$kVAScye@2}+~`3~l-U6Xl$JEDuJM zSVm1<(mrY9sV@0n|N>@n8M*tFGQM5I%KP+ ze&r=o^^=PJD%+<{;=npa7;1ZTDJs{G=g;~>-&0qT|DmP*1#AL96*QUDOQELlO))K^B_xpJ5YhdxJAlB|ph&9>Ju+JcS5M{@k zMg!+?l40PV$R-Cn++;F(@wh63967Q3%l}Z;r@# z?kr_Kqv(pMNbc6{U}R*TpDl3ot$hm@nz8wPru}L4vk4cAe_C|xUjT;8&anyC#;s|&;TTJq!Uj2e^Tc*G4_T%(2UjsOCoBU3?05nGl_n|VSu&yWy^Ol06# zX^eZa5VzJVIS)#pZYzw3)J@BYKQI6v15b0XB0lEIm=+z$(B78=<>)XWXvcVKyR$b|(`BgxG?^eNHj#AZYOoJc-yII~07e zu-{uVzreWCvs`Iy40DE@$vl3ViA%+PM24u;_QO2wDbz{q^>0N!&QU;pk_q7F8ctwQ zR$|Ui{|H|icfPVwu4VB$cN=DyPc*-gm&6iGTBe<_{_+DC;PBrhaT^2&G4ClD-yGHE zu9o)Nxe40&&BJ%6my=fZ4S2pRV$PQ{*UG4CCWH6R@m8&;YN;!1ar@-Gz`qm)hKgx> zBzqx6p6K19c4Ey;?SsS{qzqmi@5BcsT2uWHoWw<^W+{ngOpGx7Olhc3Y3RE{^Y(Vp%CL zgr0w=ZmK$FDj2Q@yo9BQ5R#RCnwg>6)>C5iR1QAm<7;gOwLK(-g%z+3|8P*$V(}bS z1o&`MTZj3r0dGOtTz^PFVE6@{EQppgX?l-*HJG7AV;IP@J=F{saU1c4Dl29w6ry+Y z_6BM?D@h|Qqxdt;Ltp}l|Lo(YIxTMD{CYFmArB=g>1TRPGGa!aE}ncCJ}0m|TClo} zD@P@g5dy{70mo%N?xmst8j-jeQV@R)9t0=ve!N~l!+mRx2R%cZEvBzpRLx#LgKy>a z!kxR>Z~VI{gqVvz(bM-&^ncj;g#F3@K|51KwJ>*bs|;Ef9*t#|2|$5ofQXK!ecg6o zKBA>x4TC>OTFra>_6iay&K^_{?|gbXoWJi z#~sK+7z;|0grXfZIc>OZO%HH>!flynK^Qk5Ybp9#F}EQYOED)6I7uEouN+4FE5WYN zOQWFHP?V-R`3y9+!ze#50DJ#{SXBTO5uTfOccsxBiRaA0JsX7?)d~v`(&N98ah;$3!6e;6R0vZTEi!lA zoa=JQlf@9h>rI)3R{p&hSR^4;jxsQY680URV+!eivl%UpPKA^b5>=I>xbDQJXdBF` zYj}rhA?><@a+ER7PRCx`iHW#DA6=3FAY@ReJ6GNfP4Hd^v>k*S4y`r(fpX=Y3(Cx8 zty;R8bI2b!Cl8$G&$!a8ZYRw^f1XupywmD5HX8kwtuu-PLg7Wv2eL{=5gQJxJsupD z%8p&hWpeOuscXPd%T2$KE(|QKhUKsHjJ@rz*09XcB5^??U(cv6lsss)@1}8|PJ0ED)eH9;zf1I5gNui1fxO}j177StO(d+fo?zVBMK-OB$>u=QJR3$i1pO| z+AWsKbTsV?D@kC&gTblbn+$*%C!;D+AAUvN+Asoo-f7dYn2I3`r3n-Qwz65Y=w7>! zIC2wye)nRCaMx+vD+jY*#|Z|{Yk>!Om!JB_(i-QTT*GI4{3y;w4JI#4;)<+c%7R< z)l%Q)ZhC93rLsR7yps?EiqB+rH^%qc+VT**uh5l2KH^MnSt0X?c|D(F*{HrM7c%$| zw~i9+7^%(BA!6^V4`nj!^Y_obJPN&-^&~320EwZMF;pTtE0lS&DD^B3eV8PfBRpA- zM4)|;S)i=12Rs}7;UP$TVMpTdlYq(e{VgUU>y)*?TUdc1`r4qf#@runf_VUyRISZW zQy;$(bC%Rw@n7$^a$G!4lTi;|JTl5RA3>Gemm_lOI+5s;iu@z<>XnksVG|uXfAgnLg(g|0La97Icd97yyS9)f@N ze@c`YyJlJkS6K}cGgV^j0-b0o&)vXJ7qz$<#=*Dmsd3`72@L?%;af509XK0Zm7z+A zE$(8t+_*c1bygo(lUxwg1wj%6XyU_oyvEHi>Ap!$4aDns2M~QNaquYb_P}PvSWmLsT3*8pU;_Xo0eGly7x1O2!*n}hqE)B5-@z* z4fNWOS1SNiLBHbs?W{VlAmeRt7UibIv`?upQczzCj*dUh%^n&vR(Y)O#BaCt70u%G z&x+%N->-GB1*u%$)j?(g^BwQy2drxSdw(?YN?c)@E+!Jn%d@zVF9TJEh z^$B#MM8DF(M-@L*>(B_YjRsv+^U4=+GIZEo_0Xa0$@_Qz5HzkdW_;V;4elvi&J~ks zFQw^O0c^MltKdc~JXOI?upfGF+qc<|VSovJn2TD@T|Nowbr-LT;DVjRvo zWqJb82DrrFQL71HPO*)l>Xt7~!YJi&v(g&y04t)BORg0IGMDM5Kpn?pkz$)EZ6F6) z2>lajh&o;uIMAHr;5WfLg|c>*R|=n4Hr#*}FERawy053BNSpT04Q<#XgX(9aDCuIj z55Q(}TWdN}Vp0LrC64oo+4~=V}}Z_5hv&m(Zt7g{dlMJ6H%|J%5>lZw`|Hs(t zF11hjf0a@^0>i)-tCWCW*|dGHivTvJ%d0BmAH3A4?e&y06WTu5 z`kc_k#?9MW14LbgxNIOzD*vg!O?9Jx z*IX`O?()HUEjgC0nZyZBhZeu16p(bNXH@2OTp+P$8X?Hd1u zDnUE4o_6S0FqagY$X$&FhoM%`_)kmAOU@LgD2XIS`D7R0n2F4{=4ol8OsIT<2El5& zwtZLR`(dSeyk6+}__GD)2f>RNz+Rl64(6A;AV7OEO+3#)H`$j~e>bCp;;waqDj%((z*aYotH^i)G zYZH*-y@Y!du;(9m7nc5?%lIugKxtF<&sW^KCT~HDjGHo)XP`o)UfkyDlR|zhw=l(?lI`FXk!41dQ)(#Qm0CT(5zopgMR`VW zKXg%M;miB&vQdllPogTsciY>|LdlcgKQQ<;041A|i>wX0Z8>Az+yjt$C^)lM!~u!f zm1H`RBjfP+(kt#R#rW{_5q|rW%=kOh&H?Oshnh~o;nIxpcH+J*v8Py4@=gP1$#I2w z#5V#j*x;CUmQZToAPpF8RQ;{H=CD--9gFc4u747Ly!E;1)1o9_6>Q!B*|9&rB(r)6 zeWMQkt!vhbbjJ5@5u&T57nNHNwBw=-l}K4orzMGggp!2&Q3AwPzhMFt!D~uU`~rA0 z%zBSl`!L!+Pzczd+&p^dn)i~!Sz(94SAW0M1?8Z$N++q(IkPxq&i~1Is+Gu4mlofY z4B+lb*{Q^d%&66h`9#7}qj_nobd`Njq``PjQrn{n1=Cr?|(@ zLMFPeS#x~bcuRrJa4I{6_&>vzx+-<1Vg8lbfh^Kk1a0WIR^qKcLsTH{X}JH$J9=T> zgW8~}^a{Z=@B$);MP<4aH;)HqgOFF3H3rfPA>G%YvS0qlHvR;r7P(D~IQ_wp|gGq45CR?Ne&Rll`@`_TRX^$_#kwr+ynB6XGI03E_U36ST8|Kxfg!EA$ zL=M@7_|qe?qH$JoSXPrwUcTMA#D=90DwHFA|9)`t`V`49z!X+7^<=#(e!B;B+j*xA zniEyh#=)obht7!9X~df8bpdmah?ZiB(0Un;^*yF!0_&0HL z5F_D(2AdpvT^?-%U5ZM+YsqM{L|Al!GLPP0IGlbP51Nlb_v@9;12g|&cTTL08Hw;B zBFHSXV~Lfd7aE}bzvOmKajv4hHTg9RADG2Ud2AYX#y zWQU+TkFL9Gk1nirL@mzxrRIt)UdvJEz6DSOWtPGG6+P)Fmg1SDm>UJnfovAxT5HWA zLmAmf&tfz?&ygci{2qP&?Tq1bXfpMwuKFbqZh+Mfn*OaR?(P-@ExMv|^m}NIecWNS4DnAa^w`uqTf_6JIf4IWZoygutYU6&hAec+8eeEQ7!o}mNLWC9 zHO;j68(}WR0;=_&Sq%~E6U2+CjwC_VSj&KU(==qDPW2f_^wvg)(hnZ+D|l2z9hE{`b}3t~yY1oyJavPK4#`m&v&e zy!IPR*FSJz8}6_NA7E&<`|75rO34OH=@1~cL|FfDEsA68jVMj{5AI!cm!&JN+ zKSIBuU>pdVpJYNK=>iO7F)N1Lmb29NYM2=L%Q+wR*a!hD=Lr}PI<+D?3XWLkSCDEe z^F)usjhLR@c=Z$2GM;azqih1!-~2NwTl?fdq=NfplFxR_J7%4~b=epPyZFbMzL);| zKy+jL?DUrj)4Nrr(p35Q)<9o(8x-XAEtC54Bqww43S)Jh9BgD4qfkliBt7JWU6+`0 zLXAJ%)UvVXmMT<03VxL1Pc+@l-P^VXQmF8FqI@d$HRdQblp~3*vML zHly?Dt;5oHI2qhkV&8&my<0h z8$BJbU{`lW(%K2DLST9xW4T$<;7#2VG!V-k;Om>#22&8$F#Avv5;evPr1-iy4hvH7 zMgYilAGS&kc+Ct&GJvrB4yo}Z+`udrJEa?bIT;WWf`}Tq1kG}p_|;y3BY>=!Mz;xE z@!zFgbF_H&WS$d=r%dqSG;iN~9%3^0?Gi#U3UI$LSks_$532RfwuRRD0)zXxnxVQj z4X8Q$V$6By%4+Ws=g^!)**^uDoKii_>U5iKD?PN-&F`&LiZ-SRcaN22FA*ae&oC)F zuRzWZ`}&`6K+1FG@nDYddJpsilrigKp1Lku!9Ov5d;T9581t}4Qb;K%2}dcr&Equ~ zOo7LjF{KYt@k(+bStSEpK$~;I8>5sGUg3exRQb|Tz@O9T{BV+Skf@&;7*f^4H(*p$ z+U(OBF@G(-0Y-BHTTCk+u_j0ax|^0@)#`7ub*a}Qgo=;B0~H? z*X#rB-aZ_l@DxIdeMrt`u z^(_;{uYG&8)jAja0O}Qj{=E_*HmsUWgTR!<0>)#gfh31qLZ@Ub=ZWMRFv^T1$MnV0 z%7~YU`8c1n^2$=*BSZyu-iKUCWzEczifzZ|^@*U1kMtNGpTGjB63C})n*#CgxSX*D zOW($0#(qQX5(~Nq46m`@$E`uoii8d|Umg^$w%e=g=M_s&(R}LA)c>JUg-AJPEs!pY z*>@O8#2Ms>l8N7{C^CYu_ratISocC}#Wjk=9V}94t`QEBluYDFR(W?h z9s6Rj(tJ*M(Rmh&Q`N?doar|fmlU+R1;nx+G|{OxTpd-Ky7&POp?IltOg+lS|M?w8 z`1Wt0GK%a8%ot$%kJM(dd15Dr*iqaeQMXY_(#SR*uIpSO0pn$-hY{4d$TcBYs-{xu zxd?kBqjY>psd)-%m#c|>&PI2BQ6;J*IK?ZNxN-p0w=`-IOUo79<(5f8ISUR0b$_P} zIM+{7mS$WYRdN|`1xs1={=Q#i6Gua}eAou%rp#wTJ*gxYb>)|{S2|<<0BGV&!nq1p zflHnFcCp^1`4(DrKmrZ*AaXu_iEk_}oL^#m1@KY^nMCUVC?NzK#EU)mAlkRUxX3ZVcP z4d~ZhPyV)L&VdycxzvTpGIO1J4IW_(>EEGfHh4Q5WK5xea8R8JJ*hpFDs2QlaPrv| zqSB5QsG0ewP= zsaS@wU9Jnklk4N3IMRZ25`{OaR1uFkIaCiq+jLZkAsDrAO!v|>;NaHslS$U4$wsZa z)m->0g&x96Z`2jp0lN=*p;l}kWyFu1EH5TDP1@L4C$_ob5ljM-QWyl9RS)rvqlKg> zk?o_G1Gt66Y4+%k-kfe$qiT8CuO^Gn%>%S=X@hKdIbn=EZ*>z{*CG=})9yG{Pv;&N+m)iz)Upw@s$ubh z<#t~qSngQ^wa<2M=wDjozl$;kw&WFZtdvNoY$?J#B4byZJypYhnMqmsC;*xaqO6fZ$(mz5!`nT(u@HJntgh*$pOfoon+efXun=?yYkb1p zvL!95#Ok0Yne7(p3>)_;X_|j+K(37OBrf|fUK@%j{_-A;#BYy-sk-y(`Fm;XyPdq) z3K+i1H^&a=3h{A_(xGwR&WnZH5oA1qOR{D`1IM5izlpJM@_PsuK57JI*S~mw@y-Cp zlB~YmzC!4sOK9aQk5e>$oWa<3t zjZ+xYc{J$@Q)qpc5gqRb{2c^?Z|Pd;UqNT6{l2Q)JXmXU6Ca zSZ>-XCIX+EJsWl`i(4`#v0o{3*A;_Lykpi75w#iC&eST=_l!{Kw!HKsJA|u%;QFhn z{q%ZwEcJ5d?an?hb(DHi6%^&_6}T^j#vJsSJwnh;2SP=#L1wBMU?iIK=w^^I9mWuW zh@#U{ixHr^@tEkVD31VRE?;xE3h)g29O9w1frK6=a6T+mf!U~5tFn_E^nFq zQ#HY{o?l)svidmeZe;`+GOuO}HTESkUui!hDSbyt-7+J>ulJ!vJSun|CrkU2-HQl;?oC)k)2WB}&Mnw^^UDxBTPm zb{7j+6;ULJ;^WO(!#1Rn2C6Ssgj)~3u_Yf??4IAObO`jK(cU}>OC}~|b5?KPt^M}6 z{Hd1T3SwYnitXyLK3E)=(YiqbjievLLbma&uWeTOHM*jyX;uJ&%%Y*fbgD@`mO$>> zu7eEo>R?Z7j&nbB(J)cXr{fZ*V2^{_J=rx(uS-!nw!_%B9a+?8V z8w@(rxxW!~!!TH=mVC>PuM0=q*3f>nA8QHF`5B8!i4CfS3YG&HzQr$xYGAIp>RD$9 zt4LmRT+Vuj09oJ!wF%`4x!tJ8^lDXM%0KuG9AjNG&G?5-;>PMk9o1vME|(qJxRqE? zLlG-A!=bPH4c*^52Z(-DU__1zPaK>;U7z#6^h3+f)wPoLb~S$xYI{+ELz*78m61df z21+Y=DIp|_12XLU&N8?3u&P;@O>0bQ`Y^Uo`Cv%Pj!_m=5?_>*H7k6vh3jHTok^g= zV(}d9sH4ARJ z@4J%Vw{D_|#424}#LIt!%p=fMb7D1-{XD)btz#()=4=e{wg#7^`U<#siHoQFwuzbP zD24-mBNo+hA7^YqtqJ&&cF@*%HhqrLX>A8(@xDGOw1mq&Ncr^&b#uA>upYFc-6V^s zx{{f-ZOWbxFB~GX?TpS~uUYI4oKkI*=0sW?;H+I3G3WL`^kJ`N!UV_+pWy zmnxVxVfXg~3Q%@U_u*cGlaHii{CJ7f?eN7@$uJT)e=qz(d&a>vSjv;*sy6qNDms2b zp2EWs|H98zoa3*b5{z<@Po~xEi9{SD<`tq}IR~5_f#)ESnIabH0MLJnx&Vw97ZK`N z&7^6lx~75zT^4$;+KgD@6=106ax$Q?O!r0hJb-i}`uM)KR~gZM!CiaMb~!gR<9-7Y zqMQ8{2E$r<|&GX7vFYZRmIyG#5dC(Rwz{IYTHS*xiD1ZmDOK3`|YaQP*X!vbuIb)66Q zdzmgz`{X_*P2^F2n0VHhzR6&+os>-a{%%Y;>(0cM;&G2ilLK(9dgo*@6t##qfK=Nf&&+Z)f>2xYRf=-;``XuLbG!^H;V zpg9hw&!@3lFPp#1y7`r6fy|#bg`BbnE_ZH1xGOctugF$C3;h&$X6zX}9Bg|~QSu67;1jiNo_n1(` z+w&NJBja@R6u%KX`WHLD3WIMRqEOoyPHUlz*4N=kLQK57#3zqfoeD=%Qxd1$n`_p# zWI@OS=>;-B)FtNoEiqfJ{f1c_hXOQ!On;CF?ax1Rb@P>nA;;W>4U|J8{v;~sMOg); zW79<21!_Z9{2@1srHY}fXFdyC6WjNO!RX6=yj#Vv<*P9*+RF3c)a$X z?%>(xK{XYfauk+DzAC8!(wZ|Q68$Q)W)uJ)hVrc9?n_E$vrv$g^>gtOm5MWpuf{!R zbKzLOL-_|c1{483SzrFn*!pPl*lap%15EFwT*{vn;kqd<>cxz>q{748b+dmYkZ+m3 zn}NOU2-D!AR|Z&q-4P+yeUj0Q^{1*{X@axdtG%W<@I$aQE+WLHY{lcbKt*)cKou?0 zYq@OB8Kqg(+kyFYi!Vv44YVgY%Ct}5$~(gXAuRhR+0Iht`E?|oZs*<(nAUWt#yrR5 zs&?Mw<)f{{TuB0sl7*VlFxZLh1ESyMQ}({^kH)XDjl1lgqL4@ZZcb*|sLWnJGzSLYax05~vb6?GY>~R!6AB4&ct(M65Fk zh|zfj{aG50S!~4vs{!BVpk}?BQuq!8)~uIT?)I}%a)Xe2sGOQD0XTJ? zg5>;7S4az;PwD>5I$c(BSF!^s%3t3f1ZWO&k^q&Ziyk||nl5gSxoW~V!EXum(Ijo; z0g^GBse2Y>qX%Kb>`%lqvB8Wd<)k*=eUnn*jDhS z6p{Moz$y~t98Q>Z*96{drv5#8D+hg*O;)bmouaV!0=PNBDMh2e`92v)_jOyftE#2d zyB>LcZjMRIR^*VGKYl=mz348@au}C*is@^U6fP3|7{4BKM&{arP#nvLY+hr1w{_^x z&V4o1vzi6h+p|SLt6GDXVud-mK9!54f$F);PhLK4YW%)FF+mlLRSOJkwsoYhFHXLO zJd@l(Rhk|r7dAKZUnzWfNCt#}S!CB6??Y3V(5e+c3D%sR{{Q4aB+d7WabkxS|dS!T3E2w^~3S0G6^j;UH?5waRfDi(zs zjH8l5?s)MdH>1d@_`j&K4@3`)F%K!v%2yHKtU&#m;knh)$=i5KPHi>`1$x!P_H##T zsVPD9W4f1aOWkNW2V5Oo)B~Q^g6ibASh`Q+Cc-UI+_|9}iNt(TxSEDWV>sraIo$`Y z7^m3D9Vk3u?VB<2_dW7;(SH8PL$26Cpgb{A?(hvw2j;na&K_`e@ZifIHY=}XF5unaX zsA+g5_6c|RbfCj*^tZ{nRBIc)V+Y`GJ@2GG`B($HTtsIp%M?5VeAX9g5oYMXW~sM| zSyEv1hr)}sb?!K$8U#MS+Vo&SRmd0PAC=ihO)BjFAuE~N*b)kTKJkeD$5n4BH7YZ? zNH-~t>$&T`pZA(w0rkQ-qNKncCkTz9ZSmETDzrxV&6%_oz^c6qpTQ|WD_TG*SG8Ex zWs|{bkYaP*7I^Fz2HdXlQ@t2FfhRXLx}Q!U`!|{VFPQdTD5ugZbMrKIY28?ZEWW;? zMfvWywp5>_x9P2^a+Ysk3+eO9p)}{2Fy> zVUpaBo~H~{>@gQVJnm7pp3GTGS$xHh;x^C1tnxhT4j*YkQuf?6wkVepXfCrpL|joi zP-*QkKsg$josO5nh(cHS?n$n-_>8RW%PH!vah$jFSkYxNmsM*iBF5Y8YUY%N6^2qP zAr?GJmAaGjPec`IE>^R!$+R0-c`7}C?2X#E6oY);4nq5PF~cY+378=ZUwtKHnJ(#kxgOT{9%W%qfX_5cI~PpfO)=eh97N6r9h+6Oajiz#Lahz$;OL_N!f5kWGkbW z&M=~N;S>5tQ;N<;XRwT`it9+Fs(vP z`ajQtR#UZGS*NblJUlNzhjY&_=2}n2Weym{@5~@yGU^Wz_TIqaG9EmcG8yB%JMtb< znYNCJ#JGH^i>+8mE!Z!nSuo|K2pKcttYg^kwV#v?wqJDcOY8cK?852k+nE241~r)A>#c z(j0bY-3s+-_P=amkQ$+wvy*3!Jzu>=DhsLr;46d4>gmV`!>PMZ0Z$;JGEJEa*e&RC ziGk{nn*3OE?2J5W@NsgiZVPFV9d$LXn`$#@-*6yv_dt*$ZUx(_5M*2v*ja|^n|8PR zS!Yg;9JwA_uUyX9BqU+^wt!y*BJJJf7%A=@{8M5xMgc=P-WlH!qZTkaR=D6l=L>J2 ztc^RDYL{+r*%woMq3HMJiCohXlfg^;i`g#{A;T{q;J8sx363}%-QBM?qS19rP|zPW9n|J_F*JA(VlUiE|;KZw;oZ@&cxd z<)v2X>-7=XbCl_I%`{bOjBCuXsV>KRe?0zfJXYo6$Xva&HESOdEGQU_r21n;HYG{f zhf$sKUH?Y1hfhOcB`4B)va3&t{TTsys19KbDO2=ClU@w6fugCbGrPNT;m#KV3u=PO zV9Kx2%FaN#;30w2h5x&^A;v}p9Ui{<%bwnIs&UbE!A=TWoWjV!FE>xejy4LTP?Gl3 zx3p*BOfvtfg~u z?f*|YA2^7rzC9p{ufO|l5$i5fUD86f=LLlq+_`~mf^KZlDqk<%PlUKn5C`&Cvw_h~ zK=wRM0qSom2;^+ESn;b103Wh*mE=+h`gQ>NwQ;YRM+$f>^&Qc}NwWFB8E#bmVKj(z1{0FeFQn2)zlg^BSAJXx!+J{0 z^f*808~cJubO$*1S|s}?$6QztU1Y8`+)LUz!@*+n2CTv>e|8gy)L&T6I(M-_@#9PS zy$N&K!ze#9A8*^!CBQs@r>-V{!ODducL#BDtd7M0qVu0vaIH!@=Qq-b@$?WqW3p116w6Io4*A6yi9Ly z|9(;JM7-_1y-3Dh|5_kVKy3Jl)HThz29yEi1geNxu|N@iE!9{yTWKbL)unUJMGcVI zCTuUJFi0TffB)3Jdut>QX9GHFtT@qEAk{EOo^YeXMMt&k$m!1WFIT+UN{!uQGx2#j z{jCiAS0ueW$kAs8m*$+d+~y-}xJF54DeP%oiBObOKbK5O zp<{1Z6+qd;IheY*yahYbN>=g{)CD`LD>dZNZy;hk#T^tz$ z_{}2Q>_QRS1`81Zh<|2H=v`X9>$g62G;9@^epM{e1yBVCdxV2tEur|f!RO1H+w~hS zuQO~UC`~3KPw3+x3<$R?d}JYlLCukE0w`jaG#!jjGA@~NotKbhlFQSNd2_Z3M^KS= zd{(<3(vouBNweT7kQeJkrG0B{A(Qng%>1)Bg2083&%y0*3~aS_F#h$C$?n`=2Ej0Jh<=KbP}`} z@uS`@ZZ~fK`Y-^BH)_2vNk}n4<2~B+dYS0=IYY^4`DvCv`a{y`KanU;mo}x!43eKF z)$fsZT1XXgWikP0uH1Ehc^WHL$gu}WMIE(tK8rX47MPn%6n_LhNq+D2=vA4_0n1wr zUz_{ZkbN|{{dL=k@wHyTXYJ=2>Hb%=@)-Fa^+AI&6--@mCj?CtoRu*$*GNNqp;zHO zn5O=AjIJB{{pHUe3oADoXCLasE26h;58K?yE#vZ&|B)FHcy0Z);|ZxiIU6oJc4(f< zBp_Xu$WUG2>$=tg2+99$jRJ4WYl+VNx{sTX?C^<_{d^+Vt z|9sAxnzHWOS#!qnK3c;LLWDduMx{|;DheUU1w}fsD4L&dm#B*ta`@0q+=5Fvd(%@p z)N=;#fqc(bo2M|c1G}SkwZ&1FpTlbY#}|l(=<)*gzK47zP_uud&V&s1_IC%eIIbIc zxz}?=DOq)jTUL;WQd(lbRZJirdw{_rY#`r@`s=`0(VTw}L^mI;(2j)&khA`Gh)!H0 zVT%VzIhswg*;;#Y8;X|XCZtH!6BS^D-(B3i0Q>SxnU;jEL@PO-A$n(&iLaslBiYc} zo;dzS($Gjejf7|{x#iU!j_}1C+}6#ch4V)8r~lTEu*w7_sJ}DN)_KR5yFa;KE4L7e~{dTkcb@h{-<+5wh zETeBs&)A0W9EFH=hQ9XkWpjNh%{o+ES=6H}P=EBa0= z?`+-_%j|R84b0w3+Tf|8-)hOwxl*ei0qmxbg@r zSkPgxv^9vQJ9Rp`f@4FGP1r8C8b+*ol}Sy9dFI0+C*KjkgtCnH=U#IkXinI7@;!nb zOvYSgLh@QPXtYNkQq_&T->yoH`!>{<(zev8$sW8<%asX@mJ(>tUR;H+<8V8W)kV=c zSoC{K{5|_{^t%!)szFJT;&sZ_Vm#fgWF4Y~^L$@fP)dRUW*LORHKjfZV0^zZ;c=LK z?gHXajqrp^iSVLcLd$T&-6mn}bUO{9jtD8$1`)@YEnIy$*$ITth9SfVVe+#Y`y2Lt zDR@6RG^99Sqt5sKTw6r<3y}#R@01Mr7H*=q4ZcZs-wCQSN|jsmCd(0=L8l!?0q7?9FxR#~_L&1R0*U7NXk_M*n^x6A66W%jxk#)4jf5-*cxV#UAzfk!#` z-=qeSrVpqWW_>8;5FxR)-gBsi#uU1BsJxwFSaaEf&Q>BgGa|!Kx7%^Rq2Y64@cxKb z_6o}$npRi*k@3}vx@8&VuN?$er-mm3;>9pk20+o1&|rJ@FW^9<5FrxNyq5+*@a^6b z@-XVrMTvXx;1Fw29}ZzuoRQQOZX#tQMOUv$xuGYjB(OxL%eD7!T^q=UOQ!i!E1|%= zsf(C*wc0%7xxC5MWu_1-O}POPRxgQeHFE%0I}sKSmqxqeNP&&${#87ZqS*F8Mm=Dm z%N7NXYvt}8HiQzv6OVJ@t>lYS3Ab?Cv&j8%Xn{A~cY=J~iZ4<|g1~8pKmEXbat}%L z$u#VUrEXp5h9+4^ZG2dB%-#KtdLe|q;D9c@`5W(&y-sLfC>D5TGaXm#)u0{QZSDIb zs9Lk^JgkIYkyVzLCyu<$<0|@l*GviZHMDG;A=k)6+}8GATaS4U$ayd3PVdviD1x_G zn}QGw&n;eaMN1$45H;sa%OF#Fe0>k(z^KhNWf!t6-n8~T9pq%;^WP}t6QU(z@cNv# zGO$Z3A!!q_U&~Cr03scEfip}hQLTC|(qVvo8#7Z@k35UrJy-5*hqsAZITT*B#-H zUHxU3PwNGb~DCfz0}iA4DM8<`6CXNxssT`d%tM zC~1so?8}=Z`JV4zp29aQTrVohz#7#RpOp%5NiBQ&Ukg;BrhWOkDJ|5@xY0-f{U(hX zYi7#j8)u^+TXzV0M81oU0^$x8B~1<4y)SLezuM%)tPMyEq!H}k8GyuiuW*a`hX&PD zhu@874mKKT!GLa`T~a~%R9qF zRv)YKXtM%rqKT%w|IYMcF9|!%xt52RE$LvifnvT9VPJbj#IqLD0ApPA?tVyr8?1hG zsBd>b|6@owv5WrUx9K=m=oOE>Kd$z9sRFT*x^KakW_8pIU58}{j(Xp)%3b5gnQ7f) zl0E3Rc2`pVUZ^luX5IlGQ3-KhP`!^k-f^@%4_=5sDA9Bu*k1>ydhdzzowKRjpy~}$ zTx9kE2Dw#}aiwJ4=G#DxfaEk%2?YMVOhTT~2OnA!#%%k4&P(&k`Qs}DR14QVO3#gA z2)JX1w`?TJARKz?t=W2Q<_wg3BqrP7c_@f&3>j)`=M+uhD&$L;io#1+Y@sP?%(!1H zhtP;E^oQx4k9c9ad`I4`HB!*bO}cATp%0ag#2`-fqFl8w?uc+>9PH)*vIC!#6TC+( z5$YQ>fPzLA0M0_Fd>T{C=FZ7O7>dn>JOOl(2O}^THUHkY@U?-0(u7epmUB-H?xo%! z^?+wRDr>|+?BWzDKZO2Ix3&}@~}`oPc; zuk0X_6o7>wyZ0W&%)iR`=FN&PhsJKXp>vdrC~@W=X$97O@m z_(kbXI24vnb}+cbviQ@_28>T~BC&bxI*g<~Zbt23W_JJ~*UT>tvARS80 zGEi7NYylodwx=WXY9v@zll$08LIHKXWwG4TeV;G#x*RE}D0J{jYaF6D!mF%k-(xfmCvOIT8ZJsCvAXv!~!wRwka;DAKQ&m!p%aPCn`3{dvrd9{IFY&4YQe z6;<6010M6YWr~z3Z?355T1Fppl2T_X2v&>|8$F_Zcue2@xn@6$)0-%;N!i?8zr1%inD$AYMAP? zh-??YAqgn1or@NJxN9}#>~#Eoin*_`KesdT!x5DCJ^*QbZKYHmt{dl69|?OIQ6sA& zE!mF#N)Os_K7>Bl@rbP1f8Y6%An|f`5?br)t{}i6X7e>^1NNb}s!R)6#$dGC!(R$# zry|tid^g6Nc>^6P z>4Jl?{3p-)p;we1L!&V**-B33#pz8%;Vv(3SJn>6_&<`3blL$tP@ z)0}z1p6;E@F+0gO&mDYMGMJ%rSm@qgB7fGVD%)3XyW?gCp6q%Q<&sur(11UZZK@`@ z|K&vJACS#-{3>^+RT_et&a#dd?ymLDhL*}2Y+(i6CxY+E{8%Lmi2^)27!YD z6#^|L_Iqaq1&ZYV+`$^X)pHM~i*LJBO*93zU%7HM%owW23fQM-oykG2(fCj-Ic(kD?o8$ zGu{)|sK~duU0)vKz*9H7+sA}}XqdGG;w*dV8YF%zw43%T0x`G!YJb)T)*afVJ+uXV z1y0_Sx8fA0i_cXeKbi?_c69}Qf6?}e75T^(xB)0p*G)j_FEU%SZA2T%)w}@9j}SvlWW~8sxm&J z?!u4Wp5sI!_FzmEM-nS^3`3_Ya_yK@?{X*vh#tN5AF68rjUwRZ zFR11zeF27MEX*gWV#JF%n~T)hSJi9@kLYEKmgw0n@^6YVHHRYPovC@)V7iA0v(n$U(_GEy`3R^p1aE?}=UX z)THa*JpPBZ$h+$ZzTGE$|6k=sTbvnpBIXbdn z&m*^e?Tp0$;J04;h;K1c;;DkP8gn}DPNEGb(vO`2x-?I^!CZB>>N|oYTzl}yu0jpm zR#!dk=qzs((s&C|7W3J+1kH8gd!m$mCXD2k`&8;Ct_n9;2~!f7dZ}>k=B~(~*yskE zfy3TQzTl@(%B)_56Rrer1gpy~hLyR|w?AzuZyzC}AjwbmDUfNhkO(5o7H~V**2~&( zVYn&P5y>3dEW+q``#LZh7rasDOyjh^<{jtNSJUZ~L*etMQct;4EqLAfe3u7tM+FZE zR&Q4B$cvgyDp5zOZcC7E@~zAsJTNC;);4 zMrGhj!z8{i;vx;l8&pz8Ea$E5S z)g!G>Dm>Dm`msU)(CeeFTzOfZ8F4Mr`va6b1J?e_p_xUcEE1k7SRdTws8QzIrphd=;GVNe@?KH0l$r*6iI16|53TR2?zP3NjLogM+lwnV-O}WU7}vC&H;f zDgo+uEN2K6QcEC3i7|*#saS7nuZ`AhJXyDLa@iosS3A>f(w4S_K(qg;Sh-OO@u=&*nno;xEA zAv7TChpSu>8Y5{_YjsT<-1gPo_-igz)ceTYcIL`Cndz@)@Qe z&CLRGwuAK0dYxB4NZR?mGjKveg_j+0JujwOyBTX3W4fAAX+IHvI0r^AMZJR%4J3t~ zcF20nAl>koBWezfMCyYOhGJ5>mTm}h*h9^A_T3!qMmH2{SsnyfMqo*)6<-|dmtQfw z!Veq-!GFwZjq@&JTu@oob*8Zx;#zOQ+Nqoj`2$e(MBLx)hi;R;G1u_B$j^c7vRPc2 z9Bu}B5HsA7VS;;u%?!FlRhB46HhnBR-^~SoBi3!Ms99N0eCBur0z>m2y>9#TRX3nooVl z+R6?<`0?q*2Nbd^9k zk8Q~*0SI4+1D^B)MzoNf#8y+4zHs0w*+S`ubMZ6*AP6tt$!cq?`dr=HuQF8`n z89y$8_c6*}!x#i79MeGK{*fq07b3_*G4gT&r|u4gbJ8QVK0LIOz!aA_Pj-FAF&yhoEbLfVuITS4vz4^w*HOG=TBQJyUzgWXW^|#K0Y})$@Tv5;PuA0~D z)4OGA;}dLw-R{BR^c&4C98C*2b>bqP8N5YMpe`il3(4W`VivyKaXm{x8Z^rjXiv2wSoEY_Nh>A@cqp@eVPJeeqfbd)Re~ zR-D=4;{&c+NMMI}EWqOf+DCpFE-i z^(LtP{JpGo%oie~0mrvGmGh1tG&MhLk|ho%v!x+gVx zGNPFgt73!gXo|!HbY&EzZv>ORc9~1k`T=Mu{g0rL0-?t`Gyyc)kj$ zgt)m#f99+eVqI~EaVgJB3Y*@Hc)hq5C|M!bbGf;O$&B+UrffWO>RidA=jjQSc6QTF zpd@XPMo_uAc#=pa32~Y1A4g-F;-Y&=GT=kuEEh6I2j(dM3YckUi355R z2A3`}9*`4cBEr_JuXEv-Lhfr9_#~S>3+)(SejLaOZr(z0Z*yLGuNGcLOrdYrM6}h? zXYXP8vwRTlVF#)9w4TvWMvczsQMnHaZ|#hu1ueKp5+RtEB$}@;?^OI00U#i3U7D3? z_IRXP>=*gC!QGj?W!=K(NaH*NGJ)NWz%d}e6O_kmwtP9cnp|lFfwrpROcjRyPY``P zfhDbOJ#iarPgx=g0vV#k0a#TknJB@(BUBwpF-576poV`vgiXy9_*#5Zm2V)-*O$4Bgr3_d z)ep*@D~x*{J@^tXPha>MnYVkBXN<&ut9({K>!B)~mBu2Bj2MAmq`rMk`It=w3qNux z?f8888Ce`xNs!yR6C%4mTq`r~Z9O*OdpHds2z>-5+=GZi8r`tTHCla=B19!?^Z#5A z90+y906s=oZ0%`XwM_4a?QzC87=+C*CrlBCPuK<03#D&j z=AEAf#G?rb=;pRTbf| zgts2x17^Cnms_)Km``h8w)79M_Q>Vd6x*i1Mu>%I94y7@l;lh7dBw(TMx!nZ@^j#N z*6af@V*>=i)y#H+LLwZ9G5JI^Sr5RXQ&v2eZ5~)g{hgw~!60ral^^iO)-Oav|By?; zaFFQU1^eY>3h1jO7iZ7eGA*RPL5yzYpLA4iw8MgEBnX7sWh)!=nnwy7L_Rl9?T&@d3FCZ-wUAWU)r)w^TL#4duLJ>dqDhMj9%kxDVmn2u5th(pCjEa#AEm z8Hcr04H7swHA1UoWjadvAohAnZ{A^KCX;537vYmW_prwks&dyQ=JCk@=Gny=h)*(a zyns6i3*@=1R7wDhKBVxrIfgS4)WX%TlzsLZG$f*SMe(u+3O~c~i4Gcpi-ebSZeqPwueS@_8(DgnH2vhwSoZ=VGW~U7DeruGXdzd;-Kaj*(FX+Ge z9jVqOi-DDY#$(HC8rukK6I%h?J+O&Q1^*LN%g)4ze@suGq{_vJUOyL_?86#9%HlZ4 z7w01wOg*BJV$J?JjU@gEGMmr|XC{FK+g`=+^6=@tpYYWFcxcGhF1gyiNLK6F4wd}? z`1u{Yp&X^%B_#wkZ6A8oq?~aQjS3mN>Vo0N`CS5Y*pG6x=XS^uIFDtyG~Xvkb_f~} zht9bjGpe?_@lxNGwEW^E3U#WI@}o={GTi0CtH=T*5%QwZDI`&R>D;Ozz-VE=CMm#< zmPfSX`+u4HS6#6^>Qkl%x2^)>+jYpGJ{ufXFy!EoBNf*xUC(@5~k7dQ{OM_)p|J~Ai=)@ z3DmByG}E9L=)-Lw7W)HV)Hmw}GBXYa<*-Lb&4Mbj`pezuWEZWZ4# zz~5kC@D&*zw)aI0yLN%^{_E7<>x~A-R@wo*4+3=v9&8ibGo2$NF8U-kaiDvgzj&2E zNv&)b8ayT(Moz_hF^qN#qu*^bLRs(MHS1cSL2;}nBOI0f6ylA#ydO7gUb-Qe-I7{k zqz4?J^B{f@GMUb*O*>D$9;b}2sE(m{MNYNlTL;V}|CF@mPqIc}>UAbn<(uMoOh-uN z0m#@IV5GOnQ*bc0bQj-NwEy{F*r^(ZvCKRG)ns;uEI#;RM5rktDy)ks_1B5ji#IGz zkSL7)A&}n7b7d9vza@!;d`}SDr(ZD9eB=CV z40gfJJ*-g4hL18?*PWe|QK+8U`OI?r7_Lk={**?n#%yBWvVIQ?`BR zvrf1Xyi@skUuKSaiqxP^A3XLT?Mk~bS3j#&-AOz?FWQ*hC${Y+f;4{x-#mY&<4>i6MWWt)sSK_NLs}FtGS^MR_8+rETXe6Lgp6UmeeDE^61EEO>I*mFY@0LGq zm5qivN{RJ_(H20YF>H^#t0&I|BiyK>OLx)qC|PLqK0xw$6IugPil>pL?k~t#a9boa za_%u0Fx46`57-phWyXU+l$sYI_$#JwSpav{J!WK(n0o8~2_W`i=&nzcgR%EP=&a~x z7J+u-V^JNTH>8QWaNVKGB(d46(%!4u)P6Az5(Y6-InFex(a;&XbjF(GAz|{29c}J)e{`lxv}~H(RE{@ z^DlL2A7u(9>amfRhq`(v6jC-Ib5_IP{6e{GeiBoo#F_hf)dV^6%c0{x)_-YAl`U8d zc}xVXWcR$MJvYWh>v7x4|dZ6xZYOUzZQtu7D536tqK?bL&2`w_?*yKa%%2Mzk z=*MJl1t2Q^z*XI`eMnWx_L@@JP(-A=Xw}x#%t#EeS-lt^{SK$?jX%9?bM;JOJQErG)D%A_|RTzi-ssqJUK*9Gd)iZg)VuW zRc+f5O3Zy2V$iNx(kJ+mYvP{8gmOBIupfIK~W`p&J4Zt*eG4CLCzX zEI1)-xyo0q8g6W#qU1-pH2@3sfooAm$YLy76ChjELy8jG46L3!LA|ISCpErHmU?ypp+c(oE6%&1)*Ts$Fh zFM{PUFd;-tD+%iGkxsQ5KQNB?v1pmTys`}EBN}UJ)%BZgGTKPm_4?xVz85Os;;xyy z2t_YjyXETd_1iV;0*@^Kgf+ead9H zJNM;#Hb`gSEjT!Un}KHz-HHT!zi;b-W(O-R4vCZkE%V5Gy1yq43n}0m4@T?kA|fL9 zXX0T=i}8clpg!$^`aO>J-?_{!NsB@{T6#>v46jJ1BD_dNn!D%#Is2vSp{%cKXRT*D zQghB z5}Y#mN7cE9Uobud$iwRWSiE-ud)$jyPxKafY;ULX%6x^giGNtKiPtjZ-%YKeDy|nT z=mUa15&5rPsex|E9mvs9#Sh`-^my-1OKAM7;=T^Zf_Lfrf=v0VZ~>)W0~7mW^PJo+ znJVwk1y;E9-dKIis2!p7yPSX3egN9y)EY|ir+FP0EkTJn;u$%E>bMI0mItd*g}ntj zfcR}@Qs8U@$%s0e%^~NRli)gl6;(UqceYw`rncFcVjh?y?MSPsn0nt1TFGPka9JTA zj&a7byV!P#ov#vo<2@TcXNFS9&8YLBp7UIQ4HL$aTzH}e5%2>Tq0{IJD2AzEQT&h` zE`uL56ujwjM>*YZvW~3p$)gKfF1!rVN`Gd+9gNc95F%1>R4hmj!<0b00}X>o4A63f zOzc9Vax|J-QsjuCr$Lg&-e>6wX=46yH{j5ed^g z!WdkDng|y7m2&i^3xtL09mUQ+rTW>UTRf@gMHb@fxBs*Usf`9c!#LIX_~m+4;M}vo zSLxruR{>*~{jU9AsBRgq73mW~<;N>p|C1~BSk#@}nM#>^H?jOl>&n3RO50ihal*oY zt-ByMPrsOWU>=!n)dm$UO#9gh=vt=`H7d+GEb>;5GeEV<{ApSup)xs=fpIC3Eh8A{(e)rF<2AH9Tj_(ddJ#}CYQH3%jhJ+3I$rZ<2O8C+38Aq^= z3wiSPNkXmL)dZusd>1Ecfe3-(ts=GpfJZ{S_%FtzI#GyZFZ=DfGp@7p_W|T*@#Uywvw*pzUv>O+p#L52UshDdWEFUNuc+`TW#CD~VjaWX|1Zk-`N`H|?iGdUCjn)AWr^Ol~FJQJ~I#Rf6G zh2pCfNZZ{)Cpb+7WXU#?A|b)o8FGH~%pp7|K*g>n%J>45CUShZv>Zn^53ZdU1ejc~ zt1Lq-{9jF&BFbVdup5Zu=5+*>w1AT07CrJS=>!CZBVDovfwW=l2CN4u_?(rM5dUY3 z`aeg-%?qn@hts_ropW6hRU#rjAoE}RD{pTM!wzs!wIE+xUNELRUXp&oevkw%FnJp| zeM&m!H0fw8m}>=vVc?*aO3Lu-MNuW+GVE{4ax~N)x{YD+ zd)*>iVsF&}n^o4 zTh$>e6uH-`w@OMgsQZ9))(!uJ>bz_24o%}$=m?@eTkiQN)CXccy9qj=Fo@>#w>`_g zAv5e)5YE4H%Sx_KXr8BV@v39qB#(UiuX{S(X8Bf9i&%3D(J&&pmeJ7Up}r~d)ze*x zoR?Y(_7ku3V4&+fE!8y<%qCB2cr50NX}9T=sqIB~XO`B%`?W}Xue zk%l>R3nzBePd)AJ41N>UpyLUh*Pl<-bL6c2B2s|GFqyRoCbpc{u_DQnY}G_7_EAP# zV9Ju$Pl7e>fH36d;;-5Ar{HUGFt_`cU&T((=tZLZZM(UYQG1lq*^af5X6f-Sj-7u; zb7;ix7;ksysf)D8Ti7i_&wI@hNqa*q_P&VIN!7zSrUR3SrMF4Mp*sTzNx!Eu_E!Tl zHX~m=r33}G+`oy>-`@JeTiio!<+e6QF6y91LL~g(1OWPZW^S> zY$)?`$M1sjpV1Pze9Tk40mES#rP=I0p3$PL#^R+_+;$NHl=K`|nR0%wV_fMRHC~ui zn|oR<$&S#(1mpJ~;^m~%ITCiK_LkMuONnj^_Q;^yr~&uH|p$z4b)gt0Hp zMsUu6iEp#@_o>e_bn(PU?ahH=DmX*VecD-dPrhVz>Xyq2wANjq%|+as8pIE!kUbpk zmdOtFswTZYws630G%@g<9}h(9%Cw{)ONg6bs>N627XOBb73b|Vl$Lk&q{&%0Ycmz4 zQ}S=qY)%8)dUj=Zo>KgMX&${4tGK}J@t9*{(+j!tOq?JdIh0z(!xrSKkKPd*v&xdef{tGz{3i#jUzk)d(J^veKbevkW>xDMpsUxWRNBoSa1Xb~6!HBr3 zM~pc^C%Idm@m2f-EWD+WCX!Jt`LFz!H!mOU;VPdr`PK!NqG~s#MnC{IVepXx471JiPm|=orb?3O}GwXE9<(;dVGpKIx zI_g^bt|Zh6UNae$exYABlB<`n?+o0dmnXI>ipfWjt7NzLm*k6>f80@)TT&b?drhbC z8V-!Oh+_!9qWr=&!fJGav`%o}gCJ{d7b$fJ(&}?kE5?%TqJ(mdd>MWr!NEyRHo*}= z{wOsFHuS45O*`34S?u3qv^<8@`jU7ltr@PoR!}rG|CC3}1R7I;EXEPRLh?%B2H&_O zTE<=qN_Iu>GEs@bBWv<-|DV=(^U`HKgVzDxW-J6)+;%q07N*4yKrY^7`BT#9RiU#j zc%)j{=fUO!h`7&( z`1I?R8maAYHStVgKlH@-Anq2>@HOv#{mBk}eIki`OQ~Wx*-F*SEX98d;6Ra~#=;i5=I)_3 zQ)m0t(Pyx!E7R@ZV7XMY@*!@1@=L;KNdn+#o5QYnCW=LkHZljZziK~r(>!RN~4!yi-D zQU4hMpnS+8O7X){zl!iTtq(Tfo*EN$={0$&yimqdf>spAHS=X_Wm-qND5=4lCEgzN@SqLg8ysh=?-v%W<(^(Yw&M3@m?Jki*F$zSZf;}Fw{qr9( zP8vaslxn?J^=v+UW8uyz>wxi=6CNIlp~JwfolsV=COMJW5?KGwv$WUqbA-`zju!xU#iG;I+1r4q1k#_tL6f!tkh-(7t>FJSNbtgj+CKUG1_XTM|ur1~(-evm` za(R%Ue8tPT5eRYrm^~FQV)*dh*eJ1l{r)hFt`65j!K?ZbK{qO~8dPAq6CY6nJ^9T4Flu4B%I_Wt^hXbGXMu_5 z#wSfaS--4LgCs{t#T-}3aT{XW1&Mul3V-fY&%QoxcY$OhS!mwhbjmG}rS$7E8>z(D zl5oDLnq;;|00BMh}QBLVg4Uqv)u^^QRC~w)QQy_x&44rI+8MqVGaJ7zrcq@1||7G)n` zJR7uGkh$MrM92ua?53M=(+h{JZ}}$bSkX5{1y$O1GltU{(CLM!5@YS`*1U9(k17>p zBfO*l5*T{p+-^`X`&j10%=~V{LgJNuq9a=21ybj)!_Ur8=Enoo1sdy_6qc-;w<05^ zUk9{G_W#+_)GhM&rW0+ET69z;3%VS(cn?pWrR25dJxVG2P#96jn+IyW`vVY}cDJDMAY)!G$1FPWjbM~bUiET+nFrHmNNFDXZhc(|fwsKS9z+9GY2 z9D1Jp#mlbea3EJaYb#2}NI%^UQ=%x@uM7bHKLEhD@}i6Uzhz`p0{bzbf-;A*-u`j3 zuz7`!DpRX>o$2?SaAAou`wpe*kFK7FbL0sz%&{mNEy1c5l7K zxxLvCH#1s(B|V;3*wdkXIx>R5cUXh{@b*>-`#Otp`Evgs^gRY|2Mi7oNkfwr5Od~n zpW8|2fSWvYZzh1e+9;_a7Efib?djC*)Ie4WcEdZ~Z!~?tYi@I%<#FJaw{NW?n@>7; z#iBOP&OnVAyM#9L6c%#E-xC|slpNcGRLqOzHi9h#isPKG2P9a}{N&<(%5~6Z1%*WN zqP}xIo+Li5S30P2AqLsAqs$-|kqP|>Gn_>gtS9}`*)F^FX0AjRv^9)ccMK2=_U*jj zvfmBx6^F4)s&jRZSBG6BbR?#mo|R~NByeY;2e9mD?bX$Enzf3uo)m3`wdDiO_rtgz zk#-$j5B#u4_5BXNoxCokBrydh83u(O7?NwxGOz}?3@#a0?{9-9X4h5jbn&q z=d4%6deNHl>@!;w8cDH%80%brwms9@7wa@=aHo)oa4SwjO(#Rear#6OAmsP*UYR@N}M!YhK}L10GMtr7W>6C4~*M zIL(v$N6_1INSJAp!FM?fhQZ?_e3U>RCF6v_D6BFaxPIU|7T@`)hsYc3k1N6p?x?XH|OlFStV)$m1l5`sTkK}M|XM7>F zmnDUmun51ZSnnL`Y}26E7x?Oy)1v!Mi`?nZqZf40Rd~9`@XDeD3aPsTpQ`|Xjm=)|j`^T*W)iA{HyNo{xxz{Vd zT~#XuF=2hv{}(Cy0~7=Hc`eobU*(I6ZNc>Bc7dkv_PF-=-iL1R!PA(qYB3OEvK(on z${{P5AbZx|T?CKi9B&g$jKZ2&z`#XtG|6BZ2keXCRB6AXHJ+y&2uCAI`TSn6bp|$YnVjDy{{TAHs9b0H}u6p65p8G0sl= z%8J6^xX|;RkD-XXv#4YQGw9OZN3a8`0p+Sx-?LSIKsF|cFdkSQ&RK7{xZn)yOk7*P z2? zd7GKJ-)qcMK2TM33Kgw79J+w={hWxqpoSxt&6Fj*5K>l1_}pQqzW`wQHflS#`t%`PRF9e(bR^t6S$HX)hW+_zJ~6}dizMtEF~lDtke-|n&s z@`^Qb)UQ&$T+J$Z-@sGX6N51;c$-dF#M51u za$db5nd?z8Uv!waN?@-X&W1GB57Y0gn^C#$Q%EG&hlVkZ9o6Lo*0c=S0FFx*=rOpY zLb&7Xl+vKxRY(2v={L@`^7uhA$ijU~c1Pg9S(ApQlmjlWK>3Dj-F8}Yvlx;Zq%*Aa zNt|ij!mrx`id*c5A7AVIg+zRvv?4Xwy&Z?^703-*8&Iai!P=JbBeeRtBraqYwDJjS zu5x4uErE`qr#h^p=)jE^CB8a9KocI#8-46 z6)m-BE3DpgLcxIUt|V5-^J$P>s1D<`V&TezO=kh*ORqT!GckIxq}B1Kh^Gq!WqB;H zCOiO@r;1U2={!4@YZ!QCd;_4#}S#`<=EEWUR9c9HvdkRmHaR8vOc)Ay;B;i};D{d|>66p!* zXZ+=WomYwAo!rw+*i)JOD%P?^kx0BPn#+8hqJKYc<(n>(){(peB$covqZD*> zB`N*jRO=)+tJFTFpWe6>(mrIjNtEL(-EeC>r(f!AFv^UV&EFjNYb|q9zq_m54*XCl z@GuR3$QYvEx=#NkoNo3+-d0IYvyYaE{K=Qh!K7&bDFgL=X<^XgST8%tpYdbET4R?e zQUS4`U{LDBa@o%$xDI?*0ATx@sMlOduuRyafLv#mhFn3ag$&-H(i$eA+GeWOmh;Cr zhYMqaE|^8@r{}fdGozEi8=f{_d8FHVXA8z_a-!{AsPZKLemZ{tV7;I`4mKcIGFd9N zFOzN&ERT4v_g3y8HX7n?s_-^Z@f2NqnlHs(5eCE7{_h%39#q-wRRTQnD^4rAnAUr( zImDS+HaP!7s+>@%x{rFsr=dk)1|7l6yjqJLH4zaIz!rjCBmT(GtnjEk6-?1D1ektu zG!tuI`U+jrxfBJv-|Jd;>$xZAW^j%?it^fFOYaa~;FIN)F+A0_ zC^539R9I8$X?e`Q&1Q0Gwk=M_B{|!0&)4(zx8jC0M{T~)0Y4OZlG^l`1{+jO5fjn&gP&{@{A#)ubEnx{TAz)3rhdFP3i^2D?@>CuZX zkJKJ@#B5UJKpo9Fk?T|7YU#1*0*aIqi5kx%4u!Jfo4cYPM2fXhHkYlqT-W!!Y144T z3YSc`#TeOwQgc-Qf*xjE=HI)#1)d=-l7DPdZCVnSsyzP|?!^7<1vLxZ_C>uj>6~yo z@m44~`orI-i=hM@%53j_tXnL-_&tcOAxN~k)8M_X4&3h$OgJ4qZzJZL$g8TpQTQp` zLI=18o&HyX3o$qSaz5A(z(tQ8o$C`-p|9}^THKpvG-eT$?M?B0Gs=?zF za(JV0zG&A;TFfEaQ2gP>+=OQGoRx!yP3r;|O7713PNB5id#Eu)@ zn?9;~&yJ+i!)5EQ;UzsA1noF1AXgxvyLfUzD06%R@3R{F*DO!uMjIr6kO-}GZ&?(g zp;5K^K3k(3pR^}W8pO?nmv?Yw2Rl^E4T58@7P zEr_6uj;l)I`&ElwxREC)ySi{7xQRNGN9IRR={#zOB=CLJblpB1hY=4WFl^8Re%f52 z_0Y3XdwXAa!^hpDz|LHsC7T2-U1Sk^mdfPgNTP@=t>jh`&{Ogb7XL?7Obu5TEiHf( zb>g~OS)%usEkL~+z1RS!j;2w+&EWpURW74eD~z5Oa)EhP0)q~`+cQ#rJnboFbm}u8 zCW5#^N!>8vo0O^*so4LE3R&t+A-MH{Bv&(B+R)i8Is!kzT$BP9zNS5(5E>rOf z&jxmoak#+m{D4wDL`@*uyC;$Ous*0wBKYpQN+bLevht1&3GOOA(ZP(se*Q>Ban|ua z?AsGcW(DJ>wH_1mC>9v&7oafM3qJV0C~n}2!V=S@*gP602v;b5!fA$IT+0@z61Fya z>5Vgb0Ot2-Z!|-rYnK(fOAz|3sDfD53i-2fLHtaMEbI=kYk1BX#QJ7_z_a$<)vS(i zi42Fo%anDpDT9*z#>P%YU-SgCMYG)d^&Yi1TMWUkR6`jX)5ewKwEi_}K;hk{GN6IV zC29ua&q&WppS)Bjy$7|)a)!#Brx0E8WhQM;81HS&BHo|WwZ1S8zIU0&?fBHt(k1mi z0DTcu1Ud@N+th&*+IV-EcS1~QHF_Uos4d&T;Ouj~h;B;#eS2h<*Rzjp zw13%5gLf!0H}ITc$ec*HA)+-zuvkpNEtOuV**RJPaw|jIjJed}D=`w5*4rq3^|7Kg zcI(Kbz$ueYe%(#e>j(RGtuJ$4*naY|9?9XBGBOtTZGYzJ7r{})klOe+@cJ40`bDO_ zjUV!8MYbCxtjXX>W93S}i1Vr~9*r#I7qV65`i@OvjnWFe(AL6xG@9rDKz4}%dVz=| zMrW4*u*#;ytQaL}-XIQJ8a!}iXqxs!@fMV<>NB>c6Qyf_)Lw(WQ-ESh=c7%4R!=TQ zty<(0ia7Nb6{F2Wy=(=G$tSNlq~B6a6t>repulL!x?|c~Afn(uF!1GkYemAGaKtf` zH8oUrY)4?T?PtGvwp{bz($wQI%Hdj!#kM(V9k{#`Y)dEZnqru{FkG%OiWHshQHZRY z(4y~Gea^qY2xwANfW%6&`dN=OJeUWKc&q*I;9Z-;lL3lY7f#=4#6uQCg?u@*W50Gu zK}CG=*n2`gs@iOPV(HFlq&^^ri-*r0cPr_G6MM4Sx}vCkE~LYNtuuPrPGUNglpI2@ zKOMWX(8I3YQ)_D^XU2aRDlA`t)#)) zQpLXHqj=kve-;39ngelnmOi>dNKF1AQhDA0EemXyqniI6$Iq$ z=SKG-g_Wc}07_e*Cz^VoWLKa;k=7%W!&9`qZ-Oz;WvSquFyl4&o=!r}1i+oobSFow z&+XC{%=ybb!+d0E4f_(?>LO?#$;NOA7%w{}<545~_jbWMsihJlOol9IkU`8F27sSx zzj_Lur6=fMN%KWQ7A}LkmP175m3%lKn#Xx*9B z`NKLK?62H(p?X+X@B%lyPO~T=UdGAR%Idb;fBIoI13RR?4>rBv6Ytgu=$WWbH<1qk z=N4|O>xv24(Md4R4a+o2v zZD=>)^Ev3FmlYXguVj4)%t=uOr`1X_BYdZ2NdJy#yIpTHWOM0G10Nffi=BG}(Urx% zt)s@0-J6=BX27@nR4%*Zho{?Vhy34e4t>@*Nd6G1K&W&ga%MKYH>MNLSL~vj_W`n$ zd`?Q*^2ggyoRV-vPd;VpzL~k*^=)*M8#wq_`>Wh-*&0VW`BtKlAlOTS1el>STQZJB zvM$nHb>J*+b`D2ZyiI-G2^;wh=0K-gwj=r*2fvT+IWWe7j9jQlsr80Y6b~;8i)*S; z5Xgl_4$&zW^sl5Ak&^OOcf0-y3{B;BVIN-iZY3$uMd&?Gne_D6-#Df)KlA|CQvr9m z><#0(YRbh5LiaF+13QfI*|x>Q#5_UO8%7U#v)Br9+!Y`yu5rpn~2~t+%lxj%m87_sqUx-qpJQ~93>p849 zkyPX-(>|^y7CiE2&(Ryt1Kcp0dPctBtE>)zXe=XlD2Y9gTicQ~l=)C;ui&u4*!Fh& z^lJkbgrJ!%v$&Zf3M z5y)3^%V)Zgla^(sqz;fOulWHDt`as^5w3wRk7~!bvZjJBjc@DCjzpM_I5y<6yi$T0 zpHraT?It#R!v>)b0FbRG;Ohy^HLIZOJub%Gv0ALpvCnBGW10hz&cqJS^ib22ePfQy z<%a0LgGIDo{>|FW1n`6i5cW_bhQ6THQ9~Bt1zz*T_kZeeR9rxis{Rh{6^}Q1Li_#| z3y$bm(=Tn#``s=feR+Yc7WE9QoNw`O_$M?9!~o+8>Jw2Wj-Wva%V9*(y@aC!+IuE6 z=U#M?*c()GL#H^D2>4y)Eo4{%hTwwFaQn7>J)D^i8fvWevof1+2;F1kQ;{+sD1KBT z9AjTS=XCqky(`0VBpgzgwW&F(7GoEAy@K?=mwzqovMl6=pxDA#kVc8#4`|Y2Kg#GW zcEBRuwAJKJ%PDb`cMEx>DY6YJQh&eouLEk2N&SRCD2)zK@bpGqP7za5n2^^Q#s_Au z>+DqKyjD>*#R+De230S3ehhJj%z8~JcTVl7nH_aH89%JaY0LS8>g2N)?hJQnBf?WA%ij!7-1;Hx+TO4W?1{j z3O;itNX^0dh<|e_5|$7yVuZ7Y@g6Dttjknf>(X@#kX+1PtD*ru1?bCdYeAi+n8ZgVKPMSbniqUDu#v8@cs+O{HZk zfD@}TWg+>_m04F#OK|DD8pc28u4dT)1hbUV(B?e_UI{%&&g%e~EbY*RkXA}lkNCJe z^Q7Z}B9%#`eZG9k-i@#K66tHOP~vu>gcw>f3ZkG%;r=aYvz`XtA{YD^wz-!cA*00EW#TYgd;8AsPk z$R#%W{!Z3HqWxW~`rQihKNI1s@QTx*!hH`%(^&PP?j=SL<`R za`<~KwWx3i=jNj62lzYm78d+gfPTq{`QTvk4r( zbU`t>$^udS0FtN5RFX?u$GIqiW)hJ5p2_@XJxqFqPRR0aCpvCxON5seG>!fFk6`Ce z(598mFD_JMPSn?LrK9(jhn9#HcXSrL5$J1ja4Y}}w%m#?8S?CnuNbzrD`N8GZ-gc+ zKgY$S$r4pFpvWfdykZ!}LxHqb?$%Y6^b4(;rwyyVu{NgCst8XnG!0diI0dhm8fIeT zGvWhkxP9Qz7%SS+ste9Tsq13l>inzBH5ZG5wo!v@+#r`_dCm^_JU^6i$ehB9zc1L& zVY2*I&E)wIGLprPDh~1$Qu!XGK%&SfwC#%|77qX$a`*5yQ%wD zHyDM2KPaBfO$SJU{KuLd;EljojhmzkC zPDCiuFnqTzrK$=`N4F8)dn)+EU!D^}#i84%ln4yg7D<+dNzZ>BXfXs;5+NLQ($LIM(6$*=uXvJTZasz?o!VIZ0Dy0f`_SXhmb!TmpY$HxonnxgyTXkpL@JmD z4Z8&V-2|`@SB3zTT0kynX~V)|^?PDZ`JbX;IBRL-n zh3)K~2RHI81!gSKu1%>PiK8UxfXVgZ7I!Z^rw7)~6hTZzwRsv`ZyU8emnr<*T9Hrh zDiFIc*5X!a%wbi6#G3{oKHNpKIwOb<%jSvC+nVY1l%zncH1o3sJ_y4voxFQsx#>>M zwmh0#W&W}4`vd14-LN@Z@k{l?vYOw`Zz{?}ZXCgAYC!Q~^t5nH0(IeOvmk_sQtIBP zh3RYdKjDL~1v_MK!UyGItSH{b;#bSEwK|`LEJuIe#x{Z^Lnf7|G|Ib?lp*!l+J<4x z9r7rO4n+HRzH2nQ2AA;z6$3HCoP_Wjn=6hLOm|fw1Nr0Sg9nyctUgkeeX*MB=X?J` z0t$%xhVDu+jT3gmD_wf_}oxFznaim0|D>nhzuD@!%>B|^)( zY8Zr1fPQDLO8ITO>QTl5P4tLvD4ER?6I^KAQ~RT1Uls;pizVEkuIVN+(eRgA zwSBy05V>8h@D-xbk}CXT(NozMJ&qTt`4)bP8{`VP%rn16O9sCvfgQY|Gx@^&RXQSl ztQ_cwn@*jQ?BGVG}n?9U`qjIExgGP=+!c<1LC^$j(M{kJ! z-&X+<6FV@nY0^r{WU~XH_oHm~Ehdm|6*_(5zT8+vUus_NDl6uUPr{m;Pr1hp9us$# z_)(jHQ?ksGKB$B?Pcj0)S7B(40&Rj%Vw8qEP%qUj=-lssaYgR%*h!3!d5tUS=C%Ha zbJ%P~alr=II*DWxQ!%n?*lQrK9G`Uw)IG`CvNZSHPX0&+X<^nVL$$vV*LvHvT%mmN zRSu0JRojGO#~u@rcjsS)9NrF!7dZOHMk|baZmLMdU@xNFbw*r}H@){=YHG7WDU=ky z&|<2Joxa>ZdF*-57}oYOAQd`wW)HdQ(zOo(?JW(DH^{R~ zcVg(S+DCVwG$Fk8X&7E96D!l->#2jfaedDp`l8TN2>cbgzwccA@^B~~^vzkMMfN;b zmCrZnLN#fuP5!}H&NRTg%9HNF?isA3E4*rKxVJ9$=NLM^wqIo$xV_h@&L!;Z&sNMd ze=J598aH3An>xpw#Yy&3hJKF@!Y0|y5Zf}hg4}NSNo9@w5f^#X9QIBs+or9dg0ouk!MH2ADuID zJ;3Tnzajdec4?4+WEVpug{{?hDb>X=VNR;lP%r5V3hA+JR_{Q$O9yEkq35r7?J)+r zrS9#p>STzdTQ$pIIh#48kJoRSb3_cV1+cItHh(?%H~%SBqAUn^jbEz%<@@UP=al`2 z>)wn@&yzvHmyR+me>H6T)nvL=m+R6zIlvBlePf-I$him)YK%R)aVVFlK{gu@r`iy1 zBa`UOifpbJ;6^IeUIa?s)678-9-LnZ_Rr8JqkopAy+l$CLPMS2ER~zNwcnXQ9{@W0 z@>*FbIxhO6E_3A_f|s+ldSA^LqVYczmvQh?xqErM+mqnYy?twszA^<3boCEw!h?5C z4xh!Vn%8{lu{q}IM}e=RRP?S)phi1Hp-_>OC-E{rX~(j09<&?yzM0)Th^Sl&kqHMm zue^G_m;(H4NKv!@>D)0A#9jA?GMta@oDfCID=$$v@s)1zJ%rn0q312#3~D=~2|KrQ zGe^Voq~wQsrud>~jQtuQ&k___D=+I%O8p-X*14oQ!i*HH7!R>2FF{UAs8cHb3E0iT z8Y_i8_UA7HkmMC+Rx;!6{khGl)mS zd<+jzOnUJ8pWdwWKys}Qy~ynUq7q3)fQCdR0xDf$)TWErKHum-nh&|+?Ii4pC7C|-iM z%-)jTJM5j$geF<6U;^{*_}M#r0~g%*_czbs5xSCp-WVmxLuH*NKfyUc=#(PI_p?@^ zvtRf!C0AtR;pqR-S;=WWgNXZZ$b|VkObkQj7i2diYh51SbJ_jxi-9quvBqOj1@^1=_*oV{@}dNFRF4k#%xqj7>> z(}~#L)>mgjT2^eGhen9_7TmeEYURv1bEG<8;CJ>Y79m!2?Rl zqLnpwWbK7%HnUKCka6%EP=iWF(oGghcp*zYCet@O^Sm!4I6mCGu9hi7msF-b%?4lI zzH4ujjFH1_iAgOnKMIC}hIY90i}w3%l2tvOe0cla>u%#7QYJ`f1u5b=(xcs#MVyy% zd|5iTWz6)B9%DgFV-yuiV{T<7c57X_teg*|#-Uq_7b0Pd7BZr7MBgH>j&nMK;kb`? z(c9fYPhcwOvEL2-OE2ca0nFH*$?D~T>fBBfVIfb>z~3Q1gt7HKDi8q#mB<>}8fLk$ z#gFCR8hE3jh%+|CxUlAakrQq6qqTq@?i2(zNei04&!i9K41Fe?HTq=+g4fO=71pj3y#R@xsFtx=b_`&^~_ zKJ}L)whc0$Al0+E#ilC~lmiXE@JHe#$_Wtif_1o5UT(^H%Xek}B=f9mDVI5tQ!?uy zA{5-xAh4uZ)-<()k*hr>b#9xn!C-~>#s*-MWbLsNEwKNPru9rF1KEJO$PFBw&_Ge? zVd<@<!JU(0ho;BDojxWA9uDYUzr&KB=~4vQjDP!Qbs+AS@3m; zg8bFO#WOvKNQe9V*87+i{U;;qR)e0SDG1UKxDNQ}ksaqS6WYzoQ9X)yQPJ92;&$h? zLiO!+0}KiTo7{1R_5{$tHdP6Ye4B9SD?WH9{Q+$gcwyt0Z1oq6X8gvhi3p3{fo)=F zo!GRY-pwgMLqM|i-@ zO@PCizdU2gMh1#u&}8%<2eA*CDdYrj5a`f1K7jG8H-?pWSZ^#uQ$h(|#RZq(ESy#= zdt*Fq920au9VzgVpV_uWqoKDLk<#6H z&`gi$}sFBguAtn;PR7 zX6an&))`<`s7AyG`#0L*mYLVRv4DMgdvoNa^r#F6T6k-jsGSd~;QZ6KO+Np8*V-Sr zET+C?rwC}TOFdN1szzIX(T)jIi%-hFj?#&n^&kwV@z6kLhgR_`Agt{f=ND^*V8q5c zyWckSBhv?_rCKk!<&!r~6D{oo_&#n=;G#qn=|}YRbPkpEmZv2EZuE-1UARJYLmOp_ zz`Fiq?=NG8dq#+#TO+CTfdiL$=R^=&34jTsA9l{&;9{9-#3+?`-`t-Rw;4oeJzZ)= z)V%*>ZnFqblj%52h4#vC*iR=%29JNXSC)xqd?{ZcTj(yoQi;cgIwob7Ubt=!_J=%2 z!)y#-plwaoBHx3*+1nq`q}2Njp9-j)D4d+=FznFS+8R-uT-qG%j!59Nzpb5VAoqDck}sKykcdlqbV5Pufm zYnMJK=Ym>E?7;B2{wc|BkkH;v7ziz##4)gORW5^ACH3Eb=NxI)jo@PGMfcyDFdLz4 z%}t5?vA5PXN3@S75H|c#y@DgO-4Feu3aB6s6s*I4tvXyy=3U;A>w#g0sYj4rV0qxV z*lP!_=jLJb9UJ99Fz_H|x#V z(goKi)IMPGW2h|>J!p1+%G81j+O76CN-S7J#B%JzJUfFggcOf2`;KXNA8}vyx`;nR zj5X{#R$PgQ`-mqAMEfeBTgL>906j0HRrlBbp4a>70F6=9%J&FFA9aClv>E}f{u-5Ebri+W}NLXCGA>QiOQx)|!D* zmK}5gQMNqO*jczQbAl$)^f3y{^!0I zc%ON%1VJ`B%MjsWOr7}Z0FmfLuj~bE*+ogqLM&`gHLw&?qoRi#E&OIdZAmK$gLgRw?06SX4R7P&>g)LW(wMtV9%Lh$O zR>%TAjSq#f5xFihgFm3ZGTNh7r#6e#;v$2%MdJgn;6cJMrVhD@UJmP-ZxPi|U1f6q zDpjAYvLjS;H^?Xh&cNJ#wy}i%8srHR4Z5`~q||`C9mebb=`qJao>&h&5BwjAM{w)%M9vw6h2ZS*3Cr;8d18@=!6-C|EC?jhI;qwn| z#ic+Px7)IGhur8xbFb?qBX*|9W`7ixkKC#hZ#e?E*mav9Hp8@=@`SE@zE0waTZO5X zdCVtMq$xu5{6kQPSSfnPh~~reTqN^WlTXZdh0z&x3*AVw!vdrbauQ2w7$Eqf^SVWP zu@6MrG!bD!sXf1?1;y1Ub#1SMum$BS^fD%W&82}GD0@k;F_(H-QkWffY)XO^reDKj zbMNG?iY6S?jJH9X1)ew#40dY`(&ZZrFu4ywEno`LoUt9u_*@p@f1d_pH#mEAhaKpj zw-*R`8EOz@6t@^Ye7^UkvSpHfrak5Dt?)=uG_SwbImWHSGu|tHgHaX5n69e>xxwl% zvS>=+N!A)(IpCYBU~QV$&JvC0c1-Kv3hm7}g}$9WHujV!%RV`FyJg z%JT?LTGUlq`d{ACn5FwPHL-AN>T30VJKlzFHGD5xXM7eU%h|wP5c^elY*BC#Zk^!C zbUuRUuItQ_=C>5bC3?jV+dd<9Z3x*@mzXuo1Zjm=G64|$-9xC|Us9QZQN4X}i%?34 zRQgbqE53(QR{@9~MEI=)n!0B^`bPi?0x;FWK+Je3H3Iij;&m;5E8Up*T=^_A8zygY4sOkPT+bQ*d9j5+*vR%V4581s2 z6m>^k_zQc8c!AI;>~o7Cd>iemi8~^+$t5Zp+_Pb5tuHWf0J~7%#9p+9^#u^^Ib+YF zdJi-$qwyT8UXFwd?w4}5``8bkcf|F#X8pmQTU_-AJfLqIx2f`nj9}}OX>ULp(&m&} zkw#*rrd5ICzH!_6Gs*Q$9PhHJ40vd6x3x(!O|2+68xF@RB$Sd!>9n zLrD+)!YdreL%onAE11ze8hp$XqhRyKWUya`%b1+s)ni`<2?!Cvea6!9!cR=%b-wMx z+UriV2-06ho{)pre~c;FB|hWj*tosNIr$(kivtnZbBfU66PxnLoE>%xGq5i5P@{v; zzsFK$5^hIjkqr#c4-CQ17NE4{IteAPVabO)?^3~w-%Y!eM+yrKdu8_8td*xOImq%Bw_p>@MuW}m zW837eo|Tp}32E922PPqJJ54QIp2wwS#8~`HVFrwa@!zrOke(>SoYL_`W~~}hzlnNP zF}7t8a2_uJo1hLOx-^%RlAx%AOY;M%{R(fsJL4Dd(Qj{)rVF(2BVKP4(0W@luX8WG zBUgFr`AHGfKk;4UXb6z$?>WjF1#lx8v(S2_$|X0?ED{v=adS zMhuGEBD-gy4{;T3Ra4NKDZzVM5JDDsE?M)$Xsu1&cx(kT{h0kBU|u0V0$tm@<%eoc zow`UNqUnn4WBkO9dT`>vLn;zaE;$IXy?3ube;X#}Qk-*e0+c;RS4s!#4oE7ZQRNA{ z=@_U3`c&91az0nt$P&ANc058S*K}3bhX_)yDQvqjnKt9*UrBEf zL+-5gvHKL7hN&aU6d%4^qc$=wa(TE3Wtg6Uh6hDJe*j}P%UgIkh2M`9PFOEmsnPqk zI_epDT5Hy8wa=sInp$x8H@`dEh_IuVq&?SU5NbX$Fo~(1of5L_D-Wzw0JsSLP0%(a zA0C;uBp-VX#_Otpi-wxFjNzc>&Ty)QWWclqtjVJTzuc-XL~DQUg7wr3aXuL%#yX;b zg*@*s9`kV8)Pr{_r#XH^w4Tm=Um#~6tb7&>h@@Kq#z7gC2qYAl_MfAGbe~I58hUZp4Jc0U+O}w;3As#X@I1jB4$1!<2N?s%24= z72PMK%}siPdFI+QlukjqG&yx13L;CYFnW~{Y>Srdag|wqs9o7~6mB{hzRTQP1o! zF0K!A8Qh7$vF!#U>hkB!p`TRn-xysB?MaPj(PjGMF1v zMiuF=t%$ZQ<|)Qq6EEkosjx*Wnz}l`U6rc-odL{ol3>0i%^zxZHX*K@v5ax2jy&ns zUZSe|R>weoR=kjC%#$!MtW|Y5{d0b~uNPOChPSD%bQyUjMs2$pLe*uy5TAd1_SnO6 ziBzm$**mF>l2g%s6LU^r6WR*mcedoNt-$71&h1K{n7Sm?d);M`l9Nk4q#>@1|Bcl0 zQl7be+4(^Ed*Lb6r7P@9rg7D;M@lnb^W>sV4Lzp|(g*hKsbnkh1TW?XXI*y@%L#-o zlvaAM6x(eUgS5K(@j=Z9r}8+>C_Ov?<8@uIyot-hqXkv`nWVlqQ-Ow3GovU0!B1tb zu1%g#&NbyAMqQdmo@`a%#bjfQS&F|iRJhH4ZeE316=#^uhr+t*gn<+ZiUNQPaHKne zYUfM=y$S6@Eqn0Sg&1}8*Kcy^EPRI3KeFONj6{!C6wsS86Hwu#^t;@g?wZ*VWqxOb z7a?VQF1nVe|1Jj<3teM~L{sUi?cSEg`KCHyd*{+wD!unVN#_a_-gIqg76^;RzHC-Z zOz@Cb{!%fc7pY#DcH~AGMmy3~?&=J|8b+?ghh7 zYmK&}WtsYu)d#`jdW1(zgY~+L7IHg7bRFBae@1fk3ts$U^3wQt?{wUG^11mAy)X;#&Av@@mD^@yHfhUp`7qf>t~7u0B5$$ZSUtF^Lk5rRhs_grh-CPQ5=R z?#G<6Vd&7EqC-h7hV$_}9^+Z#K$_Ua5&(cUV`_E2b8~N|z5%v3T$ez7#mXDnRKvve zEQlDc33i4afWYE?t|nz;!f8@fr!Am0F^-vu9e zO)XW(`(dh44~-CB#3p+QP8ieWte-OUW@^|VviG1E+Ke4`Ey?sv_r#PJW9Puwd9mDV zPa%fgf%tv(`L!=k&#rno`)aC4hkHO)N}~^%+bju$CX0^<{jodsTTuk&Aqwb8SZ0%q z2An2s0!fp@i=0rBr2Hc;+_0k9AC6aZ;A>Z*P)u*b>Y^4jw7N`vLn87aYv7LoFot#B z&{%==s|OMzO4&@0*eD!i83_MoFp%Ue0{Ycv#%=0)o*RSw@Ip?>ro+|6~Rh0vzj zAl#g9ZP1tiD_*wk&$`0C)sGa=0Y)a6ify*p) z$7mNBN*W5pb=GRC0pNCA(*iwvsM|~4kYROAoG_DY?fd=?^VD!QRfpuef(zcE_bQm~ zf`;*73GAoSccNfYqXfuUEG-p)fN}1>vqxMzb#@+A0Na2&I2>15dq8voqq=zuMZsjz zP~+QT|)xZnZ1Cd)s@VnBHyA9l$6gb(9zaN%(`ntVqvpjrWR3Oy+a+ zmz)nT_b%J_@7WsF%kmC{Z;K$r{EuLaK+Br3&>})s?j)TbCv?pmpDw;@K{caSnaHI| zdL~$(Y4xo!ytmwDeG%X3-{2#6t^OYlcO{j*wzco$MKm zc*BQB{Q#_lQpLNpDegc#ebLppQ>~LMwfb=9viG}ench+A71Y%f z+f-^PhDR#}1dNQFnp7*Y2JnD!y{@2gS=*VyGjq^^*d*LE7N*w zZguR7UgFs=RHIDsg1Y$C%e!P|-#=_mmHy4Xw}6j1qQ(IKKLEf32lrS0l_`NODVtRV zMRBZI%0T1h6rikIUjNU_ZGxKU*mDy^s3lNc6Lo?){{AS>gMSo&x|vBC0@w!VvE}h9 z3ze7wu`Y%}WTT=vNx?l+j9^_1otX^ZZ?;e93VRTdaXr_i@Y?Qi+$Q5EZh&?Kpc6^0 z3}VUkG9&@=9U(Chu|u$f)imUL?Nw?A)rLQT*Yo^%z2`M#6!fhVa>jShq^`2dq=|7% z@Ha3xQRPrXk^JR+M1*{7zp5;#ZNS=38f8N!L(nK>9(ru-Qu&eZ`p(bh z38KKvd=O{vrq-l+=ahJRr zXuZ+UH4XF1RDq|ebK3XNfm17r`(9LowY50JmH~yx7Zj{)rl(Grip(U|79^sFO&(MK{dW6#geT+2{gfDf~u>qGmqtKHGPgtC4p;OcXs zgMbrRMstogY(UZZtki-sYqx=Je!5XlI0UrW&~>%@AFfGc!5{HHeuH=}guu}56K#6K zZ)Nb8^a0c3q&zBz5BrDq+lg+o$w0YQ>U%4w>R@>U=7*MZfhjnCid9_nne9n4*XuU&pI#_9>Fc33R_f`2~E57B6>p%z*mbsfA14SX;Ap> zoJw+Y+WwQnaQd8dhC*L+!n1cJ`P_;KNa2Efbq#pQaQMqn^drS%W*QBBSzSQ*YWBkU zR`4>keL;qiXnGQS8D-BotajbLi8Fec^;Ked3&rE`b=CidO2f9VUqhXq4&s+vvLO}0 zQP${SiW^4ft=LWl9xo(FULzfZ-g(gXV8KG4#Zm$2grW~BZxj8glKO_lsN3}Ht+No7 zFXXCwxbog;C%6T`@S3H9ikDRXlMsH}-J+i(tgK~-9zAKEb4yuQTDsSt7oQd^H_H}Z9qRR}_tCJLkJ0o3i*s=0}?~6fwj_l$f)t@uHx34m*tgjLW`V<2+uSk$w5HHCEDQzl)co zI^{fspn!Rak3xlf1-vt}EW@*kA~6iJbiWhOV}IMRG&7kEq&|6SC1Ga2CTKnK9()Q9 zMg~)!uKMV#x+fh;o&?7`TAEcq_*$)v^#(+nkZX2LtPwh%+QlL)Nbl{k%?b^iqo}xp zHq|)9QxW3-oO&G1+5@%DE>PW1BURR7@E)@HZN-W>UcIbK>tDK#SI`cdN2E5~nW zLvNgvcz%O!(xu-*tPX<8gm=hPGDR@jH%+;6p^X>B(2ShtipNm&dPlKg76 zWiyWZ04>(7+cjub$DSh%wVU5XlvVZZ3WUBj?8`*+_cZ;fd}|(pBIhUg@?)^iu|@ntHQD`^77V|;4;v_afHTPtW`PCn4VXb3I20S z2LJd_>rSt;~d5f6<(`I2n(sMTmbM(*Q` z3-jRC%>$H7S-*-ps9Wm@V7-z>|L*uWGR0$>b=1~pw?LCCsp}vT7SxarW_x&Ea0L~c z5z2voF&e5a<|UZjfqjVSg@Ner){LxUVERmkWXIrxi0{@v?35YZ37)NONicubCv~M) zLE!W=4+xzYV2|oUPFD8XAVG@{kPP2?{((5-HFV23rqyP_HCIA!U^cu3IMPBFdS!B8 z3T#MtE4}5?P}T+HNHtF1U~1+DKrCY1pQiMG6bzez<_VFDf&|BWuiJ@pNTOOVg5^mA z3ic6OFBsd6|8~+Ru1;Qp#1T6{lX@Y0u2lDXO<_Big#ua2W2$PS>D_nalVcD>+(tP2I{XWITqgD-6y5gHGoYmw`vPavhr?s``=vO01H*MTZe-A>@%(8GRA#^c$*7_F9(Zeh;hu>jM?n~_i@`08)Y48CY~{nC9ov-l3mmv^7(K}Jj`S=ZpRX)|h< zGhS~py^%d>gA6{AYpB*>YRs7o8Z-H026atQ(;BAnbI{3n2pA&AU*#j=jVl)J$`zbu z_qaIp@D5E>5A2ln$~2zenE7D zxSBnpD)Us5l=Cid8wZSe>UrS+NgQ|IS}m1!8`St+mZ&z@JeB681Ify+cn)$lu}F_J zI{<h{M;^@26?2qgfEa%k7oq73YVv@Ber`MwWMxCO;#gZpnVofHNHQZvC|Ao z*+8GCiiFLf3wRK^gY<{%Vr=~Blx^Zay^~FsWB8y8O#+x5=Q!G4kUS-?&g71o!7!JB zgZ_4FR&fjFCD2(CeDHDU-bQhp>*O!KeVvT6g*f8v(WA*b(4IjAi5`ULUrEbtAbF%j zZSqYcb=HlM9sXL`YaHVF0@vG=dK-SdSw2~~-(R>kk?cjrj_6k}+VlNaK#k&Ue8hn|syQJ``!I2cVK;O`|1p8rN`^)A-!N#+ zA~e)?;+vnQeRQ|V_qpJWbRHjWx?8|%#NZ_&Z%&~Ciki@OHs=uSR2+tR?|)1K&j?9e zxLzNRq-&kgHPOPJ+LE^kmUzxmB#C{wa~1wq?Ac7{T36Mz7|2oN;_=6+B|0l$K`G_U z2mdFjn;GOH9}IY}14em+tT~NJcE^XRuj5mmY7LkCf@Ev`0UYY~GmF5DhpvPOoO=?Y z!N^jbp^8esf=fn4Vm8#xGrXZINQEoy-LW;Oop$e>k(8GP_8;vv*v>Xp)vE?sA>0TT-N5d3ihkBU{n%Zqh|f#%-`zR?6d1A9P*c$)))w2_vKihpJLpaWUwM zcA%P_u2Jy&+-9upSO$}h9m+328fe>*j(%xjXhq2mCy?RnHQgRQwx&ZV7+M@@h-MlMc<{)NK`#M0uLMUIiz#?&QlsgWHUOiR+%SnBHRRba&1EZ)e$WBp zk{CE87u zr_12J%Yn|!>@vHIvb%yiBrkV2M2$oWagR?0d#07#JZQ(8hDD57l38(0px+8l0wF{w zBG&jjIIcp|UPQ7Fh-xTd!ffrs4~x>d{g$HF1y4aGNmIvP+&?^rk7mWhN52onB=fk% z4+|L8^`h~%WXvP*X^CkWRi+qm|B@d)W)jhL_ipcc6_}o1!wV*Zbm76qo#E ze_`O0#ntRfpRy*9Gm>8}2I}7D>fbJUG}E?tBdL3{`_DHW#BU0a9Lj$J>lGs>%V_0L z9d7vGSw@yuQ&~>d&s*O@=1nWh@^w#5<<@8JWdDz4<`J03#N%0~1y(HSuX>8_;PIEC zGMfFBVW^0BZWc*%uS{Jl5QcyoN)bHEb)&c=fA!~BP30Tj@UA*ea~iY+UXjLrmsSve zWSXO|i=vpuLQ30GI%*>2u_S1|>GLsG8%Pu@;IUXEfL{+r*j6{!jFUud>RJDH%@%K| z5%5d1N2)0h^6nF6dA^0wDpuF|>+h%-bO|O<DzLZKqrBIkk2!{9q?_~D+Hpq=d`DA) zomH=RFfpug-)c922pQLhE@O1$u-kDo z4Njiq5pH#>G28x8I;oz9(N7lGkzzsVifX&|2vz{Zf09M#d z2(v3RH6CweI5RyQF-1E8h71E2>Emvb@k_$U2%bu4VuFnlXrgJy**&j9tbHN;X97l8V!rZRC+!c#01-Od;xO0=!Vsiw zM>Ph^+qEJL72iwldS_fsnfjZT(TjfeS?W=*3$W3U-$KqA?27TLAqsLL>e!hm58lwM za^u3Gn7JyiIR715q&8I`+??_`VMKdFwgYRt01W_#FrM>Q@hACKjF~a!XW)yA4Nn zRL}9K7O>HH^9{^mtcC2nSs0WVcIhATC*o-pF-FXqy-eq70>KSU^WQ0FZI>OXQ#X49 z`9ieo_C^}{AETp1I#;ozhe|C>@Y7r4Hf<0a%?mZXPD{-A4k#@mZp#L9c#Mo)rZyEi z+nF(q3p8eTu&S;jJPzebx$HIL!4Xja5+z*O0HRl2m{_Y@d3TX(=3yhkG{4n@&PDOy zFQ|V1k<^0U-L1@O%i*|6U(8!$k*NE!_DzfhrmH?%J%#-V3~=&RUOATnTmp zx5Huaus)(44hxi{WGE|(eSolK8x|nHuPOiNJH)CdL`8JePtxY}9ZO@7q(!DGiW9RF zz$3Epzq>_~;)yDMPAz2Yyg`j?~pr|>rxFGfB0PGSI6`9@dKqbUiU24pzc>(3yhIST&5V#}E8<8%T9qV(n zqd=(h>@#i_Kh-5SDy|7><_jMwS512(zJ6pxlSgSCB7!v(sQcsYwad0L3ia)r*Z{9# zZ34j~C$B{Iva%uU1AZ>H%as$jF~jR%Xdo-kAKW3Sdn0ff#;Q1Bz)B5I9t~SdS-uIw zeHW3^*ipP|-R?xn!q)FiIvC&h`+5kn_0`g!&`}jk&;+Uz(w)3)kn;5+HDQ`7fWAZ3 z%L{iM7MTbwY*_pZaksCuN+l_OBTb+#zm=7qJW38|^qSN8Q)cxuE7AtQ0xf4s=x}H~MKTsF=TNvTB z^~i2}iV~xh4+Flz>6_H6c#6+^dk$EEt|rqnvGagwF*fNRmpIHZfa)=8l+;(`yYF;u zF?x~D)IM!2RtxJzq-A`x#onNaIHxl5O|B>g=`U2AIP0i~6J}xH;Y5K* z(9K-+QLHW2TqqNWE{1d(gCvzk?Mch*vY2sU!X{Z7bDPDgXSj`4r3Vv#*P;u`#W`VN z2+DD6XdV8!H68YDO9`4DsChB4FM*3)3xOMf%ZyCh6*;`2#0fM7a!EiKoxZ>aT>i#Z znBkH}+xv!?YbOuC^-PYL-=r-mlK6rmsSdEc!gvHtLO+rxQV`L~oZm?|6){eOiw~bsp1pAFf?=%!X!fB0E9s*F z@D+|^ymp`a9BQmH1CH^u4;0ib@Roqs+mbv}d~pa2vJpMR74+|BiadfCP8i2Z165QV zihr0UWl9KVmdMH0qWcFm7&SZfyHt4e|-V?&GLs!dA4Xm+`XlJ;qGJD`VG7N3P7hLLjWTz`qNK z)^Dw};>>v$)nVxHGu6$crGl&%Y5&xy8`&7VYm_6a9qw61888~nYtP=7wX z>tF%b&_w`1A7*>gN2ew<8r+m}Mt|#wWcAl#K?i9;9)=N#6XNvDYHThjoY4sCCZ{Sb znu{?t^p4dFW=KpX%@=J+blaRx+r3rNa3I%hi4z3!E56-bikT9`;R(GxR%GkC*ie z=lo*=zOSAo%HL`kIsRN-ORz~*l!=m#_kQbiy8L%|@E4n(!V)_j~AZAU&lbk*7?%CT%B745uoBc=M4tRw`XUwkI9kGi>3^K z_2vTAZD^$`BUC^YmjqYJHx2M-DR)lk`PL>rR-BU3O2+p@bTa$Ym zveRj|_yd!3qQkT|)$H@7-Bh6Vm=8fNDoQ}2KA!yP!m|o=6cH_n{qGnvIpbzQ0Po05 zWB%rOT-I+W0?KBwa+U}n$-@UR_(m8SsfU9p_f5}l8|D-Au{O!C1P zbHXmG=pi8twnW2epWNy0Hm>seL`mJj3;P=;aANPdw0ubG$ z*SUV94s*P+OeGGX-kWI_cKh)k+O>lbb>d5$h@#kkK1klyD;in--&;dCPPeE3m5^a) z4m~&$9&*c{L_iS0IfF*)9DZTP%{JNfllM=$}p zB_&-o*nbf%!;Y zN%;}bLNvg)9rHR*3vP;e`EZ?J`Lo!!vb*@jP_fGYf9kQs>XuM6F@6Pb1meWSc4^t3 zQr*`Ti~6_VQ8OYa-W(F9sIEJsvs*1O{l;+C^dU|7Lc0M{x10lRTF)D%QB4D7WL z*}$HecWd#$W+M2x%vt=R7`-2(1g-IBr23d@@hi~)Qx`6~b)BEUcZGA6y4^knB!k5S z?PpdeV!DHi5zVAuuXXYmgO`W1WCoZXW+2r2)F&j6}AvK+^X zqdluZkik9f+$^TwRZuV~hT^_X?(9jTBrI}S0;HKl0*Pm&`Z9e8TQST4+gM)_WE4K@>(!1uSO$hM9P`!Km2)X>4uesWS%A@VJ zB~lX%sBj*LUKXm8l7$gdi-peAD&7XemkCfllHitX zdKLaT7_*VmKbpOUcS4p0%L~_N`|pkcRv;Maj26yN;0(&xg=Pm@)>4(ew;Pe49)FPeg*}t~jYIeG_8!qT_tT39JSwO5|*olbk zI6Z^D9Gtu6^kVmYAJ_p>7Gq;HDttcEaSy4OT7ps}D0COv}~Jcg!TDpKr# zK<=x-tp_vctvdQlz~)%#ij>e1aT1oG$iLU3>B<_c2zu~Bxerr(|k}c z)`7kizFRTG4=`%jDQ00}`JR{F6B_n10$J>1nTzvEnzb3P3gCO zAp>dljiR2ura&ZvRQB?aJK37_aUpO}I+dW(N@@p9n`jBjoJsf$$JW`(=>W=aye!?? zcYVmRvRiO(6PJZSXTCbv2DucW=l^Iq9tn%M zlX3G0$5F(V(LpKwJo^n^aA>bAdUe}d;Q1{u+L+&E5UbTu zz|JP$FzLTWYmg%b3IV_#%NUzslqslS8OXiM3J00`^AkX~G4Xl3E?dC#WqGHkUJMB0 z3s2Q#m#>8A+M|lrwiUhV%#hy&*Ep!=1?lU_h~w(48Yf>^XdFxL*N0mv8&EYK!|7B3 zSLK*>Jw@J_>g^7cp^sIxD0V^6pkRmG1uaHgo7%Oys2whOV?Z8Vl+hDw^O@8*T!$~W z&ee6wLRwgF&ojTYX|W2as`TqscTXaPEC528EeD|e#O1uLHjGp%$o^lkUT|QpUGdd% zRaL7AO!}SHWTIHWO>k=+1wfB~HW>`l1Jf!EdpkB%cg&EZa3ltdL{}kCO}|<`JgH8+7hSUbY0pP9j2SBCw2-=5)BFX&LD&YRfP9jkQ@w zlDF&dz`PSSlX345dAhA&7!SHKW>>6M6v)(L$2UL5fBd`tlB!6^oYsuCb2e9jd1{4{ z6k}1s#^$O}$p;G%|GslCdLg!qFd*+C-+dcJeBf=`2sMU5g))EqlFtAhihGR_W+j#| zGw_5%s%MXezv#NRMDTP9fO*Cn(ZDB-D4|?eX7e1GKIYj8x^3gCahr`hv>cek$?qq4 z^jQY}Q5|pyDjzWYmb6rzQdy4Byf|pF>}nCSzNn!LNUPIPL`+Ece1S+WjI3C*?BCS; zY|wWD-eVVv!gRR|_tVwL1kbtJ#*XS2%KX`06B4=oLk!wJ5@VsiIv_$3keBZq>JAe$ zJ6{b|c7$tevHUqs6yv=ekO`UoY(eSQ;sb#Wlma3E1k-l?jO#y6y{v*uP#uQf49w-K zeeORo$8{%|I=&d9snwAxg59vFKPO?5W4y5qvl(rfsPkY^kb;$1@#1c6sBvYUIVlcZWc=zjI zr$rSliAO|afvEwilEduQH7J4m>$+F3tx^wC#n?ZJ5a8UIo*AOw5NmQQS&D&<1~g_v zcjHPf0YO)|LuR|suh#@G4~YS)#Ya{ciPCYFsU%o`qjGljin! zS~Rd3X&%BJ$j(eiEE9eG>gvD|P4a~8YtC0#Ok)VN3ZY557+P#IkP-XLa7*#GV1r|g!0QMW1u z+6#|44uluEu5{So5thX%y-1`=8&CVi1T0w~>$(x?)Hgqsn_W5Gz>qWS)fStb?-YX^ zhOyv4Fr#h^Vpw_b7+Y^5?7)TB=Km!^!T09Vi)^(;&po<~$F3*s5K7fo8s4@-aRN2m z?|Qxj?#S=R7obQY37Ngu!#rN;OVvpCRKU3q?)-}CTEP{F6f!*w(L96&sILnaDr@J} zy|ok#@)xT7tKTEFf#~XJ6XPOLX>#zi37z^W!WtVm$Ic~qToEG+=zT}s*N0OF+Nr?T zE-TEI1B953O(rpkwRXGw!kxS>PWV^=|7sW~S%3r2J59F{R3lfuMnJrbg9cJnxfarp z_Mi|~HzF+1dkbZg4|@_mA2@tcV-VIL6Q?V;soo#kZ z4;Yhp6;3*v;L$_73CA>_o%%y$Hju$T-_yu6aLmj79J-gr_)Xy>vE$2 z@SW??U-X$6GXo*zA1f!_$Pw+PU^ItfJlR_B{Z)%r2sVf&y~f+#Kz#D4W1=ABI&(Tuw}NuMHGwTf<)v z8}(WRB$M!#I`NN9Q^j4wYs_(yflxKT!kKv#oBKwkor&LxBc>H~cJRZ}s=IgwK9_F= z7_c+7AxN5qdw+GXc*x<;s7tA?JIkBvXQgb@XxDBYdujeZ-P1E9%2H?fOG;Jm?{V0; zP@r^BC2JV_tW&LVe{+27qaxBRSF5V26U=pBlRRr#7vV=~MYxX&t^2ULL03Cqoad~;Y~2lRUyUFI zW2;`iy|uc*tSj_dw}Rq|WJ1i|jR|1Q@Sicqaf~|a-5gfdAA73@+lm)xkgRgsDn!@W z+!?`sbZ}DIW+$)SId~6uDUXFL>k;!8g)2T-*_T{k1o})gH7`$R^Qpua${(T=VG;L5 z>^}$IRr<1!ol*<%+DcVO29e#-6E}#Uk7XicRE(+1sk2ZY-h9f(*L>Y< z(bfiR&P=j6PZyldgNeCeL+WnW&Y%0iXG&qC^E)m}xsjOB*2fbpZl}v6ZTQc8gmi|f zUomc{)agiUyIXk2fN!pg?y#-!PudZ%q;WEN^IYR+9FCTXD}!aaoIhR*bsyNL22V6Q z20!%$p#i9+7(;J%`?p7(m~n*$Ip7Q>ZCBJzTc;b&Fz8!cGQS(T!q4>owZ-u_j$pCS zF;o>FUsV24#7oc;a#!-jF~Y_e$wxO2us?IW?Y8RYRZmRhdp$Dg>j1*@*NiqBQXEWm>!7;Bjf85wz%-sGpWwhWh+Ko_VG|4pXT?jxW_n#K5IBsT9z*!NrL5SF6IKw4zrI+I``j3?41stjg1RY$hNynRj*CLrED;69Y8ahgV$}xOU>Xq&X=0)jo z@wW&i>yZ%h7~Yp`rrAqv-kT2}acKzKh?x|H_X~aaM#hd^4Z_x!@pTK?W~E^?K9@s8 zszLy>a|cU_!Vfb@6_&ZIQnid6gz3gkg?}`pUNVY%Z#cf73Ro~`q0J9DPW|mrpe*mV&nDZ170;tJ`{}SL&Kzs zdZ6)?!pWzN-K2eXRE^WLd%|q&=b!tva&UNUz2A{;F*o>L=j8o(o-fTTZ^Xs%&yVg9 zxI^iHKkq|j?QYmX45}gGQy5wx7usdZRfBuLEe-pZy zXt+cHcx?V$^r270SL5EjZuVrTh_2eP#%oxY-(Ae9E<(-H9Fc)0&>wc_cJzK{XAGt6 zHVjMoRKgwhs*AM7M*nJT@M}-I#t!1*s>t1G%s>Zb0V;)P6?A%>EbC&E>EJ-@{})%h zZSZBd^1C`(%)K@V8h*SvvCC~!36R}*&B+j@>Zr1Y%`Werd{t3PBLk!Qny;`wZ+Qwp zR1-Ynx+ITGpKKt)$!~q8x0O3N)+kPfvJFg~8G*DqtMVYKd?AXv*59w}Cq|JCe?5|> zL?M-+pi_l;697S!vXmNZ)y5;a8^9HiY3~A4M?DX#RuV8a0{WLqAJMH-P^&dx&X$j$ zx+sRXNX==+o*F0RN_!TbpZ~f>*he(w8pQKZV&kl_42>JPDEOUs{ghQ^kvw;yv^zi2 z+(?omjrVlCz5&>dzXHLk&qcd)N(L7w*xnJE%*crYI7bn)6Ac^Fa)df_A(+n}@X(G$ z_N{EnEOSr*+l-BuvNwY_d`P(p%d)4iT#pkwRb{jV4AKhRCH5^oQiq)~skK~PBTjU* zWtf75uCB6RBnL``O3ADzDJ3t(t#0R)Sn?XEi>Bhtry^jq=PBahRy04elgu%unUH%H z1sXWO0SPaEPI%hhDA#U}di?fpu8}q>R^T<=BJ!z#+y2_IuVnStA7_m0DshSkM&uggw+bhE|*|qOg$U+u$nbOQ`4McO%C4G z19a#qN(|2>O=hwIm1oxSP4^=s*J~F1LS`3os)4fF@AwmOtu**K_Y3uBFcys#(}HG? zzJi+u&f50MN7Z4U_rp^-5L^!PiHv{RjC%bl%4m~b#Rs&cmHDJAwA^y#*t8C(NNGgank)KlVWnU@6v~niqS6 zz*xXu=^X>BBLOjxT(I?pMb=z92>l9@f>`pY?CR4Uu)#tF*|Bu|v!}3Jy-XzDa~wwM zxJE0Y3{**vjCo_zBxa%L}4?Q}{Lma#8;PZ8No zocagCVgOWXP$OEo72Kh#?91n$+HQcbeq_P-lzz|^2zFpysWY!h62;@WoPXQRoD0zX~op&D^`4OYv4DS}g=`qK#g1Oy<_{iVCQ&p$jx&1S!oGkDi^t z7DxlT=vTs&3`YMR4$s%i$9t){XQ^r!^Z{u!JLF=w@>!1Y^*fy(sF360&vHoNaoIIM zFf4o-jYqINAf`pb<<>0j^RlY5Ivio^Gyz@*rP*4Tb~k*WB+Iy<5lR(q%lX^T^C**C zQxV6DAiN&}>gu5rQ=i7HuKwZqt{uGE1dQ8mScYR@L`El3eMMBSzWsV8HzXp}CH{M* z0?m*~v+@8Fy7-%#Debfj{fH_D?N4x8&8ZWHUjHzDi1*w!O-I$wMI+Z{4KK>p@HKs| zy2n^KK!sa6Yk~@&Xv}(Mx+_-a6Pbpdb70KtK!LbOZb~zQ3M@?X8B$3V4KosjGrez} zs997jH@Rx^L~|ea^P5Iej9}fwIda*RbFzMVM&W*=R2kh;JL~cy_+Ij_ONB~@5{oY`GIEy2^BSWkR`cKO#oUD!ba{uJ_)N0~ z+PTL9=FX#TWUa5EIzbBejUs&&8qZXIW{QQ%0&eI04AOW(6$a1cyng=|Uzv{zy@~~f z`;HlrQOj`l4B36@picBj?XkeDBh@i-z7c@%3SWYY#tZCX>Z#<_ClNb?X@XZG3efM0 z4yqGT$tO5if^QOS$pZY|TvCU9cw>&4*Cl5c@*z%Xtx8NH(cI6Bmxn6QDVRp|ePGZ+ zR)KPyd6HQsxE!QBSvFo4Xi}h6za%^c`n92hYi)*(DCW{9GVEa|E$^a zip8wY6BGL632=j(-^nFxlx>ULiNUV)=j)GSLuz@v(W?Qs5yROcs1 zN3%A`r?%cd2aiIG#3LY<2AaTtycVut39!VOEbTL+R~fm7q^`XCDtj^Hf|4{zy;FBO z7o}8!du=KntzQLTKq$DB5iI5&*dZwR0SNcYam`nK!EtaH!(qG<*oq3RFx(#1z#R?}U#6|^N0>BK z&T|H*9;MCVSmfOApIx(UUy#^N4#cj2&p!I9|E|r4lHydMiD@Dl&yCre`wEhlbO?A> z-RE%0l6_y!3fTtN?;g?WnLdnsV~3Sumq(|r6%f$sQH%F-GFukEj4QlKRAu(KJ~Tno z8tpfv@sX0&r7LJdh!NE}9R{@uXrHMsG$|gpBP{p=>|kUib=y4Y&P2n+pLV)=Ns?;jF<`!Jw8K-6tSTz&2+t1K74gn=3aj#G|nevby(4c zUu;gIA&0|#&~I#@nk_-s3EODVEhw92H+y~84Bz#a#Y{nCN+&(edHiDLl&KLEfo%$3GD ziOTL}5>-2e-V__Cq51EgSnBJ8qj=9Q_yf`DjDcg6ZQ!p{JP)ugLG@~xaW=c7@a^Ee zzd#_(z2?YnjABllWs~B6OgHK(g~(AAe7jHeTGlK}id5os!dC8BLM?IlQ-NAGdq4>+?jG;> za0X29;7AYFa>h&EgVy z*-ed7AL+uM^%chKkFSQzblF{#@s#*Ja%iR>p2FU9@01G7Q^FV=a{yNOq&o1ogh^L> zNXmN(0|s4#`0^1zf&$VNSW5h=QB#=A4Jh9GX?=#yq;**vKh??J{?*=AUvCjLk|@-_ z=*s4v?Gk=qR`+$x#?6+Yss9fffbzWKvSj%huf(~pfUb82KI5|&t7fZ+EMV@qRI{s6 zS|b?2uI}9Dr%VqC)=sYppg9VQR{TfCwbkSi(OFVM<&ZE(Edi~R7MX0~eC(hHY#CkiL2p4~b|Loolc z*Gj#foNqL`Q-Jjb;QHY>U3v{Z7AfQiCStghWpN%h(@E5xXtjyXlXt}mIQ)3oAM)Jj z4GP@Ok3hUT{5h}gUpdY-V-!Z6-H-7C`o+C|67<_UTYBXpq4tI|^arI5?pcGMF+WF0#!eY>kQ*NeQc!FMYY#xfi0Oe$X^L% znd_%`sNI)EA-aHS)jCl|ui%B7Omf~{ac5izYltv<9xTEf0%TVQOSa?i&1JxAO!5Iy zW1{-BRpj$hzMJIS=~%Oa<3iGeDS|x~e9Ti9#27CsEIB+d<;MyXNhKCp*<`?5fRshI zv-IzvfHpz_rt|d!xTI%kD4fNC4V*kZSk&n#ih#IO2~Pawr7DfK0zGREw#DkHKRUzU z^bdxb?Rp;g397?A+7QvATEG;G9u@POA5U0Ldz)qL5(g;5Mj7zp;prP!>GzYFH;-+) z-^9F?OJ22taQC1_A(Hp1a$H`qj<gy|$F{ij1?oD7dNMQ>LMPx{S;f84VHm0hsgBCioO^B)9i_q}0B;-DXkH+QGz1_EeJghf26uQJ^s)@S+I|Cq?^N*n) z@(}>1;isMvem{}pN7pxgUotQzISudo1ALfAsSRnvk||p!e#02CeP~2loo(-Ik&5#n zwDWqcL_>RWVLhSEBiBH>f)e#};wZ#iRYO7T!S`56y>l+sd2NtJ`5xavIKH}uI-oS% zHMThjc;74C;9pqYM%*b_y0^q|n#@y396Wl;^cVnG1FxglaABVyBY*PK%^PMgs}S8b zmGo(qx}}FLdQEitT61!vdhl4vAfcsGlBLNs2D3KF4S4+a5(-{MUr%+V#2r*~XLiOb z>fQXrNH)|Wo=pp}u}C{`VL^)0)_4%cAX z+lNjg)8W{KfSq+|w@{!&F4OAiZYy8#ql8Eg6Os$Q*mf~U!7w89gl^dQ*W^DsZ{{EoN;Jv=E_ zzgV7NI?lM+nUYDUQLtv5&43Q+56y{S~+}zrv4Una52PleVxU z4Pzh-N8$txOu|r*-Eo=9SaE*)Py5k9x`=G?0OSh(;wz1nwNk=|PGRS;Dqqi~>8o#P z=t|2OblN{@N|SZlHfFZ^GMcU2x{8q#}tKibPIWbpUF zWE>7lXd@U8wdaGm4o{I4D-i64k=4>+aWJqJaTzAcK&W-x)RhiI(dP|Io1Q) z`3nkgWr$yzE(Xp|mR4`*?O3=*`wLb5xr~9;PS2KRULru#$Q$pSaB8gsduq`_L#9>B zdFJ>u;kO5PatZH9y8%)`Q1fl_h~cNkd@VrT5hfB)8Wtad0unz>rBzN7e21UbFJP+B zjxqH;d|Zgd>mkD?3!~}yY$s54Sx+Do|7^V#g{btkWeXYA@o@1`5Lu5v&CD&T zDLLP}S~J`2ipGC&cTQ{&_lQAp73(eQ8)fqm(*(=tM#zif<3gji%eJ_aB~#&h_I%Q~ zbvuJ1_<@$HuQJ=0IBO!BLxRPbF9sWev$r#RC@o zd`?ooRaN0HAjNpGmnUU}nYQl@2jiYsyV-~#9Z}>m>7-=ADggOOtO~^&5{+5baP>7> z&+;0UB;${0-XJ|*S047m-Le@HghaP318juuytc-0-DRm7gaG>xel4hoVKd3M=x$e$ zrRm}GN>+vjx444Qo$LNv*a1F<`dN1IA5?gN0K_dxlIK#xU>{wAotJwp;ZK2Tj0vM` zfl;Vi4aX+O0-S&cdK)0-7ia{SY|K|x(}GWDN-vGXK`7Va=i4;D3y!2hrpi%L(HU4* zOW?Ot@5)$ z-V!hfXtijr&&gSyMxDTv0F}eB-&)7HtbzY zgmr1T#Zz%>soIfE#l~t$mg`%#6rgJi#(aomMo0IguwXK*&D=U4G&cvA44{*o654Lu zoXo}rNCRBALH%`xln<(HwM-Q5HZxUDpES>mLvE)OVI7*1c>F*j=si?9-GCbQVToN_ z3d{DZQS18wifE0Ioe66lP37smA?X_X`3SmtduH`Sv4i<+D`p2|uzSNHkExHBFE|q+ z*Qx$kS&55E666yy5dqOu9L?D^fjgfwG54d&SD&-lg*dJ3myO6^AQQ^dxS;MQ)zj_j zp=rZ*I;scQ?isMrvWMD?sl*5CdNvs+PDmrH!-|}^?Rph?SPFry6 zb$1lShcTX6qFzGQDbw*B7(IgukyL)y<0@SOm$%=lAxr&szhF8XUFQ{Cln|YFM2Q%OfYY+c-Uwd2B zG#eP~dU^1=q(97xOQfcMXELSnf`Jlg1b+-?i72rkZpx-YE3U?=4K>S*?*%sKK_u3c zaHCz^x|%wEFjjrxY-9`iy|kS(eR)+y1L(N5WA(WplNFnjUJFClM9|^MZ&PGm8f(r~ zDJl;YvdJ3QIWrTFj`WEcL*8g1JR|*1%g;BhV*&8tZi7KGi~)LibeKrQZ?c7i|1mwm zz-Bjk20FG$EGGMC1m*caj(B^Z-clYJPsR~LMqCU&)V}rKl;m~%RhVZ@d*6(h00C z%i}0yDiOX#>Eg;4S}XGy^6@ddrN?Y8(K&}DJPJAi=BaOJiOWu6LAz? zqQV5`HxoE&YkQ{N-#`V#LP}4jF;P80RQUbMrzm4huN&7QVw*a5DJc}*BDxUX5LKt< z8G4~J;5ox6C=1ZN%oBbFw}%ymY!4946LQrn6_4n1Yu-^MTvYTU0|3}f7uFZtnX@-Z zDcqu#F!55LJ!RI*%GBug&qvvbx~1@(d6KjUHw-pm#>NdemEAwNzQy^@?I{TYAwJl* zZ&2X6Ukf0hQ3~>=!AcdYN}=%0vSg5TeK99VlE?#UpbrB%^qCRis%Pd?7F+`lGSJLf=<>?#GQ+#_%494-Cu3H$RtZWl629! zrExh~0o%oB^&tp?*06^+#pV}PX0kq}aw4f55*26OM&5teZU+x1CS38Q zfO~zWf5;dl@&$+lx`Gl-Z zn@QIF(!H7$AWlVo$}>6p@>>1$RFR8ZteB-<2z2BQjzcbT_UmO?;DLoVEanU5FD;#X zzyM`psgD=I=u>4hV16<5ZOP#M#%lvJhlWT{X`%ZclF(*U@C~D-pEwi=tZj%P;3v1T zwPap=-gvQuW?JrTdoLNIF>TbhwMWsEgSWgWHO@8i^cdt9DfC5uSn=%5Ztm^33Kj0S zxpCoV1thcY>G-tq7>QeBg;ZXNr%a6v}K-;Q}ph4rx#T7*lmUvRoyMBopdIU<}%ZKThSUf>!^hJ zj`DvdQ4ddCnrBe&NIH)ijj+=htCss0AHT0uvkWodqxV+s?l-6z&`Q!R{poT zX5DJ?o2JVox)JM(NSNKHZ3CzJ?=DP8iIZ_ptMG-&go$rjRIAe;3sWE_$+e^?@J(q= zq5MeEc-0%nYD=#9oglJ{t-FQ=st%TE$7Eh1iv{QnUvkX57q{uBRABdAz5yEmcW2}a zt*_mz#%pelCU8(Mfl;B$&Gb67f%Nzs%2ziJ2@wiocZ0E1!3IB?Q(aKXp~taVsu`pQ zbQ_1}{crr6%U*mgEM*D|*@VzqEBv;UF!0&aw; z^|i`{LdwuJ_n_yd#YL^K$u4$T2u?Z5zMR{Mh@?5V&~dv`y6%QX*|Y4<(s@#GO^uv<{??r)H7flQ)vR(#U|wP~=6aKdVq56+4N0~@nlbjM~( z#^YL$faf;>+fV`?yD(~(e;#xoG_@|$o>v?6v%rzS3bIC(qtG3dP={04n0At82Nn*j zl^zrb(|R!qTFvk)*Z~#EOPjbm-0F%3GRtGDO}vs_hp5#Ekud2g#W?%O3LnQJJI^=c zhf4(d3+O3)becu&j!g93nX$BG(tI8k4iFOy0EWfd)+EqmzBZH};cA13;Qg9+n?*YB zI25PP`L`;HrUfKbf1k2v^?$$d-;&)1d<-M4ih}Hi3mfMzTV8XQT!wpf8D^LV79I-c zm+bH-gH+I4fOUzi8DnUM_NjSzy)#08O;jvJXg6oMLy{Ubx45NTf~XQNJVh%8cN&#n z@H9+)<<0b~*tOat5Rs>ND(2y7+)a9WB`G7B4;pKVZPr{W)q!wly;y~dxEr4~2SyMY zJP;ol*=r6ybM*`N#b>t0otN{kTzV&PgxhnjtgeA>5Wz1xMqjr8=g$DC)wx}=yhi((<0R0Yph+jA4C^+jr zBA1KKNwE6dcINf1Z#Zy*#a&j2Yl*nBD^1QiRTb`Kg{4towqs~YTWRxvJ3f2xo44Ah z<~kCMNaqV;`c!|z0QXC#MK6|D5cE63ItUYne_z0LPQVVT?{vNt~odo47#O9w#^ zj+?-7c0~ifL7>z{szl@LM{_}0ZyCHcpgv47k=o??OWfc-$8Ke;I* zn#?rEAH*V3fFXlKhIM*IDXLrO3}LPv2pYlT0g~cWItrWP2})gnJmES2>CPfNcSLG) zP*s3Fyye^el+Sh~K?@bvHod+DNxJqR(sHS2?B_YX6}_rH*R!W2u>sypPR7LMhMc)? zQcD=-PPD3 zYT^)U@;wp;%E!gq7_kfrK$4Si0mMc8R5c~@%;XQm40>@e?GrMx*RtW%@a}`DHkqSI`Mnp(x>TjFy0`6NJo@r)i4K7Rj>^f0^RPtR~kV-z;D^RK*=`2|#_CN&h{hKcU`C{K$>y{2R< z=xu$7*Jt4rYXBaJH&q@AptQ(6hX`PDoz_x64mq9-hcNqp*Q`huZvF&zN8P9R=v6~01P!3HLa_qL2oxK&);MPF>JzWqMUM&^ndP>=8IsgL{Ae)YZGLY|Lm{4A1 z+9zXuPlNAstkTV)d6qwA3Ivgn4HImOkZ%lzT(*F?9`)MtMftAc|Kt>G`y#e{MA>2fREnfYb$MH_h96B9HvC4|mV;#kz^wi5zb%)d zn_uz^F;BKco{()>QbQ!2$e>p;a=QoRT7 zV&RX?oLGy3g`17EK}_Y?MFpM|r}$z`Qh5OMO;*ugj-jOskNVpOLQ=f)&iSlefTgPu z8!00@W$xN8XUgy zLp_YQU1E$=pOH1!5?H3<__>b zHZjg5w1G{_n6jfav$i})Q2!lW4VW;LYbcSV;@2UtAu=QGq zC^OdEOVGV2kY}wpt8h`@PpuQ_KMklR+j?XE==<0=p}q)&qzc1Y(-=GB$VEG$sgnFk zH*xu5oQax%b$72!WUU}IslGA>o)?xo=a_L&CTq+$)Or!V!^U12(2e6v_Z#FNl3G;n z8gQLbj5VPlX@89rZRsEY6}JPLRfUjb4;Gbd1W!SkLxLOr@l9My z`Os1U8qk^UN_J}~fj4QyDT4VU$M- z<6ya`hK8BVGOq8NL@R3Q*p&QZ;m%S!T~_dD>9mMYza&AN!vuPlTib<~%E)P}^ReV> zB%Pe`m?Cx7Fa=7HQCYgjEw@%{GLbXU(nf*Ce$g)?k>y9n`gElAdmSwdFgJcvB{XV` zn*$QylH8-7hqM)+tw8clWvCI>j&SMoKHw!{q((SAN{YqY6kZnHaX-Sr&r*mvIVbtO z55koWZ_h+D7oLl=U4Vi&PLG^T=#o%50+X^2n35OOU`S;D#J$QF#|~KMwHB|J=z;h{ zvZwXeYQ@vl+~P#Is+=ea)h`RH`=`KCYwgdxoY4CDtqWETbBC`Z#ku_(K@s*$Zajlo zSogEmEkZ*=DkZf)jZQh}$^lY~?AWR%uOggqbrId#A7&aof*D2FZdn`g-POfgem$3z z?uB*~|7udJ7{~OXA-)VcFTju;6_z_1fW7Wz-@fkDtMCD+4f)(1HA*zH8-_;MLN3_L znEA%(?0|Kx0s~80V;Z{Ro;@V7!h~B7$oVb~Xl|*?OtQ7Ekkojx=p)r4wmbe;VVW<` z;!LVvGk8nbGJ(u|Up|h2mlc%vA8A9nT^*J1kYY3-H)o_xNNIQV3a?IOT5;_Qw27Uf2yR9nA{`cH=jUzMO zp+CFk%3as%A+ppnJk;JX-^FEh1R4w_!Y>8F*SM)aSD3Ahme-cRtWBI1PaFcJHQiG0 z|Nf|?+ajw#$_|u$kt9m^jT3r$tmYRSnqz$ZL6s0zvjrWwYtY*eV#?F*Oyb3LnDM4@ z4OrU1k8>)Mt5z`8os>XT=zT%!GaxXjQ#ziA2t#`W>O65+jZmPKY+5@n;UUmjN7q6P z{1>|D7A|4eyPq2fp2Z8GP`3^~blO(eXNN|gJDzFY{1KD`1uU}raS7x?HR^qo{s2Io zG#KE^{QpibZF;;r(XHE18jxO9SIP{~1*$vSfB!TE;io6DST87_PzSe>9!JX|m5DJA z8YD5{d>L5Bt}@uS=$Wc|R@0Us1GJt}R@rW6*E^rJ=AkMh@M4AqmJ#K#Ot@)ShKBDN zT++J|8+q6Z)Z63*!ZKypE}1qi-C<<-WAL>#$+&%z^9yArJR$ujd0J)2gi**UcV(ig zh2XiRWgB1CP#>pq`v5QJuhkd2$GVob%ikbbBXygoLiMEs4|zjku9bA@ZUSIl3N215z~1M?vfOIc#)= zmd>Qs*i|JEj5J~+y*OB?9xJRXl+D3~AEk+8=K48W@0EyoIYBdge*>|yh&9_6Gn>WG zzy6R4<-~mC*4V&TJ0(dpB#uJVG=P4Os{@KZ|H!*7sMaI=O;b^X%!yN&EJ2ii+<#I! zG?LzE`}9lUz+aesiRMl5OrpK-7Q{yF;I+SBLQ~B^@U!MeY;7epj$MsiSAzP>{RE63 z5kP`iOQ3Y?<{@9ah5N)I#@qY&dg^i9Ipj>zqsbfj@!NHPjzVRMEuBpM#!IAkU*;QD zD-`J=m+#-;z;E``$M=b0@V6FieBk(vUw&m!oqQTqaY4FdVT+*!Y1Dwa%iEl-JeWP^ z+2Sroq_Q?jDgGyiDG&Cy$${ZUd*OPN+#XY@_30UtAi-PVkev`uVj1$fC6t9Xk< z9*OGlkmE}79dGVQ=@k+$^FKL_)XoS;dK_3wJT0%r`1Fmw6ud1G_heeF4Q`r6dp!guXMpzu+ou&2knePnnfC zRXY43>am$Q&k7ar5{m{`qXyMDIY+bu$>tBGo51uBbu;=F>6F0Ebv}z-A?^oFSlVhv zlB8!1k3mXPiaPk>98XHnv$3Z1U%yMC=&+Nol$Ltv<1aj3h9Pj8aTScT^;A`hY*UHk zPWhaP_oIs0J&CDJnVVgzBuxx?V(y$|o*7k&;9B}q^^c8^cF)guoYipjXut6VA)(e~ zzMPnW0hei{_&VRAh2_Yak)el+e$o#SGk<<&)$}qlS;$0~Ynetrp3$@47$cL&%{5FI zWg5-?@O+bYx)3RjA+TU z?aYeL^Z#*NPK0^|N?!aYB$NExW#s^Y9yj>IWMx=Rl18YXuVKt3ywBcarP)DEn?orz zG;H*Zu&wWlVQ!! z1UmoCYQ_FO{e1KwadQhO4zXtFMFDuh*-xN-jY~_gz^VGPo~*5lJL(Tub#de?W71+O z__q(64v900aQj-(J*BC-iQ_@w>6jztztz<3QmB-WTeJBAFMQjYOSXxL3?I~UC=2$r z-t5a;tE#%+#^GbKY>ZCiUahx$Gxq5E)3Cd-Y!)#wn2Ijibi>Ze8#mJ*#;(>QMAC4v!U$~%t+aG;A?VRDMtvQs&dzxpZZ57q4x5yLqBjDK8uN$fTYilIhV zaW@rU0RP5jis455n*oDgcr&DB+p1@<23eqM{E>A|agS}KOETV48sa(M@23hI7`N_e zyin*?L&ho~`L#-DE^-mNm`GaNyjaav1lny^-=IX-JlrZO~=}euw#aS z!g}Z!f*fmGcf8>@ib~0Z+P%Nljqy0I2BMs_nog-5bj<$rja4s|1a_WNSO~DUDXETs z)G7n%Fx@RQ`Bb`C5IfiMOS+%k22O`FY}F(!MDdD((NvTJm&7*o5TM@&SbqG!gv7C+ zM$U}{OU7Hj7x~RLu|xPGRs=onxBt2G(htgoP__uf4b650&0|#%W<6#=s~?TH2DZuA zFjF3aac^eo0Db2l6Kd1FDO_0HQu{QPbe-S6%b3X?bztsRHx~e3ScWq4(mKj_BP2!JlRA+98n)f=UlMhKXDy%r|C*a@-gc4C zRM0dCA898_1GXSy%-j%e_9gS0vZSE_*ou9q@$jpa=2EzD(2ABAQ;?H>|EY35?-A1d z5o!MRUOo7m!Zqv|KO;E7vg#rIEh$3!1KXjo*L;Q>J>mwG`gOv}Mu@{y^=u(nbRi;E zDBF8Qj4KUB`e_6csdFsl!bTUm3ZJyP?}U7@F+35xdz=#%BlI=2&i zNT5b;tZB6FaH6*~HmYaTA#AqaNN9EY0ruLo++ZeTuJ6#XwN@06HhdR*EZ1@p4}>j; zt{EwT$>+f8-h9_bfkh}q<;M=NR4|=SPdc+r6KAVo{xi!x5xB0qSl2eq-23ZeB4j`` za=598Bjc=R5(@mM3Hi_=2B`1Ro+2SHI~v7vT5@C7KW`NrT0mRs9WHDH`4Jv)OfgQ7 zhr^jiUdf6%=_*`Cc3q`^zAp-0#ID2D_Eq!V&?MdQwnKiFBNbC5>}n-<{>aoBFHeFFfF1t(Az5p(Q#XdB>AtzVRRiuqr?;w#H*5B zg>U<#JW0m7=I1)cc~|uGiT(65Q69#}m3%16@9L`|f-bBJgZIOpu=S#CX5C1XXO|iPmlnx1a9vtCOBNnR!^`5zI?loXZeHIY^6P z4=9N|R~WxZcnK*oiH)_vko4pdgGHu5maB!Qs#AeMOZ^UDi>cAvXpUVZLAjQNfb#q(=MNK!%Cs`^`v>?eA8M%5kop=cD}!-~0dCz-%+ea78bDbj;h_|2r7lGO ztVdT;T!T}p3>gX_Kcc=DKzRKji!KUs_hVNDoHh49zT zxjJ^5jK!fMsduj!bXX9)R#~%MkwPeiT)5l-!0g{fkmcHdk&)1gaZhgG!q)7oNI9wIM5xo*S68A(--jvKFHUVT~p>KZOR6OCRR zT&?FaaDkVA|Ik}3X%%ZC^JZx5#5!DT$JS`GmMxD9*_=)2)v%whz!fI}LF5I<>gQO( zE4}CTRW4GHUD5sGfXL5pE5l?L{WVCwcl=@GfYes`$J?&dw z0icJjs5BF{zyHF+A_k&Y)wR2muFN!cxkfzMLQ4`9^ zj%Ifc=R6PjuGZ`}Ygp&sQY02p|~A!aNs-gpy2 zk8KLX(g&zlHby%NRoT(5Nf?F18uXMebS8)J((sCtlyPuf_Ekeoq4p&Y(=C1 zeK_p;z+H1$xVXwt955g;pm#j`DdBi&5uiucf)NfRvGtB^j66m~{n5iMZVVhcAV{Gt zv%J19RPG6^YJJIjg9fy92R@s_>R@D~4_k=LZkR5J%v|>V?8R+H9f{M=^F@iGg7+9J|_X z$FufOXRl@_L7bMiKU`>g2t^YleumuC?;nmwKkMH7n-ijHY*ee_WfCO%A^1C-`uI+< zpV3TAB6r#VDU#A3yxsOF!(eab!;i?ZP$lTRV;hl&OveZG!mcG!D5+7iGy@Owi&OU; z`7W&gV=JaRFGa)xE?t2>$?RjjEiMwo5iTkC<|5kveJSImZ$$1gF=%EhJlV>&Z=Ohw zrPi2Ho2vy0GT+QI5q8M*|9}f8CRM354jYBZRxA9;7423WQ?FSb1+GJGHz(>xq|3+k zB7w1TX^UPR0|LTgac-)qc>)uL`o3*a-z{&=k4ONhDWX?{bsb=&HEW5Yo@=>tHmvND zKoUB_zDTpy76<@o-+mvda;Ezw(d|C*WKAwc5W?SxMlr0Gf;~f2U-_Ogk$FM3w`S7muP@ zJ$!-~;OQQT9JX+VBwLkv1gl6`9j;xS*IkI*iHS1Xvc$^SKvi@|UHrc|3n!6CT(4YL z;E$(P!})om7s2C2^JSB!F!CGi1z-LptE0SX+da~_v_eC|G$kN{JRK=yVyJ(j{t&Ae ztCnRjIBG||x7CZ9o;Q3@SxIE+781J0R9x>;2a9eiKYZD%)_%7q)fZt)Kplc zb{j7)XS46F@VklaMK)Ma6@D0)NQQc>L6d~)j?jjn9){SttgyB?YGFlncdeP+LY(Aw z&*Q6DgZl_HZQM^!bM8(=P#z(PTb`Oqg+Jt`vbO?bj=uNJK@R^vYK5-754*yE6>HY* z21K`7LZNIJii}vQ%#qG}vUsF7izZaufk!>6hPi%%=wOb(FVdScuRW>Hh32&5ocnKC zD9)_5lzhPP%Bo_Xp{)^YmC?7Ck9*FfH7j6}Sk13E^kZ0n^18@iF*CIZNvb*NW90yzfXGS@9S%18hm+ri4A$GY<7mR4-FZ!&0XB{zd0&SD2BB^(E`9w3>|d=?KsOQmPcy@+v|?~}qlJUWWG zHJI`3xX{RfgeL@=v46o>WzN(}Q(%nF^Ql<@r*9;0xY_Czed&?cb1Lnvw7Oymv0hQX zZGz4@4BHaaf%*E7S{u>xq=G6D}q64c|G#D>LGj`ot)3|ZqabL8bgtkw_n{ea+-~DpER|JjJb)l z^gctrPq`j1hbuJ4zp7+i6L0ZZbU+gL@Ob}2B`V2T-%|*fdD+*; zw|0(+N-E)cRE8&6i!nf)|GOIVA{+W#c5{W^gmUVth8rUT-6gaG=7AsH7VO<0|KZB- z;QDS%6rb7F>an|BXt2n9=|;6n`G7Vlc9G4O<9pA3D%;8Q%=;%KuWXq>^3CBSSF=ak zdN;3Yo9{--YlJ$}u~}nKVSO_DIS3BlBB-DrP2s0$@a;p1EV9;X*ocWbn^2(3;35c8 z6u4b-O@tKVD*L4Zd?j<4zY)=acdu1Ak39NIBV)AQnv@i+g6?xQG9}*ZX=KTK&t+*^~FN!;KNh44L}$Wfs0MIsftdD9*bjq@Kx0i37{T=wlTNz+<8+ zl6LcoRkfVMub#~dTw*+X6YG`xh3(ibL;U?YH6k?GGWYpPmMrI`2ldXD0;x0zMe<|= z=NwbD83DUY)eqvjY#o^CsPr~#HX5MjUnk;XF!(_kD5V^?9=F3E(;Nm*W6Nfmg9zDP zQ@v0-Y0L2N2BpGwygvD!L|6iO2#8#iCiZTEE$BoN6#V;nXN!NYku-VIujU>e#$s&S z7BaKgl4|E3=vhEDeJ-HWb{1$onUFrL27C$sFg`rTzhENCLWMk;M>=dlBk>c&b{IO* z8y>~u@(E{UDd|9G$k}27`ZjCrDa88~W`fzRufovgW)YV~ z^c*8TSj4L03H@RZ?x&6iXA3+0FmP8_vCB7`MY8?JfggqJYP2c!ef9d&Y6Ha#G7_Et zgedB8&OWZ)9r1B_=>#}AKQ&O9&E_2I+&@7bCEs7?rxf!GBKh&_w>MbJ8nla(F8XqE zOL8Dtw29&@r|K?0$A;+7zQ%)KA`8~18Ue9X(Ygso7b@R&*>@h5SU?ZVPnbMvc7OfGcjDNPf zL_bR~up813E**#bHRni+k2aEQX&CbxRE~OVri)I2{4S^($iIQASdKCB#`SD0oAJvl zHS~1un7cr9GlBiL4+;R&dDYoQ|Dp!}wb+iPSXb{bv1-$df{?(B4Ot`fcx3mJO-@tJ zUs(g}nFEyMmJS79HB(aguMdzpz(j!LkFUMi-h@yy{Eig7hDGWIdMwRYRObad|%Gc+%y_r z;x#2U4jl$&bIr;GZ`e#%q#QU;^{{>fLPqX`G_{m@9Y;)R-Hq+MlWdq%B(V-USUuuI z>hgx!xO(D>hLo6ehCowx)nruCah*$d@8GDiXs<0$sP5L-G3O}GU{3ezr^5Nt=X5vj zKAa~4@E+QW1P;fsgi#+tlI!=3kBJHKMvCo7#-38s2KA1f@ zBwU0iQC;Awlp(9wG{nFd+`U8|q(Yiun@ilHjD0|SwphVkQvbXFdhWuL^izr7&Qq_U z%+79&-?##y(MZA0q?f4v6ewPG_k-K1if#T}e+K_DLUmu@{ z{6D639onWNd*4J{Yn110dY$mk0d|v1&IPPx;NnUr@h~8V!WyW z3c#)^{#f58jyJSW9KF6sZJm36A+Q>QM2*mr{g&uHlj;acBhak!pzSfaFu~@KlPmOO zu6~V6qmgPY1_~5^YUcj+h@C-_;OvEaC?yHV@U80!;*#SO&|`=K+@G;^6ffS*U)m#K zRz~b~oSmm`Q5b`f^wvV^!2b6$)dbxd90;c7#C?DcsXK4Qq1bzMIvnwbwxH%ADZLPI z&Ye4KBtA)9G_n+SE-lYjL4b_xG-xd1X6k0aO;-oa{^rbW$nx8TX#)xy=cYZ85Y^F^c4Fs0z$6A2%6#!W5A;c6T$ws#x|8BL8mc*u zs<+%F5nClQq1m2OYS2;3WVkJ3JFYVIb&s%zMo+Cjf?6Sxab@1aBmI61wZhKgE)LRVdp`T64G5-`0o2I;4++B^gj~h> zxWe3noU;1vnHZ7&!WW^kcI!pyT?|p&2}q^Q?Cj)h9-I2ScYc~GtSjB1Eu2U9dW7R` z0nAsfuonLa7$UZWKY9=Gq69%HsMY+uzxxK=?W1W@k62Yp9?kpSjL~NS^9s0{)q&__ zhQ*GgOe;Q|MHQyJBKSc#k;Ik>_fzl`Pq4t*t#4i1=eGtC^xmE#R(ZGQ;1 zoGLXxXgXX;OwrwDzEO|unw6=`bTpaJDx0~ZU^*2J(cBQWYWv~m7jq3wv%tvLj3dLT&ti6tto{+>6HDn0}W4yh5 z>mAzROI(^eR&{GsNXr{IvM<5w3)F2a6P+-%NV_|m%!?@PvVZ!8U~2TmVgGn`WUYn;Zy+s zKLEgQXPAcY2;y%zTx!F7`FZil#duj{iPItVwEz_KBG zU7|+(eBO@{1I(n53P*y7uR|jpr?UVcoQ>;Z|EJNQIK8yDWs>nL)O}UU{K0eB&@;%s za3NRsq+zo8G3YL658XMfWIqFbUmMYr)-RO3)l9YLe4xzXetWs6XGX z#sUI^PY;3n;fe1T*A6V!g&t@nMz0W3Z^b85yzXjQ`-2PB-rf5@Eibi3f z+32QN3z?KT`mFDca*=|vo%Ox@0>yOC`5Nw=G7gC@7a=AX z+9Kfo9uPtbp6%QLs>FWJM2sA#HA{9DHYY+}dY3}&HW~?6t%|P_cO6mImX%PWvVFx2 zlqO4!MdlLO7_ALFKO(r#m{3j3N3^L0O75D)F4RMfz?ANKWjO>whl3=S>2y0%5tu{? z?i24t8RCI|K?F2RxWTxT7E8*x{&ftZBbTE{1Sz@@a>(&gqVnT+gEUmB>R=N~j}9-K2P4o-a0Dh97~vnT>PASKLfVzGZjp7Y-v(93%&TD)qhqjKHKUOw2yq5GvkGr zuUJfyy=iieBdPuCab=9il<6mbwE>{x-_9n-jYAVeSA5}yGN@Z#Y?k-c5heyx=&ram zKP_fMh6R|3-tLnRRezBXIYWHbW5Jxd{s&cmFI>UYy8L1Nt}ytklEQ_LO{|{;nYz)6 zkqAcWrbIS`vcsr%WU=?P$e+M2Q~fciw7{(R?5akGT3n+($7^B`p=hql(!&eC`Up_B zkjiMgu4r0l;11N0q3}KbmsYU=I-i=CncO_9*9BIIMo^erV#dWsDk>_YjX|(8wHj3$ zkoqQdje+#2+9rw9D~qz`ych8=U+am`B3f?3Wn`GZqIFq$|DOC!}k zWk#O0KTf0g=7)z4QGU5N44a*i!Ww(2Wq|RtMa1G)0TAVbhkqrd`4=MyBoLU+o?KwX zI?+@YJdW!i|I4%EnQ}AB$tuk?y+ONmp}Mq#ji@;^V@Agh&xaAblsERVA=&X=SNAUYGJ#LL8AvnF01Q2N}}sGsqakCJ&L~J&7ZYO(U=- z_BPfFiMlVrVO_Yffwou7Il zgM&<-FN_C{zyq0XW+Y<#aoO1jHUOI~^?-aDuGW?F=pJ7v)?g)PGT0;;UnoW5k(KRB z5O_LW`$;Km{i0nJBJP_r=wc9O<7&{fP{Lxw+!{fHsrzUY{0}oME^AzcJPN??FX{@C zm$xq%{tL5ZPF0{a)S31-fG(Rho@vCb%fy3HMdp$~+C1WBi*@GVA{}MlSXIPi$rX(> zDVAD9AtuhURq*o+IJqdLtWm?7|Kyzp-UfVV3CU*vEW(Pj=A+8`MXbyVO-VE^E{hs1 zt|~KZF1uCSW$caW+Z_56d_)w^mO%M!3sy-LY<^tBqOZusM}adke}q(SX>D<)a2<%E zK1}Xa*BFT;-v#i2`z4|wlG@7Lig%0j%5l5EmuPnz1(-J70E`pd*30#ojlD3mpRBQ@ zr}`8+wO!$`TU2t0W$XanjrQ`qDUg2QqQbQ-#i&vy{`>7()YPnaP;9F(3#K-LIp0%2(myaYqsS{y^dQRp16Xh8hCX3_Jj+-Yy%KsmK>XaAAmcvt>` zG8HpOKK3Jk`{T9FqQgvq{|krsdWCGtr7R05c&D?!R~&*p0Y|E9c_>Tm&NMlt#3Mo& zJYiuh%OIbHCB#Si*{L%tLu;=LCVBLzh?fnPt-mD*JO|F%jYa%EBCpTxqng=WqW!+y zTY*`~Xwt!zwAJ57amKpP7+{v!>2v@DO4I+?ShywjYoHm6Rq?Cm4Uh-BsKC}0c9A|% zXDr;YbgDaOqM%Tynn_rPB+`e-UqvcO@f!nal0-X~BO{t5+?zqG|L5Hna;ro;bP~Iu z*t2f+p`ic<{=T_Q`xnDH8sVkiaPc?V*{5|XM#5@lDU_i&Sm1XMTh&Tm0L54Z2o@kJ z_!&Lhlni9o*5fHa!c(-Xfz|t01V(5%YU@E5TT`wvlTIHVqX>{XwwvU(@`cHCjIXhI z-ZMRJIp&3B9OU#?%2m;>m1A@ZBy}%o`$2mxqWrcB5z5n!k)6(Tm@oKox|OQv$6e+3 zmkspFC-2a^HI2$%vLV1;W^9y$TXb)}X(M|G(nF ziC_A|IFd(T9B>+B^_<844W#Ek23eW?m(3lj?Rp2l#RBDRNN!vIYc&t;0ece??3>{( zIFw(;BgHB-q{jj+h>S;4mt-G{Wc+_`P%H+jK>$CL5;7_Sw*2eIinvyMdL#8TlycUy ziErflI^AkV#fJYD$)`&9w1448*_vjt9&T>;TeW4Zi^TriJTqsaK*y7u#ofY!YcC5| z^vp&lPx_^k?V}RkXVl&(p&0|IIXzDY9nn!|5*wXg{TgrAEVzxDPPlCVpP2UPrtt5$ ztYK#iM*FwE+K|x;Yg*nr!ZdMcavxk1fh|7RXiIhoVVy8+1nLWz&wCfsl@u8KS%4gG zeTB{M%tagI!Ryt1yMaAaqql(L-UELNAySGdecb5alP*DxK{kgH9$GN`CbcM-CL0Cm z6c?06zNwbx_6;^nTfkA(VHKxXKV3n6xG?5=4Umu~G3cZ~22}%MQN@(q(ZgipXb(!l z+a@VBMAxHtb*YfT^;i$WmwR=Bq$a94mOIWsim6Cb+A68yXj27icu8tj^gJd~IorwY z{ch*Uo~-ZNpEZFe6azA>O9B4_qCS8)S*r408;u%AkQG$)2&-2j=B$xC%hE3ki#$dm zK#B;~>Vn!BogjPm*TgL4;6w>Y9pxH*)1%@|yhSI?qy?LT? zdG;*cKga5i4Df&9iUSV|JbihTr83m_El)U}LF(eNMZ*PaOwWM&Njrl8Vesc&ZuaL{(%d!b&6VAkH?^Ql@GAe9OR7|01-Fp zGDr0CjF|)M=2?spnT&)#zWWA`<9{cu`8T6Je_q(4@i7>j2Lu?3i+~9PD1w-v!e1wh ztx~_`!@d)G^u8}6j-d*VooblMmXui=B_5P?@R67fP6^h(!;S(@T@m^+5kck)y#XzBbK|K2<2Kxz2o_xijluFdFpOA+2# z@`TC`;`gX}@{Wvr+GSmXo#Fjg&c69mp@?@|D)kL4KEd<{9Xr&zO5T%?pU76e=vKVt z^KJ1-9L8`x<*1s66pVR83CUxptX0wcv<7MJmK$Z0%lbu^$uj4QH&Vv!xSENBV_wGLh~CAL>HTTAx{34ldc-FAdxd!8IjiiowanH z-}co4rM4qzO3~MOYqyJ#P!*%E@ATf$|LBM1RxJHbDw_C}eHfo06{6M3MJ9bNz~pd} z!Un~|F=|2QNfLa%(|O=KRlk9#CG0F?>Veb6t!-9RCR!udG7HSE{&6#=@^FX?NPdY zWHc;*f%{QUff*F`y4sB8r!^q8M>SI{3cJH*kjedyg?C##ASC<@)xxfDoy}A`o{fO5 z86ie6NM-0D{HU+mb!v$Y*~cnN<-a(b;@^p*l>{O(0Ge-;2gT0v+GWH7OF&YpR%Xq$ znM`ej*gpGm%N#=s%Rg4dGV4(TTSUF`00l$@?z971_?PSx^F^$@0=k!pBg_qsvzCy_ zR3&==T2#gl_8b~ug^j>y&>ClN&gO+<2l7Kod2X`!rkB`%Uj|v^xY1~Q0rLM(CC{ZJ zpJPh+5_RRpjC3d`_+A+{4Mr>k@->IZ-r);kNR!1Y%8Dmb%%|SJCp1^$E z>fyhMaEmBOmgP6#JyCH)&Ep$hf~W$Z|C}Qn+=-T6BE%yiyGTc=?0eyg#>H^8(Ln0n za?QLXCSVw)KLE>+jc~}eo87wgz~@POaq7T~=?I_|67L9lriqaCA?U=%ZMSG3VS)1q z$J=Y01Zo!S+kFt&9P{6m9U1RQ5DRhN(kNP5!{{^s?X;9D$J&PeTXgYMIR|iIq1v?Z zF(a;JxBzD|Y}py1R^24S8WLrj*R|7EPw9V5?=WBN7|!uq=z(aPk{xW4vwy->0f0_Q zMwnM2Gm9HOAThbNXp&<-Fje5(zXB9+lv$~h1vope$wQUWhUrsb`}-XeStMe!aU}6s zKg|4FWi?PbcM~@%mW{WZC4w#v@lPZVhE51otqFv=zsOu#L|_WL>R~&XU{q2O-O)i4 zw188IUDBMNY#dq;NRS{4H*o)KKWdYG#D2qdo#X;SZWyVqJ4Uqu?_F3~&9^3-za+u$ zNu14DniG8?iaZmj-lS%8#}QQI;L^s6UKQ{A0LFxa=Bjm=`|Oo2ReqcrKr@@Q127tD zL!g=|em_lv12&)FxZ2_6WxLke+Ej~O8%Vj`YCji7fQ+tRZ%i{Eyh_YTr#_!u5|ck2 zbmN8%!1hg|<%dv30s*xTj*klp%G*RpR5%(15`IinKb(F-?ReO9AonA*$<2KpTGxm$ z0|obNY#<4>`MS<1s@_cik|K`0Kd!!f=DUyd%yAGL0!{rBx}AP$)E>ZCP4rL-dtzV7 z)NNq2M-$75o(N$T#EgYQ=AOXKp@RgrZW{~})6Z60aG=n4&SXcqZ~(Sb21*%Q5Z6zY zkY7HG!m}dRO0?3B6}?YjH%YI{2X_J0v4xuJ)1i$ry^R!BjP%-RR&Z=H!-+M&xS>Ah z{@LD0Z)>9Cuk%Fp+m{Y*VB+5Q+7g2g+`kBaOzXT)tD*?j=poj-BtVjn319_zkza%H zmFq&ke7zTa=cyziH*U|4sTKfyLdwyulm1EXb!tfU1i6jK?pK>{pVOS{4ttoq8UcoX z#SJ9E`2|C5i~JC z4P(1Rab-6)0GP1|F(gQn0ht;dCk)TD0ayD_)n;DNBp&lAqN9JT(R0e-I`{Os`T^UVF?ha>}Lpj!>!Hg6G=t7p$lLka@fF zbIao{cfvaE;)hL>y7SK^NtY<2e^L{qqiHW0#E*yS$U2mOXiKa|;!neF!i0Q|(ghg$ zf|FjJ#`?}jG5DOhSe=&{majrE#mhIM?BarPFup>CnjB+lCy44Dw(?$>Xx?O5cESn& zWmzMVd=HpE@Y0VzIb*n1h1Rz|On%rgC{&T*cpO?{6k;~^cJi8K!P96%hs@m1|L4#a zPf3=yB<5C#5kxf>?T*4l#Nv14!8Uz&zLo6^dAM`nT^&XFBzlruO>fn^%o&-^PhIp} zXfVW$uQA#>u#;Z>argd$V3Vh+p_KvWi9)BE>&^K58H@%fMUlozGy}BquS|5#QDQ|o z#zIhCkq3!ow&r?Pc>>$F-Dp@s^hM&a3Q3y;k1as8k-QBbQ4bB+8~>|Gk?+wFMjNJ- z=RWrNb-;0KW4#729<)Z%^Z|09Z{#Ln4^~a9Yuk|T_nMCu8A1ij+~*4sb#$fdX(&%y zG(K0hd2vb;y{Ygp1wS<2Ky+-M&XX1*XLJ6pPR3GmSd>E0LW{ho&Q;e4a~VJvL2=XS zhl>af;uuF0W-ay?#<9jTTaCqV7R}x2t<6Jn4p`ksA`n@Kh9C9pN`wja3X+M^mja8% z?@KdOi1IA7EmY|Xp&zoW$hZYm$ILkhzzp--gT>1P_Wl_eT*21EJEnVuNRTFyH0N%*P z<++~k1~Uy%b!Esk53tiS9fm^DJPLG^uo1i~D3GW!k^ylRN`71#G6xteu!S9bB8c;Q0xzJM)( z6A41$bO*u-h~a07$-BwD%m0Hsk_JKt=E8yAr;4IRe>+zIAOZ!0>s1_Dm&{i$lI~x1 z0!Ml{z^ymTEaC8SN4>C?4a^I!AHZ{w1Y|4m(l5LzqAlE@4H4LEhPEbCu$Kc}^|eUJ z-RJ*Vi~BLNRv!z2QW9sJ@pNG7OR46I_#dZStUxN;|d;WOGK#ja(?pWdRmK z({Db(+Ef$#>7rAab9DLTqawaMp_JY@^aZHUnWJrcTy$NN^{jt?Xg2& z(weBjv@-hslxr3x2Z`)HIH8C}R4~axV)+s%ewka9o(a_?$q9(zIG)209*@1M3^-R> zm4xPX@sj0#KaH$`5E$HeW&CXpF}<_Whgx2KQFDrDSzyN+EPu-}{USynl$mh2A)}#e z+@beyC~6RAME`@OkXc;8(V2e|Ic1OlgJrvv9k;AdxY_qT>kTVk!E#KCjXc>ZLBWd8 ztd9H?t{gp_=jVH@(I8SL#`+{!|D#deane_j$tMeuC@vyG+zOvPVt$<&ew z6E!fMh$ZfoF3H2sqUNdxF=&hnW@m7Y36S!C?!^Jj3u?JZ5V!RQ9la3@2&X;{ZVy@x zP8ja@{q{Q(Sl8o-HHFnZ3_O$JuHiXA;KNh5gFhR3$a8NE#vvJ~?+2RulPiPM4(a@8 z1vhi4<2~X1I{uPPQyO0<&rJnRR#VQibl@1=*J|RPyx80ZA;>J#gunavMu^D(S}^SL zA=B#OSkAV!u8b3BLz4;i8+ggY=y4ii*KjD_3Lp|kg{lr_4?W^wsk?3_vuT3O+Tkmk zplFpXz-C>cWjO$**}$$KH%|Vh{`W@&8mGl+n5iYAd??Q=yI7rS{Z-B5QKu8RIEGY+ zi5>X?_MQZygTfV-5Cm-H7U@T2AoK5K{k41`9XQ>0!n4>Yk>bNwmD1vJG z*H87-P)&H)m0x#Me+*?S(jEFwEQ?*Uav6F`tIvjbhn| zB{IOXM_nP&5dnC4bhvyZfhd>6lU%h%vG5C9mlSKvwtT{^Ow;?a^Q0gBu6I9btMFY# z9k78Ru4`vLhKe zoEL6RdHP*M{GASVr4h`N$Y90!s>EjAbC_)!BR;g$KFw4@6TyWkKg0i!pC>uW@N7vx z%pO(Xu`+#1qAX?8Cc_(*@(SV4;*>kGkxHl()7CRf!>(&Hq+t%cuSV(Q3Hxdr9R;3cBI-|Cpcf``_(k(9Pj1UmuMsDrxGWJ^n6031k(7JmY3D-dN# zi&C`}v8uyW-EA1F-AfH#FV`ms9+k;8>O_2K*Uxb z#ydFI7pwoT7v-U}r?%l~*HgvvThY0uGSFr=8g44rc=fjOH49Oz#~MVDc!e7Rr%Xj3 z<#(8FB93Ozpws%Ym)&RYgZ6@(Jv-r?Sv`@-lazyVx>05O!0NkeAk{m?Lp%(1w5pUQ zFn8X-B9VN-D&di8mzz1{96>~j{X{8%C}m4lz_~K_E>CBfDYxkJNh?0i7cCWlFK+1P zF0P<4CipF7l~31#?BXR#u^{~cu>8i>R8)P{kIOvLjZXVzrO=3hz*6sVY%ev3c@qyn z$UN~)5MQg84VoFaFCNPi)5aYMdx?NzIy7na^Vl+q!w0Q3aG(EzH}By&9+RIkGKqy)7o_ z;v|vIaTE%0yWOsALCdU{^IA5qhv>-m%jpx{HOBDU0iH~|pWF0m2XLV{FNJUb;ZMQK z+{zZ86B5hWN{DE;cJas9K9-P`KOrrrky0@1cW^AGib-hrXU0Z#MS|-Yj9gF5YL3by ze@H?}6^nicd0n3h^;e8_zZHXz09Zorc92ObCO3l?I7@I2_3b0`oIF;!WKwXjDGkwv z3+1VXc^1+hwi5$NBS=UR3Ttz{f9!k9unaXdNOmWBT_PvBo@RUsMbP zsNHu4vlIyrI2=or4#)w;DJl!32-651e*wT-&-Gv<^W2=pwplsfUn?sz_PQE%aiJ(T z|LRn9Z?&B4xFO8O!a!0MH*PA-7lqb0uxrFX6y3gZx6u`N$Df@C!}KAAN;k3G#r%ZC zdyq*qJ=Bp_mpYek3V@bb|Kz0}xGy^%OW9C1orp!lZ3gSu_boSt?6}1dN|Wz&=`0vJ zLkQVFCv$e*vf;;JFJs$F&Qby=1`v%FY@tFv3G+q7f)?#wju$ki&LAXMz1+bK{+79n4P&Mwd}1mK81)V~ z;W#0D@DR<@(*L^Zv~s5;Xk+EiS$-5PN~g%B*n>ECt1il!1vx=n`^r$a3z=05CWxH2 zt-+$l`|oY5a}l`7DmSy>y`-;8Glv6eEI$Rxvse)CBRaq;K`s)}ea-|}o<=~l)dnFC ze>`p|{81hp-wa9=8P~)u)2MPzsmA>4fe9{`xM!UrS}-YEkMX<-qaAe?lJkI;~})qU@F={W3Y9429|{*=Y7Yo zf+k7xK^ze%N_jC-o*E7?u1~*G6-fcv+&wS14<5)9HpRu4zwVgaVFD}j)_dez(#mGh zdnfkRo)Egg>|DFKGF^TbHKASwv3k%dnshKARt{i1Js;VMH^zmT-Yu6W{Vx!m**v4s z>zWAs1^I|kD=4V0bU(oqc^~+s1*sKd^I*k(IkFt{J*!0F5VE@JJ22fh)`8zyYsk7d z^GF~{d-D$xS+m$vhHc%yzWzSKb!F9>+C%IfUo-20$sfU8J?-`J!R3|A>soJw%P9U6 z_>7K?cPc(%N4H+96+r?0b~BZl#(f|{%LEb!7Yr~H<-)BOF*57(#1&##f~1yiuw1PO zW9HwR;FHiD_6)v?mXSO*v%*zLV9J5h`( z084`x^JsQdz=EdwJ3u|QHxm$plUt-@^pfo@)Xb9u!IS0Lv%ci8lkNU%cWqADfG&}U4;Lqv;B?_7kN=gyS{ zwfMljs;nAwbE`cPgqPsbT5va=ZSFT{58UIwphfPo?Lit*laUHodsSpn?b;~`2&&NmySgI}C{MC{BuP?!aZpuIBKY|^I za4Z-?(E9+L3yOF#6$;UDjI)9^rpa#iCBS@Xatv6<-pUefMOh zKI}u~;(}Y7T{?slj+h74yT1Mzt6e`Mr0U_4Ag#yPn)cuAQlF!$Aa~%hSLabxdM1Gh z?VX{dhc3e5PQ5!VV0YY|H6nljKj7TryR{|DN4Dcj_2kdGg%$W$=Wm zCV~g!6_h2#o(4hN6LSJPC5TQE{UGyt+AOK$RgS4i`GVHhL)AFXDa=aJgdkudsHL_D|$#sCq5wvFf!xR3-up}$w~sy7E7i! zpSZ2W?5Fy9wP+0nE<3>zk%WUWrbDA{+C$y(>=n(DoA4_P=!^;LgQP@&N{M&KM&aj8 zf8I(DYzU4pbWY2z&QAmQpX8N)cI~IzHQyUYXoX{ z>PO}Zwr4T4z=_XRdjaYrybRX1j{K50emLzEn}9jH=9|`(Owh5p1=6PSFUqg-`34Rv9O(i|y5o|14#60ku36a$6 zYm*qR-p0Ik936@f5xh43hM5^V=AZTsRgyQQ=t42Uc@=DJa_}bbx{_8$qAl%FyF+4| zI(U#ayokRp@T8eTWl85%4p&Hc=$FGnyuC^afU|KK;@}jX zp*9d7Q1{rX9-%`hO}TTNyFLoC%W931&e@P*EcObPfk}hYX9P?gxO7HyH1qiy)78%J z@Lo6;w*lpPdcP$AY+)q-(x1&kU+5F;k}nK)Bm5|PF*IR^I9ZIIuE}Lt(x_c35679) zxyfT_dhd~U-~Pk}Sgp_A!ML0}&X`r+K2uK_i?Q;8IE_&ecokhZ#GBPmd+f%5xsoL* zKL%x)5u%ub*>HN|<8b=~PX<~zxzaD3=NPc**_+qMer|y?h%RQ39_|q)=h6n#ybYtt zp&{OyyT`=?zBdk4Q!#aBu>nvjX-X=N>AQUcRjcxs`yxR`g6@Pxv*U9P_uw{7fiyV6 zBMnZUG}is0YwI4`1^xD6+|iRnh@=GPed0sGWf)G z(d)M5Ln}e(;5zfRIi&EJWmkhu?#aT%K@|Pj{6O1Xe=Z(PF;KbG*lQNwwbHv;(ZKP= zhRxC}sL@V=A-NW>1pwQz125S%zZd%tr>`pQ?2*P zB?Bd~&DKV4qJIN1yHv_w*1z}~upxl=dkI5%R#VdFd+-qW8)mBKhE` z<{S&Pbd#TC38LoT6pS_~%nx$DdEwH_y}3)Lx$8p0I*_-8zt!;6t~}{`4_8e_G0Irj zd&)m`?ibl0@@GA&Wr}2v4;>q;9t9PUpobccG;3W zXs6E7@r|dc-!-d#@WQvr7Vym%0YC~6wnt>v_yRI(2{KB&Mep3s$2H6uUgVyBzC}8HVi=kx+T{{gP9a2k)6o`wr}o8TL5d!_u%oXa2gU= z)pJMC;3TS+1PtUPL$Tc@o>YIIB-y2sLg@Y_@4gBo*)E*^{6QTUr|kBAO@bh`{k0hERwt={_8j+OkT?tD0QRhyJHSBoGc+<06|oH_6b~ zE)8f~N&sWMJ&$}(KMLk>k_&EnHfT~3skCGk4~sRu14}a)LixDU_pfX^5jZ_FG+H{d zERr*RQ1OKehp-mTHg`IeA+LUIEQSUNo9vppe-K0)0Hy!125u}fh zEq5!yh1Uz5e+{~I&$fv7ID8ve;W&^n&u;R|FH%DdVMJ9vs4cY33wGjC2M-vuBt}K( z8)0i5cz`%}MLKiV+xJ8<8_!n<1y0PDKK!ah0XO|ZHaJETuZiSyT)$QhVyV|?DBl5+Thw46Qz!@W>)lQpU} z?ut!lnD=AmfUKnbmLFJG2YiMyr|cEuQed$g*k)Z3OyS#d6E^URq1K-xM}joaxl~mG z#iqJ0W>#4AEZmtOEo%MCPISwg?V?-ROi@Q3+`z|hzEsHUa#+fd@igkS_7_TO_x;I- z(!+DoDe;{mYMDV7O&@yhV`Qmn&C37$h8t%v%uvbp0OGT_3I`I~6PtyOh7rUfuI{>& zg@LG=_^LO-Ok4^>XFqAGu?$TrG};Xng|9EPA>3Ji??t_!Z6@p~T7;oEh@>RlPef4t zNWK53($tr$4!a#PKiR9Z**)(`_6Ls0BL%kt!9mpQy<0gg+kwgwLDu>#h{qRv$vV>? zVm=DtT;E$|Lixn#y5=*{>O=S1cfSYZpsESW+x5~>dDQC|=AlLEkczwDpICbx443A6 zxX{vorFzg_q+qaCgOE767s1Ij^jD#XcioaAi?rjl5!irViwR>|VW6dWZlz`V<7|ZM zz~u`OWXxx<#hk+nYtB2$&rre>o5S3YIDf?-?c!~lG(4pnxhqdct zV>m=&%#%GKdQf)?43x`%f(2~DCvMz3GECu;=;0AI4YpkOMv-&}t@O{RzR}=cRE|=> zp=zVnE~M2%s#X(vdH#D4dRm@_Et9#g@}RiG)|ws;aE)D%q$8XyTC+CMf`-912y3pN zwZG64PcX*7UI?;YK2PyP3XyH6*p2 zW?N1%k>~fI5YyI1dw$qTU2KoYI;D^?>|p&h2SPYx=h&zq#q!|s<9F)Ce(5%o0= z#ltaNtx!fUi8Xx^?VO{Kgt6}^J7_FJQ@qQMIDfql-zEiXjKmS*NI$m(5LHz%q8KN+cZ zZ~K)NCdxrA0V59usI384yv10zBP`Ck0?L8EDs$H&0)-YVEPeCSf);8Hx0v%hD1*->)SU`>##KAU4GY*^I6#~ zM$E>#5W;{w8R7iC?fG~-iL3CtZ(zDg%V9Ng(2`KcZ zQL(u3E6LZk^qfB05Sohx!4r~j;!P9@eSk`Q<<3ur_lia<#xi)6#8Z;)Si@dj_RX%g zOV9r*yK}<|Au&y^Kc?pRS2-_>8GC{Rn2UlZ(wR&RY=hS5x@&4qki zxPAp3(TA~1UoaWcfd5zwU+X9Bk(qNTxIhIy5Crp&PzL!9WXRm*)qB9`Hv9VPiE;tGY2z#2N<(Yvuxa4svxt0h!OkaXo^wPC>{}f=?Yw z;|XoT#U5OeYrN0B5B{q6RULYyGM_C~y$(C30@xPlMzPMzR~C`=W^=I)KFs+nd#~v@ zJgVV7mwNM=t`f?k7h!>DBo|uUbmRI7Rv;b_>L`aWw1?+sktD1mK}YjWOTujTjJf}R z#i-YfR1-aNPSjsIbu6D*G>t+8c%o9FYM;%56KB~F^tHr~sgM>&1%54~JMEiPm(6|v z_05{1yot8ROSSr8YBS-H0rn2W7n5`ysCg}#Mcw0QT+E?3j8}|W9Yr*R;U-EWghDcW z>Vl0FtkKETvDrxp3dCA7W^(V}Dy(r)x=Wj?E5k2yB?ot7vz@&ihj~O7Oghd(_WKfI zx0eGhJqL8J$zhUFd-Lg6=hLfdhL2K*i)}yI?v>Ac3Ku_qnx0zfNHV?u;PSk z;;R{m35m!VM-w$^-;LuN%zq1YX9T{)0j4Px*h*oUE^DfB@&bb{LcSX5W>f}NB>=5y zGa@tbRw%3#_wbC2J-7+(LA24>7AA{P*qW&kTotPAFf4VKQ+lFFfgA8ttF6c|6t|w* za2Sij^0_)@8z26M@qT9Jw{|QB`irlT*3Ei#e2T_pfS}+j65OoO_myR-ce_Q()mgQF z7m^%9A5m`|VzP;^G{rRQhVCO&y%o;H?@})PeBrjp$!Bsk&NmYrbenDqpWsslX zOwIa?!!iHE7)jh7cP-^m-5Ln6b$YU`6j;p@CCP9bF!4b?AVog&9+Q?mX#^*9g$LlE z_oPsqHu_L>BD?X8BM<<+k`*9YqnFIJt~2s*Dimi~3u(RO<;e%^PR}(u3fjtP_-Bzz z7^w5RPgWaX3VkbkGveORSnPA{Ze)sgJw@)VTT6h@F0sYh*Mjk+h zx_E407J#B!k#({YskU^}2T?J@z=G$PUg#H9mPi?1~dn z=CdUNeJP%`h<9tO=YJ6cj9s`?1nI+bqlX~ExUSe517ZpH*f018yKHMibm$dkSy;s* zxLHLidCf{NZ1jJ4x%7NMh!xjd*7C;r;<21ZgANbNMTe|UuhZIb)1%hEi7hlvs+0HG zs)Z}vVBv~||`v55OByp;NKGXXga9doeR^0oJU zvhHFQ#>BX1imYKOs%);W#ID+Qji%Ah!p+Kilw|2hgWnod?}3s@hhZ z=ZKM1xZ&bzaz^Xg{3^)9;PHJ;VH)~O*B52$t=&VHbO}hiC4-&VUmSM|kQ!TJ7b~Rn zNo$x7JwnXpR#Z6a*it!ksR~xrfcH1LGV}~e6XuD2y_sw=0n}ENT6sle2CRf2dp8V^ z>h!&0I3iIbKleO`IPYa2m&5<9ZWVv%wKb#G!iEiUGnvq^7e^e4-bP4iQ!H0-&u*|dQX#e2`W9wejtqN4S-fZP zJ@KAphHE@!SlGM@p_rp`?eR@5W31wlMhlg>0c`o#rRiRPVky!8G<67UT%DX|V=bm* znv1L{#}hHWb*0l)PuB&SH>+obc1x$bDA$m%gVke5!9=L?q>b^o}@^7rSy%Q&aBg|7^w(3<_hso5dt8@5YWwHTOQ7k&?2~ zdXvabnj4U?w2U=r04w3`+djo3v=(?OHRE4yMZOX;n}BhCWy^T94S)a&;Dc-s<$x6o zT~edZ>#8j`mnkEh25e#p7HmW;g@^@L!8A$r~XQ=2V8S?Bb($#Q;7uNr@tg=`#J}Uby%JsWDgGb7idUI zn;GTh2h+R?-{a+M93*O5AXs-ILlTX9h``UvR(dk=tJ*jXf6@79#zH{RUQZ{o8_hJF zSQ0k+M8|F;m-jPk2mde}n={K4XgRN_maibd7heM<#u0bY=}?`-F2Vx~dHRg)rtAET zUqZ}QxI&Va>Z~BlzfJ^-feo9()vCl=$_EP|KY_$A6bYJUtXkk(6hnVe|Y6n(7q!nOi*mqjxA* zz)ix@n3Pz2x|$H3?aW1q-hM9gnJT4J$(1wyZMRgHZ06`_n9v-`HsFoF^X1b^OtG@# z-s=5MEz^o@o5;e?2#eGe6C6{Vyh>Jij^K@{70cRZ1UcVp&ks1a$*l0B!X00+KyHy- zn9a#{!gf27qwxg-7D0&f2TArOpoN02%PaUAC~sgp*^{EKCL61F_k4El`MYDc;O96T z$|eLJC$>~-kO|f97ZrY>Y|?X>roxB@nEBQ*$y-4+FhgXE&@fi&Yz+id`h7=~KoLdF zn@4@k(yN{04*-?E_wo&10*tYm(pF%=Tu4Q(>Z9L6DwwU|$g<~(MI zK*qB|lv3ilXiLYH0^zx4Mr<1WB}9gI$`|7=Wj}^QD+k3b7!q>VOO_{#)QyYGjXyQw zj!H84CVO!+h0qUSPi=>+=CpmA>H#l4i+0RHIa#C%(@BORoK9ksoa!Y*G%VytX{eiF z$;v9M?r_KSb0f_QNnGNg5JKBDIV9$}`NsKV~G zyDA&SVzhBx~jT*Gkb4#mt?&&>V&n{6H<LYwo^U?jByYlS^F_I+F}$K)GiUAVw@P^yPoPjPn5`47~Ub z54cgLXWH*BEmg}#>>V#%{*7U|i05VqXlhA$px0+uCdRqg!3zu7d%EK6CxmAdL-g*A zJDszLNF|Io<(_kMNW3)7w^bzc0v2LM9xoo>V<`f(eH2wH%8v77ur~@jM`on0t`7IL zBKkWTf7)~`i2Mu)V$&@aOY)xLK1!F7SN0fu2~~`DxxP7p2rkaR@9=SMDTAyKDBwc< zRJCPqCD~XeME6%=n|P5T5d2ysqZ$^kiE(D{l4cJcY|DZCEKD~tBT0&*H;j_>MBJ|> z4{qtFl1;@+L{aB9@HK|wFs%rK=?+wFLn=SsM45;fw6W1S@}0^Oe@sd1$kUh&?hx1hBxxB@$)ms&4ND397A8 z{OdsL{xpcH2jMYseG^+1Km&F{ z?+tC`YD&HNH=~(M`dsLrQITW2lGX7MQM`T4*!7Qm{ck#uV(QXt zl>`KXIdqO2#QdvMNF?Ys`r3s08?&(yQ3# znf!&6!&5;D^Pb}PvWuD^#?cq>7~huOk73fFLWu}m&Y{xg7O|PP+%h55SQF=F3uF{8 zOJl0Bf*}Vwq{O;YZqSCzyk#GFNv9iaT7djph!*cJ5Yi=z?@CyDq`b`Av{QKVasu~@)4 z7;h&)4CMfx?nSJF`60oe!mhs{GfrfA@A~KB0zUzgcgh+1mI+#;up!0eOJqQcLdm7L zhhI%VZy{_seNUuI*&`$Ze}6KVv@?}PzsiRPQN(yE`ZCf&c>Gnu7mVk`%4_ZRPAKQP z%#W}8Cd>SV7w@Xc}Vb`B_$bq}ZQsdx}JN5dbn4 zT6r>W!r=$qRzlO!d9h>F1PpZf0wYgSM6nI_*@9c?hs?r9Tz_-O^5Y3Zj|t zk)g@94RLU>aO8)UzWl$N-x}O;Tve#ZmJWPq2;a*=n>El?zG*MVe|ad8`$cR7+ML8$ zCKKBKI9_8C9ZtIAEmakY+rl+jndE@3YkUyaUT2q>VevKTUe_FH>=J(=Is`IhA~JNc zk=7p0GID;LQ^xreJE~3z#w0C;qrm2wJcF`57`2QT`KL~64G}v!=L`4t0T0I~h8l9v ze9!fuIg*2eoA&Sz=NX?OkZ}g6mh?;a_|8q;45(zVsJHc_m*~c~X0GRG0v-|n9zyNs zKpJB6F~jw&KPjuxj>y?WA{#C`sUkf@lLN{lNXu%o6Y?T(%iEE_SLD*0I`Be$LB2gT z@1vR%uMHC)V2l(p{`XixJH7B6k45g4>PML2nVpR90%>_r_ohP7PaOT~yvu02Nbye? zXDW|=O=nTc7>cb)b`urf>%~($xEHhbcRJ6VP-9e-nt2s)49{ZB=c1u1KTRM-_8p}jYH<|IUov@AMBa(@7{NWDT9K=vp23y6=&oj=rBGYx+4n`iGi)x6zP}q z9;f%%yC2iaGW^Vv2yWk1d|T}&lsod)vZ+>MqpS?NNzy1o60-P?)fi7Lk#aA)slLC3 zJrt*zsY=Ffq5~3+;^;Mn9th=x(Xi@{cBPbZ*tVhI-bph8{C9K|E1^o*4XWVI2n2Ze zKjNxjaZtcGfO`Temnqo;0w6I&Xd$u>%jNNMqtUL{oTiyjnsj}wD_#}w&nM_zYCsB0 zjuhKPlB4-{P)u@h;s8zeWh;9HOwurI`n0#ZY9CsH*6Jlk}PUZ&kKdc+v( z;<=V44pn&eS{x|=kf$i#>ML@y9(BD_fo-GnI%6wk3gh^9AFGZb1~5!N?y}N z7oEP-4wU)OJ^ap$EVJ5<3XDn_-xjXQ4vX4V7F*?gY3J{K_|E!+q6^bDw^6bGm&PzXrM-E*dvMWbA_wgWIp;i9&u$bFV#$! z@K{}Mx47X1V?ICE%oSteHzOFwF^GR(Ea1nCWwM)-BV><3)(#XB(=>G>Xsko`r4b&=CPX zUIz^1gPC;-+&QZda6>cqqeKZa4~%p%C3Bt${+Y|$_I!ABbYae^wTu5}bsGB__T^H6 z>Uu85EFdUJbA!OFJsqIddEG^c3grjEcwAFrm1;#n1>oAe6V3s(m=s67fcXv0@OzCy z@xB*MHsf2Lr&U+B)Na17XZ(p&Pz1~YcBWxtW4C=CX@JvVlw0nbw)o7l%$P4vY$K zvxp8Sv$85YJF2sw1{Q>9yNj6UUppeOK}=yew;HZ3W&o5?|d&i7B>*80Cy?c4l|S<)A$l-#^wEc{6% zU9DGn`WlQf>>Dmn`u8H zG|W@A&IbC)Ye!AcC5c$cFRI;k5POEH-r~7go3FY)ZFed|JTgulJV_m`UAUV&-rhN{ zVX(6QRI8({w~hOb*q|;M(E{|9z&aFuLMr{6OZMFrZvEatLwpVB8e1GygNIMhE#TTR z$iU@@X`%PYkj8?N@94(N|6QAi`Ch4aqGCCs(IT`B_GomAXdPVWPOUN)VL=AnL@-EO zzRQRQx?x;wgE*1;`G)1uj(LX4qhpZ=&ko_)G3Ac%7oK~8VNmvT-^`ukt>FX!PwMfT zQs-S$yIM*i3)?TMPqK*m3#uP@j=HaEIid2_Bf;AWc;Vjc2avbN&ROj}4V~*a5vSEM zXmjCxjWPNHnT{SA8?`Sj3Ng zUx?R7`38_fjis$5#w|#s4Mm=1NphY(fuOp3JF*4kbKKaeSq@d2OQ43}c01yb85tWn zLd##b+zhk=MrG$n*uj;J+tT9k$z)fF&52)6g0mPI$>&N*E^LA$TfCV;1g<%W6_sA_ z2`Bp9UUyf+U(@DU62?3s$`x3=I73>rH8_+#bI{_59*=;rpLoBrMKSb$)0Z((Igv}+ z+XFwKK$jocE0*p7ka1xoA7sfL+4eYZDQx{2B3k<({q=&xnW{Twb znmvh6JfBeY!yq1`&3l6CaEo7uuSp3Q1rk70C-3^Pk@e$9vGU76ayC~?Q*t@QG}Bhb zbKkZR#C76jsx^d1F3DeDNCgL}pGSE-s+^%-2D(F(CDeBf49&kc14e*J>uts^@SH~5 z#~b-%-2+8wyuoq3;Z19YHYY&ptJkZxh|+~S+-<+!P~7^9SJ|F2uuj8RW4Fy?1esyD zI{BMzx5u=?)q?4`*9yfZeVtMG^ko99sVDF%5bcHvJvQVDCU4qEDeY zSnl)fkWUrAm+6)$Y&o^?q#?zsg3EMB3N-yPBH|9*-GAbw@ay2*a$puO~n7<8u_-56O9#T|Uj@7@Hwl4@@ZvJjP zN!^UK5PJY!tkNJy8>4g&4*wse?o@QFsk6dg#^Fny2$xVI4w5O5;anuzhJCCmUh}=k z=>)+wfhCIvT}M5Nj*h1W-$uj6YVF!YmC|+3eqvgzD&F)hta-1ti9vQ%pv~L1)8W=Y zt?6b!fde@=`o;sf{^B9> zQx<~AVMk?u&4LehdTwSQ9si7EOFvQ1&YDc^-p^~b6<{ts{P;V10y+pmdPCBJ zYz=7AY6qpLo=)Pph72hFfeIF&yrQ|`A35GLlh`3hhaH_;O^`4<=|O5DKwa;{d#G`E zoABZW>D2_adSNgbP9HcjI?Lgv^7j#sS;i-~$&&eF?@kfn$De1PqM zD?w|$N!TZn`~Pjsyf7Rw(`F+QmTz`OcSTf{bt&(7tO z2-+rkzS)g$tY@!lYadvR;5)X!$DYS0&5yuW=q)LyjOXoTC9>HE@&6n|(&pB8xe1Xv z!aF#JX`qJ`*+dsenEv`KrVt}bfae1>G!7%j!gFnR;FhRgSXMj7-c{(+6XJ;zcvaGi zYa#;jLRkR9f`4U`7CQiVCPI#Q8&qg+*P>b;L_dbvkA0uH@P8am76{Cr4?%6WXBETC zllnyfG268q$T;H?bfrX%$8P44Z_GD_@84ZvlRAY1r@?`UKO$|VL&SfWgOc%e+J;vm za6zudBc{s0Wfb(j57AaWU+s5&{}p`gE5+^8uYZ~z&`rvAfOq??k3W=j|JAd4epdBx zZ|sr>7~`s<96wYYcC0MUG+|2!SSP65r?fiAyt}PV;E`0|vw*H&0O!v@8-2AM-w>|h z{U}jjRPW4pf+|QVA1!2P*wtzyG`Qw5CP$ZTXM&@Uq(8LtR@+taqU2F{P3;eQ>>H+-j!8fTIyE{HuvTr}AMa_P{-P&fHO&FNh17a}8xk@5b*ng6^R zb{{UQ-oW-bfz?Vg;jeOkc_pRKNPd23xK75i=J+N5M8d)*Z2pva=@5X^Ef$4?e`mvx zukbiMA`ZIL_Ug|vR_V)}3>0HMciV(~ha_?NjW+=U06AaW$WF+jvS#Y|UG<%@o}*pB z;6R32150E%4pyl3KqhOcuO-pYwtnSO#Sn+x9A;a>`Tb8l!G!(F%P~t?-$EGdL{Q&U zI3$@xeT=%XWg*w*w=rAUo2p(s+ws&DdIF;x;K<<|r*Np`Ch(FV!9G(VZ<9;fQB@hg zytET=ozkHZw=UxM=ewL&&65|1U4S9jfFqi+L;X4VxglvZxhqCRm9fQc-VDs^lkB&v zQ2@`=xbD%mLYeq$cu$y4B$I;5L{UCy*8TtJh@x*K5gR4{jm3QoThDcpgp^_VZ?eL> z)U}Wq2`J)H29+d;48g#5)2It+Ubv+&Hg;}Nd?+5PDKcK79M@Nq$JWI%OzP}&>0WV*C=VLqSb2aQ^u*ev$)ze(7F3CbiaE!DD4<0 zi8_AQbUM_6960Swjk@GYC!MJu31qlPrvQ(?7sroH2 z7aUS3EXtdd!4S}uknn7?uvte7uF(0DNfiUp+V}0>)63Sy> zUE(wRgKSsB-OmcL5@E~1YD*rz1X_SgN{35vi)TdDkn~8Hk?`5}LaAI`#^f&)PPaSV zh=pP#&B}a;FY#R-Cvknb0xZ6u`{v1iVD)&@uGvDMpV@w;0kc`uN02s%)#yv>C;4#y zxG(~d1CxMpq$+Uyq23}IHLws1q_R8CzNGz=Sr=ze`xcwq?foCY7v>|N%}ccU$}7nX zN{c%}54hJTm7L(UMUppPdHA($GNO!*+_kU7ozT1?34^*Fo%cIB%yOLK{rRf#kzhmq z@w7Z1>E4hHk;G#@n7Cg_SMxn0X0Ti3KATU9ns&*HGs|w<6W|DQUqnf4eRhqB2TYfa zN1X_2*@by&LpUHIcWMHe=&|Om9#Nv5__uSV&G=|z+Qy(Qbuwz#X27HDC5Kw_Fd4Ko z*UG3)#0T^I?u&7w3dt zKH|@d+fv)K5=WTOxIq_eK*;vrIosHwMUW-4rI6Rp%0utS4@k)dz8 z9!|V3L^=qG!6h?&?7hxT(;;T-H7xA~n0x1}l{)z1ZpxB=cnE?0kH2t^`@?~}wpwUI zR+nO@e~Y!nfkp%<=@Q6(;jG!LV=lKjc>DgU#;dd(3l=Aiv|}E^`F7T^V)?vCzq81PpMMlI3e)SSylDgzA!$+jS$$1qhBeX5QVCjk z*NR891-{5}%Vr*d_+=As0&&k-=}h^+%Tp7S*{@)Hm?*KZncwABdM~!tWW_Qz_$jGv z2=LBz+7JkEcNwD$ec}H7UQt! z6&-8$*z0$s{WrDJ{^XFg17J_o8Cm=Z7^tbFs9@{&q~P^&dm=DoGkQqNU|KO>A4blk-qwiqC7+w`gUaXsjqDtiaCpYRkO4VEU0Rv3Hp- zq>BQ7;H5sL^Ln?z%R#f?nGE~|indXRgh%pOZdbjgr}&jCzA29)c_%t@xy5h;E^4%0 zRHu)N?AoDyMPZju`Of*VAlf`GK3iP;ev?e2w8DH=&xd>P-`9D{H5J9>GHJRl0#vdc~ z8mR?OGU!5sJs`0|^tJ`|9Haw3?H2_fGXb30qazU>FmL*?eKMRT5b5BlfY++l74-1r~ zxIN}oU^-04`U1fQNX>)9fxp0qzgDs4P)&;9xBD>$$hj921If6(Q4rBxw|S`0QuO)K zf962kQ_Jy@ZVp1o^5@l^IQT1Exh~;KYB44$4wHYOyK2yAeRl;w*0?l4f9uNs>+Xhd zqAUd$djO3`+H3a>@yZ`1i%Tu^fJY53MINZc3xMnWdAN;Mob$w)D7pg!FqtHI@}^#9 zZVOqG)N9`o+YNp*H`av6)|7L2hQon+O#i~z&?Cr-jc1SD zc=5lT#J65%_lY8{MExhP2mqG@qd)q0uD!G1IHB=1$%ZfF>dM77#Md!C>~x17A-o5M z1%1tb&gz_Pq&WGB$6o0QMOSU-fJBD$NRC`87^rq0Y<%{Y!0CRZOsnNvDC|0+>eyWtXHk&QBmmfbYb8og zD(JD!VldJds7#L0EvDwz5!ug7k_>@JK0W0&tZ~vpxOkq8+S;eGJ*uuM4b7L%`xb z_ViF~dpdO2chaR9-;u^iT4FD*wz&ecZ60;BPYJfS_aTit2rF2$)r&?TFKgQsLt_~% z`c6_O{4jb%(n&VMLR=}wtebJM5tdnaXVh)UD-xAr_H6?Y(7wx;mGDJxOM7`chh<2&SuVLhrkPbG$ z@||#wv#Vbi|Jem2{owF89&<5)>JqxeWbPgrZ8qfoSI@$Wu@5#;I*wrPutH!21TU_7 z2A>s5_25LHCvRU-8sNjhy^J}E2_t1bSKl=y>A^!~7dcm^qiMsgltuu8xKx1Na*)CL zfyY7MheyPF$;DA`8SS=HKX@t}B4C#ny$(JliBJAc=6qKGaBpok|4XrOX*OB!=zvLN zPv*{i20D`4wF8~Pw^Ahrav^4FoXVP+8D%MAffujXFy~Hul6QvNx7K`>Ejn{U#~YE4UpsR@OT%AmcfXipx{w;cR%d9@~0HRSZL0Y=G@4Ab%FD_q~xf z>a>?aJ1a)QVx^XaovlCfEY*0Zz`03N@QNlPk{^7i4iZ1hi`TrC=Vx3uAHt|*0XOe< z9q*r6dw+Yh8|nqfR)L%Y&%{gR)mxmUkq75EIWtbTgUSl`Mh#+7=&eZM zXS>~Ty;5hQUave`K8QN13Z-;AX(90p2^~@ql`_1o8xu1l7K+kN29%sx{7LS%?JW^~ zc*VXH4v$n0G~Y{pZ}sdRi(!wyI`;YD0k4O9xu`Q*7MtzQy{;awS(vZ#@6Ot%UDc~< z(-%{^nA=QC4u!`gU$bMXxdrIZCNG2ol`44j>`-VHlCI*8*ep3T2{h`;;4v? z3#%Bz2YlheU~_w^#LMZSALj>+8Ko|T_e$UYf^Ts9@N0Ol$+ObNIvlh=lYI#+|E=0B zV1(gx$d$(m7Ne*P$hJC%Z$($O4Wkdq;=a&9>%WgiV6TMc+|PCDGxN0x612~zhP+qe zB^H}ZDIZ3q?PccDw1jSF_b+`DPyRUHH{b%J@~cXo%zi}fZ%yW1VTf+*TEv5>t1z&FgGZ8{9$vn(E^-{4`vBlwte-148ep)BzFfe zs(bpPrCzbdaxKPe6q8VXEc7XqoKvd25BqI04s*~zF>UnyD8B7a=XyFuMvH?4MYPi~ z*97Sr(Lf#I9A)dMdQYib!wCBGU_=vno2gnLM#ON_l5n|+RFeB>ON5kf-n2)g`8Xv+82Hs{Vp( z9wz!}EPjnY0%y-b<11?Lb!t2-?A`m12&amkF5LUiFj_geV2a$!`&V-;UZgflPwNshyD|UW;kG>3!!~~#Kx6;gxO&)FjBv;Mc!^fMAsf^PVnlGPX!^;6( zT!=4X@psZkE@jDJ34<|U$%o=(di(s}E7iZSU5=l#EVEzkpNU3jKM|MfYt+bO)$CPT z!kQ8Mh|SUih<8oFX2hkMQcjo!j9ph-(MO%TUO7_vmGT3uRy~NkK9ryCV2`os{0=O8 z63mni9a@J)hvt=W$Ab7ac?sY56Mzx|s))F~Mfj-WSyVh&)Le3R_(wW=;C-Gf{N?e< zf>~ljrAmLIA$k`kM8tNGpx|c`*F~fMYnL80=|g>Hp<9b9o{%T+ww?_QaMC8ljMD3E zE>=KgWiO$^EX=}TggZfVoNWVY?!UPcCG+(3pN)K$q-+GQVHcX(7R177vrGO5ocj&z zc?Jk7CSr;V|Jk&pf4ro9 zqj~3(7mP4}eFC%Ax+E*|=era^rDo39#WI*X&w$c|ISAw_|nrSDI1r^JiLc}#oEll7+DuL zw^zZ!$-B);DV)A%rGN7`6S)&aMk7&8$iafV95Ektk0JDQ!IF8#9*GLh^rTHV5oLE1 z)G;%z&T1Cg&n99%zJ`FxQSFkH7KKfz^z=w7*#8D{UvC-J+6W|yZ*igff;CjYeb*(C zt1ool;T+&&26i_*3rl7$uAG>mFv@ioDK<38`-SmM>Oy#45Vy6B(C4$R zdDY2UNMJ>(q*!((6y2y15(vT$YL&DO(k&x$;c5J3uR#eZq%#?(rPi*P^nSfpw{~Z8 zN)Eyt@(9mYPW@=J-jMmlk+rekz&hpDlVWa5&~Tko8_T2T6|EY!Yu%jUTwkF-V|#|t zo1K2|8{^JG{oQu!#&;-UBkn=kGW3VxDI`cz4&8=qvPGN(=)&fBDrDH>s&Gj&V=7O5 zo&LZnNbp?%KSKQ7OUk5-?WXI2pODyu4F)RA9WVC8y>W$HA}>#qs(Sy@-Y6c~4?i(6 zIo2^9`r!TE(DWAF4}2$nHs(fv0mUEX>hOGM{OBz#%5NxIfZNs^P$iBk1pTO&1`12y zeb8)xwRftsb4#4RggbB-D21)Q@)WWEik=2sNA_&LJi{Lq74{wkE5v(o?$VQ{wt%R> zsAvZ|L=%uF&h~$Cyj&F#`g_*dTYMf9d)gf?N^d55SXK_bK|i%i>2n`02jk>67GRNd zVwQ|r1X{m8MGfG62LiU|RO5NfVV$E-8`#o;kktY%y&?U(h{9R}q(hN`QunhD-$Y+y zCcn;98&8>SlUCrv5=W4Nou7yHsd>}zA_2Bfp-~>o>L#@}7%;x#mpAlJiBL@G)&X1u zJk2jlA(T=+LrQFb9ghp@{}X-ua(X1(a907C(@C;AK@ z=}pqS6WGzh6NK*wJKzzIJ>VV*+59fay+y?Xkb;S>hrr-F}oNviB zzqb4DK0)Xw6cB^rm{hgPG*Ekoax(V=ovF?KyFl<)>a zB&jx-NF>~HUd1>jXUMF)wUo^F3_kXXOyw<2mX3POt!G+l6@4i(ssp|HJ5=Pw+9;#@ z*;fmMTIob3%nnp$1T41!C+~VFZ&?&wzBieBrbrY7AKV=mZIo$hn8McepbLq^+W`zi zhqV?glFm4ZGgal5aT~vo?b^}V@6F|sL~5}7D=^#BL2P2cJO80U;Gkf(8{bgRngOEM z66FSKXHK>Pd2T2dcr1F~L&82UT=^y`0-<7KJVk&d31Dlc)=O|D+-C~ou|@4G7TSvW z7E?mz?n#fNljE(3PM3!+_o%jVfn zKF`r!)rZZvlpdu9+U&#|dmQq9HQBR*t5IDY+R-MVJa1XP2=7i-m2FVbBU7~Nio;7( zBUR5kU<~~yx7g2ij`O*gbF8J#U-gQ;d4xbdmAr;WTKTv7LxRX&6VbvN7iz7A+UtWA z;#RGHO#uA29ZX`;(Qv?#dP}AR{SATXNIg6<5EW`-qG@8OTK#Dkp@EK-Zb2zhb*F9U zs$LNXQgyBrz|WZP8SY11Cl6Zz77MS=JKY%bLd(~Gor4N0Z2b0ao&S)5FT6$6dDDij zPiiOEYkglkdIE(Bej3bxZa5zN$q(o{?;OCxBVq3KsHy{p_4K*4elaOguof0sMy} zNnuiI`<(HM#chQ{Zl4^obIGP-hLQu_qFgPeeJy*4&m#QG*;3-@(YH-IT4~G9H`Qk< zFeuLgrHT{Y z1=I{3kn*(zcv2{GUAyk#4LGo*-tT^F5qIkmg)@w0EL(JcszHQM1nXcwQ@Rm-oK8ON zkW-*2%VofGR$v)A88XS@-iWUDxFMLgHT^uxq!I|qD#+}K!d z`GL>hBV?hm{NGRa=VWOyop~bMemwxf?kb<`uwUe$TR9!f?P6=Cl%LetT1SO{`n@Yd zYFtETzgoqpMJy)SMs*!$ILNqP;yjG!7B3Ov8pd+>>vp&8r)G8LQrr1GtIUOp-=Mn1 z28!;S4??i5O%g7UL-*Y!i~B$X=F*(wBn^svlLho#6L68zN!aJ!9pe(Y&==$qR}x1F zK_V9gh9vY(;_HC&v*HHLm!&?8j)@^)E9TjJLKR#`z4ANDy6xLTD@lQp~3!o*xQq6EoeHJ#M zhw)Z#<|fr-oK~e!A>rEw>HoH_2tqk~dEG#H@0XSEATT0+Cz-t2==I1 z!~wM++kD!k5Zp*V6UJgRG2I31uevS>R#TFs)P(su+VX))Y=Nv3Wsp_HbR52AH^DN6 z&!|KV7Ta@@M(P={27y7oz51edE|UXLY6&jEkFi8wv_$aEPV>JGw1d#`CR=NX zDOH8G&+Ew{0OO6E>~GpSM7i64p(H?S8Y65y*Clm`u({bgI~CXnq}%Dtzu%M(QWJgc zcC+J`RBEf!l7oK4WdQC~Kis8tc`vFWDcA!$tkU9^C)kQhd#_SY7a88_61biKdROI% z7r2OvGhOw^q7HuImO51o`fMCyQJ-DXkXK7Bt)(rAO_OcHeDHH2TyL;35TuZL3Qq=^ z8Hmp6Q;z>3!i!YyaFzbSw^F%NPKIe=pTBiZYbExq0pP^$$hVhO%wI}$y^b{@Stg5Ga9 zE;hw-m>i&nRS@$v47tGPr|34aHd2Pykkfib@d)qEEvlkpn6BQ%KBn^Ln2Z{%GOIcd zO5TYl!YWR$0z7wzG8s3vSa*>|0`H|RVpZguH6a?}cL}__C;(TQC2&Vp;?0vMzOcm} zy`?oysgG(HP(OQ4d*U_AZ zcbxw9Ke}PH=|Sm((=U-u#L-^`H^H$BtGMeChP}i6k6>mZ{XDyt5M0|<3No@5;u{`b zpBtpQ_V!4l?u++2F;JVXW1YW0ErS0+A}2>*T*e$oas8jnpbcSJDym3-WT7kFj; zaWus=F325trk|E&3A~J`GsSbr${6%4T}91eE`ra%lDkvLb`)=oOo~AjKH1NK7JIgg z>}5RRFFRl9!=!r2X}=t4wk6c#FURRN7>7!yClPQP#ni+NLSU_KU00SIRGYh9 zs|U%KiU`(f+-BnTslV^xt#d6&XGq}k!dyDlG~>}zq_bRlg>4ll>_N=5mxpDQoaGn> z@DGlmag0|@8zr>OYK@%$SKKBMtn`Ges1z_8sf(uW#oN&hKm&+D$Shz{6kg_fwIia; zyk3tR%Kj`1m}lSN5|u|b?qZ?uAE?oaPJ5E@>reRhD~5~NvSS9mh0t@RS1>(*(?v=~ z*osV$CnIR1x3ahqYMyzYg5U%ME77fEr67Jc;gw7Kuatow_bC}+fd3>Jte>UL9#rT; zKHp;z##=Se9{v#9-Y*GNjde`EO=k~SQo&_;dLk~9q?xkT$nIf=_h+QA1`pb?p2@br zEB5Zo=@R%S^Kxb-Vc}bqs-#$8pn*j46l&l?zmS;yIRhhUV%l{hfiSv(-m~1}O0%P- zeyB-j;~yc^(N(l{23d=^aE&XiOO4aJS1@jRsWRo;@v6-$s{zAQ!}+mwJo+T@^x7XwVh5 zmnG71RB*7F0La1L{Aa7shxEb)^F&5ub{*u{qDZZ3#n+JDGpQlynqw2JNOS62MamKe zGW~i?G_eZQb>#A{)Op7hNA(L5yJb(rhofH{{ei*&$j1=Me+)&r%d`)uf^8z|9 zPmA>t-5{)sO$QkLda{4W#00WPaq?MfY zi{WJh;*?y9V%MNV+|+LTl{uj(L$E{kOSWW>_!u9IuAqc!2>;$*!7obAl;HL6mhO|l z`q=wCvo@KJ79irC_i4>KD#$97AGALREZ5=BqD~03Fo9h^b1C_RX`$9bRsa~2i%oi* zOF{+aWeWFV^0L+3CF!S!@xpM@9(8Q&(6$?4^?dMvcpS(AA;~*`qdbCQnNOZh_f=PFXySZGgm+)IJdVQmD5s8)EUETb2;@GrWl zF)FwC{B+HFVFBysTwLfIM(ui>K{8Yd6izLKqi;B5SKo-gRTt_!vWw-Pn{s)HAw-W@ zF{_mgg-~F)7nZH{)C?i_HH>79<>vHK+xwN8dSJC&Ej=df(DG*}(3vwjuFf1=HVMWf zULF~~9+A4iUCLRHbEyIaj@mBi-1@u9sLa&H?&)!8DR$YJaPdA=oGGdN5C7DDr&S;o z#YW=LidSRYEg&MMhbaSqup0&G2J*gP^=cYd5x&m`fhamWfo z7dh)?Izu!S*U91Nu72QslAsH8PyH>MglI9FAxH<^o8UV?nQUd%hAfHJNvzN#?ShB1 zTk~beA|IMiT$^{Ik4x1{OYOZjvLx=XT9LKk1#%b`s_LM_>;>~wWKe96gs2~sQRa2U z5$SlEB^x_N)jQ{^fxj5a+!2f+pkDdz@CveN%d)KPbyR@%MYpt?oY#V=71_Gvjix$1 zP%HmTD)yaYn`35Ak^48`c8<5Juk+4kfb=8F?6SK}6lzb!8KqQFzQnd)BqCZGDx@%+ z4Lzg&wZz3t|^j$QIG7Sk$Id~UyD81L~&?Ir_ zW@AstquOMKFva|264Lb2B7Wuq`0~xTI5Pr74XG)&9U|Aim+%;`7`5{L1S@hQXcDiL zr`xL@sPS>GfeQG?AUsKWqQ(Y^0RPXOHC+(HR%ChiifP~ZQYGB#)V8n8(q|}!cFheqZiju zl9}8zS_L|AfMz)MSCv5HZXawgmQ0=)fYBPu6$4wY77AMxh;~>CnV9p@zt8?80_LN& z;TJ(4=+`q+IyE1?(;$`g=D5lNw1{zUv40e(IVZ>i0+@#w1tlNUVyk>LzG=$JsEa<} zJM@QCrJ7W7`~n?s_3mV#^SmnT?2Z7uYJ)`Iolqi*g_7o9tj+vzD-=6XurDW{ zU=Rxq?-AUk)NDD-u#tG88>R6|+i=6vPV=m*_OBQwI=F18M>>~vWS+VfSSM(NtIGXKUORCor(pHPKmd$t8Cg zr#OsIAM*^(Rj-&;5((j;K8qGA8jv$a8UAhLDuC&dBeln_Hr%kTQ>ltgkTRZqD(2(t zLV*pHc4|Y0UB=K6o&2G)2WUf`gH#m_k$3bB)?$iuV51sirB{32c3<@GzU~^!RC%EH zmkqt|FdDIN1G>YO7&CN2OQ+6x?FY}#uTFZa;(1%gKjiRDmYmN%_Q>GR2eDvC#z+o4 zf@%=JFYka1^0jF+y&+z}>tN!_bwp8xX~hpjOv>cqD?h9HmcSxiQ%_k`&!$Uo0Q3NG zyG}`KSBCyN3w;tyJ=*p|50|wxq}DHAJLo9`@jN-;yM&iu6nVstZEyEs4I*fm7q_>8 z)W9`pYgRTJYw#xQtvQ+(XUnb1)czV+!c$Y_b+Qe(@)sa&}@Q17Qz?VgpcuKdDYRSydyApul22dHpAt|r< zXDi4);>PIQIS9%KS$EyODOBsenFUCqv2SsMUxv%TXkjK6(=D+KU=ZA zD3^IIWkYJa(#&ah9ir4FL7*W~3(Fq0`Aj}wqyuDVUhy4VJ=3?X22ddbQ{CSUqg~Zw zQHb$W!HIY8GJYJ=tAny;)rVxDh5gQZPCneF8g}?^=^%BT(r3K0=@!Mk;f9C?!z$b= z6%BtFddNFGF7q_r&yMZTsR$TYx~+9%8*-&|I`F+`%y4GYIw-#Qg29;Hp(VC3j}y8H z!zkDl!(LzQJa)HAthwWm;(yrY?nyC&QtyX%0C3DgSKAj$;bKf%5)KREwfnN`JURXd z`VIHk5xTB<+h!-+tyR>BU9P~Tg&}x`p?{uVBp(&S>g-i%c5MJ~+;?Jim(sQ}^U63d ztk5*XDRdYL=fW^;447}2nxja!*toD~0&X5cXp!jg!L34BT&CGM;C%Yws%KIV zK+TxehaS*Y#Gw^pLy9E|DNuEY@vz;r-iA|lTB`s;Fj^U2TWF@C$(+Tsj(hI}7of_O z!iUp&hpGU3pc$>-8nl=~rAu)MQ)NO!iU0(=)rR{NC2o@+qChbs!6D= z-&+Aez`T~Q7*J;R!?OCGGhwq$1;mB3D#f;CFU`%bM%o_Bi-WnB*WvivM6ufhV{IKN zOcC?KQJR3`KVy7AhK=^)ncrliH@XjVH_e0rzJ$r8{~>`M>ET)WmrLPClCsH7q>fcN z3$N*&l1x_2|7cW7UrwN9jk75PN-h9~ZLljhO1%Xyf7lv#Cgt;M66ZA7DNef>lT#$t zUrIUg&J$tK>?DB5xHASkNu2D>VTw$*_Ai%(CXRQApgb4uY?*w;{Y%LWQ7A4@Z~;SY zuC4w9dsL5$pS!VxSk;eM&3ry?IMhz{(GKY|2g?MLShCVOEg59D32&nJ zJqxKgeP#VwvHMAv*rwU~>(t8U6oib!hJf>OemU~D!^&S0?aRJV#P-!`?ItNfYrSi` zgd+H;JmA-%$s;Ycpf{zYl15uvf{|u+k@W{@Fr>VaYT#t}E3e$*6%wsj)N6SFIO0L?)!~xZVPd6{-ci_JqX|J=*vpKkQ{VMkYu2<(GT4P_#UHIMTObRI}(U%`BzTHGPp`; zexhpjl@C@zmow-;SDk=mVYv-(YwU|YUOJaXa_x+MbK2xOu6>HnjSXyUEJN=OH~#R@N$&4mU3$$tRCm}V?WI!m-( zay5bpK!M_xr@*u^Z2jmS!LDFn$S#yCO2vdr68^ib;1U`YERy1xpQ}MY4*a6eqKNCX z^&vy7xJ~wBz1Ei`GRwjCXN?>{V@>O8*cm#$lhsKL>jK+&+sRNq>S}PR0zRA{Z48%1 zsWln#BceP1$-U{pn5JkVIQ-VJ`?}T~%hZ%9RH5BifT4vSKf{4A@lI}#wl!?z=O{C?yqj)R^%dAc(LCr(0G zS;JV0@aLF@lSZPZ-$ae5;`9i+_XU*B3% z=D~{te<1TKNif`tqlqBh0^YhrU9TPOab^6Vjh3t7-Pm``Fe?qGePh6xP%M?Nq|^D~ z7?Y*hW{hvJH~;4Sss%Zx@8&k=3joKY%IM|>>Uh#}8t8Z7E)WR%3NNHM`%5g-7guTY zO7%5e(o)mliFGPy87tZkDJnY?U*Cr@C|TyH2hi2>GZnNi7dyy;Ihbm03)n7ZkpKcD zmjwx6UZh-k7=i=FJ?YR+BGr@JsWBSPUx+7nMhyVLvwyaz9I)_!1*{`bWLX|-F8DS~ z6lUf|>rGid)Py0A)Ypn=!`z|+RPri_WgMk7Gh=4ZE$iy-Bykcy_oR(lPjym>d0)~$ zngj6%TF0aY91GJ=H;1FyJ+;K$`Iez5Yn|3&arXdj}@`i=DEQss52 zflToJI=g=C8OJfAr;=9K$CLmSGu|$?oR}MZmJ`+<+OAFJ(I(7m)`@M;I2q`SZ1rV^ z>#Xb7uMFwxsN(=8!L>cRSwd#lg=zJa&JZ5_+3bjHaHg&BKb;=npfdDiP(DH>2!P9us z<3GEC(lSe)=X|N9|JADcz$zR*myx$<{H+pjLGe*`wjwM}fh-lGYdPyIN#ao!qXNeT zVbq$`Zph{XC?(}Q^VnF8uw%H-@J?HPPZdeq(s>RQpI_g4x4RY8Gc7 z(3_44WyT(gw_TtmGJa?E-a*2fsauG-y*m>1MrGv5;DfM*Z)eE=v?ReT-=yYg{u4eI z3JwZ63xb-J&0gK_eA<4b{z_2>ReFXy$>(%M#0OE=zrvc5 z;AmUuM}$#5t(j-4phczZR-elSyJZpDNmBxr5_^L-r)9^+;SPO3mBwbIzM2BgF0y_l z4!;HVjU_Du!Lgv&WJu_WWQH&xHPi}bXx~~|+lI8aaod7{ti-D}$a+Ia(d33$fuI&3W z7uxl`g&3bFeBzr>vbXeTq-u5%=m zl#)Vj8O>9GK=*d{g_295l}_`*;D)6yK;(#Yy=C>cEv3T`uDQXHpQ{Ws!di={D{NYh z%u?s+fQ<@sf8{wrV-HVy79{0qh`ypko4Jd|7kx|?JpRr0jYQ$$ig=P)qOtZD@Uz)> zb7s$=Gv7pmTau)8Wp4KltGb^2$g9B$C8Xz7}S*!Ar}epOvTXbX>} zI6YhnU=HZ=+>}mh^;u&o9DIidG?Kc~fb9DpmzXi}Tr=PKf!)MJLQwMR& znL7nJ+)v95 z-g_QpJ#oRR!4k$ud zy0%w_ShlJx3xZJE!M+grDBw8l=~`O)g5oQ#X?Zp_9ACbq&zf$4_cM;<i~t#AvqVtrJ!Qf;mqdaN(x5MI#`T6ls z1U&fX6E(!o9}T#J2C`Mq^JRp|5_h}i6=K>iG#_&;f&M*sd*Gk_TeBCLSKiJ0?fnCT zo3ua{;!d+>3^J?-<_VvqBbYAT6Z!iMf@NC%0$9I?37~P9nWjvcln(2lVp=h?l2s@u z8O=e*F<9Z(z&E#;qIkVUrT-=_W=!zM3ZdVBw4a%KY1E07&Z32;(a)i{2L%KGL3A6@V%N=W3C{U z5=9zrxF`sW{GI3Pw`9`yiWI&Ie7d^i_b5_cV(O;yekH#4v^;ni%RV>Msmp!-c(9$< zn2XlO2L+1GZWcTHw+$D|$c>eMX;c@|9zYi@yE{Jo>;wRC+e(EAhLc>brB!kAQ62OMt<-_ug|3}-&)xlS_=XU zHIBfB8tB*L!>Cg?TT%EhFJ8~^^K>qSB$tv{av#6n&xXZSoBhltvT4U+H?#S(Cz|6} z-upffV&?cW(+?7*OB={V&U6eY5pDA}u;i}uZjo{`RnLb(36NFL3{)s5TQhLnuEU-T zJ4qd>^K`H9%znkSS=E_ki;&)sUFsT`z~g4OD6wHFSvX9n?Ka<%@VW_0vOi72px zktF0(enRodDxQ@x8dlwhU{gJ`$DXTg@NrUSLk0cO&E$MIA@RoDGJ5q4`*#I&=9f^* zRS2gXEfx{Cc16yn?G4#A_yaTX*#jqas!ho}goAfZPm39!e#pk$E+kEULn};_Hb~Rs zv}5=f4l|ew$z2?K)sWgIz^%reXP6w09KuDNRoWsDF&2nArATy-#6ZPZrR&Q8o)mMg z;E{Q9`&J?23V?T>oH7j|CO11h)I@!QcZ;3FU8r?EWL%RC6UrvAo0h)HhHoZ>;Eh7Z zjwp}e!uwulqnhJGWkzwyoQrsW4^CHv-|ddXTS!VhVWX|(@mrl`HB32ai)W9aE%qA_ zl|WbD$-JfzF)WoYP2D0B*2P**b(uaE3+isiy|8X^gy6HOc;@hUejPx${uRkQh2^JZ zFM-J={Ni>Ms!6NH0|@!if*&Spei%CR9knUjVUI$q^yHw>U45UTR~@S)eybJ zmbFbE^4>eUW`DwUiyPa4Y}=~b#ot{Lzm1yLO2*a)@ijt5v%4)ivw5KU{^TUBHsxEz z=wdz?`x3c5f`nG?e8bD(S9F_14SIAql`xhkmfscJpuSU6I{5SHMDWh57Y&frc`6QA zy>B>E`qqKd)yh==AV3mx`{s_|x#?ZS()Pi2-@!k|7_Yry(@^Vki`Wfgkji~6#i(o2 zWbc}0PPn%0x1a8MdL6YJiPRhZ-Ub8lg*=hJ;idjH`>rdlAKz|un%;f>vYWGrNy;AE z8HleaJd7&Z^b>jEdRHvQg>+AXP<_C3*BVwOlz$F`RCaO}c5b9=I&;>W7Ogda2S>Ul zijsa!Kri>eSe6?K!3p3NFrg52S+qa#yES4Mp|^{+JUg9I7*0>M_i_%sm@rTDYgRQ* z4dW6qT1d+1ucLiPCkD~Opx+rmkzF1k=YV?dYeZ!!8t4AAYf;dGOC7^4X)N6wzXkFk ztsQsczHrv{BNPkaAWT{7nLw88a7vGahS?+AwAT=YMxkFAw%S>M?npOn8DyAO9)UQi zQ@GSv1v3R|$F<5|?IK|DP&NB84Y$i95f;3_(!IY48{}#2;uB|CjKaFHzn%p{-d6qQ zey`GUpCxWoS0o0Ktok!@_O?5>;^;ZhO-@Id3k!KX4&;YlKM4fI5STuhv#7@`8P4~8 z%LK45|1T(#Fi%nX`InRkQ4}iymkCsPJ30^&ctc$taGL&jWu$&FR*k$c>kQV|dKfgB zge*Lvwfc8blB7JSr62CK#fGsc7{H>Kc9Ypzv29FIuD<81r|UyE8mi-o z?3}}<<8$(Ddkw>`;;y$&x8*0$)aO)QsH2>UB)nQgvZ_111PFuuXOS4>>dp$FnU}1P ziG77SVUg1TB6IR&dh9E%)n7ZFQ+_?rHNm$D3~>&I!8ibF$COaBcvjFgofmR)wP)Mm z-b;G8q3tbD5S$P|0_k|7DxXk+qZeTf;#o@zU)Ixb|6Bp}=Flz-q2+}hMt9@{QRJ|8 zRN~-9oH3h*8VCMtL=vwaz4c49x8rHR*;t?}=m``s%)e<*^1f#sqc6+r&^R0iav2p8 zRs67s&Jg*jlpJ^^3oi2%M_ilTmS;m_`H|*o8BbYI3TgsWb3Jo$+P(yLqfAGGE>TrW zkfK7*S|6d%yQmJz`=sA}y)cFiuYW!t>+s>P7L!JXe~JHNl_4No``Pb!c_`LOBeFZ- z%oBBtgEYfr|KZd4-oZx-GJ&CHUZj!U?qQGo0m@iy{&@gG{M-5I$n zXusHC`=9W^rtbH2$T~ykv6FlcKQa#uMuq8wexNd6>3ijSpDuY9(bvUfEdjaY8oX*7H7QuvT#%#bA}%h^_Bo z*}VN4+rCKfjywo&T0d@}iq-8fIia-r~clnyj>Z zEUufryoPfg6(@2*6z*}d()QQ+_R)JS5a!GAAFdGLR{rBytf&Q_b9Lill~m*u{qfo{ zObDn?ib=s=UCP&PMJBHuB%X+Yebfw|raw=^6}e4US;VcFt5=$P1n4O1COH;mrDywK{Tnz{ zNIi`LsqC|x>&d~)IjN4j_5OC3I#T&n>lH&(&;>-sb<~4x!a5xRtuK8p6FSRX29(9VrL~31G-Kyu23nw6~ zKVFrSTNl?6A{*Bn_--x%PPi3ddkx3+88#G{-$eQLrmBIDJ|x}_>`YQziBjncjX|%Oy0X0Rr1&^5 zlgkAwrt`ake4#$0zKx;fF&`Wt_bWFtEtMedDQNB(@nT#P_On>5^)KZZH2np|6N6wt zUas9Ii|eOQ8Nf7PKzFt8r3BLqQVZuSYh5E*?xhV5c07%Mu}~ET`V=s}hhE^tSH7-@ zBcncjj~dH4lBkP9YF!4&InAr$s^m7t$yS?6U5_$$y;dcsUrWDrn}=JZ86r#&kUBy= z;iE*iBN9CRD-|P`jh*YK5aQiiWW4weB$A-7TuhWn?IT4`uN(Q=535>h;s{qR#w2tJ zX~MqK?Ku4jHB4>e1FBWIj<#^HK4ki;mIQW71KwNGN4LIxF!3YL7OdvBoUFnWaMYGq zVa>9&P#T-~<`v?frVPpJ5>amzbkqOb1-Ca!F9gKDeOOr31VCfEuZ%ox9~GKQIVOS1 zC&T%0e6jWLcRLTcsHh4&$2Y;_YcK#`9T(Q@e0y{W2h~KAb(8WMvy)s6;pJgZ?&Y6) z!r7gh^E*1aP3y?8YLmo*ZoTr$eX~EaVbFZ z$u>JD(Hn&PM?|AqWFUV+kU4$?BtJ41sGPvF(vi|%y*7Hr?ZZJ@=vk&`pcE+uh4W#) zn;4vPiJ_m@$b8IM`FpAvg`=Rl$CUyU2`1F=q;f4>U^i{<#@{H^w7arjfS1Y!MZjC_ zh?kZw=la^>j~Ygc>?2LdavKy*>g(OlfM1)MKXVUc%D!;F^_gUWP)w52kHhHS;>E+@ zJO`?Oe}ir7V(yV67UL{-zRAn+&=Vno-;IFjc6cGv!WtoCT{waOQ#<<#&xL)AnFn570ih_$Ic>b7g01-)m zuhV||F#>`l$#vNvIilY+ch=g>pO~tbbBtcRwK7$V0W-elw%33f4_PCrsbv(s1N5g( zc2U>+UYH%G>X->MF5zR)9p;FeN1c_BBdMSfn;&E^mOB}EGB2MX zBX6#g((VoY#+JMcABA9@l3+$X=-M|mEn|T{ev1(o*E|+p^fvKUHL|wtBl>Mo(nnGl zPb{GN=xLzq0Q7B;c3gWUSQdUyj+h(ZnbrtY54qsTTNP7gumo?A@m>aMB|E?=wxKtm z@LLul$-A2KaLc+OGPuF$b!g(dTKGy%6o=yU@J|Bry)P~LO3VHkCB^Z6#hN0a&siH; z8YT-ID0wD-%xt8@rYKO~W-HJ*Lfe;@0`;TVPEHl1CvRpo$pWreda2Q2 zI*UWUSi{a3t##QMkI%SX&shyM-fsh0-xU4hdloWr1f2b8Dmum% zvsiBXaa8CM1`;&&IRgY7j{{abp_K&{g@Qxp2bJsVN)@*xiR zWc3@={ClVHq1DBpNg6(3#!ap7^e}Sd#~BJWcH^x-5|u9QGj^_D&AxXmK zh@czB&}H+kj-lU@tiEP&Pg!>TrO!zr6a4t5VPdaC(fO*et+7HKz#gZ|6Vz_>3=(_l zJ9Q1gS(|9J>s0ExkwAD_bVnZYUjth*NR5ebl6!T-+O=>7uwalMWnSnwRp0bqMa$f^ z%oOaq#rXg*ghbjhc|%=N0K)ARIkYX4p5CQKiF>UDCbm=)%iPy#7{XSNv?YqjtT7)O zMRM^*EZeRTW|2btH$qTF3e#FGi{D6!t?M@t3n3q|$pvY9E>8x@ZR>q;SqXOQ>0u~M zhNPE_JuJ-vC9xLB!RD&(Yn7*XeQ{|?RSH28FH6+saD~aq{cQuFu5BoqgENf?hk~Vj8xt6^eR_@JZqg z$vu2)fNqzyIgtWGmn&osmDVvZj095Lob$Cg4FW6YTmS6d2IDF@@|9?sqeiCCYSXCi z9-VQhdLiW%rB&hou<+}z0idf{XUh(^waw%&VQvSCDzFH~y#07o7X`7}HTYZ^{l6KB zVFc&zVkM|nr!*5cNHl*TsLea5rAN^01F$jWvF*mN1%5aSw8W}eOeco*a}q)&iF9s< zx|E)W_e7?RD*yY?^R)$grT(q*IHl#IQQW9kcJJ%RGnH0`sh5(Q?EV;RhP{JKf^t!& za{3N>twZ>%s0GGz=c;B+5)exwP`}_mlec&&K9ueBjMeCHUIJdG<8CJ75R@RmkOCW5 zi6SEwJ%OzKmC~nH?q|2`+;`FOR5Fes^@+Hy652V}3;!};s@>+iRxk?eI?vzyIA(vfS4JhsyaD&#>ygO z2M>-j1G%SnZ~B&k&)QrnJLhGv%qpeVBo#Y+!3#Lj^nz74j^!f!)Ek92NZ*{LmTR#b zCu8g1(2AF*UnU`>IdgXh_k27yv$Cw9>#P$EApg@L#zr%i&FUPB<09lHWe7#*NX8a+&rJx8POqjcVItwG8Z6H$#`#0&Cpe=-Gt_pD7E5 z{QdP*891VHo`~b|M4HHkc%%5czB!c#dRVjVP;TJ8=-BXrL;n$S4>XfZVB(}VB%b>0;E%x@)KpV#0nZb z{lB;aIP55M0XVgN6V&rUPP=z1LA`{*hK14H^&*7l(bthYJ=V-`P4#~8g{x)`44!aL zQ8}Gwa82`xpd~oKx(}aD<2UD2e|pDOV~MCWzZbjTsr)>LFS_`Md=vq}(6?io7L2^n zFNMU%WXoq0b4(2zq#EG5ykN(qdy#6kf+4631A3Itcu?tv0pDfwN4Tef7ZHl5(Bj>W z-+(=1*IN9w_wGX0kc%@gJj!bYvq}fpT*+^VTELIhj6j$dQVD>DTuoL66Uc=4npxGa zx=~U>SZMhyT>N$Ru}Vmzw;b5wlfpa;RL9<(TPF(^U1)~?KBD9VI<^O@j02ns;K^dn zfEIFb=mlcnScNm{2Wh#*5T&YY&qRorw|vi~c|GTu(=f@8-3urLU1eN6?O0I_?>(}$ zutKJ+T3aas^!xZhUidpOhfc@*=>YOZb9p@7&JWTU=B0g|e|B+gD%?mgfkV}t#W z$HLMxTdG{eCAUY`6);1sicQl)5pD;ay3-eI3ly-3#z@q3%3@Q7OhXo!B;R~Cs$9R~ zqn6iyFifsp|B3Fm8C5sTwN8ZP8Cw8!I`>%*o73to_)#*rjw63+fZ48=fGVubvEcNm zZgRt~jo_2vFpvu(>>y{WASB9h(hvB%Eyw!q9Nfpr#%3eWx;BymT9lojLTYc*0n5;$N$Gn(YrYq!Y`MMaZRg#Ju`PnXh|vPw&eX;>v6ayrNQ+4r<@8^A zX*&GY>UZ@EXGa(%-TeU^V$F}$V5$Ct@}O;cr+OpQWEs!9^vq1HIl{ps#p`dr z5-7+?VZ=rm4GWNpu&J;J6AbTDH&~X4PuP|zNw~=@3MOsJAzi0!EhI0*>c6tD|4TCH!?0Rbmn^d5C;MORpteWb%SfuCMYLG36N9XhuFiSNZr|McAlQ@^BF|A}~6944*IKjn}W=pC%zC9$~V zXTZJ&uOf5M9fqsJ)S}nrRuAT)gD`H~pY>$3Qa0fByp}+ddbCygHZ7x!${N~qlIA-7 zanL6h+r-6uO;^XVxe*IZ?V!ZVS!kGviLGc7<~(LSIuHqZL4h(&QM^H~)}J$TK@N$F z1UJ9FKg>=N(6hcw0|>x98!%gaz|Q%n34!m_jJ?|Xrz^|-=Jr&hv~P6@x1ygXOZ421 z#3ghyErZo#@q+(>Ql{~8W>i<%W=0)784JI6URL_>A&PYmCw;Gc!%tR7);yQUvjqzb zM?H}qRv(H7JP}TlJ&hJ=^>&4^ct=}_jM_-^D@8=xxYlA*SU+hA_H4euMB^GD_D)*&CR;X7 zXK0C(XX?R#7^l(zE&I+ci6W@VT0<`Q{KbR>qWz20;x|k6J(j@W5B-SCDU7vsUC@T$ z$4UvF#T?rX?myL$IArO|@GWHc*2Q;T9{0KE-|+SwcKsP9|@Q8va`&Y)Iios`scl5wa`n`TVrx_oeaQ6oS8?)f#jF}x6s zF5Rd|jt;!F!M)@?Y3`_I7Q`9Z0;71uU-eDS!%V)g+z-fIH7N@=!VY?76Xp|P;s45& zs$j0wER=L_@C&yTS~VwO4lW=w;D=s>R99Z`3U>afP(iVhx5Y7f&hEYIsWmIo8}m}@ zc8H!n7i0gYfl`h9DIh!!dnDCCJ`VO3OK&R+pBZKt-{Ts!8N`I?Shc$Cwxb31vUM-NyenEW{er*Ul&+Trb78f+CQ~Nz#@z%e{qTG*8Of+Zl{s{>V zONYy#snJT!CAhbq!7oF^SwuVSNHOk9&!zIytZ8D2shd&uM614J8PE9h4C02mh*{6J zgd`%3sAq~AN-vg;vn->^>Av^W+PIK_{KZp`$3deE`@ez~aI$j=;@tn#sHIG%fdHfm zC$o{HhGURGP*Uf`IVVZJBWtfu6C@)qL)eA&g~g0(_$086lfeS}wy=>FZet05 zgOI-L!ThQTdV4F@D9tu11wXNtKX703wk6o4Z4bt zuDI*N0_Vj1J8EsA8t3o{Gmq5Z91MyHn+GxGo5eVJ!5A!mPD%IBXw@YW(x@KsecPO( zT5UKidV^gJ!YeEW--Jt;W)3UxB`;xgn5i90^}>DiZ$XZ8xT{x5=H3m2bOy`M0xu(M z+$ipz89Z*iXrQVx z9ZMfLXI({2_dsZP$7?Tgx^t}k!gFOnAi#3i37LYVO?MKF7u^)Bjrq(wK#E`f7dvIl zPId3$S-hJbz-zRtZcoZHjJ%6ot!3*QRIl;OGCx5$@5GJCs<4M-9&&*n3nafU6Aa~s zE)iB+@y0lXJTN396-#180BJrUc$sEn+b^jW%L>e%_^cq%i9%aa!3+L=ZVS7^DdY5p zcAo6arJBckVGRETUq+nVcHnN{rPENaaunn%f8eKRImo`?dX!EniIOb;yHku>Gav)%Su?V;Sh=xb<}KLN$x^k3vBp08$4S{MKUKG3)O zwl=}DN_bCT*V#LFrrDZ!b^J=(1fb8XP`6cK0;Ai@kK=0UDX;{NVb_WGw@(>7t6!>0w#GKF zc8m$dPdIqU#IqWPAozMIw~xC$;eU!9`SO+*6-{HahYF3(F44=9Zj0tsgfx{FY*pyD zsJ`NTn(Mn_!!)%-vTd4RaZD~>>h@QTtOU5Rjo(y%ZZV(xxmBYC z%wUGvq;JTc|u9ub!#v1?q}1~Qq8!0j+ zuNW;mj(Oi@U4YW#Z6&~+#Q!NHK#>V9OSB#l=<;i=9^1Hl(RfN+s5Di%U#C6~+Y@&2 zFv8*0>8-xq>}=4W7xIA)SmnBc5Tobdk?#DFS-7?4FN>=9c^J$}9#Vt)oJ}($UJNsr z6{qEcB;b*Jua!FbQuhZd>KNerJ#SPg+_0#XDiutOk|Si)Jlvq{(F9m`RdpH{uz)1? zCptB!Ta>IGNd5MzG6=T-tKe^Qwpn2Y*I~rB7rY~++UgwP?kz*iR1~p)66}s zB%^9y2FnsFW59+u*qchpSg6J(srImSE=bW`Z=2mDjGEPHzRo{wX?J<=_O;4pqge|My& zy;$XORlo$QLBgrwivvu3!3g@4;tfr)&Ww0yS#>Ka-u|f~4OR3Cv!)sDGb_A#H0nUA zJSZuxNmws5h8`bF-XW`cro$~tF~<5szKTD;#zU>#>H~*1s z)v#ZwILCeAOPQIG9F9x9t2n7TxT1Os&LhXTa7{IxvCOjt2Kizd_3+Bg>lMHl@;tp+ zIR{iuUk#m5+@+DZTKZDrpjJ#PgHB))!AA*Pby5p?bl~FK%R?3H3bmggI0E7qYkGf*s5xsx%rp#ipZxUg63XgolOGWsh$KGwA%3 zl73kwQC7cv&syua&uW4*q;Q&MANg>_G9>CE0^FI99E9qO$k@D7NDjz?dKz>1_i3vs znTNe!rpJZ;#=mt_gQGP@_r8#TtIaj9?l|(F<<~xttFU^NBn|-p7?>R=N zBiUpNGiW+$A$WV!_ftqjO_$PqZ0(I; zNi+jQ7eV{a6NqX}_y~i}adk1m_|T;ab&I55%?aY?MAm+cvr>vu!~r8w*8f;axcv)r6K!LD%PYPgr(%vFhu1U zRPwoYbBkkE?!gszNM1muGd+k=SW|MT(^%nJn-G+*TzFZ}$RQa}QVo;eBS$ox<3A0K zC?y!LojXKV2)f`Sk0#n1IPKa*SF}h2tlS8oX;;247qeE;m)g10fzwD(MN-zqmOj`m=S64|R^5SxyKA2Iw`=a;ik?ROu&9#rDh2V)PIyH$U;12L7Uc#{YZE3 z(L@jr#L6RSv^Im8eZebx0b`pSHU7XkOsLNZher`FV=r{eBy|_QoDy@qa_ApU3Ik5C zp90>HVSNRcQ_E%N{D7}bw%xP4111x1Wq>h-twjY2)PiaHk8JS3>D8}NHF%KjvUc0e z2cvBrOJNUTnyk)&>&tR;lLG8o%0Hf)D@gSDcT~OwnmD(z=q$@JBh%E3L4Khjt?^yTWG!*6_fSAWv$UcpAXWhEBK7k+rz6I(r! z387nRPpH}?P|g%?I$0Zk&G41I?m~6O>|TL;er2xSs}%b6aD=H}?pcORvS?|9UUjb!D!nDs+{#8=+&} z1V#9iiEGM8+X{Uea4bKF>w%b`Kud)8)z6nXc!gj;NK-B{+!9~e^D08bV|>EhJNZuW z*pEkydjHm4Bjzq^ZjLAtcgA#co*XHnTL^oLmC^rcRNI*ec(tJ4hF-NyIBs_f{KQ5ZzdqE;MGFWXTau%X5bT6N#9!l@FyEeE58@cfZxVh*!|t3uePkDxj9a{Mu8A2-d5`1`%iyj|o%7E@xE2q}5%VgUa?0Kimf8Zc%VV_Z^lYls2a;Ycy<55hns z4blB7c&ipI&}dE2vISp92GZ(opEvB16Tis{urkaiG!1og7zKM8Qu|>&^1GGmBtepR zxB^2g<1>=!R0KD+YpYuC3C=S$wG^swKgkk~c)O^dLTB2juD804`A7n19ZNZ)^~glV zlXJfe!&{m)J5Ob{zU2N?cM_HZkm=W!IVNn)%5t$A;0dSC8GjSx>VDX>E&m(p$qR;=!F zNQ~s1dQlIUcuvaxAGqR`0q>NJ+Nvl_x$lSy-cv_Yi~1Iuq0XH_#C;y$KknEGco7#I z74~S&bT`U|dA14;XVuWnS9lT`-1cK{d-7t(bBH@E0%gsB6B8QDhJc}>jNqc7OR2$@ zngl#+g$-a8&{=lNxYYf~@Le6HDoa;lkUSMn?k1B+4VZ20X_imn>&={tYp4x(gv~eh zW*^4NuOG0d+J3ztN@Ku9MTw4SEm2k})x8}_XOFjqzE?>X3GhF_qX~WDV3MSG*t(#B zio|4dU`VHu!1tu63+KwNQUa~}Cs!kY^&XpJj&&?5m)!OZsJc%*;ENkgrpdaGFtGGK z5m@S-DsqsK8izR9-V|rOGaoi_WZ9xVsVl*fnY`vY!lOUa?akU)$mlegNxL#P*J{(g znuizSJ?|MyYgpx8dFiq1h_HC_EsP@)OexxM%$KQ6NR=S^#?9{D<5#d3(@uNjlc!g56T)VR1Bg+HcZaHVD zE#4c-{^X6c0S}Dh7~*z($`I7C+=)-*gA{S26e8=F(Y7FYjSm)>1TC63T@#-IL=^~B zMU8>k6YvLAu4LUz3_PPMtsD9yv&jU{`tyR!&_?6T7uem=1&fGG3q}v8?Rkh9t+PVA zc(rS>N>jigKZ|tDglV}Q+$W|@kVSfonGwp5ap-)j)yJk+8VvL$Obg3#s3faNNw?03 z^r`oBptP^ThZ@6w&Ox(ep#YS1y09jO;w>j`74p=?Zy(R{5BcSc4=2L?yMuz?eIQQqVQQtp$Am!IuxJ>~?A}7^qq~c1Mc6#0}Uw~gNmugiJn(>L|rrXj; z^KRwq8>krcaZ4FeDKtr8cNjQcuvEW9y>fM==`66i4@i21^WxgY?XL$$X*09h9TL_z zVwQb2%7nZ3_y8rbftjhiO!pcfnb@jvaOj>^A*f6k(@s|xD`!q!bc>3^L=ZClA=8q^ zy&cl#Non}8wIpU@lmDEEfP^p@+Aq&)j#`jP0Ue>o+-Xk9Yr3{ur%mdO#mwL=A+wNH7AaUMTWa-7aBm3l6p; z7Ru4E+ApBS_ds7pe~fvVG#4kVZx-IIqy4iG80#;yz_$TK)dBfbf@hyNQP?{e58J}I zqx=_EO|E*S10a~BZ%sGT{y{GAF|ZOn-0bV>cZrjrQWs4vb(F@H`4yk?4f*Qg<`l4> z`RpCSrp$UllX?Srb03{L^jv}1V2+UtyZa|+t*P%xl6EV+jn#&BHC$&;+8F$-$H5&9 zW48`|Y7J7H*B^wkbrASYnZ;eaIt)&+6d5t@xilQ|(LmgG*9#Qt`}*mBHQYjdVlIvj zSF&~xo|<@Y6ncgr9BV;Y7qsYr%JK5pYfe-Wx}sDE@DO<1zuO4Im41hD7P-Q+R=EJIYjR;DcxU|Eq^QT_9>18VyL{7vgM^jV!qu-KFG7!|cFd85DS#!aZ8A2jz$(9DN7X@zjEr6c(_dKJiC0z*hHFwU;Z?MM0Ei-Uzz!@Q!TW^igs)R^JP4MHU^sTpoOqS*HWnjgJ<)8zy;FuI2?w zDJ-$0MB@w@_!RyQ)&%Mm8RPdknA-nX0r(^MrnZ(0EXEi#D%F9$AkxlFAA|5 zHZmn9wHr_mdfZ1)3-u+-Uo0dvY035Mb<4{~;ol9_D?ZlS4@Tl!R&K6Q(bf!k5nbD{3%T zXar2l0G!p0*I-27dhr!U)^51*_3%6R@frZtzVhGf{H4Rx9`*$7P4_mF0orhK3L;QA zvN*7{O`gy$9CZMxZx1{J_){aK;6SWTB7Gqa)ich&;NEeq=ixSo&o`!g-K&-~wb_&M zmvr)(ic0+xt8f-CEw;Ib10U^|Po6WW=Wq$@Z?fgE&k->G^w7F5{?xF&kO2kEq@CT9 z8O;<>=<}rJ-JCo?p}+djEdZRoBFhbPUUzWJ@RMZf)J|I`OEzu{`oUI)5SiMS%N{&?%%{4)Xr#^6gT=ltVl;VVSIf%Go28<4-8`rT}2g zFBq>CR&smajFcoXBq(FfRG!l+CUogq3M#S>Zw4ea6MJ3H!h^GCmzOoEM9=0i{W&Hw z6p*WVB800WFBFk=IT3F{Mxkr{!hi9g8q$z!1$hMQ>c_iK{`NJRK?@*et9BXqMV`Nl zoGDUWYdy^@kI%I30BdSJxAHNF>#uPM!3ynztIji=y8hB!7tm)ZKp=iiy3+JJS;_Cw zi;OO(N}vvz2-r-r6#Qu5O>^!9qG#zn=JkYvQleqtPa;SFiJraW@<90|!H6COWk^-o zK>@kyqjs-qeZ|IhlbwZ`?8#ud)WR0U{w5$fgvc(I&>B zZ@=ovHh?EfmxeY?WX1!#4AGg3B}o;X@=nuE#(XksBBvZf13x)ziFH&)#iR0J)p&Kv z_$WHP23wdr;xf;UPnDK%6L4JvtMM~($J72scB1xInA+HZpO(CJ1jKI00sP2#{D|fs z>tIz9yM3KunGF}Na*2cFNt3P08wmW49MY}m6m2f(DGnlzPC$pJ`D88zb1w=rh!FS6 zW@!z4FyvWb2p|)h)H3#Eb^OYKw`35~hiHFSVVIlCCYdgV|J>GGO^y(;B^0fd9ZktG z<;Lq(dR0Eiwc`E(s&Nlii_9Q|1%I?Tc!~w4yM&;JA@k>Q#$~^3AgvWYl<+=CZVePk zpT)QUnfZ|4>OABE^<8InkNDz}jf@XWf*TN|0nd@9v-^Q61_K;rm9HeeW!vE;GDu&h zT%zW^{Wf+G?NdPzv5aMB$eT1;S@V84epuh`M+~d>qH77mPGm;Q3`ztSFz*y3>|$S% zJmQ$#b$0rhS{O3UVqgCz_Y}P1ji0|VAru-fYqhvjCNKCk_$ewoCEcFijmey{*%)9x z87yMxAXxNacbS1hNo<32ob*H{jYoG|95}HCynCeISZEA0K9(0vWVDv-$bP z2oz}PVRNTGLpeSBP=UgE-r#e+-^`x5Cn@IsHo++tkj8y2rEGo12l+(Vs4+TSI`3q-G1Bn`-qm z#1W;<*-xnPbjS7QsNS6W!f$B;?>jZ!?oBxi|L`GmG==%YW-#X8PLaE;w)O+k!++0g z(ywoFbkX~M>!)au_E^=oY4oEU^+`>otUN2>!z`rcu)cDiW}u#UqX z`S2xV@lVwL-4X11&siP;}ewq`}=cX+h6HZLbzJ4^Rng>v!CwLBeBl( z=YsjxC!+|az*e6FwB}8Xp%iA;#@XSjjNW@|ZZ_w0dz?tjT6}cNvyyoPYS}G63mb0s z;S#&jlww^WUlDrXtCDXHu0jE&LWsuJuhl$W2+SyALO7v6xK@$mzu9PVacUIQ6hX+dS@Jb$c=w%gKNt3uV>bGBI zg$^iTTTMkT;>tqr!3%;G72vQ|FjM8Qf_V)J8BHFP(s-u#xCv~is)RWR^L%>=5dU0| z`4zSn2l$&5Mdak!o!_BTYJMUge0M*hLct!7VkSlcTjEhT3m4ib#RK<*z@t2S>N#rX z=oWIPCM(K(hH(k!suJL1%_)kf@WdbK6V)ixIHSdS6TNR;SMinO@N?-(V?Iu4E|w@9aRL9<1BYbb|;=UR}S18Lgo4eAUC6{AYYv^dft8dwL8+x zulx-fWMTJTNz+m6hrfC-3SGJ@+ebGT?JWuV-`i7v={)Ovo~DPp5fJG3eCcA$`S=k( zLNE}A`imY+*?`c}v_cXw#qaxJ&i(7+b&HXE$;7+FyTPoy0`w})MCwKEsh4ddV97WD z^KI{eWrknv?=PdvDiQEVq??X5ppG)*rp5Z^suD;V$v@^a%vA*aAI+LSvJ@cXUd2%9(1PHUT*Fu0E((*W#|0acV!GNKGsPjh z7$9is-+`+OrA5(Qe^0J|KB(+2VY}_CWCQK{$)qaq;LBdEcU1M;7j(f;8TPGXO|)hq zEC+~D{V?#A62UVybj}s(Np3|Xd_>{i{`?KFR0+!@(bU zr}26=q&qi!aRwEJIN@~vMV3R(pUU_(<(cBF%y_O`pLG4c{M#e-hm2IQ5*3A6H>USY z5>g#c!*||ArdlJ>I!>kSlOJEL4tE3h(nm}qg8Oa^luvM7?M7d{FhL-7D5@cn+9uH` zS@uZw&BxWBrPX@I>l~WSFN~hTOndQTEa1)te_y{WdZGQm)&(p3^&`(vg}ifLri}~X zqiDf+PX+zm5`8>&oYUb}>LHu5nTAG68~d^7ejx2r3^R#eUpH6CLQ_A_TNw z7J4h(_(&X}Vm`6z_Q?qq6)Y0`OPBdcVk6z5Ti<)H3Q%?bnw6b<^p$0S6+-aX1S3Ltck-dD^O_E1p^$A&)J)5{Ejj zE*NfdN{t^=?b;|dFCCDk18XhD^Mro;dEU(LQbNeM^CcLgalym;G-*qbS&uA|LymgB zW~hc8k_hG?*FuQ*ZMx^3P-&<$U_U1zJ5_h~H_#P*7Jr(cZ&ij8od3OXwwB3;=F)Je zRJ~ea#$Ckkc7A|=A$S_Xgaa^vJ1^7M)F3wit?}f`VpF&|ny7+y4xSxS$MuKt1?6MD zKnl|La#POGu=|bke|sH+*{PU%4e_Xx7LTGsfwO|8j!oJ~Ke}VtSXMrYJmfr@OqOc5 zpe8jJN4x>fe18$y1F|BVi8@U|&Y73{4ets3ly9G&%HNft0XD z5W}J6v{>Z-2~`-wLb!@r=gkz}ekbEu=Nrn34o9YQ-}iy->h>FIvzZGOKLI8GUW*P~ zNW;7EZS^}vO&}Rja#U%TIGf$Ha#w(Tx}z#a|owDDytEy}rKWZ9V<{*H@q(sw7_&_|CY8?Wm1?hJ2}yN#r4CvvL6TH%qgkF-|2)C%^EDI{8s@a1A+t4YNwWlk*{g*vN1 zO}UbE|HaMhe12hh30XddfG(~+l2e+|a}+eWcJ#~zf97QP&lw>u+$>Cbh3CSrTXzw& zEF!#*#nj`#L8bb;d_@!8b@l^wNhK1Wlw&be2zn|iHXob>f&5geb+7RNsKoow;qv6Y2{f;(D7BI{T z6|V_wXZ`B6h{;FEQwTs5u8C26w(0>a|+)U>&#u!*6^pB`o zR?h6_iqP?sD8q0rdNRFP>gfuvIH0}beazmktLA|nMGU9Bt6Dk%9Ws|50|E^J(CTR| z1504m@o>#k)-z3FtjwDf|9kEZnni;@#I~IYxK-0C zdGbMu?QLO_XcsEA@)JIcVfx=J#hhoB(Pw{^7wCJZ(a<>^2uenBmr2Ctwl;nI_ZUX! zxnq7?Vp&m)3JXAzIYP99y6RhH37w9z;F0uJnUQ z76~UV9|iJYyr`O0XG9kjA-x^9tCwin@|k@to>Ew#5@6jzj(t=9)fZ9{7tNDx$fP0` z2bQW6I%X|CnyfEHf`3}{A{MoL9j;Aih&)WNHP7v8UEdP2|J}_su$)6~FkJ;of;^_! zjmc2cjMR=k;D@Z$(norc8*1vK=fJon!9eL$#6k>*i(uy@BbyN zQWl7}u=WDu^bz)hC7zEQ;3Wk1WNu;<8(!Ecyj~1_S*^X5cy^EJzX>%a#6+BSVVz)~ z>sn?~Da`~3HMeZ(WfjyB^Gy1#jWICf^)%E@NpDbpsGv_F*&9Gn9R*dj*yH06$oxkF zW8-~_HW*!3Oj|+ZoIbI{M>{f!-nsTEF<#E*QudH$rh5z1C=RrcT7sE`OgH02Zu6)+ zRd_uj*@xrBNQet|%oo9YaQe?76mUsIi$MJA8;J@5xfS#hlu7Sb#aJKCONJtb_00c( zY?kI=9SGM@Kra$(4Qv}>iA{@xI1Fmrv~j>_WSm^;HU(;+4k{H)j+RJL)J&7|;)uD0 zI>Mj2YiN36GfF9hdz=(nvl&J{1b*fdchsjPmYCC3k9_EGeA~oG_izVcYxNI-kTlV~ z3DDfG1P8DIO_+Ae%mX5xu22P4re_+eN#HHWUvm0e&aqy7riaDSVo>YQj9&EYaa5zV z@dhu2TBwCrcIY0*P!||SUJxbXjBKChXIzxC&;H32PPKv`p-_}lzEd@JJFL=x?_5Sh-!$-G{?b{UAa z!z`)L=hJ$yCMU|3FGTv5Y4~m<(3l%9Z_e%}WI)F^v|hOP^M1l)z*E{)n|j$Zq{5On zs=5K+r^JA3VzMPI+CIG_i6*?K&T#&oqo zAoGxGAG!Dd+1ikP zmF(oDC_a93H3BeE2Bj?T$>HRjm!#NUTaU@4YbayDCdui{F7#xW^Ku4Ns(uoWQ@9n# z3~cV^wxpfv7st8a3g@z`;~Nt7S?`VFJ-ojdp|E>&we`JGbEb>pppbJu06I4DP0FF( zu)Az^V3rzwDx&?Shtt&;vbdX#)@utOJK&fk01xeu7AG^Rx{oFndt!wam!03z38gX! zftXzXB=1;n)HHaHX*ymRo(d9sH%>{5zzDAT%Oj_bcZeRi@7zq1#^&~;=!*D1s)WV5 ztKvjrA*?-5x)wE(1qcD98~`69RgO$7jp_1QoM-FoG!VilVQt!3sML|S_VCW_!KFcw zdRJbDf8-|0sjYh88cl%RV3t!e_A6uNl1F;lNOp^cAn?B8n5FD7eKO%@BQE#?>e}xH zWN@k~z8hF~(m0%Zl%lyzxZi?ZbBmp7NNMTbiJxO zQueE5FdOrsc|>+q^6h-lMkW@3L=flqorloWTE#kJ#>!ly+k>nJbdB1^{&t#f*PObQ zyQaS*)xUr0Wdter2cTwykg{fO8k#bb{6~KhwedvWd=2RSt+Ah%hJv!zO&i8jm6qXQ z2O{STh(b^OK5qq+_oTi5_F)Qd+J3;1qSpHA1O41eQo)gWe*qn=Dz@k;yx;f-nyzNa z-l*r@`>-RD!+jkd|KjW%^w~Rl5VkIFQ}ki5kGAe{6z(k*5CB{O$&DLrvk=D$)E7fk z7^C9IACY|e_9$ER*JZAA)g}~lqSi=ie+$IJfMZ$fpt%?uRRAg$pMIvH< zU1Ea*oDLb|#eNpV&>=#-kkbpFCgRFr;d`pOYicjRHN}HVF+YFc$iC+-i>Fp;G2%5fC<^6*;Tj4 zwYMXrE)5=s&Ha{E=$hLzj=TB_h+qv+idrfOx0<&W>B`+do>-kD`rh!Qhe+HM$GiL7 z>0%<`c%OpmQe_qH82qY6Ab$4wPiik#7d?pjY;w`y zVfN*8GH|dpY?N_Z;)Q7yVF}g*_?jWK94#u>{@%e@HRoN*`fq*k=2WsLK9kaM*=_@% z{LTN!I)eiq=TB_YtYV*{!=Rz&^V=T#*bps);l(qG{TOR5IGr9|5OLpVP7JL8X0A7j zUBQTn-+32=&F(3J;{0G?H=kr))ejs45b)_D;}&H= zj?D^Y6WQ$4yA0DDB9_!AKJ!%5y7f}_H?Qbs{oi*!C*YVWz5$JEjMlA9Oem-5x)4B{ zU$ZMCp&+tb&LoqrY&<+4Jp;%a0myoe+96Ld2m(4kPOj@c$cSfN;7)~`9x^#=oL_rk zHb|>dULM_)qcNDC=&ZzDNlvaA42g%%5j!XRD9~QuNjLs{G|Tdz_9uK?%l7Fwp|?>X z4X!MmOL1k&eZIL&2Wf~$=zd>k3z_qpkX#|attjY`ZfZ}wJMN`{i*|pcCjL5{U7U4p zk|RH4eaVL$AYFv>XFCu`Wfy`a#X0t4 zef>ndHjgP}j&phxh3qeTES&J4dEW2qXnGpYUGe=_5;c+;M@kR2(K&+l1+-wOuESI# zrg&Ot;Pao047wy@!YlyZl@B#9H2_r}6fj^1+^xm|r`M4@N_W_LhH2}10y*b07J%!r zN4LIFzQQ#p%yMrkUeJm7o;{U=r2yG76Ut&JlWvntWVAedX<;^4%Exv`;7S!aah78f zo}L_5s04<+5sRrV97%9bPx#Z-4Yu4ddwu$9-JAsxB8i3mr{WqgsQgYeS?fb*{ZeT%}&haq);OU;NT%H2hz?(wUxx1YL-A&%R zwI>+J7Vv4F%`4hZ;YUMXba7D5qgPJzkNo^-9wB1n;jEmB)XkMfT~e^{uaqk54?#oJ zFGr&Cam1iI-v!==ed8EMX3I_-LY^cFy#XHSsC_%91qKdNY*aC7wr4jn+Zq=tt?eZ$ zd$SKQy4gG&LUh5jxFkz)FNp`v_}<)RGtyNr$uR&|`#hyowYGcb?qU8F6~$iN@k%XF z;BHHj^l9inZxUCSH5s*vxx}M+Rb4W4L9ok5OT`4lrVuJpQ)^H(xgZK2w$XY^6 zQe$^~Y)5=9c2tF%@wAbr*JA!RS65lqWqh(1+b1g4_88EngE$|^MY*}HTU&aMD@%xc z?afEmB~-ua0N7=Yh+_M_t>iuQ6AxO{t|;xSM>L2bmr5MO>vP0UBnlZAP^#kI?4rgW z(pKn<9gRyDgNfx5xlMwLUH5YL*#9Itya6$1LVKtzFM+kvX0t{Mug7B`>%Q{Xz!4Gow>2jfh z(R7}3`fG!^FU+#%X6WWIj%>Bgbi)paN9GP@N&v!mQy6BiFQecC+kqkXtPXKCWS(v{ zWI#N()=go}lx+{X2Wb}RFhf%0&M~w~U2e|F7@rsMoqL&Q+X|7?uxea4F1 zHqvJ6tkHV?wOTo~V_Xy2MwK~7|Hyr~2xnAGXz}$e^PY|t6+_}L(JbSu8>KExuuv%6 z_+~x*FM10($=TWClB& zMyfe}Iw$Gx88#5YYH?Q8iT5rFN2Kh#be;_e!XcvwQb*hnGelIil*=m6SI))y^l^k|i~j!?*`fsaIfRpmQEL@t_39;&tWExJ z1`*1LJQpd`248{zy5;{83L?Ey2c27-A>cS8Nk<28E&#t>jzHm2lJe%e;CME~3Qxtwnm3~^>)+Fkp zt%^Y8eFZU2z0OYRDO2nf8K6(XAVfK&riF$_{SOx&Cn~A9(ML!xj--7De|Q=4Vi#HK zT0!*T+eX*)XuE{Nf583qK5DQn0&qL(6OuB$vz#NYt!pf+KiQPJ3le@B=dJ}$lG*q$ zxNyZelDh{s5n%_^gVS?pxYo=}1Z~d%Qi7xDT9+M5Z)wz|i7azA2UGE5+;N6_}HJGmyG`EPRgyf6$YjNM~1bJ_lw~O%p}P2PX}c8f+vApo;y|f;?vF z(0|D;%iUdGP(2h+%D9ilP)#{+4+=~PX2pV)L1_kjV4KtKCuz_i(u@zI34+R60o)6p z7rbrt;MtC+wWHz?;kqK_kL}JO&wn29gYNh6HTE2yCb=&%M*PPxUO;tT*e&K_VlX(V zV>7NNCLz)@hLs1>>gxx&(w-u8v$ydtsDQk9kIqb3?w z97RGW$>Z#t@1MV$kEP2dhZ`EIl7PfWB3D(5n_I;?)3?c2RcO?3-Wcq%QcgG$oE8^d zsgVnq84Br=vzmD!sgRM4bS8ow0jY$jfE(1J3P%PerJWL7@GKZNIc0KjgEF$huJybs3_ro&%F8BatA&X`osdn=h4Lk5mFWb95mX-${zx~uq98c}5 zE1`}U`ryUX4w_EI;j^y_^hn{~J?v$YV+7`%CRYG_(n_n_*rG5`qBHDKm^I^N`$5P`SG1z|46eDSw41 zInK<9TFA1z;J@*er%}I1U6p=exLc*bUW_D)-vS^iX9ilhkU{PaBFZ$f&#H@i6|jOT zb^1YE4d6f2=odH*Y0v$x2r>%cmcabdqj9^@VCgX2KphKX+kHYGX*3|an2yF(p8h~? zIx7)mhth{FKQzG_r!^AcQe6k97=?RsBxD^Ny3%7m{*f8N2lAob+H1| z{js@`LAnO8{Jt-Qhr9p|y%;4$QAGz=Iz#)dJ<>vJY*q*B^c^*{AAB3q@H7zOFboFwWad$jJMvW}TQ z32JrZL$Fn*$&m*Ve0O$%XC*_@Bs7=qncUvNb0Y2q!Zs*d!ppSgZk>K3(O^rsb4ths z6HLlW z0p<||2*U=&N@XrJN}wicfwD zTXem*1!A(kat>P|;a4<|s;nvpc<)azu9XHa!29%8tVY1RVoRm=RjZN-7U+PuPdN0{ zEW7hWr1}1R!*B`j#A<7ot$}U@ZJrj?+bPH#Wj8Oc7n!jXebYX&H zralIYXH%eq@=3{c8mgS>$N=hd1d+b9pt{;Pb56j{U0qdllqX;ux$<;Vlr5e$C}QZs1B5A<(M$=g{ZNmoBCQRe7?)y4^u_BNtE16BWa&cV`-SJW7( zxpSt)*=6ew&Xy9SwqDb*W8M#98kc;rS9kwUb2i6a%;Wzz{&hjrVeDh8SNNfu&D!Vmd64aF~e| zSnz-V&Y~fS*od?sP?ifYI3JpHXdLGzY4ygv$QaCiQXNTx}&)E&}MXeI6M&taop{vJn_DGC#>j@SHKw>HjFQ!QRwAG830(%)2a`dHLLm2r(>Fu z4;B+Bw#G)vd_Qdfe2E`G;|xJJI1a|2I6nT9#?9A(K{gSui2dZ+Z8|e%Z4j8 zmLcr4cRy#~)^|p?=pn4Qr|~Tac0|Ky)?<|3@e+k;f9o5AM4*vZfWhTAGec$SVD8>U zFZ)TF(^75vyzHjY3?yA0k$BHb`~pL(<4Zg5h13i$_BS6#NvgO|GA?Z{vg`qGJnQ(q z&)u<|efzEc4P1xcT4rHn&x$!glWT$0$~ztbIudt{ea(nblYU1`FK;M#(GKdms?3Kw zd>laSt^W2x@6?@LtUJAEm@%6V!6|Xds2aZY_^; zMuC`^z~JOBzD`&K5qhbz8#L2AsFoV{5hV(exA<5^bhLAC8FxcY!YMt zE8*}F_gR;Eda8U~Tx;&)*r<-hv+X68z6zEEl9!sawT*QSu8qRT0wst#4Ey*Ijwpd! zS#z{N>(w&K5RT?28`Y*2D1Uf@8!|4@aK*UvOB*#k#e_|B@z|N(N~U_sV^wfW+;zcL}z>dr>VUYG(e5qpiXO4e59fq71vk0q1Hfa@<;O;t%_?7nGKqOlE z4nt1{HQ_z?GB+h7o`|qAaQGnZ63K$IHE+arI#ue<(2DnmAI0njBg#y#8!MlV4DIb# z?L-+`s?Ok%H}RK^5mS-=Lb;UX>+q(rIN1td*vIU0KBsk!iNW9;zHe%W2dCsL9Mm2o zKGY~vh6;#)PWkx~-YnL(wwZh!O|0^(#&P_FyZ@yAN_Elj)~*L$gAaaJ88G#h&OP{S zCKxt!-CL< zGB^&cO|ktEDo4Q*bYjF%^DR$Rz+ESIOmVA^o^+o+K;aB@vGj=l#2pakh{jujVZTam z1W-p5CI`4l7e$q|pT)-7%{HC{Q>D$v{yhVvzO0h@SN39rN;DmX<$}=oP@j9>rZ5jU z;?G!t;p~#6bZXIg{p>KB6JIYQl)y@my7P-H(mcGz-Ub!$$3k_h^Y7_SLMp|f+N@(E zXi@-36PcMi>BdJ%hT@Fb7_ zH}7pZXR>J|#)QrU6_QcX@>o^<`|*BvtmV%?sa2&M6;>ABKLv%jRW znonRddCcJr)2IBI7fIL6oJ*~$LENWeW*A`ZXR#l@R`65CLYt1+tBRH~=12sSf%Fs{ zL$v#f)Hska5^3hNmIZ2wvF;sI+{j9HOi|b1d)tO=F3jQQX=&n9fKvX>xrS8TaN;io zn?msNQrFgn%H3{;Wm@%b;VT=P^tqkDKN_aQcu368YdAs{mL@FRstZJhKgZ_oR-fEO z;a={lq`(7mG1Db@RUCV1n^-FwDgtrRQ+Xg`AUzuy?i`K?hxU+_uLB@x)%;90A_fkI z`2y91RY=DUu4q>H#~dMd=xo2rY@59rBe!P0yj4i)2C zD9G{&IPOqan!dcA$&jX8GK!y!SeG+?7izTFEMmh^c-<^EgQxQ_O*`3Rew;E{mZL&5+!aAO%$kZ{>0Ss@e# z2ePSxA*Q$-E9u5}Dv~=WH2}*6YFnbfkOJ^y87Y5&~P>@ZMlZ0|G)Xm@`W~Kq|9=@Egx+e9Kq`jBZyP-A8f>5 z)v}W0{Ykj@9Kn|%g<8Nw3)<(C$KF-Wv|=x`;mT_4b}>&`8Qi!itDG<}mTn#f|2ja^ z3BCx>MkVH#EqB$Kh|CZ0q^oMzq~Qw}4xa+uZR(TSrYu6$tLtFdSp7mN7?ntNy@&~% z&67r41V@7*PN_@axm55TQPaf;&N*$_-d%@5wsLv4&`q?Ar*VyVk!81*FWE?U4Lq8K z3Z;I=t5(ZaiRQ4tdon&tms36I_wb4uXr+^&-6ZNyqFoql0!bH&a;J^b)m?cLIbnG( zrAtPSgKUS2e0Qm7XfFkeFjOW6acOr|<-Md|4gMA7q?+wJ`<^_@u~8(M@3Hh~N_TQY zEZ7iuFBx0gCwsQDoHi3}AvOVun z2wwNz3%r`aL=KtJ>(rm#-08|e#FSjqOB8koLA^QQf(8kxYf1uRKuXvSoEU+iameJW zEScnf^(!>4pqhco%Pf$Se0Y7iw7lxZ!i-DA=}<<1WC<(meE^NXJn9b(+>tr&!g^h* zvsDal@cnidx0rCZZ_^Xbh6snub4_`pgxL5!lpF=cD!IGBV9_$BN<^8R6k0`R$s>V} z!{G8#;c!j>Ru-|MIW%B=!ZM=)GQi|OzIM~CjH3<2w+>2~tk)c&?aKsyi#AC{(bu@r z<~mmqf{a$MwZJ{42Yv8lMcTs^)C_{=f|(7_bOK`V!;1pe|zF@8+#(qYfcW z8ldTQynbIvFnm)zbm)G7DAhdP`fZNSX|flV?x_&YAIv=&a(&p$Jg+h{ZEgMg75)dM zw7-ZRk$$H>0ZiA(Z88?ZOh7W~ksTGCZnVD7o1h(K?rl)PAZ`(Wm5!8>333!wtTgKW zo?Ex9dzfsiV2un=-=h$dwL$h`Aunq)(du^MGi>-L`joWLjWa}FKM%Sj#QXl(zz)#% zVlgld@jRYb%c{(HdC1|-t?kPp*i`YAJ~s*;QlkN#$@*B=*azt7tewe778dbNwAK4J zHT9!N<+vztmKURz*`bc;=`geF##rf}!9|iw8kGDL#fRtCDXLq!yGgtzZtJvC667TB zpqVI@ENNvXrPRianx61;<6!eUo$?S6==-T9%5!51=GLkKiFi#<$eu%~!xf1~ufB{v zfc^C6sMwa;aHz%l(WIo*H;1jS1*gG zq{!Bh76(V#tNX(5vQbhqsr7D{LD(H9g1H9#4LJ3270Wx_Uc&`HD&I5@zG zd?%fhAYbSqnr&+W#sBZtYV&OIrX^^2$C^%^rCV`@p1%ENMTaR`Ig<|=-;VzRHnIyf z)O)467L=6E%pG59hU;HMk5tZP=KTw6mg%31YM7zXi2XGe%g*)g6sEQ$v3|ocoz-!@ z&Wp*ab&*p7{$NV+tf+>oM2%p1^A#jJPfI`kF-p2z|Yfvm@rKZ4=V-eq~8EhJ1wB9_$;_?QPbeB;zk*_8YJ|h-ucxz9y2s2B!lu6oJ z0fB@~fxpYGtz*&;IC`T)AhE!7TMgL-qLDC#+K;!2t}6c@9N2kzO*NX#oE}0Kgn5>JoJdKeC%YEkJhl zg3?Xt)QX^Q=#X31PLR^4Y5I$0AM|9{&AhVTK9$EHccdh7Qm1}~Z~7~B>D)RC-{co+ zL(rdj`YRZ6*azqGLmbEquj5}9k;w4&3#G?TI9 z`(V(3aVmIVD1C)|nB}{Xj#0&3iJl6;?Mvs9ms)`ox@i!Zy(rZW_YwZITQpBRhsQh% z{*M1+%@KL%BBr^}mqt9t>vTR>4^wm^%bTVd0Iy5+HPz#U@hb$cMDLLx_5spra}~O1 zi;97wNYVVp8kF5ONs_cu@uw`|<4eQE;fH87a8jX|tbJdMU*j?{7X+efZi$rpGO@9w z&%_OGT%-xIqhdh+$X-n=)(-f4AaZd-a*F(^u+>ci8u98Re=_}fr5DO8pM(^mDLnMPko#Oskd-GoTl%gB;VPALmet!$znKs`LV z23scy_0N5W<+ttx(ky95wPhbpsUopL z@qb4LeyD0odg3evMJTT7w>lS?xewEYHM)Gw59yk>8z+(6?k`9adSE=91^S64g7Ac0 z#HNqw0UPSFdJ9D;Fc-~Bu${sS@lFPtU4F>VeHR+rpS0PVI`2lj>l(3qL2Q#knVk5q z-zj{n0$htfPF|guT}Wzyp$V1lqji8(=+2y@!2|FtmGQjTD)6Mqc ziRtkC8fblnwy1K9IGb z$~GNqz+w)HoPQm}Gz@W{5GQ=VR%J>MqxTGL+LC94N%>c@9GTa+;fppjiJ%Ejkgd#k zLN#3Si)N}5aj0_llGZ~RteRGOY`E+T*}~r|zMJnI$bz@S|3^G`SbK&(k4B!hw$O`c zBiSTnOqK~OVSP4pYx6CI`{1228s>7ms$6+ZXM{sjrQOb%#WBW<7&Kvm7m-}ftRDEC zVlxAJ^d$YaWS4J(7Lbdr2LoZM05C!m5qpo#lN~*S6;v)6HM^H*@dblhsEq ziy|AMpdlBtHPgLahIR{kZjuIEmVkh~>6HdL07@Bee=o7f$Eqyd%1_atOI!@#Jpa`Q zPR&RkNHq)j7NR4S8GUcq$7jfY^BD^B*~Q<|{Xw|{r|Ek;ThGq$`Nfm9e`_= zi4NY7Hpdl0Rf;}uGn^bntN0bPfeaaU!Rg$D>maoQcWoaU9$%1}x{;vgCla-gRl51I zMwj=%)w8}V+uL$3ya0mnFpb(dS)uK5ev|uVUZ+f_!eKl@885t(=yTAvCV;l;Xg*Qa z>`gnAxC6DHV?VU$mno6c_8~(%7DY`bQzac_+KuPX<~vXjBcscYvW3_oeXr73RU2uk z>kKI`C7KBz47#km9{0fZIEUjb-s}&<%l+^1!I=rAF+g3*>+@Zh>7O#^b@>Yi0?>8P z`uPn(8rXO4v|11qsWV90Z`Gz0Zs28ljSa85zvw(%^E%VRj^@11ck%woFI1uic^4&1 z?p*U+4xs+_4v$a+$NfCe*r{pisajzXMOdVA;zBa8hAd&BaYU7mG!sz~+>ju6l^kR4 zfdBBaYzoVbYQ$Lj=ODdZ<&mnx(J>O&^%&0Mc?^Gx|RinI+*nsN9Vz|r0n zA`=O)oj-+NAWtLmmVsCaPyhU{V(5rlOQRvTUIgU={xTO3oM%}J2Sy_eor3Ldhc+EL z>Z1t3n;*9dmT-4_fZ4NYP3f%5ounC!NMfWKY&QQKvvObKY;RwxV+F-2sV$YSr6?ga zBsT2-wpM4Bi@+KVvuV@woVp!xt1k)mO%@)-5>j>3It( z0qic@9912Aw@L2ynFV<=q;A7Gf$oYf!@WD8k!lYwY@*SwZMq=P3qu0_>p2n z#5jh->ICN4IazDKn5)tsRDL$1yXrr=h>2l~svrr33x38D&d}OL) zflqB3&K+FWYXE~OXSDzFEP5#XJ~@zR<^+>Bs&nDSr4AUR=I^0qMa@~w;CU}E>5wYy z#f>-Wb-M6OlRT%MWfimerT1xy9M5q?81hT3tjB{dt+9X{AHmnBf%E0I4=d#C(Mp$RvI#|b0 zVzr=@38dSGA>KXi!;5^!Xxr)2r_kWu#LHG#!?b5QSj04IAE_*iy#U`{!7LdjW_I<1 z_Pld_rCiQsE3*LeV_&;_JPz1U#-+Sa2ln_sKYQiTQ`a14f$^_yw0Tos=-1d8F6I*- zRGTaK6y`N<#t8gfgzo8dyh~yFx5(q8QL8$;eN6Siut8cdzjN&Aqrb|fhZioKKN2i3 zdB?x6ZvMHM8Pg*u`%O`63_e zS(laU7*48Guf6KsC;oMCV89TckIh!Unh4A7dE&ZtCcACjOBePJM1%#7DoWyR_h#eN zN5>l*#7J~V5;i7C6&7LydUN%+&t$&h0-(7g^;tq$^atrkEhGfB7GrQk3(CZ;%^N>M zQk6lujS)^}oJn# zi*ktc#i%%;X|f$mnyz~R_$(bi~`AM7A7)_ zpxJ)JX&tn4YWJbl`0ca|={)3Tu*ol?SK~rrwfF^%f1kT8)8Z-5-*krJzsS(dZV(sa zv`N|SP`cF+7U}y;o6wv!m~lf_KC=g|1lVb-K&kGs6348``k6hFa|@#+Bp7|HlW*t09H&G}YVC|EU@HOEMRuY!4h( z3x##;J5ZV1h7bkH^<)*P{m9N7sMf57#=8HVkdArnWmo+;%eO{o8o5$7vX_8fB3|FN zP1{VG$l?9Mq6%=uyD!f&^MZY%(eR}H{Y0)BwI8M5+r-BSCus8Kz=*q2GNcXKd%4UC;*8+=n*U z6HI`Vb=lVR{xo@5maPKxcF-d!atPlh9!n#KQuUS>_Mn}Ev50wV#$a|9BNzCSWKr6k z10x@DvPK@viJnaSdB0=XPyEjhwCDB8`e&a&>;*Zi0flzD@l5o8VIZWogg2Q;?9!=G zruFEmSYmCc-%eR$4R>a|{4lGKAY94ohNFcSvVL#<(z?!EnNB$W!< znHxD@49^)SR7_GaY?(advPe;T$Z1E@&mPBcHu{tpa3Oq^u=|YyAr>$v6POfSEZnbD zoc^1e$TLw_p=E^0nMz0@-(yk48YNz8xKguX1wzU5Q!l!D30&-0USWal=yrchcXJVp z8)G_(h#`4DRmodNA)@gRvG$@PRPpfqdZtRdeF^k0`0M>!RREL`s}VJlOh}`*z@IzQ zdOeJ+-uy7e*21e@{)y5Z&oVXW&hLCX!HY9Bm1V3Yf05f=XYRJicC_* zCuRZ#{y2FQ?1h{qP1i%neP6b!oP^zzg%eL1u+!E-aU#1z5>d;zrb7;7)-U;7zCOpv z@4zm&_9C@h0@@a{=Mss=_l`bEVzzr(CJr0C0qweO@iV&`)%V_q3Ls##6V9Z;>OzPa zrERtWQt+J1cK7!Al2Bo}6SyaL{nc8p**)e2=koluwx{F!vs zw-f$>QLq(R{q#e4-i#g_PSEAJ=dB+IQCuINL05___w+v@Fk&$$iL< z?Zr5Dwgk$Gc-4h=k%ue)GLQFyBJ{3U0tGb7*u3ZBtJE*Rz=fNIx5dQ>rDRqf;SA_I zV0a9)$Fu)OAZ)i5vX9`waK+8>MlJ8Z_ZiEnbhv`>qdgC`&oVpQ(oIJ z+DJ0zh|(#FnP$X@#0(987hS`aA5PsId$w3F6M(_S1U)tZj>^0P04Fqx)kXUU5W3}R z9A_4Q-`PCNk+{&yN9u|a;#uGUoQz&J`}Q@bS6sATmb9gYlsTqJ#hJYI}a$5_np;6hHa% zbZ5ldhIy_-g1Qzz;)0;mdA85Ad0>F$BPs5@@kC{upyxLyr*NxZBb&h>7zwBE2ILL^$kG=2p?oeq>K2fKeaH|mv^1fOu z36tGZ^e1Tmd>d4m7Ieu?TBY-6OwXUyZl_s1MRSOs#c*Kt&0s7yN595GzB&Ssq>M>P z(NDMjGDI}(M{=H9i+WVWdkOK(dM0;s01qSX&B|R%fD=}%+F-G}{2iiOVO^n>O`Ec> zVLF#)-+SSdhVwPqI;dG!AKF>iO6X%OGE?Sjp^DLqUjO80i;IS-J&{~ce=B}xg=br6 z(SAa?Vzyk>IROpAvR74c8-9%$DJ;J=al+QlUM*}j`<DMPA3nnjnBXUNmFMCm}6XdG@TOdfjK(3?t!t_fJ|LbgyZ zI)jDXi~S?E#o(<(dncG2_}!1*>&f(T`c+2&z!xT>)&3V1WWa1((;Fr|N2J1FXvJ%a zRIL5Y|H(RnG0eiPH@7FGr*?!oeeW*Fy6zyb0%zJe!Kbhf_FB$d z?kS}`LR)&crM-rFUiP=>Lqeg@mPzF22Kru4Z=b24)Ua64g!$%5%B+3b*EIf~+# zo4qa^5nn1D5zAUe-#YZ~Q_}(VP@o!;R#hJmAR9=`#s;r#VQQhXWUCKmdfGds;Pb@o9^;rxgmf3>q0WN%@yN(Fi6lYnQD zyli)nItZa0!(URrndV#st`h6>2U-&>+nQ7L^pC$#m}cnENcX8e?bI53`AR zMkubwkPo$40y#sQntvQJ7NUV%Iv1V!Zh|T(@FbZ$z!h1$r*jB@=2y?lB-Cv}k(;KM8KDISUujodR z8M$yYh4tiFgXbzkn=`!r%Oj0$Yx~_XIIUNZTQUW%IUX-#^PWJ#ypr2c3~qVR%E!5Y!*1|a56e~}lz9%%VbPK0HSp6Eyvr8w4{h|{=%FTvPt zV9y+PGi$eE1Jw8N4KlZ(fH?=2@*yYU*o!_W6q9YWVm?48% zTjIy4e{lA|#r;HJBVHBigBK*69|F@49m`S8;#Cr(C20s~>x9ml7tCUVj+l6}ydS>I zx__3E-Te8c9}AQ{*dq^20;XCP$>Y#)zuZ>EDboz{mb*4E8t*Xw6`RL#Ov}?TPpyE)+Z^r@>?|>fGzyLLGEqYlm z(ih~<+ZEXAX8O1CJU0U7=#f9qf2r-kDQ#<9Yfw(ielv!HPV&6MhB}8D^C)Ww6A;W$ zt>HhtF|m&)Ay2qP{V0!RGcIx}{}K-oTJ#^GRbnX&T?$uuTl2^_X$M3=k)f7$x_I-8 z0DS)mdtN+jfj{}05`5$4d=)@0(Cz73yK+@)%%KDIqae)VzeVTWxkJ$&x6yhFknY~a zyUufQq2PtsIQtkTk6~h61oLB?K_2f0BUI)!vg3H342-+f-s z^Twf07PINV(};hMm;KBV$zvNHk7c`p4#s^#DLxu-GHnjI*b&Wul2-$5+8r!NDBIOb zSvyUhaG^z?T>TBRL`xYDlmR<@DpX$hv`U{a8e0tIazDk&W4+9gY<&E^Uxd!ch45kBb&yv_S%=-*bX_f9{+_4vQ(>2B zjzKnsT$`8pgJs9t4sqVq-!NLrBXl`^bxb3^?J|r%Hr~j5p8j+ryKM@2UVx;#c zi6VZW%A^hr`ZIbMJvICO!MP|SZ9I!F@~MW3or7O{T)grN3I(a1?YKhPC(;wxEIf zy15^j;28aZ>_uEb*0u4mDg!w{ce*veK3Qrp)wvmEc7#(91zOZ&Jai>FBa_Ca$$T~^ zm#wy{%M5>Gu|X5qt{OsZI`#*2$4{Rr`I~K+j(8KwTAY2R7pp$mK|Mm_$|AQkssu}N zXBj_`@R!EBWG-jjFv{KxcR+WM)>O*5q7ZUD$BfgT))7k#AR;1!c7%EpKjZQU$Zh$R z^|0$^>i&VRSig1@)vb#)R;^D1dk4Z!5nb$d5lwVRi&F0Es8nFM=tfdk4xeO3_7hY2 z4YBu~AP5K^q3%r?M;Ck~%H}VL%9PIUF7Ip^b^k#7A82%zAir`M%K1Go5H!7*lz_#m?I5H1eqP!JEyDAWSPxgLwKCMiZ%**XPZ zcOtFGdVqHIuOm-=$#QchhW%+pnC3Z?rA8P~r%nW>WwNqSXr6nPrsggmfDRQpbUt_p z6Mm16)4eDP7vq!V>JcumF6woYQYn5$xSTbZ7LYTE^X^&V5PkwBPLu)S%%4pP!i!V5 zk?QU}tYTGmBRe?cQ_6{+I^=UEvRM0CNvgs6UeKBn;`>n$Yi0HsqW7T$q}7HMupu1@ zDHIOy*M^(a>dq{Sj!^n$csqZ*5vM%!IezY}`;iB~L4hogq9?C}^~`Rr^RU>D6-39u zy!wBm;<4z!pY3>)k!sQV6jQ=G*CCR?tWJMJPeHJ1XFrq7eDa8?PtjF$^8KrnCBF&L z91rn09V55+p7Pe>=d!(v=cvk757>&eu?|3O8Y*U)1PnkPyjzup%fE6uwF^n8LV#c| zpOW2v#_wsYqTQM5{5u(n(IPR)>)QJ;Bf^@{9eA%BAwL!K@_wP3?vDZnG%e?MMr0%H zZ&rAR*1h}m_2QuWQZ{Wo&$k8uGMOb4G2DK0`n+Uop6DJVk$Ss#`ZLVw7t@|4U3?`% zrXLW3Wg}~_WX_Q5ZHH?T5dLi7S<)RIcsPDrCZdDy_Ki8hYYTd7_C}~Hk5{Y#`t0KD z$APwhOl%hNH~Q~wdlH)pGHeI0OD45d!ud)Ui)WQho;_qEgc?g~(Il1B8Y4p)an7F8$nT*=6UIbxG3mY_i9F z{U+`OB2-tEMtW3gLm+w!alnj7xP-ptb!~sst=f}BOWLC*gQoL>{Fz3Q&bFeYI}c>a zrb(Y|z^iXmpjb+-dS4e<0`DHqg0vrJgxdB-7nK)Gke-!HxY#VKk!YS>|7&`o&q*U=N+U z(Q}BRhz^#RlV0MOyiT;7%J~wv1_r=ZL^8!G+;N_Vy+aQoh}J_zX61p?_EAuu@D+9R zFEv(8i`JF)l^AHRr$Q*nPo;dLm9)QOa+VE)PLYY32?LlY&-8V}u!Gze2^}3(-|MMJ zWVF^S#DHohT0>!2^YnD`4oAEgcInHln2O1{G87DnHeMV zCiGzPfn?4C(XDya^?7jC<2)(;F{YXohp=IFII%N6k+(fKxO7xyG-@l{1;LlOh~<7A zmI^~$aTiuEz|{958#rQYzZfiCFIKD-eR&UnrQIg{xn1pzeKzcl!aAjGJeo#|+7NhByQA znpXA-6Qq{Z-Hh+3cVt}7O@zc{t15tmRX#mnVwL}97+|`(y=^o zL_u_^fB4jQ#k>om!rd#?FJr7m-%&%K>@J~aYzptejc(6Wzckxx&#~&1ESZ*2-FrqX zHowEN%24Q!A(XF*Dpml$x0t2061sY`d(RB1T&J0y|0Pcx6wOVUvh#T^ng$RWriYZH z??wKPI$@4o5xJ}Nuv%@%f#)?}E&fF`nz9o}c!)36u60od9!sO(^G%STW?*0x()$A< z8dL2Fq$39$rxq&h0px+=sGx(Rk|*P3Pq6Y0&I>B&t3X7aAXsNbn+I5taUhrNm)p(o z9$-ibW9gGHx+qPR(}Li^e5_>tD5&z*Bqrea8$AI1h8bJkz z5YvO{jJhBoK=YxdP3!l3viWJ-W%o0Z!2sUUWS-OTb{s}^y#h{GEO;_iF$Ls*Z_Bh% zMj@EmC^%sonj`jCu-qgjSZ5CNWj-OM$>H{9s=&F!1{gT=O~`{F9gr1G!H=F=SUoaG z6lmD!38X(l-M@fVeXRQv+A(ytgM`8ls>E^(n){8fSFG%C$bPfI6tqO_;b`Yd;+^80 z1_;we58{(wh?1a%54$ z#O};LTxc41_QvtZ7aQ$cFO}WHz0$kn^;NEGQL~qEfxUL0sFfc=QXMS;{>$BfU_-Yu z`sE6>Iu4!ctxXc96OI&JGO#X6Z3pE_;nwW<-uBH%Erk!laK2kpTE{2z$N!>mlaO$* z_=jmrxkymA6LQB5uk}w^PwR~WACnI`lu0vfJp$}CWCe!dWW(1nrf_`Sju;=(R!z^03OFm)#=;FZg@SJau{;6+o>UUEv3 z&*ochv#OnrW6y(&6$3EF44sX_fVYo6(%jCju6B8YSM5qh(MdqFf%wnYc)$evPT&69 zT|KO6;+bDRouE@yI5zK|RgS#K6nm5(QU=zot1R3TVnfUso^MS_%?|l_FuFXc^-Jnn?u<9 zrY2bg#q+^{S}gw6)=*a7Nz`Mc=Hyy+kXeHfRjLhK(6z$KtX-|E^>j^WqvB_Y(1jRk z-Fk`Ze-mtS4ZFKCb^j)JwJnq9LBX`N4QfX`!Lia;J7`SkuVz-ByK-54=@45r)N^vOUX~zwC|^;WQ%dtbKRK5`$$nA^lGf*Pv#J<2rA#ZTB@Jn zY5-f`*$GZB24GkuxCo;pB z5VmCf$dwy@T~Pry@Lee;IqDcFpX>{(znJ5-_r0>*UtmYgb1iZva4FU~N} zHV+MuT|GFQDtEq`Wsaj#7LYwjb3pdJoEHzvk>wiDGX`(P;*n#mPEOcX+8>5B{`r3s zC(fYhPb9{g#qdIa8pG*f6M}rOix~>X%C8DPNe(N7ChI)<$AFb*lhKt33NWEm8qHf} zzN|abR5ICZR6+|4-pFmvVGWusU%B7*8|7WtZG}lG6+9~azhH38+zH;ogQ|Zf_t6R4 z<@0~X)D`WcZ~=BWjYA)+>s`$eCnX>nA8T&68TR)8E9wG)0c3F4uWcgzzyh6ZW=@mu z!BB@Qs345Q(?{a!m{feLM&WtjFMCEIlv_?*)Zm@hNy;IgKo=`BPlzb=Qlf_yvThF`Q0*kTxVMzzML&7D$!b_2-xp9M{w2yC?Kea`%lW0Yi&nM?Zd-7%{1 zF5;5>;f%%squPh}!XD8z$IhZ}7ji*`yzTW3D z)#>jWXkgQbx>;j`4;XNpT;aBV8|lR4<_SsVHB)C$R@Wni=9dWlD%t;HkW54a#HE z=Eq|5oa$>P+wy2urARXH^8V43NwI35hYp+}{^@W5vCM*PjfD7(w9U(jaM;${5X1yt zeId%yiHstgVhFNx9y&yW-2+~j_`Hy@-9fM9l1c7nm`@Q_hv784(j?MDqbDqMZuvW? z*~G)G=A}ipqGkciTbQ)QFvY@!Eg4wHVW}o07?aOS()C4B<$G434zdT8Y3!~PWh6|@ zk|YkiAM{LV@!5Lyi#2#hIt}G<0yR!5J}E}0sUIFb9LnS@{sqUalkS=pw}rFNQc1bM zyF^fWf}N#}LA^|0&+=!2!V$igpIT7P1_M0vPfhk**yu<@+1A>?dhqFBM85DndhU+c z7<~RVF8dtCz$vuF4Pqtx-qI^9X+lp>st%TnRclGrsO_zVf@E_h-5 z|NGbPM1f3wC*Rxw1Po_)P7HrK?h^Zy+)ag2q3MZh*O9NmkKp$F(`Mu7@$QOc^sD8{ z_bWdX1mUGknJt!V+3}1gqhE86clT#iQ4;@R3l@XMGInhpvC$seR4f9^+juRXIm|DL zK>-_^k2?CW^H}YUR$m}I+H;^?ZiN@bz!ErN7OB$69crt)eoFD*IR-nx3Uh>X9M`z; zzd*ufVYGlg@F;s)pnu38I+091y=uK~uV8l#ZB@C`4vteHT|ssf5^@+EgGQ+PKUw)* zX+f6Mw8XGJhKmI`5;|joseaS;Y|!EbQm>$WKh=NQ!3k|A3ti~WCW8*C?Xd1;2J^0R zov!11o|2-mvCJLoNR3iez%n=Zlq+Gd1uf_N$gfsJ`MOG0;_JbRRJze{X7Bk$c#^2j4t0Osi}1Hwi9^O!(|J`)-VjRt?mz&L9F>$N1rU6nPD zR!RMKS3og7E>)tqE4cw9nw}XSVjs)cL!TnD)sy9OD$-+IYg6mpBxT$y&fVVPA2@fK zBLr)}PChm?7$EaqvT=w1OEXaP2vBSeys@uY<$uhgKv!|cjj~N1m@;BN#u1ou|0%Hm zbfehYJ-0)MRyvqHZC#O@0DtM-gN7jo{7kOhn;fm+cSah{%|{~|i0ULQ3>FkT!VvqD zI)Zaj$iq<&+c*$|fb+pM^Q}m2nJ!c7o~;%Vmd|NJp7^ys;MWDZmvHFF$V^0uzJqq^hmpv~2hqtqW}z##tPbEBn7|r1h=$A7%J@Z%5zeA=71~Zx`_2 zV0ER~rAi7ShLNC2ovtl*M$lCuG4)g3ei=3_kibbucq^}odF&dhSNdF$925d-;_wr@ zbq0)}J#;A=M2duFeVez%A?_}#^Q_QMfKM!!sKDf*m1S|k>VWRy7SAZZ|L00HBA*5P z$fF~teW+~#{YKdt%Bm^8X6+5xP#M4o$xlco|KRj~8IR*fVRW&!Rm=r*g0knIh$#;7 z_Rz_Rf{Yv7kLjac{Xsi9bKlN6zt7f$0(cfQ+E|s82&!b$W@aJDtA~FRiuo6~0}|k7 z{U1j^VqSXg3&LJT@(eLBW^ID87&4j?L18LqV~0MFiG5mS%p)Si=5aH)!f9KU{(~wq zHOHQdES)CvySzn47{-a@7t ze4cq*(-NRiZCwChILVR!U`3AgM{;$ET(!T?dfaW>zb`I@a63<*%NCurI5V_qLjhVn z6o=;N_!!0smC7%poUXUwnf2iP%z zHxd@F<-fovfFco8@RzYeBI1So@w3t|&E9Lb4n59vJ`EXwQYMp*=z(F$rw%%snc-GN zfg~5Y1@o&#TbNs?^1niSSL8012QMCo0-;min%%u8DE)fLdtH6#r9I0?JJ`9D09uHY zu-MVOFBeD}jj{g#Hu`)=TO+zr^J$-;J@`%{^x3@-c|~+TR}_)`iy_R&%F$84BM=g& zSsij0or)s8_lT(-#gQ{yLTIrO@@ne$*QLvu=4ZUWvy`1Rp-Rsj#(L|ZfU7Sy(q$yS zjg~JMNLR5Dy@nqoCS8zCu2Y5XTojKxk^8{b0Z$b(+ zT6=tO_r(Rvqvi{p>alC@0Ne;M;|V;SsQb}9Ltf9?;eb%})c_w}>mRA-G%ltt>nh*{!A;avxZg%`Y6XAC|=nS?Dd-J z4n-+=EYej(Qrhw+Zt3N;}e}srbMI0{m%Wy4ICgzKO(XSz-#dVD|}6_lhr5(#oOl zX4-DKPhV56VmXPms~EaU8{xxAK~qK>6QkONv6$CvB1H$QSWqQl7=?QtHd*#vyC=l6 z(~BRGs=k64f#FMHl{vQQUinOJH8)8y?uBs6YR;)c(z#5$O5L!ob!!NsIRX=xliQ5q zP$i(bqoaR)J4Z)@j!}G^I5dY9z^;7NJ&ERHs6<@`BD`oC3gmFk zSK7biY?9<*W*sWwjSg0!R}5BGsK8zPJ#5hMo>Z9lk|)dWMDX9jSo`a08ydcg4$HA0 zM`_B;9BPVVXTszEl9vs^&qnkLGtdQ98~9)+x2VX>Xr0dqE~xLYKw!_Og@$cVuq>a^ z7QdM2CS>-233mpXx=v6p!2jri+DMxF^q%nOK4r-^8LczUDW0Dxdpk6Gh6j0tfn5GbjV!6huRm z^UUb{2^~%VYJcbV{7#0%vQ+DGpbc51#+B8H!L<*t*;!3y`y_Je|B2+ynM>g@k(n?= zbZWccgfjipcVy4aclQJKvQE7=RDEPPko0Ld#Hj*qY)(@-3cj+*-=M?J#>0uvCbsct zEyvat`iPO`)U{7dfs^3HtepJ`%`@gRx6e!i)Kz=GRAm@{985X^c|1PaTQz-mw3Kyx zU?!Pdzn72X+aN$d4DRjF&Ph%S;@+D(7Vk;{orRC@eBh*5o>nk-U|eppd-`~Z1D@JM zuh6hSrJHj4=tSE^1gJ}(n9NIg#j&=j8L?hGN0Quw=1SM-09l6a)uhQQKR^J;v3Bq0{gr=!j#xASzPRsuF$nKJon&z z!sZ=`j@xdC(v-RgaxwUYU{5a0o|4{w&A|S2(`Op5^|dZ?+^WI3?>v>Y3ya+5k9s)k zUgSd8Pt5xP+GKfQKn77LAkWCiSOznlUd!&syu#AbfO%$N?{0D?zc%s`(**8jCY&w4 z$^G)G&=zc4KJlASj>>mm)EdKWD`Ki{SGi`KY0p3QWfnvl>R@;Tr5G!tM|hbA^S8*( zmW+LOJ?#i(Qm+uZ8c!vmB2FMv@BFzbb{Y<~hBwP8a*KIq`%5JCh_f-qULAsAcYOO} zH2fisO*fG9b4I%=F40Iw=f5Kx@Pm^!`6{i05Cm)ka6!P%5?;} zJzMC@bHz`glPZb+XDzK3mLkxlf{F<6E7sj9L*l37KJt89gpZYGnkeMjt38E*Nj|}Y z##-S6j(TF)qMZV`f3uVLz+1|F`KHIX!1E7;dU--awh$0S?SyTtf6dr#XB)>p>cAmS zjHbbC6Yoq_Q~RNh`9jwam|E@ma<)A$->19*x0~7KX0Fb^X5;ida}8l)7E5D*VZ9XL zFVqZtfnY&sV}AgRUR0LXjO)r*r8>MPLr(kd8GfK-AnCxzxfOSgm;uTxxstcavlXKzgv4FQnxr$gC#~CeK6T8SMf}OlBD@}?KfZA z{#~aeRQxcUgZsI|i;{$rf0#|NTh%`fV*@J1*8)APViX%P8&+^=k9XT}05*|iUsJg^ z1ic{>pXS0Z0bfK_9Az0Ws3d%7e-)@CjYVE(eQ5e1QzLx)QHsnk*BlyhU$VPR1lAu( zHslF(Op>5#emMB*Qa`9luEQvFOkcC{#GR`a?nKC6{T~uiCDy-O!ws{2vq-QIRpb)6%q!D@Js_lzum;(*OxX)Ck3q5 z(09#yXVXP;7<-y%v}Sxw$Sq~doBEr`u8c4ON{N0zDBLC}g;NF$@jKDiW1{9O@h4?r zTXaY`5FgT-#QeWk#wxtPB-Tl?#jCEp$C!$yYX^BcA;dk)(r#lXpu(A%yF5XwXTo`!}HcT zjy}N4+(nmtDC`{o78btG`GW{^ed>GM4Vin(Y=bnPo zcC?vwh?SIeSBQ-V?jc%+9_P567;1}e`#-1yp0v`C$q8O6?@FH8W;72@^grB8x0LwX z{>z2IceCCAbP&t=fgdkb9lqRrT7t42&%|EyS!4!VEEsh zdSIkxa$kFbl-cQhP^E`*B(^DRPX7cQ&w&=zdgHaEpifJ5c=G&w)In};oWs)&skFyC zUz+A0`5aC6zFJMk$kT`b_7uDioT{duzMV~1(Ab3Ytp>El*6E#Ha49KR#@2TiKy{0j zq+dTlsO7v5cZpDAc&EeuH=VJP1F^lVcLFpo~%QvBq`kRxK$TxFPvWn}M^#N0~08i(<+rlHUEnJ$z1Hx|=m_ zN)!a2W`;@LG2rSskVsfPC7;Hm^w9qt&jKX&R%a++*@)X7&NQ{{3yqE6bfAH7RTS-- z-Y4zb;9eKDy_f2l$*Xxvz8GfMbry66=7)LkA7>JwCu@rrjx{_37^q76$RGU~nRWfJ ziDpAGAl7L~>3xVulH9Y$u74LO*i{y0?q`8a^S6z#az2jR>HmzCcvv(VlA$ABsnA^z zGzo`tNNWYP{VZEA(h^*3<9CO+52XYU5F|KG=kL#`B8H6@b7*p}0EN}|r*sDo zBwl2%_JB!TvLVT`KaQbv~J$r<>kCp^{i>Sjyvwia6T>mRFVrbzFm^|?O2fR`ktEqKd%Zqnl<0X zs^J0JevRMCLwg#feHC_j>8ED+uY1-PJy7b7_+G{0Y+mO%QKU}$UXDhEQBNY6sO{pQ zUp&-4bMM#$YGfX<(Ywi1L#of+kIg*Jb{2-*QPtK&QW`b%XfOw3XYD` z$K7U8uG0?3+8dI#szb6(m*`xyw4T4Fp|+V8CVErZS(z*=u#n3K^nWF`yQcOcQQ ziDIk4wt6D}u+U1FYB6@HzJ_eDP))V!*h4k+Bcqfs>q-o)&O#wA1 z@K(sI4f}s1x>rXd8v_gFt-qKYAiL>+J*}VcwibK($h7NfovQC=*HqVhWiG^QrUx-9 zT~ROm0EunU7aZXSXog4?wV68PIm|##1%Qz49{lE(A$Jl(UChVVRDMpC&Xdnuywf^8 zC~}PEFODn8+mgG^Sfks$}o0T9>C7IQ59&t1Kx1&iB|3u`SPIU z?p0A~=1z&xlV?*q3FUD-%b_)ZADz-NrzI9EIrnEwQkX2G$Bl9+9>~+H5Z;6l>^a5m z1~#bZ0%=BWH%o)ZYIx^wQccLsyBYvW_;5yyI-G2#iV!2{ zJWP4x3oy6NJgMR5zQqdXiA|`?%~#lFluB$VfKzOS8M1cXOA>?&L$~voT%`;^5pr(C z{*;gv9KPDOmT+`tm&`EBy5{blutz=0U{!US&|O_BM5q`=BzyfOFfxllv+G9fEmT06hDOMIUV(sIX-32uDg8 z>|A#}jwl??Hk6rcO9T>0_E1I=)5l??go9C6jK;pmmX4YCY^pd{XvDE6ckPYmkK$DN za(a#TXQjO*5u~xV;c4>bR9YL#FHgDL7&k5vaY>-yH+f%7-rxNJTcO{62>^DPA#&+z zD5@`eBnqJGMf~?(xEnHXp4O;DS0iFnaa8a+sM+A~I&gM=OMr}ldHU32YVJQc7s&d@ zDtTgX)Yw2I^(s?^5buK3eJx5daT?@o?zS;0DfhkGy2;gnMtW*sO1(p>Zxj%VT4o5c zWt0)Id9CJBNoAp z+;~S#&0*FiX_AH4LVqXVK|nrhaYIQDg^4AbrdsgiTJ;R4&08ZGGZmDwN~VQ1b;AI5 zmLPkB=1i4=idK;ScVfqiqTi<}n0#Rc>mNPVdV8Hw6S^f)aqL#xOB-De;J50sjxuf- zO1BBd8akWHK>ls7>dWqH)LQwngtEdS$~sW`ptlzx?Rl&sU5D#pzzL(&96NgO|`FsSz*6>MNNSrmYf75qzo3EU| z+HGc4uM?5&zEB?pF(jDvj8epmX;z^r4OR3|^HPkQtVZs~w>P#`yMxm-scC&AE%_K+ zHn;xsye^>WCiGA8+GcuXY}?^jgGdfARU4PWl-(<4P3}n)#y!cqOOl=5Y;cPxRXkIG z_#>WAxO2GyYLm2>wv|Go*s(Atm{wDwfc@2A)1EVwuztkq=t%MaVhewl>2HIQ*{Z6ROf6wP#iF^6lWqa6r|;7mWyL(gkv^xQj^O zg-kk%>!m`?d*~S4aS7pbjiYC9FSfKpTV_^`P~{L8 z=-4H?y$|~S8*Y1kb!{E$_omsqyr3MUEkj`1;r-?}ic@8w<7`srS5VHn(T&jqbh+J9 z^c}>G8k$C;e76WIB2%2i)IaQPmP3p3V|CmL<1%~eZ$OTTfnhU!mW;yuxE44rP z2<<50;=;Y~sa>@;O$jUVLBvR0oJ4;x8jlhVZ#PVgdc^o|akI-ak{s5$lvvnuz|zLF zm%kYh4`(p(dA7!d*|WwhIb;w;VrHJX{Ilu6>p&-L07A4o0n)mpzB+h`h!cu{fbW=H zyfgJbe9MSltB3O2*CT8-HXHuxx_4{c&uZ&@XiNGl=P$?nOx(Owp}?j|f{gu|0VY^} z%ZM!g;^a$*jq2PVje_;mzJ^Vgg>n$Ux-`PfTPw!vV*Sga=djLPXN(Nta#aX<41TYa z9^}%c<_wil{tm9ql!S5BT$4Lx#j5xj#m;RO*JCod)CK3J)ecPF<3q2AR=V7QR$JZS z+)CA)3=Om#F zt!j5EFJszG+AxlbrwUu06oug@HBedLMWr>$;ySeML;OSAO2YDlU-%wsMc6cM4P>fDL+x)o8bXK!+{m< zf4Lc-E0_6ONZpr&vcWQ)p}Kn+h4<WUmce? zTrf|)yND)Ai^wz6rwWWd--WpKQ{bE%v~1Y@qBXHkTqjvHl8-XmQ8 zec?K38Io`O)E>y|yL$Mzk1N*siDOKaN8$F;ahTdz#BbnvjP?!75MiO&1cK!!v^KK zJ`I|`wUtu`Fu9A@ShY3~khx4%tOlA3PO0@)iE=1JZKOAQdhhHEZz|O*ac0-#2QDf5U6q_F8juAVcd* z$(9?2L*h}E2mRs!_TEp2D%sUx<{3aa8@b&N?CQ&@=xWuUiP1ni2~f0)N~(0eo^cE( z{fkSFzbJe>8htkbr51TOKgfL~Lf@puyUqz1uOX=_;S0aTL-ppjbo>X)Xxex+Hxh~X zyIQf8atgdbv5dQQ7a(cEc`^|TvmRQ4^}Q=6qVXDn_75hF$7l^LG!u zaljXh2pTsWJ;}agB5wEve2HijIK3!zZa%+r8th2onDs=+=IJYg_*K&Y%~Q@70J0e< zs$`fO<4$F4pd}(WsQhSJnT`wD?!Q<_AkI#dh1^G>vyfUx?{>OjhTWh&F^~ZAHYIO> z6AZKnh#8{UU^6Op{+LJX&H)Aj3?yYe_-qJUHQo3rebPkyPG+g@I<$k^(f(013I*uOl@5aCR_ke=TCF9;Ixrko^T=D;2~ zfI=FG*L=?`jP4VKvAvKk4C^;vj|J^XZB@5k6o7ys7zUhH7KU@1$Ld}uCBBMVKMeTX*KWR-9(g%Lo;6*|JMKxYv zPJv@)f?XhB3ZG%w5a*{&p@Fu?I8{99kdu{F?<7yhzZFz|>DB@qSP&tLb^-$3_7-%5 zt}d#jK)z23!z_O_Ncf#4D?wgRRVnghPyp+;8XFwS+`~yW13*J`E{rPen;wX3*x2G? zo-7oERwjdv#_HWA(O~uWAvbsx3}bmse7F5+hCJjpye{~PKCutkFi-S39zj%rk3I_^==2l$HoZR_7!W6NZsULhx30J-utH=#JcT82_jvYs@6fT+|r=* zO$q@s3z#^akv%$${H~oaSJ(&2%LLu7&8@M8d+mWno%IvyyAFG=yKSfqwg?K=5tu$L ztsre5TyW2FRYhR6&s?F_DY82go>6q$0heG9HYYphtS1kRom~HnTvlu-cAuY`d) zmo2Ru1rJGu5ADwI1W)-}Yyh~FKqh;b;z6!w{w;cxtq* zq7XX?f{p$*7PHnBQ+(TwGD>_OZ9MEfFS=98jQ(d|afzilIAR37-M2z$_gBz8D{fd( zbw?zneY-xlvMXecJ$LDU_q5mK42)O~HJ-f(nTZXm=zTT1IvyBns=B|qYU3;(34UBK zwOC9Gh?!_by&`VhTb1W2757pjW7kG%)j$_2!lS79QRVbyZPE{YqU z1y>~TyuZfgOB5ftwz7i^O^XM8O=HH-+kS?gZejpLWZz9;2jS*x00Da4Grrs<_G_m_ zEsvhMjkumI^FWI3hdYvCMkz!e;Y}Z~&CJ9!=z7lEv_mIgK&~SdACHk=1`$xo*eg~? z8Y%$aaFMJ6yyOrJ_dRG+wveMjajzBh78gkgYHw$id@`^6B;`SMU!K>xwDFY6{jdyM)3c& zOcOYk9#furve zCDq*gI?MU@WJ(XK1YOTNZ+YnB9-vmd_4uLBhc(E_LLG9_slEb$U*1$*=UKMz`-HqC zN`xo?OtSGTSXbdiu5ZM*lGa598crz7aNW}=!?!-#I?Ul=TXxdxB7>$^1v9QXdB28< zOZF2a;J%aky zwx;eXpA_BnP*XBPX@wKgwL()vHe&*&PMItKY}J=oH{gB-t+1Qbz@;q-vDvSHc6I$`_l#1_aWsT(LYr*bB zCj7qZi7#u!nHwVK+W^Yzbcu_uuiv2#b8zi=_|TC zK&0fgQ_`JQKB0S*{mwVEI@$v&jl%uezbh^gkyiS-M7!HH)e7RDcK;KB0+gm<&InXth;~7sC-XH{D5aw|7vJhhb`0ObPC`}&)L`lm4#daA1@CX zP-13ec{9`*B0{{+o!0{_(-J<4QN{5i_=pqmeYtw>`yS?5><2F@uBT~unh_Dl(890# zb}?!W==q=R&JJiB>`?__ptkq(pd&fQ|$LCROy^EEpmhH5L!ok{Hs-ZqV z`7ak;$`fTfF25;K75ggL_HCsmfzXGAj<5Qf@g>Ro#4SCfe|)p+3;dcqjHn34kgO4Q z5JkelI03X+Y(ddu;8T-F1x*f=?)oG9O4uABPfNxh%1#SSrDvIQ@l-trYXFU%QwNbh z@Wh?ge%2_o$6als1)z7tM)-#i!eMTU(~i49ysPHnCQqbjYkLR)^;)lfs=}seyj5a|mw1O-bbilK z&72mlSgon_387`;416DdDySHdJaCoX&*o@v7ROfM=(b_T%(qKQbb(7&B7nI(<{5rq zotv=Z=NQ_8o{R13I$;L%UaEfAC^p+~&PqWQaNp%$u{ZrVtVaP$X1huZxp%^d5w|9f z{v_#-pjx4aP708LC`L6e5l)feewuXj7ZnW^oX+XxGmk&Ez9a@Wp%rqsGARBOy@?Zw zyUhK$ms<%G2tAq7Lg3O6chDS;oZx@10Pr~Af|5OkU3N-UKyeL*ws44EoX*i0-ZS8m zCbXXQwF0r(N-tvaS*u!h7B$D!G@CC~{tH!hhfPM? z3PHvYqeI9eeSZh)#fn>wv2kadUHLp!yw%~B|Cbc2kEbnw8DJyPy6xip=`XFKn*rdL zAcd|0!k5+l$gQ$$?*hv+c<*AlKJ}RN_1^+>IAnarbo{+V+(mFQ%g%8-XAXw62KZ41FyBu-M`0J1(?7Y~xEfN}EQMh+o~4i9EI}o zsP($&&4+7<*R>J40t<=s$w^90l-V|;2>C>#4|w?;4A^Jh>bH&U?-Njxwat23DlKEu zI10^c)^04u+l2TpkX9JOSkh}&wYue5)A7yfWxpZu1atO=&-O}r ziab7H+}o5xkZ)f_LRqc*S(06jrJ!|R=QrH!3@QInt5<$ zBUx%6jQJ0v)_^DTK0`ku__$1hGpH2;PA?!PMH0dXuP^1oj&WbezQ(i@IXC?YF{OKJ z5ynGZ+Qx>!3ChX2Biq5-Bs1wt|LZqN$9ihRQx2B_HF8yu0;uWc=LQ#vF6Qt;7VkLd z%D&Ca|Ew9(F-Y|vE!M^XriJQ4Ol)Fa&e3YEx(~EC!W#CaGgfR@TL&`$&XIvSE(`RS z?$7Z7iMnjs1$lMxOMjW#5AUVK?h6Md9ElgS5 zrE-i`iX*mzV7y!k_fJq1e~60{U}tDN`IHonO0-kE2-ul1iU6NCvPz_Gjp^=lrx_8< zQ`P3?R*!NLhm+~p@>0{focV7$4c@7Pes_A~!#Wl<(R+vPU(%1~h-3msm9h9uK!A53 zZS3{9SPV}H{itAqOcP$}(l~?we)ss80a_z4^9#;ZU#U9zepIc=YSsQ98l|^L(oPP< zJ(KbqglVW`nI9}8ID)L=6AYN=Z@55h-J}_aSwVjq22RcGvf{LLzU&ES-bayTvFYCW z({FH}shwp#0^N)&XUH76nf$~R9`b1)FNn+ckB1gZ+8Zo#3q_!($0Nj5B&ymJO5yxq z6mKA(WR!5xVps3g+D(mpn?d9))dSJaI(ZhWEe$DvE`Ltn2_MI~B=M5=BT)D1Y&M)r zmldY4=lj^|s*~bfAMxWavuslqfZwJVFV&k#u-1$BHthYtlY=Z%Sf}64CZ(A3=5g+% z@=El(HoI4qO=_1bambMIGP&u9dr%RNkvYkkP&rWjALg<1c5%71%|KxfA(}TM+OyD0 zTThTI>ngbDuuH#sM@P|5+`DWo8fam=YZ*hCIAF_CKvuPCs_F*#shq1(UpHi|B+){# zc!*9v2v2Utbn^!!7bC^p9)-)Tb4cm^E$j}$84u$J-)N%VzlPnP2&u~Mi&R<(&^lr?}D?;U&S9Qv8NZe(9 zHk_-(@77gIVJcI+2cIbQ0{G>CL?97Us%}AVM_N|mggnrz&0|lFBfg%Xx2L-y!>YxL z)n7u)x6gxjKE`K>*?2YPU2xZfWv3cXGq$O&G}iq`7XDSTz>>=~@7|2yz;4?$(I2!( z^6O?;S1{6DY<_Qv1YcsCLy|_F##ruPi)vckCztP$pf~<-7=#ZdWlrw$1CDt zvn0r2sFs{0!T{8|?UfT_;TYGR(=6T3J)S0TPB^nJ(i`Uw!*7$hY_xgswvJj6S!`)n zUW7nk2>Z@DX-@3d-#`=xD8RaT`E9vJ6Zn|+HAxLhNU=3S!*$c6?1c~*e)M$!2vu*t zbTgOiX`8D#%DG)B+mzUOiW#9o( z?K)ua&n@d+BYrqGb;Hj?l6xa~9fYxr7A&p< zMhoaYnJDd4PTucqs!hjXSY314&4Azq{Z#d8a;%9Wj9vY7+QTM}Il4Q*^+d$liP6w&b z=9bl!Mh_!U5UuTMZn??qN4#M7oPOt_l;zH};)u#$T&fK<1tS?$rcYFVtuYm-H!f@; zf4V-YpY2|{pd{~m-^p9nEn&tS6ojyJ`#m&A&go`zJ!}V@JxCJn(qC`v_I&2CUUxwh zQM)wDa1DHkCzfWp$v?#yEQ0sz$`?eX495_BcmOiP*uwc{8`tEdWrG0(mci`~K{iXE z{SKl2+9>Uo4;=AmB`#1UrSZ4eH67bN*%JJqT5K+q&6>~%_%ydXxVldW8;h@;{Gg87 zXRcxDQk1}xitCn@5r`@qyooxkxEE zng7WiOsERMmrN&~@6up2NQ$?|LS#bN&7@N99v}lPB?>_0!4Oq_0|2tQr5$?)$1YGdhGEIiM+G`@9pkEins{ak1Z&rF|Axo)O+F%HR9qXbLRkN z2W!oRe8C`D))nfts$h0U9#b8<0ZQ~~9b;2x$c(pU@1fCMI*2?CRfsXIQc|Jv{{cW7 zzT0Pfcxy9)7$c8HVYBRj0zk7HoS7z0JR9+|h+9elwHv6Sfd?iWG>x-MIK7;RFci^N zE5;&%{49@ZSXT2EgI0fWz<}H=H4D#GpqNANZ|7ur6jYNfw@tE8_7K9i#+@zIbGrlm z(aTGA6s=`~xo{7{;RwRONyaIWW;I6~3+|S!E<1QH5XhD^k^_jxw9OiXI0p=E818p$ z!3Coh7^PP9=r-_?BIKyfdXQ0Dm@enPRoPGR^uu{VRyEBWUc7TYLp^De9emuyUc?m> z%=wM%i+hFcTw`r@hMwH$MZ6QHZI2Zy;BPh>YzuiObWfzmHeI>>dE@qO4P%nVD zSF1&?KDM|ta7uAxT>-T%c!0;ZG`Q^DN6yJ|!ORX&QfgV>Pmeh~)ac)5NNMqKGRwt` zm9Hy)OP|epV4tet9Rf7g@$D}xp&q;)LAggd^>ajdGuc)-*6S|pKc_y&6qJ5a*EUp*+iL|W8^?2hS>acz$Ij7TuS$IVS<7!9+JJIL=#>*{xjSM*skP~ z2~qOtHb-)RB=GFdC7ixp+w;J;5u45`)BHe@aS|~n-iXG|P&aw1U*XIA=HXMpPWjj_ zWlm#VePn~;c^v2NjtUa=Y#na}Gj_`7lo-8B+G0%8mx=^=2y()5f@BB{oGX~3T^bbO z5(#if{MtLYeOR%LKj&404^-3_i7_7qZ=kxl5=8{3qr2=HQN#(2EQOHhQA$ z7BsfHY)r(8)xWLg>))iQ1_}$hCg8n*Y@(^o{^eAcH69=rEe1=Pp>uS0C$-YpIf-z4V%14N?)NK8+$NsULvfrdRU$rL_9P7bYU!I`ObyV`{omS?_ZlZ%V zZ0~?bN4&YQ7UX$w=p|NeesonTg+uc9?bU<6ffVdV`Lo?o-oO@I(kJ80BIjhc;+n?d zBK1-8Gdey%jag|oTl%!+%*fn7-+l_EZT^W7%e4z*RBfD9wZyHoocS8HGw5QX?We{F z!H`m^uzBs8Q0dV|?W)fZ&`g?k>-?RXjaSeahh{~ACbW=+Db@`w>T)LLWLEFgSAVDF1{{B|B$%6 z0ttudC1G+bjPST*|C=I=)J1eQXi!y3mBIa!^8jF-t12nvZ~w*km!OMw)`9|v6|k*w zoBAr`JlA?6Ml8i`!U+b+U%-9BSm1ckv8OG+&73YT$;g4sjYwCSBj5?fIk8VsxY50H zsdyCFF_Sol9BdiOx#9hB;*}_&_)u@WP|+I6u~>^JOB#wZ57f$v$b?|pQrdm9pt>M4 zcO^R6921X!qnlk!8xbeW{WZxGXdwoY)=GI=On)h*nTn&LXaRZ-8~GkvtZ?{)uG90@ zDxn9x8yP!|j;X@TDyJ72;ZgU`%%F>NIsjaseNLv>#;>n!pRbW5_RZ=pGa|Cw>?{|i ziG@W(97`oGkn@z0{Nr_WalSyZ;b#$BmOwZW$lF z3GYdBtaG#SRo~$MQz`5<@gb^-h0S8l`#n!8ZNio&3bG*9_q$159D=hHPOC^%J~?N-6m&8FdYt@g!JscN6yViceH5~jxJ$QLb_ zH6-#V&JT<6z)2D%44`PmdYtH>PV~esd*X~TqzCK}*bc{BmJR(Mne~-MWdz?S@qjft zZXOjD?NGW^V+4c8-=3+u(?O}7C?j8kb2^tAX42jZ7UUJSf5L_p&h;zGQf*+NYdR0) z3_Z(Qm9_xrUdW+KGmYzo8CAW=fP5#nSG0!z=^6=y#$=<|Spp*$*Tv>I==+F3k*Vu0 z0BwRy8u1 zR95LVMaA#Qi($%tCn_Mj>~Qr=bfM$@-co~OifjYivw7Cg|EA8rLb^ zQsg9;He!_Pf&LAiY;narECN`|Ga%cmYj^`4y(00J!uKGGvu>G(TnJ8O{~sTOdf^ms zOZWeXV3D?JdFP+GqyO>AU+WN1G;4!&*clsnYhxpjJNrYXY#bs=dcT~j5*Q(_t=MH) zr=7HK4oYMoTav1ld69N;bpgQd)X_CIeJ;cV$}8lXSOZtGb@8(Z!R5%d&HN5!6Nl>k zy|z*8x=(YZU(Jj0wo@{FsbbUFX`P^}wOAfk>Xs?(<0n34i5(QVH$N0yjbRa)?Nxx| zG#D-hE%$AkuhWy;CLUT}Wzd#96)Ke^+)O(&=7WraejV!+aQQ`7i2|s}5b`;{ZMWaa zKaz50F^Y-$b7dG3^Coi{8Z$jgdKo-_L08FhrkIo8xf8Pl{ z;ikFo*_vka7MxRA$W9#@tw{~yJQ9T(Rs77C`_<%{OmH?9Om#GzT!xuq+OxhAjQ~V| zzRGiRk;n0j3r@4;{(_%zo-k+nBH@w@0Xv<-?_0{IVYn`%s!%zbyaqs<2x9t>S2T|Q zi6_=AtIGMw(mp9E3D7zM2c%%?I;_3JP-{Xkfh(0OE6OS1p- zK=fGg6`9lcOn);tQfD6|3*+|$Pn~CP5 zC1s{`R6nFpWlSS&ymZm&J z+RPs9sS-w@xb7N2dkxGIP}#~MI*m3h;a)$@Dzs4+W%_ z)hZxpav$9az0v|f0vfxJc476+G${Yj%{~i_dShS}!`IY`8D<|@O$m%^wHt7g%bmMn zwv|V5v!OvOc@hi7`ZNZ~#gA~_!q?^}qo4+3K!d%!qJ;3;Jo3-pnC6gd!q3w%g`7IV zrjREt3yUyZ>>TlxQTs?5W`iE%i27}-< zNVIo%=Sly`pK-;*Q1v3##5z~hNv6#)se58^&+ydGDye?(FfC~PN@W4^p4Hy@zny1w zI$&Aw4ch9H-0v%oR`F}ipqd2m7rNt2snZxqCsPl2OQ$N#o1eJg<(z&(+I^7~Tyz~k z0=XD_>ZBt347aIPLi%@vim~M5*%Rl0I#o@(z8`0sN;7xC7SSp17#`PmX0NEohBTrN zY7JmpGC5cvT0tv2J-hdXlix}oQg7vs0D3C?dODmi?KfQ#Sfvkm_P0kbB$j+wX(S)mwu_Yqu{vr3qfbYzKz`KYDjgDlW#$gn!vKbvVsc2RlcjDbEhY*?c6h z2+|glO`97pOaG6OcP8FuBHIT6I4jHS&1;CB?K#A9je0-DRGz;U`}B-4(UpUX7oMQU z!d~UUMVQczhQ%6Z`QBdkY38SD<9i=Vqp`FYA0Wzz$Wk0pDc9U(X>-$*3NC9mtxDVG zK~rKCNT6g@wYNJCd%$}PyIMQI(CZx#phh9N+yO(OZ*t`hr4`pe4|zJyC{Docycp2h z!ayUw&e`}Id#uW z>#d)@SAJ07_cD1t0GNJSlf`^<6|%3Y!ZD!US}X0heH%o z_YeiTl2aBm)C94qkIkqfuZ8R1CJgrsA+%>8{*6?&!Hj2~xjT$~CPuJvPU=F(nXv9X z20O8Onk~ArSd3!@(1388OTlo<7}+T@HAW$54Chxktj+41gCs5JMc7gkx-py(;{W|; z1;=2KIRySU;r)>ik&;_zfl3BUb}6;9IGh9`)@ivKe-QpLzw`YVMr_7^NJVLFUnubg zvkx@VWkCQWcpD8l78jWQzx@E(Yzk<9#+hWauTCO+KtslA$aruOYYz+MBl|OSZIXGq zb&huj?mJArigIf3yg(gsHI~jXkG-$*g@9V>`+WYM13PoqeHCm0Wf%n@i2;?H)2A0Z z>>QnUZ|S#pZoBILX>XzZ6q!nkeDM_Qq$W@AOeNDpdp(GTpnBY!U_@>iPQeGw0bknP z_Wlcg(1hKLK4ZO^U1EI=sXXB7*ss`7nDLjb9us-?ij19$5^~WeFPuiKn@o$y`l*mH z?sDs2eKA5zp1-auhXfTbFc#d6!aPO3+RjPZEknvHUe*PD#02}00IO8VN%Yqt%xku> zEh3}~TYqyUP*S!aS$@b+MDl33K{)d7zF`Uye|-}YxfnUrjJ%12^zlz@oJeINkrctX zvn8rQMPu05bGHwlEI_{6_g1N@e|;YBl$a_5?n<@$TCH1?sD+aS&_G(UAi&%{N(zMdL04_pvm|U-V=uJr$nTVT+;UD$i=C zgh+&pGJXb`r!Xy@iBn&DPM6-Tk?b#8Bj#vI=gN=Oxr#BWX zyjc%>8Zrh0AZX8nd*aM+JcV$ysa505`ldkZEI`I(@GW#$W5uqKkf>6G48nRgi0<(^ zS*dQ%9%S2F!9K*~M$81`5T8%Dz2fAVU|Mo?HGCdeubm&P6o*(*APl|1#HAMp(%q&oR7&5Bt` z6kOcDeNyaBW>!fOPZz(Y@vJ(a&2M5;-(i_PIiGYAp^X@5&Eww26i6Tx8$l{<ftR^Wb4Q%jhVC)lVYuv9mO zVgn5k{MTQ}(6F$$sk=qFk}Zx5!yik1oX(O1a?j}*{wpDErTL#(nORoHzNXnXX9hKs z!Pl*yZ1gU16vNccA5Z=ADIK5Qc$QU1J%aW%o9XP!P3tD~7u!JLGR5<)x)Vn0giITs zzm8ja)7BHW#13kv3K`u$n)1PmSmHEPa#a!E)Gx37q@4nCZ0x&W5ZW^EZ6T((O|EiI(a6+4bwDemBMa zb$)>$IMT#*BrvLe@7BMyip$AlAmW@i!317Zr*PmonU>;ml-A{*pmX z{q!YWWV8#_C`14~*JTtUmyRIY^Yvj+RO~rhNcrpiYN5Ivi~VoimF<`8T&b)4c}*pFb4c zqdklaWteSeJUq1~q3u3vZo}**%0LO}yPkoHpb;L|myO7l@GJ5z#{Vvtp=KJ}t=K5X zP%#jdFRL@85M?^6nT%q_6hJwV{KM_7z_Wh$+QPn8$t%aGG;iH_9y@W6vzM9`Zn?_W zNOR}A6lW@~hwl!1pxrfJ5G}}#c_w!j-!D?FT@5oFp@`lX_=Zzz!^#>F;>5)5+bPbD z5iWkCrj!o;tIvo^rr0t8cToW(GoVMTGRDhxKR;LQBbQOGnlMdYt(_;E0OkLnaVZ@u zeokN~4gJ#^A4hujaeja`CYL;%Z6D<~OVccCp)bh-~_l3nYRnfRGRqaA5ksj?0 z`u75;KkWO#R>98-5ex32bOVT-ZOS>w#!jpHIa=uTWxr|D6yI>u9Af0&tZtu9e2>0? zFwOH@hI%+c0WRaT6WLbaO{;|s9(cYzfIz3IKJRoAJP93zBdSG2&Z5JS?vLo9pSQZ z@TPBFO&gaHinES4jd_#kCj|*|2go9VEz^^~)EI=*K6)F)2|Fka^<`kP0~dsE$75g0 z+I+FXaG5mP(wWbP^P&k5Vhk^2s@omt_3|MNXFtGQ<3_L9*JiW0{+7VsI`3GVoHTdEf!y)h@(@!MZ-+h}VRo&yuNq zx=h;z-H@Yq4rVYwGtVCUO-0jMj`wT$2A7xqSQ-ZjtmXJXF5?BT3@N6iT-#5ee4>Y# z%dKgo$P;t-VFIB3V5Od!ciDevj)j*!kbKF5gmzTtl-)3_-6mLfg~OGlS@Ft_T;w!0 z5QQTTcG*f=jf5kjwcIYiY(`1hk?LTtfqZaxihsF6fxcl4FJo{Jf8d%euucm2PkV;@ zFHU#|Cv#r+xco5Vyc-ZtFqN0@NJ|XusDyt#Lujlw*SRxHg+o$bA+?IC{Go}D@TB@e zqLx}^$DXDn9HMYTgXj`x2)^PEzYp~u7NRfnBkR#5Dk=7NgS;Y1ZMV>age|ignV#gx zb!s3x5kLLc*yC`$gRcrWO50BcnhycD>)XQL$6_N-Cd!XrB0c1c!Px_Cyjz1C%q^b< znZnzLRs`w#^_Cz6$vz>;=Y1a{A7P56*RW(N1hUkT-LAQ-50|iytR~IL981GPl-sgv%GGYnA@JGRb-f?)GL$en`zcw> z8GfWWEXcvt=n%DkC!ZjlIjn=Sf(~t%?~@vH+!Dto~kRM%&F0!39jXRbAhOmaK#KT@^UF#9tt>Igf1&>Pj~LY z=q9%zRN4v^sb+)mZWeM|nfT^wiVZ0ruA7JU4`U6PZ@o(ZL)w1B(T%O|e!SZ&|LOck zBw^H6Dm=>T1KE7G?#jw#Q;9K9RlJD5zdoIOnmFsS?IRqSasYqT`P+RaYDQgKs+#ZV z;%DCSFT6$2Z%RIJPQywxstQr~0NOrDQ{=axTEDPn{qF+z)o_byOQ49M@4#Si!~p+4 z0KnW4Z=8}DBF=<*Jy0Tw3NLY1i%G?p4HkL2DjZfiwdx0Dr(;ekx6g=E1JLRh3IXtf zM{#$h$9+Zw`3&y1g{|Djj9S%hiyLCdtfp04I8jP>7f*brCDNuXIdj*@epVLie!pJ1 zX;mcsJR1d$8&F}TNe6t~nXWiJY^a+M1a5-Kiqu3iD~Vc1hGV^fh(Vs=kMp&I?NrH$*~HOMuX;Ihom3Z$+64eFTNAY2%hWoz{X`=$xK)1U zRKvSUvhz4YBC>cGy030@e`g-jVvXe$=U!bPG&Ik?CS{8{qsQAntDH6iL@oieMst`N05*p4f)mD}y zaiDCE;bm4mlXoNK_rymTK`F!w5NwjjEQPjf<9LVU%7=}A4k~LgsZCdx&dI(_bqzb? zZbO|<^_bcVsaCGrtylxj7ue7&6)E#@B`aUO{Yy51JgB;$G^P|;V2-CUw=bNx+C()p zq&MkX9Z;bCiVDRNjbK{K0fCjhB*CC)x*^5_4*ajk6U~dcQv>y@*Ugbab;;rFZFVv9 zDlA7KhQ=B?Cet*@5O=GYU{GM^xkJ7JUgp*wr%|#ydi7`kKpTOE`NVXtF8->aS@!vb z$lW&?XFCFuq=_5ku|KKcrq+?|_YS8Xrj+fXECl6(3W3NG%gVTAqqNghcL<2ib;a-S z_jv7PhnfR8%x?|$jgBc5*n1li(PN2EvJZ=R+JiJB6VwW8?Aj7=P4+-e(A|Sqz7}wV zske!m#D(1c=ir9U#=ZUsS-2(Tt z2w$T1`dZzWbe_tPN^hP`JWFX25=;mCuX|_Lm)6Mp-N)xx+878=T?0z~? zpD%&XIE(#sbM)XFingIOkr{(&^G?1w<}`8ELoJ*j(^Cg9=~^OUWAoULC`;D4hXdP~ zj1kPP8lr2ss8)R&QOAglL=Gpa(Qiv(A~D}mG&kd z;alnU%r#mMf%B{3*~EM*ulm}V=yQWZPwOwQhXSLGsb}=luMzvE! zPfX25QLdB?dV4a;N@x8uD(ZU6Y$Tt1lZFlljQf^<>%NlcOVvkL9pp`UB=sU5l8p!W z#^n0e`y9Jqv1+0+%P*(gQ0tv2s-W=U7S;>XwtryYF^{~8Ew~e=Q(@E~ML^S>>`P+& z!5ZZ4!_j7}1q(zlj6{_)8H} zDhhuHIT(l3Q;LhZTAI$Ad|&?pH9s2zQAJOruC32itoXn1XN3=#$bu0R=Q7zr7_3s8 zY~7vmGSDuP=c!ey2)s+q-X~DyrfWTqhw#HQo}xFFnmo?cDOL3%lH6s!Waf7? z&qDEUl%8xNbhP_@ZL7tNc`HiF@0c#RoQhq*=V|osLX{RWpdJ5Py0*M=>)wxpgB{Ri zA6uJ4+VOa9^?8#kLs2j?SJVYyO*J~>_X*7=y?$1a>lo7EeY+tr4PE{PVL~nVdJ|uO zLYw@cJ(vSUjurLZJ<4^=UDwmFkqBb822+d6U)q=94*s>zj+hI@Tm?N1RBcY#O?M z@kau+-qH{;mI~rw6qzpq2c|uunXz71ZrF8Y#$QaS zn&59|RXrEE8b|FZ8~3`Ya26li#N#D44x!gLg&`ojmp&V0b?P2tm|31mSREf`Hds6^ z&X+L`+F%o3#3LAEb}a>T^U4A8nr&CYDMUiuB0Rzhu)OS2H=Gjnu~Z ziGfqV@@%WK04o#apNz(D=*+q_e6cp~cu^O(eR_IO=eB5K2G^*GmO8e-FGrVVH0bwv zbw&G$NBguMgsv7j-<{a=a1Z!i)4=DK!DpArDg}nV10n)9xked^){~kb+^$dy9ZLQ^ zX%-mW`62>HvorLGt|Z4Hfs#=mPMDBcI|o#1`hITnGj9Bpk$qxAX|(~ty*Sb} z4FRzms>{6zK>^~pVsxc3PChHfc3AB{wBgP&Qa|Rli9;Q}Fg<@V#}q>Aq}ei)z*a$M z5*+N7b~t4yuu1|^uk=f5iYJS(3z`fmNh@3u7~^2*ydT=vc5Fwezb8lKpxNN;$IyPS zIfDGQw`BQD^Fb}Ze+eXljNw6qYRpkhtQL%i;QbrO%RL35u#R*fvv65}rP~MO`(K#& z!qI5)I}@^$Wbmrub#DOh?_fK41#2Vp(oH|gqSAJVqkwww-~r+BuNOu>lF$|HC5%4< zQl6%ctd6dG6i~0G-Y5f)Tg+U+FI>43wAoPOs5L7^JTF!h(jrLGa{V5 zNyQ&C@}`ygVBP7J0*|R7%XWTtKc<^6{^;IqxtZA5m3dyHTjUCf#?CKpK(Rw24Seb)z==eMhoXOCB@Y_U zgpDPuq&?s3x*3)qijyj36#Ivz!A%z?PP=QaU4t?EC?`XAE_GUWTD8exMGt^v1+ba_ zUqBYLQ7~a?ih&%q@ruH{u9p_nM?szK&HAM66v-sg4M?%x=^`bvpe`PDHQn$*4bD|^ z{4-fzfBparvF7yKSK*4@-D+-YWvJbat@WkuUiVzKHd$j S+q|JU)Q%ItXv7iQTX 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

CxLFS*(9d{|m8}*{3yTVUE&sC(J1?=L~ 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 Z%7Ln{7fESr3eIbJS=bi+9N%H&+zZe5l4Sq@ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260515/20260515152001-Config.rsc b/MikroMaster/20260515/20260515152001-Config.rsc new file mode 100644 index 0000000..6f23610 --- /dev/null +++ b/MikroMaster/20260515/20260515152001-Config.rsc @@ -0,0 +1,3363 @@ +# 2026-05-15 15:20:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/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=WAN +add name=LAN +/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 +/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/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.05.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 +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 +/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 interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/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,8.8.4.4 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" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +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 \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws 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=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=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org 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=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + 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" 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 dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +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="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" log=yes log-prefix=\ + Filter23 +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 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=\ + "Mark Routing main for VDSina" dst-address-list=VDSina new-routing-mark=\ + main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" 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 Unet" \ + dst-address-list=Unet new-routing-mark=main passthrough=no +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack routing-mark=To-VPN +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-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net log-prefix=VPN-all new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +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" disabled=yes \ + 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="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +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="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +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 +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +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 +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 +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 +/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=no 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 interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/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 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" 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 comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" 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="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260515/20260515152001-Diff-Config.rsc b/MikroMaster/history/20260515/20260515152001-Diff-Config.rsc new file mode 100644 index 0000000..f28d7d4 --- /dev/null +++ b/MikroMaster/history/20260515/20260515152001-Diff-Config.rsc @@ -0,0 +1,139 @@ +2392,2400d2391 +< 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" +2629c2620 +< add address=2ip.ru list=Test-IP +--- +> add address=2ip.ru list=Test +2640c2631 +< add address=myip.ru list=Test-IP +--- +> add address=myip.ru list=Test +3038c3029 +< add address=wg.vados.ru comment=VDSina-vpn list=VDSina +--- +> add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +3059,3064c3050,3055 +< 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=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +> add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +> add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +> add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +> add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +> add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +3067c3058 +< add address=146.120.64.208/29 comment="External Net" list=Unet +--- +> add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +3069a3061,3064 +> add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +> add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +> add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +> add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +3071a3067,3100 +> 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.41 comment=pornolab.net list=RKN-dnsLookup +> add address=185.110.92.40 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=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +> add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +> add address=172.66.0.227 comment=x.com list=RKN-dnsLookup +> add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +> add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +> add address=108.177.14.105 comment=googleapis.com list=RKN-dnsLookup +> add address=108.177.14.103 comment=googleapis.com list=RKN-dnsLookup +> add address=108.177.14.99 comment=googleapis.com list=RKN-dnsLookup +> add address=108.177.14.104 comment=googleapis.com list=RKN-dnsLookup +> add address=108.177.14.147 comment=googleapis.com list=RKN-dnsLookup +> add address=108.177.14.106 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +> add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +> add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +> add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +> add address=64.233.164.105 comment=googlevideo.com list=RKN-dnsLookup +> add address=64.233.164.106 comment=googlevideo.com list=RKN-dnsLookup +> add address=64.233.164.104 comment=googlevideo.com list=RKN-dnsLookup +> add address=64.233.164.147 comment=googlevideo.com list=RKN-dnsLookup +> add address=64.233.164.99 comment=googlevideo.com list=RKN-dnsLookup +> add address=64.233.164.103 comment=googlevideo.com list=RKN-dnsLookup +3076c3105 +< src-address-list=!Trusted-DNS +--- +> src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +3079c3108,3109 +< in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +--- +> in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ +> src-address-list=!Trusted-DNS +3091c3121 +< src-address-list=!Trusted-NTP +--- +> src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +3094c3124 +< connection-state=established,related,new +--- +> connection-state=established,related,new disabled=yes +3099,3100c3129,3130 +< "accept NTP clients on local area network" dst-port=123 protocol=udp \ +< src-address=10.30.30.0/24 +--- +> "accept NTP clients on local area network" disabled=yes dst-port=123 \ +> in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +3124c3154 +< disabled=yes ipsec-policy=in,ipsec +--- +> ipsec-policy=in,ipsec +3126c3156 +< disabled=yes ipsec-policy=out,ipsec +--- +> ipsec-policy=out,ipsec +3134,3135c3164 +< connection-state=new in-interface="ether1 - Unet" log=yes log-prefix=\ +< Filter23 +--- +> connection-state=new in-interface="ether1 - Unet" +3145a3175,3177 +> add action=mark-connection chain=prerouting comment=\ +> "Mark VPN connections to exclude from FastTrack" in-interface=WG \ +> new-connection-mark=VPN_No_FastTrack +3150,3151c3182,3183 +< "Mark Routing main for VDSina" dst-address-list=VDSina new-routing-mark=\ +< main passthrough=no src-address=10.30.30.0/24 +--- +> "Mark Routing main for Trusted-VPN" dst-address-list=Trusted-VPN \ +> new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +3155,3162c3187,3189 +< add action=mark-routing chain=prerouting comment="Mark Routing main for Unet" \ +< dst-address-list=Unet new-routing-mark=main passthrough=no +< add action=mark-connection chain=prerouting comment=\ +< "Mark VPN connections to exclude from FastTrack" in-interface=WG \ +< new-connection-mark=VPN_No_FastTrack routing-mark=To-VPN +< 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="Test sites" disabled=yes \ +> dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ +> src-address=10.30.30.0/24 -- 2.52.0