From c493d0b7d957395e41a0c2ef8ed84b191aed1a79 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 24 May 2026 14:40:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 24 14:40:41. --- .../20260524/20260524144002-Binary.backup | Bin 0 -> 255384 bytes .../20260524/20260524144002-Config.rsc | 3453 +++++++++++++++++ .../20260524/20260524144002-Diff-Config.rsc | 20 + 3 files changed, 3473 insertions(+) create mode 100644 MikroMaster/20260524/20260524144002-Binary.backup create mode 100644 MikroMaster/20260524/20260524144002-Config.rsc create mode 100644 MikroMaster/history/20260524/20260524144002-Diff-Config.rsc diff --git a/MikroMaster/20260524/20260524144002-Binary.backup b/MikroMaster/20260524/20260524144002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4f34816a353e13045043026355365a2e7ff01922 GIT binary patch literal 255384 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≀OZYV1#bCT>#%ojNYezRJ;S>OPZ=M!>7CYhv1WLOYB_OPPhJr7Z+mfS>R6;17~bcl*~ zFHPtygLoe2t(jVYnesu)0Tg@qPc=M`alOFH|vluzRVECHZ`rz(G|DlL{c#7~)WgW*2k2 zJ=VHe>lFUk`)Xs5WR3=>x-94cr0mo$vons9h7J;V)+`gp&#?q^6XIxpRsua6O$ni) z?BfjbEQC8BQWMjg)64$7`{^{6aGF2({)-3t0xxB`gM9&|ne0wE4ybsctcqXJ9*szI z>ZazaF0QIcIRdo$<`aP-B&?6OF_5dZo)tDIl)Gp^$vL8}8`O+CFOXF)>CAuXPpM4n zL?Cl1Wm)1?`%56w-{2bNvJI~9eRJHoVyt#8F1hjInBn)>3txB&2vaJoW_ig76%Pv& zAc{dE8e4M!%}2{!A?nL`ycWq2+jeYPuiv;@Wr<6;A=0*nfglZcGnf$$_8k(qbBHkBoviUfgB3^i5YHB~u1k23 zTwYP82;btjrr+ToC^}E-8Gnl$xCAHjSMOGd+s}pPS35VDdI!Mm0`#3F@qRP5xn$&b zA$l&4#b0~~C+}Y~)kDYa*KM|6#ujW5;W4h$MR%FO<8~obrV<5P>D={2;ZIwBzR?-( z(x9hCBIPoyvh<`XWTJ~D-~Uy%NSo;`sMXtsBgAieQMx8yq6 zgq9`{JC7&V)oRFvw$tS0cL1|zARaFW7~{w-P7f`fq(i0JSFdJ+z2w>%%!#AaJVh8j z@AQ$bnT4Xquf99-fx%nB3dl(S^%t|PcrhT_CD?rF&oILOOBfxm@g+pBrK;~ohm=T! zmzyH;Uh*1do@f__X=05f;XREnU6Zy?H;77yZQ{#h*T!pDw8HVczuMxEVpTnS5#UEk z?~>=UDQcd)*^f*Mko={P|KU6}-0(HK%*_fz(_?z3A&AGmDJnycRK0gnWR}RUc^)}a=V4P~uXxU2|~*&VMsBqOL+m6DEo#umsO;U*PM}#JM#ir&Q#zhR;n#$RUjdxRa%kB&`WK z0suMs56*|kJ<&o;$MFp$|BiCMKWB>WW;%gW)-KlfG}9J|8f}$h#49a~L;NtUR<6G) z2Jl(U<0e3-~}afcLLEmX|doTi~{tt#=>lN9zuH77pO-0|LxYpb8Xc zvf8rzaT9szT?L|nlI<(q0Z|$WCsBUi!|>db|ZcmWi1kKLy$K|C=Q zn(kpIk69~W+EqM;F8$fI7DnT~d)Now`RKssgYk_UTaMy_mJG)QcblS@vPhc$g@}7W**3I4eNdJLEnnV5Y&1cXQ`vOun6yanuvl8OhyFB@-zK z2Tm?FQvC6GXPUDd1$-|8>3+)z^~Te--5$5&;8+&j=;s>BBqcfpQGK2^>b_(FV)Q>l zW@g&|;Y$uvkGTiv+uhWX*^{l6F3%B86ml@)09F_hm{rd(r}2qLZVHcGeB=t~rZ6Dy zi>?IwU#476D|XGoFnmhv7Bmh4n))uAAb!nwTGSWprj z5&?N0jrIE-G~}O|jzDAyng`=wz~@SS7e#E|oBqQ(U1`HTaI8W$$F7I`_k9>umx5yh zO<&Ls+scRUgew9}Q?&3WUfYmOaE@}!;#}jRR}E_x#cY;%^(u-snf+SBDn_KDzjUA8 zeOZM*e6$lN5`*1^RN0*$=i83aMvBOh-Py=A;L!8(j?wc?NGX5>XL#-;3lKdEwl*NO zy=EZ)zxlKxF}dB8!`=hX#ODa&Fl0E0IzC_`1Vdh82}pTw)k$eZw6obbI=S2ajWr8# z=H9FDSBdC?qB#4RkF2a%L_VSLb+LpkPcsAhL9)o+J9-@!9pM8&de&=8LcEPm1*p- zh(wDih&g897=_K5t|_lupn2&BKxIDC_ubh4~+@dYkvQxiVgpKh82mR4eGC1EtP zMJsX6-LwvJ?Nh{9cESUGx(>!Sk1|B`(W8mzM1Q5a(uH(ER)2`hYnT+F9N*Bc9<7&{ zeG;eVnR*$FOZb)+;w&j?58Ml!LVt|KW!7D7Ym$NM*QF7*7HWARIn_UZ*+=4>I%(S9UwLWC zMIZ7^hYZKwgQ1Rd$7c+P4^7jJn#BH}41P7;K(NTxtX<9da_&kup&oC8O%b2*!yn(U zseLx!sw-oaONT-5ZgHg>u4W@M!~oRAy6|C@9Tq}!T?||IQTh5vkTV!xrMS~OmBOm% z-JX$ns2g*1FwHk8rqg?y&0|I}TsgXP6qoyj#l+OSiqLt73tFTM*>WKwkShsU!9X8k zlKPh3>KUQGIYY7w{+h#!(0s%fA(}GEEM2TW#k~;r04nxPv+%d8t}?_sjWISG*RkM8Js&rOAG8Lgb!i{namvoe=Nk0a>vE^9HP>=YegtDTA_J zx6RZyE<)tDg69N}__~$!A}!SUD>gdln{LnzrbYwaoK=A-ECK7F{GZAFxGM z>BIoGsW2etEe3`SL(*OBuKwv!SLux6h_s=GPK5|c-j8?u$eFK$<``oby9MA2Z!wy+ zXybQPVbh4dAV6W!-=_WR@|SmOK+o~J*Rh4Cip#O6 zHmP7nAry}GF3Ur>7LV_MUqq{Hikbu%;Oje0Fggj?`uhqqKg; zi;8OoG|6}Q$AnC<+&lTO?1oGet#C?x%2OpQWTJsNvAIsGl`I7FItYJG-h3N)q|d;* zEEM|s?FyV@QR!F$daX(e7{0rZU55FdDrH<)xQ|0NrM)PY) zT^Ja03cGah+ z0LxESPj&ewa7rJA3>B9E4O{Q<0OLQ!FtgUX^Lv*@#5Y#)JH`IGDK}_i;RxfleMJEg z|86EfS|ZqA7(#x-vpx!=kecqO6%Jl`gKKmFBl4Nxs@ica%Iy4^`>6SaE*-L+g4(B| zR-&d2GXhSWR2%i2F{lXu!d%s!l@jf&tJ{j|X!p3MD3|R=Tk6B6UxF_!uCh2D`{Iv( zQ2N7)jRI3~xa2{*;~yEom*>A?h~9*wxB*|FMaA;iB@P_(zt>FzvNwE)?q7z6dMu-u zkFlaOx*+=4Aqe_s%Tluwu_&PpQ>Cf8GvQNPX#Tg!eTHsz(`ylCff+w!`HV0=pij_ac{`c1+QcwTo- zTxDWRfuu(*atoJ-*IUZ3Cz+c@N5NZWZ8U(E?FG!NjL^;V_?;xO>B@joCD7X0PtP}? zV);g?5+n4x$otyt#~c%y_iIYhs%LPp6TxS`i*8u`S)hWW=?>RRa9q#6_gd39d}_gi zdjcXdq{I72IDHq#oq&irxT=im8wW+X#_viC6VwSZKmuN6*@!$1aX5>|)>vyfSZl|n z;_s_1Iz}z&3cswUKo{h4S~4yFPwyK5i^J>N#>k6=zqXx?B%0C+_AIxBe7i6C9Y{$R z+BAEmim}ckKs>ISn~KmNVAhpTQblD$X4^*gNs4B!U`W}L);CLWSs7(8COb%2E!4S| z5M2E1@oOYHHk5|@ulu8&X!V^$qFsEV+IHi2$7hOUdlfGPwAdaI$?!~2K9_m*?Xz@n z6|kdC;q2t$^`G$ZxPSR9TbtGqHE;_GZYf;s>bJ%Cch$g1Kbyv-X_aQxXO)wQ;>s0; z?RWU`gi*-qP!x|J?OJPVpoQIu^*=n56&;jC(Zs&y4Rk=AY)Y|z?WcrV_Wrw*wkT;yUDdHOmB z2M#}fF2Y!p;B~k{E=%1(PRL%%e|Pqurwt_L`}M@4p`b zj~+1zm+El{Yp+^#ecILMJZ?lapfeqIf3~Q|-C?}{E=9OQAaDNFOkajJ$YE}7-JB4A z9Hvd5&hn{&Ddx$$6ewXRKwM*02ns`)=ZmkKi0DZ*QwY?aIbMx=$Akm;!X2eqv1W$c zDTNj-U06F8Th$R?Qwwl~kZ&rhjUDDfnvR9IT&|CfoC0>NSa=H27NOu?WP;Up2lpYD1zyniJl;yq^}}l)C-BI ztf*Tf>haJ12kKesbFLE=J5LY286}1fkF~(s)Q(kTa~oax@|P;g;cX?fc*ccWiQQhM z<%y*=Vb|ua{DFXKb{mzn#w*bmzJq||mdyq2@n#-{w z06h zkbRT{3g?q8KT#tgyKu<i8S_~&k`0XFrrXl$z>BTiI|X&Px#s* z&os+_`SqyiJ;-Io^jO(r+8Dl7humWCX8VP(*LX0s)t~9xy86$_) zo=74|IRIK7wYCFdLp-Ff!g?N|(*HGTN{F4OH%s=)3qi`YVwI0%_{Ty0yZ8c3Cb2+9 zBzI@BbLKW@>4Ov|oMYWxO+(2=h^+nPLo#huxjCiM*D|&nQV&~S2^yB`p2cR`S~q2s zgn=~{65U8oa#~7iM?#1P304-9Md{jHr=(aqJ!5H$<1q?$!`Qz>_Y-weO<`Gs;oU?b$ zs*(n|nz6M9BbE$uD?1H)9sp?utxC>bF+H>$_ySnWLcXl2W!7GtG_o3t&-krYnXzIi z>k3$Jv_dW)gmfLL?vTMG)*^GCx-oyVW&-8D0to>vbJ|q9=Be#Lnk(eB8})1VV7gu( zLKU37H)R;cF5*lFF*bsHa%{-Mb~#77Uc8-j5`Dh=&$|FotDx(_jaqPIs$R3n2;qO#_rm-AC`TkH`L{Z6fi#&h*jncQb` zI#%|vM8N9$&*?!z%u8-Yr213q^j*B1tfuv#;8~XogZ_f&owiGT3Unr7(qqi&om3~9 zP+If1)aqY0tYh%9YO$@5?v!nIl9LWCpk_uZVmx`NfO$cveDn~hix7cJE$uicX7|)L zpfyr)Q~Pce8j|WsWZh917MQM2ZbH&sf4lfJtrUZuqH+VIDQ7q}AqjeByD`=8 zT3w6%4(2&+LLIAQ9Bc6r@7nvHCLb|d2cqsXPJu&bARn5nKj*}D$&f8MT_fuLCjfLv zsP4YhmHli2TCGD{Wf^bJd3ssxxGEE*g31=PI#d%I`i-@RY>pGj%c=YBZT*{Bp+W$$ z_h>Xoy%Z`uU%uinyyIDrhm#3RX?}BEF!Eb8?LGPhG6p@Oba-3%`*gU?zn`gm^h5jO z|6~a|S$xg%%rge{r@S9@HcNwSN4JKr1_pchfKG%ft z!Vs&MvK+&;e0I8uig%+Nj*R5ubK@BCa-qh!=bSIsoJbc}OMm>U3lKRm4v1N+ZIN+{ zh^LQRjV_|P{lL80EMPi}$vKq^H(|DudAUWiyf|Yw=p`1%_Ol)i-O4ez)7eJW9PT#~ zwI3>&J+44pHuhg5OPC|8e~Otx-P4cipq@_pRZEzLIfQ@-8V~9%kV2HI@U)4`ioQq& zr(#W*7E(Y0k+t=myyRl?zP;3W&YB)Z`w#DSK|XpDnC(~wm-hdmy{P*^4nrTzp5{_m z0jN#Ae?1|}IkSD>YvCJWl_yq62JZT%xjWdMCivpk8+)MzhrMZP>P}Ud<2`s#_@1Ai z@G>A;o6K%J*r%0V5LkVhR6#Se{y~ssMTY^HKz~ZO9}qdm5i}X#>1d8At)M%3O?KXr zCMosEDA0^yoLZ2CYjp0NB9ZUVmSHCXyHcE}PFaVAapdF8ryh>*sv`V2BGj6ur&W~d z|AMBf34;I3`8No)zo|I>p!l8=*xLYdl2ge2c4QZ`5(u2Ul|5#Uc!(dv8b%p;fnZi7 z!@{!zB`=vnN+xW8n` zf2*_%?W)0Ks}G>BAIVV(I=l-rQOuV?Sb!iiB1^nFoSL=^IjQkW=n`6vI*ljx z8H)g+DIkRlRHLfHZ2a1)lGr4(bd_QAaNpl1(uK6vVdfo^Db+z@7AW@7kQ-E4JC*p2 z20sRRt9QLmGM4@M2}vzBmV`Xm`C#zFF4}(Tpf}aBH|miVS!!}_DcG;JKVRdnr9|f_ zMWrIxUI85i>eYej(Q6q*Vs5{lc)uWC&28CilA$L zpNDE|u+Ca$W;^|g+hi6bqDLvDU#VaFR(DDR9H2)i_dcN-JtJKweM_-|k|8G$k=92x zJ>af1F3RTNei0wwJtRxTJ^{-SubrSnMP(CZcQjh_jC9faS!*}5d!JIqSGhY4pXRv9 zOvGhI7plJYhT)|01z*V|>?pcY8e_}NAKv1USlL_! zdG9hDJ~P})cnYUUxoS9GfKD@isd9IB!+!4NPKN8yw9WZhA2~8DrW_BIoo_;$<0U4n zO>5@QlbXd{3+$8g*8ui(;WD`xByyM(O;|$S4wKCF;A4J54kv{zv4{XpWo*cpj+j{4 zhn#*h%_G5Sk*_*nO7vTYs71bSO1VS3*PL`52WS%@n0GzEFOj^8VrH{{=ZWj*{050J zx&O0=*^v&y8=K2!TGE$26B8~Q#cS@u6tmpSa1rx@`td8nC}FQS$RdnqI%R`f;)J| zp;_~1t?3uS((8BvJ(l~m@=A7YzvAc#4%y95Zicu1Vf;lwr3K|#P;Cg^ChyYdaUo?f z{|yQD(%PO!(v@5?ksAAq3scdl$Q7c^!9 zgvV$6Sq!~6#4$~k@lO;6FSFL==?fClod|wxxn^j5-wD~RDOE?Up^(=A|5FH{9I2G6 z^BNjZt~mn+v9=-FuBLHi%%F!;R9CH_?9>awB_HEcwOSl_#|*^l_WADR^l*FR zhMbwb!!80WA&u4i>ePEi@GtT2D3mA#wg*n&^o!6qsv{OEB7|ndYec@EzZVgg#8*u( zaD86-zw5Af)AwUx@tw~ZihoTUIm9fL17ne6v1^gPc=)`RW6_wbsyl*ugI_<@EZ}WR z^YT|nTV0q+S`)#NPY1p0*yM=6)5Wue3q)R!QG8xxounp*jt?Ojhz;I7 zw@q8MHP@E8J>MO%e~`#Mt?Z~ox?ILdLs*lAmzAqB)gN$R z1v_830=>BuZO1#pu2+1#cHnN!gke(=<0edq`#>?2sL=Il zysl3Fre!@fkggz2y7|BSbKUxytd0&GK7e#|3Yww_8b9RDQAGADcz_$wIe*GHog<{F z!v}KZIrUmee-^49d&h}wkf?WJC^W7!oUwGbM;3Y|ta5u|kI{SUM*o{QU!m9uje{yY z5cH@MPX|=}s=?NII)O|1AI>%%G(89tzJ9lKlhrASLj^MOm(``p zcn`xe>;%-Ry7(H%MMyMtey2IhQXvCT25g-uZ521gJ)xwGg8i36)ujV#2MYca>C;&P zbD#Nx?A}opk84qL6fbxL9a!W*>8A4*^rzRq_!2GKDZ8(8`WRDWlMVN6N+6H^aFMeo z4YX;gCAaBloW&Vry|U*~nX)o^7^;p6jyCaC+9jCD2i1gh)#vpGz84J^h+2BT@GS6n z1pt%+fW>(Qf4MxoNe3>P?6V+|OuJFKpQ&!|jCre2yDs+NKsRYjZ#yQ}iOJENF_@@- z$@r`EtpeE$HZJg5ogFFtDW|0%&sxQt$s7|?&TF)4!XcOT&^xEOt7jR={xgnNeo#BJ zl8yP;dL-v|dM7SH0ymZ)@`I->E09y5fpmTpW*QJfwQ=f4}#OADgJ#zEcFp6SEoHAvToFOlXWv{#5 z%kAOcHl@ZfEA(ZR4wxA&1ELrpJR_%MUH6^Eco~fjK5!EX-3riIKPIkRE}&`NJ(mq~nKTXn^V(DV zOkBs#ilpduLgU2vZiHR7R83n&(ObCP6<4;e#Vj3HYDRZ%mN8~DAYuS!+^lNPmmU&l zyJY;JX-rgApfmrRE6Rhk9y%yh@(Y=<)Ab`SHxCCuzWaj?N#40Es>=@!4+}NTO00snf{jP*4fB?8Q9(#{K?K|{RXm;*D z$#dApn^~heRz{6q>^Lk=eivue!44|)Aj!GkEpAgYPBjok0+(q+*CmNt$jiHmMa7t? z&aZ$V^zCILt)|W}#FC&P@>c?f~c6=Gv?eLN3W8l75U&G0B-qtDJQKHj{g&?-j zk2gO94@TqJb^D0tx;AB|3N;D7T{@w_@o+M(J$c)r!p7jo{G& z5GSOKG?zK46{_76mS&|{s?0Qr9H(UB3@@9P<7kYVAr)&Ed?@`nO!C#*0V_bTz&M`( z{^1dJ$&BgjMO;~ebz}GXa-uSAB2Wa@`~VqmjC6B4nZHzA)n{<5BgZQ}!@J2V1{Bp; zjpZl0J+?jY*|+S&Poj=R=phHs=Y5G6 z(@Xf$>shhXW7{BKyd_+X0nnn@go>iR19GV?%kODB{U_tLtCl?721}-~Q#_&6-pVrp zZP~!H5;Thz)Y=1S#o*bDGH^d~pXY**nkd$6#?lAOGGNWuXnbI?HxW)2rfFaU5qTCV z)a5QtfWKp;s_G7IptH&aSAp$eVvZ7WwWqm&N^c)_rp9z6m5SOx&N*U4{tG4jW8^US zD*t#yYGn&YJGz|Auh{}ZA$g$1q~ZREIwADPABl0BDxzS2C7K|oJhV?kF6>LwD429$ z$)``jm%wS%KwG)bgkujv-rzqx4q28uE_VbKhAet3Jx@m7HH9nVmA_7}TV29Dmiy~X z$Z`7NA*xMUw2=si`!ffOvo{AaV*jd3#f`XzdN z1e-Sg1aOERMy!@N&hFp`_Aax*Z%V5WVSQv=1y zyuQSyZQ5Poc~wCq5JD--oUp44?}w^&3Ucaw@SUy2Y{)>Vd--D2goyPs9QEX4%2=Ip zC7hcdOcFAaSCO`HOFMN;n7FHp^FS|GXJ$po~0dDp-^58i54q z)txuQ@UFH_#yBnKAcF9$PGSU8`KYqTvRcFzkD{sUG46U0T9}D1LfhJTp0_OhVb9HU zh4Yz)Z%>y=@=}||-mlRpfMC>M>~`k2&@*YcV)FA0+_@OFoH9wUGPlNIKC#Q7ee4HB zCs^cX2UEFuUL6lD&{J=e(=}ekU0wWz#o4!UhP`{WRAAMy%O7PM@IO&*t%WcTcc|vT z#I;05wmz}C#^1a?KPLMVqFoWs-Y@wnjUO@tE=tarCtQxm7Fc~i*s$T5W`0t ze5=S=GPzVC3{@uwEz}YS(A){VP3aBDkQJ2jRRFQBwf1wPsYs>(IJhDag+uvo1X3C6 zt@qF+v0<&-pnE`~KNnb4ey!xB{CPsnLDTRQY=6d~o;gQ(;{vRumGHL=@jQx+Ju; z8xITAQFEAH#4xtnPmegrhYLnhpO9?s!vnN9(v|g$z`4T^u@tJWc{6A-b9O|uk14PB z?StVV?=-{!+J2~Td`H=5^G9P8)g_|)=d4L42N&~~d5nmq$YDHZ$)pvvr7Y<;a>NR2 ziya2WJGqho+zm$nCx>iD7{T*22&yu?BB_)6?-_lOnG~)prgWcH^QIn?kY*$hLk5D4UY3_(ZQA|P%%j;(@S%68RZSgS4cwK|;BD2$p zVc;-GgV<1c6GD)7{c5$zNP!=b?rhBJYGXs=PN)}cULQ|lU!Qet!p;OcCzWSth6G3c zjZpfZVjwZV(yNpqT%kioXJW_$(Cvq{cB=Qw7%mVqUa;m-AgvYQNWs)g72VID!sRqH ze9mI=N^2|3x8^!=@o(rTL_z=x^%swS?RFMA(K4KHm0z< z*Aydq4LBlfD_qRhtF%@4O+{yMm!PsA@}}H&f?y*Erq9$GXBy7=1)=RIw4(}RuF9b- z?pqYkr&JlEf(GpOi#QRuJ9w_CBitsTzn3@zB!>T}vyHUy&yfQNn!P2BN;>xk$-6pS z&*)FOj*3F9?al_{eZ?}h&Bnc>$` z%{KQ-@1{>QhX{_lVVFyRLQ5^<|KODN35{@u_!O~Umowegz4RgIPBeFW zv73Zf+AG+Hx_cW_8dRqXTF#w-1FRK*gBprA#ul^X^9+tLA$>P0yS%sjdsoue>Z(v| zP7VP5@x`{{*+Q8=A*lN(^hiO%al%9e+dMOe~*XBTe>2Hmb zNrKN({z{>Zvf*-UDA3WY9?OH^`H?z2jVTi5c*XM0bAZI8rN>_srp%C5k&tsr;yh;lrt~sHs7+#E_O!7NR%kiyx4Xg+zy2j z6p>!a4kIKOR(V8|bkF!@Q(%I#WghKNX;P)!nGHBg-BSw^8xJThFt$P%BsJoNN3L9w z+-fgAp0B$v3_}+{hOT&x@q{Zwe}Fr&0FgooeNjlM*X%@_8+>yySE63_^jakyf_sMysHUi)JX!^Mq=oaPzZdAsa*n;;h5p`>)iI z|ALC=KCjl#Jtah{2n^ovHODdTyVcy1#!l^S;*qk|;m}rL#0EojLp5}f#3&_6+eg-~ z{c@T%)~N(OushKNUDU<-AHw8q@;pCOqASg@duR{anLl58ctcwhORnl^L9mEB&pm1j zbt@bpj7#7PxMWt{!$jC=fx(E zT~)Lu{A~xNHN^tDAF{czqw?TxYg6*|_QGZ-3z`1w#T@!hrA=oA%;>ntD@Ii-_ov_R zrZbu{o4$4e$1vHP7|`43eH=wptEWWGQA7n`<&h}2a@I)VY%L56GQxILTB^xwqzw#; zdqV)j)!&HqBjeBc?%Y4D!43xzsrF>8aVK zwdPwh?boW2qe-kHWwq_}Q)%>#F)rt&WQnRx{dua9x^9uC`03>Pfvd-0LXUR~hX=3= zqhf^zQ#*9H^qhVP%~FIyt#?Om>Ior`%miuocx`)@98=PR+ol93YnZf%`_+7wR;Q9+ zOV_%+$GaRGtBlu}O17+pF6P#2DUmY9>xyR#v3tG3{YZ<8x6Ll*u#c^r?_mZC`-j-P zZ(D33fW)_WP)E8^&2yrT(gktD`Z@&;>Q_c>rv!b4tnkuaE@rK#cA~Qh`X>kqZMD5AOi~KLEh5w&peVfn6(u2ccKZLFKTxf1wYe zv6UO1U||pd^R_?BZwo6a5jVu4=7ivtrh@5EPD?U*Jm(T&+mScEh_~}Ft4MTMZASzJ z^eM6Slm)_9Z&QUFl_7kn@C1LtfZLYsm|movHU&GP*jJGWVg2=G0d=?<)e(HVL#+Bl zj4b&s=GWxH3&S}48f2VIbO_~JB)$&#MKrp^qy1pb7aVG+DAqM3jY}(|quMmunpZmB zQ$BwUlP7ya#%*Hiq2oc69*l9GUkIOi(`%Uvf`CBzZ!N3Z2etf#V)Xyh(lPMzbUUO2 z;;FrfXg^XXT+(}fP88|K`GYj~my;jjLCNO0rLlIMnaAUvDgxQvd1 z_qYU~U@~Evsc|_y*X`E;-hRD1-#}_TEvu?%l>A?Dh*M;2LrPY7 zA(RP(znVo@7w*h`6u`2W$kcb4mqoW$TK@-9iSIKf3h@lL2Zflxu02yQ^BzSi&dF35 ztJMv6V;LlkG3mmIeTib?^NQpDJ&$GA1$Q<2Ji*2Q+^0W!Dn+XMlI$F;T%Mf;hlA9( z826BB%BIcNLnt2OW<#PW>Is;W`I^yiE}O137DC=4OU46xE_l%9j+S%(!}=wg&bZL$ zLEnZgb`{xs1N?3%8^ZKc%}fk#zUQOaxfLt5R2w2M)vu)9-YVZ42g*cpj?^_$&7_jk z8F{Xxll`#fUv|yJC9GU_+M1kmA*%R31a~0L3|eCv9>SBHY{uJJ`n+MC4*pcg3)N46 z7YqyN)k&-vCBX#4;#STOwmQX6;=29LU6DJHW9?{EFDAqx5LA{g2Z^Olf)yEqGkyvQ zz~0s^1@1vv%5~4PdpURucR?WniVVK_^cMG~k1v~+izt7 zz|*4pRpvs2X;oh?fZGf`8Rch%l&%u}++YWpJx|{j7;K11HKWNJpMaS{UX6jhX?SX2 zSogR=bF)zFjA)0sOPt^;0in;n&po^+Vm_a-N3qLOns)Hb`wLNMivx=T4bCB!j7dZ+ zTN;s2f8XceD6qKH%%Wl{(mdPKCl{wE>b@Se8z8=NfTB_1XUDyJNlmEdP)%4sbC8tE z%3Fiqn`ug0fj7lKhHUn#1N71jVc-v1fhb7DbdYSpj(Jd!609Ox#hw!hRv6%l4ZI8V z{HDXTR_aDqxDq`ip2>Y;GqJf}(qd&& zZtNV>-P5bvD@s%v##4L7Wi03cedEg*i~0=MhP9J9;h9%1XFcJwUmf~S4r~VIJ_2C9 z-RDlw^#?VpcqC7znON|fhcH?SzKd^{G0jHy)Z_iu!#|TR24&-ymz-05-YO&GfPuhk zUZgLI&W#ek9kE!49grx>{&IzpJ?|)8vk!-xBDwalcJF$mR;NviX9um0CJIJm;M|x| z;A_1h=@jiFO+HauvyE96WV}tt&+9Hz>huSJ=xfiFgW!5x@D^qow3ZW@Q?U4-g&g0M zaW`a?n2u`ClZ`*i*WKb|%7~BjkV3tt7?bL-ObZ9hi&^2M$0AUXPA5E;tU$a3m1oKR zuA$X&)P;66i&JQCVP&9W?vkoejcS&n2b5&sefl3n@XZYBa4?gH^r zdWB;ke62wmJ*Ns#z~wx8=8QA7Es7wdx;aWJyj=&Uyg>a>TAMFI?1QNZn$k_&l6)ecwbK0akzd{Gg(yP59zTZfJq> znDa*#@W$Wk06DgzA3M(GK-p=TJMUi2PnV#4RulCh>sx`9Nw<&Ne^hZ%QpvXrj>CYp zC$f;@{*fMFRi^bB`YtJ9r7Abcq)qrQp)x0K*#N#w4<{VUd2!cfitWF**67T6D6&^` zoaslmeYn+vmEsB` zKS!UnMrq94?+$lLf_n}B2^|hxZbbLS?^B54%80O2^qtlRUs21r55{4<$gocV-pc6e zc%+Ti)~5HfvoAdO{^z|+G^>w|nVE{2ZG_q0r6-X*^+B+&(_nfFoKsNx5DA1id3sOR z{0&YacI?ObJ1O`D3$2I6StGFBe zI`|byh2-6_B((NwZ-TJUTWv-i{`uivLFZ-5C`~IW-WEI9^8}Uni(l=QZ^A>7zJX~RP&S%2yG;59`&OgOA z{sErGfIqGZLq^6LVAxeD7T0vud0$oT`Wk&#II=xc!Na`I3>BO6?fp0-=Yp}e&I$;@ zW5@4Fw1H(%!ygFD`!q{F z!Wp_0YSf6S22jOlBpqcm0Ahb!F}kl~Nyb*>az*+$)rLPSQe5vDr$Ef7Q7Sd2f?xFP zq=EG=7^0tQs5m}H`-BuX7^wfMe#JrQQJhN5YjeFHYY)!t8q7rkE^%Lipu7Iwou&X^ zueYM_xg;Vm_R!g1?Rr%)@|Y9Qzsw1kn_V53kRY1Lj^+y&G1Ip5;T?itCDv0>RZ!NT zC|ddpPw&1UJzydjtP;G|M>LB4 z5Sd^7e;y#6^^F$H0sN?4O`ZqGv@vk~jve^!aT+nC;H9icXPW;_pP*-?C!}tSxxv8U z!QJAt?AIh>TW9>>c29P6HRqR=Wq{+NVZl!P0m>^X91B#%$F zCHs6s1r&PEt^_QeH)OPDhcl z)zt@T8oi0)A{?1}ysb;i0Ct6C9zfd6zd?fpr3^WszZ@4-Wme`RP6uy8$LfC?QtM`P z8%7CB|DZ&(eWNB4N5szIw5sJBkt?%(K%wkeyXcfgadB*Gd_w_3U(QIrGYIJ?SpW*N znnbVJv?}7262g^Z{eqzru1-;Ro&wa08D}+N2q-y7(=l|4SDq3hYUEMzmCdr#qJdz=ZxhB zn1<(8Be0i6H8IG=(%0p4AE%z$#6Cj+g>ym!y@_y@+fC&6PEOantq3NpoJ*6%kNaV%)21Vt7sV!m@0c2ehmq1oD0AphA)76a zBr+NS;c2y~QJ@kdCGto0cT3DIzAdr^bQf1tg6LyXap(q=RkPY6D?B`oV4(QJPJRb% z!un7$3~;;`$uxfBi7g|+z`R6N@H=}d+Xi$%I0H+lu2$1A8*26VGtR^%A8tC#cVz$l;ux(^<$E>c;U=({u(P=5>-SHi0(iQVG$$T!yz~w(4hNa zQ*1{RI;}V;Flh0}{sZ;K9Zo4MZtHCwj0^ubFTG5`?EelCRbC$>Rv52A0Um8LyFKF) zwh_Gk?P8u}-E6R#2~c|unyOeU#?oP>y!2+l8znyzQ5i%G6qsv(9NyOuJ#-;f^o0#X zehaFhRkUNHWiI_~7O~y^czPSbIOaNZ6a;9RVdcTss?=Mi)cxmRl5H~O^RUQV-4R8W z*bLqYdQ2hO?m7NR-*B2NkA8EhGGixCNlc zpSi&Siu_BUpa*JU=js_CaGe4g!sH+9jnAhxlf)Yic*_g_-t$j4k$OnxgkrNv{CZ!!KSr+cfS8iQ{f z=!3~s4fh*LoFl}jG{jb)Rd+cei$jhSlw+c1f-NK+dHc{`;c8I|^GBr!MVM?MW|bH@ zn_s9ZU<^w*u~{2Z%N%;PPFsl1Ro`j5N?0;Kw~C6tJ}=^9(ujtoQ`%eBZV(XE%6K?y z`NvLv422UBA_MTW(QeRtq(+g@Xh!l{f(m$v_vv<&t{JpOFr78S+CrdO(8?8rB#@i7 z%l;vr?aX7Z!_su%wONd*HJ_WITXjfxo1M2d6kL&o)^nr1rRy&86Tv_IREDce!5*mFD299uvY1l8># z*}&0f0Ktv{Qi{xHE7a|cjkwae8fZQ)wapDkgdP_@B+9u}d!@G?B5>E-ybrw1>;9y} z4-_Qj>!*G!o6%C)ZZQ3VZxjIRH(73zO~#8-^ODpDKZ1yjP2Jb>6ejufG|$W203?2H zZSVcJnmsAMXvuMrV3pC~u62gRgErBlt!g5l%aff;)atjC`!_#OS^mzvf0M!f_*uQ* zU*#pfRK`Q+h+W(8i`{l3{D*Q?Fkc*?q8&}_}3e|3iwoJbM^i7p!0kSIcUK7t~lG}fOEIHKhhFIsc|rFq*@Aolk5VIK>!`1 zis~r=AHY%ls^Gkp(GP2u%nMmX?@^Vdx}$yZ{7puGVT0L9iPYCJWH}nCj$NX7-GXtM_(QC z&A#j58TUues43?kHb7|)m6jE=93fX3nre+cs1@$62l-P>G7H$UZMOI1r@up>NUGaT zBe;qc{TlrzKF8g@u`>8uMg+m8KyoFiwq61_FAq{Kl?zBz%WzJ)pEfZSBhD`pj`FV! z!a(ZV^$R(04+iMc!I?tkxy}`H=DOAW5e!k(QB(103Ka*+DIcoLb0Hb1e8v4B1ZJN? z7Qk;)ciXHmV|4lZWc49Gp7pdhe<1i0_EgoTHP1`g)q;YVRd+5fu;U}<@x zM;Rx)Vd%7PuvwdPo|Bi5sC2?h=3)*y0Pv_QDE|JxYby$_b5=RClhKa3K{hM7n2Q1& z_6TKo8w%ax$i-oj_oC?ags@SHz5;n&7;5UeAC!}PVTfZPo)S$}oh>`32i37WRz=ls zb8&F6*C$n^wY7^haS0$e7F&Rzt4M7_28n(Tkr$?YMRb@w4sYq3;5qv<$72gQ7#7Eh zU-0~;jYtMXiCQU)@%bDJzGyh;Uu2_0vH;oaFvKf*Y*U3KqfEtmUj7@W@S+cZh@zXb ztL}rASAMG_o!<|Fy>>ObyAy2i-*2Ge)!JttR~Ani+llfd8N5fkS4WM|@V}2y@krK& z*`D+TLjU@2xmpYWLR#W``2S!AY`rmpP;@>&J``{q|Gc!WFHlBUn@<|sU3l1Jh{w{v zm-BZE>_%yh!DAL?${;itP>wcRrkLr8ZLXA7Je^Svb(DSz7tz`neM-FR`Z2@MFa5t ziJ`RpyGSl(>8BLEp77~@gSYjQn3&TLNkq~4v;rTj7pmTclYP1ZB+~7Ze#>3)thvx* zOYD8iNx>l>!=$1VmR#dH*Q5!%tkXtZE&sIPw>Lcs%J(Ryk_*1%1CSoC#0oBC(5&j% zdKC~td>LF5t)$=#30X3HUj$JNu=I49z#jzQ|F|BK4#@DV_Zuac1(SucEy{ACRSVO& zQg?AKzNIbHCk*ppbccNG1y7m?2v<)!o&cscMxcvhi1qEHpmT33IxNXi?G9Ou*#U?d zym(L9If|}o177paomZ}`w|i47bdbscleAlafIE>syy-my3v-Pie7Ejws*=5Q24T*4 zEDXYjv+G-C*dd@SLr)eg)Xa0PFV9X)0WNtTZc=SC>EvZ9K8~nr{%zEKJZ^w1;x@h1 zk(b)@s3ltl&zz()-um5@lmgS5Uz5_ zrNzmNO(^Lm)g;0W(~+4cfn(1?f!8K-tDibjhB=|h49EhzRneH7)*&h#EcyE8!xKnE zl1d;xqDBALq?(^7~`Er89Kp3!yPa!)=f!k0O#g((Z+a{*}|?%~D@zI+SP3gM`aVDa83+OH>& z;b+%J(yL&e0qIRD&(KW}bWXidfMV=`;71j{0Hp7>L&8>qG`A}f7^1#~$517=w z%Qp*joQ8i~oyp&1J;AU9!GY-3-P{txj;+1e8`ikN-mFTBnBg!S4jdiSPeCf>09KzM z!6`akzchQ1XdAH704!|pJ!R#TtoW?F0s%HYv48GRop zw>MQA4|TpCe2HWn!WHrkL)S#L;lldD(zBrfCyi53#{!QtpB9oZsisbT%uyI5TH&9AVqtc*+vs{|( ztNo;Y_>Ja*zq=0yd>Nqg^HeJDzM}@~$_p2)$Wpk-?GZ?Ae4=FF3uj`eKcGhK3U8Kr zlGqbpx~ack$(5iyEtFpE0oEJVT`kP>Cu}zY)8bKiW&XF4v(qKt1Fv^dB~>&@D(4Wd z6uy{qzwR&sHG8~3`X+Jsk_xfA$SO_LjA%n<(%8)Kp}$mWp^mc4rn~1J(;eOpA5+5* zUYv=X*W9KjHi!kwi40N}eMi@lh^Z#gfEL~ov zM~VTCL`mXQ#%$L(d{His|FeYT!i6{FCYpBeTb%_X3gkhfiJ`>HC{5L24_5tP zeXTQ3K4V-E1{x^ZbZP-&AX&j;ujEcPL+c&C?cjh?Im{+&uuFdy_hTCTiODO5EJfPM z#6QPzL30j4ic2p>+DNsR{%=zjb)=z~(1M8#dNd|f?5Ozk$w|IhnIK1=agdnA3WmYL zwPP>MxP$5KX@GY9MhW9Tu{MFIG}14{ju(FcXGRSgMK%slp*Kh*S#SGXvb5p|l~>x= zFq13r7Rjynhx*n)rlBDNahoM}Yl$ey_~I$2guoOFmuNN5CaW4}2)<*0)`oHXI+8tP zAWVG4B%eUwU*b)i31oi-GP{K)lgc#k;hVP4>6or0Pi(fKIz56(0b2gQ`vvX?%|mnB_6-35zOp^B&DdbIG1}?|{18)YAAn zdj(CQD*6x%^dO!j1k~v@GEZqZ7H=y8GjZl{8Z{B6>ILM*+t6FU%0uDjYW6rj<5&)v zw2v0zB|v7RAh$7)n}UFwa7dHrwftmESLI%T19Ks#2K0o}VBH@P5;kU|I|BjZBXPc^f4Iefb`_ zr*F}c%-MTer=26gQMjHdy!C}@w=UNaMR-raB(mNT|5Dt^q50VUPi6R0U{Pg_d5)3( z^SwP+&U;yFyTdJ{xend+d#Y2I*t>9XDEjHTFNjn6r*(n zKqN)y!dvkWYCB^NfzanT+!7YZ&;cwI4psTnEX&G##ziIWR+^l?<$KYgS_Oftr_`1? zN$q405fG`b^x|6kkxaBR3IED=)qvdi=FpA=(-Ddt49Llb>k3(3FjuE7=I6tc)g9-kE$) zEp(amQ?I_KckyPl%C0KoN;l{|UdW)g)$jzbHXOW)4&VB|U@={#{&tmGGkwtSsjTJ}beGB_&|-V|TKFYn`LJi9qGeZ^gsgNQAg~LBP@{`nA-F zto^OPbS`H7;U|vM3bRw`b%>%c51vnj&uKamZWWI^GxJx2t!F=^sqk!$Q|+P=`be!! zC3+r-%fqnsK&H(4txh3^8PfbW%^Jbs-+6Q<270QV8i|Luj`Ap1<;n^`!R-`a1h~Mf zNV1hzq5`+r6#*m_wGda@eBlC8_*;kli@k^Q6nob!wS%uH7|}$V z7+ee9T7VQS{$P$@wlgURZpVB^ItAbCEe&K->H3(kUX|Q9WSt1~n6&diWd?~Tg&G=wR3XFoZC6M` zw#t8%1N3e9`2%C}xlT2!as4;n4~g*Q@9?4|T*7?({OQebi^XCkURzJ0?WG#;4}6a~ zS~uzi*jEPGinrB~fSJYuj>U87VcrFCG)S`0+Ke;1)*}!;m;NC@Tx&GpkaN28i-e43 ze~IKK*D-52k7H*5xPU)L=j z*sLk77O7lknpnXwC@@waU6TAW#;$>-_M=;IzOrpB!GjQ{&?J5>`~ZVmR?0G4`3G@3 zP>l1NF>4B!7?Tpr?)&)88a}i2#tqp}#!2FWZ%wdl9yUxVvbRfrZ~h3Wn4|pwY+&Z( z$r)VMR(QaS-C;TqrxeeTqwM~#7~nIK(rc7r)&ixbwz30@M889_ztA}h z&|{?s4`Fkv$aAM6HezUQ5y#JQaXGVoXy~OmD|%eCU#n0eV9i-Ct zmd)3+v0UOJ^1*X?>v;H9v_RrZ)k<8tjxkm3;$r77!Mb6YHx^f|u>y}cE;PTw&T@Y^ zm1kCR2gLiw)q5hPP$Y@qsqhe~rxb(A^0t3{&mMTreQDfKDcr$;o6dhZEf(t3FRo#r z_gFat6Im#qCaJ#<)>Xn%%p7`XMN_FlawWjou|^d;;FYYpi`-9D)5N)azkHDA zFlsOoAz-7&`4j=HTi(k%!2Dk|3W@(JsBosomf>x3wmQllWW1?5KX9+R`wX{TR6$Ks z?Um`e1)PBVfOrAVrna6AlquXDX?Y!p#P!3G=B`*m{-EWo4%muC>Fe71>L0^8I3^*~ zGc{4B9P(@KSs5L2Nvw;3;YryJGds3%Szi1lIxp#t2!3U&kTgOORNJ5?`TbUgu~3E^9K6pgh^k@sjANuV_=RD z$gZo=DM#+GkeZ{Bbtm~RtmBUEy_65%b7Sy=)upOYMNq2>c}JwjwNc+!3k$g&KMnMebCCN4yl0!{qPJv zZ^F*5{Ekod;}~w5Zx177iq%=$Jeppe5i5lswoamP|MlNUougG0z)I1&dYLu@3O+$T zuHm$+Zrpe;I+pEOpzAHuKcYSpT9+{3K%sXN@MBr;>JwBe;R`S|&r`OP@7^X&86+mx z{$!83QIe%v)BL4JMibpaVBlQl=l{I^=aChb2M5(_SCCt+8ULbv60)*{ygh2Dl*-B(7<&_*6(}DemffwZwm~%SnWEe#OlqiC*-bS%M-h z#o_>QnST0xEP>s2kIyx{IHoekBihPE%XR0qLovYDinH{}&!Wnpd^&rd)EvoZ!GNch zkJ4IncGcE3_hma#ECEqN}LB!7o5+TR8l!|ogL1$wh40sJP?Fs#%$+% zp9r~={?{u#d9qgylpNsGzC7p>&VB@cU1d_&o}{M3IEIg+%mAMhX~>rHO15)l=2m2| zQ+a(YLt0Z8F;I#^O@p{@Z^OS*$KV;nKo64;Et8x_7CJwf1&pg{Q-#-eEt~J|oy8#b1-v#BNzao2$ zmPRsP%hC&mRfUcMgvJ_9PYQ&XaTy)Ae_NC-WOi zG>&{8mE*TX>%Z zoL!q<7l(Gi$%^ZM9{ER9jbXPsX|B@$ZhgEfmel^fKMq~}$mS)3*6o(1;g;UVkh0uuQ4e*X3S^gVwq`a$0H|Y!AY< z>F8XqUU3*2;eqfZ4(I$sbOsd)xk_C~Wy1*5D1J8kuAq3@&R`#um@XS-9E}@>wh0tW zwgJ>a?~SXg5_D)mR33q;ra%mVtHq`IUf+nqyGpEJ3fSe92;T6~WVGX)--%wiK12gK zVa*~$-L?&L!TwVRX#}i;A^?N^qP>Y&P!Q{l@G+q<8}UnJCEw#EAU;7$G4&-CNsqr! zB~pvmPZBeS+)mlx`#fz^_jv6nvL|1s_PlzGJo;l~(z9V-2ke>CG#wjBbUr3X^qk-s zq((TlQA>vaATsNP&!2M?A**n|fEtrF6mGb={J|ad>5OGYU`_6;8JS_0Lp-PaKlTDJ z4A7^U{p=MB%_NNsD!INo!zST4b+s!K4G@~IFSs`FakC4!5ZYPZ_EO)iV{nj!aghmp z;lrWs`?c#60~Uly7t~SFF@%g8CF26ScS zw>N;d{g1~tAB_@{_!AiWB$j8x+(2U@CwOrKEBIm4j?Hr%2p)=77)-J&N@dr?n+FWgS(nP%5L>kS_|`@t5|`8 z0ES#*+Uxd3{G}U+Hx>E;-)D|cMwi{mCQ>LAU;lRa8^_$+VFqaYtG`BOz4|j2+f#LG z#lwXDmVL~=->R%a@=mIQy*Qs$DnhyrncypqRXv&>i~h_kpWzl28~V*!6Pqo)_M>ys zJbDBwOdFVNCe+l)Tgk%tl&R|A?puEB%!PAp*)hKSG*)HsP+FAqHJiYs)&@%nRV3qE z$2M$$?Tw&8ULGE@^~>K{e(}{Ph~)~PAjj0}4|D)j*IT~X`|P|N1x+wC2boEKumTsL zc3@^flMSZn&@F|0W})%+uXt;_vPc?>Hq=v#mi{bk^rzpLdzwP+@OoR@<<2WHG4|`7 zIhGz&FwEW!Y092(PRd*lr@V?f8T`p0lZrelI|NqK$)>Y;+7i)OA?i(5rKv|gkPAMl zZ#Q&~$|tmyM2+2N#m6bFKx--b;Q$iv%3yCFN$gh4cw|u5UCG>LRnB=ndn=|cvm=$L zLUh1#G7@b@T#tZ&v5GoQMASFKG@kr*r@IH7bo1;e_9Q3QC=ADKRwdb5X&sC+U}D^M zK&uY@u%UKmZrEtw>w-&d{?OEOA7Xc9Rxlxg(h8zhml*Ym^%_FrdC-Dwoj!Cn)W%v+ z`k1Mi&;t8_VTBju>%+ScJ#UQhz6FyOarVbQT?2hqSkJA|czS@DPB8wBL(KivPonFebf=;!FHkj?dz6FWf&OS1!07feifjM%? zWasIpowriMDhM!$7l}Ee_g2k&z}R@I{r=zv>?U=@+TflBb*+Pb5Opsw##=>IlHR+h zU8_{G^lSWb5~1IdX&HTJFuv~QzcNEs-641goag1z&Kw`Qh%P3 zKqOAkx#?pGkCR(v7mrZEXc?ft4n0O!xwVBxGOlV+@;TvA+8Ex#UukuXi}|hd1b6TA zmDib2g%$%Tm)Np#NS1uwuc#k+K~K8=!Duap-YNI~B}UkIqE$dF6_iBOL|}uvX~M{F zca6ShbuIPEP?}m8Mm@n1D~-+xS-ew}%{W&+PvpSAC^qb*qaKOuB-OvRlR3CBeGW};h$ zPu)a&r=8Wv$`E+44r4?`!Tx{MUAb*Vi{KfA8r~-_c!Qce^yy$nu~$NJ?bJO1yZ10_ z%$zE}WYp^gGQ|E*j=L?&^}F;r4yaf4KKoeI{ASDI#z0@)+4mww-+>n$ zGgnA2T?J6*#DF`;Wl#+92ye6NKgtGIG~bp}hA|)C$=I=qo&5-Rl{HpEvwgyIF7-~e z;B}OQ6Y+#~p8V70+!gD0Rkeb^o}}U_m|3hm9$1`%^Yxf4EORu^HPPxlXnAi=l-JZ5 z1J2{D-Qh~BC5&4ZY6`@qmy33=j;{#uW1?%FxPfb-rHJ&PF2PFvP5{L!VsZS$tdu$B z`blplnI0aNA-WmremN(xu2oJG>+sp&k}iI={M2JQO}V^5gEVH=a=M=(5Zw(OP*aCE z8V_bUQx7Vh%=j%jNimcT0va*BGy`=3C{_esHAe%_xXmnj^5A3#7SJXMrIS2)=gsW2CEaPp$Ar+H%psLe+APoQIE^6$UUPROem!tT z?OA!&RO6o49)OZ}Kin_T{>KbT?yQ|T^g5643)rJTASz(X0n~0bQyPy={#nWQWDwZ> ziz1^R_98O(m9SV@Y2uEGp}ix8t%A^jS5(;bBI&w|byy>WFni?}(yRDuft!w?2bMY* zE;u^b@ZbPIx}=_}y9UZZgv+qXyYe;YvT%go2Kn_$dFEsg;|FvVdC)j>niul;KoNUx1u1 zldjx68}O&2JPj%5Gw0evQnFNI$C?(Ve|lJSR-l3@H_3r0%Dp z1#I!#lXxtm7kLNj@I5!rr-8NR1PDJkupxD$b?saLSrJ<`kPk7YLU6FFxhnLng~nXn z*b-;hS)Q~|8nd6~9hqNq1FIxGFx$#d!^rXNM-*#MDdhr#&Tw8NoWngy4_zJJRj#;p ze__W;8KV0la9vE|TW8-aAP4XDP}>qQYC9K{*16J;*`3yijjgv!--7;Q4MuVJYzq58 z{`i$u(Rt6@XQjTm#hY_jf*a_;b2I4Y(0pXJR?X;z2>H3GnUvm?L6bE_HjjHe*$k24 zCT_YKD#R41^2ksk32x|hFS1wbE(o7^z9uVF!n zYxrp7FlOYpi>VXHo3)G6Y1*LTB@WE0T7AGY1%bTd=JN#i2-;Y#-=_|}4W33A_PIlS zf?mnmiPFxLJoi2*Wz`&(LB&Wn-l^wd_75vSiuC1 zD_x{#9~zx(hmR z*mKA7QYp*G;{N~kh{!^S_kR|H{E6Z2+pEbD4jQhWb2frJ-LM=p5MG@LQq`gDDm*Fr zoOn}Y7mmpO24a>M&qUchW=ZaODp1MAgc(sulsTm2P!~c_ssd4N10|L;3rrg-S4F{yKj2EwNw0Rv(~+CN?Gpi9 zd0*>(7_cTa8&>J?fhC|Tt@$9Vo*}c&S)}uSz~9(~vKmjaWts!70*sL_7&bjqsH%9{igHZ3!*M78KM`**$Duinzz&jnHv^COgIYWpGQ4X#p^pu)1s_rIq*x4yK%*_52 zP!H^J3e(E_sn}$L@3?l=UkD~vVMfbEe1B#syEm6Vp^FkC)2`PoxGR@a90YM+dEB=4 zw`kH@9T5MKh{`T7xMR5Z2PR=iY+uafr0snv7$}h;-5cTUJ$bC?4w#Ygnq(0H?r| z<|hfP(YS>?x#JmIED{c*wg!Lw{nsBZT6AqMf4s?pU;su1s!QtPm~PPVEif~O)U6p8 z*59OngaDvF7;88aj&pmt{ z?>0O{g|8;ds={(2CA4e*N}et?dlz1;=?VOJK)7{dD} z|H2$rZGK+3J4Atxyz4kFe(4tu_?ybS@imhIA)m&8gjYQ?`x8Rq98O!O68$scEZ!w4%n54YH>%>wrZ(|@qKC3s!spYOIQ#g zH|<8%YV^bQ402AhkE|_I{9tS3Or-vE$Al0L8%?gDO7XQv&*5pYYG5FJIHYjG?Yx9R z@AkoJh~qG&?D`a)NxmV(oTC!@O!@a41vWt#a$@HYHVOMzj=H2oC_uUT<|UBccl5y% zq~BWK1Unt1+VzD(3JaOh*k4%>GbUe@eqv{&ghiDPwWr3?v7+A~CP*?a0zvQHjG1}S+NyE?Y zpsCwx%z9 zna?mC#qB`7Ds+M(pMOf)i02MQ;5=da@birbkSFJFd%%%Q#y<7R!XKOg#!hTR-bCB@eFp#fLjFrB1XYA8Qe}s8ZQcAfU3b(;>Q|aj(Qi1Ds{n1)Yg`G@=MU>y zPLkPF{BR_b%}))SZ$u4hTtZ)|F>_ zyu^-oJ222)i)t~{Pe5OTq#gf2)hS(_10g1_eE8D&kishVh@Qw*%*rd5u>YY+MSH-N zK4llQPy7UNeWUBXXmnvN2+KOPoCZk1>1rT<7JwR0$MXaPWHB_pS9M(>twyPC32Z$_ zz7T&5lRZeX;cYIUgu%i=$H?ZHP<=k>zNO^-x!T48ne!FBofrxBB%HX6qcgw#O|P$Y za2l)n_v%3y9qXdpa}i3~h%IS2r|K3s+YwjZx^A47z-|dMA39Qbs`M~O089-4;0)pR zS-Yp$-Yh>}!C~ReVu2s&;N#z5kw+9u4)1Clg_V^n3+cR4cE5DotL(}N@)S71q+atf zm?PN)JFDU)k7W*C={Qca5P}H}nG*~0fY(c?|9k8k8#xt2zXS0r@yBNeVtaktjP=ad zbpgB7pdgcrDb%tqd;(od{{4$S*p3LfdH=F9sLt!NDk7-=yyo3o3q$0B2`$!xOp;HV zouxQJR%;DAdrS6SiLOVXKUe8q@j-A{fAB_dZG3P*^S3%vNk>++G|2{O z%K#IpfFcq#3qz46N4t9a>=FQ{H)kdP_q_u9FJ%)wAUGf;8c3K;djNc9#^nA0`&#cBTYEeZ!S1{ zT+e--Qm7gN58TO~90g**>kvd@dv9GQI~I6sE^(HbyxLrs26rl~HqaD7V?b+0+`otZf~&a_ zGs}X^>bo_u>>CL%H`-s=?Fvf;sl_U)IlW}ryaw_aJm%`skH9gG8CrfMob|aFeq$4* z7aJ>W+=QLvsFOREhuWtoHn6bHIHWtZN_*e{9|YnAF^stW(UJ)rlvHwZfXh;up5fdir26Sn-mElrI<`WznbYfL}|h@kJ-rm(t@~NX#Uc}!vUa?)`j zi5sWsWfQy3#^6WA-R4beIeg1+*ZtGaf73MCPz+?EubO)6CaT&O8ME=Of~UxrF^*&Ks4wU}r# zK|H>yg~v@Hs+f&MbS(7LY0!>ex-)pc!5OP z_ifNm_Dj8acV{++_IKJW#;&4L>w)GdUeQNuki>~N-O;(y_ZCPd?B!2v-A2{ zWf2<+9z>JCI2kv-_29(5?AEq*WXEyroOMzfuM?g9eXF8LT~u257eX>j$~bfr0_{A$UPB+ykI;?40XW;dko}Cv;mCv} zfy$%vqpOY`iUEc2h+$DOW*5=7yr#fv=pz*Eti{G4aE!K#I0&kfjTO4|CTY?NZ_w|~ zM4%R8$nr^J1FeqBnC8lvg1_VBEdPF99J?=Q)IJ%LIJe1H_)j8g@J^Qkj?BG!ov-6- z`=Tt&`v+rBbML1gK?Z_^KIc#B-7X(l5JWcP(^kEHFgf~hDyBU;Ai(w`x7C32+Z4N2 zI$^(YHRNj6-XyNzWhK!mqT|;M4`eS=`sRvhA1;1v9(*j8;@RrBd6HK;nC+x@# z)HUf+NHXBOrE{CNU12ce?1H0Otqoh_phcfU;9Xj3##;{r-UqZiN3J=S!Fe@>D^oF1 zbpC=M1ih|VQ?sBiTwPBA4#K>e^Zl943ZP=12h`DAxRz|r@@$>TdhVJn?&QS4*I2oB zIz&!2VIr)I%E{GWqCt907_QlB&Qtw<_T=)z?pWesnCiLry5qc--ME`_;;4>$D4h+i z_Ew3vv&o(NTU_hQJU-9Fl0dXwx?a!@o#P963A5AIzNjopv5KrNnfFI}nx`>j9$gP8 z7?9*8=UwWzXWWPgOQVwgEg@(^4g}rokv&_tYPaT>yUPlw{$4d0mi(4 z+lsb?y8tZJQNzzee7G5PYW?nd?wvC-OpAfoj$;rF)WWML!kS$(ZQ-TAE$_=J8ef|Tw-V?hYHA6saBJ^ zuy05Le!Yhu9$i*2Z<=hmyGj3+^W)sj+&vT4>0njkt$c#2UMTZwCT0ACR%v?ZG%pIP zzECJ} zb@o?|9om$dSE@6GK=ZRESdQ(94+m;zom`IwzHt9G{VOPBFsgSxhxN6=@25u-KT&NBI zOPM`b6%=)J_p`s~)g?*S^g)+H2CmW& z1-i;F_^Pn%AK;Jh68gsbNST`rrTl1PyEMQMmwUGJ<(t}|2)lf1Ej-_#q7!5}Yg)2x zeHGUur4`OZlu&Aq_Xoslcb|e_17gAs#Jgdv2^caygiHbp)sNPFVe_5h-~Y37#c=WuJ*0(1>gwGwxwr~rL=EhBgDaFhcZA{&Fj1g3_bx8pLB$W+5L6_j}Pu(R-0NTw^ z31WX;PAzXIt#efTmS(wd_o-et8{2$6g>LXUw8S^$=0(e81P|5X)l!LOBKU#d>l6-w z*sMB^sz>nh>s)S?qK3NaharT(+(>X-8m2jNQ<2rz zo_{X%IxZ$URcfsCY6}Ax6CeMtKSkdC&L20f8zMd3ZPII6{WJg!FVMu=(%4TV_G`l8KPwwNv~|b%BAtu_Ehjf~8}#xU2?nMpo%uNDGZZin}&emh&yQ ztg(K<_YU$e&0w6$&WVib?=yj_ztDj+K}44`wp~}^8dNej z!}PwKI_bqWq3m6nA0)f@GdLu*0&11%@G~PH*K(Dm*40k>B}3K7uQSYLa|pGCXY0;! zc50SGA?J+`p315p$@x$z3l9o`PpQ(e{z`K^jUb-Jn!mxT@l?;QSS6^rp$i|?xQ1JU z1-Ap=?+7#{kh0m(?Ynl8*a)X!e$=#HDZxlNoT@{Z7dZ6a3M?7SQ!>79Q6mp?8em%gjdQq)Z(< zrRa`w&SP=XtF0cDs*=QhhlYK(E0Q%sRL^F^#r8&&h(T=xWK9%3f{ou?dks3}3I0ED zr6tk={EBN6yE8VyI@G$TrF?o$N*|+kI{RlKXDs%#yGpNP#MRN)9v51?FpH?l8nl{G zRbsu<2$gbQg{$$yjwTeKA`Kw3nbY_ur~f)=%?3%FnDZGiB#2W&2+i)5BFoCV(_Y5| z$*4W9%)>_b{2Tt%J(#r9)ERM|oS{XY%)xFcpId4lTk?lW-wUkl&9U7OL!iU?HZt+RcdU33za`lZdGu-BWkPlND=;QPVCrY zm>9jjH1sk{C3-AX+3}GC`j~H{nz%*>RiFwQ)u5rWj%Y}UosFabf(!Fle=$qg(hqrT z5_OdQG*w}%<-JiGwT?i#pR6nO@Bas=D-yE}V)v=r`Px*jWW01I3birrt9bT@)nmL% zV2n@>6G#Ct56Ttp1G|Ey1FpmbpW)qP#i6(w@=+CHy8nTJ4=JnBRAQM0j&QF?mT=6N zN3ab|9v;rpL0aR^7sAc#I06F0fX;<@DbBkJ8ZpyM-WeaO!XoU{ICV-GOVFC+dRbOg z(xEpY9SBv|Z4k7AV=o*~?aR`Jm{D4EcouCpKN3%6{RTQC5;YpLB9z zH#{|6l-_&let0Av`;)$XIq#_BoVQ0M)l}Pp;Eo1f}5IS?@pK5oFD`%D(GHbBX%4@M& z4A1Hy?)$XlffRt+5yZklpL59D4oDL_z+sP5(&-+8f@V^alz@Vg$Yb4a8}Lca;NA&z zIXDu|$Iqx{e6m5#K7%|TT=aj2^-RsO$w+%+-g>3REiYzAUH~s_I7tP4wScU=b{rOa zK=_9%eY^1Jg^=dyv7?uV4Oe6K$r$>r5%=&L(GyPtaxw?sPYJ0RNv7O@$6U4v;HUsP zy;fsUvA2AcF3Mmui%{j2f@#0Z8Nb%WG%dP%7%&H0ul;$hLAjyRCaAu6tX>z-wb|>)&u6iQ%|o^F|ELnrFwJ4q0WD5 zu`pk%Qw$6;r2|G6-q&NIhSF{eqrn+OE}}!&yvg&Llcy5TPA3pi7)MJ+67b{maiUcw zg>o;Y&&~ct=h*>qu^E%4-UvYE(PgFVojSfq`TP&LZe(6G{_M)yONugQ7KbTUmQRcT zr3$V!Vj-O6(MM){goq)KvTggqM0llbPJTrp45-aa+3*b%nY(n-$+l)@ZGvJy!30NQms1*LB!r!kwdPWrGtG1ZBhI-ZTfNP zRx(ZSj5sYDRqn(QHjSC_0}wzm9fpT>AJuT&g25k^ycW(dk2)kuCAny*bud)?#kE+j z|Ig4{TSSods3l=m&Djn}Blqf9r7TG-sS{+e`Y(gW8NeM{xS$9n16RPe`1@`1&*SDI zxJf_CIM}jWWTGDcwI^HKn?C-`7&FiVl%4^Ipcy2~cG;n}H~&tToMy&>Q3!MB+(&ZI z7v`&C5gD33`B-QtGQdW_!}3uINXP4IaTxHs=OA8RB>K2L@A)Avwr*%T#nJ*L^`YbP z*DnHDll`828bSv&KclR1nO-GiAHvHT)sWB#cQR+gLL5~E+NeJnp_0K<`rYItYnqQ^ zkljQ@Q;#f2r#Xg(S^oCCd6cJ@V zr%bNXg2NKEn6;N(S*6*p{a=j9z4s2=-18Odv$Q^*k3WriAxNow`{w{hXc@Z47XKR4LGx-h2s#5e2@Kl?5ZwBo@g&%eIz zbk0U4Fr1o)rlWfzNNE$kL=*-=-MZFW$7h!Z<4+Y1)Mwi@hFDKQQc4OxWU$|l(Oj0M zEj3-a3g7U+qFp669Yhr;Q=H!vuR@BjQ@D?XN`>6ngGHBAF9|W*WZv9&ge_wG4O$jb z^`HS;$I&~alq3*3A4z?8#qlp3P<|gIn=+9P;|}~Y5Y=5FyLt@`hW|LgT+}!np?Rm# zTp%C08sX^Le;%L!eVv5*^wH*Rbx~Pp<7@f0i6w$qB6Vw+M5teipvwT~GU`fowpygi zie!G-8~7`0K1`3u+oL}3g+@G1@PxY)%cTsL5w-u7jPXt7=`t3yt~jxlu}SwaiXk*ZB@KV`&ADw2{=%f7b4 zGY@SfNLk=Te}(5Bt9Osl;(+5CDR;k!d5Y~8Ej=G75xXeq-ppjLW=*Zkss4KSTCDw_1gBl=FbSy{``=+5DagV9k zDGdmuxDBh0vp_mDKDg5e2C3ASd4uDpzp_^NBjt*OFs^x3foWERF*Z(8tL_T>mCP{| zi^@#5-Fyx`+xvX}@mW7>o@M#j3GClK-YSpr=C`BESI9=|d~Cv1O;(KQ6F`L(LO?p< z0s`Tij|-@4$pD0N+VggFesNF2rHP|-#B-Ii&o?A$aO1Wx$k71RDinSyLHJ6LpGq+_ z+J+yM2z>v(h8C-#jIOti%YKVnm?eS=p^5e6Ae$2CFM!Wc1p})$`2R`XFZ!ie@Egy5 z$!0{`2z?wZ{<23?5x6`3>6w`qQP?z3km09pk4)-~+EFUJe?@9gbKzTV`Q2AM7$o;( zgOZu@(=fP8FaPC-(o3bKUj zCLy5rp=|s=)BI{i(>bt;v*bN&uD5)qVYbLw%4q>2j{QQRH#d-$g~p??N432Tq#&!S z!p3Ri;xV|Ww3Qg5IZ)JoH;G~uU6yWS=_^`3%v<&-kAV;9-{$LD_T6SZLv8ha#4t$rK?*fkV2i3XWJHSbSqf+) zbMTu$jmr(MO~u%<>aRTK zuSw}NN%Wfta*yDye#uxS7Tc5)Zi(lX1PUA}qInu_W{Kg!xRpP?5fZk{OD}vpdkZCv zdw-bna7}m;hXN%w90MZDuktE8=y!- znNJNvA$@Pg!oS?k){1V5v&ZW0>@wF)i#V>za^i*Xk`@@qa|&>7j^zibNV1>7ch{nt zKl(2EmJHy7TK|3(jYj(Ge2P!w6Oj=Aiv@7zl6kF6#(2FMr8?*yQ?vOso0uD8`_SI+ zU|9ZX3wH(?jQyDE-X>xd-0z)I2Rb#C>?Lh}3CXq9MP*BNO_Nj`Hp1=~ST~QO`Ss*F z-2|}_rz&zVyZ5Z;VJl{{#64x&#_|!4_0KpS&W1dfz=)=Ke&&+3G0*%v%B$+RF^ijX zd73!2$Ca-(=%ZF8*kyP058SmJfs+|yU((QI$p&!nz{GHHnJ5L{!2w|8`A6ijGci{o zPh0bq9-^J(*IM@HXH*7;)e;nk1GO@nAI*~u0G~oVakrf<9yq=Zse)V)q)ZYZ%auKS z_esmx{>Der2qqinw9n+hq@53Y7E;uz_@$Tq2Q#Hj zth#49Lc_&24?RA(at}&a&^cn~3IX2z9&MdtzrFAV46rYwFHAF9HUleX<3eop2&rZb z*BE_C^{EtS6^7ja;?324%*?K7j=~qp)?{yv_NNi;Re+)FMnZcx8vk^tQtyX$(~Ef& zcK_!C`$Yn9!lzgb{^;+1^2O@qg+@H1i6iubUqgG~&W!P|YHwG{vfCnf#anG&h`Y4< zu&?&bqWg)COr6gx5;tvAwG%TuqCgsEr}SF@AaofcO=?DoS97#=CfPVgpj2u;Tbc)T zeq^+RTj&SZF7g;{Wet|b9AoSz5u<=330-fvbL6I%Bn($Tf*Gyv*j6RTyCHP{r8YhY zNxHn^`JAke54p!e)tjvfR*vu>9h_hyENn|A?@5O=KY4zfq9`_NQzewOQdz~*lc~nk z4LgK(A(jBL>=uN$i+{KzFwlaObi@DT%a-ac4e^X?Zc}OQOsy`==O`a}IZ_-PX{I81 znH0|SX^#`j)_CsNyWA(ABJr_RV~cCfEWx1ZCWiifnkT!jj$~|E)!swt5L^!bKw1o> zK#|iDQx>+F*?sWq;WcjGB@&uEI#KB~J;BhZzU7aHwyA{@Ntp9J?Sa?}W!$JP6U{4D z*5BPfv5%^aKqpd5j)4T6{kKv2|FmZnN@Vm`R3JE+cZ2z#zLruTZr47>PDx3*=A4k% zJ$*m%MhO)gR>qx9&~+UD@N4p?G+OYsmPC^DBZF$%wOXkY4_iYd^lvV4nSkbmvGD`> zM%p+MnRNJ@uiq0U7sl6!=)#sF#}4^Oj|z3A*CY& zCsNZsa7F#Q5Z;N3VpCbHv|682QV5j6Y0pblU_FRuXsfo3}SZ$4H|6k-d~^bH|z5QULkcx`9i9Vn3TMPXE~F z{e#P=LO%ETei7J#$c>w|*e7sGtR?+#BA8?SVLNh7jj%|qt$F{&eSq1o<6?C?W^w(; zl|bUA#~2OvM@sz3<)aNbrnnc-?Lk@HPCCRdFr-v;N1EFXDW+!#7|&mtQ34?5@7qE; zvY(494_K2IA%oS1fEf`Pe>#=sCK`rZI-TNIqRa!kSqImcs?HSNwwi#Wz5FPH*9O4R zLHqXIZvbSD5O9XwTV_i0Rb;Vt*8Gmg*fZv%AET}}b)bAowmPI!6uv6Jm_q1=>P?Gr zhOXJL3{tMR8MA(`S(U(}{giKZV4i*#nS6@X=NglhURu}9f%Z8=BDr-Dg}rJ?e>Adq z&5}dh6&;>(F7{{7bhkXoC&2aY(RFw+7aHxR=ZLQ%?AAY%8;)*rdii+>ab9zIQNUXf398Z=sQ9LUs4 zsNZ-J+IA}S^ksvhYqq^T%^Wb8!#%ceTEo_OSBLyHg;8~qwfX#t>>~y%5(uwtDewJi z)6_oTFepOAA*xDL&}*PbDe$0ydMlgohouKV+aK%63FGTw-a&2;$uE3EF3l8U z3y6ixWnx7fPrhi@thou-=g50d>EuT0#KoW(uTJcMkh>@48AH7Eav%B3kqI!jSx?b1CL{i$3dx zw^u6VE0BtlI&?h8J^)}rQKhqB8M*L2D|B5WDi9^V$%-#X&x<5=%47SnzZ0koDP-LX zVh2=$&KFatphp6r8v(GHK;cU!rg2;IIr7FR{`XUcG+BMzzHwavcBIBb0*8|ah3~&( zl*X5vk#=g$WY z6Hre{)@%UE(}74Bo6Oe4!fk_g`(Sb>zn3Ck&ehYoghmvKl^!fPNd_>))oTJTNgm)^3$QNUybUy6lzR_rR7nkK${ zqW)Crqquknr6kj7T=*#+^!jP!GgxF!pJ03lZy+kSuRXc)wcV;ED&DT*h4h@XyD8#t zckB9H=DRDIA}Xqa2=(o56Q{6@lzSbD5A3HFlCic7MLz$YQ27s-r{rARoO>riBNLIA zD(G_)Ump2i%+}>%r(sTE@)#oWxIfF{;K$O>2g98#2Bw9>c;o8M2m+wDa_|VNZ8BzZ zo*|(&z$^}9l-y)%pF9bgORjMuz%>(%Mj29OH~9RfG5l2>-@lN{E{>eLHe`j46_^ym&I9tb>IKH|bH5OE3($^h zH>z960x!bF>LeFGxXxIl{uB((!IvcmGi!d3)lzD0qKxJu=5TLMNZsRA?Hp>jniFoK zC7Of=`bp^&9=#M?^8>>wUPkF$kMz&DZ6a;J*z1IZ+7hFKc~d^+XL(xY3P_^riP#Q( zCqH@01g!9<%@omEc%NQ+&KWxyo0&bZp8Y6A_bzgKfZtnc45@b%bzL);i_kD0IZuSf zo@c!$*|x|4ffHD3w+7fR;OhxQkjP6Ho=SJjHH2+t%wq|Z&Vv<=Z#VJiCbE0TMEu?r zRg}g+t3lHgDF9bQtZ2diIbr2B+7nz*dHdigE1a1fM?{S*`o^gn#yGOtag^dgoN=hb z<@4-uN;A)r_K%W+-QJi*kj)l}lo@W&9&e}Ce9f8ydLYR*0Xhr)CEyqLx(<{&pPen+ z{!VLeqCjb2Yr+ZtA_qakp#Rf%DsG=i6)i< zwZg$H_MXD1ow&UP6M6l8!B>$j2jr=dEo=)HYNKQyK6!lp@t9*(a~n8womC$x?Qo}? z|4X4s2>ypCJQ&B5%O$SC5+InnH>|^vif5^3S*z0|1TT7A+q5}?eFltVAX!Gp#mSel z2$!Lz4Zq%9;Dld8MJDZ)lNkk1dyvn;~l2tnRt00!PM#T8p-07D5U>?0s``o3^PdCNO%ITeCQa_0cOU#C4j74UUuTPlVKg&YG5}; zo?es57Ft%@b`QkdPH7_?28vIf@4F`A-bh<_-^zjD@~q|s-WUG$eX2HlksmDrTBum#d%gKQ^%Qa3vkB+gF)ZCP@XyrXwYcD4pwGn~;Q|B<&>cj3^d!Z-2l?7$HpnHz0?A;w*IgUsS`T!e}cT9Jr**Qd7D?R{Mn6Gp9 zkUw)@`7ei{+N5+M;Dy2VpfkvED}xE~_!(c5DFFwK-ke>9ky~7uP{KZXo0FI0EMmFo z`A(sGs+w>CZRz?efRK6pL{@aUBMdjwr(GIgbPL?7q>D_(Qs8A6-6T6^{`#?Hy@K5N zNZRV-{$}u%99shQ5KvPIFG@}lbq;aqou5$^c6B&nkHP)H0fUqTFSp=4z|U$xCul5} zO-AM4-}DRi(+9H{V;CCoNeuC&+aD(jL4-fkGrcCBChcjP&*dE>HV$_KGO{XYz3O`R zQY(e33h?326;E{5WsnmT=Jd)qq+3Y8S=~PnXcG&Ese~ARBmJ9PS%}Z#3(=C`_sh;~ z>KZSGvbhe1z<74l55B?BrQqCIdYY(P@Cq^7d1D5IE1Fk?c_6L6mEJvaI5jkwiThdV z&r+xyb%>N4jTQ#hm|zP;ciNrHk#Quom)fz)PXlzGxUn0F!bs3NX1MIW>)q3^0rNv- zU?BV=Q*l4s+5OoOr#8nxG+Utb;ae5(vvmzQ{zq-nZgEA@Ky|hyA!fZQdhs$g=L`OI z(ZyGC4fiUfd0*1ym?>@!`0C%tsz6$UD7YaQvSCh6-Lk?}K(^Hq09QNqrxNQLrc?Q- z+rI5h;gF1!P?WI@nF#@aRa*6OJD{uK5%fL)1=X*8lqYmYaHkL#^rl~6Bttv(y=Z|t zNBB)Xp@qd~Y|9m^sTbmEc& z)W6cvXffGjC;XQSTD0`U8$j(#I0W>s;1^7A1CJF6oi~W6nLiIe724eRqn|-m(B}1j zk1qi4-|(VoKYS8dwemyLIOpG^A>P_gCEO3`S18LcUcM*jbROm0R{XMMlbeCyA|KZv z)ciCXUR?N>b!@4CJzWnl{#z1p{V)KMc{34_LSu)g>8;{LCPCYXhvANF5g@99zy(;! zHhj^O!`JEm3xdJesWy4(6wsPdtGI|N00mm)yrX?b108%?+@cyun}tV+0LW9 zD7%9FPWCPg`!IPX81RiZV)a0>J7Q0dOHJ~i8qAFKb&!bnw&Z|j64R%H2V!(UpmyH| zaf;kLh9L-U@i}OXoWB)%-HdOUcQNaHiKwRKOLPofItSRkws1NxfZeNVw~NAX{Thf zxWm0eFUVVMf*r>}2A<_|L9f}(*vF&T2BY@*+v5*6jY+P(BQTT3HZ5|O1R?%<0F?|T z8&ORM3cFQStd~-nNCPtDjIS-0K+fG>&!+CKflvnqwn7@W$}6Xr0A5J`yZHrL z8x7R@qjj{6IUJ=~Rs7YI{jNGoAJNJzk{H1VRP+yD+;kq+giPckcwL?02T-DGcoEq~ zaFhf!W!Bsvnq`p_zoj0fBP~UxA4;J3PQbqcuDV`2$gUyz-fI?DL_Vdws*ejtKsiD? zfuHmKr6Zc-842nNbG$K@Po=j1Nu+&2PbH@=o}7taKrgSB?botfU+^L9x88;V9)sur zw}p6Z5g{P~Lp*3!@J-mp@pM<(!)y1(gs2*G4Eh0Wz%&r+Y^V@bjK{ZmZvwQ7H#S7O2Zg`s~3BSJss8}+B1FZi(g>i_>n(JQp|3oW+^^=i68 zee*H2eV>QgrxA?|ac{>* zbvUkWqWdusHV{CHa3Eoi310wh+f!d1uAL=s%ubj_=fnA;Q@TbIj{D(lM1qmGZA#bw z0fDCZ^Ne`R1mC5M0il5(0K3o}q+PKAjZHiD@s8CKxx{M6mA48(ur>1Cdzg9Im8d5K z<5BOmXe#w%RxZb+>KV8bLFzEJkGTHoLS)cYl!c7A@@7R#11+*#ySDF;rFI9F=X`>} zh`Vt@aeL+UkRAU?LL9%Mt3O_VR*u&j%J*lKVW(7UAo>NG_eF^qtc8My-snURZDM#m z#(-q1B9k~%wsR{cf&CaCS8>ZWU^6F8C~@2K_gM-61Q3EYYIa4~s+LWJXPMxSfKTJu zbd0>>U~deHnxD(k9RS>T@d~HkW$Tdkx}_2!y~!oAvXaUBYYVfragtS@Zrxb;as^9q zoLeDs&7`GLxhr{P)D|i9O12d&Qg8h!Wk`UMm^t^foulF!R^VU*o@J9`u(X(&00F>y zNZ$>#c4{y%C1Xkq0+aPxm!ZnkU(J;OUltmPTvEXugJl`wI5%J9-wFqRU(uB!^zdeI zT57P%v}tO`O9Fw1PDwBLA`>qva5ucV2->c1zy3Ic;1m&s+kKn3&;O;x5}hy|I{Gqg0E3G2daNd0ZONzhIzg4 zG8s*BD{Bk^tw06N>qXC~Q629Ft2$O3!qS8B=YywXpRND_Q|uE5mCYto@7J;xTn%cC zCpP1lAxYIpFToM*w^^@KiFS)fUpAzQFmoYoWt^1A2LX(8h+vWb>V9I4r0HW_# zjcvUY)}D0=RH)BN04kRC$f&zCm4KmOZ(cpVg|Oh-BZLA@V^Pn~lZ5 zZDEj&Kh=CUN~AP7{Cea9O{|_TLz)^GY`MH(wJ)p%(XXex#vjKfupPQ)$#_ib_qje=uBqPV#a-ymy|K(Z@EJ#n@j#?x9XO)lQwK z7Uv0H?gSuR+50$+b`PVQ{t8;Xb|Q{QNLY&~OFV>IsZPMz)+bFnGl#Ou)Alak#9+)lqgP{TTJmCiP%OTznpF z;MVLJ?fXXcQrdTLjGAM>>_%;?!ZbVnRD?lmtT_PhSPsQ}P{&~$@uR+K6%d$04VtA;c@a%OK9Hd;zis(2W9b{IjlEjCv9K0wHPyV z>D5!re2z~^lOT2F7I^O>14ci19iYP^*oI#`p*5y>nga{u|EEm(D26q%nJ8*V*yil* zKrkd@wZ|}-IHb_IwJz7eY%SN9zb~t{{^zr&^57NVw`fnW1jqQiFkf4=Q8tw_B-G5t zbElr^4_@Hao!#tr?#>x`K9WAO4+C_|3$s#bvGrOQgw4>ye$}IPXHrZDUrTxtPR{rm z@7X4p#@|1-{w5*3 z+DwLwf{V~A3Xx0C%q1HO?)M#FF6=X@CM{KlxY&Yx4sIbj6;q&( z-**MwNnIpe6)r&TIF-YM03~%WxGn7gUSBVeaD* z=k2%Ci{5Otz`UeHxm4-4o5EZak{R=V-?Nz!{XY$R6V{Qv3+7+TI%Vb=)8L%V zZJ(J-4hlO9BAXKmK@49>L{gz{%(N$=+dZT!(SD;smfSU%89l>8rI^ZDxh&#tJY=@Z zPB=$ni$c&g6C9@Z7w!xBSw4h$aoG+bbioSIYu}$EI11U2(4_ zU>WT9lBBHfBglRdcYyVC=`YswpiW2f72R{>Z%{n&4{G%dUyaht9b0@logyk%31`^C z(EQA5sJjO7H{OQ+`4kT&L?ka#b9whqgVJcN-`i2gB`c4N72VGInbgRriW0)f*u`=x z%nPF|0pU=ryQrY7%rjQ4H>j#yck?~o(3dyKg<*v1l=%kiY8vn8bpW zV85rmEKAtJMf&NbTJ{ZjW~sHdKX}b4(zD?`G~M5UyS4Xalg1HDh}fw%E$a#NvkF$^ zoiW;9!<*^&3l=#ny^*s`xVUNOjksG6KdqqkVXC4mwk6d%IFvtqwa$Y~=1|^_L&MWW zv3jo`$UY;Y_S!iq1Uc=jbjEt6b)V=2mS&U#GM?9mhJBjmF{BkGnrr{UwHiq*W!WT# zr2p3bJ%yrInVRnir0&&n6+c#&WIYZZ`DZf4%2u*6DflU{EYi{j1=I3#8_T z#Y4R$WzPlf0R@u33bM^taXRwAy?ux|er5BRdpFU{l`%m$!qbAgb(vHHzP-rHBx>X~ zPbeeASM?c-Fz7F-;88=e37(}HVbgez*lnB$y{o)j1f|yi3a8T=nDI|{Y6h@c@UXv< zBnuhZZJ4Y4QvrO*NaMYuuV@JC`p9o!Y#oejUO^g`$o+?#Nlk2Gz*5KB5H=2~il@Ky zLe^n=kWgyc60y>bpHbcQcf|5CTCc5?9kTaL5|F+ag5s?mxe6u5Hy!v;csS|37+g8O z8Jl?*FD9RjG$?&4auGb54x)B%x!W4x9!}7FJgBQxU0WX}5@|g8wV$N4u*WU^YLy#* zj;?1h1^j7--!75)feUC@@BZz#bw_p7D^1CCFdX}c+x1nt`G~S_<94y=D><9aj|Sd| zXAsV(1*cNsEriIkgud$)+Lre)?Q(gHPIm%nGQfAC&En~|Db!#tsNFR;adOkb zA=ovujrs?xwif20{8m-<&P?X}cgMSIfUeW5zT7_$fUq&KwP3B!6WbY$KFTgS8H;@A zV+Y2*9LE{L5Z-T|=SyO#KP*fC*>;--_-kFR7kMMDOd&&CqNqHAUm55R7~OuIbbb9$ zO=}y&`zY{iU17C?Do05rYCPvT(c-77!*ZX~v$$2sfS)_CGC!@!YNSTT;m#7*Wn?m+ z;#mM+GG>v7rD9ou_~cwPKUXj&FZt)G?nh8h>5m&bH{H(K>ur=V8Mj0~SNZNA9kMKt zpa#0ID6gkoSuqJIeTazJ>TJMnjJQ5B!ZI_wY)3?p;~z&306J=^nz=6UE1>OB#$X(e z19NNkg73SY)Z@Ow9g4T`TFu=kgth|RbMTduYTZaYY|RDOeTx7 zvf{>$ZWzg=*Pu*CXd6_H`%ij9F?845@u0W1mO#<%35p3#3 zFg7M1hR$w0L#T;9jT>B8Q>U$tQig2%KZS1eyp&fAB$`2X$WRT*gzmu=?Psc8D&g@t zo>rv7eRB!zZP0;q7!+$iQ{+CN>Zu(1D@@Qi5uH*Tp@Wib%)`#EVVxc=J^syOr9G@< zgK;(tKzND88!vWklfe&uF-1}RdUKeowc4&G$b~OUbLZJ6`pALz!bs%)KG?gVB>vAk zT5Fhw|AVtZ11k%MtsZQ{O{Kbfm?5^N8X;)S>rS)|%87fd>aibVmlKTV#S9wAU%u}LY@WKLyO_QGm3GJ#FfuBnY{j5JhuNzhx+O{r)LzC z%#OZ|f+?>Z9Pt{h_JeWq)gj$j%ZJDd&{wjj>Fj}ZDsrpxmG*dONkXA&&8t%F6C#dN zxUp|F&0L!JlJy8ZT!|-R>bZSh7LJrn58QDNrG zk(sa*y782Tl}H?To6e2Wwa^l36d{Qwc^}8*c~B%#Wt=$v1u@l4NJ}sR{bg0j+GbL1 zO_GC)k(Y5W!VS)eqD^M@dH@X{yZqw(Z}0rdfBV%S!VZ|F(2v|H^q&vr>2I_!5gYh*R zuG!W_ql*)1Z2^ksghyMNm{Y-{csyYTs=HGAz^acA=U%?16|fu8`*@LNpHUu9Bhr+V zGw+#Kl@Vdb`;f^mG@_?%PB0)^TAk6u5ppM@Msa)~ko*csCB+{6IP7__sAYU5&C-{d z_CAzl&2xbtcZNgL9VHx36(J_~mA|1O4x)3b@Dq&k)Q$) z79xhu3+Mv>Szw8JtiO~|UYUgbl#T8J zC=4&jU*$jdtE_On@dm0!V73f9kJBxL7pFkU!g>UpK&o?mwSD46p zH01CDe^E(#-jZKYU8F-uxhx;pZVkJztFyrsJGM8&!o$=ZIsOfuoWlf#*}&&T>d7;V z@jX4={lQ&ZL}z#-PG{?(0)Gh=HxY2(Vx+pv%43DLV?-amVWS%s0G(N45NEu+KNnnM zkR4gwino&Wjxj<%ko4xsaGX%Z7MuBY*!DRB%?aTVy3PD&<*rB-*+gzX)x?33r*UO0 z(Ub%Na|nVC_dX)bNRSoJ7^~sn=PY|WAAst!efpOh^VmCHi(J0Mkl7mnP#PUWPv^d|7d1?fZ51J-d6t+wn_f8fEa=I06VQVe?(!yrv|xWyr0m`|%C{50 zl>@Ka{H_dYVy212ZMMg|HcF?AF@=u);CucnK{No!!d$wgKh%`>6N^0;*L#uApaZSJ zGxNW6+uw6yA~_NEp71^;E`f;Zo2@P>XX+AmHLh>%Ab#}#;wIF2nFo!`%^B>#YyT;1 zF+8GX2>|jm3m<@!Ez@_m`@zl!Tg;;b(M=uG=^y4JBwLb+#wUBy0x!LpD=diJD%lpO zy@CQ|!sV5SLab30;&qo=Sz5;p!eo>@Xds`&98(|GV;SQir%LFY|6?<8Jx-IFO%Ym` zY=@BnJWTY*KJ|V7{t#WB`QtrqxIKYX{30;?QCbdh1Er>_VSUZ865k{Y`P@v6h+1i6x9|_udRIEmwxHCwJ_=YAj>HRZj5tw;VUFbZ4 zqQNvoc~0QwXqwo8SWb6_5Li}+6P|>=oDO*p6NC#(;UZLhL|xxaA)Rv>?;<@`N=m@5 zT36K60PJY8cMg=9*YJWKh^3(1Szn50p`y1u2rQGu5GH5B0P2n6eS-l1KLEf41-K6A zBp7PiL!{|lv0x@}6}LV@Dljzp7>X99*=4VU^CB%s`k)G~*6jfd2tcaB%c1EO2xdBr z8vZ2f+RXf&P8_M;$5fa95n(K%V8P{B-yZ}cIayec=ILqdH0t`Q!@_ii838KqR977P z)QdLX^ul|_=<3E{qTx>@ixe8cPr{?>(V7I7J3G988mx2Poh0e2**;8wSYaw79IqE7 zjbsCC3Y4kNGU@7_;xm}gq|4#ewY2tYN@0~oc;Zo0Kmnk`3oG#bk`z*Dr?D=*xa>z9?f<7lU=L z3srK-;3y@v{Jyr7w@q<)^dRv(>RKYPqDyhI*03t!J0tN~OVp!gOv0S(MPG@;3zXxy zS`bv>27s*M$FAl}vbC6;MA7~9R#6-?T0eg0v@G%38OcaPuy2~$gy(tYkjL?jt21It8vI@)S}+!vVfk1 zC@i6`b+ldJk6)6u=C6M8uL0F&KeC*(EkHqSjy~A2=iqEQp}VgH-!WRm6|HTa+Yd5R z-q_W6jYIi_ng*MqW-5gi!g(7zy}t+!80K@`ye-Cs=cbvyDhdrXb`_xUQLNMG3I*um z8wWZXatGXRt9c%sW0tgKzXS1v$?B@GP-Y7%1Sx8D^_e+s zYBkS9jkd;9hE%JlKJnu>^&Zn-1 z9UEQjeFhB@fz!)GiYJ|wJp5tMYFdTX9wNT5S91_30^ogl?Eb?5#93a+GyPNau;)>x66;)@wt(noa%9-gNYU;i167X zTsCaKfCOC)Q(2`fuSNIvHxU}l6G_7baZnMIiGNBWl+&2W;B9qpTUQN<_3;e(5{Cj3 zlD08xNG^qhsI<)qfo0IHEM2%!5TfOH8+OGzDa(nnC2w?V z28WJGb-U}K8E<(((EV)x0k!^iJLe^o(-0B7&kBs2C2UIk+sSKbaTkprLbLT))5*)EiugIvYmM)<51P%(*pB*oDMFT3}J1f(sL_vKI z(Qzmy14e7{@Q2dj->)~(_aEBTm{KAG@kBfTeD8jm9m1#ob8Ev-{1fq(p!cyZq0QV| zm~@_Q3Ph$h?vzEoP_Y-yk1!c1`uWS5O%6*L0mv21;k5L>atTV|yS2p1P$Gk-;ACeALe5D!yi?#ZijA57(AoVQT77ao z3eY&iM)NoTJ0B$G+)h8@h-37-1#4)|%|rumv#2{vfN)`54nITp9~3V7r84M3Wai0AIiR)3xtR>n!4%O%Wo0p z_4ujrOd$obJ#Ha!+>my!0YX@sm%fgkr6<4w4kn9liauQp9>3vs^lcrgEG%L3cUG0^T{Eos`CcCx!Oq(PLdR3s#_s(2GB=fC%2F{l&Ubp|BFOSs3h9gpOUs~4d z-%18uht$>|-51OZ8{aBK>Uk{%1iB~K$_{;LsYT^_qTr#uopCo8=Z)B>_Jx(IB!~lK>Hto^VhEbzx z<1G6#aXB>Bp)wY#L@-Kq&BV32zLarGLqtY-seUg(K1lANA4uJ2lW$Us7&&0#K(1S? zEk`B_C4waEmBLX5QE?ttI;Y37NGz-F+r&sJv+mG6VcF;f*VwRC3Xc= zk6`k`wFKAD-Yz(({o=p@RAzc-+Tr;=8(CBdEfL4Lyy7D9JkkaW^|1^T&kYSNR^REk z=v5MaH=ukct*sejHUzJ!95}KX(b=oNW%6q6j0*hgmk8)yfqMZtp&Ii3suq!!+Rnabp|W}vSr3IA}`RTmA$2RyOp2evkH2jfs2}RNZ43~SEPRzLORtd zz+?y8Q)wEp>buWU#a$fsyv%%5 z4y`x^y%5AIDwrXxLO8MOzk2JWnFmWa<=4PVJ~k-;<(t$JOTgo4?we~u*Ef7crWN##N0%3W&ze9+<&yNfyO&Q zO7t^$tp}!_t8w_?PQeL71tayx;Tw49W;7Md0J9+hCcD7LPJoF$J(LAQZvZ53Gc=dR z$|hx76~)BM>PyZ!+;34h(x799cIW7lIH<+M_M?jA&3qaK#aXx83g;Dg0h3Si;km8! z&Gb_Zz<0q`{xth8wa?^nhlzM6W$j-wY zR_lwvE#Tk>4$zp3Dg`GPsoEv5)*NbVc2DEKOzrH4LrNcnax7ZeYvV3>q*pkqDW&xA znH<%1rF>wv?1L#0Usfy*gS&R_76K`k8UwJfDN9p`y{PiAG+ygEuEj9@ZR%S9K|aWc zV28WpHUJ`rW4PLCVN;9b-myo7gFx$qw~Lw-b21)ar&+&ys#Sl%_*|6VxDJrPtG zz9TG7N^NOg_WA!@c%F|Iy>$-}D|i}pV0ZPE?H`0AA@0mzE8B}TyOcsyMO$jOD&r?{ z7M+g2y>`Uw2VvI{=`kE&M8Gc?yp`lL{q17)V}w8`(K1(rd42?ZX+N!e)&)xv08D;~ zt3N4Xc|Sx4_hlTC*!{+o0P?p#g?*`75O%eAyqqG!MQ;P#L$EqslP|Q{Po%LM73&u<$=N)AJIlh)uswKeI|MUqb zo64^fHaFwGL0_MN>9u8er@^S7XMBT4!_J6f=Av>HunRj_?sq)8Yc%_HQqk!-4h1qU z4zKsCeiR4`lf!3i3@s3ZHBRUM>2a>LWDy~I0lnq1MIB-nOu*otwZ>xBY|~C2Z5gv- z4dc>NvGo&tv2q7}b(FwD>;%r3buIa?RX8=DHJTBr4Ts2=*(e=d)R%Ax-M(TArOz=^ zOL|HV!+qx4d(*(rQ8W9l8>>@c(*S9EX#017 zrtWac%SPj>ev|@cvsEt}3EpNt7%yhl`81t%e^MLd(>>w(j{-i==k@ING+xr1;GX5! z1Wz4^$oN5x!w=F)KXy_#+cwgiF-eJQ(qm~!h>~X(Gr&6!wIWAff-J4s2f0zfIlfg< zDinaZ=P3AFxy98DtCv;(jk4dU5{?XUMHVt3w>jWcfL&BEv@>$B1s;4lXZ$EeC6vCH zmu?M7PZeAF{hT=Q--)jMVlSaAsCfdcI$G zO{146^%hK1CYB>S*&PKbc#y<-swr4Yn_kAx!D9^JD=E%z=&^PzKmAhaXIZbYQATFXQc40jc+%6kyGl z^WwG!-Y7W)B=Rnj&!=%~&p~%Yj{@ebaJrr02{`R`L~ijkiO(M%7CpIDsyjcBY%GZx zo+6N>>@3JDFbVmCAu>23*x4|C;5ide2jD$s1M?4tM?W|0`ra0b#=J4+W5y8vg*B^T z)BJdn<(uv6z3%rHn1r=zn3AL`#D3A?nV3Ts`>IWaQeArVX^d! z9LIp^gOfO5E{>ripO~bjM(={IkuF-GL`@LNyUcbT`oYF~Am%E5wj=(ivzdz+mG(8A z9R+uSbQ78oVZ#dY5unEz5*2U@@xHHni`D+D!0-#KyN`R|ZUUzt!ApxyutP4eolTH` zAK3Bd44*HAikUU@tO&0XB)oYOdTdL*;R+)=KZ&CCY${I|XoR3jBY$mk(_(g+w1V<`1yX z?=K3riNL<<)$R1R9KWe)lHOX)h|u6Z_Qsy%pO)HfNS{f{=(z|ePoRt+ke+U2n*dJNT_;E@9{ z6F=q2RFrEt1BX)PbOaRiH>3Wl`xfO$amKew+a~#k2En{k#?Wa|3fzW4`^?T1Eibw8 zhBP#!uQ8TjGQd=|53S#DcNwKEXmn?%9Q|ZO=s3fIq*JSP)a?&n(F`V`@VflWs4Vjr zD@Bb@^5f@kC_k7hQhlY3ts$8Un&~A0{Vi16>&xfG7!8Ab(Y=c-s{67!s-V~cFtOVh z7XbXs9O~2c+nCIe;9)S!MrjDYj;$n+ZG`SC^rMq8?DD>mSp>$HR~}gj0n#p8+fvH1 zdmPu+Y!_<4=+pI=KuRR|Ax2<1LG8s1b@)!8po+|7_e101#f=-(go_Ik8p#u<O-QL4+q&$Cgd4(zhRU9_H44t_n@$PML9bKPC4vloUP^uuz9sYJegv<)j|Xe}e? zQwi02JR#=bkr+-yD{LO_3FI}f!r~lL?UQ*&bHQ8aKco@ z-0b*ZB|LEp1`6d%mF+qL?t5%)b<09Z->Lw*_@{+upmp& z8$C_(8E7unK4Typg9>Hk9vO@wwxJgY|Lpngjl4|VW;DAy32Uing$S^)BGUq@LRvh} z3JyQ<^2S^yvT_yNq?4~H&1!R#40NUdPXbQu28efg`IkMnZ;BDFOihdMfcB|A0q(nw zww57(0awaFU*5SNg)PhBlwPuC{{m|SHASxP+y~f38=a>8T4Fqf? z0dgSsKf{ti1)wRU3Q+5+P2juF2M1T?4g*s6T6|(5Wj)6$ExI9RQRp1Uhay@|F>H~= z{fl@beoVq3GmH>$YP2O@g!&cy#Ex+&dw1B>KB> zHBZWeY2E;{Rr){7n1c9y1{2=V3stjXK5@M1Qtoi64@ix4;1_!zPo#WI|nML-t#sj!w#bbf)O0u`4L7U}gWP+2kB8Hvx61X>Tr z{7Bu;7&%wR0sNA{oA&NCD#p)>n-3fz2{ACVaI(YVEz^<3@zX#6G7@&MZ|+}0Iaht& zaOv0u=pB)|QbRVGb}DRHG7rQ{reo41gY5J~s@KXd@j{fqpD%9g-S^S)38;k6y^0Gz})5zFzD_CPb~+pQ3;EF%|5F^FtELe>#SrO{cx)!4IzrO#WNd4p@A@-KE=u3gz*}Id+%Y~e3KbPTVn4uAm zrDblBo9E(HwpR$)nTf%1x3s)*!FGk&*OztJKPa7l0qH)6{ohWliM2x!J@x(0B)&jg zOMEfj%-!*OZzoBoD^{914NVy>~Lt zyC5Akwzx#a@R*VuDzY9$lLV*B}5F@j3U&VVO39@r{ngswtl$b z2!&~%oOrz7F{KMM&12IxmM-3Ku1?mJt?72@V9mBXOVoUXOb-fNInVUCMz>x_A()i_ zf0Yek2qT|(XbGi6BHEZtb$^&}c!&1DB#+cLmMDNtNH$+E^M=e+Pz9Qe)hTFZc3#i( z`$4M0Sf`*EPmp(+!MXP!!ktG|1T1jIDId9kEVofjWe{Vg-e7EQKm zO{B{+gfpQ%)bU*LsIr0#YZ*t)Eo)O$V21T#1&5~-6^JgQprk5JE2jy6++-5a^ia2u zcht2?=;0iIQ4$^*y9B-2?H?%51f@D`%s_wV0RuL1Fa)@?0n5)+(~2+CaJ_@VQNkQ> zf;1#25FPa1mH`Mqp8ioMca%K3g7QaZJR@RIhYgx}f_caR*92NK61aKP`d{IXgs*18L+}+)(FS-hN<2L)yWDI20bpY`_~|#&0~8Cxp+* zfs**L9(Ee)>WEn^7dn&;3#@D-#%hDBM3%VzfDQzm?2lY8eB^T`j?<^n$aE%nP(cT2 zKp@TUwlQeX^E%i`MDiojX-E#mHD5qi|JFlt4xqQ+JHoxU6(Ygl1aChZuUWBHr0yj& z_~Zy+p?>329AXuh9dLs$nOG^+vbH5|*LEP}DrDMmrRJG&Vl>ar8)en1_y@nsu(g5O zc$L+}$yD0}Nlj~thKEzceiOzX8xPXn+m~mg)0Ww&%z27(<$M}W(KXjzB^(Q(c{TmAcb#35xp=a#Nh+nP(t1N*{(uw@4Sk6>M zZ$mVsb6Wr{0N!pv3tSwNg@(=siqk^gnOKW92{fQqr^+cZ0bcS>LJUeHBFfJH>DKqV z2wDl8WPFgGC}0iq&Id_`2p=l$H=ZT)*AN{suu7p-%*Ac7SoyHd2ARyoH6%p5w0#zJTIrQ8AG>vN&BR&*d>*C|V&io%o5{CKLTSnu=LVjVDBr&n1d$iwDG)tI6diTSPyHM_LVt3+z~VWu)AP+EL3%ch z&8-{~cnl|dSGIFl{c7=eo*D@spJ&-xY%o1CjxaLL(QY|7))(bXp%~EIioi0OHoz5^ zH5ih6D&Gbmx1>F!vq}EojX2E?1&=kt&of>|q=#vfCU zU_>`Tg^i9&E2B5F6ZZ?s6{acAgGJcyHM#ZAAo{di?8IaSvZ3Posb-33^ajNat20+|<~iNLL} zNSn14kYOfLFdm1j5l6zk8CL7HNtz1OwbNkB5vDpd_O+WzHn1$NI~QISjnK5REJ`Fg-=QlxKeL_iy1GlJ zfw?N6JhO8vLaopz<41O|ZqRKu|yMxR|uSncd^uK{I9O+{~okDEX?}xqqV0j7C z#~oos7;4hVPu}ESg|YjAyYWV3@bn^J+z?*I7p2d6UKwZ#(wVo*cKa^nz@&CXkTuF> z1s_+0Rn-~;nFCv1c?Kvkjh?E!NIQbu&MG!|LGyNf(uMx#NXyI??XEb&vpKxzYUL!@ zhKzE>`8!@! zrBybGM`hyKSD#9|FD^-re+{*i^{N(Vi?$DBOTTbKm2v~Qg2klT9A6x8Vkw4gXE(?z z@P{y}_*#PA??SkmOAqrO7bBO-^a#*k>AhZHeXr}IWkn0xa`IDY@1oce=YdDiGRD2? zO_nM&2pOhvztCW78IPa(o@Jk=cU=ti3^(-Bawny25!{llB6~qD zD;d+qOGEI#^&P;;nIaW&mjN-&q6GT_cWPLWWh>lUQXTTmcua?^BArDH7@7;wvr6m{ z(Nek!gm=tw<`;RbV^%+YHH&L=;k}~2l?h2o55 z(e`C^Up6Jq9afnn@mhepEmewhc<&?5=VWvlAIdr$GU=ZBo)lVJ5EO*BSK}y6dC_f+ zD(hTO1}u-WWRN8=4Lb)uekUFCq%}h|PC?n+t3U|TdPVlJ8ZB%0rS$2^@KmE0%r4}G zvhFDpNrfsQ)6Tt(cu$&s(07qeoPhPzz~QYcYzH|Jg}pj7B(8B8Pt*mCSW1HBm0Mj~ zkOD9v*ZCxYNXMwis)eESc-6G&K^>Q+}sX))D`ywb9DBIG24_o#VObDRD%1+ zc@zXs{ui88RlnKB7bL5{TO|)$E}A%^XyYYeojE_CQguqa%lHwjwFD@L#idf8w^b%s z@>P%`IFlTVs9l)oX;{r+)n#$Dvg!W&*Wmidhg8pEH@8>`n?N7VnZo=dmiG)xK7U^s zWuwHhp+Ld>W6w%@%DE#Zv&l;jMsrvIVKVenG=t%CTB^VzUY!r$k@e8eWlX_xNZh)+ zJ2bq~!F#l1PcJnsPMcgIkeULci(QgQYN_=lYz`k2A)rxX95{E=%90IP@>nM(SjWvC zkrd8D9I8*k)~_pMeY*A$X0COb+No@OqU`O{z>;E;w+$7IrmPorZ89^K^n8VPUVi_SP-GF^;!F;{yNht)&W4H2jZJq!)EDL^t z!*H0s(ZU5?ZjVBT0^=U8Pw!e4Pa4+Dc@MIQLqgbyUiMz>bLtXr;sGJ_jJ3Hh)gdJ> zR2Rg~s7Vj%Ql~6^6VlDsHf|dTpS}vO&R(`p=93(6naqZ9TDU%QVMUD1}uSH}b z`xeBFTD_Y<(c&>iJp zPESXF28MeUBm_^%lE{sU5;JS zdrJOF_n0g*M!g@nrZh!;21h6STpd!*eoLZ@U$9HV$zv&+u7M#*kBy;+s+W#p10|4} zjs-5Ry&o_Qp$N&ZT^Ire*d5d^Z;CDUlBa$^Q{VU!;B@(FVq^GCI2`i29Jvu$>N8Ti zu(){I#mAANR$w>1e5g0-q3K&?;9FYxU*#bsi-{!t^$mJM!-|J5<~x86?&W}%jCEdK z2B0hk`7;+Rw!ookyPCD%a{yq3TpdVTrQW;dslUMf;NZh8b8}m&;4!9_b{#{>(I&&) zqX_C5_vtP;hg^2w=h3nrSe3@v*FTW`{r3L=~7K7F$HcvnSTlfwm?(-e$jSy zi*eotNXPJXSF{r8Npx+~cmyDEAzD-khN+l6=@D3TtHicw^Vc9aT07) zw-(O7zIq()GDZMLvG=N$gCpSun8y9o&eU}fZ^wz~n%>!{$ZU=e>6}t^CWU!Dc{nT- z7y-4{QXn>1Dm=h<#(NNuP(Dy3xy<_k$y2dm*DO{MG(abQ#CuN#01UB#&xE3+g^W8b zl#HV2LCQ)jN`i;8d+Li(`sPUPg!3Q`V4Mb7oQCNrWhB!~zS`w1(mJa5pMq=gu@&1N3 z&iA%FaoB$BS7@R>MhgLa9QOQ%OsE;9!Pj?`Kik(6bT_M0yVQ{9Hl!o|W7EVsIokeS z!<19r3tKd!6&J!Js>n2yE13vv#PKdM_1E;8VSwb<{A|4L8qsDx_hDIs(+2DM`|DL_ zgjOy_99{^Ax6~lvY6S&nf(~S;4|m?$fQNR{<4POh#=l6cH5oQJJdP_cqK}31O%0%t z(uES4V0Ib)g~~Nr0S5K3D~5dWZ0+e&&~}KJ0TjvJX>j~_L~rR5{MlP(H{A*r|08#4 zH?>0`aLKk4^Ei{7+{~|sU#3kxA{Zm_5Z!hF{h0~)MlCsE_0_?;fa=NBCZ6-|L1VQ| z^1Qm7Tvb|Nv_WfVyg)`Mv^{Vt$7U|YBV75D5u4D(Sky6`M?$TLQ!LUzT8Gih{3|XQ zbZqHSU)50G&*P@Q{aB+?APp;P2klL}bRbofEgsZ*tml7NfrvZSoDPQ)H!jz?c(Fszr^^vTTd0Ie3S^)IG#GsA=+^83j^ zQ7D($(3|G>D?N~6!<)OKpYv5S+i_V^d#=MI$?xt(%s9gU@ZDUf?uAeg1WE{uzHT+~ z61z$n#Eg$=%S8fE`)=M8H1oOzN|rzwrYB%_L07No_EMFE)0$D};}@AZS@$k!(82l? z4XR*%f!!pH_Tm*ICFmeD5oW4mnFSF`%6$%G->buvO!8ZfUg6;a_aHG6TZt&GeCo?A z6i|3FZX;a6UR5kiorVA1~NOe-{}_9vG0E5ByPdB2KLgI6xQu8TqNUkgh! zg5ecN*zwm~!^GGWw~2%`^5>2-PVzWuRm4E61({x28lI@PN1$4ge5V^DTu|OMZl~A8 z9Nlu)%mwmcpWy-5YHW}&uZM=`f#IawN2`i_#%Ou=xzeRmZ>~1ZpHEaaw-bTB4IGZ+ z2j4Lf$rXg0CA-82m>+ixXx(hJ@dIV;D2vsG%P0b_T&u7%ze9|wt|j3291I2blMLON z!dommQL5>7RX|0VO()GkRi;lRm-W}!~2N?nP{=yXeo(SLd7Tg)|uQry_^|jZh zHrRP?FY$S&8@kv;%QucdY53%cPqyqd+?qN*bWN=01}f@Q;R>WsJAY>7L&J)4CfMDYQD1T2nAQP(vAe_mIGH`Kzvj8AYEwhR^BXU0vih-K$-+J$WGm85tgFViF&_FIU@Te883R zJ%67l!Q>Cveh=;2pD3}QZ~|Ce6)8(ne9Fvg5+2UvxFY#X*8Z2ZL?QB+`wGt+A`XXM zi@{QcU-fX03Q5IZaV`QQKCgJH@7>#K+_LIkTrePguQNg=?uSK{2x6+ykaBp)N zA654LC+q<0GqHRz7!u5IZPqtBC=1+CkmWWV&bi4Y=ivD2%<25}2jqcr+|DF~bK-7*xG6`_3QN+-oTRKif>-H`3-% zb{`h>(u7<$6_3EO3P170+LK@_)MC|5lFJ$2P4aU^ixBRBK`lE$l4Rk9Oa=geCTE8XxE%u$hIe6Eomo3D)OXCkKaO@DWb6x?alMq$rURh4<%Hd zq#&778w63jjssm2N=sg8yQo3&r>>+BlEE0gilPPx5j?zzf*D=;@Frwe+c{sG+Lhty z0#Y=*`8EQn#T^f4#uHa)ICo(8GuYE-x@O&&Jw+24U>h?B8=WKyz z1Bh2H8ee?g9LWH}UY{1W4Shr3_S@a6*p&PCGvWH}P&tdntuG{^j^ww=2d00pb4Ccl zU1s!u;h}S#87pp6CEL-PhxC)ipXWYM(A@)W*HwJntEb~PxIojLg?#1I0i&E4Il42j zFxt-Q&?0@&SZWr3L*T5Gl+Ei}Sh0XIT4quU7cf-$(+yHncvCE#I#ThNp^?VUI(Wl! zO&H2T8E+7@E4b)1-e0@Ga&{aE%f~i0!TrcR&rm;J+VKByg6ASq{&{U5k!&x=Z3As= z;kbPy@Aby0FU+dhnWMW<&&0wvbYig28?ZJjc6;Mn>*^Igji?LJ!hj2$4k|g}b<0sT z2n13LE9G;>U!Y$*>wK=&EZ!2Ov-Qt%bOh;$x{~@g#fjv!N#lbd!=RD=iA85|?05B&06v#Wj$e=O3y6bcyrc~8; zp1m)ih1wmejLS>Il(YgdjXeu~D$yqhJ>P6ab|M3XKfi;DKq3&X6VW(8j000L7!oVkj!*&QcqL@iYNO7B>n0lT$p8j`KMrz&*9 zZ?rl#E}Uc_w3@G6D4t0S3GzA!B-`nw74lq8*6f*Q3N2zp?ycI)vDFJA0YPhYXl38(SeD?O|0`;|;s71`4i~fj|e5MC;3Z?GPPx{6~7DjZf zsRHDK-6w*!w$)V3AJrV#zTCL5_FYo$Iws0{2myo8+-nZphhb7kPbdtYt@i->dN7XS z8E)=%U7VO)V26^2b=EPFq?(Fc5X9>ws-SPLNqRr)$H~jX&yo?I29LEBRHLpx3$B(_ zh_YUwykTh2+3G$8jO>lnJ@6&4Shg z9#e7RCQ%9B^-ZYYtqECpcI|CB!H!MmXJ-_Q#L@-h&tjF?P!4Eoa~~!}K46JGoy0JY zm@-xYhD!(Eu$OOyxfPn@_1o7+(5k|iSq-886DUGn($Mu>7y{^BUugeH$%1X9CpmuShLq% zSNYN(Ohob{%|bCq?FEXPA@%-0C@(?+)|g-$^Rr{bia@dHrqUV*t(n&P?aA^8mbf#v`N@R$ReId1;RRQJE=EFM7GOcLKL1_d!&q0Ap*E#KM=5UzQU$ z+rl@Q6NYUL;w@>Tba<~08)b&E$z@f6Ym|a8d)2igpDGe!HLI0ddeBLu7oSjj{?O%n z=j$u(iG^@yRA-kQ*=>Gj(nv=k!XGSsq$>N@2us2#5Xo3?;B#-bBP;^g53mznOcMaa ztPm@%d&<8?`zj7ZclHx-zuU=mIr^}_lD_UTi#8!EZbU{dt_}ncG0l=}HYjPgkpd7> z`#{{p6om=dR#HWuOX*NNoLUn;vjnnI?7PkWyemC6vac{fz!V|KUnn-jD2OGv>h=C) zTsHR)*LaC{x-3hpKwMDF%`!%OaKkoC zl74B<&Z6BZjLzn#CLEf6NfIzV^34ytvFrQkd&a7g$QYh>A{4@28kP=PkY%vSrbcLr zI~xs6H$X2(V~KN(bU}g|E+_R|Ljv9(6^4#MJ(nu7Xjz(RYo_sm^L z+>{sMD!4KcRx%|zlD)e$2>y5W9lz|m9Snhe^|tWm&f4J=RIL79J^h;>T+E6JEwFr{ z_^;6N&XGV&bd~i;?MHbZm8r!%vD502D;?uK_8l zk}m8Q8s}`worwwm9Y31GqWmK+f7Edd;hXR#fYOr^_@fblD5=?L&=ENyxuOaHifi4e znv)DofgInWviNC`$w&?$ItE#*jPiszLDY+fR`+a71EU zIj(7dR9!6HOPA|CQ(7P>#+x(T=vUqV-p$q->TWOweIoXVSG-wt0;H+D-XoZf((z*q z`yw9QK~cKs`%4^PGUrq=~WEl9e-dvmc;joZY4rj zdt#|$%%=SsI0ryfK`!4b6c0-rrAvw&%~5*1DhHdJ1JK6!uF-FRXtx}D*St-#{RLQ1 zGK-f@E}+$6lz7`p@oC@2PRK556htZ5boFU5D$Q5^k&1C%#_lrUG3(GFkPccq7{oqA zFX&i*CTrQ(MGphAFWgFk)g;IBmrfNMg+CU~0-hK7H`X-)KApduV8CfPkNG$D+IyfB9H@7gX7xcbs^`>P>Hdw=2 zO7FeK2sFF_0RkG(nt*e8=Gt71rTaI<1giq9=m6-)Ce#2YYVFM1Nq++74S+8L@6KO9 zNz3zexPqkt*e_%>8QqM&05s{8p?&DO?<6oC zN2DcG^u8+O5ksD_9)u7`RpaqtuP6j-o*KHMvJZC z>WyY^;niv!9A#BzmGI3`NHWTCiQSDWh04Y)szXOxpl;}|Rh$l#h-SfQw$@%w7snl5 zYy;J9ZY3Rf*G)T(7?@lQKUCHK?q8*@DPntT9)+4pd=6~!2iN`|NBAibDlLNZ;4CNx z?$Q^V-4d8EsKGQ)vt0zTa0$U@mg$k_B^&z5w?u3_-bt1UMX&+*dVnrHFS*`=BR>w2 z@iMSOQo_Q{ZI~Jpo)4vpHq1UL=H$Dn3(F0m=RY`#Il`SpkGR1VhU$mQmFTWPQ_2(} z<7_Q$BY`p9ZRFNF10vK}r|1fTPqqHai!gPi=frGHdTxVD$cViNiiHy-FxZ7w!TVR( zEFIJ@)Q^J~W5y?Y`I8t!-lBZA|IicWlcjq^w4dOzBXkVoP#H74D#d$)X8^zA%IbPZbwj}A93Ok z&Xqu{6jD>IV^I_=j`K`(qEgN4WPj=-{?@DlJrw7HS{pGy& zqLvpG_R~(FucLRfwG#!Ggc16}qtWp08kx;6q_Zm93WZ9h7l!$@K6ZGAErC>>>Ewdh zl;Jkc@CV*()wWi;+_Dt9AmsI;{1a;)LAO%3t9^Ri$b1OgKB_)5DD*Em0MW6P__^FE zx5OWux0nxgv{IeFnTz;cI(WShxs4l-M&R@k?|n(P$&D6E;@Hlv;2P;O^4IMq4oh#Z z8P#h-be9bEO+>L}80Y8xu=+X$4Y_95?87F#)TZKB6m5#rURrzw|(R=5B$HgiKD4TsF~t|QM2 zioQkes>31!?Rc>VmW`YDVv{IUK(8p~($D9G;c~9W4$7nr50^J- z_5H-)P-bmUx3_4uR9jbyu)iKDU@mlMs$w}C2XOnMTi zY!K`_6oqti#VYlxSP_90ELV+urMm=zayRC{HZQbLplKeDzlo0N|2v7J<2n3pCF*9K zoYu8Xri4`eLR0f7M|K(f29-G=Tv1oGxevJUTh6d`^QE9}Wbv~AHPslHY9i;22~2}V zTB2P;45RtNf2__0GRTXPv-wl0=Io+ttg`GjUnc}78z|~1Wosp!RDIc5W?C1+4L`sc zH0eMOF&voUd@Zt|LL(2B4y%A|2a#hvyK!peB=HIM{5tsnU+k1`V|OhK;!AYR_gAQ_ zKHj=!#e^vo>_^HR{hHJ6kzw5u{0MraMOEA7Cx)0B%LRZGaR$Gu$un@!pm~ga)=6-) zjQE6Bt=f&x_7-O-885c>yzo(c0oEEKCRu$6Y0c@II)9u7$w?CcuQF9H+J>e>97mWT zb_Z*VXtUsWKvL^@I<8|yl5TO5+5j``v*GzVAzYD<>U2$tw`!sWo8HJ>(ta4NWlJ?g zX!ok4lxZLO<(eL3`-Z+5c+B(vpOx@Ae~&nm$kUa=>Ky4byS80^ zn}H$mE3t2a;#~F$dM$ce zxSJl3S-%YvGp?f3-DBaj*kN%%a`KY=JH_X{#j8ah1oe>dvzEF%VvawbW_J39B2ei! zEBWC<7*MG)K+RnCAmYeILBqLv?JC;|(bSX<)*|_j*LiO4DkW{ZUjd?zBZG&jJ}&U* z7)Rv#WE`;`?yyk+$f0zVJ`fX@IzFU$+C5VkZvhn8Tg9^ZYQ}7i|CAD84deg20Mz8U z9XQNjq)xMXWCRHh?Iu#Xp2O{+zLN^AB|TyVCfr&vglw>phixfh_u6$DP8+7fwTRYm zpZIBMBGMKnlV_$M%Gq6-kGmD$OqQo#k!fij)U=i(viBKzGLOfLP{EX4+D(@}a5K zEW`5?uzBr}T!4lSUqW-wbh-&ke)JPxD)(HOEm?Pz;K6vWaTW&ZgSic}ul8Kx9dcSN z;McZ*$W!*#7(WOXYs(W3gZn;}kq=%pDK&sZD(xKbg?l%;2wXKmapp?ef_Z&M##$Vx zT4%Xgg4u-(0JyicyPnJ_b%A6Ef}G1Tp(jwjM#r(DwIN$;L%9e>0wj0wzg7f8uNtfKI5_V#J^pVq0u z@E<#Jai*d+WwB?o+`-U858hUkQ*uv~{e^i-LWh3Zd?Dnhn;%I*Xk3yi=q0*OjHNTe zv2^l@qBk&D0AjX?$TSw1&s`CtHzpWx2=z(=WIRpSOK=pHe9xBLRb1hhZ@bTjl( zz*66dk=v^BI95I#ErR_hRX;SXSs zPv{df!=JmCNt3m{*bt@Vs#Hd6i;Hd#p3Ox-3@AqP87xjV6opUHn?P!a_3%G4!PPqy zS$W+5>a5uj_~u8&XXOv+^4r5qjJzIM?SNkb-sjx&P{)*VI7#w7z~3 z1zQvou{tx0++pDgjjuPSshO^x>H|c0!4Kx~gXjsg0kKO;P_^tKuI!|N^j}bBBftP6 zCyQVy2&@r3z*@(>JMj6LXLCX_fe}M`<<1}XU}A}XZ~;(1@7Iz2E-{{kk$|`u7-q1f z2_kEE<`Tl?B08KaW6Q6WjZ7AUS+4JL`v^tIIhV#Mm~G}{c^A^b&*Pe87QVey4^%Dl z4+<{&+n|goG+_>njCvP2@&mM?kx{H-n9sZCkpIZN^P#cRBJ;JCj1&efxOqdGxQ7zs ze~ncDqZD_Ah`Z#t(~R$zWO2SVOdOZ@1(KC|*!pnYmz&KOqRoApcThgZp|@yHqBH+% zp?K|=vPf3?VyHKE^LR04cUn9b^C@ogAUBZht-aV;MkTQ^dhd|!HC}8pB8Y4X+n}3c#B5k*T3RpJhTx4#%v%-PSC`UBlIX2>~=wetwNn$GB3Lu`H-PRMZmcD4tlHt{p@N7o=W%12@kRw~X(b35m zVxl5{CZ8aSgq?qIHe}EGY%y9={=?Q5(v~qK5az}LarEbuk_{RRbVkix5p~Yz6pNTc zRaGX>lV(}kc-8xU)S+v=S7Wy|JXU<;)SDPw-e||o<`&9{`Df)K+r1SKZ$NIK{nyCw z=^#KM8v{hZwVqBYAO!8S96UKP7F`7T({smVZs3uV;bWS7=5rBW^LMZM*c!*XDO9$13Lsb{qVj;PfBJygtHSgoCn(;#E5E7d%wg7T^Kbcg`Az@6 zHcBNtV9cM|g_Ab2Y}x>vn2+)u)O)?qg9O3RZv_5rv!q*<91;;9N|yW-on{{ci9p=# z3@`!eT}GZxG@FcQG>e(ugg6%GtwmDUS;ru#amcN4s-?C`-c!TBC*MhJh)WBJ!S)`0 z3{N73s+pacL+vTb7WmLMBvy^UAu{NIMMIwke!Lyn^f3x(2CFX(vH=AS8X;_?b;@P} zNJd#}O-ggkkhKYMRBRE_zjZ0?xZ8+&0^4-E)5ikp3t$GTwdIl)R$6L9)Xi{)Q*GM` zu@kv6nXCD{$j|GBtdc0Woui{TbSvu;r5T7;Xfl}Ar_*#jaUbIPS-$*guFLF*JELNe zK9*VMjil3f8sD!_4ypu8F)>VVyCD$S(*(6DPsw0M^AeRN1FJVOANB*@!y! zficOr*606-As9~#h$AtS1hzUJK5i1-7pn|f096WZ>*~aR@Y>0$C0>hT+v)o3-`4*w z^@V15)taO8a8oPR_0&){vwAcrac-{`EqsHEoVAi=GB%jQ0;@Ul8r^#azAIr`y}q(6 z$O3XA3_1{`FR-{Dw3#3ECJ+{Uyytv%kNASR+d+XeODc29AXGNjMl{vW%gg8ZvJ!ht zkpGLnnQ+;yS0W39__a{#T`ic3*o^J2IM=rA**syZQv>X|vOFnD#wm_{G>6-QU}nTU zgT)LIWT)jc;{I0uTaP(QWvt<)AEN{}wr@Oj+K#Hs`t6Ky7IWZIcXi`A6;0)w>nfPb z0xwlqz!;jcpCqf5W(NL8LdudF9uzZ40>FHRs)%j&p@hp>Zhwz4=Pg-Kw2Kg;PS#nE z_6k;babWiOC*-H4`};IUaGbyE8A~_w#Uu2WS{d?sPHUs|8`KS0@3N1K^YE z31+*-zIjWl0Uegp-~=l!8yUqTP8)K}t@^06WVf23o2+8Dtq9iMvaB;&YYL+&wEZv0 z_W1&!P!cf7BHycqPw|>iXSj#K>J(3Y(mogD{RzOZH(Hl*rp(^SlbZv1QxzBvRj1J} zHS+i&z;SLWdm+N1>n`GbcZXj^IDJswLCDLbE?0 zW&uxjgevByu-X$U4OMGJrX z`U(y&$kE(7v@p{|&-;;UL|T2scO_|cDyHf&)P~qn?>E`4*fPC-YWvlMdhB>RPhelK zgkYkPA5Z+eC%H&IuOzT`02;kU#}i}9Fqar@CC@2iH-Vu0Pyn0mm8DVS6^A0=!>G@4 zOTfKhD{dvo;uHYCOL>#-SJFgN-Tc=Cv>RsUIy}VV)ZCo#1R26u( z;CR64Mumv9jQsR7Qec~FI|3&8HhYxNBjKktXUt2TC@-Fjswp$L2nskFbJObh^CP5; ze#B>tFvo6t#&25Hp2HWtm#iH=AU-gYUJ2n4JNCRD=}kE_%FHO!WDTn<1#_ih%9^aA zNiFTOyKGWV#ppkSS;4$=8gdo=dvP^j#MWGGG3@O)9|6YWywJjlE5q$Oz5MvK&Cc)IKSXR+Lvfe5o-JT)iu@}lle%ZyYy`K z+WF0}ki~QaQ~dCbTDiA!8xli>mXBrkJKDq7KPZD3_uSE0OV}Z5w+eN5!)lhTY@=f= z`&;n^#JY2=4tBX}@B8Zv_fog9J@dPr9=~gFtrT>u(t$^m&0dZx2Uk5=Uh^m+k4<|Q ztGox{1OSW&gIKZ2+1(||ETSe%#Y>KYa?m=8PGphyO6!>#2qn>{JX&TM9|$fiu+7Yn z{*Ab*C-~OAvANivZ0i|bdGYHvHFXM!gT!_L30k0Gl*_b2Rz0;88Tp{yIa$wOc5GJN ztX!zoAZ6p<)@)6cv9+AV^x@(2&Xs*i0!1xEu^G)^F->sH+8DCNN$9_EL&Ry#3)Ezc zv+Fg%E+30TlQN?z=SK-i&ff5;cX^%>TDAo;^r7ujx_@)A+LG*WugX-^hAt2eOi_YgD1XCp14X@#492STh zwa8t;x1DrI*a(xiOMHEW(G5fE%o0A7;60P!e?xYv^n78%I^A9l2L67j?b!gPSs8H; zwcHmu)`gSHKz+ETvW101j9S{6dw-{Bq7Rq>M75AT{RJ$m6fRGN*Rw{qrtr#PH95s& z!sepdX6JlbqFeqLNr$s!%ImU|GXABM5Un|{QsBWPfHxJaEIj%6^|RdYFR0NF*4@tP z?9{*wxHb*%k2*d=|Pe{Bjh0(LQABFYlQmSWdA*lP8q}I`Y zaSgdH8`B&jQTA#{yv0Xf@Okok%(0QLVoEn!ieB3f)aM~rWI;q+W_9!#u`0_bO&zre z#nZ;*rIPOq_2Rb2Fp9{N-`s}zy@xj65izoE!)&O|D?<&rQv6s;CA4HSs#Nh(naZzO z9^qi9XOKHdL{zkugshR;pL%Eg3DK{$*CN@`% zO0d z3cPpai}NKkrOKr;yE8LJw9gPKR^sgHcN_9EQv$bt*@N+;AWCx9}pdc ztFa~-u9N>h#y}Uxsnt69#LE{H@c=Q8FP#xTN%hFZn{DIc<=LV#QxQS_7EDOgG7x^4 za?+I$DkZ^PpNTqtJqD$ywkxpigAzHdxZ7@0@c7O@&x7{^FOhwj5IH3m;4eP~*eR8% zx~52(V9BDySu8V5TRZcC%RzHOD{Cw&H^T*d+tWMmI3WH35+nYCy5&i>*02)(q9vc` z==$;qvz8u3+q=yx5jnc?o=h)wCS08x{(K(bCwLOah&UTTtkwn=53G|2QvOX5Oi2Om zaVrBy5QT+i&+@@53Q!amRYeSVd%yjmVQJrHz)@F#jm6!irBQ*0^}Y_|*$chT;Subjh7jhb>(=ag%T@6Y=7^O+HO}I07UtD@fFZKzx*lZO<`@&~$>G8(x#SS41 z`5v+PLFqKJ5#$=z$YzLRgpph_m}dpPk_;2^8NbE5QdDZSw8pmYfnMdc(%>2)?z*nu zX_*K=Uzd+*bAFhN*O#X8<7AuPSciHpW-?X-H)oSv;AD z&@wFBtl)p*MWB6iU==|536Ob+%dZiGd0H1OQdL8I7$crqk~9Dk=oXe62kM;%m3OTB zJD62A1>_BHmMQj@+#qqvBE^d{a5JKI8bQF~P9mDX7i@pf;g6qZVkLB;b1PhfVq&sH zq*B@#k*mD(8wp;vu)9V@Q+!B0pG_@JT)er49>Ws9d@J(bVq_AQ<`ozTJ4 zpiOx9=v^Jk6JlQ*pI6$`tf3AbRuKH9*ar5g^Rz7p*ag{-N)dq_l-R1?P(n!n?>nds}aKplUIlm{={Ps z2bm(2f;p`nta5j>ZjRBKiOZ?~mud#IMEb8zaLW;5mT}6_nM9Vyyw|+B-yMHHoVU%%yE0{RB=-Ea9`;tl4s+&T|4<$tFa7uPaxxk1vw<*Ew`+*^JeGre`z?_H zZwFpBjL!=5a}J>VU2&+~D1TxcYIDKf1kW21QzA}{o$i8qN5JrPLOFI*UT-ZqgAXBE z9ov!i26mW%;!GizU0NGc!>oGWgvH?pw&pekvg+9RUy_gRnPxJ|(D?KzL$T&}7z{AX zp0Kchr2!&6r+y1j?g6V!X%ryKf%}xMTmo*yL_RcjJ)v7QVD#HX&LVuf(G>u{r?5#& z(Vzeta0w@ktetIL%E%agbnp{s61c^bsx%9a<~mfqiSS5qF9_G5J_o0l_GnLgg|Lrd zmwgdjmeGf}%uFusg2G22GydR|IKM_PoVAA_4EOVKW?|C2j&&PE7=7~TWBJhxFk1=JJX!gC<_ce5~x=r_6}<9s)7eQ_I~ z+1|tJc?6KhTd_^bl;iu9Um1B}OI5fuFDFE-}6wwP&# z*~6mRw1wVH8W!zD+3OX?DfhfYg%5fQDsR||C?uam|JLF799u32ugPW;^i&T;QZ)|O z>5PtRk2nANTAB0NTs(u-sZt{sOeKVN<+WU>K5bwEw8%8nZ8C>*A$UdcKF3j$>QH%` zHI`li)x+y+@##n^&-`&kIZGX$n{5!vyr_&cBmW2ckUrXD=bgXZ(bP}On9JQh`I?S_ zbN<}|@s~%V)uc%M_;SNPmQ`L5tJjbuQ~B{O5R7016>1JX6rCN%^vgO{+L>P2hOasB z&gdIaL_`Gw$56gxII<8*P=jP>(Hb>mZM0!&_a_=z5ILw^pE$QL3jE)5E z{h$QS)SCX6y*NwcUCfFmHSK@i677bMDX(JNh&GQ$MJxabCkLmv8h44ruqfojw?d_t z@hNYq+i)OEO0S!Jy}Lc+1g&Pa^&EO>8pnR^fD82p=J+1z2r?YN4{H*iK>HZd7?k#l zeFZm*>yAZ>_}I1%)q*7SLq8uu27YYZ8U$fwx>NZ|@(ry$n+R;gJ-__F zZiveX6V4Mx%MB8-L5EyJdnJwK>n6hFwPlH`_$lL9+QWJ1atx9v6EKD)kR*}pT z59LJ!$$@=CrbR%va2-!!Tzq@NQPG8A+A#B%s&Wr7AwAW-$FCi*ImPO_#Hc2GysceN zEWllj5adlPdSANz>^4G)$YumS&8WKt2~?Vl@?@R!bJUc_*v&-Zn9GWgKPtp(Dv6WiAQA->T%IdbqdzG1TuB&#GC0c>-&xL#l}NYa>o9EnWE$t?gr+VUs0=^NO+L9zYGsK0unOoiqX@Zo5+*|R5eGM5~|Iu zfJ>h5TvO{`r(76|8oczPtCcn3j~0nL)GZ44$O~vlMoIUA8rX?-m{9qwe05tqj*^;# zL~tB`jKr`FLggvp3dP~_A#rptKgU(Bg;ppW0EG<~;{?4k2^XCOT?VG*Qk%yK$q7U= zJME@{WDzz}6!`0E%kW&fR)&f|VNHw7i(}Ui_Ms3^Bv9UJuOk2x?9YEjNx$nHT;q@A zDeBIF96Sf9KTIpg?G|j1kBt!fM3VHM_H6Fd$Tfp4xm1lW4ztR|mr>(~D?LBD<>SF*;KmEayZ*J$1I?QI737O^50f2*~7~M(_9vnvg0LU+_RgKctEgJwuGz1|PUCbiu85ekCl!Xdx`{lmS3q^o`j@2=B zJJ2Zl@FFC`(_sO@#>~*1qmS^(Em}j;DTO z9YKd*JX5L-I?mk#7o}Fv;}xpr6O+n29#(`l7=EGjIi#Fd`j}(L;apV62KwmUF!F8Z-YLv}cp>tE5O|g6I+}tPC>@ri=@c0ql1;a3Nm7l1 zt#Xjnlr!T%Yhz_r!dHxXYuc#WS-gm7Sm60<61ka7Dl&?4+D&-8pG2@IoMV z1#_s1V3o727lGv~x^BKL?JlBoHXE3L7|rnGz{{7Oac2X&nWiEt=G0Dlzb{v{2==SV zitQ1eovdyBONR>`Z50=}DyF;lx{1X=T8gb59vKd1xE(rlc=rQre1ouJ?*CKA;3NiyWx|j39 zOOAqn*&xrc?UDIx8KPBZTvNuOh7ZQ&mv4o-Y0Ns^?zA$ucafc>#+{ap4HbyB{uM%oFMI z4qRp;ekCY#t`}SNCn?76a2tAW9;)4Lk|Bp;{UR#=Dn1GtQqb_!hYZ4lvo@~9>?V-> z2h{yfh-S%D&^OIqH3`$ir8E|SV*_@>E0wm_XPt=;7?ZxS8~-_=MAdJ5Y-n8-Ke)5- ziUV^%u7ku$DDaQ`^RjERD9`IILAWoHr~|TfQ#irS7}B5ppekw5tMZ2mR&53djK&Xh z3>KNek3mK>s&v{hJIpBugXa8On+;b+E)9Ck%dl2#AVR89Nz8FlpYaW(mR5iC4qSdO zY~TmJh#?btFrxClyqt62deSP%)csT6Yk3&3H^QCEtj*+ZAO zESiQHF5uZ)tdtdI(B1iCIC5}A-*XT9j{hcd86hU&dGPRW$dx~591KL3o`OAD%g6j* zD3oAG5r8eDcy03)d9q3zwCuoeHpbxwo8M5S?LtqQ+h`V%!MBpXGzc(ZG0;JXvkIB= z+`MdFQf+~x1y5XbIZgJM=rX<}`FBIbeI_O&dKgYEN{8`cJfj+$VbHZk@w;L}h?05p(DWN|O9gvHtK>v` zrPE%mL7`J0qHj`MZW$_l(Y<*Bq0sACFx>KfU+bX530deh4xsn;GuewN{;3))3iC1^ zWY%&eI5Z9M`yO(tF(}q$6?;|f_gUTkVo46J zz?dtl%8;F(-2W)PO<9etTPQ(nsGAuPd1mW%)`NQj0_0h~|vTfna zB&~X@L=3BK6i3C&0WdsDG~1%UhYk=7+x)msekus%dm?(62DCJ%T2w=4Q?;I)Q%agwb2jF9E+amh@-1KDoM zq8D2X{a6?Ou_CO_B=3g62n~CS4$0iT08#H{8EW9oqX@7QWSc3RLnjSC)cs1pqaxii z1#Wx(IiZefB)_IcmSM}?u=aPmNFt3q@ub@$6>bp1EWsUh`mq zBID0fraDimDfmp(y?lW+6!^x``50YJKE}~nuSOJy)MNDOq;`Da7h|MS8O{^deEOuz z%^KjM)8f=FwTI-dPhspLE8-L&sDgp{WAO#oqE)Zk0o%!ibLW|EBey);?kULDZUh(g z^X`NxP4c=uc*E2jvqUQtF zLdoF217&bcvT?F3^!VV(F%#%%01T`uf5|LS!}=`M`6orex32B)?E^(X1h1hva+{Z{ z6J1W<58Oz+2<%Wt-+#KQNSg?7V|f5vuMDz&C-DF4B4tBqDbf2Bd5RAqy=r3+xek5z zX4-d+X~Uk_q8yw0Abb2s$j33-A!D`Gj1rw{43fB5NW3P<=~zBZRB3bC^A(vFgC@xY zwWs_CC>C_3ydxRqE8#^bcp^H*zQvrEI+(3FO7B#)>@H=d*qaj&=XO+OS5(a@S3};Jnx$`%lZP6Q{oW-%l}rhQ`1}0Tz_`u%GWScj>8+{n zlT4@#_j~2`cAg?__T@OY?>|$oFn`*VEP4*ZTuBF)N~7q4H_ucJr0oY~8aIQYoTJ~A z$X#GbhE)$t-=PbCMQTZJM=b<65T(oZc_48AjH+R`ecfG+k%ah4Z-Y9W2@eHddx^^w znk6tQfNDpZe&bG|k}_06wdMoJcX)c@FSv@p#^9|dS(xxs&Fck%129`UT3cZveq)`q zFAL=T~B2>ImH7psV=LWf|kQ^D|J?rR4Yi614pz-Df-2=`H%bE9LoZejtWG~3)*5GN?G5ECV z0P+s;Z1Mp#Ju@b2cvOMD9&O^fAN9cWH>yMKfCOEG>jQ7b#_fEypUgrf zam1&!=lJJ4z-tOrO5q-e>;NSvAQ@?mQ7&7T?l;DGh=a~}%gbOk zMMM#CsCR|2hJ!9b=m=(&QK5fsWEC<_$Az&U`xL{3Hmx2qeSXMF$WSazuJKTV40zC* z7Yfed!Ld26+$0reNL_*ReC?r()_}UMnd)O`mR;# zY<|-5T$uiV!C+1%P&mb%?k0;sFQ8xlQgtS=q{q_{&4^`~y7bt+C;Wy5Grq3oO-{*(Ja79DYu{d1~99q|X^{gOf zq{KcIDZdYPdg78b-Y~)5POUM49ia?k(k+){XwNymxC@#2=hjf%8r&iET!7!Zh>yd4r#E-Kx02Qjp{{Jai#`e9 z|FsyPXoZMSWbw0rs54}5UFL$9wR4KDsq49!wD6H^LebX9{w-=3kU-L=o!t}vuTwPN z*YO`Q#gw2&mUj*r(k%7`)7+s-$a>0Z`I)6SNTQncB<&g)(6xx(I>)QeN5(aOECcJ+ z^%zD>>+N$QIQ^~~lh(`GIhUgp*g&WbK-a;8=>2$>WR>qAF-}bmh!3i5CY=fMIoU18 z))Di94m8W_bWcQe%g=7 z7(CK^#X{M4@1+WT^Vj%(k^DJ}_U`vN`s1dc!ut^T;rTWL+B|RCTnZ&o1rSf_N1?I^mSbeknDm<(ETGxme3)k!l0m7o)2&tz294%Y+ z5;)l>sR+IhIU)eZ`?$VMTK;?$0*=BoNquI4{#LGi2=nX=z__X~Ec_PZI(a8-owl#& zcW|0P{o;=1KA@7Ww5AYrkQB(oC4s> zd9z3GY)xa#JTd~M;qDyPB3F-MkglHI0pyFf`@%taI7Pg^fS^Vb;bKbTB(pc0bH~9$ z6R;rzubWn!#GHN{!dQ2y4;w;k=+4Gb>!=^}1^%PNcQn{CF30=QFii-LPrDZJE#^qU z60RIEQ#zSAx(KYJApNT6V+g2mUutTB)cdkf99Mpm4l3=ZrwHlhYJ&U0Ud*CsTXj*> zD@%{i>MIU=+%%$8I{b|{6U|!Es=qJcZebTC_cPl|kQw@3|`4gr|2(lF3 zRVhNt8ebxB_B^Ax-|J4LbQUL|>@ttL^Wv5+yHRNNuDR^)et5mXdIE};RY-fH@J0&` z9N@aQuVe^6iPL5JTkwnqWKyx&VTmxK{P+o^SXsf4%OAR1?1?AduuPBQ@OP-l3CetR z2VK-;ac8C(?{v)-59yusCNO#Dy#(8``)Dlqoum-{XT)Zo8O>lg;mGESzN}sDX#{%2 zy0s=^xD57zf>@+{SVs7QGZez)?wnvTRm=%-0D^A(QVgmsTbb!^scXX@$eklE@zNji8N zU-!<(R47IWH%h@(_=W#jxzMvgZM9hBj^sW2d;Tq$TvF*1KF=-Pz^uknrx`$)J?W`e zyTvdQqaf3-N^Rg3BZrfZNQT1YhVSOrJZ-GEu<>OS_>sI%V{3?`FfWfJ|691*6a`Y{ z)B>UiCP;j^jKax772CW+M~lqu$qQ&{MM6zyw1{lo95&+0<>f_VqnV0Hf2rDCG>b-6 zB;+=URfy#E14q{r7c(K0Mx>T&0k~ol0Gw-0@Pt-=?W6tFrwr9t6o!N88F;?7C9)4r z9eS8X-$SBd#nJbXZGo-<7o7)1;UkYc_ENKfa=!`(ozWbSy27@R z{fD_)tgAUK>u~^oIY@u{*Yf4gS2^OO0-#HJFzh%|(nQ&Zd);Hj(_x5XP-lByJ;Eum?; z8jl+RN9&khwW)d3Bm6)pe={Ve>(}Ldc1?2B+G`m#n=JATV(^3+O1ctLPw3 zOUCKpB`Uh`QYqh_nx|u(m75*x`=bGdxU%=zEYw-$*s2a5Fh5aZ_h7?ZBli~|MU!?4 zORS9od}ShGd4@W0n2(5rnp$s_8jA+NGC&=HpyHFe$=o{hjG?-m7R_jiL>`5I|Y#eYikMy29bw#D(} zqmvwaA10Wr=^?!D$5e@Cr3DWR_5m$x1rj|8&306&iKgkR4w&fOQsIEy(%_f>Yy4c= z=)=Jv7uztp;MsWszHaWBK78rK+VwZ9n66R{kS24z^4k{=csjNB3`J#at)tM*MTo9| z2Hf0JuiY5vT`<(LBtR)h9yj>Nkyeu9yJpRJjRBugpY0;|YpAqcTbPodx2K1?YSxTJ znXZYjAvqm=K3^HTPIzd}(U0rRTM0mo6XV&T{o_}QXZzg$-8DIPz z4d)ESxN>fX!{vg*H|M|mgh;w7XHY7ppjJpkf|w?apntwkGzz5@=nlh3Q{nH?*$Uou z)HMq>K19*RsS#E-@@biF9)0({K=OO|{j^G%`z9Wc*2b+0cWj#}tccmjICmE5=Oc&v zm11%NKdz%}1n>vzhtzAX4>uf^F)>YR3}v}n@pAF2NT>emCG`~DTodamxeK0}(Izl8 zC|GNuSfh+WTN_1;&|Ka<>phIiH<2~!i#j#^gLyoRa~cp4Y0>yfdl31my_kW@cZO5H zc?kj|*R`)1t~A+eLhU(aJxF{0y^<2)ghKBH54wjGw1hmVGsPBuRo_;3x@Sq7 zn3~bWho7eT%0Dr%v)QAVA~>$uAOOJl)n>DzN39xWjvsngxWX;mOz_1_mjX$6PeX5} z=5yrLcGzCzGDqGVRcPGj{8qYok00#TfM?v>dtx?GE0Oy|`p%0LNOJnDtR z^~ooerIblUM>OA_Crxd(uOLk-0)LiF*Or+Ht+U(s>He=VIr$060V+%)^E_W<-LQ}_ zxTcE#8}0CW)!aQCIb$xa*ieI0D)mp1R@d)hE2oN;w)`AK^jwuim+#J$P|uEimlOre zy_U?0fO_@JL0#~8tfVA>_v73$J0s=F!z6p|VYBZc*)ZcS&Guk#pgfOvnOCIBV6Owk z#Ae}5jP4PhYEOReWfKb;&}2}qwxj#^xnJq$#(!+Qna%yutV;MIHd#uEfcJxdxRoFi zUm=sUN*ghB48h&ZholFj>R8cgv~84q#L4`Lg2C4RhdMQ4bas^@hf_MG2Ss zqgQ@HWimt?PUabr5e6cZxcts#Hs`(v(|`Svhu%NW?{en=de0ie2)|?-`i#1Jd7gBm zL$uO=cHE~Or!!{6Rjeyv?q0`-kEqe!mOTLWC;IgDvYS?=_d8jBNgecEAw(E_eDRvP z(%pT8P!hJMO+NY&(ZJD0g~cnP-WU)}gX^Ie>)o`3%wV0{y!3U`AroHVF)^Q}ST(M; z-1!O$d;4k#T28r$xj64DR;If8GXHpDYT#mpy2zC;0P*7t?AJ{8x8KVu;%R?DAOlJ> z*G}X(zjhneANvzYWko+bul_+?YIXt7u6;0Ty}kJSVAR~k4K|H*sV@ttm`7HNMswSh zk2GvG*{i0St(YQ}hrTVpVfC*k(du|zqqdG8BlXOwIe`ySK$c!;_uwOt+e&MRIqLop zQqZjRMw)|KqdCW0r=k*0-LRYezmvu;5z~FWb!|#I9-8{FG6TMT6i{)unnm%Y z+_Mf+-xvbcr`HxU$JHu*x6&2Gry)EF#gXw*0>ua z<_SOJvTmxpu9>`_% z5R5}I=$qO3pQZ`6?=rnUGJ%CfHt{`mZH2;EUcNwWim~^Jujiw6#ICcEL`5O`Ao6a(IM3Y@W z#L{QW!UXy(4FB9oTtmN)IA9C#c7C_7t|Ys%FuA?{(k#}I(U{KXTKd|Gq|Z~Q@crz_ z{2FU)mRm4DO=wd+%3PB8XD25(LUp1gPGOhSQ+lq$mL>6TRmxCb06$wSr_fU-!i+S- z}kC{PqrM7S_ecDT&;qc&5&ik|f1o@>Lhmz1T7K=pnpq5ci9 z99cDneNJ&PuBns$2iBf-UrW~al!H{w20$jzst&z9Yb-wW!s5}qQ#VH1qEFJU?G8d| ziWsmnVbDn9&-}~DooJ?=RzpbgS~q{x0`%aSb(Ueb%G_Bo|7Q7UyF zbdd>ri~z=&y5!}}(|s4~i7vntVI-1|9McwRz9F(LT+T~ruMAR&iR>Xi6U4TdQDsBA zbssj_yZ<=ZdFLu@)}-ivNS>F<2;*ARt)~8W0KP!K=n&B z99O0O+U@xdZpJh9kc|nnR}(FV)tW=hBb;(Ou(x4uU^&5hwTxtxt|kr+wdozip|1`m zESQ|IyUL7{x38E2RE(8%HYv=n5uR4eW! z%{>Jvk71j22%2qeqHw_Q?0Dse*Y>z6%2?)))Kd|Vgi*Cm#G3E^;Zj+I7dLCX;KQK} zX-$A{aeNPdUSX8zxpgoeSDej$bF+{B8$$x((0`7AMo`{ND*m^AScAlY`QjwEN-Pzn zi$#$X5!P2;45|M*Qo}>3sffAxoMpi2QnFl{dBeVh`9n4m6{w68yza96>4I9>2U z!5=)+t26DociDYD6a_nizW3qbt4mtHj^YxN;NgI;rbYW^fMkFS&B zn>w=|I87l)r?OV>iU%fGbO!ppH>_zKsX)P%E3(O1UeP_%{aQvdL96S-eA53@dk8Eu zW$GulnT+@c(z{`VH{l)N`CCenedZQAm_rH)J~TE&Mo5};7nNPXwi&P%jzpC6zfvjo z(XVVUciGHeOgV>oz8i@E%$qQ7H)JD)D=5T5O67Xe(ux_Gn_;ZdVMbb}DDWDQ+F2EG zciGk`-}6u(bq!~1k=bDCiM-a30~#sSeDOTc>AH+)pbv)({neHICGh~cvflNruFd%s z6%bYGcC3^i(CVXk&qT97i^znpaj)$=c~BM3(VjnK`4roK(MZfh9YiL~MUo=#p1D1? zZHktvLX=w%Br1YU?`SJTGt#q>NX=TmsiA`pT; zl0?{9VnkSK-3H#S^vbBb!normahf(5)jiv@+=IQlT5u z&S+X#-K`JR=U(!yy68fw*YWP|8cEyIh0bh_cD@}E1$NnPNp*4-ak1BCOL$e?0A+T< zY_iCKrjn!o27=)P?MeDnm@LottmyofX*(gs=@uWtF}18khG5z3EM(n;r>irLHM{=82VFBDhj5@ zz_~4}u+yqVF_=9GhBcB*g^`}4`|En^n{VMtIh{RO)EK5UB8#8Bxnc0a*d)Bx@_p5^ zs$0-B`w#&CKLEf0mzeT(Ul(ZmP*1IReQm5+Lg+^m4X3}UFlJZ#lwoI|LnkCnd_z&X zg;*v~Txm$&GYKoTLOcxl$FKmU>Cp?^P|P$tfqZ_OZp~>RXwe3iOCF`?y8;E-aZYyk z(?7b^)JT)8i0)^<-Rfnj#butr%kL1XUxkeb~c+q zJig1d=c;U7Y{t@EiDFxkq@RMct&UyuN=L{|R`x&iPC{!9JS%F2$q1?p$Ya)QxUpV@ z+~s`;4^HeL@2Wql4d2YxQmAmJVm6P?-_*zRfRmQFhk@881q(QLP}nx#{b6}d^t2R| zOqZ7kz?^G`eGdJVD2(X7aerIUR`&yow4Ftv{+Uh6~)moooAQVFHlRR{?KX=$iZGX#4F3WP1`L! zBgM?l`R%~AS=b=4*N`Gk0cWw&!8WLWZGWaOCA9r$WR`{lyHNa2Tva#8j&k8@)qx>& zo4VAv1P3aDbb-Hnb_OeUh5W$n?#$fD+2C|59DYk$>fp?7LbNoZ2Lgw$txT9ukTsRD zD|;7Dd|*IFTrqNcE|JdgN&Ap)xYfe-ZJ^IYr3B#L#mf}|&p<-iuC_H++a-&Ia5zQ{?F?Hgo4D4^}<}g zLe`2tRN;-~eqSZ{?t}eVh6yl*pEA2?3b{ea;&vq|*LtZIv4WTvwV~Z?jlPyx)H3I; zuJHbia5q`tavpp7UZ`nc*ISKfE$Ge~61p&Xf4O+D>|{R7Ubm1#7XQ4zGH?C^@cO;m4F>(cP)~qT7$cvvtf=}!Ut)5XCD{-ioy?6oYYDKbq^0WQB zoL8GQ>lxfansUAh@OSq#^5gPKDUCo>>&h92Z%aCuw9)4 ztuHtN-Nj>F>S1;inoL!-AMEW+FfVPZwOzm(ixY`$BvA&g>_&;za{EdhjXq8 z2N&)_vv}*sGve|@2y^atxy5ZGpxyhct}qie4{}BqCK90+beE&GiJwq56E$-LzvhN6 z!AQ+Ivmx)|v`~J_s{YcVu^vZejF$_A>nx$OV>Y^;xhkOb4+PdnOGz9@!8yTUzh0E+ zC4=)t81AN^Qj<+fFzur-g#bd&=k=ic-8Ku-d0dDB~KinLntTF2f(024KecZm-n$7&&1jsO*0F4EFS`jhFY$Ht zuB3Zf9TcY_otNM(|7nA(o0>z=Mha(cMt`h_u{Jt!XC~tf7-3Ry=mQgoNs~nt5R&V? z1fguKeeKhLEHBJuG&4C?7R!PP#hzO*$Q_8p8CTYP(LEI@0%DLrZ>r{8*iCJ`I=#!S z=TIx2lu7}0ryl3ntm#r-h5aUv|w&GxBLa18RI&ylsuB zVlF;N^!g|Uwz_dI70D&2Kk6~>Af%TkB3}Zid}M(`_!f(nbewWo$8FFo2kEQw?qZP% zD2upZje-Np&k+E{wHSJl(54P*R;XyOYLX{@jFhjpFnqe#zhv?gbq8Te%opG^=_R40@!ey0No%OaEW&9m5PDtKbW4|t4Iz!{Bc#w~m zq!L}{ZGU=j;`3?ucqoPh;BFBBLL0tBo<9txtkdRvzVTo+FigWyEIXj1V&3=H!1zmu zJqz_$Si{0g`9bJ7A8PnTlD?0Wzzw;tI55AN&o!^N);H z#-pfci0;e^E=%&{o2Pa0G7>KAn3g2#eTzXq{ zW+O3Z!-xoZvm7pX2$hbU(^1$#ggN>cb+!=IQG2lEM=lXzlVI61xGsaVDL{{~DmRX` zKSJN(4Vj^|2;qFI0_HmV#o(3hFD~r+gaW*3da)GG=>6Aq6c&t zWq9;Yqra217%2*x`1<#hYVG1OrKt$2B@7?y%~&*r14&jY9DoR4K0Dh7v$(vawDA4? zw>Ehb!P&hzgC^K@>CI0X*uY*^hY%Q;^sKNHMDzpxsqB+?nx*~+V}A=ER17pH(`z zg{FcwSd&$i zbq&saD3CrfBREC2HSz@6*5pF#bcLrHO?u6sj;p>lvYMI$i0o~m-l^1E)A)#Wz6Now zPCW0}SxrSVja?}zjmew+aXn?kaNWe{isuN1Ftc7iXdW{JyYmx#@sp?~<>WG>?R#le z20z*39mg;xwsAV${F;OabzF8YmT4?wEb`qC0ESwguUSqy-e{HB#rfwmV}gkGajV?? zSa^BR`dTN~6YQ{nQYs)_o(54ee=E^qLF#Y58w{RfNxG3u{ znc-i1>JxDzUkmKnXhM;Z5DPll&WRfIG#|stgaRBtIhAMlk1X)QxtIJh zKB*}Qu!hnNwyGn0ptz0(mhn^94YH8f9wf2`FNK~8wANj7+_5*OO4gv7k12@8^4)O@`C zsYg6mpJ%}c?WP*7hsrc91KCf9_bwu4>%${k=0cr%BL@swJ_@s(f6lXF196 z(ko#>S*WMyOj39!$3c}+ZbYUb(!rE5Z31vJ?F}IYwaO;F6K0~O#kPsX)u=1o3yK^Z zsV3JiN<)2R#FBO0KZ;L0sMR!7RdKU=&5iAgp8d$(1MZ*T2)B%4gD)Z_<2#{~hshnmRUe#ruaRD=i#$xV)|6oXXIgsU zq%dFX>G)&AC#Jc3y4;!JX_o8*1ecpg}pY?0;hj)FvV#jn-$g0J>}@ zuk-rM`Z;mVPq|ZvNviHc%OEXHm`7z65sI&Vfl&*mO$5yv9V`^1Pip3jwXDTxwqM!7P6@NXJutfD)t@ zfv26c!9Hn(xpTB;AKmoM$E9T3-%e-+hTyFvRWVHeV$qSBrCQa!iLykNzwR)P7|Z(m zk3uC{KRIU>?opY<;T^#YmvUCOPrKO`xWC7GZ}UK&<7qe>iW~;lgy&41_8~N?Y00kZ zVSh2`B2r@1X?Qk2e`myfpUQ8-tA zfs?ytc?&ToCGOEl{%(j7T4*2K!6-IFDInJuf}raaFYRDfkU~_jjoYK$l+O_PHU~n% zlJI$n*3cEB1%hW!*59uT9DaeGoiAlwdiA~kdMV0Pc^;y{q;gjDWuY(^<9Xo5m&!1c ziVU_$Px0xk>emVDyu8wO$^o=B%F`86K9K)qGanvnfJEK79} zA<00V@rQ|Wc-!QT28k^s*jpRzGS|E|5rmv2O>P-#V1+EdPRl`gHgb(i?NvK`%89-~ zmTrM~oN1^2GXot|6u!o7sqENw1f#RT)$L*dBSOH!bQUWzePN3n$T{cnPi(FkhG&DB_0bAk;atG zlToyp<;DXUb|TB03Soi7qfH-K$Lb$r!@EdTh2+Cz*pf%Wsm2z3Re8#W^3n}EdYTKY zE*k&2)NK0=QrsdQ7Lklfmp7KE;N^?MW;WQFmWU#c6G#B5g?8#!7^`8JV4!_P!ZSbSrixvPZv^#QAtK{qau~n zxU)hsvy4IHFvX^ONsc$^T0>#4D`Yr+7mT$9Ojtw~l)nn;GGtVtf$>QazdzqU0IHO` zAiWX!^l(%9p%pszkrSluoIKtgm^4|6PtD0kQaPj`Auv!$6SV)Hgq_JM5IB+}e?lki#yRd{kONTv*k8EU ze}RVt8zp)s_2IZttG@0gLt%>8?#pDZVI&G}vJ&7z66I)3TU{qrV~7!C(dlzFr013; zQXL8Wv^tn#lw4rNesh_&1mJ7{A&**3jrQEvh}IlLujgU%32zFRqbx`o=7ZV@AP(kx zWCxZ!nF(7_7|<&t^qh*|ePx+6N{)qJjn|U3vlamR*;P%%LVqy|P$sgZrQyZ2>_Q_c zxdwF{vgS&MaSe&_3pvw-dSN`+_;P#8LsNTM;F+)b+akSc}d(hs%!93H%oDoS^C@IME{h3 zn+l;=23^W$#_4qCQY~z6zV!P+XJ1qI@fEEZoJBpvEGwEutK=2v2+bZ@thN(*m<**p zihr5i@LXz@QMPTS?RROR)gO0>azZ2VZ$}ooc1G%CcgEWj6oyF3*DeK+Y>Vb*%8uo# zXwxYgf9|5W`y^MAZ$|CK<}(QmcbU7`GB$oGe#AxCIvqnHQ7Y2d&M;fe9}S`vyJR#N z6dM0m6_PHZ)(`+SfcO%kxIowsc(VZ3X&64`IPr1t6it{`H6Ei#xkn?^(>7aRK8dGc z$m?XZZp%B$p*3m$qSNxL(Nk4~=L%0E15s2!TJ2yQ)jTTyrqsfQw13j)X@oZ0h&(LUn@k=CM@jPB1r{XHW1eHb<` z9pHDCHx@?JRTAP?jgUxvWn}Xdcx@DRwtIzYHLdn17WvP_M=m8dCh=lXgJdq*d3PGP zJomsXiHd_9E-uDtk#9P(O@Q>W4Pi)Zgns2b)yP91JbQzhB6qm$+0V z?p<4s*4Yx*pzg+kHsM!2ia?rp&dyozUm~#y?{AHAq(E}+&P;@+Kr(Q)8WNf_3$lh{ zU_qQzeMbatd11`zw+j7qDFh~sB#Yaq`{8TZKuji%vu2;u_yyfRgSpD=`%FD1!v6D@w(!H>09+YFZ?JXKKi`2<6>_hw^wx6i}7ytBU zS1kZZ{<1*52ygmn@ zu`qPpD-chIQ02JueSnAQhtZdL($#fM-NmBL(fzSG%`t*{9s=M>xc==86T>Iqct_e| z>I?LCp5-u$lBT36$t9{JRU#TF^rCCrA5|?L)Gj52ceMJE_wiX80BD^yP}{+MMU)Wb zuS#fv#Q*o0Y^sJ@vk68<4V%$E{24W6RdQT1dS)!fM#NaC=w2PHYxFC}Ht0&CdS_*% z0%z|kQ*}5??g#}7eS>aSG2T}-2vfTGQ^kr{c(rcE=2uNTqA$f;qVwWwusisGE>aMd1<3ajA(P(gA_zQ(+GnM)Do#LNZo>kA49qX@VfE zLm(>t)K42R8}2lJh8Cprj-3>YPygC-(41#&fLzjiR|@JTh1!{9(wkA*@q15n<#hlno^jAF;DTbdY2)r(C0@FaA$m8J*pNFQfzCy^NvM#9E%TkRt^ z{rUMg1tAsJ>W!S_cBp&lkKBuwj%;E zH6ZrpwU2l6cKpFTJVb}xIiBA_0swFzuNj;c-*o#NEAMW3lx5%z^C`n#G01|}yLPoz z_zCJ9sQC5^pIyP*y^i^cHZ0T%4gOkxS&H5zpDome>j>)%-KYrHi5V`d()VDP1mTnj z6+}dYZ#dWELIVEO<2HCf-b$sAfG01|-l+NHIO*g9f}l#lu+rQ3zMXK=WylxHtd@n_ zaB6oEAuTnn6#)up<#~K*_p_!VYwn70h>Kj)LAvCrrUvV6Xkt{{@AzBx z)7!kPtL++p1yKcgDS8)lC=u7|8~F$#tpj~4x5Nler;~hTp4>;bCNo^mz2CHz87-gZ7~B7_(y@}0NqGfMKYjrp0Nj_X!u2n~ zg09Vulh<~@woX(VA|#*{HO69=3v@2~6d$ew)Fe@*?e2GnAw!l|5AsEkaU!qyMaOiP zWZZ7Dy_dICMfJQr8#)-t%ic|H^gsgky8CYR1A0m6M`k4&`!OJ_Pd z@M&LEBSE~gjFQ{t-57zye4A9T#PoIef$gs!J;SJB3ZFb#M_X5EM0qldOzaEwa?$C! zeeAsi?Lh?H=j*D2@pn`Cr$$>_5W%JWwJcWwiQ1#DR;|sa;eWCk;xQII?zpRA5_Fk4 z-|L1NsX;8njybiOuJ&P^$KR(A|H7--Nei8-@GUz!ai`6+qMke@KVJ$}iJ2&}tOQM~ zf7CKI{^_VRdEv4G65oVtb#P%_;!$?oX6L7(wyQm*WDFPCFACEMD~L>Z=c(|-xCYeQ5GC*4@)Uki=&km8 zsKoR;!CG4qF6Cx98m$NRg`QC+qbNnH_h)aq#N?Z$eA=PaZkGWZv|B+RH7c7e3C*EE z9>`~aWvOXfi1mJeO|1pMsrXCmT6>Tq3kM@4D~CiwmVbXRq68vyQp_FVfX+4z>o`y< z<_P~*iPH5K2y#V!5+OGogJ;QJy>$66>_vXB0-nnBUteEMOD)p6$Yn8kKq(`Ue7W8B z_I$Chx6HDiWp@c`Lx)AO;-N}9X7;$u^ipmdW1NhBL5M{5o%s>bFu%o~d3HE&cErdPG$8RcgE3Ce^im*EF)P~4P!e(QB@X&m`a;jp$1L=-RAo-Ey; zIQbzkij@VVL7@EQ|6el|-)Fr4oOtneiLx$l4hq=I6Aq-UC$$QCDb^YsJpof2E++Gy z7$?e9un{)C*@%XcM3v`s8;^wg`t@0hVQY15b0d3_B&+NNqWAYEl4>~FZ%|b=^L z9+Jh7_^2zTs~+2@@(JX1^~NiT{4TQ93IDJ9ubdk={#$6t+hHVkl%K4_5UJ=zyH#$I z0CTQz`aDEq{mKp_|H%U*Mg5t)LaM)e43(0kmZ?^S?>F5k-NmX<3upbib3EM zxJ?>g8rHX*ICB{GRDvJ@Y=(rbcuvjG%Fkzxh$(Q4UHxcsd>4c2TC5x$Dozu z=(*pfU8*plqOy`cOwB)2!H^OEcSXt{fq&A^5#gvrfH#fIjmflYP32ef8vKNzqB<`E zm(R`@>F0QnX>TgXG6knPP>)a5^I=c~gs zs`ELbXMWxb#7)B_^f=VOr0?PNbiyY~h@8qhsA!z=CN&>1%nyPUe3x=w7V}}?Jf)W} zO{6Tq!s2>%0L+U!TxggDM{&-0la-Cp5w>*DVw=Ckx~ik_r{IQgvzgC z+2=v>l}xWJO}(I|n(@Pc!y9gz4D#9D_MOOlcTt}&8~sm|-{qb{vR|W91Tbq{u{1fv zvEL#@C$PGOsupk2@Dng=C&Hz9W+D4~&4#SmTX2`uC0vzC<0AF7VG>{NA?a)y3TbeT zx+1V&#Rm*9h9rD9vzOE4rJ|dXCr&{d@gGNs1~C;nbWA0&PQ{06S}mZENK%ty1fhtj zyCHOmN+%44p|jXVM@2Re-1r^WQ=w|$D9mt*}aR9Kpy^k)) z2=LJ#L_n8b@^ifR^#H4B-D?{I=N<7PRiJa|J(pIi9iaJmze_YXyBs=O4e2UhayHiu zL0#qOifjFsf!8>@MNeWZ$hBi>KbP9*kj<}yL*ML6;ILK1Ns{hrNT%YjmW*-O^ktbF z`(xT)he@GprqORns)K{U1f@cnG_ud@v=#LM&G_Hx4`-DaUBA+CaAI*5NO^+sf04k* z{@j>;{M~h(ds?~TEv6^TR<0r`tM<7k4L_nP&1hw^T$MH~f>-kqHwaY0Fs$YS4Cx{4 zm{a5_>KeV`WIvVCOmaQP+F210rwXnms;W}S*{Y_&2I;j8CNlPUBkuAS3fS_Z`gbe2 zHc;bE-p|L;%Lhr*vU3}@hbOAmTFqv}75V6@9>Tb(p z$4a$a!-Ln}(lFl%I{r z`64nlfmS4uDG1GDD{B@}+*GsA*CyOr^%++%kB;YUMMX(f!Lq7ouV(~?;V^w)FTzby zKHnx*+sE(-Tjnd!(GagicGzuV^xl7rD{R<%g#FN#2Ctfq?$F|x8#s38Mlv=QtR=yW zT_?OSLp01D`mU;vXw>BWdWbj^IoFgFWIFCkK=;Yb^lQ;_;j0{m5KPpLd@SU_j=^Yt z*$`-M#thS>fK6@tV#WdzK8PQ(!Q_C2bq_cF#x2^);-u4gezdPL`wPpUe5*4HvGjYJ;%@gBW$qFq!nX1oU`W&9(Hl)% z#h&}%vI%-HDuuX{-BsWZ?HPhu2$IMxH&5IiDN~xyQV!w$PQtHd;jy#eTCx1b^dS9) zvUtv5nEUAmEovLu91ehV^8G&6Nho7hLsI35lC4!(MQ=Ffx}Fg4g@@9biq^~V!V}ff zHD<}S7Mi72{L$u=B=&|o2^k~B-Ney?1JgVnaEIW%eE_r{M3>Kl>Ybu6?U-=|P?LW< zWUqk6x z3VLl&w=^Ty4uL45uL3b?OEO7enrlgA$Qka-p-0G`Eqq7=j^9C;z=YPjQpwIOe;{id z=90E>!p`m}a|{ev648F4^FPKG)>)j@M@8b?gMEA7tSEPj*xW)yQ|?E%cD)czQeqk* zn6*0`;-eol`O`4ECs}Pfl3`q1$v?SQSlW02F224#=YyZox9UmO(d* zkLjOh+{2l&g&W7&jlJaz%F%1ek*Dql?&@F zje0+MN8ZZuJDCFZUWV8+#vIq{LmCKJh7b_UrJ;QCkG6a1a(-oD@Uz?TcN*R(?;TJ0 zsgccf@USlVVY`aqrRlKKR&D$$I)V$=ux}GArlbd6GHEhiei-I2&ugAva+NTAe(PL`UPUz~@X+B{p^A*nHP`ua{+%jXhc z2+{L!VDmn11&zkxtkkB&#z~(CA7~iXmN$oDI3=xGuc+AYBT$fZ%858~1$^V6`}d-4 zEAcm3bq>}&vj@$5*p-S=Nx*Es)#|(Dez7^jIY_k8=GR-~DoshR;qSr4j9DK(ICqxG zPUL(pA>pNlT`515u|TQ?GEGuczpxor%3s}K064_{O`1JVlt0v0t*7lgA9-j8bvgyi zhO)UrDKbyCzdwhvLw9H1;;9W|mVs0Y3%QbxkF%~-l??)>C;Z7wzWDzgx{oP-!QStU zh;TS>6!91-lbt7ogDb5>!AA;(Wz5!kKE9iY?oiR&_0=L1$>^`(ZI%rYuMpU%3xQ{M zf8i>fhc>rF)T4xk@;WX>AoY7}&Gz~OR!OOot*o^-iSAb73n16c)y&KXs?w&#}8)#ts|^68dGQE<|Ytt}q@ zqJoZ2|G^hwRDS)m*6nT#ERg=1!Og3Iu^18O)VpDOP*8d2e{}ZaWdZ(;QwU9svAxp& zh6kn ziVAb>uk<;HP74l43MYUt1N5sWbDeAJrm$%&7}ZY;>5v>sRnX@N?gS8;8Hg=woL1(+ z&DVbTKF^0W+Li)vPs2qiA)O1MG%N&{XysHA zD5eR|IzGs#4qE3PnvwaPRM=b2!;ldORcdJYTh4B>cb|$9$&V3usQJvdzj51R1;QU0 zJR{HJeih_;1f+|r`UTgZ2>G{5x-n8y!#L;Lq&6gIJ|p2(-_llEuv1s`MBm!X3m_V? z!*a9nZ!A?=>UQlmEe&7A|5;VTnz|Z#*CLQGf`eN%ULd7BpP~f4X_gTH74X;JL?bBs z@2EcQLwRz@=MM&Zzi<%rv?Pm@w(dJ8a`ivbe&uEotxBA;E=pz~I&%)(TA=5k~DfeU>!mqFh;e5OnWv_met#S=8#7K zaSN(siRYghma=s;9@^xZfdE^l z!Zwfn*i2hOe5oexS~X0W?#f2tQMPNo!Gu)8UEK%RN^iq6Xe^JG8a5}o2DC?j9Rn(N zz3VL2T4CrZR;ta4&%j!VF?hMb)9x`-r~&e?GVI4Yf{c0{H9i94+t&sp*Gq&@ZQe!FgY;J!Q!TC zaVJJ~6SNe*<)o&g@#RKIN-+>RR7E;X?WUil7w_Fe&Qr_SO~WFZU`cBckg}aw2`Vpm zAVonf27Jzn<;?Vn;uS>e+y1H|9h^qFLLcW#<~#8#u`yh=jz~yDRfN)fP2{MYVMZD=>F7KQQ?7zZFx^H2`v| zkH*gY*WsqssAqd?h)xr|d|;mw85;BoR%BYX2|!)YdWZrF@6H(ou;xWND9U(E2Dty@ z6W3MBYHwaASh#sA*v|S+QBM|pOcvo5fpl6p7Qf+BE7MydH7sI9fIJ3Bxuw|(^az?S zN$4Mh@anlCdGQ1i)`|HcV*(ArAmctds1cemFx8f-t-M_beE>M$YZFltObd>aJ=cu1as7q*$gwV$bj9+tcZW@1&)l=aWcLrkh#79UmU zk<9OySV2;+6Z4Ik0AVv0XK${a=4JRJi9S^+aeXKhZF`o-sRuPT;Hn#P3dJ58P!CS~ zb>OphgmUlV*s+c}3=mD>*ZT0Mn@x$8K={c#Qrx6a5M1G>pB$pR6?RRHXSB~h)v+#9usN34{iK=V`;Yok`skIBase;GzQ1wp^5qN}cBexB-D9PO0}@QGRaL;NrRSv&3W*5`NGw3Z5++&}O56hh6=4(Jw4GJDlsiVj!Qcs{ zN$TkrEgtkb6WuWu!o#?#S?3$J-3e@7gSKWNxmqj zc%+`RaB?DpqaJX^%Suv`3O1{ep!Ad%oC9p8y);_U%i8}49c0VPM4k$xfu3HY^Q?sR zf0D+R27_RAMYd#gF=n38!Hz9gsY!pTYMnPZM>#}8P$ZMBP|FU*^)9o^2TMH4$)U2LH17=5q6?;6;~dOT zKK!lOkz32iz-uEZkfMY;Z&Ze%t^@Ys+O%3T5|PcGKmDpdJ3=}18DJoH11rOIurWl- zgXS5WJtBd&+|g|l>|qL(RI3v_jd2j{;b%EsW=W^(4+cmfK zRLajQAcSX6cdR>!VQJg+8Q()|d|jr~7Y!)eIu8yq5}yY(U^p>@``1nN@Jf$phPJO6 z=iePyFl9B>J6gX9JeVrniYl=T4V|2PNQqe;9ahT7CsnZpYLtR=aa!C^nv1J?T0GTw zs^475VZC}rtA(Fdysuqe#_Yl~M`MMY;1?avx#zcGKUa!#(OF>e_*(spGy*VI*Hou377KFqxyUf2GMVSm0nm$K{rID&P`>~@rF|kJ(@J73V2EnN8ln4^BxY$2ptM^jr{dqA5$jjD$qBEGb4 z8`XSB0(+cyF_5|X{r+B?fJG~a$!0DOo^k`|&t}VX}TFVnO5|azK z4o9De^Vv@ch|@^DmW;uJ=o5_S4Y7DF!mNg5Z-S_<_en3?>c=qAx2>;+h8BQCW+>UacJ%K_VuF|?h;W2qTMaD;!{LvV5O(?>ADa67qryQf#jG7Ug60e- z+4dNhLB;t)_)|?0Hivq2H?)KvsT#2we%3ubPvW=PYxYkUT84IkJF*yknobNNB$QPi zNdf~zk&YkTMXd?>Vxwbs2=7nvM9X_ilG=YIX>a!DMObBIUl%tT;+SLMLrrB^tRUwx z*#aW=>rLNy1+_GQS0Y<;ayA1{JawfQfZbARA^9Qxcl*Bg->reyd5TkJmns&}A07a^ zxvUkS6-^wW*oqT7VrQQ5Kw>GonF33jWp%BRtq9uhTvztMUN-#p}E8JdyC#U0?|)ZvwT@+ zqNll7sl+>s2UH#~$(oia{CFO>|36FV|K_PIpaz?C#JKnExe~Ysxkq~bDpA66Pc{td z8$Ks6<@VKtO)?Jo7}6!XVhCULm0;NclAs}8QCG&u^&yPCY$;Ya{Q|*);ijN|YukVY zkN>`7cdn=^8N=D{AN=DY{DEfa^{5$c*3N5{)7SCkVe^*KOrccxD7d@~=#>46a(R-Y zbc!oL>&GGl{7el=Yu^JovrkmnIct=^5ZT}6)iIT~(ho=+3W_Nmp>NqW*|}V|s!v?B zVi+J_8S47yPhWW9j%4M#?rC9#?bmuYlETL$f@&GQz|$)kxW(>KAt`a_s@)8CGB3!a z9R_k*j_EZAy8Je8VTGLco-cqLyP*`}d5vggzXUG5_GiSo5z5vGe%WP(X-lc!-d9tw z!zgP;b5Ju>?VqwM5(xc~S)rJ06}TJGJg>apGICTHs(B2c_TlR|h&Wbk;m!?Sk)j0a z(l2r>6vK3%%`VhOm+Ds#%!0wf$wK!{P1o>a8nIAc7rqbPL&^LP(8xrFwWDSXxU>7d z0;tv#Q~0YzGgiSVmK@IjmQz5y~4?tG$HWQ*u*4?KdQJ=s zry+fhQtZ&tc!!7YWeMaYYU^cuse2!Myp*fVSwO;peHucJZo3Y>?O^38|CLn0_75T# zw_M0EjT(zQef)MEAZyvtT;!2^eC8F=EZNiicDp!BuZzvB?f;5-mw?Gm&HVomm$djVhA!9w{tUA z4gnSxG|Q+5mQ=&3o!@KhjVqxAwJ)~{ys8}x#6PE}zitr35K;gkF^#ef)Ja}@DHbvc zy=KrMvldg|n5##*Gx=19Nxu1^R22vsSwxY%R7EzI?UkWnCwja02CVyvTr?^F&O8I< z2pBH6XtMsq{PM;VXZpJ>9k2Pv-dGrfF4Bl<*5qbWPGdL?|3}^^|SstcUV_Vsk+~4S(?j4u`HfG|3QtndHmpo5Ij-{nv)EM}QK?R3iiXn7hS0 zlxjE7;z+-%V0mf|nK%OV6@jIzxsDw9hcZ5@EzB93HY;^TtXEnY+CW6Ufg%AFfN4I} z85$wta0QoHCU}767uWhZwC*3x8pQ)5f*!A{ zv_j!8z@pbzi{LlpB#vnes@hvp=4FtDUNkmLaF_f3-Y)G*04f)eG%NbBjRIiAx^gy@ zZSq@qm)&K#&;qHq>p$(;@pnfbM+3)#^?3dJchCf;1xzxJ>g1kicrozFW|2>jsxLKO z?RrHMyYM+%EhhU!tJuSADTD{ztle)(^83XlS_i}btni?OXv6PK-n}~vU(ZdUVR}a5@LE|iRHfZ| z!>q&{E-{bJu~>8gv*~PKo4lPA#Dq!Q#WEV$_6!4x#lVPS&oKGjaog&!K=?3*Xl?#E07U_itPW;&~RnKxJ zz9RN7IRWB)7m0mfnB{X|Q+R++kX3fMb|bn#QIFl-^n!WCGVK@Qz9W4ptBl9yh}D~*_NIq zdv&*l)I-AAZH|FS8SVUxOS#BjpU`mgr9nP*4RV2*5iMc+S1>;(OR(P#G~8cE>@4sH zR%;_cZHCDjCK{Dk_n(!yKtC#J99I{Hcu{>@fJyJZeZa4WLm5OrjQ4Zz(l{3vY(stY zNvK#vLid9jEO=+o0ARD)K60M2PAdg_ zre5p-DfT+6+VsFg+hPl>t-TN3C_#wE9(GPqi&L{SP7;IdEj#GBAk5k!Xj0jef9 zAH~|Oi2{^fn|2V}q^cXb-C8;0*+O>c*RZEz(+eepf+L^?$)_43+a64F6xMhmLF*NK z0nVwv!%3MPxXkmpiwoO(A(P!{pY+``R>>wrZrN21z&BJ6gm|OI0VY1jpFyRyqYdiS z^P5$G+-@SCP8*SA3l?M)t!gP#o4rUA6y(`k+ODwv_H3lsGUo zmw#&0c-DKlC=x99z_+W@anAhvzcL1`?QRN}4a9W@@*bJ}>BfNyg^#(%g1zK;it|9` zFTx_roly<0Y{L-{=bu++hAORlr94@un2V%GYbSu?&VX(WpgG7IY$9(5x7N9H7(?hA zsAh$TBjZBEH&lY8JJs@)rH>`w%FyoI#s+pDXP%Wv?Gt^#-}u_q>mR^J06uhGE*n=4 z<^?BMKnPRQbmdY;n)Gtu6t$_IsK*vWjj8Z-aUbpb2K;GJR_#+r_jF}SiUOPtNvBUt zY$m3;bsIp#*NbpX;`R=AUH28(44n=Wja=e`>6iJwlnZJ_6Vg;LH86Z}pm!kDRhJh{ zN9o5X;9admJhGsO@?l{TU?lY^^b;Hk2(YczObIH5gN2C%ael8xddK`Ui8B8Dc=DgI z2j4ia;kQoR5Udf2Fiqw1Ijct-Rm9p1q2Me}`qS5a)`kGP4akvQa+n6YV=`&O*g6f6y$Nd8mCtKBo`!tHj@9>l+D}8 zS3Ypu$!UzIash~qvoEJgHgSgfX&=QWxDQYkFTb(1icYcY=qH8EKKgpExB>E2Ow=mv zxAzFeD1YE8zC4H#eXUr&3b_tVWRmof*U@Ai90Ae9j)EB z>_}xe0a_Y0>AZL?qB(myp-h@E*M2`7h1e!cVfo2PZu43dY<h0 zI`nNIiQLaBS2pWuD~`^f*mtt*l0(6YN*ukoZRKd-S`pYnZEc5Bhf5fgG7XiFnDB{y z!1kU;(!e4d1%b%hw}S14&ob=sH?^`QwUytIWpliL6R==Wd)|`#X$qheBw3o|{;oEJ zcRNNEEtvbEM!^dvmT5?;t|{vdlKQ&4CI2tdgE}4Q|~e0GOC|&``**0 z$X@%eqy|VAcOUOBAE6nDWmM7pAGZ|9FrihE`BMt5*yXz$l$(f%3*K=!vF2uEzdt3V zl%;{oyv38vmD}eO{H!2Zq*PLu&61_7x)#QQB+$doGcDZ1c~DQppW z)x%#HMWN(*RW`EV*u2(#a&(zdE_sC?iu{*WloFSQeM3#@iXQ=^A5MKWKatUczQ{PyQ)gwb~{HAf9y&*0*` zD(3PEj{h!Ar3?SeTf2t}CGQn2ICj~8&BZpLd5s@-rtd+FFQLt_!qWY`2<`3;RKQ8u z8@>I`=N@>FiF8c$4Ims1x7)~V{5 zHagk|pD)Qq?7|KAi=EW_@lM;K7H$R{7q z328fDu?*1s>88ZF>eybp>81#0guSWXq%)M7)!Y7ae$=?{%YZhbHQ+UXag`~^RkiAY zxvuNRt{O=A!9x`NTlcmhuX_r@^vCMNVpn_5@mu`uf{DD*iayMJv(uGxBdqf>pMyoF zR6up&=8e3rC_-%OdLi+`EblF_?XU$!N&>+x<@Av6#3Ni3nqfEGS*~S$R>YelTi`@5 zeJnyUGI?+t0J zBL-x?e^~bV{%FKQu|rW&eFa!8&hWFxu??^fz1O`)54@7PE4lTz&AnFVkq?E$2FJE8 zzer+_?=X7wmV_3*Kh%ZBU00pL765_!yb*01+6OI@DQ1B(hwwoSf*6KhXHA7mQ(LGW z1{c*-|I-|vVRHf#TtED!pK$ao(YM(}J6`ZFii1XF1LyN1zuU@60RGkzb zB0jXkQ+pO2@l=8!c;rNp(T$vTWUM6RE|rw(-Fj9w0D?faR(Y|dZt-okDq9)||A+GT ziEScyG4F`p>-}D@)gC+^6C|AY;L4I#E7Xr?ECy$^E#niElQHT*d#gG8q3BVr^Q|&l zRcGz5QiAw4vgTD~=PR~!wKz|y!pf`}zY>pL;CzeI`%>rI1h$C8Y0SJ-9 zj)nUt34e+*h-Z+HSUl*TF~%JOHgkW-6mY)~rkP;5k#xtE=Jq01)Ok+@xIRpb@WOFi zbNH1wOx$L@;}ki7Gc>+Byvfl{Yho_a05V7!F4eT15jZOVG-+8vEHGExOq+!)MNii* ziaGEO2Pljb^qWOqP4U4!rr$3ah~ zf)m&$UU=~{5P16#pgt-xdwe1FENpj^3xh-eS&`=xYRHOb?QH1ql^&IpbRwM*rY$otFd}-BSQQay$$1Pc z)?~7!A@v{qRM7R&1M7HU^eX&3RPlEk4$cAhxCXR;w% z%u9O_WebZfMPmfBXq87|hzhGPPvbnU*kobZJGX4HDd%fiB2~1?fN03HGn`6^v|Tx` zAnw=peeYy{`2n&%lD338bNCP0PbH(1>K`epThTBMg`+9kc>cVIPiL zLsL%hEUdX*$?zt$Pq5{nRomcl6N~sWl*E6T4}%|>-#OQZfdNs-g-N(JX{I=N`nllp zCuVwYfZ8lVtg{k^qO(QK!+1M}yy^9}{j5ZaioZ*J;mj04k_JmF4(!pY~!iX``{uOaB=AsFCXgH zl{d7{O_OVo{{4(M9jsmQ_of%zrrOBjzJu^*H6=;D(5U~+{Y&rLkNLGkp-6-=nJh6) zHrb~+QnB>G)E0r_3Ya~IxbBLYHEQ+F#8CuJf;7RHkA_f)u?&^7qv?O=TLvnIaTOn| zMmtj2Pnkn8Se}3K0Ba2&sQ)bS4iwFP%PI2M%r8JQ`)#chUO)WajUBf6JTS!GDbi#6 z9!YG4eECu!!DsZ7(P_7%yD?gack-f)%rI9~mTYWm!k>pqT*rxW99?|mWRG}YHQThxQ zqi;UTqh(T+q!y3Sx)vx4BhNO+&5wt}>267?ToX^OaryNA1XD7w|7Zfv3FDP5sE|#+ z$Bb7~IN(fC1jpwKyQVYc!588F-hf(9o5d@~w zCQjR~fY#X_i0|8ti^Zs>$McA&Q8tW_({&9VMmjG%;xL#zyJQCO3JmH34#+$E+#%Uu z&r=`;fi@Q0#=%BihSjv5Lj@czm;J zEbw#PztFE+vUyY|ESyQ?p=E6nxVxF5(M7vwObt#*J6v&rk`h#c=K0=%ELzl1jRCee zi&oWMD}Ml9v3w^G&xeBx-N-=iI-QFq3e`76+&H&QsmzfCs^ofXD9CyORbiI7xC$5w zdo5rT#RlYg^sitVxmq5OK!2>JHDU*cah7qc>(a<&KNa?wNl@~7@EXnnPofB04`q4I z=_Zw3O({(TKS#Qz zNcfsff5$iyEGypW0kg~{N08oJOvr!0o&Cwl4W`cTQFX{L2Mwj0z!~_<=)35x<`9_h zi37W6>qN^MZtV`w&z!Sqc|yngX0Ih;3@d9)g}W@c0;?_Gx%og){Jii&dPN?y_gOl( zENRi~auNk5#btFCi&?}y^~(TL%L<--V}`1V+_WA}xePlq*477}D7dPNDt1)O;N~EX zYeT{tbo*>l#mRj*k_kDUxIk0uf*&t3K+>)~D?}->RWTIU;L~@~K~mFDk;Ed`#Xzg8 z+g=)4=-OvgTgm#Zw7)K!AOF1DbU;z2+UCxw>g~ctkbiaZhIHumn8r2=@V6=)22+q1 zLbC5vp!mKFg7BW%Uj9fbGej=U(u;P_2>tH3bB%`;SA%3W1T5u+E329t1e?~k;SJbl z$9~4D%?E32tJ1mxM=uf4s=NIs6y#r%H5}96r^9;a0L9qM-m__@@a=N5$C$_Tw5Cbt z_MM12o<=}XI&(4FRfcJuAeiO4Uz#W2ESZ@8)hn_hF{o}x^*2e>*S0M9If2?rKXCK( zyx@apu^kSmVA?<6oF3m#7}JMzkn}bY-^MhI{9E_r7p`pYXl~BPwH2-H4Ff{W+yvzL z;~ewQ-1Q*YY72Key2Yt-3c;2Id?wnt%zF2MnR>`azp8r$rUlpaXf^81;2MizszY^NJ z*gtR4Y^NbY$R5%zar+^&P>*qyd{O9Quai)=L#rQ z>rcL#LGlo7s`@{mV9212c@sqrR#!CPXGrd2%DH3*+pHbKl37J#Pxs~ag*)`gY?>@j zdxNOIa;jqxd~UG3}_M5c#h zda*Y&QYi$tTBTZCFv261()Uk3AXXhV{3!c?+sYKf*E3`f7pXFr%_r)l+i~Gbv2 z>;eJL&q80ELbX6SD{@3}0BK&MYbNLWAtdnT5N+4g_4skcl!oXyp z$UT)(<_*=PPx$BVa8BgE4H4#f4kPER{MhaHWY({>OJSM(^uq495^Rmc%v$|Z#p&o= zP#Oatp$T9@{nO#RP?~wOtYbarbpwYesqntE{~$sK*G%qesJL9``bfZ~Fo;iB{UIWi=+D0C1yJ#-&$nr<*!;8hq zNa0;XD#;}q0BlxZzNcR~r@gIOTPb)xBJsnx51YuvFoOZJp?#wTx}+rnopnJ^p+*nT zcLr)C33HuGmGP>Kz>EjuW)2>Mg(b+jtn+;)YTiKWgR(-!I*BNOtN(75kXP*?B+;f5rx-dL$i3pVt$(FeRD6`b9l_!5Pt@4g!X-v1}gnUvd!)FN1jr zhZB^YR&GPt8hNk$^T94E3By7&D)+Br0nH%pzbu*_*u*P`GCza@>70(TIcO5~uu8DQ z(-)jiNMv%PD6Ix+bP0)={mQ$?O}WE0Vz|*^&2a$SGOt=q82qD%14S4BhCUT8&wmxw z5k3yB_l#I)Y7hu3%uu0ST#scQx2{tC1N_=*ZB+dTRebZ}N7-Aq>yPC7{)2+9;6z{8 z_sq~&|ZS@EN^Z<bnBOG57w`&8N;!+#uJjCS$u@TTZ2266V*9R!T_}<-*Q@gt;&zK+#YmufI%??z zd)DEWVoi*5pvfOMP)Y8x7&Xp=`Uc4kK4N1|5CuxeZ9;gs_d4Zls7h-a4x`dMIAdsK zg!FqFyH?PuThYGt)lp=wp1Q|ttF}ejTXER8u?QH0E4v5L{VUHr#P!hN%s*}EDb)#M zBZG$+X}D1b?xJg19K1gv{Gy9fX5z0QjRp>=h~><=q>AxN3wp)03h#He5PwaUD_bl<-LzFy*Qmq2hseV=V*Y%^!GCxI1<7=9VDzU zs%Slz8XhTiG3bdl)ltrGZAPm`6Vxx=IfG{3aLRB&APQ*&`#d1eh5`D!791jfxGZ~q zDh3Q(vy+&cv`;VmOxS;IIJW@HQXg#7qM#Ns?e-xol0+TRZRB|D8lXIk9ooc1tKLdj z6U@?lfMFt+ZA;qg3Y9q?QEEWHLkdZDQze{XzcdK}kU|(L)9t2fS3so4p|`%Q^}T{c z_xi%Fz)9I!F1*iv%@758ZTk+4v-QPa;0nyci;EKKwrlY!T;$(j8=U6QjYJx^>98v< zsgXLzGcVEeRzg%=uD7&gP1^E*_lguxJQw*mq!TlY z(NjF&fJfTva~4C;?GY(xi4bm%uk%U zVxaoF&Vl=dI~lLeYfL;it%ebugI&n5>{1V%WvpgG_&$6Wl((>MbD zbI)QeX2rSOutE@R;};{S1n`E{K~-uc{aX#u1_aU=baw>M2{mj+OD6 zaiRIAik%oL??@gS5s(APO3$?FcW_#7movIx3Qv$%*-p*`yq8Qsf_o-PQ z>igG|`^g4{+$m#VB*jJvqycV-^WqyFbAK5z+C}&^W)-PQT=%%l!Lb{P$Ou2UKG%dv z+kCJw2wB+6t&o8evevek-^cs8iO@?24}eo55Z6g8#%0y}Jf&H;-syQJR2$9Z5lcU8 zZxfLJS%TBa80zP#tI^0u-@qPg-lIxS)&QRh=;65^sQX_P&fR7v@#w5VO>4woK#45Q ziZ-OHbY!8i08?P;mm53#g474hXEAu$vZM`cY5?7wxMEcCGagR;jM0P8R#sgZDClRhR-%Nx6q$FeqXAZ3vAuhMxemUJssfD zxApox&C^v6IfGfV;fcRr%wscvP!~zE#Pp5Xkz1TZ$}98e6$Tji(Tw_R^R_sYn0M~d zr|EHl4DjG8mYW073HB#kfT8nv?Xpcu_9bmxLS~3Paq?$t;dL-<9$v|h;ZU{q72R!M zr|3_GTeaFB`;H)$_h|;qqQnXmWAq^g^x8*kt}=tohYzewwtOg|JhxYIE^+W(drO!} z(Xu+Cg2?_vVrrgGG#X*FLO6PM80``@;#GtSWY?OI_dAJbLLEmo8jV+EKwM+8&G>OG z(#V+ecRTJI((EKy8w37~5C(8Hjmf>89he3zlA&LGj=Sj!x|;%f^qUeA7BOHXVc5OS z>e_}TgIhWxsCHiGYdg}*>7q1~^AbD;ZuvXk9w`(5$Y$5yX0LhWcF}^X(}mc)ma;+`EJHN; zTFLa!R6NnrqrEJUG>@~1QQU#tO<4F8II_>VA&dj}Ke{)zzrdgLKBNE&)=bg0;3N9Vv#Gp0w6Z-ACyp5CRwnV2-N@qX5lthFWMwhh$LG5|l$a z;UkNIm9gn&{3Q8xc+8!NF=;lsnx`TCOH;gQYj_iBF1RZQrfH05|&kAPLAlru!$H9 zolFxzT{YWI!bTb5aS0q7XK*R5*jn%J#SF{f7Di6#C8;4Ft^d4o*r4mQiTtXG@sK{G zFy&a5S{#fzUiA^|GxqCXnaLbKTzBr;Uf6vp6jr3DY^6i&5#W5X-7)V?Xc_lUEbL+{ zZljg-8Wr{fbdpF$oAl!&L3FSLLGAZHI$`*t$B=LEcop@@C0EK=d@UX2ydm9!tRw$3PscjqVsr z)Qjgxb;vKpTgCJcffC#MF}kV$A=BGDK6y*{+If;$f^#a+!5p0*Z1_DJ^j&upmH{bt!z?*wd9{u02#YBy+1>^4d0aL_|b^RE#JRtG>4 zfFfG9o!AC~iq|Mlr@F{KYmp3;{{g_FaD+k**}plrn14Nn8b{YD)4dIKI_!;>W@f@P z^&dn^R=CMpwaL9a8wZ1K<^}L>kRDcv>z9!}9|0PiSP#hozDS;z?h8BMB1ykW2(~j% zSwi+@2bd>fUDFzYh38NLF{0h4AmU4FmHMz_q3hntj1Abow+`rA{)XgPyb?H=DjL!L~`6c0Y0Dz_gel& zqZS@)#LU|>Mk9v?=Kq|(dVi;xxz!wZveAt8#aL9+aJQWaY@Kr=Url(&jAKmR z-cDujjin=wxI0~}cIK}}G0Z7GB*ohnP>%a)AR5&0?iUH!862?#)MOo0XGb4fU>W(s ze?4k%7UEjzpfn9;H`Upi#JBtGV$e(pvtDC#Cu_7r9IUOVnS#XADOqPnRh>JvDN?YL zDN0SiX?R(G3`1hWNpswtTI5n1dUnI`C;^2G%juXyd*z#-+0{?)W}m3^Duq&3WxDs4S&GQ zK^T!TY6@t8q{C*>1DR||*6K?cg`VfqAyKUai z3~#!>O3bRHRf3KX`K$st#FKVbpvt}$Yb|;?e`7%R6wK;upV?6`<0ffl)U!UVZ{T4LuXjR1D*2EYWIySh2&LN6X(VaLVXj>}`122j(ExdfQLj~k zJpQZ&VqW%?JD@3@Mv*Tr^T_q)!zPw2Mr}s?-47*SJcd!1B0fRL+Pkb)_A3BXDq|!{ObqMFylrZ-9f<%8mto zdwkr+NRT&vr{C8~cZoZQFgmOic&`h7A=gsB+5CZ!K9uAkkyI12qU z(K!eSS<}G{_Nad-c&;L)r!Y(imJc#U4*l}~??97v7aQ?Qir~UMj8-=p;p?iG8V$;O+>sd*YY*>J8Yz+j)O9-pF|kfE&kVA;u4j^ z(snq_X2$}0AOTdDH=s6jLiPB%+wo2}3qtO0%$)9KvB`hyG&o=GgaVnT>kj`8AZM_X zR|fYtpyTw>KKN5h1%8xqA`V+N`STDzlIy!?xFoufJ6^1u-KEAQL)*L~7NLK4hG3fR zepyvIyB~+}^mx^Cjsyc_E}~Wdl>FNt1NYRs-E$g)AO>Z_;2m4%);(LBnR4=_E14i? zwal8Qv_Th#7TVH>Q;eDz?>R-sqK16&Euv#^G$`_TB~jxhd`GPO9i7-|(QP-&HwRJ^?MmeOo?7OQgiXns#Ium60r+9nq9I_Hr z`$5ydlK(98YAM#CG&@_dD`2uWgTCG0lF?6Qr>Q?0s=iZH)|pvWUcGq0koJn6;J}+% z(|7}hAkOFFbgc^Odeb!$z0A%4oNhW&aATvFJQyTN$I(i+o)lNa1L_dyb`SdCOhSQ} zmnTn9nwi{IqHZofSxSqB&~k%{X^^gXC^roXtf+^9;ID(u&cyhtuDc89bb#oF)-9J% zuoT+v3@gXFUQQeMG+<4~t(@H(#-BA!IIh+agN$70a3w{yY>)NC7QJ2GO=&LDJLTSk z2Gt?b#+p8xaNiRx_9kTE* zz=X~Z3t6w#Xti?TUI@0M{e%s0`nrr--|`)o@ed=|`m*235`U-mo+WT`UK%J3w@u2H zUUi!sw{Yqa8SV0X<2J)cmE6%Bh}+LMkZK<4tf`0Pc$tvteG(RAO)4cKr&TAl*XWB9!1-f)2>c zw_q$BSK)t;6d#$|^0Wg=<%<<$-Lo^wvZVG-;$$CC^D;A$Z7^wQl6b~5e$?EcafZsK z{O`;~F8V|Z>ySA5#nOenRtW1EhP6;%fCq1_YX*VYOX*tixQ}@ieSMs0bqB(C_W>+? zij^w7z)23U^N!|2(;8~KH)mBurEajQC`jqdn3m!NwuchxuV*wsE@$Iroe|(riOzH_ z;zi0)Dv`%Mzl2-r2aKu&bk-sEunAq+&MHk4FMSzKwq1yy{cB)vi#bOxRPjAkgV~K{ z$pX&PJ{RsE4eQVM5A}kgXZ2}ufOTH&kb*0HPUKzzKdrtzdakf3rBSWM%O%xes*w7p zVuub`P=p+ctQWQiurEUwwfm7JYo0x-wU2I;315 zf#+7ii7irlwGIAR`4m%}Xn8nw1F$whz68Z5=@9I(VuKAA;_jwkfa67J_YQu$i9Hw( z^$EFAn$5VxTbZZ-)uV$F2pNyuZR>8g{WfcSOFRe<=|KF6DY+5gOs>L<8;d=P z1|rdGGc>kBKKj?mF3FaC7pxa`m&}R__le>V>7u;;eA)TU#tk@gAwIJkg5V40h(8X! z^lXKK3WB22UWm)nlApl2zy-n?4cnYDb>ojXy#e%ScuhE#j(QnY6N3U@+8)*;%9D?w z-Fv_b025UK8HA6y#Cj5$#18qRk3fO!g+iZl%xGrip3Eq)$@19l_O4-#1z|kJ0n&i4(A9{S3>Pv+-uv;kC2lcUqy^Ilsdt zugHu0lCJ)Z2f@&!2@NS!#D4){cG$xtkhxipDRPyBlztN@h4fwB*rmU>0Kw-5`9Ic3 z|07k<(MRbE+Sl0pMmqhy6%r6XGCi^eZk{Tk?eY+)GHdS2h$cfROVi+xm8<6jOM9?$pc^Z+*p9}r#AjfqGN)KF#_wIV3_6*YO04_9WGr zx^RD1BC~s*Hu3FZfR! z6H~J>XZVQq$Sr2P?=#QS5UYGV2>3h?*d4S)r`y#Oo@Tq`0zP`Qj_mlT?ex$9L-YTB zVzs|L#qBB+OdkrvyFTSRUQT;9NDz_|f=7fU&7+7PlysaKj0P)j&@e|6 zn8N#3x@dei6)ipOFBB}rMu6(GQ@z8UQzDJ1fm?L?|tk>vy^dRzAt}D z@&}ALy*k*&=dac-hn`fs`k=Us-5)4jpz*K_@FW$v_4XA zkkg$MSr%G14Ea_j-zrk;u)^Pe4;fJH;jnJKcV1X@q{U6L{fF%g;>HpMBag~nP$_(L z&&sjKu0uJgwQf<~L9pRuxF{^F$@L$hc<1GjA#Z$xQbloOOj(%qWD5U>w2N%Aba7(x zyQkM0Md=xZ*B?I}NLg1+f)Lv@{hV~})=ve8ud&h68`7l#;)R~EtdFu4EsD>7oiWc` zfOHs+^kUDa{f*t@p36m;a3i%lIkIXYM=o7nBW(&}=~>|vr1+q_7}Wg&*4Iq<L~ zDy1;eaRfLVHbdjju8FyWFul4WBCG`@8aXv*y%{%i+}-aanSfwViPggF;6_4H<*0&}2Cl2aGsEXHM1&(n6gl@N+iHL?q<&XU9Sa z?PQNHwORpiJCQ6?dQ;OX1v9wvp^Tt~6}{;&3{Jmq=M=;{zzb64zOB`8>)7$?zrJg$85E(CM1e}sV=P_m zG84J{A=XG5^DvLTCzJt}ufrJ)CBm#_-))&9nb}%tdI~J%Wn4dVc$tFg zo=4}8s*zM(EtrOQw{mwD=)etxa9z`_Y_*>sQh1w6>V&?G0{(Xuzz1CdxmpnpZ|xRx z7$p%f)UanHy)VB~z~S~xtyo-nr*|8^?TFFXiU|uW4U1rSXK>C!8A01o31_hihq=PJ zk>dPezq&h^UF6YAXm6JsYq2q>SZwvNIO<#lB|Z5(E;^=>L(*h`=Q_9uCcCrPw&;gF#zI3AzReti`f*ERl*qlIzOf-#qf6l^~- zZ;D(p*>rYx{g|rlR%6I%jWb;?9wDgGt|t7KDKYRkA=xC>G|GZ7W*TJ1eas^`t#Lh% zxh|Rq!~jNkFDZk%?dOkQgx7ECOW}i1&d6fsPXzjDmWC;hiNpJzKc83VEf;W>f+dzU z$m)Y`6qOhWRinmRF*W%r4}6@P9*0C!xi-zLGB9DCwtzngMXqh8ptyHD2J8l-n&%^j zO&PT&K*ZYAy}{Jt6vVkEXCWj6MGZ%-Ph!~e^`24fq&r3coF=EYKfH-_Qc!;5oQZC^ zWbr@3%Dt?EZl8Bb`C>&WtSxEO9_Viy>2aCRKVni5LUcjKo(Y63Zic%;Jak=F-OlD< z40rjqGFfMjG|jwE+Kz6sGoXnVxYIY)ZFuOnVW|vQloHA+$TUQc`q%jBGgf)o}g-u$l|f z08t3!CIOp$7)V!NK91@N)D;}v%;uda5dE#h47JP0i2Ykuqg$Si&S+~ckNFgD-tldh zNkgWZnrr(}CSW%j2aa zrV7Pvi8g!L>xBEE#nEc^^_KJX{af~z^1`!yLsv%YAP#q;G9Msmu$u<_n9rRngDG|3 zgAx!EV-fj>#NjgSyFBm88bix*CJw0UDl=lS*$>LTa^~Vg)JAi?ZJrCUwe1Tzl#Tbt zaUz5!UB0S=S3H70o<6_$=cOVkh>4*xO(1+jN)g4 z6Bfg+sAU!M4H3&c1`HY#w9SisXvGd&PlPhP@a3h4d|8qm7j&^yUUo%X$R^HEd_=06 zfOi2<8N`|=VTGwb{h2ZRk|o*4l+?~tqzT~8wDf1Fk>vT6_JMZAi9jIfo^EZfSZJE& z{|cBna`WxMl~(;dP;q6Gj3d<-G_)D)#HD1k9nb~4_r#*wkWU*)%m6*wB|6`thq7XcI!7> z7w<$*Ym$w5Nqrg{JEfL1zY$GDm2OFYGhTDom8+wg;R_*c>VmmheCT(F>U|_|JXH zusZe!1&Z@|C;7E>IBeD)Jz7#Is@kdrH(!v!aoBukd{-V#F+HQmQGlMjg)(%G%Hdt6Qw8XEVdi_(AMg4zA!Ot3&ZQ(z0tuk zyY{|vupey}!|oz#HhG=r^?jL7gT!0E9f2^wZ}7M}%XEHx()>C3>S5S_J`7gr>oAYjfXqt9sT1sN^ziv=rDxl zH%yxI>F)m%9TgNEE=&i|*TCn+zvaSi)PK-Ps<-QoM^Wtp8U8c`;Wc~Ws-yQ_~las<&ZTX-t? zzK>q*$1y{U60PnEe9k#lzWSQVfSTx!RLg(_&A zc{_-xMW2b+D`h^B?s6pJ#1ncp1*z=F6~_29FrdS4H^A`3o7zSr%1S5S&Rm*MpL2%m zawOaAKz}0Duic}P^cIOrO-CoJJ@V}OL9-c2sTGTPL595!_*|$j zoR@*YL-$mBrAo<<%&fUCfA3Xx!uNfDgJ=l}J0O?^PruXcUWBgo^ z@hV1TYDz_C_IwTG#R+^h-RJiK&emb4pobD~vN}G$i1REQ*bTBmNwY|5kruE@SjmYM50GaQq=R8@>s8<<`Xh^ zQRVx*BrqW{I0Xs5%;>V$cGG$KF+280kNCa6cPwBDuGZH5qOZ3w&sZQj8gHFPbr{3E zjpk)(Pu{+LqqLX_cXDp{L{1%AZpH%VHy^6|+CuYyro?U;$n7)g%i?I#D?ZC#+dh%y zXgkA=M9RBIo2qPAj!UC(0{5cl@``f0WO#wb$yUKDrmlhc9u{05c@UP4P7wN+a{u*wm+y6rk6aeZbcc;QO*-sXue_-0ENEe22K4V28qP!w<(Cz`Ji!_4|ZG=(r0a|}I$~|O{m{t-|K4ZW%IW*Fb zsLM@_q##7eU66v#tr#UR1!TE+BgtfEA4?ltWM{rML~!08r2%Qdg3d9~ko_bOGrIFW zQ=TC|BjoED3&iZFu&MJ_!l(!;b*%$-Q)fu|`o@I4aH*!Wbyc-6ru1wlKuV(v9hUz( zbh)<&{{a;Z;j+4H17wiT58pUNCuaaFTC7D_!RcnYSxsc;)1FT)_Qm1~fE7A?CtVW> zYBvo0kOn}lnNiiz&_(p0h4Q;oi;BBP8faJx9#Fz;!*NAc(R#{>77(@w!&=(u^7(|# z7u4_%tixn7&R30svau8CXrHzNR!l`E zD9lL-{fp|lTtkge%x0Nr{{WfuYr1Tt;vh!P1QmrR2s^z(V}S_!zg?iL^Y51iAve>| z)M=P%faFjD^f_KyY`DuE>tJ>mw;6Kj-;hYcpI|^x$Bno)Iahbs>(LrC1-vo~OY^kxz(EU<`FaerL9SuXn=pcxZ zo*~OM9_9ko6uFctm8DR4x_v!Fm;?@u&Nj}F=(o-S#ZDcVEwkL3_@rn* zVv~@@mb8cxsh<;PkIcc;+8M*LT~imRU=1(ye*aySBJZgp2bpW?u7XuF9)|s+#?&Cb zt?WDEDuBKzVp#X>D!1y#ba_N2pkzFowY{zNwEdD?H=~=`)Adn;Ujhp4Sp)$>o^CF0 z39#VqJp3IMXpYPD!Tm;fP=khSK$6wi9D}*_%dnSZY>*+L{jvYT#n$)?mBKL+*ew|Z`m}It* zKp{Lj`M*q=pi5*-=ipv$u`h{;%JCYV&d<%lx^c(|V-M~W|I;y@S=7LdCtzA5$~gw$*~ib?+LjU=0yoamy1ceWtdI=r@aO6i z$tc*JtdvU~EkQsWnDaQ*^Toz|A;82EMuGikkY%Jc(9oKmHGt0XJaGgAiC9NEPPQK? z9PQ~GEvAa;TI{{7aj}DBD-d`7_0!8IM#B6(%BXiMaos&Hzzn1}R1>{HdKbVsmfx8Vox+|C+N^zmKD>f0MCkj`Y(JwKhR=8<3PI?%nn8>mn zMAD^~N!AZvhKUxfg}6f z82z1^P34MUvbDwG}nE+w>{_*|<7b9&oPuBt6FzB~mgnPX!p?*3QS|6RH zin{Y^F^15{*wB1Ux9rvQYy(etkGVJ(b3Y~Xp))Tvw;~;T)rn1d7Bha}2RQCzt7WY( z6DX3QcAc6&&LW)C9>!>O<@w67l6?K}@n`-Oi`2rsHa5A zISNid&Taliw9Xf*S?8?t zaUq(pFh7o#FiWvNX$b_TT$wW`e&Jx4f7tXhWFyxY4}_a0n~W1b8C{xRH>N&aX&aTZ zg~n=SmXCsx?gtO}itNF8RB?J^iHbQk!361@ zKvqhY^L>4MaX9GLV7^~TXxsP~zV^A53cNyfT-j>cwQ3EQ?$cO$V@r;VUXEkY)%YlQ z$`MJUj@y9o**iC_MLCi%7Kec0M{9fSaA`XVC%QUmPsJDo&-<(YcKTWc8a9~&Aoxq) zO}4dfUd^RKXshRRC`j@7NK1serqYZ-nJ*zd^+~NLuIS>ohpdcG2p%4`up;{6JJWI= zspM7_4^+UK--`-wBE}+4u8Bipv$}$`+miL+WsE^9o{&8TSL%%^2BJBrz1OcqChvK9 zQ|s3%5!v!qP4TGM8XEms&@7W!V*s^lVG;V6bU&tbGgJB* z#N{{!Gm#`@VSQ?yiW`OED!0AOgzwz3(KusJ1@0|xos&rzX<(-P2apLPF_3odk_d3Z_ zw+R)iMI;q*LglxIrqK(={qP?EpAoPH0f7ns04O{Q2Ug`3cuWScBO6>dB~woNpK~`o zhX(dA>KTRl*4d<33o6u!U07)=B0npd98t3)4;lR-=v6d+s^s@-rZ(;634Jp>pFn1q zx1g~hTO89*I2AG}@uV#BOJf1sg9X2LQva2!o-eTTxOgs@MiUOmx4Q#%dR-+|zIm!9 zk#`(D)<;-bAATbi5cDY5*+3C9N>C$ECvL+wy!$rU5m%e{hBdFag(qe^;4jByft_{o zO-+J)S@l}UZU^=|t|FkK-_37bhZnqb@oIC8qGA4MEO+L~uMChxcqj2}&?FPv<3y~; zvF(IruZw=l3WYDTzGhBLFns)jMD)@Z_M8k`9kU|S+jJs%kD)All?@i#Sp(PNRNi`0*{%_@e6Rrz64P+!IM_z)JRX?0_@ zc9Z@&j9f39ua;^78{I}P$v>DqfsiaXvvNg1WA*Eu#a$QOBfLt_tv za|4&~MGN(s;*HRHWoJP?yk!XCATvMMylqrv_1YpJXEBv0hGQvDN0Gp}J0GY5rN<34 z9)!u!aY0?^S`erWUi0a}!W)L~OB-{#guJGiXpCNmxo8>qqkG!cc19uRVTH59TY~Y; zkI8Ga%GBvADI2%R`l9gKngOE{~Our9kv9E z9D&IiIJXzL8s49iZJH{&^CNuNB7GG}I+Js@fOS5hY!9aR0j&>qi7ND3+cjoF>N}Ul zDLC2Zcz{v;A)V?LSB|*RD`@e&q8xwb$a%14QRo;a!lenu&vGiRR5e_yn)vYwO)bSa ztd3n5TVU1KFAhc_=~iDsGZJ6URy3GQl_1;A!-!e?HI7e6W6-m&kYvir@m(r;fw2z(}L_RJz^TVgUbMet=s%K}<})G-NVM(>5V6wRy(bT}EJE?;lEu2u@1V>tvu6y554Y z@HTj30CiN_2i{dfT6c@Q&XUoFAmHNeR-DBfr0EvTVlaLc*$=kLn}<#iASt;UQ9q5; zKEvZWWh_cLL2U4X^AabId~*1vK!VRyo%)DbC7*;b}LtxWPh#|}mM z;7k#8hw#>$*b&t4c`ryQE(;=P;6xP2fJ(Idkamdvh1+;~Uuq|5!0T2AGJTJc_l2qR zAqNC7DzK-%^7n>@M26Xt17`cDY4Zs6+?Ztd2B>3x=*3!TeW*3}5=|)YmP2%xOxOK2 z2H-a;M_+suC&Xfg62a*w^Yi>Lpw=T|O)-4xM!87NG47n;jC2P6)JY_y{a-F3c&FOJ z9so;ss5Gc2#me3AxCdhDsZilAVD%iLB2vX7D%n-FwVu){J$?O*m-Tl`t#($ep$8LVQ*p5g2=jHlYwezUoQfuzdk5gM`&(#rxZau&CDBR~mwk$KE^e62ZQ3l@u;Qt2 z!@mi{GlY_($~`lj8*($^h0mm(UK+h!b!;#;*=L|6=?`uNV3cb_*kBHNEVN=&T0Kdi zXjB9y(_2spe9ioKYY)!rLe48bL@5Bbf@Ao>R`ZJk#Av2CSRHy;U*+#|Tm8*=hjHL$vBVd!kM`1`|ecoDbRAGR!#+YuU31h3^C;+76)R zV03|RoKQzqpN|y5Puo?)?3y0c6+jW2^75?GZ<-ws`^Ar@`fnyP<7&{flJv8cBE#oG zxz03A4ZcbTGeD>&A4F`1a0-Br(mTZ7P>J~15%tfL?J_gg zxKjf?__evKge&wxJt)HsppF)et<5@|jewf{rxp zhtIw5^5AV0FS=8VOpW>DK4pgd?+v@7Mbm$SQYTytt?;0h;?8eWq8hK~`Ii=Vx-<`t zT0oDsolYthw-x?rW)72&hoM4<5j#OZfBG8fiKX`w>Q7t@F*g(i)_d~L>*qy;KCHsl z9B|9eC1AS9Pb!0{c%rKq{iQcS930j=z5T5PVN1+0sY-e_47*Q$WK!G-E5YzOB`8n4`X~6+Ig&1o)hBW>CXL4C`!Y1V7+ZmS@mD$`r#6 zEdo$2d;R$-I};0<|5wXhO*>f7Ibg!D5)eU6u70ErrJe2h^ayB$J!*!XxpK*UaK+!} zVA+~lOxjP@VY(xoI9uC&7Uc=iQuwUXsarivqr`1p6oq0)T+#2Wa?$Y!H4pFLossZLt#~w{a_n<`;x5B@NGgx2eqB# zAW~iWOKqoYOyv^s7x%e8XF1BRuuKMj>qbF80iUk%1)-Zkqa_4)JbMuf^OFff##<02 z&Ad=!L67OJ{VpWp4Ud@`Y_rPtqR$56CNAZ5Z>s`4(9srvd#&7;<6rmthz@0=7BSij z8eSNc`hd=E!c)}G*wBH%zQ}?S00`(%%l5^tb?Udf5T~xCG_sn=l-p|Z!>-Jjr3+%# z1^RzXPkJHWh`J_~BkRKDK4#E)(4q6^qoW}MC5KP4EIrx`PW-?O^K`;%<3Tsji>`>4 z@3f;nY!-w!K7dC?_3F3{QmB#u^oQrDR243zsYiONj|RPK8cSTJ1gGy%HaW;!M28}LhGAG_Pdov;f3uUHlYNBsl zPM{rc9`2M6n{WlKd8l*HmKB1}+~=#(v7_%On=&Vped|M{_PBm~9QV79d{nZFS1ng% z$xt24Of&`yUdgC#nhKM5lH@=>#s@w^$SI537EEogr49gWvNNys$FWDZR(rlS+Kd;C zx=%J^XX}}m)6rvp4tpg3%8*^eL$vJWHhNp$OpA|D@^kq|$1$ADBFb-8s&2HMNi@D~H`)mX7PC6xbz?OF*c1>zyY-OmS4rbbX=dYZjc z;?&TccP@pY`&@;~dhXV&s{}8}6Q2iUf-BYY+utSvu&JvOvpoUpWDLRCg@Ef1r<~gg z6Dh!jJoeTbQ7r%TZ`5<=@8P*7_AIqFUR1haJPVh5{ZB)+IN%$ctK%ic85~ZC?C0V*)t=?-Nlu6>HD`Lh+3%vvii16S# z>%!|IBb}V*djeGVaWf_Ya81g^Ev!_7VZaD_8mo{#ySjPUVM?_}#i#QylAC@MC7zA1 z%|erq@+%)?eO_-eL#VE14jGs2Q=QOKND3705=LIPfiJsfxm;)72h&jBB_2zRu@2jO|K z83BY+3~S;_rslLo;!e5&=fvc^0M{o z@QoFv?CKzLH)c*;@E_@9GkC?bi)_v4%5VGmRyfx0tup!jZ5)XuQlx{!7d3{|oL5^N z`X&7a@B79;b>0r-%HjB59_KWytoGXp5z5vS2ceAHS1v6-UJ6l%Y3;7vUChmibc9*_ z|EP{#7tc)}C!PmorH~K4i21E$6~3D^Iesifyj9H~iW^1`xYKV;$Wn=nFastKDSFYC z{Z1k8HM;#{*gLVr#=4EPw>;BBW?=bM5>cm#yOC+g`OZ! zv+Du`oK`~b8KPrlmJ7sD$vGfP>Y8^}x;{xJ4*TO?=YkFGSmBLBiO~<9?&Va4UlGdS zJ7wOlfSglPa^AXjIa92!jb6sMY+Q|UO3tdJYm5TBm75|iave3I4>uC)^)V%V>}Fmh zK4|f7f+l5`D4lI$=UelHTaGu-Aed<0NTDfMfug6iK48XI+i&c_I3q%~eVbqA;bIE` zh`X2xHkNEaaX$pZ#xSJ4AyL4&&Gg)R-~Vdx(Ia0M=+Nq8@md#KGQ_&)(UT}iL2gK! zRxrw&Q>m3xQa7$yytfC))Svl*@q&l+S8EUsZX&nceVGd8ZCDDXdUn2bn+$6%G18@5i{i}kvE@8a3TVcHy z5&)JrCy!e1MdPX8m(;)UG%hEfrCK}zjenzkkav+QbT8d~k*7gkd_h6Mdbbr@dm_G3 zmy5ccmf`(S(G}3-hXORGdLHBrf^^T##&?g~+ccA@?VpSKYekCk7fTaJZ8=V$`rewI zNA@mNnyvKtc8NI$gceq_GR?bG!vo9g!F-!Ts4?H{hipr$%eA{8UU2l3dzGGNq|Vt{I!{cM6%@!MmYTh$3xfjB5Uihuf2hqfCKA4lCss zX&kBouCOAk<&>1c>~Upw3;1=>#I9*4{M;KM^Z^BUqlo5eB^s%BC?iWhl4Dngq1Y%{ z69+s)1NKQMeWc3}4NJ?3>I0o7TLIDAbRMch8f@QQXOEc+8$6qSD{sYnRq$tG14qRm zM=`QDbZvKmkBjG-oMX4o+$_xljaU+9?oXmu6ih)4DU#wM462tCC+XTz01%F0+Ddv) zU}}nz+}ZiQW181XF4#9W_->{NzoVg#Rvzs$$1X{RVp3c3uA__=i(z-gIyW6+&|6Z* zdj)XiGx?1ACv0}OFFh1=r%U@aQ5W|BiDdJ*oRkPvDnp)xNiV7y)VZdc|?i zn0}wP-H_dQi_Ai)v{5UdHY%%YrN|kOE1b2EBj~7{ipPiIm`~hbOF-#keyVa&`mfDw>yYHdM-g z)!p(uG20!|v)d$Lva(EIHN*H~_;w7S<<6k)aY;1ue0U(J3=Vh`{9Y^Qp?LB)TX1vT z>-nbi)xuvjaduTmvORce^XX9zZGvTdcfACeBBJs94$o<-AQ*T3vJ2w3pDq^k9C2b< zXTwF4u{*EL$izFp#$&A7rCp<1R_bcy&Ny!mx|*eKQ5yX{&+C~#n@Ya9a3}>C<^AUE zK4u~beQY{izywLTIb?hKfihcgAh~4r|G_2dgSQ8m0WyyK9(5H46pRfNVbVs zH`XWp^0alN8mU)q<9qX>^Q3`YS;QkTDWHt zu0Y<#uuewrrkZ8b)(`bV!g0i#vqu^!hpQ0r<`S96SHd8Yh#DjH`tcL%VlyYd#kR8! ze?wGVSMDN_p51f;H|CMT6oZ`Q%-;MwXm_j*-+mXO4s$!82}bhI_+yr{j!AOfjT8@AsL?QajmWRzX434bf9% zTc{Ov7;xWQb=;-tIOF(Bv)sNbYBVm((*N_D2Fm2y-Pl}=0Pvf$Nu}O$rk;0Z%2lZm9A8b5x@SD&oP{*? zcxS$X2Ah+quAuTJb@$?ix>QbB0ljP`y$1f-a}CQ8IfswDILSCd7+tz05n{gunzF)F z_FdWh)Tn49!o%781O+=t+jl)Kh6;%&+hKLh%GHofs9@|f+?`fUH|emic|a|PfK=}^ z%d6%YC8@UYW+p?4z{+S#G#*TqDp1TMlfIdg77rq zGFepDDY@X%$BM^>A7t~VAo^69$i57kc%zX_7;;=)Aiaq`3WPlZ14_pX=Fvx8ASbQO zzjg&67*!kB&@$k$kPz(t&j-v+9JvYaWc;Q(ET7!S7HH!%#@@HVsXYG$WcL-DDD1e}anm8;ef4N5KKX_WVG#`>414~Qzb@WX?RDOMQ(k1GF%nsOUpJ7Sf&^3$Q z?+MMZ3>%{ekqyv=1%MVPE2BzyymtG=ikz?#iq62nTFjOzv~)yCC3v7X<&osgTjYvz zQxI7-z3$yN&UHt1_rjo#JQ)2EA_wM+694_c=e+i=RY_0Is`GOrL%+`2-N%9Uyf)t~ zod}P1j!~xntu*-fAy1xY#;C@+_dRcEaGkjv%vNrM)+aycDd(W?q&6FZ3igosanO(p zC{hlQE9yrQGZ_m>s@;1$)XU74C@bO$Fv0;geTbnlda)7R&#-l~Y%S$_Lm-xo zg*sU8Ph>X;aMq7I4rLX2@J4ZVo4&Ex#9YO%eY03$AQV|pUpWbBt8kD%7721eAQ12J z$ireP`EKj_>@1VlLn}MeONton753;}zl3yVXN$E=@wX8i&AsN}QQN|YM)C51AiY&G zy8>Zj8;_R)18!$TfM*R?RwI$OQNqQxGgEzdw6!#Y-@gw1t<|J@Th--2hRr-cA70EE)8J$rU~EoNLFT-V4W0<__{U3s1LHea@8s(_ z&kTlsT`3BgX2^W=FqFZsGQGAORhEKt|4xAUhj-x&Q$Y^~rd8F{h#{b=jnM@|YuL*6 zK@?~Xkc^@$vNLt&&aM56aDP_G*8w7Qn*dj#cTIV30drH}>AA?E&q5x*VWlHn1K&vQ z=LG(5I>QyS$O9u(v4VCzQrtwHo?|NP!yC(v26w~K!6WhTgC?m+?5i?VFKD4-dhV_1 zC&%v-J!b9jC6r|Z>>gZL6t{v*g7S!miiM6?ErrJGVk*ocs&Kiltnigp`~1w!L1={> z>hqa+XQ=>L9mO{zHHKqFjL z$n=sW@B^0sWXFlz&W^y&9J&l!|W&*xy8c5(krO=o$^9o3YHIA z(lN!ab1F9dG^WOOF{WG!I*MXZ*V>pK|48Fk|COmH)gAVc;!>q@Zxz6GLFeMek7x7L z)^5hZd=h@Yj6IN*vm0Bu;dCpoEro53$PkC;4lGY#zUO8b962=Aio|JHLwN|+nzD-0H<>|<>Yj1p*>+3S3ZHqFHY(+(KfbX zTIvQJ$W!qg$K{8Q{2ixTQ6Ru9%mV@CuVHajj72vf?GUI-Abu?ycIF;I$StzN&vNo} zP2bRIMFtBRINm!s08EJQtJ-gaN14js`|4R_C#sxXL6Lm!gR669|&pv>L3D z&n?+&J>Fbay_6r=c3PM-i7zgmLw7DZQ!kg50u=D-#1AK3gHLoPxa{-`?vv{64T!jP zyB!~7ErBG-`1ZM@I`$A`6y{gBaAt0Ia14Y5iB&{D@&?@N_<(w#qS&C`z2%)L*Tv|h zi1;P?EO&C_XAXmBNS!Q|j33)0KPvB=lj?dT5`X9Hy3QGxPj$i#$cQC<)-BC1)&!R3 zL}3Mbr|Au2vRa9~AbEEC@o5Xg*_kJbIX$QQ%%%P7-TNPOUs3$-U$Zs8EDu$Q{0?ro zUrQmI>AD6D=B;-=?0#&5D!_``$&XW$#@G^rHoeMl9pHh6Z;Xtukh}oOsPp&Z_bAfU zg>!s(2ZPlM^goxsxO<3c+KJ;fnOvd#b_%UvVjq)1tS2!;tJ()=?8eC{GggtJS9(2~w9HM?ds9(XB8Cq@5bBX_dmjFwm^;mR1W_kdq07 zR$T~DbBl{*8i66!grr)tL6!d)ky${U1+^!E^Nmn*TZYJDt~YV88YF`^JYHs1Ryb?K z8Bi%cOih8^O|;Dq4^Z2xLc7*vhg)I8?slqw=~nN>?2Ej^8?ny$E*M2f#F43Gh$}?w zEsRH7aU-2Q{>5L+;z`{QuG1v2IVjc(P%m!6M?waNlyEd zFmFH95Mx4OAofXVCRbt)ej8dH>5;kv^c-~MEtSS>wF>f7ym$bN73_YfIstZn}! z%TGN>cuDRn?c-F~2P!NEzzXDjaaqsw8J>J%@I zCm&ykU)?se1;-yy)HSb)PAS&??u>{`zW=})eIq?w86$Pm_2>wemcFA^T^i&3yW*9Sv*hC`H9UdV6_)TOfl^g#IP<16Pz4wK zJ|x(=pt`Jvg1kZ4BsX!tk!BC)o{WcD4K2xU<3cJ5AVb;3r(upiQc1e3|L&uXj@Fli zBfL(q3hN2U-)8|OV{tTICxLyYB>hSfoBjzg9TMN$_99@Yppghvcqye-E9(dUToN}t zY|K1>5W%F*Rx zj=v&pk$F%mkOyV+lo3#((RpvqB>ltS1gM0z%3}8Dz`)}4y1?NYP-Xb~c+YuvIgOGP zMxR)*0+k&kB(0$&Bpg*%rv7idF;lW_bkn@I24S+v8_UFis>`J%8?BDbq%|^TotM`& z=)m386XiR{55r4v^!9h!LhuRnylr7FBQ8ci3vs3pc<6xW9s4}tqfLyPzro|&e>+b7 zbck%^nr1tp64OHt$iC^DXiSWA$LY$1%{vQ#7+@Pl!bH-cNeLH5F0*r`-|{6wO>0jqQBn|PJ5wCuVayN z+=(G3z-L;P5#Kzj>5=q8kO|Mo2F1m;LyB-p}{)IcIn6?h$}m zUs{b0NcnnaVH{U&`)bmnE?4TXKouF^FJ!5N361lBxu7H@Z;ivlb!fKQNnH9S+SgwY2+SbD9w z#^9Y$d6(;5PxW?_+g>AtrrFxe0pZrYfzk03yTZZMiKWEUmf{}>eIl%T=-)yg@QRmM_1>=&JzXh+mVJEgZeOV%bwb_xer&`HBoWL8`42 zca;bd@RNtpq8(qEd6jKp=+bUAN(uxtXfe!dXkWt!*rdfHfe+l1CChQT}gkGrz&~yf%H&H#3!exo^Unfp z?64w#O1HBpa77%MpHRS|j%2wNSApaixq>C{4K7MY3A*uznVssX9F}$ODwh)wby-I> z>ri5V!;bdkkXbH!8ev917J;sDC_tbsU%U$Csh_!c(mZ9`42#3?KZm=cHdsrji8^5N zlZf})jdsktt5?iSGLr40352kCV^4(&>j^w>4y22WIDwwCGXA)6->&(m4#M*5Uj9@U zbMg8!jCL1UmWz|6G!du`X!>zc@ovU`n8S+n&aUF9axnA-F{9}u*UjRYNhM2_;DsiJ zvgzZ$Jh{-Zp}!D$S>8nE++q`2GB!r3SZ1kFe0s#uNVBT}X?L7zwQJ6;YJX$_Vm~Fx&WugAllG zw{1*I9!_72<+3Y<_DvSE+cqiapHGK@ycp32#fy9p9(x0I^KZOa6Uyet1C%zmlg9wA1DPihFSJTI`R zPC&=_*HHHTGM4UA-eQH-o6XqRy%Cl05{vr=mMhvY$Wi8_0%PaoA_+#-LF&UI7rS%T zBEI46&f;|_M=Huey&501t#9cp7LD;)G*-SV)A%}GMXX>?7O{p7JeelljtM*yMZU>1 zinM~%i3dFekuGo%-3s`UTd*mdNsMHec2*$d@0T9jvkyeF5#SYaLqq+Vk~+OVeF+YU z$rew=ZA+7O=$RhuF6F?@y;`b7j(QFm=(+=v(l~MAMPGn+?_4E%Z*Uj(NU-mq_d>l( zVyF`f-2%OWmgPXuH|N;v`MYbfo?%c?Y5=ig(bbQpjBL$3PKya|>((K{_Tu$QgcCNE zW=E$UBFcKHt97w|VP%TDj%ddbn zvsn^JvO}nRswqkC$c3WOS)hE|=q-F}J83G%GjZU5EwFeR?6XzTa7^ntYacUVM2vHV z*jY1Cwm6Y}Q;tbFrKS+j>KltHWl^3S=Spp^*!P|>@DPYIl)0F0NSERLk57nIW>gWlS6&8?dQK5^j@p8h5 z8o;Ay$Q9@P=BSudal^zgCUh=jP_p)MCmZZ@)c$7gkb@O5F<&_z)Nl;(3cXHERt`0R zb~wP)bVy*FSrZ1u=mo*_@8AfN*id* z78#jHsSAJmCaR!l{-SpgO>*$6Ru5BTP#)o?>D%ZjA1JTspHe-(%U_9fq|{VeaRj6d z2;cOkFgSwk%K6cY@BTr)*TpCW8GPPdx^Jmn#hwa8-w+Az8g&4}^Jff>tjAp!9UG?S z7M*$1oV78G*r#_o=bl$~imRY&`->E1c(pgq1#u2Ot6RVQXH1!1W1)Dt+cYcV#d-cV zrR4odw(4QLnTrUQ^Md%4)2mGm)`;&WSQkY8V^|u7Ru5w|fijH18=%QzO+f+!dazil zytE$j8>YsZ383O_hnHw|V~F5#7nNW{HVfH(0oYBIp8vtNveSUL87X`YcAqZA8pIsp zfMiF@1$;yiFo(K}ZtI#?5zJEv6$#D3eKvwf2PM)&3DejUXAUIkYV^9d>(Rz;?nM?d zt}~si89{zLFSXJ7hX7ece+2Ak_)xuP!f%h5S03pCa;G*gc#M0p~Nw! zT7gIemk;)Uaw5*4=5i%=cD)md3b%ehXyJ}jl{j9x>C0Qr=jp7Plhp@B;Zk_ltJI~`u3|H;JGOo+GKGg?d>qvo3`(Y8bYAQH=oMD z-~zNfM4mw>XV(JtZi^!TWqYz(_OwrDN(Ahd5J`%v7p=p#8H!~2$GE;IZJ!`S2_B=e zr*cL@7KbQDe^^U&9 zb1fI`Y>(n~JL@^ru=vPq#o(6w-omeTt%HXh>2HPlm<4mw7E}lPylc}d81o5-*nD(( zmSw5EcHz&;lC0?sq)MV5n1>riyrT~9C!e24Z6`f)xk(lEtOM*|C90F~G(9m5G#kDv zv-Z$W`va}4)w*!3&ph~=yPS_n%ps)}hF&`v4+YvmpxjE?qf@(S)GIVM_M?TT;l)il zN^Tt4x^TRpTv3Dx$>;2+&R!R5k&2BvtCfkfyw2ARz-#R(H9IZYNI4^5aE}1eayp;?Ud+HaDg#eGjKKM6Z{FLI9z#&cAFF8e9l+XkqOMKPh4LmDI?r_g?Bmc%dY z%a_1Us!a2a0s}(YSoR1EC@o8>0$4oR`mv?`o=B1q1f_jOhB0Wmx}#}mndYb526enQ zJ}ybu1mvrI0I9lFKO7eSaO66v!P}g4{ujFdJLHHETA>7M>buBJ2BT2y+R*Xqd0m5g zZjV`ou&TVs8qJ9uB*i+$VOTKlo5*Rc%MXQ|A{xUV7u~7^-H^j*;q8(f(-Q}&e|gP*c@l2ZyFA+%EL4^( z?wRb4J+AE^uk5$0Au1-);dQPm_jMrexDPMi;|y=%wD?(Ed+r{8`$y;UJe0Q?Ab}g4 z06_;F&5$<7?!FtWLyi0r*x!uRFx!eV;kLrM@uIX@*-X0%47>TIo~(A!A@7W>M@XE` zMhinsq`IV@bkr2q*Z;{PV+$JxTS8KV%HRuz_`pbrANAl0Q&~CemR;7xjhFV#0Kk-h zlRxa;ezuJ@j;Rim&JwdWJ{=MJxfyM+@*TJ9wuz%_cu$|XAfnKT0#KLGS$FCvWW*ey zsg6eg>obCku^S;WacacW?Nb>-5v-I|NTq*k^TZf@9EiyRj?siU4A;X}r22>n!}IX8 z(|AN>Jr;xc2rOiYh7dt}!*g8`+m^fA(I)kzuD`XKGxUz#Z@-2QO`3qzO_YJ3x4(xk z!2ja7NqY9}xnOf#TLl&D{zjphI`yIK+A*nMj>2ps{y+$GCbASUJySSfpy8~N;L`0~ z{hg>?)C0$QCF=)`_5bXLx!Cs|eH_b^eGl84XJavEn;4T7jrw62dV^#hlFz&uwxsKr zjDUT?Zei}(u;FvdhpZELODbnP+gK<|=sl&r$C^P8`3INceDJCAEMdM>9h^deJK5VH z+I+J%BPCl<8W|G};ViGbdLE(Iu68TCfo$RK`I-D5@x+W=^`3PzUy?`vpC^C&uGql&2t@e7)l$M96b>guyPm%;1 zb1Mg5C!l=AO`R2Qa-@kVBP~D40s(v&U1bFnq3F|foNK5M9v`uqb^Ged9%89Q z1w#z8xXl6>dFhVXcXQK6)Vyu=SFiUK*ratyr=~o~i=F@}8>bnHT5}#b0%-SoWR~4& z3eygpngiTPU-c<(8m9j>3VWbyf+Fr_!0-;*W}@n`&W9#9?7b;4wfbTh`l`Mg%g1tH zT0!8ha&>KEr&QeTF7hGoxu=9);HVx9^2@okCu+)^6ph4&L{k63qbP^5gj-PJ+8>4& zwNfdR3o^8Blp|jC%|HxX>GY2r z0i4ObGbz;Je?)5^9>)sFJ-~q}RM`gb7bmtBZfgCE*u>I znrce*C4*<6*Ul`*j-MjQkD58Le~Lw9#3iRAiCr4-I7~6>36tLsirJ3ooNi6PJC`cs zi>f?M^LPK+#~>b7B2+vR*6t1k23drLev-b}=anF-SYvebj;TX#iy*hLod)f}f(PywJ zrridoAOAs*^wpivGX-13Dl-Gtiea^f$kzh70==-JXJmJ5c}}$*J|_ljyGWElT$VzC zQZelo4cWf^F?3WYrbavJrW&HEr;mmq?eQ{Pr-PvdU6-acJ%uuVtlk0S$5Gv-Hrm9_ zQz#8WdLudikco!pk7#~_Z={N|%svj_KNoo_LrmHj9uQWIJ#r6n47taFRBb7FA8#_* z_TAb%jQ+4t#W@~!mG3ZTYlSwPCopJt3x6h4O&jRZ1XBe6YLg$XN1f)2;+!!m@HE?- zk8;TKDvI6NrB1eWotzGpD18?oxM>oF-uqLfi=}+ABgGewOu;%0c#3-DeOtr=EHeP% zxx4|xxiRz&pJH@P!jGP%(AX17X8Rv^f`ftGc%lpmQKYw{~SqkPE%$$cX-tvWa@8Dw%O5$_3oz2pi z3+b+lO-#_O5VNvl6183^ZyaFPBnQ5_nk-ZO)2Dx(Tf*zM#EV0O{Ngm)#*|B!Z?C)6$E%4xkP$$11-v2MsF^f>44f&A6V zE`_4*@-3DD`nhSyWc}mon0iQRh-|`tcmk(_?!sQYwMP#EUA4tY5HG@@DD8iUzQd!i zx)y#ccjKu47I>C?oIWdv`C4TX9Q*C6SPwkmWHi7IjKz>#NF60ye;LTozN3wuoUndA z17JdMfrN#V`#Cro1;#$_Oug$nWu!qy&C{Z{X&l`INQ|%Ttb!Z?_wl+y#;fE=jcwot zJ7kw#e+O%AN=lyh_V__v{qYg`%fmYCHvZG(167B@BN>iF$&`HPSbUC({mTK>F>2!2hlAOq{eSH0qE-s9R%CD-2`0t}})>Q!wcE%it z3*_Ah5MM(fmNr&{4VYb+#sBT@`lv&>*_pg*^#sDzZSQfUt8TkjlAZ-X6eUI#(He39Us;@Z{K(Z} zlZ<`M!X_f}I{X9J9M)q#uhb+!M0cBYcgeGeCdn~L$g+6mB*%4p{HS3Bq$`q2hvF+3 zEG%;_7&5EHWuwU~Nxt9oNR+Qzq~>?<9RN6bgJtO8CwfA*)%V|*R;XV=>0!ZKQv~LN zYH#YjVBb4!#*;@{_Azeani#ej6oy9GgRweY_Y;)!GI{pVWMsGb*Xo+;_@S?kQ6FRM z!bme}ulX0?0pa*abpCN^YszpxqcWz-T1OU>=5ZCoQl&73#qz}J933V#>rt*dVMjqJ z?HYX$F{84bo`re(`*Qq%YPzCP+32xM`&g+WFF|D^g8`bC%wnXJw_<#5ABnml)ZE&< zSu{Ek^#*F!sM$+Y0&%xOw=II9Nsn>FZyMQ+Uz8hEE|;`fca?w5?4)MV*#pLlq$A{R zsJWDL)P@Ms?BhwbRTy zL8xjI05q4QkDGfx;9jv^&NG!_`sje8(-5wa)qWW{t9??>S95kKm3uhY3|lBIkcurj zdzTRV#`c2%u0}P0&3iN4$-ZW4CyfQ>=;+VB8);`pD%+=|AzBcgK$ouAi^dLwlg%Ug&_-Of$KAc6I@; zA8*e-!RnVbyvx89a!JcO<=M%}X|}Rnq7@mm|Z#0ne5%_-kQ9 zYZUZi)baCruOytiM7LcI6;qa?P$EVUR=99cB;f^(hiCemOS^!NB0OYaO%%rfdHto^ z@R_3K4eK^BV9eHz-y%1};;S8)1@Q$6bF%&@fmPPrav@9J%@I$eN1QUJZdzHyf%gUw z9XoZ=?U#gJtE`sL>+D@P?SdmuS!qH$3H912>h^||A~J$pPJVXNx(;`elsxmB9=@3b zVRF^dWgj`mVGo39{q`CsM@XCMMjJ2I1{k?h+6h zfI(*EtCaC<{0zk3L8ReC<3M+k`O0!4xo?opm2%U71^H1spGj6af@3xdz+mV&Xnc(R zK)UEHu9p&8tzfFAtg(srNuF`C_{=zW4Ecb28zZ5Ro3y?3#|qD3;K;Bo6Q%bWsd?i6 zyr8Y&|CeYKg43dA3svuys3!JyTgUh(MLx~PJI$h4*%gJ!58yG8F{r(n!#69Mw};4) z`;=K%CaftNT_hw6EtD>h~T zep?j9RxFkU=D`1Hne<`e@0Ow3@AP2lMAlM5D`&=eHZKud z&0TH00w)pu2GZCb?3&zKs!}^9uEL?p>^9oa>oksk5PVSvToBTmot+HuvHERe#5-Cv zN#jSD|C=%wZOpO86xMQ@XrOYA_xg9E-nbTIJZQ4&vTQ=t!==inOYB#wFD7i`kB$`< zz5VyCl`O6cQ&5Z!YHfm}!$0cRh6D>^`#feH75f(jF5zn%!hK9*j|)seVtV)zzzw3O zTv>E$b6`A4E^M#Gs*OQi!Md*H;O1l|S-o9gGdyAtv)(XU4FsT$6UU~P`!T%YN|k+Ix9VumgF3fA55JKr3BS*OI5=cn zm`sM9MYriMBK*)e&4ny`kaV?HvNpsEv4-W8gv5UW%*~juIw@x#?poK!`f-$40 zb0e-uh2foK{lZ{wui(&Lq z+?2xe@#;)%d5b(u;80;{?N3n%j7=)!m|PomiRenskr8Lqvu|GbiTD)EOcz;M{aV*Z zam7iYHifl|_3B8_K<9F*HZRQ~x*mB_&0~oGo4JVt> zv%R35L{adiG^s#SPd+*Hq#?@L7X_RbHM)EwrN18$L>xJRq?bagWxfzlo~_a`vo~cp z5Hdhw*r1%@w5>jv;+}c`26c3xuu#Xl`NRNx|9o)iVveYRq8Cs3ubpu3H4D|pY(N%&lV*>t<3vEwxm#n>TK6SoytS4J{1U`>qJtt0;bhxIVnD;Qf=nA9*Wv_mS&? z=>803Wv+eXF%N3stq>-X550G(oA6v_ree6GR*(Z@$ONPEfWi~k!{5U1_$yF59?2y`6{HO}MvpbFgW;T;K>P%V*WIle< zGsxkTy^~=M@(LP1?gmZ|h(i%vb?dGP-LI@KBMf;RFyJRtR1J?@ZTt_TK2;;cNssA! z|H;r&(LTMQ#E-COTNsKWz~A#9*DCbdF?M;7*Q+KFtGoGJ!dscTjDkSLLJ-Zk>M{nhj)9$aoefxE+|OvL-Z~g8_O%r|o{V9t8C)r0)B@b%i5A3m@qYL6!v}*4o z+ex@bLYU%EO?nx&+B!)=rE+q?=VGFfxlJ!Cg($2CZXhz`ADnCV#$z`1*=En44|&#v zfKXiqHHlD@hEzUYjt>~ky#qj0%LG14rm~%u)ygDu>L3!V)L)>>W~_B~77_EkHBMLk zI-g7#l(SRy#Wag#)TbV-+_Qjta9QIT@0)LOqVr%O9M_s<*y0C5@w%>RULIU{mN}c* z0NA``5ix)7$mDLMuh7IR%tg5ZV=eZLT!9w}G2q;`Nv*?ooZ32mA*02)h;Wj9^GC*J zpY`S^oX~GU_UDB@UtGxi9@mRMFYlI&B&h(AJusaH#i?Uf&8F+Ot@(oOMTm(R3KqE6 z2zs$lmMJp_rA>l8S{)wbJYtfR{|4e8O5iA1&YegpbYXQUd;p>b@~!e4X5((#P}u>LKa(K|+JE~o~tg3>^4R^Ol_u{$;F_Z}emm6E*Z%9ZZIc9t~NW1Uw|kYXr$fkAPNccnS~-ZP-` z!H5AH-9+@h04up7jCJ0xpDB5eE2`WITt|UthAv;KhHe&-%pOTfaNDMMewHW@{E9#J zz=0#IfDXPiPgXRPp}WL^3U|kPS`I7nLY3FhH_>BY3sPbWH)J(Ch>RYUvwoaUI@n#A z`TgE=QxS!5{?pe&Tlr!SYAqI%I*|VJ^n1aON%uJEgaU#< zmj*8|LhzfITd#1i!%<-UotAdJbCt5&O`6LgwhLuWWsR%l7zCj6wrrt$fkm1L(9cNN z^l892*CwNFuDugJ+f%V2?5b+o%cG##SJxqoiO3ZiuEd$i%$aBdyeVJ9)^&Jhl}4Ut zMft(9Cseff?=p~!@^ukXjAjDl}`UCs34 zpEApbwBdPT06P13zi ztp0pS`rrHJ-CIpcZJDU6JtR-COn1@h3M3@NSqtZV`Xur=0nQ7-2Mu|5m1J72u{=a>&Xv(*I7K zp~ww?V{4=$MY}2C&AX4A)OunO*&Az#bz3ChX#&Y<@Na~}!eViZ*>@*^09<74@4PZs z>~q2!^WFfI!ZxU26F717GZ3RN-P`;^GT4EajsPtjs7~>|cg`Uz4G5W0l=}UL{b2>i zR=mf~t>VsQLb)U_wb-0J;gkQcR2PzrWFeY7ueZ4V(fIY5e~0kugwOCQ1LY#Xcl2k$ zx!+=p9pxJ6WnI>bY`+`r3Fk~ySri+M!$W|O0#KX)!d_RRDZRTK%+jcJ!Rho02|PL= zXdKGs`0}JWkuzBSzl>cFx=@w0+;Ob{()-&T~dcczi958*xkk^^x%!J3}?*u}l@#=AC1i|Nk%AT%@-8(DBw z_?U!OTlWhpmUte9zG51v9_vv9Rjb=IMHZH8r3>OyP{j~OB5A4XQTkG>kJG$r2VEM9 zoWa92?Y-q5qJV@Ve2Qw751i4PoHSnl?me*n{DJgvl{I!*0t4saOf`2;4*_WaQ}j-1 zlBZdp!D@36TVqhxr(g3{LD!*=JIW+O5+n@#6*#$z+%(01% zh4PKhI{L>#cDZ06ZTunU%uod6#~MZxDvwiOStM|-Z(w42xi{BE zD2Z(gv{YIX4G8WI*{gXL|85HB#Mwxx1U`uGhfVipITZK;GILZq==%*Qm@At55@T!> zkPo#J@Ze1g6<+cach^YbX%jB^p#q_*2~t8=(8hI`rktI?49ZcGyu)aHvVR5W zH(|3vrhBT83Dnt;a@Fydj8_x6vW3wmp4#-EEiTu#V@iv9Hk~25N2R0j+HAKq93PQlMkVGrut%P!k1Kie0Hly)Y6@dej>aUzNCUIBe-nJ|6-3j z`45~|PjtRUe_JEwt|}K;h>jqkxWMPZ7?(Q`pG-m;E1zbX-d7)O)R)rMsZ*FHBW}u0 zU>b~=|B|@VwOwT;LId+oN4uBU1#1sx@*M;`Q{0liVj;1+%Ex;bs)veY zP>D8CMOCQlZj9tn7aHOgz+O^AX@}&jor%U8Ygi#R^#on(Uu?rv)R(-hZ&4moi4Gf! z^1O$Dy0AgrF z3^WN@+0t)=&~X%*GIhn<4;Kqo)K}7E@Y6##ZZR6}Pkah2*b=p^6i}GW8=>07$Cs@B z8F#f;&iT!3a!oTNtnCN47bR5SfJzRsiPZqQ}TKt29Ob)qJ-WhOIdG}AYQ3)C2O)9<~Ar?t(OXQKt??!lMBmB>v*Q! z$c@0W{RK-Us^=D;5Np=Bw{@iBFD75~OWZ}Q02p5JN>?f2@rR5`-J|$4F(0`efW8LH z+*k(OK({GxR%mUAyO{&PkDK@r4b9(;XGB*pSM)8G$Ga^w4X=_o9&z05G6yuUh}UlS z-oc#}h?`i(`XVRL-K&>9K7Nt=qY=5{H@T^aeQX&>sG}ztLX6mi$Kn7G{Ks&%&K%lD zuZ~OLfMZQUIAz0phQ9o!L(3-#AzB-&F0!)c8Rtex`=zBTT;7yD`p4E4-48 z%n-9-fxc5{z7H(Ry1^JX48>@}^Z!Ka)|rVlX6@=EwAdG3_p_8SKj<0%ffbFMhvdjE z#(tJL+blbdkFX!tS@DxT#DsTPSZi<dZ*|9(^C zQWa>`IJPKS2NiiL%WvwI=xp}n?#MN$jbu^TB^c57hcehNJq*K#9-FO)uq3V%R$BZv zmu-HN{Keg#p73>T!rIMdFV&0!b`Kdl@$xNx$-NeEj0M%gvhCN+m7Z(V2qHC3Uazy= zaY6=uO0|~L{2D%^aJI{UA4nCeMu!5dNg~GlX2`pA25&0?+B`K!(A5yeXkKpPxeUs9 z$$6RU^cGX{)f-(>t_J_AG1AFqdf_v^On?nSK`poc&?AbX&^FS^9!CkpeMiK6aZa17 z;xjfrHu&!|^i7ro))TKe=qWa@?b)pA0vwhx7?VVb96fBy_+Yln>e*hDnRaj;R5(<` zuSVZa;#ygq4#Bb5$&|&m=r`xspX(CIr1brM(_`6qB@Y;pQjnokdQ|b)Fe8(%CeIv5#P`d*wTdAdH=- z8dW}`ya7vc_rVM_R!+EDGx0Fg3E@K>v)XzPgmVnVkfy z1`EWf_<1#Bd0t9QhTQh&s+q%uE@Uh>d0NP6QR$<1p+Pp(1BUXy^pc$($~PSDS~${% zl7^i3OHk@@wWsR@5R6Xu7_B7Wi4_crVo6x)t6BilHR<{)mUX3`)n=r)mY^XojuI|R z6h6L%Qu6G7yIzDz&bAxV;Wr7i#madoKS*LFgXDgVcy-rjA-cyuPAGUWiZ{)TXK-Ou*}AhyyHpg4f3Xb^ zlz~B9^#kc6>Bt+FL88%*uoIJ4f{UWDjk}PpRChJCJE02Us~h5&GI1E(luxn8BL@zh zfSgL4r(DY+UMK!aF^xE?fFR7=3Pp>a7-sh71C5c#0%Hn@xeaBQS zP+jg$*1qaV%mm+t|K^OX{icVug-E&fW=J)@qG#TZkiz8OdC97rF)vqqVN3k#=+=uO z-Ty-o0Ys@uk0u$MQQU?caIQRqTly6;%7#tRXf%&Y6i&Ava?3iP_^|&ufx!39>U8b# zhm=v%lNrjb`lBu&d(~6U6LIbQ0k!rYCqCY@h0L+#WDTF-P#iF}YU!AwCq457HI5n) z%1d_MapZh-vc9GGL%Aey$Yq&6)aTn8VBiTWZ5y7X7$#y?)5csJE#+YuabjZk+#Sa8 zI)Lmj6q36WQADE$B3)hkwn4!Sfyw9bwMcGS0NZ`r`#RZk0FmOnWHOfN@2QyS*cO8E z-g3LKVDnB4n^$e%vKe1PBJ0vhlw!Y@%*FT-b>lDf94Q^5@WkJS;S%89qn_&9cB8>} z3N(=k<~$=uI?qTfYNR5<+;_7+%5qKpV=CRorwHfS8+b5BjA1lbI|PFSVl`u~Tz$qLeF| zF=I_aTOLeUxld_|%(DP)$WfML3J(uSp>3655{`N63$pnSIK7Q*oicM%Wp>_&6||~8 zR9!s2>cC_YAl6LV7S_&d-sRX#p!}S?7HERuO8R-pSiOp@9571-T0C&#LY=@g2XE6R*yqON_tf3^H%>( z2gvXZ0Ksxy$X6~#Oe|DMR`EO;{|QQQGtz=S>rBe0}hLx#2q2q(%%6SjLw zOy~vODX{5LLfB2N?AO;DJ|WkbAN`{xXG%JD)MPlGtT!YD9)er*2sekUnsmBM7scf= zyy|oVvmxZqVtvW`W9*b19b1}+B(IbwqRSZQwoB)r@1Y!cTk6$gag6>4*90O0OQ|h~ zANfP-AR67iWbfb?&11gtG_VV>#^1y&N-73JeHy?@n~gSr>`0@a1KJyZ|F`$6X_WqF z{C&`E7efnUGMEe?jKv$t*EhM1kYK&)^KjBNsNirH4?1w%;9C9oM6WPhpRBPcPc!y= zHo_-~lBNF-QZcmtQQ(TzN2&g7x=LVph4ctqFlov64h(re!AumJH3THL%%J+&CY&lh znLBXfB@nr?TDIfEhX=jR%C%qG?j{4MGA32yL$V$-Xex$FiM|*Nj=~F-0xP*LYCjRj zz~8Rj@qdQ-BW&w@K)>1GH$*&SS2Fz_Q-i>YZG{19 zC8GKZWvsdLk#pabMi~Lqz_&^J+O*1k(7Vt5a8cF}_LN`FwwU81Kn1@3K%w#9KJlcr zQLFxTCN_A#oaf!F5Ojp$bmN`!!Qf&f7$n|m8fDC0m!LsL#-gFI&qx&aY4c1|cWjDk z-U8QN7M>tD*{m(_G*`3o7!vk#m&a~V&)n@j=M>nX#+2s~QI^91xyrf_TIdn)hCXD} z?4#KC;flJg*e|0usOeV|i~h25g&RyIXAMqGz8PT>^?WLBxQc-G+$^f|*qB{zn>hsM z%V}9?Ls5HJQ)o;_K+>9o)vExF%=Izp#AOb~SwLz^N%4SGSNfMhLM+Ovqu3Ihh0U4d zuD&w~k#rmva1A?eYu(Hte(8ao@v4p=*~X@%R_$3TdtGUx&2sM%qQR+Wz9h($c1?iB zEtfkOiOu=exqh%I7=lCSo;2~c-?ijl%s+0HJ5$FTxSSGdlgBM%!~*cCHEbE3Dk!9N zM2$Siw-K5zAB=+Fb8hLcwWV9IJaIZqzQCa!NJar}GeGgUB z0GOi1x`1!f^enH~LGLCp?6lA@8&HY#h?ZpeK|P4^MWcW3LNVE?Yr?g06p;Zt4T7Ke ziYxq`c`TS_8#`P_nS$K_VFwx*cii|!xVS!WyW`az&rZD=*t+) zq?>*Iow+iNEkLw!YFKn;1z7{IUQQvXx>RpeLfGSK?vnAPka_KrMntgyA|f=M8r*OE z3MY7MIY^c_h(Fr|dryO>kRC;_Sg&n~SvzgMW9bd`6G|v3U0#}y##o9`q{^pORJukW z5N9#4rAG8Xw9|?AlX|C{?2=1>B5;d|C1=?{Pdi!B4g3-UeuTG|+{rH|(@uI+NYozY z$i@iFvnpM*-lrkR+adnD7^wW3Iv&ANQs}|}=qiFibH##|jh3&8F{=e=;uARLqfI~( ztY$kf;#I95wUMLfj37NubX%eBm|2kK?ET6YfD2ukl$RUx8EK{=mkPplun>5O>fyNg zaKG?%eZE&mQ~OkUpOVmoe$UAcm`ZTcqgJ$n1(SF z9JaJTfA7!T1y`LbYH48kZKvE4zk@l)8%E+?*vj>h4*S(1M2?N)hD8fNVME(jP3RK~ zU;fb-4EvGAnG+%9xmH8tkIZem{tHv)_UEMZMRLK?c}#CH&!Dp$eO>NsDU1w&X1d<- zSnVlCqUCnK48P=kcy5l+^I)&~4*9d-%2YOZO|_W%wCU%!2#f!njRNL2Tvr zxz>c5nVh;|EATNkAp%)gQw#B^1rf{l)|I{={i7)V@0GOTnRGr?9j_pG<;-zfgU(s1 z*{BU2qq?>P!&`unH>U)zcgd#LR)p9$5lm(GS7J;aIRtVmeO(l_^*;fIk=h>)h_$fo z90P@y@GY4A0$`>6oAy!5_jlwhkV@}6{Cd%}jeUrQcfA&N6E6yoR7zM{Hv$#zmg2Wx z)z0bxFBg%*7;MGDcqf%|My2x|OuF^yMU*Hg7OVCyxL4Qtct+qFGOS2>*y8Y6XO?8b zp6$v>%%Nfd4-p~4^Nm7?oPeU<4y1#}+`G@+Hexn}cfl278ZtsJOI%;x$twh8rXK&( zmoz}4i-@sSw3k);g@pm^C?C>lv+ly@^z0@QZ7C&TndxdA~jam1>uE@ zGKK#LbQ3R0zgdpuJ%_Aeh35$4Cp7uzlXPndTxVkp(|tmtmh&R=w`wFBkSea5kc%w< zwRarC1d#h$%f`2pqMq4HEnJaBk$l7MtR~|3l<3>5%?^FFVtH#3!~z$DxduF8CaSiA zZ=VW-^#v-Ioya$>?ecnMfvN`fuE_6a3-L!{)mx)huYOCgcTCN1d$*<+X0a*-wt0|DTp{idEsO))Ca|#a>3%Qnz@p4;nGe-Q zDX#H6Er|6HnWd#bz}5C`mYIe+Vjo8~Sx1Iz{8eZk=9k(W7(k6AqmH9&%7+W15b|jnEUY+>Z%Yoa zhSxEoG~npm%X>l98&3F>N&>L-o6IuJJWIu<9oo#9_sm%_AOs)5psXdh42=;PTnd-^ z*H4HlSs>Ou*&@)dpymBe^Wv`c{bK?d`lM|!Ai_`|0mBPozK_FD5kYd#_U(2 zxM0E5T>XLUY2`!TkVN68?HZdPVY3e$OL^TbhmXbqUKiNSg7*Gjnvn=0F67pG; zc%Sj^?%Bt|gVEnf*$5|-*0<^6q2(N*8@r2-E0S6<90B7~S5Zpowyoy?z{(EF9fiapo=jPMUJIOYA;;y2g(cDi zXOm2VemlcoF9CBW-r@Cs35lsw2&ez}s2vb=7h<4&qpw96&6BVgNKW@&B`QbFS+zcX zSv__z>6{WBG)qK%A*!LfT58;Yq!&TbzdDxn&MrA_X4PXh-YDRGm_&9b^@TjZj>M zLdyUu{vw1!p?%Qm00-h#(^II6 z8sn%yz_ODYui-Y->~pQwZ7{qrI|dy?eGc!I%p;bD--Ny3c}PFy8-CW^SoAg~pqBCO z>XKg8yW5fZUF&H(`vZno9{JN3jd}0TpMKUrCKI5tfGg+$n=)ea$mwnC9X%4Spaf=d z9{<)zE#T$pRl#|o+lUK85LRkE9FK^}D>)J~pYOc4QpI2xXoY8|%l~TE^T4 zLMDX1eNa<2q=Y97l{{-bU)25B(&g#90EgNqquPrt`Q#!e2lZ>VPRfZFFaU7N8=b+}jad=3IxSQXdhh-ak$Q-T5syk1F z!3rDFB1jJ&Ax1{XV^}Ai4U6FwoKw`mHI^c{)2l7OLTnHxknsJtR4d~~18x5e1Kbc) zrT5NM6y&17iew*VW_}SC@l9)_I(NGKarEBV@LEx8F z_{4r&yF>3Y=C`^v4xTjWT~ez=RH~A#z!gg_Ad6`+)yunCrzFw?GZM_y5X?D?&M$!| zywTk!^`R234#ZQ|9;DzI9*}2~Yme9*9a?AV+$>4q-1)U>qAn4{bMtAU(eyuk?KY*G z0rOr*y}J@OkrA$f?GFS-z$!I+rL2Geg|C$v)bY zRq-30HW?=yN%K80q#Pw$6RM|~g2V?GMk|x6+DYUWdFdXbpr-ie=mp|mq9bs=i{_B| zt2gE`)ZQ@yiiDNN0?BM<&=YpHD!PG#S)F9qA=ugF5U8?S2l(vLb%eYeiBHKYcM!h! zD9P=SnFIwGuxX@)AyW`x^7*fVAuYVLzUFz!4LoSDNrmG)+~7C9J??T^mkIw13sg{E z=f);wCmIiChkGmP^|}~?_Vu*%WBC?8X&{-RCbm(5sya(< z735$YLzc*Mznv;Qp<#t{sExrFxcCVqF=R7*DPyS>KW1l`trgfd^v>ml3~W@>JJ%qA zJez`D#61hV(Nb9Y7MMUj07{|0wHu2hA>F2y*IolUvoo2A!jY4(vY?$~v=POv`M zVSmo*U5aGA4W|oFplX;?0F5uqf>RsI#}v*vD83=vyRm?o)vP9c6vebY)J3DntEDJg z#uQhnXJ(gz4@BW`AArv~MI0UngXudn`sE4#I_o}rHMA{-;vff$B50{~S2!PXm;Tu} z2>J6i2iQ!(emk*Ux<(@@tSvU$o)ch9o(R#8^0MfV9B%KVYcugBD*KL?-1A07(h;hO zJF3!NXil3vnvuC)%vHmonLHr%b|!?x|H=!>+vznsV9V{6`GCd`L(I`l;H(#QTb2CZ6GG#K9={!Mz> z-_XY*cq@knXN&P1`H|n%V{JO3i%6Bwi2qts+;a_e7$&LCq5=TVgEuB~x+QP0;uNK! zZxnC|Kv~ z%&=24*DFm{lmf!gMWnu7GvTs1mEt-GS`^HDLP{a9)4z_`^IO*=d_r+FNUxKBWbI$* z5a4P^eKL!2{N|2gOPvK-3Z7uH_vOQ5SGg{m7TE}yZiyLaQmjw3ZXC}>SbU&cgitz)8?CvHlu|O+ zrC}`hic_n$$II$k6Nd^30NyLD&%>t1$q4Byjl>1f03}qn+ELgrM~9Qx@!A41)nVec zLq95R#x>P4PBNq-qZ6Gzhnipk$HC_;T7nq*^TWd6%3~x#hJ-TS2ceo5w zd~D-pfkq?1wuNs*E9*<1G3og}?*NvQA--`)&1mQ@ZFUC>FtStB8E`vq<5%+Kc%m~j zxPaGeGE5mqa4VzHSC-_rfah*?T(hEA<+(xT$Ks8UKolfEXD?qk;P+`0HU*tb{_M$?6Fbm7CyHJ-=;DO4j$tE)W;A#2K}}OL2hR3w$u6PaBXB zIXf!7|G**7^n@8-D<%dE{I2M$-ur8P{X;`v256e$Lf*SROdHiJu_dYhTg_Gd+Iy}1 zzL(s=+Drjz)Yrp#tE7k*uY>pJM92=I@`$j0$7-!sE)|SFuQNjhD z8M11lRh{lLJM7AqgL01vsLR$BU9I-#@gK-1wh$p;!)SRiOenJcU}hOpRW^Vu*s|k! z^i1xDXd(?W^3TORVuY_PxqE|vx)5Ku8rn|)dk=nyg7AfjdSUUC%tK5TKw(Q7wyoAN zWM85fe`GpQ%#N$ggq4vBCofAr0`F>^59>^VbX-b=4@!R#_OSpA2a>o4!ROa z@&zvk#!_9c8}cNGAYCP2`j5;QoFa^RK*IGf9$6 z)h6!;I_8%$^SvY+`lm|UHG}sb8ZW;h(JI1vqOfdwqrCI8WMy?j@iEq;h{? z+LJ)?o8gFCy?aPr$h32Ss?B?i{{~MZ;Wd8V9XfEJBu$0FxEEF_%K(^O zj)ca1`6s`@o9|`VpRGKJl0O)!MGlTW8LQn5c3acB9^lnSq5fU0;@6Qao0QM&V)nl2G#mM)xtAXk{_~J9?E30 z*_u=>4L1`lk~xyW%$HHmhV<`6_CYyX#!6x*GXcS<-GeWzxvBV4f10w$Bp5)B>}?BS zjGzPCRfR$#m3rC{Py))jzeQ9}nr`v2@m9G;bNlXrVfCIz%Z|E8=(r~Pl;U_sd!@pI zzXT#ox6EGACbq@LFGRWIZVzuabO|`I77sSfDiEN7(IXN*;q(&|w_1GJ@Tu67jW^i# ziANax_t?io>+*dfV&*^jU#+vUtqXfX@>rxW%0B|ER0*)goTg&MIzYQ9y^5wleC72^ zwBP`~%27y%#w(E$pf+vso68)iBN(*r%`0t7=)iH5M~$SPh2;(VLkONWClyRd&;FJ^ zcdc5i9!PSClU8~{e@?-s0hvvNHFgHGm%re?P&TH)j(VUJfogB&{a|2(B1}8a3*g?r z$bPwJS-=FIiSHWO8>LAGQ!8jb#OpareT2)S`jyyPvtGr*H=5WM6Qh640}!i@@Z}gH z0h8s(xCA3#CjCLmK$jiyczH|;{2q$-@sd*oVs_7%K6vR96jk!gbyZ=og@VwTJsi`M z4kHk#+sm@Wt?noQ%Q-Sg-z?9tODKQ)PQ?Ya8C)p%TRnP@#$P-6&~KZ zP3a1VabB;GV0ehQ2#10~3Mb2v3VN**Yy*7RoYf?hj2_NMj$p-L`ohewVlhWrM$Uba zA*I0!x;(v*(ft)l_@WAD5hsYJq6e7hvsdt9Xg>j+JX*AC6dmDC#nNJP70Num z@Rkg7&CV5^XjRU+ez$I_quu)r2a=tKJhohBHD?K34lQ!kjE~HbHr9>0dlB=elPbzE zLfvU^Bsrn5s+nPFJS*h-Y_66d*k9g!fj!c3__nikEJC|9i$one{ zytj@I5)@f9+nQukXUPhGQ=o;slple%)ZcJrFPsDTBu}u?%&+&4q)!w+>y@Zm`MMT@U}^!Y}Kkjmas z_p5rDo4>BlpY4wugnKhT+p(=yo-9lg3Qdqcw+4ldN^dIE`CSKPVbSWkag#ap4yK~7 zJwan;$O!InUl120g*e|arH6!c7~BcVd)ON_V65hbD#;Ra*EFJ4k{^UjS#NG;Q-h$# zYR0WErfr`I4(W<<^7KgpxWh#a-5z|uok*+pvI^rQ7fpbUph&jxQYjz3%I}95rP1}{ zfq}f(8)#upM)iU03Drr8U)rjiBSAP?nyAk5=+kj`J#u8UK3W7=@AG||>oG@iLOkrw z5%){?2M|)4idKJ`Dnu0LIO$v*67h~NL*@`@$h6h1J1+w79f|gb<S zmh>+r+(GL2qIcO>{)nkA#4S`Kl^McxKNkr>3M#6HWBX<`^f}C{*+Vj}@D*-p);mIw ztR7S|L!u+!Tk2r{eRS2yuIlhZO^pIWIxt92)`wjP%q`xV?5?&gdgFDwC7IjwEjaO90{Y!L@wO#jr zq6z{Gq}OV06zbo|^-*qR*M9xOHD!>h5crXyiq~QtPQ-jQ@?dA9ml|?$fQiY?SF)c8 z+IAF;LIxOLCkdPH%iNQqCs%dZ&6~znDe8&58cIRo^UhF2*D#eT#L31g#A1jT?tZlF z#zAFSij)tDFbJ`wE!A{Fz2p|s*{keU=kK-b19kmhHzkKI3SOBpH$h(w3BUY&Fq&c<+>RTr#FL|B_+$uvoLk^YGh zJzlk>CnEezkv5z!Z(r=CDKBbHgbP22ow5?cL&3SWvNwU=X=7mNG7~7%7ff` z-||(>t8PwxoGF)mWwqC6U~2a^vq7z;wm8^4AdZT?g!y1WLi?%-fL5zM0K>nE>c%fr zJSDV|y6*0rJJ6PixeIJ5+%xu>mYke*tk?lU?;(5}s$d zA${BqT3dM!ihdQ#u0*Axe!8#nv?-?Uij!e;)aIUJC_piEj454_sq0Sst{h93hrCGWc`?@OT3WNc+(_-H@hJo#PpN|Bb=gg&1Yv%r6SJJJcww*Yf%LG;( zX^A;Db|ZGA8I$ps;%Gs(MnEET0`cWk>c;A0UZGB~#(1aKSmJ>lUOBXa%O()0$}I(EMc}@#MXy!&F+UL!M)7Y+O}3W^jj)^{PKnKYDUhehAQ_|$*X&ac>V5xvQAmj_#C6_rJs`~ZL7vTgC2HS%M zzUe$9Zh@M+^p9=wVxDAg`|W;&{N4ga=Yy#t6*KZpKRe9{wbvw+E7YN@bm5M^8imO+ z_AvnlH?u)~^{q;}S<8qfoq99*(?I z?0IV)l>(R#!gMfb*eWtZZqM6)dL$T$5#?gf>fvS0eOso4X?Z@PdFW8SWT{NLvF-(} zZ>2=pjn&~-`j7@B(c&c%mFFtT4YMU{$UId+x3gzyZIq7YDl}skZHDjY9R{_K&QoZ1 zRn8z&>&b28B^~snVFhZaqX5)*seT}2K0krnDJ+=fLKW| zW@6$o5Gx=XGXz3Un@)v!U^Q6n-@lS%#8J{1{pBHj#H* z`@o0;K|@d-Pfz1D_fhLqpj$b2S}hZdtei_&V-&y1nviH$nW^%C{6K0>n4x(E;#!}M zXS_VctMq4?rezfP?-MIbDyWECLPg$LO4w51@DjmOe%6-7I7D~^xAk4fW22W!{&2QY zf=X&H_*(TV8LpH%n|jb46mz^6fJo4gwQVeSEC~5iW#;j7b21g7pE5-dPz#I<1k0#t zLOmOf!uI2~d3$~ZDnoI)8#mbftM1C!!Ge;LmtqD>CQF__6FeF#u=e9XB_s6HKi@3w zr>P8Ie!n7v1U;}Wv|O7~2Gz^T^mXgLogdIoNpTRX7mw~)AuBKFbO}MW|0O_FQ+jh4 z;D;9Io#45ThvMC9ZfnsskMcppFeiMFP(=<#B;!U-HlLK&$fH>D8qk9il-pV-$f_5e}YzNnCd7sHsHyx zUi13Ex83p|@*_`BUWWb$dsx?CS1Q!8zbJ@UDDWEBZRlkzgfTybp+1X|D)={cF;4~D zX2|%R7m4&U;!}BrFT9yV;yYb^$DEay)k&U2ff4C*Kp$8(bE`}=1;gbyskqjxR0Maz z*qUIFIa8Fq@_L1^_BA0h_h2B1zLTcZNR1@I%v>Tb4fr%Ca5D}mt-~2&u%cY~m3nddS&{*EOe20y3xdX|sf0Jd%N4rk-`o|B z;1DkZ+S`l8Y`+J_nB8SpRg0*1v((dc5gFBf z6ZDEoI!!UfUK*e>X!`1wwksQW(uA0AFET+P#Dd_A2pH~@DQ+3<;<9_gxP8)e%PZiMhi?>Ch!RvVP!-;LL=jg-fo1V{{ZY&F#rKz zOwbgCQdAErqnQvJ){~e<;QgCb+cC9)TVnO2&ppAUt1Y5!L&)EeF|MHIOyg|B| zIp%*wO*|De5od!chWt@J!3d&g>`L@0RpqzoGhANH#J{9C$}h3k?N#kp!t+EgJg)X7 zY z_~3z*xk~DV)g#b5C&QMl`eP5k<8!n~jcy(|9=Px<5g$nEKY5J9b~+C|`dJYVC0e2j zP*;!yAV}ICk3)e1ZIQfS)${Ysyl(hyxLgMk;izQ9_it*l(BRN4ann~EAULivaom2U zE7tpGe8Rhb4Wn7Y+6rwQDb(#H4k4&ra3|}ftOEHd;)NFIVR|hLH<+J&?$C&Wy1H0&jE#oU1K6QGsB>C?KG}RFniEqzrGl zvfhDtEj<}=1}|c!r>smE0N$`$m%G>zYk<#FjCf7NF=>7W^RdJ|4G1SFd;VeuZi>L7d+NhWcw@D-aC9Z;aEOrT9d}3wSI4!9t+9RpY?%fx$CUI}ixjG8E=i zUA2wt1K3`VGJnm?qZ=^e^jZ2g(XgFXLmz8K<4S!hs1d3q0l=6KE6O8_x6-|&z3%88 z4?|5A{<|M)s;A}UmsNXn(f>PvGQGP}jqcU&@l}bXkF8=TTdIHIxiX?T4fe|tf`FXBXTTKEUR+uK%~BL#^u3V5e36a2QBDqtY;Z+iAG z3y?F4r}13=Pf?krjLmT7pavpljf|t8Pb9>NurI7egAQb$q5NiIxXas55_J+ z#cnP$w(+h0UC`Jq@B-kyVgNJt*z?6rEP{JP=gP`Cxbw_x^IemI4LdE*?d#iUJ-FtC z_sQ|!OUQ2h3Q-`*9=y1}2;&_nmS8KmkCglO3v1jdp!*{g3eWZF&xyzTTkBr;^MptW zy~F2He!m(}`ITgvkgn3lodQN3G)5{XP$OmLQQ2A!zIZ?+M2IgK%L0XCRa61Tl<^yL zI2o^2skie=l}T^Wsj8ztG|Y;pI%mg>tKK zgm@}%JF2(Ft)3Z~Ab0>t$@WfWrM9cG)m6g1>V;%jIam3TVg*>Eb40F$i%{QW5kJeA z^7l1*!ePr#ZDnHuOtbT8-t8W!#NFt5#d!u;cP-yh_o2MBQ94hLB!pFEw6tvurQrlQ9FLI3|YveJBnov(4MTSomcs!~%2H6+bVW@P3O0j@epPZRm4d#kq?DLkS~A zqxp|++jhV4E}KQ!;m*{1Jox{Ukm_tk``%BbNg~6j=crk93JPBuv`nZI&xM@oh8FWZ- z{gaa9=Fq&%5YdpxYxJnmutczxY?ARQW723GTa^lS6rV1b##~8 zwEngr3JEvqpK;lFfThto@0u3%o29VlSxpbUzNS#i9ux}9Y9ve8#(|tu`Ieu40R`lz)S z+EU14DO}n|I!S;RI0q~)*feGF@Qyn#8|!#AAEwAu5}mkq){=dJU`qY!`90qD?_eJ5 zp~W#DdoBGpl4%eM6h;f{K$WEAaNRUSq|1E&m_P_s`;tEIN!1s%Ho!+s(z`D%4nk3b zI*H6iYZvGhMsRcBVaqQFJPd#620VK5EFl47xS56?{fiYb-XCg|QT$|fWYAh|Edcj0 zK1<#PuY?^yzkvU`xN%!SS#pytJ*xZugwVaayS*hIpYSCk*Gz{Cx-3JvA76MN?En3>oAcb6v2Dn8C#ru6@@%2w>ZMaRcwD2}+gX+R;|A}lz9>CKz= zR^vH~W(wjcIe;8pcG(*4KG{*PQ+~=Ch&2k%xZ2F4al|GG&o<{?iXv063y+CTPH%-d zK=Hg|eM>K5^0%64)p$Fbj>oL}|DG^!3Vn$*@R5P07Zl^mzUY6wNTaq?;}I~1ngK)} z+|Ftd#Tbw<7eu#Jrcr(+*8xe-muHO`DB8ol4iYf`o{)`QwKFYPa^^=B87P`oml;V> z3JJoV&9Und6M^(0)OUN>g=7#ULTs_$sPv7BUQ2mQrP-0vD~6~I#^_DWoc}Df%c}Ki z{3Imr9OIHk0~c*vcevaZD1&^APZ%X`XgLpgz7l&Lw5%5+bQd0S&>uk5KTqt-+bDT-bVOd;$;i5fuZ&PfEx7Jm`mEt<3;PW^4vguZv4^Bg#5qnL2D3 zWCNvWkk1f#^WSjBFo)ujd?=wQ@`rZHZIp?^q&ZKSwJH1Y7m`Op-Q`RmN6^L+8C8jk zE8yf^W{}!yP+Dq6gOUxU#_(b(Fyg3ze%Z8X`rvJpg`>M*6GCGq8 zaUi}Ja$=hTWX>8ZIlRKXiv!#C@+_>J5>YX4tJ~(lHsXA2CEr7o1|W~Lq|8aB-vUBy zU0nNN^Q|Bt%|(qoTr^jLeAkWi%8c)A^ch?Jn+nv@7+|zB#0pj+s7Cl-ez-X zAcz0C4^yD-)mpFBQ20|s+Y=) z@{MnkU9>pco*6E7b2Ye3dI0a4G=nw*I7Vnh*kdWoD}-!CPb;ou?o7{%Qo7_5&WFV` zBFqYaM@@KN)tW+-Q4ezy6un!Ehq0a84~zxW>hhDwaSn7-tHop59;4b_e?~cy8Jo!m z0FmRQ!SWJ~Z(zMkt6W*M=n>WIpFKlcdFjgHI7wBS{F*&H2|U_G5D}o;zt?v;sE!VQ#Yj zE`1MaEJigKCwxWsw9y0f^>Zxp-_Rnz@(1 zpw3GgHo8?#FYAfl+A>w;OvRk?y+{POd0MJlD$_6w8pLeJ*Zt{ZD^U3cH-=W?s~ipV zm;Z;rmZ4Y7z&N-mtk{dWUWL6|JX>H!da0$mb|i+s*RK&@H%%tMjRK*S_*gK|EwnzP z_kuF(^mcp{Lyp2Ggg)!{0*-#ya=Tkqf@h{Es7Lh$3*&$)+7dZ^`ua4-+3Z`T#)@nP zFIo|WZB@35nO<6-S=N_z&qPP!V_nXnb$bx2M}(e2L+?!3y530vu1PHh69{U~o-7j~ zoZh*&R+W-sD?tWT81Rw=i(++-zG@>cM<+j@*{{({F=)gDqfG~rRwjClc7O^!nMKV2 z^Ay#OJJg!2V-DJnXE%u3J~8zweXXz`ysv?^y)-oLdQRRY7wlj^ClSrz)e*{;>tvEe@8qGz}!ML~h7Eww4L z%sGRKbMOD3SyRHdL%bCfc5THRW)5X*Cl-8EYqvCZLBiDOnjImQ<5x+FW8&UE9H#IZ zhL>|JWuy|UETL|&IcAasw49&v7cp!sELf$^r zFkZ+!L>ez;Dj*PxT`v)WwID@pl$kcxOAiw?MBtZMj&@w^kFNiXT+$b~PdPH9gOCeF z@-e_?=#!(L=y$U>{rI=Myiv3&+#pL*1vhbku7T!TQd}mQe<|TKfKN1qwGNT<-fZgc zId;x|VmRw6!by=6@_*Pp{%-HrY>}-ftiq?DG{{jS4sOQ!bQWeIhI}dW5dyLqlo?Ln zS!LihTEWj%I0D?I6Z|dzK!+p*T5aXf=%$h%|6=<$+vCjNLtvN1p-!mcGQBF}0jNQJ zC(zo55#C*DF@tnH;}4mgl*1Yog9V9EF($5TTrTygC1l}LHf@Ia5)dlq5wxaj%M;*_ zAs1sx9@fxf^}fL&b;9~=^-|9rDU&w&Gp?26I4_gaas)-~SmObYg+?DII}h?X{!@po zQu{0{lu;L(T9uTqO9Bn^eN1QUBRX1y+z9Jj{slODj=yyxIi5a>u(&ke$x4FGu>Up9 z73lfP)i`sFB-b;ip3MR0n6s>40vZL#MV~6X$LyP>k5cy1z)P)tVT&oPUN?5o>FL7M z8Ovqq;%Dnv*6Vb=stsi$i7E3V`CwO(xg(`NCcjSIA#I&V7vVNzo+(pREiEK0ATtd0 zzgrSCz@!DjVwAHyMFE<8lvxW6H&aL0at9L4b?teB;J>ZZ_FV20)zDZA(Bp)v?UfZt zTPth5jbBD?P&u|UxGkp$kT_KT(Ww9vuoN%t*kZGSREf^f#DlCf2DER{$~7>r61EbU z15x3(#j;zGM`EIN=9kzow!<_)yR=F?(E#?|&l9&WqhI;wbgy(}Z^~*}HH3F%JkS*v zTM?tFjd4Da`UOV)ktN)GpXQ=m_Az5S?NurY5@ND0Eglde%e`Rftb$}QF@OQz!7w_S z6P*pGanSJqQ4c-~SNVF94)V|k1{6q2!+g*%gy**Q#ktQ5xjanycN$zFa4QG)NWfl<=hhMl!fWIIM9YDw=|t4?{GwZI8yt z2g|)+yHj+%QBw%!y=^j4-O-ZgAf(dvTU4Lb`*S!WCCGT#5-V=h<){F51>UZ3SX)4w ziTFoJuqx5$&`$j?jTyjH5L#C&7Cr6aT;a;9I12+z94Z&v{ag1BH3;-A`uh;|GvL{4 zpk)%jdJ3Z-`Dcpbm%~d*e7DH6oEzSBT(OlOmf@lc$w&Rfk-T~ook zuZ)e{x|V&hGEp&;`iuHjLQ0cT&M;6%X&wZbISEo#41*z*31K{+rDDLp2jNE!sR*qK z>`0j2>c3BUJqtN$`)jN8DEhl+*`o5B!be|`;U3`6rAa-O#@R6gFH&YlAvcLSE`Mj? z{0ZlZjTCWdFJMcS=~kjS^%UV>kJxn679d%^Yd>W%-a^K>k$+)w#rF_pAN`!5wTZcy z*hI2M_P6z-$1#0hQmR8;w?7sb`0fvFpCmkyzKRs)A5qyrAztXX7;KG0O*nl^zSGyc zC@VOFh)4CCIof|wZ~&t;@XR%2Ptt@RPx@EQdkwX%vKY!D(QQ}r+n!&yo9FD?NGbIB z)WBG*XsQ6mBLo|ny!Myl1Nn3`@B-00*$wx+t>x2lF$;R~^PS>`;2*IA(9IoV<)mhm zp;&s&yHs_snL1ywBQA!)7ns3R$o|{h)KH+Dq2Gf1yS!fL7)#&;HwfY_K91?La zc)0WI?2KKb9c|w^z*V?Rtv^8@omo9*4efl%^X+#eP$z`evja-}9_)u8I4c#?wWoOB zpgu5W7Dtzoj*L<;U}PVqNYY7!SIMI^q;zD$0R?|5Rga*J^EW{6{I_?DbEiJ2Ob-?v z2_YqN9~Ew7++*;Yiv9YIzgADf!QW99wQrdE-F@GAabyDrSeRsW2okJ3Dx$UnX&ji} zs_l33`OeUF#&cJzvYN^|B#gZ2Sg`;rt!!vB3)LA|WrJI55M$ zvo=5}975Q2dC+_$Uccl*=IeF;Ey#w71=V?%4h^B-3P~al18sEUcND!d*+0tkUX z%MuoYGs!+;FZ-6i4f>`HzUA*73PX>GobR)^$m|9ZPnTSzcP6OH9EwyZAu2`!>LwcJ zC;)!uY9qlOw6UfoGUa^WDhDm;F{`}zF);U89_!eN^O7{LO2Pee%bsNv?--5GV#*Xm z@t0%yJ38oJ0YxjIDyN{7*bf9Yd6o@6**^V|)F+?KvRzQv@FqXL-5u4b`aSV%&Q^h6 z$PfobEbeTT?wrGS+{u%VEMq~KxH`bW!|p`f z5Crl#l*T+R(bH8Si89hSEkzIXkKccG`RBIzjFeo1nmPdZlRlyXbW7wKMTAP%LA8!l zkSLg{?#@9BN`93wWcQEYp~qT`40$9)H9yG9lI_z*h|>{YZbDB_sep#V&@8t#R*thM zfyKqTa9!$R9cK{@IJ^(Y5R#VaUdPcOgO1Sm`Rjs}jFv&aE|5^_EZz$dLkIrOICOW@ zS(;Ylq(js2Xlw4wv?Q8*LHB_mG-T!HAT6mjmw6m&E6QEU2($-ivanBM2fpfRM@nk; zfQa=zlA%71ThK-hb6uHX(q}OdPzuW~I>a$(7FA@`Ox@m@ctn*0CY<4|GhTE>kwr4Cs5+-0Ei*(2A40f zld4R8{}d%_R91i)|HO?%?_;FVViGU^(Q{m3&!oPRl`K{{DIZB|bRNg<&B`^_@uqH| z=#Tlc1^P0IQP+yLG>p+KJz^=uKu+$tXVI%-h4!zYd9|9vfJih3zstAfz##Zzc;9p8 z4jmh#h5w@;Sodjl#dMU6FZHJaO6xoD@Bhy-_M0Ikm++qg=?dnX0uz`gF9h#Nd4?jKX7Hn zbTF)WU*OY5INT&-uV#EQsWAtENA8sK-R`0T^u|)e*TYT=dTVg|UAtGOZwOto*F6Nh z@u5|+!Q=eAVL6}rI)!?02vY`!iApI)X!p}Ic7Rn?i-S^>Qs?<Qt#(w<%L+mfF%Q^)C%Ft03JOIkh*heFkVA^vC+l;Vf?_k&(>dOvgXsPj8^mHNvjre;O zi5eDgY(wJJ?hX*s02sH|&7o`akuj2So&BOwp@OS_VX(6>V|~xJ^CW(<5YBQeFf*UJ zZW7=xH)ImOnnA>%MXn)+nzlmxKF_Z6>d0V3xmST9%tFeET#|s;w+3k+(B`Gr*fZ5E z#C~$b+Er}Hq|2?xKdpzuuH*cnuVB4||9*Fe7i~Dm<4?L#T099oGOjAll-)nt^CTD1 z!(}9VK7k^4v$g!C#{^&lA-&MyrFd)lt;Jj+Rp|3VtJDStQnKe)uF}-g;sYQ^e~o`L^{z_S z=Q2P@BLf;M5~kZkP+Bc({E_X!tE&bmAN;+EK9negz>f}xsTu58s3OoEu^dRpPnj$1 zBw?>)ow7(lF;4hqi-h85Lo*4%jVClT*zP@@u;_XO023{!ZU(gj=Z|=7{mi+`{0SgV zp(Uit_MC#J2<4E%8yt-uC12i(>_q0!C^&SC^e-Rsj3UL>q zr(o&L8d!f}EZ;4S(2kKSmDs`QB)DYQ32ar@d;Ka8R&skO<(6*kF0__w{|5fr=Zwpa zx^jw)vuRirN5{I>ykkU2IMyLEQ!&P1>uEqhT_C#+jU1gpiL1Jg6*u=}3K|#Rfscla z6bC{VLL#n?tE@g|@UEIDHLz%l&M?t20w5_=3D#f$1?BgPrrgH*O)752b6B!zl5NAL z4`@axpY7mU<$~f&2LO&9`j67N5~+$!VA-o9JWs1ISA5RXb7!1J8xS_p}LZcQ+>$cBw2O1;DKdo?c)SA9f%&tTmxmU|+zw7~7ac+ChLc zIKgnH?>9V(u|*{lW{*$HC8>eHDZ;Aq%*Z#*PoXTs)Fgj1R>q%?fmDF@tGnU6bFas( z_Fuc}5&u|Yr%fQJwlrV228D8U9IuEhz?_kKWKqfwJ5d*|#?6%F6_+*KoX04+0jsBj z*a(>7UAV2e%3q~}a>6&XVp)71LIyTUMfT+ueJfBlstPgdlMayPeP`>_?UV`YrEQx( z(Mg>vY9KX2-K?gp2Qkbqw9m!@z{UaiZJ>>vm30{6EG7P;t0Ryy9}cddT}DAac8^z| z-tW;C;Q}w*EZmf{kp6?IHZPw@mB@B?y(o=Q#xX)%{qZy0e}hHqfl@~e0p|qfa;iit z{Om3zeqVlF>STipA#C_AwZX7?UgFX2_!|kV#s4w}1UAk)9NK%rq__0T;&)%HRFuK}AKUIA1bMp&T{`fFU{CXlxcmbKD;AtS4)~z_gae55y zhJw3_@0DilQpayLPixsUn{(K{ZN2briS9og$w(@-ybe*LnA^h4vsjbf?bB=uLaFh4 zOCAgHZkfb5@GDIp3Si6DOC36N$$3g$xgVj@TG!Wz@3T~r(26u|IjdcV8 zX1L2a?k}T&2dGj19W~Nnw*X_HidoOaAQ;kdP?ToFR$9)%XehC$Ff_a^^9jCKAXe&M zog1}6^QMQnIT$?P7q&3Rii90*^nF~>dmRKhU-AK zGcXuC4s#kVbu)hcUr{7uDnK;6AVRdLtF5jKTJ0@d4VHcqcDPa?XDq;!I|;E4`ES+X zcFTW*zXl+=bUX>2zSzl*_}5hr54nk>btGP|$_ znq2sF6OOjy7KHoyVL433CPrxlHHjCrf}8(aIcr;*wsm9&CNj$2zn*yp@?8N(iOn=M z;f25Z+2t0yF&P(R$3BQSv9^W~#yx4s!lz)g77nIPi`AEA$yr%Axk|Rv%2CwW^YxnK z^Od&%HGJt17vs}GRs4akGL4@aZ?9a>ZtiZSmOYG7Hfdnb26PeR*aw?|BMXIy8_OP`e*&T~}8GJ{N;` zo;!~6@R6gj`RsS0ykqmhBF!?O6)uM0rb%6=E)}2n32>N`!!XUb=qiaI%4% zZ^jQzYfjpV;vdAwX=7LK>AoD29vXzHr@Ixv5N~gWLY=YH3zV8emz<|`DQ8Py1~q(f zZMqD(y9OFXcjXP{8btsmyKFsnsltsR>Wvapgg_*%7Qr^M<(M>&OA>y0n@<08>}s&I zZDK)S(v9Ps+NBcyptlB7wQEoTL2;_d1k0RC-d-|;w}h6B)!*^rdAeyT7VXN7Nw?W_ zEz25MNWwEFgv)`8-c~~XXl5N>%q)t!3)Mvo8}3=J_DP)^uNk+p@KL5S_eJTZfA&jH zLAPYXKy%+*lWvv@dj~nE0n$7^DHT}XhjT)h07;gkTu?Nd;wv%_Zc6aw1bhfblkWlU zk~Q^|Pcr)2wPA_Pb)NpQJa=?h;hYD%4ES01i70<>)H^_7^^+G{9pE3_cT;^JJBj9H z2dpU^#0j8|h>&6DfZNT2Na!2pD`+LgOki;al~FGsZVltNfB7afty>$g^;m07MP*+I zMVxzFK-8%kD3MCovYXg7^08JsDohvkSW-1APYoO-4~W){*;_^+fv4kh5&PV8z}Gl( z!?q}3oGMf1QAvfSCZqr!>xZYDV&$6hAIEB35@c^b?dpdQBsR4X_{oga2shIhZpXj0 z8_%}ACGzK3Y4`7d)sF^je5C9v{n~e(Do|P`G$LNP_I-gLmeL(*)_K$6_9(k#hT>JO zQWUIb2Vm5Ay@4L$2LEt)*eLezZy2P(&Q$^ID`XzrM7X>Tmxo>t{C~tX4;hq0zeemk znX=E-t<2uDsqTM)Is#*Q5q#nyOF<-kO$it%meOg_8An+a$&|^$a8RUK#>B9!cbsCn z6Fz2Q2R>j8t@FV+Is-r9GKJ~LI13B1I4h6s=pC}!=|^-n4l|TJi0@+dCFP+(Vrx05 zG5opd&C{Cmt-5gC7HkfnBgj@)GTPt$EsFJx3~?YNGGQWsdahf_B}fN`=H1%CDu|hL zXO0?bAnIi&AU8JB#=570o)Akk2u%rDvUwNjDJL0T%yL?3-Cg)Sy1mf#t@H6O%th6m zJE8^Yf{Ws#*4F5;^)a((n?h!~10V`J1O2#>VCl6)zby&*XSJAJVi!v_P?Qi@88({u z;|UP{MSZK2$V$$01gu`K#Jk<(A9^27>S{@4_FAqhO4%cso$<bLK#ex@eLCNPj1spysb_h5GPg_A zqb@&A7K7@38-2*bn5+Wz(PcIW&ClQKp)+k;>kJ3-Iu&mxckTTS@sU(a1nN4viy3>n zsubz2sMZy{z!YIq3Y}H6!4e@|dLe+XD9;bXpm?j2m+XY8`Mu zvC^G`i1M`8!mp|^K>-me}WI(B0IPRIXu8A^T<53y2FVXrmWUO$0?mSjO%c?Vd;s*~G$; zhe>9#NmIdYiukMroxxmAb#EFCi_|M{z8cq#4*{dIzwQ>`RAgStQnx%lzwztAMK7{vhjgO z=6ixxBMshMr$8(J!Olka_+;85dAPhN1{H8g8Q=_6)4fY0B!TpP**L0M>rv1HMvwkY z){=DQv21b#jOR7(=VVP4*k{>?(R$z5UNVMnl>?&Ot7?>^IB#P;#xO$uL+f@ z2Fe8Fe~Xlk(dX8h-K*7@0{8c|a5`1=tu~{)3T|pSGJ(OfotMNv%zS#|4$l(Qs6GXO zpBp_iH?u>;2^TnuGtHydm^Wj^+0-btx~lP+jYh0-|Gv+dqU(T}&>Np6GK}ePaNPlV zNN0X$-X|?tbVir->@<5Si@Kin(>`uL=BdfPbY^6H-3+f??YUjTB8QH^WdO!&RM@Bt zjl0^9Of)5N9_md8YyiaVKT}0#>skzcNnh=bmnvfSJ(q?^Tb5lxI(4}(fjrOM@(RMr z9a(&7n&hkEH}*{^=Tk$-M*wvvNvN_7k%7R7JbU2InQkS?;T!2r?v*KN0;Y02e4wH$ z>H!maI}0J3^hsdDo+2usle9X$^7?46v_e@*+4ew}T-f5p22m@WJR%7LHfhy%`^L-- zuTH>(`Zt7b3;hbH3m)r^#4Epvk^mL$zvn2{<(5`k6`Gi_MdAy1S+iv{l~#`j$p^`K zqgeT=Jt?xUu*_9#eK=r7GbKvD=5laTnH<`AAxPex%&#RoiaN!*M=K@tph2x};1EN6 z)~cfm^r&>h03xu;3bm+qVbpU>TMlA5_w%LMg^9&{zi$^Mvxpn8%Dr54O<28R>UnRi z$uzyb{^Ca8BaUUi+j)Zf>i2Fs=Mxoz|sAW1)b zZZ%#07fg*3cFVo6UYw^I2cKPce1@=dN5ByTIAsdQ%(wn48HU7-tdI9|55E*9kCXs`L>^SG~Qig+nkGDIP48)$#FHwE0+=oSt zl%Hq*mx;pT_wBi?#c#~4_d(%h(})>zmXq3;V10DU#`) z8nw$axDXGj@ye6US?NgN=D{WN6@@A;G}?zpJZzic&^Hc9?}787auoYuNL|7+RA|3k z{AiE#jwVZT5qTI3@lp0(m^$9L#?g3K{!0bZVGp;3P?~)5spXYJ1?XE^xFaIOPSh|u znz0+h5)r)=HTSGWie{w8w6y`tLH2l0E9r4{Pp zD!@nu-0LHqmrc^M?dKDF)6Q%DT#))CcOcJ~9j}2b=TSaN*;Kkcehp>8nSTY)US)!2 zeUx%WFXN;{IvZEwwQ|-=nYDrt)h^4dmsn5WRaDrSco2_DqE8GS<6`j4awe=-sh-hp zl$iB~A;$xsrkuas-D8wu)$}Agh^T!Smgyw6=x)s@D~c39X`BC<-poIFjI7iZ9d8N2 z`Dbmc7QhCw$6s!z)x4}npb_5hwMTM5a0a;;lmm_03oQ`|k&{;`Xs@<}wUP3($U^>A zdG+4Co#()DjLfw4oyXokKwUV$<1S)Gs=5XtqL{pIe2tiBv*94|5%Z|GEV)s# z$DsJW(5gYnWnsP5(;Jv|EB1jFI2m(CR(36OfYY@;JT&Kjum*7pwJeB^aWkxNBf{;5 zir|~*T+okS3B{8UlEHT?S-8@ryOb7mD+m=eQA6Ns{ZCwo(CFMAyisYxviaG=QCgm) z7`2%d5}l~v(!=PJj!`Q?f>^MddSqVkJyd`$m~g_bk_JTv5N>wB@)`O4!mUfLqRs`F z9uxP;3EW$y+3m=2RaWFAIZ#o}^$h`S!p!DA0uHR*t7B{ITxzlD<&kfK_6!uI{&p0p zW2cKSM-dgP4FOfQ-4Wg>Q(X|C^@w$FAu@6wzR}4H_S7|wC1{^@h8qEpQz3Qn9o)3g zb+Ll*U*y5o{Hs@NaE8_e* z7K}H;UJ#9AWHvZEMe;H4k#-(lF&XV!pDnlXYkBtQUj*%Lf2yEbUnD-~RY?>rN*W2; z-2GLEUvQ@q4)JgC(>;)pqKi|`5?92OpTSY4v*8I z1>P8yy1Ci!f#QI;)aIdcYWFUX%c5_(+S6SxmLR&OgL~*A7lnBSvE#4ddiz4BDHBw~ zdvnqH+^+}_;T5~F+8E17+Z&Fb%cNBtWeO?mr12<;;R^)`hz(=4Se;$QZh>gx-I>>FOQkHOgz&7<928PMpdzZ zPKkq6l@QJw0sDWlZ}}tf3>E-y+41x{7-Gkvcd+>CUyAd&bj$eHWFA0QbW&*`t>IKR z>w+z5<^xg)O@xLNySrX#fIWyL zd5Si9kTN6$6_>esFuY&OV9YSG%$umWO*AT@(}uA3*2P(uVI)+jufW~X;FFyr$vEXl z`aixj#e07VXamoGEq;M+(0w_#TsC4;vYfYwGxlgbyor`Dnp~574NPTpwV_CRY_zzK zc|GJs3_(^O%KryTd`2I1Ua#fi#x=$7gyb$w|kf-c_iyc z7K?X1pXG2-(a0N&?fX^;3!*BtlwwHmML(fslS;RZ{i}@cE2hHguoC7xhgkSwKAW`e z!tIdk?%esK&P-B~3-Gg#s7bbKai3H#ur_d=aTGxV8LoH+8GlIEDCUw*o_G|Crc!u^ z5oHrN)l4t=AO1umcDPJTS)qTjD%8u|PUC@TuTjLzH>J-EVh*nDX#MzOvmi4y3*NUY zL_R|P$SG2#yTyY;NiK8cH~Jw;wkC_2BuecL=KkO|1djA(d$FA&GkY+<}7s_d+g3!abJE|Gt(k&XG z_Hg8HTN4!fc}ic=T2tp@U5?W0h1THVJ+0D{iwspMsMVM`1M%7w!zn);bC8?`+k zMZbGcU99|Q=`s3G=pm04|9Rpyu`N!aS3fvWD&n^_5k_Iaj-_*f?ArypoGXdb%oPO* zm|JH%jydcKG_GG+lpE1bQ1y+I6egKp0cWERza{Mx;`#V_kPoW}*-dIuq zv#5+do*oYl_wIAWLWM+fPwrye7a|2;4EsDLEr~))+UQptS!%FLk!djcod%2htrt4+ zkUK8%Ren&Rx->w7*tu6srG8B@O`Z5sMgUeLFs#>vJ)%5v(M}Yb`ERc%urw<~jhQ9y zq|U`DiUeINX=Yi~E{lAVqID2>lM?lpQaa~wuJyIFSohs`6~IJ7KF7tBg@h-~-qrF_ z&n<8R)*LKQ9bxd9sf6TiCtOE(PEYBjNimb|cLrHkvh^$PKj1)mlYQ0nH53D=W~s1H zw3tq2--*N02AR4*I^p%4Xh=5<8kxZr{FOFFBZ%hyG{`p^&*%D6f(Z|!(to*3B)rA2 zwY8^`1Uzy;d=Oj3-5P5)&Jw7u{DXIx_%yy;vs>}i*7%!$T$EM&G>a@FUU3-5xKwZdB{91z!Y_lsk z<~wR!c|@D~kNR0TwB5RxQo*#`JJ#CN4ic zQ=0()zJW(`eh@al0G`9qtz;|#j*&sK;J|LGm-hp@Stb|L?uUl>@D7+Qyw&CnnV-3y zF+JBw!Q!mg8FzagB)+TJGPQS*L285PJcmc*63X6D};fgG|5)5Gw{ykf!rN zcg$$jHVm5J844*?_BCR=Y6O)22hkM@9^6IF7iJR%@oKWi9VC-nsNy00AXeS+Hi2O; ztyK~eE_(Iaam*^Ig#{QZns?r>;rXW$GnST{hka55xUF`+!Y7S?N@ROjR~_;Eh*_HE zEf=aGYftrH56)=mvA0kSY6l9M5_Agu4{*WWQ19L5QKd6Vd&>sG;_#q6tRL_#0D@g8Hau)o+w$s=*mKKdY^*t$Rf?HOU}gG|q6(l0AJPgi z;T{4hFrbytsbuRT7BdZjt}#Nn^XbFzU9xBenk4kPB?Ffrv~ZsoE>6>lFP(AES&@lg&E>&SmWNP}OEE@3%=b+V~z!%J$ak+;5Ge0_s{1a#S+<-DoLon@j3tm`V7rhxjuM0hECS(w#ty;E<| zHQ=MJkM-Sm3pqfq)VxSaLBAG4Y1{!6px}I+>rD^_F63y)F$9q=b&+}s4`$~Vbz*Zhu6kT&O# z>!$PJrdclyMy69E_EOL8Ks(SQ=QxtErVbkr3#m;sYm;`V=Fjw2*DU7KOT3v#E#`an382Fe=cz!Ll`TJSt=MTl{R$Bsx z?GZjbYkjpbHZ6&D4A@?vniDv_4>cv(fZn*Ook=Wki@y+J`H_0N-H=7Uihy5W)7O}D z5YP_;9PAp_-e51b6;()mtbsT>5L6+Ty68mR4mU6m&_$VIV0cl@oHen_AQ_cWrh zbfre5;~X$ptT^d}1O2n%heZ~oD#^cMqLL^vezI)ZYkBk3P4#c_&?Y{gC-CK9!9yh} z<+{$l6LqL?a+MRJ80_x9Hz^v`vUbe(ZP>fBM&;2RImr6% zL7BK|!d4fi%I3q5MVmUSviSjFCI4JokNh5)OeH6*2%8o1C{Eq@apY$T2DB&86H z5s!!zJe~nL_E8uepbP=Cf*2;@yLAL}q!Y&Wp`pTLYWe66#&!Cv&8g`LjqSpMoR*Qe zD)hqL*5LFxG^7}dUk~`^G5aQoz(n?_^YHzX=t&z)C@UXXSnTq1Be0XIjbv2 zVOp{7g_QfPm%RF7Xd__HB_4eTUF>O-yhl*dGr1zjGem+$;L{&I*4Tl-)9oI+{4Z`UOUopJMDI#qttvW%IA07xaz~xFnlhVA=Uc86gZ`c4+8A&Slny-Y*^fq zsfjG|Ok=r|XB9-LwGA)((sZshA+r7iymMXgCIoM|{K{7o>=Gp@ep5;WB{&EQt{_qK zHXoW2;6Y9}f>6hNU})aAh)|k1%`zM6zG3u6;HTzu@+YkFEj_|)zLXh~GGVujenhL7 z4a8Y@K^d}!KbYgT@Z~I zTe9%K=CWg|+1#c*T;QHD)triuxxn5SzfAro zr?^^A4LOiVzWwk1V)|(?Wz@h3wYKSN#7Oc9Xj=r0V}0T1h1@>449q&kzDR;&-5qhWK7t~2UQlL&-wao%qH}o*YGTE7~-vDL(M9qIU3fGtO-xe9zWliS}rg}}MS#NlkrUtb{MvAOn zYY;{^SrF{%ErjA`YdAW*5mjwpbCs}EHNr&NUky2h^JY0!)mBuUM`&QsNMpE8H;^s) z$CwJ)tPqdp-_nI=0Y%j@Ld~)@sllbkAsK@Pjmo1jL`iE02YM(d!i#nul&DH|Eq-L7 zRc+-!nseqW^9~E2b`d$-+szWVRoMsT`Luub%Yyf=Y=q}0D2vsNmM7mhYIcBHjt~&Z zd&0#hxMkPG+sbAUP29N^64bAuFOH71`EMN9>QXX;qu^c%6&+wL!3mzVA@zx|h1`aC z*upv7WbkQzfax0md!4j?NOXHhhqY3;oSmk^&UiBw)Jn(@l7`J)#r*xD!z6aCYMy?5 zRh+f<2ei$GTNNwwU)K{>N0%4A_|F>_*khUTvI*HvG6$t|nK7oCu#!8`788p;TPbIV zgQoJZuD|rD+s}j?3V$_uS&Ec@?Sjq1y~6hCMi)eY#6o6CQcD~6`#+8b&GfycSQk43 zB`_#Aq`K814un)G<|O#-80ML=Ho1xO9vd3_8ZjW~F#>LKojl{#BMWXku?qFz^w&OY*k8Ds(g zA^U4%&|}7b^}*e*aX7j~wmN{$lWdUKF`Y_L33&;ii&1(CDmG4LT@RZrN@%(xw-?uy z#?SWBAOWkg4=Sy9BrK4vbfnJ>jz8ZOxm;ZO_e2_BsPrIxM`q~xQBf!G3nI|p>TZ#2hnI3WnDjY zRiuZp#Mj4KXl@H&6~-Tb+X>eD=f-ZQIy;756D}%>Zl1WNuK97)8t4FNS)>{S8_F_- zt7~j_Hm*%WwyG?`lXjWr7&xWozqn|dn~I^!dH&6}%w8FXH zcUwbaaIh2*uXsDV$8NQ$eBV_4`~3S-Wn~Nhi%)h(7!$1}uwkztxgR#f#Wl4wCd+1G z9n!v()@PhcS1z`;aRSlPLaJTUnsE6w&I=#rqODm|X7_vANR~bkefA6i-%!K{D%}_z zXK9FMN8$>qOd()Lm#}r3*YMq}c60n=Vr19fD@$kpH;@k=`oEuC{B|sfq@5=Hy5rg- z+R&7xHEJ>VIftw=?9ID(nM{T8#~q>RGtS-TYKbtM{$FY17jIqXS5HYbauRF^BNrj- zK4w?Et6W<$kuYH46Pm*F&VHh2f8F)MKKWcjr2s{(q*%2_U#VbH*}3S467Y98bOra# zK8XB$6d(5~v{Ef4`tUHKThb2h5rY|*<;}qm2}iddX*d3;Hdm~L8H$xaY6D)Y=)-A$Q-jqYZCNhAIU;ion*EHL$^L`adsL-KN69?nN?Ayvw;q# ztHp+)ndA9Yr78vg@~5vYI;z9_1dU}ff8Wc}tfoZNs?X4j5)O@{!>RckDE_)ov07#7 zRSqPUH$2Nm=eNIbZh;UUlmmO0-!9!E((#E2qHCsR3fOzS(0pMg4WnIlkAa-5*^M(z z1Mmm?7yoL%Ii!yN@lX0ZjAz+=D?`f;C4>{K)7xF%G|r)~!pTwD-}X_fiH)+AAh6zg zW&1tE^^RoZv4pUCN8y_??9j8l+zt;C0#>38*Je6ZM9TUV-{6ZuKb~}TrBMbAw5RGR z@eOrHF{<@p+;3NH9M0WbK!#qcrN`^xNk=v0C0YjV50i70riYXBZhN2~{Q!;2 zr*|+k;Kc?X<9tc-3M^Nrp?BSaoFU%)m}FqZXUrv z08h6+NbuwMf$^SgL&@H)ggBossZKfVP03PZi~Nf-p70cci5^Moe5zxEIWGCjGugYN z;P7<4D{1wg6Hj3Aq`XMb4Ouv&QG052u`Pe)(R@39qKo4!JsVUg^PJZ-;ZcIkwr-Xx zAz13pdduD}S2WcJ{WN*@qIX{MELNN&v-fNWg7m{^SCrd$#hz-P!AI+9+Z?Z%}y77HD^^_T$i(B>%cq` z6z(43*P<#OS3Qf_?yy0o$K+t;821v!Q~seNuHraN!y0#9?J}#@B5O~d(kl| z)8Di7IyF|27!*LXxl$znPXx(jZ7h@g@k4!{n-uZ-v6r{+D}!d4YqnX2Q^UA?Cqhr)4|1H!R& zMBk+)2jQF*>^|p$k}oKP_+Cca7C^3{j1MZvQLh+t&LtF>T##WV+qncse9g|h_ecq^ z!q=-j-9wr=2stVk5Kl`?Xv(hfQgPUbH>Z@$Lv-oIthOc2OmvUQ*Aow3z!gT zcieATF&IlI(pkm~p?x@tLJ)JtCYRzO^%=X@vZz=Br!a4Cp9q@F1iny=# zt0l3+*kqg-sGJkE@m0h*QezPS0hqg{;h<+h)w&o7d_Ca0a5Bb>)+=$xK6nK?Ee=W7 zhB!9aqTFg%|7ULpx@ZJ0A(0d}pGt$F8p~KX)+uDDOe$YI1K zc?6c^ZaH6spIoPWz_SvXFVsJRW{-3lnX7`&jy_Eg8|9=9u6$Dr|E^c3ES+W&2J;1A zpbG281EL4At&E`H1f4PlI0hm#{{b=rVe5WOQiwUL{np=%htQ|P@sl986SnjqJjh`$ zc9(j+2Xs{}D}T@>f{yy9T^B^Jr;M!tV&q|bUd^Hq_)n2yP3@{^wO4GmR}upj9&XRYyq$abG>vR znvB?l4TvPuw580g4i?_Nw}3*YO~HS0P{QM#Zr*AJ?%Qh8N?~`ho^rEef)I%P44aRemb1#LggQ8SfhS(w-@$dCeMPY2g{R@-9fZG_}<+bXG#s> zr5kC^$eT0nCTmawo?cAJBg5XKNM?78WVw01*I$>yreGc8<5%ui-*WdAl^|^Fgtk1h zS!h@tlj1;}hk@A6*YO)ocyvs~hTs=A$Q{hjOe1z%832na-AfS9yl7xm@sl~_Wlgp?Jh@A7=xK2Q< zyezRQIEStTKW_#A+SWy8rO+O7Rt}%fJ(0U9^U&$V8TnIJ2}7|m-9UR6%&&)Cl8gCB z`<<-~>Fr~)_PIc9JnZ9heH5WkI;zAfgt+7)5UF7~Y&9b{DCVTnY*nc%X7o*IC~cEb zAInub78fK%97`Sp#hZ4-#h0}zO&#Z36o>a-ONc}2&GN4u22y9^kK{Lxb+ z5UOi3OE9 ze84^xFA!|4GZaoVQ(N8Mg|6DKrE5VFh=X5c1pnNqp5mV~OodK=$y?$J#F#sOHDv(m zuO^f`#;f1sKh03Ow^55udzt8jLrQ zkwuWW&D~QE>B4O30i|BhxKNP(8P2?TAAn|@bvwS!&?cAQT=>{DAa#MzGX_hWAh|rs zP_0{|HgAXO#t$*_Uc&(2i37(usFyK-{AbH!5rpaL8%Ljn+$>*qGpohfr}(<-5b2g? z*X4fyoGmo$jO3%>CGC4IJ(bCO2WFzeL43UXW|u=kERk8DGk5D#m$?nSHIi~ZszAn% zE3{b`oB=i9kt0ig8eQleMT8Z>84Plz3-~`(5(DT{JO`1b6*B?Nqp%5ENZb*#m6`K; zQ&CMW9kQhG5teVSCB!?WG7O}NgQs8l2YGz2`}k~yj63^lMIQ{JK20AvJdfVMMzJju z!?YO7X&8dPNKg4i;A%!@$I78P`jwT9eP@&aer3%6X_wled=zXmB-;6B zI%GnoPGOE1v!ovFC;piTre{y82^ch|K<&>Kn&-w2_8t)c%i@eA%Cr=}%G>#62jg0K z`s6hMUzjiLDh+f#Du^*ru9HKtkip!lKIb#e##2RKG$x%!}&!?lEd1Dn6v_1d%ZFbBhsuK{6RTX-#d|oYYdq6V_Uo!TkQ5 z#_h-OnILjenlY)I$HMfQOdYQu1x|9ESVI;ZA|HI%0a$Je6l|1;DW*WV@8Urqw9q-@ltZt;Orie^x?@M)QO+PwWO0s`}h1KhpUf zuVNGXkMh4srqrLcGt+fs8RK-$1768WeoRUp?3fTzn*S@81tg?fis_ zAX-);^@RqL0j2|)(dGfEj~WkS7toqze`2oq+w8y)oe0>KMWJ&G2jW_h9R6iT_Ac`) z-5zRF&GDZ!b!t~MwLhgHL_G_g5X9l62%l7f1nm|sJgpLrj)xAUTLWi$%l6?YmsVE- zM^&j@;vd@+W#40}*A)L_;U#_oy_Q2hK;!C`F*WmBI2Xk?3wlJfeeihtcn_X$NzziM zb^AT6^dv$%rI(X_rBKExu!XIoGL1i~ z>~gE!>sAON(=j{c*aUZOyhs#=d8Jmd;8huaYypUgq4;Ou5#r?zmomnVX}_unG;w$( zW~)cK;m20R8XTJId0TWbc-}qHVk&%-$`#e!4`mH2h>qk!f+@86C#{aVef|{uH7g7h z-H!aD0O5k|9}gxvY|{9!{uc zVNmt%HP91vM}Gdg$|Rr>;I5*GL#uM_m!Y@B>6E!Kmp4OWCG|p|MPt$X(a!=>|OrCtlRvcyop?zLJO0i>$6>z}jt>dj01I6dvK)!sOvT)kO6dqvqtqKQpX;4Ih@^$} zwl88%0e&E%sVVCKCgkd)cJ!vi-`JBMm87!v#=o$-DLv6GRrIGj6tet{wW_ngI>WI$ zONn)j1`lB-U=lCD55_dzmhNZKk;# zNT!L~F_cSd$Jz$3K_nHmcVsL$D_vcH#1dn^OXmA5j@cDvGt3e zK%Ly3vB+d$5i)`u6_7LbH&qKfRJZ9=R{k`$4FX@}@0A8HnKUaN9sc!+lIV*xq9g$K zhshMzIUpU)t*D6Sk*lsdxq|`}7Ybnitq~kt3kf3FBRmW|3!22uK#kQI{%&-Il6dmz z-0o}r0xf`*Uf(UG7!2!}H#nf&ifu4=KPrC1l$>PyeJs3iwadxy({cJ5l{J=TG{S?<_48?hM=Z$oVH} zQ4GvT6Z zY^7>G`f;J^)?{FuNv%j4lm9%3kG4v-Tz+H{xMD=K*7#sdv-3kXl3jU)6n@VsScD%< zhFMa7V^>W5V&S#4nq~In!qhCmLu8(~A-g9?9R~2WfVa~Bwz1|+Y^1FdvsYn4| z&jJ%MHGbm7BF;6EYHxq8c|yP4T_GZW$-WiwS~cQ?zIf>`u(xUHk?xgc#?_|8n$`AM z_T4@;K45z`G0l-rvB5K1ei{lX=z zPl*<@n;LpgZWcNJ*2mU$jmwd#Lx-5s2u|MK+Vmzt3oxKwew$h-rZe%*Fc%ZB>8tIK zwlPWu-Z49+rC}ltfEX{`h{v4t;?#F2AeIq$8XYj?D##%t+T|ATMz=M`ix_$g(JfOG zI|X@PyK{=U^@xd3%f5H{lZ^`HmL&%TggBkufzVEk1`mR_7I9nYB zYpuXf!_t==>5*-o_ zs(DJgQ!Y&z*a~ds@4vS!X1{3*hOrJ@-DI47EpGU7szu_c)=wG)>bBv9t-CZ}`eu0< z9ypK8v+AdZ{mFLiG*!6s=>wZ{PY|*6kVigXBIQ)35jjnJel=|?#_wB6HdghLh&{`a zrDbHgI$debRp@l_^oRxezk}&1fX;1rGXhjOLjN(cA0Bn|L&>%I*9cf;KjO=DMogz9 zEl8y^gwRCAAFvd;DkPv9HP{_tXHgvbLAYa%NKb;iZDPE^<%y)oK19Z_Q=W=+hx%b) zwx6+^j!lL`jKJ%P#iYo9sT8|g3R8NdMPfSJdk2 z$u|SOof9g$f?e?p@|~Np*FpUNLDRD&gSI`%%FT5YTbN<%q%wu6LN#x*iGIW=vz31> zCDB4pZQt-&L)Y`6Ect~;soSND_#KVSO61fb3V27`!elr3^ly5Bc;QV5B9EnMy_m{^wa6Mu^{w6<<~8_;GtBHFZAoQRVUig^uq3&#jY0um;~HBtKR-f zv^pB=3ei~&xeEo?8t9qbI~=DLx(e>V!DpMEAv;|D57G%?<(mmAh#~FEK z6=br2{;L)K2W|eR%z})aT7M=LpIa}P2+XT;HRZ8Q$4vMX+3a5BTQ{iOs|vcSA|Ui6 zqZp<=5}8S*eW$tEirmp8+*j{d#!jSaCSJX(7Ar7%>P0;NL~M1(_$HhvbppAx1h>{cqH z6}vxsq_h;RmsInA+IK=w*yg^O`TlBP78Ibh00OW(>u^C(wto-J)7wnNX0X2GeX`O% zg_lA7IA%s}YjzHm!$$iVoFHhVII73Z{y=ss>wWCL zoo(zuRip)F4EsJ~)*nvPD*+NSb0eCBj6I67aQV6J- zTuR(NMcL7p0A$J5Ge)dDuW`DOr+BXbY3D9ko6hiYbwplF--~y?afHS7UQ$$sRD0+L zWTJ$9kKDZ;FTatiGtVQQJw`jmF1^*zDx)Q5tX%3ccDp2}tAsjcR#hjuUd214JA%Je<8de?KqV3Gz z`TNw^X@Tt$$Fz|KWq{F*C?irf`4@r0D3K$PxNH{^gkR)_IAM}Cz1*{r%J&z8Ku!|b z$U-?uCeYoqz)Yfn+hHIA8Da^kd1S21E#Q*he0f}j-!3UqA{=uJ0?|N}=HUCb&X|DO z^k(w~;YR2Lu#X)( z6_9NYK3R6WtA@}$d&{pD$*dV7@*0Z<0~dj6hfSguY1(EMELRK~!*zHf2)H`d9S`<~ zO$wqOdH_u)de-6f%Y&%J*7y#c)t=UI@KZKb-GV%RE~NXQ*75lPwj{#vCvgV&FT`vNbC^v9%|-RaO9Z|X>!=PLK^k|p zu13w=>95J6Pl)LaFD(z_(+5)D{zD8wtKM=D7(=ilV3DN9#srldgUhkY1qM)(jJRVw zlM++ZBZ;p7DEibEAz!cGu+~S{9q(j{#nf@-bvqY*1v!6@b$xt1a$vnikvAxy$$W@g z@B|>AIEqQBw!&W&h8{^dgp)HvcB>L8a914RHk&xc&)cV3dc4S%*X8Xf4JV#sy_Qhy z2fjZ9Mt5D$5K$F4?+UL7Gu%eDUf^Ot0Frty!JH3uUs^ek#i6Hn{$m}#ZhNh>k6YM& zeoDL~J$QsmN=7MMwI@Vuty^vNr~XvZnQmN<^;ES#W0gJ{^2c*>Tofp{k8B*Vq>jvq zauHsbO?#X?4$pO?jg;HQjRw()hw3k|)BEkmHq?r*`r%z0+d5r?xLfAA*Epo+&;d`Q z$N?gfNWSEmEr}{K> zTOd3X5Q@@;J#H;605E07K4A^*hiFh+rWvtYDR ztz2Z!*T~&<02P&U9W8|CmS%s z0v{e9M?p^0T}(RFE34IGXrbah_rmkDDHT|I4S3koc6jnXQjk<4WbhahsPQ36%1i|d zI9f!QB!Ljxr-I#x_wqD+0AK7`C6X!pr6A);Wy4)R%OYDLg1}FpUvCpp_p_UHiNN%x z97SNIRg!51T$DwXYPdsWaUCM+0Milz@DOm`$#5Ogy$3l${q3ajVyUtHmi477^s-;6 zhj1Y02avFflm+sH4e|PUVam&hcqNWF@RsiB$$tnA26J^_&y^!RjHxJ2eq(dFtlQiL zXame5Xl!SK3nDsHYC%AZWmWp30bKrs_)#U|x&J2ORggZcEV>J>f+h)N=SrfhcB`2daL7)K7ovT;1-vLl z_bNPO6P^pP5~li)iV)~jPo&4UAjT|hn*q9Y#iDLgOuPJJ3DGIJn_3k(NZNlU>jpp* zS!#G&XM&r_ubV>}Wyu^+gpRJ_9{?x%r$07mm(rvQhp6&)Y1aHx2R zwv5k*S*Q>*JxrU^-vTAD&k`8CCwWgKn8a-F5X^+VeFM<*25lAv?RV`gDO{tS|xjFoKAobwYhFiHC4E!tzVw4ys?dPzw-U2BbHWoKAMZK;n0|0NrSk ztRzL!jEZ>c)iYYzY%{#?P#>@U<$&(j7+T+wS<=hEk+;lVIX4temRqI>>^9||@LDP% z7JuQu3@1KIND;K@!RrzYT~|J)MnMp-oT1@Yir=I+Y0nY0WLEI4b>?7MjA?gg(Cr%e z(t$Y39z;{TNm?k`Pf_fHTV&O@!s|Ou6I;}uA-BY|81%bi+z$@$4ZYST)q&M~1n2ts zAA21EQHk$dyYy-q`e3MNWMOVgvYc5hN9ms5d--&74F@`vuIEZ?-=-G8Uat$cl z&rR;ry4ks;wBLr- zrFhN9Kw1_Z&yYTo4`AR~BVV6A(8rLOQ9@vN5_+D1g}+gAcxGr{biU@_pyJCnvuBAA zOs`dH)9j{gQhsjw=1&MuZShN!65#%H2J@7429R|Ajjt>?8z1iKt}IT04Sy)|5~rVn zW^Lt=I;s_1M_&P^;}3$629JfTO4HgtC^l zSG<|_#L55wqGpL3%}3tB(J%7|E#-!_Dq0ZluQVeUJ<5%BAtWu!yPDbIokCA-B$wMs zpX|+QRd?rX-ICYUYGVj~YZslE73D_McfMF&Au1@uSr9~q)(4Vt)0}6rzl$#9dB?LN zhaYg3Nkz3WP{fhAHKHEAd{BXC;bRd{T!=5a#N&;jLRyeORVBM#+GLWLJ-$|qBw!q% zbPI(Sr&1DggrFfqx1rWA3t3KCjfL{l4S=3bM>8zktGk24%rs@DGcKy1?PDHu$q#5k zm}o=LIqn;&#o${s(E|#-?-1d!H6s#hXw{dz4LF$_FXfF<1H*d0KW5aM$_ z6r+Xo2CIfy*yRhacJDrK@bysjy~ zZX}T+20Ll_;nBH7T$5GsXIbU9PTLGDd>|7Xwj!c_%%QYu-xT|4GIoS?1a)f2aX(RPu*hYUI6%a4m*MgDeSwxc3 zy$6Qs78JyxZ`8$yr*I4r`@ZcgcT$m6uZ4p#PRf6w+GB zGwJ2)wBxr-nYO`8nsX;0v;Q?uMjP9noAxq>P_a@+#_NdVJR-S$j=>Uu{SNN+bLSYi zD%T;fn>Y^idG<{qDYM{dQh|B>&P;@B#Z{~+z3t@;I@54>8^JCKyrXhySrA3cY*dYy zTL9=b$yxpbImuc^gKM%H*+n15IMUSS5_YKKnWMn2{1>#>Ntk;g< z9IvNF9THxygAL}9+b+w8Ftv7Unr@@BL-xQ8xgbdu&m4?^`%s!qEX<*+(>L7PNyuuB z{`TBZCRN16M%g~==hP@OC>@=%=08}!8%*P0>VOr}%){YpY7j-8FD*X$D_WPoYeLfae%-zh_>PN|M(u< zz1IuF%G%Sr{&2qIxwxGviv#mqm~k+#V)!A2>bJ1DMLZ0+&GSNI*RLGkdbBteQxZw>L$E=fus$v~ZEj$k?9 z)Pbhf{5Z=)m_v1}U|FoE`!PNWxo-A|{s0CT8q|LS1M>`s8xg_YMXO{55DQi+kEvoo zJvdGF#2#^9jeXH2w=s5ytU(av#2=K#)hO}#32Ftm&+Fv~dDp#4IgIaV&+!uQ(?uF$ZbmPX?qn~c*66ixd`Rj@HhAI5~OX*tK| zXWYQdq*qQF^}PzJs5MMzD51FnGs}$+!^=3jT_=GzjIP7dd;jxwkY$?Cvw@%nAeVY@^e ztE)1?KR{};IcNy#j^8qw2y9}}SKLU0i%az>YKdgy%5GaHat8FQkh#->PYPIbxWij zJgVzrc1Y|J!dG;ZF8Frcw0WKbzSX|g1*YW001_*$>VG+tb(m1< z@6O2cna4ii@4_rLxC$ngv)B}ucL#pK5W+CxG4-(VJ+tTDEPIMA1Cz;(Dz!81-O;$| z#kQbcz?}@>{3aV$ujZzRj(Df) zwJ}d>_);>?;ovssl{4a|6q|Bb=i^nabmg0mPPK;|BWC$$*Hd=<@mV~VUlTGpfp0Pp zxCgmd*r%kQUFZRxn{8cM~;kkpzHPg?U9fGy86+Myq=*b%8S5#J+(= zP5BM>6Gk5PqN)5>USFW@Fr|wp$eg%Zyn6iaczp5KLKsGi{HF!D@cgDnWe8+!1Rt|z zcmQ9Bx){9YkP$ffnncr(cne?(rkn-FGREl9LY^3uTuhKDMmO-pI%$sEVhpLUqX*Vk zbIpO39`TwFvLZ%kfKTK;IYK?NoOm`@2aO6tvg(K$(@P4rR31oUyQwS}WX$qD`XjaV z9I2O}C(RkHbO!xo#Ti4V1@gOz!^VzIfkj2pk4y39D`!)S>&LjkYL?r zGcqe41Bm;rlY5yF`GA?jVY{FOBzezCX&o-Rk6-xVAWW>x9mGBO3m~`D{bKT;LS+SN_?}k z{FH*-ABi|kWlhBs6Q(&mg;EYz3TxS?LONatlwRgxHA`%LB`^m0gwL-~{kK3%M}GBh zS@6P7gu2&(U5=m5r-z*T47LkCjW9OV**z1%7$$)EPItUJac-QCkOUGGU!=u5BknFu zJ&PVAx0<89&2!aPdH;UrOmHNdJJgs!RNSr&@)ddNPXq7J;Xz!kp?M(GE+rI0rXE$= zA=ksQS=jSbhT&PUT9cQyfmQe55P#VP%L^A_EF%kUVLFW4b2Ot2z(1n^F*Xb%C5m=gZ2x^REx2eV21tL~Lky;{Q;&o!F@$nU zzHn{ukDtL`&o=RyvrsHn%_Ydab9gPwsh-a?nD+jM-^OT4n9ur}y4%;oQ4cCx8c`<}R;|E-l}4 zW~lcZ)z7KrszA{v3-xEBN?0R2^(Y#_kg5pfw3+F~1ipPQ+A5kq3P&mHR?cy`yU;NC zXf%PSGdeK7=@+!7L*jRT4wGz9Re(_UEtm$$Z|!jx(W4XSDW>wCWPink;0N7=;%C5JG#p+(3=JL|Tm60|kt$e|<;e=a|HK z{8X*=S|XX4;c?GB4^p26CTCT*?H;))xn?vvf5xsQxwe;BZXiGy>)FItnzCGmg92>jthlPbObp z3^s>o+mG{uW3GH;0E-ZH(yuVAsuhc&^1z%WE$QZn1tSr@Z3W4J&_u8-@s8g7i8qr* zu<0_8IsNBRaEr>nCw*kN)&@A=T+5E>s+Y~`68W`Q;c{tPfjHrI!PE1kfckE}Xc-bE@| zOYD2Ev$H#&M#vSp zvk_de!SC-$^|q7mF!vy2)Z&VQ_^s29-EIC#VLSfc)_n6Km27?u>ca+i9W)9^y&I6) z1)fATv7kx+cYJNF3=5)YK!7pW{)dd7`om2P5D7(i!<6g(CMt^+N%2b-j**7u?stMa zdbQNh%=G?p2(h0C{+GQ?*_V#NwY5XaU;(ToY{OsT+0pNJ&rOCvl%?>uv6Jem{jt6B zZLY=u#-HLx;1G)F=qmWMa`$ptsW*NQ$bi@GTl5ibXYdQjzg<>2&i$e~20vk|MJqp9 z0#><55ov?V?pj}wdTmjp9>Fd=ItzU~jh!rSi|x}J4wp}5e{9|ZAjFRiIhO_J$kJ~# zi0m!S0`W&a44hRlTbRS0)k=*fOQ+n4^A%HhzNA~3|v5?r^*^ zcB+<-m?nLw!sckIFYMXtO=%?)8_fk2{`Q&J*dn+30;H3Sp$mp9ri@Q)k0WpD@e-0% z$0YlLBRPCGVig-o9KE#gTdr5cbXkYHr(cfzr1vRhVV_QfZ%QACD2G~|M zIg@j~vyTZAi*VAM{UB~Eo&sCb<8?}2W>|DI{lT06!cJpjWxHv?YE^P_OA}?`g;W_) z1F*I`j#d3F!(P>? zNJDwLk_iW#89cYxnLB28$7uP@%JwxkUCWAf%ex}=wT;|XV@**SJwILE!5ftClqZ_B ziZ&1P05f=oxN7h&<1fX_UTBqJzrH*ci_Hq&tEDj#;gx(hMLw?rsJ%rRUhe8~lf+mU zQ*?^cEHb@-a%p>Bq|f-r`MYYJW&rv}V0Rta(Zw_>_M`(iPqyTJkh5$Eff9A{SQOMTW6V#_Cd%tha$4Xn` zV$qb`SJDZyyucJDwAdvv?IEQV9(m7HI4ap+4%;(D*NXxqYrxLNz~$d#r=k)1zSS0b zZj7#2k$Ak4eu;&jydK1lS6FNFRmV>bL|O6*C(ttq2!EzFk3Twjt`t;DWRp#0y%P(l zmUOnJtPl>mk2yf;a?F=tWqfoh0+S~SPtn{^xo9NBtK(o3-Vr`~iBPNh=NpZYta9O# zjqVw|+F8`gb`_5NW@y|IrZDJT9ZL1|QZNtR*xi1Xz7-?Bp=Utv0=A2V? zi=KEQLi0m)mY;ppw=YQ?Meb9|-z;YX~Wdcx3Y^(_qGH%yeks)HP z@;U+W_vkGj!>(c_AsDVwG32T&hY-mK+B-IfK{U-#Ic)Lc%q>T+Q@Oo&b>Ya$eQdXt zyQ~y3^NlEHQE35~iH8gx1!Ly-4NQh5F+cb*ej*MM^twKR2_@YG)bq;g9H&@a?`SPT zp8^a1J&2?bpYOCm1IVEQQ@8xYsM3LI~(+u(A>S(M1Z#j+3S@jmNpZfiO!U|oV?JySAUjkN#M?IiE$Zzx-NKq(ij zHgfAeG5%?@4qVj{k<-f~2LHzH*961PZ76Gmt(-~xy~~9dJH=>T7-%c4zL&em-_=N~inNnvxBSjJ2 zPq|;J4Kz$s#BByl6(=9No;hUNF$-}lxH3>kox(jzfj6Ecb_p@j@PlPM`{aN5lWrSh zk;^%dk_W>xN-C)8QNbMVLu?|R$ztO(oR8kyG{1ZxCu_Cj#@$@Z>N<@blP& zLeLg8CS9gBZ^2L)D_%f+DvM&41-5X134>f20jB?e7=fKT8G4Il>s<|!=x8iP7o2@Fr{@k=jgI`C`-tb2FD)D(<p3-sQv8cNF3+>$`K%=r2E%{Uh6?Wx#yk{9XLb!li03jGSs*4 zz&qHM0}cgabE&;I2lm(^P3|=T6o*l!-7~JY91$oK8?R;x4GQvROSuzZhrl?eY#mgm zZDcnV;gdgukMF*<4EpOVz6k_KD+L3c2QUln>fP4k)4<+=a;zMsph+6Oza3_9VmpdV za_HmZ$XdG>f@dtMC`0?+()TLMlHk#Ffe5BfP3|h#=@7|c^FG;NMb9*Dr}sV2k1u9x za1z>1Eb+fK2O>VKntVM%k?$%NA)&{Ar5>)n5klx^0B49; zB7e7g1p^$SsZG6e!Bt^()LOhI`R;z!B|pHV=bpq%s=%RE8KXaPzQYSZ1>+&5aXbKI z$Syh_h$PGf-9LSQFtg0?yS1#`RDjWoH%cLNKje`**YR{>9;u2^k$q8k^W*wlT30Z2 z=V8sLbt3RdFS74j13JF%Ch|lmkO_&YkfR3tAT0_!wd_37+$v2e*2+rx94;eKMao=N zq;tNk4s$C?-q9AQz+5U+t_&Gf+J7jm?st{WW(xiLb++!#?Yv(+JSyJ(wwJEWoq|C zRGz+Q)@wp?NU@V35FlpY=vwavnMT5!MnFUyp`||dTp5xr&WJ+!idJq>>uR8$ptVin zS-p}xv;X;KpM5fPh@>H9gzSd$%7u)mYvJ~Js|@6_cJo{S^(Sg4%=8S@PJu9q-zX-^}Z@tO6X(z^GC+4b#Xb` zl?Ns024)x(8IJA>npwM-3U#80G2wRnOjTDML2xyLekEw|*pCBCCCH_p9S6Sa?&F)S zxJc!vsC36!J31QG;Ulipvy-+*33Sl&(l8%&ejcJityG$8+7Zld<+xGTfMIVdR!X~H zJ5Q@KY2ail__!wcfilG2Qw->FKD+$Ls*HUNBEyP?C|@tc`-lG-Yy9XcanGJzeoUue~J*VMrWl#!S^)Y z0T!)ZWk z0Ux;U)aqK)SY7AlAH|(;<#g11KL1&ohN}p%toYXbJ={v7SO=uFRY{KEQcq!rr~A1a zl_VfB#QDJuX1I^Z;vw=j14i7T{NP2v=y^(H=?hBj&Js-h{C+{h^E8T6ka4`<){{#; zI;j!&8%2p%@4aqZc|g@I8a9vTpz})|bAB7_ACBlo<1FV}@P%sf(8_m<5Ya!(cU~Rl z8GEuWhL&MSjp>nMay++jI6NVn zMoPQ6E3PGp+x2IpnqtoSQwkyeoUMLgb<1M5n=q?KFihdh(Xpz)rkgaA1g_<4QlP{* zCBucQLn0ZT^hc8$31vx`A}yiNmWoBp4(izl=q>%P=lJKIIYohR2`M&ntAq0WCNp}X z%O&1)`AAoOWl99$q^G9r2J%cJ+o+cHpp^_g$tryIsm*(Jy=&FK$HEF!Ix&$p}$iJAq#Z z!uj9u$13K0My}@sKom~hO&B~FfTuN>Z^KhDR{Y%)As9KwB;jEwf4y7=nZ;vNPK)2| z<|oN)bc`qLJHw;U8EITm1Ekkt0P3$}8$7wm0#td5&GZad+9<9A7{XY4`7g&%M|9S) zM;dQxXM9<)^6;ng5^K)sXb~_)w(2*lIvJxoj%cJ+&&LBB{$U2&Nq5z^-n$=erDH7K$N_b`Nldb*HR`#ux{r zZ36bT!*Uate~Cayg23B2yK)>B!>GbiDEaLxYy1B4RsdysK67Zhna8YFauUzvn7!dy z&N-R;sRxa(Qv$SXrdib73E0x=(3%%TaC=-cQb%b-qvUHc7iUi*VPq0_Shzf*Nfs%-|G9Cm^NB}6XG#3G({wrOdB<)R1 zITL(n=z42Ke+Cpg&1w4f@$Ym0Ae-m8I$8i4nR~|u;V6a6cgT5M)Z-;%H`O}5<^Uk4 zsQK)b2hGq3s1G5!n9Q%I!?yqm#}TIrty?~iATDkoTf*G%fHhE33<`}SMNyjl9@P^s zyCn6OG_F3FA{`AgmIbbU%Dq)DOc7&;(hU@+ju<0>(0LJKv@xHPf*DvJ?N+v1iawoD zeB)E$d4%yWKyh-dX38lwu{x0ay>$kOI4Xo7PqOijqXVk}a8gz~u+Tll<0|bX935z4 z>2(Wo3nV18`Fh~sIYMP3-l(9IR)@{3-tz%Qu`fl5qwC(lOJ{hA@XdQ8+iH3gckIx! znHCX-bRYcZ4mq`+wq6vPt%^MJoB%$A!g{N-h-q>K0NfEHxvLUu{qlk2S`a#*Lk^Wjn6IEk0%EkD>PR!P+_0AvF6Q1DBQ_2f1~g{XIya zAnoEGzCbe2V>$PUs!ho<_etx@P`Eh-IZrDfsT!(ISVJhulx3?RI(Ul3d~v5A1z|bI zy8gLT{N%}(;fn^ecxSrv%xk;~F)q{=2S+L{Ze2x&3z|`=v$sc?P*lR9(dT&=rJp`_ zld@Vz0u3urL9`=EUD)B69`L_EC>@)dvqEz8$(8!_Ug-b|Oe5chSB>&~X)mulF4DoO z29DTT^rR}xo>b-`hjpH{l$WhL$&kz$m=qtt@YMvS_g3vrbqxQzPI^lR>MWSKod~_E zINGPA9}Mzz051d8ePPSP?g=rH_`&N4lWLW${!@6ZZ}z`Y1l#kI6eM78JRx-BFYlR6 zrO98G%OTpgKJ=_w-Z*WaK-bo4gr_cz@$RCQxP#MCALx_K4O(XWN&$3fk(qu2_LfDx zGT1vG&VM@=Yk&Y7wXy;+lHwxnaH>CAx>@1ngx3a0TKeraQ&#N}RvO`WWntLx#Vp}$ z0bcWMPU8Bmyk}H&`eXq%sdG`Utvf{}+zdiT~)~n?;okrRFH9*vZDMBdBZnP1#FSI%B3;BwEMSq>D5bv3Q-Z} z0iWn^?ZeAZH1hK3vTeWVs@yk%$+QcwHej7v?&Oo};hQx)KAi;=E6*rmLom~%4xK(A zP-(p(`ixh>$S=0p-@-^9pP+Dv>myG2AMy_f9RKvNS5gt~gEBu`s5<|-uL({P-2O6E&n&xj z!M^ji)8%G}L=cAQm`=D9;a*;fE#Qs6iNAw+7=?x=SS_ziT~qm!SSmhh^5Q#%(0gr(piW$ov|{^X&({JCoOQP8=#UI>7VXs|Xj#?W&H{V?ZikjQuMXc&^{pyL0(8H27lGy(j z?I4)oTmFz7neitQrB+8qJ;%EX=zwE_5NE*55MPDfreO7*;WYh{xBGs>AWx4HwYO4*<$Rida;}y-B@M=$55CNK2BI)&*Ol?YT>jcF06#%f7VEKxFAin) zn<($!=EuB(+N2w(Dc|}L6xqhe2oOa}PCVP8<^o~gcZ;+}HkG4xtJT5+GIc+<9J5U@ za8zVitVWASfrte0lbCG833$gMwOLz>h&;!K8GE`SLTbuWW2>{=c61Y^5@h&8a?Rv&S^r4dcrT_1J z*6MMthc&Cvm8}qh@hYbiHEw948&zr2Pt)Yx`FebZEESeZ?9Om9F5w+EVBPwI&r3Vd zFv|8N0dzxbJg+ZH9KW*Jd@N>=Eufb$wbZ-R9ELW@QxeM+7^6=fK1-k`8v`^o0xNLWj zd1An9+w-GmDEvSKllG?Ha#l0OU0tQEtob4Od~)1_;YXrT^H!FiwI)N*J+@eAR-T8rFcw)D?)cr8 z6UEWoB2Ffq$WZD~QM|tO!lm3n8;Bv*Jo%k=L^?DojSvb<@!GQ9_jU50_0XX%I=<)H zfy3R^M?CZgp}Dzig_PK{G?;j)8^C8vP3yL%MXk^iX-zoK<|-b&FfMDq^IgouR&^y- zl4WIcZ01Zyb&}e*abP$X>a?>D8ZwdEb<~Dk9vm;muY8GjFWB2$b|!dyf$k4Z zS;yZvXQGDo3?02cdl6{Eg{=r~1I zL(C8I@@|DqWQ)f9wb3dekT@wh;^3 zCbvHOS@7;`B=+sgTC8^5>x`O@lBg17)wxj%ThLW^MC@MJRr%pbOgEl@9MS@kTDZR{ zzituD7ElEdU>@E`19DldVue=3F)kp9w+Ne6srK>J$`3qYg`Fl$Yh?AaNY>3Ay3P1RMU8@#}!Rraq`qDHd zhY+^yfCy-sh8;HQRRCqHk`EH)FFg72J;>)yPhx z7;kKzfXtd!3UD|DmWytm^Owe{n^?m`RBX`Xu5w5dIJkd3N|t9`xozn2U}PjVKj;T@ zUyt=ktV~`0BCFjA zE#r{@z1&!YhNCI8u2;!wRde|6dpqEX#CnPP@lry#?o#?vSWUrbb=CMGABl8CZxB@0 zuVPMJ&c0S?)YkqHx`^5yr?tB0O+fe{#jB{>Rd$U!n#N+%RC=PT4Uq{pO%I6#1ea{=A}HLpIQkJ;O$&W?G8=+$x1 z)lQDP!a46?%dmdtP*+7D2*0&tAZbN6@NwPJ^v9lm^(o13Y*wB=J1y73M{2*G&7cMkC)^v^{kwIr;Z0D*@U@iDTMdYGCV8DVve{!8?5; zfalizFe11LyDaF>xzt7Qrr&j5RgRZzr%FJ*1+m-kJCwfPQh0W}tk@1=$ z30z^G=fpbD(BC2Q=LeVe{(c{1^!)F<*({y4Hdi@(t5sx=2iK|0`+eu^nafGfwE@r{Od(eD!CAXPp#4%(j5gqn%bQoo{lc_qTs+l^HAlz(*KUExSnKV(VQuO5miyV8}`7F%fJs#Yke`9 z1|7~kMHnFb$or7N{30tOtf!E}n3W5~G3$|d(Xo+I<@D6ODWoH!zc+U265QYaf5E(w z*w$0E6-$#Fn?O&Yn&sYm@^2hgdN>9tq|>JXn3`hRSWMj?$_y_2zfjWvI^W%zMo}9f z)F!YkJ&_E5_N89Wg(P)AOGWU%)T!ZH8c?uz!!ZeIKzsoT-Xq{kYi^_=+#g1Jd%i!H zpdp%st%;Xq=qZ46#Y}lX2$Msr{NzhpS?Y`7l>Y!q`jc#Ph++#OAChNY{-?u_5YfjX zJ>DuNL8YZB@NqS#!U^by#0Z znOC)mDRv5ic4j8!_k-xbpZqAJw2$%73=il;Kw+h2*>g$gSD>zBz0zMLM)Q*VYc-=V zm08M8`P6V4C53BU^EED^kR&8nu{Y4f5I)83#XVd=HwU|V-E zVxcb!#gCFzbo$K($)iOpk_O0#^odwX9WG`)eD|f@4zdy6%i< z%4Kmnr$9^Ka$P0LDVgfKYymo9U<*Kgj$IRILbeOjVg-~-lPb#WXpP(h5loUM z9r(C_(QUS58zy<>jDBuxW)IWf^WDK?UTQEI4anjTw^?(ZXJFhK_IgN=jL~Zk4#NNjL%v=13|L1V#uuxIM?HWvFZv@rl0{8PB#?JxcGi?73D-8=&y<8F^DtgF@RZ02Gz zN9V$#HgOPJ-kwHW-%xZKL1)O_q9=~@?8^UTy`;Q3*VcG&s%3f7VF2J17|kT{MW(a$ z9W2bx)mJTcl2%COX7}MnMy~_`?neUUb4B>5yn3v2jj`uOhK)@pr>XWX#BXKkDZuB7 zbQ?uIyGMf}Oo)|xyIYbQXq<&E)Mz~>^rO~aoXuVpg#zp`IW=U~*$E*`rrRb1xHFsS zQvpj!vA+Vy=FeC)zngIU(Zn$uP#N_`f9Rx8IwTtp3(*)0huTBdmeZFVr~+iKRNb(8 zbx+dUbt%-5t_zHf^%c!f?0L?s9N{+NMM7iw-R?2%~X#=*#H z@_^*|opxLix?qnC>wy9gec4E@VtXdHXS{QQWmc%c-et<0ia8T;RUSLs&X94Mv7!-1 z4(CH~yjhl13ZGRuXl`3oe5C8k37!_Jn<>rbjAXj)4Wb`N2j+eOa>#kPr-|3;h_c1g2JDvg)rnfZymL_h3t_)= zT$Xs0UMR1s5lXp_jbbZq2+H2q`S}^QQ)uN3pA(fVY*t<@oliMxf;xf@S#BvdnzS&H zpeLfCDNI+*0}ma~(?)+&2C7a2@Fc=a(X%N!NeV`@B$ic<)FDdgD0VM-5_~nu)_$cI z6=M9s9nRY6W~}XNZv{m;APG~F4m@+rTW+j)bgW~W|&+Z6LK%v@Uwp|9jqTKD;jya ziKsLbYl3HtUK7Cgid`ru=YR(sK0`us^ zZUWxbM(2IF1GE9x`S55E!G?9%!QV?R_*3Ho{!=gXsXMT=w3mC7uja@X-$

cVAjmX8Dkqk2%My?5<(tCdZ52gax6 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

M}Z<9;?! zSWlM(>_ocv31rA{sq$2qn$k^gR9?$}9s|T^ey$=1)6L-j8T@{NI9uutIU;@#7eYH~ zRPvT2f=N{o+uNd-C*448<0!}+Lje?gzc@!Z?Qs*W*t>sN7Bo{ z(lj^Jx)xZ7B3Xt@~2}{9*4_e( zJa%|5AQq#;4`Z=OWji9{>@fPz%T`+uGlsL1rUnMzME<`G9v{(V5&!(vdV^7HCX|xWo+6*siTFJz!gpwA+Jzu z!<+g?VBY%q-?k>R8zNI;>%fk-DT*TLPxahR6Nq3 zL|IU#-mm9JJ5^vfkG&1;#PeY@=`i(5n!G(G!d+21;Jm9?5Zm-BDn&@MQI0I>SDXZ} zU_2-nG)Y9GsRgNZKfV`S-5;W);N*T&1;E2LrAHB}>*N{LuOadA)7`FmNXke1eAAsM z{&xgfznTvP8y_x7S4n+J71G8=YlczTmVaj((Htcagy{W%DJkne#DH`qQdO!udah$!-KVX?T& zDRrs1v?grMzL;C5o>f8F=LD0~1_fsq!#?y$o`lt~bRPXbv4;Jx=CD2m94`p9Jm|9H z(LlKRmKm$Er(P->x=?FQR-oc{-Yo^FU#OBI@V33c8jt@Le0fT`NzO?DV?#Un@R~r}Czagh{Z7^%U z5($9=F}|5IAC#z}uh9zrz1;~MsbpmXM^+%QO-459dx=xOFI>2wrI%T?#8&0w{Xzjs zQ*y;h_JN2~U2UA#K-UVCKFh9`doD9+8lc*&4ZGj7(wN}yCk6nkUkn4fIUf%pF;=e; zGY~g1G_vNyi&%8&Fs(K5JLa z94zcgWv9Ti%Vd+mM6=IS8=q|#ge`cdHx?; zq>g5H#r?nA6YDIonB)*fsZrYAFT&0j-(>$3H>A2E`7KMbbhgU?ev#n<($NFS=bq?N zxz|RH@sx`G7`un#w_lqRHj?5ALz=JU7zBVBb)HG=;b}7nu`o0~u$k_zp@k|q{Wf#Q zPTh`)fMZ@$8A;k5!$uRLQjrdkPNNVex>lzxB{Q_~rS&=TDIA_k`lci`pogsh&JOzX zY*}(HgYop%vr}F?-DnnGVA9{=EGqc&`hRepMBWs>uHd`mWyBnQ9!tn?acG+6WTk{1a!E#4hsDFKup9fHG zceoxIdc4{xdHb=q!nxfI450)<#LV0l!i6GwD`(!@ZDbqe4KzcLn?t^p;)S(Vca+Sd z_eQ7bvzRTqL(xE6n1e7A`XKpc3I1~I{yZ*mA8#*XF@zUEsmIj-35`f={I4w3m>av& zoWcQF&2ol!f0jW%89K7$dGyxGc>E&4ktH|I-tdWA0`ayBd zhUgV@TvG`)C1WbJhs)%T+Zjc?6gpVlW{EY)tlWD8llncHvnx|CnvL>ZVl;+G=UI2jenz@w11G#3^HLC5f382R*K2HDs;xP5jIgK|`hBq-RZ!2;mT zlCmd@8BMx@fmAVU1~HC2{5uYvo8-!Uy2)Y+04MBryL!$uTuvG!v`2#O(1)p4{N0BK z46HP3iy|s~5lv2v-%Suvge1Gk-C_mY)B1Nr{C)y+&#iKZ+lj*E)3Vl6su!1*r4_d5LO<8QqqE+FBD+3EcG7Sf zo{N@9*v?CLMAWC|Ev-2&DH-CidUY%;t2pwuqlet1H~F99Uzat{!pcVCwwH`R+f*3g z&W(58a#&x1ekjjMrT zM0422Y<^aX(8pjFP<5S0=`(S^c$TxY2lDW=o_BNV(vB94)DskQTX zX;)GDy@QGUisanf;V?Aq@ajo=lG$AgSJ!#XtxXMm(iAR5490OLLWz|?fDHvRbre*g zbuC->gx=%i^RHAFpo7Atc1H#yU%Pxgk4Z{xiqrUU9p?iX;$9Lb!&Dq?tgC!t=3QT- zk?KndU?SzznbbGWOzo{glkpwFLvB@@u8ef+e6wu~Oc` z_X#-M)4aSHbTYGju^t!`lY*+-c6(6U$N}DGq=o`6Ctw?dXL3IADAKC*INTT!jM&8M z^|(VEJ1TkFgrK?Tg>r-&we6~5MR4fSbr4`t?!e8U5%fTwYU*i{3>Jezcx$8=Zq6i3 zs_xrR`NnF~FzvW@#iWrz(Vv!R48ENY6I)eks*Z+ivkzR1g;t>;LSvNa3&=^4;Sona4FZuBkm_L45QUyc1K$q4u3vJOK(1@M zx~z#B)_4HHw7w?^rA8V!yG<8-ACxdEcxLtp{{t-)F>QXAX);L&^=qiTDsYHA!qWdp zRmU3xm6!UP+w;aO^mphmWIkot@B>1o=^Tw6CX=LPqhr$ z_QT&h`KfzD>jAg|!)4DLqkf51J+Zm@e26vCf#?@U(6gw1sb-2|KKTd2kTX^bVg=Zr zK+T#H{NIW`lZ7f!_a1MNTTC65;g0qBQFv6hi^n911dLj$sG;DxJk3DBp?{?>Wy~{o zaxWb*R%R>4Fh%gLws#f&blMZ&z`6#k2zF4qN&YB{27R@>&AFT0U0#`pC?C)Ew!y;1 z%=mFz^m%vDkIUDa0{h96F=`;;ahwzyLt>EiW^JTEXo9G60l(%1U5%vStZ5D2V669x z#|`82incx7S&iP{q^5Zmzzv{XBzhJLu^h#qehW)P824}oKSJ@A`Zqz=lTJ;XD}IqV z+K|c8G7%~lyvAOexF^{bHqm_h>l2J|R~gm(8RlaLDOZscB}|ObYgJ513+avj`|TGB zvY0|`9<9=J_$y~~4blLyd{(SR-26bztx|H*1*Rx5%5cm52M= ziDD3!*Yz!LWbwDUulZP8(@)kDCq!MvHj(+uKYyP}DZ`pFBV}7)$xO(g;&q7b&Nm~} zAqoxtf`xYb)k6VuM>Hyw7VGjiCPM56!s|f1{C&)sHfLv_D71eIHiJF>2%?5@JJhI` zF;U(QRfT+1>j6W*kmz!up-TU;gu0k!Vhsml|7viLYSUR8Ab07 zeXchPnwg-NAU3a_;HAV72aWP>O64ACNQ~l#?!7%v^t;zB0uC@ z&reUqb%npYVdC_31|INpDCp}uC!EjrhBTC>Uoqge1kW>%qf%Fn0d|%q$}zR4$b8sC zM3WCAs=B4w8wcL}m$jw-nqQt-sNONX*}TSm+)j}-HWMOXKfQHq;Jy&Z<&&MZ8_}-u z94Za~pKVJTOtsGXH$cxfUmzgxlGOajTBv;K&LPh$VD9;gIlAprO^2(8QjAEP#&-*b z1rZ4Xm&k8(K3sxC4Hhbn-!-GxJIofZL9dCzJ6UF(q+#=Pq4*s}MtBT8N!Tu1>6v-Q zb|ts}6KPui?gRk)<5LPtnm-d<^aW~T?#H;=5HQ~Esfk2+8A~-i9O&IFX|tc0F1ls# z*2yz8&ML3uOfJ}*NuZZ7e_7}+8&$2!-H`Gu-d#ORxM9iy#~&yDcukjkna;BwAeFl# zCS96{zXg(HfIb6h0lt%?-WvRKc(Pi zr!Dq94*YC?%nqW`;7b^NGw?Z=Wz!S`zUdra?@S`%$l*<)hE;>Z`QC? z*TLJds~&(c61n7?`g`oOBAO&K#`I?A8rFbPqC(b__Mkwd_EFP_E1ign)|4W=zlM6J z@d!~Vu*CeDDwo4#c!p|2quiAE)wx|Y3quRPN!vZvZL_VyX>Mw#ZedBKEOUq8>ZlbP zLx|}@gcIqZY_m_e^A;$abIM-4c20gyt*5`_6SZ#0x`1D;_$0iRBAw)uebWDw`KF8o zewIHnjJkAR@V&c;&Zx_f?%cjSg#U_tjl0~*fuSvVtZ}@N&9C&i#&E3p@eq;_iX}@Y z%G%n>8@i1_#R>3;a_Gy=@!@LupQA=v(9Q7mnxp$5fAM}6!wMuN^0zzlLH|Nv7K-22 z)z|={Iz{&VZ2}68@a!n*qWK-D+H;D(rQhs@e*x^%p6~eXFDBr3dsii^_|x8)1Lugo z{}O3XV13&qA@S~8<(t-Z2mKMQi@ZTD@t_Ip5e<`#J7v#F@}ynA2?d4A_zKSBmec$g z)^r+|s)K8@gWhLbTw*@Fy=qMeE>J@vVTK0mF#E+({$9qZ5vvAJEo?-Q6W4}~)%A*~$SV`PJI!gs;08cfuj@(jHg18DN5&2odOakW ziCrRkrPLJzxZSFGT4gthX#)`@7$19O0@nt^5>x!R2H6*R?K>e5u!YF zNJ`fm`sUA4oNH;v?_-e4EcD61nZPdMs}BLNYSi*e2XT7UXI^_1QT2&<>4;_E1;YA& zx6kp`@l}n$-gVgxBtw&VTxr<-=fmChF{(qB!Rm~VHo!t?Hqwb(2sB2 zM-%~2V^bCP;0ObtKE0X@7ak{9wNt00gOt2*o0+|g4LV%@sF6y^sN-@4gRL2v`V>|e zt^k`6bny<8wnpvZS`^jND^h|+d$H(U9o5o=W^2+9mao{4+4h{ksg7ndx>)Z3P>Yv} zQ8D6^1FQhdr`ut8siQ#bac^c^L98~WP8`GVt2(jZJE#CwJL~SCG7nL@67*PuKWGrS zzh4LCeVPkAY(<(vf?c!?8toU_`1?}7H2vV^T4F=M#(&V7h5p)3dC-%o!RE;q{97E`1At`L zh(;{&fylBWQDAAL>Jv_O)j!Tx5>(Mbbrv1)LDg@^gHlNnE!4^_^qd0hWdaTAEe$U< z1a1wpU_6`zzz+WHCAZLGqo<^ebOT#M2CkvcQDQo#Abo$(8!P!M0l8OXBN# zz5jRGUeeirR`9@kHHm!XqbHos2j5cT92ZPI5$K*$(1pg$qFbA-j|V2Ic(>i5$zHpc zj@@6kUZc+)L%tsLC*uv>B|5NhZdC8s!IEig>N!TxRW~K9j{<`W-ppKzxS0N3b5Hl0J4pPHKL8K@k!Y(uJv&e(?0p)^5t9b@OkVMIr9 zF^7s*(={=b7h_IY;24)&u&pSv&Sa33IeLO&3BD`rDaq2JdHRsLOZHmIJ$7{9?X`r~ z3H6vOm8{=$=J$RC65+f>uKh7ZONWt2Wlv!o*#u^MPXqiOvW-@5nvBawQ`PVZNsG~u zK=ZiCDci<^<4L;TA~Oss!fi4Mbn8Xy)@3H7`$n(rn0PV3rzu}9)~e<)1Hfuv&x|h~ z65g2&K4?C+ge}I1+!bxm++ifidq!jHHSwPGBm?*i+kVkMMIE?}HDKQlQ9yLLJNiBVLgQzF*v2f)A= z&Iv!QlMRn>Uj;}5H?%?mih{Jbk9>N;Ii|G?*<-NaI4HQA6h{>lPl!UJgiAS>F)#O_ z1{`Q=n&(TIlRII$lH2c;1$_3R%S@pp7EQM)Yy3SPREnt-v;j7F`Lqa4=<-BN{hGT^*35@eC^WISe$<;Klh z3tvs^XMQyAQ~Jz#dzpWYvEeGKQAXgXtk*|7eeU-^O!PG{?3<157~IeY&$J4hJFG`VBV@vXbJqDiy&pv>CyE9C!A zsq32+W*@}?y|B-i>$~wgF=u0V?v)%tvpKrpPplERDZ(Rb>21EXFc*{mW)<7hiM&S6 z_csI9lZw6jV}WEdq27aGEi+Qfv1Btae9-1sD-ib51WIIUwc-Bs8zhcA!}NI=eqE{- zyo9XVfrJil>mkq#dJio>+c>dbjhFjZLlCvZ3xX$1V~YvKBa!5TI*MY{RxhIW{^Vt= zNh%Ax6J4gK%TFxECy*D$l1Ar0B?<`CU2dY&LX!>J2yNfUM6O%v?(-)8HV|G-vb%L@ z1^!DV1G;oCFVu}>juISwi_@o7F&NARkTw{Nt?VXSG@*m5h@9b*O&w(Vgs6=4if0G+ zGr~%F%8bFb@$L1tEJLm5pu$cGUc3fExz{By5Q!9s@aHfiSCOa3Um}wga%FQ~Z31m$ zX!oy?L}g8-tusn z6}0Hrn?WYo@{hXHWvE@bsu~hw2if-Q?TQ)V*yH~PxW0?+P-d6Qp{r*c6G>&J*>=EH z{31x*c;W;$%R0b}!{rx+LodpGb2cyo&;cM`d}N$V8G0pF<%$ zUnbFl0OK@D=E5|Z2#2&X4$BjywdVe@2Dbyz;FR%3Gm>q&R24*+%b_l_Agj(j=)dX> zm!`GvDJf9#(`~8qWe@dC=@?qr*g1#r4=ED8b$t&S2%QkK9{w!bARtUiuMB)eg*L zhGajC=4btL(0aHgcc5!QXw!G(JEUVzEU^hNBuc6aSre$2M7G;&9S^UPpc^?B_Zl4X+mX4T3dFQC#d!fAO$FR~Ck>Et3Z~27b<}!4Jhi zV)0CAs|Ri%_cdcpgaF0wciaoN8&{TsBy4s2+1ig>rOcInSah5rF7vkEj%n`{$6$;t z@T>gDlsYTW77%A;sae28SXytI7l?nuRC#!&ECO7v5k#8})OJm9y4EzzDqEI4&Ld`K z>OM<4wN~tLS|2@xie1tHR?=Kc7&ZBRfr38U2`kgK_ii78*Fp#)E-qvd{w| zXXv5AnnGuo``qe&-WOE@DO=pQ$~lQ3B|Et#+yNx|af~&i4td7h%s%;3_8SVsabHv9 zJQ*Ld@ycV{07JRV5?D$53@$5oFmw{yx1V39O9=Y&9s%Q46rS5q$TE8PjF{&NQm zEj{$=Kry~~oQ2uk0@9g7Y}aZJ^F}TKF);6J*!W*B2b}DiY2#|{g4$MjJN}&ZC84_v z(3P`-=wBy7Rpk?Pn+=_h7#6BPz82**;nmPC&*(Qd_wA--O7~PT3^mvrq|uz!)89e? z?h~!bkGJ^1d$MagB#K;QYCQZi6=|8Ntzo#5(ZH9iy6!Pu1)F?sQoa@U__c+~323c{ zYvO@+m@YhPBV3C`{RilCBs7y`LWJ^rUp0yER0U}9Ir5p_C1vS|yn#WEMp*qeEBqky>yo67b5bD>{}@P7{POH$yfRm{%)VmLD(|}oeDsA>*V%*i*HmK7=RLbYS&3{0H$#e&giVG8#FGF*;qrs*n+1=e)~CyW{`yx z&_AY`pVJU^38A*xuEaxwh*IoFiU^fU? zSz!NcIV8?wnu)r;km5mc?6?kNT`Y|E1Pm6_$1lSo_1!EFq$Jm|CJ9hM+Q$RQ7=4cj(#M3kww`^3ke2om0?&q${kizP@>2(Lu|saNA)cg>mj6hUV`*_yBSpvRULW6UG_qAH^qxTU!&`Fl{9B3 zXp<6W^gGbrr9gd9b2-l)UgLzjyy=q{)YXYeRzSwyk%T$7Pk9je%9F0&0aj`S($Uo- z%Z|E8ndFsWK56!`M`?-Dkxpk#wdCTq_lu>TGDi-dC*ID+T#)~#)jqX8MA*1O2x8}* zoyvmPAF1Zgb@63f_T%myER}jL5$8uA+(^SW1n=czBf-x|K=Mzt|2P{9!JqQV4hqAh z16LF(^GgUS_fU*obY+cHVv3v*BEdgNBdU7#CRT&M@rrt|zUA_WT#OSFqcSts?1w-5 zwxnDs{yPmT-Y{%Kw^4I(QTGcurO7OTA7JDVU1+BHH{QRyhbJUu5obSN({YaTY_07u z;v<#^fa;=oJXJ|gx*428oTl-vx+!$e`$^uwv;7r%=$CuHDLe%xbTm+WgXLEw$CA<8 zr=da>?#rH>V+_?yoOcW_5YSQzYy_cH!)Fr(QePv;ErVjM?~Mult&CNDT{vk(kz


d5# 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260524/20260524144002-Config.rsc b/MikroMaster/20260524/20260524144002-Config.rsc new file mode 100644 index 0000000..61692ac --- /dev/null +++ b/MikroMaster/20260524/20260524144002-Config.rsc @@ -0,0 +1,3453 @@ +# 2026-05-24 14:40:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface 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: 5260/20-Ceee/ac/DP(18dBm), 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 +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/659/af48ca83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 18.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 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/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=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv 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 +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 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=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + disabled=yes dst-address-list=Trusted-NTP dst-port=123 \ + out-interface-list=WAN protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" 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" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=VPN_No_FastTrack src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" 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" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +/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 +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add 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/20260524/20260524144002-Diff-Config.rsc b/MikroMaster/history/20260524/20260524144002-Diff-Config.rsc new file mode 100644 index 0000000..2e966d8 --- /dev/null +++ b/MikroMaster/history/20260524/20260524144002-Diff-Config.rsc @@ -0,0 +1,20 @@ +2448,2450c2448,2450 +< 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=25s public-key=\ +--- +> add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ +> 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ +> persistent-keepalive=25s public-key=\ +3206,3208c3206,3208 +< dst-address-list=VDSina new-connection-mark=VPN_No_FastTrack src-address=\ +< 10.30.30.0/24 +< add action=mark-routing chain=prerouting comment=\ +--- +> dst-address-list=VDSina new-connection-mark=no-mark passthrough=no \ +> src-address=10.30.30.0/24 +> add action=mark-connection chain=prerouting comment=\ +3210c3210 +< dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ +--- +> dst-address-list=NoVdsina new-connection-mark=no-mark passthrough=no \ -- 2.52.0