From 13571e02f1560a6acf43593161a61fd9bf986d10 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 6 Feb 2014 00:25:26 +0100 Subject: [PATCH] [API 0.387] Replace #defines with enums Were applicable --- spec/example-all-functions.c | 17 +-- spec/example-simple-answers.c | 2 +- spec/example-tree.c | 2 +- spec/getdns-0.386.tgz | Bin 38436 -> 0 bytes spec/getdns-0.387.tgz | Bin 0 -> 38782 bytes spec/getdns_core_only.c | 12 +-- spec/getdns_core_only.h | 192 ++++++++++++++++++++-------------- spec/index.html | 59 +++++------ 8 files changed, 159 insertions(+), 125 deletions(-) delete mode 100644 spec/getdns-0.386.tgz create mode 100644 spec/getdns-0.387.tgz diff --git a/spec/example-all-functions.c b/spec/example-all-functions.c index ed046cee..35c5ee8d 100644 --- a/spec/example-all-functions.c +++ b/spec/example-all-functions.c @@ -19,6 +19,11 @@ uint16_t regulararg; uint16_t *regularptrarg; getdns_transaction_t txidarg; getdns_transaction_t * txidptrarg; +getdns_namespace_t *namespaceptrarg; +getdns_resolution_t resolutionarg; +getdns_redirects_t redirectsarg; +getdns_transport_t transportarg; +getdns_append_name_t appendnamearg; getdns_data_type * datatypeptrarg; struct getdns_bindata ** bindataptrarg; @@ -49,7 +54,7 @@ void * extendedreallocfunctionarg(void* userarg, void* foo, size_t bar) {UNUSED_PARAM(userarg); UNUSED_PARAM(foo); UNUSED_PARAM(bar); return NULL; } void extendeddeallocfunctionarg(void* userarg, void* foo) {UNUSED_PARAM(userarg); UNUSED_PARAM(foo);} -void setcallbackfunctionarg(struct getdns_context *foo1, uint16_t foo2) +void setcallbackfunctionarg(struct getdns_context *foo1, getdns_context_code_t foo2) {UNUSED_PARAM(foo1);UNUSED_PARAM(foo2);} int main() @@ -242,18 +247,18 @@ retregular = getdns_context_set_context_update_callback( retregular = getdns_context_set_resolution_type( contextarg, - regulararg + resolutionarg ); retregular = getdns_context_set_namespaces( contextarg, sizetarg, - regularptrarg + namespaceptrarg ); retregular = getdns_context_set_dns_transport( contextarg, - regulararg + transportarg ); retregular = getdns_context_set_limit_outstanding_queries( @@ -268,7 +273,7 @@ retregular = getdns_context_set_timeout( retregular = getdns_context_set_follow_redirects( contextarg, - regulararg + redirectsarg ); retregular = getdns_context_set_dns_root_servers( @@ -278,7 +283,7 @@ retregular = getdns_context_set_dns_root_servers( retregular = getdns_context_set_append_name( contextarg, - regulararg + appendnamearg ); retregular = getdns_context_set_suffix( diff --git a/spec/example-simple-answers.c b/spec/example-simple-answers.c index e9d75608..8c0b446d 100644 --- a/spec/example-simple-answers.c +++ b/spec/example-simple-answers.c @@ -9,7 +9,7 @@ /* Set up the callback function, which will also do the processing of the results */ void this_callbackfn(struct getdns_context *this_context, - uint16_t this_callback_type, + getdns_callback_type_t this_callback_type, struct getdns_dict *this_response, void *this_userarg, getdns_transaction_t this_transaction_id) diff --git a/spec/example-tree.c b/spec/example-tree.c index dc264dc3..485b0d7d 100644 --- a/spec/example-tree.c +++ b/spec/example-tree.c @@ -9,7 +9,7 @@ /* Set up the callback function, which will also do the processing of the results */ void this_callbackfn(struct getdns_context *this_context, - getdns_return_t this_callback_type, + getdns_callback_type_t this_callback_type, struct getdns_dict *this_response, void *this_userarg, getdns_transaction_t this_transaction_id) diff --git a/spec/getdns-0.386.tgz b/spec/getdns-0.386.tgz deleted file mode 100644 index 754892c1b31b78bff923855ceba2ce8a19098145..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38436 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⩔)RJ4%`P` z+QC~nNG;uqNnf+#;&9S0gkVQueW}tPuq4Kim@@4!QP75?*&K=?@Nh+_^w`qR=E@@? zL0x;f#8Bjz!0a*Gt*QktI#qTPXF_es3koj$ewd@n^ZQ7Gn?e*6o};g3kOb6Kq}!N& z;hfhnW=|RB2DXr6_c5?X5K9k$=n%Q&p+ew}s9xl=DGCao5^EkggNNbu^}&QAtGpPT zW28)4aS&|_e#n!32A0;qO()hH7}oQMUEeKEa6SBaYCKTaK@Yg#0ca~D->z;{R6x!H zfr$>dY}JG4fq?><_g6!9^5*1?1JrO@9mUZBk<4N@6Pe0(r0$HP@qlJx5(KycY)!~b z+_mjzBa^8GKlOoDq*^5a^;470LTmtA4T zqi%rrk@GX5B3t3YAj?n`SIJdQa2e-Neu1=lDlSoug%`{aYaE@2Kpb?_SlwKO;OtHG z)kzGStVrzVIt2k3p9FyqRl0*?3K?0G(^0g18a;wBjqmUA`hKjb>1=lzh~;1mk)l(o z1fCPaq=`f8%PUG=39-XA3W(JrSI&Jxl&m&Ix4M-cZFS^(}#8f5$ zjS2;-RPAf`IRwv-id@MK)*5l?e_yF(C7{+cIEg-*k`~z%$ajS*aP#fU7v@h*`UL+) zu~VYxvIk*hct4JcUpjrnW$X_uCtl*gXivKqfd9|YYGY+})0I;rlAP|8yoDxnql42? zXA9Slaci$|H3?U#VqEd3`#2Wi&WmS|97c|r*wAZDY$||Q4*7TP&V|?2npO~{G!T{5 zgcL9q8;MgOp<_c1g0KgQKfcR6o^cxXK;(}q5=BN>8<|s$x33G2Tq}oR*c4}o$O)+< zl$66_-vg}&fmRtb5$N1Q?g{kZ$aIa~I>SCb;Rf3}$!D@evuHz^f1bcGpxB_pxAw*Md z5Sa?ONXs2vrK#XjdO#CG3jFA83cApNXl;iS2#6sIkd9(Lub#7@Y)2^zBo#4iGFJuU zlhU%?a~7jpTl!Ma$s9u^Zk$I6C>x}^)Qz(0U7;(jwrZ`YzVt*_Ey#=>zun)AKi%G5 z7Gf`tOvN*BE)gjlPC3Yow5gmAYeV;Oa5=ub{W`e58Q%=Pj%t`Ob{D!UmALUah>6l zCr{xi^U+MKpIEjLo$vH8-~3YviGjl1o;i}Wo=PrY!s9|$UTHGRFm>dz)6l5Cu2DO zcyVfWD`afyVeQ2H$a#@^y!le`LS@g!m~azX%B87Z6;)VVU)$Xo^M zo{;USb|`pcXr3a>(N0U^8~v|c$^!%Oa-&Ca-eeWj94IL0wl$94RPmX{+3W1yK&>_W z0_}E|zs|DFQ1U;G@fZC{@Vv@N(_KY{kj<`2&zFP@ECsnrSChO}IQ3I{jLxc2RCIB`4G-{4YS?%_is`RXm z^?B)2i&~RX)Icoo&H`83b+qXkX-8j*^(`Bkgu1v!pw%r2tdTJm4z#r{Z@0;KGgBoL z^y(fZ7O)Y7*f@Q{Y-@@>^!o6Y#V#nlgv@FR4%ie0I8rX>fJPS8gsODy!|tQexU{If zAfYsu@@bXf>gv?4YRHtEkj2dr{)EM5rY-?|eDi`X=Jct|#u()dw1by1>h!8KS4W!V zP~(77+xd5~GsVJkKk*Fe20V=M>N}4D^j)o6nQc&O1l~v1i{^ID(6#A;%5ADuFRZ$z zO}_Pg+t^-Y09Gxh9j8OLQ`l+M7gFophhMHjN^vxSS<^jULD zQWB!CNnS@v>8ik4Cty8W;n>2FZThTnbX7n1J#SYY+b&elGO6*UyVrFkGhIcedV6w> zJ!HHet9BE)9)+k(Y)rWHUEBm8nClt!?o

