From 446425784ce00bc573ca564e8f61c81c5383b9c6 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 12:40:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 12:40:41. --- .../20260508/20260508124001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508124001-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508124001-Diff-Config.rsc | 12 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260508/20260508124001-Binary.backup create mode 100644 MikroMaster/20260508/20260508124001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508124001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508124001-Binary.backup b/MikroMaster/20260508/20260508124001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..cdfea225e47425670bcfd1531d11e923e387ba5d GIT binary patch literal 298264 zcmV+aKLEh*sF8CRjRXJ)Qvg;OrSI5yFd1)M$pz5>000O80004Z`T(2&Lur_Ahu^2Z zGR5T7uo)u|48o+RHGw$4qA@r<%#;z@jgd~7(iRs*noC_0;bqmq`*EHzjJ6ivzv`XW zEV+q$2ys>^I#;Y300ltR&W0yumxMkb0I+@nYprN@*>mu+4(kBVI8WHg_n(cnUu8*~ z-|lv2QFnKF;jL$*U%5F6V`%g*}AuKp*HE?@w}RQ)RoLK2f#jXBJJ)w-%7ma z(i0Ts?gFz#zFq+u@T?ow0P_Ru>Na$@<*v z_r2Mqn49Q&`X|Rl=6vMQ_U>!J%5@Tj^K|T zzt2YUYbuv{^p|`Rjk;lu!lr2ubNHzfhV)tl71!E-88zs^6*#W^dqTb0W$>`u_dF&Z z%aP`gth&t6APL2Z#=w8xiMuTr8I73d_rpAG+rDydN~l5{N2uj&CEFPL;#-v7spAJw z2EA!|1WYINNUV?n2lK3ley5R%nh|rW5F6X7{zn7N-!{u)Aua!6I#UjkYvFKAIqUde zFq&AB@yb+0ithPC!3(d~R#RV0a8uBUS6bYOvIr8;xzVrGD3zs-V-#Pn1_z1_Wr|GAsnVet>cvz2E`f!44vqY8!6;n70K4*6XxbD(ySe z&Dab^2b*T~wc6uKnH2^4w*8RMG{p=w^qJ`SqIEbUXV9hk0)E@^$ZRe7?#FnZ@FyCu zU!Kw!R#)>QT?pa6bylKAn*&n#WeG6@ZoyUAS5D~=*lI^G|8Q;T+z_gA2b+NA5fhm; zm+UM>-hG}YD9YY@V!SVx6lx_!nkIjwBG#eLAwk8a$F}igC-hUuI?P0|`De?rgyfPu zn(puOmY?OSXl!?w-tGRz3ZshwAVkQGKvn406N%gMfU$-n5!pt+{-w%-zKq|f3O9dp z;Py)a3|u|S-*(<*fNVLPh~3bNMJ_y|-kl1(7dlV;g-t1bm{AYv7|zcG<2ww;r_RHU zS4d8&THW!R<>(jEa26#2{D_%14v{AQje9heI<1*~pIwAcv#p*Sv7Qfq@iXrzmETj) zKVP?BvUw_%XDqBQ=1E)q&G5BYhDQ?LXhpgH1XOnHY<)$W1GbS1roGC2dvDPT0M08c zm^5PkZ{-a^^WibI+rYE6U_pM=5X)#M$~p+Nwg_>vYQ|{47Z|fvB4$cAa5ve8v!x~! zT{R{+6l^~DI(buf-a*FZdi$m;1bq7Fw9CGdN8vKcIbW=onuv}Mfv=y8jPL4ofaeXf zuofTDVd-{PHu<}gwIa1ib$J{Z5=AB1_UzcufYRCkiMHxMqnqE`6XT?cMfFaQEA$F# zZCiT`&woxS|Dl3WWpCMJ42MI8DVO_i08qmx88x4lTw401Jqd5uL@?2HN6(T9Wurn{ z#Y8~j5;9@vlVk(n2HSKWTDuMSV)hxo@;Ce|A7^j3b4Fs9r({OTDS9Z{0saS(<>I=Sil00AcI95*>B`zQ{nRM5lE zVVSQz$zbxUQf;qILC5(tV<_feo;Sy@C4erHHF~^1XMeR;!YR}UPKpW+)^$ezS*?3t zYS7ybO4xpcAb1P|`}p!xsDMECfib;X&-i&()-ChZ)sp^khkGXMX7cbJ?N)>E?jGec zvorsQ=A*`%g?pmySK;X{0~7PfJeW%8IJq;3JF0eIL~Qz{VY5oc(-%^cB+9#DI_~p2 z?uek4vHO%283NCMple53#U=Z0HOPpj&qp6lBEhA2-Lx07Bqkv@Sdaj|o~U%)AfFb7LTuMmm_(t;l{V0G-ucOxm7pXOCqqrv zk>TedC!T&8-1`lXqI#o@#Uxw;jokyje3jFdCyo(T;kw|Cv|=aJUFnEWYuScXJK@xX z+wJISX=L^sPJU4+m8!VD<~#Agqxlc+0*#D2X3Z+3>YU7jQNr@jn1IqR5dS-)I0PEp zK&ql1t4w3hgv)cnXKVr{vGbOhLTHAQB){)emVoY_YW=i~aNfPU|7_O0FH+eE9ADg# z1Tzd^twh|T-&}qgm2Z4hNcJT0*7kscmDEYhM1##X^v19tdy&&;kCiZG(rrY!CgmApr#MO&sy>RAF4g(I(hZsxe&d&z9YQbP@#t-1xN4DTrQR}QihGq^lKqXQBbi~N=knrAh2sqA zmwd0^F06tUFWLA(adbJIMc+jH7h+U&RF->rZ}jw38L!)(u1~mRl{k7IItX&GZ?d@b zDDmFob&9iUE$9x;mFqchRLqOJX*8$Hi7hM}ox(^SV;HoxUEDpwfOKWPA^F0&jp?S8 zeYlo)O7_XN`ytt@wqWHN=G{}ZAD7`t8_za3$2ZjDfX;vWkE6yGRw#>yEp(i6xTSA< zyk$XbC5`a!weYq1kmHRZ~SXGrdDaWwxeM_;mU$%PL9Su7P}$R<;KUUtQ6L$D|yg zQwVo!4@eB379SR$T6}O-E_M&^rwGQ1+)LDZFa%GwYkSdTU#{-XeeaZAnIrj8(eo1}|KDdy*+kC?yN^=k9Fhpy|h9!w!Mq3N~ zL}4}ONOU9U`)OXgH^sE+rg-9=?^*$d*Z#;qkVvzQz9X`G%UBJ-*>TX#ygz{^)I4$* zVLf4jKQ961o)V~au*<(`Sm4Ab(c+C|esJvu z_jj!Eipl8vcc9?QN1Hk9_Wm@aoCBT%OmkQI^hzwMV(%q1$j^5PMLfLl$rp>tjs0(u zW@A^*L4iLn#}Re8UGkZvr2&uMthov@DmG0aOT&G;ilok#d4_;BB0o}iHI^Gd7Ps+$Q=+eqR&LC5*cq-d%8$;%ri^oV-udJuCd{dcg}iv(S@mn4 z20}!ryhCQO!bCzze_YuHuwZjR(O0$h8@nzlJ|+7BJWovrfpS1cCtz}Psol0Etr1 zBR5%q6oE(cMlSl^;A)Yt^S78N#H+S4U6bXwP=D9_HP4gz$+|{1wdr7UOyBMbm+iOO zRnEox$%t1<-E+96BYllB@}pt(4G&Dn`vKIEgp)4lX8Pz&rv>80wniU7IKN~=UMueM zv#CYVgAE2P3M`}(w?rvSJYds`HhECXZqzZoevsGSTmCG?s`X6{ChJyJFFJJ&F?mt| zAix^!9DYs#3B_5Eh?cVOdy%Th8Ncb><33iCRWGH(?2qDLd+{2#U=kh09W~k5;BaOM)hqo;RqBmZ+{dXELgM~ z-B=Es59QV8SX?#(?C9)PTg7Z+iVrkh$;7$w5!xYFoG4CDU>=Qx-Ub)aLu3W#ai!gOGK?#ez~4X6jQ@f7uODvFA($U!5retgY5t<65S0uvs{d;r5lDUuF>Avgj#V%m{8xGw$ECK&-y`!PATp!}vi}9mgG5l4> zO{`h&qM;XV{4_!TucKuZ5zzuX+mDzAK}!sJ1C}6&=dFy~_!%TAPw&j3sj)z|S)sLgngeCVtL`2Lf z)6r9Pt8z2p`KCrEmE443Q+F=`CPZvl>XqbkxjwT&<|L@{BO^W)C|5nytV7EA^9muP z&Z$tTYOjQJ#QavTdB$kcnkLjyzcYkK)m*Wwk)p@;b9-b^`t|I=uz820$xI#)w5xwf zEOdORj{Sg1K5fS@`jAZz8S`4%U^{Rrk&C+1FtCfR<4p zvht<6^Fy3;?TqbvMsvF$WE7@oW5$*lsFuB;(}0Jnk#d@sF&%2r0Jo`IAj$BdOF=~^ z%|Ce)BsDo}!OS%&@{2txW*C*FBn6RxKSG^~FY`QTA9*0LdksS~h-DjTA@^ z{%j@v8)wYNG$@x|30V!oK&7sx76SKR*bSVXGM#NU?A)%4>8{kwf@*sphJ^bMnOT(9ocG-W&WKpH7jkiQqr{pRn)`;( z)!1U9IZXi&d>p)y(jB~Kv?>^3b^`3}DIpaJZRA|`DGX;6?K`3) zIqn$ZwE9aSnR8xPGF$3QacT~rH;cCt-B&4#R;+dv|6|k~PDK+ZE%e8nx`3>=G%ZW50=S0B>c=P*Hl2N_zdKzVi$1mQGc6 z56ASA6;ROGtcmJiFrl9Q-KBc!oM=p9!;RMMHWjD34>+RcG_?YweYL_>f|LxNymB{?=4_6# z@W%xI*G*S!%m!J@?EWRmEmnYQDT9J0FHR2XJc@qA#+H;g;EUVvwPN@!N_g&g>75O1 zpT&tHb|1?vV+?2)G}U)@`<3?d31`zrTXbnY23wMSt;pI)P}{nIrZ*Ken;*@-Q}qt?T#5>%!1Dix3P0;DH&{YJ|4} zNJ%##`p&Z*5Lx;Y-kL)afSKtRKGVyFM-Q!V43P~=ewxL@_hv5$e+#ZGST>5i0sMHD z0;I~4yA6zd{aR?3G@4ckrV0gSNGh1`eM(ecCz(dnVbgMlFal+e=39pTr+~dnVs|Ol zmlA!JJB(3WOrp9gDbRlgz*V0t)DT5n%`kF&f2}D)BCY^(3SoO>%Cn)mZvw8@YSwFfwpgdRlc+uNb^L7 z8z$W8Fr4dh4bhM;*#x>VgH$!aRJZU2B}arlt=wg~K=T)ZrJl{Lf$C9|>Pgv6l1x!}<_IWe%QnC#8 zU^O5Lfphb(2#w!f6q=wc>z2S1B=5oka+>1!W3WAIzf|yMs*!<3iN@Q0ZBG(-_3BOA zblPS2KR%~rXvlrJq9y~w=vaj#{Xo0CKyL0lS(Odp7^nLb(C&d zDU#xr%)E(XrWic#+zEW9-;YC|;J7#vmnU}O!Tk&8YGBC$2MLbm)P7DxyR=crSRhs? zG&7!ICU`3q>XJwpzRxFa*Cl;Vc||^Ot#>n+s6I;o%LgM ztE;*FWs>cE$C>y?G60ZZeLSdP?NSe`iuqbm87#TogcK3$OTy#f*LTjV)^Zp_a=38C zfre|bkG&=t13h}BllQhEwp*vwKb~8N> zO-D$Zjw`6bu3QeMcK3iVIG({x;LSC6jWYb&c zijGk{pTh@<9wa+=#{(}Bq{z1Y+~}Vac(pL0Z6YPINrIGLsg+X3{|CtoQH?SX5iAYT z^XFwa-SBQ2*aYVj&tU9duXdo~1qH`af~$>s_U#pcpds}&WkoEAh<$ZK$#>5AJ?ud@ z9B~{P&Vk1GrD&vLo4E>2(>QNxx0<Y-;+U-c+s4O=vJTS<|O#TASgI4_K>ZXtj6I(&tRog)y;OX4f-H z!4dpHdq*jM)!P-=Wbn!C#4kTEPQda;83_=YLjdf%r{aT7B6mL?sclH$pub;l+&fOemuuW#veBJoPK~3F!{&u}`f=5u3c{Ca(uSQ&?EHHcp z0C@7XaW)$E(Z8lOMO`4U%}sX365@1gw~3Rn6$7i373e3Jx1+2rmKp8@?2 z`xv~r!3Dn}Da3%K4Rx#nXhVubEXq(-1a89EKWgF)+hqCVr-#h*zP2L!01b5t5c5gz z(E7j>XB^3F_!5{#9I&-*=Ll_O9NuUZttj1#7`ZxmRD|1)d!0GAUHt_3AegyBWh^6i zpU}mt7*GagwLHoD;-$n8=a>NvvfoqMXHl$zv)sMMlAR%n(^yzSx656spJ$0Ebp26)OrLOda6v!K)fQJ$vAbVkO zMHWBIUqS3j&AgmB~uDS#B=;lf0#ej)XoeWb}gm+1Y4;0EgK9g#A8 zz$ava!lv(zX=|-hwAA$^x8PYk!vY5Sr8#zDL%(8V@bk1#DIkzbw7s47%`5ncjKu!k zQfB2<0p9*^=*!+7i9$~W5fDeBm2HyAA5lkbuz^JqbSU0{xoWe0&Xjr~RaO3{3)<_y zUA=-?C3;4!KJ-cYRy2t{uHkVt{avtU6Q#%DVZbL9iN~l%!624)^Thnd-O_kBd-nD746Qr!6AhK>kLdjw$ zAFu>ZLDNJIuK4O7C3KJBkjDM`(iVcPErVqlp6CJr#u8m{ywdT^migt~>bDF-O+tv2>#tIiuA#bpMQMsQw@?A5AM25U z8k8Ek99V1`Z*u;P5`f`S&;X(X-Kd@khSkLvv#6lS+++&{*eJgx8^|IIPpOzIMa zUdh-Lo|nr=>P}Wuv|@YO@_3bcsGNqw^;dF--7sLXv^2Rw&ZY=2V*1Ly;Vp$>%{O4; z`s|`V`sp-8YafuEZh3DPg#@Hap<%L5W*uu=1_*qYjnAWS?#X765>1P*>@lg~b)kkE ziHh*pD2dXy>iynqr1`#ui*aDJG0O-Oy(aig^6c*r^)zdnAOv(0lPrcao8Zljvygtf zf&+sK3hZp+6czbP-f_=B|iK z4{$eW6patl#R^d!nZ*Pk`D7P>swOQ?hWSAM+hl7#wDbx=qHqW%g@RXk3&KE!Nj}I@ zRDRyl#2D1p#-i_`ofhV<>1&U>z>{~p;1)0XfxxU)4PM`T&U zU43o+ps^e>phOWm1{}pzxw7Nn)bmm<5y8tKIlX{By`vH7r!cRP0(-!1nBBgquBP%3 zw>4iQoV<7RQqfPu_-5{TlTDAqpxDO-dA~^l5a?v;40kpvzx1LPE!?>XYTKCY71k0C ze{0sbha)0F-e`B7Afbs7A_yX5x5cPE+^tHYEo+QW)egS0@wD=V88!;E!a*`={NV$O z0w#mSPr5vksFq4tSQNaOjy+)9}Pp-e*~&k?lOIS1doKY`o5>WEEpF)L3O<0nr} ze4Co-K?Ru`3*#*=#polcvbp8#sSMbs@~3YSg6BU>hokev@cdJes{7~O9c0#EW2;5? z57b_7Je0u})AF-lB%83n)DeA;D5*~Sou}@G`6jq&_UK{h@MAt_()oMTv8QFQCIm(E zs$S~u^|p>wmX9thr(atsZhH>Lio;V*7EZSoL*dd64|r!vFM)%$QfWjt}&%H+Y*5vqmDU&m$19k<@1<$MWY0Ypt%vGy!i6$G?XxU zo?204q6zslO~Vb&(h~RVu+kktLYgWJ;$=>3{%e+*Dao>PLsJ;#q=c6gjK&uz4h*Ak zIiSQ-fU#`bDI{8U<;58&{M5h0OA?O4E(e<}?Ku1~0!998&ANLbX?qJ;`RG<>4wh@! z`y%`oc3AkbPBZ%v59)7bieNi#K4eR$#Qm>l>ic7cr5R8|#yJ8%CH!=BIHyFl#yr;P z^w>TS-YMQR)2w%$Qg>L;!2nyf8>;O`krqC+qci<`Kp=}(FVDk!f>UWUlgZwu^Wgv` z8ZIjfL(~&KeC(F5LwY&aQF?cPtUpK;1{fjynf$+gbvU5Jz(lx+)Q%hdc`gJK-EBY&%KZYQ{S|_ew#u6tv5*+$Fd%nrOBX)_}pLCJ^-9@WIE3|^!{vC z&Wyw{kMJ0ncLc_=Png1oTDxF= zg#=C?1sSkEn`Qi$b^LQC+PpKr*E~_2Wz|ttz7^+Svg&7Kw#XNPh&Jk63NWQaxOQ54 z^cpUJKgJL43G`^L!v}x8$(A8 zH?i7d+M}9Ngdr(nMw5P4MjMAlTwP_+K`HjX^HbabtHr)cscC^R+PzpPS%L}SIwrGb@ zSvoFSWV^YqjlfR8>)98~B8n*<2q5Yq*1(F&G>oSVk5);e0nL(gj_jl`*^gD$IZ_n* zb1+g1!5}X}Z@CU?3ShfA1US?Z$32fW6d*4K06c*OXO7Fk8LDv-C#xEZe3Z={m^*8& zZDfl%@8OK6+4N4pqA!a;p1>qTOF725jK{+3!@SGU|8TTEG}Im0%tk(p25#)UH+3eF zy9I?73gtF&CVU)`EdEHqmeRv;!GN72IUbpV_%%NoV-ZD}PU}r0?5VnP;Uj@M3>zYZ zz7M(S(bhu~UkE`ig{nQ0^YL{Z!%)ZWi{sp8|NUG_qn;$_+`zm+nyh=8JS7FTQeep2 z{R?bNPAIxigfy$xS{Llico_d~)twZzh;D8g2R6b;A9_4cU_!Gxt@4lDR5`ADu#-4K zq+e;=)zUj4&18#8#yff2>yhlT6W1z!; zcArvNfyiYhk)7Aj#UZ`%Q_4zn;mpZ4N-vH}XA8=b>=MX6mk2l*wppT78wBMO#aKnm zJb_L}^-~qzsC}y!@2AzCxQE5fV-M=53e0~N@K82>+>}DB--DG?1eR%oyW&5=79{SG zA28{pDgGivKy*N}0wby@zzxXmoO?pyqQ)O}B0fJHWdrlI4 zU0Q%-XZzHit)qD^l8GZszu@0F^vRLTDK?Xzc!a_al2Qs>%pc(NZblDT4G+`1YO>H@4E%#DOb9<0@R@i79zen;mySfRZAy(1<8 zcvrOz+IE=7aUizIl2`i3G@xY2Td4t}98rS&ezQ+DT6cqek0=o1np$|nEg8pvx(yUD zYIBC<#cac30S_$QZM?7V#Q^iHd!5v&WJ;8`gi4oWkVt(rqig*n>EHle3txkaY)Bk(!f3=cAqO3$cfffK|C z<13|!*rtCduh)ezh#NT21p|#^3tSbO=R@(Va2upGceQT2G=ZH5VdJV3QR%SUP<*{p zpnl8v-_a@XFN(i@RAyzzK~t#YdMGw4QS?ckURio z@91YK^Q%1d)R%f#wusN^t9~+*ghY$7Jn27&+gR8s3#X>sTQrijr=zNL>*2 zWv3)Ho{k1IlX}IUhL7>{DUqZ1%&(qy^qwsUbbXPDTs`^-yXsb05P>oT{7_LxJ3rx}Xd2c{+ z*aG%wh%rVS5F>MfQB#VW9VNYIFhzCxGw3krWcbm~3Hi`dhGNz$3;h(%)hu_giPzj>d}QmpmtHDs9My0g(`b;#%r+K`0POtu9#>1 zW1NKwDFiW=CXQCQ`ww2E)Xx{bCu1 zK6aw~wfLg03R4z-EaY~_M0_pOPZC5b{1VX|jy2m%+gt#j<6SPBlH(n_)wPR_G$Iji zRyVLME%LJ5XYY#AXVAwp(F2VxEp;DwzxI9Nvz+3<(BYdm%Nj8Ad#hkiejTmwG_09m z)h=S(oMFm~e127i+Q{2jktJBX;rBK!q!5_~=rQL5Ig57Rb5-D*s*AV{#pZ7|8Ms0z z6i$gX^?Hwi2-=aX=)qm>ghPjPAy>(%l!aSMWnm>chM7*xyl|2891fEYG~AfAY6*48~v%5tA2y~jP;-h@wg&pHReby4u+0A+7s zWP~Lomy?Izxu@m2jLv*c5JCn3#Sy9S6KFD^o&=~)2>guTKuwwwT zQ%`bp#r8Fp0y6jx-FW^{?S&Dw^*xe*b(5l zH;WZpB6qJL&FcLizGI!UbUn$t?Ajs_g>k*9h7@>m;JZAF4=Vnm>^J`D9wrOxAlN+W zO$Kvwef}m=xr7a4!>;)Is0m$xa02}1a$s2t3rVfpdPneM*>O07Jviwi)s6kds}rv; zDbxK1{VOXf#K9P8i$Cortx${$lu;>2Kaw5#0hqw?D+`E0u z8?2T?6pCh|BUEZUe2PNzO#)Hyur>f5N3ldtIO|{M|0;wZ~FSST=YtlVi zP*`@x)gLdz>b~7Z!1e@)mvvRM4D3)#5;h8%&-s^~rdPNE03!zmoe#{RaAruD*0c*N zfTZ3#U=n5)!?$y;@p0r{Zoz~Z*aepmq z3M(6$44igVzTzZwN|RH#zU-Xe!9Q>sYa?y9Xt1PMYiN8~q19&Ss|^1I?!52cfFQ|=DSOK+jBy+jv3QEl zjN0MWb5T^()k3|SuG-2b9D{T~W6Tur&Nk1;H27WIT?`~)sajrOANLnf3vJhZyTfO8 z5OQlUOU(O7V)4mqM_jdCi!Vk;c^VAGD|aPz2PW9CoBs9N&kb9PThB)0M`nbD9} zn`lbIC=NA%&})7zX}4%I8?=Sn@a5ke>tpD+C=h6lf<3>Z``d5rh|u;n?KT?`Z4%O@ z2o+k}L)RJTnGov@FIx8AwgcG*sO7hkK&f&8dUGITlSJnYP4P3{ooSte|0mgcLpf3b zV-E0@+t-SwlKyzqGF4Hn8#9Pq3esgjlxZxTWN%d+Ta2It;Gg7Q+^(F2V631>y5N12 zo#}HRjse}QcfLMP6NckcNp#^=BOh5IW@w^HaUpqQJXI0fyUBi!hb(JR}@+Iym^KWLU6U7%s4N)uMsp>*brz}eL z2`mq5Wq;|s{+I?$7m>E>Y%BYFzp3O3PFgw35u(`C79kCxhKt8t=gmC2Jn3ytY5CX( z<85L^%oLpI-++CMp17JJdBKW!l5>W|7*_9`#!g7`P^BM8K}j+!~vp>y(K zV=kvS$eB$?PBYRJ;{r3M{IyXH)N4SS)8PgkdNLe`;@`1#VqU>qC5%Std9`eKq1IAR z8LTROX5L&hAhVFIdhJ!dcOo+e(F8Eqbl|5SPq)P7^10g&>@0v_k>;_@{MeR<&%+iO zW7YPPwtJIeScemUGCB7o49NU`4~EyH4+cnNp>u`Wkwmt4q?AEPwRFNQD&Yg}N?LVWJj)y&`)43Q#5Z)Y;PLBAc^+ey_P8qQyAV2HA{eq}uS zS9zi1+=nTqe2vB%AY{V)b5ST%i_Md=1}OK57CG`7XeK@2g838ziEY_5JAOs8>4phR z%EoF>H??ykG=WtLl)Ji0=p_wBo6YQ534*wV_U&vJ%ZRxY(@Y$t9cjh8lqU{B%ogzqc7n?>Uxdl@+7@V6FjPq(!noVK2EO-AMFm2DE@3lh(eo0If-bDq#NnBi(&-0Yjct6MK2kg5axFl3nc1n1 z{OV@)<@9Pxg?D5&#BcE6i)8P`liAnUhXd-@v^#ri)hW!duGApYvDWm((r&88LVka# z19w`Q_!;&g(0GAPDfdRW|NGrD>)(~qo9JPPiVt!g0YR-#pJ$Qa$wk~-LR`AB$3mP7 zu%myUzg^&Dlq;tT$+0FZ%Ek3c^>dtp9Yxj!#!aCQkVoKLBkiRqb16rC0@f6ngiIWg zgM%)-uZ^T89K}s5L%2E%-e3p{924>t{Sp`CuGtTX>g;ZN4r$Y=^mL z&*{YOMS@?#%v~=vo$R+%X<%x)kI}(?jyPfi&+<6#lGphJF1;aVF+&84Pshr(+Ccj9 zeQFUJ9$`i{I_qth>ystvRnQ7y{i>J-(!WnO_0tLosgWlWRhrN{F^)IaXpCvUFdx2o@bIJ^++Sk~0r86RON9m=`<>LRYP3 z+#_+~*^8q>;2d1!jt|-S;i!zfRI``8SpCX^goGyIJqr_s#5)?p(bs;`EfSEoy&tbV zN~emg%?wsCXWLr}46~OTbDAPLn!k|V>VAaYtopZid~FvX)#ur6(J+gndsa;0>r|$B zVcsfA^@S@)J(06b7J5NBVyYv@RI>w#0!$2&X zm>+-u3C%-tc30UttuQ9heK;7GsD;WLT(u^0La7RcTed(XVpPKAI#wc1eQQ)T#zE;k zuiS@#o}U51KNx?}jt&AD+g|>0MMB9gzK@+#DZO!wBDmx{Kw9+jpLXr|y-~JAKGKj8 zTiU|$M>)?>(baK<^qamz=nXUyFW)ZiI86j86O}tzKU55Q7y`I$3i1U;jx0t>PljZ$ zhH!2uI7Y06ZnBKwIs$d8<;he~|G^X7qg-JMk68qmbT+NefFLkK*az9mep~WhMSoo+ zLqMKIfqJ*}6Dy#bu8x>WY_kYdLxJUr8E|UYK?ut#$Zc?wAh)mZ0QlteVF4p&q%GJE zAsG5Xb0+MSl(ohSO}uV>%L`I$JZ3X+2utEMIR|Zo@h{jqs_khVuC;5;u?_mVHVW@` z30t01Sh`Dfl9{kX3z(7!>t+J?1v zOwF3vkZP?w8x6WXfa!^XP$r$_9bAmjfO)mV9Yp3+3eLK>!QLHi&QyQUVGUt4&N#y@ zC_2LddKQgoX3h?Y<9a9w+?s<<$~PQUS{K3G#H*j|D60KpyZuNjnq|QC6?>aE!LTLO zYd5634}V`p<4600Ic)dG5{3DAQbkdSD%GYC)qW}&vXS}qvGI2h@7MUkzP2uaCa->u+`n0T#;GO ztSDe)cFZUMjOnes2;tQf@ISAENJ_P5rSxD=Cmlu#n?mVD7y6HEzL=1uHHh4yF4ACTRz{C{$c%Y>;X{}#| z>$chJdwdoud$5HW^w{YeS-+(33IzExLBFRO6-b()Lj`WaGwg5L;)E zgsrlEhYe1Qj_+qheHJe z?0XS8sjrx5BQfcAXnPaB{DjtkvJ$lP8ZwZu_c4+*f~*tW)C(cX!h|=?*%57R-Gpcm zf>k`@bND?$-JN;t{vLu(Uw^Xs6HDAyc<`#5b1{kCnDS?dItymAg zjkBn4O~k&$If7C*XUitGn-)xn*C~MKr(o|UDLQ&*r6PgxNEp;dQ^+QWROumc?3UuC$j1(eW7(>>_p_Ga3S_gmK^JO#G z$|X4xc_V>bkh&oGakxy3h(e4dibJLutOc4v$?$HFoUt8#i_W`V4X zY0IrGizcdz12rsw_-j&jPIIzF^!mnK*9<9ehS!s-$6|AOQ21QJKbnYy;x8~<#ckS5 zr`HWoAPN!7W@5wj!joAKtG!i*XHZOhJfz4M2!M1028^XWE~aNz{$CFT75m5jspS~z zOezO>t>VH`v&oXagl))*zCDRT7~g$G^c@tE(bc1fuTJA^o2){hS+@IQ{ZVW1^QF)} zs-9^cE8r52uXI7<7((I)G{%{WPSMAt1spqG7oib}l0=xioWHCnLzw=bFz+B@tt^vt zz`ffCL&2I4jL}xF|7h`k>#R&bJnVytB^F$sQUvn%qssg>n4w2sf02 ztPTi%dI6Zr$EDyvCdsJcVIs1EFn*%$vG5CCyhDB9GBLw*ChQ~WRqpmQX9TROXI>e~ zwJc0WwDZ+LfrZQ*K9@-)5*-SkU;5Moa%7_^tGP&M7XIAU0+7Z$8UY+P5M*z1R;keZ z`LBMgVjeR|Us%jzk;KKyKZaD0s9Aqy=FtE&Ph60TLxnc9OV4SSACS{n7>YbYsvp9% zf%usZ6eP;80N2S&rkLd55oBz>Q#HKQa1FAtE9VrO_q`CBQhElMm=t47d~cs2wmn3i z@M3!@E5@W%I&S~9%%{AE_G?g`%9ym{j|p>6$;tvufsJ%q#Fj(nOp98ZYqC6L$XAE4 z_HmCqO;`nQ5wTqwifjlPm!MSY*OZmU^M`2UF3D^>B74H8N7~{fF!2pUOZhrIeqkP+ zfd+>+GPZiQo1H*_ufXW71gSq)VHZ$#ZZZFMA%|l(BoY8>(WkoMm;GD}I~~Bdq={q2 z6=@E%F>Aa$b?!c}kUiICj1<<5`zL^lL=aqJq2DMYLuANMvp^QwQ>`2gwCm-xnVKa9`h0KD9^C@9z~FaI~1cqsd8t^2uJON@IRA+t^NCixXtosipDx z>MOK2uk7P6u4rVD6=b15)guve%pn0_SmyjY$QbS{znM%oD|%`lC}onF6D> zSrjV_K}9?A7kE_Kn`r3scn+&p5iiVq4saTVDLf81O3uv99wnilF%~PWY^-kd!F*NQ^?_Rv(b$G5 zeREvm$5Zqx*CpW&q3cGK)x|53Ol`BBfWNB9T2cHB3fETyB(nim?d$`jqH%Yo@oVdf z33T1DDOufF@7aX>2}Q;`X4O7%un)b51WTiDJYk$*`Rn~<7MO9KanVT=6h%x?NnBr3 z9G={VSDl|zft)y6S6X#-p_$U*RO&)FDZ9y<kLTmXwEOz+&N0rNO2 z|G3hR^Jxu=cA)_OKLEglPe0eoq@}J*+-bmUuy2bn{*3M%W@cREin$S*J;p#B`_;~Z z2QX)lDfbul(jQ<0eX$kq_J!=Qgy0v?>TpI;{n#-%x5JmDdn&~c!Je$cV;tKqdAlNZ zRAoRDOr+dQI-8K=?#xvz+MV4a9eY-c0ybHaTfK#5PIS~aC5&FsmJC~7JE#vHLAT!s z>tViJHhWkLgE;htr-~LhU2xt0LyLg(&$n3$-BUp60p@9dfuPE;lEU}-gh`A-M5945 zqHG%AE1-uf*05HPZeJlXH_G>rSaKtL0b^8cyJ}yRlKN$wOnK-HDP&N_m%AXqpku zspFOew zpA_4tAv)Pc(-vyBKB%vM=BX+2ovzsZBCrwT4tDE=p>a$T-INITO8E z>AKj2^5w~m(Fj?@wN&RE;imS_+_W$fQnub7)UAXe2?&;@v}wVNRGdcz?5_LN$Uiaw zw)*8>2huy6yN1{5+Vu9_c1&4G&vNs6!Ar>r@z|SfpiSQAv9O8@-418%lN32p~wp}r0$dU<~Y@EAh z`v;>b9eq+?mV;8s27`cgiY!_~pEn27qxaLoRB48sQQ#|{_CPdJ)HzfqgX57ddgRY% z6Qx2?-U)+r5{&($jcAuUR!1Yfp-lMYNHAF#Jvb`vbS+>V?W%h6xU_|bTU%q2v|>Do z09f7f44W~s=D-1gX*qmxvQb}=-#1j!e|WLT#}811aiHts--K@e*KkbO7{!)x9`@A@ z|B1nVJ;8O7-((y+pE00!oWdxT(+|&rZ{?LQmJTQOS}yc~XN7{^Obk+-2rRKuT{hK> zcGLLRgGA)2H(X~MnZ%mxs3xkgll~y_xT+;w52bvTpTd+nodRlQ2Cdn)!Qb?Kh0*AS zFiIvtMpK(R;?CMNXLg~ao1D%r=TLtLTU9yqHV{($Ww4po!tq@Vr*U@B9?AMOp{3al z^O>NB~Ed{Ni-UVmw?DvQX+vSZ&_h|@wfkVUNtfdm~_Bu=2N)}uZ5 zU?({aWOY(%q5`+WWmFQ%S?BJgK9E%OaZ%bnx8=px17X9=>{~ihkSw2(*Y$p;ZyL*jkoS-&Z=kw_Q%GeAAfWr7QH?2UR*Ws z{GypdkF5R1^sIWr^olXX@FDX=_{wy z@6%}5-9V?oBsJg&i3cawls30gz-hXASYWU@HO+IAmQ=VVq{edG+z2Q7J=&+;c!c4= zHeOf=m+g_fFSg7U4rmS`J+JV#(C#wym0gYde%L`z*a3? z2O{FZZ>dStIj}!0j5Hinrs-k@8W0J5D*O^va@|IC-N!%fiACzRDB(E5OR$(JT z$JZlqI_J|(|IU9qN*EH{lBVm!_S=&-5GoA4nA3C$u=nuD0PfLtE!3FA0cqU z1@~CC+p~~ZZuYvg{$=3mp#}i`I^fJmTcC=FXJS#>DXFV(7C;N8ZjYTB%dTx`FoS;Q0lE*2A{}nF)lMilP6acE>vn9G^EyGzl)v7|zN>Wy+NK zB%M{WFy%G-mTK%66fb|Ao$kKtuM&jM)Dh)%QiRZx?d~AKIR-B{ck-7H3C{!>_%j8N zTyNf16OihX`}~7EWA(Rk0s7dFZmdDqXOe#w(PtL<%%^=wbq;ERP_6*Pd1%8zc)*rO zUIYpCv)2VC3i4f?zaH4h{%J%kPq}F zSE@q3Q!{J17FAt|lj`RunawY6z@)Q%fjpWyRClO(yd*e8A<@aNp0F{(lktu24G=7+LkB30cQUM>x=`FVmxCsQ3(V3#r-J!k*-J(^aD|EH`D#JekzaYYB1W zU+yQeov@vLpX3kKzaWm*0D=#E@>h=38>!rfhCsdz8|tW*y*k`(Iyc|-;A|tXcm;>O zZcgnGQrq#?fNjx=wU=gqWkcV|#n*SX(=o&yN zQ$to&$l^#E+La&Y*O;G;2_x=mI~sbqA6hS;5Cslv`GF%jVz)(CrPRCtb2xx75CK+F zcAdJ|(UK|?-_yhr8{5++1v@g_k};HmYXp4DN2u`;HtR^wMBB>FwfgVlc+G{*Txd9eH!X3xThPu#%FCt z8f4}ON4?cR*K4@}vT_{bie^}C%o2xtiqp@8AFjaZaN+QLu6;~(NXKOc`Z`5=zNLft zBm6amOmo;y(H5P`mAWGL>o%9+9!3=6~elx;U4?aWw$zmKW5lD@Jd1EHuUEC z$6O#^tmK3LO#e<4dwhHgVp7UahndU$Nb;ozi`xYA8VPh5pTloXE`B}MDHNw#NOTXH z*C!(~{%T?Qv|nf=WF&S|SqM+Q)X%xUcH%ytp_*Ss+_52E!nK>h@yg`>rH;Z$+Br*Y(np3niIRrcFtrR z>bNhS0H-E<`kgw|{;=-qP47nDvGNjZ*TYeS&A;$o#6g~+ii*M6OTSGyhr8jgUBeA& zqq@uJXW$ITMQBSwDA)|At;t~xc1fwPhl}z4!W{ZDWljMym7rrW zNK>0=_D5!FpsNTz9hW-j9Mb{AtR%^FhJkI2V-@MVYN`X|(q!$v`S)=Ez+1-*@1jDZ z1iE?ao~!+Iv|L$i!veb=9QCn?x&iXF(=lnZf}fnYFV|n}oTc9U!6P=sOTDvVjeTn& zOhrvmk=c!3UI3(39hBT3BC z>h7%t&DoEo6ZAsv__vl6i8S*BZr!I%Sz_oJHUPe+?}_Y#tc=Uc6?06kp~yx-%gQU* z(>h+&5#8@ zQCU-sil5YMz6tUK+G+u1GIPY&hLhGmO=9sv=O1k?hvy`Opx`16}?MfM^6!Vah#2u<4usLi4Bwh`A@s zl(M$FJ*ADVVoN>%QSu*yN+lFjW5Dod7$gSwwEtNjgZJ97qma+w-wgr6@RJR!Ej`lO z#``yAqbjStY+c9kBN`0ts(hhzF!iEUPT|@!J>I?b&IuL!UEREPsBnTTs%PGDf-Qt4 zX|z?oi_{xBEZ{a;)l2K^Qgns z(zal3Zn46}Pi7Au9_+2BV-`LTqIirqlN+TmgvG91$@os*+!7#>C@M$z$WmKG^7#J{ zvlV_Zk#C@J7UCh}N7es9BeHZ6sQf*YpBRIEi2rKv>A?z$cT%(O&q1YZR^FU6YaSw| z<~(ezJ@g*+EPhrxnyE1nr)uN?J*+-Ai6vB~5SS|%zl+Qzt5^Jcb{e+QR!8FeAv2?| z9b$hk9AErTaN0{aj4mlLzzxe_&f#grR@YrHz9$mkuVQG!i{=$83d9z3sc-ja;^i25 zN|n9ydUlZQ_*d3#kTRb3GisC2(m!4_e{PVeWz;cWeezfPES_&A!B>c|!?+m-fo;zw z_$?3b%SUXxe_d#0FulrOmc6rg3UOY?GMWoL`rxp?Xd}id$WuJ5roC)ZLqD;vY<>$< z*g$fi=UNZl`0=FhL@kW;hXn#MC}m;{s=A)0n>!2}%&~8!RD<+*9tNNnA>fwd{G-B# z^{&>BF(hDhS$lbbE(mH%&?B}?X(F%{JF4N$oPex3aP=H4SAyo3-;$=*)iAGPIw%&W zxrn6+QVo@o8NYf;4EpcxpWX_9jM0rQ92JtSAm~BQGz^mbmfo_%zCl|#;R)H ze`W8#{$Bd1;ok8QL;u~6)*^27-@-@OSm-Q@B{X^gYeVJn{P`Fr?5|0Eil28oad%-1 zM+FL3@g1bze1RI6V~$HkNVCGxc|uJG zE&SYLM{$P8I!HML#Y6>;3%sZ%My;`smYtHp%CMcI&uwt= zWYcm)hFbtq)nyHrf_@6sZfi-PXtE#83!puky}ux6^{@1}Sn5Cq{W19p4ZFWnIg|qN=@ky*Ff)vDyHVA*!Yk4ExZ!^klj4$YUgD;7gd8 z1XQvCT0t;kezoc6V2iX4pQ^_0Tz1FT!tp=akNf`wO9%;EI)fV3gEHZ%kvXItaq-W8 z$%-v_d`)mcxIi(ChDnjHP0?_0_RwH; zIU`R+^33+16umCgg+yWf7mL`TkJp!w=j?HmN+n%%^bYkuA26&=c+KV33gutX2Ym%YJXzr1IROQw?EfiT2IJYOs!Ws)l+Y%?&bx$KUBx1~Jv> zvQ&#Yp&pjmTx&0?D1xMxF`g@ttXSPQtBVUUulQV}!j_&2vXA+V?QLB9nGq?ebUj0{ z@jB8ohOqGtp$}O@jB-_+i0Ru>$b<=1h1j}9z?=!Ll!QX$aq_0Sk6|l-rq2qdGu$5^ z={`OOfv=JJ?9lX^{e}h>75RD1*j}W&*|DXuE2)zyPFZO5v15e#^-IRgm62vy7nV^L z_weGG9T1$Izb-NrM=~yGo^`;y$vs)__igxV`S%KKCg-#Tc#G3)yiT~#t84!m`tlDn zd>l@V;Z|ifDj7;zUkC1rrWbE)n;G?Z?ItQSyE6f0uji4)gXVOq`;dHBT)#9Yvw$Y6 z=5F6kwiR+W(7`h<$r2n?=A|g$rKyG*GJYBt)cK=$@=ZG-$MZ35S8foK z+La?7zA-hs%oTrS*hcI}Ikr^}0MOwb8~=l}gwiCMvPQu*b`;-}=SD&lBnB)h1J!MxQv_t>k8CA3jzW z0~0SShc4@G=eGha|BFac7|W?o1Om%J;Sj&GNBMUiM^8WEzcG&fR>|52*0*O?#DIQg z5vG3VJz8M37u~et8pwFeoKF3^xSe20#|RefGq1772q!!JbdvafJLcoW{_J<})IK4G z%wa%$+4ZpCidAb<$RgIiFg}IO{}ptgDz(pJj4qbx<-hm1cJKe>#L!wJK>_Dj7poAO z{dNptp-1*kfz}WH;P381IpXegn!>w?!=HIJp940A8Za-XsYU_YlvcT`So!*cK`wBR zf>a3B4`lr8l-36Qxusc`nQ@V5DF0BA_!18{^8sc%j1MKTl;utJfD|i|DS$CUs**!e zqzby{6+HFyH0~#;yE&BTkJ8GI2LwbaZ}BlceIlRN1+%TC&!#IfX}_d31>WZEIz=4e zB#F>YmZbtr$m1yyKqk=uY#Kz2xrd9St;wl9bnsJxmBYQ1GDVz@yicNCKXw;Vw?3zB zu&6KS2)0T<)!9ICSqT{z<5%EgW}-OfU~=}p(O(}S8fgD-Bf8mCK%w8A4u;KusBC?a zs$A>`rLzzuvp$=%^BsTZ7g9XrBAsQ&oC<|4nYMW0wiVI-^j^Mt=n)}XT`NvD`v02t z`H_kU`#AR!FJFxPRROZjUi5P#n$#C;lp-Z&40h9k&6L`s&LLsh=eE)yV8+=S2SAiX;Y$rw+iR8{zR>d}T|MM_hwA6D)lXPb6C_mGl0yy~U^dSqc`7T$V$QLh ziamarhj1>xW(s(QzxT-!T!xtp2OCutFaG;P=6jA*n*ea7pRh_n8ckbjoZD**-LiLZ zf+mgZw)tHm=0-=9gQ4*DeI{gOyUSI!vs9;Q0j$&bh-0s~M3(+zLepi5`_o^H(gxnP zOBp7-B{Fh4G1cNacW{aRQ^7$qF*snr3I}6Nj(v4uu@Q4Pyx6VzO?g%jrXp}Nh_m&I z-Pc^g8|4_4gd4y9-%Mq@#!Xu8>2Yi3q;A!hj~&rDI6Vg5S&YiWZPV#r^?8eZtAk5J zK*0wbVo2a!I^WO@(sCc^Xg(U1wjF(Vz;JNTByt|IlW!)nE)7&ti6CFX*DWb3P?=1u zBx7RWh7vJWI8qe<18}*;6W7i^Kb0=EzXDXkkHY3E6(*~Pn%PK{X27-mT9^N9z|^ii zpc-Q23<)kfgcV86bx}Q2hC9Qr3+-K*f^af4_QlUARqw5Ec_%^w#-I!Kwo{FH-3!Cfxjfs*!g;9;~GrmGfA@UE7Tx<+_I(y?e5y@qA4m@~_IikoS*P==SIfOku#C zU=;WZ6YD6~U(AC}*3ViU)9+kxNP(~fC2Md!N0-G(*!<%~!TKW;;Rrj>mOc9-y;)@+ z3)Zv(I)@X*P8Qgl zkFW28ucRSlrd`L6B#qQ#;r+Y&plVC0b-MVaSWH4emWZXKyy4y4>CBQ+Cln$pCo1B| zu{RtQMfQGd=J#|(#0?m3yE~l|fQ{Gqg>#uWaBnwsImw|*0#kk);Dn57|3z$|1elXshet59kv8^pTh zW!AgUfWi!PSi|`yFzMo4bY>F+J5@Jsvprk;NLBTq4OQFnt+38=BcJuc08Ki6Uu=vT zFR`o^#h4>}M^eBSmok&CL*1t&Kw{$ohlRV*7=8}o@^AhAvAavf_u-?c zzfa&RePM;YXTk!oXG{s)-t2jjjX8Hl1Q1dwjT83RkyL&TXouk4?+Ah~D=O=G@sJ2m zysvD1cF&Tg5;mVrA1g36ra0w3&$aQimLD1`@t&`vIqBiFs%v!{)H(JO$Inu#6COq8 zbmSYByt^ist`zD_GMsek$3=rPJ+#fQF_nlDLuPG<@=b@AJzrjdvuf*SJjF!dW}k@L z<1mH*w^V?5fW>@TLay5)awn8xr+-T*3Es-tlx+gb6NAb8fL_U&M?^dBaFnS2j@?Ha zeMd|kfA;h)7mylZL?% zF>37l-I;vJKX-IJ*X|b0vDhRxp0?6MQo`%M6eApg#Jmqi#Uid51Uv;l@iq*fWqRhH z!n8H_sd8-r%ea@HHp~R)+%XI=6ttCMf^OPC-~>I#L?dKc{^1_9*~qqaS8y9&le|vW zq=bnAah5BV>H>wDv^wGQ^8M~t@ZehkYEg7#{6+4oH)QT%S%|yj0{AoZacra4;=3@p z-q}VE$Hcgk)hh(9b#|Gm-&$f9X@G7UpAS$RK?naLaJ{@*$j}PKGF2lPL7LVQv(i>n zvL3A@>kSP)!hPdfV|OY{R!nb@obe7-5mlhm+X!8}k8?2?y1E4UoLk_wkMg2)(NfxN@#9ahO7UUT^2bf{~!-dIo;6UI!lR)tx)1)&lR~kdafbmR;wS6K9 zNuse7uu7?HhT@DMroLRXfaIj1(zjk|T|3P=zcOiFnc0FjeTP7Uat=XE}N%4wtsK_#I*oe-{@ z07P<$Q=qz1BP|dx&o|wZHCc>r?RsITM&O7X`-@Q{;l--PQtbzzI zlY&~0%-1}5-{@pLIATC(jkwY|qW|?~b}%Rzp*p%{Lku&bC1~sgN0t6UxU{?D>c>HF zPnAPV(`;mbsocnY4wm+wL9jUtaEGTA6BLoXex{*#0OD5k1DP-El0q8e8q#|;U&43+ z+9%RWAyY~SDzxs&L|Ne-xPB)5``)8GYd7wm(uK?-(tEeV*w;k|$bw1J8jJXVpl;t~ z;4>iC5;VO9Xjbqm8(0sY>IGUPAZ*)xIsogW@6;dY{*)mhS!gw--A$DyK= z+@IIGdMdlQ

A^IHLMNpTeuOvI05u9A@P%A7!sxvVS32@-(zNf?*H5SpaVlNp2Ma z3;MKWV4Hvp#c<5xh=V^X^Qm76Y9S}q^q)N3T@2 zB(sO9`Z7ZWX*%%SEeX|mBZ(W6*x^vMoLn48{!TBKejrcJyf{@nE)_|Q802*?#38(V${v?c z&}Z+?mvUa_#g+ED`@BDNcYI=onby+VQ5i^jJA3g=V6+7j)fcQk0g~4JxhoctwMqRl#2*XEX~Yki&Lc3Hd@n2mF4Z@%fyU{ZXS>9HinE$ zG6vat!fcBXt;zv)a775GPtfBCBJprmm3z({N_i-7$iv)EfFN}b;C}l;kCraB70V5z zK)N?QFIl=LHjbj-;5e-e)E)=EGo~0;m6PoM`#qWuTHUj~@kE@XPgAz|1U5jx^}K5Z zlil!3x&r`x`U~q8y$xdxIr64D)qI`k^L|GJN1qpCTuds!gia>gH4ZtlUmJdgB(p7W@yqn9I2d2y z8Mrei+#UA||LPE_dywG(Ce}|DxMo-qKj5B|0FG^oiOEX>0cR|oM>@LRi>HAuO5NcT zDDG?!B17Memdnmg94AN_Tl$^k)^*;Al>WL6 zyKZfxHy_W{D7UI)0;n5heNBQdIYrt97-Vpq&vzuDiQh`e6>kKF2M^Co6lB{p6zG21sZ9Bx^BgdywWP_kTXD}k;ng3_HdB#Zuyh>csH|(aSs>z^{5{E zzh30wq@DsfUvjw#{2MkgSnmVRT`2pl8YD{f7L6Y_WOl^NoIIg8{ zU=sXZa1b986QZo%%n@d!R``|MK8G~mg~ZLB zIP}^#4y|`sdAbKa!_G|HNPPZmJ^D2~uoBR+A@;fTq)$S@$_WgW6Z~t-rdp_fHwy}2 zOyAjbM*4oC!`LHKy)ukeR+EJ>R4NCBfp$n!cn)($6>oKHbg`#8 zY<=`O%#abP+b1(UPwJ5ee}^~B0Z_mXn4?g;FyAz?xoS_TNnkul-vwSA7euguQ}wHO zM7V|QnNGidG4-U^dVBibYVSgE-sFI+XBGxcvu#&slOjhcZZ7K2qT?gJ%&~`PbB4$j zH-qO;nK?*9fjqw@F3kHp1YsJ>gz`0!AddXp0w|ZlK_&`p^0pF66F|Wp1>-yLbcNvqKYmgpP@? zmuwXGwJ-r-f16_QVnvL`W5=SiENA>1#RRhurDZ!0MD`3*h?=%WgqE#yZ% z^rhQ$7z?a-4IBMOk(?Z4nnSr|aJF@OQ+Pd)}Hxla1B0R016e2R^ zKPLNFG2_|l|D9)3HYF*V820N;WAIb%Q%wmAjwvT!FmcFoKRRUh)KDHKMoeWn{)YwF zWq%;poHOoP=d=%VK<70*rfSVo;zTV;x>WFVq=0{ou)`m4>1kjw1h%)lW8d=%} z?4pgnZ3>hj#|EF#9lT5C0SMq@z&X*!vyEOr4OcGj<%>ywqURQ z8z^2r1}`=10^S_SmEtJNjTdbPdn(hEh+|YsY=2PnkDlMp)AkH8Dhisq*}pI>3_ccH z6LQg#Y;edbG2sG()Nvk7;^<0v2)Ubj>+V@cS2*qhI9`i3Yr}xdBx6Dgt;zebLzxCV zcW57NHZH)yI!z64R)~g`w!P1rwk)6K)`78uv1jDsIMBj~Rp8BLpR7$*wId}=pPinmJN`MaEunMdk{F3Nn3|^Z z(^j+Wj%P3EU^?-wWW2~vVb(HgHrT-I`Vaemb9zSPR^db$VBLbDv#11F zWKBf~^Ij20jxwB(LX7ne%>_u1e^r*6KNA+fl|etZH4V3&Vcx8oca>l5nVy@)!hP~E zuQR%lTvz(QDy%@xd=tnyEn_L;OY-&U{ehF+fyisso&BpeEWR|285!~kw=r;06@)!( zDnqQFHFaZe06l(}uYl9aEXLd{GQ|N6LN?pcUN3Irt;2qXOWWh1>)@|lUzeAO#w zwdpP~=+VwCb7mCjmjk9b89l}6)?;04TcxSVu7MdZIUX%}hOP&;Z|NaDPhu8XL>+%{ zjy@saP<`nVQLi)60hs2no$CVv!ZSpmfs1&poy9(vlLN)wPf|l!jidT!t`~D)UIgMJ zenJ$2BDR))uGeRWsiz&y_mZKJ3_(z}X~eQ$Yse|YGiyaAxFEM@pM;1*oNxo_)r3fD zLQ%hL%}LlEEmB2uE++?TpV!%#c&3bR_1y$a?DcBW+)IF?V_q;<$lG#wgs47J(fo5&ptXF$0{HqkTMmh=^IkTqJd z%NQ*+(V&fd98Z;`uJS5GSOLAw^azos{G(MLa``kOd1A)wsaVJ{KB$#g#oCABQ_f}E z8`bGEhq5!UBtoxPT?t2n!>?%xzh!M;DTJDduE=l)eOQM1hSK1>|8XwSne8IJ;939^ z_Pe^blc3SrP}koKpMa6wF|84zr76-guS914t3H88wU3L5XVrRPW#^?de%9)s5C;tXdfzh zz8s9FL^ZY|Dhjd4k53cdt+1fUM5_0Zs3U@A1vS{jYG=*hHu~R~Eyj4lppcQmILc!t z4G&@-6)MfN2La(nBl%&Td_(sv1nwO5e?qxz#yU=GW%wP&>3W?nf}3;MGJ4-mXBCyz zLE({i054y7_AWIiiX6v!75&e1^3COSA%b3CbTFsHZ>1ZY3H^+Gxb}pPLHFp%`x=%v zK^o*2bV35pe^1=wBpd)VC5f5v=z!sFaR+*P2Kd(N&E%5pkg4oF<{p~6G97&6cJfM$ z_6>uWfLT*!!*Z2i{})Ie6gu3Y>O3p@u_zviR5c5^h`KkCH&*fki$B9mT((CkdBOTH z@PF6?aV$)|0+Rn+YBhv8>2Qfb=@fdt-TG6jcUDB?8Mzc5O16* zx0kMct7sI@aT6!u;f9;Z!*#@sVFZy53WbTD#h4?}Uh$j;`oumYPJ5B8e+0DsIWELqWqsIL{CrR5U!vbN1gV#Uxxlzd~aRo8-ZhFurg_@8+{VI+d-;-V-+&} zfg40DxN&ZGGRrjA3;5~EXTE<<(sTc3C}x>G@~+6{6lij4)5zMItB3TEcK|AjyaOYy zqFG5~9W9-8nI)|Thnl>FD+pl*&b_1MGM*K7L8c)JTBB;Q*XWx8v6#5lb^2@guv0L3 zzz+}wRWcyYZH{`l_K^<*hzOvsifl$U*jRdW<%g(Z51Qc#4}Mjq656E)bYGDRUu(C( zl=Sxlis@YpK1NAAKAuEu;P;(_k3Sb(m9Bc%Izvk@|a*xW4`f!jW!(b1cVp)Ba&6i>!_T5=F zT1Lh*zuZ$*KtHEwZnQkXaTJD)mE54~rJpE{C+_6R0$jIuVZ8wj903j=<_n?l>**L>Q+3=dspj8(?htAj; z9*VD5hZM05YG}pU9$?fNf*E9N2IZ6h%-|x}Hx9{h6}sZeL#K;sgnm{!e1F$l8O%Vm zN61t%vCi8a{EaV-z&UI^wT9B--Hg!ODK#R15N$s~3AVpNuqm|#9y?6Bm}Y{PdU521XcPH~|?(dw(O z2%R?E!3RKkG}Tl?b&p;%v>uYN1Km%i#*iPrDJ{4Q7jciypPR_BX+2Xzz8w@8V)0Wl zmzuoH_E%l`ErM1d`7b;p)`vNECg8dCN^X_dSg%Z+x=76T0;!-sl{6Vc79WAytLCUs zf{T_-{|oEbIQP~XJ-6hYY3(7L8Wu-|;0q3UyCX)lE>mMNWLHml>*S`pW>LZb#3(0) z5YTTPE)mSlD*~Py_h}}i9WKx_j_Ugtay=ANJctqLRW8ln=z?bhzdQKWem2q?Jyz1q z`Sy~G%6~Q#rGsd}hhC~a^8v*b)OehAHWD*}w#dxI^HelgWCri!hyg97xFg2$6zr%t zw>>r1B!&2VT1jE@Xs$;+TMLwB{a83`%o{F}8$DTWu^s5g(8Fl(pwE19u}KSI%(&`{ z8m6!LhQ>zUU0PEOO+c6m5_{$o=c;*8g~^s7Vad-syCh594&42I;uL5+^lX znE@4Q;QWcrwne&0_nW=D=EDI>MQrhpqSVct$BAUZ za~vzG4NFUF8&z}fth+mys*Vb5*!TfaPQ7>`bCT0)<#FfLQI8o|@gb?&P?B=J=!72W z5MH}z8;tMglToGFA8l-Wy60fGz=Mu*&Gvn5Hga`n1^`%Hx=ao#SZe5M*+o~`LVezu z2q%f{!;OthEk$qHFUa|7DkZF>Vwo$X7&u=NH&e8~;`+%t+l3G;PgKV~50Mu4!k&M+ zcV$F~A~y>Ye`k((dkUEzWR_{=z}z`6L5wv2wZxP*HsopNGD&mYot)znrRxMeU6(mhPRE#H)dZAugkMMRE(YQ3bSVhS%CZf6{>-jNYIbMb3M z-)iN;Sn$S_24Aa~&Q;NzITp>N#*KH%XHN{?aeFGww} z8iZad&Z(k;WJ_x%a2+T5bkzij-a5-|M#}{w^5L5y9udu~h*oX=G^$+~0Il76VimJ& z&zpvhT9X9BBYlHLur}s>r$Byd;{pM>R|TCOl!R_0^Kxe01ulHguKl9LK~NP8O-@|YQyCV6F0Jrz6bj<5^16WQ#Qmp@&ouVW7r=A%WOS zr5jv6cbof0t}%9*3Si+*KE;|6chDIpt9??-v6q!fNTc?WJ`-vgg9dlcA!T)T4=`N$ zq)>`Z68TCqqAQhV@2X(cN~vlW=o-wh|Jl=ObNc{O1LiXVGjdvx04kWY=T@bKL}5?` zLHQonAaNGwj0_ogt=M|IC;^~KH*9!aAlBAY5JLyO3!+n`@GAC@a0ph^(H@a04C6iv z?{z!V$OxX-@hQ3ZRmmFJ^{jb#!dVzi@lpCQ&Ar!zQ|=0{-O@4*F@~^be@2u@S2d=LVlNI6jx~q*?pWJfdj8slZ;Jy ze@%VhbhzgJ%Imo=zp=ldQkmDob`Qv-(^87c7pH0HW+D`-Xb~xfks|sf|JVSBj10xV z)sdm1-zSlss>^e|LEv6vh7XxFLO_+Vf$J!ucBHR?x{zLY=F^M5i{gm8%~uWO=PszC(EC4=X!Q0H0vOe~_|goNw9y1FZ}vJFeNy7yj|J z^EiH}pRJ<_apVjSIqn6f@YJ<164y9(tb0E?aI>NmRfE@@=R*-TMQ zpqa|U?*`MStxC)Fg&+5MB2954b_41Io`c8UU&KftQ62 z$w0JmvO19uO{_X1vX-MndAoAINJRrdw!Rf`80$ofI(C%BVQ1~jgsj>4?Tgz=kjP%d zLVpq{pk=rd$?E>$9oboJe&HL+rgvUB4V+M@QU%zG_NCH3q78bhg_xx`Zf4h)mNo&c zClcV+fK}2Pl{YV94Ra3Z;qZRKcE8maoJ(oZUX}D6 z^j!H=A}p#~GgD?XWb-?M=DE+ks^1Iui*I8b6 zrqlxBKLyHoqx_z|#v>@REjccLCw%gx{(PsGWM0?!_9H8(Ciz-N&fzqACZdOLNh^>= zm@}@W?z2_7$>;NiJOytN9|Koyk_InH{r<3lhnpo3Qr8Hi1lBtw^BM&! zre=Hkql-LUarVS4>t1}4BUxz#40!Cv4BUJPrq7*_!%u`ZH3(qw=H z#jOntClF9PV8F+D@0P#afi|}{F3fkS3gcmmLC~SCa-1KKcTeyDt{DPZ*VJTgInn@N z!NwOPWAW%CxMoas@|6^cX4i~$S$Sptv1qY#h9Be5RFs>szIneb)uX@e{>W-+$}!Zt zBVvWcEV*VN4`u2BuFfFmOf$yNTrO4+SCHi^h*& zxg52S*EOaQ=^7Zt!+%}{z}59f`n`W-N2sSh0Bb8rH&+oHdWW)o`#eoQq&RLp2jArc z?9INQ84zXPiDl1%mE<|W)}iyFwS_yxIu*#Y)url({GT{O%2bMA(5S>qcfwu!cHFkJC7W1BB>T%YzE*a$^G z_q!^#=nXLhErm&s57&VaCi3$8MGxE=m;#II{_w7&@XxJr$%6kTe-+N*(a@A3VXYC~AEW}8Sf2Y7 z+E$350jW9etP#YTC9Jg^j`Te zmQGCC@g<2Us7xL#AQ=RHfb~OJTwC8w27^eWcMGtWb0E6oW(+9EO=@BBSSs6ui6Luy z3Xx*tc=oHa%OE1A@-()C-=7I*#dEV){$q4OWeW*pdgXraWmQI$b~+aIz}6x1YlY3? z!f2f^?yG-Efr#ij(7`k1Q!q2M66Nf-Cqy_9^KsN=kF!-Q*J`(gS{Dt)O!VE`5;ofC z!arJgbejp_w)71~&`$6Vck8qg=*9B+s z{k?u?A~YSAdBQUEKDiH$aLlH_wcBvM*w#P4<{!vppZ*0V*4RpS@<`0hIF~G>` zChtgl=BvjY;b(-P4(^cA0Umf0%k_d63eX3IO`tQo7BWK`E1| zLo?^r__0>AjGMY@*hzht6lVbcKLEhgicIw*UU@zXgIjdDLQl_K7r^)4>SDw9)E6bc zze`i*o+Y*Vg~zE$ToaNr2c42Im1xOmaLgl(AnVLc3CH%CFH_&USf=*{d68R1nbYvr>r;(vq9{i6&ZSH}uoK%u{ z;UKTyy(g&+)u7<1&iGhy3~5lWgPV>Nj9nW^PEk7;2XVYmtsNk%k<3XNWpdXh&kos4 z_V2K&>{d}^>kVxUgLSnWw%{6~l zzpEGco^qAH>~`NyRN@5La6OuN+|w6gT!Z}q?EuYb!7i$n3D1yqoH%LO@?JDELwwg55x=9iNTRrwRkk}{jsu!4;za^yK~8i# zugS6o_nSSh19QB)k^E6AF*7&J?UhNnR~B*OvKEDa4f^;p?}y5O_Lhf7FU+unWg*#JK)VCNxkRE2 zqPq0holSZIv=4QMst?cD?7;BQ1R!vBhbhX*X&3^bxQ~V=4|Fr~%OO;}$6y|$_3ttI z5IdYPG!*m?^pdYZ-fuEY1RVrE7Q<-As@s%%9Mk)NaTvz%1>O6F1ReqIUE!6zM{~xv z7GMG-ZyFH@;T-hb_h#bg<&lb%#so2;WqvDdr6Jx1ZcW#o?A z94tl|jE#^S+R+2;A3RQ*kxHcz!(Jasrwc?>5sb zk%ma6SsKxAV7T8f{aBaTUC(6J#3GbV)BM^Q4z6G^9yN^$7gC$vS zM#>=II%?LTO+ibfhv3Hl^p$bMEJk%{dnW81wxL4MuktP43t`bO+9%zB_B(U?3+yy$ zNl7<^N7+{X1qHYpIbcLAxZFlicqW`tHXYP}(m*%7g4vu*a#FN0ZX3QVHT_LMdRb+E^p%IRGQp5u%gRqI3s$?`%2OW0P~g`9KX8TrQw+dn5ip1=|m{87Xs@QDXS@0kH$TID~_Esab8rep9nh z6M^f(wf;o>q1tCYKEB~5#cBV7o`JjFlRbyZ8WUMxKk5kXA78Ed4@PY{-3+cr{X(?( z@g23ue7Q_k*8#Vw(P1HaNUPbDf3BOanQ~LU z8{tss`CVyGJhxz5zdebV@?Zy>gw2QWKsdw@@jN@iM{#6r)Hs+T#1KsKRt?&T)ZbWD zXY~`n#&e;|yUnJNAXg!8cQ<&u@#8b8!8)n+x!!e@vyE>1cGu8#m-b^)rTHB16v3Kh zN0>*{%zb>8e*B71z+S|B4PY4k{<&u0`(V4IKDS>%e1`rh2J@-+50(tkaf1IoL|={a z=3=;Na{)pe$%bnR`#v5mv#o1mq-*b=Nx%Ne4w8b^4&0I1vziTGhDi$OH|xoye%m8z z`GFHjAXkg}((rcTd*^`OV-#ebx|_IGKJ(teY+QHFi+(ylQtkb$Wr!>yMtn7;4nhOW zN~&=hRb;r)F8d&8H1&flD0@4(kN$V7o16h+p=cG@{>&UepgS6do!7HtmALX>YqiyrRjWQH`L z`_u|usj|Th0fMEUj)7ji4iErSyRAA5zb8STX(@f&|J!=hVjG_lDTRiBW{sCF*2IgR z3K4?@xV5YSy8dowCy1?4P`KwwOSld~`^|$F)`%XYDre5HZ2vS%+n1-vXz%d+6rIb( z4V8|qJizxuObYi6KbI&vo1O&z#&2=XLKz;rp-_3aE%GJ3dq)?c2A}2HAZeu=C!=f8 z_0RDcqQHor_$~hyh)YG52BM~HCiMu-`DpY?>zmLxe&Z&FE2DY15+oa1bzBNrwdp|0 zj-W=Rm@LTpTbpLSrs0b~;$DfgXfp8q3Rx!4{PG{D4^nT~FFG)#1sWvV(0pO*I6rEP zxF|GQS*!TSagz+uWBDR z+2T}h)ljB0ngh^xGl(rJNlr1C2Ctnu9TZt-stvhy5@Q&NsENpo_-S_>O+pp^zQvaj z(pHj+S$2?($ynbS*|Yl)=`ql@3H7cuM2GI|L`Rmn=$stPB0U@yFfL|pfSH^*kL$qN_Ts;zUt@WYsrnkt(SvT)0&TbP3vIapU zwP!LI5GZ|LHyR-V5-DE0p5Hwx1KWsAkN|DQgv0)cA}2M4Xc(;leYhovjsvr~iJXo6 z(hpmugFM-(YgWW7^GQbiNFl(RiY>OEv||o5+F~BLY06zi0r+NQu#q6JNSP#y~y%aFHK68(V$E zE_h5Og`fA5+neHeBKJSc*QcF}M^GHGki>n@nQ0Y;^UaKQEOYp)|BVQxjhinJX9sfU zb~b67rpe+VpCgdXNcn?5JQv_!pm90k^f+8Cw)=Jk{O$y3j35jsHT{a(S)w(1{YKAd z-;tNQS_hj~Q}V~Z$=gSls#xfOzj3@7Qe5%DI?GiX3W6DwAtpfA1OfMUnh~qp?v)u|lU(%V06ZQj!HVhgBSFgp^d~qG`Bi?}7iH z_Op?a2ryQ~<{_EVia<;u6?1HH@WOIJBHN0r-9Cv962YSK>=&TCrpV8&bxW8un|7=9s8xn6#aBm|9cMxXpTRZmp9S9f;f(D+_(@dF}pFObJ~ z%LEm{bCHc>g8t3ujR%E6JuwdF{(MviKqun7l!*83?qO1cQO9jmEMn&K~#ium|v?q*s*0t+AG=XE1O|8sWAPJ_mU3rpb@6hPu8~*VPb(=nZM&25oS|w&^ z;^>Mn78|6EN0c9cX-*q>>qAWoi-bTHlj4EO>xfE#5~akX15c!0zZzwdb1uWxGsd{c z1!kn5tPXre&&DEf@B3?CV$7S-+Cz=(rninGI*mvl+6J?&sLzl+(Mpl@Ti-EI?AL?V zgHd~)Wzwi?ua;!Ej}Xioi^*$hFK@e@>N?FxmVxf^n$QhRAECw;{dx8XVznrMIO*LB zse(4D0@a5^jE30ZJYT|&Zn2B3iTwY&Z`+tW(H?U7N=rj7T9^=;x%TaP4Y2AU0EGNe zvh?ooDZ1HTwvZe2X{nwT@8w=V`jhY%{eMM0&NYyzL#ZQD?;h!;griNAe6|P~L|2V~ zbylE_RP@I?1#sD@XcqWdG(*z+3~HfZrS(B@%A&e8F;(FzN>^vJ`~jY<&i+X142lGk zCS7Mw4%n#>Oj!NAyk!v9%HQg z8Vip}J~enBlvdXabuzT+N+3wPvkQEuP1RpxjLX55#=aBh8cB-l z*WkgBOm`9VcbH{u^Uy_Cq;H{s!LJ^wfvCv+aw)8C!t+TG<)Xr>bXhvN*h14t)dQja zC}1Nsb>a)D)fe{u;j_vp;uTD^(;0Rj+_#s&2pZiR9Gy~QGH2<7)eke=k|_eCY)Tyv zrT>-pPYYw}UHuhtb;klh2kX7E3ADcgnh!zRIxvGEF!dN=^ z#jtstL~9ecdjb-XM+|Jsq`0hvum$%^u_z>#Nmm=})UVe~`?lfkx-fyMFxV}~`(JFuH~CmMZm%5=Y74q~11kBe z%RZU#LZn}G^=?`D;ce}$wVxE{Wql&F?14o+N$8ObBJqlGlzBQ0r;B%cUCZo}|7{F1 z>o*-R=mCM~?`yho)Jm2jCe)te5XFuPMcYB7qwC^;{}+sGV(tC8TYUR6v-4w-aZVCq z{rkL_HM3Swq6@owOZa=yoYvXTL_FjJJgl>9DKH$t>^6pKqj(m_EeOKaXDUJaP=i3k zi*?htg9X;Krn=YNyq(szk!12s@l@8Q|dK5Iec+y``3zjOVKumn_882ha?{_R(Hs7KyY~NLj ztZH$^%Vuo&ArlI-YQ8eR{SlAHZY*ty)fOT(7@#-@9T=Xfk{aQlj!NR5BW8^X-|rGM zSqK<_(>ubvgQ>v*{1gf&Xkg-08c6A}+IVB>N!8d;RPkKVYpN>4w#GZ#m!26G?<36@~ta?hDoNSDe66EIF0ieb&Y^}pu9=^!@_ z+r(PvB|494C~l;m$9$;UG%|MBDw>2WinC<%1L5DZP@@TQQ*8KF>e#Z#=1LTc+Iu@8 z@Gatr=F}9%n-W-*B;yi#(rxTeeEH|<8At;uvo!1h&|*mWUHOTnLS**pU1Iaaf~+Vhd~CPg=Yo&a^FIL#vrqS({EKNAx3 zXaO+wU-H|<@GCV6GlJgiF1kdCx_R{;9LWFVjDy!R0HL47497b(W$qMu(K?+N)v0#S z+M26`z0@AlZt#pwD>i;1b`?rDxA;FVLzE@uFo9fJGFMKL19%9Q;;b~gPaBu`Z~&;c zmv%^5+Y}P|sE%8wheeY|PY;O!lInFK+9RVLR@e~_ZKA1|)4Q2r69Tw}(|x4K zy%u#^sNEhj7uqI7wV7V-hSB|$a$k6M4RJK^n9UZxNNZs!hgWvM8esqfptXP` zJq{?S*SN>cw!Bk)u2e2IGl{F>_q*Qe_7YlxxvM6#Y0*-Uu;RQ&SC#ZM_+O!`$fXXJ$ zT@Wnib9NnF)A9V~bz^GCCo(1{)!->|JBG7!cX5G#1Yq!oaP|<(eN7eCu#_ctGE2gJ19*#9`_>md_JSYxOuk1VQq8mpftbrfyhoQoF zt+-Z^&7sbSiy0V5SiECChS_kSkUA*O`I?}6ErD#f?UdVqV&^yNYtnG)N95n^SC=V? z>hEuq_&8NQoqgll?Z%@bq9MDxwfL%N4QIZ(zJCiQf&myMeC};N%!O2R@GosAp%x=n zRXc+og|#rZU3zEeRR-wwi5y`lms(i0@W|dxvtS*4rT(1Z<3d#F3;;VC!xj)BE*#P> zSs=nbsTbAm8G1NYZ&CYmt(m2e2){+{N4diG#yn%%XOmi zJ`C-4d-IF&(h@dGE)*Y3C=hb|u+9$*t2v$4(TQZ>H{)hT?)N5HDItC1i{|M<`|%8% z%-zZXs%Covv!A4o%$bgh>GEzwNSing!7AUpa!@Rk5YOPSq?=l7A!NOWa82QNS-oeK zZ)@As)+ZNzGN_l~stLN)%+1DiWkhqp8DMHpMG~_{_aYEN5&~uVk6Yhzo;kCPg!$?w z%%eKot)l#6k;xfhQcIKk5R$Xx`TNbKcDuiWyG_ID|B>juUX=7cj9QIDlzbpogl~bttvC&IbZCEvJkQ&GF z5ncDf^9f>tiQt>0yH}!y(6%S?mh@kMk#?$TpYg=cMQ>2>$ z&Qij;!0qDdu)RIWV%?XD1cTtXfKs`tL24RueySL){|gZfZ}51a&1Tl1PcoD2U-3XdaWgrN%=> zuig^hm1q@&FI?~`{YpXNjzH7T`zS9lm>s8YlyPUx{0f~xSon07VCB9aDOhdWcIbYLqkiM+YkbofQ57>Jo;R!|pCC2dXadU(`o7da~~4Tb}5YvW^+~SMof9)pp$_ClnN^Qpb9(Rc)M)Fr02= zC>La$U%*%d-Rt31Y7#ePAWM$aP-ia5g=W6Vy^-3ZYvktII1FL@Dz#Kevt^AGNyqs6 z7X6)vr$;bEm|qmt`#}ocJn~ddCRH>$QomnU-mXA%#D}?JT91B0F?J z4bR_sU@6HX1bzfKTlQN>)3HByy8E?)LQ1mLoF{@OO8RexO(=Fu@T^mfIrBuEs^{+j zP_Hv5;gJRuE$L>`2QJ5#m@!@+xg+hap|Gty0J+hs&UBcbMdaaDQ*V_cFGOnZ{FBga zT%nyb>cNR&c_7)SY*qfW8Cr5HFYzGy?SKbb;@BkO&PH00g(js}hkRo2=!j6=|LCwZ zUS?Rme|_jUV`sGPbRmDREF;zs~aE~NAJuY_SaqSsZJ!Ad5Mf1d5u~ex{u(3d&(OIOR-mc z#TB`qfkZ^Z#+LIfkppt14vRaze;Rd z-esST1D5qU9=TxcO9LnS&=K<3foJTJ?C^>lJOOB0+C337kSMD+2W@>00txbB9xmaS zd7^g?Hm%n?GOw~HoViK>B^&8#O-+qf`5Uxz(=QeE#3>}Pv6kdMSy2cwS#i!u0~Q;N zA5XrX*GWApJM*FU8yZ<=6_iMgMlWCIYI$Umix)^{ca32w^FI1q9D0e(uq+8h1jQh- zVMaEOB-2UqKFic10Z%6xhvD(~CKl#^I-X^wRZPYF8js-kW5(n(usc~JP}Kh?&`w{R z@wErDig5K-<^dPfWlSPmo0tmb zkzntdguk^PUPLysF@_5HbO{;E`QC@f(L015Xv*~exlS&o>gmL>HANDt(+hB<9B#PR zd7Vni-Rq&lk;FOA$0;%;lITM-b4&+raOAi|){rM{owiE(emEU7Vb{sFG?ueOi5AEys9Z$G3*P#-4#xdX9JMkX$Kbu? z7MZTJ0T3c{Bv1Mfm)w*0Mc}(`W`H%TSln*6;`fe8mT^MA5RwT9@9@J`P zP&X$Il%4z&Td7^}S{2aWYf`bU_VyLGgBvsUYGyfYT2tXRg#iL`dr@!qIZ#*xd>_%K z*5U69rhv)W+X+N?yvD}^vT79cgrnoI%VlFm7RI(kX=;)d8C2frn{C7 zPZ|`tjL1-SMt&(0Jca6(KbaKcVsLQ0>m7&Lw+?Q+>bu6A2ab`DcL2duRTG>>RQpD# zpXsD#c+H-2asz`%^e3tUkk$St&%2VB7$xi0dK*oRhZR~@rVuI0?<%q)}4o249DQYSeUC6DpY=b$|3@z6F^4IQ`k`@ggZYTJ@x zjx0lY%39^VK)zn}e7Quko4{J4TS=m28Q(j-3@xL8S10P%#|PT9w|eS7+V9|#E{49s zqx}5mH$jm&(7RA!;UTrhC%)UIybgjuC>%qzNYgL`D~N8LXI7j|$W6K88Q+;Ix?+mt zxIdXQ(n@Xj;WA`EuH2d!lG9y;5`JhzjWZ=VM5r2cTxRrTU8VD8Q1|lXKqn7O!HyFh zkH+;MhISsUQdI~;Eu?hLG8_>5CrYFCn}9#G{Li;FRH7xsaxQ&avD#1%XAlB*-T-^Xl>~YHi{~;}W)TF>@FI#?*j4rR7_@*#3~YhI8CD#h zI6y#r37y-=1!vQn{|WU$BorGXUygLBsN0KV{o!2kyxZ8s)l&-@Zu5wLbp8tiEHw!A z0Nzt*GvbGPBVyysG3ddn;T4T(lUliRL zH|A6MPUTiIDRL5X*SXfa+8I@7--RZFH|KZ{ZXx>ZYoSuadu1l13 z-d^t#tog%8a-AS((bZpiXfw!D`fR64HfE)o7`vHQvA;9F(YFZ%4HbNnp{$Nq&8hwE zQ2ztW!WOryDJj7NDh8|Rh-ml?F|fdg%X3uo^D@DKtTZ5!GmD?>h^eC98|AF7evL8G z{21bW@*znc$8^&jjt$e(DysqVq1OuxF#S!tj5M}>L|4d+0%UZRdGm36;D0BGP!&TL z7?Q&s_L{TW50}?63c^y-UDC2bn?wy#)QUENt+sMEiO2{T#w>0($vUUZu(>AH~S5FPouKwE`A=t zSBf8;E1Hx^4(kFWE;&RgU-!D=yiKS=6(7)L13z};X?)|Z=bv2{sovv$ieL1V$1K=& z{6mcwaK9#o+-2O;g+B=9BTi3qbnC&Tx%-qvTy%Y7#5SBwvDU&GlSJW5UW=;}o7Bfv zFytb$oB%l^LL=V$J>9^2V`FC{3p?vW0}ZD_4^2vIsr3(yXCoDcF23q+V0OnBKh#Ax z34+NP)`vfxdW?yY-I<|CfYD<}(rdY>Bb}2`RAa*0Z{=87e%FjB0DS#dz=f=eytp>d z2iHmJ>yHK!M^z9M){jYmlo@-{)^G_;SX0afChC86q*^W*Qo2s!m1{aDW(0Y0TIoZa zW2Y80A#aa#u#Zw0D#}a!8vW}lAVlu{iIel#DVdkJHq;XHONlch0Y!~9yHK8R-1l;C zOEwk#N&&zINe3aZYF@M!^*Lvyb&4Y*@%e&jmQG5m2#RrCX4Oa?FlzK&wFdu1`QYK@ zJrsmomO5B;+%>&Sq1k?hL!5TRwkg=ldU#yzlCfc}P8c6q^kWl;-+7FU7>BDe6keQW z&+R9oSXWGMwEHz)iY@NX6z-B-!D$1;VMdBO|1@iKq!vB9Da55Vjz-v*#5yiR^QT-Y z(zA+`P!=Zm7#u+YIAsDvU1rZ5!GjSY(>19=w;JUAc$Kf8MsVki;cCQ%X3MeSnER|7 z-DTJd0`={(7&u5pex*9qr^9Zun<5Q@WLm%}2ln=n~tyuTPZS|5e_u$9x?wFQG z#Q=hVEyEe2jQ(Pq^DeXpJ08BiR-T;P$xf1S!V_VB$vKlU&e(#5Ln_Tk@4^;Z_AUPC z{<|k8lGCgeWHo0tmO2R;;%mvYGQuE=NwQU$pyBVx9xZ;#p+Exl{_=hMS@~b_mgAVz}dwbxMV)Jf;P*2L8sqX zzP)+tGty1H5O=EZ7fsQ>9p9WY(ky1}?6%t97YJzmA>9y-rJJ2DLTuj7NTfn~ZC1V-eRXvw=VV!?EyxkxSU$9ga z5t=2p;Txfy3u^53mGM}{sE5L3;^x?B%b)^-!=hy zKU2DF(2i$4N&OKGY2)&5!D%{7O{970t59hPmt9qf)9Bj~B?Y(!slAj7pFnDuKA7U) zg#X?gVy5?&0~O@>=5bp!x$BV7Dw;88S1bEF&Hzg#k_xn-y)`|7CK*mZ#|P0qqfI5W zT(i&XU?O=WG#;rWhnM9#UARz(fWwD^r+L!?7F!VTI{Bi?;YKv$l6L>4*%^1ixj9Qs z(z8Y@Ui9T)pl>|Ov(yYA0JoOo&%9)E$_*7_*rSB)kJaM=}(8o~yuJX1B#%Je4%_<2mnoE7Z$1PKNDI_%FulDxiKN1(X zp!X)ke9(i_jplYD51cb_i6LCqDnI1!683>xR1)F$cV{kmsQ3Pw=P}2sXx!?x-%6<(`I(2ymY~%2SoitW` z$NI;(>#C@*P|b*5{`#LfXyqcLsN(fA1TFq$FA=1%F@Op5b#GN7D8!!FeKii0Gc_`F z3)A&RyvPoBApm-?hxE7UaoM5Ugj&TDT_j}%Q@)g#W0@ytoc;R6rrh1&l}|c!&K1-5 zC42==zwP`5_*+FoAHv z-}^dl*_4A2j$!;1!OlEjX%8$17kt9gka?{v!->LH1^|F!6D+Uv*E#SmoxTWK$PtbQp?H9lb>3JOEoT4ZNXcH z!8}KXiG{C8F--3%GZK&^wzvVy(`a9c&dbpHTarb9p`v*x#-ePb>Pa5elDN8W|7zbiF$SKYjB6Xi^%ig>0EtBwD5 zg$xk2GwxCH5V-!b;)nl)rot^~YU|dtTU?h9l%=VY{?;TN#*(KJFDXO<*5)LUxGKcN{7vZlxiQk3Jl;O8=P5le@!fhp$+!cv)1B}QO zs$-4=oqVwiBDQtQib`~hH#42VX{@weMZZF_gy)=H4M%*vvwY$^hL%nS*s3OZIBwmi z5~@(qoV-bpg=CJ9*`?Z6`cnpLy+5lED{LBXp(=%v)AXqkmNR##-5)l74um~}FQgT= zFYuP0a1uDhn!a2m$Dlm?qDzE!M@>rTFf8QHxH4)-Pu?-bk6|u9U=7!c4%{2Hq9;V2EP=HMAUAP&EBAhYYaX0;|jv;y?bBwoUkE`TYnHR|=PLhG5?cS_ z6Rzr)B?+3YVGrl|rf;QtQCsW$@y^KN#gj}BHj5TG57~U}-XwIh+L9tBFrd8{%dlNK zWuE38USXBL?BDIb-x=BQAss79C zZzp4^vg}P5Lxsj)92bBd=0Y+`#Ncj`cna>xA5j}zw$8tkyJ-xr+$hxzq~5gwE`Oup zQOb>H7VKE1wzV3JI1b3hENVhh1fmH5`dNxK%JY(Q9U>O4h<#jFmFJpJ%=J3@^TBO; z{)N^rAZVh>@mUmfaK@DOTU4wZhyAcnDhk(C8&VLOjtwW)T~8B2Wql_$HbJb^X)`CC zS|N-K*P`lp^nD)irh?s|;3X)roybaKmu;8xyUO7`J4*#s=bTiWf$dj)*X|5?zTxHylf-Z5Qe>>v(1#^9m4{YTZ0Y z+YepJ3vacpj?X#~k}>pk8#g1tw0-{&$BajsuQwjJwM911c(1%|J|?9ANI>Y{H@Zr`_?*R0#HK8$vu%EPQfXk7eBu70Fnu_*K`Tz!0yjk00mJc(Rt1RlF$lH$uw%l| zYExmL-26-8+d%OR4~Hf{uQ4j3W(MWK0Re9BgkwjjT?acycFpo4O!z6e50U|~STKX+ z-j*e$=Nnm5lU0lwKluM+ORVk5N@K$Z5z~?0MKT3wO5k5so1t@R_Auccp%PmRM&O#_ zbgd5N`JP{T5|Q;P76!?;H5u=>dhz92l)hysH8aPoNOvpdn7J%8vFwe;p*f^{PtqZD%4Aya&6b+F zKZFbX?$MdRMa8;Cd+mnPRb$Af5a=S6ZD3+3*F0oO1PQ%8KAcZDOsEF&@=96i)=0}$DATi&#!b4BQbn*k|A_BuaCzyusfye zM95k4R;KwXs_yM6tScOVc9p6vU$OSQz`~<`^VJKZl-A~%+r=MBzZXre3ot2VdMWyVyre5+r{WFYBD7>2xX^g$Y$%+AV2A+ukAk zDNhdo?1BWJMUs-nK{aWc2CSaEO6eLrY=M{%1f$cc@ew`GHy$gR zi_3eeM0&NCJKzu2hMoGd z%b(adN|^5s=5Ho>;OO|SCh*#JWp^^ipXuaHj%3?hUI#3UU@=*(JpK>H#csV&?63`A z;&t#n=YNHAeqBLMECXR zOjmE1`&wMZ^&4Uv%E`o4l6HtZ4&Bp=#7W<|pNHvn2CPwPB0iDXXxlg2{oW-Z31nt( zy}f&rP-9(7-41j)lQIzE9dlHFm*q_Z#Ow%+m;TXD+4Pyx5jTa7pe;&XYI~KWI;~CM z#>?;8(Y!oGLc5uJp$W0zTfz^(Wi8DHcl;?|+`Do_k$kt|+};<1db4tkKgR_+G88A; zMQjM6T{B5z%4!Vk>QZ&u0N~Lh!VQ+_js~@)zKEQTBk!{eGkNRJ0!+Kzo(JFaCJBuRO>*__vM1!#3LGmvwT;I(@l%<=Yp-XcQe>`= zgP2pX(DdoF776==b&43be(J;^mM3#gsBW~}=(6P3Nr_!iyV?h%Vo`W0TcWb9vQa*N zmWSww@P+0?3Jzn0xp)2tZ07XR8s3PY{g0xS0mnc2e0y%)xu?>l9+mNiZ>gRJ{Rm@} z8@+_wTMa~y;0bKakO9)&j13lT`)FUKJHwmGVP4-FJUKkO5AwB~LrbnzoD>fxp=>4< z>SRfI$^NrAo!gbS@>14IapL|xH^IjUJ$WMxrVNNwVqSi8S6mJzEsP^d?LNdt0$*gWIYM5dk6X%U#O@KT?!&z?u;Z!)&U&+rkX)-%J1EM0tdS%vuD`9@k3ayM z$ge@#m)C*K77t6PEI%B)D0LP;|E@}sVIFdtVLVU5f{Jtk-NVP~n#J5&A!&|428o{D zZ#Qg6dt8afR%()G(rrk=uI2IZa7c$^4~{&zgOCUmvEQ6jC_lphsXza!cuITkNE{~8 z*c&sZ%3|@yZ?f^tBAqfL4sA7V!TifEt}pu9L;2J0i5>()cZI=JZbGhrZ1E>h%#U+< zpEiP_`rBp2)4~%e)G%44l)|D-OmjW2ek*hRandXkgGW zFCu~M4`<4WHIXx=rM}JyMt}AvoWxuK52Y>w>k;zh3itX^Lkk*c}Y^O@WfB2u7&Oj)Zj4 zH7}lhtuX&bU4#4QyU6!5w53qxNGO+V@A9~xMiaL%n))X$-k~F~!^s)N$7Wz24K&GZ zw5~n5yb-IztpOuKtm`qO%_(@v0^3isCPhzMDN$jIqPjk9feuvn&K~9dVbWk6Ok?Oa zR<_}%SyUg54=b|JxA8}az>^-;dY8x&EY4Q53w$XQ>zK@$^;jrw?44t@oFFWC`P$&( zKGv@{JT@M-Cf3~KUU#8OixZY(nL10? zQLf6T%$b`$MRyH|>p~?|xzP0R|`Fb(KN!uCJyf zWq@nKzrIMtCe-uo(VBJGYliI2&PEMPg1Y0j4W89CDwJ*Mf{zLm-vO6n8OPwM!%jy| zN&!h3Jc|i7E8=R1ai{n6({p=(qC#r}OK{2~W zJGBnjPLEDg8WN~2VhZA&Q2rbd=JmIa{?5@Y!41PIWEaG-C3#HZ7dW6>`wi zvh9kuUg28|Oak6bR4fPsb-0Md>5yCE0V7eWk%?<9$--2J_uOuzq7wX7yc24V-YFWG zP6abYX+*)#v?-p`ymM}H8D5G-MvR|Bj`9EkK>fe&9R8-B29UpUpV=5GGSkYU#%7d^ z=-hh;Qenk#43-kqO8R!OcnWzWal{q|GUb0PFCCK@{mGjECcNtLG)@jan)zNk~Jrqb380iecCjDlds z2W-06J3)b|FZAg>e%!O*>y$X|RA1N@x6R_U z-x=YsL4kF`^Fl08-*TN4F);y2uX*#cSLw82lZI9iCZeZc7A;cJSG(w>tbZ#KL3@>e zYn?}8i8?$o&z`veYpiVL2Eo>BW9n|BfYU1zF%65?E&cI&n(LsEoTL{lKK{4{LE;W) zHKscDwRjxQ^bwhdD)$qtbO|%eI=g|q8il*nAkfTyXoTu`4rP!S=2>I|FV(J73;1 zP9S7CAo1?~@wieBNU5M_D4M%K%0Trs>9rc5a2$h{AId3(_BxV#RcQFr0! z+H?OrMx5-P%k4D849+td*<@zAyBN5CO`uvP=j6nRg0A!eC?J9jZDFJo^#K~=8J4rfPR8}`^`Tg7)N7VI zJ^Ax{EDh5_@=IUe`L5LzCj4OYyE(;R7S)-f+CfETm#(>uUP6PpGYra_8U(hvN-dzB zwxz4+@!FEGMd4xnvU157_CuSYWgLlX%!fbdmi1HF7}#8t8m-YZk-zkNTRFd8F6S~o z_i5kRRJMTgE4lE#vczlSDVcc*y0p#1ACcjS;=Q8EvQ15s`}84(3Owr0X$wnXaBsg> z%oOPdX9nRx5Sr021-^>1kBK;pr1g-8Xm8}dCi|w)D#+UWPZ(s)z`eUI#`Vm2Gy9xi zh#1U4W?&_|{+|rO?0mi7f}KR` ziC!svR3&7|H7VAtAyJ!THiz!`Azs<96YTITS-L>q^R)oH$j|-%KXl zx;r*+r@axTb}}UXy$gE`-xc8zW>U zF*i)^=ZQkT+dJz3EuP~=|2o`PLwiFEEB)Fnt*%SLBb(o3s>taI{CjpoP!SO4=b|Y8 z-O*|@z!}1X@2?G`^2ov7-O_yOi8!%65s0v*x`oo}N3b+}qtT3{@VJA;pa%0{o;#)5 z%R7VH&m##fNQa$mh0f=PRTyYyF2&4PC@5+n;Rv1VY*YbSKz#Dkww)e6iKQ938LHGi zTa_GNLFTUz%Dz5QWxS#R&zNTWv0C^y$Ln;jOUXC|aVKMnr&#;hqYvXQLM+F_&mda6 zLdxU431jw@yZHfvU5*ITK9>@$bUjlPZeXMkyvwdvmIJ}G;r<04QSaIk2MndrPLNLd zXX=C*_viDN$Cp;S{W*`ZKPSL;x}6-j$a#)!hr{7s(aa+29pe}|ujAH@grnNgAYRD-k ze$LkLq;D5>?cb8*=DcU)e7tZR)o=o#B^fGhmJR6aBy)(Z>81b|z{fyt$HZ=}pdaqm zJBDR;szqMTD`1QB=*8{X$!EisJXF5DpfO!Hp!3Zd6J32S);y$bacA$);QC}U=3nkblG^lm|_CtMJnbV-_L5j@^Yi)29g`Luv)E7Kpo17Vb$jljPa3wXFPZKO=b->+|MqN z&EB9NdmOXDmD+9F3k@*9$Y2@5Ap8^c5^SW;Kmq(hWcdx8{vSfgC~!u_&bD^$Eus+v z<%|r_uK7avhds-y^gM9V|1R5_d3Uh1K_Qdr-s6s_CXyvl>dA+{Z$=&)Q<e17+IWsj{~VIG^W!>nnr4%{pe^B&EF=#Po(nESn+hqV zejW~^Qlw~)J_qj`LZVi~ z2}n9<^yN({^}AZeZU3$3e?6_7&*pg-7^HBI;1g}qM+oLDN>-|0-f~u|cCKE&fSVZV z8YOF;B9giQR`SeG>%G98J&x4gE^48(FI@RzOLnWw{LZ68iN+EYR+#~#X?xF__->R z6*Weqnsh|uVo(|bGO+k3?u6scwEyll>@L~Vry7SK28FK6JO<%MUb0#F9BJfl{}}dM zbP2dq|Ddz*Xdc^oDR3?!2f8zgd3oWRrf6StyPtE&8=BJT^V&eTn0XN50}tZ4OfrfT z?i+xPV8vg}Ge-VL=k)GOG{gebf>dDRC_F57cBKb`$b*>Vd?X6K&_7%6NAr#5ug{>& zCES{fw|1-spbv$Xe3W5{@3?H@S%o&0R5=Lz4%6V(eiWlcR}NLy?-bTi{vAKgD0+J>_{iIeLL&iFnj6Es#}4g+HQa;E{19 z=q5On48|ZIbR$9*gyz-aD{Imkc!xCz-~-(2mfLO0EgAN&jd&g_)eb-OM3$V@@J)P!l5kkCz5tZzJ6SS1* zw4fl|^d(-9M|NeMLplO){x9bWx=g2VNO!VPn=BSS(j_Qc1ZSBtM)V#+3D7AQ(uF6Y zz};d5k|V-KZtwB)a4KK~g@T3P&CG3MMMgiO+xKl8A}T_jfzr2YlP;?^u^zux_t;vk zVsAhlooY?Ha6$2}kZCgGt59Qf+m$MRs^3=j|I?c=)n|nlS;Oy%=E5d?xLz>aPq!Vz zA7r@;O_1Z{HG7-3yVodIn-A@kbK0E%u=Q!i)q;=H1(p z7&U_KLWDUKtyZUJePn?L_~tkL2 z&pzb~z4l^31F9gm=Dm98J85gI5uX;o{$IEZn8z@V)sS-FN|Y6Eu!8qH;Khvb#u1xgsRnNg0TwjOz}C0JphAATqVuX;|g4cnNqo&+@#o4EXIW-d&BJc04R{DKSY9LDvX!2!!*r(rJkw)*TTK0Qj02wHXeil0uWXZJti zBs-~xu0i{mV2AQGy6D51Es>L4|KW$}LB2Wf_tQ~(EvQHCnK2yX&`bH;VZ@gE6zAt) z?bT-ho@`uzYKG5~s#zmERNxA{G7ZCdPl;QK&CmQr0!jGX|L+v3Vhl!bc%i(Tc8IM9 z4NKFb2JbP^3>`Vo4`kp=BxAsYUrE=72BfCda4bH-%a0LMHdQ+I+Z?E3OIy7hMGABc-_6j;uKk5U&C)L@j3a(v7&CCG50f2+FwykR6dYa3PA2wIrFmZ z^h?nWMGk#10Ya9`x*O3mzqn_?douQkLT!-gN{6Y*cg`VS<=5KLJ_x(cRLS#bi zXlR|)S_e7^O4*mYdA6cVW};R=4x2rVK=_8h42^2#6>)8YA8_fbf-$*p0w`S~H96!V zkfXfq*36wLQYmSdk+`;;zlOL}tE<=|Tc?xahPPdCSi+s!(88WHzn7J~%`hdsmLZ8c zGZ-J1qzY_xBCk++$**9(Kn=_=I~ILXkL=blL|JW-^EF~}AOen3oZa-j?pTQm<6ODc zC#Vi{*DTfd)TyXJ1PcqQz zPs>C}@7qdtnQf`=kSZzOT-Q8#74_;%#$Kp!8yvmVX@OyipQ|6{q+3_Fi;JdR+dPj( zxs5L&a!Bv6*4P+S1gO;ndmj?wIEfrDoYwVLtp}wY7i7k)q=!W1i3Nrk7n+j{bZg7D z`9hzGpl9MX9y4pHDIOH;mTiK$z$$%!X#G%32V1G-laR+38DfN%7pM4m|> z^?mLMy*k*XK1>U?P_W?!hXTyPG-yn@Wj~{ji&+i1;qH*WW2mEfgRQN_FoR8;o_r1?*hHi743kvK8gwThEr?I}q zFYBzVly(bJE&Sm98mqxCjN(SdUVqI^>CM}V?6yCP!D=#=ZEqvw>IIgrh9iuOtf4J- zfW1=KvNMp_BUPOagQy~f;-QjLbg%!=xT5Kn=CNAadjv$LQ7#+QF?HYx10jd~8D<24>>+gd3?YF5=i<|57u^g;Qco!!9!FokL4N$$3-xOv)l@&@tAnA9J{-{W%0dVA7r zo6FRun!|rBO-hHfFIFD3Dgf&1IZMBK?%*ABPrc*>j80!;?EXEkk7Vo01J2`~ld2BfI9IEal z;In(ESwxlW!AJG>9|BDBw_oUiuEj(GU@-}E7p67ZkCY$P^iVPG=~xq@rrfyB6z!5K z-JfsHU9@jgxOb_kV6-bRR%QTB|0&p4n=SHd%p;jZHHWi6;;qf?d-RsyNSAJa502(d zkCC;$wpZLQYD3x7lvt9eFO^&rQC+K|QCkf@8jt?z)%zp2gj`_nTWckUjwsr9-G+|7 z@vv^|KD?`pb?wFK+5MWjfm8&g`@sHJ>boG|xBt{W6ZF_P@2z61FKgvgtZSIa4wgyF z-G=P3jP)TWt{wh$fv?qotJkZe7=r7^7P^&PR$3tEsn4Occ5z*dfjm4azFv-satyB! zx^@~|X;7@gHSqt6tctS<0DE`HC0V3f142coVYaLRO-J{Q)?UOZX|Upqnj9~Q$G7DN=lqc<$IA_ zM#^xDoa+-1ns8^89vAmAFjA#tir6>e`LpX%>IMp%KxR z_*(W#XL(e9W^WHQ9Axo{6-Z_?^eRB>Tq9mh5^auut8)RPMhnGQPH%ZN92+>{pEFnd zHBL)FoG5MqU7)NCMzG<&aMa^|z19a8B5<1Q?}EKsO#ojmu^{d1E>yi45_vfN(n#kw z^rp?ETJW@8E2C4z)M>Zby-1&`mC%p(nImpf4S%(%)P$PGhmNqquPyULP5)|ZlpEo* zMl|aJjPiPWF~_&UmbpT_Tog*TpEv`!+BO0?BR zbgf)(ZnYwGVAODdB~>C2vcqaEd;2P#Oi4W1{jHfl?wm`bU&)~LKgneEy6PCPR&HXU zpEs{8Bj%smz5Lxp83d9{f}46(y*G%?xRxvT6ta97BUxv1@Yh?*k-*b(zZAeiHP^BJ zJ|o0E1l6?Tp7*wnM8BA3_LaM3IA zCF6(G9Y3orgi$coG=}kZ;-&EwA^PZCYKi;?D@r-T`~kk2n~NQ3-y-*# zG8m&NDMV03i8EwG`0-$h*+E51bJKL{MaawA4IR!o7@w`|UK+t_gxNBLO;sK3Y+MT{ z^Z>JuaOBsr_Y^lakXduTT`Bw+TIRD@Jg^!_$98lh?vtiR_VpIA_H2a|6xD@+sw>OO zRiAexYFy4XaKKUHaV5DKd8JTf*&n_?bN!gfBCF*kV29eRvm`^X+8J9IS_@oWq2>2? zUw<|+9CX$ho#Ze<@y>vl+u1Ppx(}MZB?Nq}(%h6uZ)9LVGlhHgs2(M9(y(@AVv)Y8 zVR}=8Y>;n#7Uq+N`1zZX!^nS9M&2r_3pJvNy>XcP*f~E_;s=#-qv@k6c6UM3+7-VA zp)K!7CK(Bz{J-Ddi3v8C_$^@FxZV4rnpiGgISh>Zk_fn(^5();2!=M;;J~t>z%031 zqv!Ijuv=CG6GZJ%9%PZC>c1kdFDTCpLZtX%E@cS-;k@E+zFB%h>;Fy~lNfQPYD*`8 zqL=0`cn%5&v7>8n{Ol`=)Vhku!hqfkPlXgiatn`&-Bb23=7u@Mh{5kYohNCaEt&efzV)uZO8hap4gcGq2r||Rz_K43CV*1qpN)vc`?!0~ zJH*U>vi?2{V*C7hVml4vz05Ik85-cPH+*R$OS}FwMuqDwJFQdH-JgL&t)>5xVBirC zM#EI^S&WaV`^j2kspOTutj7q2Ev(f6pIy-3z3$ZcGQ-1I?2*$c60WIF=^`!4qV>fJ zBmqf*=PE8^KfiNJg+KX1pdkK5r9nH3PYDT&nbt(AictG7WD;oZuSi%|YK>*Qc9~w7 zLsQ~DFgYrOvL?p>&j5`Tt1YP@ZPN!vTI?#Hy$Z^>EplbSm;232Em9hePBi+-kKccE zo!5sW`q-V_>D<;ZRwvgaEs5d_I22(x%u|}t;GNh;=kqMJ^lm?O?=vQyjM4Oa+sT&< z`TR!Xb*3E^bB08OUCBB{>@<%cULTL6KNMbxqInN(>x#|114$;%O@kT?yCc0iN_tj9 z@?WB11CBt6x|{JPXKlT`;~NK&E&zCERFF)_r=^CgNIf3nXK`<^zZOCD*=Z=a!0AP4H)a_?jWzS^H% z7Gp)*)j!1i!8szc!mg2rJ|oZ$HaH*-4f-_ThCJai$4e$yW}FcsR~0)axrX!i`IMIA ztka8hBZLcyoGj*`{Je(j0{Vox4N@>7=`2di)JCe@4J2uy%l7E=7>yu+!pe^Y4iMJL z(X_xR9^C(Ar&S@U4#IAEVpr5KEM0a9Vxi})5OZF!*@MEWR4g5aQw%6q>#|-Q2EZ0k z$@Ycbv}JEvqsPg#!#C=DdM;$hHaTL6gaX4e3r} zU+z3|#w7J8gR|QH{rYweI+jMoK-C;2Qa^$f zsEG9yybF^h$jybdM8=?KmvRBHrt+CY@jRT|md=QspmY9OOCNsKV!+Z!b!?F=9v?t) zOp5GBKaMK-S>VtFZ!t7rlx(0<5ptgu?oZr>uiw76BwJd_l0W7x5kY)PS_i=MhC<2i z++DQYs4|cqyu+(!6FJ6=TX3CDMkWJRE30?WI+m1}zC{d9EdFOIaC`K-Xas>;g)6?%$`pPMeCD z&VIFyvIAeB`1i+(3SURkJ~HPAhg1X@xkJ@4Tf0H+vQX8sC=n8|xo@CA-r`7=2NSm- zn1FJ~1|f0cZn4hz9YyWde-4G02f$Z{CzPfV;g;xX-j^u5AJ3)Srh6r+@VW8bBA@5` zjNd@9oegV*C^#C(V!^#p#_2COfZo)LaOgCL#6;iJm)cY+X%N3%rXEo_^xZB`i#_5S ze0=2}x;$(e!bWv*A!L<90-b2oe9=Fy)8}aBZ?7wo%BOAH7p^+6SLD=!^z7iV1UVf> zAKE>qYa^5Z#wS$ATKf@OpHgwlA`Sisi;4RoPqVAH_C7jV-M%<0C7V~9lb?k+p)S@kJzd^|y#-iUdv6+Kz`N-@kQ$d=)6 zfZ!KB5VD5na77LMPd0ebduJ~~T1g>D~-#ktJni9jQG%XquRd_xY z>A+&k=Mymj(zOb7qtIGtN{G;K?UH@L6<{gK846GAD3+~?k+4Z3hVkxA1Q6f043Zd&$mz!Z>O$Q(p9Nz>>#4 zM1nHClpL2Yo#exC01-35tcWYx&BLF7F7G{BgA@>mzx}!QtJ>i3Jr93K@J~C|Urg3g2cb7=(2ppodikKpg)baVNZjB% z?tY9mQ)z2bG(>I~Xa~q*5QgVh#S3uFt5s)e1&qa>e}#&ldJvxg%bDTI1TI_qI?@om zyQ_9M4pK;fr%->92i$4`Bu@dmTNLRmcAa3IU8oeAJN5lEJmC8h)6o+PuuoFl5zB=r zaqNWtm|&X1O(?+KcrpT3pITR^8$m&nsdhJ2bwMlTaRY8_GZP*e1(w9UY!YVKTxs&= zF0nk8riq94))fx&j!b`=l4S-CA`|(CW8T)7dpbbAn#n$RDz@y{Q=p}+m0Avw7=zG% zN*mNxeXc>uJ4B+8IN2h>7o(^ruhjYKNnVj!0+1y~$4DTHic9 zez+Y;mm(q#2w&2UgB~N-I^8s66)U_t8(FW zkd&fVbE#u{rE<9}yq?EWYHHxXnRw=U!k1#mTj&km=uc@U+OC4G)4ZeX^{mm^K8NN{ zYM>k-d|Q&@3xau%-l$}A?Bcb*DLmeBB^2H94|su&hTyI%fUsLr9lQZuOgW2qnBLG? zplU|*ZhxhalFx)BVixSCWW?~~AnayJk7lATM9>~k+^Q7&z3?bE!Tqw$J^b-2)Sc^* zvBjJf%dMa|xiOwcw`h9iE0gWZi|oIS0zPq=M`{3agz8xv<1_uj?6-@W zHkW&90$TaS=k)!jlkDTlGIpeW!_&A4Ukc3w)Sw(zV z_qf`~t5ezZyKDxz<>(Q)gMLBF_Y;T>jeUFYJPp>n!>WX^GVGg57V`{|M9-!>irHal z$6kjy7;a9%eC65E{9n=47Xb~H>~$!mmBfcw@DOVIL3eePh!01UES)6iOe}5ZgQ*@x?!fSUjwd-Q#;+JTV zSr4bjEsYgbaG5;H8F=d;^hGH@-c~_dpAH(rEJCOfdE%H`*vajYX{M0;Ac_Dv&eDfh zWEpv~5-BOxOTw8L)lPNRBYWY`qP-qrKgff5))+PqAC&T~#LYiGXTj^KRyUHs;}sZq zv!(Yuc2(q}_qU}_{zEC+b>J&^mWWEU*Q($t_P*7=GbWUNEunjtXkwOQOg#=TM|1?; zPHW|WMF^05#`FvQxr)aJ9Hb{b#O3rZaiv(hSZ5_#_dLF9Vr+G>nhLe+-x|_^#1Hd% z2LgImO*IT;*{4yJMvpu)CM`~BVk|O2UGG7Cj+^vK$^ZC)_&%#_+Yn8mb&*VxYranv z+H@~@39_fHL((QQNBN1OcI`$to+}ed{UKdH-l0Z&ZEq+ZU-S4V(~-5c^jK9U85A}( zplfRF`Q<`2%-T}6{{EieP9f6B<6^-}IyGvxzvf7+bU$tsq_((mhlKLM8iEAxrK3=| zce&~-126?0t0@#W{_G-lIT6ElZ=`68FqDcWjth7xa42w%l*miXA8_SR!Ry*QpCQLZDoj^y?sI^a zIJ?O(hCM@lKf6x5l}vTA4OsV~<)9lx_aQa45kWf9tEBcCkLbTGMc(_;Yn#dCnS4xG zjJ7rFYK85p6oD2lwy?8iV_Ri;Z^*^P(3MHfZPn^uAaN zf31xwmuVX4zH|5~wdv(ltFT2SY!Xr`l$Y6L5kDfl7z??G2gBo|iVQQ{KPB!}o>jE4 zs9PrMk5X>->XoK_{}LM$@+tELi(KIUS4!(cCRc-Bv#&Ex7|$#H=0?xB5Tb)(ZZ|z7 zOK`$fi4L2ge&2s=?Mz`KjQi?n^cbZ8O&}z&r6GSJ_J^WayaT<9GO{Km;8m0pV&)jx z55C`U@k&E}+o4tmDleMnX0(1YJAK6k2sJUk#VdiUaAh38@eE0b0>0d{LuU!65iH=~ z2Ka#C;Y!2P1#@53_5#)1N1<2DzZpS(-bw(4$L04uCBu|!iuGtnkQZ|xO`_QZTsTHK zqi&%eT#;IHEWu2CawHcTi@9CimS)7uDH5s%HJGALWbQ)<%vY>T$VxPndzx`zy{a1S z^J6!=bEJjB@b&ZZ=MtM{kMSUHdqQTv^Q(Py%HiMBI-=qI3+f~y2)7g{0eV?P^T``6 zAXw9DtB@RqC$;Ghe9KXRTwuAch1P5oxo8Hbj9b}G(dfHKhD3wbDXEYV07 zTTcWt#V#t1=iU(FiR^)!HJCjhk$)x0CH2JbXamFT# zmlNoq4fwG=$jZ$~$i3tvpr>^oYM1v5NZFfmw2ONVr~VLMJ9ljoa;R$<0fN1TD)95u z?lsK%U!oQ>GJ)CmJ?9_HRMR8%U%FDSt50vrb##(}G9cg=cr^%UMXWgR_cR(}*(x^@ zjIWsu*dP=je4e7%e;yZjg6kYYs=1~x_y?*`rJm&yXUbFqLr1umML%&l@Mao| zYaMHs+9`)Qw>A`#>~S1M(Lv60-?5keXR<)y!Umr{%mG^V+x7b-2CPMuhGkDI}EstIt%`tV5C=^aGx>lcPH>js#`@w04n%GRpK$SWO>Q!6HA74?{ z;gX3H{&FbBDX;1(rNMO#fDPF}I|^qhi&`nW%3HM@>zue`+)AyL^yC4Rc0(jbvn|Hz zjfpV-9bJ7;#v8^Wy0h@7k_kh5BSMmQF&OyML}!HNBgHy)g^dR9jsF-CO0ts4-8R@f)t*Ot{@1NbXVGRxks zw64koEyjyc(9^oIrZ+EPKXNnzLKTB%F4n0*KqSL4d(^n>L=e`dA!a;Gx)ss)J4IcMC8HeuuiuU$IsD#{ z$61s6cMI4UDIAp|^Z&m-TJ{Xtr)sFpCR7VtS=na3fNBcqyt84xdIF6gktL;W3aEYs zZBQCHF>VqGy*$oO(W128`roD$3cNscw;u951D%~rnlqu?C}`p+K)gHVPicHTZ8B(2se$U5s*ZhhS&X82Cj%P(j;}hF(j2XfEIx1N1o&m zk7U_uh1fvE75jAltu~%FP!ZLHS@y;O(n|t`(3;jZMn7de1uGruhs0CBa0-ZZBF~TV zIK0``+q}Zw?FxFagJ#V}{=Boi{w@p)e>!nhi>h;ysQ7)rj#sa}3L7#PEig88p@U)%#vQ`BcbjkNJArvn5Y^BJi1e>zP6i)q${oGwdXP}di9DbXL+-36s5FVPK^b*SBcS)(i zF->#AaiX#|Tl-=Q*~kuKs%`9$%dcX8fgfF7;>S1Y$#Sz$U0= z*zi3%hd+-Ol@WMxGd!F3#en{n_xB0BXpb;94%YJn45nwm4tEX@MoILw_Ms=O7v6|* zw6W8a6}c@V=5d-l1N=q_kL(t`1(mnc>t^PH!2-7Q^Prr}=m*VarJ#;* zT6&Q?I&X`Md(S+mAeojVUaV|Jt(|4In%9H$O*{fiE106(#)QA^3_ z>8sl%f62K(!6x`}X*AxM(mDz~32%}%^vI6QPeOcH^PVt&94*+gAyjX=8%*Q0_7UW( znia|8=@SE`X?3&ETq-g9fR1Gutw*~z1aVbwU`}ufoO1geH~2s=ha*i?Xr6l`l;Eb0 zBxpJll5MOByYEo#Ze_wptS#QlpTsdeUd z?7;GBj8>o25+&#;MiMCv`g>&Giu$_Zvee6FrLZi#vK2~p^Q)Hn}wcZoErjZUZ}pD`9X%eJO2=lgatQ-%=(Isdij`ZhDzU9 z6*YE^=)w+Uow|5BUx%RSSHp!J62PHxXVB95WF87-0P?hF;p$z{Ape##hD____|DS; z(6;jDgWt~ppre9X~gHC)U452^JyEur-N8h z^9s(4sixUj6%e3SfI2j7Lm%^c7&ZILeUo9RHG3)jbq?haX`?TXWOT<@yR=;Fw~8@& z?eXqy4>-Z^SwBY2K1wk<8Zt|548_7_m$*R`T)nhT%h^VgWUE$^2$#|4*c88(6|tO*iTgyg;@*@IWH%aM8!vk{s#3q>J( z*|CHs9R5j%pIUN?WM|RN8PZfhq5vua{a61_8BfmpBsFel zE;F(`fvwt=hN`C4f0x;C#?X;UVe7fW?+a$X^O!27k;m*20^69zJ()Z$R8@zcU3RJz zo_OnP=@%z56)yn2OJjM^0)cDr%TqjG-RqK?H(t2dI|V=Q9t{uUb5(wuj`3r7E!l-N z7uFsV2joiGK#pyoBJm-hfs_!9rYftLB%sczSzoaoXU}o_zS)5HYW#PjSlCKA=(jT2 z$MR;hO(4orVU&eYs_bopD5%^uscdc)#@jJzOgOu@6smJLDy1G(_0l=*C@dlPH~y-n zS-w^oQZMEfEUN-($uj0(L_zKQae7VNqlTU$`nXaDN+shnZl*A(SQo5Eik3-E6p>Y% zqH0EGwE!#o{PCu+--1CY6?qG_BT2blc6n{c`3{I%Gp5XZTlZT~hZQxaTOwnlj3`?dPo<&Z`&61o~_G{*phZ!5RX8>C&aYNNZvsUCXb#SS?O z2<+jd;=qV@5n!sy8_O;S%nOJO1SkqgnD~i@3Ks+yT1G{iJId~RW!I4hBA0aPVE2Vk zlxN~PS^rmv|DoJW!K47pCbXtJ-qxa;y20TD#GN$Bv#N*|GGlKm_^4lydcuvu+TjVZ zq@)oX4;;@dAx=MxM-Y~;pU{*ABSVG*d5=5Dp>~4o!p~?FS|~@YOM#<%|B<(6y!#c@ zq3~x;K9EB5!AI>qRqftesb8#Bfb(0;C$>@}%^8bw2#5~cy|Wp1$O$m+SFAKgOXYluKmBEK&pLM_Eafl&Tz)TTy8 zOo5deMQU2i?HmK)+-*b?e*luDZpTp=QcM*h1kU83hhMw7!k^_k2&X*%73y9b0!*@X z;}EBWSl7z2h#6ns0>yqHP&LDOR;pi+-nLqXl<0(6>asr^p2$!YcabyCj01G}mb}l! za3@FYyeZ)bU~QCbi)qzzo`8IzZn7u9_|SElbHpEUfWJ24%yuSr8vsEwmG7k+8SCzn z4lL#3k=HPE%(k0OC@d?P8LHFp`5J+N+o}49_DkGZI$>`y(uIG?_r|0|-O(>J4H1Fd z5jL=J19nm@z=iD{HO}Azg4V}K7;X!+@SvXjX#9^0|HA({+Av5r>ZZ{B#p6$xVeF?u z-^d3o4=^4UR-@AP+7r``Y#JY7sri4jwyU(1$x}J_!j~pn}7my*}wT-kkz>qx%GJ!&NiVlsMZ4i8-Oy<}Ll56f&)Fb(JpF&{Nw~MXYkzkr zp0UH>)C(FM;ga5Ta(0!i`)CuP0Bzdi5GaaA3H6=jfEzFZIa6$FY5c$)({Ai}YDaG( zm8K?Az9m~&7>Lu5qqpO41QHF(bSjTeYzw*dgSe!Ef^vZ4gIAH}mb~X`pHK%7H71mN z`qCFy6#nc)zStEH_VYZbOlPV{mbm+KLiR`y$95|ZUpI-jr~Mv{qUsGaK`SoAa<;m8QWX&|MX4u3>er$^!pFv(1ni5hKLd;TLC*d?b$Ufg99$0Uxd@IJ8O6KYvjr1mws;^>By#-Vnq~M%@~CUZg#Qc%7yt?dlBqQ zf@cr7lU%*}-p5)vk@-At0gE?j|JPNE4U>xZbwxDYhBL)bWN;Av(^vu)$7)@$y zk!rnRu={sywcGcQE-Ds#Nk}7*lpCRb5+ThZOcEZwRiWB9%9EgcZ_anpV5R|K*3oO8 zuvKSY=24SqRsknUtaO~;MMt-2f98B=~JiqcO6Oph;R+FngB%D zP&#J!MH~!*)4tbw$-LE-RwVp~Ux~cz#G%vQ->`@1Qto{q%Naz=X8#)|4Zw&p{y3~U zCm&xqiNz{#!!1d2^?%e*Y_=AhX6$2Fv%M=sWnGT-i;ro7*Z|TK#<0jM3&P^8xs%qz zW<`XXY=jnH;Yp(LudeC3ojrnYLkO@-l*Dy!)q!TfJvmOi&vU!uoBbCLv|I?R2qTbl_`9Cj3Ki0 zdU9~}nL-N1&55ikpL?sv*IW6>S9Aonfz4OeXp=cOM{9g87dnx>AhI5f^^3oVoMs+t z!F2MbjPmJrtUpu1RXyD_gEWQ}I?}MDsze8!IBFIVe*7eR53N9`IGoK4KfpMn8MkG_ zE=|vFLcGPf&JEEA_LXha9Wdxby8I5I3&-PeBk_qGi!VeQIb?@ZPAL(QGgyQvWbicf z!gg2)I%KLHVqzpU5wU87re!@=Hv_Ka`h=Tfjxt{HW@SP_&t%K_AsZwn4mbmlkur<2UQaM13o z<~G!+=89e=m+EMgNy#Xh6*4(Qrkpnr4Ts|dQX1vat?z}40{5xk7MGzFCM;WAfhSG& zf_y1WPtvWLvYd&D0idgjVEa1JBFb_l=W2n55@+nPjQ1sL`G~Vh-`%!0%l|a{*`xbE z`ougCx7Kn8oWJZZl!@Y$$k{V=VWMGhk`svxbwlNr{+%t;v|9@pL#mCU(!PLG zK06y~4HXF)j4vN-n?rH1c!Jg_4VsNn zEdCd)uo1mlekzyAieS(JBPZA>wX?Z7|32ZPFZs$i!5T)YlXOb1!5!H0eHUtcfAn$G z7sT)~THdPEEO5AA8d6WMvFLDrYLO)Cm9sAYZwAPmaKf`h2k3KjD+o$J}KnJpVl;0!i;X%5H11x#Hv%)G)J?rm%qeC&0XGJDC^rOng(O zKDoH4tBGdba7FFgcy3tv$TgwTQW}5^(mz0%7zI$2^M&t@9QK@~6gGGu(9_=#>u!J~ zsx3Xgz?pGEJJRC!dU4ZDLuFx@BQ2A_SH)(AUz810EXkV|*1H>W=9U*&?vK$AMAS3j zwW&M9E$w6@d#0DW8|}_rv6!_`7OJFm?*2^u4+9)TK~EnW)Za^ydjjd~TiHDignyGE zpGL?R;QZd7{FM=#w2p@pT|oh4Ri;sGXBsiR^&<1O7>{q(&PFi33O#tD9}zlZI>P*} ztR{5$C(t*UKW)Lpl||Vr?eqNb1c=sFB0p(==;DBQeT0-Jh}L-3!dq4J5Rh_)s~WDg z2X=x2#Yr*4pnPbQqq=gOJ;$L|$YQCmf++sFVN~E(RO_m1&_L!%L`P@XHejQOdLraD z#6<4p@DLd&Wg6%Nl8yFRHA`B3?0lzCiJc^t2<2-Aw70g|S}Ufiwh&1v28=?{stU_^ zeJVK_X)rp6mU}s79c-J3i{K6eTubc}>J=`c7kTmi8Xki3nWDM~tMm5^LCLO7}B4>^e!;N;Kgv717b~w&jcs05%1> z>T~z&YF1v)sF7XIe6pRXcv^4{0Fz)wHc#3TJN$7x{}UJ4B+6~I#8!(xJ^C?k!8-KLZB%_tdM|eO3IGQC zvqXBDTjBDtAxdv;IgX8E92WmNK@ojhg}>VfM-@rVw}Tim3&ggn{99c&>m0@tXNO%O z-(8HGj8{aefL4+tsZU`7j?CwjuLo9sO${8;Yi@0)ZEkpI#B8zDpbn22l`gJnL3}B9 z{L7!DKOMBTDu&7|MuiG|G71<;&6_(Ejw@SXFrOUYB=>@432IIH;q9TVJ&MZvOr^?Q zjgO0E_;~}RmS*4szz2akEWW63&HAyCLuu9d9+dRgZA%VQE9!S((Q8>!bQICMl*s22 z-Nx+x%fVGPy<>GF>4undU6xhwT?Hj!Ryy-5D(0$f*|FPHGlz8!Pdh4`Np6jcw7~Ju zD=tx!{VqI7h>5Ppu7QrhI|r)tIo`TX6IPftHs^=I;PB_?oARK`tqrqzhwMo0lVL6K zebzeTZ0CMB+u)}84~t80I9-sKT(pbqw}XKKfG+&iC^@Sa=vA;xd#gK+Am5|9HX!17 zF)@bllZG~y+7{Gman8{OVa|U@s?}H9_K3m)>NvHfBLTec&lX-2mpm;_T_3Bl5zuT z3v-O7>A+dwRB(doGQNliP)sS81B`S?f5$$hppjVsJS%t`3ArCQ(`bT4HO8gJu|7{t zs%Uu@&MWYd7lmV|O+c>=U{nCz^*JY&?chaJZfE}a{0~FX;^DMa$FA9rju|ZU2gFu~@x;9=nbqQZ6Uz0idzKJyT%T#qDu&#L}AbIejIntjh zezcIv_HxUYbkL0Hu^t#=rs^|6fV15{V(77RX=u;OvF$zYLfnmhMLnW3vzSb-eskYi z=7&8f`6*g0NHZDmicH8j406imE>YYqL;FYe9WdPNp~W8pAB(XO+<`l^-gG|h62VMq z5^k8Sxe&{gce62n2PCN{0Y9G?{Lis(1XyC0D+#Ry#t(FSpwM8JxFvt0mKF@2-h(gc zXQH_JB>L#g+z}?>{dQ2eewDXpm&Y?X8PCJ2D_e)^V)W>XTtpI||M0}lSJlh3QY0jX zATh=$n+N!_XzzUHdHxLY#4a(*r<_q*!kUJvD)mqT3;JfCXob4*sMv~mR>Gc>5Rew} z?2!AVT1ry@{jaE7VBLdqiThj!UK8u)_IFe?` z1?vx@fBw_lWFp&ee|TUf0E8HI7|q0xhVKqlVN$|+ri#lTa|Nv=H;?Elcb2Q0D=~z) z1a9CPjz*t~HtBS?VCI6A^h`{etLJBKN`rnZt0`~&H2j2I1)|>v{M#>ZUZA+5bA@7k zl3L*8X_D&sFIu}FQM@p)nZsN+hL&vp&R;^A)S5=%}1ZgY&5VPp1Z@$c?BJa5!-G=QTshWp`SSSQUpej9ixt>HO1sMQlHE@y|WqYk3 zL^6~{j0_SdmE((y9Jo{?;hsVBSoJR^hbo%+4uO)!_1!%thDyeeI{7=*7-q9}33!lx z;pxLeh3TDhk6#sQ>BkRR)S*{pR`p712qE%Xciax zjF1+Q77Bd#=1k&K4Q^JaO@eY3|s;7oxy@h&lUi5m+ zOgSu#(lW^XSq!hWe)#4|4l#I5!QJLL5cb8;&@CzJZ$IyjchWht%GO8L{y8jvZ^A2w z12n29mU#nJ_ap!}OaI#8+E=zeO zKBI2T)?50-BtHigE-v&_r0nanZxe#FvdC?Tvo_RA5zD~TWINGyhnn6BQe=GltiOXk z_~R8=6BUOq%q>p4u>nZDq3!{S1Is1OC3Coq{#sj})2=L{I`r69m0GtOumRCDbuS`8 zD8Vzh#OfarV~t@+S{-*T+T0bY`?m0CEi`Ct#v}e&u$jcrino`8?sxE$M=MdR9?<+D zNNf(Zrwrk@?|h3nDS#lI^-@jGrLV0Cu@?UMR6DFLy^@#>gO^vIT{k$zahbu6*wSd0 z>h!e5_^Rqui?t(oq?iW^sIe=eR6sEX4qn?xA@O8U)I#+R>V65|DF073sOlzZYo~Qn zIyO3%J8f2>x5b(v76iYr$8eZDehl#>XI4hG6bpMc?YolO+JSqW8hn#N7gizil_1>f zfIs}+IMU-4-fl?jrQPe)SK=O3$*JDllN z><|v37TIju+?d@YFU+L2)R_aqf|;f-Rm#11LoU{!;5;ZoIpnMKOh`H`! z<@t2JpE1l)6x`}HPAJ&fPllZdIE6iQWq`iLqtMrwx;_D4wj4$TfDu{k^RVQ~-1(ib zJg?;uN_MkSC+coqt$t3jpV z(?&n8a7%6#2zH{g9h_91oGn@7P+!ZP7gu!-%7Oie=%ov_*=Z02!3DrQ z>?G8>dIYrhfEF`r{4`Z>MbzQ_d7D>aGB8F(%|BRSMH@qK zn#}=BVrT-H0qVUrE@QaG`&ael=73Q!-E?N%vAmIQ0CFc#FM5!Gz)m9Q-ewWN=QJkE zr`>bJqw=M#xK@&>CtK|&>wC`A}_rkVaivg&9k~zQXfwZN< zkH^yEuA6#xue(E>#4OGnS{u|UO51c^3EAEJW$BtRq2s>ge=hcOK8yNwKfj2Hy+b@{ zt9fe*t>Qc$Gn7S}kF!fbc@!;t#p;fwN9F0}|N9YTZ7#QRq{2v}!k2-lusJTd&}*K; z)GzkBMN}Whs46_KszT{i%H8-}8695h2w2)f0WJho!7jTRw-l|(yv6=sJ&4p<-yX+b zOko^}_oY}im!u7sUGrHKazQC#hEuRJB0$EgFbC0hZM`MVM*^tp1>1_kl~K=b+O|f7F0d7s z&G&y(x90&)Qq@0>aE%Cm26vy?eHclU>3b3Nl!qGM8=;c`R;rf4Sg^?M5emJ5p<#Q5 z);z(!ttzkws#~S zDQN+T{l%S$M_^Rc$h4+Wk<|lSdsEds{Otw#EZbH7yy69p z;8S~jpbII>p0ABm%=4EjACWi{E<@aO@`9CwHHuG2BK3Ui`I!4`fzndRZn<7Gv`)GU&(y9*Ej6b8I5LcIa zOb6D9v?OB~mqjMrqkOx;ow4VH2K<-?+kBcx%l;K|dt1FiRqq_k`Dih?1f&?h^1xsJ ze;%>0CR-NTi4=YH&e61Sv+qw4jA(ornJOnUJ}Dd=*zMLhIV-w|A~4`JWvh7OJjmyO zQwKx3wBRhB}~GLA-h(XW)|iOmGaf z4n84WoHMApl`rF?Iz1MnuHwy5bS3s1Utr{7a@pIv5#=XpV!1J)ZGxTw@zgnYW*oS$ zw1jD`2fh35wfxVb)zutZE!Taro7xz9nemf7qEwVwW>X~LHR!PKn2zWBa6CyRQ9{-1`<*@yb%9PUtLI2O0|4b9Gpg3|RzC;SO zTob7fnK1=jZ;DIhyIJ`C#JM7c#J@;F4uXj5tukKcIO+{|XzCljtcE>s6k9Zk?@Hr6 z;6$jdY0JGvLiOH|e*Wd@^Gx-eCHQYF;D2j0=8HYyUVW$Z53 zKzi@@{AiYNB&5e>!lZY+snrIu>4|SRamg_~Q_sw>@Ah6JbHT;!{aa!vQ2128-g-&1sa0xo_cgUpb{ph&E+K2?GK#mqsifi zDdhl`cMR09h?3{eE@GoJ{mV;OBw0`xMGcH>eO=REv^NsuFvI+D=V>eM7J#Fk6Nin+ zw&p9{dd6&@+%ZEZJ*}Z$e{}Ti-{gV?+HDEk54Jv-%D5qLsUJpi)Oebu4G<({CW{I( zlb`9)OvkG<-zQ)dn1lr&wh${BLe|^;+TQqRvl%6bQ>6MAkjw&_2hbriqaISpsvuVA zdH75k;Ob}_kKchGZH@PUgZ5>eHqnT4HHXe)Q{Oa&2BxY*iq4>lIl~R^LiRT^u<~G` z)TE3%q(nb7-E0k%PjYTPW5Y_QXRU^YKIKR1%_>@0Zk?SO(0HpK&|scx9FMDmi`Bd( zG0SsazfM8Ml?dS(UlDHYB{Y3r(OdVMZAdfJHmRl27F84B>6EIzPUz!lCw)2N&%Rfb zTuKX-LxB|J(wlmtn_tLu01K&*%G}T!v8(gi%E67ddZ~>@g_oLs#RgC=fUz616@2&6u}nN{Xpr(K@2k0cR4t1VJWK(awM{SfXF5hj?JuEq9xTKd4}9AMjrHIV>1P2U`K#tL&M&?`C~#_y1mVFdN44}8j7>P z6iLdfT|`#kueqaMiIc|uR)L`fM{Sn6b~VtyVn#QS{}bdvYsI5v+q&S9&q=umA6n++ z)nk0WZ4mGrwTNPRKk=i1XrC{AS|z~(#cWc7i|5W6(GQ?i9oH&T1gES|hsMJNxdvyO z96^Yq#F0|wFSktDK%6Nx(#=W!Y7mX%@;B)pEtnX{wXK8(C0%qV9EUmr?#MNrMchfK zgGp#lxP8Ofh7X)H8&6RO z86j-;f48JLI1F)3QI0ViTR+9_mp7CwN7tr{C6eVU@ZHRGsv`xN3N~K*ZNrk*$?fyn zzrfQpy&imqwU!(N2g9RW0A72KLdh{4;|kAVT-o6-;#`5GBjGE4{(q8_rx5@szn~`Zp7P zCR5kbL+?w?}Se%c9%QZX; z$?NSUq%uo)nA9A)u-g9ZWr$F>(15)*?{7_Rh!n<}#-6+)NevkU25NIRIMC+2g+qvh z%Fdk`Kw9lf{%6Q0(FiK?S5~yorGLm zXBQ)nr@_AgJ;7ppbV26Ui(YS%NO8FSV%&yv;pRrOnE`FYv-NnuUM$T^dBv)JYle9t zVeO+Nk#s1SK)KhRO0q~yr2t?tAvlV)d|(%z9D#zi)JM z>9>D0u&-@GjzJ|X#KIzgNO*QkPFQI58!Ep5+GW?&i0;XCI)cphIqPPjMNzTOs?Sob z1SOtkYlcn`S3cf_s5`a?wL5apuAQ1a=$qMgAJ$Ivkam^3vojM3*p!ySqsy6mZEk+u z)3z{CGlY7FSQ6m%;DGQdtfK>-w@UUSnZ84lw5DaS)N;x0b;YeJg2VRyDb2N#aIs#c zc8AD6s71?b(@$O=CmWalN3dZC`?=a2;?^tPT$S+^E$o^yBR3P~c5A|~PH@c57a|B~ zx;2^S+!wUW)phMx5;Z9%F4WGWJi2lD@f7tkqf<52pSDR7@!F+kVHg!x`R|B1p!o`7 za!7ecPqc22raU3@szTb)P$0wNpLRA@g95OfBk}Q|%*R41)jysBWr zMu{C(+Y5J1VhqOL)EaG~c1yswU~B};dB#UQqo@%Ls^8uA%;jup)`Nh_799GwDjK2b z!hKNF!1{bTHgBii?QO`NED9}xsHkl6hn~q`$c76zbcBnUW40#cDI0GIewuI+M*RU? z+aUpYY2}u&=mL7WLFnk)Xlb}Dd55um^v=0^j|4+~it>NvzDlW%WvQKF8yC_Ovo(Z6 zw_6qxq<=c54?M*;x#XR}h7oUM31T#F zU>n{0s4cCiQA1;t)QyfjsHTrn-EgZ3YYc4|lraj4jCMj#KfXI^$ONx0Gng6ww zf~hnhD2fQv!N*GK8OO>)86WIap#G>`&F-dAIqy?_MPqOR%uR0NDH|N`PiG(t5 zAr#_@+IKV?0&J7mINg@3Orq7kA$625BZYyCclPbYOTPpg-o6~uY{BR>B9M?NerB1r z?>CtP&5zJoL08o+31rdz0owR*rtV4jErtiFQ#_ZFSYRhK1d3N=U5-Ky!DrOmtbi3R zdGt99VOaL>!6D>1`!^3?2g11VnbwunF^}xEE0|*K7a{c&gPMhox6uPt`@u&NW zEoZtDp^LiRUe0!r`HlDkv^a`SRve!y!2JLQoaC<~`NQ`Z%X$0M^Q zYtjFlT-!7k)LdY$L-CHJ!2@$~!ENb$(S5`v|-SYW(zNAN0prm-i$T|>`kug!ZXPKPfS9hDskJaaDRDkuxwhJ+@DX3b%v{S9i$sKok$ zOkal$sH6GX_27SP@ui}DSO??6L#KQ^6ET9)f_>&q)hw9LSKAx)*f|)G1yh$UHhV>7 zYe4+y?jWRiHsdP{fuxjP&u53pNH$kXXnfP|jI(OsN0zRBBf`!s|9k&ycs*YKsPPwh zwg-lVNPpq7#hHxWicLVps<1iZOJcZ~{_f94;b8!_xGu(a+R4p%C{-_gmwA7EpLpa2 z9X071^`nStEhxj=Jg<^7lihkj@`RKy_JGU&ZtND4Kf}HNwLv%hieqZxf$DbA&v`*& z3)8h)e_$NZ6;eJAGj-Z|lw*S7ckL_zsA{Tgh5W%{q@h!shQq})k?uZ4K0as}k2x{E z!|ZFsEifA3hM%JifJ2kN3u3t zmHQ{74J<%XJ zYx>{M^jfWhhrQ{M`>#@Xo%pxn=;;{u00rYHBBa+PL#lq0!()fj?Pf;}Lxi_E6yG$m z5*t3PmDr2sn^O%G^+>LQMHbyX5?z>amqreQE2vx}D~lf6cEM_5R8gHyg)l8VT0$9K zj-PvQ_Cs#XE<&<@mI-wvyVEoxcHk(9?bcuQpKVv7KM!B?nD6Tq;Rx7KL^1gc=>ybW zh&Dj~DJg;I@Ny9g^A@*}LTiQ%3&rW;uM~{kj?>PF*NErudbfghwT=aAGuBxYHG6%w zu3XfU%jt!hUu(lF_?DbFx`mNGL5%|=8Nalbj+G*FVlb8GG=OAF#(g}6>9~(2?SNHwuPt*-N zYkpOL5qs%Tqbts@(0kBDh(<8ejYt0|c4is?@8ca+6@O~2;RE3&4Bl<9ieK&8C|hG~ zJ=UcM;Ms=Y7VM&<3_FrQf%Q?`;!% z4a!5Rd94$gGN*szE#vmQ_h#Z(Gw`+zt0+B9G1s%SY~AFa0NGUp6#Hmux*`ILhJ@; z@R&o&}pf@2Ujbu|4S^u>$#xE3zNyWsHtBc8@$_mHHK1pz5 zt?{d>?LYH*>BU@J=z{T4B9&GMA#F&s>9h82jyn)Bni+XkL>ZQSZ^-5T*O>mYt5qbw z%$0)>bA1hD3HPbJaE``7M{2K?dqQ%HYBxFoDpqax0XxI7`jQ`Bc0bhxs>6(4&>@MJ z%GuZP6|A%q`Kez7k56V_6iReky%a3LNe(f|&(f(P);U~es@+MwWcYIiAAqBu>c+8Jyo{%OgAGGs3KP$tc+b}~Ip?2Zdm)TUwY}>Y$-L~`#t*w)y z3ND6rB2!cy)in&x9bwMqp%oeyLIk-F&aYzN17S5$4kL+g`=H;HWA1pK1Iy-Nh3H8L)CX|-4owGNs z+?KHB5epv>8%s15Bp^Zb`u7f0v|XW3Zvoksc^sZIBg<*_vP z)v7*SWIEH?MBw3m>RUqr6<@tYs^vMIFH}O%JmOON4QAh(WR_N&e;0DaJxbo&Ty}C9 z)am7*)J|sBLe!g16W_4OZnG)Iz6sVpsXeQkP4y+(ugEyX*>XQhuageKSR`JeU?3!!k(U+M=uJ;&d;W`kIpZ~(5@Zkugp z$jVrm!>Vj~PP`5!(}G9LIwE{{dC!Y7B~sfcYoGDdd>Jc>K-oJ;4YYB)RF%uy)b&cQ`$1%|X??g4FV9f! zOyOyI@}hxh?v_?9yTo}_5~@Wm$Xi+bj(si>naeHnnWa(d`u{#%N@(RWq%jRb*(snL zcL2r=egO(33%$P_uAIxAQws(V*@QugU*72=Nru4gNDW-Mu6_GB2WtMFCeL2)!o$WP zX+4G9C&Mji2*$IMNs;fY{kr-Vm233^mgUJ#;GcsTfFZEYsDH~0^pjW!o(?pmhJv<* zVW9Vm$vI7t=_BmNy+y}$>+DE0FApKSB&_C+W>{Qv1j3UwrW>1ydUD`0;Ah+fhq3!= zs{y``TY?8Ux=&z)L~)-NZ}*ysyUg&tagY#W7xg;4pyjy@kof7iIPVvAv%94SkVJB8 zR6F0>5TXO$Pq=b;03&?yqr@a393l;xs+7=hW;IHp@^Sn9Y^oe07^qkOeD$-$$B7my_U}RKV zHx-VV!}5CZ_jnljuDCc!zNbhPn(`}a)*fpgcOPXKWc1wI?vvahd7Taxo~;e-z-j=3 zW;?t48fQD01}Spc^mHdDn5I5aK`WP)Ct-ju{X@Uqub=w}pCCzY;7E+7fY1`_ zIa4PHlGG?Rh3r)_DVm&9DrofIVynt7w(=S~s5r-Q$a7LHv5{&@+_U^d^6z=x9ja|M z)RU?gU)D|2>99}_rt>RyOzxC4MnA1jK3~5}F`F_BgR1b|U#v$O&%( z2ymcuuj^Ks{CmMC{>F}|MX!H(^BME+{gSa0w{GngceCLc|mc1paW-8T*j(`e~i&N)#^xb zBGkCq9qW7B1$0Zj4GyOcO>sixg~AIL6SHVp-exI+l!y}uD=}ijR|&$kZ{csb(s?oMwO3%0M(jHJtT(O3-If=tae(NGb`yp<-@7q2tlQ;8DtwFNAkggw~8 z?BT{*p(wY(_|?;u&2Tf~HrYaH@%E#n_vsjXZ;)>!t|$MjLp(7(5wao-sBzB^#ck7KL^ zq9aDDSI~bL*-k%%;{E!b4f-xmFF6(6<+Ap01swEjs!NB9OjXquGKmCKw!fASYS(Kf zrOvwAI;pS4HdHX-0G2bqYKL;B7G8lRY=hIJ%{cR>9wknZ z#|{qiIX-;L(?QTUtSP?g+a*$tO?vH_+f4+`p+1IJqI`E4v@o$NjTQKx&wS*9;5wjr zLq{NJ(T=#^YvkFGa^|S*8;!p~m5>cQsDDv3A(e~yJ&xV4C=LBwc0y| z7uAf5A^r;&=eHgdQ9uj72tw&3jQ|cW$+UTWdF`b&yhuClZkCjqb8p!7pW<<#rIx9* zWMT5)xO2%lK`zZTU(MjRU1yK*1D7JA=1d|&UveL5BquA25{jD9L;#(=WW1)mP6{bT ziK@yLO@3qq$I|hsdFu3zU#D*Eb`W*RHO9;gTL^g|Gj^=3Zn1gwKAv2;%A)Zp32$o< zDS$1V=jwwDdM^6|1M()@enOnOt2?F3CC7>52^%-X?PhqheuRi=<}l{|-DGm&>5l#M z%LL2jK?5UNR!BL8AI>HH{xGgeAkaKWb>BKzh#d!W5MEjz5Ayy`;y^!7jfm?q9wOlJV8=AuU|b)=kTkI^ z8M@J_a@iws-mmZ_Iio+O8#UUgP!~UL1_Sdv^n+WvoqUonoXN;B=CT!#4pLPK$6GS} zeQd^ng2dm(wWFX6SVOxqy-itRMvRou%uBsSV>!G49Dj_~#7e z_oYZhwvb=kEt(Uc`H6dyM7`o3AX0m^%RVjpl-wu0)o#FWAHPwbXIToobO&5wI?T>@ znliyw-}xr#M5nY)8V3(-Z&s2S5~r<}D6&lb!N$;uSbRLjh!bO0e+3qX zqeHSOVf>T8D}kL(GM2b4iG@Gh{+0cf|HUEbDPrVFe~kHDNr+(I zM3+y>x2HXu+LeX&)g}M6w?A}+x9a>GHFn{GBWV4vwxZ6BCn@YQKNmt>dA0=QK-6zc zG|G)?wsG3b1(mA(cUaI{pgO-@R#>t3z!&V^4eKrvnvLce?__83F0)N`*7; zs2E%{`q7IRL*9NTtf)?_1UV@DoA6fkBgxQkrN1bjH8+5X1{e8X<3IX}Mnor+bDH87 zo$s^!sj`hkvV?z`R8^yOxNYU~)?xou;athqaRii_P07wd9wdM@b}V<$enWQgZ{4yE zFVRVxR-e?FMM?v8z?9}+-qk7PeA>7alTS7a&5);O3~s85^*(JaqKjNuDo2f19?R|B z*YCOLlp`HW=!sS*2D(8~LVFQE=MB>b2@ewr|8}E~F$N%7S$AZ3cP-5i(atgRV~6RP z6Q$9`KjmUjG}MX+potL!38FLy@<4I(%jj_sj= zg|gT`)A`=_<8iE8*-4+Cgd|lq5H3}=zrXA>Nkw0SWhqoQzEXHI3rll6*i{}+n|{BCW;!68NJK2J{55;pqr;XAl#fX)9;7#4$Af`HcN*I;mal#_*HBHVHeDBpnW^x zBAfMwly&oO!vH*jiRpWk46cM|PydkZp|dpO&bCr#kg?|T3SBm!VP&wcH@MAR`Rdt5 z5WSGE^6C7J2&l9WhjYn8FR+Q@WoqZwjP~g*%l>)(hN;*p zRBX!TD+_bmJZ#t+JaB|vmO4$phu@6mJ=4Uxop%kqb&z?kPc>i#1?cnxTt?v%-=5U*^F?EXrtmwV)2gkI{k}f`#??StIx=$jV-y^=L;o=KZk!^Mmz)Zal=>r^x zLZOAHrZv21leI^Ft(Rv>|5!k2fZG{MV-JtxUJ)ea9|My_L&6z&4h?$NXgk zvdb>Vbjc4b9G7ocJN~;fSssJ-$a(rB+3G7<^7Z zJ?}C!9%aDH6-3$8(YqtUM!q19PZ`*!jojbiA+j^fv;KR%!{OPI1MA29ZyH1`{9w>; z)QEs#WiX9By3JJUB88p)pl8_6XI>xd#9-}*0Z36uu#8a6*e894s>>#-m@#03jl|Ue zMV8g_!&t}76eVaMHZVcqp`pn_rg}IQ(LdhQE@GTNq?|NN_&qyllkIyx4@m!b>&NV} z*R)016Vuw{bq(D<(|#SYb0;3Nu2!ZW8q(Nua4wT!yE#j4xt}L|6B|-_^UvWx>=H_^tzQxzVW|9_yE&r^#KV+syG@}8fq$x z+~k+r3)gR+&V66UFMGqXvW(8rGA(i56GA%jWi?dOubx*qlNw;tGGCa&B#*PBsbY`m zIaEeA$M=gfYSG~!ajWnx4!ftrd?Zh zaN|yoZ@#8A-Dv(eJC6wvWX=Z3phm9GR{?$OjxBraDn`^1%>`12R zX!%LtH+|;0D`zL8qdFhX+@0hJ9FhThN|Rx*KD9Aq>CSP#PZY#Fs$j=A5GtT@eCm%gvwC{i>e2>s}TK~ z_HbUqu*`X#g4Hc^rOxyfr!?P@9UvUE;4q|s@hdRqIs{BrBcoKg$R{efbY^cMV9zd( z9^KmEg54Z9hZ2d5)C1$V3gGuP2ER!1g=U;Y@kSbNsd!{5$QvMj#+fzLejLMg;N5Wh zb=aczqHYWY#x#+|c;4()cD_o+w=TEkLA}gX3P=W88{{*i86x2)mXbD$nq0lAQ*S0N zr+_5PgPWXEx=ne-)?iUKKvtQ00aP`4*~TB4BjKz~Ny zFFUb+DojAPgL_#4P-oH5NX^bnw*@p06N(=U>^cIj5x3J)>dUF} zg~%dto7h|}Y*b=BfFj)~EjVtx?^zhrz9QUg%A;9JZ&kQ{bWx|5lVbhR1d)t{e&B9$t4ga*=!#+^pWY@S2{w%U7f~& ztSi=thk~N`J>V}Jw%srW9tMzT{X&xWQ*(dV{ANiP;WqAK_AC!+zB6M*7O8FGP-y94 zECQYYSQT&tdAGdTIasrAtapX*O(9_&N#g+d0Qn=5?-ChwBPNVh8G#3R<7IDjK2n71 zChWl2u3=+zUD`TH=3RA}{keT=aJK$@t{e%f`yFc*C^BRI**w4PfYC;JQU4SbRa7qmzpiIdDZkD972IN5@PL^wlZAn6?(?yo}4@S=0P{MCsOw zlt{&onYc|Uqo!iwc;pLFkz)HKGj~cIqtATnbW(aFZ?!jgLlT0a5dw^><^Tdf{l6?n z@VO!&>$@y1Z4ldPUn}sGd^!aC`?iaZjn*<1#>vcm&b0gymw7sWqQ3%Bjv@$m0h(P4 z?zK0#wyHHmB3nJ8o&!%P>mqNw(EuUFG+vB8-@u1unOZRcZxOBZ+(p|P4cTFIRIz62 zC7@Q6EW=&T?E#}{(a6^8uM@`g9c}nT7TUm`8Zi>$xAP zntLHZ780*V1NjD?uFwv>v!|!L*zv2EyrcEY5ao~w8>}11%4~E&c0Qje?is+Axh|&| zX**r^63Z0NyUq5^mypnN*sD2Z*QRUCBfl4?v5}8j4bxXnqn*ydhs-YFDj5HO^d^0U zPx+@1+;c02vW%tk^v+@=U(vWw3qJ;w(|ZJ2>ogsDa4|lT^wx}>_cx4LN6~!UBkV|; ztY(K@-@!i>wf(x;9y6Tbh%C#sLgX&1c*%rdyFr=18K@CeoM8=R)=rdE`8iv^y3?27 z`YngpuUQSnwJpihkuJu51FGv3=O`CpuuWeR`SaIe+LOpQ^LwAF7c=NHt`f%HY2}mw z(Rm5yCRZQtl}bzs7esQASi$|HJTbVGRDwVW9ol;@+7UF^cX(D;lZgt-VJ73Q4!I)m zn|ICpsb={0>`22w|1;*>VDgNpC{(YaEoS1UxguY+KXTU&Ae4eE2hc-UiL@kROEX^& zXs8cpGL=@I2G9jTP8V!`pp4KXS4E-++d|Q2BKHTK$9DqvYPn)8A^g-ulLm+8G%K9A zU$yrwrIUFCtWbrX-(W&1wTcCw%aE7wysH;)w;|UczADEVnFPP(i+CW>j?keQ^(dD13^||_q0?UYkxX7O%QducA2)@J zjc$*?uK{~JkIZ6>o{cps1LpOVWB_v{|A-dOQW^opQN5bLDaAXtFULjk=>QAomz}gR zGV`qIwrK2(Qu}-Ga+ZD1&;s-7Lg58LNh+f!Ih32HbME{YMl^|Rdw|ikoU0pKzIc0E zAP$Drw5f_*A+3Q_a>m#^S7lu?d30vB7 zzg)}!!_IRkdgu(Lx9W=B3@%WiuLtfRd>sc(W?66cax(lfS!+C$MhkfTl=~!(5Ue9g%o-ocX!J;VAsLU;2XpW2LW~Mx^BTuH zoW$Fq+Kxi}_&d&+Ue6zU1Eusp7^QMsaNlB@Zy<5Y*W{HDq{_( zfJ!f6a}1yqv6ZnhsfY$>!gv_2mG<*${=RPI)5IvrbgyDa^L%i7 zYJpS73n}Mb4EU|b6Bs{}u78s2ZOe0~n28mg^0YpAf6a9LF^LQ-iUPb?j~uKq!#r01 znbo*0N=x@fH8}=+1lwqMy%!?Aa;HvFWNdyez_XGq!LwUHi4uB#fCsX9q1#uI?Q|@MI9q}Hm{}i#SA4Kmk@t2q^5J*(% zw)S@Z(Ce6fBQ<40v~5w@dmVKU^?)&*QQ=xiN@A^QSd#Ot`mi=hV_05*ya@ z?G~4eyG3y=EZaBxLUj$RJCfh33c!EWftfcXd%;3gej?T2tUIm3ZMS+ znvgW476SKP7e%ge1E>v}L zY01PwCG>CN)7fsV_8Za9l{8}esKKj>#dF4-t4Pv0m?H1JltP^|EAFH^g1=%zR7A3% zHP)T95&n#De|syP#`SUr=EGX7qW`FfGOKq!`+iuy9-> zFt@UMKAPtvl8h-sX9Ygc8v5{1&Td$K=xfuBAShlKR?Fk(?gSO3-wRzM=XuU-2xCMH z+gJOv=b=K(+3$-27Oeoyck*0jtM_|VNaRPTzybxtKdVLf`qOR3C7a<|ceT5m1})?B zGgS|CWf#y@8*veS%{ukqq|qQLfzyoaYJXY22HV>)G@zO ztUa0%%uLVOM>Li+CKpLaRx&tQHX>cuQ>xj9r*H!Zb~rAZn5h{(WkW=#5vI--FAN{R z$x(*f98(`LVPyBuada(;<-XKX>4+LQd_`?vK$uej-$J83z{@inA!3pY(tKcika3df zDEN;VFAF14MlOEg~x{T}dhWmezpZ5}0T~Kmd?KIF9@&p4Sv@kNPT-&}V z&g^2bdo8Q(?2CNVAaQ`7x~O@XEz%HdCc{V_qvp4M% zUcO^Xh&4IGhpdf*p`TedDwXq-r3l$0jxm&l|9;U+5)OBU*vkDWv{$qJefjS|zR*}U z3-L2i-VTVp_3y&dLvewK96{c;*i9D>yWa0Ljq=9~^i|5MD?l!*|mZQFm8mrvX zZCx&#bb7f<;Gtq8K(!XsiWSs-6NRSAep zzE~G}djP#SPk>dlxPDNzy*Mzjt0&^4f9KD;ACsZ+9 z1*9G}lPZ18-6?Uu24~p>$!A2?yX_vmi}IkbB&Lvwj^G zhnw1jArodeEwyg$X*Ub08-__5nr^s|2BfC*#tmY{-NFdg8BcQ6wnK32+K%Uw8UFIg z{pw9r5tEnE7=J2)4GBXxYz(~jG2J}aHA@Ekm(Zu56j|J=CoIXf5Q+BzEG32`Ol1fMi#-A=)hoJ z;LOVzd%H$67o@BFlm8k)2zze*j1?Y6rUVXoI;Pf3hITIL>adOs4dHNBHAArux9p|n@k&SSHp1xwK>IPY&ubdG71&;gdL=%2 z1t?-(dQ~S{vtg%xeWb|u4p1SGE+6AEOUm6*5((L~}Vtrc1~ARZ8O;zv}zi0gQ`r@1BcE8qk^ z7(2_5H{Wm@!2&tKLj72Dk&AZxx;x42am@M#<)bik5DgENEQ*zdInl(4EF?r!DwGJz z&LNSLSH=c6m0DDN;c-8yW_6|FG#0sew_Dn2nTnw8fT?e<;^dp;CR( zjlNAS*Jnig-PH^Sh=b_M@YM!`TBv%(rB0{)pNV zI9n2hyjjoaugF%gc#dKWwxt-sfQ!N`BGals1NEeK(psC-1D*V&C9{|y9&HO3&Q*KS zZzQcg=qLWX(h_BK7p81 zLAuw~mG{j zgibHE2Di5cE2LJv|nga4;b7bFrLt1d5LzP+WDXp_p+L6Pv0)kr@gw!HB*1uqhWv`Of@m-HXWZn$1f`{cP z_oD8$tW5ZI38dj-Mc=3@;O+;|8wJRqA%Wg*08t;Q586(?S0oQZ7Pa|Y-{NWS8f&4d z)HhS#gzb9h-{zt+OOyQK2UTM7VI6AyLPG9~lj}?4A~pr6* zDng!}tAo@c@-|%MIy~hcieQ41t=8A63(J<`DuMUj{c zK;R`lkUrOsI>BUXh1xp`si6c#L@zWjS`Tvu|vp^?^0%0-~~1`g_cRR z8X@RizWWI7aQXH{<2-&u!LqPfQV?CJjh}H6Z~3;$hv$Iit)Xq*OCx;dX2?u?V{0_T zYRt@fnm)RfzkjM$nWWhu>14%tE~4Y`cDHv=4P7MNDTrFfo=0SX0hu;St-H=w;CfFu zH8_nJ(#!qki^u>Kk$zHD@TCr1w-K+8N!ik-Izua2nQ$c?D&@r_y0Dl#(xI+Xn;$8l zT~oplH_R@JcSibulru1Z!dd6EyvtA84c~2exk;8kh9_VrtQPUgGlT|LNhTIAYlYi| zS@a9IycV$RrF*Zb0G@&Se^fyNS~m2Pa78;9c~5n~@M1{6)Kyr!qO{T=0?c9^62fjl z_0Q9b%MnBw8{Co?jO#>^9nXU^s4bt1__R&}l3+H=UVy{g&$_pJDC`2A} z1ub0de-%p~p4+X^ohbyeq@ecMDC*!BG>5EJ=&g?*BB`E-A;lbh=)EHnUrpvRT$L_B zEP6w*5rHMD$WxgECH^nh2ou783MS==UKNaQ$wRmN~8mF>@0$BDzXqd3Gj3ZXd%$S zeyX3pj?CgB;BVHGX7Kw;^*RA^cPXcE!P-*8o&jPu@u?&wefI{H0nhEo!VY(7{1alq zB=I;wK;>@m7cpHo%;h{XihT}?n>qSbn<2At!b#)?JSMq=(Un|Xk7_wSnrGX5gH2`?V>a?NW!<%bqo6#4qGbfoU8Xnib>ISaXhoDcM^ZC!|y;zRYFq*nmQQGeSEy3rJR}BT^W)nIOOH-Giiys z#pEVpp^Jiy4A17+ zmFcqCt*ji-;-(D_vN{QCpTgDL*ZXdLFO?BN&%w?KzbyX%|0W9rjilU9%exL^OMESY zm`9jRb#@8@0uO;#HS8?Y-t;n)jHD=VT&}C_ar1i9YZbU%X)`MNvI=Zt7eEu=up^yB z$wED71q8j3g>m89}e28RS1WtN!9l@sm z2Eh$NOl-7ps_K|QlUOP8GGcV!BuRpT#9M<)fLS5}qO>g9&KZ3}JB?}uSd>@H&dBbQ zz?zmpfpK55WO2y3N`0;c${G6g9Fd1Q7Mu;m&tvF2s#0O|$y0Mj87n7@uCvTw*!Nsz zpKdqmeLQ?y*0!g}oa_B(3m6x#`MFSa10lt580E`NX2?Eu^mWicA4v)8;jfe z1zl>qZ&9JVL2xihLRd%OH1=iG`NLgy4DUJr=XVcY$(&4?OmZo{h^Wml?oN_%gc5LC z{yEGpR|B033MDR-VUUl=dHd`b2d?H{u$lZi+ZGOiEv44|>D#83H7s>`B1)^zfiw2E zI2&e!8v}ZYb?6X)P*R~_^vXTRDwMk#>_}4aE6)+q{rvx8!ZB{FlAjlSTXoLmGcin^ zK<`O}NUC$5El{KNG2A=gXPtE_+{>D>H{heIv$$*jF$eLl?gXO5ra0eex(&S>&{~vX zD6wN4U3IQL<5Z8HhP__*7m(uHI#hGpRRcgGjY5nE65>|oR^pYjt^nAfc^&nUXm=ig z4}M|84}J=#p{I9AP(p}@R^&-Pg9;*p%QM2ujIB=;cf&#=LFp+SKp@Qe<4snz{)owX zAp+|$*6z1aqPii`WNuAO(UMNrY4v{yj*{D1Wz(CvT`j;{xUarwtv3-nS-L(xy@%JjahOOCD4SY*D7tqEaQwRQmsc_H5I~D^ zi2!=SKKb+diUs5_F#Khi$VLhACW60!Yk35{Vedhf2e81rj6_GSVM1`*`G5objP4>B zZW#o#-42zURZw>wAo+FEMQoq+pBP;$nqv}tVhFaq)ms^pNM{)(m)26JW>pqKric2X z_7L`jHKJ{A+b)#_vhRdS5)pNY9T4D}wt>1RL||w}ktD2<`f$eK`F(FF=|vg4`;TI6 z(yxZOGp`-lfi7hl@awbE8H!>o=KP?+z7KQOC2l$*ZUR7HBp$tE+|3vcr{{^SvA^hW z1YsTzBRN3d{F*&~i};rYW@Y^UB_FsY>a6v8*Y`+LmvM-9ir})wBtyz%h8LM*}HT5B6ygPe0GfM^#v5uJUl+Z{H=Au z_4-*4=?3or*+1!oLFqq>8oWn6N&3SlApo3qdMg#+o?%=Z>V@t@Q{VVxs?$7(z2ZjY zM5<3c-#Z#^ZVg9&2!r39qKHGm?I5@0mZmS@yOLwrBZ z&eA`{wJSJxHWA9=AgG+`j!)@~zra>$RyZcuEt``o~ZDcT&POR4laU|;UGL=Lvv1ntoC>^AjlUnnj2FZzRb#XO8&1| zF;-Tcoula_OEw-+EH9&e#`{G*(N<|87h~t402alfTj=zypJPB1L!>5E=F?oz?Ttwj z9@61JZ%)v`6i5`DZBTJu^ou{hK8>6^?>KnP{7I{9J*-#--=A=M6Fh9`hmX<`3x2S` z-mmmQ6fq3wLalnGyHv*-HSMs27jGG6O}*xajVI;TMGFe|`K)S0HYtaAtYSlS7AyJ! zW9cb+Ymb)i4X#-t|Eicggv7^H$z^iRV^0$wHNeEtJOpu}T&A(yJdf}t#_JZ~4ceEU za}*Pn^qypD+%3<5>W3tXSd-C~%U`8{XH1u<)}-OwrU%xk(pncLAc`u7wj?WBes;Xc zJf@*d(uBnDTU)d_MWYO(9xAa6V0~KEB#*x88^vHkg%-ywBuCu^qcxyq+Ay1uhXH0Y3S2u>EYDisGhV_Bb18TSy>#8E9)~dTL@u}>h^*Aq!C~R zvf&Vz9kT=zxyVkp4zJXd6h)Z5|IFA}PbT&8CfZ6W!ln`14_yJ$&1<1XRm+0%_97U0 zuPS7VjJhWG`ddLcycuG(I5%{-D6p(W5bB;KG;QDJ#@V;$Tcm-ccH@F@*y7oH;dA#(bAn zVac?p8;W7eOBdE0tXlLJ9|&dv^V>~lRh z$+B%S{APBKJU6x^>C2Vz<==Zau-EoEKa(EVV8$G8y3i_adwPDu+)*HrmbUbo-_XMl z7m`O5Npf3=1NC?7C?QZb;!hue_=m8C+R{U&c@J8cx}uLt6lsPoS)!slK(5dkmX?Q0 zso))}qzmrZ4WKn#D%FT$q3f3@scFnF)b~D?22Aj*lTdNt3SwU45Z4X9f4bD^wAXzj zS4|E5EmN}x=}E=rHRV+EJGb<*K&WbBy-}?1yF&?E;*@Mb*&!4$3^TzD@3!vYKsL~?{N#VSPPLQeq2!~RXVWpB3#$KAVub2k?H zZM!Bz64(--WTribMPoXBe>3jfFpA^fwpnO*5Q!bfLPnw79O_KYm)zj%JeQgh*($=k zYFt}0*Fio}z$k#y<&*4SOI;b;vvcuNnGRvI>7+H4S&d8nP~mNk=c0W8^SFRJ^aKQB zj}S3~K;CiMiKfqu3(EMFMM`u}CI z9n@-t{3?RicOw?OL9hlQSGMcOX$p4#7jh>AG9t>M9PxgI-F5=u#zxzKw##A@ekdL0 zyno+>Y~WutxE;}_@;e`lI>9*)i|{aHFu zVQG(z{bdS2r4`h4fv%(V;lugID!sxp-yRo;FAQKLFYJ5yW?${nla6s6+Gs>#A_0)L zvUQH@{(-*Ch$NEV>-lGhZP1M7I&BuV2$$42WVv2@;;U&GBZ+IOl=#cSEZkgdd!qX z^i#*Nu>Y~aYy`!NlmdMCai?aHie|ev)hwmHWp;y`{k@!D68D@L2H+V>kWU&*YWZmC zKI$f#TMBt9VKCMbDaQ`%sj`@cL572mb+e_-D+1OAOsI6ug8fJ0RbmjvaIUYJ{m4 z*vdKey`G2hr8fbG^As-D7m|WVy+P0P`VK?YkSu^M_oaI^YNi7k=++pqvfiCX_RDws z3bQz2BO9o0P+0-gQUHG{<`*}N^9o{HcW$VDKd%=U4Ivu??kvsxxoREw&~Jl(OZvfG zt1V!bAaFMT zWB(q?Q6=(B>he`P*RihcjHXBrpMM&7E~K%iAM-i2k&DLGfU9he16>7BZnY;hEg0nmGyGA-{AAu?usk`x3bdyR$v)Anzuy`V zjya;r{M%CV!ih#N9G1IF0=rzqF^E)5g@7nq247%IEm)@ogaj(XVvJ4aou9CD3|FJ10ao~&yPcIS+0 zUJ9VauoFAEx1k}3p&nM*oofv3*hADv;`6O#ZUgOtcw~*n=R)M_s32aw5;kJq{+ z9$(xcNhVk{{dMNu6>%a?cayTIvSUFUw>82&?wDw#*=ZC#oOd3l$b4!c&3U}LD0sX@ z5^Xdo6E3lhf11E62UY%#`qCfb2HZ@+JeKIFpEf2g@Dn|JRs-T2ChUQO{NYwSgUevhh1Z%o6z~Q8+wc?$=wIz;%PK^LO zhjqt*UX1lE8%HP%Nn&WhQLA!1@cuMoHg}j?2X5Xg@T8OX;<{@jEz%cT1lmNcbLpY8 zlB+>;@1H<^IQ&Gv(wmN`5>gwhtM%^9UB)eQ_#r7q^csP z`qdr}6Ge$psh3LeqMM*d_9l6WCS$ogc8xXL1)2%L@m^nZkVE1qmTl);4v?G-y{W(b z4_qEnn?^N+D}rie!fgjXFwg`eQ|o|g(Hhli6#ZpOm78}0%6adDal;+Uz;bjsmnU?h zpKltd)qq(oEk|3>HFFUmGy;F{F*wg__}cJ!>qA)vDZn;p6q`6NGe;=kQy)HF!!RXf z2bFLd6Fs029?D_;-|4j59_!Vy=P1orVS^X6Jl

@kF22zz2ugz*qM;#@xJ=XP+!P>}mk<+;gqyYBHnfX$tCkw1o~D+WdgYrttGYOZH2 zJLQJ^Ln&EE9Ey%j<>1~3}XEk5~!Utn(U6Z3y=R@v$QoZFQ07^Z>bIYAO1~T4o#u zUjZ|hE{A!!aJ%YkuzEEwfSMZhy<7h06lhCF``J8A#F0L0B0sU0uh0zdHry~mv3(S% z6CVB^S(g|@ElWo&E0Z{hGXf7wTUW^1lX%qS0G*yZkyNm_!TcfEv{IUK$56dvyKw{F zL#0$=Ut82I1TNma&UOJRKQVO8^=_~I<KRaOwxgdFS3>D`O`T=kbDXY-wp{hxmj`u(}p(yA$tzfdHJfiR`f%D8LBU*9 zm(~R654_A9?Cfc;0fYf8*~2Q->YaFkjAK&2!R~Oph7FJCN5f5Ywu$Ub%&-evz*IZ; z5IG*S8AKhgGfk+El=0GNOZjSBV-CcEyDumSYDAAuRnnqV>HneLT69J6^HW|*iTw}y zH_ZAy4GFKVbgtmeSO_B;=1+PkhJ?28%l*p~mf{izO9!sF;f|A4)(oa+znX}hZ;*KV z!oasf8_IH7K)1>-5GI#05(a@dHEa>JEvlO*r03&*13~izXx5{GNvD%8u`3MC82LFz zy+bG66JqRR3=Q%k#VadgSsaOAJJXc}ooB%oByT0=noA7w!0%otGe2@?wrj51h zQZI0JuvF7~T>(jT;p*S~p&-%ij??_Yd ztnaZGJD8Wdm&j)@Dw~h~^*#-PK0W!}2+pO4`{rE=h(W?O9~uAW>EF5$*%`fgJlOvosf{go1PejF9^E#@ zBn_>Gk1}ToSUnpH8<8n2_;y|ek;A4CnG!%;KfPZp$g)wt_2C8~aYEn0&Yr3f-1hA+ z($mbeX{&NI&c8j;;K{|3^Ncz0sULJaJd$kX_CtlgXcl~YqYx$1rgfXY7<~**&p#|9 zNJ=VRN3^;k;qh{YUds2@&q*p9LXLmdfTIc!3jX(tghBm>^%vraYZyD?eFAyC7`O#|& z`@Obp>(l+6)ykbrIJZl|{jtqS)k&L?7ivHTi$g6T#w^|XoZEgwXT0iy#5$Z|PxaJC zyPEc(dY*CWHMzMXR%&XoIq87vs*WbwlaAQ?trSBs!X z5~CH+hHgN{lV~%9wGdcfQTHX%x*<|(kvqL}!*&L0$ZWdB38tQ-dW0jyLt2Kw5e>~q z+#>orYU})euE{h7^Blu5xnvz6cRWW@i*jud-lEFm(&z)t5D{m!6~_Q#%8)a(1+G?r z|1c`6O%RT8wTQ215tA^*4>me+Svdp2gec(8RrRvM5X7W%c7LGje^ zfsc7P+Bhx8d`m~Zyv65Qz_1neruH{o@pT-%XVm@sG2+LZeC&TZv?0R5KCXXOHH_~b-+|}6drs#_;YD*i>Vzlmn&b-ge zg~z-I7LLdO6LdtOpG(sU2A-p{YbKU%Iq+EngZp$08F}KUor1{?{Ze~T8cl?u7fc093*h*}irt zVT%1i22#my10gB2K!^SWnp9Alti=6j`hU$?RIFRqs_Wgb`#=<_-^s-o^tUIwW~;dw z1&9~UIHP=tP^^GJaU1sDzX2bsE-@|r`5cs^DRDp6S)dJA?ZVM7T5M0mzTR_rgtl7t zK(V$v-mP8{sX9Kl7tU>e3WNl4xf~Sd!ValSM-rDRK1a~n$gCYd)?3K+6Nm-jzb1Dh zAuXmaw@JRl`)dcgbz<42)Ky7#M#=nE!Fg?2@=w?$q>n% z@Vl}G%zL)W&&W3JZ8NM=31T1rKFloYc-GZ@g_VMcwZHvJ`MqZb+F7C*JhQjJbKVVB zkZ*p!WZ>*LR{?$FhV_rJ+EjN!9%rEC_xEQtYZ;aB*|;B~1?5B(J2BxF;u01q zIASs9pEB6$V$Kbw4O=!o{Dh6V%eczWT^LGUhiElMIr5%Ltxr(C52-19LifC0}=BV0>N$S6sbLC9w|<#^?Vc?v>D-3^mP7#zO@IkWb+w-^H4YCg>8ux z-jzv(qbo~q2mP?qDZp1)lGrQZhP!QDYt^)J>hqp2qcp)C_}!YBJyzVrn~Y~#2uy`k z%PBO#C|t@I6>%O5I%EtQ<@eleEigKG?T;5&WN~_mYl+*M@61IgRe!eZ^Hpc2qY4SY z{9n$!ZgVp~$E5=E$27YT1cSPjg2yyegF)@c z<-9@gwf;Zj6VWCE1#fhy2GziLm-S|M0;gPGtN`-fIQqoAPPnV`TWbV*Xw*-@Ag{)k}wD% zc#_#OGfL@?hnxKE1n5e3y)V8^>_}6)~pgT4(C}TNOtpb zqqvgbh9*tuPL>?TR{@LOSt%@*GDFpMmy&R+iy2In>1~y3^7#AS5P;xR7z!&p?yzvm zHt47!`ABknXJ~XueWXuX>K-+4{&9%`GIrgOVs7P*NwVlbss$d>pGcU8~G52x?%&(aSuNm&#ef@IlQ{8qCrdo zQEmxs?p=XII6Euwbb``75a`^qjQfIY8B*uHJ>#s1vbX`u=M&Tp&MVOFf7iim$plGf z9~%1tHeM?vFONoupHnszk5G4~mCf(&PuyNhOaB!<48f1->`aahc=;0!^U<-aNE=0Q z3jIqtU2T*<;hQ7+@6OxF=I&YNsSA~zZUg1Uc=>cn1M=_eyVtRb)QW(8D((1Y90P0n z(AsL`4K3To8{rQ4bH@rZ^0{fLcEQJ9f7y>WMIi4kDm~Uh7p8P?2G*3&D&oJ3QhWT> z$1OJ0)%@8C^+GEXNOZs7ifqgnl_jfbpO}DUMy8JwXb+zZ2o6#b|y&LAj z+IG){nT)YzBsd51uhwZ}N0H)?=?;}#usMUXo)-h_n3#m{z%5wk@`N+ms*Y7SM{`6* zMz8g8R_G$2OJ`n`M<85E2IKH#@nn^6b{*6{Fg28%5O)h{8)Dplu?(fwA1{(lp83R) zLz5+3;Ri)^h#LbJX4toM7va&X1&knfZHFufLLJ^15FNCJ5HLdwWrIM*K33Mj40!Lr zR*u0l+c&|DGy#}*~z~s$(OE2=5 z{Q=`QVbYsTtb7^f9~P|9-?X?}=>p}=ZgBpx?hYH-7{{xz)971;-%SBt(hVFMXHZf@ zQKIR!#%dbkSG^y(J9CA5%lmuK2KnG8t#4qqOQzChXL<`(I6Ly)#({fq?!Lx!)|`v zdzO2CiUj0bH0dwpb&kY^sqOkPd#DR}1o52*d%1Rn8Qe~H-?X2!HA}!hTrjd4!+7q} za%?wN`gXsVd)NemJ>*f9fdFDOYqH@P1Mxkft*(wweG70jWM9Ez+i9lBh(J`f$4!g+ zcYgkjQ{RlTS%^!zVwJhN?hqN%ik+bT?s+-5l;KQXC$C-z(M88V?r84pG}+&an|bqx%Gnkwx#39$4Zsh%$^i>r0m{4A;oXNB%>uUpsB4!i?B=y%4*J#lk1Y!6bZUZgL=O`64N}PD^_l+JDg3I^$ zla9aV$LQmVM#FF*XiAaFWgYvsy+s!}Imd2Ckgt&`|IJ07l`q|H^TToM$QM4jsfGfb zr&vI%ijZUN`A}x@P0!-2Str{NDAw#YI;PasvWj`Lh#lB)v;KZ|G|3jnP<`bvjSP@; zo=mE!D-K?Ai%&4oAX=lzgh zb3!5UCP75vE3OE|Tv(v#6Y_cY$yB69V=tnRBk9s9eQ5i;xzZfe9A>MG!oq7UAuKvF z=5_VQRa(8jb$EDZPxMRqeiarG{1d|Q;ai9HlWxpkLVXL4d(R&p31MiCfl&Gw>@xHb zd9;jR;DEiS=BG*U(FK1|Xy8Q+l>}_UHD6Lj%2}_bsQO@UnHO&curE)O0076=tz_x% zSM^CSjUpvHUEu>92Rmi2pT@L}U$*3aeT85{|7-S6pt#>oQn5*jDach0Tt~H{_k8sK zK&MFTT}<`d%%XE~)j>gE+`4 zM*^zzaeC0?GsD9fYcb}wb88P~k^ru*yV8IqcK2zC$<*gBY16$$=!N9*!UaBEBd0lq z0^Q5z9oSk`4_hE!iC~yTl_Y|}a1U~w07S;){2jL(`!;wq4j*z#jfEy{)Tr>0Dlm;P zM=?=UF#H-V{_})DtUg(`aLHIj2SRK@u6+MeYF08k)X1z_otR8p;XG!IyP#)k_!spO z^=yeqmxv$K05E|4D~Gjz1$3R9+g03z4VBeoL$#6;QM)g%(61!y16g+wcY-u;ZVa5 z2EQ4cDANMLQLTW*tE1KUX07@*lNS!qLOgiCoM}jIx{z&9Y$@Acc-6PHhqs-iy4e)# zt5qKpv5QHP(5!LKoe{A6j$2hWHo{7zd|Cyu9=?z-vfep4pZ#&G$;@}G+2c0qkAcYB z#++{NMBvV6OKT5&V|{|*qh!scvZD_>I0d}C7DY-BJG3Or>KdstjEe0hN3ETGV&ls~ zqF*6#O>30e2lTRSK>!BwXXAjrL{*~)YWRCY#@e0WJf*&FsVhvNDZ zV)D1mjn6hqXFe+Poe;72X_a)~-4&hx{@1`oMe zsl>i-X4PFP*#(;)$>gS0oUv}uT{;w4`@9*&ki1_c={M^Eqh5GwZE>~m_%qRAb(54; z1@o*YbN^l@$^3!-_{rLjbKyt<+h)VHB*W<87G-=%}%gZk1f?PS6M(sK07fy}7J*l*$YD zoot!7uB)TQIZBa{{Tq<<#IW2E;jJ$BANIJs9=F>M zy{`rpJ!0UEb@)j@l8et+qiK1xg9qn{c#+x1>QxP=$9(KXYZL<7s3M_R9x4652UN{W zkunmpnvhg}7!LzQ8N`xZK$;Fh7@AJ0)9AAU(3ndcIkZWpu1iXd_ukTuJ+GGR4F-<@ z#jK!XXHZ7Y2GI35i8h3Nk>pjnnGGC7=l+<1(1mWXQQ(k0V)Dw3%7b9`*!5Zsi5K6N z+Qb?$J_8Td1laxlNq*+)EdJHPUb61PL7BUJMl-?-^d@q+Dt>g3dzcL$1{u@X@kRIc z;|AU?LP5cvGW4a1JW&`xOFm8l=>@{V5M}2)Rh~uCSSw)K~pEc!K`hIz-J2Hqu zK_MC-CFCd)mB+*)SC88bR$OH;?Q$aWoG=xT(QH1hJ`uGZ2EZ~H#uFtBb#ti_if?6I zgJC$g0RKM#z$u*nV@(R7?EOU0LUGgcK<)0>mV|D*b)HtwdsIxoc_$NB= zCj7KGUSMDCsN!cM(|;&X+@zptM3%{rEyEC{2@=BfsL}`Y->a?Qfk*@@)+h(<Ve*B6+(Fyg>#cnt=^L>Rq9(yQ`CC1OVOdVK zE&oD=G+FDGZ$aC@h|emV`Z#U_ixC9_6v8JfQuiyT-I{3X()g*KQIw#65HT0Gs?Sp@ zvx6so^y3!$tm#W)IEW^Cf}Xt*R4wagu?&YIdBzN>JQfS*YNxUxxrz;bl%Q&$cN~fd zP6T@5qU7uvSzCo*q|9D=%CX<`r}fCSSI5~-(?6W({efv_B^oE}LCXN5gxF*KU6-_O zD2@}v(kC3bQUISKfLKy{)2`?om(0W2FrC%u(N`|aBa-F-n z^H8%wXE_kS4^~667fW0lE99yD0(bdvjyTplyw_h0X#P=JD=0C*1n$gY-x|L|o%sFH zOq`ZQ6&QbeLFHYiMktLd4@uDYOMgTs-=uX)TFwhsNoCwI?R|*lIF{l*$p5g$nvB*l zK*9HgQ11plnKz-GHP1eKNSj29Xdca;53}q1mIDS9&aQ=&f3E?nD!?mq#VV`X3u2Md z$?=lB9hAI1g6$j}91DDrd}gmezj>^oKQragTk4^lP-yV}LVY>5k1I#4&4zl1ur*M!z9TmC z!u4DD53Xr&>9QTKhNMCURQ}OhaX?(+)+TDWlGBjD@0!Pbi-ih^0Y^>lpBf{I;8D!9 zvXlB$Gflc&)8I#SCvuV%A#i(2Eu=agaP{R!CtBmX{W>JZT4n?RNCAEVUyWlr%d-|D3w+Aq2}r_#8Xlq zHDp%cVu7}0Lm=@Rtm6pMq1wL0ufDlkSAy)szL;BtLzr4fUsu zCp(ZPWXyi1DId*cdOqf{7Zv&1y$6@t!lEz49_=aue(^95dVF3Pr#5F=V(pC2X(t5@ zjtbC3ps>J1sVb;LXw6oL2)hk4R@Qvf$FPsH2RGP3#m=pODjCz>@Gfpy%;F1X*X6+1zR1vG!V7=kX|>+c_-3mPjQh)7IduB%c?0b^TB zWC8P3lpX#0{9>5XR99n~7fU5yv>qvV!fEH=_QG^mZ#CHC|EF(LG;M$}`X8EV{VevJ zXx}mKJ;KrK-}8vm9QhLx@OP#-X>S#>&i50`t8@%!mIBM{i4Y&0rSgLZ0{`ITZ_cnR zxk~_`T`6OtK^K!#%r60(kP4lwvcr)vS^}c5zwxphiD8bI;Tr|O2EA`;oJXFaS^h{G zBa`O!R*Tm?|4@rImH1$v5tl%97UXw&3->Ip0NGxhl`?2%=+F8-U4q-#djg*E;u>O= zQ|7X?)-siJ<2q@{3A&q!Nl<+YY~rBSYO|b0dUmj1J1JzBVJu za>ngil9FH)V2Ur_0cLQ+Zs$8wJ0si%6-SR=Lf+lc^VdfzV0YX|F|w;?JboH5cEx?? zG%wFi*RotVZ+@@lC@!8Rp&e}G61un7Iq+^XwDZ$elC>z?ieNWvJGoFE-Wy-hUfbVr zVg4+|G0a)D-=JYPASKpnB{%n6$QQdXfmNuMP_I{xqtY#37acu95(t-|YIr5o@IEfq zUu<wRP%(#mmUXo+Mc@~P!f2NK+f=6_~N)fbpjZ37w z-Fj-hk&-xnBn3ow`610=u{g>WV(uNOi9&!;M%S=xH1x80bNqAW9zbgcj>k2R`e4JM zB)P6VLlw~7!-<0$Lc$w)&}Mswz=QL7Ok^oSX|)9p;R6=V z^vJksXFA_~OJ`5-)^ApN4dwZ!R{4hw`-$t-B~%|{rF%~I0@w??F*0h}9Va>;BsgZn zByCg!33q#0p0vsT=H6_~9p9UIS!OY|k}x=~#z{!54Ef=w+()+2{TT&uDlYO)Jd7lm zjx&u@j}+JJd6-=aU&hSvv~4Z9Z3M`?#T+OxER$EmFZ3_Y`Y__)ee}m7wxa8C6J{(H zrD3=bae?J8Dn><8vRyDDBR$Jq-Kd*~8fZT7X^M+ujVG(d{^ud030S^-+F-~YEt4cw zZ7Ut5%WKG`)4xC}S3p>TT16*4ASQhHz$gol7 zzW?M&`Fm>j@C3xYd{kftW*E5jJqyB!BQX#v;e*M^oqSKi${BXB&2vqWYuQ1>Rj6t! zun~s1CPTlw351`4 z{Ds#v-Xr5T{r}FXl=igD=kk&nY%lziEe>xyC%k=rMc@VNo_W}N*U;u-@LprbS~W>- z>`mDpy}Kx@_mwH5{QF*aBi?+2Qj?Md0rD=>APjYtqswAeL@gBa`pI}CWUUX01mlz& zwOz20ZrTxn64Jx(p#3o0jJmf#WLW7<;4~V@rlgr)_Yyo^skS5bF!S-T@oe&)E^BsP z$EXgmA>5KxyY1pqqE4Wp9zH#C`>+co8vSkO3CYOI6f#7ii6%fu>%zb!$TH-Z7aA#@ z)Qc-y9#dUI_+uzMMbhV&xSaJ~0zYS38kE|hH^6Q9_A1dc7kqL0Z@3I?g|BsUv5>0> zI&@TZRqtKc@R?}wz5~K#b?d9tojy-FUWAQC(LjkMnR#@Cspn{StzEzveRc4h{i^0; zr5MMFG^(9fT(5_j=T=3T5A=TfDy)BA+kO`+4ABI`GKps83L9HJ{jrSFlh!ql`YQ;` z*_gnik*ys|TI-xml97Zag#EVKZsA>D^~@Ki?9pzmSh)0MBPF9CZJ!J;;$AlNhjm=k z#Hv&`BWA=p7-Jw1xav2wJl#i)S#_8pTXbh!`Qzl8X0(MxgWvY5Jdr{_eTa4^LGqKj zL-RZhTb0KAppT{1MKTq$`UzVCoq~2j%tR1`UguBp1+c4<{+1f^a$4)m<%zan66Eh8 zTDNrk7`!}I{y9zT)-M`Zd&zFU;7G^GLFIa4J{% zQnklP+Ob5QmTjL%*YnKZPaxbKIF2aXRh=MpTV7lR7d&jhw_;xg$SIpziRZU2Vkna7u1q8BYS+2cJ1z1G3y30~3f*T?`ih*cg zWH9SCO_APwlwj|T%7~CBXBqM1u)&7A=bVK zIGUwpCPI4J<)Do_Lj$W>@48$YfrPFMDZ7R5xSDaoTd-`vk0LjA*fkI;_&kyK%`uf2gcjD30Yy5saipbP~0I?em08 zWK4HTuumaOI(^Jubk_u&y4(d(S}F&F6WbDz1@$*m|3bfw!Qq}*9||=nNt&yKgamZL#cpH`->k@KNY!Unyn=3SyqiNF$n6n z4^hnPq1&RbDY5g2%7GAipEb_NeT6>2LjsaaQV{f#4-(Y!7Dn&5mX0Jc&EC1$qtHTT=Lu^(2WzsraAa*2Ndrf6K|l*8y_1 zPI_}RE!ambHQ%q{qcEC^UYRO!j#u=r{a2X)F#tL;5Ip`Oo1@kLU22HqpQD(o_+cnA zy5FmuV+10Up32u~?G2KSz4LN$;CxM=;!11>Nw+=20|(qQ ze<>JwpN>!T6$DR?hBqkY+2#+aBYA4?25lFzejG|xLV%3lMv5n(673mXiIam- z^Pbx?mIDJk^%bKCZOT)qMBB%DcOT{~rHZ^gEBlvljINZaB{}TB;xtc@073i0Sjta! z^6h3TV>0BrpyZmSipr~HycD%YTWS{qweBwGdo@6)`*?lssGn0qpbrW}X4sb0fyKPCuf4eaMTk4JaCEJ9Pwx@1J=GKc#<9Mcp3kxR7H`YWvM3iPLc+AT=kL>P8Sy z*58EZtn(|0O8U18IH=bSGz2!5mb0uS#{f;VgX}R|4JFttOdzvEl)R#WrPeTvw49Wuh|Ysx9JxtYe!oaht8gkKvhr(K_Ppo7BmIB z0wbPXPqSET(IN>;IS!0%T_B?jj4@WCjwm2OM_L4`Ct;nyk{u$F%eAFht!8DRy(Ay^ z@VPs%%wcqe0lwt^+02|E)kvOaZnZKWp>wYccOiK|+Hei-PyJWCvF^aB+|w7cCx8UgBkJiQ4;5aUvR(G~a{JmH&)al! zHl9fD!ScVt>)^f+tqFxt*7jc-?j?wl&0r!G!pvs&ue&HRGUi`%ChQzF8)X~|EB>Lx zc5;glPd^*;cwhn37tl=`DJZdb(Rt{H^8TLS>AK7(LFf{jUy;5?hK78vUHvvJnox8~6$Iq4y!xF3BSSk)oO4?4Vh)k#nCrp~A;Pvm#@=yTMgh{&A zkN)SOc1sg@_bfqcx7W;!UxwxAHy&R#Kz}vAMrLI<0eCe4Q}6NGlF;YJ`CA!Q#^S0M9l_)@=;9<76-dZ`}sPQA9I6EUNa3?yUesa;|?50?MEU_CU!dkaUI@=Ib znLuODcz#pmr?r4sFnfc#=0stIIYHPxsBpJnkOT8;l0ft2Gdq+x)y45C^QGuhd+M&pYUZ_HBwO8S3Q~Su z468UYtBbTUU|1%ut(8a?RcPc+^Jn})hPr>cy;}`CuRNb7N2D($ry-DZ4UA#y3*I2x-D=ysp9x+3~T{ zsykwXvdO`#saXfxq)L#0iqhQkvPbGVf%N_MW;&D|*~G~@j?(&?}B4@3bwsD2g%LAZ3LMh&czGlzFcnzOj(ObIJ9puD%n_{S0$<=IwI zD&=G#+=G7sqWwWNUePpE3|W0mQ?@NKpdsqsSeeDw<*>r`I-63hN9kHFr8BiDl^ILK zzC&J568XU?zLFSfNpz`pX-G)$u`rj`e43NnLDZ1Z;pm&*hY@|zjI{qgy#SFdyY0nc zZce2slJu;xkd){-_MB!>D_N!TVI3LqX?d2`3(1F0MX_(CvgHcZQl&hKK&scj>~C+2 zyl;UUEOs*(DreozZ8|sbc`4J3>YHKzad7%!_VID^1~#HOK>L+t^%iSVCs_#b-Cnhr zoYH&Gd_S7q{TN2Aivw>#OFNhf!|K=7J}lq|wSPH!BhJE+mp^qMq>Q?yd)jS0r)Gc} zPvIQeT1clAqjzB8iBFAO9h4KxkW*&nV1G{8&DusmR6sQ74b}w64E_USe7Rv}g&4%N zqT!dqtr0^$vbsDU&WoOvnP(dfeODmmqDNCXK|v)U4R{BzV95i4+wR)TvuUBZ1XWrV zBh%LI?QX;UlEd&-8ZKtXIgsqmhgjH_TH-_@A9^BY%_`u64=TV#-S=PLdPbw?W9+*; z@RvH+ZW{M8IyFY4d3AwN!cygq&`PnIa7r*LzICKZd~ke3i=Xwp&|z507$#EX#S@!N zV%0D$l*~lrNuD52gV5bH6$IXRF26Wz15G*2do_zATVVtnBxTeZZt!74RA^Sy##6#Q znB_>l)mUYCNQ`|TdV36g9wFlU(&~;6D3-DBIF$dEZj+v+L-9SGwtY|ay=0I5Wrv2j zM|8c0U*xf;dj6-5`%@Q-i)ToJhW3!$?`OJWL}|huC+V^>9nLzXLkZs;0l=D!tw69K~K6uMyU^V2RMk*R9DjGR}Vd6uEfhORQ^kdBS_I(OaAlVWwt#Is!cpQ z!JSm|?M3*_d?F>0>k?LWa+ zyC34%C{zq{t+^(Mp3~iIdDCC>iT)jW*=11z?z~pl1zl0iyubFx8!Ux3MIC&eO@A~k zHS?Nd^4dE!_ogvvfX#!{pFISx-p;G0ERI6QM`AVs+s4Z%a;~VhxsTN83)-2W>PBOw zVj4zRKSGGpjpk}1rrVRlE{XC+C^^Fr1WZjE(Xc5?%GxJmo)^iQdq4jcr_5I;P1L8?-6u~+p`~_8-n?FU@65b-Rq@wR?|&`C=w!J4k<+IW zQnd!`&apALBnz{`f~!B=NF%5Ux?_gTbs+bd`V~)eFR(5Ov}xof6TyUg01apmCi+^a z#Kkc0sIU)`F}4cOTzSs9p`=in7W-cH8xRRfh#CzTMarO3vGj-fNO5I4VZ0rsvQG3| z46hM`2SA7ew{_u*){R;obvq3oe{M67dMSQCeMuh-2%7zkwlI9O<#xC<0$O-6C-cP% zXQ}M}T9fmRXM{Br~q&jrH{D2l>RMknzQ4H&1$g3{7 z0(9&j(MV$@39zZpcp3qLLL1JMwn5iEP|!{>2FgbiYiw?ZLcI+-ZjbIl$bm ztgQfi-lzC6y%>j%;SLg^M=IGr*A)=5-6NtYDRXi3VQ)Z(K_^OZMxP}3>Sl=(9KxFW zeZ^s(U}W0ne8^Vp?xgC%nz~3)R(ZYMY*Qp*F_;qCh@c3Y#IxXYm0HX(&B4v}b?{d) z=H@ai%12w4wAUl^>7g6UOjICEHp8Z-L5d1Kt=v2L;UE^RO(A4hYZ_c!9xl(Px*_?K zM4zee&nMP7(gXjcLu^iBQiMcQLSe=dn{2jfphWbektlQj*$7|5m~aBma&&w|EXg-MgqdSr9V#@Qdjs1)B z2PHP4o~s-3c+j*`i(Qwx-Iq@vOY#@sAlaSQp*lkM%oi7bF2wPsQ)%ICF~lz5XbHtt z7~xOUstF+0_<>-^fix2VZFtRNKbuU0 z?KoR2Ksa*}vO)Ntk0(w6RidE7^q7k^^@oM(3y~_iE-<8w{6)}}}5`nT;3V<=Q zxU~LE*F*p~>K3V9CGCS&Y^$QuCX25{azOvbrHGrT?0|q$)kR|+Fm5H%mq(9AMXii& zbr&*t1%=E?xD*`6lG!SbhvFX$w4*hK*w_Sc&SjE$lIr04u0nbTJ##Uz0}y~4vt3%` z=V|6i-nIdy_FPs@W2Y_P1m2MFHg)*cSg4T26ZWSc7f6*ri2EvC2Z_FRX>jKedC@{@ zlSTz)`0@37nk6&}M{oE#d?J^=V6twwesYk((peMa*iPIIo83MTfrio)W|Vfk_63&_ zHZlQ|sNj1T*tNceg9{i0l}v-A0sbIEZniUjab?yyQ|LptfBqy!q~R2Y%gX7vyf8i$ z6)_I0$fpjwL6{J1YE1uC(KbOF3wpT!Ahax3H2MGdvq6&ZyNz z6*WC5M^eh6xA^5AkFBTPA>*x=RqqSbrmu5bS(unFIT#h77Tz5{m}`sI+v%Wjr*YuW zPa5(T+wTXDsye%I(mJ)+b`Qz%f9Ad@;Jl-8*>^W6DMW7haT5+gixCfg+Sxax5JJ=h zSC%AeaBvpAUMlcaiOkJ-FzYnCntdxR+koKoe${uAWv!{Vd&npODP5oXCrI)Y%~2`w zqs9Y#JEoN&iw71!qoh5^-5iG)7~;C2PcKNR(86YE$&e#ac0I?8@x6=eE-Pz-%0n{C z-sL?l$kh&y3YDCsAh&(Gdgl%WSxSO==pC5W9w^-j{QF%}Fm>r{(=FBrxCtz~G})46x5{c?X6LNV-S4U&0QWY0Nyo@20XW-y;G1&^0HPQRnuCkB&L zZ%)D?^B6+8$%z7ZkX!wtU`AGqoa2ju;&}_*#bbe;Cnv)kRnOZQ#;SYFo13&r$6w?- z{i3hGC4dg7?*)5zMaxZt$ew6-rJh627eh$U z>6H+trhCzQVG}5!E0nzCL7;q^ZFhJ}y|}-9P{?%Sqj&ZaXBF~rN>-1Faq$nq4M}0d{Xqbt;G2fMSvbx~XjN_GA|z#2I_ldTiK#2Mgiz@0i7~N{wb*H=`8w)(WdQ@iz3>xi>kqwFrmC#IXB#@{H#h8qb7nX&Ns0c+x;A6XGrH1R8roU%AUKp zZbQcwH-kks1CNuc9YDcitgMa#=;V0WVM?zF#5fxTOlSJ-no^<|D4 zUorv@F|yZwu42E`YFs`~*Jp1`=;Dx*y6LR1)M08gHX~;O{}oR`pESqcoFDwu?T>ix z_#2bQrLW{0?Ymg#KHPV|r6g2O>cZ#Antlv}sF>uw+vt++U%|;!`UtM7s##QmfvYXN z!Qj8$yq<=!d{sPHD>3?C!89LhmNWbyZ~9>L=VsrkIP`&93D|4#2_osVL$K7F zRneu$wxb=zL;5vLZS_~WR94UBVg>8g$PtaJ{{)+>2AM6$sHqboPw$odv+NO|Ij6_U zIjp!tNTG|J0(oRu-%RX++`f1;z02Ya(mf`~q5svFwFD*8|5GFtS)F{*MGH7`Gj}kJ z3L@E&Ad5EZb_$Vwvpg=X-11N(EugruruONi1*t&-Jo$&Kc(rIExGb)P!*|Bg={Zan zQO)KnYS>o*Q_mu9T6gN1n9FU6aOI+)UG4PRZbt~-X54o-L)&=g7UR7>Z|-B)YiQV5$BNY~!tv@AfIqn~;G=O*poOgwh?nZjPO zx{P_>A9Zm%Rw)7v<%J&8Gpw;9j$oVr5jUgu)egAJVP$#}@lWdCGj<5YSx8pdc+Hy8 z7>H=^=10p>OR>xfDm+a2Aan0@)`FnNWe2F*OiWGp7OkXwcNb!d7>| z1r7`Y0X%HW5HYHvp28wqhO8h=UaW75H(CEdZAi2j`Px#ArUYwfbZ%gnrCJ^Yp3YNd z6*VRtJwSx^J7E7pV203P82Rs3TV*4%+^Uok zFeKN^O^ZwL4|50jD3Te=WY&#y7s9v7K6n1e+@i2^6;-`IzD^eeyIK7f)X);Nw z-*RfXcp@sinCUwugzWU}Z(|_`3aqrwD}LAQpEyMoy;;-}k4C|Ua@_4sy((|i+0m!u zNP+oq&mZUNd&*0QKuKg+50D&=dQ+cgS7M8dyVYan*4ac_+9}N$AUv+g>cvnNS2*yZ z80XGAU6`;-QrOUxSjqRLD0yG~wnOipM`*5=v1+sjqA8aERll*t9xg=28NqN%OS+yV zcIuwOR3w)dvv0XD{_XwJh+F0vyNuf2GyZg2?~SQFUglP^zBt{eGJ`6cbv5y%P$xSJ zB8b*MU&1wfFFE)vLTpSlMwRlNTT#zy1n=eBohlGeqxHt?j7qFQb|fsF!>}|NS8P=G z(mkR%dqS%EW{~v!8gzGC#MseIVup(RYDcx}Jdyr#y=mU+y+p*fl*-%KR3|@vuv=u4 ziT{UCuO3hz>8|6@tyRT6HJhy}ZvTxThQ}+@&it9~X2{enmgy1&610s0X@LRtT`~XW zc>;yyS8{LM)W9-z4JY+)UN{tUwXwGRj6LXcldC(k=#HzqYN1aFfBha%zS93oN>}*s z^s{={A9%pOU66C3MtM z=E3+q39`-7Pp{H~w8WY|H7&4+gXkwuxXlE1^o8S}X)UfSy$xrX*ISWw#J49$Z$V-W z(5Iy8g@~=K>>xebhWh^}>5a0mqQ);NjW4{D^T*M}U0Ly<6kv+1?pkzQ$7Z4rcV_0F zp5HWQncoMIT^P`}J>2j5$WZ72P2tXnTc%B--YH2&$)#EkqjuXtXr?|SQL)qsI=E=b4hA||ba zTv6Lj`yTez4{3#tNy2i!l2D3G;N?!^K;1QEnXnl=c8QQFG@zd!5CJciUns~F2E#qP zl!E$ObIL&Z@J-wyMokIfKpu)=8?THF)z2c>JxYLdp!I_SbNt4i+LaDNPC7wgBueCc zFE>x+n+4%MVKFF?yr6F`lf+NeGeeJ<#Qc&X_Q<4R-w=)CJ@IA6)Jea)C*K;y&3Hb; z#s2-D*-#F!98gOp&QB5*K_%!tP0?oFo@H3dbLb;DzJE?U`O#{zZxf>I*&-0EQ<--F=kD*;gAk>5&^U4BV}+Zp%n5q=32r@vF9*?!*<`daBjX4 z8%3m+Q)%A8+qqB0hH~e_QB<^~Y$V0+l|mcA94i+Jv;$CS8?Zq9&zP`xXPhc+pNE#T zfUR=$`!kd~Ns%>uol{Y;$B3r58{mZ>Oi^bsrCv$o&|MNzme3ojl~X{c5# zV?nw5#&%@iJG7%#gUkc2JO75yyPz;kE2@$gbx%w17`0&-OcQ*By)(!iD!Q;`g_ z#1Y_tr{z%$nP8?HsTc6p1C>Z|HM1rs4UXwHxK0%z$zq^*Ca9VeqXT>RC4DHMNX364 z@LJYj#NO7lf)l#A$E$n}2zYa{_^?t7(-IE>Ga3W<4dZP74U}BAM^v%Op(Gd{f!W(@ zQrDl0VsA%Au9-9gQuedQo}dIuT2G_}iDEV2O03ND-^`xoVV#a<;t10#LIdfZ7Lvft zL7t=xn*($RLx_3My6HFbU=%MQ`6>I^Ks!n3?_BFU&&&EU#L|vot($3HWv?PiZxB^V zQsn$GPvgu4uHA~aA!ddkDC(x2=+2SdmEdwJx{}fL97{dxwB!lh3V!R(;0ww>CLWr= zO(98LWGulr(W^b2N#57&aG|UO$GG8*BisYDw;AHZ#Q=I6HCRedEOC!4Xxq{?EjzP7 zZm8^Vzt6B>hbQyPS6yBgwE8QZU)42Trl$a7SdfVdVpB^zv;k;eDe>CjTzIo7^9(hu zPVs$dVL)*PZ7gcotY(@&qT-frtE<{ta~wXRV=-rXO&Qx?V* zPwd3WKq)L4oS+pw3GMk1O+o;PE0Emz>v|{~Mw1ZJ-z@Y7R}*bs zYR^&w{R)n_)0%MF@s*&ulR6TXR9mP)R~QJlO+cg#VXbcb^KZLf6|a#>3?YbG{4tKa zn_*|+i50Dv*hf*UCM*FzL}m2|<4r34GZ{3^d@fXS_k8lfKWe^H2U0oLWi~2a22erZ zim8Z^J3ER_Mp8#@th|V`SVVwXlRh4m_VeS|-(-hJ*zjcGSK23xLT(CF_R!U1!7(%$ z;}M8q8(SP2Rtnx)EH?yZALv8xXHdYN-1BZ`QAM0=^4~s=Dh(7?G6=8S#K@1imuL+H z%iSmG@)3w@z@bpMP5-4n+?$qiW}<-pZ>8nmTwAsrd<6vhoEG@XTUlICeYZ+*uT_r_ z5~=Cd461~-AlZyOBjR3Dbmh;`qj}Ncw2oy}qqxP>4PhDu9Qk}1TDVL)iDB;HC#~dUD)1*7^$f{nyHm;H$75n2{dcBh z%6`kn9}tKigz6P0zR;#K5KZd3e z&M_fbRW>;f3Ba3oq__suak%oFdC@H*s5cp=F#TXu>$2%6_zv+7Ypv!ZBT09lQ$74Y zTvti+NnE4&H7yhqa=7yHyn**&>WS(AP^p^%3AM#3!N;$+Ng0(wY)fUIoi9Ny$G|&H zbXL*Z@1-UE=C$sUV$EBIH2Hyr;-)zlxKvUL z4yWbvr4j|7JHpZk9J=@`IOvS;IMv$u3>^f?_EuNJawHXblFN|-qM_HZw2xjPZ9Z#Q zKbOzb-3rqYM*;mOj2jxl4r2ECd}8eqZAf?WDhl+YH#*l~zur`7D4FUL7Dw!Eo!}*3 zv;wR)HK+if%eOuxU#|{;c9)c;8?H}%go8DlSX!;!(EMHhq;TQ4p2E$m8=zVXe)r1C zjEf6-ca$B#!_UETyr^qT@rN}7yA$McJdYyLYpD4q8aU6VK*{#j`g2hR4z)(c!wzE{ zG!&I}(m{1`Lg7Pv{Zlx;*qx=`&`|Y0EoWpqC!Gm%ziDJ^=IvXY+=!Ypdn zFm4Wb;4x1-pj#y>e|DD7S~)#zh@s@{XLe$}9Vi$C)}4kjn0FI-si*sbN+;L;VmIYF z;fK#lzQ7;aeOCbd-XZuO*X&1#8?U7fizqxuYozf2VsHE9`3i^9`om=YcWuVT9R6>m z4d9?*qBf`gWOQi<$I-czQd`p%08~!K;e*4I3PyMUg>Wp%GPoW>P!w(aIUY;*9F5Jw zRlk|B(4Dbn8XUx$V;8o+7=l0u5rFFRH>Y4Ql}r7vb$f5gAAz|VZoE!C5KkI5MC^4G ztjc>i%4x&0#xJcU@}L=&Bj{(Vd&t1i;e^%aSAu;b}RQ9w07Og3y<6X5At zR>M0a^-ErG$=cOYGX(cB+25^Sm6}R{Sc%aX=J$a{aBDLKfl+F_=l1;}OdBPgNxf9= z;F5{c>4QR}5BOYnh^ACUIy?&FrAIXdInR8A2&}E2b-Dh$l3xATq;_HCf^+B{%5)sZ zJ2ycp>SEpJQVPHb+kVpltC@(Ci|*t;r?=BfoBI-$=U7l<_2V&uu`c!uH!et-A7iMQ;`zETgnn4MF**a4$T7+axg@B=N=d?U zcPHLZlEtNx9}L{;#M1!7Br*k;bZ3<~O)Flux@f(F{%kO%X_6jjz{sou*bZ;%W&4NC zOD?1^R&5FEk9QZPUfPz%&g8WC7lssB8fDNo;z`*HtTn9yMGMimOYbqx@wQ#Uf3E>5)b`f(unW22?tWA{U8kiKO7lBd^lOeTa!};LFTW(Ku2N~z- z%We#g{Y~lJmt1TFQNK-Z9ehaVKzd>qf|=J3iBFiS`-u{s?X)DX@#S(C!Rgu~QtO(S zWqi|VBc4qvvolF7WP*N(uU@|>>Ro@$oHg7q_rhL9xq4JcCs_BzYa435QT7vNfyU}e z=%|{~ZC6$wzCS1hRn23|KK~Q)wwpb*kE8to_h=6Hl;piV3`Bu8r<&(VUmowJq>+Gxd-Re*o zAX2rt3^1h?XPpixTm#^2c;T)T%2eIH~{Ox(3o$GVr0oR8-H{o0Uo;l@MDe_vSsT z$B|nz**SG+Wkb?xhW!xyZxCWw=2es3PXx&c+K=MZDihU75UxwZF~=lQsfJr&8@JQl zFS>{KO95YC=F>7iY>wkj5c#vk3C3SJAuAc2{IAUxwV5rU*X_v{TW(Y3a0n3F;iTFr zhY0h3y+m!;Lp^Iw@VA{Wea8Oi1jt{|uYweG=9u{>D!p}~?OnlW{oUZ79eLqz6_TqE zc{O$q6U_mHH_Bx*Yesol(i_qjI4r-n-U>3U)3^IJT+;n&bQ*}&7wm@jor7fT{Zx4v zA`m}8BB_lirUr_ehf@ZYtnKD6wjkK6+3pdFH4%*~|x8UmJJh(Rvf0)R`Ue zW!_8?aO@xnE!O!<*xkRU?fRx|85xFCyc7~TMiwy7-V!M`_RP89J@rA2qvqvDKvS)^ z2}$ycxF9W91${>|s_!(tZjJl5=?aY0mP9msdnsduF?t}8irbn#ksBx(P+#~2WWh7<(Qdjj)zT>#(aVb}+!YV# zC(7T(%sCJ617%guhQg`l&LOtYBCS)!5iBagsn9d04l0`*Ux%3xTqh7@DM4Q4uhK6A z#VND*_Bqs|BIVGVK#oiH34F#P5tecH)FKXkq44;%pch+taPjd0)=e*xCq54skD4B= z8s>T(6}D?{JmpkNHiEK^HQA%9QjDbd7p^Ek?PjUL0Tz^rtR!BMIlt;RvP}G|j&|7e zrZlL}{omkUr=1#Dd~9oFnC6W-9iT^1YevB=RkJ_i(r9Jr1ti@@(W&y791xUYmG7*1 zrbg1ZlR)Md`LS~4s~JcQ(O;ouM|#nHw;$=Q;26yII~@&!=lcgK%}yt+PaT^)B0KW) zd0{FMRA33a=&c(`qI;KC0VU2bBi_xXWqHP3u@EvCfs_#M&J-hOXA+m@JCozR(g*dT z-h=p^N=r>;C$PQiB+t#h@gh zvtnZ41_CY=uvtVUM9iVLoEfegveM}F zEkjT-_Z&*RWMX=B8de|=ieko2xuiL^uaZn+czTY+Wz>w2NRyeb;JfJm0}NwyMxnr)#j)TLd)wBT`3HU5n4K4Q>4;KMHq2Eh zPR%7d#jr;xo$1iJr7N4r&JjNHDYvq02-|n(!OhtZumHYaWx$P@asah5{tRr|Ho`WX zT-kNP>-Wm<{k)*=loVFs8y`J{h}h)t(p)E*=_jlNeMI2_DL;Epzt-7hOEQk~tEN`a z6^0yV{)q?LcCAJmxOg}M?l{VezRc>A8}3%Es^d_s{G=76=_o*7uA{z1-7kP9+p9%9 zOv1$L>GG~#ftF}X2e#=hbl)P5JWtX!48}!}D}AOiM}#)0>FyFWN?|q_`t$)(6(N(6q4Sy_&wt{n{Zf1`^Hqv&n?WrbW^HRNG6 z;z#L@s1&`es(cOjiWf(n2*YPw?u!AZ9)Kf|^4aTz*g)z!zr5?^0}kyB*PCR|u&_AX&lm#n<$-5c%Zkk-8$Z*B^F0PW&9L6?9U*(&Yx&&?64 zlxQOmg-<5>8rX&Y_L-;&+N<6=2d2>g)|DV8WAM-Re3^kWnd0{)EXKZYx(dl72#L2z z+34{Ri7g$@PJ7+vDBJ6u)g+i*!^}+HUJ3TmxdI~2VO;(7HZ(ue6C4@5bk?JM*F=11`B*qth2xCA2YzrrS~n;)*odt_Pn;z=8ATfNntDG2&9v4 zD5Wq5wdvNiWrsNdS<7tbaM%Y+)V$Y0 zo|<)ao3w^ogp-$b^7_&Eo$E{j5~S=h`GxH&A(^?v0JN_* zr<~op9Ual)vXEml4eJ*ePXq(TP=091t&$JCA zY#y!+a?GO`st`k*x8ypr>uqG| zz4lkh*bf*^4F%;Blz@+ey&ooVU_~W+Si*m=5Ckg*S8p%Pk1zuu6S3_y*b+ppLuq?!W0};3_b4n3gKS zuF@i5ILu#%nk^Vv097|+decZG(|B1gLUAv`^>FM&3CQnA)PehL!P3+o?(cfzFG}|6 zmdObgl}K5!&Q~Z-T()pq*0#vyT^8=5{#?IZ;E@g1Kj1-gFJOTS>MQREx#9Rom?+}^ z?z4K+-*HO3M~vfh=24&O6w@|WFi$x}V>oC%khI(SAeowg4+)}dP{}~XXtU2^2P!2* zpRNIWCa}2C*v;Hmkok`r7{pe*3#|kpfa{~3VaIL|53aUG6KoUq%3D5*G|aWA z#0+!m!t`YoK&Jl8+)&y*h!L~)BVVoE$RuQvkOyays*0nS`>reQ6K8Q2Q|3v7iy##6 zBp4P4QB2E7_0~fw?}H8$yC6HT1h~nNHduO;{1G*$XD& zis~teoN8$C*4}`=<0CJrgllRpz6{OVOcj*NCZ#7$F+IX~ZO>y~mkJ?$3HVn0Wh#JGIRXfG)817~Wpf?7@yZz-fi7q)IYSQ)?BM%8 zWKJ%F)I}TQCtqpiIJK5y3H_$K6WT)=g?}cQ!FL4UefHR)^}}PrU(LX74yh~o4fT7f z!DY7&ohcN*?9x2J1kr`)?s#8?-EYo<&Wa6elIa81gS{eVAz#KxF=lDw_dli$f!cC% zQ3_6sJDJ07E&YY!b+h&1wJaPd*fHAl*sNc>VlrpYe(* z;*A&(fKq~f1mujU?c>g};HQs~d?qR~{1yqUrNo0z4s*|H*@U0~hzar)XvgrV)r#uKNKnOl)HP`hz>=RDDq zYb%}Ar$|l%>J>maol zWWKsaE4?{!8cs2pCLy@hj`1pikD^xd7Eb_5C1T2s85^5Bz-&N#ZMsK9Gp6OwD;{B^ zy=rp`Cm6P0#Mgs2nz`TXQgWYwupIL29P;_EoHusB36KVHxHu9R%h3Ji#$p7PSc5Qk}Y zspCy*V$!*lj{-xsbm$meThp*!iXq&_kwqF@d;lbGvnf@sFvcDnQ=oXLagjKq`QoaV z1QKSTB81|`BbD?D-ZHqCo!gFuu9Ngm_=8BVsdkx_o4?nkYsfYPJT5(gBfFykWx)*X zbjqgZLW8Y+Io-DcNHMN32}lj9tk;N2a}gf|gBn7Lf1QL~VAru-+Z^u->2mj9sclI2 zk0JdjOco|koK*A^q?)B6kB@@DOV=A_R?4?v**8T%CqQ}KAyrV zRWK{zXQEdw%&t&!Ek$3Efr~=!t&<*{ON4Cy5p13^PyUHY#)8GO`j6lrZo+?o4POSd zduq}i@KLY_T*nVdZs}bApiapkN&@%M(fJ7`w|`&5?dnk;(%KFbuIG>!-_T4Bcmx%<3Fxc?~~+b zU>#?Z4&eZi+Zb-?F`R8tt8DCBeW>8avqdW-13bgnwEAo$p`KitCLXZ92@*dsQF`E7 zmER~HA9ex-bCm|8^=zAz`fZjZX+_6OL%8=8b(!Ck63#F=O>R8pgmm)ji@g;wDS+53 z{{P$8d5u}Wc?=y5I>HniEX8QF*MLlO4AD!cgI69s?!js%0D~OHWG_xUP8lb6o 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508124001-Config.rsc b/MikroMaster/20260508/20260508124001-Config.rsc new file mode 100644 index 0000000..96fd2f5 --- /dev/null +++ b/MikroMaster/20260508/20260508124001-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 12:40:02 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \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\ + \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=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"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 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 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" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes 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 disabled=yes +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 \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN 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 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 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 src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="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 check-gateway=ping disabled=no 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/20260508/20260508124001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508124001-Diff-Config.rsc new file mode 100644 index 0000000..2be76d8 --- /dev/null +++ b/MikroMaster/history/20260508/20260508124001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4295c4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4296a4296 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0