From 4bc58f56848a964f49fed0421534d503936aadb4 Mon Sep 17 00:00:00 2001 From: Marco Ceppi Date: Mon, 27 Mar 2023 23:20:16 -0400 Subject: [PATCH 1/3] feat(docs): add project documentation --- docs/assets/logo.png | Bin 0 -> 140621 bytes docs/contributing.md | 129 ++++++++ docs/developers.md | 0 docs/getting-started.md | 0 docs/index.md | 22 ++ docs/reference.md | 3 + mkdocs.yml | 73 +++++ poetry.lock | 664 ++++++++++++++++++++++++++++++++++++++- pyproject.toml | 4 + yafti/plugin/__init__.py | 0 yafti/plugin/run.py | 24 +- 11 files changed, 901 insertions(+), 18 deletions(-) create mode 100644 docs/assets/logo.png create mode 100644 docs/contributing.md create mode 100644 docs/developers.md create mode 100644 docs/getting-started.md create mode 100644 docs/index.md create mode 100644 docs/reference.md create mode 100644 mkdocs.yml create mode 100644 yafti/plugin/__init__.py diff --git a/docs/assets/logo.png b/docs/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3e28ee4935978b10d44ec0c004020952368f6bb8 GIT binary patch literal 140621 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%0A%PK`Rk_;VL$9XYJ) zjj88>V^W*Az-#QV%?6Dwe3FI6`(d%oZ0kN{QAT2FTv0Y^l{dO2`7!bgBWnf9y6!>O zp7qG}b1Lk6_BHh{a`pxej#tBo*L6&7H}CX1K9it6ra2OTxo6 zHQH;ibS`YY*l>g9)(XN0LO=0mD1I`g6$=p+0)N2lA(O{q`KBJj&Tn7h?F>#T^NFVZ z7Ef`=@|y%qcf6^(pf{1G0uvJJAyrYtGo>x{qj{&21(q6wbDNGdb@b4974~5XZX&5d zj1jS76_5n>3>q`$Yj3Q{Fb#s1)5Du66f4*3LZxjXWhsqWPw z4D5yZsoYq38#2EKQM^~wSF|%sRx%F0gsN*qXCXi&LMiBKr|ki?5g=t8b*prS;o9*ONvy47+AYF z*e9!fzuP)xjnPs86xT_3*-a%^$weZwo5*?4xz#aDvHEOxI<*hgsNXO}L^c!Bb0nb+ z`MY{R=)U_efLSyc4L9DWd-|c_45IPUvL@Fv+1#aQMkA&38uHsp@?(HcDToD{(#rG~ z``;F8#cU8b3X;fn*-DL=?LI-~{Cw}x+(lx=IU)^SzqQqh0;lxc?P=<4+zYhU+z#*pmO-93v&C3*zntbulU0K=pg6$?CKhlWSp#n>AC=1UpbdqKW6 zhh$SlvkZ~%ltwX`)vwy%eufyqL26LW1IHcV5` zW-E`ts{T7~S1aWcq9QUbV*SlVFVxE4YQtQdkw*eb&Ow<9G-sj6Npq92%Hqfs8xI6U{O9D}PKZL~FCn6&O-g{+aVJ$ulz0$*+wWtzbUJc)}_Nm~Br$jY2 zHlAog)Jip^#eB;ofY5D7P9rU7o!}}S)|W^jcC^W_wDI~p_lN0i`k#zIQ<-qZ=U;Ij zV$^X4b8#~GD{c(4!(W$I7|Fa>$D5gKoD3e$5O0vC=T~Odc`2HIGdQpgDZkf0`_0pG z#^TDDRczEsxA)R_(3Bs}s(DyvuK1Tr5JgRT?|qAVKhw+Mb9uNz4`1EwDDq<8to1 zo%4kV2xIWIY`R=rCnpl-gTT0AtdBFde;W%ML1wcFNXB{TTNTzU6z8zbtdlfZdVrAj z1(-5C8hR+Y%N{}HD_VCAR6|2NWG)hnbo7`A&ZRgdZE|orFBi!&8LI9OiaIM_Iav0h z9365ugyLOgm|InDZ)3l$$Ak=gN(s_;9yP^FFN|4;u_25bzFEe!k9)N7gv=$x+%(@o zk(^f_`7}1jOrg3X9X!8q(5kx(sFpQ<2*cFhE|!5|7@&&5tA4;i|8>7M{V+YZ{9hWt z)er%_es z1S|LS8_+dyHcsrB>Zxkn1CDytOEqLR6Oh)fI|lm>aw5B|X?Q`;ia)1owlot@8vNLB zPAZOCBe9gRLhM#g882cqeL*td|>%b|SA?VnN z@1M4Uiz>3;=W$#N!;F}wLS|6ycE^)X8eJ>?6)Pv6Go_o}jcd~ak}Z*oua_y(GOv1P zT3)#gf1zm$c~jY~o~seQiJu~nqR7E)r~QDK{?#)~w!4#x*U6beW#gS(+vv*Jk4pp* zH3ick0v;cV)b%_gwF-@i;(Hm_bsA`BrcQ2W1W^guy_RX~J9s6n)3iI3jgD-A5NiC;Jx{u!ln1iu-6 z7O4-XvoIbD{;bbDDV})rp4-O_f=4BEiiGFeZ+HaEYzoy28rcgUhR5jvag98VJGx|>$1 zoRMR{kOE&%LcqaO+yNPbT1M<2xDq@Ef~4Y)=Hj2~c6L1m&xde(RhK&Lr)sbD*Yf%Ya;#<Tx6V2}~w_mRhl>cpXj9ZvgUHNpvBW z8klnQcDicP7)d>GPm^pg9H&8~4;t#i6^10oH}Q9EyJSp904_)GUq0v|VGNHpSEx40 zxa;^$HG6%!HO=K7YSW}~x9!aRBOE`n%o6-&dH!24*Y8@{1hjlm8fIxCTi^PXjvi3c zW;8|j60fgL@=Dh6lOi#ip(Fy5B87zT$H6{Lzn)}gx9LK*BzIGPTr24w^#iXyJB=XU zkO(4dYQ^b;d#>OSm zj~xs#g^0hkS!tPhpK*E??|1p}&Rm=Go!ty%jaenONqzCeHJdGfMeAV3WwJ(L^~Tja zpqA;u0@Lc;IPr)x#`n#~ip*Uks}PiZp?Ep$jMl!VaP#xbF$R7;t4_(@dXb*?lv$-j zirrHXd=)%}-_}E-%#;WX3Q;F`asySS^1Z~=*nD)XOmux22BI59TRAX@F>J(@ee;}O z`6YxMurVnuR8?S0nUrJV;YZ56gd(Iv+?X9#IX zMRF1y#s=yHB38;%({Jzb#W&hvlESj#K=c6YU_k{?j%xgQR3Hyw7v9#+%eFV&7;QUD zx7QB&1>UuZS>-;ie}~`9?2i!%%w=fu0T?45%Q0^5+pJZLn(ps(BTez+#~RQ&gC96> zGI@a%**>^uQ&*e!q9GQ$obm4LtbE>%ATG_AmVJogiF%ulK~q?funNb&JwQFXP~4%9 zhEy9=i%w~&DkJuJxrz!uu;@ARHMNRxT9}mUj7X?aQ6|#fFFVO=nap9nF9i&@?m6JW z>;f5SRD5wmB;179`HOZ(3ksu+%X)40t~aquJ`Ss~A`l(QJqEJEe&?fUZW5*(Tbe-C zp5{8bIm|%SVR*GE*}5J&g37ety3YC*Qh+pqahd|vP?6w0sB{s9S#j@A1QHSsUE|Mn z0!Y-a{6T2M=W!_l!gB`f@Ra%B+2_kriPEd%A9z-6M4_=F(%I2Kub8!KHLeFH%z-xY zd0vZ?Gx5_nwBD3nn^U-fJRKyVaO!rc+!v2u(BD-<%xSOJ4(OjZq>4>I*5D-)i_Zp+ z>ooY~c;bc<|N1ZUl}1VmxHONvbKfGXUF#}ofZpOr6d01_>@hUz`j)E- z0DJW^%2OB42~>L)?Vh8?Kbj$qNm$u3y#<#B(YEl6{i&Yvo=Din;g(@6$LoW|%&V>I zm6PhtRqM(4yYbZ+FSWUUP9yg$a@qL|A3%&0M#2^SZ60YbW^Q-4rq^*}jp>u3D(LX> z4V@0aOt>N8x|p~!v26@Kl(VrKnMuzfisc_i@~@^>3Zyi`H%XehAMGjyT41rs3cEF4 z7HLSysQHe)Gdh`1MJzcHA#77KGyXNu1%H>OIoU6e!98FD0>Uz|<6{4Lr?bKj3}+q= zk-kvlZ%B?s!eof=w09ftykS)n!Q-%<YWub(gR_v_s7~df+yf@f&Ppljw&u2nFb(5I%EIhaBeAm?~^#W6O_FP;E>pV>oQd%b)dq9zYf~55C}4hBzO1EV^2bi9o28Q3Y;e#Chiw!exJQQ(6k%D;3_q8P?8ne9vUQ)^{H61q(YDUc5xR^oi{3%AXUk;r=I|o3ePqG1^zTVE zr}zUL!qf>+{j{rYez3)9r&XKIgPwChe+0>R(9WUjYR)_0oi(0B_MM=?r+Ic^RCPsk zvkXkqLTR}cs!i1HG}I9$=rD>3FinZ~^%F&9)}_x>&1Y1wH>w-*T}i0EXo(DI#tnry03-yg{vF zBG&*Hp@~7ZuN;#2oTv{Pv+wRghD#2N>fbW}5DEtoR55!PqlPCQ`|mpE|4g5M8*?bn zG>X6cRF9r5CW+4Yo600{xbYi$88fK5>uhdVwmSiU>8CwK zJ)iFS+gO}LK#b3LcPy>zoB1mN1^%zjw*AJu$kQGz{;~!^eU-HuffzDRHHBH8;~&pP zxQW5~Ux{;{8^u_$zs{)=8J^_+i^z_u&;RlnS~xIFNpjjc9!`j=ZtsftwP}xHq4qf} zwAGM%BV@^c=7^{q7awKz%MR`A-~JPOw+9uphVpC*Jx%1k)5(P|Q+KF2#H$=_A&6YAe?WZAIs=B$kl z92EY0LgW9=hg2qTrWeAK8XPOvcl{nI`YV+6z0%Z#$9Y&mp?~Ywu{TFUOAx~N5r#P1 z)0?h_3LZ%=bnAsble$R=>VF2EuHI`mwiyYTg32@b2#K)V7(J!l6NcgN;dcs8RbPk3 zgCDc+I1L78Hb+Y}`e;UmaS->A5Fx1PMM~s6WNCDORt4{)L}z~!)xX4uhW4-SK}!Q3 z&yO${pwsnL)AwwR!)ZiWIuxlA5mZc}LAeyB{aY)BI-{lN;P8M(K`umiP^jwVKq+#%+P`t`21pzZi zhKr&qGne-h@09kp8RKOhd7DXy{ps_1V*a;LVC_E(pMLoek;s6KT z5NOYKJMAs$9xoxY@h&wR~KtZ-_E*X!R(Mm&~LUzC_Rwbgi3RHcD3LZ%@+M@;5m=|bzW zsy!=V$|=mq;s1F0%DAY$?`s8y8tLv51O|qZ79^#+JEU`Hq`N^n1QZa-p=)Rux={&* zp<7Bo1VrI~`F@_?^Nv@;J@=lo&)#dVwRY@+^^>R%oc(a2&=g%4)i<&8-ak9D3j%da z>z`EHr0RA7l_J`IJFcSW1qjT%tpQTX9D*ETrg@uy`lC0P$~8Eq@u2kqP+vFP(3jcp zO`o?uqCl{)pBbb@M{S6$Pgf2^a3xTAe(e{D55}t&=S&gDXg;w0hGK+Z*8!y!n}`IN z*IPTJSTnH-E1)!ym~|{LCX{+QF%^N?$i^KVUMOb$tl#6}%Gt<0eZ1pqK8RC$Yi6&c(R@yHQd-;lBlX>FW7mDSLEt4`r| zE>;;4(}`YOeOoHm7tG2r42ulLQ|W8`#_xhycsjyqg9XHTyC|+W$pdB^)^tN(hwv~^ zto3ip@^*F4j(iUEd!bn>jzw}>Pr~wHFz4jj)crJ%hI6r#*mVtV9WB{RdkJCZ6JuES za{D`A^l|QgZ|Vke{1_|+#lHZlq=P7)OD1o-lT)!~3HaWDh`Q@wHsSKBF*mqQk$ zV!z%ZDBNMz=}^Eq?%o^}57DACq*mB&=v26_DwmbSZA zOfbGlUx|N?48ksLgoW&8bd+t~8K9Ho}pzx_h^9U<8FqmGmHPM+1en~|X zZ)U}R5M~;>#`%mNz0ey16%6Cu*vI6BFjINgGo`ch)Z!{E$9mpZ&*vsvSIU^$2(P?L z57^u(J0X7Wkbd8H0=)M(O((6avJ+M$HdY6F6qMFSP9w7K2F)Y6KcH zVK}k~++`p6vj!rsdR6V*O*~boKbiNJ^1i9EHUK(>zkmf3eT9nOF*Rt>B zYu9InAoyy$LuRl1AYvz1rDUln}xXCKrh|d@{)dQbaUEO=L-Wu7VJh} z9zipL_OF(3kLU}1D|>RRYn+HCseC;Df6?=ecBQOUrr7UqU!)Mk+Kzk%nbkKs*}(5- z(tDi$pnb-L z_7t30j+8yHgP`v`&7yI3xutEsaU_($iXOrt$K&zf>DGTs+iYav^nVkJtjUK$!TuVjV~tPpLZQ58bZ8byta%`2Wp@b{NM6gcjO8>A*M zxK%EMzr6dhQv5RWYrU_$mNwqQeWgUTj+Ck2UrJv|8y}Lflk++~(3}X+q>lTNSCNCo znE(OcudH<`UO{@vb!j;OTge_gm(h`-qqxo*!kUimT4;LJobcv(#?QyogIPn%vUrYd z81vrJTBOnc!2nvcIGs(5<7iCAc(qG4bO_)rzG#ILy3GT?cQ{YMh4J(|3ZPbRd=7E; zuxzS{z_-=FV1~*pef;$k4-jAi*Q%1>e<#(pUgK;4%Jf8hPgyo0Ye=y-8&Qfk`q#*~ z{`d_pO!4~WGa;t3^@J?s{*pBznaec1iF`{u3eG$HO^z`v z^L_BwF71}YLu>S%@S7TY7JwxXG#ya@DOj$2gz;bVK+=pj&}E#CFyC%GbHR`jrz&Nnu$;;oZ5M?aIP?7FAqOd*-aGU?Ilw6^n+Kzg(nM zN(3f+{p7L#Dh|E!>5qxSvyO$4*_F+!mcD}t(qWGw@R^>H2^`JZB(*rT^II!P8;1?VwuA6&dP_M`Tg(~2>L)LvAaL;8P>KxNKMV}2$A`zx00j~orLw;En`{FBF{iFZ>qSz)Xx;WW=T2t{@WrS-w~47+T^;J!;Wi29>?xaHgYel+^xVV zTv;^qXix@ww;@I4ReeH>LR%?!VN|u;bCj7@Ci{QsNg5isiJRzRl`yLSYlRWY7&Z^9XIfw$8F6y-eB!1g)T1e(%wnm|uFa~4OZi=PhjRz30Mn8H=n zNsUICyh!JBilwi0;Ei3q&--lqxQz}D7a^_3?dDj-qKbwE<|hF;!JWjG7VUY*xv#z_ z1JrFn{?4CH3|%%+aP}P=ZVbrp$!)pDP4YqWz;4FZU{#qT++r@G+QuaR#g{g^YX3}{ zZrXIoEA7xC$fj?3X~yJm#1(XifTyW{;2&mc8tF8OXATiXBsMriPe>7GCjWA~`%%J0 z0gPD%dz{k6zq-@axp+FS8w+`{(w#Tf(cP%$Hj>?`Cqcdm1y#eA)`t#oWh^~Z?r%nO zM%Tq(TZlG{cnOu93^%SL)}v3Yy&AP8g2WErGybZy+PJ#=mJB!fzk!>CEJbKFNBAD%+ywesQ$na-2&Y4f=pSbLw^AsGp`k z`7H5-qLVIEZxAR5p8R()!H|S?5$sfQ?Usuvd)oYaxSyEmY8VtOHR9A!^iP+_?n0gm zsePGN3tE;9HaRSzk7oEC&t z?n)y52tq5Hb4EC_CwE83Y1EQI-?geLx^+_GKqysEZ)9{Gyo?2v?}#jB#+n8lwjzD9 zIHl?vKXrZW@7?Me?&2IxeM1H)FL1#B)uoxdgOCGgWTi1QZZZS7wsm1!-^yiVrqErM z>mck!6yoGR8E~80nT1#rqE)A=RK-4Lc4ho<^UBWgauQR~R}=AJ9u(zo?#gz3$#_j} z?gk6sK|M#+qI2CnwA(*K>odawA}o7{!$BYf}opB|n|8vXI182`<$QAh%_5+yK2-ITdW z9xW4Rb>+-d*_%S{jpg0c7MQq39sl>&>A%Rn->z(k6>UHXQLyTlZ`2ooUcI4ujt>XO zzz2^vO>`;r5y5qN#{X{lfy(p^w|&McE-KS-U1?ips4>yedFQd%*WcvHQJHy9xy^4f zm64*tX7#7g(ejt5-Z7Deliqn5&_E?C8f$`)2$WFqqoI1$Bz`R!wmv0^wqA1yf)KPZ z{^{n?paHhhzmJ7%G!S;(hixlWE8Evm_K;nsV{n@@E$;+ec{E|C6@|)5T)M3?yjjfh zF>c4kppD{=GSVmQ%u5EqPYA6*odTx6I8nBq0?TM&QrKnD#Z7#lkK1GCAkWN3{xXai zSCtP%FMaROFH?e$f2c0PhlIy5St&LotuC*p?9gqa{iO$&W|zosg5Y_59u^q_E!VNR zVd}})wXsD-C-8ks6?7HriR5cao4X8*f(vrfH4(qa$sz5B$Qgzxdmy>R5y$xZ^la6S zW_V%i7j}Ml+kA-28UgZXBfERg)xGs%ol1kV*^?1u;EL`7B9+O0wp zZ0AX)rB46>gFgtq)3VzUp~7pVc^)lKZGhDPxIx?4*?b0cWtHt$PghRBuP|aFZPX6j zKFdE#$8}YM8>XV(8eEBwBdhU=80#5?HA9-cw^2pb_xWoO? zDdD3de_%d>W`B^Gsac%Tr+|4922Xyk9fYb!76&IP(4DA83qYKl)W2%CZzMd zlF7I2`LxFKwZ_og|8W66rE)2}Pe}lhPsRU|BW7SbDMhy^v=1T?zY?uQ2NrE z1zBB+Xl_?2pQkx{=;ZJhj#odIuEp}pKp$7LhXPi}n@2xRM{NL{Jrc$0Sr2msI@k+1 zTP%Mk+00oZj@>POleQ3;^S1|>%8-*E%nvQ2(?DthN6DVoC}xKn*5U-jLJs?BrgVMU z#8XeHF}{Mh3n=vG8bdiR(EaqReA_v&xZ>{fez1mnJ>I}wM6bn@UC8XDIXOrNjCMq| z?a{qTiUw950=hi$L!h*>SL-u_)mLQZvKQ;(W+-E{D&VNPf$L~LAt&(QBxbYxtKUP^;k2bLEli-kRx& z&Xamk(H|>X&ppbopmJTxrTpgVm{ujh>*+d+Vq6Ooud6E?EnhRHRLcdS46c)b>BC$L zFTXXve`xKpK(fThp`<#Vl&4|#4J8YGhR-gaw7t9M-q}_GFjP@)dPpZ2PJCHB8gXEYfwX{WjE174*%;J0YF&WoQGO*uE9KzPxTW3*I3Wnd+6T)}<&kmPA)#LexT2AK z=VO@O9u`w_fl5UGifuB88l89wiW|q!vX5V71(uN4lx5+FC3A~L)eF85Vs*NF>r*CA zRpO(YclzGUCW`Z~1l`0V3S@h&RcsRC%gZDI&) zLjN5DU93l&WS*uGXnD_3BrKUve2;@tg2PWD$!bj};OWIV?atp4XobVWmc#W(y(T_% z%uYfqU29WbrHT)k8MaM7y{84EaUT0;`&g{M_{kCNdLr&>$^-WCyaq-ZHrU!|4T~`S zK}CloB^G?QC#7hVbPLQsf7Xb`{V@r5AsEZbS&Wc+giT@cgM%u+5TB<;(39oY^DD zi82Fm<#!KrpCdQWi6%fm&+UZXNRxx9+&_zR{oA!j;JV_Dn`O8c_TCp5iVE%7u{CL< z9Wp@*%)wXqzDaPC1J=(C!qQ`w&gm%QcQA*&xzX-0H`;h=${N8(?#6YJE+g)Tt38Mm zt;~ZZl<>lgANmAmm>I|KJnz*l!H+dQ=8L_p*NCe3Ke6`BLPW@$jkUL-k<}6(LiS)VixW%@k?zZVQSSWc-gXIBfT$H9@gTyOj#JPQX~6Oj*5v^ zQe@A}%n(+=xaC-To;$>DzL9$k@J11J>>>ETjR1{;I|Gs`!1IO!M{SSM9ja@ZfJs=r zj_7C($|Gt(^r5#rco9lI3yX_(#`kJttQ82FzDXG{f1Ossj=Nr`q)BS475*h0sPxeD z9!Ym0G2%?RWX3E3lQy8`Vfr6AgrqL+d$iupejnO1lk0Id!p#%quWEO+Tofm!+rhiK zhLX~@^KLT5a`-e+#DGa&*m>@6qk_DL3E&NVd}n}NmaS*Um4)D2J&eWP)U|%NKGr@qI#I=6QNWfqN!;53GlD91#(@RdkU{Y7hSc~-KL;g8L z1+YP~F)n^hCm0lHobqx+Nif`qTSflhDS`eJ=F8XsvEUIzXg^EcSK_0B)zp+eY|%x|<2wX$)_FS2%X;NM_41ffN@=y3jE<7bgJ z(2ib??b*d>x8r($&)(Ub6a0bHRx$=~6AO}0!aoj}Mbys5F*@+thsO{ffGTBcnUt3q~nlVkUDwsU64 z417sgh>GvJlLXv!^JlqW&35G-_&yQ~WYvQ6w*ptRW&Ust-lvrDzdb0WfdUzdmpk z`*45FTwWQF+7>@3d?1N!i3~hAXSi>mE6aCDY)wcn8&Y#orw-hm)o${?_6Dl63+ODm zS4X_Af4^$6n5(`dZP;*G3JBp?wr@>J7Q-=Q*^--?%WgQvy1u=T7&{%I{M`R?tYkCj zJ)<9Na}&^~KDBr!GM6DOc#9gpvwLmL6=^&pF4oDSyC^<@!=!Cf^2hK}|hH zXKxnok4(Sa_^2Umj2AFf6?`!rdza1zBHtgq@gl1iI;G)T5s+5jG2;wcXC`yKWwFh< z{NfNOs`jKaelCHZ&QzuCcIL~c+K+R5{+9wqE+V0Pl2-J59X77)BlsUA5T4I$@m6gQ zHATeu6wLX`Z0&yLz@MQ#BNwy7PjajPNHI!hXc+L82Q;@)^XE2KTuLPH#nCix zh5jwNEUS>K^5+y>laU2LC(R76hP0M$e(@grJLPgNBhQyAQrv zDP4e)oEZD`fF0>Bxh{PAz2u+L!eUotX@!ZxFaz4j|5z z?#)x!8v@~h{;P#=)!x&{!Q;EqHB+$Y8IvgV>qQ$PNE@=ZYsyyB^j+tQ*p>PJDnEcZ z@jS7MuL9FRdlkO=0l2%-59Mm8~4)O$ZL3I2G~ zcZyAv4i@=|DaKz}{r$LOnwEyx!z!69IDE*Amw(k=8A#xSHDA37NH8??wm1?SXExtx zJNo|T=|qTH`7e~obnmkQ1Hre`|Nb>5V6um9`EUkbW9&fPg{>D14Js3i#^IJdpGCd1 zYOiR8>rOUIUJV+t8x3^t7L%eXUVnnfdib#rfSJk1y+r9#KpfUtdv!wiZH(t_0OAZz z3XA@e!|5fD$jt^&?}2GwQYzp|Nbl% z$=u;A%(LRz*UV7QbQ4}BgO@N9f2H<%cEC5F^P<7%X@IMJ*M}4QwdXrC2m0!9@>f%< zBu!%S>5spQm3eDg5}g44U%4^qd(jcZ0})dOx|7g63UIYp6$=VY_`me_ znYY>cfqvRPkD19$Grq;@5;xSlirk9F0I-!+LP@E_z2xEV6N#6s;|ZfOnAIN|D%3qCuY*XHc4sz1Y@QUnMzz-vW}Zb{qz zP_IvJqw{Y`ru82s)rZnhM8RK~Pak9V0pk)K=vGHh<(n^E=^#-<6yU+;V|L3plF8n| zxPxq@5}-|NtOOYe=o~eCPy&>SxQw=N!cNmQCTg zfOCW81Ul1i^W%^;Q(@WHEATb?DI;7rdf}~NIh>QAqNFsFL2BB=vV^}rCAWncSsLv| zH}Kba0D|=3b7TQc(bbXH>M}G(L~~y3(5d0~9>pd?_RI2E zb?FnG5#`zCrLI+97u+3!(ii*5pV$1`J8-$J`!0a?X;`IzMv~5eZ`k88Q}y}Ty-eh? zx!?$)kwU?URy_V2XE&{z&&|Q@PBWY$z#$Q zJO0EFJaQibTFPRir@0jfWwbQY(cKY&7SO2_*9&sx{F#b%HTf2QM=VE`hxC@Qy7RZv4~u)nqFy1>%v|&bmrHV@sp+ZG z5!FdSzTwIuIB;ek@($qq%P`1|NWXZj0XWD-=mEA|-^3nIMVG>C+l^KRI=bKG2Byr9 zWlJv^4P6ByqkV2=&cW7hSmZ#`PdJ?ZsaiDSkGO!*3}ADbf0aDj?uQz$f}OC)8FISg zCrW+oSsfUAjpHOe3>yEyXsVR?jjo8pDEHy!lP88C#Z{Qh%r4G&9t6jVU* z8zq$=`l64o?wjZMIP7q)a?}b0iPQ79&6x^aL*_b0!*%LL^H@Yys`{nmx?&iz)U~+3j+0LtmmAt|e$|Z%b`Eh0$9YI1vjUPzFko|1658-FjRkZLJX4`c2`t z`>XEw+RH;+EK6&S=@Ub;eYcHk|GtUnM!K*Ma9c~u%}h^{C1>^(ka*3!6~|8u24u(_ z;O7vZ2f>yAQ2S5Wm=SYLLj`Ohz;yCro79hRM=0TF&xK=8P<6DY{lTOBFp%#K#h2sH zwWVu|g9VX0B)Ds^fQa|sN7`m9*J51TqmN6HQce2KeXOj~qMT(KZ7?Gy{6jd%EUvLm zU8P?rR2mXeg@QqJUlgbSWszBKTJwW>Tup(N5Ql=mk)I z)B+Z>(%o0VSpmYQ1V=gB8# z*h&`TPbN3UIEdj*W;#J>S@2}Ef64z1&hl^532Y72u1_lyR&^QkZf0FHzl{20FnA-9 z!1nXCj(6&msATz_!FdAcX$ifuV%O)(~G%%?Vv(u=+P?~FW7o9Z% z!0hKly;)M#O@V>c*lt&@HcT5m=LfCv>1!p|u4N_gwXW8c#h|(vtB#83`x^C{8;%*; z;vbXYl?DrsR)Y4Kga7hs!24vvQ+?Lge(8KY^*TT?U7fj0!qfm3wGM!jqvbcj0A^#S zE6192{*nNST5-RpguODFtiIL}2WTyk&UB|wM~4qQB4JEPiUiPW)kjR`O1_j; z--WF^kRJBEPY05J(ElMBK0fAznT%ehs8TlIl#o#PK+X#>xH4}q@xFA+b72{hc48Zn z@k&|3udfmWqV7KSVv+~5y;Bfl0C;QSbO+avUY4%9=dKSpL%{{Kqa%+x2~U8 z2SHuC>JDo-Q+%)!CI%JGeL8|3PRtN1Ie3v6t5*WBW~)iK*&l?%B*t#ZK55k(06rTG zx4ZmLL>VoVc|vyF6E(C9RHIzrR^Gwt2c+Kji@TK&#c2D|*<30I%@Z2Hx^I(Y8=r!_ zJWQ{*Hq~4rKS-2?ipaSDKPYV`I@&D?@Y?CdFDLahK@6bc`=g^LDNeMJa)1LO6Q&zx z3h4XJiJw|n{dUBY2r_aTt8ll-^zh?sz^7zNbRAbt7w3u$xop;y0!!}j#-Ey@DOPhn zon=c%piqvTUGZ*NRQRyIc-wcmRq>bMN7sG^! zl*kK0NAm&0wbwj*`4=(&1UlTQ_$rxQ9t35E?BSaee+jO}b3*}^Db zJ5{K#e}~&1M2$^mW!q_4{G#5e?Ru}syMEBCAPQX*8QhZk^Y{0PwP}X);3FA=%Ovk9 zBQ{$V6DAijHW7@&MfmMx=ptXLLSbakYe9^JK`b@GH(0}x-F^e|aiP`IQ=f7SNSlJ8 zSCJ$PKN$}Ie=P`PFtQ%d2x$Q-kCOKAcvu49`C8}Q4f(M&Qb6jZQ>#7?9=F-# z`i*x3JjFB54?TR-w(hmI4=fyYXlnb2CyyiPHWzofOBpj94mLf{73VUNZaL53AM2uL}2H z$(~7v23mo(om&54F9!>fP=Y-G!Iy=4l zS(YE^5QNyD+T4J*laP->2rDt;kB=Lx82hDoM_9By|D3LUZVuQmSJolj@@;t&II$5B zGl}-T?CcE&roJLMzF0~xK>s!~xNdG#q}d@nSso^3pp(@7G`UTPb1-E}`?u$nd~N!n zDO}sez;vYcd*8Po%;s8ui!q)#&=bqU-o9!>(#h;S+odGj__T>rhHlTbXo~A4K34BD zsrISK2%tRSB-yckh3EqW5HwcqbUMV(xhFULJs8JNr8u4#EWSTrJp8e)@#i}_qJ1NT zy65ZbhON!)cVGmisRy3fheZ3{?K_*bXLU}{**x$xIs-0`aPASpCfr|8->`k%&njsB z$5HfjR60I~hJt9fuWZ##F>E?s_bnx)Z)?qF=%#gsQ@pNxwEl4;Y#?D z%EV7pGBY=sU96rsoaPX6@6=aNjbaprDiS3MBs>78;olz`3{kn~ugROiX~k-XZhd zPBTx;M!e~L&`_YbgC)~rltC>TPwm(r*Df?b?zkN>j%ANF#Z{H?rtUJP8puhgy-01( z>1a^St8ci!q5_{{yn#MlF+^l%|2r8eF-suVy>i4CYcm8lLF!xZy(go#^zqmBORLtg8~=wH2S+9*mOZhRl&@af;au@)ctb_3|^Ekv- zxh+o_CmG#!&+Ap+7WT9S`?cDH`i-C6%AarbidT9TS7g*&qf|La;A;{95D1k^ z`QBv_)dOaFD*^F9!2Hse!hQ1`EXq$?eC+U#Uhax3p)GU|Tc{9!$>U>w+929g&fT=? zpZ!8pv0ruIgB6S2{GzSF^0j32E>S~3CPNIfny>SjNq=)2e7APKE_*WU5LIJwfnE6? z%rzIJV&|fCV!D`J=Wn}VoXWJgqyGUVAeo{qgKYq$FY`8LAVGDu#_emBRj_MPBEbtb zmZMul-DuqS-i$R+>%lJ$aG*YzCBQvEi8mN^PO(BcMWntfHN5_g;dFR zpOXncNx^S*-doW!)D{Fuu;~Xh8nj~c`U&_*!Xjhr?*`0b(DEgvaUKtny5vo?`PZZUQ0y@~6lt(04MJv;s_b3ZB;Lr~D8tVo$^x zOMwbqjZf%=YU1aPC>B-F^SACVi4MdF-XoM`<3ijvPP=n;#W1}h-rZCFRlwuXrk~mgYbEDb3 z)YsB%d9k+2IC~t4(jwyH%qI6Yy?A;Ev>^)orZ@w3m8@|Lx%Rxbx44Vz(`tXeZpVC; zM9c2{CP|`DcbU&OA8j^yQca?iUA09Y6PU-%lcc=g84MfZQxCE0d>n6R>cw;Lf@{)> zFXv&KJ#byP_z5Yw@)-KE0<*?9$!I~eJNmSS8$XWUjAQJ5EUwG(=?!|n+UYy_4$qs# zo2JdlBwT0Xeq;X?c{QU*JM(IVp-H&?EMh#G~ z{@Dg_@7LCpR6u_x*XZxan!o!nxH)bIyc+?S-vP!=yN#x5yZ~ZFM|>KE_otIX z`A;N1)QE~-I0#Xj8oUlR#q3FmkM83(|K3&2?oCwyHN8>)VL!p<0jgO{i{3#44#t}t zqVvxB^}jzotOV)Oz%Pd1q)am7hqrG3T@L3O<$dpc60#a7K01&->1(9(Cza#PASL$a zs+zmNx!$`psZQK!dB8@@<@N4|kipitJNVPs-o#eWv=I#DI6x#{b)0a($lN zPu*L-QS<=wLpWN_9zQOTMm#|bRU;Gjx6M3o4ajXW7(Yg3M6%kdn{=*-|3Li?7NR#Y zQ5;G+iHQ;TYjrZX{zw`ez_H%9bn|@1op3I~rPTAIhrkVUUaVevQ)a@#OUL29ia34p z%%JS|!5OwDuruzJL7ufIZDCn|_Kz@(E;h^}H|ssKru&@cxAtV<^L*;nXyINDW6 z8%t8tqD3F?Vpg(Sdpt+>75v1NmHqI&uRx!lSXL`@KTX7>x2*SVNvSZIYPt9c`?Zf5EV)la3q3}^u@CdMK0!Z*qf@OJi;OMg_}2F=}^6-NRcbEG*640 zsJ4gaAD%@|Az-kJ?EK0-6wQ^NM&`RHGl_?PSNg#xg>Wu6UNo)qPhOf8-#GJ`|*li*`e+I8C!g9zMKlP=r2Cdar&$3dT>9p z+KD;hW4`x}!GpE7E361RHM0UNJ<|9ze|<3BlOG_bF_rT(C2k7eRA08?bc+Z_Vu73VcaOHq7W`K9n3N+?%zkD>;Pi*uD{ z;c>H?SVUe+V|@ohNoZ>uT8fXXTkoGs8tZ8^)Ca;m!8GCtK@*(Q9@tn-{sLHp2V+hp z&Y&gdMpo2RKflGUdmFdaj9?#87qeQr#z4p2(*IJ4H#l`kl3gNrmWYi|yN~+Kwh3PU zyF6V<@}Aqbf8&p$WKbWMn8|WvwtQQCnYzIHq<7T((`8p-jMY)vlErf-PQU&3!C6IK++4tV=sHc3R<#BJ>x@Cl2~vZd>Uc|s}QS0##7y0qmsyr zgMRVTFCT>-o3OiTn4s=iO(=Gm7SubWL z!Xlpmrb-^^fcr0bT)i1@eEFz*O_~|!Y=Vp%%U{KiMxu!HN~@E-5qHej=bs#x5yO`+ z#z~5rdwJ5)p8%5miE2O8}(Vg75c;S&8Bz~>DetXWdR_%4~Sr2V!l{sQ6 zU2^oOa|<##d7q3HDCkC?Z3ir^gM8nOa%bkeDtJlKYk-}nl~XcpbE$u8wEGKToiFy% zeWKNNGWFFG__CoHZ1;7warpA2+EbQi4sn0|a_s(O?%AJ%c2++dxz*^F4;%iJFG_Zh zRi0`|*y$q1I82&~EpbCWj2WW?xMg*mEySz$9zjs}_yI(^#^ula%Y>fOQ%Q-BlIv(| zuIhITC)}vl)U;O3GHX{gv?l`B zRkH*2Kkw#i^N8OVzN-P0Z{`EM#9IQ?^XK!c5h%QmNe+5J)U2PyC>2iTW7_VuC&$t< z{mD9No6*~IB9A`x+gGhX)@nVv-`b;aYMQ16C!%~~k1WJKww(^@tnd$oiLA49+>tc{_pyende}~Ohw3Z8d7C3VOe&e) zKR=(|7M13fQY%7IaS;v8Dg{{nxx@QqT$o`gkw>sV4(Bs;uHS`u-Y2k*rvH_8tsiFF za2kFuqdbV~DH+O$zQjGQL7BR(oPmuW>`DTlmV1`_*`} zv&rTNcc(oh9op-EOBf!AwVvS{-v8|uyOgDt;~GOZy12b(JU7>xbnO`V)ce!j=(Jcg zi!l5oSG7WV-#f#F>Ph@ZJItC$o(p3v4~=8{*8Nxgm7ogg3P2mHPcN=#UdGqcJpf0LYh9uC_QuNeU(+~cqI$F&T?Iv8)@?X7cUL5j$GTt8o3#9et+ z#Itpg$sHdSR5juIX&f(xG=~1wWhFmMr}lcOd!4RSr+9c#R&JN>Myq5!qc7t?aFQvT z+Lz9|u)<@{fKAsdNRh1=#wai{fYDK_jz__j`AVHY#q@OxWAmIZWSQAB3_)Q1eIeJ{XTNbuwW5w zN&otzkOag%ipI z2}*rVJrG&yqAAe(3o+>}V}rffvxpWbdUPNHj7;alKo49O`h?XUV>LK!|Ga8v-ojV1 z!-}%u<3UeEXPB3W>>;DEPjhO4sqbFoMMI*2gNeUNyH7Z`X*945PgBDJ%T4z6u%Dl! zqZg=~=V1LCsy{ljRl0D~h#NL@RYzS}=Ufuo|DBVigCV4~Znx!oLrYaTUuQibT^4~$ zMH9_$m?o0JCrrufzsIQd@PVsH)78C7-^0Sg$>y!Mf9F;WlLwBG)x_oUxa;CX`_);y zB>|EZp7*ZE&NJo=Sip{{AVs!SCLRz1Cc|whZHHTjd8!e0PuW}@+whr>jF3iQ$y@H= z_E)%%^S2j!z7{R<#|cppZE(sJC&Mf*0v2_popHWkd-1zq!{g@9*zY;S2XpbpvH0B}#d7&Rq(g}MO~P7Jw&weWdqMiMaU7gFgrD3GOMLw9 zp8YRRl3NV=gNJb3{rU$$8!w=622d-(E{n^u6}&yp-^gzyG%;G|a^m&cm6@XTPd-LT!#-u-;`SfYmbu?oIUN@1I*237w@B+| z%fiMKjJYG#sM@BB-4{j~zC|r#OJ9iv&?l*@Cjmb>ZHO zXEZTm@vD;0Kk>z?ekH+PH^cq;ptE1Qp+~Y`(uv5-9eWzCZ6ti|J)P?SP z&(b0j!>Xiz((0?2$27@0Vp+avD@<;3Uc z0>w{sWoq8VOEfGc1$I)mg@CaI}}z(`=UAb%O*vrnNs0czhdG$=tb z%d8{!6llXfDy<&eSkTB~3MVjuJr8-bkc_$}udxl=-nJPdEd_Z2WdXXYWT`RE2DE6q zif8{eFC-*V>OthLr(05x{8I!4WL17D}7tRem?)sMC%C*Sbx@`}nJmq)g364F6f}tca^FMiY2Xu32QA<*d(wZ>)VDy6)N7^}3B&r<RMR~D*j5A=;#^OJI!R2N$S)na*R`#oO`MHNms$t-U+4zE5yNZFE{Y@7_SnY&3=qmgJ(07D(=P1hRG82!za;=hBuJ$AhN7ZaIlM^C?6UJg6fB4Hhl;KxRexlZRH1oL05h30y$wcaRmgGsOmaNAC}ff)^P^ZR>$Fo zKTHJOdbJPbp5oRpVtctiOK};=^-oI7i8(}y2{mq~&@bMm;QjRwyiFyK>DVJ_Ky2zM z4h);5C_qOCfE$(lHn>FUP+&x&icG!B*0HeKB;m?jVPc&nl=y?nyzL+)UdS0mgHUMh ztB*-*`qc||npmYnsy~Y}U^ysa)9#bPJNxMid;9laDgiv+kVX(?$WpgBC{)ZFC*q&L z;1LE4Ny#@>4T|4Ge(|hzGYsrhd-^=-%iw=&Tgr@B-k=Xl48x5`6&2;b2|L8i!#9Po zF9-C#7iXivJL6pTnQ!Im!BP4Up`Y3*C?2G9N}$oYMbBDm z=HdnO@4Qd+9(JH7x<=-6HiAu@ZIB4RzuvBLgwlrhVDPO@<5)Gsi z2L*5twb@>EU6ylA;UPr>h-<&$?JQu*U-CSr41Ofq{g)|XAa zQG8V7+w)WDIdpE#5g7YN&-m{#bn>+AP!TTKu7rtVYGw{|rYqd57;?h0ufU^RkvSzk zS5PP)J%No`&JsMuQ5ibWj_ zpKGK1hyVG^7*ebvGkSh`%uAWpx|O;H1DVKbY};tk);w69TK7V9;=L+1)`HlOOU~hB zD`gGQnK6_ri2k-mf{ZqM>s6zjuY_jtyTBnlH>`hVZSiIrLfG!*5z^GIgF+{Y?#<4xNDb=r>kUxWNZrLoSQV(8iunS@2DZF%;ff#`(MA z_Acj=4Hh0=UTqc#z9)=6J$`w==2P3M_3}c|I!<6P5&rY-bK7+e}4iGJV#k0U2Yp4^Rc1m@v$dI%?i(qF2&7IA+~Pa=?jb>tjmv zm0L-bZCh)i=IAj4IcoG}jvk9n>$UuqA_1=0($P<9^2dbg%L>kvcVCVD-X`28PQJCdyznsr06d=!HdoJC&TGpcQ6MiQns}f8JPMN(;KaU2~!+z+V!}kZQDBCH_;b zCm+&`{*gOZSw{_I^5kuV&aI}O-{Kh7cxT{FtTRm7xzbz33Ya(Yo3}F$>Upd$W8rL9 zjhqFpRo&4_CHZ6GhdP0^Pe1xMQ7z!}9W6Rcxf7(=jQ@W;ePvXYPqeq>fkStfq;#hs z-QC^Y4bpY!MoyXDZ`Akrn>(j_ed@5BGz`+i_8S$uHjnVCKN7kkfJATCXL+g*aI z+1H_{tZ-pJ6>7&@?)D!v_A>h2V1a=XBcOld|7YKXE#IcHEtuSRW@rh*?N`d1#}5z1 z&2}~Cuj4kB9K;l9>JvTg!--%st}R~Up~dt;)#BWdFcK`lQ(k6Y z&BZy)j>?hc&{PJ0@1E=HmfIo~8vd@?i+!ZiPyNFk7$=5ikjc`kM{P%AjB?qAU9f8( z(z;23?hzb#`2Bt|6z5Ii8%AJ51(GR=-E)F~@6&=Z<;*Asd@)H}XL9_bhy_h?Xa0JX zL|D>*6pxz~lkODRc2lG-1BnfL%*xFBiSzYxf@Rie!C%wr$G00YlR$6E(%+3bI_-h+ zC%p{MW5o`=#G#GbF)rf>4#U6jf(NRm8e@Bc-%XI!###wdeShDY=nhPc!bta*kOhVl zVdUK|^BXm$_red;?D4u69FO*YZ)*`*5ztyRK>a_Foa)Tdvv~=B8$G~ggC>K6d%c9Y zNEA1I1Qm$9&-Avq`cr^9jFq?72OEgtV%}-oo{pKf27RQ;%+NqW?fxfLJ>tJ7@fJg& zl7;R|jeZ|s=r#((s>u#x2iKdl4`!_hB7J)zGd_(DJMNnK@;;hp>(}*M>5I^_x2{lI zw*WyEt*%A@Oz4YxLHC#<{TzNh&7ZouX8pV8jW}Z+q}zyJBjJOg7lq`SksHE=J z^#pYZo%@+&O$vD(Uo^U1=Ay}n3R%3($Us411;=QMpTezrnABq9)SC+>3wwp%kuOe` zHx4SUH7*JfXb0X5btJ+@G!zOqtl(^cf*-aJF& zp~E)EsGc4)C5&Vc;Cbf(1YzWY%U#>c-=t%K2s&YrkBq*YzF~Kkm@IN+Ne7AH!)A`V zUYSaayc0+n^N!)~a7h`b{)A>^T2M1l_(j#2c%&)(0bwO_y-AFqrWSW=I1toBavluPeogQoT(2kfCnmmN4W$NMU746j^F&=~ojDCYZpf z$*cZd)5#dj-on7Ygvwu+Pb-(^ajq4E(A3mig_RpCNoCN&SYkwHv>95g+rnBUMoWM% z{^gNkt8s1fyfP;Wft}O%$p4i9T4HrYSL+q4dUy&}ZRL%R-bcD6X01~4x`R&)n{tBi z_R2idw3dgd_4Lv&#m1gPn|u-ecJZCh{46edNmJ6N45Hr^8hfDCp!r*qE z7yl4Zr8-=IU^rDix1ha7BZZUoh zV4)`EXJzKcLC>AyASfg&^Vi`z7LH6}L+BmK;zo2T{|@3DHA5I{O+W2(psjkjXVK|* z{E!%S%rNC@CVc?0HYBORT* zz0cc(M|&iWX)fcBBS0vqt4D0Gm1jLnZd7ViXSVDEm{ULWZ1tb$iCQrbN&aVUpC#?p z9x7}n>LCC<92dFwFmny+#bE_!oiRCMUM+y|!?bBwTqz$vhkLzsV&9S$D3=Sj-4Y$b zGeles*}l5EIx8z>tr```>Bod!`}$=fb}#>)ST;^~ggvXRz=zUdt@S{Ve2+{Y+7|VfR5V0cfJN7h ztD`e>nyE=plU-0e!CU{^_46Cm>-nyxA~Ymem?xo#Gf8X2B93f+orgE}g0wB+x6nM} ze`%2($usUIy*$0h&QbnwEV5am9a+Tt6eGaSPd@%LgMlB0X;jls`BegJc9wY9CqK#3 zDk0BWC7lm<)UfeYXR^QV?xeML42pyJ_Uz6R!_p+|YxJ~ywCLSmE|)lCjcAuvR+PoB ztJkCLk{f9#e`aX|Hpdf)VCrv*CeXUiUsG1+uFuGssq|K^l zYLZ%$aqB6!&Cm0Yo6|A<*#KO=2=UUkdlNa-wakvno5B~+H9rS1sr_8bxZiM%tfAj+ z+iH2)bKmqy*Di^N$AlBe+<$!rZY`+wrfN@4MLJ5nQm~D6#XUhyNCb)lbM?*-34cuS zHGzSYD6iWYrDlhALkCoJ%hXKiu@ub0ujzd;0>Fj@Zw94X|G9UG>83|O(sudxF);Zv zom@6g!(Fj}_gT92@#e^V6^WpLSdg%NxwNm4{mTe*?Gqn?ZY2=szsefq7ezxl;chYY zWue&i0y+Zz(kEIxhPuT54*l%EUe^P@>VM7*di+y*q(?~Gw0C#xBiI>P88Q5JPAsBH zL6Ow)hhy{(e(eQ3i84iucW;2KNa$oq@R;`cany&Dt|FD*2o3<~@0wA0$iPMGtmwOt z^}I4~Jbjh|EK}h43{ytTT3~OLy1XzxG!i>SxSFyU?pS?y6HAaB%ZnJvRm$F;zuMSu zz6J<~w)n?bxZ&xnr0|{3n(G9jssqb-Q3hTDsXRFTNUQYvrWnwmufY>qCq#jjng4$l z835%&EAFr+yuEcgd!-YWa;6E8n4NV|-OEWKxw1}5YOYBsV@TzPk|&7d%z6 zAn0pJLpI0B2xxE9jA(!Xf76~TTW@UJ+hXf+@kP_CF4CjdSe#4ZqS9o4UI@O;VNP*k z9m`+)5QgxVfkhG!+;nhrL(}Dp0px?4H03Kk@G%uaZ=3yQhhZ~y)A0-D{m+j_E!fyF zRr$Vn`_NwYV|jDj01jIvn)g#PKm3HVQGk&0MIMPB|8r<}8j9B>tubU%^mcoe6U14b zkJu_|@RLCvHLd156kDsozhtN&P%vip0{P6 z9VQ87IYteITlAFpo@jD!!0Wqo{$ZEC^1)D;0jn|}{(^JW)@l}!HIjX3C#DS&V)g|w zuwrBatW_RhJ>6I6&^=NrRZa6q(L6cBo?6=UT`j;(%J(8&?{8Xg!bxS``2OPcnNE5rHSfv7mWy%%CB4GJtH5hMSZ4L zTBp65uF&cDv&nqz5(C-C=>Ow}*ylE@&#%a0)mFz)J!^sZosM-m(pONh#UT3SaTVd) zhylYE_k!u$;vUtwz3a2eSfvi)c6Y9p{T5H?T$>H~dXaa|$e$hf=KkJTVn*d1rNyiE z@fzTk@Mm=3=wXTCVV#hJn2qmZTOu+3HZxP%t@KC--`32)vDXa`8LzOTvW--VRYTjp zpp3D<7iD?`Q}y9m^R4atUL5_jZFceDUA ztjUvLtyIh5uF60SZNz`~)F9UH#7QDOo%^3WqMav!hC$-StbH-zhEeuusw8f>WqO8} zowZ(Z6N64BsIbSm$IGNuFuEvhpI}cuhx4F2O`jzTNpe?Pa|&e{QsX2I7SEfQitUSymiCEkLOJmk9DIY3?-U1T|{LJ~IH zjlF+gmw6E2#O{M`0~3NN{a<7g^qUlpCk9Pb;qX`p@Q2l0?Mk2}Sle|8$l)Wxv$jN? zJeviA3x4nRHV+?j77Y42v7cNnmcMTqo|b93$`uT`Je&l^G;R(KFR!XjCYmNpd0UxP zOFYsqbhY&O;IfLbzEmZX5QK^PBzkC#L3sKxpN4TIgU5O~QC)!b%nY$2{067s5!mRs zfLm&Xpd3zOaE9|zc)6zI2O#*EZD;0o@-o*+BqTTprZUl-Gf{*qLg?@GZ$e=itsQ2A zz+LtYjU=4ioDoS(r0SP^G+eeMc@UWc^#8m73-u|*l>5c13;-+fEW;H3lM21XWL?{l zb{E|qNIcxg5I#ess*0D0FWG&fQ|}F@Ss8@Q*l8TcV`s}5IozhK+-q;WxMK`8SP_#h z4GWd<(ra8AQXh|+3yyIH0;;fFt<1(ZmF85(FhFxdeDQwSFDz&#xZNRRv)AD>MNt6w=h*x)^`<&}_4bQ_ z6Ji_5ZStt%Smy6fVwOT^BK16&HDHmdcL3UCVwBQH9-i@2IidYiXGphSjENNo(6>F1 z!Ew9rp8R=vq~X0B)ZyX`l(-#+mVvS{HCbd`e#4jJN}jWkX5v+u?x{*EOc+E9a@SCQ zdGqZ&?=w96xve{2bAJ~F2UV^?y>8EA6ByI+p5=TNOR?)={b<7m{vP7Vr*-q%P~j*< z!~Kd3l(FUohXmnfGeRi|7b?YK_1^%g6miMY5g3W3O$zMPK`#qQDgX?AB5EZYKJej3 zV%IigItNFgS!R)*tjm9`Y1ELR>0|JXz}65Wbbq;^XI#V&>;5`mh6XwfAY#MbP9IaG z8>oYEE^D`D+UkrqBq-hO+vW#z_pO!&d+{CL%0~F;|sMTQM=k0 z-Wuogpciz}m8oR|`6}Ak##Dg^1U|}%R2+Yy@0-hT8qCrcz2jEkHbk%1?qd^H_Bpp} ztqVZ);6tU>)1Ju#FKI2)0Lz1fCd3uSR=#!Ws~(whnd-Wx<7(EEkRK{}OetQ!ImD~fXjN8w?ynCzN56}axpqoP9%%) zZ}CCn+I^7;3RQ5K%aY=eg*~5n`}X?M7ebeF01$84H842=}i_=r^lsyt822x!Oc8n#OvJruOoL!mSsgL_hL*1c7`b)dC zV-&D3^#!-Udz5BQ5s@jF#G$F#ym%93_Y4ch{JribZbpP^lto`w1fxmw`NgAo0B)cS z^=TTt`K9ZI(*@wg5PU+EF~SQ-u7;Qc!%vji*GrQ*p6p=p6He5l zPjjY@*Jy#wA;UYHYPMfBwhmIQ-(2q%rhy@q%*sC<=@56?4%xh2^OB!^1F;v>udZJ( zO|9n62PE$Z@qo`9br85^&&CpL_glqZl@HonwG4{XP5EdkEFvo%jtWeQVCaTk}VsngK5Amv0`L>L|N*k%F{x&6d86y z>VQVKWPY0B%!EphJ49tJOr1`mJEFa-SWHF(qNb`iJA&r?|SP`Xi@EEY7fF} z4Llk63UJ%b_7<@zZE`2O6K!4v-!1xuKIJ}VmsaR5u>vwDpzi=LN{AM>PJ4fNAS(`! zxoX5pd@fk-yxhMzYdk-QY_NGXTcC;H1drw6)MOe75yRF?;hfEhy}6X9ZCN`Mu&=*0 zMLSAyf40W@96dPR-$xGbEQ`kPPk*w+ZBJ*DR6Z?jJBx%y%^?ZT>_EjG4?pD#>lu?$ zTY$B0e0OQEyJ+89i^)HZ#+318vkBXlg!EoWj|xep!_79NrvO}n<*X)nKgZKjBmIpU z_Ed0HVn?1*L$TtNArX$qkaNUi2O!V-z0BNnpkxLORV zan*x1n@n;8jDU=45mKB2@v=Y}Z#??qzryfJ{>AjVP(kH@(}Fr9e4o953+sLJx(!-VWRl z8Y3Ok3oX4%dH?M^6!%&YWP8l0^$hLBp%M6>W9XeA%+?m3!A2I>8hNZmPjTnR#taWU z|FUtiYo6Dv>($bBmo)EU^haDGxc>& zJ)sb|`iNKWO;!Cw{qR8dxmnHFay`y=V%US1!D#OQfVD_0oMXgL@FFUU40Sdi&e>Xe zslRWhH!0j)#5g$nddA+6+mfwz=S!VriAd}y?Kd6U$nL?;y4G9E#XOshleQP=aMjZT zX8^#C-Pin`TIBxx04~V}ZckqEgw7T-!jJD{Js3R^>VO4{#!5I0zrGdwc!#&_RYpSb zp2KnNUH8XGCio?GO;_DnN3satc_yI62xer;UVS5~bUyCES%f|^D9Bq*7=sD7o~DJz z&Ozk9%QlqbG8+&r0P-2UIZ-q-;tG-GI8`Iriu{6Z;rf*lgt?vWjc+PKX^htSu37u~ zNx9OmQ?hzX@Pn2C$f)E=NUUg)b?#?Z_f&P}s&)^rYZ~bGeN>&$Bd4K&6!{Mx{#>O5@Ue3(j3e+Odrh zYu}tgX*?1Lc?iLrzUs>^0}i^zN_i}C_=zxUMRoYs>mx6Y2%<3cR^75pT??MjvN17- zSf*0ziilRO+w2)04L>$#!l77PP0cFE6#M(aR_nM*Lu&t#O(=#tUH>lZ*6F=We!kV{ zsVZjOX4kf5|K?Q5A-8DcSe>dU-$3QBs~TOtAF{j6Gt>QZ671n@-l@o+JpiN4Z8t1PY+QU3*@gd z%`fy;?5^o7MYQVb&eHS{Kh9uW2Yoof@+0hHy=5Q<0D*>?i&SVsZXB$?vdJ=1J;Cs| zRrdH_$quin)?&8D;%NgHYG6_B{r!T-2(ruFbRYr&m~Z1P#TRD!^eyaIoh}Z&`UB-1<$?X;Qq6M_(&;qr})GR_1heA9E6_Qg0cm&aONb@GOE! zK$||#OD!g){!KtT_h4nOh0d>59a}O|+YMH4r7?kaH))oJWVi+HcUZ@OMX+MluwDn? z5*z=(>A|s20676m;*xZWuLdvmJiwS@kt}j$&Bo$hA+5ju1~(%>Yd5430Ni=XzCt#d zLAZu@S{oEc0_dA`$@UIC*L1l9mG#%+lt^TRg8OaHM-q1*I-c@LzAj=h(CQ<@e79RC z(m<6TrF>^@mlV4X9R%c;O@it-Nd^g$!y7_L5$;{+N8SV=?RFVsiCm;>*3-TTEq98_t&$rkQzCyVTe!CKz zJbu=OxVX|saPc>YvxNKz{rOmkSW=StRMp2huRR0hcp~b++%~7KFl1I*wt7QtPMi1p z0^vpkQ%FyN0s8xn~U$Mr^{@Fr_kn!$)`X9S%al{(L~dXyBPx3P#jZ|6wy(htK?@9_3TiGe&G zLg~Qb%8=#@jzHw{=lC`~DmY#y@>^Hl42M@sjulKH|d$1UkupGxOGU3FzP$mWW0rBytu} zO+H)e_pt&5Bc>IEI~aI$MprXAI2jn8pJe$1>9gOLG_vg?vUx8IaoZ*$9)gf;g3pe% zD#96K5qQ2oer@QjgO%IHu6<*Vv^c&*Ge=H_u-pb3W~;t`0b!x@hG|q3i7)X;9$wO&86qaSlK~;@Qj8H*ydJer>KZDt-_(@M#+Xf$uw2AJcHZ z*WChqQvbW@p;|320sm+R8>TSfc-j&E{i%uj|) z-O=cyTxOcH?B?ll1$vsf-Rfrx8?)Ada%kJ?ipX?d@5UqCVh%h50hW<9_D{({ec@_- zb66*UD?IzQcbqIvOemQ~Lx*v75bH0D(pVs1B#!R?wTWY3WT6xwz%%0BOXv$tl5GJS z(sAoHq+@1s|1Ne+6Qa|G;@Ou53{lj$8ugI{{9`S1L@GHho{>ve);ZXO{u_=+PnWt*dw^q*r>MI82iiX| zlE=V0UVsa(K~b=HgUIxAtu*W1svk?I3?J$aSDD~{k%Bf07k2fXt8|x4Z+(Wxa)^6q zM^3}=Ax;Q%RVTcb^}7KmWea=J47KC>YD_F{N22k~YyvydtlY6*-Q@h9`$Gn@uB zm=9E926U~CMqt8DRaC$XLy7@fl$|467q@5yX&PIix_Sn7;pd!Fjarj}A!&=TpYa!* zT+Rc|yXk!T=3z$Td}&$sIxqj^y;6h{babY9qkm*!AfS^}y?66`y}?mEuR{O^nTN{d z^j9z}{!YHx_#TF2Ey7JIu?>|GSMl9Jq*(x>Fw7XBrbu8UAV=Vq39vlmIonejt6}7- zZ6*Ux3B#7S+O^aU)vS6(1^>Xo#r#926N&Oi(G^L+b35zr}SCJn^=jqR5L4mFl>9zv`Di06YT?+k@zBB z*m7$@5Nn$^_rS6>S*%VOmf>Ih=9V=tztcpBGTAOHAO0U~dW2^>NFBg2^zKi<6nt2) zw*xf81c0XZP@^D~-!~OVvM*`GB#tDOLTC{RgByE|2D>TfF8jMCYBB^eFbV=Z1fhNx zKS8BR<@VoZvL`KK~mAL-m0L-P`f&;Jq4=Y~@5I)}1blB#kL2Nz2a z$#j4}{@zk@yo>fE^hO#}%VSSSo|V=WVm)T~LfbT8yK9;dPsdfvO_5c@^k(Z0AT-T! zYE@DGZnV5oO46qUgd!;zKjy?3M-)z;SEhe0VDsxdoGuFTG(1xM^|G5&JX&WO5dx4G z&6ymJdtK4pQKT6>ZZ(SbLo4{PFqKobm&Jp z;hQ@YgoxH$f0YHupdB?31YF56Wre^KLEpu$pZI&cZvNff80xT6o4&`{@zkCRF&1}l zW8K6JRPK3~g~4CTuK{{z$`blj$3DwJBuv%EnmpsxS{|m)#gQ!Cag$Ylw|(;9-n*0r zEX?adXfo&<{CC_#d_#nQ_itZl^2y(D1gf?LCgb?FC1EM&B!$cPsT@yS0zp;!>aD|B78!y~64jbtLMK5Waemdos7f zkPJe5Wg}e7fp>Yd()t5g)C+ot_gpGte0_e%*(T&n1(a*X<<)-5cWtqZBf9L&_a->I= z?xe)lz5>%d>;$~$Fn?jS=`4?-Pn~EI=!ac?M;i1A|CktoP*kjuF6NI7Ig4TpceS@` zIU|53+u=m{Lg286`gW!w`ib3*X@FjY7aqlQIFWA`2FnrfE*T@f2J@By*>*&G4ciqR zwtQbXy;ol*>s-c{rNPn7TwJb(dFOxn|C~wS&7w}jh{NHhg z9H{I$?EhQ{n;;DYI&q*lBs4`s&f$Dc=PEMSBnj|udFOm174lQp_|m;i^$;`6 zqCMJvz44LpG!=N2Mo7C9DLfe;bV_Aw9c=a7(MYUT2KjeN+R2kYyxBr#r9Vc{05uwb z06r5sc-`cPjxNnld75zeE|^MIiO!P<>saO4P4Uhz6L1NzRz0E0^y-uNjj>k=+qU_Ibu35QE+9L)0B16pp*QI5xi5555rMjAz!{3yt*>G$XB?<`!9%7ODq9@A5Hu<4%rcmO?jL0 z`V)~T(K5@9b@g^s>_5U4@t>;y?)8){%twpm99U>%B) zP2Md4?eK#Io2rqY)k5GD+7goWbt-Cesa4by%!9~I+j%-EnN0_AchR@N0y^O`*UJb% znWOOa?x{1IM0Oq}i*de}OKy*)CYox4TDw}m8Z}Qu6~AOvSCoOC1p6zg_a+kRFpt2> zynN1(6Atl<5oScVNNFWUEY`}_K31-N8Be3bpnUOTd|4!q@z#Ku&3d3{dJLm z*DnyEIl9{i1S%V(oMPO-AWmfk#ROjkRF+vO zzlsd+WT7q%l>i52qZW5PmT)JfKcI&I**Kjt0oyeu1XXIaS+y0~?{E!b<8!Fq!*`Z1 zPuG7Fv&uPAlH2yDY^hiOTImBZ3&USjZls{QE`+wzhA&<};H-5G%y$ zMyVL4wLvFC-#KIh`V|v6|Tywvzl_{hT&;6OddIs`_ zU>r!|EL?~@<+tZO#3v^CmvYN5)f+kCd(U*!pqqj^fNSdPML4)`RlvXg2w4v%j`6R? z-GJH`IN+wsvzI3=e{Km3itLr~V`lpZn@BK zyj(erXu?-(4L{@5CA)du-`oQzl9XDJXl?@TrxbsYn0$x0sNcI-9jda+mY}(S(I)XK zIrZS3J=dH{fLxiS6&v4$8Y_f#5=I1rX9RTTge#zM3VxH$gq4KfGX}8gUU^hSQ>hw5 z4eDE)-S;^rl!CAYdCS8BP9m)##oxFBRf(0I5x?Q~TNU=|`t{yCNwPYU0ttrM9c{#y zvD~!k_*mdOZ^s^X(jx-|C3$0N1HexCD9w)wgS~+(&!NT0V@EO`L zKuJVFncbp;G{m-%=LKUF8R=G$GTX_(aQLVSjs*S_bRr`b@Shcac|urx8u#U_5f@+7 zS`|B`%J-$!VpG#lHBhzqfiM^Jsv^@&)nsNj;yJYWj$1;F<7`0Kcb324-vZ;_J1Ua5JYSgS{F@zFwk^>0{{HPlGB9}J_uf(i zav_)-p|>jvoW~WI6$@2vpyqQ-ton<)1u(Z>Rp=KX+3G7b z+^^w~fJ(TH93Nq}pE1EYe^Q{wKdd-m{eyg^H9N$W${DFI8A+-TY~OuC^8Mf)M5kNH zy$M*gODvo|M*y4y+uzw>zQZj76iFC`@2AUp=ox0RSlw_;>GBDJ`+$4cme4aGQd|jxoMTZ$2A)C#M z!n&@dlE0tB23~JG75U^Gb7@tfO~n%7YS4Kdj&L`^)gab|M?ahd+chcIR`UjtUDg`D zATlq5hI(*t_$*$Qp2{3BFa79W4yNcVq4--KFup3`8KQuqn@!4mC>PPC=)wa4o;rb? z=~P+QMI}JXK}CF4r2OP%I-d-;YUL5inp5Di%a8wT=-Rik^?u6Tv6*+#qu`GCqr~<#T_s(C(L9`{fWg@m+i`M*{TwxVM3{&FLkkWKHgqq;|%$(5SIyg zLzRENrF1rxwt|xhc%q`n56nXGVc4tM=feVld)X6FL$QP?Gh}#lM z7O{-XycgOt z6CN$4__kB>3ku>X5`X$>0ES!9sq_V2CN2y{aoGrMRQO)Z1@FM(^(In!oCZa=51n~p zU2(Zpeyu@Xy~yg#phKAFZFN#^v5D}K9NKTXId0?b1IIeHUakiqX2X|I+PmIgz` zV(PXGDuk>^PzIg=5^jJFtxYlEKF-PKQ=qATzUeO+ z6Q){gbF^9a8ub+X(7=k!IbmWi6~aMv9wpOH6X>7T`$>iv!>Y;TH2Gf7DC{=O*}5X- zdj-E7&&SRAhUlw3oh=ero_AM z$rO@k9-l?xc{tBlfY8nJsU=o-qu}B~0O*aVh)^;ekOGYS zmjaB`HBtk77&TQ92I}q`A2ZMbvH7!>L|oO)^D>eC$24yfD%{Lfk+NMtr)c9wXjNH} zsvY&w1|;ooc6*JQ+aA-dW?Q1tFf1H1X^q}arE4aO(P5sr$IXu%_(5GuN#*)()@`CK zN5Q+ick+{Dy--C8QKOTGt;`I8bc&*8r<`gCft>LP}yltZKls**~P~dgV^0uIfai=z!T|xdEAHU~V zU6QyGI20ls(5>Tj0bq@WqTY62#;iOsBB6jMt>M;ueB&eoqQ@&DpV2)_yC-mH~L z=1xRljSa^tZS4X-QBik>C*eIVSsj%JkA<$Gz4Iox;S56s&*)epQrbC2H#N^%eL(3j ztJR;LZN%tki_#`ZJF%b}(n5lWoH8L?o|Xl8sijk75k=K8H~~U-4(o~}dI_v%dLjb3 z&EOH6g5r+!i6&wq0AM-s5e%zJ8bySpGik!V-}ZqR8C_!zPKnny_uFi@H)tXe@w^+G z6d*H~&0X&cIsZ*tZlb3|Fh-XU5jm^fryi&M(Pt${$i2sNBo@y&b3;t`>(*}Ea}UiRCjD{YQLqUl{`>r#`nE`iwh_dJ9rgW@ z0`By5wEko~}M>wuF^1hxB}NDMx$|PGs>iPSMmNaQ@nkyswwSE z6tv?3fB!1VKU=K3*>u$E(kXPkd%Kyd(t9!{_IMqtGlB3ngWFa~#B+G93b|-7Y}rde zx4`NY56+%52;ClfogDAj!pdwnP2s@4U=E&Z`~W^$k9eI1@h&TisoGu5T&FwkYY}V# z=4>pDPx$LUVK0k){)3-)h2$s1`j&kDbES!zHnO<%F`(eXf0c5Pg)%FFkX3xkTw4L8 zKToT{cU#e4bvqiVKI7Mt&O#uQV}MO8%?60CE9Ix`-(m4@*tKZ`2n$m+QK-I$iZ{=5 zVYq--b-KbrkwB3Xt$<^LPDu4CG(b37$4%Kfr}HCMnNgXU8#cf0hxf&QJpfz$`=ZMd zYjE82T<7R2v<@zg;jhkXXpg#HPmg_7($u2uq+Y8kiP$;(d*e*P{OZ!YP1SOUUq{^q z-{SF2(Wlm+)|oSLGtq?`P1t zR^H+`|156hZG&LG)!OI>$bG&ucL2TpZd_r6*V7UH@Q?q?Nx7KGG5*~u{<3T^W151( z*=Ul8EY!Nd+95{wwWEn@%5zn@L%k;om6ywQ+<{8M=j5T!o!`x>)c@hsF@wg~!NUYA zm;VHp#`$hcb=VGiwn<%Sx$5|%o)htxO8v5xgk^wof1pAYDd?GkiF|}VisO)1JW=C! zj)pskb0ROou2+%ZO!vMh#W_k(nL(c_nT#du@!a5?*ufHGfY{Q;$gZWPug+V!odkiu zw(SF{n*|{5C)&s9io`r;H|nb2@1H0IU_MpW&LaMkq!JE^js@6k=`C4%sTm=x*P{tr zR&mkq-J!WR9KkS(>2n10nK+erkkIXKo&^}KH4jWR;yDeJn~|p5Oa^DS_~I3Oq(mV_ z7$~=#iQEWW4RzIr6r?AGp0tWS{!;kRO$roP z>*=sEoim=*c|!&14?Fag1vUD4IO~CLcr^eBRN0MR8bBimUP-`bWE&OFq3BCt^Z(e- z03*rs_AqBNDPm)iJs$SU7ln0vBaeshf!f}Wb0P-{&v@wWngp;~zIriTS2n8;gwhQJ zaDa|OV3~^@<;laFX7V`kxh`0_ z(lIf<$mnh(u}y;BlkQ8KqHx5Oyu{q(aNqdXv%`kM7@^vXaNG$aLHm{<2iEuW^b?D-#2o?n}4@^mT6DAw%@1xMq*PV z?GhyS2a?8~(3=_B2eh;GAv$+<#XS{s3`aKHIrlkFJAQ{GC`z12jOy*9 z>{_9r5VikYVOt$dY4hJ1AitOHjkcF8&|*oK?>x?KXMOkTpCRZN-! z94dnvVh1a}uhctGxEkrlO-uH~r_=*~d5?pmmLF#I4c~aX>~_CbeGOquE-AHIgV(Id zNiY!|fp{hhrI$z0VbP&2Bji$a5kgVyA<%Y3viB{4GVE&H$f|MZ?~o)@^GXz&fm{x$ z+`)La5!1kSw$DW2P#Bz^^>=p>)&!o}TE7tQ(qUBnsYRG<#bD-j7ypZJ#lJ5&|nGsDpD{k5qG zW03^l9ruqm(oN&_X}*LK26IKG4s&NsGu}q>Hl`0@7|y@!CJm5)V%35CS^HT8i78J0 zsi1cM5-)|fEa6mTVqHxJY@o(KMgGO)HbglaQ?*4)JJ3SSDRh~SZPiHPfmL^w5$j?{(<3F%Oghfx_TGoare%6-NaZ2HJaq@Z1zkkdLiI`fS1=M4-w z%xPe4LOF_#tI27Rq@fIOha&~mUXJP9oM`*$g|>v>HmZDUss1%*CFC4Z&Dsyi3ytq9wy zF*c|_&2BpPd)z_ajN@m<$ZIIUXR05FD*9i_e`e%|;DL2IYqK@bY%xOX0uB<}*PhW> zjy_bX7CESp<_#%e^yJk@%{8)tDI|lB$fepK$+2uK5viYcjMv#C)TSe#%8sw@;E!ds ztld~Wb6BIrXCXjPgU#nolLTdWK5M-rA2Or^+PhUWNcdr!;c(3E715uvFHU6S7Mj+t zQ(V%#OLoI6bxl8QOa0dJ!^&5kFVFbA&B~$kS|68>e)5wE3RQXqcJN4Mocrn+AmTA* zC2O0P0*r$hu4K6orMugDTKWErN`5&h4!R`U{PDVm$vGnO2AUm6d$>fO@4bFjZp_t) z8f6Td#a7yzKD@A{#ufO6(Bq1irs{QM9jf6Hh1oOTO6w-NU@}ZmA)Id1OG+OKTU!pb z3HJCfV1}CH7A5NMxX&o&eO>z5MHB>V@~U{fkr7)weo>Qd8Z)LrGs1y&CS~5?yH5?b z8o;1)0BR($4fy?|Cu=G(=dwLx7RV0u**fvn>|Fj_wWq>&MYL$t3pbbz3{A(=(Io!< zX?gt~@B~Mj9jGS~F=)znHkQ>l{nIa$H+mypGUlAmi*KTj6qsL54y$b^GG5#HFBGJs z=0|Br(l>u0lU8rj?!{N@1Nc6Cv1Yzu9Fmr|h>hPpxfn7#DP;}QQY$-7Iuh3BXT;R# zrBo+O0fpS}h8NzVizu2i-t>Q=A)_VVb|%!EqT}~;f1BZ0xo4Vc1VmbMaVYQM;7r#B ztyD1M9CF7VnEb4I!#WtJpWR$a2}K>})&A1%e|sWun%ypOY(p4nMmRl?`A(xIyCdbF z*-wJR1ZIId-;V-JsKS(a6e4acm^G=GX49L?mha$3&0@@cgL# zvTqcXzw?Tdw=XP<@fTUN$9x=e5&gQ5l6E+t58v<(=%W&F!g-mX6h)5{7?|Hy!yN_u zKWg7U)xeE7x(?Ebm0IZ9eVCVVIQPHq0@_}i;`{zXI-y@(9aU*Fcv$4c>+GO8v9vuAA{N@~X?Rf~EX!v?|xyg8q%vB9L z&A4^jt6UtDmZ{Owbi0a(UP>)G5=yO>@*Wig6sypqXoX|eCWah)j~_% zBF=4TQ=y%r#Prn35!=5zvC(0z-Y)BrL2mObxoB>9M}f(5(CxQW|XI{=W`; zP$YPUC#?-Y!6XJ_-1b(^Lnh2(n_qGg+G^NwA( zHti^{ylYVC0yfQQPXYN*){zujKg#AC7ONjTlL$Q2xHSQ&wjTsDz1Jwd{hiaZFL+_8 zR}<`h6}A?;7y@jI1NU*OogcS#jVf;Y@#y6Q&i2s4M@@z=LGeOSdZg3f1}%#bFoV7NY*H`8~m^ z4*;D1A5CAu5Y_i}tsqiTQc8z_(n@!uq#z6oLw5`%Fw)&f2uOE`Ff;np^@nl2{zMHq6WI z<~}{9z3B{GusLT+@6I#*eA!d-j)5~-KZYPkDo1KsN!%1UwBGJc4!PqGAGDd>X$AGf zs0+QAj}#$?%#Wl|9(G>NH74FAeIJ1VP|d@s9v^}q|LcY-hF&&8Vkr;H%pcQV zwWM(4)AxtW(ki7pkzchNnX#lyU(zde{#%iFGS1vx;%S45=Bz+LkYUj$YshEoNuD@) zL#pGbwHw!<6|S9HY(1ScywCSrdG}@0Q4#%A`32*_T_Gq^MCwnU&CnZn+(o~&S2>v5 zM~;6E(Hv98=jX=~c(NtwMsat|{r*$aVghD>7e&{Ak_yF)ZQ)k6^+mN3=d&t~RL;a< zSX_kD9FI8L=|XMTFbERRv6L|z^G=tm09tYWO!8kwU2yVWM(zDyM*UQ5$U>wXAG!AQ zAN-8Q%wj<&6NjGS12s48$FJ(#ZaCijLAEGQ{3?6ddK17|?RBnZN&KaFWiJ$@h)Yx3 z48sL?D*i}aic$(lLHi2`Y=g6~wl}sJ!8$QEv>obooO5uZd5x!_p)@_QH2{`+SI2-a ziBRooq(ZZbId>9!x11N7KDC<&{mevv`<`@yM@z6Jt?r{12gR!LU`yRQ{y=-2lNA2eaB8ziiTH=(*uSFNLp7WDQ9x*r7tmK32Np4xH8 z;$PI)vj)#+?KEBOb`6UP@+5_a0}mPT8($KD$7N4!fFCqSfp39hglYAt-EnT zLJdRJHxw!Hskfz@I{l63e@F1|pIXJ*9U$^oAd!&WS^p|!Hxyc!Qr_Xy>`cM3T;S$E z+lz@xIyMB>Xexh=1%3^k8RhrRGra2YJC3zwCdT%9Ca6F~w-<`8v+FAu7J1;MNayr| z6c56m%LJ`eWTBO2)yFldi3B15%1YXn~LVZunKQcq5XgL6KzI0sJCgDPL7|Qqg0P zEK+c&j$W5bix9)}tAR~yVUj4uL#9<%)VtZH{S6#?!^o}~(e0P^|0Ay4)i}V}AUC~Y zJfvn`vbH&hvgjr)asd`(ZVZ>GyNS*>wTUYKbUuH4V;uXI`xK!=`8#ovFii-$ZRGdj zJ!LIlzqP};Mm5`d&R+cQ1t>6f0K3?o0LjG=mDxA5Izz70p%(%M6Sd~8wZWUI+K)3Z ze>JY)lD+-46F#Iw2NpC>L+Gvf;EIQB?ec_TZ!2kPW9T}O4Hex`R(iDRdIkvc6Qlrs1bPi3(wpYSOP$f|4E-g2eMu>-|96rG z!&YVA^Y$lH$uL{@!`Z1Se|B7|rabx^Aw21#N{>26j^(=_9QWCL8+anH`*A0MK+iu>)T$PR-sdnZg2 z;b$31M5C7#C--uf|4O%QZTWM0)`EG8kO|(vMEfgHenOt!H77}3k-c}G;315odg<`e z&f;B~VxbPr7FJ|o8unibFagcS&}6Y-_lJ-#UYY$K?EfKfeqK)$xDq7!IIWiQ)Pd{lYA zNX;JOKX(o>ko?z;&}Z>{CG|keGyLmMdlaWpug0sbQN!>Xnk@MmN;BwWvUpjWC%?xq zsVGbgcq? z@?-nnaFtPT^?15CeL07WKqS&+Lzq?p6N_oY4~2%l=WEj|tRsRy4cCQmH|(P={QX}| zdIoAFdQw(Ia_hx^2Y>{Z3_0p9_VjEemRQm7>zAt!d~>|d{fG~xY`*gGO0Hl%PLVR9 z*gqq%A=UWwPw70aGRN(c8JgU{F?^dttRva6T2oq9E%z7CVai}=HUoQiQQFO_ki!Ns zai_5hIOm0bdO7O!lAx>zsAEhr=GBX{L_&W*Hn0W>~KrAGL25N?i8&6-$D1kSJR4X?CR6M`%gQ^ZT=FTp;;0%7*1F6@axqIiha3lLX1F}M*^cc zp09SVWYARq;qH!xhb--%@;pas8!(^jwm4iaJo9ccd=qAJB+P^jpy3m~;ersV&lks^ z;WGI!CeQI8AIsiQs09Q6quB`pwe=|=-4OV+Ksjj3DYN8s;qAa~q5Upiva`@yk{0`s z^9yBbQ@2^(d`|>9i|DV9yo%DElmis{YUy=+ z18C-M)h4!?8~U$h9iml$C;v0+SUdf#(uB%LGQ|0s z+5~jL%{5$3p!wO9W^g8#&!P!j_5Wli`74>KDrXM)2TH2;>0Mtko^0j(jdk7*%*h3URS(z=x0sQ5mVkX|#4l$oTR-ED_UY#aSSpT}HZd)V@R{+`EbQ-Cvqm>V-VLjTOeCbB4wj5oiEy%c+~xBhPEi3W zc*a+Y@@BRCLE?&OtYn=$Mu&Q}R9(C!?~1>@dX^j92C8-s-en)`KCG@=Ud(mS6VH9e zgGF3k7H>aW%tKKKb}U$;pBRu8@D%dV;Sw@IW8JN^*eNKU5GkzO=J?;5RdJXspZ5P- zG0D!8o>}H(ACTkq&uy5>96>3jP+30u;(7QTciUm`c5@0K(W^WX$=DJP@>g&)O;UW% zf?ugY_xrn)H^OEW0SMZ{=0$5hPRntA+h7z42T%LTq>0y**`@%$hC2U?2|wNs6`P%L z-u$x%_e%`P+S#EoM}<~rJ+cyP?5d}Trev^Ohuh9rU~2Jl=W@zz*q^B_6!&QElh-)_ z8)cG#L*(4A&fEsyy7n6h0Mvw9@rPo80m!Y$Ecc-MqJ!xaxP4|wAlS5%=~QS;j}ibW zHI_biOHwrWcKwhnP9XGUtEsosEfOEp9WGH%Z&y%`u4-1LQ|~Ujsdh zLM{GQ5E*9h8!I#fOx=o=6!5|Ns?Ds*<(^bhqhnC~>v_%XgacdJ>+Sv#?Cu_%A_9^! zfX!57^b%p~f&cG*0atwr0}t|?t1iUQkua@K1MR<+wbNi~WoYa2`|F4=IU`S>pc7E^ zXcW4@mIvOlw4*IM{z%V8!%fTlEcG)zcLRK_*=E@BdmFh*@%57o(L_6VrW&7@gCDs} zy!9|{iTqRV@E4N=WviYVZC-RfITYfXTn>?8#cW-AH#N{6eiY$!n`yi+^Y1CMAuOnW zQn;x)UZb8u1>Dy+z&`cmeR4YWayl)2;1RFXbJ#1{m!CNNCZv=$!i&TuaRlRS>DL1i zsfbC+`HRuosg>aTSeHwG(<#ZQ0_rk^*76e8ONY&KJ6P`SPXsJll6n{cIRq=I)kB=q zt8$K~hpFx0MuYVJsW8iOB;8qOrQ_#t0c3`3n)`N`U!JTgzHwMi)7Oebw<@J#I=Bi0nqL? zd$R+btKO9Zi@<0*>hmp5Ss38}HhPU36TWJEE+veK*8^!Q{7ogo-1!6= zBfvwmRA{xHD%0g*B1ynYn`mT)*--=vl!b%BF~PJ2>bw7F7KH@*6yOPebt1=bC2Xb) zM$(BvirKW0%Qt{LmPMEFJ+5TG>hg!;fO$-9+MW)#^w%SMEI`hO60N*SlQ;Psb@6q| zSNgScMS9Dp(0#0Xz1ex%d8~E}dJ;T)CS{tRROqGY-e{w{EC^dn4J|gmz?N(FY%?lT z#g&1Nc3ZLpCjvwdcw9`U*L?~J>}9BPQh+>ZyGol2h|}Zc)e5U>{XFKM83C^80SPC- z>kK(w3pb19Z{jaYtt|_m?3wV}r~8zqh^GCmQ`qKInH_(&_7epkN1A`9rI?_kQ^dMI z@n*^T+b4iPp#1mCAOj=t@QyzE+EKr6?=Kl707fk=U&%x-J@+=hYpmk$xk_KYoq3y3 zOU`-6zA#ub7<(!48-H0(VW1@@T|A%8AWMW(yK=YAWA9Pp%@w`QR76L z|2`IFwFWQq(%5gEmevrr*7!bZyAoG$a~8e=-q;uE&@Oo$3F-wHJE9;rl&tf`1y1>A zc9mpy&j5en!02#6kq<#D@4hQI+MeX;JYX=9|B~lNhsG!R!@f#ai)0$Eec=qs@RKE9 zd01K#z^c>%_k0t$3YZ`NVp1>O!3;BhI_q91CcF_8IO~!8!P`6n6Y?aIaQBrhiJl!S7mE_;4(xt8HcSgg?7G~cQ}UpDI_QgfP<>W@<{#j`D{D3skv4$%NRdyQ&e zu^)ul!CX~&6WUl`@AK~`Fk|{92LCzcSn{8TTv(!TIdPlg4x0 zyZx9xX~~4%_85=8h|5>}*vD_0Cg#C4di->`kmpi2UcW(XNURrkcOR~+FzDg|saYkS ze0?c}R7*B)UI>tv76QH*Ho-GJ81~&FejfDmOi>=kg*02+j}(;V=r9g*5$aq_}>i=WRGx%we zMF5eBuP@!OBhZP%6ScfiTCgXLaPeK5KWxk2=|nmwqAd8NgG4Qcd(P;e4b?LubAP6j z1?q@ru5X*D`|Le|;dcJweL(MSz5nJ0Za^lO_v8&zdP=b9uoi?Bmy7%7|-}=X*ehh*n#GM<@dLtw9Dl$FX(x5Nu_qj z8I=_j*njwLDBx-s6f#v4e3{EQrCoXZN}<1AO%h*))sqIbN9yE4<#LCXwWjHNHZF=! z^KXqO<^BAa{K~Na2g{bD{q?KP6~uk7gMjmV#$BP6kx%_Ocd-Y`ltU|g&tD(ykZiu& zf*?{->ipv;-liONdpipO%~nU3V)2hj_4xya5NAA;5rTRu{D>1#s`eC{DbcfalJYpPZ@ID>MS^*Nq9qL$Y-2 zeV(xn3@OXjrT0LnZPX`9Z7eW(h*O*XLoSQCoW@J2Pq$H<(J`kmh=DXnT z%pIbq$?JV-2l0Qj0Zdf-ZjB+d53q?6*uvnRuBP!HXklLHi%uWZ>Em_j<3CksmHfCy zN8y8Iv+^s}(Nw5MiH9t}-hpC$-!PnuQ)*VpzWfYv_&DR*nl^KJ?d~y$I=LQ3Am7|Ht}85XZw0JhPcsZ2d#LES+W9_BLmW>a6TzO=}51RO{a z%)2&MdXR(KZ~C*T`E*(E1wBa~X#iRgB-ux1;f=KKi)Z|GZ!eFc7K^@7M)fHFX(Q}I z>i<&W^2^CYew|TbK?DZc8&!4&kbAw8{Ez4z{sHkK>hat;IpcA{^hq)^vu^inm96Hc zLC~W$e84+jPHD;Nd)o@s+Kb&~xJKft%*;!nXStlk*2E+J&P|bW!d@Scx4-$@W}!$e ztUy#258qo~c-A4va_}a9CZ-wZwIrR@=EvsDT44Cg0V&ms78o!ws8z&2RZMBMC<#B| z*zQ=P_XQP-c+YNrv7-_(u`Ob@ilr$SkB4xa;t%Q^t)3+y+v5^wXFs3Ubb1P3Q@tL> zcIU*JK9k$hzy9Eh?+$ARo4RZ@IZ$E$4-QaL9MH2**m5X&wR@Wq zWp9*df;$u$OwxlgwUWUef(=$~2?UgsI^ZwG0sR057h*!0VxiBpmjSWQAC|AmKeb^JPWE(o}R);1u542xnZQ6fMo?1!^gt zPsmBlk^)-o-_VdlpSQ~f;^eq!R&$?4`6Yf+Xv&HH*c8= z9xOgC-+b^wrJ%$|R_apH_K2-jw$_Bl%J}<--%95Y2MJ!|E>vGmO+v9aUm0T+}^P-wi3~>*fP{bs_hQ2Z1rJ1r|LlXCwGpCYn zzdG=r-jl;caR|4-o>15iWGH{Z3cQzMlC@$Vz_IrDqtHR?FCa*L`plapTC6X0nSNEO z0DHguj%F5vL4u#VicPg&)yMwozPWqu6}6BUp-H{UTlEGk35&bd!{QR>DBDQIclebr zL>qb=ufQqtiC+H-n3<=ejkoZQ;FmRkTX6Eu=1*K>by^Da_wXw!G@eKKSx>YRxRH(F zjHN|mp5GBl6X943+IYM5=MIqo_jkBOW)IJ;2G@Zvh`e0ZL45EhmHcvIBq+j{H1$#f z0JDvS)rsw>D|h_6c2}Kbzn{EZ5*Y+|uo^g)pPvNS{P6eEyZYWNd^V9zR zb@%oWaY2fh@mqcRR3P(j&w|XHwOXo;IS}z@i60o@n&6ivLtRrGC_3zE+6gZvW6oX* zVl3xdK*Q`vus-PEHnfo@j0)zjylHvmqL`ioSmX^^O2yk!pEEzgeV!n#`7;KOPkt@e z)8aI>-+w+qpwFv)T{jF2;32dvnpEc^m|$1s`c6<@M&jUDni_kZzTvkA-l(C^0sO1n zKwN=mrK~LrK(H!qb!l|S`%<8~HLr@t-pM%;jT^kaZZPS67Y`g6&kyJv*ejrnQzjA1-@4}&TFRLLk(Tx?4bPY){bL`>d<3Xt zH2nD*+ppv8tx}Pi=j|%yUoDk|X&lyO=j2M)rh(RmwXN*ZPv=_uB4jcEjdf;ren&+K zJEQE$1tRTwk}#rb2It~u#*e@y^k!1oweC1r91hCw+G1rT$;dbzz{QiSm^1a#7|<_w z^M?Z$AbjeV?&QrX*F@7f|2r;vtn&4O-gDo^>evOZMzkv+nQX&IVQqI>6oE#0zMJUHF8iOqKvpRHy;j7(G z!P30%NxnwHgh*c%E8<8`^|boUp|1Td0NkraNX}Nr@0R#>#q${SOk+LYvcPCrgacNP zp?`EaQ?`ORDx~IGTc|Y)D{=iE5_TeG`Q3Baf465Dn58tAEA@xQ z#j5fiqh5bwVw#rc7ZxO*hsycP`dtcEl0XJoQ{NI`XXHp%zi!fm0LqZymPMJ_^4(Y0 znoU)Bwlty*5pDlH{);a?G)TRFvd3HUbr_%kiwy;{$415Jaw#y-v-Bp{>inBp0QRqf zpqD!@PYmEj9A6^gevKq(|2j-tRhR)m5}O}iA9OjM>l}y;(XKz2XnyS$UY|%rd7xZ;Ynfp*>K!yY6tdNDv?b_u64r zRgFac6A~|i%gmedoHN(?F=@i=Pq(vQxu&Iie}FkB0D|eC8GIp@0VQ zEIJ}`RNC9}qz_<_6|u`pI?5fEI}qf4DRBPB?wS`sioeq-HB^y^5+RZAMSFF?lwcM{ zn&XGl5lEO_ZQnqeiW4{9Y3|uN8|kCEGxDWIZ1Ls+G6o%vT5l(_&GX3o2ABl>XvMa3k>v?d?bk?%6SIl%9y7k zF}V^Itl5p9dq9^Knket#P=S=Z`bKvI1XKubqQ*=bxUHMfbw8?t-d~;x_s=C?v*Fp? z8IOwiA5yvzXB&Z#8jaO>yXiyj{V?CyGWWE5L6U`7u174ka-}2%O0P-CGq3=IpIG>6 z^pmHQrxXUnmSUrP22FN~>QZ0NVsO8FA&*E?i~L!i1?T=P*lld zFWl6|(r;c9VC661Q3Pi2ZNmqhU*$z4N*3wm$7CY3JdKksx;E1vOOCAk^tSY2V~&?& zK~3qU<$7GGg>6MiZpGef-imD8v4aKe$psf*_86gg%{*M|MdHOtb>`ckd{mejBLWb!^|lZlPzk&a+D+d67?Ev+T`pM5^Cvcn zhwHj!VE-%&7n%njbCN79R!w-fh93)I9y-8xLI=za~-ZuR84YCCTqR z{`Q;qY5emr2Dxl(cjsq#=opMbCCL3B2s}ei`bh;J;_L{OjZG#JebaIG#PVOv1!>Jm zoA=~B*&whW-NQJaGVZsv+XQHy$;XksX0@NQpPd?NHsd=;j3U-~Ew&&aQL<70Gez?E zX=DXk-NC+~SpT8M*~X(Hk#m!Bc|TxDM@_=Nwvb;#G!p3!{F_)XiaI&T^IQ&O)^HaopL7Pc*$MlMTPe;K^j8S>di9WVfU>x3>5NZQW)8zsNF%c^tA{Ue zt#$>w8~fgqnvG>mH87!cFx~d*=%$xk0;0_M)s}vfrD1IE&H6mc*|D1@gGAzP;bNgI z@P>#jsm~iZ+h*Aa zyY?=J^O!yNbgrD76Oif3T%cw~^>>Z)hl6~;!+A_f|LClmR!ycg!TU1a=9DNolW*3? z^QK#<(WZmj2V5Gf!lkpG!AC?sPX&(=_YYZ`8NHp&g!TT-tHS&Cg;*n6P3MB_#vISa z%NQ7ezUAh|@gkV9bndMF-iyk}=sfAyFuT6g{zVd;hwIG(d45=(W*y(CNSK`rvjz-r z%YBg5;U;rRp*ThKx``B>4wSNTpuE6b7S7CC+1f<-(0s9TG3SAh-PVq_I}B6T3g4Rj zOpHx1L87+Kc;Vq;*Mp0bR&ICa@K@wqTYkOpcz6!a1oX^}%41}2_13q&FuT~l;%105 z&b!&W0;!ZA^!L^_aA)pJe)zzjHqsACX;6SwxUERl7=NCOW!l>&H{;&6m0Tdt+UTq* z>Z!5A)xVYeTJRVlBC*1A7O66+*|?;DR?x(3U%FFoG>NkC9hCsCTm7Z}35(Kr@R@|M zxbaSp-jXM>a~8v$V~0v1x-|n{p~4VvcN27W>K8`~MFfk?&Le{qspOF}3EmGHQ++|l zPHB%f3H5(g+M8;QnI{x!KNkDT1mPFP80>t!`)gQmBOfe$zI#lJx=5`SecAfm+`DJb zSm5hTSsK6N^xkl#hu5;7X=5q58(W}l^OSoVGPwX*ve;gfv@rskGXE)B=<$yJm=6#6 zEP>P`Dne#b6L|7cFYGd|ZyZG)b(aqOlgSI+zhc^ zRx66IcOQ;>X59Onkz>cx;51VFPnoC(w0uT*=5MjDHl~zy5BHi(v2`U;&@b7;REhuN z0$kFAbguz_pZpITPA;HI*a(WoOQM3NF$j0%^wD2rdokxpC7xBhLNt^+eeaOayQmwuGvNerf3f`+5j^A5^hxW=>ilI23jz_bf}3! zv!XV6AckbeC&}xgvd&_Ry3mRWfBy+4Ens}55DiBMY3J{@{hh%cCZbZNsEZpBlq_PP zI-=E8pp8R&*m3i^eVmJ}qP|XESS@N4+8;gIEWk1AOwOW-dnQv@ihIAq)F?{TuWjg- zM)_*>T*8y~rPbiMYAvKI*>$fw&*X?W<6Ljb9dcwdrPw^5yz|F&q=I?Vp^b$ans+E8 zN%2k9NzcHVxR7=h9kXoYWz~SX)oX)amUU|SebUD&J_Zw~EAH%gnG$8gafj2>14&6cj4?=+0G^t8lz;>AjKccY&;I#$vm zx`er_T8S(v&);)cvdT>P;`@gb8?Y$$YoSN%DQ9u((5CZd1D0HfV7HVeE=@iPU+mPaN;cUjYGnHuFCyh25q$2a`=S zJzKnmvS8}QmWLQ0yOFZQ&-Qqm2y=JkhmrK&2u*pHi-V8fHM{5SktYVgGl!Rk6^R+Y z8^a=mdyZgMnVCJ^DDLE)bBoxiB1y(B_b5#&AyXhODoSb`g^gc~n|}`B83*aH)!WB3 zUfb4$iT$^UknG}GwJZ04W`WgrE!DC(`?YG$Ke{?D8v%)-8zz6ssb-SW9;Cl3 zBApu5J1@@?aNQnfOb6|vmF9+~>CyDtv!4G=3EnNFfBKwY*tHmm@^z_w&gSQEvN3Iz!^)Kz!gI=oH_4JF8>AU&J3xJ%u_B3+_K+(cw6@lbT#uBxO#1lE z6w$vmPx5=F8x-L7sH0z&{FN2>1e{(pNU~;dBboDJDwV+M(Sxhj!mDFM*|8Ouj$c-Ut!ho-CyJssd+<0qFrzl zafUmC70Y-l1}#zX8?3J{JVsXzOw)3S;SQkTi>eIfZ&t}E!NhJsnQ{1cP_~iemgH+M z+rbHQ`H(Vw(K;iC%OrmD)H!T@+IYRvn<5VQws7rP_1@rE!K_fdv)S?NJdzC*)N=#1gypBbdCmx&GkRg zqMpVzGoR8@DtQ0)ZX?<0YhrvsTT3C=>p57m2PRf5*jd{Y2{{Ri%lEHblJ0lA(jRR@ zVk^HzouGZ{=>y@Uv(L(J=iHQPvjdNx^=Gt%MhZgF)9h!t*)G@dt$xbXWbzJu$C$at zXp4Taf7WdA(#^tz6}WNHv0`53ID zNbXViyScEBWvQ5R>vrGeVbmU)mwuZKdgF$(TLpgJ`1hQu9;!4gMWFNJSCtg>Q_7U0 zr)-Tz>j*S2=zNdMo-Ql^d}GZ)b`@+*S?LE#$l65P)vG{+P0}IDjkACqs^0GBUOv_E zx-&i^RP!anP#tT?ZQ;|DX?jnt@XcR66Kk($vA23HiL*WQkA@^(%1OrK&3Qm@9rC4~ zfOoA~n8^8srG#07)0f-epg8E0(v<75N-R`On_p_LFWh%skSaDD%HP&+HS=Z?M2R1A zCANB(Qmcd0S(^$p_H6Q}T7g7Yqb7z%`eHH_fu*iLc&hISYm)avwNoA{F~x8@EUo_o zX35&F%14-JHF<4K?2Bl2B^U5WLqn&2GL|OYD2^Nz42OIGw!L}bCJ5!AjTarin9-ZS zp^{uGzk4WX+NUZ2a;Y;B4wcP^Ee^MbdYMDRZpm93h=E#q+5}{}bgMr{!sMZu>Ht#Aue7Ek{ag7}B8jo6oguI97;lollg5XiyA`_qPXwvG_|ReLw>H{PXy=-*4x^2K5T*_+lnJiZ{$?-`YVaG^ zYS6<{>Ij(5Ho4mSStL4*F?0fFnS_# zEvGJzboQs`IVzWp!8L{U2foE4<%!+XxrJ`#86N>F;~Tf-%i-us)yIn9*X-EwY2`fn zLS&UOnV&+6)G8&dyGX2EbGNR2Ac(4_+gy#r19z{f$X_L-GrSW7Dyu;0R!CHZE zv7+^HJ|WNBQMJpSXN6{-U-h4OIQ0%}BL*Ub@XTp-K+wF|B2P_tI!DJ?vMYk```vbI8aat*$d)nb?XMHh3~iZ0WI8&EzGx?0C1QsW-5# zP{mP)yWODfNOby=SLNi1&qN3A4w!QfXjHlLssI!*_ls>pLDUBD7xA``82W z$HJ@7RKkrZ#jnsjZN5T1t}2Z>*q=TgwbH;U=g-)u$*)RZ_7^9~1f~;%&&$56FyZY! zlpv1#PTe(^@|z^FxwCKj$TWPb#B<&cSbP1edFg7e*pEIwf9ziTeXu+-2S6HwF#=^b z>_^S;$ZY+qc|14ZxP;tyE(P5(f`4BN-!`tE(a07uV-V}X#=b7WJK*pN1Mb;G%h)`5 z|8>-M#AO}BgPE!z<(pqYLkyeav1Y+Pj6Vf6U&;rrq7L*m$@mx<)TN>-sbH?+T7f*iuqFB~yGdMnKq zD1*m$Y`LCXz-yDyI(1ebjQIH1tf_KKx;nBeyNJipBxHl-m=shPbW<@XtR8+;zw-Ut z-D;d3bu4iaI1S-k?r9&r1iL$*p;cJ&>ew58M#q&u^iY=}y3NhlQn7-s(7UQh@A6h0 zKiPldcJ3zIbo}vt3yJ3Lo-HA4_*OL*^OXRbt;8KFNd{?J{bm19vvBHOhVL{y&9YD!1mTc#%XAiR;tzFKkjZ8$07VUaRki2&2lPF9 zQlcK!Gu&Ox5Q=!qZj;?woRNQbFTTR)(FuXo_>JfuX*D`uP))hNUfKC0m!S#@(2Q?h z^a#|fGq0gFShjPmGLGg^L+UksPO5IWfg`3QSX@d4Ns1F1y?n7JI&OsNEyEeTPDLqN zji304mtwW)JA7=LD5?|h zj&2vzMFcmA4nFL#j9d4%ITRkG;;(@6!zlZ=28oLugk27{8bs2Sfg*)<ykj+==edfoYU?M(>mr!VbOjElo%Ksg_YQ>#*4G7@ z3Nax1MRcF`x`DFNQ?y7C;Pm}_12^(|+FnXoeV|bu4!6Etm-FONXg4~k5vbN|SELwO zZ8o#h7`du5UAhPP2K8jhSc%(^nv;s);dK787uz{S41~reehP)r-9mig!n%aba|!PG zJYjOnpLvJMWRqK%;S+n|u_yUtG*iq)bW*GR77XVzFY%>9Oes@7_!TYU;E|_WiQV3c z*4M6T(ElYk21+RW?v~~zm#nnZ4-AFrZ!4bSEXcogJGg>y zEkNscdCsPylzJEUo@q7iy(oddxMicBKH_RP<#8|&{)ZBj5?c+jLOcO%I&MbO!dKRe zE@D0|*Yc(&=^$)5>xo3b)yO2D_InM(-iOHyj&r2c-`6wdsxo0qLsnf2(%2aDy2KE=Z<(wP&_7G3^jn(fJ8Hs4l zXu(r^vkB#9dWSo(bwBUMslrV^*0x8$e1#!?S^j+H_Lp78IhkId9v5uaAbLvT%)XQ- zK6_I0-%;>*{X*JAGd+}BIaW*yA$$DFhlbnU;qe5~__&?DWDlGKX2B8NYGJ{~;~mYd z9Qtifn;z-zs=a`gR~Bknt{h}KMX_g_8r)HDH0r3@{ey0^X9Bc*A`gGNf5kcKO1Z>)yPHD4`8=0UAV zJ^e2g?9k^{QW5du^w|J@glUygu;O51|5r5@Fr(0X$~rWvAXv9`Sl3Z%%i za((?s?Zq`XH$1-iQOeplCt`Kj+q287KIaA=49{0OE)h#HLM?;~sM-rJd7Z0&n{Vb2 zyt&Wg2+l~n@AppB<+pw~5^HW&**gKN%N_qOjB7Hq5@Xw*KGb-*cbaNp8~(QRx0?wh ze=Hvvo=m*(V_NNFw;!$huK^%oc2Pev|Bj%Ln=pWtcPQP_C7cd_H7p< zoPWHN85R@L=JNiqps}>_Tf~jks(JBolgJKKfo02cWOJ}Eo~^}o!7qqV41E0ja8voW z*6F?4NGXSrksg;P^>YjSu)m#0e z!gKY!v#*BnZLy3Xvs#=)IJ!~O!>rG{hSORCmO_V<;w7aj^JYzJ!e1k@piH3Lx4^2> z1ID%N)Lv`mJUH_`7++3*9~pgA5L+!Rw&I4rnK@3=($j7X#`}_g`KJDC)Exvh9dCLv z0x6i$C=b$zJc@l@+;J@b2jx3ejlD;&{G9VWX`@J*TmdXMinP?1+(=dOBOHScM~j1 z@QJ)a|It3^z^m1+d=KdOB!ixGDlb_`r8%_TjJa|w0|w^eF+SCfy1_9MJDnlCY;E2?ShS=&r&6tl z5zuO*%N$I};36^0&8!Y5r<}c3FU(P*wG#3ybIg7J(zbkg+@hxYm)eopy3PncwudbV zHcT!GS5|E`i`ASu&d{vjhj|s6GuR9SM=Dpy#SZd%%pC;{oT{Z5Sw-yx!T)?~c;E2e z{avYGNFc8cf;Gj2h5hwnK&Q@o&KTat*?{ZR1tW$aO(4~->JJn|5uK9vd(;8E`@6>& zw(cK)Pj%B32WYe-+CRM?>J+3dPJ%F1*>=^LnSlxt6yXcWJN1LJg3P7L8QdwWrB^qe z9s`Xro_rpok@^iEdW>1?Hd#~V>=d@H?5J614WCT3Y*;2ATAvb5UOnj#l48B^U8HQ4 zdfJfkp>|k9-zgYLAM{5UmqX=&YzdQx*_9#U?}W$!#Man5+C zI}kFPda&ruTgX3s()GF&Bpu28UPI@DK)tO3iBcc0{>`5u1P3r&Jnof7;%|+)AI1Lg zOLa6g>$qp9{UGWgGXq#V@E2Oes#%gnf|W$+!;v1v6UjSMeIF15b%7vyk;l`d{hty` zlQ#5A5D^Z>I)MM9wEH-M8f)p_|}V+Yo$(VCMa4 z71rrdNC6Mm1Zg;SwXo42J@1mOX6ii=HWk!}(x!^)XJA=k5;FGnzo5CLdo5nBOifz! zI#QAJnG=Bt&!Xc#OkyLRtcoWKql_TpXSB1SeekkqXZ`dT&`u={u&mVmrUhDmQy`In4b3b1fg53x)C;IbPtyb9k zh-Z`Z2%m9v0nWk^{Iw?eci^TaD93Rl#h_@UN_4sT&pmr%YYJtTTRZVBs(t;LTC6aQ znnkMXns@8ng%Y@wn*5F#TNQNe`k05`iP15fq|Kj`2==b`VYiBDqJRhO=Lu}pe7^o6 zsQK00eIn5^MAi6kZHa~sYT_exqgR_DgqjjCI_1?wHtRhtBEk!MzP2ON&9!kOH$Wb7y4E8jsS!w8PD^${Y4o*C+l(wL$a=1Ox83Jy> z{KSy9sIG3Kz|MX0g@O7qTwx|YC!tkcMgTwvC93$=oTMz%8d?Wf{mwfq^U z6v{SYB0#9U_+V@D?9grgajTz$H@j=^AKK7QFu9+5S!mklt83l!pn~&sBof9tOD7b# zf8zoAv7ulPZSY(O3yl+>alnoywBltnvRdKSJsdh9*O1NRRj* z@Fr#VuBLz)UAjEn<|`Gu60Oj4;8(xz9sF|c3nyP_pbEdHnRh~jylqc#Q3dmeW|Nq< z!sqPhhc3dqK<&Z<@g1LD9(mBewYRE$mj)x0w4j9r?;=+P)vkZ}c>Nw@h7=+wcZryU zE;?fgJJ+1Lb7rYZT&$(vWjn9v3}Yz@MMO@W>6moEChz2NF9ZL@*A-arUY2hsaK8H9 z_3mDgYk_)s^nV>X3>L5ck_!B`>Z-ymShbu3hSgs5s~k8v?qFux93Kt=hJ2J<(YkGo zO5%1@)>d55@)T08|xV-_yfddX^NDS)3ci7H4q*e|*}_UUAe+AT_M=ch+> zX1z8g;o43$yO{0EPregC6BV=YzkU{env>7BP!6VfF^mh)xA&?y^UMCnrrz`?n&L<8 z1z9e6lP*tt7VDlJd>y4Z32v8nXWTmIUBqS{9}16T)+ISUpM`-y=l%Q$NpX(~Nix+K zE$4X{TW8bA&+=)z;Bl0lNl{Uk7%jo?Fs0O`lmrBj;y5~fy);3U3BKr${XQo-ug7_+ z=*$HDN$b>E!b?Qth;+d%EeTHNTpJ?xaYd7 zh!DS-p3luQ+e!=jy<4ZR)_QFfb^r@yyXMVCN4MuGzEF%$@om3cDK^Q}b0ItNIW7g+ zYbu2W89&m`%8zq2ri>V*yP(=PItZqREJZ6y@ko$4Gr_pZdTp;m3C|L(v=Y7~hF24V z#Uc=g?v4e;US}V=TMbcFxJFlWYXw?G8<_e5Ed`a-4y}@^L*I zcc`Afu{xbs`c;X*;tcsk#}jq^<8gOReZ^GppA-6O)VE-__uW%#^Tn}Hb#XEOZsWH* zivpr$DB3)u^9t@a+*pXm+lcL6j7b?+K!JQ)?T?_g9GI}#T)`$u6+O}pmg&yd5)SL?)zQ=MkC>na)P;|Tdo z0U2gD)#8J~top`qi8sU8p-i!D7((*+Rd>qV$ppo7kJ6 zJIu%OM$4x5wkZ2g<(y}&mS)}3B3{V?l3#g=tY#j~Q?fg`?ZmU&fY>IAaep-d#kfK? z6M8QHxP&<+aMi7alXii&LXQe#{6MB6W9DzaI9&q~Pz=EEs>+kFSx4ndmNPzPP7xd~R$q znh7DE16>Xrbr`3yy zB2b9AloM~m5thmG8|YWp{pYTXOCIV{;*uFk)Hm5ze9%{0&`-Mu6_eqpoq>djf{v`I zg3_f9r3`t;i<7!s>0FK!W4K#CBwlBT@BR*LCsZGF&=*IOgU>Zyjr!$&sHB0K$^RJu z08u$VCx&7ZAMbxL7~QeHwl?dqqh3~mzjC9rq8h=)gK|oGBw&v6elgvKbAV2Snp)i~ zKKRBF-&O4un4V^TF+JnrW9z4*pI(_vwrgJJ+v44 z4wl4(8~A}XnPSj<)dXnw`pKMg-j~iz`NhkOweCe@m)LaUX>Q2tZE>IBoNW?68faM( zH?f~RzEVT9mqpWBl*~P}=c1nTCtGC1ig_;c|M4)z%FU)8YI76#1R6S25~*U}r9@!# zd0|hEIax2dMF|(kjo}jAkg(1SC*a36$4Z1SyZd`TT_tsydbpO;^qf=<_s|csPqWlq z_Nrtvq{0<_zDkKz{m8(m&r^C|ZHD;rFhkP&hapKnX`OBPBiE-gqnBtVw%04EX%lQF z#0xNfw{O7MsFl%0=#_GHUK(18loXu!{G%I|uy)Pm#^iI+Vz2FLBR1)P2R^ClQvxz# zS3dLwoP4y#iPh3Zx(cr3l@eb0Bj=ocjOv_EfYO@6raEcN%oGSH5>6fSxO))X7FeDf zEP5!N)WtlNY!4n(*cvCTe!c=iyDVJ&GwNy)_k!Yu8#(}G$kY38P5&@%D(#pKdWLk? zKyDFo;wO2{CokkUW1sly6>L9xb!!!dzS>K>nqvRnRp+=KlLrOma6O~C9xTt`2UGC! zidUbO!kS+Lw_Ch%lv9Sm2;&HC4q6OO@ZE}1Gj+*ZXL~7EcB7;)**R0id(gQA)yB4K zel|trur8UvSQHp*P4B;y^;wgca!U3L(d0TMmPIE{$sLs$J4Zp0QDCM9r^^0)Eq>#7 zTzvWZffQ}XQcy*kqi`OxX*^8s4D&$nOu^?n4t08w7*anfHX=bJLg^;vb%1=Q3*v-xHov=C-HTC_lgA3+EOB zdZZZaLAGUiN0b z;ne+Ss@_Zd#oI|;{IlWX9Uv6A?xzLdmC47LoHzj@WpGT1Dp8`MHn9?hl%;9jckzab&@(S&r zO2c`q-I~vj*=*A^>^=#RUz^_j<#-msmud!l6_-8py^42l0}VUp&Sw`=3jyW6|J8e} zq;b8Dl#yEhK!Z_o=K!V+`?0!OzESmkPfJV^X~)w=zvag_{yG7fnYXB{G!mj2Dn|)) zl?X-$D|-|1$}7VjOLj>pzNxDQib4I~43ZPv+UMLty2kXxO{}am3C`WUqpEx`gQOxxreD^d81w5{3mB5%6;IP7-cO(U{ExJWgZ>t zt(Or&>erg3`Y*2E&prD;mAQ&=($SeIFcTXsZ6@rurGrW0oAs=snrvBgX#$0oJO7n4IDQ@RJpEH<%n)9`dWYHe7$`*>s7 z37gDi7=;eU%qnEOko<|SwO!xW{uB`8_R1vo?1h%iM|WHnOv7%C;lfgQWy=8lot-`v zAVrCl5z#3nb*;VGY^2C=On8Z^j{NRYnb%`f{_ROK&xMxK+hcZTCR{P4p@?L!N>d4E zSSiEBE9}?pIu4d1cd2!nATfw+i3P1md9LijL zX$~VIbT7L2nTbi&|9bc#JCDY-Yz_4xyoasRWcu7@vCvkf0p&aM#JokbjQ{q4Xwirh zVcfQ70Q6V=78g19NUJeh_2@sr>bzl@u8GNoD=qytdmk@u3%8EmAN~sGb$r~06%XMw zcB0A?g6+<$YIfQri#jBK>B#DRT%`45`S$OtViW2#Cne>azP8;=8bpK`DXpsslazVF zCJ`auC^w+}T<#<)b9BW-f%||D(KIe*M%PECy9kKO8RG}p%<2`VJ9d>-#gte(8Qj}1 zJ&l-m@%?t2;c8)>&t)`6MccNyZq*d_|AO%CDI=YAuZuSBxa6T| zmUR0J9R)RYSMCgWU%$IMOkey>Sm(6<@yP=K5Y*yYN`WjM5TSkQc3C)F3VkQ08L^ zNQ{-9!qE3dN}5QOjo(hNm86@9K16!S<9DwaNp6Kp?ub!GUz zp6v4BnvN|jD3aXC% ztX%Za1@(M-YO~?tj^G!83KX=(%O$r7m!0$eBSX3O1VIJmGJDaXl;QiOV0Yz{g;zF1 z%G(q?ITMVFledUymB}||Fu6Ubh;{s-8nY`P#8A1O7qgIqYY&_(PC< zn)d5E772Se6zrUTkD|j7FVkBw%1~i&R!%@s{)}f#(c8`_qmgjmH%bD0JDQ z85qA>fBdp>>RI}pCa`9&wi)Ex8$L7rjob_6N2cd3A~N!~gd0*qMRa5hSJy_BY_hcN z12J;}8s+nOCu6StAEsyEpZ2Bx45I4!3;Qc{B(8q0Y;X~GqyO)c`f9k85|IZ#s=rmp zVigcj5cYh11Kq(vS2O$g`6B>$Mw!3VAK76G@y@A}p$Y${gpieo#V1;pRnwixgauc( zdC6!_uiG_`e|As^)b8%~2a84_eRuH^!Mi5~L}0#leBnv|=P^H%yN=CC4mn{`P{#wDbFlP^)Ne%Lj+(n9(1&R9NUx8Od zjG%pL+}2ijN}%-Ws2#Sk%xd}#S{#3hG03=n(uEEYqB6XaQ1Y9ls3U2AK2_dlbbQ~C zn8NooArItVV%PboQ7+M=j(9Hl;kD7*0Q7mbEsv~}Vfxk+d<6+fHsj_OChs?HC@=Ey&UMEDl@n!o z`&Fa4OI@2BWrJ6dzK1W_tzvaGCgjE^o+S|%koix$(~d?jr5lTBcJ_PQB#-z7RzU15Fd|5{MhK2zkDj|lDp1;?4R*> zv=w2wM>L_Qpg(@{ZCSt#ce)>r5RnP2lBBj*IX_c1L?2$Mgt~B`xJ)cf zW1GdIbfne-6c6{VzE1Hld!9QVG|BiT9uaGgO^(HHDGaRSG6$J1SSO%C3{jY=ga7=@ zmZo#orGGXEc9PA8>#fLFFW8}mTL^_sxa?ri&aEfZQxIT%#HeFS-yE(R`^qJBS$SU? z`+!3}?$7Ifh$~8c|K*Z>JOUWkj8E~0x8VSg&^=w#8Dcv@m(GT);DSe_Ff7NoaA$G5 zZmco^vHoXgP`tALz%+q(QYz)*C%J*K9p6oSlc_gx>yRflD4Dn#lqszYOlCeo>S~`_d~}UW{!!; zJD;4MhKkldp+=q+(eZkdd{n$!PcKc8*j+OznQ@doow(Ans8Mcr0<%(h2+t@dI<4v6 zbx7U0YW`5Ms!D1!sZY{K1#aTBm3s#Rh0>iFl0?oPp4arT1>m{UvL*VkY2{DXFF`r# zv@FaYz>zS_>?j)U2A^}q7(8XYJcuhz8Qa`zrb!K%CMe!>nR~(LUb1L3_w+E??%r@w z?>WchfC1T{B+)uvO7XjKB7G)pL}n%mDBDvF-=(fosfzwj-!dnwixcj^9>Eoe;OMagDjJ7?($sOo?s!)uS&BnVgZ2PiWBe5Wr~(uw z=F|(NFY^9wQ$h7yqcB+*d>x~dU2GJO8y2qGiIW>(g`3oEZ4TZM!zo@_Q3Yx6IY?Mg zrtD<~;!e~}AuaaWl z%Rjua>sB10;Smtzj6S)PCxny19QNqaHPPHe7`Vx>c@uO#ue(spfb z%mDuYT=7HA`}GH_2roaPi<&XXsgV0}ODTPH&6ECR$I0C;T;8z&!p>oi)y z;f%^uF-cBx{82~Ms?TQ$YXQibbO)78;C*UYY&Io8XSmE9gHrPLHd+pE0&rD&EwydG zd2~t9csI`Hm81&fu|=qo*(bpWK5_O(OZk<@_$xIFOEcYkpB^8*qr?C|&{s6=wu9by zR|0z8!eELz%b*Xt2uN9P+h#dYEiyH;+*9^{5f{vLj-|5NLV=5wx23vtmo{p2#65xyG7 z)+;sS|9iGBBJe%=7o}YujmWgJ)Ly?>-Ov#uQ+eM$d(=Acn|sOWyZeuQSEg(Z-_(PI zl&`?; zo+?bfr6JxVh94j5mkr8VcAd;LS@_bViO$2LGE6P@S6l@NslG5O;E#htZNi-=Fwp@`WDnsdts=nGqGEqpG zE;_FzJj%=}H&^cQ?#D9Un`fPgkECl!T2V%(w|Clpim$wpn_lN!PT@nJu1Pfd?`0(N zJV`L?QhBb^XwUmu9ts3RCvG7!%z=OJC57dJy$0fE+vPzgd6_c;s&VeN4z+d4Xg<>k zuf_x@p3_;P^5?6aZY7s8?sOd9xznvOdV5}AKhpz>PvPu7li=Q3eTpL;UoeF8=$zXf z>%TrbA+R+3MDS$Ih(lfcr7O@tDugft?Q%vl3CCFAa|S*|qvafP(dE;|u|H83i$aOR zD$5#pCbPzY9J~FG?D_A^`(-EEIpzSILQLM;sqv;M?i3o>VKasst@0~%mn%$Rd+VK( z=7d~^s2KjL?ECOgOa@xxBD}(OBGR-W;igz6`|_>!oT=2!nikUig~988&fT4_&Sxn6 z{2GmODq9I!Uhpg3`L%HFM72^{^>7a;@NS38w_KY?ZbUir4bHHee5=25<5BT*w6-!t zu4#H#jlP)jLDr4Y!qn3~nWE#7N-6$;gO{Qccnc(4zPSjvwXLn*Q&EY`$(evZ%AJO4 zF)(>|WUY7bSPPWI(DPYc2P(-8R`=b{D5xg!N>s^bNv`9bz@zJ_pP$A0j4c!=G@CGK z64yp`h~W&T8rbA>X1`-x5e2Lh<2CUmC`xua&j2-QB!x_`pqs*Ebl2Xmu7qdEA{G^a zhlcr0;YULuGSv(`+Hji3R%0LBx|T@Lh_%I?CxKtJOV#AsI@CHbmc}>PE*S6Bu`g=@ zR$i)secKq~Dq8dUKL#EeTA1(2Yq_$i_E^iU!>+>n7p?SYHYSx!z0mVVkQ>F zZFzT-f9%Y^e!{BlM>AaKl%mpQPagphD;Cii+~apxq%{ohlYe-=Nlf&olR}9JH&Pq( z3iUbCaZFu~6H(=iK~hn4icv}pZ~hQ+GgC28OwWe`^W+&))ZpAV12|I&3MxHZf3Veu zs6~E8eG9aEEDwyovg=ErbO~+D1ut+`28DsIeWl1>&y&@st7MvCv!O{4i2*;X=v#@TV4W*7@f@2dGz$@#zAaJY{$V7k^)5w$K_j-)MeHFl9`4znb*q$J>_$te z+9z>EpZvC^|4dEIq>`n06?nE?Ca?qZkMhxC7@JkY=RVUd0+A-6Bjk+pFFy1yAsFg? zwI>%#66KB)Y1;0!Mz4SZ1JeM#=X_ELJ#F{p5Gzx=iiNFjV@)keyA$OfysN13X7C@Z zfy-hiE}$>;uGa@n?&KCFXGhoEU~pgsW)#k99-I8D;73Zq+mK_%H#7l)a2es={94L1 zOBAVRdUu1q_)eV2S2xt|0OC(+!!=;XsDJY-`6FN>_*HOOC(5p`4ePNkW{iTX74gA8 z4!TjzGrJ^WD7a8w;;OKdhWys*Dyd@LKAMj%3##naU`#McL?pg5zL`}eao(WQ3!U`D z{+&k)8VS?rX)WbP6u#w^>+aZE3>K;vamxgAdtc6A=Dq6>8YKY9`_lf>JR zCJoo`{^#^mATj3*K=+-vhyIgyuGP!c%SuP1)v>*+GKgmGX}(-gPp9j* zr@f~3KDK>u!o+{(R{r0i^y>YW^ioSoi4TMkz}8Ggro?i^VQg@RDc8?9*6H~m-r%(| zkbyqs?(z@1nf!~R;KL}lNE5YBjkP|Wq9(cIFYCr>MofGjKwI$H z)G?3DXOQ&xZ+BBA;7kt%if@_R3h}b37?jMPhW>o464Y_V{83{{zd0=qB~U_!SRyK+ zJ_HXUIXF*obmhI5yW6!NAS;1g;yn0I{1e(} zH%$@HgawRv|M%Pst`TIaEtB*b^Xi8ze3tQz3U2*h?P5(~cYDlaEglfV<%}NutmQe& zcsve#pTv0Da+9zP2ERLa?bJ0bIazCamJ&*)A(oK#4_ z2I*T!-G66MEVncK`LTd}l)2GXNKs10OQSOG490@eJ7KjS(QZ8hwdAmoRfy#85KPA| zk4w82wgVK#$gey;!O?bcrd_TuK-=oB>+%2@i$a|Q%&Fgy3vpV`5bdsl0%NK4J^{O= zn}s5Q>hc6pTp&Q0PTa$rD!oUg2rGyU=jdRtW1lFr>SkG7G}jF`rqZ^7p(2yWh++)!g*&)mIogD$kKVU3)hFv4e}r~?kiN1fSNV|$o= z$3DGnDIabKPjIU`N9p`CK~}$6Q0B!Wb{n`j@ROQt5E0hYHq=2serHEz=DX&&Z~@-_ zHmdZ4poM8G+yv2otH}uxq(o?LV=);6RGO%3Lf2E zhP=|!zGbp6@n5{(5<)b+!RPl23e@W?>GZd`FECdX9xxasbR8S!0@#3wvxU}|<-l}I zPeJo-2ugoUZjnGmhwjn(M}JvsSC9>*YYoF3_kX*SLBlY}hKpbqYIva;CjyGx9mawM zL;H;VM-y^hP)-cSEB`S~l_7MTsrz|w|D-0rp3lRhXOy~AB|$ZsfwJ$AfK4bLzPxSn z+d3BtMb5T-$CS!#0asN{NCq2E6ar=)Qn)Qw)?t(+NT68fAGbIhFbxa+>lBdm+@UYN z@UG(Ynrzv=TRnG!Bl@iI%H@XsJnV|8qWj#-aB(wxX>I~7kmzOI{yuh#Usf^UYOCRj zd_{N8?5kjxI2h8=qwnwrXFq#2ytedGeq1Vj3HQEm6uly6biTeRIO-Vw{lA;jwPb}K z7x4&ekscS>@Y^=&m+gMH6$yd#dig46SDnyl_yF?hMM9zh`gdQ}F1q=&LHE-lUesGt z8jVTq{-*^SnF+4f;DyO0c%(q{Xqfv%M&9BN3*0p}n_JNc_31z41-Z((6w%V20x)#x z=%)^6G0_Cyo1GY8E~^sufFdOH2ezqP{TUkTJD^xVT7nMg5f~-Y$Ii8;jI{BEsj)f= zzG9+4JaoKBUCq%99Du1ZZXIasLGO5?oj;sgpbRxYs|Tlo`Fa$s?7hm}X)UmI^qXjr z=IJazbJcLfV^_1XtX=X9tZ`o5gJuQO&}g~${w8WeU|BW_L?n6Hobn`K>Bf9d)$6S9 z9=ufDp`SdvdUZ6dM8@Uy4D;~DB|U*sbbgA%NZN77U0NSJ`&fyGhCP?EPfqvNizpYU z$Bs9r(wfSqZ7%#V!=E=&`}8iT<`$6icdWTelrfGqx4Qn>?u2#}8@AS~$a|g=d%N!r zy|-xIF7I;E8~9FM*KiWiN?bsCIcenMG&EsDBRgK+7SCkxDnl2uXpX!a@cUir6;^;5~N{`wsL0oth!4b0TYw(_GoEn9y1mENlhCaw}u+`m!^ zgq8t~mq~+60!5HXP(o{hXQEWj_K~)wM!wVir{;|nQT0kpXi8>236kBql!jEWm;b1^ z-0~4~txsAgJy4FU1GF}5D@&R9o+kO(G8MksO|-FfY4!!B5drKeSVaE_o{VnbdBaH6a4*9fgjJ#eBbEN|i+>Ow|{KU3>G2S@7P_>I_hL3K68 zle$b;l~SXQA(tKkZ_t1uuL32O|90HNhOP{!Lm$W`XnD>tu%d)rl+eBRpUdHYFU_bX z)4`x{T0Ox)F-B}2^XFu@23rg_@0B_Ir2N%ea1(s}2MthETugi|n5r0g@*3l;d_BaJ z+c7<*{)60OPLNDEm62Gs0o?`Bns zQf=K9Ctj@7-e2(_TDo9>dA{9ndAlnLhaT+La_J}uY9>-fc(9zTKgVFSfG)Mp=+EY?cmU^?>yJ}spzyFJM?vf< zux*_<%_p0fQNRqXS}bB`FSqx1JEYSYXLgA(bGq7}AF9nAX~VsikTcq3CJov(hd}fB zkGF92XDvOp4@?}nmM?YXSHFlx7t0EWwKyxh*Ef zC9jSB^2(e2$uP87Rx$7rx9#JYC!awuTEN34;Gzp?$xyS4hhOU`m_wf!uaTL6)J(tn*bcgF2I{=mwIYA1})Z*3e**^t$Q5Q zNV)eSF?R&&2Y>+Ly!XsmeA!V78xVD~$YL7)LEhS@5V8Ol9HkaS7kpSPAM3wLQ$fZ0FK|2SN^LaCYGtt7dr!WojI|lYITU>@|~$-EBTXy z1rKA1sc9D@5*{u7JGUb&YCww6T2}Z%#Z?+g@BE2{3u|D6DVNrF;8^v7872St1Fl8Z<%wGI9UO#(DORDeL0_!rX}RYsM-V>wXFRtLCVV_$ zT-0(o9V&3UMFN7(t>|Iv!uA2&5uP|yG7FpXJv-i&hzva!fg*u45raa9IyM`kahym+ z^2l8vBO%tD5Jw}#GY=atzg6#mK8%8 zH^d{R@j*+27lw5**BK5?VH8E~pzz|6q|*^t7x^zW#;u+u^sbNdyG6|;BFku~MA{=K zgbec2bi?KyUK%XdqUnzW2%<;w*@3fYPXjMWb2-ZS=ggVn@+CPS~|8Rg9 zKS4E=OTzVtooSY$B!#2zqXfFw|ADM8y>MfpB(mPiU}Z;*WCj5MGgwVMz&8CYg_h9| z#Ot>`$Mf_;yduu9y8X6nRZFKb(mvl{{;b@K(n7bu)^l@#2(V zCma|8e6nKdMnd^MPAP@6r-uY65E?+G?(1@Q2TV%6KX0XUe`x4nY{CHjP0{bWo4f;8 zZ`<)WEq0EJDt$anEd93@!MdgZszp_{eC?czI0GMxQ(f1PzL{<35B1;*cX_Aoakix z<$O*6FL^mXMcL=U?k7fEie7WH&wXy%rhOr#eVm;31Qw-GUMJ0gUX`{ z_Zk~jMob>dGvkAL!jIh2Ff-!oWp-oUHj@LQ2!n0nQHNwf`q z>D8PePilFUUEsjf9J;`&39hh)dR;-{m;Yk>}*Bo@P*+ zC4s;S>s<{PyNw*U=!{*i!du0m*A~WHX-s*#DnB?--@9)fC;tHWj=yn4b~u6DZk>y4 zwz-7+E~p8IL<;88?k?JXU=X|?)dT2G6wwJeYb(Rb_&gHLfWI;@&SPe8C`aIN;%Kw+ zZRubRG|6gBi9uJ9oV#frc2j@6n)J-X+}|t(IEHAFp3$`E;;z1Qu)GyTacADl%8^6U z($Rp_w3yf*7keka!?~x=#F2ygd+RucTd2V~MnvbVbXigPks_qzBb3qJlZfE&2=;!J z-J>RWxxp;1;$a!;0;houjq{I2S^f1Ni_R*PSZ-iQih&*eE`aK$UPakA@|av#BXFg( z!R_yTWys{*#`M4N4^@+J)g8cRenJb<7n_Ob#Lc40N=VGxY{|F@9_W5<#Ty5Hu^%5c-b3%x?Q zZ{m|F#Z9_9QesLfdtYRo%g6n_IiHG@!DoSKNkI9Aknf|3yIr0yADT(ck>=GKX~uMV zTxi?BF!wiKfbs$n9r=`zZt``Q=({>#;7*k{f`~+@?coiee;m49d2sOzSn{0V4|$7_ zyAFqJHUuCn7&rZqiG(9Fi2h78Ur%bVjOb&zR|ZXrezty8d9l0#(plGnD6*t=mvc$_ zq^>zn(L(2mpBoHWk9=nz7qM&%ma|eIUV@i02l&hJ00;WHOW{#4NkUZ+&tpXs=7Li2 zxYNR2$OETz@GMzU@D-w|+%W(c^C-K^74-*jN?%qrLy2BGapQI3V06Y+_O!>04|yO5W-;Vcw;gG!nodS_ylskiaE6^B=gUggqErt z{Mhzr`GT2|mKWUUHTu)HqZ>Fe$OTxRT-nf)B#(NmcfOsaccby{I`sjhiM+})2xE?I z{tXEDFN+dDmVfE7sWdHf$5?AC1-bFVLmrJW8E#7PS5S~Af$}vEUZNtmL(V&``iwy|3sZQ0 z7phjL;jYd_G`U$wkVl1zj`5mDxZewlDg^l?4PCw|BY}ndK&@bzwN z<+J~-nbT|a3q0GXd5;=-SzJ}wHk6H#{O#VG0WA~;XChgtksBAR->&^|{=10R9=lZ| z52d)@`*TrGrA#=0=qhKU}cxU7K|#<6q5gT-PtEl+7kv7DQR}{y`e+>GAms)t#H6 zQTJyV#}x||$qNjUhUkk7^@ar&?hZY;g1U8!Y5a~d3 z=%`Swx;+3cH%`QVyi29Cj64`}Pq&|yv6e^(<2{`LZx^eWTmQB-D*(=>+-sGcgHl}c**`=>Z~8?!0+if|M3O&X z2yGJ6jD;}vU1%Y%6?&h|>ikn`1Ii7iE^@y}M$XaYa)~CoUK^)&%>DTr1qA zT6ICguqd;3p1}bBa`IvgsR5^o40! z&i{kxsTTOgg$8vA_P^B75Xo+pT~1$YX#NkvUO6zF9}JKEw}EdjHy8-op;4p4{~(qD z!`bPJd+GlT-%tUMBfQda=*gHJ(XGwbhbi1nbK*_sH0E%W9IT?Ub%?N<5^_6EK zEU=N5+*N+QR$UmpLGob#r~nQq_LQ(OM-;}djZE@`X^cR2X?|n| zq~Y?D@kab#WGubjV8CgFMj_7s-J0QJu$7CH;&=n?=R4FrDqvnHzkm1!gIg<;INt34 z*+ZZm^0DGCRi^YJjBT=so2;QbKo0-y0H;d=kS@=jqh1Ea3b{?w2?XEN7|(ke#EBdj z{yuL)=6`A;|I|08PzLeov_BCuR)zGSIh3Bwib62Ifl})>If(;E_`pK){zBuJ=R}#^ zXPc-(G-rtmGxnU}GB!%MMlK=e8X(`A#>2D;o-O?kG6k<}CuIFD1%JZeMt}dwOp! zfDvK|SmXl8mOI+_+}pQMC9h@4-!*Ufs9#9>CRj_kUDcCzb3mQkF&zjnNKuzV$#@y$ zg3L3^l->yQ6#W`Pu&1}cNgV z(gq!Bp3D8RmYw#r-!(&NG$nQ7#=7*VCg-;-$d_%BIb}o{F#B)0G~aK9(hP!x)XuFc zB*yPE=!AHbgMxlvFP$*pL8FiZf)!e_Hg}zTk_-WVZM|1&%F-=@`S1SlP6cdTbs*2- z_!O{6-u%;Sa3a|vItO4m{9j6&7)$7>`TpT%77A?J`SMAFpmf=eQV5u%X5ziBq~=F6 z$N>(h8z`*hO?20C$;tq4JSZI11zGBntcKPA*Hpdt$>@LeBH?D%d4NS=6KlpJt!J;3 z&-9u-o8xIp@vH|xp_eFX`}lVSH`yc;OXY86tg>_(<6+TXRr87WD`V!#B19r5U^=)- z3_KLtK*0;NU5Y!nt%Y^jFL@{O!@B_R6F4S z&5n4{O%B>8o3d2&VPL8!n3_Om%H$93ykml;Kgj0_hlJaLlb+rbNICxV`yqfswmD+| zE%~4u!4YK{@4tNlx0~pS2UGHM^#O<)qZA*a!D1JAHvy6jZ!kI08S+tzL*mJSQ>$1X zg&uGMYJ;SCxCxzK3dETF;aQOF+a7_1E0J&by^#bu69IoSh;a<)l654j=Fe$Y!yzBl zLurJdcrGyC__gm%NFQKlY!?m4{g(wlF;YI~rr-|Ezo_GN_w2(y1h_wJZH2X#8xIPl zLXqHNKew7h;i*8T>DJ@Qi=8r#7S` z_lW}ZD7BllmVq5gpC8+tb{0-#R!axMEni}eOdsBE(yWC^k7=?J=!+qPW?urahxDaj zok<7jlcqP#0NY6Y>ZwPS+V8_#uzPnSo2uz6zhL}+LTj^XPvq}ugYCV1%Yjy?i@M!UEDB!3aJLGMbbmMA`@xC z=ID`XkI8@OC4s*#fxfaxafpq2q*#^{C3kNvz3Bw+aS;h%Iscno#j#o?rJ1M=MP%BR zkKRMe>l_f9hn-24X201Wl-vzs>f8|N3o{JU%;1k3V43O2NU=~>dL$&1trQYUamoZ@ zEo4Ix`0gzYg?N$)}@cSH}vD<&`E zbu`6{xU77Y)MvC=2EgzO-71oZ6CeJ>gqwNGM^dNKvGJ88Cf-VTPtGP@mfOJmAa7nn za2YgUY_c%NxPj9`crz&7!JSUzc|^~8mCpx7Pg)`Pp^Ekfp^3lhk6KjlqyNi_;UW|_ zp?3C)n_n+yLoNF6ZlmbFz0123P+BAuo*1BFM*ikd@QrL~(OMoG3@uZcun?U5CC!5s&eBjv^aH z@1Q;^zC!&9K2sor$;a!?o2yJ#!)k^Q-YlKhTgIki!a0$^a(xh z3>P>};2Qn1B4KuZEDa=M&1|XMkwK=T3FcxtcMn737jHfMi`+t@Xs3+$GSjp^me%8BCdy6rI`qxyKKm=_ zHoaZwJx@@3BhX$bS#>GXMyyOb2J1tSr~QFXCq{eD)iCcT%Lo=R_XV_u8E~qwhFL0Z z!l@0YzArEl+m$An{~cJvhL1M3{{E;o#^G4jGdYWJ>FjY>19R>e8yq4!a{9m5R2#WA zmBrC%ItFe?Kt2NWqXQ$gtG!aTZQj#%=o2R>+l2&j!);2nh zw|Jm{&iCAVIsjp)+R)I#MJwPwH4Y;nR%m;&jYnjrp9#>Gs4Z*kc_^45Ky>xq~O-x9H6$;mcPed7xd|t Th1$=edkI2A!nbOJ$-;jDTuvs< literal 0 HcmV?d00001 diff --git a/docs/contributing.md b/docs/contributing.md new file mode 100644 index 0000000..824b51d --- /dev/null +++ b/docs/contributing.md @@ -0,0 +1,129 @@ + +This project follows a fork and pull request syle of contribution. + +### Creating a Fork + +Just head over to the GitHub page and [click the "Fork" button](https://help.github.com/articles/fork-a-repo). Once you've done that, you can use your favorite git client to clone your repo or just head straight to the command line: + +```shell +# Clone your fork to your local machine +git clone git@github.com:USERNAME/FORKED-PROJECT.git +``` + +### Keeping Your Fork Up to Date + +While this isn't an absolutely necessary step, if you plan on doing anything more than just a tiny quick fix, you'll want to make sure you keep your fork up to date by tracking the original "upstream" repo that you forked. You can do this by using [the Github UI](https://help.github.com/articles/syncing-a-fork) or locally by adding this repo as an upstream. + +```shell +# Add 'upstream' repo to list of remotes +git remote add upstream https://github.com/ublue-os/yafti.git + +# Verify the new remote named 'upstream' +git remote -v +``` + +Whenever you want to update your fork with the latest upstream changes, you'll need to first fetch the upstream repo's branches and latest commits to bring them into your repository: + +```shell +# Fetch from upstream remote +git fetch upstream + +# View all branches, including those from upstream +git branch -va +``` + +Now, checkout your own main branch and merge the upstream repo's main branch: + +```shell +# Checkout your main branch and merge upstream +git checkout main +git merge --ff-only upstream/main +``` + +If there are no unique commits on the local main branch, git will simply perform a fast-forward. However, if you have been making changes on main (in the vast majority of cases you probably shouldn't be - [see the next section](#doing-your-work), you may have to deal with conflicts. When doing so, be careful to respect the changes made upstream. + +Now, your local main branch is up-to-date with everything modified upstream. + +### Doing Your Work + +#### Create a Branch + +Whenever you begin work on a new feature or bugfix, it's important that you create a new branch. Not only is it proper git workflow, but it also keeps your changes organized and separated from the main branch so that you can easily submit and manage multiple pull requests for every task you complete. + +To create a new branch and start working on it: + +```shell +# Checkout the main branch - you want your new branch to come from main +git checkout main + +# Create a new branch named newfeature (give your branch its own simple informative name) +git checkbout -b newfeature +``` + +Now, go to town hacking away and making whatever changes you want to. + +#### Commit Messages + +We use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) and enforce them with a bot to keep the changelogs tidy: + +``` +chore: add Oyster build script +docs: explain hat wobble +feat: add beta sequence +fix: remove broken confirmation message +refactor: share logic between 4d3d3d3 and flarhgunnstow +style: convert tabs to spaces +test: ensure Tayne retains clothing +``` + +If you have multiple commits, when [submitting your chages](#submitting-a-pull-request), make sure to use a conventional commit style PR title as this project does squash merges and that will be used as your contribution. + +### Submitting a Pull Request + +#### Cleaning Up Your Work + +Prior to submitting your pull request, you might want to do a few things to clean up your branch and make it as simple as possible for the original repo's maintainer to test, accept, and merge your work. + +If any commits have been made to the upstream main branch, you should rebase your feature branch so that merging it will be a simple fast-forward that won't require any conflict resolution work. + +```shell +# Fetch upstream main and merge with your repo's main branch +git fetch upstream +git checkout main +git merge upstream/main + +# If there were any new commits, rebase your feature branch +git checkout newfeature +git rebase main +``` + +#### Submitting + +Once you've committed and pushed all of your changes to GitHub, go to the page for your fork on GitHub, select your feature branch, and click the pull request button. If you need to make any adjustments to your pull request, just push the updates to GitHub. Your pull request will automatically track the changes on your feature branch and update. + +### Accepting and Merging a Pull Request + +Take note that unlike the previous sections which were written from the perspective of someone that created a fork and generated a pull request, this section is written from the perspective of the original repository owner who is handling an incoming pull request. Thus, where the "forker" was referring to the original repository as `upstream`, we're now looking at it as the owner of that original repository and the standard `origin` remote. + +#### Checking Out and Testing Pull Requests + +There are multiple ways to [check out a pull request locally](https://help.github.com/articles/checking-out-pull-requests-locally). This way uses standard git operations to complete. Open up the `.git/config` file and add a new line under `[remote "origin"]`: + +``` +fetch = +refs/pull/*/head:refs/pull/origin/* +``` + +Now you can fetch and checkout any pull request so that you can test them: + +```shell +# Fetch all pull request branches +git fetch origin + +# Checkout out a given pull request branch based on its number +git checkout -b 9001 pull/origin/9001 +``` + +Keep in mind that these branches will be read only and you won't be able to push any changes. + +#### Automatically Merging a Pull Request +In cases where the merge would be a simple fast-forward, you can automatically do the merge by clicking the button on the pull request page on GitHub. diff --git a/docs/developers.md b/docs/developers.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..14a568f --- /dev/null +++ b/docs/index.md @@ -0,0 +1,22 @@ +--- +hide: + - navigation + - toc + - path + - title +--- + +# Yet another first time installer + +![](/assets/logo.png) + +This application is responsible for installing Flatpaks on first boot after a user finishes installation. +It is intended as a replacement for custom zenity dialogs. + +## Project goals + +* Config file driven via JSON/YAML +* Support for arbitrary pre and post-install commands +* Configuration driven screens +* Screen independent state management with ability to set defaults +* Extensible with drop-in Python classes / plugins to extend functionality diff --git a/docs/reference.md b/docs/reference.md new file mode 100644 index 0000000..8026237 --- /dev/null +++ b/docs/reference.md @@ -0,0 +1,3 @@ +::: yafti.plugin.run + +::: yafti.plugin.run.Run diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..ed5ef50 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,73 @@ +site_name: Yafti +repo_url: https://github.com/ublue-os/yafti +repo_name: ublue-os/yafti + +nav: + - Home: "index.md" + - Getting Started: "getting-started.md" + - Developers: "developers.md" + - Contributing: "contributing.md" + - Reference: "reference.md" + +theme: + name: "material" + features: + - content.action.edit + - navigation.expand + - navigation.sections + - navigation.tabs + - navigation.tabs.sticky + - navigation.tracking + - toc.integrate + icon: + edit: material/pencil + repo: fontawesome/brands/github + view: material/eye + palette: + # Palette toggle for dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: pink + accent: teal + toggle: + icon: material/brightness-4 + name: Switch to system preference + # Palette toggle for light mode + - media: "(prefers-color-scheme: light)" + scheme: default + primary: pink + accent: teal + toggle: + icon: material/brightness-7 + name: Switch to dark mode + +plugins: + - mkdocstrings: + default_handler: python + handlers: + python: + paths: [.] + options: + show_source: true + - search + - git-revision-date-localized: + fallback_to_build_date: true + +markdown_extensions: + - admonition + - attr_list + - def_list + - footnotes + - pymdownx.details + - pymdownx.emoji: + emoji_index: !!python/name:materialx.emoji.twemoji + emoji_generator: !!python/name:materialx.emoji.to_svg + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences + - pymdownx.tasklist: + custom_checkbox: true diff --git a/poetry.lock b/poetry.lock index 9911c0f..3f8263f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -19,6 +19,18 @@ docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib- tests = ["attrs[tests-no-zope]", "zope.interface"] tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] +[[package]] +name = "babel" +version = "2.12.1" +description = "Internationalization utilities" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, + {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, +] + [[package]] name = "black" version = "23.1.0" @@ -67,6 +79,103 @@ d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] +[[package]] +name = "certifi" +version = "2022.12.7" +description = "Python package for providing Mozilla's CA Bundle." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, + {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.1.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "dev" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, + {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, + {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, + {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, + {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, + {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, + {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, +] + [[package]] name = "click" version = "8.1.3" @@ -173,6 +282,84 @@ files = [ [package.dependencies] pygobject = ">=3.14.0" +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, +] + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "gitdb" +version = "4.0.10" +description = "Git Object Database" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, + {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.31" +description = "GitPython is a Python library used to interact with Git repositories" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.31-py3-none-any.whl", hash = "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d"}, + {file = "GitPython-3.1.31.tar.gz", hash = "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[[package]] +name = "griffe" +version = "0.25.5" +description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "griffe-0.25.5-py3-none-any.whl", hash = "sha256:1fb9edff48e66d4873014a2ebf21aca5f271d0006a4c937826e3cf592ffb3706"}, + {file = "griffe-0.25.5.tar.gz", hash = "sha256:11ea3403ef0560a1cbcf7f302eb5d21cf4c1d8ed3f8a16a75aa9f6f458caf3f1"}, +] + +[package.dependencies] +colorama = ">=0.4" + +[package.extras] +async = ["aiofiles (>=0.7,<1.0)"] + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "dev" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] + [[package]] name = "iniconfig" version = "2.0.0" @@ -203,6 +390,39 @@ pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib" plugins = ["setuptools"] requirements-deprecated-finder = ["pip-api", "pipreqs"] +[[package]] +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "markdown" +version = "3.3.7" +description = "Python implementation of Markdown." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, + {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, +] + +[package.extras] +testing = ["coverage", "pyyaml"] + [[package]] name = "markdown-it-py" version = "2.2.0" @@ -228,6 +448,66 @@ profiling = ["gprof2dot"] rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] +[[package]] +name = "markupsafe" +version = "2.1.2" +description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, + {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, + {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, + {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, + {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, + {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, + {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, +] + [[package]] name = "mdurl" version = "0.1.2" @@ -240,6 +520,157 @@ files = [ {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] + +[[package]] +name = "mkdocs" +version = "1.4.2" +description = "Project documentation with Markdown." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs-1.4.2-py3-none-any.whl", hash = "sha256:c8856a832c1e56702577023cd64cc5f84948280c1c0fcc6af4cd39006ea6aa8c"}, + {file = "mkdocs-1.4.2.tar.gz", hash = "sha256:8947af423a6d0facf41ea1195b8e1e8c85ad94ac95ae307fe11232e0424b11c5"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +ghp-import = ">=1.0" +jinja2 = ">=2.11.1" +markdown = ">=3.2.1,<3.4" +mergedeep = ">=1.3.4" +packaging = ">=20.5" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"] + +[[package]] +name = "mkdocs-autorefs" +version = "0.4.1" +description = "Automatically link across pages in MkDocs." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs-autorefs-0.4.1.tar.gz", hash = "sha256:70748a7bd025f9ecd6d6feeba8ba63f8e891a1af55f48e366d6d6e78493aba84"}, + {file = "mkdocs_autorefs-0.4.1-py3-none-any.whl", hash = "sha256:a2248a9501b29dc0cc8ba4c09f4f47ff121945f6ce33d760f145d6f89d313f5b"}, +] + +[package.dependencies] +Markdown = ">=3.3" +mkdocs = ">=1.1" + +[[package]] +name = "mkdocs-git-revision-date-localized-plugin" +version = "1.2.0" +description = "Mkdocs plugin that enables displaying the localized date of the last git modification of a markdown file." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mkdocs-git-revision-date-localized-plugin-1.2.0.tar.gz", hash = "sha256:7752edd7c4dcaa9383e9a5b6a4f729831a62d604b0c43b319331127720c6a2bf"}, + {file = "mkdocs_git_revision_date_localized_plugin-1.2.0-py3-none-any.whl", hash = "sha256:540b9c930d8d48630c090b72ac2c3900ac2ed0799b23738a33b88e31f5198fe7"}, +] + +[package.dependencies] +babel = ">=2.7.0" +GitPython = "*" +mkdocs = ">=1.0" +pytz = "*" + +[[package]] +name = "mkdocs-material" +version = "9.1.4" +description = "Documentation that simply works" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs_material-9.1.4-py3-none-any.whl", hash = "sha256:4c92dcf9365068259bef3eed8e0dd5410056b6f7187bdea2d52848c0f94cd94c"}, + {file = "mkdocs_material-9.1.4.tar.gz", hash = "sha256:c3a8943e9e4a7d2624291da365bbccf0b9f88688aa6947a46260d8c165cd4389"}, +] + +[package.dependencies] +colorama = ">=0.4" +jinja2 = ">=3.0" +markdown = ">=3.2" +mkdocs = ">=1.4.2" +mkdocs-material-extensions = ">=1.1" +pygments = ">=2.14" +pymdown-extensions = ">=9.9.1" +regex = ">=2022.4.24" +requests = ">=2.26" + +[[package]] +name = "mkdocs-material-extensions" +version = "1.1.1" +description = "Extension pack for Python Markdown and MkDocs Material." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs_material_extensions-1.1.1-py3-none-any.whl", hash = "sha256:e41d9f38e4798b6617ad98ca8f7f1157b1e4385ac1459ca1e4ea219b556df945"}, + {file = "mkdocs_material_extensions-1.1.1.tar.gz", hash = "sha256:9c003da71e2cc2493d910237448c672e00cefc800d3d6ae93d2fc69979e3bd93"}, +] + +[[package]] +name = "mkdocstrings" +version = "0.20.0" +description = "Automatic documentation from sources, for MkDocs." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocstrings-0.20.0-py3-none-any.whl", hash = "sha256:f17fc2c4f760ec302b069075ef9e31045aa6372ca91d2f35ded3adba8e25a472"}, + {file = "mkdocstrings-0.20.0.tar.gz", hash = "sha256:c757f4f646d4f939491d6bc9256bfe33e36c5f8026392f49eaa351d241c838e5"}, +] + +[package.dependencies] +Jinja2 = ">=2.11.1" +Markdown = ">=3.3" +MarkupSafe = ">=1.1" +mkdocs = ">=1.2" +mkdocs-autorefs = ">=0.3.1" +mkdocstrings-python = {version = ">=0.5.2", optional = true, markers = "extra == \"python\""} +pymdown-extensions = ">=6.3" + +[package.extras] +crystal = ["mkdocstrings-crystal (>=0.3.4)"] +python = ["mkdocstrings-python (>=0.5.2)"] +python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] + +[[package]] +name = "mkdocstrings-python" +version = "0.8.3" +description = "A Python handler for mkdocstrings." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocstrings-python-0.8.3.tar.gz", hash = "sha256:9ae473f6dc599339b09eee17e4d2b05d6ac0ec29860f3fc9b7512d940fc61adf"}, + {file = "mkdocstrings_python-0.8.3-py3-none-any.whl", hash = "sha256:4e6e1cd6f37a785de0946ced6eb846eb2f5d891ac1cc2c7b832943d3529087a7"}, +] + +[package.dependencies] +griffe = ">=0.24" +mkdocstrings = ">=0.19" + [[package]] name = "mypy-extensions" version = "1.0.0" @@ -411,6 +842,22 @@ files = [ [package.dependencies] pycairo = ">=1.16,<2.0" +[[package]] +name = "pymdown-extensions" +version = "9.10" +description = "Extension pack for Python Markdown." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pymdown_extensions-9.10-py3-none-any.whl", hash = "sha256:31eaa76ce6f96aabfcea98787c2fff2c5c0611b20a53a94213970cfbf05f02b8"}, + {file = "pymdown_extensions-9.10.tar.gz", hash = "sha256:562c38eee4ce3f101ce631b804bfc2177a8a76c7e4dc908871fb6741a90257a7"}, +] + +[package.dependencies] +markdown = ">=3.2" +pyyaml = "*" + [[package]] name = "pytest" version = "7.2.2" @@ -471,6 +918,33 @@ pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pytz" +version = "2023.2" +description = "World timezone definitions, modern and historical" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2023.2-py2.py3-none-any.whl", hash = "sha256:8a8baaf1e237175b02f5c751eea67168043a749c843989e2b3015aa1ad9db68b"}, + {file = "pytz-2023.2.tar.gz", hash = "sha256:a27dcf612c05d2ebde626f7d506555f10dfc815b3eddccfaadfc7d99b11c9a07"}, +] + [[package]] name = "pyyaml" version = "6.0" @@ -521,6 +995,113 @@ files = [ {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +description = "A custom YAML tag for referencing environment variables in YAML files. " +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, + {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, +] + +[package.dependencies] +pyyaml = "*" + +[[package]] +name = "regex" +version = "2023.3.23" +description = "Alternative regular expression module, to replace re." +category = "dev" +optional = false +python-versions = ">=3.8" +files = [ + {file = "regex-2023.3.23-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:845a5e2d84389c4ddada1a9b95c055320070f18bb76512608374aca00d22eca8"}, + {file = "regex-2023.3.23-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:87d9951f5a538dd1d016bdc0dcae59241d15fa94860964833a54d18197fcd134"}, + {file = "regex-2023.3.23-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37ae17d3be44c0b3f782c28ae9edd8b47c1f1776d4cabe87edc0b98e1f12b021"}, + {file = "regex-2023.3.23-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b8eb1e3bca6b48dc721818a60ae83b8264d4089a4a41d62be6d05316ec38e15"}, + {file = "regex-2023.3.23-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df45fac182ebc3c494460c644e853515cc24f5ad9da05f8ffb91da891bfee879"}, + {file = "regex-2023.3.23-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7006105b10b59971d3b248ad75acc3651c7e4cf54d81694df5a5130a3c3f7ea"}, + {file = "regex-2023.3.23-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93f3f1aa608380fe294aa4cb82e2afda07a7598e828d0341e124b8fd9327c715"}, + {file = "regex-2023.3.23-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:787954f541ab95d8195d97b0b8cf1dc304424adb1e07365967e656b92b38a699"}, + {file = "regex-2023.3.23-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:20abe0bdf03630fe92ccafc45a599bca8b3501f48d1de4f7d121153350a2f77d"}, + {file = "regex-2023.3.23-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11d00c31aeab9a6e0503bc77e73ed9f4527b3984279d997eb145d7c7be6268fd"}, + {file = "regex-2023.3.23-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d5bbe0e1511b844794a3be43d6c145001626ba9a6c1db8f84bdc724e91131d9d"}, + {file = "regex-2023.3.23-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ea3c0cb56eadbf4ab2277e7a095676370b3e46dbfc74d5c383bd87b0d6317910"}, + {file = "regex-2023.3.23-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d895b4c863059a4934d3e874b90998df774644a41b349ebb330f85f11b4ef2c0"}, + {file = "regex-2023.3.23-cp310-cp310-win32.whl", hash = "sha256:9d764514d19b4edcc75fd8cb1423448ef393e8b6cbd94f38cab983ab1b75855d"}, + {file = "regex-2023.3.23-cp310-cp310-win_amd64.whl", hash = "sha256:11d1f2b7a0696dc0310de0efb51b1f4d813ad4401fe368e83c0c62f344429f98"}, + {file = "regex-2023.3.23-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8a9c63cde0eaa345795c0fdeb19dc62d22e378c50b0bc67bf4667cd5b482d98b"}, + {file = "regex-2023.3.23-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dd7200b4c27b68cf9c9646da01647141c6db09f48cc5b51bc588deaf8e98a797"}, + {file = "regex-2023.3.23-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22720024b90a6ba673a725dcc62e10fb1111b889305d7c6b887ac7466b74bedb"}, + {file = "regex-2023.3.23-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b190a339090e6af25f4a5fd9e77591f6d911cc7b96ecbb2114890b061be0ac1"}, + {file = "regex-2023.3.23-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e76b6fc0d8e9efa39100369a9b3379ce35e20f6c75365653cf58d282ad290f6f"}, + {file = "regex-2023.3.23-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7868b8f218bf69a2a15402fde08b08712213a1f4b85a156d90473a6fb6b12b09"}, + {file = "regex-2023.3.23-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2472428efc4127374f494e570e36b30bb5e6b37d9a754f7667f7073e43b0abdd"}, + {file = "regex-2023.3.23-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c37df2a060cb476d94c047b18572ee2b37c31f831df126c0da3cd9227b39253d"}, + {file = "regex-2023.3.23-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4479f9e2abc03362df4045b1332d4a2b7885b245a30d4f4b051c4083b97d95d8"}, + {file = "regex-2023.3.23-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e2396e0678167f2d0c197da942b0b3fb48fee2f0b5915a0feb84d11b6686afe6"}, + {file = "regex-2023.3.23-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:75f288c60232a5339e0ff2fa05779a5e9c74e9fc085c81e931d4a264501e745b"}, + {file = "regex-2023.3.23-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c869260aa62cee21c5eb171a466c0572b5e809213612ef8d495268cd2e34f20d"}, + {file = "regex-2023.3.23-cp311-cp311-win32.whl", hash = "sha256:25f0532fd0c53e96bad84664171969de9673b4131f2297f1db850d3918d58858"}, + {file = "regex-2023.3.23-cp311-cp311-win_amd64.whl", hash = "sha256:5ccfafd98473e007cebf7da10c1411035b7844f0f204015efd050601906dbb53"}, + {file = "regex-2023.3.23-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6572ff287176c0fb96568adb292674b421fa762153ed074d94b1d939ed92c253"}, + {file = "regex-2023.3.23-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a610e0adfcb0fc84ea25f6ea685e39e74cbcd9245a72a9a7aab85ff755a5ed27"}, + {file = "regex-2023.3.23-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086afe222d58b88b62847bdbd92079b4699350b4acab892f88a935db5707c790"}, + {file = "regex-2023.3.23-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79e29fd62fa2f597a6754b247356bda14b866131a22444d67f907d6d341e10f3"}, + {file = "regex-2023.3.23-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c07ce8e9eee878a48ebeb32ee661b49504b85e164b05bebf25420705709fdd31"}, + {file = "regex-2023.3.23-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86b036f401895e854de9fefe061518e78d506d8a919cc250dc3416bca03f6f9a"}, + {file = "regex-2023.3.23-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78ac8dd8e18800bb1f97aad0d73f68916592dddf233b99d2b5cabc562088503a"}, + {file = "regex-2023.3.23-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:539dd010dc35af935b32f248099e38447bbffc10b59c2b542bceead2bed5c325"}, + {file = "regex-2023.3.23-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9bf4a5626f2a0ea006bf81e8963f498a57a47d58907eaa58f4b3e13be68759d8"}, + {file = "regex-2023.3.23-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf86b4328c204c3f315074a61bc1c06f8a75a8e102359f18ce99fbcbbf1951f0"}, + {file = "regex-2023.3.23-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:2848bf76673c83314068241c8d5b7fa9ad9bed866c979875a0e84039349e8fa7"}, + {file = "regex-2023.3.23-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c125a02d22c555e68f7433bac8449992fa1cead525399f14e47c2d98f2f0e467"}, + {file = "regex-2023.3.23-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cd1671e9d5ac05ce6aa86874dd8dfa048824d1dbe73060851b310c6c1a201a96"}, + {file = "regex-2023.3.23-cp38-cp38-win32.whl", hash = "sha256:fffe57312a358be6ec6baeb43d253c36e5790e436b7bf5b7a38df360363e88e9"}, + {file = "regex-2023.3.23-cp38-cp38-win_amd64.whl", hash = "sha256:dbb3f87e15d3dd76996d604af8678316ad2d7d20faa394e92d9394dfd621fd0c"}, + {file = "regex-2023.3.23-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c88e8c226473b5549fe9616980ea7ca09289246cfbdf469241edf4741a620004"}, + {file = "regex-2023.3.23-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6560776ec19c83f3645bbc5db64a7a5816c9d8fb7ed7201c5bcd269323d88072"}, + {file = "regex-2023.3.23-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b1fc2632c01f42e06173d8dd9bb2e74ab9b0afa1d698058c867288d2c7a31f3"}, + {file = "regex-2023.3.23-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fdf7ad455f1916b8ea5cdbc482d379f6daf93f3867b4232d14699867a5a13af7"}, + {file = "regex-2023.3.23-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5fc33b27b1d800fc5b78d7f7d0f287e35079ecabe68e83d46930cf45690e1c8c"}, + {file = "regex-2023.3.23-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c49552dc938e3588f63f8a78c86f3c9c75301e813bca0bef13bdb4b87ccf364"}, + {file = "regex-2023.3.23-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e152461e9a0aedec7d37fc66ec0fa635eca984777d3d3c3e36f53bf3d3ceb16e"}, + {file = "regex-2023.3.23-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:db034255e72d2995cf581b14bb3fc9c00bdbe6822b49fcd4eef79e1d5f232618"}, + {file = "regex-2023.3.23-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:55ae114da21b7a790b90255ea52d2aa3a0d121a646deb2d3c6a3194e722fc762"}, + {file = "regex-2023.3.23-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ef3f528fe1cc3d139508fe1b22523745aa77b9d6cb5b0bf277f48788ee0b993f"}, + {file = "regex-2023.3.23-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:a81c9ec59ca2303acd1ccd7b9ac409f1e478e40e96f8f79b943be476c5fdb8bb"}, + {file = "regex-2023.3.23-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cde09c4fdd070772aa2596d97e942eb775a478b32459e042e1be71b739d08b77"}, + {file = "regex-2023.3.23-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3cd9f5dd7b821f141d3a6ca0d5d9359b9221e4f051ca3139320adea9f1679691"}, + {file = "regex-2023.3.23-cp39-cp39-win32.whl", hash = "sha256:7304863f3a652dab5e68e6fb1725d05ebab36ec0390676d1736e0571ebb713ef"}, + {file = "regex-2023.3.23-cp39-cp39-win_amd64.whl", hash = "sha256:54c3fa855a3f7438149de3211738dd9b5f0c733f48b54ae05aa7fce83d48d858"}, + {file = "regex-2023.3.23.tar.gz", hash = "sha256:dc80df325b43ffea5cdea2e3eaa97a44f3dd298262b1c7fe9dbb2a9522b956a7"}, +] + +[[package]] +name = "requests" +version = "2.28.2" +description = "Python HTTP for Humans." +category = "dev" +optional = false +python-versions = ">=3.7, <4" +files = [ + {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, + {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + [[package]] name = "rich" version = "13.3.2" @@ -567,6 +1148,30 @@ files = [ {file = "ruff-0.0.257.tar.gz", hash = "sha256:fedfd06a37ddc17449203c3e38fc83fb68de7f20b5daa0ee4e60d3599b38bab0"}, ] +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "smmap" +version = "5.0.0" +description = "A pure Python implementation of a sliding window memory map manager" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, +] + [[package]] name = "typer" version = "0.7.0" @@ -600,7 +1205,64 @@ files = [ {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, ] +[[package]] +name = "urllib3" +version = "1.26.15" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "urllib3-1.26.15-py2.py3-none-any.whl", hash = "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42"}, + {file = "urllib3-1.26.15.tar.gz", hash = "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "watchdog" +version = "3.0.0" +description = "Filesystem events monitoring" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7"}, + {file = "watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8"}, + {file = "watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100"}, + {file = "watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346"}, + {file = "watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"}, + {file = "watchdog-3.0.0-py3-none-win32.whl", hash = "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f"}, + {file = "watchdog-3.0.0-py3-none-win_amd64.whl", hash = "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c"}, + {file = "watchdog-3.0.0-py3-none-win_ia64.whl", hash = "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759"}, + {file = "watchdog-3.0.0.tar.gz", hash = "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"}, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "b369c83252df068146ce32b9b2692421deb1999817233b782f30cfd03783cfeb" +content-hash = "56a04cdd5d84be9e323f34f59011b5055f9de3f061814720e8f8494a378747ea" diff --git a/pyproject.toml b/pyproject.toml index dbae576..462f78c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,6 +45,10 @@ ruff = ">=0.0.254,<0.0.258" coverage = "^7.2.1" pytest-cov = "^4.0.0" pytest-asyncio = ">=0.20.3,<0.22.0" +mkdocs = "^1.4.2" +mkdocstrings = {extras = ["python"], version = "^0.20.0"} +mkdocs-material = "^9.1.4" +mkdocs-git-revision-date-localized-plugin = "^1.2.0" [tool.isort] profile = "black" diff --git a/yafti/plugin/__init__.py b/yafti/plugin/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/yafti/plugin/run.py b/yafti/plugin/run.py index ece57ba..806e8be 100644 --- a/yafti/plugin/run.py +++ b/yafti/plugin/run.py @@ -1,24 +1,12 @@ -""" -Copyright 2023 Marco Ceppi - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -/f +# Copyright 2023 Marco Ceppi +# SPDX-License-Identifier: Apache-2.0 +""" Run a command on the system Configuration usage example: + ```yaml commands: pre: # Simple config @@ -31,10 +19,11 @@ - run: - /bin/ls - "-lah" - + ``` Programmatic usage example: + ```python from yafti.plugin.run import Run r = Run() r.exec(["/usr/bin/whoami"]) @@ -43,6 +32,7 @@ r("/usr/bin/whoami") r(cmd="/usr/bin/whoami") r(cmd=["/usr/bin/whoami"]) + ``` """ From 9dc77cec88171d027b1a33ad3f17771966f5ad84 Mon Sep 17 00:00:00 2001 From: Marco Ceppi Date: Mon, 27 Mar 2023 23:28:04 -0400 Subject: [PATCH 2/3] fix: formatting --- yafti/plugin/run.py | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/yafti/plugin/run.py b/yafti/plugin/run.py index 806e8be..6a806f5 100644 --- a/yafti/plugin/run.py +++ b/yafti/plugin/run.py @@ -4,10 +4,10 @@ """ Run a command on the system -Configuration usage example: +Configuration: - ```yaml - commands: + ```yaml + commands: pre: # Simple config - run: /usr/bin/whoami @@ -17,22 +17,23 @@ - run: /bin/ls -lah - run: ["/bin/ls", "-lah"] - run: - - /bin/ls - - "-lah" - ``` - -Programmatic usage example: - - ```python - from yafti.plugin.run import Run - r = Run() - r.exec(["/usr/bin/whoami"]) - f.exec(pkg="com.github.marcoceppi.PackageName", reinstall=True) - - r("/usr/bin/whoami") - r(cmd="/usr/bin/whoami") - r(cmd=["/usr/bin/whoami"]) - ``` + - /bin/ls + - "-lah" + ``` + +Example + +```python +from yafti.plugin.run import Run +r = Run() + +await r.exec(["/usr/bin/whoami"]) +await f.exec(pkg="com.github.marcoceppi.PackageName", reinstall=True) + +await r("/usr/bin/whoami") +await r(cmd="/usr/bin/whoami") +await r(cmd=["/usr/bin/whoami"]) +``` """ From 051c840e08847efd6faac0bac8cdf543fc43cf28 Mon Sep 17 00:00:00 2001 From: Marco Ceppi Date: Tue, 28 Mar 2023 14:22:19 -0400 Subject: [PATCH 3/3] feat: autogen and formatting --- docs/generate_reference.py | 43 ++++++++++++++++++++++++++++++++++++++ docs/reference.md | 3 --- mkdocs.yml | 13 ++++++++---- poetry.lock | 32 +++++++++++++++++++++++++++- pyproject.toml | 2 ++ yafti/__init__.py | 17 ++------------- yafti/__main__.py | 17 ++------------- yafti/abc.py | 17 ++------------- yafti/app.py | 17 ++------------- yafti/events.py | 17 ++------------- yafti/log.py | 3 +++ yafti/parser.py | 17 ++------------- yafti/screen/__init__.py | 0 yafti/screen/consent.py | 38 +++++++++++++++++---------------- yafti/screen/utils.py | 19 ++++------------- 15 files changed, 124 insertions(+), 131 deletions(-) create mode 100644 docs/generate_reference.py delete mode 100644 docs/reference.md create mode 100644 yafti/screen/__init__.py diff --git a/docs/generate_reference.py b/docs/generate_reference.py new file mode 100644 index 0000000..07c9250 --- /dev/null +++ b/docs/generate_reference.py @@ -0,0 +1,43 @@ +"""Generate the code reference pages and navigation.""" + +from pathlib import Path + +import mkdocs_gen_files + +nav = mkdocs_gen_files.Nav() + +for path in sorted(Path("yafti").rglob("*.py")): + print(path) + module_path = path.with_suffix("") + print(module_path) + doc_path = path.relative_to("yafti").with_suffix(".md") + print(doc_path) + full_doc_path = Path("reference", doc_path) + print(full_doc_path) + + parts = tuple(module_path.parts) + + print(parts) + if parts[-1] == "__init__": + parts = parts[:-1] + doc_path = doc_path.with_name("index.md") + full_doc_path = full_doc_path.with_name("index.md") + elif parts[-1] == "__main__": + continue + + print(doc_path) + + nav[parts] = doc_path.as_posix() + + with mkdocs_gen_files.open(full_doc_path, "w") as fd: + ident = ".".join(parts) + if len(parts) < 1: + fd.write("") + continue + + fd.write(f"::: {ident}") + + mkdocs_gen_files.set_edit_path(full_doc_path, Path("../") / path) + +with mkdocs_gen_files.open("reference/SUMMARY.txt", "w") as nav_file: + nav_file.writelines(nav.build_literate_nav()) diff --git a/docs/reference.md b/docs/reference.md deleted file mode 100644 index 8026237..0000000 --- a/docs/reference.md +++ /dev/null @@ -1,3 +0,0 @@ -::: yafti.plugin.run - -::: yafti.plugin.run.Run diff --git a/mkdocs.yml b/mkdocs.yml index ed5ef50..cf8f27e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,13 +1,13 @@ site_name: Yafti repo_url: https://github.com/ublue-os/yafti repo_name: ublue-os/yafti - +watch: [README.md, yafti] nav: - Home: "index.md" - Getting Started: "getting-started.md" - Developers: "developers.md" - Contributing: "contributing.md" - - Reference: "reference.md" + - Reference: reference/ theme: name: "material" @@ -42,6 +42,13 @@ theme: name: Switch to dark mode plugins: + - gen-files: + scripts: + - docs/generate_reference.py + - git-revision-date-localized: + fallback_to_build_date: true + - literate-nav: + nav_file: SUMMARY.txt - mkdocstrings: default_handler: python handlers: @@ -50,8 +57,6 @@ plugins: options: show_source: true - search - - git-revision-date-localized: - fallback_to_build_date: true markdown_extensions: - admonition diff --git a/poetry.lock b/poetry.lock index 3f8263f..27c254f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -576,6 +576,21 @@ files = [ Markdown = ">=3.3" mkdocs = ">=1.1" +[[package]] +name = "mkdocs-gen-files" +version = "0.4.0" +description = "MkDocs plugin to programmatically generate documentation pages during the build" +category = "dev" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "mkdocs-gen-files-0.4.0.tar.gz", hash = "sha256:377bff8ee8e93515916689f483d971643f83a94eed7e92318854da8f344f0163"}, + {file = "mkdocs_gen_files-0.4.0-py3-none-any.whl", hash = "sha256:3241a4c947ecd11763ca77cc645015305bf71a0e1b9b886801c114fcf9971e71"}, +] + +[package.dependencies] +mkdocs = ">=1.0.3,<2.0.0" + [[package]] name = "mkdocs-git-revision-date-localized-plugin" version = "1.2.0" @@ -594,6 +609,21 @@ GitPython = "*" mkdocs = ">=1.0" pytz = "*" +[[package]] +name = "mkdocs-literate-nav" +version = "0.6.0" +description = "MkDocs plugin to specify the navigation in Markdown instead of YAML" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs_literate_nav-0.6.0-py3-none-any.whl", hash = "sha256:8c1b84714e5974da5e44e011ec0069275ae7647270c13a679662cf6ffce675a4"}, + {file = "mkdocs_literate_nav-0.6.0.tar.gz", hash = "sha256:81ccbea18163ae8e10bd0bd39237fe70c32a1f2dff6c170779f5d52dd98a0470"}, +] + +[package.dependencies] +mkdocs = ">=1.0.3" + [[package]] name = "mkdocs-material" version = "9.1.4" @@ -1265,4 +1295,4 @@ watchmedo = ["PyYAML (>=3.10)"] [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "56a04cdd5d84be9e323f34f59011b5055f9de3f061814720e8f8494a378747ea" +content-hash = "0868c936a255ed15d3f0f14c592e4133359315e1c7410868442742dc8df673be" diff --git a/pyproject.toml b/pyproject.toml index 462f78c..d09e15e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,6 +49,8 @@ mkdocs = "^1.4.2" mkdocstrings = {extras = ["python"], version = "^0.20.0"} mkdocs-material = "^9.1.4" mkdocs-git-revision-date-localized-plugin = "^1.2.0" +mkdocs-gen-files = "^0.4.0" +mkdocs-literate-nav = "^0.6.0" [tool.isort] profile = "black" diff --git a/yafti/__init__.py b/yafti/__init__.py index 16c7447..e591c45 100644 --- a/yafti/__init__.py +++ b/yafti/__init__.py @@ -1,15 +1,2 @@ -""" -Copyright 2023 Marco Ceppi - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" +# Copyright 2023 Marco Ceppi +# SPDX-License-Identifier: Apache-2.0 diff --git a/yafti/__main__.py b/yafti/__main__.py index d249021..db1171c 100644 --- a/yafti/__main__.py +++ b/yafti/__main__.py @@ -1,18 +1,5 @@ -""" -Copyright 2023 Marco Ceppi - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" +# Copyright 2023 Marco Ceppi +# SPDX-License-Identifier: Apache-2.0 import logging diff --git a/yafti/abc.py b/yafti/abc.py index e681487..5671571 100644 --- a/yafti/abc.py +++ b/yafti/abc.py @@ -1,18 +1,5 @@ -""" -Copyright 2023 Marco Ceppi - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" +# Copyright 2023 Marco Ceppi +# SPDX-License-Identifier: Apache-2.0 import asyncio from inspect import iscoroutinefunction diff --git a/yafti/app.py b/yafti/app.py index ef8d943..98b6bdf 100644 --- a/yafti/app.py +++ b/yafti/app.py @@ -1,18 +1,5 @@ -""" -Copyright 2023 Marco Ceppi - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" +# Copyright 2023 Marco Ceppi +# SPDX-License-Identifier: Apache-2.0 import hashlib diff --git a/yafti/events.py b/yafti/events.py index b61b3ed..5a7c1e6 100644 --- a/yafti/events.py +++ b/yafti/events.py @@ -1,18 +1,5 @@ -""" -Copyright 2023 Marco Ceppi - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" +# Copyright 2023 Marco Ceppi +# SPDX-License-Identifier: Apache-2.0 from typing import Any diff --git a/yafti/log.py b/yafti/log.py index 24f2f6d..ca1a52f 100644 --- a/yafti/log.py +++ b/yafti/log.py @@ -1,3 +1,6 @@ +# Copyright 2023 Marco Ceppi +# SPDX-License-Identifier: Apache-2.0 + import logging __all__ = ["info", "warn", "error", "debug", "set_level"] diff --git a/yafti/parser.py b/yafti/parser.py index b261435..fe251bf 100644 --- a/yafti/parser.py +++ b/yafti/parser.py @@ -1,18 +1,5 @@ -""" -Copyright 2023 Marco Ceppi - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" +# Copyright 2023 Marco Ceppi +# SPDX-License-Identifier: Apache-2.0 from enum import Enum from pathlib import Path diff --git a/yafti/screen/__init__.py b/yafti/screen/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/yafti/screen/consent.py b/yafti/screen/consent.py index b22f466..1e88588 100644 --- a/yafti/screen/consent.py +++ b/yafti/screen/consent.py @@ -5,30 +5,32 @@ Present the user with confirmation (consent) to proceed with modifications on their system -Configuration usage example: - - screens: - can-we-modify-your-flatpaks: - source: yafti.screen.consent - values: - title: Welcome traveler - condition: - run: flatpak remotes --system | grep fedora - description: | - This tool modifies your flatpaks and flatpak sources. - If you do not want to do this exit the installer. - For new users just do it (tm) - actions: - - run: flatpak remote-delete fedora --force - - run: flatpak remove --system --noninteractive --all - Configuration: * title: Header of the screen * description: long form text -* condition: dict of plugin: plugin config. Plugin must return a 0 code to display +* condition: `dict[plugin, config]`. Plugin must return a 0 code to display screen. Any other code will result in the screen being skipped * actions: list of plugins to execute once screen is accepted + +Example + +```yaml +screens: +can-we-modify-your-flatpaks: + source: yafti.screen.consent + values: + title: Welcome traveler + condition: + run: flatpak remotes --system | grep fedora + description: | + This tool modifies your flatpaks and flatpak sources. + If you do not want to do this exit the installer. + For new users just do it (tm) + actions: + - run: flatpak remote-delete fedora --force + - run: flatpak remove --system --noninteractive --all +``` """ import asyncio diff --git a/yafti/screen/utils.py b/yafti/screen/utils.py index 1c5d448..a9242f0 100644 --- a/yafti/screen/utils.py +++ b/yafti/screen/utils.py @@ -1,25 +1,14 @@ -""" -Copyright 2023 Marco Ceppi +# Copyright 2023 Marco Ceppi +# SPDX-License-Identifier: Apache-2.0 -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -""" +from typing import Any class NoParentFound(Exception): """No parent matched""" -def find_parent(obj, cls=None): +def find_parent(obj: Any, cls: Any = None): """Traverse to the parent of a GTK4 component Args: