From d3db77d5fdb144cf810349e276b99d43420c5959 Mon Sep 17 00:00:00 2001 From: Katrin Leinweber <9948149+katrinleinweber@users.noreply.github.com> Date: Mon, 3 Sep 2018 09:45:44 +0200 Subject: [PATCH] Explain use-case of dataset testing --- DESCRIPTION | 2 +- NEWS.md | 11 +++ R/retrieve_search_results.R | 8 +- tests/testthat/test-retrieve_search_results.R | 8 ++ vignettes/BacDive-geo-logic-fault.png | Bin 0 -> 61252 bytes vignettes/BacDive.bib | 23 ++++++ vignettes/logic-checking-bacdive-datasets.Rmd | 76 ++++++++++++++++++ 7 files changed, 124 insertions(+), 4 deletions(-) create mode 100644 vignettes/BacDive-geo-logic-fault.png create mode 100644 vignettes/logic-checking-bacdive-datasets.Rmd diff --git a/DESCRIPTION b/DESCRIPTION index 6d7b9ac..3febd6d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: BacDiveR Title: A Programmatic Interface For BacDive, The DSMZ's Bacterial Diversity Metadatabase -Version: 0.5.1 +Version: 0.6.0 Authors@R: person("Katrin", "Leinweber", email = "katrin.leinweber@tib.eu", role = c("aut", "cre"), comment = c(ORCID = "0000-0001-5135-5758")) diff --git a/NEWS.md b/NEWS.md index d105ac7..c4ecdf8 100644 --- a/NEWS.md +++ b/NEWS.md @@ -11,6 +11,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed ### Security +# BacDiveR 0.6.0 + +### Added + +- The vignette [Logic-Checking BacDive Datasets](https://tibhannover.github.io/BacDiveR/articles/logic-checking-bacdive-datasets.html) + +### Changed + +- `retrieve_search_results()` now returns `NULL` when no results are found, in + order to ease integration of datasets into `testthat` tests. + ## BacDiveR 0.5.1 ### Fixed diff --git a/R/retrieve_search_results.R b/R/retrieve_search_results.R index f9d2276..2301de2 100644 --- a/R/retrieve_search_results.R +++ b/R/retrieve_search_results.R @@ -19,8 +19,10 @@ retrieve_search_results <- function(queryURL) if (!grepl(pattern = paste0("$", download_param), x = queryURL)) queryURL <- paste0(queryURL, download_param) - result_IDs <- - strsplit(x = RCurl::getURL(queryURL), split = "\\n")[[1]] + payload <- RCurl::getURL(queryURL) - aggregate_datasets(result_IDs, from_IDs = TRUE) + if (grepl("^[[:digit:]]", payload)) + aggregate_datasets(strsplit(x = payload, split = "\\n")[[1]], from_IDs = TRUE) + else if (grepl("^N`TqV_buaH; z+^4pvWp`(`XXfedr@LprDk(@IBM=|}0D$~KT3iJHpdJALA{ibMykc5AZw>%tzz1;= zHTR5@b{{oW&6fMu4MemYxrxsqkr@Ye*+~(&$&xSKQN%}#GhYlc zc3qw~G;qRAtuv3l@M*@1(9Kx4?Gp(T-2U^4cP_X-oXN!(T zOo);kSq~2%C`VH`a&_nA=!j>_ie`3wczXKL+Io@P#gy(js;#8Ds+Cu#CtgY@I@d0V z#rkrGG_<^ixjw3%3_cJ%+7{$QTu4)kM^aeD-eCw9ml(soPzi60q>s4m>FO>=BpTtc zvE@SJ# z*Fl380S^N^rEMt#CK4e}GuvT8TUrM5p#)k*lIW7YPOA@-T=+NI7`E@!V;D@+!*>07_O?mW%kN`2 z5UB~9ov5QKVos~M*uP(m5?X*pqzZ<4E}1wP1)tMWofcA}NUq`?m}_av&-MO|#mdN$ z*3K*c!=G*5;{&FiC%b{L3#sr+aT7`SU35h*fk+?x)}4Yc8=pnKT~FxdeNj>CdS7OX zyofJ*4r$wSaVouL)^<5gBGz63g{BFz;Siq);cAVg#xT{Eva!B2R&}~nlBjdaI}kz#KiD=?l(it<&yu*gi{ezpH%a6gcH#&7!D z5e1J6>D!HP?BQ6uUdtz{Nm$K!kW_rW5{I1)bEb7*ql=F1w5zNcJt2| zD0351$YC!V2oMx!DHqU%?i9XoB}A}Ys?}l1ON9CbW&>%Qy{}8n2po-qafSgN{Q8fVf~HQo|}$7RgaR!*>1qzf{z_L-C5zSkIU*1S|arR>{VM3 zKRYvW-SQ)B>CXYg(1&S52{B`4iA~9075hd}q&}e1y>F{+)Ye`Y`C)lL0q<0O`aG$$ z3imth6nQD#GeBS81DL2ht#&dZ{IQEa3dN|o!{@SIz#UWSM%S8YkSY zVc=bdgc2jOF2(${GiSx*qgSi5@o1tKXrLZ8Zv(MnlNfFh$_t6;7iU-fSwcFI|Gdg5 zSUG=lmW3p0&kydIqEXE9{2+G9@gQ{HRzEM<} zA`1$m3s$7*zXR<#{h?!pe8~ECVz(GK0PoW2xr$X&rynC4l8zQJsQ9Zy!*6COqolrc zO~AQ_Y`!!k+j{;LY(`66L4#j7B9mvp4v@Wmk|~`ft>?Pv04{SA1Ac^K+>9_uZz5;r z##IP>ln8!RetPGnhJzjUy&bmm9jsys2fQ2#UibpuqK%bK9wB4CjPZ%)Ac;O`+NxXn z22kT;lW%(Ft1_KN2)pol0*No!Ru%V*IySe+al*^r$)-?Aji19S)a|Z2aMQFPt$^?!NvINO;T0?2 zkS^f^`>N4aal1a|H`}%NGKtv**Fs;*-q`_l!j&3O3uP=Wafm1}_|YCIM!h(~Img(Q zf{oBMEcLxvVtj0@@h1uhK=^sI#Fo(Q$nIgdrn7+AxxsJfY&;Fw2-j?Yq zH>e*NGfOX0K>-Kz&=4up1aF>$G?)@ehloF~p^4PiJoI;Cp-KUx(wSIrHgv@%%r5m| zM1er*P1*Fxs5R(&h=F3E+8O~1wKk3e6?skpdeW7@?nB0d6VPkXrnsC>*B^W|z@*#G zjITAUZb@^N9NkNEZ{`T){37}iJF&a7JKxm*c>Y`E48|zMJHnM;`PXz6zI#Ia?YpC5 zPT-zeKJAy6GnF-)v5!#g>tMNP=G%3l!M$kYprXO^h=faObykg5h@4LcbwBCy!W$+O zSM~W5erRi|&L|IEGS(s}czuTI%AOf^!TI$1E}i`YAlwm}kvsaE?Kna==-21p$*C9- z-TB%OLXDh|_d28{TUKL3E3_ZG#WAnVQiu$1?%_x{_jA&t$Sg$doK-Q|j@fl4DDw)b zG^lhl*Ix02xdT{4JzE}ESKEO!+pTm6IV3z!8VmwQ6v1~1e`oQhoLV<$%g^F$j5}1- z&=*w0s@uJ^dwSW0=@7jMQ};=|!=6IU7SdP?hp3GEzS-Z+)j5Nqvbf*pJ{~X{USS(?7;P3_V&~{8I`KZm^Efw+2->MMhle{NVm|=>Q%_rmw+1aS7dGNU^qyO`X95W_dJt)YoP?gurMu>aec~wu z0w5{WOxhWM_V^s>8@V?ZkU~<-s9Eebwzn*A?6jZuddxajP?-etq@}dieCerc3v7&u zm6)OL)U!JT3`$vbhHQp@cpCokq7JdK7Zfm|2?KzPiU2rkl~jD1dTlEgI*{-ludGCk zbVKKu?y8I~oY`w*8lLF<)s9s;& z$W1s#H5T@AwRk7F{LyMsucV!Ez)V7|3n`T>+Vff~f0v!KrcP6_4GP%2UogMkJlER8?^@`*SWmJ55k=+{scy=W=Y)Ns%9B-)b@cgqry%l!4=rw4&Ikg7Y#;T zk-CaxuY*HRA{IGb4-^0kE#BzPJ>9??5J{GOw9xkS5CF|kN^M=U>42%;E3bZTe#* zEQ$atzixZ|`KB$G+0USZ$iz$nQMxgvxoUy$vOr>4%UWk4sDILz&l>9c;b-Uxyg4h3 zX()B(p}y5`Z+m{cT@N=Ev}@^v0|so{8<)hOyY89UFUDbjhmIG))#ryHYM2y44Z5yXP{*mxJ$;Z}w6Fxu z;%MsH4<^B4&&>NurTJOp_jWxj{`}Yja)(Tl!@p=NSOpuG-RUKx9(6klEMZ38n9}$k zsUb^qV?w+)p(Wy^>@;Zi)Ss-tvsTXWt8Jl=jD#3;U`*j*Swe+n3la%+)TmfT0JVxM zI^cJ^gYBkfKma>D954i}xbV`64H@GAb6LAMd_DSfbK|=j_{v;Jz7$Hs0z}KslG3i=vDTR}_DalnFLPksVWaQ;zSOzHUa##-c^jCj*I>IoF z*~@QaTgwQK_UxdSM;2aFvOw98XtL4FP$*B`cvdA}ccnMq{yKzN3KniWiFcdpWy5d) zrhfinS)1n0+i;jE^R~)i-5TkQGd6doe)11U=|nr+P$VmRo;*qpWB@m*FwJ3`!sd`u z@cW+2tIJ&vvL#$*WSh$7KSntP^&<%%iuISLXR*gQEeDkIXc@d}B2m)#Q44Z?Rj6Cn zL`~fFj%>8M*5Qz-eWzdbTsYo&x zpH6Zl1P*)nZME`}w_kMLRa}4$hO|>vddtFkbP_92^`WIQ9+6djZS@n}fm(hvytCU1 zgy#FAn*P)^IsJ@cg#x0Fezsnc;IGf3gpxO6)}F39RwDwz;>#vh*XkF99Q*Dtd~M|r z?qMr2hGW5Dhj8Oiq~nk%v`w$|ID@D9!x(}TcN}1*)YehJ6IR6Nh?9JGu@`?b{90#f zJG+*p{)ixKKcZzh>Wwt2uSHDFk3}lylt-Jtej57xyL+hUW%c(brAp-0J!DNe=I<&v zt|QV$GuVV;Edp!}P7N-fiIW(p%4{37E3Tr=Dha1g)N2Gxg3QnrYl-Xe|8;3m^*LsR zeo!`TW6CRd!GR;Y+5r{#-R{Da3vyl%{Oh$Z@>d=6BSt6DScDXuO`S&Hm!+Vlg0k^B zIO(1T56h*1A8d<9p$FX=l5By^4T;jU*g_w^`eG!?HDBE8RAC5xm^_txohI>&EmJO( zED-t=>^ecc^6*u5aVIBUXu2NisV-Cs!Bl|-FglN|a{mlvWX`rbq1fOPro)m$-IJGL z)OQI*9KY?RjSZ&~^(g*Epl{czXN6&9?Cn4t#I&B%SuUBxoi5sGo~GjGygPc#)A%=@ ziAe;*H-7h?_3Zsm1(i4*{E1pW#5gid6DJGOIb9>Nk-*GUyqMs*S3}R;cgmf@y>Ceq zhaddTl)GiqYDWpB_c7!3olDBToRi2b+Ft3Ldoabwkh*HyL`>LTey5~02nu$}S!+j$ zlbAqEE8BJRY{%2BX2r>31EnyhqQcp6(^8}cQypup45OU;S}0p!*tGK<<(WXFZhXg@ zE=h1vGPG^ZE6N}czokUqTz}qKv19D(`Uu5L)*mnQld!w2N$+@{$COa&g(fcuy_OHW z*O+0q_^XQ_wC|K+On&dc1u;P~TcceS#M(pNttG>awr)(vr-SLm#*{lB2b4|I=~<5OwK_1tfus#BIJ`2w zq9)ckrgD|Ovuo8mCnmK3xE;6R9E&9 zQ>8vF{J!s!;Gi^pgv;Y}-qnWXRyKz<&iQ`EZv3`SMf3~`-mgO zGzq2``}+p0#^Z53O)8qHNb-4?&1l7;PkWpWEmQ?IOFo|u7x5W)X$)Or5E&^Hq@9qP z>nGpYG>N?z07EN=6qKId^~_uuO|e!&3Y$@G~@IP!gSxz(OrWRuqAeA}68IV*E#EtNB}h!YU%3ERUqy~9@IW0RvxythB%@(X3h@qfvcS9`TBP?lEV3>xbkneWLy@G}_1r z2sR~6Y|BQ++n~v1OLr-`+qY#zK(<5Y^KHE6s@h(5(#YjCTV)=|&}Xyvy=CcdEio;< z#qY2GQud9K`h2g>hv{C2B+E{?2$rdp*HbT1eUj4NF16~hXg`nJ454F;1IoRe0`2El zeU|NO|F+_Tk5W8^84DP!bL3=vTtr;eSO_9$W(zEKPw!3U^HOOIF>%ivJ}NpxVs~X$ z4YJ%dHc(@XO}_n_&aYCO0Nz2(g^Dgz(k%`?7}}LNH`7Yy%@Fl{)X=Aj{XkbgQx>YL zlhoNJVq!s`AxfSv4yGL(KIBGau2Ekz-i_qZa+0lPRL_~oVE#9Rb%ZLArzm~J#O zOJN+6ZgfOK+8}|tCZ1X)8$;n(M&;0R>z!(&5N-0VAa@KID{?V4X3mX7Tz_m(;tbkc zdnEzdlH+~Do&T&i#V(hHj^GIfE$!~ND<|Uqt!tq5G9VEO!C_tp(=P7L6j^Z#8pvl|*mYk~JR_pf}xzq^P&U zYI=!iwAYx%QSv&OKVDULW97$|O(2qma(#ranWKpsNS60aUEk-lLV>g) ze&zK@0``A}A7*ydly3y+W5Klq`nx z2-dsIz>3m;#if|9NH$OZ>zyrDB$D+1b?1FTmrWbxl9fgz(cvs{|6ca5cMs#(U7LFK z4;>VvYbn?x6kp?`3-!P^4KzXil{F?A(?f4#(4}6dLZfUJN0eg>4HQ~V>%X=l6RA7a z-`WJCaH*-=yuM!@t3tgYC8c{?(93NBbA^QE`Nvw~LD|MvI4J{#x>F<(6x+-s@b3Tz zz6tx-Y*_G=&f3&3EjdeYEF(%KfiLKT&Y!m_i}M!g5K`AGp0%-^&s?!vabzAge}F0> zJo@D%c|sBlN)TaN7*P*^a)wbtPvCg0=j*d}HxfWZSRIIV0>3IGf%W`SIySLHu0gfM z%O)$DnITC{qrZr2`v=w-+yH-<;Zy`)pP(fx74X@-AB$VNO_w}thw4juGk4%>P%->l zH#q_C_|m#1olcHgKB3Y_@Qut6|J`69s13B1F#J@89#OsmqxQFr0nSA9zcFs6*CDzK zkO1IlH1KsJms7BbQgl#b#)pdnO%RkH!BtI-(Xy^zs!oFV-%7?j; zQDvL6HuDoUTd#XqmpRBAsTmX zc8W;fL(j-Y5ZIBr+S)OLj}Ac! z>?=1SVP>MIPZ?NE!7k5+1mT0vDeba6c(_r;;4^?_H@k_T|`BV~Z=T~9=HAA)9T~+_( z3xY?S2ZV#e3QLRnN{3HtO^r&f($lfwE4k>&>8a53wW_VH?bc^2tAqBtwd3=1Y9>Rk zQ_gBFA`A>RuiKN!#GOAZE33Tb&Gm;60Gev?Xdip6L0$}|jPOf+UjSQZx<=$PjBl-Q;{gfl$K@DmI3VZ54)ro1?h*T(b*W&3d!SJ7v z4<)hm3-U!UFuw# zNXwW5-u>k8mmJqOcls!ov~xZo!Lw57XIypK0uT{)k2CVV`n)#2VC+OA@9HK@#1+4O3X7`6qlIjq;vK z-5T+&&bkQv-$ljNAbLPro1KsUD{=7lDm1PHen?Bn1s0`lCJw!73$04Rx6FnlG-fPZ zw{LmT$6n{r#^Bt1U13`c`poEZ?dv=6(Yg?VXc1>^aj~-bMr; z3gH`CAM!b2WqfU$uWe{KN(${r3E16f@T4^@NRtwLWxl9*w990B-)Y3C(OO+r*_x;O zM8BP31d{di>VnBzNzK*QliG0=RaH1xSc|cY=8ww_b_n%4&%=fFVW% zkLkQldtF^!mHMskA5YlhITP%VM>R@n#3ECn)fRQLTjBOpGrK6S5rIDbz!Gj4?Me;Z zbd-{S;%m@rM(}~_`98=Ef9{jItK|0Cw>p#4c=t0NvmY-e5k(WtAs z!ri)GXG;qoCnq+*#?Fq70AuM%?CDf#I;v{@)bXL!1dq$tRMx5FOY4IZ@Yj?TZ^pY< z>RKK-DAQqi;qbFAXca3puuKsuPJW*$8KLN6X;oOnal$UQv582ke#O-s_#P?#N4y-u z9Py9&ct2(EPiEa}QOV*byD!=L#H~;f$)j&$ilptzUEZVHD(y&u)3vZVv#<8c0luMhL*ZC7LP@4WXj-F%;q4X1Zgf>&@W%xtY( zZ#C?*f5latu>7@Jc9~LdhqYr}y+#V}bWPnEEvBc_t$!cEBK`QT@IEA|1jEN$Kw|4)dtYubIilz{mWX63-K1r( zOsDZJhDUDI37RmX8!V~Ax~RusE;f>~ntY_>cQtbfvIiufi<*^k>4O1z&`+zyw?K@9 zLqc*JGu@>;uVw5`-|!ww`bzk zh$=idS3xN(=n5*_pgCwn7rr9i(L}qsRRLu4?>w?(uW1)sv{FT3lk8lU;9J+>l*~gd z!oo~M5{X-yChmBE1Unzx_Y{y{D}n+ttU$L?qgTO|tX{^{tBISeRv^!o`tA3M;#Qk5 z=v*YRvwN`&i`;4{#wZ{B>G<;|xOdUe5fpS~4|vVNRWLC}a0*{^NBH{`^Hr9O?SVzmX$(`DD!hz z%Tg2G_h>iWcZDT2$S_M<@RMv&bLiia26>=GvI13q8CFK>+@u%JQd}*)?l6Z6{TVi{ zB@o(-%xj$A?&bDlJUJ?+1%3ws_qEEp>-4qe}}g=G@#e!{D<52I~}wBTD{l!pG%eL=9lBn zmt)XRbiUkFp%U@1u<;7rZv<6!JlL$ZxV&Boy_&xJFgQ0+csK6hN3?YP(%hR=kt=^b zjTxdlOpZb+dOKGWCbmY(ZyvS)iw=TkORyth%%CPwPWb+HBH$lhlHrk}74+X*sLZWY zj`a!g@bJ_m{S8Vis;jH<{}DeblyvUc+L%slOmmOQl$4ZsYDHgAKVDv5D74xh|LkY` z{nM77(X#PyvDK`_Tm^*=hBEK#PpKJcMv?Co(+;my)n1^Yplp$XK4hTQ$P87h4h)PgFNK%yJ89_74o+$W^1iXJe@V8`DRaFfP)>d2HAdDVwPtQ9ZD|az;B0%$F z>Jab6bYP@&#W)b=`@dLeU_s1oW_ohblzIB_xN^P~0UBf|J*B&=ZtI!v zeLQt^mcR~CNd%-rsi~;4c%4Gt2Onp@J{4{9`&U$)X1`n)-5k%Omi1Xe4yTQ4^_WBd zl{`?uY2t4PXOh;Q`sl#PSrMs&3?wu8&F9-Q4Lk}>YtQw+jOiZKTW$KGX#->*$L$fz zT74c}&CLr$bMNOnUnGJTmY4k=4vXgI=6ZK0CMLYj+ogmY{vT|}xbY*A|G$8V9qwQ3 zI9+GU@#^*j{izZMXhML7@puK_*P)>~Z~1#dw}auQI++&fBmdS0BODx@L$2o5oKQ+8 zj=Qx;70Les%!p6e@UC`>Yt@4I00>G0&juo(a&{Km=a1Xib??w>BloWp3nzv)w%}y$myV6N6j=Qc>krz;BvZt9y`t&FHV+ba68FE^Z-Z!u&cNQ@;AC zlh~@(U>%#ahtVjS<19$yrheNL7COsROjB`q9b37dVva8eK4W7Xw75p-%3N=@U+?Db zj!KOf7{N?(eFM?uFei>|OHa~^7vHDjKl%Ms%K*Fo(#}Qya6MTZglhGObTKTS#*$YBy7;&;o{bXk4glnOmW_a>-Gvb2jO+4ekw;hn}NG z-XC#+ESN!t;v!ah9(x8w37Zjwy$km?)M`S5RU)JAf1;0=fSN*y#AyOoWdK30Xc9^W1)GZPhrpzq%444V8UgC~nYPI6qD&Z4B&_ zO&*XZoZx~vfeZntZY;(-XnW>K(lqp?N*kj!zoy7~yz#i44NMV=QF`aByVX+_|BDCR zq}`~8RR4d`2p}w%%caRR^o3Ar6*#P4%C~gN-(t@{dqIAw>#a_L1Osy-hurz)bd$d( z8`GMIh-huC$+(H|rmYTd`d&RX)M37P@hd=1cQsp*e<4Fx=1k3)v ztCLJdl-&$M57YbiZP%K*Mt|kzb`X#o29nk+D8iFPe+v<<(10b2-iEQ9)o6F;YbsDn zFkm9%{?TAa${&eeP+rbE@qh^ca>$6RyM-!~ljrB6cq4p>;pucFkPE!N!jBm<`ie?1 z$NNvsf@V53S4$3PhJPxhQkb|ahV&B!Gke`igDYD}@!T6&dSU&lxjUOzd57Av zFaI ze)}ukd3ToQsBU=#vp+ z?7y^c?VaLI1~aPfi^5grDKX!M4j=7Hl{fiym@N?{rz01z$U{Ogz2=rFfN-T5VV#>z zTD3}gim-2tLdwq5%=x}c0>2m5&B7{uaHk%0(HC;W=k+qC^))3=Mbfh7!DFe=F};@C z?k>GW9*CHOn0$4%Od~Rl`%}BQ)b7vN9h);GAm`1B=5HT$(ak>G{c!Tk1$@W(JB3DD z@*SYYvD9bXlf;b8BwJ7O(u({X*#M^1O3)TI0qC=li5 znaHI%mxA5qH>TXlQRAwQogi*!jW_VQ3=CCi=W&59W`C46 zdcYG?CSWE@+XDi`;f_A27|aZxjZ@H3T^bgGlk6N^;p{5)RJEDkJe)%MzXZx;+F=(Y zyO^XO81VNy`m>PshwBumh^o&EVBs8Clfl-G^MmSx<$X>e?)7GLZA`fe8@rSQ_u?nV z2TPGpwjyO$o*K;c2|_2lIVl7*hLL-MpsB@DehEBp|HpKRawJdZ+)VpM; z+};Eb(Z?HZCW(Z~vY$PY`?3_Vij=vDYWL4q$k8!%$R?%{OGkPdk5B&0R72iHCo1M4 zgicMHw|H*8RQG`W^ty_MoF5tB%2 zzCo2URWzu9`Rj0+5NHb47dF63?3YKJ0r=oG8G?a9Sp%Znt{M|CX$Tb*FqHvdGhqT_9y%*lplZ8U$uV9KM{G)@k588UXiMI5xsy}K2;}_INo9=C`cB!r6+_{^{ixrq zC}-JO&5SfDFDj*JT#PAH7G%gaNFf&2yvtF#^W

