From 6bc5deb4770fa958b801361340d79fd1bcc8ee20 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 16:40:45 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 16:40:45. --- .../20260509/20260509164002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509164002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509164002-Diff-Config.rsc | 16 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260509/20260509164002-Binary.backup create mode 100644 MikroMaster/20260509/20260509164002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509164002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509164002-Binary.backup b/MikroMaster/20260509/20260509164002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ea6604e5ba824666315d764e45f409f779af2cae GIT binary patch literal 298264 zcmV+aKLEh*sF8CRjRXKBr-HFP&K?35tc4>kE3_s6000O80004Z`T(2&Lur_uR*s=n zy$kjVE9UcQDR05-e?|(AKgTp!6V7tn8hzjLN}0BD46MX%-}39~o+Kr%_uK9y1uj_} zl}g?(A!wG^c57{{UfzGL03eT}y}Pj!t??dKA72iAtnaS?)T%3VcO3bo=agZaceagm zlSgx{5Cb5M5g?+4C%oQVnn}C>+(i53Z(tR(``hEIT%Th zj8gt}@BEqDTp~A;=Z9==g?id@L2Ah40<2&2C62t*)Aa0b*W7b^MqA2Yy`BoidDWBi zULswTV~*$Jv~kY0Fp!BZn3OWO(EJo;X&VEbWLezri2uxW9k0pVHv61Kr2GtZ=qe&) z!E#S@Z;fsg4cabB$>@zoZ?eWNF7JbX(#Q>kJz8W?Us9pq37+2-lX);H{n9 z$ut9O@q})tRo;)PRyQIL(1i7B#|YCip_zEwLl}2D>`@@$mbux;rrZD19l)ayR+1F{ zq~ydvl4n$~L2uDRh*UJnPNT)8Xywy&?-?|kOZm%d=$l#g{C)_N770aM(W3p@CPfxw zv40QtB1w2c(_0*xOA#Z9K3iV88C#_r%3sTa6fri$5SFK&KoCNt{!Ir@Q{(RbaO7Xc2dZCq+|H^?^rh;- zY#H&+){ZTGESS0a8G|h)i9;oPg`E@Q=6TSyFBBYX-+9B(lq%H$3>1Q? z-rS3rw_+@XN@e$7>AvWdxgWr#W-DgZZ}2$sUK}2j`WG9-!VT><`FX*fck*f(Zz+F` zbm9h)VKch9Tam9C#A|)<%{iW@>E|jk&@o<^NA0aps6Tq;lnPMbbRxHe^mR2b3Je>X zJ*W^&lq5Qy80!x0S!OtWm5;?h+Z4UN)3hT472cScnY;JNbvEy0-`#F1qY2II=mKIF zH{;r?yVym)XP(_F4sd;^0*pmd1@bej_Ri#6TDSMG5bWg^n?wL8(lX{Edc2UDCBiyl z4I?>wuquRC7!KcJf%uS;TdylHG zwOtv~;OjqAM3&_-d1Nep4S-W>h{j_Y;kCmXeSJL*eizA8A}(d9$`t}SAP-LT;}hWa z*DRbWG5~?cl{C$=xskWMeWzs%k%aDGk=BGAtV0)}$Xv8rdqPd&Qmt+R>m6SRZ?`!f5mmN5K*uS7rvJVqfi z0d(xD^mu_$fN#w^&$oEN{Rky~Fy6;oe=U?Vx8{og4sdR4^6XrThpVG9v;ERy}yBu5TL@A1sP=-7_Qamz068G=G~X!n&eYNpx6EHZ~nrtPMdMn7#|O z)Fk<{sa6Fh<-RWez-{`o`lBz86AC%ghQpJ`LxjJ`svMOY>?_gBV2Oi#O}6GS9_hu) z<>{lC$4V?0C}9Z@9%FfUEOZu6xB98IWelJ-Tcow@oqY1%d%?>|BRF+zQgNuXAl8L; zHb)O-0|X+F`ker`;*~z&5jWG)q8SF2xlOzB`A3?YuQLU0O2~z`4LJe3O@>^RYc0Jv zmSyGi608l;)jD>>(tH3oI>XhPA5w1SLOPydfgeIQ57?w&iwt;dM3qBXzh&8dAj}O) z5>HeW(Kx@4?Eg8|5Y1rT`(mihP71;@;~{G<@sR8}-`a%b0|y4Qh!sAFPDLa1g033w z?fxM}qyGXB>qCU^<4#uSSn4LHBh^E>0y3#b9?b@$#^hzQMMx5M0}wN)VY9~4+9QrI zWpJ{NB5DyarPx1xIJz4)S9%%;$-{&z6aTU-#r>hw`|oK9y*as2Rfg>HUxkaS5A7%t zZ*yP3T()5uCb8S~cI>XD4H#y%cr$!jHBZGWf4lPiZ%Vh;${r*8&!edd)F3`>r1p>W zas*P=5z4=I4@YW4gbquRA#SiAr?QO{IrgY=8CkcJh?ol`tt__5fy|>f5HReN(}rWph(k_W0@ug8=<93@3O_7o3}Xj=-7KIbwvg&PMUu z&?XJX`EQeuQXs`MqWM>P)K$tF_Ze+Trqp#%Zn6!<;!uSx)kth1Bs3Ljd41XJg*i?5 zn@TKzD#F7jqz-hS@a>m&VSCK#072CQh+7quWogMKv=kWxXwG+CCYf5Wm>dc|hBa|* zP9~Z*PTqm*HBaG%Rn6Yr&Z>!D^`q5N9s5VK?1#&xF<&Y-$Y&Btt(;08R#CqRNw3=O ze}$sj6VeJ93vS;^b7YKWDmIPcn9y|kd)vL<1$5>MGV_Eq`S+?vuQ==!31!w7o9rmm zK?f3n2Ct9GFuO?Lt3!CsYGA$iAKcX4&hrmgzGZ#awNjOol4?o^VzHcdGF@EL_kG$l zxTv7~g!{!Ya>;B+C8W-pAgDGRNRX;%#PVJ>y{ZV{{0pb}> z=aT*&Io(GW2%K)>H!f77BR8F`p#R?9zcV9ALq3w#XcYd}9kyQ;@xS3b1k;o?o6yqu znoZb*Ei)I4@=)}!qXcFpSXU*Sk}w(-W)5LCOGxgQQqXm{+oDi@FEvIantCnN3`f$wFwD&VBzh2AuWSG(3vv5de3EZMqZ!*xu;r~srDXk-A< zyrqt4>IluPPT##L@(KN11cU^uvR5oxfuC!OQj?XUTmWjx92WpUeXBVFPcI}E?#a9n zAw@HjM0$_?HEfEvFWh0a#UMGN;mIbQV^r%+5g%979o)wduI^7#1e~1DaPeQaMb^ z$;^_QLlWDS!tYaqivq!iz^1dw!>m-%aiW@{s0)_H&lg*a+OKx3cX?@M;`EodyFZa1 zb8P`>L3h^Hbwe;y0c3Dnw;xbg;V6_!)z!c`#S;9PJldrI|LfH^Hy&P{GthwkTH!3m z!jY)fxFy?ipk_5AfpJsJ)q`f3)30hZTELOdbVp%s_95jsK`Vok6uH<0gOk? zq${qhOD{8c^P~;fY!k5CRCutl;~e`>8UB~dSHrK8=Z51W&Q93Zi=U;H%|b`v(l5wj zCQ1s^8pz7%$t|E_EJJ2FDLtoWs)5M{1m5wlQMsyYo4lCeUTW zDnZfF-Lav^Bbd5XGI$konjYh8Eq+hpdNn=WE^W}iz?hz5s`KcNr_WTa*qx8df-eNdGme9hvm_$qw=_D2zP)0Ng@Y*pM&!jAoO% z_(XN=lLmf9JE{>z)DGP_UXK=-WdP^?BbT>Dg#a=5kShtB>qsQRSBiJ^MOv>kWX?eb zS2w0UT3yfuTg~ZPnIKf6YfwR(nMq+m>JV{tn8-ghGmsM__t zy0tfF3Bl?m39CieFJ3?!E7?;yk4J64d(iHJpp^LPwCb-b+TiQjN3$o_f zIwv@B;bBih7Y;~;vlI{M8&Bbc4(N}~e_fHv*>4qXec`U=^y%Krs&il0mVF?skhCx0 z!jS@p!@R9AsflGP+XOA^nq{=5tiM%m@3B2Lww7KKOs+SfLD<`UnXNlyWO5IcT*#1< z6SoB(h6c1UK3|$hpNKK)AwJzxj!=r4k9tBMht-s7y!F$d5{E!U-*4*JFykB$IN+X5GCHC@JXIOF-dF|VF*aQ8S*n{8?PmQoM9KvFtLhk_%rgL$~L3z-=>l#cVH_h~%7=&{Lgtrp8KbRd+DIAC9F%zDgw9 z@=HLXyu^)EZ|kb2JbdE(96!Ne8lX=y;r)ItQow7M(CveRfNkmHlGT!VF#<7xnmtV4 zWIh-jY~D!kkwS_HY!jBIUGAF_ck0zo)XVQDg*PSeLfT(qZx%|w0k;IleVifAX(?e5 zNqtATJy8&yyP-RUV_AH>N+kRMBnI!I8rY~v1`qKSM=7^UQBKhNOy7oaBri z{g&~rt;M2qiFUF&J;ZXrmp|P)jfYhKcA|q>IKhEHp7u(WFw~-DAg${fALyJKhKLe; zFfEMV+wnA*cahC#B@iw1G~ppDnS>7AIABmz9XFRN3>N866Bl#5(>;>idwca4Q2=k) zl5P>@+o=r5+o}R)N<|$G3ADt}Dxh5fQy)M*^98&~6L^SCmkKQuv_&zf;h9(L7Mi4@ zIbj?{+t@U#EfR~i!`MxM`wJ$-9}_A=^(-+iA2}X7``kz_AA;X`Z?LVR)?m2q{CLtyigC)M82bB~ zc?(OPocmmBR{(!Xa}Y*~5EDDG^QZv-qd#px=7gCV(=&;n9geibR+{x}hj+R|3c%7S6Jz2mB4BWEr7>3G`>!LTIXVnmWbBWG$R7{|zYlr7TKm+gi z=sEENrU{(Q8Nm3;Z58>tPzeJ@Njmc8_o~N*_ee3qd$6R^P>E+Q5se1gg-%a&j{VyX_-SwXxxIV(Q3eV zzE#twMvFz&x8(|sa)ip5Dj4B&y4xwgMCw;sT%y9S5_8)04a&)dCUi+*NBGz{cAR#7 z7}9z^H%p(_3|wa4eOA=r@4_mTgf{>UC*}eB9$-bRx`Y(3F$eV*y^$`qbz;ETt?eiNsi3l%6sd1$Ie z@21mE;sA9YQ-8D>fVJ$#@wj620CA4WWon|2#qvF7n;?f>A#Zbn3NKGyiC{Ji8le<3 zYdVRu{4d94cFI6EK$&@Ksq;)$uV)aFkrHEF zr};V}zS9>a6Bd2SaaO=&-*6_^MqBWpTpwTq?A97_nMs>5A()aD9r02a=oHbk-2I66 z8wI9Rc?YPcwvXWgYY7Je*o2wPP~=>_dg#{*jWDSLP;D%JvVbs;H}w-?BY4 z<`+Lf1-dQ}dw>Cgr<%zIURDSyt&2R-!g#NvUP=t=6nJFA>vQZY9fww@R4NTp_dej0 z>Qz`4i6$NupuF~LlYx)>>KO+Y)hHJ-D*`X zC%zhf9!q$*cPC#Q_$M%1*goi_!3|wjWUezSin;0_u!>N0fDiE!`<8)`q5ciExkjEpc)8&9{G)YfPj^ti<+*q7ASYTja*A zCWBmamk9kcm_-Vb>tYagzv?o}tCXwi*bp;>P~~i8ver(|#ni?kYS%xFD8?xQ9Dle=7lY z@r|iV6;VUBswc#5ca^)m`;V<&{siLvpY^jPe?91wA)ohO`)y0n;|FC=c7)M_@%u~{ zQS3myVKkjNiU)J)t7T-2_AeoKa)Xc62wR|?h=i5UeK|d-A2& z1UIH8h$52YJ_+mQmdOk+2162+1#!5|y-!+m6H)**%{GN9Bjj-_x*W;ez#nprYymv| zRgj?B6|^%@yV>I1@um2^r|cC9f5hD-tls%Eiq&DH75M9ADF#A&a&O?^glCW#+v(Pf zzi~&Np72!c``B(YU7TfY7DECi>F^vc!DnybtI$s502jM`qvTw4Qge6@YS^X-^X$wpy+3H}fe} z;3-l@DqWugAV-?q)W!x$TfI_J0>m{8eBTxD_F^GzmX+*iOR>eKk&&j*frJ<`0tnRA zSu^UjH;6RJP&s%qHYJsWJK<1EtKjVn#&ZS*QpL|eUWW8sUVA7|+twnM7$0f~&GJFp zFN-7IP#+&+@}=%qBb^^=wx!iuKP0&-fTd}1A6*5M)F5(e@r})1y4ApH7INw)11kL7 z*V-71s)e2yQe$SKwJ8+Wm(#FdvWQo>iiKzbdRK$l@(X$lIMziaipG#AIp3uKf@rS^ z0w7)mVU^L7uJmOunL35Y@2<)cy0vKK|0NG;5v~{t{08>NKf4%OQP)bAYX#_boij%UK3z^ zFIRT(Q=&us$)=`LcqPSM^o+5HiYm?+0_FQy4q)YZe5uO{ znBMt+qXiSvDDyCXBxVNBpuuVV0u8KA{lF_6TOK{D5-=sVvD0a$ z`d9fxs1?hfe#dBZxpcWO`5xc-UWA6Lxjlke9?b9>>A6MTI?GWy`j-E)mD(*x>?5}7#yP57bKPJLqGQ? zrL)P4LAnD5pJ?aAIjt68@o&h-Ir^^S3_TEIX^6pM%wd9=3b%s9B2Jl}kA!=EGn$Ig zw9!mS3)Pf^z*5^j4LyVA2GBW%7BPt0y>XmFT&R&4LvI-S4) z;8f;mwe6d%HqT%4Su@raXmrG};0;3w0`vb~Zl8-w`B;^(lV#(~ic|v|L9(w4$3Fi$ z*t10~dirL%TM!RzZ)^b!$j`DJ61l&jGnl`0kyV$~+3DWOe?ANtcSj&YF~naqTh@Ho zl{H(k6*hsOK!_=~q+~jDw}+`t6CKcTv|{@n(4Z2 zi@zi%ICG~9U?Icd@Z6_&U#4`)6K-@D{<=|`s?s<5oJGj8(vOrDiJXCRn%FH z=VNr|JfTGtCNMDx~hMb4Q1P_MJ#{KodR}AlhHBi>O0^?xv`^7!mox zBEU5YLaH(Wh7sa>yNXkz>N2?08F98={0u)2G<~ipRcN8(u5@Q?>h*zy@%It)bd>lA z`s{>n-Z86+jl#Bo9U^wLFxyllASF{4bC{y-K`yp{qWu4fzFzt{684WFM0oq`#$QlX z^H%l4GvBRPXw6m$z|(#NuAw!&oWR9noGsLq@|;@~;HSG93J290o}(2w8U~D*03-8F za4~3yZ>aH`LN%!Nt7en0f|r?%_<*us&S#nBf_6CS(W7{g6h8zXOsej(&M1+)kY@_` z3@y%kUM0SO_vRW*fMo_kxOo?ZjT0SF#>Z11EJm?I?NLa$Oq91=lW{ZQtxz7L_ zD#fq*lB(CMRFYG(3m23Hg^-isB@NOYB3l4xAC9+o6Y5*6C8J-Mi_v?x;h^;eCh-vc z3qYF-U&1`;-2_~EY%Y!yb!#+jI!upa37$><|v`WrrBiEGOKMQYPy89F$*0)M?DR-@|lJN;$HWu?6j-`qPAlrKq!>2 z`$Az>8lO9N9p>0U<>Cq8;<9jn7&@~ZX>`?)>`>viTU(ANkIJhcx!}f!6L|p zq%c|sUoMoVMgWrG&%~e9tfK2GAjqMh*DEu#=m@+>Ub1=T_@yyfHNn;&I2s`Oj4NpGL$jEjG)!i9i4?tI zd(L=kwqw*jxd#)Gy-bcEIA4{fBxid{cHqCBl&-SxXyE!1T+IPnw=H`gzGF_c)Cll(9MFT;NYNi_j3b@cAi% zM0vMC3B<|Mx_HW0+QtXL1;+iL>!fH0Cgy*!*c^ymE)?#qN$Cs0&qcEth#CC29*u9< z8@D`z)dS*{DJDYU{WZ`F#EvMWOkTgHqx>e47wu{KLCvONxd~)n_Cf@!EV@S(lZ6jg zl~z8WFMab7;=?d~s$=6t9ccsLb*#Kar=WX6Kte|+eG!*rTehj?nI zwfCs+EH}A=nCoOV_E+`(8LVmswer{H%H3}aIy*0o zDy>dv3&78U`^nf$ex*HQLxQnwz(Q64SG`NLlXxM#ssNLbMS1@$&v3n9iNltmYaUn- zXO9s%VoMK6Yty$SOfS+WdK~@q`tkU=-f%M!G76Ucs|4CB8eK1-GLPBEwQLfMQ|ywV zxC5Yz{Z};@ci7y6MF%)^>r-zvEr8ULLV>E?HONePI`6M+(0Y{e*kD62?0ylq3-Vye z@Q2gbGvnU(JK0FGw^GPc{!|PEGA2~op$_QU_8bqH@rh8A;m$UAZ*mA%>BRdhbs4DH z0pKH%DGxwnuCj=lGWCEU!=5TO#1c~COpau=U(OkEGSWkU`(d=lFlX@dQ4_zSXo6VGVFgo7Oeg3Q_Cb(#uRa;GczM? zAC$g-o_YVaC^e`jumdd}zLAE3;IfN=7qsgOL8j)O8|HOHjIy^)!=5k z2!69bUv=5bZ+H?D-IGtkJ0P_zSmoLUX6$e#zF}$4*WTC412e6Z)<_7w3D?UjosOeQ-P3)KFj_4@XpCNQ*9LX?Ds6p#0 zaB2gSPSnk+yBxgfj|lhW#z7G6plE7}&)A!)J^SWV=93r=N%HFJ#&djM<17sZI*S<~ zwl3tzK3^&>Z*Os;Z=La|MiHTsX{9%b<5IH&aiQvJ<})%$6ijp=-}JTtqmwgI`TA&# zg1*?Kd8u;fz!}BiCZ3fkjcAVXS2ByB1 zXAWd!Qg~J^XLks8xL8=jsc7jP3W=I_MkQ5H-lyZf2EzdI4aURHL z4K^-{FKh%HR;wpbr38_i8+)P%YoHd)ss zp1EZl@hI%XkVMUVjJaQPDzr-iaRpx$HcH!R856A31xiYg4rgp z$eUS*g0kPv(l%?;oCHsMr&N>q^%KDQ-uTRb8B3fr^_$;%y8!OUUs$=+leu#;Q+E zbgt^2TH`f7n0Sl)9?BTQG6~TyEq<;Lp@AvDCBrc?F)@mB%9*-`sq!)W+{_%{_2iS~H8j#M3 z(Pj;oq)}5x1)b>Xogo8S+3R>38ksDY62VqiBb3#Q*ZH5k!jV=UNN6vzd=%! zh;k9Pjs|t@A}o483Lk4kc}16PPv>1dt5;PW1yBs@C+5Ek(y+$=i9N`);mEWl?DN-% zjqy$#I`pIJ;g*gADXFnJw#snv{kgiWQf)Y;b`KG7zz(!>0sj*}8fwd^l$fjKp z0J9CN*rtyCi{^kOnDWN9l)X5i&OP8$TfV`-bUW5Rlh%Kg=!myceYOOARAtr}9~|}l zkV2%l>m%8bbI#3n!RJ8b+CJYyb80=>ZlbRSIkreZ2PRGb32kB&bP5IAGB*bSC7TzK(0 z3!niSfJgLTPJj>t-#7YW*eJ2x#H3Tu=VuYgbf?nHabejD0+WhHFW~&i@8HsDqls;jn>F3r$BaDs7koNd72ZauwB3WRgu#vJw|3P;K`^3k zzs(=3=K#b!5_);hLvpX#-MB|pVvA85oM&k4lh41uWoMj8Sp^aHTKpQ+us2qe)Qd&R z+l3I2(v)_xVp<_QIQr#jZlLR5#Iore4Bz^F?wAI{^4?zv7A#4)^4Y*UT$92yo(`_7 zOs2#br;|+C(OSyQyo4-k;}hz3WUvUBack_!mqEz9@UW?n=-IbD7e!-u=j=@OP0vS$ z(*F*E2VqT?{=_M48Ois;SH?-C_aw2n9DI0Y$7@aeU3@S6ICfO(qB}9T+{C`zTQAEF zk?L}&eL~{QagWERbO@M_-g#m^1Cg0um48s!jxtsHc|Sjk|N9n9GhJ++;l`kS;s3&9 zF&}Tl2c>>d1JST;M0zo@gvAd42*>wgv_4SJ6+DZs!hG=_8J%x(LL2}h`=>T@b8>ne zB|bBbdKbd@b8%PjGJXoo9b_Zn?;^TjX0YY14``>{tMgnV5rX5Az5gNhaQGqx0;D>Y`C zLdc;F)*angMx03|=Seu5-<}(?Jz*}o8}-Q^`!ipuWz*IvXitTk#r`i!zl6CzlzfOF zDgd4act>dC;nRzXRvW0tY+$T+Uq5%SO`e_P%ct{|t_5v2;rg>$*$c4@1jy{?XZgp8 z>JPmrg!mx_u3RkO05ows&W-_O62YN7>MNmOOk5UrT45iIb$XTn+K=-Dv@gxnBt@yl zudi7vS2}Y(VRf)RmK^Vw&UMb|#`8=VIEy*mND^TMB<>3ht^_Hnd>W!DwSOgo@44yh zP<(i`eN5TG(W_zk`F2Fq38jefJN7 zXD6R0wH93!9a0C%PA~I{^mSEOB?^kLsF!y=hQ7A7xdEyMwH%$Ar_uB`d%e{Ld~B$3QRfXxF%`R`10vS;rK%UO1^ zlC+9$_;FbfabH^t?mjfS{jG02cAMwr0vzvVZNL0{7Kz=m1r==12uY*5UYaJ4RDxA4 zyO+)2rGh%5b;@aBcXbt?#Wxg#QzZ{A;b;`&I5e~A*dor`y~b62bc`VUS3W^HmP%IZ zU1Bf6n=#c}J}9u|ocb^op@if&Vs|H`jct7^4^Ffha9>=;7trZclRFi?QpHheM~HYy zxoiWU=PfFHp3|r2&p@OKb`%P9=US(%X{YbC2^1eB5 zx8RH@6$H2V4Fo(fDrdpB1~O}fs+PT}YIpasL_V3)Fp1>lj?jm8GhD+LV& zVONUR2Mxcb2I*b zC-YLW)J|jpiZ8SawkKHCYEg(Gy(!hbNSaf1d?JWV<);pRPKf!Fu2v}Cwc-vgc}}tz z`Pgg6Hr|U5gtetIWKUtH4IFwXgj%67C;DAWE3!>uedKzB!!TpTkfBz1gwe!vZNXs+1>Q&-_ z{%7!O`q{F;@8v0-3TDeanC;SOy%CHnU$)4OR%DdD1?``{iMX~b?0c==D(@NQgnOpj z_VV~Ao#MBhOMf3#smP;Pjx%bS{9woztaXl25-w2sRkEiOJM1aitSkgpLuIz8V&g`NR>T< zd?Q>sycWwq>!jJAbo#cy7NLVk(COc1b0#yT)^f;Wt+r~5(}DZi+uD7toyb*hYiS{?_;9j=0Qc0Q52H_O%PB@ zO)(&K>0|t+YM0Q_eQJn)B;{VQJ-6$AR!KyI@rDjU4sP~%;S8u=G?e^_a=0;y2hu}K zjRFA@!&Vy`yT-5^yhcu32+}dv#dy&JQ|51N32;>l`2z2{_7X{99TGjkO|LFVg@T9+ z9IsU zkBb#^Ux5yoc@owsBa%qP!_4(M;(SXJsz*FU9r1A|aPWx~`3itXx1}AI{ht8M8emOJK#AXl5X>D&bu5yZ2-F4q(343o^(45>GXwEc23zfDq&vF=sXGc<$$f zRaY#b)YgOF2VZV!4pYeb+lf{PW;;O^RQW5YmuW0mU4=(>qXKLnnB#F2AYNE1TwiU? z(HZP@a=pozvaz`g(D01Om{WEMbB0o)3El8G%#3T58Q23%K)F2GkvsZT3CaciisQ7` zESs3WtB*;FKON|M8lBMIE}MBBcP32Mudt;~Yv4lT%Ln?bK&V3Da|&+dr|Wm`UwD|6 z=L#%SC_C^Jfft}uENES2fy5J-K4T`LZTGE5;b8+O*5(3`^>`Txf)NphGU=m%Cviu% z_O3`c@>`t439o`j(nPSGOc3qHx=@FJ0>Fbv$(_E)fN{vw4LqwI{3mPD?EW-ijPHAN z?1zi=(C3X@Cwfa%oZ=}t0V$eA;U2cTM3GW*J3;8rieVRBJkri*hxt)`#>G*<#QqS> z-47enZpFaXLl=GpWRc4;W{9bcN;M&K)N_t`ryq)ee6Or7sb;A?o0)pNH6cB@0bLZE z02vW!PD-9@Z^YQuMB-b|-dtCQISC;<&^bn0aXRYc5AR!qe=MFQ^nk)YQ9!;eg~6hN z)J8Ct6S`KX^hmudlHh3#yZ=p^d6BE+hT$I@1|Bze)S?!jDpD7Gxqq>aCP}H%C(znh zg3u3y=x{4EfMpV=)_{pZP^E+94|ov@;3+mUCa322ifb!}g|5G3rb3C+!G(Fv`s0(j z*j1@N3Z>i41}+Q3sK29$hz+4-!hk^+#@ z?{ien8BC~p0-~h?z00B0<<_p4X31^n2}4EwoouNa)+iweiHZS&fSU_ zRJ!$D5J)U~_zQeEWft}uGDYCvoZj;KbV8qH?YDb|*L= zO|k&0oK+vF zhfAL7-Ls!|hK&>Qm5l~mOjnmf*y${FlrCCPWC_GxJo7#3rnhzM=&t>u-)G{F0g_}{ zFjN~h_y*I5@74fqP}{Z4)k23277FveMt=$qr&lxkbhF!2P)yntB3`(>-m4#?f5D@q zz4pL;AQ0)F16(l>s}+i4_7M7Hz&4E3jf^p|gdvFqL?!fPh81^sUb^DoMmu+l!adym`XCz~B1 z-W|qLRVb@`|L3;7FwO}`k@*@G2dcOSLYEDpmIj5GK|(O(x}?llO|TU2`|}9e_E9~l zUv|8TyZAXE0$OE~E_3)iptQ+WtoFYERWz%Fgt5f3d{zuw+Cg@>O85y`SEY?>E&S7C zS|6p*;ElEX70}8@c#y7_YF8t`#Qbx_yLfv;IWr7*OEaP&PZu4GuEIn3HWd6L@x!7xh80WCkU4Uq66j@Qg70Yrl z)|D#Q1_R2LsoY^w3|n71q@0v@BjkDb9*E1{GW56f*#x-R7b-~44&THi*EB=f1(Zr-gqJ2@;jO7rZ=+8{Chnl3{7qhCnuzla6srcPOnecGX&+qrZ(=EZ(* zvymLyR)ZGl9@=ZvC{g-IJ0{PeB~cS>X;o1*(*|CW=#%;IOle-C-leE@N?C&+4=6qyn)pi!l)ImpmyIxpD1FkZ#3s92Z;{yH4 zG&X?|&c&k!3LBNXnzi99cswC8G{!H@7^%wVS{@iz;TB3uTZ$An|M5vZOF0;JxryO( zOao6McWbg$c+YldMj6ko*X84e0vg5%>=yOK8at8gOSxY}uESwLZS)4zaY4N2D`J5$ zK$~U?jhVe231678>EdQgD~RQQ2UVTfPYThm^Bo;7B~39!NX6C?AP+su7Z~y#ixL#z zOET|Jq1_AdkN*_7No?ocatJuBRh*eIaAEW0TrDoR-t>BPyOuu<{#_Z&>>adCrI)_` zeQe9IpPUm)Db4Q*o{^k5BFgO8&!&_3FpfhzD$mP;9Q&LDKC9|=u?40rWq^IzNT@ST z89|B8=F4`8a zb~!D=S=t54tN`9szOfr)eGY?+$?E=!`VJ+Y$s?dLUg)8KS0|(p57tvO$2NE9KEp|i z0wsd+Z;tdQeCyAki=MY9y3=G&Lq}mBgyUwWNG}bL9V~Q8FJ*>3C}J;7Ka9DZ0R8~s z|DD-8d$Ts3Iqu0&YWrDQvaxg6eOBH5vgnYRID090B67?a)pH1nQ8r=E`x&t@vLE!- zIYTNPwH_VAnqG^>CMI@VFI8H$*@`OH-PqATeu}{MEb166DOoKTScudCe(6ZyabYjd zaB=9fC)(6Aln7>46dR~mjAH9ulVQD!E_`3@PE&fI0BwkQq>8$Y-=If9 zU^k?G-*RC-0<~bfPY3lc=1B96zO3WI$}ypiduF(4aJrwqpNioo8w3n_jWm6Key?T1 ziL)dNTgbs($!1!fxwAh}A^hen(>f?H%YIS-v6{gl$x>@ZBe7B1Zrac=8FA8)WPLqs zG~(+u=0d&wEto8g8Y98tbp4=-oudfKcrv$Kc|Ftvzh3^DS|=#Q-J(uhS3;X4tGiab zOrp^zKmn{I2>G7Ld~x5Ey}Sl?t+2mL_M zW-tZ0y4EJ-Bf3Q>1$)aR(QTh^q%}(>=sp-KUxi?B@rTAkG4oPNqLoNhFXN-kY$tx= zfXNH4vCg%mDZQE$fjhnVdAxQ&g!R<>c4zX(?-aTbE{%cmG2SWHblr=a^;GA?>J8+{ zVQqm)DMm+c%DcGSA4ka{G2G>8#524qDT2tdAu(ooCE|ZAK{71vCJ-=#VjYIIRzz&+ z1lm%NvDnsGD8kzI^KF}MU!Zks?F0CrTjairzot#$)c96yi_v2SLloi(Fh%=0d}^5u zd}m_+djinEGSqZeS@vT%wAgXhEA3eO@)zkUlqJV6gKG)NqI%O-K6WtLJUXYN!t&Wi z(_u+iA;armotXdvK>fe?VAgG?dLxy)rjG$cUCVDX77>PD5Ko;{F&UkV005U{j=-BJ zT?zp*(6U1|Q@1Zq?Ac=W$%IWowH4@IGktpW)06?+^pqHic?wNBYnuty^eJ1dXu4kc z;7Y_sE`Mz6{l6@2CCo%ywelaMG_u>D9&*ML*A8`!RpLs&P3Xw4M;ipF_swL_y2x{n zZS6^M#Bg@6R~YQ~P4!RoRmh?K$tLqCErna3xUhLiF>oqv(m7rdd>B_}gYynt$iOOT zDN;ZA0BV%aD=~34u2B%QvlH0={KFEF$^(N_NV@?#8M#lfJBFwgY`s68x9T6|%mK@L zmMl?zdILCtfK@ZRX)__y4M!5&2{PJ9$Cc-*msc^Ieslu|Bnx^=?(Q6OkbNAyr+PRG zwyBXQ%hQAPn6Qt{Az;UAS`8U}R1@ziPtKkQKvkJ0R#)ECRBqQ5T3}9IN*4t8==`h? zVp(r-P&x#X&nsjk8En+Abg(k)4srmlRMr(LkF)v8bg-`1K&c;b(gTDASXb330Y*cw z)_YRWxn@y&-?@NHzdF?5yypkc7SG02&gir;?r4CblKtVu8}J}Yo!4Lk`#bxg=ZXhO zbdtoBD@cf_g(yFb{)mZ=ksSrlV~~}xV-y#DsO-cZ)CcvG0+>?94fgkB;ly1|W&^3M zlO=qgV|@1fGq(!iZULYjc2gQQ=EG^5ssW_4(4rhUa}GeP0`-tGxx5s22{i=L<_ z;jL9UtR4czLxJ^Ghr{pccpv zuJ#<*`TG^pf${v=7LrLWjnN&oc+cm|eB_RR^iwt-TLxOwuudbBbZ(~o>sUN68m$ic z1j&+h7U$IlfUWBbMm$dGPFjpowj3^5mw8o)%O8CwD07gLCxA=+Lp{y2dLGkz1!4x3 z$68tA1qfayyL@!eA)3`)K7C1$B; zQhMvehfxq3Nwjh~%y4sFp?~jA8D6Br!H(u;t^+=NGqH<$Oyh%x?Ij$}MEKFq zdQ|k43atN>G>wJDZ?=8p#g4gqod=cxj@(de$O9tuhdqw`ctCa7-aOfVUX3h9m(2`5 zWQ~^N`a&YYWNHM3{?Vn*VMAplq6;vQ#T*SwWo2@`sV=z&eo2(GV$6N&z|9tpM$)Fm zDF&^TiI>lsKb5rdGq_zOEsV=PwEyreDlOa#`V2)6rOG`|(Tj7gWaYUqYU5$d=E<@r z9VVCZtG41cAJE~gL@8-k{z}N3e)R?o<^eBVaTI-hNRRRRG6fJe~bSF^hHe&kW(b8dWHAek_l#r%=ob6oSsS5H^VnW99wQXN>X;`1c%H4nZ+k9(z$&4U4 znzzh3sl%P&t~_jYzTVvU(XCERds(nlYgVakrS5NRsi)~9z_33N;HF9Q5?W%9?fae+ zra#8hK9>}JGI4%YWzl8Jw*s&aEM30`mncZFv-f<xK5el|6&jTNFxh)4NC3NycM$ZM7K<}% z5i}lOA2_eH|0Dh~2qHRYOo2Q07%C3O^`jb0YKOju<$~^1wKX~aZCLRhE^&s3Dvh`e z$3x)+SCMQ7)q<1KPUa0#^4nT)kmmC}xkV+urZ9M4Y^KgmB7q^UAHVw=0T}Aq0Z2BO z_O5bNgxPw#wCO1BfhlnIDUA!9y30Bu3+kUwW6su4RcM|xQ{vdb=EYX;?4n{_z(-mT@4qtssGETUIdG8&<_c?V$VA&TU-NQD$OEkDFs)O*90|B3L6*uM} z?t{}$VlfHKw4(&N@S^*i;8KoOGj&Gr8+cp1~&`(i|`ScC2@H++A_gxNGRx$>x14Gz|Yd@VpQ${$5dQzI_7Af zTnQeBxnQRpB^q_b-Ed(VsrqHL>5YxjVto@T{HdvMyY$Ob+^`H68WE|`6ljQXt zNWN?f_P#0fivJh(?7F+Q6IDEuz!!0q1{g6&t{ROJ%_>qTxv80u)C4=j#L&(ychf|Z z)Rge74Je>#@&>qjZ7>42j5ocvjb3Go>6)9fPZE7H$|JGbbL|pm*vT)oje+-(lb*saMyiK~K&bCvZQ+ zfK1i7BI#2Oif71xLDo7*y+3=bz+*D1BozSEAw^gT^O&x1?g$Y|Ks=|z5{E{*DE0@M z4|IsOK)1#z6G|=3BJZRqS2&)MGaL%P5@mO|&we4b|hD z1CyD+l&Q!LA)oM1-q35;=CPOK3Nhav>*_ok*p;h#x|u}Qm)LnPIMJm4RIew0N$bf_ z=EtQ`jL}xOWKentMs?sKy)S>fza3OSQ;vU`*(W9!j@QuV7gPC}9cL>_up+2}rD=d| z;ENKoe9oAZdMDu&IRZk2N1HWkFi!h;6X<*AD-szei&tBS+~USo_bl-F|KvlV5%jM# zINkc}yycdURx!p_Wo2Ullnl69+LAe-iFW@QV}Q7^1@Fn~D!x-DRt9*))q(R0*5?6! z9Gacg3_a3;fro8Dmc{4O9kw_JdX%J>VEj`!VHl#rFC*a`{e!1P^&(APM=nCa>&^7i z2mjL^OIOPY#FMzSJBYz(PTBtF4#JVx+FPpf+XTCdy_ZpYVRfnU&E$G*NG+eIyVbA= z;%vNK+IU<)Bf*E*;s?Hf<%=RP@|wTiZ7UwqbTTYF8y-m}`CRaks=AmzlTyFE=jVud zf(9{ZhlV!W#x7_NiSpeqerYjXKTIsV%eiFsja}unHqnq3beA@p{k0gHGqqkPu1TA6 z*~CUNADPV}Z_3w-9l#?YCiz8?(O*i$kBfm%e=MqUC>8)eg+8nj^~>yC;+Q&sQuIScg&g(s~2 zqcSGrvbvrjuRw*}K^&n_Cw#SH0p;<{fdu|ypPF1bR{LMEJdjQSsL)c|Y8@d`(vn}x=lBhF?tT8$|T5NmojElY9}pCG`g#6m?|&^y0Snwld~kR8t8lk%(MSQZ7a zxF24`l{u`eJD~<6Bwa?_3%Q1?F+V=B`OtCVbL|9rhv*rSrQ}^yLonA3?+9&!+a&|I)qnKD_%iij-Xw^w zJij}_Fq6A$b8f=x`qK!nb0B$Tve3w{-Z{Gkz8g6TVT_M+a0=HdhwSgAO%ZCJz`Kf| zz<53vk(|9(O@2||u(Fp6f}OP>oTnDOwONLf=GUo?f1Tt`7Y&8ou*T?sJ%Lk2!PZk# zy89$Qc@#qQ20SGcA}$kR%P02g!>PJBiH z2HO4+#A%uz=Fam5xnm7KpL2a!gpmm~-wFQZ0d8N0^j&8IHf?r4p3&b~pqn(s8o}34 zk!Ap%Fy{@6dMilp6cG|Mw|lmRgUG08XbX_e$UbPV<-t&bB1WH!8oS(pwFE}=j{9v2`G&~W$KU5YP z<~c|Cin9+)OfOVji!B}LM3%wEp|h}l#CmpN56=O=Mdd9I&%G4|^;j#@d^Mb#sEDxz zX{|OG1+T_tWJCwp-fH9aDS;Rw`7{O}LDk36X!&~S_v)i^IO2i*U_A4m1OuxyZl3u% zf$NFrJGqG~HQPaxT==y2ZO?-U!_Rg%XlbF%3zf;S(VNEm@fPOf-^cRZek-K2#t;Tw zB}v6*e5Br|@1AD83H2#CNg@})E+3rnn>bwSf+}iI6Nf~~oTJJ8zqseM%`hFV)92+)`#KryTCPxbekL?(8J~zX(;xJ-3OOJ(r>izmqoDdUryZjG5D^ z?M2N>QvZuP_O%k8ZHXeu*bDVMr^BQr+WX;}Mz9iw{9&QMRrt-d)%L>$=)%ziP9G?f zt>1?ZKeV31^kq_!9UH=B-7Ub?>x6rlxCM@BYC@v8D?2c=$z^~Bw?a~egw1iSl(OVA z;XZf(jLyH$A&R!ZJkh5p$?dnnq5Vc+OJw%YoQ#7aiTAL5==;|eNE`bIDtUUKka$R$ z=Z#}HrgMIsoSd<@91|FkO;zF5RTP90z^77E6RZoe*1YnUL(B~7Dh=~+Q*u*JcT^NU z6K5L_UyKTOlzwoRVvRQ-$IrCQnH$huU*!>Ev0?nka>CY9{}y9k%L@Z8tB+GCwx`Dr zU*oVp{%zib_*)RYbXHCn|9`g?;e0KlA}@xGxeov35B~Z8HU|kxYGMvLR_1?EuIpH)s1wnvH-=vp~jrKIL&sS;Qui+4Lb`lVvasMqhck7L6$qmPTg zT;2n;@>o40J+SJKhKqIJeDyfl`)YLUi*6FFICDr^!;w_HQHvFJvWa&9%M;7yRW2Q? zWcK}fBpiSrpOE+fF$(IbYc+XXC7Q5fpT7knVH`M}+ZDB6EXo9C1bBcR?haxe>;-Zloa-R^4$GeyP<#*2aeD%K4aAyv zF#00hG*z3(9!kVjdfZqdy0r%YEWG=&q~yFsOGG2i*Fbn}f*U|WRbX)~95m%W1w{aj zxs}Wpf@P_`|A^u5Iy#hx_)1Sl+INo7cfD%iMMaN!9>tA)J3>4&TmDiml*tGL9;M%y zyYGWdh>0M9`$40`2*q1GDyBmSDtLpKQ3^abQt@kMu3me zZnS$Du&*0_lTj&ejJ>Mtbdvv_5^p_lZjfTsH~No^8nf0D*pyTtH#1pngclJrGYYd- z;v^{*MiiHuEXqe5!v+{XkoaB_UbIp~PHD0iTD?<;rW4O9?arOiC8WX?Y|gWv2(JAY_q99Udcobg27vTLA61A>=*skS#BzJI>%5DKNKE1Slrx##mU9~Y`z-Qt zC!;V$+d8rZd&#|~>&tW{%g0_PS8Okda=d+yi^=IdA zmcrYcK~u^w2V^&C_S%`rHwb#!tp4MV8DS~2`mDg-F$F|DBV zh#)?Padyd*74~WI#8eidpD(Tq-cX#k9`eVp`r+bAzbC3;T_?W}ak_F(k?(QQd3X;> zlEk>-jVk{l!HqXw4f0}me}V2JuCCDt8wXmpf7HgukM=#Ws%!b;0>avcjx~u2&RJ9x zU=bn6>0~Kqg2rtT=O!0Mw1Oj;={Y(Vgbjavl3DccSVlcT3HXxXr`B1s~fH1h+v>MfV_=w%lDDbgzX( z=vKpusT!ZSX|=r6&@zEA$pH7kN71@wAKalOS_Qgl2(%Q0?I-+r?`ls+7R%&bI>79p zDi^Be*Y43?s{PbGmDz~GTf`s1%x3-3(nRu9xL< zkRj$*!e}k1P*OaStGzRFZ{emZ{5rc@)+FUf<{JXBJZ&~^cnX!6pNa{JL&}QannNd88`muYLT}MOg5D09l$0h^!Ii#7?x};k~ zjJ%|C>#=!&#}_4-u7UnW-U@QV(ON_E;;EsB$;{hFdvYR}sjdZ(_ zC=L7Xn2aPn7%;v)NOBNF9NWANEA2~9pMcy!u-1i9OXuY~U6`K2Re@sn%EM(b$ePIz z25Sn>I(14x>d`cKW+JM3Nu7wBHiW$MV-NMYEm{5QG)_WeODkT7;LJmt&nYiTBrqS5 z`v91`7t>Pzjp@8Qtf0Z>7cBpD_3Bc9j~e&9v{+X|bBGVmSQ3EC4-a!{O$!{#7MxJ? zn24<-cES>ayp6`Eq+nQeoFe~9wxff5A4m?3D(Ee&QaWeWnvtf!m3+z{RAmsV_>vA8 zQbr3iG^>t6X{vw*#vdf~#!MtGPT~RELe(}cVgu#-IqRt({dM3$JUg>^=TTM*{m3`| z$BNqSf<^7_@c|bxyyqEZ*EwI#K~byI`*CU+saPN-eFuNM6u#D>j>TvQnz-8?Osj0r zi0u1@EQC}KfAE;n`q@CrT1v_2RWo|fK_uS9c-Et6HA1uy6S_-f>08C;b0!=%+0}o& zmlB#ing2nYJ@WTii~Zzr&yH>F4Ufl{fV*HDGs4U%VT+=}e|x0cX6*a0g>^6mB#sgF zLWNuARO3jGk(FzC8jq>;vg8pWk~szg9H52)E5_Rye9B0AoQzcHquDWx(j82}^m6ZK z$5L3?vbpQ8`0g*(^_HkWP)OzfAP9v{7<~@7mdhL^i5*E0&kA74#1>0US&Y}F#6Z-~ zzEQ}Le8_CMibPOq!+wgsIDN~3z9bbTsOHu~5cxrX?2nA*O%5S7ULeOBjcBb^70mmd zy@JZ6e(>K%-D*Pt|KzC?CmQGT{hujW;X0=R!{|_sJ_0_q+&>{uK*1d+N@lH$F<`iQ zB+B6)m-}`u*=8OYmYwVt(wEM?HR+7q^=|4{346A!^(&*y*`MS?Lhqtj z4AS0Kv@&HPwMtfI96TPbdV$IoX+donK7JnEz6HT}N*fskC-6@u;Wx{3u6d)FGWy4`7AQaGblkSNgAq$3Kah%A#?TJzxeF%Ijk5O&MR5ST90D01ms&q&*AhlW)ZAyU zmppI)44j%O|DEYS}x@nbA+*pGGLgmz|+uw6Mstp=K-OPs|IHh<6MAP11}r&8)x%(@D*2{^zfgqr6* zO-V$8?)h`%LlD?=m#&!Y9_Uf_qK<-n2CLo|AzhR0IL0uIT$*}ilRC;gGL_TSsng_(L<5^ zIx5dz(o`fuYq`Tyv7husdJ=Vu)=$($6G3z~3CM@W7kLmzQ=eo`0#d`QH|FM-Qy_7` zXWmjaysYZ_e$yLyk|F9VV`*XL_ls#^wYe(O9VyvX@xlmn?#&dz!P*^ZnQRO&)8Xn+ zr*eWiS{owWT3VR93eON$9miVSGd9Fl9nIlo>h;nAU%Smnfi_wJI@~-j^z`GUZ0!PC z83F^Iv?q+39rA)(AX+%>z?o>%PiQ!&!$rY-K!%BDngiWxS^GOx9MN^(R9$aCAxii4 zd4#o`?txvy*}XeBCvekOWmHs^o71;K6zeLHd1;1>qLU(}GcPN7`4w0DJ6Yf%dkhW@ z9)6Tf-P6@Q!nzYNZjfaA$W|pIVRKeW2zA%5lts-Vt`{yUgjzrnsO<63xj6oP@cxKu zE8*+suZf6u-^aEcDU!+!ub9f3?A1b?{@DNue~Dw6(3^}B$V@pFR1szr9CYBo5e0l& zx-^O^y(E#McjZcore0;)pBh{1;cEry4Kz^4MCVnNN`w%cs>4T)ZpegO7GW3;=yqO- z;7c=_iqTY*RCDG}lb)9y)i2HCQ_duNs=eOkYAd^aO9HYd-T*{DdAoAxckE&J{W!6| z(Pca)+dIVSB(#qwZ~QAiVN~qY!Z91{MRm|NHwZa!u+awD#;`59aky6i@g?(6zC8Ir zQm-slzqWSg|d*F^~hRmmN_lig?JKo|C zzJ!s=GBewD7Y#SqKjI1@2W{*kTQASOBOn%Dl#H1gGfTBlr9^fQxIHx8rC3K^g1Ibd zQF@4$-I!pPogx_|tGp0L*FbV6!2=)x)5z_ab=uWtr^o0{=tqQW1`KNVTJa^o zMs-I1ehdTEEn+&I4kGmzhH4Ki3EcZZzkSBJ*FRz7dn?(RH&Z0DhZ$L4QzStHXmhBu zK<~_a18wj)ink3706y7L7{H~HiDEG=lc6kBjU75vY>$0V0Lg<-+aLl(d5gM5Yk%+hG2Uh1O3Q7`uPTY~XU+P(T(HSSO%8Tm5x{Xa)Eb6Zf?DhWnL z5sen<4ewH|5YshW8=cs1c+iL9?2fxh*7Frz}8i#XMbPk*X6ewYO6V<7EytJnxe53VL_g8u+(7QER==XdC zmOEf$(i`sy>X>bHG%*8x?N*x^4WTtPwHN6L9VH~Kfmd>XS1ngYD6IIdW!xYkE_7IX zwdP)g470PsK5~3D3AEj#xQ2JRqx#Bhsx?OON4|e`Y^04_*}e-`u-|mlY_wyYY#fMf zxtM?F@nnN_9~8<8fokf-^pk9kYR%9O4mcSfQw!~&o?sI%i*yYs!ekXEgie&NRHQw4 zuae*^kw-*^I`j*ciZvav;nXZ-#70eg+Dtt=by5t`(|d9b^=Y-8LS_j<+^irexDGs7 ziQUS@AA^+2t@@4wxM^tlr|ZDVhqn$*Ge0V0BF~k#ppt_O^HG3~ND)>a-;VQ|wNg`3 zSQ~_H_ydeVaHZ-wCVmAcDNEYSCF9WZzBGwG+XWae|Kz%fr%kOciHdtEJj3T{tkZsS zzxR=Grn(K}_yzJt&ZnK7{RwP8VQ>M6a54I+>;Y^(E%!YX;~0*W3vql<;-59cHl1@i zrNK|NFB4Z+^J79yNDpPRcXDbf*9u)x)zl@?lPku|29_P6-)~eOXhzR>=(F)IN zroL7fw8rtJtdi4e3ud{56@^J*PL0fS^q^ihR-;Ye6HyZ~Z}DYbrJ}_i_pf1-Jib@S z^K=_keYD#mw1MU-9(FsLQ^>v(1hNJRVY2O+BU0~ux5ojpvrqPd_06A4>If6sX5?{c zUwG^**x~HTq5)3+ATt$!vEU-0Twlq5o%MF7(t}SESuuOJd1qnKOU@Tlz$En0x9Xn5D28hT3j zlvnAmsd@HYoHnZakS>b$XP2qI0y(iY zOK*vZiz9t(ojjqLT++&JncYG=y=pniH@QVbS-C`M)xnw8^v8PKv8da{JFK;)*CGWu zDzF@$(ct=rU0Ay%eT3CAp11cE+ZP7m3oI*9dBM-yn4Ld;@DwCIs)6+62J@$4x#i~Q zZ4?hSOEC9($o)V?00WF|c8<~E%&}bF=EN_siz;d&4GNFNZ+ku}&V$ZsyqBIBO?nz{ zQRe^-f?sum7fw{n^nr|0s4ytKZ?#k0R?_S2g<0lbw3K%JRp7K_V1sCY4$AJz(@q?u z?0MwbTLTZhS}F)CSG*UagQI^ZOQVi{-BR!@rM)IfW9fOrX2nJF4}8^5(B9H9woV$gfg(8`;mc0!lK0rh!(ofm1Ea#N~`Ot_dgvWfu{LFfI-O(U%BUDNy`ufwc5?v zj`TN>QB%>4*?a3>OW*TC68gLMR4Pxv-0goWh0^%Lv`t^b{y}{ch1E>#mP?V1Ln|`uO;Vs#z#tm9p53>+f(|}rTmonKr&n~3 zaDrXoR#__m!M^8ENbo>F7UM-cFenq6ia_nORZ~DY#X41}D3wbeJtq<5!am4tLz#Kx zdakkbFiEKyyMW&M|3VlZHXZiZ9_OF--3+~I89W}w(A)GcI^>K9#w(KfN$uEs9t|BU zzn7ADpFf}KD*Oc95)}R>)@vM7(YT0^4Zbl*pWls$YUg_?2{?SlMm_AnJBvduH z=q^mq$m=SFG|2A>F21#Nv5+T^_?EWUgO{R_sMn zKdcFjj82F?73$vmfhltAeBXv^OYT*>)z#jC-|Os4RVO&79S5rk=VLvXkCnVF49vE{C%E;wvDUbb0u5f5Nc#EP%yWxRV>T+Ax3ui3TM>x7XFOR+ z0qguS4JpOoK;nINyP?5F^!u4w3--9*LaTKwVf<2DqBtAqRCb8&|6~B9cz6S6IZmLE zrT~D#n>@lEJjT`xZN;9mm&IwGYugOz@LiV|Lbedsx$$caLzL^+!QR6k{l*TEbQcO) z<2E85sIgZWm^pMfJ+1`%7XXF~Xy-CNG>VJKeo-8bHEX8VlT45Xcf7U+Q^6x~Q-S-h zQuntkc)<^)pD~YO>38o;}# zc2=_gw;9v+)TXk?0xT9y(0HRrLO+F^oPTq=T-ENlmEZ!c0?offczoU2*OsSj);}vD zy}LJ4^sgv{z&nf9Kd%CO&amIY2_YfJF#-RVUeulrss+n37zL(V<6X0oB($xJ%|-kA zX3eG4_eC_%@z>HGHqP`=5ZJ zatkBd%|!R^Pfn*QipQw3o$*r_sfbxWpYCgV;HkZY0Nb`AAjtjZ_pkbH)+-N+%{xus zG8YEWW!Scudv75}@av(?h2}8lFQtd>7sH+N5NHp9tYY$K$Rliz4lOjX4>drY`sWB3 z_)>>+rZU|@?XyY!bFOY0nl8>-IJ4oS%svNCVbA96)~B~pR6{0(`tDfQRdkWAV*bM?u)){az{qlBMl zl(Fs+K*rci9n%~mCRu9+vE6I&>HGB1)N-NH)pxS?zE8~3Wh+&SBxC-9$qNRf`f}K| z_x#Z=4o%{ILHis_)&523A2-i=w(Ei{7Z|l%ho$;i$@F36Ac|Zp*pJ5?_=m0~fA#e7 z4Mo4Nln0NcY~7U~@Q;obG*UFguvA%l_V_)pS=hYuXj_LJ#yupsufJwY^{GO8cfJmO zlP=8=c#s>%7v-DUS0|v{Fe%Y}$|edWTj5Fvl@7`nV*J$-=qLnYr4q~>{l8I}{{X84 z7E6gxDhI8FPp5pI-O-!}i9?~QrH>MB*A70h2qKM>VTfRqRc}rYMBSa!RFgRrVDqL( z@(A917R-s(xCY^XEti4eOytu75ziu~zzg8QlB?*ggHfY|$?Tow^YzAF<5xqL#9Db! zok)iG%UD1nN%>@L@ew$f=clO8VgGeQbm6+UJ@z+1JjmqG`Q3w4&QvA@hX52B2oi8% zajGtS@44{f_z)6VwYhpoPg9ILl~M%N{Dv2%D8ILj3&o2%RwsH0k{y|mQf%QDnpP7Z z-j9#RaJo6PvxK^(3s#>W4`vg?PWiOH{5-*0+#kFl^spo}f$(I0@+D4)Ap7Q{Sl>Cj zt0M}_65_U%^kNLa&J3ah^X`gL_y&l>^S0G+32J3WB>W4$*?(+_`v(7SWC`I=Sy+-K zr3v|4njQwgX?Ru)$QyG(UG2Yzc%TvCwL3j(v5NTw@Ht-XN9f|fJ zfI$Q6w-SS~N*jzcm(b>2(qC;8H5upA!1}|G4z%Vv=}tzEJ*0 z=;0v{8HM+U!!h3s0SVPuUC2ffoBOiA#SAwYrXK%$HxP^n;#XjEkCsbmls#>wG20G} zj4Y^=jOOFvDU!d%l7Q6@INnc~Q()bcX?_!@4Ztb;Vl>v;U02~t6~X*ye`W^mMtOE zt7a>{ZWuF>e)87jmNGQ1kZDfw9DY`MEyOm{6PJq*zifdU#$Pqt-S9!a_2jvmG7sQ( z{%AkxlGovq)E{wsZDH`i#qm_A_HKTubtAZ+v5*3DYq3!d4AoWTSKTs%>5m-(A^_wI zgOkvWXl&au%HkRe1cb%;fd~)Hoc^co=~0gVdBy+c7YUTQ)SYtDpwy|tsaH#_*ML? zCaxG{kT*O=&+&{-!vGR%tu<&3Od^=)kk@I^>OWCD04+*;Hfsl22ZkWE7Qchug z>}-6=wN^eLrg0oa<*@hngfO|Wbp$ttHxQgRASnN<0J5p`Y19sd4*dZOsp;}&rU#jdNjzVXhNp-!0ez%^YkSCRCNC3 zVvw4nS!_d`_n#jNVe+{0dGghG%AVlv>L#1ixR5V10NwQ4Nm-m@Vxt^`OK^YCH@sNt z!*Sb}x;#h#peSMAcEOG1MHf)?79et-nd!WW{g2p=M5M~ZRO(7@he|QwWTwJ0h0&EQ z`5r!-fRVdAu?(ZEWE08>^^)vfu8q0Rf?*E+vo2TG66bZ}Zai$v$v{RYDZ4MRoVP8$ zT~+wYdRPk8?xk-Rjs|}XAj7_|{SSuaiPyrmntK;8UD30vVF5DCM^7FaY@yr!_^x%L zHP*6mT8JDrY&7yUJ>oyAPN`@mYs2O;u(Hig#_G4=fRzf#4~#A7QA!J|<)ZOYOYJ;OQD;dxc1iI?^+qor!$?FTwdm%o%a5 zH0RdXva;0f0C{5OU8+Wma%h*EUlEzsdMEMS?9ZA2MLSk>w=}Qni+stT{0OLIM-q8=dVQ_-8E;uUn_yCl)ef z4L+)oax8~kEF(=h8$j_n&N|V+vRp&Am;K!-!WBqC1(tPURY)p901`sW>lb?S_Xj~* z<)Baj1u0Nh+$#?H<{y$>G8gu&Y5H`3^%%OfLqvgtsN#Qcjyc5w+u8VaXpmW;TotX= zsbMrGu27qN%l$S!2vr@8_dM>-sRkmixSx$Hj98>FSr@y1OpLQ`Wkx*Man7 z;9i#wOr1+!BCu2vxf_W6Y);zWy5ME<1ItH>D{d!P5fsUzjkSJLEgksjic4C&J|Uru zZdzs;^aT^3KU=_P>W-rfS*a&+bXrJ~Gw7Ke>hNiVcapGv$NXgye!@%C*B!k=s}_ZX z?nmBC(Qxe`t3RDAzVW!O zU8D}m+)Xi52SMyiwhTJx$cEpZRq#^?d;ewvJheYBJ<Fct2-A|-+bu?Bu~vi^CO@)g#c7v?YeHseSzPW_~Z4AwLfPq z;D=7K?^g1@xV~DZC^;vAziEnFI9wQ#z&(RXB$9xXhNyi^0Vv{V*E%0yl-b`-R2DCc zLvc#_Ms_`$OKUt^9|T%^;wl)}PF#9es-`Z@TWe8EWD4u0li=r^t}fau4d9gn69eg0 zKfYSI3PVMp37gDujniup_*3W*kw|!?efN2bd!w<; zN*s%Q7e34kC(%hrMH!-jImR*?@T(~uX}h(oNI^-OQc|~+dmt}Sl zvd>ouLq4&H)vnRQCPUZAxodU9dJfMvI-IIg5sc`IP!wbhfCk#j>)Xl&5r{-o3EE$U z252KU_14OFX5$&{LZ!@a;y}k_&|8e5^ zPVzV^Qhhc@h>X$Qkb|@1E{r+xGTf|qm(z0{5(ys(X4m6t2fb9nOx;Q&DR&Ez6j%d} zZR0$JUT>0!={^@$4KtiA_E&Y_$Z0p%=UTpUCR(9uW$5cTnZh*}B~S7tw}F{c7rtoc zD8>C`2=b6aPyJHZx8)M$SG^bmXsG{bzc<7_q)4Yyp>AZ+_+L> zm&PNG+Y!bsh|{GKja(^M$mwxzhZ(_D(w}RFM4N8S5c*QWEJblCShT+V$~XHUa~=m- zApanM_+6^VGLpzYF~A4vP;>8BDo=U^>lMX)gM>=Na^iN`eSo+|FC#i!YsyU`)C(^D z1L(N;pKKJXvKxSfwh6J{{|-2akr4ARpLnuAwtr+s;MOKn33ld76sSU#IF1|F>8FJ$ z0sN(*2))(RoHwlHN@@w9g<&zOP6xlE9dWOyZEK~2lG6RXw^>Gp z>xBBnM=0-U>C7@k8hjHV3mc@1VxYLh$;TlB*w0|aE6M|0FIc8SUcNt1V=~ znr!O;gg@w^r05_l4Vl#cF*p82+DNtKst{&_M+DU}kyCaHQ&GgHWJw0lX8$viR-KC< zX#joX?4$*L3P>a}2Thx+DsB0g6?_3;clbH~T0MQj*DCFr>oKH@pdDUqsTj{m`?>op z^YFwm;6^t+$>32czUTTDvzcSZt~1^w?tjAtelhw5gG+Q}7p4dMhP)ItU1r)EOsLDu zjPmyxB{t&8i~&pr8_Lw$xpVy)iy_=?+J>E4R=1;`A!M~d)LmS$1{f5{gOiW@p3;|E z9u)#wJ2I~yw0>Du*WfX+F~>I@%X4-eJ_8X-xbjKR+i8vzv7l;Uf;aBx5Hn3_nau9a zPZS?(6uLNDT&bTQ*U;}yjQ-rM@w$Sz9Zs|2aA2c-g_YHj3B?dzbFDPz5X+-r_G;tus~OKaZRl`^F*Hi6zoYY8Uo3fEP@>>MP=08v{rK zS$}89W7i9*a^TD=rfRHOy*yZeX~u_Vm1;Wd3n;_>-(Z$5gN~E8qxni9o3`RR(OfSq z*DpoVj+o7Y{kkzN@O7q3DS=4<S+OprJ)8|{xgWR!d}*SpYy-H=W2aG9Q}9s*t!_AX(eokfV6RK= zrt+g_tI@nZ8zfvd#7@X&Md-0|4EG*wH4`?XP2hz%7x?C)4mSsXn`@ek-%}Id6YBn5 zMae?mXAtB3=uLM;2w^|(TFWK}JbG%?&T7y9tU_6eCo-|{AVXT8wsV7D(qh_Ylb;6t z5H6ITSs26eG=XLc{FbRO_IB+b8X9ycQUB}m`LslU7@PmIif<%bv{f@F`1 z9HR1kGFW7rbrT6V?^Y%Vq>divC7X9SflFb0F*sldIdP##8b@+v>&=0f?J(^W4#3xK z3!2>xZx+Y>h-3%+GMtR#pUrNF%&*kav6880HjLtU2_mV zRh9_OMa_OkWQedr5U_~cuw$n9oz*jXBh&C` zajW7%&I*l(Z9rH8Mua@q3jrDBOAJhW`A8qldc>2Yb(#^as!wrd2(8*A=e!7EMw*Yq z<5g<8*mfa`75^bTx|f*(G=*<9ZYpKp8?52GY2-kjM8w+@t3i#@C%kiI+a?goWggtj z#-SC5FIraQxBf@j>se>ly9fltr`BaDx=$kww?OeOtdWBe{g@TPo=Z!N4 z#$ezIMpt-FX?H!VexMyG>*a{=r2Y?J>-#i5K=W?LXHBoIyUqwtQi{)tToiDRlMBRN z|B`C!ihA|OV?O}k?H8ZC7>%o>8Oa@fK;~5FI)BumCw0f6Pl>`?It#DOwJ9}3aERgz zBP<#CpDR7uJDTi@pCMB00h?P7uh^3{Xso)6KI`Uq@Ts=0?@u!;yWz7W84Mg@AO+67 z1vo@Ub`K2uuKDI4@hqwd1T)$7iI>2YRF{zrIIqD)Rvi0R@lT~1CcOyq?sq;Z9By2D zDHS3VRg#Vg6h^7!y4gUBm*T<|8f@xCg>5Ohwupc(I;IA+cp#n8qBi7k#_j2KLX2TFJ3BAT)GQDUvA9v^3}kJ_KdcUI zELA$6nftcPY57-{IZ}L+1L<_T%8$V8FZ!|oZo^vBLEv=~9zLB=hm>dVpGY-8h#&^S zi^V`M)H;fjgJE)_T#h{KZ$_^(PfB%6d-ET1HuX>^a@3Pxk=oqradgjJ;T6^zfI`T$ znKl(Ny;Grr>XIe=xqpqeM=+McFC;nsOh;rvw__O&zKrW6YYE4dWjdhP9~bqMQ~K?R zv3Bn7I>X?|^9GiaEo1#{R$~U8{9drYi%0GefwJ-_=nWu>j{%7> zdC>fbkOi1ztb4)%WdG7nZc!*SkzQTJ$JA^yL!o~DBGZ_U1G+!2R1(w_3Fk#aa@7d& z1!+iqlK3_U0k1qEM`ZfDug|)|lmG%i{lA)0po)+6h7kf^gc0fTmsCw-J>7a&i=;C* zizItsiJQeY1?ij4eO9krII=+)v2h-rZHeL@x2U?=MLrEs&6kpIoWOmd@@^#f!8lQP z8rFr6!%MVpSu@IyaK(z;XDcK1Ru~G{p(T0<4R3e z<9bg2q4MIc3;+>T#so(+O01J3b}DVS{u71u^NYWYD-T8)D{tA~>4;Eol5*mlA@xtg ze;2U+u0<(UFPkds9Ns_%H|*(>T$!dBa;wLw8n*!Bzqiy3#j0M07;lDW94R_)Yq3IX z*mcnTf8djxBB)3RSmByBbUCDs3-ba|4OqQIyU^6Mh6B`GQB~MIMYX^rYrCSSy$cbg3)5RMcwzrxIDf zl&4V8C#s4j`(TU=xS}WD@y3;hqbh*OIMhqaakR$_`mu+n?;Pzs)uFLn4QkE?A-b}7 zpmGKG^I@XFkHd^;T`KCv9}Sz&3uVyRL)>g7bVZ$AE8_pwO3DIo4$jt1ATN5En*0&1 zxf!c_RzrPe(39E~-uC=VM~30vqB`c=2=6i>J{kv1huY00!q{_u{B&U5P{mHmO=UwH~Jl)FR&g$2CDy!L(J9?H03wJ$}AxhepI7bX&;C z`YX)TqUGCQEB{*kIup>(qncu}>3?Od`WmHA@iY{qwgMJiWAlITYL7A>m21TdKTF|; zw6A)h6NFkdQ3~;c3`fCa^=;FI1ceuZCdBRANB$*vN^m@m`)^|KajweUOBP{3$;;5g z6s@bk@nX1af=4%=*e#g84pDUU$l~N9GqO)QA+uK9G>TAp=Rr=e^Z%?WG} z`*aayf#Z}Pv2&Y4BGC(SUe;(ACouY@4z6Wm?)}6Ha&l%W@{7P4(ngCLD>#&np?)%- znjhrO-UnjKMEuJjD8kdAeGQMY=oXJ52kd_qBo&7&^pkIERe%)iQ;H1U-H>s0=X#AZ zRG*szvd7dM`X7a%sLFUBf4r{>ux(Ur_7N6<3Uzaeq6#)6SVnV23PW;ooVGZz9ApdC zqqhO|UDRzjax3?jNM@C2G*D!R1g2nQgg}t0#wPE!6Z9DBnpQ_Dx5MeK zmzN|#?8vA#N0M&y41C@FrH}*csGwRw4LMs$XCG6(DNA*%nB!>qnA*J+T@ zx`A*?7jmkcnX>F{fwp_+jj$BMojfV(5<$}_`rapl$$oZ8#&sZrDn+MdWSQcrkWRTi z4)uHgXwypHPrgq%8ar*5_5ZZ=-3r`r^fkbX6TIkU&-cvl4+HTQyT)ZR079T>4u;4< zA1Y}VPXZAJDgudNS9)H3`82-ubp2g3E{V}!rn+LNCA>^#4J?6U?*6JctqS_@@Z@=_ z_5^kpJI~#o>>j9!{{EP7sb)UCcFmA5;83W6Ru2ua@PJ4((5uAm1bS3-WEKJj-YUt} zD=09Y9YNb-mcJzhGRqYh-ttLmwS1!!oCowy25faT)GrG#RQ_2$px}cnkcC*(zF?Lh z#ql{uTI76~K3&hoLVcvs*N;){cg#*HU3T^@6v;TnjXiTg`^eLsdeqG9t zeYM|SyA*G?!;=9ZMuiiV_WSG`v!-%A)n#3;7<-{_%e>`{Sy zkon`Obs%lMkDw^gs9awaG?vvPNM*;J!U`3q7Ry~f+o-Wyjg}N>1nR3^2l5dQ2PU>{ z+pYdWNh?dqn~zc^PHJiagHZoaNq<|#+z5t31n;nraAg3S85G4+uDm~&{a;hpsjN^=lBJsl*m?=DxJ{`(!(W2M4~%yC zlP*BMweMwlvBwZv-3?DprYb%w_W4V<+w}dpYGzo(&ub;Dy80EB*#QvsoW5YA@C|NC zpuJb-S2==Nc@Ac^?abH<6VWj>(D!%VUIZ?N8&Co8T@=|_60iO9PsPhMcyM#j%=EuGZS>Z_V)!nQ+qQ-5w=^P8?)(NwZyI+Kz8F=$(-xv40X5$w^G0 zxX`w*$!HHo=x2=sSqW%*zxgTQx>3}NC985-e2m@)y!Dq1J8^m3R`$E+Ah6%Rj_~A^ zr)Wl!m1nK2R!)$=u4PRjIC#9F!B;23;=ec{&j&Sm8p+71H7f^~%W3k7UXqgfgwXhQ zMT#cr;(InRf`Ru*U?VaoGA+fW$@9SSDw46#Qgmco(n{4W85pGRJhPD&Y!t8G1B&pF z6vnu^m`tQcj|fG?4VW;lHmlN@WwZ7O=2Ax$-dJJ+Y1$N5Cw?q|L(BXLCH8A(BaPid();6NESPUh8UFS3I6&ueqFcL7bu zSBzL>9hxE1x6xlk?x%^z6d-@RbpBeR@cc7X*}p;diSo(VEhN8Vyu_7HlbY9mED++k zrfq7&+953$sd*s;Vns7HGS8wzoPa@U>@ z`cts-m#O9!4T(Z-Hg$_*69_pU)HMkVZsnS_EE;GkNZ}V4(&;?GneXjMY*s7?8G3mU znOkBKoyBOKCw8MO^dQGOQ9h08p{VX%83SF}&wo#Qnx|c<^}5}nw^bSTtqVUH5k}L) z0KqeR2?@wvp4}hI$M5gZ#NHRu+rWVS{|3bNbAi5aAuro?%m53RW5KhkEg;N}tlu>~ z*;%w92xb0$%2Au02!%t9_XzZ_dZ;CU$>^`j@-(h3@CY`MNmsqgW|p}pW4JB{eDGZS zNd#Oz#wpxh>~ec52q2e6@!m2)2%8B_6lR0j919R5?|0-x3&jt1hZ1`^hBk6wkGc1O zVBu7UnhMHBkVc><^bYu^_2nX5y}V5;QA^+{yE)gVEymdz%NN3OA1(F`lR)ejIf(WX zI>yPOuv_R7 z9=yh=vAC8yw5$9#{FZ6XL;x%;pwOQ4@fQO%2(f-j8Vv*`0pp9!C&3HoPGq~Lo39Y) z^8uvwY0Y0^g2-`YcF{1?X!4KxDgW!v7&w>Qa5z%`IkR?O;wt?vIdvjBb#tVd`mx{- zjf!DJ;mxB~L_lCmlx7(SBl7jMoNfr~`lHbgYTk3s7LVy!Pw-;TsqY*5A%n3e5Mrd) z2DxmpsdbmGayEr4qrx3S*k1<_QJLpchxr?x1Tao3Iu{>8#S}2j-yBT&;SrWW0^GF&?rCn8IZhqS0&7Y7r;xGSfD{(>1{yh99>!$_G zo`*t#B=xH~yV$ew)x4Zo?r0V4y6`1)l{Q>DMT;vbS#Pl!1+RgzT=|3)D_n3q?S*@bX(~XZ_lbW#z&9Sdh zC+Mvmos{$Kh<;3Pf{uQsMt=z`92{RO6*IR`Hxh6zT^i&f&Wyw|tD84UNIzrB z*Z?hRoEW|BDWiSy_}wvhF8v_iQ;FFk@KtUud|tZLR~lv-&UnwVVSri!OU-6XO`em%Owlqaca$CGOb5s+t{}%<{g_7 z*FR@+Xwr1m=*=Uk+i<1tmar`C={KW!?b)v>mUFkVzB+Vt_BoP5=4ycaB~IJY1FbS) zazj^(E($S0EYfcMzJjL-hY=dA*iWtwVysS`h;NsTvgm9!u{Yhg?c3xpmFZFW zP!#o}yJ-GKC+t6#PoQl|dFX#zn$ae=vQ^m|AJDCDaK34Qc^`OMZT?L?BDxI^Xq9s# zk7th?rh`zO9jery{Tk^MI8^q+*pFPLcjwDxO<&kp^wBjhVudp+~;X) zE}3(`JM`T51o&hFtWBN5Q>gy+%->;}_q$)f$o;}(fDx5IX)lPA%nKQ3_DRYz(*KSl zN%;E960JRP-QHby(TkDI9YvT3?+9UoEff+lCW*F*3G@~!n`9p#UEj44MQQ#tM_m#} zf=1tD7{)=};?N{rTY+R#+OU)djATo^x2h(%TkF+dTcd*XHaZ1JajsMFGyZSzC zH^LOi~_h1HTdMROvdR+Zqjqc(hH4vr7WfF7aSyZ z^AI+FL3rw}5$Hsr6eQ3nKgIk!Skz}uLDn5XF!;c_E^O3zK8|nUm>Byvs_HrEmZnS1?b1fhDg}=J$q`;SP?tTSC^k(swbZUXi0R;*|l@$LZgh2cM@=u+Wr}qHhaoxTl=1Gw!Z06ys}QZ zC$7^k39`5%(^~CV4WRF`f$@HQmqboV0d7{dXuo0|T};d5VBry`Io!15ydT>UEvMxf zhyG3ax%ykL)fC*7m0l&x)`<_@^m{@2)T37CzFlE-2KVBx=!IQmIzFIZ7GCrXOR1z$ z7wh;Ua^|w(p=`n_#K9*4q=C<^6A5{c3;c_AqhoUoMqaM!}Z0&&~JPpoJ1ay@OI zxYBcw0^IFFCgG-uy^hn>BwpQaaB%K^2wf5ze)5u~x<7C(wXt4;Z@fLi4=hz~oIKKU zdLCfJJQm&V`hMBhVpWJ;8!#J3zL*mx7F_jdN$SVGcfLgbxMr-qKZK`%>U%YBnC%~h zizP(Z_Xk*WSKS=*hLmpD|Lq;UMoXQ`%P9$zs1P7;Hk~Vv(1{_Fvs}w569?7&hK?`J z+gX#$mEPBEHa846?>vO@q=XU72a6}>Jc7i;FNo}EwLVGik5B(H1Bp|wXPWOIIiH{4 zwzh4MwWUp=;E~s-M=e1#B&Z_#KqA~*J7vx^VVIluEN1J4N@7h5Lc&dyUe_gyob4CH z`Q4HDUOf;f>W;loK&;L$(vH52*`nai?$lLvc@lkkc`)!wSXNQ%9d#e7~*<;4Nn&ZIZ5Kq>_BJ zMbbG+dBa{h7VfHU`heWW^!cJ+!Ich5Ua?I)EOU0<=>Jb~see5#1oK;U1+5Ni>D>Cd zY2dKr7N8@yE_idG&6WAJG42@+?=HWSx!WeMWX}vl>;Bc8`&CaMcqO0_{~aih9OV4F zWS+WH&wYR+O+=6jYqUtqWy7DH+fK{#lCjQ0s+q8DtpHZq#5bExEPBlJe?bg}D|5@< zFcis*qs3JN?28NLEI+3&isDmd6}NBc3~487uxZ7-*yTOjRuU>MMhd~I`d->p{3$|NG7 z*SP!yia%7i4Wpq_xD#yS*2zYQ!WlxT1bvJ?Np|d5&v81JaYfd48hNUHrE3A{I4Sr; zZo8zGg=|G${MHOMzS|A*-TGCXYsfKlyt6>jBGTT{w~s?jBN9y&C>){*C;xfDBaqJ~`e%w}V1L1)NZN9&K({Ojq`xgYz$7O3o-_F?Yu? z)ix(KEM#DuefNeTrJN+Z4al>PDQtlGA(Uz9^B7R+JGfLH#Q3?1wS`Q|^HVSbUBfzdW35oCOd#-hp;*q6T8r%qBG!6gF`fdlBlwwg( zSB;=aUd)?M(Q&uhpnRGk3jX(-woGg`p4?8!hGmXzSIK@3xUW*Mu#nmM|CJ?EhSd1$ zCuR83$mlLaj%6k2|6zR+2l+P?*R<-*wdz@DtZ`!GDhTF$WZ7_x1f514V-B7+LuUaC z=?2B=b3KmWg(mV%J;p+kPGAwSka6WnRk9w!PnW*E?w?N&9g}&B8of>zeTx%q)QD=a z*E|eaVKD*23PyNJ;HQAXl`vdcuF!dV||)u)Z!>rO~@t>PaDNjx5+dui~bjM%kIH>dXrNg#+9d%K))Of*ZF(A~f|R@*BHx#Zic+q(%!% zXk3Xvh^B10g(b^(A_KKAWj+yp=VJ7xsxzNHGHr^Xb&*ZSkSI_4GF98$uZIeOr&^iF zYOEby!M|dUIAo(oFspfG9mXBnMRteRkdb&k#j@Qq5~BIoqV$*d5Q{_Hj*5Ra-2r#n z;2Kf>teW%qwo5Uwu>!(=%qm&ixy9POr`ze<1==daA#T%SYZW!~5*d_4g=GHIh^IaWLrf^gs_FeeUp=L+g z`zZziZ-kI@tO(+c=Zkg>2c;L7#-?qqm z2a_JDqB7UTY@ratAO0SbU+$l=pa2<)asq-rwNTXf<}bFh-&_O{PVAC~Iqoi=B1{;w zB+869^IH#If+clUC4UPWaQEY!R)|=AN)4%h5im+Sp3i)g8bmNYg@d99}!TaDY#lMAz3hjpa zqx^>KlOoi&s!$WsxL-~rjWWtt^a1jW?B>$2gt>i0dLB%X?Q+);We>WVIy%5BnWWB1 z5V$G6;hfI>fZG-*lj<{DE1}7LQOAowvvKq`e&(RJK_e+0T4k=8+|`YP){-xnlQAHe z9>aa+>ZH1trjo*8Q-)%gxW8gpJ9pbgkQr2|U(ox0v_!u)E`%fvk3i7AHCt?*A{HbF z!fjBJ2w5wL51n%p;3W~Q!FMJ?s1}o8-Qq3hA|(j&Z6!2}uSV;_Xc?0|99!2uyU>Yb z;K3-`ba{WC*eAd;94I>)pG>)4;Rs(Lm`QPHj>fDs!1{}Aaoa4l@Rr1vFlH$$^=Equ zPpUcQ)Mw~F!d?+_XM0@!=aXXFpPUHp4u5ZU{Ykq+&3zK^w79{>!1l=tF=sCa zyn3dAtbo2P{ueBBvQy|>>zP-Poyq-7R1`b^`#Sj~WO-4~f?D<#dvXp1ey&nw0JPMPUc~3JI&u@mbh!d*b4W$}Ah>tAzI+6t`OSSp zDW{x|W?@KTCG0y&a&=4NBQG&j?{9{SG|bDTX&d`y?OajsEO|H0hfl65x!O&rd?X78>yv8p0f#3fy#U!L zl2P>jKK}UuDBk;PI=-esRcC8)Reh6}V!As_fsY6ICIW4~fNy@-L^g|3q#la~!-#wp zLss=dBH`hWnmhL#qO^zcrD@|f*4bNYqW!wZ$FM$`o98Yh884tXmrh_pz>N(9K@=Mg zJebP%sT@==WKkC+i9&!K%P1DVJahKPlW4YX+3vsJ=sARbnCHv`|HRI+iLkde^IknuqaI|*zn zDww(yS-C1!sDZ9%w|=a!%N&CjGX{VFUeo+7k}8i~^7v?+KFYiQL*4TZQb3YS;$E*% zCW8fqyjX_*%o;;F6A699`xkN?J*1Pw7%1ThrXCQH=6=j^=4rt(*_TxZE>}fDy!G)? zDPdI8b_Sk7vY&!fqp_Ui9z2xt{%aFi{Qucdu?q4Jxj>kl^SLgMFk>xcNXuo0TrWtMr8t4?<@H-s^^6%)ns+LMKW{oAyuJQ;b zhgUY#tj(s6gMs;d^k#UHUTy}DPYatPr4B7tH*CQ^Y1<7)VQh}7zFnRxRHZkwS=99m(j;_uM{`0o*_wPH~PMv|`gq`lx&9TwST_ z8`WlW0ztP;DUi895l4^1)Z0S*t3v9DPn6r240yb*_%=YSY^N&rmWiVL#KYG96j9g^ zZ6T|xpKa8LE`uYnqTJMx6(YrJzMRL-9v^eA&YrGMxnXUaSgZV^XgYXRtQNY4H0Qrq zHA$f!$j*>6ACAKp>5@&+Jg~b!$UQh$1kqOaO)1Xq4zK)fQ%VIpfzs%=LT`3yre-Ks zHAuY;1m8TbWH?akOV(+Lv=E?kNYL#Et@q`n>vb?T@Y1{9E@zG*{MSbIwJqh>_+G$t zR$p36IN@OHtiytNE+4`$%_(_F=BI(M4&U8prAIz3xbdzepDRGV)|)bw4YYgiNt0&M zsrEY-cG3S04K91D{U2iu!SU8D5Mn`cDM{{3@mQ^MQ~I$g3ZZiufSFJs?c$Kp+mCq0 zC5c`9&UlgYn3RPdcPq5hl2F=SVC$U=7wq7rB<&Ik3Z&=crGzDi$jr-%Qn$s`e(j>b zldInuEhE;P@D1_^vapNOw|)=GjePHQH`3dkW=A*%KDQXG2Z39+er6{kF?}7$A0CT0 z8=4w14~RFZf(Q_PU%{-awrs&&y`9N0w!YZ1Ca!S7GEp_&*5?x-zEOaoea@cFah5m>Nw$ryM39lPx<0fZvsUeS>Q~oR zoWUU4&wn2N@vhM>o&p6ey3{}KtB*;EvkIy##p}Gjo_5(-jYK86kCs}CmcNV$cAKgH z5ps)(Iv)N?%3bk$Cf1VvDN4rSJni!&ND*Tz>U4q+^fDM6UGbcOK~$8IO))3KK0bp0 z-LCAq=1?FUTo%EAEZf0wN|H{!}i6PNH zybzm36(zAHkHS2K87!ijhUkZL(yc-0d*92wnEqM>rRA(O@M*kRHsz#W0qK7 zCr{k4vqTp5m>tcCCa_m4&sER;k~I5Me06k2YUuCyQ$k^nwB6wPgb_M`6cTA zr>PJC9~di3ol}O-tciwUQJiFhHtBFv)b!El7$YNurzsEC$6sGCCzj<6c?wp=c zFzXst!w2>Q6`d@E!yzR8(G~e@c6EJF{#;%n#YG&1xctn#YMqiZ0wv$9{G;KCW=rKOcNWbn!Cu-1{T@fPcjIu%mnQlV)(F#KEI8@4fd zk$h8MtR6FYvghK+5O|FckW084^S%@CWTACimJ_|M3LPhNLHJxsfWFK29S&!Ca z{9@dSKSeo=vnbM*Tz|GSO$YQ=&scTVdNel7;0EzUP@oNkXP{SH>!t70`vk|@Sla>8 zc$!zYvKFkTYJE><-y3jnx!TJ|l#_a0?5*Cr3nO+EDm zHJ3hf6S*AbPprtm5Qp3mvX*F2S$9Z;!z1X=svz5O#sWVN;_gBFQGGpjtL`ha=vgY> zJsJ&kc@U7+cQd__K2c4fl?ev07J8fZNPN$$3%j>e_lYG;2DXk=t`P=W$T^QC<{^SL zy-o2g43|b0yt-V72;oB$USoZK{zB%k1T*)gyLc}grWVlZe*X2wXlhBkZw$pD{Ne~= zDgn02lOdyebV{|~|L`o&=&f6dIoc1IT9&EUP|A!_tYE29Q9ylGGyMCR$74qAEsy5h zC3BMRo$kXfy7|Pcl0$8Ft3Pn|fx0Zs^xh6wArWRVbrQb_sPB&Uz&OKlZ^i+JVNmR_ zaZ89M+?^>PjLPLIqj_K(l8ADgq>r*aF8jzn2d9WRL_M9Kw>e;GQ|I5fl5Q~6opgZv z09Vm_8v&hDUVZ1YNzs%<#OZws8<%gXi5;F4oQ}kYa}`aKSA8#P0IIen)+yLSFDuNh zZ8fY0Cs}}^r%!(at06t?TE4tz*R6tD+{(+oK+3r+bpK=V^azj&QN;u9b7rq6e5Oq$ zuCry3>|aZ3f9l2({e-rwM!YNlx?D@fs&|d&lJ!VK>L8W7hm$T#H5m1v97gO|%eNw} z&Y}>d553izezQ1Pqk2{xyhk3(za} zK6Q&3>j)^4u$}x+pm?weeX^2b%kVN8pd$+aEr^g#schSj-d1{^O%ts5_@V5^&=<9Z zgMTEWR=i#nnRc#jF&=H*hAq()1=Cq|$Tyj8;3kG>-=9nDDa10RI6-)IXfi32vkxm;kiN42>lgo0_@sPh_1H%P=&j;AC70{Ze}sfg?#(> z(qG$|(jdVXF3;KwjV-JxBekr)aykV)ZD}+OtR*AU2JG-&;aatuV1+F#D1T5{tgS1^A-??ru?6aGHOp4qto$0N2ifr`ZBe>f>6Pv;$cY+6*C+U8YD6-u zXuhGbk&)442)X*7nyP~9itNwMyfXJo)$)fIZ_`8K!{+zWqAMYyi9*;s%Nj-UcD6j4 z@fw4o+)|YKmFoE9kN9I=hVW%EAQlFQJGI5%m|Hu-)f;FgTA29NKnqnS)gVSB`U~}a zYTxz9V=GKoVS8a3;;#x7x4xF6bQys(a%wBSX6aVP0J0wi#5`(1`fXuwXaTR9&Vwy{FnPXOs1(=#B8E3V4;dOzmkX*L^=M;W-wB&gC z-nH8am7s}MwCv8nz*~7|?9-x|w&T8_&`s?%n3tdP_uHO8oi{T$n`B|qdQdd{#f`1} zRB2Gp@?NB8!O_2w?hEBo|rnM};5ZbIravaQZsbeWo@XG+DGdpFeoZ2@#$%&;;3>XD2nNTG*Cub<_|u_}kl zSnQ!Hmk(t58u8E1e0>VDw|K_E?88IXe`|JsKVOiY;R_ME8moIr$l+Ce`Yxz7G&p{% z#V6A0OXMTRvyEp0s$>mq;3Qk!+h^z!xwUbXTC5+j?`lW`MF_jncNkSH?T*IQiS70E zqUh0>rm3Vr^FyGWT9Rzn_NJ7=miaxX_HEBcFia|9eHriBzdVj<#7QG~?dR>j!Y;}) zy0W^CM%>dC)tuJ&KVWu_O{o}rnZRrFl}$y9Q#}U~ZlNSK>JURs$D@9ncd@Z_3#aWK zoi&;dL&ntDL5pJ@$j*jfW%r^S?{1MB3LFuWsXxt%WN;hcxGds{rIK<3+p?%pkY;n) z`K_l}7JaZ5C?N7i8F}$;8TJbd+Vy%QfK8?FTh=Q?G*#ME)AFn6bgu7<4V-LG)RENZ z?>s{%@S{qE-@q-4@=sGH{~%N|9K=1Fu>C`atI#nfg32s+C6W9JK|(~;4ZXC|Um{mWRdfRb(%H2Bu7g2-U0aFXXjdWMJ|2h7a%PZqMi8NB)R^ckZP9}sPgfTJUS!MaFTd=P4P1{|6xRSq~N$$|59@@#@B7JxR3y2Td*U7L0O$VH34PBh~*D$QA7sL;)aNqIq zVWtAR{T^8hyyq3AE18wEbaTwr6C)7hwat_KDh1RQ`^B}qbIj>3439Cy6KTf4)%YJ( zTJ|{2jKHJwQaT&GOqL;pZ?AKIW&@yjHQ`Lpz6uAXGxhXIw7bZzt#p1tY906^o|AM$ zNQ*T44#po{rG$d)a1CuL(}&j+h*C@@SX!wUYsuL&syrAi?8!=#Ra*yg3I_X6K_LP5 z0qF>lPg+qmr3bvpFO>*@-^;nGiKbNrQxu^{di2WjvYhkOp>Bh7qIm2>a(ov}!|HfU zBX;uR<1xY<{0AC#)f8d8;lUYm)`4Hb$jY#=QamX30LMDJ;n)atmNn2b-N13$ynp2v z)?n;vM#MO`(CB~ZV4U6$TI?4n_3_DiIOzI5;c?q4u9*S^)b}r-4zdPvi6!mM3Y|CGjYk9_>XYIzmmgO1E%je~^yI zla;Q@lt_Y?2m-}q-F}5RZ7`tkO0bGgxTvY|cNnx^+t_hyU`KxCpMkjNB&c8bq}q79 z{C-|vCul-2*o#FWGMU8(JUZM7akn~N-8e7En`*2Z5Z_e1XOKz{I$OpDdh(mi4_$y4 zH#xNeIxABtpw{9{&MUcWlhM0`<2^c^=skwk$OV|&OqrM|P}-?7e>S?RTlyYPNT}K^ zZPuP^&f`5hv&7_?bk7l2s8R8r&qDrd^054W+FhCAA<;rit@Lt3pi3hyq%=4+TAz6F zcK^sV&RUe#&(*tMPgDu<wu>)2K&SX;UM5>b2Zfa^w zBxC0Ht_xJ!G%WxThW?R%zM zz@YdrkC{6R>GewqrBpZTt}@so47Z<^NVR$fuRvZ32HP)GI=J@krV%<4KpAOBs)=9u z$R_|wVd5<6k6)+7RWX;NCx=SNmERJVO$DQXAoXLp`|(P0HVC zZiBcOX$6k_F)$v&VPtuxRBB5NDX8)fsEtq zhNH3X7FUX}6g{5@)mlMm5xxR57lN^~wgq%2WY#y^rzZ%Vy|T?>qXZNy(QR{H<=)-h z?b>1~ZdjnxhbhlRC14`G4)=?UVW|p9Jaa9hu68$@n@QH)!HxxFg1$u1#~&V0?r2%T zTfj~0MUQLSgja+ZQrqF-!~6V{0{xTs7~naX6la4XX5(}CZCb`19Zhue77#9Cw;bu|upajMRIOhAGBOQG~XDZhW-+#AKNaxz|-B&fCNtkZgw#!9dI z((BHOW=miChWGD@(s!OuMU?+I=s;?*5>0S}=qL+U;{bUD$F$1k*eydK$0kmQ?sVb( z&bj<&I8q?g&Q@~`yjVDF*4jHx=X(X@Q~fC@(V^I<{4aAI2RZlE?+N*^ZM+&OPurY# z1@jsaq`^+G-<0KsuTj_F1OAtw%(&Oxm{s;2rjW?KYT}}GE@6iA1o?T06ZIw-A-=h2 zyOHh8I`pmgx+;*B(aoR$-O@hhqL(%BNfZGnV0pEsDX9d~3Ft7bTD)d#E&3^AH*q2N zh?VBGa8tPt({6=6+9yY-y_LQ7J?pgoNS;k0FrQcQg0*u3phnWSKp$g$ zx^^#{hjQ**!kAtpsb(~jLoL4b^)G3Pk{J7HpINC=XbdJTG>I z+^c0(oz`S~qQmFtOwN>`%xnB6SL>S{|a`1w2}LpF&ntGTyx z?0OKxnDumDRAy{Mn91*VV#q=Zerc{!1Y;lpjFZ2jnikV({K#2hoUBxbpepx+yBg^w zEk-y23`Ds2sX<+#i#6^81)D+wlpaB8F&ct1)8Hnj`vKi(vLu;MZMZ9UBjzZZUQ3 z3avbV`DD@5AFS!o2&VgIan5$Gqf6LgNk-i!rz;0k`V^u%K2dB38pyHL3ze#~Q|9HN z(aN||AZH(#a@)P}hoYSO$?DB;yKc9A1;tHNWvNv+IR_mofkzgsvaC{VW{>^_YcR3R z>MPDUwI4$(*6gO%TP=lgad$^3%zA*2GAH?V1B>Su7L%LhIJH0)hJH7zCm1n^lQ*{> zpm)yw2M^e#yz-bmV#Q<$TxZE+aH0KU-9SXs2u^1VfeMO@&KMitq9@UU@ul!DZ@Mx? zz^njPy1H_6bF`gP8tJA$n4W+ZdbFWT4#W8{B$!&j_x)@7!%m~_Zdb5CDYBU`Iuq{x z+({08^*XbJMTpglt_=xxj<>brX7NK8R54W?*fd}SlT&2VzWW>CNG^tsi)7LCJy{iS z%(*NRE?U)}wnf-2=PM=5uK)at> zlhHa3^=GFi%3Dzrro4L5ixHPWA^CtFnj(@sg9@2hL(O(8>E$+}Trx-Euz()&81`Cd z4`$t8VZAzqm~cQDKlFGbm^(^lMc5;DkkZ{e<{1e9#lzCHl`0K_B57BMZSYE?jcxLW zcVuAx8~|rqqJ|-O&Gbn9jvi0z(g9=D!E;;SBhpaScg;=3%%2#oae`Xk{Z1H2%AMZD zu)P`>oK1?u49_Yw;@3!kA^i6>{20MEru0a+?H(^Si{TH!Ia z-&)Qovm_OX3Lq|KxLCoCDRj!%0^rdq&yY!>VM~V!VB;Owge_lQl_}_KdWveeTMw3b z`d3K0QZOy3TGQ2PzCa(9NGLOT9T?Kq0Z)$q^9@AQv1QToso`i;g9I8ReQoy?!}V9ah}Z;a~r@G zkp~g@cOrB;fbCwnoI;B9*?Gk7nkPnO$qmb#^*mP@t!+1&`Dv>}>rb*zYT!I$N~YF<=zi89TM**1<~tZH!T=k0TCZwV`)= zbm?0ncxUxyk*ZcFvn>C6yFjdWQwmZY*EJ+qihq_udDC%5vGu|~7ac5XOvS3=AP;Xj zyC!cEy{Lv{Kh(Ky{b|7W5sRc4uCsQ%=xEB2nM0JdSSB=Pl_#^h`^_o%@ z^^XW~y~!X=n6F5E<@BjJqyUM_!T(g}0_`h?+TIi6PA=@{;W?Al`AeOrqRvBlp-r*d z8d&K>$aTRFl9e2xdE9?$x02tqF^w#h zQA}oXe8mFmq!A}MN^M1g`*`0Jh|7_EL|Q?`MFH5GukosXQ{W?^HUFEm<^~GkgfH(5 z(g{)eXV(AoRB^Gz(?P#s)#?a6>TCMf+`R+#(i&sdD}ELL&o6Qb>37Wo`@kLCr#SLn zRScZH=*kh{mVL%Um6sstpK=|7x@RPGSYnOP9Zv#@yPoj1v769uFG%o7z&_-K$K1mi zUDte*B=iyQ)LvQt?$bs@A|Y<0YasPj4dC;s{#35jryHC&cRM1Z@Q4%_7edF4u545* zSV%9_!@KojRvu%>pow~{Dng9CzsVa%?G(u=HsI-{Wx%uG()Xe1e*M^)oFfXNyrEC01YbUYw0A(rS2mX}9s$hrWxd z&2n#{lKcQrcq4$pw|IYpavJA(8=#$h`2kbye&V$&ZX%ILP6K<+^?FCc^D9;ZF6Gs< z6^;TK%2!Ose(jp@`mVlI$WV!b^GuSK^btMNw_vk_3$(i;z+LQQwN5Ou!>^x%9OI*+ z0Z>HC<|y{7CA&v6h9NsIr^usMGUd9a> zim@Ot54rpR;#F#nl%SsjcR*DnYzTP?xy;1_FWI#ZB9+t#+yZq2cz*&olsfxw+sZm= zjoQg;pG;QGT*7&^>fr6?(~cboU#v&7|0q+$6UUHt_Mg|BDT9NfHBU9#UO;dUe{pFh zp|eQuF9mLVvXz$-S5L*Koii=?`i#ncRKK32P^ub6syH*7%OXmFiKJ#gB|}(3S#hVc zWL5%QxAG$M`l+k{FN^gz#{Av73C_F4nm-Yg@-HI?U11lWtUyY}N$rKn@n}{}$HTB| z&E-WKxO0nf#x`Wv)zPenZXm&o7aNgEN|JPKaF_B;N;k9 zceMxWMdJOP!jg{59lI3fzdLq%cMBMhVx1mD@+O7i10{z!%)EtMVNMD8y`hA`6O zngWF~`zLzHJ_6bABLGmAHx`$cc2U-dil83`Ib)ymLlmJg?HjcdmHsUAiXIuzDkzg9 z3;v5(9#orvE9Bsmt!=<7L5Okw*>c>ZZ@RwmGMApy)j?9K^E%A%cb0W-%mLQoi2(j| zkuz@>gkevUQ@x<*DI&vtNtq z=KJm)zkW$K)5|A51!$=QuPB-FX8R`}|K&5c)!o>+%G_9OIka?X52f!ZZcT`0*y|(k z4SB9@xw0Ph{$I&!KTJHh`>41vW=s~;S9nggKAOb^1oT$Z>9b1CNAo5!EA;=pf5>%C z<}(Cybbv%DYxbd<*~@>4`1&= zLaY_x)e6%rjV9qr-l2<&terqBj%_uI;wQ;CkH%$_nC|~-~!~Q2XbxK^|Z2kE>RqXfPq@#nO%WN z!A2W72%`|V=IVG9sZ)jxZ?Q!MqKI;nJ)NczAb&SY1Z zmfU0X35abr{v=-yjW3QZ6KG#O(TTnqQXR8!}f z3=7JEMHru-z_$g3X?mgX^N+YD>mpGL>WNGN!6(7Dagq;PPOOdx3$l%F278csIUmrq z=LeHO3kl^=M?;>s)yZ+Reb$|i1XbNaxR4Q zps-B)A=r@`Gac_lhwzY~n^X75Q*}Zlv1uQ{ZH48s0HNH93!CORW><)x^5e$E99vCgYiHO zlQj-4XIoHzk5a|U39waHq-h@IpkdLFW9OhZLSm7^&|%$!whm=)KBT_yyz zo}LG7!*%>KaUnhLmYch)Q{WFE?m8?24Y_tTRqo|oG8sI}m2Sg#^CLcPy$#4_b@C9& zt4u)HO%wP3l%cbLQn&ycASvN_agLr&G}`Hv4kQN;mnZWqP-)p~3dq?AvUX+8i1~vF z!bp)+ne$ZHYPvsfANKA2klEc1Y$v0wHb|@M-+d6ptIsWGN_ae%8fGqc_O@!h2TJmc z9!e2+h|#eLoYz;ocs(#zu8r;M7lNIg^%c%H`i+qUcq}(c5ydpE!b6eDlm%!F--q2m zbrBmJEAb!2QwymwE%v{b$FDM<%IYln0tzLI*mb0aTNn?YkU)hgI=`h{%?W$kTY4uWKZ?yoAAy0w&wlL z1K*C$t_NufErSspzI+hJJ9iy(!Q1D?PZ`3t<@%74%NZ>z9#4KQ-nd#pYd7>rhHI-i4&7P6pfu&)OenC8oRpFkOwzN@+ud>fq|4xb z(eOR3&KTP3m3%|)6N=$i`dF=iPH2oEUM;h2AiKbggx%+xba|yk_y zr|zC^#|*oNlMrS{jmMcDYg|B@ClJt;z7xbXG1mi~pXBX>_c;6B!^Dwg2-!SEA#w(+ zHfUo!hC;3gd%G@p(l+O|J>jsGEL1GdgQdVyA@WP510C4NoXiZNOjspYwEtqZ(6u>{QJD zs&$yzoFhUO`_;Z)o0%RW9=2rA6V9=De96=YlT<9D2PKs=Ayy|NH7A3i#7Xh(A5mX< zFU|*iw~q*3Z!NX!BFAi_3|0P6NX40&5dzi_$<1lG{Ve^5F?TBaEvtD3Fv96?=Xt7S zTU<>&r-U|b1k)~sW3O4uRztr!A@mAnjJU*3P)wp<9}lbSbo~6tgk2|0b2)&9E*{2x z)q9`GUsnk|?m~Crm^28?{8+O$Qx5f&@`dqO2*O!%W;|K);8&4Pj72rTO=)iK>!hf+ zgUUegisqhDsj8}6m@+@WHw!vL(a*+}p{yPy8rMBk(tw6%s-uWPqn@_jm)nz$eKa3o z{$R*Wm{CtyJmvC0^0xNRMo_0^;tVmBkK|SyOaZO|aeF|LfW5OFks!KT(2tO&)S+WV z$7dj8krc!{Q8r15k4E@LMR@Tq3|y(@tUQYM%q3YD3VWWhq|oBLaq$$KHXjKQf0D!| zWACtHRuKK$_OW;I-)7l~7xblh6zrw@c5x%+c`94B&y-Hz0&{G|AV!#%CtAJM%w97T zq_V(!Bsso3kbbWyc~-kBI5_h`b5`g2-!Bnxi!A5i$R9BuoJ6wfltwFYtDj9$=AZ~q zksA>x6xafO$u*B9jOzzY4_RRaR>^&+T13h-7wsj>-XscO=9ze*TtR01u#?h>WmZ*rZ^ucVr zYb)yiCRTDfu+EP@#zE9PAj1iXxG+vOcZ^cSSGBih@can6f))rg@HiMB(T1>#+{0^m zd&yWIxoqRTV9S!X;e)kJ#BA4XAt|n`>xv-6s5(_;vs7yL7wMUafVyji8+JGBj)%46 zSRVNBx76#?e-tE2k7I8t%bL%ND}pi6MVkTn!4fdmvM)@($&= zl>?S}d{d&OE%rr-veB*6uk7)}0kXEx@Vy_K9>G_>6j?I{E*ab-j+pH3EqyIBafq#8 zp6hm@OR7;?U9zVJwhb6$V+oO@`FBzi-yFpIpYI4}oGZ}@NeTXZL-N)407^p8MDs@3 zRpZdYxRVR!hVE*h=I~JQma6Z*x)%95bT*bgu&?}!cVS}x)p}nW{c}R;e7`TaxQu9} zU>#tobQ?QTs3TnMME5)49Cb0-g*_wF^;)?_BP$G;1dS4s^Qq2ql2oqtjaj9~EcX*B zxwo27cKgAX$tSHwz=q37=JKJrYoQ%4Zc^LJ%* zJQLv^i6|#J6FoA$R!E5Qw3!V2nuZ@v*}Ix(u$;O&&7dT5j_J^xQyq;`TCzmBDRpVOZzYqm?Hs>J z;7iUa4BD{gs(KUGfQZO6ra}-g3L#sazAd+`n`6s)u@r7uV`S(BRiMzWl)3mszYiRZ+fKI#lyJC2^k-Kzx4|YVV#& z4$eu~ps@?}!EFntu$&_5gc65xU%@xuuUKn+R9Y*Z3ODo`DdvsOpIqW!gD;P<(KM%+ z8d_n*q;5exnSQL7)JB=e6aNd!Mo$DGA{T%j@&0+|SIJSmc6(m(nF3y@5p)N8W_}`3 zFEDNJQm-;RU?r3$YE+r}QAl!++wh&%#YQrrL~=SfLLdIpM{Fol6t~&v;u~m(3#$-# zkoHI!U56;(S)dm7c0*IrHQ`(`S4Q#PmfeoDCF1upmI-oD*ELl`$7Fe6C#%EvMJWtx z3cVP%h0{1^QnqN&8cxN|RIT&5&r7E+t|yu&Q*vbq-pZ;C@5DMD2Q~?duf@EhvqfP)d;Y`V5S#TCy5V?AzW~dG6g& z30e~u<8P|Dw7cUFmfvItsUR|j1g>r(m-5P0PdKUI){I^RiSh}`fx3nYp z_!adcsFTiXWq9kcsuC;OvB#mcygSFrbXPK60u09C^sBn2e;FjD-5Rhg7fTY9nWge< z(?|?A9qr^`2vkKny^`&FAp%w#@?c99h?FSr8*IR?z*jghUYf>;n zeJ;395xnjb`(uVpqY;V!H%&6(;5!Q|SE5k)H>_ME_wq@e;&SfBq*qk#f{At;R1 zG}1_DfNpG3Vv46E6lyhqG#cYbEuK{Ge`s!vCu6BZ$whipv0u?pXWtq^;q6=3)Lj>0 z#el6a)5`eKyGf*E$$s2(P;FtJP1i0XOdJy>Fk&eRt|b?P!$_E|3rPBM6po}Qq#E*TBZ zzbhMHFXtSJu=Uy#T#)tYN%&9Y<>qGd48A&AJg5!CVyD!Y`eeeW@=aH$WjCa-(6h60 z$c8bOV?&3+i&BkDl6PeD31ilDtzzY%TzPRecnkE{MV)1O0v@+7FB}$M9i{)tof_{jj;M+!(vwS>)!H4?nzTF*&j zc~Cpg#BpvDW!PLxk2uQ?_qLz)mu-`j1b93T1>7_qrk(}8lVcb~6P5=oftoEbn%U?# z!k13DA|Cp(KAJw3r`N0gQx8B5jD=YNDbeY9RwiYEk0>*5+77kQrJ%Hy+3p0+DaRX8$X$f zLy z$~h`PUZV+pxr4XkxFa8v3nvD_-S<7#DT1IWZbjyZO{H<*DCGCnfEJA#f z{Vhywl>$h#Y}w;lv8xAYP|1!SB0XT$t?Sq)bf(a)c$-VC869uX8mN%~V+G{hRv<@| zl1Cc7BV24^f`*Btf}p>}!uum#Wtkl^$ZDrjHQH?tuR01aS?E6s@~K`9D!?81x)V}yfWfm zVS87Wu5T2hIDeRPxn~+hO1T~t%Q*wjAuA8WMdDxoyPW^!RJ4>AsM#N`+B*@0y*eoh9-qIT5LKCVUczfM!D3~< zXV(lD$C~g#@=$aCx`P&tx|0$1kn(!^JBx@U_0#9Z<4SUaDfj{;(c|`pBWfQXvVbsv zV5lr+kqmu^=F6a(;-7)%{^;Kl3mvTMtDNpxUJSwulKKQaSZAu&D2}=!x34wDHJ4lJ z8(#%GWdxh>ur7it38u2XMeg6gZY6w5^I4)$_mQm+W|}SwSD_yH7M;Q~c%YRR@*Gc#)^6Iq|&gUCX?G;kzdt7 zs{Nj?0nrA!$*VCap*OX(By0>--VYfrAYFD|AW`aoj9l5Ot*+=myR{|H345)naBi5t zQk&MuyZtc=b?8)NG$8jL5XjYLH{KL9M+hyn7}tSzF06Qy@DH~A!VKc_WEz$7)j&mx z`wDo{S%Q8nov<5~W{BF3@jSJAd{GvzvRh8a6=usf91HR~Cew&SW_Ek&7|h)2a71SH zos8!_mB|zy{{#VV6svW!yRBfwn_iM5jOW79#-kf_;g&RqruMae3v8V$j+5Y65OZ+E zJ2IFKP(Rlo;I;ftsf{rXTxDg=J|N=kyC=pyR#$wz3cMP#x~(BimW$T^K(x6;jRM`& zBfejac6_8Vb1xR*abiq0u3v>co1uI-%XBs%YW%4KQf}2%R)#@ho)g zOGpK!OtzWg!BVq6z?}p#ovG3^jeApBff{^ow+@5>Yo#5Le&hqq#dlsvRiLRoBCbwd z2qU!8r0-jHI(^N%j=G6V+vq}cqDrK;ZW256#%By5ap@@P`$OpZD0Vt7X1~MLY~Ary zCO|R&x>~}NG~IglQ|P}nTOWIvvYG?JXPGme*_+S$-Lgrext<8M`a-PbK}(ajc$sZv za$%T&Sx1;}<~6>m<%$|+PPlo5Zst03b^ustPM6%H^5H^FJe0q>sPUPY7Rk0 z9ivr5a0*;TIb7o<8suZ>t(p<>UeFl$r~g*eY8U&!#K5i~daFt|xuF_+cgLx|TT7u^ z(Wg8%YZSBHD(bS+rtj`k;0w+5!6fF;;u?O|0*7mRRm)4av!Knn?`g6f5x!--ay9d~ z-GXD|xlALXkTg?auO{6=Vyc;U8rAtbkX#I@M&8e3KlYWF9>BAWT9&*8v-jARSIU?a zcDkv@HeViA!K%24K#O^unUpOsQVJhoTE#*^sx+4aRrSU3=l@l8f{;=K6WrQcZ7lt9 z(tS{Af77L1p)Coj06re${D>c@T4(o4z3Jyd^{{?J*|snGkh%e`itw?+)KRc3GUU!X zo$Quc`^{yIz9S>v9cUiDkVpFJQ2+{`GU@zTyN|h<-0Z5(>g7@a4<;MVWWWp8$Dvsd zzR*+0KF`1xY|0Ley2Es2ly;e377k+(G9DudwV0rM+>)3vp$4`M^%4!hinH08!|6qh zs?V}v-l)x);`sY^dqlW2PS9tjdpXK&Yi`23_!qEGTU2F7rF0F6P%r;%xi6aecWlp= zCWPC?DEYFIy^DeJEz<4ny|zp4f|5L~38W*QNX1@uIo$a2dPKP@%dmO!yJdZJ5zO65 zw1GdJfs+Oh`!U>ynAS-KeN;QI%#p}d!D^Y<_P~vlmV-l&-O8>C3{1i;*{4MvWT_DY z=>!b7@9k?S(iO(EXV$_TnzqL0kirBWR(G8ZojnFN=HXY%*HKI&*Y8n< z4R8e*AnWyy%l|H}^5y`?$$} zTVFfR1%BV=dx#<(Y!;1~>K@Fvm$Cetk@@9G{v}rWgmQ{XLX3JJG466D?MSs_?34wa zPo7e3eRooI?(U5?@FQ+r?5#?jMNbZZPnufWgbzz-<)B7>XPvE7tMFav+cRWyjW7Rr zZTl!&DW3=S{ui4Oye=&L`>?IG`l-XhhwzGP%`$zBpOMNgf+eXWEe=LCsawk-i6 zx-4qVtJBA84z5m(0W}wSb=ef{I)Ki#&z58CSV94O1GxUP5`yDM$$cugD_^dSb2OLz}>s2~A zNy1RdIbw+)pS&#UOjv(IzHRk0*)wt-kJDETN;ofC-TC*XxvsF1)9#I|^DX zS`wvr^UtK*n--S!(XR(qK<_@92TIKbT(N=8Q-EQCZ0}!bs^(9J`(*NxNK9|q(E_*t zB;eoS8K5j*@$oQ{W}!D?9Q`IF`U(HFcw*roDoyf5^8fPvZH7G^#1+m3I^-cPJMG9%Kg^;#~9EdBXeA z9Jfv~60k5cE5-Ybz(w(-wrLzW=?*7hElF!G9^Fdw6+HTluxt;hHn(uK4tKGIgr~CB zY?RzvfAl*c+laz^j@VSeq<+ZcR8lFlEr_hF^zjKb%&3c;#8AqL%X}UhJI=hAS{;wn zelmq?PuJWu+Td;`r!-xltWJ6p4-nep;;UOxfd%@tOIRpSrYB3F zt?>@_j>>*m`t~f9hK>F+8S?^4kfb$Ltg6yPK@2oR**#OP8UX3m-WU=tJ8@D@w0hm) zxa$zaaZX3m_O>4D$_8NB*oAQnB&{S=fhb;aQ&?KNJS)uay}V5xjT<*mi*r6$ z0K@2Qtit@!t{67%H>4T>BhJ$beP1Z z%U13%S(-Ug(cv9OQk7t_>^Gr;e>VlApt;`WZuPhDL0{ZI@*(=5OY+6bn;l}L?W>tI z+Qs44E8yCBt}!pl3akGU(ZFBnwF+5#WmK9dm;J+``C|f9`(t{R1?7C{AGQvai(mdw zR3159L^iKbT9bo2Q#YaDJ9Af$?*#$`EA^}kf!J5_U!LS5VTqxVRlk30AHh=2u9U_N z1zQAl66jQ)q_<+ozO?%zg#$7FF!Khgi-oA!)?at?+U%Ml{GC6Q7hzY=>fzMCp*ZrM zyQ*ox1ys+%ydYa`TcS(>g^T;-XS7B{abs6I$++0yEtUq=z>a_YzJ&_n-gpAx@40HgSi}q4lbxm3-PUu9p#T_~uAd#1hvrepRe+ z1Y2&(_L#x&wZGe(h00>zH8SKHR8O@79;^2-;RJ|9kh%~M!vRVAz$LLIjL<9zCiRP< z{}#4={75+Z?%+90N0xWj5&!J8c$&CN@cCM0hB-aB-M=Xm!G6VUs@~m9MRxFB;0Mu7 z1MqgW;PbUeacE~b$SD+~^;FM8w`U|9Ku|Z%dD(ZB9#^CMHS82bV~&@{1xcNJ=!F&e ze$*YCcMriSZj?e6nZ{RqVf|N&F%l9yHPw>CUa;sRM$1pQD!Qyuy% zp0x|T4YcWif=>_ZGLitud)vGqpe}ZQ%f$#`=cB#<7lHcG{oy=i2ot^LM5}xF`zib& zg=7C<1f$(=t09hF7;eDsdyqSu{PP1|Cgcn;W*XzYPWt!?q6@hzEMNPagj2n-Al2q_ z(x4&8@!)|(?g%m84JEQYZ*FMY zwJQw=6lQAWnSV$lG-dhHXUj(z8J!>S2YyM)osb<0pwl*?)vblCdN84KVi71vPf}S5 zm5Rb(S7cIN(8=DQZ@D~QVC7g7rDas4c+}wDJlqlIu}GHV4XeEy zv2v`4Qvwl8!LVdpRUd}X=kY8Vxd1{|h$j+i6Y|l`V*UYIMsSu&^F+tS|3J`9+)`}t zli0g$V`nFne`6KBD{K)(#htu7Y2poBbPP09#9GRW;Dg2c(Byh6VxI3ojmIo@4<}as zIrepyK7Buert?Y4irGb^ae{ai_8-EnW>P_1E%CMVU_CZNFy1OCeQAHD7KX5e>Q3s1 zFzGO}usMChT+)iBxrdO|pQcY$J`Ip8sbXltA5exIm20#e#20~xwNIYW^~945aic?0 zJk1H!kRg$UD9wU3$ZSI?S3O>>z;3$^De6NiIzzE1hNHQcCk{xwWkJ);lMFr1@-7^3 zH$tvD!=w2#V|8WKL-#j=4p+}|1Y97bgMgp3+q`UO__foB9xB!gcXx#lWO0|Fap9fX zbh{Ez?$7D7Zx@*l8cUWY*AK9046PSgM;-Wsw&<0Mw0A)%Le+xbJWxMwkIKa^IEbOY zI8y3{ef`YW%uhq5`D^JXCv)pT!{-J1>zp_XT?>52L*GCQVToM#*ZuF=rn({PD*~DE z_FUkJ5V0NNEOnNd8**&+p>Vi5M2l3_-3<&*KZ;sKE?aA+3MJs@k$o`#z!@7b4vQ%} zVw%7vW702Qk=oGi;9eZZMBd`Po%&)QeZ9*)F7JB}eCFHFo&HxfZ@{Zv2RlGRJg|D- zzlnT<*=_$p@iv8YhiNwQ!hVxXsL}i});^V=Gz2w0(h%-?xnmY9rh(Q?ks}vB%8+NJ z&YNjxsI383)YX+sP;|Z`X%%4i7aU4mg9A#L8rz$o5Xq%XEsx^_k+t<>w&ZtVftasN z4?sHNWm9*fuBR#LPNNp@6+YOFF7LZ9#E`WyAO(3ov#Ul}-)e`kGTTbRttJ4iJ=0%A zIS8}qhDS+Hv^$yA0@PT4Hjk{E*$#&C-$r+#wTJ#P-9vXT#Z@)ZVAxH}F91Gvvxz8= zf-oo1xuItK?Y;dJdE5VQpIHA&Qa0}Jtc5!({ejS)R~j}qlDJT1eLg2eAyC)1)FV4h zwC^}h)H;7BwVHr01tx9@4Jje#&uPN0Qjt%^&W$tO4;({N?2!|AKuDX7l!~77kK?A% z#+O_fAR3NCw02MEXR*T6FW-h_!WfAqez*^nB<9cty$x_lM=ygvt(ke@07GSWSBOT5 zvruT0MdC`jsvb-ayBCMf3AC%Ha{#P-n>*_4!$hy)LJ^v)P+DaxO-0d;UBcm5eysrq zZ&pb(d#EGDWFad7MSKa_Uir|aFER-GG(HA)qzoN5`I-XLYLn1(w590y znc|5uk_FMya^zLF*}Cbn+@qd06NgSUToj4N96PVClX_=9X&nuPdP+^?QncKTucRojpru-P8Hg+$9#WH*py3 zmUGGt^|F&MFhSk^kP0(a#P0CjnqK5m7^{cHzC*V$69JCx`p$XoHfktH%Ij8_2$A;n zH~=*o#JxrO13y-!fm^{L(aQ)##0+55@4E>o7!x1R`OkkF=Vs}_@Dh>pgGW*Jvm18| zlz6#_rBh*OaIL1)ds#ci#Rjd32u(GJuU88m=Y~THt{$P#c>g0BQ!Fhy7X}yb>hd0< zou}X*q+Xuf_sQ0)w{c2M(!f7eX)MXh)nGJJC^oTgV4`vm7a?Y3Tb}Lzql&1|Q5HIE zeyXS*3d=u%%A$3@k9Bad0!?30AdpakiiQY+-?TI#xbW>?<7Z6l#Vuw|lq;T1l^{q( z>WmJjs9mjoM(2>fG|a}J9^l=s)N*N1;=7v3|11`mgq@ssK%O6P9&kc;!7w4`$A-Qe3hnSlRa<#EVaSV(l;M-xmo@@!ZvTItga|<--V9WXihnR z(noeuy*xH(P5#QH4du*5hVX?Bwc4?R>2;(R*tYA{b{IQ*QhliKV2ae+((+K*9TUMDB4;g7E-8o=@aGGb)p&2$% zt4G?*{2BMUVF*`=!bO)Ev7N0fA>A^WYnl5X@Y~k+imx3_loya} zVl3eP2GTm5`&H9=y%Z7Aa5(7~dXOg?CK(tb?f{>w;<)(Y)Gcu>63ZGc-1K@BpzG7l zm`J`v>krU42Sdi}7fAq31~^Wx$mTn_&{qyZ3D(CK>tIZMb;=>JvDZgMz{>|8--P8dW41SSR!za#(+(J!6Q|k=4J7 za$iez^j1DRoA{&cDpcW1*DDpri}MFOLU6g|iy*w**q*<)1xd>o(O*n^jjhLXs}S*g z0j?Hcx@RvZueAMrmp**kW)Kn~-6;qkHXw*zmq@VRYdVIr@CpGSJTC-}9;0sXwM=Jj z50GdlOqGv(yb6!RupOB-e&CV;&yP`W$h}#>l<>J~UG2|MBn*j+D1-?I%?Ly&p)>b5 zoq+n??Zw3w^bxq7ZYee8vT<XSA<_X=#KSG$IJqcH*9l@Gu?STE1m zolH;s_?yi2i0UCtldz>m7*gfZEFT-?o=)mN4|Q|Au6E|?<*r-dG~NxjX^%R6rzD+` zN#bQWN!|GraF;x3Cim^QKBpeSqQlR=tMT%l$=bsF85_yALz%DG0CP|E;cujkNfp41 ztmP->6iNlZ_anA8l1>NO^bJuPcpGw{_%JvMM3?(~EK3@eW-89Gy;9|e z&-)SwfB<(Pr~=Q#T?G>MoJ-jZui}oiqJZU<_%sZ4k1 zIZ4b#Z10W_IeRan?bL_t6L@fcGZA(TQU|>XM2RcJ4UMj+{tP!XqhB)XCuaeF6!rlK zGqD=6_cd!>%acprBqg=(iINlw)f(JYE*y;F4Gdc+smRolU^b9{o4{XbNhpwx+FeMV zyfs3fL~M9+9aW+Z=~AUT_Ci{hU^JqsS2ZJAYYR8qv-l0 zML6L%Hoc_K)?d{WX2{8(Z%iBPG?c0I!RCUB)mI%e3``iCC|cb^uTn*e>*N?}BNsS0 za~d2^mFxe&B(+bB^)!Qw!aG`ipBd6A(5p1AUf2=0WJTS%oKLIt|tVhWmL(ilw zqr--tj{#W^Fq(JJQQ<%_{J;s!oRGMR7;ti-dp@w1d12I?L6NxWP>7rk>i zGYMi}jo{v>m&h{Z@j@}_FApVIU-oj<=Ctm`D!#MoH8>BqBzhRYI`aS@K1N-=xv^}` zW1Rh}dHee&ug4*Yj~W7ljvgLcDI6041-jEdH!AQXWz*e;4$@eg99ph_{^3vB&%WXy zloLfJBP`w1FBZUo>61>Il{Ks}!(YxT;gw3LsLJ^mtb`ID64~jzj2>XlFIG+X5NjVN zJtm$jfgh)@`k%%N+-(z4BPb_btgDIeado+}!gc|m6TTVHi0N)&*K)s3`Pir`@Kq*? z)6HfIJ9~3wF}D+H9!9(-6e>W#He8BGd6Ja&H4%KsOwex&|5>g2Xlejl3Pw^XOYjtj zfII>>2mJ9N4>8!Dqhu}b98hx*@G*6G+fr%&1}1Vv9~b1#dPf88&lF8(iY({-R~gv2 zMu#x8lurG)bnFf(gH0o&gwc)lOrzl;s}(s599jfCuGuOQh%pyvm>c?+eUAEVwEyp9 z=hP@>-w`l$W64JpQw}``rIwz8$re5Po?g2ff()4(C|ZFJgg=@7b>`B2--3QiM4I87 zGg1!4B#3!b(P>5p6Da$@NY59{E3|;=aG)qoO|R1#%XlDJD~$Wuy4jr zESGa7wqpi{0H0ZnYyh(Dfd_nDv=IbQKWOUA9oVRJARJa4)Bq4!z!IHR4W4-vg%Jy= za$!$23RX7b*$HOzcUn(K?C8YHLnRYc?o5(ub$yHf{2Hy$R|`KCuC|d4VmCiBHapM2 z&FmA*wx=OHhF0l!kcS+b3QfMkPwOzW{^>cn;76dx!MPUsMFCdugA94O8yj!uw=rO; zD~XVPNo-v>2;+#J>SYdtv$b$KT10x1{Y=f5kApK|h309K@?bIQf9+6Q_f>K_cn+g` z>Qe4inW!=^?%pvB;j!bjX2~`{^OZ8?Op%lB0nM7q@lz4R$5*E$umSN9VoN5rK`P(K zaF5TXc$Xj4BTaWW3|Z)A4w+KE2s_cl>YW((P(=F-_9g%O!0-qdo+$NwNqtSMhF3PT z2vzg1DqF{|dZZJ{8Z8BH4;j~TZHk$l67tIzT@bEk z0rxTB)Wfq9bAoa%zyB_J@!!pEfaGgepqcF>-i3!&7mW%{=cLt2@4hGV=hTC6~V&KI$bUI$W{Aii_+e& z@?&m7Q3{XHdhvFu*X!KE1JB{=mIur=v=rx5Fv2Ipb#>awzXu3~*-om%QLCeRwx!I^ z{k$S7QAw0oUWaY?gcAnRl-2v$^tF;IKg1Pw!~}yy6L#HJ83K>x;})co47Yw~9CYeV zI`sx}xBaX*WMd+^rH-@7h0VB?IOc!IPHali&-F`ilyOa0m4^Ij><`brmKZYm6#M?X zNge=|$v0lCq(`4IQDwVFz6ailxSLpSR+O{DpGY`CaNJvmhDFHOXm8bxFpLPj*7&R< zlY(CD^70UwHvq;~4tx3ea>fbS>+Qzs2>ZE+`z-hgewtFs2{!B$t69M)B9xyfB%qVN z?d*hpQl>?b-4RyD*~2y4N0c>Zwwoq+MWj|-WbF82G|ZW-#g+sM1OfMfg%O1mm*5}U4`V!f)&H;xlRjB zPUrY~Ah7cs-@(?iy5tbn)n1~j=IL-MK@IoxYN)hwm>4Emaj?n8uL9`~nA<)gAJOv( z0ZoN!AEhl&Je>ZXsDrG}_#rgi^7?&d;tm+@2xo#c| zTYq`AJPC3~Tm1{-9G3GaRxslGT1ZQa#gPUoGLd#t%W}$5PJR^l0bw$MP&IqMujxJF z?yibLXlChVHRWm2>-{D}q3b|28`{TWi4CFjf4`mLQp&8?!3$a-k<%0k|I;3Az!sCn ztfC2j%sFm$=s&dhhT+h6BC5p~9)NF}67QaRGc}+HuxXH6=8?y4vwoJI0IV~;BqT)A zq=jkbaVTpbZ?aHsJ{U242;YEW#L*NSM__z|Gi=G$_iKPe_MZKT)hlO75^&r_HKL}! z@%Uudu4#;f?}J}$tz2|7`wxFh98MWfCR;4OnXX;^b|=!RrO~>eZop^vt;Vk1Q972L zW#TO&RCk5;Wsp}@AK3zRr= zq4AkcZHjRI?+8!>p#H)(Gvewho*+|dHltb5n3;wl|ZaYY`%*E(kodO9mRJGQ+MrPsnyo|*brTtM?l#3GuhJnT=11c3jS zo-xbn3_ja@S_UV`(@o*8fs1GLU*9NW)UwIl)VE)Kd;RObJY;#ERlD9*36^#`vdzGA z8&tjnHKW+?*MVOTEzha~6_a(*j796WFycA;|K62D1nHtXr*t*=Xh$5)fgr1~I+)_T zH936Zgk`@oPhw^X0-lKttH;@7#vidt?)ZGA<3LOmdUoDa*fcM${_g$yDc;_Emn!zp zVI80#!~3UcC}IU(*z=Yj<+e$?9^wc=ZKX}E))w6{6gjzG4nV6X0lYw#IzI(SP%f*x zRMRw56|8K_t`~^$zPvzcE#1NWEIq)V>$ilpkDE}I*sl|@M<&Mn%I^dD(`-XNnC@+# zv(+dVfIL&t%C_^2>1;hru}wfmV`|oo2UFTc)?aO$&J6$;fqS zC)gS`h09NPGt38)khJn`dWi}NCZy5Avl=5Z6+LoJ5@+dE;a$aB4B$~rq>y1HEM*J% z#}CrC)%C>r+JuR@Kjs@?+Pv%VHW(mao*WU$f)bQ6}iU)C#ni_PU zJyNpi#Rv2iuZ(xWgixF_sRmObK9FsO+B(Y=krKX_GY>bygx1Ag zV<@!;#arIKq1xSpJkSBujZIg!(&1z5NQ16mvX=4{7HxT#Z_3_uzPL1-u7FBL|J~d@I#t>3&CpRyo<0*;47s2)Ukc8Aw3y4Pw$9!P)!hAV zNH7Lp!7sJS$Pc~v@ZOS!Fm1MI(mO85J7U#S+l90#b$u(4YMy`S)^PBbt3jd}*T1qd zIC#7Ks(^n=-_+L$&e%NbHf82jGjUVWh$zf8aU)kK%*Oz7-jga zxyUN)=I>z?m+X*Yy?@z5uH7B7?r2hOJ}K;9$Bp?j4STyRdkJTH*D2AA&Y(Kom$7#wG)_s;zAK?@2qi%CdO$U z0Ymiij^&>jmY{+nC-qAKAPe~Ih|ALe5u0>xnLPwX0W-p{N*%4V--0>z7xt<*>*;>h zy={7rorD&J#vhX5ermz(CbQcyV=Nl5{Ae^+B%qWOmL7D%6`|9lw20L?S?jui=n7QN zeyTngs(EV=4LxAtE?)cgkN#vv!UzP&H7w+|%E(}tJZZ-z%>`LPnu!%jhAEdG)KlX- zxkOO|I`+`1?FS4y{FEhcV7mvCHzSxMpwX!oEYG=}UEIlHs_a3WmB-WI4b| zMxK3sjJ^2^$4ot@t$1_gB8lpNh{$tcqHA|Lbk&T+Rv3H}tYhGDWu414Bsp64n3o!i zM`lofDgN(DoSwL;O|kK=I1$1O*e;-iZxOkHqUY_}r7k!#vuPkR&^>#Q*u5a$&>-(khK`8O{%V?ta4dD=MNpc4e9GK}FnfBy zSa%vx4jlhzi*{n1J%{yt-$5>E_bK!sLg*}VglXM3%UV1+gv^Dd^0i&UQQnv3&Pp-b zer7R474MJDdfiwrxeo(1<<=8i(e#~6{SfQQSBb{yy@H+zBwEBMX&OxhZ|yR8EzXYe z&V?zegCH-Ft6MtI{#78wnR`B2H3*8rjrQwQrfnHxYL6!dB7j!P4F*8YRl>C9GQPM5 zB5;Bkb`!7)9IL`KZ(n3e5T}{kUfb63T8b4c;rOc@Wxm=d`2ijQn?rs91vLbNVS69NChFbRG0 z@-%M_G1g(-$=JAfG6fQ{^ISGQ02+a+up=8TRi&hL=vy*g9=-|QP&W*AGUTP?N?Fb? zL1$-N*`SD;_|Y@O_cB(#(Rol5E-kI7H$j4Zan7K8YK5p?hTaK_y;#;ZF!%z?aEtZ= zgAqSE2j!zEP$DT=^5xD~ZEdrcJ0b)|s=(?ksU!)gW!n&X^|YYCCqjh)#A%p_)B>#! zgY^)31fknEXk%p&646ibjHQ1pdcSn$92^l7$da7o|!x8(UIl&rVH zbF~%&9Tf((G+;dXCeWQNmkHM3+kKMaBRb2%SRLnDAm!@svYpKKn^xhAGT?+l^C}|? zL9W{ngyRN+AiX`cYsEZD{~rX`IecSnRw*l&co2)auf``svkem^Y3#Q%Ow}b!v{1^` zjfAH}I5g`O1T%=PV-cc_bP7L-OjWksPr@lG`?$3&QPL=_eqK0RKM#z@#l|elz~q zu&KKGH>(bhThspsCpFF3`AWV!-uB6W4Tfo6s#{)=pnYFmJy{1pck3yaAmP@~Jm36S zB*eFiI`a9^F#Wy8Yn$;Z3CCYgx$dHbQHd7_n@PXUNQOoaE=!{i2YH#bJ8m(FX$ZT~ zJmS@FD*RMGrtoAg<6)v>d33q2CToDitjR$n5UIK=So}39AFKs#wMm|T&*1A? zsIJf$Ud)2}icO6zC;Q4B1iNWC->Kav&xFLvF{_NO4f7xD?p_BOl_sVq&w>S{p`&b2 zXbiIefY;SeLk0D=16i!<-pubU*Ky`cP6Ff1Ko#W3|BERvLhRlaM}Z4cMvFDA>wy^? zvlAi$5aYZuW|mXN)WwZYrS;OmxV~8KK^w94Jgy4>A#rbSq3eY}yx|p_<)*&IW4UO? zkyVg*s#t@nvkDSkcI^k!x%wB8Jxu_5+{9HaNT+C6MEv0au^iX46GDJ z+#FjMXHTJ`RnIoKfUMa~r@-GzGuSu4Pf;={0kCtlecH(gh}NbjRm)zKte9D~}I)|$nF_k3PQ z=Df3mW*wLZhmDBu@no{&&Y>>^;>xwyXes(4Jzl{4RUK-MCbmQ?e88BQHVJkOG2B{H z$&`Pwm}g+-;BCoz(r!B(eek$tnLfK$@=y($?tg0B3T|3=33$SWe+Z`l9;>+hvtgW) z$)`1NE*joHI*7Y2qk+zklr@TOjoAWxe|+Z_4s|gSpdOf2f-Qy0k{m4v2xkDy*VNG} zz%ZT1LJ41b*G^VBQ1u_pQHq)w13NsJlu%5@#yjLNXaxfy>yNN>hLQy_SHAt zA>fLT`kD29l?0R*=O?P1<${)nH5_3pnp`d<1(0#B#@J04psauBfQs1qjOwLXcb*#b z1c@ic>e_u7jKUW!RwWF4Le4Tk9+>+D)MB12t|(;M=$WI3YU8RA_v{ zWZOhDDOU`AYc*&ext=mXetfI)QL9eItWtD6fx92rK}q^Ti<9`Yvj`!T7;k-Dem6zq zDKg@%rRP-%aAp)zFgqC5fF5$$wMdxNA2xX>C#G))F?%tLE`N9v55DiTg^T5V_@AA0 zIdn~hb5|qw)Al0hO7OHpxbq<)h{!0jR!_83HR51*!E@KK3Cjo+gEe83-PYrbG!PIZt4-4vSZ!pnKwwaj8feq@H(3$z+4c2MbxKRu)6|> zieSakZSrB=iO*Pf(lGECF?9h1brkf0RG#E-tzb;Zr!V-d+1uuU>jx3ir=T z!fxWSI&>>GL-VZQl;y!r0WUlo z_``h#!WoRVaV7;tq*A;wYe!dtXIk|6%dtd}Y5(9pLzrs|H0tWv4D}y)^g-qJ>7RS8 zM@YGK#+RE8s2>R>Y{W;T6eR$BbKqD~N{)cfqn6abLX(n7w=Z!$%Etc+l0Q~Mh2Fi& z++k-O=%h&ucF&y4%vZv&`O~V*1HWmp+v;%o+KvRW6i?67o)4$M28;Y*A9@}LCoJiD z?aJp>xkN>rNT#SH3K%a2HgI$jv>U)7g`e{9chH$!Rjb}WQa`X)IhwaV;#*rq11zay zhx+D4kzc)i>@$~Mytb5z(+_QA`10Jo_}JYESwOW&!~=hu!k-{01?7H8H<;@=B; zGC5}YhgX|vh5;wF6CF=I%oyGu+{s$+oDJW#!?G%XXHRe%t(6sdru&@}OFKo;t)sRu*W^e*1?R{$sH~%*j?Z@c9 zK<~vR(89W%KdKHD$x9@$+_Zr&t26~poF(AiNOK%87B7OH?vnuRRwH_8|B)M?wv*HU)A`o%vW_D1KH=36u@#2l@r^7ZYy*2L zJFx$x%zg_|MV8j3cj%lhF@**5%yGp^c>2ir`{V*+zM7|2+0dA@>ZxpGMOa119}(o* zxxKpNf|#dc?D|Zw?w|ghb6x-)xZ&W=lyLqkc;A{(oQ%2Fm=pVw2ABde#lCb0oiow$ zXuXY*4lMgJkrvKhfafQC{AjlUTi}Fsx>N!;W{cr&sjs`yc`PWc-*1^zQ>pIV(7)L)PrC| zp({bqb_7AAUfgNd9F+P0^2&|iO@x88V++j(1~7f@E5LCNa(m08V#X&)QW6VIN!^hW24$E{ff`nP=wV_DXLH`u==iuk=-TR$WZ$|O?B|$g z*mR}hPPU%Xz`sFA{Uu$?RCkbjnm#^xCZ7Zl9OU+cM9PqqKta|mT0p6CfcAoZeR(8X z8p>)yaG(^Lx7HKQ6wLYd;!7WV{+zZ?N_ZhtY#q1oAG(>ze|0o}g{K77CXtD(Lx$QOr zBVfJEmvf(JBablCnngKyaDgDpjf;F$W|?40h~V#la&TJ>rOo+a?X1;}1Z!Rd00nGJ z?brcFLa4m2^B>yiu&d>6&q-QT=ojgDE47g#3)Zig!)Heg0yT!Vwgk)CwGn#km=)L) zp6|!M)3ULmQVo=2)RY2$<;Qh9HszyqA7Gg{$ zkj6|}p)-{ZxBV~dj5&!v!Um08`jI@e++%lKH8}hBH%jawCoTEb5y%T_lp)j8m;?QM z+WJzeQncp{6E@kZ0f9{SqDZ8=c(&?p;cW@h1$iV|eN4>1gtz3-iNQzl%!FncHgl5o z&1*F+yZqXwY%uFGl^NEWkU5JV8_}&;A}F~e4*9o*96~7C|7=@QFBTJ~GN5d-6{BxK zOcfha{^KC3%Owp1;+jcHbO=Fvp}CX4X~v9c3h_V~u>?~uqvO%qqk;(IY2|SJfN}?G zzSOsTsSOg6AZkdn1D;K#_&==CYq9#V@-`OS>aaJ5J+h5i=dc?xeAN2fB9nP1eDG<9 z(k(uetvuTfQ9hg^zX?1OXy_M9FNtKb4`b%r%Oz6;mI$shGoV_AR6;UY(Ot9j@=~l% zXl!lW%la_OlE@@^@4H=yvU8;2<(qN3i`8*M~oSy?N=Y>13a z%tcO3vV?OR+KCI1 zX>dxW2KOC^+kI**0hBiPnv18$KiVjC;dZ;`5E;i?s%gn3MsnU5i4hjNR6JYL(6IEl zsgDOmQ@sDqQQ(MUz9F|&fedZDYMU$=G_D;v^-pbQ0aoIp`@dI_e6+w;0f7KUt1gSx z<$t7*k};MS09$QH^@-Hq&6Z~rHWEA&EcE4HDx%G^)C~RnxW$EgV&I`Vip`Tu4=y+K zV4vGYj8Rkg`7R~<#=2w5pLPKpJzkf|mx1mL2+qkT@v+Wo+~0jMMB_;)pEzaJm_6v- zUrm)7N)zcLHhFT+hKf9}N+z0P(^mN>i(Bbzi>u7$`g~6u%ZVziqt*wcFfjj5LPrR;?z@f$yrLVwtNf5Pvl!5hQB+T*E=RkB7IM2 zolfK9y>RJV-iD_s7X)X8{0wXr3x!%2Mb=atRm^qXC6-vd0p|&Wx^H-=F&t<$wxikW zQ+0xzQ$Zu3Mil}|;R3*E))$(DF)Hw?y?Eb#7;GVxKE;9 zsW!XXOo_cU%g}^-p{Jg!0KsICUP)Shxx5{F+qA>3EJmS)@Lmg4y>?l~jQbqe^2fFj z^}UMwhbLk#=05f)a8?+4KX>^_=*V#NFVuucJ9}|c`+%d(%ITxOIc2;Vi&BShRRI?} zI`Y{ES{Ex@6~tW~#sgHGi7cr#4+jJk99kpn5>5mkdx!3RUKV^qNPYWFlI#4IT=8;%hL*1q+DOm2 z>k6@`66YlCpNDKNQm*oEit{HdVo10?)tyIFCeR#?1-Is*PbpI^#|3W?d5nBPl#LCZNb znopz$Jw}*V<)r?X+A?r4O~s@5j;y#bTUDaLh-eX}u7%o2Z}q@h@VUKGxxHi>M<&TX zRwMN$6K>EgY3(J__6WE;N86b9_`|H;deGp~fKi2RGZRSfv<~!f!~1-wyfzDdc^Gcz zDiz|HW1uebY=aY``=-UaqAl?h-l2JuT>wffa94aVAo`}{T;#<-%68w0`CK%9HbsOx zlj2ci`JFWg!8VpDJ~=^|?LfU`7g;vQXwpAK%5S9&@fZ;qy0ybC3xo{z49l;`ix#O) z2O#<+0 z1aEwki0n((;I=@&bY-euR!Fr%dUw%Ux#^`h|J0+`f2~QGwpY>OwJq6#k5w^IX?F+1HrcaA?UJ_QK=i8adD!jVD-p)u~E< z2W3U*N*nfL2mttfl2ezrh^zl;+Y0bU!qwST$F8Pe8j#bTzC3MhfpzqWRD^lTGMtln zKRaVJa53BU)UmZ4i5S|II$}JU$R>=a4oyZNQKoOuwD5s1fkHO~{RmGG@c+ zQGAH(gjZVH7ix@%K=MXoM(hc}p`VZ>@2f(Gr!wxqW8I_95E#{SE606HKuBzkJMAXF z5qU#kPZnD$sCfTZy}YdC%&Jeu!fiZinybkzRrN_hE$Bseq{`}2*uMmO*>gX2?;%vV z=U2xSE7h&gf_f#v6?gC~sZ*=8c$Z_Uze(04dp0-=O<7EBFcjJRa7?1pc zu4?G;Hcb3z?R$ATs&X5y+)c2_9w9O1*sX3?M~}u&17I%{DiSs1SQmjQW&6imTJU)o z1zxEu3Xu6`7wjWFS7i+Yd5n)tWky1)7U@=?(Mx?~Tu6f~Rn07@kn=#TdKQ|=s$bze z0Gq1}?FU zfX>tib$v>bTQ|wkysk_(8)BlLAf^j=BCXa6NwM}p+^|bFG2JosaGFJ!5l?%co*taU z-N+K*W6aY3??RaLT@FyHp*9_~gd@HFqiv{CjWG;y9)+1gpQDeQG}d^hDydh+h8Gnv z^4F>F9$2>f>tJVQ+$4Je7(2YK70F_^OzQ9uAS`D(w)Q7~?J+OntDag4%0dS?uqtf; ztx{n`ZDn*Z8bmX7r)a0uG?1&pdaWrNdgpX>oh`@TK`^Lds#WeOL1mlnXgWAw@u zYHMR1gEFJ<py%oH2_aG$dQdk9l9j}Dv`&9$iszjqE zZr5?|tq;ID8`l^#R;O1aM4Lo&q4JPRVaCd0kclU@AQnAnK^Tg)j~_IPO~BDFy89c> zQFjLyCha6BBL7HU(|02P<};X||HAIUnux~}{y3u3oC!{GhO@AqS6ES(Uq4#73yOrw z8qAO<*M~u0D6Wh+r*R~(E&37qcyes-oR#YPf{rzVr*W=rnz=gfNEu5QKJ6=}{dTjd zcrQV(WUmDJwq`mURkeV)>Y|S6j!%(M{*`O`DIKUq^(!xGTG2#)4r+9~{NAc5CcJL$ zO_Uu#(J&1n$=!(7zAq8q;SdF^H6^cxjx(6z{Pn zRB?P>yLV?KLVm2dy|G`4tmZWqU5d`p$EcHP$ayRd#@OHF_DC|M!hg1@y*!^~6zIp8 zZbo@*WAbRoUrEbpTHwF{xT$XjSA1LMHP4KA1RXJ14d}BzyWnC@^)x!hfpoWQyQ-DR zRv)Ij=a6hPw`AoJ$Nz09p{#Cr)I_GA9ul}qZ6QD~cw?r&ac93{(tm#!94&;en8C$r z>J}=eeKv~l(m@5gCGP0Wq~Sw!{9z;^WjPS0$<=bgiu5GQZPc01kOzxiNd*`>yE*EE zBa*gSJ(P(9)Uz)tW$(l}4tfM|X6jm<0|{EQArzvrdn2FCdIb)J_%ym3pr_>5<*}ym z)5mv<0iYg=N-O7c83~w!6Kak=VzvsKmFn;re283 z_xhy>gzpy*x|L!fE@=iXb?waVWX6hF(_H~hUkT%pji-aBX+9?q(H^O2%(>@j*y+uq z4YsSsyIXc-h8FHd^CfRPa0cXwQq!Pc&(8~Iwle_Tss4OnVeT>b4%ri=9&*Ce8M~ywa0ZG)UKVPcm6$li2>VXdQLObEES2T%5U*geK zgO#8fP)R5__kA;MJwDr1XmiG5n0hkkgB{!enR3ZZK!Q5eIjl2e#OzF4_Dq%)wmSs$GbdX>Mp%ykS?7VA~&w?q^^1 zeQRsGP^r3Ej{<~|u1c^9=7V6Ll_E#8^h&jb0$BlIs)UIe!;wS3-waBXtcA5(=y`-J z)1K2k!(E-q+(c7IW9)7vmG7)|kuSqv8O6|uq9$=yv2ew366aIkK);)Q%!khEJZPOH zvlI)TYM8bEuLNgGVS;iX%>&$XL#7@1P9bTVmZkQLDS9%A3Ni|BdiX=J1@l(ck##z^ zTL>hQ;WB*U8aF2PzhgZr{{GkPXRi<;@VUnVs8OcCm`GIh`V2wRM<1mW`x42*u4-vRQy zL=>JsA>1V)E-)p|2l`CTH@^S`+zZttm+&D%+ryOK;*p=7wN;gF&m$Wm4tgeHmC1^E zMQ>c|%Ny-Ko-?rCP~4W|QsFT@Ai4!jEE-ZUr*E9c9?J;FmqMxm_*hg1KE5|L%|Kncum!dAq4oEFFXU=Zdr{O$7r_t&_w=T`Z zp0M5|IZLWUieRu@Jh%+oDiO(+M$`VWe-IhW-8 zH(w0?^G*h>=PJW_##Y^kEJ1qu;iAsN{%Pb)A5ZE&z$zVBJ#%1-Kc4gM+=vgU#nbm( zYy2>~UzOK=f_tLBH#2h%2KLLI<&p-HVGa&CNiGi5>jH}3X{x>jg#G$#g`xMF@kRIU zF^V&_k;W)s@QDsdm{{koJqsm(0K;Po~l)!(}Tg#gz=T8v%0^16_Un={;W88 z^Bz(jLim(`YE@Cxy*QV%Yk^W30)Uo>8&^@n`aX z@zS!3Ldjy2%nMXFcV@Z-T0X=?e&6;hlwNPVZ*&^~9%j+{c8ni?oeaQ4Pvl8lKx89q z)^+wBJ=`2VS+o6|iU<*!;l+YXL3SneLKb>~TC~9vCnWR(##8}k9Te6k#Qu;NEneW% zCgd*$Y%}yVfKK~vPEpzwNxbr_cS;}`C|VNk?YZ@x)c6EU$F^jEfJe_Mnw}oy{zP0& z{2qBJA-yQvcPv2*<;AoJT^Aib!%r{%h*ewuh+1-i48Ek?sDi+6$_G)G$}Br(O?O1D zULeCsI2rlirzF6rZ+vx!RexV~ZN~~k(l7@WfiPJq=IKd;ddY6_L8L`+U3WxCX}JY5 zf?0alygvy?)YpKim2wgq)nRuZO~_Lx%2Tsu!KYfwfxY`{s>VIsK#YhjB$1~Wr1XX+ z>(aq>BOD~P>;0iAAovYH;SQ+|Qggk)`&b6ujhpQxF8|Y}Pc`1}%kY89(l@_PsqcVa z0Uyu|7PDM0UOx4mBC2sMhZ-$RviiG?prkZRK={g@gbd#VQ(Wc0&Uo*BQTrs5Imy^Y z1S1!U3e54|Y|LmbZt)54P^aYHG-1=Ob|D6;luUzLUjW05>;uOEC!XF>o^M2PRWfuz zgE5pIFtx9bfDzn$pzxO7!3)VSlHTg~X{$I|Ub>XG{s2~=B=K$)7U~9uz!7#05+sd= zpE&7D!jCjY3B3ZM6{KJ`OV|~;DCTaTYT?Q;i9tBj{x!IFqXVu^Z|7WwIP2{aX@VN< zspg^MuIn*^vP*jSt~@V;*~6K9Lyfx$Pml`8r@0cUv-XJqQ!0{$^-&PfhJ&>+flV&P z_x%(^w1Vi1{htR6PY=lnAuh)ZPT!Xmx1p^A3{v6B{JPFhkUHC$;6M&QQ{3Y?J=rQo z1Mlt(Qz9E?RNG!v%_Ola+PlL%j~XL%4hzG6GnmtA2Xe0?=Y31der8whtY~3XB!|>l zc#hDRQSU4`lC!Vk{G8#{=9x1eO)#@sm|(V+25Lft`;faTw1KLAnz8sC!GVTe)$|@a zu8Pv-vVLrEdDJI9K;o}QQ>;r?Ay1rb3*9!EHXSlnj8lWwVt3lV6 zCeQw?sT}>Zq@iL8Flxrg+zD{30ALfJ+?E;7H5k#2#S(lUL{zvcT^4J<(?iugi>o4k zeRbN@!t`~zEhrxl%caEn_#_&?Z=8F(@-1R<4e|4#T<$+e7^oV`?M0ONZ@+5yZCA>^ zl5}vI9*4#0ob28_SY`|))#w)Zh^*j4eszazJ5Ej2Q$z^g{eb~HNVTU0?)rZL|6ZCZ zruP2$tnM7TuuC^dC6+!Y^3m#YtmFl-Q_WEH#n#Y-kRSY2Eu#7)_Ygip1VD%Vq2V1k zAV?PR3faL!Xz?}6I@a8~CalMS($Tsq0@@BbL^ zXg7)hk>Z}2V-;HaDI~EK)8D@sf3EdyV*%gV6BQ856X0-Z9=(i*kia|Rt#fhJj-naV z>Pk|Hk*d1^p_sRfD1G`Wt>qj88(ENBRYhVR*vsPyAuf<7t3=0-rgn1Meq zTSr<(k5gr8R?Jo)SDq=AeJ2J_q+djQ*&u=6D%v$c-Y??(Y3-VMCE=nbzo1+ME>;K} zo^9MLP;(60d^Ft?pPFj(z<{519X_94h_OPE${$o81_zhqNgKNCShi^P9%RP;VN1Yu zbS}(a+5leK5S8S1E%1Ig(G=@H~0XZL3qx1aFS2}iD-mtD&PzG@6@fg9rE98@4*NV2>E%Eey=n4sv z^x}1fbYHCQoolBq&VlfiMT<9OmeLsz^)`3peQoO+2Q4I`fj;wBfE`3=bUcWjbmecywCZ+a49ak;)xKu2HJIwKM!4QxYJqM zd0VK$a-~2wxM4ms+fkpGZ`$b;A1iRhkHu4HJx0)|)gI;`N-_KWBb#Is#~?{wrF9jc zI3}n0o(2a&1e6{*+coO9X6c<69&@ryD$d1aeE%V^$Ro&9wlwS5ol{RZJ9bE%szC)QXde*IRWd0hGOKH{r6{5(vIjIPoD@utzbp&CSD&euKZfuAO1gHAuv9{ zqRe2oADJai>{`8L%V!WL^V(BvD2I}CYkJf+kT@RsK z&faZ|x9x7y6B9E{EKf+jt{^_B6Ky5KPH|koK|#U|!SpCnot0`>>c5OFiXem!leu*# zL1;QHpQ3aphd5?hD*y~XTJ1BC4oX3sSQBK!4f7hgc07?3sG*ggvrtvX%>PMBtlsf_ zJoACM($PsThxX#I`k@ccO>;L&v#Zj6g66rq2Us;|ChiMr$;!kx2rm@5kkVm%JB7N% z)CgRy%ZMX-?yOpzq5BW2bo3|9v{>bdO#0N~0A1VySP0ybnyO0dk z=sKhS-;$KqF{iMotIR06SQ$7+zP6!Kp8(!Z6lhrs`dO4`k}kYqvX$Yvcgt7wZhb-Y zkt2=Fp35d+9*<5nV)JVv6=^_c{6|$#xhgs-{1s8$7A2S{&v;}*(k9B2m8k+sMoE=*{Ns_VOWL!lFzFcu(AVNsc1sGS8allah`Qt5NN*WljVa{|WRRiPexp z6zDS?A>AXimr~(H&M#1Q`Sox{@~=?(p`|(z@>+#rN{tkjC9LW5m_}1(+{`(XH1mpJ zgXG7tq<38(Lz|P-q@S*(x#Ju1E^HocyL2?JQup{kN^szXTMiUScHcbXU#WF*yUhTI z=VB~{0ya~%^3~rHGQ?frH|o<%ZP`PV8=2RJvGG}yg_-Am~dNMw!d)(J_7%Km4P0-kBXR7imTHd&`U8u@r|pH8$g7T_ePvG0BES5b^7wEzW!1qn5(+7EMMB?6mAz zTTJ2h!~Q3X6r?lF7)1XJkp9yw9bi4N!jmnsw~1YQ{&zp4gr|WK3&YqiD8Y_Z$GLU? z!9njVlz-r&Hy1HxLPuLxTsagig_v*V2Fd$bVgUgXQMw~nEzq0?XF7Z^JTmu|2DhO9 zJDOi#gxt~pmy!>_`@D*G2rPMA=AO^)DZU2$)#Pgc*~&DCFx7CIM0l860FmC2pZjk z-Zu9TlyYCKS;ZwBqrZC13;#+cpT@msqv2_eu_0*v=Wr;Cm4w(w8oms`ha>~E0E&I^ zSg1m}JDICSX+F)*eF>#&ut_6}g|IsTHZA;awEEN4`-EVAIEhC;pp7k3h;N(0tXuL7 zVJ2-7V^IW6cv7Z^Zf!#HNNGjCXrZFV?%c#!0SMSQfVZ=r6w*i8m)Tnf_p?NlQq67s zj&7#1tS4e`c=F~@Nq_-ljan(_EB~K>8F!_sCyZUli z1x*GiHDHD9hJj0}BSjVVPy9nNXvX*rwvG3y)RD&rhAJvA+Ak z@vEkpFxCYiQ(8@6h%AuWYG_NcVKNv8dsKRcP=tyV(AiB{{4Nn}jTP8n0GgivQ=t0U z&P4wpjj-bDnCVVf!gL-jW~jWT@2p3A_cbp+cgD(Ac)&J(xQD3l5L|xq$k?%rkYc_H z@7SBzK`pS$-o>^^#goJ@75R-E9J!!UndGxTO)2c}WWSPs7y%H%=UJC0&UhgiGI5aD zI2k0sx)`w!ShW!^qzE^pfcV&RCeD>4wAX8gdEQJw>e7?z-N*grxH1iZ%?uRJ+lmh1 z5tvJB!-W2dr5_E%@i^EIcC?V#HIQx8eOCe_J6(@$-zs&JSant1V4wJ&=tvloT9910 z7}K9uaYzdBQMkK8^5FKlxA9xuJ9j3AIqo*!Uh|8Yd0zyt_=5y`Gg)F@K;j?8aTH#E zr?G$vgu(e#9G(Vhig7EJ4in`XTJ#?o+TRzbcG)9{Cb5cYSZ+AiM?_pqwYi;I9&ZRm z5*a_YxVUPxn>G~tlx3a?C)h%iRu%tn>y;Uoaj7nY>_i=c^x?`>A{pOVzikNPnmpd0V9 zZ^6pXU56>c@MJmf&AlqTa){%-1uz_O2C=mnpR%Rn%=N>37bg7`eNA0UPE7W;uQSfT z|Esrs0P74j(4UiZj(G~QmWE1@urUI4_sGq8Ua$E;HBnQ!OrWh21Sgc^l1`Na!VHhS zbZ<4#D(663Kcz@u^tI6w11f3M4&zo3Ynl(~Gg3K}yu;Vt{>{5vE&{~hawrV#eYo}y z)ZAYzi+mg0vg9PJQzC8KQ0#Ugn(=Np_F_Za%$;pS@$Tsg3=ru_nWW5$uX?Xg(e=dW z9^%WhT6vg$KDPXo2!tpBm&PZsv>oVf5a`oTX1E5#sh{ZU7w$$&hBM%Nn=NU&>kejW z!%V=6Si>Yj*87V3y6eFr zAYN6Y@Mp|;+#S|Y_9SZk*;-J|K1uxb0~^0;m zSXW#aOCMv%CqG%HVw|{LPX!W>g3UPDRlNf8j3sZkloR4Yoqn*JBNFN!^?45R$5E_o zfBIgDsMGyNOuNpG(vHCID*pc$)EMIPO+oBc>hmoV*ru6^%`R4XqJL?~zTEIERjQFZ z|JM@<5)8Oq)(}j;jL~7hRD4wnI6EWHZ{%B#gs$LG6kv*Ua5rA=u0b0exMJiu;|W|j)n%JY=VXmlyfTtAOP{2aPr3`T;xUVJ{vlml{#_OSKlBfyW zA=t!JdjH^g3fJo)$CinWEhuR=O)&1&subO?{F(%?uJ=^p1iPz1Sjr#X( zP@FK-25h`yd+#qFxHmK9OKKDz{RaKQ{4|7c{QFb)@Hwt^0Tyl{mK|4c4bt8s3AyR0L_>U6*LYf3XMK6h`t%feT%aO%o)gVo2BTx-oU(5u` ztO|mwIeF*7^O$N-<2BaTI9sT_R9Nhg>SsK&=+U}88|^=vPd%HbF8XD-(GDJxxXR|A z`3(aN!K|j6f&O=mYB0BHRp^iK;L+Iql*4sh)KZR9ueegXcK^h`9EOz@vlAAeFiFr{ zd6jA-!BsBL$c{DD9bE?RRQriC%zrdYn6yz@i{XdH$o<=@bsu&`8>;i3$I^-^uQ^wK zV6R{G5$HG-Q!i&3$jAvl-yrr5e2B7p+*?nuHJWx_E^u3`xevdOMLam4e?~#tSO?wR zhlPd+JNIvdaq0#yW*+&}ol&!tSmi=VM$19RA6S)NH2G$aDmUvztZ{vm$uKd>p#Fe7 zi?f(oB09d3hhdMhx}*qayUpzZ1J3;B~>Q`&4~Jh)9?@bu9^RI~^{`m{1j^ zOHi-!`LalfsXp%$_->n-Z}BDNR>U?S>mf%<~FBUu<1=`HT+ zlIxrKhLE_8fq(fHW#m;}21WyCDG0EFH7`uQAI(d&CxAm$T*22RL*~|5BPNy!JaKB@ zmNY2?)h-Pi6&j<@T>kk2_8;;iktv-4k>w1ID~zX9OkMo!QGInra`1;eUnhJmt|%Jz$(|MS%KlaZ3#jhjgTj2G|*GpI)IXEpc(bK#t>FGn@H8210jKG?65a z;K7tt#gB7A6O1tc;9!tE>tO>sQDG;&^=e$R=??}(+T+up$*6OD?_f;PJ6Xja7#roh zCnb-e=V;y%x}j{Mo}!|p%W}5#`%Y8cYvYw#pW-yy)qGeH^>tMw_+w#wvASylCNeOV zPjaD)yt%j+WMLArn-$4?YQ+J6{t@mjsL#9fJ7!ymT2T_btew&{V5kVVONu|wqEh4m z1~7#r0)_Wyw5KsXEPBIeu;Mga)0-1CUJ6PhpnRAk%Z)4Q2UIs z@brui4xStqg_2~g8%k-sax%$j^LGv3Mt-3dp(&_EFmzHlzbS0`VUG9u>w1zB4#eFC zQ%t2#mUW==j0~sg#Do-1;F7jOC9L^HYxLWGK=A6saTG~H9>MQ0vC?}Bc8|`F*4pQ- zA$OO=wu(C@zzE~_U`?7T&9`hl@)$&%0h59<&(B~F1AQ_sAO48wz{gto_6Tqsr{V-l zJ+4!2F1c;YbZaXlQyyAMSXmYtS<-{1Yyd!>^=1(R}}Qv(hk>VO*6Vdb-2R5ctn zF+W7xk0SN|%%01^5+a2#AxpI}Hx+a!L?uKApr!CG$vS;xdf4dXneLaB-i>(9wPvw& zi|2v_5KJ2oA@m^Qljt6r;GnO?b{wn}`0D5$6Rt)gikJ#l!K#63cl3HA zzOCwO_XHOgR9&X~n_Ar5^I^M9jS94~h8vjy@*+@5)$xM*g8}ZAKse3T2JO1;bGUNq z8bl^)eVxAW^emw32ld0R$QxvUkj@Hn6!mMl9{$pI7+mBkO+`YC-IzBFgn-hH-F&BZ z9F(4THqe1Yu*n|~5J=CB2-;*utAJ~PxA=`0=A5=&#Yzj9d|N#-7LzJtQNWYFZyRuD z0Z(+AQqc%jLem8RI-7W2Dnb2as)tK@*c{e7%40@MBxFOhNT0u4d3?j(f_!|ZrrlA5 zed-bppzT(_hE7wW%5BslH&ZG7m`bk7rSd}yk>g2Njm{&ETzu(7-G2Vwq-KvMqxBNsVXc(DsxYYX43_@{ey0~RqzS$st6?QMdaI2l<*l`G&sk7(p7;~6aZXHO z7SUL9`Db=_tnm4mqY7g&4IJV`_{Y{7dZt|n;BVS1m*p2KG%AKGGzljSXy7uo7 zC#wj$qxw^X2Oa$Q^H%v&VN1IPJ%H>!^iwG`CB5h-HLcFOx{T1G5W951p1Ox7$x7xp z-&{F~i*X3cXy)vo{QjsM@#3BI3j?U$&8nTlf=$YdU3hIELgb$xRk{$TmWhnrlTcL4 zbzcNRB%6P&O+7#;UIp?9gt70Yb3$jOeIBHRvSdjwqLaVxtcTitybu3TvSKB%9kQ38 zALYv4z%Sp?E)NIFEVn?zi0MFo+3!~A;8;Z@6U=ry$y{dLXdl{%8j2t!6LW}^W*I>F znRM&G8hPl@;a=rC!fxnRosFfcTAfqi(`^$F8{d+`vV70_C~c=Ki1gjED;13%(Xf8p zVsJFIeGiVKwDlohaQr zbsha6zIzI&EshTy>VrGHznB&p85~Dno?)LNhuo(Ae&UKIm%VWcEu-=XIxEux>`SPV|8O|z6@0RKM# zz;{+I?0HMWr*Jz+VVUQ+5vT}%hjVssPP4{*xfWkc{hm~n{?+Zw&SbYXZ&QeP^4bjZ zuED2O;|Q62mCOZ{)o_XjUw;(z?BY-PDNshWVB4}lJDdV#9mW|k#pRxWI8H6%t6~lZ z=ElY-;-ok^W!o8qKSL${W!!`Qr+E9#bQBZcLpuU_BMe|i{DIj#xkztY|I!d0lumA! zHKp>1d53H?YCfxU!T9S=$+CwW7+@d*;b@9UxZ56BP*;Hbqt38EBqj3VjL~?f2|6_z{DuDR)6Au>z;|rYyZ)wu)!UOn>g~NwCozejQQIzD>bPh2vu8>c zp*X!-FmE{xM1kpI*bG3}7eUUJ0pXzd1mLfQL_N=}T8pE`4WP0UyeMtvEXgY|IYoFi zK#n;n2B6=RX;btaQC^TEMNK7VkU+V(pF^%*8->)39Hbq7iQyo6Mr1loCua_vv?z{3 zJGm*=;2o8`V)U*)xkdUlM%N>RB#T$hc$TboO>gqN<_a_JQPnKL66I3%NShh<0 zCZ4j_4}Y;j3|EhA4T%%U#%Uv{onypVq0*e7*F4wEJi~6kR)Ed69Xv4p7TpxlY@_iH z>fWRg8@|S3W%OBDRUcsHKG@hC363{SH4HE>15f?jkOA^bk$nh;@m=#o*C$8@8;5Pn zX5dQ3LQ>BP9K)Y6Tijf0HvaJ)n5O7b0bEql-n=pri;C1G&o|YLl71vPmIClq&+pgt`E?|zP-`#Z8JwpOMPca209_;N+ z&wRE78*g*RM`-;=qJZO9bR}Nt{jJJfdYWUs4FTtiMp!J%W9^c@FL2Zywy{Ea>8c~D z%svp1)0l0_+Y?gUWY;2UV?Inzqy2d?3;}3L8W|LOf@poH7v`1V%~@-+eUn?}%Pr!K zIHD}i9`UP^k1bFnn+5@7$b(zms*6x+Qjyn@r0UT*y$!d=tSRe=fEZej?5@f8jK4Z7If!u=8lbNCdQ{psf94@Z4RHEqZT9zi!yp&lzZKsA7ggKNk z)7Q;MQ@iLsM)0^3f)KHX;8d08%XgZn4!#SYGXp9?=r9(K&x$m-01dz$H3J!4UG17a zBGd2XL`^MM0NLj0>WDh%9jf>ofa!Qh>OvwVtK-Q_iX9mPa zY$)u>n+*5Tc^koq{F!DGb2S~VT77(7Yl=nc+C!GFx1gE@ykBSjBblm0t0bmdGMf%wP{k-|h{B8~ z%A!vIn;fx0Mf1%3TP;Vl1ywhBlD|Syb`i)I(4LB zdkb&$XL)#6)XNtMQZas?rljs_v#(`N-&}VG+cV1KHPAf@SDAuo@4;cmpNH3MW!ZZR zj4BkG_m9QIb|tHM$Ti&8msrM`KB!Wy9gD4Y=7uaGp9HDn1A8_DZd@e@$f(hg`eoe+ zgN_0da{F0^Z~gk$<03w;C-J1-is6GwL5d^1-Qk14%AssBscCBO-Bx4poWmC-;dbi^ z0o@^RvyENjHD)lBI^Jn@?nrtnUCOKsBkXUwND$m|JS3k1R;@Gc)gma(hlDu(i7;Qr zxilDuG8PCaq;gJ>>>^3jBmp+&x~rr}AVh>V>tZkRdhZg-G%}S?R%5iMHku^D8VYNS zy4#!g9AaRxpmXSms>yVLPm47^2>%84IoD19Y?*h5ZlK(x6t`_n2Q$nLoo&~-=05U) zK6I4CDYcu}5Sesb@hCuyr8rG?z9;)rvKH8XQ>w&sdN7|0XwcfHzJAw0eY>Q#PKAkB zs9wL31}VXi6_}3ow|Vk&>k{@_VV-n4gwMo)?g0g|W@$>})_JC}Zf)6_q^n3nt!zg} zW}K~~THUix$25sPkV%hSpj$Q)2=j0XzvI*&mTswzIY^dN z{=JJK#8K`xyphKP`IW#ZXeyM#twEq3-$SWFzR+IK>t6m|Cw`BeBq`u|2BsOkm1IuN zw~h3uBE4qj*s1^mX{A2y__><*ZazYlduJMt870p#(H2#LRJKrh-{ljZp9ZI`LkGG} zarI2)v^&@j`sukPzwPEZS`JyMH{S8`IyK!0EvzJfjD!yU?Ajxv%FfaH!%~Ms7H#XF zQ_rEsVh!&H#`aeP6ZEoMMS-ba=Ix}8=1eAJEw{rJrJ;YaOQ4Ic9!sD1mNr-!&w{N0 zjJbltzd;%Lf0|)H_UIE&foM54UVOi%wD7nU% zwXiGFWXF2?XoV-xNixhDbLT}Q@+0gTf*&J)2Ii3u!KMv58O z)tuoXiT-Wn51tesV3Q6Y&!Qc}F^B)*b-uesl%ReFhv;(BWuv5ydtDyUdQVr?zloK0 z^xPq-;lkoG(`o|XlpnGeA{y5kdRU-ri(v7D*60}w1F909n;NsnAlo)F zObU5Om^)R+@=kyZremQxdI>MLp#a$}bd;jlZx-DflkyA;f}FekFeAj~{=`X?%)zEs zek4>`M!ub~*EhMsJ=J@}4|5MZv;>C%@5AAJUPaHU#Rey%TE%}GYzA#Ho`b4m(8E#Pd3cC2K;*jv=IF!MGW zVwvA2r>qqz-#IVjQs2HH$Sw$m8 z%KS^obM)bFSd|94_a3360x8+3r2$5z$P;K&8)EuQa0D21r?FCh6J?9WsvZNKAu9C& zu7+_`V0e&kM{1qE;$%wXGz=<5ge`apHn;B5$rV8ym~Jw4`R>;;>4^QU+js1DYwpTJ zf3yF)Ke;F6W8TM)Z&n!p4z{$O*|~_XLN_8)h`b84fvF-RZ#OIuI%lD;v37xIR$wZU z?Etb@+tZf=U25B{Dw2kT6j%=VLAzvNn`m+%A_79^YPNaWIx? z+H5RsSs{Z7p4-uCB$DA6x;%on;7Bp?Xnjv~pt7R{dykvDYofYMRh2p8{dL-vTWyoH zn2qB{BZyh}ueU38|8d3|?{#xTB3w+|wF_KktU|!S!hEqV$OiSG4;;8=?Vnje>xS>4 zKR`xLfQhHG(;f_6T~&;_pErnCu#_9i-9GGcQMXB@H4}C;~3%b#$2tLfCo8(yHo>L zyu;?$_S-1G-qG=An9Ft1GO2FFYTcC$_0``<8*o~ z$Z{~65m3#ag!q8MKA{7F__&+0_N-56LCtg$B25meTPhTZOSCedkN_+yM=l@0)jZ`1 z=R2Y>KSQ$=J!vR(wCsX0SY9G(-n2>8W^_|rp-`B3*ED}EVtlR#UMyXWc{P&Lu(qx= zo=Nc*qb#;Z0RahwfdTnfgw5fc#Af>nci$Fcvto|?E1k|h(e&uhly*eY}Pj0&9uPM`Cz&* zNO!q_(SoTr*g2KlfcVWr-NnAC$fkl$@T7$80k1?@R?ps;T8rGfoBp z6#|rZJMWPWzkAaL^;_cN=kf>Mj;eia!3^k7fEUM_+*cQuSEfjLF5QXa%o5HEs^gUB z5HLF~^xTZvS*wgdy_hA?-~1w90D>}m?Ia%)oG0<$t_%-~Xq&1gHz|Z}wVtn+eo_fM znhblHl*nx?s%4USOr zH9wgSK*nz$`0lk|KmBzZa`ajRoNLLdK7IdO=3HXG%(<6qD&bnyF~1eZmLFC=P0rEl z?ytV3_xHJde=65zu;(-s>35pdC8!(@O(ZDyy3rv?q(a7PQHjrQOn~RB7AKzr%>1!v zjnklHv9^^u2kKpE?X2;ihG6Ueynql~^n}BKeKB=&g!LY7LueTIfR#{Q{bVtrbAg7* z6@DJ#DC~96=tkdBUYkz&%<%rkUigg(I9b6)d=;pt6cNX&AP|rnhXvLn7SDB9t#0zX z$#&>$#u*u@;%GMx$ch=~6Wl|%^I_dzN@h_kTQih+#h>tWr0D`S&Voa2|7T;a#K1g3 zwL`nPt&3*Q>=P~gfnku$PivEK#*d#NiNN#`9A!*@w3&i-kLQzwi~Ej;>0Uw+M=v)G z^{ewXxWU-$V@0oJSlC+Phb}u2X(8zI|97l`Es3V;Ti-6P5a?zu;Ft7SWy)p9J5JoF zI=1repRzC3#eg@2~}{-PWhyZfNjJ$;t~5fv9zovQX4Qp|7jSH|h#@gO?Rz+7BfY7^ zKQiNz%I~z}cL3lpBX`9?Us^SisfBc_f#MqX)<=<%!-w+g);iw)>FN&>ewK1$50VR9 zWq)2;{DB5ajh1wRra$_Yh6n#U8;}lm8%SGX^;mK*ihJ8=lj5j{_e z4t%veX{7Ss^vD`P^;TR|34?65!sI$mUPrphR4#*&DBs%Di7%b?0?^h~1bK7H}@$)Fl(1> zJIM~Mt(_y%2D>b`VFxY@BaJ}m+faJ+u)xYMmwu1N#uF)d_+>7vr#MUYZGoK*dt$gK z4*-4pXh=#yqaaEu2;u6SUI1#WPK08KE)TIbbGcuNHi`$x!5P!@M8bs#aL-RnUCiMl z@R_*dkt?G1z01%1D?de@!}J9%8NDhb;bJzR?3bFh#MIx0A?;dgitCFK-! zKc~FRqK`3j)Z#~b6R)$Jhh+#tbH2T5zWdst-S+t9QcVj_Mw^Wo+?i2qOxsY=^_n{l zKseb}+Bx+Fqip3iE{?|8k!!cHyg2z~sex>4LUN}9zIl5Lw>VCi(*0jC?t6W+;|!hA zYjcqur=XU&CC@oMgo{BCx^&C=a?fufgw4!#W^_>02d7R~NIYU8Wg^b~HNL>Q{rwbu&u<;>@c3Vl@ z5>1COUH-U9l9GBeo|_>BR}O1)oYUO?08Kp=cdFM1m_QAG_$y=o%j!1~-g*f;Qi>i9 zLHGk`fhd7IF{v2$hZBk$kmY{AB4YJ_F9y1vqjsqN7L zXm3^M(7Gps;sN-H#-MH*YY!yMzRPoqsK9?G$q#+ooS?hmdTW319WV>5%ELQmLI5qt zII@!&Wy!5bt9M7cP88HFu8|UH*Akr0f4DnFuK*@#wttkL+(FDK_b|*^&Zx()4nJp! zjxYT(3f1xtL9{Lfe;;VGp5%#GWt@a+xG%5U-uZGqSESTtUo(Qd!FJ!cc@UNR+y-YArH`#ZQRD?lP z(aZ!Z!~SQ4u0tWzw?_@uGz-rGHLaD&^gfGL$y6Ec23J;g+ezvnDm7FJfxpaq3on|{ z4Q-k*Ft2Fr-iVoe3b^yIu$5niCj_6NFR%aa?l3v)1`jjd-(cyk6mY_0fqT}pzTH*! zwzf3%+}psVzXI7q0_@s*Eb_PXjYZ3aq46}_`&x^gV$uW~>@(`9zEV8aRd>;m{O_Ze zmSF;~e$!|qVA#r}K&xYIpYid&IvyoEarQmm`9Q`QgO1#l*F9{1m~!QhCN9O_uZgHp z$@W9IJpgddhkrT|2fSy_Yn%9A-}qeCuZw}Xe11TaNqi86&0?dL_nm^1MU}78G(hDZ zH5KUYB-jg#au`mt9@>Rg4u?O{Y!;O_!SOzn4|hnvWQ38d1WR2<9LQc~{fqHKMOi}b z9(!w@7Gp(1-&3M72$GZ(3sFf_>iwQ>jS1SRq1>gdz!8_MIu8OrbOTZ9ypyfk0w`gs z4MmTkMny6#Zo{QODj{&o3gkOUwAL=VQt%}N2>_Pzy@zmu^J=|WMAC)MF~ILiZwim= zT!~1=kO24;6EXsp7}#dwRJgOx+tgODSVjkP>Yz>p)pE}l?9nVQ(0R15@ga=kxtF1F z$6a}CrRKV)x)c)OV#;c5@qXqn3!hayJl9^(r{>Obx`?=?c@ig#St#)y`abMs7}kAc z37?(^qW;#K;jbENAcfv^{IE?E?IFxsm%7@@xK2~uy(IyRoGMT~_@zUBn7V{a;DzN3 z;QO{t3tnDLiS|k-uo?|jfhIFV&d(y);U(Nk+{c9UI;C+P$E^y}5WBuHxFimV{`QM} z+0Gi(q=J!F4_yUCeXo?_+($7T-_(K@@B`0t2g6&eFpjN;9y4GX>3ic*g=FS9jL!{vd18dTGbGWkI0A><+0~B&yVaL2jgO-z=kDpr`FXfzfF#ofw;D~ijQoQ;~ zUmgV_DqS1)PUdmrkepS1wu68N1FMx^GzH|aW6McBi`#HXv$Zt824il0(5j9&ce3&%rM(L)Vd|{o(Tmoa;Lh(ROcpuXHZ5YQl`RM&TR$qIu3arBECT0^b&(VK9$tMCTX(NEH0Fv+mqX(#mD~#Dch6U*!_c zG3VhoWsKMW#n-!kGEl8E3R$UWr1&;yY*Yn)orX&wNy-T6bE&uFDQfzl!mxqOAkdht z^4kP1958-#F~3w~0B2TvIvrd80|D%-&+eJFdA`fs7zx~Z6j9h!+FRD-E}`I5HFmu# z;2F}IB-sU|3aOC7OGp2<~U*e)kV4T??HY;w&`ebMv(qn&!!Hrky&O^RPU7VU0F zeq*dZ>q(x?xm!89v1gHbMGNSus;d=#Eb;Sv&wgXELkOtTE&oEBOFnhrNG1)LYn7`Z zV@=E>cT6t=gl6H1w3}d4kWuuM`5u(bR(_Kp-h5JeC_pCI?Uk9n3Y)U5#mAW1qc$WC zgY)|6C^mX{gQReWlr9Bmd%UVSx~8+jlyycaMx+=Fu3RZJ858ZGVgzKMvc1CP5vC3B z%0}+GSo2jDg9>*)L}tR}En~b~V^DIy85Doz5MsF{r1 z^}^w?fIcRm)_s=L>UAz~@HAZ5Y7PZas;^q%MK?=;^Uz_s$FyDbB2We34ZU&mY5A^iXZ z{q14VoO!|KnY@6*6$n6-pA=7q_1Tl0NN;JQsv|>Sj6O}mS0B+`UZJ5((-0S@Qu{-4 zu&=aVZx1tCWho|VW?{61xXNFV)2^_iYM+faNldcbp~JZ-aQN7*mo(DVi2|7b5)rf3 zYYQrQ0~5-bozUlKPMRQ~Ok>_YB;UUcH+{`W_dR~M zrOyZPtP=a49~6vmYBc`v*lKia{h8yi@>UV{GT@|!W`CuWr>09gO1FodE97dgVh1Hr zAR7r}!>ZP9{_}%;)!{>pDdoZ~T8(SGRvBky+$yPZtCPTA4OLGhoA6(%@;Cpg3WFMw z-*~>u;UfDJ92AhP-D=EIK=`#F7>%LS@MH78_()G>Bv%N==Un*^4D!(0LUd5JO9={@|``v}E z@(kWM#D>BLWF5PyAK04L+zEW5>Yhnw2&m&+$~kFS(a!w!oi|?dS<({(3%;91!l33FCNtsdR*>;;8QI;F&DN4Y~{h3I~cVp zGvO||LC2G8WHv|J6$u28N04>F9ir={#E`IIk) zWq<%0&a+GqNg~{2DkGmW14aAI5?NKmF?gP9j6%G2mvclLb)ip1 zwN9MRpoonyPQ+y?zoPRVjfEc<6y8nH9hvNh7jbVoMPPsS1hlr=c583j zjV+uRV%wez>Hy}sin{qoh`)Xd1fAa8K^Be|ZHo^q6+)K(?^oMS3@XB9QwFNLQaPY% zIZpCyRF`nxWilj8LcbofZNRkNw+_6ju)CperNXDX7Mz6(6Tb}pHLA^{$^I0|auZ|v z*cg4urZ}g+3gklJ%tJfz5|mIMnPmi{d2tl~=J?y2P7|3^4a&^W#G}Fa$x2}y(+ zBI2z+yheN~PaZs33F~t4ac_T4nFAlSdVntc^ zbCnfNqlJEkV+efo@b;_G(Nwnd`)zoix`qa)>>_v;>eP(62t`@?<$FWrsGYVbBC)I* zfx*xsS~aI99tP~vUw5II`Ghj%c4z2bQ9Fa_ispW6uhsDAD|6+?RBk(ThE+)h;4eHi z93H+@FR>CbOF)ot*5Nq%Ti|OfkF>Lx$m_8AJ}o2 zQcl=Fv_Fu_WRCgO13KElYQs9`V8L{>OK?|mTQB<)V$Kdv10eNkp*chOvK2`kTp7ur zKT@8=!@g7>N%ww|FY?I}j*^O(4+CDmwiXsnLdLW^uG3598I8LNn2soC`jVPAxI~$( z6c4s%6Ph~KABWsyGU&~l;`ic-ZOY#)YNb%HAK4A_pa7z5lBK+bufFM>7aMaN=#L>> zF^?8#hyQ?{;Bx4p^CbmKdC#Jl6Q%kZY9I>Lf4FIAlcmYQkQH35mjKss8kBhjeBVlj z82Hn(Gh)jA1RGHp`J{g_XM!kTDLTN`ZKx0G|5y6FN||sr$IQWSm!|#Z1*PF~w5G~~ z!Jl{%fb&GgufvcN~cgegqU+IMb+b3jfsM=p7GVwN?NAh)#M zRTh^Z61{-2Z(6lQ6lxI6v1ksZfKlj=$Pm2>iey`fxK^Nq5&li zqffk2Uwsi~Q>fgNcDPmUH#T&EeQH2%L@PB3VR-P4-Q2V5gF;{yho*h10{=Ix4?JOb zzN(w?3{}725Rrb5VFSWt8Z*`M(mA`ia9{wTJW>Y|<#jt=j8-g%Hi77w|2g9Ob8Rs^IBWqPF$2+Wc*QK>{^0 zcx0Jn*FTw~tCIEIT7_PaVu$xFS~Y}&@784shi}B2;pdtlKnqY35~cIja%XnG1)F0m zAVyijAQmj2Sbc7;R(GtI2ghjiAxVL*w#NnN7s3Ie`a-{Sy`Y##`-->@;6RAcc_~6v zcYN~kS|+ck@h!&(xBNC4D6a_qDzWjRB=*xdLynAUMY9h?u&5&8KCRG{2S!x_J0D;( z;?_2zCg{Luh7Wa;MaE25&D%Kl=}AY06CYF_M`V$g zL>eWCL}MoxBX)VK;$B+IY6||XWbEs;FkHcF9Q1R>v0M;7GV6yTXt;k3bTZez+gDgL zx$>0MXMr(V*Cin_b$hj=%6CL2WRkP>5qjgCfFzvpntS>T0aQJ`O#3(&RT$6afs_Tb zvygN$F-0cVjZSqq{vdnd>(NZhC$5#Pd|xgz<~c-`5;d^7NkuhT3QKuyIBK-TvvV5k()?HlL17^ENlfScjVzTS?KQ&%6Jz3% zhUW8$F=n-#bf9X{eI_gOY{TCmn0|C(?Kw6}>Y$bSEA{xKuBQTRopT$RMzQREpQMxV zUk)v|@aS3p#1WRFM5-F9c#Z3CT9Q(o<#o0+v>PO7+?*KVjB+tlX_$pw9B_~;+sNO4 zRJXh04<=|rwxHX#55mS0GSxR4sGVaK{PZaw`?4g4YZManvEs|o^(X6DrGAapqIK+) zh1e*Hgzw2kq@C;C_=*2df?1y8W?#DFH5J0E&lWI}(lvlt|C~cA#9W*D%z4S#3!P|0 z%J+i-VVhua&{+@N*th*?_~f>#m#%%5wURG+B*=eQf;8Irhf-PJR?xe}IZnn%%NQIN zf`^UqPAHHI!wdO>4Q;n?voq2ENE(5zNQ6I|ey3RJV*LHO7KUcm+Ff7z5z;`6HNG$J z8GNP$Sd%mSQ?gIFwdMow5}Ek6oZ3NIC(_6Ha+RcIWf<(Hw*^X!zlkd;zPfT~9^{`Z zx~`np;zWQh)|Xp`#5G|kPrrZ{I8NiX*do-L8Bp~Kxrl5U&P~ft*ixO$RptZ7Y>Jk7 zYa}Ss*kl%ah9WM(^8&e_TNB#mDbX7}9RY;Tx4Q#^m-^va6WBI=T3^#_&Jl!HqljBq8PWQ9kBt& zEP5#+8xG-M2-l~^a{aZGFM9ICMQ;-?)npG8bg=kfOC(gNvey$qSzO#XLoRs+<>k8A zi&_qFEOBe6q@p@*r5=M!M>GKKRw^>S(fFkN8E6MJ${1m@iG}%z+4L_(W>^;{!!*Oy zdFqRf%+f+;zCLSb4ZtSThCRbyS_PogxXEMk9Kg=>O)WM<}Fu zaBVT5=v(eWvg`|U>%Rsy>;zqF^&2tQo-nbqaX+`SXb{=pJII%HS}7opLkne<0CxGb zOmSHaLC7$?(#UK_YEKXJn`7feostlG!04`}<6b24bS4jkxE)|1Hnc@vYJZBOJZv$Q zL`xv=3+p;&tn~^vcM}n`5k}T^s%l5ePgeTO*0iO=Ug z3U+p2A_CkKYVD^6gqOkteBHxrh*NrfLVKX3_EPFwRRWmm?3`S1(Waw3?WeQd1+1r? z+hD5LXv^yY>Yo3Fx$#=tW&W0FOmO`Vl&}fsy1NejE86XIFyxg4L*MCx>)E@(9v`oZPnS^TtKN~>_lxC^%gHWq$3kLpb}cnV+$A#9|AnrCRF z>m@;q;GY!SX{{DKPS7{g2=84^u)F(}(NUNh)Lq(%f-gREx|yPlb&(!Y56Qp0EXz4= zL$gN!NF(=o5&hgTyo-aTWhv9DDHWc1W~tuwuB#umq8NVT;slm0Wo06biR{!a)#JYU z3>%P+l&KHmOnw+GD&(9>4&9^!1?yoK72+Vty*ckaKr4oKnq7H$*;V5tQE*a;;=o^X zofiXkARIXoiOsC#MGLP-=oUx^!y}^prc&6K)tOc2S4{>^@CTajw< zr>)x2MxlKwT0pp4t=sNUHI!eIh`(Ua@`AjY`{qBnvkbBv0-Tl#92c4se|pw^%#Fdr zj%QonTDM1t=H#bkAc2qa=ho!K0J`^_?S`Ao_#&ssVs^Tfx0RaHKiO$Xq7%n3dx787hJWX zXA$vd#SBBIsF`Q59>>>8ilo=HfgEnXig0*#JcEKd$^xUP+Gm0-fk5Z3IBWBgT5Rc| zd;-{Rj6t0Pp6fG-4Ckws;JPJNu5B+=qz!b$2}~+J-U0$GePA3ts6u(`fpqyjXRZhP zr}z45yhR~8$uJQY^Hoyf-cv!N{#5i}@-Y3_2a~_HlR!2bgq4+w-c=v`Qxy%l(|13Fg z3B!hTunM4=dcr~ODh3**^1b>A?7SvI`m|-X?DkMX)=E^?Qdq?|JtEYII1G4`T*jBQ zS&66W7HDJr@bZ1;KZ%!R*N&8qpvI7Z*B&mKYUmSh=zPW*hT^W=`Rvk=ftAbd5*(8& zzs)PXjLCuzn+sVTH z(u(I49Qt~5)%`+?AKg&@f)rM<2~E39()wtT-WX4jZ}8Dl>&w>40Dvlc8$>bsTG&RP^>kQqm2NyCz?`&_Yo-?E1?LaNDJPyEd7Ikro@&+; zD%gdLiVT+B5Tq~58EPsEEh9vTL3_usLsjTb^NA1ip9ZH0h&xvNjpcJfY8;@J64MK- z+^)znPh-Sk2pja*j15YBCZjq6z=E#3aNpvD;1t_^f?)d$N$}VyvH4KZI010~?@jtCdkMnd)7soaXbd7Dbt?Xs$tBzQ zwlL*%@y*|jqoRw^b%Y#yA>=(+d6vrSA6GkGg`i40V^LiZ7387eYF>4Shw=fRky>U)GC6|uo`w2_6dtf~cviB48 zK=6_6#Qw%7u)5Q3T33hg++}fl*BS?A^ctNn@A)k=H_tmQYv7GuhcRb-rC%A~w+N~c z%wqV7hSJhv;TeKql8|>6y#1|2siAF-k?ze+~FBOnH(ir zj5Pr(J_b;cyG!4^KCFOG`TgibL+sG%1FPV*X791xb^)_5YU_i4h`e*T_@1iC2L5vr zBH&FYK8Z^+v7OQvU}(~!=5WONgHsCo@;(KDm*Yy?$YEAOBpMX^|(Z}3W@b@ z!QW^$VN|9u3T*1T?{{OdR;kU`>>6fI2~3*~-N->f@%#sR;psotBdgB@&o>Z&&l`oW zaxnb*g`!?#!)~4Ge1yHGfyQEB{Ga6INK7rjlT8M$cI+v}AWPK>EU zOJ$HdZLH+w2!c_5K4Ke*G&~W-Zri+tf(+|o>5v80YOLfxGim^r=s!ea1m^EM z%8NE~e?nJQztcY(M>gvG>A9MZ#}yFVB9K@iZ%W_m${Q6cz+BH1R&*MAe^q=%2Z^^% zjjUbz#8JiG*@kABT^sCg`M_=|Jlg}84!AknX~xvJCvh0uog;PD-jK9uay8aP{N>g%P7anrHe|8Z&fHVl*fpf;GJ-q88)@rCamQ1NwwxLu4cqr={j93>HWp zleKkTIR8w5EImBMX%kG{{WeFNtuS7+#qvK6sd_*xVLosM+(7c3=Aq<3P(b*KU#$Hw z!!G4|>taUCFsbRpA26~PGS7B}3i|XZRPXiG)Z(&bk+2|LRfFhjb!;z;1lp4}SmGP(!Bs4Z8Nss|IvNUDuhuXk13 z!XX#DTLO`g=H$g(^DPTJ-oiL-QMCP!30NS zO6bT#qADG-ocEV+*YBug?he)~0-pkL08L zQ5WE^fF5WnCN!SAu-ZJ_L%iVxtpt)=3WIMX(OX6&o9QEy2f{Ima~pr9viQ9jQ>RB% z9wa(>Z;j+*XmhL^z~}aupWi?Qzf_*@DPXCOtmAv>!G=n7en0s~HGI_=0P4HeQb#;I z?2yE)k+uF5f5Uk|AUi+WW4?s1HUvk0jQlV;jHls9_(;`$>W6sRstg6=t&Ga3*SjXb}(4@q5v+T*m!q;KFYr|B4(j-$Mwa zi<8D9&H*rE)SuggadVcm>Z8_sDtW`OAacw5Zjl2KBpctXhofTH;@V2n;(3(jK`Pap zhM%3=*U5{WA-W|kz1uIy`1(;UHM3L57c8+^qRomTC&@ch9SUD#Go7#YIc~@xg zbUk-6QVz*@D__27d?IoLe3f;0LmlpOM``W;qBy0Bo~Jq{1^erWi98i}?pf(C#KjpL zb>8a?`YG$a5rv=Y+X1&$Fve&P@GWt!L3w}WLH>sPwk@vk%=KcJK^Y=K4Ms>f!@DOS zCSiM3KvLd;LHDuR=xEYn8UxPuQ|BqIh2bs-8Jrc29*8~)BLODWV8~!@%+HNNfkYE- zF!)|Y8kYsD3eLdzu}s8g*0A6Q@$A3Mi%}Us^R8HA_beB*@V(wU%ex!GUE~SyTtB7 zqHusRNOUg6^|#jC^5uhoDET`R@>?juCHkLs=VV1@L+$FbZ-#_mu7er*{aG;SB6x@q zP#kAO6tmKRuAY#m=W*Ely%o_aKd2E49f-H9rw}4scb7szb?F$0mj#7$J9=mFpO^oc z3L~~AIp_J@wEjdpdtJhvv*~UBm)g@AqB$Bl)Xg#)$uYxTTcKjZ-aS%YExjj4`W5C@ z=Quxmc39=zhltZ(*HjbG;d&4Fl`On*6b7-BoDh@I4HHH+zM}gbhNPgbe?-wkL+14{ zgGVn|qNz(iW2TRQe&9S#u5>= zu3cT-D)RC5Y_{J)(~BnSi%8*fJQhcCVqB+D`xs6ay$Bj0>O=BU{IJ7YE1XHIRB@LK zZ{elCZU|ENWngszLFw+Zagf~1Ut}xNiN8gK$I7QYTvI>EKcA<~32%yMdQAzjt#G+m z&pgG;$m>W9Mo>D>R^QLQ*Mq^#nS6r}Q61_2&INROCyZBP84HmN- zMhm`56rzx6+sRl!SDku-eW%Qc(-TxZcaT@|NdC;2GS;fS6s#9z3_3K-E&4RbSRg9M zGkv$p$dkDVjeG0;~KWr^O*1ISh|AX@j5Lt zDW`h5#5)CqTqjWWvvajB-V8MLh{Zw)5x04G0d#gn{Xf{GfDR9o>G$tz*nXB4y}l7_r;DXZCr_aaVW9E+9nz1tq*B1J^8u_sC+fvk(QU zEl6BzRx271WrtCnXF)z7@C+b^={V(s*Z{t>%++dxax*DLwLscj9DW7Rpg5k!nab88 z=9lM^FI2Dt_+z3WM6|Xr!b6WICdzpEi6weI5qAp4?Fa4%P0}m}^We`mTJ%FXZ#n@9 zhoa^Bg&ew>+$~;7Vk0|8&-4K0&^~6L_>{y|rCHC~;=w#h4IArc2Efd5n-j@IT2+;I z_vCT7m!W;nv9Ua|J@XF>w9kalGZ0kg8S)*7-W>h0PhvASW?#8FkJjj&G{OhvcZmLz zeND3YBMK7COr~P#9%SR#;R)~;lnsU&{T7qW@mf~^%Y&aWc%FA2puwOT0|r7-^+d|4 zN}N+T1NIC=Bu1Z|8a`Y#m4C}(idJB@n6gVxtCe0)13 z+bKI1SLQHlno&9HksZSkERLu8-S%_9|0${AG$_{18P}doGu$XDF#a+{bA>8y`HMY zICegfDiV5X?&ix4lt2=%C3YJGrH(VRWBiXgiTqo@^WcKcO0VM1yFBH?`89L;#aEAr zAU$W3^5Oplzje@qB0qJH*Zy;I6tFmXKD&=Ctm6&*7z?4=jFO{T(H)r)F%K8)(nL@` zs-DBbVvbRMTSR)U%zRI!rLwyW4pJ7gAcju5MO#IX{n06=W{w~1T!;1;S8o&Q~{l`X?8+>?3n#W`aeO z=u|(XQ6pio0%&u2Hv+FT`Uy@zuru!PU;j5KLWq7-56C^4Du~nt^Q1<8oB4sSqa*vp zo-vkJmACleN+5JjVd*rbQ_4?T&MR_+8LMBI0sNJO+k#V5x=@{$w*=ruma9<(FZRVl zc0eLs!to?8_$(@=NxzHuaf1pI&+dg07t!BZAzU-dIv`k1H0boA7{&0Ws^M%0wQd65 zRhW7+7YS8IQ4npAB8BzBkYAv0QjnoQ4KwL}Ex@8C=c|k1WH$E_20j5DzrkObU86W( z^QRUI7yHhq^Ey29ZU)wy;_*6b$HAgxXAjSq2BW^-r`l+ZZ|s~yO+LdSHZua!w&58Z zqtU0_{oQ>#SK*D!3;=LQCOkb!OyiBhatomG+l!ZJG1O%=&D| zMxuK--NI!+xVF?_C+}aZ-Pp zvX@QZYCx-JstYmFx-8H!FxV~I^)B-l_Ch9$*z@j*RUi}596wO{^ZG-ggZL}z zUkj~qFmrr?3xw0vdOp^gygFdAgww4oVEKr911Vp%avOk$>A9SVlTaD*n>fQ%e`?sok(D1$4m@T zgW6Dqy(dJr$;HtS%Px`{3vIjchsag^_e38az2Ebv6y4afT%Z=L;S8Pyh8c?OIEd1` z0dmvMB*r^51vcveUu{f!xlCXrO5!`Ja^ez_X>VTDY%AnL0%~Wn`*S>ViNn6|Mp*lW zEC@pPaFOJxfV}Q1rGt4$B}D#IuC=I^)SG2q z&$P>k^^gOwQeR%)TK;|Jg;5z-L&bjOVST2b?5haCuzhqvDfx5(^4F@fBiT#Xuq|wT zRSBJbgar4;YCpgE@QpHR7#mXYtvRqO)#DR<$;a%eYjS?e9d%pis5EN5i9B&bC25~* zv$p_u(C(<5oCLGHqvenveJ<7y!Bw;d!$O$4y_+TqK#QD+{$Q#!^xx{A^UB2(5UzX~6^!yuDz;^Bmf&Ck&Bwl2SW2lB+$%sP=Pq zXTgZjs82NjW0vfkj}A<8m9RgY+Kt_W0-wsdKV92hQ<}S^h<2X8`s)V(m)l~CBdLX z($dW#BitI98N;o_F!MgB#A%&);cWHDNRwTnHp8~IQ4-tG`+$q@)awY{;`U~n6v=6~ z%4>u|@^l1io8CA(U#eh)2s4gaMkDNKM1!w>ftU!SlRWDqSBHYqiA#p34-POx**s%4 zXX1iiv3^CO@zbjrezv5G+(@iyK)~K8NOWM!ytn@3 z9kw@kbtg}d#QG?9S{*EA|GhZG*+>u5_d-*AaSO z&4E6$6#N-9xH%y^ly*;Y2-0mj`m5{5qb+)Q55NuFfW6~=C64H>ffc*b+bilXR*pFT zgJ73l@pk4C(+bs^O875N+LP!8Ap3&BC2}MR?HS2TY`cu?f($~K{t`p)$KAuH;kK|k z(LAWZ3T;+9u}r|PiINV7lHP25T`$mkgJ+tgHp?Hn zPPh76N^GfJ)^J0$i^qwqIb{hN?bId_3D^S53sRC-!#sfnQWDy;)QNB6@re@TESN^N zyu$y`C|R>xWT+2W8}*5*gqovtG|^DV#m(yY78;1RoYDNy{o((`{T-V+MK3Q~d-aN2 zQx$$bw90&EUPTW`hDC)1H(xt^b~C;F34Jyy)uh`ZqP9Le)oX3G?6bn2tvFRZL%OCIn)m z>SUZLPI1ZG^QnfJlO|c{)@^nGu3`wB>SFp5v#Ox<^l=)2$wYYe@XG)}vq>K=y8F|@ zm}bxj`4Jh?B7sj?OwGM%R56AP-_ufAo`WPFqASEA?|D2xhDX5uP24Es@NP$FSfWT7 zZ+AO^U+mIKfbg;e2q%NvJS3G3C}EU4gG|PKWg%9x`lq?AiYDtds?NH5;4~Vwp+WA0 zO8#NVA~UOHZXSc4iYUunh9kJv;^uC9cT2(H-iba@tUR7sU0Old!?TRYET`&_=%@+p z-HYOBa`Qis9Z9-4bCq~ky{LL z8t3xLwh$F^#abCJKFr7bbyg{PY=%$+HDqY7AhS|#B`|lyK%$fe1_lFlMsN+)n|rmy zAdVhE$o9x#A5_w=g{0R0-zJ?*ooGopr4i9jQc5s|N&fD{Wejm4+RKDscvKhkG@B!x zC>en5P9qV{60}%fjU$0_YfuXIlkJ(JG0VUL1yilQrrKJADK$^C_GvF*cBJ>F6u-;C zVHxy*Eds`4Imyt_A2l+#Hn0L3#Dn1ba~iFK4%Ah}fbf`Whi({{8t4Y_ZdUW2liu8$B%zVblp!}27W02iy zrmszEr%%*VJV5*TGB;+1XxYRJb)X&19knwRnLS-hr}Kr=1wK?5vkpueZhF z0|P`Q&*x2SQr%~CGgH8S8Hs6MO_ivoAR)HwVf4xA@_eA&>T%N8X&~hjl4(iX>?&=z zN7rv$VE2Zwo0pYrLrhDo0jVj?eeNv?l3ME!=3hE!CW*tWJXL$dI=n#IKpT0*K{Yu; z<1reqa|cfrUCre&55jVM0Q;}qLpCVZA^u)xoR!Ne1n6+i{WX_q>A%!JDzI>(o^;*h7M z$=4<@F}F4q3!=nGAD~>Hc3)Qol0fn{Ivb?VlpASAZ`mj>KD-n614AmRoC_AS* z(&IAE=FAK};fb}4DuFCnhVif)dXTUpt@-)?>xmv#*Zyal9V|{Ia>@HEX z5~^=zWQUQpv+9v_hoNZQM(lJhL~6dNN@O6ILx>!wlSe6@{3A2J7xch!rR^)Xv-9_hd2v=Prwb6pZWmf$YKFX@Qcox@`cz)%Y@BI2Kywx zxNk86?LbueAYHIEHB&HHuSFT=fu;H47NSg_5;d0!xv6)f=YkWgal9zz-5VXecQJj> zXp*iT%LoJ|GgzwG8%}8cBG=pI+e%E1Epc1t)9w>PaHhiO>{xHQ>=B?V=eRPi6);{)lH(vYMG?8OOrl7XRjcLa01}p|3W$}!o*h7H9%cSztbb`^g|;d&OD&$ zaMdbau%1qv<>})6wV0b(+HIF7c4Au;gC4QQe!7XqoyyyK8pIFoW=JPlV3Ogti;Ale zgCrE_|Le_CA1l-|>HIRwuC#KakF9+4Fj}zI$MllZ=#;go$Nz#8*Du(8AjeOchA~{=D-~e~)w;?OSx_>jNNyZsfZz!wyOMS7(^N z9Q9b{^!QWTq>{JP6Pf`=yxqKHR%xsIg5TCu3*dk5b>E#0F|g#Uu};v3c6W=@dH4#y zfKo-UjUpLhw@8)tn`bXX@-tF&z&R> zhusguetQ6+Aw4nU^&Hj6QtNrM7iZxqEfPdH8duRM?^xRu7+%OX@63xdSrpY+cK;ro zD~F|eC9j!`Ebm<}qd6`t3&AARLtp^=h2@nr2&_CQUW+C!Y;6jI+Z?mK(6z;m@o3yY z?~x$vt(zJ8vJfU-fb;`*tN1K6E|}WDL(m&lXkuI;c9TY@WpBpUIzLFyEf84t&`h#( zNxzvUAN&cAW5rA)T4=zJD~%eXyY5I7HBROETJ@hND+gu7;vKFulb`U>wMxhO!)}x- zB@B5XN-AJxf6`K!&s4l3&k2DQQPO;Pwb>d7FVHJ`AB4$Ow|wP(ez;BR*ZUclnP|QR z$_fzesyGW?PbSUf9*m2T5e>T4XUc23Q+hfzmhK2nGjKUs18Ytbx^Wijx8*2oOei<1P@OICb*NCS(;wbzwJy|UC5lzEuRM$q0zB zLvzwh-|LoPUC*`qBCHp5Y8mit_DOG-k}e3#3i7iflkZSaus|s&F%Y};S~SYx3+%Xc zQZf|aJ5>17C1k~taNWr0$XM3GI{NnPX;#!Q3;XxIcHq5%$=XwTRgGiy{nrD=WUVKp zU=z!iCKoxgo1BE4J9@V+0Y&OV)8?1O#E^O|FRDp%h&Z)!0CSV?@05pEhA=Z6>D*M# zd1Rap2QdNIpH@8w_qL5TB7WU%H@d%vu@^UPdn3P+D$y>3~y~AhyVv z);{muB9hL@lp;f8ItXJ7Z)7)D(G<}o3$My#v0k$U;hGI^`47=bLke2AD&Q>~zvy(T zlrDr16hq4Y`B^9ojp3@$)?OeShV~Cpx&~0v-){DmGO9Q$Fo7%`c8XRg5f&6&L-Cu-w8OFp)`?~x$8`Ou1=MZ}+8xW_jB9zY&b6w1n6-M2y_0a= zF@Ezq6pxZXO;bR8SfLpE*JW{}5XDHoZS%9-ol?PK2c%$DDySVM#~|IYRWQ428fFUu zG`DWp2ipZu?Dg-oB8^zWj>&_}TG?<3mfIx#IAYudvPtO(RQ={lXY$XmVdAevyujp{ zMB3xMaK`gAEp@DR=e`j@L?=J=nZv5XlVRinEpp+IgfwI+%M1qqmDI$9SNc%Mm|3sQ zKcQUO!L?g3&Z$p97uQ-C^DV_<_M%E8PtkX#PZ3^);_t{CMR%WCqQ)zgnpWFQK?iqs zAZCU;@toJNLY=xAw>&HR@Z9hg9~Fyrh@97!ymIVqu_1G)AyJAV__PhZB^Om+}G4$-j(O zE~{h-Ry#B9H$WW2xawz7gl7kx*&Fogi3;c9i`NHI)J)J$FVX##6FDtU|LG_v}GeaeQOC2DN@ln z`)!Iy6e1z#%dX%dlsk)Y2sPgE6yT3Hm_uGqkcTU=?k=u765s4_-`%iS+B>&GUB>GQ zd>+Jnuw)x3m4}>i1I$+he@Pfc_mKJS6BNc1%xbB>L;~mr zn7mow*s}Zvv11Gx^NC0>W>?=R9fhlVt_}>heLb@Z$n#@KM=5_bW?fnf<7hWC zScD2^%ra>I{lD!`YactZKq?vIPZ^*)KgPypgsV!U9c~{KlR=1`@f|+fbccV`))&p) z$3R*ahw5B`3`^30Eo2QoyaoW2PRsVpJ}!dm7?VOa?6-v?5&7%>^rn(&BYYMWheSI5 zS_>wOTaN_{aJgz}`Kkks{c|2DoG#6QZW3Xwim9Ua<^=CrOlz}7Q@Zfl?AkSm)&n!3 zeER@U(~mo^{BkO4*><)3l<7$@MGsGax5{AI&4@}p$>92CU3O$oWb+C|cGvbk?z8iJ zmA_AS6`AdRT(1)Qax$u7qhS=tbgPuV*?}nYzLO^+WlOv~iS_wm?$Vkub(pA2R1=0J z32fR0j%VpR&F>E#NNQ*@xI@2ZuKvPzLUs!^sEA(sCJwRO5j`~($3rJhB|`*xWD1V? znDYP-%#MN|ZDJnGWEa*$D&YiVYob{Ys_xaBWvt-#$`1wUpHu69chdd&g({H#L(vvB|fvKq<5Q z>k6Z0Ai#Z5qO0m`ew4-ECC7qTOy4}?4}O9F*Iyauqv5` z_n)%Q)Xs>e6@6cNuExVGkT`)r?5A%ssCY}T&q9fCKR)~!`p^P-B}^c5sVX=B&oNUX z>6PUnBSm>2s2_~^lv2V}MrecjqC;2QlY>y=8q>`=T*gQ9s^-X5MSf=4*YVPuCVt~| z*(TpqBE))cW5)O&Ci1>3f&08sA8Gm#&bQQbk+PdC!n-37@o0lUqVRCZFvSB1{`=+D zhLdDclo*?{t_t^N0>3pPyAdSyH}~9fk=@#qwG)bHl@p$)spn&SQ=74Zxg)ZHvNj$R z#LX04w1W2V0UN0>*a9NdI^e-;TzW`3jSX+ZmerlfTJHH-y+x^Kf=!-eE(Ec&KV16K zqVkKYUA8sAo$ksX?^y4Uc{M8_r6SwHl*soP^72ASqL`<{6{fxGpl5Vd5~;!d^uytd z<)#Z|1q$Fms8k)w=)jGmBJI@c5X~d6|KeKI;qY0)_V|epDfM1Y;aU>u27B#Qh=uOp zKz{CAdTEi&_8jJJ){qngpCA%q)E&}EkNH{UJM zt}y{DtOqqTPzc*eZtuHwA-zomr+hA3!}`;;`0&k3!tE}+2U+aL-od8%-_NgKrHAwz z73aj*1sZ?^$F$eVJTy-6BX1wf=YCmWtEjii?*5di*j@~%cOo$891)PKc0$H?d>CqC>e53DXG%AqRPfVtb^K@iJ!f-1KWSX?c*vQaNXK#4g zhn+GF?ee_7&^F!n{c1~N3{7|+K+Q^2yt$qc=dU~W@; zy0iL(W$}BmQC>2bSkq2Wm|LE0Qi*Xk|Nw+~t7Ri=QE# zR8pt+((h^dhMmG!B&u9*7xkQI5LZxgT4uC^WQ+a|z-1BK++DVc#x42Vnq|4D6S}qk zhy1!$`&Q|7LJm4>1itKEHy0pz4Y3G^Ui~bk%_%f56zlKTl8HfID3@Py7o?~n#NgZP z%x6izpMgB;;zVHrR;9KIfb1$*Ctz@&P5?HiccY(cu72aFQfT=%*0D@k$ouecTTAxn zz5mF=ryq%2dHQD)5Lv3=0Jjr5HuvulTd0U2O+_6i+u*_D=ZH?19=1fp3xTvNf$f== z-vWQFy+bEBbypzDa@~Ib4KlRcW%uaDWTR&CYXgiTl_TZ@sKiadCt)UCMMkBkIJLbQDOuHG-t{Zym2Ct6YvF@91F69uYgH3 z4Rfo9%L2|%KHgGP$_P4p3Uvk+?kmmq@w1Bzzk{FKoA2yL>7Hsk)S5h%dsmV2EsO`k zWC#%E*ytcXoX08wq)b(GPu6}EDR1&TY!sQFEV`Imk~(Rh1JyfG!MZTS#j4$?MUO)a z7(x@Vlr@!WBO?V@muy{-11Gi*dDt3B)s6non~w_dys6#Qc%|1uB*~^j?1557j&I_o z>RH4&_Fp}^eNExrobY-I2#jh{1kP<*@u-=swGVxneuKI@*J{zliA4XNC?Ka0!PG(0 zMbtxLfj$-Q1xwGS75xKr2S!{de!hX`QW%}kA)8C#Ep;F1C=q-j*QSt+E~KEYIoD+@ zSDdsCId8voJ~`3-&tNi&J?$fzcb%iGK?!RLpNl)8Wb>(Ck-EtDRK6o!4)t;KBAU9u z>9;x{bf2VOIrL#0>8Im^j#J_dXM%#MJ--u8501zK6u0wu(F3a$3&02Zh9G;l;=pkG znH~kh<)qvsj_dXA6rK8bTba_4wMymlk6%q5gfs2~H)8O!V?7+I*IC-~N|e6|PY5&u zWisoVd2pjTE3(=Wa-o{O78ger13ksE1C;rR49Q9qH@LRmB)CeSB zHq0?tw1!>~Ks_YF=buLDi{fkqEwB0>=4Iy|)y-}(CTWKxKTMe<@c_o94Jh{!2_=qfqyq$Iys;jA5^WZ@n$KePNl8+Rd_`|V*XbM|I?aT6Js}5eor9d z^({88dKgBaSX$9vKzocl)!xq_e+yx2=m}k;m~nz zHN8TfmiLQ)rhu}Ve^h@y!mJiWdd1QNrq&izh-bv#RJJ%L97lwwk(yp281~;ZC zE!CHp9CXNw6u+c6$Z0{1xgB*dN0`2o9H$(3ZXJ$Ba<=eeC50=6qLt&yQ3{OHcLZf= zMB~k@GSV<SF;GryK0cnlM(JkT%S!jKB zTBZ8A7aU)gLBS0!x5_w1=CuT4AK&BzQRd7*O941&j)A&=T7`aeGGNQ4A2daWdDUmQ zJK#aE!bobmK7~&$Q6X<#-%#SfUUGQa8Xv!sEDQMtwRj2~yVBhN)5#!RKMX`^Z0k%; zCD_({&Nt>fJ_q>dYSZs|9r#TIpRoMMpgXVH1oVJAmXUX3fQI}!x?s3-yJxeUcN?v+ zpi773Vr(wo;TP-^?$>iuU~!*ZCaB5dfU0MR5x}l z)lw|GI35JrP1W1(zEF?J+Bow_WK)ZfD*7a@$#_h)Wo=+DO(wXx-#Y^fXii-M*s&W;YmyCGhi&#EMYW&yXY3_D_VBcus-#~QL% zk6(HxNf@T1S9=4%X%KX?0_X};q`Nor(o~7PbeP(V@#R*g5g@v~LYSa?Nii8Hy4n%} zQeU$hZk;Yct6wQ@h!CQeMl7vvd9q}cvRwgBvP?fNHM1R=ne!Z!w)``mEa}ezEVz1#od?GZt*0a(5Dp`^(Kk?KlO#LEa(v3;yj}vNrp7@|@x+ zTWz*qTk6+o7{pcD9Lx`Dvv=gl4Ucjw;w(Sb;O0OaS-nc)ASV+d^Bfx(n$Cr(^Yfnp zbsMmah`(*|4w#9ha!0LSw*ao(w5%-}f0T6^*b~fAHpG|V9W+6Y$C}a?v=I#&HIaja%N>f^og~q6V=2K)8)iFZW#KQAGS4k<&)AR_4IYqR^46rJTrM%L^ z1OFx$+WZ?^1yvn==&^CZ1gS{dJ1D%)ne>clH-E4`N?qG4PwFoX-{GwSCgHyOQzUH6 zn!PS^m;?eP!Xm2DvHvKRx!+~P2;e(1li<0W=*nOi1u;RBU)$h3(^g&Uf0^6RcA0(l zXm@P0DOtr>QM)Hdt3R?IU`QO7t-HQ{Sw>-8Ffl3KI|N>vxSK8vo_pwc#1kNaou6ma zaT?cM8gfLUz1N+!`pCO0%3O70hxV_ci+Q;^$O2z*`;ENS%lO>5ZF1 zUmvq7Hr|}C^|4HDG(01w1nL`>*Stl$}a;PZ78k zBbQPr?Tx`UAXkDGyz=S_TweSeIqanC9Y+Ybvyg)QdtGiMz7U~LL{-`VZP>9w`IbfQ zBe;3~E3!hnn)A_}22Rob6tA#&cs3VfiEXH+cwp2A;h?lnr~@f+8$P9U8ppF7P+U2z z^0lPVdxC=i7BcvlVi1BgLtg1wk$_UUqpSyb;|2?0E}?=?HWw-C5gQY4^0|`N_9Cz6 z?)JnC+^=rqlxEv_huqFk_@}sTP{OU?0PdVoqjI_XP;5$5)F;l_X0?aauRM53RpRyY z^|thPLQbL$v~z0NPFEObPUONd4cTOp>NiQjUxIR92wIlOE0y6rbMuKTfYC+pw>>7l zupRRRiMAy3?i@uBD6BDp?L-oD{crVDyQe;kWq>!kUqLpd2hJ&#IX=|(qa3tO7c(=#?g45+(L2>9N5lH z?b(Il3VZ92ox+>sx8?bTm;vRNw6aMxErF}D$DZ2$xdM)XY~?-z*4UkRO>$t7X@-45 zBWi*wozw~86dDdC&=3m~QGuw?$HwmbN!g+$JaoM2OER$QW33>GB_Z4+N(5Nzb7n=e z??kc$lhn>jdbIq5fzRiG$>f0s>v61okb#@;4a`O4%;r6g19}Cnl`PV>%*Ig5uFa;g zrrDj>i5Nuo$5`U=H&XvyV7(S^UdLem`shSuzov%v%t?i-Ol)1W8jSa2b>~X}l(E!c z>5h<0utmTfA%1JA;slGLj3)zdCqZlmB!Lk7?6R5hZKZ+4JyR}UN^MoDOx!s0WaU3t zJ`biaiiuP2EjSn?wLuoUoM6+A^2*?x1!w!>rQn?66>+MZ;BY$E<2k0)oTNEkH2b^^ zNs~KY49?gE0CVMi{1+t`6mE}KUA9F&3+A|WHI`C)lETDT-6K5&x2~|HoLtL#VDDl7 zW}98t@w|cDKypT`B#@J4G>5G(3Da&gfb6gwqwK??!aL>EnYaq5B?1vKzDW*5_b>C0K7BHiRzSWm%1ebxa--H0R9Wi2mXK3n z+>KP#R3h8O3e!RuK6I6c<+lSHtnDl|eampKN=zM~245|pSq~DIg5)$$adlMrI`4>$ zksZ*_el9w3vTHPV>=x{w`tOz=3x2x z;kdMy*mHg`ah{@46D>kCSi#7ghLtDdtP4vw_I_`ojddvl^9tsA1TS}xa zSMxUIeohI=Pq94+R@agYyG z*_OA#tmhmxYIdOPTv-^!5bOY|Lu_G^(PCxFq3xt{tzjTiriOs+>tF}u-(Hi&Ro-FT z!lbkZBifxMa(`&(sbg{y8mW^!G2W7kukgNH>JBCH^i!nvWL=h^#x)8|UIC4kzOU1x zkxH<7RkOKS&sB%3q<2n1akNS_7aNfe;J{x;7u2v~sLAn99bGKk7-siqSpAOO83QtL zynuY5<)9#UN;ec=i_`EQO(_f!|Jyhb8wUa%OWu)0fGf$B3(^}vs=ShNVz`E8e@AC82hoHuk!B2+Co#O2$)Ho1w zsMPxynyNeTO)hS;sqMUGyvkJfHxS*GZ}q-UgL%;~SnD#9aFN;HzSDU{m#`dq3Whf( z(QsZ zioUZv{tkVcw(vq52%s4v>`LVg5%r9R809S$U+MrVoS>@O^ilIE;BE3+>X$$|RoWo^_AB#~wN0Ni=$ZM$df^2}kE97k zW%XWb#hhDg&*90zL&c1Ee%@Oir1`sD^|@ ziuNdNSzLP{HKzanUX##lI5%EQtIt1-3DG0f(LbDOEQhi5)G&(Yo-2X*R-JRz?3USY|ku@q0 zHtr9ZbwpYdJD%AF^EJ4%4xKX3bglR}?-MGb1{uF?_1*Upk_8U$m}A90VKh@ki%Yd25A%Ld-@Kb!hRzgQNakf?50DS-FfJp~n;>VB zedwu$o&pd4vDCY6LJ$+skbpHMmMYeH8;4PRw7%&@fnKB_cmWVbZ5Dai^$7hK@KgCp z@-`f^!&r?`!f2Ut5Kk26%RwaP$wFUfuNn^gqjmWLXrSA6XJ23X8uZ%$9T$7{>kszg zGDp7DNQ@vZt_L?^j{W-S)Xj~mHaU*$LEy)F0r=1*i_Db-h^j%`k`3T>pMQ6%- z_C)jl6J9=uOsH@f7^){a4I4*E{aAxB_*kVC`pNkjpPso&^2gntMeasas9)KEKTKps;Z75)JMhvw(<&*beAryols)sv#S7c|#YKlUcqN zN_`h?N?QS?@(zBL!a3wnZC+6r>I}q8AU|iaen8KVcy%oE@P1*`3LTlhGv`gVoC3{z z<&Eo)w33G8JwsjbvLFI{&JnzCh9Sj?MeFH;yFk#sguaZ4JP?^{By9-3;hCoRI?T?V z-6rG$el{^tsVZWRkjcBl}6Z0&5#p*0p)R48|UTJM$+tAy4hYty)-jJB0 zn18?P_VMuzc8~xQxcqpfYu17|5qM?0sjcOhlCld_(?19ad?ywVzJn?*7s^)4kJ;Oz zek(t1EY$Z8djV&f8X*C2TA2mNTcK!^e5_*jbu_&HUP0iaDud3Zs`do30t9=%fnnq) zl%%!`&f!r(8jDlv87PEEO?vpuS9;!S!V#MXmO=;Wj&gxb*pHT^SHq$DVZPI0-#{fa zu!=-He44n`BFvK)qb(kwIuXU@cJfckSUP`Sd*Mv3+@juwC#R;f#rOe;23q>|rGeg& z_nH!LkW2*557iQHR2s-Bg*TkCIl|dV5Y4&wV{B4H9iwQGA$lb&wFXn0dv8O1DJcAg~8kQS%OARkQxCTnmaERY3APxWBR8FrPn{g}&f7ink-5yBj!Z}_@H-skm7$ld3B^_6EL(q(_wSiU9VmjzSF);GQlDm%QuA;~=y zKH!D53!fp+Fk|t*s?H9}eEYi%*4vxONo(cC>o>rOZ|)e6Pc?Ky&)E0MK@yYJH|HM1 z(o(Lk^EhJ&4JG>#Nl+AsidYkptOLF4MGW$k0TAMe3kO2c5Ak>O5;?f|z>c^&v|K<=7#SL{Z zi+mMwUHP5+9pWkzg8`%R$1)3a>{cWbz-+^ycj%_GuhJUF4>NS!y{+&Iu0i)tOCj$p zz0lJ=)Q}Mx?Zm;tZxIn=hyPw!*9lE&UReD0E@p1T22EY&=^wZ5*RX2Z305y_wS*pV z5nR_gRL2)X{$C$#%WDlkb7>rDw@sj()LZS}mGf@%0~brqn_o|*)jlcHvu@YFl^NZN z5egpE7^HyN6P&6`VvVVN-!2THOBEiiX4bi43Z2K+Mf)PZR1|$7|3OX^CZZE>)dJ=N z0=(u!*o4EU17gdOZHM9Y{sF?Opuh0oDK+w@S`t^$^KxVfmYb#7nL?Ydh~tXe)0KjG z^L$fcoONhifa>9Uz78Odg9J;yhgc1P@`ZH$EEs<`#qKc1=+#G7YW|{El$q${4~*x{ z&RxqAPgm*!n+$Gh)kv`MWkzWOK#$#DDqvVAn>eoa*(5k^@}h-FFF^F-q*zETL9N+H z5W=|DwNu*hcHZJnKSt&dP!0{*V40zx`6-V+5~_ekn@-jo$8!1QE1TP5bR1(OI49RI zs^d4imKh3c0Fm*&7#MF3JT8BGp9`vjbbH~TU5Cm<<`OZ=vl1lWz}^_Woy96EBBlO{ z(|3p98=TG1$}PWbypiRLsF9^pVc;3A1Lghs9ydA66-DndFRZ-Ua@%yM6H9Nc2ug(7 zgm%DR?6-Xc8bE(q)275y=Pz8I9i03I13eu6M92Y|oCo|Gp4FP%k0C<+l4+%rAnUrJ zhA1-RS_cMI8+5S~TAw_`lFBOobres=KBkaRy30YLWCot!fsbx7iEbZGNdqkTl{I+X zWp0{Nb|$BpZC^SKN`C2Wvt{*1iN#**X_UBA<(|As2RX}HWb%cgV*|GU@(Z%FsH8%S zT0UuFp>dew7mk;kcwawtwE2CLAJP6UY)dP=ggQG-ne3V*b4LmJYl{OJ_mfPW9QC}j z2F~l#+Y-h{zcgeR(`ihhK$Cd;2wZx(R**&2NjSmEK%30efR8b|F`a?OUN&cEpjV19J)JS)IHf;Z*~xJe z%ViPD*=!=dMrB*Av@UEeD8j^)4u?9_^10? zX|lpf)NVv<&n{(16q)>XQVU~FYNg9R0059p#w%CXG|s(#m5gnACmhuCO9ph6Oznl> za#nq-x*qj{YdO`&Qt&G@V zl*9;qR70w|3p-6Z0RKM#z#BUT{W`6I>0WttOJzluVM4}o7kB^ZY#YYXhWeU#PUhn> zb5gOPnNIB+Es4QmJkqdvW|G| z0&aAoMVT7m2xyG~B9Uzi3QLZ4MQ7>+j8<%Y))oe0-ey=kPD5GXRc94j9KcHD&r|iT zbcjAWdrcjeRFtVhJemYsflJ0Fj6ON*Y|POw%&w8u+{8^JO<)8E&&E zAbpA0J%_HDo^jnA)4{6??w}9L8?$;tac@07?`1#bWE4{pkQuc?KFoOB8tjsOlMkfD z$L5+C+h8mY0+(mK9cjS63V^eFbg>!kG^ZV*86}z=ozRa*kyUGtJG&| z9jQ#D2)A)czW76|Hp05!`2W2+(G+mBq!Tiz|0H4r!=wTf#+H+i)2B>cQf+RG{cVYR=RMnVlV8iQOeHfzxs*WFaHqn+X%R}LYs5IYcblm@OjeN61P+-viV@ub-2vYMgDINN`@DaV8{6E%yKG&P)o2{8OGZpgnM7grESARC_}HJR zNoTIqIaxZH{l`qQx}$t)#~~Wo-Y_ybXj8#$l+%1a}(BosC;*-U@hZDC9X7dNPN(j*XBXTg{IaEK>ybL)_BRCT_LSG&hTWMR#=- zUtn{JjL)Ek^@x~McDKl*`oHYwIQU^DGopE!C)2IkssDvE)c`j0TCAr`*ipNql#(G4 zq_1`{QAcbU72F86Tz)gF(A5(sv7q$?MB3lzJ^)MQPwM1?Ub|prCn!^zaOAA{acqsh z#G(`Tft>}n8nhk?^Hw!cwQ1*qh1xs3AbW`Y&DNhGIICv!2-F^>pPXtBu#23(+AG|* zyqz}YY#RPZMQr^MS$y10=`Wlzi(7GZ{Q-6tqk60USY>@bw*zQtKpq%Fi?p`Wu$t`A zAX|aptkfmvDnz-k1trWcvy%6Y1AY4)u4AX9T7%qrJ%ps-`#4xP=1Fksz|_t<1%|EP z>fcim?doIQLtT4d*C9h!Bd6cQJe`IsR_@`9UC~+ z&o~=X>m4bVY%`?<{7i$Gbd&5mML!j1d2yBmj?^*CliQvYjl1`*C%tQ9w>>ashsv~6 zD0wjZVndWSW=fyete$N}lg`=@A9v7+iA$Mm+q|x^^1VtSQKUKEF%&8R9Oj!9CvxiK zD0YANK+hvmcndC%6t2V;Z0fiExo&yeacP%n36BgHn27%R$o#oI%cnX@+4E;3-x=5p z|2ne!ZWK=zM$BGvZ<|CkEa1P4{z_Uk;nqgS^NG;OJXSFfD44!&ifaQjiKeHxq_FhM z8UdB4xa@3}TL}nA1k^Bm*T1(rpc^5La4=>2gnzA>neV`*SG0P-Q-g^ZIMTBbsLA=O zxy~MB(C0foB(vd)CG&VYqw#*g#In9Y!s*)VtkslFTJt1Dv+ATo7#OeOj z&Z(;4CWBr{-uh=@Ck{V&6h*^|Y5Ze1p*x1;Ufr{SSGKKRgk3BFW4J+BCsna-aogc^ zdB}`$s+{QTY80EBziGy1`0~=WLvG1A16-Y#qZJv2`Vz*itcHpUw^Xa~V;zpX`K57w z&wtxT>>)S9r6@%+^thl~nu)CSVTeKr&w{WhJbu83N>xsl-$Lg=u*Qp9got(Rk`ctF-x( z4lE8}IryMeiRnMD-Tm<8R(Pv228En{u#xgzrE{Y&36~m$XdpBj1>6X)Dfte_r%$Zb zE0fj`LDJLIkoYq3qWZldBde)St`LZ9fT`v3wIZTrkNndIz;ti9#=c+PO|7yxHBL$x zR1Wf!Z$&7t)M2f4;ja12caT?&V!XQkKl|G??|z5DQey%m(ICR6wGf7MtoW{9jexPF z(D%5A!_cRR%2tNT=GXjR_zVjV95Vpl3A(y>+pY%KMXIR>$uK&Qrtp15g82cF4Dsm6YQ)8ofJINDII$zZ2Bvz57OX8;EMFnrVh1hE%7c z8pu^rO6EKi8W!(E>C28-LICZ9pQc3Dmj}SWuzJg<{_0Owb_l3i>X+-gI+mJ#5@&(b z0T7Wvpt!x`PLz80!qgsmxvFa1rHpn@rb={WAQOgs8rglU;tvn~mFeB{b!DLEgBcdL zhju%EBc7Rz10KU$@g3+q!yO>w2cYAenffNcKfmvx{H&p{O~VUkEYMHDQ1qDduwd7J zr0XZNdq%@p@sycFAC*5R{D-m) zM>lxTMlEli=OI?!y*TaIvG&tq;8fBb>cuQkEYNs+-CkF>U#Cb?zpXl9zKU};G$JM9 z*p{&T@7p`j8=D~5t3&f<*_%nv8sT+~BuwaxKXDidQ=%8JAY64I=b&$wd!e2Xh(wV- zS~NF?17>CI2P)`5uAu1~gHbD_>e11`g&IOnmT}SoR4>Uw(fW(Duz2Nk2Ajnrwv5>mZr>YEjlw0Y@^@tb;tM~d1-9KDMwu6UI|FDLZ-bOegH{?v z3kYV<2eDre`5b5ZGhdB_WbKA-ucX;69Ap(>P&D)Tisr&$w-AlS$H2R#nhlcSNG+&r zSi0-^_OP0K9nKM9hsUikuSk&%XCW@QTfrMa*1gBF%XrKaJv}pDR%s4dEUm7zl$-Vd zv)1G<0TZMG#mjfJ3i14e8_X0xbO@n zfq15UpKO%Cz1;7iVHa1XITRL-`Q5H#WwW=vk9VE!f4pkSZyHjaNb z>wB)YFB}q73;1yS7*&ONBRs|t46CjGsYu_aQH!GX(*;%HV+_on6*nWMGY6!qp`r5q zrY4`;oRMtv!KF`Li7jJoQM{thKv%dBPk=3UHHR(cWexIifp{%=>HScT3D!w&DRSGPHG$p5(?N)^_0=L1WZ%SNp z!^0UXRZvGfu_0_C-gTIYXlhakSKBmzwJiP`h^1l`m;2MY0qYZw^@+V+-m=W12W)W) z{;Oy&XiWS<*#7)_$`Wp|Jd&$dI@W-I2Hx9NxUaQT$?Tn)^VP=kw>OhStZH3!BxS7x zt*)*YE>|)8YHZU&MO!wzU~sIlOI4yV=VI5flj`PkiuzM~uX~GmpXcct;!JmdCIuC{ z!ehI9F5o31)Lh>@nXIZ(ZORWYIM_fxC7qhTB5p*~!N@jj%PkcxdFz5H+;S5&p2IJW zTWA>0_?q=WL71PpE#0r^`_V&K3JeSV;*b@S442A*kFNvdVbKb$SvH9($}I#Zdq8E>*qd}blu;S72Y z#A=~E5pURmKnlt405G5X@FV^_(rgiAwcPyHaiOR4H`1J~!SAwAN{>LI|fQ{JETK1iS{C%VROeGNS^&*ku7_2*ciXH2>A5S@aWy zbGxduO_qp2uGS9Nfjfht$qptgDtr0+893YOIWS`|P?W@CX zC9(0UX^8oCD7NZuYPO3y1I5>QEfHsnd5R_QnUaQkD{*H$ah2a0eks8fQTGJ64-x#8 zbx`md3H5schyU13fhS`%KH5q2h9TG$VD#up@~YQeS%-}sZg&7u9dIAh#x{V?2GnE2 z3`5NF$Y6Vhw&v=%Z)hAW9Y=bckDbCq%2=A#tdTC_TOSg2a2cq+mJOnVi}b0(8|c3{ z&2M#cOG$@aZOFei69%HvO2$2jjf=3d>-8!7n66n53?mUdnQ1U>tuZR4m;Ad2cYb>N zunO9Y0km;j(+N%+fg%cp`{^z0^cm9Y4P`#Qgc9Lw-nujX^`xwBa6HMcW2W%ux9{X4 zx_tFLn*7bZ9fZVb<_-Dj4EhqGK=B$VW|3tMWer{?xU%6(a!SPyL~47m$u1R8M**wQ zPBTx>0DdHLd8dzqHIQPCV2aGqy0Dw>i3mAaY1zUidOM%psg& z4x1E~ z0)h%C43YtoBxvgYRei3B4Z4Ua!FY~k>dwLWf!%p=(#b94p`7R-A&eH<3CvRY6jok+Mr2%YvRfx3>2TD;ibV{pY8tA z$%O@e#Dj@?FcvXzU)Ahn6t2e1xZnjT4r%T9wdkEg;uDafABQ>@0AXkQC zQp|7G-4cr5){4I)s?!4MEO!87HLmcoUZLCZbPZ^;aAVZtSQm)xwutB{N zpX)h?S6f|fSONPJ-KKUs6}%z@hz6gqe$uC_{{LjH-M_2km8nCF_S~O9*YnCZZuJGg zO_3}J=AFjbQ6kkf2~2r%787*YC4|`i6Y3Rpm4BAv>9@UDo%i0SwASAawlrZ8&U))W z?S`w_>F(PvR-ppMv@tm-rr=Zqt3 zGU__Vwglf6YMBKKZc%LAZvB{lopD$0Iad0x<~p2tF1DZQ3g;PwFRLq1DG61MtOgSyqX3l7i|jI)Rw zlRln#jsIiFBxlHH<_NlWniSc1kNhjwx#$3P(i2DTN%riN)>qgQKPV2;i_GFvNR)uZ zq=o@Vp{_d`MN6%=R4e#)BV7{-1J1|P=hfZqu#8j9c?h$09%xt;i9AV7h`*0;zX+@T z+Q+Bmqy&zE0{WX3^afQ=I`1Db_{wMAHf0^6jf!n3px_S*`nO6unRu9Kmf$Wa;Cbni zYh|ObbU?n@No>~8t&HR#9xjnQp>>%wJO(cG3UhvDiS}}kK-=;i0g^5wi)(argCvoQ z&RfbBUk>*nr<-JleRjE>oUoc;3s|2y1Ck2Ht`vL3fgo~9ZeX|_t^!-v=u6VRmLrsgZS$f1sIN>x%5)lY0wcr7=&jXzBOzt zqHJtnn`l57*V0UKPn?`vmL!>#Etn7qc93rz>>I4oj&=tag&&~H@Iwm?l#p{MM10`;6iQ6E;8b_OVg$=ON_dOMSQwl;MUtlO5y2ALTdA206 z{pm%7A$Mx2*t@>eyZIJ4C5{Hlc@{E0T$JGm)Y3`cnH>(kO*y_o#kzb|!EP@UakZ7s zY}14US6@!S6Y^YkEKjY?zoF`=Qdxs0BFT^(Za=tu+W7oxApLFVMl@N-udt`qh6#9b z{nrE_9V>B*mzp$zshG;wjF(02r==rzluR z#8`<8eQRERo6In^B$)VEV(u^iPZQ83R#!m=y%}5$ed7D5Nbz z040Y}jjldB;d!k|7NsI~Cc?nHeO2`2Dq;ZItg=!4ZqKq118D|*#{fSVr#*MC1Z{>J zIwRzWD%yg*B-KV-lW~KT$HV1cEt3f`i|(B#lEs%HAh#p43WnWh<`xQTrxCb12xj?1 zaZnE^-_c?yGFArcj{!)$BOT27>ux_QUjO!uA(Xb|XK!bu+yCOz@PBtfqGjJCQhHHC z2q(t9$`^|oN6;I-^AS<>Wj~b7kf1~L#W~4MuVrk@NW@B}&TmbirMj04GaZlxpMN3! z@suRnLCTtRY!PbwUQ#bDY0IHl`%o{0;FZTW2Qw6x>W@l` zOyNI@HqTdulLSG`RynaEJpJOK+g8&aefUB>hT#cokl{tGuaa5i{eykVgaaei*D$c+ zs1wjnynP$stjInP&5@4xTsPf@DN4RPK1KrBokj?o~1+~ADI=AYTa}u_ZzbR5VO!~Ft$5U}n zM5upK{wtd=?m0DCez8y#OgO+coH1ygesiU}7+skF?1`}!bbk}y7Wi;(+t^sjCJ4*d zfyU2%AM1nVi2n+Q`Q)w$YJvJ`Zqhv^^6=i#QfPFob7%Z~&0P*1`B3=>RDcvaeQplN z+_~Uw&@=OITM6DUrPjqey<@F<_-`hk7gMo^fJ=26{Gr}hjM5wTg$PAvBzE0ezh9*A zR*1{0KjSU1iI7shMeS{U)H;l&lDm)Qso9VV8p>5>+e!xqraK(*3Kjx5;Zj(Ba(D`8 z({2vnLACmhKQ(d1qGzTfNh9m4HnB={2pcbJIl(nL#Xa)u&^Kn1r?_aLoKMR7Y!5&k zoO+~kr9ZVTi{&5WbD2OwLT^xBrLFf`T@9y2b^=-_s*i0ItO@=<6!Wog$!zt2f@U!E z@9p}_`|*-@xjinup}m`vd5?40wCrfkIvDLR({NP9awX!XegT>5Kc5@P%o*#_l;)e1 zv5cjdsgZ70QHXlNLnIPVs=X$YgZ9Z-V^Z%=F>)@G%j$1Ma`)G8dPgXuI@^En)%!x> zm)ipC!Iv@iX|I#!{4Xy%d`X~vs|Te2dVWZ4p*I8myA=Mt(LIkz(;!k7G)Cp;<93&6 zhsI6a5|hJ6LcFQ37TiCT4*2fFtgJtb9;UW^goVe5I6`#XDj2dw1esBgpmXw&+gx;o z6ut~sBF{jn!`q8ge$%nr&(lMGIYlwyV{B)LMM;EuMwfu16XQ|7D9O)1*2-HzgW|x%G6rc2{rc@S9WB~C#%A-;(l!J;2kjVz z+&y7(XCpAS*UTj$hlhN557YFs*xI=GHP?GpnaE z$F@wg2e}vsZbu1VrIVCxrhpFFp|01?vN&lbs>)fCN%seN3}}$tm5EzxN$6fS1a9=w zS(lu!zAd(5)ADt3nPs)$sJ&2TIHFC0uc+oi_&s$e9QOz^%C~A$xd$$z5D43Ijc;>|I^~)KBSyn0ldmn@H)PEnRXGB1EFSm}C?Lqo(5++?>=DLWOi2&N z89h`)d57jpWAFI-VWl0(pAD~16?S=11Bt}Xp<0KT7-8X>-XmQS5QZaMKHjloEaLN<_Q9 z?CB|JrTm)ghS;05v6Nv0C(z8fa-y|`G_W)(cjdFNVeU)zh$FECgy9LMd?JLA{mlycQ314eqvv7BSm0j)4yi|N|y9PsXB>83Sg z3vruBBWsJy?x~rT{7Ufbf`F|Lq339k(6v28#QDC}DAz9Ob!k7=OV1CC1&ti2qV)T$ zCa_^on|0W;wYL1HG>pQ)L?}2>d_{NZIN>r0NXDkGxaC+1Ocw5yswZDZR|MePEUrFs zy7mxtCfAd#av>8A)ve?SBNhTRLxY-!*E=2}>>*P19J0bnTTF6|oF9Gb3iDNpY4))O z?;J$Rnzp`;K>N?Qe-p?X1@1yhE3Ksm^|$a=Lwul>LCY{KQ5)y%8I}A~`EcZ|>!!5@ z>U*S}DSn1jhqVcWEJh6T!Z_klP$d?+)^Q8rFoLv0V_Tx0I;}mQL??>D=3nzug*+CJ!Z8rd^_m;lKEh?y~sN; zkk-diuT>WmQ0ogsJflhSAP8s7wnX=>*v`vW90JWPLpp{08hQf29U`1RdYCuNQV-aQ zP-Q5zQg`LLZ_sJi5r1FZV$Z*m-vdIFT8XZjtWi~Eh$pfVOjr&IN%2+%NC3(~GqJT=ui~I4 z!m-K`(FOm#GN6~CF0ZD*V77)-J>x7ss=u34d6p5Q2_%B{+$wc^*;haz^JXCf~ee8{rVW}x|U zcm2T^7MgP{dIJ{$y1aZf>bTCO>6Mem?kX^3Jde(^l zF70qEe04W%u;ko=M<{Qjn!F_bWbGxsy1b6BcVjaRSvpgy1akgxpHpDjJKnu63j3Vp zx0I!mG`(Muuvbz+li*@2zoaxwui?IvZ32@vBhxrLk;K*v_wZJ8I^zj!r`ywbs*-s? zQ_j0cnkvPa_nTS<5qSsPNlnuvm>*V~O_f8kU`38*;e42J-VqPy z#S_>sH&J<5tmL%C4c!n#fan^GQUKG9N!GRp(Q7n0!;A`e&cWMb99hxhp`0f__EaUG znT~PXae@ozNczNfs``WtUM%?533tiTrM-kZRe}5FeA1j#NPQPBy>oo?1~5^#-@4oN zEj{cd?BH5W*m>}beLSJEhOX=GPhH-ZP~mMd8g&rWUaMGFGIp0lyWw+=B94x`CsCpv zE^L{u1z&)kR&5aGs)&gLSLE2cjvn%XOLfU+0)@J0>l8>^htVPfmz_Z}b=X8Xx{NeG zvrq=LoWlj0QH=~9qWIHy0{>gdW&@#J9KaWXv<)$k(coW(0S_u`N$DSYtAJt*&IJMq zkPcxYwZXiwZ!aUy+a3rUvzl|8REmNSwQ!u_*pjXhJc*UM#G!R2dmAh0)AM} zS1=u(E!l65rir@AB9gc|#(?SpTLD@sNjNLQ{-j}_&Ha90o520jDWPV??owZ_f)ya^ zwhUql+8UJ8E%niH#=Ka|0)z-xwKf6Z_}ueGgXm3`_yOvJ7>aAPyIko6}@Cm3L^N{C*2 z8{tB&a4Cw>tQA?8A#NAp>qY_~S72xxHV39zOO$j-nRI*=L!Im7#Wdg`QvXQmhoQSF z_Gj)Xv7rtP=x+wLd#)FxoXZ+eSE)j zx9I7cJ&GAc0v3|rOd6t^I`#;pjs*tIiXmIdCXGoHMz4a-lKA-gVJI?s1y{i4Y5DvH z+AN=`q6qd6L7XDSBTiBKKxu|`i?dGxlDSDq1?Gr!KRvzp;3tjSxnd`T`ro6nX$LIW zkNd~sEgkwe!F%Dyj!0mEHE6Fm%%3D(tHB8la3 zCa`}?mBLgIUk1h+V7qpZfFvvFW}rMq9{B|y0~?1e82Iy` zDFTLhL49}D{wbrJ%2oix&AzT=TcP(?ak>Ja_CCybmhLR0T>lOCBrac5NWlGE9G!BOCP$0Vt!)_~F@U0Ej*2<%r|2pL6tTP6Onebr5S}jIqPpUg@1u z*Kf>xh^7-Co4zVI(&n*ivFDt9y(w;d=i?u_)9`VF;LlvO{<(x{#vri(6W@}TLSTtz zjv+&fh@BQG_Rj-`G!60Ha*b9cvocR8l?E}FwB#;FVHMzSRcTcdjFJdtZ+Naz!cm(W zt?z5Z-rKoiTIdXzlQ4Gqt=GwAMXl zW2|!V=yQLGeAq-|5QhSm5aE}vFo6L&^a%QR--#}LcLc5GSR&yds*kdG6!v|+cY7;` z`i5hr&;hMm-im{!GeJ%MwS8vGtX0S)gq_bO5SmxvK>$|hR7QY9ywFO=2y2Ky0Tv~_ z-6dmS%%JFiC^=)>ChcJ&D)~F9`EpSr8ID-s6J-(5weD(f9qwu%~@TjB+c;I;~4qt_eHsOFt80GCy>a#1sm{% ze&t`)p#yo&a5w|RIcL%Q^h>eZUj$xYDL=1J9I{=x$S)VHK_YY!v>nVnON$N!fx2L< z0prP`G;@$$Kc}qcW)^J>yk; zN0KEcJo$S&52LEYHu={+P0^`~u68^z_&A|lBmOuDOqRJLeQQ0AV<8FifWon?`m(tKP1=N=1Ju4Leg_Z7!Aos==ls%Ps%+src zUC)b|Gj;d-ps|lGKN)IPb+4bQ+CJMKsCjWBBRq11*UewZ_4(rZQ2LY#sKMp36CDVuT?0p?Pa3D`{Bwb=;$5K^1ZaXyqo zZs;cPkCD0vxo^8?XD%@)%xnvU9an?fM)Gs_Tg4>3xLMFP>7H}2JbS%0XnNAs{Gn6V z1iZ+^w#tw{H0TUvF7VD_KSCCFj;p7iX=6MqNa(Vx5QRR~@g8+9hNEFr z3?o>!7k(a(Z71^D?2q;xtvn0PO)t0ph7O%zjtute$AmFya&3HM_TYvKi1dIJtdirR zkE^_Hg2lED@eY}j&CqAQb^|8 z3;vQNx}QQhbKBY$WODHJRtoQ%ZB0uq=FVqI&$90+g7Tgb^aSKoNRAp&7puGwD-KObw)Dcd?1v9VEB^+WyCsx6#MYn!P65* zm7xDAQiG{a&lo(ar6dv0vvA=&y|!S)`NtKL>+v$TWQU-ATI~1vzq&vC(_VRX1R+wZ z_?0QaTcGhxOg%kC6fRbQX|Kpg52^nZv2r^pWIIoWo1&Ja!dF^d1^e5ibgIkP30xL& zWH(<$SFi)=SB1L2Rh!Q^r1P*;D^O90aZj&WkJo+mx;pL-XRmn7G>AZ0Mw1l*$z|D)Q<#ETk~)U=AyV*DH62W~fFUaLobw|T`%Sjx^g9K5Y*zlhD*yL9sg zLL0;iDAv(}M0U3hH#W}HsUcuBFGdkl!m8k6^Uu6Rg%5OXRu|g2ebod&C-w2^lty3; z4^UyavIpNgOx^KuI>o>-lG>-H0!{5ukt`}cGnCW6L=WnPS)Sj@Ujf9o%?C-CTbF{N z50)g^c&%DZ@mqbph3%JjHO28qwDW+Fe4Bt$UsV#CG*zcs1XbpvCS?a`^i#9(mGm~DS$%>$Gyk+)d9L^OUeDQim%wd1j8fggut@uWrGKAWf> z`)$@}j%u?`zjCN_u-RXSQNxmi$g6QuU|tSK${B$lRBsC<4Uy!v^L<_Ur>T}mpqfF1 z7ye3TpbX>^4@h9EQp+1lBoh-(h)N>)}aL1Gvm%hqtRtmQ0@1sIC6)#vG#`Oo+SNpgiHl|2;YlEtl3An!l>nqBqY_ z<%C|3YiBXU<*i}aX6R} zG;mymf43i731Bh63dx2_Bg?3z&wj{wC(Xc@l@&NvN z-3_FL)ZL_JQd~re-)v3A)c>tIhO`JqIFqtgWvS|{(R655_O?94={%IUnM8%(K0hD4 zw$LkV%v;BzT?*O-NSOkjaS44)CFEV{aJrVM30zM5f#?_XnS3{=d54Y2%V5Hsk+7RY zs?sFQ7iPKOE}-CfFCSFe>1+o!NsK8kN&Q{0FklyCL6M!0Ek784;)OqkFY#i&=P1ap zs%-%1ayH6s;*d56{)HQzYdB^09sve2LCc2=+y_;quZ%-?mz)_zxNB+IxyfG>gHyRB zvNd;Ib{iWx&cYL?>Xvu?_p8|xC5LzV>Ajz%4p0KZzBfj3u~A^u{1V8@yqrP`C3iQt zoc#U1DsF8oU;3wYnyqx+djclq3So9FYUd;odmy$)TBbfUi&ULi{>nnZi!g2s;i9Zc z{e9%qP7LtL#HcJ7V8~oqh#X@{d0|^H>qtAg>|YrIXd%yZQz-D$N4{zto*-S+jiLD% zwv_$9f$P?Q-3=wFx{2k}Ly)tmE<;mgE~@dN8WH%QsrdMmtF!E&{r zJ(C+QqK$8C3}0nQTc)lOfv)`*_nqu9g`D(CjN~0&2nGhU@ca8mD6c2_UBuvJNuK;5 z?S)d*5h>LY zmmXTAcaC7bVceaM>H3YkK3A{`_+Nu8L-CFfj#7~-x&CGM!p88nwOI_enA_~IKRDTc7jl(WX|Aa6SZrN)Vq?T&@sP0~7Bq1*wJxhD` zZ=xT8<9~GY>(1}*`5XG;7y?40;*5(S9W|%iKahsUk~!)0PEhp-f{ zU_GMt3k+{JZj6UNZ@1hBeCSM3zob}f07b>~D`#4+E03s^(Im|~sxXqnL zkaAlWm{&FPBDu5MvNU%G|kf+{OvP`)X*9 zNwjfr1TI%Uxu=0H5Mw1bo3<%wF&b@AV$q`-dNtbw3NI;w zb$LVav>@>^0<95k6Ys@X>{QXu-t3D;5BBsK<5ZS~c0gROB}1&4)kN;3h=_a$ZmJlF zaYD7@-u8YrT1%9+UDEpzgD8@$-()n~=G7Pr(i81u6rCyG_%2J?cqj2VvO-|1cok8@ zGa-&_nyzzeOZ-6H2EJEs{NTsTj9seBh7WSu)y?LqTsaM!9GKD37$>$Zgz9GiJmaR; z9|J0s=UyQzFF6U?TAMt;+dFjZDS3b4^_55)l}j-k8*(?~JkxGUaH|h-?w=I=%x%mO z@1Y$*ncUD5#o|{iB9EQFU%3gj#X=Pwwq8_l1i9Py1Zyt4U8T$!yoI^6Bwu*IIjYL0 zKYz(ZCHepbyJDL4crC825yhz~FPSZX97s;#(PD^72Q3jiK;8}~VDzL&W+hk96Mp>+ z8UebSGcXzeq8tD((^JP>kTBpo%r%eFvAv^dD0@3dhEugB?=ws%pd`&mrGR<1s_i+c z8Rh0nB%u!O&$xVP+p5E^sG-i@y$xn#-aiH{Gx|EneErd+iIBccE$CMYzf=Q@vy3PP zU&70^Sh8->(JUSwR4DaTht!6VF$_;y(D(9|*RoXIamKQiq;J#QwbJh8OUP3!L*s7x#Kl&!_22VJiwl8`}s0 zm`(b^s84)JZXCImQ&w9aHMUS&36Y(7(v2^@Hg0>XQ_oLPVh2p|O=eAafYLXJ{A~eo zB$Sjm6}ixfC%V_~tkWsuo#3%08#!&!*oy^RDj*D}i-6Cgf44~4b~S+-Sj=S8A_ z7MCS&`HaMgL_c6FfE(o)EDn+T`NYZTzJ_YBpAj!jNT`z73N8)jUS?^^wVrOsEZMvL z@#AVj0(3A1kbMLiB!XWjUFlLRCeXU+0K_?0U)Z@KRf%O+T#eOYe^wUs{~KBYAUIGA zxn&bh(_vx_SvGLeixPASde-mOFvHsB6IKq+m2cx4C6|DF9%CUb2q*<2YhT4rSajku z2bKj+6IRK!b9rW>)#e7LQ4V_k#mV&!PeSC08Hc1jae%Vz!+i}Q88z<-Dg4^)Xl2)! z4Sb|GDc_~_$fb^6wE`>;#?Qah0?VUwWo#FJu#vbFYbfbogF84qt==w=ut}Ksb&zRP z&;ATkBnz*@CaK~@gZ0?4!xW_@0J@3Wa?yomdI(dxyphST83}n!e3Wg|PMw*2F1h85}NM2%jm+3%)E{m~tKa&e8KS6;t zYaHUj;!yiq;`d8=D||67jkx@zS}tFUrt~=HQh3gce;HT(UTp~7XfH%I>{3Dqs?7ms zWBgiF+!aOcPoB(5Sf*Tgp0;pZjU~lm?zp-Mm1e?T>S_SvZ==nBU(DhL)5eeK% zvxJK}gldu#xEqv2p{k5eo%8x6!9O$RV;1&F_BGkbU*eE)6S~(Wei|&7JbQWI>mt*T z1D`@YVQB0!q$I}l-ykpR3C9#{Q$KECnrd_iY7nUST+T;~5kcX8G1}hkWHLNb)qWJH z=p<4SVbQR6{4baag;p2304kz+1t;I?>Y+*ER=y8$s!Rk@6xpua7*1m3&|P9#0Ghn~ z#DahaZZFGWU69yLgJ%nSFk~#eyYN6=d0TEDTr-<9!7s6%*#QtG(5NPXQ`WeLEXG4< zwT%>~(`!s9vp%*&l-wrF8ZT^^Tl~z_l{RaMXR5#FCG3u@RfUZF8tx&6uC51k`LnI) z!MJr#9Zty`ag$1LIPpCtli(6~SXPt+ens8%+S;@_A9G>Frwj5XL-#R`tRj7hFWl~B zQ-#rPLv2ob@RW=>aDuITnzN|k00Kb$zj0NVtMki(u2i#!br)t{7*Cw0%zD%8Fo!wX}^4#NvpN|xm@CHK{UAf2IP0KfQvl6QZGxX1i-( z(+VAtcWq_bgGG^~-gow&oxUd2Cpic+27^AWC!UM@b$3o6ye54FQ6NIo-z$`x!bYUS zP>ez3?$1{#S z0&r9Cj#IAYj*PhWMqBh&$k&=xoF{jx4ZjO5h=YkP_Q@`;Z26KVu9$MUOXdt2TkRO- z4SS`yuL$=O44_?2pL`KcO7$dQJ3m9l9X`Iy z(q0V|Gsp8*OP3e>BL`i=nhY(j{@3DCrl1_3IVxDZJiX}h99ve5fgD3)>$DWtUfn$p z-GdRT6s+axG{`W*F-^$tU}j58BICBCXvWemho^&_EAB+SpXjPHJ}jb1JK+!q?bD=e z-_*5vfV8Z6neI9G>xiX2_l&6wv5)*I)teEDG4Fh3B4R9-iDnuWM^bow>p<))=x26& z$P@;O`&GqAPN0-hXl~@p9vuvXe<&o1Xn@Xi1ti~fEzfIZKjXC%wuOFPsDm|hDN?F@ z9#6|B0?Gut4BAZHdt%Ff@^ck*Y;+;-y+g6s0zCr(x6x^u4NLqmD`8JG^WGeuGq+3;6gJ zX>tUgaQFya+B{p2o5dP+H43y7b=V*iO>cl4MKepYuh&JssB;sx-Lr*CCKet5Tb9pW_*vhP;83)5B6ROl#6h|} z#yIwKWzi#$y7^a>R#k78xZ$G$;Ca5u6DW7wMH@A-QOSftLJqTFzDYeTK zMZOIg$gB-2!PdLBu9e}O?j0qD3US!D({%U+lr)CK5kygnF391MGksz0B~CR*&qDo0 zd<>`TS78x&c6W} z-~zF;eXR4K$^RlOEckCZZlhA6sj4U$r3X-CM8NYd%h)=?{l08AD3D5w@r)FK-A(+j z!=Vjzw&(N~O71b|V~(kYFnP+H+;-Wh0s0riWuGTD{3LmGT2-BGL1H^esnuma6B<0U zd=Y-ay6<=q!&BuTpvxjFjvq$Ra@D_nqS5QGlblORp#>bm2qMS!Z}4W@>ops6Zeqqa zwwou_?j zTsp!ZV|z+{Y~{y0rUJ|Q`i96=OPZRf=KssJWO!@z9H()o{z<7BUxD1?-+0Vpxac8 z6%*i1BT*u;yiDDvHAigbp}<-@7Vzr7-vhc;-%G>vnNN9znjc*XBpcjtPR4yeSQ}P| zbyC<>2aK)^POi2mMFiWbWm$-|G-nNlV(ja=U=ig?XktNlI2Mc!3clS$$+0cuQbpLGS3}%>qBYf#w6@uzC1> zgge|h0ofk9!zq9!-hMKof$_-_ld5PdZiTU=zn=4}dZ19Cvj^n}Cd|Atu((PfTlIo? z*sDM!^TsHA_}$d%X94_wr?I{v`7dt{Q zw^1qF3|}*OE7qVde@~74DILbZ)lueBK0qUHGd7Ev%pJ`4_D$)bnv%jvKSQ3gvC1H~ zfj4by_c0d*cJVv9F|0hiey^bPqM}$QPt5#R(H_|jE3 zy{(OO-qE?d7Nt43o|f`xgoErB26+Lu#Av(shiOOw!Uzq-0WJUnWS&SB?)?zs62v8> zrJlKdXe0$*!{=d${jnPdVx}BcD|SGz94>_)EssBZaWNHe-1?1)?gFZ3$odFv$3PJZ zJsLGgyK{I+sD_92pVOsQ#qIDe`2cc2r;b+}B+)l+4z!9gA)rymmgkMvT=CWZxNK5- zWH#h&S_I9G7=Ke9aIs|#gMeFnS*x&V0kUM2*FFPF`~6X-pTb1cC!J4VWfE$wehwuRKP z?W4!s-W5q-5~do;FKGmt63;2r2|!+b4BXXO_@m&9F5fm~vybJC zM%oxiB2OQpz?@VU)Uyqz-K>`ZhkC^7juW7v86>>v+~!P6YH$`YLo?I%iR1Jm^caMn z$8f$y?2+KS#Ye>V#<*gZ&AX6#73v!^TM^;g^gmPC>rAI&Xp2V6^jpcTGdrn=MMSia z(#xqv_*jJUcy1Y3gxNtNiN5Kb1HPeyroxnz++EtEV4_AQXcb-KHHG4*CZotwkciS=OAnRw>f)zNJs2-0_M4~Ro?aqz&!wUsX7h5ll?#}n#T;jf+)tB3cy zKOp$1gMXtS<(?NGs`gs|wKrdRz>~M)y*G6-Nt8rW#%02UFUV@-54 zCV@wmFk1Ng>ZC5dxB?lcmA+}tfP-sJ-;>txUswoMyVO!lhZk0N0%ax%2b_9Q(9~df zK-LVGO$IYC5O(TmK=zu2OG5Qb+jGCrI6CTpi;_$2Y}sHFC;pbB-KI!Aa%I@s$GR6- zh(ya{C1hDhyBPaoSp@Yb@eLNsZro~_gdKKK z!7djeGP5@zQOu8SBAL7*VL&PT^8LG!`jP3`jk{8I_r(-=yI;!usC_@<;w_V&d}idw z*DsNQE6uWzRnk~rwd$;sMgi&%=~@=|d66kX>~ub(J7mjgE2K+Uv`Kl&r$$f20My$4 zS(EC+-&}>bpACKCwnQHBf6NVD$YC6ytX~EBckhccIj=>{;GxTY zTNe}O$dlbviWQ`ON69g$-e-xE^-!Nb85}flw^+kvlgBeA@zYYdZ(YZYFO{V&V)OJx zTyAks)YPazu(1I(t7r;`tv1TONmw1%HSk7)vy6m1e-<7W&$#(2o=CUO9${U2ejS7I zaAi@Df1#4uHA#z$(VS{})nL1Yconf-a!aSb>XfxxVo+h5gz^pz` zuCxHj9*5>_Pb`Zq@K*Z`4N=c{FFxt4iSk>>#1mIKC}JRx*%w?Lhxj6gCRtv_%wLJM zS#!naC(?1bLy9WdVfj)|I*jmz76aQ!AVKk}-pLEwURFzrZ2vQaUD@4aB#*l@{Oi%t0l10|7+jc4z~f6%q(7Ax`gDp z_%^)fVwHY^RY@lmrcayjB_o&@$rrH~!pV z$4V=~4LAG4P?@k0o1Ms{H6&lDzJSwCON%)K4>qbcFp=rs;^cOT@%ul1jK<6ofEjO) zw2M0Ff7M3t+?+`UHcsr#S(gY$JDG+tJzPVK+LJS6`Y*Bdrg;8nCH0sPE@eiZRetEV z9GoSnF!oQol3v0%dX>>@e~M@}`+rA9TFlnEDstyW`87N7z*dq5N_YRu?zA-N4XIHu zRoAnDl}LN0#(OhA9K;4E6Sb}%!nlhBb+QRae=U7Ssq4|K*UY`7hTY(h1oHQ0>u*wu zz?Gr}XzJvbh_Z^q)Lzuqt_@QP;ls~7bs;;8re`rzUj41SJp$iEz+p^AZ0ebTBbF+l zs}mcn!LN-lhlt$@bOn_eKwW9WZ8fVZAKKkxy$N}Yc}(2LlG z#vaL)g1s2XOny;rvWz0$D%&6Q`ovk@6(t}Qj0%d+M>$?huw`ZNjS<_VY37R^LFg$I z5?$-5U_Q@9u&Txdw%U6340Y{3+t(7Q2JpxZI%Z^eHhQ_6j87rv9wld4*OrIl4#R!uF=;<{s#BS7Dc(h*2yzS-}#f8%`xRf~P?a3bAf zc-cHa=F(4;8YeyFkl|c?B*wXw`n9e6} z#68}>u)<{l>aj^+qng{a7@?Y9v(TujruDeQEM>)Em_Oem2Ou|3o3@88t{#=@%-Gth zmk{f_=9b3}e&sV`@J?c}i=dL%D+cEdN?K(2;eBBW;EvY8%5x!BPX_KIB*6Fynqk1% z2x&3WUTHD+iA8^5eo=P+HmGDTz+FU^Me``Kl__Aej`>ikQY8tyr;EHvt)nTr2Fy5q z?=E<93;-0sFU_jOzqA@hl(7{+dr1wsozp@bQG{Lp=j_w?}S8G z9a*YB{IOO|tt|))GIB$=vS{eFzBHovUlt|zGLKxby?=rTG37Ide2nNalrzsrE()w@7Vq1CC1vZ1~4TTJ{TR?tXe*Hgzq_pcIGYKKKncPzfTsP8HP6|_| zbAxaMEth7DT+YUd9mW)3l8Dv(pSE#_&8ol#D`@b!X+CD$JruMLIqQjBv7#MbGIKyupc9G>j#4)u6i6@n4F5M9M6JBK?o>;lQk^87rD_ZJ!p* zjB|K}Nk6NwbWxVmFaQq1&FHcZpstBlEmU5{9d9!rX*|MKqoz*HQa>z^`WH7*ib}H# z@I}2ZeyMGiEbyR`6g~3}i*&_sgn6AMj$E%e-wjYe#s{$! z7K&}$8TtKfJ^s!8lpXOSq6aQOo`aVRXNqY+l{ZAd{XD1vtWuJYg>EUJLl#D>w&C)iMUn%&tFzD}q*EnvL3OCLJ2OHw{(Ou>@Ihc$nEXaR#+w=<7l&no{NmMPy;hVbO$`fRDTy2xjKEpHw$?&Y&wi z`gYYMpfo1ZNHcDid$5kv8%(awx#MPZm)oZ4u&QpM>@bELS>COhA*yCZrwKRwKw<)6 zP4KEVs>nyz;!(>)WJTQZB9-YT?s)RR#uQ~^%27ZH>BH~W(u?Aj)0e|eIYR5NtotuN48Z(sG3*Qkt>W!_EE9}Nw1Nogr_ zrAI*!M0&#+Ee~;Obm`QX9Kzt_zEes=?0D&MMNFfkrbxB{!M?O!4N)_q-XZvFf;p%& zsS1aXRDoC)TH{q&VR=9ueO4Iy9&DX6*-zm<-L}2@ z)3gEbu2DKv9*}= z{gk=N5T=m3BM62D*$E4M-|k`bO8cjLm%Fx)gC$oiuAG%T@6dxs3jB3%Nt%UB0zEa- zZ60UBq z$RmV&h5T!#7E}!8xLQtZGcK5MTz0fe_6VjV zN?JzVJ?~IoNyOEu^*dd1{80`gHmn)LP`0my{s z=KPS#_V@~7kK95Hh~q6DpYIwXCUOmU)=L@xy@FtlTQs{j(N_ae*YrN8HebMfZgm@&3R(UTJ8buOx6_h1|Jbz&2;mLo_LvR6Ec+o)eg- z2+=3M80{y>{wPmh1SS8MOnLEz;Tr2=-0D2tpyx%fLlH|DjIcHcn`bmYpfMBk5TJoHyWQpX2vbEv1^d0ol;~8z3es$Xhn5jeHip z4^WH*WWzgU<6LUDqM$hb4j+@mh4lgMiRU>1A{|e7N&jklcqaMpJ-O7?Ek;LE??Udta)H~b>kqAKi*WrO>k;$u2 zHyozwX#~|FHpQyDaApZ@Q)oNR1fy7K*smg00}&|~sVb*gZMFdWOTY$t9qrIVu4#ME z7jeORWHgg|6jU++%0hB#4z>E?&(uD7`w0A*$18_~6w60|;^sC3udwX+>D^vb^5C5!ZsR*0+0g)-SOIH;qI>#EN zOQ?&a6CvmBjXGX>Jd{~%9Cl*s&jv8N)VhQ=9CojZU0IQJ2QDG*R@g+-bj8&sy!}1P z573^rmsO9Q57m8VwIuXsDExBuOxP-Ha!WIDQ{=MWqCi8{hijXpYp7C;dt?krHx&8S z6rXKIjzQt)whh&bpvuHt21)AA#s@jPQUOm&n7$O&Ws9qy{A^t!4q(b|5!JoU>ENy- zGc*^p`n>h!1j(we>o(A5?;~k;67tk%S|10XCN;s-y7Yb3f~1{gDd-Hp9K+@_+s^dU z&G1seHaOB+V|PcS0S6A=RqlfcUFp_&3(aoScVX)D$*yIg57*sG(}hQK-}L|+(lPQf z^}e7Ecins@f|l{6DRAi!3aosQieJL;r{Wq z-5w8vilnUTHH5K;Pl}%Rm-Om2mN(GUR9b!1kl|?sfJNnRBI=bQs{5v1Ul{^zE%EDy zS&ql1uP5j>(|403$(y@5jy{O+j*duYo2rX7A(HJvnvuR_027b=F;Hd#j-0>AU#78S zrR8?m@dB8REbC`_cX=eh$4UUvGOMAosrj7O%$KOe@O6@`R||q_07oChDAZt1WZupY z9(=1#$JD~ zNHu5(z;Z$v?D<0#Uv{k_lHMQj$Vs&KWqJ_R;|_lak@+75A`=&o*)EX-91}0AnpJ!^ zp=;#J0Q4Ihwr;~6B#{P^LdO0R(&3ThG$}Z=(9qNPp$GiHL4SktjqNA_MYkrDmP-1$ zj^*y<+j>+v6LQHYBoW8iHG0#gyo#FyHc%ayHh&qu4H{cF9;wUD^405Srca45>r)3^ zvE7Gb#Knbp%-+Wscuah_*-r}t)``g+xPEO**2yb7rQGZ`aD_@zxNoTf(dmC5VATdR zx~v1|>B8=kj&vvrS&QPfA~A~jFYtr&%n`3aP(ZUUW%WDG5Vl%kae-b1SI);^+N;z^X^qX0F zeNcGn$r%RUz#r@5f@^8G);s__k`yY$8WHwjYsJV7{RBVf`Mf5KJpT7`Y)PgGJE$Da z!ja^zZ%BddNaO~H!GSo&Qw)8rxrE#&%kDu|#_wgK#1*yC0uSk<)N)Fd6T<*>rw%^f z@xzq0R151JuyzsRHLSTr-)xSyx8*ZF>8Vo=ZBT61 z=2;!6uvquU``mE0dmcu`dedL?K|v|yI9BaYRj?$$p@b!-&IFVXd$H&Aw4eXXScI5( zy5||E@lnx$LqwoU$_1=!@Q95t0S#1kpAWib<80Av(8A-@#e75zM7~vVV;l(af+=~M zGDwhRjuaQIDB8wQ3R}^-cIdBm{g|}vh+f-@g!G-gjAtxWh_iT^gq?|?f;(2ArIjSq zM|lJ4v3ey^gW4ak+v%n&Rn{}n`0vIDb#`m0#0Ov%H$7RP1(u22w$RD>X5VkcZW zKml2e;(r$G$I6qQgJUxdW&B1NCJlo7_;hw_CR;6qWOqf4?y9LOZceo4@gNNrBY5FD z;Es&4FPjcrXedm)!DufelA~e_%2%_ZLx%TF`t~as=+dn^MVS+kNfl*|%dsQe&uC07IGI=6zNrkAcq1b@58qRr!?Nq1Ehyj^ZZ7zl!sfX+7PxOF{y4b zhT13c7$Vfig&GQ#PTokRzRe^R{GuJ~&Dz=V&sUZuN$hpgk%X4$8?F4=-Dk~jj-NGI2a{dkD#94 z$G9+(sm;N=Zr9Er7F0U#4Pr<&vh8#A#S6EX52?$ZnE#n`Tbr!Fi}53AQP{Bw&ktfn zRNlPva_{ZaqeQmwxVvW}$lNKQ#+~C$f6&=}Uh7Qy!TAGiorDd)!>$YK`I0yh=hbk^ zV3_;LfWmZ2<}91OgS2tA)l2c4uNXp|{YM4G|Ul2d~AnuRJvQBM!PU|!+b0uwrgHN!9 z<~u4h`(W$O6;8G?hJXBHr^aWl4~;Ser_;|xCJSzA^r7-3c}_~r<2ZmA4hZYhwT#ZR zE?R4)rSNeC-{!iy5ksMQ4;o}Xg2&Kb`d$Mu=MWQxT`4I)g-ar2LEO7axOEN+H2cr6o+*)+!KQl4QqN7l3YXr zQU;nlv~&$!gZj~6n&+Q^NOXSOH6WrZk$LJomm)S*p97^bc3K4IJ#RjB)=5Pcx((O8 zFZ4Z!E&KmQ*e=B+xwYI208EcG>rI-+u7 z{ThuInXu$J7kvruA7QI3s9vd_!AleI;UEfWp*%EE zquR(w0Zy6?L2Tm68)v8oQ&sw3PepO{3g101$~z3M=Fq8_Vl5auedRtPC)IbY$;c?2 z&yM9N?@@JUu`9~9oVHnz(IS%oW)lfaB6FZnme|g_gPly7lc-Ve=8ruTw-?*ieWD^t zHfH<8Y}0Kwcd3;rfScd?rqV}kYSBf7&3d4XIS2tbg+_GRq)|dL9va4&Z8MesjFekFi{|!+?e{ z^Qd{pR?2dL51=wb(I|so{b`J0{#A9O@aE9J(;jedSLam-nTW__mqVNaCn#nOT6%*k=!OkMHg&dwG z3~{I4Cg#Pt5Sm4Yc|t7^K3Nlwj3IpdbBYl*Ws95VwG^EO$Od*oQ!V{ z<2}GT@+@G+VcMoAHHLKx2fcrKH-vgi%lygc_O%W$VjN1&U_OfwGisNaW(22Qx&IN9 z;4FKb!{Mg%bbdB&z}Dx4;t^Og^u{%xyp>s5P;k=_uXq*>vgv#wDTWBgc?Cc2RE|Sz zqz-$7G3W;3iCgK0(;f-?DUzaSc@_i}3&%Ax(Qdi0J3q8`>8a51W{!8Ac84}o<-O`@ zT~k7Dw1?^K3UH%+(gF;Q~Ry(8ERTTe}97$za#DeaQ z3&?~5Cleika8}nJZtq($$CkCYmq-NnjCPWIL7zX>aUFmwTQ}v)r@R+Dv~$vhGy$dG zS&pS=WxC``J-q;*uD4>;)Y_M<2acabRXw-{F9Uqdn?43P*82EqJtV$+vfz zVrhu5-F16e#>51bmBBqvsYkJGo&Jj$pxO54nKkQHERi2>bmPt}ENjG~noyIW(-OO- z;r0eRG4|ErG%4>wY zYs$n5W}HQg4S|!9uZkEVRi$p%K_>z=aL!Ie*ZnzRLxVH7;Zjs;*1-KzJNBY>$#=5C(u3uWG3hKh-FcybM59kW;_G3b{ZVeG* zv}&e|>N_G1oD{pcVw)P%yU7bUC&AWxjoWM<9ZK`+@W~ zRo=G1&su#XYxfKk^L0Vhj_aB6X7<>9YK#KUlc*<_d?s2hPNqY|cfT)V!|IPLj5?hs zQ22uzs+W?ZRL)r#k4 za5r6c=YBT`1EWPD`)3-8tqsIG@>g}I?+l+9_~M3O*yeSAOBSGo1t^Ud)N$!3ZjW?? z7W@;ke$s`|SpvddQ`T6Yc6mz7F7dYeU0)6X-G~v?=+`9zeN6-WB3AIH*s=o?uY4vc zCjm&>3trTTqHpUrge{4W(faac6@@VKVtja0^Mu6S9B4ruiFTX^W0~g^8P9lY?Rug$ zxn`V5vo*BQUQ3x};42Rgswu7BCy(WYl^*_eN5O=e z>YH^6W;W4A-E1ve^WlMAv!GE!69T77veXZZc1T9!bUmF1Q5WQ+{l{TBPf{lXxfBcC zWe4~Eq+sxa`0@T^b2~*0=f4pqMSc!VuGV4)#e7b`O0$!$#=IeDvek={pE|wnq@>d5 zGxpf86c6dO$z!q5)=_AWsN2z@@lhI6*oYAAo3cLnUt?RGRRg?%$)G@v~elKYlQ| z^C*k2tY?cc_O`?Jk2Lco1b~N#G)s+zp5c}8z}q3!fMQK-^g!_NW%DT32_|DkS)Uqk zmj|Qq2G;gD(|RJ_y@80MD^owtaopkVv2bBIKyQ8t`LN9!kDE`fM*KdhCB$9bZrO~1zK|MS<9r0AG)|h*yR7R`Anehr-yx}-6Dxh@3x#RfDtl7$_iMAK z&Y6}Ddu>T~zOGUc6XgC2f3uCh0VP_%rZ#kSJ2!Tp#y{!*;kKb2FA<(#9Q&TBvAP!| zFZhE;as>8RbDxe{725wmCr-4fW7f!&7c#j?Ow5N9G+3z?8ks#h2%k^qJRvywLk^xZ zdDCS=9=(q0ILVfa#OhN#1up>&CO5}A0*yky(r*3uWNDKF@Pbu_SLL?{eYC{TEr!{Z zR_pnA|MmIy;f?*NK!8FEXb{v%M6Dn445;u*5MM{p@h83=?cpI99|3ldPaEbqACiV$ zM%R}wD2}ovb=WYp3Id5pM)XpJl%bD;;&2bMrJ>apb~|xBb*$)!!y56FSt?~_rl2%n zIiJ4dj+UNMAaBo2B0xfW+AkI~h|&pN!f(Iz@;-yTZdX=op@Tet&!fb?VknJV*-fM@ zbuXFT3T@dn)?L$%^vF~aPda05a5KkaL&v#@7qE(81>JCZu@EUzq)Ftw65Oe}va>IQ7dHXYgqdN)KyMR#M+>%@?Z9X?KR_hkxsw_Ta1Jg!9>Y~!z1=Vk3;UDu=QHK( z_N~;u!8kQtb-39B6)i@_kcuZk)djLiEYIXprz7S&c65r4|DdbQ*_Yq5JyOzJ|L?$` z-8koo5*YQM{B16H+;3n6HRay+kzPBP@|Q14QBweoMQoqW5Lm=UnDXYuzLjcedU*&0 znY*j?S~LU&H!LLP{;mVqW6FijVS!)JznTJ_wh)o}rOlkE?aS?QTYS`4(q#5Fz4p>k z4A4zihk!}&>_TzXCO`?M;E)MF=x|xEl&XeN%Oagrm^Fu6gvCqRX>3!H>JD=BASlBm zm_yzUpE$nyF5W6~sK@A5bCa)3g}1tMG@gC3&Z6hDoYn$Xb)#y@d2Yf)uFAQ8Dza0W zuMK!kQC>;d;__ga*SBy?0bhkk4VoQMo;Y#rd+@65FI(sGw`k&k4b>ll?9Xmju(Ng4 z*zm_&0D$d-G15&X+n4NpxOpZVZ$!Ol$SQ<+Rf8W#p?NA+a-buN%4oUI$aFWMl=7^g zxwQvsEJ-1GMK77&BYrp7;XnE$A~N4H_pORy;`?!8d#Vid`ES}R5%i3(i=_MwjG8Bv zeMAfxzjnC2fE`bG($GWp-=G{MZNuXC6V9utL7TBMaTwq6I?`lYwEtsFj(dBXGtSr@ zLZ70s_TM8S+oh8H?>fKu_JML9SRW#zaEv)4#zPZ{0l$Ca9$a_})~~VS zNyNL(WqA9~h?!H}k6|vEi` zFYF8{Yi{-(b3pqCjx*T~z0aDD`HfUj2aUPO&5=-MG-&x3u+hk9OB?d&mV*RX?LqLk zH=MVD6Il4ac zSAn4w@a@BdkDg8=KmmWU3gr;B(GpmByNj%17Y5e=7-T$PtF-a>v7GwvOg7c*DB zhEqPz4}ygwXW-jWp-(nVp}{n(n$&O!-F1x;YCW?hw0v6q^QWL~*w9Ozi_>KsW5U)*XM$Ch@EXli6P(kZuo;DkWIkz{fVmJ}|c} zMWJu|Z^_shjd_SY@88^Lg_?>P1`on!`E4sM5sC-ZAOWeaTvfqmA?28u_SJq1X~WY+ zZV_oYfUUcBQcuy?oqRa3>4dQHjhX&>r05tOs~i_ALG^F9A;-lGVa+C{|AI0eOXxK{zAu4@cu2&4rS&cCNQMa}Nt zYQsm?Rk_$&adYAIFS}(VEN|l|KiH9%y}CwNixso2G>88MD|8JuY2~T!1%ivM(=+{Z zO#VWWJ~Xatn|s7!Ans5tYvf@&$s#`uR94OeoM3_y;C4#glYR1C>$iGw{d8;P()+8S zvnGN_x3TIDW_wW&#By!SjYHk#<+sMm5hw4v$6LetpA*o&{2SslA1>tO?1 zl%8ck2}KBTfpMFm26bp$nLn3}8v8sjTsoH~Vm7rhRhRPKLGST%Us0y|3lJjM1Dz&`kfq2s}c6n1=y#{D&Xlo5`GiFlB)vZKsxm z+_BC(Q*^xKp4 z3y%;)Z*C}{9rUG@Y-MTb)&X9cg2}3~a-JxqD_M5v?^#tBIJleCW+!LaB3~ zq00p0E^!6|eMHHFS~r~F+NGaF&ws!8pvm{jJ{zHMeDxHhYlPnE{tQSP7lxmnrIvez zaav9)5{z-*Qs>Y8(C4bfxDf{*_#~|?kMcq5JQ#-!%X&YPwY#e8*nrUqJy@Hj%|!{? zBn1RP>Rh3EH%9hnQsqgtmD@MuwQmtBFRwpgtYmh(m_Tj&*H*6%jK5hmi?`fq6E!CU z0Z*@fP(Vi5%w+9pTmJ^IiLot_H4_o)T%EoD*_4`Moz1z(6KEdbZHkn9WpdrDmoRY` zBCepV*J^(`IvPAt;ku5D6X9(~L44z`(F(5tqdM=C+T8F*JyP<0xUYRuRxpd~FeqI2 z!Qv7aamhxx9>M*R4uwBcr_lge$_*J{+)>J?kKtmxC%`zbz2uRp)yIG?0xHw;_j6M* ziS{A=Eu@^2sswmP{IHkPCrCO!HgptP*y-*_!(=Ap_4K-sTm)X$8IR;`+%Rl6BPJ!3 z>Nvh_WiuJtPS{{Jvy8N)eGcql(keM5xFu-yvG&gRbY`cpp3gJ44Umy+FZoRnGgbil zY;GGZRzW|fk8`i*u&a|TumkjHKb?*Cqa%%Q7nRNCHO#miO=3InLn9V5KtbH426Ym+ z0c1i66^*edpIkoS>A31oLlggRUp9?0ls{%h^H+7aCFH|K-gZ_h02vMMvLJBf*V1SE=f z0!7L?ET}x8z4XOz`d!@G3uJoBChkNbAFJqG{Qq}2AY>G&w^`qb)b(UaZ zi1aOseKdIkVd9CvJS|n>*g;81+<|VAR|`6Y(~H48sCXpeFN|MhDTGyuJz~1!jV^W& z{vhWk-Bh|x_Z)05tpKZ&>7$MdmWc4yhP5a?Z5+:@dP<`|$Z1+iEW_BV!4v|+z` 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�hHS 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∈`JhRq9MS1 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509164002-Config.rsc b/MikroMaster/20260509/20260509164002-Config.rsc new file mode 100644 index 0000000..e35839b --- /dev/null +++ b/MikroMaster/20260509/20260509164002-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 16:40:04 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509164002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509164002-Diff-Config.rsc new file mode 100644 index 0000000..0a90e66 --- /dev/null +++ b/MikroMaster/history/20260509/20260509164002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4294a4294 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297d4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0