snH6IR1k7+fgK$Wk!)(oRMcT}KQ>1{ zq%*`+aA~=3gGsS~4qE<(^&}lZ0d2gCD70&fK9O0<;>qt&@Rmkh{D2vQ?%7ep$lP+N z)(kb@>o3@gBAH^fta?bkG(8oET+Y2cZyp{>Q`Sa;yO_2Rt3qxR@F5}(LI&n;LDef zgW)gZ;qBMEFQdoN`U4b_#0aQFOC>K}0%A%HhVEx|@blvQ1?OHLP z^O7RaL+ti#wfW=q*U{~_$Cu7&j-{oAiGj!BJo}S7j_&Vo?_aUsoR<-Q&6XzdJH>k$ zjIVX~`JiVdz9r1K=b>@u+{yumD%8gtTb+O8J~~X>(VI&XDmQQ>DM3e!*^pGbOGjOF zPp4@4cm+hzD)UQ)x*?#eKe}GDJPW#UX5O(gaRvM5`E=^LKEB#innSE_%<-;SEUOge zI!iJ~F|C+tin6Yh(P+jB|4S8(oo_%o(V8BJY>e%RaV%Sh8xTXG{&kVmNGTegA*iMg z53H1&R|7E^k5idzpoTb!i6n8ZmuVOplJZq0f{T8Vg&dTJ>9VhNVNrss#;g?0)=>?m z`sPFZer&E_{}<92<6*|3fIz+)7n=J0Wb{&5xw9AIXo0)CgKrT-ruy;u1@NEcZwH^J_`V%d3-0%-gg zFtN*Rta zB0-p`vf?L(F zFGW!rm?&EG80>HW*tDCfZ4J{au2p!t*T0pl?Mq(Oj4@+3FAW4>A`N;AG6#p|t!(|( z*Wjd$T2vMMshIK9qt+2<%hI%*;?$q{5stO#+h#{i9hY?wAwg{ii39-+sLUQ{?uZtJ!Bx0_#X zZhyTQKi&^+9tOk5^1{9{L$TEXotK6gtl5Z)(|XTF_6r<$`t^{~YmHjo?~tI{IQHS= z$f4#(N42ueiq39XzC`LJ5eH{iNr3bf+wlq8;UT_9q|#%WBaypZc3J!bK6?nKa!2NkjD0<9hppO}k^2R6c5r?rCS%a!jTR1Ly84}; zGyV1m`hT=_?qRF|gSQ9wOn2Is<;y&@ii(63ySeTYpD9+@lM+(U^n^VsLF2UemI*0u zjTv2bP4!ub2g%SbVL6>QGGiCzb+Th!C~P{ZjtS?=nfgT~S_F90D?p!8c>ze3nKTJh zc7fK^w`DOo;#kn)7%IIYW49a4zZyk8Sr0OjMitlOmAeTC97-VT2hk<7eORgI<*-7l z4Z;HVoHk zNJ`Y;6`hyx5i-Oz2B8($OT_9XEL&Q0r&jmDrSL&%;6lKWN~0?}ML0)ANmSvK9aFA8 z&U0mNto7x$%Je-t*K(#xkMR(Ivx6Dt?|8ANW_;8uS7yyFDlPrPIQ2=rO(cm0Ho;@EvQvPuk<4SyJb+7#cANhGz!cX#JfUbyVht0Q7V? z7dp?QMxCtfkJr9CyK1HCPMN9;AHmTdfC|Wkh|W^vbP~Pd4r!KowK2jY z@?n&p0r~=?esqWyT{#zb8s`BLn;xO$r6P)Pc>s?$Cn| zvrg(V5`=Dd#auEF0YJ2Zh6`>q&0h#Tq?{UArH3pae?d(vPfib{b%;AVTBX!Ml~sm# z{HPt@>0Ou5x<;9hW>yM7dmRs?o{*UeM=i;))go_g%qzO-r3Z@UTc$4Xx*E=ibuu=m zXg}%Gp0a?TJpKvD#6$0Fprv6LCGgmgiN95fg*+iTY4|sg*!l+$#z28*(K*@BRQ$U@ zctxh?DBj(Jgsg7HD5lgV7-iy2H{n#q{4mP3K}oJUCdkPgHAp;w%niu0SSkx9p{Iwj zrvs4^Nd6Q74wE{FD6voXhheIL;WY0Vv8{P&*d0o_Q2@-+_X5XBP;gOqS>l!@Z9K~G zA39UW)-)5r#sW_wI$6qz^Vvy+lVJ~g{1T%-U9Hspvtf;?HfQO`w!}GqzR5`U%Q~}J znh)kvOi1|ged((+W@|O>O$sJKE~6Y9MDAb>n0~W2cjuw z*_fcUZ5+o#T@Ka_^SYBm9*ub~A)cHNrS5j$?rr-g#`&R)c$A$an=3%FLi5ZKwt&n* z6tQrIL3c1-B2^uj&@dR?&d@MGD#L$wF3w+j?8GVpb4U@&N-lXw(NCSE0Xk|_>W_O$ zePYR9kc{C4b(xO0j&C^`1U`5xLWN1q0uIcH8x(|e99%xac{rj+B79hkCAl+s_KG+( zJcK3FM)+tp1f=1PZUKt@iBq6R3Etx4W(?Aw04rd?gzF0>fF9Y_=AAL6Qy{&_>AzkZZd3h@?d5%wMhTQTfc)H1^%}=X#O|^pWq8W=(uS%PCR)mHd&!7!LLh`p zdkn@pvvQMJ(WGCX`J=~sPayvV$j=YqB!5Sp>s-yLR{t!DE0(G7Qe#|LrFn+5FzXl9 zN5wCTkIId!k1Dp-;scA0>WmHhZ=P`_*U(lJH^>R#Ti+leNS`7x-1`K#MRu$BMp}LA z9wAQb-XC;~;}mIh>m->xXp;DK&UI7+74MbYV4Cd3^41*tB^}$fUn&ec*Pc-$JNHcO zk?Z2SXy4Qxy!zfz5EEX4A_rc^h@c`$iIT?7Il4OeZE0u(X#li-lebb-jXGp1Q zL?#-|s*88UDdwhXp_4ZpLol0&JONoOuogo$ANU~{l7}4A!@YSwQ?kJ(p^8b)x_D|q zikW+M)`66X*LfQ>pV#8WiYbLB16!EU7&fGfdHC4)#E*ZbuEDT3$OEjmdnLdg4Oqj6ik< z%4x*+0Ccm17Yf;lX^F|AQA)Cz5C+P&VcZ@Ii=|9|I7?W6%q0iP#~LJ?9=<7~#?y-m z#rbFwpi~$Yn zZ1cutk5jipaTWJri?eVoxC-5cO%GWM#3c^AbGYl4JLl3@eLB*>R;YHAC@_f>d~4}0 zZjp`n6n(ESFv-0O56rLdz!hgK#omR-Rw6GCFXPY4Awa=*K6Q~t;y+EDu@+a6s-JBU z4KdxtQJhT|<|rjSe>RR%0@v5gQ4EuPp)yvY);Tyz1&wYouA&CFaFsa+ug+Q2;C9Y3 z=lFHGi-IE0UFs;*84go4*d)ZlabzE=JD{nrlVC)bS#let7g{;Bfaa)2@+aBG#56Nu zSakgjd&IaEQBLAJGF3%*Kb}6)L-K^}R|89--T=$XG}iNF2&e*)Mwa}nr0Wo-MjI9W!$fxjJ2tyi=`M}aW$O&&Nt-h z#wvR~EX^gUT}=j;^OLM2w=gaY49CY1J*ZQU*R+I%c7>G-`4Ty8(pX^KBOsDFqT|t4 zd~@Sp$1z5dWUol0Ot?XsC$QVTYAQ!KO!`aa1`oMQnv*FYH%FPPAJ5)GNZLf#hL;< zjoCCOHjZ?96aghNuueq!$OYl}AI`YU{=*Y&HUVncOBDrX&?zycrU{+2L-r=1 z^^nm_EaIj&M~3v6fnWFSVE&?Kzf|cqWFkqKT3NXAz0TKqFtL$LgXt_y^pwe{=fqsK z7t(039!M_H$n{oHPQhH`U@+*#<7qEVD^%3-A()``j)DlT1CWA8&gNn_^vDWT0%|ah zdYWHhNo(ZSu)f!`+gmCwV>C|F{_St?`c2c+#@i~j6t-@%j*`Mj`A&r_4q{6%o{=e= z5@nHT7o{l8=icKNw`7Q&9vGBXA(%1)rvQIZrFf(}YU%{ahDaO+{fs4)bS{&5KAa#9 z758BFJTvcP6w`w9xG{m4tYw+m7!!iy(uVp^3-R;fpGQm zN_R^-Pd*FPpZ}Q%4!_QBFB@qdXRrLc;jmNbaHgC~#l+CnMcymW#ghT137;CCBfW&x zmjiK(gPReAc^i-uudiVptZ=fn>8%mHz?9aE2+q_~RvLtZsT7t%^HAeu>A`w z%xpxqdC(xH{JzMlwPqlG?X_P3vCPCJ(fb<4Sc?Ym@815w;Sn5EzvGX)@FgB2%<#v~ zroX+t?f)s?rK3eZ5L!3-WffD4bpB?bHVu51vAe9gr zp%)n&@9_GW=_ug5<7##yCJv*z$Kx=VXx^u|G~50Mz7tE+J^1lhhFAk?H}$OE&}j&A zW+E6LXB0yT5?Qpzxzk0Y*+6k;L?GW`QeYCtB?y#H<1wgUA44tAwV9qP$^{2^E<4>u z_o_qs745-Z4u&YMg`r7V{A&nD|o-9on&+}$VQ44W)3caT2BNF1(Rvi zr(iM({I-9U=uw`P&;$Id;O&teD8whVZcy zV<6Qa*SyyQw&+x)2{FQu^<)v>$Kg9kJe%|-?bCKiRB(^zNpF$(>nEK}M8Z$aU#0d2 zMA2?{T0bNkOfq!Y&-lP#Eg@3~HBU)E(hqYI#~Alk=RB~T1(_)We_qR?Z|ybw`hSqi zQx@je{y&D(H_|GJlivQv?evX07SKGCo*<(349{G(nc%y8a@-7qTRd_0@aSNb!#pN@ z`a}HoSM`Q?b`(G9 z7ORQgYDAvbW;9sj5C4P5sV=GWQR>+hAZ6IVvze2lr5O!X`s-vmyEba_3gKA=63b3h zQ9CVkrqmd)X>F2MoU|G>HDykfRv{E|?lwz`r(OHd%&39X5QVu!W(v(&pvAR_P+mW@ zx3(U$CPs1SQSi?F=z%rh^m$J-XT#75(6V zq=c)c)AgAiekU|0PlP@RlP!sb(D7Y3$ye0P*1XO6O6n1((*4$OU{gW&}xJ> z&<5FnkJ8=r+A}~d4O$w#g;5d{^M8>AYTc~frQa)w`(ez}#97Fa6g0l1h7C5=OQ4I( zjURzlAN}TIculwET zU%Fr3i~7T}u^5!xETM0FEvr+>P)|*Tq?@}?5R7T)aaz->5C-XQ8%6?HFYV}!FbA{I zLA$6RAKO7V#hTghCzfB`J9^3Gt{<~?+cj(Yeefx|pWXLngE7GSIE;fq4_y+n_RdXp z#U^Vw9q#TC`5YY{?jOEEdkIy4Q~cBu33|w=Ey_3IwW?AYwR}uDBfs)on&6-1!0Zqx zdxuL0L}V3M3euVmI-T@ zgkjsG%w1%pz+`Y58E0$va0flx@@fZ$Xr+19d+SSyA#(9@?ilNZ1yhuPx?MkVXCd|M3<*y+q-3Pyg9%f7_nRz%(Y}iF0 zU_mA_^CNU8&vTi0mCU??oM$Z9vZGD5W8*+Rz%*ZUAb;RXV`d>rer2NhIf{oe zQ4kK<5t$f`RJpPnI=4NOgxq)APcGFFUuDB- z+3gB$2EkhC?%KRVk$O`Ge#z4{pECgTU*RNHch%8II;8-IjX24x%oYK?5%zB4*+`I6 zATI8-9%Dr%QS#bZ?}93+Vj5p`5bL!7A&oXXa#c*hVTq4%IG*X5C~}SY(_nJT*8{ZE zsB4iZi*u6kPervNBv_!B_0F%(n(fwc@3isGRV3p=%dE#G>sggjcLjRcF?KZC8qMxO zuU@D`SiFIHp%n<{WJ`dGtkp7h>dw0jrbADeCRU@S)_56CgwQ{^AXh)auJ zsUKw0FID(rfBVqCBK7NnUO&c>{4NrVo&gIv5!Uew{$D&14tH9z<1}}6%5Gbf(FGQB zy>-69695v6>8#N$6M$?j^(!$eY)kuEFWzbMLaDx;J);-{_2I)ZUZd*!K77d6VDPEz z7wZK2;bL&cBi${fjW65#PMWw?_SB{AdD(4igt@!-a(f5lp?9$%qX8- z#*r#b@4AlCMx-2mMM2MaBR@MbCju(Ws-D_n(^82<6SA=>0OP#-w4Y?I_4JEk?ezAsX)#RIw@+$W&0_<- z+?39yR+w!B#4p)tLci`+C$^GNMI!!@VS$m3l0cf%=_C9D_~kH}4eCz$*5wtTQjVnF z%@xjMyHb*7lsCQ6BTizB^^`SbQ=I*&Z<-csYx*1%IR`$WtAS)Gn)jF;1f^G3WI5YD zDb&K>RrA;9y-lt$QVx?WMrQluLsbthHV~(GENh7=mguprt}(onBxyBzdf-Tg=SWP* z0|Svc5+;XiH>I0g^&u^iFd;`*aREHCIx%2?uP&sK^U(<)s0ov44@t71U!vHwFM3B< zc6tM>GsV}=P)D{_LSTrgw9;!Kqay+C}@0Xkcr2~b62d#>Bk-@?AKed@rcoe}WjS}hpV-yal zDhgh!hqpigA5##Lio>Ewrm$uxrq}x2HoU4ET78092U}-_RACwwHfb97R(uyu;nE>o zkPOKh>5UE2LZGh2892Rv3zCNL> zLdrEb-Dt*<1I^lSH?(8h=;X)l3kiji&C><6%I!7s-v9ID+}AU9 z`K&(ailKrbG3~@fNaaMSl$iNGJx@rs!Mh$d@x>EwHcB2xc*Pw3D@1cI{>%p72hQ-0 zimhbbDl%5wF)1UkW-K5s29u#uBg|bfupne!O5>_&j00eGKKl@0WiZxOfp>1|u2cL6 zA(qnKP9iMO?Gb#MNe88;*^qIBx8X;-dxusmrYl)MX*p`K5g6dt({znAR2Or2W7smH zJJmk8Cu5ga15l^bj6HiAYJiK`|3((GLE9I2HY z?EQ7b`tHvD;YJbTRb75)x%xy%@u@kvbrJ6&^0ULJX(ly zwM$?z$4$9YMTsR%WLIGk)KK^VMAPtIKFJs@xb~h>U$Wi-a*_s9ejs-S8D{P&cK*ia z*z`1tTsT0jp~u@At}cE%TGKrXhCGpCf z_t&5=f+9)RS>zEKvQng1wc+2;mKF?evFY8t^2~bqYH!oWtOL-k>WImX;vt1~E@TtE zRL3L~w1H?&&i#X4DfzRD4}V=wp@o@>YA?7f%JEXwPSdSt0uXW4s$XxatTn1ELmy^9 z_oI@>c$)j145?=mJ`2Yin@Z_anQs^Yf=o4q*sIJY{5jc#Hy4{QL%M4Reo8jsJJ>`K z#S(u=Zx|1@chkI>(m>+eBIbRqQnERV2uN?rC85wQK_s%_7<*0Y5q?DidJfgi-e$DGPGBX29KWHx-$(Qa+Gx1zd~a9%vVX@>KLR2Oz*uf~7fxd``kI!?x)w zD1?TW(mmS;2(8kzV>n=t#br|z_rz9QCqk?Qp;sAf*(X2mtv0qSWV&o7_EmZrd3kh$ z%DULa9kEG)l;Ho6hNMVGT#?;MrSdUQa*|lbN#+NRzs~#^1eqVEDT5bemhE_wedS-- z29|MtAM`~S_@_&dUI7aiGGQIUsS+9|;+Xm_@PN*4 zzF+$rI_Y47yS2BdLl5DwSBCWT3R%>7!8BG{u_JbQ}0Shb!F=_=PDz+27Dd{+sUDc&1PgTfOLRiZY ziRhArJ{Jk;QkiW-vRq|>I#U_hMHVv3N)Y!2ftMEK3BVy!O*O6CG`I(26Qrc9f;4XCqx2(1NtjlQWa^NN7lWqXcDS zsz9MZ>??EU3iF>wNK_Xc_U@@qk@zB|O+<^HQ$HOFH#M5xuR%jgXJTwL?f!`_D{Y35 zH2ojxZ#dq=!^5@~%qWVfQmj9fg1_TynBUk5Zl2J8{qkh(wf}#NSW21MU1X2pmnopq z){JkzjduS3V0h%3P2*O9k-q9E15)2n5^q9tN3lteLPynrIw#qcDRW~3~E1S(4*P2JS zMypm%BeXzDpfpDlz5RQg$wPB7X&i!OEc`?3opD1m!q5LvfyIBQZ@x8xxCrA$bTf^v z|ERz)n@(|O?eFjG>=?g`NMr3M9Wq=u?UXH}Zu3pWUu(Sfr0bXFD$!;9ko(ff+fEA9HUj?p?IG4_?07 z`Suw%_ui||y1QZcs`R)!&+a}dBFM@INi{;P*_|TbLS_K+0+3Nh6qiPcg>^|`CINyd zCVN`X|MC7b@*<2(!`7yGol43)rBoG>e!*~CY3*7HUdjY95e@_lEu2 zN9F>GL0C_fKh8#Y*JaZkNU=7ASGtA;95mi{PTp_^->r zbuJo)#dgm>P8aEfA;WCzS~$(Q1e8Lt*j|KmM~Scp>=<p9Km(wOEXR zCb#$|g0~e1GZ0~u>=>b^dOS^}-vB2H*Rn~FAI?KO`Av71*X+1r$TaC$Jk|C`8b2?C z954fcwv{aOQ(zyb2#GqaF<1f(W zXx}@!!5?>a)RsXd5&4&ZlYN$Qhu*eloi=y3^)wA{F($K0&5JyL@p5ph77 zs_fl6Eq9?7ze|N%%-ruXaG6ta$QJQrlV}Kb5ibgthtYVx%AHSj$whAcAsHh$mA>%D zNz|yqlrfc-tQ+kRk$L~`cHbUu8yPoLetWhvpRjv~NL#>;*}x?afyp!|F7KS<$F=t) z8@1F$`=s};hnNHxy3Wy`=4a3pwK3^Y} zg|Vq9QZf~_mnacC{v$*u@6X(u+3G-2$l?z565aHJD$`Auqu!sk;zG6(W*U7FzV~Dm z1Ws9W49f_36-N{yYR=K5hXIBCO5at! z4=L?mhQD21o;146-up(&5fptA4d@J=jR!KMU&XJLj&gPW)A_{*46kaOcN)jt*2THQ z+ZQC0=@bj&kkKF3}tQAHhusz5&%ta6`{ za;DXei24ds0S6vs!@r9GNFxl-S{)2%YB;vDo_ioy5QbfE14`MT3o*rG7pADQqah7A zO9S{d)*|SJgFUjj0?9KXmtIE8B~$_Av*y`F``04QeKnFEO;X|^TyeD!scBalt9AZ! z-&X00&&*s z@x8x(u+$#e!G1mO3$1tBuhnJe0v70~7|Ie4k%|7?7EO_W)Dz^~9?}pq5Zsfyx{uQ= z6qEctx@NQqKaHbF&R4^+V(JrAN=)K#Xa7-@ayQY?XQ1ZO!?tMtsc*>PETQz z?i6+!j2`JSwsNl@eu6E!TfFs)LTjX_L_CfAah`a*bcL^@>3uM+3>YQ|S>G*Y9^>hx z-a7x-I)8rw-4=6@{&;4KdDaruRp)?bV#Hz&1E+R0y#7=?YUpg_82T3&x0nfyRY--+ z+evLr_CcsTaQBxkj9kpErk|$5hLKN0$Wb#Ys6qFcRGvk`Svc{OEsulqWS2I$+Lr)U z3FEkqKlNNRr91C@nmU`=2PZ2rj9<)VlG(L2NkTeunlh^5z`yJr!m!1>Xq=!`spjF{ z>YSXz@m|c3qT-(QAmyO)$Zepny<(nKiLwoc1Vn5N!KMMkv{xqE)ZllW7MwwQ#cU#p zZhO-2u5!m%_hWspm=F9GKGyH}68Otr@h*3-!lp7Xj$iHVS&x=(V!wX7sTKV%ziuB9Vw!%x5@_vdAj79ng>8TH3aJSO*xnP8EFJRS$f1I<51c{Plxk?wCZQ z-)i$2Os~9tP|O`2>AcOjLbDJ@<`osM>!tC!OH1NiVV5*6LA5<7X4JtL&AyhHP4_G_ zuh^oJZ{nGVZ+M*v0=x`tWRI!75i*k=mqC9Jr1iEkH^ZN1B7tODP%C zA-i6ei9>ppm@0KbN4KK@1HpP^2h>y4dhWKE-EM4#k5)UuytF4-RH{V6SA*8j5St); z9uyzHqY&)~xj=1~(E%6hI-2%CAF3{biPDej2gPTpE<{;~*J0l)XE5GEWPI}DF{%d# z#i#Y)t{-7RfZ+F8y#?C$*AI&i?Ykhk>y>jTEAj-H!5PF9?L==93~g*nohC>n2uKK% zd;pRyq*!keVj-l^r59kPSn7CU%%n4MV8>y5Jnev*b66}&=u+tn1G}9I17byg8s~Kr zPZ}nseKfZ_IKN#E26*Cr6j;P0uS87xu?45;VTnoiw}M5HLHUuD++5q#b1=mTW(54# z$9Tp`J1mK9wAgkjpsB7jUo^U4SJ`JWojP!F&W82FV%=(lDT!+f-ECr+hsC^mf~QN} zp1X}xQWXx1nej9j&Z8_Gqo{aT%q#nYq`tA^^1Z+QZHdNYCao^+@Jif@>=ZNK*<7o4 zg(t@DPBHhI&0$gcfjchdEw^)Ye0AQrL}_7nr&!FNjnH9Y4oeupT`YwcTOs601pm{E z29-xX-QUBJmv9Ls+*9{$reep~M+Z3e5^OJG?4yI~W8+QJPBH(eG&H*VR=1>HwGLk4 zz{SiZoJ9w(Y8#fJb4F+}8-UJ_0DeG$zv}ymbor8^M9j0CYq`VAtrK|Ckd{#}@>deE ztq7fXn|(s?HCm_d5JhFqLDBGft1bh@&hftHu*^>=8V0pHziPLz>oPty-&Mlg z*9FIPK~*9G73z$J;%(gsTFuxl@dv$u8bamF0u~dzxZ6l=*aG5XZ#2JItfJD*+qZ8TsR}E(g2aIqcxS-N z)rAQKwCJ-*!nFvsH^e0VCa|VJWl*j|;HDIp8Pli}T6U3YER$SBrNU0(SFv$g=;6`! zE*9#um6~p-WVY-Pu7xFv;$QzHGHP?tU)>#*Be*e*9}^2D6_rFR>ya4il}$GyLA;*4 z)q-}`&_8~N+->bGWfb`?8DrT-e%K$cDa=u%DinwH6rRrOpEmsU^^b8h*nqDaj+gJ(-hT4} zi!b}Lu}ZsZ6vx;UK3r)k$3ZLtK&hg*pl1kSry>Q}^*lVHl=0M-m_`*u02WeW#%A&^ElEo@4t6VSeD;w zoSwdG9RJiizBs!)ZFZX_d%=zXC6iVPJ-T17zwfH@cjG~__VypY&tepxus{!g zuhj$0>>scntuIxZAZX)T&9M6SNC2O$V|@#7Qh>k6>I zwqUHz#oD03pJltQlH`iFm1PoR?p;bJ2^%9#&)yqPKR=Jw=JJe8+Ll{$`7FB@%Jby6 zB#vCLN)`CAmdIibUd(B??n01eCxZ;Hw zhl2nOn_oB6o;-@={kOt;Cy39#31HrX*TAKplQ+A?^%Z9}x(C6Rv(&iIIhx(;g)cr2 zS4C#ZT$PG5)?A8O>}oECSOrPT6k~<%^Fyo(0Esm8l&r8!*;#vg;}B&vB-W)97`rD* zHPl(-`)KX$PMKz1dn`1>E`y+R9sk#VIVhkQB;8^(KWAU20nolhmB&D}ZT_TNU7N)- zZgk61E>FuXM(=_Q!o?*1d&U*7MpL7%RGvx9O>g32cOjDNX+3-vx>JI?Ih$I?eewF1 zh)_Brp2*5l0oNOL);BK=;<_y{}#i_EcmGD+br1j-; z!z?2AE~p%Tw@&1##OeG>%r}3|IywIW)EU1}5U&0Zm|!?e>{j$I$3ovYKW?6uXtGY} z{PWoO%W??bZx^KMP2kvZ8T5!eRKCjDpo}58qTIw=Z?cZYkNGLByZa z5?ke>y#VK*LEm@spS<5is9h2D!#aUW{-}l za>4Z)CGe^uXXe(S;%%|?f9n$xdxr6*w)kRpR)-?1h=bL?p$oG{z+L2l}j}F z&T$$2nT@XfbjPaQs_d@wG1emF*A%|WY?vfS+)po_4`)Ngh!_LzIUI^;~DeUxGJi zRL$&R$x>PgAIP6;3y4}3oyfjcj^y-~H61HmWa_}X%K4mk&tLu;lz2~+ja-1ayzev5 zuZm#v0@=rgTEg5rfX^43814LyVqBO-D+Dr zrb0Er080g6_D~LU0S1Oi>ivkKe{LRA4Wx>&zM$9d67R4)Cl#LszlF+we@QN@+=gm= zEvSJkU^QKYJ7~Mf^`hg9DL%%FN3G^~Uf=Fs$tYCK#NmvsShh4(gM=z-UbzY_g(uk8 zB4{>v z`Ngas!w`O(WtaW)^M@~kH`q|tNRrt-RmUV1ghbX&AMp4Q{+hPqFxb&FifHlpD@)Jy#9SY*6XeNk>5_$8Y7-R^0!3V~jQK<8$;3W2V#hOVNZS5eTb zDCosxk5v@(m*Qi!ih`~Z`M8RLUPVE>4S}mD=!$fgkcEG3T=zp5O$M)} zIe^GWvR~qJ9M?^D1meiLvFT};?}~*Q-B$}&{=6J)v0&vYEMoo`Tm>DM z2OU=;%UrjA@sMMVS+BZRpLD;@5pg{KZnZ4n@)XHJq&`uc@efAg50!O!iE+kr3bm2U zg!4IxYzbm*!IGAR7Sr^fDyX;!w@*lGbojK}(kXuqva2LaOsWeKU!pKkwm@@>5^lUy z6BD088kjtvFide^QEcP(@L0lP{YpmC!LSRnBWinLJ?a-KY!Xt14opCHplRe^dqLo=UN-XvU~S zQeWYn$=ut?MsA<=E~OzeQwCH2?*r7>jlabWi=d{bzQ%T<%!X%Y46gfl+;EY_T*CUY zVJI;<7H=vWVSUc4r=ksC?;5Iz269(Y?qUBL+3uFccSj3nyyGy0uPyDJ3mMOu{;oDP zXE)FjWW8I8BnqFunlK8Vl{~tzJbLuh@@Q_ERwC)wE0V%zC6%tE(v?*DwMeDQ5~hlrHu+3RDZb2^85tH?JCQ2HFEn>mu!{gc|obb$$wT^o~ub8t1QpO6uHXs z?9g!k_hos0CQiIc3%yDUy-ExH*J38Cw9sD-M=CPBt5A18vTaTZ|Dl0g`Ck3a)P+?XIF zJO*?*H6bT;(7Oac75ZGCmqK!4HAy?TF-Q|>8}YKVyf&O26~JJy^lw0o4z=}n!j|L=bhHYd9T~P zYR)r&ZLJFW-}d4Eyy(VXf1x}{{qMi`Grpl4-XFA=WVoF~kr<7Kc|%Pc5Z~$$lRsh# ztb#J%=LUC*0Fv0BZ{h!kf|iM=2mf8Qn;Z1vABw{RLqCmg^F&5zJRgvgP}4u@fANUV zzkd=2L%wh4`}jX=nZlP5Zzj(9E5Ohc`q# zn`# zEyj+euU6ts@Jtd|@Rv7U2FqjM@z`1CWaQd(rvd{8iJiK9;-ob1KF}#4Y zgEu+X1vd1t)i!1V4mpj!J*~OSFo=)>IgX}LfM<^c)dNsDPEoE~lHx=HzA2hu7Jh(c zgv?XS0NK9+d6hVSDT(ueu)|(F8a@_f&VOd7fv+G_^vbVc@wHp|HLUy^p28JN=$X%3?03yx1t6MYFB3_lAb8HJQ^zbd)+r>E+O3e*2HA#b0On>owN8#rw zmq*BuSwMuV!SYYWS}0%YDOs)Fn1t$c5y4_bLTX`m{?cP5NLuEyIVzP2_oG#%veHUr z6$v`m@n5`FS#i`;rStrA78+T?Mz<{G@^qhK^gdB3ssBcwwlpWdOzE}6vSo|q1{G&( zL1xTnp}S?I_bguDvKnR@BAzP2XF0An?5uBI8vKi-=Bt6XLLyx-C*N0>jxT3pc*Zn* zg&I}$hxLMlo>|ZLpAv|g3jUX&*xS~w@fVC%Iz*=^G=x!TQsUoC;(IRNgh3EV=yzeO zSsecF;$(^!L1oVVMzjyQ%6BzVQo(O=bi1^BXei{DrGJ#2v`#iln2ydcM z=<9Ku>z_9K^>s|8vH@Q=953hmCoN%P4|fshoD|bS1>*;?BSJ%lv!xp>CnIR7T{1iG zrfMPpd)k<1_jPw2tj4+M7MAdCYWFBrvz?-Dm1L21#(wg`mle%$74hUGm@+u3<+`W{ z#d6ZEI86nGCIS~QUuyKqXrXxW3Tx-opBeP?m;zycL&hY6$wYr?=!`u5o^~1)<(bOU z$VC7>&onA{PFiOGrwYdjV#MDh46+8xEMNLUa#LTNU7j|(We!UAMI+G){y)g1i$;aA zX!a}D2)CVP6_F@z_%hlin`@g}}> zw6eSSYE)e3CO!+2Q@@^HD0q%ABA717F1jTPl0VN)8M} zMfUIn;scNWZ1O{u;YywPDp7TH0m1@PsRU73iufFoL}gpumnurkx8GJW%(7B)`t8OzdNcAdd2 zm7p(Th)>EC?bKA)-So+~#T=}0p?xuVLO;_Y?9RC}mPa!Sc`FYJg6KaF-7Mg)T(nG8 zsHZmx9-fGTitt>c^7BIO#{|P7&d2?D^f8=FF-y;#5wrlmOCb?rCUr$Z) zRf+ME6{t{Rd{r?#$T=XdDuz4R+bXkmAw{k-Yv&aBzi?{N!pz#MMA@Yx*s1_{g)XXd zuT=r?FOxUq3xKccd9UhuFC-6CW;jn&&-)oNfuOw#Lrr?K@w{@}V)^YCum89Vqj05L z6c^9_!}lRr%b6w1I=jQX)Twtgn^CY8 zmne;3i|<2DR#2&Mko7=5j%ULG*MP;q!h|wvpvZj}4#$2pz#@z{kEzY9%2Bak40S~` zRB=-KT5BxGq#VyJ0oU8F4wb4{2`vVoT1fvKCvKG+ifRUWXV!{Ufrhy+>C>EEpD#n$ za?gn`$c(}TELxW;VBxdYudpt4@m8{;vHp$wl15(AHCr`STMmw9r<~Udp{CtqWkg%R zh_8pi?G9~bseprUL(J1cW`Uc|z21Kcy1_V4BuT{J?JU415ETtG{ijfpQDEd6K%eMW;>F!YDPHLyx_v1y&0C;oLfeF#Iky^JRQ)hNPjg{XdoUnI>)V+FCT3CFzllkm-pdph=~p33HICY_jYz(`9KN%Npu|!006K3{@6c! z_3h3U{LdceIn+`d!i#q#5wqHbd>jrOugYkG6^#i)meF#R=gv;+h+QNB&N9It2uJ=Oqne_63!ue^J|iGuxN`a9;t{&XiQa^O#dOw#|E}6i(ch+TYx3^mhpUck zVeO=Ke$wnV+h?uwMmOyXcD22+F{VsjN<0Z;6wu~n@T2KnFl8HGDPc{ z+ZK4^bo$sMMUM{NbibMuh0mCx(3D4i7SIt;iNtN-v)zxu6yyUOF&sW_;f4;TKrcQf zYlX>pB6lZ^Mk$AYdc<#NWE%M4FuV_uH2?)f)9p%=%q!cjS*oq+i!H~0BVCd{4Fm@N z9?5Q=5Cc@C82LWdC{`J`Y0h$Q!AUR;CvY-{)a9cu-8?09*N@Z{$2|MD5eOvGr$$Un z5tj~p18{yH-p7+ikky$TCuw3g?i4n3hDRnunXq2?ifRWi-UPED;Q29`hWGM$JlUl6 z1hIj)z&$;XB=1RQR_LD)Np7Ce^^m5A%Na{vpQtej1}*h4%WcLUg46xgw*Ot=M}zOz zj#(^9*50DmrTpu=Z-Td}7;uIWK?sQCIOL&;xJPSOgcH_%Hn;r-{^?1NCHyytM!e$D zh!-0f4^e_V+(u!@tPuDeOn4freN0{B=$n2r!!T{?$xEjT*qDuhy25}CMn4HBNJpFU zlr)$hC-F*RV0TPIu;;_c2*elO1enT?sn65>P+0l2ScaP$U`U|R z!GtJ^{Gzk%f4Bo83-p)AKv+NzFfBx;O62QBQ~w^JyCx5?lyJnWZw%irYKfT}p*31; zQ?5wCs~|ND4e>$B0x&+y4`DL;&nclAAwl;s1cx&ef`T)f%Aw$lco!tt;qY@~Fn#A%65ND5MPh!cb=m^2CZb`8yHe6oaz~d) zq8(Zmkx|{l1S3pc$}c9br59HKV?U_vjJQToCPoTR$)8`^_Iav=Jj#Df>1s`>7B8z% zZMrAEBG9nu@xHw0MZ5#W>d{;knp+>lYhWgT16~@vtB_bbqt4t0VdBC015~bNm#$4G z43QbauQ%VX{Y}tXYZOhRV7T^HsQtlP;fW4Ig&=4T=ug6r)MbQj3V(X(CL%_lZ{dh7 zxpIHt3d@dfq6yMsbkFXe%)jwI7gM_T;v^M5g?P2AgecinG7Tovgi>GyeFTi~DX59; z7~*gc-&L~si;iNhup48NRDnhxh)%9?6+tvbpkW{MfD29@*Y`Iz{cpl){~MHNhab0L zhBq2>C7?#k#F4Ypuyp1FEh&}4?;wD|;3I~&3@9mZk`l4neKb;4WaO)Y*vq|2-_JNCdpe z{8t?qFvXkMP?9MQi=3>FWaI@bCe5yW#wnhILRw;04o`uFL^n}CJ@J6q%s^=R7^W}v zaRo<0`0%u?uu0Ryfl=6}z8SDSE(7P7N0K=C@%U1S3wt0g?D|)T45?a5j@+0{V?501 zoY1Qoqy(>vOorNN`g*5YCr*|SucRkL5_}cwyXi?OfQ|@>edPJ~!GNy9vt*g>!$~Mo z0n=NX_VoImL^_a9s+?uOM$(es8D4ean9gNAHB*4PA3tp1<|UC%V?ZQcNs(XBFtbfR z6`^2x)MkxA;^egu@+9m{Saq%mpi$LiHX5Np#cPce-E7j~oZyKA`X%o#A%&TTkUS)& z6FM;|t5}~-1GMa*JOx5coUlB~^4KkqB?{goFb`9-p(KuSUy2uAImJDZC#2FNCv4`* z3$SqlOt6g1L%f?pYw3~u7#ZI9wjx=0!SQQr&<^yUn^o4m!AFOxf#vcD}Zo> zQYsqsP-yZ4oz7F$L!bz|#C+hRBmpkhzhkoc0Ln%Dka%)e>Vjt~7?@&`PemglKJSQP z1c~0opegxi&;U}>t$c!D-U42(3h>ML6xu*^)1Ksc4AxPDW%gvE_@dlxTKMM4zgkQ3=e!09$Tv~@d-cDy{q-p4V? z_VVP;ad;u!;CX)?3Wm&B)I?Gpi+%^s9C_BL!<<;MVh)~st~fPrw{>}3$)}bBYJ(^! z)2%ucJdzUCW*|9(PA8rVTOGxzA~q0o3Y>3pJG&2AO12+#Vl$#tNQZ|wh19Xbvp1Dc zBws#mnH_mK;rSR_ti1(A4J{V}+CkhWU{IDeSkAt(I?$dVwbO4SZe|FhWI1yX@I-Y& z4!ji!R}r51A?k9GUq{1ZNc;&;B$SgQfh%FSM>0cZGKxnex1rc3k2c^~c>$0YRFSrg z^&5;wa-23=PdlyiA5^I+J{VvSYx_?3>Rry(iZ(E-YAOs0$cKVHi2`{kR2;u7WC{}p z60R%SbwUzi8({?K0C( zV42{i2rh?ao>N53(jY2iipN>jAQh2-IeFsDt9P_4!176K8V7J{R@^L{&@jj4RX?2m ztzcWdNQW%q?Tmr6t-9KnOoGSM!WaniA9_uci|mK26xfA`Jx zTj4t^Z6!h&L79~DBMp?oZY=t3I0C7BsNK|fw&%U%anx5bfaK|Kgj7zZ0ogqZtDR{HdNmI3!~-8~sWAp2lOLI7UR-Y)fX-3)}eK7-lVD?NQc? z1a$~*m|90rKbnmQ7|HWt{BbbBGkHh@i=CVu+1E$j_TGj40Bvh>7O9z;F6U6U*FnSc zIZEzPRp9r8ypXm@see#V#`V0mMGv>ehWi1QJ@`GV<^EW zy{v+tXCXrqq?KrFG`6E`0st9buaF8`X}1fCIE!o^VWmx|LM!@fwPIZ$>J9HgxT$F`J17tm?gEee_pB9KU@ z3vQ5_N)5~gC$H0oaMM!oRA72m4)gxv^z`Bb2)8FKP+hv6jM{QTL!$`br4DJZzG__D zEttsr7^Mi>ODFj4jgzIFT=dQ_oa54M10AWThRfqvyAz>Xr&~CcJ()s0Gjd8)Y)PZv z=zxGPsU4pDBhh(o3fg+;bmgdc3{K)0|DfydsuH}zWlFeD6pQ85TuI;PuOg5{UJ$Ye zapS7aNLfM=&9L!!YX~?PdV?7AN+oX$eNdP&X&7X0*KgOD3fBBq#(y?%o;v=!YsLl z9xH3O&iL(UZ9}`tGb`DbjId#FltY7~oRWF{JV1BU1z1Ti9>ZZpI^VN$5x#8?sgznW zySa%zNdpyKEDAp%?>fARMOj7TY7=>=xHSOC=N7UWmms;EkkZj>oPKEh+NmU1>93JQ z1VR~_Sx!NXYP@Tn_8RZI%{Hmyn#WxAzRs>ryRA#r8-r)7*@qZ+jQ#gbvXM`v?0T zS;nySC?0LGpLN`yqVh@FFz!uYCFm#^z|Rxvi`}>l{&QsTA9kxUu6vU(YcPQkKnaCK zl9B>DXyUP%IwlMKl2`;QghGquAv8;5&OJvuG3hVc{JnhP_x#%GykN_Al7QK$;E@Eq_goth^Ji4ZV zCJ{P1K8$2j;fM>PZ%UVs$J8QPEtbR#BAIK)N{^?Wx{6tns-rq4U7<|fA>V6MbjVjD z#Jxx!t)|}=85++QbxuV2fr@O>>rKGG8i_ zjT9Xm657@DW}kLw66*fiIT7h_A4a_)Llq%cR$tEfyAf%NkQu)VoX}rK325)t!QsZH zMx@36}JLKYF>lz$Opzhx_1DbU(ZA z%?9J%ICvb!0UXfLzn)S}H4bPQxp=s{M@x2ec({LPkf-bHgf|wy&Nes-?JC%FF3$z!(V5=g^j|-lTfy%CNDPq z(zn)MV7!%jqtIQAEh{3#>^?gXk16_nvrdCX2ZB8AfavoykXF!MJMd_f2hS6h8v zrlRqb9IX5|M*{{Tjm^R5_eluHZUP6E3gL!sL7ho9Qn65sr{0Vw+upm>iJNUq?7nQH zJsAqewm54Ou|BE|9j^3UOIARNG9qx1?J8OEQmIj7&ZAfe5cQO~5^bHd3kFw)522UeUOXTIIivKo$O{F(Is&WY% zPlk2#d~TFwH#4E9-k(Om$4(|fR5*1?=1+f$Fi}g?2Rn(TGnprN0(Pzp-yWx1A5^Za z#ryc;q?vjTb=V}7zJd`LjHFj+3B{MjWg+<`g60_X|{iEwigG@Z5^l!Bsp1LTy&QPTJ~mk z9)P;-#(C%RqTO8zG|G3WE-0t1vsSlvanvOW1Ty7ofTzY8PJ% z1C_tWsSHNv>izrHFAGDEzg??HF_=W7+rAyG?R&O^sR~);@-D*w)bBhZBK9iwe~hZH>hjM zS{=LFkZj?VZT*P|RWhN7Dpv@2BjFz+tk~1@$T~ZM=tg@*6ck zXPPmrFW!YomsAWtOc)n?Zd{1XaZ#g>0JyA{b_)NOND(H)Y_E z7GV6v?J2KWumdOFhl7C_064Yf>Or1V;q<5~36!eZePEHt}1{?t6Vm{y_u~ zij))x0kiE9g@@w+JTY9n@DuL22xW`_?X=-Qom2#g*lJ@SCpRypz0Kt*@wOe0e_RFV zI7CZlBBI0C5ewt!$#DAsqoHU6NQv=8K>tER$O_p(jXazZ;hva?LsQ%74h~Oyf7!A zk%SLYotxhT*E2ZqiS<%|p2$K*=Xo}I`7RhJWO@>r81UXX*@FHh0LI}KiY$A>h@3xz zkC^-mCUp#y-=D;6Ilcpi%E^au#YX7hgqc{_!z?icp*`xbWunL>5S4|0le)|82 zNu*JgXsgDp4qJALi6<$IpYYbmlOGTr<*&ktXvr%1jM7Jcl#zro2TqcvJM$20F^JXo zbVN`5W5sj`)hYuVnyi9}N{n_JPhl7GoeKPh(VeiT0uWFwtLx=(DxGRDY8g1x2#K9D zL7MTP*$C$}E>tbR&unJkbO;KUkxcX?tPsliT86@*#vmR^ie`^!qdnz&(S!Jfa_Kk5 zlW6Gg?duk?N@ykIws4Bz`e=KuyHU0{DK`JeP@Rq@O-V>T<#`^5o7Whb96tQVUb2EJ5gkFQ@73#XRKcEQuJ! zPi0jQI3g)PiLyC_fs{SQO0L3*QFJV_AtA^je;3inY!v-I3q9QlQ-ne0QBA6=iP`*q zB5yD9kVHyjCWBveV$4O@b3TQBJbsk&s`RNB;uc10--p5n9+1sBtk~+Zi3g_eQ_f_< z6w(4vpPs*x6e-Dg@%$J}@4o+b=kGkN@6d^D`2CvT_-n!(ayOlhUw`vWUz`zrJ|ec` z$?Z4tZ20E-@tghaoo@yp@Nb8s-c@Jq?RU{VEaGqq%6j&6Ih6w>)5l@>{n|B!!*3Bd zuXo_*NnZ^cZCeMHBfi@Cw0pQc9^I~a-@GOL|9awoqX{>Wk_-kSA6ejMC+aOU(VQgG zm;&Kl)Ag7SjlHW8@+uf#%v(=2^UZZUctoSc^nUo(`?u96|Iy8H-v~?A))aW-c7JJO z?7-*f=m7uSeR;U6|BGMuj}CVJZFg_)aBuer{@eSvo!!ITy@P-Aca{c0!DogsX1@P# z$ST5nce}FZU+L#>!qn=2mrMsyynXl9Gk+RQbH9P$lKl?2eBJOovublLsnw=_Fp`QfV26*?ja~A5nbh~iHy(MjWXi_5 za+K-yL^i#=!wh^fUPWflbeHdV(UNceg(wWl9wwW<{Y7@i(QEP*gJ#rx^er{_HoQN) ze>WCF?|kEp@54fXh_1qUh4o7`5NT{E?J=xqv17pAzeBrs zs1Ax?tpp@z13$|-`QPhg0pj+w2QRE=sACP7 z*mRbxZTkO6yCLj;JM)#^ic@;OfgByJw!Vn^& z+}Cd7c(4Xt;>7=5RLxuGI(Pt9H+>H^;ZZDi-=^~G*QzbS2L1aWEp_*QM{AqDJ{=sw zQYgtp1~=n=@#~+wBJU$nQh|iIQSyK?pIQ@I2}`8N3l3Q5i5E&124Bgo4CPP_ai4`D zuaDLt0jpMndezo~QhuFZU?HF%dnc`9&X%;{#P)|Unhai>j&lO-gh5sqi93!&a#sPE zf%F9sEj$ZBXDdb-Vv12l1sc{3qyUn%4rmxyz#n2|E~AY5{Fqk`_xieYYn+6APCy33 z?YzOW3ea3 zT2I6}Pqby`b+#@vLp6b}u+9RFRbj0)IORZUp^Gr6uQJ8a3Un3GAe}SC;HgDU!6W8C z@2d5sziI(T2c&?|JhSjgDKzP!g}~q|3KsmM1eBJ{r9@CP(1OYp7>EUGZnOeG#ZoiJ zdb^Dtn!N@Qf}n&9zGWR8xuL`sF|b}VQSttIie{Lvsz?i>Xu8J~Bj8TwI0w>66rKhR zS*r@9tG|nk{@UN-j1cgd2e9b<-`An@4UNFX-;%Y-IaED1jFaQv`S5@b7cWw!3`G%G z9m~0LMpje`T#)?1mw2*_P~!hRNd*gS5cw+F1=k%98A_}S>X%U%d}v}=WWo-7Rj^JP3m^iPc;~Ud37%)TYKrRJu}Tg$>eFmX10o zWy6=~Rt0JckNN9#9_uC%WoC(;nPxL_J*McrpH?RoClTQv@VNHy@USgxF5CV1ehvD< zcA}Xy_dr85XR!Tm?G1`>$8;YAtjs4Phe%&U&QIvhi0%&@W-d0K+DN6gDH8ELn$sC) z^9a+aWOpO~L75(NThUElR#L)>=n?_>H&Xc>Uf*` zS3a}?ZI~1@-LS==N@Z`wztSSzUKN~GL|L5z(l9P8nNG8(w*MRVKWbi+u!jlp zmvjeIeE)N>bNG_(e_kFO?(H1x9sS$R?$Pef?&|*MIX=Z#GeE(~bar#2GAKn;=?CDC z!$B~TNsNGiD_!HHve_SEKd$e9?*AtZ_1;zx33_&gYYX3#f@}&D6Rlm^Xa`;{bedVe zGm!{>Btw^1IgUEP)LoiirJyhlwbX8ItVf|}mN|IR)~TGFb}E1KKn6BfB)xhue&!>? z{7s*3_E|c;>=SiY9UwnPPur_llIhG=1j7k`m3JlU``@%v7l$54TL*O5K_r@S!va2QZ(BFx+811 zR`1d^46T`>ExYlGKPG#wya+k2KG!}n{PL@%n{yn&Wr|Tnr6_YkyIQ@Fw)|(&T)fO% z@)}_wC1ja6{}Pb-bO@6Ye;tgu=2|Z9KN-?0$mGk#n-H&8gjRTR;9)~3QigbzAMzMW zC*q!m210&eTwY9!b(^~u*^2S2O2_v?_*`WNRxNX6Cw;VP(NNxvDVPRarnC;U7|r@= zQz20HQGXWH(Nj$gU7+TemCXa|i<%fY@GU$sZu~_}OnS8}JU8WG^F>V$z2N4Un)0{% z5+VVX#WEUUhz= z`C{{vr`N($R3{e$CrjfjW1_OJMdym=*nHAE!@++pWlEx}dMB9(DAJGT$|srg-Df+= zN+9@4on$3*U7ci=PckE9piulQ6fH}nT*paPLBO5=G^;A~E`FG)DOwJ*Ij30dK&v;! zMb0xdMf-U+=Pc`-Y4zs1;E|@Ln?KU(C}rixTD@6SJk^ROH35$JG2|-eH78bk2E|Zv z$J%A~$8f^s80g|_8uxB~A5if#{f34h;j4I_qw7|}-p+E0+Tp;l5e5lQ4i0J%P)Hh< zXU~mqKCe9PjLJ>p$N_y@H)2uX@StBUM+W^~d6+;AGqVm8IED#a!#M8avIS6c@{eQz zc)^5Wg9ws*si;Wl^=vd4hQ0WvCvx(MutUpbT>6q;tAQg!E#6jnII`sJ96Rr@kQ)yU zBci6=6Mc~mS?j`H>)rXdeD7C43I46h6@8V9>a1+E*leiV z%Cn)?%b1O*|FIbCqLb>5aNK?w@MlYyeU&6d&$WtT3l>0E>Fn$JIfV;5VrQyseU+=h zHM$mDgU?4vxuRZQ^-T1lO$90&=ZvSdb5=C`i!^QOxHTVytJf zeNAgE9!Ns-xvE zBjgjl+fzFd?updzEXdaW-&ol#O_we6)7lcsXR{Lv;>O>~GRqrTiDgKxzovJwmI1pbTv!~S&z+># z=-tcY=&hQb*PWbqm63Oqk$1@%c~|*(SNV8X`FIWNt@81%^6~z!%E$ZMAH)8av(7AM zjAHxW&d&bP%QXKl{=R$oa&Kk-dzMdXnxiG(`$pO2az?u}Ewo4t{2s(LNh`_#$7Qxz zq+oe2gcDjEU8HZ!XVLl<^if=gE%z#&av0)jVR2!SYk256yzR7Iv-rx_>IGqOE_YT{lWRlrnkz9s0H zMovtZvYDs7O=+Ii*ZLm@lwX#XSDygi_6cFiFBCmH#U9|Jyq{I7I#b=;h1ZJ!pyc zzoWxd{jX>Fto;90{(px5-{R(%FWrMM-yiA0K9d-GRiT&FBn$>Chr$01I#9X8;3OOm zqYyVt7|x@K=A?8qI|FJU1pO&e0+T`!Ef8<3MhV(n^>Gv}2!^2BjN2!T zZo}sc-ZZ-mcf}_z04(ekIT*g8*s3T#7CM%wJWToR4LQ1Gg zL7fr`wHi#mk*d}DBYK9%2K>(#;}-h#PN6H8(3MN*SKt!*l{&F++91K{6GAIO%?UMhL?+L{-2gDR&Z;YGqh?m&L0164ycS{~D)b!~TB{jA2Wu35*fH8*y+3}F~ z6*l*`V)Q8H4z`mx-&MRgc=DDDe%?~4U~({Wucy$Fy?vYkd?;i$n1S^LU+e$d#Q@Ky z=g9P&hdlE_1<=hmmIymq>ncD@%__i&?UspI-SN2`ty=3UI8B@To@L+lhXI@s%iej} zUKiSXO90We`?6gxfB)$tEPDrL`+kZ&xJ3BHE-Z(--acF=hK-$A0lf?C#m{{Pf6kB9 z|0AAgs{(Fv3ZT}CuUq@B1kVX7Ix*1i^7EFc> zCgJUD7);)XWdHaRe#3QsqdE#ExAZ=0tMIvwV|e9Oy(3?s-{e84Ox?;fPLGw_hZxxW z@rC$xJT*GY*lRvT1NYMx^jvnJiWj8yXUU@gzsfd_yP6li_-bz_?2GtMQ7^I+OB>k1`HjyLS+xS*MMw!sR=4$a5^&4FV@)z~n zD;k=<$)VH579HphxNxcHMLu9VBv9cbc+`IoCbF~vCQy{D7#@hMp8ic7Z}@+hX%*q8 zTqOz7jmX5PcZ5$~U_UB}cozbE3+I~g&(-?7@16uqc7!`h%8wtOs%#u1tSv3a!T1PjFzqm(V z+JMT2o*PjcVripcCh@3m8SJU1m$^oTxBg)cERNfX9k@$7+PkF*WOmOc<(swrn%`-) zz$#2G?1oSC*mN;J{h1wfH?yEAI4sl#8Mx<4UIj*7A#*Z9W^s04MBB}~um2&wmu=l@ zqtxkGZc#_i_I+B~tJsRm2RG~gB}A}IT}I-{JnmPOM45S;zL_FsX;L0;KfIx)oHvVPFT%hHD~(79GcIX+Q&q;8lU*XQikUS|oh6E%n-z}JeOu`@+u5+_2~|F7 z;nDOA2apbzJbVPy*)=uhkd!cxD(@Guk1Fq%Gmk306tWIMlww9s51yju1w>i?+EWl^ z`KVtAQ5s$VB}8QwcXqSSDqWN?&njJ1Vx3hwDr1~wedtwoZT*N-QU0R6-Y=>@n|9!p z_mK1ZE$t!GLB14i%?|QKX009M&M!;R*mUiXjwRzrzq*036i`+2qx&s;{nHeRQbnkw z5UDBM+HDS%#;}z6H2Y3Xua){UOKxVslx#ZfmL-TvJuB<2tX#PeoP|{+&7PG8RjFgG zpyMLl*y<`SG-0ykXKEap9cH#dVQ-llg9|~H*87_uo`Iw8-oia*>)$Q1rp2Y`<_ER3 z1l%G(JF2neyL?rvN3AZ}qFtpG$`y**Jt^B7XQz|BOJ+59|kM+ zLnDw@ZlEhS(3KnLQr$q8u?1J&pet|Cl{e_u{W0Xf+#X*}0f1uv&%>i#uK%gaf4e(J zEBWs^J}NYPfVq?Qc6JZ8cJ{V*4!8DpxAtFc?d*UC^|$B-G_V^PbNQq4*i=7M&KZV% zVOPCge>|Ke_@9Rw9wrAmUi1I({szikbmL`*z{E(zRVdVYlt;NWV5p3aUct4&}MDl$wpvZA{~xza0QOOh=1#~FX~}FnjuY67(^&eR0#$^QDeg@2Bq!hj>p(@E z2M=L>0Lkc_X{LU1AQuP?e7ZnOA3H%xyFY7n z-e0uO8pusvRc|f8x`4KTpL>)dMJ`DVwmXdG4k$GMvb?~(%<#3-JnnsHb${%2x>xUj z?mCUr(~A$Z+TYfHOQ8)fhaS_-FZQ|Oeu5l1w@WgeUHj?1n#i!nqiDqhl5yCNZX!&j z;sETdd3MqMRUAV5yRI`rZzce~8U@!w;!$MUmF$uY%Rc6Oh$aOCx6XfVoVJ9sakJaR z(OqXmuC2nE9L6696QDW}MN;0w6ho8E7pnySUA3G3LH@)v8VDdbu!XXE z78}%AAQ;`t~xMi4hj16iep~Kx1bD_4%s?CL2RD2 z&fyq@p>yY@t(_eN+|)TRFbNrEtE@2l*15uZ?(EDosfdGUR2B2*7v0`vvyJQmHt|9J zB($}Y0)rwcbO(^U8nFQkTu4vrsEtvM5k7*#>)Gus?BWfk%44y^e-0)QZYdjON{I!} zx6WnbxQQ_Nhj|LMHWaXS!m#8zeItjWe1E4G$Bk3^6UNUGYf<~9f^pvLzH40|3^}TG zHeM=0vAl zqh*cy{sPZp==Y=reRmPNIkCspwit$-kA)kElMCW77Fcr9PRT1v1L^AIviH8#2Eo5^ zegb;Z>1mHr9(FH!-Q!DuEGO?&d$Slo(+j5&jxoDmUpF`|?6$u`R! zvG-H6d5OQCH%V*k^e!%&=KzP3`xU>r9OxRC(A5cRU5(QZjbDLUcbyzD-?|tI-2tc? z42*YBOn^6>!qL-s*F5bt-lN2bN9(7VGkNa+ z+yo7*{d2R8Ksvci$*Xn1bvxA+15PUJ1<-j4u9Nv#U#J6Q*7>p=G%`Y7UbMRamy@I9 zTh|3j9VEpNowm+e-QLAjx6=iY0foDNUNze-+OSSOQv7BeNS)5Q#ZYS;4B&JMjoG$! zAk$c1F)W>{_wQT302oerQEOHQ0`{IQB`DO9yX`BI`Hp|QAbNKSh|ZU4l2^_pw;0SO z{&Lp%rFC|7M#AA`@gs<|npg$Kdo#UO; zkV+@4x8EQ8yF2@bd0k7r_@PBT=N8;(piP(B)2*DyVBoK#V+G9fCY*$@^!_Lefwc?8 zszU{)K)*u03N6-cfe*V!gi%Jy|JLSbU^J1JH&aZaoJ{?Ar0oH;p3CxCma8Mx(fI|- zT;JLp3$m@mi2r1PPE@4`86%HTI2<4$42OV)+h7XPy#goCjI_?trX|V#Tbr+et)-ki zjP|tYC~on7=IgsglEnRp`1uFCDs85>xp^vW8pYdT zf90vvY$7p)*X(iTDm%9{>8tM>ryc4(N0pg2^7<&IyP~Omn1b0N3Y*BS690WXgC%(P zs9dV@(000YDY zet>k4jldzs$X0U<)DOJj#8o%}AlQ4Gazgs+HAZoIxbH&LPrvy4E<_zSVd?grh&uB3U1&OC2R;{~I<51c`~w%JE-t(N zfeTZO%Txcrg{G5^f8fGWr}N|cOaH)yrq(4$8%RbCE=;OdiSZO_x`u8hgZxcEy{;{e&Sms2+0NLsS6)h=bg(YDP>Na;Oj1GI^Exc zr!IV+9v#3_7dlUYNn1QH1sAz$9lV0)E^NYc>fD91E^$pKopp)hI_a$S%lkGwcJ57n z?34x?tWA+h9HrulrJi4^dD3#oU_Gj`ka{v|BXiU zkH`Y!{h52yl^B{k)Uq|d@nltW%9+e%O8>NFg|_8^=3L!BntseIZqji42IzRCtzp|! z^c;Wf--`OKoC$GL{hdx-c<+jWQRqudPR$7JI8GuiD34mH{;JkcwX$U(&m}VCgp9Dn zpxxTiT~oy<#=gvK%~5`7wkl`mX?nmq{gYSyW}YN!jEgCT<`~kN5WMoJlss$UQALvR z%A?ABTMG}I=3%cqHm2yBW85_FxEhI6HVj?RHVAeCdx0De-1`K#MRu#uJH>lM)(Le? zF_Rk8Hc73|I zFYYO9V?)#=*x1w_iCjJ#qTs6JPidR=7g$$OKHsPfS790=?o>-Zl!e%AkOMA10VC^v z`Ft|XX?pZkpN`BvS;*N-&Ipy2vexn7-WC13XgHwn6$U2OvhcwC3J+Xy#*(uvJhtL0 zJiPd`0tCog<~xyjB>vMpmTPepdAeFFxageF#ZjD17v?A>J%2WiQUcf4%~6bewuR?i z$;s*9C>0LP#kh)@A$KW*SLZCb+`3B{zbpDi-mbFBfrT)6;0)}c9tIG-&zHp3W(RJ!I%t@qUS`stm7{6?!s#tSFPA# zG3FeYd6B6xpSIMBxzQ)BJMZQ9jQm?mlDq^QePxr^YZg_Qy=!&?hhHHAv@%M6;njD| zUivwvHJw~Y(6J!OD`r0w!7+*NdvQ{IOt<*B97u}r?G{a~jZ1~q{Kq1`*1$@k@cQ)V z$qL4W7%UN$t01&gcrL@QO`Ilqx}a#51C53zyEmVZNn?k}^AqpZu#DitL7t@pMwHr$TcH^ulPEX(CpU0=~kL^Fr=go1icY5;vm-|j{X#m*jndw3juWk2vqoM&f&m~nS?;KpIXvmg4-1+M8|%mw%Q7nz?0 zqJMewzy^2M>{3WK^^?qxql-iJ$hinb#sP1Z9Ed-1fAOg^jH66M*+I5SM2ETR+ow(@ zp0h*5eeTYADn<6`+vC;2$4;L)&c$C24xAeyJm&e+sYn5Ur6SAINU~|1GNr&{?s=(@ za^HNP$1;m}DE1kTJoBRz>B4u#xx)h)vj~x9F`N3&Og!^2350YG4*IaC%vOP5NTnvu zm9o=Uw0Qoa3mebbf3W4;&%}XDxGTWR?cCS5EUq@JJP^BQ@$9M!N~tDewNtgU+cE&*Z_|)5H8EV=>q?zyXz_1dCsqz+&NC4d^4-H$Z>|6R? zHYYaW!W7Q!trq|+>3T6qXu{p6SsLe&2iqXRSt>+?3zh)t#cfLxKYGFyVY~n%Ygr(l zR+AuC+lVR8gRG5cczn3W9_Ioc1wp(7)-Ye${oQI70*~dv9F`MG*ocm_cj$DBA6a)! zLM#aYcNWCy8GAd0kLw}@-2h&NOnT!M9V{fmnFe)n8QJTU@YmiUY=0~vg(NT-BDEME*Y6&~kF~k;z z5A;#XZxfO7thu8bzW%)3uOL!CKpU@PODt@kho=K`S_65PiX@HQ2Hf$VpyB~ECTNl% z{|u@`xIPc+xMrS(Yj9Kw? zD{6C89=WMD2GP$D=h5QosQe15L4$zn2m)=}k!{8MNNleH-sV}7H%w)gyq@&C6mpg( zCfV*}Y{-W!ja$x~S4iKAhKGDIU&Fzya-x%?%NipdQ*goPh#JQ4zS{b`kaR(g+jK!s z-s^E)3OC^3Bp}Uepo?CQ?glb66>jRtk_NIWHs0zU=wj?_?o(X*v&?6+z-CwbQYdv{5-O7@?S3%4h8XL~H1O8b&H$eUEK(C>~m^D2~ zxGuM=f#13fqUB^OFVy`EVF_xHMre}mcJMODMOciBsJ5ny=yhZh- zZSkK!fB4YrtyR4m!jW`&GbqUUcI5mlQsK3n#;?)y@#D7ipq8Xb-0%?cc})zc!QW={ zmS~kW=xGJM2L)~Dw>;jC7ww6=lxuuR9eNc`nx~$uODgQhw)99O}C3f`hrcui^HT}gYNb3p!R1!$J1%ZqkT5=d~oEg3&GBFs-zbpm9W_v z>!=+VqyU1_s@~D@yAA;ZbpLVgOXe9U)fAct$v6vvqBLS$t|E61>3*C864l7;G6IXl zlG>W^S08&ho@y0N1k0tE0>xSE@FW4Bq;g?TEJP4P9Fo*;j42{v&L&qf6Cv|_snW3+ zS0D{bzCw0|{0WvhJP4@WDDgKW#gC?O8Y<+1OFvjKzTkd9u@dq#;MS^yfO>hB@=$iE zR}%8yAsw0up5>{K4hh9N6HmpNW>Ovip98;tg`F;$CrO-U)Lnt&fPe8)AO1AhLm>3x z5LOe&gIZ0Ddl(IgCM@|ApbyR_%avb!EJ%?VT0MZMILPT}097apws7&-JG)wEN)#i- z0crL`cHQ68@%M>Vz#D_#UWrVLN%a>!jp7gws&oQ;EJ`)RPF>mRK`F;X9O#KZi%5#o z92v-FF%Kj&Tm%j}7o5#gG5yqetD6HnU3K~a2aCcJWwzp79P)m5jZQ8>6F@WETuRWd zI8w%AkYnTg?C@~8Ty_^piZj>_?^B}eqp!}S&j>lgmZHm zZ9UQm12rNfUx8dJh{=diK;KdXLD$*2p0ZV(J4?*Zfm7Jw9_t&EZo&RoFDg(m72GD88m5Ta%uP( zmK(v-QRf`nhk2@uADE(7+7>}7XJa?F3uYIz5HCjdu2){*#S<`40kR;DpYlW-MH9cd zt$1MreB81D{=5mhzV@(@!xM5(KpYq?uq2H`_Hh5#O{iwrpx}Xx3Ly|xo-pH+j1x<- zHuDTFZG`h42=JJ-p|va@R>4}&U+5q}H!i;SN&9@1n+EC_B63zE%aB6LJ%G zZTs2CWNN`reV`SoRtW(4Ap8n=($%^BB%;)ow2b1Q@RTA6c0ITmIH{OnR<`Q0E6jM* z4e&m4ekN38D_j_48H(a6xylJH;~dH_kXBE{CCahzf*E3sqw^4mgKiqDo2w9JK#_xE^xKi1TAwmS{PaxjKS(J9pe zXZ;Z|fVb><^Pm?%f&j;VM;(EB%t?~%3&Bb#Tg=ULh1-5 z<*?ZIKXFz}s#J(UcoR zra~^#az|HbD!7y$(1efzKYE*jE_5JT+aU!4V#ordqnOXD=PW4OQOW{IMGTwFRRQ^= zv~2gB#pu?Sz7%va$54qI=TQR62I($!qpW&Y=t`@tS}UqAJ<(MQGNZ?D_c!C8Zf`FO zv6n}t;u$!Xh!hT|9Ark?RL+OBq5C|z9ADmk9bDgxZw6mSHOv^h3*D7U-1s}?WQD(T zD(Z@aOt`ndcDv#2&Ex2AkM%?7jMYfOS6G}jEH}5~hi}85$AD#Y^KgB8W8uOf9m*=w zN*nouW{Pp_b>h}KYpp{C9#;9%fPD=T#(56~tkX}HJk#*SsBviC} zNVYonL}i&#Td8OXyuGItL)iD_jNh~Xu!8KdwhH}q6{H4QTR|G6-=~87|6dyF_85vN z1JPjl@AZBb@y6qG&4J%lh+lk!Z!NsbpMV>thK z@xkm?$k^1w+KKs*^CId6ko4V(mLiYUh_ZE1UQcZg#GdTQ^T}5*&0#w^BN23>_y{fBVou6qtB&>iS4= zAd$@(oN0HLY^J(7;@-IVZY2PnRN11Ntgll<4YXDd4bp#^0Mzu;s5vTSwcBH=(z80& z=cP|AYE4Q}1F^t63tVZ}(WYyp9epX*_iShq>f#!KR<|UuM#fk;(AK)V-6rGBOqEd3 zt9z7Kz(x>a%&_XyP)(EGOH;#U{e&}NV%K?8d+2ms?xO&yN^cW(xUc) zgwkBfr&Wflt5dtGAyaNb7B@%u2#d{3T>|*{<^^5M=~J1FG0Gcg2QOpP=~Zd2jx@`m z#sQ_a^Y3D3iiPEV;u+Kpco^f=cOC`kyIQw0+o0A6ypOCG&F!3_Ytsdl+f=JwSanUC zeCzwRvAxIutXfVxPKR!%u+yq9q}IC+%ceSg2c0M2P{zBn*I2TPE@abZ3m3EL)7Tj3 z8fUEXeH%RMTopL$1gvK(99uZDEss-obX7n1J#SYY+b&elGO6*UyVrFkGhIcedV6w> zJ!HHet9BE)9)+k(Y)rWHUEBnJFxNBc-Khp%Q==6asUYOu0y{b$BH7fEsi?!|er%3@ zNN0$t;L>v629sg|9khIg^&}lZ0d2gCD70&fK9O0<;>qt&@RmkhJiv@W_w1-)WNx`s zYlfO{_5=wvY6#TF5f40s8weihtJMl>dr!+m#;{42#;fnv@V%y%B-VdAuqhOKwcc#C z58Tks4b;4{!HRsdKup`z$6l5(7SrOiJH@Re^{cNIaUH01tAb=;tLmDg=$^`O@a4H7m(k;B{Q(L|Vgyv8rIHsf0WqZpL-(^fc>7+1o8joo`kl*)5|<4fl>$I{Zm#K2>5p8d%kNB8%)_pjJ*&dZ3uW=oU!eZYGe zjIVX~`JiVdz9r1K=b>@u+{yumD%8gtTb+O8J~~X>(VI&XDmQQ>DM3e!*^pGbOGjOF zPp4@4cm+hzD)UQ)x*?#eKe}GDJPW#UX5O(gaRvM5`E=^LKEB#innSE_%<-;SEUOge zI!iJ~F|C+tin6Yh(P+jB|4S8(op1P2ec(c+2O=9|dtw~R*5L-kP^f=hBsEfshGz(> z>BA3JO3tf+7>viM%r#I$oWw+uIM>TG3=K*7suICPKgdE3%ENTo*SfGM!Bt~cie~Gm zhEjd=p`IU`E7<>qG{$(CaVQ{=uf~O@em@z#R95cng*aN^?(X1Q#E_}JyqGRCa5XL2 z+h?1hcJ`*J5C&ow73LLOq2d?{s{bSQSjp;U4yqFxkS$o#WM~2WXZc%0uv>33#VV~a zIZfeRR6CVMWvsM^x{`T@v(5C(iu}4dT#D3GgHA5hBn&o)Ug@=v+PWI(bm|2`7q!uP zFZAoY-YT!7FM6Tc>+IKyZ}t>HL8vF4USbGr8oTJitg$P{5KEOawcsY$y;m$dFH!)F z9|IcB?zVL3Ruo*+N|)Q*lkmh2{sPM z^i>_^6orveaq#4tZW_-Zr_VE`m>Pj8oV5$@)+~PAa0re*>1!z~hiY&CDS`TtFXuQE zmPv>DoT^AC+wGE#RYsp*+`Xc9t-9fmXo}sno5O}_Lsgh+E9Vh<+~`Gx)8w{ZtAD%s z<>vO+oAKlQ;O1d4d@L{QD>D>Z9ng7cn8BKjs5q^UY-GQ{ai?DoDZSRH<^2u`s*PhG zK8_q}esokT+pOs9mgP&NUJ`L|c9jH3U$GsZupJ)adqgTdra2P1+hv!{?-r?^p)Osk{F>HFs7^D z`8m^XkD&iYTjw6e3NUzkaL;t7eObQDL#wDrNU@viKJl4ig*_=D1x-)bqY^Yui*K2b z^46HqW!F@ng?Nw*?Gl#Lc_TA+QC=rI)`h~Rlj@jouAHe~RH8+IH@yP%DU}z1RGCSW zKxG$bO?_JylOv7=EsmkmD>8Pw(fq4XQ9Q4PMcC2_GRtTw@SgfxSemZo;yqHFs)tA6yC_lm;#Y9H}(AqEm!(RFp&&PT4W# z>f=0D_QqOYeydF1qjN21s`MBS0XRFDVg8O6duqleyN?4r`rKa5kKB;;9(hB(?h zFzgAPlqiW-3_-1`cK*tnYYGwiO0KH=_Cb}9@WQb)hBB#3=*3YKf{x@Ez^Rjm?=F+Y z6*H;2SE}d>g*%6eM}`G;DfsiS!gK6>`+euKoIsE1#jn(g-iGg3`~9Rn4w@x(E{mZNlVEsez>U`5sZmE|ZU{iX z4(CGWdDN(rwf*thcV}0vRNX04b>UBN^ar2;UmL#y zqdwguc_c-<9Xs(kv_vPIXls&+lQ(Y;4@5!|UMPYg$jIuP{P%a4S^*Rml9KH-HIp_; z6l%G3>(<>b&cSkK0T{U2i|z~v5(_9jh7xLY76=3|niz`_Osse)*`vh2jpG3|J7L+y zoD==t{0QeC@BmT33|t$;A#u2Tb_Wr<*;yf*=+nt3n81C59yC6N1&6^P<%y~qz>GYJ z6=aL%qsUAoM|=eK5fD0d^az9|!gE#ms{*#`Nzll+f6>S@q)c`|MH|OdX&WQFA|FQC z6`(IL`gg*8`&)!F-1a-f#wvw2MPGPIYnk#$G3`W&sbqj3qe&ryrybaAbB7sxn08W^ zksxH<6>CY&2qr{3Xu04<)2u=0K~riZl^&9Stbv+#o}3;?>JTWy*lpHDE@hlc709{YjtB zRL&HX$3IOn@z6UPaA_Du2|TuV;;)rpA#aF|4*v!eTmJye7zpspIwu>3h<_IduSk85 zqU|0yWMvtnn9@APC>3YA3AZxlhf%H#igPs~K~Clk5cr9?iA8B z%|x)VfRl($mVDxTdJ^Ge*ux$_$LLR2D`kJSv@zAzEFIaFxaLo{80mglXEjUn!F-AZ z2|vEieRsyJt;VxS!6Zm!lw*T5Oq)l%NVkbvE#<$(CNdCL(W~54IpIAJO*zZP1hsAB zI3AjOu&J0gogA`Y%z6p&;sh&oxBGT)+dr}H52eJT>?G-20g@EjcaG2nq%NX}nKKN! zgYgn6>cE1A!RU5|iUATC{=0K={@P4@s$<7r0)QKCQt45{%xTn-7Ir$5c zF}$FR>1cI)%gG?{!CMh3Okx&LU{2hiW=Pk;;hnR;*DLK% zcqdyh6ek0ilRL}}1x--IBbOwhUXrfbfmC7sE=+y&&l?*36?}Wa@Ai`Ej1u8$b))5+ zuTKpuBTRS&ci|AV0+x;nqmgY%kUF*E*jYAmLd@_EjMK|0wjH{LY;@< z=yrOyslH=-X>T$xfiee>pF4_P<2Z@fT~?$F*JMvORIM=4Qi|G3LWBzfCS=;#dVKZ-@LvG`{18sEHtJ00YE8BJXI5O1Oa+%3^k`Om9nr`wb;^&%N^Y`N3YiIwBu2UC%q!i;TJAVQW% zP8qmNGd?JtzKzU9x07IeM`izPT=xO|`|B(ghOPTx@{4$Y>oc4TJWfe6Mg5gZLc?rf1HiuNPqQne)HNa#jiJ>= zTd{`RRBd$fhGPh36Okt%4F#5BNaq7T1Vi$WV|=)`?K33@Y!a%N#Y*ReHwqyLb-o;xhHzv>JZsLSKA%-zlPJWj;%oi8XgF9)_w`1Ca?{6Hu168% zJDbL+kYi;$r7@&l(R=DH94V{~B65&hgIxrOr#lz%2K?f-m$8?ZP7XyRb^>Gl966a# zkjD)vtgFoeeJsegLeE9(V===N8FR1)5_LOjc&&Nu7&s>LS(=Fpr85HQ87QX_+X2Y3 zg9e54!i>aZ(MY3gDujWuZCKW0p|OkD25^*;s>Q)5AAq)VMZOD9T5R0HMO7 zfjUR0L;Oi{#2@Z_QvzI^`wD_g-feF&q{3?(F2jmV*?Cszv)n2#(|@v7&w1Xs>~ZRL zD6Zl@oZ~E9YhH!!!nTKO&WuYOc;|4}EqBhPkLGfuf~`>OC=p;1$@tciUEC}i(JA^| zVPN8W7ao{j;ejizShBqfkF8i<9$vHy3>_zSE_G3} z$WoU&0(FYQ6b&{Bv2Yyehw2V!%j?7#kuggiBW=*ihy}DpGm<|^HzuN)3d17vH=Gg6 zDx#dkcVw!H@P0gfq=)1Q+pjh)1$t{*UaGN~FGI{K5NTw|&q}%uVS02DzqhG+fMw7K z$g_;=^--45>^#g}*+{t^lfb5RBFWR}L@M=Hpdawv`T=hN{eaGMldC)_OzBoxU*ls{ z2aa+c8AcANsU6a`R@=17lPl8f_*FDJdE$HqHu88Yn~YqD!fiBy=ZQL$Dwsp`q?5_-Z_Bt}GZ|~sNEb^nzQQ!De`gE1vRI|f!%|(M z^=dM>oS&o}xrK6JU^za9=s~SLUUdlz!-SOy`4Ty8bS$vx5fI57(eY?2zPa(Q;}|1J z(k9X<6>gyO1a{k3P2~uONq-E8`6 z&?E`_@(RYaL1Wm)aBb7i-FX;9&GsZ_6`+y5RAFEWoDx!Mnb1i)WN!l64;jtGEUva3 zS=?i4{-$pS(-$-QrAoIU6G_U{%EFcJb+*=n4UJ?POlLaLQ!1mL6LQsF(9vK$;9R1S z>#d@kf|+JTjq4PL<<@XJTol1u@?qamh68+>2wc%JeDEW0NPD6t2cBS0-u=(!p9lKkb^`L z?Q!mO5otD1)ENQDHcSdk;@@YH<5$w0n$a8I{=ZZ4H!JW%ax6!@okbFgFu-7>6 zd}y{i8ELv<=7do}H{u$bQt%4ew~U*NZU)&%k;2r)B|z(mfT3VAjrtT!CMUn`UnORg zXC=NRh4fw(q^}@gXrvGDC5q$Lh?c)Hndt!+XaFZ4@l!h{vbEv-*oiTaVvuXy>j7(Y zs^WwgVaRf_i0|X@og|)3`V#l)xFjmLNAzU2Nc{Da&L#rkhvv^xdIO|rw>z!xk_|=~ zGWIh(Fj!0Q6hh2X9FX+GoWwE4z16u7^6rAvl7T+2rNOuM8h-sBr1F%7`L+L#;q;Bv zO5&oo|8YBgqpk&1&*&RO)Sls$t2PsSmv4@nVQ`B#&K_PJEOOY_gil|@Z%;mnm-&-e z+8k)d^QJ(Ne3PVCrEBAlM(OqA-_S9pbrIBr#--I)V|)w(7iJ{t@> zHR1OJ3+8>C=kz@DEEYOGPrCW(&a3bLJZGrZx`nc9`w7ogy&;|*#7}y}YJ#^Kl4qqE zV=nTC|HbRnCA*om zX8>Iqv^8c6t0X4o{~`_4x?R1?v?~ewFy?9EEM$qE8XKwMfKAO3=)$=1J>cr2-+TALNPHvK;M7~RkAd$Yk9=KDB|gFz2n64Lt4O=V(}HJlE2_XvHC z4iEPa-=MyPs=q0E>WKtBq|_GW8_}$)ghnGDQ%1?JJeMZ;wR|!=G?l%>rB6g;6D5~&Yrm3=c0%EyRx6MVKxoT^woA@o+oQ}~q@=)P za0VKuYxi&my}a!;E)3Di@T~XNjiNd#wVJMFLiA}gjW~T8)t=*}QJNCY{z8TSwp8Ii zzkSl^HatoCQinequF9?ilmjb29D};aqazAXf}&I>7+Rw#$$i33I-K0i(&i>`bfg`^ zquRz6-O2l0 zCSD~qufXR}B{kP*U7hG!E+s}>g8^o|_5o>chLKsBLD*%o8S!kudZrmqIB#8abfufX z7v$C#q}G?-UqnPVeRfL-Guti;_U;}Y?qFsnk&u(h&!qO_E*=Ry7L!JnTI(%U&pep@ ziYM()ITQnt#;C)Hh{%pM>5i=n`2f>=(S`hhjmAtu6#vRd^J5ebWuhP)vLiAvTB&k{ z79LhD?9Vu(Tt&418~2w8F9T?i80f4LJ<`4H*(l_;Z9h3zM|71Hr)Aa^JPd-glI_~I zp-8zYHGfId4WBcZ=)b~AtZdcMNIIneg^f7LtIQSwy%F?o;@L=`Qy>g?Mvt+=k|=rY ztam|`R56V&I*9dJ0FXu-9=R%};IKr;I2_OROcc4s{An<`W%B@?H0oL;%Ho`4{8Le_ z2stef%zEcnXU%r&xOduk=PHtMVPw|hlJzV~DO-VAc8nd3wnnpiV66K(lO`@<7~aCx zv0+6fu&FXn1|Lh9&6D2yi+1m#`+c)b9*pI{IB;5@8*`;Qz%F;c#apJJz|gHMwn3Mi{-Pas1F~u@ftu_-5WA0rfHy zoI`{XB0`T-#~9RBvZ*=mn8dLrYkN6-w@A_rYijGq9rWgH?Hvc+R$A6Wu6BDWdw#jPlu~9I14A*LCDJBIWQa z3VOyH+0~Ic5kO&A^)xn{wn`+Lkd18y7}wpW^CWYvYdinzjAi}e^a|5#!^h*RcBggz zomLv9Re7o{s_@j@WS!mX&_m*cwH9$~H8-QUpp}k~7~6q7L|VU^g$eq)DalRkGiwTn zYO?EuY4lb1w&GMpI{uNRhmr1*fS}XqBm4tU=3to(>P~ssWyPRUx}@ICl+R@CQlj(9 z+dk%7(}(H~{UTW<=cDo(DxPf=}phAPI}%LzX`UC0$n}Jlj5r)xzu5@Y?4S zP7X4X8QD$d?ZDABqZdufxsLI#Y4KA z(xa~Wka|g2kfW=(U_P=&F+hL~7*f^w=$s%33zKONQL><4!dTrGy(9E;Kp3I~L|qig zfh_d7T{w>WcblHtFPRP=L!6EddYM^(L|=0b4^$wPM5g6V1XU|NV*3jwBQ!8ZK2M%W zx;tgBL5;Bs11vYx%?w!~W+lCbci$dtD-o47 zy(AI;lc|=S?Jt{GSFwv$p57qq(333%NkRe@R=1=4MNUG|N;J{qpac<6N_5PTXsOxq zobR;jk#h6Q^Wc-sHVu7TzBBB$=N^nGloSn32fB44>X>(5;trD^vSOjjp2!aT0Em(nvqF_8E=hDCLRmk@Jqr~2DfupEI2B18zzrF(_W&hXTFt*GbBf%R6r_d zPl)(8vne?WX3#^tLV7tV>Wlav6t+B))tq48bn6bB+qvy`BA^n%WJrP9kDko&LYiM~ zZJ@xN+yzl>SINej**278n8h-9+IB}Ul8I43z?#W>19&SgVTBjhI8M04sq(ZI$HY;T zle|n>YpA!3If@jtO=o_K!M=FsHI(`cCfur^OPw(ilCELp>+Q-3Wro11&!5MVWz(D3n`BISA{6W?ebZ zJRYH?KE)k+lF&=yM0ca8`qYE#IUqzxUp_(tqKs<2XpF{o+r7YGKV%eyZhchL+Bc4& zcqNY$-A>E>U8!ByaLZqGh7Fdqj^r;y6iPWyW@we+YvjHE=gGNm=I!!Xd@=O*sh>F2tsNe`wR}3!*nU>PHY8m4INS)7~1Xv%8rB$Gvo2CO5e<8q9^4m#-Wx73@ zpP|@6?rAn;7@Px=?0?aVni*E*gjqz;^(?j1kEfh|ROKB;M&Z{&m}{7V#Tqx|Nfm{b z43=F5M^HoI4G>Mkd-)`#wBQPSN_+@(t!(4VZ9|-3@@4=5pO0 za|om;W8;p}eV}3x@fa7$TEfgsWS|Kk@IyEp+WfT)7$a+pJcxrRA&1&W#c_1nKPs;> z*xrZ~%{P>?&~Y3^U#{b5Rzgrwj~Vq@?c*p|hGg1$c@YFjGHQ`u zXvjj5S=)wxLtR=hyv3$>_sT!(<*U6-A9D{tx2hvXJBo@F+PRPw^->&@v!DY+YjU0+ z^i9d$U3~eQd32!bkVFz~C4*!&7!gr8~B8(;apzVwY+q*hD zrc{tPkBDuxRYErB5&`Z_IVKc3Cx~=59BFSzJ;J+4%$@^w)7A`mIm#Gm*K?+d8DT+g z*9@o|o~9yImZk&QRzS6Q-UGutC~rm2a03DeC0L+C@aM$*^4vCkH47o(X}o9s0D)Di zb}Tmx(ztAj5}(+Lt3`;NAn+=MEqmr?eb&Y~8>zR=hQ3NNBaKHlD6ET9+!2QqPznAI zaY(XsL>1Y&R0DD2daL6G`kstLS6vvkLk^eg{LH^>?1*Fhhom}#o- zU}XI&6JsUzuLj~w%qMsm4+(haJW~qzG-6x%eOQ0%0{)%_d}+u0)nS5BYtEBs&E@=R zc}1jU-tpUZI(n241;&{g6+lTF$wErc;YQXpg2p?T#vY4My z%Ld_?n_eL=>Q$#oC{aD+14W4PdGJs#PKW77rW)P4AOy{NBg9><)kgOurtO7`BOJ*z zZ~&3h=J|Ks?|JuaG|K5)UH*Ctv5ENsL|bRk|e#Vz2SFE<>SgGZCW$ zuiW-j)wi9se8CvVumxs=7_@>A73+!Klyt0lS7j9Cr3$`EFl!kk5nVFV=RzTqE6Y2O z%va^iI#nOpg%&c_N|iRJCcR1UpjL^H_EV13?2g8&7WRdv?WauTqTr8|4N{IOgbpn+ zurdrtPe69lw1gC_X)QHj^0+|MJuI!U5)PEiU zQ5ib&yQe-y`U{Pl2o^K5z8(q>HLBjPK|<3ju@0JHeB!*!pd?^ZyrvB-ipJ zZWSKs`@hQwOjFWG1$V+2EJ0XNou=TBePQS0POx*m)8EO&sY8*+dD;NbA^ z=*aaicE&Topiu&kt=!I;MG6hngw_mQr4DX26^PU-PiKvL&7z@9*sF zSig&SW8)`tX1H(0En9}&_M3{n)_Cm?Fa7C%H7up9H77Vn$?lTDd9-X`9vvR+fBov^ zQB7bvUdsWdK|sVctj-{>c3vvLy_Qh|JANMj?6a+?chTWKc=>AQ>t{UNd#^s}>4xE} z;^Xc-r~9Y~AuC@b)eyC2cM5?Ei2?8nfJPlrVj4LXmL-Ln1Q4Pa?P)*%*ZafDjxe$n zTbs5ym4taptSaLDg5kE3+KoiKln>%wnd?vjLr9}QtWqaLlTbUKXs0?7Ofbsjw;&pl zu9oGNVEC9siH?dKgn>>(j-FPJ7|Q@m_>?Q9^N1qKTLefVpC!IO=%U`r$X^mXZ=e{2Es=(XceOd;YQBq!XSQ z=3F;|YR=_EDIkmWMTmEl4tv0kQ8z(yhu|lpj21SOt#8Ce+8j3nj~@*mWwj$K#D&p| zBf+q>C>dqu%$1B7#$r+_GW=PpvM?hn$ba%ga4x@`S@>FGF#??2VoL-cD-LNO#3tS` zLQnO0nn=F^P8V+ElpsHxhj{Xf=`L^RamA22^;tYM&WDbom!S@rhrl>WIrvkcAE!8p zf!>LXyN9RTJ%p%cNn>JM4DF+vxHpY^H@^->hIqy;$joYnppC4xa{YlkH&K~aysW)Q z6>aypdW2WDHJ)9Soytx05CM8z$U+w#cl4N9b-G7t5F{cRC{>%iduL=YG@^K^e2bj{ zUWPAoLJrv?o@^2h!71WR;UX~x%~u)psXDpHusLKTp}|2 z|K0A}!)+_?hRSl!dgc>$4-v@=*fATZGpo+P6=)zN-r$KbWMxdnpW zcu3g+K*~EFI0VsTI)UpbAZpVy8iu3UeYOHDGg?zohGZ(LD^aR-{70}w-XEDa)AfHO z1H~PhMY!n)RfwAmpWYvN<%9Bylo_}~u-ub%4mc^%F>DdQh`;#sO_Vy=OQW0NajR@g zd6nv1{+LFUk36TK@8Y<`W0gB-o>MGuv)#UEJ9X5GH74Lrj?Fzb^gQo#Rm+XYMgf(#~4iK@Z<%qV>-psH{_8(QA`vn4>!<| zQXh!83-%%M%>x(-y{rhYMuz!zguaXwCYV!PB|nZjRiU1M&W7E)fD#F%%CM*qrfD2g zL6+?rvoWfvRG$so#Ar6DvMV$f#uDwDDxhT+VW}{~{E|7x#lX*DG6Rib%?01AQf;>Q98i8cmg_l z@T}FrV5NrRIGfo8G9_Qwtu~;f3?_q8Ja%Ccx_mI`U@{$|Z;%#&Hyp^3&IU+c519lq zMz){|Q$A~+U9^8LqTE*_>8&KW8G;qp1Cdg6rLkJ)KQ>NVC%wx?8}(96$AAshsjrgF z=rhkKL3CJo+tVewFE3GTb?wR+T{eKWQ#qz73qbl_&66?GCO~>F!=Usnn^}ItU*FC6 z;ny`8}SU`0M+HJpyvp>+!w6ez4RY*?E3F>*s8C+OO4R z=K?n9sCbqo-X9b5d0wPM0$fj!acR)uW5ARrcXc1@JQI_wjoeVkgdfMzB;$wS*s*v1 z`pf0wz<2)otKuGSUGR1E*!I`IF2?-up;nLQSEr|NNOuZ54MvY-Xsz7qhacdG?iL^Y zqOck11rblRK)1ydq(7eJ#WNeJ z=&Dn|GcjT@g@Ic;8eV@a9yN3}at!?wj9W~E#wuJQ&yz_VP4+LSJaG4?E{t4Et)?HR zLO+pBG{_M#Dqz9%hg4oe!Vx&}l%9?Q?_`&G^J-thv`Prab^NjC!YR`+=i}7bEPrs) z0K@pjWG0zi=O#eVBkQD46$k!l?+}J9rbXifHAXcr_g3fR9Ip3bf)o|^Yz80)l}By^ ze(e?0tV)<|IU68gYcMtqK&HJi-lhh<>$Knw+AAg#Np#zjK6RBl#>yV+d&P9%m+-NE z$Cp4~_KHurdlxp9@^JiWZ!h<1(fb6AJ|1YLap}yyySzZgv-qeFL28Vqvq2HhgsHfk zO$=+&(AmsE3^32~`d%?DC<$53@A>rN7&iflqeFRjocE`;Yvh>BL zIgAE9;XPV?!mTp`#(v2mjqVX1b$ds*(DnUdKEml6>KFQkdJFo7I#8~A1}L{*Okh}l zP(U$j3xEyc<8op?&0#5u%IPCpN<*juf_UiVoZ?h4S)ObZ-hu$)I^{;jk)R*4jyBWM zk&@vDAd>s@63HAUY*HEY$4$H@_lt>Ok@GuV3e(`$^;iY56*2v&y^C%reP}P9^!k%w zb%Z^F*%wpD;HW;i;Sl!q{bCYX^Kf-q=Rf%C2gTGeiAKNFrZbp8dHtZ6Iyw?|+cAT7 zsg2YtDi+t%vA9c1(_P_|G%i83Jt!vB!5G!PIq{h8Ri<9ai#WcCXCijtbt=H`Cb*A= zPTGx!Hu~tI-FZpkH4VKPV78&^7z@12LGev9_feH`pwVrZOmj0{Z2HD==62POMd$nX zz$PCQUpl3;yBX)t%$OJq2egq=7FL&EE<4R*;*JlBucy)p-U4}h2=a5+83@x42f5dn zXZ4cftu&rp52Jn$cDcHU)Fy%Az;*Q)!B4XM(Hw+ca>&A9yXtf*6(>=+uQ6(I{8nlLl*aYVDp!oV7g{Vi!1Yx_B4!Bv@ z(X@<x!bhn9M9v0K?3EnPsd+s()NmMv2CdSiXIFGP! zjI82eF|F(mlKRSy%lH2J*Ci5@oshb?!z*DG*(oNzv$=Nf3U7?vonq=Wn?s}Y9d}$z zTW;s*`0BiKiQK~OPBEK58==F*9GWnicQF@Utc8#_5&Tat8dM(nbbk*=UV;%yxSsCk zsfrzAA06P>OVGWDv5yX_kBye5onrb?X=rrit*%MEY8|}7fs2VtIExNm)mAJ+=M2zd zG60<))%O$WvXP>M&C9vhGMATICh(*pEhS)NO%ibcc|eB0UYR-ZHv5F;ca0ZMgMPsPO5BUG0;N|3#Kj-HALqWAi;RN!FFqIXH?lj~8GnIaCxJ*Q`^ecvuwa{DxvbC(5F4gyQa#MT zr^AAb1THFJg!DkBN+nZcOnepd*vP;zRXrtBayT%8>a6*4{a^wCZTf7IaJ50>4Y7#7 z38<;5@>H%vpr#aa8Pli}+IEpfER{G!rMcGgS8;DfSmDw3E|%iUD<<7giE7y++z2@o z<-Pt%Xw>GizNR}WM`vS-K1LQw7%Gui)*7+)E1gP2PVsv3)(FU1L;v_8Qn$6Ylr7|& zWQ>Iw`C)&&rXWXg#L09J#oKonA^go(*b>fj=?jRwwcdd3t@j3cCDnNYrbPK#>b#RV zkLIg6?=t!Gug9dq+Ao_n7`l9MJrltudlyXtT@95NL_CUGVfI+(Z zdnITfq~}6J$R8q$NZB2!K-hcmxkrZf`sc1HeYYMYYj6MY>nuh-3ajw&=UP3$%Kic8 zG54h^aCH)dT|j`Z{MPM=N}Yn#X7=LP=(*37*>`4r|50|9GF5?Uog}f)8xzR~(O~qC zzwLkhW-7xqd24RtcwlW(J|OarS02vZkXy%1O>_e;9pE(|o^|yaF_@2QJRz4VSXCxd9orAqMo_=~7ZLH-PiF959&E=EqS|HD&-;yYD!7f#x z$3{krIcPEG*18LUo1r`_l%)w{(Yf#q$H$K+qzgz`6*G=7D+>_~k;RHPW*iOz)Np>; zM0@fmGW6dHHJ(5||0aNS4_*V6eoor#X4hAg+3Fq`Urtx!0_SLUZ&tVXG*lIdDN|Ld zz*uuDYLTnC2x1i=Et8EEvd?$1s`4Xp%~M9gGGS-!?Tv$#HGo(bPhjkxsK-!ekMExE$b?vcGBfAWQ&UE}=|K-4d;whOLqxmWOG8KUNM^w2ER6FKRden_oJmW#n*~;Zf zxy9gJkU+SI#DCAYtkr006_3giiMjDjSa=sgxt`I(C&4?#xZA6#b=?>5ZwU)!0^*6Z zEEQnAkx%;O#X-C`Ffn2oZWK;8nL6Ju-_>M13?6&YxMXvx>}w^s6(VVUzT8ra$g>L~ z$KP`o@>J|}b|>arKc|+Qe*@}_U&shoe+Wb{947f%^v_2_-#9;Ro|Z_mPVW5E==f}N zKk7I5FWc{6tE@YSzOy718Z;-LhNCx@RHrr_{t&F|-%J z{1eFgPWqE|z=#|&1^Qp0gOF>UbC{?F$9POx^Zk_Tl{T-ELs7Be@|j&bs`3TbYm~{W z3ZI$Thl=?K>+AoeWfO>OqY?yL?*R$&LLxyNMX_1(G1TK$`{7ATjf@}0vN{fU*X zeSKopX;pgH`3P$f@M|((Wjah3YzmV{*Tuj>CeJ2(@VnuJiblurY)a*dM;3^+`>ybM z*6tnT5xNM8)DEgHytmnEL{uH#qz-lHBOXku_ z=s@;fTY%N7=tTCVQY5F_tnFCoLQ@CaRr2SopZ@aqpu~HkY~%vSWu2gTeN{M9D%O!N z%~#Y_<*$dc0&s(hlu{k1RK=CTGgi!`8uPC=ecQFP?gG%!j{WQ_%{^DQcudu3f&tbH zz%-&9?*ar2v(@_%g#q0>Y6+wYv%a9$?-FfTo)e4Df?q=A$iF0)Rc=FtycU!|7SNh5 zLLH3LJrs8l0SuC5Is)0fkC9h1WmckqCOJTGcRQtg! zDuY@`EZ7FJSMq7}VFjnBoJBL3_j%RzHShKnqqqR0n4>VRcWR{UE9*ju7|J*vSMi#6 zYA1n$MDWA3e>d+9WFVsK>JuU30s$}iK&Uwd>2!E;a`9St9Zq#=FLs2cqVkJrKZYUv zHcM~&r>75}2W`j$StChi_f!ItL=a+GH+_KPZ}5E*^sz?e@UaY_AEUaCF3q1>U96vU z-0XBpC+|drZ>W~8EHNkJllLe-xpHW7DhyeMUSR-!bRP|ai70SM-mqBI&yPm{qwpi9 z3K4~iD1>1Wg&3$$g$6M75GF&W(C|B$J$m+dhWiRu`%Pke6L>2sGAS!g>N20(erqJf zg#?C-sJ33>U&kW#mFkOwA=v6HADi(Sb3!Tw+ ztzw~b0kDdNb|F%2z2qtuI!{7e#X_%Qp;xicpLN8YAl2_9+&`gmld+PDSeHj|JzYFC zOehIu?C>Wi@1G`&+EgPv1(h#{@TZ8Hu4>51DTZE1!oM`C`yq@bgV$0iKxib%FVQ)U z?j~&lQDjr)^fbhGMMACas|788S_-yU$Z{1DF@L1;B9zAwddz*ULXXQsk1L^NrrSSx z;4w$8S3RpwdS2&dd zP%=~*FHnwEHTZy{x#Y0{m05u&We4(4O5J$>8gYG}FAp)_Asb}<$8W5 zO1w%Ay-E(fN)G+!A||Wk&|eHiDpI_yl0&bOLp!+IRdVQ6a_G@2IrJ(ybc*V&l0!cg zqqRy7z3|<>ViXr(6j#ZiSIMDQ$)Q)tq1}^rB0_$0=zWTSDo6+IH%0@$OR1D${c%4E zrr`ih3!Ub%|6?$W2AtKoLmBiO$)l6I_yJh__<>Xugwi-r6815>q3BHJ>s5+2@0)%+ z2$45|hLQ_T#5nZGS0b*+4UL(mN8#i?P6ScoT)`CRB|*EimH z(s3-+AmKQ#^;9>T{+fUxCd}?(pvP#?`|W6L(-#+5^QUg}ywkck?{(W(&3OjM+pB{9 zw|)3OFS_y9Unoyf|J!f8Ez**Bu3+5-cS?AjBm{ulRu)KteR!E&kgPr zCrE66wuS#6YPO6#J^1gc-Q1uTe^(S92>NM!n?*880!4R!2pIF}r<3_JH0=Y8Ks9%EK71hJ*)#zmoN?AV zBI95(jrudn11~JcVk(c+?}RR=*_3i>c{Htvd5sYf%^^VH9%xN)E2s@J)MD&d`syXr z**)fF_eb&6=+*~z`yteah=|yMf2EZ3jmwtbc^vicCh;hqB|wh}WPCscO5BD(BZ6Ts zfp%zWrDyKE_mr3tNnyaB!(cLu0Oq1e!s)|iNIuJl@zBCBy@S;bVt4^p2XAt&3vB3P zt8L5#9C9-K{N&~`!ywKS&~Y@40=#?VR6Up~$0^EvOEgU6#5Y9~%*7A086oi$D?swE zro2j@zm)X(fY@O#9t|Ih^5;LZ)4&&yDSGACu=w7s{2Eq%4bP+@TlqB<@AT9AHDnBB z#DGZk?#gP0QpBs$dyaMCg&w|TXS+DZLaDkzrY32SQ;HGUQdU^ui8JSzQto^=h#|&0 zd6{yTl|`f4lKIo2WI#}pNao7n^HI25(fXP0!m@4nx4!-Wy~wvrq6!wOqDp0UCAMe3 z5=;2_%Ep>S-K|T{(8_GIOtaCG=livs=a($|e4*|XrUGdBSh=uIMP=5<)q(S1E^P34NbQn3c{f!P0pzER zd3IlS*Trhxi*9BKZBx5PTFiE`x>b@z)*1WB3tv`L!&QWn6Jg5cQ7zX+#aS#T-HKCH zP^cnsP3CirUKuSEPhMf~oboeI{XC{X*k6z^iC{9(pAMaox8Kt)qar_3c^R1qpyyde z1<%Rc6~L{+ae^4}HwlBZ!ZJ;lK9k(k7iX8J&2E{4QvRk9YX$!wq|!yBKv}fJa?ip@U#>LeTwqY&9kr+)3vZm2gw zuzdPl0l?31mKT%yR2#mSQN991=QhO`1Lj!_@#Bm_F^?cTi5(t>env}t>1buP_-a^O z#}c2Ol2g8(pDB2bFd|q+)ua8S$9oP#{M?7T(*7+HE#n627i)fZ-M2+3#y}SSY@ZU# zmcTW*x3tXSPRoB9W}ytYPhe-S;K%pr_j_@sp$xL~JMdN9u%(iRH0QvRs7M~3fPLWc zpN)U0GF+)MUnQ)r&OqeMsg#4L%td?(PNK4|?sH`&<~#D$wsHYxV!@J-spKZ@lSa3} znFRAse=gClq_8b85k4CZEUdSkQG zQOw7ty6&b=ek|r7jSHQN$rJjS7D0E;ld(LUS;$*?P!L4_Y4BzNcjcmOs)9YeN$~JQ z7*qu38kL_HazCayEaH6Jk4L|SlPRW2rsNB~Y23T{b>MVhau&X-y##|Q*8?wfxMld1 zrC+Y?0PRBm1s$Pj{?G3QoyLg8U@)&UboE)3-pKVzk}un}dR3F$v5qgNCi$wwc*zb_ zC^5dO7#?ICkXIGMo#btmS-TJ;SDCdl0{oviwP;~x?Ny@eQWk7g0K7sM)v4F20Ql!g z8?pt!SM|JC^}HA22PzYsC#vWD44FVsUxlG2z1etPK5nu6_KVklT!vD(k`={8vwzQh zfXrmB!0kl0isxuC^`Ii6n3&z7kl7Qz6q#XZ)e9C(+L6WdnzxQjQ1FSZjh`yc>uC>O zG{(vh0O5a=)0g`YRoWkSUYY+@>7>rV{WBiOC$w^=(X!6zu#GzPu4X$5w&E7)2)6h> z z7qDnus(^)0TE8N9tBa3PE*R@u+?O=+lFV$?NNxFa3_az%UI;by9xEl<0!p-HRnRyN zxc<1%hXNL*^V#JRXQv?+t{b49!L)xjFY96;qU`DuA>#s4ay}4hPGNCfS0zKwv!*ee zhg^MnQuTR|sl455{K*m-?!JAw?Vq8)@An`$h79;(Z!~9a-R6t;q)O4$$A-0{Hsxf*$TaI1piP1rO`k< zYIKfUEnhy^_F>pZF)p9O*$@*O#uMzf;qUG2yz&7P`jhB79KZy;_WNW1@YUBlTkt=7 zoafL;aR@Ko5tHk`@KWBPGnz6UlYl<0!>&=;VV~OjFSvoX@x~LdtJZIz`km$X8>IV1 zaJO#I3LK2b!>AvSMfV{XO%pD^d)dMyf3Q(7>^-{3behLVnxcVd8cpxwnQ0%^IYc-8 zXzKNm_#`YtTL~paCn5UECShOamAqrbkb9mF*p#U4IXVRZuujsqm5%@m&YX|Hk}qv$ zT4NLw(d`%4v(aD}_TrmfG8>QM35r@&j=1P0_!&z{jQV%+gk7%_b5F-&K}aJA=@~xR ziAl&riA=5-&nEp)CjY+<5%#k2fG`<%&Z9()68NdN614F1fX=naamAV8c%?+R26+6k zTBBN`dJATY4}Ate!t=`HkBdj>9w&Me3>M>A5B|GqH${J&eqNJz7vEiVWQ*KRTIVOt zZnJ&XI&XA!UvR4P8(U+_NcrS&to_%bAHcqFH zJreZj;??KX#wdKo7=@}l`dWZTfF%;PfzNtBo~A$_porn{aSIQ0Fa><^Fh@=59AewGhT4Yw(cCAt!O2{*HJ_@-!eA{Cgz3c|r(K zkz%C#Sff~F;HEXpvjsQ7G@QWA98#B$zI5}Hv%7wzt~ln|zm0$)kv=tIVG6m-$u|Jz z_u+j!c?4da$#J3+yK$#*pi?w5AjklWBM_pU0C;+D~8`_z2w7 z1BvpUbY_MA36SLG8C?%)dAOair1gm!ljdNg9%jDHIzw=~zuNY{3H)gA?b(iS z7+UOuUx$8b8Fp%4U|*;Eb%cf`9O!48Lyn;s?4F#2Vu0zA_a zvBhhfc*!M(*IJ4`YkW~J05q}x5p*S2PaQnaZ*V7VORV(ogHbdFhKlBZ86AHMBH*Kj zA@PRy$jic(Z3Pc_1_673Ex!l00MlJU>)B`+{eou=R(?%;Ogj$}1?`Gno|r2ZG$97e z%A*Xgp+p7vhJ$*IO}_zun|`PLBV)#8w=FMry*(|OLHKbT_HlEme+g-#XP7b+DZ0jJ zc`k@`z&#&@cp8F91WUL^P6E?+ZY9A@$V(*Rr&{Y4Xqt$IA)ZQ!N68%-kwiPxEFz)0 zhXqEMx|Cl`UP~{o0LFe$#~ERbtW1m;uF;=g+V**=1U$-rP3dZFt`?0|C^p>_T@hf| z^!Qxf^CsSbVD)J43azaV>@^S*fB|of*;PoSok3?GgD~;n{sAmktJ8ba2}2}?@axUD zYkw2C)*40AC>XB26=HwzR(PVrP$4kd1Nutvk+O`CP2sDj4-pXp^9V<*$(82=cUX3O z6HO2oqkDG$WcrQvTukZSixbU!3ifJOF;TLsWExDS38laa`ZzIyr@$uCV~EQ^d{)Wg zFFK02!fA|&Qw1D-AUwIoT?Ez?Ck^MI2UKwKxW2!!>3JF!&9_TLzRAIMGO~P9Lrfy$bJw(QRlhW*Up>|7Rj;QSt_G zz$<{Bfb32NdTQJOQ|Z}wK-5SK5;0DAVrbN94Db~2tkm6z^#464vUnmk7(ot%qGpQeTFICgMwRPQVvgnghV${U*C8@Y-YeT{TAw%`nZE5!F+he zQP`yA;lRl3Q{OzXK5hf&m`9X2`TqD)u?u^^F6{bO2n;D&N{ZZ=O=G;w>7FpF8EAwz zStd*Dw0*s`)QO8Fz$@+vfdn7L{%(4b3!p1PLLX`VeJ~(Xcp5GBIh=$d6)?TEnV(+Y zlRyXb(ZX43+K5{6GtXBU9Q9h(wVDFN{rF)64==HF1_2`WO0xU{hnZ~pnuUVxQHM1K zj+6I7@RM*hVb{4PfPqz$*=U3c6|Xf?c(X~DbAmSx$d`P+1Q%vsLh_QBPUyy@tYUq- z4N$X#{1h-Xal-s4^JBMwmdJP$!#vbrLrxs|J`ES%IYm8@CTQ-F6E<_@1voeXrrY-9 zr3>5f0c1mh&v`g~*Fws5kDQul0VocyQ!NaUuN9$-ThIRS+>BQ370hsiTq-K`kZJM* z6VJ8iAwYy(Vm|Ouk^q(K-!WQ!0O2BjNIZEeO~z9*1~!}IQ_+Zs?>oX6fueUYNJ>5` zGys)MEuTP`w*Z&xc&I!wgnWgk9IqQs-Z3mNSv;F{&iC@qIiTpwKH?ow0Y%XxK@}sD z@5M8TESz!YY{?fq%^G68lMyLY8MKM$+YqXNFbi#b7|~u@Is+@phW8JdGoTa5GHvEI zM$`K7#d){+Q`dM0(OtN(tY0ho6LFkm~R$UPu zv5e|u5Ys_d6|aR=km8CFrwKX*GB~-N-G|IF=ihqbWFm`5H;K5C)E&gDwr4>&Nr#Z~f ze$@{rg)`2Vej?QCddMOo&k)dUmBC{&2_CiHF%U{cKntW&s9e_XSkzyf(!sX(&Gp-s zWRYKg^VRiR;ZZ9!D1t>nPL;AI4U`yf?fY#w0$zP+*l)bN=e^`{)K{E=B<^nnuTBaB z**&we(1x0@l9+if4-bHa6zDV9xojLa(W;Vfo6${9FOD0h^tG(zd9#arcUiMDV^Cw| z+3s4hnNplG_bqvKx-do|>mj8gla=~fDj?X9>X=ph#B5LFu@Dm@!dTWEv!aDHdT%Tx zmeB1eT}6Tt12@#V5R`^yBbtmP>M;H|nBb*5q=Cf=O^@uGBX4`}!hV37G`R|`R3=j# zO7iB^@B)sKdlU@#J;4y@HX5rpg|I6)MN{iO41-^S+fZp1lIT7f1{06?f&fuF9HojE zX2c`9h!oj&Tt&(-qXhX2>A|o7F;f2OcsT3b;_5X)Wh&p|C?LystpjPuoyJLY0mME4 z-FD-=b9vDQVtsPid*5nzy1mBv3DE4*(;lV2>0b1@$Cvhny;;=B#rf&a`KMC1gC4DR z84e)ZwD&`^d5KrcdGi>rq)zYRvU$Gvy)p#MoA%<_Gyy7$t{**do+@sutk;*iW~kfp zZKY$!`3gUx zF4Uu&gfNBqA-JQaSc>bHFhs=!YF`b)5{$Ho3Vxo2Jexq*pUK0u9i<6?nXyrY1lLOI zmF5xv&_WU<>at;o#kNy)Qof;jSuFBs#~IqShah6(g>cbltrkw60a`-MP~4Xi(jY~~ zNOU<++7cY3t$4$>WHlEMUf3B5nhYXfI;T|+i0WCqR+sLv^a88F#hdscoU>HN6^LJo zTRmxkMAGf_-d~)aUVKOiB{wuAvH+fTKZAW$y<`*WW~4rW0rXEtkv}AU36MdALCo&%jZy@hF zyop8eM9YAQG*j3HU;?$7tHvd8C?_Oj^ctrh8b5am*(kF)aXi3!p|a!@#G=N#=4r3- zzT0e*IBodBmG^OWb=qxRs$O_Hxm~3d$YyWn%^#a>gYy=0=p-H{UW!O-sFV1@aA$$Y zWq(5?;f4xC^AacSWVxisAiu`sf=)RSdnIh}X?{Hv=7$D%`#8U0f47H6QFB?0clj!q%gBw8g&Caes;; zCCRvW@_A-Hsv7<)nUfPMmi#yFX#De`NDVkb*=|;#cLD5+cW)u7ri={gQu<~Gs*~z^27~k z14S7Y^2njOI4u;kI`D+Tl&cU4&7df4e=vPShiwdE)&aNtLngwm~unc;~PtOGN!+6eRxJl z$+bBe{x?JsP~w$pDYpDeU^BHfmF1{*_p~8{OlT=&Vf`2D$ZiF`C~9l^jmGE|5DJYf z&B=2*M{J@C(sgi+j(>uOH@#cNZ_neYREFKyKAXbg#fuT{H>UAGxb|4i0Wcad`$^gh zjc1sS&R}Aw3G%j|0y_&M90mf@h_P^WEKd>ZIOUAUq~MWV1)4{3u*oAuIGGC* zZ%mWu7Ve1Kcme>uS76d`@vV@AKzmHmH12}r&Qq^%8qlYX;e=4mp5k7qr(eQHiyptS zIIGR%@myqXADs$JgNV z`y_;GH-QUFg<(UtAkHKknk^LLsW;=vw)ajuVzZ8kU6Au|PlmIx#x1vr*dNt~E?4?& zBpe_?83DM+ah0Tasn{s8Usb_Zfll%b=_8Z;s~Q5QU+1sm>7-gu0;!$7RKRix!6l=+ zwqi1SC-aF(Pafg5C_C11bOwUvL{Dz27;gJl&ApkCkxMvuGBlglbEEXRsRcdt`Lu#I zc2ZHE!WUB#fBGsyJ#!*A*tb)!WS#&BIJq(ed#sN>h+L}Hk8oH!zBp-WpP&w_g!C&I zMKOMR%=(8(I1Gf3pL1pzr?7O7&Pf=qcUXLJ;hCh|{pwDK4VK!Fx$u0_w&c1Ky1MLi z+s($AbSeF@+3PghKQ`NoPtC0zs5?or{a##jmo~Mu-F2P`DbJdv%tm=6)t$;|>#Wu7 zU0iiL-NyMz>-@XkKd+kY))Ee#)1jyC6b!*chkhQK=#28G3 z(QRLmW7zTc7t2B8j2)!z#86SuJ8S&ZI=ea}x3kN}&!-oSlU}Fwe-_`aLgm3+Q-yDU zOwE&C8-H8Q1Z~NFu4y4zf=gyO^AS?_ToXCD=)G$#PLm9QcurJr;7ten)cK+LVOf}N z+J@>*>#TWp(f+yj{_33F9v7ZdTK1?rp>FG}33Pkmc?g#}%id3ULB3|=(s$&Qj=j8( zhM}Dhj3a1Om=E{9wX?nd>gD$I_Frpn19Wn_rp(j9TcHG%!JNpnZr}Mg*eknpizw-A zS`PVuV*k+Gv&r%O!t-k?XEKU8NW+TX*kt>@M>z_{NjMwCTd4>S;W#Ab`Uc&eX_zfJ z@YdyNqx=4%eYTz4ZTs3v#8xMzrN5pVkTeMjP)Tp8P@$&{bv(`-`?P>0pW>gbBmL$ndheW2AVw zr)5tbk@c6K?G!HvaqVg+P)bL_uyf9R@F+58h)Bp-c&k3##lo(jfGl)VNpw4sIX+}d zmga@gGcWE&zGw(Du$*0*!wEe>{Z$eTLN=2ow)}!I6-lIHgJiNA?v#@0!e*08p^DDZ z&tWTvF$Gi;9*SI3)Y20z5hpQ+#G{dcLn?Z(YIkOkJzuGf#lUR6_AYQq>U|wZaGg z5kQo@_5%vU=AgWxhhlIdJcLvdymh`Lm;f@VK*J**zQ<5H6!6`M=K-^ADl<4H{25WC zckATbLkt;`p_{7c1(Rs{$k`(?n;5xN80o~qB+nIq2#3sLqX5k@+nB5X(Brjr2NlsV zTmYS5Z7aqAAJXVkMo}Q|bOZ3sC-YvRk(%C@mjb)8bDBpr9z~%|eMVc40+uL+%pIr6 z^6zH1BEia3Mg80d{|{CokDG`@?o0fpEE;kgbc}}iO&%GAy)`66522!fh(`losL7a~ zJ_L_zOo8wk4<>NYO~T)z#0uDy5x|?Ax(8UIK|tUedTL&n^FVuHP&^dwUaXQS5JPYs z!KIztg#*N$EzI$xmPABK`ryc@DIy7jXn>ipqS0??eWq24gi(~^HN1hXo~B3?-NJY@ zDLgBJD}sCpkqeNX-V@22_^oF5y*VWRAj17bS_zy1lkE{jb>jfMFxd2+y&@3L``QRV!qfB3&Y<@ar*$HA!`FbiSb52 z|3Zt&3fV!8Je(5Yo|uU3XWCCUy(GCeIA47p(4%n>1=jm|c zyI`Pz=}BN>oOer9!aVAgttZ({Q&7G z2Nf>FNI1!NlsWpNj1QD~Y!aQa%tNTfz*gVW6+Q8f711G3t1ND)vI-_Dx!G+zg;U5j z75EKfHsMSKz@X;ru9tzSbgID^W1vtYM0U>RXh(Ub(a_)9+1+0g9$0Bv4%x*pH2qA|$&7de zz(da(|9J4+-+_ETvU1dNCaP^@eQV8CUMu^OvzViX;V zj7B(Rk%NnHWHyR^orRw1geig=v!Eu?)rM^LJdw8-c}OCrF_FO!CNgH?;W_(3KOR3y zepUL^3w8@*ub z^S*jZ^8fY3|H@!)BE=aDL{725PcPJ4XrUQSq%j4=yC(CP4~@O65z;CcU##2A5cAb_ zJa|N<#q@so*89uq?@9km&E8i+DYi8QGP~Vh+88_VcXV`s|L(p#+%^BjkNZalFaNT; zxA*ekaR2b=CH%g7xO=$w7k_7IGbs3*VKAES{{^W|c<*jk_WTR|`lT=;nIT_|W^CaL+dD!>oVY@Yl(YWdlBLc%EIv zIg{3E)4XFzS{bnKi1vt=*N4pU`{FB)9Ai>d|eUe@=kz6H5f#678^?n+=n@zHS5ZrE zovY))w7U8|l&wdxJcOGnQoyLe1n2bc16=^`|Blu+eRDZDgb56hlGz3ZH{*Ws;~%^u z?;}xYf!M=Q@_<~V+7sG|oY<2W90Ji3FO+NyzLMD)%B&jVISWJHAEQH>tlACg)z}M4 z`E`DQ<$=EMowSa-PfBN_FD;x5zM|%WUrMIZlDU>>77f(Na$N=@frewQn4lu5scXI6MxW1KgAhSr zLJHopI*vS0;)qyKFIuR0e_ewa)~o8&0!OOPm?8w+=^XcfUPR$-(2y0ZfV=v;$n$S} z7k7l1pM3#~-v7D|oo^TjF1}0BCf88)+OTepzw+e)e_YZ?6*v^7VNED!iX7#FQow@v z4>k+R;zEi4_e3)m#vt-l)HJR;9`Y=)UZ`J&VenT2$>48Ucy^S9H*f z&=kTQEfeAXVCD+`-^RRh*`;xQ+&sn2%Vo@M5vFzG|9$PU-I^U8tdSYCk2O0u&vcd} zPf3k$cy6U5-J-*YZ%^FG^;^wwh$_4Nhv(sqfN7}KNtngTtn5%R<@^*`*^*NF;>}S( z1E9}mS_+jOcC6v{b2$)7ztY$dgrls23unzJAJ**k}w-#k*bjv(kVRK*a}@= zR&0a*0Y*>#0>Cy(+K$49bqUo>L*B(&5Hyy?Kvc3)YKJYa102^L9v-%Z&SkqF->*Sm*iJN)>KI_x` zuDwAP?wBl0K+1ela)^XTnXo@Hw>} z9}pzZXfB3hoa9kXY(yBBs_>jX2Ty~&d=m&wSbkk})Ox_TRCRCr{K|*9leScfscu+f zP^I3tqF=gnw^s#b6+u>~tTc=Z+qiC)gQnZ;$@Kr0{YNcm6810|{*r7!#rB_roui#2 zVgEVUKiWO~%g*l6?#|1V{pUIUicK?sy2*5QbEA?mMN{cg;E%&WFp~L@0COvuaWqr* zyEusJJ0SG`K|{UItB(XdyCT1Z8%sfA1`4k>j5fwimx;n=n(xd>f`5{dOB;@(Y%q1F zQ?(S-$)T2p$tL#>6wOjMj+bL^(w)lRJYat99nm%y>u0_z?BC4grl0BMrJpDxk!Krx zQldg?R${&zZzO%rGP;B&4pcB|9WN0T{^a}nne8E#FfB=7o8H8t4H78vC)-D{s?U5Y zF?>4e*V)O{as1r&Fr}#=hXU7TzA(4aN4LCO*c*jfD?`e7XE`hBp`NQof*5;oj-?s1 zEWke_PfTfoqMWoa71A1|QowA?2WIHrdMGBHVGnYDrtz_hrR~)mS$&qdX{G6ZO7s8J z+vZf>p8C6<>R?VJaFL*Azzv*t8X=@~?NZOG+oWi<1$aklZlnCAYZ%%yg>| zbLCCQQ1!Xak>%oFEpwgY3N90jDhfrZ8`{^-jeo%g@ll0!u)dp=FZBtH6^l7jA;RULjiH&4HHEW{ZKbA65Nk)kpnRP)AR-H1vI% zV^w*sSD)3w$a8Pug>mE0YGKlyW#P3c*P732dFcK&$I_Ie-RH0v<$6TP7ju_m_)+4= zIq(i&d!lI<)4R;nP2)ISmNjW!-b(T=zh$k?Me-^vtTx$u=CwJgUhTEbiGfeJwj#n; zdwJD}-!re!Mf)nOt{VMY@_KT;>rH|#6r(s9(G$6Z)p(cHTY^I_Pf=aOTrV_(JiQw0 zj@$~%D(cBnW#mH2qxsfas7$o=XE{(PQSZ&6%&V)qdm2TYf+dY>!cOYl3K^C{hNOfq zO609oizRYXlKx#Z9569hj7>5+T7>UQl0u1_>yY<=?fT6l@-=Hki8 zDm%+qsO)Rewc19u8T_ekvXZr~ZnDZZ znH4Kg$bJ^GmL*)S<0h-X;Ld-WRb_e?zs%GUb1t(vmsssWtGC2O?lZN-{QGRqRo1!F z>aBIbD@`pod!^M8%F3^`daJ50^&V zUib=?JLNLeVZ0H2%`QznD#eqW$WCRk|3!lsnmopg&*Anl*G3eO~d=@UPnCSg1&t@HJB=bLUpWPMo@@? zjnBOXUD2wlKLpE~=|9zvh@I98)lZ~1lOD5{`QGT>`M8`CRDcP7S9Or;?W%fBEcO%a zsJ$>o;=iafWDg^&Y*0Idu?w@1B3n+ zO7g$&9K77q`QP_n{so@y9rI|9dKP(<=Y_D*yW`|NEaZ|9h^VDAs=L!NPh< zpVb2{Xr2`B)RT+>6?Z3YMg9ocobUPB9SQb?aGb&nJ`gAMNY&Y}o+ws#!i?_Y3DHz8 z^GZ3ICcM?6%Fmk2*i^7lD&yg;m3TZ!CybPnUQ&{H37BeW;`0G2^Tiu#NeABNq>&e? zY3rwvS2M4hNM5{IDU-Zw!I_lu+M-yHu>HTWT%69BEmPFy<&;k+C>F?#zm+AIw-OV} z;9P&r>|!l7?VfOEaZG*gJiS)$UMfv*)eODv{Jg8AysM;HCk_K#%!$Ag32J=FglzT98ce|(ldt(v1P-}_4G zR9ObhtYI&++$Z^#3*~v4z6L)w(OO^66{6WMmgB z)7HF#jP%72d#;oC`I*XE%*A~t)RYYpYK^K>NzU$?>Nj=UBq`mMjD?j#Y*xFKn96tE z4;A?&#K5xmJ*@OL8uWfU0+5TTH-G9j&pWM)^Io@o)wCpFxBjQ7{CvV8U=7NyK~~;ckAfBzK4x zs!1JY??ToPKh=~p#)AJ!3mWjdEo$f=zOklDqK0}{LDrzwl_U*&k;W)mIRif}O}@av zUx;CZC|M>~n3w>sp-4e5N(4|HxdjPR@+=%Q4+T{JQr=Xf6@Vm-1pJZ!iG>FI#KZ&Z zmv5|D10tAD5fc~{ig1BwTQy8D)@qKUa6u3RQ)k>hX>=PtXYi)grKl@DaZMnHydnj| zR}@(l#b;cw)^s&>n+Of}Ww%XG5@5=O6OXK9+`^d>sPt4PmRLIx@@(#8^Ttn!+XGZS zme0YGv}sH^linnFP_r2*Ri-UV54c#2DM|NT8MW5=y$${1)>|!B+k!PcPK(uQF!_cS ztIbFB46hCNpU=h_^yyteSB{`7N6;_85%ddp11;9cBCSKgrw4C4jhGeP?eeL+aXtCJ z`v;pU&H?cj4(WRhjf-pkA2~;?z-pRNv>Gcg6s|e9s8ebyoH=D%!(KDf|Gyu1UYY;# zQWl@Ob*ZZ1H~vgMx~fcb4sNFb^J)EcnFG)|_EH^ucH7*R+18~J7YYos_TWThh>ghk z-Fb1QfVy%Yp3{A}4uJn{T#YUL|2+_fE$OPcHH=2HkK4)OPQa+;e|g~a|Jy&EQ#>uar>N5et91dj1Lq1p7+~11PqnJC`PU37=@#52y zRxbE?OC^8F%#nLNg^u#u$Ek@A1@8tc$bG>#`u}>diKo+Zqeu|Hsi0d=~uQ z{?7g`@_#Q64_5r&bNtoz|H$|2sOlB6i2p}7CFb$WC(F2!CVz$Jsv*kUs-aMV2~{Ej*cn5&jXqit_IKQ+`kBM3bx? zWE+NziJ^aO+~N=FH!@xF2ld-48k#=Ip*3oX4$KE!W>xeeAF$RG&deluG=C5ZJ>38k zJj#m$9*C@?{!JWj_`lm}AK|A=-3!r;$P{UIgil^zKPt)Pbud9SUrwiX?TujK7-vv0 zO73jc{A31E$NTBTp7?TlrrIN_GF0TKPUu*zGCQYQ^AN)%K*6P6 z*u<{9-Ay@Y2@d7Dg$C}ml0$@5 z63JeSV7HtdSb>7`p6h>z&t*rq+9-88mPgdlbN)Fk?NuDbU_n?Bk6W@%UGCzaQW;seWiAiuwy9yFg=)`PS*=X7H6#AW@UcUn##CU@uB73H%< zvcSYs4s%?wyzUJttY-enb%=}KOuS;%Dem_T0&FM0WhS*Q2ZT0>GoK&rf7L_Vs#Urs!# z^ioJV1X79>Ih~J+o);ix`D;&sl;xv-CP-;HFq9ybU68Olw zmi1v42+r$A+=}uS0I4`SKdR$Wx2G6R0r8Ax-~n<*2m55Aaj4^)VtMthj=Ur zhyLiEOit}r#Xq{=$}iojXHhB$mDEtRx!ZgNM5QruijvxWTWZ-#UD`E5Q!|y6+B0f^ zG8<8;Z%gBwBRLrg;7a`!R=%|RR)SQej*TLei*%D$3o^YwS}9%`gz3tRc9*F$QP^9m zGNRp)rEIU%oi0>3|C9!ff`JS7m@eG6$i^1e(3^j%rM2r8nY5#fT(-+swR$uPx-Ht3 zF0HmePkH=P3bCJ32Uc1IEVZ;}(02(R+?|a#{vQ-O+#C%swEySc-YWmYv;2J$|IfiATv<^c1}pVLqbaT2Kv!;{D>u-kx`8g^2(G+A zSKgp2Z_qFM&*J|wXM8yY0E+!T504HG_tX5}?u!3=o<9{DKET{bdpo-aTRVGOJ4ahP zJ6n5)Tf4g;di*WA0nz0~#$0}{JT}!2m2-w+U)WWz*B=jO3I6AyXoSguj@SI(y}yB! z6y12~AuzF0>$K6u5;Qbm3^Dqz09=J*}2bJo%a{*vjzj` zRi-6;>@<&iA6nh-d!6ppJD6>!ae8|3LCoRn%o}ITvy1l6YVY=Uv-{FI|FLn}68>k+ zZj;;XdVi#G=1t~s7^u^ueO>#G@@zSpnTRCYqr(ea$aD?6UQFSac=cT{7(Q;@#FP8b zPFD^8-b9mRimui(Jf21UN}N-DifCR+G^essP+|Z_FF9B%dOL{*l+TT|{AQX9S6?}J zE&6JVfJ{!q`|*^bzVCwpMd!1}Q6|w_;HP5nr*}YPfn;!cxqf^*ivATkcPeve3tF$NpV(d$(OSraFLyW1^WxjLDmBkI1`6 z56qQ|TqF3ha~^pI+&L9oSuz`s;{$JD z7NhU=)Nlf%@ZVLt=^yOu6gCi(;E)!|=Z%0K;3V#&5o7T+W<%^_Vn{$Nemk>B(doO3 z@2)y9=x)*Tiep~Kw;%?U4%s?CL1><}&Vk&*(0f(dM5C&ZKfmbqE}LyUrEvQn>>N~SCod+2QfN(=gbbkp)J@!|>nMj&b`d7H;q~nH z7LMEoW97Lt@e&Dh@|$L`kY+iNymu}e$4#6hup5UayQm+YUK}@0=_|F_&1-Ys?7nMV zaD%UQ>0F#%5&wkO4DRus#rmqpZ9JZx*7uVn{N#d2i_y%2o$5Rf zboLm<>&*B`+8`91T=w3#+Q3FP z&QCx#I6duA;>GSouX}unU^_6NYrl7Ke)==D*v)GJuj>|jMJ;+iG@F+wrkpoPqUiK4 zE}Q4{-oD;4V! zZ=YSAc3YR~eI7g0$zFaZ=gl8U<8XLr;G(s zZ~K2+I@`2=ry+=hKVE2^^OHL$ld+Z7ID;x`h)ELE88mwRdeRwMSU9&h%*4wWZV$?)-Nx z0`_jf9^zW1qM`Fc^8>YaZKF^IyuUhUs!okvJK1fWHDMpA&5@>I_MylUF~`{uC-j&# z|C4Y?7LsXP%r$3De$kPtGenBZEFLF)9P12}X2*(0a-ZcoW4b*xi$_nBggRrUeRRu5 zGPsUBZxvudOivo0VKGFUs}ASUFv`y@8&$# zxA;qogOtyu1@+~QA*ZC~m2=6br)Q~wMWNw4G>_2_lxsR1aGjU(`t~EtAEs{&Zz=wUU)30e{$?a8GL%7ORPRFFD zLCm?hAw{&`;S>RR<`KMGi0eT;@T;tK#C$I1bdENxAytD|Z@)kGcX##=^VOU5;)fRX zoH2n|4UFYdd$QY!%m)5C`ij6hZ^B6ko92%~I06Hy8lak4Ac>&_hN}3sfJfeHQ$qa%hv=K5y9;0wL zKtvc00SdRl6qqtKoh(r@I!8^EJj7pTjY9b?<>FzqU-PD;(7R;u!o~xP+6NR7zs{P2 zirSlpSjgKzF)^1r&E{5oCWDMH4=Iqa30j&rMZGd}FAR05p0@2Ou=dqgiWMYiT^&H!4|xGR9<4)<&!@P5=1%;Em&fs4UhcY-7Fj& zZIvwl_~fiuxsEZ=eW_?ZlJd?6-gkK>wgOTzEn_Gz@_-426$}OgZD6I|Ghw z^1y_>hnwf3`#q|{P`d={$dHOkZ{}c(+@v%U~3%@FS~7j*9DmGTj%dD{9Pw-_^}H>XFvJ7 zF7R{#Uv^#aX-xoSXv=xkl~!dv4@uT>5)1Fm+nr z`Fk!X{LuW_-*bWC@+W`K1%>Y}F92noaDYF5&jp6li(`M!i7f#8eHRp(EjSELFtpCF z=Y1z2+CTdHE^KLZ&l>)|3ryz?#Ke6Upnmwt-**A(xCvXg?*!D5zwZLm2_4~m7oa+= z^B?>J7o;vOyZ(U-QjN<~|G)*Nla7Djf>NjR{rgM*zy+q(B`_O^QU@+bwcCh}2QFZt z2abQ>0v3Fv&Yb}J{uuD%z=>JV`M!VXf*3s}4>14G1-R~Mr{N#E3DTv1=vw(Xk)uN= zRl$`Vx>nw8oZ@aDx>kM+n|A0#l*{-2*RF?GOeJ$<5BdDW&tV`W6`-dscwC)#E}JBi zIbnjYyRhkWe-ECz;CXs<08d@uJOv`X!E@)W2hV}@9=d>f)o#I4C$U1ZU4Vr^TwfkJkKgH!^!#hV zeorEdl@dy##7DL$Hyi64rAWdA0Y?W^9NlzvkV&rJB7-hl(#}hV)9bP>5k(h!hu-eG+#9us#baV(#^DAw>k$S zY##`&dFigHz7<1XX13;-#Emzlo$HK%b^0e?_RTCx)EF1D3e7QOZbIKAOvs2`39Fd&wQ45>eK=9^9v*e-{l0^tr;oL|PUem|x+6E3Q~lmW9Vw zRE38ZUn|T2Y0G>!GLOVx?Q6LfRgt%AZUq;U61pggv+2SVrKIOiMo~)U^<`5OD}`<0 zeOGdGIw(qoOLH-*VkgC2%HY*0OD3J}QpT@KU94QZ^Ybhz3R5(gnY6d&fP!`@hZh;A zZ27tfM9z4XY^;-Np!hGJ?kK{uS)q%}!0cvYeXr6_4s7u6g*0|m>4RXA{WFP5#pT$w z%=}bHyx5rcGL)ONPtjCbtkd`)zZ*q&DgfTV25T{diYiHGZ<<^ebKP#vRj|q&F*TY z7^|YirK^2C8&O_p)|pab&v}> zVc3grdXz|Ng3>0wpR=X{BPZ`yA4-SSJ^}Afed!$6pe!(CimK?x{#dGEY+_$ zE8~eTY>rh&wkx<)p{cB%P5Z`UB zaMWD2u7$I}TI<3&w{p%ikDsoyGe3&g8ojtA&jK(|9pg_`XH#0p=b515sQFWI^jFzi zq5kMbeW2$YR@V}GrctY_8_GErts?NtwJe5Cz^|@l5lR5x)Us3pZhiGih4q$dP0Exe ze)6wsAj;QzjHi=oJr(LspcjT?P9pL@WcG3X2g@)CFWB#&umaQSZ}qqOTm5~SzyA*s Kb-s20zyko+Gsv|7 literal 0 HcmV?d00001 diff --git a/spec/getdns_core_only.c b/spec/getdns_core_only.c index a1852c41..a0cdbf8c 100644 --- a/spec/getdns_core_only.c +++ b/spec/getdns_core_only.c @@ -318,14 +318,14 @@ getdns_display_ip_address( getdns_return_t getdns_context_set_context_update_callback( struct getdns_context *context, - void (*value)(struct getdns_context *context, uint16_t changed_item) + void (*value)(struct getdns_context *context, getdns_context_code_t changed_item) ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_resolution_type( struct getdns_context *context, - uint16_t value + getdns_resolution_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } @@ -333,7 +333,7 @@ getdns_return_t getdns_context_set_namespaces( struct getdns_context *context, size_t namespace_count, - uint16_t *namespaces + getdns_namespace_t *namespaces ) { UNUSED_PARAM(context); UNUSED_PARAM(namespace_count); UNUSED_PARAM(namespaces); return GETDNS_RETURN_GOOD; } @@ -341,7 +341,7 @@ return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_dns_transport( struct getdns_context *context, - uint16_t value + getdns_transport_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } @@ -362,7 +362,7 @@ getdns_context_set_timeout( getdns_return_t getdns_context_set_follow_redirects( struct getdns_context *context, - uint16_t value + getdns_redirects_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } @@ -376,7 +376,7 @@ getdns_context_set_dns_root_servers( getdns_return_t getdns_context_set_append_name( struct getdns_context *context, - uint16_t value + getdns_append_name_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } diff --git a/spec/getdns_core_only.h b/spec/getdns_core_only.h index 4c627052..644bc00b 100644 --- a/spec/getdns_core_only.h +++ b/spec/getdns_core_only.h @@ -1,4 +1,4 @@ -/* Created at 2014-02-05-21-38-00*/ +/* Created at 2014-02-06-00-25-11*/ #ifndef GETDNS_H #define GETDNS_H @@ -12,33 +12,36 @@ extern "C" { #define GETDNS_COMPILATION_COMMENT The API implementation should fill in something here, such as a compilation version string and date, and change it each time the API is compiled. /* Return values */ -#define GETDNS_RETURN_GOOD 0 +typedef enum getdns_return_t { + GETDNS_RETURN_GOOD = 0, + GETDNS_RETURN_GENERIC_ERROR = 1, + GETDNS_RETURN_BAD_DOMAIN_NAME = 300, + GETDNS_RETURN_BAD_CONTEXT = 301, + GETDNS_RETURN_CONTEXT_UPDATE_FAIL = 302, + GETDNS_RETURN_UNKNOWN_TRANSACTION = 303, + GETDNS_RETURN_NO_SUCH_LIST_ITEM = 304, + GETDNS_RETURN_NO_SUCH_DICT_NAME = 305, + GETDNS_RETURN_WRONG_TYPE_REQUESTED = 306, + GETDNS_RETURN_NO_SUCH_EXTENSION = 307, + GETDNS_RETURN_EXTENSION_MISFORMAT = 308, + GETDNS_RETURN_DNSSEC_WITH_STUB_DISALLOWED = 309, + GETDNS_RETURN_MEMORY_ERROR = 310, + GETDNS_RETURN_INVALID_PARAMETER = 311 +} getdns_return_t; + #define GETDNS_RETURN_GOOD_TEXT "Good" -#define GETDNS_RETURN_GENERIC_ERROR 1 #define GETDNS_RETURN_GENERIC_ERROR_TEXT "Generic error" -#define GETDNS_RETURN_BAD_DOMAIN_NAME 300 #define GETDNS_RETURN_BAD_DOMAIN_NAME_TEXT "Badly-formed domain name in first argument" -#define GETDNS_RETURN_BAD_CONTEXT 301 #define GETDNS_RETURN_BAD_CONTEXT_TEXT "Bad value for a context type" -#define GETDNS_RETURN_CONTEXT_UPDATE_FAIL 302 #define GETDNS_RETURN_CONTEXT_UPDATE_FAIL_TEXT "Did not update the context" -#define GETDNS_RETURN_UNKNOWN_TRANSACTION 303 #define GETDNS_RETURN_UNKNOWN_TRANSACTION_TEXT "An attempt was made to cancel a callback with a transaction_id that is not recognized" -#define GETDNS_RETURN_NO_SUCH_LIST_ITEM 304 #define GETDNS_RETURN_NO_SUCH_LIST_ITEM_TEXT "A helper function for lists had an index argument that was too high." -#define GETDNS_RETURN_NO_SUCH_DICT_NAME 305 #define GETDNS_RETURN_NO_SUCH_DICT_NAME_TEXT "A helper function for dicts had a name argument that for a name that is not in the dict." -#define GETDNS_RETURN_WRONG_TYPE_REQUESTED 306 #define GETDNS_RETURN_WRONG_TYPE_REQUESTED_TEXT "A helper function was supposed to return a certain type for an item, but the wrong type was given." -#define GETDNS_RETURN_NO_SUCH_EXTENSION 307 #define GETDNS_RETURN_NO_SUCH_EXTENSION_TEXT "A name in the extensions dict is not a valid extension." -#define GETDNS_RETURN_EXTENSION_MISFORMAT 308 #define GETDNS_RETURN_EXTENSION_MISFORMAT_TEXT "One or more of the extensions have a bad format." -#define GETDNS_RETURN_DNSSEC_WITH_STUB_DISALLOWED 309 #define GETDNS_RETURN_DNSSEC_WITH_STUB_DISALLOWED_TEXT "A query was made with a context that is using stub resolution and a DNSSEC extension specified." -#define GETDNS_RETURN_MEMORY_ERROR 310 #define GETDNS_RETURN_MEMORY_ERROR_TEXT "Unable to allocate the memory required." -#define GETDNS_RETURN_INVALID_PARAMETER 311 #define GETDNS_RETURN_INVALID_PARAMETER_TEXT "A required parameter had an invalid value." /* DNSSEC values */ @@ -53,86 +56,115 @@ extern "C" { #define GETDNS_DNSSEC_NOT_PERFORMED 404 #define GETDNS_DNSSEC_NOT_PERFORMED_TEXT "DNSSEC validation was not performed (only used for debugging)" -/* Context Variables */ -#define GETDNS_CONTEXT_NAMESPACE_DNS 500 -#define GETDNS_CONTEXT_NAMESPACE_DNS_TEXT "See getdns_context_set_namespaces()" -#define GETDNS_CONTEXT_NAMESPACE_LOCALNAMES 501 -#define GETDNS_CONTEXT_NAMESPACE_LOCALNAMES_TEXT "See getdns_context_set_namespaces()" -#define GETDNS_CONTEXT_NAMESPACE_NETBIOS 502 -#define GETDNS_CONTEXT_NAMESPACE_NETBIOS_TEXT "See getdns_context_set_namespaces()" -#define GETDNS_CONTEXT_NAMESPACE_MDNS 503 -#define GETDNS_CONTEXT_NAMESPACE_MDNS_TEXT "See getdns_context_set_namespaces()" -#define GETDNS_CONTEXT_NAMESPACE_NIS 504 -#define GETDNS_CONTEXT_NAMESPACE_NIS_TEXT "See getdns_context_set_namespaces()" -#define GETDNS_CONTEXT_STUB 505 -#define GETDNS_CONTEXT_STUB_TEXT "See getdns_context_set_resolution_type()" -#define GETDNS_CONTEXT_RECURSING 506 -#define GETDNS_CONTEXT_RECURSING_TEXT "See getdns_context_set_resolution_type()" -#define GETDNS_CONTEXT_FOLLOW_REDIRECTS 507 -#define GETDNS_CONTEXT_FOLLOW_REDIRECTS_TEXT "See getdns_context_set_follow_redirects()" -#define GETDNS_CONTEXT_DO_NOT_FOLLOW_REDIRECTS 508 -#define GETDNS_CONTEXT_DO_NOT_FOLLOW_REDIRECTS_TEXT "See getdns_context_set_follow_redirects()" -#define GETDNS_CONTEXT_UDP_FIRST_AND_FALL_BACK_TO_TCP 509 -#define GETDNS_CONTEXT_UDP_FIRST_AND_FALL_BACK_TO_TCP_TEXT "See getdns_context_set_dns_transport()" -#define GETDNS_CONTEXT_UDP_ONLY 510 -#define GETDNS_CONTEXT_UDP_ONLY_TEXT "See getdns_context_set_dns_transport()" -#define GETDNS_CONTEXT_TCP_ONLY 511 -#define GETDNS_CONTEXT_TCP_ONLY_TEXT "See getdns_context_set_dns_transport()" -#define GETDNS_CONTEXT_TCP_ONLY_KEEP_CONNECTIONS_OPEN 512 -#define GETDNS_CONTEXT_TCP_ONLY_KEEP_CONNECTIONS_OPEN_TEXT "See getdns_context_set_dns_transport()" -#define GETDNS_CONTEXT_APPEND_NAME_ALWAYS 513 -#define GETDNS_CONTEXT_APPEND_NAME_ALWAYS_TEXT "See getdns_context_set_append_name()" -#define GETDNS_CONTEXT_APPEND_NAME_ONLY_TO_SINGLE_LABEL_AFTER_FAILURE 514 -#define GETDNS_CONTEXT_APPEND_NAME_ONLY_TO_SINGLE_LABEL_AFTER_FAILURE_TEXT "See getdns_context_set_append_name()" -#define GETDNS_CONTEXT_APPEND_NAME_ONLY_TO_MULTIPLE_LABEL_NAME_AFTER_FAILURE 515 -#define GETDNS_CONTEXT_APPEND_NAME_ONLY_TO_MULTIPLE_LABEL_NAME_AFTER_FAILURE_TEXT "See getdns_context_set_append_name()" -#define GETDNS_CONTEXT_DO_NOT_APPEND_NAMES 516 -#define GETDNS_CONTEXT_DO_NOT_APPEND_NAMES_TEXT "See getdns_context_set_append_name()" +/* Namespace types */ +typedef enum getdns_namespace_t { + GETDNS_NAMESPACE_DNS = 500, + GETDNS_NAMESPACE_LOCALNAMES = 501, + GETDNS_NAMESPACE_NETBIOS = 502, + GETDNS_NAMESPACE_MDNS = 503, + GETDNS_NAMESPACE_NIS = 504 +} getdns_namespace_t; + +#define GETDNS_NAMESPACE_DNS_TEXT "See getdns_context_set_namespaces()" +#define GETDNS_NAMESPACE_LOCALNAMES_TEXT "See getdns_context_set_namespaces()" +#define GETDNS_NAMESPACE_NETBIOS_TEXT "See getdns_context_set_namespaces()" +#define GETDNS_NAMESPACE_MDNS_TEXT "See getdns_context_set_namespaces()" +#define GETDNS_NAMESPACE_NIS_TEXT "See getdns_context_set_namespaces()" + +/* Resolution types */ +typedef enum getdns_resolution_t { + GETDNS_RESOLUTION_STUB = 520, + GETDNS_RESOLUTION_RECURSING = 521 +} getdns_resolution_t; + +#define GETDNS_RESOLUTION_STUB_TEXT "See getdns_context_set_resolution_type()" +#define GETDNS_RESOLUTION_RECURSING_TEXT "See getdns_context_set_resolution_type()" + +/* Redirect policies */ +typedef enum getdns_redirects_t { + GETDNS_REDIRECTS_FOLLOW = 530, + GETDNS_REDIRECTS_DO_NOT_FOLLOW = 531 +} getdns_redirects_t; + +#define GETDNS_REDIRECTS_FOLLOW_TEXT "See getdns_context_set_follow_redirects()" +#define GETDNS_REDIRECTS_DO_NOT_FOLLOW_TEXT "See getdns_context_set_follow_redirects()" + +/* Transport arrangements */ +typedef enum getdns_transport_t { + GETDNS_TRANSPORT_UDP_FIRST_AND_FALL_BACK_TO_TCP = 540, + GETDNS_TRANSPORT_UDP_ONLY = 541, + GETDNS_TRANSPORT_TCP_ONLY = 542, + GETDNS_TRANSPORT_TCP_ONLY_KEEP_CONNECTIONS_OPEN = 543 +} getdns_transport_t; + +#define GETDNS_TRANSPORT_UDP_FIRST_AND_FALL_BACK_TO_TCP_TEXT "See getdns_context_set_dns_transport()" +#define GETDNS_TRANSPORT_UDP_ONLY_TEXT "See getdns_context_set_dns_transport()" +#define GETDNS_TRANSPORT_TCP_ONLY_TEXT "See getdns_context_set_dns_transport()" +#define GETDNS_TRANSPORT_TCP_ONLY_KEEP_CONNECTIONS_OPEN_TEXT "See getdns_context_set_dns_transport()" + +/* Suffix appending methods */ +typedef enum getdns_append_name_t { + GETDNS_APPEND_NAME_ALWAYS = 550, + GETDNS_APPEND_NAME_ONLY_TO_SINGLE_LABEL_AFTER_FAILURE = 551, + GETDNS_APPEND_NAME_ONLY_TO_MULTIPLE_LABEL_NAME_AFTER_FAILURE = 552, + GETDNS_APPEND_NAME_NEVER = 553 +} getdns_append_name_t; + +#define GETDNS_APPEND_NAME_ALWAYS_TEXT "See getdns_context_set_append_name()" +#define GETDNS_APPEND_NAME_ONLY_TO_SINGLE_LABEL_AFTER_FAILURE_TEXT "See getdns_context_set_append_name()" +#define GETDNS_APPEND_NAME_ONLY_TO_MULTIPLE_LABEL_NAME_AFTER_FAILURE_TEXT "See getdns_context_set_append_name()" +#define GETDNS_APPEND_NAME_NEVER_TEXT "See getdns_context_set_append_name()" /* Context codes */ -#define GETDNS_CONTEXT_CODE_NAMESPACES 600 +typedef enum getdns_context_code_t { + GETDNS_CONTEXT_CODE_NAMESPACES = 600, + GETDNS_CONTEXT_CODE_RESOLUTION_TYPE = 601, + GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS = 602, + GETDNS_CONTEXT_CODE_UPSTREAM_RECURSIVE_SERVERS = 603, + GETDNS_CONTEXT_CODE_DNS_ROOT_SERVERS = 604, + GETDNS_CONTEXT_CODE_DNS_TRANSPORT = 605, + GETDNS_CONTEXT_CODE_LIMIT_OUTSTANDING_QUERIES = 606, + GETDNS_CONTEXT_CODE_APPEND_NAME = 607, + GETDNS_CONTEXT_CODE_SUFFIX = 608, + GETDNS_CONTEXT_CODE_DNSSEC_TRUST_ANCHORS = 609, + GETDNS_CONTEXT_CODE_EDNS_MAXIMUM_UDP_PAYLOAD_SIZE = 610, + GETDNS_CONTEXT_CODE_EDNS_EXTENDED_RCODE = 611, + GETDNS_CONTEXT_CODE_EDNS_VERSION = 612, + GETDNS_CONTEXT_CODE_EDNS_DO_BIT = 613, + GETDNS_CONTEXT_CODE_DNSSEC_ALLOWED_SKEW = 614, + GETDNS_CONTEXT_CODE_MEMORY_FUNCTIONS = 615, + GETDNS_CONTEXT_CODE_TIMEOUT = 616 +} getdns_context_code_t; + #define GETDNS_CONTEXT_CODE_NAMESPACES_TEXT "Change related to getdns_context_set_namespaces" -#define GETDNS_CONTEXT_CODE_RESOLUTION_TYPE 601 #define GETDNS_CONTEXT_CODE_RESOLUTION_TYPE_TEXT "Change related to getdns_context_set_resolution_type" -#define GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS 602 #define GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS_TEXT "Change related to getdns_context_set_follow_redirects" -#define GETDNS_CONTEXT_CODE_UPSTREAM_RECURSIVE_SERVERS 603 #define GETDNS_CONTEXT_CODE_UPSTREAM_RECURSIVE_SERVERS_TEXT "Change related to getdns_context_set_upstream_recursive_servers" -#define GETDNS_CONTEXT_CODE_DNS_ROOT_SERVERS 604 #define GETDNS_CONTEXT_CODE_DNS_ROOT_SERVERS_TEXT "Change related to getdns_context_set_dns_root_servers" -#define GETDNS_CONTEXT_CODE_DNS_TRANSPORT 605 #define GETDNS_CONTEXT_CODE_DNS_TRANSPORT_TEXT "Change related to getdns_context_set_dns_transport" -#define GETDNS_CONTEXT_CODE_LIMIT_OUTSTANDING_QUERIES 606 #define GETDNS_CONTEXT_CODE_LIMIT_OUTSTANDING_QUERIES_TEXT "Change related to getdns_context_set_limit_outstanding_queries" -#define GETDNS_CONTEXT_CODE_APPEND_NAME 607 #define GETDNS_CONTEXT_CODE_APPEND_NAME_TEXT "Change related to getdns_context_set_append_name" -#define GETDNS_CONTEXT_CODE_SUFFIX 608 #define GETDNS_CONTEXT_CODE_SUFFIX_TEXT "Change related to getdns_context_set_suffix" -#define GETDNS_CONTEXT_CODE_DNSSEC_TRUST_ANCHORS 609 #define GETDNS_CONTEXT_CODE_DNSSEC_TRUST_ANCHORS_TEXT "Change related to getdns_context_set_dnssec_trust_anchors" -#define GETDNS_CONTEXT_CODE_EDNS_MAXIMUM_UDP_PAYLOAD_SIZE 610 #define GETDNS_CONTEXT_CODE_EDNS_MAXIMUM_UDP_PAYLOAD_SIZE_TEXT "Change related to getdns_context_set_edns_maximum_udp_payload_size" -#define GETDNS_CONTEXT_CODE_EDNS_EXTENDED_RCODE 611 #define GETDNS_CONTEXT_CODE_EDNS_EXTENDED_RCODE_TEXT "Change related to getdns_context_set_edns_extended_rcode" -#define GETDNS_CONTEXT_CODE_EDNS_VERSION 612 #define GETDNS_CONTEXT_CODE_EDNS_VERSION_TEXT "Change related to getdns_context_set_edns_version" -#define GETDNS_CONTEXT_CODE_EDNS_DO_BIT 613 #define GETDNS_CONTEXT_CODE_EDNS_DO_BIT_TEXT "Change related to getdns_context_set_edns_do_bit" -#define GETDNS_CONTEXT_CODE_DNSSEC_ALLOWED_SKEW 614 #define GETDNS_CONTEXT_CODE_DNSSEC_ALLOWED_SKEW_TEXT "Change related to getdns_context_set_dnssec_allowed_skew" -#define GETDNS_CONTEXT_CODE_MEMORY_FUNCTIONS 615 #define GETDNS_CONTEXT_CODE_MEMORY_FUNCTIONS_TEXT "Change related to getdns_context_set_memory_functions" -#define GETDNS_CONTEXT_CODE_TIMEOUT 616 #define GETDNS_CONTEXT_CODE_TIMEOUT_TEXT "Change related to getdns_context_set_timeout" /* Callback Type Variables */ -#define GETDNS_CALLBACK_COMPLETE 700 +typedef enum getdns_callback_type_t { + GETDNS_CALLBACK_COMPLETE = 700, + GETDNS_CALLBACK_CANCEL = 701, + GETDNS_CALLBACK_TIMEOUT = 702, + GETDNS_CALLBACK_ERROR = 703 +} getdns_callback_type_t; + #define GETDNS_CALLBACK_COMPLETE_TEXT "The response has the requested data in it" -#define GETDNS_CALLBACK_CANCEL 701 #define GETDNS_CALLBACK_CANCEL_TEXT "The calling program cancelled the callback; response is NULL" -#define GETDNS_CALLBACK_TIMEOUT 702 #define GETDNS_CALLBACK_TIMEOUT_TEXT "The requested action timed out; response is NULL" -#define GETDNS_CALLBACK_ERROR 703 #define GETDNS_CALLBACK_ERROR_TEXT "The requested action had an error; response is NULL" /* Type Of Name Services */ @@ -165,8 +197,7 @@ extern "C" { #define GETDNS_BAD_DNS_CNAME_RETURNED_FOR_OTHER_TYPE 1102 #define GETDNS_BAD_DNS_CNAME_RETURNED_FOR_OTHER_TYPE_TEXT "A DNS query for a type other than CNAME returned a CNAME response" -/* Defines for RRtypes (from 2012-12) */ - +/* Defines for RRtypes (from 2014-02) */ #define GETDNS_RRTYPE_A 1 #define GETDNS_RRTYPE_NS 2 #define GETDNS_RRTYPE_MD 3 @@ -247,7 +278,6 @@ extern "C" { /* Various typedefs */ struct getdns_context; -typedef uint16_t getdns_return_t; typedef uint64_t getdns_transaction_t; typedef enum getdns_data_type { t_dict, t_list, t_int, t_bindata @@ -328,7 +358,7 @@ getdns_return_t getdns_dict_remove_name(struct getdns_dict *this_dict, const cha /* Callback arguments */ typedef void (*getdns_callback_t)( struct getdns_context *context, - uint16_t callback_type, + getdns_callback_type_t callback_type, struct getdns_dict *response, void *userarg, getdns_transaction_t transaction_id); @@ -481,26 +511,26 @@ getdns_display_ip_address( getdns_return_t getdns_context_set_context_update_callback( struct getdns_context *context, - void (*value)(struct getdns_context *context, uint16_t changed_item) + void (*value)(struct getdns_context *context, getdns_context_code_t changed_item) ); getdns_return_t getdns_context_set_resolution_type( struct getdns_context *context, - uint16_t value + getdns_resolution_t value ); getdns_return_t getdns_context_set_namespaces( struct getdns_context *context, size_t namespace_count, - uint16_t *namespaces + getdns_namespace_t *namespaces ); getdns_return_t getdns_context_set_dns_transport( struct getdns_context *context, - uint16_t value + getdns_transport_t value ); getdns_return_t @@ -518,7 +548,7 @@ getdns_context_set_timeout( getdns_return_t getdns_context_set_follow_redirects( struct getdns_context *context, - uint16_t value + getdns_redirects_t value ); getdns_return_t @@ -530,7 +560,7 @@ getdns_context_set_dns_root_servers( getdns_return_t getdns_context_set_append_name( struct getdns_context *context, - uint16_t value + getdns_append_name_t value ); getdns_return_t diff --git a/spec/index.html b/spec/index.html index 0b195245..b4993d76 100644 --- a/spec/index.html +++ b/spec/index.html @@ -278,7 +278,7 @@ as follows:

typedef void (*getdns_callback_t)( struct getdns_context *context, - uint16_t callback_type, + getdns_callback_type_t callback_type, struct getdns_dict *response, void *userarg, getdns_transaction_t transaction_id); @@ -876,7 +876,7 @@ be human-readable, and it might have information in it useful to an application have to).
  • resolver_type (an int) is the type of resolver that the API is acting as in this context: -GETDNS_CONTEXT_RECURSING or GETDNS_CONTEXT_STUB (it will be +GETDNS_RESOLUTION_RECURSING or GETDNS_RESOLUTION_STUB (it will be a recursing resolver unless the application changed this in a context.
  • all_context (a dict) with names for all the types of context. This can be used with @@ -1144,7 +1144,6 @@ The caller is responsible of disposing these allocations with free.

    5.1 A Few Needed Definitions

    struct getdns_context; -typedef uint16_t getdns_return_t; typedef uint64_t getdns_transaction_t; typedef enum getdns_data_type { t_dict, t_list, t_int, t_bindata @@ -1484,7 +1483,7 @@ function.

    /* Set up the callback function, which will also do the processing of the results */ void this_callbackfn(struct getdns_context *this_context, - uint16_t this_callback_type, + getdns_callback_type_t this_callback_type, struct getdns_dict *this_response, void *this_userarg, getdns_transaction_t this_transaction_id) @@ -1602,7 +1601,7 @@ their TTLs.

    /* Set up the callback function, which will also do the processing of the results */ void this_callbackfn(struct getdns_context *this_context, - getdns_return_t this_callback_type, + getdns_callback_type_t this_callback_type, struct getdns_dict *this_response, void *this_userarg, getdns_transaction_t this_transaction_id) @@ -2126,7 +2125,7 @@ is not allowed, or GETDNS_RETURN_CONTEXT_UPDATE_FAIL for a failure getdns_return_t getdns_context_set_context_update_callback( struct getdns_context *context, - void (*value)(struct getdns_context *context, uint16_t changed_item) + void (*value)(struct getdns_context *context, getdns_context_code_t changed_item) );

    The value is a pointer to the callback function that will be called when any context is changed. Such changes might be from automatic @@ -2141,18 +2140,18 @@ specifies which of the context changed; the context codes are listed getdns_return_t getdns_context_set_resolution_type( struct getdns_context *context, - uint16_t value + getdns_resolution_t value );

  • Specifies whether DNS queries are performed with nonrecurive lookups or -as a stub resolver. The value is GETDNS_CONTEXT_RECURSING or -GETDNS_CONTEXT_STUB.

    +as a stub resolver. The value is GETDNS_RESOLUTION_RECURSING or +GETDNS_RESOLUTION_STUB.

    All implementations of this API can act as recursive resolvers, and that must be the default mode of the default context. Some implementations of this API are expected to also be able to act as stub resolvers. If an implementation of this API is only able to act as a recursive resolver, a call to -getdns_context_set_resolution_type(somecontext, GETDNS_CONTEXT_STUB) will +getdns_context_set_resolution_type(somecontext, GETDNS_RESOLUTION_STUB) will return GETDNS_RETURN_CONTEXT_UPDATE_FAIL.

    @@ -2160,18 +2159,18 @@ getdns_return_t getdns_context_set_namespaces( struct getdns_context *context, size_t namespace_count, - uint16_t *namespaces + getdns_namespace_t *namespaces );

    The namespaces array contains an ordered list of namespaces that will be queried. Important: this context setting is ignored for the getdns_general and getdns_general_sync functions; it is used for the other funtions. The values -are GETDNS_CONTEXT_NAMESPACE_DNS, -GETDNS_CONTEXT_NAMESPACE_LOCALNAMES, -GETDNS_CONTEXT_NAMESPACE_NETBIOS, -GETDNS_CONTEXT_NAMESPACE_MDNS, and -GETDNS_CONTEXT_NAMESPACE_NIS. When a normal lookup is done, +are GETDNS_NAMESPACE_DNS, +GETDNS_NAMESPACE_LOCALNAMES, +GETDNS_NAMESPACE_NETBIOS, +GETDNS_NAMESPACE_MDNS, and +GETDNS_NAMESPACE_NIS. When a normal lookup is done, the API does the lookups in the order given and stops when it gets the first result; a different method with the same result would be to run the queries in parallel and return when it gets the first result. @@ -2184,14 +2183,14 @@ default is determined by the OS.

    getdns_return_t getdns_context_set_dns_transport( struct getdns_context *context, - uint16_t value + getdns_transport_t value );

    Specifies what transport is used for DNS lookups. The value is -GETDNS_CONTEXT_UDP_FIRST_AND_FALL_BACK_TO_TCP, -GETDNS_CONTEXT_UDP_ONLY, -GETDNS_CONTEXT_TCP_ONLY, or -GETDNS_CONTEXT_TCP_ONLY_KEEP_CONNECTIONS_OPEN.

    +GETDNS_TRANSPORT_UDP_FIRST_AND_FALL_BACK_TO_TCP, +GETDNS_TRANSPORT_UDP_ONLY, +GETDNS_TRANSPORT_TCP_ONLY, or +GETDNS_TRANSPORT_TCP_ONLY_KEEP_CONNECTIONS_OPEN.

    getdns_return_t @@ -2220,12 +2219,12 @@ The default is not specified.

    getdns_return_t getdns_context_set_follow_redirects( struct getdns_context *context, - uint16_t value + getdns_redirects_t value );

    Specifies whether or not DNS queries follow redirects. -The value is GETDNS_CONTEXT_FOLLOW_REDIRECTS for normal +The value is GETDNS_REDIRECTS_FOLLOW for normal following of redirects though CNAME and DNAME; or -GETDNS_CONTEXT_DO_NOT_FOLLOW_REDIRECTS to cause any lookups that would have gone +GETDNS_REDIRECTS_DO_NOT_FOLLOW to cause any lookups that would have gone through CNAME and DNAME to return the CNAME or DNAME, not the eventual target.

    @@ -2245,15 +2244,15 @@ either "IPv4" or "IPv6") and address_data (whose value is a bindata getdns_return_t getdns_context_set_append_name( struct getdns_context *context, - uint16_t value + getdns_append_name_t value );

    Specifies whether to append a suffix to the query string before the API starts resolving a name. The value is -GETDNS_CONTEXT_APPEND_NAME_ALWAYS, -GETDNS_CONTEXT_APPEND_NAME_ONLY_TO_SINGLE_LABEL_AFTER_FAILURE, -GETDNS_CONTEXT_APPEND_NAME_ONLY_TO_MULTIPLE_LABEL_NAME_AFTER_FAILURE, -or GETDNS_CONTEXT_DO_NOT_APPEND_NAMES. This controls +GETDNS_APPEND_NAME_ALWAYS, +GETDNS_APPEND_NAME_ONLY_TO_SINGLE_LABEL_AFTER_FAILURE, +GETDNS_APPEND_NAME_ONLY_TO_MULTIPLE_LABEL_NAME_AFTER_FAILURE, +or GETDNS_APPEND_NAME_NEVER. This controls whether or not to append the suffix given by getdns_context_set_suffix

    @@ -2427,7 +2426,7 @@ The response dicts inherit the custom memory management functions and the value

    9. The Generated Files

    -

    There is a tarball that includes the .h files, +

    There is a tarball that includes the .h files, the examples, and so on. The examples all make, even though there is no API implementation, based on a pseudo-implementation in the tarball; see make-examples-PLATFORM.sh. Note that this currently builds fine on the Macintosh and Ubuntu; help is definitely appreciated on making the build process