From 94c7ad04d0ac168bf5b9ff25d736c86a3b46ea24 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 8 Jun 2026 13:00:57 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 08 13:00:57. --- .../20260608/20260608130002-Binary.backup | Bin 0 -> 262923 bytes .../20260608/20260608130002-Config.rsc | 3595 +++++++++++++++++ .../20260608/20260608130002-Diff-Config.rsc | 23 + 3 files changed, 3618 insertions(+) create mode 100644 MikroMaster/20260608/20260608130002-Binary.backup create mode 100644 MikroMaster/20260608/20260608130002-Config.rsc create mode 100644 MikroMaster/history/20260608/20260608130002-Diff-Config.rsc diff --git a/MikroMaster/20260608/20260608130002-Binary.backup b/MikroMaster/20260608/20260608130002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f73e33005191d53d3e86e274674709e332e9e6be GIT binary patch literal 262923 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

&vDE?^E~69#MCeqn7H{_^zqW?d5!XcY}gU5`g= z8nGRRq=3|3TUsypf8qo4;IIHycKZE8=DWPqakv-@_Gc3!w-reC{6`WTl*|LosnQtU zbj>}OFK~_8$*_rF14B=y(vJ}~Bu=NV==zhbjbGb+`-TF8id2PnU!Vpln0j7>tK3&e z5Cf8AaP{0^$>nbp83%8vkk#8mJ}ylgh@#d&F+I=`c|6{Q1wa(bMg>B>g||*GO+_;z zoDytB*wZAWh7p?$HgsPKkB4Gv$`_f|*vog~oaiVTsR~`2Wixx-?!2zTjMYMUiIWs9#g+RD2kY2M#nZHat+{tBC4)%RFsGQO;gAd}zv8 zFScPg(dbajGv<{dhjSK8H8fXRNJY0A8}j>WkTesJw?_Yr@LeEYpziSz#2qE|*{BMx zlr}p+2-CYD89Ag|C(2EKAJGcLZP-9gk3OXKS`?lq6t4ir6&aTRE zYK>8N4E=y8Y30q`+=1r?Sdl%egI|z{5Pmz37eLq`_Pta9yo2)dP1W9$Vvi zFqxQL$kh0~$a9qrsjx!7gQD|)9<8-62SfU~1ZJqe)WGt(xGvdTW13wKbI~{$^&fEY zHK`i7DL+jWPvHr7-^OO`0bD%eJ^ao#F~|qT$*^?xjV6;3L|rv}Gw@{*a*kQVPZ2Dn z#ROKu{({7act5~N&OCmCs5nr>vH0);PzxEYfa>H5i$19QIePGa$f&3%!9RI&Y?plAq60%zD_gsl`jDAEUW74q~W8FzK?Je+TM^GNKczr8wg zNIH81v^Ka?F_!?C(pqlf8dO`ueJFle;fy~*Zw=lkG1lCT1 za7%Ga1{bLJdrBww$Vk*LVyN9ModyeHoF(Gxi;I{+PWdUPSSCZ9mNQKq_j+~3hD{f| zW*3WWR#|!F7%8BoRw%+4^Z38UJ-bFd-7rMu zDG9Fr=w!Y4_V{J7@zPv|?!MREUfkdCSakk5uHtW|B>hG$h@v#rwo<&T9c~6W`!`9w z&+bXq=j41@@F{-DYsV*3zKw~o6(Q_6l{!kQf_|RWx9S+W`q_7)A~)_RKHRP2VdEcelb#aB=KQS`s#Ox~6Hi&fJ5L?kOYL z=wNsmd3E(Tydh-2LLuyFw?S{-LagPf>OI0Hp33))&6jSY9MBY~FwGLae@Cxb#)C>mfIzn-RD2BYMTm-iK~y>m$` zo+t!C-9~8&R)08+*H&UzLK$5G&BGL0U0)Q*@vGTu*BBzbl4&#UgBw#16s2XCj}t!rLJ+~i4^(VK9 zETba1^6HW}a#%&NHoyu=PA=}3SV@)jPI@j;oUfp_yb)!djJ&qPU4zkd1ynlgZ7VqOgo^PL^_#Y&WMVv z2#wlP$7z@C<#(#ezE*JUXrFiH`l_{kg{;JX1xT(14O++pz{#@Vz%-m9oD5_>SCSIG z3i)$Jq3LhaJ$+NBjmL1T4DyGl_ET1@PrL%Zy19`EV{^a;$M~EBoKyYQSA+_Q!6Q# z)u#L9GFOhB{+{lJM(rK}6QT8(639gTu2;>qgOF%rXe!54Rue*^0PM#t6^?*-a+41? zml>x#9nt4=b3g{(3sP=3Z`_@pD9pM*W%|%d{vY=3RL)3k1(~gQKEKU_aeRKL7Rma4 z`vh!@X@*9EQ|vHj*YsdxM}Aw1S2-zLfJ_XE&Y8||ILLkTPH828Ih%%2$bn%UN@8&r zH0`llZlA|XIfU^}s31f>iWvQHpvWIZi*P%s^fee8(HoPXkkPea$8UDQIz}$qMN`Ps z=u>yRHVX7* z@|3UWI9{uTvSaq1w7DnwHM`PkN@~!|%Xd2Gd+pPn=R=pXnp3C;ZqDto0DAe{Do;at}r!=JJghj){X zzWn9nKC(CQXT$|%N9{~|kJ+q=x?07RA7dbwnlWVBjn4!F-(334rzsI=+ttH422M1v zmFXd;&S-im_Q;&=B^NaV+lJgIw8aw}{94oSJDT#AkwpLn=vW-V7jFY1^%cNnZBI4i z;)1lBWP0dXY~KcO&gpUrh<5zafC!Ih@me`ui4Ybdr3&0>FvO&=f?AcxJ4lGILJ4@) zc<$9~tv_8;eXJ*u#xOT2j4<4)6p(C!74+o=ScChbkOspw^B2 zh7(o=tdw%aPc8fb2x0jYst3IZi~a~qB`ZWpL^JOg4)4e8^&>P(WuW8SVh7#a(X_M)MTM9Zv zZW%PPNsXQVG=M{(w0}oX!3o*u+MRFW3wUC$){K*__Kq%=ZQl`U&$ZKM` z7(yzm*{`0#X9cIep3Wdp62tYzX7bh}&r6Yq_n__GQ++feSo4(Qf+3(gDg8H>8l1)W z500_fa@*>*moB@71pCK2lE1Qg(5yUuy*<#CIg?S))6;9)!@($anm?n;w%fGVH?pmK z>NBS?H4^ziB_R!0#@54JE&S|<(H$Jc+fZ0iW70(UWf0HyN$`t?WA|Rp91UoNha#i5??8(Lb5_snLHER(t1*ncXY<^HOi9n=k{gOA9yT3 zzj}g1W9V7xjWi0g=DSy=T&4R+q>i&JDbt!ln^tmmbQE#%-zA~`z1SMlCn zlZ^x61I!)ix&$2o<6l)TBJ~u<4IUCDSucEM`+dThn?<`&6`8H|AYn9_#XzSGlnfSMl05fX7R0IZF(?!Mot^C38Bv)kSj4 zFfxJRKW4H|F&=qm+;Uj%;7(ttpUAPIR{)Fim#I#cZkaL=n@kTWpncPVKboc^ve~4@ z`yy7_vvg5ro19-#6Lw!f;|>UzqQZRghGL{-N`Z1UlK$7Pi$Eg4KNMGnb zqJ{`tZ#Qd_V;iYtE*?qme1rN`@!md-tQB)7&XSa)(!4pJbaik&R->kNgrz_W?XXvc6{~= z&*Wkw+fqpLmB5-xD9pBx7>Xloy}Wuubtw6kwqxvG_PWWbL12LCBUjG%P3}MAPRu z(2u@_oPQj(9<_q6W`7k$*W0uIqyN6z-(u{-)}T_#y3iX0?p_X276B;ALCK@lLpC1| z{+?d{v})mv@pR+%4!0$dW~6boQXNX)f^BmOaBl$%*|iIvr-^j!LLUD2xoMcXICu^r z-Bncgni>_Xap^3s?~j1iw~#?QzJJiwte`n^$=gM*lL2B=nqJTN+vozx_KUJ~E0;$`vY)fXihx~OR=*lK1b}S%;+xFu5wJV}`Z zQz-#g+@*YAm~$~9&2_*QA2#((1c~AP2KJ073JdFW1ps|d$w}7Z(MaDn z7_kYsZ5B#KtFHptrB$AFHP#B;A5Zc9FzPU7$V+p51_Z5CkQj{DQR`#~n(m%#R_Nvc zGyL6j*Xq!7v1m)H^+-o2lN0fJSFAU`IqSG zVqn!8k7=dl&-E&$6p)O&L1wlgJaPY(~(BTuShI?O2b7V0Z?m8ta_7DgKq zzT!QB9+sS35k3W+uVe~H#bnxq(lmg;4e6IAkdlNYp?v7R5gFI9?k5&jmbLl)%|N|< zdq`x)CZzN3au47usCHLCYpO#?8g%tG2gAWyiLRAqYLw1zsC?ueO#zwmX%U3wngr( z(8n(eAk*o_&g&ZIke6s==Ea)ENtC zX0ghsQUX#b>UQd*i+y=%vLN}PaHN}5$+xuIBS_dqgnW85rhM>FEsGMkxOveHuZRSA zNqe_D{qD5`kTDYx5HUn;&={GM{~w;Z3bCou!}YqMfP5!avW^VKTHrH#S-`8213~@@6 z3Ky+Cw;P4zmkKF`7e$%T0; zJS0T+H5dB1L=E>!Mo*_`$5~-q|e5Zcgp)>(N+%%>VcQyL*>7P=JY%0dBYsGqO5zq$_PybA#T8*Vf86uz=?9$XCc zhM}s7h)sGZ$YJB(i<=J*9btu$oeGtb170D0@Z%)A6nt@MS+J;cL@w4%&X!bFh{UdI zci5=0>jbc#Qra9X@GW`7l}RZ=4q|n?t+sOGE0s1X{VK-ETEpw2Bnh88k4sgaeDM&zU3;ssgB9P zOsA!#M>pzvvyz8p?v?!nF(vC5Y?<2MqG9?{GdF`(B(3s#{qNrK9B)m zY(rhX2CH?UJLMa*Q8u)#L+_1C1=^qf6mH&{RJ*p+Py1A+^^uVntFT1&CDV&3)Z%fw z9s9eJJK{`2)7Fh>iPg7+Q#~|#^9I2Gr~G`B9|PzGT4tcEDV&8~By5OcI0qIi8tPlj zbc3Q#Y@XDynF>;L2s;{9SkEMGC)N1F)3-iqeWRjf9;RpfQ};@)MSyvs(S-AKPnk@} zj?kvu5AP-B%o4 z&xd|izb$i|_6!aQsnkkT4(GpqIx6f-psGxswHW08W%KMZw3N#Nx*T9?d*vkmu z+FH)>1$pavfLdEjFIau3x-pvOwNS4=>VZ=X#4UK1DNjiBML_e3$~`vHaL+?%R&zUs z{Ny_GR(fsI7LWE#UIgsuMru*?KMqH-GJZxDb+(Y+=UY$a43qzEXzK9G00ZO37eDFp z=}(QwobmLmP`0{5kS-=%HmK%(7(PPI@uPsd!c4nr5kJg;qON( zT)S)c6UzSOo>&E*{*80(#*&|Lued|)UKNI@7GtPa{$OIvfT-T}(hT`bqGs%z9& z_NFNMdSNQ2Ta8#{$i`33@$cM4r%u>zHsS#GG~Z$f&;VC&uh-Quz+LoXO8ZW7k3_zl zH^q>7)3Dg`wrJH(Cg42o98RL{$aE8I3dZ7k`N~kEfRwLeIoMhlRDUa2FH~!@0!j;n zo(>;vwaf|^_pi+THEj$ur587ewJ*faw%^C0*8DMWE0Zy|mjWLR0l=?DDu*jia~)UuCZr z#$4;d%Uf>9n$f`QByV5l-HkV?jx9MRXigFZ~sMDNX`ln*9}t|qm}Fn~`nXM^5%cCK!S z*UUN3Jy#7kQ|E=?X&Z*wNYkVegaguP`RSvZ3ZjnvoygQs@GyOM3H%UKP^B38aM z2F|5E2ytW|NwG?v_3e~j|Hsn0oynYck{>_Z;Vq1F?zp|p2eOl^?ep)*Ha!bjs^w&g zR~VF@U}Ju#NtPx%?7-1We4OFWtu`DPcJ|kgx_1$U(X=0c@xszh+)4WrFXs>u65WudSKOlNK^fj8Uu6%Q))n|%4$QxVE3Voxsuk+{L1 zt)Qik`wtUy7CEDXrX41uf^U}UE!UyNSGV!M?Bzb&0iLzD%S@q{xsV%L&lCk#Qgu={ z2xjYWXq|kKr4!{5*1_ZRr*W=^tsA>RQ;^vH#I{p171?i9py zoI9*@OnoY$9MsQ?f9i%PJ(yLMBf^E{o%``uv$xm=TA ztM(7oRinp#;W!NiQ}(95yw+eU7-IFpvWFZlAeEY)#b6v3^=&P{Kkg|SrqkJ952;Y1 ztmbNhiXS^^1W~Jpxixv1P|}(0Biv5C8mR*o2dxq>5Okv(teD$49mOZ$fl5Qom0)!B zE*$+QsEuWUv;(+(PAKZbi z?2ewP^8e+4h1pSZc(U|OG2BY~So(UKEYNzEH7}kk3Aw99339vGa|Ey?e+GA|0svnu zY79Ybkt!|_&s22J8L{Q1ugQ|Ur5t&|{+%j1EAv%A5Gj7PoZ&Hyg*rEvhFUxI3>q89 znLpG!vICmn`x7!74>Or-!J}xVcMmdlQdHw1k3KK~H_l&sBSsO|;%BNj%~9qkmO^EI zrK^NU<{1)93Z5g=w`8w*541y?eHu(^PbDhthw(D-Po14xD2i*ubi-u7pe-1jqGf%K zs}6b3maxg*G4wp7T0!f=8n;jIn+nY3?{5LaN6kL6(!s}E1#iTpvP)DsR3bs{8UYC# zZ!n}hPUyK{)3b=aZADhO5m2gqi?Q5`WosT91hDC`$9kSFv@4wWp-UY-G3m|kF4cJ{ zlWVNR43GL=vCp`Bb^R;MvM54P3;4U{?zm>zaAVo*-%i4gD$I|jgE`dAcd}4Ab)yRo zMF~Ixj9mBu9rm%3?%%nn3P_+NFiW(H(xGLdm2So0YsucLgaF@?#Mue*j-70G32s-w zTS!|sTp)vvt=8ey0>V=EMM6Xfn9ut!88c2Y`6wtBZR!O@wc$<)*I57*&-;GpuAv3h zI&+?VN%a>igc^e?)K=C@1wFk>aX{|mDg?kw8}6_LQiPVgzRju3e)l(CM)S6HRww%f zXn2KmtMNkULd$jwz7xuub&njhE%a|QHWOtSd8UobnV}RylH`(kmi^dA{<-Qgtsc)P zkym1Oms%ifdElHGtuLapn(5iP4bz-!)2tU6%2M9aK10S;0l6pZ_SPnwVm;re0B<8k z63>7kqmkfes|tf)kXu%?7iAQM9kjkApx}sgxL=a6ohOC_u?deT={WmQ z3dP=hg z5(fXLO`uI+>-p3&TL>pxthaUxq4x~lCjnrB=o36}WfoD8y_@%2b9LD#OrFx3I{obL z-*;zc)Xu$P7G*+HVR>4%xZyPUH=-*sF{)sL2Wn|~(1y>uS{0DQxX>^TY56YUO0OTc z!4@8cW&@?q2b>o*xEl*3L~&hZ!i z9Cf+{?T2Vm>t$p{SJ6Ha5=q*Xus{EQLO^pF@QoIafUDc_)~f}3$42+?QeGFz-6>$~ zE_UdAa$gHXRKRI9)J^nKlLK7vSVmj)Zomrr*{i2=fN;T-0?`n%$bT0JP^O9?7~(cC zS|f(;MliT#3~|wt^zugeX9FS=`V4eI)Ni4D{Ks%5Yrbno-$m8iVh&9krz#N3sX!Sx z_xcjv;PQchw)j_6b3$HdB$@F*i-qLF8UM8PaoeUv8@=&`;Gm?b_D50}>GdUbq8T>P zFC01U;1rD8n@bt@Cp(}VP2A*emof6>c-i>>TO5o%P5sfnxjk7{nQAApG9}r`w;gpZ2P!uQNNlpV;TrK;VUN!1U<2HO9rQQoB4)tzZE*@ zPw+5FMD>RE0#l`DGFgt|7M`CPQ1y$!SbCes?K-D7>ev#LEg&T?jl_eR%Q?G5b)xGy zvC*f$#jOm2Zfx{Wcdm*tLwXCouPfoWE`YOn2KRn@NFN4r8w|MT+`N3~Fdj9b8rdA> zsgz}dR!nSs$I;XvA&~Knu^%00ajQqB#JDTt&Sv0ciEDJ!%-S6Qcr!e6eAzuhcvogA zwJYrhTRol|6JN4C7YR<8po&3#>~sLv#tZHV#(Ul`lg~*peLxJTvJ8D&Gvimdj~*!8 z_Tj3n60mpj02{2J_3!{gt2h$YPibg8zpH2v6jB4vSqUOb56>n^8T3oI|D&We1$m&V z{m)17HCOFw@E~-=53ACzjP{nB&2iyRyg;QF2f)=QM^^>b3-No*5qyxBM@wXFA>Z&H zRX)XOia#QvW$tr+Ptu+}Nx}Nl(cI^+Ow2k|GD5r=fPDS~hdXug=&AyO97#{O-FzsZ zuCAhLyXYw$_b+s%T@a#c_EeX1v&AO@Xk4Ta}$Bo!t$-q0{B=-<63ZCG3v$cCG# zOpn5GYY9G1VM5|H7+Y4Cr`v>+ui~GjIiQ_tU0^ytkRuWP7ReC9OO#)Y)0pJPkyox=oNs`D&%cy^6~O+! ziLceVJG6H{9B~)=WI%R!I0Xv4_I$yrM-9n4^P-V?ycA61 z3KTg>YG}xO{Ye_a5Nj}Ma?FOv-^7`2|4%%eK}8Porz*mcfrp^Vf#bB7z5j)7)eRn* z<~SYy>*W%qTvn(rMC;xeXVE?0s7E*5xH-xqqLUXv<_Lx{gFE>Z#x+2e8J_S6;lE|B z@jF2AJupnx-*iDvZyHe-)^%?3tw;z}T99eTBb~qC1~#)%>z>8Z(K)G`@R-rWyiC=N zr8;`HHcL)3Bo*sVkS{h5QN|6jQDe|Cz>cjs$m&CrDusb7lV!u>X1Uy8gz?3bm4n`0 zl!~(7lG8Ddfgm%Z>3$i+sJ--}ieV$JP~u;C8c9212@Mka&8f`cdKP=9wznNJ<2T4s zz(O&gw3rdthi2f!Bu`Q>eTw}e7d!s$mD&{$d2N)bY;e@ao_P|A-qpQH$4Y0NIh;>REL1 z)alNyJz1hY!Q>0r^%p6kr^{Hu3SgknQ=h_!pyTZBQ}$;xd+fFIgX;7%R7j|aH^Z&p zl>LeyO1+Dv+@-#CV=I?^Rg5rzOv>K}61^*8+bE~fFQf)7|4g3G{N_7bUDj2u)EEb7y&Ji~DrtNTMa@Qx9GF{drB`| z=#m;*ouyqN?o=*HwB8Hv^00lMeU_S0XB0bv$^i40*Fi5NW35x(=+H9_!&XfDt>Ik- zN4`rQgO_#bZZ9qfza`MmoXUEN){se$GGi&wW`&D-;5-(+1)Rv~e}8L0 zfO14Z@K*R{c84267KuE~F;Z}VIUJeo5cAQhpFAyi0@fFOeAt8>1ez#(Z)aLOzXx7J z;YDggfV$5Qgd)dk{GkG2yeO)7%!m8*&aj&6P+P{fKchk?B}@rMGJROb_Zg2Z46Y)G zas~$%VY(p5D^%!;XQymnu?>R`mXVAJp8axoV7Po>I5dv9=dxBxcZK{EKfD%t^DAjF zB{dq*gyF=bie1TgMI#k{>uDd_ z#21`zL=n8RQd=pA;;GR2df@h4!!ip2TtWI9dsj3xZwKTyh+~@Fa+=Rxqm>vKo<2o= zUNbWKeF*F|8O{o>q|xO*0(cm-SM{VTH+liF7q8e&@>N@5J%D;z%x_CakZQU!*`?22 z>3G9zvxB3!FxlNnL(3f)W-|uDSR=6NnxihgkWV(Q2v&VAutTFyJy{rZbeok-YPjk> zdLTkh`N_*h17;V##73B$ezUD)<#w?cz`rra*i4sBamMrLCTY~TX%ATmbD$I z+3Yp1JlMh*W4C8SKsbmI83Sqr3X9j1kU?Y$k~*?YR0a;;aJ_@+Q=`SH#fgUE=^6s- zVP5R-mhFo;dJT7;5Gi>?4&fbz1{q1n7~dnLi|VD;s>&j!<4YN`wCk#bG!OXBgSVOt zCN@EpI_6FymXYQH`oJ|Ur1F~{7ET(eS&)!OL76y~B}ZI>D@O_f z%;I81&%M?%{h#GGRXOgiH;S|$O;{4LkY*>UjB&s}(O9(&Si@_`&e{wY@l!+`jvOvA z3rVAmEeJq!v|cHZ!qjAmQe2uEt7}RjOoM_7{dq37TK4;Pxp7Xen={18F6#RJME~)> za}ty8n?o<9OiI~^{;oj7i1udFEX@Dtjm?a9= z1nKSloJ!wyRsAIZ}ikOwT*I0#xoiz~^%NP&Zn3 zErVR_B4*yAK88HrtJI#nfDRE|l|i1`mE&wdmzFb+s!Y?x3lCE*1G@Ra-+L( zKCwnD6f?XBRLKXqQCNwqXHY?mm$~y=VPD&cQXN&P1~-Ctl7Ej9dY2itIWpHzLdqd!61GUg0Lc~=?1#zwPg{S8AC&_7$V^|a#1W?F1@(}(&k z2x=4NW3orLvv4D6oK)3NfIDYhB!DHKrT3t5vI9TM2-`IS_?wT#nuP4+x`wIjJ2WfoP_q z*tVt3b(71ICLqop_ONkmTrN^T_)3@EITr6e7b#F>O!y|i+FY59`$SFl)?C{uY`zo9 z*o0p=TC&5Elw-QhZ>%w`!4RYyWZi2FolZ=VKq-tr7ISUM_D8)f_;MXJPa+JT@M^@Z zHq=Ogk<&vu#)p<-)uN$3vsgrg0&u#MH2AeBe3!C@Ta8r?io1rwniae-T8M<^Uy9>& zlV?{FDiO&+&|GU2KX&O632qaQfC0-X*>Y5;36GEvBjoVyzZ;h3EDP3hBcT!`pqAot zgGk`YsF(clF*O!~89gD82QoQa7l*$NoIHOH*bM#^B=s)wTt)`W6*aU0M@5gnU?o$c z7WZ~MWYC7!faj-e$WV@JQfp<7$xFMne!BF*xY7jU>@u3omFL0vxO(onHyTLr})7DJt&noniA zp|Zhb%b^yP`4by44OEmtYjGvCb!*JrRL#Y+62Y9KYIBu7lpa?svOg_u z8cg!}^@s}7TpdD%&+3fzge|S3LY1DPu}Fl>|FwDy-@aU)m1VLhg6`WksS?@gEKWqp z)ndQba-|S=-sPh!CcbDX5tRKivp=J7Munca9)BYFj_-sc#pg5I1)16aID_GK$6W_X zs*rLFn?EvIf4cE`5t$U|9V-dC8Fqq7W6euMB$ijiIIRv`u%P$iA|9@~eNxcwJ#=>XeYxc@022*P076ol75s)gDIzS9Wj5RAm zJ^%N=pD!6XoKiBw5$&IGh z9_wBG>jUfNf-lfhw+MlN+42EYrf1=_LoPzdRLf}dM5CezAZ;;zt_rE6!vf|E`mDYD za@vmWjB&NIlS}5kYO*^sxc0SbC(Orx66OVA-G+&LQ)5b;NA$H?;ORO=fu}Q9sg3sQ zDm7%?2LuZoNzryQ5Bu$Tnb!Ih-fZmoYC87|oK5nlAn9|w+$hV=>Bs_g%#Q3@{{yi3 z`Q4PnOM9???(Q?S3{_39n{fs^GKfmztz$JueZ_bW z^!W9P2w@RyOGHrY%QaCfD8JRxU!*;m;37%69QelTP$w!31-3E+Die{!>ex5e~%7`JtmmmNhV zq9~pm_*uan;C)iX2DMtXv{?l>D;Nzg1l^Q9ruIe4Hs* zWV?e&vsZ3rcp2suawuL6vTc5fPrVtLVy_C27Wa98rLcw2BpFlHVBRfujncaiNT5F( z0;skc zPIuU;(bm|`&TQRLXV_3<_5SxP;%QR6_?c(%KIc7u1b0e>RV2bLGw?$1A^N%KXB-x)KjXnoULiR>aF_^2W)K&H@Ar}0 zNyhb*3X<_Jt-22L!o`a!wdpS3B$B{$zlEg@6=`#zm10#(&XNr!Qu8J5faVqZcMQhg z!{Qq3PSZlLDWK{yjJpgj+^-P(4n9*MS2v1feCpJU)a?{)P=~!ACZP5&aiEIp=A%MY zQ{q$u1>PNhZqnIMf?|D<8HA?;0Oc8GR#nLN(e4TX%%~W$YU~x;-U$T^3H{XkVtgI@ z3|AcAuaC_44}8xcMT`I62+#AavKjB+RJuHU9%wI_L7IlIJXbWCKRn0UGxKCrtup!5Duru;)IezRj3I| z)OEy6g5i%TJBbi*{$tEIp`vM`g?Ik4S*lH9a^vmlQa}Vd(Da1 z7>}TtGt;?QUqI&H>%PpxDF-sm^K$p46(}bXNX5xl=`;X!*md~5LE$!*EGhgRsQl;S ztXoA;)O@4tUw$(C5adTcB6N$W5(o{;lB;M%2$&%dn|pyiG&O1Wjt-|GI}r<{s{8L; z-(h!rz7)w%e)EEJ01f}{lR~c_+Dmk>Zn*Y^#;%6bVX{TwA%YSP_JvM%FkcOzKcblS zVt412pEGMEikm1Y1hAq;7RD_yvz5NMlGay|-n33SQq|l>&lcrpiPxWLD@t!#3UQb? z9}f()eyR50DluuTX6&~sW5&qvy7P{QFW`Ak=bEK!UAiEC-D9!K5%k3$nK1pKt2jAl zs%$5o01KT{CJ2eaUr&?|AkFC#qJW4?Bu31LWbAb0bDK-6`Z2XFd2q zyj0T6iTZ*RFeekLGz88CrxU!zM|A)O!m$*(-A~Rt5~_F^vLXD@89JNbjuF{fdeAhkNaQhG}S5a>q8+fX3t^3yJ}UPWkdHyCP`&~B6c!i@eUFpSU0u=i z{wEr$3jxhn|(&!R_f8Udp`zgO0_IubPdQpGt5%IBuaW3z3 z$A!16^`kdIONw^YG&-Xx$Xc*A|8Q)t57#j$Dx4vT9v5PD3LSzLP&yt~r4Cd)>j+sb zwcA>6=_2AyuRo?(ai5`19}sSmq`W9J%T`BRRd5zJX&s^{BA$;)Uf?4swDceI8>tgABCybK7po2IKX)23FU-PtVOfly#n&mH?0b_E zoS{S-s`+7q!;~s0%g3B+z0Vco>NdxE8|oa$3~xXb^nvO$DA0Jrl1Ga21LF9>{RvlJ zyBv7nLKVMwy0HVyMA{F`^2=Bn`%;>Zi#;T`WJsCTE+gSNHT<9@fsQn4^*_}aC2|ns zd8o_na%s8*@v@-GO_A`tt zbF8$7d5lc?+4Q>i8vz)J0UxIY?G_uUTAwt|NGTY3dWDL9U8-4zGBH3h%kH&`7pd>C zR!Wi2iTxzq?WP&APukzEN%wK}>5zDeSsp=uxX)tis8l<2&YoSch0I=HmlS7M$MfeW zTrignz(gA%oDBW7;R>^WP6WNOBLMArx5r4T9K~$(g|IRavZn(;2ZL*gZGEKg4LX$# zjM2U{a#kPT1d;tg)lL!t!X`$=KvVmC{CzzEUHEMdDDF7?yg?jo&Q<>mU&9TOdu354 zbw?-uZs|6u5t3VKmk7@+Bt!p@FDuoo1C|B=9XX7j_8IrUgg)i7;8G4mhtan25HWnv zAIkVUjIqfj0S0%K@5c*n2O2jrm%_`KJrAVVkbS||!r^2oVUYTDS21F8UNg#hYU<#b zBnR*jr`b#tr4QB<*^1b!A_ibecM*o#!nD^fEKlWj0$gQOU|qQhw5E`SC))gX?iQB;cUP*}b4J)j#Zv zG2*Q={4v|sON5Dx$qM=LZ3-yY>jholuM*Y2Q~7$c zAV{=#O|d0ItlyiO3pVHYk8>uC&GHJAEcf=X^ZEm)Pp_2K?P_Q+HSJ-Y0J<{xNBr&W z=Jc0d>d}8I6VEp9%DDXP_R z*F*3i-x+)=$HVmRMl&;k*n@P@N19Wni+eTn?$5Em$LXjDPkk9LReyQi9pjYoD|Q?O z+Vg7rh+d|y#vo|qi`Da9yje;AGsOSiTw5O&5+23`HR}E)>o2_!g+$Np=QSu7sa||| zvZ47lk12ttQ`9p-uHp4$YSt}9UN~7%#*>Dc-7diA>BP2OVZjd>&pEcruV!AV;mlIA z3XJ0XFndN@!NhllpC1@#iyPd89ck42I226JrT z2~(=gUI-kTti>k-r4|M`(9{yX<3{}0_)0a!JtY)u7`F)^m!g5K#i-~qBn(`S|5SB5 zO8xRS>Hd*v%(5ZU7B1MtSR}$q7P)UKj1Gk{DadjSCJjS!&_V?w!aE9=R9M9Z1+buc z(-ZPJL)>u)Wz7Vzo{2oT{Z2VslnCw#}quRbrXC<6eA&} zPhFgHeSC+yd)o5Ar4_h^3`p>{_B{CFLQo38(| z6~|h0sb9cXc+yvkWwq*7)knPF{$OXf$C+?eyZgjB_Sil`@#MA z%$(UKRFF?ob#ZNPYn`%e^dP9EjZQ&F$q0d;0CA3lb2O``_&cg1wYb>q-AQ=B@5^R* zZIfg%(&8czCEIFj1+Bakxgvq)eg=pZnrSo*5x_9w@MPuC_()7&@v0QOGRyiB(IS?6$ zZf=#=_#Q;#vlmTmB_Ni1=qDkbJrV?EG^}a|eUAD?w8cO7i7<=#M@%K6A)OAlC+s z=u`wgHva?)4~~j2`hH@b<7C!I8QTFWwBnmOc#j*h#40B)FP(rV1+GK%7ES}IHu4=f zz&^TTfFghJldp%Dp-D8%Da`xT>;C}-Xj`skP*!0MbsBYwe4qyK4%f+)OV%mseq&(# zjWrjA3RKpxe0QgTLzXAHUzz1oT2IR161e#)740rR#tE61R^71uJt~LXCxDX%*{tQ; z2Z119`sd-Vj+CZdhC*xg`~pG0FTJw5bEc=Vl9f4tisHvlqGLvo`iuOo&wewf|> zHR3!=nq}N^4mv_|&RAFzh%aP()W}!n*;WNQq6p0ZHik7w3cxD}n9Om32pEuh2UctE z4l;WV;)D-am5U%3n-ldmym=w*4k?@WA5qpfL+X}2!$>rM`)$Yin$yc`I--r?_KZsE z9`;J^;&YOpYQK)+gZB+oXQMcBW0ZA^y*L$RDQ&6APREe9{xk!Q)pv^@SU(m_%Z5d$ z(qV9`J)4CkKtm0-ZNT>!ubc*})>k3o{iQgF2&Lm*X$vaoi>I>g?o^+u`KQ*%v*54A z|CfdL*L+9@QZ>j%IgY1KI^Jex^GR?BF+`W6aIn9fG)9zXr#eFeNfqU8AZ;?D z1ypE4A#Afb($Gz<02?_QXo2~S&7BIW2K`-2@D*Zsi$hq{&hEX&Lvho#dv?b8qaMXS-a_@L{kg$2iqg4R^KLEg$ ze%{+kTL2O0ti)sxp&k0#Pv&dlm#u7!&)Fu^oPC#wu+V>d$ogRbg3!_rZWDGeMCCb9 z&PZU<#S#1U@1t6X%deQ2e1Wg95p|WCWx!Xj^J?OVH%@7a3#*n>kJiHV4eA(!9S2Ja zp&gy&lxDJVpv@Ew{mmJSOfL)ETN7AMDBPA@8@t^GHe=3!H&K{A>lUZ#Z)3taN{hSD z!ZjO;-O~luDX)&+RZSIsWwc}<`=1ju%xQ`SXkBOp046afq|1SZWbQA^L>DTFA@pBy8Pf&&Wdh-{zGBGqEfA*Jfjevx)6 zrTCi1(ntDY36RG@R1VERG*k8;0jg;g?AXr#)(_8>ab0sWZOZhrIiE!h9sXH_xi9v# zcJ0on=MyS^QDlH@NU&VAg%pvQ{T#EB)=Ew+Toy&aPhFcyL*{$pc*2!ndz3(1k#1?q z+IGRS0&G)gJWFsCN?a8EH3>miRt7gXoz<4pr&7O|ZhH}?ULlW=;uc`YvzBUHqJfKe z&^7aWgU#;6f&kNT&HCEwI@M}z8q^H0RAv^U9CU=Mk2njgZFo$tLM3-4c(sHZ*Zd8M zO5<*Pc*wv^&u%+xT9X!!MpYR)PaRvL6+?tR>EbH4xvY9p<~lJ(ZcOP2DvWY5I_#XV_BjaLb2u>hNX>UN)? zGbym6lo;AS#GcRlRsD^_!;7VP`_+0G@0lbmncA@DE8~RC$PMRMckpSCzlFndXT%Uy zCllx_kac2n8dV4h%58INhOQ%=JWJ%-Kxb@wtCx5N0LJU z=`bJY1ccd4aFm-RI#$bHm-Aw_X@nMs?k;QDvRl?+u{eIAB1oNTNu3OcD~I>Ds9?ED z5>k7Bs-YNf(|e6r+COVD7Sv>l0u1>6*_He8+V!Vux`cvo5FFXTvXg`{^0M7zTe29M zZ=k@ymsR%g{U}Xm%|dF_!+BV6qSoVzF%4dAMkfRtS>ZIp@KV+_gvhtS+35Cq5(~ky zc{IRO7+93eFFX}0*h@v-bXJdM^&eqZerTsqNBqi0jV#$g_SlpASqM+&nwVl0awz{ zqgm1_?4WBfMyF*$O~<3dA}SGZC+OpU1n2LEX#I+1`^>p7iv+?O6FcXzJN#t zLq{OLw*M$BSbmDLlpnXezyp)BrogW2kh*W%R>LPJ4k4R14~G<_L8!vuT^Fg56I5*h zp@v7Nf6;tw3Yc*+9chlq6XLXnp+$*iq>TFbOBcmG1nDqOtfn*SyaVna{KlNweH^?c z6^br38I;EU=Bay316g+K4v3-hEp@x`^H4s?0nD!T7?RVN=!;f%U@k_(EJHvvsGAEa z|Gfg;1pk!KDA}$SVJsB`Yf>j;Z)^b)o27;;e#heLUAy*|x{55l+5`A{Z=`-UFpWA1 zw&!??V#6$Hlthd z#Wo9au`i5@`Q{&{_2r-d`=wPyH$I0dun>G^dfUZ<<}@ z6@Lk`7_FRynE{Q*Chr9Ey4**n3kH2Bs9aol@uJ^@uw{(&v^i)Hw#V}YRd{w6n13DQKA=F-Arzj zy+yd@Xbg6~SV@i6?)3n?y`8V|brGJ5!d@smfmlNd=4!iIa{inkfhR9Z^}j}cYsQc zjRvY|cnn{mO4n{ZUf&mS+N(OYrmF_?A5$$^93dp4%QU)}J0O_s)RWtFQwrgPSP5Yb zn&#VZD9b3%h<=iL+SSbTK*}B~)`e2TA+Em?2+M9lrb5nfm#Y|C3r&!OpF8D{if-cN zUeH6{mK3?60~(XY_`zp&W~72vC$$BrJ9sD%QV-N84B{;v#C5Uk?tXc1v-KWFWlzNh zSs#px^q%!>uL z+)$j%kYiM89cyPnHy%rvl|^|WbIJ?F{r*X99gd5r0*{J-u>8%MoR(Rt*VQQrP+z-XaV$?k`c|JowRZ=Smf@MNX*JVMk+QkQe>Zizk5CQrs|2MGw$2bUd zDhFXCbs*8NPUWod3e;$NqGVdnvg5s~F8G1+R%mpGxo{Jzs^WfpOxxn+Ks|yNOJx{e z0Zi#&P>b?S`h=f=bNal$CtkY^JcgQgeoX*F2FVj^)h>h~%V;s^OB3^Rx9j`qz$LW0U+~1Y`42@VnGNjAs1mrS zw~;tmZC^Bb9dao+u^_E(>~H*;%CIsFvHm3Sjk6E{-+mWdq>kK{i^82KYJ6dcOmcDvkDM z)rckmnBd>bmU`KiE4U+*m)4=|?s81a(MoqoQlkW>z@Kuky5${>)5~SG=>d)(MvOD=VQqXlnq+$!GVB2V^ z)^Py5KUx!NxE(738#o@cO!(pn)1W-aF|>@8sjY7dA{{YhIT>Z-`FlP(%{$O)B-|>| znGnng1^e1${19Dr$r-~PCrkCOeRlDbmdus0*%pHIOC#?!G)VHVUr$iUg-sf;$B-LZ z966P~)0Q=hv1NlUzx}n~g`yn@yPG3MldDhY0t8n3=M{d&_mV>@DD1!;QYU0b<)U&b zr9Su6qD8erUJp-NKu8(BNnnHOx6w>_cECZm))yo2p3iT9QV)%7vt+(@8j9aPgx-&i zO^r86INt#huvq$hwN7>CbQd2wZyPfWpe7U1_-Qt9pHzDPc|2Vfpe8@#}oucLEsDH3{2??;s7@~rY$ z)UQ@RE`(Wxmx}m zDIS}}r>+NaPyN^vMy#hSaZM>))5@k*x5dm!=`QgWvjE7avf6DVP+$UODg0;30SiS06J`8J0X9=tl-y-w&jS6lOB&Cha1N({x1Bi zI0T0tht@*>EZ+y_pQI8!^tra;T(C-I2g(ZGvp~uqZHd%3wJ^$dxtNbV^&+E_CkfLp z{naW1#oJi5xrfq_L0N%NbT>FZFF+bxw>xYOAy!rYeH&Q z?risu5=~A5wCZsouZm7s<2WObI9TA#|yo zYQ@8?vX*PVqFaCYo5G^3^KXQjgLJ(_@~%8`uZ7oNBjOKys0y}icW>3nFD8Y#Mwl7K zj>%IKRx5U01$G2&un?^v-ib2-XfsA+&5?j9O3SGfzW0bTuB=9_qxmzR3+Hl*w(#JF zRy5*4BJbW`gc5}O`eoRk{1Jw5zs_;(U%BeER3WBD>H`k}LJelJd@ zU3vEl@1WIAOS}j|DCy|XK4DF>BRU>g{!2^7B8>_KKLuDx?q^>IG<3=w{_KOO-8#Xx z>U*_B-2Y+)NQ6Q1eqalL{0q7!8|ok@R!reRR_%ML-9h{OPMfUi=Xd^A6i-}*cpOGV zb}KN`E+@-yiM_0DTluZs(TXA^lH(16(kM03F>+H85uYGpJC6_h_w=biqHT=}>MbMBERQ{#dg(HJm zu#DE7rLwhnx6*zjdba26=!_g&Vywwm%y&(SPLt*2R!t~*W4;595%ckZXtFdy?%qe0 zS|Ck77(hKF;~vxH=|bId@p$>#1LYQZzY;9&(GkmlU1(D_UnUlHgLiTgf(@IAl@U`< z-}iTI+@{szdvTZyC*ubZ*mjk9R`~k9&~;I2<_VOvNZE`7i-;i6a)m^%pY2$Ru4=|= zv*(KiY-heEShJVW(L#ij)c3-Xo!!um{x$xpa1;$G%^qE9``v1#1o5DU#{`#iNq)o=50|5VRs9Y_d1zL3?c zqdPdqtsCDIN-7jcofoTY?joUyGqyB+B};^&kpT#J!ri#rH@bf3z1kO8&BeY#Rl3vt zmeke?lA=HFeh%A1L27BF3cVA-%m}|FK1H%FSFNvQBPnC z^cA;K=d)D$1PqKMTnnFP9J@tjuRVE@U0A;Lf!Bauapm5R4^9yX&TbL?WW$_7qEKBMas04EVG5pvGc$uj+v?R^o zAy>Aw>kbZ6@QUJ;Ju&7V{;-G(C;%z@<o=UuO2gX*{rz3+LRr%=!?R`)<&*armM1ozxZA6_M25g^xxyMy0!on zI-3f3jtFBnA9=%o7$&IoXi30<7OJ}*&kn2*fAyWk{@8+}2h!yF#L05w0l0eE0LhzG z2gkTRZ^&+v9aEhEP^w}nB(Ax|T?Xor%_BNYy;*s^5_W{CAg*h4nIF;xF$PY zADBl3C+Oujc@pQ?#WG+E_0d6pUomYKmbx4^ zUwc{P2Q&%Wy4rF$3DI-@pjI$j;pe@a(KvkEV=3G>xg?zmmCO%f!_c<=3$TYkGExa$|i>K{u+JZU1?mMec*Qb$lavdwP)a0$}ZF44P2EyVy zicwO+UgF@!BZjkdXqtw}2|VOleCE6$dP@Iq0&;%rV9=ZhDW$&`V+P4C0l;+&_%Ufr z(ja;l@DtC^w#}U^v)fJm(|KtM`MXvqvO(!>!7e!sA24ybd%9%8pnr)AKy9OG{Oov` zG)v}!0e|~Hq~20|>ZE7=Y;O8)0-iCydb8*tN-#we&}=UEaYOub$wltP`7?lb4Rneu z4M*R`gffDD{~T1ib#WMCSbA}mqv4bc&TOjRm%p#t@nvgF+tQj?|*Futd@orO#t(4l$iEbK^+M->dHTQrl{Xi?;$XNm%zx zGD=U69KXb|#~<*VEZh=|5C^etdKh}L_sXrM_&59KfH~(kE#WiKk zc=4VG!XdQ6#MV?+j;bIMrxiFqL7A74LR_w#)DbtOND?R0tj$awH;Pp?X3 zI?oa3fb5NTt@5JS*ZT+W>NApAU8y)LJ3X`?Sa#%dbZ9*-*wK#CMLBMp)5ocV3p(op zJp5+~pdt#%rq)>^q1|@dzMokHi{o22RhIbKz)xLiNl!w%kC9LmP zs{6a5VSm=-%QU}`6w)cX{VCJ~E6u30DFv`x>FxRjrF1tReU7D&-{y;Ap8(GW-~NPI zQK4I+SSQlFWLK@maUqmw@`IB>4sP6X=xt{%+D1MReLqwEKyqtepOi|R-#@PrE0(+s zN|*Sbz*bPW7)1X4S1c85{unRXHrTixhgpR_tV-PG2z%>tTeQ1Yq9V!|Fj^nA-0kk} zD(+riK<9GKeIaeD6N_y9CmrGMWMD5@(NRCi>|CP}Rklc8{XzlkVAM2W3fK4V7m8esKrF$=M*Hzy^g9E7#0PNMm zfq&%d#Q)0n58NBX2dyCM4-Ef+E>i;lOtlIbd*;sGn$7<}Y8*=no=g?Zwsr?QOj!6R zFjYR)T9P}%d`a@N##FFhW3z8+YqTR>cOL!gXa!B!-`W3q0vNz!B;gwDR5YovzqlA0 zj55+R2Mg(_tamn6(jf+FuE|9xQjy4>SwVngXYyXGyno9r<$7{&zep$QS>l2Xlw?N- zgV!>i{R)~cOm@asm(1__K!59i<6wigZ0{mu$oP%_bD>=&j5A@ZR|0tsGj4$4Fz*Ys zXOa(FGvZ6An{+FcKKOs*$_TyB$BLkOEXG_iXOLknZx7hXk8WD;^UHZuM!n%=`W{Wd&s2I zow`r8650?QS5Mbbp67d$jhg4wqY9Hf1}|tyUMeX_%uE`-TtR&BQ=~pS+WB;u^(S0M zN~Bu|?JRvAFTTP(<$;fD2UsoY(P(PBfh@X~{0HP_l09xTya{u6;MRa#a7tG~WJNm< z8&*gJwO{7>aCc@yh?GG7i@wG(OH}U4S^i)h z-)AB~>)U9a4ghL0wgc)-`#lrSi(dXMq$(a3Yu=t{aCH-T&6fdGWVqrVfr6#D6m_ym~{okKNp*_#>FV0?{ zE~ae6BA^R!!&|KF#FfeSMV+FM_nYsI-^0!y1CI~(7RmbT0NeUJM_CVLR~WT(OAzo{ zEkee@K6){T6j^j_b5Ztsd;t`X-m7RH)nA(ZBk9x0uM$-A*n*%;*OS*5Q@Q{)H__A> z$dAo?3ksT-$3A_%`7MBhHN?mk(HH}gtsX;f*il-ECxq;*p2S5CA1K*9{Yqv85+-US zk|r_yF<0;0*@}f0$BruRjo5Fhkzht;%}UMBp_tV;T)(x_)Jpfxut5&()awXu{$xw^ zR~XpKiub46L!net^`JL1i(ZwcFpI7KdQ(-lc(0!`*iBLW% zbjuxKbf{3BK0@-L8=g-J-3h^^kD(i@o9fWS@iqk@6o6^ur1=D_yc_eim|KuXZR7Ir zGP&m;o;ar8y*xW!OyV1Z_=(c=U< z^Y4;Xx%$qMQ+oQ;Vf)u}yx-Ii7N6>7BXhhPXMV$FgExJ?AfL^}?6{~?CMedvSz;#^ zpHWK54nhc>j3{d^^?DS*Z$Anjf8WrU(>Kc&v<+*1VT5YG=Xexhw@UIs-;#@RgiIO! zTK$dbN}#)7BwzVyvtwuoft=WD#yhiC&MYkonkitRLVIy&__f4-bI)Mj2o6E4TVdXQ zZ7WILZy;{+-SqbI3E_CfFbp~!fLv?GE9@Dr8C&Csn@GZ5tOYi<_v%NGncDYt-Gx5Y zQ{FuiSepG-cHTo>>e|Bwg08EZc=2f!6Z&JP0KfXe$9o{aJZ#2JduB`Fdr^WbGEw5E z2@j7P@EW3PLYeGrtx8uswRx37PwBfTLAXMYdcI>^aRJJ`Pr3mV!X;R?oOsMul%_Fr z#UtIPBwD$s5p*Z6yGp@{T9MSFJtISp5bx7c+^TV$E7secp6or!@tz$(S(E@DfJS?} z;4mN#CGm_?_JM7vZ%f(g;r`gy|3naC0t&27-0gnO@H$Ko$Q&+~COLQ*ZcDC^Q{JCr zN^whQgKyBYeCKKfh2#|LOLp%rf+=}+0N8?o3lmm+U#4<0RR z9DW@e(~(HykBW$Br+;OSKd4Kuqz-Y6?!xiy6a7V;gvCQQ2A(TG!6m5_|58RwaTkfe z`wKce5egR1o!nRNObt>G1UYp309J={m?Hkt8a2QB@Ws3>S6=}{m`Wy;V4j4c2^9b* z(o>7U)-9&&C$tWEWWTM{UuI&T!0=-E#Mz`Gw5C1)ciWKs`m-X{8;Am_{jNE46+GppDQNHM8-VWGt zMZvQ^HOFfi@p<`J4xPiKPpSXd1)u?7XfRNCcTl6;7np3sUrr=@%=GsmFqkue=)%1!Yh5m|rkeBK`c5W_!5FI=_g3Erts(`MD#(a%W4V3ZfL;V` z+w4wd(`4asKUqCuq~;NmL$AvN8S@6FIX$!7?>knCy3RD^x>IQjX>&Ass!|8*q(v+t z<+pOfUVI3`wM3t7{KKpJ!OX#~E?T-_GaC@71RVT*xX7+&_4JNz?ufB&nl=XmPEf|K zgX%e7WM$(9kU4u)R+0e8%v7qinvVBE)$&<%%mx1HhU-KP(W6M(H&ym*un_nHhj`MP z&O1Zrj|Ns_Qt~1-aA9;mfd2U9=+70fre{{<%u=f>R>p$XWo*Mj&R){FdTSjmu^RKV7_;qHsJ`)JAe`ZpF#w1oif825$(>RQZ~0Ka}bXZ}un zdi%i$xxXE=XEs@pk`fol4CZEgR?6D|5>m`z_0i|WZTi20o=Tl_)cik?WeU?-C8M^I z`4)A3EX&&ZZ%B66V(NY;!uQi^$r7&XCI6NIifolgof6|Ygrf_3r4cBC;83lnz2^k5 zJ;CZQwZHe+q^KWmiN0L*mZ>-;`nM=jbX!shQRT=ANh1kP?$EMd2Y!x#fobTt&{7`h z+uI2gm2WZVYViFvkM`rxqqGf&c4D#rhvH&mh|B(u00U-MH%2b>L0InPm8O=2vqnG4 z+ZV$C{6@2&5?vQ*9!H|M{d({U`G5#C!V|JefJMVeoz5fRL|4lOr~ir{G{3D= zpln%^R0uW23_W(6JN-l3f)hB(XY${I$`XsPD-YIa`@P(T!3{r3S z=0kuHg?(i>{xWBi?~@sO=VLvn(70O+8+}Wsa-uiQ1I0wcRfz#RSgx}(>~P00^Khj1 zeFibmT%t972SNf50c+_7;e7dUw>1{@Gd#L4F5cp{M;iu?pWFzTB-F)V{7lS-{x4qKw6@<&7XA1nv7R=r z687pO%3a9?DNv9lkyPjM@r1E8!Z7YImv;<4>VrFF*x62Ifjbq?cV3=bM%h7Fh!v-v zi&vih(l_RcE~Wq#yM;jds>Eo^h(ka(PB>WA;k|jg(v#(Co70BB`6Mh@N$KpAE1avD zI+SI2?&n8Jd)tP^)hByA-sZE`v}9RKGriq4e(%do-?Msg5PE>kpOP4_2NzTF@V`D^ zMSMH2D?3OgXX+|Nm5W+c_K0@~I(rAzdTmO8etgv=#+X7EN~NRR ziBH`QJra6Md(a4&Mzn!ypGb+p$0{q5{2JBTTeDYjOOP-GjjhCAS0~tCH zfy61{%y-0i)kml58ap$Mtn0ss?B-G%-2lAtQvU+vFuVb4*m2p)GSTnDEc@`LYz^V9 z%bH`BG}bQK35S+fp`3vFxMi7;Go_RO0dHX{>GusX{gpm^bwbTls4l{X_#BbZD9&Oo z>hPX|?hywaNC(^(=9|&HG+d+xxk)zE56>3gR zK;hIIaCn5S+j(ifn({iXTIt_xH3hkbzOe<-Jp-Asq^k0OSNI@T3}^f+^-QdvQ$>%% z8wu%;n#Yy(#^Od+)vxm{t|wZP?Jc)sklTv`w+Z@OhW?;{sjYVtikd$dT7{KkH3ABo zogHwFmen2Ogz)znO)L058h(n6%Ct{r3Y#il$_EsNE*fk&482o<$GEKn2$SP$X6Mn4 zGCu%0_bi0NH=%?6aZBbWJf9Pn#tMA)CHUA9r5^M?ms~(pc3={80{8(Ng9TD;@f^z` zHCxRIBB;kz-*tr`DPE^Obwr?}hB%Mj*#zE-Wqf&HJ0SgjiUUqe*r_@hwY$tm!nL0} zu(xUx3U$;y2lLm+YGIp%gl3d9>ZprxPAudbuys;)JVhw$dJ_+hVC^X;6Z166252(6 zkydc8!(*a$bxY~UosWs&uML#Xpgfhy;d`v*{Dch9wpq0k=T7-t$+@Uy8vFVU`-heI zing&qPxPf~A~P+sb223m8i&g}0~mI_S72({S>9R9r(!Ul=2$|%#@58YF_>SNcqw!T zWrQPxA`>x!$P`kwu0}e2cUH}VVrqJjl*r63GDR3PeK9gNjwBsIj}MjhE>9}h1zpSG zl&@o6KtAsF`XsI%oT{r~_iH}N9s4|{5SzS)W>(6d-JJ}`b4F*Z-y2kpWKAn!Ba`ts z!(hVeH&DAS6xTD-@!Wi28v`h+k=>i{05a7$0vwX>*;^#7DN7XPvrQQb^;5l!?eGM0 z-2i7maG|e0y5M1G)l7r0S_nDgp5x&m(|Uv(gDIxyR^?i5Q{tvX$zemDJ8mKUJ};&v z45p1kpC0hxLJV;AfV1_6O$efT{9{n|pFJ|M|(P_jd}fcMFD z5q>Q9e_xL5rtf;Fhxe-5YB~mBP5*bUropE7>X@c(sqkgL!nb^LW>y|FZ`hqKbL~fluj%bz^^qQVk;i?|iWoaQ zmQlO*5(Uz*Wrw>5vHuKRH~Fu^gbw`4UkGt)6T zSw?Uiwpg>6!^!f`h}G!-h54{bFh|bJnWI=?gn?htG$A$0)n$^|s?t4ZixVYmN#b0Y zz!b$W6cojgJ8eKJW!`1SPUkTXas?PaTiZhn8JKT+@vR=gOh0K4_dSvR3mZupo_jNG zB%U^wMe6P1XWw^tKud=hDJEsLe6p04(URQlq5u6%!Pe}Lw%XcD2);-nmStA}-4zIgO|I-HS=nJo%1kV<^u&JMTP&13TqO<-1 zehXTVDCM5C@_zbIN`H0md2Z5!PTHQ;F7_^>|7D>145CHm9K$wEz{sgR5y>dH%+sMp+ey}V@_EjMHux6QN zJZ%0|_2cC(MbH+sFRWLd(KAj}v=6Xje4v!$AqAh1l;H()yBh&naP@zC;;eAPE_XGL zGR^)eDmE0NNwFxGqv=B+O`6$jQ`s0f0+z^9wjK*=Cc?2w4^w)V`u8I* zm()u}{;4<>#W3~5Du0hmnH7cyBb-!!(+QG0i+BEvepvGvspadO%u%0PvH0SAlZE$% ziw;glm~@q_Z~S7!i!W)h+~q%OS(hlag+^K!JTD{CAzju)ON~TFktUXcPBSx^B3oG= zPbmhi?U7HRrwF3w(HKmWjiOI_+M&yWX&|Y|iQ*$|JIHLXE|$#;lCNxyQOL8YVXJjn z2zTBWiO!|5otA^5#qZeh?ISzny7PyTwSbeW?a+W-_h;x!5stWzXCw9~iwQ4iCBc<* z7oC$mR&Rt0E}H>!Y&tC$e4(u`0A#>AhLgi4*!@2~^swn(Y-r(g%Up}!g0vy_qekr2 zGD+J+3nh{$D3ARdVUbYkkJf8YL94)SyL|i4%Zs*`7EVre|0CDb|JwU%X+-~V7~vp# zy)6eMm0|hnwx@F&qOln{F55|Uqn4b*YX@_JTDn9n6py;XL$((US(hZeF^snKE{eJs z!85Av^M|LEU(MLlS3?ebHR71nqq$IBvC$elS^`mihQR$Lyk0Ynp4q8RwB{W%jWDkx zNHDdPbA|e$nCN8C#HZ_^j@*wRXwj=M(mFrrp{+oI4^$Q;`ukAJ=kE0+>J+l6j>5mnlkYSYfIv$;u; zh2LN!S7!9`CdZgM$bKZwK?0ptKg{MukpuN#@OHwORFD)-3iT5~MY5r0ZGvB^HjKp| zFG?O9*^iSabnOTgNDSEryD%txB@8$22h%bCYL4cU5(LUphm5I5X74=FXRhsVj64VI zgZ{&+-IzqNYS*Vrm@4pFWeKgOZZdrh>z^WNDjO~B2h&zo-(i>VJ?;p(%MZ3V0yX6; z-q1E%>tpnT#sYup*N=U zPg@1hhQYANaWS4!f@S8nR+ly^n?`t`!!!IRb2r9%Mf4-nKz0aqj_IKBEt8}uQntzO zZpP8uUwFN^e3r4$N|N`+lA571j;*w}P-{nEx5a#h!j@$&+;AoXGuA5>jje#AKe+On z*UT#z5}$)^LTzWP*@(uAB9lOu0*c%lXv6-*x8`RetZwx}3hQ)W(MSV#>!A~ zY=vOGm~aidaDFv+g*Ap#OXS#)>lTNH#L=i=1yr<(4={cATsTmR4#xsBwBYU-g%)un ze_pj;6WjIk?jpNfB#$^}E!R9D0DufBtbXO1teRGlW#*z}=sFUvs!-w-RsCO!BuAGw zeHbS6^)>NQujUYN1oCaLp27X2Xl#T%I`T9Xbtn&^yOYzkTpT^ra=NGbev_X0qSS$ zf^4xPceAlxU`9l%`|FMivT9BkxM4VIg&;V73Wdh1@at7amFzsS_5T049tu=Ti31bgC6ZdH``kfQi1_d(t8VcoT5sHx`lV|)f4 zgJ4+-EqW|gf{wmio*Vx)`Bgl^eI|d$^AM|w`;Swx%A~fX*G{pHhDyHZ#vk|ja`14d zS6Te5ok1wq+oXjo)6FP%avz2C@CH*%#rVQ}@IWy@MWe=Vm5et=QgnFl(_0__HHQ-> z(pnhE=3aT+)wT{hd`4~cH79=A_X?P+UhF#1qIO=?Lvq;xE_85Uxpb|cTa|B%+#|nT zWAzNqFNjOzj+L;jss+>sZ9n}(7adruWkLX-w=R5?Qz@r`A(+9#m$eAtVFu&0K>7{bN&gZ6 zyp&R4d8>Bb)Rs@CtB`y31sztZ~j3W#I^(|%N2;-lf`Zj6VG}34e zc40>7CY#v|z`EoEDWO?Lqp2i`+1uziT^|MZhIFb2BSo$TxK^vrK1ao+8T$8LMMOjZ z_~%T+OgQ~Z29Ex=U7?{g)tkrv#rnDU7YSttJ*XhUTfFrIe59)#oOFq=cCb^ED5NSfj+l$BS{8^1^E~8{X(x ze7pVoRA-+zHl7LyT(1zQQ1w!D&3H+kM15e)Euo1YTmE_SFt)kc*&CqVI+PDFAoK2~ zW|2X0SzzMI=SN)7 z2ljy?4)U)Ih3(gj3P}(^_tUuc9atgtp7@2a?celVy3G*6$+F0NjC5pPPS?B& zrDdSOzBmT$^Qb&;Lj2dIlh(BjY#f-l9ndVIu4Isc+)6=T3-M*TQ+Vn`>d;;_#ce$I zvS+=q){9$5Dpd5ChFn|dS$b&j2l-@h+jK8ME~yD zyJB6HN-O?ntAe`3c6t{Voibyo9HZFk2>UsDVXKmuwDgd>;i17J8Ih+;( zYlN~|s_nQO=jI~qUSpHS4y`kC5!WU62V28@mm>f)Kjs^P`r*Q7PDWN(S|bAN$!zC~xkb3q#^ zA9o{JFR?Ri2PL`O0tuQUTC!FE-XddCL2GI$H5SiYBK9ZSSE|>=Pz7JqUg9?hqRN7J*b)BJUk7t;6{GZW6R!qElK?=2lDRw+?HXg>U`NY5g z5aZwdNa+uq{H(=L)Po0XSq-*b)+j%q~vf zA+i7hK>fdgVi$*>Hu>T)QPP!gHvSDBwzeX{5p_C4oolIc>8I=AxLx?{{ou2v(k`~C zh&HH4k;R~kI8mrhbrzgVidubR0$WDCVg6j4_rJhcq=f`A*W8s|2b!HedH&Cb)f9jE}o<07h7=rfSDD}g$T2YR9Yc;ZE5YfiS@xnj- z5>qzJvxkn1HK+UFl9DdZxrnA0>L80^D!IOYQ|=f${i-DY9RRw_zyq=M9XlA$&&R<2 z0a3@>`mwFdYSxyr4Bm(#=G2H~r23*DA04>1SWK>C=at=GN!DyA&Nhw5xv3|7Gltu& zkN&o>>;eB%BEe8IAojz^mkJ9Fdr#e$Rbu}G{AgePAs_g32MpEuk~y<>6v*Az&0=dc zm@>o%?71hqPx2duSH^d)ywJha&bNsbRcRC4VUchg*>$?T?v~Y?h(96HDxbs^or#?1_K=Kib+{{V zB`hy0w?v0;6eu@68gQUoMYnp_t^$J)@-99U083Gv0MA2Z+PmUz0>Z$rC{VP6{+sB96pIV-7;#${cl%eWT@U- zu0%o=4C>+GWWs>5Nx$cT!+foYKv?S#42Wf2lDU%AFUHtwxw8?cLpTTauF`HFe@^L% zfNdE|KNG~yrD-``tEMN0-ZmYhSR_GXS-JTqsV-(*PkKx$>wW(2zGpw_7iQIM00_T| zp5eD}?figuLU3B~L~V{;JZ_6{jT=5BE{7Z%B~N+>jRHGrc3_8+m3#)r=TAPa1B+&e zpsC7kxuseu&Tm+krqcqxpL#pf?sqnN$n>?IN?nUIOr~Ro5D?-LZ8zWrQgKH{5MCUe zIh&sxwSSMb_c=F@n7PKMTCL(Wng1FuQQG15J#bin?TM2Izk6_9u%1LF{I45xdHsr_ ze#fgP|0|zb1`i|J9_&zw;%2c*G94j&l#*y#EU#bYM~apLr#6HOu1IjMX$>|74NW5Zhna9HTk3Vk1e>kwQJhCgP92L`vs-11#LMJQM-FoGKgGEGzoYq}#Nbz|!Fhj1>O)bGbK zGm@{ryv4>KTP`w>^G6G1$;`kM9J+QVhy6A6DKVoGwvG5t(*4tMk1;mK9__3+KpRAN z={X$NI1AN8+uWDbxa=0-`ntJn7n~eQ&S8FlCje*i>X%;rG0;xsr1(c zCP2AJV4QMUEt&q1ujMv$)n6_xb^H0Qhdcy8_m271yV*>c==$}95yKInuYOE>3E@_*Vk`n(I$@W3kVhxk?uxU(Q6t-Q`ZdJA1@H|6sdQxG zG@flL@U6hDcrkVLjOst_rT9Hd$_%X9hAj~~7brDRY+`I? zM~&9+7aY`wxf)}8s{Yf`hLY#kx{ibo#$)mz_vvShSsj-!%x(ixvQE+nB(+uoR^S46 zNF;hROLUshU#ahfK9A1J>$kQ&QVzF|_{v%ZJw5yg|CIx6hYb}l|l# zF>>nHWZrvZ{b6O(?ij$dK3twuvger20P+^_fyd?$-OPNK*y|GAJ_@gjKrSefabx<; z_OAasp=H{t#H>i~Q>U3&@%L*x9+bgb<$aiu$=8L6PV1Ob>-}c=J2(2MDw9}^P3$6{ zI&zTnH#=RI!xO#xh|HW8iqkSPC*#vT_g7wqMW5EMUe}fbE36NoB0Tjo9&E;H7{;<0 z2yvVuGgWmZB$!`Qwo%R5VVGWtH*MRjYfh(@NlW5v$jFwehJe# zon~wm^|{mclT$s1MsmDHzkOW<=nGeW9Xo;!ShIoXjM+rRM->dz-N*-~$UfP(Ljri~ z`3~p=o*|GlP2mq(D`PtSW*Cgj*=EQie%EhQnW*;f+?gC_&N6$VdDTUcPKkV=u`cyq zX+r>$DY8z}mVH!~V}^)SY(BdXBLlX5=>|N)7i36(^WpX+7E&wE|7r;yn{{`=kOQts zzfcFP0oc4rdw^e6g7sS-?NwYTRU$Ml2d=<|Wb41m)CGm$g#!P}##%Rgo$wBn1jmm( zr@Zp}&@2gk&_?bz&L202Ab$bfJtPve5#C8p7og*2_> z;S-R7)uB|~jNIg5-pfp0DS_y{mgfym)|AH9;KAGJq8h!=u{_(ADC+yn)T)WVgnxqY z6}Qa}_Woa}Hqe#*`iq=Afo0rkYV=Pn*lXBXvL!cZD3;N(0?G29vNAuj$AcX6O^CYq zd1qti^)B61UTz9@Xrl~Te@z+qUIDc1fY7V^4w9O(1tD>fNLGT&%^#$~H)p|8?c zlKdc=p$0?gVwk`^85q*b=}{h>u>~Yt@3o-Yh&sMj!1l;s_V$nf5QMGm8@BVrN$wxW z;j~1zl@6UTjCeyL%8qSa_18pFG~cNgso_;fH6txO%uw;*ePSKdyDqGX{O`$K7Y91X z6s(^fZuFuM727{B(L1#@fh2ZNCBz9e2g+GWL?yJM!PwL)9zv7P26_Q@SIyyxV2v3` zPE$_V)CQ2Iw_};SrYY}0!od03ocNm3Cb4#jyg2RyxD4dh{I09}H9{I$bO01mtjOn1 z#qg2Q;uL*c^+oeXc}pyVT?T)V_+TU9rJbvzHlCd->uoOwB4tOb-Cd`Ub!<{2#`Zbw+;rpVX?_VP*4j&Z@S6n}@&SBU?x8PuFle+Nh$Kj0ER z*A&{d@O}p2+2_X4+mr8CIC6zR`&|q|GuEXtx|rQSg{{N>*RT zrvtBYWy~YYioU%}sX{78e6PDHR>>vfOf`FbKKRUbOKvv8C=fCHe#DF)w`GgMOm>tF zGOs)w&ci}rnxmP#ZNIsnh$&6>Q%@BIv?i|d6}%DC8*jT#m~Bv+PSURwz#5n}7qlss zpsK$2x?8+)>IV_zk}Tt@G0uw;S9Bj|;I(Ir^;BH7t0L(ukv+oz^n8-)5VvElWr!9N zTLQOC63L$714fxm^R(2=$#MuKU*_k@)FJZ?_d9x)wMjaB_&VeO{1;;&QM%;DTOYvyU> zPgL_q(AfC>BdZa7akJ#LYO^k)O_*tx9ObiyTKTJ=ajAG$*2KcPLYc^3PQXB!FmG&N zZQL{3L)J?PM3M@v%5iR!rze&=BaSM@j!W^MO9-wgs*5xH+D2vv)Ca(Op4G_Drer9U z(OSlD5%#R#w8q)Mt@Ly{ zBht+_`L&YJShW1tsf$F@=ux#`I#*on*d5eO_D0C%wbe;*zvhF&>m?d3r)pH?)+HTu zr&QU0y3r>8I>*ha-`2R<2EQa!HFTZZPQ_onaXCCOlrvWv4j2I0IwUD(|GI|X!?>7^ z#i{#n)vcMrntSUy2cD-QV(?TZ9U1+|;%CRz2BZrG9IlwIh*s~dkN*m6fw#gU#9Ic9 zRYYY6b7rHex{)|ocz0I8*pvSl()=-3*<6n?0ik(*Z>=tS~&T0K*?a&yNslVNA z+AbLn&^j(^0aic+nIqjYeYwUM2^mQvIX`fnQsZ1+R<+}_y^Hu-8MS4M^YXEy;dSBx zXj)fj4>T#1BD~n=K;Ldu%(q`u4Il`=C%NU26-@(lERGa#f<=@E`)0))8b>wg>b;JY zy?1Q5e1Pl{81?}$@a((0n{2E??H5Lz@-@;)mJ7!>i@nDy0p8g?=(7)H0rcPR!23od zkv4pMkawfl15TUs{tobDV)yx%l$+(ue6w1Oj)b*0C5dll>9#jA*;=ekumx}|x|@In zB%k$j`Hmg?NshC&dAK(`H_+(Cu2r#Pv@&)TRTsS~8wn@`2DJuZ!{ zqZ58Sw{RM9PK{ZYoPh)am@zS+B*@Ne)*c~=d$sURQ;RKfmR`6t=05LJi1JwJO1+X1 zu7NYupds@-mc=TA(&a6z`FJ+)5v4?Kb>firE41(FR`Lo`ie;M`R!-N^BFqF1Z>Mey zSkj3g8(^}*I)r}Q-7~PXzmDT2(`O%jY{7MrU2?4{ixXJk|Hd8J4sCRn_(jTK z#Pz*Vqut!H6ce?Vf9`@+pI4q{LIbSHKp>NJl+kCYTMv&LybHM>N6K=3vT5Fu+@{Oa z8iu-W18*FcuG+_Dz_fGspUpvB7tfmkCt))9hOk7(9Es!b(*bFpv{mFT9uV{kPH?T+ zkf^>V90t!$wjw2+G#iWWd-Q)9-fZJTFeh{jSk~J%q{OJtOmR_4z(oIo@c(`0Vj)8$ z-0YUY3GvSzG*0yxVnxRrS^K+t8RZh2!g>=~l;QdFoh!1@~DmkL+zDy3{j}1fL zYR~k1q!eiBzH>P3ZFf4`=UDwYHsm~jl_(p(N9b-gf%+6hW+)n3>8UJdWmP(LM1cCbgp!~2dyPP zVF#bt8#P@YLb?3d`t$bcGw(vpgKGkpiSgr0k1BZc@bB1;s5EjtWsD%*W9B(C`e2!{ zE4Wkdp%P2PT3m|rUSzkcvWo1=S9>53^lI{Emc&E6p=*tWx$ci|#1 zAta{b<}WXQx@9B$irMAzB#RAGJ44aAC_HN+a*&P(_#{YmieB0YzC0k{-0bv!cPe?1 zc#$bI(0YYxJDAU5TJi0jXWcMe#l9mCj{44E8>pT9^gn#ABJ?Gr2v!RpR4(x>wUtf% z)|@G&`+t5dHb~vQZvm8ebtei{^-AoO3^xA!-6GqezugT1hCVndF@3p5H0bM~9~1Q1 z)*cZcm^?0F2TZB_r8XHvG={s?@8ip)zVa?+jxfu;&>6cRXjJsFRj4u~^K?FJ7|(*; z%ysYGgPK`z;oVVfqa1wRWoRY35q;Viz*t9}ppCw5mi+jj%*jn1IIOLai0@p*y62l= zm^)p?(48+Ql*O^^g}a$t=`r68x%E;s{Z4lcez65$s?U}o)g`f`MoliX5p1}fQ9x)k zhZ+zxt&=Rj(?qHgBDX%w+iS>rgn{#oRIsv&`gQhw!#FJ*{%o(9w#JOpMbSK3Rj-MVA~ACSbr^J0H5z5^f; zYa%~-KsHKHms3w!qW}8cMcPc(q`|KE*DfP>%CAqBqlIE}G(4bG2lM)j*yl&g`ERy% z^y^C?8_~>n{N%tBg_#y3bB3m6Z+ZwEzQqU(UyeffoEN)vPXA(RN#^s>GYKmGFG6bh zg4-aP*Kc$1u4Av-l%1g^CDEC+Y# z#vG!zv7+{#=2hPh$fWRJn|+~iO4k%~_Hs_Q{IPOq@gUNM@#nz@YJrfi)fy_u?2DqKsM7s@~{PJy?)VAjKqnZv1jTwUE?nNTg9AW|hX& z-|YZ4j&X;dVz0b=*LdHTM|k4U18J*Bw7taEIDT5 zn0tT+1jJt@8NFIjENh!FP}PqXU6~7vt)3x!X^D-)3xvyrk6D;k%Q;dvq}}jS(6ho% zkTTL8jUsX7Mf0H+ftw>NKMNA2AcpGCnrpwH`$8>!)4{JJ{jyT|M==5Zu0O>c-LJxNqsqT6kzWs3&WoyGOwDNJ7={qNdT;6A>dWL zssIBzGN|qFO{#IA)QQLkIqlh1$%Qw7_Z-LrVaH}N*ff-Gs=QFZ zZ`JbyQLawP6Q^{+2f-uOtL+ zWV2*M-j?3mNos}?{a-!w*;5EN>d;{Q0?M%>F#R8{qm`SlEr1QFf29~`r9L)}EO8%k z8m(_K0jz;o6n6bcy+JLqS6K?-6jCEj%-kB^#I#d?qisg0Zl|~ef>w-Xzg~fM|M!$n zqg98j6}GIJsQh79_$mo}#R+sgT`?T`7Kd!P6p(+gDsnxgzXvW_w#y4YAJSZ4C+DY+|Guh;Dm9H=z0W}9roh}%9a;pN-sCatPDJT)T*Ju2+!#5uBe`Jq00Cmoz1_bY z{Iri!L)jOytbNI7%LLr!2G}nRm*dCdYIBUI74>NFaHn`uEG`ni#My%Bbv3UTy$2Q* z-S@cjFzFAbUe9I4S7v2w@5L(3$mZ5fPa0Vq!N-UMqt-L8)3_7Wr0eAFrXEJ2yatMh?#3=CQ|!@ggle{7(kr7boCz z8AA!Q#QImbeOpoU!LWyCrTbhhq*k;F*--O2FyT&2x&17y3$Yyg0#SwA@7te9FMG|M zXoi*^r+w`iW3_tV31NL1o}F(hVv@H=#anNno(Q`1j`9`qoH0p48d|dW*z+ zd^RWIbIVH^>ohBZe5;0rRg=HjNr&v74#P4#w56-~GG5$Fnz(tbM01$1n~h{=42@*b z9X-S6%ku7yAh1>R5yI&-nEGn-&|$6K_xL^lYGN-;siFU8%@~V-is$@y?q4VDl+hkNuS*vGb4M0buKZW;T_N?ikFW5T(0D)N5_!TRB zbn%8md&sH^1zTWzs}E$$CO%ffxJe{z?I}|>sMxL9f4{V@HFD46b-39$7jQ$=c^Gb2 z_Ul#w8y#49&gRqF!1ZQqd~?NzWF116N5Zdc|A_*+YG`)US@w%?!cBemWN(_$YlVEd zL`2F4C}Edg-#Y-@+a>?+xkqUwp&VlK5K7;$E&SK;e=ZCo`c!ygQhH-6jstkMu*hAM zk%2$ld-&4TC9?N?@RtdU(M8D0DF;VkeOI}RKoW+E=DnQJPWzTm{?F!K1KF4^gs`vW z;F$D;MO9_DOFm7{G2z|$@)_Lk5`j)k!u~iAvH^65i@$?ULu)2n^a!(fm##uB1%03< z{PrbJS^t4fc<0{ExKE-9&W!{$YprmO5*unh6?YQ0xplk@LmM8jP31=6E_Q%PW6_KP zxP*YukSdda(^z^kQHl10$I<>Syrl>KN^8CfT~_+c$7Z3g?+FsIB+s8V)@qObn*Z$4 zB;WlaEAbNWPd9=Z){G6!Z=unRwG$uwdcpvO6m3SqXjWN~|joj4@Xqje0Qk zk+*-P07^}8?VHSB zlZT`KO3sfZaf|cF&vIjX9n&@IQ{mJcmm`1Ao&WtLj#Nh>w+C^wz)&q9&LWE(g*3UnS>5#CrJl!qlpgL_-r&|jeT?U&b|C8NSKNmdJIrE09lk+jivTL+Y!pB!^EPU^xh2#Vue>&S*EVzopAvbRl0`Ik6KCT81YPUGxB{6=0s z&9SVnz&_r)JINbrfi`4V9~|a^=lNIUhE$3KDea~4GdN`{dt72 zc6RTs8PmvYbIxdoatCD+fhZP*#2j^*qfYZj>g26biF5x^XVl~1vD34l;u(91=gh$q?_@p``~fzQ#ht*4W5Q46;vAXFcc)iG9wA~DMpS$Csf z=z)B>R`r_Vrd09@lbNu2nl_-ps)TzkLM$9>=QCeOtFUjZ%}=HYhUp}ZOqgFGH01Qw z>et|u6bk>I4B>)}RN&JB94_V`&g@WefioP4M^qv0ifi#K(*HZFel=k9G7M_7MBm5x z+`-wq+<1%t#35~%td6{oCdQIm9Y{LfQ4^>X7#e3*=0pbDrKScv(-C;lr^Ze0$G0jQL8ScX9f{OYS#WI{N( z6?tHW*<$ts?wr*qL>#WT2w5h%!uR4h)4;q+l@L-~E3KK77D{h|US!JKCH7ALDHcXyJGzegr1u$2 zqk$~)%o~m2rNREIq9-xr$#Fy*EXC1t5UWQ4Cy0EZ*KoMuQk7mex}T{%q5maJ*oHof7m1L2@mqDa=0k z{{+?e(U&WrDS;Wi_f$0rUZ<5IbHJ(unLfqECBasO^X=Yp(dDpA1j% zR^-<+-RIUHfY@t;-}%T<`#n&^;&}hX#-?VE#z`Ln{n0R#UmlsRq3@cQh9YYq-s7>t z+W=<_Ojc3A;Qo(N9-YUfM|rNQEWnOps#tSVe)rJhFjMDg4476;*+<+Sy5$o`YjnJF zVngFn4q8tt+S5M_0v4GOs~+8orN|nnvd_xgW0qw@zoyo^8nH=5ZbH_vKnT1bS1F)G%e`>@-h(kU(sY6p}CC!^~q<>3?41%DESOa z5SjHgILWZgn+5c0?W)SFGMTnhmo9itHyM04h&d7)StjF`M#JAK3+pkHV+0)K;zCtE zQX4&-{02zphQJe{)>herjU{DEO{$smG4Lg@&TEDhluk89F(}`S`Uj4GdRU&h3_tpsas(GjCY>1a(r5=TSdvABYdun>1&oc1 z2D<J2^u$4>l>y=K)Em`tFJq;_C*wAX z!VXw2t|YwS)GhQik%(r7Ucen(0;i#7lsAksI$DQk<(y0c2ESmg9Jk-4D#{Wtg=jt< zuEs8hJkb?Vi=)pnQi7f&Q@ic-6cmv*!JMf$WRn+4fAJNeOcQJj>K)X>a@%V=yWa2z zuF+pv6uTh@r>LN&)`@h~wJe48*6Vzw{tHd1)|ytZWpIs(iYK^>gl592sp^)E0;6;i zz&BycJ_{r17}$|%7KV2Jc~cf?;yz-p{ECm7YQ&ZGoDvKVJCt1;DOh$;DVRkAH&|qz zsQ5%}0Y)~|vLlt=&!nIsnH+t2hs=qyCqnQEd}7e zX~Mr`gH6~4{jcWn?zOOu#&;jSMt8EKfDX4bc~Z65O6q*7nO(GU?{=_t z*A^VDqyc!`(80@>b)<%ez<9K{1PQK7N4#A<(r(lH1qi4pI)AwiX?8!1>8v+!)kic-4%+&9zz)og{>^=sLzGY#PKbh5kkKU_7x53eq zsus^KNBlYY6R(4s;-VIsLYimZ2b7Ev+RiIcmbcGDwcFN7`6+}Jv|gKSR2+U=z)&5U z3Mo}e-{vSF!8N%!<*RF2hquVH!0-dXkzOKqyO>M8GIbF~ge&4$xRmZ$-eBckxSkdP z414jnwij$%lkJcyF?U$GrvFlEb>hxp9p8V-Lmzmwg9Y`HLb!G=w1GE|&f(KA<4}-n zNb=25Hj13|A9TSt#LKpXaT*h2c8SgZMq?E(^MKrKE|7?j?E94zet#so#@~}KnxqCr zx^U4Wz#_ITf6-msk4}?P5B|DCydxCkwM6VXh;OWZttJcunyLt|fLbpBaMyu4=!EoP zyM3~Q*NYWy65o*jN^Bsqew?dzYVhlj)J=S;^Zym!SAJ}N|E!hQu8b&fgm2J@qlZgG z!#(FBloe!*>DZ!Se}G|3ecO=GeWDq(Q2CN^!!N!PIqLgGka;XrYNjGZi3#zETH2iQ-$;DjDd32OO$8cekf zpTq)-WC$iMfIb7$LYT2zH7I1RkS;VXDPZkQOHP7>!HgAPdQ)B} zw;dH_JB76#$>-O*w5BLp3%Q~aog_i85Ij$*1}PdlP`6CX^hah2EBn` zIy^M*-cAIOXbns4=%cX(LqU5tMjaAvjDji&ed>zF0+;wLU-+}}5sL+-uR&Ua@EdXn zs&kv`P_g4;*nJ`C()Vu1N(Kk}H>3~Z zA1sXDZr!?Cn^Je~q%AfhQ@6*8kZt(zyZ^E&RqM(&ot`i&zW<=otB^4T+dNr~c6*f@ zzU*m{dffLx=B%R(Gw%m!aejTJJFy#Pcyb&8L4b?@-zj^27rHjqcwLYwZ0p zyT1bFtgt6S9twdz@IVusJid2wP<~n^q0)8|0d2y!YQHuguCtEnlJkiGH<@!Zc7s*O z-z$&Llm2vg#de>L9XtgM>x8F{TVu4PFY~>gSPN@hnYLK_gCurh6b(r9Ok(DX^G4~X zM2n2n-c>AIoC4{Pez5yjCo~gEa}S~i*#;a4Wr*DV$%HE;@P7c#SMG`HcZU{D zuI+z5=W6yh$q{7AT6_=0_Dzh@{!J@X5p-9b6}ORx^}Ca^gw2d%1y!ig`WAH~TV*#a zz&GVXw|0f8$>;+>;$;Pnj&!g+KRCpC&0@a|0u}%Eor_|BjP%ZxH57Kvba~`qcu52b!9y zS(SqkV}~$grI_&`gIy9fVwVLZ6Jk{L{+BZ4fHpLO20HmG*cr8Svp{LK%v4%njWz%+xsfuHq=*kBa>88^MwXOIo& zgcAZC+v(NI#3D)i#+v|p<>kSpQDk8LuMGDq*mc%Cfd$&cJ>z8wKZPf(Racm{%woUh zU6+u^B8+VC*omepC5DlW4*7P6yBQHt>+G*V9_v2v5g6v4wib4OrtVMWSOnSqo8V17 zUycPO-9Eesm+ZP`YvD+#DB}`gu_}i5K?~;STY1(l@*%R6{`K6Z%Ex99ygtDug&XJF z-sPtey`q)p`xa(pE%(@H_k8oUGiTpOYsOxJjI}o!eF-(VrfORBwiu2k;LahW1(@xN z3%wTdrw$nfzvA4e@QX_xP^;UY1sbA`UWkyhEtlO0suht?2QN_;t8D=dDyHI^pRqKZAS6Dc|@h%O?Qv}$c=(F5EoG>j717B!%!xXjzLl>+$xL$mqv7!^26sxk*pYbYp- z%S)4j$hA|55-iv<6hZfE-*j%}GB=lsb5`rvgnJ}@2$c1Oo%k+)oiLK?wMUL_uWG?x zau5ILNF55mX5clk388PXZ|&hZTi8`@-Tu^JJHY@7A3NILimCii1cyxu3d`kPpw9>b zideul(E=mBm`Btp=KIxRlr!cZinAO_{lGP0|8DH0$#EkP)n*1B{w>SqE+Y=+vI)+- z-;nUd15gF+QYn3qBkT$iYA*aH-@xBdS^pIhmw#qP#0^aNP2C4gk!M`&W#KEE`zZeR z1`Y-0T_JD@7^*bJYYLl*jXx+H;v8#_I#3m;J3rsabFh9l6Mq{TYAsYR$Al&b%*uJmI)L&MiI8Cm!zF!R= z)+W!R!h*ztFhtjnzS`iS%^Kf_3GdF%>i%QtGF}+;++i;(PhkXuebZ% zTIL0hH;I9fW^)S_0*o06^%v|J|112qydXwu+#%@&R^j6jvKoW9SJsV2@I3UNYNzY` zTn!ST(y1j)Q4@1=ZILB&ESKU?UDxi>s8rzpp>7YQ|AYR3*}y2usMbN{I@z&awhN=l zcX+XFR}~o1_Sqja%0a&2QeO?$jPBbSiA1~PSiM(!BP_nS@?>ILgkrd2M6Bt)u)q&h8?{S_DWtEl!H4?B`v=JO6iUiO4el#k8zE1V;|^ zz)g(0wr)~#-Y)o#Y}2MY*egXUqv!HCGF%X?ty%zm!&miGdAZwyi11O||J*zMM7)5s zk4D(3@E;l1|5~*#*QTCX8CJooArjA%OQoj>ww?e)k%jPjPK48}= z?Bb_MNE!&N-`rbDwpjt#M}N)iQaM`UNIlvOxMw+H7Q_#Ye8#!z)!NucMhAY71Wkhvio(SubgOXQ^t~KJH>L7F2ka!O3IHc5T_E%(;K^hGJ*uOIj zi0EmYfziDpG)Ah`*WIN%mCZy4->a-L@!fdIPuUe~fqxw#GC1E(8C28}`MQ%2`FE6g z#y)F7nX_4r%SIOT-n4I1X zAiVUL-}b(Yh<4h8{Ula-1N+l22E8Dd_$|zWM~E|75}sdM^@!VN4WDJi4bXS%r~XU& z2`~GboA?ep5NtTH+I~?_AGr1;ARTw0r_AbTG{yf<@n(?n5*2vD9V#-(^Pb)F4il`E z!0Kz(-3D+9D)_#Xsp+9XoL-6Bp2u*L7$RH|xod!o5rw-e^$7g#nV;QDeX57)7|wrS z1xUkgB9&qf1#>4#t2z}%sOMGNVk-wi8)e!kP>Fr@=(Q#oN-yE?okm_M11B^ZjfV}Z zqI)CL$24e#h7u-Y$|lHD<<}pk(hLL(TGyMf`zXmclDe3C&?VQFibacrRu=JMH7hB$ zY)LaBQ~XxF9Rr+T9q#+3m^{f`0JMTkGQQ1GBf;tYP%Myxh!eC!n1hHwzba@p9rAfN zn_|P_AstTCK2LFeZ1z+?555Ow;;{d)(_q&#x{MBls*Gh$(EE2Fk7aV4VuS|4@Ww-cQ>y-_4^t}~U+zgd-m)Wk3J3LR z3l<6{Jvqt2B%eh+=j;H*dhV1P1g>PRN|-PYz07ZVAfxd^Glzg_upoUE{br7ca(q2d2(Nhf}tXHiC4VxJ-PbC1%W9f_h;|=#BoD_;=CQFx8G6{!mgLzcEsQ|+5d0v$;gy1qs zv;v!RHaZqM8i`o1MLFa&=ZRRX)Q=BQU)`huR$|I1vVf?xC;UI?dV7LVsFDH1nW5gp z1WtW;=6-Z|FjGesi3YIIs!TzvqJ_Hl!j}q}!5E7Qsmc(C)9`-pH`Sltf zvMO-3qpsnd2S`b{3&(^Yoa~Ckz~43#+H{o|X~G!zpeFXrCMX%WQOrD{6eU0~E4++E znINfw*xR0Bkrhbe^T%Hem3e@w|~sC+qMaIJ>x|JCF_fkLdLRx;lBGk&xnc-X545TQ#Le3KLNy^7L3#- z1p(Pl({mfw`|cvv#RF9RJ!XJ9epIwp%sRXSUEBh9n@T(RD<~Lb+{)qSu>*@{`_64* z)$|`W;gblyc0!$mh|MGFS#shW`ffkZq`u-RZW!56HNbkig92zfXA~m9L)1c%JvH2K zcG*XF!5HCm6(v=VMp0VKRMq|+R>OiEagtQy{IfB_NLF?q$0*)9Q_85%jHQ7 z=^3(41hE}y%yy>AX;jntE7pb>k`RQ zAK3@c>Dk)sc{AMPogOHqu6<8J?|BAT z{}6=fYr=9U++5T4s=;PKvl6y*Mc)|itxsRt=MI2p$X5pMuq{*_vW+6Oa;uWfBfz3usieWi{^fva0o|R6Vxr$^ z-}8Ul{Wnu^8slZ^OsV)midGgLmh4QpeMapaf)m_Q+2~0~ALYAEn#X-h!z-%=2qN<& zCM5t)AKty9V0vlEk679VYJd3Cqm4|+FU&UZi=k?&s!X*&%fg>q!~(zH@7z2pP+!W- ztN!hyiS=FKrD*hrT3r@F32Pyo_vZ9w7@GJ$oa~YMWlFhKcMr(1<(HBFPH7p`Tzwxx zw;aej(XQZ%M8Jb3lK}re0Klzs|6kN-BJuxth$)`HZvHc1GaI>A&DXM z#cik&Gx-s-YEiEe(TcFexgi+oIfBgHSQP{Ctv00Dg_|?YEI>OAz0!Wtc>JC9Bem+W zYA{}}TMy!HH?$nm^v zHX)%Uc4*)t6cD5C`SjwICm*Mtkbdp3@xE&s;|%EEi%G&HJdu_#TZ?6#9$u+G2|Wh8 z1F`tnMq?4#WJD>e#JafPz;WhOXw^(JkU=u=pfP>&v%DxZAbX5OM8Mh|PK{J=p&}Pl z=GPV=T_Tc+nH_1tGt{<=l8xL(!b3`@woT4D-WPTOcMrxhthgUVQby$mBrsI!s8=Ac z64S+Ra}AL*5Pm|CdgGQDvYv%H~>-25YJ+WSW1wp!@$N_2$LSZ4k4n=d^lSsnm>dTP=z5-Zaz zQO4~Qds{j)sKSeH;WvUvxrN%iS`-MkJL}{lrmUrjJ|IFE17MM#K|3$jUG~|?vpkrg zc(i6)v6M)+NLWBHzIIU3M3K(bI@;F)W`8n1MtwbY;AEpu1C4$DWNk6P)V{Lu+C(zj z!|B;0PLBx*VU`U4<+ovd3d%d<4{>$I?2R7G&Mx1x++}*b>=6moyf@QV#6Ql8jFB4` z{T(Zou>$Wrf{4DmK}K~t25b&|?l4j`d=l7CdRq~X4fjQkg!&&zC3X>At(zU`VP4w8 z8W%YV$=cd?`=-SZi(zc)n{a6py=SkS0_6~76y{lwab+(8z*2rDgc9F}V>gKa zx~qs)K8m@hi1eeNx%6Q(nb9#7~V6T0&?=iYd zd7x`s_cR@{rUf>a%La<4H9YJ6@FQd*5XTLp)flZ$Z*7WeGgOv#1wze^ zt9zEdD7hT!RD-BlsIj%b@9s3A>6aRf9xb45bM#;y`oO8mkt2juFWLA8*k8g8coyPo zux@DZgd9Cn6Y(I4b8FFRtYlJO^HUqYk_&CU0*1@n_gk|HsqIpjqS?| z9Cz7*Ch~oPO~^TM&^cRT{!+}Z*wZ!-=%rgeJhaU%&y2DG_f@TTAYd?bS)1pu`3be{ zUt@g*mm(uJufj6}?p6Ti@8yms);@sX8+k@N59L)lp}1D9$+ZdLs$nQ3ft{a`=5jB1 z9Z?3dCgJ$EJ)SN6EFt8DiW7tVxXpM_pBQ_@OT_XO$>8p}VqDecuzs&44f=F0qpKT6 zd#`HiD5T9I<}w7f`Uk+W~)O@mwX*P<-yBh>nBZ%9F8+>k01 z|IEAc-Nf%!|Ie=|EL+_}h3x_yHZD0ah!0LB~9!+k^~63Q7kFKnP*C2 z!q_UYzTg45siww_FLW3W+4v=}^?580=;$!(EgZ?Se9+*#P5XsMa_&y{_?Mga8HE3a zfb7DcZP++>|NNT&`xt!d2s1yRv={QyXN0KZWKg2sN0TQFvMs4t z5V4gjd;4X9gVjh;a9OpOl#t1vvT;3WW#-td_)Dv_QX$)%-&7}cpE~G&{5d5AOlhuL-w{jkG#`%e{)^EG_kXrkm?()iZHVB+j07rgvEK{^Unsq6MG!q3G}&g%2d7+v>})o40g(*8*opZ1f}( zFRy%CNkBakTWGl0W;yB5W<-gv0*^P0#OlK|sWC4p$*L?yU5z2pVtDUf19)f3ZMoOS zUmFb?9Z{WG>PpZaH-7|!6!}Agvj^P6hG1z<0rb+MN(;Y9Yfd{8ArHI)BUD?ed{O+m zR};|s;X6ip@+&#(JM+2AC$8};csPtNEAcrHTDU`y^$Mx@6;N=ppv@KTIlBHj{3<_s z)&f{+0#FY_)Xb8iEIfLXzF5)Y!PqDx|Kw$$FkPbgt2R$w5{ygN&qUgivLtv^?Qaqa z{vG6qKfxzfxjd-DjsT&o+5W3~DyhS3do{WpvT=#7KDw{TkZUL5UN3?IPC@FRE4P;y zxq>y5`VwmfAhHfbSA_p6TZrx`4<7$8x~7yi=d}hzFd-X;CsLb1;~WRv`<;<`hy0uv zQ`b|}-(HQ<#|aXa2F^H%>Mah5u1rBd80~xTh=!$vrnra$UX!GCTC6NS$08#A(1zk- z`W_vb!)t3oqIB2GU)5ln?P7gv+ET>P^;CZwAfuGbmYBNWK4H1)LY0(^^#tYzMf7A; z^nFLpDB@jyws6Tf4jwS>07ewdk76hBAZ0?ET@GtxC0UiHwcMA9fSWhD`*2l--7Bbw zK-}Y19YocE9*;IUd|#hkroa;Qdr1z_OH1ZSzl;?&yV`dgWLn)N7teMJgjgSCP3};< z8S;Gu-7Ia3JvpSxMZ&WcU-_L(?M?L&t#NzOhbe^ttL9khTOeLg?udD2VgGwg%-O&L z9X`vm7NU4-|Xve~muLtyetI7IJ?a**y7o0BhHcvRreAh@;e` z2g}Dixwe@Jt+og$`uuKNR4!($xU8YE0XJ0!P^jP`W3n^5`r{k@o`6Gjn(;~}1n|`J zz#$@$&}-9>?04~1g*rW6n=1a}7bYgAna?U!BUaX8DODorTAdS=Q#Z6K?9S+&2CG5# z_du125>P97{XKkO8g$`DcO_KXM(OjAY=ep(w;s=fX+$Q>a^J}Kb+Af<3O#74Pc!0WgRD ziXG8_yI`@^J>F?UDAI`dP9PR{fsUSG^y?M?L45k%O338 zO2;IJPm=hNQK=9ZdfCyD1Khu(>l@8nUS#~#EDvdAa8Q6jzH;)~2OaAwP1Z}1RO7KC zenEoK(Xpl(-}crS9#dqh1}pOzA~VEHFEfSdt#Z`f;Q+8p>AyY|M9wTr? zeVT+Cmi)LCpgdzcCX)EXDj9Y8Ox{JKIr0F0TT;H8n!2%_j^E(NmJfEb*8huUNBk*! zJzIUeTEemx7fkfaf(DHJGDskg13g<#Nq7zC!lt_&_1x>A&0ODp&ykw-=-Wp}Hi;l! zkVCsn;^%ud>iY}_ z`$n7^DgAukkMpL6H}y59{|ZVS9mo?NeE>NChL84C>gPw<;x1C@^E9Ez<6$D`4bnTa25^TrQ&c9rCzkMKYb z<#SS)dpUIm|ErEVwtCJ`ro(F*UVYVDSe*?qIjscNj|`8sHz zI=@T7rWvRQWRR7Hm|kM>jS_X?L*lKCvtr`|%a~Q6=MEQA?O^LSdUI>Oa*iB7;h-A? z!pbqaTx*vNvMH!pD-Q;rI2XP_mC+o4+%UhA#kOn~)02XypGr{kd<9|R;JbyT5*>vd zd@^li7Mwx)!_~WX5Xc?eg7fbAC$vLwW+{Lt;iVEBT%a)zERbO9vplYSI1M%ZbDFPKVh!EElDWsSJ z4f#JGNz?)Rc{T&g?6{9+Pr+1JtA3E4wCwmcJ>U(8Oj602E>)YrJ?fYCT>xe0$oC#0 zLPM~53EUs)VAr<--~J@ zL#aa=HwWYWYQNhlvI8Ru(7w{(X*ubqJMTr{QV<8s;&>x{7j`2kb~QzK^&UMnJc|`! znQ}YeeXxbv7o^yETu~;OVB07!ufU?z=4A4OwLlvz6BTteWA9*2dcKo7PjB;tf4hdRJ9}o zSj3_u#%Ds~Lz+nZXzQHxq9@rvpX(-pXnEnl!|H*a_9y8$@;_{xK)WcO4Ir$%J$d!K zKhkZMv?TbfOcAe{h6S9bntvYk z5-JqqdGOwX%lfXtrHHpnw~;F9S+ph&Npijzim}!*pRzSSr0q0%4M@Zz|G(^$pMrWN zH*Fnngr{pYQqn4e8F?Ccp{?Y}^m{c73I}_a*pTee4*scM>Q}k3!hBo=DAsTGm7VPf zyHcFtPbnbn$$uA)ZM}D0yI?msJw$u4roy0YhB$(>n%MS!JXo`dr z4T@Hw}akA2&0xl@qEmi!aCK96~qkp4ihWMKfSv(P+^*M6AnYCuJ2Tj;nt*iOoJ)Zre=oSQ+mlDUjB1rmEeY$>;0Q zqZNHQCTngU2nusSlU^b0{4;Ra=Q;`8bQAffNL;z~>>9A4W&t}_`u;lIKW&BULcHEL zQCH{8!Mt^<@Q2_V?<@HBR1})1yKd9IEEM&$-dhmKECL8-j;*2&jC9gM7AMsw!^0)W zN$0aV#UMyd<=c47eXNZZNxg!qnFJ+BKK%dbihXjj9-|yFAJgB3 zt6cW8{L}^8_hOzZF&(a1q$Z(gD=eA5I;*GK#gfU-pfF`urt99fnlDR^d*Et~2NE`1 zE+|#Nqe+xjt8{^2s9STGT9qG5Q;l2>cyjW}O;jV_K@a|@UoJvLa6%J?!nngaKpC)) zNChJsb&dx11*WTsPn}H>2HhHwgH2>`zghvMKdJIyA-!^ zj&cW$N-*fe+W&R;8d6QD4zUZ!wdlkMP3}wvrmyJ0{(c@lx_P2n@CDTVw#Cx2xpJ#YNPKm$UiYc`23OG|^TgBK7Q|$Qd zD*w2-OR-2olRk|*1*3L6)eC;}Z}Xb9h7f4uv-rj5u0j`L(#Pn67ufeyr=$Hk|(|9f?FpjpgQn?huBulR>%CxhN4#In{&f2lsv0f|P-%*95hKs32-8 zk!(lpZzHI(O?n0BHH)w!Fw0IaK#r~xD_I+z?(RZ61r6>wCmtvQLtl8>ZX3ez@_Qxn z;ovzmCbOYoar`$CbNkrt9x)QU`QLoQRc)Vt%F)RGZ1)2ED8ze(UTn1=+ zoNbfXs`U6eVYg)|XlprWtW!c7!15v3r`ItiE-zUfhnlL-xYl7U+~OOoJ?K?PHAvO? z!NY8N21l^O;}p;!cgBIOfr>matM+$eZpd*N+tQ9XpPCyom&wS5M%NHq#iK(vv~cjc z-L0L=nMs+axLeJaU9!*GpO*&KhXDTo3wI0*>_@3-ol<9cU@+dD?USt~zWoq-sm|Xg z`o`ZNjb}H+-r7EeJOjqq#Uee}&$#kC)GbqClpMz21M#W*MkE8ha2c&>bx#%x0x!3u z6u*FR1GeUpl`74<%TRS)cJU8xD-BlL*e%o1pUHS3fv%~jRj{}V9`9cRY>pP+@#B9d zxz1w?G%Z}e8R1L;Bu3+-t2DK)ZVf8t{OWSQYZ9hYpK}%X=r%MsdM|w=ntYKYPY%Y$m?S2V=wE z?>{qI+^`-1QeF=E+s*(MW(@es=e^1fEh+R(+fJo?qVP-0O5tFoO?Cem*iEL_qPwkx zMZEMg2jp@Po)+xHuq%9PPZ=GmuG85qR5nzMDP*0@^z)T0ow8G#gLEfp8TBZlw8$78q)RAIKtZ&r9M@k)@41zqw0EKAZAi>pok#3$DQ1#Z{Mx`fKZVq6@4JSZwdx z0^Ef2p^#7@X0V})>7^1)#2-sV_NUE8uV4)kIL1S#rBZR=CGWFVnY(?N+dZ-Z>5+ZE zq2#(kc9S=a-jWi?^-LIpj1iG#bouub71+4&a)1*Z#~AWOnF0pjQlE?#^E7VRAlTeJ zCq9aRMP3D_;K6Sw`Q*g$D?yi{BQr68YhI4orf>M(-dJCoYOjRsAy-j)U;FVKfb5YI zC0~))_Wu=Jq?tQ3PWps0fh-Om+&5;^&yxO5RK<_@TYaaQ-7K-kG>DL+0l=jSN%=_B z=@Q{p+nA29+gE0ze)ZI*`lX$7G|snFvBdr0GEd^5O(aD(%XI3f4@gU0Q|@&yZ6oqu zQ|lDBgz!+wUUVg?TFAWt(yJ1Ob|6dbdFHeM$JXJ@$YD3U-A`+1EK~=V&57$G$?VX4 zF9^A=DD){9wpR}(J@6C048lN(wws#tD|6RNP<7iSUiyN=lpF8d7#WU-P|HozM1=YN z5%5>%CndpwN3WOE+s&1Pl6Yv4fQ}*0@l#=vCEZ5x+HKX~qW;NJ<}(^0IL-^|ZiEt! zTl-?gFYFngDDa^Q1}{}$%3EokrnHI*LB4VMt*FRC&Wlw3wv_?x+ol-Xe5JE{^;w|j&?Iv# zvn3{Cw(L$tBC%qrz=3Y;?(V|51MhPEUO!i>5tQn$a=i-!JWlAcPu$Aeu`!<5I_R1Z6V%Fg6he1sl-oB&new3w+@l9K}W&}AS& zs8>&R@c}{Reu(-ih*vm%8j48V1~-I_5am9WzEs0?9Konct!w{(fks3(E*Z!sdk4M= z2=oCUpOPR2Asa;9**lia&(H}&tAXZPpwTsRSa>m$V3b zCn#4dmN(+rKa2pTlhm3xT1bY^Fviv2vWpE1ws(ld!r8AHY4CO!jW3PnPoRHgytWn) zAvdAbh}qRi0NXwDXBC8z$_1F_-mhjf`MW#|v`-~iA%`U@jkuk{tx`y zfa9XAAi?++)axiz$t0sq11OtcZ`(PGx1gaSaj;KMtC=K}|G?U4_1c=20pSnS+RsQr z3l5-1cz0gl@lQkh2$=FpGsPBy1$mG=82(uB^mMBTdu+e7@q`2Y1G%+I0bHGM8EIAX%>sF?uWM{TMU%xL7%S~Lu zEaHN~DN(YzJ8^{os<#SJ_*Cm@*I2X+>p1YWF>2!ke5YgvCM?Cb+(x|7oJAVds%`YD z3@!FR9XfPrQjp}}Au@qfDdfVD`giQ$zD?|KVIST#PZ^%HCTnBp>j_kP+Cl9xk8F+H ztO8|*NIr#BU7tf28$O9Jx_k&;fr7=Fn!a4!0`$Fn*^KE~6qrI8$(&hDQxj>h`M0J? zHL-Y*R|ycIPmtkO(t>$cs3il3_FaOG$T?8}D{zUa!&(fq&Ls64>j{v&&-oc#^; zBU(-U&DD{diwhPPy2{U^U;m18Ty%~)7Qhc))^2@=lsAah9eye$Ux5}8y7TZJ#ubxz~yy$SBAnvrA>KPaNcZF?%&KS?3^e;%6 zl&z(MKm_p>g?c}k$E{dk1Mv)_>ItX^>cKBOPckf&}k2du1`=wqHvlC79 zG4mxOoBO^IE}b1gc%e!0sshgSG?=*3U|EBl9v*^;xZJd5yws2Wcxi@gov5% z%eMj?C^4&@fX4-XGdt|snYT5jN0aUq?epq~iZUJq5G9iC;Q?pa>*kEY#zp()V|ktX z7%Jxi@LO89TX;w=>VL0SOR&E4{DaIoT^>X*`V(7NQu~T^{?_v3xfA#r2_ayOwKcG}sDH&jQISCfEKSDlSKl^>X zrMm%DK1)a~?`FcHn-JmSm?Mq>ydCb8utVSb!RddPM5RkOF1ITk{f`C$YK{PWt5B@q zGmg?b9qf`)eM-ucu)zzbT(h)4d6oyy{L_rJ4O(7Tf0isgCQq~SkH|RhM>6Ae*X%){ z4czY~(216fr$V=D(R|!@GRw6wIif1pfEc0x+!ceDJ)dV~!vZfWj>v1)kWGLji(CXO zf#Nn_`)4O#@tCg8U-GpyUE!M*?b@9`T(@@VZbeF?2R(TiHA~xFpmO$(s~J(+=8iTr zO8$16ZnkK15m$y{M?!LE#}axj@oKzdYd$cq`o!WjhG6fHeMP+=9FAP= zxJh*LxWGbC@Z06fAeS_iIB%d2x!Va_6#WQ(F>3UW6^v=r34=dEu83X9WUo>g_xac) z**LAMjR-&R?=h!t>?nPRT2au;&CxC{+mFXvBI|OLBVME$$;wFcA$>P+?(kmWa88C6 zufs0Jy@ahVq+4CEAmrS|JK;QJHfQcz^Acv5$}XlAJ4qDRl30TiCN1Wf&iTzWX^2}C z+?(E*f^N##@8)EySsB>~r~}g69;Zi~nvhdUL0Ci5OmFV)P=%h|_R6ZmRfIIrHRG}Z zn8Il(_=F6Ls#L;)qO~wFY{?17qlY1F{h{tanOXz1TD$@09-u4)Iy06CpjsgS=@!8A zvw288Cc1w*k;)D98W@tT$)9>|Z&lX1mxE4R7PZ(~10+T5;I-4AOIr0MFrXFp+K8`> z{q}T=?ljhYMv0aJDt@n#>Ehug)QEl!gfF9L1~FAK*&Iwj=|{O%;UzEvV;_y2LEt1} z({%Ok-w6N&OxFH$-t$l$<81D|F}*2B{wol9mA>ag^82e@#?=p@pqSLtSf41&<;W#v7Cp<*MjV5=?Y~lOdVlh-*;bxJ1 z;Myz-4=R#<7)G+x^QkNpzp4w>~8=_ z>EZ!HFza{WY{vM3^;6I;UnX~pw^pcQIZ1FJp8O4RX3)IpC2#E8b?deWx+lu0w{y07 z&gVijK01hzPXIycjsn7Vb7O?T)%msocMs&g&H63P`^wM9l1cRlzz;QmRjegW0xaS?#OM@!a9~&GviL+-s7}%dS438s3BNr2A_-w+3c5heLod5?|6H}=aG8^cVw*#;OK@^B~|)w;Q> z(LncVnlpUKEVNbuJgw-pH{MQ0amWR5_g9CITomr{D&r;AKsQvmaqar^*H%eHV*zFw6I;NOO@=DohgjjA8~<$%Mm_-O)q)H%-ak$ zyZ96X99*p8w=+l3Hg-S6TD$M7DCj((?`e9hm)b6*?JBS-l0Oc<2PBc7Gr@?@rP@Uj z4J9+IlFjo>ns|r|cNT+yD6LOvQ(T~a=%hHtS=^L4B;%m&Rwv!_u%rYuR<;O?v-oe7 z0S4CSah8|gAw`N<<6h57yNy0l+RabnlIoFwxEfMcOA(#8jVK;?{z^trD=Gj)^o3QV zGs6&KukYh~u^A3B^ufX|PN4WyR}yrPZS$(|zgN;;$;y=a($oJ{;G!w&q%^oot*m?c z-;3#XTsn`4;OSU%TzW3-IqR!N!fpW8pF{*uEmtoy$hqDgQwloCEr$U!D{?dZHZpmm z>I@MkJ+}|RQihfoH_#EdvlN{I17JRX3%Xnemsj=$;57g?JAH|1`asmK@l^5_>(V&8 z8|t)A-Ujp4PVTNIz#dUJIXWu~0*BWrZ}pgX+l7ceQ+LkavY8mDSY?E*-`@sOof~-N zN+Qm?CJcwp44I3FZQcJb&?Lc1h`e!CsK+W6bfhu!6)ItP_xBxs$X!Y~6#v1k!B$mc za(X)z8j7Vzo~Zr25HCaUn1vURrz`?0AGN<*-xJIF2KsknKzR7&z*uHPq2MdAlIv88 z3*0e|;(}$&-QI?O%?z0$4Pe9T%v9OWb0dhbmI67(hu*|Q6yVX2 z+P4GM7QqqgUlk&HF6qkfIP14^Vn`pqpTVlrYEmAdritMpbV>m=mY{Ee5M=VnlOlUg zVEvjIZ2xH+rmtoWVL9w4{EeNj+siGyil`wfci)sFS^RDLwTZ`fyS!tsLC++N6$+PP z`u{8FL%D5X|IkUU+>Lvvb4hvyLab4dA_QT1Q-~0_O|DSrt zN9~F6Rc=H(hUf5)`$(8+$URlyL~){=a0A_RmQRSWs@~0pxPFUS*m(l5 zg)(=~z-=1X_IkyBdj&Ncjw36x;&{{l9sBvQ)}$|zPoZif!EpeO0Zi;`=Qcb);&zc_ zYtY~nAXQa^%2}h=q00;#mAfcy&ow>oUp^!(K`(95NNJ(6=!;-G01Oi@qm9MltrILy zi>2%8c<8OJ1e>j1@n7JBq0L(L9O@-VRVT^PZkKqj{NV#bW3sO=`3i4)a;n@73s&K0 z;0zd}iJhmWgvu8ed$;ehC#^ergOYqt$c~q_Z0T**2kGcjI`)jilBkj zcoL5Ih*Svk4dWm0l?&=nqlECHHdwN*F~fq=!dieSJYUN}U`&L9NFq9}y?RV}@_er` zIAKOF4J*7bdaMb3Jx)etDvMD7B!yPU@)4I_iK+8M2HPuTh-P}hemQFTYVZzao6>K4 z{9d5eH~N7~LcCuaZsCpI<}I+`f`3Nl$%ZgZYIeRbjYkB)hsV)x4rr37qv1QKT@u_? zX1t+)#lBCbV#Ovt8|J6Kog+bSt^_EM(Q4aTff{JNO38O4nP;8MJP0m$iKJb;xWD$r z@O+}RnuKj+)apO@_=|h#gN81y{E#A%D?o;GGbwBZ8zw$ge2ZO?k+DtLu00H3+|C6i zyvbRkq%DL0D)eQ6whbWt$WeW))n!33w%9xk?j$}*6{)~#og=s%!U^?nrcc)cyCy8q z(BQ0Vq;#$>zjq|3M~!p}syaQ6cp1WnJI3Dog@B}~jxkww;s*`68Qjl`@$jT?4bRqR|b{bL@Qf>j;1f9u_HA0NhsrNFph zzBTTxA50tNBWPoq5{)c9nBFoQVW%#o6wWjZz}DhT4M9goRI-C$Lx13Ec28ofM-Tc% z=aTf@;5V4)Qxo~cPqV;1^+)vJZP)t(AipRr=wu+*J3vOoq%)@<6u5HW?@ z`;cn1=sR*0$xskVOtbOEk{V_Yv`taGh?Gl z03!^bG}bafJ&b?TJeGyKctofB;9`-NewV8I9|b^Fdj#o|2vkOPE43R)%k^H|AQ@d0-Lch0t(?V(3#fEB?E}~fC^s6`CC>|!cnqKAI1Nh^pBXaQG;6mr&{p!b zU)fne!Uo}~V7ftqN2dCEESzyM^v2{WOqlIZyw9s>#nu`D)yTGtXLpmxZtHJ(Vqkpv zYj3FCJeK=wApjM_Kx-&bi6zVQHnx1b&+ti1Og=d%_{O(_fQOZpy+!wf0q<-_VGq%t zF9o!Ox)+fE&b?y{!WzZ#a4vR9h4PYT6=?%Mg@jH3w%!3%z;=;u|Ln#bT$(*|@jyuf zGaHO{B6rlqpI0Pk zvF+jJYEV$>%-gBi<{I>`3Tk0Q!Q*?dyipHPN-O@(iIVnMUkjSaRetWbeRw>r;&i~I z)<1f8ITm>}nY6G$XkhLBID+CeokB8cHZ;|TtUq}q!g^n`IX2jE)`R1P(&FwZvE)*L znngN8SW+kq?`FCd94#i)=Af&lc9h>wzd3rttt;+Qydye#d}LTG_=xdaq^l~BnDvn4 z!JvjkQtic_EmK08pbxmg#0&-`MGW$FUye4Ck3Vn6+%RIru!Z|kc`v94`+$l6+m@$g z!TEL1_!d4I%76fvf0fn2Rq^wFiH3&Og-pwylPsxP@%bULvXHihxF1(*L>A8cmC9_B zWEQK56=a+SGOSxjtFXmn68sh{J)<#ELuq<%B#1&&A3@Zeqp^x++9u+gaT|~iE}SM6 z)T3@Z9Q}HTn{B5jvEE7}V~%BdtdJQSdWk4R-tqbT{?Wq=8ckd0Q<(2xqOGz;FmC2UoqJk#JsndgTAejszG@dqj zCK2+<@U4$_rsC~)6AL_fQd7iS+Tp{zyVLDCiRM? z*R^R5`fgi`6@&7Q94M5MD?HW$u|9o!STh9JG6UMggrX2($btU3@T70wO`ELAQSl)= zEQYj=2n}qoenU+4@aCdJ#}bxM3y)yzC5~gDHzaKfm9^JcuUBdD;3ka77j4xceywW{ zMsdCXhr5GEm4mG#g;}>M-zaS<`x=_PR1;)9-Bc;?2P>#A0;Oke?qRA62=B<>)_{5U z)tc9768TSnoTgio!_46saU=5LHOQu*>KYxaW*BYqz}Fo=k$X?{uB}KIYC^)h8roy< zy`zvlx`ugOw!eyfErfoiE$?D&3kpWCs-ueZU_F}K_XvSq8aI8q2en!Ma{EwvB-!ie zwM%baKS(c+HAk~*#-%ElJC(j^783VLje)K6Fhqh0rU9lJKsp+pTiH;XSC3cs_!Y_H zvx7R($1fgggJcCqUDaWtO2)#Zn&ZCZ(}hzlvJIkIF3K7)D*Bu>94uK)g+{Qo&%vQp zlQRVAgZ<4>`eSHle@>OhFWqj+s_CcCu6fVno8n>ux-;0s@Oi}I2aCGh9v=raD{=%@Zky!6gwCt85?eplDOmc0)fQMht zTFYN3!cBp{CI4?vC8Gyp+a zE%+*FH*e*9`L|4l!1Np=qET?!GfBVwZ`KM3s2_yYnksvoB*j{F$;HAf(1Q)?XIVWvL)g@=F96eq1)9X>jID|ern5g&b&YZ zZZ%j6fqU|mTs4#nmb?UvEaktDVq_O_NnJTiH416=KOWJJ0Y<3o)s^ki$piL}1m1bC z?qqv2eeD?%(b$>cJL*sxX+;MZ{qCI{2oGYWmZVaC__;s99noa^9hDwUMUjdv=?BJ-AGfinU2qd0(3@2IW1a zuCo?|m3Tro@A0E(9LOBVh=Tu$?I94{3uQ49KA*8Y!AE-BM6%P^re8t7n+XO8-PxN& zs`&BeOXvZED$ZHnryB=#*hl1dDtqErR3}sV-VEe&Ufog{CEm~uho;O%nzqyTU1XZyhPpB|{bMo=*IpS9BnI>Mgo*4346rJzR zO1Jt15FATb0 z9~e#{`)$4yhFZBMaz-VCd0E%~9KuhO(-awynxzzZcjqK0mP&3_4n9Lu z!?#IPk~QQKnJBy$GySr@s7xi^k>Nbp%tB0m2oW38mWD{@p;0{iQmIU0GVoru8yh;a z0DfS&+jdRRACJ;dNZdPK23V(O-WC(7tJ1NCeB0%=B&SDC-QgP5Xi+|`=E#5&Y2Hwk z89~?h^B$YU{0Xlc`xGO{&fQh7HoM{RPw;b{qTHN}_WRBM%q_G52ss{TEu97RrIrOH7r=vTxB7e?pui!1wN*C_f5h#fyU!yItg)X4VhqxS`ev@ zdgG)peO%&yI`#WlqdEgg_ed4|oVrUK>RUWUF@XH2Y~KFqlg;LJRK?BJcBtwpaJKF; zR{(?Bj5@_|3Vzt6`+{mm_HR+%?dhSTvP{f%U!BN|(wD_YVK?$~4gx!FKMC{e=lm{( zKW?W=0BAz3=E3)hT5(G(+lI3oUK!R+Q6HCI1KK3wJ2j_pZEXLkF0tCK$G^z-vLDD> zSMc$&c<^|@-1)DZWzn=7K2<*iju?v ztH6GbNMPGXtF}*~I$=j37 z(ISM-os7!t$duzKvuJ=oByoLryJDB-n@{0^x{d~cQLODZ1g5NBlGzsh3+U$;j@B6NX7u zrBGXTD-V>Qvpcr#8Qy;QYWtL_VYUQz;bBI~iIHG9K5f&{vP`|LDHI5DSBvOyon7Mt zZEtm{@oD|oGKB$6X5?(qyi@cwfiBVDIU;2CVPvb||21_ zo!Yw;;B|aQKHdNMX3H`t zjbhn8IUw(XEd{L{Ir{4}lDMgYDsF}uB9&j^Pgq`0uGna*Ay-dyNrDt>v*+y~P-umjT zf2B$uBJ>RWkZUjwkQI6r=M?cOXwOU6Cbk18oref~MIDtX1VIv14vwD|y)svb3Y(z2 zl1QaOfp-=?85`L{}6&NOg!E>rfU_d8W z=VMhu-qD$UVf7~~in-`Zd+%oc<>7u>mW*YAV#3MWkVj_YuBJ#?-*xFZx4?7)#{u0V zJ8n_@N!Z?weDt>o9Co%Sx0;xc7<Y`o zqhBarUcpsI!^Q?E>@CZnm!w4TEj&GXs7)XWIu*%u-NJXM2;^!P4AlH)*A5Q_ZOCO! z+w}@WAmNBa5H3ii1is=D=mC_ZnK%gBx<4ja)g_N%0Xd-Ai~XkG)?0@tRSzN;k5|>3 zgwG_ebq4zAFqk5fIl(<{!X*g!P_;>NIF*L)MS`({0w`cBW=xF$RUn8q;G>UQ4$2r> zjPaF!vT9k7OzF6-;KtG}=61MlwP)Aq@C#EMzV8;Yr1i5ZZDyKn$Gm4eE` z?}L5~Rp7MHdDI2z>^4N9*9c)w*k{>}d*_*AgdDodCl1q;kp+=@Ok1F%n!9l5_MvEIDMHiQ30kTQ(OkRh6a?7a{kx*ya3VkG$W;#oNGch{+~G=EhG=(>Q$zjFX`>;IxsO*=d@>YYyR1X?_;f+h@d)6ghYMyivpbjIZK42 z-_%}<3FKro{ctN7$^!Dh0MMf==lB)5%fJ)Jr$L)&8^!No>41AX>gWU^lQKS09gkRm z5tq^&u^)NChr_hU!JWlDneTX37amiNqWz{{61S3@B)QhgE=RYNttV=R`r z#d!c4~!|b+3-3|9uJuk8YQ-83?sq|wGJe+@P^u#M~ z>3Ti>d7p+&Q5uD$5Y59q?U(M3*5Gluq~A#g>~P?QDyk(~**F+`LK`>?QWD`NXcJ;9 zBBUNiU7vN5Xlhu7NWW}|*la3vY zn=0=^CB@Nl0)K*{mOiGKx%p976F!>(8zk`juPnx{=vQLD#6&1c(vs(Y3^@kc4j#B? z;Z~0wPbzo(A7P4Py*=Dpi(OBNccDv}*h$BT*{0X5zv1OP{Affw%&;L4zxdSAdnZ1` z-H;K_1WR{OQ+{d8sbU_(l{u5Uzq7+IAL(P;n%q?y;_> zpvo_xwe-hI5o2hjQ>UA_mORzxyg`ssyY&qmlYwyUZU(OjAL^s*M8FT<3jbBq!v8g&DYC}6V^z0Y1&smZNS@m14sZRTQ;Q~J#= zoKxsD0}SbCeYgp9?T$76eW+zrR(o@F?RY2CW>>y2as=Y+6q*ajB`oHCa8S3-Kved5 zPG-Ro5-#fj0x0B6Bx!A>%oQy6WtGVONBr8BtDEu|2d*^rb@OHI)-9(W|Hy^JFmiNA z{gkq*!-zfxk%Fe281+1(sQjKV-uqTuPD%o>T!2jX(-KMC+Y6ntdZxf|j=YwB((C*w01Opd}?Oq>nk8>&Evyj@)Xe<#oAiX(QiE$w`V^Enz5&|jNlFtRXzj)NuH}MfugdI z*tnSDlt_6Kzo^btX1DS{bK^QYtL%-o8G66(4VtroSfIy4OVj5b(^`8Db-Vxtq*f5E zq@|9H;Kl+q@^ysHn!v_)+I67J8b&G}K!~HOgR+2#S(3 zDNkC_!|n$fd{phh?8v`Hd)#`qQc5o{)8$=i!-OUTa31>l*VG|i#c14>yfY0uSjui$ zem|B&yiHVFI_2)|K6Bg?>3bCu^qmM`iMdUYdcS*n{sU+Dv55nB(gK?*(jNEC*qoUa zFl}(#vJhC-rB8IlFZ(3PWr&yLSQf%4GqtcUdtjD`gNjhk<^uIYwD{A`?`okCmi**v zmew64Qq_ce%~(g5AAYIPm5~v?M1<&u@bDa7!1`?{iQdOB&bUvX8t*TyH9D=-I_Rg9 z-uej8PVTXM2hNx_Kbw#4Cz8S!*MM6Vkw&1NCdYvyVM@6Yf(}fAO>r6KqP_Z$rGxWT zb~SK){yu)MhSEQBObhnaUK!|A?TeJ0ThW%~#G~5QQ7pNsiV&~a=YyA&R2_X;^o-Nc zFL@iF`2fu64s`vFm3JJih_gdX4DmILf5CjT6r0ZV0-SicQEdg1g@!n3DCT}2(~ei0 z(kC~?fMRm7;p>OjW#jjG&c0n4sP&`*W-7;6{jXdU346fuAGW>GdA9yHfD?1SGKWnt zX$FDV`QmdO$z38@H`5BsHDQ1|%?H=}>~DZ{dlWo@g=6(^%^Ingw?igL?X9l%K!3Lb z=O)<3V(@V`vsu5#^cx!sPV9@3C}_}kVs1^vc>ok9r+6A;xtD>POHO$M9ha&ppBdL) zikr`Q4tVfP2JC7rX_#<3lswwl8aQ_YbvJR$^r0ry1SBhnODrt{^WKBz z$DRdIj}7}aiVNY5ZL4?788rBzM1o{~+C{dVgsFk}y`k5kD)@_fTOUjmta|!GkzKij zTx@3yvDrV1=4F!td*4Azz>krQ3Onwsma0P;0Fwu|=D5y)M3{##6mPGaC-%DCBylpn zBve42G&S8)3`#aa5+3e!HX+*XGblp`ovq$=&^m+VxwADYP9V*)IM5eX2m>Dk0?Nh! zos`{jiYJi#7TsLLCA~3hLnAlF8?rnK3SgA%-Dd7gnE}$0;n#p98KPw;kC(m7zxi4u zF4s{C1aJ^u;nKtcvI@0{EM|oLew^4dl7l`TnS73H7PG(%RSb(qEeRl0v{9E59#7)a z2z6T-8>uo79v7t(dodOV5{dOcqs&59(_?i2cy9f(2?7N4`XMqr)++`~ZohWsT5k?J zJKeS+Wr>EI0Ove1hy#OMMiRLfFLbb9h)eW4P1WP6t!y$wVU zoDxmvq6>FtDmFz9^_*yg_xAjLLH4Iz@))>8rVqx@Ea^7fLv5eWK7D8g9YYI{Xb3ZO zhW_$daiWa1wGgq*4RcM%nsDIW86WEg2- zDQrW)%11d(*ul7`rsXn^2%pAgl5jOVsLdMFd=zR@LH?(}e4<>!TDQDJkx9!KnAt1A zn>wPtA$APUjp)2YjEUlk&$>Jnr!EkDo9-iGP?-Q9HSZC3GEcP9Sst6v5jV=>$rDg8 z3;25p+2ldiFuW)`gNuhfk9Q6AZHgBgjfwmZ(lbbSYT!`m_N@3&SUOwE5$D5~I2sV~ zLAZ`uDFuQQ&7GQ<_e~}W8bB~$SbW2pxLs4p5+3Y5>?u?u+UrU5Z-%>ewyu3@Qf?zr#$2Y3kvjrZzgzmrJQ77CSI@ zh!%_#DW&cnCZ;<{%uFt@O2WZ__B{-%c?}{AO)+`mlmyu(Iaw1j%hL3FXh_V-!}A}D zW-T9n3kQy^ueH$4P>t}R;A};(VXhwt=jTZ7=Om?k&|^-@ymtJ*b@6sNYr}rOhv4=> zr2yD2YgD=R_!?t%I_iH{@wKX%|7|pm6=(W2BwzG4SA58rzx;tIGfILD>9F0H&WcJ9 zqfQx5t}6#Rixy3zq%QL z%;tqkUxdx{ZQr@Xn8Arc&cLfI)Bj(7&azF{Ys7X@ebrOB-YE$i#4G^ZPG_-g5R$CI zD%$YwAQ`e+rALdsQ5siJj z4P=#y7`G_M2P*Te%;c<+!tPpezJu}X;bR{lP)pOk`YTTiYfm=Uc&HymUG#W9ku@s0 zeVwtF#HSEPDA*-h=-b)j=S7)+z&y0Hsl?~OaQkx$2e^E>J?iFaGQhd;!m(DO*I{B) zq*EC$Uth^0o*f-9ZoEfM1ie8C8(xmwW9ulMTy3aYL|pW{re z@@OhSJh|J9F21(P2|Zd%2mZNeKPK{L)UnWk@t-*Y5-K1?at>D$16*I;T!NbU1M;18 zI5?Gjt=%NKG8h`|LuXg+T#^UvMMg@#SRzryutz*xO1luu_f&pKW;gcnO|7y*K^LQ4 zlW6;Z;vl>gr%WFsehOE;Cc_88t6_!=J_U)F>k_4kag(-rhozO*D>r9GvmXG?8bLF1 zJV%1A4Oja~8KLmb?%jNeLFFT)Nu=WvB+B#0wH|sE=y7Ihj~f`Y*5*VVaUTmzwG@(e zZj^kX1fUkQ*S2CG(3%cQu#}+qNsQq(NLES$HzzOs zAF$;o7Zo!yxb@ZDjfr+>j?6eP=7X;09AWMP;le`+Sj&s8FqzaqtW@gW@vG_yOoXox&$X_= z!LczB@ScSSQ=a!8-(}?{mp0|^rW)nqy&ppYuBK4`WJ>*RK`jV~@_a9=m!6MtUv3LO z&b|ZAgkFhT1Hae}mU)#vffE+SBAYn1MCPXx;vqsm4Cl@gO&90jn?>huxDLUjHtT6& zP+f=oQg%i<*s?ldElt?`iFSernEQy-i6t;NzgSAI3^&A;trIgwWsJgfo5Cj)j#$+& zo4DzHPu{7(@i7naTnx(o*zs)cicG)>!dPfN0O1KeK$cLgiay@(L#8m? z9yRnY=v-HoI0xz*U&RZL_GQ&^(`ZW1iNtXL5LAGlfbN&ro$*d@+XYXXG0LwU z${c7n@d(!#3+n!2OkL3XGyg&tjTIw75L?kp4l|Do?8$f~bOmm=K24jBou03k-<(w` zhTp`jFk39-nHcCGE&&yih_Kj!pzESe>&KY5=P6~i8BB`tiM=9B;#<0B&V4b|nPc`@ zeR+<7?Ms4LK&XB+i=J}x3Kg%-$U*Y!`$dh@CF#*jt}}tpp*c&Me~!V1vJ-o%WMGrx z`)LW&^0Am82Tb2)QTK`!CSDsFGlp!FiI#3>nqqBh=S%J~-Pz!75-jqV27`fc zEU|upr)s?C5f}WeB9tiGRc~9QB&H~@&(WX(2k}O}%x2>LJxGiQMYL9zW(3zuUk8PV zZnN%5igNr8FSTfQ&*(8Dxx4(=_piR@Ig_l48gsqEyUxLIVu(4OU_3hUQCm}2oip(U zI11w&a+RTtEeJYr@aU`V50!jTlNE>0`HdEO7_f+ZjMG<@{k8NeE_Ng(UCgyN<7Yjs@k_vc9>0jtI>wE}=R*zM-GDU=2_O=@uyXok>WsK4I4 z7F7Aa=gvXGL(CP4TZKI^xypd|r+IyAcd^tXC3gqu1tR?uq68o^JWf)o-mct$0;9!Y z%)~4+YK?Xb_g1iRKel#l>wNyMTSV!nN(MRYn~NT|uF4hnKS5?@ZXZd8#xmDFiBS2S zi&^-S0Cvij^deQyCLAP5_J4FnS=+is_EjgmO>;!-xB&XhLwWVR^j6CBB(RP%WoMG@ zS+QPF@v7|G<>5D8v_3$%^#F%5iNJtNBh7#tQj0}39y>fe#z0ELCaH!u5@U=v-tSN_ zKBj8jim=hW=DMW(X(x>vM;n6V7!ndjIW6E~2M%(GJZM5l8bdmmmG*^SP!K#CeaV9@ z{o*{0@b^9ntirGdd`DH51??wP^%-AxLhY?M_wBKPWHp9^b#XMH-4*I(wjMyIv8)j| zeH12#aP?~&HKHw0P^5(Y=|IFaTp5<)d_K*$*eg;Vznh)Mc1&zTE4Lv;?7>EuQ#Dpj zbCdJ131$cC@+D)NS0K6g8ltv5(wL;%aPAwuw?K~zTwQ|-~%vp`uxN4FpO z(EI3!Tj`ioB`pHzQwtDqd}VK&Bn-_6#&7dI5fV5Nz_w1wfIV+h#R0G0?pF9s5#(Nf zMNfj2$|Z9$nZ_8G0gW3IsNRa%*2za*zq30i9MvujK>)MEX6so*z~q@)60zuS<*m|C zTg{+Wof}a61hDjqJYII6g*=6slLo@J|n*uxKzz2q;v(fj%RgZmesIMp9=%3gtrRH z&%*RZ#pOQ(LwyIi_wD8V?7;kKb|$bj7UX>j5q^3?=T_E}X~|d(&hpDVybMnns-?k@ z;;dyXM2Q~)WE!ZhyssV(ZtJM`#pXc&{%f;@!kv;JzNnku98LlKVNdJ6EMCLhwO3OR zp8+3%_{AIOxM$OEpW{@UUPJowyuXWpoF9m-AZ5^8G$u6)r+jF8E|x-*X7>#p{-K_m zW`+!vr&)^>hgwNXv29xCG_K9xNH@F=WK)Yg#A0R!%LMXx*EftCk&PDqQ}JOO(DhRS z=%8uDSHrfyop>uGQ@Q2OCdf*!PbNh3=04O!*OUZ9;CX>4IOJViwtBU2wl~%(t@2*% z^i@r)5|V`cN8G%*l)gCYe3dgzckTz1?{sco{QXakiQKLZbbgX>rggi~JB8p@1i{0< zvuyqbd~nY9CoTwWUmXs|u;ncPFiLk@b4V&u{LuI`L@mHkB=^4ql=w;=13Y=Qsp*ls zWS~`mp*#;+xE<9_0v)5B?!Xa35^MYwv4wBSnY}zx(79;2bOD|5swC>5D~}xFMzB0Y z0gwds2GcW5kDAndE99_Y-x4DF=YYI7Nm%et5B_gJ2zOof!j9pYg*UaPee{@M57r5xVW^X)M2iIkVy-iI$L)%Z7W-SJ`N(MqypGNxULQvaa5yzE z88YBIeorUlG!jmRJz^}V+Nt3YR2U;s={oo+964{>ciU#+5-Dw{x#pew$_zVY(_Gk^ zSZWo~AxY@*P~n#55GSr2;vu9#QC0Lk~T1IOocu0UA_smj| z(MYXr2C-5Ld>&d3lnO<(UBOi6A&#^S`dF?G-AorZq;r)zKas%>&Q7#Mfq+k*w_Ul6 zgwJ8D@HlL$Q6ocm!L<5H1MBVdM_H)9~XCe!j<#}iR*Lgzf<>P4g3V|Efsaj-g^Oh~; z9-kuhlAY_cT0LUq2j2@AzO-WDqI~CAnElosM+w^-kx6IRVOuD5U;4p6507+%T)-&pIC`N7jab4=0vAb<|P-a-E_-X&+g^ zvdy}Ep%d|A_D08tbX_UkqWdmf#b1+}51x2IuAZu1zrLKPF)@pFaKjvm z;$a^MB4Us}@cFetRM$hF>_Us6=cp9SPRi)0L02a~=Ntf*o`FZQk^rk}JwADPKBD)W z(?iWP@%N6a;7caq8a7HNAX{D^f_5cdzb9Oo*%f`!gPn-xq7>=X1ie&Sz)+d5__~Oj z_w3Rt4XqMS^_aVl3>0ek(;(?3QH48Ord_5XGhFp5GW}5=wM{czVt=CJcD^(Xkj4;- zeT%V83Zq<+k^YD=%>1gQ^5@Z%h}dgJ9@FC5PksesNJJOiGwUY&3yKxb^Rc+M%e)e( zP~JqY#TOl?IdVNe&J`W;!Yo?#!1&m-ARvvm4GLehj_{)nBm2DM5?uFh-pE$zFmPd= zo!SNyJ=b2@y=KC)y0O(hJSxN8{1!kR>yX2Y7U|b4v4Xyh_2>4_$Y!w%3dAFW1hoSS zE>q)-Dh99w{{t5+Xc$h_W|pvrT{MtVfPLB`JCI8|D#u;g-)B}9hi5K- zmRY#M_4$ud2Iffz*RVjpM+JBv9c2@);R9Qhr+I_^g`rLcjxnGF;Iy0(TRAU@OqplQ zDtNJo_Jt`^k}KI95c*wX=;j{N(YF7c&N3sVDGJKfm9*BhUbGA%CB@m&Ry8#rqyIio zcx=f3*|6t~u(+I?wsxNq6Ex;h_6$}9orn24a23qfHFrD=rwy&@o|4kwb;SJ;?>F(x zeWSG)j~mY^;icy;(pb=rN1xQ7gK-ze9Vj|WdI_2sC9RjH;lNGE$d8-MW91j5NxpFm z-7djnTAs>>?@}X57JtB%u-riNtv&CFQLuEt?Y$eLnI(G0<#}7HFs(Utmt!^&a>w|*nAi_hKl%Az*(yIp*xQBt90s;{YC8OW(3;7_nBDwKaQw)_@wa1z&if33& zl5SY1M7?(BvYt5}39T)Xjv7eyRU<&4h4UsYFsa=p)+t!5iZG6pnkyIUV`G=Up7AP# z5vM@l}LmcNri^tQ_I~pt8nFKiH1NFV=sCQd$7u zP{y-#aB2|-b0Pg3l~)Y0K6aPFcTnjXju zdrS}SzKhQVHAYa;+-l?pU)~2*O}~TKOV?f87n9itWov@j0>o2&!$>qj^q_MR{X8zw z_Y_Dqg*L}%!iNP+>;)mUJvGd#J}0=8<@Rdcm5DKUOED}CgowZ*)I!C=fb3nVlnBtjQj*+fl3Rp1>crF8%rF3>R+fB`0rP}w5KWt*eJ+76WIZ_PNb<>!bp z$cM7@Nt3nO;RgmgGo2BI_?DIFVm6*A91W0X_#xbVf2~b=4`dkJ9U&_yyQLAZ^Em{N zGp`#qQK6z5A{ZOx#kTq{aO0GQ(${1ZN&?Gl47!&aSa2l1B1=_6h)TpsCADLqFjrND zRR*}dG^By82jy;|KLPALxt7{?5t~fQnzLYFkOR*ik_1<5Jr7qV?H`*ZYM|Kf>~bST z^XKf(h#7Zb!`6Z-A|#_=Fo9!f{+pB&3@B~2r_9ZhDIAf@pJAvGvtb#cXlOn{?`sPo z|9J;@+LF71Q&h+c934ZFcTJlS1qDX!t>x;Dy7itOdAjUxzyUkOcuNl9vAL0H7Sr?5 zX};U%c;ID%M?Pw^LVnOwORDf!={}!%#!>_RexecYmn*3ueCbx_EeHg6J;-0re?O*0 z9_T1e&iWuqNd>{y`1{*ZRf7af^Qh^APTBcQ|LO})qPt&D(!-4o_hJjPeg zG_?wxDk{ZBKdgmf0ctj9{-2^OJ_wV=gQT~xt#YYJP&j6|STM22rVh<5N@cIK95*!8 zBKf8C1{qe*YO1Evy_-VG#RG1ec;aR_R8c3nK`u&5-OOo4kpLq!6vS0P>O<)SX|3f( z8BhLmWdVo4l|jk~6sRT%%1`3W5)>-sxsr$#s66M-Nmdf7Rmq@q9>03M`4Dyd`R|Q9 z;%XQx=io837$V0SlTqXp6xl_57a!S)@bB&*I}k3En8~`_usFre!qq2uuW^om)~*hx z*#CC2I?)G^^0@lRI?*+6yX$&T`B3;Z?#=PJ5TBF`rmD-(qJEwvk@#~wp+OcY@?k#GR_Ekd_wz2b=n+P||^+jHGmc%gpvIYm2MOv@IBs1tps6)wFEw+Hg+ zPYX930ZwL|(m5+zI@zG!8}<_+nu=XJivT3)wCxGP%M;=<1aq&ZVm?X?>Bw}6;MmbH zwfcWS*G?-X>In05v4c7BbZa0XggjAYQw_*@q#4;fppoajCp*rh-t(O@t0ZPO;q0VW zb1GMe6Wl+!K$h`q9zQ2UrfdsYY88LX(W?KP>QHhe7{}r6>rT2w89Y7s5=4rP0Vc=+ zvKw*Tkb=+fjA|%)KrkYepKiuw>FDy?UrI>+`}D{N94@~F&CP}%9%EgBVik|ZhxlxE zti2O~EusKKea|9HNe52vNm&cTH46RYh|1^h957m4K+ z6sgMzXt6H)=&yf$kwP0pxM!7O#F zK~|1~x9@25hHeK3C}+2Ps2C0G1FEcP=Q-Z{S6f+ciH@J@A{ES!q{4IQ{Zw$%kZM}; z+&z;^K=M0)+Mz{ApX>qV{~dQlKTCYg|;Gu2RG2J;Nb)(^>SxL7o(S_~fP zC%!s?7)BQFHGUlvu|CD>6imJnltMteQRnc&1FP^+84E4QRAIu zB<7(~G&jsN>=GL~hSnBC@jW3=UoJ(5qPIJXnu_X-}U zXuHPg7N>lvi_EI_A>}M(cBdZ#`BY>6R$jw~43Hr9OSL5qbn@!=QnUUDZeg1z7Qiw@ zFQdQq0VTlaWW=F^1v7ZEs2Rw8{Lg#;Y8x0d6qquhRj$%?TEJ`*msq1R zXuWFbl&N_Zgr=BfE%D2BT#8$C@v_>O!=~zJ6T&6TEO>XBaRpax2A;ShsRX*z2@r}! zt;RGSRlh=iX92HFCwectCX1l7kGhkO7M5$;iGhyXP~36d{+HbF9oer|UUwYrX?rg7 zte|;=(?jA63uYoxQdD#**m6;U;6J9CLu(3>B^A$bN+q{4w!GAK_XH}sazjv6Zh8kv!rVc@{rb|^6 zEu!rgSRN7zv6$6t7uO*axPm&DNWeFUm+#uCsuEJn0^W7A6bb6AF9KgtPP87ExL=(L zQkbhN9_V#uX9%H3<}BZ|orVk=}#Ttt)_!aMD~=fY516ALl<^q9@K_X%!cbuLG!xFd<- zZU5@wBYz#3de)HAp96M5zwe9$52yO){NzjFOu>gytAtgoBrb0F`(@j=&KG^w3J>i+ zVKwchHDVx+wBcK@VV+yl7SAY7(&_Mo_KUrKQ{%47ya*VA8v;b`(D(Yf>XO7e2?oeA_rqtAO>-Z;qwGAV|wK zC0oSp0YoWf>%26f^8>8(v6PLnn;T6MbR|GW48kd}Hz({h)qd1nYzOYX+k(_Z$p#OY zW#C|N*S3?BphL1ps(WJUKZ$233s|fhpP;EQUlH~pS;P}dG1-2ZjgODeDM3T}9L~#z zwMhHOJYndza9T7QJnIL7lahwYa+mUysV+8h>aMG7C7e=@tT5*r=sV!snte6~;?K3^o@OFB>+whigsr$(QB0 z&^;~22<;WW@>5~)hIKI((nqi1hqui>6r6U1S6>)qbzJJNkPut z+*+mrkg#Qx!RGo81o%O3ax-qWSWG<`^H#4s=$YVhMyfD_^M-pu*iVB6M?ZSAgEMK?-6GInj0PA0zz$vt2@NMqO!=G}8XzTvTx?95nHTHiph zVDz~_xj&$0WlbErGqt3@MK<|AXJ8uB5B5}(`S``BUnZC}5CeJE*VPKtlYj;Y(`)|)q zS&8}o=h&|+A3_Xx`3o*AD)iBfa0BWOnE3soF+3ZCppYdL|@+)(3MMG#h*ItG2gtRSN3 z2XFPJK48IzDeYhB)pBIea&u)U+M^Su_RW^HW=v;Hb!~8cWS6cf_}PEdY3POtVT^qO zt_hG6NsYPZsxRU%>sJ%6sK22J*nc&IOWvk|0=k_Bo?c_`S-?N**ckfPBP199;8F2vYKK5IcdXSu1b-1^vScCPPsS!}%}ng@hgPCY1vg zO;{CUcQpP?_Cg~0UvkK=%>-d6+XvG~b~g{Lb5XF5yRN0(BI$a{hc4zb!&?Z)Dis6rL*S(Giz7an+-tXdLu1;iz6IfU^}hp8Ecg8<;9;Scjt;X3hy#vF-C_6t#uq0&+dAJ#Vfs^ zcJu=#(}8b<E0#(Gqo*Q3=wW}g^rwpNzF3(RtG@K%j%-(gT>tfp_@k>RO+)|E?9-Xc?`sY=jJ0mc!od z?V^`u9*#RlHsWCDC$S{IulqI5-R;_fO=W_n_#VkCgj(B=lwm?3gKL5^M2lrazhjJl zk_NhcLZ=9-+`3luk~u5re}nYXu-)+{MA*}(WVwqoHsonF~JkD8E+&oKX4~_m=m^7Nbb}0As)LX1+ zLbUsJcz5;JRCHKSx`KcexKz5`A=MXcO+xI}79=e(Qf!nB?(Y=&H2W|}xQYK|a^(sI z4Ho+=qYWVa2~PZ{*U!ojEyj#d!p`+EEvneWb@FSDw|08|)+Z+>9mkE&j(TI-4X7>@ z1(!FM2y1*N^Z9hm&zh&)dtPD9O;c{=QgYXh5mIO6><9NhA zbvF9`=G^DNObYqo>{fAZj!4oefUSy=V^$-L}v;;h4LhfmslR9^+8FzK9&f&?AP;A*SE`R^@ zgqKJNu~W|)!)HMTo zAWeFRAK;d3^?@N)0~=#I4eAH4W=~v8YH9f_NOLkBuhEcQI7wV?lJS%!{+(Mymn<%7 zR*pU!OD#LAHY-E6I)@oE)*eb9#uS#7Wm1!R0UWq5&UiiTDxrLO>pcw_c8M^sNE1Bn<=ocT$4d4~eqjr(ZoVp>eJRy7F%4amf+)Ds-d@fqSl zMbjT})KJ;)5+qtXG%H!Hi34``&p)fv|N17+CdxqMvVjHA;ccAbk6%+C9;OOPa)!P@ zPGqZr%i?U&Pkb?|MdSoLI!GhU3CKuJ)g=^xI#9Na00{JQpb6mRi5bkW}`|beEd3}rVwx5vgCb-qU8iUqBekg z?W;xS4b14(RYL!@u@^LrTVX917n#6#(q8CiTYR0aCc2d8-khbDh#gyNDD$zB3^hbk zUW+K~zYHBfMyCMSdSS@{Eo3jY!lav*wz24$MLxpi6`-YSE_45TXy=5x3;i;Ew?%%a zC`3-EOgX3#t1bAfbdc06T{Bzk&51WEW>}=wS6dO$r-iNifQbzhKxohWYTi_&6o;Mw zKQ6+BDIXjmb#4%ZrUVu0jBb_AiC}%zI1NzdusAuxa!qk#js0&o1(Vcgo znM$hayVB`?-%M_mLP!D*zZaazEp2vQS-3VccLI7bnM80qag^qjyDNf_nc6oq`6f+# zd{5hS5ei?hr{Z#P1%F7Hv9(>*h;zq(jM579-(HfX&T4derQG~?W96ZumKu*ppU*Ui z-Kqx7tRUW=S|2EGgwko>T+H&es7NEEpu`^27ryhUq){>8q871A#ECvpFB(Z?OKVS~ zP{G9i#5FKeS4o|OVGXeV4MHewcEv*&u{_rwBO1_Av@N$F5s0n9E-Y;NC%v9;MG0ro z(EEad@WUqTTWH~euW1{2RwaPiSMkm2RtwXqvy?0C0g~9#M@jT8gU?TSa?;JUNdN@?A5g zU_=RYbF_(=?5pGM!3MnVl7X(BwqBNHQDOaYRK4JTnUFt6qCy_H&HAFgVDmnCr$3%8 zmLm1zm@+RNKdd?$tpmBcLzgTIU1o&kQceeBiS`v6L(U81$+3e$r-hRI{a8V zzwLovxyT+Ainwu??&1uL)7hTdgKUB%?gvsyj2a}NBN1ULFm6PQZZ}kH55iY)vO;jp zA{t+B=w&53T?J literal 0 HcmV?d00001 diff --git a/MikroMaster/20260608/20260608130002-Config.rsc b/MikroMaster/20260608/20260608130002-Config.rsc new file mode 100644 index 0000000..eae7ed6 --- /dev/null +++ b/MikroMaster/20260608/20260608130002-Config.rsc @@ -0,0 +1,3595 @@ +# 2026-06-08 13:00:03 by RouterOS 7.23.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add dhcpv6-agent-circuit-id="\$(INTERFACE):\$(VID)" dhcpv6-agent-remote-id=\ + "\$(BRIDGEMAC)" name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" loop-protect=off name=\ + "ether1 - Unet" rx-flow-control=auto tx-flow-control=auto +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add disabled=yes listen-port=55982 mtu=1420 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys 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 +add dns-servers=10.30.30.81 name=reg.vados.ru verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-client option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=DUID value=0x00030001488f5a8e1abc +add code=61 name=clientid +/ipv6 dhcp-server option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=CLIENT_DUID +add code=61 name=CLIENT_MAC +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/672/7cf8bc7a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:04 06.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +add dont-require-permissions=no name=IPv6-Settings owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + #############Script Settings##################\ + \n\ + \n:local \"IF-TUN\" \"6to4-tun\"\ + \n:local \"IF-LOC\" \"Bridge-LAN\"\ + \n:local \"POOL-6TO4\" \"poolV6-local\"\ + \n:local \"force-update\" false\ + \n############ use then static ip #######################\ + \n:local \"lease-address\" [/ip address get [find interface=\$\"IF-LOC\"] \ + address]\ + \n#:local \"interface\" \"ext\"\ + \n:local bound 0\ + \n\ + \n###############################################\ + \n\ + \n:local 6to4prefix do={\ + \n :global dec2hex\ + \n :local ipv4 \$1\ + \n :local ipv6 \"2002:\"\ + \n :for i from=0 to=2 step=1 do={ \ + \n :if ( \$i = 2) do={\ + \n :set ipv6 (\$ipv6.\":\")\ + \n }\ + \n :local fp [:find \$ipv4 \".\"]\ + \n :if ( \$fp > 0 ) do={\ + \n :set ipv6 (\$ipv6.[\$dec2hex [:pick \$ipv4 0 \$fp]])\ + \n :set ipv4 [:pick \$ipv4 (\$fp + 1 ) [:len \$ipv4]]\ + \n }\ + \n }\ + \n :return (\$ipv6.[\$dec2hex \$ipv4])\ + \n}\ + \n:local \"str_replace\" do={\ + \n :local \"str-pos\" [:find \$1 \$2]\ + \n :local \"str-len\" [:len \$2]\ + \n :local str \"\"\ + \n :local rest \$1\ + \n :while (\$\"str-pos\" >= 0) do={\ + \n :local t [:pick \$rest 0 \$\"str-pos\"]\ + \n :if ( \$4 > 0 ) do={\ + \n :for i from=1 to=(\$4 - [:len \$t]) step=1 do={\ + \n :set str (\$str.\$5)\ + \n }\ + \n }\ + \n :set str (\$str.\$t.\$3)\ + \n :set rest [:pick \$rest (\$\"str-pos\"+\$\"str-len\") [:len \$re\ + st]]\ + \n :set \"str-pos\" [:find \$rest \$2]\ + \n }\ + \n :return (\$str.\$rest)\ + \n}\ + \n\ + \n:if (\$bound=1) do={\ + \n :local t [:find \$\"lease-address\" \"/\"]\ + \n\ + \n :if ( \$t >= 0 ) do={\ + \n :set \"lease-address\" [:pick \$\"lease-address\" 0 \$t]\ + \n }\ + \n\ + \n :if ( [/interface 6to4 print count-only where name=\$\"IF-TUN\"] = 0\ + ) do={\ + \n /interface 6to4 add !keepalive local-address=\$\"lease-address\"\ + \_mtu=1280 name=\$\"IF-TUN\" remote-address=10.30.30.0\ + \n :set \"force-update\" true\ + \n }\ + \n\ + \n :local \"IPv4-TUN\" [/interface 6to4 get [find name=\$\"IF-TUN\"] lo\ + cal-address];\ + \n\ + \n :if ( \$\"lease-address\" != \$\"IPv4-TUN\" || \$\"force-update\" = \ + true) do={\ + \n /interface 6to4 set [find name=\$\"IF-TUN\"] local-address=\$\"l\ + ease-address\"\ + \n /ipv6 address remove [find interface=\$\"IF-TUN\"]\ + \n /ipv6 address remove [find interface=\$\"IF-LOC\"]\ + \n /ipv6 route remove [find gateway ~ \$\"IF-TUN\" and dst-address=\ + \"::/0\"]\ + \n :local \"pool-prefix\" [\$6to4prefix \$\"lease-address\"]\ + \n :if ( [/ipv6 pool print count-only where name=\$\"POOL-6TO4\"] =\ + \_0) do={ \ + \n /ipv6 pool add name=\$\"POOL-6TO4\" prefix=(\$\"pool-prefix\ + \".\":1::/64\") prefix-length=64\ + \n } else={\ + \n /ipv6 pool set [/ipv6 pool find where name=\$\"POOL-6TO4\"] \ + prefix=(\$\"pool-prefix\".\":1::/64\")\ + \n }\ + \n /ipv6 address add address=(\$\"pool-prefix\".\"::\".[\$MAC2EUI64\ + \_[/interface get [find name=\$\"interface\"] mac-address]].\"/3\") interf\ + ace=\$\"IF-TUN\" advertise=no\ + \n /ipv6 address add eui-64=yes from-pool=\$\"POOL-6TO4\" interface\ + =\$\"IF-LOC\" advertise=yes\ + \n /ipv6 route add dst-address=::/0 gateway=(\"::10.30.30.81%\".\$\ + \"IF-TUN\")\ + \n :local t [/ipv6 address get [find interface=\$\"IF-LOC\"] addres\ + s]\ + \n :set t [:pick \$t 0 [:find \$t \"/\"]]\ + \n :if ( [/ipv6 dhcp-server option print count-only where name=DNS]\ + \_= 0) do={\ + \n /ipv6 dhcp-server option add code=23 name=DNS value=(\"0x\".\ + [\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n } else={\ + \n /ipv6 dhcp-server option set [/ipv6 dhcp-server option find \ + where name=DNS] value=(\"0x\".[\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n }\ + \n :if ( [/ipv6 dhcp-server print count-only where interface=\$\"IF\ + -LOC\"] = 0) do={\ + \n /ipv6 dhcp-server add address-pool=\$\"POOL-6TO4\" dhcp-opti\ + on=DNS interface=\$\"IF-LOC\" lease-time=1d name=\$\"IF-LOC\"\ + \n }\ + \n :if ( [ipv6 nd print count-only where interface=\$\"IF-LOC\"] = \ + 0) do={\ + \n /ipv6 nd add advertise-dns=no interface=\$\"IF-LOC\" other-c\ + onfiguration=yes\ + \n }\ + \n }\ + \n}" +add dont-require-permissions=no name=IPv6-GlobalFunc owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global MAC2EUI64 do={\ + \n :local EUI64 \"\"\ + \n :local MAC \$1\ + \n :local HEX2DEC \"0123456789ABCDEF\"\ + \n :for i from=0 to=5 step=1 do={\ + \n :if ( \$i = 0 ) do={\ + \n :set EUI64 [:pick \$MAC 0]\ + \n :set EUI64 (\$EUI64.[:tostr [:pick \$\"HEX2DEC\" ([:find \$\ + \"HEX2DEC\" [:pick \$MAC 1]] ^ 2)]])\ + \n }\ + \n :if ( \$i = 1 || \$i = 3) do={\ + \n :set EUI64 (\$EUI64.\":\")\ + \n }\ + \n :if ( \$i = 2 ) do={\ + \n :set EUI64 (\$EUI64.\"FF:FE\")\ + \n }\ + \n :if ( [:find \$MAC \":\"] = 2 ) do={\ + \n :set MAC [:pick \$MAC 3 [:len \$MAC]]\ + \n :set EUI64 (\$EUI64.[:pick \$MAC 0 2])\ + \n }\ + \n }\ + \n :return (\$EUI64)\ + \n}\ + \n\ + \n:global dec2hex do={\ + \n :local hex \"\"\ + \n :local dec [:tonum \$1]\ + \n :for i from=0 to=4 step=4 do={\ + \n :set hex ([:pick \"0123456789ABCDEF\" ((\$dec>>\$i)&0xf) (((\$de\ + c>>\$i)&0xf)+1)].\$hex)\ + \n }\ + \n :return ([:tostr \$hex])\ + \n}" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/ip smb +set enabled=no interfaces=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 trusted-dhcpv6=yes trusted-ra=yes +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set use-ip-firewall=yes +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + max-neighbor-entries=8192 multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + 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 wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add default-route-tables=main dhcp-options=hostname,clientid,clientid_duid \ + interface="ether1 - Unet" name=client1 use-broadcast=never use-peer-dns=\ + no use-peer-ntp=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4,10.30.30.81 +/ip dns adlist +add disabled=yes url=https://ros.vados.ru/dns/vados.ru.local +add disabled=yes url=https://ros.vados.ru/dns/30.30.10.in-addr.arpa +/ip dns static +add comment="Local DNS server for vados.ru" ns=10.30.30.81 regexp=*.vados.ru \ + type=NS +add comment="*.vados.ru Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.30\\\\.30\\\\.10\\\\.in-addr\\\\.arpa" type=FWD +add address=10.30.30.81 comment=NS.vados.ru.local name=ns.vados.ru.local \ + type=A +add comment="DNS ns.vados.ru.local" match-subdomain=yes name=vados.ru ns=\ + ns.vados.ru.local type=NS +add address=10.30.30.33 comment=reg.vados.ru name=reg.vados.ru type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" 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 match-subdomain=yes name=mikrots.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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=amster disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=10.30.30.30 comment=miller disabled=yes list=NoWG +/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="ether1 - Unet" 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="ether1 - Unet" 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 \ + in-interface="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ + dst-port=53 in-interface=Bridge-LAN protocol=tcp src-address=\ + 10.30.30.0/24 +add action=accept chain=input comment="udp Accept input DNS queries" \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address=\ + 10.30.30.0/24 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid in-interface="ether1 - Unet" src-address=\ + !10.30.30.0/24 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=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 +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment="udp Redirect DNS in NAT" dst-port=\ + 53 protocol=udp src-address=10.30.30.0/24 to-addresses=10.30.30.81 \ + to-ports=53 +add action=redirect chain=dstnat comment="tcp Redirect DNS in NAT" dst-port=\ + 53 protocol=tcp src-address=10.30.30.0/24 to-addresses=10.30.30.81 \ + to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" disabled=yes \ + dst-port=2904 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru disabled=yes dst-port=\ + 5000 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" disabled=yes dst-port=\ + 2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=TRUSTED to-addresses=\ + 10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=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=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 dhcp-client +add add-default-route=yes disabled=yes interface=*F rapid-commit=no request=\ + info use-interface-duid=yes validate-server-duid=no +/ipv6 dhcp-server option sets +add name=domain-search-set options=domain-search-list +add name="=\"Client ID\"" options=HostName +/ipv6 nd +set [ find default=yes ] advertise-dns=yes disabled=yes interface=Bridge-LAN \ + managed-address-configuration=yes other-configuration=yes pref64=::/64 +/ipv6 nd prefix +add autonomous=no disabled=yes interface=Bridge-LAN on-link=no prefix=none +/ipv6 nd prefix default +set dhcp6-pd-preferred=yes +/ipv6 nd proxy +add disabled=yes interface=lo +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set check-certificate=yes-without-crl +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get 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="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260608/20260608130002-Diff-Config.rsc b/MikroMaster/history/20260608/20260608130002-Diff-Config.rsc new file mode 100644 index 0000000..0f55b5b --- /dev/null +++ b/MikroMaster/history/20260608/20260608130002-Diff-Config.rsc @@ -0,0 +1,23 @@ +80a81,82 +> /ipv6 pool +> add name=fddd-pref prefix=fddd:2c4:2c4:2c4::/128 prefix-length=128 +2587,2588c2589,2590 +< set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ +< max-neighbor-entries=8192 multipath-hash-policy=l4 +--- +> set allow-fast-path=no disable-ipv6=yes max-neighbor-entries=8192 \ +> multipath-hash-policy=l4 +3254a3257,3262 +> add action=accept chain=input comment="udp Accept input DNS queries" \ +> dst-port=53 in-interface=Bridge-LAN protocol=udp src-address=\ +> 10.30.30.0/24 +> add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ +> dst-port=53 in-interface=Bridge-LAN protocol=tcp src-address=\ +> 10.30.30.0/24 +3275,3280d3282 +< add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ +< dst-port=53 in-interface=Bridge-LAN protocol=tcp src-address=\ +< 10.30.30.0/24 +< add action=accept chain=input comment="udp Accept input DNS queries" \ +< dst-port=53 in-interface=Bridge-LAN protocol=udp src-address=\ +< 10.30.30.0/24 -- 2.52.0