From 7d4d0ecdb3591c5254eca4c90ba5bb7f07fa3417 Mon Sep 17 00:00:00 2001 From: shumadrid <195762734+shumadrid@users.noreply.github.com> Date: Fri, 11 Apr 2025 00:00:21 +0200 Subject: [PATCH] docs: update README --- .../vault-git-history-comparison-modal.png | Bin 0 -> 63062 bytes README.md | 126 ++++++++++++------ package.json | 4 +- src/commands.ts | 4 +- 4 files changed, 89 insertions(+), 45 deletions(-) create mode 100644 .github/vault-git-history-comparison-modal.png diff --git a/.github/vault-git-history-comparison-modal.png b/.github/vault-git-history-comparison-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..21ffc0ec1203dcd5109cc261a7df771d88b2afb1 GIT binary patch literal 63062 zcmd3OWmJ{x_bnjOjdZt2cb9ad)TX;TrIFkq(nxoAgGhHH4boCll9HRcFX!HWob%&+ zzhmqVj?KHDT+e#unsdH}t0+mMA`v1%K|!I)%1FG2f`Xlaf`TzZfCIh>&pLF2f)a(2 zl@L?&fc~8U-^3`H(SF-aLnQ{wLheW-qbB-NA}}c;PR#i`0VZCep4)s!*+He19&7bS z*de~1^tvrZN^%0=pO42nkVrSk<*4h``RMuR&A#XNz09M1B!`eA2t;$%Ven6CIsjk)_ zu|T$_(JEz6Y+X)Dd9Kl9QDsD#k?QI>K6hm6mjtC}IIW|rik+|u|M|(rh0V7Effx*k zac7)sRn12BR#u;R4ESO89ISCg&xUqQZf*8lsHX0>MUM+BY*y%JKKL>)QzDGz+YG|U z){49(lw5p=J+y`}&wN;2Ve`Qtkd0nF?hK`HDd!}`aq6=(>MW)rkL>N%cAwNyN$ZvT zLQNDK{Vz}MQj?GMb}tT|kaBmR!-S9@!>OPDM56YbBwu&A&7`@#!OH;^doh#Yv>^tQo3e=&G6Nc+V^mux`6_ z(C3Mh#oticLKZC@<4?eZYa?!x!>x@oH92pZVe(v)0nHdO)f!3X zt_&pN^u>{h-3J;4j!n<3IxuyW#7;|AXTnnYEZnJK4L1Xe=Xy4TnZ=4x;`lr*3hsVu z$N4&IR>KNx{``||6y!z~JT(`zi2-;sp*1RAs^?LC&qZ7(te3dqkIy-9+A4L)b7^wN zpnr)sB$yt`a@726ZpM?c;xM$H=Np5I?93*TMNP;yr?8ty1yBFW#w@_XX{iz6i`m6c zSZETFaXlBdtO1jXhANRo{c~+U81rY_g42bcTV`PAK7TyVVl(M?#Z`%}tZWELHM|T9 z$zyxAP2g#&0I|tHYx-hn2NkHxnkYW&=Uc_+hY89?oK;dGg0&RaRL!7x{;^`rfMz0{ zSt*q=fnvg0db)pEWT}?{&4l{18+ov9Aslb43px0#5t=e0Q*+&={&yzuQZQ7(eRs@; zD{TSu1#`lqQOU02I50I^O=IL^|G9txcd)}zS4_Q;rn>O&Ds}?37lt{oRvhoy3YjMX%< z9g+>1NY;BuDrVcIHlRGVaW^L9qLF8Q5gH&$T4BT)X1_5J-Fm5@qDl+S*=QW@u^h5s zfD?Z9U`!amSo!9X<*HU8#LVmOR2>9rH$!>9tkXP2@qX~?n>_u`L=Sx98ZD~bvD*MO z+m?RMw51}m#@kd= zRs1r_+JiE5KCPUkz%j--G^47V@tH(`JH_}DeKTH(IQM@pC-6-G5~9!bI(X>zxFf6e z_NZk@;J7uu_2yUF5RpS`Z0pskH%|XlNA^U1Gt;Z66qoOOBBlHhJ=BGYeA@{_<#pdv zM+N_kipi9ve(B+Oz5{*?QIPlc7tOdNeJ}c(pF!yRG5Jx`6HG=G&SG|;Ue5AK^DN&> z)5ZmJn^&Zs-Uk(51HB@wN61Q<{oS8WR;&oH$yNhoi}3!V-D&pCdr}~`wv%q;p+Dmy zBCj-TRxoDYV9$g~%H(ZOnr>Gsc`#n*2?a&20qS{0I4I+4Ih zDGObwon0%W4_I$bt;~`Uxyh zUS|T`vc9ZGdRMw;D=^ga$_!iNvoWED74G!#9K!QCpY=2BgxrLJBR;iJGACoR%EH+j znqpLb&Z%)S^N3mn@6$fK9xp31F$n*^OhN;uoGsctP+VS2HMX67(382$2?uv(SV|4A zNlxU?#|Cr4HwQLVZ5m0`{3OqBw~7FaC0(tWxT=^=m#j^RUZ4wY*g4*qIE7e+4+wIoahRXy*$%P5;P z`~CSeozK{`P2p@!eLC%Pvk7R%5(TCqrXyw&8_|GALR4?JD!7F;a|WlODdPkw%JkYd zU2bxsC}CGEw`tB`ey$B@>|!ctt2dU6mQ2nyaCs&{jbriP#z5^%(R~!!48L}X0PoF6 zp17~8US;29KP)~!o$N%|3AG6g$0_ZEiF(|;&7gX_ByeJ&c1y$o8fC^qjmZFQ-59ry zOyj&_nfD%_@3ZUbMoVt@vf||!jk}d1tuW8)+lsRZH5D7TNpe#`hI^kWoU31H4z$PZ zw@2irJyy>oY>J@iPg0mBa`D6%elI94^lPNq-!3c}7XP(bDF{mu69Z{cjr-_z0 z4&t#vus-eT8dhqbQQ}!~?b>|GhQ~0s?9Zk)XlzUQzkb|^hY|n|&E|&nMAWjRMNtws ztY5$LK5pY-)N&Jke%{%~u=x!#-m-MXDH`#YJO~|MlE{nq2FR&fZ3(%eHA8f{iJw1^ z09ZRghndpOZ@b$Zbv(++Q)E*x)-G#(O7#gFU@|}6^nyLzf2jk=5M*p(FQ>rN=YqpI zDQ63E3PJm?RPUI|-fU&Yy9YlTC$y}=e+_kLn6g<>;E?v9xtWv*Nz5)8DZdh@Z}0h~ z2~a{ri3sI530$mxB~gSkHUB)4?j*;+hhwt%`LaQ*__b2r-+{${WADxr417y5JN#E; z>m_pE!=HOfv9L<^WMLT${B?6FG zg?mFM;=e3n94x8--Rah<_c4hRSMDNhnl1YVsE*8v4b{J@9b)Y~tFFn_(mNnPZYWmq z!lQlW`5Ug3(h+tc#=)=wzINJ?@= zSl!bzAzR-ShM?Y3L|k*&25>i!?BH?FDGbO1EF#W?ZasjEs3SomR!b#;(@!l(djdZu;@>& zX({r({pfc_IdkfPX#a^b|0;8vCCEqKj~Qzx8R8+#1!_ZsF0G&Ms*N^=rj#DFQ2{%A z)t;&NBJr!qzaX1#*h~N$jM_Zizgulrt0RItK`T_iUU=J*)IJxb0OnI5KX?I)xv;gp_2)^PJ82HW5!RAj?z?M&+F&T(Z~xLkkZ59Z zf2tKcv7@N-)yjwHu&G>NNAw=q&I7fz8xHy3Nk3b88^VxaS^nS9FdD0uXKAZ%%w4pc zFb>sMIjDYsI6t2}cj*J%jZ?8yE#4_w5zke;Y%pTd+IbeW8vaDs!kJEBlV|{zOj@L8 zZdye8=k9QH0QL+k(Wni7^1OlOAiv7<-MkjfE>14YX8E=iw-|2i$(7RjkTBnD3ooZa zq&DbAZ(HRHX+Qo$fM8MMg$8t3#G{j#(hEJ0BT z#EJ00;Lhx8P%1_L z+kh$%K`Lc#r@T)8)`r_tHn6AJIDfVP1iqX}{rIv$8!sCB*}C%oqd}M)B$5{m0JPsD zY~zxB%T|QJow4)%#XKEdhU@!B?3s{Pj7>iShoS_Il6_9P;D^@1WSN4OKTPz(3U0-e zl36Jh41-YPq{)0a`L<%j<9OD5>ds{F^js&m7z}RY5T3B6l6}YhWw+BP=d{9*eam6u zsL<8&5Pea4+_Ga2YDmw?%YUx23LdaQ*6*>Vl?3c+XEk(aMwnY{*?Ukps8yAP++-I1 zs%g)sb!bK1~d8x&^*%C+frj^>fu(J-_Hb^V;r9Xk_cQ>}A?0yT%1ttq&`1J=wg6 zZlxuKa=(&IqF{|)#BPc_Y>LE5lX_Agj&&$zv%?@W)lY;~3;#(OS7R=wfMV*nI~#hX zs(>j$UY_Z7XrAuWFO^U?$}Vr>ALCwq8CbAfBz!@C7-~nt%OHl}=bUc?l-Tl_zL#1g z`<4+GOFP0>-!S@tn>0!A`ezVH$WFvRFZXPcfJG#0GT-xeE%oSqo{T2R+DYyT;^MYp z@FUX-9ExXkS@(>5=M&=bz``^7hWn?9(!eSSUCfw%QP+?yb^u9a0))YrU?TWHsM>Mi z+hFnf3q_t4PT`gK`?9Kb{uEv(*0XZ=JD!E$wjlo8Zr6^+`p8=n|LIp4*Cz+v<`c)E^a%2RtXQg{KH z2EJSiUI!KNPMiJeZ@gwAH@e`-(uqGTJ5gv=wOwkj#3cy`g{fs-_tM2_>U$QCEV-!nY;S;MuxiKJo zS%U#*<0GVw&Ugv z{Dp2d$sT{ay9=h1)*;tjWUvdTj|D)Dh$c}U0WSQBG$&;LgcahPLf4$uCkF6HG zUBMR(q|-mK(E3oEE;F&p{*dW)&U<)Ojx@ggLA>^p5L1Amv6`7@e0)Q~Coorq)Q|pgC=JJl=M=y!`OP z2+ReiU!E0=k>svp|IMs+PTPj7J9@kaY^4b#RR2P^B_PSAv6A<(eX$)N`G7(xrF)9F z`H7)Y#_x7%EflWipt2>D1*+e#i8N=EPUJ?``MB-stZp6Sdlc_R*a?w{g6|5Db%Mga zpaoT>*M`oA(`Ei>5^no*Gwv^(@7BCmD4&J2(G4Vj?CZjVe&8J9ZTzC_Z2_`8Q~3c6 zgJ@LU5%$1#a&82EX;)QL9ZiKoPl(YwO)hM>>&G*e$GE5JFC_!_ErGGE*BDbln%j&c zYs5T{e347bVWa%RmH#7;kJ0;i>ycNzSwK)z^#+sO?@A+f+cJEZl*FUy04@MReT-yF zvb~pA+t8Rh10oMjMk93XXW^DXCW_tSXnYc4q3oZRpi!>F-fGICNM`zQs9_`)QGohj#obt$5G>2{m;q6YY2|;9QLVb{TEPz(x(5z zjz63{SNUvhZ_Fd4>JcgE5APi>${UJYjQNpL8ey_yDpw=agvzEneYaWlpdbCxIQW)D z_ZVooXa+QW)>Q6R9b1SDN#{ z4=g4F7;7gCLs!OeZW2Io`i(LA2M*tVmtfbhuo%3Q6 ze?X|3hzvS~@jcn!6w&}_Di!IrK~>>fmGI<7TJWr7%bw`jNa9{>DkTA#g+G|Y9iKuU zlY2Tt1&m3H(P%mp_~Z2c*k7c4BoR%zqh>W{O8BJng%N~$x(fd%M|EGtw_mAegpB6Z zJ|=I7HQuEj^+Kh&Qb?HbbsML?jEBxv4-IF(v)6n|M<(3*da6RJX=QSKt5nk-lcxi=_#^26luMlm|p{QBf*pRtbDzEhoz&)+EtDJtmx;Lnfy8`f0C(B}2L z;XGSBZMa%ma0stzIzz$&@pHN|y8F&#UyPr|&)K|9FwCemKjP`QQFLB$o99yEP#IWc zXe|Er=evM3Xp&VgrbGpF@pI!Mk`TJU9pwKTuj5*B^EC|e{QX%{hi#ZOfNK9Bh(&hQ z5MmoI9<>~k!Yv>Lm#Bj3$ze7)4>fnDb>KD>#)h>&lf9F1q9|k|;l3RB2HXXY@)%x@ z3OCIcb2@aJSy6Sf$LtE%gtoS0edhv<&Ra?%_vhq=Y>Mw-$X|Fx#XsgoxsP!6cpNeg zlSLs=@FKGQmOqgoj?I?B@6B=#b73d=1;pd&j8LJKvDsIEPz#aQVyM)K@~X0`?(IsD zhNV)}k(dyN%46Dc3;SHEs(|+}_qCmCq1kxGsr<*MX3F%4&`5vA>Ot@24svG_zw7l# z`b|)GKa5A2NA>RnakX6Ep;$avgMG%tV%EIT6gY2y9DC_dFMDBg?yGfCqT@?V27bb- zUzYoE#bO|`Ug2rY=?z;@Ea+R`ffE1F>mN$7iVMsmpu!CVN71sOj)F9Xj22WvOeQM2 z_=4mMb^C(!`nne7P)YwNzhdX`JnR^K;AHvj}OQ_F_7S`79CI{iZiwv4X zGk9%EQd!@#xS1Va{8p|0*Ob;98?Ini5uWN@xIVqJ&R^B;)T1r2Qn||u!3~>Sqm?#9Y zP)QP);C)Ujvz&)|6JLSCJIYs&0IXEVs@&o^?Ke(^kz_Q^;QiKQzYnToqLf>v^?Ue} zrA%As#FYCEcg=kLa)Z|_z_7BplDC05%g;hFWaisB_hlLlKPLA9Y41{t2>ArqaAa6hnT7e@E*G$<3-7?4=BK=#Xc{H(RDHbv`uzIi~A zB*|_u&D(3yZqjLy46_N6{>}6draLag%4J8W{c=Hil;^|U}@&i(*PJ9v<;qHle<-Z z>_4kai3q_8?(#q~gAmTq#ZxJo>1okAdG>EeY4Bq_ni9TYN~8=Y|fF|uh1sZNg>S?i7Cp5efEpn-tLGcGEh5hhq0t3hUXFanzp!q z`gs@W;6nwXGFQBv(KH`YzT;YFzxl)UkFvjw2H;e_wu;-9i%{dSkXD(PHDWP0HD(l` zy>R7&t3o*k844bHS zgqb_L`bjA<8A*?kRKGMO>A7RSi`X#xayqcdBHh9Jjq7aiKJ$;h}KC@Ugx;Xi5)Yl&29i$ZWal#_tdRoK~ z>bz)-pgZ=Qi?Y6?Gm83SR#*@lTB|VV^4r+{)ah_QHQKG*UWeBYfTs!|6O;f9XeRd= zv-Xo~k;gwGRPD_Kwh$TB1mU&|Xb+{iG&21&lctknP%4`KOc9-fR);v;rd zByw*h?#hsM>28-dEF6cfJ=ixbyva2??1u?j|7TjA@P=trIS~4@wP;hN=)PcjB%EC=dB#cJ&rrc9Gc3{%H>nn7 zRt{TQ%(#@-Q(5I&)zzB}K?*Mv(ECTU>tBEO&?eJR@#(5ft7MF?_hS3pT;T=2AtZHhso@7LU56$y>C7hm!BD4KCwOvfKYQA+uH5aZ-d@H_dyH#^kQOi z!?H!1*h%8LryHB07e@m`k)s?x7}B>0=u2e6KU9L{J0LQJ6>%)(v71&|r>^5lx5bpi zzvutX+5$xK;aE^<_&|;XEJpQ)m3|l$Rw$)IN{df{%hwfmWPhNpmF!WrMdcFKPHtbP zSTu5cqd6;$`AR?KFixI%;jGq!!b?Je_<&-F9rfLb&Kg9+8CX0;+CrnYnG)6XU=I7` zCZ(VeH(vr;*w2zl%K)oVxiVT&IO$xwQol3`1#!iY=aNWT`LHH*159;Z=4BwV@e+B{ zwM~?Qq%I&}aKuM8P#*en^24$&avEGnh(?5*xgSzRXo}p*=;sa^rSyA!Og$QE`&b28 z{6~DE-~wcp?;Do(&esDFb??K5BtPzz+Nc;fBM;*o`)>f%quqjNp!Qj^u0LE>03_RM zP+{tH<=4XWb-C6^FG*?SFJWsLAic3#85@5XqgI6l)@*BU_U32sR-K+w-U2+~yB>j! zfnY>z!j5SH(2PprU7rDt!mZ6!3kr7k=lKDhCkAbRpmyVJOtM9$Ct*>t{k(ipNlh<( zM62taLbQpK*F&PVb;Gyn+ztiS8S2=W0LKOB{mIXJz9RZ z4K!IxwsnfHEqDj9n3Tqs96CsPxk%)zY>GE+(=rY$$O!x$KYF!w!4YxBeYUjx2Y1Wr z@ucXKjD817SWFFTpPaKNmgkyKmtPiz_X=>CU`{VQNk*7~gb{8wzVxu4j{P5R#RTQS z7f;knu&5hkuc)Z){EjD(GVy~I*fKPm77UeBh0t%HZ(7PQ{WujR<~4U(-{Ia-V;kN9 zGu*wWmFR##2`G9WuC*x)7@w%lrI#z`K0qwE|4Omo?hZ!Y&Tuc6yvR8ADKf$tTC~yB zb&_1v(exjflae@}t@3lLy-w8k+B2r+ zob{tS0up0Zurw|l=d7~UCy(hn`Kl}4J0Rm9x8G096GCfWMu1lQZDGXbre(?q@R{p2 zAwCT!Lv&dR)uG0QgSp$1?}E70T69d;nb<_yyh%UyYq4D&Ut%v{2$G+W;{I zabF0TM2WirY@Y!Ou`wbHjKR4CZ_jX)RYr}#&yOz%MQT7|yKjlRYbpt*agPD0AB--9 zq0b@zMT-2T`|Gm%t2Ge>GAu^f9dUG_SB&{G4z0Mj(_Z5Mn1*3fIBIx}{k91xV0)Ua zwCSRoUueSpDPNN0ukoNncb4yxZ`xC3hz#Xy1S`Ir;ZuvD#$G-V4rgSKr(}_59|x{y5)KclI)uAQ zOGcAGe;kj@`F0S~nm>#%edUDZD7Qfe$WhpX1$Z(aRv%OsfOIA@%J2rf%vtW;4b;9mI;y}DP zWza8$bY3#9Kbjqg4ZZ9KXeCsU}P5SI6D^HmB6!p>Z^}nY4?!GnB;2vVGXI=2&8k% zI_s$k#Wl`Ojz`DMx7g<}@c!J#x%g7UHt5%rzNVson&kflUSa`YY^ZO5ATJOvXguUi zLaN`0Kohw;!92L8NZ|1Gx|OvlnnbrQ6>x)QI|NE$f>@Z~x~A_ganTtnSsRTDK-9ML z9aYI}0(S47{(rz*LnuU)FCnRLt3hgLC@@!mWM{gQ@jh=-0 z<$NC(=i9k+mp6Gal#8!?y5gf%^HZqwjaPzk-uvkBGih~fa`xR`NA`R=kmXOm)@{wY zoZsiUNangqo*Qg-_gQ(L7~O3D`-i{ltkWVdnag)MankRfiWazkVILRW4_L`&MNB7N zN(<~zVV?(uZJf%(c2kV|*x@m}E1#=fM)$w&nK(XGpSXr_R_UL|YVA>tgQl$Rr5CMQ zE|YMg{;A^41a&6M8Zg}zugS`ydkhyAsq;eK5KogG>|@}8{zO!<7;E)ICG2G>j44!w zB+#Mze1uwuw_z&RBlSI>#5`!+M$9AfOO7k4;$Sb9xQ^{f4W>8nvHZB_eLAnQO=lB< z-^D52eizQAwWv*Vkg62LW(a1YMBnZu&w}>Xnn$ITLv{Lti64V$n6@4omkkIaeh?`@bXRV^S;z?zZISvr|7^ltZNYa{ypwKVTg`& z)+i_^PG8d<=uVobhpKbh-#mgBf}%W@cwkV9Ye2=r*3gr|Tn%tTHI-_2&>vf^1|WG! zo_*}4ng`=w%qZOv)G8$2+#KvAo<-m#IwU44X>lTdB^&SuDncH{l51lY)lYTAxXI2S z;lhd*SLShUmK{MOw`ugZR&{BPnI2loY|#g1WZ{EF@F-L6=abSqvbpzv(>XgQFgg)R z(cXg8MVX4#C8yS({wfL$Q*JOYfbUpVUMpAKD*mb+P)-6veo;m+VtpStK{HN*5tx54*-QLtGC z{3UTf;%zt6Pe$_Fij@vUXQ@Bmjc=fec^E`GV4|$8G0*(x1!jm{9kOVcv?f}Z=@x+| z@Voj%y+;E%6y5Zf9POflTp-cO2x$5@!1<~>_hL#1M_V(to^%fZCItdv*RFa|VVQ1e z?%#0nP#Piib`RIxJAhg?b4G<2lpi^M^0q>+c0~d=KoGpI*t)Kr<*s`$!v6Vk($L60Z;eYuh zq(}f1m{&QNVf1f(C?TBdsod`7Mf1ycR6TFGfASP&V(qqM&rL7$v;Rv&fQLQ?*m^YR zf3u|k&V9-3s=(AD@2JY*U(0`Ez5m-)23W@Sv*|7rRm#MF2{4HoI6QACpatHyI9F65 z@-2S;EsLiSzd<-(QYm8z)b8NWlkDO{`Im7AOv+}n1TOAM9O^!Ahx>@ACYhZDrz3C<#QgV&|JOf0>%#yKHHR#|)%!Zgulsz5#dHCFdt$2Jc{e|cl+(pot8xKF z0>)2cc1KjnZWS3 z4!^D)sZYHXbnAde^)`?u0ogUoVnG_83=4bU!HIJ8Ln}#FQ(r395yraUrbmEUUu4qgkhL29!u^Vv&RLI>KA^V{*7Zfv9Z9B}jI=P2RQS=#{x%_#$9H6N|CzE0=&(x6 zfFYqh49)Cpwlq4YV-cX}v0=r(0l>5xt4nWvdtvULl=HVQ35(a03ag@qF!f>0_d}*} z*^F|XaQ&1F@efh#Z1khh>)8rNovx#j?724-dE3iRuQ4dpA~7cD@zb<;VgF>>*U+)U zAss{$zWy29^-a$k=E-J{F@pj2bc|Z5Y&lB(>+J_XP1dxmZaQi{2o?JU6k_qZfGXt_ zBee9vcb8!QJto@^L&K0;K%yZe<<9ch2!C&Mu}Qi5z`+aX_jvJ}(IV|+viLYo?Eraz z7>IyNYQ^KU(d#Jl!mqsFDJ&Tz5Czz6bNq=S?I$1|8ry<|BMv{#MqRE7)9eX@Pk9|s zwme9anw&Sn>D=!N^oji!?lpW-aLcf!F_3P&&xYtmq-M{X#cVbeIi}Xbo1Mcd_&4v- z>I4?H-8@z^8Q%#T!uXO;aEMjtXqc`bebq5L1>QZN-Q$^S)zdfoqW(7F$vIZNp5G1d$q#3oB>|{*I;RLn#mx)pu>kUTM~N*1lN(&a-DVV zyeVMnS};;ePQkdV_Y+sqfvX z!T8xlHG-ok{_auB>6efOCv(aOE>4n8-}Jt&hOqXHgIiQJM#}BsVgXx5d+x*ZJl>5S zXJzh#tbCb`cE-rCH1Ip4-htuZ`6I$!ZQ^O)v#_ek`#8^rQlp)tMIM^miFA$xJbUYNJsI~qVzX%l%z7BS_2NzIfBUEE zsa~9xJ6G~Y@wT#~jObzyEDZTgHbp?_>^v7uQUn?6C*H2tirnuhi$Q7P3wpE8#(Q@@ z*#WB0B{E%iPV;zw;9g|yq?-GFh7{Us)AV^V)UKhTd2X^`f5>zmBtCBYB@B8(+l+*s#wfR2cXtjyYBL4sJ>O`GwT)%n5gaY?AckPd3sfR{hl! z@ML362_#0|tPR_{mOZF2TNI;MT1(vWJ^q+)= z!efmNKb5p{8+87RaAVy$t$PC$oN*fE*Ty-FO7lP!j@?vU&6jZ^OP4W|?5>&seWUF% z#?_M`QJ!Bcjnb*Lwg-4-Y{(Y@H$cxhDG5+J2?ZLg2I~W~Apf$n{I`?DS0e=FWUrMA zUG#h}W^>Y~@ZuYv7`TKYSgkt|eyh`WVqv2JA zSvyCNE8qEd!L*fUz)=xjXt)J8;#P6IC81MTy`H8mIcU9T17tzEw7^j>8iSi*&9@{) zdJ2H~4#Yia@w?;kA@VowVGtqSgD<$=wrM>y^1MfOugJi(Gugc!xe&S}lD+K^Fmep0 z!$~aNOeM9yT4b^+P@J|uZaHqpw4HJ?y*I~*Fhg*QYg8aRS#}u@@s?oZ?z_LD025u38*<^}e6!Tr}$3Yqz-C19rFd_ROQrrYQct z=JpwHt@_u3i}2&3KI9+IHrn6%qaByipP4~;AhZwFgazg7Y!0c z-9|z_Uh5AvFrF#-_Pi?sU43b%ANgXG(@rt&V%QwLp7}z07*U!`jtndS7#({C{F;j5 zlrzDu$|$6?_nZ8Q3)v`uQz?Docwg5`=bWHuP$;bF)8*dY`Q8=zl^a84lQHN;Wb?>< zsC$>tFM#B=no-~8u#q>Yd!pA>;YnOoHdC9FT-Ho<2ZacwiT_ed+Bwq)ujdbU4%rXs zs8WPE$zeSz!?Vgt<=nq^kI7|qoTW$>3=Cj=_5k(O6gxqrinbhG46B1ost10`y$~mb z*?pxI94D4TigqFo9u3-gsyyIYhrz+*dt! zPGY3}2vFiQdtpeuJUS(8yV)#X!TZ&XlPNr24~RGy7vwSWEL!Hp95o3J;cX8oGW#td zkOeEk!7XzRG5G(ca-=lw0!K+iRrPeELnnf{3X+&QJY^(ejL0e7^FzS8QGFU;5G)h8 z{7*s=qYj!7qaIs$!SZJqrAHqIi!8GGQoCjPK}qA!h<%|LP?NqME{D^tuR!JgK|W*AAlo?OPzkoU zlT?9YcKpb&RFoDb7@h0 z(Dc`Mzm06tu2-b2cv)(-w721glKzxv%h59EzED^E5G4qg?y^5NI zRw>scDhJ@4Uc}r*(CnFIne-|ydZxtf=!^3McW2~7)u(2ul|r9lmM|jcbFzBbYx3cK z7Sxh7!In;i`?t;Mh+tN?s-KyXyu25x^xdVk(C6bbMAqe-Qyt1s;LL|4rEttD%;`Vd42bf$$Y#}!&; zgn-j>o>jCU5oJ`-FWcqVe|T$7wiOqR+b>Q)G4YJ-NG2M>t1$euNqn zD|MkLi0IdN=`F7_=c(_KqTsM zfpycki1meF4b%JOWPNdnnpE;kEJT}7rYD}YTEugs)qfw-+|?GFRCDUfzz}6G?2u$7 zqGfen^MGaeIn3tb%Q$byxz>u~3KCDoTn^rhtLjgwAO;hr*ielN2mbclK*9`i4M~eE zUw4nN9WgL8Gzn!8H6rUWv1hy_F^UvObsZ3R&|nbJUl3bB4T{5|D^w7pV+ca6hh?QP zJN&Hq^phC9(G{{>-Vo-Ja=mxrsnUPS9m;!MN{?Qjp8_W2_il5GnwGp<7L*}M)JE|d z$qxY2kq&xJY@qVsk_gUV@^n*olcLkJZc-$`zadR@>bMzmc)PGg@Dl@#N10I2E&hyp zoY7G+qrk^w;w{D$YAhHwm}6Nz9(QHn?Wg*8N1Knr#XF1FkwPzC@W%K}Ju%X-g89STlTUPtjA=;Ue-c~r9UkFU_slXc;z5%aVb&Jy(!_9X} z23ehnrLMoO`P?K+Wfh8ivl&_P9sJqi&g5j+EkBJDV|-GYj3i2SA|L=x)^iEt!fRs< zkGv@3$v#TaF(b0E5fD;sN-{G7fg)ps$h_F=qEwxeMo2v=wB3ZSelvpJWey}igzerJ z{1>0D37SqjCB04MZ|!zCPx3$Sj=y#o&VU4QAzlPOMEY2fDF;p_fb0Y zHKV>yd+|alJx`eY7yD~LKwIc$3zwWxP3}$<Pte#he$8Sn$<*2N^swWSd^1mAV?y{Kxp@ zez&L6{x#KERe)?tWA{e{HYj+JrWpHSDCPtf=BjKB+E)8>fAv|eeJo|V!O5g)mUlAmC-)(e-j@t^8$pPQM$W`w@5 z<1V1HQ^A+g5Vgu2mRBxk8s~iR7711U_XiaG`z-g|_h{q7=VP_0C2v*om}B&h06$*v z*gaqt{4(7Z$1lOZi_HRXXA=)rv2?>kr1c!2csjUQlv*dJv;%4fv;7yjZ}#$h<$sIrntGu} zT}I2qxT`0S1!3aHuncsnDj%72T?L|K=MuHEFn?^o_()>tpFpL*1={0LIUz`H6i>;B$Md;G^e8 zD>_BA3Q<9L{@Bfg`adH21!Yabf) zuwcE<>d-x{)LPpucYD}(+-esF|8`iQ@fU?}>v~YuWseg0@zWf5PARM7iq z9GZuNHQgRH&GdR|Rah1{G0a5!|GxOD5exc!h19B$>%^;S)DIj`d-V&`$CX#;tUWlqk9IQ5x?)+?)}}qJ}w{@y*7; z4?3aN-=9gw6|u55c6!(uH~uP6(xWJEw=!-yZ=wu{tH;?O@#Wr9vAk1$b=@P)@J@P@ z!a^jPciun@MGj$jd|k9I!(_=e8oF2AjOXo;yh5b9AH|(NEl=8&+zh){y_%{_GMRH- zepnHJAvC#U?tkb#|2jW-AHG!ME=q1QQP@SsBgKbkCiwa{P%82ZE^w3DD!8+6LcPeV zFJt$c8uLO&(Z+<|5G>e?^f$4KaW}(f_1K|!v5v;!`p|T9Lf$E^RtIgwe*{<>R=f6~ z^D_M5kayk|uwbXUToN&(FIi3&>Bn zq|C`u!K}TVln%a(snNL?0Vf24?2=GriiKV$0?}o;cbqXlQ9B9+E&9gDshDKUZ#MCH z*2+t6X2{?s5X6GPmdGsINmij1#P_0^?q%#UUr9p7oFFf5rkxu1Uu>HE2Et{^DB*@A zqO_Sb)T+oYWD{h^>2eM}v7b+@VNPc?dTYs`K(ZMvM(+l-uDapHPYN5u2$lgS4|K*q zd{y|y5S2g`b^w}e>{gS%;5cmBl69e5S6_H6A(nB$aZ^+s-+inOG+dD(X1RZD z0YQpllhjE(1X*7#UbFxaVo>gTlMH>BaY28Rcl?nDH`8hDeW8E6$833)S#?DUjO6s{ zsECm7k>5(m^hf%tKoz zFn6JG_ZY}4OgYV4`;o)v9Y zG&=Fu@w)vVzTP@6%C-B$r5gby6lsv|k`58+?vNBDB?OdCK|xBok?sZorNKcOW@wNS zfk99jhC287?sxC~o}cIZ<7XV;dG3z2zUx{aX`dwtk2I>#`r|&}&r5~dmGhFcy__Ew z6E?)w(jf7z^{{lNp3)zplxVW9lHyW#`RZ=qZ8I6K?_CPdTxI!GA(rb?)|B^Y)!Z}Y zaz<#4?0h_6_E*{N^=jSVs%AqK{R9I}KfmIX-D~ti3O_2j?zg?4p5b7xE;!AXeLc!E zcTBFbg^)y@ri(ky!Pgmh1X86&X}7uUvkJXz(kDAgY3=nRGN@gWzve-_zpwYP1saxU zMU?pZ7~P7P=H%LQt6ERXy+vLLSIo>-KV}oa5HizGupN+1hU`q0?l67zn*O}7f4nu^ z&1CK_j~Hn^^nA-@=$qUWQS!MhRLHip*l+KwBtItI=~2{v#*6u=*5vzKwH?hgPZnwG z5bsWXeoiN#9I5#SNb1aZmtBo-d(b4ymC&Ppy>hF6f}p`qJe~u41&{X1%jFekD~Tgw zj>NsdoTm8uJT?#3R z>)e<0l)8cKfn!7!*i);}K4IX?XyifNpD z6vrtd#`XdsSCLJEsTlh3tulWGV_cr|z4o746!p!dBtwJY$mQPiF{8x5yY}Gr*H>|< zEfsVt>X-R9Y71kY)(&ZfQG0K_=yI#vv(BH2S2JIwR-^&Mh}hed7X_wkMcYkCLIfYT1OkO9M5m zK1-v@DqpP^1e7?|t4gya?oX(<9$86h%$0pgA(AtP%sg1b&lbH+u~!%5p27PCk|B0rqE9IVytq0-x@iO+*ul|zXU$eeubOH6b>hmrCi&YIrCb#S^N_-l}ojThiS@XMZdzh%Oeu)&;tG1Lolf;l$ z*qYy{4QeNMggq0PEdS*E$~OjUi}D9#%W9d2dvDM7+@`0z^;+kSzSeZ2L8E-dxT~s4 zV*b+SFYv6Vc!q~PAihb5Hf^%WW}M<+*(gkyGfHa2(!Xy|UP_9wI0YY=Ba`l2D!1mW zi}J>p>?O@IlvvKzBfVHD?~N=s(-NK!sQe&W(Z~z%Gd;AQ?;p%(f@fQS=FActR93+>bO)q)rhmtM3&J=<2h3yB7$ zns-9zTb8_^z#TojR8AghAV?TSbc-DJ)ob2aLE;Br^BB6uCmNkk!bVea&+7%Zq3Z;1 zYuceGZ?Ki6*hVehbroY^%-C^-Od6QC@eRNFMRF<<-V-Ylj*fn+v8BMo$v|bNWsa3O zjI}H8YS$(+hriAc(WoL2{NCV5*2R;A&k8j(I6d?!&ybpe-Va#^beKneWJJ3}k zKx8Q4Muk;PdqV!=o*OaMs_G~GG^w};fwJ?~xiR?_b~?QsK$IpJ6Oq7m^@W|V2uM5v z@`rF^m#83L%%gHCiw6#6qoV}8bUT(G_jTT)2Rt#Snl3EMN`Co4nRfxiF}Il8?zn6K zs~QUrx|LRnZyb3{EOxHj%hySXZCEqC!(!?pM&12^hB zi>@|vc-zz~x9zM~ShzuCb5rEsw~WLJNJEJC6Ddc)&G9Y9#9|SGmn+!#3RI){hx8KG%es&m9;6|RZqH-&5S11oDS6)l zK+m>ldWGb(y-oVG8Z=zUlIOhR+v{)mQ;#M!NG9*+Rt@eg&_{g}8CdEav{4giJgZR*=NQE@H@Ca~jyU)5?ZD*I-NxA|*ew_M|muNu8sY_38m< z6Qnw~m@3@3h{Rg$_s&6(n6lTLeX+$C2zuVs>p09C0eb?QH)?U14K;RwpWL!D5U7$q z43oPw6DJZ&y#QVVP3{OP_kJ9bB4@gI>~_0HVz-~f-2lU@XIbBd#+&G4TN#l=f4!j~ z(FM+J7&RQ#Ijq4RC0pHGufrZ)HAVK*T33?v1PVuAbmQv^?fu@td7CTZE)XDF$t$no zc{g6DDUR+_IkTFAm8Q&{y%iiRu?Fu76(QG8`vV-$@rPiv-C!}vO!W3~rW)B+bI6uR z+6py(br&+6OTn#*8ecO8pR?UqZUru!h}PlDkbqaN)*OoxP}P!zTP*4XE4+=j-YY{t z9`ZA6mnRiOwMQX_U_Pt*=A+A5p3|`Dl@xwf`b+ z2UNc~kd9ekvpBl4VM3X)x!@-m(%x#*z5VFgK<}{*&7Id!Gq*!(AJjeCr2kJSh)+MxX#87=%$-|Kd(||gZS@zQ}NIC`(2LsPS;dAjAFdPmq2jcy#<3( zmDUfM)2lq1DVAE_MR_^0ykp~EWLFCcU=FgpiSh1XJ%0;jzd)W!e_=INTXTk!2{BqFVl=WMXdHIsT>6u{q07>z^uNuWl9Z~!; zy;f?>VlO5-hY9$iBQ#U@x2@E+>zbchP52*aY#21~x3V{-N7il7gVT<;k}H)tMWzZ^Irxze;I2LdyXFsVAnT4k|8Ey0`ZY)RR&=1nQiT-7kiy9%J?&eO7{;WGxzy>0Ug#svb z4%U%RshA;bEFzi)is&X-H!6Bk1J0|O8=`xxast=S@i?ja>` zc$B4i=B(!aD1nH;`E5$rtlTc-2ebUfUobpli!F%qcy}M+Ik_g1Em(i}bB5YJ%NKazQS3TRPbs-?H8MJ@1|3L5}U_ z3p)c$W@~2dN)y`CpruedW=8Csl zD|YCPJsXtZWeB#<(&^8JhHmX@c~7-Eel~IwJ!o~?zJa{zD?UXg0&L;6K)(e7GENvAL@($8v+cIIj0Z`}zn4e%_T+lk2C%`D{r9Z>PB`ttU|47lRXq zpd5wQm2}gW@t5REeOFVdhNFASpBB>Cxf;o5M}@sdsEEHQ4kN{7JjQo~zlisY^-zl! zCWWMZHOPLMY9phU#4&;07oIj00(L$+7BF|3CwE9sQIEw@*8Yyn>2o8e|)<-Tv+ldO*RR)iD6grB|F+6bw z%O%vexF(9pca};_8hls#;Vi2j`>H`4P@eH!!_dg5V%fnY78yr;NKV08sMaUl9{OjS zX@XS!d)2J?M}+b(HxxhP@c5acsaV{;LQHq;Zl1L!Jk2C|qkPG#^HW<^FyMxjxq>9) z;=;c`>VvLk!Z)MoIRrpnkJXaf9RBR>yG=vdV!}T3Q^E)Z_{y1{OsB;=4bOIIBG3%*xzh4cVGD0tG=qggW&3f{Yf`*PsvQdB4IUs}(< zm9N3OBo=J~9i5vr<`GT+D|jC*-+7?8V}C3C|7aoQR6DKah$*V-0q%JW$wfkhex%;xuv5G6ue}ur-+u`d!tcgsygtWJ zXH+0j9saAH(~l_-(faEmly@3e`8YRBt9rEGjYRybFrB%?w+&^THBnNOHjom?CqR2f zlme{7^1-adL{L>0c1I_Np03_JS= zQXRa)5~S6c%4dxwoDaHJ*8|9Bp8e**0CkX3RV%!Vq*Uf%Lez=p(EKjRDe&QEJ2g(~ zcg<}8r0;Hqr$sqJcK0a|xMR>`y16unhCO^^51cvXq01M&w=^&a+rp4V1G@*GeA;#eSbE!Apf+(nyZZE;hb6BwyS>53LTco<};hmP9 zhH6|}ShiM&UxVXG<;X|Vb3KQce@E$AG~E29fa_qqk7MuMEBG+SwraAa!Z8vtikCmh zrz$#_`kY+NKP;qlj-6h8=18f;t4&I;a5RnL%JKhNii|o^N z_B_y~`(M(D{yn=0*n(xvXak3u-PWYwUM(KznqPU>WBb0jfy2Jxhx&Q`3!cEU!7slx zV=u)*2`5;zzKzKdsR12E7H_l*@DAXuPRS-ThL~8uNk+%A6 zKL9`dc!#8HGR71J0s_??+~k|?hJLjcVtc$NBXxAy%34rSde^x3H73BeFk zKxfRpWi$|bedO$I1gfpDeam!i9d7CK*-_zvWuP)vtZH73{02hBoC;LL6QST-p5(Wm zkVBA(djh713Nk3D)A(v1Ms$JP_HoZ7z)VX3A`ius2(HX&K=$J0BIT~&d1UksTP>Q( zO*V=aMp$H^4rjR;76HPzIAFz5+^wv#W6I*IW`F`jNsBLYn*Zqv%mwBTU{K=xMB=yV zfKm?QGg2tm?a>5q92^aV69fta86qG!C#Vt1N=x{w(QF1>eW?f1*lLWN6-eqwNNt1x zpDK(OC&N)`!=bz~Srby@lW_k1e#f1M%YY;x<_!eAo+3_`^%Ke*_W(6h)g4@Xghonl z=m>)r^x$9eJ9s656baLFOC*<88-C{kMR{N8E_sx|w&uDBhJoA#5(#N5?!xqJLS5jI z+w}wKnjdw8;Y6;kT$xqihGM#XG;TX>XdSKja}&yR#ZFk@57>f)7o$MKMB=}{A$@)J z1b{ehtjmce#6V~RCC&hdgcd>gs>=(&hVid-kM~69J_ADmH3HS>++Avf(K(Jk3|l9H zZOyC7Zk~bKwct9RD7SqAi%nqv-gFg!0F|t^YZaK<|3qq`>N?Tz!`iXT8e#z|k+*>! zfr;RO%l~K&7m^`qZ-HpNxVqSoW=S!1S6VY8KR;>z*Kz^)uogc;KZ3=$NBAfH)TgTl zxuVyej6)u<;bGm_$bpa|&7IdZ7Zucy9SYvo znnsK@AuSrgtzjGzyf1C&+84d%@4Y6kwT}BR{^)LBM0aj%7jeh}uvtrWE8nn;`eod5 zDzRlH$v<@-N!@YAcm;%pMST7w(gfYN`zzZKaNLk6Dyn{p&?gf~MRxO;TSV($WYYcU zsaBA~c5ATurnPAJT6qf6FU3fk$wJ#JdkOX_oCJs((D@OpT6feGED*b@OPzgVGAn;` z5vSp{CI+t?2;P6_ni#b$I^DOfMx85A^!4iaLkD3Ban;6iOaa;sTHLrkM>IbCEiQ-}JIOp*{aWbKf&vKmG|z;h#1kX~l1NS?~u zRNxWZ-0s@`hAV?~vlnfbOq_ucePr?Wyj2tzIb8H4+|Vx@z}|@I)+Fd2tkA~q0wXi! z_->L}lD}WpYHVz6wPUiW`xm-`Ex#c>$i#e}b5xxIZ_M_MBg|ktx76eO6r!Cu|BnX+ zjd1ruo(v#Yy?fi@p>!QU?1iVGe!JIBwBiQzUM{9`w0%N}L^g_&l7KQ867&@ZCjLJs z2;NSNR_+o)-i#_HYT00E42+7TnuT~9qpvu3dM(yFJq;x)>IT?Xw!_0B*2;4Yoh@3L z;AQ1ls4>Az!1LMTYN-C(7(|Po2ci*04DES0ja=G}LXODLiy31?7*1D~TtGnm=YUW3 zJvYR|YHG)PJl?IREg-h5mx!TN=}*Qz!670-hoFksk$Cb~sGi9jy*4j#2Qct;=Mt=- zY*S&`nMT<}QR%bXgmMFp74Py>;tyb{#df54NQ!Z*9c^}C2k1E8tFqpuI#a{fZ>8ZQ zEXQBXCm^0VMPtpovzG-#FZ=0qq^_AYB3B?60QS{4bb3-1qE`tY0xm$10iM;1T&{vQDR<~ZEJ#8btAM0c*bv|UyFd=ECtf^Cu>4VI*QZ{= zeQyw?k0Axq<0SpU__id_$AmLY&z!zWQT%&V1fjqI9z1pN+-r2Ui9C3Nsr-Vxap4p}0HQ!Q~Gch8$94Vp5K zLo!3B@y|7Ry?I1lIIO+X>YDkI7L5^ck*7ITE@2V*)p5M4i_1hO;4FZ#t+!g_uQ_TV zb2(7=5}$(XBI364UF7*q;k8d?2-`%H-A@OiUm_<9&qL)YkKXPV2j;8oze86U_1bA) zJk#HrYGGJcUIMrGb6g&#O_i794}9q>8uF#!lyi0M>S{T`N2PQ8`p*B0*5@U_D7qc4 z`nE}emkY@(RQn1fVZ2$9T~T4Q09YiT+W3GKigs*h*iWy?w`m>c0m1;V+)x8?P{N|+ zJbE4!B=xjL1e5ONcuXh}R)-B++Em>?! zY>0=X=tC?lCy^pS{@09L1j!^+BxO`_-q4v09B7O=4R7fQPJ>eCD#ES0c zomCx^RDgyIT~EAVd|MhbK(w(L>k7LC$3F^}(2f<%N^U-qja+UC4g9u;G}Lr6g-`_U zWKLuiJC9FKywHZ!7|Kf&1QvcRZMS??+Ft&6K`)a>yXwzzKRFEd#01d zh~VoVwn`++E~;lBEuzlb1_xYzLadp_@$d^}SNOg|8#_^$Ynp<1lM>`kO*6afK`v zf;ncW)cVZEZ8ZIbaNQ+cjc++zM{JKrR}XBCzi5cX?sRKW?l*AZ1{%g$wcHh-V<7hv zNpkjUH#zqnObSrC{EXCL8o4(^HnVT$=w=h+rNL=CI^S1pp>vh=^?v&It&w*Vqg8BO z$Eqt=uFM3H2A>+Tl#lbO(~OD*v8p}p3RB|1cq70&bQ3GJ>WwF5%vNTd%!DVUD&NbY z$QuB~12i~IXH1}jL1iTbOaD;>A7_bv)h0|i#%nZA23hy0+2xCJ-pM2u*H%f^V zSh!u|HE1~rvD*2TWbbnk&yA4}BGJ9;y8QLU6!UKvV`g$*QzZn&^}RZ{IjczFsi6}q z8liIi{q_-haYGpGy=$c!)oC3}1rW-9!JhSSS7eC)h>U~B6d1JzS=ANF{VPbIReFo+ z=aViE-HH&Op;D96yp=jJh+KYs$#GHVFXC1e@U)ne#U{91#w()&XC+o^hYgTCVV<-9 zS8Z$&3x`zv2h%kQs;vMcr96oVM-^=%k`Y5;6x0m1N(uC_6oKKpgHjdKKmLih1h@ZO z3XGTJlOp*hd!8;&mMTfb7nE^&p`7(tSB98w5{}Dvs<*;knIN{KnKbjXI8aqKzI{;r zEJzmPSiev2h+m=7x|o_?m?N}hNThmWo2r+g>9v8L7zXZ?jnx42lnjAS?PgDUTnF+Z z`K3OFe6G0PrnMUt~U84%wzS(Qoh(*D|r!QjJw0;sy@ofe`e zZx)9uNYk=a%oVOfOFsLDd#;`C3p%pV2yOM;OdnXR^!tCsGH#LqQ$icV(sce&zbw!EY$Ik)JIA_ZBmV6Bhh91^J)ATZ=fH zmxPT{Df%C<0(R;OOC^TM`)nO3A87j23>YwwFxN0yx}DgPtL_O3P8q3)bNLMKRmi%} z1=cS`Mg${H3A8ZAL;ZLOOH0c0oK^*En_qAiS#pt?)IBMzR;0X*k}&$xm|mZ^qE_DM zi@hY@<;dK?9M87(4b|~^o0P}z09>_^Z$~AMHQCH)$}AlYv5>4TRMl@Cph-~dN$e^F zsFjDj1p8;550Vr5NV^}*C8Y%z7PTv9hC3$5y|1<{f*M3D8P~_!=aivW6q1R<(T~tr zr1!k{E5r(YK6^jD^?~nkF;U*;i(+sTRB<%23NE9-cB7Qqd!rE+phWHqR>S$mbFU5P z3fW~P+llI(Sg4}(;B<~P{?k`#W?O-}`czLN8>NQ2eoFWgUH$KzvLMFsP}AIo{+9sbf{ht(`RT^4XefF-55wHBUULADXoa)L??;%Y1@D9mJO`~ zS2zFOIRzXNs-6`EXp4t)JXf-Q9n~BFfQHNzZ<8oBfqO$7(Zd7@Zt_ou>s=DlLI=01 zXUU>;3?-b~j;4mW9aW>)wWWzSYG?|6Oo3}BiKU}I?_6OojD$v8+VCe11SL(j5o-)K ziKHc~W<7DO?E6AO%&HLMT-!$;U7BS2VTgb5ZOw#={A5CopQ)_QwEkny$!~X;P9G6t z)ewIh%pVT3^p__KK*V9=7Dd}pcQf2!)iEbQS29oMVi*M}EgZSD?ZiZWGze3Wzq2on z)us#3G1pxp&H`NSgSZ!PgA01}NoxdeQF1r7f;8EOMh{b)019W5f?Isae!wj(tmHJT zh!A;nO&M4d?9upEz^DUeT~4uL+-jBm|{qdbl&eN|mnT>(aq-P@FB55xINFn|rx-HF1CVJ^e#Mi{NqIIn%@#llm*nS@ z=g==nR?mCHjOYP@uO>8m@gd%?wAtS1M1_&;XSp$1gWAQ ze7~N`aPmcW3Fi@;yS>dSdJ%6h5Ggk7`Hdt>af1A#NA}wDANM(29v3_NJqB)_r>=p( z+{^qs#|F3)G2w*3qJfpBl_cfDLFKCY<8EvCZ8Y@ex~k0HV2?~hB^B~M1OuL=G z6mzXFSuFOKRxg|XmZOL1{Hfnm?Wte+<;%$8RGYKn08Nb&9@yP|969){4J${Ds^VxQ z4=uWSTbnzP2$E5`Q{rcrkrZPKiEQHH+}u=IJ(kISeGUNS1fKC;cRqr9&E%P__k^4C z+G$*H!uOnCAt2ZqNaNe*HsyfX?yM%Ja`iAzwZcaYQef9psK}x)-}e6> zj==4QXx7Y?_WN4*Z+?Z#wnd)qhw}s)-)GC_*OeC&BMc2@TqW9ilDo(gF&26nVt7-- zw}M}?&NVK`z-GqHP*rEL(^%ha@9fh#LBPs`7QtHz`{A#odqv3&6nOgwa}yB3Gq}$y zzF7@sGuS7acXv;O2fLY(SKN~K@7}LnifPP9^}@lf7@tr#x025l18mrd;vN@6hHwTd zIx&Ow$SDK3@B_>(MSOm}!qNfPnt^Zlu?>CZ*NEwssj>WaOQX`Qg`EjG+Q@sPA=W%_ zle8xJ`QlGZB8>w&zlVBx%|T|5RobySwXerJq33gaHk4R~R@q$Bpq0n#-tuRqrR#^q} zLlbEv*~|BK!Fh$v;u!c_S!R2+d{nK>I|8rov^DdQ!}8V2qPAr^cKDGi*p)NM1MM43Dma^*L+l zCZZA|WV&@!mTOTstu?_n>DyYDNUEuWq(BVf71_@!SKr5M`v@(VKy0N7u0Cxkgq^g* zF5FKN8Zxiw1^rH4rA^Z8Dc>7j)AET-s|6#Pb$Hd}p=*(FgJ-;g&-{z%gHX_L=zjkb zmmGBEY+Rjd{20x_o?2vH76lb!f><*-I{hnKP>~kj5k*^VSzvYZk4C}crDyY+k8%-y z^_@{6eB)Q$bHhw3kaJ+kJ`1>=R9G&BaYS+1USi+EugUh;(~+-eD3?*F3M{dnUs*m1 zD%Q3aRurFceT&l&8YEV0par!RTA!>Y9iY^mN<*A!cQ~vIKXt~gHjdF6z8gV!_j@Ss zzFv;+08YUZIT=*V=&`b*KDgXOJ5PEQb0%Cz?M?(K2C)n%^Y4EipnCS?SzXemWZco; zbzf;`_cpKInJy#}x_tNer}nOtQ;Y46T;*4FCt6gDRZQ4Vea3UHx7B*vs(M~J>1stL z3e3I=d4WNjep7Q4*2giKl#G8jlrF>ATmO>Mt0TOULaBjb%o=vtr$*qdxgRlciY5&* zEsXvBKR(|^TziJtFS3oa|5K<5(h`GA_M;%2iYM^wb770A`?;icy61zq3L*p^Yp-s9Y*kff1|%jCY`TP7t9`g){n)n(*GGUf7bzwbs2WhMnS8$ zN&fD+e@Zw&VYiOKiRQ3wj?MYz58W7-C!-(w3^d~>oEg&pTZJH*ZR7|6X%b2P(0(`t ztTHlO@~XnG{_y0nPiXc+e3hcP$@=o?De38d>R!5EZ8F2CjX&@AiT_~)p<=M#>bI)X zuO7G&U--Ln4kWh)?KHW{>$(41)HqgNuOBnL-b26Zu4oWM(C8sKOZnd)|EtesqVVJ1 zPpz_~_Q;_Gf4{k$vi4n!7KZgdjb8Ey{JjIr5c_|={ZF&zI%7KEmDtomo0}w|R3d+P zLy!t%ww{hm^z(nc^`C~3`G^Zz@`J$0-k(|$#v~(C$t)WTmo3gdvfCc)DginA+*Mvw!$ekc>F8 zt%~c1Yya3*oZzvx4}||!(!U=vrVi%g+?Lbxia!-d2w#^Bq;0YrPj?)~`d178GjZ(V zWb{xQu_lui|MX_MF;~zPgwmM0f9NLUa_wLrtRz$Uag_XA?hn7w-vFwtnj^&?`*(T& zsl(VJD0!<%=H;Iz$`j*UgCa+b^}nV#T|JsV;?S+l_r!~unz{t)l!G#Qi~_)C8GKWv_piTBaQ5@aNLf(a!ud?MNb<&P7kI zS(3Lba&ISAB-iAvG^jRHmsZ~N>H#cA+%Ft_zb91gGf+eLqrve1)`Ao#)P4;T z%TmwKyCMlnsQCbtpro|;id0ueW;h_1u0$U#b{3RZh8knDrr<^ivY5ZS4G;71*HfZ^ zwa?LvsrvmrEa2N*22{*R4<5boHoX%=JmmD0Il&{=+%|JL4*yTVP4G%OXvu7fO5d*Q?m#2NXGBxVu24u-3X><&n`ze~p%0Q&b!ElApBO z0+kC#hBtmcra6dz(!*s^GMTe+RewkxG{gisU2bv{>-=AXAQ%lbTCq3}Tlzo6YDM#M zY4mk&HF@gzyDyYLv%Gtf8uQnnD8=#c@HpKWg9(tS3nP1u6lbPwa<>sv;OzHk(L^o> zp7}OCe|01ss*t?)IF9GL1+)%efg489GX z#K)@o;16R}hE56W{_hB&f7(@uUz5<~l81IP{iiqn=b@+=|NpNHHsgb)hW%C7C0qg; zi5cg*FU(ia60Q6Nz_xm=7K(X8^c%5xC=ejjSETE<`WfA|q5u0$!A+oXr>2T?LKRSg zAK?xGyTvmgXgK(I4M0f?(pP)2b>;3Ll}(G3KcbmUr>Ge)H7b7`8Pl^@>N z@m9_;HgqlkkA=Ywb7a+r@9B=MfL!^RCx3YpaGXp$yoWP^Kw}YLZ{PstPRDtcQP2=@X zHC_y`755Iq`F8**3<$b@27XknwgDi{3R`?*l-p#4l-vW*$y0J-*QJL29w|J zK`d7d^TBD^rqEnSc34RdFD^TgGzMeC& zki7F)HW>JZyRlQ8j5`7@e>ksh1F!gZPzMp(Z@3iN-)G9otKi81lzalJvEUD`U@Jd* zPw+HL-`>5??UmMWQXDi6YJv84-~Q$&Z?o|z$RXySWM;IjV+;M$V3rrOJjchvDvlGq2H)zd{FY~Ln>YVXj#Tn@(UYS@%g z@z=LaR5nG?gj}3-Tuaibo&%4%KXY|mb9ZiB-5MamHO@RnI>yf|((48ik6wUO8DcgD zMrU0_0n7EHKc1hKRS4o2+56j2BgxwV;&6zzd~l1vhzO%8*LA>d%f?8D!KG(R!d0SM z%A;{1R}eVx5t$(@P%?3@DkRt%5~Eg;F)1pc0p>ZBVBf}P1s?LbDFrrKtYGyIC@;&1KmWm zcZVn?%%%epno96ns*o0tn(nkn(fadSx9U&(%3X3*=Ax&ub^e^83>8a2H1!QOq<#*} zqVqSmNuA0DO{h(nFv$?(00q9dm-~?GnuZDMKES&g(pn{e^i4;+V+CsIA7Up zPSUiQ@9=%D`q34~!hn_5PZ|m`OV~DwuP*7!W_PKc4{1%^ApKFxoDIqh5;$&5e>`1{ z@{dzjJ0^8n0&zY5bgUgRLwE7j?e$G%xOOhLK7IgkG^gpT%lrUf2!XMCzl(W{UQyCJ zX)x>Ur3$hJ#*f1A&y#hICxH%YecB*l1mwf&?f7uLd0uFdmUK%)qIUT!GP}%1hROA& zg0wqOSUINr%&3FvlB%8$nqRHb1e{vVXX@0bst8`T3Iap(zwLvxCE*7q6#+y4oxR{N zqy1n=0rVi8GZ&jzD5DM=Vt%no@eByghM$(`*855>)4Fz|o(;vg-W@2@3`Zv7qg3~T zL!5!K>lZZf@;$TacwILh$7zI++H~mLi1^PR84mI(;zuwYe`$sED}Zt@pc5(fM~Wod zt@k#4d}bto#tx6h*f|Ykob2BLzQLb?QvnwwS?dZ~FQuGI@>U|lJXDmRD$tKIae zE)+yuOliNELY}LLWn|C<&%TKv=U=+aGLl*;CGddA3$H-e+(Tmf zE`f{ypdFks$?=ZACjNv=8+4dk_O{h-JhT!sIkAu2ww3K=VN93jTQ~VT_wc>}Y=fQF z*mxwr7wJoaPbw#y@=b!73$g!}w?rsCjond()rY$r-ol9wpbr&sd+m z04v;EQG8)G0nVzcrk@1{)uz#ulcmKMH$`4~7xB6{hQb(g)JOJd%{b25$2dMXKo|N(wDo4`LaYdFiOASPXskoCQxCKc#t)2O2}8o2meiI>ISAR{d+-~`E|&-x~- z4YbEu-#J#)hF_bpS|pItjW;^T7B)Lo3!W6qyxFB?PheJapR^@34o}DI%flK7;?Uz9 zyL~@5c#%aH^6Mk%vjYGdI@(Y_$@=xN!sbZ_@DGMXz3{F+4A#k(8yb1?Q--O62IU&iU(ioGI-sXwT zgS!SSf7wno-+(nrxxtVe4EU1#pmd8erDPgY-D5zHjihZBoXfVsU`;J@;sGnYU3NMj z+){lV*h!DhH4pg7j;xy&+y~E2;2Eso2)Hs$6Lg8za?OfE&SeSt0UQEBIh7Ipyo~Bb zjsr7w?F%p_?KCQf?n1hhDUqt7;A^LiJ985 zF0B!pX1s1jW7Jxq_8OAJJ1J5zYfGVq=j%d z7qWoLSI^nHKaT$F=v|1UG2PIRcCI8_E_uNHHDKG?)wujTd$J0MbZ%bP{j{2QTpHSK z%05qic&m1rn>{HfP4zH}-$+kcs8QEK*R$5CZqw_Xl;aX!x`{XNqU|_eO(K$X#xzep zfm7@Kz*zkp8-%6o2`!<7mc6EMN5XP+$ng;?yn5uSLmu6gltawcM1MGs%p$?9P+oTa zQTCGZ_Tc{SyVMTLFaPtjV{xyT+o0*~#DW2qQg}%tj)v*5Wg+joL2~?iPuN>QN~a0* zjF4x?C{+G*pMJKV?|;-`xwOQkrQ#}oF#Bxk$6zuzXn9`(jtV#>@Bajn>9q^=qJv z*lOGGpC39dofjA|jlz>xNIqJ`zd8EFQ73Ne85)FDRdW-o$~nC)ysL?q)%IX#vYi9* zHJVoXEAxgqbS?*NcZ$j6NT1efGLaXhM8>^PKGeHpwlp$EH2q%jkP!aonM-ziT5{L= zABzR+c~DQD#@yVx;l%fpTuo|(>babH_=2^bR;xl%YKVV~4po>qle1&c>_+shBj?4V8+ z&6Xn=wGTKsEDy9YiVUdb7J3|;RclWyU1jf3k1uCemVeiQ&xn_@<|6TwXVNwteM!7M ztON|bTp5B~&K(7pylv+goGQA$oL*cJsEw`*%Fp>_5<8fnVxtwfoA`(Lj7 zg|2IVhBPJUZWQdW8y3kDb6OOQi{{JL^PZOYYSmgXK4+h?L9MYGbj+?Rt`KeBeLheX z&4HI%YB%4iU<#7aNY(4BjZBWFE#8NjO0%)jepuYiJcj0633iCvFeS6^YaaO8NU#W< za5hETigfhBArk+&+p6ZKw5^aKH@RF16%`_EcpHSgeLeMgMKt9mM0kEZE@x^w zl~hR~3@Qj6dtLbf7GuqLozlyvzbTT}@HW~y@uE8*dj zwA%_+x!fW3{nap1y+d4Kl zlYP`tl$7LedC$*6kGFiG^;H+fe6m@TXxLz1TMoDp<1<4%nP|9kQ5o|>`N9s6aW~S$ zVP|0n6Fxaj=Eg@>;*)9IDlBk1*eHmCG_QGxB5$YufmKb`92dz|I_&MN1FYb}2_STbqum!~S(`Zw@UG3vN;v8SLK(vpFeC7xd?tH1|cTK9p? ziCE&kI)@#zGG~W})3$7sOprR(B>GCHPM_pQIZHk?cjtfGXV~CCQhZ&9DtAh6hzqMD>o=*@~gv$jJ0by^EUm2wsoHya15YmFS)}7`q4tu zKY%oYAAzKNh`b!$n08SnhN2H=$h|78VC7BHt!T;m9_*H?dlCsb!tWDWdi@a)AZRKR5sajT# zQ%2t@?$)H}oXb2Q2wG>n@t>4R@-IOKk1-45HwM5OGBHmM+sAE?_ap;ZMw;n*2m-g7|~Q;`g4a5O8&WQukGYz#W05x zqi;SlIpDf&Kd65&=M*qWg}zOSH}gVOCn<@PLUH_LhQH3^v3xZb*b5S-n3@fn42;2y za^xb{)RC#kBv2PBZ~9)uuW6f(c^oy_xBCV!b*Fw*sy2$oy`TPUYsG@=>`lx4Rw8!m znE+B?f52VL& zBW6`38#b=>M8+Ta5vwq+zRCx}!p3&?W?qj?&5kr+K^$6i?IEn4<@Om@z8gmL5N9?t@qxyd!lNh&abx z2J6!6?1As>`miS&@@ZxR5Awx9 zF)=G3EQ=hO)tO?kye{?dSD6;G9w`pAN3}r|nWB8tDNLPfPN(`2)W-YUdPpX~( ztOjZ6JhP3RlJNL3Q~Nkw80hz$)rsuzs5Ui-HpK{%hKUspy{sHYIr*0^9n2`V;6|49?HbvWcT-q8gMqVHF z^x;wX2)LJQWcyZ~gUHS0`+1H^OXiOcD3`53T*xSqajpe2-0Idx0k9zqY3H*~)k%AP zGOswetZ{F}ei(Wv+_8X?n`|&RZHq%sYAS6eG{*qE28j?I0{s>!7 zM^|W6f8*Nn^G`6gO@3WA?tpn;dxp|cRH}3VCiAm;e6vQEZR-hJy9R5a`Dy>3fS&G= zV&+q-6P_`$2l7X(d4Z)}T4QkgwA=T!bN)wjqm;gZND2rHDj?D= zASF^miIg;BaYPBFhZ;dTr9(?^^B|NBlSsqkV$14HzX@BswU0md2S*u14zZbiQP$#Qp$qHccMuHce3GSMaHmlunDI10JC;I5 zKKI?l&%qy0hkSSwX!htkP>WNV_2rrx_qva(lhxTZT=Sk2zZ>`JC7EGwf&(%dhp4kz znx{3Xov5^VltC0W`Jj@|83#%WKe~3}LybuyViJESds%~8mZd9n+T8LzSF3%V9wVN8 zAxX9XawKfm^&3a2I}1bx*$8P%J5zcx^H2Mw+-nr5(@pFq49fQ<;Vi5$$M_Y_$1r$P^hz>kS0^3KDE>$G%HL}km>b)pk!$m zuUK4N`{7_u&xB?>8Lw?Vnr2MdQr|oV_h9qEMQBqy1{)zPp6`oIH{5Zb8~8<4;oVZ*ilE<;L-8IOH7mWXrCJAxEccL(@1HF!!?j#FD;EfqLwTM7AHZpfYAUTQ2@=5Q`JwE!*%i!pbyqb~wG`!B2k` zda=x3crxkfK+<}6Q;fq&8(zvZs1bPNMc6VTGuFF3OHo)y!<{r)CQUf8z+0=ay)3qI zI%PS>o&S3Wx|DU({|pyqN_yL!B`MXjW}FtZZLcxHx5|gZ-=|MxX9PZehSV-cZ})hl zx_3A=Y*45z-q}9Z5+$jXMXbiAD!=_HndN~~mqa67$F$z+UDCm}fz3Guo9#QwtX`oe z?%gjeS7W<$e_(oDaDcHvFk=*q4Qai5<=oV6m|ccS8Qqve;r${ z=g=HoGAk+nj-sVqKTop91KFu=!6HcBCFhZMk#|ay*`SfxVTRw8TVDE{U)Xtpf{fX5 zEt0)M3i!t??U;KKe`ieTZ+H(SNs`vh`0YgXPk}+2S!F~yXO79O&-c*n>m*@r*fAO; zhvQ8lI>>8>p5Tt>`_-)H%}VdIbb8udeq$z)^qyvl<-`2*V~_+6j{Cy1r_zwRo+V1k zSxqC&T>|J)zPAkOd)a&FQOL941YqTn=6jH!J-lPj!kYjK-#h)>uJF&_f)(2PF%LjC zQXBpA4)VpA=U%>uWRG%?0|Hk}5bve1C#<8=_uvhG5zTY;{Y8^-Fk=KOY;sOEUX!cX zS{@$c3*CY88qk^1JKyk~1A08-0vw=RPKU}L+~8#g&y?*w<8w<$w2)Bl5`jjTtz0|?701vXA)g+)1rv-r8*TbIDj3?w^3lGMz{zxWq# zx*KoEZSea4q7`CcF2}GjJXn|2*%@JB;Yc2?{YCr+BaWRoLF79s!@$w=YHu!1L=Rap zohest*>`<25#Jv@U!WJf6P>Jp-2+)b(*sBG$H&)%3h5X_ekgz zxf5vT|34BMSMN&Cu{~I9GYb?1W`dAIetxIAa+u410N!!zA5_w_I&=PXwm&0vn3lw`~hqP{tVjn(T1l0)_C#~hW_GGBK>81vZ(8}mr;2x zh#YzFLI&`eAz2u*i4I=Ariby|-N^u3k;mu%XK=quK=EilH!1AfU^96XcbI_3))O8! z?L|I25JppC#@n99Bt&nhD#_#VZ=#-Jw4+*j*uh7x6n`u#T#cv(d7zF;S25n=uJh*w zt?4RrZ(bCGd9|c+(!~_;2Ns!QH4h%s89ELf|h&}+DwCGc9M*a3j_s70>k=hloAJg)89<`C1>7ewiTz~F? zqgza1vYbU9pmw}l%FrR*`e*H1_1|zmj{)U4sl5)7DKmV1cR{!(Dgtn*^aBTM07Tu! znG~b@E!8bkHvnnprJW~$_ogA+ucU3HzV|B09{||^;2m(_z5E7AE{AYwytQf@q%oHy z(f}f=$YXm$NIn8MP7&OOPa$%s{*h4qS%?iGRvnba$vlL$u4f-Q4Fu^GgFkAdW&108e5t zD+S1jVo?5A4>17Ef)4Xs`848+J^rGuEA{{#YX^!t<-d*OVw_)H5 z=Qt8#sSjtAbjM2!%liF+A*8UI$3ddm#tDQ!9f?55C^ox2R+22o6F@%tRb)9RqpHW4 z$k&!LJ!ejdE-CF60En5OgfBXixYa;Ak3YBKe%@4{OP%(8BVYc0(AfFA2cVMbeJBV@ zBTE41XLUL2kf=e0*Vd;(LE;9E!l9=g>og`|m#p75D5_@N21%N3`MmTGaP~LXkSs!x`d4qnElGFonCXIriogi*CG=W9-r&IZ66o8v- z_k*UW=`s|@d9IL~By?y`@a6Mc_2zaX$2afEC^IDoYi#Rjuf#VnDMXri*F%ZQJx2tX z$*t$z*@+?eAc~zvJU;9SXtruKJtwirvjF9}+9=EsmJsfe1f`w^Bu-rTISa5nTMGb$ z4V}pwJV!}kglfzn=qk7-2Ge();dh!$P8=1CWr_zNfETWy0JR@*Yz=+&r;mxDUS&Ed zkc_L+V5j0!3)I;A!Xd-eatih^DX&Uv6cltYsKNl#Sh=cFLml9@ng-w=n$2^Y8~&bK zRgEAV1VWx6i;L7cme+7{GmV0{H@aom+s3OW>Bah2jpNID^gv6~r#o?X(`^>{y*@)x zP%3S+OI_ujp5k6ld1fdA?y&Y2psQI7k`OO_&<)8G0|56o4BD&WI|1wmQ+o7u-NqK| z2PJ%#B+lLykPOnbWs1qq0r0TRggn~*VStQU7-Qy4ij_EJKh0{$d)+q(iShKZ~&LopE;-MP=9!1$DPqj5G16XrJsFt{A9d`)0H1A;_(2K^w0Hn9Wx@~VA_ zJJtlyQzM%aJ{d^~NYC9(TwI`$cz81A0{6}`-=gCV=+d&81OQEIWdEEb{DFN$3$;PkTm;Geway03hx8G zEq_Y+(vFBviG%R-$39>H7Gq|7H*ndpL*F52(&o7S7}|mpXBrB#X^lnvfbcE6RDtNf zq`JQKjzQ?=1XfMq010^!wvUhbE17gHh(Anjo;Hc^&A^&QY}{32SOL9>^S>FFBFWF{ z-YPD*ok{O*<9+JFWQ5<8uwRp6FA9E=zg!I=j~cmj>t!Jd|HQ^r;k!y93QK)}19bB$ z$9jA&h6-%O&T-X0sN8yVp;QxbUvI;@9PkPaaulD8IXtX`lvGmQT+vwVX#|D{P6b-b zx^c^NY<89Js5^3W1Wg0zuN}yVe$r>AU1Q0+UssG1uSvhkekEYwK~Cq!3$)TcpXo}H$l<5x*!NjeQhdu zMa(xDw&WG17UY|_Ger>zr8feprg%hYAE~YM(eKQkpvR79KeB!rqHhvz+#j>MWlF#G zM(3sZ1mQTk900kuzg~PYgeN}kZM6sIrenH5=2M z{3z_Rk7(T#eOA$jQ-=H*Nv{%p(9*1D#{mA-{xM5I8Xz)*SMtr&pyi=J!-FE`3mMb)JIFGk_= zwj3@l9ZQSdNO?6?`}WHAop&jjlj*T0rBIJ(5fInjGTjL*Lv+h^HAT%-k4h%?xw+)S^Rr^0(9#efGcxzgF}$YRjvuh5#FA57ETfXYZ!Xbx`S8 z4&$2;k9$i>T!$~Ig_^y6EmhyKoGI7I9gygXgOKm@QF+T%KiW!Jd)f8I3?9juBz3B4 zL`k`-2P^|S6JwQauD=}ja+~270J(3vI=5?t9Il!Kv}!lZ)qumOt;x`ELzy9^Emo}Z zbL@!$l^#ZIk2qfeR>G$&KP0tOG&0IIkb;1laC16!9KVz!PE+()s!%8;+%Krdcm(ht zE?x;_Juf9mHZ8vXP0_8>o8zo|DX>=kAQn#@b-&YeS=v+*&lhT63&&$`WDBWGSg*Tr zUcfSJaN{vprD7;IBDSHqK3=IO;L@VmqJ-iR{epB31}GCI`jbTf&GaB*A*IZ4h?BEV z{+Uu5Nd0(3K$%KcQ1LuDk$uP{%%0 zb}wLYwFLQYr(yy%3QKi_0OwGe*Dnw+oq*u3p1Rfm8)}`N*SRn?QR)LzL1!`)!|XwX zI*07x#KqXM6C8J@sZZ_1Sqx_M6q~o}e^fot`_Y4N>_L_lhJIOZ6jl>@-pNxAOoI|ce@+@c4NLAcV>A|`IuyexMc2G5 z`64oowE#8IF95mG4H=hvn!G86vEJjzXXeD0pKH0$`d(`w$k}GWmzF^Av%F@T6qgAX zCq6b_I!VDnTPP9ESx2j?e73#NT@o-|hrFPqsfJ$z)6!$mlYZXa6ZDXSek&M`r8o<+Cw1$7qRmi=1ZzU&Yn?2@I;xfe} zZRe5T?O5WAELmIC)cR}9HlKdIoFi#``lQ#RKQHM8hlu>#kEg5JT|8YB&sFAoe9#In z@vPt_mY5UpdWy(S0UU5WpSr%A%&Zi`CcgK98RtifHG}QVL)7^A4j{7pCC|^VTUoaY zSR7~DWVx1C@0{npy{Lx0ueYg+vz-i7dG;~M%o7=sGWxMtx?Ul3V^Gjed3(AydGrL@ zL`-1vpnQuL9Cj>T<{&OWA&sO6_^%)JpBkXRNGK#D>{12@D_M?Up6lH85ncK%fsCtCl$~mg@%_-;iYm zUxRa*RzAV8tk|JEbRiSv!0V+_jYqP0xmk41Ki>}50C`K}-O@7Gh1bn^B$iDsg{lQz zN-UdDqi|z$^q1|Ga#H9L>PV{F*nO5IW9ih1a^K$~TI!%^&-(OZOK`RnLe0PLyQsz{ zN(c%dMEObB)PowSGE`Zgd=M*r2SXYn=1+*Pp=?++kh|#26Dx%cnV{`xeq@JH=*P0J zd^u`NuPzGLb0E(o$nh9gnCD8u@hJ&q>mIQ=l>k@fQDtn1yDImu5;DVf0|#LRa|Jw$ z*>DO=VvBTR_A9KB);+rDgdy$R@l7+y%J+q5tcWv=u@r4}eMLJ&aguoFI%HN))Iag% zjB9p$19%74RU~or@QNUzcn6MWcc&OT^cU?LEp$0-rdSygR4hf^rTJUDdDfQ_H&Zr5 zb7Ng&;8;tvUY=@uU%Uyy?CxF*2J{h2Q84oJ8$-ipvT8J?{=5^JR2uQqY2-|US~yU2|8t3KAuiR zJ16((eDwYayp=IA)uircR?}bWBhL{W%kv?vRYERvpVLNajXGr_;wuwW@={keF_xJR z7&$R&md+80m_Xyom*NE7Zmu1oQqM@P66$_iPMJx4m6~12{=}q@eYqGM`Zg+0eP*vz znKCQekW~|ZkzyxWHdQPwJr~^S(u07ZGh9_bUv*uv220;2w&kL>4Nyjxyv@4@PdSES z2SwfW3q5hO;I#1=HtE#h1H0*>l=30jkAONWR-tiOGv#Uk1xOB)>M%9j%rUpkw2g}M zt~VFSmkWDwmQ%HUllzWR(=E5Qs+`H>vLCUHb!vj^b&5606VF_ejd&wIj5KiFX!>9r zKDZ4VA&4k0H<_5Z_GvT_hO9f)evH{LOB*F&tT0g$#}sCZcLhEf6i!L-H7~mJ<8lxn z3E^w;;(wO6z9QP;QDp_dU(hMX8tOmIJW~EcTd^j>KIZDZ#CM$ zeMS3ITXzQJ2E?08mcT-yjvxFyypZ^0Dt(?=D`5iFTAR~4$W+hpRMY`8e4l&%@BH_| zTHNw@Hl%-H@F+i5nHXy!5eXqRBW%5c+w-h2Gi}c)6`T0~8fx-!G29}mE{h}}D;p1snYsm@NEQK?BP7^lkt7Nf=NT1bL75VyLJFy3G zVWZ3}w;yIa__@IM=0Z)PB|3Kqi2 z!bq>b%~Z8~neP4$KgoG{p=IWw0&~7sh_JT_9?u{@HzX~51E*3hu7Q;s2SJene@6Wd zE_5&iiE_%fiK)``ZP2pJdY(m}3r@{9uANI_7)G7AI1bgF?jmWNhs%)e^cTxvYOM+P z^W7W!019iyD71^)YpvHJ(;+;Q$fc0%S-3693%u+6&t6mUPZ39~_7c8s9a(Y)p@~(; z1yz0JpwY8enY*!Wd7R}^$TlQi(udLL)^y2DiFPNh24a#>vN!--XUHrS_IJ+CSy13*r>trV2=-p8DSe#6|f5nCMiek867}_L8 zx-`itww8;6A5&eEjt%bAGTU+X&UC;Nnv=ic<`fMIW-J%1YcNd2Wuu zTh^!6q_8}>X`{k~frZy;1p4P+qK2P&9SjAn4f0`llbM{;x6bs*oH=%ke_iIbgxXy^ z82>NQoE{3ffIg_K5kI2%6ew2|*m^Z5FG#3Wc=+m{7O6lb#5q*s`>xIf1`#3WTl~#uBi1-ZyGE9nkn7sE)h*^q`E?Gnb6peUxm!jSR_r z7-L(n%^TAiC#{*|x)<7~y^I-Z1mD@{Gc)3}zbHl7S?nf3`IEf%ml>eh3UMz}Zv6Uk zb{0gmXS35*Y=M(3%paUx;mffE%xwvD07_z%?ctqx|zbmML zaN}(^ak-N}En>`Ky{;=)NfRxef77TS!^;MHQm zZp;=b_%oVP0Qia3xNCw!0G8*)v-uM?djdX*!HUC5%#m3 zF{7Kvm8ftpG^TF52GRc*~EJWwV|8xJi#N%-<~}Xa?otK z)5zaJA-jDAP=w3AqPZWRpJ)>O%r5+XN)8Nxw5Bm>4$>BHT%XL8kyq%DD7g48mFP}# za@fV$V9A6Ae&aSZ)!Yk0Y>z^JzIREHN!|%6jl&>{DqkZf)#`=Q*DwX3RCwJ|sVK>_ z0xIr0n=D=lMM=v&MX1eoIx;;*a8u$NHDT}wv7I%e-3yJ)mTv`-V%GuS*pm;LpJoyQ zI0ur-5p08|Q<+~cf&;S%yq5zbMUNbCcKFBzouCQu_@mnNohXd`lIUX}VVjVvsRsJJ zc;(2cSj)599V*z}ciF*6j$tn%nLZVA`S6a1n#@EUrp3Z#noRHc9Xj=bP4A`dhXQqNCpSgeyoR8}+GX!oN$~f3xw46-8a$N~CXm$I1KKRd1t0d>17-4g;-Xu%-7J z^qTqmj5r7#qLut)-AGr^v@rCG~{sU3h1;y9b>Gw(u^Y#fv@+@CF?2W7K z^pJk(#Pw{-ebM!58-RSr&YJ7;gHLh!W#reNfHi%+m#5STjmp{s$Dn*bdRhHT_2KBq znK8;7>KjWFX9Xk7_eRXW{}O&nAN9SLsGI?uC};kP*!SEpQSd(yS-m~ajG&6_wlgiF z>Z=+9Mh=@_4IKE<>ttBi-V{*{BoGpdzRC*^f2&G=l(-+9HSM`(|S?RDpV!5+7S91yoTN9u&TxLVlQ-Hx*oA z3li!%#4UD@a-wM__c^T)1aKy~upx_q0vr7p_4g-kiXK-8=cyLdtQ)$d3?*qXeaHFG ziTqJrsXkB59c^aveX_1VVnn?I1GszUBb3pBR!!|P=7hNK?XFCH@m&KmvKPUY&y0aw zP>$3}G3Llo858XieIhz>@ad<5DVvD$V)yZZsFNh)cuJmiN>c+R1ykeWkLo^Q_8#~b z$<@CT=>OtFGox}JGLJ&PYlN^;G)*vv13i$0vuAb2de<2KlQGRrJ_bl#Cti(Z9cbjA zNTuT`X8{@{>b%82*YCY*?;mg{UY>yHFS@H{&*}(0ANfy z6PTl`jv}{8QUIA$2kW#WDZ~=MQ+t=b*mWQE4Rk<&!zSN9DO~pF4c^_W2A&!b{p8g7 ze}5W#!@>xI@1vvWBe1joOz&_a5m55G{cN-0k;!jnAYfs^&Z7u(%v4cwa4diXwRb z?;a&BzPsSnaX)+Zpo#xg7$%T$GG544HvgXygO5TAEUiV*jm@JFT(uv7oaCYfSdRod zT?I?)`_8odey(6@G}_@ib*%LtZMd13l@QvA0r0Z2?BkQ0w{ZxY{8OA`kH zZSF>I@5ho3E%g2X9;yHlFe#o7K1%h?g1}6qzUAm2B?391hxI?r~Muo4(Hsxwvj^aiYV_|2VX_V0c zr_3*ysLN7P${Apy9~ePtBFGMNqbAxDMYdT21RgXl_n+i#`q^(EG1Z^je}fnn4|n+q z%i=AfdD-xjiZ1(kd5DzQ6MwR_3HsuW9ixIJ53PNF2eRMy!MsOI(ohEm6i0MVqnGx) z)kFy0$9H5OXSsa5N@ZO}Wi5||r!+hYB#sZ}GNO~nfHSI7z+bDH@xUB_3> zySIc`<}J`^f#Tl1Ax;8hMf%RyX($i~jBW^p61RM~xrOzoV4cV7!IAK`1P{SdMl$rX zlvJ;$neEJqwng@QrFNyl!eyk`Q8CdceWVIqbP{>R(Xik6QDfqkWSMX!_WhjAF&K{I zYCuA)Npzi@DtUU2U3LTye`vVW+2*096gTY9jf3%;McZI5{oQx!3m)u7}v zdTP_6DWjY~?UnBDkHQ&fr8Dv1;Wp2LM`AMW@M=V3Vf+5uV2!)J>v@D`N+iqQ5-U0F z8((x8aP%4L9)1@XDsXe&_{Rg*Q7cvq=IhhfryBX|BPMr)A?71J4Ks`%7==E=f&`-XNqe2VM3b`Nh0jGxTX*`K7gA_kZz zb$SZCyp)N1r}s5t{!?DO$LwRHz z(g!CR3u5vLv&KbqeB5{1hPIyAjQwkK6ChsA&JROL|8-FIK9;K-V4ZVM%l_e<{Iih; zP=kFtaR@-Gj`(vt@FRi+9uOU_)xTVz1t7r%ici0T#ecpV1CepINwFV(Sbsje<>uZO zJz)lbfgQy^(8$Ik=~W5&?qDXpw4Y7ZTOZ|8keekz26iFG?ufym(twXs-%Ar$cJSf= z>hZorryWt7KL$C@iP9U$yYjo7gAmKg-AtELEZ?P9-6%3V8uIM!Im$_{pM)V0l$c}AEWigSpzFAf$JmAhovcCAP6*!f6rwePEd@AHgSg{ zANwO#V#u=OWaBuQAiCH#HCrq~&wek#bQbqliS;l1g6^A(>k}4l?tK;AY9N`NvSFfN zuQ~CDh$)&=^0==`q(4nNgz!61c0VrdSm>i)?4j0uYK|7-SjET13l0wJxhzI)WuH$k zd$8l)AE9MJJ05cHp#=T&2-}xCwy!Co65bTPC*c|z4RcVMe!RW0^lNdfX?at_Jp8?< zcmXz+r0B(HRK4k7aEZs<{qo1eten@IBQwyRSDV7?S9DB1zR-PF!_M10KE?l}tmp#% z%^+8eea=vzrP|7vgp+w1$A`lX798Vzd^E;l#cjxBA&6x*rmJ5&_pxCAa)8cd>Ypmy z<`dNfB^Gl}F!c-PGs>RoIIO)>s7%a~3&T##I!~Lgj^}W_2;AP>cIxj>=7cC1>D{(TImRlhWo=42OfAMwum3QB+y=OonB4di6@j7?;h4j@?SNbAZ>q1d+c^e9h zu%-XZRxYzt>32QnDcypZmlj2M+Z&^ysybc;xZPS^m#Pcab=YK3E+4V1sXLe+USFpg z(CpI*nq0ms5i>nQK+7*)tS_(Q@ePpu7|-K2>DwRbdt~(z7HllYj*ay#DVDFb>HfmG z_A|%$=gI8R1@0}n)g?furxR&%YMN3=%bKSTA zB+}aXxj%QFPaDpi^$@YtCYNh>Tb>bkSm`|AUod!&ez7_~m5BIDau4#HT)X{@>F|B2 z?i~@!1b^K+2@#u#PF?dSp$4IyQ!ykBGoN}ktb+}4B1rsUkKoq)HlAB0X*MD%+*UJ` z-qlSp?jhlJmDP>K*q+XjJwg}AD4D6FKF65oEMFDkJkV8uX^qTjdY4&1aOrB|UmOL! z^YQ(Y^&B&T@5K!C-HdWwXM+WGV+Kp3q)z1RbmiZ(aaipr{H1{R2~e&fM^U_mt702p zM6W*%ia^)j=wk@IAh0@(6PW7fDai2QDVTL#5E5KTwYC1D@_K!mOJ4sW%Gu3;m9yP) zupdFpO7Ff<5JsW206iMJp!d*PyMhQ(-9zG1k%%?Qu9-udn5O<}>7s!b!Y4t7De@mR62gw?ui z*Og$w{>99)nbBH!n})Vyk}5*p@bfpq;C1cBS9MNI#P@M6Z9~G0tc`A%+;{7sK6}>^!DkFgO+Q5?Rta_M^Fc z`V`LM1pTq;_L9&D7HYyRWWS(o$?|rad6u_X5AvA}{`1})V?kUnNnz<6wQ}i2=M_n( z@!7uO9)iZ7tJfY(RQCtQ>G@heZ9cGeUI+IN4FK(9X}`6&x|=j*WU!89e);KW0Pgb;w(;Pa!c6 zX`ZYT;Y!yRrflxt=a$F664sMibPNM;|GdogX?9a==JVToRmM*ajVfW#nc4@IuTJKv zmWJCd8|S7{j>FCc8y$B zu@!pvhmc!e=BAc4| zuCViz_6aluYnH$;Z5GFSpKRjlWb10yx$nFhx0aCmK78XrJK|Ke&!_#WMKCf%4#{8J zI%#b#fb&=F&B(!C4I+0;a?=fh@%JC@IQJ)Yl{I5iKAbUJQ45o&8hH6sww_&}TT#z# z9tOHs6k&75S#`yvbJ~m91GtBO+>bGr8S!;0CxdZvuhPL^Pju(+RMM8oB*OfILz=#+ zKF}m;#8OA>_)zk*>_;-8eQoA4@N#sU_-gi<_(5#3Y{%qNgi&X>d*g{_K}|r%KHpML z`efuxS#d$o>9p4xW{s!o3w=B9eKg1>xU00NOzMVd$VQUgx)Q40Dv&4_j-)5i+Z;uY zI4VR>Gs&@v!7M88y8Yg@c|eqy;|FuV2-pT2$`&?uYITTdENy6H%;m>Z>DFf2O>O&cN}OWtJ$B&xg4r7re&{%! z^F}wmxOP=sG@)2a;P8+@h~=E0uDAIqvId#X0T(tdP5ZdTG4w6#!VO}`eibp6lMtA{ z2*tTDmk(ZE^rVlhQ{0+ubhC5si&UvB1np;AjoWu_ELNb_C62}RT`Zp8T9>i;v}m=c z$p2BzG0ca6s>Oh)j)FwCn@sz9Y2+$b>H7Aa4~C1)k2{SI%XJY5m=D3+*)xe`xsT7!zX%8lW1Flf~nE-KTSpFv5V`g`kuU(aKq(1 zSfH+6b$^nEwK3SQ{=#7L#vQtf+2c+4`V5V!MCaJA%_qkp<12FTV|2e#=QwmiY6TKE=NOtE#hwDZxaU0L_%n>Qp}N8`H|0kkJxell`82WwL6 z>s7oNa=utP+PT%8*YKvb!HX9Ill5FP!Y-XFeG^gsH%0{X>=?^E;cPL@q{P3rQf-P} z745Wz&}Ikd795DQT2@J zdyJSwIVU`IU|pYA;=C$U-@scO9IE?yxdA@*uD=5ZS@-mZ?d-p!bAY`cAU$~9$JGv7 zh-6=$uh#t0Z%(}}(nZ}{q6;&2JW2eibbh067W+EG(a5g8hSDKp*C1oj!`F+3qi&^b z3%F!wqJj$*bsqKdjpVuOBoNG%#|ShI7Ml~rIhXDJN}R3R9sI#07a64AIcP@yVlktv z8o({)JeJIz7EApdg`&-cUVFzlSCXk1kkr@QT@y%R9U4FDHeWO95GpsPSL((T0(hvf%Hg`1KY8k~W15VT;W|0ZJb}#`o8#@x?ln8X zX)#~3Y0ZXBORRnf@-I|(^)EZQ_hIe7(rlDCk3|lU@yzdpH5Z>0ATO9h;ctkL)-jwQ zO;Yk-ZP(rWz|EPbHU|up{$ROoD=gY=1BphT_~3->I|eX}EVz`2UWu=awLl@?!087UFGH z(CK34bZ7g1o8&(ZcS-jdX09tE@$%}(Uhx0%`+u&jjYcpB7G%hK+At zZjThiZD&ov0Oj~WG>6;_AQX`D&e}@9X+;PGBqAG^Jw~?COQGes1WOg zaL3JV_87CtqiTNx{17R4{IGiykresAC-%>2k^%f(^t(Ff0MsTVcjN_Lh(#!qGH7?J z@u<0>A#T32(G)3%od6D9p}jBq6F9e{SNoNC|2WkhJ_W@@aYq!R;qNzyZt-P3K)tTO z+7sn1T=9<;YkFB^xR&;u-(T!>2BpmF>XUeR8Wp4G4xWI?tylvAy^HbGMnuO|&bILH zS8hULM@xWF@kYWY_m9nBgBDw#ckha0zLa+|x>!y_OB0`DiRPoBRF z%opSIJy}BEOCdOJC35Ddcc^!QP}~Gs^`k|L=aBf}Btc^p5VJiNbr7BkaKMA}>Cvqh zM(}yiRr;pIG_YgEol1RoC)qq3Ps`PRCW`ahzm?A$A-X%D6zZid%GOVp_*{F-({**> zN{zz+Ug3@JxBg<3;2OsxT&TO2{p$4fddn?(3u7C)<5|PL>9-xJY#%b5m!!Id3L%sr z^YMQ_h8!#Rj>^;RGd=uf_{NK zdq+a*{?7U{aX$K;iPc7}4;RY_ACmv=urf@)+mewt+gr~abn6TQV()4KlKV8D5-$*u zLqDTBh;Ik{0^J21cWg!B=S`{S6gC^Va3zJA<~zftyKS?J1JD8Lrp7>|lQKdy^rQ;|lofOW6KB>Xtvfxb@EFGh6{qd^<5l zP<-c`xIpHoUmA9cFGA7u>ogYaf@ZI-=%vMHa(R5K9_aJ5+L`kd|Fm}X*X9iScYfov zk83^-p`CgqmGqE^p$UW^&xRv;8*8%me}P~^$?s}~?2K{2{0Y0hi?@qyW$v1l$GusK zv6#r#@6Dgt-tN!1#gHDlW7)Q1PqSLHyyka|Ll?JFxZ_x`FK|3q5&Sr^=*5MYy`@xR zC6|zXZg$%7i*di77rT2+?vJvyGm&{Gce*bJbjlQqz|AIjO4&Gc6SnUkF5u{yTH2)Q z*9=^kF=V>!-eW5!;2XR7iR2u*j#Ye_cnWjnFRy&1eVs{>;J{U~sJQ7+P^7RgFLFW@ ziyresQf%(qeO*dYWYELdS7pzVgv`1RJW3aX^VVG=pJGl=oHZ_v{yL3Q=+ixXbHW+& zBzZ5#}YJ&r8&NUF$p$hF#h|KkbWf%Xh3p{7y23DkYwR8zJG64!$D?L^Vjy4mAK zG&&p90&f|N7kBfmT=O5WztMNFO2Y62m&O25rPLfz6UqHq{)JkK9SL~EE-G-Lo)J~% z#otD48?is%s}cx|#!YJM{s39Y#|h}YpIcCphkbr^yx3ymwzvJceVxM~P>j0~TuN+@ zBv=4jH25XEuE94hzYyz8kNqovhHSx1*S*c6cQzJTzVZ+pOyoe)K!qwcjwfs>4#>dr z=s4(J+k1EnhS)mhce9Kc*vlP0{bJ zM~5f>b3N;EmCkqBq5N_#*$AuIpV#=8Cp%It##4n3mup`>;Q36a?`X-^>8+5WuUx6K zZO~l|V^``^|MGs7wDRs|f4OJ*1t$LWmTRJZ`yzsL|6o)@uBf2A+bi!Lht18UFZRab z=UwAi2e|IOflU2!u~EYn#(%CoxT*V6Kz2w_>2!AIyu{hdTboUzPp{Nc=hoME) z-n(q^s=;`?St-?ULH#)LR(qrC>TI59iNllzX({iC|9Mv$jKxSMyguW>%Td7+zmF4T z_iG0DGUmL2Sl>MYv~MQZ9|1ag(%#(IFtU@P2rD<6RB{jTDg1iDrI zR?@xyARJM(3T@J&S5#kF8mH@bz>&9T!*3R>1!u$n!uQPp&>Xr$q~qmK4*)Iw>)v}& zh)=v6*@0_5?2J6YL78c%emwY`14jzA*3gM~oRuW*xNN-4+tInk$8Gwr8yOG=V6u!8 zQRZ*opWIH5Hd+X`GMej+-drpBT9!T4gq|Z=VpfdKRekefe!Mkq6x4iLiJx%W-dG+5 zEP8-VU^D_v)ZqJ{;V@*W4}JALZxujQ?!{2{-6;B3Q|=m?w*g5Kw(d_4Aj3ML$!#ZJ zd_b_(wA}I=z>SSIMl^x~z4kB0ZlH&RW+UJbXua`doK5%!B9jNM#IXO8@ zWk2E~e_asYU=HpPpIf&F(J+)w}alMP`YkI9vd`BdV$>#=E+@m*SX z8Ry#>Qy)NXQ7g9nSs*(XuyL0%Y@vwP9;{C=QaB;wGA!>{v-7(f zD{JO>Khs$FS$u=7Yep!3IM&!jRlGYcAZi+-R<8Z0ap9ISXtKjxGxG0oYS`M`RNz?^lpV3lH7>v2r0HBTl@m?>}-zh@q^U5oM5GDd1vE9kc0PdRnQ1gt zjEDVjqE>05UFCRXePMHDz;QQn*(UXy&C(8*NJ;_|IYos2X&w+c(+T(Ul|={hX(H+z<CQ>{>+&2eN4WmP^5{!nbd5>hraoK zqbR9rtPPL=x^km^5qeXDQw(VlHNAo(J z4EXR%pwTRaR>0S)?>b7?ozCem*MDzZr~w#b~8INuZGxK%+iis^wg*JIfY%J6tCXiCJ3Q;AZf+e!7C~L zM&jQ#F@(LPndWY|Y_db}_x8*mY31*8`)G?xuDCgF7XD{*3%acIUC0fqrmY*_kz>Bi z{`~?HPpeMk@nc$Fi7 zaS)d`R`%soO87rQLot%rH-8Jc;UC{wMzI@@EwZ}6F09likbI_KmD&emisrP9`Py^! zk5{E>Vmt@)^j=RomegY9?vSE&W8*6di7skc*n!{hbt2kezzzuY<#DXt1M11?tv_!f7* zn{#!GM|PH`2iF4C4nTOk3OCmIto-tP#qdCHC!`t9HcgyvK5A zRfqQh%ddKKPn&;!b1(Vl_b}NNuGKAByTvu<-?e*()*Xpue10*uH+}v3qsxCe=tk|H zmS(rRr#+Wb-tF+3H_*N!G;&{y6ujHB|9$o;u~mO`=g*Fk@%Hqew z&qi^p!CZ&F;yW)_#ozPD{v7AKVB4Oh5$;D{a;iqGUOYbyIrtkdv0kdocv-qC|0dIF zt}Bl`Rd38pKUntP>2h;rRYC}|->zs~uzkL!v`_VXcJIH{KP0p6x^6$FR{lKx(AO7@ zc2h2Jn!*zzkdbhc>74%a_xGdDzYqV)w{^>zMK|xMPBnS9`;FbpFUkAtB#?3yBa^q# zi+SF9E8j_F#}?~{Nv=4mB(`em*N}I1oUPfZU)@ZReK#X|LG?L{a@}M5MIx&G!=zWZ z{%*}m{bzciHi+x`sW%f>A+=`|CIA)Z&8XHnF0a18+;{UU2i [!NOTE] + > For advanced users: If you configured your Git repository to be below the vault root directory, the paths should be relative to the Git repo, not the vault. - **Include items:** - Convert the `Exclude Files and Folders` list to an include list, while excluding everything else. + - Convert the `Exclude Files and Folders` list to an include list, while excluding everything else. - An example case where this can come in handy is when you notice your vault misbehaving, you can trigger this setting and put `.obsidian` in the list to exclusively see changes made inside your configuration folder. + - An example case where this can come in handy is when you notice your vault misbehaving, you can trigger this setting and put `.obsidian` in the list to exclusively see changes made inside your configuration folder. - Then you can easily investigate what settings recently changed and if some of the changes are the cause of your issue. + Then you can easily investigate what settings recently changed and if some of the changes are the cause of your issue. -![Vault Changelog View](.github/vault-changelog-view.webp) + ![Vault Changelog View](.github/vault-changelog-view.webp) ### File Changelog View - Shows the count of added and deleted lines for all previous versions of the active note. -![File Changelog View](.github/file-changelog-view.webp) + ![File Changelog View](.github/file-changelog-view.webp) ### Changelog Customizability @@ -85,11 +88,11 @@ To easily see the what's new in future updates, it's recommended to use the [Plu - Choose from 5 options to ignore whitespace changes with varying intensity. - **Adjust file rename detection strictness:** - Git can't actually track which files you renamed. Instead, it tries to detect renames by comparing the file contents of the old and new files. + - Git can't actually track which files you renamed. Instead, it tries to detect renames by comparing the file contents of the old and new files. - It can falsely mark new files as some old file getting renamed, and it can miss actual renames and mark them as separate files getting deleted and created. + It can falsely mark new files as some old file getting renamed, and it can miss actual renames and mark them as separate files getting deleted and created. - Higher strictness results in detecting less renames. + - Higher strictness results in detecting less renames. ### Live Stats in the Status Bar for the Current Note @@ -99,8 +102,24 @@ To easily see the what's new in future updates, it's recommended to use the [Plu - Click on any file version in the changelog views to open the corresponding diff view showing the changes. -> [!WARNING] -> Currently only the "Split" diff view works. The "Unified" view shows inaccurate changes. + > [!WARNING] + > Currently, only the "Split" diff view works. The "Unified" view shows inaccurate changes. + +### Compare Two Vault States in History + +- Use the `Compare two vault states in history` command to compare any two points in the vault's git history. + +- All settings that apply to the vault changelog view also apply to this command. + + ![Vault's git history comparison](.github/vault-git-history-comparison-modal.png) + +### See Changes since the Last Checkpoint + +- The easiest way to track all changes made to your vault over time is to use the `Show vault changes since the last checkpoint` command to open a temporary view that shows all changes that happened since the last checkpoint (meaning: the last time you ran this command and approved the shown changes). + +- If you're someone who's always concerned about data integrity, you don't need to have the vault changelog view open all the time in order to track changes. 😁 Just run this command every now and then to inspect all changes made since the last time you checked. (Be it a few minutes ago or a few months.) + +- All settings that apply to the vault changelog view also apply to this command. ## Data Loss Monitoring @@ -115,41 +134,60 @@ This plugin can also serve as a tool for early detection of data loss: if the di - 📜 Running faulty or outdated scripts - 🤖 **AI Tools**: They have a tendency to overwrite or delete random content. -### How to Use +The result of all of this can be you asking yourself: -This plugin was not designed to accumulate all changes made inside an interval. +> Wait, didn’t this note have more lines yesterday? 🤔 -For example, if you add a block of text, delete it, re-add it, then delete it again in the same day, the changelog will show zero modifications instead of a bunch of additions and deletions. +This plugin tries it's best to help you answer that question. 😎 -This is because this plugin only compares neighboring versions (intervals) directly, and if a block of text didn't exist in the previous interval and is also absent in the latest interval, zero changes have occurred. +- The recommended way to monitor for data loss is to simply frequently run the [See Changes since the Last Checkpoint](#see-changes-since-the-last-checkpoint) command. -Consequently, if you add text that gets lost within the same interval, you can detect this data loss **not** by seeing a high 'lines deleted' count, but by noticing a lack of expected additions. +### How it works -A "Copy commit hash" context menu option is provided so that you can further investigate the commit tied to some suspicious version. +- This plugin was not designed to accumulate all changes made inside an interval. -If some lost data was never committed, it won't be recoverable by Git. So it's recommended to configure a frequent (< 5 minutes) auto-commit interval (no need to manually stage and commit files). + For example, if you add a block of text, delete it, re-add it, then delete it again in the same day, the changelog will show zero modifications instead of a bunch of additions and deletions. -But if some version of a file wasn't committed, you can still rely on the [File Recovery](https://help.obsidian.md/plugins/file-recovery) plugin, or the [Version history](https://help.obsidian.md/Obsidian+Sync/Version+history) feature to recover it. + This is because this plugin only compares neighboring versions (intervals) directly, and if a block of text didn't exist in the previous interval and is also absent in the latest interval, zero changes have occurred. -Use the [Version History Diff](https://github.com/kometenstaub/obsidian-version-history-diff) plugin for easier navigation through those versions. + Consequently, if you add text that gets lost within the same interval, you can detect this data loss **not** by seeing a high 'lines deleted' count, but by noticing a lack of expected additions. -It's also recommended to occasionally check the integrity of your repo. To do this, open a terminal at your vault's location and just run: +- A "Copy commit hash" context menu option is provided so that you can further investigate the commit tied to some suspicious version. -```bash -git fsck -full -``` +- If some lost data was never committed, it won't be recoverable by Git. So it's recommended to configure a frequent (< 5 minutes) auto-commit interval (no need to manually stage and commit files). + + But if some version of a file wasn't committed, you can still rely on the [File Recovery](https://help.obsidian.md/plugins/file-recovery) plugin, or the [Version history](https://help.obsidian.md/Obsidian+Sync/Version+history) feature to recover it. + + Use the [Version History Diff](https://github.com/kometenstaub/obsidian-version-history-diff) plugin for easier navigation through those versions. + +- It's also recommended to occasionally check the integrity of your repo. To do this, open a terminal at your vault's location and just run: + + ```bash + git fsck -full + ``` ## Limitations +⚠️There are quite a few limitations, and some of them are simply the result of choosing this specific approach to changelog management. + - No meaningful way of tracking changes to canvas files. + - No mobile support yet. + - File changelog doesn't clear if opening a diff view but keeps showing stats for the previous note. This is intentional for quickly switching between versions but may result in showing stats for a closed note. This will be fixed in the future. + - Only status bar counts update live; other views refresh on each commit because of performance reasons. + - Assumes your vault has a linear commit & date history (which it should have). This plugin is not tested or made for repos with non-linear commit history. + - Git does not track changes inside other nested Git repositories—you should use proper Git submodules instead if you want to track changes for multiple repositories inside your vault. + - By Git design, files/folders specified in `.gitignore` aren't watched for changes. + - Git decides if a file is binary (non-text) or a text file by analyzing the file contents rather than looking at the file extension. If you rename a text file to have a `.png` extension, Git will still count its lines and treat it as a text file. + - If some data loss is only a few words/lines in a heavily edited file, you probably won't notice it. Even though those few lines could have been important. + - Interaction with submodules isn't tested yet! ## Roadmap @@ -165,7 +203,7 @@ git fsck -full - [ ] Code cleanup and refactoring. - [ ] Improve README. - [ ] Folder stats in the Vault changelog view. -- [ ] Command to compare the current state of the vault (repo) to any point in history. +- [x] Command to compare any two points in the vault (repo) history. - [ ] Extensive per-file type stats. - [ ] Optimize computing stats performance. - [ ] Integrate the status bar and the file changelog view with [Git plugin's](https://github.com/Vinzent03/obsidian-git) diff views. @@ -175,7 +213,13 @@ git fsck -full ## Alternatives -If you don't want to depend on Git, check out the [Vault Changelog](https://github.com/philoserf/obsidian-vault-changelog) plugin. +If you don't want to depend on Git, check out the these alternative plugins: + +- [Vault Changelog](https://github.com/philoserf/obsidian-vault-changelog) - tested and reliable, writes a changelog note to your vault + +- [List Modified](https://github.com/franciskafieh/obsidian-list-modified) - popular, links all modified files meeting certain criteria to a note. + +- [Edit History](https://github.com/antoniotejada/obsidian-edit-history) - similar to this plugin, but generates it's own history files instead of relying on other tools. ## FAQ @@ -197,23 +241,23 @@ If you don't want to depend on Git, check out the [Vault Changelog](https://gith ## Debugging -By default, debug messages for this plugin are hidden. They aren't intended for the user. +- By default, debug messages for this plugin are hidden. They aren't intended for the user. -To show them, enable `Verbose` mode in the console and run the following command: + To show them, enable `Verbose` mode in the console and run the following command: -```bash -window.DEBUG.enable('git-changelog'); -``` + ```bash + window.DEBUG.enable('git-changelog'); + ``` -For more details, refer to [this guide](https://github.com/mnaoumov/obsidian-dev-utils?tab=readme-ov-file#debugging). +- For more details, refer to [this guide](https://github.com/mnaoumov/obsidian-dev-utils?tab=readme-ov-file#debugging). ## Contributing -Feel free to submit a PR or a feature request. I'd especially appreciate help with styling and restructuring the code. +- Feel free to submit a PR or a feature request. I'd especially appreciate help with styling and restructuring the code. -This plugin is in beta, so please do report all bugs that you find. +- This plugin is in beta, so please do report all bugs that you find. -For easier development, [define](https://github.com/mnaoumov/generator-obsidian-plugin?tab=readme-ov-file#build-development-version) a `OBSIDIAN_CONFIG_DIR` variable and run `npm run dev`. +- For easier development, [define](https://github.com/mnaoumov/obsidian-dev-utils?tab=readme-ov-file#build-development-version) a `OBSIDIAN_CONFIG_FOLDER` variable and run `npm run dev`. ## Credits diff --git a/package.json b/package.json index 6fefae0..d9f1af0 100644 --- a/package.json +++ b/package.json @@ -49,9 +49,9 @@ "svelte-eslint-parser": "^0.43.0", "svelte-infinite": "^0.5.0", "svelte-preprocess": "^6.0.3", + "type-fest": "^4.39.1", "typescript": "^5.8.2", - "typescript-eslint": "^8.25.0", - "type-fest": "^4.39.1" + "typescript-eslint": "^8.25.0" }, "overrides": { "boolean": "npm:dry-uninstall" diff --git a/src/commands.ts b/src/commands.ts index 9ad8043..796d7f7 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -51,8 +51,8 @@ export function addCommands(plugin: GitChangelogPlugin): void { { reveal: true } ); }, - id: `open-${COMPARE_TO_CHECKPOINT_VIEW_CONFIG.type}`, - name: `Open ${COMPARE_TO_CHECKPOINT_VIEW_CONFIG.name.toLocaleLowerCase()}` + id: `show-${COMPARE_TO_CHECKPOINT_VIEW_CONFIG.type}`, + name: `Show ${COMPARE_TO_CHECKPOINT_VIEW_CONFIG.name.toLocaleLowerCase()}` }); plugin.addCommand({