From d243915680378b68956f9970179529d46f720db7 Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Wed, 6 Nov 2024 20:15:12 +1000 Subject: [PATCH 01/12] per-menuitem preview --- .../internal/ui/bubbles/menu/menuitem.go | 3 +++ .../internal/ui/bubbles/menu/model.go | 6 +++--- cmd/slackdump/internal/ui/dumpui/dumpui.go | 11 ++++++----- doc/tapes/browser_select.tape | 16 ++++++++++++++++ doc/tapes/out.gif | Bin 0 -> 228104 bytes 5 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 doc/tapes/browser_select.tape create mode 100644 doc/tapes/out.gif diff --git a/cmd/slackdump/internal/ui/bubbles/menu/menuitem.go b/cmd/slackdump/internal/ui/bubbles/menu/menuitem.go index 41fa62b3..efe65f4d 100644 --- a/cmd/slackdump/internal/ui/bubbles/menu/menuitem.go +++ b/cmd/slackdump/internal/ui/bubbles/menu/menuitem.go @@ -15,6 +15,9 @@ type MenuItem struct { // Model is any model that should be displayed when the item is selected, // or executed when the user presses enter. Model FocusModel + // Preview suggests that the Model should attempt to show the preview + // of this item. + Preview bool // Validate determines whether the item is disabled or not. It should // complete in reasonable time, as it is called on every render. The // return error is used in the description for the item. diff --git a/cmd/slackdump/internal/ui/bubbles/menu/model.go b/cmd/slackdump/internal/ui/bubbles/menu/model.go index 041bd963..a4dbb639 100644 --- a/cmd/slackdump/internal/ui/bubbles/menu/model.go +++ b/cmd/slackdump/internal/ui/bubbles/menu/model.go @@ -126,10 +126,10 @@ func (m *Model) View() string { if m.finishing { return "" } - if m.items[m.cursor].Model != nil { + if item := m.items[m.cursor]; item.Model != nil { if m.focused { - if m.preview { - return lipgloss.JoinHorizontal(lipgloss.Top, m.view(), m.items[m.cursor].Model.View()) + if item.Preview && m.preview { + return lipgloss.JoinHorizontal(lipgloss.Top, m.view(), item.Model.View()) } else { return m.view() } diff --git a/cmd/slackdump/internal/ui/dumpui/dumpui.go b/cmd/slackdump/internal/ui/dumpui/dumpui.go index 08e34f7f..0a846ddd 100644 --- a/cmd/slackdump/internal/ui/dumpui/dumpui.go +++ b/cmd/slackdump/internal/ui/dumpui/dumpui.go @@ -47,10 +47,11 @@ func (w *Wizard) Run(ctx context.Context) error { var items []menu.MenuItem if w.LocalConfig != nil { items = append(items, menu.MenuItem{ - ID: actLocalConfig, - Name: "Configure " + w.Name + "...", - Help: description[actLocalConfig], - Model: cfgui.NewConfigUI(cfgui.DefaultStyle(), w.LocalConfig), + ID: actLocalConfig, + Name: w.Name + " Options...", + Help: description[actLocalConfig], + Preview: true, + Model: cfgui.NewConfigUI(cfgui.DefaultStyle(), w.LocalConfig), }) } @@ -88,7 +89,7 @@ func (w *Wizard) Run(ctx context.Context) error { menu.MenuItem{ID: actExit, Name: "Exit", Help: description[actExit]}, ) - return menu.New(w.Title, items, false) + return menu.New(w.Title, items, true) } LOOP: diff --git a/doc/tapes/browser_select.tape b/doc/tapes/browser_select.tape new file mode 100644 index 00000000..b98d6db9 --- /dev/null +++ b/doc/tapes/browser_select.tape @@ -0,0 +1,16 @@ +Set Shell zsh +Sleep 1s +Type@50ms "slackdump workspace new" +Sleep 4s +Enter +Sleep 3s +Type@50ms "ora600" +Sleep 3s +Enter +Down@250ms 2 +Sleep 4s +Enter +Sleep 5s +Enter +Sleep 12s + diff --git a/doc/tapes/out.gif b/doc/tapes/out.gif new file mode 100644 index 0000000000000000000000000000000000000000..da842e08c651d3367659ebb2b2dbe2c64a6be30a GIT binary patch literal 228104 zcmeFZXH=70+bxVCfixfxdXXMF(z_4{odBVC2puU(2N9Isdj}QiUFk(dHoZ3i6%;X{ zW2H&6@Ui!PpYuF#JLCIx&iKxE=C6#AKe^YM*ShAK*Sw>pqbVov*bKA;oLq>LT!NjB zgrAN?l!-)|l|)~N#6pt9L4hRPkfhjyq}Y?B%9o@z=!z286*bhAB+D!PiGWLFxd84P z1FAzvNlAg1V5SASs{z~Yfi6J<2mO&mMn(n(gCUnFx(U4m4+{(igF|@W&};BZurg4< zcqw4g6fk9qOHjioZeb}}!zj8Cl*92Qun6NAh>A|Xc`(CBqc5K5^b@xNP1eN1uZQVEiEk_Ef+n4hMrc7{t`?`dJz-@ z10@3k4Fdx$!(U*eV`5}vWJ1s~F*qUP4Zso%II$RbF-r4Gs@{QUd^ElC31X+lCmB3w!$!ipjyBBCP3*REX?7s(QLGL;atlh9F<6w{Hs zgp{h3M2wV|jm#y|17(WB@Zk3C+hHNk!a}yf!ou#{xf5}F{_fqov9Yo7U(yp36H`-DvlOGVva$*a3W`G- zi;IgNK73eOT3TIQ-O$j`($dn^)%E=O^WNUxzQ54l-#;`oG(0>!?$kX#F+MXhGdnx` z^5x6*eL;_wU~m2n1sG!p8dg_V)ItPoKVi{km5|JUBc!j3ba-kZ@kW3^Ytl zFse8W2~jc9E0^WKc?JXlNq&+D|5+P%TU{=Zux|C93ge_0zB{{Z-c zqzcTc-CWuq14atkjy0DJCLp+VA85Cf52r9ndajJMRE%bDV3JvNS}VtM_)Y3<$6Ko= z3&fl!9_X}HPv4gd__#9ORx|qu9Rp?4ZLfVp`_R9)YG=@*-}i(RsCn}y9>1@4ffN|IzGK=cAhNJf8P1! zU3b8z)#>M5-#+xkz}O9Xy7$+|a)caadY&F`&sFF>GI;Uq`=_NguMaaXo}YXp45nPL z8}{~`9queNIL!9G_;IqgKKaP-kKSKDP7gnQnEm6AiwhDmenKRW-h&VYM%5Cc;W9gf z7=$K2F_zZcgBZu?R!fX$4c;LpaK!VkCGzBZtR?YR*RCZCckZmEh>h^Cr%Ju{SWlDN zs$EZ4I^J2&K$8hNfLjgLgLz@bLm$ zg)aFwwu(He>$Zx$J9oG4`;G`~KL~t%WBXy~R^4_<`0?)cqewErozhr(&z-VFRQ*nQ zs?5ioicC$x-O5~Z&)up*xBA`c2f-hAYf?3+LA8~g0-klX)kU$C#@KyzBrf%$_+z8} zUGY&`4W<2|y7uFGSLVlofJAEPoy?&I9Gdv4)dZk8DO?fmq(!4Ol_}h|q+B$_nvr@S zEI458h=H46v%WmlLG5EG^hjtRf~|ykD9RV-DEjP_M&Kh-i*+B!m>URa5-wcy_2~uw z=x%yqIE28kJsjhjv?kHuE5nS!b`=Yg(4!ixYGESTuA>x;Ar&76 z%W(6Qn8^3!bS+i(>*;!?mgw0=uEou>%|iDlXIl?KzMgHDCWxNzR2JMk->t2Aa{jTg z>+AWa=26ifpWENu{PCrG`^k^5Jttp(eCs2>_H%ED;nvUnF}|js2UD`&ejd(gUHf&k zXmRV;_a*nHU&kvU-+rAC60ZF|-6**A`)sGC>G%2Pu5Z78?2TT#_<8i^*2S;W?WT+0 zKTp10G7w%$LayBhVBU)aV@m-HV|`=_dr^qgQXrppKh%0JnsKU>Om?iFGHfq~16~H! z(jK5G-izhOmO(AX2I!yd#fhbs!QHh7ncwck%T1M0hKvnfJ>N?}!^;sD3ED$k%=?Mj z*m9bJu_2VgeiAOVoVG@LSkQVu*>b9!zH4k)G;BWw53gVx)gF;3-cR+wRxrOA8dDxs^7(#7B)pP?TxU#;`5-e9Tgk;RKBlQ~kd>KQ$-}2J zu4{deT{u;Vk{us62s_9rg;()w=}Z_GALQ0zs{}2^C(NH6 z4H=)bKR+nwgI9|s=u9~=9~O>bt0fA?r`!|{i{?_RrD}AhJ*^Lmm!_&^y2ht(h8^A~ zz-#12b!PmF4QG`a3v zH1km@Sie?{VPY;`;iwFeR;$jZ`!d=3sGM=SR#SH3WqR0A1qVf)wwCUEcJWaqzkZ#r z#l(F6v!g1pv^uQ2?n3d~qiVV7I)jjjg_8558Z<>cEYP$MIci=?MI|H$MRu`P@B^M#+l}L*(oCBozp=M%9cbe>>ADe(;}WMmdjstLE>6C zVbOHikiQ>T!S9u8sL@T;A)Bqgy14K621hETTDFLb54XyyFArMWeB18eQCLX!v?xIO&iVQG zhA#K9&oQnS;t&bXVrj3@w`1v_x;pn*P@1V?M#WE^wppodR36GcAEc{2Ch|_o_A1>z z_|=@YN9i}p>-%AC^3jFJO2gpin&PF|KU6N*&aTt`%YOd3a*F@9a(_#izI%U385}Xq z@ARY2rIfjPT?GU8-DvX6xydzx-v(E^>kKk#-*2(1&c8m(yB*p{rsndHmAEp z`6{z?OrzL<*y+#1aS8<)9*pqmoa8tKIH;4DAxu3S~ z4lVLU(EbREwUjiiehTNy5ta)n=>hOuU2;we;QGk}P4!=cKpISUhjELD0HdY2 zk(Znl{?D9bT}!ZkaVf7~56T+E_oo1hJWLD4v@uB>0@g!`ExHAwtkhwFV2N_=Y=)4% zXj#fxM7og8vqta&A??PGl`}~6VZ}_swL3IDoca#WudCB-DJf*RtMbUYc)V}96vOu~ z3RlKFk38n1Waq-w=q48{Ij}&9pl91#2$5n1Cc%co#$2}QiRE`%g;(XIv@556F;`B? z-Z^$6I^K9)Ps>#Od$UbTl=bPoV{gIZkM5vi-}AkF>;A5)F;3&mcJTtL)do&fWhyj* zZ{JDY4fm#v*V)sR$<~!HkU;e&q1&m$BkP^%`%2%loyQXU8JwHFbhm6TR;vx!)>27B zv?otySPv~YO*<*AvOYlxLgJe_D3Qt>KF-0gK6P={IJ{hiv3~ z-FzzX6ZtRXx_?P7k^fAtpIuz$yHku*-jr*wG(E~AtvXiRv=L_j4M3Xq`vvi+kOUo-BOglfQzY^L^$dj9!#cXi_` zT9LI01t68&o%3Vjda$U2seq!?a!kmLQ57DKiOmLc;+|QGsubl}HPxf1zF!ZP?}s0b z@P!{q-PW9Ud#LP1jqU0Hhm2O=JMAljIM%W%zcs!YI3R0yvMuxRE;;$_;!23u`PP+- zXGX5T`t5=$ldc&>MPH(5!~m$~mMsGhdcVER_Dg*@z7cnLAY!iq_$B;*Q|L+&LRsm=ap%fUtSY44Y6q{JvDN6?v_Qkj{x&iG*H14}WT? zbaZq$Z7DId=B|A9IcG-cmrI*l$WkEvL)1!T&Wvm^A$nR+k+q#vkXUJwE*<$ZAbOhr zDv97rZEhFdISSRDeKH!^MlnDhxi}{&@>Xg8Cn)FVKJ#>*8*xJj7=11RiQym1eypeQ z1F34t8OI%kjev=op_b-n0~|W9FG2&5egJ(0;6m3k-$LC)qr^QXmtZV zjd=T_ut9axMt!{`z`2XIUX5jwlsMA>qQ*Q0W!^aO=Ii_3a6;$qLc+HV`a_x>0!>ozvoa8#9p|g4{tIL58+Grs=~9egER=Ul6R*L{8r?b?S&$=7$~>w@L9@d zbGFCGohJ_3Mtx$dwTOn@Tp+}p6;)G(Yg>A}mjg~5uOw{ngDGPu*Z9hmKlKqG!5Nbm zqQcl;?AWJrri063&!#HIC@ec)5@U$UJB%sZ$l5Bsn4b@xdSkN_J7BN|%emr=6X-3&)oBd>@KEP9I0R9rd^`XS$e`>CxwDq;%*L9FuMWiDv;-9=Xl=L0an`{Oi?_BEHwx z8w1G+-psw5lNMh{Wg}Ksu^qcK!G7N7106Q-Iq)r=Ck_kV04DX)KN=d|+`A=c0$&2nQhu75i%)5fj+3@G(77awz`4JXbgW&AS0!;ula2>c15vNB zF{707)gESdF{xq$2rx)I8j{YdV`nF%`_e?qytr#U-sWo1X2Dq;g#7v$A!n=Dv%W4v zfyb2z#r!VvaQf24f}~5+FLx~DgT-5-A(t)|f0_5Mf9-Z(|LZ;e$v0^FZ{2Rz8XUt2 z6Se)vDZ~2I$nny$6iJ`5oUg>>(qNtpElCh{3K6a|i zawq6~R%Pn^-0_@8^pSGJX?4=UsmxHXkE}UiqJXNT+wbyBIYe#{p!TO*j~8T{Y!xDi znnY4&DRpIg&W*;&uAA9O9HYO@a*0fDJi}L5%d!qX7I?nq+_gJEz}R~&8M1&(1=rrQ zR9)~WvX82hWmj|74qU*WQtBrap#eoEcDhP5os7n380(j&$?bQt9XTyQBN5* z!Dr?ACT?jd2=z02R;6GM6$g2@v7XKj2xg>W)gCK!09%W-#GsBg2B#@d;rK+wv&0x6 z67T{{m8DruOLGeg-=9uf>4{E}XFiv9aJ7BQQ&K?xm;;AMu5@Np4sjX;<{P`5Oe%kG zPs+5>66Bquyn~fYSJ;kh(?!J3Bqd4Dm-ed{u4C+T*Ees_R%c$2(QX1LC?7aPzWI-DI%g6}Y2?&Wjo-CM|LkOsn#5Hs^1t^D92TO$)y;|#L3&?n~b7b&HK|{Of zC$eVts=V*o>+dY6L6NDN>7NR#TdJl?5nJ$aL^lR`J^WRCV`kKLK`lqGM)s6E!~NRZ zXA{H=0Ras%!8^xNLEr%%;q1Z64`iFnbdTgiPhXF7W-Px{`ccbxd1+JRkg|57wc;@~ z-66&pDjh-=OE6~y$yvE&tT8?q*{|Usf4anNpmm9Z==Fc`6zaT6Nk&o z$&fSaaWYh1fw#O;)n4g~y8PtCojM9QGq8_oLaBQGo7hM)}_ZH7L_J>BVCDQ^X6O0a?ZFqvB05jy5+OGyf5Oy5mM zJ(=|f0S0ojgci<2}R4Nohdn%3TY_WA3=xc|DpOCG#Cc70m*bgSW-T_apd@6Rz!`4AJz%cQxNW$Vj?ZeeMgIS?wJ>drgE!SMIFbx6Qf~5!d|W z63!bh$+Twk$L&kgBBg+eT@ab>HLr0%!QSh4N0UH(dGeKUMBleEF?AhI*4f?je0i`h zu7hek{PoGDJUPkm;(+a)uiC^2ZF<9mFW5dkzu)U;S2+rlKaX5rRY^{D&QMPHl4E%NEN=8eXyYz-Iz52KgMjca ztT4Pz+`IHE-Vsh7#&UMhTEuOVpym*pJBQOy*-|y8Yle>zSH#{w>~=_&1*zIAfBPI| zgSgwBV<;muhSOL6LZDXHlFelxW^i;2(Rw|(ei#Melv*zqFd$~nDiwrt43byOIUB}W zF@;dyK3&3ONHR{MrnZhc13sba_W zsG7A`5JO;;RHs2LGW{dFoH2(Zy#eWdERY6U8tatbW1RBXKyjS+%B>d&2^^`#z{_-s*yQX9NQ$Tc{KS$@v)RSnn@T>x^>jUxZsyC532j%0jY$lrU z<@rs$bbeRmN-N3rX_os+A2+NJNvRbQ(Wg>jM`Sdy;z0(sR+&j~`EuMabJY%6|2>J- zMCm-v@Fh_pa5FhdB9u6(b<4Kf z|Lko?9@pUOwcBe0)6U_$n3)08GXjOv4qI=~qu|)PpeM=iu75cwy5Bx9#2a)z1Ul>K zT>FF5IM{OX#LyHRrF}E7j%#?Rj!BUu;>u{8QaRi z^t+LgU$SARn)+{lXO%;gFnh%d+tcN$JRZ5u8P@~ox-%U5rubf&auX8X$e;TL6slr+ zvMBLQF119V7LsU4gkTzh4Y{#HntspBj5=L;{j=CWpx6^JH5@EH_7N>699hI}&-tbT zvb1w)tts+L4N*wU@tcM8y>Cvwe(Eh53z3MuobcIc`^5<0tSgG)rss|mh#tSL`9y4N z4wW)-sdeJodgD4XQq}j;v?DA9UStwleli7 ze0(}wP9G(D8%0CQdt6Qva#-=BqG;;$}0#mdH!3ClNxU?(aPM2Zuy9*ZyrJpTd2&(2q_K>ZhSJ>i{BiV=bs>g<8@w`WAQp*bbOz{7Yr7ekl-)=XK( zU9T*$gHJE+k*9ySy5z+0t;?C$VfDvZ=yIiNkNi!m>!({^D`szEE;=9IJ#2nsd;J%o z+#!7D3vDd-6076~6%+lKY3Ge97aLPdEFOS_{MpJ>3vp%Yc#T&`4EI)G8IBL&R%T27 zT?!!cix5NQCbt^8u3XzlQbEg?OqVYEf%bALO|<-;VavzW9s{|YO1tJ_{+;=B`@h+u zgv!4!{p}}|lr(>Ck?mL|@h@j{O549;Ae~Y*zELjLMKcF_z5apaez{(Z7;@qP#He!m zK68KscD${`Fh!|+xJJ}8{Gc3h)LO#9!Nk8Ty9rkBje5xf087pN_e{8&SUhG<>tNRG{Y8 zQi9>>@vr)3DEoDlwJh@ms66~PCsT%Y>hyg3O6pq zQIvfQj8d07{Zsra(#h7KWrrlFVoo<6bWtgHulQQ?ogEEMQ*!^jyeH14W`0bNP7{c` znQSR(ps*e5Jk4(=e5@(Ggl`>0#G5*&ajC-JIokriG^;V(>M0wB%1ZGfkld+=B^69N zOJ0{nvKfLV{FhWF4nwW=SsM+?L%#6;$kL2stE(`qgKsbRDj(sQn)}4W9WQNom&W~( z58ewSR!F`6YibgO_=9o&`#k{U1@M3IR4@0kC}{q2WbH^UbeR5;ror<268qyRVQQ&z zdmkuKv_keDqqEljxOX?&a3=NcHre2^&>OdBS$RxkW}ZhzA!2 z#yv@ge7Fa~SqAC~#=G-z7XZLNy|@3ZL(G3Z?qiY*PJx7`lFRVWmlrWHvEzNwU~WN| zolLxX5-b7S9=cCZ=V9RtZafj+(2n7C^<}m4pO?SGry~kHqq4^q!7t*3$PZn{@2#r` z|I{(q8P2|&Jo59YzsJZu&f=>N&u+z;rus^)b{G4i9&p%RH;(8I+yb{MyOXI-`g>dE z8ZIkL3xo)2@O(TXPIh%&`w)J%#2?kNbZ~A*^_5SPB8}UimZ0aRK@7qm|~l z1Aj&-Olw{~WF4iO|gh{QGEShrt)7e;2KER_*;~v{FdsiB|9bh*sVR z5!+{>`5)0r|9(9?`X3$th*r{neczJYN>uSFHIF*ZxQ>t3yu8jN-zIo`Tg8aAe~|hz z`ndCuk8@(MREKV2u0*4N75R6*+1cXc&r@@9apaPis; zTntoj4n5cqzEt+<3BLJly`~Pn>=TCtdcOf@{1%b$#BZn%RXwNKP+T3Pz?4Oqo(q`h zeCG+%<+luchM==-bo^Q;L&vNo@OW`PSuks*U!7JeR&Dyl>DBU>7G7S}1hGYQjt=!G z880uQcSR_L;-~JXy}=SAFFtkSdR(#uqq}#i#LQ8vCXMNqJg=(lJYrn9?Xy3qfZ`sL zYk{GX;#>(1{1K5W?LvbcVLDMupcK!g(U+P5w)t^N74G^^V@JciOT_e;swe}G%CS<} ztYtM*P@M?xyx86;sY=o$cu>Bfun}yehJEgxD7rqF;gu(XNKPJ})fddGD#%?o`Xw+@%`Y{qu4ge`b? ztHr4S(l#e-zhcEBc&IU)CED4#;`!X~Lx|F!D0*6qe&T|}7qwg6#z5@AP*ptDt;}U7 zNgs6)magl^-~0m{LOuZYzZ@MIaXpb+3zOstMT&f5lU{!K2gS+zEybHENdca%2_2MX zwr3KR{Ba~8aI&a6Cj{Mgh2k!vo~ANV6W5vtMNmI?tt|tJTjJ>^68emOk+`_T&`~(; zkuuLg&EZirbb*;rcLavv!6}AQE(_*Ct43}F9-ubIlY6p?+=z)bCciL2H{f;&rgyXF z5jR|g_?em*`n6Z#C3~c7vAQv-LWy<82vWAlMzhZ7JZK6+5VbmCNX_a9&+bFh#p>!x zTi%y2aE#&a7Xd_VxQM^i z*N_|5N#L3i3SU)qP;h#CgAt+ zrLGGn%@^-o1pH~dZe;nxuc_+vuQwzLCyr>p!5P#o-p&}iI8mq}>Qu+#3=D>dlvS41 zz04yfIPBtMFYtg$A%e`nbd9PAufgBCM{Yj0Mui9$VCE>BOI~$s=$I0YzsY3yUA5n- zWipOBHd2Qz(^wDf0U8Muhm}N?lNl1C_{yVNoGyUQrTG<_9Mz{W!l469N&%XJYnjm^ zMp2M9#Cu`mEOGapH4`qnHD-@8Tb4=^h*9VOT(D#D>hC!$j-bj>8zuhIQJ5+FG&kSr z^74e>?k=vdzV<+sLNAvCHWj2PrArjLt*J^L(YGXu7plGockCR;s8It{VN>7Ns08s2 zp`#6{PL%_mOesL<;z%d$Vk9kTRlLyKKHza@a}R5PCZ`j^21-8of(bUlZrsPq{n^QR zYm-rApihjSLkuy_$UiHgy3SWiLc=&yC<@rGJI=ZW!Owww-OEx^dASkM5w3#SQBJ84 zZiEC{jY`sD)vAZV`JTrn;xpQ=1T=U-qZeB1w%x;#6co()JLSFTVkEi3sTHLq`mtx4 z-)x#sDw9x-h>wuBO)66ibE4b;(u1S@gxT5sq(_6%GuZayDzbYsLR7bAd!46UY$20G zu%P=6P#x!73Zh`A;!$07>X~C4*4C6dFC`TnM$?N*1>WA}h~=AqL-U703!l`I68|oq z!u(wvbxCF|_mIcrGrK6(Y~tXO05{_dUX%4E2k(BiEF)p7C|+J^ls0lLXu@}xE*2N( z@VwdiMPZYKU{o}H&Kt(9;SPy##~5ZwQs<$uE{WAiCCtjgK_*h%2NVQy(zR1)UaR*`b=d&Goa{B@Zrw2qq-v*? zLaVX(zx-kk4-CxTp?O%4&M~uKxC`o9e7~&hyr;#*)uf!1PIMT!^R1bA!yQzNZ?~%Sf1EzN3_?A7(ik( z{3RL|jEgLd1eXWE+5u2H7f8e$c^%sR1%m7%R|6XobKvOy6ll%-Cgy1z7+(-Hf>#wl zkh_Ki#Q-66fvQrGfD2k+$)4wnW}q!C>2oAS9SKN83l!oG&&QE6Rs#IyT&9uASR84o zm|y)UJQHu?;12}63UveU>NNw=&A^a7@?Zj#u_C%f14`o#Pb>xSM*^h9z%RHQW)P8- zh49G>^B68IklLKuTqIbA0Gn%uM`VJGQ9gQoaMDdE-h=e{x~&%u_`6g5iLYu>JJ4&7 zl+_&mEEC?f39a}}wHP0<901C;1jv-yZ*_`S;z$L=z)v?J8BU~*BtSHR>|QBZ5ng^0 zPcGR<>Pd2|(-MFR1VzkgMC{$jMg#bLUGm%R*mC*vXi2r{<;phti)N~ZE~0E6cuClHYIgcyW8`&pZcp@sZ-GkhR3 zYoHH)kK;xioni-$RDp#21sZNyA#H06$ZL)@;o;2&2Mo`_O2l$X#9+e&c-!ThGa6!+ zTpIG|0dsVowNMF9J|;7y&9BP0-B4r$*dACR=BCLVHZnmvSPL|OLOII#!d73y>Np@VIMSNUf{jgh1mT_;N7MkXC0YzzHy26iA(f$-W*7-p zHHXXcpd`gK#GA7_^Py6^kf&95Wf*03`XW)gka#X!f234XC0Qjtk5U^>ng{uzO_2@; z){xlVLy#SA!UTQO@=5PYEyD^600d;#+oY=sr-<9t@b*$N%?mux0uK!4_h1Qtp-D`P z~XsJG4h5U->&qep8j8Q{}>O=T^Od@!D31K7#jN*tcA$S%hfYnW)!B$=oXwtX5 zxZ%EAYZi`lV-nJbKtEc={KEj1zA}M5@@_LYW)NQEoBaFOXWs)amJnx&17`NYU-r3{ zufv~eq$%~~j}RnP1yQ{tkd^?$GbRexE`X~xKX(_|_+}!$E0{S!N@I?ka)xK6Omf(^@w#S=i)Wz$iF*no znZ=TQ_u~+iTVxp*8+>;2719MTLa?g@P8a77jN^dS);la$0Q8vQ`pG~sK3iPAtpFHW zq(&M0pMaDyiTmCO~Jy9gIohwXP5~n>dO{K0{se$ot#MN znbO5^q~RWLYaLLHCd|khWo@ElmUAB_k84GcF5f^bx&fcgiPP*rD3;V_e97-vx6U%y z@Z7l}?|BmzLM}J-#E`>uznaWP7iQON_WhY*aA|k`AY2d6Ph0Jz5(%7CkSf6|J<5mb zp@m`yLDmZPT~&_4G5k0LX%=4ILbJr|4k(CG9w;vDUGGpLrs11hJeP2HBoh{l2Jn=U zwb#N&#%nB3YlNQzjW5U^THspqaXqG9Kq*FEx#ztZp5VY}y)0@$dN8U0?fpd8{$HmJhScenlKR8<~lNTq_#yS z^r5Veoj-8C4nD{z_=rYIFA;#+>k6D~QbI%5PvUw#fQftJ2O98a8UQDSzRF5vqf$U4 z&XKZ~Y}wuG*&dn3UQ!SDEeh|Pm!&W_-*6jd3Ja?!{nDqOgQ3CW@InjHY&X(-xaSHS zzzxQF=sTZIOVY$X#YF-{0!_XXZ^%pq@&A6B)4tihU+kKfK4TRY#bfkkDJK%bLP)cBGH z)pVpVHqc|s$zwt72(c#!Xb}O*%aZNv>^!dxy&DA4!2!x}`XwCXVsdxyf)l)DV=FTu zr8o@5cXcBkhysG_v2?Ugb55v?yl`mFvpvU_b$B~IT(B=XV+)$;3+vPfpZR#}jt;4X zFv4!&X%(JSTFj$zkT-?tcETKaOl0%(;$+MYG{0}SqHeOh0+!HBme28I5nU|Jac|)w zdAgE>0_`qXqX}<}41O>Nog=^;BY~;))jVB^*?ldYK^Vc(hJiW5bg>kcwijGGHN7=( zN8wB~zEfZu8lQ)oBB9tn?WnhX-Pb=s!O4pY$xDxSet{>`AOYGHaWyc)$^^--=t5kXEZNDGJ%2C&)Vz1*d9OTdXLUj}s zt;U;j=%F$1ZD-J75jGA9G*7%M09f3jv6IAy*CQ%8h{nQ*)*h9ZMqq4&VQ(e~gOl9a zQlncEvz@O9XfFvZg{hm&DUbkD$HjL#eP^1*>O8#qG(2Ydpzr{oSh$VEg_cwo-GWIa z@Pfvr&;-hlu=neOi^j@N^uf_M$>h}gK0m9M-`+Q)g_v189&W0A3u;~QdR4yg;9+8@ ze(Af|Y4MklPg8wfQ{H6BG|6H$aa4x--qHuL>%2+9I#`kN8tv)c3AMS)2DUv=&BnPZ zNxp~@1Jc;~lQ2&U91$%!AnhD3Oc+>Hqz>1DP01X7bqj_@gHXk=ON61S7^x1@~vbZ&R6r8 z+-(bAgT`}_yBceT&*)K<2RwPS2C*FxA0j}`>7j(=T)9z-9R6 ztUYpHHXftQ&k<I06ge)5V`*GK|Mx-@sJ$Hztk zm4-iA-tQs*9zAlETgmM6s2L~(2Ogo_>sWXzs|ydgaK$Rp0f*Ym;(VuWfyiEbB`4DG z${$fNJ%S|oT1gI)>dcXgP(dzT94be_7pvr6bG%-JPe!aDZM3w#tHpcr{Uh~*-zA?d z=Ro`_mY64_60%oP-TC{ty{ygf5fFAn8hr00_}XU;yig$zg7-+3>z1GbPECrS zk#nRQk_+hM(jj#`iMd66U!Bx~mQ;jK(%I#t(<$7!UAI3L&AT}GlM*BZ6lwtKvKxTX zzX>(D2t{5X>b{+r~%{ zCu*n$Uh{7TPj7; z8f%wRqFP)j*CQ#WqJ{1LQfbB3qf@DmfA9$dG=%6=Dbx52t7$%uw{L1?f|g4nY8RbN z9`m_o58e5`gG&#}ng_C4?%@Y6V^^A&Lu;pzG&YrZR;vS-iBvw%)Jlz5Cx%u{DFT76w7 zQz?E{Ebdb0y{&|q?b!9SSHLptt$v0cY)(JYdSw4A?D)%j%md4p8CxgczkImH8aK+} z(Chi~rK8YKGM;8MDV4gIDu}_QxxZg@a!M7#7b~2MinMe}V$Rl9Lqk=7;_B2|JT2-- zLtF4b3eJUkSa8a7Es5T}vPF~SmM|iTBf1Z)#eOAaw)`s5xm=q&L)e&uCm38l#1UNj zO=~<>&l}AD@{WYA0JXDIB3}rjleo}e>eN{D6fJn1lh^vNMY!vMw~hq$f*<+i%ijYT zhGM(r)5H1gIXWuHI{~Ufw}n4njH?nQfo*3JAGwTm`0|b(asCtow{XTY=0dR8D?Db1=PuF)lB{Pgxkj`_$Z|7sHYXYrS|Y8u$g{cfQs?K| zImRM^xzh83@QNTK+({;#7*G5dy#Wu2_-3|#-LwhPPGxsNnP=m)irL812M)ntUk1?{ z&GDOyp`MM=*?_WqhjQ;6>bIomt4CGXB$%3>mPT0g57Q^{l`t}xK3gKvczNrDycP|u z)6B8g5T%wqmvCE?x}2fnd9izC(H5gTfSiT`Utd)DLRxiqllnaRsF-MY^XXE{X+qz2xhE0-_u?$3%`PpfzYd4 zg{>57T=_RVulj-IiJysopP5UYNUPAhcSbzC{l> zgt_`%T1(WNlm69dEc`Q%l8jjt!+aqyOg70aU?dX+2aHHk5XmCZj$KPkSWGJ-{Dr3* zrbK=wT;i}$ESHlapcbSd2XLSwsC#Ti)2cKnE)}8k#+l>)yjbl?l>y z7X}NlWQ%rAFij2Gx@uP|(! zq1HcO7Zn&s3`@{M(%HZtQGPLb#aEh0iLYBM1(&%ca1W_;8%(IBhf9jfVAi0ImXF?o zn(d9MT+)^uRdp>Bv2DQsYLOch*{?INx`2x#*?c#XW2@=SIIDv^n+g>cYqosrM<}L@ zzB5~${H9_Q;L-Ni3p2(i$<`cMIl{(GD~l#99tnO?V=3$~J+C)wHCY#Rd@LjsIg|Og z>fu*&5xTc8tql_RM0wO5$~03(093W7!`FQMAnx?W)D5Q~G2vjPh~O)9P59a>(F^Jn z!}f0@^1n5NQJfveOlx%2a{!cY*1F|hQ?g_EH~weAI759ddez@?BI;M0bz% z&ON@fBiexDZjS;D9^7>-?idSTcjDTjbaa%byjnQy`W3@yhSgs23by4M55UH^zOM|k z|9^0D+OOa;s^qGLCFgk*ZP+bxQ9(*mqEeOfgDoohCkMWL0=KtpMlLgg1X-^_-N#_} zzTKT91Udp2wO$3T1!9O%lp4`J-q$F0&5LGqn%ArF7kvKV2!tcLWAyDrphxkB35((t znkaS5N0H+uuXfqZezsiqu<7=CJi;JS`K z!R82KGE74-gDGNR3JxZ|3!1<)FIJ%l$0C95cE`JBrpoG0RQlFH=7kH}X9{VU|9GTw zU^OaOEptnueiDEvdMv(vriH?IiZX5!5~oq=#sP2|{Z3PDQ-|+q41-ttq#q;?H_lgd z@>0N<#xw3X4QY&GO+&cE^{i*VW}s{bU#2hcj-d$poRV?J_yxkThVOHxSGXS4;l5!Y zG8nQ3^#g`sV4PT}rS|ay82c!ui{D4tQC3xvRFhy}T0LPy}i?wciP_yi6#gua0u|L)trIq{V8 zLj_yV94xE`Kez$-y21;3omH^B`|<$3K1@W_d4~AW z49`j>EWDr#B(jJ3zZb*>;#-K+s<_trt&AfR;+Y1IvnAaMjQ65HDD1;)!-Zz>nJ3Ib zN^~h)$e&{X20}E2aWVs3V4X;89g$-QPcelogq~Tt!!X&GSCEDa#KKf!Gnq-93wj2^ zxxw$_LiWSJ2$Z|QNu408zf};aX_BE?;y!6uLMG5Y=s7~~BaJQ|9QeuP{wAc9o(uw5agR@_(iBHjD1m_XQ(y4IR-I&yaUsc|EU5Q2P8!IOE640 z!Zv&cn%MztyQIn)0yKD}VTcuos3Ya!L5V!5b=k)|>c>q{HVA}Ac+^G&vy{v^27!u* zOTog`xuITB8uh_M0Ky}Qpor1|66h-kB(fi15H~-lA6!TmfP99SLjyc8!1$3HB(NTh zb0)1)woAILDloubFeo`#1=isoM}UJiXajVbhEABUE`TjyxP&)ogByzl*>j}pnFPwz1irb1 z@lyz?1fi%Sj-Pxg(4XOhzdg^Y`@SeCQA{8|Hj$8#k3(*II%a71356j zce$dMnub-71JUvWRB(id6NoPG%ssdxML>f$cmp(Ot5^UaPeTJt;G0c2#TXg}P54en zK)+G2&LL2QVZ?+sa7*_h{28iu3s zPVh7xwY;9Te9LBt%YV=U&-6fc?9MkJIEUEKH-Llh!GsTOgSZ+WX-G^!Km+%j2IFj> zPG}s2K?6gu%?A=iL$tV6f-Twdk{!?l0Lr9Q3_0sO2nKaf2>niim_=!T&Nk=-)Xc#y zcm-52gzu!g)e)d7Xaf+PI8^XX?_?HVxdhe$y6&8W|6hp92x6U4fCDr*%|!$=<#`1( z=mY@z1Tz30&_V+BWX~6U&r_T@#q7#aNJC%21p66=N$AR0;3gW65$eL<3QP z9XJ@%xB{qQxP&h?1tMj;N5sP1vrADh&V7L`Uf|9)s4W~Ek6`IONA1o_h`TlcNQ=B8 zltcwU_)a+()n*VCp_B$&fKWrgg-*yp7Q&<(=$Yxm1Jz8t7&-AnKZBapuQCVRaeUUNonS|6C zE+n`CMd&^0VHxEy#~TO&83@MZp;mw;#V+sz|2(ji#R{Pv_@8FD1R2*n_2yNZFAmF#&@ehR4axRFr`?z$Ft1*jG3yJRlrQ zVA>#9f&V#%pnHgINgw8HE3}n{J&*w=*p}al2)zvgG`J%_Fxtd|RBkONUo zgtc7(N61E=ys!CuhLq6}7NXPZG=r>V+r`4r2@}v~c!o{zSsl@WWbs=>Dp|e~rH$>_ zk42r3Rgwi2t{XV2Xws_haRj4{lJV)j|2=?`9SBa2(OWq91vHc-w)KMxve!_YIH8@I z9>utb@&lv!1in!sBQ?gp)e+UbT_=T|E+}0Clu`5wEH7bL@pq9 zow3yog6}L6&5Won(GgAU+M`mQOIU%$G9DAagcv=kN1R&6h1~z0DqU3DqYA2sm?jq0 zgy2QnX+Y0}eNKXH*kBA9_9a+NASJ!UF2#aCQGgOwQJzvlE(PWVI9TBYEx1JuA*S7d z8yJOSEj`Gno`|yDqY45Gvn9wQ2)oje9k~G}KpjzFUx?y`H?Uvq#E8!0PSp9th)oD% z^|<);vt&VGX;5L4ZQ*B;oB|G5|6cH>i9^pm6BNO?TzVBb-yH_vU6SGDpne4snvE#K zlfGX7n~M!xZh-?V`~`wu&O)VF*pwjHgzG7xVP?!}FdR{u&(FPA>yg4L=8>+f z-hTdPXA)4@(PYExKwg5e|4Y6eO%4K1)|nNmtdRr~&C$2C7zT4wLsm4a#VVkKK%G&zfzGm?8AGlGm4jRM188Jq zf*>XbVn~3*(8DRKb(tk{9-JfHBS*Lajytf~aV1O6=U>?8gtj5W;ow(Dm|uw|bo^f> zF~Hk&JwrxhKTzc7JRE#ZCCBri3p{2w{RM$q+|lLeG_e$jvIUj4YmXd;AEb;Sz+^+9 z71m8K1Cv}!0llQIUiEDfp0S||z9MpBp=J<;|CEE5J_x;5X1TgogFS}7KGVQH$qmr<5jsOK5QM)r8v2%g8Jd= z9S)!sARklcUoezuGW>-fY{J0i*Oz)i7L5hNW7X8Lm`T_Jy?wqI4bUd;Y=$ef)p5dI zE)x1##G#f5wX|uQ&O!oY2jm@_%a33cO z@SphvBsJ`F9vO4i96`ebKWM3ud*|j=66N{udxfv{DUxIia7nC&m}*3W{e=|Tfqd5Q zsqq6!b8z*OhK2SNh=OW_SQm+=iHr7bLj-TfRyN^6Z6@+)v+=A3GQ{R%{?kwIT(f=-vP+A=RXDW=)UpKBjIQ0v`%;#5J$(08|V_wE$EiSEQH>I%V%5Q z>og8zOYsBfSwID5aaOJIn|_9GlME!#&I^<_MSz13+f~UO0z*^tJeLO9vJ~y?Z7>>b z2RBEk3WA9XO@xp>ZsovLSHQo0Ksnd}gOx(}S;Q(IsW+h4=FM{1l}`|I?BRBlc21Lj zjmjiS7v@%QFPY0@*tJ$`HC7XaWYMRIgU?wk(Bz>U9+^0Q>=6%Y99#<){VBcEQ5{|& zoEMiX|F`6uX=of&2vI&ZpEMawV*iI2n!bCtLjB&C<7HNdp{&HT_ml^^>8Y`IPjCT3 z0!+w4VA!=Iqh<-81PZrs497|&Kvy|a`Bnownh^0b8Mk4e_|#ErsB$ZKMjqv19=d^@ zyHQI^5BgT)KY*UTHz@c^;3k+MIldW&nqLK^C%_|j7cK6sIPcqmml}hA?I_Xc>nrTT z^B&I=pU>KId_1Zh28OH8ps0-@=w+>od#xD#DB!an9LlXDtso|s^KtH$EHLitrg zojoUNEeDJqw^U#;glxn$mia)BL-ZX`bVlDMd;W)4u==addY1WwzQG_lVN7~p(1eb%>|}cb z)TzRI|G;^6L``(D(QXD_z(SYK2*fobAY8FM3t0D6}ZLr%aEe6m@H--#Ny+c z22oWLMKi2PMWb+?UFA4;*f+<7;(mxEv8LZaG)cpSl!>XFLuxZ_jyz#gIToikHG@Qp z+*qT7+{iplky^N~rhPJ86A2!d-jP3yZM3RVOgV)c6KD{2iGBPXrUft3O!C`B0ucn2 zLclaML?_c&$DK_3J+?zpwg8C4CmNcE-ZZEL!9);PO=HVsEQO|$g2>^gpGJf|c+e0f z#&QsO!%U(@OgEsClUfIXSdCjXe)JbGXm~h;AI%8$8xv+|hRJP-DYAnc|HJ$u#}1BY zRRt2+t+JhMw?Q<-8-{!mOEXiUaol&9Xm}@(Au_>|OEB36A&{GBSjBNSO~XqYP*r&h zAivqQTtgULCD$i{+J>i-3RY2t7LN_lg&&x#GR!k65sFYtz=#*2C`~C+g-oWYh)|W! zM5-Ga4ZdQ=kymQ;sTNgybYv_ZB7_s8j#>#w5NHfD44H~(rNt1jjfyy(#w4v`~NGJy>x6e%z z9gx&n$Kof|5WKXL2}vWYQnG1b5-=&=#AAgQ3iuS-H3m@>E{O6NtGpwa}eM?mll3cQYpy4iAToXbR(!3k|X)rl)OjM=|SefTb=E;x(`-MQlh(i13c-$d#CZmI_M9Go(?UKe@;hwgie-Dv5+3P|a@f zf#BZmV?M7S6KfiQ<`~OJ7~@<_gs0mfTnLjXTjFM1K{QuGmM4u)G}4lzvL=6mphyed zW(ZYCjLQTgm(e{iF);d*AwmO)8?2I;mYBoo^dFF1iw7Tcz++6q6z%IoHO@lO ziva2wnkXn~%n&LhsFkfxeQOtxFvDtT1vc8!;Sryj8C~TPNI;|i%|8Fn_UPvjlQ>M~r7(3E1F7aSA;6W6xSfPTl z^oBOHfg__p1CL39pI1!czFLsOE2^`yD~i`Bet5$hE=w8cNXMB;;m9v0G2=aqViimN zjw0|f3`cZ|F0EhE_ZAGH%=Oj#5my9-J6M!%Ts!hc0&6@}GnMs^^IwMk=JVfh3q{7~X9 zOd^h#SQT94VhcaW0S^d^=`R3LMMa=Q8j(fFC!cX=GnfGnsF-ho9!HZNY4x6kqWEYp zX6RvHBGPS8#8y0J=zj-%;J2G?4X=emi$feEKt{tJP~r$6w;@#HYV=$aX9#sw1fNWJ zMKzQdp-WWbqBx5qjdnAQX$%7wxZrFx0?i*|&s~G1nTD<;r3lU*0~eZ+V}B;ml=dbL zE7bs7xBGhC$TYaG z3|`m*B_iRV=Gg9blfa!ONGQrwVo_~gxD*d7K|5-ys_xb(8DnoC4C-x>#cB+L)iy!} zFt&KSV{CC4pQsBU<~|Ht#NzXgz-?}#a+W?0V-;0Ff-N3jqz!cd|K2cAU{Xww1_6mEw4E}YL|^#?Uf|y=FiuZR!!ZB@FeKrgC0XZ9 z-&aru8py>|5XUswmG8x$Q5^#fF@=B)!TsgmFGwE@@}F!eVBsC$+)WJl-S-8AG~zJV6|K;Rx!+rXH`iy#in2~XIG%i#5u-D!q3xJCbU3t#z_AdXKA z@0Wq1_#WH4qeLCD4u_2HpLQl4OWq1)X!q z0rdTX;q?`t3_&G=A|~1b!pPQgRLg(F20@@-;~2;m{Q`Q4NdiVn37#N@sGx9B1a=wM zDDZ-3K_JVa|HAvdK>&RZTvS(3a9=EJg7u{zAlTh#G#4+t!qqs3Aqbxw@`5OQSwbA7 z=U7S?tO75bpEAKgEbsy14RT#Z_`iZWzQQ z;ALBm|3U@U2ofx0P#ESz@|zi0q}~C~XrjVe-k3q0)Gu^G!VF~6DU+K`rkD^J<89_Y zID%Y4qh2@!T=3;5G)Gj}U19+kTQ+A&UeP~vW?q8kl{J{8U;;-b1#7)RO4gksXo6I( zib;$@0NI`9bqW%6!6xV?FN^}>Xw6HCaLYFy?ab!X`{4-tgmG0%W56m#zDkzN z|EPKm0Uk(SVS$8;ih_q|4S*sjCQKwwdMNjSC~<0~E$nB1VheaO(~1^|Pc&y<4ux#e zX2AiF^`(nDu4ryKlpOd0o*_hCb{OvIDW1?ootoT7RUPip62=_a9^k>%5Q@8e-y7H| z$`}@A9O_=^i!HUm9_+yzAOvt=9m&NOIP%Y*(AXX{$~$JwsNjK}O39}J55`o%8(eCp zuIgj_NuFjzYN4vhkw#*gh!&t~qrl9mJ{e8TX{|!wKm6&W%BiT7YHr99uHH$YUXepJ zYIH@bZz`)*SS!=e1RU5YwqVUj=~WrwDr_7_rTW2>VGRG=s-2q04?08}peh`E|0}2t zff?+9#%b%HRKcIdYOTIZw~lHZ@lPFDYNxIQwxTB{;p$!t)38DyzuIXP=ujyAsgz*X zpt6p=qN*Iwt8*|xz_!7_CM?Nb(b#DMGL~#jT~e`XY%;0rTJY1uaDaq-iv z+APds%**B$&#J7?J}k^$QP8H1V(O7CX)8orQqj6>%RcSS_L5#5t<*}b)%I-GCeBJQ z>t=3k%u=nm;_P97t&^Co(TeTWPVLXK=E&NJ+G=gw8rIydZP7-=aCxoW?k(SD7h33T z-v+MW4(`)}haN>O;U=!)E-vFXuH!x~~m5s=7Q?kouI5{|E}kLZo)1_ zHEaH&9wr=0zZJfHU>N3G3jDjJQuI%RSknva0sB?(cptL~zia-mUn~ zZt9lr`K~Yfwr{)8Ao;E>_d4%E6btn_ZL>~q* z+Y+$-o-P3Uum4J~rL2T@dX)Z>1_DDc;XW{OfJy)lFv-Gc$`+d+@MJ*R>H-5t1}iHQ z$bli?!DixtA;`fBE9>w5f+*B*^(xL5@xm{VX~NzFFeK&bUWFe3|AHpUuN(jZ69WRt zc`R$DFcM%NY{Wgx})~a2M?u}ZCCQPNWIOQm;o8w-JG(e3;To6h`A@kOb4pVQIlqYAUh06Ab za;CUmYV%PH@6!k49uAGDzZ)r4op5g0w~{BCRbRSd>X5D;IC8F1EWDsCFB zhO(TL3N>=oO)-;rGxbWB86<{~maM|uO!~S=Dy}UO#M@fB|5Qf|Gg`g@dbP51P?;+4 z1lRoXE8~Q`h0!Dtg)g>couo*IX-xukf-n0s#PR3ol4!S3N!6ILMo5ro| zl`P5|cod#2tz008&L)m5k)t8xQge)y^t#DmDDce^t!_M2iYSY0;U7a^lh5i48^1|M zQL06d2Er;6BfkaNDw9ZC3QZBU4mq{{u7ym$Q&3+_Ln{bWKg`RRGx|8kQtQT47fvO| zYzkxbS3_V&q02OdUe`VbNc52)@9jHlg&CCDrp@98oi$2F%W_cCNl)3=gf$J)G^CpA zO2D*L=#un~EPgCUEB`guru9hMQB`MaT5qOa1NGak|7=NgR7_{~NVPRlKTKv%^kpBi zE;+SPUa|{ONFUKM=iC<>ESu^0-dF83#AWq;q;_SKR&O^>MiZ86G%eA;Uq*$$_z4 zg&fo=Ff>E3l^h&E#2erNegT3a7y=w{%c%H)BJ4LFJPeJ!H?g_3La@z8=*cf=vNEm6 z9-zT}CvoGQH!az#ek+0>U<+WC9Gc)kfcpV0f%EUACm!Iz3jK)~2l%QHNX=Cmh%3S# zsPD@xF^i)C(>l~17=k0rFbe$xfNS_(2-<*4|2L?bgm@c*#wiO|+v-2aFpCd)Mhw9j zCwYJON7>vAT%0%@OY0kC_=dOilLt7W1!{qqoE&I)dg`}DLxfE;qusucYjp5fK%u{zyTg;0jBS_$U-2gBsmNd&=9l%nCmh`Xw0OmYrDiNj>q_D zm}?b4xrRULL8v#W*jEt10jkkDk90wXpE~`D1(}C5r$D-`@AnC71ZxL0HqCM!an9Qy z!4BX-wcUzBPXlh7osEyT$WFV-8IpJ-|FL7d%#Ld~jsuSj`GKqBx>bL9h`$YRxbS}O z0f&+Xzym@eLp4+b-Pt2# zTmtt2!w6sZe9+TjxQHRYQ?yLND+~`RfT~UK-7mNbn*F9FQ|4x$|)6paS=uCk=K1 zO49wne2>YN}PrRfNe1=QW5QR*tZ2C2=+O%P# z%p_bmlH|f5qneHSbgbjCQB{~IL^25%OM=a88A`~c3$9h*?DAJ3zroD)sW&z8@^9mTpj=waKWp-r0nkYE2D(A#FiUd3vbmmv~4uK*lIH2`B- z1q~*U@FSM|ki&&QQ;>=&7HOK1#+Fqedd86;Wb)&fX?Q^el~<1W#jb^R&}5osnu*J- zApl{~kk&{FViL8=|C%ZYCj97(qh|2r4aj~Y89T=(tsAdYpWg2NT zv1o@;D10SLX$;~;JQ}xpWtt>|Eq6X9h>b;yD!O=MlxL=K#3G)gg?3dzIYh#c1!Ff920uDW8PH?Mr(*k}`Q&9$-5Kc%IXP@aJ5SG8C+LdZXz zovgQ_V3|N;qo4cD^~9KneHvqBnXVbHi_f+OV$P@GZdQ#&nfIRwE4(nn-7#4Zm-`mX z?~2L{B$B(zW?6|snL zQDH)tUeO!HXaO&#pb-GuFbT#~Dn5p&)1u^(6jJQ~U0Cr$5Q1Qc!fZ~2ktUEZPH&B;G@@{X8HRvLLqO>g ze+hyjSY!$`pt1{{&_upsq`)qqQW0011Tm!&1XD<(p47}s(UgJ-P0TH%c#u|}|9Aos zO_)Fv+}dV3t3?%Wy+WQrz=OBUxgJ--QkHeBCDE#|ie_9#5ncF48#a+6z%+C%h|A*|kmn3be zUkCqz$MbN+Y>HT^T;L#}9yViByC=)78L<@gGLT$Qa3OQ6# z4ul%rGz=jF>X0W+6fy*P(crChUWB-ES%Dw0cfYn!$PuGVNEP0hFhH09l`@F%GgLbS zG&tf(hp|)!H??7DY;!02jY=X*0zm(nAaQep(5&t}q)q^X+g0O-!buw5x=+t24 zt0KuJh1&TWfx5MTgf7So5I1n)qIYm6j;R_eXvl96$ovdon0Y>Yu7aNdebbACHDLt2 zX0Qy`*6$=PE{pqxN=Ct$XS~8Lc-8K?dOU;`oUBEE;oN~~xL@QpLlI2ot?Hx!v0$|u zn>zrCn@VG6Znrs?8!^R>WYX=_c}o;4s9*)f<))a>65ZmY@4~)g2oQz1Bs32_^kf>QkipS!fbEah%{}lz-&z5omirA|{~DJVB}3A?UNf{8ToM|W z$yL{D@^-=_jNFx%8{Gy!EdE3#8A7Lk>A^jVM=|tMODr&f5HH)U8vNVCekLIUSPgs! zF0|iYgbA10P)QokjS81?m9byIK~(fImLlFz1$VAlPPL{^a8_YrlQ}{YqWFYWfOK4B z>-N2H!h}au@(JmmW*VZEi3K$gi>onb?Oe&Rg$(fqOuZe<5gYy{jE@TJjRsD1A(DJ( zjO+>R?CzVA!^2F~xGF%=iFM9(Mvo+T4DA^dVVs8H7YMFU2CVxeEijOPSPlyi3}F%o zrWxdgy{M&j%s^Tur-$AEWi*A<2u&e^fbeXA`2yor|E>e1Ou=Wm-~l%V>BePqkVrk6 z21KkUVot_vvPbE>#}T+?6!5^0fbJq}CfDACGO&kj;G_!x;SxSU6huKKD34Gt3Q1k|GFR$@gU9AN*hvI>GoDgBMhm@{pTD+#OD97)(ZYtWqDh#6~j={{3KwPTu zMLvOBC`6j}ajk%iA{7JXN@~rpO_q+NR7i*b4G;lA67mqS0ow-#c@dR@AdYZhS0c;; z`3WdY$OA>K>VTpHF{P<+VJxL$8h6If|F|WLGNx6kfDl{bmLl&4LuhJDW;qh*6%esz zfPzBe@e*Fp2qEGsl_J98rIif97T_f%6KE+7iU3h@bSfk!J7P}MifUTW6c`Gn25vGc zqbMl^4&_Z|@L&gGM6!ZFPEdhY^aCbSa$2T=!0N^-TVn{a(h$q;?E<4AB@Rv)aV~aa z6hr}TxP#z4?h?%-He@n;KCugcf+oEuw)O)xIU-L;i77NDB`aiUmeC(;p{Tz?J zic%(hCf?Ao5KChnM=6JlWHS&#d|BS>-sC2`c0T?=wJY@n6prbIRB^DN?W+38KU1m_K14?+| z6VQ}Ul~D%Su*jqy^2XEgY1#&_G%~!cpJFHsvrkck{D+GYB?N8dgCO z=Cw}Wz+QU@R9_WSM%572ss11i&7#x56z5~AKrR5GFi>GDT*fYqi3#YU8TbfIG2v>$ zQ%o=cW2uuD=5$^sVGkg7%_h`X)Kw7_0WMpqQ)|&A& zP*pAzVH%{ZHiC@_18hyHG(2==!^TB~z9V(`>Tlo>g5<=SNH9F~!aw|Qa&Slnrjku( z?Uw)yS8QRfaOiit3=I?k6=L)kOaTxMZX~n-5B6XW@BqskFLexI6zIej^lVfFv4^IT zm2hYU#uh0-NV{&uLv!qxa8x0xfO(tOtft~*q(LJ+s0$z>RJbDP0MJys^2St^;7-C= z&X*+Qzz_Do55kZvr^4&J2Ud@Hh z?{|qfXH5cM5oceAEF*t+1yn>}aZ@){!(e$eI7VRyi1>GnxHRT>bL`h*rM7*ba}l|A z**?ZDEZD}_i4rZbn5e>mqbLYuzunh#ZpU#NCOOPXbcGuY9XknvtaY=LqH!{6iB^Z}>mZxVnE6@KAsg^3y8WCuDcIwx{LBPPY#Y1qDE zbBs+%%=tcqOiqRYcl{0zM~{D-Y9)u@`K0ZC^s6BQx*i##4LV~W{NxgdDq@(mL>{z1 z8Yc)+oJi(`yH_D{o$&;=4P2`OV z|2ZTaO^7^ZS|N@~k^1;v+a!r&a|lcjsUPqe1eOPLa1a&2RIKHT<0rA2O;KwN$ki*eg=KH&y%$m9@cf$clrN?Ro4;K4GA?AlnI zV(l5W3|wsE6!%igfcW)V7!Ve$8d3%oxaFSZ*AK(=iN-~Y?g=PPklmab!I{6P2UMq>Q%S|7A#8mZc3ptFp2D(J$DZUBpuY#8=H$H@tMkkUh>VHCtD zr2YXAuxxxENYyALyOpAWS)_|1rc;2y4zb8p_70r_GGt zoY^eAseWRP0o_`Db2ZqfL6%Lx} zhk$4tr9ySrkmRflYN|hXTqX$)+5m^z>Al5+w#1cd?VDEDjZ=Oqe>MR@|G(o*GP2KC zc`|SXE+9%z@pL}MFkfMlsF)Pru*neou(2PzV0&}e^%W}7^49#ITmW5j2OXOVogy(} zx6fLu=n1?jdRT~6NzS+oqe&x6wt)P{fb7q_29l1JC&Qo?X6NjsH%iE{sSEs|@wQ9t zh|BT@St<0K&*j3;cS0@YpwICDAz&vm`dkekwzl+}qCNT-a%AOB8Q5i_Q}lw_ogKNj zL-%&zrnBlhm=po+8|WH~EUuji_P~{2+oMrhyEOE&3v8Cz8>&ZZPE5fu9KqrnYZyeq zF`5>rzUdbTY9%(tE z&ELd=R|FLdK@r4i(t9Yx)p;tA=(xQ_XikirR^bx-;DWs6>sIS2MF9{d;qi<7`zT@$ zXrg{r@>F_f6&wK&9D#VP#~H2EkkZsAR>}|fNHTESp;bLLy~k=-!JGHs5;j6FICZR6 zp~5CXDc%6cV?hyq-!qWIJ{QMIsffxQ4WAy zP66Q)poClyohx_xD@P;2S2QY>f?$T4(#sN=()ANY0h|Hi*)&l|{tdx%Oqwl6fJ7ae zhN|GdiA<`jn)d6{q)CSUG5Loi)-+8+CI-lG8El3gN^ z11#kvK%a(9TZOdZs%oDM7r#!iipbrLCar2V4YJm0xQsf$S21*lGQ;e3MJTgh79phELQy@l#A1h5}8MB^o5Hi8}0GY zTXD@**Im!#We{iyp<;+4vG~W+OUDf(O)Q#ha>-H0{W1+ND*|!}D$Pt1*$$%kCk>F- zF=5Cin)p$neJu?ENHv@lWR^9U=yjfs)f{>Zg~s8L-=WoE? zY};&1VO1jyc-8!Z2B1~gMK4XI;(|s+RRob|t8xgWTc&&ZaSXSX;(|xPAo*C0HN31e z#3kT81Ku&KB&6tJsN`DjG}V;%(GZ_lV~cs(o@~ZPNTBghToF5!8JTfeTcBPUJ6AG! zH}5ctHKGK8Up0#CfQL>L27w7iAs2^)E%a8yrmR|P`HHC(bDPmh6Ct4qctPVbb+~@? z<)}(B+hPq#CT()B*jf*P%BOM+Q3Wpd#vHC8z?f?3FX^^~gelg%a^RxRNE6^k(>-%z z5TlsvpS8v!d)QgH2xRFh=Ed|1=+@#w|6nYH^2rO~JXfbSP@mc>joe!AfQmJyV5Uf1 znIa*I>3&`W3~F6Cx5o{JJZi=cD@O!U8?WTbajp<~wDr%^oPBe4uNd9<)??$*AH60w zgNn>h+9L@j_vG@`*@@ zRSjFjB3cK^nd=S}tFc|eIS`!2|H3s1`Q7DwQpwRXC>0k|VJc5Un1pjmWsS?+r*u0z zS?XfshiV)HC{~F}CnVOw7h2;OZ%COUbT-0IDWXkE$rY<4Lnk}oNql32gD5lsI3{S} z5*o@A63n28Pl$070n<_&CLu;q|6F1vIU0!}P+^N#d?H^hVS*ekVTxD8ViltRgl)9s z2T_Qzh%QNxU%H30Pn3y{RK%V~y3h$xM2rb<7-X`vFbO!u0u_#MBt_aF#xgpE35wuN zbS5Fld{u!tsEEZTJHbG4RpS+S7=lBp9NY zv3SKOF42ZMYK;kK5aTC00XUavp+&9Sq$U_SN@Z!{6Kb>-NWgMSKvZ&$$@+&POySB^ zd_oQ^K|)<7!8wB{LKLEq1E9LF32Tb-B|~__CRWi*Q#isrWAlS8_xOo6G)0;7;TsqC zhK5dT!VIZdRgj>FN^&By|B?1#!f&kk2~8;C4LGW!J>j`WGD>VcXe1{-Kf(kqP7x%5 z#DqDuX3r}ki$LN_@Hh8hG7nCK=dL;(mbhz|*+G(xAxe0M)afq!0O>h3X(3QDWQsplt=ct#^_M>MqL;u zO0C&N%+^wmsIaUiL=m!z=u~1Jd8|@RaS1q3F*R;&W+%|FOhr_vpa)IpLWy&bPbhUh zKQ)LPKJivmYyuCq|N2PRH1Wnb&T*!Az(gATN)fX*6Rm0m)Eln&hECA7w8S}TdB@1m zA;6&%+5Lncs;f*vih@3Kg3z6KThbi_Av!_W0aS;ug9tCURSlLfQbeMO8^k1AUL;r* zw2-ZqIt2+4-T`q`wG`g22N={L6lgsXVTmvy#?D%B7gjQ1XGOTaN8Q0kD~wZKX%WZE z)kJ!jFa#}V!815Rf|5NmV-q`T2ube3KL|EuzICArNWgLBD+;S>9x|0b-99PLc)}!3Rh;!IWRe0} z&=PAfXTKch5JQ*Lb!@dq96f0o?-kZ%F0+&i`RFrKxe8nEGJ@w+5)czi*(2ujuzB2N zdW(BjxF#}Ey0!@oZ@JP`bF{Vp(QD6;dfJ|$ceAn6WeXce*vGcBxeKg`14DY`)0EUS zHi0A4o>}F4eS;}X!Dz(c0TrWQAjzjW9Aw|TjycB}sT|#VAXESU2k_l540FFT_dAnI zNZDNHKDS(B?spc_P1@buYNA5Yl!TB%kxO$8QHlzwk6TD?-Bsf2_xpEef9$<;&faJ5 z_v`g|1{-=`|J6a&Rg8RjGU@xR^ZuV49nLsr?Frgdy@MlTd-^)BUpP_z+4A$DEQ`0H zDQQiFUSTbVhi{kD(i@%SKgGfmpFh&S`!My`Mu>*R%<;^VYh%aOtwa943k^#t+C01w z|JGt?PcYVkIU{s>?~kN{(C_Drtl9^>ax!Nc}od7s-gV!%<5Id zX$n=knku!8FegGDNKk?72wzE>S`1CYFB8M2=?v2J*k;O0v}jXm-rF-5B>~y{m7)OP zp+WkgYWhVIz=?R;kif8uVK}fEj@1n3K?X$1PK*65uG7;kv>M zL9jwKS>Xg$q!jH*R_2{(x)}l}H_J+1VI4v+tYcUwVzN%MvrboMogK__C(!FOnBLX& zm9t2if^6?2Cx(hs#;r4#H+*5DzpoznMk%W0N(r@Wt!`&750=oZB%u zcdE18Tj8oJVu#3JOA5HSdM`VKOfMS*CbDx6RWpOwIh`xHPY`+Cnt3}}th!U)(_DcJ zB0Omp=0X8qsWzbwvK~ogvDoZhcK%d#{=32a_XN*=f}IXmV23O;%|$w5z((lYmxSE$ zR=V6QXtR|b-N>w1$^XT^_`CYz-^nZ^sSG1D-|Vc=&aBWHSAaeXJHdqnay70^W^bO# zy)l@(LnsiBEs)GE&_rDD_J(J01=ePTz@LOVh{z-^#8)GqPGD~h(%WM$N+SymwF-?K z3+oSNdwau1q(DcBhzC5uU+7D)A$Zc3P>H6rATmpz#JoYsGWk^Gj=b!lby+Qvba#?q z27r1~AR~Tz@Cv{srC9zXBELWs{`}aApO^vx~E9igS_KvRX&X$dH3L=;7am_!@y{gHXyRk*H6s zFU7g~L&X(ZrMDbQgUzmb_d(=;7bu+;`h~kRGI-@}cS+1pk%52dqwH&KHP`+w7YC?- zD*#1ThTt}zU;*5cNOR_R>!ore@O$f(cI5S!TGz)Vx?o;ZQq>RVUw^F3>?WmqrriNV`1hvggLG%Dxk_7i&W;` z@?Wh==DVYIO7{HsGa6_JkPJLsd*^J<9S!uI^L*7*i=1Ai(*=*9g>S29wbi-9)xmz% zOsCWN+BJnvHJ9URuIAK~)Ye=ZuDQNibAzw8Lc8{sQ|;}z+B-S5HMO;OhimIsYwz*x z-Mz1Ux5?>lOWfT@Id|J?@3s%$?OeV4gs-k!yRO%%u0O8sX-?fxZQZlsy3y6T7ku?E zwd=?C>oeo(-{#a$)z-fou7AH;{~uq&WKQ-2sfLen4H0GybEg|VJKZJDHV|7G03UcE!(k27U|RvXq<8=bcswrU$D4e#;g zo-6ii{5^c{7!EF<3kBy^K+iVTU2TM&Et7uND0KIMK0EuL4A^)d4c@xh#YFRJKKb7e2~~qEB1r<5fPWsd>k}#-$4fH=y>xWcV_w9 zD5&;E{zqt-Q*Ii82vL-3-gg}-I<2&K@S)`v&Oq~JF6wzB%G0?eBnxugIlEaB>cWAR zk@;IV{B&8^vD`)i8s3FzZNs1{I1sz+Y>P4YAo+3IEI$`;Bk6Pd`>bq7E;t>>-_J!o zy^HF^@%iHJ=?mXqbb|VE_+HMU2Kfbi$v67Hbgbsw6ZtIS#SbZ&MV1qhrdtqKz`Zl` z4O#%c=fuvzK!h>pf&R-*r}oaDXS$5h$PIo0Pk!k4YYkF=o_H_rH8?iH7M%Igv0(K> z!k_qfi!wY=!jsLo*0*yFghQQAKX;ArI>0lX-~NgSuQiCTi4n<=^hVS$3H1^!P`CeO z%Rw#32;Gd1m$OLR-*$633i%!U83#3x+c7-$Wb~cLyFE8o;oym`C8Y{xdu}XvKhzUG}bqaeuA0d`P6lK zkH)>BBpj5A6Bsx?*kbls zzAe;_xDR>rKSv8(;(`U_8+T>K9Jhq^oL~Gah1g-69A}?d@Lr6#K%dBgPv;K&G<>m7 zBo7c#6KI5E;|s^XLXvea4L(0#IMaugAL;q~z=HcIV0`G=EUFXJ@hqswfeTTYMe1hs z9(q6Q{QlhcI7mAQHH_o4=YX{K-RIdoKKZ#dNNer8Sa!XpWzI(Cc!7ruRpDIIB+26h;NzX zxAxiDk6ykmAj2&%@RMYCJPumi3QOZo9Vf#>0kC5(P`R`4G!BG>Mqbf7C%}NFq2cGz zsQ$(=iU7<92j#lL%Us*<3rv>@%%l-Vm}759WXL6XXx!+Vq)wQ6`cpOWcgHzM*D@3p zJ6(G{TYY3OH4t$U4IO&_;uv>|dL5E>3{iXRSa3$qk$Qd-X5{3|13Y=6R(H}R|G)8H z5C<}}htyHY1M;fx zdGe%^fNR`WhIu2SD=NuFHMeF9!<(B6XAaA%*sj2j868~!h+QMB4=wOC@ExuW)kPd4HFRoZJdes)sQK`C<7`L& zENTqLH!lx)`~2hUYp5YK>N$~5jnq?)6L{*3dX7Qu27YAD?hh3;L~hd*5V$h-`OJfv zEcwl-;NBV@7>_|td`4w$fr&gY=*iaAbI`F_RCnX%{06EE4Yve9M|ao0D6Bugfv?Fy z4^a@{7ayZ{yWSpZG3D`1$i5D86KJDA?KoQ-?VC`=*ApbuYPRvC5JEY;_;I_ zzWQ0dKJM3M;_o^R(vtVz$k?bh2jYk2f6hVGP=5NNe-Cg_&0~D+ypQ~@SYPh10Uj!2 z^H)CymCk*9h6Xv0;jiTIx19UeZ@}-51-tI{4ma}O0ifHe_oTgGPW^=%#(Y{j5_OXg zg6iY&U^T|DRi3m-93!Rg`GM$8o@%y;UAUvRouyswQudI2v0>!%O8@aC*D~`H8;eup z%kEq}Q&25nV#TA<@v?s8^u#BxYS{{0ws6!HqsW0W^Kg47w*n1^39MJu$fX<+HA{2n zs(4oshMIL`Wco*hSRRq)ceASQEk<06GNNri>Q$(LONw+=cVyOyh(_?eI+<2&Ozbq_b(0@x>yQ9IoJ3rL6w;> z&&FB{vr4xS!*=;f7aCPdKIz^McXp@oFA2(^3**h(xj4rxZ)}+wM{j*>q{P2jvxglt z?0Fl)C@-#H=k?TfOVXSifl4n^a(Zr2Jp&W9Yqf{sN|wqARPmkk8YQOZgXxbs8cuZe zv2SB%K}>>_h`j)#$}`3y4jnp&aOakN)Y~&kJmUtpICGp;`ul4hh)-S+8TA(DJ^0;5 z1^sy5D-v=&l;szW0=t^5lg3@wVjO9e*3lw{mp)-W0xQ%rTW?(@ojP&Bo7LwUqZD3! ze-ZYbOCa8n#EWFVlSz&kDqO!Lc8WyfH{B*NM30^dWzkEukunpF5fWirw^&8;>5Zx~ zLN$)8(nyjD!NhR+fPL`+4{hbkF*L`kGR3ld$b97ql4&9S+XSLQEl%sMn5^gen<^V& zb5{@hno?)!&`al(SuVz%Hz7X554`xB4!NPv&3$g`B-q6iQd0$vWL-ci1%)o0 z*l%1Tfb#BMnnMvI-OQ`IuF;o5!}r3@RDfMC@Y8=cheo>Gd{f$GvQ$A3KJd0=U-p0A zG8-U&vhUQoRF7{>2@D!2lt$q`=M_FPyRbG8GiL#`t-$VK_vx00!{ST!%`@} zeAsn;nc{3KOA(p*18of|<#c7FZcMECvHAS0wtV?D(!)zqo+e(+7vd(F+(Qd*vW>@y zI<{FF=t42E8oRtdHYVz$wO3>s-<+xa8NTvo!m?8*NQZX0E=K%ueojZcfj<`1oEB0EGJF$}jlCc&%;s5-J~+zRFyBPX(rMec$RjpN zPUqHALr^X-0XMaX*mf+a%2@oSG;00`bSgk}C%SeJ*_i6EA3ro=dbb~HsG?TU-Io4Z zXW)dbz%z1*ewa~ifo86M#a3Xmtu^>cn@1j%y&!j=XCPt9XN64*){?gtcs57$6GGYw z%|UAp|A|P;2~@Io%j$dW=yC1cV${LT->zf}6ra6We2S0f znuaFeK$t!yq&LN_=IdTKTx4w4=x5I55DE^YG&8%eRrPpZ0ceK1WJ9b7RDpS1MF_qk z8ZtLx{wv$yB9>po#O%&$44M7O*dA`d6~!log5Pi1i(GZI>(~4(q@H09sShwkyKs1F)9?KPij0Cf0d z<5)!YB^9D3Ud<9RszItm#FK9)qWx#l}D9WmF!#1FNFgy^^w(&-p`Fp z2$#>rW*q>_G_d>RH_&|iaq$S>>O#YGV75tJg;2qko!-N5cULU+rEA!>ihOvus@xo1 zFtlIs%@%9Vib0d+5;%ObS8sUB%?q9j=E3Lgse<)0!#0P~il-kRi zTrhSe%(A(;pk)ux!EgipjZfAic6DsLH#E0Jk3)nX5 ziM%AhGHEaQCv0s3XKq@57h&FrI29IT$mu`&fTmAtX24yFr= z^)7pGs}{l)T9EB!efX`x0kWacY+H2hOOSvIy9Z4G3b07aebria$QWYw_Mo(t&*960 zmA69NVc?>?K(uI(A$n)=shY_JYvG$GqatUlp*x3Y=gNX!s|d}f8m}BUnn!KWJWGS7 z3s&vvMr9rU2t^*>*KO&AHzK}MIY)wo@8S7w1&`&tRr`dvZ~_vM5FPmL-BS8`RTv`x z%@~X{ghitt=((eB=}u}nr&DSl;3i_<>){DLZ>Ba*e2YWuajiw-=$B9E^m?B3AW6kk zY@B!$t!+kilZ&ZXW*AhQK4s_1OAUp;mLEo(zU_v!1V&m8kPZSh%#GJbpB^-?!uGD` z4M_aWEyPSJNzNZ-oxgyKk%i(#s#&&tnc@<@vf&aRk3DL;5k+Q$JC-hOe|8Nh{wloJ z>vBl#&tuu9dP$w$dx}?vj9*H)_K18B31lZd8qG{^zH@AySd)^Z=9%k7xhX`t2ogyH zAc!5E;jGJ2p#T`xlQV^`Ivgj?1A@2*A(5H_;Vlj6O?NdavoV@1+@Ae645Qz}0B9K^* zft@D9D#MLZfk?sa%F`$eYcVUa%Tq|vON}ficGvc0uBBKthH?EV`{#c8<(~sYa5kR6 z5HDfVF7S134_F=f>Nx8-i?qtYGVE1c5IvFd=W{(*z)F4XUyb@wADDMLF z3I}yiy1H_KGHj|}_eE(KhaiZ7i|fC)1=B2Jyw|n zK0a{GdknZQ^d2>`isVUSq`Jkn54HUU%GLEKZsD)598}%Qqv`?<#plpOnlGpksR|Kg zMYx_+P)*E3WvSg8O|k2_uw%tgcP>Jxv0a`R)LPE75AFaF zw;29r2fRHvbv+lI5T)KP?LxkbC#_{ityy>g?a{doH_VFg6xbCK@@ON~l>bVms)8qp z7N2X!a3L^*2+1}=zrGB}#44sxF)cs`wyH^X(O~6t|Id=AkYUY>i%4>ieHO}5l>^c2 z7W9rsDe-6#Bld|!k59RjW{|>2UKqx!qid=9t!^soJI2TT6SaZ6!6mIJ0Z^s#iH#@0 zibGjmQcpU}XlfMaxUJ6InJVpSnlc9{Jqc8p9L^(wRQ=4QNkHjYYGcBFbfwE+o=f}z zK@1UW(g=QLOj8JQQaY|FexI&W4OH%UsU&% z7ND8RK^h*^Z3$ZDWNRWoGa0Vax^4@WZi_`XmHeK6w52gZX&)^KRV1+hTcPK=mo9Pp z)dA1*dTLe}$d!oaN*uSmJ%sy`>Wjrn4C;{U5Im1H5hydIVL&Tq)yaIFOYT(~USTj|X{G!!Rd2@bVLqCXnD_m_j|wRv!Ah zj^?^2#dM#A#!5jC9loS=juk?oYaBbI%A<#KU{(lERSK9O&kT=Y>AXj%PSW>x6})3u zp**_lZCBNOfbgrVjK-K2|PXe;$NX}>7JecwNb=r zJ5b5xw;0}JKH=@bNotYnRI%N3smV0G$iL|JRQzZEl3A-BhTCV8asdais_Q~RDd1rVD($?{A{Jeu*@HmC9_Y8`U8Ai{qLPS(l9!;PkNNtfgWF; zF6a4j-+Mo9nXdnc?41axevedpebi$tKy~GX>$!KW%RkOiy!ch_@8ft{U{)8{#?%{wn9=Qp|vw5Uj{P z-dLzB4~#tKv-^)hj3kuJO1Lk!SP)m2=9HiHf8_KVXNyjjU|5@4$Du#^8?eH%(A=D|; zQ}hkPacuu^@b-xy93jkXHpB%>*XR#kf4{Jq7$E#1+-#EWy#1jkf(HFC%cmcF>}Z`5 z8fu)mP(t=kg^nv>CxX^r`cix~-$R02C*opQ9%Hn4m80IZ_ZMg*@qC#DXqh- z3$NM14J_YQMihC;nJ}qT3?Z2|Zw z&yE>h{3>dNabSR*aCk`}pQ-YGiE#vGg?m?uh$SgZ`I^Pr`Amf3;*Jl{{WRlly@B-6 z{lb}UF0;!XW61Ht5z&z}Z7FEx?vfkY*BtZ4wx4M(;9d3#bfW*RDs z^)6g>Ha2J$TJ(^~RRBd*#l^gdDmw#CUh)XWyz$Wt)EoO;tN?StEFMcrRFk3k7Q+I! z5=zlg#gW10+swq*5Qj-dNHNQo@E>L@-n$jz5EGKw#mE|9M)ADeGMP)JkhaUKrn?h< z#SCX2Ga4PM`418cV1@4i_D@dm>kmLRD642`-B*4I!(+tqm;w6k<>@P7nK0^!{Z(kc zV8F`HE3D{KOh+;!@G{Hs)XKhheJ;||dy?VKWBT|7m$E%u?IP$INWF8L+StK^Jccux z>2+?rIC1V_=fdjq*#3W6lM1lae~`q{<*RCP|Csu#Z0jy%3Y)RM?Izg*OjRHC^=~G zQ_*F*%D=apKfzH~PpZ5JTJa|CHh^LW;tP*%1Yb#1#|HEj(zUk&&BhYFNHkgYdynel zlp|aD3i~N0{>IgdP(ykM`{%iZlX(bQ{6VO>5KWc>CT+h$@2yDwq=yq03I@JLkv``g zXDscxMQdJ%?CGyZJ^dP8%s5y0D`XNJ^@MtOd)-$ERw{O z)dVv$R`k~5*i@3%sWN(P6WW1`N#i=JdOMJ`2S5^Bn) zJOJLVaK@1krgls^#0rLE$64inaVwsRIQKpCdisZipGvLicQ(BTZ~t{(Ne#T3U`a{$ zFdLD@rB7AGkQ6i3Xp=siz;K~=rejB4aWwr?yV{z*Sw90Gyrw}r|DAs$9OuT9XP?0C zJwiMFWN zjk#I{Ec|xQ`Re&ol*3?S#_YapTAn@K&EVo_3Ramj+i?N*>bJ;Re6Q5rG&|yt?ALDA zO_gV3_LNS4yIZ1s?O@h+tSRc^i);4$7fJ{2J{!o__4pTlAmUPU6eT#PjOD~F33+uy zDRgjRqS;53&gs7$8P0JWCs$0J5{q~j{WMPb+%qv`S@c+YQLB_{-dU>cgdVDntBUi2e6K61xJnqq zrKL%kxjlF??U(#5zO<_MB^~>+=liRskmCZ%-v?}$g<;~UH(b2R!UcXCqFkr%OI9#M zJ^d<}l3~RaEZLOFiY!H%)J?YJfiKg>_v*5wMDDs6Ie8GakGmLkOnQdr2lvklhg|21 z@awm3y+UD+3)}jggJvIay&#g4o~LLk{T+qf@?c;LY*`bpjjq<+frj2d-48RlHbWXT z`d-f+H1c)2P4Ib`5Jm`^JsvHoZ#qqTW~evi?P26*Jy=e@3#}NBJ1}U7;$ruPzH>d^ zei2)-!pWziV#Q$H^V+il1rfR~0>_cZlP4b9c;5G>LKFmdX?OI3Yi<{7y_PbovEy-M zLea$?%t*VwA$(xSQ>poJ!mVcYP`^U%*Wrt2oUSO7AN*Ew(nULd8&RM3h^tAz@!N1% z`}900&-iXJ{AtFjypOWJQSkR1dvU&l+NTr+LI;g|Ay!|qp_KfAkcUBvP22icT2*a_#t)H|--9s6l~^O-@fT+@ir zcu>>m!DnUnFa3Jn5|(S%@?#lmBYOC|PP~ute@V7kx^EK;aoMw%gh6U*3N3rkxxpLc z2~)-dq$(JJymB|YOBySwj% z-NVC#ouulI^cEB}4jgqdDyOqlWxb2~_p{zX5Z^D-dVSV08Q-p{s4|;`XnRF{}aQ zCo!SSVzjwAdtU0yw_f$(o~8kFzLZ1v=iS4M#e^O{J2~#>hpz%l*0g>sfa1~mk2&|8 zv~IGJZEf&=%N9!g7Y;Nv*{!R;#^U-fo=o;y9MFAwGbF}ZFa`@&SfY0!k(Dk7Rxw>D z|29YSFw5#Ky1*#0`zmVg>?LQ^?>`Idf*o3XvCQ*7>dO*)i4KB$?HSo|4@G2l&gD}6 z1CFBqT-9Max@6c357rSqpck>Bs?~^b!L!@F7*?LCcp(NFD=w}#m|AE$VNJO5$WpZ& zTfuis(?)i6Oh^zf+G?|y?pO3=eYV1rG6_ty(3T}BLxc`;M+HJ%d zHRb!PQnKfDFc8CgBuu& zt;M1zlgbkFa~>wx3V9!Med1e>3l{CK+rQT=i7&bgzpPZQjk&VwZRRNEZYJZ?R@Wd? ze@$C+>SWO|kLaok1oYdqJ5CpOk|-8auL!paU&i=vn1z1X8!q5@)qJ@B&DMvM=Z%h0 zxDLVkkEpt69NpqjmD2QA`6FXcCkgNVeR6EdwHx{hzLvWha~|b2Y!1}K{Zw^vRLkW{ zFg;qpnQp0kk^Kz)$8V@g^A)YcC*C_2EW?hyDSBhfR!ed9{U+^T$GpJ3+MP@L8}24r z@97#c9iAfcKR#hzOX*&6gOtp?P80C$0Im+T+zt4}8O@r;Fq| zQpC^X)6Be6d=u3B70XF>{Ez;*NS=DByu*{cSH7szu(uOeRF}UzAj+6c6?oU)2l}Nn ziq%dv{(>5`XDf9f1&&SKz9r*qGpulWE|i5Sd;lp?GcOewNT0r@Imf!0R-s;VWMMg< zsC_$Yikd{eEw$^ns)jT*_}jX0{U(630h zp_n<0t>EW^;m)v>s(HuMjtAu?_3?@EXy_y9VxFU4N~)Y2ScQ}#J=G;P=V6{PANPCO z^>oH9yqa^Dq7*!5L-wu<0Wh*vjql3IL*FRs-lKS>C z#mPdu%V+tPuE4hAKb5Cr{-*a`dLacj#FigrGbxWLISCaBS$ECM6PvjR*N)UfWMa{1 z^7@~*y+?kwJVYgwhVmbuyGgkmOD~`b^9Sy6!wk%=26T=X=J@X1lsWt|gJ%B{3HQ~W zrkDJ5y2I+>Zhw@#g=Mxi^wlI=@d?-~z_jhVH)6LXi@%f>O;_$0vNsJ%R82B8PbuZU zbsJMgTK8+XbZ>+pX4uCNey?3+*C?fyHo6nA=OrNR;vQ}9VeMjT@IU|_gE81CSKmUB z4ukb~6buB=5R+aVHV6_Y!S(1bpY74)_LPs5#5eXKa;%ZN`&>38b*yZk=r3eD!5_?G zRS6B1A|DW}F;{;7l>&7xjb8RrZ`7{R5p2)_;-6M@Y!rf@;p(LkyMiG488l7w05(nD zVF#RRIjLFXk=x9g5 zOwZyT4K66OFK5-q>3!pswU=Rf)AM@MBj^r1e;g|c1y;uh6Z?9~y}{k1ueBrW4NPrx zu^#5a1IFI;OKCJB$#G-u?UXlNuenH3m90g(7_|k$xV+Htw$UZ<<;~a|DA?o(Tr>5d zt4F-N>Mtyk0YY0Z7}ued<`^nc{szi@n&=7d_aQz$1o6dk|1Bui8{9PqQRtX9rU-q( zsa*Xus0KkAKQG+#$N+uEg=?&oT;Kw=Ei2pm1FAcqkXV?|k7wy?VF!{}dV_MQ)i9NR zd~3YWFz;^9AM<>dvsV8hg+=;wRxYc$1x;LcH16@-FrV{S?9&F&t(5yT(j*B9iymiG z-C}5mqh9>X4}@@-mdkn*aDAS$;0Nu`h}Xk~hB?Ul?Kdc1ogb$ zu@|3FFNo<*G~Kr=fO1kj$-y+GwHbFVRcUeHEK8(M^A2l}swh`wV|>Sa-{pN$oipvl% zA&jPo#mnL}7OMFY;%Lf!f~R*i955?Muvl5t%GG&bt{_m(rAH&J=LBm!)jArT2idbs z>66X)M0pjJy^Sxf)kqCPlJC1oYFa0NK*=oFahW?xnCQ$DhW;O5+6E<#0=0w!kH3j7 z`07Gw(2NgQy&a}q<;27@CxZ}uU$;i8QdW<%Ym*bSUGk(e-Y;6ni{1I-vs@Qf^XD~Q zKCU*!b~#VmD<$rZ#Dv2`^?PAbgtgU%Dv5@#+C5SevFfn<^Uv^{OR;0C4-VX|{kaNQ zs%@Osc9Z)&+E)8eJ3ex4wKgukIq7M2&+4r-om!_iUuR!6rf9dyi2csA*l5|DZy0vF}4C*G| zZ`ZQN77Q|aUO)EJIisgv*E1cO`0nxgyPm|E3+(X5>KTiATnt{eqq`$pXT%J4H4O3L zAy96s{=Lk`oJ^9m=El6Xz9hMuY1U9@p0wx*`>320R-A~?+VC*jkj%hW1vGdtHW0|* zrOdvS0QRSbLUBLpDs6D_NCUD$e|cczW7qnclb$G6e<2CK?upp25ZhY=IS6Y4J*GEK zCN``jb$_KHM8)bpKORAAQbjPZ4P{{G8<{N{XZd;mw>NoPu$o^zc|SAzzO(92ns0W< z-5cTD8@1R#vT#gi=)FJpcD40^`}LxWI5ea28Da}s2FO0%En&tJI>?hmeaYIsC#*6c5Dow> z;s9f0o6A&jGoD;C07$`tFR}&q489+!TiDNv)$Q4nDeP7@?vc^3-YwM?Y{tt};;9y5 zqGc5MTz~||9xaDc&;LP9CF(wi;qG$OJY{Sr;TL285;Jm6!1fmEF*Y<0Bc} z5(t3WVz*oZV0O0`xs8`G!}IIl`B(5N`=Pvt#6-;SGHXD=i)i_GU%ZnHf!H3EMkH{GhPYOagvfLyt22feS^RMw16`GaK_8pe}J|9Jvi2w*!cAMyY|CG{g<4*99g<9{? z=W_sRmOXNVyyRBAGyl%eX+CZ0VcE@`Onr}G|hU!Xn~dFBg#`= z1j1BJ9oq4NSddC(HyU-{wzoOF=?6ivMHWL*80iM&wYYsVkBdVQ@~mSRZUk{(^txW*x&hKd+*0a(gSARLt9xBFVQ}mtc`@_6UPjU zliW{ALjba;fQUM~uMO&ZRo^U9sjzS!5QBq}DG)gTY>@(>G%je9HIk1joo9rc?UrWq zNRlb|r_Je`KfXpivNyoSB%iQVY?)8`;pW>MD$Db`mKMN|2RC+0O{A`=-v?d&?s)K& zQ@e|DI{?zy?fl0IO32l2s2K=?1<1`(>_f<*Mm;&cKS~YKDOahNh0MYOsiIzK z(k|(d8b6_u=D;8`pr+YXqZa(%R{v`c6^K0m_K(U#h9Xit;9_gSuU1O(qjR#`OyZy1 zw?EU*pZ2 zpGyjWSPIryq9f(pihgqwMM(2&k)=+(2w762kK8GY`S`#nY?vlLKY z3t*Oqp8YGS3522XAb%F^U z4`ur&77PGJ-MsUbc<;txI4|h~8F~;9WQ7~tA4&3;*g_!WSu&V#pHbA_H*U}#zcX;2 zweWTGS^T+?^9(-z-JTnih55|^4FF^W|F67*v9-zj{I_f2(8u||ZF`5>;XJ~Vb|4NQ zJk}0A50u<&1EM+}hjg)Sob1{>1pMA!u?Obm@&GIC??Y1ig>XP3ZtrOOxu+MKH=HfI z9+5u_odY9yQ)g{o`R=|k!ozZT16C9vT^bliUew847v)X-cP=oMI`&`Y*Zm|j=bg6R zooB)4J|5(~q1(>dbo>zFp~`p?l7KpXK;J>$>e(l}|BkGI`?3u}+{&b|6dWB0f}mn> zB*caDq9xe0Sqcvzr_t)NlLdC{%@s0$tgHw}I$hTBn&(lslx?*4TFJr~TIeWse>&KC z%0TwB1mrj~I&(w7a~7nubW!;WhAM%UKyNv5NyIDRLsv}BN+dd|J$THV z@1;F0P{)nmjPM+A1=`yN_-TFnxCk}PAIOXCV|(0^JGy6~EbS6iAfy~2VPQrN!aCJbrMz&d?@D3NLkK2K>bQz&RB;f&%N(zu zjFB0QRb7ExD3y$QQDF@KGjc;yN|t1GCNEhGFGOGcF0wlL%Io|2gvzrTHY`zXW| zfiTE6mQgmYLaAZL=)&-w$2{Q!=y<&><-R}J7IU`fh;H*mo)SQ#1EZV|7;dBioXUHt zNc|jQ{lh-i*%x(6Wn6}c28$Srzz?@mvcD`fK5v)S=$R8(Rz1Z)z_i~93(0j6LBPX< zgP|8*=)Y60=Z93-qF-pnk~-}~lnVItqj-DthqIGpq1)0snuP^+NeeN#z`<)OU;`Y7 zd%y`XwxNrG2Xch*uUeI`rkbHD?CcyfSF~_7xlVX6W03M-c%YS=cR-G`m#kkRozWedo>^%!F@GsQ8`*In$ZR>;-lT54U%SqXu z7}4i&!*Y?=!g;wyTl=|X@YA9=j(liezWWC^j4hrxE_L(Pd}jDU^X$MWwBBeL>7j|K zs*~tNiMZ5MA(whhjF3IbPw2kAgNkXstwaLkkzQ9T>C*B|)w-s>G0c}c=TUzX1TFP3 z0@n*ZepM`m$3Q@m zUk4ZRELGz%6oVYXqVVH$)jtb(Q1g3v00b96vs9>g#}Bn_T)lw_7*qixJBS$@=BBut z6o>DK;sVPf$)PZ{C$mE-%Ak$Fi-N~7s$}H|4dpF|!4+CI7Rp}+R+Ngxc$GrA5Evid zurbB>jQav@P@wTL&!J;0>;f#UUFPpv%e`doMkhS4`F?e4#gIKZ00L7iYXtxeMxvDw z5cU}Trx9k0Dgf+|+`|;i|LC3JUm8LScknEM#uVTYKggDw1_-)MNy^&_Qh0N)?(#~a z*O?e9>haYYQ8tE}fB=Y&G_t!!H-XuFId!VlWuLAqk@L2|RSXKnvK0f)Q6VV=@MujD ztBLz}{d)|#&1jnk565PUm;dTw2euK6zz78C(g8Aa-~-!RHhTMIGId0T1Vmpbc&mH<4@|xzK|3k!+BG2w zGDv9D5Uww!iUR+p0Lo@`J%+27okcr6>Wk4jD{b5RTzZ^pZ3>@e(|~km5l% z1ZR)ecHBuQnk|^Ex@G>R^%5#WmyXaBZpCU}FiB|be%3L0P?3j2s~3EY$hWTBn1scI~>PkZHDEG+1IdjSE`>!{5Q%vMg zKro-c%=Z8s#pO60WE(?4ka@J9hkF3G=3K$J9HP?^(3MDXyJo2e)spouX0a`(Pj!FSBh7a!J|6+7h2iGfWb-q{@_*$ zIF}szYumx?aPb>}6o+?PpQ~gR%mWrw0D$|WJepJurJTU=tD@bFY8g=w3|#@ug_LT| z?fZKPSxYIxU<#$%ZW}4;C+i0#&jP8P2-jysoAx%!UXv7wmvZ2!1g0ku2yN7ZpotX7 zj7f4JhMs~(PeRCmJNI|sBIz?){3 zci8Q|!oTk&h8y3?kuXWA0(A&mj+X7K?Ryc$3g3d)z+&*DnP;#T^H~Alh>^eA6o)N+0HC5VjI|e2&Zeui+~gM3#kAJ zK!r;sIh7Rv*nVr;SKn9XM*wI@Q9MwPJZ3*w5Gb@Rc2CF&`O?McdJqC2YuY!(dpHY( z)*wa3h>w`*M?pbL8e;JYlnHYnTyZZB7a>Igz@@m3wg3og5&%|~ngyi$v?R9tRRR;- zUsGXt1sn=Ztp3CyA}C*sF`X1m$QL0{)(T%d z@bE1C52pz%-5`LS=AGOk7_4&&D6qpA>Ur*GLftAqKk3VS$+84e&nTZB*04FtPB5cI z{Ky9+6ojz&Uz*RL*C^l29A+6h$X`Wt8jBm2M3?oC}_@~efXaNTKT2`KiF^1pdD(zj=|6H|#HH*1%J@dzaim^MZPVaK2X&d_5nE zXG!o1mO#WXPZOH}s0zsgfUcHtdnTcmjzwWX%e`4>aZ>eE`b-)b=TvCBCHsa z2#h3xg2drzMniSu6hJKDGL!Y+`p^yN0KkI*jM;)$4}(g^cn#Jkur6RG=DmS31cwo} zofary!|Pf6Z6vhx0G~XU1UF$7U|D*jQ+!e+fp`|LFKLW-IQYkeq%|gK{ORWqy&p9g z-V)N~jRuiBppGr7oaz8?T8T>C)~BY!04ouWofw|e@-nyr*1&%@xT4fUIi2(gn8m9; zZ-5Js;$)o5cLzHRVCw6NNWrH(vlv7Y{)z6;+h1@vv^jc)D~EPo)YQ_pp&ME z__r-!%=$^;1_Qm<5}hJdIU#`hvV84VYxxrH+(+d|Mc_gUUS2mtH77%atP?|Eo?Wobzwsu*!d-5EWD5tVhtq%<}(OJtrkqXHikQi}(=L>JX{)Un#<;NU!C zcW~OQfU(`4vWKiR9*X@S4Ebn%(Bp7PL54lq%x*glg8`BCyv~oP1e6i6lt0FbG%&Y; z_c~^V7=NgpAzSMzB#xng8>IO53kwo5nxq#%$bj_jX#+4FZZsW`c}$?@SHuk!v?7*TruAFpviKTeYUSf&O*F-YpUWpGNc}INW+j!;}MpCT6Ps)%iXW9&<0gzjW zl4m5LBJ`})8X#z&H2WN+`Qr1SEs%r?9Emsl!9YEy~B=0`?>{Ha^x9Htp;Yt9(0)5aTzIn?=os&1_A4LO^5FpnNv}yhHh9T8N)SK#AIWT*ov(>~A3OaC}8 z=2iJV?+V-07ZSvX(pgE}NW=rSX}E*m8a<77UzmJ?f6NA3xaD8JJt-n~%*>N#D^B1X z6tNR3xJp#Php_(mn65hr4SFcHQFtp@b*f~He~6MiS6vtp!dF$Gm&?}e_w|SzzHk}? zqO1@$c-kuPI$ndgkE##}0EBG-K}l5|q-*wWhSC-Jv2%LHiZe~u`U6RX$3CeRpH3d8 zEXtFVcHVm$!`gHy_mo2ew|#}qejy~WADiSFjlM5 zpH+Q!3!2*pz-uZUd-0aysJJFFU%i$}2RAiuIr$w5kDSD>)K3eHx}FPNC{Uqf{4&Y9 z=ilBX4BcAI3C4l&co0(e%&{~+BABA|*m*nc zX?1~Vt@wrrk)j{UO%RAx738M6`_sn{cn6&pDbhYyuMAJe&G`Eqpd7Re2~WnV1f^;H zH5S-_CY-3Ue!`B+yxm_wi_A|}ptP6OQF!I;GkDeaPkm^K#bn9{3(o?f79j{_0Q_pE zqP*D5mi}(ICqVVqzby}*R}rx-BJyxWy@kWK>X2eKJjHX=tPNwflav$3k(Img8 z=z-*I7Nb1x89^vF@Vpx3J*}4(DXGG%co&*~R)Q+o>lWd6t7&v(-AvQ5iQ z3e9_f(iaM@j9=jYFZn-wzVV0m(CnC@-GYnm_eLq89*HdZ0reronfLEwQTd=j>D-uu zc=W;ec%d^2b>IiUF(1XV>h!BO7P|UL*SZ**o1G?+Ee2-*XiITn^Amv-ilY9)fnDl> z1(4(}dwHWt{AWl@_DPIwy5g$fy;jppW+tH>cM=skP?dO|0us#;_s|8`?8c@_G+NWx z2`c$V-ms4RU1>ATKsRzdZwtjb8aaM9x}aL2^H+idn0*Iwe2c$s!{bQ^UVS9WJoNdi z?yt?f3=$&EyqnJYnnglhIwA^bI48miIBN{TKjCL!NC)sksOJc6Nquo~f+J*~?I(DMUUJ7r zmFo0;{lHc$sh{9gSefDk7XK_opsk?ZOnFjza$x$N88;_=WYqMK9uPLt1pzvRWCwZa z0;lnrZotrWzbsyg+0Mx`@pv9V*{^}!{=k6yX9>rl$RFUp(CHH?CMb}7!)*9bWCb4K z772*BG6L|Adxd&__+eOU8h_MD*co0;xj~e9%ZNp+!4+Tw4iULx@MZWN^mq4dIu8pY zmb-Q1FI8@7C1#0|Jp{2NuQc5K@YU6T*BSz>`mS5l?{rm5uSac6sAIh za@l#CPi_{?@}B5&`}-secWNQ~^SCho7o$=Y=hfJ7H3aEq8S+-GHK6Ril2G_UD ztsIvNviFS67CqU?dE z`o8pNN3}zs;n`Z+6}^0(L>Fc>+&;Q)Ce94#ket0gU4^KNkf+(`;Q=sygi~)6xO!+5 z<2b#+C-zzX21Z3bNG$(%o79%@0tptemoiF$?B|CE)|OwpCz5zDOWu29IZvu|j(6io z6>C(6L3oE$dc_(=MD=(-l=L1#lSWH(^U;o7EfeMHUe^OBL_VP6{%q}Swoa8^xDa1r z8?7ONC;=pS>u0jrHWX1MYdbRd}T(*c`}wM!NBl{ zB6#;t9R+d)gzVhO5#h6DSu24Vl_35sC~HL0YR{I14zl3*L_)%q0Tq-oc@d@<*9Zj% z8QB1-M?O{NX7@L?cq>I5V?%|dafu*!Mh%X@l?mD?_4a5hp-zI{Z zm&t>aAd&Dn9!Vsgb;yM=Mg_MAkpbZ#b+SzYmp>0LkHImnL?~v+P{3Bmm3_u>+&BmV z!KQ`6#TzxUFjmBAsQoc3gA>9!tu*w}Uv@L95R_5+WehruK{$?EU9$zkd-P|dVeXL| z;2?F`8At}ZP`at)BGZGL)7l#G$)p<{U}`Wu7b-LIwGD@nWf#S@335{+6~`HQT{ zho>hcXm~|YJ57P_M?I{)o5T$6*xTEZD5Ay`CDAX}PZg6yZFjfCdJvopqMayUWbNzpH@3lcwdewk%=2qUEfYR4<=yO68ATfSmQ4cu6Xx z%<8X(yRZiSgct)ZT(g{FoZKjqq-AqIU0K~rmx6HQUWg{fo#-G&fRFavS`&#ruO zlp-&+3>fhMM|l^5Y^C;YkQ>9o^P}*xcQAkrxxsVidda??4_XbM=E)*L`#x9F(HqWu zZ(>l@HkAmTIbngrQUoPrFxI%|E0mXyWpn2q1d3V~Mlv8r>nRgPlk5Y;@d&wx)37d- z9dcOavt)i1=DUEX%w51%L<59FYGT_5k^AVbIFa(%eo_sE^Pe0SzC>)(Wu4l@I z8KXJ{pzCV{8CKp0WyJun#d|=WR*&8xqM)ci$wAM)CK(65GaLdJ>B10I#(y=D?tJRo z%a*_Xi$#0i2=yoc#L?R~_!X}WqCRqvdh67KD>M}5DFdO0rGWXThkPzhyZ5l8gexIh zj=5OjpX!*KiQmBrP5Ct4o@q-lK;<-1QTA)k8h;pj5+|LQYdEQwn`k&A$=^gnV+Rrc zOpiQnn?7Q{KERis<1a6fNbQyW?=G`A&O^lxYI)j7@lob5XhWv5ON0u(s{)qI{NA9) za1avdvCf8Z(2UK68)J~qo$vis`$q@ZzRq;YH&c7^MulqRGoA{ zLhH!w3y9SF)L{5-&E*~U;JitaNXeNPd3Bdtx;MH(>Y0Qg!X3~fK8h!c@?ZaMoHc-b{LNdCBXgP2*oFFT17Ep- z7?cVddvqpV9@z=f^>#pwr*7c-e1H|6@tz8fJPeP&X2A#+$j}-WT)-I3fnOpjP}Y6C zY#jtzIXKh(RTc(t&*|tk&I~NfDCF!sk9eQTqZr+_fCIAqc6w6agngk;k+w24>kdTe@3h}RPe zx8o;2TX+H`$jZ|?vPBeNvC>4Jz=hFJ4;TglA)*PWUM*!My^J7dn;cMB{YMcj1uF8B zWp%ItW~ing_C2)PI2aGk4RkRYeEl;#)vzY7h^H0>(frgB&x_`9N$Ximx9X=93$i|y2TGBh(wNRNj`JmC;UM5Fit@+DNN6NQ zXuscj>2XH`Q7=e_OX1<3f8nN~Bo@teSpH;0jqcoj^x`ZB;leEl-xrBN$DdPC29yh_jLXPSiNj^10RyTlbjELp{r{{ zFkx$mJoB5~Dh4T_$CCu5PYyJJngTd!Kj8XmSyV`0U=guBnA|ys<=9z+Ho~A{09uHmTZIo z>##++Tr3oZ0nIvqq^9>(k9b@0vxo6#^X(|?5Y2O{S@|Q>MlYy?Npcn(94YK7+nDYk zLM=ocBr?t_H!6g3{6IgBCbIzt&Pga03SmHaF=wP30MWZAR3bxAvoH}dJhp+R#z`@H z88r7&mDZ5{l>oXI#=c6pW4Q4~av&pYf~-apB|y zOOf~+(%~$19TpNp+LxTnAS@y;2`R}CR>T5#9g_K{!5Je^0vj-DE5NYe8L3iM6hMTc zC5=k4+V;Lxb53@QoZ@iO?e4(g^`UK4?ApRC(HDUK-CzpeGMN2>;Oa{D%f`BO;T!Q96^QR1f% zYOly*xrhm_cs8!RMTFTf43W`rNeonHrGSgUF_XdO%(9J0nBs)A-Jbh#EF^-$h$}NG zMre6sp#jYEitI9nB#{?2-BPA}Z(vawCC6D6re26s#^})a5 zWLY(90Gf8SRE2(tV+ z9#b`Ak$rlkYd_GSmzAAzIJJK2g~l%0kl z9c_I{lACSNPyP;SD0!YnH3UY9*$ji7-2Z2lMfWQN_sAaD;y|VI4oSsCaP1}2>QF~i zAgku|Vo@DPEDChUxVCXy>C|zMqUCZ4SLLy0oK4e#2u)YO&T_l7HAGXgyixgq^~FVL z`nU4}znbw*Xl?cKVEroCfaZ}QXwaud(^o|V-r{dOTCL!wcBPik`&G${r2*$l4`zte zgY2fg8mAXp)Is%zbxp(PQF$R^ugl}6(wjhJ$#|JVW!4uwer3q+-yQ_nNe9%GYFyFi zZZt7%vddT2d{u;TlCdyt1WQXmKNYE=Dhi{U_3O%?+;39bXj4gSYJcC95PWq4c_rY) zHRp^LHD0a7h*rzQYpk+Td?Hn~Oqlq%H2A^w!i;MN(wYi3T5SJo>G^fd`$Wyf5V6F7 z)HfR7Osd`iLv+{mtL7P|ACOm+Jy2ZTWOdcx>k7Xl5W^@bihSHkv&@NR1DTf9>jtsX zrmX`agEHsY*BfD-ZNC<8PNvp!uAgn4xp_H2feTIp&m^wEz~ zk9Hr5d_4M4#1qirJUXNZ@M|bh((>EP@9kY+@%FO#mso;-Sg55eG8WM)9&9=YA2L5# zipY5OUnUYgfI$x`S_~=&4ysz5@n_zbs$4XAH852;)q8EWrQ*x%@HB(cg-2{GasoqOq5Pw+=&>Y=v6R5EG;QXcJ7|F{RbhRoA_W%9Ck7(} zQe?ms56JIHj0*$Vf#ZT$AomFBf%Q0oGcJe+AneMTE~G~+?EOSwVK7kP0!XBdwVr<5 zR{!{V?_1rT9@ibx5v%Me=%2#N>bBS%Oz42dI*^g1ZB*I$&4kY!FGwL?5UVapCUI zsVpE43o)^l7Gm~uKcY;up+GYHZ{Tx4XE@PYVt*?B*5a%{pRzypGVRRE^fyz)FDNdT zDV)L9$zUT5$;a|;Yxzv+iZwW{eSq+=(oOUg#z$c9BLZ|V5R=bghF_i?#e^W4{V-F5 zSp{U14sx-2PP+bO+r?Mc`(CB}NtpOgNRr7@#6qgvR+J5qpA_*4#mg#EAkgVpWJ3!o zQD=DxWOtzX_lACTEwxFXN|Pz5V-!E%)}DRtSc3 zGHw=tvp`tjfOD|?Nzi2wR@RmcHDoOYR-zuQLh|LHLFX4=8w=Oom^b-5LEhHlr|jD! z*t}xT;!o=+N@YeJ@z0A@}DArwgz#dD3G;q`OE%# z5X!L+eUM8pX6N)>K;`pO7d1SJRA0VUe>3MC5ehR&G*;2vZ%+Wa3rX_Qs#E`}OVCYl z0~*bWLYE-qFTIm)us`wv!b>jtasyD$*O*fQIZ>cSFD6g}$3bV`vn=0BH$s&RpPvrY zn`@Mglmsd`FN;`k6V8C^+qJX*)+ld9HuK=_S$gp+z{W)gX+X)!{Qy2u>#0QyiYe)m z4AQ|TNO4dvbL2|30Rg;g^iyjT6L1PiKS~b5;y1t?!{bDt?7L!CumoZH4K--9`|Kul z%e+A$IF zqYt-Y?^~3Ru~;}~Z}r_PRZs@(AOV=Z~Z;!adtjC#)udS zg?SGC?9bMCT z^dt7&k5+A>(=;@KRr$*>XGYra7~>K*{uj)KBlfi&$~WOJi-MXkL0W)C`bhugjIs>| zqD87T)rOjLN_{bqZ-3c?o-KNaMBwy^$K>r#*oS&i5ML{qE=fc6PZt*CVodqC8OvB*dgb9ne~Qf1YyxOef4) z1#k1aDaX?*W-kAI_2_Tg8EaE4JeLL=nfSYU{NG2t8ExK|Bj^5oe)n%H;jy%^>EMA! zL^8w#|5E1=SEm#5BY_JDufD@)!35-OYuuM@a=BScQnT(&gBSy-u5A*b*UXgXPQlI$Z5817|Fwd~}^u zQw5eS^Pr^~_u@Z%)-emqQ*^!XS@DwW-T_gaadLXd8u$9FPorg7zVxB=>#P6hW2G;1%x$L%O&oQSHeMvW zV<`#L_mCIGEdR^1J#2pZzx5a2(}o_{Cg)?hVee6HOQv9{bbXNxzi#qh_O7)+#y@eJIPw)i7~B|HB|HUMlC(dh3%; zCoLZ^t^T|5j<7gKd3Lhy?QA1mRxR1Ksqkml{f!2>p6In&JSS^d}HRPIJr#b9-~pVqw}g9q3v`-^EhK+l;>gwZ`^Y4`lGi^=N~t&6h0oaj7pq>f*<+lEJE zsgSRK@ZlMk^t|;f1};;1wke2ur7a9gZDC$DsM||dY_38*8Z`+d1l3iI!;p1Ide_0e199)rrG)F!-6JnD)&Zqg)x!UM} z0xi?#74^?~W$UJ`Z$!EJ3?{B`(gND*izGWcI&B!2~^84bwlRDncS zd%j%ONM27_G50uo*@l1}HoT-?oI0t59;WC`Mp#US!^q%x>_O1#$|~)s-A{1r3EI*OtEs!KQ6nfomEurX}1@@N9Dt% z-{kFN+N z4Mu^!R3K2YySmB_O|hF~s&{RTtqS<=5ZwfunYoAW1s6N37bV6q zM{Hk?^F<~J3O%Y>H|`SV!})uP&F|L>`&UKLO9q-BJ660OvPJW^n`8>GLwbX}b{(Gq zA>t0)nBQZ7FEgxJ?t?N>Kw%c69wO62D!G!r&2L9kDM{{lFZaD?Oe~%tIK_sWT?Ix8pbw1czoBv^m?83A@`qtw@*Ja!L-qY?IXz|WA0iOOQ4`PxNoDqsC3g; z`nKekf0P4u4rU@0A%VnC=I(Wf)FF@Agj&e_4IUNfc0);~ztTC;^A{bs@hCo9*dOs; zDTJW;N@qf2$k5t1I4w7{uslLS_Oh5ue`wk(p{6AS+46W zi0rL}(RT&{HFAg!%*N(TobFa}#@u_!hhF2T9~8dhj}2vSP5)F;Y>IUqnJ7G0_{C3I zRZwO2J$f;H)MQ1W0IW(|+gZT%L2ez%V=o_F$+I*4*DVkfg%;QT^U{==xE)Gykt1Ka zf=>5vVH|0Dww4@CdW9EE*^8`#Ij5VqZ1a+h{z+}j6iwc@P6#Z@mjCXaNWAk|Ft%ew zd1h_IGHdTu5LVdM{TT^COV;9D_V3$$1I zKpxY$*l8r~6v8DB(9xn(aTokCJcs;YMm^N&J>($HQHSM}{h=uE3W!C=L`A>{1T9 zn^rx%=*YP0_mE%#bnJW^ko73C^&YlOsa>2EOTg`S1Tc*~=x?VUGCrH90Jgqs=?-RA z^?>%w5caQYXH$jL~IP+eXj41YE>n6o~ zRmlOHqsyR9OH=<#L};%(%wXh(E`eej=z4$74??Q?XT{>%vV?XiyP5ZVYy?C(6w7Ix z7n2}5p5N96&!ix{S%V5><@5!p4FNKHTj>yrM|lCd8iOoV5GCUw@qa3^%0aI$(ER|) z@iuxI2O@;4j>Z(5_~$6_%Lz?G;d`*^$4F5;WFxsh+h1edD^Gl3I2|`aAM8(0hiS*& zN@5jN+T;uxP=!&KCY`E@rWcZ%Wu+O}j=Kf@v$!B6==Xilp>(xPE(ID{`4v9 zc1CYb4X!d7dU*lla020gsZii_4Qq@4;$(jad-`!F`)5er;wUL8-qA;IrTK%^lX#$til$=(DyvlOb=hVyiS7^ zISNDba5t^JlIh*#$QqjPznagm)%ZlyY@604)6|dVpqPCp*J*+cX4R)3#{!Sk(O|=L zh!LY=f8F$}3{o1~$B4Z)O{&ZU=-D=oI>HE@^*nKGPSEy)i-a-VsBDvIa2*eV%9^+t zmNnnmQUf?;M&wL?DZ)|OWA}nz4})}pZqj^h zX!(9-gWi7&)Y3+}AXHRA#ZzgjL%H&a=#s_57DVr=%9~gT|N9C?c}P)Kj+(OgYM4)F zlvf}JI5)%X3EgF+5C+punLI(mCcO*AaTQ5zEz};+$)gB@6xG6zZi%EuGiJ|`OEVjM z=rxM*Qix@x*j`n)}PtV}7Z-uBh$o1k;*Z z=`)*idFqMuqQ@8uB4W%CPQF||;WRx-9T9W!$i~X;Qnq`h ze@^AaE5_~;F;bwQklX)oGp`@GZ|3XZBV82CggZ$9AZ^uX1sp zxnMmJM9e`1+|d&mFq^qM?ze5oNjcz6#6j-YWetcT%btEc-KMY$jYZO1`z)yo!nQp0 z<0xlS@mJC4N3M8CvrSE;f9=SA5)28lOQ*k(1rZo(NBxiJ7$8`SSkukNpE#rK#d&|E zULL=Yr?CDiZZ{xC{I!t2b#mL2hbh-M@8{oSi1LLg8NPfY&L>K~cXAizx=VAz z$&%ZIk6xJ!49|b!jYt^ct#fp{k26TCr=jq^7XH3%Df7wExi_yFz0Sm^PR%b&O)Y+K z^#J@vO{){w)^E>qoe}4}bUi|24W>oLcVeUX@AoOBJX%-zU09 zXw;pqxiP{QGweEh;dq*l-$`6{~!#o}<<^s%3J zKQyp-d4sx+^v8pTdM5Vn8g&pQ_K62^^#e_St7&LC^&9XD;5ExlNB=k2DL; znl^&s(xYoWGQ%rEhB{Vm{O4o42;Ya*nsOjU@Mpx}*|k%%*$gh#ZN1WOUB4&QU?TKA z(=p6k238dhsk;`Mcs9F56OoQ9CA&X+y_kKR4Nu;cwU{YKT~l%x&&_DN;fi+oHq z@!Fg*k4^v`;etq|d`ZRXAH^{gM#~F{_N_BMK?jkdB;RE9`?748Q~)a4^ET=qJ@y(s z0!g*Rh{mAgS^=o@O72qh#V>0Wcb{K66TJC8`m%36 zM)}}*>~?cW$Wz}FH;#b}v5(r6^Y`hIkdG_=-&a(_uf^_0?>0#%)ogAyTg5Yu9wMQh z2!Qod+(x88KLTTfUQvyEXk=o~;aw3PCx!>pD4?Ggbp;VEg-9ZX#W&rRtI>fEoI>{@g<+{U*}V5 z0n|D($0R+PFdmpN&LiDZPR5~?+dc-q;R~+i>e;nP&en~(wfW4w!Wl8B?<3|le6}KX zDKh_69!@0j-P#g3m)qcz_j$BwJMcg{3U;Zoz!hO4%7CY#bIu85)p*{SK#@)xd+mLU z%x;U|3z5AcpMy~DONxR>1{Ay#E-tZH0nb+)N4_Geh(a%4(UtN;$v;b8gg0ia>RB+1 zMsoEJp-)dd_8gn0M%0TPhlNGn^FD)cWgn>~{mfwplc>jIH#MYtpc^u|eEHidmyr_X z=RGLth41`+O>Jugoe*VZPueU9V_`kI-@yGR80gTH#L#SDy~Z2W95l$KvMysCq)A*C$EbzCWmuljCqBEFyJ$$$CbSv7GxypXx*GF^^$c z9Z!;G!qR$ako(lyZlwzYrcqzS>h5LC7oR^#Nu9F&?FNgR%1W2JopQvtDWK}dNMxQI z<5ntJX(T<5&jle?0opr3?|BFErmU*W74u%EA9v?h{I;CHL+|Vb1yVL6EqY`JgCf4X z3pzkG#>oO%F6#{!0L z*KZi!d4J&XIpV9LW;MZQC{wAM;(ywDOcU0p9rzC*ZL> zr8Zx;H!b2OZ^`v)x_M5xF*608E&}{!Ni|mhloC6OdRMV_*Nb*)L@Sf?vGEt{#x=8S zncFkTksG7MmO4`dwvNvOxqW`e)MNu3z8nK81a znH&zjg=wvo(8*UCv#yOBb+uetx@V*94a$-|E0?*ekf%_9Q_NSXOIIw=IFF;DjdQ*W zxpT)E%NEVHJB|*Y$Pht`ZB}y$nyCE4-kDP*T7r8->pl|xopDpkOVsP&oRYPp>kT5KYCpWvp=*K~(q_}`@0Vcas=D+pCUfjl*N-}}7;_l|Sl zAxev5Bjorl4071~OGm3>OPQ0I#+AymZ64(xDTaqFc8b2Q3p6uU(TV9TUeEM4uZTf0 z8}0|6;@!PKm z?@o&f>N++Wd3b%A<0(nzrFuOxXZu4+?6v|cX6(QFD+_jgpYxg$Ab?(0n65Cs^TiwV zde)c~oHd*``%vsZ=kcm_IK*_PSM;ed?M3;NkAL)tc!5EYr@whYW_gE#Ne`?#Fl904 zrLoDvt2x{}^!3HyJpGxGCN|AW*fc9QG}PT37vgQsOv)aOD3D4m8niC9uX%{7_VU+u ze8b7NTMH|94c&O#%{aheK@twKd)`a7)yzE?9DYHAxLLjp>xQUq4c`{TDA`87er@md z-<0u3F?i7h>s@Z*;mmk=YWBe-c`ZRpiABj~y4JJj-=4&Pammg?$;l-{JL(JH^^<0! z)m-)uSiLKHvp3Lq<;KH*W}iEs{A*SJzVN+p+1$mTJBas)m%rtYqU2-dLEd(JlLDI?hF@oRce)wB(c(3%AgC_Q~pI z6o*o`xfn!l6xWdx6k41%mz^iGmutC`^C)BgwLax5aA{FEB)2kpq?=%J4DjbsJ3 zJ7e%%h~_l)QXWrw&#-cqvY3wgibyU>#KuZNAZ8dWNbaF2A=|`^a3Lb)J+uQiCuq)S zi0nKbMl#BV7o~xCPLb7}_!D_7kkQEKGPv>CMx?5dccT*_OTog7$Dv2WJ`SbnnR5c( zfK{+)XXYNvoyl(!xpUpOZ^Jz#DL;a=zo^C&Mrx+vMY`hl$H>Djr6+MXWM!M>Lz)LU z7$>X`5-9K=F=Ec}d$X2nH5RR9FKxWg1O^-R&qsS&@_ODiuqG3A-rKyQ6r3PIB+s@D zI^@HZYPYNfyVtL)Une_hcR6(`yeQ)5OpC@4A>u-ESLrpR+|toR_1j0j7-Ac_!j0aI zjc484^TRL*FLz&=b}a4ozZqERO?$y=cPQvDnFp^9Rk)}gZKyi{t^FsV(&yR{awZdJ ziu4ioLDidW1Q)k7cIiK24e2rU1za#KktOV$gYZ++7f)9I5FkYInwIqq$}9l6N`hG%r8wCo^moDg)4crwap%p!Nl?&i13+r8Wmy5~$M2{*U< z%Z6kl@=c#62YuT&rOS0Qx}Ik1?lg+_t=kJdh+W3-tATx=Fp^qmqm7+wUVR(BkId%7 z*E-xI`!=suO`Hj#qi&w+TPF#fTGZJ31h&up>{DEH)$#`C&T~0!clmXc3kiJh<=+oP z2K8;_-%8mcV4cfArn5woRXbQv7ol&0_Ka^RfncZ>`&6D$Q~5(tvF&`527BCBGv)O& zTXxmiXv!ZU+<0S0>P@YU&;+1IUx8u>!#*un4@old4LLt0UMu0`2qz|iV3agkVpSw*&K4Z$=I zVq9c%26TYanTP8bG9uc8tr1qk5NI%oGXWY~gjlT);pUEqq*&ut3C2+YLbX)W28K=_ z+Vu{^iXU?7NTq!&!79()_n3`#)F5)t*{Wmc&=sOrKDhZ0&#M|RpCZF%+T-8!h}eS? zewS>s7Km|JZazO%aX3qzxPKKV%W@c^Dit*IN$_-R>_(Ve;S$EW_D&A4k{#e!YKunrk2{nm4Ff1Ab2%`Y#9VN}18y zA^F5Ppdu8UYViNF_vX=1fdAX@41+NSV_#-W_C48+H8W!wq7afOV-MLvNMgo1_Nb6F zmXM{8q>^T_jIAUgNi+5&Q4&&~`TqWRpXYtfd(Qiu^PKmb_mAh#+0NW&&OO(4e?Is1 zxh}&bLACu8=B1o~YTRiSrhbHI(oF2`rVA^>gp+7W(X)`r^O7{`yAiC(gnM==<(TL= zJa=CQie%NX$jE}$IQjJyM+%<}~xvrb7%_7&bEhY*3kzonW z1zf%KNmWzw23H1;Q} zDT?F*3}xR<_GPKJ&!cnwvu0CNJ<^Q335a!|dL*Y=QiZ+llF7r`r!6wMF`pxX0cG3O z=ys*7)}n%Ku*u0qr;J7LCPwZ_YF+v#UEKjCGx+&sFPNo*Ic@>tq+sr$5CsBC7fMRQ zBqM?4QYA|vPM#87;{q|Mh~^`3g7t;0V%}y7j|0Kk2TQz&mI$Vz$*D)Wso`a|uu>qB zNeyW|89Z+*23olz3zUwp6R({W&~%E3OU>AF58mOHW~L&>l#hFoj*oL%_Al_q0JC4B zqtBN^gQ-#bKkeoXz~vK(haQW_ra5dhteQNq3c1@P?&fWVTdVU~+Y@`#c&} z((r}1PhRJwsTT$uKeNxDmtsF0Z zF{{}!;II_?$TBSjvr_Vp7`8zbdtpnpaNwsJ%7_)PHDO=~~mdi#I5t zYc_HkBj`2V*$4!u@rbXnKj*n^haYLgprtjF61v90s#)D~P4j~skJEq8VvRRBkdauE zW-LY06UIn={E%)^K{woW@lN10Ces!MQ;rsL8fo5qvpuR=M@03~MCVfEe2B(Q8pirq ziHdQ7lCOrPXoHcjCRs$i^DDLfD{+uT^(<^NiBnNn3Au?uRnVUkh>(}rayX4Ap7dkd z19H#Ro5wX;Iv*rZ&}?U-qq{c+t#b`3(rm~WRPP$9n_xed|4iML>k>)TtoXZGXvg8n z&?n{U;&?|**a=OjpxgZ>D_9nd*+@q*3E~ZIJr;HoAzvr7>Wh*0C)R;o1Z)Bn z4F|AWR?Q32Y~zu>x?GO2L4fvph?p!|%!4>5Z^y&IHJ#5%>&K2wd_!f?>>7NHlQ6Ae zp#~En=g(v6al+zHE+9BCpPO3@*3qe4RHb-&$3yJPPO2C$uT~-F)M3bHR4;)p(|DoK z*DnwA#<_`R67sb?6*ZC*T1b={8ye{@>+yWd}R zB)88DAnZmVVk$x0D}pkYTX~9|#8R+wOW!+D-@i=^=N^joBd&f++uJP2?$7^psAE>z3FHta!xMR*VihrOi55 zM>P>H?3DFpsxqaBj^oYmL_2;%TT|%wx`|U`^o0`AXOG@q z#`ipqhk;P4K4Td1*wKv1p>|Ia;Wef+TNGvE;zQ;zYi?6K{?I*9=UC2GqSTVgT*?tj zp=mDd#sNJRHNw3z)=Rh}g%H`E3qmpJh6pPOZ2?p!=i}&6U-(K&zH?9nT7i9da^@^1ybVZ&3zJ4s>iN> zDBJYlqZxwO_OM7{_NVH^YttB-+r<09svl}Mh>!i#Z4a}jW`FA892+W0hQoX!fBYF$ zYkn@R{^Klus{vC7dL{>fE=~BEbXB{`7##1hwS0mat~`fg=y;KW);zy#f-7ZYKEF^DGy z%B4zmSeZ_9AlHGxQ=CKh)1a^rh zgKDm|aj($4{%d{my}ex>i$MeL!-Z7uOwRK;V9fJj)!-AMg}oX6^~PiZqT?;{^Q=3E zY?Jm|L$^-rc+NnaYHx=1S}3Y9r#P!rZfKbkzJr{E*IiG3V9IZ zoP|cQ~35>Gzw25jr(%to?~Wf2bO1^vDz(=M2$E)6Oa~?`oKcEcCr)j9qRp6}byU zFs)G&@p+-QUg_tX9?;nSKOA_U_BVCCkeGfG)n}KYY|UJ;c}6gEee6qB(7-d!4t1K5 zXomD)RdEalvKM1*)+_TMqPk~Lsd*5UL_icir>kz%2ymMFv?Bn%dch~W^SA`7FM7x6 zBEg9jg~a{$sBrbx0)G=(RSc?hQ^_oLxXr-dU0Y@dP*zC){G}Iy`*O#J(2gK-_4;#> z2`^wm<<%IoUZM$#u(*_l@Trt}o@2iLqN0?pv{@LKWM>PgEo}x!uRcKN=Q`V_J-w1C zpO&H~IWIt_s)TW*su2ux2vDz>^D&gOxZZ?Gh!$!@)rta6v*dB5mq1q zcwUfsm{&G>_(vs6@#&ec-=;~lihPR7tll_<5o1`%n`;S*!Pqt%<)pkd1bBwTc3^gf zpJrZ#<^H)pWUPJC!A3I3uQoRqfn8wF;FVG~9O@L_aA{=NBwu|^aP72(qNzvBKJPg_ z8avT~i2wK6;cqx`;E#l1UJMwN>J`(gQ_yA2 zB(#5{K=jv|Ls!6(4C~_b4WOq`(`}xx^G!O`F2J)h49aK2(*AFmQo$5(j3rz@L(g#t z0^mev+{S*&Z>^v?i!qqBJ!dVmltK9$*IqEhsY5a@!0&zE_DY7hnlI4 z8`-i)^55PG8U@kBKCI>aF%pu$5%G&L*rr`gycPAUiwlkVB`c!HTuaB&de50hc`NIp z>CvUR1dUcMnf(Zcqt{OVlV?JT4El9b{hPC$ewnwKtNthlUw{^^wT~FSsM6yo z>#CBT-I2s_pWcV}HH&qjhkCQaMFyaX{_*LRmk(5rfi1NXl}wbg=sM3@LYn3ugn;*h zxXOlf6y$%7oh~r{4Iw;2?ydgmwK&)=PCb4I=x8)l?0R;?Y-vul9vSAzM>`a}yed@> zdDH2M7fakc@h%M?SZ<}BW!0RiLMvURVZ#X1n=c>I-aaBjj?LJJytDZN(rAHItYtXQ zM-3DR`94s&d!cEIlr1!_Tc4L%3a%cDnrj_?^Y5P?ZcOd~7gTx4L*2G$buB3X8J~~# ztAR5d)-xREvImM_PGxpQf+!^(&CpB$1R)}%3xr?YaeHE)$Sg}EAC;-m(UB@wTv6)o zmkX+hE!y-w-)D12i21nDMDrDO=6w@x3f_ zD{!?l5u3HOC_nkW5nIe|n6W*;(Iz#M!mgbT}Y$bWh5qVlpARp8vZ zjP%v8PLgud`os1Gxy(BrW=}LeM}2uPu#p(k&hy^nLe5GbXVIopg`ABxKI`Q8pnXnj zR_I0hv`zId5uKW~1EI>5CUu-)Yn|4dp`wE0LmRz=++vpFR@He?%c<`LA|UJj z3+C&@`;`l63Lo1#Kj+_}$Y@1DpUadZg7)**fIPj|)BJG)3N5`ZC$zq>?z61EL~(JP z{y7#SZfL&2U31y?%gNi%-#>X6e&t>EdT=KEqg0_&(HgL?RGH_a3!J%55#Y(H!@P(9@0Lm&dSwHu^c_(RSTvI0X&yld_l;v0Tqjs zn_=sev*({l{7ZHgjNN6OP9A603lLgjda*V?$4Dvapa<-+NQqJ(nvf73q*p>jc5MQT zmeGQ)F+Os0xGAR}Zm*tff4u<2GANVy7e`}xy)vA^*jrCD61}wH%E7Ycvn=r6u3QuS z=TyD5C;;#sMmTP`(B-$&|M<}dMjnmNNZEs%Q|(Uir=xyN=QK*AMo*bN;`3S< z6zIeYhC|VamXBvp>pD=s5TImn8{B--`BdjR`rK0Cirp)A8&Et45&mQO1b)a-J3s-! zZ2jVRNjg6Qz)?Zaz+g`MKoU`|9?1U%Tf zqzztiSTUXC?VwqzX-tQXJG7F*9#w{(HP7*7nVl!NecdaH>ZkZV7 zejwSJO;o+S7#3G?r(yNed|O_yTEFTq2Db>KN}|3w<9Vw72HJsqEcvBv(sJQfdCqAD zO%+tT?@xo<*EEFX`tX$6E!HEJB)v)jynJ#zi2Qg?$5ks)1=)*+zfP-rBwxC9YT?}1 zz?|_*N#Z(2s_Y99oxF=43-X^ONgk`EBPPa|3JT<=BC2DO^yDa}UY1m~!!Y!yrGB)frcx-#>065b4~Iryv4rc;NeFP|Kk(^~grWO4QOo zU@~_M`Hc3eZytS&)Mn2{L{UYj$@XN*x<+RLv9lA_aX0vrWwThL$4Toa#-d;Oy@usZ z&kl&nfc42nqP6f{hULAE0YitwFL}{f#L@4nb1=%$4{w_9w9VF$Bv<4FEJYzm|K&m{ zEh=9`vqIc^ayZ@vti6$<;CnmR*31fTX1UhX=cKWiNRPe$d)%!j?b*nSQOtc<;uVll zR-c2uU6GyBzzL((U#eR{Lsx=*xvuSKl`W$1_W*1YomVGRl72$2`?-JknY19N*mrhPgg{cO{G=JZyu!C(u9meL?d8dq0(L9+_S@^M<7aJSDEse>(~8~YN)B3f_Rp%ZQlwK^!BZXS!PiaqK5${_~y4Nx;ZCh9a} zHS1rn6DIhZa_P5h_3b3VU4eyrNo6iL_`7|; zlZ_TTPbIcX_9l$*wvh()O_fLnibV?OXf7FbrXo#J;gk^MB9HQTwOpwZ7z(AX`G4%S z&s}9n=*ylP^An`3Zqg#SL{pWt9)0A-a@*jM<8ts$9{7Bf^n4W}obSQ}U+{QSa$uxS ztCc!aLp(8DTb}2T;pvyLj(^qaq|&ICBnt8G&-`S;sdutYFCX(;nQ%?ZcW%Nz&=ADC z$i&pjZ3+;$-g9Np@bIowc&8kqRLjJJw)k2;*;6y5kV9ZCyq_}AAL+2``nG=4NB3VY z$-+l$pDsF{_HLPj*N{U)UIS+(SC9czn(4Ax-Gd| zOD9hDkUUu>6R2n$|ER5z%%m56&+Q{G3}m~SO+;!hAhYdXc#8vsC6Q4{F_L{f+E3(CxdA? zB-gM0twT!yX-Y#j%MGpe%7z1Cq%jI14p#DgP=6or42FBm5|aTDL|_w}wa1}&nZy9I z=CsA`R9SbXgf^F0MKqWC0DL0|cr2gydR60jBC;D_sQt)%b)0itUM+DbV-xUgh9zkW ztR2a6>1@Ba7Nn6a{L(}Zw@Of*7zCsboA?+}*@ zy0;9JbeiX`kk=~n;nJqd*hKSSES2NtL*o=>Hf4ugxa}?Y1=?G*Mgamhbmh7V(@775 z*~a{6tF$m0sC0}rp{PIo(C8a&L%XW~$H_YzTS$d!r+Jnn6bQ4SB61hD(iY)XKp4|f zz_&`KeQ>yxY&QdxJOBtDFooOk2%qnj0^52*3Xv9$qJilWKbn;)t(30>PP*6EFR#z>cvrY-Y;y<8BuP$4YGcV5p4<$AMuui;}$5FII z2l~i%|H%z)(Pr;tzw14NiV2&-o0dW(&QkU*XsaKRLWOPmh@F3J_|5)Mz@G;-AQJ`@ zgyK)q#~khN+g{hlWtND4zzF2)+bzV1mX@eiY`5(b5!ygOZM;>|H#be#r#hPHN0!*8 zkKisn+W&P2EJ{^h3?^EY&`A{pP}v!MSbIB_cDyhGEtIvzUHA^(6C(%(N-*TabL%kx zy@mFXk5-BWU3gF{r(t9jP9qaxfj%7?gJiaVi*$95`Ri7xke5>>5;^o~tQd9{ij7=U zw_HG16KYis;SYcTijnzpv_&6FBP~47gtJO-62lK3YNiHO zBUw%c@5TFB5=mLwu9-@a0Vs9^4lE2D-YVl>)a=P&GGpUH^A14pAw?zY#hf){UsWS16C$*H2g*xak!vf_mHT_f} zi>2YssvBAYf~(-#he68va*h+D;pz+A@@pL4gNSuJasrP?*3^K2`94)4XCEN6IF9tQ zh-r{T8;ONgz3b#+H zj8k>A<`H$ZuDGcf=cnN`d~7Nsb_y7mdL{0DU)&(@%FP>2&pA)O1}5ZOY&fu#*{pgf zTQAaK%Xj)Vf-K<503K;&h04#v=YfeQs?V5>O9$Q{Kc`*!m|EXV;JZ777y%;JfJfq4 z=e7X1b@SusM&R-4{E_N}W&CBk2b{dih@Bg7+O5>%BIhRMYDTKxRnE(}sw;OHspzO3 z=ke#+Zw!?c)>us)`SHZ`{KME;*5OhQ>)hz28~sX1+_2v_e9k|W#HFW(8BC>EUm4s< z71xmfEgJFb@>OqD^{wCX-SYi$DH4)KaW+3qgsL;P0&hTU)Z=_`YjVifz-vFz(*F6{ z;bf7uIw}8fuF^B-dGbv?Rb)C=4tyD`@{cTd;{ZY&(xD}XNTSR1 z03{jdg=v^r`CeH~LOH(`H%tUcQ4wxRkr-mj5^S<=atd~{mgZO&?v%Oms>3IZONS%G zOiYlIEXj;21O=$6Ot|;=Lp*09nQx!`0$XLBT6LXTC6~x14rC8i`XLW;2q-bxgegxv zHDD*&OI4`Kfg>NOKTm;=$lY$5KSC=*Xi2vXvn1I=6f-{3{izj85Z(@eL_gIizYNh# z6*R++%%N?H2&gv357vX%PTm=u8=Wer$Ju?D)GR%3dw+d0Q zZ@EL#vL-sfg$QsXv?O%RyK7WyM#0m8hfEhJ=FwRB8Eh?C22l5cLplDGm z^og2VyF(80&G)qcco8d>@FJ5tk)#1+i8OkV@60mJn2p4SG4dXbgfsaYyhIj#4~1gA z*g;}Kg|ZiAGkLYDhVBH=H9#U^6Elu=U_{}`8?i?vXr7av*Y3^A$s z_3Y?hrmb@A*+QS8rh}o!h;v;B!rchQ5%V*=TR`VYMlhS>X(r4L9YO-qloq>ofp z%sqd{u&(A)X6cKjzP+lZ98-6(8V*3ZmBr17<@C$+MS117&(s$MNG;7s2iTqe18F1BH;` z=1I;C?na;Y$EiZkDepyycT+N^Ij;?T7V|Fs^zqf-k5umwqM$?@Vpp;9P=l{#9<4uN z*Y|NKf*E|6ExF@Al&=4X;5nC3C9PHKu6E(dM`_aCd3-PZ`}P(-ewB(`1tKb(_8z?2Z#mp=JKV~oz?!Mj87$7nhhyyVvUWLff$O_> z?i4*NYR{IN60EiTuQ^_RuZpX-AI{!=uCIEUj6I4W>@zQ zc=a2`s;qLPTL!lp#_v1aF}VgYXqryHMAGeLX&X7Mn^!z4b5 zxvkx;#UbLmaDgPoamBIgCsy*zU+jFFeKAK7+qkp4wLrb*sl$)h`}J8=XRxmFfiSaM8nfJxP z>JSOFN8?@FAjLNQ1a9dz+*w6+PiAUBQ4JK2yWO=}%^P)SS(zPJ9zqgNgNFC;)pbaVU3vJ> z#rn!*NJv9&W>ikoIJj37-_rp>CgK637GHh@J00sf8T_f|16>B zsM6C;3m(%A+a7xX$%ekQl8e0j$Wr*xh;E0e&yUw;hYRa?0@TP==!8m!d>b92`pJh@ z$=$XMx7Wm)Nj4*D0J3m( z9G7rOr%##9cKZ&ae)j&%{{38~(sXnG`;j$)!`oe_3oeve%3)?e!tUAxL0Kw%ThBt%49A<@s zLDB4lTpBFel2d#2t$^`rQNi1*0h&C6AkP`$+po8=CaXnxMhu|fdYH;mL!dz<^IPe5 z^Gck!nm}R+XKb5PpeB2c+%ZWOjNPQ@tWk%|$7}9fhbp4@&a!8a7qXl7=J=k;)yoCP z)O?q(Gd~U)|I|#D5`WwW_QH&%&Zg8ZjRi(^kYC0!fCNZD1GF7ofF7@dd?wqP9QYiU zxhNE{Tu7fUS?<7_#DMMiADq5Nl49MbCtetDkn3uL_?HoooAK$qF^YM6N+k%sJQ>Y^ z4@L0O>clziwFn!zyhBp65ORB(8=)!;GG_WpcBnC~^z4vWt^$o|M>YNYTS+oK3Wzz_ zfXOZNG#R+hk3 z;1%S%O{DOM6aT!NL^h>$RQs4te*E;XOh)NS_-DS)J+n;yno@4V+EmDF(Kf1W2dk6|9Z=P3FDl4gRMbcq zbO>)Rz6V`WJ&`cv`mp`xqueFU(7jSzu(DSvbLnVK!bnFE@d)6zxN^fgZ~ySix6;%2 z9Q4JG;!4w00XjiOU!`i7t-)ax#)`&zi*NYlVot9mt(bjJczXx*Sp2z9hI(3pteew4 z@exboBI;QYV!CYY3+=n<@zU?E#eqc{$GDtwaupgjFk)e+zg&r}9p}Om?gE{CZNBbj z;8tmhPHiN&c#RBykv^5h&97&gF(QGhV3CorZ09Uru{Mu%)!L&FeGy^7dmeonPE=Oy zNng>!6iciM;pKWD)=H?@V@1iZE!(cunBfiRePI;Ed%U~c&{MnhNL(-Icy4L5H+W0Y zaEsS5E53Ja?g{;pKeX0|AX@;tj2R{VH0Jnckck__2h+Egxk?)p`52 z_&$wDAwFxLuM;(tK9yUp(OzVPd^xO7$pW~2Dhne5%AZoQ!iQDm_zHVQb{@%nd0CNy zUhT@4pb_(bo$QdC68xSxT-wU}!aD~6$%Ojnmkdpf0%7f0m5oZ)vS`WNNrQ+R+A~W6s+Fz93 z4-u6kz4$FHQuIAkY$WAN4V+`Vq5jF#h0iEOCVnBq;}%Kh07AL{N&MdG57<~Mjg<0IfCV*ZWkVl%;0UG zZGjuPA=t&2O1xG7q^5s)prGG7BW0~sY#0hX)rSdTPY$soHf z9=H+2p8e*hyx&3Tx0&Z>RUlUjqt7rxj@R?%le2OpeIo&p-jT5f{xE&j^q}DEJ{st5 z3SYIQ47|_z9WZkmlV;-qgO;X6kD19VXTzUJPh|4lX5x{ktn}5(c2NnsQvuJW1Af+n zEuY5xslz?33%-rZ?QOr_)tcIFgR8>9YH*nZ_fWxLzI<(i!4*>Ls!*+Mmb*ueA_^kP zt&84?xd#B>k%h>{!~9XXeT@89x}XCC#{s&KH+KkmIy!1s@b#ew2`dj_@I*=lLp*)1 zf5;4J@whVGAT)!^@z_o8pY)O+03|-Xg1N1@u$tb0526PJe`6F;Z=^Q)fJ-yDMO7hX z{khRN5~%I^q96DY^G1jARmb?S2b0{nnfa!%g>Abq$Y36HPteULs62(odowtK49zoMIBxC{e{q*&*;&jAOs|RLMelGgmqy+u^WICjeQgO`L*@-z_A1@XLj=cOo#stH zo9)J1)^a1NoO$bLCgdKI$DatPV`hP>c$=6+5{Rcf*#~kd8?ws)<=S2v3WS8M2+M4h zRXq?YmM!63=E?R54JL!H@A2k+0Y_UVm&=w+%f}`^%WJ}y+)m*wWtJCxsp!HKeBI{O z>Bxt)=%trs^dRHsx(nfx!QTulwIw;NgE3 z`1?N#oS@QkgU*K{{veghyF4g2zXh_RHu=Qjqv2A>?Yfzl=gXdhNp2x7 z)Zo9%M<1sj{ru>%-eqcq_W7-!J9`eoDb7m@qC{hy8p|;L?;m3aQx$P z#o6CJkBlx)^>`XJgpN9%y)yad?6TvEE*>EsFF#tUV+>wm^mt#*x04rlkrotY683(s z4&U=(r18>-55#mucmKUSxc>k7FaLkG#{bzG|2H`K{|jndW~0{$pc5Ot{sRsOTq_w( z^y*4F%V=fM(s&f?D{yVqeL4Rldet(lv)OSk&e2kX?e~XoYx@mV*y+tx~mmU@DCVo@^~Eb$)v+UiX-PgkkYAnwk=0GY>)P& z<>S-H1;{qUz4`3p;P>q}ho3(B{7U{yMmnX6y$*i~ArHQ;wuOPhLtbQPX=DJHBxO4{ z^6avUa`Dk~JrxO$R^Bz7mhf+<_vXne`^)MutTNbIboWxQE(YgKqZk7+0W}?K3k)MY z-XCfojUs2mVtFwzUTL3c(K6#@{(aTD66@l_^I;~>_I^g*HfpMmxN!X1ZttL!u6EXu z_&<%=p|4IId5IwM+LrS9^9Cal!OEpKq4%bVr%Xqu&)2C3pC}G23f+>}aqs z;zyC^k~fr&;!$syC+X{KokH#PUbX|vl>+_DGMs)FT$7$(;76FMI%lZzgFK{ov~ts> z5;P6J_@6+p3!Sp~z+lcpYEW4@P>!u#S)|d(Qh!9IlCc-*RNaF>8?+?mltovm>=;aH z*>5!6bn?rn0B3sKhxqaqwNF?;J`mUkg|);?}iWt*e-m zwKvb2AGDJAf`VMk*zYCO``>bjle`g7bvXE?`Qps)V=_{C=IQ)$6H}m=-Rd-FCA||!A8m$czNGhfvNa)VUt1GQyT?yj?5`G|GM|po zfp>o2_T!_?iU$VPF)YHOLyXq(Ck#KB=?x0N`SjNm%NatKUvh9jHU`bEuvzp#vOVTTca>j1()DV8=c)oWNIfy^`D=3dZC{pm&<7=PXfCW3HWjQ8kCFDv zrFMSwTeQRpMAt_V+%B%<&GPDb9l|UD$%ogd%mC_=vPOLGBbIrfF#2jQF z?k?4v|3fWTT-n%LA!lmsuh!lU-~ZB3|8Re;`RT^~*VX~8KkFS+;eWn$tvvj*(fxbl z&vy#Xv4hQCiHL(OhRUOZA0tNJ56CW7$FA8rTLJq-rm(=ipV=plo7=wkD|opxd->bn zJ(n=oYr=Mtcq@Jz0FbRaE;(hezY^+d&R+q3d_wERX5Wzvr{jMNMz6kqcm7wkZQ+{n zSmMmbx#Jy~1Q#m>=^<@y0}d)DuXJG$JCls#olzl=vNnO^Es`I?;ytxZlN_|{{0~}C2fiFmczLrH9E)%zRLIBxkQCO*=$bL=PDh_3@@4N=n z*2f5MY3G^FQY}tskxHMJiYck$ujBm?jyBdfOND}X#SA?%kXOn-g7-zFjn0jtT&%jE zgnB$iWOW6HvyZ;9=Yp4nmO*_Rs>OP7Hada8j3Z{i!WRs(@-=6^Gum_srFgQ!Hypnd zP3TsKi=0Y{b8avW!=+xBrl&8(D}A6_C>4{Tl1t{;b>jdJ`PaaWcO8PG?XRi_r|XnB z=O~%sxotMNkm#brA(a$e;)@0FOz$)>0hs9&JopKTyIl!Nx zb-E|tzPaFjEH6K7K|@N~Q5DoKIpkywN#;#+_umvZC~dGg(KfCk>3_|`XBlJX=_2Op zD)qEM&3cRRHe&6x)P1K^L3l%dT7F6Wo$*S3`yy&U1CYz4m8f--nk~r?EztK4;k`5D zV6{%Z>*Q9v}gyimw}Tf^l3<;sLa8A zp*Wp4wHvVnCo<-w*ihfA=n(Lk$aJ->Rg#9}_MH(*js20Pm-5?ULX{os&9zQx*ZnbK zPa4wI)u|v3f{8Y71;AQOpeU^%|K_!gJL$Ryjh<-dDzI8B^-owKhcXUbrmu?TjbHt! zzm_8MjA5-!LeI`y3|^i2bALw?<<2EuC_AH(%5_YVKUlW9ea=lJ{?Su=)xy^9ZPV|T zlS4G|L=Mpq6d`#*C%`*rS;zE1>mpitq&2CB=4Ws8uFoE}NIJlmbGl7n!{rQ^qoZpvw&d?%Zq{R*0X!VV!rj`!vfu;HbWI{xWV$`8H- zRz6J7iJYH)9C|w|jaLL!(;jumxpMSly_|bY(8i~aKfjKBTo}Ih^7|38ERMGHZt6co zwd3%QmJrmcP-k|j5c}_CI@N>GII~0Jd~qBuiWB*5+xW}9hg@rGkIsrK(slMner87nMiL9moilK1 zLCqW*M+@(qr>&UIhWVYe_%*HYCI7)gsc#*N7QtiuU1N{$S)h_@3QUsYCTs35O~OB; zjZ}Y}Fq|g)awAJogyqK@dm-Pc(`6k*DD-oRRkZ!;t-6?|@tn=RCwG;tL!!4#wEAUl z*KGxa$b(z@CZm}+#ZfPI$3&0ed=KPqC*ywA!!V|fqirQk6FKDN(Cit6lWVJ zEhfR9vIIEV9yORyaVpw=pK>vG26Ilk!+Odi^U{nDuYrH(bZ~vk&P>?TZ#y3&2af)p zjhVXi`&0Z%%kR0Q--q9Re@@}i+GVCmgzvJlR37fm=NfJ7E)?2o?Jbs^3Ex{P4H8&C zDQqpoC3-4FfJ?Nzel)?VG84JKdOy><%(8NzFkQ%I!Y7U2Fc_Wq75D02!HRwf!9nZA z;{33Ttrhj^cb9lJ0auDBj;*TA3Oni#sXoq?Fm5$2!o$hm!z)e2Kisbq45Y1qxi8yK?qhvay=l5KaRA~u8881wme1BsFjBc)p1&aIi;uk zs*!!u1IO!%Qlt_7O>ssh3KJNqew>YNcod(fqF=$aTzOeJwZUjK3mlTd{U^98L%P9I z_}-!dzttY@$SoJo`VLNm+^SrM+7t+8vsWITZ6kK$$E_}_CEfTzk`h~J)0-8bn)88f zApi4B%{ki93Vg2bh`d;@lZ}q0@$egT6<9o`Uv~obJd`6e#&DMixLXBPeqCKTRJy!M z0;KW)!{3x|9K45ZIFZ~Z2x5g@SXE0P$xxA%d%X0nG~unqIqvNWVQ8w zDi#oSx{K6e@QHtqt83ZCf>v2Wh24Ll^5r#9cKZst$cwayN=XfNhT0a8P+O;#U;h^> z+uy8z(_|UZ5noc@H1)_^#XHjT$$wD!U2^wOZ$0A}2DzFF;3Rx{5ob(c2r>C2o}_T{ zA)#VR0#drq5j}4wWrceSGxZT1QaU#>F|hcm9EoE*VB?ccdndX&zPxKVhV+;Bb1{rs z>`lG;{(f7D?4^u!5tZ=r3OL^t=7WCI*+*LF9#yoq1V`q|*xf&yMGG7f;}0H(ey-dh zL%p_td^vpgG~$Rk))dT5)jN4$acys;>Qooq+2r?T-^+`GX5Uv<$K9^TTmgv(`<&$d z}E=4g&z? z!P7Fq3wfvzSD3J8VX>fDjcgnimO*~&evOq%Oyku}Vj~~=p8`>BchPSYqU?$mu=t76 z#avG?RtZd*d|$dy7QCDVLK`K`v-FT`WGzSQD--qiCKO0eQ^0t>`JRs-?KnEJ_>I}> zAbHRX`C}ef`u5s#MQ#;;>GJ(jaaHSc3J%4m%&sTJ`KB9L@1W9RKcJdD9pllWY$9RM)Ybr&hjO5$};)K_gwCY#U>(!;DOmy|l}`=82wTxo>f&gin#{4uZ3|XIBr41>PUq z|1CdsEAi4UD^$+8@71puc~0~d6rN|_DO;>D+UUoTkJtx~;99?e%mtWdg2h6s zfWpg(OOAhbW(9kD!S4}knHw$)*on&9vpxhP{Tdf_>9EWi>xbuN^xi09Ioe|k%Y>Yt zv>vOT;Dt=RP(z#k>ToqRd*PF%2%Rre z$~}dr;~8D>Rb%;Odz*HtK7kAmuMc%YnK{rW3vgCx=B7myCxew8|G9OxPjk8i6VQP8 z>|}d0pIV)8*3khGj2Hji@aU*+D(@TcoA@8Be78cuKsO3Ex!+GPq64kVQC3ylUsI6C zHrP3r<;(2v1pz-QMG}WrcFuERo6S41Fyf zm8Iz|>%+Hxs+kFO+lWQ&!Utn^r6~@ti>&2F2~aqTqfRZFeVr36r}OmL-6kI;#U9Y4 z_r|K-rRbj(^;>o4C?BdD?Ls1VG4*DTYhG7&Tk}SzqP;g<4sSQH^R^^*GmTg5oSsbl zR8dePi1Zf{b!tQLXv0N;@*727%o-q=!fRnN&Ie-FpeR5w{UH}x zL$UHy8AH4iR#euxT}Mp#;^1piR5`z0Z^_^2lxaUvE&Zzj=h*0SduXE0batI3DI$z#BNvc3FQbFgER=hV<-=ks4Jk$FvCEA~@)Fhz*- zE{~`tM|uwi_()*u>xG}sVXrKJkW+v#@3V2K^h;@B*oiqdN-T#j!!AB z%5szQ(8BJ|3nj+@9W{S>@LTp=>S>1D);NOi9|%bHP?8EZ(8dV2r+{c7;&&^|F~a*! z*$%GN!l5_&C8xel$V-*i~>vp_VAgC&SCCMsm}@M)yV(_=^pi zY6D1DaVh$I8USn)n^Qjj*OV^^MwEOC;8G2t<{sZ<@~SnY>G)UhodNp|{V?Y!(bEYC zaZQlgYe^R}J19`sM{_FyxRTtq{2)9Dho$j{^optmXuSakr)MezX)*noO5* z^~v^?B>p${-t(!+u5($X7&qL{r36;%9Sjq1 z^fGIcBbPtuusrQ2fUTlt>`@af%zdAp8?xP@zpNMMRq)Z;RGIsp(g^cQyq8x>5F-Eruo6;V^l84QmB?l=)w^>-CR{C?VJV;-Z2~QN%Fg zjA*c+VFCnKti;uMBG0-Y;qQLoLh*G`?UqI-PcIyqlf-$%Jmh@7Y}J5z()BTWrdc%L zByN4)6y`8DPj_7bHmwc`)&xm^v!|+AA)+H};nmshO3Uvs1Q0*ABM8S?%b852NtLxK zfO+ZGuIqIGbX`~+l{y)B<9wS_O62are=Dfef=d8s*Djvw zULjQzYy^{cjgU#R$uHpMN*)~chI(>#ad+>Tt1W9roKoC4vp+QqjLmfDK#kX-?n<>B zIAq7O9JdIIrlCCtj*;PHOT;5;Is3CnCH(BaBU5l0iQjIP$DU}mKmO`+_Qv&s4yV0lA{8kpeR7jn4bgPy zlMV?^WkuA?l&lXkm#k-rJ*okTC+OCp{w}+?l+CU5#{!QXQ}JPSNKhIHZf^kB(*%m; zLqQN|FHJ=FzUMs!uNhZpJ|^aU1kkg=9(5Y8iA~lI0qViHTQ?xa zNQf>Zy*UM-tqGPbak0imRA|z_m3PZ|jTJi6eqRFrRqr;PAH<8rZ|J)}$G{zt^kXHr z3iA;{AeYOh^p1EyickuFQ@Gx;x+x`zM1eiBfYyZRP*Sx-y57#UqnCH3SD>)Je3ecH157OF<@V{1 z>#x%gqD}HMRM0n`oH#$pha2J$8p4DuB~{Q1d(@IWpch`}Sm zz0H-rayj#X1F~Zo&?O4&iS!r?&q5^HE0VK5$-CL(VfXMk_bi|zXAWazb^ zpCwCg<>w-(Z)u_|T#<#0)ccx7`&Ej9rVg9G8-;|Y<97#^1;s2xX5#l^YGzAAMGO<= z6$V;S)*57%%9qIu`AzuC0`^uc=$ zKBi;M1lsC`xiTKt^H`zOEE7J+;Ot;j5q%1eNYmM$8bG2cgr~+hb#K%l7w#0J5SF?4 z$)?4=`yXoISj?vRrYw)y-qCx=1EuO|U{>#aFxfgs+cwKaLXl+tctCWz`budGwQc>? zh29<4QR;Is#x-IxoYV6Dk~4W(#;leL*8R6MFy!^(-O-R2-p`NUOq293e=y~eyw+Mf z$&X%m6=MHHWbDb_`pe5((`Dm(4;X%Q1=V#w3x6U}suNOmgQn`<3@zEAq0(jX=HCYw zKdx`3Dkd}eFUkVGo6MXnMYEqq2uZt9dW?=_0oojY7VVg?WfzQc`fwT=GAc_bJ>v{m zCsD3)*l=pnh}aM}fV4L0^o%y9W8+#k{4FgqP_W`xS`u;97MlOBnC1V=YyI!r`=6Kj zKQHrtUgrO&GgFPmi3UvXOZ#7pD642asW=hxACTjGH2$AM&qiH!=cCcOMZ%|Jefqx` z(fBm_YxC`Y7|{gVJqA;9$Hr*-DdV--|1hGZQn{uNyFSbi zwXQv%ec1hR{*GcYuh~G)?!y}M)|+z!KVH6k;BgK;M+<*hA%~tL)&~mT-w!2kok$Ln z54Nf@1YDjED!YGpUTad7%Psoj^K$o0>VwCRPQM#HOr~Bke-dMMu(R0ea*0L#_v!wY zPS};FPh!uGzkhzuq;Zu>r7`~Kk^o>AT}uE7H=zR{QlHk78{{DyDXi|oZmFEuspVAe z@K4n)JaM9%>8p+gn;D|Q?CzNoeZ*IpQWK&A)|lt#Acyv=^sQXAd*1GOnjo$_x!UYL z+XlM4&D(`+LeI8~ETpzQi*2-(z3w>hMtPMu(LMAkb$xf{Mf4m{!rsN*i^P`s-zH#D<^)B&v+Grp8UDj6ZDiO>o{l#Kn)8ThLkQ_jUep%@uSFYdHfiw ztX%LoCsSDP1ZU8!^f+%kB6x~l)->c9q$*oxSiBv9pOHF(ht8foHw}FZe&5z@&h-7u z(Yz*D@|dE_5pev%P~`scf~n%y<3$St$saFm>;rzha`3+YW63Gv>yOv2X_6<)o}~dN zZ~g;4!=;A-tH$=#sqD5xv2v&c*Q95>L90|VITXRaE8|k^Z%MiJa$Fafg}}r>7A`v* zj@;6^${V#&{M-NG_FekNKesEt|B3okc7aZLqb`g0>_hYC?8t3W|F^>(;!N)0=ZaO0 zN4p)LpZwnK{QXb*+c3Q9;L}8wY0TmD(LL3p$@YJ0$81;3)hDK0%!5x>bWEd9S5;k9 z&mcFTLH-AAP2)B{JF?8f_&5{g$E6R&v#_48I2O~#(Os6AfiWI!WKjdt>dstJjR3E} ztx0ukOI}n2EKL^A{ybbG6u&rwKmK$6AoMr56!h|x3S>xYHJ**amxXV0$PJ}e?3 z>O~EVrme~ji+YKDv>Bz2^@O~pDjHZRk)Oi)Jpux%{zS03FmUWF68N0wD zV?Qj^J46{Q{Q0PiN>fREhpPg8wa`RO^9RfHQ~~C8 zbar>=GZcEt*v*)=Wnp|VAw8PBe{l)g;tSOLp1R-4V#eRQDR{W}~b=SVS zfAeF@O(AppQSr+9!dorZ)LY}?T9(c_dhg?MM4f)hE)I)%WK1Q?c|C3=#X;j z)ekaDUC&?n;cG9f>{^v7c0HEzz_&WDc=kU^`zaL(-&#Eg(I4CaA|e)N%6@c}_E2KK z`>$PozaZEDq>c+KEtL8G)&4?h^Vjb_{uw5;)_WzipsZB|?e!ZnDMJAlMkFuJatH(5 zAgo;4$b^g(K3wFeZYPGIys!a?NP+5Lf&-B}g)AS((9gvor~y}q&YvzxQ;If6Pd>Bo z;4qWC0w52y>7jF`#bR29E>sy=TH9gP z73KnfMp9A)dXQfHm$|4+0Z$AI*=W6iHAlGN%AR82m8 z{NoXTTs9qBf`eQkZQ>`(bZu5_(?ym)7?|nHfLQ`3utx6%^m0D~!xN{O^E$FD+w?bl zrkGK2JZ(DjWdM{Ad0x9V?5CCxI1#s;+#J0Ix;n)tpo0NOSrqu>pof`jEdW)QM*uig z?cs3^1v_juPA_?zr8Zqo=N&o?`@7Y9LB_E5>H##U^*S>-a{R)|;5T#A5vF0@L!xqQ zhB;H+i;&1B}f_c0T61)~87)iBLC`8AL8BEv6e2zu%Eq>I)qLZnihykeBp+Xwl@wIkC({f4~; z8zC9Q$QWskRQ?o}C{xb3!_eXL@`dYJ4DB^q_P33W3s@ z7t8U_GSx|=ewWpeb05lo3%aOrI(ikd|K2WDDvTD2b&c5g{=`G!O2w~7=8p{u1G4hG zozdm&<5Z!gxQ{9RkJrEIB+aU~d+=V-m{k3yW{PhH$`TXjNEfu%?A<_uVH^Jr6|rIy zNJAP3Z(}gMCD3^%IAkaWQ4J)JAP`ZcEe1g9kA@exs}MksI8<{dvCavg>u4P6z`r;R zFjpGuA)@&Fb@bOQ1+h;_)CNeIy;AH}kc>274xDh14EXUn5o(#pv5Y+S204=wI(Cxv z$-(T2Nng`aSlw=aRRDbDNKnScQjzhA!aD6Dnn2pvB3FoEe%Mp*i&n2eMI?xw9n#hn zQnVg`3x^WW;B%RBIUafo8|D=m7AUJoOHLa)O%20AMotBuMnps{Ld(}7Ar$CW>Pb*! z1T?7@nu+&FNKPYy!9F-I0v;NY04^j$i!ec)2MPvL;St_2G6m|G=2wJ)mT8){D?xKH z{zm#)x$6*uW{Ou@9JK+Mxu4l-=+$kQsdWm*GU2z{Cz%djjk)HaTED{Ywdsmx!-Pfbn|!l$?P20g%I~hz2yQ76U6v z@WiR2tGS3g1F4J*^kgH%JWdPABh`86~l z^wRnJXE4yuP||2H5n0@d43LNV{%Hc1l5!Z0ic2^$rkkLp>tIE&QqZ!ZDH`nNplFp2 zZs^WtIa81=$$~XQ3HzX;j&sSjpB6a#;U|dO&mbJBv}iq@h{@_bQ*gn7&dmXxB#77! zOF~nO6~*gZNq$%Omh*a%L0|C6r}R1kuBrnJc|p{Y_DEPS@qSGl69I}T!m#ABrv}M2 zXk^_9lPX8pgJ*&1ebA$ZxIao7KqXkItBFnov@fdsJ_oZ#10+||TM(O&@;b8!4I5Ri z=u^Uf{^SE#&H^cV5RsLmyMefgyJbJ2Na|fAmJW~U_bcrv4%vsrcvtljkXm?Xx-tp2=f_SY!MNdl`(?yM+`i$h2oV@# z3#pGpl+OUQ4^_1zYtogWv7@p4;-o%Tc&V%3#4e1{!Khfr{+~pFD)wq`^WaBSbS{PmdKif06z^tGltNaI-JC0$VA|o>fkB-VjwA7>bMI zuDs&w8x5=c71=2N6SPM4DKE!+Sa}l}TOb~vhz)PN0E%~&ms06yA(S^zN74MM^{hVc zvccCG?V@Q)4lQ0y(oH@P=4k*EefmSik}txEa_4KgDEP|`geM(biH7|p-&%4kNBp(iRZzbrpPk8T9yz_cZ zF3p2ejxa2x@%l-;+!@s5dV3WK@+1WuG!;4&32h$8Dm;aTq=B&sAbbM!sTlH?BIynU zT&r2tZU+q72SuWTftkp2GXRzZIo>r1pn$6SI&mFf-j84$vTMWG6K7F9>;d9Yh2nmJ z#8%t1sA=aJXVAz55ac(M7mQo`7|aw+oP&l+{elu{z|Lr}no3-cGF0_*OdPT;VxYNh z2duvg%IxTn7Yhy2sq6szk(9EEEGn21@#znXu=q})k3su5cohv8hk+uEo9Sq~vFPpw z&2GM|L|H5>1PoC#>F;xe^br81lqy{?IF1x00rSHT1q%O+|09moHV7+1#oaCoP2XvC z*7RY@Fi8`>=e%F>l>kyRz6H(#>2Tb)rFlTy&!>9F-x?*PLGxA}$ai36;Kb%au~xeo zWgw(7F5g`zKUeqkZqN0iMdLmb-!jSJ*qR}>hH1cj6g1DrBo`f9v{h4zNfMFap%v40Id;N?lSXDj4!8ndBmSLe_*OU@^o-fg{G3a!F%tu42f zxrRh{db2sg-mU<(C~o_oAw*Q8``Hs)i=htTQqLQGoNs_EjS!i2h5qdz9H_dqgWeDc z2pNhPznsA94}WpJNX$RsPpP{?y8F46LQFpir2ydNfrso5vF<3S(gf9#65zAZe?PkE zbkJXS4bDw)(~5>N@c;r`gQ<>52A9DTS>T1&ijO|tGE>9vWHwSVzzPxrvXDDJrk|oL zfy0LPGXbGg9GplKse`A-qe)yQ^?4$0rg&l{y2R9CEFjB-c^C4QDgss{xv3_Q8t|d% zGZ9t$Oe_R9PR^>FR;UHmM0cVYJNQr~4La{_B4;>lh#3gzpwC$iGTg72r}xtEHVr(z zt+1vDl0KhyV2)F!TAGmix62;G!FR=5shW3)zlryLF+COZm{$&MGmbX<=y74Kefk1x z+s~Fx@m5dH*~!`3f|JynYk@(vPq>xc)5MjhvL_ByQnP`XAiK`mGfT8bu(8D`zBh*YF{$NdAJ*U*8Z(ZM$U&pKdZ zKaD#6R=9FGPAG$(7kQYp&rs-2DY08Mf-2RroKJuFmKOFuxS)1Vhzw3|Zda~cY*}8U zYSz171eD=}i8_mAgzAR<3}s1h?s{-Q{zHgyq=c{gjZtgV__~ zCknnG9SZp`F={b1qT4i>^rdBda;BDMFk1A@sMD-f+U$7i>}Ee9&nQ{Yw|O!RnPWG1 zTd}p}{#?z_+yW0r&QjwOVUOBYoa|1zog`Anei-Uaj!wW4kN~gK$AOCjcUQ^duuvYO zKDuaZ&Oh~^29N{LIVu*^NnLKD{PeAvbDdMoLP414OKQxcg63bp zU^K`S{8~>v8Ig`zU@4DFR*bd9_zm_oJeu(9bj|jS^;6|8=3ZG`JH;ciNKN>+D{~Ks z0`u9S5%ZC?ea+A+JK&>>Z+n!R$|><&FBYWUW*_W!I!!lJb-3E>)$1gX{`!+h_KWgw zfDQOf>$%8J{ws{w?^P-o0gmRa(TzZE~6iwY!X zGh%}u_YbxW1dsiBRQ@*gUe04sq95HeB6$*kQO+ujnzNuyU%0^W^fV|4*_OG((wk!v zFckPO_F*pG)!bY6)_RA&U4eIBGT-O&uWGGI2%M3z!Wj6Ft{DntfoUX#h zDm*mm&F)Jjq)g*|Xu(dq;ijW9lpVa@gw|qEj5wF{A2PJtsC>{#Sl9)F&yz|ozJcb7 zlCJEfKb`52<{b)h4erd(`$8BG+Kb##02Hm`^WPzh?4#%pW{bAUY)Z05nxQ(_=hp8w z6jmCG*4ICamC{^JyDPz*z8YJ)^etU{m` z4dIHf|DXh#7pYRPnzq+QIiTUpiL{CB49Pa<3jK&C^WKR(JqUxg@lWcA*tQE44 zm`Taqj*oqX%jk-kIRDs^FG#=LmZEsY_yJ@6zyT{wmtm3UF;uv>9QS8VOJK;*A)ex~ z{X3iaa>U%yUYO$6WsL4!3Yyvt1hyk1!( z@8I2+HbV@)?Myy^@@+Uz1QPaR#0H<~*a16LzccA4tL~1oU-8D#ct&K@MI-FCF* z!Cj6I#%~n3-?NkxKBPd8%&6eQu|G{itH5F7!_nUx?msK`dFMvcJdOSwzVMI6Jpm`s z^q>3keog%C@qR8Cj~pBbr5V=E61Ggp|MPpY4z6|8kk$7W;8W2hHDdr>SvXo4YPkUz`Fe&snd6JI8ntDwUy#T*V}Ex{*7dOGEleL2yt2A_Og=RS`jM9 z?)u?_xBFa53cB*-*JT#D3m0E_c6EO9dC&ib#XpYwd82vIR6M_mXI_&LG`4-dCDTZM zH@!XwCTIi$)}KKJ#EBNjY9NPczP9i?5>rpM_~xg!3XS1W0XYS+^aiK^qP-3(r2e;d5IJC#fYFmyE>owh8tA^vdna588;DNtRbdw?01@JdxRB&=JY8ZW&>u50ceekV&3v>q+@-53N>DQk8 zkz>fvmcB4@tz&>D^C4w0>p>l#zFxhJoZ`_pSz|uirbpj@#ZanKCN9=ry{H#F#wXa5 z9$uFg$9*&>`h6zo>AwbXNDD9cc+{pyLB`XOt)6p}Y{@$otj8|!=k$_XPXax^IQ6Fm zN~s4U(0dK@SH$3oyoRN=@Sn(W_AdW7fUOeQT*s#O|8}+ES3l7|Z_U(@7W|ZNd(^b8 z7BR;0nBJqCg(~VhdcmFLhMly>3TyDMjC%0_w5o_H1^vjexd-Q4s7N_mR>>FE9!1FJ z25h1Jy@RYE&YQ|7bZR&FK8YRx6QmtYZv~rM!iMA-0;4dOv20x+x z_Fas;DhIkX0otf?vTnK3@dZmk1HKDC%|uj~EAl>lMG?s<3VIzO$VouWVDHd#lh4KHUs;(!IVpmX-L|?p#0l@#?OCkw!X*l=hsrx zYb*4Fd3i#{{L;S|b98j~I!(}V^g(ik-h)xrBtS`5ofnSAQq~Q-P*Jmg$yA?tsFm!) z+Wk;h#(Pu-zOtXEAUH)|scT?nV~KL^UKdd*(7O6^=4!3Oyx@{(*RD?u3Nn!YF79aZ zL8qZ;(-{D+sIQCuXMxUiI2Qx1L%zu0zZsV>b^J&3Jaxn{UCnFvxi|r4Mi$kU@)MgJ zpt1h-hn@+0d(?NpHN7HylLb#PJPaE7|A-Yyo$aSVIuWO--I=GemWB}F=Y8d{s zE%C~2Kx&C>s0fBn&hy4<%1WE9W%;8X6xZ}YcRIP&f>A+tn1N1yA=E~wj(R=SI#vDt zhy~durGvLW)3VrxujafQUamIZk~GrODF0Pl)3IK^q&Siqx#&}kV~xsyGSI68#Avu@ zIzDk{jV6zY^Dvj@wbA)t_O=CEtR-9M=#bKn0lZz)HkF&SD4ZF}Y?pp=2n+1`RNW?@ z#s8*E)RSfEtEbh(WtdIdN72?#05`nfb?slXT~S)&!gZ@0dP5u!KEx&qV5&!V#poE4 z-I93dnynwY+oOwy&i@grN3W4(_|O%)m9s7BDKy$BV2#+#r!DpXApm3M*=HfA@|S2> znqyGt3$u`<3zCD0=j*yyR6q?{RZDbIQubLMU+NQu3PR-XE@|#;YMY0!{gqInl4lX> z=Um&%CDGdM;Jr2pFNuo)hLEAr3oS@?DVJ1dd)02smVE-|${SHi3!8U)eMQ; z*Eqhkr7EB5@i~TvM$Jex@FgIagaujd%&mD}J#RaU`4^OFRRfe;juKwf)@BoTZVYOu zTZpy{+j#z}kQmi$?b1^ER9pR1-O29Dv1s|$Q3od*L4zeH;pg|e0b=@}uP^!ZLEG(f z?l`nJERS;awmYlcbF(&Co(uocd8yae=W_X=l2LDO@8f{p+<=E`pa}A~dSFQD>e@&B z)BBwP4PpJ|YtOJ;4(c z*EX2aA|KKJA51!SG(Tym^xpsN9bMNHgP^$2<>2Q`DO~|V%iRJt&c~UCnN2U?*CiNe z$Nk6oPJq_im}cPlW=cdZxO=kv7gHJ+(`+STOw>r;+g7q{vdG}g5qEA0+p!YX^^uWJ z5A)S(;=b?ucDk3(t{Ex&FZw4_t>!)TM;e}o6L~xx9(UJiwGHR% zwA6W|4N|)l?yE^j#Le3wpZYf*p=hR+d{k0gi|aBkV^x7%x1UOBPonqoIf{X$H-caK zJe15PoSmg8`_M>Yek|#pRv9rPORg!OOhNMJZhGb`x-~7wr5PRYUuhpJS@u5<5}XrK zC64K`weQOa++zSrPhTmg5i3qXg*dt;i0u0CpkBqgXUVm%bESxVe+CsxHtjhuk(J=4 zrUH1dxgn;qdA@p!;!D{fBs;^i15?>ZhfEPv>psipSS`~-xVYb5@it~o4$92(;7J-l zJLjtrzt=_uc|ff`e5-~7gF$*?DaK_A82p2C2(NZepq z>jPrjW_qXiXd+C!@Qwr$MYc)K7%llqGLr8LtKRDkvG9}B)pF%G>(y$iGn5633^*gT z5Cu&xhCDpR;{qjz@9%Z#Jb*O6>Er7LKFCB`G@%rN#N%kD28Dwl^GaL=!PdrQX7IZRwXg~ zc}EwVo^$lkvv_*NwXQSS<1>5*`O}*OZa_Z@>L?+$I8AP3u@jnv1;Y}v!!FSAs07Pe zD`~@xpzOjl(v@~*?kqDI7fmW;p{B<>{&AEPeh^){$=U%+*cX)crb7P&fD#xyZ61DN z$6z_7#j5xyg{$dxA>ULrijFyzZ>-J$eqK~c&`lOFP0X}BqlGTM;o_AW=D(WFUzBvX z$h~@|zXvoyrRt80%qFDWF!uJ&qyTs`Gho)Hbh)bZ0O6LSY?rW2mQqT}rJ)hdtFA0; zm83$K?fr}b=Ng7y9nSHxBapxQrY#l!Q81gGBh&TpQY|KhHFt?RdNI}=z4^z4<5wi~ zMjf<#dDbx! zq?@q9Z<|84vuT1&terLuRS&E$VB9RTZ>K;rhf*$0M`eiHu(G+e&53Y}&$_>u=MyV< z`R5+&s^nC)iohcrn?|Xr8p#bs)l3yu*v(g*Vq)_tpga#(fy$X~Vr!P^b6WO625Vh+ zBWIae-jSeoWt*r3(uJMuon z?}qat6UXHZ7Fbh?E5!257KO)Iwn}Y4Zp&2nOQi~lclvbLuAL{0Ny6QNO3a^sm8gkZ zPI2g^f!K-jiw%jjVMJi;IouBM zXIW4Jp?RCqQ#%{gJ0p_~!ZDf5yNo7tO%mfUy|JdwlxwfjQDzge45umQD`U~>BTR#; zP5NxDc*eb|f6@#$+S1e)I#LOf5gBffI&La%LKNS!ln(jK*_jVY%MH#DHwwb_5yzyZ zoN}&x88T%i3x+S+x)a_+jl4Kk2&Ss{A&ZR z#eu3Cr4gn><48ElFfX3=(Wg7($e6$h>AC}^6B+?;_BUhF4b`8p#H2uh<`EHv*lmxP z%~*un4CdUx=|%9;~t3iaY9>^X}%X1(KA}`_c{M^TxArS#e3E z>$Wc>5`CO^;`7B^&^Y34)VNSrm|MzMPe}51sQkUoOa%)7RLAL7p-X{~_D4IIg1$^6 zG&UokK(OU78rU(q3DFX8L~lQ5_&(SRb3&xd;u0YBmkHHCl*)4+?ujmJz=rhJX8n73 zs66Q61Rty8Ec&W`XA7m?hNlX{u^^I_I+IQ!EvT~PeX%XA>ND`9S1d_7j`%s$}EI7AGk&Q`F zu{DtkrhkufARwgit-#^Unj|4wXGqqJ&?nue^?!4!}&DWOh0{5@PayO*cwt7CvD1>pd zUHF!p`4^DRo55*qiYyQ_oh8PWxuw6${UijrHr+H$T-Izp$hq~0MTOxrXHCcF2J82n zZHfX@FMD6fncg%WMI;)$&Ksu&1WSiE#+jq$&o(iImor@)F5GzP`qaNh#^dMr5t(?jsJrM>q?OZa z#2o3`3lD?kV$bKEhOd68I~*eV@K7qre<1-X{6cPFA5pKJFpp*^+Sh7c0_JKu*B-+9 zZy6}-M5LUUmkzK82<)VIInpP( zMy8ym1$#-$PijgwbwH~+ZmA-}qHu=o`*OUx*R>m!%aDohZb5@&guqjxdP?y&$pQ~| zAY}>AUi!S`S_m^pq=*6?LVETavKV!_^vNJ%Pt^$+iKcak z*>B-5<5H>=^Z}8+1e5J zk}40Ko)C0&gAj@f$*zXW$5uoSk9#|iBBb{ujZ-%vP3vy4IlcbXQV)v0B$5qx12$>3q*ERiAVj9wx)}7mMdzMZRo-^@U;Y zlfhWBB#s>GcLp5|2`(1^1AXpU<%fV2breaE{sqB!a;yMaVvYvFhgK9wMiP+D86ot} z>s9#>QlX(OLn1hiMlqv{9?6M0FJzp=7`oVrw|3Y9h6}YwP+C^?re#E*E66_?{C6t0 z(G%j_q2NF2%0js6kO`iU1q7k-cO1;>Lsddt<#g5|wM7Qk6L^;wLJ1x8ccCJt`*rZ5 z+dH!IRX7MP8MHb^NZA3)j)jl9UpKJ4zIT-W-4f_e4>qTsy4#;661Yl6j0ECC1>}-$ z$#RPLhe8W7bj(9aBQ0_`U?u7k8Z!c5T@{w+ZV((vK1;kxDXoCrC= zCkENFDWGkUJIGFTHzWCSw6iTnx0Ocerg)XDRmtQM=as^ew-F`1iU>Rs&_jUX5}F5* zH!Bt|Ug^6MlM!>5&d6%`JOo40Fx?+d$qVmyW!5)vrT}fx4|I>cs$Q^&Ob9HHpu*uq zA8|IFggEeM1+y0O=U=?vxV0BCRfl_*uWQETQt|ZB7(|F-xq69199`U%tt;={12d{? z7ts;6_)cm9X%20F_#(-6L=^#Q{$1d4CD<9Xh1c?5^~mih%7JnAHiq6f7aQ zI(s!DAdbJ9JkrU&(Y#tM7>Lz(?r3-?15-rSC|+n88mceS6#u;~;z(brpDf<#`Vdqe z^oQ=MZ>X~~8c4ujjwCT7x1{E@O1@gjF}jITe0tAr$10zxxA{3Y7WG`G>7IP#s!j({ zOi^~-2*!R=>;RZlgr@QL(}y78t<-&xebSwJS*S;vpH+Q|u&Vrsk&dbkvnkSBaq?=> zdSVJpdu!@yBn0blwR8hV%sfQDYIO)*YU zmZnwXSgmYI3ys^C>>el(I?)|!w3n1+sM)`)wV%nJ&U}<88nmyM&;s$1iOj48hN`N} zNh=X4C8P;e1v@zYinpbtH3D2Qd#gIv_roe(-62{F+R$Ofb$Qyn;8!nzCFl%3E z_0TYPD3dq1OXhW^z4Z7Z)nZ&MaooFP#KSXD6`!UGPiQhw?_rJ)_twZi>CXuEW^S0Q z$%Yq&C;FcK(I9L`MR19|fmpAtWU!NA)dQ9pfej&#G z{**G)H-sC^H~7(9hUmOzw2-G9+3>=US&Js|qx3}`3{(fshA6wU|Cub&tg2dOB7D#^ zm@o_PhM_k2GS?rgTn4LRruvq7hWTNw>oepb-2LdFf~KI~AY0KSXcH1n##4BSj|Lax ze{>qwKbn}%ByAxBeD`F2e zy+UU>2{c8Ph|j_*3O=%HFRVjUIN4d$TF$2G%7c}sfX54tccOhJo!5dK%FTJqkDry@&*p1a8}E#9M+h$;H&01C zM4j2@d}Tl!gt3hJU;6PYV_Y3M9&k7Rb;_}2TEmo31Xhn|y~0Z?bR>Jx!2k#Q%fzt4 zv&mEaEo7jHU5q&N?(1JYH=U*^E5;UQ;hGH@Vd#uyg*`*?CnjEG$3w2>^63d z-1_LqErik8%mi{Z9#O6_r@Etx;9e5Pu_Ws9E-*_&RTSS$zSJob#?H|o+DVPfZXWlt zTo%wURiu!xK}(=dSETogMa~`e<{NO?-~dfY4$)lW0FAHOD#9i+7Ng;IuXS{6UeQy7 zU!5wcJWM>#Qhz1QEKvjF&0@j1{)4yX--x#aHslMz{^{WhMX%6}v-p5- zS9Amd&@juD1M%n;r)ba9$?|;nAR2@QJDe%QRm5r)6up{Tuo~2MCHTwgkh3_0Udw6* z=uqQ3llEZw@Y?9U@j!ATAv#W7_yX8t-24W+H#Vf;&-3CxppBf7t-m!$-*>gLo>pHZ z{~3QjVl>zke{VI3OW&MUqn)|lifkf&S05|u`1{J9Hb@e8aCGyLH0}zJcKapO${Ff? zpl(_9$~EA_w8*+bcnEUTxsr|hA4~(Tm@GF;^Kp?$<$1y9c-pVXrQh(ld^CFysAB8+ z{#t8pzOe236`O7t`2bx@lkniTg4HcOtPYF!v1IiRG(l4`l2*|m&aBNvur?^E2_g`$TymDNW z*7N8}K$pBwmw(!^&0KKzGXHTDjO^j~buP1zYsjxUd>0?cu#HAMZTP0ZUAQMg9TC``PBC12 z-T4pReRJ7%dc;HOyEBCV0<)WKeXgqQtkL|z?gH#y%6r=M<^3gQu7Ynge5o15_6v5> zKTG#7p(FXqbZq2pY(XGP!LLM~Y!s>fcJYk-x_bE?i~kb*dOa!Y78 zc~KeOgtpzS;bTe0|NQ|n8sRHTdN=m7{oGE1x_om@x`kU;vhN<(N+NjqijwK&8u4di zvsZjdlSC2jIBuzjR(O7+>$YET!idXp?qx>|9p0tk#J>?TeY%7}>OC{x8>|@>*f~VK zKHbOHvIfmZyjOqky0nSA8VGQuJKY{Zw>IRIWfd8frxb+?#(ax%yJMUD^inC2!&h6_ z8E>{2=F>g5tXjOar+xgsKAyaS;iAj)P8jxhaKe*>>*Ld?7FV1fD`#xvqlv`jy386j6@BQjZkK2jo@LHo3m>YxESImD%;BT4!JL79$B8X7lCp+mToepV>2lbw z`K&4@1zluqAPg~cJdon@;xr)8f*7x~9`7~q@!TbJej!+-P=#feou<^!5=M0-^`>kf zIg0PrpHDyvB0b1P!LTF?*X$FBj(Kik&})cEcOaW!g~v#VkLl0A5pARKLYbMKq7#;_A^IZ)nY&Y6U3>)5 z`9}(Iop`WL+3=NgGX+17w2nX`bLn7{zw}jMmxog0A4vlCGtxn`2mLY!XLUv9Ji~CI z1Y0xn>dY2y(IL#^JNyt(Ky%W7xh}uY<1XT-W6m47iKEOu?mpO8gM{Vg9!@jy!%`{Z zmNQY1bM~@lQ{4c&K+bsO{@vc2vd}iLUkq%pr|%1#+D!VRJ|lI5Q(n9z9-{%z%b`O3 zJI<%5gf#N6Q((8ADo9r{)ueK#>bYhm2dA;*2IZAk67pZ88?-;H9=uD=mJqv_6F7LNq1^r~li^CH6e!r|&H`GB z*@vlts9A&FiOlQa(&S%=ocSITi1fXXd|~I38L{M(Hthik$R0Tz|XRr0QgYH=w-s-i2utsqnJ9a``zoJp=QUnUg2!_(|U5%vH0`~ zlYs*h6!^+bI6tin9rvGDZPaPyZ!wvo@cb->2N2Bds;Pb5w%=5WEj5>9%uNr zX}dOL@#dBVLzA>ViAr4n-S7`L5vc^SQK^v=qBK3mK4U-?TN+L&ISzJVo9Du0H7Lu1 zc9A-O4-yAK`LbG-K0;3xzg6Z?baqr2;RH!%O1}&#R(Q%6w!t<(G+wi_+q#tSLAFw6 z%6_BJjT7NyCQVNn~g#^{{OoMJqGu_sP@d>8iSDdtHj%2~*7c%Z~(tBoF^w!Ps z;b_?&nIaFdWL~p_Kz%CBm;+~@HDeS+Hw4L?(c*fk@@50PA%7y|re|$&n{I8l@!P{~ z68j8hoZ0uMWxkz#VFjO9;yL6>^(JC6z0a6Ry=irWB0KwMo$e$cqVmLOSkX7-MiZ6a zj0!zCZnM3%6`@Q!CK#@ef+lT9zuA2&HPipVCATx#Mw&i=f!TZuZET6@*^m}y11Lq} zB|{~qWFub?9*-0|K6qR>x8ec!S*~H|`7wIsfo$p94lLX7*H2Q;K+6`D1&; z8JvgZB(w}?FzaZ{iKsR+r0zZsQg8smJjafuz_=L)^byZ!ITy%=T1+ct&U|icZ=EG? z;)HYD{$L?}y=((5)l%Ub!_NDA+6?epe708XH?t}-grVWJZl2xn=er|awucrDx@Am?|@*{PSR|-M2r8bA#P9NmgR+x11hR?`(0Iz<5IL~g+S&R0Vs!>$O{k%O= zr_Tj=?QgX^s&%>Rdcw=j@qzI;1C}>(W0IN46SH0E$qTme(wPz_qnAU)wwn|SKENs! z;s-HdBCc4eJ%0d46W)P8)_TY6O9-o2X1^R`IQtr380*z>0#Of7nKw4{jIWGi1waddLn(`fP5k73-N#u2(QN zcKB!7`$w@AQJDsk+%wJ6wM~9^uaUxivaZS9$nl@exP=V7t!&&hwctG7`Qb7TqwEEa z`6koef1HLWChFmY`_a#FkKqjtKd}9;ETFiZuxz2OWbDwkH zw|c7iJyDoBljGoWS%6a4K&<~bsCd+vHche%d30oXQP;t&JgJU zqWw6}89gy87Bo%4ge(kIp&Vzor+!#AIm|E+(?WN1%jkF$x@$G0or9mkU8|lrLFSiB zYl8Eg39uUqMDI*Rb^-Xu{q!J(*18{Mg1($Idf}uqaq?BSe_|RrD=oCKO7%DD{g2FU zzQ;d{(x2Q4C24Ekl(?b9FB8J=idVUjm}c)< zQa<~nuDUG<*F9>j^m83VK2qipPPeDLh;Zgm(K92XwK_^6uLwP7$+we0sUH4UaShk} z3B;cbH2-1KAD%c4jx1l?^RjI)x3~Gp#KtA3r;2RGxx}=qCwku~m`yH;r_H2FD4U#d zg4nzTIq!Fe7;>}l(*G{j9M%dR7DSo+^12avq~r91p0JfGJ%876-;`HI0{cT!jyxFZ z(f4>cb0=8wqG7rt#n^7V#!(mr3n;G`VoFyGCuvB>1Jg&Mg?(uGtlew>pU+ zl1JHLZ|W4`o?~Nw!U~j8!$rjRgc4vUXN>3A8a>UPS|P{BfB8h#k2GtExX=gu-sMdoC12!ysf{Xm`d=-%T&7t zUl4%})>;QytwZeDbY@l|4Fs{W;&+~lLw!z^kmys6Rp=;%JBa?13K4!zF zS8h~1LF%m_97mXyXNR&5fmOCd2U2^}dsC3+kb_<3>nCx{nVHePINkq>^J*JFCS)gj zCx{^$@rLl)Vgj^?<!Ml25Av(QD2>AOYaV2$JkBw_UjM}BKSDl;fgN^ z*vhFz%!`S!wOXg?u)%~Vxp(FRx=~dbzc{~=K}7Pn4ZG;cmgKQqXNzE@WfEBBD`fKE zQ72;T(1?9Q6>ax5_+H06!~*fiU7fC5k|$Z4DMomM*1t2I(klrsw%;{SW{bqJ4btLxGO5CNasQT#@~^$}pvv3;dj z{vBS6HDY_jWE{1#T&&b-e!Zjc(me5x3-W}n=;dxpkbUw-L>C;^AKQ-Pp@vrhLJq7CK zM_1?7c=_>j_n)fdJ~?u=gMJ(roA;bO-6HGFEcrNF|8cI>$IM~|^vq}WVWvIf!{JA0 zuMuQnQFdX;KGV4$EOgp?IdDO%xM$5x@k-j=&+m$l3+S!)pP8+cD(ii*r7~qBoc0~* zK+!AwvbV5f@oCrX(_Y}GpC5hnhh;v-pUoA$_N!j*PyeSyi?X+hCKIpDZmBqZ7g*T1 z^i<_-&fc$25FH)uKOgp5dBTEWXPD4{jmA%IEUp0-a+<{*v{0IpR$1{$K3w}xt0zjw zclj#R8`o7$@cp1d-W6lr7xO%0N=wd3u_A)&5Pxb} zTW&$x=VK#)iQHSmQP!dN~??%dz6AUz6L@N$W60bLw4U&{uEHNt$N*Va@f zJceL;(Qk4JfGV#L&O@*>)+W*m)XNJ&>qcTC<7-vud!dc6VZHU)6563?0rlI4Q%U1d z;VsBS4dDu??>z+jhhb9<=NxYHg*T*=l+T^W%g$E~akx$s5QfDoWZZ1qh(lyNZ^FiB zLr)Ul3R==+tgBCTE5sm;oGNn0YreVHi2{fdq2*WpBLjU{PQeRJ&HVl=NsXXgs`f8X2CnD7sW+x@R%6t%qtIDyr1u`1}T(<kwNFf3xMkR+#-qTzpg8cZSTG%R%(B~>n`ba zQs}z3CKbkeyI7svw)X*`O1Q$Rjup%B#D%Z+=QaQs-NwM5)$lbU+l%{XnPKtz&?N!3{NJ&xICzjb+W}C(L@nrU9Rja4Kz{BG&Og~@pX`RIy3LC zieE{5+R(2`4v;2p`b7alkq92?du?}xQ-+ar>=IpdKPYP`={NwQ&r^BpJ?&0m=B-=n zn$dF27v#FgOGPt4QtPikxm{^-nyzq0a$~yZGpc|`ya*AROvylD5I3)Y7p7=wd4(14 zY5djB3P(&g`1icwB+Ule?Yj@V-`ic(Td%#aGc&W;XmUnQoF+E#=mmyyWimMIoeyE2BUv$oY-{@$_v|Zm$;@?hBW~JADrzJ;j zs3I7cBB-~1rwoJ=1FMzL=MSht*nV_Sx55ESBIQ= zZlf``AJQ9;Ih^H^S+fn6m*k_nb>JsxaQgz>5mmDcankaJu3mk>6hU42W`X|sfRd2^ zR2Q=1CbkMEuVqbTK)89gK$cKf9dau2H^CXa$^u<*`1n1lfi_i1sJp5Xy>U5TRPNmRz3AVcx|QS| z4t2}~(ykH~Q>9TC^8eCdgq0a7x}|kzH@Du)mUz14OzDoO-e{b9UzlVzK`Kl3W};NK z`d6mC5sP1oQ?)71*Gze@0gSk4{XhzpyqQVQrhPLynWuF=K=YP9OIV{1RocnNqiFt- zWldNK_lKF9vYhSpjC3*v!VXP^HS!2W?ffSrR}D4CML+N-;#3VfWr7I5Tfsb0hgr)< zdfL{#irTn$zlc;NAFA66d=L^al48JlAP>QlP>JagTPQ5Wj*@x-oLY?eCqJ&$) zhVRr?U8P^${Zj1D#e0}hV|h(-wsdlt&>oCgK^1u@sp{S&2J*YqdT5^2|1h*Y|8mXi z#3!XK8%dJ#>XDc1s|FUWia;^cO%-g)(fp+M$s4q2`)kv3N6owP`jV}#chBe(<|57f z*^PCfs}U{-Eu#s65dnN^XD0`*I-M`0z9y`{yN7T-!~q9&m-{s03^o#Lt!?b$s@Dl? zS`Tg!R{CnxKRj+t=m?V>&^aA(Ohn(Duvek^#_;;($<&&WG@M$D@mZioz{zKOK%#P3P>S;O2~)u^>+y-B-( z49bZ+-P}iFJnE)CVJ^~8K60)2as%ktbs-*$Qt~k*CL4J<+F-k%F21v$)~El2`(h55 zx-)dfI7*T(XLS68Mth&$R&<^%?g94_gKV(SZD{=Pp?qD8l~I&0Z5n5aI`aKgk0h$c zjz3D7ovAcWh{_6to=;?3kI9{oqMw_R7JJh4@oQ?sO&Zb{tCPa(66*fKea15P2}Z)O z>c3p*iMrF@Nw1oJU{G>SmY6RMmF#q({KV3lXtkmq&U9*ia-V<7YS^HB=8xhimb54i zB#Ymg$UCgv`*tB>VEPWGWxnTyNxkp26@BW7sq5 z@k|lN3&A|twk({>TcG{lcfF$NibLGtzG*nvA39D zwS^nG*KL6EF^N#4=_U@tBLkWkg-l>C_4(O-AkRzYl9s*M%ee_UwtYPHc&EDk_q)Bv zZYg|ywysW0Oo|m>JX+jEc5}JDwNOcHPj!r-7QMBEv?P|MO5HZ)iS2xibGmxR>(;5B znEB80m%}qu*o_%M*6KMfV#>*r_ZQyr>nNtyOBlV9gqkRaiF@r@8nsD+)kkk*YYONJ zBhOG+kpRSe<0t6Z=q&flWdU8BRIwq0qvTpI`d=q7=#zTxTTWf9t^W6c4hl0A9jI_9 z@(d`qdxxXOwHsa3-pALp*g}h|ev+8Dq(k`N**ZFrzL^LWw{&(VbABlzq2We-P4yo< z!91*n3?&XJuM2DtPxk)6SB2ki^!DIiGKAEPUSdHQB@rek$a!^^TIT~FBYy-b|tQw z_?W4UYXnYtG?qSzYE0+gZVI{svBcz!o1c8oFYrC^$h5YgS8;m63;6d<`e)){T4k$P zUiq^!X_*j9qdDqTHKipH7NwU=V`aq7l(Zxw_zAcG{;Gl6W9d%jgwXejZNfD#&*+#t ze^$>HD`g~qo#|7s)<>BjrC+eGQ&qy(xvhp4`IZ~3^zK~*dr$R>^)@__OvmIIg@@5e zGbH`nT#>{8dIC?tYf#Ivne<>tYAP<3$gczH^;AKy_-!QugA5MK@slxMx7bl7HnuQUV9tt4!Q zJ_SG+q65BZFzJp~>a@oBFlliPQ{~&X$+?}KkKWEKEsvCOBOU^Twy{taX`C85E-m&> z<-g>j#|OO~KCrPX|8_Q9zTM6A6W?sqblmXe=Icv@>NZ*$nqX*>IV`@c@N}|43@a%L zTx{TBDkKM9boTb6@%?uv!GfOpH+=zl`OgZcav!0TdOfE{#&A@T|CU5czXcvhn4#yq zORG*zgkhv$+R#MP0Ym97xrsGZ0_ zb^`Te%Bpgmjj(iRYCmcVP}&JuzXZ^o0sj}kc)gN#zx%Lz#rX`RZ^3{(rnon2{s6$Z zOSc;J`S{Ui0oqMgxO!Buc80s}`hru3nCdena;{873K3!Gs@K{5&v)9;x_9#uQ{iA- zp}_@RoT|4?gHNZ@)<;prw;pg0TJFC33YkVBftCc2dpJbgwHsl#0M8+ArILPAs^Eqs zkXtuuUCa&u^D-=Kp$hUPl7d8N90g~U14OieXhQ}Kp3c-<7o>Xf^BRf}Qi#$pDw1I; zV4Y@mfKq(0fM%pgXqzm}f9xzR|0P|&Z2@fVBk%$hE;>%&Gr!1l88QSJd zS*;xDA&SrhU3Z=W&!Iqtdo+P0$)>|hLZZYvbQvG%M3VfVuK*Ig%;anwBH*umK=bLa zOf9=`oe-+j$bfDz6}eI?$t>@D_f993DeJ{NHbGZOIWy%cp#-CH@Vhn0zJ@Q+j0(WV z$f-h767bwg->-$UO?iIyef;V4$s8tr$YIyxy~0f9Vi`n1vRuEErjSEZNCByK=6nAI zFZK5bmi3YG-JCceE|})>qDOO)8?;%?VGTWv95}sis$UKIcWK-;02?nkdXo7OfU*!D zqkDJx7?t)aq|jV0gYccs2`Um~SWp(OTcNK<2`lF(e%m*4;B{se+uO`Bn`Dqm7n#SY z4Kca<@(9@cg*d9jrNdtQi!tgmx{K4QC3?aj0Niz499`_?Z1hPxl#OR8uL^#cyR30Ss;y zqM*V+*z7li5gE;%HjMyt?X>-|axo5Fn25MsdYH>gJ?c z-6}kuOW)afmML}tqi`;`?_j7~MkbIUBSOs^*OEbBpHF|bU1C(>m$~M?5X{l#3BEYQ zOyC&eWE_INkx@Uo9GvUv4ecLo9a1mU&!Um(3oX#`5wPOSfTOabW+}yBqWApqRfS+P z9Xof?R3ae;Ece( zbvcjT2=QASEVHjp$BG2azrV|qYq>qCHExKcSIGrhMtpi*dGqpy#oj30MI@Dj-E-on z;|%b&-R(TYJDE8Z!CNA4EIoV~-LEGR>rNe2nSaN3roc^e1xAcFiLZFmn zJaY){npW!SnPg&4p~v4DcJ@#$M)e71dLzBrA>Di&0>NLIBuv@w*6a71-HX~Ce~$F( zWQMrP(R-Yq;6Z z2Q&BYtrouPRq~KGl<9}>i|dtka~=%qVI{2l`Q(N$Vv-gF5Bd!Yc`IaqlUw@cIyWy~ z_!s||qOH$pL(eP!W*>p-oxCDy3LTXh;af*ydP|dX)nQHIC*^(D^@YVV#$b}IUP74) zuYRUxb@U=S#!!8EHmk}u|921JX*%^Gir<`TG5GZ`B>w~nB?%Poo7Y<5mhB(YJvh8t zr~#24rW`+TV!asP9$7WWA?Z8-C4xrKOzH`36745sypw*g&V5YloferP8^|-S!IO|g zBt(Ku_b1dmJ~w-tjWJM&F?n z?dq5R+2}*~tYrNDGTi=avla**zUxLe`AU)Me3Nma|6aD`Vf%fLfqNU{p`yRMR_b$v)tLutfK3hH$pD<>LRR~-}dS;KZG2i3;lFL3Rsr{R<{pxJR|YeqtJ7# zMt&Ch)W!YvMlRTP5^nBeR50UR-)mUh3$bPErqJH~Rzq{ibvkep_?s|7htY%-k}F2= z?7Lok3S2z3*WjQ>pGi+UE@Kn`cI59vD5vTTRsU`s+HMK&dol53jPBmyfZnzIh5lmT zL9hBc;i%p(rTF1_|A1 zCfY3Hy63*RcgrrItk}9_5dKAv&)jR1QOjc)3Pw4>9N#Dk*qUP|6S@UBySNFyej!3# zvtAZhYEEILN+|!g!b1@0HyKH%cNNW6aXF)0w0Juv{Ww`x%KKybHNP(r&PyMk#l6 z^s0AG*{wHhHWWHWSgFN=1#C~1qUiqRc<+_SrDR5B(yE{x==z^q_(C2de1ooZv;>`S0 zDA>6Ah*AKfwRby9tF4D5pQUBh!rqdVw<$*J1$Qfu^WD3nZu#xGT{(k>w>>`r`N-eq zJ892*ubu=g=|y&j<YZ9LubS%=-0*$BN^D$i@GZgiyr}eJ>6Vo{Vt1WV2LjdRA zUOcn=Pds2gMAO;$+s?7Qyc#ND2E58Uu=yI5gCDdaafhb8DlPn4yCi=QBAW$2hz~i>z=qSbDDn6mx7WG9kK`j$%toTY=dzu?w@y=i zK<_A@+FPxnz9pm-nFH_Se;IKGVGjQrmHY8rHRg@te=-o2*bC=6Fr{I6=PcQ%)ALNu zVAHgkP0o`lPoMv6qkS<5?m-0fa|TpgeT})>>@@Rm-HCfI0chD_g#{~Xl7F(qYl)P%6axy4i*ftfCT+wE&W?szG&pU6+e4N1LI2Owm##yUx=lyrREptS zhkl2C`zK<*ByT)^VnD<#p348gdEDintYJHN@_AxI zzLUn$lPd45h}0PVXmDY*gI)79?~D!|o&kB*4XH2+Q%Z<4Ph?xRCx5boaQCd-;um?d znMIDvK_@~@rTqsB zuK0f#eGc2I6yS?KwP+8p0ZiX%w8F$PN@n(VOudWrh zxek+IE~RJnS9tYTCDlAvAaU!)g_b8zJNFIZ0vgQns!s{0S0$Y(^nH?`I(s5pOf@>A zDxxNp52ZxMn~#U@zZ%xm8!7P1G#V*`n|`+>Hi=oR8w5kWXZlD?u?Dlrsgw5o*6-Zj zn8zb5oJ3ZIF03sE@t@R}95%0Qo|UW?kmJp5F;PppGi`%(hU8xheV|n7alix@IJR?~ zQ%ntLPIq}i!`fIx@!m3DjPY!?HsMv%m!g2btZWV~qusvQOM-zStD@(}!vx;t>V2D8&NoGQ2IQShm9I*` zb8SBiRh^^CCij#<@@*7Jv+wB;srB1hA~6UlnS1-`Rf%@P+v%Y%Fi{&IFE+O67lSWj&9mQ8j;-K8l3vvB42PE2}S)2_REEudgP{BA=tr_#f^Y4-ib z0mUy5TBeVIw34Sxp*$wdWf|h$8ls^5sC&_U`MQAFfo2;&TWi?-{9=8ClCBO4?cY^4 zkB(eZ7wK(x{A1x2uFNMWO$=Fuc?Q~sKCH}GseD*9C$lFl)@nIR@;ccwds|P0Cib2g*XBn0x>N4kR$yNjEHEaad-9Iy4Yrn9_rV_mH9k(A9;^QL`Jv-uGU#epTU~UBmNH?q^oW3(M2s+e^#x6hX8$?e*_7uNN8Y9)V zqnmq+pC`P<7Bh;=P)HGggeTVW6%`#JaL)N>(dlN9>Zhi(ZtE@=kE_<;t0bKyQDJCn zSWTm3bwVS2J!hF)mJ^g++(0zRp{fMDJM-f-j`yhwraSe0gGJu;Nsani7J$K(n&9 zmZsYqM#!xqkjAej(p?@>tUo87z8@L&a=yS{Y%e&&V9WPvITDB>+c@h@tMjC!n86gD zb(<^DN_O8x2*`(7rK~OHC3H%g)IFohHM- z3@EoJ`heUUQwrpezXvyh`SXSuPKm8GN*djpxVwhy7Tw<;7~}sTFFXMjP}%9#+dP72 zA>H_zaJb$pQ@L0G&A7UDm2}n@q&XEP&K-v0dl9X1f!trQ(>Q=QY&UxzHP9=j8S_f( zAnBoK9L=tree#}+HtJ$#KV~O!P}Y!nHCdUTLl>X+Y%Mx(#e9|9)ihXeIXW-;fwri1 z!)M`;m^+D`{`@~~-pp#=9*-{o-}-{TA;DLIy~L@AZ!8W>p4u6oTGU9?@rDZZE;?&I zBn#lCkJXD0&%Bk(p4*cfHPL8gH$9eSdB_Hucw4O2deVlalD#7jr$%hA$2$XFg=DH z`Y$Fd;btL^f{p2Y<~~I_I4w)1Oj72(ot5FHZ~lva$Da(!4(hGh=D}~8b4J);jH-O) z^7WuEe|a}D*xk7m04cFO92~nYO?PJ2S`Q+7#9x$%hQI9eemmATtSw2`8t>Q zqwD<%c4gu^B%9m^WgSUa(g4hYPu^nf?%85Gb~$*b{3Q^6Zwn{-IT)r?=8lSP(I$}! z=vsZIsM1rl1g_{*UE>OeSV}MdsHt`0D-7yd%RQNPJpAE2CeN9&jFnwIfnIUSjTzq* z`#b~_N7SL^f`LMdXf3@?$q|z>+UWU&CyZXnFKdUv-JAJrb~9M`;6%^hrdgFfzBL}FBDqGbYlvD56yo?hoI z;S#!NIUxU_r)g`LKnOyjTAHTZY3&GVi=_a?a59)wKiC%p$_h z@D=rHP$}I>S=?U-Rdr`Ajw%Wre6APeiw?~*F#aYysJMQ7*tbqvbmQ);=R?(}f4XoB zEm>zY&17*KPCeE$6}BKWCuu~N(u`%Mo=C5stUX`4ETroT;(goxyr@K4G>_PG=dE+@ zZCB$v=?Ja#bP7!VEvNXV@SwUSz2FGE$2Q6v;jp(0#H^RKzP0b?9IB^&I2XJ1p*^*@ z$`=(AJoDm%YK9y(2+n36YkyeNNPU9_q0DptOqpUYS3ktwad~ibwDwrz>dQ_b^aEe) zyz=(j@3WmXjLVz0)@)lH8KX|A*~1RM6DQb@{z)p#Tkxw^uSVizui4L*vS2JCpSdsZ zzZKY#@W40)t_|d|mW75jLc|_JZJnOAWI#@iD*g8J3P2BiT#~K@{Zo!ya;E&o-8{dS>}V_r5-Dm>X5!E|EW;k@0*Tu zWK>8fp9mca#x%p4j@z;AQtEjxvbp6ZWPal7N|#ValQhCM#~-!;MoRrBlUE+dJr*T= zpNKK9=35}!!rmyoSQa{jstfZpr9bsBwQW?w?#J zajYzj3(G7y2IN6vBo4$lV2xISDz4fCW(8ohW(kQCAQoK6J`QtM1f*A-r|7tSW`V$ zdHFcv$4TO$^pxo&pN2@Bu~8iNUrh@iSCY}Hz*e_-BXFiYO3vVD=Tyt&Jsu?V`3rm0 zIJa0%d#Xr=-{OgrMgFc$b=>Ubmf71{C-Pk_?z^6NGifubY}?v=qHEWnsCc$V%iQX= z9sK0%Y}peqON^XJN~3z>&dPs+VZVGPxYR(X?3;Vb9L5sbBlNL zY;{u-u=mkE6&Qair1ez9-l=G9_a@#`@vZKc_S~u39%=C&S*;$qdme?_o+a^~Wv!l- zd!E(WUWfJZUUyr)9`1QHX`gP5KmDxrbl2YLZf)=Wc<

@6kQ)32mQu@jkPyJ|Fjd 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

yKc%Pohze)P_us4K}%j4Eh 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 Q^8e8NGeh@JK3tan2CN_8$N&HU literal 0 HcmV?d00001 From bbeb09ba8a7fd6d8b7afd766612de6df2417b8f2 Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Wed, 6 Nov 2024 20:15:31 +1000 Subject: [PATCH 02/12] --amend --- doc/tapes/out.gif | Bin 228104 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 doc/tapes/out.gif diff --git a/doc/tapes/out.gif b/doc/tapes/out.gif deleted file mode 100644 index da842e08c651d3367659ebb2b2dbe2c64a6be30a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228104 zcmeFZXH=70+bxVCfixfxdXXMF(z_4{odBVC2puU(2N9Isdj}QiUFk(dHoZ3i6%;X{ zW2H&6@Ui!PpYuF#JLCIx&iKxE=C6#AKe^YM*ShAK*Sw>pqbVov*bKA;oLq>LT!NjB zgrAN?l!-)|l|)~N#6pt9L4hRPkfhjyq}Y?B%9o@z=!z286*bhAB+D!PiGWLFxd84P z1FAzvNlAg1V5SASs{z~Yfi6J<2mO&mMn(n(gCUnFx(U4m4+{(igF|@W&};BZurg4< zcqw4g6fk9qOHjioZeb}}!zj8Cl*92Qun6NAh>A|Xc`(CBqc5K5^b@xNP1eN1uZQVEiEk_Ef+n4hMrc7{t`?`dJz-@ z10@3k4Fdx$!(U*eV`5}vWJ1s~F*qUP4Zso%II$RbF-r4Gs@{QUd^ElC31X+lCmB3w!$!ipjyBBCP3*REX?7s(QLGL;atlh9F<6w{Hs zgp{h3M2wV|jm#y|17(WB@Zk3C+hHNk!a}yf!ou#{xf5}F{_fqov9Yo7U(yp36H`-DvlOGVva$*a3W`G- zi;IgNK73eOT3TIQ-O$j`($dn^)%E=O^WNUxzQ54l-#;`oG(0>!?$kX#F+MXhGdnx` z^5x6*eL;_wU~m2n1sG!p8dg_V)ItPoKVi{km5|JUBc!j3ba-kZ@kW3^Ytl zFse8W2~jc9E0^WKc?JXlNq&+D|5+P%TU{=Zux|C93ge_0zB{{Z-c zqzcTc-CWuq14atkjy0DJCLp+VA85Cf52r9ndajJMRE%bDV3JvNS}VtM_)Y3<$6Ko= z3&fl!9_X}HPv4gd__#9ORx|qu9Rp?4ZLfVp`_R9)YG=@*-}i(RsCn}y9>1@4ffN|IzGK=cAhNJf8P1! zU3b8z)#>M5-#+xkz}O9Xy7$+|a)caadY&F`&sFF>GI;Uq`=_NguMaaXo}YXp45nPL z8}{~`9queNIL!9G_;IqgKKaP-kKSKDP7gnQnEm6AiwhDmenKRW-h&VYM%5Cc;W9gf z7=$K2F_zZcgBZu?R!fX$4c;LpaK!VkCGzBZtR?YR*RCZCckZmEh>h^Cr%Ju{SWlDN zs$EZ4I^J2&K$8hNfLjgLgLz@bLm$ zg)aFwwu(He>$Zx$J9oG4`;G`~KL~t%WBXy~R^4_<`0?)cqewErozhr(&z-VFRQ*nQ zs?5ioicC$x-O5~Z&)up*xBA`c2f-hAYf?3+LA8~g0-klX)kU$C#@KyzBrf%$_+z8} zUGY&`4W<2|y7uFGSLVlofJAEPoy?&I9Gdv4)dZk8DO?fmq(!4Ol_}h|q+B$_nvr@S zEI458h=H46v%WmlLG5EG^hjtRf~|ykD9RV-DEjP_M&Kh-i*+B!m>URa5-wcy_2~uw z=x%yqIE28kJsjhjv?kHuE5nS!b`=Yg(4!ixYGESTuA>x;Ar&76 z%W(6Qn8^3!bS+i(>*;!?mgw0=uEou>%|iDlXIl?KzMgHDCWxNzR2JMk->t2Aa{jTg z>+AWa=26ifpWENu{PCrG`^k^5Jttp(eCs2>_H%ED;nvUnF}|js2UD`&ejd(gUHf&k zXmRV;_a*nHU&kvU-+rAC60ZF|-6**A`)sGC>G%2Pu5Z78?2TT#_<8i^*2S;W?WT+0 zKTp10G7w%$LayBhVBU)aV@m-HV|`=_dr^qgQXrppKh%0JnsKU>Om?iFGHfq~16~H! z(jK5G-izhOmO(AX2I!yd#fhbs!QHh7ncwck%T1M0hKvnfJ>N?}!^;sD3ED$k%=?Mj z*m9bJu_2VgeiAOVoVG@LSkQVu*>b9!zH4k)G;BWw53gVx)gF;3-cR+wRxrOA8dDxs^7(#7B)pP?TxU#;`5-e9Tgk;RKBlQ~kd>KQ$-}2J zu4{deT{u;Vk{us62s_9rg;()w=}Z_GALQ0zs{}2^C(NH6 z4H=)bKR+nwgI9|s=u9~=9~O>bt0fA?r`!|{i{?_RrD}AhJ*^Lmm!_&^y2ht(h8^A~ zz-#12b!PmF4QG`a3v zH1km@Sie?{VPY;`;iwFeR;$jZ`!d=3sGM=SR#SH3WqR0A1qVf)wwCUEcJWaqzkZ#r z#l(F6v!g1pv^uQ2?n3d~qiVV7I)jjjg_8558Z<>cEYP$MIci=?MI|H$MRu`P@B^M#+l}L*(oCBozp=M%9cbe>>ADe(;}WMmdjstLE>6C zVbOHikiQ>T!S9u8sL@T;A)Bqgy14K621hETTDFLb54XyyFArMWeB18eQCLX!v?xIO&iVQG zhA#K9&oQnS;t&bXVrj3@w`1v_x;pn*P@1V?M#WE^wppodR36GcAEc{2Ch|_o_A1>z z_|=@YN9i}p>-%AC^3jFJO2gpin&PF|KU6N*&aTt`%YOd3a*F@9a(_#izI%U385}Xq z@ARY2rIfjPT?GU8-DvX6xydzx-v(E^>kKk#-*2(1&c8m(yB*p{rsndHmAEp z`6{z?OrzL<*y+#1aS8<)9*pqmoa8tKIH;4DAxu3S~ z4lVLU(EbREwUjiiehTNy5ta)n=>hOuU2;we;QGk}P4!=cKpISUhjELD0HdY2 zk(Znl{?D9bT}!ZkaVf7~56T+E_oo1hJWLD4v@uB>0@g!`ExHAwtkhwFV2N_=Y=)4% zXj#fxM7og8vqta&A??PGl`}~6VZ}_swL3IDoca#WudCB-DJf*RtMbUYc)V}96vOu~ z3RlKFk38n1Waq-w=q48{Ij}&9pl91#2$5n1Cc%co#$2}QiRE`%g;(XIv@556F;`B? z-Z^$6I^K9)Ps>#Od$UbTl=bPoV{gIZkM5vi-}AkF>;A5)F;3&mcJTtL)do&fWhyj* zZ{JDY4fm#v*V)sR$<~!HkU;e&q1&m$BkP^%`%2%loyQXU8JwHFbhm6TR;vx!)>27B zv?otySPv~YO*<*AvOYlxLgJe_D3Qt>KF-0gK6P={IJ{hiv3~ z-FzzX6ZtRXx_?P7k^fAtpIuz$yHku*-jr*wG(E~AtvXiRv=L_j4M3Xq`vvi+kOUo-BOglfQzY^L^$dj9!#cXi_` zT9LI01t68&o%3Vjda$U2seq!?a!kmLQ57DKiOmLc;+|QGsubl}HPxf1zF!ZP?}s0b z@P!{q-PW9Ud#LP1jqU0Hhm2O=JMAljIM%W%zcs!YI3R0yvMuxRE;;$_;!23u`PP+- zXGX5T`t5=$ldc&>MPH(5!~m$~mMsGhdcVER_Dg*@z7cnLAY!iq_$B;*Q|L+&LRsm=ap%fUtSY44Y6q{JvDN6?v_Qkj{x&iG*H14}WT? zbaZq$Z7DId=B|A9IcG-cmrI*l$WkEvL)1!T&Wvm^A$nR+k+q#vkXUJwE*<$ZAbOhr zDv97rZEhFdISSRDeKH!^MlnDhxi}{&@>Xg8Cn)FVKJ#>*8*xJj7=11RiQym1eypeQ z1F34t8OI%kjev=op_b-n0~|W9FG2&5egJ(0;6m3k-$LC)qr^QXmtZV zjd=T_ut9axMt!{`z`2XIUX5jwlsMA>qQ*Q0W!^aO=Ii_3a6;$qLc+HV`a_x>0!>ozvoa8#9p|g4{tIL58+Grs=~9egER=Ul6R*L{8r?b?S&$=7$~>w@L9@d zbGFCGohJ_3Mtx$dwTOn@Tp+}p6;)G(Yg>A}mjg~5uOw{ngDGPu*Z9hmKlKqG!5Nbm zqQcl;?AWJrri063&!#HIC@ec)5@U$UJB%sZ$l5Bsn4b@xdSkN_J7BN|%emr=6X-3&)oBd>@KEP9I0R9rd^`XS$e`>CxwDq;%*L9FuMWiDv;-9=Xl=L0an`{Oi?_BEHwx z8w1G+-psw5lNMh{Wg}Ksu^qcK!G7N7106Q-Iq)r=Ck_kV04DX)KN=d|+`A=c0$&2nQhu75i%)5fj+3@G(77awz`4JXbgW&AS0!;ula2>c15vNB zF{707)gESdF{xq$2rx)I8j{YdV`nF%`_e?qytr#U-sWo1X2Dq;g#7v$A!n=Dv%W4v zfyb2z#r!VvaQf24f}~5+FLx~DgT-5-A(t)|f0_5Mf9-Z(|LZ;e$v0^FZ{2Rz8XUt2 z6Se)vDZ~2I$nny$6iJ`5oUg>>(qNtpElCh{3K6a|i zawq6~R%Pn^-0_@8^pSGJX?4=UsmxHXkE}UiqJXNT+wbyBIYe#{p!TO*j~8T{Y!xDi znnY4&DRpIg&W*;&uAA9O9HYO@a*0fDJi}L5%d!qX7I?nq+_gJEz}R~&8M1&(1=rrQ zR9)~WvX82hWmj|74qU*WQtBrap#eoEcDhP5os7n380(j&$?bQt9XTyQBN5* z!Dr?ACT?jd2=z02R;6GM6$g2@v7XKj2xg>W)gCK!09%W-#GsBg2B#@d;rK+wv&0x6 z67T{{m8DruOLGeg-=9uf>4{E}XFiv9aJ7BQQ&K?xm;;AMu5@Np4sjX;<{P`5Oe%kG zPs+5>66Bquyn~fYSJ;kh(?!J3Bqd4Dm-ed{u4C+T*Ees_R%c$2(QX1LC?7aPzWI-DI%g6}Y2?&Wjo-CM|LkOsn#5Hs^1t^D92TO$)y;|#L3&?n~b7b&HK|{Of zC$eVts=V*o>+dY6L6NDN>7NR#TdJl?5nJ$aL^lR`J^WRCV`kKLK`lqGM)s6E!~NRZ zXA{H=0Ras%!8^xNLEr%%;q1Z64`iFnbdTgiPhXF7W-Px{`ccbxd1+JRkg|57wc;@~ z-66&pDjh-=OE6~y$yvE&tT8?q*{|Usf4anNpmm9Z==Fc`6zaT6Nk&o z$&fSaaWYh1fw#O;)n4g~y8PtCojM9QGq8_oLaBQGo7hM)}_ZH7L_J>BVCDQ^X6O0a?ZFqvB05jy5+OGyf5Oy5mM zJ(=|f0S0ojgci<2}R4Nohdn%3TY_WA3=xc|DpOCG#Cc70m*bgSW-T_apd@6Rz!`4AJz%cQxNW$Vj?ZeeMgIS?wJ>drgE!SMIFbx6Qf~5!d|W z63!bh$+Twk$L&kgBBg+eT@ab>HLr0%!QSh4N0UH(dGeKUMBleEF?AhI*4f?je0i`h zu7hek{PoGDJUPkm;(+a)uiC^2ZF<9mFW5dkzu)U;S2+rlKaX5rRY^{D&QMPHl4E%NEN=8eXyYz-Iz52KgMjca ztT4Pz+`IHE-Vsh7#&UMhTEuOVpym*pJBQOy*-|y8Yle>zSH#{w>~=_&1*zIAfBPI| zgSgwBV<;muhSOL6LZDXHlFelxW^i;2(Rw|(ei#Melv*zqFd$~nDiwrt43byOIUB}W zF@;dyK3&3ONHR{MrnZhc13sba_W zsG7A`5JO;;RHs2LGW{dFoH2(Zy#eWdERY6U8tatbW1RBXKyjS+%B>d&2^^`#z{_-s*yQX9NQ$Tc{KS$@v)RSnn@T>x^>jUxZsyC532j%0jY$lrU z<@rs$bbeRmN-N3rX_os+A2+NJNvRbQ(Wg>jM`Sdy;z0(sR+&j~`EuMabJY%6|2>J- zMCm-v@Fh_pa5FhdB9u6(b<4Kf z|Lko?9@pUOwcBe0)6U_$n3)08GXjOv4qI=~qu|)PpeM=iu75cwy5Bx9#2a)z1Ul>K zT>FF5IM{OX#LyHRrF}E7j%#?Rj!BUu;>u{8QaRi z^t+LgU$SARn)+{lXO%;gFnh%d+tcN$JRZ5u8P@~ox-%U5rubf&auX8X$e;TL6slr+ zvMBLQF119V7LsU4gkTzh4Y{#HntspBj5=L;{j=CWpx6^JH5@EH_7N>699hI}&-tbT zvb1w)tts+L4N*wU@tcM8y>Cvwe(Eh53z3MuobcIc`^5<0tSgG)rss|mh#tSL`9y4N z4wW)-sdeJodgD4XQq}j;v?DA9UStwleli7 ze0(}wP9G(D8%0CQdt6Qva#-=BqG;;$}0#mdH!3ClNxU?(aPM2Zuy9*ZyrJpTd2&(2q_K>ZhSJ>i{BiV=bs>g<8@w`WAQp*bbOz{7Yr7ekl-)=XK( zU9T*$gHJE+k*9ySy5z+0t;?C$VfDvZ=yIiNkNi!m>!({^D`szEE;=9IJ#2nsd;J%o z+#!7D3vDd-6076~6%+lKY3Ge97aLPdEFOS_{MpJ>3vp%Yc#T&`4EI)G8IBL&R%T27 zT?!!cix5NQCbt^8u3XzlQbEg?OqVYEf%bALO|<-;VavzW9s{|YO1tJ_{+;=B`@h+u zgv!4!{p}}|lr(>Ck?mL|@h@j{O549;Ae~Y*zELjLMKcF_z5apaez{(Z7;@qP#He!m zK68KscD${`Fh!|+xJJ}8{Gc3h)LO#9!Nk8Ty9rkBje5xf087pN_e{8&SUhG<>tNRG{Y8 zQi9>>@vr)3DEoDlwJh@ms66~PCsT%Y>hyg3O6pq zQIvfQj8d07{Zsra(#h7KWrrlFVoo<6bWtgHulQQ?ogEEMQ*!^jyeH14W`0bNP7{c` znQSR(ps*e5Jk4(=e5@(Ggl`>0#G5*&ajC-JIokriG^;V(>M0wB%1ZGfkld+=B^69N zOJ0{nvKfLV{FhWF4nwW=SsM+?L%#6;$kL2stE(`qgKsbRDj(sQn)}4W9WQNom&W~( z58ewSR!F`6YibgO_=9o&`#k{U1@M3IR4@0kC}{q2WbH^UbeR5;ror<268qyRVQQ&z zdmkuKv_keDqqEljxOX?&a3=NcHre2^&>OdBS$RxkW}ZhzA!2 z#yv@ge7Fa~SqAC~#=G-z7XZLNy|@3ZL(G3Z?qiY*PJx7`lFRVWmlrWHvEzNwU~WN| zolLxX5-b7S9=cCZ=V9RtZafj+(2n7C^<}m4pO?SGry~kHqq4^q!7t*3$PZn{@2#r` z|I{(q8P2|&Jo59YzsJZu&f=>N&u+z;rus^)b{G4i9&p%RH;(8I+yb{MyOXI-`g>dE z8ZIkL3xo)2@O(TXPIh%&`w)J%#2?kNbZ~A*^_5SPB8}UimZ0aRK@7qm|~l z1Aj&-Olw{~WF4iO|gh{QGEShrt)7e;2KER_*;~v{FdsiB|9bh*sVR z5!+{>`5)0r|9(9?`X3$th*r{neczJYN>uSFHIF*ZxQ>t3yu8jN-zIo`Tg8aAe~|hz z`ndCuk8@(MREKV2u0*4N75R6*+1cXc&r@@9apaPis; zTntoj4n5cqzEt+<3BLJly`~Pn>=TCtdcOf@{1%b$#BZn%RXwNKP+T3Pz?4Oqo(q`h zeCG+%<+luchM==-bo^Q;L&vNo@OW`PSuks*U!7JeR&Dyl>DBU>7G7S}1hGYQjt=!G z880uQcSR_L;-~JXy}=SAFFtkSdR(#uqq}#i#LQ8vCXMNqJg=(lJYrn9?Xy3qfZ`sL zYk{GX;#>(1{1K5W?LvbcVLDMupcK!g(U+P5w)t^N74G^^V@JciOT_e;swe}G%CS<} ztYtM*P@M?xyx86;sY=o$cu>Bfun}yehJEgxD7rqF;gu(XNKPJ})fddGD#%?o`Xw+@%`Y{qu4ge`b? ztHr4S(l#e-zhcEBc&IU)CED4#;`!X~Lx|F!D0*6qe&T|}7qwg6#z5@AP*ptDt;}U7 zNgs6)magl^-~0m{LOuZYzZ@MIaXpb+3zOstMT&f5lU{!K2gS+zEybHENdca%2_2MX zwr3KR{Ba~8aI&a6Cj{Mgh2k!vo~ANV6W5vtMNmI?tt|tJTjJ>^68emOk+`_T&`~(; zkuuLg&EZirbb*;rcLavv!6}AQE(_*Ct43}F9-ubIlY6p?+=z)bCciL2H{f;&rgyXF z5jR|g_?em*`n6Z#C3~c7vAQv-LWy<82vWAlMzhZ7JZK6+5VbmCNX_a9&+bFh#p>!x zTi%y2aE#&a7Xd_VxQM^i z*N_|5N#L3i3SU)qP;h#CgAt+ zrLGGn%@^-o1pH~dZe;nxuc_+vuQwzLCyr>p!5P#o-p&}iI8mq}>Qu+#3=D>dlvS41 zz04yfIPBtMFYtg$A%e`nbd9PAufgBCM{Yj0Mui9$VCE>BOI~$s=$I0YzsY3yUA5n- zWipOBHd2Qz(^wDf0U8Muhm}N?lNl1C_{yVNoGyUQrTG<_9Mz{W!l469N&%XJYnjm^ zMp2M9#Cu`mEOGapH4`qnHD-@8Tb4=^h*9VOT(D#D>hC!$j-bj>8zuhIQJ5+FG&kSr z^74e>?k=vdzV<+sLNAvCHWj2PrArjLt*J^L(YGXu7plGockCR;s8It{VN>7Ns08s2 zp`#6{PL%_mOesL<;z%d$Vk9kTRlLyKKHza@a}R5PCZ`j^21-8of(bUlZrsPq{n^QR zYm-rApihjSLkuy_$UiHgy3SWiLc=&yC<@rGJI=ZW!Owww-OEx^dASkM5w3#SQBJ84 zZiEC{jY`sD)vAZV`JTrn;xpQ=1T=U-qZeB1w%x;#6co()JLSFTVkEi3sTHLq`mtx4 z-)x#sDw9x-h>wuBO)66ibE4b;(u1S@gxT5sq(_6%GuZayDzbYsLR7bAd!46UY$20G zu%P=6P#x!73Zh`A;!$07>X~C4*4C6dFC`TnM$?N*1>WA}h~=AqL-U703!l`I68|oq z!u(wvbxCF|_mIcrGrK6(Y~tXO05{_dUX%4E2k(BiEF)p7C|+J^ls0lLXu@}xE*2N( z@VwdiMPZYKU{o}H&Kt(9;SPy##~5ZwQs<$uE{WAiCCtjgK_*h%2NVQy(zR1)UaR*`b=d&Goa{B@Zrw2qq-v*? zLaVX(zx-kk4-CxTp?O%4&M~uKxC`o9e7~&hyr;#*)uf!1PIMT!^R1bA!yQzNZ?~%Sf1EzN3_?A7(ik( z{3RL|jEgLd1eXWE+5u2H7f8e$c^%sR1%m7%R|6XobKvOy6ll%-Cgy1z7+(-Hf>#wl zkh_Ki#Q-66fvQrGfD2k+$)4wnW}q!C>2oAS9SKN83l!oG&&QE6Rs#IyT&9uASR84o zm|y)UJQHu?;12}63UveU>NNw=&A^a7@?Zj#u_C%f14`o#Pb>xSM*^h9z%RHQW)P8- zh49G>^B68IklLKuTqIbA0Gn%uM`VJGQ9gQoaMDdE-h=e{x~&%u_`6g5iLYu>JJ4&7 zl+_&mEEC?f39a}}wHP0<901C;1jv-yZ*_`S;z$L=z)v?J8BU~*BtSHR>|QBZ5ng^0 zPcGR<>Pd2|(-MFR1VzkgMC{$jMg#bLUGm%R*mC*vXi2r{<;phti)N~ZE~0E6cuClHYIgcyW8`&pZcp@sZ-GkhR3 zYoHH)kK;xioni-$RDp#21sZNyA#H06$ZL)@;o;2&2Mo`_O2l$X#9+e&c-!ThGa6!+ zTpIG|0dsVowNMF9J|;7y&9BP0-B4r$*dACR=BCLVHZnmvSPL|OLOII#!d73y>Np@VIMSNUf{jgh1mT_;N7MkXC0YzzHy26iA(f$-W*7-p zHHXXcpd`gK#GA7_^Py6^kf&95Wf*03`XW)gka#X!f234XC0Qjtk5U^>ng{uzO_2@; z){xlVLy#SA!UTQO@=5PYEyD^600d;#+oY=sr-<9t@b*$N%?mux0uK!4_h1Qtp-D`P z~XsJG4h5U->&qep8j8Q{}>O=T^Od@!D31K7#jN*tcA$S%hfYnW)!B$=oXwtX5 zxZ%EAYZi`lV-nJbKtEc={KEj1zA}M5@@_LYW)NQEoBaFOXWs)amJnx&17`NYU-r3{ zufv~eq$%~~j}RnP1yQ{tkd^?$GbRexE`X~xKX(_|_+}!$E0{S!N@I?ka)xK6Omf(^@w#S=i)Wz$iF*no znZ=TQ_u~+iTVxp*8+>;2719MTLa?g@P8a77jN^dS);la$0Q8vQ`pG~sK3iPAtpFHW zq(&M0pMaDyiTmCO~Jy9gIohwXP5~n>dO{K0{se$ot#MN znbO5^q~RWLYaLLHCd|khWo@ElmUAB_k84GcF5f^bx&fcgiPP*rD3;V_e97-vx6U%y z@Z7l}?|BmzLM}J-#E`>uznaWP7iQON_WhY*aA|k`AY2d6Ph0Jz5(%7CkSf6|J<5mb zp@m`yLDmZPT~&_4G5k0LX%=4ILbJr|4k(CG9w;vDUGGpLrs11hJeP2HBoh{l2Jn=U zwb#N&#%nB3YlNQzjW5U^THspqaXqG9Kq*FEx#ztZp5VY}y)0@$dN8U0?fpd8{$HmJhScenlKR8<~lNTq_#yS z^r5Veoj-8C4nD{z_=rYIFA;#+>k6D~QbI%5PvUw#fQftJ2O98a8UQDSzRF5vqf$U4 z&XKZ~Y}wuG*&dn3UQ!SDEeh|Pm!&W_-*6jd3Ja?!{nDqOgQ3CW@InjHY&X(-xaSHS zzzxQF=sTZIOVY$X#YF-{0!_XXZ^%pq@&A6B)4tihU+kKfK4TRY#bfkkDJK%bLP)cBGH z)pVpVHqc|s$zwt72(c#!Xb}O*%aZNv>^!dxy&DA4!2!x}`XwCXVsdxyf)l)DV=FTu zr8o@5cXcBkhysG_v2?Ugb55v?yl`mFvpvU_b$B~IT(B=XV+)$;3+vPfpZR#}jt;4X zFv4!&X%(JSTFj$zkT-?tcETKaOl0%(;$+MYG{0}SqHeOh0+!HBme28I5nU|Jac|)w zdAgE>0_`qXqX}<}41O>Nog=^;BY~;))jVB^*?ldYK^Vc(hJiW5bg>kcwijGGHN7=( zN8wB~zEfZu8lQ)oBB9tn?WnhX-Pb=s!O4pY$xDxSet{>`AOYGHaWyc)$^^--=t5kXEZNDGJ%2C&)Vz1*d9OTdXLUj}s zt;U;j=%F$1ZD-J75jGA9G*7%M09f3jv6IAy*CQ%8h{nQ*)*h9ZMqq4&VQ(e~gOl9a zQlncEvz@O9XfFvZg{hm&DUbkD$HjL#eP^1*>O8#qG(2Ydpzr{oSh$VEg_cwo-GWIa z@Pfvr&;-hlu=neOi^j@N^uf_M$>h}gK0m9M-`+Q)g_v189&W0A3u;~QdR4yg;9+8@ ze(Af|Y4MklPg8wfQ{H6BG|6H$aa4x--qHuL>%2+9I#`kN8tv)c3AMS)2DUv=&BnPZ zNxp~@1Jc;~lQ2&U91$%!AnhD3Oc+>Hqz>1DP01X7bqj_@gHXk=ON61S7^x1@~vbZ&R6r8 z+-(bAgT`}_yBceT&*)K<2RwPS2C*FxA0j}`>7j(=T)9z-9R6 ztUYpHHXftQ&k<I06ge)5V`*GK|Mx-@sJ$Hztk zm4-iA-tQs*9zAlETgmM6s2L~(2Ogo_>sWXzs|ydgaK$Rp0f*Ym;(VuWfyiEbB`4DG z${$fNJ%S|oT1gI)>dcXgP(dzT94be_7pvr6bG%-JPe!aDZM3w#tHpcr{Uh~*-zA?d z=Ro`_mY64_60%oP-TC{ty{ygf5fFAn8hr00_}XU;yig$zg7-+3>z1GbPECrS zk#nRQk_+hM(jj#`iMd66U!Bx~mQ;jK(%I#t(<$7!UAI3L&AT}GlM*BZ6lwtKvKxTX zzX>(D2t{5X>b{+r~%{ zCu*n$Uh{7TPj7; z8f%wRqFP)j*CQ#WqJ{1LQfbB3qf@DmfA9$dG=%6=Dbx52t7$%uw{L1?f|g4nY8RbN z9`m_o58e5`gG&#}ng_C4?%@Y6V^^A&Lu;pzG&YrZR;vS-iBvw%)Jlz5Cx%u{DFT76w7 zQz?E{Ebdb0y{&|q?b!9SSHLptt$v0cY)(JYdSw4A?D)%j%md4p8CxgczkImH8aK+} z(Chi~rK8YKGM;8MDV4gIDu}_QxxZg@a!M7#7b~2MinMe}V$Rl9Lqk=7;_B2|JT2-- zLtF4b3eJUkSa8a7Es5T}vPF~SmM|iTBf1Z)#eOAaw)`s5xm=q&L)e&uCm38l#1UNj zO=~<>&l}AD@{WYA0JXDIB3}rjleo}e>eN{D6fJn1lh^vNMY!vMw~hq$f*<+i%ijYT zhGM(r)5H1gIXWuHI{~Ufw}n4njH?nQfo*3JAGwTm`0|b(asCtow{XTY=0dR8D?Db1=PuF)lB{Pgxkj`_$Z|7sHYXYrS|Y8u$g{cfQs?K| zImRM^xzh83@QNTK+({;#7*G5dy#Wu2_-3|#-LwhPPGxsNnP=m)irL812M)ntUk1?{ z&GDOyp`MM=*?_WqhjQ;6>bIomt4CGXB$%3>mPT0g57Q^{l`t}xK3gKvczNrDycP|u z)6B8g5T%wqmvCE?x}2fnd9izC(H5gTfSiT`Utd)DLRxiqllnaRsF-MY^XXE{X+qz2xhE0-_u?$3%`PpfzYd4 zg{>57T=_RVulj-IiJysopP5UYNUPAhcSbzC{l> zgt_`%T1(WNlm69dEc`Q%l8jjt!+aqyOg70aU?dX+2aHHk5XmCZj$KPkSWGJ-{Dr3* zrbK=wT;i}$ESHlapcbSd2XLSwsC#Ti)2cKnE)}8k#+l>)yjbl?l>y z7X}NlWQ%rAFij2Gx@uP|(! zq1HcO7Zn&s3`@{M(%HZtQGPLb#aEh0iLYBM1(&%ca1W_;8%(IBhf9jfVAi0ImXF?o zn(d9MT+)^uRdp>Bv2DQsYLOch*{?INx`2x#*?c#XW2@=SIIDv^n+g>cYqosrM<}L@ zzB5~${H9_Q;L-Ni3p2(i$<`cMIl{(GD~l#99tnO?V=3$~J+C)wHCY#Rd@LjsIg|Og z>fu*&5xTc8tql_RM0wO5$~03(093W7!`FQMAnx?W)D5Q~G2vjPh~O)9P59a>(F^Jn z!}f0@^1n5NQJfveOlx%2a{!cY*1F|hQ?g_EH~weAI759ddez@?BI;M0bz% z&ON@fBiexDZjS;D9^7>-?idSTcjDTjbaa%byjnQy`W3@yhSgs23by4M55UH^zOM|k z|9^0D+OOa;s^qGLCFgk*ZP+bxQ9(*mqEeOfgDoohCkMWL0=KtpMlLgg1X-^_-N#_} zzTKT91Udp2wO$3T1!9O%lp4`J-q$F0&5LGqn%ArF7kvKV2!tcLWAyDrphxkB35((t znkaS5N0H+uuXfqZezsiqu<7=CJi;JS`K z!R82KGE74-gDGNR3JxZ|3!1<)FIJ%l$0C95cE`JBrpoG0RQlFH=7kH}X9{VU|9GTw zU^OaOEptnueiDEvdMv(vriH?IiZX5!5~oq=#sP2|{Z3PDQ-|+q41-ttq#q;?H_lgd z@>0N<#xw3X4QY&GO+&cE^{i*VW}s{bU#2hcj-d$poRV?J_yxkThVOHxSGXS4;l5!Y zG8nQ3^#g`sV4PT}rS|ay82c!ui{D4tQC3xvRFhy}T0LPy}i?wciP_yi6#gua0u|L)trIq{V8 zLj_yV94xE`Kez$-y21;3omH^B`|<$3K1@W_d4~AW z49`j>EWDr#B(jJ3zZb*>;#-K+s<_trt&AfR;+Y1IvnAaMjQ65HDD1;)!-Zz>nJ3Ib zN^~h)$e&{X20}E2aWVs3V4X;89g$-QPcelogq~Tt!!X&GSCEDa#KKf!Gnq-93wj2^ zxxw$_LiWSJ2$Z|QNu408zf};aX_BE?;y!6uLMG5Y=s7~~BaJQ|9QeuP{wAc9o(uw5agR@_(iBHjD1m_XQ(y4IR-I&yaUsc|EU5Q2P8!IOE640 z!Zv&cn%MztyQIn)0yKD}VTcuos3Ya!L5V!5b=k)|>c>q{HVA}Ac+^G&vy{v^27!u* zOTog`xuITB8uh_M0Ky}Qpor1|66h-kB(fi15H~-lA6!TmfP99SLjyc8!1$3HB(NTh zb0)1)woAILDloubFeo`#1=isoM}UJiXajVbhEABUE`TjyxP&)ogByzl*>j}pnFPwz1irb1 z@lyz?1fi%Sj-Pxg(4XOhzdg^Y`@SeCQA{8|Hj$8#k3(*II%a71356j zce$dMnub-71JUvWRB(id6NoPG%ssdxML>f$cmp(Ot5^UaPeTJt;G0c2#TXg}P54en zK)+G2&LL2QVZ?+sa7*_h{28iu3s zPVh7xwY;9Te9LBt%YV=U&-6fc?9MkJIEUEKH-Llh!GsTOgSZ+WX-G^!Km+%j2IFj> zPG}s2K?6gu%?A=iL$tV6f-Twdk{!?l0Lr9Q3_0sO2nKaf2>niim_=!T&Nk=-)Xc#y zcm-52gzu!g)e)d7Xaf+PI8^XX?_?HVxdhe$y6&8W|6hp92x6U4fCDr*%|!$=<#`1( z=mY@z1Tz30&_V+BWX~6U&r_T@#q7#aNJC%21p66=N$AR0;3gW65$eL<3QP z9XJ@%xB{qQxP&h?1tMj;N5sP1vrADh&V7L`Uf|9)s4W~Ek6`IONA1o_h`TlcNQ=B8 zltcwU_)a+()n*VCp_B$&fKWrgg-*yp7Q&<(=$Yxm1Jz8t7&-AnKZBapuQCVRaeUUNonS|6C zE+n`CMd&^0VHxEy#~TO&83@MZp;mw;#V+sz|2(ji#R{Pv_@8FD1R2*n_2yNZFAmF#&@ehR4axRFr`?z$Ft1*jG3yJRlrQ zVA>#9f&V#%pnHgINgw8HE3}n{J&*w=*p}al2)zvgG`J%_Fxtd|RBkONUo zgtc7(N61E=ys!CuhLq6}7NXPZG=r>V+r`4r2@}v~c!o{zSsl@WWbs=>Dp|e~rH$>_ zk42r3Rgwi2t{XV2Xws_haRj4{lJV)j|2=?`9SBa2(OWq91vHc-w)KMxve!_YIH8@I z9>utb@&lv!1in!sBQ?gp)e+UbT_=T|E+}0Clu`5wEH7bL@pq9 zow3yog6}L6&5Won(GgAU+M`mQOIU%$G9DAagcv=kN1R&6h1~z0DqU3DqYA2sm?jq0 zgy2QnX+Y0}eNKXH*kBA9_9a+NASJ!UF2#aCQGgOwQJzvlE(PWVI9TBYEx1JuA*S7d z8yJOSEj`Gno`|yDqY45Gvn9wQ2)oje9k~G}KpjzFUx?y`H?Uvq#E8!0PSp9th)oD% z^|<);vt&VGX;5L4ZQ*B;oB|G5|6cH>i9^pm6BNO?TzVBb-yH_vU6SGDpne4snvE#K zlfGX7n~M!xZh-?V`~`wu&O)VF*pwjHgzG7xVP?!}FdR{u&(FPA>yg4L=8>+f z-hTdPXA)4@(PYExKwg5e|4Y6eO%4K1)|nNmtdRr~&C$2C7zT4wLsm4a#VVkKK%G&zfzGm?8AGlGm4jRM188Jq zf*>XbVn~3*(8DRKb(tk{9-JfHBS*Lajytf~aV1O6=U>?8gtj5W;ow(Dm|uw|bo^f> zF~Hk&JwrxhKTzc7JRE#ZCCBri3p{2w{RM$q+|lLeG_e$jvIUj4YmXd;AEb;Sz+^+9 z71m8K1Cv}!0llQIUiEDfp0S||z9MpBp=J<;|CEE5J_x;5X1TgogFS}7KGVQH$qmr<5jsOK5QM)r8v2%g8Jd= z9S)!sARklcUoezuGW>-fY{J0i*Oz)i7L5hNW7X8Lm`T_Jy?wqI4bUd;Y=$ef)p5dI zE)x1##G#f5wX|uQ&O!oY2jm@_%a33cO z@SphvBsJ`F9vO4i96`ebKWM3ud*|j=66N{udxfv{DUxIia7nC&m}*3W{e=|Tfqd5Q zsqq6!b8z*OhK2SNh=OW_SQm+=iHr7bLj-TfRyN^6Z6@+)v+=A3GQ{R%{?kwIT(f=-vP+A=RXDW=)UpKBjIQ0v`%;#5J$(08|V_wE$EiSEQH>I%V%5Q z>og8zOYsBfSwID5aaOJIn|_9GlME!#&I^<_MSz13+f~UO0z*^tJeLO9vJ~y?Z7>>b z2RBEk3WA9XO@xp>ZsovLSHQo0Ksnd}gOx(}S;Q(IsW+h4=FM{1l}`|I?BRBlc21Lj zjmjiS7v@%QFPY0@*tJ$`HC7XaWYMRIgU?wk(Bz>U9+^0Q>=6%Y99#<){VBcEQ5{|& zoEMiX|F`6uX=of&2vI&ZpEMawV*iI2n!bCtLjB&C<7HNdp{&HT_ml^^>8Y`IPjCT3 z0!+w4VA!=Iqh<-81PZrs497|&Kvy|a`Bnownh^0b8Mk4e_|#ErsB$ZKMjqv19=d^@ zyHQI^5BgT)KY*UTHz@c^;3k+MIldW&nqLK^C%_|j7cK6sIPcqmml}hA?I_Xc>nrTT z^B&I=pU>KId_1Zh28OH8ps0-@=w+>od#xD#DB!an9LlXDtso|s^KtH$EHLitrg zojoUNEeDJqw^U#;glxn$mia)BL-ZX`bVlDMd;W)4u==addY1WwzQG_lVN7~p(1eb%>|}cb z)TzRI|G;^6L``(D(QXD_z(SYK2*fobAY8FM3t0D6}ZLr%aEe6m@H--#Ny+c z22oWLMKi2PMWb+?UFA4;*f+<7;(mxEv8LZaG)cpSl!>XFLuxZ_jyz#gIToikHG@Qp z+*qT7+{iplky^N~rhPJ86A2!d-jP3yZM3RVOgV)c6KD{2iGBPXrUft3O!C`B0ucn2 zLclaML?_c&$DK_3J+?zpwg8C4CmNcE-ZZEL!9);PO=HVsEQO|$g2>^gpGJf|c+e0f z#&QsO!%U(@OgEsClUfIXSdCjXe)JbGXm~h;AI%8$8xv+|hRJP-DYAnc|HJ$u#}1BY zRRt2+t+JhMw?Q<-8-{!mOEXiUaol&9Xm}@(Au_>|OEB36A&{GBSjBNSO~XqYP*r&h zAivqQTtgULCD$i{+J>i-3RY2t7LN_lg&&x#GR!k65sFYtz=#*2C`~C+g-oWYh)|W! zM5-Ga4ZdQ=kymQ;sTNgybYv_ZB7_s8j#>#w5NHfD44H~(rNt1jjfyy(#w4v`~NGJy>x6e%z z9gx&n$Kof|5WKXL2}vWYQnG1b5-=&=#AAgQ3iuS-H3m@>E{O6NtGpwa}eM?mll3cQYpy4iAToXbR(!3k|X)rl)OjM=|SefTb=E;x(`-MQlh(i13c-$d#CZmI_M9Go(?UKe@;hwgie-Dv5+3P|a@f zf#BZmV?M7S6KfiQ<`~OJ7~@<_gs0mfTnLjXTjFM1K{QuGmM4u)G}4lzvL=6mphyed zW(ZYCjLQTgm(e{iF);d*AwmO)8?2I;mYBoo^dFF1iw7Tcz++6q6z%IoHO@lO ziva2wnkXn~%n&LhsFkfxeQOtxFvDtT1vc8!;Sryj8C~TPNI;|i%|8Fn_UPvjlQ>M~r7(3E1F7aSA;6W6xSfPTl z^oBOHfg__p1CL39pI1!czFLsOE2^`yD~i`Bet5$hE=w8cNXMB;;m9v0G2=aqViimN zjw0|f3`cZ|F0EhE_ZAGH%=Oj#5my9-J6M!%Ts!hc0&6@}GnMs^^IwMk=JVfh3q{7~X9 zOd^h#SQT94VhcaW0S^d^=`R3LMMa=Q8j(fFC!cX=GnfGnsF-ho9!HZNY4x6kqWEYp zX6RvHBGPS8#8y0J=zj-%;J2G?4X=emi$feEKt{tJP~r$6w;@#HYV=$aX9#sw1fNWJ zMKzQdp-WWbqBx5qjdnAQX$%7wxZrFx0?i*|&s~G1nTD<;r3lU*0~eZ+V}B;ml=dbL zE7bs7xBGhC$TYaG z3|`m*B_iRV=Gg9blfa!ONGQrwVo_~gxD*d7K|5-ys_xb(8DnoC4C-x>#cB+L)iy!} zFt&KSV{CC4pQsBU<~|Ht#NzXgz-?}#a+W?0V-;0Ff-N3jqz!cd|K2cAU{Xww1_6mEw4E}YL|^#?Uf|y=FiuZR!!ZB@FeKrgC0XZ9 z-&aru8py>|5XUswmG8x$Q5^#fF@=B)!TsgmFGwE@@}F!eVBsC$+)WJl-S-8AG~zJV6|K;Rx!+rXH`iy#in2~XIG%i#5u-D!q3xJCbU3t#z_AdXKA z@0Wq1_#WH4qeLCD4u_2HpLQl4OWq1)X!q z0rdTX;q?`t3_&G=A|~1b!pPQgRLg(F20@@-;~2;m{Q`Q4NdiVn37#N@sGx9B1a=wM zDDZ-3K_JVa|HAvdK>&RZTvS(3a9=EJg7u{zAlTh#G#4+t!qqs3Aqbxw@`5OQSwbA7 z=U7S?tO75bpEAKgEbsy14RT#Z_`iZWzQQ z;ALBm|3U@U2ofx0P#ESz@|zi0q}~C~XrjVe-k3q0)Gu^G!VF~6DU+K`rkD^J<89_Y zID%Y4qh2@!T=3;5G)Gj}U19+kTQ+A&UeP~vW?q8kl{J{8U;;-b1#7)RO4gksXo6I( zib;$@0NI`9bqW%6!6xV?FN^}>Xw6HCaLYFy?ab!X`{4-tgmG0%W56m#zDkzN z|EPKm0Uk(SVS$8;ih_q|4S*sjCQKwwdMNjSC~<0~E$nB1VheaO(~1^|Pc&y<4ux#e zX2AiF^`(nDu4ryKlpOd0o*_hCb{OvIDW1?ootoT7RUPip62=_a9^k>%5Q@8e-y7H| z$`}@A9O_=^i!HUm9_+yzAOvt=9m&NOIP%Y*(AXX{$~$JwsNjK}O39}J55`o%8(eCp zuIgj_NuFjzYN4vhkw#*gh!&t~qrl9mJ{e8TX{|!wKm6&W%BiT7YHr99uHH$YUXepJ zYIH@bZz`)*SS!=e1RU5YwqVUj=~WrwDr_7_rTW2>VGRG=s-2q04?08}peh`E|0}2t zff?+9#%b%HRKcIdYOTIZw~lHZ@lPFDYNxIQwxTB{;p$!t)38DyzuIXP=ujyAsgz*X zpt6p=qN*Iwt8*|xz_!7_CM?Nb(b#DMGL~#jT~e`XY%;0rTJY1uaDaq-iv z+APds%**B$&#J7?J}k^$QP8H1V(O7CX)8orQqj6>%RcSS_L5#5t<*}b)%I-GCeBJQ z>t=3k%u=nm;_P97t&^Co(TeTWPVLXK=E&NJ+G=gw8rIydZP7-=aCxoW?k(SD7h33T z-v+MW4(`)}haN>O;U=!)E-vFXuH!x~~m5s=7Q?kouI5{|E}kLZo)1_ zHEaH&9wr=0zZJfHU>N3G3jDjJQuI%RSknva0sB?(cptL~zia-mUn~ zZt9lr`K~Yfwr{)8Ao;E>_d4%E6btn_ZL>~q* z+Y+$-o-P3Uum4J~rL2T@dX)Z>1_DDc;XW{OfJy)lFv-Gc$`+d+@MJ*R>H-5t1}iHQ z$bli?!DixtA;`fBE9>w5f+*B*^(xL5@xm{VX~NzFFeK&bUWFe3|AHpUuN(jZ69WRt zc`R$DFcM%NY{Wgx})~a2M?u}ZCCQPNWIOQm;o8w-JG(e3;To6h`A@kOb4pVQIlqYAUh06Ab za;CUmYV%PH@6!k49uAGDzZ)r4op5g0w~{BCRbRSd>X5D;IC8F1EWDsCFB zhO(TL3N>=oO)-;rGxbWB86<{~maM|uO!~S=Dy}UO#M@fB|5Qf|Gg`g@dbP51P?;+4 z1lRoXE8~Q`h0!Dtg)g>couo*IX-xukf-n0s#PR3ol4!S3N!6ILMo5ro| zl`P5|cod#2tz008&L)m5k)t8xQge)y^t#DmDDce^t!_M2iYSY0;U7a^lh5i48^1|M zQL06d2Er;6BfkaNDw9ZC3QZBU4mq{{u7ym$Q&3+_Ln{bWKg`RRGx|8kQtQT47fvO| zYzkxbS3_V&q02OdUe`VbNc52)@9jHlg&CCDrp@98oi$2F%W_cCNl)3=gf$J)G^CpA zO2D*L=#un~EPgCUEB`guru9hMQB`MaT5qOa1NGak|7=NgR7_{~NVPRlKTKv%^kpBi zE;+SPUa|{ONFUKM=iC<>ESu^0-dF83#AWq;q;_SKR&O^>MiZ86G%eA;Uq*$$_z4 zg&fo=Ff>E3l^h&E#2erNegT3a7y=w{%c%H)BJ4LFJPeJ!H?g_3La@z8=*cf=vNEm6 z9-zT}CvoGQH!az#ek+0>U<+WC9Gc)kfcpV0f%EUACm!Iz3jK)~2l%QHNX=Cmh%3S# zsPD@xF^i)C(>l~17=k0rFbe$xfNS_(2-<*4|2L?bgm@c*#wiO|+v-2aFpCd)Mhw9j zCwYJON7>vAT%0%@OY0kC_=dOilLt7W1!{qqoE&I)dg`}DLxfE;qusucYjp5fK%u{zyTg;0jBS_$U-2gBsmNd&=9l%nCmh`Xw0OmYrDiNj>q_D zm}?b4xrRULL8v#W*jEt10jkkDk90wXpE~`D1(}C5r$D-`@AnC71ZxL0HqCM!an9Qy z!4BX-wcUzBPXlh7osEyT$WFV-8IpJ-|FL7d%#Ld~jsuSj`GKqBx>bL9h`$YRxbS}O z0f&+Xzym@eLp4+b-Pt2# zTmtt2!w6sZe9+TjxQHRYQ?yLND+~`RfT~UK-7mNbn*F9FQ|4x$|)6paS=uCk=K1 zO49wne2>YN}PrRfNe1=QW5QR*tZ2C2=+O%P# z%p_bmlH|f5qneHSbgbjCQB{~IL^25%OM=a88A`~c3$9h*?DAJ3zroD)sW&z8@^9mTpj=waKWp-r0nkYE2D(A#FiUd3vbmmv~4uK*lIH2`B- z1q~*U@FSM|ki&&QQ;>=&7HOK1#+Fqedd86;Wb)&fX?Q^el~<1W#jb^R&}5osnu*J- zApl{~kk&{FViL8=|C%ZYCj97(qh|2r4aj~Y89T=(tsAdYpWg2NT zv1o@;D10SLX$;~;JQ}xpWtt>|Eq6X9h>b;yD!O=MlxL=K#3G)gg?3dzIYh#c1!Ff920uDW8PH?Mr(*k}`Q&9$-5Kc%IXP@aJ5SG8C+LdZXz zovgQ_V3|N;qo4cD^~9KneHvqBnXVbHi_f+OV$P@GZdQ#&nfIRwE4(nn-7#4Zm-`mX z?~2L{B$B(zW?6|snL zQDH)tUeO!HXaO&#pb-GuFbT#~Dn5p&)1u^(6jJQ~U0Cr$5Q1Qc!fZ~2ktUEZPH&B;G@@{X8HRvLLqO>g ze+hyjSY!$`pt1{{&_upsq`)qqQW0011Tm!&1XD<(p47}s(UgJ-P0TH%c#u|}|9Aos zO_)Fv+}dV3t3?%Wy+WQrz=OBUxgJ--QkHeBCDE#|ie_9#5ncF48#a+6z%+C%h|A*|kmn3be zUkCqz$MbN+Y>HT^T;L#}9yViByC=)78L<@gGLT$Qa3OQ6# z4ul%rGz=jF>X0W+6fy*P(crChUWB-ES%Dw0cfYn!$PuGVNEP0hFhH09l`@F%GgLbS zG&tf(hp|)!H??7DY;!02jY=X*0zm(nAaQep(5&t}q)q^X+g0O-!buw5x=+t24 zt0KuJh1&TWfx5MTgf7So5I1n)qIYm6j;R_eXvl96$ovdon0Y>Yu7aNdebbACHDLt2 zX0Qy`*6$=PE{pqxN=Ct$XS~8Lc-8K?dOU;`oUBEE;oN~~xL@QpLlI2ot?Hx!v0$|u zn>zrCn@VG6Znrs?8!^R>WYX=_c}o;4s9*)f<))a>65ZmY@4~)g2oQz1Bs32_^kf>QkipS!fbEah%{}lz-&z5omirA|{~DJVB}3A?UNf{8ToM|W z$yL{D@^-=_jNFx%8{Gy!EdE3#8A7Lk>A^jVM=|tMODr&f5HH)U8vNVCekLIUSPgs! zF0|iYgbA10P)QokjS81?m9byIK~(fImLlFz1$VAlPPL{^a8_YrlQ}{YqWFYWfOK4B z>-N2H!h}au@(JmmW*VZEi3K$gi>onb?Oe&Rg$(fqOuZe<5gYy{jE@TJjRsD1A(DJ( zjO+>R?CzVA!^2F~xGF%=iFM9(Mvo+T4DA^dVVs8H7YMFU2CVxeEijOPSPlyi3}F%o zrWxdgy{M&j%s^Tur-$AEWi*A<2u&e^fbeXA`2yor|E>e1Ou=Wm-~l%V>BePqkVrk6 z21KkUVot_vvPbE>#}T+?6!5^0fbJq}CfDACGO&kj;G_!x;SxSU6huKKD34Gt3Q1k|GFR$@gU9AN*hvI>GoDgBMhm@{pTD+#OD97)(ZYtWqDh#6~j={{3KwPTu zMLvOBC`6j}ajk%iA{7JXN@~rpO_q+NR7i*b4G;lA67mqS0ow-#c@dR@AdYZhS0c;; z`3WdY$OA>K>VTpHF{P<+VJxL$8h6If|F|WLGNx6kfDl{bmLl&4LuhJDW;qh*6%esz zfPzBe@e*Fp2qEGsl_J98rIif97T_f%6KE+7iU3h@bSfk!J7P}MifUTW6c`Gn25vGc zqbMl^4&_Z|@L&gGM6!ZFPEdhY^aCbSa$2T=!0N^-TVn{a(h$q;?E<4AB@Rv)aV~aa z6hr}TxP#z4?h?%-He@n;KCugcf+oEuw)O)xIU-L;i77NDB`aiUmeC(;p{Tz?J zic%(hCf?Ao5KChnM=6JlWHS&#d|BS>-sC2`c0T?=wJY@n6prbIRB^DN?W+38KU1m_K14?+| z6VQ}Ul~D%Su*jqy^2XEgY1#&_G%~!cpJFHsvrkck{D+GYB?N8dgCO z=Cw}Wz+QU@R9_WSM%572ss11i&7#x56z5~AKrR5GFi>GDT*fYqi3#YU8TbfIG2v>$ zQ%o=cW2uuD=5$^sVGkg7%_h`X)Kw7_0WMpqQ)|&A& zP*pAzVH%{ZHiC@_18hyHG(2==!^TB~z9V(`>Tlo>g5<=SNH9F~!aw|Qa&Slnrjku( z?Uw)yS8QRfaOiit3=I?k6=L)kOaTxMZX~n-5B6XW@BqskFLexI6zIej^lVfFv4^IT zm2hYU#uh0-NV{&uLv!qxa8x0xfO(tOtft~*q(LJ+s0$z>RJbDP0MJys^2St^;7-C= z&X*+Qzz_Do55kZvr^4&J2Ud@Hh z?{|qfXH5cM5oceAEF*t+1yn>}aZ@){!(e$eI7VRyi1>GnxHRT>bL`h*rM7*ba}l|A z**?ZDEZD}_i4rZbn5e>mqbLYuzunh#ZpU#NCOOPXbcGuY9XknvtaY=LqH!{6iB^Z}>mZxVnE6@KAsg^3y8WCuDcIwx{LBPPY#Y1qDE zbBs+%%=tcqOiqRYcl{0zM~{D-Y9)u@`K0ZC^s6BQx*i##4LV~W{NxgdDq@(mL>{z1 z8Yc)+oJi(`yH_D{o$&;=4P2`OV z|2ZTaO^7^ZS|N@~k^1;v+a!r&a|lcjsUPqe1eOPLa1a&2RIKHT<0rA2O;KwN$ki*eg=KH&y%$m9@cf$clrN?Ro4;K4GA?AlnI zV(l5W3|wsE6!%igfcW)V7!Ve$8d3%oxaFSZ*AK(=iN-~Y?g=PPklmab!I{6P2UMq>Q%S|7A#8mZc3ptFp2D(J$DZUBpuY#8=H$H@tMkkUh>VHCtD zr2YXAuxxxENYyALyOpAWS)_|1rc;2y4zb8p_70r_GGt zoY^eAseWRP0o_`Db2ZqfL6%Lx} zhk$4tr9ySrkmRflYN|hXTqX$)+5m^z>Al5+w#1cd?VDEDjZ=Oqe>MR@|G(o*GP2KC zc`|SXE+9%z@pL}MFkfMlsF)Pru*neou(2PzV0&}e^%W}7^49#ITmW5j2OXOVogy(} zx6fLu=n1?jdRT~6NzS+oqe&x6wt)P{fb7q_29l1JC&Qo?X6NjsH%iE{sSEs|@wQ9t zh|BT@St<0K&*j3;cS0@YpwICDAz&vm`dkekwzl+}qCNT-a%AOB8Q5i_Q}lw_ogKNj zL-%&zrnBlhm=po+8|WH~EUuji_P~{2+oMrhyEOE&3v8Cz8>&ZZPE5fu9KqrnYZyeq zF`5>rzUdbTY9%(tE z&ELd=R|FLdK@r4i(t9Yx)p;tA=(xQ_XikirR^bx-;DWs6>sIS2MF9{d;qi<7`zT@$ zXrg{r@>F_f6&wK&9D#VP#~H2EkkZsAR>}|fNHTESp;bLLy~k=-!JGHs5;j6FICZR6 zp~5CXDc%6cV?hyq-!qWIJ{QMIsffxQ4WAy zP66Q)poClyohx_xD@P;2S2QY>f?$T4(#sN=()ANY0h|Hi*)&l|{tdx%Oqwl6fJ7ae zhN|GdiA<`jn)d6{q)CSUG5Loi)-+8+CI-lG8El3gN^ z11#kvK%a(9TZOdZs%oDM7r#!iipbrLCar2V4YJm0xQsf$S21*lGQ;e3MJTgh79phELQy@l#A1h5}8MB^o5Hi8}0GY zTXD@**Im!#We{iyp<;+4vG~W+OUDf(O)Q#ha>-H0{W1+ND*|!}D$Pt1*$$%kCk>F- zF=5Cin)p$neJu?ENHv@lWR^9U=yjfs)f{>Zg~s8L-=WoE? zY};&1VO1jyc-8!Z2B1~gMK4XI;(|s+RRob|t8xgWTc&&ZaSXSX;(|xPAo*C0HN31e z#3kT81Ku&KB&6tJsN`DjG}V;%(GZ_lV~cs(o@~ZPNTBghToF5!8JTfeTcBPUJ6AG! zH}5ctHKGK8Up0#CfQL>L27w7iAs2^)E%a8yrmR|P`HHC(bDPmh6Ct4qctPVbb+~@? z<)}(B+hPq#CT()B*jf*P%BOM+Q3Wpd#vHC8z?f?3FX^^~gelg%a^RxRNE6^k(>-%z z5TlsvpS8v!d)QgH2xRFh=Ed|1=+@#w|6nYH^2rO~JXfbSP@mc>joe!AfQmJyV5Uf1 znIa*I>3&`W3~F6Cx5o{JJZi=cD@O!U8?WTbajp<~wDr%^oPBe4uNd9<)??$*AH60w zgNn>h+9L@j_vG@`*@@ zRSjFjB3cK^nd=S}tFc|eIS`!2|H3s1`Q7DwQpwRXC>0k|VJc5Un1pjmWsS?+r*u0z zS?XfshiV)HC{~F}CnVOw7h2;OZ%COUbT-0IDWXkE$rY<4Lnk}oNql32gD5lsI3{S} z5*o@A63n28Pl$070n<_&CLu;q|6F1vIU0!}P+^N#d?H^hVS*ekVTxD8ViltRgl)9s z2T_Qzh%QNxU%H30Pn3y{RK%V~y3h$xM2rb<7-X`vFbO!u0u_#MBt_aF#xgpE35wuN zbS5Fld{u!tsEEZTJHbG4RpS+S7=lBp9NY zv3SKOF42ZMYK;kK5aTC00XUavp+&9Sq$U_SN@Z!{6Kb>-NWgMSKvZ&$$@+&POySB^ zd_oQ^K|)<7!8wB{LKLEq1E9LF32Tb-B|~__CRWi*Q#isrWAlS8_xOo6G)0;7;TsqC zhK5dT!VIZdRgj>FN^&By|B?1#!f&kk2~8;C4LGW!J>j`WGD>VcXe1{-Kf(kqP7x%5 z#DqDuX3r}ki$LN_@Hh8hG7nCK=dL;(mbhz|*+G(xAxe0M)afq!0O>h3X(3QDWQsplt=ct#^_M>MqL;u zO0C&N%+^wmsIaUiL=m!z=u~1Jd8|@RaS1q3F*R;&W+%|FOhr_vpa)IpLWy&bPbhUh zKQ)LPKJivmYyuCq|N2PRH1Wnb&T*!Az(gATN)fX*6Rm0m)Eln&hECA7w8S}TdB@1m zA;6&%+5Lncs;f*vih@3Kg3z6KThbi_Av!_W0aS;ug9tCURSlLfQbeMO8^k1AUL;r* zw2-ZqIt2+4-T`q`wG`g22N={L6lgsXVTmvy#?D%B7gjQ1XGOTaN8Q0kD~wZKX%WZE z)kJ!jFa#}V!815Rf|5NmV-q`T2ube3KL|EuzICArNWgLBD+;S>9x|0b-99PLc)}!3Rh;!IWRe0} z&=PAfXTKch5JQ*Lb!@dq96f0o?-kZ%F0+&i`RFrKxe8nEGJ@w+5)czi*(2ujuzB2N zdW(BjxF#}Ey0!@oZ@JP`bF{Vp(QD6;dfJ|$ceAn6WeXce*vGcBxeKg`14DY`)0EUS zHi0A4o>}F4eS;}X!Dz(c0TrWQAjzjW9Aw|TjycB}sT|#VAXESU2k_l540FFT_dAnI zNZDNHKDS(B?spc_P1@buYNA5Yl!TB%kxO$8QHlzwk6TD?-Bsf2_xpEef9$<;&faJ5 z_v`g|1{-=`|J6a&Rg8RjGU@xR^ZuV49nLsr?Frgdy@MlTd-^)BUpP_z+4A$DEQ`0H zDQQiFUSTbVhi{kD(i@%SKgGfmpFh&S`!My`Mu>*R%<;^VYh%aOtwa943k^#t+C01w z|JGt?PcYVkIU{s>?~kN{(C_Drtl9^>ax!Nc}od7s-gV!%<5Id zX$n=knku!8FegGDNKk?72wzE>S`1CYFB8M2=?v2J*k;O0v}jXm-rF-5B>~y{m7)OP zp+WkgYWhVIz=?R;kif8uVK}fEj@1n3K?X$1PK*65uG7;kv>M zL9jwKS>Xg$q!jH*R_2{(x)}l}H_J+1VI4v+tYcUwVzN%MvrboMogK__C(!FOnBLX& zm9t2if^6?2Cx(hs#;r4#H+*5DzpoznMk%W0N(r@Wt!`&750=oZB%u zcdE18Tj8oJVu#3JOA5HSdM`VKOfMS*CbDx6RWpOwIh`xHPY`+Cnt3}}th!U)(_DcJ zB0Omp=0X8qsWzbwvK~ogvDoZhcK%d#{=32a_XN*=f}IXmV23O;%|$w5z((lYmxSE$ zR=V6QXtR|b-N>w1$^XT^_`CYz-^nZ^sSG1D-|Vc=&aBWHSAaeXJHdqnay70^W^bO# zy)l@(LnsiBEs)GE&_rDD_J(J01=ePTz@LOVh{z-^#8)GqPGD~h(%WM$N+SymwF-?K z3+oSNdwau1q(DcBhzC5uU+7D)A$Zc3P>H6rATmpz#JoYsGWk^Gj=b!lby+Qvba#?q z27r1~AR~Tz@Cv{srC9zXBELWs{`}aApO^vx~E9igS_KvRX&X$dH3L=;7am_!@y{gHXyRk*H6s zFU7g~L&X(ZrMDbQgUzmb_d(=;7bu+;`h~kRGI-@}cS+1pk%52dqwH&KHP`+w7YC?- zD*#1ThTt}zU;*5cNOR_R>!ore@O$f(cI5S!TGz)Vx?o;ZQq>RVUw^F3>?WmqrriNV`1hvggLG%Dxk_7i&W;` z@?Wh==DVYIO7{HsGa6_JkPJLsd*^J<9S!uI^L*7*i=1Ai(*=*9g>S29wbi-9)xmz% zOsCWN+BJnvHJ9URuIAK~)Ye=ZuDQNibAzw8Lc8{sQ|;}z+B-S5HMO;OhimIsYwz*x z-Mz1Ux5?>lOWfT@Id|J?@3s%$?OeV4gs-k!yRO%%u0O8sX-?fxZQZlsy3y6T7ku?E zwd=?C>oeo(-{#a$)z-fou7AH;{~uq&WKQ-2sfLen4H0GybEg|VJKZJDHV|7G03UcE!(k27U|RvXq<8=bcswrU$D4e#;g zo-6ii{5^c{7!EF<3kBy^K+iVTU2TM&Et7uND0KIMK0EuL4A^)d4c@xh#YFRJKKb7e2~~qEB1r<5fPWsd>k}#-$4fH=y>xWcV_w9 zD5&;E{zqt-Q*Ii82vL-3-gg}-I<2&K@S)`v&Oq~JF6wzB%G0?eBnxugIlEaB>cWAR zk@;IV{B&8^vD`)i8s3FzZNs1{I1sz+Y>P4YAo+3IEI$`;Bk6Pd`>bq7E;t>>-_J!o zy^HF^@%iHJ=?mXqbb|VE_+HMU2Kfbi$v67Hbgbsw6ZtIS#SbZ&MV1qhrdtqKz`Zl` z4O#%c=fuvzK!h>pf&R-*r}oaDXS$5h$PIo0Pk!k4YYkF=o_H_rH8?iH7M%Igv0(K> z!k_qfi!wY=!jsLo*0*yFghQQAKX;ArI>0lX-~NgSuQiCTi4n<=^hVS$3H1^!P`CeO z%Rw#32;Gd1m$OLR-*$633i%!U83#3x+c7-$Wb~cLyFE8o;oym`C8Y{xdu}XvKhzUG}bqaeuA0d`P6lK zkH)>BBpj5A6Bsx?*kbls zzAe;_xDR>rKSv8(;(`U_8+T>K9Jhq^oL~Gah1g-69A}?d@Lr6#K%dBgPv;K&G<>m7 zBo7c#6KI5E;|s^XLXvea4L(0#IMaugAL;q~z=HcIV0`G=EUFXJ@hqswfeTTYMe1hs z9(q6Q{QlhcI7mAQHH_o4=YX{K-RIdoKKZ#dNNer8Sa!XpWzI(Cc!7ruRpDIIB+26h;NzX zxAxiDk6ykmAj2&%@RMYCJPumi3QOZo9Vf#>0kC5(P`R`4G!BG>Mqbf7C%}NFq2cGz zsQ$(=iU7<92j#lL%Us*<3rv>@%%l-Vm}759WXL6XXx!+Vq)wQ6`cpOWcgHzM*D@3p zJ6(G{TYY3OH4t$U4IO&_;uv>|dL5E>3{iXRSa3$qk$Qd-X5{3|13Y=6R(H}R|G)8H z5C<}}htyHY1M;fx zdGe%^fNR`WhIu2SD=NuFHMeF9!<(B6XAaA%*sj2j868~!h+QMB4=wOC@ExuW)kPd4HFRoZJdes)sQK`C<7`L& zENTqLH!lx)`~2hUYp5YK>N$~5jnq?)6L{*3dX7Qu27YAD?hh3;L~hd*5V$h-`OJfv zEcwl-;NBV@7>_|td`4w$fr&gY=*iaAbI`F_RCnX%{06EE4Yve9M|ao0D6Bugfv?Fy z4^a@{7ayZ{yWSpZG3D`1$i5D86KJDA?KoQ-?VC`=*ApbuYPRvC5JEY;_;I_ zzWQ0dKJM3M;_o^R(vtVz$k?bh2jYk2f6hVGP=5NNe-Cg_&0~D+ypQ~@SYPh10Uj!2 z^H)CymCk*9h6Xv0;jiTIx19UeZ@}-51-tI{4ma}O0ifHe_oTgGPW^=%#(Y{j5_OXg zg6iY&U^T|DRi3m-93!Rg`GM$8o@%y;UAUvRouyswQudI2v0>!%O8@aC*D~`H8;eup z%kEq}Q&25nV#TA<@v?s8^u#BxYS{{0ws6!HqsW0W^Kg47w*n1^39MJu$fX<+HA{2n zs(4oshMIL`Wco*hSRRq)ceASQEk<06GNNri>Q$(LONw+=cVyOyh(_?eI+<2&Ozbq_b(0@x>yQ9IoJ3rL6w;> z&&FB{vr4xS!*=;f7aCPdKIz^McXp@oFA2(^3**h(xj4rxZ)}+wM{j*>q{P2jvxglt z?0Fl)C@-#H=k?TfOVXSifl4n^a(Zr2Jp&W9Yqf{sN|wqARPmkk8YQOZgXxbs8cuZe zv2SB%K}>>_h`j)#$}`3y4jnp&aOakN)Y~&kJmUtpICGp;`ul4hh)-S+8TA(DJ^0;5 z1^sy5D-v=&l;szW0=t^5lg3@wVjO9e*3lw{mp)-W0xQ%rTW?(@ojP&Bo7LwUqZD3! ze-ZYbOCa8n#EWFVlSz&kDqO!Lc8WyfH{B*NM30^dWzkEukunpF5fWirw^&8;>5Zx~ zLN$)8(nyjD!NhR+fPL`+4{hbkF*L`kGR3ld$b97ql4&9S+XSLQEl%sMn5^gen<^V& zb5{@hno?)!&`al(SuVz%Hz7X554`xB4!NPv&3$g`B-q6iQd0$vWL-ci1%)o0 z*l%1Tfb#BMnnMvI-OQ`IuF;o5!}r3@RDfMC@Y8=cheo>Gd{f$GvQ$A3KJd0=U-p0A zG8-U&vhUQoRF7{>2@D!2lt$q`=M_FPyRbG8GiL#`t-$VK_vx00!{ST!%`@} zeAsn;nc{3KOA(p*18of|<#c7FZcMECvHAS0wtV?D(!)zqo+e(+7vd(F+(Qd*vW>@y zI<{FF=t42E8oRtdHYVz$wO3>s-<+xa8NTvo!m?8*NQZX0E=K%ueojZcfj<`1oEB0EGJF$}jlCc&%;s5-J~+zRFyBPX(rMec$RjpN zPUqHALr^X-0XMaX*mf+a%2@oSG;00`bSgk}C%SeJ*_i6EA3ro=dbb~HsG?TU-Io4Z zXW)dbz%z1*ewa~ifo86M#a3Xmtu^>cn@1j%y&!j=XCPt9XN64*){?gtcs57$6GGYw z%|UAp|A|P;2~@Io%j$dW=yC1cV${LT->zf}6ra6We2S0f znuaFeK$t!yq&LN_=IdTKTx4w4=x5I55DE^YG&8%eRrPpZ0ceK1WJ9b7RDpS1MF_qk z8ZtLx{wv$yB9>po#O%&$44M7O*dA`d6~!log5Pi1i(GZI>(~4(q@H09sShwkyKs1F)9?KPij0Cf0d z<5)!YB^9D3Ud<9RszItm#FK9)qWx#l}D9WmF!#1FNFgy^^w(&-p`Fp z2$#>rW*q>_G_d>RH_&|iaq$S>>O#YGV75tJg;2qko!-N5cULU+rEA!>ihOvus@xo1 zFtlIs%@%9Vib0d+5;%ObS8sUB%?q9j=E3Lgse<)0!#0P~il-kRi zTrhSe%(A(;pk)ux!EgipjZfAic6DsLH#E0Jk3)nX5 ziM%AhGHEaQCv0s3XKq@57h&FrI29IT$mu`&fTmAtX24yFr= z^)7pGs}{l)T9EB!efX`x0kWacY+H2hOOSvIy9Z4G3b07aebria$QWYw_Mo(t&*960 zmA69NVc?>?K(uI(A$n)=shY_JYvG$GqatUlp*x3Y=gNX!s|d}f8m}BUnn!KWJWGS7 z3s&vvMr9rU2t^*>*KO&AHzK}MIY)wo@8S7w1&`&tRr`dvZ~_vM5FPmL-BS8`RTv`x z%@~X{ghitt=((eB=}u}nr&DSl;3i_<>){DLZ>Ba*e2YWuajiw-=$B9E^m?B3AW6kk zY@B!$t!+kilZ&ZXW*AhQK4s_1OAUp;mLEo(zU_v!1V&m8kPZSh%#GJbpB^-?!uGD` z4M_aWEyPSJNzNZ-oxgyKk%i(#s#&&tnc@<@vf&aRk3DL;5k+Q$JC-hOe|8Nh{wloJ z>vBl#&tuu9dP$w$dx}?vj9*H)_K18B31lZd8qG{^zH@AySd)^Z=9%k7xhX`t2ogyH zAc!5E;jGJ2p#T`xlQV^`Ivgj?1A@2*A(5H_;Vlj6O?NdavoV@1+@Ae645Qz}0B9K^* zft@D9D#MLZfk?sa%F`$eYcVUa%Tq|vON}ficGvc0uBBKthH?EV`{#c8<(~sYa5kR6 z5HDfVF7S134_F=f>Nx8-i?qtYGVE1c5IvFd=W{(*z)F4XUyb@wADDMLF z3I}yiy1H_KGHj|}_eE(KhaiZ7i|fC)1=B2Jyw|n zK0a{GdknZQ^d2>`isVUSq`Jkn54HUU%GLEKZsD)598}%Qqv`?<#plpOnlGpksR|Kg zMYx_+P)*E3WvSg8O|k2_uw%tgcP>Jxv0a`R)LPE75AFaF zw;29r2fRHvbv+lI5T)KP?LxkbC#_{ityy>g?a{doH_VFg6xbCK@@ON~l>bVms)8qp z7N2X!a3L^*2+1}=zrGB}#44sxF)cs`wyH^X(O~6t|Id=AkYUY>i%4>ieHO}5l>^c2 z7W9rsDe-6#Bld|!k59RjW{|>2UKqx!qid=9t!^soJI2TT6SaZ6!6mIJ0Z^s#iH#@0 zibGjmQcpU}XlfMaxUJ6InJVpSnlc9{Jqc8p9L^(wRQ=4QNkHjYYGcBFbfwE+o=f}z zK@1UW(g=QLOj8JQQaY|FexI&W4OH%UsU&% z7ND8RK^h*^Z3$ZDWNRWoGa0Vax^4@WZi_`XmHeK6w52gZX&)^KRV1+hTcPK=mo9Pp z)dA1*dTLe}$d!oaN*uSmJ%sy`>Wjrn4C;{U5Im1H5hydIVL&Tq)yaIFOYT(~USTj|X{G!!Rd2@bVLqCXnD_m_j|wRv!Ah zj^?^2#dM#A#!5jC9loS=juk?oYaBbI%A<#KU{(lERSK9O&kT=Y>AXj%PSW>x6})3u zp**_lZCBNOfbgrVjK-K2|PXe;$NX}>7JecwNb=r zJ5b5xw;0}JKH=@bNotYnRI%N3smV0G$iL|JRQzZEl3A-BhTCV8asdais_Q~RDd1rVD($?{A{Jeu*@HmC9_Y8`U8Ai{qLPS(l9!;PkNNtfgWF; zF6a4j-+Mo9nXdnc?41axevedpebi$tKy~GX>$!KW%RkOiy!ch_@8ft{U{)8{#?%{wn9=Qp|vw5Uj{P z-dLzB4~#tKv-^)hj3kuJO1Lk!SP)m2=9HiHf8_KVXNyjjU|5@4$Du#^8?eH%(A=D|; zQ}hkPacuu^@b-xy93jkXHpB%>*XR#kf4{Jq7$E#1+-#EWy#1jkf(HFC%cmcF>}Z`5 z8fu)mP(t=kg^nv>CxX^r`cix~-$R02C*opQ9%Hn4m80IZ_ZMg*@qC#DXqh- z3$NM14J_YQMihC;nJ}qT3?Z2|Zw z&yE>h{3>dNabSR*aCk`}pQ-YGiE#vGg?m?uh$SgZ`I^Pr`Amf3;*Jl{{WRlly@B-6 z{lb}UF0;!XW61Ht5z&z}Z7FEx?vfkY*BtZ4wx4M(;9d3#bfW*RDs z^)6g>Ha2J$TJ(^~RRBd*#l^gdDmw#CUh)XWyz$Wt)EoO;tN?StEFMcrRFk3k7Q+I! z5=zlg#gW10+swq*5Qj-dNHNQo@E>L@-n$jz5EGKw#mE|9M)ADeGMP)JkhaUKrn?h< z#SCX2Ga4PM`418cV1@4i_D@dm>kmLRD642`-B*4I!(+tqm;w6k<>@P7nK0^!{Z(kc zV8F`HE3D{KOh+;!@G{Hs)XKhheJ;||dy?VKWBT|7m$E%u?IP$INWF8L+StK^Jccux z>2+?rIC1V_=fdjq*#3W6lM1lae~`q{<*RCP|Csu#Z0jy%3Y)RM?Izg*OjRHC^=~G zQ_*F*%D=apKfzH~PpZ5JTJa|CHh^LW;tP*%1Yb#1#|HEj(zUk&&BhYFNHkgYdynel zlp|aD3i~N0{>IgdP(ykM`{%iZlX(bQ{6VO>5KWc>CT+h$@2yDwq=yq03I@JLkv``g zXDscxMQdJ%?CGyZJ^dP8%s5y0D`XNJ^@MtOd)-$ERw{O z)dVv$R`k~5*i@3%sWN(P6WW1`N#i=JdOMJ`2S5^Bn) zJOJLVaK@1krgls^#0rLE$64inaVwsRIQKpCdisZipGvLicQ(BTZ~t{(Ne#T3U`a{$ zFdLD@rB7AGkQ6i3Xp=siz;K~=rejB4aWwr?yV{z*Sw90Gyrw}r|DAs$9OuT9XP?0C zJwiMFWN zjk#I{Ec|xQ`Re&ol*3?S#_YapTAn@K&EVo_3Ramj+i?N*>bJ;Re6Q5rG&|yt?ALDA zO_gV3_LNS4yIZ1s?O@h+tSRc^i);4$7fJ{2J{!o__4pTlAmUPU6eT#PjOD~F33+uy zDRgjRqS;53&gs7$8P0JWCs$0J5{q~j{WMPb+%qv`S@c+YQLB_{-dU>cgdVDntBUi2e6K61xJnqq zrKL%kxjlF??U(#5zO<_MB^~>+=liRskmCZ%-v?}$g<;~UH(b2R!UcXCqFkr%OI9#M zJ^d<}l3~RaEZLOFiY!H%)J?YJfiKg>_v*5wMDDs6Ie8GakGmLkOnQdr2lvklhg|21 z@awm3y+UD+3)}jggJvIay&#g4o~LLk{T+qf@?c;LY*`bpjjq<+frj2d-48RlHbWXT z`d-f+H1c)2P4Ib`5Jm`^JsvHoZ#qqTW~evi?P26*Jy=e@3#}NBJ1}U7;$ruPzH>d^ zei2)-!pWziV#Q$H^V+il1rfR~0>_cZlP4b9c;5G>LKFmdX?OI3Yi<{7y_PbovEy-M zLea$?%t*VwA$(xSQ>poJ!mVcYP`^U%*Wrt2oUSO7AN*Ew(nULd8&RM3h^tAz@!N1% z`}900&-iXJ{AtFjypOWJQSkR1dvU&l+NTr+LI;g|Ay!|qp_KfAkcUBvP22icT2*a_#t)H|--9s6l~^O-@fT+@ir zcu>>m!DnUnFa3Jn5|(S%@?#lmBYOC|PP~ute@V7kx^EK;aoMw%gh6U*3N3rkxxpLc z2~)-dq$(JJymB|YOBySwj% z-NVC#ouulI^cEB}4jgqdDyOqlWxb2~_p{zX5Z^D-dVSV08Q-p{s4|;`XnRF{}aQ zCo!SSVzjwAdtU0yw_f$(o~8kFzLZ1v=iS4M#e^O{J2~#>hpz%l*0g>sfa1~mk2&|8 zv~IGJZEf&=%N9!g7Y;Nv*{!R;#^U-fo=o;y9MFAwGbF}ZFa`@&SfY0!k(Dk7Rxw>D z|29YSFw5#Ky1*#0`zmVg>?LQ^?>`Idf*o3XvCQ*7>dO*)i4KB$?HSo|4@G2l&gD}6 z1CFBqT-9Max@6c357rSqpck>Bs?~^b!L!@F7*?LCcp(NFD=w}#m|AE$VNJO5$WpZ& zTfuis(?)i6Oh^zf+G?|y?pO3=eYV1rG6_ty(3T}BLxc`;M+HJ%d zHRb!PQnKfDFc8CgBuu& zt;M1zlgbkFa~>wx3V9!Med1e>3l{CK+rQT=i7&bgzpPZQjk&VwZRRNEZYJZ?R@Wd? ze@$C+>SWO|kLaok1oYdqJ5CpOk|-8auL!paU&i=vn1z1X8!q5@)qJ@B&DMvM=Z%h0 zxDLVkkEpt69NpqjmD2QA`6FXcCkgNVeR6EdwHx{hzLvWha~|b2Y!1}K{Zw^vRLkW{ zFg;qpnQp0kk^Kz)$8V@g^A)YcC*C_2EW?hyDSBhfR!ed9{U+^T$GpJ3+MP@L8}24r z@97#c9iAfcKR#hzOX*&6gOtp?P80C$0Im+T+zt4}8O@r;Fq| zQpC^X)6Be6d=u3B70XF>{Ez;*NS=DByu*{cSH7szu(uOeRF}UzAj+6c6?oU)2l}Nn ziq%dv{(>5`XDf9f1&&SKz9r*qGpulWE|i5Sd;lp?GcOewNT0r@Imf!0R-s;VWMMg< zsC_$Yikd{eEw$^ns)jT*_}jX0{U(630h zp_n<0t>EW^;m)v>s(HuMjtAu?_3?@EXy_y9VxFU4N~)Y2ScQ}#J=G;P=V6{PANPCO z^>oH9yqa^Dq7*!5L-wu<0Wh*vjql3IL*FRs-lKS>C z#mPdu%V+tPuE4hAKb5Cr{-*a`dLacj#FigrGbxWLISCaBS$ECM6PvjR*N)UfWMa{1 z^7@~*y+?kwJVYgwhVmbuyGgkmOD~`b^9Sy6!wk%=26T=X=J@X1lsWt|gJ%B{3HQ~W zrkDJ5y2I+>Zhw@#g=Mxi^wlI=@d?-~z_jhVH)6LXi@%f>O;_$0vNsJ%R82B8PbuZU zbsJMgTK8+XbZ>+pX4uCNey?3+*C?fyHo6nA=OrNR;vQ}9VeMjT@IU|_gE81CSKmUB z4ukb~6buB=5R+aVHV6_Y!S(1bpY74)_LPs5#5eXKa;%ZN`&>38b*yZk=r3eD!5_?G zRS6B1A|DW}F;{;7l>&7xjb8RrZ`7{R5p2)_;-6M@Y!rf@;p(LkyMiG488l7w05(nD zVF#RRIjLFXk=x9g5 zOwZyT4K66OFK5-q>3!pswU=Rf)AM@MBj^r1e;g|c1y;uh6Z?9~y}{k1ueBrW4NPrx zu^#5a1IFI;OKCJB$#G-u?UXlNuenH3m90g(7_|k$xV+Htw$UZ<<;~a|DA?o(Tr>5d zt4F-N>Mtyk0YY0Z7}ued<`^nc{szi@n&=7d_aQz$1o6dk|1Bui8{9PqQRtX9rU-q( zsa*Xus0KkAKQG+#$N+uEg=?&oT;Kw=Ei2pm1FAcqkXV?|k7wy?VF!{}dV_MQ)i9NR zd~3YWFz;^9AM<>dvsV8hg+=;wRxYc$1x;LcH16@-FrV{S?9&F&t(5yT(j*B9iymiG z-C}5mqh9>X4}@@-mdkn*aDAS$;0Nu`h}Xk~hB?Ul?Kdc1ogb$ zu@|3FFNo<*G~Kr=fO1kj$-y+GwHbFVRcUeHEK8(M^A2l}swh`wV|>Sa-{pN$oipvl% zA&jPo#mnL}7OMFY;%Lf!f~R*i955?Muvl5t%GG&bt{_m(rAH&J=LBm!)jArT2idbs z>66X)M0pjJy^Sxf)kqCPlJC1oYFa0NK*=oFahW?xnCQ$DhW;O5+6E<#0=0w!kH3j7 z`07Gw(2NgQy&a}q<;27@CxZ}uU$;i8QdW<%Ym*bSUGk(e-Y;6ni{1I-vs@Qf^XD~Q zKCU*!b~#VmD<$rZ#Dv2`^?PAbgtgU%Dv5@#+C5SevFfn<^Uv^{OR;0C4-VX|{kaNQ zs%@Osc9Z)&+E)8eJ3ex4wKgukIq7M2&+4r-om!_iUuR!6rf9dyi2csA*l5|DZy0vF}4C*G| zZ`ZQN77Q|aUO)EJIisgv*E1cO`0nxgyPm|E3+(X5>KTiATnt{eqq`$pXT%J4H4O3L zAy96s{=Lk`oJ^9m=El6Xz9hMuY1U9@p0wx*`>320R-A~?+VC*jkj%hW1vGdtHW0|* zrOdvS0QRSbLUBLpDs6D_NCUD$e|cczW7qnclb$G6e<2CK?upp25ZhY=IS6Y4J*GEK zCN``jb$_KHM8)bpKORAAQbjPZ4P{{G8<{N{XZd;mw>NoPu$o^zc|SAzzO(92ns0W< z-5cTD8@1R#vT#gi=)FJpcD40^`}LxWI5ea28Da}s2FO0%En&tJI>?hmeaYIsC#*6c5Dow> z;s9f0o6A&jGoD;C07$`tFR}&q489+!TiDNv)$Q4nDeP7@?vc^3-YwM?Y{tt};;9y5 zqGc5MTz~||9xaDc&;LP9CF(wi;qG$OJY{Sr;TL285;Jm6!1fmEF*Y<0Bc} z5(t3WVz*oZV0O0`xs8`G!}IIl`B(5N`=Pvt#6-;SGHXD=i)i_GU%ZnHf!H3EMkH{GhPYOagvfLyt22feS^RMw16`GaK_8pe}J|9Jvi2w*!cAMyY|CG{g<4*99g<9{? z=W_sRmOXNVyyRBAGyl%eX+CZ0VcE@`Onr}G|hU!Xn~dFBg#`= z1j1BJ9oq4NSddC(HyU-{wzoOF=?6ivMHWL*80iM&wYYsVkBdVQ@~mSRZUk{(^txW*x&hKd+*0a(gSARLt9xBFVQ}mtc`@_6UPjU zliW{ALjba;fQUM~uMO&ZRo^U9sjzS!5QBq}DG)gTY>@(>G%je9HIk1joo9rc?UrWq zNRlb|r_Je`KfXpivNyoSB%iQVY?)8`;pW>MD$Db`mKMN|2RC+0O{A`=-v?d&?s)K& zQ@e|DI{?zy?fl0IO32l2s2K=?1<1`(>_f<*Mm;&cKS~YKDOahNh0MYOsiIzK z(k|(d8b6_u=D;8`pr+YXqZa(%R{v`c6^K0m_K(U#h9Xit;9_gSuU1O(qjR#`OyZy1 zw?EU*pZ2 zpGyjWSPIryq9f(pihgqwMM(2&k)=+(2w762kK8GY`S`#nY?vlLKY z3t*Oqp8YGS3522XAb%F^U z4`ur&77PGJ-MsUbc<;txI4|h~8F~;9WQ7~tA4&3;*g_!WSu&V#pHbA_H*U}#zcX;2 zweWTGS^T+?^9(-z-JTnih55|^4FF^W|F67*v9-zj{I_f2(8u||ZF`5>;XJ~Vb|4NQ zJk}0A50u<&1EM+}hjg)Sob1{>1pMA!u?Obm@&GIC??Y1ig>XP3ZtrOOxu+MKH=HfI z9+5u_odY9yQ)g{o`R=|k!ozZT16C9vT^bliUew847v)X-cP=oMI`&`Y*Zm|j=bg6R zooB)4J|5(~q1(>dbo>zFp~`p?l7KpXK;J>$>e(l}|BkGI`?3u}+{&b|6dWB0f}mn> zB*caDq9xe0Sqcvzr_t)NlLdC{%@s0$tgHw}I$hTBn&(lslx?*4TFJr~TIeWse>&KC z%0TwB1mrj~I&(w7a~7nubW!;WhAM%UKyNv5NyIDRLsv}BN+dd|J$THV z@1;F0P{)nmjPM+A1=`yN_-TFnxCk}PAIOXCV|(0^JGy6~EbS6iAfy~2VPQrN!aCJbrMz&d?@D3NLkK2K>bQz&RB;f&%N(zu zjFB0QRb7ExD3y$QQDF@KGjc;yN|t1GCNEhGFGOGcF0wlL%Io|2gvzrTHY`zXW| zfiTE6mQgmYLaAZL=)&-w$2{Q!=y<&><-R}J7IU`fh;H*mo)SQ#1EZV|7;dBioXUHt zNc|jQ{lh-i*%x(6Wn6}c28$Srzz?@mvcD`fK5v)S=$R8(Rz1Z)z_i~93(0j6LBPX< zgP|8*=)Y60=Z93-qF-pnk~-}~lnVItqj-DthqIGpq1)0snuP^+NeeN#z`<)OU;`Y7 zd%y`XwxNrG2Xch*uUeI`rkbHD?CcyfSF~_7xlVX6W03M-c%YS=cR-G`m#kkRozWedo>^%!F@GsQ8`*In$ZR>;-lT54U%SqXu z7}4i&!*Y?=!g;wyTl=|X@YA9=j(liezWWC^j4hrxE_L(Pd}jDU^X$MWwBBeL>7j|K zs*~tNiMZ5MA(whhjF3IbPw2kAgNkXstwaLkkzQ9T>C*B|)w-s>G0c}c=TUzX1TFP3 z0@n*ZepM`m$3Q@m zUk4ZRELGz%6oVYXqVVH$)jtb(Q1g3v00b96vs9>g#}Bn_T)lw_7*qixJBS$@=BBut z6o>DK;sVPf$)PZ{C$mE-%Ak$Fi-N~7s$}H|4dpF|!4+CI7Rp}+R+Ngxc$GrA5Evid zurbB>jQav@P@wTL&!J;0>;f#UUFPpv%e`doMkhS4`F?e4#gIKZ00L7iYXtxeMxvDw z5cU}Trx9k0Dgf+|+`|;i|LC3JUm8LScknEM#uVTYKggDw1_-)MNy^&_Qh0N)?(#~a z*O?e9>haYYQ8tE}fB=Y&G_t!!H-XuFId!VlWuLAqk@L2|RSXKnvK0f)Q6VV=@MujD ztBLz}{d)|#&1jnk565PUm;dTw2euK6zz78C(g8Aa-~-!RHhTMIGId0T1Vmpbc&mH<4@|xzK|3k!+BG2w zGDv9D5Uww!iUR+p0Lo@`J%+27okcr6>Wk4jD{b5RTzZ^pZ3>@e(|~km5l% z1ZR)ecHBuQnk|^Ex@G>R^%5#WmyXaBZpCU}FiB|be%3L0P?3j2s~3EY$hWTBn1scI~>PkZHDEG+1IdjSE`>!{5Q%vMg zKro-c%=Z8s#pO60WE(?4ka@J9hkF3G=3K$J9HP?^(3MDXyJo2e)spouX0a`(Pj!FSBh7a!J|6+7h2iGfWb-q{@_*$ zIF}szYumx?aPb>}6o+?PpQ~gR%mWrw0D$|WJepJurJTU=tD@bFY8g=w3|#@ug_LT| z?fZKPSxYIxU<#$%ZW}4;C+i0#&jP8P2-jysoAx%!UXv7wmvZ2!1g0ku2yN7ZpotX7 zj7f4JhMs~(PeRCmJNI|sBIz?){3 zci8Q|!oTk&h8y3?kuXWA0(A&mj+X7K?Ryc$3g3d)z+&*DnP;#T^H~Alh>^eA6o)N+0HC5VjI|e2&Zeui+~gM3#kAJ zK!r;sIh7Rv*nVr;SKn9XM*wI@Q9MwPJZ3*w5Gb@Rc2CF&`O?McdJqC2YuY!(dpHY( z)*wa3h>w`*M?pbL8e;JYlnHYnTyZZB7a>Igz@@m3wg3og5&%|~ngyi$v?R9tRRR;- zUsGXt1sn=Ztp3CyA}C*sF`X1m$QL0{)(T%d z@bE1C52pz%-5`LS=AGOk7_4&&D6qpA>Ur*GLftAqKk3VS$+84e&nTZB*04FtPB5cI z{Ky9+6ojz&Uz*RL*C^l29A+6h$X`Wt8jBm2M3?oC}_@~efXaNTKT2`KiF^1pdD(zj=|6H|#HH*1%J@dzaim^MZPVaK2X&d_5nE zXG!o1mO#WXPZOH}s0zsgfUcHtdnTcmjzwWX%e`4>aZ>eE`b-)b=TvCBCHsa z2#h3xg2drzMniSu6hJKDGL!Y+`p^yN0KkI*jM;)$4}(g^cn#Jkur6RG=DmS31cwo} zofary!|Pf6Z6vhx0G~XU1UF$7U|D*jQ+!e+fp`|LFKLW-IQYkeq%|gK{ORWqy&p9g z-V)N~jRuiBppGr7oaz8?T8T>C)~BY!04ouWofw|e@-nyr*1&%@xT4fUIi2(gn8m9; zZ-5Js;$)o5cLzHRVCw6NNWrH(vlv7Y{)z6;+h1@vv^jc)D~EPo)YQ_pp&ME z__r-!%=$^;1_Qm<5}hJdIU#`hvV84VYxxrH+(+d|Mc_gUUS2mtH77%atP?|Eo?Wobzwsu*!d-5EWD5tVhtq%<}(OJtrkqXHikQi}(=L>JX{)Un#<;NU!C zcW~OQfU(`4vWKiR9*X@S4Ebn%(Bp7PL54lq%x*glg8`BCyv~oP1e6i6lt0FbG%&Y; z_c~^V7=NgpAzSMzB#xng8>IO53kwo5nxq#%$bj_jX#+4FZZsW`c}$?@SHuk!v?7*TruAFpviKTeYUSf&O*F-YpUWpGNc}INW+j!;}MpCT6Ps)%iXW9&<0gzjW zl4m5LBJ`})8X#z&H2WN+`Qr1SEs%r?9Emsl!9YEy~B=0`?>{Ha^x9Htp;Yt9(0)5aTzIn?=os&1_A4LO^5FpnNv}yhHh9T8N)SK#AIWT*ov(>~A3OaC}8 z=2iJV?+V-07ZSvX(pgE}NW=rSX}E*m8a<77UzmJ?f6NA3xaD8JJt-n~%*>N#D^B1X z6tNR3xJp#Php_(mn65hr4SFcHQFtp@b*f~He~6MiS6vtp!dF$Gm&?}e_w|SzzHk}? zqO1@$c-kuPI$ndgkE##}0EBG-K}l5|q-*wWhSC-Jv2%LHiZe~u`U6RX$3CeRpH3d8 zEXtFVcHVm$!`gHy_mo2ew|#}qejy~WADiSFjlM5 zpH+Q!3!2*pz-uZUd-0aysJJFFU%i$}2RAiuIr$w5kDSD>)K3eHx}FPNC{Uqf{4&Y9 z=ilBX4BcAI3C4l&co0(e%&{~+BABA|*m*nc zX?1~Vt@wrrk)j{UO%RAx738M6`_sn{cn6&pDbhYyuMAJe&G`Eqpd7Re2~WnV1f^;H zH5S-_CY-3Ue!`B+yxm_wi_A|}ptP6OQF!I;GkDeaPkm^K#bn9{3(o?f79j{_0Q_pE zqP*D5mi}(ICqVVqzby}*R}rx-BJyxWy@kWK>X2eKJjHX=tPNwflav$3k(Img8 z=z-*I7Nb1x89^vF@Vpx3J*}4(DXGG%co&*~R)Q+o>lWd6t7&v(-AvQ5iQ z3e9_f(iaM@j9=jYFZn-wzVV0m(CnC@-GYnm_eLq89*HdZ0reronfLEwQTd=j>D-uu zc=W;ec%d^2b>IiUF(1XV>h!BO7P|UL*SZ**o1G?+Ee2-*XiITn^Amv-ilY9)fnDl> z1(4(}dwHWt{AWl@_DPIwy5g$fy;jppW+tH>cM=skP?dO|0us#;_s|8`?8c@_G+NWx z2`c$V-ms4RU1>ATKsRzdZwtjb8aaM9x}aL2^H+idn0*Iwe2c$s!{bQ^UVS9WJoNdi z?yt?f3=$&EyqnJYnnglhIwA^bI48miIBN{TKjCL!NC)sksOJc6Nquo~f+J*~?I(DMUUJ7r zmFo0;{lHc$sh{9gSefDk7XK_opsk?ZOnFjza$x$N88;_=WYqMK9uPLt1pzvRWCwZa z0;lnrZotrWzbsyg+0Mx`@pv9V*{^}!{=k6yX9>rl$RFUp(CHH?CMb}7!)*9bWCb4K z772*BG6L|Adxd&__+eOU8h_MD*co0;xj~e9%ZNp+!4+Tw4iULx@MZWN^mq4dIu8pY zmb-Q1FI8@7C1#0|Jp{2NuQc5K@YU6T*BSz>`mS5l?{rm5uSac6sAIh za@l#CPi_{?@}B5&`}-secWNQ~^SCho7o$=Y=hfJ7H3aEq8S+-GHK6Ril2G_UD ztsIvNviFS67CqU?dE z`o8pNN3}zs;n`Z+6}^0(L>Fc>+&;Q)Ce94#ket0gU4^KNkf+(`;Q=sygi~)6xO!+5 z<2b#+C-zzX21Z3bNG$(%o79%@0tptemoiF$?B|CE)|OwpCz5zDOWu29IZvu|j(6io z6>C(6L3oE$dc_(=MD=(-l=L1#lSWH(^U;o7EfeMHUe^OBL_VP6{%q}Swoa8^xDa1r z8?7ONC;=pS>u0jrHWX1MYdbRd}T(*c`}wM!NBl{ zB6#;t9R+d)gzVhO5#h6DSu24Vl_35sC~HL0YR{I14zl3*L_)%q0Tq-oc@d@<*9Zj% z8QB1-M?O{NX7@L?cq>I5V?%|dafu*!Mh%X@l?mD?_4a5hp-zI{Z zm&t>aAd&Dn9!Vsgb;yM=Mg_MAkpbZ#b+SzYmp>0LkHImnL?~v+P{3Bmm3_u>+&BmV z!KQ`6#TzxUFjmBAsQoc3gA>9!tu*w}Uv@L95R_5+WehruK{$?EU9$zkd-P|dVeXL| z;2?F`8At}ZP`at)BGZGL)7l#G$)p<{U}`Wu7b-LIwGD@nWf#S@335{+6~`HQT{ zho>hcXm~|YJ57P_M?I{)o5T$6*xTEZD5Ay`CDAX}PZg6yZFjfCdJvopqMayUWbNzpH@3lcwdewk%=2qUEfYR4<=yO68ATfSmQ4cu6Xx z%<8X(yRZiSgct)ZT(g{FoZKjqq-AqIU0K~rmx6HQUWg{fo#-G&fRFavS`&#ruO zlp-&+3>fhMM|l^5Y^C;YkQ>9o^P}*xcQAkrxxsVidda??4_XbM=E)*L`#x9F(HqWu zZ(>l@HkAmTIbngrQUoPrFxI%|E0mXyWpn2q1d3V~Mlv8r>nRgPlk5Y;@d&wx)37d- z9dcOavt)i1=DUEX%w51%L<59FYGT_5k^AVbIFa(%eo_sE^Pe0SzC>)(Wu4l@I z8KXJ{pzCV{8CKp0WyJun#d|=WR*&8xqM)ci$wAM)CK(65GaLdJ>B10I#(y=D?tJRo z%a*_Xi$#0i2=yoc#L?R~_!X}WqCRqvdh67KD>M}5DFdO0rGWXThkPzhyZ5l8gexIh zj=5OjpX!*KiQmBrP5Ct4o@q-lK;<-1QTA)k8h;pj5+|LQYdEQwn`k&A$=^gnV+Rrc zOpiQnn?7Q{KERis<1a6fNbQyW?=G`A&O^lxYI)j7@lob5XhWv5ON0u(s{)qI{NA9) za1avdvCf8Z(2UK68)J~qo$vis`$q@ZzRq;YH&c7^MulqRGoA{ zLhH!w3y9SF)L{5-&E*~U;JitaNXeNPd3Bdtx;MH(>Y0Qg!X3~fK8h!c@?ZaMoHc-b{LNdCBXgP2*oFFT17Ep- z7?cVddvqpV9@z=f^>#pwr*7c-e1H|6@tz8fJPeP&X2A#+$j}-WT)-I3fnOpjP}Y6C zY#jtzIXKh(RTc(t&*|tk&I~NfDCF!sk9eQTqZr+_fCIAqc6w6agngk;k+w24>kdTe@3h}RPe zx8o;2TX+H`$jZ|?vPBeNvC>4Jz=hFJ4;TglA)*PWUM*!My^J7dn;cMB{YMcj1uF8B zWp%ItW~ing_C2)PI2aGk4RkRYeEl;#)vzY7h^H0>(frgB&x_`9N$Ximx9X=93$i|y2TGBh(wNRNj`JmC;UM5Fit@+DNN6NQ zXuscj>2XH`Q7=e_OX1<3f8nN~Bo@teSpH;0jqcoj^x`ZB;leEl-xrBN$DdPC29yh_jLXPSiNj^10RyTlbjELp{r{{ zFkx$mJoB5~Dh4T_$CCu5PYyJJngTd!Kj8XmSyV`0U=guBnA|ys<=9z+Ho~A{09uHmTZIo z>##++Tr3oZ0nIvqq^9>(k9b@0vxo6#^X(|?5Y2O{S@|Q>MlYy?Npcn(94YK7+nDYk zLM=ocBr?t_H!6g3{6IgBCbIzt&Pga03SmHaF=wP30MWZAR3bxAvoH}dJhp+R#z`@H z88r7&mDZ5{l>oXI#=c6pW4Q4~av&pYf~-apB|y zOOf~+(%~$19TpNp+LxTnAS@y;2`R}CR>T5#9g_K{!5Je^0vj-DE5NYe8L3iM6hMTc zC5=k4+V;Lxb53@QoZ@iO?e4(g^`UK4?ApRC(HDUK-CzpeGMN2>;Oa{D%f`BO;T!Q96^QR1f% zYOly*xrhm_cs8!RMTFTf43W`rNeonHrGSgUF_XdO%(9J0nBs)A-Jbh#EF^-$h$}NG zMre6sp#jYEitI9nB#{?2-BPA}Z(vawCC6D6re26s#^})a5 zWLY(90Gf8SRE2(tV+ z9#b`Ak$rlkYd_GSmzAAzIJJK2g~l%0kl z9c_I{lACSNPyP;SD0!YnH3UY9*$ji7-2Z2lMfWQN_sAaD;y|VI4oSsCaP1}2>QF~i zAgku|Vo@DPEDChUxVCXy>C|zMqUCZ4SLLy0oK4e#2u)YO&T_l7HAGXgyixgq^~FVL z`nU4}znbw*Xl?cKVEroCfaZ}QXwaud(^o|V-r{dOTCL!wcBPik`&G${r2*$l4`zte zgY2fg8mAXp)Is%zbxp(PQF$R^ugl}6(wjhJ$#|JVW!4uwer3q+-yQ_nNe9%GYFyFi zZZt7%vddT2d{u;TlCdyt1WQXmKNYE=Dhi{U_3O%?+;39bXj4gSYJcC95PWq4c_rY) zHRp^LHD0a7h*rzQYpk+Td?Hn~Oqlq%H2A^w!i;MN(wYi3T5SJo>G^fd`$Wyf5V6F7 z)HfR7Osd`iLv+{mtL7P|ACOm+Jy2ZTWOdcx>k7Xl5W^@bihSHkv&@NR1DTf9>jtsX zrmX`agEHsY*BfD-ZNC<8PNvp!uAgn4xp_H2feTIp&m^wEz~ zk9Hr5d_4M4#1qirJUXNZ@M|bh((>EP@9kY+@%FO#mso;-Sg55eG8WM)9&9=YA2L5# zipY5OUnUYgfI$x`S_~=&4ysz5@n_zbs$4XAH852;)q8EWrQ*x%@HB(cg-2{GasoqOq5Pw+=&>Y=v6R5EG;QXcJ7|F{RbhRoA_W%9Ck7(} zQe?ms56JIHj0*$Vf#ZT$AomFBf%Q0oGcJe+AneMTE~G~+?EOSwVK7kP0!XBdwVr<5 zR{!{V?_1rT9@ibx5v%Me=%2#N>bBS%Oz42dI*^g1ZB*I$&4kY!FGwL?5UVapCUI zsVpE43o)^l7Gm~uKcY;up+GYHZ{Tx4XE@PYVt*?B*5a%{pRzypGVRRE^fyz)FDNdT zDV)L9$zUT5$;a|;Yxzv+iZwW{eSq+=(oOUg#z$c9BLZ|V5R=bghF_i?#e^W4{V-F5 zSp{U14sx-2PP+bO+r?Mc`(CB}NtpOgNRr7@#6qgvR+J5qpA_*4#mg#EAkgVpWJ3!o zQD=DxWOtzX_lACTEwxFXN|Pz5V-!E%)}DRtSc3 zGHw=tvp`tjfOD|?Nzi2wR@RmcHDoOYR-zuQLh|LHLFX4=8w=Oom^b-5LEhHlr|jD! z*t}xT;!o=+N@YeJ@z0A@}DArwgz#dD3G;q`OE%# z5X!L+eUM8pX6N)>K;`pO7d1SJRA0VUe>3MC5ehR&G*;2vZ%+Wa3rX_Qs#E`}OVCYl z0~*bWLYE-qFTIm)us`wv!b>jtasyD$*O*fQIZ>cSFD6g}$3bV`vn=0BH$s&RpPvrY zn`@Mglmsd`FN;`k6V8C^+qJX*)+ld9HuK=_S$gp+z{W)gX+X)!{Qy2u>#0QyiYe)m z4AQ|TNO4dvbL2|30Rg;g^iyjT6L1PiKS~b5;y1t?!{bDt?7L!CumoZH4K--9`|Kul z%e+A$IF zqYt-Y?^~3Ru~;}~Z}r_PRZs@(AOV=Z~Z;!adtjC#)udS zg?SGC?9bMCT z^dt7&k5+A>(=;@KRr$*>XGYra7~>K*{uj)KBlfi&$~WOJi-MXkL0W)C`bhugjIs>| zqD87T)rOjLN_{bqZ-3c?o-KNaMBwy^$K>r#*oS&i5ML{qE=fc6PZt*CVodqC8OvB*dgb9ne~Qf1YyxOef4) z1#k1aDaX?*W-kAI_2_Tg8EaE4JeLL=nfSYU{NG2t8ExK|Bj^5oe)n%H;jy%^>EMA! zL^8w#|5E1=SEm#5BY_JDufD@)!35-OYuuM@a=BScQnT(&gBSy-u5A*b*UXgXPQlI$Z5817|Fwd~}^u zQw5eS^Pr^~_u@Z%)-emqQ*^!XS@DwW-T_gaadLXd8u$9FPorg7zVxB=>#P6hW2G;1%x$L%O&oQSHeMvW zV<`#L_mCIGEdR^1J#2pZzx5a2(}o_{Cg)?hVee6HOQv9{bbXNxzi#qh_O7)+#y@eJIPw)i7~B|HB|HUMlC(dh3%; zCoLZ^t^T|5j<7gKd3Lhy?QA1mRxR1Ksqkml{f!2>p6In&JSS^d}HRPIJr#b9-~pVqw}g9q3v`-^EhK+l;>gwZ`^Y4`lGi^=N~t&6h0oaj7pq>f*<+lEJE zsgSRK@ZlMk^t|;f1};;1wke2ur7a9gZDC$DsM||dY_38*8Z`+d1l3iI!;p1Ide_0e199)rrG)F!-6JnD)&Zqg)x!UM} z0xi?#74^?~W$UJ`Z$!EJ3?{B`(gND*izGWcI&B!2~^84bwlRDncS zd%j%ONM27_G50uo*@l1}HoT-?oI0t59;WC`Mp#US!^q%x>_O1#$|~)s-A{1r3EI*OtEs!KQ6nfomEurX}1@@N9Dt% z-{kFN+N z4Mu^!R3K2YySmB_O|hF~s&{RTtqS<=5ZwfunYoAW1s6N37bV6q zM{Hk?^F<~J3O%Y>H|`SV!})uP&F|L>`&UKLO9q-BJ660OvPJW^n`8>GLwbX}b{(Gq zA>t0)nBQZ7FEgxJ?t?N>Kw%c69wO62D!G!r&2L9kDM{{lFZaD?Oe~%tIK_sWT?Ix8pbw1czoBv^m?83A@`qtw@*Ja!L-qY?IXz|WA0iOOQ4`PxNoDqsC3g; z`nKekf0P4u4rU@0A%VnC=I(Wf)FF@Agj&e_4IUNfc0);~ztTC;^A{bs@hCo9*dOs; zDTJW;N@qf2$k5t1I4w7{uslLS_Oh5ue`wk(p{6AS+46W zi0rL}(RT&{HFAg!%*N(TobFa}#@u_!hhF2T9~8dhj}2vSP5)F;Y>IUqnJ7G0_{C3I zRZwO2J$f;H)MQ1W0IW(|+gZT%L2ez%V=o_F$+I*4*DVkfg%;QT^U{==xE)Gykt1Ka zf=>5vVH|0Dww4@CdW9EE*^8`#Ij5VqZ1a+h{z+}j6iwc@P6#Z@mjCXaNWAk|Ft%ew zd1h_IGHdTu5LVdM{TT^COV;9D_V3$$1I zKpxY$*l8r~6v8DB(9xn(aTokCJcs;YMm^N&J>($HQHSM}{h=uE3W!C=L`A>{1T9 zn^rx%=*YP0_mE%#bnJW^ko73C^&YlOsa>2EOTg`S1Tc*~=x?VUGCrH90Jgqs=?-RA z^?>%w5caQYXH$jL~IP+eXj41YE>n6o~ zRmlOHqsyR9OH=<#L};%(%wXh(E`eej=z4$74??Q?XT{>%vV?XiyP5ZVYy?C(6w7Ix z7n2}5p5N96&!ix{S%V5><@5!p4FNKHTj>yrM|lCd8iOoV5GCUw@qa3^%0aI$(ER|) z@iuxI2O@;4j>Z(5_~$6_%Lz?G;d`*^$4F5;WFxsh+h1edD^Gl3I2|`aAM8(0hiS*& zN@5jN+T;uxP=!&KCY`E@rWcZ%Wu+O}j=Kf@v$!B6==Xilp>(xPE(ID{`4v9 zc1CYb4X!d7dU*lla020gsZii_4Qq@4;$(jad-`!F`)5er;wUL8-qA;IrTK%^lX#$til$=(DyvlOb=hVyiS7^ zISNDba5t^JlIh*#$QqjPznagm)%ZlyY@604)6|dVpqPCp*J*+cX4R)3#{!Sk(O|=L zh!LY=f8F$}3{o1~$B4Z)O{&ZU=-D=oI>HE@^*nKGPSEy)i-a-VsBDvIa2*eV%9^+t zmNnnmQUf?;M&wL?DZ)|OWA}nz4})}pZqj^h zX!(9-gWi7&)Y3+}AXHRA#ZzgjL%H&a=#s_57DVr=%9~gT|N9C?c}P)Kj+(OgYM4)F zlvf}JI5)%X3EgF+5C+punLI(mCcO*AaTQ5zEz};+$)gB@6xG6zZi%EuGiJ|`OEVjM z=rxM*Qix@x*j`n)}PtV}7Z-uBh$o1k;*Z z=`)*idFqMuqQ@8uB4W%CPQF||;WRx-9T9W!$i~X;Qnq`h ze@^AaE5_~;F;bwQklX)oGp`@GZ|3XZBV82CggZ$9AZ^uX1sp zxnMmJM9e`1+|d&mFq^qM?ze5oNjcz6#6j-YWetcT%btEc-KMY$jYZO1`z)yo!nQp0 z<0xlS@mJC4N3M8CvrSE;f9=SA5)28lOQ*k(1rZo(NBxiJ7$8`SSkukNpE#rK#d&|E zULL=Yr?CDiZZ{xC{I!t2b#mL2hbh-M@8{oSi1LLg8NPfY&L>K~cXAizx=VAz z$&%ZIk6xJ!49|b!jYt^ct#fp{k26TCr=jq^7XH3%Df7wExi_yFz0Sm^PR%b&O)Y+K z^#J@vO{){w)^E>qoe}4}bUi|24W>oLcVeUX@AoOBJX%-zU09 zXw;pqxiP{QGweEh;dq*l-$`6{~!#o}<<^s%3J zKQyp-d4sx+^v8pTdM5Vn8g&pQ_K62^^#e_St7&LC^&9XD;5ExlNB=k2DL; znl^&s(xYoWGQ%rEhB{Vm{O4o42;Ya*nsOjU@Mpx}*|k%%*$gh#ZN1WOUB4&QU?TKA z(=p6k238dhsk;`Mcs9F56OoQ9CA&X+y_kKR4Nu;cwU{YKT~l%x&&_DN;fi+oHq z@!Fg*k4^v`;etq|d`ZRXAH^{gM#~F{_N_BMK?jkdB;RE9`?748Q~)a4^ET=qJ@y(s z0!g*Rh{mAgS^=o@O72qh#V>0Wcb{K66TJC8`m%36 zM)}}*>~?cW$Wz}FH;#b}v5(r6^Y`hIkdG_=-&a(_uf^_0?>0#%)ogAyTg5Yu9wMQh z2!Qod+(x88KLTTfUQvyEXk=o~;aw3PCx!>pD4?Ggbp;VEg-9ZX#W&rRtI>fEoI>{@g<+{U*}V5 z0n|D($0R+PFdmpN&LiDZPR5~?+dc-q;R~+i>e;nP&en~(wfW4w!Wl8B?<3|le6}KX zDKh_69!@0j-P#g3m)qcz_j$BwJMcg{3U;Zoz!hO4%7CY#bIu85)p*{SK#@)xd+mLU z%x;U|3z5AcpMy~DONxR>1{Ay#E-tZH0nb+)N4_Geh(a%4(UtN;$v;b8gg0ia>RB+1 zMsoEJp-)dd_8gn0M%0TPhlNGn^FD)cWgn>~{mfwplc>jIH#MYtpc^u|eEHidmyr_X z=RGLth41`+O>Jugoe*VZPueU9V_`kI-@yGR80gTH#L#SDy~Z2W95l$KvMysCq)A*C$EbzCWmuljCqBEFyJ$$$CbSv7GxypXx*GF^^$c z9Z!;G!qR$ako(lyZlwzYrcqzS>h5LC7oR^#Nu9F&?FNgR%1W2JopQvtDWK}dNMxQI z<5ntJX(T<5&jle?0opr3?|BFErmU*W74u%EA9v?h{I;CHL+|Vb1yVL6EqY`JgCf4X z3pzkG#>oO%F6#{!0L z*KZi!d4J&XIpV9LW;MZQC{wAM;(ywDOcU0p9rzC*ZL> zr8Zx;H!b2OZ^`v)x_M5xF*608E&}{!Ni|mhloC6OdRMV_*Nb*)L@Sf?vGEt{#x=8S zncFkTksG7MmO4`dwvNvOxqW`e)MNu3z8nK81a znH&zjg=wvo(8*UCv#yOBb+uetx@V*94a$-|E0?*ekf%_9Q_NSXOIIw=IFF;DjdQ*W zxpT)E%NEVHJB|*Y$Pht`ZB}y$nyCE4-kDP*T7r8->pl|xopDpkOVsP&oRYPp>kT5KYCpWvp=*K~(q_}`@0Vcas=D+pCUfjl*N-}}7;_l|Sl zAxev5Bjorl4071~OGm3>OPQ0I#+AymZ64(xDTaqFc8b2Q3p6uU(TV9TUeEM4uZTf0 z8}0|6;@!PKm z?@o&f>N++Wd3b%A<0(nzrFuOxXZu4+?6v|cX6(QFD+_jgpYxg$Ab?(0n65Cs^TiwV zde)c~oHd*``%vsZ=kcm_IK*_PSM;ed?M3;NkAL)tc!5EYr@whYW_gE#Ne`?#Fl904 zrLoDvt2x{}^!3HyJpGxGCN|AW*fc9QG}PT37vgQsOv)aOD3D4m8niC9uX%{7_VU+u ze8b7NTMH|94c&O#%{aheK@twKd)`a7)yzE?9DYHAxLLjp>xQUq4c`{TDA`87er@md z-<0u3F?i7h>s@Z*;mmk=YWBe-c`ZRpiABj~y4JJj-=4&Pammg?$;l-{JL(JH^^<0! z)m-)uSiLKHvp3Lq<;KH*W}iEs{A*SJzVN+p+1$mTJBas)m%rtYqU2-dLEd(JlLDI?hF@oRce)wB(c(3%AgC_Q~pI z6o*o`xfn!l6xWdx6k41%mz^iGmutC`^C)BgwLax5aA{FEB)2kpq?=%J4DjbsJ3 zJ7e%%h~_l)QXWrw&#-cqvY3wgibyU>#KuZNAZ8dWNbaF2A=|`^a3Lb)J+uQiCuq)S zi0nKbMl#BV7o~xCPLb7}_!D_7kkQEKGPv>CMx?5dccT*_OTog7$Dv2WJ`SbnnR5c( zfK{+)XXYNvoyl(!xpUpOZ^Jz#DL;a=zo^C&Mrx+vMY`hl$H>Djr6+MXWM!M>Lz)LU z7$>X`5-9K=F=Ec}d$X2nH5RR9FKxWg1O^-R&qsS&@_ODiuqG3A-rKyQ6r3PIB+s@D zI^@HZYPYNfyVtL)Une_hcR6(`yeQ)5OpC@4A>u-ESLrpR+|toR_1j0j7-Ac_!j0aI zjc484^TRL*FLz&=b}a4ozZqERO?$y=cPQvDnFp^9Rk)}gZKyi{t^FsV(&yR{awZdJ ziu4ioLDidW1Q)k7cIiK24e2rU1za#KktOV$gYZ++7f)9I5FkYInwIqq$}9l6N`hG%r8wCo^moDg)4crwap%p!Nl?&i13+r8Wmy5~$M2{*U< z%Z6kl@=c#62YuT&rOS0Qx}Ik1?lg+_t=kJdh+W3-tATx=Fp^qmqm7+wUVR(BkId%7 z*E-xI`!=suO`Hj#qi&w+TPF#fTGZJ31h&up>{DEH)$#`C&T~0!clmXc3kiJh<=+oP z2K8;_-%8mcV4cfArn5woRXbQv7ol&0_Ka^RfncZ>`&6D$Q~5(tvF&`527BCBGv)O& zTXxmiXv!ZU+<0S0>P@YU&;+1IUx8u>!#*un4@old4LLt0UMu0`2qz|iV3agkVpSw*&K4Z$=I zVq9c%26TYanTP8bG9uc8tr1qk5NI%oGXWY~gjlT);pUEqq*&ut3C2+YLbX)W28K=_ z+Vu{^iXU?7NTq!&!79()_n3`#)F5)t*{Wmc&=sOrKDhZ0&#M|RpCZF%+T-8!h}eS? zewS>s7Km|JZazO%aX3qzxPKKV%W@c^Dit*IN$_-R>_(Ve;S$EW_D&A4k{#e!YKunrk2{nm4Ff1Ab2%`Y#9VN}18y zA^F5Ppdu8UYViNF_vX=1fdAX@41+NSV_#-W_C48+H8W!wq7afOV-MLvNMgo1_Nb6F zmXM{8q>^T_jIAUgNi+5&Q4&&~`TqWRpXYtfd(Qiu^PKmb_mAh#+0NW&&OO(4e?Is1 zxh}&bLACu8=B1o~YTRiSrhbHI(oF2`rVA^>gp+7W(X)`r^O7{`yAiC(gnM==<(TL= zJa=CQie%NX$jE}$IQjJyM+%<}~xvrb7%_7&bEhY*3kzonW z1zf%KNmWzw23H1;Q} zDT?F*3}xR<_GPKJ&!cnwvu0CNJ<^Q335a!|dL*Y=QiZ+llF7r`r!6wMF`pxX0cG3O z=ys*7)}n%Ku*u0qr;J7LCPwZ_YF+v#UEKjCGx+&sFPNo*Ic@>tq+sr$5CsBC7fMRQ zBqM?4QYA|vPM#87;{q|Mh~^`3g7t;0V%}y7j|0Kk2TQz&mI$Vz$*D)Wso`a|uu>qB zNeyW|89Z+*23olz3zUwp6R({W&~%E3OU>AF58mOHW~L&>l#hFoj*oL%_Al_q0JC4B zqtBN^gQ-#bKkeoXz~vK(haQW_ra5dhteQNq3c1@P?&fWVTdVU~+Y@`#c&} z((r}1PhRJwsTT$uKeNxDmtsF0Z zF{{}!;II_?$TBSjvr_Vp7`8zbdtpnpaNwsJ%7_)PHDO=~~mdi#I5t zYc_HkBj`2V*$4!u@rbXnKj*n^haYLgprtjF61v90s#)D~P4j~skJEq8VvRRBkdauE zW-LY06UIn={E%)^K{woW@lN10Ces!MQ;rsL8fo5qvpuR=M@03~MCVfEe2B(Q8pirq ziHdQ7lCOrPXoHcjCRs$i^DDLfD{+uT^(<^NiBnNn3Au?uRnVUkh>(}rayX4Ap7dkd z19H#Ro5wX;Iv*rZ&}?U-qq{c+t#b`3(rm~WRPP$9n_xed|4iML>k>)TtoXZGXvg8n z&?n{U;&?|**a=OjpxgZ>D_9nd*+@q*3E~ZIJr;HoAzvr7>Wh*0C)R;o1Z)Bn z4F|AWR?Q32Y~zu>x?GO2L4fvph?p!|%!4>5Z^y&IHJ#5%>&K2wd_!f?>>7NHlQ6Ae zp#~En=g(v6al+zHE+9BCpPO3@*3qe4RHb-&$3yJPPO2C$uT~-F)M3bHR4;)p(|DoK z*DnwA#<_`R67sb?6*ZC*T1b={8ye{@>+yWd}R zB)88DAnZmVVk$x0D}pkYTX~9|#8R+wOW!+D-@i=^=N^joBd&f++uJP2?$7^psAE>z3FHta!xMR*VihrOi55 zM>P>H?3DFpsxqaBj^oYmL_2;%TT|%wx`|U`^o0`AXOG@q z#`ipqhk;P4K4Td1*wKv1p>|Ia;Wef+TNGvE;zQ;zYi?6K{?I*9=UC2GqSTVgT*?tj zp=mDd#sNJRHNw3z)=Rh}g%H`E3qmpJh6pPOZ2?p!=i}&6U-(K&zH?9nT7i9da^@^1ybVZ&3zJ4s>iN> zDBJYlqZxwO_OM7{_NVH^YttB-+r<09svl}Mh>!i#Z4a}jW`FA892+W0hQoX!fBYF$ zYkn@R{^Klus{vC7dL{>fE=~BEbXB{`7##1hwS0mat~`fg=y;KW);zy#f-7ZYKEF^DGy z%B4zmSeZ_9AlHGxQ=CKh)1a^rh zgKDm|aj($4{%d{my}ex>i$MeL!-Z7uOwRK;V9fJj)!-AMg}oX6^~PiZqT?;{^Q=3E zY?Jm|L$^-rc+NnaYHx=1S}3Y9r#P!rZfKbkzJr{E*IiG3V9IZ zoP|cQ~35>Gzw25jr(%to?~Wf2bO1^vDz(=M2$E)6Oa~?`oKcEcCr)j9qRp6}byU zFs)G&@p+-QUg_tX9?;nSKOA_U_BVCCkeGfG)n}KYY|UJ;c}6gEee6qB(7-d!4t1K5 zXomD)RdEalvKM1*)+_TMqPk~Lsd*5UL_icir>kz%2ymMFv?Bn%dch~W^SA`7FM7x6 zBEg9jg~a{$sBrbx0)G=(RSc?hQ^_oLxXr-dU0Y@dP*zC){G}Iy`*O#J(2gK-_4;#> z2`^wm<<%IoUZM$#u(*_l@Trt}o@2iLqN0?pv{@LKWM>PgEo}x!uRcKN=Q`V_J-w1C zpO&H~IWIt_s)TW*su2ux2vDz>^D&gOxZZ?Gh!$!@)rta6v*dB5mq1q zcwUfsm{&G>_(vs6@#&ec-=;~lihPR7tll_<5o1`%n`;S*!Pqt%<)pkd1bBwTc3^gf zpJrZ#<^H)pWUPJC!A3I3uQoRqfn8wF;FVG~9O@L_aA{=NBwu|^aP72(qNzvBKJPg_ z8avT~i2wK6;cqx`;E#l1UJMwN>J`(gQ_yA2 zB(#5{K=jv|Ls!6(4C~_b4WOq`(`}xx^G!O`F2J)h49aK2(*AFmQo$5(j3rz@L(g#t z0^mev+{S*&Z>^v?i!qqBJ!dVmltK9$*IqEhsY5a@!0&zE_DY7hnlI4 z8`-i)^55PG8U@kBKCI>aF%pu$5%G&L*rr`gycPAUiwlkVB`c!HTuaB&de50hc`NIp z>CvUR1dUcMnf(Zcqt{OVlV?JT4El9b{hPC$ewnwKtNthlUw{^^wT~FSsM6yo z>#CBT-I2s_pWcV}HH&qjhkCQaMFyaX{_*LRmk(5rfi1NXl}wbg=sM3@LYn3ugn;*h zxXOlf6y$%7oh~r{4Iw;2?ydgmwK&)=PCb4I=x8)l?0R;?Y-vul9vSAzM>`a}yed@> zdDH2M7fakc@h%M?SZ<}BW!0RiLMvURVZ#X1n=c>I-aaBjj?LJJytDZN(rAHItYtXQ zM-3DR`94s&d!cEIlr1!_Tc4L%3a%cDnrj_?^Y5P?ZcOd~7gTx4L*2G$buB3X8J~~# ztAR5d)-xREvImM_PGxpQf+!^(&CpB$1R)}%3xr?YaeHE)$Sg}EAC;-m(UB@wTv6)o zmkX+hE!y-w-)D12i21nDMDrDO=6w@x3f_ zD{!?l5u3HOC_nkW5nIe|n6W*;(Iz#M!mgbT}Y$bWh5qVlpARp8vZ zjP%v8PLgud`os1Gxy(BrW=}LeM}2uPu#p(k&hy^nLe5GbXVIopg`ABxKI`Q8pnXnj zR_I0hv`zId5uKW~1EI>5CUu-)Yn|4dp`wE0LmRz=++vpFR@He?%c<`LA|UJj z3+C&@`;`l63Lo1#Kj+_}$Y@1DpUadZg7)**fIPj|)BJG)3N5`ZC$zq>?z61EL~(JP z{y7#SZfL&2U31y?%gNi%-#>X6e&t>EdT=KEqg0_&(HgL?RGH_a3!J%55#Y(H!@P(9@0Lm&dSwHu^c_(RSTvI0X&yld_l;v0Tqjs zn_=sev*({l{7ZHgjNN6OP9A603lLgjda*V?$4Dvapa<-+NQqJ(nvf73q*p>jc5MQT zmeGQ)F+Os0xGAR}Zm*tff4u<2GANVy7e`}xy)vA^*jrCD61}wH%E7Ycvn=r6u3QuS z=TyD5C;;#sMmTP`(B-$&|M<}dMjnmNNZEs%Q|(Uir=xyN=QK*AMo*bN;`3S< z6zIeYhC|VamXBvp>pD=s5TImn8{B--`BdjR`rK0Cirp)A8&Et45&mQO1b)a-J3s-! zZ2jVRNjg6Qz)?Zaz+g`MKoU`|9?1U%Tf zqzztiSTUXC?VwqzX-tQXJG7F*9#w{(HP7*7nVl!NecdaH>ZkZV7 zejwSJO;o+S7#3G?r(yNed|O_yTEFTq2Db>KN}|3w<9Vw72HJsqEcvBv(sJQfdCqAD zO%+tT?@xo<*EEFX`tX$6E!HEJB)v)jynJ#zi2Qg?$5ks)1=)*+zfP-rBwxC9YT?}1 zz?|_*N#Z(2s_Y99oxF=43-X^ONgk`EBPPa|3JT<=BC2DO^yDa}UY1m~!!Y!yrGB)frcx-#>065b4~Iryv4rc;NeFP|Kk(^~grWO4QOo zU@~_M`Hc3eZytS&)Mn2{L{UYj$@XN*x<+RLv9lA_aX0vrWwThL$4Toa#-d;Oy@usZ z&kl&nfc42nqP6f{hULAE0YitwFL}{f#L@4nb1=%$4{w_9w9VF$Bv<4FEJYzm|K&m{ zEh=9`vqIc^ayZ@vti6$<;CnmR*31fTX1UhX=cKWiNRPe$d)%!j?b*nSQOtc<;uVll zR-c2uU6GyBzzL((U#eR{Lsx=*xvuSKl`W$1_W*1YomVGRl72$2`?-JknY19N*mrhPgg{cO{G=JZyu!C(u9meL?d8dq0(L9+_S@^M<7aJSDEse>(~8~YN)B3f_Rp%ZQlwK^!BZXS!PiaqK5${_~y4Nx;ZCh9a} zHS1rn6DIhZa_P5h_3b3VU4eyrNo6iL_`7|; zlZ_TTPbIcX_9l$*wvh()O_fLnibV?OXf7FbrXo#J;gk^MB9HQTwOpwZ7z(AX`G4%S z&s}9n=*ylP^An`3Zqg#SL{pWt9)0A-a@*jM<8ts$9{7Bf^n4W}obSQ}U+{QSa$uxS ztCc!aLp(8DTb}2T;pvyLj(^qaq|&ICBnt8G&-`S;sdutYFCX(;nQ%?ZcW%Nz&=ADC z$i&pjZ3+;$-g9Np@bIowc&8kqRLjJJw)k2;*;6y5kV9ZCyq_}AAL+2``nG=4NB3VY z$-+l$pDsF{_HLPj*N{U)UIS+(SC9czn(4Ax-Gd| zOD9hDkUUu>6R2n$|ER5z%%m56&+Q{G3}m~SO+;!hAhYdXc#8vsC6Q4{F_L{f+E3(CxdA? zB-gM0twT!yX-Y#j%MGpe%7z1Cq%jI14p#DgP=6or42FBm5|aTDL|_w}wa1}&nZy9I z=CsA`R9SbXgf^F0MKqWC0DL0|cr2gydR60jBC;D_sQt)%b)0itUM+DbV-xUgh9zkW ztR2a6>1@Ba7Nn6a{L(}Zw@Of*7zCsboA?+}*@ zy0;9JbeiX`kk=~n;nJqd*hKSSES2NtL*o=>Hf4ugxa}?Y1=?G*Mgamhbmh7V(@775 z*~a{6tF$m0sC0}rp{PIo(C8a&L%XW~$H_YzTS$d!r+Jnn6bQ4SB61hD(iY)XKp4|f zz_&`KeQ>yxY&QdxJOBtDFooOk2%qnj0^52*3Xv9$qJilWKbn;)t(30>PP*6EFR#z>cvrY-Y;y<8BuP$4YGcV5p4<$AMuui;}$5FII z2l~i%|H%z)(Pr;tzw14NiV2&-o0dW(&QkU*XsaKRLWOPmh@F3J_|5)Mz@G;-AQJ`@ zgyK)q#~khN+g{hlWtND4zzF2)+bzV1mX@eiY`5(b5!ygOZM;>|H#be#r#hPHN0!*8 zkKisn+W&P2EJ{^h3?^EY&`A{pP}v!MSbIB_cDyhGEtIvzUHA^(6C(%(N-*TabL%kx zy@mFXk5-BWU3gF{r(t9jP9qaxfj%7?gJiaVi*$95`Ri7xke5>>5;^o~tQd9{ij7=U zw_HG16KYis;SYcTijnzpv_&6FBP~47gtJO-62lK3YNiHO zBUw%c@5TFB5=mLwu9-@a0Vs9^4lE2D-YVl>)a=P&GGpUH^A14pAw?zY#hf){UsWS16C$*H2g*xak!vf_mHT_f} zi>2YssvBAYf~(-#he68va*h+D;pz+A@@pL4gNSuJasrP?*3^K2`94)4XCEN6IF9tQ zh-r{T8;ONgz3b#+H zj8k>A<`H$ZuDGcf=cnN`d~7Nsb_y7mdL{0DU)&(@%FP>2&pA)O1}5ZOY&fu#*{pgf zTQAaK%Xj)Vf-K<503K;&h04#v=YfeQs?V5>O9$Q{Kc`*!m|EXV;JZ777y%;JfJfq4 z=e7X1b@SusM&R-4{E_N}W&CBk2b{dih@Bg7+O5>%BIhRMYDTKxRnE(}sw;OHspzO3 z=ke#+Zw!?c)>us)`SHZ`{KME;*5OhQ>)hz28~sX1+_2v_e9k|W#HFW(8BC>EUm4s< z71xmfEgJFb@>OqD^{wCX-SYi$DH4)KaW+3qgsL;P0&hTU)Z=_`YjVifz-vFz(*F6{ z;bf7uIw}8fuF^B-dGbv?Rb)C=4tyD`@{cTd;{ZY&(xD}XNTSR1 z03{jdg=v^r`CeH~LOH(`H%tUcQ4wxRkr-mj5^S<=atd~{mgZO&?v%Oms>3IZONS%G zOiYlIEXj;21O=$6Ot|;=Lp*09nQx!`0$XLBT6LXTC6~x14rC8i`XLW;2q-bxgegxv zHDD*&OI4`Kfg>NOKTm;=$lY$5KSC=*Xi2vXvn1I=6f-{3{izj85Z(@eL_gIizYNh# z6*R++%%N?H2&gv357vX%PTm=u8=Wer$Ju?D)GR%3dw+d0Q zZ@EL#vL-sfg$QsXv?O%RyK7WyM#0m8hfEhJ=FwRB8Eh?C22l5cLplDGm z^og2VyF(80&G)qcco8d>@FJ5tk)#1+i8OkV@60mJn2p4SG4dXbgfsaYyhIj#4~1gA z*g;}Kg|ZiAGkLYDhVBH=H9#U^6Elu=U_{}`8?i?vXr7av*Y3^A$s z_3Y?hrmb@A*+QS8rh}o!h;v;B!rchQ5%V*=TR`VYMlhS>X(r4L9YO-qloq>ofp z%sqd{u&(A)X6cKjzP+lZ98-6(8V*3ZmBr17<@C$+MS117&(s$MNG;7s2iTqe18F1BH;` z=1I;C?na;Y$EiZkDepyycT+N^Ij;?T7V|Fs^zqf-k5umwqM$?@Vpp;9P=l{#9<4uN z*Y|NKf*E|6ExF@Al&=4X;5nC3C9PHKu6E(dM`_aCd3-PZ`}P(-ewB(`1tKb(_8z?2Z#mp=JKV~oz?!Mj87$7nhhyyVvUWLff$O_> z?i4*NYR{IN60EiTuQ^_RuZpX-AI{!=uCIEUj6I4W>@zQ zc=a2`s;qLPTL!lp#_v1aF}VgYXqryHMAGeLX&X7Mn^!z4b5 zxvkx;#UbLmaDgPoamBIgCsy*zU+jFFeKAK7+qkp4wLrb*sl$)h`}J8=XRxmFfiSaM8nfJxP z>JSOFN8?@FAjLNQ1a9dz+*w6+PiAUBQ4JK2yWO=}%^P)SS(zPJ9zqgNgNFC;)pbaVU3vJ> z#rn!*NJv9&W>ikoIJj37-_rp>CgK637GHh@J00sf8T_f|16>B zsM6C;3m(%A+a7xX$%ekQl8e0j$Wr*xh;E0e&yUw;hYRa?0@TP==!8m!d>b92`pJh@ z$=$XMx7Wm)Nj4*D0J3m( z9G7rOr%##9cKZ&ae)j&%{{38~(sXnG`;j$)!`oe_3oeve%3)?e!tUAxL0Kw%ThBt%49A<@s zLDB4lTpBFel2d#2t$^`rQNi1*0h&C6AkP`$+po8=CaXnxMhu|fdYH;mL!dz<^IPe5 z^Gck!nm}R+XKb5PpeB2c+%ZWOjNPQ@tWk%|$7}9fhbp4@&a!8a7qXl7=J=k;)yoCP z)O?q(Gd~U)|I|#D5`WwW_QH&%&Zg8ZjRi(^kYC0!fCNZD1GF7ofF7@dd?wqP9QYiU zxhNE{Tu7fUS?<7_#DMMiADq5Nl49MbCtetDkn3uL_?HoooAK$qF^YM6N+k%sJQ>Y^ z4@L0O>clziwFn!zyhBp65ORB(8=)!;GG_WpcBnC~^z4vWt^$o|M>YNYTS+oK3Wzz_ zfXOZNG#R+hk3 z;1%S%O{DOM6aT!NL^h>$RQs4te*E;XOh)NS_-DS)J+n;yno@4V+EmDF(Kf1W2dk6|9Z=P3FDl4gRMbcq zbO>)Rz6V`WJ&`cv`mp`xqueFU(7jSzu(DSvbLnVK!bnFE@d)6zxN^fgZ~ySix6;%2 z9Q4JG;!4w00XjiOU!`i7t-)ax#)`&zi*NYlVot9mt(bjJczXx*Sp2z9hI(3pteew4 z@exboBI;QYV!CYY3+=n<@zU?E#eqc{$GDtwaupgjFk)e+zg&r}9p}Om?gE{CZNBbj z;8tmhPHiN&c#RBykv^5h&97&gF(QGhV3CorZ09Uru{Mu%)!L&FeGy^7dmeonPE=Oy zNng>!6iciM;pKWD)=H?@V@1iZE!(cunBfiRePI;Ed%U~c&{MnhNL(-Icy4L5H+W0Y zaEsS5E53Ja?g{;pKeX0|AX@;tj2R{VH0Jnckck__2h+Egxk?)p`52 z_&$wDAwFxLuM;(tK9yUp(OzVPd^xO7$pW~2Dhne5%AZoQ!iQDm_zHVQb{@%nd0CNy zUhT@4pb_(bo$QdC68xSxT-wU}!aD~6$%Ojnmkdpf0%7f0m5oZ)vS`WNNrQ+R+A~W6s+Fz93 z4-u6kz4$FHQuIAkY$WAN4V+`Vq5jF#h0iEOCVnBq;}%Kh07AL{N&MdG57<~Mjg<0IfCV*ZWkVl%;0UG zZGjuPA=t&2O1xG7q^5s)prGG7BW0~sY#0hX)rSdTPY$soHf z9=H+2p8e*hyx&3Tx0&Z>RUlUjqt7rxj@R?%le2OpeIo&p-jT5f{xE&j^q}DEJ{st5 z3SYIQ47|_z9WZkmlV;-qgO;X6kD19VXTzUJPh|4lX5x{ktn}5(c2NnsQvuJW1Af+n zEuY5xslz?33%-rZ?QOr_)tcIFgR8>9YH*nZ_fWxLzI<(i!4*>Ls!*+Mmb*ueA_^kP zt&84?xd#B>k%h>{!~9XXeT@89x}XCC#{s&KH+KkmIy!1s@b#ew2`dj_@I*=lLp*)1 zf5;4J@whVGAT)!^@z_o8pY)O+03|-Xg1N1@u$tb0526PJe`6F;Z=^Q)fJ-yDMO7hX z{khRN5~%I^q96DY^G1jARmb?S2b0{nnfa!%g>Abq$Y36HPteULs62(odowtK49zoMIBxC{e{q*&*;&jAOs|RLMelGgmqy+u^WICjeQgO`L*@-z_A1@XLj=cOo#stH zo9)J1)^a1NoO$bLCgdKI$DatPV`hP>c$=6+5{Rcf*#~kd8?ws)<=S2v3WS8M2+M4h zRXq?YmM!63=E?R54JL!H@A2k+0Y_UVm&=w+%f}`^%WJ}y+)m*wWtJCxsp!HKeBI{O z>Bxt)=%trs^dRHsx(nfx!QTulwIw;NgE3 z`1?N#oS@QkgU*K{{veghyF4g2zXh_RHu=Qjqv2A>?Yfzl=gXdhNp2x7 z)Zo9%M<1sj{ru>%-eqcq_W7-!J9`eoDb7m@qC{hy8p|;L?;m3aQx$P z#o6CJkBlx)^>`XJgpN9%y)yad?6TvEE*>EsFF#tUV+>wm^mt#*x04rlkrotY683(s z4&U=(r18>-55#mucmKUSxc>k7FaLkG#{bzG|2H`K{|jndW~0{$pc5Ot{sRsOTq_w( z^y*4F%V=fM(s&f?D{yVqeL4Rldet(lv)OSk&e2kX?e~XoYx@mV*y+tx~mmU@DCVo@^~Eb$)v+UiX-PgkkYAnwk=0GY>)P& z<>S-H1;{qUz4`3p;P>q}ho3(B{7U{yMmnX6y$*i~ArHQ;wuOPhLtbQPX=DJHBxO4{ z^6avUa`Dk~JrxO$R^Bz7mhf+<_vXne`^)MutTNbIboWxQE(YgKqZk7+0W}?K3k)MY z-XCfojUs2mVtFwzUTL3c(K6#@{(aTD66@l_^I;~>_I^g*HfpMmxN!X1ZttL!u6EXu z_&<%=p|4IId5IwM+LrS9^9Cal!OEpKq4%bVr%Xqu&)2C3pC}G23f+>}aqs z;zyC^k~fr&;!$syC+X{KokH#PUbX|vl>+_DGMs)FT$7$(;76FMI%lZzgFK{ov~ts> z5;P6J_@6+p3!Sp~z+lcpYEW4@P>!u#S)|d(Qh!9IlCc-*RNaF>8?+?mltovm>=;aH z*>5!6bn?rn0B3sKhxqaqwNF?;J`mUkg|);?}iWt*e-m zwKvb2AGDJAf`VMk*zYCO``>bjle`g7bvXE?`Qps)V=_{C=IQ)$6H}m=-Rd-FCA||!A8m$czNGhfvNa)VUt1GQyT?yj?5`G|GM|po zfp>o2_T!_?iU$VPF)YHOLyXq(Ck#KB=?x0N`SjNm%NatKUvh9jHU`bEuvzp#vOVTTca>j1()DV8=c)oWNIfy^`D=3dZC{pm&<7=PXfCW3HWjQ8kCFDv zrFMSwTeQRpMAt_V+%B%<&GPDb9l|UD$%ogd%mC_=vPOLGBbIrfF#2jQF z?k?4v|3fWTT-n%LA!lmsuh!lU-~ZB3|8Re;`RT^~*VX~8KkFS+;eWn$tvvj*(fxbl z&vy#Xv4hQCiHL(OhRUOZA0tNJ56CW7$FA8rTLJq-rm(=ipV=plo7=wkD|opxd->bn zJ(n=oYr=Mtcq@Jz0FbRaE;(hezY^+d&R+q3d_wERX5Wzvr{jMNMz6kqcm7wkZQ+{n zSmMmbx#Jy~1Q#m>=^<@y0}d)DuXJG$JCls#olzl=vNnO^Es`I?;ytxZlN_|{{0~}C2fiFmczLrH9E)%zRLIBxkQCO*=$bL=PDh_3@@4N=n z*2f5MY3G^FQY}tskxHMJiYck$ujBm?jyBdfOND}X#SA?%kXOn-g7-zFjn0jtT&%jE zgnB$iWOW6HvyZ;9=Yp4nmO*_Rs>OP7Hada8j3Z{i!WRs(@-=6^Gum_srFgQ!Hypnd zP3TsKi=0Y{b8avW!=+xBrl&8(D}A6_C>4{Tl1t{;b>jdJ`PaaWcO8PG?XRi_r|XnB z=O~%sxotMNkm#brA(a$e;)@0FOz$)>0hs9&JopKTyIl!Nx zb-E|tzPaFjEH6K7K|@N~Q5DoKIpkywN#;#+_umvZC~dGg(KfCk>3_|`XBlJX=_2Op zD)qEM&3cRRHe&6x)P1K^L3l%dT7F6Wo$*S3`yy&U1CYz4m8f--nk~r?EztK4;k`5D zV6{%Z>*Q9v}gyimw}Tf^l3<;sLa8A zp*Wp4wHvVnCo<-w*ihfA=n(Lk$aJ->Rg#9}_MH(*js20Pm-5?ULX{os&9zQx*ZnbK zPa4wI)u|v3f{8Y71;AQOpeU^%|K_!gJL$Ryjh<-dDzI8B^-owKhcXUbrmu?TjbHt! zzm_8MjA5-!LeI`y3|^i2bALw?<<2EuC_AH(%5_YVKUlW9ea=lJ{?Su=)xy^9ZPV|T zlS4G|L=Mpq6d`#*C%`*rS;zE1>mpitq&2CB=4Ws8uFoE}NIJlmbGl7n!{rQ^qoZpvw&d?%Zq{R*0X!VV!rj`!vfu;HbWI{xWV$`8H- zRz6J7iJYH)9C|w|jaLL!(;jumxpMSly_|bY(8i~aKfjKBTo}Ih^7|38ERMGHZt6co zwd3%QmJrmcP-k|j5c}_CI@N>GII~0Jd~qBuiWB*5+xW}9hg@rGkIsrK(slMner87nMiL9moilK1 zLCqW*M+@(qr>&UIhWVYe_%*HYCI7)gsc#*N7QtiuU1N{$S)h_@3QUsYCTs35O~OB; zjZ}Y}Fq|g)awAJogyqK@dm-Pc(`6k*DD-oRRkZ!;t-6?|@tn=RCwG;tL!!4#wEAUl z*KGxa$b(z@CZm}+#ZfPI$3&0ed=KPqC*ywA!!V|fqirQk6FKDN(Cit6lWVJ zEhfR9vIIEV9yORyaVpw=pK>vG26Ilk!+Odi^U{nDuYrH(bZ~vk&P>?TZ#y3&2af)p zjhVXi`&0Z%%kR0Q--q9Re@@}i+GVCmgzvJlR37fm=NfJ7E)?2o?Jbs^3Ex{P4H8&C zDQqpoC3-4FfJ?Nzel)?VG84JKdOy><%(8NzFkQ%I!Y7U2Fc_Wq75D02!HRwf!9nZA z;{33Ttrhj^cb9lJ0auDBj;*TA3Oni#sXoq?Fm5$2!o$hm!z)e2Kisbq45Y1qxi8yK?qhvay=l5KaRA~u8881wme1BsFjBc)p1&aIi;uk zs*!!u1IO!%Qlt_7O>ssh3KJNqew>YNcod(fqF=$aTzOeJwZUjK3mlTd{U^98L%P9I z_}-!dzttY@$SoJo`VLNm+^SrM+7t+8vsWITZ6kK$$E_}_CEfTzk`h~J)0-8bn)88f zApi4B%{ki93Vg2bh`d;@lZ}q0@$egT6<9o`Uv~obJd`6e#&DMixLXBPeqCKTRJy!M z0;KW)!{3x|9K45ZIFZ~Z2x5g@SXE0P$xxA%d%X0nG~unqIqvNWVQ8w zDi#oSx{K6e@QHtqt83ZCf>v2Wh24Ll^5r#9cKZst$cwayN=XfNhT0a8P+O;#U;h^> z+uy8z(_|UZ5noc@H1)_^#XHjT$$wD!U2^wOZ$0A}2DzFF;3Rx{5ob(c2r>C2o}_T{ zA)#VR0#drq5j}4wWrceSGxZT1QaU#>F|hcm9EoE*VB?ccdndX&zPxKVhV+;Bb1{rs z>`lG;{(f7D?4^u!5tZ=r3OL^t=7WCI*+*LF9#yoq1V`q|*xf&yMGG7f;}0H(ey-dh zL%p_td^vpgG~$Rk))dT5)jN4$acys;>Qooq+2r?T-^+`GX5Uv<$K9^TTmgv(`<&$d z}E=4g&z? z!P7Fq3wfvzSD3J8VX>fDjcgnimO*~&evOq%Oyku}Vj~~=p8`>BchPSYqU?$mu=t76 z#avG?RtZd*d|$dy7QCDVLK`K`v-FT`WGzSQD--qiCKO0eQ^0t>`JRs-?KnEJ_>I}> zAbHRX`C}ef`u5s#MQ#;;>GJ(jaaHSc3J%4m%&sTJ`KB9L@1W9RKcJdD9pllWY$9RM)Ybr&hjO5$};)K_gwCY#U>(!;DOmy|l}`=82wTxo>f&gin#{4uZ3|XIBr41>PUq z|1CdsEAi4UD^$+8@71puc~0~d6rN|_DO;>D+UUoTkJtx~;99?e%mtWdg2h6s zfWpg(OOAhbW(9kD!S4}knHw$)*on&9vpxhP{Tdf_>9EWi>xbuN^xi09Ioe|k%Y>Yt zv>vOT;Dt=RP(z#k>ToqRd*PF%2%Rre z$~}dr;~8D>Rb%;Odz*HtK7kAmuMc%YnK{rW3vgCx=B7myCxew8|G9OxPjk8i6VQP8 z>|}d0pIV)8*3khGj2Hji@aU*+D(@TcoA@8Be78cuKsO3Ex!+GPq64kVQC3ylUsI6C zHrP3r<;(2v1pz-QMG}WrcFuERo6S41Fyf zm8Iz|>%+Hxs+kFO+lWQ&!Utn^r6~@ti>&2F2~aqTqfRZFeVr36r}OmL-6kI;#U9Y4 z_r|K-rRbj(^;>o4C?BdD?Ls1VG4*DTYhG7&Tk}SzqP;g<4sSQH^R^^*GmTg5oSsbl zR8dePi1Zf{b!tQLXv0N;@*727%o-q=!fRnN&Ie-FpeR5w{UH}x zL$UHy8AH4iR#euxT}Mp#;^1piR5`z0Z^_^2lxaUvE&Zzj=h*0SduXE0batI3DI$z#BNvc3FQbFgER=hV<-=ks4Jk$FvCEA~@)Fhz*- zE{~`tM|uwi_()*u>xG}sVXrKJkW+v#@3V2K^h;@B*oiqdN-T#j!!AB z%5szQ(8BJ|3nj+@9W{S>@LTp=>S>1D);NOi9|%bHP?8EZ(8dV2r+{c7;&&^|F~a*! z*$%GN!l5_&C8xel$V-*i~>vp_VAgC&SCCMsm}@M)yV(_=^pi zY6D1DaVh$I8USn)n^Qjj*OV^^MwEOC;8G2t<{sZ<@~SnY>G)UhodNp|{V?Y!(bEYC zaZQlgYe^R}J19`sM{_FyxRTtq{2)9Dho$j{^optmXuSakr)MezX)*noO5* z^~v^?B>p${-t(!+u5($X7&qL{r36;%9Sjq1 z^fGIcBbPtuusrQ2fUTlt>`@af%zdAp8?xP@zpNMMRq)Z;RGIsp(g^cQyq8x>5F-Eruo6;V^l84QmB?l=)w^>-CR{C?VJV;-Z2~QN%Fg zjA*c+VFCnKti;uMBG0-Y;qQLoLh*G`?UqI-PcIyqlf-$%Jmh@7Y}J5z()BTWrdc%L zByN4)6y`8DPj_7bHmwc`)&xm^v!|+AA)+H};nmshO3Uvs1Q0*ABM8S?%b852NtLxK zfO+ZGuIqIGbX`~+l{y)B<9wS_O62are=Dfef=d8s*Djvw zULjQzYy^{cjgU#R$uHpMN*)~chI(>#ad+>Tt1W9roKoC4vp+QqjLmfDK#kX-?n<>B zIAq7O9JdIIrlCCtj*;PHOT;5;Is3CnCH(BaBU5l0iQjIP$DU}mKmO`+_Qv&s4yV0lA{8kpeR7jn4bgPy zlMV?^WkuA?l&lXkm#k-rJ*okTC+OCp{w}+?l+CU5#{!QXQ}JPSNKhIHZf^kB(*%m; zLqQN|FHJ=FzUMs!uNhZpJ|^aU1kkg=9(5Y8iA~lI0qViHTQ?xa zNQf>Zy*UM-tqGPbak0imRA|z_m3PZ|jTJi6eqRFrRqr;PAH<8rZ|J)}$G{zt^kXHr z3iA;{AeYOh^p1EyickuFQ@Gx;x+x`zM1eiBfYyZRP*Sx-y57#UqnCH3SD>)Je3ecH157OF<@V{1 z>#x%gqD}HMRM0n`oH#$pha2J$8p4DuB~{Q1d(@IWpch`}Sm zz0H-rayj#X1F~Zo&?O4&iS!r?&q5^HE0VK5$-CL(VfXMk_bi|zXAWazb^ zpCwCg<>w-(Z)u_|T#<#0)ccx7`&Ej9rVg9G8-;|Y<97#^1;s2xX5#l^YGzAAMGO<= z6$V;S)*57%%9qIu`AzuC0`^uc=$ zKBi;M1lsC`xiTKt^H`zOEE7J+;Ot;j5q%1eNYmM$8bG2cgr~+hb#K%l7w#0J5SF?4 z$)?4=`yXoISj?vRrYw)y-qCx=1EuO|U{>#aFxfgs+cwKaLXl+tctCWz`budGwQc>? zh29<4QR;Is#x-IxoYV6Dk~4W(#;leL*8R6MFy!^(-O-R2-p`NUOq293e=y~eyw+Mf z$&X%m6=MHHWbDb_`pe5((`Dm(4;X%Q1=V#w3x6U}suNOmgQn`<3@zEAq0(jX=HCYw zKdx`3Dkd}eFUkVGo6MXnMYEqq2uZt9dW?=_0oojY7VVg?WfzQc`fwT=GAc_bJ>v{m zCsD3)*l=pnh}aM}fV4L0^o%y9W8+#k{4FgqP_W`xS`u;97MlOBnC1V=YyI!r`=6Kj zKQHrtUgrO&GgFPmi3UvXOZ#7pD642asW=hxACTjGH2$AM&qiH!=cCcOMZ%|Jefqx` z(fBm_YxC`Y7|{gVJqA;9$Hr*-DdV--|1hGZQn{uNyFSbi zwXQv%ec1hR{*GcYuh~G)?!y}M)|+z!KVH6k;BgK;M+<*hA%~tL)&~mT-w!2kok$Ln z54Nf@1YDjED!YGpUTad7%Psoj^K$o0>VwCRPQM#HOr~Bke-dMMu(R0ea*0L#_v!wY zPS};FPh!uGzkhzuq;Zu>r7`~Kk^o>AT}uE7H=zR{QlHk78{{DyDXi|oZmFEuspVAe z@K4n)JaM9%>8p+gn;D|Q?CzNoeZ*IpQWK&A)|lt#Acyv=^sQXAd*1GOnjo$_x!UYL z+XlM4&D(`+LeI8~ETpzQi*2-(z3w>hMtPMu(LMAkb$xf{Mf4m{!rsN*i^P`s-zH#D<^)B&v+Grp8UDj6ZDiO>o{l#Kn)8ThLkQ_jUep%@uSFYdHfiw ztX%LoCsSDP1ZU8!^f+%kB6x~l)->c9q$*oxSiBv9pOHF(ht8foHw}FZe&5z@&h-7u z(Yz*D@|dE_5pev%P~`scf~n%y<3$St$saFm>;rzha`3+YW63Gv>yOv2X_6<)o}~dN zZ~g;4!=;A-tH$=#sqD5xv2v&c*Q95>L90|VITXRaE8|k^Z%MiJa$Fafg}}r>7A`v* zj@;6^${V#&{M-NG_FekNKesEt|B3okc7aZLqb`g0>_hYC?8t3W|F^>(;!N)0=ZaO0 zN4p)LpZwnK{QXb*+c3Q9;L}8wY0TmD(LL3p$@YJ0$81;3)hDK0%!5x>bWEd9S5;k9 z&mcFTLH-AAP2)B{JF?8f_&5{g$E6R&v#_48I2O~#(Os6AfiWI!WKjdt>dstJjR3E} ztx0ukOI}n2EKL^A{ybbG6u&rwKmK$6AoMr56!h|x3S>xYHJ**amxXV0$PJ}e?3 z>O~EVrme~ji+YKDv>Bz2^@O~pDjHZRk)Oi)Jpux%{zS03FmUWF68N0wD zV?Qj^J46{Q{Q0PiN>fREhpPg8wa`RO^9RfHQ~~C8 zbar>=GZcEt*v*)=Wnp|VAw8PBe{l)g;tSOLp1R-4V#eRQDR{W}~b=SVS zfAeF@O(AppQSr+9!dorZ)LY}?T9(c_dhg?MM4f)hE)I)%WK1Q?c|C3=#X;j z)ekaDUC&?n;cG9f>{^v7c0HEzz_&WDc=kU^`zaL(-&#Eg(I4CaA|e)N%6@c}_E2KK z`>$PozaZEDq>c+KEtL8G)&4?h^Vjb_{uw5;)_WzipsZB|?e!ZnDMJAlMkFuJatH(5 zAgo;4$b^g(K3wFeZYPGIys!a?NP+5Lf&-B}g)AS((9gvor~y}q&YvzxQ;If6Pd>Bo z;4qWC0w52y>7jF`#bR29E>sy=TH9gP z73KnfMp9A)dXQfHm$|4+0Z$AI*=W6iHAlGN%AR82m8 z{NoXTTs9qBf`eQkZQ>`(bZu5_(?ym)7?|nHfLQ`3utx6%^m0D~!xN{O^E$FD+w?bl zrkGK2JZ(DjWdM{Ad0x9V?5CCxI1#s;+#J0Ix;n)tpo0NOSrqu>pof`jEdW)QM*uig z?cs3^1v_juPA_?zr8Zqo=N&o?`@7Y9LB_E5>H##U^*S>-a{R)|;5T#A5vF0@L!xqQ zhB;H+i;&1B}f_c0T61)~87)iBLC`8AL8BEv6e2zu%Eq>I)qLZnihykeBp+Xwl@wIkC({f4~; z8zC9Q$QWskRQ?o}C{xb3!_eXL@`dYJ4DB^q_P33W3s@ z7t8U_GSx|=ewWpeb05lo3%aOrI(ikd|K2WDDvTD2b&c5g{=`G!O2w~7=8p{u1G4hG zozdm&<5Z!gxQ{9RkJrEIB+aU~d+=V-m{k3yW{PhH$`TXjNEfu%?A<_uVH^Jr6|rIy zNJAP3Z(}gMCD3^%IAkaWQ4J)JAP`ZcEe1g9kA@exs}MksI8<{dvCavg>u4P6z`r;R zFjpGuA)@&Fb@bOQ1+h;_)CNeIy;AH}kc>274xDh14EXUn5o(#pv5Y+S204=wI(Cxv z$-(T2Nng`aSlw=aRRDbDNKnScQjzhA!aD6Dnn2pvB3FoEe%Mp*i&n2eMI?xw9n#hn zQnVg`3x^WW;B%RBIUafo8|D=m7AUJoOHLa)O%20AMotBuMnps{Ld(}7Ar$CW>Pb*! z1T?7@nu+&FNKPYy!9F-I0v;NY04^j$i!ec)2MPvL;St_2G6m|G=2wJ)mT8){D?xKH z{zm#)x$6*uW{Ou@9JK+Mxu4l-=+$kQsdWm*GU2z{Cz%djjk)HaTED{Ywdsmx!-Pfbn|!l$?P20g%I~hz2yQ76U6v z@WiR2tGS3g1F4J*^kgH%JWdPABh`86~l z^wRnJXE4yuP||2H5n0@d43LNV{%Hc1l5!Z0ic2^$rkkLp>tIE&QqZ!ZDH`nNplFp2 zZs^WtIa81=$$~XQ3HzX;j&sSjpB6a#;U|dO&mbJBv}iq@h{@_bQ*gn7&dmXxB#77! zOF~nO6~*gZNq$%Omh*a%L0|C6r}R1kuBrnJc|p{Y_DEPS@qSGl69I}T!m#ABrv}M2 zXk^_9lPX8pgJ*&1ebA$ZxIao7KqXkItBFnov@fdsJ_oZ#10+||TM(O&@;b8!4I5Ri z=u^Uf{^SE#&H^cV5RsLmyMefgyJbJ2Na|fAmJW~U_bcrv4%vsrcvtljkXm?Xx-tp2=f_SY!MNdl`(?yM+`i$h2oV@# z3#pGpl+OUQ4^_1zYtogWv7@p4;-o%Tc&V%3#4e1{!Khfr{+~pFD)wq`^WaBSbS{PmdKif06z^tGltNaI-JC0$VA|o>fkB-VjwA7>bMI zuDs&w8x5=c71=2N6SPM4DKE!+Sa}l}TOb~vhz)PN0E%~&ms06yA(S^zN74MM^{hVc zvccCG?V@Q)4lQ0y(oH@P=4k*EefmSik}txEa_4KgDEP|`geM(biH7|p-&%4kNBp(iRZzbrpPk8T9yz_cZ zF3p2ejxa2x@%l-;+!@s5dV3WK@+1WuG!;4&32h$8Dm;aTq=B&sAbbM!sTlH?BIynU zT&r2tZU+q72SuWTftkp2GXRzZIo>r1pn$6SI&mFf-j84$vTMWG6K7F9>;d9Yh2nmJ z#8%t1sA=aJXVAz55ac(M7mQo`7|aw+oP&l+{elu{z|Lr}no3-cGF0_*OdPT;VxYNh z2duvg%IxTn7Yhy2sq6szk(9EEEGn21@#znXu=q})k3su5cohv8hk+uEo9Sq~vFPpw z&2GM|L|H5>1PoC#>F;xe^br81lqy{?IF1x00rSHT1q%O+|09moHV7+1#oaCoP2XvC z*7RY@Fi8`>=e%F>l>kyRz6H(#>2Tb)rFlTy&!>9F-x?*PLGxA}$ai36;Kb%au~xeo zWgw(7F5g`zKUeqkZqN0iMdLmb-!jSJ*qR}>hH1cj6g1DrBo`f9v{h4zNfMFap%v40Id;N?lSXDj4!8ndBmSLe_*OU@^o-fg{G3a!F%tu42f zxrRh{db2sg-mU<(C~o_oAw*Q8``Hs)i=htTQqLQGoNs_EjS!i2h5qdz9H_dqgWeDc z2pNhPznsA94}WpJNX$RsPpP{?y8F46LQFpir2ydNfrso5vF<3S(gf9#65zAZe?PkE zbkJXS4bDw)(~5>N@c;r`gQ<>52A9DTS>T1&ijO|tGE>9vWHwSVzzPxrvXDDJrk|oL zfy0LPGXbGg9GplKse`A-qe)yQ^?4$0rg&l{y2R9CEFjB-c^C4QDgss{xv3_Q8t|d% zGZ9t$Oe_R9PR^>FR;UHmM0cVYJNQr~4La{_B4;>lh#3gzpwC$iGTg72r}xtEHVr(z zt+1vDl0KhyV2)F!TAGmix62;G!FR=5shW3)zlryLF+COZm{$&MGmbX<=y74Kefk1x z+s~Fx@m5dH*~!`3f|JynYk@(vPq>xc)5MjhvL_ByQnP`XAiK`mGfT8bu(8D`zBh*YF{$NdAJ*U*8Z(ZM$U&pKdZ zKaD#6R=9FGPAG$(7kQYp&rs-2DY08Mf-2RroKJuFmKOFuxS)1Vhzw3|Zda~cY*}8U zYSz171eD=}i8_mAgzAR<3}s1h?s{-Q{zHgyq=c{gjZtgV__~ zCknnG9SZp`F={b1qT4i>^rdBda;BDMFk1A@sMD-f+U$7i>}Ee9&nQ{Yw|O!RnPWG1 zTd}p}{#?z_+yW0r&QjwOVUOBYoa|1zog`Anei-Uaj!wW4kN~gK$AOCjcUQ^duuvYO zKDuaZ&Oh~^29N{LIVu*^NnLKD{PeAvbDdMoLP414OKQxcg63bp zU^K`S{8~>v8Ig`zU@4DFR*bd9_zm_oJeu(9bj|jS^;6|8=3ZG`JH;ciNKN>+D{~Ks z0`u9S5%ZC?ea+A+JK&>>Z+n!R$|><&FBYWUW*_W!I!!lJb-3E>)$1gX{`!+h_KWgw zfDQOf>$%8J{ws{w?^P-o0gmRa(TzZE~6iwY!X zGh%}u_YbxW1dsiBRQ@*gUe04sq95HeB6$*kQO+ujnzNuyU%0^W^fV|4*_OG((wk!v zFckPO_F*pG)!bY6)_RA&U4eIBGT-O&uWGGI2%M3z!Wj6Ft{DntfoUX#h zDm*mm&F)Jjq)g*|Xu(dq;ijW9lpVa@gw|qEj5wF{A2PJtsC>{#Sl9)F&yz|ozJcb7 zlCJEfKb`52<{b)h4erd(`$8BG+Kb##02Hm`^WPzh?4#%pW{bAUY)Z05nxQ(_=hp8w z6jmCG*4ICamC{^JyDPz*z8YJ)^etU{m` z4dIHf|DXh#7pYRPnzq+QIiTUpiL{CB49Pa<3jK&C^WKR(JqUxg@lWcA*tQE44 zm`Taqj*oqX%jk-kIRDs^FG#=LmZEsY_yJ@6zyT{wmtm3UF;uv>9QS8VOJK;*A)ex~ z{X3iaa>U%yUYO$6WsL4!3Yyvt1hyk1!( z@8I2+HbV@)?Myy^@@+Uz1QPaR#0H<~*a16LzccA4tL~1oU-8D#ct&K@MI-FCF* z!Cj6I#%~n3-?NkxKBPd8%&6eQu|G{itH5F7!_nUx?msK`dFMvcJdOSwzVMI6Jpm`s z^q>3keog%C@qR8Cj~pBbr5V=E61Ggp|MPpY4z6|8kk$7W;8W2hHDdr>SvXo4YPkUz`Fe&snd6JI8ntDwUy#T*V}Ex{*7dOGEleL2yt2A_Og=RS`jM9 z?)u?_xBFa53cB*-*JT#D3m0E_c6EO9dC&ib#XpYwd82vIR6M_mXI_&LG`4-dCDTZM zH@!XwCTIi$)}KKJ#EBNjY9NPczP9i?5>rpM_~xg!3XS1W0XYS+^aiK^qP-3(r2e;d5IJC#fYFmyE>owh8tA^vdna588;DNtRbdw?01@JdxRB&=JY8ZW&>u50ceekV&3v>q+@-53N>DQk8 zkz>fvmcB4@tz&>D^C4w0>p>l#zFxhJoZ`_pSz|uirbpj@#ZanKCN9=ry{H#F#wXa5 z9$uFg$9*&>`h6zo>AwbXNDD9cc+{pyLB`XOt)6p}Y{@$otj8|!=k$_XPXax^IQ6Fm zN~s4U(0dK@SH$3oyoRN=@Sn(W_AdW7fUOeQT*s#O|8}+ES3l7|Z_U(@7W|ZNd(^b8 z7BR;0nBJqCg(~VhdcmFLhMly>3TyDMjC%0_w5o_H1^vjexd-Q4s7N_mR>>FE9!1FJ z25h1Jy@RYE&YQ|7bZR&FK8YRx6QmtYZv~rM!iMA-0;4dOv20x+x z_Fas;DhIkX0otf?vTnK3@dZmk1HKDC%|uj~EAl>lMG?s<3VIzO$VouWVDHd#lh4KHUs;(!IVpmX-L|?p#0l@#?OCkw!X*l=hsrx zYb*4Fd3i#{{L;S|b98j~I!(}V^g(ik-h)xrBtS`5ofnSAQq~Q-P*Jmg$yA?tsFm!) z+Wk;h#(Pu-zOtXEAUH)|scT?nV~KL^UKdd*(7O6^=4!3Oyx@{(*RD?u3Nn!YF79aZ zL8qZ;(-{D+sIQCuXMxUiI2Qx1L%zu0zZsV>b^J&3Jaxn{UCnFvxi|r4Mi$kU@)MgJ zpt1h-hn@+0d(?NpHN7HylLb#PJPaE7|A-Yyo$aSVIuWO--I=GemWB}F=Y8d{s zE%C~2Kx&C>s0fBn&hy4<%1WE9W%;8X6xZ}YcRIP&f>A+tn1N1yA=E~wj(R=SI#vDt zhy~durGvLW)3VrxujafQUamIZk~GrODF0Pl)3IK^q&Siqx#&}kV~xsyGSI68#Avu@ zIzDk{jV6zY^Dvj@wbA)t_O=CEtR-9M=#bKn0lZz)HkF&SD4ZF}Y?pp=2n+1`RNW?@ z#s8*E)RSfEtEbh(WtdIdN72?#05`nfb?slXT~S)&!gZ@0dP5u!KEx&qV5&!V#poE4 z-I93dnynwY+oOwy&i@grN3W4(_|O%)m9s7BDKy$BV2#+#r!DpXApm3M*=HfA@|S2> znqyGt3$u`<3zCD0=j*yyR6q?{RZDbIQubLMU+NQu3PR-XE@|#;YMY0!{gqInl4lX> z=Um&%CDGdM;Jr2pFNuo)hLEAr3oS@?DVJ1dd)02smVE-|${SHi3!8U)eMQ; z*Eqhkr7EB5@i~TvM$Jex@FgIagaujd%&mD}J#RaU`4^OFRRfe;juKwf)@BoTZVYOu zTZpy{+j#z}kQmi$?b1^ER9pR1-O29Dv1s|$Q3od*L4zeH;pg|e0b=@}uP^!ZLEG(f z?l`nJERS;awmYlcbF(&Co(uocd8yae=W_X=l2LDO@8f{p+<=E`pa}A~dSFQD>e@&B z)BBwP4PpJ|YtOJ;4(c z*EX2aA|KKJA51!SG(Tym^xpsN9bMNHgP^$2<>2Q`DO~|V%iRJt&c~UCnN2U?*CiNe z$Nk6oPJq_im}cPlW=cdZxO=kv7gHJ+(`+STOw>r;+g7q{vdG}g5qEA0+p!YX^^uWJ z5A)S(;=b?ucDk3(t{Ex&FZw4_t>!)TM;e}o6L~xx9(UJiwGHR% zwA6W|4N|)l?yE^j#Le3wpZYf*p=hR+d{k0gi|aBkV^x7%x1UOBPonqoIf{X$H-caK zJe15PoSmg8`_M>Yek|#pRv9rPORg!OOhNMJZhGb`x-~7wr5PRYUuhpJS@u5<5}XrK zC64K`weQOa++zSrPhTmg5i3qXg*dt;i0u0CpkBqgXUVm%bESxVe+CsxHtjhuk(J=4 zrUH1dxgn;qdA@p!;!D{fBs;^i15?>ZhfEPv>psipSS`~-xVYb5@it~o4$92(;7J-l zJLjtrzt=_uc|ff`e5-~7gF$*?DaK_A82p2C2(NZepq z>jPrjW_qXiXd+C!@Qwr$MYc)K7%llqGLr8LtKRDkvG9}B)pF%G>(y$iGn5633^*gT z5Cu&xhCDpR;{qjz@9%Z#Jb*O6>Er7LKFCB`G@%rN#N%kD28Dwl^GaL=!PdrQX7IZRwXg~ zc}EwVo^$lkvv_*NwXQSS<1>5*`O}*OZa_Z@>L?+$I8AP3u@jnv1;Y}v!!FSAs07Pe zD`~@xpzOjl(v@~*?kqDI7fmW;p{B<>{&AEPeh^){$=U%+*cX)crb7P&fD#xyZ61DN z$6z_7#j5xyg{$dxA>ULrijFyzZ>-J$eqK~c&`lOFP0X}BqlGTM;o_AW=D(WFUzBvX z$h~@|zXvoyrRt80%qFDWF!uJ&qyTs`Gho)Hbh)bZ0O6LSY?rW2mQqT}rJ)hdtFA0; zm83$K?fr}b=Ng7y9nSHxBapxQrY#l!Q81gGBh&TpQY|KhHFt?RdNI}=z4^z4<5wi~ zMjf<#dDbx! zq?@q9Z<|84vuT1&terLuRS&E$VB9RTZ>K;rhf*$0M`eiHu(G+e&53Y}&$_>u=MyV< z`R5+&s^nC)iohcrn?|Xr8p#bs)l3yu*v(g*Vq)_tpga#(fy$X~Vr!P^b6WO625Vh+ zBWIae-jSeoWt*r3(uJMuon z?}qat6UXHZ7Fbh?E5!257KO)Iwn}Y4Zp&2nOQi~lclvbLuAL{0Ny6QNO3a^sm8gkZ zPI2g^f!K-jiw%jjVMJi;IouBM zXIW4Jp?RCqQ#%{gJ0p_~!ZDf5yNo7tO%mfUy|JdwlxwfjQDzge45umQD`U~>BTR#; zP5NxDc*eb|f6@#$+S1e)I#LOf5gBffI&La%LKNS!ln(jK*_jVY%MH#DHwwb_5yzyZ zoN}&x88T%i3x+S+x)a_+jl4Kk2&Ss{A&ZR z#eu3Cr4gn><48ElFfX3=(Wg7($e6$h>AC}^6B+?;_BUhF4b`8p#H2uh<`EHv*lmxP z%~*un4CdUx=|%9;~t3iaY9>^X}%X1(KA}`_c{M^TxArS#e3E z>$Wc>5`CO^;`7B^&^Y34)VNSrm|MzMPe}51sQkUoOa%)7RLAL7p-X{~_D4IIg1$^6 zG&UokK(OU78rU(q3DFX8L~lQ5_&(SRb3&xd;u0YBmkHHCl*)4+?ujmJz=rhJX8n73 zs66Q61Rty8Ec&W`XA7m?hNlX{u^^I_I+IQ!EvT~PeX%XA>ND`9S1d_7j`%s$}EI7AGk&Q`F zu{DtkrhkufARwgit-#^Unj|4wXGqqJ&?nue^?!4!}&DWOh0{5@PayO*cwt7CvD1>pd zUHF!p`4^DRo55*qiYyQ_oh8PWxuw6${UijrHr+H$T-Izp$hq~0MTOxrXHCcF2J82n zZHfX@FMD6fncg%WMI;)$&Ksu&1WSiE#+jq$&o(iImor@)F5GzP`qaNh#^dMr5t(?jsJrM>q?OZa z#2o3`3lD?kV$bKEhOd68I~*eV@K7qre<1-X{6cPFA5pKJFpp*^+Sh7c0_JKu*B-+9 zZy6}-M5LUUmkzK82<)VIInpP( zMy8ym1$#-$PijgwbwH~+ZmA-}qHu=o`*OUx*R>m!%aDohZb5@&guqjxdP?y&$pQ~| zAY}>AUi!S`S_m^pq=*6?LVETavKV!_^vNJ%Pt^$+iKcak z*>B-5<5H>=^Z}8+1e5J zk}40Ko)C0&gAj@f$*zXW$5uoSk9#|iBBb{ujZ-%vP3vy4IlcbXQV)v0B$5qx12$>3q*ERiAVj9wx)}7mMdzMZRo-^@U;Y zlfhWBB#s>GcLp5|2`(1^1AXpU<%fV2breaE{sqB!a;yMaVvYvFhgK9wMiP+D86ot} z>s9#>QlX(OLn1hiMlqv{9?6M0FJzp=7`oVrw|3Y9h6}YwP+C^?re#E*E66_?{C6t0 z(G%j_q2NF2%0js6kO`iU1q7k-cO1;>Lsddt<#g5|wM7Qk6L^;wLJ1x8ccCJt`*rZ5 z+dH!IRX7MP8MHb^NZA3)j)jl9UpKJ4zIT-W-4f_e4>qTsy4#;661Yl6j0ECC1>}-$ z$#RPLhe8W7bj(9aBQ0_`U?u7k8Z!c5T@{w+ZV((vK1;kxDXoCrC= zCkENFDWGkUJIGFTHzWCSw6iTnx0Ocerg)XDRmtQM=as^ew-F`1iU>Rs&_jUX5}F5* zH!Bt|Ug^6MlM!>5&d6%`JOo40Fx?+d$qVmyW!5)vrT}fx4|I>cs$Q^&Ob9HHpu*uq zA8|IFggEeM1+y0O=U=?vxV0BCRfl_*uWQETQt|ZB7(|F-xq69199`U%tt;={12d{? z7ts;6_)cm9X%20F_#(-6L=^#Q{$1d4CD<9Xh1c?5^~mih%7JnAHiq6f7aQ zI(s!DAdbJ9JkrU&(Y#tM7>Lz(?r3-?15-rSC|+n88mceS6#u;~;z(brpDf<#`Vdqe z^oQ=MZ>X~~8c4ujjwCT7x1{E@O1@gjF}jITe0tAr$10zxxA{3Y7WG`G>7IP#s!j({ zOi^~-2*!R=>;RZlgr@QL(}y78t<-&xebSwJS*S;vpH+Q|u&Vrsk&dbkvnkSBaq?=> zdSVJpdu!@yBn0blwR8hV%sfQDYIO)*YU zmZnwXSgmYI3ys^C>>el(I?)|!w3n1+sM)`)wV%nJ&U}<88nmyM&;s$1iOj48hN`N} zNh=X4C8P;e1v@zYinpbtH3D2Qd#gIv_roe(-62{F+R$Ofb$Qyn;8!nzCFl%3E z_0TYPD3dq1OXhW^z4Z7Z)nZ&MaooFP#KSXD6`!UGPiQhw?_rJ)_twZi>CXuEW^S0Q z$%Yq&C;FcK(I9L`MR19|fmpAtWU!NA)dQ9pfej&#G z{**G)H-sC^H~7(9hUmOzw2-G9+3>=US&Js|qx3}`3{(fshA6wU|Cub&tg2dOB7D#^ zm@o_PhM_k2GS?rgTn4LRruvq7hWTNw>oepb-2LdFf~KI~AY0KSXcH1n##4BSj|Lax ze{>qwKbn}%ByAxBeD`F2e zy+UU>2{c8Ph|j_*3O=%HFRVjUIN4d$TF$2G%7c}sfX54tccOhJo!5dK%FTJqkDry@&*p1a8}E#9M+h$;H&01C zM4j2@d}Tl!gt3hJU;6PYV_Y3M9&k7Rb;_}2TEmo31Xhn|y~0Z?bR>Jx!2k#Q%fzt4 zv&mEaEo7jHU5q&N?(1JYH=U*^E5;UQ;hGH@Vd#uyg*`*?CnjEG$3w2>^63d z-1_LqErik8%mi{Z9#O6_r@Etx;9e5Pu_Ws9E-*_&RTSS$zSJob#?H|o+DVPfZXWlt zTo%wURiu!xK}(=dSETogMa~`e<{NO?-~dfY4$)lW0FAHOD#9i+7Ng;IuXS{6UeQy7 zU!5wcJWM>#Qhz1QEKvjF&0@j1{)4yX--x#aHslMz{^{WhMX%6}v-p5- zS9Amd&@juD1M%n;r)ba9$?|;nAR2@QJDe%QRm5r)6up{Tuo~2MCHTwgkh3_0Udw6* z=uqQ3llEZw@Y?9U@j!ATAv#W7_yX8t-24W+H#Vf;&-3CxppBf7t-m!$-*>gLo>pHZ z{~3QjVl>zke{VI3OW&MUqn)|lifkf&S05|u`1{J9Hb@e8aCGyLH0}zJcKapO${Ff? zpl(_9$~EA_w8*+bcnEUTxsr|hA4~(Tm@GF;^Kp?$<$1y9c-pVXrQh(ld^CFysAB8+ z{#t8pzOe236`O7t`2bx@lkniTg4HcOtPYF!v1IiRG(l4`l2*|m&aBNvur?^E2_g`$TymDNW z*7N8}K$pBwmw(!^&0KKzGXHTDjO^j~buP1zYsjxUd>0?cu#HAMZTP0ZUAQMg9TC``PBC12 z-T4pReRJ7%dc;HOyEBCV0<)WKeXgqQtkL|z?gH#y%6r=M<^3gQu7Ynge5o15_6v5> zKTG#7p(FXqbZq2pY(XGP!LLM~Y!s>fcJYk-x_bE?i~kb*dOa!Y78 zc~KeOgtpzS;bTe0|NQ|n8sRHTdN=m7{oGE1x_om@x`kU;vhN<(N+NjqijwK&8u4di zvsZjdlSC2jIBuzjR(O7+>$YET!idXp?qx>|9p0tk#J>?TeY%7}>OC{x8>|@>*f~VK zKHbOHvIfmZyjOqky0nSA8VGQuJKY{Zw>IRIWfd8frxb+?#(ax%yJMUD^inC2!&h6_ z8E>{2=F>g5tXjOar+xgsKAyaS;iAj)P8jxhaKe*>>*Ld?7FV1fD`#xvqlv`jy386j6@BQjZkK2jo@LHo3m>YxESImD%;BT4!JL79$B8X7lCp+mToepV>2lbw z`K&4@1zluqAPg~cJdon@;xr)8f*7x~9`7~q@!TbJej!+-P=#feou<^!5=M0-^`>kf zIg0PrpHDyvB0b1P!LTF?*X$FBj(Kik&})cEcOaW!g~v#VkLl0A5pARKLYbMKq7#;_A^IZ)nY&Y6U3>)5 z`9}(Iop`WL+3=NgGX+17w2nX`bLn7{zw}jMmxog0A4vlCGtxn`2mLY!XLUv9Ji~CI z1Y0xn>dY2y(IL#^JNyt(Ky%W7xh}uY<1XT-W6m47iKEOu?mpO8gM{Vg9!@jy!%`{Z zmNQY1bM~@lQ{4c&K+bsO{@vc2vd}iLUkq%pr|%1#+D!VRJ|lI5Q(n9z9-{%z%b`O3 zJI<%5gf#N6Q((8ADo9r{)ueK#>bYhm2dA;*2IZAk67pZ88?-;H9=uD=mJqv_6F7LNq1^r~li^CH6e!r|&H`GB z*@vlts9A&FiOlQa(&S%=ocSITi1fXXd|~I38L{M(Hthik$R0Tz|XRr0QgYH=w-s-i2utsqnJ9a``zoJp=QUnUg2!_(|U5%vH0`~ zlYs*h6!^+bI6tin9rvGDZPaPyZ!wvo@cb->2N2Bds;Pb5w%=5WEj5>9%uNr zX}dOL@#dBVLzA>ViAr4n-S7`L5vc^SQK^v=qBK3mK4U-?TN+L&ISzJVo9Du0H7Lu1 zc9A-O4-yAK`LbG-K0;3xzg6Z?baqr2;RH!%O1}&#R(Q%6w!t<(G+wi_+q#tSLAFw6 z%6_BJjT7NyCQVNn~g#^{{OoMJqGu_sP@d>8iSDdtHj%2~*7c%Z~(tBoF^w!Ps z;b_?&nIaFdWL~p_Kz%CBm;+~@HDeS+Hw4L?(c*fk@@50PA%7y|re|$&n{I8l@!P{~ z68j8hoZ0uMWxkz#VFjO9;yL6>^(JC6z0a6Ry=irWB0KwMo$e$cqVmLOSkX7-MiZ6a zj0!zCZnM3%6`@Q!CK#@ef+lT9zuA2&HPipVCATx#Mw&i=f!TZuZET6@*^m}y11Lq} zB|{~qWFub?9*-0|K6qR>x8ec!S*~H|`7wIsfo$p94lLX7*H2Q;K+6`D1&; z8JvgZB(w}?FzaZ{iKsR+r0zZsQg8smJjafuz_=L)^byZ!ITy%=T1+ct&U|icZ=EG? z;)HYD{$L?}y=((5)l%Ub!_NDA+6?epe708XH?t}-grVWJZl2xn=er|awucrDx@Am?|@*{PSR|-M2r8bA#P9NmgR+x11hR?`(0Iz<5IL~g+S&R0Vs!>$O{k%O= zr_Tj=?QgX^s&%>Rdcw=j@qzI;1C}>(W0IN46SH0E$qTme(wPz_qnAU)wwn|SKENs! z;s-HdBCc4eJ%0d46W)P8)_TY6O9-o2X1^R`IQtr380*z>0#Of7nKw4{jIWGi1waddLn(`fP5k73-N#u2(QN zcKB!7`$w@AQJDsk+%wJ6wM~9^uaUxivaZS9$nl@exP=V7t!&&hwctG7`Qb7TqwEEa z`6koef1HLWChFmY`_a#FkKqjtKd}9;ETFiZuxz2OWbDwkH zw|c7iJyDoBljGoWS%6a4K&<~bsCd+vHche%d30oXQP;t&JgJU zqWw6}89gy87Bo%4ge(kIp&Vzor+!#AIm|E+(?WN1%jkF$x@$G0or9mkU8|lrLFSiB zYl8Eg39uUqMDI*Rb^-Xu{q!J(*18{Mg1($Idf}uqaq?BSe_|RrD=oCKO7%DD{g2FU zzQ;d{(x2Q4C24Ekl(?b9FB8J=idVUjm}c)< zQa<~nuDUG<*F9>j^m83VK2qipPPeDLh;Zgm(K92XwK_^6uLwP7$+we0sUH4UaShk} z3B;cbH2-1KAD%c4jx1l?^RjI)x3~Gp#KtA3r;2RGxx}=qCwku~m`yH;r_H2FD4U#d zg4nzTIq!Fe7;>}l(*G{j9M%dR7DSo+^12avq~r91p0JfGJ%876-;`HI0{cT!jyxFZ z(f4>cb0=8wqG7rt#n^7V#!(mr3n;G`VoFyGCuvB>1Jg&Mg?(uGtlew>pU+ zl1JHLZ|W4`o?~Nw!U~j8!$rjRgc4vUXN>3A8a>UPS|P{BfB8h#k2GtExX=gu-sMdoC12!ysf{Xm`d=-%T&7t zUl4%})>;QytwZeDbY@l|4Fs{W;&+~lLw!z^kmys6Rp=;%JBa?13K4!zF zS8h~1LF%m_97mXyXNR&5fmOCd2U2^}dsC3+kb_<3>nCx{nVHePINkq>^J*JFCS)gj zCx{^$@rLl)Vgj^?<!Ml25Av(QD2>AOYaV2$JkBw_UjM}BKSDl;fgN^ z*vhFz%!`S!wOXg?u)%~Vxp(FRx=~dbzc{~=K}7Pn4ZG;cmgKQqXNzE@WfEBBD`fKE zQ72;T(1?9Q6>ax5_+H06!~*fiU7fC5k|$Z4DMomM*1t2I(klrsw%;{SW{bqJ4btLxGO5CNasQT#@~^$}pvv3;dj z{vBS6HDY_jWE{1#T&&b-e!Zjc(me5x3-W}n=;dxpkbUw-L>C;^AKQ-Pp@vrhLJq7CK zM_1?7c=_>j_n)fdJ~?u=gMJ(roA;bO-6HGFEcrNF|8cI>$IM~|^vq}WVWvIf!{JA0 zuMuQnQFdX;KGV4$EOgp?IdDO%xM$5x@k-j=&+m$l3+S!)pP8+cD(ii*r7~qBoc0~* zK+!AwvbV5f@oCrX(_Y}GpC5hnhh;v-pUoA$_N!j*PyeSyi?X+hCKIpDZmBqZ7g*T1 z^i<_-&fc$25FH)uKOgp5dBTEWXPD4{jmA%IEUp0-a+<{*v{0IpR$1{$K3w}xt0zjw zclj#R8`o7$@cp1d-W6lr7xO%0N=wd3u_A)&5Pxb} zTW&$x=VK#)iQHSmQP!dN~??%dz6AUz6L@N$W60bLw4U&{uEHNt$N*Va@f zJceL;(Qk4JfGV#L&O@*>)+W*m)XNJ&>qcTC<7-vud!dc6VZHU)6563?0rlI4Q%U1d z;VsBS4dDu??>z+jhhb9<=NxYHg*T*=l+T^W%g$E~akx$s5QfDoWZZ1qh(lyNZ^FiB zLr)Ul3R==+tgBCTE5sm;oGNn0YreVHi2{fdq2*WpBLjU{PQeRJ&HVl=NsXXgs`f8X2CnD7sW+x@R%6t%qtIDyr1u`1}T(<kwNFf3xMkR+#-qTzpg8cZSTG%R%(B~>n`ba zQs}z3CKbkeyI7svw)X*`O1Q$Rjup%B#D%Z+=QaQs-NwM5)$lbU+l%{XnPKtz&?N!3{NJ&xICzjb+W}C(L@nrU9Rja4Kz{BG&Og~@pX`RIy3LC zieE{5+R(2`4v;2p`b7alkq92?du?}xQ-+ar>=IpdKPYP`={NwQ&r^BpJ?&0m=B-=n zn$dF27v#FgOGPt4QtPikxm{^-nyzq0a$~yZGpc|`ya*AROvylD5I3)Y7p7=wd4(14 zY5djB3P(&g`1icwB+Ule?Yj@V-`ic(Td%#aGc&W;XmUnQoF+E#=mmyyWimMIoeyE2BUv$oY-{@$_v|Zm$;@?hBW~JADrzJ;j zs3I7cBB-~1rwoJ=1FMzL=MSht*nV_Sx55ESBIQ= zZlf``AJQ9;Ih^H^S+fn6m*k_nb>JsxaQgz>5mmDcankaJu3mk>6hU42W`X|sfRd2^ zR2Q=1CbkMEuVqbTK)89gK$cKf9dau2H^CXa$^u<*`1n1lfi_i1sJp5Xy>U5TRPNmRz3AVcx|QS| z4t2}~(ykH~Q>9TC^8eCdgq0a7x}|kzH@Du)mUz14OzDoO-e{b9UzlVzK`Kl3W};NK z`d6mC5sP1oQ?)71*Gze@0gSk4{XhzpyqQVQrhPLynWuF=K=YP9OIV{1RocnNqiFt- zWldNK_lKF9vYhSpjC3*v!VXP^HS!2W?ffSrR}D4CML+N-;#3VfWr7I5Tfsb0hgr)< zdfL{#irTn$zlc;NAFA66d=L^al48JlAP>QlP>JagTPQ5Wj*@x-oLY?eCqJ&$) zhVRr?U8P^${Zj1D#e0}hV|h(-wsdlt&>oCgK^1u@sp{S&2J*YqdT5^2|1h*Y|8mXi z#3!XK8%dJ#>XDc1s|FUWia;^cO%-g)(fp+M$s4q2`)kv3N6owP`jV}#chBe(<|57f z*^PCfs}U{-Eu#s65dnN^XD0`*I-M`0z9y`{yN7T-!~q9&m-{s03^o#Lt!?b$s@Dl? zS`Tg!R{CnxKRj+t=m?V>&^aA(Ohn(Duvek^#_;;($<&&WG@M$D@mZioz{zKOK%#P3P>S;O2~)u^>+y-B-( z49bZ+-P}iFJnE)CVJ^~8K60)2as%ktbs-*$Qt~k*CL4J<+F-k%F21v$)~El2`(h55 zx-)dfI7*T(XLS68Mth&$R&<^%?g94_gKV(SZD{=Pp?qD8l~I&0Z5n5aI`aKgk0h$c zjz3D7ovAcWh{_6to=;?3kI9{oqMw_R7JJh4@oQ?sO&Zb{tCPa(66*fKea15P2}Z)O z>c3p*iMrF@Nw1oJU{G>SmY6RMmF#q({KV3lXtkmq&U9*ia-V<7YS^HB=8xhimb54i zB#Ymg$UCgv`*tB>VEPWGWxnTyNxkp26@BW7sq5 z@k|lN3&A|twk({>TcG{lcfF$NibLGtzG*nvA39D zwS^nG*KL6EF^N#4=_U@tBLkWkg-l>C_4(O-AkRzYl9s*M%ee_UwtYPHc&EDk_q)Bv zZYg|ywysW0Oo|m>JX+jEc5}JDwNOcHPj!r-7QMBEv?P|MO5HZ)iS2xibGmxR>(;5B znEB80m%}qu*o_%M*6KMfV#>*r_ZQyr>nNtyOBlV9gqkRaiF@r@8nsD+)kkk*YYONJ zBhOG+kpRSe<0t6Z=q&flWdU8BRIwq0qvTpI`d=q7=#zTxTTWf9t^W6c4hl0A9jI_9 z@(d`qdxxXOwHsa3-pALp*g}h|ev+8Dq(k`N**ZFrzL^LWw{&(VbABlzq2We-P4yo< z!91*n3?&XJuM2DtPxk)6SB2ki^!DIiGKAEPUSdHQB@rek$a!^^TIT~FBYy-b|tQw z_?W4UYXnYtG?qSzYE0+gZVI{svBcz!o1c8oFYrC^$h5YgS8;m63;6d<`e)){T4k$P zUiq^!X_*j9qdDqTHKipH7NwU=V`aq7l(Zxw_zAcG{;Gl6W9d%jgwXejZNfD#&*+#t ze^$>HD`g~qo#|7s)<>BjrC+eGQ&qy(xvhp4`IZ~3^zK~*dr$R>^)@__OvmIIg@@5e zGbH`nT#>{8dIC?tYf#Ivne<>tYAP<3$gczH^;AKy_-!QugA5MK@slxMx7bl7HnuQUV9tt4!Q zJ_SG+q65BZFzJp~>a@oBFlliPQ{~&X$+?}KkKWEKEsvCOBOU^Twy{taX`C85E-m&> z<-g>j#|OO~KCrPX|8_Q9zTM6A6W?sqblmXe=Icv@>NZ*$nqX*>IV`@c@N}|43@a%L zTx{TBDkKM9boTb6@%?uv!GfOpH+=zl`OgZcav!0TdOfE{#&A@T|CU5czXcvhn4#yq zORG*zgkhv$+R#MP0Ym97xrsGZ0_ zb^`Te%Bpgmjj(iRYCmcVP}&JuzXZ^o0sj}kc)gN#zx%Lz#rX`RZ^3{(rnon2{s6$Z zOSc;J`S{Ui0oqMgxO!Buc80s}`hru3nCdena;{873K3!Gs@K{5&v)9;x_9#uQ{iA- zp}_@RoT|4?gHNZ@)<;prw;pg0TJFC33YkVBftCc2dpJbgwHsl#0M8+ArILPAs^Eqs zkXtuuUCa&u^D-=Kp$hUPl7d8N90g~U14OieXhQ}Kp3c-<7o>Xf^BRf}Qi#$pDw1I; zV4Y@mfKq(0fM%pgXqzm}f9xzR|0P|&Z2@fVBk%$hE;>%&Gr!1l88QSJd zS*;xDA&SrhU3Z=W&!Iqtdo+P0$)>|hLZZYvbQvG%M3VfVuK*Ig%;anwBH*umK=bLa zOf9=`oe-+j$bfDz6}eI?$t>@D_f993DeJ{NHbGZOIWy%cp#-CH@Vhn0zJ@Q+j0(WV z$f-h767bwg->-$UO?iIyef;V4$s8tr$YIyxy~0f9Vi`n1vRuEErjSEZNCByK=6nAI zFZK5bmi3YG-JCceE|})>qDOO)8?;%?VGTWv95}sis$UKIcWK-;02?nkdXo7OfU*!D zqkDJx7?t)aq|jV0gYccs2`Um~SWp(OTcNK<2`lF(e%m*4;B{se+uO`Bn`Dqm7n#SY z4Kca<@(9@cg*d9jrNdtQi!tgmx{K4QC3?aj0Niz499`_?Z1hPxl#OR8uL^#cyR30Ss;y zqM*V+*z7li5gE;%HjMyt?X>-|axo5Fn25MsdYH>gJ?c z-6}kuOW)afmML}tqi`;`?_j7~MkbIUBSOs^*OEbBpHF|bU1C(>m$~M?5X{l#3BEYQ zOyC&eWE_INkx@Uo9GvUv4ecLo9a1mU&!Um(3oX#`5wPOSfTOabW+}yBqWApqRfS+P z9Xof?R3ae;Ece( zbvcjT2=QASEVHjp$BG2azrV|qYq>qCHExKcSIGrhMtpi*dGqpy#oj30MI@Dj-E-on z;|%b&-R(TYJDE8Z!CNA4EIoV~-LEGR>rNe2nSaN3roc^e1xAcFiLZFmn zJaY){npW!SnPg&4p~v4DcJ@#$M)e71dLzBrA>Di&0>NLIBuv@w*6a71-HX~Ce~$F( zWQMrP(R-Yq;6Z z2Q&BYtrouPRq~KGl<9}>i|dtka~=%qVI{2l`Q(N$Vv-gF5Bd!Yc`IaqlUw@cIyWy~ z_!s||qOH$pL(eP!W*>p-oxCDy3LTXh;af*ydP|dX)nQHIC*^(D^@YVV#$b}IUP74) zuYRUxb@U=S#!!8EHmk}u|921JX*%^Gir<`TG5GZ`B>w~nB?%Poo7Y<5mhB(YJvh8t zr~#24rW`+TV!asP9$7WWA?Z8-C4xrKOzH`36745sypw*g&V5YloferP8^|-S!IO|g zBt(Ku_b1dmJ~w-tjWJM&F?n z?dq5R+2}*~tYrNDGTi=avla**zUxLe`AU)Me3Nma|6aD`Vf%fLfqNU{p`yRMR_b$v)tLutfK3hH$pD<>LRR~-}dS;KZG2i3;lFL3Rsr{R<{pxJR|YeqtJ7# zMt&Ch)W!YvMlRTP5^nBeR50UR-)mUh3$bPErqJH~Rzq{ibvkep_?s|7htY%-k}F2= z?7Lok3S2z3*WjQ>pGi+UE@Kn`cI59vD5vTTRsU`s+HMK&dol53jPBmyfZnzIh5lmT zL9hBc;i%p(rTF1_|A1 zCfY3Hy63*RcgrrItk}9_5dKAv&)jR1QOjc)3Pw4>9N#Dk*qUP|6S@UBySNFyej!3# zvtAZhYEEILN+|!g!b1@0HyKH%cNNW6aXF)0w0Juv{Ww`x%KKybHNP(r&PyMk#l6 z^s0AG*{wHhHWWHWSgFN=1#C~1qUiqRc<+_SrDR5B(yE{x==z^q_(C2de1ooZv;>`S0 zDA>6Ah*AKfwRby9tF4D5pQUBh!rqdVw<$*J1$Qfu^WD3nZu#xGT{(k>w>>`r`N-eq zJ892*ubu=g=|y&j<YZ9LubS%=-0*$BN^D$i@GZgiyr}eJ>6Vo{Vt1WV2LjdRA zUOcn=Pds2gMAO;$+s?7Qyc#ND2E58Uu=yI5gCDdaafhb8DlPn4yCi=QBAW$2hz~i>z=qSbDDn6mx7WG9kK`j$%toTY=dzu?w@y=i zK<_A@+FPxnz9pm-nFH_Se;IKGVGjQrmHY8rHRg@te=-o2*bC=6Fr{I6=PcQ%)ALNu zVAHgkP0o`lPoMv6qkS<5?m-0fa|TpgeT})>>@@Rm-HCfI0chD_g#{~Xl7F(qYl)P%6axy4i*ftfCT+wE&W?szG&pU6+e4N1LI2Owm##yUx=lyrREptS zhkl2C`zK<*ByT)^VnD<#p348gdEDintYJHN@_AxI zzLUn$lPd45h}0PVXmDY*gI)79?~D!|o&kB*4XH2+Q%Z<4Ph?xRCx5boaQCd-;um?d znMIDvK_@~@rTqsB zuK0f#eGc2I6yS?KwP+8p0ZiX%w8F$PN@n(VOudWrh zxek+IE~RJnS9tYTCDlAvAaU!)g_b8zJNFIZ0vgQns!s{0S0$Y(^nH?`I(s5pOf@>A zDxxNp52ZxMn~#U@zZ%xm8!7P1G#V*`n|`+>Hi=oR8w5kWXZlD?u?Dlrsgw5o*6-Zj zn8zb5oJ3ZIF03sE@t@R}95%0Qo|UW?kmJp5F;PppGi`%(hU8xheV|n7alix@IJR?~ zQ%ntLPIq}i!`fIx@!m3DjPY!?HsMv%m!g2btZWV~qusvQOM-zStD@(}!vx;t>V2D8&NoGQ2IQShm9I*` zb8SBiRh^^CCij#<@@*7Jv+wB;srB1hA~6UlnS1-`Rf%@P+v%Y%Fi{&IFE+O67lSWj&9mQ8j;-K8l3vvB42PE2}S)2_REEudgP{BA=tr_#f^Y4-ib z0mUy5TBeVIw34Sxp*$wdWf|h$8ls^5sC&_U`MQAFfo2;&TWi?-{9=8ClCBO4?cY^4 zkB(eZ7wK(x{A1x2uFNMWO$=Fuc?Q~sKCH}GseD*9C$lFl)@nIR@;ccwds|P0Cib2g*XBn0x>N4kR$yNjEHEaad-9Iy4Yrn9_rV_mH9k(A9;^QL`Jv-uGU#epTU~UBmNH?q^oW3(M2s+e^#x6hX8$?e*_7uNN8Y9)V zqnmq+pC`P<7Bh;=P)HGggeTVW6%`#JaL)N>(dlN9>Zhi(ZtE@=kE_<;t0bKyQDJCn zSWTm3bwVS2J!hF)mJ^g++(0zRp{fMDJM-f-j`yhwraSe0gGJu;Nsani7J$K(n&9 zmZsYqM#!xqkjAej(p?@>tUo87z8@L&a=yS{Y%e&&V9WPvITDB>+c@h@tMjC!n86gD zb(<^DN_O8x2*`(7rK~OHC3H%g)IFohHM- z3@EoJ`heUUQwrpezXvyh`SXSuPKm8GN*djpxVwhy7Tw<;7~}sTFFXMjP}%9#+dP72 zA>H_zaJb$pQ@L0G&A7UDm2}n@q&XEP&K-v0dl9X1f!trQ(>Q=QY&UxzHP9=j8S_f( zAnBoK9L=tree#}+HtJ$#KV~O!P}Y!nHCdUTLl>X+Y%Mx(#e9|9)ihXeIXW-;fwri1 z!)M`;m^+D`{`@~~-pp#=9*-{o-}-{TA;DLIy~L@AZ!8W>p4u6oTGU9?@rDZZE;?&I zBn#lCkJXD0&%Bk(p4*cfHPL8gH$9eSdB_Hucw4O2deVlalD#7jr$%hA$2$XFg=DH z`Y$Fd;btL^f{p2Y<~~I_I4w)1Oj72(ot5FHZ~lva$Da(!4(hGh=D}~8b4J);jH-O) z^7WuEe|a}D*xk7m04cFO92~nYO?PJ2S`Q+7#9x$%hQI9eemmATtSw2`8t>Q zqwD<%c4gu^B%9m^WgSUa(g4hYPu^nf?%85Gb~$*b{3Q^6Zwn{-IT)r?=8lSP(I$}! z=vsZIsM1rl1g_{*UE>OeSV}MdsHt`0D-7yd%RQNPJpAE2CeN9&jFnwIfnIUSjTzq* z`#b~_N7SL^f`LMdXf3@?$q|z>+UWU&CyZXnFKdUv-JAJrb~9M`;6%^hrdgFfzBL}FBDqGbYlvD56yo?hoI z;S#!NIUxU_r)g`LKnOyjTAHTZY3&GVi=_a?a59)wKiC%p$_h z@D=rHP$}I>S=?U-Rdr`Ajw%Wre6APeiw?~*F#aYysJMQ7*tbqvbmQ);=R?(}f4XoB zEm>zY&17*KPCeE$6}BKWCuu~N(u`%Mo=C5stUX`4ETroT;(goxyr@K4G>_PG=dE+@ zZCB$v=?Ja#bP7!VEvNXV@SwUSz2FGE$2Q6v;jp(0#H^RKzP0b?9IB^&I2XJ1p*^*@ z$`=(AJoDm%YK9y(2+n36YkyeNNPU9_q0DptOqpUYS3ktwad~ibwDwrz>dQ_b^aEe) zyz=(j@3WmXjLVz0)@)lH8KX|A*~1RM6DQb@{z)p#Tkxw^uSVizui4L*vS2JCpSdsZ zzZKY#@W40)t_|d|mW75jLc|_JZJnOAWI#@iD*g8J3P2BiT#~K@{Zo!ya;E&o-8{dS>}V_r5-Dm>X5!E|EW;k@0*Tu zWK>8fp9mca#x%p4j@z;AQtEjxvbp6ZWPal7N|#ValQhCM#~-!;MoRrBlUE+dJr*T= zpNKK9=35}!!rmyoSQa{jstfZpr9bsBwQW?w?#J zajYzj3(G7y2IN6vBo4$lV2xISDz4fCW(8ohW(kQCAQoK6J`QtM1f*A-r|7tSW`V$ zdHFcv$4TO$^pxo&pN2@Bu~8iNUrh@iSCY}Hz*e_-BXFiYO3vVD=Tyt&Jsu?V`3rm0 zIJa0%d#Xr=-{OgrMgFc$b=>Ubmf71{C-Pk_?z^6NGifubY}?v=qHEWnsCc$V%iQX= z9sK0%Y}peqON^XJN~3z>&dPs+VZVGPxYR(X?3;Vb9L5sbBlNL zY;{u-u=mkE6&Qair1ez9-l=G9_a@#`@vZKc_S~u39%=C&S*;$qdme?_o+a^~Wv!l- zd!E(WUWfJZUUyr)9`1QHX`gP5KmDxrbl2YLZf)=Wc<

@6kQ)32mQu@jkPyJ|Fjd z7PZf;#-G_}J@a+%%(nK~z4)`gTF?I7I}6kyLlejxZDj7BWQ>llK!UGGo3GeUUr8N5 z*#y7iZGI|0kKhe|?F4_lHh-g^{-!zs76}11Z2|T_1DtgN-4X&l+X8)l2Kwp*1ttWA zv;{@{42sq{7oTu0sqNgQpXaDL!D**FpHaA8u(+~yoQtMsuTQ&X{|qiq;HtjP<*gm+ z>=%0XUFa{@u#C1a`Mr?B>!FyEFs|%yXHfX)^lW3B+i*fey>`Sc{>X?nd1%MYMsDK$!VB+~&rjsK8zI%%F?NmT1@q9E3Vz(N_{T~SA&L#9T zN(~42ecjcO4Ex!p^y6pDIZBKeuZOHqeAiC&bH8}21m`4aMja*cYXVo4kefM^=Pe6z zj~w`t%oPKIBOW9EnT8u!a=yjEuj_JG5FK-OAr;Idu?t)e$Xr?>$(58u?NknPM$!!- zwdMkjD01>7GwGR-TRky(k_ahydfb7PQYLgscR>I8QfycWN6S-=&7z|ZU3_kKrBXMV zlz>1oplAkE?gppX8pMGCM37@Xxhq{g1%XfiFbY+Bh3f$mAijvi|JX9xoOr{RTkTlxLR$#u3pF z)_IZI)Jgyl&E!yJrA25X#F<s$pCz%goWSmHGS$$SGCyafPU zqg*{dw z+a62ilWIEo`%<;OQSo(%p+ZCE7KKAz^}q+ovFGOw03mDe;s zp1xDYY}L~bpCpAn*Khlid_Q9Dj=;q{&(r=ZiCmGm!oOuL6XtDde_U&HZaY7R1|O4+ zB7?<=h2@E4e#!GR z)?QDYMurzNIkj|(?g|4DjHtuYIPeGo(QuvPpTSG|60Dfvb~&l>uT+ts8%ND=1LO35 z`NH1G=f|TCWd414ATirzpbO~e;e0>@9P8#nQ>6bH6g{}mdnvHLUni=hH0#SBeZiF0 zZLi0V^`0IYsCyrDoV(jCO2%~Jdf;^}A|<_H9VX+a2c@_D2?T}P<{Y%-A#e%;W{BXd zXuisNsYjFk{Xyy9>GO^_K;Aw_)&*cEx#h#}(2}E+eg>#vzx-gJ(14ZoFjPqNuHQM$ z!Q0dS-5^o-0D23HJQTIR+&Ol^n`5Cuo9r{D#QSp30Fg>W{GPdGbJHK?J^rL_+~}lA zMv8hVqg%qTN8bB7>KEe>dNj>Wfj=NVU5!Vyn2PQ*Q1eXgAtCtwjj@+RfESVH6oE&u z8%XJ(#R9;bM0z0;h$kZfNnA((*oy^Z8cN_$daI(+B?SS`>0GuRM}RxP(NI zU$>qEa8hn6iG#7Ys0$u``KJI7DmatL5yU{wlaKNoEXd&aaeYOd0Yp+*7#6@%==N(e zK*4n2*?-J0mD~WmaI4FoEO3{c(>M?ez}&N?(+mLUMjf2OjbZ>BC|t_V7S!f~<^Ka5 zdjC7h#%pDMi(kcnf=sy6TlooqW2^`@2}nU_%X{C2$z7h+0Ql#@gppE&LmYJQr6kHrT$#-r ztN;eSa5~^9<`SX`8=puVuc1;@y#Gnw)eB3cz82UbBd zHAe^{&Lt&`quHEf#C@6Tx~ltlp)2Lj@4sA$OPmo0-$Evf%?FTJXTUA&c<@82VLqpa z?<-kAy}?piow1m49T?heypRLL3 zeUjI??*!fAQS|4KDTZAcS4irg@uI~Jwv|*AqKjzV9%UJl5dLe}-1e%~z4Q6TlJxN7bzBtsR)RaD;$%_STW{X}DY17K(BFcc@g=q6~E z^#W{O0q9idcV_Btf)5N!C>uh>*gqQz{iZ^jFF%cFoW*|8F3sR0SZBJY&{}2~1(?P0 z0TFAIJT)RYrwki#_xRmGDLoH$A(Rzt*b*IISx@1iA@Bk|pD;b9u<)OWJyNyQ4R5KT zOPEjCtyU`$$p}ujK0tZe-DBZq(beA4qj!T2KSRTr!k-*1R@g%sW**&^C1qp2=_w~M z3>8@GFN){|JLGnHqj5_D40>j3s_2Zj`Teh-NbB`P!<={Fb1=fCVzR6awW~OMoLKCz;>5^|6u<96|SdBn-L(*c` zw6#2ZK9;i6=twd*q*c__&Ppi`W-L_cu3{(bcTZ=Nd=PHm@~>tOhIG&%)K;{Yh8WJRquTs z)LU(UnK+L^;T@lo9QgFk<^RgIorcs6_>pQ4O|0JM-A*Vw{Ng)_H5QJ&w+t2zzYM3G@^$-7YHQUR18EA8|u zr$VpN6gX0*_}(F&3IBHyE8;?@u%K!&S&3N5>>F?}KhVlFks>5KL2GYX%xbFUL=o9m z0+!Jj8qw)kC%YBkx}xko0|dEf1JZNsb;B8bGZ1yahmz>CNdPJi(p{sAtTwv~W=Z1! zz!TQ134cPC_$KB1L7v+Z!b9M%b^dkQd6EFTMEWG2W%?o_3h70r@&7Z0y*oIML?%;^ zTE)-8Lu1P?-UUmvbfc~`j!1Miq>2_d8oaRP2+48cr1FzZIknAr5X2tygmI7*z6U7k znF-)zfnjK(q_08uTTUk8fP)AD4^f41eg=M?qpAA z0zr@;-FOfVv`S@a8-+;`C}8j|F&&1>1l%wLr~K@JJW;L#Nb~}1lg!P;ldAzy7@~u) zuZXHO{0yE#J!%t=nr$4s=;Wp#g8dv4o*;=}cS{|kfH4*00MH?kc`8YCR1hNRB`!v^ z76bIDGlFdi9+}_{nFUXq>QjDovKFt#C1pg&i1#kiq7kA1cvKFEay1KxWuPG;yYU(f z5UPXqSP+e?gGBW-sj}0x#hIOj52FBWOCX6A@)b7#HbaK}c=W|PC@S#*fEPghk{loM z`uI1j;=OrLoG&6`ryI;K<%wXD<^AV*k~o;Yz!g9ydXC1M{Ok1wL9(wGxnOhkJ?(=- z47h(d8~_;y;BRH(A*BHa<}dQ?$q%3)5~FOsm2rXtYkE*f zTS`s`0M=XaDyobQl-*r1T=$$i7$b{#p}L>{K^ALjPc5g)KRj^F(V~k<--etiO1VWkB z=aJPBjov@I9Y zVVy89<9G;q7Ih8K2!!!RFnc+iC`cv_Uiy&u zDNWMwB-wF{1k*{00XyM%gxe_yjYFqduH9yggg~EH!nsh_J2!#oh)MU4fRDuqg{tUn z_e)o<4FD7Xpse+UulJT7TgJWNo_fYzUZ9$0+>!Z0xS{Qj1!2Np_`uvcX5dK7tZYS@Dk2JNl%G9T?zF3X$1by z5|rak)t6q;MnGo58&0^jTik7Fkgwp6cXl`8ng1lyM5DqnV2@Y;0yF+?zHDadvGJKG z08|d=J9;!OB=m=H>8^XLJ-YT0U-?K*$M9H~o|=~NUfH^ZLCZu>?MAwsPqcRI`n8sF zDj#SLCOS^6X%kVwDOijjLY4T9u2THaEM=Tkif|*wBH?T#-Xx6;33H?emc+u!vUy;#u_;Ygl86wlMoMmDToMH!%7%%swKehaSAyaPdm$H#!L)G% zm-W#b@Gu?%PZ;r~#AEn&|3}h&#wGo|eE?^Jii%rYfqRErbD_8=?vW+V+~USnxWK(v zYUR#VYN=US;w7rYxjyf~Y<9YADE_1}JeCib zWHg@$ydhwwX}A6s-obB(VMtuKWgIo^7Knp|&O@!3ZsQct;5S4Zu}I8cUl#>gpE7JA zz(kple+1|G70`52T+S-!$UI>4*uj(&XOFY)Yzy|@6M-t%RC=RR|TZ%zkRsin6hlqs$kp*s&@;i2l^?Oz^GwqiJ*< z_21{0-vO5pGr5<;xb>u_Dy&N=*(#gHg{_&MbFF@Cy6uGId(EY zbwB;90a>ow1#W?PEfePZRr;p2lCH$~Dr{`&GZ^%lkawfjOPSnE zZd2)WVAj;R3-?}tyd@<;C^S2scS6gNn+ztr6LQ8uc<~TMM!l>&LbUOWQxf25Mm}%` z!ilnXJ47gkWFZctQ3{FiCS`Z5GA0D?r0T;Jq4YXN~DMSoE6~Lb1E3pW8(Fq4_6Cv8*ThmU4z%zb1`e_Q~#$z((3IaZO zs1DU%bt^-7>k^`?x&&45dI@`f($QHqO&w0a^M)r&@`+82kC3YWSjU}Z?5=wCW~q)9`5`PLjo*Xb3WN9`R% z1<9|8o_;)hPHm^V-xlC+pHI_E)IW#iCYC5oSaggIkj_AP^FO8vr`rjETWs zOwMK*R$a`wm38rlYl$(?-6vPVnJ9*&0^&Xb)S$plg(7`#*mW%t-`U0?_|G-oT|Y$;e6f2s+6SxhU=ObR0E zE&m$E|6xTYP*Ku`*lZBf9G}tqnTPjbb!z1E#`^=ME$^XTdU1BQuC_w$&oWs9LF7}V zntJcUI{fNS*fH&y(hmD%?(Ko#|AtQ35DnYjnK|%_-A`@{oG1B^!8OkuPKyAH6%4lnGk=|5?TNeCxgG0x|h7))nl{pUw_|^wxxQB)sF7T&kdqd{+ z8l{HX3iMn{#Vp(I{M+#<90#fbJi{%L#TWp(f_93R1z%++(}GQ?Ic`4$UkC=lF)n8k z1}IIzrg*3W24SjwTtRs#34j=@zDRg%-RWCOcql{3G298ljdpV&i=udM>rt}0K0xaQ z>2iz&R*HV8r1vE$P~lC091a{l6ztA~k-C+%gIaC`^X5~qrhP0ZQ2mrS;W}>XV&?eh zN%`SU)8T{ea?u!IB&zqjcfyY!9uE`&;qAuQo%?m7iLX=g{2oHo3QD7>&^W)*PujM- z$sm4w;gfeTc%?YXx!0%?{@2u7~ol4bj5B4p1E=B%0!!p*M+inNH;xP?J6X9fEAkXypnUWE-JtH#aOJwV&YdJ{|2G4INp(VAe>+Ytr zWp~3tAoz&U2V-K|8Mb#qtCSKTD(xTpy&%RlQ)Ws?pGDTg7^qxG>g2sk$=D+KIOK+$ zzUM??-2JH8lu)1ZM)>{!e!Jw6^9BzIXaGVKh2gt4nLg&p`cv<_o6FAN52F$Jw$R)8 z0OXO7b0&}$066$F1>B4m>bWFsswql>`RwajD^m$=b9BL)HIe`!|z*dr7*Xk~iVtvyRe-ma%jpG>-esTVK}Y_=Q>a}83@BB2P6O5UZP=8%XhMR3ncA{jqU6L{^K0t0Ry zpZ{HvaceRx0q9qvE(u=POd(|zQGt(}#wrQV4>i9nfU(CB+4mq~d5l7w8p9&?EgsUqLjDBOs(3X2jWh1EJqjvHDa;dl2aFWw@!u zj*k)o=?Ie;03fd*^l<0-G9XZZEE2an?d+B_Rb4v3jfGXBD_<5j7^K)?$`{9duTdHR>Im?uv__jNl1end+L znk9~G1zRs%Jj_FhUC1rPnZbUH|M+KkTU>ZI)oK@Zg74wg!O}}*IY^YxKNhF7=RDIS zn@vD9aCLrzkjo>Zs{EEl7uB(p!xRaXFtw!z zqbI?g{Gs>{3zk(t3&{m_c>868WRY#uw{1|PW#QvB#;$xdg2xE@H$W2Ov{+k+QwAkx zHK1Y8F$(u!~u8cF`W;#I4f-@_CZ+PxlJ#>@89t--$l!^ zcYv$$O?DT1hCi)ex|#LKOCfW0C?R&UKmb(vZSwI=1h~aAU-gJXon@(h@ryMyPxmyD z1TbYTUs>I(MCCGv(N8uw%WQc-g2~xMqVpo}M`0pB+jhNHOs*O*&BknC?4KxM?8}jj zS+?ZM+=qF`O*2R>P?ZwFg{|#VAy^#u4XOaee55(Ie0QS)bYgPqT_g&%skOmE4EvDycaulWbXh}Cx%4E0&*|dl@sv){aEeg%sfsG z=rMC(0J(M{dVa0Lu^1&;E$GU;+P#sXlKav6Mr10$5r( z6wYH{YGzu%HnHGZ+5Mp-YEYHxYDFlT4weJmX5U&fNUH$b_w};D0Fe|0zSCtmLA(B#jWkaQT zq3k4?8Wvfi?+1gY&?ql}t)3T~%80?w&#?A81jhc$g%8&S0T<;NK*e9@b2$`+fBpUs zD=j&3z=kd?7 zM=~uV5Q?atR;HLB!wNZ`_nW?5n}8~LHmQRTO;MSR5G7reY*$^xIn(zrY-uQl@Fx?M zh=IuPAGcJR#@RcGG;w|)oATNiOVH}Qh*Ismm1*C26xXJRPWC)Im&mLjQGQC^!imj7 zIybzMG$H;O?~RrYKtHJ!o|89W)3Nhonp#a=Aa1}+nVTjZWN~Q+Za5G@EfqAOirZwX zVIeKN9Yo7aA4`OJ>87Mt$i;kDNI?*OgYO#3Txxl*RL-?UK==Jv24u{NH9W?Jd|;a0 z5X5oPY&;7e0u@z_trXqJWaIfDp~Q|w#2J*E)H1A;#CAA>j*~Gng~!W|2<%FMNG>NY z>*`Lm!qeG7Jcx0KlmE9I?8tUpsj%tQz9yA7wpQixOt3bDSrBFyEIBHlZJwf58xxo* z@Jv42dF}?L@@PgRn$`Fe?S3=H6*X>LO6>n6?}uT14l>!Yn#o2!$v2TVbusmXxEd96 zENaTg2z{_gr7c(~t%>rtA!a0JF~#uTTj(>tooi(SlMojb*hX=@b7EI7K_7gG5qUXv zb~Cr99?Dg&H{V!%QtaxUgCV~Cd&y)7h{uby`cw%ZPM{`zt0{>Nt>dIgFkj#SLB_Oh|1 z_$T`XXBQ9uDqKV8RnnNZ>j2)ZgYY)oZ%@(ds=5{+R2L8IB4@^4rh?82XCaCSFD%A> z^_CARJ8?>S-dMp4_Efp`MDV4eZa*BTF>DL_r#s;_Az6L>!M(_{e{9@dN4ecuYKuy^ zmU`xM@bg07)l82xW{$z}Q7(KrD)~w3dY1+ut%%g5gj{t7l6-s1V?k)U&=3Fj! zq`9lqv5HHfCRhE~)J?z$M}cc6p7>wlsIV3?PVLH#0MC|OxqoI>J!5IV_k_ynjTAfE zTe8d3VRVRzdiguXSk50wTG#eTksFv8LAMCCW-;SPJb~*sW$;sbYf*EMk5;1dt6o0G z$4^rB9oL+sxH7(nE_Zu$$UX>Fxyde~krHHl=?P`FHEh^O!%@EG*8T+o(vbD1s*Y4@ zyV7o7u@d2E{k>(eSFWVhZ+~iF^wSE9JFnWhV}$pS;*|rQTD-~R)ytYc6prD)8M~I* zR2;TxR=(Ek_#QKln$wiha)c@N!v5YlNz0HTi`Q-n-piYLYuhug5@V_mW&A6D)$O$m zx@K%i_doo=s1D6Ky|Fv_k8q}R#XhS5Z8uM8sl-VNtZPn;nDFza7D}=!K0#*9l!38+ zv+`3~OO2-1A1!3^7z;m1%8Q>@Te3~o;)CnLC4XXYPweEEP#vTsCT&S?%TIYFUcLFe zw!4CYNu-U(2WOl6=%u!Di;p5#F&QEPH8WNd9I`ZBb@r1JfKVBUMKP8}dz(phbzp^~ zg@P2}vctz?SF8}!W<~f+wbZy#p8Nu(BR@_Oedy2`+8*QnLg~y2hq%Y`H2LNSN=tU- zSMgF>eLP`m)0>CdC zlnXWQ-B9|a&%RxU=RCL5s9_@ajPoChxV;R&;&x)G;?kJ~E(FMshc~+C&spZV!9!J5 zydvzNMPG^%vkcX{KfyU5Cq6t!dP2sEExCm086$v zqJwrSdVTiK=)He`I1h?19<0C(PSRh~x6?Ooq+U7Syi?&=b;OYz@<_AgGiJex%LF8$ z8N;SRDr5^D&Xz6Y$Lqz9^LOCPGuA=62Bb~iD~Jkt)fhI{zmC)^c&MTgF!zGl1J#P! z>=PCl?B=c;ykq4PEm2x|p{tvmxT6`lKzUw52naRc_#R?&6ymc5*W|>E zvqSA(5bC9-!79@u(HH_HOV%tT-#UK7D)xJp>~SO5@dzwXhoAUXshO=!8s`TcAEDJU zRrCh1*&PhCk>TgffJ8rDlxB|XI?jT@7R&36gFq}d=+@=VYTl(2GM>W9_NJ;ywWM0< z7XLfU)}oRmC3{hRY`$yQLd5+s9ue8GM~+)E)J_gp>*-AdNMzoxL<~ zEX#xjerP4K$xE?f;~Qv1=$;+7iW0>fk598qopNK&lRvOYSnQRUMg?P%4k5CZ!|;bF z>C#K64Y}3WJVP-~<#USfK{L=f?TxS1Ck9VgZS40NuTNX>b*@`|ua&OYgr_SR`u=qO zasM}4w2oF$yZxCu=MtJG)_e7ef@*a$7SN1dtRgE=3adH?za%Xi3W#^*MlZ zWB+{Ags2w<*N#)&80K0=K>IxD4v}tLlOW@nl*E+eDe5Os5FAu!%`C8A=g3sR=+|R) zn?*(r>`eU>Qp=}{|E1_%1>eoJ z_4v)Zez`JTf6Djo?2+wglNYP)m(xuzhK~*ByUHgKFm}h8hEi;gsmR2znNZixmi(ZA zKmbsTk1?44yYatU{k3L>_CTa@tv$7-)(l49%d;lWqb~Y?)VRzOYFR6JzpfT3LftF$ z&;sbI==R9fsTxFO*#r$NnpIq$5rK{*(Mz$3D*==p9S+9~b@Had8 z;PX=7WlE-VOKzrmST`ghM`%M0{X#kk=&e8vaK!=e(h#gtunNxNwLi$Eq*QTj6;7LBM7 z3uFwJ1ELs0&rMm+Gk4iw{jtkWaAt_iLk`VZ{7kK|)05Sk`HG+CP;Gaz7jM{o)OO|M zjs^&xqH%C7nQd2#>ytEYOG3R#c&m9B)gK|`BHzJOGby!&Y`{Sq@;YR&8_KJf=q~@w z$O;1=$gy-In%T{}tF&vGV8Ds3zN#*katM3o58okZFf)d&|3-pt3tNoGS+*I87KW}q zIqjVVc5#<`VW0a+Eb@Z~uLwMZ+NXbp9AfF>;xC1|QYxoUy|9Q+VgeB@?iX6Wr_Ia< zH17wVr)ul((t>9=(kFR>=M$gekdRp6qHWK=FcP1i5RC+zx}pDQA1RZ__Z5Vs;xsp$ z+%B-n&sz~=XPAfw8Y#AtiQ=;SN8~SbKSRENn&nle}R%Ibd1&y zWD8MQr;iPp=@_(R4#sVzLQj7UQ_&OxTsa`+kjZ143lP&Gv3fuu%#gZ)@DzrWQo&M*x_2t#x1b55I>X0;s z=AmrrocSK%F;fz}vt~@*m~WM58)uv<_vBcmVSGFg8cxq`IPJy_a4Zho3kG$_%{RQI_)WiW%raM#NMnF^Wv2a$+g-o3OVC{JxSyImqf@de?w1(p`$ae4?$(rN={b1i4l$arLAhc6--}4J- zpb3YiL%ZC~WIk6t&SpR)`**Dluzb5VCj;QuXDME5<-o1Mrut4|ILIfXA7?@%pT{9P zr@VY!!qsLR56%rTXzj^*2HjZX26Zj)B335e$3&F3fG-lNzraW@&c`rDW#M zfy?KZ=qu;fLq53;p5x`nnyxlScu-vlqorwF8#NA+nX<02qBepcO}&BX?4R}m$m;477h;hkn4}gm81<3=ww|a7%5FqZd+r;DdZkJWNh@(9-oHceK_}ZI zFG9o16FY~f59AeQ`N9t9S$ggs6S& zJma2zajs98a2>Mi!V4QKGMkf(dql#?(7gtBRw&BL;a$*Iko``&3mG(j8@~OKwCjiKa z`NHrN!(suueny+EFvoXKPM)M_7Pab^pnY=6#n#EIBXV^iFG~1tfWN9Yuvy+(9>(=z z(6zhVLE%F)%#O1Q?(2%34}aQgX&o2Zkh^29tVUlYAOe}y)NIq`_YUsbuAISy;0QQi`AZxGIAhV-=9y(nXRU{ zS$_Y{wVJYqYs2-+jVA{kn^i;fuN}@j-YKv@SN?VyvA^mU`6F4T-hbk>6rXMXt-QvM@{B=Hqv)d)6Xz@N z5dm3OwHL8o7oDLJir}1AZujN!m-^U$&Pv!+HS2T>=KSFfnIBhvK2C=W#8O)p`r7k%RaLU`?_eHSa3@e-cgQFiJoEfU+H8TIFa&U0g)%>WPxxvppIN`8#hdRT$NXwOgM@w&Btjc`Y}4`h zQ|AI25+PKx_=xn(R(0jiwHK)v8PAfWwk-T~-G=^s6kks-34!xD|E&v3xoy2?tHYFI z&$654|Dh?Dk@7vcQR4JD-kvMWZ0U$ojE`x?ToHM{WKyN8`rZgP@*T~+$Sop$wnTc5 z<+n&bivCOA_r3fM2b4#q;I;u+hP) zEFOMt3F#Lc#pN+d#XKzKiaq)`@ooV@N~kdud(Ft8PY`|8Oq^`tv%Xj!Rpd3 zTMh2%zgNEepXbT@j zo+0_n6m*W{Qjlp?2ik8|gRR2FHk{}35JqW}hhv8LT&MpO0dqg|4=%!5;;WiITrYFy zS_o!nvxe-x`H#e*O$?>>D+FasiHfezUF;F})hUOf{~ zgF%kRI+s#oYaYu!yEgdcaV+(fkW%pR$Q+CD-YFN-d3zXrtFk^HQ;)Cj`GGrmyO4Y7 z!(rqpi?f^wHwHLPIV*zSfRRtdp-=m3qV^ls4KMe9x%UOwpu2xKwWRmy^*_eef5nG+ z>kzv)U(dX;cm9w2cZ> zCjO1O-Gpd`4RPX*qYlr6aJmfLq=g22pDPiG}H7{3POJG+*Kx*Y#)7d7~gAX(y!AZy( zB6`mAY>6&5al!qW%}mX~smOU~F!6Vr@kIsI-N>zSr#8xJUVA$(gbWCuIou-wCH*Cy zuZF*Rx^|Bg91^q7ri3jT{fBe=%@OsNdm-kLj@tEZOm1Xf%tblW6kEZGGc^j?Y8E-l zw^(a_E$Ky{SNr<+Qa4mxK8yXMtZTn3W?cB=GD!c2dOWl^ckYmbwS7&1?#&q}qO3ZH z0|4Oi%nQ4>n}%hr--WS6{8m^zaBfG6u4Pxewkt38mGJ6{eB;yh&Mw= z73=bsBZTX)AvDg4n}o6f&oi01b=qOMmYEO^2^HbVvVnjla*^rs4_^UUag*jQ?J&4g zGlgdTCn$_xHB=-o>Y=V8qTKCitNrF|EBp0x{T87jKf^^%YT6+z8jg3_osJ!3`vRG% zlOEIDWkyCeyUhM`Lj!>G!TBxx(y_#g>OXCE&bhWcR(8k_eW~HoAE76bA3xhs#$x&W z2}Pj4%_#P_i=UQJ+|hIavp9KVuAv>Bdh6=K4!9qPo*m69Nzv*NX>77OhT_ZaM>T%P)hGERMiaf;a4ZNr!^oT&O#6-qM+s&Fed=|dZghZicfb@_d% za&kX37YS8mbJTuW7y3kSEpyoHw&$q_pRl23FFs2B{TI3;;AD~4R%bg@$5k85j}Alh zwkPLwu_Q#tE6>r!a)f;Hm170I(}uTBtTd*4tgMUD#RcJPq^O$X{5OJ9rQ$B+eP4rc(OHQr>+@siOH@UDdRp!7hhpYnYvN zzpFHV=Uj{5{VBoH*cr1AwT8QKw-n+$3S_)9yB5uQ8UI2%E2iSB5_INX&O20M-v_X% zW+6LaOx;V7?VN9Y{%+aC=|AYh$lejo@rjEut9~}OK8dbck}%~`1BRauW>wvHm?CJF zoKH0`&M56`6WNu>50N}{KL0sD!_JS5=?VKU1cC1=yP+uiqoRMbb?N@ir$sRfklIi| zGp{>_{tK&KXNjhq_~xSPu$eB4(5|`*#fOmBPEorZH{D+TSADl+{eV3*SM_keVpW$j zR+_`N#sa58`LiWleii$)RK-{_MY#NgEXN3bB1&*>mDRsfA&&2nHPYOslr-I2s&00i zAPY{-ycJvcbmCD~TvtB5U10kjP-oBnXG!;g*>2hQku3v-E%#yr`_Q7QRqs@B!57mh z_TC%r%ZdYft<=uC%N=2DN&!4X>d_}(Aa}o{9b<7KRg)`M#TQ-ad@QkBQ}h`RQ;@dwNN>G_UPc_6O$1iPR9n z+wAFVoh>rAqb;+uv=OQdTi~wTYLxHFU{|S(;iGkcrgNR4#y*>TYLi+1({ga*z}U1% z>f8Ij;N^y^&V01@rcso4aA^r>SqLiNU-44Ti7=kJLKZ)h^GmKJq0uDzKFC@w;Xreg z|NDs=VPWp3_rgc~->dV5TP+0-A5>r$%XyVoMKNsF*NME`HSZ^7`Tc0`8~QZPQ=0iH zdq^>;4cDKw2?E2)Trc-4_B&*|_oeH-P*O8T#qhR5_xPBOZZlsUz)YZ$@^lZoQE;9* zfr?NovhFEnBOC_E$zrWw30p;{3Z+0-%$izMESuC<#hIQ6=W%lilxa%oyO3r!&k8!~p9Ts|X zgF9DOn}1Zvr=)kqsCU1}uyemjt5Oc0$ZfDz!y-1&p~j8{*|<5aLY*%WF2*#ksmmXG znm#JO{C!bs^3FXf?%KPx2)}>My<-;3yZ1558~y6TeSPd1olc&kG!x#w@n7lK&=W{BZ0CyUK4VOv6XF)Tb-Cd&gdWZC9%pu z*S9>1geAtME&Az7=Qxedaj4fUi*0N69zM`WjBD67ICrWW&346ePLs;>{M7!7r|vo5 zujCz_t9%mdtbmPgz98miuJck#AD5$5?AO|UG#-#%T=qLg(g@=Itlx5}Mb1{}wnsd-+`GXz&X6H+G++O(A}3sV1kr z0&6Rs`tzRV{Ut^0<88{T9l!dnlq5t(CDqTny*E|9^d&M@|JV4cs?M;Aca$5v?zMvj zi1*GeO{bE)7PVq3lyCPS`MLgjPP)#en<^o!4cHnJ{<=qCEa=c`oE-^)b*eDlkV@o{(1qP#)KME z#)Z~*>6U4m0;7~^o%OvEdfJwZaq>ft^=~yZX**h@$#Y5T-><;a-Hj6Y`SS*T;b6-6{I{AnNAD~z{9YbC|LfM9zhCJW zj<$_2{C@uC-~P;ne?Lbr{M&!SV!;^zeg;sQ0n%iE%@`2ZW3`F_i)X;I8Hh>-TPuTo zfWa}zK$?x5{;pNRr_Mbvlm{Lw%evu1xWnVB$^Q($_?F@AGA1rMCK#{Ir+k}NY`8Vm zB=gffF&_<)fhN)6j5S3=Fo;bezEB)sidhqn3aAu4Pvnb1usqB`9jL$l2$l}M3 zsisUDJq7&u$pDbj2vE@sonL?Z=S!gG=P{P3&qtV5$BDdKj2qKkmZUsCtm?L^5+BXQ!UlQXpnKQkqx`1S_8^YfXsJ2wy*G(rH&j zClzfzpKaf0W*0addNJF9d2{bWrckJvIm1jEW2QWEJLeE$Ng`;~UoougwswUW^^AzV z&yHNB`OZrq?}`SOx18CU%4B4jZ4z+&Imx;3i+&~w!$5;l7#T$;&%(?-3Fii|dLi(% z4)`$&6+H};njCauho>=U;waOmJPTjv=?e$6G$w4(ABm>qq;=5ad*Cjmz$63093?A~ z3{Q9r4=>F)`MK~oO5iM0j5X6(Lg}N&56~k#fucwdVU`xjm~J=?jAFoJ075*4(|CR< zG?SLLOOsq1secJeZKNlzf=|YGi5_Gp3d7ehmI^L~swjFwZcf3`6;WYm%CLp*4};_W zT`X~?=&`k{CjlrT5{{dWZ-hrN8=9mw=iX;h9@7lh6meU$L<;THGaKn$TFNSHJ!ROM zNsByyQEKTo%V^~fGtN-jMHL67N!n)QrfOTqa^&^8}*1a3N^5gu_cOIOMjJ+`Vs z;IH={Ri4hMN5bp)hnw^swtl`U&V;2hVGCRONnp(y8~Xn+E6<$!g|h4w8BX(db8CGL zdcCx}0xYJFvO-r=vnD+SK+B3(ZUfMxQ8v_W{%n2&>5fb?*(TZ(8Xj`|W;lLT9HQ9& z!#jiA0q;}ppVPdxcYEwrL#tvbEQXO2{ku{WK`)M&*-)Mfyxlq6V4G8~D7~7&LxkMh zvOSt?{OQwW)ci1VetMAPc&MgBM_I6oUU@Sx56&@Vt@cqKz+#96cTLAH92-WBk9k|U zk3V59Qg7j*<48YQl%32v1d3XvVhYRC^uDy2r5+w}$uxQFhb3}4PnUxD#)lm8)7 z2A=fH9)Nn4qlKQEZDgV1>j}LnXZ({c!X?wtscyY3Q`H`K)xQpUX3wxz%Xhuqyf`y@ zwv>2e79PecqeEy7{FbK&omHy{XohLP86Y3ZEk$`wBOPHbAeH=BjqnOvV%U~umUW9ZsxYM1X@nWap~~#G~9MEzT~B{Mf+Ch zPTIDpJdy2m(aKlYIQL@6Au!voUsd*5AkyExsi#UK93_s19%?SCyL2*iP25UMeihoT`6l3^MyEdghS+v zlo<4mT1gAyLGVSb(@hR8)W;+D%EI%6NV+tw4P@ColGXG9G;-{ zG$PxFYnxrO{TQzz`f{{|Ek|=7MGQm2cVSVwv<6*bP|ylE9c|CFiRy!0!_>Ch>RCE(TijX{{}u2Q`)%w-l9MafYW zrj6Xo{?pp#LA8rsrM>1H$Hyr6=+f$SVM`ybDhe;~etCkWX1#q3ql=4J_qRpNGwqz( zWkjIir5llbuz!6@7NOwN6z0fw&bw>A1_wFtby`F&Gy~5SPJymea_N%TXniW*RZh$N z%5%sQI-4t|agd`V0WEw5G??{{X21wUFIM&IDZ)1}^86a7b~YC+H)SlR+ay!lQ{H@7 zg>dkSA-;CO%ja^HtzHN$ib)I0ef!|=ou)y7Ieb=Z2mF}8ymyrSXQY#|MvL(QlI9<4 zn*Pt{D@ubO*Hq^fdh~1&W)~dONOzvLPRh;EidVYY0FU>f$H;HD-1zQy?g+xIZLB-(48$TW9KVpTTXvcrmx)VjA(=> z;ULn_o+JX`DbyVb1DdXtZ?E$7k94j86Pj8}cNlhzoP<4Tcr~t;6-nIj9iqpgau4^i z0gs?|az7@|!n&7vii+X!@$i`0ofI4$>J%g|6Vl)V??G0I*Fu8U-%m#% zZ|nM92ogwDeP=B^^MM)|OQs(WtdMbQq5Te-7Bfk@usebL#=`U>iO^_b#M$+wvLSjH zb1{HHk0W_E?^=(oWvfGINxC0HVD!KWq%jem8Up(kACz=}A~f1~IM5BZ7qpB%xetY= zcz)_p4rV2w9%2C5qs2MO>Ck{7c%XZ58foVr-aZ8dk3HCqSBBSIzuSAGD}N=#Ju@)8 zE@Iel`yrx2j3B6##HSHh}yO#G+hT6i=A`sXse z4jpvwSSciZ*h$U_I~MVT;fJN7r~7jL6~FNy?|R_Y4lia09QYsC?edYwkAgm!qG_=q z@NRQQnR{IpD?BgnpFlI9SNSd58|Z;taMZd(-0EkF#TnK-PeKPgyrVKtdPQqx+7o5> z`#kilFuiSx`}eAYD<$OH58C|^(bK}T0BT?a-gb@wex3{MLc*W-<=h%85eV6f=_p`% z%)%Ca!FA6qQFbl;E_$m^^XUD&}B7~2dK z>Bo;RwHpe2Wn~_;W)6;7^-j^HM^I?dxo{_|GiwnsP|L4+C4q92Szq|+p7M07*TxCriAs-Sz>JMy{BCq8T3L^o(~Ea1Xb9)~?>X!=I#&MaW*t}T{MW=%ng@WM+yQ^J zr@-?L_G3Ed_(zny8={gOmc*dBp*Z6XXp#`NPl1W#TeO5enmF@A;V*{|jkd>F;_+(L z^aR@1+Q$K4=jgwh9N3L@=@ct+?D5r51U&A(N@el!W(Qh#*20>BMfx1B1Ztmt#f1SaseHx^vu;I&-bPwge=k8Wo`=e z?|Q?bS_aQ*hT#;H1M^#eTJ`fc)nT5@l@xxU@?~Hq>r|B2ZP9B7xLl!o01$xDkAvUeVtwv~>XaUjf}ESlMM-Gh zZrKmdsVuaLs>KtoOZ1AeEXt2&S|1Lltm14G^qe2&dw$$IPL4pOh8HW1m|A$}}%^{nq6Kk`rpA9kk7_ntnk zSF{Txckinp_@aNjwEy^GTl8K6Eiq7R^PP_YE9KSt=V2%FXZ4~r>rOfHEiXorH-?Ae zKcLS|(0SzCN94Dsl~UdvAS`CoP2<* zVFE34?Q`U&u;G8Y{(OA;fa*2&ipLejSP54bM_um_H7>&mQubt&UE>}N?Yqp!Ve5=r zm~tJRo%gjyzs9f|fWBESa;<#cp3Td-T_aws_ichmUfgCS7L!y9w%H4BLQv zzCu+kuy;;rJml0VEWfBA49$Rh4nO`?&d>U!7vy5ClLmTfaHI2`z2V#1{)Tvw^rdz& zsoCSXVSU^}z2BF~tbBVv$u0Y$lNofBHbw2KWOH_qS$VjJb-$m`73q~cE5iFKE{UVp zy8?zw+456d#f{e6iL$$<^U`NV_AG?>7c^{|mTm_lJiDJES_MyJWW5V*G`dNMwra%A z8KhlfxMf(aiUg4_x$cDt6%V*PRm74H9puC(olA)E%N0ddcAvE&J|R|aj#|q1_?IoQ zT1n0}N`~wT4jaqh;@nHyW+l4b%C|BV_8w>16sgzt5riT~n#|8^>Iwk4yiky=jS9`m8kN z_>=j?TXdMLQLMMqKtShuSA;k{fBA*cT<{nQNjqof&>(6JzRlfmw3gai>&U}(nev7|WcJh#pSiU-#p|cI^=6JWsLro2 z?hcErmAaG7CO=@Zokh*Mi(HhWZ%=et?`kW!f@-gOl^na3T2-|q{kBuf*Pm5zri`?R zZNFawD||1&JH2zit;n=5orlFen-H1eDZ4-HbRr-ROk&}E)|%heh2iGKxZ|7j)}6RR zd#JYm)lS0in{(;Tl0<*5!d&n48)tj`HzT8w}vzBub-3YQBeE5Jn ze4thJObFr%!$SA$YH@PzTXVv$pTYPZ$1D;UDW$lfKb%ou--t!z-W}8U%u|e|AjGi5 zN&QW1K9BIY`1d|2Y{{Q1#kIwPrbqWbczX$}Or~FZ!S_kK!t_1TB-cz+l2=U<-05^p zt2fU+cgW(-KLbVozxfZ&0ygflUM$?G9_pF_uTdj5y|tTnG@ z&b*j2=fyr}@BR5yv!33Tv|&Pb6NWW(cC${|!7z6C+LA@>!Y7k;CQium4*8)=%f zsEPmBw=A|_Z)LpFiVElNz}fwBrVkS9H)ATVT<(9#CHmo(xDPeuTetYN1Y|jEK#L6!Ycw_?|{b=+(+ukx;OZWcrv{GxWeRISE zxtQg2$8&|Mo)5L}tQlWgjQ;shGGeIaOZ=D1%OLJ+D;9QHUV%xaZ1_LK>jrj;o@Fzn z$yXuQ%i?!x%~TYouq~ra*BJw1@|F4A7vqZmyL^7jnm08eg#WR`zm|fq6@)phd+<;m zP86bjKNkP&946B78Lq7%^C>Y}obTibi`xj}RO?HQ>7x=jH>?EDy?8_Oda!b%W`6ce ziYeb^rC(p&3T`RyIw%{c*vEMB?l=UA4}_;;7IE3xoW&>E1KfmYiIBSzEe&jqN{l~P zgwf2SsUXER_SVw-e2<~`U%fs<(fTRNyLe6%MpWTL`6Kc3ucm^3*78x-GD*T{sZhhMoDmweoI z+;Hj^Dh8J%{sq69<&UeoXdMZi9GQN%J@AhCVHR4boe}8*#l`^rP`G6a|2^~+dRt1| zg^kITj)f3LaM9n@c|3aWOV1DOJ02rl$LHSbr0_l7cyr+#y0H1{-FHQg&4GLasH(K= zMu2!5vBEHHqA!PaVZi>?L*83xsATrJiG3XGNmB|`WCY+!AF(tlMF<$=?h54da~ErS z%&8m`YBX@o`j`~OX1>=CIaWWZux47I)n!AL-NM2**E2JY30Rx9SQ;OWP|^puEB9|- z+IDU4$u|EHNS2wi7NZ$Lo6(Ci>u$>^^<f^0~aPyqxdZcs;jVt_l!@f+3b2CRfRlH-FcX`B4A&g(X z@Ubuddtr?;i5A?!xha_T&UF24W~-blR45CYI&Pfu&2_#@HzSue@a|8_m}#b?4TATN zgfa9Tn)B>#7O(QWxgqT(N*Ek4FNR#kWYfl;Fzw7cAqk-JXLsod0_Dt@X~oG@wLa6^ zBK^_{5Z@7?EOnq%3Y7Abi~WriS<#HHI?oP3AXm)ZVnGhMhY-;b#;6VIKUI=;61j6? zK)D5KtyD32g=B0rfY@9L-YNh1XMjt`TrbOPA7*-?9xH~za6GAq{aUEwKc~p=fMzhI zcRBd51$ieYUQoQ^tTmh zZ&Cp}p^kJ;JIgev?MI7>7$d&WlcPdgekFs&pP##axdk|Tpibl-DalHA1uW~iq-tbu zIJ*dD@3O>eA}0mm^6Xe9 zRat#z-5(-al47XJ+f-xmEIg&+>#VXrTp6D|Id2Z?N#$HH(>vXtwFEQ=S-y*K(hcL* z3#nGLm_LS;A}UuPP&Az+Uz=R4-AF2%t&`YWf0M_)uulwd6GURrN9+xwcBG6`)!|t9 zDvA!iwCR4L#3t}h|GJdDdz!ib5}^L4RA+>N(#dzAm-FWn#O%`aY1y37R72UPf?7=eubk0Vx)7t3TX&mxZyd}7n2__+-5{U|6Cr3ltr5@BDF_2pf26P?8$P|g{N8OM(X z&zHRTAdIbes)>dwFI>wuX8jI$S~p~4$vOlpN1M(z5fpsJaSN&NlQ37q^xO&aw?hGF z7tlu!^9kducda%C+g3i2X%&-@i+WF$4@QlOJOlmB1(wJnE~ixt-L^oS5{(k>!cV2M zQqc0Jg=9U&bZ$3|thiA|QNqhcEHjxZ5NRi^8Y6>=<>tllMD7I41~U~s2FwZ7HI9qp z*g-rooiqN%ipW`?&%k}kAUi!R_F-yn$AH3-z%X+J6`JyXCgc1nF_6>z91D~dBq3sw zX=vBazQhoVHxCRK(pK%RSl3xlz3=#*g2o;)xq_H_{!gEA26ivkCGRQ3+_qE@p3s3Zxd5dTwXBIR$d^7m$vkR2Q+2|lr?qumoZm2l11t^0A^06ZqX`7NCNzyPfKN@q z6Xa4J${U12@D7%S<&$oPQxsF*v9!4ZUvt|m$iF;Ci%_WspCzLrb9^d9->B{>8G>g` zU(OoPFH#O>60MG8P5wuB^5^d=HSyLacGMb>2k^3RK6Qj-$Z10l7j@5*&pHP1xdZyC znB;)DV|1&;kYUZcgZOxJ-Ei~Psgi7;#Ur8KZ{sDqzc+PK&F@v*HAp%d3{l@6<6^v^ zCMn|;sYeGarznRhy5tn5FmHrtE^H_nT{a%&Z zvY5X8(6Q73y(G8G{xhxoqFO6XQp#tJ_1)8tzA!Vh{@HPn>+7UZZi=qQ1+vR#CPVpX zBJR-4@69ffZr$kI9%_voxcyho17p5uAb3B(QuLy^L6EOi)uMsFxn9y>pzlq|k(W>0 zAoy-`@=s-XG<3+#9M2diG9E>dsK@I0vAKj08qWfCY&a~%Kv6<9cF5Ob^(Kpd?XD^h z3}L-;%cQb#tSwYgTmV8*mW^T6ZxaGyx9ZZjw*JCzMW!8*0sp%l++^RJA8nOiZXbQ? z=}AnWV8mfsF1XA%7ZTn9!3YaAg!bbd;KmCnNP(wfq2^1KE)GFp-yMFqgoiH6oIg9o z*a&iQgyQu)CFD`D0V_q#n#VkJKo}%86F;UvcQKy1u`=2$CHzu@pX;k7wveFoA@&P9 z3M7h?x4q`5Vj^!EblY$tCI8W!!UnYEr);^$$?vI8CIlKkApCB@KA!+0LrAPi1JUP|^D=$waMOiD54RQ);y(PuE# zpK$Y85A3PquKu~H){Xi4&rYv{8MBmqY{5LvYz!6J-=DstSJYfdXX07ry26{B+)QQF z!D9?X2fv2rWas}!9T^KX>lcGF8nBy;o~3G;IEe}V9pXXYk5V4inmCCsO-8!3@X zz*>X(bK=HKx_L{Li;;(UcFd553-oKE`M)g49R{e4b;+3aEcYASOTg&Hw(+|CjIpw?6WbWli(xmmLAE^rZ?a_R9(PM-F~a zuujn(1Y;OXIeh>3L8%_FqUQloCcUs>|qRp~@?&I8}?bF%# ze9W|uQhB-kYr!Xf8uXi`&}1gGHz=cA3<}|h&a=xe6mba?k}2KTuR}7|rh_r_d<`8G z^SEdMpkG_1*ht~4e#X95*MWE)M=zj z{dsvjnyJrGg7KkBW3wcEz}O`%-e{_U{(u~gV)QY_lBMe?bQp8|eUV#IyR-|)EXJY9 z?(F^ox1JqDe(A%SAy~sB<3*HcodEG^S;+ZZ> z?df)>+i;0K>d^<_zM?j+eU*!T7~Anw!6=4P@1ax&mN|6S|8;c0Sv~e48FkWtCZ5V) z6n$LV$_M^cpYLnMQ5*s>gUfxF&1|sv@WWyf0g`B?=VW4^WXU_2&8%6v_@dIld-j65# z)`j5f|3Nb~407wNOH>cI)|!uD(xOPua3$n)Ara3fc(0L!oBEd7cXST-IA2o?Dzx!5 z^a-|%EWYBOd|3v}Pn9%xyd9t5?T=Zv6x`2p&Mar8x#k6%*haeUG(_uZR? zqNbYMTQC29DCYC9z>uli+nI5!Aop0w&aa-h-d2vo-@U`jv7AgfdcRzB_e}C&@YCLh zS1aZwdz4 z;{UDp64$RM14aMXT#QiGpmnR{XLn83&$m5yPqqnvvc7Nq{BQuqc?c`{X`J;0=rdUt zyZTx-`Tdv7ch`yQhbF!&1fdcp8!qG9x&J;3-R3U`zL!yu(I6C*!n5T05Xr4$()@9eKwAVyb$$4gQ*+MUIeW z;Cy$4Oujl53d$b2=5LcHG>a5FkcxvUhbh{oq!`b;z?%YcdB9*{pe7n$w3y?`Ec0U{M}F_X19&SYmP5%6jMX zmOZ=%FLVu{AS64-KihcPIe;%OQAJwt{(e5U5crzj#nM%a%P900~{{V)X0?fh9|2jeC!XuRG71UfV zrll%ZZ*hF5f-1;HIpJqS7Tp2^_cBAXvbYzSY{fi@juwyo*1D^x%>y-f(Kzx3ID zz3NQO<;^@l`2FcRzB2{h!Ru&3x_CMrxu%1(sm^><`?X2w zoqWT(a_3ad^OaYG-{V)wYl&Z*9z6~xruLwYeMmj%WfY8vgxLVLNi-mX!^uuD6Y|xg z1|++2sE(3D9du;&CiRDdL?U3Y;N1<$nTm**!96^|3z-Zjk4(aTY8&M zbdq+!V3dvot%{murn211MDXJsvegG+D#9$DTt(m%xK=rjMBz}yo9*SAX%OG2oc%qU zaxJJ6CP!1a?8IWTAX-=GmD7>8Bg*+nc&M8H7s))CQ8X_L1NLEo!Qlir37eVMRIBX2 zYyJHp_U1x#E&HpF{l|-1N|niKq4F{df+#I>o|0v#RiU?FyL+0{PKfl^h*wC97BjhD zxp^0BIQfoP%9R3>q1Mh|)C}$MZES6bJs(pHss|n7XR^Q2PT@p_cLK|DX|MPWDQr<0 z*B-nIlg2fI|3qs+m1;CeAq}$38MyhdD>L&nVMWxyuTAyVcFy69w9w-c8upP^?zyk| zB4Q1e*Krg%^PnnZ3wEUaTjcc+J3*=T47gwqPAb`%EaZhHYq@}keNm#^8sv^LC@7+$ zaM3<{v`O;O+6C1|nH%hB5bab=WG+)qwAiMOua5~kgBK8bGSg4?9KtF2)FBTHq;C-S z%${q#qJYt4Rhvq7a8N!JsD*uaGnR1ZQ71xW*yYb4Y|rBvFmNmgEKEvEzjasejx}r= zwwWnCV`lkLr(Z9Vo*r198M(L)LF02B;{MbL??y}Ng_A)XNI&9XK78yHuWBfl932Fy zP20QuF$A_iQJTc1j<)8=n9jhDbvR}ib}wUh{FJS9tf8p3fU_1(RAM@dEa>n*s1krg zqg$-FDnV)<j(%tsym#1A+sPnL}g*#pUj5Fa^35@)D8cVnz@% z1EC2}>2f6K48x1-gRT3@nyXpEVD8aj%V9?+nhwheGCju4uO_tM3JS#n57J41mMj$* zlbVLeqTf7<5QJ2~nu5d~ps~9!=wB7{$eSFqKUM`h`@X4#Kf*3)Z@=u0Gu4dpX8CN` z3dvmHIl>0_EWnKw&1@IJAYKp{Vjb_Hp#17GkHbq&2Rdx}cSa-{4-wicR@3Z%76h|dUJ5y31h9EQ5tnF$bO>-PDS3Gq8$?Nj(o&$-ucp~LH81jD zU-oE`hF3jj8g_m!8aM=yxbWoUFWKbJL-I1Aqgo=ISfN2Er9C*rmSfB=T~OEsiUhP{ z#lL>wJWF@T`nnM=G6M!5B0uANkOa}M3dGLt934ozOPCV&EIXD241bG&ytPYRk#IMJ zk_Nz9Gz1JooQKuZ;^99}H)aC!h@ku_|*0Lr!P_C*NgN_sUpJP;hA zr~FA&(HPx9N-nr^zlbnfK8hfVPKfgoqQuIcFewS^rNC(PEA z^ADAA=8$MYAz=V0i_9xls4*{gEu9N1e(Gr$pfrz1JIq?H4SnKm8=; z_<$_90IEYKd?1dbNNi>47R6P7)TRf}VwI z@sGcoXf%;^Y;wJI8qa;T%U;yq@&;U0n%f_5K3yjZ#vHjkkAfX;2?}QqnXR?}$V@eN zo7&F=+6x2s7ax3BBSGTx;-oK3wmo%6G7TH2zAupHRL!Bu1&ccky`ulqGa-veoQJ}c z-+HTmzJ^NCFTJfF{6ovA*j56v>0Id)Bt!q`H@$pR;# zWcCvJmqiV3Sr$ho_~=Ih-xvtDDZ@QFa#HS^BFnA{3V0LP z#=-2y7GQP8qG?CY`gTJdjHIUUaFV!Y7)ORLfhT?(_E_Kua%BN`+V;xd>&eaAyfi!t?$#QSt_1-c0I4sMt2$UyLPo=BEc-~@#Xl@m2ZlUJMw^iLRa z8!H9UhZPYc^L{^XZ@(>E<|JZ47I9bP(pWjtM2YQ_-UZbX7n?zfAsYtmb5~f zv__k}PN57BL&nre)@D}L(Mhhr;V%h*3o>J7>0iqc*2(91Os?~IVY#q{y!mMccrr2s zJeov?EMVJv0L5}Fj;|7wT*c*|ZjvmGpuPwB1xs5Ky>!-{(bUAo6wa0mAX5Rd7&-M1 z5yfj|7;jCP`M`rB!NFt@9+0^WK)+7`M7w$tNmfV-p`$JL;3J#^>pex{e!DYBR_le6 zYS*5z*%MUG!%dI}A)3!Ktb3grw?sSHSG6p`|jt!;usmY{zd;NX24qUX;k z8m*>Hfc|UOhGCEVAh1K95R$a)8ACV%w~lT0hR>^LEsE=~~deOV+KbY;gd;Bt60C1D9fls~}4u zdBvRfI%RKIDJuhsBoSq**`J1>pRf!4U6$zZ#W#hLU_NCt`>zN!r-2zG>8P?3?Un_ zn{x<~w=qBhGW0_^0UnmdvvrcgLwgs);xV#iqhT`)<&Y>{Aon9jJk_G3Cgb#V0fnkx2_`}yy*!;_2V=&sFp*KFj>Q9-w1)kk7Q($ z;V>Tc%cr0ldoF8hF3!4@9s&dvFzyOn9(kRN+CP4a;DI1}@NIcqFGk;R1xmkpR)3SZ zUEtN^3bcHKc61IK@qxpxXLw;D@eXQK|9>WPOyyYMjQ`oBBM6A=5t|$oJL}vnSDCL> znxC=6OU-BtJ(7Q2EOegiQwpWmcP=5ZictY=5``KoA0%_U_nl=F}25FTflq)<+FB$u=-*A6S5 zoM-5m7MNHMOTvO^j94T*0b|Q83zX5;CF==4s*d)Jx-)LgNcTvU=iFc|ItN)Vz=UXl z`SE3q4CEv5ePr+ikUvW{_aXuL!>U*92i3`BEtZpZ=abB5X9uka0$4NIekZ#kQ0Ya8 z9(>{G&d*XAccL(LQD=@2_@J}%S^9+ zmwre>9$Co@8C;wokshXG*fnvzDfTM*+yTFEaW$vWi1pzUmV4?CKooGy!Cs05ytL`C zihxlZ{i_%0L`qF!HW4`nY(M>0KFbLmVTp~BU?SKaY5`k~oVy|i`+o#=jqff+5IOuH z*Q7KzC+lS&1JoE>I1WV@Bt@VYpf~Q?0AnXw-g|_hz>{m~#GK+c@bo_T&RaDgk64i@W_L zK_-Z!KR$OnUajW>YStr#27TS)FcK-%AaTHDHUGn!NYYutSngdmDF>?3eNIQ4Z*iyk zxdm&~_(mzHMKUQB7$*?;Nax?4+m>M9mIA8oWw-4;;!5C*7azkpuMr;Sf`kc~U_z0a zXdTf2l8t-hxBtO9hwQ+Q*cO8R3HX)H0}2g_ww<@;{;n@ffgBN&Z*GH{4XBA+$2SVm zTE$0r*695oX9%rNS}vs?UQMVIRKFnq++D%5-JUFZ0nBE!?v>ACD`j!WccVHe_5qcs zB7mK6AT*7xJ}eThMjlTBz!JVZyuO^Pj2r(diF!4*@v_KD6o^*+B3@Q4F@D-sdQz4S z!W9GTK(8<@u*f5W6|SSqaaD`KrPgQ^hW@l2aM_{|t%t?Bi`e%R@UnwZsf?0M2U+Jb zt33crBAC9z6I~rkKgRd%%Rb$5_%tK-IO1D{u5=Lll+Vz4AlrE`tjD|uxK@niQl#+A z${~%vTx-2%8A>#0q{CKa3HB3ghQHg*FL#Vu>nESQBPC6eEA>tX{I)$6cY69$Nk7ni zb`mEA61=?*M;N02<=+RKai+W_a{lG|#GWW}Pg5^XOPOUyS?|e->ka!RT`GTfn#|AC zaCR8Hm1V*IfpXR^ImMEqS6UdSAk3iz%c>&#t)nQ&pnVqSr0DB37VE1#<17o7i=N&8 zb&T8acg`(mdKc+zpEl4aQmRj9o0Dx6z>b{v3ix)ap0oLKh49m$LeVSHF>LdpxdOcs zAgI}E?vCu!k%2AVR+Yi4)x5q=xJ*~Ku9!<(gYu`r50&*B;RN}GXJI?cD=E{8l={zN zawgncyi%2sr0Fkw$1M#i%?d#i*cW$xeL#{v=Q^_&o%?5Eoy6>M9qamUBLHTAJsmW- zpDIKAAdj3)0uiNqgOVqW1}qm@4Gw)jbkAaTkD=w@I)1rYY9Q$XHmLH+J~i ze_58Wq%^L$r)*om;r^2%rtM|UYE3B+H}wZ#hH~i+rvwS5=!@cf%Niy~hkW9cV1n=i zis@l(MFU)GpE%)5F5F)}{qk?%LU9JKNp3hbygA=Fg1vgf-D?5choJtqzkdDF{>$6> zAYO@Ot_t2iEE5jCdlDsm!`|#*l7J{^IpgixI-SRF`GfVtTYpOO-L|mDgCdg}U4>as zV2mgOGS3K$CCB=gG{`mM$#B=g;a_wQ8p9Pw0k8oi8EkO4`*$#bdHjK}@3 ziQpGyu^BpZ&MN8ss|i`V%$trce!fUtRxCvOyyYO7v=^4Ialc(tqVN)>1MYNI_mbo2HzPp)h{r6 zC3l^b!inCB{$y8m0mvMVuVH0ru!OVdm*19va6!_TNyHxZRUZJEy`lE?wP82TF(mhX zPxOKD^y)W;RY}yA#$yv?4N;As4W%dbC*^HzNsQ4$?Kery`b`{1Qe5`tAV3-r)8H)k zIoOjUU+2U;g`%ZK5NYxXV?~c>=_xmLghW+mQ&{hg=Ri%Q7o_$i%|KawvW&wBYL2ZO zT!P0DmoZyjZopT`yrxw@qu~vopfErnsvr{2DA6XbRvD?qj$o*a@v8a&H2YVO8FZ$| zr-(m3x|Uq5g%gVB;U|v^RYre&Vcg$uD|zwF=b!t-_GJ%IVfDCHmAxDRgr2wJW>1Nu z1XSN&i${t<$bk~SqNSouS0To{7$h1;Vr*tO21>+#9bw*3%e=sSjdj=2ML(dCG!nH& zF4Mr5Snpi32F$McbVIG*%b1q}$cW4lR@zB2aIQ~Lk)g<>TA-%Tqdbh2EDjVW7FbS$ zRKxq&XuEqr%+_4pDHl6D8isprNut0dGD%c+b!#_3s2+YO6~Y@9M~~seDiB0E?xxbN zB+^GoP-o6sc6x0$I zCUS^OWPrRviX*@%_V{Z^_rq;6St3WrAsvlaZM|zDgpa5+KP?dF6FIJ=2;&WFm7-dJ zkY=>2$flQXFYivezq|7DZmsB5T#Ot|2wc&EHG_1>nhM}OQmce`cXsLpB!&(=90H^W z&;*n3Zq5?$qk3GFtDRD2WE7X{JSNeIp2{D+jE06q`FmJKO-Im7K|Jt8Gr+Y*b_i{& zXc|IQVcQEi$%`XcqKN3_BL~35GA|z< zdl(L?0SQ}^Psbv}ZAgWQI!*u&FBt&G7YMhw`JF{#kqEZXk>&neX{jM!CD^W9!iC#} zTJCe@4CsF`SD0zQDlhZdaeQbOkiL{~jbeH_Z!=BEzz0`X8CXt6TcWMwC>cncRGJI6 zvIciTohf_W4_#nsv_iKg*ROis(<_3*j z2p&%VU^12%o|ukQ;Jm!B;fADu=GBmn@DnDA=nos$F0@LG%8MDY-mcv#NdCpCci!>$ z=XGT*Kf7{le;Rf0l|cR{4q6o$_synMjel7+0gc*x!rwW;(-IqSV1<@oK_rxxBd^V2 z)@j=0C7ulqYsD;X2`mWdAZ;A=2oxr`Yxt1GI^DB5c{5(eFpWHEH+apg)MdyJc7S!Q z<|A;7eUQ9H)QFmIm-yZ>Y>bJY=3|_%?pf8n!5oz~RWVS4=ZTnVFWga|0M+hRmB^o}HHZK;$Eq0+^nf4G%~gRXfGT zQ^to7#MOT<9*kJ;$=B0<>6fJ=`* zkTsSWeM@^_CF!T=b5m8*rn$+D^l&lbnjz^fXFl6Q9&32!OkCIjdncGB$sRAo%^5^M zA*&E*s3W_Va6hj&0H!q#`I``4ag~fgbrkKO4#c8gsGNnts)8$DqRvL4h{u1!uyw=W zturtXDC841(twouz6eJc6%LQ~cL=c;XCS4Guuv!NW^%llk?ycX`KspmJ zVvDEG8uhNY04W+jBA@P4l3~T!)woIpxO%e(U|gmdMc9vkprZou+4JVU!wATkZ>5i~ z-(7xC!?8``D63ZrTLo8hxN`8$4OyUKp5zbUzmrE>iV#2RXoBnztgBNDla@ zQi%13rB$ndy=}K3wyD>nFK7;IcDJMzu9|W`mwQE#-h{eUP{2?e;3Me(l}`$IT)mI% z&2Le2Vc!T*%4!^Ld@hcZ^}AuxN#)H{fgmOJAIkhTg9tNKB;<-g81h(TH>1ozbDv>z zAq$)ho0owxOHpX&zhT?H;GcB?tJf+7MwG~!0RT8W%U2rD0&j&>rU&CJP1{`e6;Kr(?T)QSSA$u$ONl+c|hlhL!QKV%c8i&le(NwWOy86qD z^9B%Kf>05a|AZxr%!AcKYfw==J_K&nt6 zI;2+!Y(HwqH64(ZHe{T6cv*;K{l6Ebpblyn-Pp~?c_GZPVb0vnIZFy1gJ z&Tj67a)Rr|0X0+=#EBuT%Ep;>@6aznbm+iQ{`SsT_?u4#eK1m4kf%%`C0z&r;mDwZ z7u3)I?bolUinB5ov>^)fxk&zveh>b`_dLpibP$|Imhf|HkkOt4p%?%p@t;rZ<>DCR z$Uu@9>nJZb8sdsPVBEYIo+_8L%ysq=2&=xE2HOCq7fYWY9UYV@_5yZp-v3s9U%-ty zLW>SwfiNxm2QACsf{WEC=T7<429%GVsf6IQlVtkAp6UUQ9;nJMt+d;pg&HyC;Ahd+ zu&X1+acx~Z`)4)!LJ%Cw4B|K$s?Ep*kHr$ec)E{D<_1Tqno!<_&?U`58zdbv3a9F( z)A*7WMzY4AWwhaJzb2(hY#NB!6Vifm$oocTftTx(7}k-WZuPaL35KRma2yrV95Ckl+e0qa!!sJ-=SEMi&>h0jeNw5)i0E8K! zCsrb+rZAhABHSc^xh9DRkhi5k%3YB^s2~dxmMQJ_+|@A5!K#8^wZsBi;0|!lM5PN^ z3el0eDFDm^kfure)Cm@Y_%`rbZM4IZ9N5Af5MeE_Q#(+raBImmOfVso!9*4Spp;aV z*;+)UIsE(xs7+SE9}Hr&BAr`hxX5USVxP8%%TTS;XJ))dUA2{0p!fF9cJI6TI6&h+ zKzLG5n}oxw3rU_Ucsv6<%p+sEb1C5)GM50)*~#oBV$8zoB6-I;XQ9`+{kETgtJw9$}FI(LT}u%7F@SR4PM2K7~KG1?ez=c5D}9r;rN(umc2S zvJOm_ATJ`b!xc{ypU3V;fro!6Ymp%*+i_eFP(e#>B3TmDsfa_HHWVZ5m(kCqQ^g2p_R3m8_Wp2j{EUnS!hqFpoJ9g`Lg|i39eI!KmIl%|5YAEY? z9w};n-RBgT&o9Pllh2@fAL;T@taGC73&d zv=7%cZMl<2gAjD#c@CA<3|Lz~Jdbc^OA)C+hGsCKi(n*gB3$zp!~(10g1eeSV4FUl zV{otfST-b(Rsm+O$=NAC8xBro&|01$LtCm$?-B4Ds}d1tzX#9yF|QL`FOrqPvK^NIoj8Wp7o!AH_JOM1ity-H$7Q;|VZR8YBm3l1+hJq}|UZ z*C8W?4G3%ucCpn*kUE*>C|Z3E4iSliAn$4g6RH~8ktR|tC__m0&VwQc!2g_{zbWj^ z-h&(fv9f|mb!fWNjr=s)6dM7$9-eX80W-;jt(4xsO-Qi79nE{gsZ!*(QeF!dR7ROj zH-%XcfIQ%6EgZtWR>7RN?p@hxu>xSHNXj{P{XjqhOc9XY;l8&f2_eNny2QiBFdAY& z#A^V;h`V@9ql6+NaUW|(mxL0!8z|b3oRk|{#jWa!!o9;#1i(&)*98ks&hf3Ih!n?( zerl!OYpv1|kjw9-a~jYdi{g8#?~nHgA1S#a6I)MoGo9crEfNv;MUzrQ`_}*n zt4m}aqbv{fy_SCR(QzyR9Ig@?DF#H3Ul0z2b(_L3?7P~Lp}og?@XiUy&F-RFNx_#* z*YE^A39=4czfQr(hOS?cJk9>4DID!V(&|XCB|IyQz0 za5#K4{t?I#J8nnsZmU<3CUn>71Kj0LqNTdQ1c1xo5$YHBf>`K1U)_`DSN1(DE;e9G z?km?Xr<$o;HI)g4&qy!*dI)K$G4s{sSi)4E0GLh#P!dC=uf3CJz>ROv=sgCs!$A9V zLkL2zBL@HR=qF$9t2_p<%CIFop(-1xzQS@)#-oG_x=7vQc*f9&*hFPM{pB7I*)O;u z2B;Rj`q8o5z$c$5s#DJKh(9s~L=*kT)X)r#kkbZgyCjt+G?Zh(Cv%f0x*iUD4>%h= zY4XNyM+JrQ^9wGYyHIJm`%)|eeq28O>3Rw}PmVF8GiEjjMMjJwpJMQB%Axy*u9Zf{ zNGpGpkkOydNByOQ^4LauC&r!TJp`9qrRKzb7LUqQ3KJ|~;rH~V9bu8ap1%f;QWWDQ zjpG}8SU3TS0Ys~F$1>LXY8!7z{Y}zC_=y42{m(`eP^Wc zDJiI(^JKTcaYnAg4Neye!YDg5juXa ze6DO;26tN7DLnD@GM0NpX1<8G-)O4aXyRe$6n}ZL(Z#a?xPdoIv(*!a9)g+!qvaFZ zf94ygO37e$XVtebEdx(iX_nq?P-a!&f^ z=6V0_g;`X;j2v7@KdJR@ctPdL<>EK5K2@8t^#-mw&N_9-e<*(uRdihY_98KTzD#W~ zlV{23(_-W&lQU{s16OA5aV`B!d8K&eCF(H*GzLFMgNM#|XSL`V-F_}P`nu%`_L=eX z?edo%ldr9tUhuqs`RUW!FI?|-)!yx2GzqwNB=FU)3=#M``HtqI^~(AP0MVEKH!nhg z45wm|!8izXip7=eq3>`-tQJu)gOny!pz@bRnwQ06WPcWgVBMlxI2*v_u|1S3~ zVUCJ1qQZf|@)dSoxe}>InqlvuQ&0mk$R7)mO+HFxK_SWS&Fxn$!d9)q-s8g|W>|;? z;hD94PR-sO2leCllONotdX$G&RlJ~LnIF!g)_m31&Q+L9oLoEK91)nmcA>%{U5Y5( zzZRjs9%a8C6Sf|gzn%~_rro&C!HfPsggy_T?qCoAIuiOE`F)NYKmVWU=l?$Vzfc>pyfcX^#wZ0$9l`zk)QT*^O4~wz7 z=QG-Ncl_r6>$RFJ!$)l`jkecK-yx*1H$7^t94j)H37hxOQ5dL^)-=0q`#-OhM|;Sd zvCjK1ACOW6ix(q;XIq2vrb4#_E-rM1zaP7OqO18$Z~Xp0JC0fDSM5o2v;ME2H@zLm zLrP(cW+3g(XS}3r2c*$N5A+_0J)s4`fy_p<< z1}j55QNb_Y=zFGkhLT^9OfFF{c=eif+v@wm?ptvfie1Hv(?u?BkLDBpcy9U@`owO2 zxTzi@BAth{LEbGUWH;272HQWCFA0CDv|gUyWN@zRe5ss#MeLbZ>*?}~-3qr;1w%F} zeg087nTUXWOSuV;}l?2|~tkv?|^0|1`Ui3^}#h8L}ang-!xw^)OTU+;? z?;Vc$+-u9G*){#tT(n$v93GslVo=x&M>K} z>l{~c+3<96Z{M^3YDnK=ChcAJ;EBC_q1ejDM&s@mB%Ss*P8M|jGLN`)<-L{f9f9A) z>>s}Pem&t`_)}d|;Xj|B)u#baSM#FOrI6i(*~2aO?ti-)W*n=oxe|&DWb>sY4-pcG zYoSL{$})usUWT~`Fk3Qrl6JIDy@@WwYZr&72#rquo;m7q2%}NSOsQQbVF9ryGc161qJTZmXCj;bCgf#09(%*FdEG!nVkqmQ;mY{~ImTU( zrknquA2+v#!3Ua8aBeT<55HL4a>@#r$yn+{Y|sgl@_ zuhbN5qsl_7_Y7lie~6|Puo+=Qk2GqkyOY{RtNv*wmOA~L>RDK$$rtQdOnLdjqUO~F zw&(KweV#m*Afdiuu%DK^hTG|VQ8H~Lwyv~WdnL#B{Ww41d&!=Y>HSdo9*+i@UMbp5 z$$i=Pdg&)Z)1MWOb!4f%zpis3hA)`bE2kgR-gevdLQuBq`PU1ZJr3+mMQcRI)g`OL zlNl5H21c(-SR0#DNdkE}QAw-M+Sn#79`jYaHhgD%DON7pq$uBOT+xE((X+pl#$pEa z>~#lzr4u1o{7F1dM%^hu?SGtRRS$sv_G&Yo5=C37iGT1CUk^`_c3GdJbA zXrjgTW?o~K$r8FU#((dqKVW;Fo~~+c^?HKfI`;fd1y}v2rAgHgNlSOjE2}sm<@0SG7GnEq;H`I~6Co#npB`_*EW!eD_xigQ?DaZBcRB_i?*X{5t7aVU~S#NkMzJ19v+bp$E;88!+ z!>ID3+4fju*W=r(i$Q#^CM{`gmfmlye8t{w{c=vL5m!AIqh$MWtLQ;hfS}W>>{s;G z@yDsBo7wMdyhwsK*YSwp$onVe4jj4un<#9)*w8y1l3t*HLv5K?;rBZp`z~hl-Ah!N zzTTaK=?6E0!~6_v#txd(9-lDwZI#$G{kawU-@K1u>or)41$53{NHWYdwux z=$UY&xjkaq!Y&4yhnCB5dp!HZE3I}qd&T5Zm+mEE8~)YD)lV_|H6|uuaqs_x?DaQI zrsdaD%ms?W?;UhIe%7hxKHcZ?@aL>|6Y6fp__C9^R>63B`&~J%HOwdB1-|CJ604qB z8rGTyV*gPxMozj)g{<=;8gcCv_1Ip)~^>4bA?a8 zSzmwr?%e&?3zuv4s*Us9sOvu#uGQ|al)W~SFI;Z7e)ui(r~|5iTsFt{Lnnul@&5pN zK!v~WdxDs=u>W?Oyq~LJ9q+ry3+Hjf7fDk`Pb}rvt#xuy9w0rpSKmBOZ)0nA(Zu%7 z-1#FJq8He$Stj+vMlY{D?F+OBPrb7|TDhHL&13EcT(B@Dx4VCIRm8Hqtso+KauptS zcC!}e98dFomECUh3j9;(CFzQp7F?U#Io&VsJF&I5+@@D{?hNjBFQw-9+A5LOYUO3# z5%jjLzx}P6MYiJG9!v`jaq<{P&T8Ra;{$@1?OCMz0e&Ey9uMRB7F2R| zdez2kLUUT%S0>psY0(x^3wC!8r(CqhbYZnmItG0TXMa|PX2~Og9ddvMH(p}(FK;$$ z(`GwGGi3Q;8p|YCO5t*m$ARTWZ)x;mP6u!;b%AhIeiYb#ayCUuqHYJogXaZ57FS(C zh)G09YQ<-Aq~~DVmOxE*f-naYb7Wy`CWI_#aXxs0)6#_Q#X@4oX2U~xU^r)lbV*+5 zYL=EcXUK+eF@QhFJZlJGgS3I@SALD6hdf9Xa;QjeXij&?I;K~LgcwAJn23tFh)`&V zjQ@yij~I!P7>O<@iRU+on3#!kGl!ZOh?@9`p!hr(bA%64i6n6`q&O9h7>aR|WSm%9 zz|lOfh&idqAeU%3urrIV<%uRDJ+){#XeN3!vWZ1>i)vVg!J~_6hbMHnis^H1=tdXD zxO-lBWy)w~yx5A4b$zB7CqKA!*LV}tLx$nFZvR$}h4_o>QH3j(J>3|6T!?Skh>hqd zGcOl>zJhSKgM;=HJ>=+&>8NJ&XoCRxjPLky0CbS+2T~_ikE=G2PIHd}HH}@OkH5o@ zqNYkYhkyb(gV?4}Gd7Hn$b!n0I0$)1%~Wjvm|_H}bE)={``3tpB!j-zay?;qME|yt zlJ`f_CXh0x8Zy{@+V_84MujQ2H0h^$YeL+s7hJs+(bD}FOdD{tkK|+;9Ia_F_fh|~^KxbMg~Ie&j? zgaQhHhnJv@cYhj@o#>gH0IHt>ika}4k>AOF?Bp`0g=ji>abq%|mARkliEDSop7qIf zH^)fM30lz!pJ_Le^thpyN1UN2T{l{R7HXS2dZ8!Uqh}<0K7ya{L_^I6F*2r~N4k8A zx1c-nXBBFoLfUy&YF-+eqfKd(`loLs=_D|Tkhp@PB9Gw zlrVU8*Mw@Ncb|6&VX!ootS4DNil!X8PPvtWhbf?bsdYNKpfie5aQ|6V=ysrW7*$)C zfTMS)hpJV!M{VF|OPW=XyT)o^+NX&pnB-YScZ5%)X>bl$PMFq!$)POW*(_g*MDb}e zo8)lwnWjAIsd?I(f%dzDxZW|Hn+#3kx8Zt#%D3wqFV~9(T9DS zx=ThDoTZjlo!XCe$DLg2d_ek{HhFTz^r9gsk7K8NYN=^YTAEU&IKBq2PdaEH7hk(s zposT+kjJm?+DU0iTuKIhqX(ROCS(%!lT9d*A?KdKr+e`VccB_;Avc!A`DDk5kwhqF zr}>r%mzq3zng?5T%bBh1daOSxmG?)b(&l*I1gk1(Vpz#!1^;$%cq*`idURtLtg5z_ zrY2|(8?FZnWJp(}AE~O*8Zn|Oo4$&e`~`XyOM(|GuNmvHOxS+MsHJ5IZ8*xDrCPM` zrnG1zl$i>tSVW(vb+5F#OSSW%v}vx;zP}2gfTp7Js;f)VtNzPW*GXHw+q|9X zicgEbJK9OR`g|*8qq3`x^}~^tTdro;x?!7t5&X5@W4nMtz+e}HW4N-eDyf-=!uA)v zxd*^xq<_;&q$N5{66{;rDZy?^q8(P9K0C3hn`>f=vc1*AP)ffW3&2kNV`eJ8s=Jv} z>Y3f~xXx>`;fc2_?4v;JvQGR!Dr}8|hpfL@saa*j!l-t>xs^7YbR*1!I?S{<{IyUj zh=BT^tF(SJD#BCzpo|-w*Z03W7RN&BfOSm9ZU1`3QtY?_sJ0nQo8l?DjtPI*DRGi} zo^6@Q#@UxqS5k{-zr9Jk+&WqYtS~Z6t<>qhNQJU zfSjRLNvE4U$rX3HG#hxnhnvEz!HYDM!3(_i+qc3zwP9GV=Glv@6U+l^r)HaI?3z0q zER?evjBLky*DPFPq*@9InkkBiF11ELh`yLXb6r+*BK4S)x|K*sKo8}+a?H&qC6c=w z&tZgrK`YQ~J5csa&d7AnhI_jKc6Ok%Ve*PU_H59&YO^J#%up1+xF{ZJLXR*-J{fJz zcIb{8eUo*YE&W8&U<0QlXN9lmkh^gey8piuP`Ii z^Fq|DXpkq3DeCkrNS)Nb^3+iM8%=#MKK+G4J=IQq)mj}KTumoNZ6smc)lr?*WF3oU zZ7@rH)@3C(H!)^uIhc8%6Ld8J={*L>aAetj2)?9A-=*MwczhMmrSVMNJy zBQ$K-j{Vq>jnOh$o{=orQ!0Ik9od?_*@~#F+1#w@dA$?5)|_41rj0tDop~A8xeiKx zr~TTnjfs?+p`eYaiyGUwo!g8!+ngJowW8a=9o(uT%c;_+^VEA`EF;3b+|2Dc3>?e6 zo5l*;+|*s&a)a52G&S8T*LqspU;k#^;2qxM^4y=syX+~m<0szgz1{^QvCnJXb+y_A z&EE7~->%}`Hzd7DS-gas#rFN*01npk?RC35+7ZRu0iNIr{w1k>SOtDnt~cNdKH(IO z)svZ^zo)#MT+4G^;U50sjKPaO7_S(}ny(DvD4yc1Qq3?6i6WTUDjwr9KI1fA<2HWd zIG*D=zT-UJ<39f5Kpx~mKIBARSf1rt zzU5rr@dTKIUXz=4O88XrAV3zUFM+=5GGxa31G!KIe2^=XQSQc%J8azUO@2 z=YIa@fF9_AKInvA=!Smii2t7GZ9&>hJ=Ti;=q<9>!qef9Ug@^jpx6YBp$X$y+#Z?^ z(^CCtn|rRGZs~o!q!v`_8NJt`?u)ISW6#sIlAW%m{@NNO;S#<#Q<%!%cIn^Ed9Plq zH8&!;Uh98->z-Zgfrh~E#fJMT>E_7myWZ@j1yIO5pdo7Pn~hS!dB>wJqA#VJW!b@5 z+lH;FUgv`BcUI5~N$PF+z}}7D+J4x#sb$)o?y`=kM|_fhL&fS|ROl|3(R8xxUZCzC zgAWX7^Um4aZhj`3%*UzPehl$f)U1&Czdr26%zN4T-s}F(Fb%%&cHQtJnxqasQMgXa zL%YR|`|xc%q>22+L;qLe+J)^RzwPyY!0|3@A}rt3*T8F%?P7Z;)adiqa`88R>^bl9 z%c(6rzw^pH!vllyME~?Pza_t(^lVM?>-#1X|Jz?5^kEWzxQUx_?9y9M&HX&ujyS6_E}%~P<{F7((y!WES&%OP71}q#q1~i_@hty zthn}*Z~Kx$_6^+m@2HX{cmmjOmo{*@AoaAEJa`2likq5ruySg{%vjgih5ga zva^LpcFC{o03k)-K!X1W9+dLWAVP);86H#^QQ}024=X+#=nx@AjvX;36u9u?$BQFP zCKQQLBgvE&JHCV&Q|3&XHErI+nN#OZo;`j31R7N6P@+YR9z~iI=*F8SSE`K2(rL?v zQB|U(d2%FGttX#`Y+6<7RIU)iGW{yntWJ_n$(G&75^l!1VBadmn^*5%zJ2}v1squL zV8TSvo?UCzWy!>H=TcmZxS-;-U8hc-jMFmatrH#F%P*e0$^`RDql{d$PCM^>5lJS)?1|2#{M_;|C*8zz&Nlh% z6aUUVA4Ce!LLY^+P)E6l(|#ut4vSVIE61GK(FNNOAuL|mDXENBXrRRlO;7&@8W7w#xPxCs#dC+RdP^i zopo^2O0^wTRdL4!E!;CNy0KbnWo^r=tUhzAAy;{XXx_%slr=Sa-R<_&YquLMU)A!B z6D@+3m9xfs`|WpMwF;_KVFSTkH&zc{Vs}AMxgxh?j{#0tUmp#wx81gEwd`G7uj_AE~fcmW*as);&Wk+nPr)K_LsZM$U9nOp94Ph=Z~lUnE%y{ zONMwWvZUjdU#_7FsX3IfD(~5_r%TZ6q;E#qpjO{58)ViJzed)UAM@s#CM;X*r@q-97bd#5BK)xa#iSAi6#7Z@P{M5 zc(am!)&KfOvevZ^ThP0X&8FwQ?2*rMnKK}1O7}0-ajR{fiwgRr=ey`Z5dVPc(~kVg z<-qwhkZhN;UkXu$zv?KBVj%2a1k<0P->NU<$MI27DtFXbjYSmKS8Q~xw!;j9v&8^t6p zwmKv33lCA9iwK2fx|ViHq{1FM+)@@PnI z+HRMRo2NE2sY%EUZ+|yC=scBI#qULQeo6czD)IR?)LctmJWUDr)>zwIPF-k|PK24-)&1z!V6HFU%a#(iMp#Sj-`B03-RC~tCD=o?C zG|sKHbJ%ffS@HGF&R(;vnS|)=fb&^=nkJ46yyn(MyS&mNPnssh*-|I>8pZY&Lin3) z0*UlcWQydTp+!>2C~Mq}HcUJ|DXVTdJKYiTQMjz5CCDO)I-Z)AwcT0`b9q}52@ZCa zbz|PnxND{Ff-$%*LacA)+Z&bIb-r4v?|lI?(4t&*shibrfCrS{X$m+<5HoO(1lK6< zq8GpkhVXp|?A!>m$iEd%k`w#e;LKv!!v~r$ct5;PX^uEB7BtkGLTq9d3ueWlY4JW| zyqgPCiAp7&agJkDV^h7@KRh<^cQ|}N+;AAkTsrcGasP~|9}ii_e~NF9f$L;1MbO6r zCa##G+~0CO7m((bWS0MF<77c9F+IvIRE5Ymr;TRPr=u#%4ZVR(6)XlwXJFJ zcJKOg%X+lD^G)y!a@*ZO#H^v<*l~Yi7u_&TccL&|nv)OHwkA&_E*t7_GG;uVE=S-4 z$2lhA0u-lVE4VD(y}gg}Qsy3oxzGh_*fBF5=}yPElxQklTPgI0Ri(J4#d=hz$I{_T zPr0a8E_Reh&g#Ugt-G*ZPn-Kvj1`Y6>2^KykoN88Uq|HDi+OZWULEX8pXJ-%npt$B zShl#+=~VCT^|1$*>we#P-g6W7WzPqPhy5DgG5>GID;ujs$D-o_&vUGi)Z>vaspU@w zdAs)=^ms@8)0>&Pv@brrNw0hB3;TE33;+K0jc%n`d9QQNyLjEk{;ytPKl+pf|Gl^O zs1WPt*=fc+_NOl~U!_iWp!y#BI7T7w3Ho;9S~ly;FFfvfjd+0joc-7LJ;woUROWl% zqz|t0sz-8>elGIBP+`*D5G%O1)b&T?KT?KT(&PG zzr+c>5Oh6?%B@-}!J#uZ)4Q$kL%k!6v%<>2x7xRtBeZ`4LZ9Lu4n(Qg!oZ8$z!b#4 z1a!J5sy(60K;EFdaHAwCOg<8Fu>ZZQ!VdJR2kad=%t5n~s~w`B2duZILpU&uB7yNQ zCA7gn8le6YwXv$hl4~CULl49`9V|jU8$K1( z!xu8P?b}6P{69!rvlyhoG#tc1vP9krCs!23s#M>q$q^9>-E9OC~QW>6sV;!4v!(}wX;|scb zG{InONW$wq5j?-s;wmh&J^x+BgZ#K6=0FVUk%=?Xw9 zBE>2yM)<=zDSWU`?7HUj8Wh_zXl%u1e92BsJB>`oocz8SM74{Iz~rk)KSV!{jJ}WT z!i?z}W5hlUR6eAGrseQLDqNF*}A{Zhz{#6eb6JBho= z8@xZfQ%VDi%NA^-t8^l&tje#f!pu|4JoL-1JV=MMsNAx}%-gM}0!+U$%)QISvCO@) z+dpG$M6???O>9e91fqA+OG6tEf|JV1w4^pnum$9}YC1Z01GmEMT z&JM%2d80Jw3%Tl47#O2X{L37w6Sx2>GiSoi&grKeL@JPjPPQr<@4Pkkv>o&uN|{PF z_oAJ9J4@*BIRK@%TsbaRbQOwp2xs&|S;Ms(RLp1F#Aswo;mM8=q%H#eq$Wxj|2sG< z8U}2B}iMSkq8T(>Jx#JH^uy(K^oDQ#D;qFOAbY71Ti`)EU!B zG_BJ@Rn$dg)Dc_DO#9PDmDEY4)cNX0L=DqQ)znSpR8zdoui{Q=i_}gf)lxOpF3HQ< zjJNqb)KhiUSA|s)A-}>LCjE@nTgBB}&5)n0zw!h;Th-NI71m)L60+RNUzHDG}^tkYu0I{)@toBl~lZ*c4RQhlN;0 zW!MT_*Z+vM*o$4*Ld-(r@K!&&{0El$F_; z-6D;FK=y&i4|T@`jZ&KR*`K{LA`;rCgoNO>r=b{+umBVLrm1SC0l#s)KSG+ zFx3~byTZH;(6&`DiYpi)xmRq_(K21rQI*mPox;KmGM$uKIps5+@+(Y1TRKJ1F}mEs z_);RXKrKB}tW8`v*<8iC)W~I%$^F~PmBG&CT-;og19M$aQ``>=UB#tRF|k`-EKxx{ z#s7%|+|_#0B$XVUbtR!4-uuiT;Vq4&7&Lgx#){Yv-F05(b)Wc}+aJwX$0e(U(@k$X zzx69SBP_5xO;yJNA$&uw^13x@5&2FTGgl(oliEU%%%fIEyTpp3rdn@(p7Cm1=X5`9M{k!-VPl;B22jF z{6ShJr$4m6F-726RA9x6O6PRh?KRdt#KufS%@2Z06jmx+oWu<#P5$alOmbixw#t!g z%GP8~_Y2 z;BDjLjqM|x9OCbtJ#lO*huzW^*1p)&JTx{|h~qD-rK!Y|JR@wsJeFg%(pXRI#xq7^ zw-mgM``n@=zG$7-j!of~yuOCxUM;%P05n8*#8#VZT$I~Ui)7kj@#GjiWx`{~mmSjb zgJNp@V?`#xH||L*MmOH&Ch39LCI&BGjYU;F-7P%1BeWq#q{HVeBBe{lW1Y2Lu_G?d#s4@|XCIcO zpnFPtmO#2)qzR4Vl4RLl<;%^RM|rNAXr4=h6wtMF=eaXC<$0}c2C$^lkEDqtE z#%X}QUzrZVTSR3?Y-x?IX^vJTk1oI|-D!=QJxMcXBGtEn3eG;PO-sYaf-X1Bi)T`9 z-~fdpWA@BPmeHPD>KDFFOYX#;gTTN{OoRmM7DH;JwCITZJ*6&bxWZG(O3Yu(IIR3i z8(!*IPEX|7KWhX^{CLoc9_wh6OLlagib3mImbfqOWn#X=c*@eaPGl_h%O`o?Mt)Nj zRB83Q%o-+PB(A_NN}EZ#%PC`664pwxK4?b%XhB*-M^-BOqihe`#Q(%IYhI;o+#KSi zJYY;NW14i$u#~=ECgQe=X4<8yJyqk?_UAEnmSbPZ?y2@H)Sl_8en`IE%H^)TOPpp5=4m2CUo+;u@s&(uo@W9d?elIf zEFMn!mC3UX?Vj!{D=h86i_FaJZ<(Rw`ITQ78r}xKP5O2t|Aa#OTyO!G(XD=?=sq^g zn#RmF@N4TbLUHLCnWN1dwoNKs73$(34L8yK7W~z2x>V4^_3<0+ASojs=4x+XHOUYM zY=Z+;>Rf3}14H)SX>$HG9(Qq*-dX^OVt6f+9Pe`09`jZ4+y8hKVJwvW`ExaAw69h3 zyy4R?KUI^4^ex7-D4&oO-}8yFCUx8GKo3+P<4{2dRHIhk#U+e`ja7NJ^x~Fq8watm zl^$JYH^wb>ZPV!;Q*~Tg^%*tMzg3hbdXpA;7t{SC1Cm>lOItA`6J!SyQJ;1I&dANP znHWiSNVay&4ZOOsa(Eo})L`o=WI305x1t48LMQee$IxoW=%FQdOOf_^2joj(_B4m2 zXZO-*ANPMxj%^qAl#Fc&)pmIQE-e?ijwJD0?pYOu`2Pnkd?zC8PR-|FgvZEw16 z0slbxe5B<(y!Dbq<4bYXa^#W5t=^3Mn~v;+*73wASmJI&I1VeYylH(8@JWujjauz< z4}GGuBKvyC3{P#)Pko9!{c;~_&AfQmluy`?zyIgH{M7HketvS_Cq0l9YdRKw(Kqkc zhThpX_j}+zy_c6TU>_7jo4t?FX z{OeC}@^AX^Kb=|a{ZY=P`d4wfHZ4-be=Y|IDFO%nD`@Z_!h!=AG8CBbVZ(?LCsM2! z@nJ%X8aHz6=+Pp^kRnHtENSv2N|PH^UNrdeCCrjAXLe*s^Cm@+I2ZogNl;-!h%Ke` z)R+>Z&!iqlChb|Y;!~p`Cq@OT6spyrHEq`X7!~BvutIsFTspOBQ?6InvUMo-E!?)dRx0VxlT+v1OMB((+p_KQl!zHK8Wa zSQbqV@;Bj!ExNd$W6aIBpkM6CNMl+s=66(ZDjs&?WER$ym5zCBD4BS%MOfHH6#{tV zf2d*j9EBBm9v3(;!Q5GC}&%4Mp;{zSk;E;lZLJ*=$VgM=3|Iz*6C=am}VB7o_hl57oI~I zxF)GZ)nFW>@CzMbrIviPz2J0$pJ@U#{ zpQZLSt95Md$YZ1dhFYkz*=n2VvZ>Q7QqyW+Tk<$521S-R>Uv&WiCXrQ2?n&M7> zrq^v%je7W2A#38%O)Ky$vP+4a+o>qdo+H>2|Ke^&%Wx|c|X$%Gi6}k{Pw{E zR+}2cORKCl%|;98;ML2yt#^n~@A{R!ZLWPd%f7yAcHukYYa^AA&kG&i)!|w#s(qvV zamjz1YM_|A?v3)GMav2zk$q$AB)4$8p6$w@w=Mdp3oCx~;8l@+tKdrK&9mF4`ze%D z1v)KXi0-e2w{if_H@x~C4i=a$Oe`}VEt zJsr45o`3rHm2Uky{{Nlx9{hx~C$9O{xEHn0?9X)E6N}6O=srE&4}dLGp7dZeKL-A; zDDW#EwX#<~=iv@K4Fq1W9tc1VHZOg|JK=#sh&}2V?0@-tAq- z-RH$I!Y5>8EZ7y#sKzz2v4%ZtBOJ>Z$2p2EjdU!d@b0L`J@T=Se*7aKg_y@cddH50 zJR~9$smMh#vXPFQiyoOmec5p8O;zLn%rkj<~%1l)2T^YzK5JfQYSp)DbIO+QHveJDhq$k2#Vw4xTh=-VcW(T#Gn zqaIz2Mn5Xjk&?8ej58@pQ>xOHCXJ;oeJM;a8q%23w5B%I91yCh+Mc`cHs@J``GOr_K9*}exSS~GbS=~{^X5+EaV}3k;g=6v@gR?nP!?m5#{x+Y%LU4_^zvhzoXIS!kIOMe-DC3x<{`2yeS?)U z^zgdmD{X1cI9zjEjjSXpi&@EfX0x7I1UA9q*}&`^?Oir$=lcD#&@tr@ldto>gJ&-#t6SgTT);XSX97(d^1m)x?aYC@ z(mfaU(z4vnZBMh)pB`_K3o!2!qx#=tNBF}V9L#nH`3U)DpM?Vs>rO{-#s5o~YO5}t z(QJ2N=LIf7#{X(aO?S4!t8?ajw|Mfce_zu{9HWa1e(I!`4b2Nn9x4TqNCZc1a~2Qu zlPg$6t)6*~X#e+V=iI(KC;REgsd48QOKMkqy!;dneRPxZ_<*O}pUJ0HsW;y6-3@ia zv)(VQOWDHiUwrkh({;a3eEVAu{*2fKap)VJx7}Coz_lC1JPXj(4W1d<@U_pG@L2QV zm(NXEm3d#T+}F?59mm0%`DqvWX&&EQo!RJ~-FT0iHQ-|zVBF2mN!iMuDcG*L0srC0fn4ByU->;D zdZ3xwbPVeG;Lo6-0>(@Q+Fsf9pf*V$5uO+gDq#VZO9d8*W6@m=Uf!&r9??Od1L6!6 zk{`4c8r9w321eVu^;)aFpyk1tu1O5Vk>J%l4bo|0$FZRHwHO$FVCgB)`N<%2m7#oL zpc_ii6<%2q@*R$3qQg`Zvxy-oHX#5;kMYpq9X28+n&F`B;Us<=ERtUowxaKG1?6d7 z{PkWC4&W~8&L9S3U8!Oh2I3cXVi>j*anzV4B90+$8TPqe?nRgVm6@mMT@98X1Pu); za@E%{&S}kJu*D!4I%DEt2{Pi|B{rfcE|VgvW45s)H9FSD82{JSp%y4 zo>!3?;)P#7ni?a5WWgCDsTfoG9V9%0okDtJ2To+>C0mm)q0{`MKPH{+o#9+zq%gW5 z(y^jX)?!zrV@!%d);F;6@tIJ-Qgz zP-Po7U`lQwPzGfdW+dNuS&K^JFm;k<>y^UhoArCup8&tYSxIGtcNg6)3 zq+coyof+l|?j1J198%DvA<5zo8sF+&&xZx(kMSW>%0t=R713v|A`K0u57`q`TIN=n zCRS3S5C&8Qq2^+`TAE}fPPry+=4MK$^831or<2@`<`6DnNDu%W|;5F<*QNU@^Dix@L%+{m$` z$B!UGiX2I@q{)*gQ>t9avgOG(a^#>n=(48Gn>cgo+{v@2&!0ep3LQ$+A`?TOI{86z zF-nvtO`u4H;&fwGmRCPIg-W#|S13ipiXFQ$E7`MX)2dyI@~9?FerQ(Q8g;7Krcqkn z>d3%@vs`_eityvelPkYC87@pM=x|GDC}IZAevp97ffn zR5B*?<9skqwPJlOeuxl@9?po+R8y9j5SdwG#HLwj#`t1GQo`xwnOKS`(3X4N`Q?^a zS~(Y(YT_xTlxq^&CXF$KGK(&?EWu-<9=dpCoLJ6@;HI2*8j*sQMHJ!{4;mw(gvlf$ z%MVOwsHm7BqW{2&GtNMx#-w8^`l63!3h4{2@Zs8LnLvhEV=bnha-^9HN%aFArZ)K` zhfz`~C0Ca&+9i;8vZ?1k-ZI-IpxTC;(VLf|Y3ZPR8fqr5%}zP2nRQZ$ExTd9>nFHW zQkridg}1Q54)ww9?wk_qJt6U;z};m6k|*>ffPZ7R8;7& znF^i#uq6#NsDMa>%cxO83^ZU!C2O3e@Iw;aIYn9wC8(f62`PyDGYUqy0wF0w$FQ@M zKeUW;(L5hU+GZt`P(v*c8u@La&l*z%#9%|(DFmHD+Ep&3+@_4&i)|uW<^vj z5Y2+qj5mhj(icT$CA`gZ6hD`~b`*jO-TFa#^IdZlfR|1h+cuP78fPl_-LOJFn=JX^ zB9C7BmpBVwHO@jey*bM&Sd#G-S?@j-&Ac7N_h{XD!aD*^Kf`pl%gAlq?1T93lys7~vDwhXgH%P=KMh0}^2OhD?Ow ziYh|F9XJt2CNQB0bjV^WPEo=&B!PF)f#VMcSU?X71POnTU?q}Jh*Gqo6p+xu$SxR( z5vt-8q4rVN`I0}%CCcI-6DiOg-;4TVa zfMF&8!Ltiy@R^_}1bY5~ghFrv5nMBdFd)c@Pf~@37!>6Op?E+lz#)cz07VcjIsZU3 zvhRHW4d`RyS22lj$Uzb+MGBArg;Yet8NHyx&Wa!jT|fvz5FG>%p1=c7L<2&_2u3j? zWDIFN;RjjpgflLx3}>Vw4k;j65$vEemMWtbK+wS&h_OB7^yFoaD*qQU=S8% zsV*d8n!a2i7c5N$ExHDTuOX2RAtgpCdU4TYNJ0o$2$2f7rVLu7f~CSR!V`|5hMHcq z7@(+u4*CG0UDUu>P58$UJW35o6hQ})NCrk%s*G0L^$Dh_s7-aD(fUx~2A-gXGJ25; zpkA~OZ3{yx2)j~R6(R;!Rak6jL0AZRHEm7cfg~OpjI&}i6{Z1KlAr(tBL68v7+2uI z6H)*P2$4;3<*hTgK?RM-L3fc*+o+bchxmaG4w0$|iIiZ2_)BE> zYuS<_qNp?|MKtDX450G#7GYp02y>APQ}tIFzNkSF)}V`?7URelwd-2r;EMt)BN(Pi zMl>R!vLld!8a{3*F(hO}?ndERStV?glc7nm63G}mWhpa^a6ngJ`Tta=(vMDiQH))v z^$0UK0zp!dj3$|&52*^NE_5NGTU7N4BQ9}`i?LE>q?mk=#d0vxd|4gPKo-v6X)iXt z(n_EJNf41rZE5A>k0k?&G?c`fTWTtvhFDWlNkJw&1`R~$mOb0!s3oA$UsIKo6b#it zA);jmBy=R{S9jq5q&&G$g?TD5wAw4$MU+ z3IT~*_`(MN@M0to!9ruy0uhm@#1*Mf1eFql7!w=>S#xoPAFP4S$#& zB0|EjLlV~T2U*A>3r|W~gd|RJi@WqR|A=(7Tmei__@WO&AXS7;VFWDDp%S-%qNaQn z1XVM-6@Rcqb(P@?wa!4*rt-xgNI`OhrvNHm9U(j^P2_YfN z7{#Rm9sY0&P0*k(eb~4wJhslDM`8`xhHS-93MW?zBh@4%5D6ny3wA&Y(LfEBUt4N&g@OGm`}IF#{tAAts1|lE70eSOiQU zdGKchS)&3=um+h|DyMJ-Q~-%K&{Y5AGgaVF&M*s0U;{N^3C>^)&|n8oVhPb;Dkf+I zxxj%<0Bu)SG9EFGn{Z_AX5S;UNz>+mmDpp4)QE(qe27yJD0;P~KY88hO;tN|T6^VCnrBDJhFauYxdYO;{%h)7p z&~TQZ20YaY#p4K>W-7Gc35Z|>IuKSoz>6U{l9eSkpOs#ofNT+^11WMqO@M0>LRpe9 z2tr06QaO0N5Da0cTS9;bKh-3Dp=uDd20Bn%Wf)oru~s7}Attz4$v_Jof|ZN6m3U|j zhBacu<`;$O47$*b4e}s`1q4MU6{Z9cPBCJ2Ng;Ttmq`#6bG2Yzr2-9P488z|F)%PA z)mokanIf|lParTOWoIb@1*bt;!T&G|GT96IlL|`-RHdK-d=@jn=TZ_`k@7j8E1`iD zaWP_fdpy8!9hriXr9aUSpamu&o)#i8zzH#UD>4$E+ZLb!YLvaO1~*^_t5*p&@SRuT zejI2lBBETyz*7#|i~4hgnGjUMprAukBxV?GSXEMzzyjOJh$zC9J|~n|(jYmh44|-+ zHIfU~m;!b{4PnTiI*JIiqEJZ?Up?gv(Ets(;0TC$1gjMxA?gg4RSBTQ0yr3x|GunS9ojU{CVw*N^D(uW09@RJY%g%~69H3I<$}sKSiz7I<0NM1E;ABnZTnV zq9sRA0|%!Hw`VNL6;#PU4B;xR%rKTEs!nR~Bq@5Qq&b`|YEtG1cw3nQMAQm+Diubs zdOCui2^9lszzjzj4Mmm;D(DPYs&Lt~3(z2C5)w0op=vM_t>J2|KM;AVg_~f&s%vrt zg&+&k%A^tkg`h?!Q2#JwKlP`GwFa}`Uy`s^o~aA_Xs1!>5K=({vl5eH!wfSTsEc=4 zHjtG*m#BwOo6d!sx=B9?cZNn=L!7{|9{XTwFh=Rca1iAQM@I~pMHNkO1a}|{yRZz= z&|^1M1O5XA0}HELxvfN&w!#pt&@ipcunRG;tG3skYVfPUO010AxJF?Jlp#OIicknw z0z1$K4w!>rpabg_RCaI$pc}eZu#eapA+};H;Q5l#P>`Yvx<+6GU2p_X6(OZ?p&@bv z{Lv>{10e|quSKapl3)a)YXnQM1ZwAQPa>-R%C!L7d_N0sf?8({@a= zX_nAHpfTVe#s8oS4(JIMw^`26j3J@}I$#89APFT2fqx-^p4+;@yN`MmS)Un22y+C2 za|L!lzNS(z43(x}uy@Je2~RRt#PFtp5VDe$j5@Fctw2?z*(Wp*1`Bp{BQ;*TCAG1N zYlS6ObhW5YprsF$o00ki?8>__#kCDVL+Z=E?%RB9N+q-Vp*#g!uR}vD|7K5zyqXvO+R=GcX9< zs|=P<16bHPYLE%1F^n+~31SnCoe>{>DOtfV2q%aFNC*joFa)&a3qU2uDsTmva3oYR zBob0w=>KEHM0RmQg90tH##C#iVYnHqHJZ$ebw;TROP~U3P>sE5X7;FEhv9v!K!kc| z14iczhadz%AgE|Y3~In(XqJqSLkDV5JUT!E2+5>zO0H#m#%XK=c7O;?U>qGaV_bS0 z-uDNctOG*uf(hzJQpp6bXkKxk0>Kq$y7+p}#ic}xr>ArTk=1I>5D6#{A|nEZk}!sJ zTMFvi2RTcJOR#syn6Y0w|D$OOOd_paXCmlyn!xQ*6a1ebNJg#m>PXq!ML3)?*(7U{IiV zxc^8Bkq`-?zzR-EeNPYrg#cx%c^zSNKz7h`%m4}?2MQcZ3NWgx4x|gEkO`--3(@&b zF87?&;0o2j38ztX(V%s=5JREF49pM*I#9rwMhw?M3@}}^ssm;rRSdO|3CJfQX(?9k zSH0H@1u+n&A43bFPzpyEi>EQL#^4OJU<9O~skCq!Bf<=-5D9${2boZfEB7S3Thlk4 z)6lRBkQ#Z>x6Fd!eKrRQhtLOua0;e^Thz=DRS^W*c4WJd3AC5U8})i8Y)9d|&nt2S z>t!mjn0F!a17Tp#$p8wK{awM(jQ7Eux{wL2z-U;T!Zpxjw#VDK^4O;!*_6FtEB|){ z16`C*rmx2p(Xw#Vr_Dsf)^ZVD2`*h7q3oSkR1V5<1d5NDGKG zDM5+|s7WZ&yNaMR=^YG3L!n)U9z zf6s$}1>dCkc#Yu=ULZ$lema{@ywpwf8AFHdoJ7V9WWQ^udvFbYLw=iKu7x27VfcHU z<}Ol1F0sCe1$ucwIl)j}X^1Y|Y@N%Hv7!ZZzGf7%5Q1QR_DlI`j_{3BsE=8;hZj|L zK*?4P$|yDSSe#Zw6=okY`S#C&9Z5^X<^jx5IBKZ${ZH>3ZzFB4eeu_xhU}hJ)n?@);2HEo@k@%fc@H$|b0=8T*sYmuzE3tc?!$D@?R;J%wQw%Wh8 z;>n;x3Ph=vp}`vDzd=HjuW3AjmaVhn#2G#ruAl!BSLQ4g-gkY}lKlX_X49ja=DPOg zN=d0VPS^qa0!<%<2hEB>82vZ7D&fVrbpvBN(QQ|P(u!%Rv)m1amk8RI;}9n_J^MYG zv9@pZd5~iC#rG+aye!fx;;B9lZ^9~>Uf&$T?IS4k8+*%krZlpVb3nLG1NJP(^|MGf=t`1iC_V*0&y~_=tzHDO+&L%rphUf~S?5v?8FR*XA z0kyLit%sFEdb@*1^DeKkMA?0I+mmniv3z6MBm|9Hi8cWZcl*^ErL-db(4MRE zdlXmlk zO#O2|)SL#xq3=jrhF{5{(x~6DfR=@&-KQy<{h*KhdlyY}8zRQ_^G>O?VIq#^As7l% zHp`j&a~n;Q`xWs?`7ai5)d5oIByt~L@?R_Dq$(J#S`O_g3BOJK16Dy`r)lOARvsW= z93;`CtmD)yfy8sH@$=WPd-rLskr4}VG>KTFG63BeJ8wSeWXF@%h$(RG$Df`&NQBZU z2avaqLnJ9F7I5%Ghz*IM7=SorW(0VwAx2)dJ{A(zIh2O4vtKM9-nS_iFMFP2$wH8@ zC^nErn3r6Ag1(^zL7K1=>}yV^*GFAY*W7EO*+&xSpXp`m5$f!vMiGS)IdW5>427XAXbGAnlFZ9LaWY`d!v9zJ0ADc=b&ppVPiucjWhv|2J2rGdeJRQAy37 zv#?EoWe92Jp$``4#5j=3-isz)FHKnU@@jXETb*gX+_x^ZmiE46m^!E~WaQD)t@d!r z=GTtCnVz9$qfCG2~DJ8PxL;y-BMiS(2b~Rl2&O?W$~ZzL^r`)H+Qe%Uo67 zc&}VZo}yG#$7nt>eQG_aY9sT4?uYFOtGV*7J)5Q4sGDl9+GbClmGUptY+2q%xyEy= z>SH(c$7(lBmAy3!SZK>F?QMvoYqW zY`4?C9z1K|Q0AXM71a0d(R^<5JZF;n|C#|FzkD0ylMB;t=ZYiTk!!u@u<;k|SJeT2TRnF zPi5jI-zR=mFMXxkNejNuZhwC1*P}hNp6wo0Tlq*|&}{L`ROa#Kqq0x}Bvs*IRrh&d zee;mkE`gzTL8-A9c6qN?`>JRP?-Xp~O-23hktDhF8WAYp7RRfQS3ib6gapEiv_gB& znO;rMmXx~QY{-lj)gyEH^@I&q3#4CIufM$#AFDR-rkT7=TYf8FMacUzQLFRsVX2gc zd*~b;Z#a(fen@L-;Ev_0I5L|oK=)RtdHm-xjknI&hpVfgcJ8k^*>8Q!^H94V)@fIF@0a(?QsT$?aCo-s0&xL5> z`kiEk6GZ%hjI{Q`Ul(mLAo{KQ5C#gQ?{n`d)EXaqwCo|1Oz+|EP1L7?6>zQes@l^E zm;wW}Vv&ph)OBWt(-oh!V~bB+eR+ae{s!#Pok;rhTc z5e)kc?M)e@RwLjE16>I@Q5wdYFT(B3(XTnAe6N*Wza>n81C=0>Y9fIg=|e;x!&#@P z^lqBoG)c*Za*iy$x#^;L1$b{y{P8e)1H{HlTG8cafny=JvI|B&UMrYRbXeP9-JJ!= ztoaW)#DSPS2Y7kjCL5`VX5H3=Al*+!4AJN?+UMCus>ScjrIgDUlg_FA5{1g?o^68} z^Ulztr}h{R?dz;%+H`*k!x$8&f}TwJS6%aFne?3t=bhCYlE^hx6K^O_`4u#zQ}m8b ze<8=kB)VU*u8i(%^+LkHv87lDv<%auGU9)NwVsjUt?=PladZ@kDrJUCdsx;P=W;P3 z^+Gba&i%F^N!sy*OPJ|-N-uX3szRB5VKszZiNi;>{vE?XBQ)iBC4QfThsRt!D(=^m zT-;ik!*AG?yzO^kI?_YjPdXAeyE|m2OPEq9%Z#i3AV7B;{~$8T?oo6BhXb|*nC*%Xzpp}H`YmA{0ystcNGjt&1s}WUIlXm z(h-pr2QxMk?2Ys7Zr^1zt!m1F%+2WFof9bw`@J%_KVU%Wo{jyYqX_3LdeF-^AT6K= z)RsC8u``wFpN~=RDAJJ)^4onhbVa=_uTd^>v&ivP`P=YSf!5zL+LRra-wNmkzd#Gn zz;y;N$7~B!#)85kUNFr7H%NiyP(63=<_ry!?I#m0cNat7E3oC_v-B=E2A?~#1*^3zyq&ntzRUZgtX8Usr(ez zjtb{WAKj8UeLvClK{*({dn3En&sJsnYcB%=b)yVEwtP)AJJ}j6Zx(8>C%k9wJ z`zzn|Lgf)b+gIQC+F-fDp@7LrpUxP$QW$one5szAy!aPbvDqg0X^C?{_qrGB|2nm9-^^Z*03cim!#rH>m!P0!=S#88*&$M?QNJw>P0I?bE3o5Qt3kMgFs7ij{5<2JoGnxhAm3Y87WMcz4b zzxtQoXVP1$cQg7tjg?H`%XfPtTGYjTS!UTKS7eXyfchCK!*DS8LH_mE+g1Fm6M&C4 zZf5eHw+;BLfhRTtS#;4m1F~CZ@b2Do%tZ;vP)=dpqdi&gxIY*yxGs=pu@|dQngON8 zOspL}a$uuq^h-r$rIs_jWV?0_RWv$)xxq?)jCoW_Ma$8QJh;#CrRad~W7nyf6fa$B z@}N{5^Bfo zZs>M-gC`C%&L_mlPHr84ULh(3PLuvunBX_^Jo6Rs@mK}*TJ4AN*FbhC!&c80xOZAs z{NLY3FEUv~DKS8*T@ngSkKj^vRyHZhtG-8&R^Gg{~yg_p3d^7xT)=xk8IF`CzW~z-6AdB zRyZwfCFn%BuHjCR2v*m@-rzsiN~>v*Ht#D3oUG4Gnh37e&l>WFK2@y&LI`8=Sjvb2WiRC57rPb`b64IHTvMnG@U%3=}5sD$`_G{~+7=7!f4 z&jx3v$vlBHM~>G9I435Y%H6Lc{o?@{u60@NXxSHtW}-}PDkaFoLZ8uB#Q)SmCMO1V zbw;RMwd)elJXVYOFY$V`Y4YZvCwTa&iej>>utoIfb%uK1mL#h+bQf)Hpno|oq1Llh z)32d3m|iNtUI}#!4LBYT)*2al@ofGB>W`=?c|}|D1EgTaEY22kwnVV3N%90F{h}BL zXbwPQD7VvxV{((6lPg`WL6LQ>@q1N-1d4x*Gz!wLkenFHAdZhonsh7Oph!OTHnR*@ zxzN1S?HZj+{j{);?oK?cjukV_(}v}1k34i!(e4`MEs}DZ7Djd{C+xA>GSrLf6RXk_ z6%eYIzzH$sRjIGKwEG2u3t=DJS~3Tq*$L8$D*D?7rpVMpIo@Q4nk1)VDefW|&*tDC zezRwK&==_j&kU^67;4h_lQZ^4vQQ>DZbGV>Ex%5Thgq8{>yohJa+yIo9&@Cmr&6v3 zyuvdm-08)jpp8up%+-24nv}$d>XsjU*{P(@uWJ3I$6UXQ!1uvuN;T1c1FDY(>mRGV z+snNZo8-I*M&Te9mlbc+82NQ6n1M7zZ;)gEfM|cDo?Rtpr}z2`DQxZW*E>kcgKVa@l~!&1wJbH~!sYsT-}T z&7Eka)TT;;f`hNREhbnTCpaV1xrP;Ss z^B4Z}krvaaO`bx>C6R2Ud>ZKisoj)t&Qj2Fnf?|ea@V2%EZT+-8L>mCHpN3$A(n3%Y zmo)7RkK4CdlNa4)kauk%cJN-AIX`FUB{bN4txHRrPW)QuAU|;?!89~C{`{%;jOe7S zn{&m_)T$6@OHb;R_8p>zf4mN@cxa>@^j5beS<=QtSZscj@SUiqrg#Z$Ke<(+9v#1T zQ%NIo_M}!AmIl?1ezEUmo!_N;MmM!afvTiKqqL?TYB?C%&#PnSsev^a{I$BlVB^8W z)XOan)2+hRkbG}Pn`9(SdWp0vyz;}_`8Lgf7O2G{#3s7$IvQI1wDL}U^(A7xGgVZa zDsEh}?EVZ^J|`4w(021c{=GOY66F-J-L+nncJ=j~`RZK1ezsMHv5kZSQh+GDn1DQi zrQtk!BvTQt`W7q@9^5VxUR&YfScwD>y4gz24dE};OxCj*Q0vaZ_{`yOELW$pd4UD?c$x~!|m&A|U zt&vkR`Zno-+y!awu(Hv=P;v!oB8Eo>I{T$0&BmUQu_})XTO`b+0f;Af($3=!u*9KnFqXdaJSWdo;N2!RRJl3*8_Ga6b>b@6P%ugETp*!FooQ00xf zB%hU*-Lm9X;(fHM9XISOsG%-sT`As+$3uK$queywlP(v`c%lH=wbEBwpKC)_eOq+u zf@n_HOvOt78+3Qgu3~;S?UNwsvC_wZ1k?5u>zfzvej>r+%WMj}5kR(1!tUZOW zwX7+^LFU;>S&o~0cx2MJ<=S1C{d5VfipF?A>(;{;R|cW+Q*U8nWvT8~X91=t_K`p) zbw840+$*VY(2&?GBL-iadxIJ&unzJ4BJMUt-7ZlJ)sN6E6$v{N9f6Xlt#W4x4DNLE ziOx!=eb>A@862DVFrsvo2lVVpk51s#13swT@pHcx=$9btlxIET-qMoy;&lKJT}^lF zTE#^e$s^sEM{IOyKCm$g5|%!1=bGquocLq?CKgX|BTWhaCVzNh`ns^Tu>6I9@U|Z{ zp0CCzU1Nz@EwL;5GRgO&!O@dd(dH@@Zx$*) z$`Uhb=YGdWj_vWEO*UPpI9s=Z#inizE#I&4SyPGc*L+oNR1*l7Xd9F?UW^}uL8ygJ zdhRz>-?aWvp!?4HfhER$C{6f>giy)eTglVJ`_|ij(+L8apPz`5`YrbcKN^?@ce~|b z36qvVzXzu=Qg$_+v7iaVbWKyW@zO-Sw@lhBQ96tHA6Pt9YVcrPlf9C<;C5^GDzP$; zs;<@j@1J}_TBaI%e($|GyZQcTZkl&b=bLuGwX3S?3DzHH*4_XK{oZ->^7e<4w}QJuGX zHC(G^bI)l9VtDv6{`yghLCfU2pp?X|`*m+XMG4N?HHLq7MxQG?Gp>H3Shk~~b-Bg` zhnkZiEnHKo+KWz?|GY~Ltc{ehLQ=>5xZhmvO>proH+3dt>LsF%Ci62Bt*A2%hW_~S z$pGOm)vvryNpPZdg452J;g2vspZ?VU)Yy^E0b~fQ+1b-)XDH?u<=R#U_fXyE9zNF# zgY#A(dIlPEIAQtYy42gq*T&~zx?dK=<}5r*Egy*fOBzUH_VRFsS^ywl@@B%Knk%=3 z>GI-5oT;#kUoO4ILvJ{L+%x-8xN}q8>sDr|hIN9C(wEafl-`fPBZg+XDG&XY+UQRo zs3+yTB#`>@~(b$I);d@hKE0j4$!N0jtqi6s^pZd!SSs|+o|s}I+#yG%&~QPA)}e3 zXH7BV;CTBLsAA{OqrqQQH6e!D)H@6?NRbxI!uv9IM|0!D1<&JUAV0R6P1*zf=cjMr zyxi^d>K?1(@mM0|X!iSgpQ0mE=F(}D&*{oaV2#%y0SS+Tb`)t06&I?l5cEHy7J~h< zLSKFJyS#cE?wau?w~JsA?fm|-(UVloAO+9nrf;>ziNb3iAV-qwenhhoS>|)7@s8OT zZ~3?3`x4q_s0p|@fY$tN6)?7)e!l+tB$eUsAH@Zdl?lJfSEB3&6Vf-@v}leh#H!g_ zWkJ6|{e;k;ECilJtBlkIbk#j=_?uXI1UEF7&1PkJ&)>oy#(D@&eLZ%jph6$o-2YO zne!rpA5IFF`xG9SwWc)&R8dvvHrTj)-?r8Ts4OjgL3udYECmkLn|(;-(*53|*=VPa z^vCJ+KUCWl?0L2-<8dQ)c+WGq+{wkkBLAQ#ui{^BKOdt~z~Gb8Yub?aSDyTuS$LeY9=$0-fGM&(*`BtaL8)4($=4mH zi!h3KrCu{yt>Biykf1sEP75xftM^dh=82-I<&T1eN5j%lsQ?!?HpF_Hai~UwjW>Zk zpfAT*gt#@VeBQq(Styp>N8n;LQwKX5_Qr86INx|SFn|cF1FmimCK-6m$S9%F6P>Eef%7p z&Fm~pNQ5<+P+^t?2CPEDKxW#3@2aF$i1?(X)S*m<*iaaUoy{CfITd?7FuBQ0|0m4{ z7ybEId)s#67JH*G)4P$lq*YSo!L@;|g-tj9I$`4-F0ujU zQbXL&&olL8q$?kNgxF+0Yj00Qb)o;fmw1b~BWifr8v4}JBE$Zv1;=(rk$(YN-Pf>x zy<1B7E$S$RC)cC=%al|l$9U2er>>wEZ&OoS9}`m5JQ5LkZ)KYE`EWM-r#3gx zGx-AVREhKOZd3~v9@owyI223V5s11Y04%Urh#CTLjM z#5qKFb2u^XZ)B(%UaxV&LBT3Q$S!ijLLUvXy%#28m~6$? ze+(@tf6hxDsWdwir60;os0}ceHP8n@6uiCQb|Z|4Npf-6Vzp>ek3!T7*%YIz0|mV} z`io@3tdpQ-q2Dyq)t*s{$q!v+O|tPOQrYWv z2yU1jLM=1k_bg;p`1g}QbBmBCGcH2IhfmE?;LKsy9KfDAdXtsSw}0RCw0HbceBQO4 zXgA62m|Z-RD}txv;sPZ|WtOGTMp`6Pc0=+y9zghk7KwSWf`*z2mmHTTw5nb6McBQQ z`54NIGo?QbW1@Umws^ z^gEcqJJZYko5^A-L`a#=bFqo*&o-%aqH(bGsD6CB?!$Z`8z~g+za=)OCUNC_>j{yC zZegb=YSNOtwbmJr)t#tm3xU^qN}*V*a!s*L9p6Tc54H3q)RCvVT?uy`RR@?x9`cG8 z5DLR7OR~1AdiFlKqKy3BGaago_KP`m8aoEa$Iw#Gh$fp}{~_|34K#n|+!W6B&Oo1t zPYF8_5sT`<+8K(;gG6z>;8tkInYTXw%vTXvuVnoN7opn}RWHnh3s({u@>8zKpXig8 zG=WchT81&Mtp)L0Z?O@+`O{!?ha@%v2Y)zBW0wn`=^VJADomcUnQmVV>_)SF?;A~5 z^x{?^;rin0I3%_XzcnyGS#!*v=iPL*elOLgqJyli#vIp9{Pa~bTv1o^FEzc&Uzt(? zBNYGZNfCmj+Kz6>ao&BIQZm!tTsfMbu?wliY1R%{1rpr0BWIphVBVLzE7bL^ABY?~=b2c*zj_EZcfCvd&i6QoQIC=!g z+*doow~SBHEGuKYb_Qp?zD}cBfMKf2{-Jw|4SvZU$XIBdtY5}%t=}Uuu2xHY{4RUa z>$q$@xO6nVN;%y$n}==eKZB_5HKfWT`^)t^3H%e&zHtKjo|+1_CwoL1wD|^ytR6IU z&DiYSabIA`4v}-Kg}#29Swbgv?CociA*`$n9!!mwMqJ+vTA$#IT_lM)mT5aoeXY}a z_yJk}o5$7eSq-|R_?(&6BBPgR{`+I~4 z?rCJ7TXFc^niC3z61cv3-OJv{13eWSa`V;=q@j^|+ z53^DABM?U`*95(M*^Y(SuD>Zl-_l{4mih${W3V7~&MQad+K^P4y{bC!f!6Il_vS80 zUOhF*A)ac>wVX%UDG-0So%6WLsJ+hR?snEWg{A#ozl2At>x%s#OK`TnMJSJx{b@N{ zbTpWEODUD(#;drey9Zxx&30PcjxnUoD!kWPD{4{7%e)(58S$Wn?)GgdUuQ}3J>j3j9ujw zY(l3Oo>-tawp3KEh=N! z1Njl?Z3cboM1y;$kap^fiCnULm#NysKvUTeRK1kANPL5X$~ebM+ha?%l8SLO7-7z< z6Im(8Nhg;^%hvSN43du}XoKA7g-4)th3CSHH6Q2>ABsxx!Tb19(-VsaK%@gu9(DQ+ zqvydxH@V;eMhpzE%_ur(6A_TSBh9B+Ae>Jaa7Gv$5Ih4f4KM`})h?!ARx(jrOjw2i zRR;a$p7+UHFdu-WD#Q8{YRNf^VUoe58$VcyAzo#@4~-Dwtn(CrVN*(<#G#FNjZD>i z7AKE66nsj}A)+Nc2$DRl0zhBwl;|&B=7|wHt}XtDvX&2AcN@?Pj!yE`&Wgx~!DT+k zBp^Z%G>m$pFqKi?Ck%ndlW4LfqqK-({+cQzn>z3jq|SaUO$#}JZrWh|P=kgM#%Dmd z=#4Ry@FKzuE9X867(y8DoEupPXCE5SDhMa5;pQv(P36$D7Sr5&0hS1E;@d5zR5C%H zN(?t;k)eW|By7K6gbpl-nhK>-=|sb2q6oXVA`iF1#b{G7NYP*DYM_u}0cAs(Aj-aG zcdGY^IwXEvEZ#(1`$qwlC5a@9EA$ZmtE{lzAb!D4%b-hsmVr*>#$~fV7z<-0PxZ3o z(va+HN+zNTZlE3kA3gdCY1(bs0-~rr;gbW<_=DQ>_qBzb{&r_+=uH3}_ z_lR~1B{1;QZ~p|Te60D9-mSB@ZtsND2d85vQ>3YS9T~L7Lq3wEO8K5`8*J6jCB0ka zFyS7e;f9_hnU8I)@6H)0aD##@1$wyg?#ZWF1%8rECweTy63-|jK4yIUpY1d&L{EL< ziW3ORw9{_Lc<*iBDy&6ZrDv*y%T$WX8R%NMk$cm&%ntl28F4d4NU?_!!#^frj#OF$ zt=67f4~T5%6zXM^4N07WYTAoM+%mPl-*D{#BwRgJwhqAwV zY}oPb^$8l#18-~I6!EjY16$hFGO4Zr>rwJvjJkv9cuuiBgPl`gwRH?`WrjH1^ z1y<2-Rq2f)N>>E=XT%iNo}|_mjvGkb!=exHf$+GNXFiftylUJ55(1n4aHRr9iMB*)dR=7_uN_D z+obPxP03Yn1dVOI_RjbbacWt$e1ouCgcJ=rsD2%0$w%xl>bD+F??2)$g8tM+c3 zah#eBY1}u-Uy-6Hwp7h5v&{O+U+Cki#~eM5`xL1}y_m+1;>O{+#uabrcT;=sV08=L z(wLAyjsnc&!Crd0_vid^9uu2hVWC`_Pogs#O4b9fo0Ma0fq5&*&6j3D#4;s%*A_L-p zT$&IDMJ4cK0_eQ~SQaOEA7io7YC%?F_;UdI5yr{YCL*LFDyeeD+6w<9#*A;}b_MeE z;~^+CSQ8Bt$1`i|F-c+g&%s>m1Xd{=Z7h{@(TK;HK=XjgNj)%4P-;(TV-3Oxh4#s~ zVq|686n>~E{%KP*RuD6m6|&b8xafgc1DT@3*!Q-%OjN{n`oP>Tl=;YFTNwBXKo|}H zZjk{DXfPH4<3@vVgLH0aFgqEDMKi+jv`Rp(H8S1SIUbx$rnAPVv*E!g0EcygdUZHs z8X5pORAfeBxJa1uLr$7T4*!0g2z`kL0z$iuOZA8|yOm2Ak9tJ_J_WJ}lcj_X0M;O} zbb_!PQ4n5^EuZ2?O~^Kg}eGY{Gq4 zgiyAU?Y4?)%#x&HL7@IoylzXpI^u=09fn=A*)I@(M)4EQox zlnekrMe&yOiIH9atcil!$`aW?v10&>CI(GIfb8^%A^_mWR`8uZF-)2hj2ZoVn0&QXd^HfRBU*(&8@`7>EGU(CPu=2&`BDi?$vxS;+*C z7t96%^9g*KWK~%-I3gUlMPR0-K=HSHOEhAtJ7by^SZKa;wxDU^$b$a;>MQZ~cI^&7 zc%AZ;X>e%4(@w$YJ`f5IAmhNUKRrUxV6HynghPg)iwA?Jbt8jO>cB1x4+3v0hSrDR z*?a&rD-ogEctJcKY@mr21F$F&!Pb9bdNtFByVBo&^9_|@LStm!V+8!c{${^)(usWR zgwK1oc_h!#jMvd{B>;^a(fm`?O-X?EmjlUg0_#(}NH$5BRu2@7!D>(e?CMY)kPSlS zMx$ZVs!q-tV#4T0a1fsfp6h8}gf2Dx{mW;c?xfSaD2`EP;wSL=mqP4 z+;Q?G$;c8AxK2S6GQ%2~pr|J(j7OY?FrB*8VyYl;AuzlUvZZb}!n%(x z830Z1<^n`lhpVv0sT9BOZv3QWyZhI}2zb%Xhhqt1N4zU6Csn=Du^ZL?L@S(0eSF8Kyh*|Ga6ii21s4H^93Nb1%#y^LVJMVV>|?ZuG$l? z%7?-SZ+5@_boq_gt&H7(Qf83n*5|a z^{1ujvI7gdp2l&%PO`eg5k~n{U*8MXHrXC<8d~%i4>vfy=uWcU)sDIz4R*baRczr1 z`gw7eNJ&uFV;~a)0d$NOBlpbT?BwXWHP!k0L+@+IkN@JO3F;8-%cpuGCPysOZFa3u z9=d1%_a6Wj4@UrLaf1U+m!~1X(Reh_jSOWV1JM_%^eEZzNY)qUk+5hC?;48Bx{ryU zEVhGzn?xrt{QwBJZ*S^QHrTNfK!n zRri{8|Lg4iF?N?rqmL~PudLgr5-QU{)5W#d>lF_`W4p;)pSWZpoZFYMm1DXO&bx4Q z!ctj+qA`b0Me_V|@G5Tn8@OD_x6dyjYqU=_^ry;=ugHDtE7*Z>WXptoo_m?+XH}w0 zfN^N$``bJ>&OthK=LgtTTa_6-)Or}`Q18_0eZ$-TJP)aBl4^^Ysi4b58ovzUA%6yf zAU-R+IHgTUpQ0yi%M-g&+Norq0V%o^0C@s}eQx2QLdEmgB(Dkk+n`4$vsHPq*=TME zh(XjqsrBi@h=AE@n`+0`g^@SkH+u~~YP?mCY{okMXz?~oN$0z|;@oN)`yl;|)=Oc! z!ygBkqLcPLbSc9)=cgIr$eHbXq^DgzzO{^t`m!vc5q-VF<_eyEe>C&=gwOSc`9u5Fmw-JWB&%HAi$%rt}l4zWpF;jkRJ0Yj~ zeQwqYvz;v~sV_f2XJ<1R@aBqL@cg`!#Ndpzb3o(#f)?LvhxhJxpmqx$1V%?^iEx31 z#p^i^;j=Dz!3#@%5^|i&0kw_lIvkCYjvs;@p67oE?PGjj>p3X@ekJ_=A?Ir3lDyM$ z)Otqea^sb+33hi5Cb^c>x3a;E>c1GBv93?f(I7fJjivK?q6F$9?5$&8hmC&{>F@ol zfSb6H`fRdbvx33b*{7snhl0>Q%gCXV@16!pBR^6%ee_ArIVtK42l@`$>|b423V{m8 z>jDBD2w%g~8gKuytLl(!1pw2Xt%N7&O*WgY3f}2kAtlE;oXbo|9 zDl;k_+E4OKPpQ|LABSCy%{R-h`o6Ehz+#x!9bOp6Zm9G)ht4j@#wVFRhpeA(2J)l- zJj{5XHbui=Nj!RJJzdj)S>VA_m+iafS$pvi7mo~0rzY-Df1vW`RRehL^n3^MNqdXNriJa+5nmP32>9l1Q~9%opD7v~gcP$t3d;-U`GnqLSX6#Z4 zKe9E&(oN3~GAh6)aA16CuP^IjV2&?lX*~IinYpuPU{hf|+0|DnL#lgCDu@McIG_@N z<4#0QsZ$gH?8YX51fBC{PE*P%TuK6Lpjd(&xnF?bdTx>`I`+Hk}Iay|%R5(SP z$FW+eeA~I;37GBehj|%Z?=JjGYq;hmZIm%6i>m20#kV&G&)@h)8dJyCSr$n2Lp=YJ z86|D32mT6_6L#E6wpmdL$>KBgC<;uf)}k;kF{ECqe?W0sq;Qtdt{{F}zdRlkje}*q4O{IV_*-2dfTuqo{#*SyPcrBmlnx%e%q~vGL}J{RuBFk_ zQX)aj?ia`|Kh5*}6c0*elCztQxj)=y&y*?4E&;*#ZsD@}F9RpiK9nMhGSB=1G?gktrR316giEB3CwB^pGd4?!Kc~0m-W~) zr&}{ITq_oPOiWe--y|RX&6d2c$8r`Z?R#I(9Au@JbzBd!bRwvrG`&e3MKXeGX|R%I zZw~2t5bs4r_1J>K5S$$TA!&_fL2ruT3kfPiU4q)T{N}*t>oexm%QOV)F)nd2}_9sMt5ijsqS%tyR8OZR}mlQQti^(p5x9yV0yB%!vjiY#on&eGOt;CU7< zHxQ7vd;Tr!4f=aFC-tVyzrYw;o;;FNK}^4Ti}MqrIhB|}NqC*Rk2Mi)^G->p6ZbVQ zDZ%$6P@NO%J(z%N&LM_|rz!IeMI)JHPYIU>+W2pw%ncSDCx?5Kvww=$W0lmhb#_I5 z3NXaDz6|3cDqXqB^;h43(~z&;JrUd=IX-GmvSdA_*Ip5(#dP(FpE0zr^Uik1 zMz<<<`Rw1j)-QNXR+xxY^E_w%N`A3~NT#tTnmt_De*!_CV$<-MAf~;d(7X2q_DJ9U zoEOjLL`5&rsQP{g8`8Yf!F<H1BHuNt^W6eA=?MTM!!s~NIEzKyoS9ojrjqcz~EF@7)79gmmiz{qLR^{O(OKDypbX zCpvZ3?3bEHH+YC%H@5g>_6PB|dp7B?L1B$&)Z_Oboa=Xi8Sm!r;|GT~Z#&b_wbV5v zl?VRb--y{*DraPTB==V^wf-tH*LhoHfqo-U>VSK9oru1DJbY*?*ZA}6@YYRcnaqsy zY|-0Wbcj-`w79*}tGJB>$%3isq=nu46Qz$>>w6f!03>{u3gl}@U&jM?X@l20GebEZ zrNnFv|1F*l{<%jR0Ov9qs{1~#kpLXzhDltJa5@j`bD*QxKMw%aS|D$mK7I`1_ zg(dWJm^dzBVT^^o3L^Ocx5ykaFn;Kt3JFbznGO}w%2mZ!rK$JP$NK$@OJ`5?g8?%w z7^ahOAYW1GDqERK$1xFc**Ccxh`a#iL(A#UrXgcVIKj7A>e^e}INjvl{YUnN6kt6h$VH0K|O6!PbVREZ(#vDkwHTYqSIg0hpc

yKc%Pohze)P_us4K}%j4Eh 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 Q^8e8NGeh@JK3tan2CN_8$N&HU From 508b000c140f76f5f1e114860bdf2a29d6c0df29 Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Thu, 7 Nov 2024 22:15:12 +1000 Subject: [PATCH 03/12] menu brush up --- cmd/slackdump/internal/diag/edge.go | 2 +- cmd/slackdump/internal/diag/eztest.go | 2 - cmd/slackdump/internal/diag/rawoutput.go | 2 +- cmd/slackdump/internal/diag/record.go | 7 +- cmd/slackdump/internal/diag/uninstall.go | 102 ++++++++++++++++----- cmd/slackdump/internal/golang/base/base.go | 3 + cmd/slackdump/internal/ui/cfgui/model.go | 10 +- cmd/slackdump/internal/wizard/wizard.go | 3 +- 8 files changed, 95 insertions(+), 36 deletions(-) diff --git a/cmd/slackdump/internal/diag/edge.go b/cmd/slackdump/internal/diag/edge.go index 7d669676..c538138a 100644 --- a/cmd/slackdump/internal/diag/edge.go +++ b/cmd/slackdump/internal/diag/edge.go @@ -13,10 +13,10 @@ import ( var CmdEdge = &base.Command{ Run: runEdge, - Wizard: func(ctx context.Context, cmd *base.Command, args []string) error { panic("not implemented") }, UsageLine: "slack tools edge", Short: "Edge test", RequireAuth: true, + HideWizard: true, Long: ` # Slack Edge API test tool diff --git a/cmd/slackdump/internal/diag/eztest.go b/cmd/slackdump/internal/diag/eztest.go index 68f9a9ac..f3aaef4f 100644 --- a/cmd/slackdump/internal/diag/eztest.go +++ b/cmd/slackdump/internal/diag/eztest.go @@ -16,7 +16,6 @@ import ( var CmdEzTest = &base.Command{ Run: runEzLoginTest, - Wizard: func(ctx context.Context, cmd *base.Command, args []string) error { panic("not implemented") }, UsageLine: "slack tools eztest", Short: "EZ-Login 3000 test", Long: ` @@ -87,7 +86,6 @@ func runEzLoginTest(ctx context.Context, cmd *base.Command, args []string) error return errors.New(*res.Err) } return nil - } func tryPlaywrightAuth(ctx context.Context, wsp string) ezResult { diff --git a/cmd/slackdump/internal/diag/rawoutput.go b/cmd/slackdump/internal/diag/rawoutput.go index 1878870a..731e55ee 100644 --- a/cmd/slackdump/internal/diag/rawoutput.go +++ b/cmd/slackdump/internal/diag/rawoutput.go @@ -22,7 +22,6 @@ import ( var CmdRawOutput = &base.Command{ Run: nil, // populated by init to break the init cycle - Wizard: func(context.Context, *base.Command, []string) error { panic("not implemented") }, UsageLine: "slackdump tools rawoutput [flags] ", Short: "record raw API output", Long: ` @@ -39,6 +38,7 @@ Running this tool may be requested by developers. PrintFlags: true, RequireAuth: true, Commands: nil, + HideWizard: true, } type rawOutputParams struct { diff --git a/cmd/slackdump/internal/diag/record.go b/cmd/slackdump/internal/diag/record.go index df716f0f..58bcc49f 100644 --- a/cmd/slackdump/internal/diag/record.go +++ b/cmd/slackdump/internal/diag/record.go @@ -15,9 +15,10 @@ import ( ) var CmdRecord = &base.Command{ - UsageLine: "slackdump tools record", - Short: "chunk record commands", - Commands: []*base.Command{cmdRecordStream, cmdRecordState}, + UsageLine: "slackdump tools record", + Short: "chunk record commands", + Commands: []*base.Command{cmdRecordStream, cmdRecordState}, + HideWizard: true, } var cmdRecordStream = &base.Command{ diff --git a/cmd/slackdump/internal/diag/uninstall.go b/cmd/slackdump/internal/diag/uninstall.go index f62822fb..daf28d11 100644 --- a/cmd/slackdump/internal/diag/uninstall.go +++ b/cmd/slackdump/internal/diag/uninstall.go @@ -12,6 +12,9 @@ import ( "github.com/rusq/slackdump/v3/cmd/slackdump/internal/diag/info" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/cfgui" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/dumpui" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/updaters" "github.com/rusq/slackdump/v3/logger" ) @@ -24,27 +27,30 @@ var CmdUninstall = &base.Command{ PrintFlags: true, } -// uninstallParams holds supported command line parameters -var uninstallParams = struct { +func init() { + CmdUninstall.Wizard = wizUninstall +} + +type uninstOptions struct { legacy bool // playwright dry bool // dry run noConfirm bool // no confirmation from the user -}{} +} + +// uninstParams holds supported command line parameters +var uninstParams = uninstOptions{} func init() { - CmdUninstall.Flag.BoolVar(&uninstallParams.legacy, "legacy-browser", false, "operate on playwright environment (default: rod envronment)") - CmdUninstall.Flag.BoolVar(&uninstallParams.dry, "dry", false, "dry run") - CmdUninstall.Flag.BoolVar(&uninstallParams.noConfirm, "no-confirm", false, "no confirmation from the user") + CmdUninstall.Flag.BoolVar(&uninstParams.legacy, "legacy-browser", false, "operate on playwright environment (default: rod envronment)") + CmdUninstall.Flag.BoolVar(&uninstParams.dry, "dry", false, "dry run") + CmdUninstall.Flag.BoolVar(&uninstParams.noConfirm, "no-confirm", false, "no confirmation from the user") } func runUninstall(ctx context.Context, cmd *base.Command, args []string) error { if len(args) != 0 { base.SetExitStatus(base.SInvalidParameters) } - if uninstallParams.dry { - return nil - } - if !uninstallParams.noConfirm { + if !uninstParams.noConfirm { confirmed, err := ui.Confirm("This will uninstall the EZ-Login browser", true) if err != nil { return err @@ -56,24 +62,34 @@ func runUninstall(ctx context.Context, cmd *base.Command, args []string) error { si := info.CollectRaw() - if uninstallParams.legacy { - return uninstallPlaywright(ctx, si.Playwright) + if uninstParams.legacy { + return uninstallPlaywright(ctx, si.Playwright, uninstParams.dry) } else { - return uninstallRod(ctx, si.Rod) + return uninstallRod(ctx, si.Rod, uninstParams.dry) } } -func uninstallPlaywright(ctx context.Context, si info.PwInfo) error { - if si.Path == "" { - return errors.New("unable to determine playwright path") +func removeFunc(dry bool) func(string) error { + var removeFn = os.RemoveAll + if dry { + removeFn = func(name string) error { + fmt.Printf("Would remove %s\n", name) + return nil + } } + return removeFn +} + +func uninstallPlaywright(ctx context.Context, si info.PwInfo, dry bool) error { + removeFn := removeFunc(dry) lg := logger.FromContext(ctx) lg.Printf("Deleting %s", si.Path) - if err := os.RemoveAll(si.Path); err != nil { + if err := removeFn(si.Path); err != nil { return fmt.Errorf("failed to remove the playwright library: %w", err) } - lg.Printf("Deleting browsers") - if err := os.RemoveAll(si.BrowsersPath); err != nil { + lg.Printf("Deleting browsers in %s", si.BrowsersPath) + + if err := removeFn(si.BrowsersPath); err != nil { return fmt.Errorf("failed to remove the playwright browsers: %w", err) } dir, _ := filepath.Split(si.Path) @@ -81,24 +97,64 @@ func uninstallPlaywright(ctx context.Context, si info.PwInfo) error { return errors.New("unable to reliably determine playwright path") } lg.Printf("Deleting all playwright versions from: %s", dir) - if err := os.RemoveAll(dir); err != nil { + if err := removeFn(dir); err != nil { return fmt.Errorf("failed to remove the playwright versions: %w", err) } return nil } -func uninstallRod(_ context.Context, si info.RodInfo) error { +func uninstallRod(_ context.Context, si info.RodInfo, dry bool) error { + removeFn := removeFunc(dry) if si.Path == "" { return errors.New("unable to determine rod browser path") } lg := cfg.Log lg.Printf("Deleting incognito Browser...") - _ = slackauth.RemoveBrowser() // just to make sure. + if !dry { + _ = slackauth.RemoveBrowser() // just to make sure. + } else { + lg.Printf("Would remove incognito browser") + } + lg.Printf("Deleting %s...", si.Path) - if err := os.RemoveAll(si.Path); err != nil { + if err := removeFn(si.Path); err != nil { return fmt.Errorf("failed to remove the rod browser: %w", err) } return nil } + +func wizUninstall(ctx context.Context, cmd *base.Command, args []string) error { + w := dumpui.Wizard{ + Name: "Uninstall", + Title: "Uninstall Slackdump", + LocalConfig: uninstParams.configuration, + Cmd: CmdUninstall, + } + return w.Run(ctx) +} + +func (p *uninstOptions) configuration() cfgui.Configuration { + p.noConfirm = true + return cfgui.Configuration{ + { + Name: "Uninstall options", + Params: []cfgui.Parameter{ + { + Name: "Playwright", + Value: cfgui.Checkbox(p.legacy), + Description: "Environment to uninstall (if unselected, uninstalls Rod)", + Updater: updaters.NewBool(&p.legacy), + }, + { + Name: "Dry run", + Value: cfgui.Checkbox(p.dry), + Description: "Do not perform the uninstallation, just show what would be done", + Updater: updaters.NewBool(&p.dry), + }, + // TODO: delete slackdump from user cache options. + }, + }, + } +} diff --git a/cmd/slackdump/internal/golang/base/base.go b/cmd/slackdump/internal/golang/base/base.go index 572ef235..8c56ac9c 100644 --- a/cmd/slackdump/internal/golang/base/base.go +++ b/cmd/slackdump/internal/golang/base/base.go @@ -64,6 +64,9 @@ type Command struct { // The order here is the order in which they are printed by 'slackdump help'. // Note that subcommands are in general best avoided. Commands []*Command + + //HideWizard if set to true disables the display in wizard. + HideWizard bool } var Slackdump = &Command{ diff --git a/cmd/slackdump/internal/ui/cfgui/model.go b/cmd/slackdump/internal/ui/cfgui/model.go index 890f5940..3f234299 100644 --- a/cmd/slackdump/internal/ui/cfgui/model.go +++ b/cmd/slackdump/internal/ui/cfgui/model.go @@ -205,15 +205,17 @@ func (m *Model) view(sty StyleSet) string { } fmt.Fprintf(&buf, alignParam+namefmt.Render(fmt.Sprintf("% *s", keyLen, param.Name))+" ") if selected && m.state == inline { - buf.WriteString(m.child.View() + "\n") + buf.WriteString(m.child.View()) } else { - fmt.Fprintf(&buf, valfmt.Render(fmt.Sprintf("%-*s", valLen, nvl(param.Value)))+"\n") + fmt.Fprint(&buf, valfmt.Render(fmt.Sprintf("%-*s\n", valLen, nvl(param.Value)))) } line++ } } - buf.WriteString(alignGroup + sty.Description.Render(descr) + "\n") - buf.WriteString(m.help.ShortHelpView(m.keymap.Bindings())) + if m.focused { + buf.WriteString(alignGroup + sty.Description.Render(descr)) + buf.WriteString("\n" + m.help.ShortHelpView(m.keymap.Bindings())) + } return buf.String() } diff --git a/cmd/slackdump/internal/wizard/wizard.go b/cmd/slackdump/internal/wizard/wizard.go index 29674e0d..c7aa4d74 100644 --- a/cmd/slackdump/internal/wizard/wizard.go +++ b/cmd/slackdump/internal/wizard/wizard.go @@ -96,14 +96,13 @@ func makeMenu(cmds []*base.Command, parent string, title string) (m *menu) { } for _, cmd := range cmds { hasSubcommands := len(cmd.Commands) > 0 - hasWizard := cmd.Wizard != nil + hasWizard := cmd.Wizard != nil && !cmd.HideWizard isMe := strings.EqualFold(cmd.Name(), CmdWizard.Name()) if !(hasWizard || hasSubcommands) || isMe { continue } name := titlecase.String(cmd.Name()) item := menuitem{ - // Name: parent + name, Name: name, Description: cmd.Short, cmd: cmd, From 48ea2fd44000ae9f7a9db6058f483081fe459de9 Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Sat, 9 Nov 2024 21:08:47 +1000 Subject: [PATCH 04/12] list wizardry --- cmd/slackdump/internal/bootstrap/slackdump.go | 2 +- cmd/slackdump/internal/list/channels.go | 48 +++--- .../internal/list/{list.go => common.go} | 58 ++----- .../list/{list_test.go => common_test.go} | 0 cmd/slackdump/internal/list/users.go | 25 ++- cmd/slackdump/internal/list/wizard.go | 155 ++++++++++++++++++ .../internal/ui/cfgui/configuration.go | 1 + cmd/slackdump/internal/ui/cfgui/model.go | 8 +- .../internal/ui/updaters/duration.go | 57 +++++++ slackdump.go | 16 +- 10 files changed, 282 insertions(+), 88 deletions(-) rename cmd/slackdump/internal/list/{list.go => common.go} (77%) rename cmd/slackdump/internal/list/{list_test.go => common_test.go} (100%) create mode 100644 cmd/slackdump/internal/list/wizard.go create mode 100644 cmd/slackdump/internal/ui/updaters/duration.go diff --git a/cmd/slackdump/internal/bootstrap/slackdump.go b/cmd/slackdump/internal/bootstrap/slackdump.go index 39e37750..cbfae4c0 100644 --- a/cmd/slackdump/internal/bootstrap/slackdump.go +++ b/cmd/slackdump/internal/bootstrap/slackdump.go @@ -25,7 +25,7 @@ func SlackdumpSession(ctx context.Context, opts ...slackdump.Option) (*slackdump } stdOpts = append(stdOpts, opts...) - return slackdump.New( + return slackdump.NewNoValidate( ctx, prov, stdOpts..., diff --git a/cmd/slackdump/internal/list/channels.go b/cmd/slackdump/internal/list/channels.go index 6933e96b..6d9a6363 100644 --- a/cmd/slackdump/internal/list/channels.go +++ b/cmd/slackdump/internal/list/channels.go @@ -32,17 +32,39 @@ workspace has lots of them. The channels are cached, and the cache is valid for %s. Use the -no-chan-cache and -chan-cache-retention flags to control the cache behavior. -`+sectListFormat, chanCacheOpts.Retention), +`+sectListFormat, chanFlags.cache.Retention), RequireAuth: true, } -var noresolve bool +func init() { + CmdListChannels.Wizard = wizChannels +} + +type channelOptions struct { + noResolve bool + cache cacheOpts +} + +type cacheOpts struct { + Disabled bool + Retention time.Duration + Filename string +} + +var chanFlags = channelOptions{ + noResolve: false, + cache: cacheOpts{ + Disabled: false, + Retention: 20 * time.Minute, + Filename: "channels.json", + }, +} func init() { - CmdListChannels.Flag.BoolVar(&chanCacheOpts.Disabled, "no-chan-cache", chanCacheOpts.Disabled, "disable channel cache") - CmdListChannels.Flag.DurationVar(&chanCacheOpts.Retention, "chan-cache-retention", chanCacheOpts.Retention, "channel cache retention time. After this time, the cache is considered stale and will be refreshed.") - CmdListChannels.Flag.BoolVar(&noresolve, "no-resolve", noresolve, "do not resolve user IDs to names") + CmdListChannels.Flag.BoolVar(&chanFlags.cache.Disabled, "no-chan-cache", chanFlags.cache.Disabled, "disable channel cache") + CmdListChannels.Flag.DurationVar(&chanFlags.cache.Retention, "chan-cache-retention", chanFlags.cache.Retention, "channel cache retention time. After this time, the cache is considered stale and will be refreshed.") + CmdListChannels.Flag.BoolVar(&chanFlags.noResolve, "no-resolve", chanFlags.noResolve, "do not resolve user IDs to names") } func listChannels(ctx context.Context, cmd *base.Command, args []string) error { @@ -79,20 +101,8 @@ func listChannels(ctx context.Context, cmd *base.Command, args []string) error { return nil } -type cacheConfig struct { - Disabled bool - Retention time.Duration - Filename string -} - -var chanCacheOpts = cacheConfig{ - Disabled: false, - Retention: 20 * time.Minute, - Filename: "channels.json", -} - func maybeLoadChanCache(cacheDir string, teamID string) (types.Channels, bool) { - if chanCacheOpts.Disabled { + if chanFlags.cache.Disabled { // channel cache disabled return nil, false } @@ -100,7 +110,7 @@ func maybeLoadChanCache(cacheDir string, teamID string) (types.Channels, bool) { if err != nil { return nil, false } - cc, err := m.LoadChannels(teamID, chanCacheOpts.Retention) + cc, err := m.LoadChannels(teamID, chanFlags.cache.Retention) if err != nil { return nil, false } diff --git a/cmd/slackdump/internal/list/list.go b/cmd/slackdump/internal/list/common.go similarity index 77% rename from cmd/slackdump/internal/list/list.go rename to cmd/slackdump/internal/list/common.go index ce3dcc05..9393f50e 100644 --- a/cmd/slackdump/internal/list/list.go +++ b/cmd/slackdump/internal/list/common.go @@ -9,7 +9,6 @@ import ( "os" "path/filepath" - "github.com/charmbracelet/huh" "github.com/rusq/fsadapter" "github.com/rusq/slack" "github.com/rusq/slackdump/v3" @@ -49,7 +48,7 @@ channel cache — %s. This is to speed up consecutive runs of the command. The caching can be turned off by using flags "-no-user-cache" and "-no-chan-cache". -`, cfg.UserCacheRetention, chanCacheOpts.Retention), +`, cfg.UserCacheRetention, chanFlags.cache.Retention), Commands: []*base.Command{ CmdListUsers, CmdListChannels, @@ -57,11 +56,15 @@ The caching can be turned off by using flags "-no-user-cache" and } // common flags -var ( - listType format.Type = format.CText - quiet bool // quiet mode: don't print anything on the screen, just save the file - nosave bool // nosave mode: don't save the data to a file, just print it to the screen -) +type listOptions struct { + listType format.Type + quiet bool // quiet mode: don't print anything on the screen, just save the file + nosave bool // nosave mode: don't save the data to a file, just print it to the screen +} + +var commonParams = listOptions{ + listType: format.CText, +} func init() { for _, cmd := range CmdList.Commands { @@ -71,9 +74,9 @@ func init() { // addCommonFlags adds common flags to the flagset. func addCommonFlags(fs *flag.FlagSet) { - fs.Var(&listType, "format", fmt.Sprintf("listing format, should be one of: %v", format.All())) - fs.BoolVar(&quiet, "q", false, "quiet mode: don't print anything on the screen, just save the file") - fs.BoolVar(&nosave, "no-json", false, "don't save the data to a file, just print it to the screen") + fs.Var(&commonParams.listType, "format", fmt.Sprintf("listing format, should be one of: %v", format.All())) + fs.BoolVar(&commonParams.quiet, "q", false, "quiet mode: don't print anything on the screen, just save the file") + fs.BoolVar(&commonParams.nosave, "no-json", false, "don't save the data to a file, just print it to the screen") } // listFunc is a function that lists something from the Slack API. It should @@ -85,7 +88,7 @@ type listFunc func(ctx context.Context, sess *slackdump.Session) (a any, filenam // listFn must return the object from the api, a JSON filename and an error. func list(ctx context.Context, listFn listFunc) error { // TODO fix users saving JSON to a text file within archive - if listType == format.CUnknown { + if commonParams.listType == format.CUnknown { return errors.New("unknown listing format, seek help") } @@ -107,7 +110,7 @@ func list(ctx context.Context, listFn listFunc) error { teamID := sess.Info().TeamID users, ok := data.(types.Users) // Hax - if !ok && !noresolve { + if !ok && !chanFlags.noResolve { if cfg.NoUserCache { users, err = sess.GetUsers(ctx) } else { @@ -118,7 +121,7 @@ func list(ctx context.Context, listFn listFunc) error { } } - if !nosave { + if !commonParams.nosave { fsa, err := fsadapter.New(cfg.Output) if err != nil { return err @@ -129,8 +132,8 @@ func list(ctx context.Context, listFn listFunc) error { } } - if !quiet { - return fmtPrint(ctx, os.Stdout, data, listType, users) + if !commonParams.quiet { + return fmtPrint(ctx, os.Stdout, data, commonParams.listType, users) } return nil @@ -184,28 +187,3 @@ func fmtPrint(ctx context.Context, w io.Writer, a any, typ format.Type, u []slac func makeFilename(prefix string, teamID string, ext string) string { return fmt.Sprintf("%s-%s%s", prefix, teamID, ext) } - -func wizard(context.Context, listFunc) error { - // pick format - var types []string - for _, t := range format.All() { - types = append(types, t.String()) - } - - var listType format.Type - var ot string - - form := huh.NewForm( - huh.NewGroup( - huh.NewSelect[format.Type]().Title("Pick a format").Options(huh.NewOptions(format.All()...)...).Value(&listType), - huh.NewSelect[string]().Title("Pick an output type").Options(huh.NewOptions("screen", "ZIP file", "directory")...).Value(&ot), - )) - if err := form.Run(); err != nil { - return err - } - if ot != "screen" { - return errors.New("not implemented yet") - } - // if file/directory, pick filename - return nil -} diff --git a/cmd/slackdump/internal/list/list_test.go b/cmd/slackdump/internal/list/common_test.go similarity index 100% rename from cmd/slackdump/internal/list/list_test.go rename to cmd/slackdump/internal/list/common_test.go diff --git a/cmd/slackdump/internal/list/users.go b/cmd/slackdump/internal/list/users.go index c04308e8..c0b5d633 100644 --- a/cmd/slackdump/internal/list/users.go +++ b/cmd/slackdump/internal/list/users.go @@ -19,12 +19,12 @@ import ( ) var CmdListUsers = &base.Command{ - Run: listUsers, - Wizard: wizUsers, - UsageLine: "slackdump list users [flags] [filename]", - PrintFlags: true, - FlagMask: cfg.OmitDownloadFlag, - Short: "list workspace users", + Run: listUsers, + UsageLine: "slackdump list users [flags] [filename]", + PrintFlags: true, + FlagMask: cfg.OmitDownloadFlag, + Short: "list workspace users", + RequireAuth: true, Long: fmt.Sprintf(` # List Users @@ -34,7 +34,10 @@ Users are cached for %v. To disable caching, use '-no-user-cache' flag and '-user-cache-retention' flag to control the caching behaviour. `+ sectListFormat, cfg.UserCacheRetention), - RequireAuth: true, +} + +func init() { + CmdListUsers.Wizard = wizUsers } func listUsers(ctx context.Context, cmd *base.Command, args []string) error { @@ -51,14 +54,6 @@ func listUsers(ctx context.Context, cmd *base.Command, args []string) error { return nil } -func wizUsers(ctx context.Context, cmd *base.Command, args []string) error { - return wizard(ctx, func(ctx context.Context, sess *slackdump.Session) (any, string, error) { - var filename = makeFilename("users", sess.Info().TeamID, ".json") - users, err := sess.GetUsers(ctx) - return users, filename, err - }) -} - //go:generate mockgen -source=users.go -destination=mocks_test.go -package=list userGetter,userCacher type userGetter interface { diff --git a/cmd/slackdump/internal/list/wizard.go b/cmd/slackdump/internal/list/wizard.go new file mode 100644 index 00000000..44672bd2 --- /dev/null +++ b/cmd/slackdump/internal/list/wizard.go @@ -0,0 +1,155 @@ +package list + +import ( + "context" + + "github.com/charmbracelet/huh" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/bootstrap" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/cfgui" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/dumpui" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/updaters" + "github.com/rusq/slackdump/v3/internal/format" +) + +var filename string + +func wizUsers(ctx context.Context, _ *base.Command, _ []string) error { + sess, err := bootstrap.SlackdumpSession(ctx) + if err != nil { + base.SetExitStatus(base.SInitializationError) + return err + } + + filename = makeFilename("users", sess.Info().TeamID, ".json") + w := dumpui.Wizard{ + Title: "List Users", + Name: "List", + LocalConfig: userConfiguration, + Cmd: CmdListUsers, + ArgsFn: func() []string { + return []string{filename} + }, + } + return w.Run(ctx) +} + +func wizChannels(ctx context.Context, _ *base.Command, _ []string) error { + sess, err := bootstrap.SlackdumpSession(ctx) + if err != nil { + base.SetExitStatus(base.SInitializationError) + return err + } + + filename = makeFilename("channels", sess.Info().TeamID, ".json") + w := dumpui.Wizard{ + Title: "List Channels", + Name: "List", + LocalConfig: chanFlags.configuration, + Cmd: CmdListChannels, + ArgsFn: func() []string { + return []string{filename} + }, + } + return w.Run(ctx) +} + +func userConfiguration() cfgui.Configuration { + c := cfgui.Configuration{ + cfgui.ParamGroup{ + Name: "User List Options", + Params: []cfgui.Parameter{ + filenameParam("users.json"), + }, + }, + } + return append(c, commonParams.configuration()...) +} + +func filenameParam(placeholder string) cfgui.Parameter { + return cfgui.Parameter{ + Name: "Output Filename", + Value: filename, + Description: "The filename to save the output to", + Inline: true, + Updater: updaters.NewFileNew(&filename, placeholder, true, true), + } +} + +func (o *channelOptions) configuration() cfgui.Configuration { + c := cfgui.Configuration{ + cfgui.ParamGroup{ + Name: "Channel Options", + Params: []cfgui.Parameter{ + filenameParam("channels.json"), + { + Name: "Do not Resolve Users", + Value: cfgui.Checkbox(o.noResolve), + Description: "Do not resolve user IDs to names", + Updater: updaters.NewBool(&o.noResolve), + }, + }, + }, + cfgui.ParamGroup{ + Name: "Cache Options", + Params: []cfgui.Parameter{ + { + Name: "Disable Cache", + Value: cfgui.Checkbox(o.cache.Disabled), + Description: "Disable channel cache", + Updater: updaters.NewBool(&o.cache.Disabled), + }, + { + Name: "Cache Retention", + Value: o.cache.Retention.String(), + Description: "Channel cache retention time. After this time, the cache is considered stale and will be refreshed.", + Inline: true, + Updater: updaters.NewDuration(&o.cache.Retention, true), + }, + { + Name: "Cache Filename", + Value: o.cache.Filename, + Description: "The filename of the cache", + Inline: true, + Updater: updaters.NewString(&o.cache.Filename, "channels.json", true, huh.ValidateNotEmpty()), + }, + }, + }, + } + return append(c, commonParams.configuration()...) +} + +func (l *listOptions) configuration() cfgui.Configuration { + c := cfgui.Configuration{ + cfgui.ParamGroup{ + Name: "Common Options", + Params: []cfgui.Parameter{ + { + Name: "List Type", + Value: l.listType.String(), + Description: "The output list type", + Updater: updaters.NewPicklist(&l.listType, huh.NewSelect[format.Type](). + Title("List Type"). + Options( + huh.NewOption("Text", format.CText), + huh.NewOption("JSON", format.CJSON), + huh.NewOption("CSV", format.CCSV), + )), + }, + { + Name: "Quiet Mode", + Value: cfgui.Checkbox(l.quiet), + Description: "Don't print anything on the screen, just save the file", + Updater: updaters.NewBool(&l.quiet), + }, + { + Name: "Display Only", + Value: cfgui.Checkbox(l.nosave), + Description: "Don't save the data to a file, just print it to the screen", + Updater: updaters.NewBool(&l.nosave), + }, + }, + }, + } + return c +} diff --git a/cmd/slackdump/internal/ui/cfgui/configuration.go b/cmd/slackdump/internal/ui/cfgui/configuration.go index 03e769cf..07304e45 100644 --- a/cmd/slackdump/internal/ui/cfgui/configuration.go +++ b/cmd/slackdump/internal/ui/cfgui/configuration.go @@ -110,6 +110,7 @@ func globalConfig() Configuration { Name: "User Cache Retention", Value: cfg.UserCacheRetention.String(), Description: "For how long user cache is kept, until it is fetched again", + Updater: updaters.NewDuration(&cfg.UserCacheRetention, false), }, { Name: "Disable User Cache", diff --git a/cmd/slackdump/internal/ui/cfgui/model.go b/cmd/slackdump/internal/ui/cfgui/model.go index 3f234299..06d64f21 100644 --- a/cmd/slackdump/internal/ui/cfgui/model.go +++ b/cmd/slackdump/internal/ui/cfgui/model.go @@ -205,16 +205,16 @@ func (m *Model) view(sty StyleSet) string { } fmt.Fprintf(&buf, alignParam+namefmt.Render(fmt.Sprintf("% *s", keyLen, param.Name))+" ") if selected && m.state == inline { - buf.WriteString(m.child.View()) + buf.WriteString(m.child.View() + "\n") } else { - fmt.Fprint(&buf, valfmt.Render(fmt.Sprintf("%-*s\n", valLen, nvl(param.Value)))) + fmt.Fprint(&buf, valfmt.Render(fmt.Sprintf("%-*s", valLen, nvl(param.Value)))+"\n") } line++ } } if m.focused { - buf.WriteString(alignGroup + sty.Description.Render(descr)) - buf.WriteString("\n" + m.help.ShortHelpView(m.keymap.Bindings())) + buf.WriteString(alignGroup + sty.Description.Render(descr) + "\n") + buf.WriteString(m.help.ShortHelpView(m.keymap.Bindings())) } return buf.String() diff --git a/cmd/slackdump/internal/ui/updaters/duration.go b/cmd/slackdump/internal/ui/updaters/duration.go new file mode 100644 index 00000000..3d883a94 --- /dev/null +++ b/cmd/slackdump/internal/ui/updaters/duration.go @@ -0,0 +1,57 @@ +package updaters + +import ( + "time" + + tea "github.com/charmbracelet/bubbletea" +) + +// DurationModel is a model for updating a time.Duration value. It is a wrapper +// around a StringModel. +type DurationModel struct { + Value *time.Duration + sv string // string value + + m StringModel +} + +func ValidateDuration(s string) error { + _, err := time.ParseDuration(s) + return err +} + +func NewDuration(value *time.Duration, showPrompt bool) DurationModel { + dm := DurationModel{ + Value: value, + sv: value.String(), + } + dm.m = NewString(&dm.sv, "1h20m55s", showPrompt, ValidateDuration) + return dm +} + +func (m DurationModel) Init() tea.Cmd { + return m.m.Init() +} + +func (m DurationModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { + var cmds []tea.Cmd + + { + mod, cmd := m.m.Update(msg) + if mod, ok := mod.(StringModel); ok { + m.m = mod + } + cmds = append(cmds, cmd) + } + if m.m.finishing { + // update the value + d, _ := time.ParseDuration(*m.m.Value) + *m.Value = d + } + + return m, tea.Batch(cmds...) +} + +func (m DurationModel) View() string { + return m.m.View() +} diff --git a/slackdump.go b/slackdump.go index 9b802fd5..8a18926a 100644 --- a/slackdump.go +++ b/slackdump.go @@ -9,7 +9,6 @@ import ( "runtime/trace" "time" - "github.com/go-playground/validator/v10" "github.com/rusq/slack" "golang.org/x/time/rate" @@ -144,6 +143,13 @@ func New(ctx context.Context, prov auth.Provider, opts ...Option) (*Session, err return nil, fmt.Errorf("auth provider validation error: %s", err) } + return NewNoValidate(ctx, prov, opts...) +} + +// NewNoValidate creates new Slackdump session with provided options, and +// populates the internal cache of users and channels for lookups. This +// function does not validate the auth.Provider. +func NewNoValidate(ctx context.Context, prov auth.Provider, opts ...Option) (*Session, error) { sd := &Session{ cfg: defConfig, uc: new(usercache), @@ -154,14 +160,6 @@ func New(ctx context.Context, prov auth.Provider, opts ...Option) (*Session, err opt(sd) } - if err := sd.cfg.limits.Validate(); err != nil { - var vErr validator.ValidationErrors - if errors.As(err, &vErr) { - return nil, fmt.Errorf("API limits failed validation: %s", vErr.Translate(network.OptErrTranslations)) - } - return nil, err - } - if err := sd.initClient(ctx, prov, sd.cfg.forceEnterprise); err != nil { return nil, err } From cfbe5b5ac1a4672f4faf58c9c8d64ef2f775592e Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Sun, 10 Nov 2024 10:54:47 +1000 Subject: [PATCH 05/12] brush up listing users and channels --- cmd/slackdump/internal/list/channels.go | 152 ++++++++++-------- cmd/slackdump/internal/list/common.go | 98 +++++------ cmd/slackdump/internal/list/users.go | 79 ++++++--- cmd/slackdump/internal/list/users_test.go | 17 +- cmd/slackdump/internal/list/wizard.go | 24 +-- .../internal/ui/cfgui/configuration.go | 1 + internal/osext/move.go | 1 + 7 files changed, 205 insertions(+), 167 deletions(-) diff --git a/cmd/slackdump/internal/list/channels.go b/cmd/slackdump/internal/list/channels.go index 6d9a6363..7bebcc0e 100644 --- a/cmd/slackdump/internal/list/channels.go +++ b/cmd/slackdump/internal/list/channels.go @@ -3,10 +3,13 @@ package list import ( "context" "fmt" + "log" "runtime/trace" "time" + "github.com/rusq/slack" "github.com/rusq/slackdump/v3" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/bootstrap" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" "github.com/rusq/slackdump/v3/internal/cache" @@ -15,7 +18,7 @@ import ( ) var CmdListChannels = &base.Command{ - Run: listChannels, + Run: runListChannels, UsageLine: "slackdump list channels [flags] [filename]", PrintFlags: true, FlagMask: cfg.OmitDownloadFlag, @@ -37,90 +40,109 @@ and -chan-cache-retention flags to control the cache behavior. RequireAuth: true, } -func init() { - CmdListChannels.Wizard = wizChannels -} - -type channelOptions struct { - noResolve bool - cache cacheOpts -} +type ( + channelOptions struct { + resolveUsers bool + cache cacheOpts + } -type cacheOpts struct { - Disabled bool - Retention time.Duration - Filename string -} + cacheOpts struct { + Enabled bool + Retention time.Duration + Filename string + } +) var chanFlags = channelOptions{ - noResolve: false, + resolveUsers: false, cache: cacheOpts{ - Disabled: false, + Enabled: false, Retention: 20 * time.Minute, Filename: "channels.json", }, } func init() { - CmdListChannels.Flag.BoolVar(&chanFlags.cache.Disabled, "no-chan-cache", chanFlags.cache.Disabled, "disable channel cache") + CmdListChannels.Wizard = wizChannels + + CmdListChannels.Flag.BoolVar(&chanFlags.cache.Enabled, "no-chan-cache", chanFlags.cache.Enabled, "disable channel cache") CmdListChannels.Flag.DurationVar(&chanFlags.cache.Retention, "chan-cache-retention", chanFlags.cache.Retention, "channel cache retention time. After this time, the cache is considered stale and will be refreshed.") - CmdListChannels.Flag.BoolVar(&chanFlags.noResolve, "no-resolve", chanFlags.noResolve, "do not resolve user IDs to names") + CmdListChannels.Flag.BoolVar(&chanFlags.resolveUsers, "resolve", chanFlags.resolveUsers, "resolve user IDs to names") } -func listChannels(ctx context.Context, cmd *base.Command, args []string) error { - if err := list(ctx, func(ctx context.Context, sess *slackdump.Session) (any, string, error) { - ctx, task := trace.NewTask(ctx, "listChannels") - defer task.End() - - var filename = makeFilename("channels", sess.Info().TeamID, ".json") - if len(args) > 0 { - filename = args[0] - } - teamID := sess.Info().TeamID - cc, ok := maybeLoadChanCache(cfg.CacheDir(), teamID) - if ok { - // cache hit - trace.Logf(ctx, "cache hit", "teamID=%s", teamID) - return cc, filename, nil - } - // cache miss, load from API - trace.Logf(ctx, "cache miss", "teamID=%s", teamID) - cc, err := sess.GetChannels(ctx) - if err != nil { - return nil, "", fmt.Errorf("error getting channels: %w", err) - } - if err := saveCache(cfg.CacheDir(), teamID, cc); err != nil { - // warn, but don't fail - logger.FromContext(ctx).Printf("failed to save cache: %v", err) - } - return cc, filename, nil - }); err != nil { +func runListChannels(ctx context.Context, cmd *base.Command, args []string) error { + sess, err := bootstrap.SlackdumpSession(ctx) + if err != nil { + base.SetExitStatus(base.SInitializationError) return err } - return nil + var l = &channels{ + opts: chanFlags, + common: commonFlags, + } + + return list(ctx, sess, l, filename) } -func maybeLoadChanCache(cacheDir string, teamID string) (types.Channels, bool) { - if chanFlags.cache.Disabled { - // channel cache disabled - return nil, false - } - m, err := cache.NewManager(cacheDir) - if err != nil { - return nil, false - } - cc, err := m.LoadChannels(teamID, chanFlags.cache.Retention) - if err != nil { - return nil, false - } - return cc, true +type channels struct { + channels types.Channels + users types.Users + + opts channelOptions + common commonOpts } -func saveCache(cacheDir, teamID string, cc types.Channels) error { - m, err := cache.NewManager(cacheDir) +func (l *channels) Type() string { + return "channels" +} + +func (l *channels) Data() types.Channels { + return l.channels +} + +func (l *channels) Users() []slack.User { + return l.users +} + +func (l *channels) Retrieve(ctx context.Context, sess *slackdump.Session, m *cache.Manager) error { + ctx, task := trace.NewTask(ctx, "channels.List") + defer task.End() + lg := cfg.Log + + teamID := sess.Info().TeamID + + usersc := make(chan []slack.User) + go func() { + defer close(usersc) + if l.opts.resolveUsers { + + lg.Println("getting users to resolve DM names") + u, err := fetchUsers(ctx, sess, m, cfg.NoUserCache, teamID) + if err != nil { + log.Printf("error getting users to resolve DM names (ignored): %s", err) + return + } + usersc <- u + } + }() + + if l.opts.cache.Enabled { + var err error + l.channels, err = m.LoadChannels(teamID, l.opts.cache.Retention) + if err == nil { + l.users = <-usersc + return nil + } + } + cc, err := sess.GetChannels(ctx) if err != nil { - return err + return fmt.Errorf("error getting channels: %w", err) } - return m.CacheChannels(teamID, cc) + l.channels = cc + l.users = <-usersc + if err := m.CacheChannels(teamID, cc); err != nil { + logger.FromContext(ctx).Printf("warning: failed to cache channels (ignored): %s", err) + } + return nil } diff --git a/cmd/slackdump/internal/list/common.go b/cmd/slackdump/internal/list/common.go index 9393f50e..f9e259ca 100644 --- a/cmd/slackdump/internal/list/common.go +++ b/cmd/slackdump/internal/list/common.go @@ -2,17 +2,13 @@ package list import ( "context" - "errors" "flag" "fmt" "io" "os" - "path/filepath" - "github.com/rusq/fsadapter" "github.com/rusq/slack" "github.com/rusq/slackdump/v3" - "github.com/rusq/slackdump/v3/cmd/slackdump/internal/bootstrap" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" "github.com/rusq/slackdump/v3/internal/cache" @@ -21,10 +17,6 @@ import ( "github.com/rusq/slackdump/v3/types" ) -const ( - userCacheBase = "users.cache" -) - // CmdList is the list command. The logic is in the subcommands. var CmdList = &base.Command{ UsageLine: "slackdump list", @@ -55,14 +47,26 @@ The caching can be turned off by using flags "-no-user-cache" and }, } +type lister[T any] interface { + // Type should return the type of the lister. + Type() string + // Retrieve should retrieve the data from the API or cache. + Retrieve(ctx context.Context, sess *slackdump.Session, m *cache.Manager) error + // Data should return the retrieved data. + Data() T + // Users should return the users for the data, or nil, which indicates + // that there are no associated users or that the users are not resolved. + Users() []slack.User +} + // common flags -type listOptions struct { +type commonOpts struct { listType format.Type quiet bool // quiet mode: don't print anything on the screen, just save the file nosave bool // nosave mode: don't save the data to a file, just print it to the screen } -var commonParams = listOptions{ +var commonFlags = commonOpts{ listType: format.CText, } @@ -74,75 +78,55 @@ func init() { // addCommonFlags adds common flags to the flagset. func addCommonFlags(fs *flag.FlagSet) { - fs.Var(&commonParams.listType, "format", fmt.Sprintf("listing format, should be one of: %v", format.All())) - fs.BoolVar(&commonParams.quiet, "q", false, "quiet mode: don't print anything on the screen, just save the file") - fs.BoolVar(&commonParams.nosave, "no-json", false, "don't save the data to a file, just print it to the screen") + fs.Var(&commonFlags.listType, "format", fmt.Sprintf("listing format, should be one of: %v", format.All())) + fs.BoolVar(&commonFlags.quiet, "q", false, "quiet mode: don't print anything on the screen, just save the file") + fs.BoolVar(&commonFlags.nosave, "no-json", false, "don't save the data to a file, just print it to the screen") } -// listFunc is a function that lists something from the Slack API. It should -// return the object from the api, a filename to save the data to and an -// error. -type listFunc func(ctx context.Context, sess *slackdump.Session) (a any, filename string, err error) - -// list authenticates and creates a slackdump instance, then calls a listFn. -// listFn must return the object from the api, a JSON filename and an error. -func list(ctx context.Context, listFn listFunc) error { - // TODO fix users saving JSON to a text file within archive - if commonParams.listType == format.CUnknown { - return errors.New("unknown listing format, seek help") - } - - // initialize the session. - sess, err := bootstrap.SlackdumpSession(ctx) +func list[T any](ctx context.Context, sess *slackdump.Session, l lister[T], filename string) error { + m, err := cache.NewManager(cfg.CacheDir()) if err != nil { - base.SetExitStatus(base.SInitializationError) return err } - data, filename, err := listFn(ctx, sess) - if err != nil { - return err - } - m, err := cache.NewManager(cfg.CacheDir(), cache.WithUserCacheBase(userCacheBase)) - if err != nil { + if err := l.Retrieve(ctx, sess, m); err != nil { return err } - teamID := sess.Info().TeamID - users, ok := data.(types.Users) // Hax - if !ok && !chanFlags.noResolve { - if cfg.NoUserCache { - users, err = sess.GetUsers(ctx) - } else { - users, err = getCachedUsers(ctx, sess, m, teamID) - } - if err != nil { + if !commonFlags.quiet { + if err := fmtPrint(ctx, os.Stdout, l.Data(), commonFlags.listType, l.Users()); err != nil { return err } } - if !commonParams.nosave { - fsa, err := fsadapter.New(cfg.Output) - if err != nil { - return err + if !commonFlags.nosave { + if filename == "" { + filename = makeFilename(l.Type(), sess.Info().TeamID, extForType(commonFlags.listType)) } - defer fsa.Close() - if err := saveData(ctx, fsa, data, filename, format.CJSON, users); err != nil { + if err := saveData(ctx, l.Data(), filename, commonFlags.listType, l.Users()); err != nil { return err } } + return nil +} - if !commonParams.quiet { - return fmtPrint(ctx, os.Stdout, data, commonParams.listType, users) +func extForType(typ format.Type) string { + switch typ { + case format.CJSON: + return ".json" + case format.CText: + return ".txt" + case format.CCSV: + return ".csv" + default: + return ".json" } - - return nil } // saveData saves the given data to the given filename. -func saveData(ctx context.Context, fs fsadapter.FS, data any, filename string, typ format.Type, users []slack.User) error { +func saveData(ctx context.Context, data any, filename string, typ format.Type, users []slack.User) error { // save to a filesystem. - f, err := fs.Create(filename) + f, err := os.Create(filename) if err != nil { return fmt.Errorf("failed to create file: %w", err) } @@ -150,7 +134,7 @@ func saveData(ctx context.Context, fs fsadapter.FS, data any, filename string, t if err := fmtPrint(ctx, f, data, typ, users); err != nil { return err } - logger.FromContext(ctx).Printf("Data saved to: %q\n", filepath.Join(cfg.Output, filename)) + logger.FromContext(ctx).Printf("Data saved to: %q\n", filename) return nil } diff --git a/cmd/slackdump/internal/list/users.go b/cmd/slackdump/internal/list/users.go index c0b5d633..605b9def 100644 --- a/cmd/slackdump/internal/list/users.go +++ b/cmd/slackdump/internal/list/users.go @@ -5,11 +5,11 @@ import ( "errors" "fmt" "os" - "runtime/trace" "time" "github.com/rusq/slack" "github.com/rusq/slackdump/v3" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/bootstrap" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" "github.com/rusq/slackdump/v3/internal/cache" @@ -19,7 +19,7 @@ import ( ) var CmdListUsers = &base.Command{ - Run: listUsers, + Run: runListUsers, UsageLine: "slackdump list users [flags] [filename]", PrintFlags: true, FlagMask: cfg.OmitDownloadFlag, @@ -40,17 +40,45 @@ func init() { CmdListUsers.Wizard = wizUsers } -func listUsers(ctx context.Context, cmd *base.Command, args []string) error { - if err := list(ctx, func(ctx context.Context, sess *slackdump.Session) (any, string, error) { - var filename = makeFilename("users", sess.Info().TeamID, ".json") - if len(args) > 0 { - filename = args[0] - } - users, err := sess.GetUsers(ctx) - return users, filename, err - }); err != nil { +func runListUsers(ctx context.Context, cmd *base.Command, args []string) error { + sess, err := bootstrap.SlackdumpSession(ctx) + if err != nil { + base.SetExitStatus(base.SInitializationError) return err } + + var l = &users{ + common: commonFlags, + } + + return list(ctx, sess, l, filename) +} + +type users struct { + data types.Users + + common commonOpts +} + +func (u *users) Type() string { + return "users" +} + +func (u *users) Data() types.Users { + return u.data +} + +func (u *users) Users() []slack.User { + return nil +} + +func (u *users) Retrieve(ctx context.Context, sess *slackdump.Session, m *cache.Manager) error { + users, err := fetchUsers(ctx, sess, m, cfg.NoUserCache, sess.Info().TeamID) + if err != nil { + return err + } + m.CacheUsers(sess.Info().TeamID, users) + u.data = users return nil } @@ -65,31 +93,32 @@ type userCacher interface { CacheUsers(teamID string, users []slack.User) error } -func getCachedUsers(ctx context.Context, ug userGetter, m userCacher, teamID string) ([]slack.User, error) { +func fetchUsers(ctx context.Context, ug userGetter, m userCacher, skipCache bool, teamID string) ([]slack.User, error) { lg := logger.FromContext(ctx) - users, err := m.LoadUsers(teamID, cfg.UserCacheRetention) - if err == nil { - return users, nil - } + if !skipCache { + // attempt to load from cache + users, err := m.LoadUsers(teamID, cfg.UserCacheRetention) + if err == nil { + return users, nil + } - // failed to load from cache - if !errors.Is(err, cache.ErrExpired) && !errors.Is(err, cache.ErrEmpty) && !os.IsNotExist(err) && !osext.IsPathError(err) { - // some funky error - return nil, err + // failed to load from cache + if !errors.Is(err, cache.ErrExpired) && !errors.Is(err, cache.ErrEmpty) && !os.IsNotExist(err) && !osext.IsPathError(err) { + // some funky error + return nil, err + } + lg.Println("user cache expired or empty, caching users") } - lg.Println("user cache expired or empty, caching users") - // getting users from API - users, err = ug.GetUsers(ctx) + users, err := ug.GetUsers(ctx) if err != nil { return nil, err } // saving users to cache, will ignore any errors, but notify the user. if err := m.CacheUsers(teamID, users); err != nil { - trace.Logf(ctx, "error", "saving user cache to %q, error: %s", userCacheBase, err) - lg.Printf("warning: failed saving user cache to %q: %s, but nevermind, let's continue", userCacheBase, err) + lg.Printf("warning: failed saving user cache (ignored): %s", err) } return users, nil diff --git a/cmd/slackdump/internal/list/users_test.go b/cmd/slackdump/internal/list/users_test.go index 924276c8..b341c25a 100644 --- a/cmd/slackdump/internal/list/users_test.go +++ b/cmd/slackdump/internal/list/users_test.go @@ -20,8 +20,9 @@ func Test_getCachedUsers(t *testing.T) { } ) type args struct { - ctx context.Context - teamID string + ctx context.Context + skipCache bool + teamID string } tests := []struct { name string @@ -33,7 +34,7 @@ func Test_getCachedUsers(t *testing.T) { /* oh happy days */ { "users loaded from cache", - args{context.Background(), "TEAM1"}, + args{context.Background(), false, "TEAM1"}, func(c *MockuserCacher, g *MockuserGetter) { c.EXPECT().LoadUsers("TEAM1", gomock.Any()).Return(testUsers, nil) }, @@ -42,7 +43,7 @@ func Test_getCachedUsers(t *testing.T) { }, { "getting users from API ok (recoverable cache error)", - args{context.Background(), "TEAM1"}, + args{context.Background(), false, "TEAM1"}, func(c *MockuserCacher, g *MockuserGetter) { c.EXPECT().LoadUsers("TEAM1", gomock.Any()).Return(nil, &fs.PathError{}) g.EXPECT().GetUsers(gomock.Any()).Return(testUsers, nil) @@ -53,7 +54,7 @@ func Test_getCachedUsers(t *testing.T) { }, { "saving cache fails, but we continue", - args{context.Background(), "TEAM1"}, + args{context.Background(), false, "TEAM1"}, func(c *MockuserCacher, g *MockuserGetter) { c.EXPECT().LoadUsers("TEAM1", gomock.Any()).Return(nil, &fs.PathError{}) g.EXPECT().GetUsers(gomock.Any()).Return(testUsers, nil) @@ -65,7 +66,7 @@ func Test_getCachedUsers(t *testing.T) { /* unhappy days */ { "unrecoverable error", - args{context.Background(), "TEAM1"}, + args{context.Background(), false, "TEAM1"}, func(c *MockuserCacher, g *MockuserGetter) { c.EXPECT().LoadUsers("TEAM1", gomock.Any()).Return(nil, errors.New("frobnication error")) }, @@ -74,7 +75,7 @@ func Test_getCachedUsers(t *testing.T) { }, { "getting users from API fails", - args{context.Background(), "TEAM1"}, + args{context.Background(), false, "TEAM1"}, func(c *MockuserCacher, g *MockuserGetter) { c.EXPECT().LoadUsers("TEAM1", gomock.Any()).Return(nil, &fs.PathError{}) g.EXPECT().GetUsers(gomock.Any()).Return(nil, errors.New("blip")) @@ -91,7 +92,7 @@ func Test_getCachedUsers(t *testing.T) { tt.expect(muc, mug) - got, err := getCachedUsers(tt.args.ctx, mug, muc, tt.args.teamID) + got, err := fetchUsers(tt.args.ctx, mug, muc, tt.args.skipCache, tt.args.teamID) if (err != nil) != tt.wantErr { t.Errorf("getCachedUsers() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/cmd/slackdump/internal/list/wizard.go b/cmd/slackdump/internal/list/wizard.go index 44672bd2..7f101d00 100644 --- a/cmd/slackdump/internal/list/wizard.go +++ b/cmd/slackdump/internal/list/wizard.go @@ -63,7 +63,7 @@ func userConfiguration() cfgui.Configuration { }, }, } - return append(c, commonParams.configuration()...) + return append(c, commonFlags.configuration()...) } func filenameParam(placeholder string) cfgui.Parameter { @@ -72,7 +72,7 @@ func filenameParam(placeholder string) cfgui.Parameter { Value: filename, Description: "The filename to save the output to", Inline: true, - Updater: updaters.NewFileNew(&filename, placeholder, true, true), + Updater: updaters.NewFileNew(&filename, placeholder, false, true), } } @@ -83,10 +83,10 @@ func (o *channelOptions) configuration() cfgui.Configuration { Params: []cfgui.Parameter{ filenameParam("channels.json"), { - Name: "Do not Resolve Users", - Value: cfgui.Checkbox(o.noResolve), - Description: "Do not resolve user IDs to names", - Updater: updaters.NewBool(&o.noResolve), + Name: "Resolve Users", + Value: cfgui.Checkbox(o.resolveUsers), + Description: "Resolve user IDs to names. Slow on large Slack workspaces.", + Updater: updaters.NewBool(&o.resolveUsers), }, }, }, @@ -95,31 +95,31 @@ func (o *channelOptions) configuration() cfgui.Configuration { Params: []cfgui.Parameter{ { Name: "Disable Cache", - Value: cfgui.Checkbox(o.cache.Disabled), + Value: cfgui.Checkbox(o.cache.Enabled), Description: "Disable channel cache", - Updater: updaters.NewBool(&o.cache.Disabled), + Updater: updaters.NewBool(&o.cache.Enabled), }, { Name: "Cache Retention", Value: o.cache.Retention.String(), Description: "Channel cache retention time. After this time, the cache is considered stale and will be refreshed.", Inline: true, - Updater: updaters.NewDuration(&o.cache.Retention, true), + Updater: updaters.NewDuration(&o.cache.Retention, false), }, { Name: "Cache Filename", Value: o.cache.Filename, Description: "The filename of the cache", Inline: true, - Updater: updaters.NewString(&o.cache.Filename, "channels.json", true, huh.ValidateNotEmpty()), + Updater: updaters.NewString(&o.cache.Filename, "channels.json", false, huh.ValidateNotEmpty()), }, }, }, } - return append(c, commonParams.configuration()...) + return append(c, commonFlags.configuration()...) } -func (l *listOptions) configuration() cfgui.Configuration { +func (l *commonOpts) configuration() cfgui.Configuration { c := cfgui.Configuration{ cfgui.ParamGroup{ Name: "Common Options", diff --git a/cmd/slackdump/internal/ui/cfgui/configuration.go b/cmd/slackdump/internal/ui/cfgui/configuration.go index 07304e45..2c15cc46 100644 --- a/cmd/slackdump/internal/ui/cfgui/configuration.go +++ b/cmd/slackdump/internal/ui/cfgui/configuration.go @@ -110,6 +110,7 @@ func globalConfig() Configuration { Name: "User Cache Retention", Value: cfg.UserCacheRetention.String(), Description: "For how long user cache is kept, until it is fetched again", + Inline: true, Updater: updaters.NewDuration(&cfg.UserCacheRetention, false), }, { diff --git a/internal/osext/move.go b/internal/osext/move.go index c3e804c9..a7d6d3cc 100644 --- a/internal/osext/move.go +++ b/internal/osext/move.go @@ -45,6 +45,7 @@ func MoveFile(src string, fs fsadapter.FS, dst string) error { // if err := fs.Chmod(dst, si.Mode()); err != nil { // return fmt.Errorf("chmod: %s", err) // } + _ = err // ignore SA9003 in golang-ci-lint } if err := os.Remove(src); err != nil { From 2434c9d56941d8ef4be97314be68ef7c13f38403 Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Sun, 10 Nov 2024 11:56:26 +1000 Subject: [PATCH 06/12] stfu linter --- auth/auth_ui/validation.go | 42 ++++++------- auth/browser/client.go | 6 +- cmd/slackdump/internal/diag/encrypt.go | 6 +- cmd/slackdump/internal/diag/rawoutput.go | 5 +- cmd/slackdump/internal/diag/search.go | 4 +- cmd/slackdump/internal/diag/thread.go | 4 +- .../internal/emoji/emojidl/emoji_test.go | 5 -- cmd/slackdump/internal/export/v3.go | 10 +-- cmd/slackdump/internal/export/v3_test.go | 26 -------- cmd/slackdump/internal/golang/base/ui.go | 6 +- cmd/slackdump/internal/list/users.go | 1 - cmd/slackdump/internal/ui/ask/timerange.go | 1 - .../internal/ui/bubbles/btime/btime.go | 7 --- cmd/slackdump/internal/wizard/config.go | 30 --------- downloader/deprecated_test.go | 6 +- go.mod | 4 +- go.sum | 8 +-- internal/cache/auth.go | 2 +- internal/chunk/dirproc/dirproc.go | 7 +-- internal/chunk/dirproc/dirproc_test.go | 63 +++++++++++++++++++ internal/edge/edge.go | 4 +- internal/fixtures/api.go | 2 +- internal/fixtures/fixtures.go | 11 +++- internal/viewer/renderer/slack.go | 9 ++- stream/stream_test.go | 6 +- 25 files changed, 150 insertions(+), 125 deletions(-) delete mode 100644 cmd/slackdump/internal/wizard/config.go create mode 100644 internal/chunk/dirproc/dirproc_test.go diff --git a/auth/auth_ui/validation.go b/auth/auth_ui/validation.go index 01d1c88e..94e019bc 100644 --- a/auth/auth_ui/validation.go +++ b/auth/auth_ui/validation.go @@ -10,28 +10,28 @@ var ( ErrRequired = errors.New("can not be empty") ) -func valURLSafe(s string) error { - for _, c := range s { - if !isRuneURLSafe(c) { - return ErrNotURLSafe - } - } - return nil -} +// func valURLSafe(s string) error { +// for _, c := range s { +// if !isRuneURLSafe(c) { +// return ErrNotURLSafe +// } +// } +// return nil +// } -func isRuneURLSafe(r rune) bool { - switch { - case 'a' <= r && r <= 'z': - return true - case 'A' <= r && r <= 'Z': - return true - case '0' <= r && r <= '9': - return true - case r == '-' || r == '.' || r == '_' || r == '~': - return true - } - return false -} +// func isRuneURLSafe(r rune) bool { +// switch { +// case 'a' <= r && r <= 'z': +// return true +// case 'A' <= r && r <= 'Z': +// return true +// case '0' <= r && r <= '9': +// return true +// case r == '-' || r == '.' || r == '_' || r == '~': +// return true +// } +// return false +// } func valRequired(s string) error { if s == "" { diff --git a/auth/browser/client.go b/auth/browser/client.go index b1842412..0a8a976f 100644 --- a/auth/browser/client.go +++ b/auth/browser/client.go @@ -81,7 +81,11 @@ func (cl *Client) Authenticate(ctx context.Context) (string, []*http.Cookie, err if err != nil { return "", nil, err } - defer pw.Stop() + defer func() { + if err := pw.Stop(); err != nil { + l().Printf("failed to stop playwright: %v", err) + } + }() opts := playwright.BrowserTypeLaunchOptions{ Headless: _b(false), diff --git a/cmd/slackdump/internal/diag/encrypt.go b/cmd/slackdump/internal/diag/encrypt.go index a2c591a3..7767de90 100644 --- a/cmd/slackdump/internal/diag/encrypt.go +++ b/cmd/slackdump/internal/diag/encrypt.go @@ -7,11 +7,11 @@ import ( "os" "strings" + "github.com/ProtonMail/go-crypto/openpgp" + "github.com/ProtonMail/go-crypto/openpgp/armor" + "github.com/ProtonMail/go-crypto/openpgp/packet" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" - "golang.org/x/crypto/openpgp" - "golang.org/x/crypto/openpgp/armor" - "golang.org/x/crypto/openpgp/packet" ) // pub rsa4096 2020-03-22 [SC] [expires: 2029-03-21] diff --git a/cmd/slackdump/internal/diag/rawoutput.go b/cmd/slackdump/internal/diag/rawoutput.go index 731e55ee..c166feda 100644 --- a/cmd/slackdump/internal/diag/rawoutput.go +++ b/cmd/slackdump/internal/diag/rawoutput.go @@ -186,7 +186,10 @@ func sendReq(w io.Writer, cl *http.Client, ep string, v url.Values) (bool, error log.Printf("error while retrieving body: %s", err) } if resp.StatusCode != http.StatusOK { - io.Copy(w, bytes.NewReader(data)) + _, err := io.Copy(w, bytes.NewReader(data)) + if err != nil { + return false, err + } return false, fmt.Errorf("server NOT OK: %s", resp.Status) } if len(data) == 0 { diff --git a/cmd/slackdump/internal/diag/search.go b/cmd/slackdump/internal/diag/search.go index d3654256..d5318fc8 100644 --- a/cmd/slackdump/internal/diag/search.go +++ b/cmd/slackdump/internal/diag/search.go @@ -107,7 +107,9 @@ func runSearch(ctx context.Context, cmd *base.Command, args []string) error { lg.Printf("cursor %s", sm.NextCursor) p.Cursor = sm.NextCursor - lim.Wait(ctx) + if err := lim.Wait(ctx); err != nil { + return err + } } return nil diff --git a/cmd/slackdump/internal/diag/thread.go b/cmd/slackdump/internal/diag/thread.go index de8c8a6c..0f2f25aa 100644 --- a/cmd/slackdump/internal/diag/thread.go +++ b/cmd/slackdump/internal/diag/thread.go @@ -108,7 +108,7 @@ func generateThread(ctx context.Context, client *slack.Client, channelID string, l := network.NewLimiter(network.Tier3, network.DefLimits.Tier3.Burst, int(network.DefLimits.Tier3.Boost)) pb := progressbar.Default(int64(numMsg)) pb.Describe("posting messages") - defer pb.Finish() + defer func() { _ = pb.Finish() }() for i := 0; i < numMsg; i++ { if err := network.WithRetry(ctx, l, 3, func() error { _, _, err := client.PostMessageContext(ctx, channelID, slack.MsgOptionTS(ts), slack.MsgOptionText(fmt.Sprintf("message: %d", i), false)) @@ -144,7 +144,7 @@ func delMessages(ctx context.Context, client *slack.Client, channelID string, ms pb := progressbar.Default(int64(len(msgs))) pb.Describe("deleting messages") - defer pb.Finish() + defer func() { _ = pb.Finish() }() l := network.NewLimiter(network.Tier3, network.DefLimits.Tier3.Burst, int(network.DefLimits.Tier3.Boost)) for _, m := range msgs { diff --git a/cmd/slackdump/internal/emoji/emojidl/emoji_test.go b/cmd/slackdump/internal/emoji/emojidl/emoji_test.go index 8f3ea24c..94a11e66 100644 --- a/cmd/slackdump/internal/emoji/emojidl/emoji_test.go +++ b/cmd/slackdump/internal/emoji/emojidl/emoji_test.go @@ -13,7 +13,6 @@ import ( "reflect" "sync" "testing" - "time" "go.uber.org/mock/gomock" @@ -37,10 +36,6 @@ func setGlobalFetchFn(fn fetchFunc) { fetchFn = fn } -func init() { - rand.Seed(time.Now().UnixNano()) -} - func Test_fetchEmoji(t *testing.T) { type args struct { ctx context.Context diff --git a/cmd/slackdump/internal/export/v3.go b/cmd/slackdump/internal/export/v3.go index 514f447c..3078980c 100644 --- a/cmd/slackdump/internal/export/v3.go +++ b/cmd/slackdump/internal/export/v3.go @@ -38,7 +38,7 @@ func exportV3(ctx context.Context, sess *slackdump.Session, fsa fsadapter.FS, li } defer chunkdir.Close() if !lg.IsDebug() { - defer chunkdir.RemoveAll() + defer func() { _ = chunkdir.RemoveAll() }() } updFn := func() func(_ *slack.Channel, m *slack.Message) error { // hack: wrapper around the message update function, which does not @@ -63,7 +63,7 @@ func exportV3(ctx context.Context, sess *slackdump.Session, fsa fsadapter.FS, li progressbar.OptionSpinnerType(8)), lg.IsDebug(), ) - pb.RenderBlank() + _ = pb.RenderBlank() stream := sess.Stream( stream.OptOldest(params.Oldest), @@ -71,7 +71,7 @@ func exportV3(ctx context.Context, sess *slackdump.Session, fsa fsadapter.FS, li stream.OptResultFn(func(sr stream.Result) error { lg.Debugf("conversations: %s", sr.String()) pb.Describe(sr.String()) - pb.Add(1) + _ = pb.Add(1) return nil }), ) @@ -90,10 +90,10 @@ func exportV3(ctx context.Context, sess *slackdump.Session, fsa fsadapter.FS, li lg.Print("running export...") if err := ctr.Run(ctx, list); err != nil { - pb.Finish() + _ = pb.Finish() return err } - pb.Finish() + _ = pb.Finish() // at this point no goroutines are running, we are safe to assume that // everything we need is in the chunk directory. if err := conv.WriteIndex(); err != nil { diff --git a/cmd/slackdump/internal/export/v3_test.go b/cmd/slackdump/internal/export/v3_test.go index ed54e6f4..c64adc17 100644 --- a/cmd/slackdump/internal/export/v3_test.go +++ b/cmd/slackdump/internal/export/v3_test.go @@ -1,10 +1,7 @@ package export import ( - "bytes" - "compress/gzip" "context" - "io" "log" "net/http" "os" @@ -93,26 +90,3 @@ func Test_exportV3(t *testing.T) { } }) } - -func load(t *testing.T, filename string) io.ReadSeeker { - absPath, err := filepath.Abs(filename) - if err != nil { - t.Fatal(err) - } - t.Log("test file", absPath) - f, err := os.Open(absPath) - if err != nil { - t.Fatal(err) - } - defer f.Close() - gz, err := gzip.NewReader(f) - if err != nil { - t.Fatal(err) - } - var buf bytes.Buffer - _, err = io.Copy(&buf, gz) - if err != nil { - t.Fatal(err) - } - return bytes.NewReader(buf.Bytes()) -} diff --git a/cmd/slackdump/internal/golang/base/ui.go b/cmd/slackdump/internal/golang/base/ui.go index 04609638..6cf2e59d 100644 --- a/cmd/slackdump/internal/golang/base/ui.go +++ b/cmd/slackdump/internal/golang/base/ui.go @@ -15,7 +15,11 @@ func YesNoWR(w io.Writer, r io.Reader, message string) bool { for { fmt.Fprint(w, message, "? (y/N) ") var resp string - fmt.Fscanln(r, &resp) + _, err := fmt.Fscanln(r, &resp) + if err != nil { + fmt.Fprintln(w, "Please answer yes or no and press Enter or Return.") + continue + } resp = strings.TrimSpace(resp) if len(resp) > 0 { switch strings.ToLower(resp)[0] { diff --git a/cmd/slackdump/internal/list/users.go b/cmd/slackdump/internal/list/users.go index 605b9def..6e3ab60e 100644 --- a/cmd/slackdump/internal/list/users.go +++ b/cmd/slackdump/internal/list/users.go @@ -77,7 +77,6 @@ func (u *users) Retrieve(ctx context.Context, sess *slackdump.Session, m *cache. if err != nil { return err } - m.CacheUsers(sess.Info().TeamID, users) u.data = users return nil } diff --git a/cmd/slackdump/internal/ui/ask/timerange.go b/cmd/slackdump/internal/ui/ask/timerange.go index c4f58dfd..02e3b91f 100644 --- a/cmd/slackdump/internal/ui/ask/timerange.go +++ b/cmd/slackdump/internal/ui/ask/timerange.go @@ -25,7 +25,6 @@ func TimeRange() (oldest, latest time.Time, err error) { if oldest, err = ui.Time("Earliest message"); err != nil && !errors.Is(err, ui.ErrEmptyOptionalInput) { return } - err = nil if latest, err = ui.Time("Latest message"); err != nil && !errors.Is(err, ui.ErrEmptyOptionalInput) { return } diff --git a/cmd/slackdump/internal/ui/bubbles/btime/btime.go b/cmd/slackdump/internal/ui/bubbles/btime/btime.go index 5c1c38c6..50f2abb9 100644 --- a/cmd/slackdump/internal/ui/bubbles/btime/btime.go +++ b/cmd/slackdump/internal/ui/bubbles/btime/btime.go @@ -187,13 +187,6 @@ func (m *Model) Update(msg tea.Msg) (*Model, tea.Cmd) { return m, nil } -func (m *Model) whatIf(digit int, hasVal int) int { - whatIf := make([]int, len(m.entry)) - copy(whatIf, m.entry[:]) - whatIf[digit] = hasVal - return tupleVal(whatIf, m.cursor/2) -} - func (m *Model) updateTime() { hour := tupleVal(m.entry[:], 0) minute := tupleVal(m.entry[:], 1) diff --git a/cmd/slackdump/internal/wizard/config.go b/cmd/slackdump/internal/wizard/config.go deleted file mode 100644 index 0e719c34..00000000 --- a/cmd/slackdump/internal/wizard/config.go +++ /dev/null @@ -1,30 +0,0 @@ -package wizard - -import ( - "errors" -) - -// initFlags initializes flags based on the key-value pairs. -// Example: -// -// var ( -// enterpriseMode bool -// downloadFiles bool -// ) -// -// flags, err := initFlags(enterpriseMode, "enterprise", downloadFiles, "files") -// if err != nil { -// return err -// } -func initFlags(keyval ...any) ([]string, error) { - var flags []string - if len(keyval)%2 != 0 { - return flags, errors.New("initFlags: odd number of key-value pairs") - } - for i := 0; i < len(keyval); i += 2 { - if keyval[i].(bool) { - flags = append(flags, keyval[i+1].(string)) - } - } - return flags, nil -} diff --git a/downloader/deprecated_test.go b/downloader/deprecated_test.go index 079216ed..a61ec32b 100644 --- a/downloader/deprecated_test.go +++ b/downloader/deprecated_test.go @@ -33,6 +33,8 @@ var ( file9 = slack.File{ID: "f9", Name: "filename9.ext", URLPrivateDownload: "file9_url", Size: 900} ) +// TODO: figure out why this is deprecated. + func TestSession_SaveFileTo(t *testing.T) { tmpdir := t.TempDir() @@ -73,7 +75,7 @@ func TestSession_SaveFileTo(t *testing.T) { func(mc *mock_downloader.MockDownloader) { mc.EXPECT(). GetFile("file1_url", gomock.Any()). - SetArg(1, *fixtures.FilledFile(file1.Size)). // to mock the file size. + SetArg(1, *fixtures.FilledFile(t, file1.Size)). // to mock the file size. Return(nil) }, int64(file1.Size), @@ -171,7 +173,7 @@ func TestSession_saveFile(t *testing.T) { func(mc *mock_downloader.MockDownloader) { mc.EXPECT(). GetFile("file1_url", gomock.Any()). - SetArg(1, *fixtures.FilledFile(file1.Size)). + SetArg(1, *fixtures.FilledFile(t, file1.Size)). Return(nil) }, int64(file1.Size), diff --git a/go.mod b/go.mod index fdb716a0..0e7152d9 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.23 require ( github.com/MercuryEngineering/CookieMonster v0.0.0-20180304172713-1584578b3403 + github.com/ProtonMail/go-crypto v1.1.2 github.com/charmbracelet/bubbles v0.20.0 github.com/charmbracelet/bubbletea v1.1.2 github.com/charmbracelet/huh v0.6.0 @@ -36,7 +37,6 @@ require ( github.com/yuin/goldmark v1.7.8 github.com/yuin/goldmark-emoji v1.0.4 go.uber.org/mock v0.5.0 - golang.org/x/crypto v0.28.0 golang.org/x/sync v0.8.0 golang.org/x/term v0.25.0 golang.org/x/text v0.19.0 @@ -52,6 +52,7 @@ require ( github.com/charmbracelet/x/ansi v0.4.2 // indirect github.com/charmbracelet/x/exp/strings v0.0.0-20241101155414-3df16cb7eefd // indirect github.com/charmbracelet/x/term v0.2.0 // indirect + github.com/cloudflare/circl v1.3.7 // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/denisbrodbeck/machineid v1.0.1 // indirect github.com/dustin/go-humanize v1.0.1 // indirect @@ -81,6 +82,7 @@ require ( github.com/ysmood/gson v0.7.3 // indirect github.com/ysmood/leakless v0.9.0 // indirect go.uber.org/multierr v1.11.0 // indirect + golang.org/x/crypto v0.28.0 // indirect golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect golang.org/x/net v0.30.0 // indirect golang.org/x/sys v0.26.0 // indirect diff --git a/go.sum b/go.sum index 13919d6c..c79a3e56 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/MercuryEngineering/CookieMonster v0.0.0-20180304172713-1584578b3403 h1:EtZwYyLbkEcIt+B//6sujwRCnHuTEK3qiSypAX5aJeM= github.com/MercuryEngineering/CookieMonster v0.0.0-20180304172713-1584578b3403/go.mod h1:mM6WvakkX2m+NgMiPCfFFjwfH4KzENC07zeGEqq9U7s= +github.com/ProtonMail/go-crypto v1.1.2 h1:A7JbD57ThNqh7XjmHE+PXpQ3Dqt3BrSAC0AL0Go3KS0= +github.com/ProtonMail/go-crypto v1.1.2/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= @@ -14,8 +16,6 @@ github.com/charmbracelet/bubbles v0.20.0 h1:jSZu6qD8cRQ6k9OMfR1WlM+ruM8fkPWkHvQW github.com/charmbracelet/bubbles v0.20.0/go.mod h1:39slydyswPy+uVOHZ5x/GjwVAFkCsV8IIVy+4MhzwwU= github.com/charmbracelet/bubbletea v1.1.2 h1:naQXF2laRxyLyil/i7fxdpiz1/k06IKquhm4vBfHsIc= github.com/charmbracelet/bubbletea v1.1.2/go.mod h1:9HIU/hBV24qKjlehyj8z1r/tR9TYTQEag+cWZnuXo8E= -github.com/charmbracelet/huh v0.5.3 h1:3KLP4a/K1/S4dq4xFMTNMt3XWhgMl/yx8NYtygQ0bmg= -github.com/charmbracelet/huh v0.5.3/go.mod h1:OZC3lshuF+/y8laj//DoZdFSHxC51OrtXLJI8xWVouQ= github.com/charmbracelet/huh v0.6.0 h1:mZM8VvZGuE0hoDXq6XLxRtgfWyTI3b2jZNKh0xWmax8= github.com/charmbracelet/huh v0.6.0/go.mod h1:GGNKeWCeNzKpEOh/OJD8WBwTQjV3prFAtQPpLv+AVwU= github.com/charmbracelet/huh/spinner v0.0.0-20241028115900-20a4d21717a8 h1:g+Bz64hsMLTf3lAgUqI6Rj1YEAlm/HN39IuhyneCokc= @@ -32,6 +32,8 @@ github.com/charmbracelet/x/term v0.2.0 h1:cNB9Ot9q8I711MyZ7myUR5HFWL/lc3OpU8jZ4h github.com/charmbracelet/x/term v0.2.0/go.mod h1:GVxgxAbjUrmpvIINHIQnJJKpMlHiZ4cktEQCN6GWyF0= github.com/chengxilo/virtualterm v1.0.4 h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM= github.com/chengxilo/virtualterm v1.0.4/go.mod h1:DyxxBZz/x1iqJjFxTFcr6/x+jSpqN0iwWCOK1q10rlY= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -133,8 +135,6 @@ github.com/rusq/rbubbles v0.0.2 h1:U+rkywxtmBw0fdXABTCyND2YUZW9xydsxE12Co0tsFA= github.com/rusq/rbubbles v0.0.2/go.mod h1:wOrwl1AiCCmaL9fLnjKDajOP4IglSC84fH7a74VsnLk= github.com/rusq/secure v0.0.4 h1:svpiZHfHnx89eEDCCFI9OXG1Y8hL9kUWUG6fJbrWUOI= github.com/rusq/secure v0.0.4/go.mod h1:F1QilMKreuFRjov0UY7DZSIXn77/8RqMVGu2zV0RtqY= -github.com/rusq/slack v0.9.6-0.20240712095442-5a0e2e405a99 h1:dqEcNs9hMc2PiMwhw8+Zi3wF8GNUHIK5OItZ01iM0Vk= -github.com/rusq/slack v0.9.6-0.20240712095442-5a0e2e405a99/go.mod h1:9O0zQAFN6W47z4KpTQbe6vOHOzBO76vMg1+gthPwaTI= github.com/rusq/slack v0.9.6-0.20241104074952-d9b6e02955fa h1:meNaDH2eLwjAqvOxMlgb5+gaLz3Kufm9rVFkALhsCRs= github.com/rusq/slack v0.9.6-0.20241104074952-d9b6e02955fa/go.mod h1:9O0zQAFN6W47z4KpTQbe6vOHOzBO76vMg1+gthPwaTI= github.com/rusq/slackauth v0.5.1 h1:l+Gj96kYzHmljMYglRv76kgzuOJr/QbXDDA8JHyN71Q= diff --git a/internal/cache/auth.go b/internal/cache/auth.go index ca08a569..2245a815 100644 --- a/internal/cache/auth.go +++ b/internal/cache/auth.go @@ -159,7 +159,7 @@ func initProvider(ctx context.Context, cacheDir string, filename string, workspa if creds == nil || creds.IsEmpty() { if prov, err := tryLoad(ctx, credsFile); err != nil { msg := fmt.Sprintf("failed to load saved credentials: %s", err) - trace.Logf(ctx, "warn", msg) + trace.Log(ctx, "warn", msg) if auth.IsInvalidAuthErr(err) { lg.Println("authentication details expired, relogin is necessary") } diff --git a/internal/chunk/dirproc/dirproc.go b/internal/chunk/dirproc/dirproc.go index 2654497d..27f88ab1 100644 --- a/internal/chunk/dirproc/dirproc.go +++ b/internal/chunk/dirproc/dirproc.go @@ -37,16 +37,15 @@ func newDirProc(cd *chunk.Directory, name chunk.FileID) (*dirproc, error) { // Close closes the processor and the underlying chunk file. func (p *dirproc) Close() error { - if p.closed.Load() { + if !p.closed.CompareAndSwap(false, true) { return nil } var errs error if err := p.Recorder.Close(); err != nil { - errors.Join(errs, err) + errs = errors.Join(errs, err) } - p.closed.Store(true) if err := p.wc.Close(); err != nil { - errors.Join(errs, err) + errs = errors.Join(errs, err) } return errs } diff --git a/internal/chunk/dirproc/dirproc_test.go b/internal/chunk/dirproc/dirproc_test.go new file mode 100644 index 00000000..ee5005d6 --- /dev/null +++ b/internal/chunk/dirproc/dirproc_test.go @@ -0,0 +1,63 @@ +// Package dirproc is a processor that writes the data into gzipped files in a +// directory. Each conversation is output to a separate gzipped JSONL file. +// If a thread is given, the filename will have the thread ID in it. +package dirproc + +import ( + "sync/atomic" + "testing" + + "github.com/rusq/slackdump/v3/internal/chunk" +) + +type mockWriteCloser struct { + WriteCalled atomic.Bool + CloseCalled atomic.Bool +} + +func (m *mockWriteCloser) Write(p []byte) (n int, err error) { + m.WriteCalled.Store(true) + return 0, nil +} + +func (m *mockWriteCloser) Close() error { + m.CloseCalled.Store(true) + return nil +} + +func Test_dirproc_Close(t *testing.T) { + tests := []struct { + name string + fields *dirproc + prep func(d *dirproc) + wantErr bool + }{ + { + "already closed", + &dirproc{}, + func(d *dirproc) { + d.closed.Store(true) + }, + false, + }, + { + "close ok", + &dirproc{ + Recorder: &chunk.Recorder{}, + wc: &mockWriteCloser{}, + }, + nil, + false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.prep != nil { + tt.prep(tt.fields) + } + if err := tt.fields.Close(); (err != nil) != tt.wantErr { + t.Errorf("dirproc.Close() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/internal/edge/edge.go b/internal/edge/edge.go index 1a22b4a2..265e234c 100644 --- a/internal/edge/edge.go +++ b/internal/edge/edge.go @@ -211,7 +211,9 @@ func (cl *Client) PostForm(ctx context.Context, path string, form url.Values) (* func (cl *Client) record(b []byte) { if cl.tape != nil { - cl.tape.Write(b) + if _, err := cl.tape.Write(b); err != nil { + logger.Default.Printf("error writing to tape: %s", err) + } } } diff --git a/internal/fixtures/api.go b/internal/fixtures/api.go index 6e629729..0fb8ab41 100644 --- a/internal/fixtures/api.go +++ b/internal/fixtures/api.go @@ -23,6 +23,6 @@ func TestServer(t *testing.T, code int, response []byte) *httptest.Server { t.Helper() return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(code) - w.Write(response) + _, _ = w.Write(response) })) } diff --git a/internal/fixtures/fixtures.go b/internal/fixtures/fixtures.go index 33a5e6df..c3cf8077 100644 --- a/internal/fixtures/fixtures.go +++ b/internal/fixtures/fixtures.go @@ -44,13 +44,18 @@ func FilledBuffer(sz int) *bytes.Buffer { } // FilledFile returns a file that filled with sz bytes of 0x00. -func FilledFile(sz int) *os.File { +func FilledFile(t *testing.T, sz int) *os.File { + t.Helper() f, err := os.CreateTemp("", "sdunit*") if err != nil { panic(err) } - f.Write(bytes.Repeat([]byte{0x00}, sz)) - f.Seek(0, io.SeekStart) + if _, err := f.Write(bytes.Repeat([]byte{0x00}, sz)); err != nil { + t.Fatal(err) + } + if _, err := f.Seek(0, io.SeekStart); err != nil { + t.Fatal(err) + } return f } diff --git a/internal/viewer/renderer/slack.go b/internal/viewer/renderer/slack.go index 3fd0fcff..7f07c92f 100644 --- a/internal/viewer/renderer/slack.go +++ b/internal/viewer/renderer/slack.go @@ -6,6 +6,7 @@ import ( "encoding/json" "fmt" "html/template" + "log" "log/slog" "os" "strings" @@ -118,8 +119,12 @@ func maybeprint(v any) { if debug { enc := json.NewEncoder(os.Stderr) enc.SetIndent("", " ") - enc.Encode(v) - os.Stderr.Sync() + if err := enc.Encode(v); err != nil { + log.Printf("error printing value: %s", err) + } + if err := os.Stderr.Sync(); err != nil { + log.Printf("error flushing stderr: %s", err) + } } } diff --git a/stream/stream_test.go b/stream/stream_test.go index 9578cc5e..c4d6ba7c 100644 --- a/stream/stream_test.go +++ b/stream/stream_test.go @@ -283,7 +283,11 @@ func Test_processLink(t *testing.T) { func TestStream_Users(t *testing.T) { ctx := context.Background() srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Write([]byte(`{"ok":false,"error":"not_authed"}`)) + t.Helper() + _, err := w.Write([]byte(`{"ok":false,"error":"not_authed"}`)) + if err != nil { + t.Error(err) + } })) defer srv.Close() l := rateLimits{ From 2ab101e9b4d16f5c7f2aca39a83fff6befc8625f Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Sun, 10 Nov 2024 17:57:16 +1000 Subject: [PATCH 07/12] linter --- cmd/slackdump/internal/ui/cfgui/common_params.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/slackdump/internal/ui/cfgui/common_params.go b/cmd/slackdump/internal/ui/cfgui/common_params.go index f76767eb..33ce52bd 100644 --- a/cmd/slackdump/internal/ui/cfgui/common_params.go +++ b/cmd/slackdump/internal/ui/cfgui/common_params.go @@ -19,6 +19,6 @@ func ChannelIDs(v *string, required bool) Parameter { Value: *v, Description: descr, Inline: true, - Updater: updaters.NewString(v, "", true, structures.ValidateEntityList), + Updater: updaters.NewString(v, "", false, structures.ValidateEntityList), } } From f77347b56ef7b53a087679e6e81d478234f43d66 Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Sun, 10 Nov 2024 20:17:26 +1000 Subject: [PATCH 08/12] unicode-aware capitalisation --- cmd/slackdump/internal/archive/search_wizard.go | 3 +-- cmd/slackdump/internal/ui/bubbles/menu/model.go | 7 +++++-- cmd/slackdump/internal/workspace/wizard.go | 17 +++++++++++++---- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/cmd/slackdump/internal/archive/search_wizard.go b/cmd/slackdump/internal/archive/search_wizard.go index a2d3f47a..7835c1bb 100644 --- a/cmd/slackdump/internal/archive/search_wizard.go +++ b/cmd/slackdump/internal/archive/search_wizard.go @@ -26,7 +26,7 @@ func wizSearch(ctx context.Context, cmd *base.Command, args []string) error { return errors.New("select action") } if len(terms) == 0 { - return errors.New("search terms are not specified") + return errors.New("specify search terms in Search Options") } return nil }, @@ -62,7 +62,6 @@ func searchCfg() cfgui.Configuration { cfgui.ParamGroup{ Name: "Other parameters", Params: []cfgui.Parameter{ - { Name: "Scope", Description: "Choose the search scope.", diff --git a/cmd/slackdump/internal/ui/bubbles/menu/model.go b/cmd/slackdump/internal/ui/bubbles/menu/model.go index a4dbb639..c7242dc6 100644 --- a/cmd/slackdump/internal/ui/bubbles/menu/model.go +++ b/cmd/slackdump/internal/ui/bubbles/menu/model.go @@ -2,6 +2,7 @@ package menu import ( "strings" + "unicode" "github.com/charmbracelet/bubbles/help" "github.com/charmbracelet/bubbles/key" @@ -143,7 +144,9 @@ func capfirst(s string) string { if s == "" { return "" } - return strings.ToUpper(s[:1]) + s[1:] + r := []rune(s) + r[0] = unicode.ToUpper(r[0]) + return string(r) } func (m *Model) view() string { @@ -161,7 +164,7 @@ func (m *Model) view() string { // Header p(sty.Title.Render(m.title) + "\n") if currentDisabled { - p(sty.Description.Render("Requirements not met: " + capfirst(currentItem.Validate().Error()))) + p(sty.Description.Render("Requirements not satisfied: " + capfirst(currentItem.Validate().Error()))) } else { p(sty.Description.Render(m.items[m.cursor].Help)) } diff --git a/cmd/slackdump/internal/workspace/wizard.go b/cmd/slackdump/internal/workspace/wizard.go index 7602eab2..90acaa7a 100644 --- a/cmd/slackdump/internal/workspace/wizard.go +++ b/cmd/slackdump/internal/workspace/wizard.go @@ -6,6 +6,7 @@ import ( "github.com/charmbracelet/bubbles/table" tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui" @@ -60,7 +61,12 @@ func WorkspaceSelectModel(ctx context.Context, m *cache.Manager) (tea.Model, err } t.SetStyles(s) t.Focus() - return selectModel{table: t}, nil + return selectModel{ + table: t, + style: style{ + FocusedBorder: ui.DefaultTheme().Focused.Border, + }, + }, nil } func wizSelect(ctx context.Context, cmd *base.Command, args []string) error { @@ -93,12 +99,15 @@ func wizSelect(ctx context.Context, cmd *base.Command, args []string) error { return nil } -var baseStyle = ui.HuhTheme.Form - type selectModel struct { table table.Model selected string finished bool + style style +} + +type style struct { + FocusedBorder lipgloss.Style } func (m selectModel) Init() tea.Cmd { return nil } @@ -125,5 +134,5 @@ func (m selectModel) View() string { if m.finished { return "" // don't render the table if we've selected a workspace } - return baseStyle.Render(m.table.View()) + "\n\n" + ui.HuhTheme.Help.Ellipsis.Render("Select the workspace with arrow keys, press [Enter] to confirm, [Esc] to cancel.") + return m.style.FocusedBorder.Render((m.table.View()) + "\n\n" + ui.HuhTheme.Help.Ellipsis.Render("Select the workspace with arrow keys, press [Enter] to confirm, [Esc] to cancel.")) } From 8b65cc7cd76e7182032a0a833b7925dbede6d3a5 Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Sun, 10 Nov 2024 21:25:13 +1000 Subject: [PATCH 09/12] break dep cycle, workspace new --- cmd/slackdump/internal/diag/wizdebug.go | 2 +- .../internal/ui/bubbles/menu/menuitem.go | 8 +-- .../internal/ui/bubbles/menu/model.go | 8 +-- .../internal/ui/cfgui/configuration.go | 11 ---- cmd/slackdump/internal/ui/dumpui/dumpui.go | 16 ++--- cmd/slackdump/internal/workspace/new.go | 2 + .../workspace/{wizard.go => wiz_select.go} | 64 +++++++++---------- .../internal/workspace/workspaceui/wsp_new.go | 61 ++++++++++++++++++ 8 files changed, 112 insertions(+), 60 deletions(-) rename cmd/slackdump/internal/workspace/{wizard.go => wiz_select.go} (95%) create mode 100644 cmd/slackdump/internal/workspace/workspaceui/wsp_new.go diff --git a/cmd/slackdump/internal/diag/wizdebug.go b/cmd/slackdump/internal/diag/wizdebug.go index 8ce811d1..097fe76e 100644 --- a/cmd/slackdump/internal/diag/wizdebug.go +++ b/cmd/slackdump/internal/diag/wizdebug.go @@ -56,7 +56,7 @@ func runWizDebug(ctx context.Context, cmd *base.Command, args []string) error { } func debugDumpUI(ctx context.Context) error { - mnu := []menu.MenuItem{ + mnu := []menu.Item{ { ID: "run", Name: "Run", diff --git a/cmd/slackdump/internal/ui/bubbles/menu/menuitem.go b/cmd/slackdump/internal/ui/bubbles/menu/menuitem.go index efe65f4d..8317f2d9 100644 --- a/cmd/slackdump/internal/ui/bubbles/menu/menuitem.go +++ b/cmd/slackdump/internal/ui/bubbles/menu/menuitem.go @@ -1,7 +1,7 @@ package menu -// MenuItem is an item in a menu. -type MenuItem struct { +// Item is an item in a menu. +type Item struct { // ID is an arbitrary ID, up to caller. ID string // Separator is a flag that determines whether the item is a separator or @@ -24,11 +24,11 @@ type MenuItem struct { Validate func() error // when to enable the item } -func (m MenuItem) IsDisabled() bool { +func (m Item) IsDisabled() bool { return m.Validate != nil && m.Validate() != nil } -func (m MenuItem) DisabledReason() string { +func (m Item) DisabledReason() string { if m.Validate != nil { if err := m.Validate(); err != nil { return err.Error() diff --git a/cmd/slackdump/internal/ui/bubbles/menu/model.go b/cmd/slackdump/internal/ui/bubbles/menu/model.go index c7242dc6..3d1e3544 100644 --- a/cmd/slackdump/internal/ui/bubbles/menu/model.go +++ b/cmd/slackdump/internal/ui/bubbles/menu/model.go @@ -15,11 +15,11 @@ import ( type Model struct { // Selected will be set to the selected item from the items. - Selected MenuItem + Selected Item Cancelled bool title string - items []MenuItem + items []Item finishing bool focused bool preview bool // preview child model @@ -31,7 +31,7 @@ type Model struct { cursor int } -func New(title string, items []MenuItem, preview bool) *Model { +func New(title string, items []Item, preview bool) *Model { return &Model{ title: title, items: items, @@ -164,7 +164,7 @@ func (m *Model) view() string { // Header p(sty.Title.Render(m.title) + "\n") if currentDisabled { - p(sty.Description.Render("Requirements not satisfied: " + capfirst(currentItem.Validate().Error()))) + p(sty.Description.Render("Requirements not met: " + capfirst(currentItem.Validate().Error()))) } else { p(sty.Description.Render(m.items[m.cursor].Help)) } diff --git a/cmd/slackdump/internal/ui/cfgui/configuration.go b/cmd/slackdump/internal/ui/cfgui/configuration.go index 2c15cc46..787c9419 100644 --- a/cmd/slackdump/internal/ui/cfgui/configuration.go +++ b/cmd/slackdump/internal/ui/cfgui/configuration.go @@ -10,7 +10,6 @@ import ( tea "github.com/charmbracelet/bubbletea" "github.com/rusq/rbubbles/filemgr" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/apiconfig" - "github.com/rusq/slackdump/v3/cmd/slackdump/internal/bootstrap" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/updaters" ) @@ -32,16 +31,6 @@ type Parameter struct { func globalConfig() Configuration { return Configuration{ - { - Name: "Authentication", - Params: []Parameter{ - { - Name: "Slack Workspace", - Value: bootstrap.CurrentWsp(), - Description: "Currently selected Slack Workspace", - }, - }, - }, { Name: "Timeframe", Params: []Parameter{ diff --git a/cmd/slackdump/internal/ui/dumpui/dumpui.go b/cmd/slackdump/internal/ui/dumpui/dumpui.go index 0a846ddd..addc80ef 100644 --- a/cmd/slackdump/internal/ui/dumpui/dumpui.go +++ b/cmd/slackdump/internal/ui/dumpui/dumpui.go @@ -44,9 +44,9 @@ var description = map[string]string{ func (w *Wizard) Run(ctx context.Context) error { var menu = func() *menu.Model { - var items []menu.MenuItem + var items []menu.Item if w.LocalConfig != nil { - items = append(items, menu.MenuItem{ + items = append(items, menu.Item{ ID: actLocalConfig, Name: w.Name + " Options...", Help: description[actLocalConfig], @@ -57,7 +57,7 @@ func (w *Wizard) Run(ctx context.Context) error { items = append( items, - menu.MenuItem{ + menu.Item{ ID: actRun, Name: "Run " + w.Name, Help: description[actRun], @@ -70,7 +70,7 @@ func (w *Wizard) Run(ctx context.Context) error { }, ) if w.Help != "" { - items = append(items, menu.MenuItem{ + items = append(items, menu.Item{ ID: "help", Name: "Help", Help: "Read help for " + w.Name, @@ -78,15 +78,15 @@ func (w *Wizard) Run(ctx context.Context) error { } items = append(items, - menu.MenuItem{Separator: true}, - menu.MenuItem{ + menu.Item{Separator: true}, + menu.Item{ ID: actGlobalConfig, Name: "Global Configuration...", Help: description[actGlobalConfig], Model: cfgui.NewConfigUI(cfgui.DefaultStyle(), cfgui.GlobalConfig), // TODO: filthy cast }, - menu.MenuItem{Separator: true}, - menu.MenuItem{ID: actExit, Name: "Exit", Help: description[actExit]}, + menu.Item{Separator: true}, + menu.Item{ID: actExit, Name: "Exit", Help: description[actExit]}, ) return menu.New(w.Title, items, true) diff --git a/cmd/slackdump/internal/workspace/new.go b/cmd/slackdump/internal/workspace/new.go index 336143fd..13521d91 100644 --- a/cmd/slackdump/internal/workspace/new.go +++ b/cmd/slackdump/internal/workspace/new.go @@ -10,6 +10,7 @@ import ( "github.com/rusq/slackdump/v3/auth" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/workspace/workspaceui" "github.com/rusq/slackdump/v3/internal/cache" ) @@ -23,6 +24,7 @@ var CmdWspNew = &base.Command{ `, FlagMask: flagmask &^ cfg.OmitAuthFlags, // only auth flags. PrintFlags: true, + Wizard: workspaceui.WorkspaceNew, } var newParams = struct { diff --git a/cmd/slackdump/internal/workspace/wizard.go b/cmd/slackdump/internal/workspace/wiz_select.go similarity index 95% rename from cmd/slackdump/internal/workspace/wizard.go rename to cmd/slackdump/internal/workspace/wiz_select.go index 90acaa7a..a3f948ee 100644 --- a/cmd/slackdump/internal/workspace/wizard.go +++ b/cmd/slackdump/internal/workspace/wiz_select.go @@ -16,7 +16,37 @@ import ( // TODO: organise as a self-sufficient model with proper error handling. -func WorkspaceSelectModel(ctx context.Context, m *cache.Manager) (tea.Model, error) { +func wizSelect(ctx context.Context, cmd *base.Command, args []string) error { + m, err := cache.NewManager(cfg.CacheDir()) + if err != nil { + base.SetExitStatus(base.SCacheError) + return err + } + + sm, err := workspaceSelectModel(ctx, m) + if err != nil { + return err + } + if sm == nil { + // TODO: handle this case + return nil + } + mod, err := tea.NewProgram(sm).Run() + if err != nil { + return fmt.Errorf("workspace select wizard error: %w", err) + } + if newWsp := mod.(selectModel).selected; newWsp != "" { + if err := m.Select(newWsp); err != nil { + base.SetExitStatus(base.SWorkspaceError) + return fmt.Errorf("error setting the current workspace: %s", err) + } + logger.FromContext(ctx).Debugf("selected workspace: %s", newWsp) + } + + return nil +} + +func workspaceSelectModel(ctx context.Context, m *cache.Manager) (tea.Model, error) { wspList, err := m.List() if err != nil { base.SetExitStatus(base.SCacheError) @@ -39,7 +69,7 @@ func WorkspaceSelectModel(ctx context.Context, m *cache.Manager) (tea.Model, err {Title: "Name", Width: 14}, {Title: "Team", Width: 15}, {Title: "User", Width: 15}, - {Title: "Error", Width: 30}, + {Title: "Status", Width: 30}, } var rows []table.Row @@ -69,36 +99,6 @@ func WorkspaceSelectModel(ctx context.Context, m *cache.Manager) (tea.Model, err }, nil } -func wizSelect(ctx context.Context, cmd *base.Command, args []string) error { - m, err := cache.NewManager(cfg.CacheDir()) - if err != nil { - base.SetExitStatus(base.SCacheError) - return err - } - - sm, err := WorkspaceSelectModel(ctx, m) - if err != nil { - return err - } - if sm == nil { - // TODO: handle this case - return nil - } - mod, err := tea.NewProgram(sm).Run() - if err != nil { - return fmt.Errorf("workspace select wizard error: %w", err) - } - if newWsp := mod.(selectModel).selected; newWsp != "" { - if err := m.Select(newWsp); err != nil { - base.SetExitStatus(base.SWorkspaceError) - return fmt.Errorf("error setting the current workspace: %s", err) - } - logger.FromContext(ctx).Debugf("selected workspace: %s", newWsp) - } - - return nil -} - type selectModel struct { table table.Model selected string diff --git a/cmd/slackdump/internal/workspace/workspaceui/wsp_new.go b/cmd/slackdump/internal/workspace/workspaceui/wsp_new.go new file mode 100644 index 00000000..a4627c97 --- /dev/null +++ b/cmd/slackdump/internal/workspace/workspaceui/wsp_new.go @@ -0,0 +1,61 @@ +package workspaceui + +import ( + "context" + + tea "github.com/charmbracelet/bubbletea" + + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/bubbles/menu" +) + +type wizModel struct { + m *menu.Model +} + +func WorkspaceNew(ctx context.Context, _ *base.Command, _ []string) error { + items := []menu.Item{ + { + ID: "ezlogin", + Name: "Login in Browser", + Help: "Login to Slack in your browser", + }, + { + ID: "token", + Name: "Token/Cookie", + Help: "Enter token and cookie that you grabbed from the browser", + }, + { + ID: "secrets", + Name: "From file with secrets", + Help: "Read from secrets.txt or .env file", + }, + { + Separator: true, + }, + { + ID: "exit", + Name: "Exit", + Help: "Exit to main menu", + }, + } + + m := menu.New("New Workspace", items, true) + + if _, err := tea.NewProgram(&wizModel{m: m}, tea.WithContext(ctx)).Run(); err != nil { + return err + } + return nil +} + +func (m *wizModel) Init() tea.Cmd { + return m.m.Init() +} + +func (m *wizModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { + return m.m.Update(msg) +} + +func (m *wizModel) View() string { + return m.m.View() +} From 900991d8a75f9639b4f07acd6308736946ba77db Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Mon, 11 Nov 2024 21:59:51 +1000 Subject: [PATCH 10/12] token/cookie new auth flow --- cmd/slackdump/internal/diag/eztest.go | 70 +++++++--- cmd/slackdump/internal/export/wizard.go | 17 +-- .../internal/ui/bubbles/menu/model.go | 44 ++++-- cmd/slackdump/internal/ui/theme.go | 3 +- .../internal/workspace/workspaceui/api.go | 34 +++++ .../internal/workspace/workspaceui/dialogs.go | 34 +++++ .../workspace/workspaceui/tokencookie.go | 132 ++++++++++++++++++ .../workspace/workspaceui/workspaceui.go | 95 +++++++++++++ .../internal/workspace/workspaceui/wsp_new.go | 61 -------- cmd/slackdump/main.go | 7 +- internal/cache/manager.go | 7 +- internal/structures/structures.go | 18 +++ .../structures/structures_test.go | 7 +- 13 files changed, 411 insertions(+), 118 deletions(-) create mode 100644 cmd/slackdump/internal/workspace/workspaceui/api.go create mode 100644 cmd/slackdump/internal/workspace/workspaceui/dialogs.go create mode 100644 cmd/slackdump/internal/workspace/workspaceui/tokencookie.go create mode 100644 cmd/slackdump/internal/workspace/workspaceui/workspaceui.go delete mode 100644 cmd/slackdump/internal/workspace/workspaceui/wsp_new.go rename cmd/slackdump/internal/export/wizard_test.go => internal/structures/structures_test.go (89%) diff --git a/cmd/slackdump/internal/diag/eztest.go b/cmd/slackdump/internal/diag/eztest.go index f3aaef4f..02d1567e 100644 --- a/cmd/slackdump/internal/diag/eztest.go +++ b/cmd/slackdump/internal/diag/eztest.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "fmt" + "net/http" "os" "github.com/playwright-community/playwright-go" @@ -29,34 +30,49 @@ You will see "OK" in the end if there were no issues, otherwise an error will be printed and the test will be terminated. `, CustomFlags: true, + PrintFlags: true, } type ezResult struct { - Engine string `json:"engine,omitempty"` - HasToken bool `json:"has_token,omitempty"` - HasCookies bool `json:"has_cookies,omitempty"` - Err *string `json:"error,omitempty"` + Engine string `json:"engine,omitempty"` + HasToken bool `json:"has_token,omitempty"` + HasCookies bool `json:"has_cookies,omitempty"` + Err *string `json:"error,omitempty"` + Credentials *Credentials `json:"credentials,omitempty"` } +type Credentials struct { + Token string `json:"token,omitempty"` + Cookies []*http.Cookie `json:"cookie,omitempty"` +} + +type eztestOpts struct { + printCreds bool + wsp string + legacy bool +} + +var eztestFlags eztestOpts + func init() { CmdEzTest.Flag.Usage = func() { fmt.Fprint(os.Stdout, "usage: slackdump tools eztest [flags]\n\nFlags:\n") CmdEzTest.Flag.PrintDefaults() } + CmdEzTest.Flag.BoolVar(&eztestFlags.printCreds, "p", false, "print credentials") + CmdEzTest.Flag.BoolVar(&eztestFlags.legacy, "legacy-browser", false, "run with playwright") + CmdEzTest.Flag.StringVar(&eztestFlags.wsp, "w", "", "Slack `workspace` to login to.") } func runEzLoginTest(ctx context.Context, cmd *base.Command, args []string) error { lg := logger.FromContext(ctx) - wsp := cmd.Flag.String("w", "", "Slack `workspace` to login to.") - legacy := cmd.Flag.Bool("legacy-browser", false, "run with playwright") - if err := cmd.Flag.Parse(args); err != nil { base.SetExitStatus(base.SInvalidParameters) return err } - if *wsp == "" { + if eztestFlags.wsp == "" { base.SetExitStatus(base.SInvalidParameters) cmd.Flag.Usage() return nil @@ -66,10 +82,10 @@ func runEzLoginTest(ctx context.Context, cmd *base.Command, args []string) error res ezResult ) - if *legacy { - res = tryPlaywrightAuth(ctx, *wsp) + if eztestFlags.legacy { + res = tryPlaywrightAuth(ctx, eztestFlags.wsp, eztestFlags.printCreds) } else { - res = tryRodAuth(ctx, *wsp) + res = tryRodAuth(ctx, eztestFlags.wsp, eztestFlags.printCreds) } enc := json.NewEncoder(os.Stdout) @@ -88,28 +104,34 @@ func runEzLoginTest(ctx context.Context, cmd *base.Command, args []string) error return nil } -func tryPlaywrightAuth(ctx context.Context, wsp string) ezResult { - var res = ezResult{Engine: "playwright"} +func tryPlaywrightAuth(ctx context.Context, wsp string, populateCreds bool) ezResult { + var ret = ezResult{Engine: "playwright"} if err := playwright.Install(&playwright.RunOptions{Browsers: []string{"firefox"}}); err != nil { - res.Err = ptr(fmt.Sprintf("playwright installation error: %s", err)) - return res + ret.Err = ptr(fmt.Sprintf("playwright installation error: %s", err)) + return ret } prov, err := auth.NewBrowserAuth(ctx, auth.BrowserWithWorkspace(wsp)) if err != nil { - res.Err = ptr(err.Error()) - return res + ret.Err = ptr(err.Error()) + return ret } - res.HasToken = len(prov.SlackToken()) > 0 - res.HasCookies = len(prov.Cookies()) > 0 - return res + ret.HasToken = len(prov.SlackToken()) > 0 + ret.HasCookies = len(prov.Cookies()) > 0 + if populateCreds { + ret.Credentials = &Credentials{ + Token: prov.SlackToken(), + Cookies: prov.Cookies(), + } + } + return ret } func ptr[T any](t T) *T { return &t } -func tryRodAuth(ctx context.Context, wsp string) ezResult { +func tryRodAuth(ctx context.Context, wsp string, populateCreds bool) ezResult { ret := ezResult{Engine: "rod"} prov, err := auth.NewRODAuth(ctx, auth.BrowserWithWorkspace(wsp)) if err != nil { @@ -118,5 +140,11 @@ func tryRodAuth(ctx context.Context, wsp string) ezResult { } ret.HasCookies = len(prov.Cookies()) > 0 ret.HasToken = len(prov.SlackToken()) > 0 + if populateCreds { + ret.Credentials = &Credentials{ + Token: prov.SlackToken(), + Cookies: prov.Cookies(), + } + } return ret } diff --git a/cmd/slackdump/internal/export/wizard.go b/cmd/slackdump/internal/export/wizard.go index 0e636fdc..fcf6e7f3 100644 --- a/cmd/slackdump/internal/export/wizard.go +++ b/cmd/slackdump/internal/export/wizard.go @@ -2,8 +2,6 @@ package export import ( "context" - "errors" - "regexp" "github.com/charmbracelet/huh" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" @@ -63,22 +61,9 @@ func (fl *exportFlags) configuration() cfgui.Configuration { Value: fl.ExportToken, Description: "File export token to append to each of the file URLs", Inline: true, - Updater: updaters.NewString(&fl.ExportToken, "", false, validateToken), + Updater: updaters.NewString(&fl.ExportToken, "", false, structures.ValidateToken), }, }, }, } } - -// tokenRe is a loose regular expression to match Slack API tokens. -// a - app, b - bot, c - client, e - export, p - legacy -var tokenRE = regexp.MustCompile(`xox[abcep]-[0-9]+-[0-9]+-[0-9]+-[0-9a-z]{64}`) - -var errInvalidToken = errors.New("token must start with xoxa-, xoxb-, xoxc- or xoxe- and be followed by 4 numbers and 64 lowercase letters") - -func validateToken(token string) error { - if !tokenRE.MatchString(token) { - return errInvalidToken - } - return nil -} diff --git a/cmd/slackdump/internal/ui/bubbles/menu/model.go b/cmd/slackdump/internal/ui/bubbles/menu/model.go index 3d1e3544..032d8092 100644 --- a/cmd/slackdump/internal/ui/bubbles/menu/model.go +++ b/cmd/slackdump/internal/ui/bubbles/menu/model.go @@ -8,6 +8,7 @@ import ( "github.com/charmbracelet/bubbles/key" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/cfgui" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/updaters" @@ -29,9 +30,18 @@ type Model struct { help help.Model cursor int + last int } func New(title string, items []Item, preview bool) *Model { + var last = len(items) - 1 + for i := last; i >= 0; i++ { + if !items[i].Separator { + break + } + last-- + } + return &Model{ title: title, items: items, @@ -41,6 +51,8 @@ func New(title string, items []Item, preview bool) *Model { focused: true, preview: preview, finishing: false, + cursor: 0, + last: last, } } @@ -76,21 +88,29 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.Selected = m.items[m.cursor] cmds = append(cmds, tea.Quit) case key.Matches(msg, m.Keymap.Up): - for { - if m.cursor > 0 { - m.cursor-- - } - if !m.items[m.cursor].Separator { - break + if m.cursor == 0 { + m.cursor = m.last + } else { + for { + if m.cursor > 0 { + m.cursor-- + } + if !m.items[m.cursor].Separator { + break + } } } case key.Matches(msg, m.Keymap.Down): - for { - if m.cursor < len(m.items)-1 { - m.cursor++ - } - if !m.items[m.cursor].Separator { - break + if m.cursor == m.last { + m.cursor = 0 + } else { + for { + if m.cursor < m.last { + m.cursor++ + } + if !m.items[m.cursor].Separator { + break + } } } case key.Matches(msg, m.Keymap.Select): diff --git a/cmd/slackdump/internal/ui/theme.go b/cmd/slackdump/internal/ui/theme.go index 402495b6..0999b70c 100644 --- a/cmd/slackdump/internal/ui/theme.go +++ b/cmd/slackdump/internal/ui/theme.go @@ -138,8 +138,9 @@ func ThemeBase16Ext() *huh.Theme { t.Focused.SelectedOption = t.Focused.SelectedOption.Foreground(black).Background(green) t.Focused.SelectedPrefix = t.Focused.SelectedPrefix.Foreground(green) t.Focused.UnselectedOption = t.Focused.UnselectedOption.Foreground(white) - t.Focused.FocusedButton = t.Focused.FocusedButton.Foreground(white).Background(purple) + t.Focused.FocusedButton = t.Focused.FocusedButton.Foreground(white).Background(green) t.Focused.BlurredButton = t.Focused.BlurredButton.Foreground(white).Background(black) + t.Focused.NoteTitle = t.Focused.NoteTitle.Foreground(cyan) t.Focused.TextInput.Cursor.Foreground(purple) t.Focused.TextInput.Placeholder.Foreground(gray) diff --git a/cmd/slackdump/internal/workspace/workspaceui/api.go b/cmd/slackdump/internal/workspace/workspaceui/api.go new file mode 100644 index 00000000..ea5ae0c9 --- /dev/null +++ b/cmd/slackdump/internal/workspace/workspaceui/api.go @@ -0,0 +1,34 @@ +package workspaceui + +import ( + "context" + + "github.com/rusq/slackdump/v3/auth" + "github.com/rusq/slackdump/v3/auth/auth_ui" +) + +type manager interface { + SaveProvider(workspace string, p auth.Provider) error + Select(workspace string) error +} + +// createAndSelect creates a new workspace with the given provider and selects it. +// It returns the workspace name on success. +func createAndSelect(ctx context.Context, m manager, prov auth.Provider) (string, error) { + authInfo, err := prov.Test(ctx) + if err != nil { + return "", err + } + + wsp, err := auth_ui.Sanitize(authInfo.URL) + if err != nil { + return "", err + } + if err := m.SaveProvider(wsp, prov); err != nil { + return "", err + } + if err := m.Select(wsp); err != nil { + return "", err + } + return wsp, nil +} diff --git a/cmd/slackdump/internal/workspace/workspaceui/dialogs.go b/cmd/slackdump/internal/workspace/workspaceui/dialogs.go new file mode 100644 index 00000000..85f60aa6 --- /dev/null +++ b/cmd/slackdump/internal/workspace/workspaceui/dialogs.go @@ -0,0 +1,34 @@ +package workspaceui + +import ( + "context" + "fmt" + + "github.com/charmbracelet/huh" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui" +) + +func askRetry(ctx context.Context, name string, err error) (retry bool) { + var msg string = fmt.Sprintf("The following error occurred: %s", err) + if name != "" { + msg = fmt.Sprintf("Error creating workspace %q: %s", name, err) + } + + if err := huh.NewForm(huh.NewGroup( + huh.NewConfirm().Title("Error Creating Workspace"). + Description(msg). + Value(&retry).Affirmative("Retry").Negative("Cancel"), + )).WithTheme(ui.HuhTheme).RunWithContext(ctx); err != nil { + return false + } + return retry +} + +func success(ctx context.Context, workspace string) error { + return huh.NewForm(huh.NewGroup( + huh.NewNote().Title("Great Success!"). + Description(fmt.Sprintf("Workspace %q was added and selected.\n\n", workspace)). + Next(true). + NextLabel("Exit"), + )).WithTheme(ui.HuhTheme).RunWithContext(ctx) +} diff --git a/cmd/slackdump/internal/workspace/workspaceui/tokencookie.go b/cmd/slackdump/internal/workspace/workspaceui/tokencookie.go new file mode 100644 index 00000000..c3dbe9da --- /dev/null +++ b/cmd/slackdump/internal/workspace/workspaceui/tokencookie.go @@ -0,0 +1,132 @@ +package workspaceui + +import ( + "context" + + "github.com/charmbracelet/huh" + "github.com/rusq/slackdump/v3/auth" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui" + "github.com/rusq/slackdump/v3/internal/structures" +) + +const sampleToken = "xoxc-610187951300-604451271234-3473161557912-4c426dd426a45208707725b710302b32dda0ab002b80ccd8c4c8ac9971a11558" + +func prgTokenCookie(ctx context.Context, m manager) error { + var ( + token string + cookie string + workspace string + confirmed bool + ) + for !confirmed { + f := huh.NewForm(huh.NewGroup( + huh.NewInput().Title("Token"). + Description("Token value"). + Placeholder(sampleToken). + Value(&token). + Validate(structures.ValidateToken), + huh.NewInput().Title("Cookie"). + Description("Session cookie"). + Placeholder("xoxd-..."). + Value(&cookie), + huh.NewConfirm().Title("Confirm creation of workspace?"). + Description("Once confirmed this will create a new workspace with the provided token and cookie"). + Value(&confirmed). + Validate(makeValidator(ctx, &token, &cookie, auth.NewValueAuth)), + )).WithTheme(ui.HuhTheme) + if err := f.Run(); err != nil { + return err + } + if !confirmed { + return nil + } + + prov, err := auth.NewValueAuth(token, cookie) + if err != nil { + return err + } + name, err := createAndSelect(ctx, m, prov) + if err != nil { + confirmed = false + retry := askRetry(ctx, name, err) + if !retry { + return nil + } + } else { + workspace = name + break + } + } + + return success(ctx, workspace) +} + +// makeValidator creates a validator function that uses the newProvFn to +// create a new provider and test it. newProvFn should be a function that +// creates a new provider from a token and a value, where value is either a +// cookie or a file with cookies. +func makeValidator[P auth.Provider](ctx context.Context, token *string, val *string, newProvFn func(string, string) (P, error)) func(bool) error { + return func(b bool) error { + if !b { + return nil + } + p, err := newProvFn(*token, *val) + if err != nil { + return err + } + _, err = p.Test(ctx) + if err != nil { + return err + } + return nil + } +} + +func prgTokenCookieFile(ctx context.Context, m manager) error { + var ( + token string + cookiefile string + workspace string + confirmed bool + ) + for !confirmed { + f := huh.NewForm(huh.NewGroup( + huh.NewInput().Title("Token"). + Description("Token value"). + Placeholder(sampleToken). + Value(&token). + Validate(structures.ValidateToken), + huh.NewFilePicker().Title("Cookie File"). + Description("Select a cookies.txt file in Mozilla Format").AllowedTypes([]string{"txt"}). + FileAllowed(true). + ShowSize(true). + ShowPermissions(true). + Value(&cookiefile), + huh.NewConfirm().Title("Is this correct?"). + Description("Once confirmed this will create a new workspace with the provided token and cookie"). + Value(&confirmed). + Validate(makeValidator(ctx, &token, &cookiefile, auth.NewCookieFileAuth)), + )).WithTheme(ui.HuhTheme) + if err := f.Run(); err != nil { + return err + } + + prov, err := auth.NewValueAuth(token, cookiefile) + if err != nil { + return err + } + name, err := createAndSelect(ctx, m, prov) + if err != nil { + confirmed = false + retry := askRetry(ctx, name, err) + if !retry { + return nil + } + } else { + workspace = name + break + } + } + + return success(ctx, workspace) +} diff --git a/cmd/slackdump/internal/workspace/workspaceui/workspaceui.go b/cmd/slackdump/internal/workspace/workspaceui/workspaceui.go new file mode 100644 index 00000000..db91fe05 --- /dev/null +++ b/cmd/slackdump/internal/workspace/workspaceui/workspaceui.go @@ -0,0 +1,95 @@ +package workspaceui + +import ( + "context" + "errors" + + tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/huh" + + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/cfg" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/bubbles/menu" + "github.com/rusq/slackdump/v3/internal/cache" +) + +func WorkspaceNew(ctx context.Context, _ *base.Command, _ []string) error { + const ( + actLogin = "ezlogin" + actToken = "token" + actTokenFile = "tokenfile" + actSecrets = "secrets" + actExit = "exit" + ) + + mgr, err := cache.NewManager(cfg.CacheDir()) + if err != nil { + return err + } + + items := []menu.Item{ + { + ID: actLogin, + Name: "Login in Browser", + Help: "Login to Slack in your browser", + }, + { + ID: actToken, + Name: "Token/Cookie", + Help: "Enter token and cookie that you grabbed from the browser", + }, + { + ID: actTokenFile, + Name: "Token/Cookie from file", + Help: "Provide token value and cookies from file", + }, + { + ID: actSecrets, + Name: "From file with secrets", + Help: "Read from secrets.txt or .env file", + }, + { + Separator: true, + }, + { + ID: actExit, + Name: "Exit", + Help: "Exit to main menu", + }, + } + +LOOP: + for { + m := menu.New("New Workspace", items, true) + if _, err := tea.NewProgram(&wizModel{m: m}, tea.WithContext(ctx)).Run(); err != nil { + return err + } + if m.Cancelled { + break LOOP + } + var err error + switch m.Selected.ID { + case actToken: + err = prgTokenCookie(ctx, mgr) + case actTokenFile: + err = prgTokenCookieFile(ctx, mgr) + case actExit: + break LOOP + } + if err != nil { + if errors.Is(err, huh.ErrUserAborted) { + continue + } + return err + } + } + + return nil +} + +// wizModel is a wrapper around the menu. +type wizModel struct{ m *menu.Model } + +func (m *wizModel) Init() tea.Cmd { return m.m.Init() } +func (m *wizModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return m.m.Update(msg) } +func (m *wizModel) View() string { return m.m.View() } diff --git a/cmd/slackdump/internal/workspace/workspaceui/wsp_new.go b/cmd/slackdump/internal/workspace/workspaceui/wsp_new.go deleted file mode 100644 index a4627c97..00000000 --- a/cmd/slackdump/internal/workspace/workspaceui/wsp_new.go +++ /dev/null @@ -1,61 +0,0 @@ -package workspaceui - -import ( - "context" - - tea "github.com/charmbracelet/bubbletea" - - "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/base" - "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui/bubbles/menu" -) - -type wizModel struct { - m *menu.Model -} - -func WorkspaceNew(ctx context.Context, _ *base.Command, _ []string) error { - items := []menu.Item{ - { - ID: "ezlogin", - Name: "Login in Browser", - Help: "Login to Slack in your browser", - }, - { - ID: "token", - Name: "Token/Cookie", - Help: "Enter token and cookie that you grabbed from the browser", - }, - { - ID: "secrets", - Name: "From file with secrets", - Help: "Read from secrets.txt or .env file", - }, - { - Separator: true, - }, - { - ID: "exit", - Name: "Exit", - Help: "Exit to main menu", - }, - } - - m := menu.New("New Workspace", items, true) - - if _, err := tea.NewProgram(&wizModel{m: m}, tea.WithContext(ctx)).Run(); err != nil { - return err - } - return nil -} - -func (m *wizModel) Init() tea.Cmd { - return m.m.Init() -} - -func (m *wizModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { - return m.m.Update(msg) -} - -func (m *wizModel) View() string { - return m.m.View() -} diff --git a/cmd/slackdump/main.go b/cmd/slackdump/main.go index b8376f00..f8875879 100644 --- a/cmd/slackdump/main.go +++ b/cmd/slackdump/main.go @@ -30,6 +30,7 @@ import ( "github.com/rusq/slackdump/v3/cmd/slackdump/internal/golang/help" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/list" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/man" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/view" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/wizard" "github.com/rusq/slackdump/v3/cmd/slackdump/internal/workspace" @@ -40,6 +41,7 @@ func init() { loadSecrets(secretFiles) base.Slackdump.Commands = []*base.Command{ + workspace.CmdWorkspace, archive.CmdArchive, export.CmdExport, dump.CmdDump, @@ -47,7 +49,6 @@ func init() { convertcmd.CmdConvert, list.CmdList, emoji.CmdEmoji, - workspace.CmdWorkspace, diag.CmdDiag, apiconfig.CmdConfig, format.CmdFormat, @@ -297,13 +298,13 @@ func whatDo() (choice, error) { fmt.Print("\n" + cfg.Version.String() + "\n") var ans choice - err := huh.NewSelect[choice](). + err := huh.NewForm(huh.NewGroup(huh.NewSelect[choice](). Title("What do you want to do?"). Options( huh.NewOption(string(choiceHelp), choiceHelp), huh.NewOption(string(choiceWizard), choiceWizard), huh.NewOption(string(choiceExit), choiceExit), - ).Value(&ans).Run() + ).Value(&ans))).WithTheme(ui.HuhTheme).Run() return ans, err } diff --git a/internal/cache/manager.go b/internal/cache/manager.go index 91006c9a..e46f4d64 100644 --- a/internal/cache/manager.go +++ b/internal/cache/manager.go @@ -140,7 +140,12 @@ func (m *Manager) Auth(ctx context.Context, name string, c Credentials) (auth.Pr // LoadProvider loads the file from disk without any checks. func (m *Manager) LoadProvider(name string) (auth.Provider, error) { - return loadCreds(filer, filepath.Join(m.dir, m.filename(name))) + return loadCreds(filer, m.filepath(name)) +} + +// SaveProvider saves the provider to the file, no questions asked. +func (m *Manager) SaveProvider(name string, p auth.Provider) error { + return saveCreds(filer, m.filepath(name), p) } // ErrWorkspace is the error returned by the workspace manager, it contains the diff --git a/internal/structures/structures.go b/internal/structures/structures.go index 2f24229b..fe99ab28 100644 --- a/internal/structures/structures.go +++ b/internal/structures/structures.go @@ -1,6 +1,11 @@ // Package structures provides functions to parse Slack data types. package structures +import ( + "errors" + "regexp" +) + const ( LatestReplyNoReplies = "0000000000.000000" ) @@ -8,3 +13,16 @@ const ( const ( SubTypeThreadBroadcast = "thread_broadcast" ) + +// tokenRe is a loose regular expression to match Slack API tokens. +// a - app, b - bot, c - client, e - export, p - legacy +var tokenRE = regexp.MustCompile(`xox[abcep]-[0-9]+-[0-9]+-[0-9]+-[0-9a-f]{64}`) + +var errInvalidToken = errors.New("token must start with xoxa-, xoxb-, xoxc-, xoxe- or xoxp- and be followed by 3 group of numbers and then 64 hexadecimal characters") + +func ValidateToken(token string) error { + if !tokenRE.MatchString(token) { + return errInvalidToken + } + return nil +} diff --git a/cmd/slackdump/internal/export/wizard_test.go b/internal/structures/structures_test.go similarity index 89% rename from cmd/slackdump/internal/export/wizard_test.go rename to internal/structures/structures_test.go index 1a0081e8..7166a83e 100644 --- a/cmd/slackdump/internal/export/wizard_test.go +++ b/internal/structures/structures_test.go @@ -1,4 +1,5 @@ -package export +// Package structures provides functions to parse Slack data types. +package structures import ( "testing" @@ -6,7 +7,7 @@ import ( "github.com/rusq/slackdump/v3/internal/fixtures" ) -func Test_validateToken(t *testing.T) { +func TestValidateToken(t *testing.T) { type args struct { token string } @@ -68,7 +69,7 @@ func Test_validateToken(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := validateToken(tt.args.token); (err != nil) != tt.wantErr { + if err := ValidateToken(tt.args.token); (err != nil) != tt.wantErr { t.Errorf("validateToken() error = %v, wantErr %v", err, tt.wantErr) } }) From f82d657dfb17cf494b356e96c70333eef4c71cf7 Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Tue, 12 Nov 2024 22:37:06 +1000 Subject: [PATCH 11/12] new workspace wizard --- auth/auth_ui/huh.go | 12 +-- cmd/slackdump/internal/ui/filepicker.go | 2 +- cmd/slackdump/internal/ui/filesystem.go | 2 +- cmd/slackdump/internal/ui/input.go | 2 +- cmd/slackdump/internal/ui/keymap.go | 13 ++++ cmd/slackdump/internal/ui/theme.go | 5 +- .../internal/ui/updaters/picklist.go | 2 +- cmd/slackdump/internal/wizard/model.go | 2 +- .../internal/workspace/wiz_select.go | 2 +- .../internal/workspace/workspaceui/dialogs.go | 4 +- .../workspace/workspaceui/ezlogin3000.go | 76 +++++++++++++++++++ .../workspace/workspaceui/tokencookie.go | 9 ++- .../workspace/workspaceui/workspaceui.go | 22 ++++-- cmd/slackdump/main.go | 2 +- 14 files changed, 127 insertions(+), 28 deletions(-) create mode 100644 cmd/slackdump/internal/ui/keymap.go create mode 100644 cmd/slackdump/internal/workspace/workspaceui/ezlogin3000.go diff --git a/auth/auth_ui/huh.go b/auth/auth_ui/huh.go index 086de9e8..1b9bc4dd 100644 --- a/auth/auth_ui/huh.go +++ b/auth/auth_ui/huh.go @@ -14,6 +14,8 @@ import ( // Huh is the Auth UI that uses the huh library to provide a terminal UI. type Huh struct{} +var Theme = huh.ThemeBase16() + func (h *Huh) RequestWorkspace(w io.Writer) (string, error) { var workspace string err := huh.NewForm(huh.NewGroup( @@ -22,7 +24,7 @@ func (h *Huh) RequestWorkspace(w io.Writer) (string, error) { Value(&workspace). Validate(valWorkspace). Description("The workspace name is the part of the URL that comes before `.slack.com' in\nhttps://.slack.com/. Both workspace name or URL are acceptable."), - )).Run() + )).WithTheme(Theme).Run() if err != nil { return "", err } @@ -44,7 +46,7 @@ func (*Huh) RequestCreds(w io.Writer, workspace string) (email string, passwd st Placeholder("your slack password"). Validate(valRequired).EchoMode(huh.EchoModePassword), ), - ) + ).WithTheme(Theme) err = f.Run() return } @@ -137,7 +139,7 @@ func (*Huh) RequestLoginType(w io.Writer, workspace string) (LoginOpts, error) { return "" } }, &ret.Type)) - if err := huh.NewForm(huh.NewGroup(fields...)).Run(); err != nil { + if err := huh.NewForm(huh.NewGroup(fields...)).WithTheme(Theme).Run(); err != nil { return ret, err } if ret.Type == LUserBrowser { @@ -170,7 +172,7 @@ func chooseBrowser() (string, error) { DescriptionFunc(func() string { return browsers[selection].Path }, &selection), - )).Run() + )).WithTheme(Theme).Run() if err != nil { return "", err } @@ -189,7 +191,7 @@ func (*Huh) ConfirmationCode(email string) (int, error) { Description("Slack did not recognise the browser, and sent a confirmation code. Please enter the confirmation code below."). Value(&strCode). Validate(valSixDigits), - )) + )).WithTheme(Theme) if err := q.Run(); err != nil { return 0, err } diff --git a/cmd/slackdump/internal/ui/filepicker.go b/cmd/slackdump/internal/ui/filepicker.go index 3a94df76..492a43df 100644 --- a/cmd/slackdump/internal/ui/filepicker.go +++ b/cmd/slackdump/internal/ui/filepicker.go @@ -21,7 +21,7 @@ func NewFilePicker(prompt string, homedir string, allowedExt ...string) FileSyst fp := filepicker.New() fp.AllowedTypes = allowedExt fp.CurrentDirectory = homedir - fp.Styles.Cursor = HuhTheme.Focused.SelectedOption + fp.Styles.Cursor = HuhTheme().Focused.SelectedOption return FileSystemModel{ filepicker: fp, diff --git a/cmd/slackdump/internal/ui/filesystem.go b/cmd/slackdump/internal/ui/filesystem.go index 4aaec15c..f7bcfe71 100644 --- a/cmd/slackdump/internal/ui/filesystem.go +++ b/cmd/slackdump/internal/ui/filesystem.go @@ -31,7 +31,7 @@ func FileSelector(msg, descr string, opt ...Option) (string, error) { var resp struct { Filename string } - q := huh.NewForm(huh.NewGroup(fieldFileInput(&resp.Filename, msg, descr, *opts))).WithTheme(HuhTheme) + q := huh.NewForm(huh.NewGroup(fieldFileInput(&resp.Filename, msg, descr, *opts))).WithTheme(HuhTheme()) for { if err := q.Run(); err != nil { diff --git a/cmd/slackdump/internal/ui/input.go b/cmd/slackdump/internal/ui/input.go index 29f9ad34..fce14d72 100644 --- a/cmd/slackdump/internal/ui/input.go +++ b/cmd/slackdump/internal/ui/input.go @@ -14,7 +14,7 @@ func Input(msg, help string, validateFn func(s string) error) (string, error) { Title(msg). Description(help). Validate(validateFn). - Value(&resp))).WithTheme(HuhTheme). + Value(&resp))).WithTheme(HuhTheme()). Run(); err != nil { return "", err } diff --git a/cmd/slackdump/internal/ui/keymap.go b/cmd/slackdump/internal/ui/keymap.go new file mode 100644 index 00000000..56df7fb8 --- /dev/null +++ b/cmd/slackdump/internal/ui/keymap.go @@ -0,0 +1,13 @@ +package ui + +import ( + "github.com/charmbracelet/bubbles/key" + "github.com/charmbracelet/huh" +) + +var DefaultHuhKeymap = huh.NewDefaultKeyMap() + +func init() { + // redefinition of some of the default keys. + DefaultHuhKeymap.Quit = key.NewBinding(key.WithKeys("ctrl+c", "esc"), key.WithHelp("esc", "quit")) +} diff --git a/cmd/slackdump/internal/ui/theme.go b/cmd/slackdump/internal/ui/theme.go index 0999b70c..a82c533c 100644 --- a/cmd/slackdump/internal/ui/theme.go +++ b/cmd/slackdump/internal/ui/theme.go @@ -6,7 +6,8 @@ import ( "github.com/charmbracelet/lipgloss" ) -var HuhTheme = ThemeBase16Ext() // Theme is the default Wizard theme. +// HuhTheme is the default Wizard theme. +var HuhTheme = ThemeBase16Ext type Theme struct { Focused ControlStyle @@ -127,7 +128,7 @@ func ThemeBase16Ext() *huh.Theme { t.Focused.Title = t.Focused.Title.Foreground(cyan) t.Focused.NoteTitle = t.Focused.NoteTitle.Foreground(cyan) t.Focused.Directory = t.Focused.Directory.Foreground(cyan) - t.Focused.Description = t.Focused.Description.Foreground(gray) + t.Focused.Description = t.Focused.Description.Foreground(white) t.Focused.ErrorIndicator = t.Focused.ErrorIndicator.Foreground(ltred) t.Focused.ErrorMessage = t.Focused.ErrorMessage.Foreground(ltred) t.Focused.SelectSelector = t.Focused.SelectSelector.Foreground(yellow) diff --git a/cmd/slackdump/internal/ui/updaters/picklist.go b/cmd/slackdump/internal/ui/updaters/picklist.go index 30351bac..69f3be37 100644 --- a/cmd/slackdump/internal/ui/updaters/picklist.go +++ b/cmd/slackdump/internal/ui/updaters/picklist.go @@ -22,7 +22,7 @@ func NewPicklist[T comparable](v *T, s *huh.Select[T]) *Model[T] { m := &Model[T]{ s: s.Value(v). Description("Select an option"). - WithTheme(ui.HuhTheme). + WithTheme(ui.HuhTheme()). WithKeyMap(huh.NewDefaultKeyMap()), help: help.New(), diff --git a/cmd/slackdump/internal/wizard/model.go b/cmd/slackdump/internal/wizard/model.go index 834e5a0a..668e6c51 100644 --- a/cmd/slackdump/internal/wizard/model.go +++ b/cmd/slackdump/internal/wizard/model.go @@ -35,7 +35,7 @@ func newModel(m *menu) model { Description("Slack workspace: " + bootstrap.CurrentWsp()). Options(options...), ), - ).WithTheme(ui.HuhTheme), + ).WithTheme(ui.HuhTheme()), } } diff --git a/cmd/slackdump/internal/workspace/wiz_select.go b/cmd/slackdump/internal/workspace/wiz_select.go index a3f948ee..53e519f5 100644 --- a/cmd/slackdump/internal/workspace/wiz_select.go +++ b/cmd/slackdump/internal/workspace/wiz_select.go @@ -134,5 +134,5 @@ func (m selectModel) View() string { if m.finished { return "" // don't render the table if we've selected a workspace } - return m.style.FocusedBorder.Render((m.table.View()) + "\n\n" + ui.HuhTheme.Help.Ellipsis.Render("Select the workspace with arrow keys, press [Enter] to confirm, [Esc] to cancel.")) + return m.style.FocusedBorder.Render((m.table.View()) + "\n\n" + ui.HuhTheme().Help.Ellipsis.Render("Select the workspace with arrow keys, press [Enter] to confirm, [Esc] to cancel.")) } diff --git a/cmd/slackdump/internal/workspace/workspaceui/dialogs.go b/cmd/slackdump/internal/workspace/workspaceui/dialogs.go index 85f60aa6..aaff0403 100644 --- a/cmd/slackdump/internal/workspace/workspaceui/dialogs.go +++ b/cmd/slackdump/internal/workspace/workspaceui/dialogs.go @@ -18,7 +18,7 @@ func askRetry(ctx context.Context, name string, err error) (retry bool) { huh.NewConfirm().Title("Error Creating Workspace"). Description(msg). Value(&retry).Affirmative("Retry").Negative("Cancel"), - )).WithTheme(ui.HuhTheme).RunWithContext(ctx); err != nil { + )).WithTheme(ui.HuhTheme()).RunWithContext(ctx); err != nil { return false } return retry @@ -30,5 +30,5 @@ func success(ctx context.Context, workspace string) error { Description(fmt.Sprintf("Workspace %q was added and selected.\n\n", workspace)). Next(true). NextLabel("Exit"), - )).WithTheme(ui.HuhTheme).RunWithContext(ctx) + )).WithTheme(ui.HuhTheme()).RunWithContext(ctx) } diff --git a/cmd/slackdump/internal/workspace/workspaceui/ezlogin3000.go b/cmd/slackdump/internal/workspace/workspaceui/ezlogin3000.go new file mode 100644 index 00000000..cee58ba0 --- /dev/null +++ b/cmd/slackdump/internal/workspace/workspaceui/ezlogin3000.go @@ -0,0 +1,76 @@ +package workspaceui + +import ( + "context" + "errors" + + "github.com/rusq/slackdump/v3/auth" + + "github.com/rusq/slackdump/v3/auth/browser" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui" + + "github.com/charmbracelet/huh" +) + +func ezLogin3000(ctx context.Context, mgr manager) error { + var ( + legacy bool + ) + form := huh.NewForm(huh.NewGroup( + huh.NewConfirm(). + Title("Use legacy EZ-Login?"). + Description("Do you want to use the legacy login?"). + Value(&legacy), + )).WithTheme(ui.HuhTheme()).WithKeyMap(ui.DefaultHuhKeymap) + if err := form.RunWithContext(ctx); err != nil { + if errors.Is(err, huh.ErrUserAborted) { + return nil + } + return err + } + if legacy { + return playwrightLogin(ctx, mgr) + } + return rodLogin(ctx, mgr) + +} + +func playwrightLogin(ctx context.Context, mgr manager) error { + var brws = browser.Bchromium + formBrowser := huh.NewForm(huh.NewGroup( + huh.NewSelect[browser.Browser](). + Options( + huh.NewOption("Chromium", browser.Bchromium), + huh.NewOption("Firefox", browser.Bfirefox), + ). + Value(&brws), + )).WithTheme(ui.HuhTheme()).WithKeyMap(ui.DefaultHuhKeymap) + if err := formBrowser.RunWithContext(ctx); err != nil { + if errors.Is(err, huh.ErrUserAborted) { + return nil + } + return err + } + prov, err := auth.NewBrowserAuth(ctx, auth.BrowserWithBrowser(brws)) + if err != nil { + return err + } + + name, err := createAndSelect(ctx, mgr, prov) + if err != nil { + return err + } + return success(ctx, name) +} + +func rodLogin(ctx context.Context, mgr manager) error { + prov, err := auth.NewRODAuth(ctx) + if err != nil { + return err + } + name, err := createAndSelect(ctx, mgr, prov) + if err != nil { + return err + } + return success(ctx, name) +} diff --git a/cmd/slackdump/internal/workspace/workspaceui/tokencookie.go b/cmd/slackdump/internal/workspace/workspaceui/tokencookie.go index c3dbe9da..f3df4579 100644 --- a/cmd/slackdump/internal/workspace/workspaceui/tokencookie.go +++ b/cmd/slackdump/internal/workspace/workspaceui/tokencookie.go @@ -18,6 +18,7 @@ func prgTokenCookie(ctx context.Context, m manager) error { workspace string confirmed bool ) + for !confirmed { f := huh.NewForm(huh.NewGroup( huh.NewInput().Title("Token"). @@ -30,11 +31,11 @@ func prgTokenCookie(ctx context.Context, m manager) error { Placeholder("xoxd-..."). Value(&cookie), huh.NewConfirm().Title("Confirm creation of workspace?"). - Description("Once confirmed this will create a new workspace with the provided token and cookie"). + Description("Once confirmed this will check the credentials for validity, detect the workspace \nand create a new workspace with the provided token and cookie"). Value(&confirmed). Validate(makeValidator(ctx, &token, &cookie, auth.NewValueAuth)), - )).WithTheme(ui.HuhTheme) - if err := f.Run(); err != nil { + )).WithTheme(ui.HuhTheme()).WithKeyMap(ui.DefaultHuhKeymap) + if err := f.RunWithContext(ctx); err != nil { return err } if !confirmed { @@ -106,7 +107,7 @@ func prgTokenCookieFile(ctx context.Context, m manager) error { Description("Once confirmed this will create a new workspace with the provided token and cookie"). Value(&confirmed). Validate(makeValidator(ctx, &token, &cookiefile, auth.NewCookieFileAuth)), - )).WithTheme(ui.HuhTheme) + )).WithTheme(ui.HuhTheme()).WithKeyMap(ui.DefaultHuhKeymap) if err := f.Run(); err != nil { return err } diff --git a/cmd/slackdump/internal/workspace/workspaceui/workspaceui.go b/cmd/slackdump/internal/workspace/workspaceui/workspaceui.go index db91fe05..40fd068f 100644 --- a/cmd/slackdump/internal/workspace/workspaceui/workspaceui.go +++ b/cmd/slackdump/internal/workspace/workspaceui/workspaceui.go @@ -58,6 +58,14 @@ func WorkspaceNew(ctx context.Context, _ *base.Command, _ []string) error { }, } + // new workspace methods + var methods = map[string]func(context.Context, manager) error{ + actLogin: ezLogin3000, + actToken: prgTokenCookie, + actTokenFile: prgTokenCookieFile, + actSecrets: fileWithSecrets, + } + LOOP: for { m := menu.New("New Workspace", items, true) @@ -67,16 +75,14 @@ LOOP: if m.Cancelled { break LOOP } - var err error - switch m.Selected.ID { - case actToken: - err = prgTokenCookie(ctx, mgr) - case actTokenFile: - err = prgTokenCookieFile(ctx, mgr) - case actExit: + if m.Selected.ID == actExit { break LOOP } - if err != nil { + fn, ok := methods[m.Selected.ID] + if !ok { + return errors.New("internal error: unhandled login option") + } + if err := fn(ctx, mgr); err != nil { if errors.Is(err, huh.ErrUserAborted) { continue } diff --git a/cmd/slackdump/main.go b/cmd/slackdump/main.go index f8875879..358c0692 100644 --- a/cmd/slackdump/main.go +++ b/cmd/slackdump/main.go @@ -304,7 +304,7 @@ func whatDo() (choice, error) { huh.NewOption(string(choiceHelp), choiceHelp), huh.NewOption(string(choiceWizard), choiceWizard), huh.NewOption(string(choiceExit), choiceExit), - ).Value(&ans))).WithTheme(ui.HuhTheme).Run() + ).Value(&ans))).WithTheme(ui.HuhTheme()).Run() return ans, err } From 3f50dfcab27e299334e814e9f2989e63c85cc8e2 Mon Sep 17 00:00:00 2001 From: Rustam Gilyazov <16064414+rusq@users.noreply.github.com> Date: Thu, 14 Nov 2024 09:31:52 +1000 Subject: [PATCH 12/12] dropped into exclusions --- .../workspace/workspaceui/filesecrets.go | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 cmd/slackdump/internal/workspace/workspaceui/filesecrets.go diff --git a/cmd/slackdump/internal/workspace/workspaceui/filesecrets.go b/cmd/slackdump/internal/workspace/workspaceui/filesecrets.go new file mode 100644 index 00000000..401e97f2 --- /dev/null +++ b/cmd/slackdump/internal/workspace/workspaceui/filesecrets.go @@ -0,0 +1,84 @@ +package workspaceui + +import ( + "context" + "errors" + "os" + "strings" + + "github.com/charmbracelet/huh" + "github.com/joho/godotenv" + + "github.com/rusq/slackdump/v3/auth" + "github.com/rusq/slackdump/v3/cmd/slackdump/internal/ui" + "github.com/rusq/slackdump/v3/internal/structures" +) + +func fileWithSecrets(ctx context.Context, mgr manager) error { + var filename string + + form := huh.NewForm(huh.NewGroup( + huh.NewFilePicker(). + Title("Choose a file with secrets"). + Description("The one with SLACK_TOKEN and SLACK_COOKIE environment variables"). + ShowHidden(true). + ShowSize(true). + ShowPermissions(true). + Value(&filename). + Validate(validateSecrets), + )).WithTheme(ui.HuhTheme()).WithHeight(10) + if err := form.RunWithContext(ctx); err != nil { + if errors.Is(err, huh.ErrUserAborted) { + return nil + } + } + tok, cookie, err := parseSecretsTxt(filename) + if err != nil { + return err + } + prov, err := auth.NewValueAuth(tok, cookie) + if err != nil { + return err + } + wsp, err := createAndSelect(ctx, mgr, prov) + if err != nil { + return err + } + + return success(ctx, wsp) +} + +func validateSecrets(filename string) error { + _, _, err := parseSecretsTxt(filename) + return err +} + +func parseSecretsTxt(filename string) (string, string, error) { + f, err := os.Open(filename) + if err != nil { + return "", "", err + } + defer f.Close() + secrets, err := godotenv.Parse(f) + if err != nil { + return "", "", errors.New("not a secrets file") + } + token, ok := secrets["SLACK_TOKEN"] + if !ok { + return "", "", errors.New("no SLACK_TOKEN found") + } + if err := structures.ValidateToken(token); err != nil { + return "", "", err + } + if !strings.HasPrefix(token, "xoxc-") { + return token, "", nil + } + cook, ok := secrets["SLACK_COOKIE"] + if !ok { + return "", "", errors.New("no SLACK_COOKIE found") + } + if !strings.HasPrefix(cook, "xoxd-") { + return "", "", errors.New("invalid cookie") + } + return token, cook, nil +}