From ca0ac9f560d1887ccde7b4d1efbb92e4c0dece01 Mon Sep 17 00:00:00 2001 From: saksham115 Date: Wed, 13 Sep 2017 07:23:16 +0530 Subject: [PATCH] Documentation for storperf-reporting module JIRA: STORPERF-141 Change-Id: I3a228737093d7ea3b645789fb2c7569ed4e932d5 Signed-off-by: saksham115 --- docs/index.rst | 1 + docs/testing/user/demo_example.png | Bin 0 -> 48885 bytes docs/testing/user/graph_explanation.png | Bin 0 -> 47744 bytes docs/testing/user/index.rst | 1 + docs/testing/user/storperf-reporting.rst | 96 +++++++++++++++++++++++++++++++ 5 files changed, 98 insertions(+) create mode 100644 docs/testing/user/demo_example.png create mode 100644 docs/testing/user/graph_explanation.png create mode 100644 docs/testing/user/storperf-reporting.rst diff --git a/docs/index.rst b/docs/index.rst index 9729a44..0876a56 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -36,6 +36,7 @@ StorPerf User Guide ./testing/user/introduction.rst ./testing/user/test-usage.rst + ./testing/user/storperf-reporting.rst Indices diff --git a/docs/testing/user/demo_example.png b/docs/testing/user/demo_example.png new file mode 100644 index 0000000000000000000000000000000000000000..248d2933d2aa57629c5bf8e0d344c0a99585585d GIT binary patch literal 48885 zcmeEtby(Ej_a|KtuFp`gIQAt<83{)KC( zwhe;)hvfK9Mhy-2@)xg07&dkOZV8Y~RE$vRB+ zN5vk}X>gVFwtgN+zuD4(k|>j*bgFJUl&Gwyi%G7D%#g z*XWX(KmJ3W*mDIp>$fI~oe{4c6gH*~2h(%Uh+OM{pXRSIV}PUTD6eqX2H)`4n+_5k zG{dOcww}MZ1iO-xUylSQmI(esP5}Ask6_`moV1Ua3$FW5{(fG2y>R92+t}E+`x@mB zU(_;VJC3VizJdBb@DcxFfVx7VL7PpVmE!M}cbu5;K7C@d+xP!_lBSo9Hk;jgUjjs5 z-^RwKarf`3GOj=BNPcU+_>b9)E=H_hza~Vt`}{q-Y<%9)=O(fG#ozmKN+QJkTYPFr zo<0AJlvvTkV&&o441@oB=*OA{7Od}3g$3imR4&(CE!cCgN#&aa814MYo_~43f9C(s zoUo98*Outg7yWCq`ILtL@Tl^PjUf83{cU4;>{c`+r=@xHoQm8oV;^cVq5LBo@Y@HO zzhu!}8!M32Zgf~LJXOZC-yWm!KJq7DNN~seN3cy|mD-IR1+qy#5Fd)L+`t4xm=1_5 zcdhp)!Mm+S@Vsbii~G;fQ{@_BI7m;jsw&7H6sD%8=8K~YzJ%0YpzDae>fD_TMj1QXh$V)S#P93JJ6(u`wvd= zv4zfXVA^w9dn<-50Mqiy$$y14M#>4(WEf{J z!rzY+d{N2V^p$z-8Wy07@_(z!Sd<}bSb%{vp2PwWddJghegzu`_xolEDjX$v@{37N z!L#{a<#9sQd4g)A&1aVfBj!Vaws?HIzwz{};Mc67v7a$NpCr?f(ns!D{^%R_On2;piuLobIKpMP}ah>wCAYETFAEA&qp*w-6}8IQ$?TNj2}v9uLwSzu4uH$P?lO zh`eX^yVb`9T{J?f&F8+yL@)`Zr?%L$Vx-T_cExBtRZ3s|bpcNAV_8poa6Q!9QxB$N zj8c`u_GATm3O&{WUNK!u-Ctig5m6WK?iGPRS#fmO$8wyahg-3QC$?4MOc^)as*uVE zjBqmY-?uk!s#rY(97`%D5?F-EqOiXCXQU?gtdK0GXfuE{j*((<~z>3N5# z#M?izhw|-1`ydax3Mcmu*`Dt2@{M5+8!15pgBFmbWAhVMSJILod+pG!pNCMpD zJZjHzIE23^9kg5cjj1rkzGB0Pa;~<|4r=q73^*pxQ9LXhxke=^ej3`-WKL9^Qw0bD zdr;0@6P1M1@lB4mhlcu$jj_kBvr)eSmL?f(GUK>fn^Dh-dT1fD_BR?e6Q(8`aECEi zZDrTw#O|tIejdt9HSyZLt+tB0u)oI>0vk=Z9_I1e?^cHxNvp*(pCyQRg!OX))M7W) z)KOXF2O6}R+aeI>RjAoD`XZmQzbNWmpcHsizwK56%yNe$Sr!&o^adxkwqFHT&!d8) zSX>!+KA%UZLq_JXkIj#^9FiR3o&-J-jBzt;?EfBWbaCHG(mFuZP8B(OV+Wg6X4~@K z!eaYjSOUN4^lg$l^9dx!mZ@ZacL~%&j|X=Jf}YuahIrUAZ(mPHkr^C9k9yM-yO4vL zHNWG$GhkQzG~IhYaa-<^TOWZ~2glZ!`64n(BERfae%U%~*CbsvE>u{+VC zgLk8L3m8@hW)7=)o5G%x*G!F9v^;M`5G@oG1A0N()wvFTWs&E&mcL9Uui4}nK5Z-= zW^(*+>MOdt{jp8wiknr$lx3>zJ0*f&RX8wki3BnjIGj~=e;Y2gm?6eYhHU+a`9aU;*DQ z?pwd63*k&zWSmVtaNUE`94FU4Cw1ZB+8 zE_(Z>6k|A?=yLhEU+@NDsdaP&y;AY%soCZBPnJUsXmc?N9pEQtiHoL<3WtW2V&pl1 z!SAQ4Sj?_6+NvpJ02@2!1~luKxIe!hB?Hwca>I#@%6PMi%K19Gs#n8JGO0+Jog__G z$*zfB`zH6cgZH+HQuMZ2KL;(xy7Tw>evh=CX|Dw13Xac+0-A1j_TTkQNv@gNzIluk z^9wi#J{8!c7bEaOD&o|2r#_zszzv zUF*rz?k@e^Z0qg%3eN|^Hh)QX^RY|(C@GMz*K*g+I?Rbnt*NXE6A$nCiHeMc23vx zlzmd~ia*Kb6W7rbk%Zp`(Dj$LdT-zIr8Kc)VaY$M5)hNJ?V4&+7&92Sig{rZZY-NP zVbD7XIYuh6B;emr`Oi)Np$!QdHRz_t~~fqxc9!Y4hh~ag?M^9 zuos1!M@?1TJZJScz1KcrM;c4MgBa8D@7wpmvCACggD$FAIBH{GtFls$$1%y~CHn1N z2hVNXgslFMdzAed)gRfHw-&Bi_kdZ}_HB;oce3ulS))#+78-q@S@dqlSr)HHXH72V z(yA)L*_wZXhL?u#gh9aN%cO#I*V6|<3i-f{s2PEnwPiXz>Kde zHS3Ymsv@yO#L!95DE-pO#u)}7=6K%W4jhoLd0He68lZ8RoME*f;cJy>bHGSB?(ey^?coP)46itfbUfw4C(>eYGujT+#9qS+B!s0e#h!{hV|%85}C zL;RFVH!q^ubSxNHAulHK<;qq&rz<_Zmno`k*oBD$#`(qw@JqoktD&!hB&vY}q zoJXsH7stTvD3P<(eznmSko#Q~?|Fvmmq;Np;USTdYdY9dXQ<8X(sAG3ifF-o(GFyr z{ASyv)O^u(>6RIK!2;dSH8PO-Rj6pKSr}G%69v2@hYbBZe8d0o&W&r=+Yo$$=QR2A ziV~D|1D5FVyFsYGT}U)3-Dua0KY1fn?9mGv@Tb8`HAg_zdHhDR3f$z+g4 zmEOubq~>Ug12zD=2!8L0=80z;%Ys$6z4Aj-NM^*w?LZFJT1>VNMzwie2jfsD=chnv%ah*_mFvnZ)O4SFPxf8 zk%bL)jN7;&T=$ba_xPjh5Fy-q`xEl0=kSlpY}zL+@(i~2_uXz>br)`QAzV=_`a3m2&=eLpogS?RCpCv_X_gojHZxHt09tAq z&`OJK%bRL09|Num_e&;M_`h@Q?Sp?2m68zHs(vBWzGRV^DW=?!A*<|`bNm(x!8q## zTRR4B{64&eZ{{UEjKZP?i#+&wxnJNSS!p!X#ci^q!{U#ai(8K4KBnfq`wDh8Dl0kc(J6)5Wdp1Ut7idDtOe2t^NI}Pj^yz`SRidRjS^rI&C(@4UW1fSfTTVg5Q=m>yNjz)FwN5R z`rzX3z?p-C0~WZhC2!jtn*kOV78V?m{@{2A1~xRc(tPI`Ug@{~&>y`_cGknnw7za9 zm}0ml6GCwX%v}Amz8rGhUs+ELZ);*yd|U?XjDq-tlJ*onVg0lpZY6Yl zP5M|3hn2WXJP=J9jx7+agMwNk&e+mCo?cb{6M>O=sb7<^D8aO{`yL*yeVAJG=H3Wq z2_WIn%GZ}#rhnyT$-hl6=ulo)4vn;96}EYVFdd`5Sx*ZJc*ub z2;w<994)HmR>;N35^v{drS6bIPglIk_?(O*KQ+{CLMLu~+=lOp%6&lY|f6w<OJqh~6jI6dV$po9x2QR&xOl9yv+ zPM9k`XNfkYVm_L4nS4@Gs<>=y1;m=$a)eK$V-scW1#d?W3hM6ecfW|i`-p7&Z$n)z zrjzbEwSv(CpP|skS`QijmSgFW!kCz%lQx;=a5Rp8=Ou(rODK%!Ou8O^?!u7)Rs=eu z#rfAdkrWl$60dj3W%gE=Kv{=rDlc01;ez3l*UVM1&7Mq7$dejTSmqy!av3|}Dd^qpGpoerU)mlF9#(G%EM4hmyg9yZe69Y;@yjZNL(i1IE>Ml& z9rw?(YL2yCVtPeW4H1v%nn3q&qpW7K-<;@Z2}#nZd8*U)5#f?TS1?SgE)srmMr$PZ zu(0ymg~L1^PL~|MX-TLLg%58g@TVdPuIf8<9QkxpL(9a2461mzBr^lR&RnVJ!{Nk+ z`9E09vW3*FYulXF^8&8>#U;^0mUe7rm=aZ6x?PC8+1G6lowS)8t0Mks26~ zvornX+ug_bjhK1d(Iu9Sc33%ezc3wvErHXCq;MJFaVyR$vJL#Oto9Ps@hQnpIqlob z_Czd03Tc3e>PScAey3W%t2#i18ZypLoI)+Wi4>PFA`kmf8D)QfW~aTbjE+R^$eSLD8y^dh6U9+VW3;oQ zm#XKJfa_A0!&wweARiofuBJ91a;QgOL`@zCA411VJUMFrJ*AX*F1SSVc`IT#-q^q) z8Q!y>uNt;A|D0m~1A5DJf$dG0dAB}4p)t^vG^{e`wq;2V%WN#I^PQ%XQp|0rKD7C| zyYs2cy|qH1pa#z==%{1M6C3H@GeGYEDQWIiz!~V|)(U=(0RxtGv(4`gOX6OiWFK#>U3hnO8Gc{xOB=K&zz>1D}SmP^R~DTH9iM zl8=2!onE?(HdOR61uPc9eE2%^+Xq(9;9HJ5p0r%dSs}fJUC#LUc)KNsmoU%ZXV0JZlAV^(-_5dea zOrmql^V*%hMt^uF^Za|lAD|5O^UwcvUE+Vn#Kv@RIQVLlihuwCs?ik=WgDN2tQ!)K zo)zNA4LT~>$mO952cB^QvOKa)HOA*eC7 zL+J@CGco6UD#hXXz=Tq849bUq`*2hHPbucvE_GR1CA2A{# z9e?HKs9S8=rS{~(eu7e34qt`>N=z@vv68ne4a}F#2fB{%daZ+yL@DL#%afKvL!Khj zKSk^imlhcFKm?`_isHXA;o)pT{i zDPJirxqirF%;8S{AaTugSh#o8vGqjO(u1L`76(In9G2oXZad00-LDpqKL({dS!iN@ zX;JTRo<9fe>&xZfC}}p0gnY$3L8fPk;?oI{md8VrbxbE<&MUk|YIc1gJyAFIQBR?C znUA|VuH>jDUM`5UmOB<><7V(_rf;gv7#GeS5#{tPNr@9;@8T;5itXoQ|= z0id;S362R3QDY3??fE_H({z`Bv<}bJj)melZ?0HmA$`uy`XZ)Rjy3)@RWsLHPM6fs z5{)L;NF@aA%)q*mGLPp8wiF&-DG0|`43TY4i53X-a!P0$osrqpv?2n~^Yz)XrH{*k zo3ur|({*0n30>=i^h`ML%tVh@7yR_$URO9M3SJ=Ho!`k?-hg>P{io1vh(wP!`>l+3 z*>yvr(;Y19J8W)CL#BSt#=$Wy+#^07Esdn4t2poLPM>aSs~*HOo9y2y)8~(b|JJtz zZ7lRX5&!%qi&tgb*`#jnD7>WUN%;QkFC3hgrXeVjp<|QzL@ILROyPvQ zl521%J_RVAyc|+}zHp=flSND+TQkQfM6HQLzleZyLRha(t+O-T^T5=U2Sh%tZ+RhLWyeeRNYr zrnZWedm8cFq!j&$5vKeHrKA?_FJy7V1eDf$`RoJF*yY9L@PgypR>eJhN88a=JQN(V zFLoRufvVQFgvOYeKNt#gzu38Oc)reQ1A>aL@UceBVh5y8>(})*A?dOg@JsPG7} zX-(VZEFdN$y2tH$XpAo|3cu`OixRpZ7#4xvdgxWhD@>O+GTm+YKh#+uJL;gO1(O9; zQ&Us=*86T*CSO<%_A{&Q^J8+_`f@FJW;Vg>w9Rzvl@dXYRSyO6HI|YGb_Eu!imi3< z{L$Nx|9HaE^24gCRT2jY=GJ6n&|&G?Lnc+GEGX11M=5`ziH0LevS9g|^6_>aFgHAh z{j~|vZ-SP{kIV%iGBgLb!b@FO5E0({SfRH_d91vG(cjX{UUV8KHDf(aTZ z0^}VcHQBt_w_f@jP`zbIPNlO)lB~U8&)G2)p%ebIMZW9T!Ep8Q*4n({W6Ocs*`LY{ z@CF2f#|AeBA3ov04N%^Z0O+)xKU{K)k6UatC+_U>vidcj`0xld4#$*7bm*Lo!o{Vd zxfMFgd3vtsz>I#R+&n!0E-e8;1O=IyKC8ZC{fT7}a<^o6a`-#OzSwf6a1Q=hswS7= z4m5vNbY21JgTj$N`0I+xABT5P-p>LW*wwr58=Je|@7KPbn}$J1&4{4E1ldsm?dngx zQX+j(T!M95pVG;Vn#zNm5Gb-s3(1;>;)c7!*WQ=Rt6+&Hm(p>0#cQj{Yx|6`Qpg2# zjX#5o_av7BXh?N;ISnnXliSma8!C(O;5r&)4bkd3QDJi4&1CZ$Un zTgN}HE6FT{K|^uA4Upd%vLN~rRmyN`NWspVvC!I!1AIe7Pfnh11;tTi`|3if#h;bO zU!9*5|DY?|kq>BrMZ%Y&`$Q0Q=@%OJ^D)8pz!Ufq*(>Wetav;dDP3_J_bhpN0cE;LDNZ!=f9(KeT;^X)9e@$Dn2fF+NVU>923)yd z0X*SUgUL)Z`P$WQ0%d+N#^%fvsyw`%T^ZKiBf{d{;(R-I9y;^FDiH~sD93yg5i#QH zVk*-Uxk&lD;Lith#@+y8R7-e62O%aB@-Nawl6?H}*>#`@wP>@i1^yjVD2%K2k$dC@ zVp1aK>q@+>aipzA#&hFHvPANKZW-o7jr3z~PvH&IHiv*_s{i2#u|y9$%;KaOgr&f!im zx!Zd?^kS!1vNN5jcT9(jV=~RiVTD4VAqfr^&KP)cf}l#2#m1V7pp5IQ7{?c`kqm%iX z_$^yh*w8yI$1SnMoM{(V^wWRsJ2mG7HgBx=JP&p<3~AdugSHWzxH1q8b5jUWq@GMn zsmFlrQZj4e1lc}Ej#=}p|KNl#skq@&YUM2rDfImvWOhS`y1f-KGdC^6A5JJT*74Sd zwR0*6-erGA=Gz;J7_fvDO>}T}OOOs~z4H3=Km1`lcE`MsxxKE6yE@kcab!ptk%+MU zyw+jxgR`6-bU3rlytd|3wh7U;U`l(jv1#OhC>9Wrp%%pVt}rwtbR~MsHPt-I0W*?z zW^PGJ3^FMOb65N>L7rZS3A6lLZlOu^u>LjZg13Y`vMOSyoGDQ;rVlSAmW}Q(&hSR) zdsVdnxX(jb{f>O-I5EWNGc8cKS>hxF>ZxjGvbBDrG>iTKQ8}24JZw>WY=_Bj?s&-N zzy@rMRLy*D-igU|!KcRw0{NAfb#(jnl;lCv`!{TAb&3nV!x8`vC(C1&dF7 z05mW0{y=W08yg$9TFriVk{91Ltx3TZlhglR*_NQOa7WFcbjb5@avBEA}q+1eGVBapnfBxSS?W>JOt;fHsA!tX_F6hCS$ ztaH^&x1on`a%oR^p1ns@1` zrpJ6J+MCx=|Ds1-;ZjCH@SQPJKik#k37hD^r$e$x#iC;7etWw^9LRd*A2<)TFup!M zG9q$eF*PAV;Iqgm8Vi6eb@OMA?UZMQE9=ZkfA4R-!QBs5G3EPAo0r_XoRq9!ON-0= z5Tbz7m|HKrbRqqR$NoItZm>i&MQ~E0e_ZkO?BUbBPeS;`$3Bu1uo=$+_egEKvguM! z*i$}wEhQ+Kbl5X-c8rMsS_KIXqD4fV)n?&RDQ zpc@*}SLDE)rxO9kRE>Z8m@|^9Djo($^uoIvN5bc#g2K|%_c;(I#OX>S*-b~arG>`F zV`^$|CC3!c+XHineu`T!Y0@lx&I7Bv229gY!XmDBRlv)qZG30bA}8mzcSn7(RZ!{4 zC@=|Tz@+scR&|jHT}qH-W=X#iCdrqrxS4R`BhtVtO$DC&fy+RtvWa>Dv(i7QDKtCzBW2vvCn^ADqMOe7PiK7xz@|}M+ zi$aI=WXznbZ^+TcA0FgL%; zKsUUdi4_^~6RBNu3b4P{D2EV|Lb8+Vp&!QUGxikV#9g#71WRP!khxuXlR@3KW9NkL zk5zO%OcGD^vJfcTj>H~0gJ1&ziZ-@9>TvXa zzY1Bz$fQ^5S*BPmnDrDVf@JMeZKxPsnGBxfO!F>9UWo$xD65cvf%X0_HR%T7Tw`!v zqj09jB?9cmKYLXDq^x^F@1t()&%c-FkFqfA#cRLT>B(^l$tpFuD95pC$Zl7wuI1uw z<6uyU4Nw!8py~UCgf6q??pSuX#d35$>#bOi{?yat7R?d`C}hGNx+Fyopgn%PjICvp z_?Qb6()q;zIpz5oNdpH@8AZyVgmraLSjxaUI-@0;Z^th<)m<$My)$0JM+|50wjWz2 zzc=xmUGP~PW4fsexNaY(Z&s-xv3)$QtAr6j-_&&D!n@{h`G2mhTvaY?*26ADAcxaF z|ByHd3|?0=wy>(A)W3C4J9)F8=DsyI+GRq)3>LLA3yLN{lVR;TNW>kGd}cM>FqVSl z!_G6H+is#N}+hCaqF^_A^do z8mv=eF3A!sx^S_h124G=$Az_gMbwzG3(fuKFF8?5D4Q=&(TXWlEv!AX4E zW_K?0t8Xmu4W%4)$gpnKFGi-j-}7uOl3aQ%Gh|4?lX0p^!Q$Bp}7d-`CALqa+I0Ic4nwj zsy8yAtPI~3atQHbvTCXZdgF}wBwNbDZ`#{T66!_Bq%I9KCEkU+yEJdm23%R%|s;+=-J{a zrqfD=g;8YZ()OPHrbmW5NhkLYJ3;DArB)To6Nd|A3o2wRmPH9D;eS7zWk{K63v@9L zQUk23=sG@N1?bWZSuN|_e_DmNrD`xfVh$*7u%t4(ZDJpeDgKXz8n~2?nmrfatX9$C z-dn+nFvtP5-%OlXnB;pXu%vCb3;B_X3-(hSojAFk;i@(nw6*@lk4*nQ%vi$ZqN8B7 z{n~#1`-BsB92b+!GbW}i%MrQwbCs|kV=8u5J|vM&Y-|v93$$(Qx3h_*>g8w_Kix2{ z4s8SBJ}M%N-a)a42mu;nvDJ*7^L!>`m`m})8-7sEE15v-y+;Lrjj1K_^L@XQ*3c@I zcj@_Wd$z>#A`oIH*!M-K=oe^w`}oyG{hkSRQ`v{VY1dMMZ`wtpsY$c+dxqY2zhuG; zAt0aY?b4uTc7UF<;U}M;0KjT@PHDrz7 z_HR4-^vR={X+;b&j3;(~rvY`_55FAnT zs%kZ;;DWT$RAPe=9<33K#R@-tIB9AQwLn>Of|vBs6b90dVI1twj4GG+0w^o!?poa6 zZnhX40$o3G<0!K8&vafC3Sn*@+I;?p2KD8Am@kF=O%6AThsW&QfcMH6b+0jDD63Dg zsDZoR6V;k{;bV<@r@f*!hsGz5of5F6Eg%aw?Qk%7TFis|DFC?}*15^bCEtegmR+LI zngg(nmvBJ-x2}vaqN7xzKUXucEa`jW`s$yRX8r4YW0YUEN#1lLR04z-qD)Vn!jU>c^=lCyUh@eze2N3GsEp3KldKA$f%E8_gi_T z#P|+l`|^n!lC?5pItB^L_cimU7xNP@tZ6bGs-Ip1T9E0L<*2EppUcxm&&rs30|(aL z2f(4n8H$T?LETLCXnVP8ms3o3p^hM9aaSvO3FQ?>UdYpQ}V-X^mg zFREEqSpOGzpM$k_;WkZ&QDA~z=6W*g(&C;6R1Unk2tZSx-2T1k&6lgi$=;2>4g31j z<14*u1Pf(Ag(;;`sX48w(o^cm7Z2-~0vfV<+O#aaa0-U~H&8b&2Jj2qOe$`nn}XANX$G*57oK04mMqOj`8oE~6^hzU26U(@1Bg=s32;8J;&7VQ4UqDjDc8OE96iX_zskNe< zD}1vtmW17c)JfQ3vcbaH>p@1-@eka}eC5A9(#<1sfQC%HJ&0{}{)_x_3+N^EVU#&I zH~k{=vIYPX&vg|k>e)tcU0)-$@+pYRSBf=f>CS#%fdBg;hs;>JS5}Gj^eb?iacQn3 z=03FbkprJ)z}1;{^38`U>xgfrW_{xTuRx3}PpP=W;SZMimYvz-GYh4i5#C;NThq(k zrldAUR;x?G2let|j%9`SJ-Zl4e*Bj8=ktxjq4pL5%Sz?T6Cw1$k^~A7tR#ystB z!Q(!|QFU9}8K_O9Mgxs(O%`LwJ*3S{1Zs}5X}3(iBOX>1x0b4ovZD7#O+$z8cCCm~ z6?ZlL-u6yW)qPUcuB@|-CvO16kCVAKl7wM_r1-=P0+zqJVn5e*kq{sa!w7yBG+wzC z>8!Kp5rDma$W#Hp-l{hDti$>)Taui_a^wOC?Y7V{1D2JG6oR}yy_UJY{vH5NoWh>Y zImNyEyUm?c$X#uys{8Cl2eMK95fW9`Cpg7;`bjHkeF~R(`U4lKYdTdHr{zGvm3Ia9 za3Zxv%OtyK9OKl0VJ%WTKa$nksUQdQ^ELDIvl>s$T> z91Mh1Erg!^c`dpI9hEUYHlk`5g%?BI*j_aYe!qLI_Co8L0P(OaX&D+&AI(D-Q0H z^JHFj@5<&G3Ur1r&o=cqRab(}x%*aNy4|!RqN}dPtHvwB{62^SkD6e4g!1fQ ztKOP-Kg?kke;qB5Fo^1`@f19|?|9>)$NAoHI=HUsW)@7E^YfQ^(LF14=PfQ4Ny%9+ zOhQ!MCCUs3(n(Ydco^2#BEY22ZzfEeb+1412p+MJW*pw<(H;JPc3?p_KGtzw>K#3r z4LDXj%rE-cHuF`rEnB1s2{*O3?cZ$TFnK29ODOHzOf@+1e(@H)wY--L6XqE!aQXzg zquO_~1tFZ1TTQrCd1rd`$_NZ%d%KitNdcz??xL=4OYa41?~MhkgSu(Ec5c6$XNa)B z52ea;*42(5iuyA4rCCJzc(Jpo%SAK`Nvh=S!P{{If&JGqsfjO`ygt67(c#wL40Q=S z7)ZK)VW{oW-gwCEX#SsFQSk?}gw5PaS>1tKwc$`lcBG z3fJZ=IF;W!ekC^}?28Kn^BjX~ttwS#|NicCL(~fqW1!b@miy*;U*vF-7nOvnt(FmbWfPGElQ6Tf?_&9<@*O?`dZ67Un7!TMy1n(sMT56$&I&fZ{!CW7so+wV@7i>?cnUZwc{ll^VYszwnVjzPud5sU9HiDS)9tm z?hG|+XI>qiFa6949dyhed-<+^bW@r~kU=M%cs7;V>!-Kq?%nWi2rxg_TK@e7s3fM| zNv4QQ{HKHf{&W;n#{GI(udGB^XG|j1+A7v#!QhVG_G8cG{#)@HLZZ5ng}Fi_Q>{%8 z*&F)ck=;*Mr`626sUGD5Q*F$i=^I7>OADJ1qTDI%BWUrjHB%Gp%WJ&a<{9tq@`mf` zzR9>CucOTwW6!Ch476ka>)PH`Us);lv;H6dE(&#uz_9GNSr?MR#S;GkFpYC(h2rA<}X(H0y2$4av^A^dxoGxbZO7jJZ##xG}=$nNo(wOL* zVQ(S&W*vtae}@^dEYisAbeF(3tEIyJi~0)yAP37USZsL}+1Pfe$|#F@*ZS=TQr^-r ze?st1A3>dJk{&Ki=V!~f&zH@lpm@QQ9kFkH8 zCkD!4FpTpz&QQ_iA_c0AK!PD+GV6dpu#41r9 z@U85FOI@#pRh$ms+x(odYkgm(=$3$%TgIHRY8pxXM^YP^@lnxBHaYa6D6Vcd(5l-- zWlxQ>Nao-aZScEYF)pNz`TC#+bf<$Q-A?=S+P*>`*sNJ=cs~4{8Shf}Jh`7P6DGwn zt`SXjhfi_QK-aV1vyHokMly|Zdh>b+4*RUMSd4l`??p6#=J$eQ_>Z~`mp%fE8|AY4 zTo08>s_q;MTtKRMSGE1|FKmCEO%{7976@uQ;ry&A{#xi}NM_rl>qo{jLbk8auZlou z@yB4|yX$Xx@0V&?XZJnyCli*OEc+8beYj>xq$ag+-j&|vCG1^Y7d~8w z6c~pExUF|X$K1}1X{~n$E`bf`OU{e^I$Ig8MXrrT!sdtdI#&J1z2Zjm5KZ;dg;|@z z)$`|PBu~5gYa`;BJk=ZJmz(MI5-+(DEDS~?04=gD={bqAz1CnS8_NlKVnH&>k6oR2gjI@FR2 zv@EXgfqE@O-ax+GUoB%deeo`O_IEEpMe}vPt>u7;(akre%a7$w%4jzFN;_O;B6fW0(fyAL1!9ya_ohY6~&C#yuK1(`MhXXkL1Q#et}kp ztf9mRj0z~3n`76A#aplKw`l0!{@QEN;H+`*ZO9;L+$OHmAg*j0AkeV=$wnjyOk31R zo3wg`UZA!3i6N;;#IL0H#XOBJ{Nphacm}z!>W5E<-AAFc@FaC}0KaU?u5rH_Kxc$-4x% zo`MbHz!piJ21#IxxK4{C@TgH5i(7+$wF8mMto8C;di{t!Nk)%7@BTHgs->Wz!4+h6 z6O`qxVMOb47#|hzOi{2X_OeGh7E>#(vd?n#C(m%C-G{O7KnN_1;?pB1BP^oVit7%y z8B1`?Jr3A ziggai|7pc|{Gv-vA?D2NpW_)?fL*dC_WlprDTVXnVDL1ZeByM2WWoj~jfTaE?-$2{ zU`MXapc2jI?a7*{Z349SAQquwI^CtJyI`*{hdHj@K9=pwz2o;GToa$>%jG>xovfiT zP>jj@-h%#b#3t8T>$Vuqi^2RS^KIY#MQ$wt+gU>*>hWTLiX8M$%|r=1Q+%600|W*; zNmq3E=L7`io1Mx9Ix|j$_!mekbzx8H0ea-udv?ws4#*_e;a1)l6=@d8zK5pCt#8Y_ z@q&YGed;x*p;N(qqZLRpoFwN<6WdR!#!#!0 z(TlcRwk)rO^r zI4w#~+dsA1H9bXoybE@Tm|6OwHlNiBN%0HEdR%4TcKX!D);_wgVSFh*DV(W!j!}#3 z=e|ykT6cYZcfBPYmz&`N=7PKfJN25+M%9-ZO4Th^SxvRKp7-oGn@zvk|9m>KoiRg8 zIQkF=nshz9`IGYIr=9QGyka?4%1X zEt_M|*}`N)BJCtH*xOQaC#o9p$;rvLRouBYcC09M-W{SSQ`n_ft4lQb*%XG$jyw@* zd1FI2c#>u+Cz*}SXK;U(>>*nUCEvgDQ@9&4 zQLoKgs@z^-$m81ajx8BIn%_NT-%=P~X0z2}BH6vVLloYO?xZ)bNG^#j`Z z#D3g)zsTV@>W8OI6y5=*x)7R(aKi5te}I5&5zI{8VejbpW;tS(*UHC3&-bgi@zWA3 zG#c>fIVQbMGJ;E#*-B2x0YU{>2l^EBdaZg9&VwhDJZ06)E!xxN-A82wjW@>SInM}} z9c$|u=ox5-Xd37=?T<%uTovQfnVT2g4D=ej=yV-@E3cQ6hPU`{`it=zNDfX>KlD)f zv|Aa6%YLc6d7lq!|9W`w(sVMy`T|@_)f-C|rIVi7li#nZ-mRyw>!f&onG!k@fn5!A zuhU4SOD{)N+3$HEk6@q&+Q?a>h?5x>1iMN3pzN-0#vM!s!LFe8bej8~B!iC{Z4 z5p1#RymU2MeSJhOHSx(q&WN__^=ev7R`H8JE5nr=5+EVsGiu(a4=il6f8j0}nC_=N zZ~}7!gSxf0?BC7n-4?-2FlpB19)G^S$F6hjsG1fz?H(!H*w*)c;94<(LT^TI3WFZGkj-k|zZS!J)k#5M_nJmX$JDcY;0%+{lqHQI z)Ip0LFFL=wX+w94G|o8gb>FK7y7%^AvQu2JeFJD7m!?_BsR627BR{;)pS^TDtUJk_ z66P}NJkO;!mOhU5=O)5dh~dHXgO6f&D3UEz)#x*MuSm{I`BPfI{LdnjUjlrp zsvLCvX_?foU5xY~oh-X7ia-huL75|yCF#*5x-8(>9Z{-QoxzRN+}BkqE|Pz#Et_5; zAxbtKXxxMyuvf_tch8oHbPd^bAH#FJ64IiuASD6H;9Dc8;*QUaYv@C+E&| zx(PC3x*pUMnHU$q`n75M6d6H1YP?lr)%gHzTBDfYug%(V!^}^1#`36}Z6T&i+Y43s zHkA((YGpKI&Jw>iO$X6I&^_}nQ*FwXX0D_o$~6(9e@%o7YBa#Zyi%(-i3fT9~v6HoyUmJG|tIE@KT#Mwv<2i26&ztaWx?QBjq2IL5i%uUynE8Lo2?;m!xJU z6>X<%%e`Cp0z;mJ8UY~PE04h23izMjNv?Y*SDmnZ|6cM_#}PWpf^Nk^i*A8{i{(0-FTUrYyK0#W}?Wtt(OwyTXE<-7Tvas6BVk=6KU&p?$!A!ro{i! znuO7!?#(C-w&nwt53HfPs=D^>t-q4q8k1p0_#-s!zyKvi-5I5VV#hk?efn{p++6B1 z2O2sO4UW-1xkmrb&%`oie*}V=qc6N4oQVG&z%S?kJb2EJOC%Iywx>6TXonk_WUx2* z^pkz1>pb}4WdD#&YYmlvL&*}4i)m36CR2|`3(VcEIswo%@Ae|rlQn&%{AVy&NKcW~ z;cVU(SZR-^-}w+}cpxS71Otb^{4@}|k(ln&pz?jbb<+X+aO0^24tA&MZH@*5QhPlfTxIES7dFw6G z`2O!DQEhb6`Fh7N0wE~3elOV zF9wPrG$^WU)L%1NfI)Ak@xiUeAEIErXHLj!&lE0W)Iue9&5ym@Les6 zCj2HnpnMGtiBgH>G|ytZv+BG>=|o)8UczY_DA#CAMxj`155ApK~cKRPy`Vz1QFrWtpUhXe?o zn23>Hn|lyTRxVebB%MA`Eq#eNOJ#I`G|dai*)w@>nk>RR*ktKNjfQhZO7xo?nD!5h z#eTkT>!N#1C_$UJ>5;uDMdxfXz-IC<8USUW#})5VqcF248_(KwFqlNQxcp;pD_DU*Gw6+6eR373v<3FWD^KyGR63kAv;|6%w z#-3$R1Cevd{R5sQZY?P0IWA!xO;=*-fPM|os^xHXvsAM)Xl;kn-AKs=c`QpdfW?&* zld@7-zgV+~oPg^J79~|0D7wY-TE1k`b8BE*LlMPKH0SLIJ6qa(N3f$fytl~NX5Bp$3z;g97i+j zNi0SKig!~GYEgm$7R?{KifFNlEucC-DN?*HP-bJ zZGhK{hD>U3cHS&s;nm;#g?Zjf0D`><1$( z&Eg?WPF_YXo5Pps%c8#nA8025QBZ+PoSv66qa>TjKgC~AT)yA|G)^$LoI(#&`1>h7 z-N+fb?O0`VFKI}$UjBLX*LkSP`{^-#tE4tbS_Kv-(KZ7W+KT`w|5Shr`pc)>6mh8^ z!)KtPEuBtJ^@}t@IH{13znnEz;1Z`#|UE426!>* z2DsfdA;Vp-|DGp-cB48!<{cYJ3K^&|n=Y#!CM(Pp-eTLL*1VuOc;!uB6jMp8N&M$& zUpvO$z=giwlFR_wSDiV`gi$TEW^nUKQ6b^|siMpI;(1{*`)#_Y%AW_fM>3x8{G(+s zp2CcOD*O1q{f81=q8HEqTvvV7@#iND#^?X8{(pxv>!FU%z6Q$Vro>xl*@Y!bW=OKg zsky#PPFst&dBiADt5P$%$dhDIj@iN3eUOaEF}KoaRRv2(VG9@2r)d1RZ6OfLqYjQY z1?7n+1-utvlX+P+xfOm+_D8#EBXoa!)i6`oF`o-1Z6HfB8f0@&s<5Bk9x!l;jk&5n zjYcYL6cx}a7tUSw$c-zWa9go*^DxNcb>gWu?Vyg!!R!Ms0Jr>4lACHjVjr5L^VQ3O z2WIvj97!fHe@}TpgC0&lU;4#Du{AOUbfalz`O3|B!yLD`@mAhw(Y2Qo}(?YqhVFKpRG)z_K!dqFE=Xo5UM4&JX{~ zM@n&DEjo~B{U!@w_`T#gL@T_Ep7nB*ROa+&?;zisI+XuzIphy`%!P*V(O7 zlgkmJ5s#~KX=Ub%HtgGAnuZ7>DzxJCZ!m322gRw$twg=N-rF4gbY&di%$hEpOCe9PTPCf{&r$!6 z3HiAB4yl@@$KnzVm+khNA@;t@V&Kq;B7*tI`*Tvuehe#}jz#{3d)z-9dPhL^kC*)a zYGgVW6H@NYxm*}0jPUZeRzKn2yNl%v?#4l87N7!PK38WWTdVdX^OMMPv#y)Mi7y|>WCGT9}xYZdKQZj`?jy>^=NvR{#zwm<%1j&5ERJ1x`4Z*Q0* zF_|w@JQJn!*tp?vI+4q5aufEhm@)@SnWx7sKK`d*iy^GA1x-%M`QpPQ6UD0isPNJ3 z!xojD`}5XU%I{H4O~-r}jv~EB37}JriA;^hb0(WOEaX4q#4<3gl`krdUbC``NAuRL zly>>Q5viyC>kay#Rc-C;z)MXke*Wx7;I^Cjz*R6j!_eCST6hez0pe)kXM*#2HtTn$;zc#x+SMa=C4_TVw zT3>(feS7c@SfJ2J`0(MZ-PandUpAyD*`q?DAgikJg5MV+g5O`htzZ`cMCNrPMhSM+rw4vt<6Tp-gQamhFU1NHuX`1%0r7gng6`ykO2*RH{SD}L?)niWA#QG?pGu2fRA6kQXjRH8CavL z*jLJ@Yw}TUW9`lvLq!oFdw2C)msSOz7;?2?Q93?p)BFyqW>9Hg{jvKC4C;d?G@T+# z5Nr(9W=n`e9+2)OA@uk#`Vtcn3x?qg;Okgj7A(ta z6Ifjy*$+rWQ0Ci4J8pP>vvxNO8ub1#VLnxXx_^GdAQJr(Ked1U>m2I8Zk50N{j#6_ zq5Y=&*R`iV|7X<$8lc-h=qAXJxK2(^qUiPdGJm_RiaE=F-PZqRNb+RFo~_f2$Arw7 znm~O6sL|CfJ&#PNv7lqP&O2nLc&@n8O(74vsNVt6(L0Y~!U*}@G_{*;-V9mERER5x znOJK?cZWt{?UX`Eagw+*E>CUnbkj)$+I}cMngY{o_|OfTIX4ztJu#z5(aZEVEAsty zbyb;_8ja%ys#Hu3tfM`0+a{W~G&Z%kq#PZ*nL3XtDUR&6$gt&|qP!Y)!^B%413%7A zNF|lt)6Zf6aN5fF3zf&S$f$?4GLh$UoIK?##4MKkr`C}t%%V8HX`*`fRPD~-i*PXiw=0<@K~j; z6kP&o=z{f>mn+W710_pPjsXryyOYt)naTQNM@=ZlrSyL<%du_5Vq&D7F6ud_thzT= zCsC$4Bv+adTZdcVFQlPTbX6~%0J-xrRY`)Cm8kQf8P%W!vDR?pY7uP|1HYEP1c9<^ zjg0v4^c`fUx*UBv%f(%xl2E`@gKdz{&tG)wO!g1&{)LNG)+?=PxrNm|3 zWIfJ=H;Q8ZmS;vsCVgGiV3jPneDjRhwJ1aO!U@cxe#hnX*gwGwr_Kp)r-(vCs+|9qhw*XkgsBoPQ9{P zP%Y$)jV|c0C&u2rX1`m7n?IQ>gf-tKU}i$i{qtcp9$6`sd?ACDc3ojG{uc8DnpqVZ z6H=1Y1v42Gw~&&OFAib|L(Qfue@9=PnYaaG=mk5ns1@^$vmeBXNngZA{p$+52rL} z2j~riW&k0O4HB*2fI@qu(ctLlo8-L0Z{J?HlP5X}xXsQGgfUtscf8NtQKlw0+URFJ{ zQ1gL7Wg|=!2TtdSCbVK?}4Fw{}&Z$@)7>ch0R zALr1}aEOgs7ey7GFq2Nl@fMO5)dGi11{fz|**J8r3_G*spy;j|b1 zmU@@~dZ;71&o_#QU%uAzyjob9xw6*I8dyYEk53^L11_uO?42*f;ilWRiw=($(-yio zxULYe8In@daPYln?voWa&Kepphmb1mFBUe2E^vn*j3j1aQF5olVU>-zen)OlKu(%&ZN*<;jNLr6!Z1*fn$BAc z3R((J!x|0k{oT_?8>s(8@=+X41S@UbTu@(#MQ2_serZj>Omg!2d!v<`eViqi_2<_e0C|yR=`LqDziPu+}M)Yyh>R> zn_7huI3%~Q!HjuRSw2fqLH->IyazSSeBllM2lf%H^RVlDn;8L_K)YmtC%gE$0f(d7Wv(o)9Kh3Ssy1wM*)W#B%Ea2cB2Ha9d>98 zPCgH(f}$2|sf_I7Cl)vhxu6G4<9y!nvrVQoxL$HAV(_%C8 zs*6E8=-sz!(1lVHWPjBgY0r+}2hPu{LnG5p#!dSMm)N(zJAi>v{%=U;Kf$W+4j)i( zkl^6g%l|NF6^Tjz&+q@kVC+vf|8GLQ|E=DMv5>Bva)3usFkQ%^T z&6)$CwY0@3Q`@C3B5ev@862M^1Nzv;zJ0P&&+qQL%pK$4STgxoilOb^qI`HzmNnXp z55LLr2SEB7>hLjq&s!y87~=0N1!*Agc8L})lDiG|F7bmns+}S;Q;TeyTa{VT@ z?aQg3cuo^mybtm+69D5PHE&}Qp%^lLSipAGAzc=E6j_{V;@Ukhane4 zNln|}`6ll&lIZZ}8uhc%(b!qA()PvKxnr-^ve$v9Yo>Jr`*|A2nH!ypo=yGp*)m|s z%SJLD$Na~%h?dNG*=O?&A2en$92;(%_KcRIJ?m--K-$2zJu7_izHzO|{JpGALoyv! zr4^lOK^F34Zdr}ogq=;Z1Xt0v)-5+W_gMyfs+obNG8N}rd=P+M;pAP~I@`t1?+QN) zMem-SvLFAzm9StrI1HwIe)#W%4x9DsPQ(>A}%ed z5RBRUBdv{LEN#|=W-_HjLpfknMGff=_N=i9_1Sz=P2>Ii zozi^czO+^f2wCT9N&Q}VSJDf`IF(E4_7?nM}ON@n1E7W1UO--iBPc`bv_$kuZQXmEChB-;DPe2ee0 zqP1mDhMJ0MoG?LhN+W_VOG|_l-{sTU>*eV#GViI&gHbTb!9;H!X*XyB6tlUaRN%Qr zunE-i2PPkTN?}j8Och9&?BbwPG1w$&|GJ4s!8?(#i#cBn7HXvDQd`k!(o_f?Z@hv$ z76me}Dcyy5w8S6#Xj4tTSR@-M~nZKXUd1*Q7&Y0g@-fTt2+-7k~t8s%2J z@0{W+AJe?z?*dLwwPlqwGyw?oo z-4?Tx?oM0o(@_arw7usq8`(DrCRkny0izX_V)Om9&}uei$f&7YwIXyJL`P}e8xpvi z@D88U_A&XX$%2IT>=^)?dSGyJaP2I)rpZxv0`=Z{f&CtIBIb5f(R9dU`I^z`4mQw==RXUiN9=Pq`*c@&aJ5$Ci0w!p*6gi`tuk7-iw>uf2 z=TnBY9P%$k9mi|CG|9;scxTlxluSo31jn>hh}VeArs60Wi7Pb)JDRS0Hrnh_3JH2t%32a)t|0Bho?$SPMrn;rHb1Z z0E@Y!H|O>$ZmD^9cVt$ovAJ@m;69>^byOs_nVIwnwhJZ2RE^Ww0mbZPH@$?cJb@pe zgdQ=u{(;6TdZ}MmmCL*1W=AWxm9+%P1-Ar!^7gUs0ppHK2_)!kb z(Q$YbVgabFd|GH5q+!WF%E+*ip=Z~Jg+*rx>i{c+vr$+HR#1Dsfs*aaQgfih8%Lvh z+$w?-q8;MFxyV;$@~KlUIm!>;USPL=+1q-HkMbUKZ|ocV`Nt7eAu4HuvfHFX{3aQO zZww=h8?zz!_VX1%SCw`se8-+3<#%$K?LA*K&v4|0v?jkk^< zrzAEs|r>%M5JqVJV^f(v1X7jM#W!VuZk zChEsFG$q^2uOROeB0pq%2G$#rb@|%}MI;v-$wZxoT!MVRc~TcQDgvaq=`mg@y#++s zdo_!43B>1+%r{+7ZDB4J`fWZI<)Ss&EL_`V5>UCQK@WUFKqKG%+(t!424=_nb2E3MSFG;k{KJ7^T>BYZYS@}?|#KHxj7~% z2PvGIerW{?L)tL7RW#j+0^U3MWnZYvi|~kt9bIg#$V8jBtpWhz`G4msKA%iJ`uUP* z98I-7Jnk>ah~j~kuO6@NZ8LyjPMu$_^4twZ^R(_9WAZTZJG0@4;Xgnu+dy6z(u!$f+7P(R;)&&f!FV#`WP4#BeVB`f!q$9X&t7q- zgjF-Edc6h9!*kDB8wNfx7zH@+C=4$7>u?^td_B6$FYr9k1z2RutPxv41CZwt3T{%E zlrnE3ek&D)P^?f4-dM7GmayNaCS2bs;LWWCO1zYxTZw9 zbUSn*P#0+6zVT&B7N}$J=H1yt3Eo5nC6z_!+?MejIVa7R>cxjKHge^fPiAI_COcf~ zx;AkIuUkxx*JAbyMK~n(MMvN4Lw4PldEWggQDqC5bK-sOz`*afv4kRoQQ8Y1GDfT7 zr5Ty3#C|lOFz6iZ(bfv%NG2w` zi+$DR@I!g}hgQ>##+S-@XvIfK<5qABL9r90#+K#`fhbA&Hu4M8!42v<|UZU4iS5hUH?PGQj_|jj(8_Tz~sDbF)tAS-2Ehlq_enaaS3~#$)Ee4%;(7-glk7inpA4L_t`Fx5AI%X$U4_o@Uy zz^G~fJ6$b|BrL*E;klE6^hN|LIE@0Y=%>np;N#~$G@8vd@yKE59nYa01{374kq^)bifD(>oK?lb5Pea36uQ2BFq%+dGH z-qajyEP`Ld93AF9y1JS*dxcHyMx-L+Dk=q<9_(dur;{ChTw1oL*YtK*TZKOivw4@+ z+?Pa&)%r>ca5%9A57`-L<=8a?UHu68}@Y1s~sq2|wm5Qm>u3To39z z*e`BD_V*1bR4O}%4z1Bi|EWoA&wO`aL&Evbwv`|Unz96ce^6&v&c|K8{$9C+kD zg#Guz_r9Z@kYX&Cv+dyoQRROmL2y&>`mpJ!Rdrs+k|vWu&Gav|;!5VQS*B#ieEJ76 z-~sBtnim)Sk2WvH+kO7+x(^}C_t_tHeD^L2P4M~ie<>!W_znm6Z(Bj>x5!BUw*8*^ z0SD{tzm2&*u`+)6x3Rt7oi99`=IdIAMSo75-n>LaYhbPB zz3hyu+ZjybE5e?flAL&Xh3?92V5SRgcl!646SUya0U9*-ZT$=ukk)wOM*{wC)DY0n=IuX%Cz$n2(G)6+6f zugF_JpQ#(;iR$s%kq_J#M7+2Uu^C)9bY-ocbhgZLIAU>{abcZM<5HH{5sj|7YHqXU zmnyEywQpPMnqa5j+Ck%2C0t`n6H7T|G3T-^PHFhL=K92X54vy@-F7V!e%qALwg~qs zMA{*K<9*Gb210nz&B6TG)O8}?Gp0TPeN$Hdai)!hF{uJVn~RH z@0~49j-UNzQ>8~TS5rKkOnlPN>;f3O`5|#)e&vy>~>os$XU<|~7E(RUj*yH&9 zjL69C!NJRfu#An(WOy!5QSuRWKVM%iAY8`rY9NjzjK?{z<|^cDhn9Be^jH|b;Wqo0 z8s`NgYPKL$vAiwbB_GC6S&%iQuu!ihZD5b$yjyad^5KzZdv8`;}0bOjK zBsDR?)1mJx(?kLI8WhjCG>XFBhqA5mVQE3o#PZw74WrZ-vj>~Xn45<>-}00eF^Po{ zTEf7Z%~xqsag`S`6{i=qkS9gktg@R+Oflh^=+%|+SsWT%3fFcoO}RO2sKakN#HonK z(6^wkcTMkZq^Yn$YpF=XULE1FGw-MolR2M|CoJu1yC<#Wk+blPEA&#QKDis~l7g=N zJe2N&#A3~q-?_ACH+u>A>PGtHzmCWUMh~x5aC6dL&P;MKb;z0^NH5} zj33lk>FLvaI97V?Pj=W=oCQvOO#34391ImZ-p)4LGMe@Uey`^d`I;(T-aa3l-pa(m zXEZnjbgB=KyU>3JZM!;GrR3cVgx>R2oen3{bBnW(QcK{bIx?)~scy|3Y~@0h5se?` zLswqZDQ121?VV@YTP=PYQDO(24y?EpL7P;m*|}mKG=M=7V);C3%j1NxT9TbjA!^2_ zVs_QCRZ1Z?K2p;97GssqGcE8<8QKXt^c$0o??vzB~3CHq9ZsMga2Wn^!2N&S#Wl>QPFJT!OZU(6W%&Ay_zQt6y zfQc&vfzOb#cL~GkfM{`uw?Vw!++@4rE50Dg&>bU~e)41R_&7o|h!*09sQg{vk+tV# zTShoM;5!z7DIbJ_V^5rRxpc@+P0Pp$!jvFEMV`;Gigt)FDRW!GgA|A&eZ`fSfnZsc zRDqT1ITE9Re0TIlv8f8nfO2ij?g+hT5K;4rfr&er_vb#rlQo9qHGp|N)v_{a1b}3n z$Q;|dVqkBN=8(;jiAC;EkbyUZ`DUW?_$TuqqQQ$UzKl2r?}-eY&Vx{^CZlT{63SASeT;PI9;YM zwJ`Or+S}rhI>b9LBiw}^J~ImLxL8LrU|rn4=dt2o!=f9P%DdpXiVt(wFC+qKsVEJj ziy`V*c!j#LM5{*78jQ5RVQvXKZt$QLuCv z(#xmEJ?;^dXb7+*ExW>c5$^!|NUJz~oXjJ6HWJ?G80o63z8Afkb=Y2~G#gdAA?C3n z2#gC7vp?9-ELjpjdb^90-5GRtKX=NKR&j%6bM@SdKJ-40(A=4sCQ@pP$sBx)*VkAd zpS_6~8FDo_qbQ@WLwUA9aCbWZifkb?DX~sm8<;?x9f@3FKVe0(KT2>%nzfF``rgWt zDfwhIEF2_Pu#O$pmTBL(!M>kF5N1dt(_HD7)jx^kBOgq=X)3CG(%)WZapg1j1%ZE6@zoGwF$~0~AMIS~8!p zJ84A$60X$qA>jQla58ayLxLcF?|_?HFYSV%8+jDn@MdGUr_#uI$_5m9(13;Q)t39o@yE0 z4ODL2lPo7b7sS)%*J9{xT85*Cx7udex}TZd(Kbl6py=c7ua@YvB_t{f0wIq((D|L& zr>BkD9fT>|4+9cCIYs+m^JTj(To`NXY!_jZAWpEJUs-PlLFdRB*}T1vlLo(5kG~jW zVyGsjZJjLX5o_4Nty|O+hD{@T3~Qxc!d@fz^KzyL+0G`8s#j}U@{LpU&fl0 zyML*Mvy7j?Uo0V;0gl*>#F$VWt(WHhI_E%}Ur>9@tVYqp%CC33VD*|L9vhQRtMI>< zp8RR#KoxDYt#uD&m|hIR9fq{W(v>a504CQB!+0Km4ulNBm)q z9?+>_>)t`_ledC-IQwPq+%lzwm2>#>!>YWh#5+QKqjt}s{S1rC^zShY^7Ek%On55^ zf=*=A(9g5fM{D;o0TE`@w#XXE67;Qc2dgN?YVT|kfXOwEf*+CxnD+abY-Y!=Mv(5s z5sGn=y|J<(@IJ7(AhWCrZT$!D)7km^9qyDf$)4>#OJ54CoO!wq9vU|RXBol;Pe+F5 zB)XoqR2D{Z3>w|2-T5mH+o0ua0zVEpLVf46xI~uPaiBFk_fJTwnw+h>oe` z2u7kVSYmW+xbyTboWD3pxQJFacyprOshuW zkXVB(b-joaA=cd?%5Xzefg-#NZZZkG!BP=VbcGie|XKrZcDk zb6}vK40o-Led|E-%!jb2KDklQyyatHn}=^pEGg!$Uh{UlyV2qO(w8xV$mK=2^USBj z1>%N3*#41dX|UUc?hWRHB-b|ce|u&1U}-nDDVs~Y##GVQakvJ^2K-UT}E^>KijRpc~raK6kJJB&7WLK zXvL-y=SIVqAG;s{H8PGP2w|J9OcqcGkY7JV^r@QuNc|V)rF_jIMP;a_@%EBB*hbt| zlfTw_aY4kKOj2&+y@$WJaWoR~0wzsstXwQ6A$j%lb!1Gt!j(8BjYC zWhzu@QFjqgX`ahnf4V;yqy~Wu+!Z%p8JhogHv0jm$JkBuyXm($#jxQmjst8vEnm{ZHPWQ#> z6X723y-if-2PzyvNLK&`tSw6oo;QRX1~9pvK?nUq!z>*05yI3X^;P` z1>pRaKNA?`Y^Sw+<_nV|X^yC4VYt#<`q}L}O+OsLU8O^rkiF3H%Qx1_Ps#VG6IXo6 zx8{7e@AWbeyYqLT8st+5uLbA@8cWKHWbiR;0K$8YeoW0fWc(NQS3&uM3s>(e70$Jr ze>#rjDmo6Zn9;V^s5J{ng`+O`v^9Kfck{c>3Ik)PCP|mKQe?4yJrEQ(LuFyFNq9rg z;eWdNiDp|qHmcCXkmGdo%z~CbnY8tg2=(L{IUJe2D{lT~r55ZY@aK!vFjrKNmAExm zB;OvNZ)eW{@m%Mn(tOGakqBJ|q5T={Hom62e@4CzRJ#5}mIfrO;OnRO#4gLfJz2+1 z!E&9ENJPgm%^mOCXUdOejp}@x#@mC0Gc}(br{^SlSrlt(<4rVEJ~a|Y22%j8etEOI z1xbtxEiV~%{}@(G4zooQ$85v^k&BoL-~MhkR1J?QDTzeaZ0sq7xywMsvb?q!gpRo)w@ol})$Y*1WRw4hTa`jY%A zO8kv06H9-)Z1WwH@!;29*z5tf1utsrHPz`Y&wE5Q3>EfetD;0N;%O9#6SK;fn6uiX z1UkL5^COSYz1ro_a(hxkG%YgaB z3(vfvXdG^zjP~YGlEfl_cuM&IVPyEj0Wx`tbV0KTh-hdGnP3^zKGcPM{eYT4uSFD3 zZFe~G9L_?LvB)e8s~N9FkX57e*!G*pKJVHMdErOZ6lDW_tX}xp@C5^M%L3(Kw-^~NtS|nyu0!Cv< zvq81ACGE*Zm){UMTwPisv)t23~6P&S7)h@{2c)rR1%hXnixe<749k( z+i;w?{GGY=Qs8S&Oy>j}8~u&U8Hd$OrTJKmlaN$|3?s@dgX_}yCph!;;x@vR^+q69 z9wDN)Q|I9{VKjO-g~R3vA>@}(*GW#>-xPOFoLegKd$J^gt@t`$EDtRWEBI=rTn5uB z4+mb+#XR$Z?C82W`FSK(^^N6{?hrsf*(GvyL=IigPQ+d|%B-AECoTkS%%3od-TU}o z!O%oyq`P;Mf+$);c$n{Rr)Tv&dc_9&T}w_4$g38lu)tvY+Zx5*cNHwu@~trm(C{;oJE zN<;Klo4@}2-$ipxb^nte{|guylC|g;1_gWnf`p@F@>I2-hPB`{^!zz{{~_aA-aF+> zp;Q#mvRmWM>s4cHGjo!t$Fz`b+6kQ%u?c>cc4+7X1$Oh?4_7~>G(a2JGJsa_KJgTv z&rU+Dd)jz7cs@h%VV6-EPYH$!6Wn?cu@4zPZUc#|WKI?IG+T8z2cd)JRZK5@K)`zL$ zAE%JYCz%>koad$PCFxpm+2%)Y%s?_0?N4tteCY%QX>)RDu7=g6a>#HQIr(AN{tWw) zjbb0^4C2k96tcR?$$`WBX#F`O@SUE=CD&+%fQjBE6Tpqv&{{`tH!WbQNi)CC8MHEb zbubERKy=1IevO^@%*|RWzw^<5V6`*~D>w=;*KGx_J_RiesZ zS^a_~8et+S*lV-#tJ)^!+gbgVB z4TM3)ev59cLq&5IstnnSrJ7eIgfuE6aHH1Rdgog+v(tJ|8)ffPk*3FAccsIUaA6p5 zU_djTa3Q1*VZdkb0t+S!)0nCN0U~HECuG4#bpB$~h01=H zyh(iiwF%pHpOLRaTdrJU4#izNFRVgIIc#CvOA~JLqQrlw>e}T5-8`7Qx9ua#lB7lN z7`Cs<4g1ygHjPedYPN3d(bWH3QNW7sVrmwEx&UgHbe3OftK>QB8eU#(F@d77@ec^r zm$l;)P?W|b)P%-iaUZ&4wlzKeL8KY59xCVGyVDK6SbsBR+X$wB!h$DmZh0PI7BT6& zxw);(EO{jvf-}!dpyv|4@75279^z13ziLRxG%=@`#55&%HEeQ};cJN11UbB~fB}$v zGO70u8aS)jxhb@1RMU1^w`2rVH8D#R1}z5(?MF<@R6>V?^~Fl>CmmB|H}9ym^Q5AV zbhZO&fAaHsS7U1#W|bsi@9U;lhduAD=tv|N_w#ZKgKlovg}14z_7{=K)qgq)xC1^6 zX~{%qrD=E)(YCwaaK9ncrdWT*6GKdhXIP&NH&|U@Mwk~T6s>mkbr!!mZg>rgo#o4l z1L&4U&}4>64Mscps73d(Z1`HrR)S0%%Z2ugWOk00?Cb^nE$0DS1uQ1k;Yp-aYu@oN zA&tPO;1vu@^&}cAigMle?|rkK1$jhJkY;hg*BX%40F6-1ukLVnwp}q6&@8$yiy3L3 zCTMDTG@5e(erX7kBjSD!X;{s<2|3$M^fmbQMiKsV^0 z6GsGao0$RgTdlq|G!M2;Pw+sbYsOilySw!&+JX*)5N>z|E8G`EqvK4N+!m4x-f)cb z#d$vNJ3yz^FV-(^PG-N=GhX^==GmKFWYMXrS(b?+2eR~M@_DTCA=)gk)`jj`QqsM6RDmo`QqaWC~2T~8RiS(m2sNuu?YmhW7t6Hm- zS}my%GmT-pxr77du{>p5Y8r=P_`fD)Qi5P3WtiVcG!m9rH!nR`r?@SDJzj|zQm;;X{i?i(lXPnN3N!Z8(eK?HW>{?mY>n`Vi{23 zQLi`@`6jID7+ls|kEzc`U{VN^=rwP%q{nI4q7b~U9v;o`k$zc5LxE2!Eqlnu{W#@g z|I5z#mG6wTbMw?**NvWdr%6)fevV-Rn+YfM#Z#2e72*QI&Gh6xEa{9Ug=FXOsenRM z30p^&^h-?Nowu|Q$}sv=#N}Q;dT#V;wj({^*$*ePDCW~Y(cVRsC5vgfKNmJmPZN4R za)SqMb%t)qAE&c`rlAh+yr6dZ^ep4mmOc_G`vCs0I+~(4D$sd1uc0mZ;C>LYCg5uZ z#SSAprmB{fk@K%kdESoR&h~pI^^&uT?$g{7BuF1;6@&Ikd3N9AE~!R>_gZ%uLp|D1 z^flMj33_0zmA!=RMFQqsBct#KG!s^(!C(7j&B+HHX%P;Lik<=tQ8O^P7f7}4ycKuu z;E|;dOz%l>o4bFWQkQuJN2cHrB|WMJyRXFXKinoD#KYFPR5T8p#ti(*-0(F`p`!^X{P7X3*&c9n=J(_=bgi24*GedVn6eMXUDSOJVHpiP>(`8gR|C^}r50@jT zhVDVJxS4#{wHz}@np++F&%FvNZ1Gcw325>5QGGH>D?WLEh#Ezzrk3i3&Umt6edL64 zX#6nCfii0xK#*x!Cv36q+X#aM9!i0q1&3J;Jui4)d?f&W)?#&e#`3WXexY0D*H-1g z&n&@;7Z2M!L;QH8hQ11v>u$VQ3mTm8gN8HAcbf|m-n_}v|Es-!z!U!^@f04f%f8AH_@lb`M=pDXn!3FOqzOuMC$y0gl6Vk%^#k`2O>ha6$fywywm60|d zge8p43pSI!r-%5xf{bgEg-^nE+hfSI%9~wkGOX_M$o{b6GlAtdM4so zqDzZ+WC<)ZKzfi8{*eY}V8TNLo$loJEq$fLLs1VVorF^5`K_5ek3(>@=GDlc>uIUb z<_ztdUYwJ4`Cs!rr&yfb#EIkt1}U0*RHK!y#oHM!C+lT+W-3X1O!Ko?gKc35Qn2~3 zSm_Scfwb+!Z%<{ZF(B8a%y8)r2UF@k9DP&~pUR7pd=T==!hO~vy(zA}1SWy7b*V=u zU8hHdO?MLU!8J%I={+`n=s26pop#BdBK3t!S6!WtwUWVe?;SvF!RaUu4`2a^!|+4G z!CCL=NB;g@!|=Xq+QGpx7wGy^N!o!CJhH(fA-U|Qx#_68ofAWi4=hz(m)ocbKUr)Z zEr%kpQN~?Np?hws)P5dAT-<;CJYxA(i*IU0w!28tgs#VTlvz_22N@@`*N9w3nLvAC zQXy)_GSY49p))XjiP1f5MH{hm5NbKt))Y3dhQu3%;)lj!xUc*f^xk@d^BGCiPAc&n z2uo!G%qh&)!ClmR=S1O!lA2w_F73$o*?qHI?imbPk@@41l1QpyB|~~0?WJ;&8TOID zl|irur|Oo`jC8mm?Z_RN4oN5SN115QDiLxjs)mG}z5qjo+NmslagSqr`%4tp)gCHq zK0Jd*L%ipsBP2`~yL$!OW*#Y`?p9p>(O)VI-_4yZ7Jrm-?LQ@|tGG%>?yS;y4L--Z z3fLfxW-9HfV*=u0;Spxj9A6H+X$d)`YA^p)qW^p-f*m3$`9IqG%BVP+Ze0QdlHkFe z5ZoPtO|U@F1VV84;4T9U5+Hbh;1)t4A?V<4gS$HnPOupmWN_{z@A>Zi&i!-N`E%}{ zTWeMK^sHXJs;g_)u6p*f_nt&E;j{obF`*qnD0H+^l}gEf+tO{rj@STqJ~_Va?t22m z(^&i3+Nk*zbkrh%6js7D5q{4ep%oH<{l78nrXNLuQ1@j}CdI4A*hok8f~OR8xUFXv zD8&m+`-N7DhXokfalybpX+S%CMqvHRt$DMere*l5ozfWAGGhDnk&nnuddzUbJh}#- zQjGyR;AK!5(0eXU!yRNAzUcF_#XnmD55z%YQqkhL3vxV&W7-W`~CebZ${{4(d zJ8<8T%lh3m`@!pNEtFNIVy{B=tB)%9=9%Y?)1p{P?(##9vpIAH%^dtckL7TGlLm1Scv;8!SHw3ZKM2c+Gb>}^Jr>eh?F>WKoS|e%K5q25 zgo4ddsZ7WHaIJGO{w?=X!SaB>?TTl`Un-xy{U}`q{`vbN8a4wN{ZIwXA|d-%7@i%3 zdB12*+)o^|>oo1tb?-Q077Qd!jI3%9Cm+m$v5jOTr?thpOY5HHYJI-|r;EP-SoU@J zMl)qf#nut;U|+IkCx2-Kv!SM9pe^tgyKU)%4ZPXihFM*b{Ci&Im-C|+*FEE*w-bv& zHJc>JyDPmd!Dxp|^|$-3O1&jjWem~9b7W_#~_I@?(A zeS~*{1l+_hv?O2Ied6kl{gU~B;c zA67Ip88Qd7w5dCKkGl~O)7g4k9d1!T>7o6K6ji>uV|I9?$}iRFn-4VjWgiY7C=p>IAUq&28bLY5USl6 zWUkMxb#?6nWNrpZzf=sRKXUsut;q9Y)XV5m?rwhGh}rJ0c-~+d)wYdg`dUv*E_E@v+_|4;_%c5%r3D+10JXhWzWu75W+>uh;>^EuOoAHKT4c_Vpy^^^FsbV;?EYw^pxH|-DMd3l}a;#b);5dji1EW*H5U$>gRUttfOkGa}lzE;la^z zOrq_TG?kM{O$M$3M~y9)>48+mv?&~@5ox!6?1?T#J9U$qt5gHg^v`hU=&m7;?43QX zsU^NBCor_Rvitq0B1fr0)5Y~rC^DTfuT0D5awa|!#S#nsAZ{y?g36Ce>_Bjsi{pf~ z8}*VShsoehlWX)9uPb|_QXa}O!QrfBfj-hB8F?zgOs?z{m#c{NiAB_f@Ax8s;tOEv zik*Ls6X!NjTeMMO=wTtTE#OYW14R~hnKENMGdI-CbiKzj zrX0$uvc5z5ghyA^a#D9X=<|+Vp~$TSoh{`(MZ%-Drun zj`9yd)SR@#9hFzH6m;rT@Ppx{}3J?rkD`IhLh;6}Xf_**6ggTRvGML5I6l`D^h3lgZs9)t?cTq#!NAZhZy0I~ zw>gW(9lSD(`*w*T8n|c96te5v@r+pd_-me=NOWz?Q6rn?Wdagt&N;LB z<;zRj7p(=>+S8K`m0X+LGtw>7#${plde*MkQ*nkhXB~eCmDhK|WEV zL1z=cv9m*5>_E$HEBHoznGP|TzA2WU$4fT|cbQ4syBTX*Gyh@XA)35j&{~jN)GZeh z2#i~~y4|h66au60_JH^1quKdk-Rypx@Rus^yYu$Cz-8bfe^4gqRmsF%k@LRI2QY#x z@O$iYRO`53tON)DikE6Z?6&Y6jW+v9x*3AX2D^-8yGNCxM%i4bzEBgaMZM_x-QZ?r&d@vCIOTG z`0ZR&9&bI^@sa9?5(qzLSx!cT?=Mokc3MR{H{?B2d!GEVynS7X z`0RF+ZS}K?e7Y`2NamKc3N<+LnYcm5Pn3!0e*DR9QQ(69UJ**jQR$*j7W&oquAyFJ zP4k&eNQY6+$q7Km@QR3j#-80?%&~)2T;?*j(Ddx&#Qi4-OIiK7eXZp1X-#fn54_jJ zJtGe6$}^kN*QWL2VP)jAg*|U;d)3di$TF_qtRhot1_spJjxE>LZO!-TG@TVkz!o1Q zDsMK45<&9*7#2!~Y>R(fzokn>s3zVmOTJPndvRcpUU|}7xL`}wzrOw%=J-ueMAjxC ztuRmMGP!F}NZ&90=McKLfa|x&+2lqLNNUb~S?ElIuvjwUDkbo#1o8vxE^gg1+dYi? zx`_^9evb8{;w=tw)ggH~%2C8+uv2PadgOQIFH{PhP43hf9X&1^=@MM~J?HQ|n5 zc7>dl73uSxo&rObl7_VV-+Is|LBU`Xm}}__+K|-fS9z9%F1t2}%g?3DwiIsjM)q$y zJg&O~Y)HXH3YOJoYo7f)n+nP{yLD%j$y{XAaN+Je{;=7O`ti4DnT6t5@7xHK(s1Sb zW%uc&wKUReY{AIJX&KV6Aa!rt@RyG+=#u$6wg3!OU$*+yR_azlgMIkXe+0Pxlc1-f z-%0<<0=FjYaa~uRxQPrGd^^2Csz2*6#bULVh~-ry3W(R@)!J2{!}CnB=%^*yM)1%_ zzb3!V{GF5bwXKS#sVg?L$OUQYbVsMgroT;A`ueaW*`B=IAo)vF6( z*&ecPZ}a>3u8L*;SAL7O_V#&JP>y$hdG^VAFz#Eeh%$#|Gat!_E(FU>itb%@@|KAE z^4Td*tCZJ?wW!*fpWn^_vNiPD+}9>{Q)vfwy-W*y)jHANJZGS>(}gLQyfZc-0S1<< zHzLPKMU$UcewFBWzagxy9l&rd$SsNWvS1d98N*Q`mAaYq*1E(?UAyHrvnhv3L89(z zfOd9ea@P0aNSugZE}i6Zl>tI4tXrs{cFkAHl{nN0z47$_O1rVG#YL*YFS(@JE_57z zMS)NHdU(ebFxP|9UCx+8izuE(72%(@}`t*XhODA}VDv>JV z#p?X3JmH25F?I8Af_w+ldke>E0gOnz{S|P2sf4*BoW7Fwg)5DXW2$hV)XR^*f71kv z?9ed7M}0wos*=uqj(5a<>&ObAb7j3pZl)2|ZmV?RlR*7WmWHs{cGnkj2?Crr-Fr?r zdXE%bl(kOJzVkOaxq<8wP`7SKxo*z{-(X6G4hrEytz3^;vMuLI<*>cdYE6T8OK0SR z!>Sd<7Anr#XAIQFQw=xflJ!zjQtBm^P?@tBs_=u)%^I_DBP~-p{X;q&o?}3Ii+~8= z65~mMNZGKosh5x{Y!BPt!OPwKTy*Gkaj3v40TgJZ<@beo4$yxP`nqvgNbVT7RL9!a z<(`V$-hxR`LzH!>2VY-la@IRCvVrT;lc0o<-k5Inf_T~QiTBm-^pKH#q@I3O9w5!^ z=wR-BXP%~?ytL%d=HcQ{%ts%gx!!jV*bdy(jFo5;qRAg^B{FRzEVW!G-itzh&UwCbY*~YXin>Uwk+>=?96&JOa|Y34~EM98KHPj={1 zY~I#^h76qB1`BX8_i9-wW_F%_k0Qbvq4|aK?|7b6zKTPW4?4xlHwvtjg9~1ab#roQ z387CpTk+%W(MC@wC$zP$FaE0Q5Ge8q9}9z}icg@7zLpY6J+)*pLqeIMSWC(5?{6Hd z7YxR^2m7m-+{}2OMwZ7gE7=B_k;3=I1QikMOI5&hLw$3*V=ZwGyQdb#J}Vsb@Mm#; z8H&5(0v*AWFk^sX==E*%7H7ArFjh{>=-K(xy7k9Vw4!MNe1l4SDtjACCyE5`2R6x8 zhhp{UhHzIc6Hg1MDboDgZ~N7ocbPOs^=+RzNQ5Uxx_ccF!z2x@mN8Do*m*!C5Z`a* zeeM=>O9JX}H797!n!Z8s<|RKONCKdwF;EcTVbRu(jtZJSF!d5D!)3yrSmfcd0b_!c z!suW!sh1sengwk6-l@9Hz;qX$j`=R@^@2`)Eb+2o#HwhLM}oC&vv_yP^we;lORv`1 zlc43!zQe^BFJUKm*9lW`^2!R<_O<$$e|u1KbOaYG+UJp0n{2b zuBh#fF+VRi|Ee`>8d4!rIKwn-7q@AtsixB2G%Gi^km8^~bluc^jRwAxm1JR_C(k#5 zIsY&!XK+9&wXhaz=|EuLI9Tz7lptI zW`rGH?!bs@&(ttu{1z6ez-XKlU0yg6rx){Ud}sWO5vuJh z6xGLJ=G9XV3gzYqwkGgfPD`Kr3;AZl3ZJAOi@{qbhYSFhl&P@I+l{F`Ar8 zFRo2PW1$ep6b^Z%feLlD-}-`tdhIHCBpU0uffwLRF79P3rbL_H4mGT_VG_8pz8?71 zCzk4F0X*vdD|z>m*IYd60!taJU(6ernUCZb)J4C^j?^Rn zc4A0@ToLjeW%PGV+{Y-LS_2z%SNPsb}y}3|Up1WXptjC0IhK)2lF}u&S_H1IN9t>^Z329&_ z%SoWrRmt)B06RyD&iY-{TKGZ~#mG8}a0n}qE(DE(sy3?MZuzP9+e>i9r|E+)BV#So zg8@&A9QPb8#yYOedU7j{;GBR71L}~K1xwgF@vJnpz z>FGZWw_QF47!!DxhO8lHF%8Kcw8=EA$_gouwJ6t8STj2lA4Ul**S#!z2Yx7DrVM3pBu$CSvQh`1<<1}6vOzXtzW0$4+Oxczvc2+#b!t#T(7Ndkn z-);k`VSbKjzIH%R3#GGI??sfEO)u$1IlvX%F0*&M zWylhH&5&%_eN*1q2!o2cGgw8Pv>rK(!O~LqQLQW28!16ic!&`YI_3JC@MvjX8xPmU zU7Rjr?)RguO$wdSIKhu+QP!m>{`Wja-TTez zK(yxRh0zAdj6QSkl@gJoichCrg2!G_9(N?mBlrfz;Srf|( zOYCFqZ5PhWX-zGJqhqym+2?dd`h#`l?+fXBZ-BfuEb4BYS`4~Tf`{-eKYLmqdtqRD zTH%8`HVpdOb+jz1Rn;q|-DJ;&=Pic2hZ~^;D`r#`nc|HD1y(}D;2 zQ3T=P@!}wWs$!Q$*=8{%|7na!9BNC!xw#cXp*zY4)*Nlv7mO#*&S;R$Otw1Mb*-RQ zE%6Ig2J4=P4HvvAd52-esU)P!n4M!WZ=1(Y!MHidFD0x7mR1h6GJoh#fk)oZRNXbv zvwt^)J8Ld;;79LNWc~ZA!MAF;(M-n@J}_!68OF5>B#aebq`M+3+`zR8G0f6i7bOTB zj*VU<_uR;jrEm_dh6T36iyf#96<<$$8=MrV2440`jF$ZbMM z-3Du_YOj9QeSKH*B2+oyoBcWzH*J}*pcL^%mov!d9_rn|GBVOF;6TIrlHtwCLdHyw z#pMPjB?t%ak}0ymv%SlWi*0&I)HtVT3RACc;WOgHzT=Ms;%VZqy4Ab&{z>x%3f5)v zMXCgeOCsUE1ZPK`l9i!=wI6MU0ZU3{@6a%=@2%2&-mSm=ws7+6vc-U85Ge*cHInYv zp^jN}4mN@nbkf|PSQ4bK^5w?WI-j)*9KI2LtOaC%{FFw6zG+VFaI}R=bE^l2AVCva zg3MnOT^l~G5tw3AfjNC=YMt_)*!z-8Z0@wROe{LguuPCdPi9H^r9mR%C+alKxLrf& zb3s29J}IDNAgDjj7Uz|9h^lplVTB`5Ll4qJmQMSIG!c9**o<<|dQNa{de{PzK zKCHdNn*;wv!lHcHBZE6zT;0@Bu>{&T!UE70KPfo6ZA^}4?RD8XLUL7HJdQRO41Wdv?8c^Xx6eX;AAtsYyQ7yh$_g>kl=7H4%Juw3X9 zY4pFgdVgF?a5`uZD>`UfL94iV(5EJt>wWx$;L_({+*pD^D)hA+S5yPx&J8d8v(a$U zD6ioC>yXVTH8Dd8S2fzaIEL={q$NGi;++iT#F}`bWuHz%c3u}x$-%~*gtjEh=Bbxl zhIRYG^KZKgDq2Ubh|Bi~$4HLtLdymrF^0BGK=zIsam>!QSvO)jJH^Q1y;FvM4>|~6 z1#PIgU!2vfMSyR{l&tTL--(;Q{~gzHq_&~zK@dHL{dHfM)D%R}_hID;K|jEAf#u9B zV%;NgSDSoE(mT;&liIxcCZ289+B$9CN6k3W{JIkt+AP~-F+R5P(oRy_h-QTIh%ec^ zn|>{=ZTtEcsp2o2&&fx8kZhT`5*_kKA0r>0#1w4z0av#s4b_@HE`(6aoQMymKfQB- zoFCKPu~7AWrULdg?tt(3x(gmg+v;ExPRnz>GnW)rG_x@HV71|WqwMT%TYq%nH$3F8 z3>s^P`etWhJR3IPU}U_f#IGUdCsSh5c~l!#dw=hQ6&dy{JBy)-zokFBH7P4*w95FH zO{cy3*W_+P@#OdIfp?NW51uNvDB)i3^&of&lVHiagwa>NLKhEG3+XB|ct4v2^i7$D z#Ei=i*3O;!@|P%DF?Y}TKN#iY%T)!hS5NNg3e`lg#j>XBdp=0r(im|=EMt!Tic&7B zmg6#^wY%&DH;?v!qqx57=pqf@!(;fh{a=+HGN;s0+2H`cClPZst(MwQstm1#Ek2Uw zePb{xaPM-~og}xfx4lz*{ZRH$>=GP%a@sdqKrx7IcU^wJKJ-JFe{+-1ELZJxKrP&0 zuR@l;(!K|5_@je0$pF z@sr#7H~Oq1*V7^<8)xmN&5J#VykgmSK;OrVB75{+MG8G?M%ODgIZ})!_JQ^qC;as3 zwbk&q@c_}j$Zf_8h=);YGe5z;)2t$Ra!MA|N>hvv9Z$U9-wG8$WvC1NHhV?WXH>-AW zES#&wKMH_pf)T3C8H<*6esi8gwG-&6S1g~@SGK=Y1!x&rrj5&HbxbP0M)`-VQRL@O z7X?0&yd(83Bfub7G|@2%Wprz3gfP=1>4mpEunH*pdAh?+#5B=7+m@vBZ%LJc$0z`_z~Cv7u1X%UZNEO$@!K! ze%3TrFL((df%N8=nd6|m5j83#RZ?p^e>TkC@Pt_@?u5+Mr#I(@kc1+(2?)}XUbU+4hf8)O5e=_X6rHi=TDZNWfvWdnW zGG19^bpK-(M3laD;DO4U?fuA7%{4oJCExPn53m0&wslzSj=b&SA@iGFTMqf6^pY@-NdU>g+F<@$d1Q zEa~6=yI<1(zx;pH8@`9_!5B1RE~{3l|9F)BvHqjn>M%669|--YHszvj3i{7Ov}5~c zaA{Z2jxTR1-=E?C9|du^xI2G8Lxq7&K(|Q%x`3##rTqIySPZj7(;7qkmrW@9})E zYE*i|yX~5`!7vVRe>qAK4o=3H8^UgGz3j0sZ|Ug>#bzgqzBwxgS^4^=gYHgpZ&tAZ zKJz>O$mBn59z903-Dihl6CmP2H=%8}htAE%J=7Y^5AkWlj>Py~j#gz_ul6|q)PXGl z(B+`X1!9o*5>@L~?yvUCFH!YD?H$PefO3b~gKKASfBK@>ovSj&pj%H=Ju7XS gWx+;0wf!FZOK0BPXR{%vKhc_BE2ztt$(n}zFYzw>!~g&Q literal 0 HcmV?d00001 diff --git a/docs/testing/user/graph_explanation.png b/docs/testing/user/graph_explanation.png new file mode 100644 index 0000000000000000000000000000000000000000..be621444d9378821e0c46196ce9d684ed81d382a GIT binary patch literal 47744 zcmeFYWmKDAw=YUtTA-zPi+hmb?(V_0I23m%5L}D91oz^_t+*C?mFZb?m_cD@^hphEHbFI0i{^m@mqP*n$w|H;i;Nac^rNors;NZF8;9klhzJYzi zdsu!0`+#>80jeUx{yY(lLty{og2XjIDt4wI7Xt?qI5S&28xwj*BL@=`TSs#{(DAEw z0XR4kIG~uYs%!eevXA2QO$OwSibUV~#xivh_&rX@y93|_ZUryLri22Z($(QLtdP$X zQ>v-0CHx;iS2-RDAX8hrUKL_te zGq^KwQ;1{aQ8G4v)9Y(J^3I&biY|^ zHQV5Ph?n(vQFzl$CGaa)@ZJCb1jAlLsy^qOK3&lEC$HPPJI!k2fvLXB{noQvad0606{S7AGq&FCR!S`iu1M3O<&g`doL(%F4!MWo0P{3;zm=ACZH-`giVnKonoUUC155&cVV3tklE@8oz)WbVI1%JToOCnXM> z8M(Q+ozJJkp7^nUb8}N9i3B(?Hk|p-CO=W(I7mH{&rAQ(|Ia2I{78fUk{?70`adVR zIX>K8*6ZZ&FVtE=4;KD4ZlR~s?wui%#K6qMGuYkTZF84PZ3qIzm#9~)#O>q%i-3!b zp`qXSxY8GzgOD8a0?EG3O@I;>vw#3f2fkek^SP@4?!RZ!Gcrb#Aev^b?o2Z?Gyj^K zn=4h!t*nfpkVzc&cz?c{^LKsjJDXcuRo3$?zA0b*Hc)79JiR+WrP7zj6GM(xsB`UH>}3Rx8fLm{#@RQWEF6=k7#4tK(O!4HiF4 zLD6FA^Jld8gGsaFQ&ZhdPW$F7(<42u-dfR&0t%CLtYVJbTpnRI+EFa7!MZ6&rm4-W zDjy0x8o4I_h@-IEtf^idz6Cm(4{^A&OtRZFYN|}l0w)u5^T_)_oTs$<>F)HYGi64) zj#Pzj?7Wz((-&sCvw2&E>{CUxoxjqsCZ#0+cGv!DDI5-7@4dV^uX>E*q#?E@@n1)yJD$Sf|&-qd1O@@~Y#lIVg#6NlRCO+M=&tFk?5nR26z8f6ogz8;rpT zx#QKCtqmggutM7K=4os3w;r0E*T=?yy8NDkeO*R=Fo!$to);VD8l#fY%*~CasH`k) zqKTXk!|jx81ktBlX$@Q%e6yf6^o@Cxcu{z)1JOuH)}qUH0iUJ;SJarx#WF&TUS-i1 z9?gCmE5qYfv)PQXHk7yhqdjuy891em1tQPfR*>+PC4FyhMCO%B--ilIlc#M!Xew5I zU(;@MNl~LH3d}4bb34rFw>>7^iwrQ*fpDQqwBxj%O!t38lI+L$k@d%9PAMcd#?znN z+b~)?&%SWe`h9q(JIH@oxdiclY`rlPZ0WXx-ruB0c|8nXm-@c?v-%iKd@^X21Oa)U zoo*f6>I*vEMR5)7Mw#lNkn$#zmfD%=JM1xDi0RVa?ZX*PWQ?TmME@uc{eTN-M&1bugSztsi739~99;2KeM17BOG{wNQU zJ%*#O;y`z>Eyz1ak(ckq=W=LCj1g{1OKVg_GO^#~(qLpGwo zrd|kH+<@!6-+smAc-f^pY4`nHkcHO&0&#JxfcN*iZr_*f}XX{z*h#hCg43K&& zpEO2QPlInIsXlUrsXId#FHXLlydwC)+kqKM^|7J&=2H6NExno6wfEH>+*JJZiRbb; zH}=bxbgz^|R{DFUTT-~JifcZEJrugHYUjsk*zE(3USlKorOT?Vp(9x~P;E^zlLk&aT+=i5JD&xYztInv!Nxd=vv-eQ#j)-Ap;(h;V|7vYu z5?O2uIscWVO1;EuW>JU)wSpR}Q{darWi%TX%eHhs^2$wb?<@UScf%g zUDS(AYwPdjP1d&#r1?GQyH(onU@>Gp%Vs|_t6h_wn_gQ^`Z`6=JB{i4X7)b~r+l;S zaL7?8qwoZ9xu?|a50dQ}jy_mVYpaiIvK=o@x^{v=_eu!bPb)L8OD!KC^lqW1FHwBk zWQq0feA;^juTKOuI*PYfe?8fMrThbTef6jQCJFnI!sqzG$L^z?C^i~?KdWX-u z9)fQ?dmzLOUu~VXJZ{p=e4OO_^qTnO57pa8cIaEVy-#zI^ln!LS$$r=Hkq1Aa`uneN56Q-3Ro-%PU5_iXulF{bA~Xy zdwofqm&-dEu@v6nP0741c*`y@*E~{6Qj08MK*Ju5vkLtGwtu;kHe3=v1#T z9J?zhT9+54%rN0po;=lt-`Cv@4=CQ7n|rfc){5N24j70bdIwBQhK1lD&L9Hr?bG$X zoAJ45QyZ&WUOB7}SoDhG(B8Gju6mnA)mDoaG>tCa4mVWyzx3~amD(5>Bs+FRGu&Ul zY!y7ns68Y7Q+j8g4 z+IfenqRYuS0&#=w)A7u+Yugg^GNBB(cOB@vS=N7CPRIAYaJVvQJIiWgIcGIj+okb_ zCi%EL+uqfdYq_@DKK<5XL962_6^VC@@`4KI<1|+X3QAX3!R?bJF#=P=*E6lH&^QAhj^`^C^d*PBmj%yev`w%)&H)K zv6~`17-pYv+DK=+BJqiWj^$jryk{&KM8HM89v-3J!)hbT@o9k*iv#*QFaPFS;BEi^ zKGFT}vfeETdarIir;}KiJK4(Xj?QIU; zUT5;-D5ZQUU;kq*65N~S)Oo_gP1g-XNnR93TQ16i0CxIA>r#|ZcbCf6id3o~cU;6` z3ky5rgB^yb0;AqO36jQ8{<2!Yy0AMBFL%Ow9O9;q4yjMH?NhxgBMHXxP7^m1a7IFk zH-P5F8RaX6V|g%uU*kC=8B|Mocar5id^ks2F^0kg_jren^Z2yw?7h3%=tu%S%(wau zF0{1#b6_BUVOpe}Mv|h{)1NI+Z8Z!25;JL*?d^j55DaBXU+6nsKzq|{vEt>&F3F)H zG5lwqZ9lrbV={ENj`JAu8tx7E!qh;cHT|V%-%c1FcXfLr6HixN8DzeJ85px$P*Vt= zA-7S5NB1He0c92$_~@=*rBVPVa-M^0<*3w_dptLv^9+~SeuA;A^kkA_ltosv_FrEe zUJWn>sDjsw%mzwrzL&D}6j!}UA1bH#kg=^}5XK)W+;oQkL_PQ-gWbWUq%%4P(hg01 zV`<6~O6R59w*!=f7amr0j$lVegGcM@W_oCh5h20j>gxE7<5731j2ICuY|rxYFP|u$ zp@OX+Ezyr-m3Nnog!c=pooi#A(=wd(UJW1H&WIt-WxTe8o7PY`awV#f{g)x+5)yB? zc;|$S#6J{GZ-6rKH$#7&$LC!sN+c$~#dB^K>PqX46=VAFMRq82?~hQ^H~+(0K>zRM zmNXnhaGC}&TaD9@#b8%V)6B=>mm!9TCE8qbdUC$cXZE}nB%%kV``lH3R*%9gb)jW~ z;HD*U&#GXew(hkGy8;@x5TM|ynB%E>udFto&X8F&`O){@l162)zz-<3R1gLoQv(AiA;#p zMLHuY^!P=eWU4$S;Rv;7?U8+zl|8N|GzMa4o3SlWP04Nv-$@GZ24`f&uM!OUoyAl-z#D(&ZRINDUz z;AUmlobvEB8h1x&b4}m4!^7qF^ld}zPcNux4v>?Ka=gDL+MCEAkn4k9>H&c6t|qv6 z0mjva+fX++_|OhtQCKt{(52?f)EMi<2#*Y6n>;V@I_<$E*eS`)&yMCddtvxS9#tu& zIOQ!r#&n)Es-rszWeR`S++ZX?)R*P+EcT?AX$%+lUIFn-T~`-r@H4ElNunYv zt+vI6eQU$VA25AodnJ#8C_@?-85-1wNF#0fsEtL5(G9U}yJ^kRO(k53(f&&(5T`t+ z{^N|b>C>T#E6g@N@8^gn=lD0N1fI4=n(JhFR{mH?uG(LV-Nbk>V9%+PdgLgIoW45P z)P*M56%lbcNg&uI2<%=u$RNOcFG_}v_NJ%Xi@ZA?9ZrcuM)AmJmEsv2Ya&MGKB6o& zIG%0iK4&{x6hEJri26wx>Y;F2;eH!pX^B+xaDkklqK}K#dl^r_+ar_?z%}NYWfgI7 z42;Y83$KBQaU5D+8Q8qTzjYp80wJ&a?!EW;@&3i0xz`zAb6RRh=qJr(5s!(Gzld($ z9qIq(@>|?2B#$#O)wVyjXHNKAkWvy|x|AJZQ#B<3=sCvtq3M{>(%?LgPo|Y-*!qtN z^cNB}P_bQxI+rq_xE9c5G zs}s4|q2J3(-Pz&w>fl3*ZS_=-{^7+|nD0S|eD-#!r-#{gjtx&tjAr_o!83*oM9aOI zj}FB{rl_kCw^?R)*`(ls?$XARoRwDu;WLgWJsSk8v;F;RuP(%yAC@gFwV;!Ff*KFpqKXclo|tH>!@tKj)7P^!kMHne*_A&||1xmbq ze{#c}@pKA~K2K{uNvl6b?BcCp`4|w;ZMT3EH}YmFeH%bR7byF2aL{nnm>m2{vlGll zrI1uza0TG4GXYN3|8A;_Fz%WxHNzKOt5D{`nfN`?KXt##yn9qrX^J{+MKZS{>b@}v zD8c{1wlyVEEH-1~%)Lgaj@I^mud8Ag&*k()Bg%6?E0bo#Bvn1g67Fa<;* ze)sMZT+Rxiwbv)P;xj^7a zrPf)h8^!@FGM|eH@wp7Ttz!BG$GWx5v*%Qllq=Itrc2!Dq>TdN3J?Yqz@AjX)z>cWa2D=FusUEEo1 zrl;8esFTygN-C^E3Qh4-1@KBwxNm}b=W5E5M80?;hs8~9=na03Ynt~8xL*Gh)dq?( zc-fB<^S;0@?K=}CE61g)r}b@JH8z(ZSNBa6y-KTkujF@t4E$UQ%$VL7{0%SM*Q=s(x@9eUfeLpboe-I0)AD4mdW zZ;!mVoMJx4_*zUb<%Dkc>OJA}p6sV*{)Z=HVq%#bE6&QFDf zJF<@n*MrAVi$0YY!1V51Y(3ONW6kD+Vq*a~J5wMhRjbolkY99bN_|BN-f%*fKOpi@ zHNZk7C^RH=JqFwy^hWcx2|?<}Gxou0@`0kdaBgBrPQNa(X^^qXVUtN$mt2(tfb;_V z?+9TpK7<+t$}k z9Z=6n2L!K>KEuNB9oRH&&+p3b>;bj();o*hj+4wGuZlSj3@EAk)3>`73F*^BNq|Px z!Ci!{-3gIDm+7hdGjlx}f=22`k5YaZ8I1s=GKZ9tipgpnlI03Z=3R_%q&35q)86dN zHANZ0#e)}Wl6pDy$$xAYvFn14=7bfMFQO;1j^s9{DOwuyf)b8nB zjszW8nJ&NZ^&PzQFxS`SV64ah0R39bvb>znQp_^l?#Lk%8hR@&KXYB|jEw`pX{_}Y zvFH1r_>+&I(Cy95yml*We_7N;9u~e@myM}C#(6!SI_H|(e($}HN)?f?z#@=A7@U_i z;5f!F`6z-7E62sltgm@XU`(s7AhNv-@#lT-5(`VeM%HLx4(*&;s=SbN$M`N06AJ;Y zk96RD+0@_kee7=?ZKUwKpX%bfypK&VZW4*0sKf4r-Sz*Z+{m^ODR}h!Ho8wx-_CD6 zNP)~(+Y-vj$+5Yl8!~0CpkLaXYh&)GrkY#A;u=#+$8>?gI(qH7>O-`LaS(nhq4hpq z`tsMQp*knRi@p}1*l`qN_0i6sG?!C6zpx2+#;r<%EPW|flJS$@N1+hSf&@z!8pLe={+FQ4xb1Y56+vdrspGSqQ z-oE8+i0k1XCj`EP;$&Mk86P`Ae(1Q0&<7 zn5TSFkB+==8H^jhe(^QlvK+LE3lQ4YLG3Ex_{{}MJ_5;VvtPJy*c)yMUscG#G0ja6 zADL72aRyxotp2KcM-CTX=sYo_D8AI}f9N&M$2>J8q$nqICxOwL0Ro|7L`O3#H-yc! zrWK)(Pv{a7>_mPd!vE8$D7#x6c`&~yG~Z*(b9Kpt^{R(<{`VtWZ76qZJQ%R6`&?=M zB-tY>_@__*ZXrEtBn|$|)GqA^e$L_Fy#Ns#+*wck#cK6|1j1y%ffMfA8mB2r!#87D z2IhI-5apl^_*zcC@bAfIUn8=ug`6~pQ>?`tNMtm?+nc+}GgFzyeRXu9w;#1;KgTSz zd|TJ$T~n9AC8{u+?8Pfc#e*eFh$UK98X3FWVlIM8PVWb%Xe3ZBV|AMo;r-JE-d#4+ z_Gixj0&+NPx`IjC`m?vaE=mPN_?i99CQAh$Un;C3QtoNZ>m#7W9a(RS`G`4HN9Xb* zX+_n8ky${T$CS-Q-@>lRg0C*C-J$j~iNaUI9CbuTg#~4)U*szaVDWX~-`q|q+LL7< z7{av)AiCG~zR-S}Ewzy$@`ylv96cW1y}$o3WVf39BiBhqFoQRZTT?^U#0fXFGUDWl zyzn((ws2>6spp#*VbKK9=u9EkDr-m3gMx#1AM@@0!jGt1Zpkn?{H#CLW~dMIc$S!G z`Ulxmdg9t9LOE>WH){;H)$CJh1sd$mzK-*?c{!8mw6ax&bf!CBQ-6JXWxWW?L0La` z6`NZ|$mA4!OHIkdW=>hbB;e(Tbr-~sVw6RYA|i%_8j^&B8tkq7hm*U2i-;BiCL&g{ z!t@N9_%|$}@#%S+_^{46ygO&oe*I3i<@Al9_nMWg7$=2pM9vz^cp|n3;N=Q*Q-6@W!5_1WLP($L(gB7VqkS-y+wNwuQmo88<<~v_M z3zo1`PE_4h5eNQaR%V;>b4tjP9vD?{E+oswBI2T-*i@^Q_c?mf%{GSW&6o;!K@^us zR>)ye;A(a>N;k)Vq#=K-=L=^us-!i~guD}u)K-w5T|S9C!={K1XD>#uv@!-D8bV6|d_sM}qQjMC(1Jliwv2x= z)%K8QdzcfeF)-MWW_KYdZY77!73cm2OnDvvN-uK+1cnH7mEqz`k2${O zTGGa_OP47o+Ey8Mdk5ycks&c63Q zno%}ka3Z-+b~vn zCHNM+jahrVPV*rQ6N~2xBHa^xj`DcazYz6|U36gKJtR1nE6TKQKnrKIcN}M(mk7U_#_pj$urMpUuys0RY>g`#nT%wATz2S%KHD-!q{{kfz zicnZDtQQByFVHjPd9eTKW`b%(1rTTk{rF;oXzal~t`8iFm9X>&Jjm%H_Y~FZ7*NRC z8n3>4@rrQdVyT*6N_F_+F(harA|N6DO~)Kg{L+dbxpbC+_11Hh8@FUXd{=-~D!r5p zPC`Ordp`=Y>8-B-P5j$GAlS}H>~%4I=S&YvX?v(SMWRTAadF?|Ca+I2GV3ghz_iPe zUl7o;@e5Y2cCMY$lfl zgp4hFo@*;BpE1~hj$m|;_AfzpH<$55vd}vZM+b+qOnsw^LUo*n-48@}ic;g%E_WQH zrYEXY9#NMHBjF$7s|%bM(@IzgEO~^s+OReD-AiElO|&J|uQU+%o>@EVUaePprt(h8 zfyTW5f*I|z!eyJQ*?X1gh9vSxG}O!-BM5{0)ghJIfS1%ZGU1}jq^?^4yNjh^ zxo|j42@bTMct(a+AJE}`k;_~!CHX{A37lW^+A-~Ibqs`1MSEs6!K0ZC@TkE0iJF2P z$Tvy8=d8VMO9>0{KiTHP{SZmOhch~~SoA$7O7#Zl9%Q6kALaF_B){zpho79e=*)1v z4c%}M(U&@nf*RU>49*K=zMZ6H&F)!r+qiU{sXE=VN`K&7HG{EX8}xYAm$*WKhJZkb~bL(UbS^=GQD{7^T*O4+lhEvi_I%Y#g@GtI8l+mw0!S4brp^R(&I*lu>r z-h?k#7-Hw{4qy**AcVx8|H8nHpQ2Bm8I20~26yx_B4$bF+hmk9_+#h3pqszo(apY# z=i{XnrlY{qX)$z($RVKCTKclG#tonSeI%czzGzR{(|OFU!I(^sHIHlh9vVwwT~%vM zH2L8)nwgX&eal=XfMlr1Mw@%dC%tZyL=yUc1rH0WjWGCp^P@{Y`sc|BaDH=hTE;#P z64)tESwE+(e2+dUJR>dn+ffDq7q&1Cnxd@3gS@gy%;D}AvspBIrdqG9AP!{{IH#Wi zZkfw+a^2nWrMB722{6R#-KN(T?e+T8jSB>HuwS9KJsi$Bwoqs7CiGzEX(nVf zEh*!r$@hzw5QJc^)hZLq&XZGg>H&;jeD{wq+#-B_9fccF3NTw;WkZj@LASdy3353$ z)ujULE9WU+PEkN^ovFSz9db>xj)_`k3Ur1mta=-3S~B*jxY*`e+u%#iw8eSE0xY~g z&}(-h2ny62#1Y@SA_+dM;b6D%!wXgZ^u1lZo=P9{p%vC-x8hV+iCdC5A7Fcb*i(Pt zS!h#kaQ8T(deaUM1cSn1*y)!Qco;V$f3}{Gt$J2Ps@|aS6YgIp6hMHyH-!M8-M*v# zBlqKO>{!jI%cGh1#?8~#G6I3U7~457SEg2AX`bs0seuV0#jZ+TZV_aDg-C*CR#AZc zbNsi-2Qj!)5;Fx!)tPwV=Va8;Ggq)_-Z=o~4h)Y6?9E_duC5WdsrPfWKlbXW53Jtf zj?;RVZ&YY9Hc|Be|H@tnO-L~_r?xE2H=Hy2lgxNsTU=C`T*NE;0ZXj~tAZqFRN(Kf zsO`82arB-NE%OQ#UmA`h+dLzE)_oLMJ3;xX=-oo~O_4SjK(ED(=Fn|?>#;iquR1jq zBio(VjOv)fDXN%a*wxEJ^RY<`mc~h#e7b6LEj-Oovle*l9O>HAa?3s%m5VP}nAdi^ z^P%-C#yXTd;&N7niDdUjw|;cTQ*+j|CL;lAg6w zozq`r(_tBQ>ac>*Xs_q)AA1h<*WK8t<3C{?C6ZCU72ixHjW5Aqr1FA=_O!G=_#of!?2oNo;Uy|COz7p`Qu=G^9c8FN^rFt zywbesSW<&>bV-@^fJ98MP@6Cz8>Brx1@0=JBiS?F@>#`DhVV*_l*FmDDrray`y zr!H(WV1IQw0^u%dOa|3& z|2S@MO_<|G+FOYFt>u=Qu^0u8@}-u8Mp4#f`WB)P74oZX;nDt`$q)Y#noa;0Fl8;! zpIJ_LV7($jhDV~^n&Qt`@PlRfZ>R5Wb`@;9OK6HPlkdNeY3#41rTw1k?{eJd=#DZ8 z>;*HlQDZVwqRE3|4V=qmR5Fw0x%~k22--y)7cqd58ucd{Lrn*6@u82<3Kf|D)2V7$ zO?aK)X)#GT(=ts{C5)8th5!~1U7Wf2bo<=h>SO4)y}75D&SHer=sz|FGRVNfmF#-h z(UB-=icaf%RtT*z2F5U*!~j}FH`FUwVdnlmY4zz{dC#m_9n{Ao1m8m7%}X1eOr*g?o}4cu%r|Mq`!67~ zh*)4aiVBLJq^hi`DNTkeIES-6+#&NLHr}YX2=uWNcwXrbr$8eLzsAAdE)9CJcx)}k7lMd+&iI{%pqkIhBKg~`3#vNDj zHWiu}!Gg;NcixY!C~7e9z#We6F=iu(L|9FZP>ub$!JEH@L6^wvj`+gyb}aZtae(}O zVJzwVV$}zN=`bqe8;daX8D1q@eBj{sxh=nu+@)CtnE+yZ`+`Fk(e*UW_R73d?k}UoMnS08w8lS&zYII zfu1)!vl2$Vk`<2hVT}SDqhg@QeLEfhDl6G2-QduH`j!>x ztg3W_b6&nZ%O+ur_Pf6?>f;nx#gJG+q_TZa{sa&cdqxZ^+lR>k)t)$IG%4jgl1n#-@QElWgC7tXP?NwLvvr znw3nKmcD0VpIhI904vTiXmo}RkR|G7<(=#S-0YYGjL%S7S!o^%`=lNX=Pw9wWMFzh z<};uTU3dNcAgEBbKIih7x^_T8!d0T(`8h4{l*-M0tBT54kx#$D0}}~} zk|*6rKJ7K%f7xV#Bc^c+cxt$GWG%7RY2p)LU+vi`<7X&m;d2ipj@F|%znzK!({5n8 zSU>gtjz#_WS{3r)WF=>-GTOSWu;G(#GorBpSjiOtL@gk2gWxLT^>#DEelxNA;_P_$e*MyEU3_jX$o^nk@Ry z9=uMQKrP-tBnl3?EPo@eC7m|9qE40P=P%5({Ze!$z_q0$1ux#`7>fA5p%wqxB|g!w z$Bz;MPmG-isMS%Y0JES=WT?m6~ev&)W#-mbK-7M=uvKpZIbHWvXfI6ed-u+b&Ic*b=YxGsb5Fc} zcvyen`~7+WAifc| zshj!d7Joy>joCbP~laW1^6ca%0#&Wy+=n-tZquUiUf9gfEJa@pL@mIAL5ANPQr<0PEw-zISS7y zsn!aOPGwQUi_|1-iFwX8#!GZO!c7$3ot;1Li)!fe$u+rn{A(Fkx(eT|xEs1iD(Vob zWP;|=YjfH7#=+WC99zxO+rbM2p|uIWqVMbD^Zbl@4~sJQ^FDWLrTgW!Kh{IX_#SIo zV4)(c<{|=1;JYp|6>9cIND;{M#-PeXu%7hrH5#R-b8A7K(PCr2HSN0K0jx3v&NxKh zA4!CA!Mi1^3QkWiqQv*PuMO!#tr?r^h`%$=%gcdMM~^T#2rUYEhJV-CP)SZoy7KI5 z;O^Q6Nidu@R(N~N)Iq$V zPK@}Hh?e?~(p%~_0pQw2cgAdveNJpiM5{wW=sssxc-3w+zF+?9QrA^-7i8uznJ|q^ z4QT_VUxZdSn`VL?)gQ!L&alZlrZ&@Ife|dKzt_4TmAo202VLoq@S}}4((_ySjaRL) z`RCJHyQW2u{+~ES0Oh!1Dy#!~g2eRC1zJK;YLQo{rE-2SH$Ph3aOQu5SRD7R_JWB$ zlh6emSIg@a6Yu{t>)a{Yu9~e(&wgsScqMT?C6dHqr{{L~Hf6l1k+IEfO$|Q{=?f3x$^UWN2Vuiy+)#T6`f}qDPVLS1Wj;(KkzcF38j2J=SS-eNguKT2S zIr_SBOkj}ev%IdGVNWjf(ya60^T~#wkzr48GM)R_bJHIE%`f89h3QSN<}pba;?kxg z34=4Lp4pdU%Ss=Ld2mGVz0UhRCpJAYB1YPe@*;PY<0xK4kxuQV%vCJMDl6(*rvq`d{(+v2>n z{pjJU)rZw7i_`NI&GVL+QHLKo$eEh`1T7?D^ctJ;5{T8BOI_)_3TXFs33@<@ zKTdl=e4btp;wIoa`N9JNe}Ac6D#?yaaZd2G%WoE5#8||r8Lyy}kfQ<8Ilp(6Y^-U}*2y5Rs@eQ2X6ZSDqze#Yw_fkS$=hrCCidL;M;Jsu~b zqyO}#fq@}KAJQ_0YnFVT3WYezXDW3K)L3%aOB}_SO?_Q2#gorWxZA{Kzq{YtneiMS zC*^l+5^lSKp^dD;>?PK+X%dvnMcR_lzssD{a)RE^?z~gJzCjDTVchZ5ZuX?QKdZgn zvf?V4ER>ff#azw%Q2(cGz-F6#q5)qQCuheZjYrtO}rAS<}x9pN9svlCK@=i{qy~88Wb+gH{Ul zlj4Q}y*2h{>iPu)3bGVFSef51y|hWAO}VtA^|{1LupU;qt}V^0KQJaa^thb}w*7QM zy0l3Bo|wBo5V;b{z?*!1h^cJl_0dIr@~xOOV%-1e^$EZ zqvKhoP15l}&(PsnCVwHvc{+pO8~n+eb9ER_gx_Tnjl<9vvR1v=iDf%?F`sqFv+y{p z3l;PdkbZ&!MWX~8w|I?qA_QfLfSHUxtOCk(m5gNPB~z-S*-TLFlDzWtuapWpC2NP6 z_ez5TuN=O(epVKRjD6v{9nFWiZah>VF9bmZj`n6p-@OfCnlR?kBo>RC)Rp~xfd3Oo z#<_mey-#Lb+ofQBGOxcnCX6*f4*lal2J2VVRXplT1dg_B4aS>13S^jP8#%}Y)OPLL zm4I>a=mvYrNsXWMT`fUS-O05%$gyz<*EMn0)5ts3oGx)r>oDh79Xyx~r@-7`x z-vZq$zC-teOZDo`4+dyoWeQ`E4XoUp2R60l{&b0mf!@DbnMEsDO4_(b!5+k%0c^~GZLxOii>;+8x$ph7p)(PbbB2h+vmckG$tzKes@#D$u_ zexJ}8yR;f3v}KgzmiE0Mk5OjQtdD$K&9|uVj^m7^hi{`1jHw;00I|26K|{9t2OT)* z1+iTcG;{!+CbaUXceztX^+ksfq^lNbo@Sk!yf!}`mZn$rBqGgc>2p1szRoa??Pi*( zgw_x%-J;4<|CB_K5QB`N9U^kwMqOB_jqPJR2D9^W^GSN>adLOLXAmGf3iBKvyDcMH zjS0SlgJZ%%UXJO)sc39`ok|O|9A7N?OzXbE@xa%(2px{3(5l@kDeq9VIkmL;1O+;a z26ZM}{I<;Rlad&ApfA$N9qwV2F38@b*pD|%%2VCqyKb9d(4$i+NS{okwW}N}J$n$@ zjqIa%D(WyP868-QX#cdmc|B=X@VIyVLdAh>!P``yQP%2jf-+{*?(+j|a+MCZB8xW*-YxxwJPUzsV0RTp=(Wln^;eGpX zr8`>%u@zc<%$kr9Y{3$dPylbYnznLtgS~O)M#GPV>kFkE_1@abz50bqj6>vV&)c3h zp!fj}&KF-u%D}*&Z!m%O&dfmHnJ3_z;b+U~br${>eo21TK#31e2i!e2gK_(myy5#r z*U2yO4{zY8`h>;`K;>E>=t&Wfa7>JuV0*&I;I$wchDWnH2g+c{8s zi2(V*}~+u0EW%NUc}Ump&WS%%O&h~3m%%(T_OA1uX*jJFJu~?a8 zH}Llq=L1<6yw=+(fJPEQyZcIOVYsZy^^ru`INHg!NQ4Z*BJ9-Pk z$W_TQR2RmPKd4_q#zHF|8dxS011VK7fgFh2G& zK==J&{X^}RKLPBNvb*s}gJbi8wEBx?Ej55yrmo0MNZ4bR(+s#haTBC<-CnUNA^f#8rSW)QgnJ$cwW z)4a55pY@7zBMUk)Rcbf0`SQEu<;ModXSR^Mzlq7!qrmqjXXO_)9blNgc5e*l2cptvm7F4LR>k|cLPF~9AIEf)lAcC5 zFQCvj@=9(;B9f5GSX)OO(1;g0A|p)j)E(3G)zef)a6T4mODE6)m1Nd~-+AB&mmqvE}+86CfH*}P>9+SjkY z4{o7P3aY=KzNoM`i>S~&K6>@MSQ)%^(qLVCAdn?vjU^6jlH9t~6Ox$W+odd@VR4N9 zRcaz}^-0t2sYofy?ZMJw|4^`#qHZm_X&QET8yR8F@J$R1Z*b~)tQ}DB%ayS649rGd zob}S*r+>?vsi>P#Is17#4XRc7A&p1$vAC)}3KZ4%QX9v$j-PdR zU*ecGQ(0>KT|TtR<0Gt4(JEAFQ2sF{467i^zT&fz z%$L(R%%%I*B|5ZP#wm(HBakoJlk&6tZ!!n^_9earuu7+j)3Y)n^SYQ0NQUa1a33BHK}X!mG} zjoyb^0m%IGE4)neQ%eiI*(*^gt%uv6ze*JL6pFUaSy@^OBr=jDKmj{x;I<+IaFdf# zG8iO}4TwY}CPJj|U1*{_D}8*h&#-C6(&r|V*vWokclyeS_Du4tXq80&TFLl3{3lIz z`^os&xZH?%03`|Gm&Zv6!-$7{&LSYQ%=<{By*^?O z-4H$~CL)Hsv%sLM;-Et+nIK;<@m?Huw=q7u&ML6o=nu!oXG%-}4f4&(=AXNf*lJ#t zI{EqdKV3z`$-p|PiHQY2v69vge=&SLscjnbtgW#JNtt;bo@F#leH(XrJ8f$Q;D%BZ zDjvpwC^!A&1Et%3qof#+hBY|Fw-E_y#q~*AcFy(Mz`% z1?k0bs!se+Y-}ScDhmCUm6trOo`Hq+ya3;Qla!b)>mqfz%R8QH?|gyM^3OKmx}gI_ z?q6+F!M0#nbdS>V2pRRwJwH1V+&>}4bGnWHU(CH_RGdw)E}AbSAqf@|T!Xs=cM{wQ zG7RqSP6kaN0fM^>790kc!3Nh5+=347gG+FSGvwQQoqg_I_s2QwtabPMYk0fq>aMP; zuBW=Y-r|}!cVcX2thMQS_#ugexrt^b+4*xf{2&||7tbaLQ)k_{~UD7 zBu}N@gVM!~EsZ_1#@qdBrabP9KUs}GaJKc}_eHY!l)jMrQt@mz!pFtI4xfq&7I2^Q z6wu2s3p$nt$J;&-dKB1$;;*Q5n*VvDG0;WQSt_EAdb94pYB9-eju9nr`ll5e9PXRq zch`A+c4+|rY8{k)K#CKl_|VvEhqjO(?2`Dq0-H2y4C$XdeQ5BlcCcfQ3B?2yivu!q zPIq3#U?)GMAK5BDBeZ|n=(Ksxai2Ue#GN*Wnk2k?Aa3)*xkQNOn6m;>HVt4nTPp59 zn#0Har|$Qwtsz+C#Q4xMgBODUFPFVGtpCBJK3bCDbeF{Lfc|RKFn7Yy=dn{bQLsqS z=T=X^b4vC-g|M?|D6Z&t&e8r8LOXw0rl)!OF-J^ryr{@Yidm2j+Kn=NN5v}~gUsUF zYMn+RLLmBbG)alPd%L+!=rY4%GmZN4v+RcqMvsg)i5jRvOxM7v3zt64hKwM+Xvf>c zQ8V^=8X8e)(n(E-S}zG@0tvd&LR!G6BKpo_LNUkDA@Om$UQw^2rWzf5IECMSBhTd~ zf6m_3VXYH}yWJda@d!;vpa#zafk(H-&qK)OQH-oD7|kq#^Iuln#4nPgp$ zi?mgbOTt@Y5}QI|! z4z)CbMOD7bzpF%VEdNk*c+iq>)Z!-Pk(H(X)hy5duJ%o!!RrUAkAi-3QOSNbc()pl ze~k31E*032bGT|Whu75fZMi>dM0tj&=UJqM1hx?pL$@klo01Q1-A`k zOd`nOeQUWa%Sh3Li%~ho-?2PuH;q)mmS&_YHngimSj&JFzb~64J91I4DR_)5|E==5 zQwPOdQjb4%*>%oYwmADhhx6H8c?BgGrk@u%=zsl>M=a$sJth%|Tu@q|!Cwt{^qku6 zD_Mqbq^w6%v9jek3s&Ll_?1%&2JOR%-BB>0(R|p)0Mz@X24``k_H@q8sip9ejLY7cFDNdIw{g)b$lv~Q@Tst+MPNjNmrGAwS`=HqXx&n19rYe zO~{4jZNHMmeVXdXi036(*Ia5AX=e-gRox9|=Qlhn!2})x?$xI`s(1GDp7VM%E^tyO zBvk$!X|RpT_oQ@-nh*p;`Xh=f}j zTJn@U*x)QPNFVxJU8i*BmpdJCoRS6`QtxEEyI=;dtdUY5Dyw0(W@j6Zd$7B`UoI=v z!`gbXjM#EF-0(azu(R9w0mVTJ-*{8^4(rUWDmT~cf0E@~S>v*;ZZ%XOq0F|<)w;G* zrt2gJI+PUG?dUgwsfrIgzXS*2R18N>~lOz#G+UYAX4msP|26JL+aLNpSR zHZ_z>n0)l>2CgQd`W=W-YMLmg#lP(lVNPzY#h6oOl^zlXsNU5Z`k6sVlp9T{p{sNB zk*EloLB3__;KV?RqWt%*MEe5Y_obETIl@rSLVfBjiY8(ipPoPwY+w{G~yJNA>O7 zH*yvrbT{kUx34Gtu2)0jBZOS1pDK!fNj3T^n}83UzxF9$4yNFi6;zr67zj2e(oqQp z(gMFTmwkJfq^D*pBklKk;c579P!K8@jLNx&bEtw{Wk_dH;9u#{m`UW+BXVWOHgxxq zc(#U#Mn+vXf{R;G(~O?w(ozwXtPb_m^X970!s|^{EKf*;%3q`XEjS!*jmTi zhx&QhMkC%PKmS|v*~33a2;^HRX_SGsjv}&to!0s3%H*tAZ~iTBI|}~Pg9}TI7Q@|T z{`U=*vGs88zlQ4f_n3c8jrL=zf9+iP6N!fq8fuAp@%3NJ+4lPRzr*=V_X>4v{^3!4 zyY}yor1w4lHpKenzi&f7{}>ZG=l=Px7E)%ZA=hcAeq-SyO8Unz5%bX-TN_NcaU}47 z4&7#Lhdxe}h^>OI>RC`%?XTi|%Vs_F3#bGOk&Fi;w9`Qi7Jr97M}|_6wUWF1$^buo zd3ju}1_LJ|T!sE=$lh%2&O{_P;Cjvt!bi8*&gMOG9#hlOU@*%+1lV!Y)7*+5*M?wq zs))8YG}bs76^?_kytBJ7CoTW7(^(@Mb+=G-OU>aXF?;4lDbc-gA=HcMa^+j7KJlAgJ&NewATVf|fSqT_t0;%kb8Jj*ep3cqh zBG70l;3Ga9f;ztPk@`Atq)6$Xkxap}q^qZg?%_wIEt1t1X;W^LMovy1RKxxdf(cz_ z_A{nn)4Fro)vXkv<7^E+w20okTl$CjuZ!^Lp)Jg{1Dtt)0IBIIl z>D8YWleL~ml9nU_Vi(`*ztY%d{C2Gl+*O;{3RUNxT(`9x=sd%c{LcN_qbW~aOy0Iw ztM^bKpN^!GA;0%>85OCeD^^3&l_@Ahwia~Z{GF^n6Pyg)ghw_3cQT0xVL&|mJ%>Wv zuENlK!CV4TSG`^)HQXpcNwQaQlBttjzPJzc$FIzwNxMKvu#gRC_!{?L^$4QMD=#lM zL#0=|ttyX+@z=qIQoaG`Vhl4lo4xG%m3vdxX>5|ChjN9g{BOO3Oa4_8yZ?^*QqEYl zjbOxPOy@t&Y&T3HUkZ}tY1_iuY;-9zLC zhs9<+1h;z`Jo<-|o>t_1S@!o%RJl8=jmvw39b$?x*?U+UK)MFGLVVLGboZSecE5@a zNTB^DMAmSdNKO))fVb9n1-vfI+MepbXvDthaBNieYEmoxJ(3%wuX8V?r;%%h!!iC8 z28`p`7G50LgY77E(AClU#GNL-l_Rvwu9+P*lV@VUr<*4^#P$h&2nAk@Fu zU7rUWjG!(YZ50aLt#L(O4S7AZBz)OLD!LG)a(@_ob#eggsauVDt2J>iGAs_m9@}l0 zJL+R0IgY2)V^2q!ULxD)f~*Dedo3$M!x$V2R38{Ef4CPR_H5X_Cy!=93p;SbA7lNV z;H>d^yjjpybfS=f4sn9(v$5XAJ&n*r!!)C%pG*hIiw|)Lw6K^C)1Rhhu;)V5lm@1k zD%kR2x@YFEn27~8#P0PO3C4-LK~-+Qjkiy~GRiXxT+gvDKN0UDN$ zpR&Web#XBWpVdR|tmZt^=1PEG22lpJDrQ{%uYZL-li7TprfYbqyyVqru*xdH5JF4t zv$+h73ND}0o;(#fK+NX^X|9EkWWD%-ljDlc@qv4HCZWnE~xjHh~;Fpn+k@iJhOmI|G zlyNeuNnV{+f6)vwEqp!`iE>3EJpPUk3GQwpS=qU=dUtI`mHu@uxTqU#sC2ZF*5w%g zs{1C+|K`$}8xONg&b&H|h8N82f+Q95{WC7n*e*`hJm%F~6~hDmnBC3?KGiKZ{z3qo zh7rg=tVz6m`sLc;gdCF^9OFIwMS6c1j9SM9q)FPiSFBR4WhFUZkawN^3>s}Z(h?q!#M2Tme@;+!M;n^rRa zvf)STNH5B`8=M*DK9}@tgp#?Mf^C@=a|*@yCJLjEg-rS+%^0TFOXvpn&%ni2ThIuRZwu-@<;lY-(&F$&~} zvg=#=*#V);5BrlFm7R?d^*U)qmf%%wcLh7-Sj%~iDXANtnvcnsn2C>*A10avNd z!J3XAUAy_?FaeGmFFK0TqRa0Jw~_tJO`=bjz{{7qeW>^`!X-7BN^-fuO&&UGM#}^c z#A$)S!wLHnm^P}BeX9fix>lHBF+YF)j7nqyo(=!B&PBnB@~{7kAa(rfpMK`$)bCVR znm7pfpm%ra2L~4@(a7VJ4UG(Z3Le1pXxTQhJ%mKV*Crgm#JIb*e-bZkHJg?Z%r>^k zxJgBHPX%44gADLmURJe8kxt^5XvJ;0+0Gp4i!QHpq71<+`>$jKW`8H^O&CAzVmoi& zoO*GBGSiBH?ek;6c0D0D0q+gLu7a}x380eRXkv>LF3L+k)w$Gw!h3VJyFY%wkjdD1OYX5kXCvf=%NL8m8(@q-6U!{R|4LJ3o%+-0B&sO?BXe3)+X& zU2!E=TWq>K#>U_@kLFynd(qSgc8KK4Q2A;8u#fgAgDeTDq1=1zIyCSKYg`hzI;*F- z>no9_uY%u7v}@}u>f6nNbfYg82uQRg^;7q4NaDz1l8MKX4vwQRg8tf7Vq=d?nt2U3 zpI2J2L-oq>k-Mw5=IShIb^g`|WZrSvVGO`1hb>=T_s%*_0Gr}U$tX=XDosJh@P~5i zOrC7UeW^$1X*)ZHk(!yscQMSYY;=fgx8;lD= z1%jbhqpv5(oJM9k>Ee{&Ja7da)nbo%`az4O`xrAR0sQ!M2yG)Rv4WC(LVbyR!ODw@ zV3I1C*2_p$9EU+bm;rc8VVr|Ipe%^E)zs7&#fP`3pl3=_5NUM-kNosgVv^z5u^58; zO}^W+k?>>^I19JYkVl$8C`r!lcbhPOsMJIYZT)V+HqK<9Tp0ZlQQS{F`Yf<7%GXoM zno(-p6-h<)`h#qb37sXpW-S>q>1=x%Xz*nxLQ1p+{=S%u2(2AI7Lrakp&MWSewa8e zhr3!RIw_s1mk1U@sj7ar-O0?0nQEC5N709LZ$q`k|M|ZNvV_Ey#RCF(4*g$b`AziS zFwvv`md*{TyQt@XAD(E37WWnUmk!kG1sXg6tj}+WD0Uw|!gOf~x|&v<++Gb&?nqZq z0%=bRZjm@Wsp5Pf!%r$C_(;FC+{yNo^k6f?Yhgqfwr~N+ZL2KnYCSiXWDnjPnpwh>W4tICXORJ+pxgQS+3hRT<-n zLv30=S}KrcK>zG-QKMOsmnZ$b_<$R2BHUk=5f1U+d8&GY6Y=TtT7arspa`; zf2p0{;*NBfEpV8vWjRlq@ZPWAexEFN%c9$etQ+OK(`vom+nG5l&pwKtedfILFsQj6 z6gJdvJ&T6#Gl>7j*>47l`*Ip}kMTp^ips=|Ya8Zt<%J|J2!05`%_^Yd&a33Nz2-~r z44sTP$$M{1E$PBE!WGTm$57nTq|erib zRv8=BJR5|DUbVPcyk%D&3rDRQ=@H>(x0nXkO5)LlkZ3F(kyhNzg)1G*psX{T#+?5r zp4T}h-ORNBX!9ZjezuIIn+$*7S}}{ie^U@wC|%s8q z0DpP%|91#P;*|t;D|mjP-DnTElGs@9bbi9$h#yh*a?%?%5ox#)X-N6d&!zrTpPpry zkH%9)E0#`VTt6zq=#4#oqLISOIUg?gk3TUtxAp2ysYwL`BP!=`(E)=Rc^x-(q-*_} zYrgH!s4{a|qjoCLLI;PjHV21E)*yDB!{5*YQKxnX*@fP^A2L`>QX`u|bxzkCEYNfC zIKGXiZ4Cr!MLxfCLOHsvQw8604#3|-EC=d{o@MtVM@uhD;Kv^+&BEKKq91zr`5*o! zqvUn*yusArBGYY-YL5xL$atV^UnXGTNXh2B)mkUe+*_2ti+|mNgN3C~>IKWu>GsJJ z!6pyLr#oV#C77hvE0KQo=E%E=>$;q=6+vTUv_C~^201di{6JvscpNE}C&L@njZgBo!^>@Iv<@ywD=NIqK<| zOr0jVyLs4F?AH>Q-N!SUhdvv(ojNgu)T&T|oDfaj`(p`TwL9sR#v^3?vw4YM95pl_ z0g+6{)6Y`z`+4oQ(rlB)^#OUM(@bC3gQs=8>vv|oTCopw$}X!O*Ve0BviNK)4}Jc{ z;boJ#UieIilfc1WHS_&H%)=@ZrA>|*)cc~~tOm{eWM1=&dCDRxF6C$orLkXA+MO!t z1=ol*yM0;>4~kZ7LW}KGnt~{iW17K$dX=L_fNr^5mAa5HyCnxeEfIK>#Kce{MWOng zV7O1K-YBk7DUHCxlQ3^+WLp%tHNd$WMn;%lRK)l&kZKSqe6QE#YUz^vC6DkY4{NKM z^*m2cM%MYfBTIu>?^{5hN=Dg4$p*_rVve*=RFS<6WStPtdMjN=L0NuecQ=DMfLk@( zvXHqm5ptOZd3-&ik@ItoTxcbE&S#y)!{*Bo!Qf=+I9~pME+i*>7-)1pTr9Nrso1_cYzTF34(f9PB~#xu+!w(P zSDgk}-YrFL!qDZ*W3A@WT}N`UV_>U%^54J==0CTju2RY)b4(QY78Z76nOx+MV}-EM z2mmSE7A#rAWLJ$ED_4Qzh~E9DteiQYgm?h;Y6arN5&2K^SxPp!PCc_j(oINsLe*u; z{`^rAGYboxBOngKM+nK$QJ+__K$4H<-S`PPFY&Tzev3+tTl>8h!E^+~+mYM&P~4cK zz5n9e&Q^0+-64L%wm~5wUgJkbJ^*5OrWnQKZM#Y`PiQyx%VPE<{6#SRjVa8~hxWsM z92pXzq<*KD2r2ai>J{=^%eGV0lXF*_*fmhojKOcqBEgm=8fse51;tOgJ~*1&^A6|z z8rAyW0DcEX@+q-UmrQ2ArPwA5P#^Qr_FdTl9o=)z#DR+I#RBAjR!;v}L|e zm6Rb>j2xtTwWa7}bHBi=P&8GV9w)C`<+_S1WicH4(&u$LV-~F7>RMgs)?831;h}K^_qz9QhI@pG z%{1v8oVrBeF)3(_y)pOKq^i9q+15yWS?SfIe-VeRskPm4`T94WqHl>)tYB@n1UsY&=U>`Gcd}Feil$UfxRD@m;{yAL_Rod%)y@GGCfSJoL zz?!dFwzK;V-sU-y{xCfX={_phT)`TYQLQ7-LYI$Cflsg0Qsgp^p7@J}P{F{MX23Uv zs0+G!fZFcl8b||K=ZlQ8(XI7qOq#cVn94%e1MVsE2Mi&B{5#%z1fj~aKjvqXZNemv z_!lKpj6<;?t>1`UBLfwIl zXsWZ6urU7+C%uiKZlHY}*_-`|y`!GJogI|~d+f%w^PX|uajUdEd{}eA&Gl>ZV;|(9 zoM#9V&Z^FXg(dac^N5t3OsJ3#nF^*x}EV9^GE_Sgt+!8ritMJbbar;@! z$Rx6nupSy_Pt{2?4QQyqV|)R6=Dk>61s|z6ut(hq2)WLtZn)cOJDMy7reaZI3D8Wj+HTe+zV!Jd0);hCXeu z0-g&?*#>S@<{p|m+d{WV`wdM2vb zOK09|TUQDT1@gxQ3iWglxeK|>-sr8qhz=NJ_kc-{^aMs)=t0pSV`DmFcC|J1`gV*e znkV0fdI?}-2vs1ntG<2@Hg$-r6;Z6p+_GSp>Sh`hGf=(Xkx|~!hqX?#MYE}^HP1Ek zd*EBx67d7#smX;1Y&OqM5GNebwC)r8o<8`*cJbJ!9?g`eE`vrByt`TKe1eYr<}HY~ z2b~*ghV`UM(}lhtVqBHM0DwBfbsj#67uM+|&V9TqKZ42Zy3yObQc^u5%u?Lh&no$E zI0ZAzpB(zy10kV&dN6vFo(%BbEZ^SVb}y=ydnz2oMCDMKLrcsjpJ|4&nk=4Iw+aGB zrF_ZHf4gY?H^bH(a6%ZRT;<^8U4bnSO?{=6wuIe0%ywv31QW zx!AcqIssmoeV$=?wPs_j<>pp3=Me&Eaf4T8o?2g3egj*(Z9=aLd#cQ;&dAObj<$dI zr+ORvXG5A0^$Y$J=eJ{`EOIHa*)FnSC-%j9{vg1)Wp-wn;_urrn7>x4VX7eroHjAH zn{@45f40U3T#kKlwWV6vfKDh9HM?=X=&D%l^T-n045dlvH`m5&0m142rq20z{@ zUe4%$%nR%s?qiUTeZ%9oOn@9#jG>iYNQAzSPJ zJ|QSev5$9{8w2YlmOMS*jll&q77Q5_ow!It+RZc#)VyxCVCqxGqE zd^-EYLaDYm&pb{`X&;q=#-WedVR7lB$%v)J{!673<5oY&D8Kz!<##@LK4pb0YA2Hd zia!pB{lY9w`5{-oVT&IBYrOnny`ouuVDS)(a+LDeiA$>Y`WL0tYs0Zh2Rrk1v0Tde z)mXe@dE(2NnfhBGCriS0+j%4VOgHK~6F14#)NH@caTAkZW&0vXwmVdsnch0T28!7R z`rlikaM;bGz1gj&6+p6;|MI6OXQhLXv33?Ya^YJXis|B_T!E9hcmP;HXvlp_N zBl+{z)^mA0Wm7E@=M4IKeyRtvKLA@geLhPR4mGGFWf9-5woaJ$E{Zl^wPiQgY(;1y!g0PcK8(pZaGg7o6u+ZLt_&;}m>;94a3r&m(M`R7_)2=;L1FG~8tpGnG6eMXIG-LGhfAR=3?*oqD zjfWG&c*{P&PT#d&Um+u_Eaym3c7Iluo5lv7wLSd6OY zTCdJ)wMCyeX;3;)Qdx?gpf?gSo(+{dCKQJ?ppuT+X`{#xNjdJNAH=cn>LDeM1R7PO zs|+%-yz~vSeAZzLxgEDxUzCo3Ws{}TX;)2i>!Qbrl||Lb9AP&?O*S>^RV8b{;o<1J zjx-)&UOj+c*}PtUpmYgfKe5R|F_Ej}hpgX%q%=4yE=QV!GN~1I4Y^ci%W#A5*-xhF zgloE&2~YXRrL7N47Gyp}mjo(Cy;F<>!8XD z5l7F-{$z^tr*ls16Q%jhqLguSKGlr*J`Vo%iWt?_S{wdgxZKnHeaBj)jlb0WYp2Tk0K{W?ZmbNdM==QIAbKa`{E16G>2*C{po3nk5s zMiXEk}6%}(au%LAp6F`tM`!Z{CYc!@>b|ZHO+(8A+_MN^7TPBwT0z=tlzZV%vq1rv=HpR z(hqsNNe-efWNPLYn=(ieD12O+wA)#j(5rhB5i%3)k?yc?H1! zY=OIKY~{;7)RrCcX(}@$4T9x^v)Q(9K>|!KD;531%h!s+3?iaQ^u966y@>XlI1z-lbG3;EqZhq}obAsNP7PnzFo`OJDJ)KcKv`#dvn9Z+ z7R9q3ANcOV6qOdk=Px{URR1TS@xcK6CRf_xHuyFC^4sC)!;+$`O%(-Cs5h0m?1wDqMh# z!yRX}f=ofv?H+FN(VOHQ+E%^%r{O#-`P^F>&6?5x!(P3D^wQTL5jtHF7CofD{63e1 z?s)1=!2?_j5#Bj0VHTEV(m|r`E!DgF?PnbG+Sz1QS~jkM6ASN;Dbsj-Cbx$k$pGD9 zzK1Ane`J(l6mpK&&wu)kO)upKjqt*jkhRA_DlFmBhn@V_6%LcrBrB5qNbydnIhEh2 zI3wdx_>ltgOfe3aAFj^Jz@g`+uCFl23^*qA>x!Y}E%6;wAKboSO#qZP%x?Sx!`>U1 zOdoQ}wqipe)Dm;fU>YqoHMOv?NWjmpFBC$nS-3_Qbgl^zOAFja#flgSwbnJ3`2~y? zlj`{7+xacymwjwD&waaWrgATtj!!MEL0Y zsN}>|>j$ZTg{KOl{SKK$DH><)t*KkbSRSB(!t$yH2j~Zb2V2u#yI@3rdtt3@JQw#l zqid()j1b3%`QxyXeHM^M(XX->=PEISMuq&qVW6#o70|hs9b@(vs9|v~J7*~Ajnfu& zz4|e`U((J{vux^d_&DdP{JaH!1CS}&0YU)n`E4GOSJc}Ou>2&Il03FMK#C3@bR%? zU*3?rTf27QU9yCE2>2ZpzG^p`aLwtJi&W^zdNrgr)P8j=l&ec zXy^<2@V0rp{eV67jU3;zWqCF!3@q$C0#gipbbAb~>~;wmCwsKS=fubwEKPN1W&wN| z^*>t9nALf|)&AHK(9QpfoK~7kw~wOay%pQH6iOg1PKXp#*OjC(CVXP=kyC|t`^1BWu4*349*8;OFXe;$? z1BLnB1PyzUbX ze(_!`cVW0lmg?&(iJPaBd>n>|Kj+>qo+qpC)bmI>mdNj34XwP?F>{*0)4BPoAES!- z4)Eu26G@-OLAlKKi%4PL!&`HD(DrMxVdced)xByWG)9;-v0vF6oq2ON4>H7=okAp0 zw|?}ybe^qLP{-^bpo@$&BC0@zT(F$H*`2fcZqz}2hI}7=`=8Nb7nR$AqLx{iXx5|c zbN&HzMb=-Vkw=jf2~JFbqOAs$^S0-%(~f_}^^1N}Iy| zJ4s27w>KDLq6Yzo;w8}XuqJk)=btnOc4;-98u=x3rV$6`TPf|Sesf-GoRi`MWJ%<} zgHxjx1wbbu`&L)Aiz&o^eo*QxE%jZf&e>1T7AdhCNVy;oCE1g$F$ZdRwuvJ7_e^oz zJn35C*cSE~;l{et>d%(qHUkl1Zc9Kzwx~DG88JeP1)=%w)Mj63EHp$-DCQ50VYX%J zN%o!Jhl>LzKhUmN`kgQn&a%7mHbgp!1OlJ-_o$abHt#sOTL)gb9K?|cQPhIhGUa2PAOU19POYfbWEwm$ZfZU zP9xZEYiqy%|rIoN*_lIdBs8+qrzsT2% zT5KB)clW}VEC{gLRCklYdnEoLDkmG;KF3N_u>_` z6z|n^>)kdUV*@(2aF*2+h!R)rbaox_)C{0BF2-eXmhLCKb$BoPx85ukdukczbn<{i zL-o+`u<{d-oqa-}vChHHMV(ziB3{#Tf$W&F?sh&7azb5|OmOZ@x!)h*O8L7>#tH|@ zRa_46j8dCLT&f~s5zBO4C&dRHPBLz*385Qxd+Hm@z&bS7nVM$2nQ*>hQ`iaCirpB& z^EQvbzC|JNK4Mczw<0v07lNNn!$yi9w_LnVOLMyL7*OUTuqeZ{?T@~xsqf3B;7}{PWUYts=Tm)_Uo=_U`x;+|&424R z%nshU^|IDf)U-VaHMFJizHqDk^8I|kywfEtC%`#sJ7h<#vJWL@zp^ywQFjD9yn=Qd zFwiMkFwAKTg?LC?3<mJi^SUGlUoPqSDJbcjZ1L?#v*Rbu*O^)^&;Btw8avaW5*T%>X+f9mmU ztn4RoybZ>g7w?qtJDwOIu*q}laY01_XojJVA6X>~8wWmZlJ8)E6owGHLeY^>6lAp} z5%W7>WNuKD9n5ey*hY@vSiHykakZd8FOx45fBtFOVVX1T8(#(3=qaa|DT60-g+dneA8+yjZMh`m$ivHS!C2;k9T7C z8fLm*Bj1at>>DOfva5U<9YDrVHs@sXZ2uy!SB(au>4ru){1%NZFb4hc)qHPT5g%4* z8qK+Af@XLA3qFv6Hm>>EO$rmQlNaJ!>_6pupEfR2pc)Sef%SbpWnn%as1CX zDO;62#?MNAO7&8gAD;zSDIuZ6YwI1fi;gUpYCI{Ir)50672K&Z*wsv zt_nsQhxGixN7(oSWhM>uDn(!Eg}vjmDi$gBT9^8mNi{WZVOF2YWM+Tb4C0g3k7WLE$$$1yvOs7#*A=s&dZh za{oxHiG2*N;#vOvL!E2-K(jc3vjXi$LtvfVi&0qiI!Om|(j{q>6}Fp$-c|n3wciRj z%AojTskX7k^v*9qA`j=8l&Gp=27Ab+nB#^0kD1V4lKPY+CZn~#RIQpnnzTYOD|MbL z@k2w@o;ZEY^66@yGjTYgc=Lw%29+>S+N3XwZx^(no)2I7=^ zr+qWiVv==TN<{7L6t6IQqr~zbrlP)uV&4;&F^-oB%(=dco}0&%>}sK~BeymgkX>B% z2rKkZx&SRI$UN?Gx6k9muAi=!DYH!CRjs=dYTqQD?n0Z*Ge7Vd{G>QJREyoMRac?< z#c(WLSTd!1eW=4x$A6WszV_wK-n%_Zg!t$o`ZIylYgLKhN(mEdB{!DPu5@OEr zH!(z5d~`W~rpBKWA!0~VtC6QYP<7`U_Nyjp*a}@!^Xb4(c8jr}kjam5dLDen4ed|h zd`n(z2%|9xo+7_dHjBwIsIT>n8%YRxXY7o4EJQyV3VUaN;aJBwMAwVQR_dCmdE}8BFPRJPRd!Q=8_iG2^JRaZx1GK3u4bMRiQ*&a~KgoI{zI>Cv14U>Ks?~s=bAoG6OF;~a#t+tMAUOkSy7TrnDq%MWb z;wSlIR3}d3{^wbMWAmA}LKEGc)>vSDeF`6mU%5Fm-F30yM;)C{@tTPjBmD!J{E>Hftktk<5fX?8(tT_Ae0 zvndMyS3IrobmaF|cF$W8iaVIW)`p+jCHz0TLWr6`dtgu1%m;rXyMkByBR0Z04eKUGk4%Vrl}a>X))?CZG^ zqGj}7b$3_%yNGt(gTdgdfcuMXak1W^yNgwvmh1gS)k@g#pq#;~C;QLQJ9oSX$QO#X zD4}n*zsBj#&sK9q$Yf{t70SfWdP4w>Cc(AhMi94Tt{lO{-H_p}#FahAEhe7bNkqv} z3{<}Yid5$(?~b$XZ$|G8kWOt}jQi#(ih#q@EFOR~%6EUYGW!ukzItZu_Y!>_o5f8> z6P9)UOd>SiMr_{@`e)_T=3e{!xWY3@o~0R6E>QA0m00n89c>68#cVT#5p+Q0m9K{T z;GOXgOj9zHa=2ZqlR6{^%guI(*eD6UqLj=>4*AWc3f9~;C!5?zTX3mjJn5D=QddC1 zhF>i=tueQKn!^IHg{Xi%(}(Uz+<1UP7G&>p&h3&{^$I}s_u=Oll;d5AsadUm-hF$u zBHj@&Cx`t|^KbQZ)ws3)_=)O7{ag9}QiSn;q3DlMmUl?N&0%-pLjD7tUqC9C$cF{M z;c`tr>Hsxg8VBls`51n^8ZAx>ePD)I?(j(J+cCg@cJjFkyIdTKb^r1AMj)-=|Mj9@ zRwjv912BWXR6=3zSKgvH?A@Xs*YS1&A)~kPTu)Z_QT#xe=T%a_F_LI&mtN=Q$U<-5 zZe#N5S~!X)(+ef}iFbvPLzySeMz)}DW_)%OB<+KuT6N5J~w zxJlxx%`{&x!usq^;P8=2Vw!;6;kmxZFD)FbCvc88@ zWy&8*v=}WnQc~&$ogKbs`H)#T+NR<|;I0019hzxZ3|<#6id3#Bqq2p>G>A*d<2qh= zqH#B+pXU%DLa`!Wdz3x6WK4SR4?A^yr}_-xMc~OP$G~*{q0y$Sf<3|gNX+%&T>`ycDw&Y@x+H(8MFGE5ZhmRjve!CuYhh#NEN5uBBbY6nEK>uI zrxmzwkGbc{59Y5)_%wH;4Ub$o#EJo+WFpg1vL9YB{Yh-Q3N?DeWb3o^j|@mmjS(zJ zA2M1fq*X(ZNo>Q=9qs&tS={JjFP+mn5uuRtTF#;9I`Xft7Af+<7Wu}@hr6OaY&9A> zkT#%wvsl_s1%lkdkX!4vo=Wwb5}!nY%?lSCVT8+Xu^{9o-Yl>1esgpmaZUv*^g?l6 zn1|U;?JDQZC!;~Kunv?ND1vdub(mU#zCoNmJGaLF{AnjfZ{~V`*@>I))QRX1Om&gCG$-cE~sp)y}p40*_zQ)gz3L+8yNX1s_}RkJK*6?Br8NSX0i;Q0kZ> zDR#4}D&}MnOSCwS9%B>JDjRSjJG}>G$*F42fVOX>gA;(@-+O%ae5BY`7=+%G?|cwL zjrHHI_>w+Y9!>fWgM7~4_NKpB7s~ChVNT?!ZIqd+RDp%ZN0;nUp8tvN((yn~5oQ(N zv^)9i?rP^szAAYdznyEx+2!m->R|BBHIdp5=W5d)cCb1l7uNJbTbh8rK%0-`9N-eE zz1ZH&6W510Zw;82AwiVI+f~53ZXIGtZ3_K9?c5r^t$GZ773mCpm}13-#*gZ9 z@I17PJkC#&^;OQIhq`IGk|nh~-O|R}@mtTn`l_bDWl|d7_Gi|g&@EG=(J#}!?n#8I zD%*4&1nnv;FHPGyR5g{kP5W(5o8aq&liL=W5=Y#&TknWa>@FO19yIXw8d|~Y6V1yT z{Q`K}%?m~#yCMaRJMHby<0NS~OEbFNy`ujtX%RZ?A>{V86Wrv38*x^OHZE_I4nL}b z7;0aWrc*pC=7B$RA!aehdFs^F^|Aml>`y@)o`FO^;a#bzIdhaz7f$(H;TwK7gu9)s zmwFnjGJ}p_q;dIpTNiLIu(_7vdyq+Ha`b`HAS0u?){DE6&`D2N$rCv_c(VanVW zNFW4WQsdoT_HZ~Lc#{8O4|c-xl4_`#BWta^26WgE+=>XV%B75sr9RDGcIw=~lr_qg zC7AZT4(|Nt+sP(le=vEgYJR!ey*hBnib>7FCs%XPo(6s4kqTVSRiH1}En;G@wkdTl zJFcl)bLa_+>WX2Yx^ohLTH3%fW!FUR(Sxvz_i_xaadtdJ1fA{#yhLp+0a1eVvIIq^ z_dnNXYwe*jzxfN~)>+4s{#m(I&NFk{#Y2SBc^-BjxGjI;n_;ameDUsj+skn9f>ETo zo11rFrR3hyLx~~Y_rqaFqB7C|8!`17=5It@T96uQx%KHNY;kd5Wif*$_V&Uhe<mrArKO9XldFdSOU7ZmT+Z13JpLq+PjCCg7DiU%t2(i0ip@kqCv zQgQGv9$6NkA5U|R3>fn0nl`^SUY|I)Ip6jp+j;R?5aXlEY4>-Wx`l&@DubnNS@D(m zM)cChse2@YV!{x(VvTlguS;r0s!Oh1)Mo|McLFjd?_>vt#PT}8W}AlF z)}x~{CR9luaH1>3jTJpy&Cc-euZq#nUwlviIRxfS3}0YfXIH49JWXZKS{8vhe1c%u z$n=8z`Jcyh^WWVCUbq+*f0FP|*nRm;X3Wx&qsjqiq+;>XB=-NkcVKK%DTa%LQQYuTv1?}F-?~hSOn<&6D{`OM*~o;9F`|Vx zff{>PKL7mboS;O^SU?nobm=y#tgn|7*YO-C`S#=bc|E4qSryqcQX34T-_7@|)t+$? z^q%!MYxqu!El7(wW%hT{HJDME0wz{T#ZuU2eqq`}9iMJq9z<@T77fvWaDmP7l%|$C ztzPw$E}h$3lw5t9R-v6@M1utV?y#X=(9rEL4bxU&;35#1Vfx|m>U*6IWpiI=O}Kuf z<0@(Nl4!JK-d7Z8Bvf@xsmI$<{@^XjY%O->M-MZy&l2pesB4kv#ix4hoRhQM#MNbB z^<`Y|eKxqJH%S880Ea~@jAOI^iK=SPzoPwxs- zEIW?g?4SN9W*%ZOx!SYJ4*~3wiwYdEtdUIbC6>w*b@*H3^T&4nkMhnks;zB(_cclj z1==FTDMgE0a0pV|id%pp!QGwiV#SNQy99T43-0dj7J~Cn_ul8+anHFj#<}C(FZWx< znk&i5T62w=_59xVc|_J!lk#FDvY*Llgh*Ds%&UCU`MRw2uo>|$z~-nWcJ)aVrF#>< z`S+=XKw*;{stv*CY_X_|Y58Ij6X5~)0`}qy@>J*}oM0zLb(T@_h zp*YX!=5ed|rmR{5Om`Rlw2>Wqax43>7~>p0YVUAalN!A%|Y@4&};gon601uw^n&42qrST?DO&Sqqp z1)ZCZvc!lBt4qeJH2}r97|N#DmiNrK613CmHWu}vu=m^;g^xwF=TtYW3oBC*$^Ddq zon!fAKQ7Unt{?fFL+IzD@oyFdE=MI$a^k36s>yQ|0u9vFaUPqgjn$l|uU%Xy@x2F_MzO!|OtC1{95-L}q2{70RMucU zOFLnG>KS?eM?I&k$>!=Erx@mae;bS||HzawI>Aql$Cwjfgo>ZUiM@BiMH|?xgL2r; z$r}EmPbqjlfJU++)!IEtdpjLX`nlry3a1kPV!Cklj{x)ow8A^g0m8o3cVilHIyo4F z4k{SPFK8UY(05T{9DPs4nu3EDw#F1&kJd$7Wz)y(`{#A(0?nBHave|QhR@c+CHYO_ z`x=zco4mqPaL`6xeQD3CkH`w*c+C@rE#stTg-GFqh10@X;DmFVE(;`+>w2YxZh@0P zxv=L&$zgoI|6^lgVJF~DoEFo8)*0_^wUZUoGW_ zUVOpEcs3O=!rTbHN?G3pQ1E=bg>*JvtXQGbivy(BL(q$Q%r7+_KJK{`j}++K7pu$U z=-fP%H5yMvc;X~8zPk#A5Hb$R()0)NwY&SH6)loUg&eSmOh1vs4~UFOdF7-q?GjFJ zx7lBFE(;{>jD>+C2{-BT4-JoohTkp_(98c*ydRd3sScbf`Z`aoyJqqR#=$HJNNB__ z$icK%7SCpl3rzKlja|$^Qi-9BN^r9=6Nn^g>KmT13cJkpRRenm7Gx64=NX0vBFR=Y zACLJ*+!Q?b>TRotrc>wh$H8y4F@A~YbO|=j5I256^&h}CvJRuFx4c_EMY!4ph5_8>0!c(8X}$J_=VB_+$% zwiYt233??N990Pgd*lM+Ws(sK3vVrv{xoo~1kOnKW}ZH$7Lb(f6)a)9n~JJT1(J zfAB7h9=5I=7-h=6)FeKzU|5&7N@C}^5CjjV%Xh+dT-M6A*jrgomugth0&V1+Yf^9X zrfjWS1r@eLs6}6Q2qo#$&CWG2 zTua4^D-K5w|7FZkT8wG?Kuq3YmzrUA_zQmTt;}ga--2l9nAxlDgZb6cteZ$4gk?JC2{{lg#j?eX7-izcE zAatFTAX!yrZN{(Gmv2uv(Y13nY6Yym=9ZS)?pa$JiM?_o?Hm6sOxsul=8919c_M$y z1Q_T3(n#Ms)l)sZ;-e&BtS&=jB87>+S(`2=PqENd`-ZnKeQzDTy7|6k(w$?E3wI>FP$eD)K$WR86xAwf5Ah~ja?JI(u>$1 z4L`bZ4IX`ON7)y_gwCwZE;L|l4FDw}lG#c*AO?Lbrx{7UZ&xNrUbU$>lmCiCLW};w zAye@VHe)tsw>^Ak`fd3Rx%E4z`3CPpJ{Uw#yKn=lsa( zND8hRk=b%;D~kAqkyq%o@{nf%B*m=thTmUyyGDFjlCWyMUOMfMr|$S%%gX1c!$ANu zomvLl?XjRag(db2l|LM-(R)J-A}rj#Lmfl5(5bpE6vucB?|qFFCEgqpF>v^$sdb?_ zVsr3si;0qjeyk`gEJA>Wloz9k?wub}N7nCD`t#S04h0s)nPO?5gR4{c^yl$9oi3qQ zzHgW7V~C&izf=sc0Hy2e%qjmH!|4YEnW8B{USl&ksfZgEOwi@2Bc+7Ac_(xDEhB^H zfI8%zcfpZR;g;GEzM5h9z``?MMSM>G7G$H<&jHfwM22-e3-zvvbw7Ond#pA4@a<#z z>LKhKZ{nvxFn5wz>=cb5Us>kUn6{g7E|iHq30%9N&d!&E;U;V2x);)w5A8!hiM2FF z0_0?($kZ+aBeUcr8@e@R&D!&Q!NmG{te)vCO!so}1*?wL!#4G#_1*eEd_|Ze4T^U@ zZA8lx3jG}SXbUG4QBi2%gfFRD|769@a9Kq{y(YMlottopjCT&$nNVgB6)d~mN%j=7 z(ida5dg2E8-f{dzq-z(RmWB4r4MU*H_vC=HYUhP2qskK^C+Z>T5=^C6!@$n+M5P5<y}wk%G@POv(a9W>EV_(>)uNEtbp)=d-IrVQCPF-ofTYzJsn-SyL(u=(xal z*&sE*^FDWC@e{`}kdy@vd^M(65STo*WU{7eZamd99Y%(0ME8N>#)Ci^%iigiGw*lN zhi?>zXl1QeZx zK&QiJTj8-M1HuKjJ$9J*sTOxZY8c_p7-XaSprpLfiG$3?Q8w6a1#CSeVZ8CWPVz=Q z#uV*+O^Gd&T3vka9$ArM?0wKuE16+1by;(e^n`$uKW?f?FfU4H{O2zLi_M)%GHpi$ z-zbS^jwyll6iE6$@!Q62u9AFdjbB`-PFs%pmrwkD`pe@uX6;Al zBP5O$O`x=lrHzM7ZBf0Nx~RO#`6TNk9(tOQwvOJHqch43Dh?V}3#}zB{B_2m+9}cm zUvh71aUp_{K~R0UpUz5Yu~atRqxprPBDU3f!q&yg`?iY7MpE7?`QUFWP1}j*-MAdK z@}9M|-!nMY8%E_uQnHMrdJ%nNqaAcwHfira@s|$3j3ZVQuH+``I|X$((YeVefi4Lq z-r!Oe=KjmYSUO@eYe3@q$8f!9W1)138hyp5M)wcDq1_ra^`(kyE?kd@)Q5BSf5KlF ze=GGrOC;9t5ibxWG7}buz{l(1k`qRQ-|+V@9iRWXgzY~i{WZ`pa{qr04I%wM9P)j< znc%rYum^q^!=Fdjj1pk>`}nP(RC2cN@I|Lo*VsP~T4#a8>+WxSf#(rA^di3a(?2-G zPdmW~!hifUAI=ZtegB{pLjMcZbkYF!93zxm{s$^CpWLmne6G1Wt?l zY|QOkU6o~XP3HoB76cMpKL}>)$hXOmicK zG9d`1(mSjVi(vawq$H$kX#Gf(EA(+;%?En1i4|$@6nc`&cr8X-@sO6-Oa>Q?hirUY zJcQNn9Jsa4Ey3Ez;qJ9%MUlqX=m%jqUm#q>Bp(j zmW~$061`yO*D$}I>Tr4bt*+Oo#Q~u^sJetSSF_J?>u-eJ3u<2DCR+CS)C_r_sI2R3Gm4K&}{S7r7rAJGajzD zCf8wLc9Laxw01gF7WgP|>t@%A3%Q7jRy<9AJpkHzf0xs6bbz3DKtz z)d%PO9>pMXOCn2o*QE;OL@#|_-2iC$slYLj60<2Ja z*T^CD>tmXA;%J5H?`uI7SEbQ8-A76?&mF#B$8ubTY0P`H?O4Bbnt?8DK6(`rAbbJv zrX;=yD$U1^51f88c-kIhe#x1?naaw>Ce(k+Xvsa?jO6py%S#dfm27KYpEY|+_b1TU zHviNd^C!?i?pZ<>jfq~ilp}J<#_y<3mUt2+Mo!HM^0@GGKE+S&xu7fqAodQTH z2cNoXhTbc44ToX|=2p!k?zDZ{;EmE5b?x*$f{zQwS*0flVSTd%`(bzo1@Ir$P8g93 zG|xpM7L(r`gY|gTy#M#LeAIis~0He2>YKe?x-9=|DX+PTzyq(bkI?tDeVV_D1F z&Vbek>kHgQeYhfmr}v2_544EZ)BQ#;qGNy$xbxa_KkK*+Uj(%%nS6S#KF&O9RE;>R z>HMi?jsz(l*f#T-N+^QobyE7*O-)L;xqa{+uIc3^&T1%3zPvQ+WP$M;kvW81wn2oO z1~4v%XVs1}&8#DkYwCCR%yZ8*f~z24;tL0a^e8*MVi!u)@sw_zh=Q+GVCNYP2u*-D>nOXv`;^1WBi)qk;obsTeDp-L z`EU|6Y^E5i(Iu|2ok8jf{xON$6?||jjbR+G`{Hzy>EBFHQ%xOwCVy8an z>v_7bArgr6)4jGijWPXG*Cv#P+4ndyI|*Z)&-2pLs8M7jn;y>UPzs_cU2nOkt-{XO zG)3f}P6$soin7PIzmdT_HC>kF0x$yaFA2u^WR>WOG_a*cW$8-Zt`TIit-}Q!v#pu* zI_3;rG`GudM@Z_F4d|z)ak-}ZAZjo5t-Q~;!;l*YpnDd*+IA+E6nG0}v<;Tb@%dsh z$03xQY|jwQPSQ^BR|r})I^`L%5$YhCXr^nRcj3U^A3d{j!6crY5BLdHBXy&8W@T4l zYVtg|%{42lxclBLYCbZxG$?M099c1UUec?3v%~kPY$fH}KncFn$u}LfJ6C>!wXYucqzgZvAK<_NzaUD!7-AEwHZapv{|~ zdmgb)m?ybnB+R}T-DnV9^t#~`pF|&0rl<0rvqp!QCWYhLOI`TTVDP`{^aJW>cb^IQY}$wD6axsmZ?MXe{7LlE991E*IU@z%W5hN>!af|htUI$ zaivN;DG$b%Niq#KB}6NnkNr=Hnw=~@T%C@FIm7uYPz?TZi)wJ?4Pf(QV-lQCyyWj$ds$}E1>YM zZjQaV*SNW0uZh#+jOiir>f74-bZ;=rNA^Yt{>~P!=)j2U4f_~QbDG;Dp7|j;p3H&m zbsz0-Faxbk1nC8uUk9__UfDEaQ^yRddctDMxikEWTyhl~pk zukgzwLCWbRFaOrv>2BjBzf|kq0F*p>j@nha(g<3816Aso+W?SF#%P`sqLX9sbI6cm z6rv+hu^QtTw!pbVgrPtDW}G9T!|qYH=^b6OVdfeoVe{9Pqa`NRbDL*IfGo62D8~tx zIj1>|OoAjutRYuqZU+41{J79!5aRpBN*!2%kSE;Xw6C2XyH1@V?|^r~M_dDkWjQ%^jl87tRvfHOY^S6g{A2La_Kl1EIdsO(CU zf<223J@5B>cCTDPxU{o3u}XiE7klHQoPQ%P-iq@F@cu{oPC*jWM`bKH(G7g=Q2?0I z&%G}a38D$Y4}5#ZR^7n!y|8qk+eAIIV(p{mcYiqFMrIAJ?7mN~o6R#(c9~JGQj*N7 z3t863tjDOhb>~H7>p4Qsi?BLmpemt~kzr~%2=(o2&pe|QpG$b=oCRs8%en7zpZve} zKP(9!*K!WDFF?{~4*j?8O#TxxgQ5DLlNpv+c@Z=28@F*WbPM3v6SKMS`@#giBnen&}?&)xbPnVRN{jdZoS&H-&CqxyvwHzNFE0$9icj2bYbpiRHVIeq+ z?_4`O?p}=+eh3)zp~dZ7jOr>Tru`!$ZAEWoRfb{adkhnXT}fS2M9*HWwW-UX`w!zO z=vBst!^*d91L1_kq!8b0a6NzJ1Wk^Mg{zBmZi;>TI8^NfsYYjmnGqzwqri{dAm(om zJ}!A_MkP|eM*04#b``^G+ja^QGK{Oi@a?5}stJF^+qEDQ+xHi=3!0z5amlEl$O>r_ z0T$J?SwAZmnqz2fz*Y~jfY<`dTDmmV($z2Op&}K^nf#Q?|08&FweS@y*)`Hi7e~&_ zPD;tK(D)`j+&ba87EfW9!vBWZTBBqPn(9wz=uLdQ23ehCnPPwsN z+}rWq6Z4*Mt*5cf`u;_>X4>)(kCA`R>FaZ_m~B)=R&`<>PfI^EmT@0gDEIJqc|=ti z(lES!Wt0fs%BVZI`lM9^iVAWM=oQrRZu}z-Ezj)N^xN?tsV|ezcqx&Ajy5W9^}RVV zWRXt$e^rrsyrE|x$Ejsz#>@;hJ#MuH0FE-uqxaiOqB%V$R1T#*OdzFD zAcbtJRwXd@N>W@FVc2uzMh(S8B{>&WS&{5LY)@m?R1ruNVnoFk?3yo(to2^}u`jr< znbiEr3QpX#J%Rst{St)z@&Vz0T{eY>RIN27_*5m}L@!VO-UtII-G z&xs(zTWmGE{l7NYFXsiFY#nbhH3~l4f`#CzMZ2d>HeFJz`0<|sjZ|rdQUw5X!jguujZPrQP-ma{*(ok;l+j<=xvCEp1|ooyz26zj2P&V!RRJEiKSw&tZkV?R7fQi zvfjmHKv?&6QrX5)Fj`VubvSh#(PIawT{WQ{Pxr!8%f~o9%Xp~RPf#J#ztPLE8(xf$ z?YS6|ldQP8S}q3AsoE;5m-M~z^OO;w2~*kp!h^_eby1yDPZ{?*;F3K9^_31RS86eT z2cjq%MZCrtn9UtX)ci z-2m2W+TtT|_3O! z+gPoshms&jp+QLRRh9njtZ0w*eWavXVZSUS??BShMIt_o+uox16Km2Kl9}@C?vH}v z!ZSTtRxt)q2x^xi3brLpgK3NVhxYjxGQ}8ho@WhTZe4%SafC8`s9_Z`!4%}wCc9BR zJ9qi+)K-Ow9Q#~@hRYU8n~?CZ92-l~h@&`qlr^wf`I6r)t=&)}d#pa@Awk};Lxs25 z3DPqgxekf`x2EKGX&HY-Y!9L@WWP-wxB*jF>X}cQX~^1*y=ySBL^glrtd zBol_{r#QOk>5XmM{I;bmT^w(!`x)hxK8D>&M^{J^= zWhm&;9|@d`QXpx|?gSi0Nl{iR?3XFY+p8}q-mtfuRVe4EACD=RQZ+;A#z?%rK(@*y zQZ`t&nFT9aEQ-MZ-<|s7Wvd9F{RSLZ5?z-MXiQ{#p;D-`>ezb?di!nPV(Z7G3S5h; z`T8oKu~2X&x@_XqY}Q3=;{X8G%Db~NTr6P!A1q4Cl{1xO<<+POn)FZyNsXiw`O{x7 zR`TKqOpleE$#M@A)QdGI`|V{3dMMw==q=LI$bl=vx zcUz@#_kObM7~BjG4QK4O3EDJJ2dGB>R^_`RCC!(X`cnp-&=O^18xpFgKc)23hvThq4aaN&;0w>p= z!{$no&Ue|O9W2sOxJwi6@EYq>6WNva*BFm@7hLFeS6%NUJAq}UIzmem^$Hr5Z=E61 zEu?-}mb~WeBI@Dfx0x+AIjRw9K%0O+{>4d+CA&F*6g>94p0ffXz?NTaxPCQQB=kDF z9S{60IgrC-*j=n5TXi~enr&>dz`Ru@3nHfa9%;~ANr^qz!LCVU`nal(C7V`Xg0DVl z%KU7IfG=Vo5N<{tu2Q|;_|Afe(`{T~K7<*9Za6WT5QFt~qy1O60%`v0eL6-rpczmwuz8LT zdoybkiQhb)%bF9q^rfh}DABt@a_RO4Kun=A);>{C&G*@@PPid5EO8R(rL)+li)N7p zuzpCYM$;U<^jzGv%11s=9yV)$SKSo-;_m5D#v9z}n5yI@%lmTdn*>O2Zmn7ftUyjTydf@rBWK&9dZu=Cq*g>U}x#ox~Aq&B!cDn9RaV zlgb}?3LQM_G7$?2?4}CT2)_fZhp&fh!v{PJ85<)+Xhc=2uf97;tMxf*vQ~uO@T0o@ z$j+WQv4DjIo35;7RfDOW*|Sf}FeVJ@_Kw5$=Xynw30_mY07i2RQIz!O|IGV z?O}(Ti`^PqhQ`~4!Qlyqs*F|t8f}Y6MAY4bK(E<}X4LkBmKLh&#mTv2jOdeA(j~{D z`-^coxs`Y2zkREoJn?#t_1ni8;hDvFHx%}(YZ>!=K<5G$8EJ`d+G;&!oN&=uc1*FS zeX??l!TOIqzy6(a)GQGGm)r5xGm+oE$_VE~)PH{5|7xelt7^HcyX*5B4@tx~V+v|N zf705p3Blo#P36C5m;1}J>!e?;_%A1Q_dh=Uy$LDs@9d=y)PF}V>7@OgwDkYWPQGx^ zG~X`!pQroD9cA(UUXvmsq~`Xx1-M)N*Ve{xM3cG1bZ_k_E+(^qmQ)-{In$6D5jfDXp@^n0}MIJFsS&a0}Lx{D0zf(d) L_DiwQw;%rn`p7G? literal 0 HcmV?d00001 diff --git a/docs/testing/user/index.rst b/docs/testing/user/index.rst index e9054dc..1f4a6cd 100644 --- a/docs/testing/user/index.rst +++ b/docs/testing/user/index.rst @@ -15,3 +15,4 @@ StorPerf User Guide introduction.rst installation.rst test-usage.rst + storperf-reporting.rst diff --git a/docs/testing/user/storperf-reporting.rst b/docs/testing/user/storperf-reporting.rst new file mode 100644 index 0000000..4094829 --- /dev/null +++ b/docs/testing/user/storperf-reporting.rst @@ -0,0 +1,96 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. (c) OPNFV, Dell EMC and others. + +========================== +Storperf Reporting Module +========================== + + +About this project +===================== + +* This project aims to create a series of graphs to support the SNIA reports. +* All data for the reports can be fetched either from the OPNFV Test Results DB, or locally from StorPerf's own database of current run data. +* The report code may be stored in either the Releng repository (so it can be included in the Test Results Dashboards), or locally in StorPerf's own git repository. +* The report (generated by the reporting module) looks like the following example: + +.. image:: demo_example.png + :align: center + +Usage +======= + +* Enter the URL for the location of the data for which you want to generate the report. +* Note: You can test the module using the testdata present in the directory ``storperf-reporting/src/static/testdata``. Instead of the URL enter the filename present in the testdata directory, eg. **local-data.json** +* After entering the URL, you are taken to the page showing the details of the all the jobs present in the data. +* Click on the *Click here to view details* to see the different block sizes for the respective job. +* Click on the block size and select the parameter for which you want to view the graph. + +Graph Explanation +=================== + +Example of a graph generated is shown below:- + + +.. image:: graph_explanation.png + :align: center + +**Steady State Convergence Graph** + +* This graph shows the values as reported by StorPerf for the actual and average throughput. +* Also shown is the average +-10% and the slope. +* It serves to visually demonstrate the compliance to the steady state definition. +* The allowed maximum data excursion is 20% of the average (or average x 0.20) +* The allowed maximum slope excursion is 10% of the average. +* The measured data excursion is the value from range. +* The measured slope excursion is the value from range + +Workflow +========== + +A Flask server is used to fetch the data and is sent to the client side for formation of the graphs (Using Javascript). + +Steps involved +-------------- + +* Step 1: Data is fetched from the OPNFV Test Results ReST API +* Step 2: The fields "report_data" and "metrics" are taken from the JSON object retrieved in the above step and sent to the client side. +* Step 3: The "report_data" is obtained by the client side and a parser written in Javascript along with Plotly.js forms the graphs. + +Directory structure +==================== + +``storperf/docker/storperf-reporting/`` contains the code used for this project. + +The file structure is as follows:- + +.. code-block:: bash + + storperf-reporting + |+-- Dockerfile # Dockerfile for the storperf-reporting container + |+-- requirements.txt # pip requirements for the container + +-- src # Contains the code for the flask server + |+-- app.py # Code to run the flask application + |+-- static # Contains the static files (js,css) + | |+-- css # Contains css files + | | `-- bootstrap.min.css + | |+-- images + | |+-- js # Contains the javascript files + | | |-- bootstrap.min.js + | | |-- Chart.min.js + | | |-- jquery-2.1.3.min.js + | | |-- jquery.bootpag.min.js + | | `-- plotly-latest.min.js # Used for plotting the graphs + | `-- testdata # Contains testing data for the module + `-- templates + |-- index.html + |-- plot_jobs.html + |-- plot_multi_data.html + `-- plot_tables.html + +Graphing libraries and tools +============================== + +* Plotly.js is used as the graphing library for this project (Link: https://plot.ly/javascript/) +* Bootstrap is used for the UI of the project. -- 2.16.6