From c0f2a1c43ac3a8d9190da2914802ba90abb316f5 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 23:20:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 23:20:44. --- .../20260507/20260507232002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507232002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507232002-Diff-Config.rsc | 8 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260507/20260507232002-Binary.backup create mode 100644 MikroMaster/20260507/20260507232002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507232002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507232002-Binary.backup b/MikroMaster/20260507/20260507232002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..9dc295fb6a44720ff5d34c1132f286685bd9cd9e GIT binary patch literal 297773 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 z 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

fOY`CMMj(N|fyKQGPqY zx$6frO=w0O%@U62W?Z<3nWHtuL(qlb?G(Fg4#IBIX@rs@vc7$C-PB>tT`+IeWB$vk zB%_9_$qMtGQvY3xv5jC4QZbh%(c*goR)})6c^~Nmf*&gb`y2hl-c=Rasen-nY~|7a z_rJcmueb=)t!Jnlf%z@s)>A$|`ct3sUP2AzcP={aAj*S;9g!iHX|D`F>$o{6YH}2N z{5X(F@L7VdeR|PgxCRxRZLQzF;?*x1jQepI$d-o-SRSZ56OyvQP`*HAD~ctzQcUip z@sc}om!D#CWdYfyoJj#4>#=&8XV8ebKbf4UW$Si(bzarnn;y<_P$jkry6`5;19pCR z7gNwZRkvazh50e*Z?>|BnrB{1K|caKrN}@XpYaE9BDkK?9#aD`XqT0(;X{xprx*cj z5^h35;09=9PCxs@-YNADI#1*fNOyE(eFjjT4E{?H?`#FL5DC`AJ!nhQ^P9~m&4swh zBmD+ga~}#*6H73Ikvj5$=OFI_4479m`SF;RQ(X7gI!4*0&{pE+hE5_Dxk6)vNivT% zpv(Z0#z~x>OOy7Yomx zQ!vWsl0AW@;Yh4TuByN#aa z(Xrl5WTO>)7GTxR5*Ct#^6pY@H5$Bu4hgvY#NO=E*!*!{XTE2S(YJbAW6xP)A%$Wz zrP-iQ$ME~R(VzVb)VM=Lu3Uw;ZUAXA-d3IOnHT0}cBR%I){kDi z0zCyN+^}I`gR^TZ4s-TpX9+=NMHW(!HS-Gmc}y?M2Ji)A}q%`)8Njb6-M(yJ%H#S7FsZ6G@MKza_E3cvM@! z$8`!Pd`rE?);+Wx#$d31^s+W&IqUul_e*FmkwsrQTF?rp+a!6S^NmD zOBGtp5cuYdA`|wS_cGN=y0e!Myg=MXa4K-b=tryPBO(1~W>rAS*<&eKM%j?S-=c>p zVEl4LALfK}mJOl<{3JJF+DPLNVx~#WSJ@x?k2%voF!k6I@=o$8W8gg2G-@3kkuvzD zX&oSMs-^Q@=4Y#rigts3#57O(;82A}CSCqfe)g+M%9FmT^5W2B)og$!YwYvoQJmo& zk&z#2$)V%4x#Wj!l$nrydvtCxHRUPvH)0AAOn!^dLy^Dxp3bUOht2xBwua6Pol%7U zH#Dw1lw4#Vn%B|q($>@p6;jtg;Vde`VgLVX!aTolK`2dnhtisK^Vv}4 z2I|Guvt;|qH?EKf$^bGj7{!U0h2Qy{w5n~O`_!3(1AVAQBtfIq{& zX6L*rs$!=GMuVXfYSC2Mh??Cy_@%NcM{$iLNzc-nGq7pG8*pXBzp=kU>asx8BVoUO zRNVA#0r>FQl*HqTUoIkFKNi;Eh>7ni zx!WBsO?3G=@fvmxz>8J>(P8)pA61}N(L2{N3VgY!g#|yQ1Q!GnCg8*nw_+^=HTOpGN)30uF7pBCuy05SI56DlKA8 zU$0_kPu~$M9kNWjM2$2Rz;wx&5(e&h60*W$QtbX9p|Kz`1+3bRZK11QZG24FOYg}D zJZQXniI@zh{aZQfJ1I(96Q>5@=S~``DbuagCxAdYp;T5!A0oiu=wvUoIX4 zb@YQT^1Q9n*0cDFzQRnX9?`e_r<$hUdS1X|YGqEQyfnb;4QadA=*4c81u)_z;z^9! z-7xMUha`>^bv2k@uqj$Vty6IYksE^IO3~JxGh+Ka`1|wFeE|+pvp7 z?;=ss+!zXWN$XP_sU5Kr{I1iBST6zaWzNFbuXev;!xTHOKMVro`z&BtdO)p zcR}!w6pTI%IVGPwrX14`WgCTqi_@G!dCOeDY|Ap`MxKxifC&~(?@g_4n z*^C5Ef(M${WteYgw+=huCB3A!Vdb-aj{+3^0|+RDIc2Y8I;LI(ZsdiQtK7wjGXW+i zbj3G|R5GIh3o~F<7&fE^0%vfN2WBMU5@Fy90y@HK+Tc%UUQx&k;I=!kXovhN(BHKzddnH?5PAXv<;Y~3Z$zt<#DYHHX`Rj12J5bvff$s>TOL_{in$&IBith};U2^Tp@w5$-pD}KL*WH;H#{Lrs#|3QW{VfqZ9 z*SSlY_3v+Gn+EFk;r6Z%_RB^o%0`L;lEGc54DME;oq+<=IggmQwR`d%g*!d3kX(5~ z=B^cJm?yPra7GBbH)~=bvIV+3V0Af&V8BP^pk+Cii%?Od^(!XVa=vgR zVnut)yPge1b-suh7q0ZjCi}Jx^5L>_`0A~!?K1|R)8O))56bm#v1w5H)`*J2;RyYM zJX8L;1SVtX2~+Kv>kV#8PNM@r02rZKF!{GS;EL_RSxRTWQ!K22u&M}=vBlHAQ% zC`B?mVqDxWa_RfH7mf&j#O>J`_d`wfb@oTC;q^vpO;?o+poLp7xr;gX3#(B3OvB>b3V1Ybckc{iVyj8|6tLkvpUlJbv}Og zEEc_bIKsI0MX(r8;2}-L#coBQ9=iW0UOT-%+on%E8w3&h?Y8pEYLFi-8g0cZ?dtg1k4SaYDH|Q04cwLR-I2><*q+5eIoBdm{Y|Nmk zKZa=_VH*_v2$6pGEbt%-Z2ZKFRQpuRa3HO0Jemo)X(1;cVC>HDp(!P<{#D@2;tshg zXm{+i%OgU8ZVWPKy#}yZom;w8hxVXFi!1Z6JX7L+Cre<)!OD}Md-6WgVfJH#W|Haz zyI0+I&uJ64{TdE#503*}47;`+@b56=T_}5k?M)Zk?bA6gEGD-4U--W+CRPRZ+`xMY z*XkCG@swzZwy=N@){rAe0OfN1O5jsmxr_=ZNAi5?1I5UCP{c;Zutf2@<*_6BprDs_HkF$-%#%5z5mw7%QR%4PEvtPgjLWYVCVE_Q{7Zn@R_jF_XDg{dPuY-!i4XNNQ%o0e8d3o>)0PdMtImGsrn$F&I@fm*nt4Ej+(LMSUiBt%mV(u7z#?MRptL#Thk% z%Rrzd+Zh8&m`+@$<&lwq-8}o)orA`Hm=;dwR0^2snyuDDAsN%20UP>y=qaVLhg<}P zZ;P%}eos4Ky}bX^>rSxwvfjHZ5N&V`)Ywg6>F~ybqH3;gOF7du;X&R~i|B4C!h~-@ zZP=re;`d;DzeE1QyoZOuOvN;{NL<`&-m-zBV~)R${oh$y$ai$!BQ6`PEAQT)ilCQ! z^PQCkbq?1WpbkAMzzxJgv*otzi$%gpfxn5k+W!(6-BFl-EU>H$7c!{t$;Ay)$J9`=9Y8Rt}gzYpSq0j#D- zol7r}zGUawVU@P-h}x|~OkMN8DH#uLLU~zWz4YSOOn%c;o`JrehQGNm+$u(yZT2UnP4LX% z%qeT6{yTC|i6vQiMR#W$vOXrxz&uorZ(UP(h0M^Os~$Lpn^V9IABzD1P&siyGS;pa z1UT3W*)NCqpnE|>w-~~ia5Dwr!nRf{veQZ{pbSof8@$!gN=my#H!?Sz_KL`^Uy-og;nP>sr^Ccu;M_3{T>~3zLGD#f$7o<9Y9^n-X({5Hefgkqtn- zZm^)Yxp+BRMy)>@ZS~%2cB^xd-<)SGG5ywNm}Y&n#7N{AKVfLS#UA26oj_g!kKH8K z^qVD_Lm5$X+)fjx(*-Zjkz@Q8kIM&bVT9Fd)Hv2F>PG#Cey_B~IMXhj$@;oC1f689 zzz!}KoPK5PfH0g%{q{fWj$+;&PiO$7J?N?kE0i=X*lSvL^quBo^j_|tMn{UCt&Dyb zd2o@940zg{W%xjIz!v_|Q-t=suYf1O`#u;Elqo)Ma>|nt9AAJ_%sk z?_~7u@_=5#(x2!dndMck+D{@+Hx;{D$H=`CqJ=I}(4s(F+xX1YOdN6a1edWwg^Hky~mLAU* z%fpAde6aLJsel4fO|@m#*2}`&kgzgfXMIG+Rw;|ieULZi^Hj64^+hNFQELn&H5L#i zt7%f0rNc&-Xl%PNL+RCjT&<=o{)}W(;u?pamodL6mbxA#5fEgPri{7ixJyZM2!7NIoAieg!)dH<9%K7T{r~45}dAw zp1KI82Ug@(SUjTkl;yz*LBQidrwV=6i*YWkClU$Ok?0vwvmjaT@orzfHGpmc%gzG@O0~5W1ct95{o};sGxXwX*82H(mM%ao>tn1xluy#HjG%@cXyf`Cp|5JshkRZw4c#yCT+fDJdT9k@veK5nPxNQpO zYF@~N+EE(%@vM~yE+`-t6oznOi5_9cCBe|G#-~3Dev!8FU!9zfJwijEE5X_D{L(F6 z%QLbB<&pwB8Ds+MZq#}+1uhX@<>@#J-;8-!Zc9^U9?N$V0R$WF|MVeX(lWL>NUk@RWV+r-SySax z|K&i?fr~mbxLewFJe?VS$ZwT1ygP13%> zOIptnSLh*KH{;?U45$KB7F4N%Aw#Q~PZ%_m5P?qCggW|LR8^mjnjq4_FWf4sy@lxtI0DBD zaVs+3#&+U*2|;Gh#^AUY!0E#z-9HipKCdwd=4zE)R|P`t1Jv;+(W)H-VH3PxYt6`h z>5Y%{f_Fx)A*Cx4`C60K!H3PfffZgtjAMI;4uGb1$E*_kiG?pn{venX&*u;1~SpLbnohtvug{AO`#XkHc>r z%=M|-v-C!NfjlRA|8AqIJ9J?iT9P5g0V+pxL1~JC36n1eO)m;JL(sD?!rfvwgqHCN zhR=vh*i^%C3lerIeOaGIbHHhArw}MdU*7te!-tjei2HzI_&Jnr^xI6zB(|hKqg2X< zYAB}m7Nk8>$Rnyn32L2~z{!koB|gzXOpm1Mw#mj#qx_U9$}quH*vHTVeU1T=56DB zA*oXcFu{#MF8^oT7l0>@r1YfR(w%w_*Z8k#SGB|P1vQAmaq2)!if(ZGrdM{?lCRh) z#^vQGNg?F?Y_Mb<0xpEmYOUd}v|6lMdp;&TCq7#n5{#MhR3K{N*ZAwx5L9c|~TZ&bJz zvqC(3&6p8MXWNCa-RXEZt9kjrF2$Qv_eFpNKAsURZX(BOJ?z?3-I(EeN2+Zt4I1ma z99Wz8cYx||SKom4#5epq_#17XZ(u93ve0p z&E3H(GLMv|?38NZK;L*kaO0?Au{KFSo%=*SwCbirIW@oVt@Fg&a70LM6u~%i7(KHV zm3YPRjRKV}Y~a$PeSn+{ZTMApbu6%$Ii&c|6?LS)o-wdKW0@miH%LDAz9Dbpo9f{bk7q&yk%sRQzSNxI|4^66SrPOa&# zoZa6p8DEwP6zsolgZw4d#nfF0y~^!+5qwtR6r~y1O7jMJEXn@|-iz@q?ZFCJDb55V zKBU^}{t~m~=q#%l6Rkf@1=i*^!Qg%}X!!a-*KO#;5Emp9LkF0V`gPFm8ip@pX1j-8 z7N>zlLudY)n<&OBny(QOm$u(zo>K+~E>8$nyjRE^K*Y{3+L@UW3m8fj?E`te3moBw zFyC3$;5J(>T)cZTpkSm3IKo&`|X+-3&hBg)K zAdVRRM`^?L%6QGXR(e%}xX8A`4OH%;FS~6_vQ+3)zVFl}Qrh|z;Z^q=PEU5pW5;k; z(o5~hv1nFRuheXt&lBF2wLWFu^C$meRz*j}pv2{vz|NC1YCK5*#hm;m#1Le!nUAZ= zS4n+6$vKo5x}aK7f#HFl8Bbg{T4BBXd3tLUS(*UcO38a=_*0$wb-rT7TQMT>eaNRK_o1$8qx+z4Ia{Jmo&CC68Nc+PjIsuqR+3 zJ&h0R<&LGX|9g2+zK~_lfFJrjX72?@VlyY7iMB$lG$=Skdq^-II!pi^CgS-9z&oy9 z=;#V@opAN@Ns6Y2g3xkY?ekeu%8U;y#l+veS00DsNW8S}G2r!~9*&}+e7mwRLCZ%= z@*OXPbG=XmO8&v6`E#(FJ;Qih(am3*{lL70hGX5yp|O^>C}EjX)^~nHH8F5 z90f%QZSE%}mnZSV=Q98=+Xg#Zm)gW}?KI;pK>tzS0FBqEPq_U=$s+Qwc|zqrL>;&t z42fM)r%8ew$iI<|T zk!Qvw?);AG0->3K^v?K*FqCEJi-wNiruC=dS$k~?)~{7O#!>cmuV@;MPX*$nq31Zg za;0T)czhQIYmOYxQj4d*y=|~iu6HaSK9TABeFnNVsKh%?kC^6YFjdUQ?9jn z?L23{Vk|S1Z3|Cw(E6yBfy_35eM)PDZio<2tz4m%Kls}TsW|jOrO2)H;<)1Bj$$%# z&y1`nln^y4-NVTK&18$LN`-}0Za*nWm5;4K!%7z*bjJHaj49Jz1u3fOKkYHJED>;W z;uiY6^ifW>PqjICf4l>g%dkur`+szUY+bVyx-gKDtyvby|I@o@l8P?+v{5p{38qWi zrh#cm4t=@7Ew8K;ml!K)GAOYX{OEB0kQRZoj<^hu*YQ|M^W4ANbeWbmg}FGbYZo!K zX(eBEr`Q&@sT|s8pMXES<$17tY5q)Nc9;@s+%^~CLl}vqsi~*v!XLGfQLueF7eVO7 z43^aqHZzxhnG;sB>wzxtCz$aBAcqO)?)6Za^)$zf2xtY86}Pn>VEC$vNRpSeI;?-I zYXsZIMr?i>obsxY5Q+hfJoRneX+DHz1zu)Xm$+aG`n!=0^#9|V(=djMq7As`K~#1j zs3|>=&^L=-&m8FWR0UF)2Qii$CLVWS;(9C#(;GQr$$?y_3U-rMYRFDB=w% z+L!1z_$ZkgQ3g8W^(*mUQdMc<-lOcZ(YOJjx*PF+psoyQUx_Z?0oE$dm30g3 z2yyVM%E!d&3u8DhY0uP?54NX`hVvRfBH|!HLumJ@yLeuTCIWnv%+aDmz7hLq+qomOOeCe6?jr9#RJd*;#jdK*UbDgE?Xn(+?4U%eZ_sNxJCp-)umMy0 zym=zgTeV}V-qxg8(8+wSh@#yx_1l=ixfhb2Vs_tonRhv~$Z>C*75LjeT_y2p1dYVKw>lI43Ft3j{ zLUg5$XX0dv&m4HIs~-X-elKS!Z4oXpoQ%6mK3u_;fPUpl;}Zu%Kysz~Jc{G53NpU) zj8gIe-#z%ib;PhzyyAydn{CRL+->ecU0td(G1{5SBe-|^xz6x&0COyme*pN_)5|@& zOR}^hv@W?z|7*y0k;;!6h&(VP!Fox78h)8celf9n@*Qc;EFFzCkYY0ERS@ZzP{?+E z9#3panYO>oXfDWTsz1fIh#YnAjd}jK$AKrlYPu=S64)PHZ zSP&v#O-%@D)L8H{ISG2!BmagVz;r`7SHJT0ZzCyLJhQsfB8eMUtOO=|*N26uL_s+SQc^qZ`Zq8pV6|2QP+l z%)jDOOI26?2_k$T>x@ca7EyfX6H4~9J6yQXWxin=9`xC+e}mCrs^@-iyHDU{wa7_|gHD(|yEPuV` z@>1M=^>sA27#K)M)Qtd@u^R=O>7J|i<3V!ww8UMSZ*RprMD7>%+@I>#_=U#M zl(^&=JX}s|`I5^z#1z^rE{#KpOlV%|T*$eina695r1tF~slYdjN&>i)C9EcyBMw-) zIbVZ&>t>$nU>adPpDFo@IuiyWbC02#qc%RLf3?_~#|!xsJPU=aTae8NtMqB?oCA?P zT`%-Ve0&N%QCo)`-TAJoKnk#C zSBvsyE~*;2z{p!Xv$DH1Jd!_#hpx{*WlMwst3{`RObFCm$mQiPsc<7M?{Oe9>Fh!@ zr8f&FA#&cXRYSObLIrLY?M(g{Q)|t7NR?kz!%bqD_EMi2L|&9jm+uV~S-!{o?oB}Y zjAGrDO;;aFdeP3oe5v}8P*9V*p;hDxSFG9OkLXr~E{BA~*X1oJfHvUspa1NoCHe9; zy@Qi*y@@85Se0v(&1e`ZI{vB~;M`Ql>-Gx@Y~oDHmQ?-BZIl;yI%?|hjvmzZk4#}% zm6bi1(u`(w^_`mgTT!sWE6_0T`a9CCiXlzMc>=y$7jRi;FEd#gluOxW;4p zE^Gu{Q|RybgyJBZPB+?tNvLCNb4jRVb>JjADW*AATm`Y6?6FU6^*PIHcruON^b}aJ z@GGQnYpSllh^al^a)Q zGKCL_lY49n9f;LK8dr=UuDAj1;p!C9l){27$D!uMm%%tc9@QM_@h*fGc8 zZ4%hG2WATqrPh#8Mq>{Av$O-a0vu!n-$+x0`|-Z*;CB$`f!e_KKI_ucW?zPQ924J0 zo^qbN>QF8`w%+D?d?`XAM+)Fvd(f&V4-{rQHqC_dpTTBf%99hn2VIf9h;VuUHxUJXVR?Z9S;w50b=-$UO&gRXi%DM-%soIEqmxjm9JtXi9&SI2!|hzxC?RHHWp8jL=p@0cituv_ z+cK{HHa|pU$N!FP%h5(TYgZ#+zf4WzUd4v`y6RKP9eY89UGM8*4&J(UD{ctn$h1&N zSsWC-s)um}FuMQ4Yf%6=u<9;pK66+?0S3qCeS{bj(y$Wz+EtPR8 zq?pVTD03C%dAT6Ima1kFeCC{=-P98!x*(#>M&076LK~LKLQfNo4<{Ch7g1}d0f=&q z$hzk%r}R`(g1mmrSQ!itd`Fry#x(Os_-b?SJoY+Ao}SyET`|FbJA*_Up>*WZ;Gy$j z@WPbvl<0VhE?PlJZ4U15WVyAE!dWTNo>-^r#XwF4UjM`}tp-D2nm2C^&#&xZoa-3_ zF!iva{0KQMPQ!=GTN8ofDvK}HFUArcn$?wc3uEh=i;L=6H)4f;{DYV)3748kat~ai zuHyKmbrB1A8mBY)$D-RN?RqRY>P*Eaeo@`qqa2zF>GAkKJ;~o_*1vy59nc*@a9MeN z7_wJN9pQjrPg?G-fK&0)VfZ1_%}spzZ#5yOfU8O!t%-s}?sAHT-vBK&hW)7_l8xDW z6j{U@2kjCN$am)ZESqdIrUQrXh)e-o@H$B2PKD!|6V!K+M)W{DhoP1;bQ3IT#dzLd zQOrzRv)y<@xiBb|!us~c3YVw~=&!H6rcn9KFPd0H3e~|kg{RRMe|4@TZEvXzrYl9y zkNak;hlYufz=<(00y*V=M+PaeIZs$4wHlx`XJTIftzq6xFx5uWTVBCojgtZw>R{Xb zmfDB(IEt+MRRx+wI5J-hvc#@n_z1G;vP#!diCFU=K;59FzAS=6YCe_5`%oT^1@5U!~r+1LRvn|uRFd3HWIg_^J3A3{(WvO=1IBJP5R5y@|q!( zmybk_wJI4Lk@c%{3CEpR*th#cOHocKE5p>>5sOdDr9kj@9$^3Hc-*AC>evNO|!K(q%gMkVb=I$nP?-{pN zu&*fH`v2uxbeqB44C{1$IjZie{Sor-B0TmJy}{R`B=;}Jd)6VBhPM}Z zpmyWCH5eYu@V;g{@FIM0Xui$qV^u-D08wos6qz*1$X$r+LVA#&5ifT}Se1x(fJh(s zXMvEHFs?rd{={yG6&$Dh-l?Kk>6v;TL-9s^rXpEF%8%3}C5vT<*p&%2z`$5`4j?pL z?r55E63ue}P)obTE~!<3^D?DsuUFldC;H#va z^KRgE^yOCeM;xMy=f>u zuh|zfGCJmc2IHYlwZV`F1i_=9-u9c4Ff^{*JM;W0ymGCg-JH1@@ntp&S_$F0J-`8m z=XY?-)_r(nqx7G%hrRpQ#6a!_E7xORYFx@;hnfp~k$u_>5XdUC6+Iv~$q0m_6>@{V z6)h5`q%8(W4o4*L13*zB17Gy#21G!j}S?yS`@TL;=qytP29RyB=oD#KEQ zqn-*momAISxVpEVJ531M?!uL?R;|-BH2zxPaxbW5?>d&F{(y-}1m&B-{GoT&dZ65J zcJus>Np_0OJ`A(2DqkE#hjZ`WO}rg~z?xgcwH0E4D_loU4iqCa_BI6N<`G_QSli8Z z^|d3iiIlnm`cjUeb~m$cB6QtY-l`D`KD&8&0_`JtS8C1D;C-viTiHHuP@^dyq!GVr zjm@MPRQ_)(z3M@@0IVGxf+;$?3oauJNTjXjF zs8`80KUEoy0{V{t*2Hm9Evc=oh(lw24@kEr_@mvN)*tD~v{^i1K{@uU!0uEy|o zR^Z$28eq5{P@O3zu&rQl@u>_z|~wbAfK_{*Izt8GN6@WLJ_lO|PUB!wQW0A99sE zHn5}StzG&3C#I>7sO;X^#6UG&R~epQI>eLBHPIa@s{WT4jyn}l&R?5BgXF+}RMR6&irCQa$GEA1$w&I5%r#}*IeAlzTxtcy1rH3*X+Fa^`vVJ&XEguCyWya+d;Wt z(4h%`u5WTvbk2sOj;uZ_gAjoJ(Pb_MMYZ_|Vg{2LzKj#uJfzjo!s)|*#9<075m@%) zP|f9Td-__DLuRX!>{X zbbsXlx(hqOE)w~yLw(J$-kkAvn!V+2DPZ;#3Ix3@OCuA;>+JIsjkSM~zV}q=G!l`0 zV6zo-dHfPdX9NoAb$BJ+;h%-miOp20t%hPzJj|u4yyiDe)0^lKluFo=s zWR2VW%NXd9qyqBxw(S&CTF93gULfXX`Q-!Qj7(UB*Xmo|hhuIQI70xH1q#|*!@BD? z5(}|S1*p~im|SzD8-zx~mR!p$=Kxf6Gr4V~?3tXM1|vmTRtS3juF11Wx3+&BhW{$* zgYr5PKI9BZQL$fp8ttsz9x~(Do|&AR65?ISP3~((Et+Qh7?I2jB|nWWksS{CHVWl1 zv79H~%VPRJbeQWkS^Jin^=Iulevv@nip?ax5@tg;<#nDPdOCSl%xk9eCNkf*|8ov| z=C#t}+vao=3P0UPs;`kI0&Nam9vY0UKIcdmJ9lj*0Ri2w4e>N0C`~wNgC5$cIxU4@ z*xVu*L=UTl95i%h($*}`UdKBs&0P6wgo2RY$8s^?^3&`VBE@$pv9He?H?;=~RZ7Pk zZa+92bd&WTk(k*UVK^ZMQb^YUr~N~{=XdWKwxSdB7VyU78$_nx$lkNpw|ZMZU^U2{ z25p7A;Hu~**sm@%QruevK9{qFUv{pru_>L5Va)mxTZb#mD$((+&-;HP@6eY&+D#*h z1XWdG3yI&WPJ-n101);F@k?|*@YoOc`uSnDsq~eo)Z7vnjQo{Xf8|7j7kwk4HZpg7 zpguVb!7Atg$EtwBl58OXo*D)6s#6GF+Br6<8%awxSx8iPV@#NntrVrlnO2YVTIVHp zMiSP!@+i>%>RzuhvVc+z@J6XCRWg&Rb5R~UR^93HS+`B=zJ1_sTf7!3sV`}*7tS#a zn#Yw?6YiQRAOP0F0^vSs&~ps?^-5R_ilbhBGb`1sLn~IN8AYXeOb1O0{{lwFZhr=5 zQKb}zLRjMpy;zTN{};}bk-_LGgwAA#%a@1EDO(S6F@D}J^0l>-a5OXE=2X1S<28&w zO2LG4OD#2Y_|U)fY_u%#v2(9@RG;VCCnkeNphnpg5zeW~o4LIH@99Uq>y^5Gbh5Fz zkcEg5itqbRpEzFsLdaU~V?f#G)kChX*YCtuFi=@L2r*PE63t~Fa%}`?$i7NFjXCRq z4naW0YFrhQA!!K%Zy(t3FgCBqEU0j1WVPj<)%QhlLlf4=a@k)vL7t{zF9ukLhRp~< zmA^bN7&E;3HiL2yPZNP;9i7})b9vmKETmupO`c_D=2>#Sd!fOg>LFA%<1-?tO4q~V zP+<#vNiyg+sa+1LLw!01q?W|lOK7^@HeQTQs;z@jy;t8XJw2db370cbjN)_(6vR)p zp4FRDT47aC*3N%cJ>CSW%;!@bVE*hX+Y_z?1RHLMFqo=!kAx@(x1hZr?V(vQA=6?% zfIca{fN=p~mdINN4L;x&A1OkL9b{k>%i`YORn}G>rcXWmrNmcJ@#CV(I5NqD#u)iW z@vxujJqgz)g3z_aEmJKW$KFXJ5O=;cZ3_B1aKsMCZ~!Tprx!9A5JlOn*F8+(rtJr2 z6Z{Q)XJ?Xlp;c&aiA4H`Do+J}qREKTQ2u2wywuyxHODBP!e0VO>M^!%tMN`a-paI_ zi`SHoqiM$h^=@tjT$`qOF?|ty$U=8I&itr0ati4}dVtAMjH!D^w=#5D%pBSoIDQQ z5h!q{aILK-B|DidO-^EO0cjFcGbh@G8@jND%yD)`p)b9l!keqPiFjPEQvLXPinYA@ zEOBw)VV&Fs?kt4-K=A7B%G(NVGib1CB!DW=eDT$mmL}+5%9(NyZjGIlfS#;=GK{l& z6MgjnWvf#wNlli5G&Yc_q;OYJ!Tn;LHox{dr|Tc`@;B7173c+Fg`F zw}}%tm&}fnJ4C>i=>000DBm6)R>M4Is&;ary0BKc4ud8m;l1RmV+aW!cT|h(ZlUZ7r(;^9Cg-D zsYVH0Ivnq=RK=4u`Nb_gwrVlVQGd3a3$O{itk1Z-fjgnS4;@pfjp~e3t9FKbZSZ8D zbbYdUeDEQx^Uv-HZ!m0X>G`BAa?wl4Jazgmit5@c`ZqF^1NldypOkAm=3*4@HTT#Xi(6EfjtkjtLr;wdZs}uW}%cnq4#!)BkDYi@d?WhHkrk zFmo)eatrIF3v?2x5Nc~qyWkMX6Sy_)1_kLxB&oG_3IhzRIsFMg5SKD+ExP*R=E9Q< zTdRH%!PmMb{EijjM{HN<{e-kC8Aa6_?OIG5)yc}buP86~2ab^+a<{4%FCvg>zqXi5 z`vyav!1#k`>umJdks9Tj?qk3}!7Xlg?#qZ2gd?5(aWH7+PE9RWhLc*Cv=4JsiRIkj zUQHj7zkd2hMo|}p0MyVIg57{qRD43n4-b_D*4?#}Dkd4KJ{k?GJk@ToPnb$xul%R< z*z2Z*T_NO`Uo%7LQ26<^$(UO4#oH3Ox+N)XcV~rGf z*MguY!z#9HOHKk&m@lVMFIo8yP*5R$9M`Ck>V2S5%q0mMl~zGMf`B8ZA9>e$lS+Z z+v%UbgE;D`!ZZ6n>2ohdV_-0IF-J^JVCPWoaeoES+x0aq`VCrG13w}>PmVO-P>aBX zPCk_>zQ9|Gy=Hn@JDhvq?H@$4eM0IMY<@8|T!&AbSzUA#;IWC2&q$^+tZ2M^%a5|p zy^bG}1Tr?W5(Q>DA*w`qe5z(ouE3?V+C8)4AEMpXO#z`pV3ZoY-Bx|XsgRhtW|drMGqoA=s+?~>OpW-GDk7S#f110O$xq>%QQNbYp~A;8&P6AzyJ{$3)dZp~Uf$nDa@f9I-9G(2h_(@c3!|sX_#u(Ph@+tA z9`H+?DAl3_0f!nHFzl#LD0?&Zi@@7uL*UpxCzQdao9VDj{fiw-3mf{1S@5C3K$;fuZ+ON3FVGs50_b z_ef++Rk@AC&-{?wt&m?gx*QDaze(pyJ@vEO`pI5hcFEo*y%6L~IAJwf2LPOfrwBNO z2)l9Jy-`aV^Yn!?uUXF7Wg*$8g`B0PSxuHM3=wKa1*qQh8Gd1d#w&6YN0y!l`CqV7 zw`nUJjw~*XMt}XtHT1mGXqiq&K`kJ$6ey=9fTJ+|ex+-k2Fh1y70DSRziZ)OD@I;$n57w&U4DvXLOO;PSmc^h$in$&Q2^A3fP80$LZ24Vkz3gfPjH1T`Dl#yc*WnPXoKuRp-NCTZ!vne{MhMb-@t z@i!v_5bMLcuUZQKz2iu>&f2VM!{ks5lanf3-xyw@033FY;3V|x|BgxA^3%7} zI=e>N5$0|e*#-w3M)2C4?0rHy$JCJKkZG{lknsG&iv)K9qunI z79Grqi$9y{n`36$z z9*)lZ0hX+uA;IgaMAc7FjG_;QjlrE@Qpjw7*|sz(cpC4b?=zUYMOko)vzUcE_SMW@ zfzc4k@3?xfHMp*=8gEraY{bVF``-DX(F(EF+ zc=;?4p0U516^RL2Q-Ofet8HTy(y;|XGfJ-<3-`fp8t)%wxlNJclEgmO%!6 z98PWeR374oEkQwH&#MGvg;ejGh!lW!OY=raIWWKG{MN7u&;~?#WAu0VlN_IycK7IL zoHiqoe==5Px%O{t-&#s>fA9l5gcgplO=4!VX!3;c!x=nOmIYhT4R-P zM`l|6!unlIUp^wERwoNN^;&h>!;W>rA?ty}X_M!OVf$#LngFIG$ym>4U*OG^FNbSu z`WC7poMKCSD1$wR5;cf*aQxp5ZUzt3ucp7V867akHhbDi8y?kBebXY#8fxFHxl{?156u7Ttt=plaU9THD6cD1{3qL1FFvlbV=Bi!mj{0iVT5 z2DNb?|ApG90_zy^M}^t`e1Y{@?)!q4z8KACL{Zw|GpR)9Mx?>jx1XPgQd^p!3EWl( zvsS?7`&71xzrGCqX1d=0Q1I(q?9W!?sc9^{IDH)^W4|{ssxGG2xiph?R(~py znl&f$RKxg@=?3LiYO$05Xx3@ZF{HK@?2C+?^F zJ1o-g`xg7L`dRL!AQ29o6-=`p?EG;CjX3a_~q?zk362ps)9VvzZ_B_$&td*r@D7W_xVG)B*Z!dj)n&E1Y$68aviM zGU6LRN3L|`fJmGsUEkXyoOgCw{#7f^vHU{qXj1I4ZT;Th+lK){g#li#%ZMU~c{ECc z_)jKx$0gesCgYcGGPS(R9S&(jz4Z$1n(NT7xTqGge*q-nq%;BJF!R24C5I3B&kN^vRzcuo%s0BNs#+7}*RvGFG|ZpK&_|Sh zgITQu4{$xp@v=v-etbbV&RhEP8&HF(wxR?BitJ84*$VTBI>wM8(_|t9fbn>*00Y9N z5Aw7)TZX)uc)AvrE@E{FA0$La5x7O*`EKeM|A|@?!%H>WC}j=b7_@pL^aB7=o|5;k zYM;Q-$;Ae~Nliva?APz0Oj$3yH`?&bmVPTclBMe^CT{$PZt0+ld`Zspg4OhpLg1m4 zfsxMnp@i#K(<(z*eo3+)=I$a@DXlV1n1^)zJ){=+Rc3&RMhmYk+OEl7(OMpHiME-t z($!quS)-Obo5u7WkZ~7_F}O;lTkJ;7=GKMY+N$&gPEhXE8X`#=wF*a&Q9*0Y=xJ4V z+YwEQZ1SihYUmjmke#5J>|VT6YBh68{;a80_n>b2YU76``E}SPT;55POACG(!-g`% z3bG86jKcgxx&T5&W-8d(xlq?nq8-r3IKk)w<{Pj*-VlREWXyPoCWKvWal222 z3oNyU@Qb__N zk30D-^&L2_E4)gd%4@IiY+cfGSprEk_{5TbyFeguf=b{u>@;c~M7beCVSL*UHj`6imbfrA?_gU#tdf zEOC(?BZcve#rr;<8al$Ui|SWGFg zP$D)bMire)-@FLA?v^eiKwzhB3Kr|SRx5|39?6;j0uxM(ph-(g9%hDPq^DWD=yIW| zrCGx@fg}{@y}Lmx_6HJv6a;|Fe*oopP+O(s1FVPX?u40YgN+*Dy0z4uP37igM`|

|1>lM7zf@#4Z6Iv8+dbXxRIZ80~&v zfysnf{WJ6G7n01lpu5AO+*{5=gtdLYoa9TqXHNO-Pb>b%%VM8@7X(5_)M`qVE`9Ut zBia2r6C7CsV_wM<>bNxQLQ^L;{AFD{5Qn4FgvnS!7QU6uEsBvwwN=2dhAVi{k#)YC z99u2|IkTj4n~Rt;IK9bM^X4nDhA}cL=AtQuFupm=46+W7el;7d{o+L~fIGQ*Zim+K-<)QF zVtBXUW-(Eh;g*#)1~(iTt4zWI@aVVFWdJ;0{CzO!4oP1XM|V8C5aw*ZO7*}U%|`9) zseY4EQD9y`>KKNgss^wFR=wO@rl3g(j~+)`5QHk3CYv_B~1M z+5G}hf@vJ56!y$r<mf~&`mj+n=)Z@v&Z>{OYJR{Jgs z>_ZO%+$9>T;&y5`>iyD?Ya9(NB}G=XBg&xAaFjXC_t+ z53Xp#pLg&1QkcMfz-UMkcJMM`K*B<9>G*MI_sWq1fjuGXWh+cX_oDa~v*)*y=aIOz z+}c4?v*CRGx=TIRKH|-)v4`*7g)<(*lz+LqHY{2Cx+z^4T@HJvWx)dc3NQFmH2BkSwTtIvgTH zwjkHYl9Aud=O(q{7~Rj#T#i>@HB1+xT>B|bY(q*_5ZTlNDPEtKdv*X=j`Q}Ym8=k|e#;0bzyGdLI)Ww~B!5t$YDS!B z5oJ|^l9{tUF_Azk?_-YDtmf`%fo8oPb2r2RN#4GVQqdTOfWBLf&n^^Wj6&y36$>e# zg99DAOh)akhZ2NOW};I~OSH<1cHMUk*H|^=sP?L8-V}moW!B6fVh}pc*}kW-=xO8O zDUGzPU_Rpl?Zcem{(`4GI0m=Q#Ob)gxv{4v;3??svA(A(|gK@0FBz zi;+E)F!15u=AIJLMrfON${c-M%Z*3uj|2T{&mcVz!K-rIs+M!WIFWipN%BgMc)RP@ z06)lORGC)xy2de;1oL^$gaFldcJ1^<9Tcue>@xxZ2!OCKdR!g-;@l>pZRV461x;$l zZ8-;HqtkSWs30~|#`i(*J*POrgAPsMVTj6uXb5ml>U%9;3?yAw@Dze}ZE;$G)GtN> z9a*4uwLl;Ewebg66a$=^CO|x-1qJXA?;N(Q4t!?YCRd+wOtG5g{Khe;$FyVrShGrI z)(h^_SimM#f?EL0Av~SN%uvTp_76{<@l3wWBpDw;CVFb8qNtG3Tk)oN*680v_Q#Wz zZD&G>>O#Sb>g-gfOhfXW$Ddpc8{nkz2;iDhE-FqwXaf^Hkk)w(8B)Mm?1N-pXd+cu z3YrQo+cQO4Gk~jBL6KXga>JaduxN~Dx7%e9qi?yFqkaAj+o3*TC4Jd4b0Ms8{cpV7 z(ogtVFh#PaqGrvvsA;?@k7>}PUX8|TTOS{=LyZmK_u}FDW5FN+;z;bmr7uHeFJL#g zUP)Wo=;2e&rBy4dhtV<0noh=1STRxVan}4K7ps!eiv`7qVXUK=e{`U7dLqrqpRxux zS_`t83ony-na<4jj>Ok!XOdxvmRIf8`07?FAri_Cet1y?-{Nb~M`FBxRT0f~53nlI zIhmB@_3r@@_~Fl)^PmM`<$^^>a}hPH5p0h4DNur^^=%=zgX0%toF&|T5RcqW;4(qi@VyE(l0Sp=el8Y{l8z5*oW~-!CK41UjxY>lY_R=22mD zOt_XN=rubw^tiB%P|&=m`}&jT(7JmReoOm|=J8favBQ|**O?!|&EF{dI5poKLSmm2 zK)rvoTZ4>LSG4*b8br{y+ro~;-AI02ro!GaSXQm8$4U{mV1@@ZnaE<_G!A-6y0Q1{ zu|s*34`TeRO_d>0W4|Ot^2XTdHnpBxX>~2}$svKa)8JQ!NM?cd7bBiz^0*j)_)edg z7?yz7n9dH5kLw!FP@hx=x|~;#CiZBxEi!0ppv(4=0!^9Tx|R#~p;K+}LF$`2S~m$r z%du=B?!>XlctG~Mi0>}a{f{66x(}{nWV|zSnIzFr?Jfp>0hSi*{Qz{AC&m|2g!}=x z4@0z<-o}h|Nhia=*oHCO-0=-xDk_s)&_tIyVdKl15VN}E3j`jj=!r!ROQ_%7g-YkR z0JH^^eWW42ryg_bV?uDq<;dp-L=|4V%aH-aNm;?G@kGUXe5%%+PR}tEh{D1e4{MH- z1uU*i-QvSG@77SU&~W#c!>eLNA3~Bck*z1dt6W1%SwfAF3{ki|q$qI{d2XC;pOtV! zpRP`tYfa4A=LGEXhfZy%AKJ1@38jl3qo8GU7SW9XhtHg(Zb=uFcEK~Ip!7VIATJS? zzEobC7wOv}uQ+r|xP95@RUqWxpA>bukNp7D3_NR7QolQ~i-fICzF7U#y@y? zPjHs{kuAiZUbOPjRM3>)*et~62VnMpi44+o`BIU%A=v^RRd+M>*P+k8OF2hw!ZcEw zl4&3`9zrS-G}iH0v%!?sV9&OR^(6i;V7YkK>sSZXSFITyVCp>zIUu~3COpCq<5KSu z)oCuY*Jb3E5-?jMpjR#>kQ!Z1XE4s{Umb2uk`N_uFFFaFk;`HemCVeDvhB;+do=Ee zS16#3bvh``uRZ8TR5dXtFv{Isn;zh_w)wZD@%lIANO42*9>;d<_e(XpR^_xhPd)>> zM7LX;5ZzxzX{e9iyJ!sdE~(2C@91-Zwg3{9*{T&+nBndi06-avghJI>nF+zIohivS z5$ak~fSiQNbbZWC$1%CM2@VwzqZyn$9bhkq1Hq9&+Z``Smr*D!mVy1+mu%o=@^J@B zcjxrA%`jH993TYK8Ag}V_fg?l``qdg2z&<46}CJ|gFWrmrVVOak+k$jYWcOQ9+Ics zBuCc!hpNPFxD2-E^4xFA|NdSGsr~3FA!sAUR*<865W8x0qhn~y#OXLY zi6p3d%%y(*QdxAa3x4q+;@DC@0`S}0=%+s>(HyypC9#Z#$%6lq+QDE0^`qbD6X+_i zIMx9wRZi!#*}Zcb8h!8ebs!Nt?@q*%Aa-3cUx2|GWh~jQS!M-3J4|wVEqP>m%UV5M z>OaP*+=wT}MH7eewpk73ksI`gaIhb8gIb_dWt%?NT6qQ`D5uJXa1tsj1j;fMoB z7q*$jA$O~fKs2>b^gfYx+9Zxo)KQ^DjR!rU_c@WQva7ie`h;}gc3-HkJ;O$OK z8e<08j>Xc(taE@NL{{J+w`-rM1fm^yh8Q?+CIZs8mqLACI@l@OAnOR;qn*dz<{1wh z;Rh0?zQ`qk9N1Wvd{e51@K6cZGB(+O$W7x$LNVykgwZoWZJ1pi3s!g`LP?U zzeF#PO(+RVEUOoo;-1D47pnaC%7mTZ#rV!OQZQ$_-hxd={)H=oPagb4SSPQPwuZ!B z+gKb3?wyhLn+q4wo-Yf)Qb4J^snru!dJlI4s{RVTRr4(qD zNr)RV2~xkinOLqxeolyu1p|=Cs+_FI#0w;AWbxTMgmD|a7_Ems9u?A^^`GGEO)^s5 zp>rQo%*%oKCd_c!5FH1}hfmYHJcBG*jc}O%p>5{fP>hQY!^iZsdwV|L96{u1_pBfS z#I_Oc#6*9X5IT0NCPQWXl;TAK>4}IXmc z%6E_3ago;{FHCwqB*e&THM+taI_2dlMkDR`=qOqK|nR<4CvF&WQ}z(_p+ z`uYTb<~SX>t?=gdY7z*}IcF^={Oe4%bl8YKdyy+i@|R2Z0l}>-HRmBOltR1^urPh4 zlcQb?M0K0jDi4vr?RGy32<7e@d6~Zrd=uBMiwtV9?mc8_#G(U#c`GOYC7>lLxP`(% zPh;sJoXVN7!s(q~!ec6(aiu+1q)=DAJxU&duLq%xtOhwsAU7A-6<93eQOzU~-@wAH zdJpOleMbnHkXxf3!J8wgvN0--2b%See9f@8wTC#ES49XT_l{$zQAZbrhU}2l(1A;7^y2q8o;Y9q?}t8V zmfUuCJ_3MEA+P|uTfz{nba1ua9~XybatP!S&eY+-X=Toale_L>8?Q4lDt>=^qWozF z4T{ET))f8JR=R7Ut0#O1t@G3X)y z+9ihiL1&Oufx&NMpS%8#w%4(DO)B7X1@9esjEeb7%xrh5Z95oeba1HHJ&t~PZmuyE z;y)o#+@lARU;Gj5a_{pGA1pBOFtDore8V0%+MknpFt83@6dx<+fN5Gwid+u5+a1u9 zmc;!uNod@-1p&7#GwXT(_*o+iUbFIE2w!MNeBo+MF*~ns!v_HWKLEgm<AuX8D1In*&aV}a7LFPRnbI$OiI zUKju|wWSDAN3HJzMt1xdDNZnyUYSO%UI(^58~bZnNHgFlwX+^uQf~FA*gv^?jVt~} z>ygl=-@Ew=Sp#t@fWS*Z@O7j|d(lZ10Nyby$c`;?t1RZa1!M!z^|b1)*#<7hkvhJ+ zX+u_)ZAKTX%ZJISDf`0x??kqv_y) z*GMIj1bwM64i;_s5|`g&x*^njkj7)(PB!^Zij>PtVa8bg3y8(hX5-^|*iHdrffVjS za#G`yeHchO99r<<$UB02g6SRgeh7KBgpZbX|# zw9v!V8cOLO)GoSoJpvZbxK@dGhrrN197Bw~9K*S@v}FMVu*R+Y5I{PR_ya>?swj44^b}@uabpVI3L&!&rl0|&a#$*V|5hks6P~#FXwza%@-Z0KQ2asesjLnu;KLmi z`TXi(&46c2DfeUZ9&!@oQqt!FTayx zMrf~w>)WD>ol$X(5IdF3{-I)UfZjTiR)K008&K*nvhSCZ5jKmk!~{f9i*GfbA6NVA z*ka32fZ@Kj`YAGK>wc78=I;KA7Q zbOj`ayW6NR4A~swGTrDd-IXc#`-8V{lI0v=98)scW6f)n!zm$l{sZgOhnq84V$uwX z=mngSBs&h57Hd{i0g5Y70}|HfBkPfZtQs6~5>XCaW5e#w^iZm+8W(Y2 z%9@Y82s2;>WD-G-_{_Q_?C$?moi1vOyFU08ACNbx(Rfonm@Snzp1GzLrs>7bW(Z9r z3MM6|iC5$BqozS;Y20zfiBpU51UY%GJ>&6ezR8Cxo0lY^_+%TW+0HecY8=*g!vsQ7 zm>ppA#Wtp{Yg!V9eiFM$Kc{U3NRl`Fq&Rq>O_y6$lS~y#4$)WtQgHu{%x7|+RF+nN z5|!_LxYh|6;c=JJtI@FundYBvk_-Z`S|K)^6AH6BmiP^BM$zsKx8h-}Vwxb;|F^afZVvPeTU8!5d)j{Lnf7-$m_)FFjtLPaxdo(TR}7 z!Hk?DMX<6ft7EB)?M*?$*dXZ>R3Lx&DHUP)Wa5B{*sfUcY*+DX4h*X}?2f^L9G4te zLm^dha}UDSVG^Jqk$tex$tB0(I2F$JiH#4;on8X}bpk`gDi7GMI7>geb(nZq5`JQAa1tU3`w2wn_g^8yr)edpjF_>NEdAP z;RlCiuL7Xd&Nbkg2KrW^xoWyoVs($wbx4J1)?Y3pXE!--(1(G>%(S^cWJP6$Lj5qY zZcv?J?@A|?A{X0Ba@?Eu4{2}l`7ZY!(YXuQ&VDR(WqMP(Y`RtqeOPDfK@+1j301wS zG0aONm&3<99Y4q%0!K5W1lFfzJRYGqI6?A6mEC>;<_m~*M~WZr?mepVf)8=yZNcn= zjkg&c%O>nBi4(oL8oL&&|1QTWXm{@Ns8n@JR1v-FzrWL>_~KufVCFaU2y3>BuhEfi z>PCBgfdN`uPz7e6lSC8h88+2JH+Og~u20d*>BP2rWcP&Ej6hZ(J)gEQyfp=B#bk)f z0npz&^jJ5G1+EnK!JckV3BVl@vp)Osbm=k|&7u*rhn47D^}Azsr`%WVMM7gNkV9nO zjU2* zxKV(IOIZq9qB`A=nQPoH@#`58PQsx}-L!GcU!DHC&nHLAu31)?j+x&$(=MwTX2QIY zeTCZ>r!qiFEV(S`AS{HCr-Wm)ceBdi&hO8Mwu;w^DJDtEF2E@50Rqf=SR&wRSS_qu^rDRI>`2(v+Aoi}prPNRe zAHZFGVC+X!TP$t~V{Yk|4dUz3J&LGoZeaMzK4=I$x#7{}iaF1T)l&yZXevtQ`QjoKZ}9L@gBKm(c(POeJG2+bkL^cj9j(_Z3Z~XmEX!aHNZNI)I8K5v74?x(njO`NVh#Ny124p!o?5_>F`s| zq>X+?=w|8JERRknFW)l#XAF3PA!GP1%n+C|J`pem`9ti7ipX#Fxg4SxQkaq%EC-6$ zf}@@O+HLA(+lw~Nr`}~;)XUfZm2RWM5Y>X%G_i^-)}cM*`r?5nh7Qlr{q_Hp9 z@DcEDYXKefkHaLKivpS?WrK!PG4M3(4~E%&K!7&UtROM$u`=Yb>@W$#R@p`1c&QZA zUtH-Op|$_aB!Mn9qc#liBsiP+_>i2Oy(uH5NIh!vq4qk=pnQDO_SYH6qygaS+8#l#4lX zIhDHtV)B3Mp1Sf(l@~N-{jqN}I+r&9oEDqq7>YlJ?Nn9Bx-0o!hYiDomXJSTDl-6j z)IK^M_v?4UE+Q`rP8g4x)*cR9_`*+C-8cv05@*=(>Y`!dS; z(UPNjU?Xc_);)#9%atJQ57dvR=}Z?*HpWnSvsQP!K3yT7z$8Uq&M{ZHo)N7KT#?0e z>Whv-#4l*O6merDWBC@!I_KwrbWaO5XFBC40 z9i&D9EzsUBi!7~J1jtzzo+wyQm8u&iyH)Kcz{=d~Sz1?I0w0u*6u@s(LEQrh9MhMt zmSn8`+CcU0iid)~Z+WPJ)BL8`4+ycUAL2p^4T0R1V+*#E^PYBiJPaeNlhxn@U+5r? z(LmBY_Id&ce1{}G3mN451P1M=EE@F4DHOgC_f9f&EmcZaCswG+;izhUSE8L|qR#Z| zb9bN#swD@QuoGf!s3x0t>ZR&8A3Gf5y%4M3MA8Hc-p=}#+Qpx&cf3)JK)%1_Akq58 zqL@*?{SqyDtPMXdQ_>sK37FP+}-Z8E7 z<2=S%&4jgv>j^7ROzzvX-7|afc75nZbtF<$V+Py!9w8MRov0>4Jp&LjN*9S9+yBEq z3_b&`6K2=8{F*2O_|zsGYqhZBw`-jb7Kn-Bv^zL6`UOPqxA5FQUsXd%+{t~`h4=19 z2%~NP#fCFu^GhD6@AbeM?`wyMluPhuJmk?zv|0*LM4-SdpgHD$v4ndwk9lOUA@?BrFwPRlIw3}_GxNF|iYJF{0MX5J4#nLGJNBsO*RhianrQtnu2ye}XPS}tI z`tqi?aQ83rJj=C25*s@PW|+TIDn!Ome6J*~1Xv)QQ8D&NlZ1l{f7J;1_L}L8*{&eK z=e}gzFnLk%cPvYpAZ2%v3i^_Kg(UQ_g`9m~4kCdebL6Qm0B4-SxWqsZazJN~LaDJZ zLxl}QlSXLlI$=6n34P6k#;bo>=4_>p?D2L_1X>Bwq4CK_} zcaTG|y{_R99S1)+mdcl){j>Idz!cB2D1HLo9q%^-EgE{o0tA=cK6~zjIZ+V;qyrGQ zi^&@JyeMz{E`;Q2@=8jv3C-?*5FD8*Vc`5azRm*%VeuZ0I_DCN^BW5xg12*D=xV7p z9Q{V0^PDmCbrWc8SZIR(bWp1*Ep_gEuUqGC`juHj0LU}IM7S3^4lA3p3bh$?`xIs1i)(7>?<`f#D$vvm*?~7L-S2jd zhOQq5Vrg_8fr>-Ay>-y7#Zs`7olKtsMNhQdEKNHZ{X8O}uQYZddp(XCF^zb++vytt zDbhChe8HlgNmZ>lNY2}ufec~+cQ2>P($zt_4iX)q#tRoMP{zOR+@66N#+xRe%jkv- zNXV0ZCTlAzrmkgzZ3Ga0d{edd_w`E@8v7bjgyNS98BUN=O0?2`;GX8TGWq486zc) z1H}Jru3aV}fGA3Oj7WlYnAQrLCZzl^ZrjL>+xcc9HH5mAS?fmWtV1u>2uG~0komgV zh_}W~8s-*gE^itSO7wu~$xr$gbRPa?afn5iufrUGps+b5E}DZH3E<@xvh^i6u8%`g zKd^0>=vfYdq$WD%KyHjH+-$7ZQkctqqaL27+2D*1N6BxbRa6e`Y9c#x3_;hn-n>DS zY-J}25y$}?9@a3&J{1qd&xP8_m@47Ct?1?;5$laq0VIe+@UpW}?u@Kt@x(C)?&!y! z9C(-y(x~BcGMz}MK}$E5Dx3e#vz{VA!~v+0zeJHB$Unkm^da1Wiv^6y zqEVyP_5Gt^eC?9vnYxQHp-P~ld%dCi$Ss`RSqGrDx=vc|xIZqPIM6LA$Mz}hA*0j- z>CR@L9a7qBK%;WqLI2LoIo5@4h-ekaHj3D!1-+$!;^szH5#c$_HgK2qsm}~}_YURxe$N$*>Y!IyQ@J2hEXF&Q{m~EPxU>&W&P`vlxiNXpse(#L)|G>8jalEOb$z3qzuB4(t&P(I|;X3 zzYk73fiKS~sV{&m>(Mwi^4eTJU?lgM$e0Gr5$I)8g{Bq-~;Hu+*LNhiQo+uy- ziTL&wzRlk~k1Z3;p;ndkL9p&x{dK17tq8pBxZ@kZqRT>6E6we* zK8}-|E`;pN&OuC&&+Y?Ii=S0KUWh`l{Yhw$?@D^i+sMUL32d3EwD&v3O@Z)S$Nt6l-0Tj)WT1!*4afea_^;25 zV9CU&R!{-JiL9%7xzeu2ESdzAl^Y8#4xIyF`-@WYPn(f#_5Is~_76**7!)uU_V__P zCAd?7N(X?-;DqBObNHVJUp;0?-~?~){ltYcvt_C~C2xxN5s`46cExC; zvLldTs!s;^XI`!x-X^>eNN>q;5=Zy&QC8a7Re{$2{zClM^VK`ZWjhM3ZxQYZw`IJL z2QY`)l!;U3jviQou@V1+Os7w2ia*n2Y)`jY4bYp71P2Y)NMth4V?KPF2#;$4B|yz6 zj8mpGy>+fbveAh9G%2I;$@#)k}~U2mXOFZ=+=|LS}347InS6iwQOvKr(uCfFv!Ro#BW+ zHX``So+b#h1M{{Y99`5Kr=Zb#)-W~3q52&$bIPP0hT^5yjA4M*r)dNnQnpaWUjM%$ z%v#ju;}&B1cqu!uc~EQ}GEcPOC%k`Vbpw7!_~G=FHe;)aW$;+I@U^MObtzPZ+Os(d zPMlSqgV)r^W~rG(^fddOL{M^F}GXBIM?T_1G7+#AbBWcw5szxlbi^~h$H4|!pukN z2&4f=HC;Fj`b)Zk<69vy4rE9Q6_b@0#_E0>SiT-~62=w|IUeMra#+tprEN6$Nznr! z!QD&@qYHj`ddF17UEq^j?TjwXj0D>C^@7&$mfbA9l1Yw#0?1Q?>HIH^G>&N#xLb(V zc-;`8Gg8hIe(TD5Yq=~^dr55K5Qg&M30{fjkZ}q?9!zqp%VG(z=s9qE4-9?QWDAKS zCYNz&_EE#6gn)obz|$DH1ldz4Y5y(ayT9DA%uAsME|!Ycy<*}E%oOpy0K)MDKF6H@ zRPP+kqJoNo!^3iIvB!PKE2CCKYN;R7D-^a_kE0Ei#u2rks4dSP-60Hw*?OGv>cmhz zsmo_vULhO|woV-=U7H7~fna3{zOluv*((m!W$LiCWc0&69mSij$~T9E*YVLZ-oO~Q z)n;-~i)kAv=^vt)X03So;I+Ei_}p6E{!7 z9^l*(EKofyUOf~(eHscCRauk5%d{=3Yar&;hurRS=2n!P%44cJ`kqr%#W_BmQc`nf z(PQbzX>{|;{9OQ^e-Kr;$^rt}88sOF&|h$wY%2BH39@xl^Nn_F$Zdn~OPn5P;=pwe zS|zoNEs(KG2{u|q=0-3!UN9i&gL~)QxMt_FIiM| zQaV!kKs5GxU;Q>1=3Wp_e z8T>+EcDDFq8h=YIVFb<;!HwEU%wplLEsPcet)tt7kx9>u8JVEiV681;RjxsUU>u72 z7SvNk4+bO5Au@{AzU+izWYXAZFC*#eDCnc|fYL_~y;)_WQBL!7;cgy>G!rX%;f&V>+qZFq3c zap4#D-7LLYk^o8T7MAiw_cu1Q1A;cQ*2iH%rf9`()VlnZ z>3!m%iKe+1PRJ99lZ4kf!vEZyFIR;}gd@SM4f=&On*P>ju~LrV6mcnVA|4Ic@EUo$ z2<-ogmO(MKa2QYXzh<1VwE-gyV?n*#_*WlGkt?J&$ytah1|^z z*b1xS(dI(~nRolaDF4O53s5%I`Jg|7C9HL5|738PfO)-_XSdq1hvB$pASZ%z96i5i z5skWo3WG5606hIyHcH!=Ubpu|#Bs_%t!zaRTOd!;%QHt zwesSc*3H{Q?dnS}nSV{{<)jBoQl-k!Zf{09DAN*&FE@yPDp}uktWn8;Tjx_ab zgRjjCnsUgmC2k}GmLbJL^X{LgHVs*&0?}GP8BbMTU#(5*O|RCPRM?qEr~)mP8%RXFpC0~gyi!{kzyKuEG$2AaMur|hm);u;4dm|d7YGT^w$G;zfk;sc?uU@CqlyTT!23|e*$f>rj7XTN4!ReT zmpC1eboIk9y8_ zx#EaOCvq*G8RW^CqnDgY^XUtCjVdoU? zTqq{+J&dNW*3#1oaKmqAAMO79BcL2IwA56(^ga@+H|5=nkxnvWH&6aD1UXcw-t8#( z9MzQOp^b)ho3eC8epK|Tsyy?2$;#c)EoL@=f^`|BY-ro>g}ZI}f_Whm!Zlozw2%;fc8pWgcS8H|V4ej;~Q@bUIS9GSNqFAPm?f zixlrfcoIBz>y9tN2@cFs&wHEaZtxZQyO(n_=G_rz)R^=GC`4BIK^g7A>$FqfegMcjKF$f9H4H5 zCo?2cypX49;@9zXDGH7#z(FO@z<1ON2FcCf199EB zEN5e_tY}%O@9)M>DiYOjfrmCAq{H5Z%_F)Tca7@1uQdlx_Mm1x?G*6Tw-%@$7iGD~ zh9d3piXrhI@#v8GZo(6*s++w~JT}-jiN;S}#1i#xF^n3@BT|aWs+O#Ur&kGHo*8Yb}IPvQv1p;uxyF*%Kz<7j?MAxC+uELJ1G{59@5>Xfpa4OaGcRT2Fqa zjDR^DLQS&_i)&kp89lQkk}jN@skml(oVM*A?C~5p`LZ}ehy?DX!Qoj;l%JLbjW}o9 zF{*`4Q86sMI*=g3XERaPc8-#^B*SOTdesT-pW^$E*E!`jNpn2c_8_o3tOj~Gx};Zb z!n)%_s-N7qQw|Il3ayLE=R7AFgfOg>sHft|ShiM@=oLBroP&ubT&{J8vgyo-Fu8n^ zjvoRts}3R~KI>}sxrhM-h4xR<9p5jz`y#S?=#PN_UMO@ga*1Td*~qqY8i2IcxL2Q} zheR0WNlZZgIx{G%pV(Q(w76D}#d2q6h)G4+Z|nu53b()#%b=RoQ= zhOk2WeURvAT_@Ti#TKtBbiPSd=%V1+qnoKi&{fsrd+Ztg8m^_`Jem@vI-Xi z1MSI})639k@NI=tz*X!n%s6DR1CzSA4b)IBT@eP~=Gq)RL)^y&SdvY~xi8m0f_fSI z=T7aft#5mld8Gz8PO1W!qM+`5aUL`L{KxuN)j>JW`5KfMQ2f#^E(%xNJV zUx?>ZUQ4`co=hR9Ppji!s6X1torAW=UCB+KH%E^Q%Yg`vl>p7fz2(ilAXW|5#I-6wz-~Bwqlkl9(u?I0KW%)v>?8g`J9K#fNgBCcOV+R+XJnk=#QPXk)cH=?x7m-X zvea`&e~eeW)=xrDB?j~W(;q9;hd;0YGI$I}6!3o9y4{-qa;tMM!`d+l=A#Hd7%_AG zu3!Mf=5a9PmQH>(z)wCFYxJAANBLoS6E8RG#p^1ZLb;h3eKfZSVQU(lTK|9~??Q)A zM98Dv(#RW1h;eOHhB33CUE1F2a{)2M{JBbzt{j|h(MvQ};M&I(XO-&^Ud2OHLG{uw0)ZG=&%57=CADlcbCSlO}Bt+L%ZrxeEARJiTZy=1tNMbB%U z`0dUy^yKC-=ZXUXi41pF^Kq6|0pxLla4nX0pN87CKaIPJwjS-XDfL&sJWi)&{yAR8 z#=4JxUi&Pm_w7LNoL1r^poG%nEB8*{7QUEy(DYg_P#!@vHIQ? z0O-nuk}Fj!hd>Pf7`uySox!S z_DfbSuEy=c>qw|8a(pAxpx^J1p!~_|fz;&z&nN%m3wbB4QQ<#Q>614hA3R zBqP<0;TJ!*kzYogl^R^ziuLc!q^@YyUC{+B>94!!&DW@V4Ax|8-*<0$y)hrlgUWc%gw;g~ zfm8xTA!`+SjGX{kuo{Ek$~b~C_NT$zmxZ9@^>wk=c(sSFpI~3oQcN9?l*JXZe&7rZ zw*Gd_%}EHDQI{)2z1B(j5PoKv=;l>EBWr2a!{w=RB$MOUC2t70hJ`tgQdJjWC_a&* zh%hHnvo|gIS9!-GSBjQt-U3{ygKYjNa>&K@$ zeLxp{MkzKi4kv@h`oB(5^K#KLw7!^s=*9HP!~Fo8R+7hLFDS7b$>h#k|6YvkbjhVvxpE2dC|n@`LJ3b1)8+!*pU(6)}OYL zZXXh*{?24hMS|N^Okf_KEJo_O^x(G895rZv&nv4Eas;9WQ8f8By5V0oBbnw(cbOR~ zCQPq(y~;;f>_r3@3OZx=M_M!EKpCuFFp~oQs#ken(vJ&Kje~W#A#$05qW4r-fonbd z2_`w4*&(&jPSM~jp#v#N{GA_n@q&qS(Fm)jQ?mqjYnYhSUr(>UWH#ug+W6Nw**>KY zr<>7V|I#$!rPxexcTO0!%gA+;N>Y%_she!CyiVx|d1Ouq;+QXC^q5;6c-;UfJn#gEf7R-=2 zCCx_)mai*F#o*C2c_PD4S1^q$s}$Cgy(cNXHs}i5Dmo zXJCPAbj!o!q`JSpR`WXz%_8lFMX|@W9)#L2^idA`M{?ndXY>BruuVdwy8u zDH%g3^X#oA)f&xy3A`9g)+gYx%+TtSs6qeLcHdJh+CRiNliP}wWt=pNZt7!iA->N5 z@KTR<`9)G81>!x5O<~;T>M#qxh!`?S$qyA3kKywQ({p03K|pL7k{w7jQ|8sj9~sU0 z>afTW^rqQ4sWEfzIUGm7I0_&{ORsfgAIk{mxu+*X|5I`oTYHv;XXHL88%Lav^zaM} z2cTxM8r~w|VG2md?x&cowo}~|n?ak}ovWyjPm$R8L%MU%GH#79I~qPpu$J91lyq4x z4}!?U=02nWy6Gf`gy#PikFSHI9%y@M_#(ycij~b~C%*MBk~|O%IUF?U^T2=IGV}NI z%V6CSJ!!^!;Mc#ya)O6oF1~`gCE&Pz73QZt%gQVh%soLdYm!u{IF?vR5i+Q-%^F9=+I9G-j4Ic~NgC_aHNa=SYQyMRA;egeC7jRtm3dx=GG75_VN?VbSoxMd9j+)IAt z0ZldBoCkdV?eaR5mcJh;1cVDWBq4L|U**__m(^~S#6<_x(J^3Hbh6B5Go`xVguq4& zLgvBdcrC9HEnSKe%#7JJe7=gr4X#p%H_Cz6Q46Mn!YP4QmdP1pQ!0aa7R^zfBr95Q zMz0wIC$G)IvPW}=nPQ7sG>Y<0hicL)S*`MpMCaPyP0h^@PrULArqF5QBW(Vey1Sn2 z%@7Hb#M9j7Dr6m%#a{vnV}E>dIv0pPWtY%x=LL1^tbJtv{Y+7y8ueGNl)D_>9ztw{ z#Iz@^;4kfL+ay;G?0szvlq_S}#6kJf`6F=1xX#jTPO@Z}WKYjR)!w@o@wHGX<1x#k(M9A0PS8LY5{|1PU8C zguax)lc>O?oI@;nH>)?b=1aC|-T1d#|0QdQlboH4e}Bh8_)B<=zot#FAVyu)IWr|N4k(He2!1kS#Dp3_Vkpw3749hG=7Sr6p)$!eCr zgvqP^r@;X9(j$1y+EX8N*r`60&})7J(o^TstS2sF;09+ZnLYwG`YXRBwVYddM6sU# zY05yYs>kiP|hWsH=<7+v;4iI`cU0V$H3Nqax5cL$n+!Y6#O^gy9(nvZZ z;an1scfscl%X!4#TJ)HYhG~e~Hv6b8w3q76?hFmFT)&X+b6mOlqSkz^T=eKkv$8Csf>F?|OE6S+Pdool2J4g>f zE1kYxYr*I%!MO3LzokOscX11zqmW+b0J4u|zcl5^*+>g%32D%?$#? zRg2uX^^fcGzdB(OHv6w6sj9&(NZ`bGfsi9CSCrk^M2A@aqI|rWuipbhp^BM#C7n5b z!dHo-gTDP@sT|sXku~P-CM9*gTt2F~4*|SN&iRj;>nHDd01gWpRh>t=al|CzNPOyV z_z`yf`G@#nx0Kq|KU;0b%ar=1Dt5vK$dq?2q`v;A^Y0vJqxz76CwlCWmQ();aGz<` z9cLQy(=r$VxDAV`Wq$&JYXR7|Qv^(VGTyQRjQZ%bv(=AY6#IGMsvA1gh$WAo8YBY) zmO9|n?7)wGa@UvQiEa#5Ksb|Fmj_qpm@Z*#PptOT=qw9D)s{22;@-V`j& zG*<|3JxwaCxVq29fpl*X*r{%Kv4>AKsfr#Jl5^fp_D20B{2!^2@42K-nVMUKsax35 z2vTC7RO`I|?l8)BebH#y(8xEym2>i#$3f$@b<1nC?_%;e(x*cD$g#o~&5bXSTNME; zrkB2~g2nBQDcdTT`Lh&++nLMqO>DWh)A`Q6jZ_f%Ojy&6b2Yx%dOW;Wl0M=GR2rAz zIxRSd3^~_jPw87__KK9 z7rx?TS^yp{IbMCz^sZ>ehrV5X5*8b~wqR7cj&JO&ePj+iZyqUbDM=&hKTa56CM)m5 z+9ERq9q@kfC^N6gmUZvdNVXo||It znv->O*nlVSSlVzFRlhjTRksQ(gTSBa4?Iip-@`M=YW+Icn}wO~n?q z;oCjyLjL7dopB;roWuwF?h0%ykTGwIqi z(6Jf5f8~vKMB%bPNE-%MAxXQB;vBW3J{+#8VKhip76@^2lcW!JUfH;P+o|Xuj_-qR zm_WG--LuHw(PFPm+zvlsaq6RS(v&5-kiax1-Ync8oX#X|<=?>1+)IzDm$zP8`JgC% z^(kN3$x|63hN6q!6E^a#CCk`3gO*TEyV2gP5`F_2_zfc?!Jk-_Q#vc$ZwB>%StJ?P zjO$3F@dfcrFgDY?fJ6wu5{M#`N&@?P^R8xzm+$=}&fw;@O^{K??)ZdYz#kjDeyVng zaS2Z^gAIkf< zT&3tJ;!WMFjKcsV0p1TD@KU>mU#)AWw#FVx)gkNe$(?B zF*exYDb8_qiyKL&?v`goi7P_> zv$dt^U1ZNQD8RMZE;Nt+FaJ~!#5}@X*;)Z6d1+6C;izfuD1OzXx)ZusGabgzfRfpq ztZ`>5!#!dqsE39*DvuI-)knLiEKBxsH1FOA;S4z)3@gq_hK!r;Bw^+N8`CA@oo3R- z^sF4j-m^dDow|Gj@+|%F25&?PvqA`GFLr%%s6Iy^2;=dj&F&AU0$bvSkJe znoJAI{iRp-><3}jEIB|Q8!#(W_?=+R7AE!LU2U*S!kU zb6Gx^u|>~L`uO+fzhrmD%4uW+d1>x`1mDZjBx;cx72g`Zn38rF5!zb}ZD7RIJ%Xsg zW*IdvzKVI9a0!COErmz6Bw@S@0&>Vjz%znBDF*Ovw4tZ+mACRd6IuZ(hWItvV|J!y7Q$M##YRj;1vnD8H~=zRl3XK!3K{_;jHZDG9=Du z_Gf#hd&-Zf`QXdz_12($Vk9%zzzNxgEmR{7wWJ%(T4%6}nVm zZg85$02>sr{ENAN41gP9Ho1?r;ulv4W{)bRnRK2@=#d-%1LqbMab1`=vhk3umBR#* zC!C)jzu^bz2Uni6WE2)?195k}2z4v$|A>_DnZfqT<`HD|@RkNZX9JB{a>$cZwni6D zfR=rd3Q8SWrw$+WgvuClE(N!~owGQ3S#f0En+kRJb$YI8KjOrf1WMbDXoExH`@-<{ z#8YlFyX_weU^oTHob-Z-6FNe`CZz@0XXMlCg|S!QxyF5~WdY z!;TXF$NvGJbSTbaI#`=o`EXDbL!2X|{h6{0M-1*h)KuJjq95C1t7kNLjg;Q;bHyi} z&1`cWGow0)@i=;Y3Q{y zZu@KjE_2H1q++hqA3Avu(Q`LPA^GX!&;jVVTB1e9wIwsFXObiHhe%Nk%O%RDmPKD0 z2-Qxn#G%a|J2EY2$}NbF6J0#84(Z@dgot9iSFN^8T~tW&{ds-Q71`+j3c?G_M!C^U z@XPRhByQ+-D>g8ye1))+iNHm1aNL?IU`pKR1AFP z%K{C+@zlvGMC#SzT)0W_?f)}+^nTGBV6=7ssE&jFBE!zE9xbM30l>po`leA7e-U8i zJN3$?Y*V|g@V^E)%o!@hN5ZFX3{%TI-)SUUInL`$(VGI~tt#BY52U-LHYqRZ4Z682 zP!izD+fTwr-^&kge(EdE?9gy+6aafXrye~C60aVaUT$N$`-O20Wqv3*MEL(ECTjEt zoA3q+)zN+4EafbC`II8JzUnh3lzHMT4(DlxgDh50U&4z$Oc?=Trq962`yqms4;glH z+SgMmLE}1!8w$IEFmtuNQR;4OC~&YNqH4F1j!JoHK8GJXf%E_$uQN$92m3WK+|_-) zs)7th1C&uCM|~DY<$E&QVcu`U&Lhq$oSZ8|HQKZdk%qjd|g2$y@)HK2OYLFU$4<~+KhHL~5;jqR&q$qz(doq!$i1Qc)eoXpg=d)hRNq_l;E9ftE2|{HP z9$l+4|DeyP;vLgUWiSOs?76MJ;WgkGoh>YMV^83}49>)xuV=V!k3kbYJD=0itMQm< zJW$_KjrRZrkj?OOy|H83);)`$+Z4esP+&<%Q-0t>TXQYPxrF)OXr~ZeJS*45-aLKU zo9LZ*mIzk;3?i!&Lc=?^2NObxHrj~?7c3Ow63t={d#_5N{RY~7fO_8C zTBS2j`z?-OEi4#~z-F(<-%lkshl4*#!mqSGf|tYy5ipl?&!(hT{{U@9HLgnZ@&ci< z2Lg));eu(sdDoYuk#~pC@0g9gssX(>DGsZA3_vFryJScOUc+}vW-*mC5xQBzt5kyS zCijlglOK0R){Aow)hr+Dbsx=+pMJg|BdLV3PI+oIim9cJl+VSw~!!zHqixjKV4XEoudXKghO*nlL#+t z{`XFSRA$Hw1TO1BJujUneL_LR6 zkZTY`I>nmG$GUo{Gm6o&cLJopte?823Tkmst`%BV6F6uy7`=18%0Dse$zO zPPR%P3|x<9oFJ|Dwi}iF0Uyb*+0H363nyb*B;;qPzzjejE3f34&mnp+E?)T~;Qcr|3=vzYb0)I4wK9=Wke3O^}F_ZiV16+(PcLZkryKLEfD zJt8YKr!Z@-+e~?OlODOjcM<&?kc>pHJH17Qqy%-*B$92)T!WS+zSd=>(Mst*&%KEs z{k4G42g)FRaqvwdLnaB^E*Rs5^r7e0HCW89}9tXH3 zG6Go0H^8)1e5r#J>Nw&iA}FfD`AO%OS;->p#wh^k*DJZW3vQdKrFGmR9zeG2Tx1SKbUDd$UH z!HnT12>eUI1$#GAT6N|8gR05$NL|hYO#a;U9P<6^0elm_(Z5QuD+zhoSf0ha_Q|9p zXmL!6zFG8o*`m4v*n~5A3%FG3 zRhZL2jgX4<8kC~S@QafOgKAZ-l?XqK0T2~Afh1#Ao15v=bC%2<<%ovl!VQWf3JE+> zm2tZl6QvAUNSo&0dELvu60xtIm@o2DoXV02shBws^oALf+8jm>?UkcBQUa%TQ8HUlZi=iyIs1(AsYAN zM3zn2DjG~VPcceTV#&l$bu4!YL$A#ESRQV~^oAu}Mr-naf|Sj^^^vp^tK?2(=tRK} z(G^U*n@NG-GA+K}A%Sf~-J1?H;c(w8`MZ6ZtSlG0?5_q~DGMAU$L*=&hAlsIdz}q3 z%NPFI&@o?1?$#B{V`gRE6;wtugjeFY;Af#{vHB}mnThyoap&PKpF1}*E|ZGF;)`#6 zi7nlCZ~InLrHDF;8Zss3T$(psH-K6{P9{iG;108=v{h^k_PAR^#5_{kWdbLS%isV0 zZ7z{&RLngeo)L?hdVi!tJDF2L(5w@kLGUL+icb$SHmN^8fV` zFyW>yi+uoqCV#c`k8vT)DUtq}j_j)Q@R&h>2lqUNHpDR2ceOx1_c1S4+apmPAgzO z@v${DS#&DP!W3xHY8q!L^#U~ac7EDKFbbX5)sboLGz?47n9t=9e^_e)Rc1;_k7r0 zt{ALOw55IkTAx7=^aa$wht0IE$K` z_4eR}NzV3^YV{}ML8;39DrjVz0(h3Z+Wm%3==Yk0ExsRs>PWSn3Hw;6{mo&af^ntN z|DV0zMMBWLGY7}(7~^Xv)2V(m0Vmm9&KUygRKFUlxYyh$YV)?=C_y3^1=qU2-m<5_ z;ar3xJjo^zh->aAXF&2=-b8~`mz1K07wQ{0gLvK%uf?F}V0(8ZJ1LQT4C7ivyjS>Q zDU_LcvkawlZ^4o*D}`os!!X%~x45q%BOpZix&#>+5U-X)*HM60g_~f?m!3j?1h$dv zrQKa)*U-c8nEBX}UgyJiC`2L6msRCM^>_zU?bKHi_S?wuNoO@S9@qR1XnFV@^4kg7 zW1ba=ts_>(vU&g3>>)ItuEeumkE^|`*sY)ayp|J7$p~O;oqazj2NcDbpx`tS^JgQr z0+P{t?2!;l`IR@*^gDF6pR@=W0t zRyW+h`C)(PnqKQBqF}fMFE47N8rl?uUrB5<*aeDV$e{QAe!_PhYv(LNy(@<&2+)z>Jt+*BGD7SqWn%e(r?lP>9k%F>yMu$y1deP85;F!B zbANecZy!yf9l(A}{Fx+DaT`^1KYB>2({T2(W_8Ns3M`vwQ!s9%zUo+-$`O8Rop(aZ=%mOsYAd;vnLzHP}9k?{Wir z+!A7JJTX~l(gW4!3{xs2New#S)ww>8T;-)B>)7|s0Gx{{$I*@7gQTWA00zue_u(qB z7X$~f@r#PkV%7=<)_Yk6Zv`r0l{T6xG{%_odPa$!#Cx^4z-!gwt8Q!LIKniRV|eD+ zggxWKBek=4cSzjBPG>F*#xdNyK+Fq2%{6g|usa9A#leY#)r0MLTZ|1L6jr__Gol$f z;-9T)g$K2#3!zJSL82jsxil|KHVxy?C6a%5p70Br@8fW1~e^5Ra0orNE~qC3^*8s&-GG2Q+l zPC^1|z)k6D1Z9T<0s%8B2Zj%N6bVwt(bVXTkrmbPttci(-cI&`T%!$4fwEj!VRNx# z1rvawZ%)*p%E+n`U5a?zV<*Pgo12ay#Ge3XG>r!s3M{_PQnAuV>A}`n@G>^fJx^na zE8&;?`g$cmT}M_r^Y*^ocUf0b(^{4ws^MQ*PhqDc8Mi{wl=H*ozVSt=RS7`37&fX!$2g{Eh_O=MyFLYJZvKPP4@y&-pGHQa4&2`wJ2)P0Ol|jl?UQ7^ zI8&}3ehLJ^rLE34RV~&Xi*%PB;etk2J&D|6dpA;68(2Rzx>{6VP@ha=Bey@$#%#$- zj8YT{T5*=`J}&Kblfr$S7kBqvgiGAWOG37`0bVQrKR!8*)}!tIN+$VGzS{9#Z&knF zU{j>hkf7Z&kLgrH_#c_|hJE!Nr>}>kTn|(wJ5`=Y2vmUGyL@p(M8{pj)crJ9+TI5P z@7+zA(XUeB1#@Z;qb^wUahGTd0x-E+4TxRLHo#q#+pC?-!hGUiur=xEi~!f9IqxXA{~0*ZAl66QHyDqeH% z-m0}<)AX||B~*L3wkDSo&-DWVZ4>9IJ^KIAGm>mGZaVVgu zm$6(H%dwctTD_B*v^kP?xo&NF0WoONDK3r8{w#`h#Qgtx@_*N03s_8E4Kje0rd=OV zQ;WLOCO*91u^eYr6&@0%XJ9h?ajI!a*nu)P!3o7?@Y4Nl89cv<(S+fy$e4_~5l_~c zw=g7yVJDTJE2A4kuc(KN)quUO5}oQ8hb}BFCB9+$4Ki#*=!wu+9ihHIUW{cr`eY9v z%*t%Dz77EqFMA{zH7A|4`YRvd>=?;x0jMy#qV+Y^CAwl9A|uOC{U*a>uW?mMOJv~Q z_e&3DPD?#aV$qx#9xC!31*g;tczy0y5I2tBa7u}tl)|1X@F_L-=m2d?c*KUK8Myhu zmw8+LxraBRF&D|WKBp`-r(L!d!1a>farCk|o`4bqIXi>Q0G^LL^GBBPDb$V5VEs7k z2wYVp?<&C&{G7U;g*YySE%d9~9PmFfMXAlqShm+E z8Lic*?*~e^RkRxfN>fV?&dp&@@HPwYImu~pyGrTCU;1W7N}L&n=T^;H+LRfc-D+dP zy#e9#ohS4{PvEFVxZ?mC*6dMM^aMB}`UkMr~aol>JJ!Cer{kC#3(Gc^{p7(!tb2eE9$NN)CR(&4>*L zF&(mnwm!?J8Z*Nn-_DOGzOOYn-SvA%hKtBNeP=8SZP0d#G04EktgfVqAt6@q+$R=F zP=0hXbG*B`#@h0%kKB)? zO!?=Z+u;W@nH5IO{|)^_Nf0!qxkx`T2uHyKikk&*HfST6$Pw|PaKV+?K|ziQ?icz_ z7UQ}#VAO=S5jG6LJIF7nCU;+vmoIl4o(rsnyRjQG5Fc(Cb#l7U5B8TcRJ9q8Q;B<|gvg=Y3|D0370Z}?!u`{(v+wUoSEaeporuW~%;R#uk%>C4B=kF-Y zuEzVFAnrDpt?oa2&>3C(DUj?yHv?=^e~UqVncL%M*=Er^UIN z)$dew*#Q4AKZW=kMz$K@lzU7Q)|&Y6Onq=cb@X#4#5E4=>NC*nFd?}nW$9%RH$V64 zvh?0Q>bGx|Agg_MRVJiwsy9NU*W0p$ETl8(YEPe~)?u^t!i-fXyn(q^^Ko8%E zX};N$HZk1A0bTMYZuh5+B0oERdK@xX_tbj>9=-=-g# zz|Yl(bRG?XbUe9ggkSyB?}O2~`WqISLiLDf$$r^kdG&oa?^(W7?`6&&xi_k8Gg}O+ zU`%)Q8W$7dC}~3rsDlI8jj}K0%$u7fBTbwl$WJe{8!efTlMXvA@2@w(KUS!fbKHLD z-=%3a1E@82B$uCWwmiG*d=Ws8GyD*}3Gf2dTwC(cHO)r=l}rKLdAdVs_c>!>`#9=w~y^SBN!2)HE>4 zwtq{bb5U@Ya&$72dfrW?LAKc2V2sJLrKy6#4#W8BkK;!x!087O!&8BqN1wqs@0d}Z zmFsolWeSvG*Yedvf5#`!n6>fVffp@zL4SgjB5{f%OM}I8%MGx2ApA6O;8&vkkyga- zuJi;nX`l8Hj_)Vhid;IvkJ=E8H*@lUtwRRJ8v}Sq)IQy`^WW zr^>7`jL(7^$lm8HE!?cX7=*4P&-CVoPh_p)S0^tO*^Bme5(0UL&5Ov08a`BHROh$Z z-}q}tF$k#f#|3_3i)VCu66gLJbwoM}$Uf9&JT2Fp-s=H4pppCM@j<%NFU`WiZ}RQ4K8;%0X}PD$V7mB$*1(XLjVSHsPJFt}7CkMbRK3LJXTC zlqi2;(7r*fnIZ$F^`-||gg<36ZL3tSKZeO1))uM)r`&+y{D*{h5?~A>VjkhV@8%G@ zN#(vtGHq_FW(@X3gFfKk_se!5Y3=fF-vxuj`2ZN!0P60<VGk^AN>hnXP=XI)XW+{!^#EB2$(!?zh=7A6y&Lxke9a?-?o4 zW%1d_uO%8nG;CsUJn36Y1;+$yQOJ3L%eX)dp|*Pfb?{+g`gG#(m9A%f3r|`J2b3~) z((QyesGf=#`^5dibXLoPI)GeqKw{zan)T6wiPAF9<-d%=a^v>xTEx8z9EE;V?$hFtI(gQK- zOjefF@Ub zoN{h0zwP!DXJ)M5(5^yIM|r~%n*5%S_g~q2v{Y4~?m7%M(+~ghUv`$&ic^X@5Db8bpz3`C?vTO8HEu5?u0%7fQ^*F*X>s&v1PqG;t2m@hd>m8 zLF*#P(o#pRu<`WDC8yp1TRJm8PWH=lXg#&~JNcf$ucamhbc`QtEMf+wC~>bUhU}Gp zG(QH}Vx#{%vJHmo<^C{$@>YJyP!Jk0$2kk~)wK3M-fVMtR@A7MtJs|kuH z9D=APPd-R6lZHPAp^MEbvfW;Xo5{i$u26*E=+Xy8&A*drfwJ@8o2CWtd;>0#N@!3O zh^@H_{;ua31^h-=G@#mZziiB72<=VSsuLvaBxLSp@$jG~%B`;2IUOIW5-a(X*P$YU(Xb{<+W}3nU%&Y&fH6(GC;Z zWd67^_@f=d#6Fc~I_s_9BDj?Llp#Bf26vY;jNY!>8HrC#n@>i0XPz)p4ym?T66k2n zXty?i&u6Y~MtPeNPXppJW~KqN)pa@^i|8cS3(7goKiA15PPsdbYoNlqM8YP06wz=^6Q_rtybfM{M>)y{KjU%8=0Pmu~K?b=e-*mUbDFsPkq_}4jLM~22^ zx|;t8e^btctkTm@3W|Nc9cO%B0Cv?d9RX{6t6-@{Q`YI;G{*(z@M1@M{I1tb{>yqv z#MzpT^~d-|iHt;lCyAPN4l{#nT0wN0@$?b-RWcA`8fOgUVzb-c*jd4r-Ro}G*(N+R z-kV|gUmI2_n#(j1MH(cQyFlAmLy_A(`Qes$@B~2DUUFavFa@tE+sjr9MfIq*MP4 z9W_o^u2+a$trO&ewmJ|b@{^7VXp?C|h}2kf`fU}}6Nz^lnhnjqHaSH^KClxUULkbF zBA$S5<`-hCtN8}sJNFQ>&KSfyL~FaAe9`oH_1-b_H~?J3>(Q!%wHNQ?{mc6;a1F?U z2%mB@7o1h$q@aTJyK~)IBxRSG)74sX#ywGya#;4|I2+?p-fs!>cn=Q7?=2ADtW6s+ zaICG{eYR1hwk={@3irHxFWKxW#^m8EH#Nn0lDTV&!{~~j9%@#+F4UVzLo|gMR`urW zlvRq*A;JbKCxiB_QJQ%}KJkvbQ%} zie(4$h1c)Ow&Qc-cVm2uVVK>>Mt)4n)8C#QRD$#Jpg2c zC-Hcj3O^^z4}X@XI5om*EK-8I?@Mw(VZt=q=G-$7x)~h ztttW>%5iY5oS4COhaGP4wn7Oj&BRD_8|!^$Y`Xa)kShB`kB{3siB5tgOM`VSK&)d< z(aH}XD`i-{)y5d8#L-kr?8j_kB`JuOSH`-77!A{MwZoM;l7vjr%agSS=crT=VJPQT z>I!~^920mPklYDtg9g)UkBO6kx5ScXBPVZ2t|xc9K4acS9J!E7j*3>}Y|Y`(ai;5f z^h#dB<`|VS&I-BK@w(biyk@MB_SJ!+B?(m{3fS{i7}+uSWiq%x{P;e<7s%QeO)1PU zPvr{PpCnt8b%6iQ=dw>gpHcjvz0q+i*76W1dxmg<3@a09I+uxEv7y zu2(^eh;8{p)#lM;^zp09WqU*TIFQ_&JWyk@Qq_;d-9?TX|&MEPjMnw=^*#e!XYB$y7`CNdJa5us2J-Sina#1_IbC}SND_P%%x zd?dt5@tK?ze_*T^<*3AA@4Nlil~Vks1HozE&B&G(x&)7#W%c-GzIVS174N11wRTm5sK>wGW+R<1; zs_`tn>r`M}+F+M-E6^LgnP>RT9gy_SrGEdd(LzUt4MmykB+>P~tY1FJDtjy%hL$v= zF#&zF5EZUzq`@-{MmLgAGXC+`l&e5^Zt5aIJ+y% zB36`AMAbz$ty1@}UibIjX90lvVCVkapIz`mq=o!3?;N?JtHu9AGt7w*Y-mk61hE|Y z%DC!0Km{<(?dpNdL>YLoQ_PDvMk<;S7pP4tA$bw0_*UhtMKk1u4lpb)iwIpLE-GJx zV|c;d78@?EW{ixFOxNE4SVwvBaE>?a=mQCbm*dB-eld_q^{eK0K42dAY8=|$cwphH zaU_<;Bi==5ag_LtBPq9O35xfb8VNJh|lVwtr9coL(!QH^9TheR>W>E;dy}4 zIjUOiHG4%q{yce2DQX-3=35^BBm7SDSMcj}Pi^o--+K3jiH+S;ab;iXhDk)=xTX--hhvvBq-7)ceUdud zZ@?h@DYy8wJoV`I<`V&s`Sj9}i`#w`tyf4s++nV1G%7Af2IOnG5Ov~}x6)@skvE-h zj91q%zM6O@h&lJOy*4?c#osO9KP(ro_P|sa{viq7FMls5u3ZU~6BmPZXa7S+$l!KV z(q2qd03q$3j(dRhhyP!YACjhACUBa(9gJyDL2(;qpY9 z3EAYxH`s0fC(pO%l{FS+l`KYl(L4mZ5;Jn5C|k{ZG~Ju@8kTz@yfm})V3n;MoDBk%M!!m@unHM|4muL+I?a_9;pwn`o??J_(^G+ zgqamtkpy|UR8D$l-Dp-Uf6Dgugc<-9Am`=K`Dw(zDhFfZi}&AWCD_NER97 zD(9~j`X(&>JV{rvR7V*>nsP)!#29tY=gGVj_~W3IrSr{nK)bJwy$eOYIxtr{Gy%rm z&-&j`G}Rg$38FxBk&WI%uR+c&E+j{wDX=U}j|91rh=D&+>1YkHX>J*q8Aq_qt~Qf4F)6AqlAN51 z2r2JWYg)S>p|gol=l>A}|58P(1tnzWyoaPLfedY1`rha6+vYc&6NAij%t+Ye`Bam@rb%m7q z1>^kWGtm~iXdA8=V0?kvuNs2VA$hrCXLud^4+tgW=79mD?x0h*zyBum;3O@7wS`w( zU#hvQ^Duy>pFi0|>)cYd9d%JxOcPiD09aN8q&rRS|EUIUFSAOF6wJ0mLwHs=WOn0; zJ(edxweF~5C8PU+jto5ZeZHK(R7$fbvKQWcRASa5R|pIL z#`i{U_4zg7^D+NHnEdw9d_w`j&jGSoFM3E*x!y(1)||PgTB9>E%rj>q*aRRmB7}}) zi>4hYm}{8o?&?xMBe{8w938!Q;s{AND%$lCdg;1cWDE%it-a6Gl$<`#%h?{AAX(@7 z)3n8Za+umJau>H=4P`*^#F^{u++&<2>u2+obo7oSGI|MJ3zFv3ux@lBM8M=GT8TR zHc+)5bV-EoSM44tOBogm@o!w-9^OmJ6axF6N`RaJX|UT#vnqx_eK;&gUnS11CwaJx z&w5+9xo=B}FTw*aFX> zv2)TKA{ypuDO1z}!P}fw%SqQAn?J8J<6);GBCjQB+6bCmm<>QH7OgF%?)KUG2ynrz zl)6b-Y9vJCXH^er=|DwnMKcOLNzteRV{xmQeb;1|9aPW!{+DPB9jT6NZ;g1S20}=F9PW z;iIm~;^UUm7V}RebLdvVhK2mAcKZrC&M-8N7=Kdn_D3lfMY_r7ab8&GZOImjZ;rPM-mqc>=5&c^7D&;hYCpM$@^m87TFAZyc5$z0Se6^ z=CT(qjdvi;SjdW`A8KunEnB{3?_D)Hz1jwIJkK=8>Eljarxl1T8OzDQOSMeoHcbYu-UxeL_Akt`d_JAw96&-`Kx19={bc7 z_D|5JsVjv^{}+Zm?04Sxboui!MseV+@__W8ml^YqiFZp#9|@m*UTo1gciBJW_W>+60CyC6KRB&WbT{=n%p zVx~vJGw|-B8KJqQdj!ZM*V~N0qYP_LH3`6PebYu`Bj|~4`=CRxUzl$t4q|YGK^u`% znU4B+1M#d=&5!{w(y#-Xs)t9QUol@v+y#+(O2*@h2a%}H`FIMh+Rf;%8Uzj5!<^k% z2H;>U93JFnT^5#cK8xKMLjIdeY4w!Z#5Qd~an0VQC!029P{IHm! zgE~ekhxSY#MI8J|Jnw?eePC8_gnW2wFx4FJy}64pyS?!ZR6Rd%(@{;2VT|;n@bt>T zozsHGoP^!yObbAHsG(s0ftG@g625pi+9dte=@P`i|K4s%wt|f`vdopxDJhl-8_$}B zjuB*e!y9508aM1G=T7V?C^1L8dG?l4B zu9-%_QtAU&zq7&8rdxUjAzRDi)_pXt7&Np->y40E`#cS9nqg9lTQ?eJQ`g%Zex=(YT4XJw~DmxLyqg@B*tkrHN8Bl#$- zmXMffImP*AD=mI0N}|HQKQ*d+#+HHo5UAh-~FkW~a76wK&^?y%t7W;?N%F z<0#Eo0&p~$N(rsj__t}v1>eV%?Fn@BN)C}3J@h8$$!89AM$920fZm$Y#9 z2Pn(6kk_+i0xnQiMol({&~XPtq4PfAVn~8|(8*6K^(4Rj&nf_Wp6;_M4FHQEXZ8G2P#M!t~aj^CX?J9!@)o8#}n(quP`-?N68p3&{@0dc3%f>PBr|+ z!ph3(rg>VDZ67_%1U9v;5L9D~C&R=37FpZ&QtQ&~N=dT$C4LOl$bmU1jd(9J#42)1 zAbU|2ejj^jkda=6*p=P^{iXbRc39=0Jsd^YRdw~BV23k!%b6#vtkmW z8A3w!a;k6pie>kOO-j1nDtu<)u$cD-+@Zlh@1*T05>^9O!Vl|A18(k}U|kz_pO(4L zgZk@L?DCw+prKw%S*M~YiBKS!kr+HSprdjtW|zqo6>fd2?63>BCsj2-F&Ee9%u!I z5sY7V<90e^u4nXb4R; z8|j=2;)pM!wC(Hu_pWw2nxT&}<9$&RcObsa@@k+J$X+7U9r&#=$v#C;Tu3t3zG+b7 zNz{athH$;_kssV!VK9MCuTo=BHc58u|ambY%RvfO;e*Hbb1^IGP7 z{6hVO621oN|69hJ3`R?+O%N~Loa#g;dXZn87~OiX><6tjKc3L;R)(5EdR$wjb0ccT z7fLWCvT&myUR}+K6V{~md}wvjydW2wISdyLjSaTk{}_*N;71=YD`3uWZ#y|3vki@M zu~g^TUiAtt+Svz~d4S;_IHsZPn6T-$`dU|h4V^1l2)S|9bmq$q!rZvtD{|(d_UK2>0OThz2Em?Lb6I8jFLfn4e2A;j3*L}Nb5|K0K>P4VD~?3xTD zwG{scZ+#%c&bbg1SuXLZ;##TS)g}!{Tn@%0TV2x1gHBlT{0ovdydxHGDX(uf` z{(KE*j)BaImW_iFr+z5!W=&JVX}{j92c`K1mznK7YkQf^P=Egb{5T#<5>pv$B{fNa zd|Z%1O#L=RlV6l+Pxl`8kF{=V791tnnx5M(c0E$hTo3)C(-J^O*?7)h>g&@R?yv9L z1C!kUGGs2=JTm$H5Jh)IuWqyI2fXX$$*rz%x5}u}!+^;qv znI5-F7^C3k$v+Sfyv8RyZQyI~d1vCbL&_}3Q!hctWlT`2uwRL|5hu!%=~{2{of6j( zv#6%s5u;}s47|N#p#&JhEWl(&Fo)PnuY3r_1$d_a-{JX#Zyy+Sn{8=|LU)9~da?m$$zhlYtBTf9OOKdD8}BuW3LCg4a4DuSyI7(ycd ziU@xa94vz8M#nL%6g;|_)8nY6{uUl+j2}}eEZa&J#Blvpi>rg~gFH;z>i{;~3T+0T zayH-0f32Y~8eoYJtCB-ckdH2^H|?W0&0(KWnX;L6snWsB4LK^x^Q|p*cGYvBN0Vvj z*+_Df6aDg26>zIL=@bS&soCd}f0a>nhNjMzeTl#*f-(8Sh&vjA-Kike--->3j2c2B z*ltj(Wk|09UI99+0E9h@bfh6$Tc)%psu+)vn&>ocqOxMw6 zG;6IUTgjeWEzpJeD0bk;S5fh4RQRw0OB-xNeCqD};{fH) z6Hw*IVlAywezq1{7eVusQI#u`XhF+$4j$QxD%}`Qm-?DDgU?ovB9J5o|0YNE98hS_;}g8BT%A&g?@4gf?L?cXajP3>C(2KG+y54CNoU$lS&v@6r3;h1in5W@!S#o3qR zJ4|{k9joi38ml|#*yFEm&tt*+>(~$tFK3Hn%x~C?-k>16ZwXC6$K7BuK@3Jx9eojx z0P1S)LL-3eVVm{dauw#%l$s1At73RT&4b>~eQelp{HKO(EGwQqP+di56L1&286O~7 z&g`GTqo({ph}3U(?Rw6TfFM$Rht+7I!^OIHLwrN`oZj$?;XC`fN^gq??YJMqIo7Mb z--S6&u8i0f+-m=$SKV7FxqC74o_{GC*{%Y85dk!ImvF#=@!lb=IfE0jB8_KBTYnH!~IEA1UG@Gvn9+_NgYXEmKItnk~V~B)Z&(IIQc+ z|H=p1t|SRzE%aF_vZQx0&fk{%LlD$&VPV53?MZhI+)8DHb$uoT<+r|y2ilF+Db$Y2Gnlt1_Uey=TbYMMfls!pouOIUO zwj5wdGo{3*fyc^^Qd^W-o2s-Vjmb3t z&a3XcBR!M6G0S77XhVv>n26R0+VJ_n zMHqN)S_f0{Ma9@H@EWa5KSF;eam@Z@#JyGMeN=M;>KO;DmnIMXv@e#oQ0qe8XT#ka z;l+wE4k(5L2|a>9yp-J%v{f)^U|FI-k!~(mx!=Y!d*_vUbRKdXL5x6gXe(dDu8NZ( zl?gmzNiO=3TOT90e~T~jyx^)6nNDt4R}@T^8OkIKGn}vx}+T#Wa~=sN;Fe_#p{U%hf|XjV11`Hb;;zPe+`&WdCLI% z!!3e)Nip!;S#@g8hB1qiLEeH`e>Bb>8=-R8b(1!+3@U1;-m*QPMSKqcVh%D1cfDOH zFq{iNr0^^_BnZtLx^&bROBBK)X1|>cq{w>4R>opB2{5O1+6IeJ!sYr1zZa`ysrsW z^w0>qEsW_jYd=+~X#dZ1H)4O<&$_3yatH_&WFEVc`BpRUr3ENdz8$)`YHtP;SGLg= z> z(>AD5)P_DF-|mI|x5 zRh(2-tZnE(+G|d;u#8ySpn7A{uG72C6{%_O_IX{MG*_F5ABNI!QULuGW2D*#r8QCXx-7Mq74 zPSeL*y_Ty>Cu^wOqBCA+5Wyy)@UW`2ZAbVDmGdc4I}Adn7v}9YPt+NWIh`w;b4?N_M?#4eLlsu7WffIL4 zI9aVLo8@sLZ*rN}Dgz5g$(X5WT`yv&YzU+=V+pwtYIK37>{YMT2h}L{r;`eJ2L$zu^(OI({2>W7qctdGz&G z-8b=4#>laG8Y0j#cWckk*B#1&@BK9|2)(ZmkRa+SobxhQ(ycFw$)og&OmL+u3%Ssa zRDlZT0b|_f`CMzDy8_$Mt@H`To+$tQ&f}Cuh?P;>9)oFu*{i#@Hiub;0V!Osn_Fq z33IH+-TZx)d{54%(*bxJgs|UOsnRlmRG!;~p_<%uJ#~i4pVZs#tB8Y%!i$At>%A52 z1l*K{{XKC}*I^nHnIyefCZVRuzfQ&+_ih(Ql8jQaWr&qqR;E-d7O-zvgL1>ayGxAF ze#>zGpcsPXS`yNG+#98XG-(o`~2=T3D zU9j9sTs|FvQpVI0soUP#nHPbw&tq?ijv}B}o z+CS%hqG)o|Y9s7rs?vfJS%J1+K1iD4O>*y0Gx+6gH3EYyXi(XW>0fMai&Xz)DHS>D z&0KJBtnF^;(%R^K5X9FX<#7YHxB*Fw>%MK!{J2}j@1MG-t@2oYA2F2EF{QcqJt-?) zsIwAju~6uEphJL&E>^u8d_HsuV~FtjYXZwY-v)|zeWEcR=bY#uH0x4t67BXs#(-C1m9vJt!6r5%0$f_i5lwizAZC6JXTzMofp>0vDL9A) z4Z)4;FMG7j{w?O_J9^ZcT7<)gn1XLa#%Ou?4_M&XM1ZovWXpD+JUw*Qs%d|{9)6n$ zC;WErvkFgb5)R8VI;$X^3;{rzZe1G!Dl-FpJ?TMNHm6*VoU)hSC5W-u~%Kn)NCdLhPm(@1>;JPg&X_Q zk3JxMh|0{*!AbAdMEfp8Rs4gB6gO!6j?(D7eEiSKH^P}6oHxU2=s1%S9;jN6SWf(4 zrG_?=fvu*$(h-k4(pyo6w%4(!GddtehHVoL4IBL`^M&*_c!$Lpi`K96Xj8KP)COT& zDb*~yVlcGJ(^{}H)u~N7upkiMWdkyRXi{4la+Ox8^4h^6WGv4f;C|!5sf*xO%8Ldx zz#pIF{rS)zUmer_yj-S<>%}GFAmj8OkoK(5A5VQCn26?5XYS#`he`-!dLvhqyDil6 zlN36=<5(R#@$+(K(WV1C3!yWN3tCP_aPvc=mDe{ADqKgn8A{Qn5z%vIWC$h$9h?)g zE%koA+j&<<#Fb|6f{L^B5!c`c;a2E7#fpx0!gLL)KiDN&4?+QAy#@0Y&WV#oGRwDErt&O(A$s2Ad zA5Iz0=8B;5*pqXIVP*|y0Yh;`Te1lfTq5lzvX9Sv-t9Ft9gQ}kX#|6M>F}OkQkJiR zzZJ*$(T(Hufuq+Y8jNGn7_><^vM{}F_)dqcB{uo!)?&A9s(9|iavMnx=uQwEi zVJlY7gJ=$6P$GO<6?FU80VB~?Ba-7Pnz}j=Ln!@g+R4LUZ_ccn>pI*L(pC8zZXW#P zOgH(;DfjWIeDOs(IJ;hANzw`+n#hdx8f7~B#8W{_OUhhYyeZq4xMv`1Mw@#HQT5;z zyV5^i?Nm~M^Xe22u8N;2KCtx>@!JcbJrDlQy$p8N8bqb$kSv4yL8#;@dc))q;f*e{ zd5O!>`vwTCBy!6cy_!Fhck1*)Ac2T)i{TGI4cz8=gmqa4f0J+0RF7s7cFHC3@1S6b z|H)L2g9H${VQ&SsNndjv5E|o?gSZ)0i%n(Cr-J>G@Lf)!vMZ_xoOw zJt=#lpkQk0Nji5vO<(z%pbnzBSpV=MGHK_pi}dhodGEQ{ys;Jg3LEW609H#zhzakf`^)lDu%50(o$S8ig!g~Q> z`*hS7#BTI+KU2fi6=b;pv6f7+B`q$IOl{b!IHdTbA(D;c771P`XzI$|{<*0*rMo6r z%PiB0T1u&Dw+#>A{M&AgMjLYkDDI=wnR3dKH8zWjr2J@m zVN2A%+|xB_;obK-aDKM4&-?;1%>&}x>IAS7dWuf8qfQ<4CQNTto)yG|ySzrJ6I~Kt zX_sTO3g{Tfo$qf`GTA`3Z4I?CYX%z#+0wQ-f$0{C7xnSvrhE(C2%z;X@{1Tu0B+ge z?P^npl;Ggai!`|rV+CN?M>R!()Y_69%nPZ{Llu}nw%g&Rb?F6&24-M1?Ce)ZbhDs?TB#yJbe(Me?T7ZjW z;#|EQKb&{01be`frEls|vRLsn$W|Uymgb&0*Jy*DY|O)O>fc4(k6F#beF!@_OO~4& zTzG?O=o&m+c_uj5*^PYEL{-r z;8|uUu`}TFZObHi(OS+QWUW_65^(29$SI@{N;KiPoB8SE#EIc2JbBN}kQ@irq05jS zL8{Tv*QV3IpK-{NS#GclhblEzDXZ5>HeAycS>z)=B)l`KSuC4B0Tk+O`9{$+;g6i$ zZd8!2E3Zp`h@@R4ioCEp2sv5@ztJW7w~V(b68Ojofg~AQRstjZlrx z7kELMgr@7y;GL3;pHth2+ze-^Ulw)6HIxs|VT{=omKhd4ON5Fl!{gM4vO~nn50hU^p0ir(nlm1k>2xv!WC?tJl|V{38p; zISP|9AY1+yN+Jvg`j%RjZgD!HAkPO7kF6t*u5P#T=NY4ew$3 zjFZkv{tZsN@vpz?BfV$8`nFr6+B9z_=0`n!4E6i-VOBm+|NN4{@|d_ zz}=C#;tFL&FbNihthOe26j!F8n7P>YkWnoOTA4#UuM9cT2>;Nzg6ZChP^*AxP+yps zU{pCh#rw`<6AX#x-mv4U!=Fe`xP62h3COKcQ92!7ON^&B-Q;mxGHLZuN48n&b(SjZ4wb9OO9y;NX;Q|Pw&)Edg41%ae9jR$G7N8Ee$Btb z;Y3Gm8>>oVu8>Rgw*;iiGOGMl28?3Vwl0O6EnS7z*Te7e8JFrBWUxUBqs^#KiLPwN zwNF|#=#GF8WlLik>QP8>H5TcdJpJj6Rxb<8Pc#qf-VBQ&Y`cIsaA7kb#NXZMlcRWD zcn(H}e8XE_zagXL9IioyoiF4E<5$N3RjOZxm&I;S{l{m3-v_X1{0$t~gin1p^7U@s zB4cJT8pC!|ror;c(lLDF>FrqweEtg{MiH!@&bVh^!|~QJe?mN!(a5L5il06L4P=$g zmE{kHMKQ?K95@*yvG_#`-FDxRA<6}@V z_j(wUQGc$udC!j*!Q55wQi7cb?D995AZfE-pZ#zaEwstL1x zNnY_vs1S$JL0MX)W{(GT3XeD%;QxS-Eswcl7L0c6n5AW`1`7?i>L5 zITVy~Cx^6ilrKI3z}zegZWJKcRk@X63tOe$X#3(6F}M0wgxR%7CBybOMWGQW9ryrO zgue0E_rS-_;bHs9eg#s)vp!|5ZpN-b6kGd@5id2Yjpa5x9o=GetcVR%C zpR|XVQnRX*j4z6*pc1@O_6R`g|AMu738%V4ZiV*X8)>?wRVqJlJ?&!oIKjk_8g`TP ze~RAjpItq~`3ltFX(B_Yjd?$*N)Fb;xfG@fCqy&9BKQPqRhz0F*OORt z4YsIIX2R8p}C^ojYwr(LJ_OJ z$4`<)T6obvVXXI=yFljMykqQrL(RElB6VYlqk9;29|DJnwc{T!b6-(j9E8UN_I{Q1 z0YCU?>s+Yb*s+LDa9*W3mvZhJK|X*;)ZpAQO3cT3vy#KTXo`Hq07>2n#>cSRyVAv? zBVqZX7V%-$0|R?5UfWp#pDSgc_(Id(%zg^mjzm7`weE}U&^BUqjOm5VhmjXnmvj1* zZF}G(q?$97X%-8$2>+<57fPH47k^?|HzL8JI98SsXSgqSPY$xucR7}FcNe*14$ZU% z!i>QYIjhfgiiiBJ;qF_;R}j6Z$kQz(*3Ho4do4VXZa5t6q1g&|PRPPvJ+1icI{Gt7 zF23Ox3C3X(%Fp@TU3DBY*Or=z=wuU>Ed?{gck#{*V&JmPOWZbS^phnF_c3oI77)D5 zL;ghW|F30(H$E{vXRnQW>xW26Es});3k-~uM|l8qxI86Oy6H}3oOncJuZd}tq0e{E zBOuJ(vjy@&$wjz12?U}*-@ z7lz2;g*tVz3f-hA2=~7fSi7pGPZk@scnaQjT+DG-2Tu*Jmg4ynn}5I2haFGZmnX>C z^uXzuuZ`{ezd3@SKQ8uaf*blU6(oEAI>tCGl zlGM?eHJ32Z%2>XLk1V$MDk0sa1`bGWW7`)YF|Hi2Gx%t>bNY!f%I-U z^?1$(M}YrfjNio>n`rgMSWrQF4)V3kFO})5Uk$QjY(Hc#;pEi})HnJ!A_quYd z6M%1+er8|>Ijllq{#eFg^%gti<#VzmDMDe`B=pY>DG!; z>;=J6C-d{&SWaqaJ!V)_Xmx2XQqARz1hSahZ`_rE}Y`pHV7D`~Lb7b&Z$xs*b{?cKQ7IsEJc_ zHZNtX&UFlZl4t~-t}Ei`c~i!UptB?>4Ie4}{S2E0TKWwLHxKBoPmdEAYF{i5Li<~F z2af#%q+5m2>?5=WC%a*Bvr)sUgSz#8%dZ4>X+~4e6QN`#djdk_ppcPVuEZlTm^ehj z#(B@@;c509Y5e+Gdx?V=%RC5TNxsfEZEod4uh@aR$3Ra&Li)}<8JK1>)1+(%p6r9> zlNJMSj?A3=zHsnvkpA`5y3Y#4LhCSnmjXrL`RUzo=%jIAmP%=n;fSvX-o4{OUT*la zU>{~Tm_dviLO#QkviQn`POvFhj^JNpO-D?$f1%HqL~njD`XQg?@0$!EWud8zPjCT4 z#<8m0+P!-K<~!_xr_C*XKQeRJ47e#+-NYXc?CmQxFjNhgbf(;GwmaP@{N_9t^KAqU zhFzM@aq?=%twoxiW1sOmj-d_^N^7Z;qcn)6c?2Jj!9g;etTybVI_oz8J^nI}(Jp1vEan zW693@7iO!U!&DUvW~y0h#*lGNdpO(dZ-b-0vEgnu4V6> zVjF^w;$|d_3g8)eh>Bhx0uCNC6coFXL_XC9dNi=QPY1Vy8WZ>R`wlN$<~_H@Imanb zEhqe}!H)>J%&)F)Oi(m@6;OzEn?YD2#2oK`UwzaRC{*7=K%;iuimm zGfRj|x)Lbkj6Z^kcPT@Re$Ck3A0@Y1Xrym+Op(#S7!ZUPdYgbmzKTU?7oYfDH>Drm64z@eu*%JO3OyJx}m7Syjvwx$@^L}sBt z13fzC_Ej?k#|rs&aCX@Opx6YC;xuI3DKpuISNLy7^+ZXrbvf$=Eg$8p^v|Fqu@Hgc zseN-Z&}~o9>taH8lL@JyEpq`k@W6TBFycbOs7O|6Njw&)VZUZ0u6!pI;+J zAMop%LzW5b0nxa7UTiYD~3BBn&F}MSp zg>=!x_qxW)M9B$l9)TPgN!9vYmh#AZdU|)c*~d%F5h;7VG>jC=5P9?0?|g1ar%?{q z-C%a%(SF)qMuNVF4~Jd>gxXY?uL$i>2x)xl{4~=fplODthKvUf2v3WivWVvh`uzBz zVj?!%lE8Se}`2q>d+}+f?!+hb4R^K?t zXX_2%-0@G4oA(ThlSZxGQWn|!AmW&&=E&*P!idA1aj9YaH`txbW4X0{ZoAE&f~=Jqr4lT~3~*r= zhJn=tywcR#h|3u!b^HH$D?LqdW_1nd(PFpfW_B1Z6~a`Ye*RYNk4bwCBnsdSLs4cv zTV9rA^@3q#L(M2#*0KIIPAxMwCeA!3<}~y-_Zc;Sdo8@^A)NfnzUJ7wm}<{hRiRj? zIQR9u>h(~Uj`G8o-`{5#OMmU&y zX}FmiAvgL~Xs~HSe}<;qtp^cCf~)k^tdof<9!%R|K;#)9sasTnM{jSoO)Y=+?yHD7 z4l+5jPKx6*thdWEt0e9s)LGjo;<(F3Px8h*IXSH%A%uhOVuRV5CVdZ^TTytZm> z0Y+_n!wk7iZj2@?te{T;wYWNtt9&%NF?&pvxz%CS38aO)#81?_r;|;3z{LswL4hT6iecE0Aq0mvFK#zNcfTt^zSeMk zueqc#63Ka7iDE&pDeB$Jj=&K;ja{83g?j+Q3-2!#ywCkbdmo~LMqq^cOfFo|WMBdX znJ33D9xbr6E4NGe*byer|I|Ospjj%nLA81flh7NoREu0vW%gmA=a&R#xS>4iKF_%X zpA&3zTQwM6_HU zL$=Jg2FB2_SWi>yh6Jn%2HvgbeP&4fSROyWs`wztBHiV2#G4Q6U0b~o2zb$8A$c_7 zR6+zfB`*%yYym@_L_li~cz$jx@hf?+k1~l2xBb<40Yj&Jrjv09_1qPhZcwp1W3B6s zQkwfH?^nLy<0B_J>Zfnfi)&y-FLchNzCt4bHQxL=@6fDw_=~HBF-(J$? zF#5QHm)hzu160`bW<9>0jCuJ~_(9gI9oA5C*9l*m#6jy{tfg8TnUVF%>cY2-=Ix9S z%30EwSv}Cgn~2;sj2GtajRq?}qVpT*f&i5VK_js`8YzbO%|UMoKUM2cC5Iqwg>svM zNhZg7C_u{W%aZp5YHLj0&Ajuz%lPy1$` z?eM;PDeF#Y6j@VQLwvqiPI6lK;hwwVRB!Xe`pHp)xRZ#~u1**q@jHN)n3;6-{t>nZ7BKvoo<1ixCXa+Dls{2L$n4U>oV z!NR+KqP=qZu7>$1Yl}#d)!D6l7ti)}t?%!-9)LZ3yv4~5d~p%g?@R0dt>ii=C{{^Z z%4Dwzx9n880TB_mO9`JFd}1ux;lGGw-;;%onw4pNo9|tM?fLy zlpnt@qY7R{kL^c)UAvF%mXBd2%&L?05=6P_MUAT7w?BU9z(AyQE&|hETqf>aZGIir zDt+|68jOOos19Nj35HgJgU8AoK*oNbx?jz7plKn#S;%z9ts!tA7vloxnRU__ z#70wKi%!rOjBAJJnC~IQ@sleN7Vzgft^*RP(u<dqDLXJu?!?9Y{ zneO`Vn-jA~5ZxfjuljTa%$&!u;cS+pIUtG}ZY!~5xU1G#t_M>a0Oa!CYD>#S#^au3}gDv!iHd*`G-zO#5={yob3jJS{wIN#D&Y zUP>NkY=piydi&cHexkVIaDA3UtR$-VaBgc3y4~Nb6Qy4dSw6MYDp#_4!$Dni@hh9v zM7lS#zN#SxFLC2xWHTbg?fA&EQd090~weo_@Iq|Pu2W&$Yj_O})F_L$5kGgL3{ z1&*N%5|*+2+cV3z(`TB@O~|H=Pc%bxPgNFp%bui+`8$^&q6Q1jjdn3Oq@pt@&>Nko zW|_ZmJOv7;?dxd~lo)WDLv>c#cRT-?$Ft(y05IuJU3J<)=j##UBpPnUd!Dyibt1ZA zNY>CF9|d|&P|=llWq2H^i^~Kb-%-QIjP*(m33a%0auzj2j2FFKFy+`)j>j)NqyupD z@Tw5-FJa;Ni=mVafgUS~r3mwvMC-~<27*FH5NNm}%jdj$Mi*ch!&3{!OT)Y;JKx<> zZpg~^4iAgu&UTAsg{YNVYGxxeWu+P<8P`!gzaR)xALaGf?y6}p!eV^&GL-3i(d`zV zSO$(qXfu$kZ|{KRt|((8DgrT)Bs;FolAwf>7HnAm7h_lApwj$2k&f9rM^)0 zO`YRrld0v?b34=ag2E9`n}UQ>fqFGN{wE9T(c530eaL}OC!(7#YwRc$`H>sI1v;JD zN}6vfVAyjUxd3>au`Qi%UO$WEmXk(o9C=hbtZd3<7_4A>2a~CAiFDVejc%$o5_#y~ z$S`&Xu)9cL^Wb7=_|jYXmT`bFAvI)_3POz+tzL{fiucD+q%Z6DqUXqjD(YjwKtJJ( z>$&YO)y&masJCLzEUQ!S9a*EJK$8%nqhh6CulmX8>YNv4TMkccj!9Zkh0zrj+5osG zO$7paz2EiaF5Xib4U_&jP-ao(j%@#2k5RqCH8_@f`pKH*P0RtbHIhjHG`|Act~o(v zZbSx>vP)l{V&WSftFhymA`%#Fkt5JySFsF0(j0;toPpk8Q-X72iv=+6c#3%n!@(%+ z+8n?oJOt@d2~>{dZ2#d=QGiadV!#gA1(&7ZGyb`ADglEj9iP}&j1>hJN(RCICi2_$ ziL$NwjT1veCazn^O{sx({GPxk+JJsP54f|rgi0PhJg%-;)k^YP*K)Gu1UC>|_Mzrn z`o8S)QvBS1?m~KHWwyy%6k)4f!m)`SWbMM>B}7_ELda4{&GMa)QawrHmspZxbk=F~ z$QG2|vnjPajEpAUFs&s2=>>k$l{=taH@!ynO1Y~jpe;dSVmeT zEuN2f!;q^A$1y&4W#30B>f=Wpk!}&VX!PbJODzk}3ncvWqFJWJA@A=I79%V=1K=Ks zZMNa_tZD~KbgRp2oC|qBGiz@-#@)FfKg1eV-eJN;Llf)gD71(7wF^Hof$X6lNzb)3 z^urvR0x+<@erh3KbL&Ek7J4+M*DKHC&qK(<#yVvz!7tYtX)> zd(CuS;yd|?(?9vA!O21~o-B+Oc3f0iTCkVAscSFQONK^GL{2{NKkK&NqT{Hj@?znNkQ(}-)r6!=cs#q<6J$%Wh z(K>_y`0+@SqRmQD0BC)hOPL85pP@Nx-?1>?*Cl`ftGNN?3-tiJNUz<@kHXW&y_9kN zLPihDIhQuV!{R>j<|=8wk!{_l9!J_g?MDIGpzc_^xck8Gn%n^Xoa!TK!00y42hAg7CSez>MXn?i8m62 zXI5H1FC@<-kK`B?h8Pe(NIP$|`bhfj^>}$hF7FSw1UHvbYOSL(#$3$cPd=4veOoj@ zvi~=<1eQC(Hz!$lPg{qZ--Zphb?1L>s&y7j4seOBoWIkC0d}FhG1?AFOL`yP`p@0U3R<)z5UUoQyg8`z?-4wQ z9_SkcsPymdi7%;hCKQ=rf_{13fPH2@>g#M@n(S}qqEs%a>83t5 zdFM;CQ$Hu|d5sY4&!Rfv_Ei;D07Iwdx;4z-h6RVw`` z7Yu<~7gpW>zvP)+_$0*+oR8nVl1@&4kby!iqN*Iep;v08`67&@7f6~5&cM=ODz-B0p-Cy`A>ek-mxWux786D;Kra+lavsaLN9syf z6X9x_+<<2`A8!4BfO{k)$SvZe)q=N|palMS%ZdJl*>568nQZX7p>G%4)h-p}j?Sj? zs>v+3ILIY;UYmx+3ICgjK;#gi6F!v&WSw*8#NlYm*xx+(osR48t53XI zbHCjv=>L4v7gQ$0hlkpqGnJ<`Zdfe_Il8cXxZ z6J8%$F^MsBbM?GlnW>HOU}B!`g(6(3AXGH)DyeXy)1@lmzV^~-fT6eEdnG*U1Jd@F z%kysGOCHHh;tBXhhsFPTkMZQdhMP%L-5pUATYG$G{*qj9U^tplXmN>y59KED+DP*c z>+Ce_z#tk~7Evv!0%8W=yv$H!z(L$YUFz|;jr6aEpf!Es z$xEpFp<4}ILOHcRzPhg^h#rm3)qccL*Oib|(Ql~uCSlut|SRd^5O`|%PGTLWYHL3dDE(F zP$ik98frg9-mj1Py+~LfP>uzi+TtQ;{H1a(ziCUm9gyI+J%h8D$ ziia?1xz^bNlgZ_^AG#L)#tY;DC)vR`^IUh*s=7*)FEQ{n;(AXIFL0Bs^P^f`|T zma^&mjACROS|>VPaGv~8)o=mB7Xxza;DbcYxnsZIQS73dO0%l(>%TfhA_i$DRr>1> zBJK{*9~)>$;FB$NWh}1UzlLLroQ0>c0s;tn)pS_r$jviBVlvgGymrv{_o+fX;io@% zHjPuQPordLg=}C3!oSWklkp$(B6w#<%ppyy8>=ESrB z#(Nfx&LGtqWI?Nn;oPP%wo_a&4yZ*l(NI}D7ZYAAy=k=^8T10bLa(vka*6zmW z8{vIef{65hN1Eba3njn?{F*LX(glX`36k(~u9V2fb}BLFG*JxNtK6HjY=Z-2P0TKl zngS#I^NLG%xYU${&ZkDu%Y5BT>~3=M)dQN4b^z`3wal%oHOX7OXC>~Si2Kfz*OF|0 zjB036M+Rd=!3?P->I`|oC} z)bAgE8brRtrTB8jIrZ-eW>%xQM1F4_4EX&amn{HWE6etW+0%tjV3y8L$D11N2i+_>e z55>O+ecO$7#$3Xwf)WAeB3bOO#M4ETSTN~jO<4(xI6|<;aXpY-xzk-=@JdMnul@~N zGA@GuN8|7n2g%b3B&)awpRbcE0h>)85J}%)wQT@WXRAnJC=8Mau3nTtSR}J@lV5SV z>Qq2w@L2QSGu4pw?z((2K<}+2!~QLgI5HvhuR9u_a}D#6A$e~-dj}@XjmQu|iZ?1F zc>orQmLrnM1xbc%kTw=>HQ^P)Gn2BSi19f^ZsVkcghy9$xz}zX3e&)QN-s4R zMy#b2cBgv{fV(EHbAn?-QIM|_o{Ej19#8Nsn7sbj@9?iN&6J$m7?)m`e536w=_#i$K|N@Bey5|H|7EY{oF`#Ak2&EUNv&< zf8YzoXaeACm{L0B?Z9eXuXL}C8Rp-}ZapeCdPJBg{f`jNxvoR_Pgr>9gK$5J!E{`s z;ou6YHBtz}%FtqG=ly?Nd?l18!?ED*)ZCJdl+(HoS??r3Ie3V$^Vh`AI%+luH(YQ9 z3eBY*)=kvUX#~%B6NY#g2jwezA>`=|pLB{o7`yVt_gIIMgIoJLHaTnL*bd6ISGe5m z_sPm2D|QGHY|^}`-z4LeUb(8vGdRmEx!7SuG7IRZv*{kef_8dPWB*b0EMUQy8X0a) z7OEw}TW%dNX}3l@%&}80E>&rwNYtZfcv-wWaV_|z#2;Sfw6J%tA!HqWCz|y3ivsuM zmPC??in}1DL`37AWQTIZA8KBw-cUGg2qe-x0KU>7y}5`=h6j0ke{iTmazt063GtyD z=3{Q%M4z zZ2vjYTbS5C#lZ6Cww(m$8CPcxA45b9`r@F|9znK8N(5gd_`jdQ1<;}Y1DNP?Od|q4 z^Kb8RB~&;i>FTE0%$0fXBCJN^4C*r)5lINWh_oWJG)K#K!QUxMcbHh}s# z7e&>Tbr|+lgHk+;TyW7Rd`HjU72e>&u@%ti{gmrXb!gOZ$p*fqxAe|0VsSESzSqhQ zJvhoKkg?VzlTzoXcw0X1 zb1aEI#n5JoJfpgqWF4BEcCEYsZOQQX!UoVgZd=6(Q0P-amG_iR!8la2u zu9CrrmT)VpmCLjXvUOkX(z8rw>p5Buv*!I5M1DK3$(Xuh2JH3!Z@=<%9F1M%!JNLY zNJhJV^&L&sbRdhUZ{}%?60ruuEVyuy=E_1AlGG>Wu77(W>%$+)t-yW%$2%aJ=ulx( zRk&S^VoX@)`h46qSgrkoy>5O&H{%m zX#KuPJoN6A_YA)sQ=d1hDyXVSGSgX%gGjQ)!kO`W%(+|NsyLYn4AOh?j`>ld3k016 zFmPRSUHns}ePvi(n%^>>I&e(>xab;34KmWBO-5>+_`<9zxlUMB!{ykiEP8`6_Eq@O zmFNlj%VzG&x)Nmt2h){H1b9#TOfGZ5-la6pYUY^G(~Hv) z@jo6>@pckN;X)>&&`T;aww?f^$CnXuOsm83cf96z`Y5IV#{Taskv>SrVh?|QhWiw0K zg`(f5#Nf8yzqxjLQNm=+v}}4^0BhWwHwmm-D6lzQGI1-YIT5tI=rH5(?@wO;raKE> zUx_M4q&fEANHbbnB*w?K8kp~ZVfPkuTg^-e;aDGtJ1&5v6ZUHt`V+Pp&phlgipo9b zL3LM_%j5h6^<@1oxwCpp$L@>CZ>0IX_~r$KI%=HRBL$IIh!7ze@mKmf=d_O3q8y?E z;gxsjCqPCNrN>R0TXkfq%TYU9N&e4MjQg)`bH_eWGW57lPRb!M5!|Foy@LoyVR!<_ zR-HawiE`F^1i!exXsV|%W8Z?@z4D#Bys=~Vi{%b8R))YWZQ56hOum3cZbKNkGr`It zmHM5gZ~NBJ(3BB?a4HeHcy4KxhY-F9(EF4$Oc{Y}%9`N{1)l27>Gkjv!WJXax|%?5 z!HJ@^$0<4>S(=;A!%V;lv8fsyOrmF6gf)7W#wo<66~;(%b|!op#@>n!P4iP_AN$mHiigILT+gAInDaexX6MV`}TVFrcFjzf|x$u->U81%08yUBh zHmpOVt{z@bvhtB}CHOoO{T3q4`=;Sq9vhma!AH7#AC4r4e0eo@K!{w${DcL4d0PV! zop_Y`I5xC0Qf{4Gu`lg|j|<$elFJb}wNASeidHNuxRMerc|CM`6+W`t&+}9OQ2B+I z5~Jn|kOe_`lKE9*c&`!9c*JMVN-7qK2q<3elR6mxz<@|7UVS|<`XKWZoCb@ zgaEVuNwKFH0~+C-v_Q^FLF5Sfh+1qT%l5{vqryde-k*oX^V31VBa=5nt% z#O#I^tyD2Td^?5qDwMFQo-PW-6)K$$3MG{fvE2uOiGIqv#v@wEXPWpL@N{G;Vva=o zrzHReZhuUf?E~ib+^Nx1z%CV}Zf%`w1zK34#DF&uu|!+C=*-71*IhL+Wx>aG;27Qy zi;x8cTf$jQilgrlN{&)6m`SIsITZSWbp-UE8W)G&4nAd%AZ5rk*0G8)3oF|zB-qMF z09&bdF(`;)nBybt1ezFNE=64+9q@@v!0{>tYRdJZtw}8*&z^sCbp1ja`(aKB#HY4z z!1rL(B{cWM7LJ%4l&x#6r&_{r99@$7|##IEAL8E=6AL;J_e z$8Qx2YXFBHd#7`%_n+(a=`(F~0de9;iL6k}BKZ=zm!REUe-WuDl1{bTNjxxROLLUL z-1EqG&OBgoO#<~!=3d~E3|+I~4};rJZ<)$*XYvZAIRr?A@dq`Px``tWfXJmQ!J;q} zEw3Os^>2T{9sJ#$wGR)3O{cAGnjt!fR7#_Th4or=z`I!!cHZhndZCP`H*(q05zD@4 z>4-7{w8@*5MbmZqxb^hv+{M8q2Wp_bicS>7S!L2>2S%E?Tyv;XbZX~fT`_^pxM!H{ zJV~=zVuEFG(@kI^23Ivy9BVuXk&ggs42qs_7}+2Uy~dI&cBcok-jVVGe-PGj@0^h* zEOM?;p`nIWc&C&%mPz%_+_2Od)iZi~hG&Up{)Z(99B%7!jM8alTzY2#q?@_!fVFgS z^hpa5&mg?HaRd-Fy=BweTOnz7@e}Vg#C2ghX4o|$?M8jjlQbNcnRA-p(2Jn@7&cXN_r+xkJxHCjg!s)~&IGxe-E@Rn1UpbDJMSKHZYA|bO- ziodcsTNs*4kWTR5Kkv;qNqE!bVzgXl&p9h-kZk!{8(fTh(p-B946!x?XO&nzp%o*~ zR;ItM;ecRU@f@C6!d$%0RxM1M18EUU@L;hLayQIP8!H6r94H{ZJP`vLlno^di-8N9 zfOu}-A%8phdI@P2G1|av?{*F^!%TgZ?l=I`5T?lde9%=vZ?y~Gv|4=6!5MJ&B$AG( z9sa8wm?Ad;-D;XhK5L-Onm-Mr(~1iVA}scZTnPpjjMlY>*9Pue|(i~zKB7+k?=mF z!;q=zQl-znFfB@3Y(sS9V*I$o|A;Yu&YW#s&pXMrujv^o*=n^V!mNlAqf>R5)52|y z+IaWJX*BJeVLW66qu7KBDqA1iBs+W3ZBY1C`gualoWVvo|LC}b0PI`spp<50hq$Imq>9fy0kq2D-JvzfK{o;2bdl*|W zFPu6~dG)ov@U@twk4#oAY=Ussp=BdOcw-K7X2pe;m9F-&IW{|&V1 zng2w;yqV6Am5|w1twi}{`Es!LS!0`3ObZOug(#P_oDBU5Ym^fV^~u zU{?6Y?YM#xetq9)IEPAO)#q*hyyyd9&BO6-R)q8^2AO*$fper|SGHY1rP8tEx^i}^ zuW^MV1!7i}H%IyscFnNwrI$6|#TJeCmy0IftuLd)X!(7|A0@)T=J4YaOd7T$8vvG5 zjO#6&Rh}$tE-b$kDwS(lpHy6*NREenQk@;19buY=cg>{+_UQL~VrVCTjnM|y%k7l6 z6A1?CaI<1jay9SjD0`M@$JsU+2E9phJI~Gi?SitM;PoVgAnueKa(reuhbfpXcms_6 z`Dnb&Z}(wm79;o6#+rBt8XhMWPmi0_?>_FxLc(B z1xy$i+*!9{Y6(@_<{t`^Rwe{Iv4!$(^21OYyy|;5%RD7Q;Ci%~S*qRh#8ZQ_{=N2# zV`W=mlvKjz!)|SxnS@9niH9O?p$TeI)tP-6dRrt2QrtB1w zEt1}hY3Ku2baU`7FSKMj-w>eg$CL+gPD)|f%dpDsq5xogK^bL+_1zTcgYBqwvdw#q zS@Gf%2LPCVr@Ti2>1z-oC|vujln&hV<$_yRz3J@{ZTiYSX4(FN%i$HQ5=%gyetSqx z)i|~~mK5Lz4%H{wwLhlF@-klUDJGR(l9Yb`K3F=k;hCdxJdWkjeOI+XL{ZFg%ITFB zcD$)hE3$--6wB%)dxu^s--AxMmHCqBSYM*R+xhM`60dnAHpkt6H-lht9>6)(+BidF z3`6IEODbey@q$~ATRtMID=01Zg?ABN2k@mD1ogKTAJ#{NR?O^0ORRQ&d3o_h56LB_ zx$DCA9)p(x6^b~k>u>P?Sr=29x2_|c%E3?(GMo&Y|0-;IzOXhtuY~5pzgB2_(yW|z ziUi8!tYE4+#%WCIP=FYxQb^cAf9o}_HBCHo&QxYNI_iZLsu$GZhl^Y<{vAGyH$&C6 z&kPBYzKZCOYHr`*a81T?toD(=vP~$Zf#q*{blo(q;P;{Jd*c=ap@%7K9LfgE7hA`0 zD|FuNlD-zIF_%c*^^8nl?~5l9v8ufHK*uGKqzt$}kuDgXeR&%jK#74P{k*tqPjLE- zuP>_yM`FcAK0dL(hu?Q1g3Eg;B1mCLd)bg=Qge)5@ISlyG0;m(P1!J5z?=jg>C^wpqRMhKvW<@1AC&rIfj75G;se-q09?sJJ`*;YAFpM1$2q!&Z0ZynErn`tgo&P z;ws?*>6H&wF)28TNHbT&exkwIGs$X?H}XOpdVRlyG0HaT`d20a!|+LGEY;;I{mWD= zvvH)i@(=cw02(!EG0<*XX8_#&DyCfnkeOM??6gQ}u0&5O?r_WAs%bz?)gl}G?OG3N zi_CzIn9>3usP*q=18h-bor{1&z`undu%L0_$_XqfuUkN>H4N{OT+Jom0e>cDYjg(H{Hh zp$LFh?!hk799Q#fp@B%kdm#w5YfZ;t$hX^gG^?}rp+bW`ws| zwSMCNdz8!$faJ5OTpI7HCjt9?Tec0>=o7Nui(IH68l_S{_ujUx3 z#0)Zi(v*^e$Zr)Q`1LL9J2_uIJCej0n4b0#pY+DHXIm5jH|X8s{tl=$6CJ;G&VfaV zvciiN6j8n$|=JE5c#vo;SAR@Td`u8hufJ#ud&K1xP_j!lYSfzabT0 zUX?(zkloeL9xo-WiO|_=C^asYVyU5yiMuu7{@w?UFmuD=a!tVSvJJ+e4YNiQb(IAT z>436og_iBj;28A3LcIx4*Yz9p3&EOwVDYavD*PU^j!Ll~xJB>*_G@dGoJ@0-;NN#H zz5M~^>r{VYfwBY7Enb-H1gh$FNWIyFwSQ>al$-n0-p$}b;_1ib06|ozW86-G=)r)0 zlFEHE9Ihh&WS`c)wd6uaqA##YSw{1C)H?_}m6wrH$+1ZILXUiv5xIEx9sMHCB1x4v zv>Z@-lyN5MyYn0bO)`k6RkWV-NZRjWv)x63JHLR;k#W~_aU~*+*JygghY;D& z*cMs;G+G6QI|AzX5BlS$_V^}d=u{B5HR2Mn7DGSbDFlsfvzslSfoE^AW!$a?dQsLz z9GO0kT?e-XsOTz2ahWaa)37sGFBQesbG!KJ8lY#hM78VTk99n^TvgoXj&H~Snwog6!~z= zTKEIGp3WBE$uZjFzJRx4{D9SccCTdpC9E@<;__N&VOR}3@HR0{~a*Sl;G~Cj~@6S z*@U*9B>P`0T7jkY@dAiQ}Qf`B!Zj^s}nMG({BfKGz?kfpz629TQ z@cDzVMZ9E1=)~NVIUq&@(lg=m)g%sK)7?daXDh?!6ZC|AV(Z8u%dgg21{de|C{Jb? zLc<{I;hK7Y9Gt9O?+axG9>qIV$mlYYExv>zSdU(;sxc5}as5SY@UMv4XQ4t*v7~Py zv)+3V0iYuv;R4L)q{W^D<_bD_EtclL`jt5-s-^k>JGi8(`QLJkMpD22V9wdxq= zqi*y{BScgKqDE#sg+5ofJ{{|0{J5;oXtRHZ(gScMZGHYj9H}8Rjd7VnHYV~lo4zko zyz(qjW??c#KfK~E|Nj(mXt-o&Kb7daS7p>mR#A|bSgSh29bW3QCukd*7{h)M-5 z_@4{M+C-p7zydJ49;tvT)F?mTt9KBNKniLl<1Z07{iQQTTmm0%S1R&OTe1NhMVsZ3 zQV{JaXEnIMJX!x^ac*DBYWc3|@XIUNKaa^$qGTNBQI2}0AFK87SrgNS8j(ORHP5Fa zU@*;MGzsP2RVEdEH0s%2nl3B$eM{;S_RH0K7w*La7c%-vjf6;S23R!~EHQ`=g=WCL zhX~bst|#0r6dW9Z8gX@LX=Zs9E-qMyN_MTsON6E}-ye?$d-)H^9=b=5)6WI~2Z3Aq zu@{9TA$}4mNczUZN;|APhx}9DgV+MbD^+&s-PP=pa}K|_EoGW+26~m7*ehZl>UoEv z491>wdv%E3c6@~Upa^1=s@FeHVLcayv)qT-SUIODU#ypfKi~IN)k0cmo_rNwh=DI! z<6dUa8UM*-X43XsG+lh~zN=@M z_y2@|8W-UTY%X`E*dlh$zjoQGOG5I~+`^v!o^Z2vP2|W7gi>SvF&n13iNMm-QkS-e z1T<_-13CNW=}ZuUh$2o1l*ljfD&q$}QpYY!E{sruoK99S%uO0z70OUBf`DzJn!8M( zWfDQaM!u{V&T>xzNw6PW)V_Zi^3Pi{eeJ{H$fu~Y;2v1Rx0(`0ew}|+UM_2s+JG4p zC+$O&oNd?Q3*D)DZ5dhjUbp0ha~mf7Y(H!aHsE|4bGz4Pn=(fbZhSyppy;nVGkUfhfd)N2F=n zEop6o6Qk&M$xkJph*ZHcKmgF~TOh+mnl`3sJh)ic($airdxR+g7QbVHHY?Q2IsTEdtX`qDhc#fivv@1ivPuDMhE( zkjX!RQS1YoMfoKE@Bq>G2%^9idMdCjxyg7%Y9-7`z)KLo1R&kg^dUFyX_xdHNRzwV z0K1<){W}w}=Q_Kojypm;8{*b5I6%H=SZ`s?fCk5_^O^!HiN?C6eJAdsnU{_kgpxSjWfWN1;A!Ni#7YhPmy=|$4Q?Lk7Zy(H0E3$@oP&ff}~_H z7o{rfgW?{gLs*>0pjJ)1MG_R2#c~k5z)1KMzojlcSxaEvRxOiU2EiIL)i;m)aP+Q^ zmATEgcc)6{Z86iKC0|g#?%PzyJAR|2A*0NysU`%#U{NUYjAo{ z24L3o_GT0mt}%&C!B~Xa<&?bV5^IR&z=$sN$)2l?p0az%_#@Cp)}iqIH(DkJ{maXt zV{0WM5e(R&<^x=@EoTi^1W9?e1Ug@NFL7yTgI6)1=J!RYKIcI?cqzrt+fo0$3q7MQ z^3a82t+`f=WV(K9iuO|zWqX%y6jxmgNmJ%Q9P;0Pks1DcB?4+nZ{h6mkeWFRjkz$Z zAr#dM;YRk6g+C*!{%^TrD?YP);ZV|Bl#D(2HWgW{=FI^u6L6avHHiSD>Cye3M0&sex~DehBN2 zA)zEruqY47Y!2^+CN75QsGXWi^4aS)*OGI&Y!7zBuj*1$bN7=Z1(3ncTNs$UUZj1se^yfs^CnANnJ94jG=7o&`aDJ-RFO_yu{i$ z$y-|fK>oXI3*9vQm9WRtc?uKn?;F0WXDa#q7ZBKzxzPWgNaVQPJq0)3E#$i>e zwCa}(Dy3uq)5>Kp-{xo16lF+)k%ZxF`*umM;2aTOjel{lk zr3bcJm$ZxdLls!;am{yV38cHx)M^v`gwL-n1=SgiT20U!YA;30KU(UARJ+Bz_16JW zbSd!L6jGRqS~mHWzAEEv6o~Z?jxAcq{*7o9xd5fXs<9O6NhV@%1YL{oq1x(qc*ADZ zJokyb;7A72!pYgDkf3aBR^L{{IC_OQEd*XLzqXLb>I$xiS3?1Hq<|i<3IlV;= z@hDTqjy?X7&sJ>;0;T_nLbaLryCX*|6D>+MFZ!H?S9kXW=~Nkwf6;!@nHbYqMc!*D zAxjKo0L~W2AfLAN9+^kru(oe%RCE%tb-ad2Is27JJa(2Dp5WQDrW0;MMaceK(2}Ok z=aVs&iv-ZVB%#zMdmp2yLe@hqV4;*2(!r0+RK=UNJdjJint&jOfRzbGNT)WF-DEnX zlkWuvgPoGm(_i1xykw+m01? zB+QQ2CMx>TANh}SCXdom+{oTJmW&$|8}oeB$9ks-oBw912tUuw24FYqYbHeLT?z(c z(QkF155c7EON5_W`!P_{-7v9$`(;LA(OoJllu$a~+8vm~X!L z(R7QAV#KjaSTv+NR35T|9h&qZ7KC;~TCu9T1VWg(?zUk92QHlancnD1!;^ieh*}_w zG+#=TgMUREeWSG& zeUUf4>!}BS0JE8<6+s|m*~xprDS+Bx^nnJ=e<={MzL7i`V7^n2&Hl$>amtI@zA<;% zvg}lek@933GLx7%DAUL##s4EMAVJj+k>a~K5dCp?AFdB-aD>tZHv8<1g>d0o=AOll zZU6$9iYKZ|(iIW_Q11-<;I+|iILJda7gXGwQWmiRS?Kz@)o+<~KK$Ue;_#8eJW zi50Vaa3%;J>wX^Op^i|)&ODL$Mtw|1>P;dA)rt6$o)vlbVSCBcIXoCP)gcgq7X+Ii zavxu@^^*1nftVbPWB3N;tFwLCy#sCI!Dy*vzSe)pYTSZdsYD=KTmy(+6vMlwaJD(b z70(^IlCzQ{!3ts@qY^X>z>Myt-OV9A$tMv)xxn_dvRfEqPUNWlw6lv=8Luw;Td05% zE9<#7el$^9SRr=QTda~fxGP@3y4`uLdltbxoBely*99N=>6LoXdJhs{A5fex3O{<1H(?;Zup zAOPdh|JGqo>)a12<3*SBjLiU}_GgF7Jk4FfdM!X(K(6)k=ai?Vr5d{bXJaFShA55y zw49?FGzO|JsYPy*Hr(GB^EL<=7cju3lap<(4$KfsVn5)+`dyhJPK`}_0Y)v$rbl*v zaH_P}ML@{PUPIP4!6lb|5bWZ^v(3ifvzQzJ1;}0X`O~eElkIr0tkrg;yl1RTajO4U zEvy0D(c;-6u2HuL@J3uW-3=hMO;D^KW>`iRr}rKr;8 z@uiUAFksZS?oxU3kt~>d=A~aT)AafgN2Jk#bK~zyeCdqT&b^V;6@j!K(l-rsA%XB+ zK1W>#oi7lhI+YX83%!0pndC_rDN1FGBBv-(2zTd4>ejd5_$VzD(o}Ps(2iQ6~h!zIdQ0a0R zWTx3rA#bsH8-G=Ciz&{MoOTI)N{rLK>SRG&T@tt#;$UYWe;-{+Z;ft^_W)rMpsePd6Vmd z91_E-iZO^pU$j!-Md!gDQ3S`%}ViL7COs`tm!ul$U$uA)wYsUTTUl(*!RSSaW{mh&xoi~>cUY5G61U5&t(ZRBgb z&|BJtU*1oyZ}Zk=#z2t@W3753|ukns|eLGK%Q*xR4?LicU{P9$08J`&f-@r$3OO zpBMaQ$7dN^bK+Aa^R!dQ3SHZJ9H%mpHzFu^ zZP);2k(>OvNL%A{lxBE2gZRQvqLU7HlqYEZO>Jxg&0*5Gj0wKkbmA6{q}S8_>}#Pc z9%Tm(QNM0W?VIWom! zV%L9KxnaGguwecrf*=A{mvc%0!>A=~Mc-6baaAVcpN*chn_c}_XLxZijS6!1`^wzK zlEpa$6hH2jLOCM)1)+$5Jr3qH?|fz3gCTS> zRM&roBQA#@ojQhl9P@>q#pL%Fh*{LbAXg;O+XiZ=# z$5Z!Gge+Q8@C!7|{G2;~g*XCO`%d?C+=1%%N${$e^+!(pIw+WUvn)irs6~ZZcdrbf zu7^rAUV0(nz@=dMbv}#sJUza)qJ=Ll>UsQvM6|QU!i+B^n!iR2;=3TqEqEoU-k7QIedIcjrpjMrvq8mH(|-kt{K42DuQ_*j z_4!F-KMgzo)vzD2wr z9jK>)T2jM$J5`VP|001b>*aE~k!V-Se6We}PD!<~3yWHLQgm z7|m%Iy+Es#R}Vs-l2P%udqBW?6s=;u_BFdruKzmh2W5{L==uzl8?R}f6=hda(L=gK zD8(fXG|EANJumnx5h_)4pU5Cr7Xt8POeGtk@&SsuW6mrdo3y<*nv&sG9fSbu+O&}s zLS8#z^m<)iAMz)b7O80bd^4z5l^Na?I_pqXh7+=x=c9!QK6$(-YA2BrLY2D9p2_NJ~ zdJP+dYpOTMVLc9S;5*^hq{eePtX2{V%_ng&(hVWdILQO*-Jwj=Tt*AiJps`zDVyff*e_2QVHgA$zQjpY z-5In+61Pz$4%v(iP#f2{_|VjB(tGIfrPPHbt^!2*$z($U16UZXxUDhnA3n48sX&?e z)}|=0;+yU#He`N2c5JmSfkMG-CUT9yciV4WOGHm-q2dH^2@XtTuw z@Jxh(=>ENg%KmtDUg6nLhO=6*3Ie>KBXEz~%*A-A%3B^#>dqH#o~q|jmMdbh{EHBC z5D%O7#Jo@i_zbm?JM~ue0t9%HGE?A}7eS2cM8*OEg?o z3ble?Om7#rDM9LR9{#mP-C@%1(~H9G9|^#uu4Np1!J4`3T&y(G6&xzQ4{+N=WOZM4 zhWO|j3c0e+n$o{xe*ik4p+ZT=iR|gD7C;_~+{DAKO4E%)VK4tA8%VgnN(m<4Au=sh zA<0>FEVQ|64qQw7Psu-3yE;qoHs?eF3THu>lW{R=K6i1cIPd|!WW<;B0jT(oFRTsr z0{mc5oVu&gU{IBW9~PlI?Z*N?At`hjjIk%nUKm&{R}sTKhZ#gLPu6;-Ag)TaveLCw ze~H1?$~sxc{q9`;d9i#;d7bmUOmKh1uhtZs#QY=D`?*RE=o zzXyJj{&W)5yB~A?LSn~XKHi0B*O36lmPqh4LvWxf$7yUOCzcHOz-((aqwI^ShPTqo z${D%};GzDqMz3ur@6lnq$FHqvYt7Thp%HK8_{t8nJ)+up0=tFqSXshC${}BPUCL>@ zFK%FXg-2p#v43+<5qMLHy;^E$D+lGhM)hsI}9jAhX~}#;OhS% zf0;hW4KuR0D`w$YVJfyS$`Wr~Q``-LkL9B|!eJ{Xmo2ZiRH$ZR54Qer-3zzB#dhdV zmy=J@?WL^E0kPvyDKSK$S7qIkg~E*$$*)L4N{X~`_#}$tir3o0c#DdyW|Vmy(u=BV z%i`f7R(klodw1#D%B-RIB9`-F@m`rtS!O$k#Rqii!DdP?8dhYb5l!s&)Ev^z?gpu| zKcN#$BuD67!i>Q{DevXmJ~Rq8Ho&N4Lh!<0$e*BPgXf+od}d`N#&%5ileAdYB=eq2 z&0sYIcaMo@L$}QRCg8N5^!X|grhZL z;B%&&>#p>6Y%)gKOHSm%dLD3(6;p1&M*kb01e#Jy&R6q#Be6)D>dln5Bjbh4W#kwQ z`OyfEP%__xkm?ODeHpTSeQ?oNr6Gyh`K8gYRgq0J)g(205t^(oS_!aVOp2vlHvkpTp+}_JdxF&X8g$epd8@;Ah(gFmK1J1C8k$_sOhk&Sgp8S^^yy(FP}o z>mhJ1{RS<0^8UESZ9~=08EV*)5OWQzW^@*X-fTD?n?M3mruy33nt4fN`>cBu{iEz} z)U5T;tusCQl>NJ7MA8~?e>%Ea!cY6_ncMwUBJS4533Ft+K+bx3LaDdf%$A@SJXg@)fOijz$# zvGCy(9I-fysO%B$g_`5Xu8GW#tw&o&Xch;&*xtt>L z9Aq0MCY3d&^PP=Uo9nu;mD_;jggD*4U-WJ%fFcMFoMHtkYbsB`isuF zjjVS8IKE2S=~|N1);F*t;dif^CV9G-zK13eQ_9j=)HzUKN_#44AsaB7Njl!P)o$DQ z4D3vhdB;(4{-L%+i zBnPN*f>%f3lOF84-oG=|fO_P|@)S>}i!eUSY+sUmiRsM@!7 zceDZDbelY3SJp)x!BeY=)Uml(fBVEzLSlJbjp&w1P(6+|@Pnrb1ohFq{+Ipq27F0Z ztqG0RW1C*KaS1M4pfn?8NQ=I~sJ`S09XA@_c~MoY?sz8v$=lc*Lr^u%*Rnr@Js@^F z#&n^j0q)5*i>weLGyaH?Pg7jsEWMCUIJOiPElDhAkm|T{+HeVfcPyu6K(=wBgW_$w z(|jkR9InS-B+De3(1h_NQc|800d$-;-1(&wThouLM|4_Czoe-iAMbaa1YP)LOQ9*Z zzA&`}*##zPh%0{}GwsG2_6(^L4L#ZsC{qn&m95FI?TJ2amB!jDyKwqM%3+x)Au?DxHTOaDE(>T03VA7HtcpfUtg%q6PdzjFsx;+)Qqy>`Yp5 zPn}d#kee~N6YhwHdEV+ehJ$ldjqO~-0whi7mqb4>MDn|Dz-bqUl0!0(@y+`dZg1&bK3RHM&8 z)Bd26g`i**JFA@CszFI@u)|YN?9IKMPdtFAhRur!zFiJAU9NN)puw^aPnl#${8Ae$ z_9iQ|Zs%{edv@`7d{WCT3JZylo%B}rsA@mU_cPpY%WELAUK5mMYZ(>MXI1Ww$imE& zSN*fo4~hPB81hJZKpEmH9&nW=4}fUJ>IcdU3P4)wtrZ(5A{L{3l0R!Ld|`tTe+(us zW|sTESb2xXm+6`O(+P;s=dOoh9Ch0dl(^~y?_`0%n)p1z4NCrLPoxZqJ0tHyg6tvR z{m7e5fbRe=lVIIAlZqcmyyRU#oE;dlH19k3-0!dDVWk?jiTZoHq27{j5+mg@3vXp< zQs(5nm&bP7r+}w5HZv&+3d=n+)wvv^Zan(r96(VZ}yZ5=|aCCsYi!WPmiOmw3* zrIeVKcTWohh#NIFegJQm6h>nnF{oU2oa{oRhDy!BZr~Tu;C`!=SVlF;kIdyXJ>ha9 z58vN>{-_twk)|rVjIbFH(!pc)2Xca%1C=BH>BeAZSN((A5JyWj)IS!9h({9d zE_$%xR-9?*_i)0k++IoNH2#q)*1cRLivFW$hEXWlmKTHznv=shusV0 zY5RXTjH1(m5m|S+^4Rt$M=nJZb|<_oZi=_rwUq=)3}dbM;T5=ka%}^pkLP`ZC-Zvr zN?u$AGV>(QiZRde{#+6S?uEiXX|zb)P>~f%VPt+~S33WXFAE>nVYyD_eQ^5dfjRRX zciOTlr`Y)qE^%nPkO^1=5Tc$4@?VXNrY`5LM^-Ch%NS?gDD9qoy_(*g4dv+bzkR`J z!RkHTLvfi--W}#3kXif{80Qf;@1J2f?Zt=H=&ZiBu}q>!MAjuxsRNYee3fr;12BqX zcvFMyhCNV89ld~Smds9oMN(d@o$Bw;9(t7+6N-HVT@LlW6bgSG6sttFhT95*d3K2| z>q0C3KDe|g_R9p-OAU(%VD}^TQ8XuUgp!AwQy4=f3g;uM?BmqrrbXW|8$goI%xi&v z9E$bxgKKUUl*F&vRAn{fYSuo995W2kUv3V$E3i#umWO~FZ37NP|B$nzh69$tgV&DD zbN=uw5WDk}J9*Do&wxzT2hf=Ou{|IdJS@c{Z7kbaL>jAA!Rm_0hEXbbz)%3RB%7@V z2zO&brmPEX&$rPcZ7UBTcvU6GWD}SKMC5!-nrJvGPLet&_E4xDoH=0TvC*=1R>Rt9 zH>uz>)zK7_DHsm>aBg2mOm>Id@qvPE8fs*#or~lBzY8Pp90O6(3lvt5l zv%~wvZ%EPJ+?6X_W>*xNy6_?Vb!5-A3t8H_T)AP%(h+=xAI=tGz~0GEIB*K1*k`Jb3{T%>S|z8T{)azoZ?AIY>FuQ6URgx-ml$qbu)iUBhWW zO3PqF{Dc(IzI-mi5DM8ylMl46HpohDzLx)&$HKE?kYK}l<07k4e^>_DhZG8~bSM3@ zLsnXVNd3SQYx+o7m89kB3K5hG+ zByMVB6iX-&P~><=;sa8^>HFB*zv^{3L>L}Mz(?PE;0*D=Z@XC7o3CO6;o?gXDw@b9 zw^A?rtwHmUg7Z?zBM6Xk^zr#H{+&bG@fUWjAq$pJN+vs#N(d-ASnyF`pO?zx!bx)* zFpCLL(z&g@K8O>a(^mGKEt-2^7Tf+!XAIT2N^?~;KtU2?klZ2+M52RZQ6OPX&{TFyy<55_b~ll0g{xCZ!3; zDWs&dgjqo%fT9C=7pco3Q#CYFv$;|p(xX)Z4g5A#{B?F*B<)Z*=e^SfiHM^1_*g?# zCVLoXVkrLle@`X+grr}B{@oO`{#T?MeKK!xD9e#F1pryfqaMXF= z2Gv2i!GsjL+DwlB11(KLx*NHD*3Hbum<=jOkM|38!k3eo4F{&Ai&{20Wy{$j;?`<= z^A|LA+c*3B6|`QKjPBq`dh4=>cAaj17h(hUt1bKPZY;<<f>gVKik1A)d{c#0? zFp>`ovqxV?^NS}pwFb1RgAYsABvM+%v!vgpYO%+kGj@{jR3rK88B<4U#hpvg)Wuwa z2*W^QUKzZg-y;8%e%_=P7tEd9Yr18qY-@fpI4VED)ZulU0soLj7_3!O9|1jb&AY)aGDk`+fKi6ieDH(cedz0&pp#kfFQK9ThkO z`~+nioCI@=<3^N!oC1YsegZ~QpVUR-Av9zqvSSg&kA7h8pAItC2a$L$Ti^Ld)`wrh z?`m=?K{Tar){ToID#b=gIhuac_(5Q^nivIOUsdKjTJl4UDqZXij+~8^BONjj9QvGx zgE6=7qUrq!POVX(E3(S{2xlJ`?sUDf^SbXAD*+Q{BqlPqkMRX53gmI6F%@V_6!rxP zKUet!QeA}d-fn`GoR+|_h>W!oe_{V*zJPqAuV5Yut4T@^72x9VS}CDveIW8B@!Evk zTdU>MC^GAA(FEbwcbH0lT~)z<6`<^^PesM>wkh#y9b%U_(EP?!9%|< zr&5ss921?VBFd+b>H&q8az=b5Z@Hz^2&JXm0cXu@t{JZ-+nj!*92q{`Tc6;KuXKV` zWxP@aVeUif^#^Yj_XSKDUR*dn4@|uRYwLDl#@nIj@qAIt7S(PN6dn zYO%UV#kP&pe*3dXWXP7m!SSfm{l35NM11p72$?3o5ex}-E0vLg@0EF1O6l__UamNd zK0P5A7_muF1&&`rgv{;GYZ0Nu&GD_8J~V##+BuF8MS^oTtI2j+(-&7Hd^2cswLdHR`QgP44olaJ-7%GxSlIvVZB`gp`l(hHz4$I#X zIuKorAH9&{Z|n(znviRo*^rB@>8(5e-3@A^7U_>N*84}H*m3I)F*YBDFHp!V_vL60 z^m4m$Pt&K(pHK|gi$j$S_k~v{7J>FA&|`9r@UUO8z@WZu-A{ zW3nA^9Hbzu- z5g{dgEm=J~-#bTe31WvW4LCQUh!Rr&+Havd}P$7Sw%2Bh3wN=;k{3mejfP@G0uXZS{T1wuRKaou1@2L>+VjDKs-)Q5OCJ z6IZcJ+hZjV!0fjHlm3$L4DO>@mSa7iVG6GQ{&vPQ9XF&t!J>&&ORB415m3X&Uac$*)6|jNf%>+z6UWjStzW$ogm@{)B%& zYeAGbPNn>Q-zLfvh~Y$arC3L@y#ZcjLRZ^t*d6gQA8nG1$du)=4HM0O=>7qs-POBM z{C+X?<)(nC4u&h#dF)uacLb0D8F@C)*}SQl5t9Fls;xh)*ou_zD|}aCm-TsoNQX8E z6s;l??S@(fs%|Htl4t@`LN?3`DsS^saLOxR-sKP~$FPflIOE{Ix^A91L<%D!S8Kaw zC-MO30yX`bKR9@`dtfplq>*wgz-xxD2Aq9B6`kNW~^?d!B7T!?640F@bYG%?L@^b(XCKSg&i-6UVzZr58hplzVaU+ zHj~c%>^>q+vOD>##pVTqKsyePM3n~Tqu=mywT@?`kep?0gDP&do9E3Lp=D@o@X~Ey zYe6jQ-=oG{hs$`A zea#k!s8co?V>$^FQL_?!5CV~68=9nbZY$0U)HQomQw=gVO8HCzE05gULtLsJLVc>p z0Y%+c%*&B9u>@nS^$JIFhukO!O?e##WL_X@Z9(EkB?O9J1UoQ4KyM4Wt({J5G!@!5 zZK44GIstagZ1@v#?9{hyk5BA9TYBwBjdE7*C8l+*2RkRuY$TVPXmmFx$7|t+zGR_TqTx@|KWyK^)7QWyxS*1RbB^!xj z$SRg+HtO3}@>_5PmTSuZH^>LQ!!?rnNoB2>hT{aFpESesMsHhJT>;F<)~~C6TEuN; zZgqi)a~n~vuw|{dZGXGlB|<(YKmZpa&aP=@BjmcGM zv7L6p%_uyQ={1E=v^?QS7*b1h4W>WOCSf=OQbs4n6Y@&!X@e+{Bl`%wnk@QHW3) zJuX6E8}3}q#W;lz4Vh25!X+Khu~?0{A>qZEFidgm91vAPgz!~*v84@H0!!mp!0nR7(ExEpTyB>ECE zOReGX--4NJ*p)4W?F{GLiz!Q+GsEI)OTEtNG$44gEY-*-;T@MHSPXJ{8^)rI+syZWotq_jP5A3zy)p5_G;vo zur6%T%zfcQ4$WF0RDN|@5Rcjl&>=RO7+7V_NkoTntZh0{h!%`#QXy%=H8Z*u^Yc>bpX5?IYeg-#}R%%2YvAaEe4?JAeuYQL^G*(WSY z;#cju)sP}ex;uuv1R)jdPIxoL>kH6Sx3Sg(EAKZ^Tl6)HiUml@rG3+7ui!@hH`@3V zp=;$Fg~}d0LXIF6yU?FJF6gTByOyB`f%TP%?>#pZTh^G3kOc*fBJ^!N$B8EdaTDbn zMEjrrH3U^JN$KvGL)ET5E=Z+LH?=e0$&6-WISqy?Iec>S>`W9|l?kPQ?nuB5{2@6# zi+oHkyHY6xZ0E7crxC;SAUung{A6=s|0fkXXSuzhHb5uPx%lbc*;r&}Dd?on3DBx8wd*a}z%{Pl^x@2KS-=)JSAV*;7gzn)boJ|(a%imG1r>s?kV8vZH7 zf(iZ(Eeq#|6Anuc$Ih@%?{$o?Swqt!q~k0${8mMm2t`$c-j{ZP0k}Q-f=riU{3-?5 z-Bb^ZdB22?$&eS22L4zzgi+5U$FkZmunLb?;>GWT&+r412f1B{ZMKP24@m*1E=NA_ zW)Di`T4Xys9TdRo)7m$s)fkrYW7}haqR*=F)$L<0^wKweG#WFW+f&y8aEKtwy`O7(4x z>O|B0Z4QK?0paiO)zSyN--+@mFe6Qm%x}vaa?9z@0{>{EnB2!uU>cz_lstZtpw9grd}#9 z&NU-4O+B(KTyGAn5Wa2GBN_;w74~q6VRkskMl^wzAs&rI5+lM?X=y8$Zb&8RWA?-H zrtAn9-k)AmPttZK8PUo=)03}+I0$vF(rSLcw8of5YOEso9zNI{0_)c3hosiu*?wV8qNDCiOiCo`f<+tA29pk)4H_jrmY|=pHkLcMm?Z{-r)}qBDk}ds zl4L0nR&Fa>A_1>&?U&BZE0<49&Enk4urej$;~AXnC|&55gM!i3(ZNlrLr~ZGeE-zx zfNXKrv=p5yP?)6mkCEsvg56oUL0!->NA@X9@Y(1KMys<(*1aTwx~C3VA2XfAkFoo8 zw;o#p5D~25VUqfjPlR?M>erC`9x1jl`3KJe%xeDaknZ%bLs1%Hj{rs0AM}+R1`)f} zQlkPHEbR;9_shou(V7FXKn1y^gJJg+ydeabz`Jx@7*=#<2ZUP}-^mo8-|?Piwo;ah zl@Pau7eOPdadu-yISwl;=5@beVS2UOe+)#L7*TdH(W2GkoDeTG?+5(d62j3lIdM;<>yF(^hAl+q^?Hww>DcbEU1zw89n{ zhm3`15&#^hq@4#Y7dbwsE+VIJ>8Eov-26GzpR8&Yzuik=(Jy}NFq~4RMnH# zP%e#-QFJh*?cS+*Kjdp$6=5*AjXR}|?2#s*ylKqq_J)mcgdpQs5i zLF~kPcocIoXOc%ON@KzQ1(OcwS5tS?Ig3sxYv!zhPyArX41d~EoNLs%8R+2vnn6Km z2EkQQ#i_yRHQotZrNI%AN=!LPyhvMA2&=UOs0j zaNkuP*ggro){2U0^5UN=K@?LUebi`Hb(mR;OePqSsLMMz;O^VVW03JZjQlkQ<=4(>(WFFLQck>)`E_g9q>3$i^oSM)J$8MrtBGrNTGAoScO397Bd= zCJuFvwrP(l>DaLTqUhR#=1-`Q&v+f;zSY_W6v1Y6JO`R6`edvn zc=+>vwC#MhZr^q^mv9LwV~esx`4#AVFUc=rlq$MMIIa2l9a}mXhb+RZKs z8(yJChOS)wJfp%r!v9j0mjx6J+a>@M7X-`rA(YNJAl>G0+QR6mQ_zOAasGX(qZqrg zsx;m2rf{wgQQn>4PD={@NS;;?Va==}YFeJ4)I?-0Y82?-sbSeDW2zN`?O0xl-cN&FYEu@b!Y{d_$IqH8epGKU_YKQKq^PHP`hj4SYWaxyqM9_rE zEs@HRE`y>E$oP!ap^RV>lm8Xa&t7LitYPsuU{$a>;>83Ok=DD(29Eifag@rn^ML*u zTSuLsI6yw*vDlNFQ}Ox0H~-(Hx8%J-M|^d=)@~zBbBykL#s;JR-9FPxQjBA#PWh zXs~MmcAcG9mWp=$_sK&W@vI$R!l^;%>{48krR&ZWvGY-j ztik>;pP{HQrZHzEBq=#BE9r@I_vp5PMq+%IRfl`mFX8!W?kBZyRx&-6nBceSjwWHw znUI~y{a?x3_GDm(*6DKsM&i$5@RH=Ipb{-vW(-iK4hJP{#K%@DyD5kZq*2*|RuvdV zg7m?9>=_0@*DrTjPgD1&ASLo6b0n(R6hg5lzcBX~9V?QGGLC7dy9t2Q<X_HpudfX@d_?ltj)nWF?c^1$?(4GiyqBA>tU_X zBX#224zcCpTei2qQBYaFvrGfUDwd|JqMM*9zDi<#k5?rRHIO8)%3fNqT>@#b01v>T zNJRnxynB%WXBQk6m={z=TA^%vuhI+)-OB9-{PQ|O86`HBVq0@~MiVDm z$W^&N!{R+qD*(GU@+D5y?EhBh!x7QJt~bAIJunOAs`nG1UF!LD`Gc3axFUv-R^0sB zADsOfOq(jZvmorHmr*4v8A;ZKbOd2`gj{)l1GPfofWNh8-WnHc@$b-) z?-^@ha74ns-`J6$m*2spPbS}4-bxh&5(##aqiI(3f&L&zyj8Fo z;0AbgKkRe9BOsaufm&d0b2+uOi}+pZ7*WgNa8V437&YGm+=i`1uvlv0zMB6VSPfQcmtgQ~q+)s0p&UKDoQ?W(ZT&F|n1NO*->1ccgdR=Dhcp(3Tnzler~ zY2`}@!HkSIj}g{qO0_;_XS~Gzo+3e$qmnNTSeV%M`UXWPm@Lx!!+<<8dcuQcG~*GW zMFabDy;>x5(2PD59>E*byXq*Ti6f~{#64=;g&hlqeC68_M302 zQ5EB|bt!LKlU5|=Zi6lpwSxH;NY?L{kQz4Crt&LLDolEB!K*q?*U}K)XrjG?S0*}| zK^N}aA2Yz1OHtT;Q6XVjyJEAw%_7h2>cV&+MI5t4;(uxQ+BiuP^#=q(ElB9K<-}Ys zs~Fc#b?`-Jh{A!+r_CyJ|F2QfdK!9oKtm9UiZ)_}MBr8mK;KyPNErJN%MY#!=s2;o z1idc};h4=1OEzLVZ0Jk0`o#}@d_-O=PV=3cwJoH&Ub=~a`q%FOGXFw^?g~5p)sCZ7 zF0pw)ttcMN`iqMEHvbXfk6@zdGSeCA7dcb)g@JWDRLk{ouCU{-iIb7Sihk@!1YfvOiJ!@?2XiwREDDb_D>Gp@KU4ooL{SnLqNYAa2UW zsH-99NKiAR(S9Bn1nzS0sEN}-+vh*LujA{ROf&evKmIuPP`N=W+Xs7+%NchFI-w7#!u3I94GyDG(fbM>7-#1@vlJ9&I?O?l zr8>j1`H#19J5q{H?Te%qthHd&M=>DVR}}tM9)&&^ZVI;=low%?HfS5`NL0hnCqvp> zdK9P>L#Q|I{Cz?=gC4HgAF6HQ2*a?IMY=u64RH@!e2DKvaxPwa$Qudz-bo5iy}}dz z3;O{y`cWFU946qX9NgLiVDI8MMR zzbD~1UfyEpA)8j9Fo|-}#Wf6Upt`hoQD_}SNPM9>0I@X*IbB4s*>Sj?n=O~{O@{xR z=1egqQ9Jov_7{5k=?!(l5IPlM@a}v|Q}*CTU|N`%v%q6U+7gv!MuvVe-IKMWIB;4Q zUmAa-f(7nxz~a>=bqy&CVs}`VSt4-PZe|o4ojX9bV)1LIckP8S`LeBeiR18ykq9|5 z2F2i~=^PU2<&bL0GKJirFgkjbEVtZ%Qn*y#3fM@Jv zj45$*z;U*PNVEV6hP%%I&X=nKI$; zL?r|P5|jdg#Hl!ah5#&{x0G5nlX=M_Q+fOAia7wJb}y=17h>^hLM(G1$g*FCfPjiC zhD7OEw?X4>O5g!%;#<4^4SeiOdC;n>U{=gG>PQ9m!;+07;os1MENV0!D)Fir`c3jI z)q(7E={+wjjw1*-(MnZ!^*Z+luyEo+eiFLeW$@b1qQ0c|?r05W9T@P!0{JyZs@HB( zS#DLHz=Wo3-nIn8n3i(2FXn{NS+r?|T`oSfSTbfV+<2es1=G(@fq7u6R@$5ZvkxS{gBxiZ~<{=)t)Q(kcc)D!mg}RZD2GkU7tCpqJ zKwk5(F!@0rpVx-)fooDL25~iv`F$%l)u}1T2?SNBcD;V^YtCMMTbIQV4c#Gv! zqO%wrB0$Lr(iK(Qul{z{g=UEWYv?`fA^2n((~Ru4GdJ*6!k0$1H)= zs-czjBf9t}rp7I6}9wn7FN}a)IC4;jHR|L!@xak%7kf(@e zfGaTA0<$Kb+{0(dn%}V8dklrpfsL$H7ZIwwdTQMQK2bVj?8wKdNuoFv=VHD+x(YuG zux=T`to&o}a2hCup~OrR%?0KuYrv(5BCy;bFuy)S!&ZAz{lnAXb%Z!H0@Nma3$`w0 z<659d<`z)?FCf-gW8pUP4g7J;4xHJcZ+gZE{8&w8-z~B?ZSMA3FA<3C@`Q4@-=s;&rSWi(WXDNXqGi>8MCT3zHC^f28{GssFWLZ|Jpu$5e9@MEg zQ*P?S!vbJn6S%=gGTJXn;`VSdcdFE@APlVx=+Ey)X3#)g_2@TF9 zxkH?aM1#50905?-A&)^QmY~J&m`c8d3D};oQJ?zdPh8@yWD6tz4=E-+?c1!j z+G1b17`WnQ+;Aj=Xa>K>;_j1k~6U{X#y~zl;bn`LI4za;>rb{H}C2K|I0Nv`Ua+IcQRFgU(m%R ztG0>oTECuUbL(8+FWE#l5}P@y&9x`x=u_00&_~j`(>1xq9rjx-v7ZAt&Hl1g=26x- z-Y%NC?kVay#sS(K2@f=e#ZKY@Q*K4cz2hkt`=;^+czmhxIs<2m5wA=>xb_DoP6?Ii zvb{N)8TyUeftYCGvJ2WlhcEMeLs!RE=Vr%`4_?gb#$N~C?{@foJvKV`cSE#wJ?4MA zeF@u#q&u_Nd7un;ZzG;^b*W0YFieFP*BQe(9bhjC<~{RAb5G_*S!;)%<1i zsf#S2H~!DXCNUm6hVPmgLDr#yu`|44||R+`{Z~VUh^d>rxU@AU*5$syIdS&`oR#T z^JQ!;A#~``5Iz^=7GT3LeLbWO>xH2fFx7Vhr;OMC;-@;SopGEOF@mr6L8PtcbwSKz z_M6@jJ-%V3xYB4ft>$roT8cPecD1Q=G%a{v)AY{~OPg4IpRSl$=Y-fE`{7npHBP`m zJKu|_V;l;j@dWE;zi!%Mk-DF)TdV9>HU(9!gor~t^i=^tk6KCmEBE-s0M>o#Qyrb_ zR=taD8y?$F)h@+}h}4fu_3TYxFlBp_u(zBm)D?4jH7@?9u!;iSW9`X?zXc<{%DT1e zte)jQ#Vh8frnKM}o9SyQSqwm8qtK>wa&UqK^YV3t`E{mjwTuIC6Q9F~INCtRTamA{ z3VwR2?s)byR@}djS=e_DMw&?Xx|N<26L?|di7v0ENykDOX)7B$*_WKEP)y)^!HN)i z%$`xR9xTuzHB4o|680x=QP4z^ImPlPYBWN!!%n5h0iD2p{+YRzE7M^_7xvHN&;okFIw5mGK!#gmvnS!u5pNaBciyZ$dU!X-#%%O#8O2ly_keDPtkdaX&+tg3Syq@_kBeZ&IvX43X>WiLH8wKE=s%UKi#7DT zOJK9In-Y730SP^)yufaF0@Ja5#@su(&(LF8^$Wx%U!qxm!HQWTDa z)q#jlCPGzq(ZP2_ZYn>=hYOOd-9>eYJ$^|$f;Ldb_=RvRz^jW_lpmhh)qB>1ioJH zQ7*yV%`N&cR+-j!>QJOFH@?z`2GPRRSHjXyew<)&elV+T#!=(`Md3co*%**1uciR8 zWZg9lFQmxj*MsvpALxMC3Tg`V%!Du?k#reRB^Hsq#FWVr#k;qVI71v$;0IV3hbS1j z%I#l@LU@u5E>&dSg~7In!o$dg5iRw<4Am= zaI%kA)V659+I!tuyA`O(hpxmhJSq>l1P9UILZ5ub4Z!xfViQ1uzOltIg!xxIAj$fZ zDV2E%6xG%to{c1eKF`N%&at~LR`*OYv(;56KXEjzQ+_Bc*m=FIo?(xCqZAp_U4NWf zvB0B0D(~(H2Ob%ss73-;@@@hH$6-FH z()|$upmw7_8G9K+{Z2IeT)IZo=2c(!e;qI$9A*mHEF<9 zKU~jpKXfy8Mz{Vd?GZgI;|_HEv|Q_lkgm9nNhikAtU+fk4YopUh4(UaYD*g&C=?$C zpxG!L!(T&D(yiQ(C)Lop%(_~DU`0&lJq?F$1-JPTWB371P|rEte^QSmaRrwc4Mpq9 z{>Vr2JrHG0)VYE-4sOpkKcT7eRi_mC;F9Pg1P8`AtrV1E!qNC5J-f&4uPBkw+K8gl zFP&fpoQw}RIIsSrJ^LHxr8y$!(dU`c${vNR=on;T3LAWl%%W~}NsmGr+VVKV2?I2^dsC9f&)h6U2d!V^^lO~886$vwqI;Ky`OBKQHN z$D}oU;fEgNnU<)=4FI|jWz=&3X42*ZKY@C;&>~f*_QPf)H~VI&+n?JzRzVjc)OzoJ z%(g`Rv1LKT<~SWTc-t>O%meEpG+8S5ZANVUv>|UUdtZ%wsw#bABx-|CnV|0ai>8Ue7S(!c~UrDA{~46Bd;KN?Z~%SO>2mpq4A zXNgp*;R87mQx8@oTl}gjRWK z15$v)KoTt%4>?17;5c;816T3U#(qIfo~I&~WalDub0Wn;{sm8(mCDDGhv?4#^kA*D z8)18(gTxW$Cy>QuzJXXCacATRJD832k}{kV*I^KyC5ct zjP_laNIZOQki;;$cGLLM=|B(;w1#S9-9^*@UZsutB7rU@iW=*D$Lok4g?ev+Hi+Ea z#;rBdO-BaM$0z8K@@@&#+rnGsyL0)%+drd)Tm*FR(&+&>SGtd1gSTTX4KmKnA^kCC z1c{`*=DWFuKLyeM4tRC>>0y~$>M5Kqgd-@V9>4SeHG`TD2g~Sj>GdR2T;yko!fWeR zO!S2(B0tIFMWlw{Vo$c|{1)2;2Q-|53iOBR9HXyq9vWhJNu~UlF@$6T>@Y9@0Wzz$ zf{bgUzmI6pb<27$1{kLyI?u;C2Aig>DdL8Ln`4s@7U+|VN0k1nqn!x)YlZnPpPjlz z2?ZTbll_hCXE%NBdj^PzbgTt6#S0I)f)tHXK}Ca? zd5ojIbXvW3zyJT*Fyk+PfJq~6I@vo#nh;W&c&4|x8_xe%K7>-T3;UX+Dn|i9cHcqjQU%;c+0T7> zr3k6@7MpA51s&(b>@OnF54la*$Z1o<1-~OE0ZV(PWEdAstjvy*1N9cnV5;^5tOmvw zY?wrG#<+$inu7Pf>c5a!Gs@;XW_;4*HDOZ?1!(C|1X{BiHmg=pbO{i@;2y5lyV4p* zHM{J*c*DXSXP8?4ywU8v7a+{3#MJ3vxh|V+0z!S7+Mz@NnwOiR_pC#C;#+0CR9GkA zRMd!*kKH{yVM#vDPTt_BJj#M&!u-kVuPJz%YATI39LQY{Gwq7s(KiD_i7)7ot0aAq!KRnWWzJcm|5N5>pta!d62LalK!Y^eAJx_13 zp)dro4*|(dToPtjr{XS2?#QhY7KS0V{~+X*U_XS)EUk=>9eXhW@CEiIz;^^3U9QI^ za}HwwMgJOoRb#3dr0)Adkdf{pVeTMKZ4@g|Vj^i^vpez~XzUt(t}lkKM6j1m_Qz?i z5F>p7foiv0L4el`T?1%XwaieLpfE$bc#zsUwF1@Uc?QG*o8CvdZ-Z2a14zK*`C&f( z8|rOp!S6%JniQ&k@M9Y~{qIJOJDMH~Tw(nz+a)`$h^mW@tREYKJ-5?I;1|~ObUEcg z5MAG&5!>N)6Okd=r!J!*2Phjc(@`@myz-j8-sS^>`J(=1{ zEVbmQ8o$awMvu>#x6n;?;o-R#GAA4};mOxj%7wxZYKeFC`ZU@k+cR@>a@kwW@G-`< zy@Yfy7o%I;vxx{tanUGgAD@Ab5>P*B8kWPHlw#8mtBx3?w)ROeXtl3{D9KqDGw64L zV=3FH1kRak!2-N-QQgzFvTK0*T<@Lou?EXJk81hgZ20p3N)1PjkEJ(>N!g(1-J*r; z#W>Rw1E{W?U#=kGKq5G4=^q6$3u#J3J|I3r3Zm$m7`i#9g|mQ;SXBX16-~z*IV3Ol z_M|5kA&EQ>09?F=bPPCv2a1Ojd+`p(=2arMbMT!?d`nnv*V6zgq+2Yj58PE$AzfsL zzX4yPfim@{{giMG*c*+P;~IVZ_otOY@sCkU@)z*f!-G&Qp(IPt3+oYI9sBfL-LSO$ z;84L9d49&1{ns`g-DdllFl&*`Qb`b^0wfflW=*!{eKa5sp2$tnm*IeUMw2boat9=Z zr;sb&4X&lg@}Ums(`#GnQ#cxnDRnq06Lp&zFVk0j9vT%)`Bv{mJ&?Uw?WOi3e}mXMhGR zCq8jV)=}lI*D!lnJrD#g;r`s>vB3*nOSpHEZz)JT(7rr=Dv=w-ftG|;4G6H705oTf z8Q6*0=ai?M8p@qGruUlvTB8br*<(_hluyUJO5eFtB5fUap;Uu>O*R&U_g@AHWmXKo zntg&U#B00o4tskiY%JxziM@U3UfTb{>+wQ+o>c8a_%ra_U}_B_vzH$n=x9PSLD6TU zH$!~WKRAAE`;}Ot1g#lk`S06%1cErt%Rs?5c45xnitEY+#yxa!5z>DSI!;6JRhGUR z8Au9C@*P586ry;AYsKv-qhT~;rl+PUdhIWB{Lp&%6)`dh=_#YZs?O1q%aVOadK?m1 zdT9IDv6!>l@O+n*>VG8z{Er+QWfVLzD_hdqU4)rix^mNg=%|t|pOF<&!<7dM{1TML z!^1e--J|{0pkLTE?QLRb>0K z&%%W8c?@>{^%-xH)}lQELR@4ch`VZ!tpPxK zv(lORpgEm+54_f)bN@{nTc4TiO`%HDdkSVH#${Ymwwk?WVr>!U$H^GOyJx)fDDtQkKgArF{`DjNhsw~dn4ynHHCp6f_O2Yva_0&=1z+{ zzq|Xtu4w4OF*jOr%6$!R6!s1k2hvgT$eYJ*aW`7&7BIDGs10V~!PW6P3gK0NU{N1t zZZPT7=CVIOV289*f$@M0K)Ls<9F3Fs)pi`#o`8TDFQ(?D6=3*zw{hGn%8(+TV<&e| zg*CWSwYv<b$u-2b>>Gmv=kt&+Iv`*FhS@u&fKDsnbzCJ*zOr3xgKYGAylvjczMLz!l21=yPo{ zl$AWo0-=)Mp|j?tS1wKujk(f~uA>C)U|LLq&#uQ`S0n{EpS<-{_|GYcN65vWI%mWiCLW>2U=n=NA398NbFReS40ymNt&NKGjUnF3-DiP@3x0>0PsY(R=Yn`v0a z2#P@;L)ZiIP0PaCp4!P)B8r6`haHp$szuTpW73)5+97PY$MP zP(BjGbZ}cB@`^~ICVNHeQj6{58yIoTQU%o_h1w3bkc``eUsCf`o)#$_wEzcGPC@$= z9oNgOch^%dRg${vc1BQX%lCn1r8|r%&7ARQg(ru0l>1Pkm^{nvYeuPeEgWS!o8#BZ}BBRn1EQ^@KG!>8u=RpEo zuu;W&+Q84(;9PCJfHM-x;MLKsJYfCBQTI>?{RJ2@dB9E6{_%dwQmE-P*HWXphT&Jq z+fkX|g&+`KhFCpoqPabG21}|mT2~m8@n*SA%#J$*qzFB~xF>aJNXdf9%%$%K7WD1AoKB$#MTz2O=(syX3 zA+yy0TFgDQVPV)T=N4+l>cgK}8$Uq@Y=hz zd2Pi4(myi0iFb%06#$q8RvM*LE{?vmDVR6;U&q2n)#bF!vdAi=j_8xQ0m$Qp#l3Ub4wROMr!>g>K<+|7S79Y)hjHA#yEjXrUwZ zd8i`YLtk^^%C{~{)Q@9Mnw6ie{X4WjW?7LnB3x@@XGY+zDk+YQ$zLjAgeG&yj<&v1 z`UK2^ld(99(^6WJv^~eNa0HJ?ZcaWbjd_)EVltWcwYd+MTv}s}n7=v+QI?^#)i#`( zwUZ%l{hSka!mf#0Er~TqDca$M7zy_|5!1*NKhGARD?KGstorrlb>T&NQ~gkRn2Z<} z-`W(F-vQ|&q~@7cApAxp(@x(^9^nw<`=Rr2+q=07=VF(3*%gUf4;#NN=}oweN6s@D zR}Eh=z*PR4mSrBVKuirYfN7-}Zr33q{CV+BXDDlPrOKxALy=z;qmI(wt)q|;ZPk~t z(i%Dgi^P{R_UYPQCg?pDSapKapvBPsY6@2jRvlj)1^jJAsL)*0gLd!dZbvMQS6^jcWj+$ z70ptG!g@c!OOYo7G(8%48$KaYuh95ox#|7LHDWz};~QkrSm0+GXqj+5S{g`}l`L%8 z1>m9UaR5zri}PZt7!J8`5~)~0l$^S$A7kpN-tWWI8Ef$GBp?ljZ{Sp9pC!@F)2hF< z1avP+_Q+W{SS1c7T*z_qe&uZEODEchMnTlUZF#?qe3n)TJ*?Xl32-gC)=zAS&p5YzpOouq9|J9}O(7T-?`2+8diTZ(G=bFo( z!9<5({#1(H^{AJVu)^KY-m|kax`^|Ci=e{7&QD}P=2lbgmzr3@v>ASRIj-W`>j@+e zxG{toXpFol0Of0{h40H*{T8C8SkYvAy0lmSRb6!mZJ& z^S%>|eI}+#7?CP{%vxb~Y6InTnN~V;%W^;L%a+0bVEx~i^UDx@%A}i#$K_fdC3L%x zPYOiuc{O)cmAOKR203!mp$J5t2&jmw7ucQvAXytZpaST5B%gY|%a{)sY_>>6vGKG? zHR*+xSGKL)v4^2H5_f}U=Id;xIsg*E&Y}*EgI=nxz{BiJanP#^k?6m_lbkRc8C?k~`2-qN3&WeGK92$> z-z1{4H3qVyA&3fF1{NdV4&Jlo>HAU$ch14HtUg@eVSO=L_B=vsw1w%zhv6%teC+8H zbjXC|Jd8jy(%VPfCAjV3>lCk>Yp3cx^Gh%$N_zX05-!w?J(EJ;kJyPcN3;ocV2CNtsfSeJB14 zo9f*N0feKv7)$fX!;g5Q2FajOKdA2myo#Af0J#NJvMOa}`#(bj#u+mOt%wmzG%i|o zLUyC7b5j`HG@E5zzg?98O^+v`l8t>duc?dl7CgVt_4CFihn6c#E`H>O{CX1yqCOd)!SY1oY{IjT@Fc_rQ#F zT37=v%N84mgWZKaR--8Ux3(=$KetjkVRln+ItCq*;DndLqN|ca(#VcTfPq77^qdSE z0h+-RZRI%mgbbhrf#j!4;z4%?%W2=Mj@sUXy06s`Xfo8?4c#e4!Z2r^-8H3UO(*Ia(rGx%Tb*P{9-x1-9) z3Fm)1&q*V;HswLGA`oM)rreWk-FYG*hx*irF(g}q#^bwK$07pY>xEVcoi1^>LrQtN zw8%CDUtzb7YBC64{!Nl*FOA9aFvZwOy@pw==g!`l?U@oO94so>g)*absLvP#GwnF? z5# z`^?Pkk@I*f06dBj|0p*O+p_9BG`}@U8(J!v*5E+cgZe)pkF_UOq+Egu1o3jO?X}II z_&9R-|2mw=8_drE(7EN69@Ik$>s5F+JQy1}zdRyIB>ex9HV@JuKU?5u+9xF@m0ClP zw{F=wZpfedHh-PcFtt}HyT>@s(bqwQu`Deg#|`sArJp?V)!P?v(Y3SUI$`J06-Uq9Kp}rqX+j71 zFbxWC2VzG~5h`%4pXPXj(^l$UF_;*2L%O(<*I$gOGQvz+9t$?dDhK8180 zK5}^6Z%Myp5@|T`^h31UJ`8ly_EQn*CmJ|DYRGVlR+UHWCXBVHY+(|hVFV7`pOtCp zE!*8jGq(6-Ogrjp7+LEpaUNyUvCiRnF|B7zIGS4E-N*Y7l`q3k=-;9}1Q=NrY$*v( zCWZ^LP1NF1=w?LyS{=ijjTqOw%TDhdi)^iJ?hJL|Gv&*$QTC|cY;KM~oXGrWa9J8B zO0Ne!upKV~%i$vF-)hm@^_N=1vSG!bTZAWgA@9^ac+b+em7|Vfn%JXvCpQ+QYKL`c zAfoN9cH$#zyO8M!82hccZ+(#4T*-egXstCHcxCZ5TU>$dx54K>i)uD52uwlK;({_2 zTBnRgXv=uoLGFnO5C2omVcm$ChOe!ehF;0;ahi6?#Gt#ypQdlV_^?3+H~cO+uCSWSFdt zo`l9FQgezTOB`VRQ_25{HwU@~DSCgLG<8Z34#h?nNMsPB zGagj7+k7-V;$3}$9~=Y0BOnTLbqx(kFoQXi_lFrSrC#vigI2Ph?-`E5xW##&!kMx2l`89b z5lm4)ZQkLrF~NE1v>1!@f$tox?sFDAi4I>GcY^oF8X`~6<*|4Kv!?0<**^@N#Z>pA z(Pgdgi@2NCs86TS_a(4WPwdg%#jiHI23Ve^C`6uI8vCK>Dd@%h$m)>-2EpV}U7prh zkn*=;6(*i|XcJG+NPCat6t^p)xpjr)Qo{NY-NDR$!T38$v2kDVrZ^D$2 z9)iqYT8Z=0vqg;5NIfY1ZD?eHa7pv30#14NlP=O>_nBBF2AgZL)Ba)-9 zb-6&5Wc-EGN?*m5oQn6|?=z8INRIx@c|gw{*F9K_?@BOKDAj`IU5S3kzMZGF7TDE< zC&_V~+<1}pY9njT0OI=j76C2aO7>1a+ko1SYyKpg2&+u*pE#ROEAgN4H@SwqkoL=< z@qW^#M1s+wEco69Rlfr`L~WN)MCoFZeTNOHkJc zsL2TO)kO^&V9aAKd>s%b13>QBMJPZbs${gM2NLlVT>Qi>Y&`fuR_mlLHq9JIg+u@p z!^luDyJ{Du%uk)Oz~3XQgfB&Oj8if67=yRX_(D)LODD7&?<7T|hPQ>;?7Ot1<^r(_ ze3+-#c!jm^Y%}FPJ4=(a@6zw*_cq~(_xT)}1=n@h2Ab!=VW-4VDh>9eWm64X4P3YWp)xou^+UC@OI6f9v1QAwi8-S6M4Lsf z31l2e;}ANe&oxr6@jQU7l4Uc|GNDrE7(6%_gch7USUPbaLR8J?B8J7{UkZ-OJsssu z==TK#Y6o#~ZCzj928jLrqH zp_`}@pA$}MYM%6?og~XRM#Fb@meXK&96KA-QHX5vv59IG7;9iH8F9ft`_{N;rx%%3 zs)b?yw;-d=3o2u&6pw$SM5y+LZnf(RvFq^ob?G&D@aNK8yV2XDSk54>cID;Z^nF$9 zgdSU!Lja_+-h~Fe%!9m0^VU3COa*KCk01zb#o;(ead)`O3(9XIKJWZ^aMKN?QGg-n z!u7DdKx>WM0w^aDZyf5WEl!F-zDk;RZMjVyj;)CxFeelf69&6P(-aQZ_{yvE)Re=G zY|R_-zTJ}0q$Oj4fM|Gvjtl6aHHXfzsne1RIV}x6Zw#o@`eO2Yp*U>Oet9*}or!P^ zNuA*j$rBRrc`VM-6xr3O&QZLA;2y#+p76&wE@UxSQz9R&0U*214J?as0Uqrk+POhmc|3Et!^NRYtc=DgVMR zw!}YA2ZujZvp1DfNGI={%eJ>()Ygh5Upwx`IpeK-M%@t8rV|ks*>Odry#rijZDco~qG8`I>$T*8K@f=yWa$t|GoztekwzS;gspzLVd1 zd!eIN5_3C=9_^8*b%Z~$__ibu_Bu~3NVxb#ri`3A%X&rphF?cTM3uFSm3Y9fnE}pH z{drIy)HB7TbZ_ZThNp>*%M-j?Y@~Q2=7KN85rEwkGbZ;D*Ejze8u0wQGvwzTWuLnm zBUb13?M5>bw@q!{Xo#1A130wqBB6txq#(t+pAo zPz;l-cVv$)wj*@UUg!ol+UuX>67QS2=&Zq5MzKLEgl*WvD=>pL-d$FZ&}qfMnF4gZ09 z?e`-v6e+sQ+~7+#fnQr{plv{Fikwsn#$#LT*9v=$(U8-p=l-f&Oc*lGv&(YD1+HKO zx{>hDg=IA7cQF+k)F@XALCGn9+mKqvIs5w6l>@`)g&ua6gh86;K zA*TXpxEpgowGXBv6stlFSb zewSv=$33;h2JAJbx97(BrQA9qHKv}IrD|roXolQkg7VnWw zcmN&PCzk4BHrd%y!8iDv&<3ITl2^TyjucUC0vc+_=R20W_#;+?Cambt{G=b6|EtjPA!dWN23~&CM~OJ!Y#?^SlrW#~ zcA2yi|1;xa=H%pR~cTp8DH_XcP}ugEk2o%(Cnizi(RZH$B{i)PL*jk>-QXb%NZoTT5K zcFCRO)=|aR`F`82sP|$SeBy)(xqVYbz!)Rhg(mUT(hU#heyVk9TjFgg@-g8OyuUO;8gGUb0!=`zk`Q=v=S(TgzpV{e$ zLxf54ozNtyo5WbaVR=J|<;aIp>Iud7?$m)gJn`hmrwO;;z)kuKqJ?aX@OYM2Ns?e zL%+H0ahw0Q$T6dI3)2t#hGmxF&rUVZ+ycqWxA{677{@x4)9k5}tRwG5IXwFcfQ(M$ z^nx7~^1I`&!l4Yui|oOk0^iE??r83~#WR$egoIu!|4VCS8`zI6zYjez3;a3d#Uqib zQGaCxS86RONouKO&6}7adW^3s$lq=JK&(`2V&4N;_7yA$+@911f{?yCO zFoSA?Ol{Ivd)-zViscT!R|H{x2E^&7@G^SR`)w`txsF||L;ynToC(txj8EBh7Lds#ge+e5-y5CuP;(S4Wk|*}LEuVQd57MHp z1IA~Vpe*~s-+heSChRWP6VS5EZhDzC=_S0# zh=J-EEX9D%z>pmv8%g*rJkXURIJVqAJbClNbM2tJ^v}Fg@G+2rT2{gNYxGo_?prDB z9{T=P2f+q@H}5ibQEG6pQ$0|h4?YMF6Sd$m7VKU#jfrfM_cD`Zl#zpABsABz1fZVY zf!5UeY)VkXj$EzSL$?8qO7CYT3#43Qk>8nI2+uGrGZqS=0)3D=%j5aAu<<@@2qZ#P zr4RaC!6~)YUs*V_`Va(2#BBvtXzi*x1&N589Hzri#7$=~4vF#8=7!#kqOl{SP3C-_m;qtO zNXg3!8rjnLUd!i{Z7I=1mnCpWHLo6)?pik;x<;yC`oc)ho0{7uCp+Jz)!1@X#Irq;1(gnddH6K;zjTg8FTMuH4Ru6=a+5$j-j8M*0ctP1yu;*4r#QIEW^0 zhbu_;N`xBPavFKdJd{WxdU6u<#qWU!mS2K8~L z8w@ry8F=%xSMEvP?3`d#=L&jhB%+a}H@NtUleb6;Y1dhq;iRVAnxPM4&%k%qJ{KHo ztoa~`WJ-8*#_d-riQg>NITsT%zu(b53Aag>&y`$f9;Unh0miz!cS0|rNQsmP2F@X5a1m*J z$ucu#-r}~Lgw4AnX1#J1mi3wv{E&oplz3yv^-4IIK2F=&W-UVw0GqxD{KUG3L=fG; z;=n6Otwp0jF5`x~%?$=@|FYWU7b#^D&*+Mw%-_qNt%fu&wKVj6Ko`(aq0Uyw5vNP@ zcl@neP0kS}JZ{(X^^jM)`u;2VJ+LxdhcXBaEb7AI#P{iV$6MV0wq5~Wyk0gGfhsFq z(1kkPe-Wqt9FAUyHa!J$uCjgL5t?pbm^Zrv!_J;@Ap30%nz{Qv@|ZyQgd{O+{#uHj zW{&_%m2DOBNTWBRKpFvnET4gS2miOv zRQsnB=&JlmcEmYyf=rxBi!dHtbr8DW$w*n#31qCdSk>7URe5`3iVRSXo}HhLo3U)#GSf~<=VCt z`~>~|V(Rmu1UCs~a9ROH{`Z?_Jha2se3L}$>=FRB!Y;ZyM(2`<@33;J`A3fY)didZ zC>0`0`m)t<8E#=_4r~{;@+zDmuO8tNvV@UXEUZ=b5k@+VrU34f`er90mcV=e!T@DN z(nCx4rS&udOJTQj#TrEY>b6@lM3`EEM>}zT6D3_i;&AwiA__ zA638zY}@9c?66jws4_R|CuBt3Ozp288}0tWfPK3gCEk`421WVslAct&ZzLlt2N)oxL4_ZDhQK(=S z%7$|)gRldHrmak_HxD-;&SCL$JCJ!#Hv!#Cf<>0#;<5^T_xnlRPdp`$Yb2Ym-o@xL z#mV6|s^6wB#Xc=?))FJe8w`fk1t%O4rhgR^7`&ZXJEP$OPsh*dQN@UP4&DbBKMyZ% zV1~W_MJpa-X7;jIkeIB{95!uf<)4{z=<}kSzVvI+N>Fo0lq8F4Zw7a`@w7w3z^(cH z=OKzOX#|j6xh*OONCo~>$05mNe95X^*YXMb zwXI>uUKtq>1lr*B9D&S-2fb4-A6z9IePl5Ui(1WDPHGC-Wrp9-_@PP`nBOHZN2Gl~ z_wHb4N-+xnL4Qj0$PLr2qtvQFIiQh}5hF3GDm(=YAhD|`@7ik`8i`1Y+r zlw%vicli!92D-c*mS?|%;%%uo#Qw^?c#S%S*hLHC{)Ar*n}Vk}EiAO^``Q;@ z$i_kN&;-ZVZKDG{Pz|GWwN%jFu$R7uradA>?EVR!S4FT=j&{iYDt&P6*S%n$ViV0u zO+kx)Nbl}=+zZlN)?WwL@^fTDAQB!qSo@y1SN50S*r!CnL(FMM1UjC34I@M(*4mV2 zA7%Ze6<=eI5dJ`4H~4>5%{nV$4@4fw^O#1v|A@z>Op_FOCKVrC>f6-cxVJVG96Nir zXW<=ubm|uFf1e=t4@WOzE33lpzTroL5D{3ydYC(&~E? zKYo;G)5}QLd2R=JIQGp|?8Ma+H9r&YF>kK&hW7T4?#xTM7+Mrw#wtFRpR2GWkFUy| zJrXC(L>aMWY7~QF&8B-4mpMUtowOMuRay)LGEml%$)>Rj+i!}A1?@g8h?y7NdS4tNbFV?fSV$FFT6X*^kcGZ#mC zVH#qV7lw~+9?0*2q6vYe4pr1v4seSg?qIt6@wOEo?}1#BD*jGh8a1 zt?v=yg7~vpwu+EfVIqwF5Jeyi;WMOy&ZmH`4 zGKyMuhdXp?H!C0X z$zE~*$#qiNPwalg3@WXc&9}+%cf1c4ubOq?F7eXLaGqu3{nqM^J(nqW7)&`k7o@%; zQAuBBsqmN3w{%p%YBFAz{Xp)*u$bxpIbfRw|3V5?wM~HdN;FmU zYQfo|wa)SDUTD15bFk37P{thSQ#lG{7Ie-gMOW|T{GH|5((q+a%gUO~A;km0acB$6|2 zLG4~=Fi`rTEhk+RXxImHj>_T!K6NKY2}shq&*VL=a2=sAv1aqb`srplm$#YFEy(oG zDM4lmkRFgl98%6X((v(WM#d;1ffM^Vx zja>xFMg<=gcYihIHd_zhf=$S|Dq5V&07Q=(ca|x8C62|d()UJ0=yQ<%EYZfz(5mqn zB6F6Jm8=L)VO(BfUN=GSMt`?1f?0^q|2ABxgbc(Zq^5b!yRrfsW>%E|^Ev$}odvE6 zZfCaQ6Z=?_3atA7(dGtiBD0fR+^!|Yo@lak57J=HRucO0L+5@S#aQf8=KQruxs`6=NLZh0)Yv?{s2&JK@T-b6sRuulxz!ethLA1cQP zEZ;x|0Ub;-i5GkM4iE?`<3vn)L{9QheNT_>PZBnsCx}X2Scdz@taxW)Eqhm6( zPsCFpjxPRhQHNhdTwf;O!ZSv+Ft{c$A80?oxw%DZ487mhnOKv}YN8H@I?GSPYn5&8 zk~hYNrTr--`4L!xI|gdR&%C+vh&Z?*^CgOa)V?e+XOP=dsW4|=XYid zT5mxquN4g}c$*u45ikH}{ykf2aB)9fd>lCo0Q=RV%dp8|giioH5g1&t1a7M~nW%l? ziZRE0xS<7`ZzTUykZ6cC4!SWu~hJdAc zmqEjjx#oc3m_^H+7P%71e}bV(u#eE#Z`}kf2JQ-lh}l}?_4#kGDleuJAtTi9ht@JK zt@qH`b0;<=^~`Lq0`ZI#7qnC8&T;L5C@s3BzUSrlsEfmS8qH4v6pL-TroF<H{ru7iDYS8W?LhR}V7}{O$)p)7t^TMF0K-2kEi1dte)!2S0^e zBbM%=N0padB89V(bQXt?ADK;sH}j>SXwdp}#y+IMD@3tAe}!)wKZ01XAx-+lAy0@@ z-8*_;I!SQW(;eVC`BP8&SxpVph^4S$w&SiUA=Rurte8cEH^;6$l{%)U2sKf!wj@x8 zK8&^}`w8N3jI?zby-;Sz8C9drjniN5ny#KyVv`$3&jB4RZ;xZ5jDVlLtn9H|Md+Ss z$cLHAqfum1Gm`LoxeY02veUrBzHy+gK8vT#)#lrNr^&&|hFLkCx|%~^kLa}z3NiL! z(SqTxPaUxV{s)BH&{p{|S;@wa6EG_AA=Wb40?EoE@L{t#(gB{^z_*OlUyAB)tt5SAfQ+-eRL7DB845?IlFt_J=%ts+7mEDDRqhJ6lVl75(mN0Zbz;;397npYBBG4u0r z3u|K;-rE!H=%Udyq+^sq47U$a8PTq&%4y{h9_gK1I-Q9ZNj?i5ccv1sJnWDSVsENR zVaw*qwe9m0Qx~8kvt0zx-eElTDT;T6xN#dDlAs6mQA5k)iUVG6)$DaVbB<%cX;%)L^`x2~l#J??Ky$1c$R5#W7pLft) zCsy$k!L}570GXwLKE*K*ceAnzXJpLx?IQfToaX|F|3A0B#V`aX!x0^;{w*%rn3S`o zNkAo-BzsoTC~Lp#=V_7$HgSinKKGG;wid<<~LsAFRbF6fnljUDiA?#34w3^QVEOWTWCtvtL5xmj!?s!b*-i?dID2R~%hbt=sYPHx&}{rUT1xS}#Dl8qyF z{7qdwQ_g5?4mE5yumc?$doJlzQB#uBTcxtPJb&%mpTE1u1u@P0=Ya;ZTuiNtFX(-R z+BRhY8UH>M{#0YAfpjn1sUlSJRxsGB>8eBm)mI_UI=JN51>ZDN_ON|GyTNlht&-pi zjCO-SM0z_?TNLZZvH5h064i=ztLhWRh}Hnky73ln(f<2XhZQm&P0Q#0)gcu*{|L_Q zW4cwALJGEshFn#NDWe@eoWGBhl6tG9D|jxxy8g{|6g3@n%uj)-(qu6P z|5MLxS(A5EzJbsEj1Yx@iQ&m1G@p7IL-GlG;7$E7WkDafHA+Vp&=c#AfJe0M|7L6N zF@oMn2UAu^?U6f}WMF{Av}FgKR}655(+$SwX$}ISLRp_jkrb@JBFdWNH6zu)z9E;0 z+?HsDpX71G{$^b;gLH`a_q}B}YXb2T)9oH=m|T4E*Jik4{UQlfAa-1^+K^-f3BJN% zY2|Gd7{egkZ4=7X#V%6`D%-vr?qj(&$dZDzZfZsvOhEg(q!lVvOdlWr^63Q#54$p{ zTmzO(ZwrhNs_{GTng2&bO#Vf%^37&o7ezZHvP@HQ>lFBR9Ec!(>fw?`yi6w7u0h)W2;{ZGM= z?2VVQYxC5?j2hMsd-9Ge15*r%s5^4XIP_vO)3d3)iwLY#jA z&6B2t?I{qEMqaZ3b>lQkK?Qg_7!z81fIVH55w6)DVi~yEAQA!tbYJ;)Ci;YI&1k$Y zIl9yAyPUZVeS`=W{_ePa=H^PM0{kYpc9HJy6Hqi?VmMkhTGdF@&BDIyOX!0|M;@lM zXK#SO0{dLi)xy1<-cI8fKwinF=rM5YiF>-xwJzTHi6TtC zB)*Xdt1!#isx1GhZ8~fT^%jVxf^`m@fbJ<{T=!7{Qw-ef+0h)IJsYt#8hZ2ybT53W zZK@6(dZqLmPx`5}8clOyVc!F9zt4KvnUt!^5zmPRnW+D*B<2r16nw*srFf7#GOf7AclU^%Kiem_rU*vE;?Kkgfq&hP5E@Ah?wWU*>coKo z{_+l0SaP2ScXLq6`{(F`DZSC_Skso#ppmgy$#LA>ge;@tei$0qj zV|fa=J58HH(rO0|mhYTiqvZM|#5WY8M_MsT2M1YPW7I{YU2yJkX}+#uy0|@Y)%NTN zxWM+WG1uLkDUTLQHw0yWzWsDay8v>3WH7)_LMnGEHtwG?85d(>yky@AaC);S>E{E| zzw7CY(a$HR&)=``uXuQ(f<-BZma{SzN>2BPvY;r7gmRX3<_IjVo@OmaxTo&?#{Be$ zpAYq>Zb#;I?WKe9?svy0A;Kl9fUNyYk{3kGeYZ+>)J+ru1LstZiu$G7Lisa04ww zP8Ff&MtN+y1Q%}eq=+dA&x;kj${aXI!^$wte4+f{Nv3neTQE=YduWhMlUg5QMkVt! zYYc>3XUH{+vQY#`$5G(kC6i%5`|S;NkkHmqzNT}GgvD)ymnpIr8;o;j2VaKVe=gIT zJHt%wJ z;F*G6-{f;|nWNQN`nWxHR59SaD*?I@OKj2CBT2K~C-%4T6@NX`NkM+gqV<1&o+QBc zmcx#!l7JsuEOz9_2K)k6QAGzLfUIxvZGOEXU3&I5TU@X6_IIqTps6CJGTN-w9FHPO zh2Dw=Sf?!0Z5$og#nj&u$^i6zEbEp=ydHP+(tX&Wf9C~;xfoVK5_E0}MOOk-*y(tp z3MF&%@WpH4+~2CkhL`TVh_Jwz0#vctkuqmCY3IjNCZpP~TlcW#$G!Dc;hnKDMXiD{ z9X6xy#k1#?)hC|xbYHRC3) zWHo3+>nKmgo@)8unczh-BQb2rU8`i@@r-8mT^X~ zjg134MaZb4x_$;fqydXQ{zGe3c*LJMurWNW%U?!x4!u68-g9B}5gw^vqhl5l}J^gvN)<4O%Y%+{MCZ|^yH=yr?RbqCUT+w$vweQ;3*X?O6hg)P1EZ5$jRB)Z{ z@($oDk8R$3Gq(NzrerZ0K>KI;KuDq(BZrm3h2|;6Hr*ddPLE+_^f!u_>tWY zv(Ch7_%z(F(BeC|{bR4<{vJb1Nd4BUM9RffF}uikoXEYhU$NnnuYSXiltd57PA6Pf z|F>Uru5^U-MS;|U7(rPt*mzD9`jYwqpYIE%QPsgFsV!oqQBNP-C7LhtjNtdXW~IKc zs-5AfH1juIz>_ksq%u06JJhTU9K)o2aws(X@0^%(0@)%$AjzGi6Lk;8uqss2z3P`{ zGf7yKA3>_-RY_hN{cIGygH{@g#YIGEI!LoO2 zw-yfPU5aY_*BLr$c4IvtG-l$P{x5Mi8f!e^B7GgU#mpYCJ1=#H8hNAvI;zo#bK~&> zC_B;vpuY)4rNg_ns!&m93?5Rj8XH{{F?)5F>D{3W0M-z&9b$JHRMEyeCGRj0;RDT; zxZh**un|ZM`G{q4WNX7BF`isvzp5c_DDpUgNLYD!Fa}{*sd;BoM;LBetvjKO+xMFK zvY<^6dOh1_a6E|(V2+`Zi~Fzcyp0u~0PpXVyUhBBA4Z5_=tIsVnPflt`T7zXAO)-F z&vuM;K8h8waQ=3p-k0e)ZeM~Mm*AVy>tCKjDr9^$5wOCOCTK%5I+PayXpgLRJzlqA zA{W&unNPh*l#Yf129Z|fLkUbm{Wu9R3~Ehd$%7A!0!3HH- zI;ruZWWXir+`=C4B?AgKfb*RFq-L!PbpNSF^&?iwO6qHH7DM_Ue5Y)6WQ9)qT2ay6 z(H+Ruiktf7T=`zZ1^`P1*{P1!h_TtDqfIp_V7HZ^myvjvsq6QBdV~MQ?c0(Qnwyte zJJ>N%=a#tj6p9+%10VE#ss|trmi4}PkYe)$rw})b)6u^#W=04djz^``M>n+KJ+8Fm zdG3@#MV0~O@ur%UG)_?bzvj7EN{i7n2CW^zC>6LsQxGN3^0kgZLq0iav6w)_vx2s5_Kaq+K_R=i~9A4YD+jkm-($I z`h5N&!xmgPe_D_Q-4bc@C_Ics5LAGnyENN|zmX*R7*9(>Cwn2OPUo?Z_mC#eQCALp zN+NN&tNE1!`;>aX^zr)w*-Uwh3OZ$02cbivM)(e*NPZU04oCo`GC6_m9 z4ETUUW@2&`my#+AKuXL4l4BzBV(7Of;pkvW<0aq1KE@8Q=J0{98u8SJ;TUUMSC%)0 z8~i@*1T`n1F-v!?7866c$UE`0yJXxA8hV@qRa!16M()zlf{E90DsyFb45V-#7k2+7 zN_X5)-wEu_mseg!+L6npZ;N_Q)GahT>y2QwV z%6>GRBZ}ePMY&N<0EUU#wA@N8+FHWJfs$LC8YaYVJ2J-yBitRyrA$Mh<6IULh8Ug< zjr_OZ2I3w@D&x6et6-B14adBL3Lg2fF!3t9q!_CS5B?|anJq4II)|5H1Y9@fGHX9B z!sm@M)D|Qo3_+gy6LZ*Y#pNH>8WeTeIR3}4S>tC7wbW7hl*%O6hPqs^O6)fb)UJ z0Mp5=TkW*}4NBf>DcV2oM3@*mne3AhucA9sJ~H(0EGGl8?L<=r?D~U zr>uDyI(DNcS{22g*Y_{2CyIT22h7q2tm;}oAw;JEU^={xiTXc) z|A-7|=~8r?;PER1)*;oX?S5NWSA(_ku77XJF(Q{{|>|-7!wn(2SOEY zi0fb0Q$3}wfFL36F2}~bI%q$~wYnpbx>o<*mS((>(iIZxss};WY9gu>e)oVFGw=s@ z{Hu#>{49d&2$PP%EjmUIo|C5Vme%AqFJHQ4*+MID6LT=@<=t4xowsC16@>kixTeS4 ze2=ocGd(#Vm}Uga8#&eS1Z*x@Yt+^O?ucY4sa;1*Vo8?J#FCuk$Z|ML2fUDJEkdDx z{}qe?Ll#5 zSob5bO6m!qy5VELez0d?a|tpfhi@Ij^&Z&~NjG_Gt_(M;mbi{28{AeT4&uSW)`Igf zM_oDx^g(0Q`A8rpFn1GDLMBQj<8oK}3jk!WVS5>v= z;K604FKY=-$o?6iG$NdfhwERp1c=vF?YrD+?s72P_YmV0h zcvhz7@IJxX%#`E5Ap6Z(7>VFwY^pX-@sihW)G9eG^}1OhR?D<2@D)#A4bX>nzjQ`J zv%3@i9KDe%02Erqg^o(HM!)5!N=&ombI)|q$h0-5=fBbBQHt}FRrg(Dg z=%+l`nvp~Q1*(vk<`KktnF~PFzp%Z%mRX8h^`kP9%x7AO^--Fua>wS{WZ9dYG@Z4m zO2=#eDu$5Z5WuH}ocydbcbwMp@$R7s4uB$ALR`imss5NMB{@v%(K8n^lj4x%dTPu7 z%%o8Eo$g5U9t<(6qg2%vrK4*f$B1yCv$`FHRicb;BD3jZcBpkj;QFwf&W9>fdJkJS zlY%$EZk>`Juf#QA{TauG2O89f|1*xGq}Y*1kNYDYSyE>+J8LeO4p{Sf2i-ym(DpB6|w#flSole6`@x@-rP#q`YG#Q*6jnO4l%op&a9SAW7=LaGLAng}t_+Vpq|&(d;>8als2>0G9c8o>#n^Yj)x$1=_?6Qn$3 zdGN7A#?+`c`1XEbKDqL~p~B8lL2MA!qWJ%n#fX_<;hI2)_MZGx<+^xwj%P;8cIVOD zJ&rB6!$UFSUSP(~X%dp(2#Mw1vSJ^KLM|)O99NS~6Op)-hE09V`3?sb%T%f1Mv~9* z0;=z2yFx{BIH%L;t0ST8@q_7z%n$qDoU{c7D0LOUsFt!a8Z*n3}X%^Ie9g2;2;5|4Z=r5UQF zoq7tYCFCSl<#V!LP+%V(Gp6*Tl8H%L>L@PJUwK_(kT!ce31v+GbTlOa%Qc61O9;yW zu_P}~DwE|m&JmD3UXHBx_!rcgNxV}+l8G3Y6fX`Zl>l#~{mt#0Kp8E0ba~Sr0yp`t zKt@}bgmohkj*=Rh*8mcMX>kF22-*Bn1c#ZOfutJ%c85klJpK?75gz4=yki$VF+Jd zamSls0P*+VqfOm7&cZ&L9aC7KYz6$Zcj~FBI11v zj#-I~c0_ES`y7Twa4SzZHcLJpKXiWQ)CzRkqHB~!w|kop6>wiNpj#(+cp2NCG{(Kv zl?rdz7ik!a+ZDRRc8G}egN+fo9rOScGKi`CEjY93TUW#t*K~_&SO|?x`>Mlc;rj6D zS-dXF*mTrNZQcAAwHMj?7C7O+3+Ro1oo0u8pMokNH|=vXW*t*|mR8_$Fps+-+Ge7U z1LF^vEPgN9KMyNi^}_X@mSEwIj(;0*pe(OZc6zXHIhRe(FJZwx&?~S6hnqigLA7{= z`m$~$Wd7D}PtFdzW4*vOV_}QmI{!Pb0~$EFA^^w+wygc!es+Jo+V9sc!JNN8g4ISN z9#5tq&jjhgb=@UHn8iP-{ZPVFy-YHW=g}QjNGBAYH%9g#gDVf->fkoNsX)4OZ3ald zWDkODQ1?$_-w|c!j+tY#BqHOJ+lYZC`VXKo+ECU&lh$0g)ob$cHy6+01=HN)DZyrt zKkel#W-d(2^`d&W+q5(pGYr%%qi{g!T&?z1I#3!*C3WR5=_d=Nf2q%|&g7Oq-+Iyz zkPlBx&bvUk^;6X+2~N3?e0fL^#`S{x(&mn^9J?(cXkDsR`x=SwU`Ad!5S`PXD{c_i z-i}RO$i=KSncD#f{&ipO3eNg_+;Tc0E$xJx^KRM-xe^|^b~}V|WBqgL{(inuTC{wn zP~$7-zoo~8(mRM)t1{f?v6+8M5ZUE;N_OPRe+$N$?lM~6{^e{QA)3#dVk}V9z|l$l z7WK(y)xfmoOEi9AaMBW1fL`Ealg=F&v{X_yI!TIbg(Y!Nomu5D; zYA4q2D;g&i7rQ!byYmnrRXkn2uj9{h2*`4^l`21GcWX7g3#NjO6wufZ?)&cfa2+Mx zQ&d@IL-ph{<0eaHh-bmjlQscLgK?*f9ca zZ9WK{%!ke&o8{k&9S`S23Qr23`*SwCB~SdPIH`nD*y+{P6D(>iq(QW4Hseg0xfb88!3Yb zI0)YqLZfE$GvDr;rSuX44yQVGU(p~vWO`KPRO#c@I{4^w$ujVqR|60*Eb$AW^%=%; zJK|c`9pf0H4d*#FvU|87r6Fyjq{dNV{hjaA=v=&<-Yk=wdk_ri%AYEj3Pf}Lz!V3Q z##I%_TYq;pQVQfWequ0@Mj;;SWO)a~DKdUiJodn#4sYr69eVTuK2}ue!aii| z&G;Ok5G)I<8nho?6~ZTWukR4G{(rHGoS$3FkIe8Wcmrs>GtITuUcgy6(jI|r+8>M+ zr7s<$Z5CHwo~JG86BDJ(u?$_Zc0`t_78TQ@TR&~xOP^1PaN}_t>icB_6GIfnXKW+x zFox=W27mcN`3Yv0( z?{1Uw zajcyFTQ+NW-i1hWP^7O-~ zMmv>CMw(`(0!qdFwFNm4&}w^`#~XE6!{vQ)6t%_|QujY_lbVpWgcpT7?G%TauDa@= zjZ9z3!&=w79C@s`$^@*UeZHO&e{DE7Ox~hZ|73?~=JU7q-D3m`mIdvOEQP_h2}?KS z0CT4qPgiw}_Jc;IM+x z>vPO~t5`tP%({8%%8u!Uha9!hV2nDGaO#f)uLAWDL%nypmGS{U_q)o=pGLLe#+gPr z`aMi`4>Yo<+bqtD$!aXV`O)7zct73 zmlmiX|I~)K=l~LF>q2E)x{QmEBla6ekcTOy{Fa-7=x~u80{P{?KcFRj5G<5jXr|a0 z46P9wAs;Fa9=^z~qT7ocgFgL@hyM%ez`Nd8lUW+#j3~2fo-cvhB($(2u{k{|Njlf( z?Av+VfYxIAqyFV~2XzN6_ z!@Ansj%;adTgPKVepFTWAVC)kvYzlbwoSAwheZp(smJW|h8qZp5GxBDO$vT>9;0g_ zu1f=Z5pr}@$`eu_2EZQ`RfVm2c<$5Km$|^>ODF!wz%r~Jiwt98@>L(fpqy~nVxh|K zG4^9*2!P;Ve^}c^pEAAQFj5PAAuaA4g2c0Z+i++nGyAMx^LZu5zb1=nx`a{5y<69- zeT$JP?BmuqdTm+}tsC9qdMdBIdBMrYBF-BOB+U5@O`$zBuhW zaR>0D-?ay|CMUn$(v7t0#evdqKB#qDQym0XoK0=!&xwO0Q0ae~ zMz+Qz@D2P#Zz+d%Gk=mq1K&qjn<>(Tx3tZXIW=ENpvnirV%39Rh(kVUZC4JwJ0Dh7 zQOg6zChP69%%J3oR9kD{ol|GT0iAz&7MW0k=GgyKwUm43J2e}`B)r>^#C6;1W!eK~ z+h&upMGJjhNcee6Zq1q2G~X#fdPckp?c}B zQa?WP2HYBs%bqBCwI5kYgS5tQLsUu+M@!<#bzYGs&Dm$ChVCy%5)VVEhV98!4O(sEsJ?Cbd$fs1d7Sf)FaK#?o3 zq--$l&Wc5@j2?q8W4BH_O9~dg-~Iq9aIS*vxi6>B{D|AxM1e+i1}-F5*;id_20JRf zb{^M#@#D_>Fnxhs-fA8fxrL~bS*eVgRX}!&n?tSEsfvy|lPHi^C6qg73JG6%Ol;3KnGv8!S7n6-V21hCkPDi3Rm zP6GNyQ6m6g8PR1c;#P96a)B2&AR8jN@O-w_4X@x?E8d>z(qyzF! z3+EPPXTuchT3dr0MxXact>oc0|GVN{*)@26E?5y|gm}HYk6!8a9E|}rk51;p(LEY+ zp{wZws19+D^a#9DxE5>OT~R_);LS3$tfM2 zdqdf*vP(i$*VF%8O7>NlbTtToW0HmE`pS6R1~SXt)S4c-&ksLROd(!yDe0-lD3Lls37X29Pv{watX#Z55Je* z;WrD}Ljj-v36tOiy9}=7cMz22piCIJV(hcj#-e3rRE+2iG>njz=Un1OvXFm4xT~ry z=Yzzz4q6X#Isee0(@Ewdsan{S>@Qa)2<^xtlSKWnIAF*cg2GxJIp! z24hH6%Y8_rEh)NZ^EN3GtD8~12{k(%EMN~;ac47o7j}b2S2nkuwRo>`hwM63fKJkF zOK>RuqKKL58pig9cDiGJZrn;DBpS?N^M4)h_-Uwv(3miU&>X9NxaSn_{@qK^%}&~T z{pz#!)5gh3n7_W@?zBA4-GUq6al)JeuZs=DM6z%jK>Tjt-N0Kxm)rmSJjSUyJ3HN-i#b>idMIQ)xaVg(-QN`eZHT{Qrx0pE& zUYwT{;4(e#K)m`eLCQN0^V=2YK;^!WOccV(4TIMjZiR-QuniPk{bfFmQ4@6pN#Z}byU6#0wMXh0o-;~R=fkBR)|oaMCX5#uKh>3HPLTn;up zKSe(ByyC@{F;y{l#?pVS-fN4Kh25XaCx)MeU?j`>y#zhv~mnHzr}67XvrF&zAjJ ziW?xeeWg8Eg91G?J~xrLXyrSJHC>$knp1Jll6WWlpbd%B z^V`sK5m)1LN#aToibJMq`|(F8FrUXZg0vc(2a<(+J|eci+k0)Cy%)(ILHylJ9mtOV zr8Eo54lY3W3<#lLdT~Jy{GDH7Or;%yeOgvAtQ}=SyCo_ykAxsn9o`>&A2X_R8;XNp zdP`1SQg^=3l0;UnQa+GoIkhIX9Jzv3@?O;TaSZ18hVD`drF|!n(Ot`h&yEhD>RYs8 zzppF3=e3K1XZyryE=3)+^&~qxE0jJOb|N5tR=%NPYeSKWFYz^!QjY9ZKI?ZDqVyF$ zs`>Kk>`Z7?WcbmHT!`$Q9%+d5JK6G-zJeZfht&F9I5bZfh(Ab@=4HRPb{4$kB9Q#H zaQ7uTw4!o! za^TRstxSA9wI(tuq9k;i+TMTbAxs_i}qPMfs@zR$Z`*Hga;fq2Yx~*?}X~5TfJVT%S6W zH$Qk*C$bMNUv8%M%|f%wI~TjY1#*M(s`gadb~OHQc!@a$KKqMJMMj%2P&`CHs;K|n zhjd@pb7aFuN0A)T)S^$AT-9FBG*IW9+UML)KgDd{sfU&g-Ul&<@YX~6xsbMJZw>!q z^^Wz{h*=q;B}aW)${*@$*HEoVE(>HcjhRKmQqwt)XuR*|+a1w~OqY6EQV>{gLqD{3?KThxg| zUjX2#F#$=pJq6DVB_PQUa)CNp5-dorhE67r zL_GB4rY^JZj(NVFReqSR-^3ovFKuX&v2>XWTGz_*sZeuO#u^uBLxAR{OA|2sjD$AU2y(BgDmZx7G#Dbvx&I49(B| z$E(~{m-K-B6xFKJl2>#`$UrsBJ91Yh1V{EVGnNTe`A1&+q3c?2qsc<@qOa@uWE|V% zu#G~9Gi5%`f7c%{I6CUt(ri9)##J8fz`i1{h(Y4N939E81zf7Fh=qC2E-aD`EYi@} z`El&zA6j=Us;IuowTrUm#Uyp7@s5_sx6*Wp);^kV7yU;m7Q^CCx|T;r&5HNAFj@Rs z1vnNMG;6|_A{rlJ0@XerW1OuS8fuFZDWm8@4nd8z#n_qX2C1*bNBx*1Q-@R%C=8Ej zAx9#areta{mt?A^MNqZVmfKDVVz(G+gcyM~B|1U3ux$BXXS+2)(VPpb{_`M0bAv_W ztOg2;otZh}ri9GO=*Vqof{nMoJiQALh7E?dn+ZFuBqQ(uhN5tCt;7zc&`>Agr#&6iQv%eo$$LZFfnx=%D%g`Oo0VK*9h6J=13Y40NCT5iA zT{d+cSPIR*@2nI7On7hO5ryZ@1SUE{NVa3OQOXSY*W?&Bg4ERF(7ODFk}F=@>(NrX zWb{|4Hr_Epl`#*C#dT(tLvzkYX_@WQUMw zFZmGjQQ-bG4#h5v9^5WXSo|jCqxT9*VX$+Y zo(J1Zy<>kWsY&x4nc;~C2ST*REe6cnIC_I7glISPV761i18ZEUmxxX}<-mXnD%Dlm zf7X%JnNeIhhj?>=<;;y-u4SRZoeKRN-Dl3wT)>qOB8qwc<|*yWEZy)darv{vWA<7Q zR}`=C(n7<0(6ufS<82$eUyp~(-$RNRWo~Oq96(5c1xt%^d-{jfHTxMsvER-nE7fIO zH&0dWc@ev7m>-%`>->LSe&aHBxaQf)O8+HERkA|$1J}6EL{>U0O^d!5^xM{&j9t!; z-0H4}C&NO3l8wfAzp4E^#>NV95?n{q6_`rA#$e0AY9@du@1=j_n`(vL1{q zKcFe!4(#=UK`N_>EIzSiQnnufE2Dii8Jb8Q_fiXjOVUnfD&a0{eVEl5jC1}$b=Mc3 z*TKXdAiP%{`vz`W=;=Q#b!k~!GntK?am)TVjvia@SAP_GrS9$&S7%M;0zCKxERJdm&qWX{7>NFt8Q??ypWlR*zY8kv%co9)_Kxqo?Z8l zkS)jd7p(2~e9co}x8f}A%~z7SbSRrroQ+Lf$sxrs8uq_DQPkxQ$hg;sgmK9(5{-a1 z;WlnMpv8cS9UEu%(xQnC0`Lg1s@U})MtFZ!uBh*>_|4ep`szd!r}v869E&_2l5Y!D zqpk&A11MNn%W{QC*w#_Ukc8B}cRq{bM7hyKCD4tH$Py$dp(c2AIs<4QRVaFm@32%q z<)6P-7U`?Yk0SiV<1$kOo(ubuR;J*4`eW^Bsf6v?(+jD!FKEhr^9@#o%&SJqs%39l5R3>1f79OWBwAwP9b0}VsWj~;y z&sTCiT}ilC?dES*o0_4sw+m;VglpUcJqTs#)P?B9$xx$(B&l{N?XS5eF0YG(TX2j5 z{Fga~H@vXllKx9wpID{rxpAC1T1#j>&z$M_mV+pQc;h1PReB_<@F+T5F|zU&OJA{d zLXqxv7qv!y@*~6NhUN`^gf?k=UV9%$=mXC*B+~?rqq@AHkZM1k!vz;W-oOC)P=iVJ z{?)J@m_}ahBmg$-v}kb&IWKyZDAn00XGxEFx9V~&kbbA*311IeEKNVDjh|bohJB1t z2CTyBI&)Xo3{G2PK6O_8-EZVvsZNL$gnZVvE527!Y%3S&416KzWVBI-G<`FB3^;X*pG1X=3 zO!r@w_g~(v*vi%tai@g#&CF@BlTX+CMm7WJLpVF>2_TH9Au8zT-UatDKn`?XIcgoX z><+{3C4>{K>K^0VO%6?OA+Uo-FX_Dh)L@~uaYKQG-pG)4!TTFZ*Ep}`VILxS^lAp{ zul&(gVk9FMDdEBQPpY0r-DXAvqkc*WQkJZ?vl#ILp2|x<6b$=hBi6lHqHwO=*0eF= zdFs{U|M@&}2urXzO~3-`%kANMb1_R%Fe6-ClR#GFZ(jt|e^v_+d#?N@nw{SOHgZEq z60z#539F1Z0TeHYMWUIuh$Pm*rqRd~cTq%{#gH4wXd-?GN|cc`qR2xl;KB=n`=_Tb zsXdSEzyJeo7pM$N%qB*IS3W*mdwrs^o1-_ktLW=%-m+)6LriGInJZwTliBY~WZeH+ z+n6;nG45lIX_^P!7+jO35&OgF03ST&_OT(iW?%UQZ28?0meg4Be73Q@~Uv_x$o77OEcLRmFcK@uNg+YK_~Ua9Y9jk zW(X}g43*HvTA@uEaKAmDwUM@wzFq-Z-E`nKG#_3wKNJ;2cgeJ(?Mbn%h9FtdQ`>s* zcPUf2n^1Y};(3IM#Vi@YXuL~v{hooas?KWtWX{Toqb(KBspIGbO3)k09*;f>5eY<> zAjHxEt4MqInCLO}TG!XbFug(+UB&{QhPrzojQO$gy}iD);O>jKvY=wpPfjqrGvk5T z-w6VMIa!k{CL{W@7_2SEqe~3KvgCb>VG}Y!rBLj`rjM(U?ntGBf^0}3#uto$BEMh< z{=;>`WQ1@<@{MaQ=a_LpI}2dBhTO(SQHN5XluqfGpnmc^yN|w`pk#Yvz3{x&D?8d# zb;T@jbSM=K$@J`yL|%H)YYb&`r36xfB@bs{;jaXzSH7va&062g`kaEf<6`FsYA-Jo ziK@L>ON#iJ*N?t}Sh94yaC>`8i{1$EkNI{sE-x3*?$cw;Wd-hU?Gj4 z`)ev>E56_nKK%mf7f$bQOnT2CgZA{Se4}_qP?@NR!2Mp?qEfHg$urU3g8QX~laC0? zukUpvl2|9t2g?j|Yh0RGWqi;smf{K$51mQb`VFYgUXy~6*8CN>G5k0j_MN!` z^&$3&Kj|kyZI7797&!dv)P$NxYQ(aDYHE&UYElhFZ45?0Z9`O?LrmwoR zLra<6YMbh66DkcYtQmQtwPf6p<1 zUsx7?*V!TZD5M)zQO41e;~5uhr#XWhNr8KELL52(oXpt_I`5W+0MtD&O{&BO9l2$% zk8_JzK3SS|3~R?TbXD6eX*iB1k1qk9HTq(AuIdNpa2? zpGZkEd*b_E{Sd?t|CWDR^Au=1-cm-;DYW!B)&npe=d@V(`cx__+_9io3dbx^rRK&6 zZc_sI!W>P1jwfMTYWE>!XB~JeX?cB|>D|_rA;f=T7DJE!8r?dxh6z4ch2U~Q)@1l{ zQro?UJ5A2NmhypkyY?lpzm*jQOZ&j|P;w9396JD_$AgMjOWu&7dmf#sSSKN-SPuqk zqn&RcPE(}vbb;Dc!TexeleH{{FX8AvN)yJ=EKLEUSz>gvlh%0M+tALVnddP$%) zF$QFaBW~ynCG221vT#WUHO-?v6j&?=KB8q$*=!v1FY7jb5V~Zg`-eH@FM2Bp_-dV) zm-iQF&Sr>{wM&6#g=hvfzcfv??l-gVUbw+=$Mv4yze0zUmOu)@JJImyTzjV zsIwH?wV)maX4QxK4+(l*-jDG^;jB580r#I0_Dx777c3-Ub%VQo*mSgb`@pJp%99>S z))lt$R=D#!NpP0(7s+;1h)z^K3Ae#?jm#k&iU0~p3vkZ4S^*>u1Hp9d*_sxgrqDeZ zwXEap2~}^f(1YgF9qj$v@oct9jjUWujfOA0*GfM^!+kq8M0u>F51etX}!M^ zuoE-)sw2B~6wHF4&TqYv#10r*IO+P$z31G0UqbeF;t^PH)Fpia%x1YTx2#bJ^v@`c zh>IN$>s+8PUEUz-_U5h>gesiM7Tj)R0O`l$C0=bvEq)?}A`4w-=astB_XVUO7{fHB zQ?+yDI+d@$zgvIxm&C@{hl1o1i4;6+Zm>~BYY>0fqqDOl$vU4Ix4m%ioeeaq+^Qdk zxABa3sPR}fJk@q$8cfJv{nr8Fm(wNh`UUy2ESWn;tCh!w=g+)vGTis)o5Nb(@eSjzo+q;nq@styWBaLslan>xos{=EA{>|fSEdbxv<>= z=t~z*Yec3)7nkPT3g_*r#QXEdzhp;JUdZ@&-sB@HSbtN z2yvv@@Nau`?ibk#?^&e@29C}Y#u?cGB)!SfnVBsX!*(#qFuI91!by%_{XQZpI}*eu z8wmKg9UC%?YQ%vuAf_#3(Pr-t09Da2H*J0w+BOO78xl{%dOus7)(K-8_1$J`P3o(B zpW714S>P8k8zyW*Md4b6au+5m+an$40t9k}3mFM;=qR;mKt=|eIJVKW5*QY2cKn=G zZ{l5*zj|f|oi*@<<}0fD;@!N(;p1{ERLq1^97IRkhYMTf^8U5PJ6>6gR$kE;?({|g zZfnblRWy7de~Td)aVRIZ5lB5g+!cn-rh}?nhr!AF_I8SJ@#T*A94SnrYc74mlQv+a z&S>z+;Vrlno^&kI&oR^=G=P00oMC>_saQiaDRA$3PPY_noVk3 zpFqaniF|nb)c2pwN$8WbayqfHyV3U`^a@9CTfM8LjFI_hVIWJ*o*KCzZy0KCkrksQ z(qn8$kG)KT`_GPZc2ynk0#@V$=ny!X+kf56P-4V{U2j}M}zr^BbU3olQ#<0`Pv%j*}>4vKrU z?kBBv4B%(r<^JZbnnNc7w+DWyU$TOW{t_Mo(O23q8nsD(Vn{O9NX38d`s#HX?%+8_ zcaG4UMO1Kp2wqL}btQwJ3z?MMrpYfF5Hb;dRlDlUcPU9bRHN?}{Rg62F2|HQwJ)py z7AoQGSnMv+%4vmcjW;YE2x9KzZS;`-5^R4T0*Ag?f~`YsAp0>Lsng{k;G$R#@20v`Mq0p#GHP3Y%e(JfGYZkEyRF8?;!bCH|2mN4^Uj}?3Aa=cYFy6-R;K~H~<<*y1F23HTDCd{-}I;(?Lfm3tSFVyKk zkyEq8;PtDgt}0D%?XFO?#Qc#>{DxKQSY8Pk3>@&&QHEY`9De|j9_rw<&Ge~Lctkh< z;ZNb32kcdN_D@7iCz-lNV69+UJhMvq^A*k4ogXoa9M%BM9u^S2Z}0r39ctq;_V7gO zl#GK`^tJRxBO&YU&Q?C=0xg9xbbUBY@%d8~iAGrz4q~*PZT!!%(34juBjL9g6ZU*S zzM!fHea*wY%RoRN{&#l!RO*Flx2Ag*mC^N}c1AcjjNpTaV6RQ>urGiI2fv0GhR$~h zGifvsi`d6X(0U%TW*HSr*+CGdbF3rNrO0N2%rbFG8D?>LTFO*^v>rvZTCrDFcU7vj z?`kS?_?YrIaj!h=HUhl=3)MHKFb21-G^}JCDo^vK3q}~}8?lmW>r>j6?}72rxY-PB zcS$d3Bm&#&UKChy3-^inJWzc`4KlSZE3x*gcxgG!z z#s6(M3-!0V!uBtU-G&G=N$Wy*KD5^D40iMbnxAVY+vM~CFd2xoAUHUVHyC|SQbCv3 zE4Er&pLBa7J{{gYnFU^~d64G!MjcdI_7CAtY+fz-LLOs}Ce9`?M~NqOl1G?;pw%4z zY(NK+e)J{HY%#$_sFVl`2a&hnB`c4cq+>oLG*=cdKN~(TF83uBh;1lT8`;-6U@*{M zmkX!2cn(F3p#S|e?j-#APPGkX^1YU%FdVj#f3MkO%8YJwMPP<1^8P3@S(`QO>5 zmbX@!hP9QTyLqeKR(U1-z+djy%QJ<=M4BP_CO^JA#x>1$4_(X_)i8JCpT?q$THZ5f zhO#x8$DE@iM=T7yswUlQ;a{>BKg^2HWUWIdROwl9Fp+2e<3HOmA_{ zZMLD2GAzFeSfOtlPMevD9*}c1w1(8@?U*aEo>#uMppU{xje+HP9xbe*Pz&%z2?z+| z5}|tKLNiAx-;Wwly8aBwk4F9c4?ysSYf-M?Ibq$06TFcpteZ<`L(wk~B%b!5RV5f- z-0(AJFd=g1TRTB-sSvySMd-H#c?t=oTa7H((|>@8ii)Hf@c9sOHbbJ|U8$nRGg2|% z1eX3dr8NlaV}iV^GO#oB>E$Ld^p)A{+`Sm1F1Rj5`$41WwDCa=gP`ckaiJ}|s3XFi zH|(@Zl#x>a{)uVLJYl|sFLZqopro(EWOD?frFsNO!8U)(9%`!5tvYk5)c+cB7nQf4 z3;C|Q2EW{|4H{TbU385Ha|Uk6&3P7Q0FRMM{#wBHHZ_gW_v|*PK0awgBZ4P0JQ$zA z0KnHddRa&%dd#kX;Z!YILIfa5`bngz;^Kj6#3G6erDcyu4B^;7nyoHVm9ju&xTM}IU&RtP zc0=su+(z1TpS+3K$f4WPC+R6PjOaIw9}CCYO^WAIesWQ7Qm4La;PCVnlKg_kEE$Yc0@Q_5##|+F+Va zDj6Cla9#0`(3{n`n3;g&bz-mh*HSaHjKk=cAK^*5bfhGxO$bBpr;+#~scSTQkIs)VtjZ|a7S#_g`%cXdwJ02G*udT*FH$|=3eE~x z=L;fg0#h(s@gj{Pxat^ieYR^AeN%-_<~&p>VL`K75}!<^phN8c!`3&mCiS;U=+FDO;&?xI9$4^T(N8*)p6uo&H#?3z;2QfO(78Go_~l zIB8nNhl(Wcz1T<FYvqZ{*lHO473`g{)`ibWq*l4JS^E+Bs1bJE zEzCaU+29Q8umUzfN+*K%82!k;t2}{mg1%q#8LRJVPM_t@kfp@-{x1AyeSx@k+m+du z`^BUI!|Fh1cQTXS_Tr{2RTbfvw?-*rEAxmmmB{~KFs~n>;QTJBaJnR~pN;zz9nRpr z^#<+`3b7b74`xpa?y*21#nnjd1(5g+_u3EApvWQmN(YVDL72EE6{019TU0D#3b%0S zZ(U6{pfU2P@jZG?ckQ3;&}QQj#MVJwWpn1HpU9 zM2%FiV7knQK>4{op-XNC7*fvP+*#GXKoMuOEzzDM+a$lBb7n{%7Aop;)o6;d{JpkY z^WM1O;6Dlw?Y;>m7u)OX|K{pfMckR*WK^Q+An@L;kg#Y>TuhTWzCMhi7Ua ziDn<9f3DM0#O<&nH`5DoAY%ESN~HO0&p4)aa1a~-x7&@-`x?xvgdFzzfcK^h>Ymry zy58wU&I9=Hz_r*HVn|d;9kT&gWAE8Z&jv7aLZO(T&r@8XML*cUR+8|3ZZafNCSo1C z&fKcp>(`~iD>#5EHwC*9V*Q#P#xfr+EQH3tfqJX}Jhu5EIB=G&-^=Wygi!7Drmmr` zdO}J)fh=O!A5Bm0E?kD)u4pjX!CR*IbAZ4S#^V;G)O+p960`Yyo<=KI*93{gnuWhP zky-vJIpNa@0ETL(OyfGJ1X%RlRmVW8&k#%m=vm1fcl8+K!>a^k0=pxe&6qr8mHdYQ zy?7KV$>*A{5t)D=k6-t&Tzp^8t#2@mP^qj5q_7uNMA_w>3u}ZPn37s$HV4zhdrt0R zt~doK0w>=B(&e`5S!(ihr^kOf%S(r&mm}9?&N)4?$2uZt=R!lNlL-8 zFu|qa7I^$JgEEHhtCR{-x7gTp;7S(KuKXmcf}AXklVfL10Bgg z<2Y5tvM>GeUkM!~Q0wru{BbUZc`D8fjK&+N@sT6z_YZlJ_gtdghGeVVB&3Qv>wOH} zzUGY|+g`9Aevn30<=KPDQPcCIZk&yvsg6t(1Adl`aqY&arB=|9*1XRvfL*COTop6w zoY`{R*Yja_xDHM;{ETyH@;mv6!xxWUFharWu8&-rsXs{v<6-%BSFb!18I;YH!n_Vh zaq)B8#i5ufiUZy1yFy}x-{n2G{ars#!yHDcV@_EhlmJyRd|19D4>0LoDfhB;gbt(X@L>auT&tt!D;n5=EOr8b zsI3q6fVAzxFm`uRiZBnTeC5VyHdt`)?}PFNCF{c`P(j|bFDZ-*WgQw>THT?QrG}K- zMRrVP9jzuiF+5=btG5kSrNR7;p|{x!i$q{(2mZreUEb_<0@T5jUn~ct3VwRYZzWTf z_C~Tu7ds4V9KJ5ACkT#6N?ZmadcnQScvy+T%dj~B`3@1J$|1PF*b0Ln_VW*fyX4 zS=>?Y1m8*?AiMXl@pgz4{#cjt%{pnTI60 z9&s)1zNZp6{DdY~MXaXe{rWl%w~OQqL}2ru6+fr@Xp2bdty$?%`^%`9PR+5(Pd-AM zksJr1Y`;Pb>QPGup_m?J&@3sEgkNHe#na%28P!F*GdH4SpRZxUXZ%!aa*e>;tMw044QN;mjo$UR(w7j z7WlMP1==W`CF-?bV2?JG9h4*Y_#P(()VK34x zu~|sw+0DHt_+Fl3A-i5gJ+8y^2ke>l!tpp3{RN{=>(e>nZ$KCdCnyw+x_&i^RVl9_ zZ5^05572uKy&I2k)xZOJEJf{>e?&_W!!WB(f-r*5D-!}&k{;_{?;76v(3}! zYp|lF$GHj*MGX!jBs|jM*Gxsk^{wthX&by=3BWB2;4`x*OCOCm!kn+RR#&zU@67-` zo^ArNnb-E_KEIrqgEz#Z+fc6QKkf9HjZ6sQ^6#@k^atoUfYB~hPqoofi-Dx334?Xy z{~5AI-rHXyEDCH+X-nCH2%2HBb^}Rh%{vp4&nBSu5T-8#SfUtA2FM>mX4?_a+E$>` z$iLLzX8bUG*EX$Wr-@91QO)m2I(`rRLW19k)*>%@_mHA$IQD$D#ti8118ZI?%4Rr$ z(4>2)(6%M!;lje})YElmlEg1CY$IFwsQCt681W z{CDDigzW-n?n@dX3Ogw(Ny$$AHRJpTrKT2n9Lk!y($Ok8o{NtSu{J#zXF!3#N-Jvs zQ5#MyA+)9D^d<_yt$~9X8;EWt0$iUBB+5R{G}OU(ex4!}swzi5UL$F*hg#um3;p#{ zzKY3Hc7@VFLPJeX=UlAW;ANVIR4S0{nfE=12A8 z{PQAoK3(nz3&Q3GA-kj%jK>Nm_I>!pR22j|wy$caBrCK4LzptGrelNQKNS2N>igpBhCIeo>E{A?R!N}O5=W8wu%l}Ns^_mKxDNqn z3iSKns50XzwYXcK&=9k^(4F=WgqsI6P_@sqi9VaeU>LdHs*I(;=%#e!$Q9ykPIBsJz&eorV5 zg_!czh3JLV)Lq?AvBFx_7R%zOiO^Jy@))r4bX0P*$QV^|UHt^WCp(($#E>#i4n7hB zAQFGiEy*pxq4Ay1LVo8`CERFGuUfq>1B43}fu?HI6CVVQ)<`V;31;FGw;RZxWy1&x z9~A3y9^5xEbNZ7zGSl87x+=>LTXujpiNgNGN%uK=D zjqKwQwp0lX;k*Vx!cp-KFTe>~<%}dna_7+Zi+tx(93tFcfh+~$KX^eP)fS=E225;F zmRN7XydxYpI*}<$3ASl;^)=R1Kkv$!i548g%QLA_u87LE zjS1mK<8rFXmR&b~-%|EAb|ORm8?6xPPXZN}VTvh}=77cAN$164bff2j5&Y=34 z(>b(m2No)js)l9tdKuuHd;Lc<;~CAZDH*plL%NLv4+M~f=j zb1|)RJ?p}Wt<}IOOwvXR>9l<|yc|ZX2lvujR|5*1LtW%0}bSXOK~J=RDVW7NoIK?xPjS z`3)8%ob&x~g!&s?`|9C_0mV zgty5I@@~88(!z_>LWS>CXn#PCT++Ww$qz4fQSTkz2t5Ts?$@H>AM6g zI0*Qb{4NjDWB^tR&g!^7zpzlHVE$%c`64l>QJ$u5)RbdnK#xItwZUi@WvU}qF9}v= z%d>)i(VW9>`N=MY-wO;MV*eRpp7|(6?CNT7R6FoV9}AwU!~p2yFsMK_p1y9Lq%?*9 zr&SJ#$l{xBS`%XCh09(zshc@x1tcwQL~X#PsDj)yog)Ck^rf(yK@}pBO!ZJ2{d^^3BEjcFN3notHp-oNB*= z(JZTH|8CC0ZA|2J3}4dkI-L>A#wv_9)yQoe__+BIgo5eY#if+U)CIJit1&`8HM{g> za@G9%uzkD1rdpgq0KxmUQHh;R1#N)esfc3d2GT)FqIaWl2e8pS#w z6NjF`>#__@cIEW%BOlMc_{Z3IGhW<^|FhtcLSSU&M~7}V)fOr}YNpu0qd zO3Gfr>}vkUq$crGZx%b-I$!@e@SzhDp~|CQDlxck9+JSww*0|KXu9fpid)Djeq^GF z`^pYIwyi6oX+q&G&LzYcP0k9QSQ>Mrqcs}mlH4aopM!Rz%YJ8G!IDUVQ`m20 z{`_&2;v(sGG-f|co%-ekEVIY}$vC11qGp$GZgCRL*hRxLMD7oq>L)M4$Tn(QQa;c{ zVkfS}L$#_6o8;(6F@k!&mqfed)Y&%j4R4x3=m0LUvO^&Qd~UZXH`w1X_5pK&F9%Xt zU|s&7^NMa&NCe?M+C=GLcsD-Ju-@5^yf?-{W(Q4kXbK}2(Jl+f3t zzU*L~_pcJLHRcSlc^3!WiiYa&IqfYL4rwmPMBx^-zSz9-uXLY@dW@7BoKOZ<;_U7! z*X)F`0P2Gp%6pd-#HgT-Xfm?>OaQ&UEs;e)axE39R4xPY3x3Mqhj{=BQHxM-Q16H@ z)>jn>RkO)qD5e@Xs1Hei)uGbaYAL_LwZjRu1x2ay+gd!w&Q8C&lA~ zAqzTw%~O;b<&W+{kYJ1_cV{6Vg~)Gh3$ck1e@wI6!S#2&@V# zfZ--YJy%zePbtN>O|R^`)9;>4mV0xqQmx?xaEsF>wAC`qN0=y>U&3pD_{>zE*{Kq2 z(VFjwAb+i*iCj?H;S?!1;dr35QAZ>_b18duREQaD|DQY5ATPqHoV}#vv`pZW{H~^~ zN<A*JOl&14r; z-LTHvc6qyp7GBRh8=Pz4&id)!&xl9>&)pa(d@3mY<<)x4XNzweiI7(Z;+Gk(QF!dk zjj;6rp%A?>_!Sb8nQX_G?8u#>wEAC$-?LKwSfqK2U!1HPw##gNH5_n1%f?7B>4WM0 zkS!(qD|iJwEsZt?uo;^HVU7eC=8p6G$+mPSnyx@quAd#oy@gQEkPd`wN(xO0eo?)~ zLhm*n+K}nAq?{{*3(c{+6)N^-!U4skbJKtXEYSavldoU?eRU|h)&8X-m)XmiR^n}b zO%*jgpm!Wwo1@pmzMmAIYQ2;_=jQMP1xGB;U?2oh$^0Gj4+=MR@F8Yl1vi{>ONJJZ zY02lAns_lWrG3&qpxSm50bqyDO03i!_4K|qwxVwv1DUMj!gmT6)F?Mlz?96{1wKZ; zzRG1DNZli8+~69X&{$RdnUqh1;mu*IK_YH|MCk1OO<2A^>bI+`sVKhb7N_N3wc{rF z^(aIOje`6$aB!7(L^$gkC-xXkqdm7{CTf*2U0l|7fE;L1xII*gs^{ewmE=O~`$kQ$ z*HhZrff%-Gc??mYq(}|U6szUf*G%zTEY;y^+E)P_it-BxTs`v}$&xgIFR!}|R$tK( zYGVk(R?>a`>M^@-3Rix2WEj@CryBzS=7QwJwF^}tCM_`8tiYp7!RLf!tk#)R_iJFb zhs*&BFBYNXB@qdR%IxJH^OJ1*t~rj3Td@S;3*s61AR&*4A38$>HusN`2|D>vJLbyH zKFv>Htx+=8r63@8MoI>S1~InIegDkkxJX)SZgAYhE zO`JK^nfA7&uC;A3Ze!p=P~OUV7M$6<+M4qMz08}`^7{pSRC*i*YUM%{FD4P2KH#Mt z=^;wB8di%RDSrg>;I6A39rNf?+Es_D&C5f>c*I+5%fOt$ug#Xq@&!D=Kx#!vo^WRF zq!ebzRg%P~J_&;biMd+b0Rn7w*!+f<)T~EBRB@;Wnt=b^^)EazG5!HR3&8ZY;cffL zy}TEwrr5n+P3x8W33NCkW+z}uSC^zsQa8Ny{@)ndaY5wgd);fQ&*SB*Mcz3%Sg0wT zlkszqT*cfY(A@@QvMpjG0+k^mVhD-z7*-kTcSZr3+>`C#xFam<*gmPblE#M}5`&b`kOteISWQ z;nj0HT?c_y6NjI?PtoQqn|0vd+KK?te2kN}pL^B_OH)#Fi2EadJghAIlHM(m#f;PL zNe!tfrfyUg&ZIU5(tCU@Y?2)v^J-rcbCW#-vJgGr0lw%@O>2>^zK`mSKPBVQzi$Gl z6VuIxNcGm)l(O9Uay30P{&Je#`Zco;jj_wZ%zAX8%h2<$D8pIJ_r>vY(N*qwsP0jz zT9FWJW>bP|Bg`~zBf>kEo=u!e@u@*tG$Lx8U~BmZ_0hb|RqJ<_E|||V$NFb89Zv;? zA9CI;fy-_0O77g4W)ZzIzO!7FsRINQaxZ`@Q9dEXygiG`!c@4{d1w)_HxH>bxq8p; zU=$!tGV5*GQEg1<^D`cwP%-+3vg$-?wy4H^lAmn<2sC_UY%Fa>&TOiHdlWE=@Ymi(;5*ehx z=eWEdO)YY03*^h{m8V0r^U3ll5}*rXEC>5Y@69!ny8OdJMz;_wRs&cw`uCbXa`>SR zTXx&`h9YRTlJB^~-kShoJ67fOw|k?ZK->Ye29pG1F{<<%!c1cb$)t8@RKoa>1#e+S zIM{46cehjC-NdB}wfr$urXBj-rc!glkg5nR95|?Xv*Jx0p(M27-;du$s>XzVCktY{ z4goVf-VC$Y#VxLhwOKWz%OzwNKCo@k$mfgh!nD*_$Jr9fI2L!(CoQAp!a+a!UK`C> zJZ5(HWPIH?Q0Ad+Snj$5HC1~PfOK`g|AHSpJXErc6I1i5Z`NF#MO5o@U$e!h){<-6 z32lBVO5%#b*r3o)UfwY(*=4q)oYPhPv4Ss99aR`%uzLRyb} z8$wgka$&q3m|*ZR2LiH5b?mw`Ahr}?H;KBqi$rPeZn?i5?E|J7!t@Ax==5wb+%u|U zyx}4M=lG&2*@MUvzvGu%-;icG`!Yx=C&tnd$0RHky}Gi|=kOP)h}bv%`QjtL2xhr) zCcO%Ag;@Lx5~Q=ld29|>v)-%_HJMgN`{O9j1F=>G>Sm5?rEt{wa=+MFZwVUTvFA(5 zh#f)76oua}``l?GH?RXE1dvmmP8QRW8dO|u;0gfieDgO0fx%A6%;|uqg1{M8QG?My z`s{or&J?73K7yz%*GDP%pI=F1$RJpp1>oL7unOc8{GQ1l z75%=cY43Um+x~U!wAYo&I=5}E23=>a7aEFqPR@zcsZVMg!d=PR+@3btVaom|MkA#M zf+ww*+j+fpMZrfkm-kEz!w+`ELeZDB?a?u)cLqhX=kVb~tUbQF3Iw+E5c`<$Xhov_3h-S@xo z#tSF4Uyscp27|^eSf!+Liq=4x*di8fK^q=eB@dS>q?G^6IO@AzS!Q)@M5% zexVUxhQSonl0QzLaFNtN6|X{0HK0?iPXy87wft%=B)rAvHQp`@0!e5eQaQ=wJo@8r z?zbOTMtw z$Qe zlk?yp_OdBm<%XG*k|koah34p%mvXL6Z=IMmjcyNg^q>Gnz-xiq+hO0sY~~57p*F3Zx^eR*u37 zzkeol-UlgFD+19t-Ln(0Y?F?9tnnyBO#LFfZxost=J-MoZWL`*_17JVzPy^)4UJ|&SVCnlnppT&`n+zj z+Q}<4>;Fxp3yJM;{RK?XuC_=IeCvZwG8^n2&q~Ip>4&H0)fHb3x#&OXJkpogX3Vx( z-kDzEYBnmn9r8UQIiC=YmsP!_D2@Ei{Vnfe^MxQc4oAaF_MDME@WHqnLcoNtcX|`C zq^1Yx^~Nzzbk^T&6Zf\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \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#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$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=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\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 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.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 WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\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="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$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=vados 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 \"dns.google\"\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\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 \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\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 :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - 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=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\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 :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 /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\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:20: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 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 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 add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/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 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.4.4,8.8.8.8 +/ip dns static +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.33 comment=AMSTER name=amster.vados.ru type=A +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 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=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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes 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 +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=10.30.30.100-255 list=KIDS +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 +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +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 +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +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=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +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=Trusted-VPN +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!!!" disabled=yes 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=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/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=!10.30.30.0/24 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=!10.30.30.0/24 \ + 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=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +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" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + 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" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN 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=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/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 hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/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 blackhole disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG \ + routing-table=To-VPN 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 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 interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/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 note +set show-at-login=no +/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="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260507/20260507232002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507232002-Diff-Config.rsc new file mode 100644 index 0000000..caa0ef2 --- /dev/null +++ b/MikroMaster/history/20260507/20260507232002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4300d4299 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4301a4301 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4303d4302 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4304a4304 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0