Last-Modified: Sun, 15 Sep 2024 05:58:27 GMT Expires: Wed, 13 Sep 2034 05:58:27 GMT ]@o8`y4`נ'9뛋뽸޼]޷#rcv;I}go7N fnׯq-q"ۣҥ}֭֒NkQFS]vzURUI"Էsn}elj픢%w}zz᷈{޵ `\v@(ۻ|Q|G-8qw7pP!k{΃כWnq{U>v{eu[Oo:lވCmmӧvf o۴TUoXS5Dڇl]}v}ZAR5nqZgo=Uk݇@[ ӭƀլ: έrؽ\WxWmU>&[ނty}'-S>re=ҚSml׳'&|vַM {WhknA:oojd·ނbfyq/`-K'vm٢@2eMPWCLn7zI{ }w+a[JwgJv58e7M% =!:Ӫ-ui9)>ݾ{o]/cnGC\Cw4jq֛\gf;n`aD.^}ͬpv’ZªT-eH3>2-ٮ5J5HЪgg4|>{ Х $ *ʧFqXA@| ! h j02hB=Dj=& M5AhSd4 xMFSzH2И?OJ~Tޔ~T=ڐэz) %$JSjSdhHѠ hT==f)~4TILO@0 4ȍ4 &hm&i4mM @ _xDC&b<ŗZ]S ~ͳt`ClW!a/3*oO֩ɑ(ս"XQ?v?(C(HlP`/:ņKOVr:>NjPxff-92!!޻tÅj yw)!Pnp++R->Ռ3i `? fd!`!d. 0  "0P`$,!BhR B(D)A%PAI`%A FRJ $*HA:0S?Uu EP5H@xHH@$B !(;hCP,*DXQ ,,%B2 %1 C~ޟ?ؚ>_6l!//K|G|@nŴy_|^w/,Xg0x(?i1nqoJK{֞YxɄ5`~eW[iއdb.%6ьozn[A}:_!ԮIϞ>*%Hthn ZKc\",3_?d(]\6/a$IzyML0ܓGhБGcG; JU "|<λ^s:U I1񾗷eb]3bvHf6>Gymbl`i^Euag1-hL{z^?{kDDDDDDDDDDDDDDDDDDD~9s9Ow7nJ{oyνc+l'r6jP'7!k]thΫknK YxwNm'au~o??'?n}}v61?4LI H.9V>;$3}uoXu~Dkg:I#S]zJ+ݴFGS醼O tpEK*n8َZ;GЁR}$+ߞ\%Z`WFkN8L<} _,oMc[b4ф+VUMÊ74;:G cqC;d`DO8%GuT^DJN]m q. >;;aF&#$ Ɉ9䅀t:a$Ez )dۡBI/鈾C, p苽ʏJ㉨Fr08&;`C3g",وА@o ^h]}'.9M2a!@ٹXaH xy嶧%dNƑH!\klds;Jl2X}kMP)7x%65ΤzeJfU_; a b$*5̬ԗ:c9|7iv~ia0P _=THc!N6mNr|MRQOi:m]a1`6)h_Mr: O_;bYg|k|]}v]XMc^+^̜fzw ;Vq:6`6blooEx2k Cc:{g7Ƒ <v~cO+tWCJ<+NP4]"JyGVt㷖R~k'5?9} e@Uti8>#z ZZZ~:N q5W]4{'O{[^17r&e,߇<\t;5Þ_ّ$҆R4VQ +l1Owt~ oÚu nvVDpdnYIƕ8p8"qU"]ɨuDA$ C]ؤ\VZt}F4,fpCIɓ,Ӛ،v~lI7`(㭘*AI>L C\t[GAqکz5ƬZOI% Z>YI|W}cd̓CԭGً30^h0k'ƈf3]sCS Fd@bIC |9fMD'Eqˤ(NGmI$*8Xicv6mON~g1.a;Tp°}Y^HbPA73 aK߅:t& 'I kfr/?IFb2rP1El hz3yAK#a&—L13ū3b"XQ@)YJ܁Me-7(ΌVD%q6`M(k_VɭktezNX0Ħ{)i}|-,9'c{{ s'g>wNɍn7d,qֳP6N A,ZqD˧l[0k@3 2o݉(@s)" ygfQ7KY*3^XO$d8&fic\P[x>D4kbMA|X|\cuq H8?Å&a6棊mhu_=H$4pl~)֥>1h`OnF*\yrO/22>T,:E9xN&bf[,E3PpoƍxbHvC{d9RjpoC'^Z\Q2&  ^u MoZNg+dgS޼!$9p|P>vYFʗdNү~ɋh~RW<Yy|b`2@mBaSCyr˲e_gDeS lrgÖypowŤgChIZm0Bº6+Gǔhc{MVh5ÑJeeg_^>[R 3#ZZ+Ki6g:=sXȾ۞p;% ʧO$d0Ƈ AMyu#⢔~Ԑ~[K0Sjt4;88]A읤Hv QT?aJyKLy|n_]U ms> U|bsCrO:= dx bLm73|f)aֲϮt]\ $*f`}gw6K}}ۏ97Mӡ>L9L Tlt4i9s=GrT|oQhf݆THH2[wR"7iB~D#:WK܄KuskD~s/B>å߾wהǮ~zoOT=zhΜ.f ,2~`zCTiz _Nᶲ{J2lalc88喸%8 gB놾ߢ11$0?i}zd?OuR>`>W8vO`|üuuA#y9_=y3 Peӊњ/p,Nr$CQ 2r,1]PڃJijNxXSh^=1ÅI"M7R :cgfs4LGUUU@d뻺*nFNm~Ӷ1c1c1c1c1b((ozsLKtלSw8s={p}_Wx;~Ud&".[6U]v1V}u,}?s d2_P ޡώ%~_JJ5-Utcä&3`; `!Я+°CPaaH $o)&Y4 :r!Xp׽Gnd 2ȕ,ӻY+,RRQbMZ,>C$#n|%U9PBE?7[`~$#Cd? <~6KdzC]"Ov8db#G]b9 k%-!leL$ {0#( @\G5 u'yN(*;5onuPϧϛnH<")S"a w v56}>\AJʙ,@' !J}oWHqCt'_bMf'4d&GÈ*E> 咑 U=,;p(>EJ.~Ӥv`9?aV҃H=v RDR{7]ڃB9t[$D@,Jh]P|*)ȴ_-$u~zuֻ5IRkb*+ݷ*ۥIJS%3"xX;K FV1j9 ff9!$a冁B%b8I AJ]Ѵ*.#  \w1 |V1d%VҖ`Fhlj-Jc,ks[$UIAMosmѶ5%Y,cZ"QX&}9[[\LkETH" B}C" 0*I߯kk`%!D{Hmݳo}FM?-Dj_r626|l{ģH7fFgg.-F6$Xz.8+46\hqg [ ;cR"RȚ<:H'm~H !_ZEKv{: ),k}QK%rm 8AThGn>}#CI$_(8عtMȄ;bl^Cظ6ĥLxPPvABu35?dc^ 'ehhUKp1u}ȶxH4警'$ehC4$Krl:8ɶ[WE&gENXIi?S#'`AOs9|P#W͏cyfziDX}8(A_ vٶnj5(IV2{{~9@7 1n)=L/Aw^k2Aɠ_\&ymO1O#®!d>{'q^cٿ ^i0缽ԝ/pmNm̋Qf,ă-[`6] R}a̸BHS~@4{0yIrg$ݳUBv(;2W^h7Ll^`̘Y?-'3B_t}kwc m@[fa (!Ѓhׁߩ57 -.'֬Ka$Ŗ>T`ߗBk#MuYH$gШsүc{Jc\|`TQv5usUearogn%H C m4; /;OAy;²{_I ߳0N͇W 7]oϨ{簱")&Jj b&"Un;>iql&-:^wMtU>n[&yZ>7Ѧ0^Q|˿0*Z>AIq"y\sFx&rWS_םrq#/)!piUlA+:sl$/TG[NΡ}Wg2 \zz> ,5{Cg_zt:Skm~>=<쇯mk3332I_O333&d:|݄}UUtsr}>wqS?gg"Gv_˧?Nff\yO__\I)JRRyJNed-ǖȯ~N#wJ;Ф9 l~xS=1-LF.1$,+n4͟mfFӦ ,bPMs*Ѯa$WP/ͺ[KL>|ߙ0'@!)НiQ绯'?l~(2Q8{TOyDM!/}<ڐL^iK0>[3<ʸċ#$2b/:Lټ |4϶' 2[ͅ§Y" +p3|>D$W/;K&Ųd΁*j,$ kgc\iMNjㄬƗ?dHFUBH;8x2G^ vHeyĂ-l3(A".&ȴz>+QsKSFxGH/v !pHg0G XM`/~7aH NF VA42@v$"^1d+cZ՝H/Bq2N2ϙk+n^g֐THGB#ꑙpb<,-(l#ރ%־9uх%qnӜg&l=|v>V:vt^{eQ9Ff>Mf`71$X$Rcffnʾ3Ori5K/[ɾo~T~=ٍzʷ; ,ڒUI7J[ erƽ6)דR5cZU%Q2DlZz_k44k rǕiFFtRwH!!&"Iܐt#ҘHG~;<}y&p! q/HGʣ$BB7ڲ)H(M&:_gD}P܍ AS.g NCv . Gxţ, f|R:$L#O:Tbb]}f*2p̋d/ֹ^=E y9 ##H[ck 0ս𨟺|*'OCPPxB˘3M -|p6^rsx,Ka 7.{yHE4݆L^͙-lmݷߜAb>b_vݰ*-YGV \HŅJd!{ûB穜Kǟ诚iiC(+X(o;v9j7!:H3d IT=SZzg&uY3QXl<2(\T"m_#t3Pλ:^VtS8 ^.c Q>ҢbLQ:< N O D*'%Q4b(Ryf=|:]C$wǶ!w~x$#ٳRHOuDQ:{RJ @0" %R)(XRT@ȧˬEKph/E2RQ!ĔADOFٵsۧ>7k6Sxǽ{|CD朿VQNx])+my3YKM˥7Bwj/5,WatVC]\("pi ^W.i'/mBCɽS DX>' %WU *IVKKoBd<$4N<û`Z)7|| ݒ:RI;̭Ck;iyj1{,]yL 1.8U~kbi-BPNRiSA׈dE8>=afWyVE:wg9YnUOLëyߜiގbAsQ:wBHRc"WƸtC>OO$gBf8zL:^t[*31&Z>3G"4Եbr8~_XwQ93^z=LmA]9Poi}k` Qs·wcE'˘78cr]Z hV,wGSou%/Ot lyWa<ĝ<7{5n5a,vw3rN z3*d onUIf2 8}"Spܯ饮A5s>Xm噷V6'/g狳J?gOzB/g9wgBAWtF}e?a7 \䶘s4)nГ=4/Mg!cŒ¢'%|JI֊I$1 Ì^_NY& \69e|0NcXZ_N)bӣqeM&7m99ZqzQs%8dSAƬHvU*p{Ln#GaaÌSYc<ҩHs$t>u7Q_&Rb;g}K}ze?ǙBq,`Pڔ/tgeJ7&)Zt$Ѻ=姓 }-ӦhFyTh/١SbVĴSygL-3/_ٕkrp-)liJXƁ~S9&Q?al vKwctzOT$P$ƞX(EYlhUp i5ю\dF㔲[K0։̔A^OouEI |cO߫>?gu,TEp9駫%ZX}^y*:s'n,7ՁLW|,Sc҃s[ ^&fDYִ9P)tiҒP$/P*q4)&dS44ˣ Xx&km͆7œHŖMZEI٭p8:<&2YaI f'=\od6ZU@>A w/F2:DJ^,q4]/KU˄Z/mQ}< "ȣFk}hF$w8Gsxs<^q]ÿ]zW5 13.~^·~Z+'XhM>FXݕ7}mˇS:d W4z4+7Rd)%o̤ȼͤ!Ն544&u_Bxl+5"lzP',; DP8ޫfc 9Ч7u[DU8NQR˟FZiML㶥aY; ;]@p_F`XBªQTpnǝk~nS c@@7ƍk#o֍E=llNC^=:r9듁:aCO{LR2DM\AΈVX[uo0B]dy}eMSZ, b?:r??[B=/dy;qu[4?Glu'3pZ u}VnPYJocEqD$C"4]gr)1oLoճ!;9jkRh[Tjv7Ȫ:5[;z O0~ߎnЧy{X3""{xq$2ai2+7ĹxNQ˦>_r`gTD\/8&~˹:;Fn+ԣβC<5 24(^ܓYݻI'n '(S fCWͿ[ͥOE曙A"?meN7uobB,?t6vX7S/؈-"pa=|ĦHB )LI5RJhy!Aȏ0dkC߆TA?'SOK}vh49$nZڱE؊?f0hfDptVXf$愝KW2m2Xy72ͯ5?HrC̟ 0xlynOeQRqӵ!mi_S YcFrnWѣRCҴ(ܴqL =Rh!dqbMi f9VWSNJV1`r8m|31KOwl2EC!IdaL1l][.w~mkY|?&6 &֛'Kth:뜤kZDA}NO'IȚT7Cຘn}G__xּa&^m&xKua{ Q c\dMb3B^2 b{ c#P}44 kld,X!Fư6T!nݦnڌS\2Feđ[ Vo0AJ6JS۳< oknE"z#Pi?:K/_99sT11 )O/ &feu6'm<'PvYmr^K>M"/o+.,eOځpk:m}گ|,n!itH/=v}Pz"5G;.uiVϗzlN՛lݥTXу#`64ߕ7IৱvGot8סw3 VFnRM.앉 ؄{r,v5MUPkݥ=w11] $L>MIK)"'?``#rt_ Vz~_ EwO,6{pZ?HP崶R 蚑wd7 uÐtO.K#\yajѪD3G_c.XJ=Lߥ9>Y]Ѯ(%L"5Ύ/N.%C{a۸|r5$=w=+m Ѯ8ᅒZ} X)BEOvөA?v[NIm:! өSiԄ6m:C>ߜ|(g1Sɂwc77Ds9R0fvSr~i oи, FqB&v4 s.!=ߋUӲt}avպPPz(>90 /QTG[ssOc]]kg&2ZukF6،JmrSH}L؄k !hitp> 1c3me-kC^ -icu7降}t^C0YQilJNg<ڦpnrqjN&KH56潽%zvMkiA>lt0Zƽ~$sWbi6Inrѡ9(Q ɟhOb_SBꨏXZUgƔ:4-f +˼ȑ>^ 5z}TGUTp{\\k^XŘg;Blf7{}x>khoCBٖ-k? 868lL6 u'H?;s;^UftvAD ]~YX<|p(fK f92% DۿCѤҌQ]!t{mcbJ4&c-djPݵ ?7'2WRS{L6N]$w%f3r.d朏hTwfpco3xP7pZO= y4 eGc`Mjhv$Q}P=6[ۦrxnC쨲S0JwH fG㪶=ѲtIJZ37Kv8rsb;0m&xט1Rtos32S?=3UϬEL2<ĹhZ=C5׿ P!Q*Bڄn1 Q $ !Hƶ}ף W:`L'O}vK.N;*Ni!'"9ҟ/Mz%nEOZ0Nt!u}vjQ1H5;s?coXlp3P:5ٔVC{tf>o"r[N#Nw lnDqԶok̲ anjf;LH߯/;L z3Л3olO ^|z%g枎'gvv;-}+teDTpRm'{$H˺gߍGLEu¹I/ӍAB.j$/mG} J]#`+U te\H$V6b"s_xZƒI?kW{h$VE(a87՘cn5sRZQEH~ }|0wq')t'Z,dm.#=kf/pF뀂y՝46ҭ'F:^+ ]T~j1`9.GpK\ 4=T\] gsbccok.'̈́!E  R˩>_2!.;Szee?ݹ~͆ RѸnv^nuoLY}PhI$-x~ г3U/$*Yl. Q h-u?A>uovoy~ڟu7s}#\IVr'yIk62lolBD3St΍{+yolg+;]at~ݘZ;E-^O=Xfݴϧc|&6 s#f> bD&0BD46zwlDgqAg 6 =rHW-YJ5˫waٻ" vyzb IF ޙk1C&J$ұaOV6C5>z?B6a|#&+6ȵ]䦒 q]U1Vڻ!Wf_ȠI#eG5KafnFpnmn50&"[g`F d~ >ъl߃?>M?^*x#ۆoLC9SLm[yߴ#}5y0ci=`{F-1Nj՛ca!_vP6>9,r&bpu^vds VoάƲsp xBpNp'wCϱĸ^+G|@c8gJycMSRt6/?s0DZ_ƺ\Ot+@Lm:ВE)#,?*BìQ/5ti`&xmK;j ]{kFO N*Ɯ(KY }!qs^"R9OwLnGʘ>&k^?̣ *aNM*FeZ4Y9D6n!v8߶D~?L7Z{n!5Jhi $ϼPPip17^L30 _N+=Ċ*Mihb)ن"(t1-]I@+]K0ֺ+$FZY73&rfDcʶ"Ipjs@jqrZә*':ɳ6I!r:\2ukBl"FvuD>.^֣\'^;-=iIUĈⵥm9d8fIgu)Y]5'qE5w^.W b'o0ެ`Z&0n?W#HxPN3MҙlϽPL/+ ÌʯỽR1f$GS~6[8!ʥ͝"!H^*Rudí鵨HEZZ)%,ӱapO=\D[8a pHp}WKkC;;+f&YJ]|O_!aWx0}dOu zٌ4x"C5ىk&,SnRƂ98T_3m X!)`IګLg =MXv9WM1>qF#F{|8 ^5|\$:jGdncs߾Yac"I̤ rg~}xKĔ0)!*$3 h\K7Ęהd_$KcJTyG^D&_,nӡ~ VkJIPLOR0QǁMAz-m`˒[9m^,ϯ4vA(8+X=5X[cG_2D%ʟ,咑:c_kiM5`1zB1h߿&HdI݅/>]k*9g,A@2C6Ƒb3{,M}pNF^J]0HD\V܃V"wf! L' t~N2afH횁Aj @0M2&i ͺ)M}3[89͎SŃ{'c\Q̷=񶈁B.2 6uvʬ2*Vu nx{_a;-;pAudq7 M8vlM35|[3K.9KXnxo-\+}Mcv e-exn?߈w"`~XMe5y}ed_k@U6wyۡX@~MnFTaN05(eQײlϪ9PG_LiK ԽK?t Ǝq|Apij0:7NxrM!681]J5/L8s_\zQU~TjK9Tn/m7IP)4c~x g)Hڜ)6b6f!~'ɢnѹsNigf"BbP^SC P d&a Q]3ݎ̝hb @׵aFw{6DIXx9 p;Bcse8ğ/V%s6xN!2gc&&C Ty IEKȌo7.)R:m6.Pn[#.qS#PDP~sދXJ0ŏ@ Ylk)˹>3Mķ8 `ܼt:'".Aّq{ ݢf16stec+EA;#˜z[BsE@םY@ۋ|5 j4+8A[߻.l<<*0 uLU9<4/;2\3&dW R5iNv_Rozڴڸנey= 6TdnQ0A==j8_1?q_}dIdSN՚6mfաm_MIW1y8P({*EX nI@3?z>$ w6-l(<{WwU"Lt#pgr7V:Tynכ@zE{"<g$][Xi[タrU᣽NJ.8VJ%Cc6l]PPC5zUY?7WDAaQz'9g?hp8 LxPrL_Pw<$yڪ9w~,zHa믻Sl\/ZKt n٬L1;.`3 Ņ,!LԨ͋Kk& 4|$G{5Lί+;f4F"9:TB슕uɓ:W'ŷ8TldlEughv%Գ>kr"HJv,yLB'yIqS=pq}2h9*R;6[U{.Rҩiѧ́HZ{ُ۪"];[,yoyy^)eݜ.<^TB+Nn$?i>&Znf-nø~zcwԵZ't|}| jxYK"qaTqƶjx<Ӵ˒;iJvCiwH0qGo.k]zVI‚&o=&tcE',\TX+g{4)!fij؎Ѕ Q:*mINfҘVfhzy9i_3+K揿`1Ϗ\\։A&ґW b@c\- Owc6lbѽ봜wɱǡivGk50ᨹ ,ruWow?ٝQ!L^ X$c;<}i-q a9*Ƒ lSv'a5%[a(N@x*_7"x:~}){ɺtr)l8ޮ$a fݘflQҥ >dhV֕bCj7)yƶ>c4k|7Jfބ>\Ӎ H޼/Z," E|`(&ĩ;[x_AD~;3{dECoQ*hM;/\N$ЏhOh@ 3R076Os#HON(BSIilNcTA#cc\|7ɟ.#gyd{c Mn7#GtG׈^1n;|0S:dbζ 75wծ/EAV^6`>cЊJ yLYA%[LJ*DB-(` _)DF0H7Ho*R )BaKQN  H;J!DJJ@%F(Pe b&F! $ EHɤW$JIJiBd1 D{J(BQJQ{X^KRX.FP(HXnҀ* {L"r1%DN+xQ4*] fDHdRR̪Р QKHȰlЁndDxlIIIzCJ~@FGEZf_-O=׳Z䱁 :v/mXzditGr1rkwoʗѕ4˜A0 zFbg.fr:ĮP|ߣ'@ï]RrGduI,Lf/Dž :4{(nwA9iyn~ch<|ah"PΪwM]A,xdZ1uh0;5!"$8(d?~yህTvе&b(wGn"l>% Vc$2K9BZL2[Z.揘$ NΚHCP@P>bÎ;Y1Rr$jK2Β.děkld]}rW#o]Q|݃'Ǟ!n~Y?_#lou~'V4-쫫{1{^tHmИIގo0ض( kg }f䥿0V8WWyv-Gz_H7Ģ(Mqd"AǜT/nz21 &RHpyKs>h<7SFO/[fh$GC :82?_ Eqh ZVsd ɪ`ET7-QƂRwlg.`cj@7SM]田 _?_gK_Vf.'t C?rK#zu6߯fx0E{Nr/Z!Yb)f#!~ թҵ@0 ffffk13322333*88,f>fff^fFfft}'t*RY ^>x6BӫRzw9Q,r˗.\V뮺뮦fFffeffNffNUUs{|=KLD9z2vM-6lٳfK48FV I0%t+F߿n|ڔ c `}ڣStMGG{/7_ QؗRbYy% #pl't_i C;$~{!u|Yem⇯6OȬ$_zwGv*   0~ 7Ԑu^3tmv˭w@ԁ禼8cwL8S~_X0Z{d했O3}ɰXf._ߝFk5'5Aid$aANqZ[T̉)Adف Dp #*IyPnx;" 1)f~/zK &LyޔH,6 -:úXS=#͔s?ǭOF<̪0H3FV03)wcMt(ӳaߜWݽWn5޲'a(30Rѫ#!~Kb_$}NhW5˚BT( YAu$ ?~a)`kXYiR6[̗XסoJAN:5Z.Í 7u]ar'-!$$;'vC)?_0S_?aXѡ%0a%ߙ +[Ou4yW2ѤX~Y|K-#yLDH1Dw8ޝ%Mn%߉z=6Γ ĸl-%#OqTפqe9=i֩L[Q/=s=o⿀Mʾ>IGV\q›ARopbٱi7Xˆo0bcuLB,5W ͒=XdE9r_C}w~ړSYIl%uق4`.nkwa]IGKW̬XQ[Gw8_W#Û;'9|oH8\=XM6%eH,ȸKgtÓt}Sg9|Zϭgְx |f{6x'& Nd^N Fɣk^u[5 j-'!&Ѡ„q}syyL=Oe !1 1 L \f]xGp>S͢G`uN$ @-м% TsQVa%&K:vШ,#^: hIJt7t7 )"2r(߫3e&o.#T"RwǹѦA06 ~+ Jy]RӓÁ>5lIǕ|}'~>;wdg~m8uq9ϏR`"6vr@0Knx`C:x9~wѿ#)k3/33{{SiKZَr:Xiw2W ;X8ro&Һ Ytd|[~Dz<|5h|.cu5$ugQ"D10rałzKO{_l5qgrH<-GvF1&$- BL;#Q4fVv6u߳?] rKodCm ײ]7F``[ Tݰ]Rc6Ng:NqVsx1^sf/g?~}VwTN_3wFYun)m6?r9ؔӔg'\67#EI]P8ogf u-CO}>g{<<ffff333/3#2뮺wR2<|m6nm:'[ AbLWjɠ]vŊ$ȓz6a&v%L( m2f64uwoduvϺ[{{f{333330陾?7=O͛6lٳfx[]-=XYLF9˿NH]:vOeiC{u?{PϔbdB[,#Ix@4|{|CTq /7q-EXFkě/"?"O$I" [(f$͛zô-}-MMo,_pC>DfgW z&d̍,qG09\66  30,l0,Z%B.B]&hBG O7A ,2 /'A_QO|u0.A;Hiգˇ6]I!5|C%%'!uui Wͧe{ r˜џ8tX@` 4@A Gҋ)'@GDt#r$:!t'I'Bt'Bt":C5'I:GN!Hppxk yej^ sM0}-竄C~# yQ(9w6,ZuYyˏ#9=csqsގj_UP~mD0E؆8vO"=P`AL kЖ%B&[qeQ>f\6[WA^ĥ)IlRKtisqtu=Z$/F8r\1uyac.:V,ԕ /Y~ucDm\YWʨ7MG"2ciF/cqL $@8Ώg <ѱ ED!Fi'Ltm6eNKr,60{MR0aj#u +ދS; C1; Sٔ#|K~,{Hd?i  DgOip_t 'mG>>ϧV,0̙JbLjyWRv8=[o/- %4Wɾ2X$* WiO '{!~@yUqԠ߱yPRFꉇUnGWsKm$Mj6'NӬG$YQXXY`!PW$iȹ] r7JK:9<":'tXYY${\o'y EpH,$!)XEEy?BgGwt#FDCA遭HM"hO9#EjpW!\IR{P K!d#X>Az +z/ m$#$2LI!Td,FOD0/0d'= mሄ62hض)5nNtdّa8 worU e!UzyS<[`+edž>7-?90`a7[mmI]ީrpM _H0c1RQ 6)L/]ybX֭oW:[jDž`cH2,O? k ǤE1DjAH-l~#4̺ChUf7};K#4i1_zC2K޺yB;C5={̪ۯm'3U,O;XmXQdAjZlASKPo]":pN0ā 1ҲuZ훽s3͘zĄJcbI-ԕ$#_2B-( !ïMXK/pyq\FoYx8ֵk30-0 P3̠@ uTWU#u@yNgh%CJuU"Py*nhr@L4 g\3 ["'U AQu{;c TC(vUm[.␆HD֠N3{r;z1G*:d#9ੴ;@Č":FյI::P!^:bYPE s(aW\ vp T;!Q?j(D{Yc9uY{6%:00 O}z؜gT7A{JkSʃG跑"03_9F! ĘbgjX5cmJ'U(T ]M*aDpɧe_۩z6tw2#3pJd0d0ɖv= ;Hf ,eSЌK~}ѭj;3N"KI]/.ҿ+G~(|Γzaκ"̌7[팣6sm45Bmo 8N1e̓Q >>^d$3tg^3D$DLHL yG1#rD&ȋCB̃Iy95 s9Nct$38! H$!΃SDO-ꔒ_p%/˸ ̶$bI:dPd uAC I2AA$dRIIDNpSvQELQTF;I1 FGh H"9Gb5!bGd2 &!&I2'dKI;HdN0a*"Av Ga!d8$;& L;+J"#f NH&* r0WNJ"}uK1Hps8.IihN$ p)ʘE{a<_^ҭZV~w}B>,􋜣i\Hx_NԯUc%x|{F) jpK ߝ#GFK^Dqi?*ϬqiEr|wj9#(ۙk2:s}}><שwҒ1\]}/_l-% |=~/#̹ys[at2ufV&( 9u $f,8jOW+wZz%={(5H4ǵ_M?W0~f?C$2I)~ab8W39DAsdvy3I[]KiLWcx $T-V$LbIQ{9eO/|]竕Gϲah'"u2H( ^}GxS[v(k{Xr&;_{IPǬwm:sÆ!rF>T7tft UZGʪ>~њ8(}p\Ƨ\;\|FESX_\|°Dݨy_[|Y?O56|\y@bl5Xv/~K֏C _LԟIn R4%]myuZKB!)i۲a%ln`ەg!*Ą[)xQ{~hNcHR k1|.3|5q``R _[Pi:sˢWUm"S%psa;S$<'j[0t]hw:B\i;]6)tsͯ+ PR7SS/}VNT5dyPdMX0" /nح;Jڱq[5rАX% }ߎ/@AK 0d\{K0U"S46 '"HMa)=!ۨA68 }1!@$IG|S{Qܱ#S*Og.$} @6r PP̟}|3[ss:\g-[0==7~Lp!-M|88T>*=wwmApr;wd23"{X-/Ixzx>MR}=NOi$T)^3DS-'>|y^2z3wI_[x2wkD6]J[8< j6!# ZA*w~S4 },|$fFs~^e{e=z%ZθߡW7.lMF(Үfyr.&1eZA݅l4FXٻDk)IQli/RQrL&A)T"[dĭa(d%X &ES-{2aOMїM-|">pa"˜ IIQ9dԚ)SWL%Czsa!ع-1ɤR>S受>0=? S ?7#ާK/O܏6mݣ|YV!A&AOͻ%^g?>nѴ6T4g5_e}?`ru6lq!2G\)Cѷ6 RŜsx0"PТL:eX7I'd671JEʋڄbK`jX&.ʔL;iDsW2D >1rr.Kҿi ˤBDzӍ ֵm{yXM.$$!$tI%b33Yfffá}#H0D*"ׯ^w}\k5֤S[p9s[\HP0ѬX$`99z$hI0#B5bR' 䐱u B8(! i;)96i$ZO4ۡ:Wu2ogyQ6׏pd!3n> ?~2ӡ}χu6_770_g?_7HBBd8b: Q/F7|OVKj?EWAk]\4w#zbؘB "Eh^$v[N-ہmQ9s r1332K32s-y5 D?d_頨B_aq]7`F ,`j\?AY8䡴Fp! ߛy:O46H sٶs&%Y f#:`?>7Woc~4胰 D$7"R"?y=%`0 D 豎8 kQ)UwQiςȐLXXk b'HEmSmm$o2qYаjq8RTvZ @\μHq8οtORu$NzU!a!P2LN$'p$ďs8tX~NrClHPN!7C9C,6lI!d \\R\q^d뮻wX4$ӳj 9sn[܃K?)! b Đ@*KbB)JRJRB$ `@Z ( dJ󌤁a,)Fٻ3$dtqF2Wъ1`kxUbcP#ZfL1icLˡ06sG7nLпbŪk)lס-(JI(R%:R@!$`h0 %bD.No-*9'Xj4 dD7Dy"YqȆ䉱$¤DĠK] *ǀmyԐ H@7U\4jz B’W~-IHl\.ܒ-2 \9Muw?C[gB|$"$KbX&N9Ȝ%DhPw^)\BycspM+"+ :qʞ@{LU4ll!)A0J8Ibn FAPߗ47LA4lhC@2D8zwuB0ѥt05(H+ ?%EYATSx_XD;{w8mD]UMTLDyjS 2浀D$ޜ'6O4_KCRQ4( $Cs::IL8(9II(Np*E)ʻ)J8> {p{J= >ۣ 00Rqs3,t:(MӠCq`: 8M'k{`9vHA9P3aηi%,X4j¢*TKM'.tqv74` TQ2oų} DC臧ÄNNnR4T y/!],\_S"U*T/>ktq #rXy..sX°&%M=ke)JT߀$.Drr!fffg>ׁgyx},y7'7>Q:#8I8H'ЍiB* ŤjH rI;BHAߔTm6qo>N"N!# NlHD59I z9dr޴/ !@I'܃R6?˧J&\F:lrV06h#;\-f8 )Qߠ54I@AW=SF19s$n9E9h9'3#vkmo9|059C@t-)l φffff|y=Iէ3GS .Ėj!"˘.VQlS&XT"B,,Ł NRHnq4@7"nNIDv!x 11}Q.LŇ*+UqAh;A\%R؁҈= \rz|8Q}K{x>jꪪs3 m.`zֵY2ffC{mpt=SMuANI9#y0jiML9$sDl7Y(pUU$U )Ϲ9Ppv>Z)JR# z^f8`LUUT{&j&|8@;!h$"VqՔ2a g4F)\2hij #`  C33Lffffg*:<zzi˙*aƍ ZH4zr GM`-$bxbD"J%nDВ[u  !$om;$#Dr"7$nsHl#k'#>DÒ: @:j2IQh]h=jm~?1v۳qrfdxT3#J"!i48h +{>*i'DqÜ% G)%G: BEJE-1%9JRog?kܞvF)\әdA{^pSۜe5$Fc\.~#8ɨ^βX>T! nrqtăW 65H KmuȜ22 Ɏq>'iD~_?4/S:{zm?\21Oܟ;OwCu_A$lƊ(306d#tC H2=/d`1ؒ,=άÃc.g{e׸<.c!XFgQqh4E1B)y9 3%&2RE; }9vV嶐^v\OO `H?צz$5xc맪3~Zc\ۇnb0!Q 2"J&EG(&M"oeUhnlBnY4dg0f`I1C_.k1gV|dGN٥Υ~2<BI}䷻ּܕУ4aLXV ͤ*6#t?(`Ń$}VG&"fƪ{,h:˛R^ magf;ϚDM݀ 9k ![ Sd4UoU>pThO+Gnz5jtc[(thXc)dheZ{NdF>_u::z/Thw݋_㉶^{@~ _⠉Zٶ¤fU>4>?CC>LJjh$(9o=>cB6B$JR1)`bhz:Il>4J9=֎{=NAlF~_]g6W4Ҕ̑V8'w=># +(1Y.HB/?}s)JS=&/$%-"I%nQC`k L$/E=}}}}}}wffffffffffffff=aY7{fo{30j8o.yefgs7{{1`fuXu3uôf 3dٻt 0l28?{ff{3 ݽfo{{fof͛6lٳ 0僁̏{gjn$UeCp>>N[= ?$ؚ]()B!>JT8PU!ƨăA4*DHsyi8W ]CB?c: 'IVaOgo@)V \?y3M 0MZmօoANj]cSV_ii8Q9f0YjIjS0Djw瀤J[ =Cs[["","""""#F1If}آ7??{^Fc+/v:n/_`iBOAnپjBa j$ BP!,?ز bgBIzs]:{lG3=Ztv՟î׹T>oCɃ8պAOc.饂6n6E 5/@}m /߇dB?O}G}Gx!2c3LQмLquMvFfmB+veGO8,tu]u]wn{rxvN;<$y^|ϟ:|̼̜̜̌1q}!3333YYww}/S]*뮺뮵y99UU<q9+tB뮺뮺cffedfffVfdfdUW|UD<^yֵo33Zֵ뮺ֵk[1rA\]&&bx )`+B mhz CxZ,ƂAO2:{| 38aW~ϠaJN~[IUp^07aa܍`!Js4|ϞC8M^wֵkY-uG]ڽtoyu9Vƺq.eGЍ#b Plb\ECtfl: (> "^IRkѸ3z Gp/O_oֵkYlZ8!1TKgKD$GƝfF D#1u47Fyy瞙aaa  l]$iեLv6ʳ3|3q3. 'c CHLy2"qO*1ߨ`\gQ^ld%pu\E׬:è'TN^/Wz 0A%FhpOM.t$W/sRI7%ރ꽏R  ؿdo)Ti%3r0#\VO`۪ ؁?^"0*p-ny}"< {Im::ɤ"?xYy$F=THOZ!(z؎sD9IB !H 4vCD9 m x'2gdQ<6_g#rFri޾CDDCs4:%LpMObQ5lt~T!ߌA$j: zOjhhyIG`8u!#I܁r2H{g)9[B"'flXиsX#37|m2?)ߝ&1~g?uIE_(y!r<!wSG%:'xzcS'A"pD)Dں_2/hHa"٬FUSN\4SvOOM'6?i?$8CD}c$I?"G44o/Ipt1J Ṡď0eK5"SYv$#4~W.HNBwj9!T84!,~I$y%DĈ'GWdYkiܑ?l<GTmUxPQ#ğOuNA׊yqĕ':ðMȓdCy1e?iiiyI !$$BHI OɱY)@aSZA .u?Ŏeq:XR̓ tbQyhGjO5#J}4{PzI6C؆|Qug7:~.\o%ݗ'd s59d.O!dGݐ $HTO}))$w2??y ~f!*p?ZP 1/(}:QO/B"yYetv~X9ۨNM5h7pN^'p샊$m!`!g MQ$9{ܴ̃>rƎ2N*--8N3}@}-/#Kڐ}})>ryJlOC"{:y!rd]Lĝ ~,XXXmߦz8&8UyA7Ц] %bS]93+DQ6Q>ebI#I!ʬhY%,%vT I#(c$&IIg1165|5F;kx *[Aq/f!$#4Ml") DwOĝCI;7fEWT1 p}?[}H$]i ؃ $L U}'%Q4(NqX>y'%G< &'dۙ ry^XD>)7ceO}@{%F Dd#"+:`} $𨝯C;iD f3'5UXlt :{$F!Rĩ",u!ì׽A^Q=;lt4;sz2Q.+%BQ61D҉)x&J*GN6Uؤ"d)G _=l?gB{szV+0:Y`~R5$Dx,K"6lѰz!Co95hyBSNU0vbSk}~/_ӴtXGWo?u.K/rJ_tL36mCyT{lĝG3k?P'*$Y%E|Ι/솿LOO?q4?I8OM'}k'I_nt`Z y/$9HN&?%V>/3.gNQv#BJ8+oALE5K_/G~a fXpx&;~l,KVU9$$FɸxT?:IewkA;y)<~ $hdIy+|U+xMʎ'1>OA!aM@"D_CO PZG"~])O̻9((%8Bn8H #+9/ӣ8|~1P~cEUR~43 lSCR]@9BDa!`8';I_%+C{D>*8 = 85a'ԇ*"@:h QHz&% .yDD 𨛃(tNΊ0*'(Q48DsIdEHȈK(դW~ʟ'(}j ?EE6|EOY:V⿹q6I@O}49 ~x 4G ހr$|#5'#x@Cæ?DwQ4 p=i"?s)(3#;$F9"5y`E >7B ڬsz 'jYR#"!GuIDDDDEC@?aHHt Wo`BZj& T'" DK) ǿd'e,X߳w)*l $vT~͍?;U*lWSv9r;.WȪn&f_ɨUuRNUg}|mvՎ_)[je20Ad`Fʝ9R~ttb,0`8 Ꮇ8}_ c2h4Liy99~G/S2v[zoiD?ynbQJ (q%M_>H;Dd% 0& E)އ$ΠŻϜg4 jbLC%#|_1dWG!Dʍꈼ~#HdI1HNQ#'/z N{›_SS: ܀_o`wD Кe֚(Ce #5 j8%{j7v;_}F6?݇' ?dy p" ЍD^DCuI751">$Ai / '+ۥM6L:na#?U7tGC'/oO Tmc[ kt|.8Q=Nb'$m1pw^3"ݔ%{߮@xCHQ/DE~7z6v?apt;pH40A A~>@6 GhI%yD6ARܳ!(I1#B?#q! Df@y?}[-sNP/P!xiDF(d(d@@i!#ݛkmvQ\,ɲ.NGA>tBpˣ$~*i( .~>ua Yb8#'_t}| hՉ|1O'F UANi``R &U& hJB$_sg }=;%!y)$#$.X}>Q!OD~w)]UHLD۠NAH\^RG-O)ʤ9ȋW H2`bSD/)\}2#g9vH4jyQ5_?O#j./DO0 H<|D?O"8t$|&#HGm )[>ɼL£$vA)ut^4`ܮH(@fޏH~2F̗ɏ3o}~U Tq;!}ibH=a-D??2)Nwp[,j6ݵ ,;i7rJsB~M[!#+p7A͝18}R4lR)JXRȥ%)(LRr? Yy|uhpOxY=nLnf2$pApN!LJx#C2BT:!?!z,3d^0 Q"6Hϳ'(|0wtR:'Z+uւs`1d8B-Rj=9<~7瞫>4 wz$rϺ6_|D0E0^fEj{BӏI#F$G;E1cFn^TI9{OT6ݍ\Ҹ@I-!@޳ b<$~Ė%@H|l2Q6;T`Ue8Q#K+RB0FI+ `$'4"y49yqD@.$(@v Щ^@ " ZlbmE1)b p*Ga0)*v^/.eY`ȝ9ʍO8 ;"Jˣ Z=G|؏Jspr9( ,.GcQY"L>~W9GCgkUm! 兑 ɭ"J}fy pn oQ4;ӕ'@ēMZh>%y~- Vi?@pZz=+2ږJRF"i;j1㛿w&xcRU 0thWsk6p*wƧtl!vw =T[q:x.xr/J c BCcono~m%=DDM(c_&S 7#c1rZ4Y86^X,jO nd;D3Lփᛆ6L'P8i0!HDBt:ƕ ʹI0alD731I&"nU@0,&DȰ0p0ҸȠ"L $J2'n!hr!^3BTns2"1O F 1=%4q;cAScۯaFÍs! ! 腤?W|'yP4=nQZ9d@0:&J)RD QiɘucK$(=9 c<ZAzv.I}( u2)C<{M=$S^ ZzhM@ġe:lP HXP̲FX Cp_gkVHA.ƓץA偒Z_ݿJ4DDDDA1ESwhZ@tJ/PJ'\`~n,W G*"O؋ oI=8-i,~5MO ޢH۞eg~BaO9̝f#"F$]Gn+rѡ#썿y=!'"=isQ/P&{MOI}gh@}"F,Ϸ< TM+>''bmbSaA1Px0hڨ`IwnBR(~WDDM!WdHHEaT{x=aUž([|&~mU8rw!۟Guc80F z۞ڐX?H2 Le"x0:#P7}6^=!ـ 2?+ u2A cs#i"in0X0vLA i)XH\0Kq$Bh i:BjTf~r|bIxGIxֱ_.*dđfQ!0*ZG\BJSfcJ^_qy ;]#]]%_NBBh*yq,ɰ->Rt3#?kl[(I8z:9>wM]2ot7U|?yl۱Íe"{ s4뮐!sl~mj|?62Ǿ6B$.H_TH|l8tqrWCOr* tq&7hd/W?&㞽?T.#qynwpGบ @A ҎL:- ķ#xż>Me dId,d>| C{}14y-s\uhzgJNDq),k yON!5 ӭ`| ~ '3؃ڃԻEڎ]\8od<2`$̏0 :8li>ގ kIDAÊ q\EC_}/AxxEz^/J^yÇѦܴZ-ETTTTTTXe.B(!tuoׯHOt"I(t܃PNI$ȓ'I'HNt:$pGB:HitN:DMGDc,61e0P31B7Y]!HHPٳfu]zKXbMs-_9guATQ`^k.Ap%pEr^/J^z d+"ecYae+kgn۹ioAtt`y˕uxp[A.RJ*Ap \/ 9#Vjls<ǡ'z9w/󞭷xHw;w;w9$xD$Nh9S4N`CEyLY",VȹXI$o7$t";J0J(t[7}vnpa?۷nݾ_zW^eqs[% z/ 044RPKn /=7s~a cwɳMQfs~Ø rE0K\k= dBMh@4KAhE7]u]ue-# 0 0ÿfZ1KbC܂.J\qZilMlcT@ږmFڶuGY:Xu]}=<Ξ<0ݮͻw%81ho{3333333333333333333>~_^Okzlm<{5rAgFG>oK!Uci_A@ MׁRXzBk*,U]8v da;PzAH~H<âo->ubt}4I"r2c;hk SB褀ߍSrCB :#8Qj; 7LX JK*Tͦ}ET>on^Cb$/o`ܽM\$shr88\Ps67IlbX>9"9JMjO"1Ѷ-CܔtW?qt:p9>"C bi>t@|0wWFP`rN1wI,#iGvBG$cdKcKdHʾ[)ddT{܄&4jxw#OM;e21`}{/N<p|edϐ ?~=b((A?1qTlj?Wg!tá?uUEDva5{Sc9#}&*Wt6(i{^ͩ>$RTѻFv v$yEA KTޗ<߈xrjj.k58x/]& 0'sl!2#1nx$YţvB` {tG>G%Ft9n{DjOBNhh:*{XY5쒦O^-PPa0q!DX. -L>ydC ։[d6^tAjul!rYjvI8HַviBHHHӄ:>ҵ:-\U%Ȝ㋲.6Ch䓰1`@"y$b1|GwT$J$L201FeO~oDH!$bT #y:sX&f&QaS蒃EA@!B=O^c1VĞJH8XZω?2=BsT?kb;ϧw ,GV@!J8Y%|ˌ#ƃb6oJpcY J ΌP#|e<9 *ˆ)V}p& LuI*MKl^&$YJHI&]I8j*i QusS̡RYH2G Cc3,q1 )"<(I΄؀Th$LFU1Ĕ1:5zm#E 5Ư CV=`Eԣ1qPBc&ra!T2GzL(VW6r1rfY,$%7b4h$3!GQ RNmIx6CImm-]pO,UuS 63@;!gg*X.iM ͱ0?>U*č:0;2;<9%y#;eI<"f9=$zd;=HXvI"EPUPDX!*EM'_yIY6NʼnXj`ă` BQAR .H@" dʙ 2Ϸ_=]mRtK$UYQRdlRɚJ,%dG66&JUykMJ(RChWyd;) !wa6{J.8,1 lpDDoN:c6֩? 7"DC%l4|Tڄ LI&!V1[oEt[9NNlv:G uqݖf%{qNMB+@2C߄SU ja2#bD8]081 Wf|&Gm;购 0d8d,&q\An#>wG(Q~ͺsTi:$z@}~jRf땊$!ģ8HC}C /{Z}SJB΅?A>jBx?C39j1ZA^# i޼AyǮeOBxB 0^ϗàxxDU hL}`D6*drDn9_("gtE3<1)ǨjZ-"TS7+K~u5 Z ($5/l"TZTfʹm2%3,4ؠ&XՊ64T*)` aAaGiW}BR. "`VPR(*ITe QSckB)zD@BiZ[##͐B a"*NoGlcT7XB2=Qx{Oq?UZ"pIUFdc@nbѩMf_Mw%6!u)MM9,S*dJB$ԃ ##J+=`&7=8J}HUX̊M*Ra%9Axi 1ۆfGeEHT*?z(Iڍ[ݕu&Z(gHJhS Zi/sAHuLyvk pěLItCMMtcRI9b]9  19\pPhw YT>Jh"%+VsMMڢ\]:bm:.;)#AKژwLaDV4U b BMdrCu*>l׆xߙRmH ΋<G h4r5X`fكc sQ"G9#q(; eaֶHC6ZpPG@,& ɽ頚ZR#\×t<UJkNTrBuw&oZ<#/* A9GxQN >On+i{}cNJp4xz^nj%K2=j`9&UtbZ_"Y"bUluԝx!}/btl*} 5!Bǯ&%;<~rc@|DiGX,dO%*JNMx P͸4O;ۢA%r4Ƹ㍕APTAPQ@*JQQQPUE (UU)JyA=.(񈧧p UHgg!8\SG7<=m̱ʂّڰ*?T-fJNrQ_{ׇ-Kcץ "țz-[ˮX+yc&HU dP8(-5~"Xb,RkCmG6x N [H@ah'O z{\ˢV,rN)1Xa||D(RJƃ (1 Jx4н~#a>Tt'S-"|ݩ;S2' )nf2B܍ѣTROcOFթZ*~<>oggnwټ|$!m5LG.&`cfoL0vu#sD.W` UƃM.R|d':-Z$l G%yZHW:,vJROkg&eHcQ$'E dY}!d$L1c 9?}<Æfb2hjf,LEWp̖XMBfwvwuZP,j]몔 ڂB2bBF,@νe& ]u[vKrnt!U Cma&*I!=wn{&gN8ưL ʏЊNZL %l[_Bf$:#1o.ΈTTMVA\#QjUI8$Pn-8fDm EwIPvN䏗K껆 ~"8?.DY~[JOl \h9*G-2ڜi !o'v ֤?4H=朓eB!@}p<FnZN0O3<$4xMTPwjԫX?'?]6>eqA(,TJ$eDJdU65Ă۞bPd*(T,TQK*R1ƦX0#,"phhayxՏ(qT6*#ҨEMq gV߿bɛE{=z·vN NHDE,X7ZՄ$mTϧISbU`[KMC$G=& I]%5R7Y?b( >YMG&#Q,6{'&6ߦ$)QxMVTTi&F͖4`zJ=GQ)#v&$xi@ Ə 'bzQ,z4hE&V:`4Baq[T[g2bl@\.>ԫCv0Ιw͆|Z@qV*+jq7!tLOGŁ"IQc}H{5xBrvKw9 O- 9|1㑣21L%{,gD: U75ɹrM$JJpiH0q2w1$1B: ۍ1N^%9sUS 1/>_O ;&1VGUއ-/p瞝Џw YwsMW⅜qNy(|G&&KD9}){Li::ba}-9>$iNfzfÇ}/Sp`0G-pt 6jocjRǕQ+'4ht_G9i4mWw(6xޥs=$T=xd9I=Y|!=\ Kx8#Qtp'1p M QM:dN B$v$!@෷! gHlq0Te,!(_fIB5Ebpq+,̄`yg0:/t7Iq߃MZffBl)1WcYge;F*0]tA;aƆjq2unΦ9[D)&(AsEQfg`QUB*ysa2! Y+ߢ\ZQչ, L5W>MC.^EZ*B:tڹx̙(H1f&]z|Ga6 _k;@[ݡ^2C@3 z<&B Cd g»Jَgf62Im{ 6ۚ"|C7&,蘑dDz'_L\끞WiƸsiщt l G\1qk~kt:՝isF$8# z'~Gy6~7rV^PDy-1665F TĴJS֏7֚3! 2V7 X%aHK $> sGD*f5YTpyFHXݭCGzmېh88ρU J61"f c\^hAe3Cq™J{k[:&z3vDT7Gt炸 "iMCr^x1kg&XLy0N7n:p C :qqZclMݥ34pMxА+q&gLHI#nRrv`Fi/mC8 M\uĒ};=Gd<3p<'ĈtB!y֚mG-wEɿBiauqTy2OvHӛFLڳ77ς{#F{yN= ɯZ(ki4)REҗL؛.k.dIͺy*r^)ZVJD^L̕MtjWV7V. 7Dd2Ic53Tꪨap'W#)2s)Rp;8ҁYoz(S4PQQuzq뇋wώ'UӽT΍8iu\ Q u \DaҜ.wtv<Ei8A!y偭+d:rZx!.鳒 &6p h>|0oC 2d$ I!q*x |S-sH&VN9k@$M2!7"7Y95ICH-F*ƞ5%r'\'ʝ,p"HrAcåq$d{V) scxK!#9O8δ- R#L pCk ٤ FH%UP3`9b3GsQw FBFs仛 CB1؞JHTue ^6z? X%z3E%@#!lBaB6T3I xce[쑎/4_U#Ż]}V\ t OPƬ=yK#>t:Ϣ*BjπYtO"GBzL-d=Oā Ƀ lQճiI:Wk6l[ԙfjv4ʴHJ(̌11Q܉Dba"2,hǃ`#Ҡ^p,$Om-ynxCc Zo٫TO*ɱY~sp?'nTӍ"Ymɧ'0'{Ǽ̮jziow׷ szGn:EELMa^aU9C~ 5Ɯˁ$ҘÔx dDW5qa;D{}ϡqw-1OYةJ~wf<6ls{-}R1y1I}Qᣌ^'$ߌ5q8EfDy&Z  r]Gz9N#eBD&MqG˔*Hy:OCG#! y)U=nCa{& %;*ڶ34F7dÆ1`ɽhdxJ7pi!6`+Hx6I=#]J4׹7=Xe> '[%Y "AHz@2:{}GmW.SDbk$."4~rM|'pyH XI &av˝MYjB \O$1EAQ +)W$ؕBH_I27>S:7:ӏ%CÈi=FmݧHhv֝} +1A6QciV"#@T^ֲ8>pwÃw~#TIFmqm]`|nW[םj- -R6_Clu 6o%s#ޑb&A!H8 bˋ(`ÃbI#&3F|` ]@K|c^z g=BHj($b%hTbQXG܏,gƣ[}Q,|sU740Yܽݴc njL`hI&n 91rS0-5 aezĴ:ٚKB`-1i$YG$.PHB(إPF(%DD ,P#D,P#ҼJ.J)jon פNGGeKbӿ4캪mªMf&Nﲥ?/sGx Ssq+t KFHπ;IRQ4\WĄCQ۰LL ZZ!tD9o0IaAڝҐ ktRĔY Ss9!…AJp֓0O/ƜFV܆+mm=XHIIQrj1=13 la4nj ch'2WIkv`AdAm[Gm q ISiѯsWVX,* c@`$,QX|vJ avTԣi׍s#4+%jdin6NYUTe<p؁vw/UYMӔ嚹CF<^q-qd`Yzd K8q䉞O3X^卖Ax e{ 8Zm4;G' Q,1u^Dmzj2NΊ9-#f %45鹣nj;/=IÓyzHfá.xW{+?/w5f֖8~ yɬ)xgDz98lz]ρMh&x8 ѝBssCd;z*WwmP2 ;T1d<8ꀌ̛~x<#I,w젏x|KsӘƺ8̢DeB7G[߾ӓe,cC>9Ёifh$I IHHHHH@HHHHHHHHH@!!!!!!!!!DTEDTE[}X6ir m(y:nCDDj(KJ$'tɲBޏz"0R5"鿂vU;(9H8YembMfFMYU5RJQVA#IJ (A:'i>kﱚ=w6y6ri-DPDp&엏*mC? HY@Q6de# w ;F'0,"[7-pI$:>+;<ݏc)l !6#bJJ5&I%" %){wG<1;!|R1Ǡ2=u-3T;iܨa8,Ut) {/COBq$|W7-~km M&bR Ms]F;\P4dfđ^(ªOBȏt%Y<8|3bd~|菶}esWi\i A"Z#`bq4^Yrk mQQEE-ef9QQS?1ѧP !Cu1.?yny Q4AfA(bvs_ӱs-]­Hh)5Ú w tKm#&u)6b r:,љ$]ylQgvƺm^k\R4uHaUQ0݁+(0hvܮ1(hLdeZΨo7z@DMD'T~z5~`lAdP*JE*mdӉ?"|+xb70c;逞vȚMKJS}ӞWn-5h@}Ĺ nd]Q" *I*; ݸ "lkClC[REd=P~1$Ηx"؆a?_cg'?.msyoâN?ۧ7TϘ //׷<o:4SNUB(2"r0 0]NBQM3ތCRXUf0и`ۘ=QAY"7b,Dԉ% HHbK7Yh Fp2HΧh^\E}|3Q/b8r^PDL+LRL=t kLd5Cv*/'BS{x4J;iYբM!D3) QO /qiQ duޛ{[#!i hVY]=8٢B # ƗΐFHhhECJ|_X*_8s=yv6ionvlcvB)$laF4{܈ɽݽuo'zw=D]]jH.wvpar5bicIcXYmS([){ؒjF)LW*IH '7كm@Bc+(PI^pF$lL7*!C7cӥ#=ɖ?.Аp,BS/wXnV/du?)@  ֺZm)AIleE]s[ŨըXZɍlQebk4ب66416Ml6SZ,m&[Bm5b-MD&CQU`Ԧ"h5f2RkhiLbaF̵%&5I&IE)cFZ0hbkfMVmld,m1jEIkkLFƩضMmRj,chM)F&ib=[a|ԇ<#K3%5 D 2%'ZџCh9Q|30 %kYCeܷ]rl =kɺtѫj`HB8]-ediVh5z~_ K}yYfV%yA$ wDVbBM'JfR&JhIYScBѩdKLblhDMZ˥)6IMwrwVd-,Dydv !o.!@`)KfɵnuTl /LjFaY,CެNS^$~WhT:!Y??C+W`=YӃ?̥B"a:\W8:rF7%',~)0<iP_u2$0%lHDF R$0\%`@C2idS\5dҸa$ׯB0h|2cPHWoO;Yjar vj!CWos!X䖅M1Њa5GA6lu@m]'-?AtM׬ $y-a;>3oi;V`DD-7q#C&YWcN>E;./ʞ>=Pf9'a? hHA />GgĽ^28 1SO eauf a4<|ad}Z6]6m:+">5þiy>i-(´ōih}M9gt9XZd3'+C{T;ʥ'= H>2lLH{^ s!VC3'A` ԐuOuKM||IJ=P`u$|}O_L`Ġn>y>Ԓ{ F]iG7f2e~|fb T cFH3+:ʫC&BA# H$MAS]{%BiR/__kϺJr='>\p1=Klbu$|_B^"#(Aa0b%Ե%]ҷ5nmӳҟjL%\*E8؉MʋTq;ET%dI{꡾4C4z59DZ!6΍qDàW =r2 i>OSyX!-("n wSywc;C#Vن<;Qښ,o0X"yr}7r\] ٚI82$1<`-LXCIl|z[(`7"K'ǓҲ6DM`dՆD=! S)5t[ѪZ 6ߦ7Rł¤ <I6HSu\e&tS.X{y9G< I"ڒ}#Ó,-}]myNGǡ.k{%T~{'//Ppf'(:w8UA~D?j2/[hܝj#Ӗ`1r24ԡi’~?QbbP[`q6vN QRߍ"~m4D"x(!+j"I $%62i)(Fù0naEKϚH[|@@@4aD}Z0Gċ3ac}n9תPLAHfѵh1[dXЛDZflPŷ-EV$+4VC.vj2[JD#M-LXeږ2VKHIIBUQJ mLUȥV,&_i\*[fxyptTL~>DK}|vH~C'zS &iCŊTrv vPYm`zk\#d&p/[lѷNYe^Gmm+wkILhk3jdDQ Ւl*&JٍVٱ*iEbuڊimecJLHR!UIٶ!C5W(tVdoB]clVQ &@QzVC@lwOb?r>R)RTURdQl9qÓ'wpΙ$9aKOv{\zzdjz|a9 ?"lāCMpG8j" |LmBޱ/. ?<9O%Is\n/rWB ՛t0>JfhQ{2FFL_&~\eO$a'B(#Nb@#Eؖh ZC֧6}MސOh|t6Vl;Yfʘa(#C9L8'SWshCj$tIAlxZx{ubINnlm*k@۲0<d^ػFobipeR1zJ ob~w*Ze;5;%)A6%;=0Aȭh&,6Dzi)LٶT+KV|%[?0z?&~?\HIB(Q&,m>9PuSo|f/}X&c*3Qj @c 6a452h̷'X`QPa; C0) ,dͪ3Dc`8N2jՖUұSG8wWd@D#+t0JD7=h]dCf6Hf!C--!CDr59!$$/;"\EwY0T̟C2+̶"cH/9X&KB$J[PX0\ h&T6A mrsl!Gbv!)" uE#e}/{iM_:L]k_%ۍ^n_0R NE 84nF"ceKZ[ ƑbT))&ĮX;;@(R`I"7y첨X|#H!%)C^mQD0 ;)ɖ :10?4d#8@X!Mܮ;d2t kY`P!- BM%+*PXaɔ]R%JQ mFHQ{cs -ȅbWQ=]c&)9a s#su뛙El0AdU0]+f%gy ZG8;7_xXEU;#{^Ex19nxa)@&˦M " ~<3l4.dգ};֥%ƔDcY0J`M@IKJcV302OU  HdddP)m qǓC1EL='y\{Zj1A "wkq1aOB2QɁԉ>3|I J.0Ya&@8zQ"fr9ƬdXOWU@ ;aeAdJr*|e#<'RF6ϱ!`> raPzIjiPJ\6JV9 E-%PA5K088MRΣ4ѻtdmhpgMIvL -bbP+F&%4V-5Y!MrVEkҐr H$C[NyCp9$@Пg\[2E &Xk#quu^5+؝Ti(XQw#I/L4- rQ!C|ʜ0Șveaab^6/I A$qD$HLyʳ20{"jAXR ;Cdf\ϋ f^i{TNʓӣItƻi9j.$^$Y! %ְDVmw#R6Bz$vИcBp}medG<#ǽDE<|!ʢn;JmIa8HC*~ &u;(I$%J%ki )*lAV#A#GLctc* "pB;>wҍYbBsl6KMijcQ,ΩA3$:x⻄47,64織z=*:ɶMl}1}*hh8~˺1DHk<80 hVy |.Q 7.Wu^Kp& 3ehqk$1f,2YdQ:Ip'AQ;(B@0+ :I#k^}G Fu2Pf<ͽL6IQVŘ6d1%NRZ'V`7kJKEi-/V5J) - `PYsaQ03ctCRJHІA ٶ"98 hIAնئ\JTʹڹQ bhIѫ6dma&}eįd R,$RAMLq&ofb) $ h7^S9)~(Vel9N!́.!3Z-+hLnWu}EUjHʖ"2ifhdiYbLf&ZIjؚ,-'QS__2i.T5c-dPpO4v'1BNPQ!!ϗypIi (PF$?)b`O9o/D|Zjyv3&HcXa1dRZJE UX( QTkF5FԵ Y&X$2P,% $O]CrG=q*)wFVm,m\%5$4{DdV28D$$֝aH9S}OT}ޤCL{@%ߕyÄ!&bA8vʳL='?7ݽ醇M~`ʧ ]o`hLjr2]+ uK`B|ގCh"d=^ȁvKmcm%6 -:i@ @aف[a<6] k!'=i)*lg 'ĝ A8!)6M%uER((̀  D64V5]imUJfQiJ V$ol78WƫJlmeqFL7rs.zڻ־zWe^챶m+Hdk2Dc"LHJ\^뵹Ur\źjWgLF335mc7Ѵ-&HKwu\auwjLk0l"myz˪ojdŬ$FYn2F*5&.щD U#ʀC!ܙ%MшSxrI)}f]ui *@( Ԍ )&Ί Ic,d JB"б\m ٖHZUҙ8 zp }IQ;_ה ?lBe"5cD|\ޮ3۾$_>Z{~sfP+HrO;<uM5|y%JeQ:=g%}G (ޏYetOԈ`2vBITѳYȁѬCaWm:"FFSP *C88Fӄm$)!`cL.#3K#&Y>Ke\GAVeq佢Mi"_N5j[",ʱVUSw"n9="Eھ, "hIҬ #SA`,Bw}Z[ ih2#&i*̍jLSE ?QK%=t1~i-52[|_wN͐LMxyd96P16p'%V M&I/w L9"!E^qWȊ H bl#K2TYA`l)pt"?}J2ťA&{aj&Y"h#F;Y !^g/ 4U˧҇*BJ|{A;ZfʬdbWwMo;kPd[T&ڀӿbWϰ^ޛ]^dh&smS[цRON1jj(wHN)÷˰x: Đ"S  )C K\> YT?=_2z㆓l`A,~D -Mfgg$b/Q :ʯcF#j~J]z2p/pң%/x|~6'̱9]E>It" 咎襦GCi5",#ڸ 自7Icb'|,N, s[vN6cӇV vW7G |o_/ܐ-rʵMSS^wY=53LR>=Ω&$ ~ry'CpE&`Fae5cLD @KA{偤!h&{Z@>Oi2yq뺷ѭ>K^2* >/])&rdeP5d[0U+xfe:  YA }ϊC ](ydbmx8kMnQ1*06q(o>;U Ã[6RlRQ|U+U Yc%P:Ï [mqؓ_i;ΫFn{gu|kmɛz¦˔7fIlm YE]5IddIP|mnf=+ee]cs]WQdkmy٫ʻBEyoi]ү)(,(XfM$mI/.[}NdkFIrQ vbF H Q[EA `¤EyozF2lki[Dk $L1jjn"UY-2nMDE"Zp'kUU 7Y _a^mh[$:&ޑApЭnj$J%4OX[Ğ`uD8#EEH8Ol)hcw60Y+Tm@b[XDs-hX-0r075#BaJ*9 K\npmM\UF%a 2, ;TlXi-Rt7η Ff2?FBD%miA V$*QaNXeRUt5sTkd6ƬcZMh%QIQIワ%7 h.7Q&QeH:NԤ{u+k&ĩa4m61$6ѭY!klV)$bL*!L$4Bڕ]Nvw8]:;vzƻvk{{@mf FU x2S`Or7>L]Xb(A  *# @^aCAAgc†P~!p !W-jxy;A8KA5H,tSL[5WUF)"PR 3*B2B4H>]7!d'{Dߒ9Ӭ Q&Cr nԔ!"blI#VMgLoZ I)dVj(68Yw76'bLQfL ԐE5z.L`Ue)^f=a(1ͱMcEZ"R*J`alC :1FwNunPQX& vF`lAcXaWw/in\]H) G>X|4hi|OJ$#dS~*,.4&ӅNg1HDQdj1K:tkfLM I.F )#abZs'j)Ym7Tr!p!={2L~ѥkVLHwJkF|h<h|dT݊f)ik],aۮB*$S,{g>T0&$!Ma CD$#ё4GA- BlǛ;`e󤯩_h>C*ɒ#&GSEs&Вc0eY MٶFՕuzj#Q\sZ[NEG-Z%#z67DvI))bj!GEbld n`tB_=IUzFtcC~(̜02SXr%@6]Z" 0YCބL9$sʐI6(Mڎ) "ƎWBZTy>e8PPm L &7%P1OP H@DPZѧN*O)d !P C@ڮJ%Tj汱QW5t " &H2:I'Rh6eWR0"Jw5JT<<c$HXQ0A! TԦV3R6mj\\H'ߓ'N?#Ig1ܵ,=ÓZUH%v9Ȕ_0yňGKK4BB hE&кd5J" b' l˺b4Bcl#sXDP`FmbdєRm/{i3"LpR  06cD K"e+03M)vnW5zmsttM)tlL BNCD:# #C5YfbCrF4 @aP,A>)|hv{CY&'wytsuM[D^b2++M*T $xX`U7•1 @5|s0l -Jq Z%Yگ"a<^ȓ]:ԥk{3K:v\T=Z@vK39k}g'<I`ơ: Vpo{.>.3>yv2թ[/ASe-fN跴͗ L,CZ{b^ULJ$*H' υj¦rtⲮkk[b<5{g*B7D[PVYFYsPЫ:lXӷ\ttjhڟ)ߦ'Axuu\k:^ށ!8!Jˉ7%pc3!,URˎssZZh[[a5J-^Z%]&\1TqL^d%B%FFI].ƣ*Xr V#[$㡪/ƛID¯|30{O~һQە9W t2.t[+YݒAJ'c+ U:]68'e3:x͔ܯMps1Ap>wQY mG0:(H`Fᑍȴ<$V N˪)ϹNiC=4!e|3ashgf$„I׽*Gcvopl17 1Ҏ{b]zZZs3,hebH`Cc` a\H@Vf$7{>㇦͈"qzMh}sئuu)e S8z" *0A|kal\a83Fh40\ 8ʂA5BTwdO/o0qA;*t; xH+ !JV= $sBR/@%JιxfWxCBL38vm(S&jyY,SB;ZTj14`>׉j)AUF_2Ҟ gaǶ[! vV1,w "(0A#hhC>u&"NTI!=wS@: Y;Y&%}IӻsI&ˈ"OW VFt'7GOm0`2Ǵm,I! SG l %t䢣3Kp~܆L3iz`\z&G>~k5ڎiZ[ҽ+t]>FKWW\ruus,qVo)'Svv|觷h^m4?wƁD|JR̜ B;md!av F0L 1KYLQʟ"Йa (أ";40gc3s&=b|mLEb Qlђ["N<4!HJs7VҶ1\NM&;wmf,M, ̿^#*o\a ؘficIA_Y.{8TPsYak ͯ5W>m㻹<]uY&!lPɭN.IAdI=bdCB)PAkS!VY!:  6aEgоP{# kgʾ3K8XN #pksP괫~O3^vlx!9(Q?|}~Uj-z%QRrLGNs C,Y,ܻ,Po|k{;LL ,D.*VqaAC{f8ͽs!OU!9aPbtoS3H|yՐJ 6 5;ZW8搈801W*LиfzQ'!HHZV :Hz#`i ɳ Gƺx>" :74$Q0LK&e%0 0#tkI#;FJш&hrͣk0UB(&ܷܝD< 4hq҉s~x=#K&5p?;T]5$Ő5rr(Hڋc LfiJKJ@&Z7`Lɋ]Fv֪or"浒=7{Bt\Z3pclVCDi[|m=c.E8[ rBwx)v6MGMi3A\Mx0e=[Bd(hMܣͯ%c\ 1k,Z+eBEhdN?JS.MF ܎3qqx\鷥Đ9'c#"8dGyN| )BS^Dp<>3O6F# *g} be&0T˪ѫ(xۨ{ZC p.S"d\+")*&ÃE>H3X]`Ýxg7}'vj!ف&;KJD=lVɵb#Sf;A)cb Mm" IHCck~LlM9B0&pFmL-E 8o!߉&SIeh}mœ]شiaC6%P֚I#ZH,':yS^C v6 f&6-I3Wg6Ljؗ 78Z᭹N^9raJ$"qcwcMMO#zbݞ='sOiqՁB $\Ҳ22JEB[{]\i3]H&ӭ$ D.śL.@JBy'$vwPhl㮀&K勇k M7ϙP5WS#L=oZZ"Hej7ƴ>AE92.amsH}y~m% pì(6;M26]TWݝ/0'NKZY  . !xtӸA1zbə]BhGN#~X-!IťNA:Q6sëV,;=A!5ƅm\ZlzR oDcVcE啛ڔN@S$rȠT½=e;X\$L-{TP8lM~,f3Ug RZkvU Zkؚ&Dkp#N V^-`x3.!  ].U18 pF@XBhrxjhIgQ a  .KX&9ޡڧbE2naQ.TbܺEH$7f0?cm<ڥfqMvkJCR;M{[xZLoEb6 <"a PTv@b;B/0JI@`7`قdy{=+Є6Ivg111:8u>GW8o@dn!*fX mZSKyݧ tш(/;8 㙼v( I$['UqX6.7#wXL$n,0 йiĀy@ qcd)ț;FB2M*TBBRw1%. HQpa6:sCB’pup^Q$Yd rf1MKv c(;=PvU C$찃HMܺv:sHS9lqV*+Q z8 A++$GAOp{p?4Z&TH iл2SaeJNjt&嵯{W6֪/%%5$%P-uZCLD[fSenӒo|WO W֌ 1qG#oXhE[m%8'~ BO γѬHϞHFAɌ73CZsAԆ  [N N>pP͆5b,9c t}/N2R 놚5A\Ն/QJ%)sS_SҴ AK0II!(!#Y*ay'&E9 "Ih!#IVi>{& D\S2ͬG!,5NhB5z6noP%ܶ%3XP| ,XPe0liG\coYWZddd`iwomffPQ$ @@R BH*4$G9>Rly4Gt$iTa`tϣsFh, NL4o:6mUB$n}chi$M-X`=g9m\f:3F $u{$A 2"IFuޤ\F6I gŚ5 de@({ )AHȡ]zί˺ZJ yXev/{(禍hsUF 5-R0,wFI?V]xIENꖕ{ iݑD?t9\q>H}C?ϮEi톩@38UqM1u߷`G@蘃rΓ4Z!LUE ."IE#TEbGL&R b -jE4@y-O}(kd*f3S79 RST.C7[FT`Bm]MtW{xMf<[!J@c]dMs[M\i4ƂA`X S$z,DO-"cj<dj%@"DSt;|bJqD'e{o~ EJYWc5`L1LGv,wb7adDI nD! b Ry^H}Ȩ*+d;b""0H8P>6g$M`8''q5׽A(p>SldAA 33Џ>N}J>q4HB>v?S~W"k/29a{$َV%E X|b.;MRy c˘MCQ> m5`ƌ #uWe#Hso" =@JF{[f(@v  BLZc,9DDĘ.TD9unw-+F l\eIBE03s PbX ZYTi"AtzI6 ;JЛpb% @OT;| /$0SM- J,3$I IdtDhaL 4csn"@r~4k, JVjlMk$ ";7##Z5McJJiMؤ1KJe4# +%k(m$I ! ףͧb"6)#"zlOwinKaŎ Md`aRD`h7N0 e ɔY妌y,mӬ+e`%`h.B)'-7TYhTƀaiQ`YF{ jT1F7 pL+ qBH:mᴎw@&z6*a[rE vaDeMB%Gmƶi5FMcFc`cx>ZYX>0H68U+܃ H7^Y[`G`ahzƒ8xM)-Zs̥"D,*@pʆ"6 َptnReNxpNfM0zmTCsj.텥Z!2I,6\Si,*c u YWB="' /H#Ճy5dԇQ  (B= E)2L,0hGP*wϾkϾޘƒ0 5.rQ z~$*p\ ɪL'i:L7-!وkHAdҒ#*KC I (hl:i0i! E$P$P ZE ȋHȃ"@9*bHHRH44 !H Ȓ-!dCvIIIIC" &ƒr3l4ŰC/ĉFځI!XIpq Jf#H%T䫴[ J\ДERHXI?1Vimaa= 0KI0P9"I(:Xyr>[kޥ1Wb}JNfE`9wn;R+;*u9lok`0 2PwLҦ`(LuJ)9˺IA-4 \doI1U!=>n;,E154v$ d { 3ep5IF! K*'='t9S3GLS:y >vM(H$Ix߬Mu@!~Hwo M_kV6c]# ֐ӥ}x}fdvzioloPDHlYd$Krتvٗߟ_>[:kF*d@7iJJmeE6*L5?e(D QE%$&'.l1}m1{RMX7HAjnsc%kZ_޲}#Ws\@T&C W0dS0S=-N#gųOx+;p|}~ _@IR-*_/P To)# $kUa`:{wL][kkJ;Nݺn nյu첨)7N> g.@%Hprb"B:JKn 7w(ݣ%ǩԈjWe3|$HA0#Ԟ \?i0,?LXDJCe3 ,׫U⤗~ ▉!*!A!Aj DL"V2)1PՉ*I f"%X jKKEHʕRJQ ARI0T Xʋ`R I -- AҢ1$WB'eX2(`YeɖqPL%(Y\C"$HeGiFP T΄qFȮhZB!G`%iiXL2j*$ KCQJA(#$ 9KbN2+h 2U$aDvnZ*Z͈!Y[Ql A(WxҰ- ѡaCP+ TDP & k vb6Ri  LSELT!0ĕ\L}/eޘ6m `rx)vj*bB $*`)*2- "H+ BՑNH>*YS3zIjR0V=Z~B~Pg[Uٙ0'`I7^T{zԴ,??4 T"?(muu˨ :֟^2ynlN^̫;sJ|zy.jd9wW\CHßwS"y`0Aum WL!q1LL0N[qRrtlnПDR|UEӺaB;F[]v #5 q]PN "?AT\f jm4Uе8NtFn(59 H@ ĀI=BS!@PxHVBAXo2K^oF~4|9ii@۽7ԜWIoD2hKDDOpn=?} zQlөPZmN\ ^}ky|D*G.BArqi>4{ K\Gix@iZH$w%2á!5XI<3 (![UC$0{4y%!$> Bj%Ο }x77.]ܦgJ ֑!JJWs*lrN)Q.!Iњ5xɥ@5[ҦьWŒ) \o 46taaSroY2|um ̶IC !܊Ut/b!iwz!6< a[Ra53ѡcl\ Qy֦0#o3v4]Mj&i@n6o"Ú>B˦J,>hAak#@[Isl xt'EX1+?”Ş{~ٚ'wv F{{d=OגNg4F$A?*J}IbE6",,R3hLV I*,*T P")CS $ǂ%$Y>5=?fk N} y/}1A}DHz!iiDMTbD~O)TX|"M0aT6< DA$" \z}$DDDDDE!! "zTpҲ+RS1!dd1QQnR]ZuI]],m ʞHss_G4*~D M&:0bYD=J@kl@Nm7fÎ?xcW$sOXg)֯^ë䂾a~}2]rw ~Îp}pY֯Zֵjj4JMˎ^|{$dB& C%)>d-6 |H~cI ӧ|maM~wn:TcR%@3w?ẁbLJT<NY@D"M}{+zz^4*2!D`ʂ.ӟ^=c:oh6h z^|}|YAw)y۷bHf0mm`P@iXچ퍲4}6kPP8|alhvKgѝk^tQ`+4[n=wWw)=xABִh*Q clnJ]ç@QE+U36ۧ@({`)* *wn PTP SfUJQy9 tbT Q@_{z=(PRDUR%E}  {=}Gx]w^Oyn=9^M^\A>ݺ$ZB.;P4zAPmQT6vgŰ`#Dos o# ǫbv )J Hyr yi:L&}{XQY+eAZ4Qh4'#kٻ[ZE<:j2ϾO+z|Z `(}C!z}WE< KoZ:__u;|w͚^^ﱻ@;w}9{^[=Հmfn%'uܥ& -y}Ͳdz}T73[cdl;_1eѦbmmwuoO ۽szۻ=ܺc޵o92vzn mArg>r[ ^@z=3,y7w:ml̀n{wx[ݣǗ1DpAcvmmZmWn,ݵ{҇:BУA:;@݅h=gK[ѩp4hjjB2A{]_>ۗ@@}( މCh cN6{^ ֜:=:٢l5 h}8}Z>96FohkS>]]ocĘ}!zy{=oオQP}ZX=mo;mIG:+  Yʁ 5#'}7bWb)LڴIV1Rwـ)&`%bzU*Va[٫gzo1*WoY}4χzn{|WS{wwjoHX{׸5gE=jh(|m{^^]osvl{o݌@ ScޅP4;}IR h4>{9j7cm}>v:k65v͚t V @h PE4- و.6f 6;Ab:c}4430Wju Ѭ y>]>^ 4 **l4 sֆUNThݴڶ|׾ui XJh@ `iơHzOA=4@B h@&&IOP'Ѫ~i@=#C!G25$DM46&I&#cEOzO=)5=M56jf@4 i!%$@hhdEOѪ{A Li4< 2 dɈB # &@4LTM꞊{LTҌi!H M_S֮nFvi3` FLcFmp?w@CįHe3m,(v1xMWf0[:T6`n2Xn ' m\( 1 JƏ똨Zj1f4](6_IAEc^cTQUSTRw5H1ƟǓB_C [0HG0rp?Nѭ#E@ tn6lH0:@a !&ZdPld8gm^ qKA*7*vεI^F7&#[tIjG:9R(f""<>N͚4-uK ܚ 50+$d^@ՑFCty#|zxbkYk9,E;$&oNC^3b;sBKO:j kuo4AEi|6jtULsNbIƉsۦdY$|Ů/ 5fle{ʮ #@l7H7n7OAl Sam6ârH\;jN%9 ҆e"ΗwmIMRKLWFRωf?fS|SsUÛʌg(6W@↲f*3I9ʕEno+Wr@qébO.jA[t3h=qI÷Pj}0L M4#@,Hx9Ȥ2N!xNeRW_qq̴ss+SOj=70GL2~lD=BgH2Y>;U5$yW4tfe.ukϗqW9}V&eKȞ&1x5R >Z(L*[FI"X(>Ր[pqMRF˭0Z=bc #ePLEQLMQ} 3~g%( sE1ntT []4Z>F0v4ڪ`/ nsǢ{%R(M@`cS7o=&agM dcȉH\D1#>1īx!3Z:vqP.C q!IoN;{@T;~3z9v %iVB%$goͅ Cc!g'1k:~ZAic7q1}1@/ۿIIz?|Hw\̹Ǟo̧,eLӦmr|3)0|7GX_+oUnE&Zf TbNYHǣ*IbIIaNe)톕m״z-e9=_ Γ>x$e9aeoD-\Q%J6+%kFU"j!Tz^FP\!0?Nax~o" z곜T\NOhȚ&k4 :7 RJRP{ -+R%o/&"H8׾D:ٹE,YtF|)Zjuф=?_[u&j-Cˍc5P*i`n]eɼԟ.qLW\8S!*Gdf (t۫91kWv||QZe =$Sh]F閜)!"$TfΘVٙT֖ =oC0#vM-R~$ ^WN3p &H4 ۯFg/[xL0gf心W ׼,ћXh(|T.I̠}cpoξ> ~RRfP7lnف#zK*2b![ܬ Vw_sMNgJK9k=7TSѦWfccv,q)UAI :|t Q̎W|k8Gu(NfѤhkʱYg)|ɁzD򜊡H{me(BkLrA%[2wd1n,KXL r11ԋZ]6JT' @{r eiݞt QyǟtWہ6^e޽Pp!T|aSh?/)˥Sh*d7yw_tgZ,|?f%T L?6w=uHtA׆DܽX~y|2XI'tmsl8LiFL"#ڥt:f]-'<3Ll|]ߎ.長Go+)x:E(,wF 2u>ƹ<=-|:juMWHG/ċQIT[M.? f7u^S# wHhTEhn)U~{` lͫh57HH^AGᣱ3hUFb (\|EAr$1`\wWN1yͦxƄR@/C t a% @AXꄊ )hCG<5x]n@vȁ]}Xr%=&WFofid{@[!׼ Ш^>h 鞏.MՑ9J2UaiКhJH_zC8$gחg >Pٿ!vw.*^Ꙧ$_zĒdLx_,cmvi&֓aU;aHA*VƮW^qe%{VoӔ*9stg3/5a>s\ x]8 "9C!@NSuwA: xEAJXnC2otB>˰hI4dzB5 o9YMMI[p;/1$pB9?E%|/nFh_$ YĢYNn24EnPͧj ~.uCn7CJq~yMiLJwkVWF8Zip4-s*alrՈl)넉E ̳? =2b+% $zZ_s^?IwkQ 874W* `ްP%突e &"Uap>eazu2q<l?^m :*! :WJ>#z&of3ǷCJ)ijb)*h()+{Ugm:} Xʏ.gN&84fb+ը(d٘Qn(sA0Iß\y|8dxƬ' (Zb5mMvI(( -Pe )H"(B`n#/}~"wq!q)%S@4mHWϽ>kk 7ds;UؚLf2|\{ݔ)$jJ3S ߗ.ov3uFٳ8Ȫv :HA^\W Z7_5-k%-52l t(jEj%*ljԮe%DJ'(6_j&)IJN#VkGe5s_CG#IV1Y CVQd# KWQ5YD}fa3g+#|}?ߨYg߮ [%>SmbNX+dB(=S*ּnT%TS5 m QA !͆iQuk˙a]̽|2jAT%kĢγgOsvkqj="j1L֪w@QoSo20+"8Tϰi`T&uPDOEP"Hl2k #.1*.Dgiێ4:,Ht&ot3&^>||334:APT M_<`) w^>ݸ?X'yBVXZE}S;7n)74$ElG&sa ,'`.ZKpun;t"Jt ݇IS!X{;A'047ivI=6'> 5S bb#$[/p4#g~O _: Ke8,@:nahcKy7z-C1EpALO^hWߔ3C% PInNLOjDQME1 ~4#GXQ\>iH@3(&%pN1BaY& #ETgV6j"gN aoϒpa ((Y9x#SwoϚ'T?qu!W {8Ltodm,={/qϘ3UH> a ċk!7ЍΌ}b1y>O?}bjV9gXwЫ=Fg%Z4Ϗzkc.0Qď 4sGԅ[ϮcHE#|ҳGǝp0l[|%+P;eVI[yV HCKK߶_$D֦zqNk7LϡY_9jR|Af/-|a)֐h)Kצ=Uci#ẗ{\d Q||i( A[bS !+^r;hMi}\9KJO6Fp)ZH<3 paS3~1A`p)ӨX><P`1N}ߞ}/ˊ׮MОgcyUP*ʒG|rPX[~\Ocd{gI;v1 C#Bb1iD!0 0$HL٠p$x4pJГ!Hv`B 42E|_V$ ~tĿnÂ(vU\A82$z<5IuNsB󞹜7lgJ;wOZUQn,?S~jxKk~ %i e3#]8p<^̞&3On"MpС*i- nOUr7Lٞ#4D 7ysxLj,Yj[mtUUUum*a~&OӐ`٤mI5$8ɺŲRm"  Ɂ)p)4G3S kعgbJM';43ޜL?zG1A:rI7A8Rq3lb8~s'H댙xԴh$ ؀cdǛvxeh )zQq6xoZ4p\ Q0@Rz!zkl&i|3gvnE A@R5UI0PPG""%=|䲦eIl48`MA$\!T {C.)RH`HM' 9H9jWpY9qotԅ"Pm+@v"R|V8֙ctѹ* N_G~o\@LC'$U`ZPAfhB i R UdY!VaVBL !)Dt!J* B }PX@JOT9Mq"9)gѢ % B@ aZ $@: a٠taa J 4%3DqUq"P7‚k#@ "Ġ>fBӓx$T>]U:@88 \|A]"kқIYb@Xi3 F ǻ* J: ;@V2fTweEYd8L%Rb%Ϟ.H My'ǓcT_ل֐4=Bd F ){s ?zNnBc=352ABs?-`iv”$MHTG!@& H靰v#;@w_g!mːtCPMO A i*'E"ħ̍/2| Кq @PĦ:AD}ތ+I@,cT'?n< ^o@rxO0d\)!DAb3-0 IM!K &A)TJ͊J I%LL@R "MHTU[ 4+#H: Ge82 a?Lz%"A""#M+{ @"4*C *0+xhS|rHa"_yP+ y`Cǩ4~ϻ|uu?Vs?t7oMfK- )|U_EzH"-$aQHun" c 8"yw__k|^ L 1نl Y ^\y ZO]4&_뎜p**w~g#}#V6rjS9F%u/\Os.RhiR3 d(:Dbq(崝0@C*!z`sOl5錆ژq%jd ev dA>Mr"ߒ>mT28>~۴WqUu_$ .|}dԋކ?_UU{n̩l(K:R./oMDQ" >C36ȝ|qLaR*{% AjC̀K1iOfLuHu~pѿb=@t#Co}z?0uQHUM&EJ@cL1.x~\a ]Y&BA &ff@:6mb^)5^ǂXFFZ'4QOgóɂ3{/_i,~=0Evh-[/Dit1lEǂIfLK8Q& .$=CqpI @ڛk"4ᷟt<hs3Bn):b ?h >vN(ao8bD&hȇ:rMrBh] u]bjvc8xD*1Ć!˷*C1W2^.?y2bԕv%^DMmPK ΄"͘dGh!q_)N9fL]c.ȇ#k0PS0EU S\bU:tą&m)BCfcYtf:ϪXZTߔ&m&􉻣Vn r@ws_:~(ɻwNi9OIKQXsEsS qmua;w(6Fۍn.t)13b1F=Cw}| <%FD.픾ëqy$u8z2Zl{ખt "DߖK<^, >_w&;mk +4֋{ZԳY>5K>0jA<3$Lb'˯|'s.[Fm#765)>r+3 0o~<ݧjKsS{}!k>SW!/K1I'`wݜ h@ =pôѪL(PyބJ{A#A)Jju9zfd d퓤 1$A>FH<p Bo;3V_ A Ipv<㎃GӧpD} c +0q ҅Q>$~, P[cmibiCp_Ӥݣa` sS/za7 m䟏Hor,&NGXT aǫ rrBI3iuU}hL_u3,ghw| C s<4zw'?ZX{@F˂xnӦl/;Ib %r@b3Cb\)@Đ@I|\uLi51qF ph,8aj&]1=;cCr` X>aһRf2BӜ2ye ;)7QBpghp0 vv36< $&`mV%&!{<_mꓧDŽ/Fg!: \=.>l{itOF!lg\r*́ sÖd"4ayH؁f6|pE 3boHBu槬\'TLQ0ЧÆx9thE$QWI{4/G~L]<}dGY|Hžf+]Q<ĸiSi*jDfBx9MWݔ(ra$3 8 3۸ݏ"1X-+CE')'.#}0M4֞8G#lj{ ;gk}{WU=a B}4g3shs;o/~ {20/&I2̽_%4_p&cFg5UGoyFr#ϗ l~ |O$J\?KaduGVt [LTa< f[<%D63"r Y$W$d(kBMGÅO*ڡ΃[vl^,lNw @A\Hˍcsx|1C>VBm ݴZ^4,VӜ@*r:,7fM[g/3,증}+>Y0QliHV}zԑ]ǁW:LN $`B3ngӖ~9lf PZ5Xҭ^0x]~Ҕ9Ɣ)S"e p@`M~sWS kcΡ ?)H84AUܺg.n;LDS7jc^?9lN6 ]!Me2Q=Ƨw(Qb(",=g(H]h]~Lqk2B/&LlUraU^^NN{e<[ItW6G3ub;h3.~BuUAMP&$Ei\+Emft+֗B$7 Jz ׿pB$ɵS ov*42vBtz[#'Y ;GzVnzjsM:95GĘ߯I}{ ʵ—d%d3c_JwFlqfem$,wsPvGQ 9~ Qw= fC{Dt#6j f7g,v _۹.oWPjݥ@U,\ktgS^E^ACj1>$,?hCͮ[aa!`5,@A+0s9]C7WC9!~^k/Dą #q0F۱@sfY=Ą2d/ }C0]3 '6sZ@l` $G@`Oy9Td Ē#BزU`ҪIq "żm_n{;*ۤUrUQ&ԣ8 3Ns h4ֆnb1ҁ{ 8{a> SAVL{JP䱊1>$LKC? A}!`0#fpiكgt~G_(Žޏ}M8JٻzFAfG-#w$J lf6-# }^sU =fNN c,'1R *5KPUGKijHM@pC*ܫM3=O667왐`8GG*R^o]P O+hM1TZJ=]_; owC X")g~lU20t~ MIPII QA)& VK1:3h( 8QT !Ev (*-_;caf5LyK2IݚSzQQyQ B78Hu ;fVpWJ)|m+d1M5j:O2QC6F{;U޿`o35<񽶩|^{!Q9"@]{R<qkMaF^U+lUxHS1`J2^aFm<} W+y+a~mdɿ|06iKv3y^Qלy7L8a !qwg(G8|C0܆'dtu0ŹaJRGf>zJ4[#TiNfk1:St;ZmBe6H,$HNӨ [C TOUO|ċB^U_Wą0$ "}'˛lbQَSH;爱{q ߢҫ{rb qAo?V c d0Z^70<݊Ɔ67˖ڗlaʚPD؝4E UHr ^}pz;~|^7 `88W3,%sM@=:zGNs]_W !lAlWsf;t-7,`J{ZT9Ml]fFX)1~Qrh>@[ .PA² V,IڱSFE6 ̡>s+&X:(Mrs?Y{Z}ͿAe!:rgϽ;hjsX:76lpZ# 57qٚpCU2Lº"3@GيE EQsf-%$'m.;`5h.ְZ˅iI9"ݰ`Pbltaޣ%'@U;'@iqǿ3D4 ~ ?%^[fd3`}-MGHzDd-Yax'hOu|*F5Z)G=9o5K¬^FuRJcR*j㮔L|snzՑulSJn//]YȻFHio6 Lb h0'_.ͰOfeqk@fzVW"̅Xd8qBo;|06 DvmyP7=-)zFo}c䍝2oIWpwg>A$5e\ֹY&1G˓W{+߫/]PF{מFw|yyY3"+q7gӆ,@"} x`dC ΋4mvamgy1*B^A7 suv@A7_~j5UMOз)XyPzu άeswWUCŔ5|Q: nLĦ%3[ Z{P<1ӯD2@SR ))q6M(-ʒTw iͧKΆgY{Ԡ!&'*b-v )v:=ZN/b ܭZK%3̈́E"ie{]HŔBpM|8`c:)^L@g:TMӎ+^a5u KJ$NdU5%XbDQ-(8E}DXNzykZp8; Xu=b4s?3g^TxrW,&";I' ?7 t3qK'?3T[R⼵OlNTYͯ?I!owqo3pw)o~)u͇3R/B1"#)-j4EɆD|Y ,'a)j3 G:E܋2e>$V (I8ӯĠ9`-x6 !o4|;۱Jtz*+>j|Xmuk& ʀjbQ*6Y֭S~ 6f­L,4 (J[y*ݎy8[ft]h!H&5>a%0;a@7I!ޑeow3-3<%uo)& >zj[z+u;d&3t/Lx?Ǯ4xg&Î]xWJN:Nxo2lꩶy"{8vѰn8ȃVh1=|@+޿7Y7tdƘ)OsS8L⺎.ldN\K&kC9zL? G!"PP-"."ֈ֡uv ՙV;+ Y ~Xeho%c[x wsDʏDr!Dcl&^ A!T(\~;;|_/a8Mr "CQ~/p򒹪A}*tAW UjPf܂Vܿ~LeFxe>rͦ#D<.+h[&I=[&(/hIIp%@xp[ﬤPn^Zַ~ Zp5';c6b?lp!%nT~k12auSuwc1ߞS ihg#Z 4أ?x3/n^oRx:* ɢci3B=F޲_|־fa 6th( 9A%~=tew\K *?gV״#jq4a6mȉB*M7`Eߛ+&;p?DݧGP4}xJh)ԜfN/ve 7_0 __i&FawhrW%JCL0=_  ~>h ŖBq\ҞPꖘP>^i_l[`⑚D9~?wۍڃlt "pBı/Gh2M. ֲ%͸OB[̓ ,eF>?p&̐ld[Lq,^p{d,q 4pLJ=آ=?((hH" (`)/.g+4:AsЮέK行@$ bY轧5n4u]8868ڈqk_1q|uJ0q9R<~SgjP0Ea1(D&b׍[6{9@8ܒc73}Thi+LnPz)MJRR+o+EwԜ4#"'vX(:+:otVhW,KۡZͣ6ihs)5), k?GnB`HdCL x1 'ql%D S],Hhj bbX *||d(q'") Vt=?y3gQnSQ])>s;C1i1sv k-R<̎J7:$ѓq`0;jIÂOTxu^2èZьa嬄9rƻQHld)BJmM@|M~O|HǑ顥ݳ F͞&wr÷u-,M;;D:yۉ< 3@e+\'< 6\5'Co<i'mkLA𮪕-*#Sn$=HY# /am(3*zajS4#jm'9"%Lw#L~?1bf'@> 4sCEpKt>hnd]4!`W`wo/a-s{f{z:6?4s73a!K~xVJxzm)z];m}"g=gV3׎ʗީ~=LCU?P]nWqpO:5lcI4S4Q#wC  l"& X H$o2#\ceȧ <͑spmc P:d;4\eߑe<=iA Yga<&]m|eF]LyRuP4M*u*#| RoMg2Vk(*>aR]T<'xi5b^ӌzbDbcXnI% \\Oobav*h+$$>n376lFVQH ;רgYNxJVAuU56bN qf$,Sy7&JsMg8W- L/Ɓ4%<#lT6L:r;̜jўu:A<$nR\s+VsPw+g;w#ۜ)^^~{ q0-$5€0=409F 'Nw1w TIjlp1d3U>h7+i(fAkMHxg>QaT[ݝm}~c _/<1e1-cNQ8cjswd,oce rf`d7Cؕ)h a*޺ޮ/ 3(Hտ l 81&0 H"G02f1HA۳8cV_~DDPUJF:=14'䟚i N98p)"!0 B_9-2`:ݜ"Oj;i Zh"B$dz@lؘcP gO_(g/eܦ%M }HKH , [91+',5Ǭ]k.B~,=f;74Zu/39u4)cϋ\ ibkF V#:bi13yF4cE^ff܁׆7C_a\|F`e1VDyK(6kZ;`.g&л;}%O5HNj%("> :=+&*:F[ jKZ7|1DcxjlWI0yf?袥IĸmOD>"Ԟq"ҕkRSiU'ZGb꺁38ޞ􊛩D$Z'dJEĊ[ZVZ [uvc|4ײ9t3pŇV^0átnH:DI L VTȋ՛YKJ^ʌ`G%I$"NCu KkMTI$v3bmnĘC.>D{2xY޵=eN8#πJ$97})Œ$iWVM';*a4+Ŧ^L3qZywY fh lQli"[K~_y,_,GbH-5RXqR5my 1QnZ/U`? >~򯄉>}[ zOinZVsj7|"v십8qP.vzbi)NDw*aQϸy-~c~GU-lWb&>'ΈDo*oe*C9֔EU;nE4ݷo #ǎ(>Q-"R$%*QWSWNrg!8&bu8Ad>}4Ȝ3*SV)@hiSպeS}sJ3pgZVgleaRdbVʴLM!ğ|"}WfSpn'~7m3 3LHR$LLP$Lox?-|F!-EּZEkfMwMpsp>ugl& f~.ZO3{A8mߴDeUaQvQ;䋬׊F3wi91ݠN(.ӿ䶞{ kK962u`,Icrw8 %z#s\$˸LPjs) qxE=K8gsg2_%g=?K aM '%1Թ™cvgf*gǗ n\H&!vPc~vb<'(,+] 3֝sy5)a2hJ$Y߆!>I^p6r2o/J1xv:EHy|lġsc~%~;qy-!5goc||{OQ&CIjXVyOj\{mZϡUocHLQhfz-iWlS Ew{"lૺwjq]xq׃87kRl-c3zwNF] L_7969]ͱzrר+$w:)ٌ~wꨄÖtåֹۡ6+fL;*ixҙؑ=1>bU;M&ɲqȲlKTXJ48bƙ$ mB}RjDEtx[ViYtSͧͶnŖWWf[f}S u,էKx'C0$3iVߙ<" RoZZ!$]ܺs?q`_Dp-`[unc q$ͱT[q\u>)ʾs& ܩ6s+~ ciq׆:Rs0iZb!zJd³R2$27XRF^Y?薅3}n$j |( #; #ĎMv?ۭ?iaPqp]E6?BV} /voqYӞNiO )}US37*P5F :%x?9B]G^Eyy2llJdȚ=Qo녠m:p*҂Mtvm%K鍊;ߛ~1؄+h3V.qtoe)pt3l&jwL: td]K~n6/P=.&FE7MMԌi\ZԴ[[lεہc2|RkU.QEC2dV˾W1c1>8ߗ&G1#%.QhPgvtl|p"1s6CH` ݜdsFs[g~T+XPxUYf4LY3_c/M\0Z:2qM^tO 9l7FX>g96 ۷Z(ۛA'淚FD|$`&dp{rr6.y\l8i 9G&$_ڨhM̓2l쟛}v2ꥉusuUOLx^f{e~5oqоj&cWLHgfչǭ%^lbhکNFi3^!'v$BĂ S[.6@3F}^>Yf듸 tC{73˨nyqlifMluPzԈl2!I=6 7{\o:Ep枉i9 !7)?4ښj t!RD!^n:WBfѦ}}I;RF)laCE9fl62H:98#hCH[Zֿmmᴇwrۭ[c=4Zsn͍*)V\9PZm!#_Cgŕ^m_E:F~\Φl&0*'%0PU1WqՑYk=fNZ)7b5 s̤C f}991#Iȩ_LKqVQQ[֗n#d^Q*~7*v[ّu50b-IZR%ixįnyĪ2F$ԹNdX'LxfS0`h鑑$GV,cѹ2 oډMnOe&Q&1v1WEo%$'4U2mOm0qBp; ;lZVFЗ^Y+°4L 4"0&X3 ̿fc }It, N2IPdoٛeE$&_HYt!6Y)'uHỸahOCRv)+mj{Ite19=:*֎s f;ucl6,0 P@t! D4da3lmLy6&B#hؕ#2*!h%GhZb/|o釷$5P/qg'p8f[4LYWl5q$)s;\Zp>(,aBD+NSwLM'in gdj1 `nsӥ(1gSzE-D~ZVD!3+U-)u\S­U;hݲ~ o?>Uwq5MZބ"ΙuSwߋ,~ =ˋ3̓9ha&fB?D 0s)Rm?TJ|3.ӎ\}GT#N"!e޲NʈBXU猷HI~hIab܁f{CN1ĜE @ά(2VDiH?r3BF]Rj,`D՝Y4ݻZ[Y .1JC-IK+߯k_>Gr$z<9X4et:Npoztp+SE=TOh?U6mZމk99T7wuCKnTP3v Vnc} ޞ .(7(.O#bd zICdEAkN )f :>NzY+׆ũA\g)cx/ɗ9ZS<||ۅ,X$&$5W` uPz ㄲt߄xיL HHLC&f9SNXgj4vNz녆0'NX%}"Lbkȅd&lw{B^fC%MzYbUFQ4Uι^NkKZDyWg>b\ъhCe߸9H ~+`;t</~H|h"g!-;: ,H_<4_iO!rR9O6~y6QKD*VqG׋>͌HQ&c_LIPic!}5K+SV,, {úΚ*lsp=pq6hv`27]p.-<~Z޹gQi*L{\_5րqS¶ Hn&V(e}H._2͒ bH2=37ņcwVu]nawvk4kI֐hj._~1ya-0vv@oB=B?<}ԔlM9M f3r\I$}>UUmUQUcg<2hHӌItg"CQ6c?}*0dTƓ"xU--Jyf߼!AspqooqB"[뙯*K60sPܾl0Ο#/O/}~xv=CzdrBj5]C+֬ѯ][+oŞ%qe@<òλUKEJj*;ZgZf]tj//5\ 7~I-Cln痣<}h<ߚe#T=+NZ5"&N9TWr\v6!֕T2v=}"~ ]Ew 5*+s`_]lxZ!Ǿhqx R8z ݝڝ͹ҶciA0جh2zpF-.MEPu6F޸4tm4eZj3y2=$ /6b~UnvU3 "` \XS22Uؗ~z짽6jv7Rѭb u,{*6 ;uמy>nEb̞-<}Ih]86Oc/'|8ɳvQʁeHi$i<P5+\RҷRTMԯ-\rq֨&73䕰XCU$a.Xm 46kY+WIeacR/%ʴ"&$FƤT1gz"pCsa]9, M=&qnmnɳOqoZΌ=td2ppVg^Ha]_a 乎I0Z$aͤT{=#gT&hbP1=τXi.TDN)#Z$u(UGL˼@rheSH,~\g 1bã^*߅=u,5tpmnuǍ3w֞ue({wX,8[)UX̽vα(ی=3 əIB,a98≘ ̘ |* NӁ8WH(9:g(ӎgEdT9):HiBK rzX[4nn{> &WݙxbIF~%.+2"t :)L ^ tĆWƞzǔoFGFF;v)RD)<>b&YoTJS9j8.^ e 3W6f;O3lLggH/C|s"LDh)]eAEGUm25V%{Jd[C$@mjyOZAm+>Uzu1]嫝ΊjEiFD?CЦ,VwNu~5Ktk!^Nw~=.kNLJMO$rpCϑIVS|^vIMO Β+&(nr _cACrwpE!ǭa`=?QTEd|{eIAffMd} ļ{hJd*x%Zq쇤kZYrH Zj"-g9ʆї A H_ObӘZ VX%?ŘX ?0wvb&g3ωQsbI۽^-^ *cOf $d;қMï _U35L<_]Tj93٬'DrYRء3GJQ~f.m&|n7]-&GGCHlM"Z Ho-k5i&sMA39 cUPt9~f ;{o:6C-GFs:R1sM2Z3ZOr@J8)WMM7C L/Ks  1& ;I1VCUdssSϠSm1 |MFdSv.& X6X{AH%$ns+(W# )ru]G(i;&6}2B)(<wT&!^َIǨ^.qJU$ý)QʫR:DP%?dj.YJ8zθ-e"3/M26ܵݨd@ p#C,#Lg&԰MʦehM HOr=&bmjOtn%Gd; :+XK?CYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYeYe$H?(3z&ja,uЊM`%Gnld`SPW>L hqUMm'jLHf}K1&BiI4ס?YPwhpi (چfo ɣ?$òCfLoc4*3 Z~'v#@wLF,A{zӳz푞\R;ˡ>Pܠx؞19HϊGm)Vڕߩ2 C׶r%LBU"a%P/_B!%HsPR IztwR,MR$C\DKynતʞ --SHPJ$s@w(nU "`@Crr@$P)&"JHOuF U~MZF)ȸPxwbiD؜IJ'Ԛi("(( qHc<:-4J9w>xfs >M"L)tpqLɀ{v~9׍l̳*"**JhZ*h`VbA * X&!h`H)V hTCy8 *(7De9H@/*?tQbc$,1QSHSOv(A ul{eCs~d<g5orBa|( NdKtk>]$/8L²!pQ22ys/|Z&rT8B_ f^[ڷ}&H5!gRNCzHXS9@aca.6N!)t}#MUh#Q7v]xB1t7ʘag}#zy~yGE󤓕CB:#6SY& ys;Kog^|m$}^I>k?S(?**hby`uU ER? A1EE3OcHA$b "lESd}6o‘˃ø4.4fIh (dREa1%$>(̨*؎*o;'-y>K'?Oɢ%x8>ßo6C(ȱuT·! /MS{pC?>3Տ N_^ջ~u-83_8Y˯wZVeQo274'zuֿ[Z Y=pIRG-u| 8m-Fjcn:~L޾<" Yrj^/}}A7ל"FlԈo4Z3`$I 7Igoa-R_Q')KXɠ";QL͂{=⋭7鮧{]/ٿ#n|up~|~/ڸ#.SԪ7cǷоrgWAx4PLDR:SCbp8o }p:}QXe‰r!|iFtkY~8"]^> z^NZjg_ˑk?R);=ӈj+(/'3}#/r"d5'va/*ԪHcnOluO_'>BLjBI@t/Q|>A]߆-K1OϠS^'ⳟ[Vdc!Bǵ<,.!fFKwNut8n@K9/C1զz\o}ocw|mckUs1烙-/7r3࿧DG_R$~_͠uJRm3Zqڂk&,>Vzroܰɿi/I\efm>fp~/ھ:·AAM<*)mi(w8nA%v;DvӁׯ׿|J'T7H XbyF8Nd|{]ϝc_gv=`SĘnh0]b?Ca17<-9baKyd_/?a\5||C\MxW<_'gdBV L$ğ2E4MMqQ/N增&g=+鿺O۶= I8Fv}(¬/LPWY_s~R߃}:BKiJ3_b?O#myz(owɏ0$ǰg+iȡ q_I1cVo/ͻ5cGhd²ǡҢSǗ~z`i]if{l_ѽ-2y<\tHdr짘I/ד.r&aI7i|K?>yn=jN n`=š&Lh'd@^牙ڸ[kuAuCF%ogd&ٿx`ssusmBv~[PweU_Xڈ*Rm"5U ,C1;b ҆͜Tf. A:/XQ (n&\/,#kW֌hagK""i)@t(.R{1h=ZbJ {]S}};/ێęeL ̏B^OuHbR]a4U.>qy0^z=)#w5_Nޤv:Č)1͌ME4 =ۆ#L4 2哛y_A2{K~O=-KtV4@a I9466 uLJA$mNs9.Y8{ѵCj2!&' A[sG%?e뢴>1Fa&5No*aܰ,fI=KW)P>U$񆳷cxu6njohݓ(θF8#FxDA(BІۿ`Gdx+b4` ސbO:-bO߲L-=SCkݽwΟ_SGrIM6ՇxXlLg&,0q !mFz!hj6am hRc<4~Oh׺`3=A ¡suUS0/Wa_(3Eii*}&xMg|7{PۙãN<8~)d5pybr0ia)앥,:D7jf')Aد/9$&y'<:|=x7h,|^ |e\h3>\:>iUoI5un.9M뮟v~'{hr_t[C N^ pq DIFlTY">Lz={B]tIwUzzH"˷A|ǧzq:GWgEg~|ם<-5+9U;ZUyRS"y%VHZ멶==^:t.kpO;a?/T$|(_}5qz&BLŰQ|X!hG|;l[m:|`|o831 %J)O)F!$$d/O?]_5j$}? dqbsov?N]ǃIqq/e׿Nqʘ[F8Noe?e<UTewC~'5$~2^@#M1q*etأß'wOwwnI?ѿ8 1($k呓pf?T\lĐAxO󵹱 '4 bHd?aу'?ǿ7G~ktَL̙{8}%!K/\} yRЖÓʟ[- ŅиıH"UA`b`2oHѭ#J꒵Vm16^sJRI'v:}zh=1(v@D8@y#_&7UQ_\ғszjK_ٛdnMg$II"6`wB 2}Fͬۼ yW9?Ck!8$M{fg\/aecvH#_Pх9($'gSXѡa, O%a<<$LzW-ӷu7iFK\1#`߼!aWG}%G$ɩ%dhCb/ѵ ~U%ܺ x6A FD7*vp,<2$v=#P;0IO)dqG *OFej{/0o[eYϴc)(7ћ.4=RA8EGKR9IČt%DŒU˵ &A_:TXDP61ze c 4)63쵔TCɯ:Ö2f =MBl܆NQm3lzhYyq%r-~hqʙ3ߧ:-^׻w!ሳ)~r8 s3TR:1g>ơxYamn-:mmNFnQ1BgZ?Ï7fGzTf4zmۅJ]lryiwPRCUBɌf7b[ܦՆ}6mdmgS6[[˪!+(VԩnWּ25OdwqޜUc+YysǔOmƸY'# RwNtǥ%E=_VXݝj;JF')Is5L*sm;k.3/d%sruUgוқF* Ԗ2}{s=U"dCh_xKeSØ7?]o{15mFν46XO28aH!>*W0)mF_#1֋YES TޏU3"~,k4M}2Faޘ#C9[ВL CA6S:ʦHʻ5LLqҘ_fO>yt]Ӫ!Cf*}w(V1Đ>V4bEsL{6 { N3ftR@6W\%r#IJ(㇓qe1 4P\Қ>S"sf&"UXn2>AC{APrĉG`JDD/ vbٍic7kLVe"|!vs~o;鏶~ݭCC7D!IEYfrG~wN d6¸\O`X`kx 0 IyR?@T{zP=;wDDIŇ02 xX54 ݥhiNBNMLfd8ݍ픻{r]|b4y>u7E]` VwP}yԢo EL`q==G\l:Lgy726 ^ dsx =JI4m1I!ں 9zzgn̉_zvv?GCMI6.hiMu,rQA zkn"$kxYdTr7RɩIJɅBdLJ][_,`St2`I?:3oU16Q3H賷^ }ٌ/:0ћŻفu*&<8_OI Z1,[nĸ pd LQABv8ǔ|~TÂ߷Ɇ#\iH=jF%4ɦ{bf|†x36W~9fHssۣ1.f:V{wo[fFi)`0ĵւc119al1$z~"AK V6 |v$05+34at-z~Ns܅bfqcz"| ݭvE\FsS`nkl7F6,<$15YD…zBɺwe6Dǡ67; Na%inRJES-b+:f5C-ĻW',\i$:7D`| Lo̾3XR%+? }Y[7Ǿx!͌u_84d ,m/ xGBB)O{ S- I]H0ldc3꡶mNt+·y- BjMLal)#OUyYE%wΟ\KT<{c׍ 39_I\HN}zGَakwW=o[|'mv6x{㨧.tD"]~tts 0>"9f~הHGGƭ%*>1/g 0l`Z >o,Ɨmnmp y>kfw7uI4=ޏYq6F~Dw7??w|(= GxdQ$M M0(e]!~O-ڹOkG  a%ǡLLr"3Hd&,z__;xg-IoI3?|{kCLǍҮ$/66V1CTf&s}F!HV8n% 4V@WG'.>Ho{Ɉ`La GwȔ1t8V7_ &={d`1 o70q( k ds"FY)ĥ]nlM3DlnΚC$QnFb̦Iua&?^~Y%*bGVɚR}:uwnW]vw>ʫ=lʳHg1oRf] Ϥ/?Bsa,q+kH|KqТs4e]cʞst¬PSsr)Ԝ>+| >f{!N`1)L-{&ŻbYz"ꟕ #9x(iu; Zs4Ĥy|&*W JY$q R=fq. P,+ )պbӎ{ᔏ.[z-qo9HcjˆJJJJG8F1̝-8mQt`d֟=,K&6 }׬Ъ M ӼKKM0N<7^6B{"F(&\Iz""\PԂZIAzs<d΋AS} i޲?=mףl =@cӗkii)wa㲍dUR"QmLU Hngd(= t|$v I$񷃏-;#M2ثTu@IW0 tn9+$h8sV&˭])1uB.@ݧ^\ygs=`Z'AD@O,T/7abw,}=? )ֹovX&q%܏3 7&|;}WT^]Kp~˟ԛgaoi!EQyR=-ͯV%-ԧb1wi<ԛؽw޶cnr^*3yx6K{7S}$'w LB(QgeI DL4FHI`s[K)żc0\[Mi8;`;h8Jn{ƚtQHVdN.|19=y=4}ɷ?U_W3w!!!(9 <0n A[Ʃ䍶-X~a_qX]٧z;i?0sDžp d"f;qc͟4j2xP=/9ф19Mh1"{=>DYU ©-9y'Q>8=HT35%Kzi' ߋXxPGՀstN]4S*Nc|&o\Oּ$;2Ơ.끵Axq`N,GCtsU"J!ñ08 tL]IA<~ٓm<,%oùph;wiWt5뇮i'ltƭDu<s8BxvXS~( 0gogyvgZcŞ$47[%=s)gDfonÂnɰ ʻWDTrRKč$9ی5Цՙwc6ܛ:!QҠ FLDIApL!9)kժT= K*5vcIN&4l&22MuaRIBaVu]n]1C:Sz~GOs$~?)Jwy~-~:|` dDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD#|䂧TVW|w%>zDG̈&A$Ѕ={R$$b-Qzk4O'ny><( `yM(s"zl^ud&j07C7Fm1E t^6B[Ub$5*֙iCD#t:tmnn'燪K5; bTt/~T;zۉ ygs^VD˻G_e҇_  :HoL K.6;=||1Hun{豙U.Ϯ̗E~zރ=9*#%/?z7nȧ^*=R} # OѕY&` RbJiK Xb.qĐw9/BexOm]^r{չ۽Nwɩ%m,N~grTk)NKV&#kNh9nХ2ǃ7 <@*0;vF =;-rAƤ`N~hl ~jmE:Tܴy`!eT'8W6k 2v髼]/F3v!R z2r0c<)vzh9ӁW,fIe<[uj֢Uoc^P`&@yFrM}ɱM ZsRz:ucT'C(]&k[D((((+lbǻӜӓc>V**-{%DU` FD`ءj&+8*V_G85wp_xɤ́AD4e!sԢtUwJO tVݾw$㑏wTVpXovz֯3 Ui,2c}/"~gwF1Ɋ1բ$CTaКe!;~9{I.b >"Q&cDH5{3UFʝswe:ϓF%F'9Qu>)plVHQl\ t|^a9 %PN!/#hD|(~ɞkD!=4 0鬎1nԺfϓXUrS/{s!'w $㑞_+~ὁ*޿ӏa jZ>Rgw2)qkrhH#$W-46 ?3/&zLb8}=v2(U|>]T1:P/-^͙K%%vljI+UW1,&4l@Zh:La+bǑ]zžUi! cw4>֏ q&LUVp)0SyaIו2ڵ>N?`g Bi'("Lɱtu;Yˊ2RY:?:zPG,mT+[S[I&>e,3D;f6 ʭ.?n$_!-_wPvu5[B(mpT7!j3h 1iQTwVoHj}lT7!G_("2B@LL@u VI\txo ܼa Fg "'Ht&9o/}{xJ1xkM/٘cB_IVԦlƛPsՓD?rP!JP  b"AMk'x(|dT|x|J_1 bǍ#u[}}+azLOF5_̬6I\24vBܽJ*aM'cS|D/ opa𻿊رgɉ9CʠL|҉uďwU8r]h%{^CUUUWهd tKu)MTB! ce1>>DcQ9UUUUWSո8OW7"6𔉊Dq6/ V1?fWe]y mˠEQT]sJТGU80xXG701oL9K$+$I`7w3N:9c=Y.6N(ʹ[),!jȤIu~Ѧ$26a1w6{iN- H4n;6YD3^O[:[nݾA&(h#<~#!yj_X_\v<nޝ2u- 1a9l:_yiW XCX,}85) N(;~53L3MHZDϗ70! =H8Y,^8OWT $WB413=T<8$FZbZGGCT+0_LG3j&757K7F!0D2'E=t<&pa+1(kyk`2|t&gy _|҇;xͰa2`EՅ"]zn$monnj8}qe#wy#Vl̆ r@n?e-وI#yy'iՈطKv]l=Sd&@c1i5MQx3V,;;b,1? %_ooaG! dyIېhUkwQ J_ww [qOv%rs!ϒ6xugv5bzZ%?Ns;v^GhGő-, N$^̱d]l¬" 絀rO+cI+O&hvWR#)Ki1MnjdR fZxsJImQR|ļ2|X<|в0 vH3`cqF/A+]7fgaX %%@p$jqiҒiMW!NM_y.:y;Ǜ0s8yvB.ϳg_rն<%Hs{o8sb2lg*`K.a4w7+{4Y٠Bnj]sg繥ѓaR;zh=kKZ|nS62 DzF6KiDV;X1deZ9%B@ZznAe4MC*pYv0gDꓮ60{˯,ki |$kǑn5y{yrA!p*R#M=[Yș#Ï'&.l$th|؛Fm=')fH) W'm%!Xlsgi$JPf)0A'\㸄 X8WOρjICBl&mPvw`c*Uθ$I=L $$`{#,̖Iwǻpb'rwsb ȭ]w{> V{399bӔ*ȸ q?{/3~A, \AB޹I#Uvo q .BhB&UkjdD%Cuۭ 74Q3Oq3߭ s$/ڃױ{_UKlX^g p)a3 *nwgU~{#KTT8ُ_8yL$W;o׶{i 7&z,( < VM)*T_) [Z.}\~o]:UM ˤvSمVJXΖ%qC3FyG:.|Xdƺ^r<3m}U'Xa;RUzH=-\jbZ+s*rH)WIJHcNJ? lp!|hrT'gXxeDmJ&)dR)ޓRNR[VWqCY%Nh 3}Nk~{2E2઩mogfDt5s:sE[WN 4Q$8Zwìl1r7d^hfڥHi騤S%1~ݏKIlI$ E *3o6hn?\Crl6MXݓ5 j&uL̥`=;`j3{;.{*㉳B94}_Yg6 i-sH8oﴚMv@ٱ]I S5ayFLU(H =`{ Ҕx.O5:;,}dNOr2BJ_QwKDxsG9xr=75daL[Lm"TW.Q{0T!mt9,R<'^ν{QչֹqaKgokUX{kNquNQFg>r"j^ʾ3m/wLea]BWwNb`ҸI)T3c)_^(z`<%_&2VnPT [A,U ]/'"hw2g.Y)9܆٬;) >e#!kV-unߦx‘ y*Mٶ2ldL@a*̒<>~`k"5᥸[Ӭ3R&+sf׵,T4Ǟ%RY/ҦtV1xiV|84ssuٝ7.vR6[ckFu$~Ϟ0҈ :Jf6 %b%*ͩa&LD|(7wZO%Fߕs:jRNJ+{28K-S4l*Qx!ݯ#FGʪ(Cy1--P࠴ Sjiʬ]Ke1J4L 9Q݉Ng ̺ _F'i6r1jEO@8K`Dy2Wf`{CLߦ!>S^?(0pbEˡy{l3q x$= `2YܶYl–4v(7&z4Cw-l""l{cQ,LKaQ PAh-_aH?qiz?4 p:}8>Q47p9%PO12-^=`AGk F"9NG9۽" %Q3 1|2( %3H/+ExL^T !K 47/&akNZ!. e>~7a@QLllq!AD(@{&2E1)%JAsЦel,IʜL2m\k$mǾ #8Hp>!`Hc˲avwTVC 0?\F/Z K~t g|E&y}\vdrO KA'|8FUcox@GFU3RBֳb1 )̌-*L<$$;a ws͸@2ĂkScϜdqp/7GGꕿfP}l *P3yU \[iǗ:Y'=s(KL7- lh<G ${>a~rg=a.ﯫfAoQ ? 4ƪ ϡVnX-|}26Ǩ;A m!zO&XJ(gpNcgZX1-u2wcYp;-y͝ Fe1R$8{Žb^gQ<1{$<78clk*'q dtE{ڜəI85[GP2:jM۰;;+: vAS@ DQ"J㹊̬ q`p[J Apfu{ҹxQf`a&@2j *)*& *SVPF%߿L?ڶ=k !*"HJXINҲtjHJbA`*HRfH("& d!*iDΆTt%-өa2AR|IYmB(yQEUUUUaIHJ(Ե DHA,6ΩNj&3%AL u[CIA"AڴH-0AUTkQ,8uB&*@FYpxU$mQESDE5UU5I TQ0T@w7笙(CN/oEUDQ %PCREmZ3jra/sIcж JPJHPFl*v2KDa?]adtD޴ϟ7x5Ǣo>J\?DDDDDDDEՙ5f=CHGla:!5Řw⥏& g~Pxd C }/\g>]~y@:ez4E 9]" IވL.O۟;ECqw$n@]2ʉKUl"s&Qf!4{(7xA@0)*# 2`BF~'c`:F&A4`h0kiV?r2SAבR:hjKsjW_vdQdzR@BvW_c92mRe4I K}%x4A2oRNA[j ǭ:b{U1 7$4MfW'|Xs}C @J`f&ܚb5<ك>_> 7Qg#窪x0"""""""|O^hx;MMdw}л`o[7`@qdF`RAlmVjOn&N:a|0{ɧyb"ӫ?f8ʯuTհZ|J(6zmeZ00PHBH7oPg/WME86udDh9`T5`ۡ2՘M06 M2o7ID^ 3Qv.u8LTAcd]f'L:5Sjtm {-aQ@C χ2³&:TU׻) oGk:~͸'b=[Ր|S0`?.jYg_.Ր 3Iga1'V-R.2fh#ö+4Q!*}1v^eS)50l,jƶnȚ\"G:es T}J<:?gp]<* fсnAh'%byXhvcNq|'~0ǭUUUUUUUa0`pG/( 2W@yzEO6M1zؘ#&5I0DDDDDDDwW1m1 ?6< ς1#b;e6 :uZD5Xo2jVi\"X|m$`LImjfoC/*iEijO1j=6=x lmc PUtQ {Ǜ $jo;yqlxPgX6n^wݩ0oɣf fٮ[ƮTۜ'wb@q(Ls`mALM0, CN33n]U9Ew|L> ='ݶdn)GUqWh1@xۉ֎J8fWKqgS塗2 OsS+SpCόƼHqae (B$'2GgzNhėY`"BdG=wCHY`z\\fOo~kC-!.Qch~EsTQc2cqU BoeVcK}"⩘ґp ~[w ;vŽ  O1 cpFhc)CB.ެj\8w 0,8ZF] (Y4n0(6#b, % ^ wgG-~ >r.h a&jtE؀CזoOo_T,1&ǣanOOoWa26Lhb8M}~9%P7 zmӸ7hӈ)RL(R4 QUŠ?#C\ak1@ڮr=W4~ {Ϗz'>WZLZXؕ]Ht.t|vY9Ң7i]"\BQ{w4h&6FFA(\>*DBhQ$M]skt/!AEh(%EWȄ\M~6`M2q9/DT*PofyٝoX{FR)?踉nrZhJCSH=4pn ٍ۸UGJr/a s@77U>#@2Q > u}GNK~ __L L۝聈~?w!Te'L)۲(3j/%dCq<}gSXP/v/n7[+Zk;IUfvIkM"VQuO+^ >6/6sQUDZգE\_3&~1wϏLO|s (ZHfNFpݡ= =ETI:OR~>gcd@à4<| HbE^눞!N A@}x;t}x\CicHyA 42߷& G;hB"ž)1y:4'9u Ç'3 ؘa1SB G)oBxz-v(1< ^"$}$?W0]b:˦1C(qR`; wf}{cGgÏD!3L †@2]˷W`ݱr6c䡨[?1PbxřI JM ]00|a_ڑ ohQ IT9*5|?g.G&]G^m,5gGKr)_)R!@V8jÏp##+՜C?jL[e}UAʤo+⪞g `#\!74^2=Maitb/z!q(1p,y$qyݣ.c5CC:k0Əy,k[h5F_ =gny H̜36L(㙾Y3u*̑#&f%晏?/Nٚ,^E:x[)̙yS DBI#C I0v1|XNPviJ؃MΚT@VIlU3nH_/.߭Rm>ߋ#& ԋM4M4M4M4M4M4M4BM4fꏎPD9QHGlG iAINwdž:hL㬷W/S=<閽SI9Waµb15DӠ/0ס$챶/5=2s8,f1΍ޟO4儷GRz>17|}[^};:_MNva6p<t#۝@!#wyVWLje)lwX>OO'p<8@&i" "I)ca,M ((RPHJJR!B$@nI_48!৳?3U|i .& Ն-6*L`7"q ϶U9Ep pًġtOMP!WS<Jִ1$5Xq4z//$ 푱>萡C$ UT &'@t# -jeh RI2 >WQgcU448T&q?- n*"X&2l8z-hⴞl?J ʀKoq wN(!O4;^x|j!$r0yp\8H%?O P)y( AQv1DM2PZ%K""H ш"͑/vRv?Uz&IV:оYY(h< #tqA qd^ PE zBo" AiX Q;1VB2$pz<-rc46ĩH6qlb`* ` (QʧB)1Ř=ZK;8-tSM!i60)gpJ3v^* N )GGD1Pw(a@T<ïS>I1>M3n06,Y |r 3 KzpKql0CGt!pVtߊͫVLU&a)k@g9v5;/όi;ߩס[Ssw?/o{;yGȁJYf| ~C T:U3WsZֵ~,M;OLJuI3@7 8ɛT Wt$&%?Zp RӽƐЛ4JռMd7+0a1Hl͂,ǞM LvK]7$9'6R|_ѐh 8k:d!tIDȁ">Gq) qϊ!׀F M%4Sfp4G33S/V+E5aS?mu%c, o7۟N'0\3q֡zijLǟɵyc]ABꟹ@;f_!4u>:6?B5?PD=cإ?m\ax|N8<8>iQ(i 6@0CB}hz < ;C߸YRh%$'̝FhQڈ,""c"x8T 1 t=jW aPt(x$y+t <t$ޜz 8H<{AGrIG* MEAȁPC)K%D}In)h3)IN6)(c:?um=4:, 'jd5LD`0(S "0MKK䘨z^Pt0c&j0 x8 <&9 )T$CRC2/U`QGP p6nLP|4DڇqFtL~$.{Nϛh|o aɱnY`詜r$IwDA/SzDpδ@bTjG Rx8AQ᱌AsFgDUQ6F;/ <}U^?$[&I tycF(~L^:M'c c e1\hO#CQu$HV1~C Eqa+ 1c`t 9#!Q8lon:[h|L}rX޶B!!eެQF~F\D[Ο >W4j((NH H=Ū5V7 xwoIJ2x>͢ ǽy~<y(<9ORlh(€}_UU@UT UTUTUUm?wuU@UT UTUTTO,XbD$i0!d7NvdH0w>CZʱhos = _pמt〧 BI9 p<``"iUUUQ*: |q7qI|~AG< -B`|@. :8:\B8rEXAEGEp(lnTA%WU'u׃>c?FMBx (G7Cm3PΆ0b&:\_ !hm{M]⏀08] E(@^h=O=n|'gϊ)Èr{HCd2}_e:߸0 &z4}sA/Q0ZC F *8`2(i,?c5)?r1Rxрt]N>Swj ANGFRú$&=GiRo%6ZE&hɯQt$3,(GFn #kt<!p%C(wfc:6䨶:KT 4$.cu1Ura#s qÜJ T"v<О: h(i~(({z~,#(q?斿xogf}EQ\ >>~w;E: "Mxq2r`4 g(6(k5yhç_ yt?e' 0ټ2kqG;hvh"|U5V"55f"u9,ꊳN]nP|_; Bgņ;݋1 fCSe3嫦||Ӆ99@t$v#rD<(/@v lҥeU+LH.VK5HPԟf:QGG"(r(uHX H{&V ]0Fe3U!gF^8̀\A9J8NFpٻ*"Cb*"" ""#+|LMâ @DRD40E $19>]STAUMQSx &Jb!CTMLpnR5RA󎘪)(%nrꘪ%o""9 4(^ɡ!d'˗r=͏EHZ ct:!kDu 8/4ePpdeݳFx?)ۃgg/xp?P X$!Sh}QpbhaN&Z@,QS(AFC:z. 1Tc$FQ[0ٵ\N UѦ/z;XFb"G`M|` &" SixeɯQPx7NG'XqGQuzpQv 8<sj9'ew΂u"')P1 THXe?F;t$?֍eGhd 5f8?_'vQd]ptde먣 D(^|ʎ<ŁG(f{GQŠ )ɴAC>DX'u;BJ Ȃ' >G.zGh"M]ƉG\ 7P( e)Ѝ,A3QDH%hLG( _^xO<\(d Kv7X :P um "MQ6TF #F!f""%@#DFW(e"UT4?؟ئx ]aM4~!|aj‡ilB`  sJ*7`D s8%{TܥqjnV7}gqO 5Ls8w)ȕy?!`O@am&N=/[%O~dJ+>Q- RN$A7({;1*RM:Ǔߪ83P3@{.)*Z nN\F1JwOO+aűПQ!҈TSjGav2fJjd;a,'+iěDldXͯDKI EY?@@lmus{7Jn4ADŽ`[|Tѣmkn #/DI'6{e *J=H p'RӏJarGO3L6Z|kٳ-rYlnWI8H H`ɨY$-G/R5>فU=lĮ)r8:6ϯ7C/YE(la4:+:0k\o;lj S%"R( H!<='2,y  ?GÇBvPE|4O T^1F Qénݥ|0((>EݹrS;G*~\ :70gFE8&Sz&pݏdCz9P@Qz!q!lE(Zy#aPSI}riq-*ܟ)BX G 洴G6HD4QJWP20 NGp aE4QEL"!j{zN06tRѲ$AJd{$)?+ {CupxƲ:3 hCic@7'6&L2D$S=Cu0RLIS4HR}M083ߗY@|9,ߋaafF Ke:ѣ{C=&b;K 21 U"'g5urf E`v|{rD_ ם~xB Pq$37[3$0IdpkSX>U?YP^08~/:Eӝc6p=R$ cO_X؅Q͸НP5| { N?^m% $?u?8J㡎yH`Nk?MuLDBC! 0@TEtD -gC4B>h$$,cmấ}$I*4<^E-d:>J`zh =n9T&l'W1((FP=@e`#A*uz#~DHHTDQ2+O0 ɩ۸ 3ظQAޒdY@ @T; OrcM|>7z= _uT읎c A7Lp;~%NN? i1ԯ`Kpp}l܋Cbc3 w0s_v:{WL`!P G̨"aw:<#(C(MIÏ(QܫaEבC!Ρ*mOJGygk !Y7Vr7QX a26C#v {\߁Mݸ9b$(5[|d?6բ i{I ob .?.V32I("0R9x`M0DDTEAKKs<4`hyO/;G81 sӍvu C19= =b ? ;?oYz'A.?)HFOC1(9S7+!Ju {{f",Th)U:+R_!!?\zH>(`0(w_Z=@wGhFPRt[y&+a͠h{zB "\N vzr"r@TyQ  &(9aC`(_c 2KIA~q)I BSSSwoOQDU,$eΥ^{d ?U{)MvLt`bbe"*6H\HTo˹!t{gޔ߷jQvY6r:Jnht@ 爖i*M!'.^P7ZӧhjKMǾ'f~0?U`atXMOOH$Gk|cxc9M))ԚB-/3&28v/7V)i'~\mjqJ(c_*`/ ?v~PĂn;|iQ&< ?TzO@Qq2V>%SwHPb Pxb aG~4pvN=Y銺~r9qv<ʎ6zi*+ႏ 4hg'+@(Bgv9 P7`y?(!GaF{KĀ/$E:j(`H`jԚ'b(yGeQ& ; t|W h8?(t{ nUUUUUUUUUUUUUUUUUUUX&>xm>UBIL /-jUW=wzO]wꪪg;HSꗜj|o0g`=ptAAf`n\ -j&Glq~Iьe^4|akכ0I#(ʈUO (C7M:Ԁޠx>{v(ĻÂ舝 ĝH #RHN+LÏZ&nbiM6C,5 g̰8.:t-d@ ae?Z*$,i!Bm !-ǘVY{{s=MS02m~^8lnّ93J9in74Llq,۲C@P@UPPUPPU@P)0p @ l{^Y2ÿdOV>,\}"Wg$hhL@xF < (ZhΣyI z' XDY/tɗ 2B 7 8Qf#K|x?X6pPE!iBMs&GkN^1v.4 @Q,>ipA*$Qld *2\,Ke~'/į>@OS( I`DC =9^Ew <{Eí@ 8K)_V"*`]s! ȉ-/(Žm˸ *)& ϻ:4fI=8 B vL#ijU&{ݙ kJLA䇐|4xyz!xs/Rd.^ϳk4${1ߖ޴/ Е ͋6KLj1ݝ"&P,j%WZj\}x2 mlaӭȨK/@AWXRQaIߌbBXBrFUnpޅ#bLxf5!X`uɂY064ɏˉ#rHI_мHxQ!=s)Řd&ojtӘ>@z.[FЁ_(ɨJ_5Yt# Di TT%dי{z !ӜKipnpJJ›F_oaߢcץ%5|R6߉*?swΎ9H]fKtԻTXۃm0IHic~m7)gj,cP qfKΤ Nd2`hHMJ uB=p|tk4TI2PDo3aﳋ]j!"b"" 9><T 1p'8'FF=Sꗑ/O NJ*~ $DPT~׭~ A11~ЉDЉ 8 7׷ͨ~o(?(aGl '6V1؛Gn;0?bۑ8(>Cʇ;3;@"⭧t@ P0% !24L=E ;cJ(2hDj0 ەo ɮB 8 _Im k ~d0$y(t?R1B|)j } KZELJ5Q(s({DX^dl߉rL$ΙU=ʪ\mtevNJfTtI_^|q>M ySׯ^]ffe}=!(q{'kFE&#{loX[c̶#h"K[יP}U<wAN∞LPpLp 0țÂ쪨+ {86h10D:wcDx'UiF4r.$\4G`x6R .ۮ euphlFђTUQG#ͻ=P K[{h'R##CZ@'eg5 SFd6t]T% 󍎢$`i/b`4OXb{ÿEb>g8 bJs^bpy`S @ @,HR% ġ2+C ?./lakY^834jr_L}gD^y< 4$$ OF\_Kć216%0?H<^WġThP2+RS3!qCVA(|K66vi*r!{DAmك!e}/rs(#rmhKڪ Ȋ~ (::|5FR{/mrJ`< =h!O?|>`2|ZaBF{v<Il@pB}؆w:gSt<R;q qUUU!~U`vtd.*tA;-Հl̂sy[́hPt7:2޽,OBFsQdO\CF Ļ#o !7ȿG|LFk¶[?F$f >$!ְgP6f_Fua p]{GhatG#=o|a1P~ Q*#8`Qa͈ a@2@l>$~0 (!` $<^㧧ئYi/t+~أGQأG7ӓѬPs/??.E+ q]U 8q>p?!=;*Ksd'؉*8"X-zu:Q9y09~>^ӧaց:Ak/|o O.[tmgqn-Փrr:VP[ R@.W3/?\"ƐS@mMy>&: / vA7PA?cFC#9C&&gXKoguMܼXc"kh>l\?@:n}v2?z+n"K%MNooTXĮIJhX O`hr)3+q\rur n6B_ }jCa`r!,:RB Y# %$jGI=Z ?G÷< ;:S+GCGF݇`1eT#Ιyyd4Hz#8b(v?I$"ޝ/-ī#릓μ >7iDDt`$ K(bM?e'Iކ8BVy?Tf:"&BxS}r[o?|#Zhm9ݐ!ƥԸ0غsGCIdvv]d7zhgPx:dE?"y֚mSޟ7'܀mYOw7o?ynn[1iGtq9nnuZ:m};?ށxb"(*(&(1SEQ4EZ4QEEMU!$ݪd+ftȟgkEU&dH4̅5]K:SlOfc-+ t-]Gm!lDUQE5UEQUTQEE 0`hrQESRHI!$4$쀗Al8IMɉ!mhKӵhp*Pw|WX+GQ p*|4q+Z}Qzi|u#v &&>7<踻oA\244ě=zLc#'Q,byA>xw~o͸TIIO;ga!ˍ#EC ɵ51EmD7ĊHFbOQg͈h53@mA^noÍyrI8NݱC|)F)U:8;\t2is&Ɋ-f2X5Ǣ[E7ѳ)F;3E8Nreȹ+(xGڡ]HܙrsSuuegQNA9L!>1D?3Y,!7^|wwwwwwwwwwwwwwwww~tͯ'(Afa$6G֪[VX*WJj&O'ز,,,6`[%"b;O-)'BjMYȹ{]ܗl((P4aFh,,,5F(P@bL*zE\\5iH@H)6alnnÉQ afj [X7޽G&Nsd$XFэ'x^T#c υzqG"J';H`~=D8{OJ#JaAPQWTAlB1UjU6rI$D?'n*Zdd/(SpuSC!Y7| C_b/{'8y6%~݇_$Pkn|_x4za 9`@? C|2GF@]OΝsJO2dfdOP&aL=`@?߃yUPKЎBwPި) JLS R:@^p+@C/f}bb JvNv?pmꂧMUOLlq@F76:%bSͮ Lzޫ㗎]fetmRvFD:`8LMC9n%+;Ќ/~w֐5vtĴh=!7MQѱr{*MKUK!7/Y"# o4r,`AMOyPP &/{9xmDڰ8P`rtkf$23UASyQq(2k`Ƙ?aNjxr 1gӑʉU-eA9$*,}(unZd̝C/@XlgkMmӦAwωlhc,r/pby(qƬ1 E1$$<.4E/ʁolͭfkB'G⧂|_ӃNT5K#fe%XJ~ޙ&Bv rƻ*8pEQB=ğ(/ZX V !#q}fUW͐r '5PL%=v&S._}p94z(FخݫLu*g&s:Dn S6 &**(/DD]h!<&hb%U>E3Ј <`C ݓPTfό`҂)u vA<|<y!1Ѝe@ 6x]p=$8Gڻ lh_|OwdQ$d3M4D#1 >yx!`M LixLV511<ǀtv=bjCUa CVT<:XC8|rk6NفQ3kkq2,=*W#?cx"{> rOK] `0ap[&dl4U[]KAD3m}9qӓG~"kZű]e>Cy6r1p~ZFN.BN];IOl,aDpukE1b8+Џd ʪx" %S!!8ύãű틶c`mx< 6P?n0d@ rfNɉ&ǔ1CADd)9! s^{T~֪jQ@$de55;B3E Y<#,0DX<(w02Q3DHBb~ï ʪ`AGFPjrzR%Xv~8tWLj`E|.$pmÄ~B "!2H9{{T]]<,G`<fu ߍp"X!u6ĭ33&P$=H˨ROa;>+pc{3Bv S s ankar#^5n, ; mጅy s-Ha^'6RTQ“i{|< }$ 2Y[Y3:I6\ni4 *!oA: Hd BC2铵BohB!Ɍ9J eXgtBp ptIH&A{ѨJBBfFP hT&@QB`Z PRT`VH (HEYddRw=Z'5zM:yz@Ac9OH i!)ʨNybgf& yHj)H92'}%}KR31XI͔1fmscyo  0 懃-t.x*qj\\΍5[ AmFBEbIRҘĨ- Q+* 0"B9"`%qX@F/ؖP{XЎDT(p%{Ƀɴ^ʁIfDr#ɽs<=ut0(d!!;y9ƛg)KAG J^hd[hFƙ>?b?^<A$2HCMܠ샼 8SP-vNlW (dHw h2˨ -:G)<4u' :)&B&Vdzτ?N|LPPBSL*B*RH ;9 $YA a!}OI%O!@pz MiL# b!v%$1 PR3TQ PDPJԱTP2b4T. bGb%wXeوPaQ#OK>! 4o6YH|oۭ9/!!P=q:-G`qQ^D1DxvC@O^|&=w$B$OwAUwBZ8OC4ҥ By9}p*҈ 6YA:mQ/ 8^H)"f`iaIS<7~I@H 2d$C̅6|_y/SR/+?䋱Dy{HAS|NRP|  sLnPW֔:DCg_$0_Qǥ* "BP~?NĨ|$يlPi LtbJ<$fؘM!!M1'V8 L)dTޔ#F9i+TЮ p 0wx#60I l4.i90E% D*¤KD$)@KLwa2n=]c05f[!Qi eP2|kw  },7 >H/26) dؑ2aQخSw)7y1OLޭG3KJONOP'U"c(˻C0M;0SF[Q[=DgM~R>C`~Д Yi/c;DHY'Q>N$T(j bٿ!Z!C1JC $# ha&)h&Qp! z*_G~zsբ$ey؅8R;:6BR~݄Ə8$'|;tDvpt{NCTpceCȑڌC6LUݡ;7.$"pK:x`i`: p827J@sH :GͦCt͆<ͤVc-S vTq%`K7x ko$[\& nO=p041uEps%2*DJWwj6OGhM$0`̃Q 2 RL0&Z604GL 4P% dCĂ7J(xzuM\,܁ThAU6بdu\AD rmH[m"7ou;N%)D UAܵ-k4=ꚠnXRžJ ax]HSS Tz,΅" a ̠7XEs'w'\$'TP{dh/aJɔi/{dLY z+C#l*>8IʮBR"Ei Wmq bWzCBpP",U KHOޯ-{c77mu{QhDx:XS]b僨_FIu6= MD= tqDɎǦ!p|j1ï"Y` Ì;{<..d5` 0e|-TT(w;w }B ^O#c@y34b' sCi#`Ch؁>:B$ʻξ4y7QҎN J BLOAWGӕ,ɓ^ 'O9&a1#LGy lN1HDbD $֝8"( ւ:pJPiRP P|F?L(4; (LK.F0G BA%e~*$Q܏.HdsrS]q,xw!O8dBqK Shp>Fcԗ-~ʢ H~  !=?0(RV{dN0fO@08f$?l)~cN9w~JE:C|uRzn.uJZoJKT~.H (1^~ wƇYLCM1\X;(>~D8%F IiwF'҆=|$IFkw:Β(W9Gb}tm($~0 Ct*ۃ>iC Q !28} !T /ip!a60 sp?U!IЋ9ˀ^Ɉv4JphJBO]Dw0@?Mxc(*ƴ9bc~&/yo-޹n"pe#+deO [e-M0+IJJF_+Eҁr^0Bhh">!SmH ʹ`}.HQܢtW A? K\ّɡpxQb#<4SIbjRsFia$4h`\nq"ߪ! ]ץ 0%!z0Xv50U}#wÐ]ETa TDLR!rD "& .$=~pQ9XGGpi (bF*#EBAB E C9ٌlhSG1c0kAv8;?$_Bu;|E#xLp莮x )$0^7|&L |@ 4мIp!*\P)I!`O*ྫྷ(3BG."YCMdm@~P<5VXysHd{P%܇é2FᙎT%Q;'٢(Ɋp&L3PRCR>. >HOBeѬ#LM>oo&v!8J"v荲X[ ׽/e(gPA5lQZp79? ṱhCh,m0uBjIŲ |8M/]M}FHO7yV)ぃDXfj!QU m8 $}s"ޏtR ()<}cUDm}uTa\f=5I{9TJW Mc>> =;+mSI)C|ë(,2_xhD TbBY :](?V:$JDt/Ð /!)3\)Sz%ؗ1{ !C"8)Ã\*Recd:Ju<:n$KE?1KmGn5u3?P9x1= E"L j U::v4R I b:CSF!@ 9U=iTʉB4w H^B  5\-.1P%%NA$#(re$A,PLAD!䚦akz2 ,@D @*8/HA49H~Z7_(gW y"Dڤ7C@0|S-9ӿ|E.f5fFVt֊")/Gyȋ̕jȑRم9g6#beԵ*"KN6S3ǷTٻFA$52FԻy­O/0m G㩠LP'D͙kziX0k,-,#BAU)ƞ=".1D4X6-cL-%qeIIm5L]ȆA JP(q$b1=T)FLȎsHAY3(1qp-@F "E0; ̊:Mi/Fz:Y"- ,-( 0B@ZJ d@]z0I@44$ׂ}vgSsaQC l= \x[3 Gc Pi4*p ǹp< $뼈iLC,x3e`,e B7!;$(T7N]B{D3snF}XFuZn+) kUA$tuٛy ):d4 lv'1í2) nK·z* c[ 11+:>xYk|N6bh h@ri(NRqǓ=JErbR W|} 6]6I h>I^""c QJ|AFQ T%AʓѢƍ4y*\zxC4laZT6A۱BiP_ /ϲ L {ۍ 6  @6)3CӰ޸u\C^X_&Os'4E U54L9I1 L yȏp>*,^죅BA2Bv%8'\rnM7=< 줐10f /r```//a0f c^< Si)IB'$9: ìGk! y2H;$8LA (ʝc*A1*K0{ڻC p (I(l&% ]E,KiM-Bqj`;?MR!i_z4&b /ҀL2% DH.>H; H)cD1ڑ_ ;%l~ 3S u`^:u_RyژpƴR$"z oyUPE&f+цÄj>ǃtRXŸ$0ge{71pJh\&a}tzNnj"8>@$>Ge!eBΖTXCL40BzhPӆڃB9>M";)UaCY:4KIr.=4T n,a6ӄaZѡ5uOH}C7>8^?T0:,HXğ9 KNW >,0@q`CQa]&# j1JVaUad`<*e?} _\z[;\$owL$Ȳ?FMwzf jC~$QeKqPȐ" MM(kl<8+DX>܉oHx2" JL)؁A)`eiHAQ!b|ɏ(F+ YU:2 B!QQt7̛n9ᡄ w]5! MQd8|( #l6k)5QۗW萭I8[eT.̮ׄ;rz'ܚ=czO kji n`?g\z\zXls[mc{oO@:tnEYHd(8~rƎS̠h$bni'N9$8<8Is(tԚvsê,dB#('O t6,8g N?i}4hgbldg3$$ƏfmGpP`İ z0:05.pFG[Z=B3M{$#ƠguH}y ;I.OjbDƽK${|\gP4l؅vwytWz.Stڒ*h,\{RsKǓ|ﭫk嘓/#ޢ/-$Xz )0(YG19lWc(23R 3/ܧ;gt ׸C3&n&|>zG{P8C; `2RhZҲjcCF1΁Z:c)#$}eGMTX1He#PiFV#({ K &wLU+Ց 靸7ر1^ms]M|Q 7Kb9"hJvX^Jt\ͯ@&׎<Cg^羧&]VyH_:6(ej[v*pzRrѵgh|u{"$6"xROCgm߲6ΖWCCF^ʳUG=x:\؆Rиf_! F<_Ml1 spNՁF1p2UkGZ}m|{<* CJufܯp&5`@i0Wۖ\k2Ycm!߈E*T] r rԹ!R%6 TƊh\t+)Ϧh;wbzoi owaM6_rV!i[e=8%ВgaǞGO$m>h4)WyL^8F+9G;rQ!,o h= Jnp^>#ɶ%!CskN/OUSǛ),#U_+C|u R4x 7Z;4۾!6gM^KKZI"=z!<4Er^w;#iŦ%~^u{!==2]j1Pgk7x*j o˅!0]m-e3v'ϾíH D}뼴:_|Q zvCfЮ-(c&j -4:W0GQ(107C [^Axxxy<80%o^R頶@L.'2AqZk\0HR8j]K<笙 Зxx5[&+Keb<+Ag@KƶJ;56ڣAVxw]_`2Y]zGGR4$dۇ!auU&h !Zҡ%fK0<щyԄ Zí9,v gyGV8{ECM1 Ĕ]oykh3p3<'i0yz\=<זP~E.ߘ{=E8f\snwM7fa EH9nsB:.$T&NᎨZ.E\rewtLg2t^s,4X ~T/<]"Cbir]sa,|@*CvzVp-@Zȴu}xlMm mzUn`UڷkK8ow;-RT^[]YՇ[B4^@Îrjuϔ]3,VF9;h8"^${;ʭ[㾴t]vp,w2$b|M滔-΅Kwrh{ڿ6zȼ# ] ")%uA~l7twmzîCF#'tK. Bע95 Pמ[ uϓ˅NiShFPX{Cz.=lՀ-E#Tc \Ѯ^wV͛t瓈ʚm !EwDTSkG qt+Zv6HL⪑5E2s4 ԈSrrnM**_"imd>Bq#1UB3zAjT>kH:/&)Y"vVֳKj7t}gZYVC&<ۤ+㽎a pFrufVRRGC:wmoSs G\5,^f_N晫t)-7;7oo;2zhF2XƱIUUDI6 ԧve֨/D ]C3U^8ƴuֵַm}:m̪{[5twAC\";m[p>hk()HJ46( IȒ d jF k6SPC(¥7ʰ_):z_a7k3X Np _2* @ 5HJ&#شxHpo)h^JQ%"м!rh,\{F HldWp5 Vk۱ļkc`47x;h\9@0\+}1! px]ɔ]yxg]Iyb#iP;lF  )Y%V 8Lz5Cf ) lpI !_oXg<+Z9{|C#EH 򄏏<#Tt*üdS!~8eadtrʰQȎ0֍$& ec12Tu_pUd9x(S_wmX%H *tuDNG8:v[tc"p5o& -ܹ'%d .\ *@7CSV$$ P?H8&twYnaVv#I 1y9~[־%ѝj8~6.(Mu 0;lXR8ބ@~*eFh P"YLJr#[e۾y;S|bLUeKY/vGA}[qpG=W}\dV==ٳظ6=͔A LB9'd:EzVe6NckˤjLXуAEM!ԖXozJ'ݭ 뎆aKKe8RPp_g_ zf'cW;ΧOBQ:tpwp4Ah'j'0HW鈌MvM rffwȶ[I֗'p5@#?\O3š[gZRN:d#{y.zϏ x5-QcPjcm`I6ӺӁuT_8SP*ۋM>:KK :o|5a64ae͇7^v' "CTʽ}jXbWvgO;+ns9׶|sO6üQU{5[JK;cw{cWqƎ>>];q̹QIq Ə HASP3W@[^L"Id W<.!t#^ލ%eAh\TV$Ǿ9 Q} )-=A.v[rED p**K`PL %auo3.`CDJHʬ+6P<4 p-B"R֗TBQ}˩0ŠAg"k8r߽Di贡/MGb5Sل hRK  q8,,hxvyhz R$ BQ RHFSy ;CEJj#idI@'LCCԐODʕC){bHe y#}]S\GR2nP)izo[TAF[N/osu9#GQ5_A ߼>/Gy 6,&0P$'Wvb4Ga3+E5{ O@1€!d`)LvTK`ڦJXv 9 $P4FB@$l&$b L@h| 9ZͭE}r__mMB#1~.f {IvK&ލ3S+c$fQM10քe#Rl|W>MZU1/(꒤1 G(i;W Y0\ɅoRY7lm@r" *ѭE*a!#9ٌ/ť *;<`7ȰK;+fz1sBh!SrM/l |ܓ)p% H_xƄ4g ]H2+rm|1&<p߇dgq)eeOA JIJA*@PQ*T aO&=`"X+C;`)˯*(R4=a(h8Yƒ J'R!k$ $Jc+3؊U¿@,Ģ%!"/H ^I:9E I"&5^ɆTW0T4?18!X|{/_,ߢ/P:]@a~~/%GPU#R(f?#v^5?HyJeDCJZR[yCθ6-Ɖ.c]YϽSHLJP(}*X a(jd"C@A4TK5C$Iy?'2x"fXdHcNl:P[v7 ڋ*Nn|J)m;f63 k)7<|gn^`)zB8&:DR& ZN!  ̠aGqd9A:ۺ֌*PP4dzPB i$R*aH$b  IjaSbi'q8Wyv o&` ♒&AB& $" >S*Э#0DUD4Q R LD-21>ʬT%X3$R5Ba"M*DQ 3SH3CyLHQ 4Mh*Bi!Z(xHt!9#i )z1 *I&8D U4CQ% 2U&UȄ1D$bBfHepiP H )AjEI G$*JG " `"rJPCll$xdn2t &I_p֫h lj4a#0o4e7b` *_38$}z~)"Xe7fzh۝nl2( ()}Lт+*șAtGl7 $xC$䂨e~\/b&7e~&MKIi5g͎7RժX h0XR h`NƉ"E;CIE)Nq0f;e<$F;)#'Yf( Ǵcq(O5i8JPwq|\K]Zmj:7d]/GqIi3Ątfa?fBI&R*(i@> 2ZbiFG0#On#'w}"~UR;GO9$)Y!8y;k㔥)mͨ}HpT$2mӰdAT2PR :'.lPRQ#UPo<>z¥`<:Mll^eaA SxJrND$i bUd7dL"S$0D{p'rju0QR %Qؓ[l?w)S;?.7ppr3̴ϛcM;܄10x y A׵CD<0F!Z 77!  %DEĈS@1 vC$R^Ht% H~BOU'0Yq#I$*d"^:X7@{UP@Fm{ >`8FQK LOkpeyy?HAݓ+buc`D#eQEMTJ&8F:#C\pA P@Hg2X14Tah@{YOt蔠ܨ`B{QSd猲L'tSaG1#;PP%A^* @ !#="f` %LLT B^a0 A %zPP|Vz^#C@h m{TŐ:j).,!"(CDX*P(idb@H2$mU NՌb؈OB[2CQ!bC)N~8"(&L>ݚrRH0FgIwT>>[B U)R\3pV T$n@!@H !!.xJI<mU`>3AeO)ÒkN{1L0A|3NDϞ@#)h &1&ӡ4F0HMA!bҸaP@!dS>@ǧt䁄b a,Āݱ#/%_zԦt0@By@X`soMJ.>P)2$ B.:)⺡k`ptb"y ;J{5D9XG$"R :;|$=ƱI#$ sd!U&F?4AD5UIPQa@ 0CX"%b*b()] =A0u"P)HDGa|U( 8`;y8"𐡡ZPi) aR0IHă2 )54@A"SMKB IJ R#TSD@R  B HPI %RIBEK!JD-% !- ĐQME)MR TЭQDA* Q2DiQ#LCĴU$)BM-P4JRĩE, +5JD+@!H#2SA@DBD4%-AT%)0TU+H)Д~/p <*JabBd!騪ASr\'RH_!߼䃒E|>~?FWLQ"VL~ UXщMjGjTe>@J7`Q=Oc#^ pr4OPMJBY(h Qm? s-2U8ˈ=J2Ȇ:, %-j$)ibb`J)i"H6"($"D $e$a( çc2$w%B]@rp*ׄ6nd2WBIpanJ JR}(3Ԇ}{RQdB!a Z%H:R@`FRb` *"iv(*}!ъsCW /n cic|5|yҠO6mMIw!?}\O>cQ;:M^C%.Ѐ| `pcCS9%6 dQ@JB Q@Lzpbz{(!!߃4}DE4Ǩ"t`aE:r:i(N.?WI& Cѓ242t5}8aNFںr,dffX%m$9~Ͳ53'!΋a,"/0zʃ?"FJhMVg'4EPPC D1P\ni=d QnZhf|qCԂDBB 8c P?Xͤym V:D #+MSTH,\U3XLBiuL)6P d1) Eµ׆Pjwq!̎On@tDWiղ`@B$ܨ?v= PcE4#`ߵ珘U"~(~'BcBB1=Q ~N]ܚ8!@OX |_Y'wp-P9~.S%`TP|ClEKЕ%BHBB.V *MDZ)@팉Л 2 Y%hA(D>)!FuRP79!JW@3Pd*ĎW|A sp z))`F ʈ۷>!yPuY;(F@ȷ¼璂4y ؏x) 2hH*MOޙP7!1 40.IM@@L1 JDd٣"( A LFW@ O?8(L~PFjЎ$JP]p`ߣAy| |Fw8>5Rsݻb_r1 !5ҤTHL m@d /Wb|`O#bTq3CR$"dGiFBS9D.\o68&ˬwpcm!ӗ+%( \p>:CA0/Yێ ?0?j9#q'/\ 18J"Q;8&a-I<44iiaAfQ IO!YN VIFPXxXɪ- Fl >DA0+ьYX>4~܇@մ< RDD3%4R$*ҩDBP4АT14"DD QRC(I"1S,@LP2 P KT$ "H*@DL4ЪLSR$ (sĢ PP 4KTG%FCBya'? \IybG`?t0E@SCC4%9 K1 |úx‚9I!eBVUa4!)t$~ " %%u]ș&R H$Rr$P8(*ad` $hbB``@HaR I"P#APF6Af!'4y 1@؂Ehi!)fP*` ڏǴ yI>Dz. Qؒ 1f r6 $"RjP$! (ݡCA`a.PU1G(s>oM^5E:/f PR~#)JGg(*M1h a4:@!WbC!,AP6BvzC;3yl:nGi(:PN^0 g9 # $<p}lz2$\L4׽EuڬEC\#j؀tD GP.t7&fPdLc?4xx_t'ٌ}.ECD$53Yq*<u<}\ƍ4j/9iLD,0=@,xIx rwʑt؊LEN 0.8\7DME]u0CmSmI.*ȭUI;/}p=!C%AT| <ʎ}쏦29NMĤr۰/0 Cy#GĈ< B!2q#T( lbHPXD>ycr, (: :/A=8  ӌ4`#W`C%F Z3F Ez,;\G`jb4-PGAԨ cwieif0Bh?[M8q-к5D~xNߏg8'Jt%u!ʚH"&QH#iP=SII'l@@#s=xRӔyt'7Э(&05F) P¼Q+fXY6^Jwo0o@n14Ti жn7P3$Ä3sD_ٍ i*K׆Μe nXq O@"GS5$A# %{  [x֪Pp v4Y60, /uɠqT)! !qH0Sy]댑7 *" Qf QD=bɈ `cf)ƠAXUipcs_hsȹzJ\mauHs RJS݃ў *у@7PA/!K& XWTUʎ6Ć'E^欠t/v"x07~oSxyY=PI$ nV ]BGrpS2W.U;0˵&MqÍ&pKX*;oq"n` QMw4ˈl%2hyL4SUNEGY:hHo 55뱺d*GTB YtE 1ZPU[ԉHtKP5D3t] *O~ `cuK}wp x&S=قi4e* TfDm e戊eދVwNCԇI޷zwuU..{n&(##$F0sq ᡩvE:7H#AmtDZ\<2 8>&:CڙY90="`^9 Yg8w?Ēx`W,NH49~'' c#&LU2y!Ē2%),хRe r"S ,]-Bo4BJT`i.?t+UQPLưDn zJ/>JyNJMPP@ Tp`$N*obQ @%'` UP;'X)HPPYOSz( >yHRTvl|Ϙ8g \6c忼&=ҥIVX{%lDd #FYFiCU9e uN*?ZY%ᬻqeR\@:p!|M!ɪA$+p7PKHS& gSRa(g9 y1$E)ݓ;¿v8}W/'XfNګ,n-&Kg\GMݑ,gK1OWTCzXcrpWldg<] dM32@({w<,0'yr'h{W |C!®}"b|P Gŗ"rcH] >`LJق;fQk3Jx'4鬸2*=nC ;~ :9 '$9BOO )A"H $">adqDt@ֱQiDLFY 5&ъ\23(!r>vN4j j* 0ðXh diR$3 A@@@A/N"!i!RCq#ҙ`P:si\OEtiwfzJğÿ!b0A\Ky!ԳqXOD }ZBkEKX(`׿\$H/J_=ҧ$q}';Ac=ގCt !6L*6tzSUێ~E`0nHkȂD@qDE|/=4B=Qe$G—0 ?22ȧ;w{e)(H &"Q"%bfB$ e%La{ԧz4aKLm}q{^Wf;$he\[*ި4k!M !s㮱x "==w7QE+LRhl9Ɂ-F5U@g %qp4) ԺtD"CR6OYM[_y.Lg!g lExy=kFV  TD`uWcLN h|N*ػv]nա40,2thR0j4U}G=. J<$'<8-4>H85PlcliiyTԽQCP{Hx5ֹ(1KD!MV XWAl3M`CRBj2< -M30e1Qc ­1/0)1 ktA5)I 2DgH *Qq Hrb`ġs 7Lq-*-֋ hizN~3ƒc;eFCkt ?a?'#AR`$0r~CI@6۹ BbXa S :v 4<{"_zqcV lf1 x4mÒ*! \hڤ#N~DjRSG@E XeҲs-oab >!8@8LH' kiamʹA%1FHqr` "+l +cz4t 򒩒=aҸ;$- Xq#"N[D4sޅL84&"JЃYMC$<*j$O8F5<3TZO_%}nۻc+81&EӄH "(@' C2BKR/~˱qFK:kF?b_-g˷?`SARDk壮;EL^ 45D`Zj%BG4TG3vX]%ϨO.-7)]hb8lV?tJ;$ԋ"J@'1hHfaeʫoŋG,KYӳUyQ2UbbB#oPD"6(4%nݣ`mxyAbfOu II{\zXA9d㖲$2ļ@DB4D*HZAذTS :l&5fXm$lÄ́%P@+ M A 44K)BPRKTt&R j h 2F8"BH0h&8XVh&!++4+Asa;(*ݺ4A0vzd $"h!b.  $:\HIa ^٥z)Sq3.C RE!Z6CFlrnx3X G&6B%JQu`G %"f X`d$eSZ]0 ,BD1*PD) 044D@H(H@ 4LPWI@e6B8|> 'X㨊#P4\杜`<1^SŔUH|hd̋ʊI*` .GIǧj7Ѝ( PƏ}*}HQ, T"T) N4 r2T215a>D&dPO?i+IIgesփ܏ !S2CsЛj 6vFlIQJx`J=cۡ*0*jG.@I2THD%,@h:>0'A񉕃W`@~< dP/>00zO">!QEUC- ZvVSY~\ 2Rb txR 6$g=8 ŎQh:.h<1!>҇0W><+$ *D2B4(B$#Q9G0ILx|{I(gAДSYܩN@z(lḌJ$B!$"PK" D244A]{xl߮y-aedKZk8!R C$,Z! ) x`$ c]e:B) b餔%JI^B e!,X 8p3z$%RU}!Xa8Iab lPI &-[$GvqN<<D:Mk̛$C L`#"+L B)4C)VR!:qmPA\ ʏ$,I I< BdG 4 8!i|Tp* TPuG@'EHN%z%  @,nPx%'`wLsB)C 2$A@=p%MQDlfQ嬵AJaʒ=P<#4nڐG3dVu݄_?y2=.6C@c=?ѱ9^ xh%)  $&<L萡,@HBC ʦC@M)*J_"~2 ~x|PBMWeNA&f%!oNNeX !}Nc&Y&C@@O2ү ︙B7"ǨQ8Lt]k'4ĭ"AwB2?' 3*:6A g M `"n )Oh]yZ(D-a(b|ؿJ%RZ`~uKb:iq:;S0^RH;[_0M2e:^o;zQFpLLjОo5C=$N~Z CZ7|8`"TT#%ul&>E$*豠W+x C5i4B낁"r @؊stܻ"cA)nLL jn"_3 8TG@.IjPrc&Xr'"zra<LjEmFbټA)@L $sWF=xz6'M!1bj ]+d&xq>"$PMAqqrL"pb$% s@UPhS]4w$A}0ОhQT ?P!p8J\'&ή 4]JD `&)b`4_@BȔ40@1KвP>#~B%CQ T"`)7P A)~[g!38o9;( F tt>O :0 L tlQ0"1IDQc\'QjLC8##-*ST*Є̴C(˚a*Q+l0=wTY#K. KǎGِD}"}ZEV}`"{ObG.RBxdWDO- {`)) n]0J?l~d\ bPhizfQVi<HyHI,QD Dx61$қ 2<zIFQ<՜ DN%4*BĉM\vWA W(b.J.0P ^~e*Sw<5z 3Y`:W F4fء%rҎ<$^h0<􀔊 !*#Њ.;C* $H1 LD TT$PW(2.H  $Hf " ( `.LA ="Vȡ! dRUHTԏiǓ124ڟNp@~CA*"0@@BNr=}E)bJe0\˦ON {pfc-/q 8vBD݄x_ 2 Nn+rs.zg\ @fh& %k~r]v.<}{bUHG8Q2RȋWܰo}^_O<: Le"q *04%!S⠣ M`w(#mK\VS"#!# @z15&CX<_R+G9I S@D8z?);?64>ҟI6r 8Uv6{B{S($?ސ?ɂ|OnA ځ,1soڀe`@T7G>2geoaÒ#^CNOhU4I}#PNI 4_wೄ[GΐOR M~~զ~\LܢsGSqAiUh0`P|{fi3,0 6)nEFO _ȒB$ dJh&V%Ss}EDPI,TCpZPw%zD|X5;UDA?kkTB1XATX @=H6 Y-`ubwVc9?d R2I@I08 (gX(5LcB2(xM ` }Oi(;w.$?*g$%QG3 !B<c{NIJXi˄ޡq'^ckh0tS.V"z-J&$`4RQ WgXLAL ٝ?ʞ\ʞR!ԁpyGH@Xp?H?`Q(lu9a@jL!'MbkmT[ڊۍ;20(Q!԰")ٜshSbu48CB^ 44d b^MB;[{LPĐ3!YL%%4`2IL0II\D1u<:iPPP_Pd=Ah  8 h _!s B/cǓ!!#bQ1Dۀ(;xNJaHFAeȀLT3W&Q1ȊI#G!yM|"umID3#$ck׆ݱ!TSb<ӿqv%IHSGlIhITr3Xh Uje!]d˒SY3 ͢].nK j6zGLEr*v& CB <%SDUhEFX>=.pxmvxE !Fi:(f ꈧX)WiTMD8BHWiiNWUVVU|:a~Ѵ 4*À:V14hWК#Ћqd4tz|7 P7U+/J@vsƢ`œZLaa`$ i\WDyEM: Ԩ(hK*]ݲ6c1NEia \2)Sݬe j8*]/2KTjje Pt8V F(@S=T30J跽n<ڪcJ H,@*0! "PdAË%+ծw5/1Gh=?QHIIOdWA")=cIS@M" `ՂJU݈8تap]]@̍0Kz7d墋`xՅ?G WSB EB#QRccU4 h* {7H $v 4{g}1;m2HF #`6PPhv\Hv;8N!&>\tƩPx6jrbbPl!0yv2k.&cǫ<<=u{nn'Gxx8E "ME/ N<@EMu h 7m>2hζBj7ADEa82Is/$ yG U@q I:rwרQU R .THd7KQyO[S;>q{CsdVf0!RAG &&97!~ uu$ QTRBv0Co2Bb eRa<9s6Ĵ IJDQ ,H $DQZySπ9z@p:._'SCUKV(R%`I f"i F" 6H`d&B!.#1HAG* ?R@cl ט>]q .;Aҏs p)G$20rnIՠaF%M M>y퓣=%k>`EvTc [qbfeH].݃z*5-80`,ҋ (X *xAY ,!òㅙSp* GMI.`1.6Typ pVP2*r 3"=y^(pP1 2R9`` r``vL,$D,{8|K0z1K'$#H& $'H&SvC'QULDHbGMw$CPC,>`9aSz!" S!nPcjțʎ.B*-RӼ=:m?L{l9e;4r~̉8 M1&wM`/kray?A`=\ R08`:XԲ F;b S -,ea1 BRp HE͉¢z_>l$= 5h`?aDZhD$l8je;dmhB霅-%A @PQp9()$ZJJ$"uOKJB>$KT,M BL$I$4ќ4@TR~|Æg~cz~)UvX ªcjmƃ?eSCZPg32`vWB9BaW$8و$X$ E(IBT" x=%thQ_>Ll7 LA|TzEܯXo{oH@5<#CrJ?zpUdb$: B"T@udSui%$VZB&@A"dZRid`Dևd:琘øqAhAS08*qUT`c |rp%E>rҫb)!}!ar($!%QbҠz:)hHhQInvi%EWbJ @H҆JfGTʝ!H  tXTdbay!HH^80B :SQGpp:Q=4F7 BBI@L JJ!|AhG;GDpr"r$ "*jD`׈nO<{Đ G?%)HCU|. . &tf@"*X Y$+LD:: Nos2uQRI^v:mtkI)D1{l*NsD.Ht-R/AE!.T@KJƬ!c i"v4LQRFW PmQH!h?M4P)Sĉ2RH"{/! tb*Q.8J0A1d"i"".TتABM@C5M$T 1HC, -3D,TJ2!A/~D3HD)@ɁLFw@C%S Ȅ"l˴s1 *1 Vs˚- d^yK;]B#ј43TD$<-QF 5 RKg 's+On0ҹm6];OxswQYW-H$U^hdhƎzd᮹PIvP,+_NCE..{H۽g g'h|hVEFΦ.r%JIATmv?NùZD>?ψX3\T#Fy${s Kg2ݕi(<92CAhO/^;C=R`F6 K8y_8CU ^[YLG5T^OL8f?8Ena~i:hD)IWؒ:am- `ORDy>qP>MPkL/2 K@xcͳulY4g}a.e*MP41g,#E#PdAv⋣lCR-֞gVTQT3!ʵ(2uelLnYZ`j݆ultWp9{i3ݫxQ@d@Mi'e[6yCӅQ2/WDնn“ K!vM+L.NVDKAi\ĥ(}n!ꦮQ5$(\ i$*tM1Q b0C ҇ &Tϴ1ԁyF'ܼBhvayGLm+,9 ܭfIBy6(W+p(6eMe >i+F5o mxtzk15 Td]|{Lm" eBHHG:zqȩgf a7%qvgzR"1TV>T*V7n@Ǣ*m:Dcg& X}VwBGukͱb\Y+E}"_Fx_ҕI |Px3W _% rqZeZ=X=^}^Y2"nL%O'Ҫ[|aE)S`h{{WvM}T =U4qTʦO21>.ޯuyq_`Vc y A凶ɐHO炸ͣS{gC;͞v/[6Xΰ8E$yccZJp`ŌQ&D51=1XkbԠcȫm8$-bBc2ilS,duǃHgt\H RQ.@WK0ukwepe啞'>¼*jm_Az[ynM[RjY-Xn(x {'C"\L-x##b62[&^}x$-" ikg>MjtTKqvVrY՗i| 3՝{tdQ0]FI#)8h7c8!J{G |>F`"_dInЀm mJç~#9CFYzh>p5'Y:m4/\ߎyKm(\P{<{qKљ>QF˱v0*jWl:ktX25GC+Rnr!]q}f f\r)] mX}C žw8HH,f/Nr.CkmNywSm Q4kGퟁj/*% ziD|U]jVF/A3|viCc֢TçDz3Mmj!Lgx.W۪!#Dj5M(ZDjE+6skraqK`Qoi_d=l!N+=6hk:6(}}i2Lպ%Hx oqG?e2uغh^;V# ˳|=pnػ"zZyG>4NNa-bE0wPX6.Fɱ83|qExן<jnsm/ 0{kuma^I1AKA IoN׵kVk_FȼbYϙ,[ի qk.}ag{>s 7K4#Js{7Z)JSI(kG\f~5Mp4b{Z_ mq`. ȝsh&N|L|W (ze-mB2>93]ꜯa{96]GecL`lV+ vg3xFИ YZ7X#a,Uh> e(˵E^pT:@i_1&س sfg9F >fB$;c,~ e9Le3BqG%(J(2y뻗)󽢃>A~kﭿc:~Oom֫b"k4fSچizDi1oBevbLJC;{ Ck!Cvh>߱!EC`1Qk۫B U"Vp#%cIO(kಖ@#IgB Ę=L;>/SL%%Z0n&+4D4P.H%ItWKgv/m2/ZړGmrCM^;/ix(<-0"i bE/4bhܞ61Lp>"N_ Kѫ>ׂْM1109#RJm֥e̗ @ҁBA оi$b LBO0pC`Bd6 GQ;^KG9:C҇8"}c͜)UAb2N`TLCZ PR ̈́ž>/wJCh}|q`d.Wvfn!<㴝"8 6m{x"4`RFk\{: OrbO^͇߀/%(Fp;񾍰w<<բkpQJ(VD"es D^ LoOfY! G4hѫylPw|TNrdLJh_GAAyy4d*&B&)PXAbrb0NVnTɢcFq']̤NEǑ4!AH( "{~`#/¼3 aPA|рqy@ZB`B<*O,v߼L;DRl0괧3Ov'6R%I!>b)qªQB0ԛpjyVb#N0N`Eq8?jq`*`$Sbu3D{+\^/ 6[Z flL.ϊ>fE"8bC'> RAL* eQUC lq sGJĘY]k]_*g "q**˜J󓨀~>㔅/GY"Rح@`?f E>t1]:6d<#I|,doUE66"EDwc &*{O}Aʄ ,JFS*~U!C JW_'2^q>8@9Ma)5MOC$(# Ҧ$/ltA=bi0fC,$Wn0xG pWN#/, eՅWfoR'z;Թۤ)i ནkM"LFH@ddFuܑ{eޜ|$WAl,.0Α42J;j<} %xʇw=@ѭ"'BPi#bm*Mi(Jb)*#Z!hRiP R"JdM"5@!h(R((/p R.pC800i(PCi<ÔUhQ@ U^.B >>g 6ƃMB T⽎!dĎX!@ّT&NUٕ$BQa {z&D@zRӔad0ãSW%#*5%$CSe*O"F|QG<]|Rd0RLL$[h  h jf{E5%oz/p@+JApCBP4@H Б)LB#RVpKNeqpf_ma{bq D8/Cǭ1#8ƄF8DDTQxh,ln4t)0J8D##N $'qx{\BojSHDu7W7_2$Z=phG)ldykWJ6!"q8!:6 CfN/l|4P[7 ֋[sM,ۤhe;ÞP:렴[IFk+&p!l> 5EѺKޒ(hdmWAh d86yz0S{B %ewgn3 n#zT4p† tN,Z)׊)yXǚAO&p݉aƴe&"ZxxVļy'5 }j[;t98~ F*Hz=(0|͆4tǏAG nO8|!6;!J\$-\64p4ʨpڏ+l4fA: Mb\Bŧ- w#nR$Tl!vŠچU6=1mb5Qp9&8Ѻ{ݮSn#RgwR` l]Ql&:"Ex9ru^OvybﴺaJ+)O ࣓86vFK{yl3~!YvpTEL窎Ρ; E{>thnpIC%Xˀ:=GqA6 CQthev*qƉksUE&iaA:erhzL1fXVy>`g-6mc9b*Z)el0$r%3f4Ó9ḽMv,y=-jSmW#̣#0;on &VYj۴&+">l3k;E9Vw6Rp񥮵&x|CcxhX+N|R2sxI ğ Ҋ gf,LbcNɦcmoDRumNo„4HsAPl$Su*v5hha\`1P[` g#&G;RY) Eţ*Ze1mWOBQc"X ْ.;o9Tfb3Zڄf-> m6kw) .VZAe٨`4bc9f cl{% DJ< 5gN 'a.f*z{wJա(l{"ʦlzŭI <qO42<6J֒3kf Cڧof`^syRMp=ll*)G/zpqDɔ[+9Ӗ9 Vhxmq@rV3Pk>9(lCQ@!fup3 Ur .su&-U!UDw^1CLD`Lg/nkW i\V^n|8Qu",w 8v48+TTs>(Mf+iҔ0ZsG#Lm(5sΆ R.m8QBJ9⻊ )E.Yb6g. z 0L{;wK;TI3F͘x́F%=U;;vd-@2".BI""B#@k6YtJpqΟ/UW$]^ɷFd;Ub${0jzuNݐnmڍEuoEǷc#^o&wVn/\pO5Kje4PkTz,ѨS6tSM.n!M#tq|t2ՖU(U*|+F"ԢP:BX\gJ)p:^:j [8B܍ѣ"hG+cXTGq4z! l `^2h)4Ssqp$,854gyNVA{D!^Z`4āC@Uytު5W}]Qa^7cRUZqKLJ@(!zjj07hl DADB XX:SɆ@1 DF @n} A1 5M <$thi Q&P$r0nOCxs"i\X"LWy2"HI auh@: rZ^ zl=艅GYLl:BoQ$:T`bD@m=0) (9*0oSLN=XU$0 'lûҤb=Qj'{UZң$GAڡ/gH&`8M 8B@JwUstr tlo:/<$l*b`E I d*(A`D*=Łމ)ǚ6Q$$ I*`qe$l&0 vΎHl45-mR˖@Pb!G2x1DK'GJ>fCc쎅RlhZNGfv֑i 7B"p΂yy!þ7;aqim!wһ@9𸂐m"ʺcvӻQ,IyVh 0SU8W&)`f^0tiq4J(A a #0Ƞz(lcd7tJB=<D;`!C Id3QlYVőXta.b Q90 [-檇*UuLnٽ Kk,(#ejIK.і QrzaO4LB"0\lPeU]JVe^9TBtܪ^-\p0MiM(OFf.M:anrUTiwqʬǖvޠ  ]r@Wi5l  "->7ǐ7ӸXv@ H_SSCQU\Vb0vh-{2AB>a{?a"F,cIlJz%|h62 +ґz!{.Y8 $gA_UQϛY6@D"BDyYT|p$ 7cAqI("B*z`mT0eУ!ih{RA1D ׸o: k}>p/#Ah4*BX$nRɏ(|Lu rL,!mGHtQWC0jaVqbY*`b?EWp͂{J< =E)KD0DRLA5,AD^GtzEb t^`(E!>D$dDQ$XрʙLD0ªv( s &a*a) e@DCR #a@w@E!R^!FY#`;p7|fC d: (%r>O7$p kAW* K'`9)֨s*Ƚ /Vs@E=@m.xBPAIALI`tO "0JH e~ߥ! @mi!P\G8: f~<{Q bC@4?Nȧ>_S*DCwc] Zl[[b)gW˨FXPkGLY6Tz}Kt!@)) M0mr޺128-E)U] ˃*!1&D06-LKjVKe 8@AtfE'.N z9"yÞ:޳ yqy1捶^vlW-ƺTmW<݌nQw:t.H+:.ںaQ.0')6bleN |&hr4ɒ`e;NmuIO)g'nh4i;7)iTGbBgzQFd㞋@нtlX%4J?*y I;۱Рi)Ԙ%@@zƈ!aA:*!.Ĕ4X't{G( TLԅL'D! J@"83gGz h )DH&^Cz6#a.,Ét1&E$Zqh5@2-f"<è?ǭ}X'zmb5lUYLS A@J1 6E2w [ȵKQd FቕJThRO}SD#&=CAР sm%*O2(9RCeAOހr|tH>1t8%YD((SC+T$ ĐDwhis) ()>noe! Y""Z Jd&&!bhh "( &) XjIif$$jX(i &h"@"%FBT @ IF`r@=}KDԢMˠ:$2DM߀AR(냀sC! L&scD!O\]x\d\Fo$ҤH&N2}7 59E!Y+ZViMK"¢m,IA,0)V.˫5WE.hahĚ4R6:R,ݑͧ-ytJ %6.Vqpm萌4X7T;yAh*P*5hєRj(u0FGsb2,m8 ixf j(1t [4"-SA1űf4ulB39u@㇓MF2 i`6d(?rina 5eAZ;WmF2oP0unШKrn)a ,FrjyH"$12HlΆÚZXJ+fdi(Jѭ HGI( "tHd)$Y:b$Z 5jPO(ĀjZH骓2BtIVvzUO_ !G@L*+J- j*/[NQ;x#. `^2*HKpZj`тO`扭` ?z (>qQe ( "" 6!:؂!JB$2ıC$2A$1AڠjB 2g^gZ4W:{H#x(%!G05EPG&}"(e(HnA%I D*ĒT dB o.ꌻ*yP=QPB D9LX!] 2(P$D${SA1"aU(߶T5UH=(8  =A9B`;MǾ'r/i2aw4~7 tM‡P}$JЁJQ4,E450@H@ADE@RQABR(02 , Ȍ"ISR1T8)r)&j)yȢq$"#ACT:Ymѹ_#i}R%(,_؄A"V(bHC\]3?(o eEHT`!a$sP6BPϦ1{`G[y% ݁;`IL2cq'_ޜs \(bp|QGΈ!PX$~, k5&GNL O;G@ͫ)8ǐ?|.| ׹ 7Rg;Obb<?4 JT>f!ar.  !ei %I1t~´Ɩ4j?*B(h)ibi )e0",B PB2PrbM8oy;t3r/~y4TÆI`DI((`hv)8_$!sKLI7-GyE$ANxCґ!B3Mx$q+pX>B`WyjOwU֨y#c >SJH{3vw(?#IPM%%51$ d/0 v hqJ d*F6Ţh2;)E#lK37\qƠ \M%)()")$* h "n3t # (H {8'K04!`30;*D#}1%+L(@ÐUs 8% ޮ ; tJB@#F^) {.PV/ `Ѝ lQPX4R΃A5qvCdOdUR.11bv$ݐ țQna #I@Q HRο@j1  ad" D >>!G$‡h6%>s N0qFEX! ̚%L[P4Pge0)Fx /. EA|!g:x`1R>1%AA_kz`1&($OdqC_pi(`9v%()p H$1a])*׏ӯnݜ<ryZ^4kJ1vh8R'#,%$8^SG M*HSZ4-lcS"!,|w듺H"0SvKZRK^~F©őg۰ E=OcaJQO>J GR*@ܟؕ5׭rBqW"|]M풆i%)V)b))"h@$))Ji$:/lE}FxO6>ÓHPIKLEI)%(:4MDD2ב_D.@d0RFy{?|t ԥ`;çuT"hƉ=U_P/F ŀ94=@eGBu6[r(Ҙ $9A;la`}R| D}Ѿ] t(gȀRh <C"> P <80J*(W@2&pTP{`<`vHO q.^1USs.(HD+{76 X6#&-'?轝^:|AP-+wvI..g0!̘#F.c@{j$5"s|8 &(A}HUb`D0D @u 3 2` 4R9v;00C (!QX )AP$B.p:(iptb5f>pN\:Px]<\qoX171D8>bQ }h?{4=2}j;0DA@BA0@#2HGH*(-H*u/0 ф91 @W X&Y?;=@9 2@)m6!B JP"SH4%@R&h BB @T҂PHDҭ B1 ZG}F_t@KCBr *|R *)Q%JB#(?_`Ah`Kr4 ϶}n(1rx< e cF)@ja6]n sm6ab0πzE$RDQTU)$@ B@D0^ ϵ5Xw ;\:k>*oWٕv}cۦ +Tn{F(U_:@[w}g-|ܭ`KVm9CB/7ۯO^5l(wv[]|"w6;zJ>{O6{tt S`_NmuNchl47Wݥ"}{(=(H>_L H|}zlO7B\PU $(HP*ݻ)}j_Sl }RTh\yֹ>pevVRS%Z923tjWYtiA]jJN9*''cuIzmM@S^˘ZjE# Eɝ3 /^}j k3 R*(n`*SBJnt/ex#Ep0wcxx-.ţ:0^s`s\D?Rc,%*ܫNZijU6SmhRHP@UETEDxU @ʄULX R&$f" UADQR "K$@PI *I)R@DUQ!_vWW̶ V !5hA!`BC $$$0+ *AdՍ%4@ HHH$3 j 4)HC  !"e:)L`D3RԆY-ZmK&Ҵh2l[Q2Zk[5mmrl(2T6FժS$2uKce_;mU\Rͺͬ @͛ڞ,値?OķDi796zpuk:ˑ1]Ǘ=zaGbgy_:oۭlQPҨ60S$!FĴIUhiRw<tdйig/Ē68^6,@TQv>v|gh5JDE^[OXF :J; St$ $k¦(AʻV* o௛Gm8:zqsn0:ФH^^ ,>)ӾW:~}K`ʰZX 1b!mRHT$ՏbG]}acN O$ݔƹmAO C0'BƒJi$P$*ŶU0V9S*grD40)@+"<7[G/0%,J PްъF)T R (3U5 Ӥx8O:ImWVS\ڰE.y<;OY۬,ZRQpT?d`_vjH]%c,[%Pa~zBPTWjDgs%T%XUJJHZ=rv?W.2L~aů_*`;2^vTLIomȑVdL8h=8CB@lKJΈ߷:*Uu @>1|ȎG1QE }{mzmlҶ׻%⥶QBX&]"g1wqNLlͺtN*^oCMTݪڷwjݪݪP0*5$ $i7(/NI`v!^&fo^Y&0۽C&6ML< $| bJ'*kjFhNtԒÑ]_( WؘzO~mK?ZLe)JSȦ6P@Fd<;TH# ߋ%W>I溝rR픅NM  S/`U)J"řA5)viަÂQǏ7vQj Cvr:.=&ا)OBN—SLRve)H݅6)4zom?T|{a{iDFaf`DFDp 40M"""*"."%DNch87;p" X0u@lG |9q:6ƧmЫ*-CR5①hT\֑A$d4{#^9 jY' FBKYfbk-*nS)u99`^u [MyàΎsx_ +okm̚gׇ{}Xf!9Ǒ ,L|tkB ]ORԎ bM ] fCT$8"x;@'b)|3&g؜e#/5)LDDEyvs/D];$=! DzHgrx*obLMrVy+[m6A(A!/G[i])8|?6YH j)ۤ> `Kee+vHfvOWҊ!{sЦqgJXLȰ"YW)U")Ghma^Z{ie7(_4K(nd (cy qU,MODT :>͌v̊KK Zk,n[^ۿg-ǢFnItTTf`L8 nlah } ytk–dgD5p2;>i0Ĕ-tOc[R8bYH G+[Pf? vMX4?Y!atU.ƭ'rمr#A` F;ֈ|&'3sYFOumq!/Ē (\ZeMno2C֚gpR^͚_o-S<%&SsF7bAeͽt|̿{HFTr\廫2w6^kvxW4AKޡuniU|oOJv4 hM󈀩o Zqy 8ַ!4sN#L.`;׬oodeWEOq`BQ#JS1팭 C,0mRGv7M'].KCRi 6q[JfJSO,ͯJ j?.U<߸LřtEtْiw3q-f:߫֯Tͦh6R$R,R1HHgX}դM/Li848t]i@M׷t%6EӹEZMqL8lO[u)0IcW$Ug|2BTI8A;a+ 4`;5ob0 /F+_y$d\fEl1lfAZI@) DZ$1@uSm]UqQH-YB~%aVskɵ#Ir-$\o$2q*lb ) d^Bw{E\P)LÕu#)/z,}PW& dNYӪ12D0EYH&aʪů9 4~s?2lZ\yԙj Oa첏%0F.ڜrNRO%̳."8*kqh]n^_Ne^b+wm\*jS3_7A8O `$r `AN\2`̛=ztrl02L>V)BBi·2t9WÇd F&1=[01%T5&D $}\uNs3إ)kJޥc7;2Өı="q.ܮjHH B}JEBL$TZXori~l4#*DM4|^]#dɋ-Zk-%=|3y>du36mSf6xEOt5%`PO/ȥuidSޯ{ 6 B~_K W}.+]T9Kt]9ltI%;MFXx'[`FuU DC2JVX9C((;]? =o^n ~6wwggoVl}md!\-(R҄Γq{'@av<3qg/J$I @$h0! p4/{[A>P)*[gOUэ/wwxkg8Oߩsu?UK:MzMm΍V4@r2cǮ V<gJD%ZDd'(\!L$w>Bk#Ō~TM9ɥphЋdAH:sFƒ1 -*SDO#NG?9c ,X\ ٝ0f"d`B \G,5F횃 "?g&5‚D(?YT\T*۬7O+]u6mnQKK{g(p9zmhbMvl#DGEğ|oxsR!j$*$?$l"O",D>{qNǜO'q}0>flχމ!{]_j@WA>~fSXR;w>EwF/a~Wy E' mfy-'s=a<*pAٖy$vH$,L]9bB%.ȇqJ5}TF 傑6A+|Ak+"$<E@M0?\%lJda{g\q:0pa٤3ST2 0MI? ox:wKb4۹/-"a:"u._h}L$>e~r6ȳX {g9R @"LRbC#Lm,xq=`5OXg&U:-3$ s/Étζ94G(ިEN{N]U뮩;s=wMØ6k6FhaoLa"t|/gwݔdB +8E:ة㲎Gou:@( a 9[\wDgD/Iᬁ.z|BqLLYӗ ̜Atay2+6Q`)EqeR*ʗ>f0YWbֵ3+DB\*.U ZM >@?l$*~ZH"(yAP$$!ETK Ӓ ,J2F\1Ud9LEܢ *j"q$z?ևlP?._t g(\*YR/_)d#@l9Scb` od30'/t I|7?EyA10)<$)P)Oqa. Lr^NibTԊ\u?̤RRH'd:CHgA]0yϾ?8]>+B;{KLccVn(H'C̄郌zz7V4ﴴ[2/HH|Й4jӻ˩?Ywc#$$@F@ |[}mCO꽁⍙\W(D1$zЀ;5l.*l33c20=EUNbQ)js ;\TTG3=_w/ȈW [6ڭ0sؼR"DKHg! |dR[׆YnCor\ bГ[P.g @HU]|ak?,"ÞB1vj_&9?+iZ:vGߑ"v@ӺÊC.5irBx鵟OOd@>'u>gXnI;d+tp07Lu~2$p2vQ؏YQ!zKD6D:w{/fv'eu({tB, $H&1c !3Htǧ(i #xMH@DvB=EGfKʜ\`Q Y.ĿJsssvg+kRw6,kZaRTĺM % 0DL]N|b@o&IS $ ҆2I-2^)eu$+ۙ®m̑WMHTY/q~w N|,ei%Vkw;rqRԵK~%[y,{B(ytQR">{~e^BX"9T@E| ۵?XF?ahAQ[ήFTwkKLU(QW]*ʮVK[F`)N3kVn⫶jѤ-S:g$8]ocۭo91bޯMWm,NҀcRv {a)$53T׸s'#Q6| DZwڿ{Q" //Ppv_a10Of,І}"|ACZ$1?Z?ʭ~UIVߕk63> )4- O 4>蟕=Ir#8(jSyR3]%r b:IUcfj.Xse(l 0zo['yry{o:~wC\{=;//ksOFrjgqkZbGo3;g:wqq7>suyo?s{gηy*۝53.ߝƧPk3x_9Y׷{b9ָw[18Ѧv|LMSWs ,屄IѤy)w8545g;XtK'c1Qf|;0@zg$s'D̥3"xBڢGT8;q3xTbQE+ X5mRdlszG>lYg<7y>gō_I>Y7&d:XC7PInn!ēb9IlX``P-5\``-:n BIbED=b j ߦd>(pLKRl<kͽݻRHcRFH$DMI k=r g@#.&hj战a 2EQ񙙭o 8ݬ6MRDCh00Q~G8~_$ִbMpy~Feͧ }4 -5rN?4_'| +B{B473|FhSA1~89d:l8pF&O);xƚ7SuujՖ+-'m^8yϥ|e3+2QLʬʷUjXefU h] tm䧊*)x-fdÜrbdņ8 9-vGE!Y ġبJiG##YeB ĢBʄi7HFPY#=|!w,1%2N  J"uLXU<=="@~G# $⭆%؄j5E 93g1z[_0S.Z'PC=/Ю_3p:ɓwfDHRd+pd[ӀLu='5v^!db 07v8~$0bYӎyMDvvn;6?f[ ENhh`+CR =oGMfQY^P$|%U}T7WUUURUUUUUUUUUUUURUUUUUUUUUUJцL̪JJ̬L̫̬ʱL̫̬ʱL̫̬ʱL̫̬ʪ̬ʱL̫̬ʱL̫̬ʱL̫̬ʱL̫̬ʱL̫̬ʱL̪s`*ZUj1s[cFD7D;züљYK*0x&1DxEI}(b "hYc@;p0_UWUUUU-UUUU,RRԵTTTURpfVeUXefUfVeXefUUUJfg94ffUUs<93<9sY.[U*QKR <Ǭdɨ'RV`9^Pij'o g2dɃiO.n}j l'51Ϋ|pHcS2*̬ʵT*ԵUR323+2UT̬ʵTL̫UL> 9ё~sC"΀\20S̠

G8`fo :&͕"XbMBN`bf2P*rF$k6 7fg KneIV*F@[:{dhx? \"2eQ$F 0xk$l#Dt0Wf&MIs6z"W2i"&G6$!8C"|Cya9QU%T*ct`v0NfX 940GV "ZLII:aqi2)c^fftpiѣ-W%CjՇcHB~0b&P )eRb"RM"%$TXA!5fDua #D2"JJHhٙOQ'I`v"WO\# B%CFdHDuQ8.C)z%NLDLdER=TQB:6jHd{#ѣc(4RI;(h#/p&5X1$Y$[:-jh$yl!eWl<60H<=8pقa+m47 mdՉ6rիUNTX2ynrnգFNƩ)R87nٻFt)Ce %Ba0իrÄ6lW :!\×>]~h˖'f DØU&JPI2ᆌQ't,8a&TuRf0W%0!gd/^]-LZu8>7TBͬHHfyfQ(X&ػҔ%HΨr* L)iM[=}5]=pD dCz/cξcD;°:V~E{{4 TAM%P QDJ5D>ҝzHA"6.r" KM>N5@ a!+g4L,DDDԈ)hZC3VΖߏ>]ޠ:Tt\,UujڈDĩ M("Ix^d-QEDP*^(5EMUDQ%UUUUQEUUUUQEUUUUQEUUUUQEUUUUQEUUUUQEUUUUQEUUUUQEUUUUQEUWzz}Ҿ|Kpxⵥ=UUQEUUUUQEyUTUnvUU`+UUUX)Pr^*%*OEIQEDTM) " k<8}#ć>^ѡWE/J QWe`T*֡6߲W)g$ݒ9|+;6gXn9wH$awÉ} o,{]{}8{wƝ79s⍓=mbmyaSMDa$D蒢bƫ{և}AED oLR7ȤW:_E/hʩfajU?>gݪV9R)UbWYx-}J=y+¦76EHT^H٢ǸZ=a}l cFᘴg H1p!9"։UUTBV?O(>GN)g5Ԩc7s`f **S'%CCG@+ "f D~RhVf1AbEH[ AM'1*"$ +wv9E0I7nl!ODܠN:T}JPOrSávE3S SF`Z;$bH'Y$y6wtJ?z/B c{CG[r8 ?m 6>aOVs/{@$ ͷ-T~0УR=f2iKppqhZZZzLK SK4uutjիFYxZ2IFSVj+Q0đX"Q4Dm!MFʚCF"7nF5=Rˑ0I0DTMtR)PqN )7~B Ac{TX "ʔBL)'S{2D&>7 ̉ɃD8.NY"8YBJ* r;Kel 1<CE!F"aM7jlX5jhHeA"fMAssg sVC6" "Bh98pᱳ1!I| 1'AbG̟!8pDYO7]a#`!q'#.&GA:U`5u? )x 8),}Y"=~T6) X@Ȳ$QKe63K_HV) f9*?L*uH*ohTT,*k@l@l,S(sYqe;AHS?$?_C[j? 檪UUAWK|tx pCbĉB( d\`Q2xpMrIi =2`NؑȉY7hnب vPѣGd0d$*0h4I :6NYhձ"쭛4|)'32,MZwL= Fig DXnٳfT֮s9rRz*t'|NHuнID/TuCJC [8^ ?ؼlD}NdmȮKWSI%`r}I#IĔ@g<ԏGr E G,XhV)G)RmRYO:,)!m|A" /+6vm~6~tF1*WΊ7>C ~ "r'߼&7Q%!Cv':QzV*4UYg|b2Y20@}$ ~32ƶӆQ$s `1pٻWfY:+he#-Bhi4NTr8,dDWGHV#DWe6VVjᅘm6hDPl$0`f+,Q,h60 0.]\[8pMU{ d,IR`DJDXp v"!b)77@àNRX IOQOP#FD( D=D*!Z -r/ڌS};Yl}J$5Hf$JpNeI;G޼u5ee]aʷ( m͑yUBm ҤB0ꬔS4_B̞ kSLMGĊI$j]r%_ɨݰP`_;H͙j]M?;DIB'kh() ~!TaqtCR,wrČUB- R9"qS`!@5)KUB -ĦNɅ5)DK_P)e>[qO<>~pBR88@6=Ǥ{`7t񕈥!D;J4bpvu MFbH 0RS h&瘝)L6-pwa=.[i"PS$ Sb)^> Be@-4 GR÷R$[O58Oy!O.= e!@<ۍi#T(xd"xvG΄zJ.: ݹc~B O('a{VKlMíLG#l%.)sj=揘4ʇ)v "m)H)Hyx)kULX9 )R#i[.bF!(I3(@ +bjE)H*\D,dGgI)`:>}JäT'za!+?{~B 42he2'yhzhCd~p R.pp{μ|g`Rv* xPM~wYE>gnj~WQ]3yQSȈ",$yLEAY{eR,TEDU}JhgU`T" X) )($0H$II)?>Hz ̏;TR)XVȅ P2R$FR5O2!|!>b+"Њ"\I(Q=Y'q&C6bOy:T夓 TVBvS5(SR'mlFL½'Mq@K)qUH17#C8mm"&#dCDCN,bfbG ,<8I'%$TI&dCHvOpv8i I:aJ+ !H}ma+/P&pO2 UDMHfoGCq́zh +Ҍw%= VB)d֕#=A@! &:8bF؍!%!I>q#Gg"!SW$y#[o!V b}SHđ2",Q6=@:Tޭ*h U5s3M1I)Sj,c,$FPrD.7$;ra4$RG08hu/wB!R!fn&s lX養*(ͭ*L*&TE†ʱsPxL)Z^((%Zɚv{Hą#VEf?};hl 7d+NIAkdϷbFN/1 rPKOi`7 6]P> GL4'qjͮkT1fx0"uv3I'}0z13"'zتvv&(ۋ=bHG?"`? EHB .x`A.m7!P4l ?gE?3 6>4>9e|~u-7 ꟺ~x]0k#LVlV*}^CLačAβ~̃73IjCo<'CJ 5`6Nv#l'Y\A)FhSw?:z! ,1BXk0'8?W%P?O0=`*ţ G"Wɏ$(صiRlW09H ێGc #/Ť efPeFbYXR `ONM$K6Nf~רBF@ x8BV54Vl[_^߾kLBRdZ#hb*($D!un24bY}zsăBAuk$aTSɾj/6&Dn3wGr0DAsHaxNJq#2phX<")VIDaZˋC*!96~a| FV.Gy4ε hK;jL |T|HcϜ^)/_Y#?F8‰>8/#hMUc JRLkhkScV(8 wf6:*ņ8:fBq3g\库JzφF>&j1,tlẸayt:> e[Lɻ#ň")J, E2EEKѝ/au,T8 {9ZBbK3CUb c6! ic0g4آ3>RZ"u2QqŤyUvL$& Gg[}er%MqB|Y kfkgN%1=n)0ba\yb`D}e(2!K-K?mqKAm[m`X=.>۸)T1g<\lXXMIe6)JM.RgqQCyc\EֶR>PT-]Ӕ&Mؒ V Rp@.B#> ^KV|_k/lVHK kDUxs؊8D$؂K%,DW$6,-KJ<s(j)AKpd[<[,R]KڼyHa$B9$[A!jo*{heakڀRaIP41 B)a\7[47 ?(o`hǬ;NvY ބ.=N*sTvޡU@ {""N@PF,K4.kS6 DrOcSg[-ʡMr Қ=$s0P|TS*ӟ<7߱,7]7`Pa!DF'w>6~V`)) mUʠmcywswuDqR T2UT!0.GR)ll*Rk'TsH˚`[ ÎOܟRn:{K-ä33l ;JajҒ;1O=Ia,lhCַ`Bf8_#EZ-EZƫM`mF+ARDSMmlkQjHMY%։6k6YՍM0c[bjJP$TQuyla|lI͌lSZ5 Ӷֿ +2"O@?8bb"Յ$G4.}h tjyhzuxɱ"U[;T@x0!S 5DO|,؄*r>GRn|TULIT"~BtA> jmUGlKi3SK;tcs:CDvP:_@p(uɞ%躬[7Xajd'K???/?1.~JIwޅ`NVijZ~ѣE=ѣE#FwkhvE4hvF4[]F4hѣE#ٶxoj.$ͱlJjI2*ec4!lO,)ѫ:dwWj6^5QHZD"X Bsu|d)Z)Z&qb%™ (2+1sP42:j@ `4FDJmVJ(PUU 'd<\ B: JZZz i 9F֬)R[T*Ze03b#lQ;QL'a,=NCGq8"$,U'KBX,R`.P")ŸMA?xQ-hm ?7ُ{}}{ÅRQQAG=s3-y3g_P;\,9ź4*"NNȃI$kPG%I_/mJXA"\ %P$ J * @Jh{>rhY#Ie >ՄT2/q8Gjr`=(F(,E'薊ѩZ$}T޿eDæujTJ+3`EIAS8o )F*-8 F s?_^E BZk^1߯ރ+.2gbKRقkQ`$ cL 7*\JMQ"Bmd\'=c2s>Fk?%4#]bي)N{|PfX :UXhF)fi6JeJ"[i[jRJEu#c!0}"ZgDi6X5eJaQe%H5aNKxVa b|{;>1C7Pڒ `P$9z*EiSD]{HP6GM`@Eq X *,s ih#$OCABYNx(*%l FF$j^U>nh:'Sҩp$[kFSnx 5HQk6),K$F&FF-0L SQqz wV[LE@fHф*B = A&M * &C: !!HUQ0)PߎS F @MKMMAI. KΒ\f *T,EB)b@! &BgD ltbIV$`Eo9QM E"S `hv7k$>drRx;yin`3@, Dh"tb^m6  :KZ* n3[ hA.7]!UJI!!.P+bOJeF: )`gV]VK.)ber>U%UO4єF'i$L8.:|xF"}@n0o*6D_Tf46Y")4X{Duii k* Ip "D6 kT}/8`T.wڳPuFY?dK"'!N3H(:i4QJ=CG4b3xz+f0[pE!P)Q@`iF DeAhT0H# )2Z'!!W*1,P-]STӕY@ a1?wc#3CP>c|3r2Y-6XM+Kjګ`1#j-;%d:ԓثęltIW #I 7M4I YӍ I Ze@BlBR*$xyO24DF@C6_/SoY 5_j7Gv_swն0^"d@lDQuQ PÊhDȟѦHlF u`8y@{U9t;”pmz,)' WLĶ T3sDCPE#zQך׮ njYFEDz B0YD,-E ARb+hJF#kF 6DPѿx "? GE ͦxS[׊à /Ff( ҖS8bT^P<+ If]\>``@4?A"v֪©*3YʭU@6iZ_K"/Y栍@슧A91v$}~KEUqP2CgaC_J  A$ e'&T$_Ϡ@8@&`AU`@=@$Y)]~=MŀlELтj,*tMppNcid[';aw[$EKe*ZD%{ ض@,D $R{EQO]--!_cP?SR~s"iXR)8̷W(7ҁԊee!b|N&0aa5 50N/ k4\8U($ʐEAVJy(k6JQJQ=h@qTX9O_2 jD0ûTDyM^ TP1WGj DCaҋjm-lj2Ԗ!",䦈1Oh0?k_`MB$:U:9*xXP - 5h7_Hob}uWoF]/fw;XF=pPj5s(uD5Eda#{"|S<B ,)V&u+ٰpsG"B$6/ГȒ90`Ṱ"#KqA&yuKpO)̼ nf loona|DE$""1J؊Cot.|jfE8"+QDy~*DM ##HX#qHH$к 6h,E*$H ?3q%I&`l}DY#?LCa"3މ O+b 7#UN2ȥ(1Z),,DW6+v$Ѐ3Vjכ3Ҫy}P"ACE,Z':Ҵ 94SYRHQU ,~o}vș"@DB5T`$Ff;0{ H>7mh۫]KƶiEnCewvEC˷S.DE " j61mFh1yDhsf a3y Xb.fΌܸ}drUl S/( =.,1k]Tv`D,C*olH쉅!zԵJc Z٩s2@_@巹V!i&+lF)36P3HHkmdbSḊ,#rec#4*M K|"KGN 0f,y ew#G 2fZbbР!SHRI$]&J _f8iw0ReX&0A4)LenJ5#ef'YX-5TоfV$ lBJV@@HTx{"#  1{!A*Vk6n/ޞԛ^dԽrZEUcU:w 61WR QBHQ`eDfQfe=_Zp BI ]!kYHn1 v՜ɴDR X Padm\Do|_x(m jt@$1E&ߖSSOe\P8j[uzf-ͥb|МUL%5JۭM;"RxT9 a @PԚT.;ɷ[STDƪW*ր VTy a*T*Y)$T2ƶeQ#Edu\VN)ZղZdDj"T#`.AB!B;bດܤT$ ĊH"t`+o*,hZkZa`5)WZ_kXd<cHym*pU>K*Q)N@5^J)}/g쓿] 'u}~6j<}6cz'H +hz`ґ~ " P@"@C[{{ 3\VvCY͠ݮêPqCF`g|YauZw^ɕ8ˆxhL24_f=2I0#H S޵k6y>3!虘gȈ,J6+"& 'aeSvE,)7…q(e#v Y$6i|JRBj)E-D]ϱ@pxs&ɞ-CgSM u ĺ;@ӫ1KQ":YjI\*_:|7,3bKiu75viHb˯fTēJ[w$:ɞkfUzIj26&4e lMӿ;kyUJ~kk-MZ'R3^ywYy2Fc+h8(Kf ebJI(I%VYjqlԙ5l1qX"o/QHA%ARII%$SI@$B\T~pER B'YIidP`0@Vp$$IY!DO$݆f,X')Xf´5:^")VUT*j$uDlW 5HE`=TjpQfùCr^^#2EhAP"թ: "V"? )))gUb@e P"2KEV/pR] D BNW-$nAA$]a5HCq[ PE M"0Y* )#ċ"1 56E6f,em5`s#ӯ2f_ =@rHLs 4[p\ 'Q9GR 6Ժt@"RCrulUc`(B@f'p{_~ŌDH 9S3I)m)l&bk}]U6$dm[nD!h,A)$T#bNGwߟȂDI 6!T<%0dKEC!sDRSRBAT U* Bu+ >Y@^kRnO6R EI,ɴh6ئZYUZVɉ#L֏^ș!1p# f<;!膨 LAQh%CPCAbXA D"ERdG%ТKmySwr#v#>o>—J~]+HHl(Paii Gm /tThD[>w&J4QXM>xxV+"&dAi(DΑ>?'PYZ)er38$"0` 9k"0C n0D8QUHZSL|yQj"jG-R %];`fĮe :Ij.H~a33[AHC6~8H,,*H* $,%}h5=2~T-%b<bABA֤R 'r~-OZRE kk2TY1"`QVJT-MMm bc[4IViMjhmE*,T UIVU0ŔlRg)„o` num">1]; hsize_t offset[1]; hid_t sid; hid_t mem_space_id; hsize_t mem_size[1]; unsigned char *tmp_buf; size_t src_size; size_t *src_offset; size_t *src_sizes; hsize_t nrows; #if defined (SHRINK) hsize_t dims[1]; #endif /*------------------------------------------------------------------------- * First we get information about type size and offsets on disk *------------------------------------------------------------------------- */ /* Get the number of records and fields */ if ( H5TBget_table_info ( loc_id, dset_name, &nfields, &ntotal_records ) < 0 ) return -1; src_offset = (size_t *)malloc((size_t)nfields * sizeof(size_t)); src_sizes = (size_t *)malloc((size_t)nfields * sizeof(size_t)); if ( src_offset == NULL ) return -1; /* Get field info */ if ( H5TBget_field_info( loc_id, dset_name, NULL, src_sizes, src_offset, &src_size ) < 0 ) return -1; /*------------------------------------------------------------------------- * Read the records after the deleted one(s) *------------------------------------------------------------------------- */ read_start = start + nrecords; read_nrecords = ntotal_records - read_start; tmp_buf = (unsigned char *)calloc((size_t) read_nrecords, src_size ); if ( tmp_buf == NULL ) return -1; /* Read the records after the deleted one(s) */ if ( H5TBread_records( loc_id, dset_name, read_start, read_nrecords, src_size, src_offset, src_sizes, tmp_buf ) < 0 ) return -1; /*------------------------------------------------------------------------- * Write the records in another position *------------------------------------------------------------------------- */ /* Open the dataset. */ if ( (did = H5Dopen( loc_id, dset_name )) < 0 ) return -1; /* Get the datatype */ if ( (tid = H5Dget_type( did )) < 0 ) goto out; /* Get the dataspace handle */ if ( (sid = H5Dget_space( did )) < 0 ) goto out; /* Define a hyperslab in the dataset of the size of the records */ offset[0] = start; count[0] = read_nrecords; if ( H5Sselect_hyperslab( sid, H5S_SELECT_SET, offset, NULL, count, NULL) < 0 ) goto out; /* Create a memory dataspace handle */ mem_size[0] = count[0]; if ( (mem_space_id = H5Screate_simple( 1, mem_size, NULL )) < 0 ) goto out; if ( H5Dwrite( did, tid, mem_space_id, sid, H5P_DEFAULT, tmp_buf ) < 0 ) goto out; /* Terminate access to the memory dataspace */ if ( H5Sclose( mem_space_id ) < 0 ) goto out; /* Terminate access to the dataspace */ if ( H5Sclose( sid ) < 0 ) goto out; /* Release the datatype. */ if ( H5Tclose( tid ) < 0 ) goto out; /*------------------------------------------------------------------------- * Change the table dimension *------------------------------------------------------------------------- */ #if defined (SHRINK) dims[0] = ntotal_records - nrecords; if ( H5Dset_extent( did, dims ) < 0 ) goto out; #endif /* End access to the dataset */ if ( H5Dclose( did ) < 0 ) return -1; free( tmp_buf ); free( src_offset ); free( src_sizes ); /*------------------------------------------------------------------------- * Store the new dimension as an attribute *------------------------------------------------------------------------- */ nrows = ntotal_records - nrecords; /* Set the attribute */ if (H5LT_set_attribute_numerical(loc_id,dset_name,"NROWS",(size_t)1, H5T_NATIVE_LLONG,&nrows)<0) return -1; return 0; out: H5Dclose( did ); return -1; } /*------------------------------------------------------------------------- * Function: H5TBinsert_record * * Purpose: Inserts records into middle of table ("pushing down" all the records after it) * * Return: Success: 0, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: November 26, 2001 * * Comments: Uses memory offsets * * Modifications: April 1, 2004 * the DST_SIZES parameter is used to define the memory type ID * returned by H5TB_create_type * *------------------------------------------------------------------------- */ herr_t H5TBinsert_record( hid_t loc_id, const char *dset_name, hsize_t start, hsize_t nrecords, size_t type_size, const size_t *field_offset, const size_t *field_sizes, void *data ) { hsize_t nfields; hsize_t ntotal_records; hsize_t read_nrecords; hid_t did; hid_t tid=-1; hid_t mem_type_id=-1; hsize_t count[1]; hsize_t offset[1]; hid_t sid=-1; hid_t mem_space_id=-1; hsize_t dims[1]; hsize_t mem_dims[1]; unsigned char *tmp_buf; /*------------------------------------------------------------------------- * Read the records after the inserted one(s) *------------------------------------------------------------------------- */ /* Get the dimensions */ if ( H5TBget_table_info ( loc_id, dset_name, &nfields, &ntotal_records ) < 0 ) return -1; /* Open the dataset. */ if ( (did = H5Dopen( loc_id, dset_name )) < 0 ) goto out; /* Get the datatype */ if ( (tid = H5Dget_type( did )) < 0 ) goto out; /* Create the memory data type. */ if ((mem_type_id=H5TB_create_type(loc_id,dset_name,type_size,field_offset,field_sizes,tid))<0) goto out; read_nrecords = ntotal_records - start; tmp_buf = (unsigned char *)calloc((size_t) read_nrecords, type_size ); /* Read the records after the inserted one(s) */ if ( H5TBread_records( loc_id, dset_name, start, read_nrecords, type_size, field_offset, field_sizes, tmp_buf ) < 0 ) return -1; /* Extend the dataset */ dims[0] = ntotal_records + nrecords; if ( H5Dextend ( did, dims ) < 0 ) goto out; /*------------------------------------------------------------------------- * Write the inserted records *------------------------------------------------------------------------- */ /* Create a simple memory data space */ mem_dims[0]=nrecords; if ( (mem_space_id = H5Screate_simple( 1, mem_dims, NULL )) < 0 ) return -1; /* Get the file data space */ if ( (sid = H5Dget_space( did )) < 0 ) return -1; /* Define a hyperslab in the dataset to write the new data */ offset[0] = start; count[0] = nrecords; if ( H5Sselect_hyperslab( sid, H5S_SELECT_SET, offset, NULL, count, NULL) < 0 ) goto out; if ( H5Dwrite( did, mem_type_id, mem_space_id, sid, H5P_DEFAULT, data ) < 0 ) goto out; /* Terminate access to the dataspace */ if ( H5Sclose( mem_space_id ) < 0 ) goto out; if ( H5Sclose( sid ) < 0 ) goto out; /*------------------------------------------------------------------------- * Write the "pushed down" records *------------------------------------------------------------------------- */ /* Create a simple memory data space */ mem_dims[0]=read_nrecords; if ( (mem_space_id = H5Screate_simple( 1, mem_dims, NULL )) < 0 ) return -1; /* Get the file data space */ if ( (sid = H5Dget_space( did )) < 0 ) return -1; /* Define a hyperslab in the dataset to write the new data */ offset[0] = start + nrecords; count[0] = read_nrecords; if ( H5Sselect_hyperslab( sid, H5S_SELECT_SET, offset, NULL, count, NULL) < 0 ) goto out; if ( H5Dwrite( did, mem_type_id, mem_space_id, sid, H5P_DEFAULT, tmp_buf ) < 0 ) goto out; /* Terminate access to the dataspace */ if ( H5Sclose( mem_space_id ) < 0 ) goto out; if ( H5Sclose( sid ) < 0 ) goto out; /* Release the datatype. */ if ( H5Tclose( tid ) < 0 ) return -1; /* Release the datatype. */ if ( H5Tclose( mem_type_id ) < 0 ) return -1; /* End access to the dataset */ if ( H5Dclose( did ) < 0 ) return -1; free( tmp_buf ); return 0; /* error zone, gracefully close */ out: H5E_BEGIN_TRY { H5Dclose(did); H5Sclose(sid); H5Sclose(mem_space_id); H5Tclose(mem_type_id); H5Tclose(tid); } H5E_END_TRY; return -1; } /*------------------------------------------------------------------------- * Function: H5TBadd_records_from * * Purpose: Add records from first table to second table * * Return: Success: 0, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: December 5, 2001 * * Comments: * * Modifications: * * *------------------------------------------------------------------------- */ herr_t H5TBadd_records_from( hid_t loc_id, const char *dset_name1, hsize_t start1, hsize_t nrecords, const char *dset_name2, hsize_t start2 ) { /* Identifiers for the 1st dataset. */ hid_t dataset_id1; hid_t type_id1; hid_t space_id1=-1; hid_t mem_space_id1=-1; size_t type_size1; hsize_t count[1]; hsize_t offset[1]; hsize_t mem_size[1]; hsize_t nfields; hsize_t ntotal_records; unsigned char *tmp_buf; size_t src_size; size_t *src_offset; size_t *src_sizes; /*------------------------------------------------------------------------- * First we get information about type size and offsets on disk *------------------------------------------------------------------------- */ /* Get the number of records and fields */ if ( H5TBget_table_info ( loc_id, dset_name1, &nfields, &ntotal_records ) < 0 ) return -1; src_offset = (size_t *)malloc((size_t)nfields * sizeof(size_t)); src_sizes = (size_t *)malloc((size_t)nfields * sizeof(size_t)); if ( src_offset == NULL ) return -1; /* Get field info */ if ( H5TBget_field_info( loc_id, dset_name1, NULL, src_sizes, src_offset, &src_size ) < 0 ) return -1; /*------------------------------------------------------------------------- * Get information about the first table and read it *------------------------------------------------------------------------- */ /* Open the 1st dataset. */ if ( (dataset_id1 = H5Dopen( loc_id, dset_name1 )) < 0 ) return -1; /* Get the datatype */ if ( (type_id1 = H5Dget_type( dataset_id1 )) < 0 ) goto out; /* Get the dataspace handle */ if ( (space_id1 = H5Dget_space( dataset_id1 )) < 0 ) goto out; /* Get the size of the datatype */ if ( ( type_size1 = H5Tget_size( type_id1 )) == 0 ) goto out; tmp_buf = (unsigned char *)calloc((size_t)nrecords, type_size1 ); /* Define a hyperslab in the dataset of the size of the records */ offset[0] = start1; count[0] = nrecords; if ( H5Sselect_hyperslab( space_id1, H5S_SELECT_SET, offset, NULL, count, NULL) < 0 ) goto out; /* Create a memory dataspace handle */ mem_size[0] = count[0]; if ( (mem_space_id1 = H5Screate_simple( 1, mem_size, NULL )) < 0 ) goto out; if ( H5Dread( dataset_id1, type_id1, mem_space_id1, space_id1, H5P_DEFAULT, tmp_buf ) < 0 ) goto out; /*------------------------------------------------------------------------- * Add to the second table *------------------------------------------------------------------------- */ if ( H5TBinsert_record(loc_id,dset_name2,start2,nrecords,src_size,src_offset,src_sizes,tmp_buf ) < 0 ) goto out; /*------------------------------------------------------------------------- * Close resources for table 1 *------------------------------------------------------------------------- */ /* Terminate access to the memory dataspace */ if ( H5Sclose( mem_space_id1 ) < 0 ) goto out; /* Terminate access to the dataspace */ if ( H5Sclose( space_id1 ) < 0 ) goto out; /* Release the datatype. */ if ( H5Tclose( type_id1 ) < 0 ) return -1; /* End access to the dataset */ if ( H5Dclose( dataset_id1 ) < 0 ) return -1; free( tmp_buf ); free( src_offset ); free( src_sizes ); return 0; /* error zone, gracefully close */ out: H5E_BEGIN_TRY { H5Dclose(dataset_id1); H5Sclose(space_id1); H5Sclose(mem_space_id1); H5Tclose(type_id1); } H5E_END_TRY; return -1; } /*------------------------------------------------------------------------- * Function: H5TBcombine_tables * * Purpose: Combine records from two tables into a third * * Return: Success: 0, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: December 10, 2001 * * Comments: * * Modifications: * * *------------------------------------------------------------------------- */ herr_t H5TBcombine_tables( hid_t loc_id1, const char *dset_name1, hid_t loc_id2, const char *dset_name2, const char *dset_name3 ) { /* Identifiers for the 1st dataset. */ hid_t dataset_id1; hid_t type_id1; hid_t space_id1; hid_t plist_id1; /* Identifiers for the 2nd dataset. */ hid_t dataset_id2; hid_t type_id2; hid_t space_id2; hid_t plist_id2; /* Identifiers for the 3rd dataset. */ hid_t dataset_id3; hid_t type_id3; hid_t space_id3; hid_t plist_id3; hsize_t count[1]; hsize_t offset[1]; hid_t mem_space_id; hsize_t mem_size[1]; hsize_t nfields; hsize_t nrecords; hsize_t dims[1]; hsize_t maxdims[1] = { H5S_UNLIMITED }; size_t type_size; hid_t sid; hid_t member_type_id; size_t member_offset; char attr_name[255]; hid_t attr_id; char aux[255]; unsigned char *tmp_buf; unsigned char *tmp_fill_buf; hsize_t i; size_t src_size; size_t *src_offset; size_t *src_sizes; int has_fill=0; /*------------------------------------------------------------------------- * First we get information about type size and offsets on disk *------------------------------------------------------------------------- */ /* Get the number of records and fields */ if ( H5TBget_table_info ( loc_id1, dset_name1, &nfields, &nrecords ) < 0 ) return -1; src_offset = (size_t *)malloc((size_t)nfields * sizeof(size_t)); src_sizes = (size_t *)malloc((size_t)nfields * sizeof(size_t)); if ( src_offset == NULL ) return -1; /* Get field info */ if ( H5TBget_field_info( loc_id1, dset_name1, NULL, src_sizes, src_offset, &src_size ) < 0 ) return -1; /*------------------------------------------------------------------------- * Get information about the first table *------------------------------------------------------------------------- */ /* Open the 1st dataset. */ if ( (dataset_id1 = H5Dopen( loc_id1, dset_name1 )) < 0 ) goto out; /* Get the datatype */ if ( (type_id1 = H5Dget_type( dataset_id1 )) < 0 ) goto out; /* Get the dataspace handle */ if ( (space_id1 = H5Dget_space( dataset_id1 )) < 0 ) goto out; /* Get creation properties list */ if ( (plist_id1 = H5Dget_create_plist( dataset_id1 )) < 0 ) goto out; /* Get the dimensions */ if ( H5TBget_table_info ( loc_id1, dset_name1, &nfields, &nrecords ) < 0 ) return -1; /*------------------------------------------------------------------------- * Make the merged table with no data originally *------------------------------------------------------------------------- */ /* Clone the property list */ if ( ( plist_id3 = H5Pcopy( plist_id1 )) < 0 ) goto out; /* Clone the type id */ if ( ( type_id3 = H5Tcopy( type_id1 )) < 0 ) goto out; /*------------------------------------------------------------------------- * Here we do not clone the file space from the 1st dataset, because we want to create * an empty table. Instead we create a new dataspace with zero records and expandable. *------------------------------------------------------------------------- */ dims[0] = 0; /* Create a simple data space with unlimited size */ if ( (space_id3 = H5Screate_simple( 1, dims, maxdims )) < 0 ) return -1; /* Create the dataset */ if ( (dataset_id3 = H5Dcreate( loc_id1, dset_name3, type_id3, space_id3, plist_id3 )) < 0 ) goto out; /*------------------------------------------------------------------------- * Attach the conforming table attributes *------------------------------------------------------------------------- */ if ( H5TB_attach_attributes( "Merge table", loc_id1, dset_name3, nfields, type_id3 ) < 0 ) goto out; /*------------------------------------------------------------------------- * Get attributes *------------------------------------------------------------------------- */ type_size = H5Tget_size( type_id3 ); /* alloc fill value attribute buffer */ tmp_fill_buf = (unsigned char *)malloc((size_t) type_size ); /* Get the fill value attributes */ has_fill=H5TBAget_fill( loc_id1, dset_name1, dataset_id1, tmp_fill_buf ); /*------------------------------------------------------------------------- * Attach the fill attributes from previous table *------------------------------------------------------------------------- */ if ( has_fill == 1 ) { if (( sid = H5Screate(H5S_SCALAR)) < 0 ) goto out; for ( i = 0; i < nfields; i++) { /* Get the member type */ if ( ( member_type_id = H5Tget_member_type( type_id3, (unsigned) i )) < 0 ) goto out; /* Get the member offset */ member_offset = H5Tget_member_offset( type_id3, (unsigned) i ); strcpy( attr_name, "FIELD_" ); sprintf( aux, "%d", (int) i ); strcat( attr_name, aux ); sprintf( aux, "%s", "_FILL" ); strcat( attr_name, aux ); if ( (attr_id = H5Acreate( dataset_id3, attr_name, member_type_id, sid, H5P_DEFAULT )) < 0 ) goto out; if ( H5Awrite( attr_id, member_type_id, tmp_fill_buf+member_offset ) < 0 ) goto out; if ( H5Aclose( attr_id ) < 0 ) goto out; if ( H5Tclose( member_type_id ) < 0 ) goto out; } /* Close data space. */ if ( H5Sclose( sid ) < 0 ) goto out; } /*------------------------------------------------------------------------- * Read data from 1st table *------------------------------------------------------------------------- */ tmp_buf = (unsigned char *)calloc((size_t) nrecords, type_size ); /* Define a hyperslab in the dataset of the size of the records */ offset[0] = 0; count[0] = nrecords; if ( H5Sselect_hyperslab( space_id1, H5S_SELECT_SET, offset, NULL, count, NULL) < 0 ) goto out; /* Create a memory dataspace handle */ mem_size[0] = count[0]; if ( (mem_space_id = H5Screate_simple( 1, mem_size, NULL )) < 0 ) goto out; if ( H5Dread( dataset_id1, type_id1, mem_space_id, space_id1, H5P_DEFAULT, tmp_buf ) < 0 ) goto out; /*------------------------------------------------------------------------- * Save data from 1st table into new table *------------------------------------------------------------------------- */ /* Append the records to the new table */ if ( H5TBappend_records( loc_id1, dset_name3, nrecords, src_size, src_offset, src_sizes, tmp_buf ) < 0 ) goto out; /*------------------------------------------------------------------------- * Release resources from 1st table *------------------------------------------------------------------------- */ /* Terminate access to the memory dataspace */ if ( H5Sclose( mem_space_id ) < 0 ) goto out; /* Terminate access to the dataspace */ if ( H5Sclose( space_id1 ) < 0 ) goto out; /* Release the datatype. */ if ( H5Tclose( type_id1 ) < 0 ) goto out; /* Terminate access to a property list */ if ( H5Pclose( plist_id1 ) < 0 ) goto out; /* End access to the dataset */ if ( H5Dclose( dataset_id1 ) < 0 ) goto out; /* Release resources. */ free( tmp_buf ); /*------------------------------------------------------------------------- * Get information about the 2nd table *------------------------------------------------------------------------- */ /* Open the dataset. */ if ( (dataset_id2 = H5Dopen( loc_id2, dset_name2 )) < 0 ) goto out; /* Get the datatype */ if ( (type_id2 = H5Dget_type( dataset_id2 )) < 0 ) goto out; /* Get the dataspace handle */ if ( (space_id2 = H5Dget_space( dataset_id2 )) < 0 ) goto out; /* Get the property list handle */ if ( (plist_id2 = H5Dget_create_plist( dataset_id2 )) < 0 ) goto out; /* Get the dimensions */ if ( H5TBget_table_info ( loc_id2, dset_name2, &nfields, &nrecords ) < 0 ) return -1; /*------------------------------------------------------------------------- * Read data from 2nd table *------------------------------------------------------------------------- */ tmp_buf = (unsigned char *)calloc((size_t) nrecords, type_size ); /* Define a hyperslab in the dataset of the size of the records */ offset[0] = 0; count[0] = nrecords; if ( H5Sselect_hyperslab( space_id2, H5S_SELECT_SET, offset, NULL, count, NULL) < 0 ) goto out; /* Create a memory dataspace handle */ mem_size[0] = count[0]; if ( (mem_space_id = H5Screate_simple( 1, mem_size, NULL )) < 0 ) goto out; if ( H5Dread( dataset_id2, type_id2, mem_space_id, space_id2, H5P_DEFAULT, tmp_buf ) < 0 ) goto out; /*------------------------------------------------------------------------- * Save data from 2nd table into new table *------------------------------------------------------------------------- */ /* append the records to the new table */ if ( H5TBappend_records( loc_id1, dset_name3, nrecords, src_size, src_offset, src_sizes, tmp_buf ) < 0 ) goto out; /*------------------------------------------------------------------------- * Release resources from 2nd table *------------------------------------------------------------------------- */ /* Terminate access to the memory dataspace */ if ( H5Sclose( mem_space_id ) < 0 ) goto out; /* Terminate access to the dataspace */ if ( H5Sclose( space_id2 ) < 0 ) goto out; /* Release the datatype. */ if ( H5Tclose( type_id2 ) < 0 ) return -1; /* Terminate access to a property list */ if ( H5Pclose( plist_id2 ) < 0 ) goto out; /* End access to the dataset */ if ( H5Dclose( dataset_id2 ) < 0 ) return -1; /*------------------------------------------------------------------------- * Release resources from 3rd table *------------------------------------------------------------------------- */ /* Terminate access to the dataspace */ if ( H5Sclose( space_id3 ) < 0 ) return -1; /* Release the datatype. */ if ( H5Tclose( type_id3 ) < 0 ) return -1; /* Terminate access to a property list */ if ( H5Pclose( plist_id3 ) < 0 ) return -1; /* End access to the dataset */ if ( H5Dclose( dataset_id3 ) < 0 ) return -1; /* Release resources. */ free( tmp_buf ); free( tmp_fill_buf ); free( src_offset ); free( src_sizes ); return 0; out: H5Dclose( dataset_id1 ); return -1; } /*------------------------------------------------------------------------- * Function: H5TBinsert_field * * Purpose: Inserts a field * * Return: Success: 0, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: January 30, 2002 * * Comments: * * Modifications: * *------------------------------------------------------------------------- */ herr_t H5TBinsert_field( hid_t loc_id, const char *dset_name, const char *field_name, hid_t field_type, hsize_t position, const void *fill_data, const void *data ) { /* Identifiers for the 1st, original dataset */ hid_t dataset_id1; hid_t type_id1; hid_t space_id1; hid_t plist_id1; hid_t mem_space_id1; /* Identifiers for the 2nd, new dataset */ hid_t dataset_id2; hid_t type_id2; hid_t space_id2; hid_t plist_id2; hid_t mem_space_id2; hid_t member_type_id; size_t member_size; size_t new_member_size = 0; char *member_name; size_t total_size; hsize_t nfields; hsize_t nrecords; hsize_t dims_chunk[1]; hsize_t dims[1]; hsize_t maxdims[1] = { H5S_UNLIMITED }; hsize_t count[1]; hsize_t offset[1]; hsize_t mem_size[1]; hid_t write_type_id; hid_t PRESERVE; size_t curr_offset; int inserted; hsize_t idx; char table_title[255]; size_t member_offset; char attr_name[255]; hid_t attr_id; char aux[255]; unsigned char *tmp_buf; unsigned char *tmp_fill_buf; hsize_t i; /* Get the number of records and fields */ if ( H5TBget_table_info ( loc_id, dset_name, &nfields, &nrecords ) < 0 ) return -1; /*------------------------------------------------------------------------- * Get information about the old data type *------------------------------------------------------------------------- */ /* Open the dataset. */ if ( (dataset_id1 = H5Dopen( loc_id, dset_name )) < 0 ) return -1; /* Get creation properties list */ if ( (plist_id1 = H5Dget_create_plist( dataset_id1 )) < 0 ) goto out; /* Get the datatype */ if ( (type_id1 = H5Dget_type( dataset_id1 )) < 0 ) goto out; /* Get the size of the datatype */ if ( ( total_size = H5Tget_size( type_id1 )) == 0 ) goto out; /* Get the dataspace handle */ if ( (space_id1 = H5Dget_space( dataset_id1 )) < 0 ) goto out; /* Get dimension */ if ( H5Sget_simple_extent_dims( space_id1, dims, NULL) < 0 ) goto out; /*------------------------------------------------------------------------- * Get attributes *------------------------------------------------------------------------- */ /* Get the table title */ if ( (H5TBAget_title( dataset_id1, table_title )) < 0 ) goto out; /* alloc fill value attribute buffer */ tmp_fill_buf = (unsigned char *)malloc(total_size ); /* Get the fill value attributes */ if ( (H5TBAget_fill( loc_id, dset_name, dataset_id1, tmp_fill_buf )) < 0 ) goto out; /*------------------------------------------------------------------------- * Create a new data type *------------------------------------------------------------------------- */ /* Get the new member size */ member_size = H5Tget_size( field_type ); /* Create the data type. */ if (( type_id2 = H5Tcreate (H5T_COMPOUND,(size_t)(total_size + member_size) )) < 0 ) goto out; curr_offset = 0; inserted = 0; /* Insert the old fields, counting with the new one */ for ( i = 0; i < nfields + 1; i++) { idx = i; if ( inserted ) idx = i - 1; if ( i == position ) { /* Get the new member size */ new_member_size = H5Tget_size( field_type ); /* Insert the new field type */ if ( H5Tinsert( type_id2, field_name, curr_offset, field_type ) < 0 ) goto out; curr_offset += new_member_size; inserted = 1; continue; } /* Get the member name */ member_name = H5Tget_member_name( type_id1, (unsigned)idx ); /* Get the member type */ if ( ( member_type_id = H5Tget_member_type( type_id1,(unsigned)idx )) < 0 ) goto out; /* Get the member size */ member_size = H5Tget_size( member_type_id ); /* Insert it into the new type */ if ( H5Tinsert( type_id2, member_name, curr_offset, member_type_id ) < 0 ) goto out; curr_offset += member_size; free( member_name ); /* Close the member type */ if ( H5Tclose( member_type_id ) < 0 ) goto out; } /* i */ /*------------------------------------------------------------------------- * Create a new temporary dataset *------------------------------------------------------------------------- */ /* Retrieve the size of chunk */ if ( H5Pget_chunk( plist_id1, 1, dims_chunk ) < 0 ) goto out; /* Create a new simple data space with unlimited size, using the dimension */ if ( ( space_id2 = H5Screate_simple( 1, dims, maxdims )) < 0 ) return -1; /* Modify dataset creation properties, i.e. enable chunking */ plist_id2 = H5Pcreate (H5P_DATASET_CREATE); if ( H5Pset_chunk ( plist_id2, 1, dims_chunk ) < 0 ) return -1; /* Create the dataset. */ if ( ( dataset_id2 = H5Dcreate( loc_id, "new", type_id2, space_id2, plist_id2 )) < 0 ) goto out; /*------------------------------------------------------------------------- * Read data from 1st table *------------------------------------------------------------------------- */ tmp_buf = (unsigned char *)calloc((size_t) nrecords, (size_t)total_size ); /* Define a hyperslab in the dataset of the size of the records */ offset[0] = 0; count[0] = nrecords; if ( H5Sselect_hyperslab( space_id1, H5S_SELECT_SET, offset, NULL, count, NULL) < 0 ) goto out; /* Create a memory dataspace handle */ mem_size[0] = count[0]; if ( (mem_space_id1 = H5Screate_simple( 1, mem_size, NULL )) < 0 ) goto out; if ( H5Dread( dataset_id1, type_id1, mem_space_id1, H5S_ALL, H5P_DEFAULT, tmp_buf ) < 0 ) goto out; /*------------------------------------------------------------------------- * Save data from 1st table into new table, using the 1st type id *------------------------------------------------------------------------- */ /* Write */ if ( H5Dwrite( dataset_id2, type_id1, mem_space_id1, H5S_ALL, H5P_DEFAULT, tmp_buf ) < 0 ) goto out; /*------------------------------------------------------------------------- * Save the function supplied data of the new field *------------------------------------------------------------------------- */ /* Create a write id */ if ( ( write_type_id = H5Tcreate( H5T_COMPOUND, (size_t)new_member_size )) < 0 ) goto out; /* The field in the file is found by its name */ if ( H5Tinsert( write_type_id, field_name, (size_t)0, field_type ) < 0 ) goto out; /* Create xfer properties to preserve initialized data */ if ((PRESERVE = H5Pcreate (H5P_DATASET_XFER))<0) goto out; if (H5Pset_preserve (PRESERVE, 1)<0) goto out; /* Only write if there is something to write */ if ( data ) { /* Create a memory dataspace handle */ if ( (mem_space_id2 = H5Screate_simple( 1, mem_size, NULL )) < 0 ) goto out; /* Write */ if ( H5Dwrite( dataset_id2, write_type_id, mem_space_id2, space_id2, PRESERVE, data ) < 0 ) goto out; /* Terminate access to the memory dataspace */ if ( H5Sclose( mem_space_id2 ) < 0 ) goto out; } /* End access to the property list */ if ( H5Pclose( PRESERVE ) < 0 ) goto out; /*------------------------------------------------------------------------- * Release resources from 1st table *------------------------------------------------------------------------- */ /* Terminate access to the memory dataspace */ if ( H5Sclose( mem_space_id1 ) < 0 ) goto out; /* Release the datatype. */ if ( H5Tclose( type_id1 ) < 0 ) goto out; /* Terminate access to a property list */ if ( H5Pclose( plist_id1 ) < 0 ) goto out; /* Terminate access to the data space */ if ( H5Sclose( space_id1 ) < 0 ) goto out; /* End access to the dataset */ if ( H5Dclose( dataset_id1 ) < 0 ) goto out; /*------------------------------------------------------------------------- * Release resources from 2nd table *------------------------------------------------------------------------- */ /* Terminate access to the dataspace */ if ( H5Sclose( space_id2 ) < 0 ) goto out; /* Release the datatype. */ if ( H5Tclose( type_id2 ) < 0 ) return -1; /* Terminate access to a property list */ if ( H5Pclose( plist_id2 ) < 0 ) goto out; /* End access to the dataset */ if ( H5Dclose( dataset_id2 ) < 0 ) return -1; /*------------------------------------------------------------------------- * Delete 1st table *------------------------------------------------------------------------- */ if ( H5Gunlink( loc_id, dset_name ) < 0 ) return -1; /*------------------------------------------------------------------------- * Rename 2nd table *------------------------------------------------------------------------- */ if ( H5Gmove( loc_id, "new", dset_name ) < 0 ) return -1; /*------------------------------------------------------------------------- * Attach the conforming table attributes *------------------------------------------------------------------------- */ /* Get the number of records and fields */ if ( H5TBget_table_info ( loc_id, dset_name, &nfields, &nrecords ) < 0 ) return -1; /* Open the dataset. */ if ( (dataset_id1 = H5Dopen( loc_id, dset_name )) < 0 ) return -1; /* Get the datatype */ if ( (type_id1 = H5Dget_type( dataset_id1 )) < 0 ) goto out; /* Set the attributes */ if ( H5TB_attach_attributes( table_title, loc_id, dset_name,(hsize_t) nfields, type_id1 ) < 0 ) return -1; /*------------------------------------------------------------------------- * Attach the fill attributes from previous table *------------------------------------------------------------------------- */ if (( space_id1 = H5Screate(H5S_SCALAR)) < 0 ) goto out; for ( i = 0; i < nfields-1; i++) { /* Get the member type */ if ( ( member_type_id = H5Tget_member_type( type_id1, (unsigned) i )) < 0 ) goto out; /* Get the member offset */ member_offset = H5Tget_member_offset( type_id1, (unsigned) i ); strcpy( attr_name, "FIELD_" ); sprintf( aux, "%d", (int)i ); strcat( attr_name, aux ); sprintf( aux, "%s", "_FILL" ); strcat( attr_name, aux ); if ( (attr_id = H5Acreate( dataset_id1, attr_name, member_type_id, space_id1, H5P_DEFAULT )) < 0 ) goto out; if ( H5Awrite( attr_id, member_type_id, tmp_fill_buf+member_offset ) < 0 ) goto out; if ( H5Aclose( attr_id ) < 0 ) goto out; /* Close the member type */ if ( H5Tclose( member_type_id ) < 0 ) goto out; } /*------------------------------------------------------------------------- * Attach the fill attribute from the new field, if present *------------------------------------------------------------------------- */ if ( fill_data ) { strcpy( attr_name, "FIELD_" ); sprintf( aux, "%d",(int)( nfields-1) ); strcat( attr_name, aux ); sprintf( aux, "%s", "_FILL" ); strcat( attr_name, aux ); /* Get the member type */ if ( ( member_type_id = H5Tget_member_type( type_id1, (unsigned)nfields-1 )) < 0 ) goto out; if ( (attr_id = H5Acreate( dataset_id1, attr_name, member_type_id, space_id1, H5P_DEFAULT )) < 0 ) goto out; if ( H5Awrite( attr_id, member_type_id, fill_data ) < 0 ) goto out; if ( H5Aclose( attr_id ) < 0 ) goto out; if ( H5Tclose( member_type_id ) < 0 ) goto out; } /* Close data space. */ if ( H5Sclose( space_id1 ) < 0 ) goto out; /* Release the datatype. */ if ( H5Tclose( type_id1 ) < 0 ) goto out; /* End access to the dataset */ if ( H5Dclose( dataset_id1 ) < 0 ) goto out; /* Release resources. */ free ( tmp_buf ); free ( tmp_fill_buf ); return 0; out: H5Dclose( dataset_id1 ); return -1; } /*------------------------------------------------------------------------- * Function: H5TBdelete_field * * Purpose: Deletes a field * * Return: Success: 0, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: January 30, 2002 * * Comments: * * Modifications: * * *------------------------------------------------------------------------- */ herr_t H5TBdelete_field( hid_t loc_id, const char *dset_name, const char *field_name ) { /* Identifiers for the 1st original dataset */ hid_t dataset_id1; hid_t type_id1; hid_t space_id1; hid_t plist_id1; /* Identifiers for the 2nd new dataset */ hid_t dataset_id2; hid_t type_id2; hid_t space_id2; hid_t plist_id2; hid_t member_type_id; size_t member_size; char *member_name; size_t type_size1; size_t type_size2; hsize_t nfields; hsize_t nrecords; hsize_t dims_chunk[1]; hsize_t dims[1]; hsize_t maxdims[1] = { H5S_UNLIMITED }; hid_t PRESERVE; size_t curr_offset; size_t delete_member_size = 0; hid_t read_type_id; hid_t write_type_id; unsigned char *tmp_buf; unsigned char *tmp_fill_buf; char attr_name[255]; char aux[255]; char table_title[255]; size_t member_offset; hid_t attr_id; hsize_t i; int has_fill=0; /* Get the number of records and fields */ if ( H5TBget_table_info ( loc_id, dset_name, &nfields, &nrecords ) < 0 ) return -1; /*------------------------------------------------------------------------- * Get information about the old data type *------------------------------------------------------------------------- */ /* Open the dataset. */ if ( (dataset_id1 = H5Dopen( loc_id, dset_name )) < 0 ) return -1; /* Get creation properties list */ if ( (plist_id1 = H5Dget_create_plist( dataset_id1 )) < 0 ) goto out; /* Get the datatype */ if ( (type_id1 = H5Dget_type( dataset_id1 )) < 0 ) goto out; /* Get the size of the datatype */ type_size1 = H5Tget_size( type_id1 ); /* Get the dataspace handle */ if ( (space_id1 = H5Dget_space( dataset_id1 )) < 0 ) goto out; /* Get dimension */ if ( H5Sget_simple_extent_dims( space_id1, dims, NULL) < 0 ) goto out; /*------------------------------------------------------------------------- * Create a new data type; first we find the size of the datatype to delete *------------------------------------------------------------------------- */ /* Check out the field */ for ( i = 0; i < nfields; i++) { /* Get the member name */ member_name = H5Tget_member_name( type_id1,(unsigned) i ); /* We want to find the field to delete */ if ( H5TB_find_field( member_name, field_name ) > 0 ) { /* Get the member type */ if ( ( member_type_id = H5Tget_member_type( type_id1,(unsigned) i )) < 0 ) goto out; /* Get the member size */ delete_member_size = H5Tget_size( member_type_id ); /* Close the member type */ if ( H5Tclose( member_type_id ) < 0 ) goto out; free( member_name ); break; } free( member_name ); } /* i */ /* No field to delete was found */ if ( delete_member_size == 0 ) goto out; /*------------------------------------------------------------------------- * Create a new data type; we now insert all the fields into the new type *------------------------------------------------------------------------- */ type_size2 = type_size1 - delete_member_size; /* Create the data type. */ if (( type_id2 = H5Tcreate (H5T_COMPOUND, type_size2 )) < 0 ) goto out; curr_offset = 0; /* alloc fill value attribute buffer */ tmp_fill_buf = (unsigned char *)malloc((size_t) type_size2 ); /*------------------------------------------------------------------------- * Get attributes from previous table in the process *------------------------------------------------------------------------- */ /* Get the table title */ if ( (H5TBAget_title( dataset_id1, table_title )) < 0 ) goto out; /* Insert the old fields except the one to delete */ for ( i = 0; i < nfields; i++) { /* Get the member name */ member_name = H5Tget_member_name( type_id1, (unsigned) i ); /* We want to skip the field to delete */ if ( H5TB_find_field( member_name, field_name ) > 0 ) { free( member_name ); continue; } /* Get the member type */ if ( ( member_type_id = H5Tget_member_type( type_id1, (unsigned)i )) < 0 ) goto out; /* Get the member size */ member_size = H5Tget_size( member_type_id ); /* Insert it into the new type */ if ( H5Tinsert( type_id2, member_name, curr_offset, member_type_id ) < 0 ) goto out; /*------------------------------------------------------------------------- * Get the fill value information *------------------------------------------------------------------------- */ strcpy( attr_name, "FIELD_" ); sprintf( aux, "%d", (int)i ); strcat( attr_name, aux ); sprintf( aux, "%s", "_FILL" ); strcat( attr_name, aux ); /* Check if we have the _FILL attribute */ has_fill = H5LT_find_attribute( dataset_id1, attr_name ); /* Get it */ if ( has_fill == 1 ) { if ( H5LT_get_attribute_disk( dataset_id1, attr_name, tmp_fill_buf+curr_offset ) < 0 ) goto out; } curr_offset += member_size; free( member_name ); /* Close the member type */ if ( H5Tclose( member_type_id ) < 0 ) goto out; } /* i */ /*------------------------------------------------------------------------- * Create a new temporary dataset *------------------------------------------------------------------------- */ /* Retrieve the size of chunk */ if ( H5Pget_chunk( plist_id1, 1, dims_chunk ) < 0 ) goto out; /* Create a new simple data space with unlimited size, using the dimension */ if ( ( space_id2 = H5Screate_simple( 1, dims, maxdims )) < 0 ) return -1; /* Modify dataset creation properties, i.e. enable chunking */ plist_id2 = H5Pcreate (H5P_DATASET_CREATE); if ( H5Pset_chunk ( plist_id2, 1, dims_chunk ) < 0 ) return -1; /* Create the dataset. */ if ( ( dataset_id2 = H5Dcreate( loc_id, "new", type_id2, space_id2, plist_id2 )) < 0 ) goto out; /*------------------------------------------------------------------------- * We have to read field by field of the old dataset and save it into the new one *------------------------------------------------------------------------- */ for ( i = 0; i < nfields; i++) { /* Get the member name */ member_name = H5Tget_member_name( type_id1,(unsigned) i ); /* Skip the field to delete */ if ( H5TB_find_field( member_name, field_name ) > 0 ) { free( member_name ); continue; } /* Get the member type */ if ( ( member_type_id = H5Tget_member_type( type_id1, (unsigned)i )) < 0 ) goto out; /* Get the member size */ member_size = H5Tget_size( member_type_id ); /* Create a read id */ if ( ( read_type_id = H5Tcreate( H5T_COMPOUND, member_size )) < 0 ) goto out; /* Insert it into the new type */ if ( H5Tinsert( read_type_id, member_name, (size_t)0, member_type_id ) < 0 ) goto out; tmp_buf = (unsigned char *)calloc((size_t) nrecords, member_size ); /* Read */ if ( H5Dread( dataset_id1, read_type_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, tmp_buf ) < 0 ) goto out; /* Create a write id */ if ( ( write_type_id = H5Tcreate( H5T_COMPOUND, member_size )) < 0 ) goto out; /* The field in the file is found by its name */ if ( H5Tinsert( write_type_id, member_name, (size_t)0, member_type_id ) < 0 ) goto out; /* Create xfer properties to preserve initialized data */ if ((PRESERVE = H5Pcreate (H5P_DATASET_XFER))<0) goto out; if (H5Pset_preserve (PRESERVE, 1)<0) goto out; /* Write */ if ( H5Dwrite( dataset_id2, write_type_id, H5S_ALL, H5S_ALL, PRESERVE, tmp_buf ) < 0 ) goto out; /* End access to the property list */ if ( H5Pclose( PRESERVE ) < 0 ) goto out; /* Close the member type */ if ( H5Tclose( member_type_id ) < 0 ) goto out; /* Close the read type */ if ( H5Tclose( read_type_id ) < 0 ) goto out; /* Close the write type */ if ( H5Tclose( write_type_id ) < 0 ) goto out; /* Release resources. */ free( member_name ); free ( tmp_buf ); } /* i */ /*------------------------------------------------------------------------- * Release resources from 1st table *------------------------------------------------------------------------- */ /* Release the datatype. */ if ( H5Tclose( type_id1 ) < 0 ) goto out; /* Terminate access to a property list */ if ( H5Pclose( plist_id1 ) < 0 ) goto out; /* Terminate access to the data space */ if ( H5Sclose( space_id1 ) < 0 ) goto out; /* End access to the dataset */ if ( H5Dclose( dataset_id1 ) < 0 ) goto out; /*------------------------------------------------------------------------- * Release resources from 2nd table *------------------------------------------------------------------------- */ /* Terminate access to the dataspace */ if ( H5Sclose( space_id2 ) < 0 ) goto out; /* Release the datatype. */ if ( H5Tclose( type_id2 ) < 0 ) return -1; /* Terminate access to a property list */ if ( H5Pclose( plist_id2 ) < 0 ) goto out; /* End access to the dataset */ if ( H5Dclose( dataset_id2 ) < 0 ) return -1; /*------------------------------------------------------------------------- * Delete 1st table *------------------------------------------------------------------------- */ if ( H5Gunlink( loc_id, dset_name ) < 0 ) return -1; /*------------------------------------------------------------------------- * Rename 2nd table *------------------------------------------------------------------------- */ if ( H5Gmove( loc_id, "new", dset_name ) < 0 ) return -1; /*------------------------------------------------------------------------- * Attach the conforming table attributes *------------------------------------------------------------------------- */ /* Get the number of records and fields */ if ( H5TBget_table_info ( loc_id, dset_name, &nfields, &nrecords ) < 0 ) return -1; /* Open the dataset. */ if ( (dataset_id1 = H5Dopen( loc_id, dset_name )) < 0 ) return -1; /* Get the datatype */ if ( (type_id1 = H5Dget_type( dataset_id1 )) < 0 ) goto out; /* Set the attributes */ if ( H5TB_attach_attributes( table_title, loc_id, dset_name, nfields, type_id1 ) < 0 ) return -1; /*------------------------------------------------------------------------- * Attach the fill attributes from previous table *------------------------------------------------------------------------- */ if ( has_fill == 1 ) { if (( space_id1 = H5Screate(H5S_SCALAR)) < 0 ) goto out; for ( i = 0; i < nfields; i++) { /* Get the member type */ if ( ( member_type_id = H5Tget_member_type( type_id1, (unsigned)i )) < 0 ) goto out; /* Get the member offset */ member_offset = H5Tget_member_offset( type_id1, (unsigned)i ); strcpy( attr_name, "FIELD_" ); sprintf( aux, "%d", (int)i ); strcat( attr_name, aux ); sprintf( aux, "%s", "_FILL" ); strcat( attr_name, aux ); if ( (attr_id = H5Acreate( dataset_id1, attr_name, member_type_id, space_id1, H5P_DEFAULT )) < 0 ) goto out; if ( H5Awrite( attr_id, member_type_id, tmp_fill_buf+member_offset ) < 0 ) goto out; if ( H5Aclose( attr_id ) < 0 ) goto out; /* Close the member type */ if ( H5Tclose( member_type_id ) < 0 ) goto out; } /* Close data space. */ if ( H5Sclose( space_id1 ) < 0 ) goto out; } /*has_fill*/ /* Release the datatype. */ if ( H5Tclose( type_id1 ) < 0 ) goto out; /* End access to the dataset */ if ( H5Dclose( dataset_id1 ) < 0 ) goto out; /* Release resources. */ free ( tmp_fill_buf ); return 0; out: H5Dclose( dataset_id1 ); return -1; } /*------------------------------------------------------------------------- * * Table attribute functions * *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * Function: H5TBAget_title * * Purpose: Read the table title * * Return: Success: 0, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: January 30, 2001 * * Comments: * * Modifications: * *------------------------------------------------------------------------- */ herr_t H5TBAget_title( hid_t loc_id, char *table_title ) { /* Get the TITLE attribute */ if ( H5LT_get_attribute_disk( loc_id, "TITLE", table_title ) < 0 ) return -1; return 0; } /*------------------------------------------------------------------------- * Function: H5TBAget_fill * * Purpose: Read the table attribute fill values * * Return: Success: 0, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: January 30, 2002 * * Comments: * * Modifications: * *------------------------------------------------------------------------- */ herr_t H5TBAget_fill( hid_t loc_id, const char *dset_name, hid_t dset_id, unsigned char *dst_buf ) { hsize_t nfields; hsize_t nrecords; char attr_name[255]; char aux[255]; hsize_t i; size_t *src_offset; int has_fill=0; /* Get the number of records and fields */ if ( H5TBget_table_info ( loc_id, dset_name, &nfields, &nrecords ) < 0 ) return -1; src_offset = (size_t *)malloc((size_t)nfields * sizeof(size_t)); if (src_offset == NULL ) return -1; /* Get field info */ if ( H5TBget_field_info( loc_id, dset_name, NULL, NULL, src_offset, NULL ) < 0 ) goto out; for ( i = 0; i < nfields; i++) { strcpy( attr_name, "FIELD_" ); sprintf( aux, "%d", (int)i ); strcat( attr_name, aux ); sprintf( aux, "%s", "_FILL" ); strcat( attr_name, aux ); /* Check if we have the _FILL attribute */ has_fill = H5LT_find_attribute( dset_id, attr_name ); /* Get it */ if ( has_fill == 1 ) { if ( H5LT_get_attribute_disk( dset_id, attr_name, dst_buf+src_offset[i] ) < 0 ) goto out; } } free( src_offset ); return has_fill; out: free( src_offset ); return -1; } /*------------------------------------------------------------------------- * * Inquiry functions * *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * Function: H5TBget_table_info * * Purpose: Gets the number of records and fields of a table * * Return: Success: 0, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: November 19, 2001 * * Comments: * * Modifications: May 08, 2003 * In version 2.0 of Table, the number of records is stored as an * attribute "NROWS" * * *------------------------------------------------------------------------- */ herr_t H5TBget_table_info ( hid_t loc_id, const char *dset_name, hsize_t *nfields, hsize_t *nrecords ) { hid_t tid; hid_t sid=-1; hid_t did; int num_members; hsize_t dims[1]; int has_attr; hsize_t n[1]; /* Open the dataset. */ if ( (did = H5Dopen( loc_id, dset_name )) < 0 ) return -1; /* Get the datatype */ if ( (tid = H5Dget_type( did )) < 0 ) goto out; /* Get the number of members */ if ( (num_members = H5Tget_nmembers( tid )) < 0 ) goto out; if (nfields) *nfields = num_members; /*------------------------------------------------------------------------- * Get number of records *------------------------------------------------------------------------- */ if (nrecords) { /* Try to find the attribute "NROWS" */ has_attr = H5LT_find_attribute( did, "NROWS" ); /* It exists, get it */ if ( has_attr == 1 ) { /* Get the attribute */ if ( H5LTget_attribute(loc_id,dset_name,"NROWS",H5T_NATIVE_LLONG,n)<0) return -1; /**nrecords = *n;*/ *nrecords = n[0]; } else { /* Get the dataspace handle */ if ( (sid = H5Dget_space( did )) < 0 ) goto out; /* Get records */ if ( H5Sget_simple_extent_dims( sid, dims, NULL) < 0 ) goto out; /* Terminate access to the dataspace */ if ( H5Sclose( sid ) < 0 ) goto out; *nrecords = dims[0]; } }/*nrecords*/ /* close */ if ( H5Tclose( tid ) < 0 ) goto out; if ( H5Dclose( did ) < 0 ) return -1; return 0; /* error zone, gracefully close */ out: H5E_BEGIN_TRY { H5Dclose(did); H5Sclose(sid); H5Tclose(tid); } H5E_END_TRY; return -1; } /*------------------------------------------------------------------------- * Function: H5TBget_field_info * * Purpose: Get information about fields * * Return: Success: 0, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: November 19, 2001 * * Comments: * * Modifications: * * *------------------------------------------------------------------------- */ herr_t H5TBget_field_info( hid_t loc_id, const char *dset_name, char *field_names[], size_t *field_sizes, size_t *field_offsets, size_t *type_size ) { hid_t did; hid_t ftype_id; hid_t native_type_id; hssize_t nfields; char *member_name; hid_t member_type_id; hid_t nativem_type_id; size_t member_size; size_t member_offset; size_t size; hssize_t i; /* Open the dataset. */ if ( ( did = H5Dopen( loc_id, dset_name )) < 0 ) goto out; /* Get the datatype */ if ( ( ftype_id = H5Dget_type( did )) < 0 ) goto out; if ((native_type_id = H5Tget_native_type(ftype_id,H5T_DIR_DEFAULT))<0) goto out; /* Get the type size */ size = H5Tget_size( native_type_id ); if ( type_size ) *type_size = size; /* Get the number of members */ if ( ( nfields = H5Tget_nmembers( ftype_id )) < 0 ) goto out; /* Iterate tru the members */ for ( i = 0; i < nfields; i++) { /* Get the member name */ member_name = H5Tget_member_name( ftype_id, (unsigned)i ); if ( field_names ) strcpy( field_names[i], member_name ); /* Get the member type */ if ( ( member_type_id = H5Tget_member_type( ftype_id,(unsigned) i )) < 0 ) goto out; if ((nativem_type_id = H5Tget_native_type(member_type_id,H5T_DIR_DEFAULT))<0) goto out; /* Get the member size */ member_size = H5Tget_size( nativem_type_id ); if ( field_sizes ) field_sizes[i] = member_size; /* Get the member offset */ member_offset = H5Tget_member_offset( native_type_id,(unsigned) i ); if ( field_offsets ) field_offsets[i] = member_offset; /* Close the member type */ if ( H5Tclose( member_type_id ) < 0 ) goto out; if ( H5Tclose( nativem_type_id ) < 0 ) goto out; free( member_name ); } /* i */ /* Release the datatype. */ if ( H5Tclose( ftype_id ) < 0 ) return -1; if ( H5Tclose( native_type_id ) < 0 ) return -1; /* End access to the dataset */ if ( H5Dclose( did ) < 0 ) return -1; return 0; out: H5Dclose( did ); return -1; } /*------------------------------------------------------------------------- * * internal functions * *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * Function: H5TB_find_field * * Purpose: Find a string field * * Return: Success: 0, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: November 19, 2001 * *------------------------------------------------------------------------- */ static int H5TB_find_field( const char *field, const char *field_list ) { const char *start = field_list; const char *end; while ( (end = strstr( start, "," )) != 0 ) { size_t count = end - start; if ( strncmp(start, field, count) == 0 && count == strlen(field) ) return 1; start = end + 1; } if ( strcmp( start, field ) == 0 ) return 1; return -1; } /*------------------------------------------------------------------------- * Function: H5TB_attach_attributes * * Purpose: Private function that creates the conforming table attributes; * Used by H5TBcombine_tables; not used by H5TBmake_table, which does not read * the fill value attributes from an existing table * * Return: Success: 0, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: December 6, 2001 * * Comments: * * Modifications: * *------------------------------------------------------------------------- */ static herr_t H5TB_attach_attributes( const char *table_title, hid_t loc_id, const char *dset_name, hsize_t nfields, hid_t tid ) { char attr_name[255]; char *member_name; char aux[255]; hsize_t i; /* Attach the CLASS attribute */ if ( H5LTset_attribute_string( loc_id, dset_name, "CLASS", TABLE_CLASS ) < 0 ) goto out; /* Attach the VERSION attribute */ if ( H5LTset_attribute_string( loc_id, dset_name, "VERSION", "2.0" ) < 0 ) goto out; /* Attach the TITLE attribute */ if ( H5LTset_attribute_string( loc_id, dset_name, "TITLE", table_title ) < 0 ) goto out; /* Attach the FIELD_ name attribute */ for ( i = 0; i < nfields; i++) { /* Get the member name */ member_name = H5Tget_member_name( tid, (unsigned)i ); strcpy( attr_name, "FIELD_" ); sprintf( aux, "%d", (int)i ); strcat( attr_name, aux ); sprintf( aux, "%s", "_NAME" ); strcat( attr_name, aux ); /* Attach the attribute */ if ( H5LTset_attribute_string( loc_id, dset_name, attr_name, member_name ) < 0 ) goto out; free( member_name ); } return 0; out: return -1; } /*------------------------------------------------------------------------- * Function: H5TB_create_type * * Purpose: Private function that creates a memory type ID * * Return: Success: the memory type ID, Failure: -1 * * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: March 31, 2004 * * Comments: * * Modifications: * *------------------------------------------------------------------------- */ static hid_t H5TB_create_type(hid_t loc_id, const char *dset_name, size_t type_size, const size_t *field_offset, const size_t *field_sizes, hid_t ftype_id) { hid_t mem_type_id; hid_t mtype_id=-1; hid_t nmtype_id=-1; size_t size_native; hsize_t nfields; char **fnames; unsigned i; /* get the number of fields */ if (H5TBget_table_info(loc_id,dset_name,&nfields,NULL)<0) return -1; if ((fnames=malloc(sizeof(char*)*(size_t)nfields))==NULL) return -1; for ( i=0; i<nfields; i++) { if ((fnames[i]=malloc(sizeof(char)*HLTB_MAX_FIELD_LEN))==NULL) { free(fnames); return -1; } } /* get field info */ if ( H5TBget_field_info(loc_id,dset_name,fnames,NULL,NULL,NULL)<0) goto out; /* create the memory data type */ if ((mem_type_id=H5Tcreate(H5T_COMPOUND,type_size))<0) goto out; /* get each field ID and adjust its size, if necessary */ for ( i=0; i<nfields; i++) { if ((mtype_id=H5Tget_member_type(ftype_id,i))<0) goto out; if ((nmtype_id=H5Tget_native_type(mtype_id,H5T_DIR_DEFAULT))<0) goto out; size_native=H5Tget_size(nmtype_id); if (field_sizes[i]!=size_native) { if (H5Tset_size(nmtype_id,field_sizes[i])<0) goto out; } if (H5Tinsert(mem_type_id,fnames[i],field_offset[i],nmtype_id) < 0 ) goto out; if (H5Tclose(mtype_id)<0) goto out; if (H5Tclose(nmtype_id)<0) goto out; } for ( i=0; i<nfields; i++) { free (fnames[i]); } free (fnames); return mem_type_id; /* error zone, gracefully close and free */ out: H5E_BEGIN_TRY { H5Tclose(mtype_id); H5Tclose(nmtype_id); } H5E_END_TRY; for ( i=0; i<nfields; i++) { if (fnames[i]) free (fnames[i]); } if (fnames) free (fnames); return -1; } /*------------------------------------------------------------------------- * * Functions shared between H5TB and H5PT * *------------------------------------------------------------------------- */ /*------------------------------------------------------------------------- * Function: H5TB_common_append_records * * Purpose: Common code for reading records shared between H5PT and H5TB * * Return: Success: 0, Failure: -1 * * Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu * James Laird, jlaird@ncsa.uiuc.edu * * Date: March 8, 2004 * * Comments: Called by H5TBappend_records and H5PTappend_records * * Modifications: * *------------------------------------------------------------------------- */ herr_t H5TB_common_append_records( hid_t dataset_id, hid_t mem_type_id, size_t nrecords, hsize_t orig_table_size, const void * data) { hsize_t count[1]; hsize_t offset[1]; hid_t space_id = H5I_BADID; hid_t mem_space_id = H5I_BADID; hsize_t dims[1]; hsize_t mem_dims[1]; /* Extend the dataset */ dims[0] = nrecords + orig_table_size; if ( H5Dextend ( dataset_id, dims ) < 0 ) goto out; /* Create a simple memory data space */ mem_dims[0]=nrecords; if ( (mem_space_id = H5Screate_simple( 1, mem_dims, NULL )) < 0 ) goto out; /* Get a copy of the new file data space for writing */ if ( (space_id = H5Dget_space( dataset_id )) < 0 ) goto out; /* Define a hyperslab in the dataset */ offset[0] = orig_table_size; count[0] = nrecords; if ( H5Sselect_hyperslab( space_id, H5S_SELECT_SET, offset, NULL, count, NULL)<0) goto out; /* Write the records */ if ( H5Dwrite( dataset_id, mem_type_id, mem_space_id, space_id, H5P_DEFAULT, data )<0) goto out; /* Terminate access to the dataspace */ if ( H5Sclose( mem_space_id ) < 0 ) goto out; if ( H5Sclose( space_id ) < 0 ) goto out; return 0; out: H5E_BEGIN_TRY H5Sclose(mem_space_id); H5Sclose(space_id); H5E_END_TRY return -1; } /*------------------------------------------------------------------------- * Function: H5TB_common_read_records * * Purpose: Common code for reading records shared between H5PT and H5TB * * Return: Success: 0, Failure: -1 * * Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu * James Laird, jlaird@ncsa.uiuc.edu * * Date: March 8, 2004 * * Comments: Called by H5TBread_records and H5PTread_records * * Modifications: * * *------------------------------------------------------------------------- */ herr_t H5TB_common_read_records( hid_t dataset_id, hid_t mem_type_id, hsize_t start, size_t nrecords, hsize_t table_size, void *data) { hsize_t count[1]; hsize_t offset[1]; hid_t space_id = H5I_BADID; hid_t mem_space_id = H5I_BADID; hsize_t mem_size[1]; /* Make sure the read request is in bounds */ if ( start + nrecords > table_size ) goto out; /* Get the dataspace handle */ if ( (space_id = H5Dget_space( dataset_id )) < 0 ) goto out; /* Define a hyperslab in the dataset of the size of the records */ offset[0] = start; count[0] = nrecords; if ( H5Sselect_hyperslab( space_id, H5S_SELECT_SET, offset, NULL, count, NULL) < 0 ) goto out; /* Create a memory dataspace handle */ mem_size[0] = count[0]; if ((mem_space_id = H5Screate_simple( 1, mem_size, NULL )) < 0 ) goto out; if ((H5Dread( dataset_id, mem_type_id, mem_space_id, space_id, H5P_DEFAULT, data))<0) goto out; /* Terminate access to the memory dataspace */ if ( H5Sclose( mem_space_id ) < 0 ) goto out; /* Terminate access to the dataspace */ if ( H5Sclose( space_id ) < 0 ) goto out; return 0; out: H5E_BEGIN_TRY H5Sclose(space_id); H5Sclose(mem_space_id); H5E_END_TRY return -1; }