7W29SyvKsITdtr43YM6J*a@pFg@={#bEGOt1t_s;+mt|xoKW;`FcU6!%FlGdohhA_erjMUpYxgDGuxgwO$XbhUN>i2I|aHgO`2 z_Y^=|?OTo3O!qUQ#i4~!QfB%XA0AWl1#N0yyhu9C!#Gt1yny==l!{)VW$=^08QHWbyVcNE^=ddg&#i&0m)Y6f6 z17%Dv;Q9wgg>jK;%tt%aeOvoE+A#W%XM^liuD}im7=Iq`LlB{rp9>AC?Uim$Rp7S8 zmfl?liycNXb$hSoi|o*KdJt?y70Yl;%U`300wUe~U!W`x)rb4wq6?$vG7hSZrA;-` z$lH^0X@)=72d|amf_PG=QCL-ER7RE-k~wUyQD+U;4H(jeiOIVaDMKeYZF?L*_p2l2VpF@xc(70{W>e z`_+qq1ANFAxunQB)4~N50MLQs%jqOL{|xzDa&mY=sw8SD!iuf31b&v3Io~S$gc!m` z08i~){j87bS6XbA5I^s`y{W{XH+CB;lzCYmrjV@qo*k!kLKiZ0YAoa%FiXqNW z0-=`mSf@kgjG!ScYg$@^$WlgCeg!uKp2HR+>f$zhyJdhY?nESm_P2&$_+_3WCLc^l zJ10Q3Y?5C``e2kLG@SpjFW*K>ZNm8j$>M8^Jp`bl%x)6h$zKeiYs!}55KG(d7Edhu z_S5uXAq128%`6(e*=O{MRKihpS|lsILI=ylEzFInNfG^ohSlUIn0Q>9pkC2^kM-4; zfHG5Uc*@6Iraz9UA?~5ds8$=ktD7~ZBOJHhFu)4wgt`>Vw4~9bEdFXsL)81?R*i;D z0`@t+IIHrtZ;cZgO791dl+$T>z! z$yx4V2=CF|yG)7@-G|xUa+BsBwD1lGmDx!!vt8w@b;btfO*9lz9|#?2$%L|#$7RrC z*5H9gEY`Bm+MA+6+qORmkmDYi4B;M;37uK^lgZFx&5#t zcxyAvbk6CzjG3cin8<|G9pi2DG9X^Nn5-Q90!mg@T>2PXio87YA;WTVlOK zPH9KaoCG|}H0;Ad+WD$Tr12^HN8#xbqmW`ayg~TU=)%)dSUn4!38fyBQPUdGN~P}t z^SW9x*;_Awrs#H{`g$2VcfSdN7(PuzBYanm!;N7j1NGELoz+o3iNA&4(3sgUF6gd}?mNcfLmOJGBu9-hJNfFQx-Ny)ZE(~5x=K7ga{+^o|i z>>E(r|F*AHzDKa<(8d`-TI8UTsG)nDY|-79e94n(ZJ3l%$-@W-tn+SxnSaLg(szb` z&!47GRA!NH`e0b4*X~C@{3Z-?*(UkU@|Xq1m&a-PhrvDM>QO<>b;=ryThC4Orf6PQ z`|Hf;>20l`oZvQ%w_spe=-|1ZaV*|^N269^LFxnJlKkfdkM?922}+96vliaz8q21B zC6Q{C4+gF{SksII8ca5k<&&-uU5avxbTa95Cz*4#>)zL`$p(9}y_b*lHmU8FZR3=c z#?PlMFP4=SbCcRia>HT^+mX5J)z}3Or<^inpK({ezd#fW)`9gIpy_TqT8~pV$9^G3 zv;PTKBO!a;aXRETCR%7~7iXWr$x+KrPjA6;VRJ*luCv;5b=z{jVd#X1!TQHl$wTm_ zEvVGFW~pNHQZ0-<>Z#Y)kU$q&o+FLms*y|)hdRTihl8i-XUvbRI%zyB5;^u0AL|VD ze=TgzKz7f#49>%nKg+ige(FwPnM@9FG_K-WBzN@E2lyPmA1xQ)(Di3Pk46Q1Nja=p z;=LfVIOXwPXul=mDI`o9kthRZ?~e2er3mE9hZxQ=MmVNa_F)QrD`+-&7;eQD*C0qKYwfIU}J3ntG6dsrT7ZPu=bM?i; z6u%Jfm&n;Alc@M~X2iJt5l-%bC2u!dLr;Em=7l5S!#}a!PQ~M|5ZNDM!;&P0ph|Un z*V_^pWz+D|wQ^_#It;j{4k)vvLMG;OmRbWr*k&wm&2~MaQ^>~~q-sQe(<&0zJJ%~Q zz0^t`W2W0o)QTR_ly=MV@yvNCk8iCs>qSHFs~0B0GI-TpAf$>fDtqgJ^d2#~7)0Lp z8}Il-YXNa%@o#jGy#Y;jxFS^V`&{?07dw9aC8>Em=FTy~2X5qZk+H&wB~C6zb{H5~ z-jJnSO3D%KQY&1)S`xFEmK~b{Mli;Nyn=dCh@0sk6_P*lcoTx(%Te@L%HoZYq&LV_ z6&-Wd`b7Fx*A9)V{t6V9u5jZBm~2R)8MOqttAN}e>xC<~v253w9Z&Y4Tc-L0;=Y*o zOSr?9k4e`3msW=8#{<9NYvi^WF+jqVk7>F@HKtyXv~}CEp-~dz^xTLN&z(m2>3%9R z!k89qENUi3b&DaHq_P)d_%;bUv^4>(aXhP&J;}XOzoq#}fYbgago9|<)(F*_9NQMT zn%0V%d@HWH%U`f>;KjHz1Rvh0I~PCv5h~C+sU3UZbA7#bw}1i1C;XgcLj#cQMu2rw z=U$fNVuBs!h()`N*`6;BQ%q!+Fkl@%wQ8EXB)pQQFa{&r6`3t&9b_mtflwYL;&O7v zA3c|R1f#hG31fOnEG;2`xnpCi^$dzfiswLmOyeA09)Stkc~8*pgo9JQr)cZ(1brtj-`fKge)VN%%%EWb3l zTnax|lwd*8@X>14{vq;q*`J){1nX<1c}hRH^hidY2CO;X`T-|XGt`B-ISo`)l!}JV z?A`Lr7&nidxVP|Ku?t^J86gA7#&J|F&!X6Nn1bs{bBEfv(C|s@_%Kaalghh&?2C{1 z3t`GVvpCrrqln?4VbWQUbVJq@{(S83IK~)>bmwy+ZPIX{U=}E@6odgYeK^D?=2(3t zx?loVNm)lMJt(d@VM|*WE9?>mp~Ps>=x4c2P1y}ChQF8}R?rB3(p-zeXHqv0Ec-h`(|*=Nn_DHp9PSi1z& zkPJa*!gnaYcj|VyQz~LDRmnA=-`&PM7-a zSL|e7Woj>|EpZPETYL;-(<8 z(0!}avKBNXYPGNS&ED~7TJN*~G95!_Ig;SgWnTrg=uJdOqtMgfuP^mZ^Rb$h)Wte; zUhY#LQ}52xFgJ2*r`g*-;l(|s`&pWX^}7jfnV^l$d!V(m5WL3sM~mc5u5{l2pS=Lp zpSK$>gj&4ZF6Cq!cK_Sfk^0*`#A_yDUL+-0iQL$Sp_*S6Oi)Z$%19%ALUF2Q&WQ?E zeQB-2^i_Fk#T3X05D@bu5vCUQ6QN9O{4YmgwAcxHWnBMbbd$z1jor$jG)OY%^`w(F zS2X5#cX6eySvdzqV~uAFH1;aLY0n9MHm;3L$^{)Q(Vyr?i+j+~+k&3G@XH84IqO!x zLw-A1svGo3bMH*O=7M6L-i;hb05J?W<;k^P5i|!F^FOw35&T&W&ONP8_aVp~{dFGn zI+N^R%A;?fO+<5sH-i>D$W<=zRW^!Vm@B1lq zPB+ediv*qeSPI!MP=z{gm-2?2bYcE&SAhro53rA;;4*EwFm{R?%p6+`;jb-^hy@U@bY>7vC#HE@Xw5}m2 zxxK>r5frcW}H&hy)2B_RN<-9#Qy(ss5*&tiG|tqfu? zrbqIP!XsCgxL2g<{=LY_Pl{^9=w7DlV=~l1u1V+~8vRq$ip(40?1$EC)E-yYhI5Bv zC@b}>97U+|RzIkRL#P{!OD1ZyTW10xjC8R!L!OxVnSie&m~*4ZJvP`|8dUpUf?^w*qH5Le`;-YS6KCbc|rpA=C- z`V*@uy%&X^A%qVzsD3Z(ff-we;;f~T8A>w>m5|6;SA>9jOSNSC#`t{{cBwDm$hiiN zlQ1KDm@C#5lSY$5+z^?kN2pX>A3$)2}agYuxKZD*qQ_Zygm!(0&OI5Ik7$;1Jy1 zA;FU11b265aEAof1or^JEx5b8y9^fG-PtC2-~H|W@$LD}>2rXlr@E%QQ_R0&QRF%wWgO($>b0_^&$;M0~Sj-Ywc8FX_(G z<#}(Z_@OmDVu|Np#$7eutXwbkp@lJ6BvnfzrD8un)@j!1K1fol^KQ{;%hVytlO6Dm zI}?1wiJxpLnsMYa_n`PaCS}H=$RBR@d33btB$-Km7T*lOi;g(QKK}sBLe&GRZcj&B zz$Em(5qYORxM5!!xtT0*eO$_$UeYq(!Fz9yY$K@Bq4otCsD;mA z0(+bRo??!`=uO6s?mf*q4=DqrVvTRPAd;n$XRvNsCncNOD1JtSN&Vafbhx1R@hO&K zNGt2za-p(DAdA(J?W0JYNb!_+kiLVIrS}e z^uofz;-=i>{9fM`8EV3g9U_uC5HfKh8p$g}z$9HG~TI_yR80 zq?ZsUgVCBhnr}nqNYEpE;`YyTz!};nA0FO1E6#&y{{nUAfVKZHzDwa13}PgnE5lvH zbp*Yb=Rsjpsyt$wOU?|=S3o*T*gEtSFQpS$f7BPT<< zrW2F4f9Fi5R(#66@&!N=?&lF6p?8k&gsw$|c}n0;l)2j)j8tNe30arOTj7f}N5YG2 zY0gFrl#tm|5iH{>NlYv(p=U?2ktgG z1W*gO>o)ICF@lq*;G?#ESapoa1~+v(@DJc#wT(pkZaV6dmE~-RKLXq{S@M4 ziS#Ck?uE?_b)me4_60K7a_`t9L47rWrrS{xQ6J9Ax{z&{dQ=Kb6ge!M1hQr?agR#?{tK`d zAdad-`c%dkJ}>Qd`5M`>rP9zm>ihDB0yKmWvGE$ zb|4;21No7EIN8SaE2e)GGoUOX{yzlG?5XT75$}m&0FB&nk#A8UZ+{_Os3APyk6~YF*R@+PGUn5tYMoCpIv_l?cJ+{L2rA^mK zyuA;rKPE5>`(*xS)^NXX=bh3IjGC&zfZhY?dFOUi!N*2_fXO)H+8F;UuJ#3xdY)S| zRY8ZkoQnS|ZYo;VSO?hB=V9S$7ATEse)*3!wYw`;RSsY~42h-!1bs}4#RTY_;9xTl z-p2W-14_@;wkdase?+j!Iv!j1pr!kGfro-+u4|J?r5->?865?bNu`zQq;YuNsYwNq z_PMULKHs-~WW@(YhmDLi>$GV9$6zB+CmLY?k<`(yUOTz%JIP7;HY!tN`fV=Ctm9_l zl(qoxBtEbM^1O1tl@h6}jK-uSFz@19CjS$N3BknhsDvzOt6$NCT!nrJ2y0;Rm$mgk zg1tVb0*~^W<)DKGMm-_4?i4*>rEU+uI(MgSnA)g#Bt5LgEb;R5hbSf}si*VHyaZeF zG1sU2%CaWb@D;sqxmWm%Je*H8h7c#jt&diw8tVY(`hGf)pioAHgiS_A)La;Y`-MsW z1Omy&W-upl_5Pv4r$oOyL~}8G$Fw-cb>BtTC*aAfCuR2wAcF!AO@bn$rbIz^lL+DX zaN4)>+HsyfR~0RAYy-wuA<9DGT_^+`Y5azi>wASLv+om-0hg}{3j%$vZvl<<%@Y9g zr`Zpv;4dhTFX*gGrT@cB>NyJC#f%N)oU2i4RamVuS#ezKJk zb$DRm@D zb>=`Ex4KIV$Fs=add?xomSk1Ms=`yv@4)fC(nfV0-cH+2L4YEG$kyLqE*b(b$edcZ zH)#kiFr-7z%I^zioo3&@15mS#mzk+<%zOLBcQzUvB zgrR|G21ZF3Z5K(7;J(4h1$=E_N>XS6=(hM|PZ~k(c=f|dK?HJDaWRz_`dY?_#A#0v zCL0I<)t_6wHTXDam(&aZQIfcKqkBBr%iB>;I#WeT>vz_seUsVGEC6e9v)7x)>XcjX zP87f=7WO`4cpC^Yr4C(3IiAETF z9(cYqnt&ACmbSf?odXRRk#1gRkZqV3;`B3ecTg+F{aae7q&YkD2N(GE_IagT0G&du zlpAYsl0O-_-;Ro}6@Np} z`LRYCd(f&GC!JtB3XxVO+T}WYp{QXPAwP1UZ^xTFm*enBGJr@mam5VDpktbvI0scM zEnENuTtvk?UGk(-EcMbF7ABq|h4{_I#JJo~WhGfzK#0r7n`9HBVfLysuT*rZt~nE_ z%^-QscuqaoG%D2xeAR~UY##g+#1iHtrzB*gQYeoQdtg+n@AzE{TP`#nF;&+e{^VUH zoV3R`2fB}TP(^eS<}+(jNmTkhRbL;ANRWae*$49s`I(n)uC)d#14MtHu|r%!Z_>7X z@~KnWnBv`wXob(c^4iuU9;1jHuYf@>IEHavRJUd|drEoa{tP8;q;BzuHnIOT+qOVR zzmH*}qDhPRY#Xv51G3bgr-dRATH57##A%rj~B&dBVh&ndIo z`xS(=2z5xR)!h+`nZkj9@CB9OK>ou}fX^JJIR0)DPPZ(jZMGL~f?JA58_U2{S?v5b zU*GzXJ+5tt-H@(53b95L^0C>)@%Ph3iy!ev1Xqm3*5pHIDZ@qK!V=X>X`(~ zs>4Uu-LhnJq`u{i7`*tjWeo9!e(&ibKk4%fKxGH9Mz_#@>|m(!+|k(lT)apUpSFfS zn=x6Z@#H4TOza~rw|sMDa3`>!Q^Fb~=8LbB79d?GQ79$fIY$PhfO}b+Mne_vO8}M1+R!9;^WZJj`HQx6B{^nMCFZ zx9ai7gwUZb<@$vb|Ff46I$!GDs80?`5=gbIMG>;yafXKRw7n>j3kkMw4;&bMUS0o; z&_)-p&kgIFd3KkXSex(-bK2|lQTX6CqxF$bfo`nwjraPz77&=D z54)tpYIzO%l7YkgD>XY+nGj8zjH}z_Z*P49n6=O9sTBsN&t`Ses4Wl9bsIJ*3KKrv zvx461KDohH^aD1biWQMwtWKno03DlAe=?HfeOJ=IxvalR>#gYa!5+IKq>C}sCwie| zJRJ(O^Pr!>uI{vPdmNQ9yQ8yL2Pa*(Gwq`V%qrCFQ|`k!r5<9zk)nx%d#5q~T2(&=0gTu_6#?JJ-eK$GkXL@VvpSuUO&NGxapHiQlYT#F$ zO5a3>pw1qp0`!$vZGRfav(MFvFkK=2@bwc8&Cj38c;A2M5g@U^;=Hn!KkMj{?m{mj zun7lZsjRvAdjoRCtefsDUy|n?S;AFScvNd6LQGyj_mTr+S zzoH8Kow2NjoNr+Rn}C9BJ~NTCm<`=@xjxP6?Xb{q^$v}!BdI^-=Qy=kKzKY)23 zjozy^g;ffcb-Fc)(3m+ZvQ| zk0d9{Ru%T9fv>QRN~BK#jLGtD{@tSaC%@N+^g{yIW}~taOQ|C&?B}>OyRF1}D@(4f z%`70&cM1D^Pw-?r`{0cqJN_SHO>*q$G>5gxl5;>B!nVkL*y(6A;90?poju5$&UDM9 z$&;vRpWIT0@zn)yyN;5OI%zJJjp~tvm1n)B=5)RFHO_g3D|kAfxukDM4HYzqV?^BA zP-1ZfCEMFt%W1X|UyeEUk-FJC0DA{UFCN8_=|}0itH_kN#+K+ylcPJ`M|T2>8uPo$ zGD*(o3;qPY#i!Xa@4AQCroQbw;fIgI{oYp){~n)*H95n2B^^haC*0?6_`)TdF%P-A z%+G7nK4*#NJ}!s*>8j6H^`W6ZvFW@1j6M#wIzK*+YMwtaZ3#bJ?~ntti3k5{0Wm&D z%E#ySjQ=BZ1)|xgyeZ`C<40!6y`lYcgX-NU`K&K|j}=Pka|>u7LD589jAO_ArdGtA z9Z`|gcTpi3*uMAaji*~`?>o@c6iZFmW68FU7eSQhEX+!tVgk)bRGcmml)&JcnRKF= zzM21?Ov*u;`gt+6N5y}&a+HS?e{T;e%SzkJ%&O@|Hv5-}1OYm%@8>XanK=j0(Fkg9 z{-|uMiSc>&C^Ln(`Tn*w6g@ZXnwJr1C`O8y@bZ!y>NK4>(UoQLVJkQ1t=7&_xVt{R zZ_U$)+gZsEA^&aIYraNqD%I*aH(fma-a=nDg`GkdCX@`yw^!6l=b?#8u5)SZe7o;C z!c9j2nj(%75p}UT0P>02z>qkSsC9rSP4I5X{S_NTD}a5Qi_oN%iVlH)uWhE^5xjRSrYuP(&_&@0fKIcQ>`1{&u#*d{W!hfQ|NokP~QgAH<2x9Mi z>WPy*PR5FlY;+CZ0m}(Tt>NNYO2L>Vu7(yY3e&MIc>K9|XtPcre2&yxrOlf<&0bTu zF+tM|qyb9_*Oni$sR{LJqp>apNo*LQbxadB*oOG7;cm5QZoD?^zNhb2S_i8&d>-6c>$np@kc-GtPSzB?dp^Ye{-4-gt z03Oa+qvF+!H^Ha{E-W%xF{r`SeB+1J+Uu6nUet{OI5&@ zD5>rQ#co=x9-;})eBNuF^9OgnOzKaF_Oh0-rujaMvyg+im;|ImyGcT%Dl}HX;DEad zDd=qw+juW%Q1KzYw*wD{UWrA`>ax3 z;Ak6O1ZTJbTD877mT4OFUM2YMj?LZ8yLFmR|TH{N(clyn! zE8w8P?lcX#t!X>SI2nIIRj=-5M4`stOfGS!g#K=RApCV2MAnE%aig&(uH7VQV+syDCanK&<8Or z0n>XvnLuX+TvHi&H%9G-N1<&2pLGGXp9ek`6u^^xra~yFsBmy_vc=pnDS$r|M)xrH zgltHeMv&&R93CDb<1#rik`NMZ3j5rw1+_GRuRGC%2{j==E*1Rw)$nN)(TlZJj3kgE ztec;&cpS@AA%jjLCo9DLNvY6UAr}K;jqe4t%_4mqME|zgGIWXwjCEJ=r>&davX{r` zK7{u*jZAB=nNlwx12wTO2Ag*>9n}kXaNMA^wDhW)_(5khIEO6eR)b-8L zNO?c`0ho4~8o}Vl2Ylhb4Go<&g89(5Tw{gCBVQVRJ8**tbdzR`Q2iwRq1q0(0dCC--L-Oy4#YF>B@ ziBs}%f@1%u7%i$x+k4FYg2?|w4?U#pbCGOk>~WBxoy=+jS(h&>{pzQ!R^6Wh4LE>@ z#d9sv7P92z7 zN8t!WV7!DxZkoU2(eu`6i!YXd5%d}!nX|DzmM^bLZBTVQ4l9ZNwQpwDYvcL{LLZCF z`5_K$eD>|!eMSrI>akQ&MWe!*g84;gGM8DLlu(Wlr+_16d$SsM=hjiE*Uz)st$}c@ zyIzr>Jm#K>FA;zl6_Aqek$ah0UW;WLnY9lvud%nXN|?+WFq6q+wEZWG8#Pp|nLo5F z3c7HVk6>P;H-;$QsFC%(sspwxz0?+v0L*H_y@9D1*Mb2*5*8Ay;!wY%>r}&!I>!KV z+%c@AP(kOs8ReAd^gorM=^ck-=VBPELevU8K6E!q8 z95~+(C6Ph-eVELZ$uM(yC*XczXJ&RXGfV({H>;JV5a%Gk@NbC!u0h3b_t(dZhgaKM zfrCb)SvunopM`MzNq>KnrRGU|4#S>e^-8J*ikDm5cU0cEdlX_+ z!z_xLIeH7m7OX~SjqiY^qCcLO$924QkJHf4z>00&)pN01uSXD1?y~7YEb2#2LYZ~G zadu=VDxS32XzQnbvFov(2*qAPFUQF8DeYWC0=;YJgm#15dC5?S!*Q&c^RLqk2bK&S z+wu32&qYqtR_j*QTofNCJ>}0xSM}#GlxzecTQ zC*|^p^{b7LmkY5d`%@x)MUs;md1OX@6-q$ zV#HAk|Ko{eq5b)LeaC7|IBBrLdMD<|OyDSg{b*XV1nFdf$YBnOZh7sift~I${y6xc z!vU!YyWAROr$rWzjrc!FpfUS{8)ZWhu+>#hc-v@EgSC~{U`r?WTlDC9v8RNx25XS- zFUlfk1~7yfJvyn}z_6<8&|2B56C*N^c@BG>(X%CY3ab2EUV>RD8iUMYiQ@8$2D}Q_3$WsR3ND^bP1yZ{r!ueBI=OX=S%q=in7cl@u7jX~<@B$(Cuz}&qS=}(z30$9w zQSghzzPRRPr*U7^xVtMx8SBP%L5&2*oC9rRmw@qjIW#R@V0`V|sC;Jvt-o0AG_6%x zh_L-m8lAsneQQ=afbue9W!EL=Va_X>WVemwAA{P=ay5C=@yyj8FWq8lcRo~ z(9jz>G37e_DL@hzuL+CKVc;gABqu^u9FevH$C74D_Qn3GaBGQTd#6m87-DT*-u&v8 ziOtcPt1b@&ga#wa>GHR#^hfghg@>LTyY9$S4Hk+^#41PW8u|TKYXQB1{(|jbFry~c&g_Fr1P(1x<)RB65-2W+E~->ea20_*rY9_vPJsx=X`NozVr zX2=hEsFV_^J~2&#$SPE*m$g=IJRQPV57D~#&WO_QxnG&4#xLT2Ocz~V=w^$*7i5=ubmz3&Q-@n9`E0q zz$fTI> zH23We&y{hlOmJ*T#;?~6(|cbsNY>zCT8guP+%xm=PPwTncvvgT+gmRTY5V!2UrPMA z)F_m#%60=&6gx|)qv>IQq&Xtc(hAszLhYQO=IGXk@oq3sn6M9IddP5n3+$s|n*6c3 zWhoJ_h{%`g3V9|j3zOFoHAQ1}VBkEfN3j+{YZt$Q&{jSca znJed~Ek2ZI*sKeVJf)NPgm65%0r~hr=5`rI4seI#Y#!=LIoDUYr0E8W`y&&TKpS&b zQOu%1u9P?k;9Zlg7=MNm(9)Pzb>|eLTrvIR_{b5M&Wc4tSJC`2Mv<;zQ6GlQa$QN@ zwA8ShGZ5*#L7H=_yx7ci%8ykR*+tW!t8=^L?}XBBlpR{Hn*Pa-(LqZng*5Z`{VGi1 z{SZb)5&wC(zHIHYUiJH}!Vx&o+8RMNl%u22i{l-v&kNZjI$}HiB_2*5T<_+4*e+B#n_amO)S70JR;VJJEGFBzp(gv z^rGtWTrD}sN_8$Zw9UB3RgVsjaXYGcqA;qp#46xdJ3r>2wH-t>T_NrfX{sFd$(x26 ze>$l1t3MWjtTLi8VZK_EoZ7e4xs%e@=xPd{KA7@Yye!g_B;OJjL+~f5dR(-qVY$Y1 z$$iI-_U#pr7^iEmIrC#*vv(ii7nD+04+J}TS@s#_tW(xKEX*l5qqfN_P+61B472-L z)RxidQjpNl|7Mt^iShPKzXEOL!sM5lDa}m0_bb)twwyO{daI054jKGou z20D-Rl$E7l_A?OwFfh!bFoSwoDc$# zZ#3z6c0;gT2$fD69_s4KwsQPn4H@V&#?bL@^N0`#YHc)RPY5^P(fPfG-+Acgg1AZw zttdpD`cCJvuZ>cOo;pfTo}YY!a4-nY6Y=lJ46$p4X+1_)BjI68NJKZ_htq^hX+#Bt zgMm6m3^4eb?4n$jkp44Ok{akXDRIuGz`X3DjrVXPt+?M+@J2s-t)!ckQR5Ejq%IgJ zVx)3gV6+P&=>6WA)K(UZ^5aucq?(A1jUcCFz&uno9N)&ZaNeI91C0NiQd3lDBsUr; ziAw9uig0ke_*%`Q%9q>%HPY%wv=rKyJO5A*HfPQp&R`L5UO^4uI#`4WdA&v$t3hUC?Bo(Mq=<;@71;iHTO}r%-bxSRlJ>D zS;n}h+;CS-E0UI6jL17gOS7UBZt6bYsh4%p2j+aBh0+8}tKD?Tef4uM+WTh1uw?Dl z#aXXkg&XfBqAQTNW~bX2h!Q?xFM$0@pMav3BY5G=trw??$XoC*9Ago8gL$^t*VXON ztrM|H+g&e5m4emg?Hf>4cOx=TANZzzY1|H1)U;wY-iPX=WgMQLWWz~I(U?%g4ggU! zoeEM8(GHi&(>T;KAJ8dVmlOFXJPc?n@KdF^#NQ+$t5frU!>JoAVuaFm#ewQd<*P!k zQRVutAs|gSBUfaV@T;k-@^_L)n9CYv)>Zv-C3i5W0U}zf<8P+sbv+Qsa7lDDrL#cRr@|NozQpOcvH2+hRtM5F8;as?u z5?oV_;hc$KYt}iv$z7x`({5fy%v5Bu&%QYIyYb>vln}zUGPkTwCIG{u^18&H2SH8) z7tec*TZv}Q=I8018DeY*}u}!(gjCCe#s|j9`TVXoXQ@XK!t~op(a#4tOHjx>g z&-e&s9i%HqZ{hkkfn)QyJn=ZTqjyoi^`5S==CK0}@#$UJWFA6P^1SYHw-4RsS`q9s$X^Y2B&X%b| zv^+n?XJpyjka<}M&yOJ$$0%WQ%dA`2k058!JpSU;GWfYP$`TkMbM{ASd6S(%1dD|x zBz?iY9%V+RBI_JYIAx9I|mrB+jB>||es z1EO`i*Mkq9o)F#-;b;r%3WEB8uc%l%Ekgw!EILYcWZQR1QvN;kLw&qL$@s!xR{8hA zowljs9?=r2z)MVL@6d95Anx~^G}ryUL_j;-Nr$G?D)=?j2jAjt~e3a7ztCjG0xdG)V=e`!b&|1aS4 z0y!DbiT;DRfb-JE|8N)Jd~iW{Z(Jh))otto`x$m!Bh?Zd{zcd(+YEc;d?H>x`toU{ z_l3m&e)Ufr_=kP`|GmL$;};O&uLCr4@* zyGQ{=rr9-D7atc75rmXe;g{u4x+plm-*{Jt;JeM$>o(@OA+mV6+8Gu5@CLI60li6# zeX0J7_FS8?iOsF&oNty|G)A#4m;v5mO>G}f-NTa)pe&4x8hAENZKa0RkN0p zKq0Zr1Q04!vq*#S8ERb4GwE!NJ`bI&l}>+VMH5yK`l4_X1nJbD&_6;4bPSLky2Jap z-uAb3Fl27+N@V`g^g)eHPNq}4xc##)?fjW9o3Un*dMNW4d&Z>8ShfmNj!0BoUDo+j z%!BnQ-;i?)2bpEP#J^@v7N2(w2Y@nzX+K)d>XPd6WzJt!wk^ZMT;ByXJuG>#tTuA? z?vkLoCGoO9ILhDCdoGcf>G?eT_Lje&Y=s6roHN6|y~}Hk3$A@4G~3C@+HH}G88YaO za;2J(UsZv7SD0Qp%U%fe0=SZXqIjqLI`yg@fHk>;qtupo+ucYfC|vEjVC60aV#7j_ zUt75VIe|rHJ%j4^(%N8Uf+J~Q%3MdPzt((t=mC1x{#~9Ik zn%zg%iYQngv%+@U-As1gZ*WNHf9#E#kdYFF0v~yeDMj2ROn_lrL_Y{narDZeXSZoN z>D%t312{jsVRw%ih$Wr(+O2OL1|P#J0Dg^nCDrTTCgLOkM!0ORhLy1sH`P@!7HL{% z;bdBHE1S*zbRSKF4^zb|Jn(cVVC37$NFf2rKWyRzyjOy<$YTj$94XB_^E1fC#XSX8 z)%uHZKWFVX)Tk}j-opX*X>owrJ7Is|imank&bm->eABik{?$XB+SGQbLI4v4M8<0> z8})SFx4>5XBdpV;hyxYJECjjdtHCVkYm0D3Cf{7Vd4KaU_w#a~r9M?&4%YBLb)pfm zB~6kg8M@91lQMbETyg*KWQSuArY%Zg{q_W!MXaK4B^G!k+?lhRRk0iJ$nxNLV%q9` zv8a16^w(#TFd;z_N@sqLQWV%w=((_J7AzVE1q;($D#p8uDaXV@Cm?YXtoBUn z*C{cv+|Dwi2mNH=R#n_=3FXa;Ew^D>svPOMG^UaNwJ#GMpT)r48qBLlBaemG^%hpt z&pan_Wqr_sz3Du)~rqcSl?uy2FJ_~mQfLQFue$vlCvk)>&#Y&nc33eT~Ab%Py5YI^0 z=uyQTJ!wq!5dT06W^=23g+@0dPSq%D4cLihq05#v+dJPE&>?+0XT(Gi(qe3QkpR9)C5V<=!94;SzmXP9N|H zF?!gyBlX)u7^UltA!`IE?fON68Kl%_IyzGm)0X?^9y}*$8LiPyXlQ8na%jV0$^4- zMh+Mdhj{Luv|;_cm8>#W=ptTdbv_GjQei!ZNJ$ZswJd;KvBXR{|$i7;74-k-xG^Av9+)h;|pE4I{$^-nf`-(MXS*1F<} zpylRxd%STqGniM})4SzsM*t@B9-(F#czoMar(}4fzk~(LvKpx3zzQKsjvI{LvrMV7 z0N?OM3E&RJ85hPQB zf^9Rbp4P!cONXm@zS)ZNUY0gNng3Zb!nbD5W+E?dUwN9Z8ot&ucw#bOJq0)WDd%Eu z+z<_R4erY&`nM>xks3H_EULt5ezr}Y`VIlp@VP|X6?G>Y(dpHFkpLjS`t$J3bStHZ zE9+d1-Z#>47VcLNfS@2R(_|ZRR}?hyv3mZj#0CK%TAY-M-Jda|;yJvd_TdGB9`ySA zkeSur!}vpK@4LQGT9K_4x9_+y>z~Af4}FIc>eb@=V~AfTX7s%sTd?b*f(!{E?pBF2 zZ;|Mlv8mX7r6_p5{rX$G!`j#VqeS9_=$K6s2Fu~Gss;1|i`ShaPasieXXKiGQYY&& z1R_UuPvS!$OwD7)aRt(IU&DByFPg@n2(zP~3P}(YULdAo-vjCv!7S5b03=zqsa=#2 zf6IkGOj|AG)+Fw$WpS@2ps;~x^zcYr{xQ@4g$0XRVcYBO%tjvQ6>qc&w+K7DIzZBS z3t;S@%Q|}#`DeNcZlVnJMw*Q=;&HZp{Fk$UQZtsImtg?0=TRO#3K7V2)(A>qxR&^V zbOG)uuW*rSvwg42j#Mkv0zN=$do=^?!?rf)nlDZK3S*7zVH*Ihx+c#>(_CJ#kHj<@ zZMGDA*2R*Po=A_+7{pKNXozn{*Xc#OaOO0T{qzcAyqG>eIF*(#T%`hwvCpP5SSc7RUAQ5gO_{@buURlUBSxewakh+IF4!EVb(%2i0nVC3X? zrxX~i3;y9sCTNCt*Ts>ezG!LF4!qAEps+7F6UT2o+({!HT0MmFq4X!z*5%5Al}zR* zKP#F(&ay!zepPO)&Cophq$jr7ByjhF)zNoo5LjQx2Uu*TR_@n277+?Wb(5$b;5iu& zbEhz&WzOjD()V!eACC;a5tzxLZgnM$FHm1Uc z31tZ9{rCov5sb)dgp%MbW8}ilTr%_H(xhnMxjEnbV{z7STmTQAFt8`gzRKv9x}$GU zLBSrvC-jP4_w{T+xNZJY@BQ&nYWM5MuDO?_^(114^iP6*ieN~eB{NZ{e?(n*naZ$? zHkxA%w8+Gg{e0jF4XCnn+^rt_?Re%0{K|bK0$TloT9~xLgl)^V^K?N@IoNqUMF{p+ zs^HzQC-H1@ePK7=8*hK)+uLa0U%}Y?@owf&0=U7J+9qNMFe`j|1QAkC-W6;5y_Ton zaWv%)W%Pcc*#Q$V1%_UcjP&L>IJpMTT;EHm_(F*a-(Rw9w?3b>dfYtuwQfC+sLvVl zthzpBK(|u=Acg}_p!5Pc+|Mo?;#3~x$^2#$dGuKILm0ByPyixZ^*&Sn1VwGF;+H!h zBa56@f1M4`fo<2hv~-LUN+*v;5-lS7@e73Gw`$yxb*uCGwTC&=U`Z+PmFt&FSGGeK z@@W`~BRhOxUaGruacs~z$pw4!<@cQ}k?1RmmRdr199tnisnT0dMVL>~(n$*pSd{ z+-}n_)X#6pr)(G(VhZJ1EnAEkFDADX{lVeZw{2f%k`c$ zT31jWKWG0Q&0Wj;8Z=Z91sn35{o@asoaMu7z>^Kyq*F}(4+QW55+SXT==9sOqMbqP zLIDm)DsAWaZpB{9b#?U&F${W#E=TP>MA71S`LR~IR(&rY%;OEpaP-V=!xn@UN!%PG z6#j4%3ZS4{g~&kVZrtL4SZl1Sd@O}e&jCU&KmAi`9mK3Z2(5S3!+6%yxgE(`-Mu)@ zpy>^rz-1Q%V5r<#Ig|C=w15C;?03oDQXn1Zz1>{T&dR8^1wQ`~r8tAn*{9xEfDyIj z0HJ6#eU?%=RLfl{@2-dy*V2XVPu>6({bt4 z10+uO(P{4V9NVIMs7*hpbM)E~!id<4@PH?pP*=79fwiCys$%~p?Rne(UNn9&_nYmf zZJLj%uO3&jhiAeK{Qlq>@~Gv{Tl*wy%Pk3=TWFtd?4%k85Mr#r<21Fh| z0iN0Q?MckzM##Pr9~3CucY9K}_Uh`{NwLA*b#CoC(LMci>s}DZ!2u>4|0Ne!gu9Gn z#60X^N6enpJr`AB;8dURdZ{?^=*`Ohr?ibO1o-H6{DA+~?Jval|5dxIZ(iU`%UixysF^%DSX8Ncv65B>cCC3(r)bm;GP*) zS5V$r{W7DGr=d$XGL!)pcPRnEv8Nvw6eUo_i+EhV+{(~jJVUo-#3;dvzw~cGM)uOp z{~!r!daUu5&K@3v(P|u>mX@z!cip}Gls+1c=g~V14h0m1Lc=h3*{go9UM=hds$%2| zPZulG|D!y*DaKi!5^qu;!G*DHGt`1x^PSVLy#!<~>3=JhuBq)!$a5dW_8Vek_1(a! zy~%(9z|C!6w*u8t!Aq66HJlj;9gyXVJ(h^tXeKWIsZ2&cBB}z6dKT#2J90oV^cT@kBpEzR z2l@E4L5=O#roS!ZQBs4tj(K<~nX8h0pnn1ZB!`6KeGzQ5;(&3Jj!a#VSw0PrR7L-S z8N*`)1TQiQh>K}|*+f?^`oj*|#~Syt9ZIHlC=iekhB{`8!~ZvTw8jsujy=PCb*l7& zV+0qBK0ib~vyU@*q5)h8`}RJghHVG2i`lx8oV)_?ZJZCsq0J0F?)K)N%$uv4*|U5= z-x!^mIi+{mGEEzhQ{Pf5mZTjwP8*0wLC=r~aWM6spivob(Z93<6|<4@bV`BhQP|dMDaYy zoZUcZiK5aGEz=R~t^*t|?@X%u{&O7w`DW3L?ju0z@syHLCPYH3z`#ev>7bpwev_cS znFJIzmO2RqCVR*ffY2x=7WkU>ZG(h9OWxYjSnk5px&k9u`ClX}Vl$U#XXCk|qQI~8 z8gGfd_yh7Q;(Zu?bRm>00A$>TcwmcLA+Nk(>dv+j0f6jtg**AsOM+7= zT;k>tA;lY$5B2^y?@}#>!M3PuNeAXvvjd&_iedG<@&FCUt0qcnFS>fqOBvml*izd& zCxSIPA*GrsoU^CKNgsa}eR)<`d?=aaDhVdVMgv|^$wAJ3?vR|XR@@#7fLEOOOzgmFeL>eKT z?-*!bS>#o1qdu#2Xe8+3(+LrgK%zW#vAc9%XOo!v+sQ#zbm~CLG1(APU@b} zZwn>$q(dgXKnndwQ;X(hCny*=6s2e&1cM2$@_A$Rq8p3MLOhZSmUL+ImD1J~I5EoB z3Uqzn>tZV7pItP+%_X>TkBW_ijuf)~rA zFvPK9fBcb1$Vi|M=kk?TmPFj>=_8|eY3WIzu+S$&uhr#wi&Z(-AIU$V!%K+=?;m$u z*-q!Ob)E^E^N#-G7pMsDRKyN;Z?<`Emm{Kj*J;S;=$ai%KzMpy)73&8fs59((5q81 zvoLdiVD*>=VW=K0_y7{v5Ap++Kb(>VE6B5f$zRs+`U4z!%S?xNRwVoMvnmVjAibZZ zKgw`8T!elCZ`2Jh>QoL31#8?DEa6jcFP2X0+Jbk#*}rEAtGg^D{dukUT^%>Mmi^D) zh3J9u%gw`!IpzEHy!YTxY#yT|B3wfm`{nG+HS`DCf~=`j#KIQb_dCV%Ah&`6`JW{% zUv|jV>UA7FItdLLO&HjTM_$_#fj`eKUoofp8^XntKs{b^UFfvZ6|D0bE#juZh%8Q+ z{H)K^=f) zYd(2<|1I2tS~DQP@C>v(EXYw2Y}vrPAif5BYhMd{HLf-H3$K+2GIFlYjKfS|p(UoU+Q+=J^ zBs26fHU_TN;_UZ=giGI4@ta!z ziE9x07Km6d4LDPSq@dr{VNpv*$9`s!8MpQ-hSy8GF#gzO|{%lwrzT_hWJWTr5N1` z{nd@VA%V0R-{)`Md4I=it~oPFVWN_Za~PN;=xa7CxgR|$1}2`@JE6O=CMwxOj&e}3 zqC)o8qW1O|=b2ZWX9SaFge^)FY)3KqPD{%S)|VeS(r%2#N!6wCNtbA0yg6ZOdm&rP z%l1n~9-LD6aj8ypN%U`q{qIrt3xDmmr4^d=uWLK&QBwTu`$CM1=+N|yLFX(?sLi;( z`_u0{={E;MvBsP>y~Fe`P7V(vsB?`vM!nHpxTLi-5r1xMMaKOlWn91aJ+@sn5If8& z^Z(s)t=LbN!J|WmG293#$^(XL#o^kCy9ib*zeJ$dvJ3Fz`*#vnYh>uklAkLGcOI*% z@Mjtz8t`@E`883JUFrOY^UL}rgSgBhJ1s|N9GxGNYxnoXFzO*i+pYy_l*i6x#B$rR zw;DXHn=U_(!WuOC!Eq~cUh{<Ukc8-+q6OJj{Nxa_iUNUMt1W75=ge;S(R8ATqin zPg&oe0SPof2oW&f|D|0v+Rd*2YHx!T*0Nu6UVm4WL?N#`KyM9PCr#z4`ZpJSNq$*x z|EZIKYXH{9ztD7)AQ|!E<*{nl*EP0~BdO}g`)grqIf;k@iP=W^418WF!J4W4aP0x3 z!_ukT=8vuSr@5Qo^2P@Z?XP0j`mBedWTs442s|LUJlR4is^QzuG`jWlm$Y|c=%WZC zJ#zFeKt4+KjXKrtcG%W?qqzgvHvRhDmDhIY=>xMS92Av4QLmDBRTtI1A@u_M^-|Sx zf~_~VH7AH8!mw3tZNyZvO?Lw1qtmv;x&r6hHl0MzT{#Q9K=C8Ns1RsL_gTgRZCM2= z4$+{AOc|hIU$Np;O(iVF`<#?sZ8nB{t|homrdlBJcNLN5Y&BvwKkPRmRwAHRyd`nVauEve0Ip1m?&L( z=h$_BkeRUgN-h&oHdJ7nIs^@0C=3|uQ24$>y!F0ui4+YEE#R*4ZD?G>57|Z?E#}9W z>AzeiRgjND_~Y!lU7r%rw%E(5Iv?F`EtA?Pxbx;6Icw;HrB@{`E2D8U zrh6s3u3=wD%*4CYhkKIS`-qcI;F1;x&(x%bu4BofS)!8BgkaI+E8;u2{)HH=+{Ts` zmlnl6!$Ni4sNrJ^RhTwl;!!->P0FR2T+fz2`ARK_Y_Ud+q_YvWBU3{nOwou6p%TPa zY|I}R;;o&oV)e^ty;bQ{%BD+ku&%iGZ&yehA1h2&;EyeC8-p+Nj#z1rf$`8?0qlhd z6E!A$fEy-DR72>0QT7%+x;TXL?FrMWdL=#-4RUGz8czc`;KPVOy>AjdB)sH^e{%rm7zGqsBx@$eX| zdrUmjPB@=OdY#ip>~s#Ddsp-17~<<$xkO|eT}yn`*BXPI&vs*T4TvqnmI;oIZ(eVS zs0?DL>L_CK7e6Wl9#f+bS%0U(bm}?eK8%`8ywLOIO}X-S0Upo6pKK!8cwy7E@mU(C zZqBQ3O6JP3yqnEE(GsvC=w_kvbsMSWlm;f;P#M-1%to*tqSUEoYS&;>blMCAQ+ypy z*ytU}+lXJ4^7o?X9T&xjkyRt(m!lW+9PbPaU{+2kIewqv@sr2H3?7)Cu0=J1$+xv5 zs(M>Gx^3=7&h^y;D(Qg^qrS4+>A9jfE7+nv*np!~BZi$N-=W7@|hDRhdV zb0B`k8Z+LmA^V!(s(gxkljq)1U>n zH5Tq*ykAgrAfmENq!4a@ft4%5SE2pq9n!$<{U^_3Nb1|Tt(!p4Rf2a&38QTiwC3Kn zFyntSZGC>TccquTJ@9`NwYwlli-^}h=M9NXpE)_gPv`9G&9*&ODX!DE?LG5ouskE} zLa*S$M@qd+3|$;ElPKq`%g*G0n9!$OcT20F$eBnP!rZzKT*f^j=$y%uOwOFlj137L zwIYd;ao$HsbP>x-N!dOa%Z}rpNkBJF@~xX7jKPhz@9@8`f4nPRt!&fRec#vwckWig z7I4`HEF8Z!+{+}f$4gU@?nd+3rSRUQc(iR|87L^`AR1+)?nerpB&rVl{il&e3LlCS z;^<8+Zm;X|M-&%o`ot4~{XXan9m*Z7W!(vXNIT|j;+^sC@>SIR0u~3)k*Pyq2jO!v zA9?R_Cq)$x7C5x$hAy~Y1Fs2<>dQ0O5uqnsyfy{zk$ks=M94ZD@H;%=q7`N`q$ZK{ z?@0P`zVH~_W)izrJD(fA|M0K-O9T7dbDy_FZ>taAFrqDagFYS0-R;yBjic?5=R*^JO&G7iw%8hT}(mP9Nn?1oeBxS zPCmzGV4Ns@+m3$2Z&@^VL1$_lzt+K(bK+-5#AD^QyyEWx7WfQWKQ8L6soDMd11|R~ zI$@Lh_QwXqnR~R{tqRvz7q@q|?2+stu>+R~Ki)SdSotgp3R?OwRX8*mwLD{!vvAFv z2Od0wB?DyaO7{Ao48L(-8&%D^+l|y#*cq^72|4<%M&FxoX{3IGq#M-3w*Faj%VX3% zIrtXwIrHP!-{>fHMZGKid>nWS?x^PDE5|-ozpHnw6{OV-COZ+cH{;Em6YZ^jlXK`r zs?i8jO1`1ywE~vt`pYSJ;Ji}H=*1YIJV-uYq#@U7fIioM2L7O@M;+k=?Bc{PnQ zEr z11;FYHs{2GoX?K*Qqa&#RxhO+XOOG?Xa>cMQyUm@^0T@6=Io_h)&5>+o=eXUhD>%} z;}}&n8nRm{aU{jw*?8Kf6|@<=bx$YhxOBg@zei+TKq5$@9^6j?125Nc*~t773UU>{=g8?ok<;Q>& zd$(-&JLU-uU%~;e`2WxlofX%?1m;5Fbv?r0B@KNP&C1uzfeU7JG-{>BUhSpZy}T(o zac^=nZw8A@z-S3*Zm4HOZ1kn33z;o%w8!1E$r6X55c)%J7z9B#<4L|&)6APg~$ zkJx^Y5b9H#L<4P{EQ+Z5tJZJDlY;VNHbvHCqUEs`3W60#kPq-T+!?D*s7vHj9()Hv zjNnNmCL5I}Z6e*UO&Ts5aIsInGtsmKP zoX7TZwdwKc*9u1#**L97sNQUhgy`L>8{5r`fXu!V+@##nlo*A5IEE|~ea=;BDd@}z zcJ#{(*BDlY=A^O=`PM5y$??u6d|-s7B+p<s>w9(`-fBxc5WS@Y49)&g-2qbj8>PbpOtJ^n9)RQhEN5E zDW>k14|r^OWU~gxI=VN?1LHCS@X#nyv2prf60=Z0_v{g)@PY0g@AbeAg~vk`)SgX{ z|D4I~m>M(|tFXtQ`3Pu0Kr!-cX)=5V0247md$^|hU`h{-QURQzz&@ zqnj|G6w8BD(xGz@=;1+pYAlCc`8QBUvaRq^g28X;Ss*49`gjE11HUmZX zNBukWCs(dy57v7J!#v~^Y}mKD?N*o#JNzvgxXE!CZHB4HEPpn42`13+LvK+Zoxk#DPe@a%BGluMrSb z6)WG0z0+I8-UGC95USg1N$7z0*=+~V(8MAD^QFSBUu|4PV7`B72m~tSRO{R_U-sRd z3YYPD{wfxCA1eJVtVyN?34DcwCj@QC50(*e_)~mT40TIQZQtr4|GXue2Yxy|qXM$S2_Nqwocik_Nf;#|b zez2hq9^p!FIHD7(C!@5UQ4p@#o;rwm_l_LLXteqpKO7v8kglK^<-5$NHaWi)a4tIp z#!qfm=<2*#09`zDu*^jIW#sMh*^#vAphUP5$)ZjA{kRrKIb@* zh*J)utUbM>`ND<+RX3dA{&|>&u)@`R(xPF>b#QLKde+_`sK~;Vd1^^{K&$ZX){u>+ zLMp*`^22?bj8VLIq>_7$JT7Lw3{Sq3F*u0_88x+}?o_B5FzIO4=1kok6a&(Q&m;5F z&e6JHj<dov>0!3pbSD>z^U{Prm^S^5pQj_NB?l z%uv+x)@1GyaKQxJ95fJapysx=_q`rGU+CN-5F&>(I^i4E5~HbX14fZwhZHtwNs=-# z+vPF}@OpUq^r<$Kl}A7CKRYXfa`nKgRJE;b8cjC1!{rG%BOXhKbl?@^v!*u*6sIdluKH1>!i-+QZZrwM^(uBB+pY&QsrmFQowi{dkmhZK~0ZiD*ZdxO2Yw6~*t%85e9Ei?}?E3(6{2HYB;Hb-h{jUL1 zr)16|j7|0TP$nfHZn&GGYw0w@xL2(0WAaLy#JA`_cGdS)Lk!)jJ(j5Q2C2Wxm{Tc- za+E#fAi(Jcf9i$I`1f2m4G6lD^SK+E#1fe)76!oVmIwv*WqF0=lO*!VvAkgMu(@5q zrR}IS8LflzOb|tGo)-guKLQ?xFkm&(axy$W5Hp^+En3^A-!MGy;W81A+*H|ZmUmB~ zdY7EU68o@~>ES%|R|UQLTB*phG*1<@Go}Sqo`>@m74#`r6D}>u)gQmRoWt_BH3KK% zH?^pJ`gTGU(@raD6`Cp2fz$JzcLAssR+Ip3x_O_><72JY=EMJh{u|sl`)pHtk{dU8 z;T)V_|95$Dq8{(e;gX-5s4xB%D?4@hnxWzddTnfq@d0UUFH#WkAX!}OnEODSGb~Gy z9@#$P#p>M7B zwyVWket~b(zrdTA^Hjixok-rd^P)i^+vg4lSNUnVHffoDer~}@%PG(IjH4M@;4Pbc z%EzeiC;jD0dh;MOxd!Nv6}4FJtNpItp3)!fmc&2WuQkZBPksNoY;_G?fYJx{GLziq z8?7~gx1-iTso7{ZRUG{N;bubYeK*dL)PG~i`9$Ky&8cy-gR=175A7HH{P7xmo?^J^ zd&MbuuZrmx?z@_JN1EKWmx+UQeZlwR%$8pdN-ab1$JST*Eve<1`F`N!zO|S2L0iEc zp`FH&W6ia^?*qj}t$lWkcdf(M94EbBk10Kk9xFAE-tP?W+D{)i*ze@eoWukpd4&$q zUs+?)|H_fzwCU=V(s-0jr{vJ&a3&O4YscyEbxRaUfh_%wFqxQ0a<$enomO|LZU1ug zQ&@zzn<5#Am^G!ogK^Iqt2)Gt zwsKGB)iH6zzSfvbXBG1ajdT}RqM)yo3PVe`JX99G2{zZT|sZ>#e?wNh0`-) zph;YeHz&PyyTawenlsb|+Ac$2l1<-t&~sxDO#xd(cMa@oJiMGYeS;_T(=!wTNxB7) zOVtF@wTgO4lDa;|_dI)GIkmdkRyp8%GZ8w^Zu{Z!w%>He?&-%?M6yEq4NgpB!^Q8u z(@j@hyY9(u%jVB?g|}1>G3U(&;N}wq)P|_#BwzweGBchn1Jj0tpG|xXJVf7*op77$ z{uSqS^e08$|Hq}PmVL4n*R)uxsX#eI$>ivPqm-XuLc{W+A0}xmB1y%>Wi9{tpDnIV z^J;wmv$XqPZT8=+B-!g3YO8GtO}5v8lBFVesS%ezxe-rHeP)rDduT_m>Jvs_%t; zXH2?!d2gc-Q5-y{Usen+?t2|v!d~yF7ljEAaBNepoVB&pCk(x*(P*vs(Bhe+ z!^jurIRAkCr{A>s6eWz1CGk^shWXU&xWAcYb_J|(!&5L4DxK@npL3Rh7ct&~Y_I2H z2{3y+`jNvA+f)mJpwJ$>(q9#YC$gIs;2u&J294X6q!-B{;p8#7l*s?uto@XOPpY3v zE@k?jZ^LEx3!;wx0;Jf4J>?zl@m#*xpUZg63&P~uANzkIm}Md%wi@XoJ2%}dzw{t# zUg3C18kcW(Ez}%meWq8!WWN|Ezs>9>@$4-Nq@e}75d{5^!WH9}y+V1p_S+aE-g%13 ze#@E~8G8%F>;MsJ?7r=R*?Lsc|2TN?MT?%E_Gc^#X(GSHK_}~LT%qb8MGyRPsTh%f z3vTiov7cAeX(E5}p*z?HaIn&9=@Ns`hVvdl0V?{kTJWI3%zLl8p9v=U5kKH!@`_7k zjdIimm0qnlQ6P>%Y)n8zou<%n3qH6pPHBQucz=LAwH9}Dwl*kMc(=HThG?bfc7&uPh*Z!p6 zrEj5viZNV@LF$8JcR%JQ0M{$DQ0j3y-|Y|Gmcz5XJ$vpH5s5KXeb1A@D86zl;@7B} z6xPT}VP_rBnpYd?Q(e7=Z!5|tz;Fjm;^f1^tjvj<=_$A25Ovq>q(vOmc$W&@#;Swa z6c~$vDy|4Y;-_j*94oe;raQUo`C#+&dRbiMZBIr{B?H59UR|{Gg-d7!dY-dMbs$A-MJVZc&NqyG`@WA zcinp}_=hXb2Yu|_|AQlzMWmOwj(OBGxXSRn0K1#(2Cz#>K+* zA&i3jo?(E2?D~U1oMTDj=72-i?4G8pn#Uh)rRi0tJwZ-dedTmCn{FQ)o!16Z59IcB zL@*+9*^#=<;*T_NvYdX6362vMO91@_&+JKeY zCb_*BUh24pSxuLkf=g$@@7ma!S;W&)wpRHC;jionCDNBg3VA9XHo@y>V@Q32um2yz ztZ1?sea|v;fw9GYZ#? z8+bQ2(X0Citj^@9&C#jpm*r>8@-oQQMmEaYGd~T13v3&NOz3));Nj`WcZ{<(!G;bZ z`2G2I%>(gR54NiYT+|G*zt(x7Iy`-Z>B|1p6YP435SOh@A|)Kww}tE%?StR?xIS<> zMw6x5kz43{fbxvGtMsdtP665_GkvhBTqV`}Wag9tJ3*(f1wO^`$Yc$%g(6-iOE+`p z8Okt6FAf`4I6P)LJUcc{hqin2r0@EXNs86>ebtbZs77O8Y_vjIm@dy@$FZf74zOgH$5o;_n~JGUj@9JhITVKu5qn^+!zB>C6*8OS1(a%BYX{Nx^9Kg zAh$&N-OG(7uGOM>ngd45>%Hs#v(veDu&K@w-*sxBadX>;qRFG+a#Qf*%T?DKj`Zv6 zYuw3&xDpo#XR}~R7{*l+}=)9`o&2GFNp#T)~R`VE|2~0d^$(~1EsFql*+Ot zgg9`2N3OqHm|kAt-rhf@9{9Gt(8miZMAVW`=nJ^65u-`GUY)rAUBNU~`})SqGBwb{ z%(#9QL1$xx3cg9M&$e*woA(1NzFMkZ^+nNua_CpjzK<}^2EO<^?PTr&^5hd>8Y-Ti z&FFf|#2XOoF|X^Ve$S05`2-nHzo9{N$Xq5Tv3SBQnE<20_YLa09)&Pfzix#_ut`cn z<`9^mlCI8Hxm~=-Np;ifgRDzn zlH1Qa-_V_@odS3Fu$>pN{_-XVRVISi#$?z$#81x>DsIH@*D|jy{x@;)GH93lp0CDq z=QwU38x;8F(M*TLPG}lN;eFcdI?5>+ShBSa6PhIV#SVj#Tp7WaYK$;Sc6!ksljb;r zlryFo@)I)fgJo0o4qrpZUBs#NoM=pUSz_{XE9qI_ zh=tKiM2+e#61AIocQ56sh__AI@lL`O932zw<>OR&d5ahe&FPB$GhonaX|V~W;{x0$ zbzjPb@jXdCL|G-;8i_&ycZ9|DCVM@o-MW(6d2gX{`1YeJmlPNgsEp~LdLE>WpHJiP z`LA(L+OhNry@6>Z>4$U*KX)6$(3G*^QtfjnC+Z+aVqs2Ryqm)XW{SK)ini|{z)Bnl zTELCal3LIuuzjaR37*C#r*|{GNS)$K92>2vEY+u(k)Kdr<=!}~6t@&q8?;S7>^Sg- z6;`^4IQOMLMt{8~8U=OAu}clpB3$5~gu_LfiFzcyJ|(+M%EHj1pdwN$^lrYL`lI;Jj^(KngS^ zhls{l1?n-wPh!BF>u>5kKB}ZklmS)7R!x)59Y@642msIX%E;BjBME}6S&?}KJtZv^ z8>w>bGF2=$-Z85_sT6Y4*xmH_xr!`_yI2m?#+sg0*V=_Vx!>n`;l<-+a6IO)b5U`! z_MT2)R_gdg{#pep?W#2UnaQg!B%SCP5! z8LfQ4!Wp4`V`oug{Af@MxMSKzO`xy>V)X`zZajepjuYR6uV4W8>4 zLanM*m_$B*|D3&fN?X-?@PDwi7ntPta)m2pqdwI#xtn~P)9iTq>;6oQYsKjsPwF+X z)0fOLcM{*c0uwtn^#S2?>$$IPd%N>o0X}Az&|~dk_FO+)y&cW-#@Z9*4KZ@?6Ra;k z5kzrt54YXBX;2?X7D>{77{goTob0on`S3=lOnc$wjQ`opl zZ1%&zDCsPVnD@R*8a_|*PJ;Jk;>w=QD5RBcbS)2e*x4F*yy~sV%LQKl3#8Rh) zBvPr>k5{J|bL1mE=K)L2XQ*$9S3#E*ubZK7r3Up~a?jP6;CsOgvw-Y;r7`IePwJ&}g(@vco8e_kqEOC<{SO@#wPBv;jY zq@-_YLWY{Oe8s^jMn094NGhcJ7F|C%2ME+1SS1#_;Y1)_Fr6F&(K^W*OFORUK%022 zO*$Cs*1Y|D)96wCu3y{~rhVUI$c?C)U)jsA{!d8!Zo(fkoe+|Hisn)xsy!$W$WHDp zsY4q_uVq9;o1Q_55!x&jtvK^##zv~vy9H`2-k`$>}JP|{OaM~R<EXy02s-TNmeNZ&q1!4-*nsJlSrh7gzvI^DSX^Jk+SFj!Qk5>A-Wv%g>#!nKzs%yrBO1cViX~J%Sn6KfmHq}4E`+w6H z;9nRsYayQ$(~}%hm8|_e!57PFYS!q{VJn*mwzzv!CcFq3fhuu0%1U@+qBqpxQDe6F zHs^{MG=XJ5Yv|&IXb`K#s#CYtZZ3Vd6UaJ73DrSzqo{>EAVb-nV6*4w{1G4B_Ut(; zrjuerSl17)eHaQWg&z9}>pDd$L>ROAA$r*F z>!Ujx@dTB3lzjok_Z>mdlc7$@wwLX!Q(%3~E;Xm$SRs)YO!}4YSk@6&J!rW-^LHYi z`RUqiSA90unR6ny=+fLqG-0@3%A#< z-xF$o5Ng-a!~H{0sRg_8Ss6vu=~E*W+ySza zs*)b*nYUl0OXje&v&!ka_IXUL-GZNgy5~rz7e6vYzS%iNk&z)vaxulOPvEdL7en)hPtbTxbtWZCH7np^`>u&1+miV0_KkSPg zX^(}}-~w~%c*@3#T9d#*Hy|Y84b2m!R;W^1i7d0+5SPiJE&Ge$`8kk!g`S_OZ=qhT za9t0GM~HPIAMN_2e!~MZoYE3G$diG_J7$9_--JW=Y$*@}QA>)v>%Q1o5 z71xWiwg@4}vJ>R8qz7`u_P`Uo$#=>L(&B|;UBr&+F(Opu&isb1RY1x@h7TGRT!?&M1IK&!81}9*1!UEah;p(#P;?9U^n7ZPFR}7G3^z-8BBmpH^vK~k1qXtCq&%# z%?*0ht1v4aNIUf64RX7KqZWH=AcFoh;EN+4eCkmJE5?=?iKZwj;+^ucDJVtp#_8iF z^3dzH?F)^KySh=J*8mxj1+6VVhRc_|%E%xbMWUx0UVARivE71GXbL789Eu9LO6kfK zBnb?O$OF2t$iUtv+S0A33*Q$a&~jtX!_ECP3^;LI?rfOA={eYy0&@@4VjLF?e$hdN z;%ry0fE4PbH~L_@)w@adBDe&JyP8Vpk}{ZgZZ|bPFmSOhL3Sw(3n5G`nc6~`s8;NxYjv# zVZD^2OV&_Nmp0`HbAiRXkrwGJS4FdkMF>}x2C4~mM+T|cD_OI^sHqhqhdUnGtS2Kc z=COvEDX_k~K9a<6y!KbmS0`4mgu1HjC5i!be%6p&D>DhXIN#W4KGsNd&GLacpPX$sh1);U z!Km@57D=f!GdrUEV@CC*J4Jev!jX{OZ>;^rbzQY={{Bv_^$liMCrk{xmj}n+AbC45 zOQxN)bq?zF4jTN*$KDPNiMqb_89ydcE>r{824=WT{m z5d2AGNlFr%bLuKViXhOFZ{wrHbNxTa(kP>N`f^kV62bX%)vnL~@Vn}rR3ABZ{n2?aE)O8%Uz z*HHQGmFE}?^X15cUOFoR-BzF%j*?w}X5+DDt{K<5Ecs4dQ&7vj?z7zelxQ`{|COi2 zOG3L4dOJ?;M7SK-Y?|h&4C9okSZmf4O(*D>Ux>~P?A*w|l7n06ng~NxFrU`~=e5qU zmk}4BI!h!NwDU)7H*0|=J^uYep~>-z)=*PBM^BkJIct-RjgF@zA7V}}hcZFLcV~-3 zj4zuYr;9#lf+u|qmP@TXOziQhE(z4(BdFBLK~WAsQZt8Xzq%3b%~+6(lgU?j`Wy(X zXn`o;=wNPr%}|X6O#A!cr|)b@;GJIGv(5MpUd2BHpNIQ+N^=zznh<~P|DGi>)Gb`D z=iIl?{~qgPSlv~=t&Q08ckdUOD%?c1&4KBA+jC6VSOR*eg+x**{Q;|;a*Ndqt?h=` zG5-a1Ck3f!uuwAp{lon^rC`}p`jHbJW)ZMBQYcinv#?|waHuT#tY%#Gf-YL_;+r9? zUbvtqVkfO>5Es?%>%7?Nbrvk~k!BLvtRBYeBfH(P-r=|8yHTNni)zlE;Jw9L?J zxrh3RV(8*W)~R)U>?j-Gxh; zsn~grZ|gvq+&;y$#IE=}Sz|2y7+KSeE=_jDptNB}0?{OO0i=PXpVs*19{EH>pHx>+ z?GcfzVEk-Z5B?=OIaa3X@J=YnE;Ch6ALSJZ01x_jXa2r+D=$H>gLCcbe+U71eS!Sr zivjVx&L<&&68w8;A;I=Qa*10%1238I0ExL9?-!d+BBL!YsJ_W4Uk0-g*imYc#;q+1R>738!p+e9do(#bC^V~l5 zL}M{%4E+*mj)4)~?um46d%oG&>RZErz1WQSEvXrffJ(I7=&Mc2aM^`0n% zO1D})&`feKuIGG7|A99C+{>Ei#GV|oz$0;s=fpOIpNyX$BbraE ziudUFUI}Yaj(?0DyioHwzz8Xw_3?)Xj#)!*G#)ZID`f z6aLoe#o6^l#ac{%J3jZZ#Py5MaZ1y878VWp2=a64!j9T!QVo&Hf@(1L%NJ|wqw%+( zjw>bW5?uzY@z-vx#*r?&I}k*0=jLx`780@}wa%pD$!vp1f*aG3x7OPyw+;z}x#+(b z{KoMCAD=C0`$zBMvy1IP^@xeM<;l{@%8F-&8+ilM>eA9mtA_xPeIK|czY3j?Gu$6< zD?FY3vMp5LYnu))w-3%sh7ufO`o(n33oU*%LFEzMO!G>5v-0&@(7qt~S5k2^+5Q1_ zr2*6aac>EATWaSvW%b>+lvGXQ&+x`VD9nfKHxqJA5zFz&FGwLWi5b*v9|(AjfIPfg zM-jBXc>y&WHb)G0b zG8DAL*)+CKu!FELuNa{_LepU7%`#cKZb1YEN)gC4Z@*-_`qzYPBRP``Y#viuDcn_| zmQ<{rspumYH6y0YxUx@P{oYc;3V6g;wzi3KZDW;`WlzT~zrQmWE{;a}&Mz)5K5T>% zdyv~d=IDIO2u|H14fg|_uvgmz^GTXHgWHBhwZ=Q1p${7bOX7`#ne-1ceZ9MVOJU@z_ra^Y&Jhv& zSLYHE0+~T2;wYd`t>*Tc!3%A@3?>Xr1qVKX{@wvq%tC9t#xaA-%97xf+Jh8TXfSfR1;gwnG*|*b_sg5Ige=o`H zr(IOS_M}%Z-Zf~x(Gn1qM9BQZ8zL;aa+Wv&yr5c>4NdHyv2p@4Wvb z8MmW>Nk1Uu^|gjIpJrv$olsq1aBD<$3$pc%VQFZY?%v5-Q`(w`EaNtCv1Wd4-&ep` zVm%GZv6x;n%ZaH{)xOrgKkT96tszt(z<(8v z>6`2{=gMAzLh${x`*jryQ{$8(-`tE&XozS)Xv=4zO>C8=83yAmoN6xEjzQOrasSox zFDi}ZKOa{TObtY2o)l1o^>U%6`+9qS6hVn(-6DQ%3@%Zh<6BjbhC#Y^!Px7)`*3J% zyh>huN}VpVQP^a9oWZg3$zGX_3xoAbR?c!p8nuG^JmbtG{U`LY<%VaRl(tlG@^$a= z`MTK1!E7K&qhDYSFcEvEFZSF#jjSF znD|^HvzH3SfKu?WzB%+ilZ~7faKK7y^`JuL;S>4Jrb+hjjG}`#Aml`;(x%?aVVAb% zeNoTMTBMaRNH}G zIW|+{8&mS17LQEso26KC;AYm*>kxt5_luJMz^LiCQR zPUD|cDnXPAX_NRfuCx%7SJ{+#F{RCP01J$Pl{pfIS&y5LPz9^<)vx~gvywR?1UXmB zEVrBo&01fFRWQ#FD=<_}tP#t9#{Krs>!YrYWT%re$ZGo_q>scrS$b!B!|2w!iXH#x zm@wP6;#M)U^Z@{@-o_2srz;_dnjp|m#TiZ}#J|nota+A)_VqiDy*}^(t$CIx?$<+y z{;Y3JqkC`UQB{BVlKFRTRZ8uNO|)#45118o`5@qFGHY|I8>+qkYnf{m-8_}2Z|xTh z=ggR6hd8)jTI3pj&s11+c&FMazcGqwOOl~dx7LqkP*jS)GR0sw`tl@${Y8Mw1UMu4 z|HlF(ZQXD?7m!Dt3L?n4Vw7FBIBakReqrYpOYwmE89<`ou5xT6YS0Esir#)#1nha* z`@mXWTYlSNx9RoT8<=(R@HwmUZ{Z|8kHq|!GYWo^EgakBG_8;iUqt*S2?-HxMG(6e zFY43jUCZ0OqQofXcXY-)>k3EJk`@vkfmVZN=7QB?5y=WJFnmyND*7S@vFi7RkE&~4 zLhjgK{nZ*3qp!V}x^#=w04*><|4?!(YF*Wt^ zW7J)cBT!ndVVYjuL5$mm_f=bvgW9`8N5KjZ-F@_8gmVa{4|da7hc|mzxFtN~MeK?y44Oi|nJd^F|MgE`uuY zQjS05czZ?4j-O=;?WrXerF`u!s=WP9E}A3_E!lE;Ev$~0zHBIv+_L1YcLvQpq_(^% zQKH$Rszf{eNIx!}_4m6qMqwwB{qMo|v2wN1ms;0{NtK0bKUJz4=sHR76Nq*N^W^fO z{SI&JKcj$vMehsqhe2Ld_#8Vtd<5gN;`lfGUV{vLf64_pcMsSceV`p^hXs6<8iKkE z*PSxH-#DF&XFAY}5lN+)bH(+@>|992sH9*;N_|Bp3JrwOR6M#pR?YzVrA=v)7r{aP z%uaE5%7xdAV@0BRd3nUxP6J05dE1y!MpjSsU5~_fW$#JnmhwS$U%6JTcaVor!B(be ztq#AJPi&*;cP#z#%4VGRMY*OlU*8s1V6q&qr(P0U2kbTvAKO{l zcKu?SpY`x|(UQCS^y+A(;lxtR7KHQDX*hk_mt-pUa{bm`<$9Z9PHAG^uZ6=d?TXGZ z%H!xogT3ZyoK!(#^HIpex>BdgV*XD% zr0AV4d{|*ltfD-ix-YOY!%d!!f_-A_2E#~t1`6cUvjjXfESSQx`=W{I62;l@s~=vu z-KV|LFBcQxqG0EnPexxlvdYq-Jbk)0Rsb(M;8?54C@Xui82Ygu9>={8^;j)g9An~J z7dF6uygX({$plppjrC*uu`iZyvYo#reaOjXrxOF*EJNNf7;dmq%}OJ1m}IX)JLlelUG;l;V;-be*zHnEYma{oU0X!E{A*zanIeh9xPpt`msikU-f;9H!~I2+*o_qC^U78Qd- zsN1ftm`WtQXNnHieUZPCF(x;z`b>{w`@XiUcTFmzPb55v^smt`y?!=IN+uz<^TIK~ z$I|g1SZqKB=gZx=$;oQqj);CO1Ku*CrWLX(~##&tQ(Ok)B z>~OLHH(mAL>p$y_Sx+E!KxLTnfro{=DZmg%s&; zezd2VtTQn);9aKH@SN!BP0+k7nv`=c#A8(+?OWOEqznD|EY1;A`Y~^rmtlzoIPn*# zV67?J=Y60&So?M!2r2>P8{GVjkGYIyb%p`|k~(F&G$3O9`LD*y?5A>}~T(ZTuGX?<9a3bnu+hnFCSZ8x>2~m{G zEBy3|oN6HCH##!9J6)DZU2YCb+eN4IYpH*|a{BgAUZt-?V(mj%V z6Cz@NJ^c526wY&B$pjgON6Fw4Xe~WCpNP1L8_vmOqhqZG-r55nBQ3IzFX{`Kn8F%C z+fnope*cS27*KG%&(V?sNo5pgvcn~l(_-@PEA(^%UvlG*_OHm^+!837rR^QdRu#SgxYgC=KQ*PgrxsSOPr<$@-q>Pxac zVpHwtYW(oXuI}`WOY_MWTABuV`r>#U7|=X#P&+vYXM-1>_xYpL6NcT`w{PEA4~jQd zWF9exaJ(F&fCYRTrgIwY1dZVnxo-S$Q!OI{oy0=06|}4lY`^ppWmRb}oXPd`=zOly zAFpb<#f<_-ef|s`B`wCqL>8+X7CN2Sp>#d5l+^l~_xYS;y9FTK#uuS$HMf}0B;ckC?q&-aLAm^{y2Oh8( znD0rpsg6Vrh1sG8g)>7=WgFa`{SD`1LzGY<#vdkC#q>ivzXihyU@-qNjDfBZr+dvf zny_mn(|l%${4e7u&*NB}ghqJz3}_(Z&vGsnLc+Cp|5@VTbvm%jyot{1&p^3hiZ-#% z@)KCm7oe$-F+)Fhyd@vx_(;o*ID>8JOK<68v=Bh&3KS5C;THzHa#Rfp2~D{t;k{n4 zuFQwCG>JI7h!C+QAa=>+1sl;zA*8k`io$lH+vI&G2OeA-mo4r>Poa!;GjB(M+F;qT z{9cQ8Z!CohAN`WP_KHMY{SUx~Es`_$|5)QMeJb@~U#)(m?c)eajz)rN3?|S)OA^}K zNs7A|zMDMQ>WcIE)J6J-2oh!n2utlzk?5cxCU_b~?u8PXu1=+z79Q!U?Zx34-&q8u znt{gwI@ccWh52s@Sa$jMBi~C+z0qI83M>+33bL4ZD(QU^wA>PyF<8yXH~RV_MVm}q z?@QtmcXJH7Fu2^u7(WU|6WdT+nzN2XQ;sOo%l?0c(-P4PWlrYEGYN8Fw@b)Uympuqco>W=x0yiE$ptQ%Eb8TLK+s-6u)&kFB#mc z#SO^99;*29fcg)NR?@Y{1f&H$_GGJpWL(i;6VaECmy$$2 zMhAO$099h`k~?~Of_@x(69tw_BLDw7JL{+@yLayo0sT_F`zXBd9y=)y7mD7x6EdrM0-GL>JRvgO^dKowug9 z;ciqj`4*QXCM8aI5yl9J)G5{M9lS%s0|a9mZ@o1BB|hm$!DVc1cJdU1?Oa7hU4_VZ zF1!BHJih7xe}~xz`KV&Aej>15DP-NN3Bz}ztPnA>zQ4s#>XoOzv)|K4F}OwK$9cp} zLs8ZKy@s-3c5Z@Zg=_fwE{4Cr=!d)W?(bCh<$A))R##|V%c+OS4?C`fo_KzEU1*A! zF4h)wV4ot&QzAV#LIE#hPA*Q|*S zd_2=m4Eb3JH7QhmLyO0Gj*N*t?m0s*AbJzZcdTi{g(;qKV`bHw7dv_JEPi=`92qch zkPEF6UIFsAMAzEc;X5aL-^KpqpUEi;tB#&I?UeQilUX?@*(v@y zyGqX#f5I-`iN;k@GdkT5gF|b2DU8<2wd-QIwicZU*CfbA?OyEC+3+-vsMF0kl{Uan z;w`vybbo+cV({kmt9Om*RsD6d68=|b#=-Qa{shNsO8awdAyh(6VnEyi@rnHpg18ic zFccRmV*9{&{pG3q8=(=2es#Q3j8YR zU4k}7$#&J#dbqZ^^gFsWoE$<%}9A*mFl}k z*;ulmMQ4~Z92w4{v=Nai1eas#~ z%WdXGji4cH@@lo%Zk9ux%DUTk^CRwSe5j@5pS2YMgDgVSjeB>_$P%$?Cd+Ve(46_2 zX?Yb{D&Y1Dr}p>l<+R50 zGrsIiP4&X+2Oi=@+k0T&8Wn((v|OY|v%WssP3!&1|70c+ICsC~(p-NTeo`t{N z`E|rwn~NtOA{z=PgOt#-lEi^IQmiDfr$qAg(GV9S>QUAiSKQdgQ^qvKK?O9&dx?E3 zIwAsMPZ6hgg6>YGS@tnwsF^8$GoIv7ER<{1dm)?J?K9l{juFQ&CQ*CcP6<~&jA>_$`qFd@JP&0Kfhf=5 zqRW^q+C!u}WIKm9blsV+^Q{IKg1F>DXfoxf%bZf2TNb`V{51LDcXyTbGyu^pX$pa) z6H-JV?IN2#_Aurl&ZM7`nYxw@1LF#{PjGqO5@pwZ5RaD2-XfL5dMn%2{U}v+C=x+D z?QHW=O~lP$r$L*kSBl2vvv%xd@FOuW8q^%`lC*$#pE*cXCiA zGRgQl@Q(V&FwXPCZOK~5KlisgEW@=@;5xM*!)6KPr}@6jWx`1^L)8h~u^+_oBlY@SM zgNn-;t9Sb^rIyOlIxX!`jxl_wVDA=1lT4ll>yfn;_V&H%FMuXlHzNQp!xdHJ77EC8 z$Lgm&zv!$MevSH~o{L+nP~X3$x)<<$J-OAScG9HTF|l(OHy%$jdfP;KSj zP~K7w5`ywo1i46UeR2R4J2d706?)lQbWQ1(G|)F|(zaT+`bECrnxTE+3(c~WPP*#M zMi1H{+7@l_1qD>$`8zj9HIggNm9PY>jz^KD35zMp70?Xe41C|o>Xz>7HQ^<{ulW3Z z|G{i#@c!EnWiOfV3H}RlL}g-mKWu1Mgck)OSd>O~HpxtlYcJqeQ#m_)xam;s3!eNd z>3ih;Gj6+kxz1^Nvg(z*+d1~5Mrf0BDMp&lqc_R7uz|@-|JI7n5Rf!8AhUiG?$|E0 zzX{4sX_e%kqGvmQwY-CY>l|BG=A#o&Uk@zi5XnE-59@{~k?HFgVB#Z_(fkUkP!~(X_;OB;?;%(z1jWB>0kL-;o0T?(gGfst{0eykAmRRmJ;Caia41&!fj4M{!FYc#MN04$V{3UWRDYcl69vyt_ zNPZhD>uR(_-|c;NS+<&-zcxX1hf6kCm8GpE9DxukpH{I;XDm0f>0mZ-5HvdV#G_fz zF?_L46Q@;>quBqL_i$ccy}g$+MqpQDpIsZ@|M&;3>5y7hE~i5|(KM5Wj~JmtFmNsx z_s?3Tg@s$y;bx$c#%7424laRby$B5qT#|t3j0z#L1iLYpkY&-dqDrOg-Zh_tAm$&i zaGlQjw)>A&v(DBtCOGY?+vCdQG1FSiH8@mN@y0VuJV2IMi`l&efV;w4PP6q)uF1#m zUD60XDHE<7NRnTOzxfACQk~TG*ma2K8j9S zFMDFXEi!YsJjSkEOv0tnEmRD93hn%#s#8YyZPlsTkZ+3f7)C_IM{;J$?A>I#g8Jz6 zJkb(-NVj8wtnsA1k1svFT|TVq_qxBa43Nd4Gcp>`##Kn|qFj|*1SU93G583D)SedN zfLndVjA{57K#S(9pMY8M*&M2DJp}qitnENf<)N~#$fr``uZN>uHbqi^$qSy_X`dM1 zb;ly{9N}sUlB&*>L--Bgql~8WlHu{7Lhkl)CZ0|@D$>yIj_I|oj6?%8*HjT97vO6RERbQ<`V)=xaj!cN8XE{r;>hz5p2BDc&3tz6x zO)GoLOQci0dX^9?^FTAnq)T12ol`I&JDcEu(`9(Iz8&)#K(kmWKi`Zn_r?ifVf$vp zWI2eLeGlTXc-&86G6O*ts4=V2^o;h0ujTgp#Z(g7##oyZqP=`B2fA8-E;_Powq z6C1}SRr6H7#@_7vVAsb!f4!L%*vKED*r}O`<3fJ&`@pV)Fdw1JHKGq{6%c0mWfeBtT1&}! zjALS-A=a2)rm=K!x56@U1IGk8o{4097RRAkSDokKfxZaat$Y;7T3|lY(^HBtSs5ab zLnLxo$1BYaGMAXF+~02!jk$L3GAz^*kxA@yi2v}BzG1e@r|Tlszz{$sBJ!Y&uldUeR$;6K3e@<0Fpx5Hm=>9{hGCDi)o| z_E*aZ|8&d(1c0z8Gqu>PO}Zy<1OPoTO1~iS05NK-_x@;clWN_8bVrt2-m*!b4@7K; zpGuAx{!z%jr!3@!=QG39h<$jtNP57fXGLYN_)B;*&wjEsI`AKIpyu06gy3{|Kl})l zVMmkD`)dzZ@u6l>iE;b;S`!f|s<Yq^%!t7p>G^9GP|-lsLIg6xeme6!xG* z9-1erKJL~=bmzq`PN)u}hw`|6*!?|m7Bpn72wli8VhD$#_xH6^iFog9F#vP=39_4} zaAZBcMPQdy%qaCm(kf|;x$JW%MuJSIu&8J(eoays-|P*WI3BIo*+yxll5!pKBoM=( zOO6V@TIHk`(!n+~1?2t8*GKXyiC(3A!5(qdqo+z`)I5gYDqYQhhSf`oxR!aStG8Px zwW|sdgfR465yaJnieKMNvFq7*zE+NU0iIvBswnvl-=}Jjdnp6l zJ)PLuuysy=o{fAIMS)hm&uc|nTf;mWaOcv1IWyXC(L&!*PNcC|tH1BOr1`JH{@{ml zkvV83Ak0j-(4Dfb%&g->PqUG_=YI&7P&R)}Q>x1_ z)rq9?A{{#}ihb}}?n|@p?7V7&jn~39nWgJ*s!{6B;|Ufr>6GJXtp#`v&Rf(`8~7Ed;cK**vJC z{;(oqS=|&nG{pcXSd~m^W3mZZ<=UAQD*dzAks;hyG7zR&WH-({?N>w(n5%&umr3Jj zYD|$|!G%Xc>=OpA#lgpiZaz;HQkk8fo1qa~YHS9N(D_V(oeZctO+7CCW2s$A=p`iA z$*^Gxz-o!l|H{V6Z6v>%&>RA68rHJJZDhf$W}Jf!i-0oVz%D7Dr$rrpU$!Pb1fLuN z!L3sS=K`odG|x1v0PX3wBbHz}QVj}n=xjY`=}0dx$WR>lMJ6!xBE{?1pg{UAKDHk0 zudE?PWOH3e`?n)B_ssP%fnf{rvb(qD-CAzeF6zH_p2*{<9Rzsd>DbgHuD9aDJQ=L{ znguy&|L)AUI|GhzDCwcP-p>M@E|9_op0(4V%r%jM8`cubU679=EnU_Cb-1@cba#pZ z+h=co(HSe)d;b|CpQ9rL1J7ydD{wM$_NF_LH#ZdIoG1_VXdg5C3$LywT)v6Y0zbOC zwO_qk2IG+7Rbd98jP#q~)&sDV=ml$FAXOQZ4VwP*=hiY>FjGsw%9!e=J>UogU&1w4^o zIv`c6!qXM0-Y2)!TN~)*F8Y42iZEC(rLSWj&)C>F!U_T@j4(1@w#y3wJ@eAgS_PvH zb)?hj)OU7k6AC(NP`Gf@N`C~rm3*9jVd>ELczPAHm%!*woxO6JBMXO;{VbrVX8by+ z>I3#?W_ET)HYsiwz;Xghe9n$nqr5kn@8(lW513D->@tPpx_Ij-@2IC%Zxz#wk2;O9 z-QE`NAr9DOP$eksHD$ZZ8&}->5RY+DAVJ4d{<|m;Ff%D5AajjTVkESsd*rLs6}GaA zKBdQ9_=tg;0F+jwZMWbn4W*{A)l2W^qXQ_}+YlZsDi^W*b+3H;-3SVzT z5?R-42?NEB9wZ(`1d8>>3Nx72;f@}HZjFhKfmdfzZl|%av8I)2f3xD>S%n)ta`b3= zZY;`=@U`8{+a`M?2g$vHM(ZvjAsI|#{n>HHk$2JKcRCdo?ajO&&4eEu9Q>(6X`S{> zknFD(zR9~>a13~rf75?mu5V=ABqQXH?)-Er)fR;?o^U$tE3jIIWy`TNZ;`;k>kj)Z z%|OiYsM8bW#?+$(azf-Xa=-_a4qmK$=)XIIXqfzPSyWbnT!BA4$Yof;7Ifms`HHbG3ekc^|th-o8<+3YmaVoja zpD75Ba&Wi>@C?I%Z1eFZ&GiHDUC4fybPz~FVOBW#Gv*6u$EDu>5OCS4dptFrFfEo= zSuO@dm^>bDkL6S#{!_U(fb?2KVc)Ujj#d?S9=cpEG+hI#&Vc&w;Ptl*qf#r^E7{#_ z*$O8;ay%5Ko{0}&`c2F7mqD5X_J7+~>^SXkzfBu_iJVFm=s_8I${Lp26}2p)8b+6% zi{g3Pz0k{rlg^#GjBoc(2UF3ixE5ioQ5ku9ySr9)<&+{%06=EeScj=`j|Wg;xEJfs zin-7Y8oi8LgrtY;%ci%=Lj{%ucv6vD?niHh?2*^6DFvPk3*y`&apb(X5D%EkljZ*O zec7x77u5|F`C|L(Kx9J0!#J55{eh&FQ9PM^G#J9-2IU8r191FaoW$fJZcjqe4^EH*}nER=+4$N`@c8sG#UOG+8Xhz?A;1`7g$LGIdM9@ak9b=ikWL6Lz zV_KRJ;L`f!>t@#I8n`}sa8O>5DTJFM&+Qr(y(r7(`FknJF%>eVSEG+-Vz$tmC9u;y zscc^4ZhxMwoW{5%)Mpy7^t<56pE~9V)@h@D>w{jCNM_p9?fqB>yW1%u%DDZ+3&{+} zhh})eA-LPoB=XV@*F`hn_rwRjkt*u1H6aZSX_XKUnL@1#HX(Zaq7DKD}=Nhh|>Vmf;{a~tUq@LSZV|MQ2^uxA*eXk5BE7~xb{ ziM)(RwfpPCq;n}jt?W|0__o?OTrrH;K02( z^_+kcpwHQ?l9iTM`W_S%SpKK_aF;#sqp+d@y0JhqXqeDCaLa3Ab)yycEz>BwUd_1` z7F@yL{JAw(lxr!drB*VT3sO?GCfxQ#U`g*+PEU&vFcWoC8Iqzrqd+vgIF_e%=0S=E z67(7%+@|-|t>18d#_mw8S_!&ME>XeB6Nc(#m19xm*ip`5LdflmIjD3Pya)OFG5uEJ zAYY~LxILxf_77}U{}lJZs|vg|lTkT4Lc+2T2w43(;en#FG@xE^MFoyOyww=TN>&|o zZmDpcDalu6GYI!=>p;Mo_os=VO#}f_mKkUs(#Z$6*N#%#l1NTl>!bib`S1{XOLFY9 z`2&^}0yINLL14uAF#hDg-X6%zN7|9#2_nGt7P2LloZj`0-{X#nT%AX%>JP*G>9%Al3R>W5Us)ktutFxjWT{$#F3ohfA%M7azyg5{;k$Gda6k`guiA;IOi_~+@Kpp_~BAvyoqpwoliGyO* z7xPOfRX^nGffx*Skos2(Y?dptS047B(!Q`e0=YK!DOxLbETg6b!r;l`OW6Gw0j?W$yxb!Pc z^6yUe&#PXgbBEGvv8Y`UO2qwKL<*|kjjKOO+W@2=k6|WW6`_AX^pI5<`LFljs-s>` z2-16Owtz7qseIdPyFk6Qe6SEelw^UE{Oz+H+)^16K>Sh6B7#8>KHs;K-w&Ks9e81H z1dyiJXUxPhneNa^HSO~BP622cnbPyTan401+-(w|;O6n%T2$tFyGVe=D?Znk@z9?+ zdhugfH|fe36bu70Nz3#Q2=!-yHbb}2(qUgHM^>&Cid6*0!_2^r&!uI~#q;(RRE?&O z4&SC-`rm%JNLdA{aR$rTcP=O`1r-Z7(5rBvF03Jpb)(9#2O6&hAOJ2dKE2OA)G*(9 zNNk-0_Q`<-ZQJM1pbO6ue@eRWTzaCV9hfO1nCVvTS;Mh}?O!^xo@AwWh5RgyH(2=h zv(tlemv2kh%Nk4OP->N#MqeRbVrmk)yhmnTdj|9mP2r4XtD(=@ds{-?>CvQ9JJC9p z*9WxtL`_Y`iDMqE7rx|b!wg8iL0mh^t!IDaLxdCZiUKS-58z>nfHwWk#_FM|IIU%3lM literal 0 HcmV?d00001 diff --git a/vignettes/BacDive.bib b/vignettes/BacDive.bib index 2d8266c..7db88b8 100644 --- a/vignettes/BacDive.bib +++ b/vignettes/BacDive.bib @@ -22,3 +22,26 @@ @article{BD16 doi = {10.1093/nar/gkv983}, URL = {https://academic.oup.com/nar/article/44/D1/D581/2503137} } + +@Article{TT, + author = {Hadley Wickham}, + title = {testthat: Get Started with Testing}, + journal = {The R Journal}, + year = {2011}, + volume = {3}, + pages = {5--10}, + url = {https://journal.r-project.org/archive/2011-1/RJournal_2011-1_Wickham.pdf}, + } + +@book{T, + author = {Hadley Wickham}, + langid = {english}, + location = {{Sebastopol, CA}}, + title = {R {{Packages}}: {{Organize}}, {{Test}}, {{Document}}, and {{Share Your Code}}}, + edition = {1st edition}, + isbn = {978-1-4919-1059-7}, + url = {http://r-pkgs.had.co.nz/}, + publisher = {{O'Reilly Media}}, + date = {2015-04-13} +} + diff --git a/vignettes/logic-checking-bacdive-datasets.Rmd b/vignettes/logic-checking-bacdive-datasets.Rmd new file mode 100644 index 0000000..b9225ba --- /dev/null +++ b/vignettes/logic-checking-bacdive-datasets.Rmd @@ -0,0 +1,76 @@ +--- +title: "Logic-Checking BacDive Datasets" +author: "Katrin Leinweber" +date: "`r Sys.Date()`" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Vignette Title} + %\VignetteEncoding{UTF-8} + %\VignetteEngine{knitr::rmarkdown} +editor_options: + chunk_output_type: inline +bibliography: BacDive.bib +--- + +```{r setup, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +``` + +### Example of a data inconsistency + +Just as the correctness of data analysis code should be tested automatically, the +consistency of data should be evaluated and monitored as well. Using [BacDive's advanced search](https://bacdive.dsmz.de/AdvSearch) +and [BacDiveR's `retrieve_search_results()`](https://tibhannover.github.io/BacDiveR/reference/retrieve_search_results.html) +several examples of geographic inconsistencies have been found. Presumably due to +an overly strict location-to-country-to-continent mapping, several samples collected +from seas neighbouring Russia (like the [Sea of Japan)](https://bacdive.dsmz.de/advsearch?site=advsearch&searchparams%5B20%5D%5Bcontenttype%5D=text&searchparams%5B20%5D%5Btypecontent%5D=contains&searchparams%5B20%5D%5Bsearchterm%5D=Sea+of+Japan&searchparams%5B100%5D%5Bcontenttype%5D=text&searchparams%5B100%5D%5Btypecontent%5D=contains&searchparams%5B100%5D%5Bsearchterm%5D=&searchparams%5B17%5D%5Bsearchterm%5D=Europe&advsearch=search), +were assigned to Europe. + +![Two datasets with a geo-logic fault (pun intended)](BacDive-geo-logic-fault.png) + +While one may debate where exactly border between Asia and Europe runs through Russia, +it is clear that its Eastern shoreline is located well within Asia. These and +other datasets with East Russian locations have been reported to the BacDive team +and a portion of those was corrected in [BacDive's 04.07.2018 release](https://bacdive.dsmz.de/news). + +```{r data} +library(BacDiveR) + +inconsistent_data <- retrieve_search_results( + "https://bacdive.dsmz.de/advsearch?advsearch=search&site=advsearch&searchparams[20][contenttype]=text&searchparams[20][typecontent]=contains&searchparams[20][searchterm]=Sea+of+Japan&searchparams[17][searchterm]=Europe" + ) +``` + +As long as this specific inconsistency is not fixed, the above should display: +`Data download in progress for BacDive-IDs: 131115 139987`. + + +### How to test datasets + +If a BacDive user finds an inconsistency within the datasets they use, BacDiveR's +`retrieve_search_results()` can be used to construct a test-case for such a problem. +In the following example, the test fails as long as BacDive contains datasets with +the above-described discrepancy between the `geo_loc_name` and `continent` fields. + +```{r test, error=TRUE} +library(testthat) + +test_that("No inconsistent datasets exist", { + expect_null(inconsistent_data) +}) +``` + +Once the inconsistency is corrected in BacDive, the advanced search returns no +results any more, and the above test passes. It can thus be used to monitor the +resolution of such a problem after [reporting](https://bacdive.dsmz.de/?site=contact) +it. Furthermore, the users is alerted (by the test failing again) in case new +datasets appear in BacDive with the same inconsistency. + +### References + +See [testthat.R-lib.org](https://testthat.r-lib.org/) and the +[related "R Packages" chapter](http://r-pkgs.had.co.nz/tests.html) to learn +more about testing in R [@TT; @T].