hexbin/0000755000176200001440000000000014406422065011532 5ustar liggesusershexbin/NAMESPACE0000644000176200001440000000435014406411032012743 0ustar liggesusersuseDynLib(hexbin, .registration=TRUE) import(methods) import(grid) ## too many things from grid import(lattice) ## too many things from lattice importFrom(graphics, plot, polygon) importFrom(grDevices, col2rgb, gray, grey, hsv, rgb, rgb2hsv, xy.coords) importFrom(stats, coef, density, IQR, loess, loess.control, median, predict, update) importFrom(utils, modifyList, str) ## Generics and functions defined in this package export( "erode", "erode.hexbin", "getHMedian", ## document those; the method aliases are there: ## "getFig", "getMargins", "getPlt", "getXscale", "getYscale", "gplot.hexbin", "grid.hexagons", "grid.hexlegend", "hboxplot", "hcell2xy", "hexbin", "hexcoords", "hexList", "hexpolygon", "hexViewport", "hexVP.abline", "plotMAhex", "hexVP.loess", "hexMA.loess", "hsmooth", "list2hexList", "pushHexport", "smooth.hexbin", "hdiffplot", # but not all the helpers in ./R/hdiffplot.R ## Stuff in hexutils "hcell2xyInt", "hgridcent", "hexGraphPaper", "hexTapply", "optShape", "inout.hex", ## color stuff "BTC", "BTY", "LinGray", "LinOCS", "heat.ob", "magent","plinrain", ## Lattice stuff: ## high-level functions "hexbinplot", "hexplom", ## panel functions "panel.hexbinplot", "panel.hexplom", "panel.hexboxplot", "panel.hexgrid","panel.hexloess", ## utilities "hexlegendGrob") ## S3 methods for lattice-type functions S3method("hexbinplot", "formula") S3method("hexplom", "formula") S3method("hexplom", "matrix") S3method("hexplom", "data.frame") exportClasses("hexbin", "erodebin", "smoothbin", "hexVP", # could/should we keep this 'private' (?) : "integer or NULL", "hexbinList" ) exportMethods( "erode", ## undocumented: "getFig", "getMargins", "getPlt", "getXscale", "getYscale", "hsmooth", "plot", "summary", "show", "coerce" ) hexbin/ChangeLog0000644000176200001440000000424113171627112013303 0ustar liggesusers2009-08-09 Nicholas Lewin-Koh * R/grid.hexagons.R removed break statements, switch fails. Cow lattice and centroid can ramp colors. Bug submitted by Ricardo DeLemos" * man/hexVP-class.Rd Shape slot was not documented 2009-02-26 Nicholas Lewin-Koh * R/grid.hexagons.R fixed bad if construct * R/hexbin.s4.R changed xlab and ylab signatures in class hexbin from character to vector, patch submitted by Don Armstrong 2008-04-28 Martin Maechler * DESCRIPTION (Version): 1.13.4 * man/*.Rd: fixes to several man pages; note that gplot.hexbin() now is *deprecated* ! 2008-03-18 Patrick Aboyoun * man/panel.hexboxplot, man/panel.hexgrid, man/panel.hexloess: Added more information to man files. * R/hexbinplot.R (panel.hexboxplot): removed unused singles argument. 2008-03-12 Patrick Aboyoun * R/hexViewport.R (hexVP.abline): Fixed the handling of non-model objects as input. 2008-02-28 Patrick Aboyoun * R/hexPlotMA.R (plotMAhex): Require users to specify status explicitly rather than as the component MA$genes$Status * R/hexPlotMA.R (plotMAhex): Replaced support of Biobase class exprSet with ExpressionSet 2006-09-28 Martin Maechler * NAMESPACE: add full list of colorspace dependencies 2005-07-26 Martin Maechler * R/hexViewport.R (smartBnds): some rationalization * R/hexViewport.R (rname): dito 2005-07-19 Martin Maechler * DESCRIPTION (Version): 1.3.1 (not to confuse with the previous one). * man/gplot.hexbin.Rd: fix typo and usage for S4method * R/hexPlotMA.R (hexMA.loess): add argument 'n' * R/hexViewport.R (hexVP.loess): add argument 'n'; other "white space cosmetic" in file 2005-10-21 Nicholas Lewin-Koh * added Deepayan Sarkar's hexbinplot.R function for lattice hexbin plots * Added my Hexplom function based on Deepayan's code 2005-10-27 Nicholas Lewin-Koh * Added more panel functions, for hexboxplots and hdiffplots. hexbin/data/0000755000176200001440000000000013171627112012441 5ustar liggesusershexbin/data/NHANES.rda0000644000176200001440000047543613171627112014130 0ustar liggesusers;,IvW\pfZ2.,_o9R34v8zeѢ!ʢEk=Z}ZE!:+5Gʪʬ/ͬȈsNW8O^jVY/~[~ǿ'/|ۻV5&{w^1mylǾ?5>0 90w S=K;7ߜ:\qÿ->JwܝWԴ;\O33f:c˦KL)r29gѕbN8e,Ωcvʸ_>?uc=ٲs9i=o\\0M:1pkǧTspn4:wLnT>CKS;_v3Fs˔qZc|??5k>5o9ssxgX~ ޘb=S{l_Su,eǦTs_>7ƌԺ~ngڽKٜ!?_\𛎁c#yDZ]O9OץlSΩ8=GL9_L1˵`:)ejq ?Rҥt۹}vTv%5\g9WN%NǧysCuͫ9tO~)>u钼8MsڹN?5|s޵K1UxM|WjȻ׆町S_%|ה9׎E:\9ׄrv-nMy| Z/W7r?t)Z5=TZ,MO_z.\S}}ϗ E\=Rckt7s+tY.vZڒ)1)}\kg]-?q(3X.1;wǴI}5rڼ>/~[~?_ӟ|?yO~?eZ}.ǟ;KإKF@cۿL4c`>vc2UsҬ7.S7^nnk ٜץKk\sf<^ؽ%cO{N{5e oj?ZssRl%wYמ3NK*_~/Vqω3O 4ٟ 1h57-uzq._j6N]YRi zc<5.m7_.5_X>i|r< oߵST٘zεOiO~_K 63mt]]'Flڼ:s>RbNKx.K/zMޘߏ4[yv.wu|{.lz 4=5M%. ͧb %9w[wxmI\o]TEwcqX_tʺؒֈ>7aiSRa]F%|N%%646M;""K›] wskNåz)p\ uX-M[X/7k"wi{h_㔟n^< N0oo?\.? {-wa^LÔ =p<yl3z<Csj;hzO a7#Ṧ^ތ[1 'G?g̷ A/R?+#/C8y| \ЃqPso:x'I }hVצּ>|{CΩWKRB'}Xi>K=Tt_<;o}D%I)Cj~?A'tϸ]?_Z_.pp )>aI}~n^+ibJ~i'Ѕvq[d3~ivr>O#aI= D>s> }koAߒG/RvxWϯ@ڮ7qi|W~fY?Wr[葢!v~_'Ёz?;_3=`ONCnз -BOsZR߯diƑO BO8~ƍۛ!<ԣ}z){;rƒ\J{?R}Cyܴo=Vv)ϡ#픾<>c?shGwW,sz{[zߚR"MJ| 7i>}_?YJi;^}i8=;p=R}AWO#7#q6#+z^x tuJ8ῲ >oE׼@k? _>+/WgZ|WQooͰ_oۮ0k q)e_pBGo{@;zyzx<>>v>B?:e;oJ~v >/cWwܥoSCſ!7!q(߉gCWrm9L G#o;s_t Kya;[wk$c+J}ƻ]+,L =ϲ(x;|J'jG?7zW3^姬]~^n^Hsyc:JvjCm/~ 񶟆^\W~T,=Y w|zW|US +s3v/?7Cxv.}+I¿Ǵ~{kW/u?6Cji.^o= ݡkz5,ߡ缞b儏S_r߁罚gop u|qOxz92[<|3:pz5޶sZ Fn"G>j➛a{A?N_s|vk|C?Z KA=߂.t_βvQ;ha|nXn_Y?Ag2ncǽ+ƭo_x#x˟S.p>s3.%gz;У!{ UgO3^_B/T<0ϡ9jA;_:κy>; _"G?x=|nvz6ZIuISuհ=>(8!:1C\ b<_ʽ՜'g;yB|G){eo7C|=_B|?_/;~W*~-/=.ubZ,k}{yzozدuZET}5Ͱwxr+~|;~>=˟Ke|~>=s~^hx>OA?*o/zN޳?[~7qyHё_~~Vz_:|?C_DZl//㋌izS}[~z 瑠=[k8og|;^}TgއO=t(yܴa=={RY=u/=#tq;s_ya{enyoq;|xsq7})^Q5[ rLS)};/^C><_^u^4핿y|oy?yug'>;;&9N.x :{Pyz_{UmG+?<ϡwë^8N8K[W~u_+>t)N//{QRq6{vx?e)?޵.>Lo _?ٯqܳy<po}ީ}e{u}RIcǮ؎;;?л;paֺ/=v x/WElK;ؔο>ӏy==VUyO{;o[{}_meo{WD~1?q:$}㐵&֫aYys8r`;fOxHϔ&|G<˳3x;x?gC/Ǔ|QЏާLF oebs_/}7Cx{َӏ뼚W|2z5cyKJC+R@g "<'uJljY߇N>BG'؟qʗ_ ۩LN5T>R9O'x_>GN,?CȟکuW~~G;ctۏډ :ܕ=;Տ!}ng=~{|v5|u Ys_};5<;z>/rh냊Оڭ8~J)-WnWT=o-{{cZ?z~~9.S~;~K=Doq]Sz=Ny>۔߳<~uJW~zw/3wΗKsUv |^yZpg'.≼:Z=>{j?z!o ;xVq=_cǿI;yoYgywKd.ǃ-_;=~MɇUxc#އ[tH=ox w˱ƒ^Q;>Cu>3+uw5z>' a>7qη9~}tI?s)m?ˮqo 5J|cxr_nGlǩ_Rzu'oCy)xtܗR:ݴy~$a8|NfXJ}W>>QAY{a{_~ZW{x:>޻g{w~9}z5!)=^uC8}'sR'o_#gΧ/S]Y^ODZ2<ya׫a|P;7@/;swVw9%wo8^؍{w9iXPϥ:}TrFpgG*=oY~ ::|Y;^W὿sYSz@^GC?*Axk3,gίG%e;GR߿v=a7?ϲ穿νi<; )ws~cf·*s*>y^5z~[l)UqgBobާR9C8%ճ23y?bo{KjPTl[{[>nMJ7jGa8ydv+Mj'B} w|:5v~9.RX.xgsۃ:g"|eBM9ay8ԾДh'v-{ށ;ϻw|ʧZ\|3 x|N yyIO?޴',9RZ?~?8kM~yzX7r+ۮߝ76{/of8 ?aԏٕO8QQ+_a3||N|c{FRzfUa}_tx9zwO_uLw/>ϜxVp :'Ԯ{SR9'Σj}y<v\}ˤ]O}·7Mewg:{}Cw=ǟ-we7nǯNs;*͇>w귾״(Y/9$_=){,xs^ϯ8qyD;M>G#xc^q6q~]? ϫ|ބ3*WYwPi9!{5S=G9i<۴νz:x^쎋؎OK\<^C_Hw]W|Jſryn{}Z=#7?{c;Hi!p}~O^Y3su~>?;=y>ک8ڷe?n|J|y/GVW/_'/y}*O^o^͓y~;"zHz!y\x`?FrO;GW;7γ<㥟V~%T]sk}~sϳ;q#k9?2zsor8sΰswO|zۿi8=L8gq7v 6vWyO>73>:Y!|.m}[y!)}*Lﳶ_WfXcqӬzD~َ'r'ψow{]XOz]~syLIZ;ߵS!;lp8fo}|~Ѝ~w\fck<8\g_}shߣ|y;6C8jt>~'o<>w,>7ϽsO;y SwgSzq:3la'.t;,V~m}zv#7;w˝sW~|.Ù<;ɛa{YnUwΟS?|o>__8鼖&NE;~I{;q4捶W7Z?:/J?Λ9_O+T[x[X}ǿ }{wgsha={'0?Y^~7y?LJgν>!qUAp|q^ױs̿o~GoO$կ)}~Ak[8u.=_?S~zWcI١/ί>]=DZ>)mwʏ wVv=Vl*C8 e~w}:}nOy/{>Y߼V˽~w^ovs7g>:|IǻNNYYPOp9A{l߼/rRoc烈fn}/%:Za}k{o}8kMp?c/+?&e}o\{ݲS2u'zx|losj&g<wCٛ{~U?ɝTxn~{fX__m)q\S>ӝ~*NT>E9}./-γxnJC)}skhy߫!~umnؿq\N'\իu=^}30Oˑ;_tt^wcvSsqZLuބz_8<}vi?Χ'Gp?t>wQtz瑽u7ϫ!!|s獭Os7j;.ysͧi?CJ;e}gO9%xx}yz=Jy^d\塚%~_ 4j}"xVf3シ6W>^OJ[:.sy{٥u˗YG}ycNqHr~C^OÏ:Np.>A;|@{c6-}W^;g}Z}M_?sm5;[^:e u\v^窭= KGˎRCxw{uޚxz?PҎl=}>bsNN}a5ʯ^u>j؟!}|z:Nqa81eS9_)oRz>DWq{_76~Gf3,=/L=*5%tb=o:'__Qw{,%!!/^v~uw>8.|j{ϗ>V}~g9F^_c4;\^m ynO9v-7oKޗ}ާE?^fޚ2+UX?s|X{5?^/W}Y,]ǡ~ mwx?t=q^\'/߬۾z^yϥNs{{>P=x^gڻλ'X +Rz3 WGc}·NMxy=4!Ou娷iȽׁ/{^/*.K)yѝPRo-|fYs:^8 ;kӜ'c;>e<uJO^Ϗ^/qϢr;z묌}xwò)}7{->{;߸+wo~}i:6>vGێ| ;齟F|/8׫!?1 =owyoBWO.x㾎Ϧc; <}#Xq>B;>#8zq#o7?=>rGM[q=N}΢|e\gX 9,w_P=l'^'|Jw:~pFx\;9a5N<ǭ5]]Am{}\޹s^{w^[n*)yS~ρw4'{Px_={un<6G>_|y89n};,yot 9^u Ǖovwϛ׫)-=^ӹΙ˽Ľ=xfXqTʚoЏ Kso{SOvb߉+wGOLW߭v^Nš6~O;azn侗wu^GA^c Ϸ_0]+*>=}eg6Cւz}j=p7;y‡z\M:广yWσ?ޯzeHyMWG8E;_:kν#{#׽z=N˹i'3+?vz5xvrYy^ozp7ӎTP9Dzxwx~u:|x?:޵ū}a:ku'>7ˎzǝ}.y;ގ?8O~띛a==yTmzB'{}=އo=X ,Yyg9}x[7Rz~g98?>o{@9*jA.\u3ݼ?\x|\y u'}I :oy^߀_!x]֫a}vޔy?m^_yc>/DZ踈*k8U;siN6vϲa*T{=<|ZM ?|]S)|i3l|)[ʾwo|ߎKHzNj)yZ}{߻){?ܿwӳwWw>UU~oӸ:[}Ր4xSc德2[cNvkݷkmp[1^^}kLl]nleYiU---nv۸dcӒw?֖ _ {-3-YnѧoO_zO}Bm޴ٕ[cͣ0İ6]ɦulYnZ&mϬS=[d۳4Ѹ/jCpm_clײ%cgz{5.{yk̷i4F7덛ig|ZJ_ӽgK>[vų9-5-7,=ޱ.[Ӈ^ؘ--jٌNn飞q[[߸o렞LuO/ֽa~_m?mtpO[}oLw{G[}zm3/e.٧Z:}l;`j6)ճA-lg=`K-ù֘l?Sļ> -ѾsMseϰy4il3Ӟ]lm>?.lm{6i]lmҶhɼmlۖݖygզMWKwXNyz:%c2m;aybKFikzikǽ--;m:[wwWu5eK?ۮ5vo n@OZ>0[z-}7c_';=F-goz2ز-ccqheך?=}߻m'Zc`=o뉖\غn?ij#zrc+-xl8{Mnw-ۓ]m^1,==-0iۣmKߖlZӭzy~fZl۷e[ng^ }lgfk:e[`nc7-Zg+cL1 =,旞n%_:' -?;]9XgmZ;=5MO=Zxpiѯ5F3?-YOk?nܼgs[:m-K-}-=e<{cޚ#tFqms[t^H-=j_׾a}K}}=x<۸za۰oM}cF}ԣmGZ{2my㡖x쓹no0}mXzzƾ5=\-XZsOy=-lkmlZ<߲9cdb~EOӺ7-;O&[|nm[|ҁ-ݢ>u ϾO^J˾d-~1o{g=b҃}ۣA z짌ˡv{8m߳-$7ζ-݊l{~6-!^=ezzl[|>﫽wV4:$k-XѢGo,[kwz[cGY% -`}g[sVlmY84v>jSK7'=}V?7l㸏Zx7?1soNYo^iڶ|,˥!m}ٲՒQB~oQmUl_kLZ|ۼHW=۴7̭nUOݖ,6=\iВcO[`o=W-0>-zde؂g_O!zehqkp,Ƿ=hqw9û* !?t9ұnuKVT=[ Cϡg}̞mi?h]5›t`[m6=١G}}ٶТc?Zx֕5[|o<{1}k{1m1n>~?V^_xT}4oQtо~#s|v.߶s}sm}-oN8o/jO/ЊgOo0n:z1vs{ov-;O>Z39$۽hOnZ2qomy%87fc^ۖ3ik[nSGoLoǿ%[1}m_ݞ~81s3_!8ϴtXָ}tݧZrԪߋvt!yۧ7i}}i5f~O&[ynM}[cGk^ ool[nml/FeϭZ@K=nu6ánVkwz%-xZcO`'aXwƭ!7k7&c>z1^={Ohw'qx}L-湞[{~dK. ÷O7t>;gikzƻb_g<6-v^0x}d~?⅞n!_nN+nq}٘}vq~g>Ѩ'[&wڶӭq~oגV_z56UO[7w ^[wce-Ӳ7mz7nhnzHŨz|s}moHb>l6-C>_Ϗ4룥[П'z3泖niѻwtvݖ\y/.ٓ-L?۳m->LxhvH쓿ksl_1s1}j瘶<[g}CbXXnjݧͥt==}Z=lR!g-ncޓuچ5Ug_|:gO{m}cjӂCcks{X\ǯoN=b=c^Ѡ%dGyԡy~O[Ӄz=jq.eh_[[lӦNϮG⼽y؃o?%6wHbk{}l?ĪNiw݇Y;ncV-J}z>lu7ءC_P^ǶDZ폽ΥשkoKӹ|4u.sSM5S{)8k=5_[P;s+S]sۥ\=3u;^O3K՛:՞jo.}|w\=15~S]Ssc?u0?ySkX;rNm\Xy>=v*{Kũc+gsqJ΅R=?|ۮ굮SSS?\vhj_w:Un旹MS_S}]z\zt9Sw*;0|ӱkכ&KKgmpsS?wku~ͩtNw^}ޙއX=27<Ƕ{>}۹X{߱Ucʟz^6jT}m:]_{z~=wj;K kq׵u}M5:qjs?cۙK̥\ױcߟԼq.X~K?/5O}T<ɹS`j{k}έO]cc:߱7{ Tu.]ڎO=OO~Z7~^slKr|p*~Ω~pKѡkn{5|?W?KS.MuډST~gn>:/4>S٣sS35uNXy*|߱+OǎåKwݺ5xyƵ\ztNkn=4|*tk¥m.еt,cƹ:;/^ۿ\t6'8xLscssm]S۽s1ӱwl;qkM\zj{)}.y|Scӱ6U|sjy[z|uvOߥ)~]}:wux+?K]?] ũץq:c\xM}./usxo.w*=8εs+sO澦յ:v.NOYuun^׊;.u~6W\v)k]cNq/5k'约#/}M'\O=KKs}nrKTO'8w:]<ظȩ_꽩?kqkip]MTr8ݽTP{νo.Y|w\^O΃ ǩRu\cǩԵ8ϥc`8T׹qͱǥ~˹zhqi2W<ɩK۱]M.}]kan;8ךL.u+oF8˹qڱvG?v.});uxıES\3^ڹsߩc*{8W\?gj~4.8M58VߞOOġ.Sɱ_Z*\K֡>Zޥ|jylSǻN#. ס;Tqcj4{ϱRsZtYri{wi9~ӮKTϭ/*w?zZc9֏;\~q>6^rm*<.߯ew'ݵZzv.e>~)~8ןKk:S5ݕqZL޹T~α퇞ϝKKOt{{*?_[~~~ձ{~zj/vsϩcṔ^=u77^?s=7u.4ݺ58?{lֿ]>v~yl;c;޹ץϩ/EMݕRp.}4US7S] Nmn{qv~\޵={]ov-eZqk['>??:~95|Tqc۟گvqo;ߩskmk]򋦾t/V\<ko*/}ypmx ]X{ױ?CzJS=:֛sߛ ޻^rC\xZR=kw~_o*=M\Vumy s ߹OE5 ߡߧ~wi{<{Rze~Zp]k{l|p)c{c¡~ǎX8c۟Jn. ϡwn;c^7s;USvmPkn|R:7>kjǶ{Cxqj\s:N>~K̭ƶۻ.-S{躴9]߱pw)]צr{_ޗ}9wum84z:kc:׻?ޱM=~Ƕsl{c9TPc9c۽/UΩg:\~kw_.6wcۙK;{;7}Nk*|jgit?ߩc-\kipzޗ}9%snS3~䚺}4y/%ֻ/r%׵6~;co}*.ϩ] Ωx,ܮcx]ksWR|XNTxwX~~nKKmu=_o+2>oKuW]KccR|r.|77?|\|݃gl{}mr:U/˷wK_CO-colavշ>/ Vr][ͥt]׆lum87um8T \SݻNs,c;c;K?wcwss5^,Rƾt=07\\O%KTp,Kmvcu*]|l{9S]͡z?sǩwc%?c9N??4R!xk.?7=/TޡUԸ׿{MEc*cOSnk{ylSc`.q*?+scᝪK}._Sw)-pTki7Ͻw.o*8k*y6_NGk,Lߗ}\oK}y_ޗS\Wl^=3s*: g;S}m9Kש\O}o*=q*][oޗPSc;^wjq,߫?\t>sZr55,/k }f\?Z*n~on: Ϲxcۛޱ΅wjץj.~4u[v55_;nSs8>+sS?Oc,\Jw \pR=wǖ?۩\}xL5Ǝ/?~.\=Vz>:/VuWw-t}y[/ry%׵Xzu{_Kkñ4xPMkk{5S:?]ݩ|=8ӡzsj}vn?KxKk̅R軴vw/rY%\]\uz/C]7}y^ɵPFk}_ޗ}y_ޗwusSS=Uڝ/7ul{Pc8Cc/߮pܗwumxk)ܕw*߃$x>0Gtɟn88|<ΌU'x|^q!_ C|~Ѓq|Sq^0x|'_,%pA<OJϸ/Wѿ|$|$4p>K{Y}~x3^/ϳ:N 료giE1/Bc7_Їz5 ?>@/4^iiI{"iQ{iCOO7|yiڃ rC}Rz9|8>8#l{qȧßOi=>  |*|:`G~oQ0bG/^~?xzy;ǧ.> ߃ϓ }zPnћߠ/Гyϡ_9E^F7أge=\4!/ п˳2|w AQ2pC_aЗq_G˞CÌKєO"G_<"ɓ^wqz!ݡC5?sѫ ?|0Y G/> /C}>bsƋc7r:|H{y<"/ѡ7vq|v^O{a襗pb0^aYJ-㌼_z?x0OcމG|O#`oKƁW/ة)S}o3_>=t{/+#qދg񯆎){#Cײiz9{BO<||= e<@׌;ٓz_`W<^K.3NЏ\@y}~-53Ra x }wѻп3 ?};r'COC }<ʯEc|<}J'8q rN?s0h﯆|:o߳/R%rxaB~|{0"|? e'Cq@|: Ǐ)c_~ߞze]>{>F=Ů7F_e3 *cGs_9~ͳ7vC`~GџOCwEx?&Tq3]B<FA|i~B_~/5@N8+= O/ _Ў<{gCOR/_> At̳k3?/b+>sS) 1x5_~s3]v*]O?g]^f> G7~!t4xc'+. y^!*>= Oě~U_.a't/8[@Џy9ϱL?9[5x420 Wq<!Ndg]z#e|X/0pH=xOi ^2ie<2qƋZoH=[ ,|\GG~G䭰Uz/ԺWu`Y+~ IyE^>*>znbL| ;Uq4"qw/dh߈>Ժz8>8Y7xN\Ԍ'zZG Wاj~7ï&RٴcW |?_<|> _A'e'tf~||OO*^ ̫+?;#Q∥'UUb?@O'r0x> ۭxri80D_'_R/t@ϣoOBg8'Rocj9 T<4:P7By87v|Y_a}ա< ?G*2pNX/~7&t*~ ?b7i;2>}^ij]=p}?qb\*+9f]y"yx?C;@ vxF7 M;Yb7_رơiyQ~#^yyE~|7J~ȯ"?*=sA5Q{yno zq3 \5/HI?-=W1'yu}^~i%zA?_yZ q!K/XOd>_I|Z`WG'CU<$bj˴G ~9 }ȳ~$dg_O'{ =g>C8F'xgߕ|Ydyi?:xG1XDj卥?| }Goa_+!^y oE}#n]G_W^GUq/xBN7 Wxi?푟2UOCOχz }wd\YxP.J_f\`ߙa> _LkS`;^j?f~EY#;q+/|qAA/xbOik_;I??2?D/z>y3ɫb=y!"d}ס5 =~_A?Fbo*>v.#ׁrVӁk#k_$/1xoQsk.WmO$>|<Zii.v{><~^gYq(}*Nݥ}hā/='шy/Y/Nnz/~|~ ~`+; >~/;~ yaǡSͧЇ?0ԫ_2(\e/䟱'=  3zr'>ғ8W[SyOc^?Ty?y|1&/Bo'#_ֿg\Gbk5pb'0.#o_G'x}3yw;k^׈[O*2Ǯ8)xG`e?o/i/x^' վ>\|j/𰎀Ћ<{W|㏡Oޯ Bob3??k'Eg#gYݼ|8~G' e]Wv|v~[rEO=|k_7j~uґqkuc]yHwr_סI\T\"te;Z_A/wgQy*q͸'z} ~^O>*t7(/?_o_O{f|E~C7-$S-0PoA*_!᧐xz(/7w`? yv,GG)!Wr=_7ӹ| yF3*!>nz+2{Ƹy$ȫ9u ڏ0?u᠟[p\'/Cwz5]?3~+!~u |zɧy? /U~Pi8KB}7'y^#^1>KoƳ~/ ̿9g8wP8G8g\f]y?ҟ7hA'-{r﫭}u0OEV>6b8ׇy܇_z d_O'J/z*i7:w% eg"e2n< Ժ&rϡ7vTDgSC;|ހGxt ~uy J;}|ЗxaSŧfu!~xڅOC^ E~!~;y*yGܥ7g٩Wqތ NnoެӳYdEykŃ'"ɾ1v \+3G}y j_r4WA7~U|nTe\XOkf/'PDy)S`>F9y=C f]C=Xp7V~VV+&ZgC/ׁOgޣ?WkT+GnXǴ_ߨs::[qz=G ?jw.+ʸ־W{o@:WU1~sg|u~e^M~W9=o wF/qʫEoǡ70%5?H:}>|1JRwt=,łQ5T SyIv}g_Qd|xrR>;jGwa'J.CműC?? |>v?8OGG!>?v<3Zfv_:~Cd廦>I7/ *?ya~ʳN=m{j*g=y<?y({z_ㄟ+_? pOȼT܊*:W&W6K.|;Ae|98FWOק=GTW>>8kwEO/O>!]+#WWO ~3p~d~Qys4Vʯ }cãW ?m{5_z>2r}*1O9P/q7C<GAڣ(`?j597 \_Ny 3Gs>t!^Y^s|Cf*9?|/urq)'p[NK_=N\52/#c) v@:G`u^}RWn|^X%OyNγ='x+!^uƷkd*~6v-t%]矇ڴ璖ȯJ/0O3uoF؉uzēK3X!΂~u7K+3CܓXS ߩg}"sn|X^Z Iп/)kve *"87te3N\eɏs>\?~C: #Gu>F-}C ;U'C9#^Sؑگz]:~ |Zy! ԺNUxe뜹[^ӡxeWz@k؇xCrq|,p;Gaa?7):%%?A~t%NƵ`X. 腼}c1k,} <_= ʟCcScI :&xcϟ1)ˏp?"oac[%b>7G9G$yuNr=L7=ϸ?=jlc_m/fzW峄/p2zy)U^A/ T<y#k}5xԺ[A<:<Q]gGwg8wC:oS :_~~ugƭAM; G僧=ռ"ezLv 5ߋWZ2K@zuN^9tw1^nPګ}5ċ=%<+wC;ިЮaGּW[I}/"@~d_a_"ǧ1=+ kn0󉒋<'>VV9|>e}\W2_:VCM+|ǵ9^=uNeکMZ< ykSRyAwkW(K˰ |:8_.9^WqAr]Х]ơaG9yǸ/u.!x>q\N·r؏S2_#}y^?釼=ġj>G_r~3u_".ۚ>/~D0>.7 aw'pF<>彊D:?z{ _r^Tun_q>AϺ'G ~?]y?_Uf컬sӠCa,vЏ߉GI_og#_8'q7M~0S~ )=8 tccK?E?3O𓊾?{|[*4>>?=tCi/'j?S'}> S~ԏyv*>0 =3*/"|^,tETzv^|w׹./H}u\е2~#|v> U^G䎸#ECFN{}$bk_rƕ G*^<δG>q?~9niÔw r }k~by^yO1ƾT>0WGqbZOK뜕)p?^n;yCگy@/;ܥ=~ !Zs+q芿Aԯ򅏸/x.JM'|y΍/pfO`rV߳P~?/zs :C?#I` G7yj?|Az7_37s+";xAoƟxX~CGF~r '}]~f<ڿ?:<0C7 _3^?ůF 7Kz!ǡ;yD7p F>xVx^{U]O*o235O.E_o73>~}-g}Q7K9(8=y>3.>7Bcg}W׆8_ngAGCo+N8笻SscW_د-E;K}|q2_|.|qq|} ԏ\/7#ӵΔq7v{wuއ}ڸҮ-*FHD8|H<3CҲ˨e[ MwZeYiVh*@Z (xQ@EA߉~\:׹udgzY{ɟ_؇J7Ӿ}i: [>SS, =vÏ37_FT p칆]?2~yJ) l~=tq<2|Nވ 8;Z;=Nif\(::>G~?Z}!ߑw*~/zro[Ao|SO[v)u|C3 Ϳ6淩 Ih@ɋ}z=:7~rK=Ed\7=pk^x՞/| 427#̣$Oiߐ1w%}B)g?|=i)*xwګ/߻WÕ|| ݛo&pCx KsC[vSҧ$~Ye'G#_?+sds럮Rw6ޮ7g}x!h^aOK#a5 4g~ yktNbO _DJ޾Wݧ__+L^I|{_7|W)8V?aOW/j/!c./J39?ہs |]3yO?s/5i#9:hnӼlWC$YB:9JOWdNیŕoxO? j>cҏu|<o7_d|('oongzyCX6zoZY5^+7s#лxN~8~tt\ursO9PGW_o׮&_Bgi~'+I{7̣87~oǩW?5:{7_ou2pi~k|$ߍRjߒ?o󵄮~ |\o~̋__|v ~Iޗ|%72|<;`'p[ {>1r3諒7Cǥ=A9y/r4 ~y<.2/ uT޳W&C|o}E;GC7'_duϝ~"۸? ?V?7h.{?'%|q?8xxYa_2^:Lx='Ǭ?z%tcnqv>uy(Y#ߍߡcv<:~$c<|N H=oO?:΋`eͻy˳Ҽp{>$ugG:q;7YvI# =Wx3~gƙ;}DO;b93ϞwIHW{,6s|7x=ρ.ݣ7[k].ΩtvUyȇ#.=F+p4yotuc>ֱ= <0>r:gO_4eAo i |_ikW_}c|ȯ#MwyysE7A2Ư;Y[g{yd_msgy<\,?+6Pc/4wѡ)cx|I{Nb3>v87"O.iD4=~苔'Np~;ϸnN?R|m}sLnΑ6.(ݥWbw~&o]"~Os'ā޸_}8_nR?^c\E.=7z?MKy#͗yG}xC|4>-Ů W]"gn$~'g?9L7: ;pN,?d^b3=zN4ܼZg׸/1xy^}nxez_}_]#y}̇fGXwt:xTdW~W sv'xk#tlOu_}|{wi&xj<3ݴ8ڑ#A!\Co/&=OK/ܛyq Wyuȏ3r _e{W >!_ݷ4ΌNg!ǞqId<[r\{]U.(WJNxȗwV?Z|~Czwͻo/>U]%O4o`O;l{|K}ȉƃe_\C-7~A <{n"Ż g:a ~;iqKwK?|3pA_BgޛS_d݇(>=e\mmO&pw|7^yg]eݪ^聼 ڟ}oF.jDۃ<-3?rd]|]xghIWg\_|_H'ydtL>#^788]:k -ռ_;iMϋ~/UcC}N[5t Ӥ}+.i%6ϟKIyWw%z=>E6<+w|Ȯ;^${믏^9}_{$GU~tCM,=];5#a$2#x ?H;g=_Bҧppuyƫ̗^пͧGIk0\Ȍ!W׺wow4fڡ?ޏN^zwqFI_udХL]]ˌy6?Oqp_RaX3>8zʸyAw?/8ݟ3v$>!̟_Q/vWwOs9g빝׸?c?S#?q:2ϞS?#4/Yg߃ϏD\yIo_C_}h}d^|[꽿_2~mH!r~=xqSE>OazxHO+x<5|Ǿv*Wm_x{~-Glǽ͗4Gqtq>s9#q~H\Y^G_=k߆.;ACR/ \KJr<+w!(N]f#ؿMԮu{{ǰ8BM?wH?{nqoQf[v:WoM_]wGt87n8u2oEO7pjx -gpqoi̋N>r?v^YvPo\}6O_Lq4:>[|^/v {:z*Y?vWuܗN3Ny0z7o1KS|-m\~W0w)=>3^z|o]>vO)qj5uy^? ޛ2 ֍ /K8ܟ"1o_>A[/{WڷjKoWOoޣ>;mdG~?#4?c;ԫ >˴ %Ƴsut5KH}1} |z-"wWƇ;Cu8_ߐ#k9px{w>D&igSgUؗ3?&YCG빲'v+;ø9a!?%/}B_zOl~{AEHW@ٻU~֌|ϯW{>j_}-W딍HY{77~.ዞxz~o|f_s+ph F?uEG.,y5o.W~!w}Ml>T8wi ~&|x3Ϗ>='nvہsn|˞i|Fnԣy vuS{|O{E+CStsc.6'_%wk^ctn2 |\|ʼry2ϼOyq?ޑJI?NIqc4~<ԼeRNGG*p~M#/}؏yg&^#q5`gNGσ]O6z^-=߸ɝ}B~-pne7ҧ{;x/p6ȼޑWXԏyѸkN? ;P ﹤9)H4/ ~ OD>w3ot_?py{"ﹷqߒq\q nK)O >@+9.ɣ tK|/3?#y̳a ޭ_3_]Nߋ}ہ#O`ӾYq6㮽o.|] 's=ZG߆2鑟3šu)9{B~}w]e~`{}r<}^N#G=x2TVwG8د(}G~]߾=.bNiT~2ʇ̧f|ͣz+Cgs : ޝ};g޳8yv?H?boݏ ]ا[;ipϡ'#q5DEBe^[*M;=π^9~gŞ/?r[w;vG)gx67*L=_ݍH쎿O\|2Oĭg~F^ 7; ]u73o/~OiUq<*ȏ֧:g;ίsu 6ȿq~=^7?9APO韇^YeY[?z#}yYwГx= =3''zOɼjIwwpop^i>9z/TV]_ϴ~KiߐA60߁O/ݿ8>;gx8oqocUSNӸ_k 1Y g)3;8'άx͋{>z{G|Kϭ%?y |g/qd>f}.^z4xICyydiKk̇|z;?tTSqN_88 ?7y) ZztyWxg^H~A|e齃yFv3#~2yC<p+< Ѕ~*}884z_[Dz!`Ϸθ?;zO+Bo{K=4oW]Y/usz;|~Ȍ{FB+g؍>ٱ\W|_9<_Oͅjg1y,)9wXGy{`r= -a~@_WT??VBOáGqo,qۺ pymO<|/7/t;̃]qF-u8ygK_i|{~'rH{vu~|#_>C}ռ7kq4_zCGƅzoSjo?2^Co[qYG4v6 ecW*s(3>!{'#i~Y/W82 ~qp{6o5빊|)Q$]KRc'z~ȇ{!Eϛ_J)|oث|_|2C￑c_|+|7_C7Oq]%~}oa_;H}/{]~Oޤ}̼+Љg_K&w{"3846NyO_u,E۸D݋~~G3>hi#Gz`v1{R;j|s7 esoKO[VzZq+v^8nSzW2Wϋi3W|r޿Lr~2Bڿv^2>Kiv΍5~8KyZ3y>RrWJ(yޱ]px!qʴ>/xy!gݴ3ʹwܦ4Lug{{v+e|R]M;RW9sy=*evq2?/nn]:z-=𼍯2;+7NO?7'_"/љy/]yF?]ʻW|rt_/eG~ϼ'gR}ޚ:O~^89pgΞ?{>r^o+xp=;~g^/fw#Ϸ/fw.y CN^Ə.81oyn<{~3#QqS}:B 7&wk~xki/#zy~Hr&/O\ޑk??CWN3/?r=96xWyD?Hl>/vw~, ]:/} 7`_WL֙[;=GJ_v8 r:Wf~w2/xgϢ;v+:/|t98_<4pb|G*WG/9ws=]N/֞C~'x:e!7~y@״?W{Y(?v_yz eLc;|; {7g֕/dϮ'ԃ7zqKn8f?9E| +~V>uD^__go}zDW/>_:% AUg97C3߳dwx*gt=WߐxSp~"_?t}n;wƏr'헏g53ݗCG8u?rr+{/yfg?J A{i\:8;{pO/7]9~pu]u$~?Ae=Bn+C$&k^o|4ջƛo =_#gCz'Zou~Kg?'݁#w=qςi>Nf~p'Cy&jW'xχG..H{]Okv p?:w]>~Jx{ ^C՟:~ugw7.|B_J{Ky3x.ߟ~7t8n+#)xԏ_iHkGiqQh=>v!B %!'n~&|8?St( >$_[?9Nn߃nM9x#l#w>\6Avg~#_ \͗<ƣ_cGo;:i!B/|n3::kq g#|ɝ㞤)Ɓ;|l)36]Fݷp}Q|_7^yq'7Qy8̻ }7o{x?OB;qv~yR<[[\<YgQ G?79[y-{^+?GGk__K]>΃p-8/?+oƅwq(iy^kG5CLJyWrN~O6|V9:tSx#S>7)?tK:]z.W|9_jޜy/Jvy_>J4lK޳W=v|H =,xR 7:<sgOM7]jv?W;|лy|p9;L/>|۸z q)Ө?L;|8gCkM/x]hSyzy/%>~<>};p~wvOtvY]#/~3{ɔ9~=`|HNtQvK|~'.ȃ[_عN7W<]97? O7't ~YKe>{\-{<ΎF83v(ƃ=\7:?SwکFqf|O|n?xM;]P}r] BwJ=Zw~{L}q{3>l|>;߷qWH졎#97ίsjg}G#\{Gqg|ֻiDϐS^:#.#^\//=WߛW7ɉYMH;{zj| x}nWxU|?άF䏸]{r]g.qRw]Կo^Pn3G//sor4yC 3.ԏo]y^9U)ix|*GɧǯQ}k?՟=/<5yGD?i O^om=|_1rZ ^юyg\yN=z= !Q]S?c5/ t腞Orq&\Q/<u7D6(g$}8Ʊt9/p?z/Ncx G:nDk8xtݸqT.cB{= WNG9;~1k/ƃngpW5.= ʞ>V=i~Dܺ|gP+C.Cy ,}tni7WD|2}I9{_lo{]tGrqk5?CO{{ [~?çz#^IU7.# -8vDN=~ܫtw|~S<o!w={~?Uڱ?[=r ~4_y{Ǻ@w$/ZgqDL?Ƌ^Е+I=~/|霼K;{f||W/_5qG}(|6.|DPkEI8K|п}!t87xɼ{?5 9^(y)BN;j"/ tyb>? #wW7]c_\%/;rm><ԞCm>O{kW.GG?iQy7H!L `y|/~t݆>ϐKak|6pumԷI7> =f|sƓy0[u>>/_3ϞC?]~=9:_|WFV/̼vG^Vy{8@qowxo7qI?~$1pil#kǧ9ik<_ wRAo\Vڵy(90R;3nx~6΁oOc{6^|q]s533IoGgrM|M#7/A/~gïLgR;y'C^Ԯ6+;הl>|O~ |vo4.|}s?~ƿy`x>~r:ϼG4|G7'9rv-~q#͏uo|eA/ͫ{XuiӞoN60%SyO5_|{kT{(GJ?6;6Eiȭ3pYhzg73鹕o|0~{(C5pmrxR>?Յ'An'ld]ܬyNU9vg~Ɖt?&6l'tb|{'OS\ UYR8q|NMz>+_=#/]~ƙGOLw$'k{ey%<kN|}Ryn\]+vv{(x9-83Gy~KJ8~W{@)Ѽ= ?pj>t3q$Se~(wδ?iz<zy_9h96OWE|ޗg~";8CwGpJWj[t΍3+3ћ7 όCIOQ;у~L>MG?aM?Ox\)kqSjn 7ylgv|8_ ^ ݋y](G7WIgˁ|<>i{}"N;Rǧ>9.)2Nbډ)~2~6=1p\ ?_ڃׂ_W Ɨ Orə|9>G^",1kGNW2~r\x./|y{|>~0혿_Jy9]FOt|5|3^y9\>`?|5/;G@/Apwz#W;+n|13 n /uq;'I#x|`W?~%I3)}wloسG{+b<cB({~<%кaU+i^?BgGá{v;6QkSٸegͮG}Ď_կyfׁ;7;Km+)zǣ<ѱԝaG'%ebJr>xL? ?sse扞 2.]AǕOg{:5"Sx,|y[w_t5|Apzב3ciOE'9cyQ}~,'6oF(=?λOϼ ~iJNH[a\o;?˷yg!;um !oY?Et8OwBοYGk?WރxɁyٕimpJ?tfo c>y%'o!^3h%aOv@7%O{g=}g\u";?wэu"uxGt8޳)o7wH|mW;̟}qzӎuc?A|}*W?r2嫁ڏkf=ZzG :D[z}z<'<9y];>'Y_Sxׁ7g>k39/B.㞯wWvZ6~Co?igW)9HoW~<(7Eo/r#\^}}ib|b^k^J=߃7:OtHnw`GзqGD?+O~Jt^:Dʍy4me)^?S_y%/Lno)kq5aC3x?@#r;_gy~[q:ApWց٧/~:qLynH}xώ⇻'y)^?ؕ]|a>]W3tUNig~! >'"/o {O~qKtI ^=ux|/zE?|Cq1{vcc_C,ߔg>!q84|p4 Ë}W|6)կ|{z_<}zEg;|!!ß^|nl?ȼx?gvOi޷D7}S)w I'|@S)|v_<~/[f~oIO闟Yv}!477~r E~5?B?Tϔ8ټYh u>,zx:+9q[%D?O&ci|ڸ"r |댃w%KG;i3FN?ʹKN\~o3Ni>3;z}FCO~߸M!%{^#O?Ή4!ߓWH?*~# 0_p"W/.'򊞮'O vxB?|x!z\?G^~ӣ/;Hohb7g脾o7}n\}8]8;6:C/e<ߋy.Rک~W;Ʒ=JU:ܢoKs=LR 8oǟ8?zš_97ۑy>zRku/{3pe'{#<+q]1 \79.xJE{w>ߓ-:O@X\{,1'9J/Zes%{Ci#CU:\asYcoe~ ɳq{<߸w3:'ț~L=v÷ug}Ǟqxo!)]8o<O.? *طIr.A^qyoѝ_z~ri{ƏZڭ?? W71ƃJy-_b} 7.xWVbzOwe5 /W_rz^dݯユ|9|%DO<'lv7zqߨ,{>pƏgksOi?$kiiƃ9Qt% %t_[c~ ڸ| H >݇'of|gɑåԳsNaW=o~_n=r-rȫo>x=@ >_G<#8X9 'wBGo5wg~`깇Գ.; <7^,bG>S'߻—'o~j5s{_2/[k[{=A>~fAҟsčM) zt`uH9/>|u%5ߞ^i7&{=Cao7g/ ?Ӯ86F}q(O?:gl7W ~/+q1tϫ'ߑi!U=*S^Wp+^v!zv*9r\}>Ňn97#<\sڻ9n]xgȾ=אeXwt)gx&o}?pj<GÏ?c W*[N^!|R)^ɽ3ތёѫuƱg\x;k[GK byF/;z }O>×W><i<>{WE7Cv-L9^z9߿q~|>ώk_?#G|ԓO{LB7)e}s<%ħ#9g9OOiyS=O>7z~ə92J{?{ySfܷCGE>wN9q;i 0|M6=5^}0>YỴֿB#{ܬ;4'$?Qs7Ot=t(Eۺsu8B&I{v"}xeԗ=g)z_l~Kvzkm}ÜywS~iKkGp{~}yejg{h$7_p㸚$eQKY?~pk(r'U)k{tzIK(rk\pSOO ^+?n}Oѻ{a=?[k=Rc~/z^GY_~]~ٽ&oL4. =gyɓG>< >kMCG}.NOۏo*/_ž/r~u=E}@gk]_;ָGCDgN9z➿}_ {ͺM;cW#Orz qSG>Y~/:Jټx?Cx̸Mt~?V~e><`^I{-ɇͯey;~֏0ysG O78po+r'{OM?Ks~67xSO/Gߥ>Ϟbh^w}OF(>J3ٓ_޳s3G<9%|{{$z~ke7rSo~?eϯ/3/Qc1{g?NC\6<3w@GygG<8y8մy]ɋ)㽨|_lG Yl>0㶎bksc7=rH{|ظ"/ȿc]gίRv \ɁʍynyOo v[6oKLoS0?gmڿ?{*e~=?]̛^u+=9O ޛg r3GOwh}%C=}kk9g~߱KQ9<7Ny|9+|^AA]χ~wqyO.{S[#v#z{z]o)=/K~4J}e?y6>le ]6oeܞvQr}SUx{'*}TgZWXgwAƕ=__JA7|DG]=LY\g ^}=wӇ&ޞkO}ߑO]~`&O)Kioyz-<2j=k . Kys"5z>=/G]eEY;W{e)>||7NG&? 35>|Uyg\~a_7#{ W~K֑>Y^A/{4%WyFOyO \m͓T}L2ﵧ^#_^ccG~D3Myv?ߠ'z_ߟу~j<_γv멽w\g[ϙgyGo_gۇYd\LO_z?垗&2_-|D^UͿLGzIiBm_yÓs~|>1>EqVP붴q)ms3Ǐ?R̘7xΧg~x|~ƹyV럞j\]K5/k#IO~j_;{S}|/z<<{{Bw~|Ͼ@ugצ?o>s~zk‡M}p"|F3o?)o{t烼wks{~M9c \ӻg޳>}i?/i~tfvyȿKc+k=ON^P;b<qHG7r9kG=͇.{(/sKWͮt'R_A/w{Roq=o n/y8>=?!;>={7/C'/ Kt Ko? ?wGQYfG|߅D>7SH^ySf?^bSvVn[]=^"go>홙W<^9tu]ow#/>9ǧ W{vO\1/ߙ񰯭е~/l)ůw?=_zPzs܃\3IS}sԯ~:̳GF7^֫jhھq=}7ҥ}G/KA)k̷q ~Ay>9@p'OC{^l̷ag40\#ޛ '鏝K#_2ύp'߭/x~Tz+^{^^ ߚ⯑s_]l~}4~}Bnm>YO 2ϼSy/E㩿"ޑvE'Zӫs~ܺ<i%5u:G`Oys~dr^q8̓<7.<ȽH53B}bg}j݈/Q{6Ɠzd~dn(4>l^O.6'iMfzbm|)oR)#o.c_ĺy?_<}ݽ7jOcmkdww3(]y_^pPރajM6v;j 9߱噋7r %u4HO\Dbϸ6=b?~ޣ~[irrxX5p?O/:{Տ;cyO?>;zw?rƙʗw5X:Gi;v!Eoz[J~O8wq_W)ۋww!y6k o+{]+z3o'8K]ޣD>84-MgyC.vҮ]=|"O;'듔q\\ƥGGlt|KI+|M~7a5ӯy4NkIsm)7 \_YW67^8\zO^ >ە+7{qq9cܞ~Li|ss<{yxEVuĿvgތw}Oww~NC{vk2/}oơx|gѼ}vqG7-{юPq^ޒ=_CnqB5xSzJn*:2~r RϜZ{t}qorvߗx$%Y?"|M}CGN{Q9xO['G=v߾q)/ 6|!z!+~>??%}~p4>A/l~y쌣6tgv;yX{vk7?[x t}| ~q~R9p=?o B'5G`}ObyZ{G|>OŤ>m~h֑^EgD঴k^O=~.+ڸfyفo|vC'rǸ?7)ŃY779UW5o =?1?cy&O5? :Fgn6{W;ѼAw8~jsg~H7rٕOonMㆧ|~/~4|vڭ_hQiqS)7^4]xyݮ3zǯR/@Tsw Y?)W7 N;7JpO}H~_|s CpM{>l$y|B3_:Ji]W#goUXߓ=lx/H> ?Ưiyo#OۺGy۸ȏ=/:+1_ \*_8_M=qt_4o?$y(ɭTig ybK_O5+^ƣ^ʯ<?'ߙNo>ϕ?ޞoIaP-Xt¿gq)ꑼg?:xegA<7%;%y7>3'L?2{6K w~pKI^{a߭VyiXv?xib]7I!%;d5/ |_ z{f|>j[3rٛbh_[SOX4oon}Qs'6o>]`%'{yk~ⴏk\yŮ oؓ?O!9>_tN?5w| ƕzˁ.zn\K{7gv3ؼ7:,qx#wQ5AϻorMϕ9y_|Xgp{mFne1s6q?xclr37o);QA׽|_t||m}9vYm`w}0v|mc_?X;{FyOkx^FN4.Gьzk㯼;?{-wiFt9Ǥs; \{}@yF~uI=i|qzyUJx]#ǗOHi]Ot_"_z(ϗF>s?Aoo~yj 73ow9֫g7ٳWJv2|l>UJ>xWAN Ỵƹk/>{NWI|x;h7q#oy/ ߔz׼$y~zb^SO^yKaKMq/2t|kKy~j7e]O~"w[zvA?Z'nsjo}vVkh~oz[{YRt9@_։='z٣Gn29SʯGiaߍTyy뗞"O?jWdn]7,(?s`yf<C/zn||?yR;ntӸs*yOïqz߼k/ފ/s\ROaX7Oeoߡhg\E?TwuyL;r+Ѵ0obyg/zɯjiQ{~A~@ks׵g{I7]:w} 7><阮߯Ns;~\xc7Y?C;?D~ x+q#=j|DGSy*3naG qo?zj^&py1F> s^/Sɝߛ׿ ?m ϞS3CEL=zJ=/t|}ޓc+{nx6~|g|{^>oezIQ#8V@H+K#MZKMH^&<~3ʘz& _2fI2 {~Ի[A OzT.V[ZUH;Y{SB8ߤO7k.vO{9v)_ѸsOߍN{>>6?sUt8{j;/d ~?wA{Ji{'O =RrejJZ}=!N.Mڵk}oL9?yLyc/e{'S]\_ꁧ߂>W{Otޓg]݇wy}ˍC?d {yy3x;=o7ظCk /;?US@'wK\=_ ~w" = W")fp{O/^m9~h /?Q{Ol@2_̻ƃO#r-C3nϣ RBgșЇ9 %O܃C>wonRj\=ydwwLo?~^)qA~fb%8%N"׸=jo__?1呓O}_O_SGS떔}7;+;)csI{A%^uw1xyQƝduI3]'$m|~}>RύNoRؤ=&m|;vH 9x|GG}f>K΅ziyX#xbMt߬|^o~7H;#@!OUN 㤎d)t\O+>l"X^C.(r)>tߡw+~lqE~ȣƏj>Uw OH1~}]i<H.#~784>ڏ\gow}DnbOW>wǼ{~P>DB)"z}-z. n+~gκg!b<zBxv\{weމ)_c\SA ޻@?[8z~& Ns ]|G_4N~^RqcޠnA^gzW=x|B nǢ6%^TWs]޿ 7O_BNU?I9^*bWPya_ >-?v2½]|]]/B/)Znѻy zz]~*ߐ?/v<KWث֛e~/F9{)?*t)y}*e?/7"ߜ#IDOCOܻߙݡww;+~=K÷/o\,{Qggv~%{qZo:e>?Ji {m{ 9i9|1AE~r><՞O =3zV$ 3%_P9 ̸|OnO}?:Nf]_3ߥ申z{n+ g5vj?;~\Y/\Ko|=ッ|=^oDz :N*)yOr=|'`qw~'$ORhE7![-о E4){,߁sSV|}C{zDR-N o~{+zSzsDn2)ǾXϛt}W^?g}wR?oT NkYtr~ޏ^Ň뽣'boýAqOA ~Bϰ.AOJ}Ǎ!Ϙ}}}5ϻzzTz()b@ƹݯ{]i +ߔC"}oZ|NIFW1r|&O<݄΀ݷJ{Ѓ4xh[?S͋Y78 | pSu7G|^h ߎ,2շ{X{Cc_A.ԏ v/n<_:a{S!/5n=.iQ7?-^||ϋ\7_D|Zr&yd'>oTw >zQ%얾!g75^XWv-yx?oy8H^`9^J.<'ba_g][G t8Nߑ)'P|¼_rxY_^Q~o;~9qeޯb'Ct'2з,M_Awɳv>WG}^oAy08/z}w ~c=; =n_~a]U)wC'ɣokt߅D~sc"*9їєg>zNq%$7~\=W+_/>w?D)=xOW/ ;_i諟N|SNFnߜc_=y\NN9On|[E?OWzDCo?y߭[8 }UDszA{*7x{彯-rM_{؇ۼg=rl<ϝބ_ӏmxJtIAƋ<™qt#|؞r ?~z^AMG+grc%rLQ9|ϠOcsk1CrǾi $/cy87^?/( M_xnL^'ImqgOgM/Uo$oyq9ެ?6_wӅ孷dzI$eW7ɁOF;ۉ.ԫJPpLv,gi~Ni +ӱlr֗詟<.?'9bybP:xi}U{fm>Ӽw4?y? sͦwOhޭ›]E3{ޞ-6ukk?cy;лjhoNӹbZz7țnk Oi?K.{ |U mo~y|~/1M>U?[~kѯ~r3rQ3OMߔ+^>k{~ͫSո-׬6ew$<=|qOu8مG/0}m|7[x#?h牏,/y>qsCyuMO'yc_d9Auh ދ>o~jdo1n˙&:]u߰S5ӽO|ȥ}7\k֣и&?rh j{7f'MO:s_߹DP>4^:x<\=Kq[ӓ6lMjS\gˍɎqyww{uch?c~6+:ؾۃ[Yڧ?ڙcG5_; JQ]-[?KdOx &DcZ'/sg6`.[xw[oXN dsf.>9G\\N7t,9}IO~tNύ~"ünƃNJv2g}\§&mqg:>~S$xi} Ƕ!z@M~֦/DwSܒ %JggƟxMc>~AoANOި/~1:h =}\i>tqx ;lqG>$.g$K/lp0n֗%>ٝﴯp}Ǐ'=?nfj[ ^/^dOS< ~6ߌ &֥=a<<1L9^gֳ4o0՞CAMrpnit[rx'~$Wq?Eutn>R\B~&w%lML3_x0MGpn%[|]?T ? G?tɏ 㾉i_}:x'kGzcw䗜kӹImL)uǷz ?q:5Nϧle98eoɞ;o3|b4]L4$&ysQ.jK=ϴ?9~{Ƶѡ\F7{_q;SdN)>I=EBɏm&&`Mpn)n3Npɿn~97m4(?) '7L ovoKxk<1o [l<MS\;ӝ/][_Mvo~,|22k>Fx?DxMc{vzeQ ? ,ܿǽ ԟO0mLzoߍ~Rkwth}?L\'8&4';`\[ 3H灏'lZ^l'a?m{p]ÛN,]LtjNq㶮_ѕG9❓nOizb߅/lI5/cD[#q~m=' ץ5/g?9i<ӹ9 Oϱ4/ lorOx]777_ܦWKrntpɏ7уrLZqmm ﶫ?~g^eZwm~[5=soqj~~W3Kr~Z[mtt?h x_])0><ƨo:̯k2 c_\ƿ 7?0KƁ1)&vXqcaR;ϛP'=ripZ?]j?s~K2CG>:r:5mMqW<͋_O)k4 nd`^Ӻ߈Һ}ZN~i?w|~ [>{G?yKii{ݽ[{~^zg6h޶8ƤexڡO{?wHH)g![lv渟+:~;wuN.~%"z_qH/rΌ7 _;,_|B?~?smv^Utg]3lzG=㷽%Lt3ﶏ37޷4.xzΪE|p0>~~4ޏc צǕ|~u{cK~ʝWFl:hLfi.o>Η񳻼 ܝ'cGoC׶|un0cG+VnoflqbO]5AN<Ro=X6nCv :o)fl>LGfwom~iO>n=izOx|y6lЄq}>U>M/t =xnf'ߌvƳI,?L~^OAs䟚6N_d:@;lל7sg!?3?k{tϪi/ֿa_;й~Bqs96rbkl ~I&r#LOig<ԟAMe;tz|zv϶4&'p;Uo}?~\G^ovsj~M ivv䀯)`)e_~nGھ ϖc3_:.݇*? ,G,=g`|EO~mXy{-&؇?Aؾ ݏw&yyij>;4#>xO׾E?]ljNH,oHrsܟ.9'8=^ϏgՎe1M;5^1?6״:i_} LrlqCtg?2mWpLr|~|ҹߒr@{2=o͞]zkMzf/G1O0i;~7>UO~m#97?nq6dGA_X\:4osZny1ųl˛NG/șis9^&:qZlJ{H@qzg[䧙Lr{3~nY`ilKaJӧ׭}|/^/ǖӾaܗ޽hxi&9~}D>9z1vF]/0CzOxRa6 _/oޟU'x|'>)iۧ4NvzuZLq4n~ǵS^fzvuoK㰞? 8'?<ظ?4/96981W1yѥs].yF󴭟͟\`;{Ϳ1}i_bZϏt1ޟyWݸӆy7]?i>^&'8毻 &O}|uC0zXLpv?;\~/zTt9gOö (쿡ݯc{WrAk_{_5&kd{xkNcElAxoko;ۥ{6a)iI׉^G~6M{??sjݬcדWCa+'8ɯ1Xz5-M,8u^?re9'OEϗm_?&ǔsfp|or7s?Zm߃z?Mkc0 Zn7>wgM|pOW{S4ե8=ߴI0ѹb"|rip\Mr_Fo3ͯL96ɕɿqzc;2DgzA^?'u[ݍ4O:E>:QkW~He8|~n{MSut6z_a-~/KL7tD9Kc? a>D}cc$=S<Bt>{̇<=L5\c?ӾgmC[?v;_|Rztm%8|v7N0Nr}Z/Lqb֣Ӿ>G?wEG]N2ťLֶ:x<죞~~addol넁m;`)u´1&y%x'vSdZNGC}Ѡ4>oÏמ-Btӻ)7o'Ds-AMq+:x5}LfOoi'9a{k0xKo]8f'[YLxdg_P!#Ldž0̧y|b?uᆿ8)陉&9QDO0y[MqӾǶ;٣-Njf ~r;g}AXy8&&[tɾk׉^S#y;f<]0Ӽ_[<}K9Kqu߭_>m5=tԓ a7:>geB~ /uOrt;?H׃qN.S;cW7bo2~w<=P~7|&:zS&WK\a|SҸ>S+2죋睅M.'Oa˚ϕtqaz~Nb3Зxӽ0۶8K>ݻ;ş~JPoovS&?CMW$G?y~{~ԟ|`;~ϴgxߥ{>R;oo֡||Nv;մttj=3ūL/d?L$7c8K擉.yؓ:юm3ȣ֏S\ҶN5.xC'ˉ7?ߴ=Sii5{C_hÁ.Ƹ>Ӌh rc'Gaw^u+{\Z@/1]nx5HnOx1p}tI !zQ7.E1߉uFwjg#7فk|ݯ7#>'ӹoLmރONv$-5eKi>63^ G?gjw?Ҿߖ/᫟,?w:ayq~_~'}6ٟaڝ uvoڟ4>&~&t~#ÓD8'_\ү7~RIiGItyI/??acƛv|8ˁ+\Txy~ϣ;yҧ ?~+Bo5 b)Bo|= <3#ढ़|Ͼ4rQү&/)xb~or/ׯTjG=_}!Gg?ϿJ ɿ~q;r@rxg~X_BG;FB_ӯ]|#yzv; NjORbڭ7x3o7W?yO7^K}G>2:3I'Y{+mEa2Kwy">GoOz|~o=G~7$pZn3N?;O#K+ KY/tyh9}=r+>} ؟w#ߙwt~< xF2=6SBvvK x!C΍A_[ ]2G)3__QRQ۴'_Vܭn=|`z~k`ڃR p~;+#K:2+KIӧ+$xg9yw ףS|$2>$2NlGJoՓ^rj_?xj K$a#tNo^^SrR/TNg\ |>H_RiƉO8呗ro5Im[M]&_GK|G.K9[톤r9<`>o{v?)qW,ŋ辒HI9uM| HP9迯)ۇ"g凤1|g^ t~#I}9|' -םKת"Oȍkkz7i##r:GP|@=}o׏wk{-?#)E;q߮_ ~Cc1}md=_;:W>^㆟>C{)_:>2|]z>r߭?'Ͼ|1WSMSyBny T~4|oZ]FF^!g_ <'7xL59|7NƏI׿j>|9iq0#\G|}:K}zͳdi|MտI979xkq>8W4v}15w gq2_[5ꏾR>= ؗeN)|x_+r/ȹ?%Xc?5nmDn䱃T3+R攲g_B 3|3͞z1屻4~|NGq4i_w՟]]/;Ϸs}(XS$~'GO^Ol>/7Gz:>?ַa~|. xk9d{vuyHoɣQվAׄo2]ַ/ݞ껤~R'ݑR?:n g =g|ȫ]`Gqտ+/ve?D⸦5;zRI~KpCL)8~Ic+&ܟRC"iH}䱧+/a5" 9(rqJu^v$Kr @t<xw-|)g޸|GO/=)O| I> Oyޟ%=)qY ")v/v N?֏8k''+Bn3w't>.=d\_y^i^F=IƍZo_cXG$+v SFRz/+nOk|Hʓ r;?xANO}\b߅} xzqakWCW "Л0_K#qk ھg^|'85_ŸG. tƾe|mxO;􋼁Oa/@O3N7Oƛ$/빠GH ]#CF'I||R樯SH^wt.ߙ  wEޱO8|}մ;i:+{v~z~$)WixrsJGnk^Q;]/c+I3|qЭυ;T\W#<9y7]"iwk{?8p}+?~yB:HkxSA/ic3߯)e: ۼ]DɃw◠9]=A;j&~ZWIh^7@=q\?sŇ~FvDgmbR~7}S?_H@?GoWCo9ry<>G^?v$B+:~S3n~]Ey_{ח5Ӏ7faB5QMy#B7~kvyuϧ]p~>'~Uvf{8m@s{J#>qr;?Hyv@lxET_$/奴}g{?M=s<7'|CNX[>vxMٿ~y!xк3ߧ=gI?W}v=Xy#S%N5|)|Z` ToʷːMʸ ?/#~z=ulcúڣu.{=OcGAKݣHOg_y۟>A:SysV{I[`P<%Mlw#8'8qm"_g}\75)y'7;{[}>|r_f|)׸=aX ]uD꽨ZyD^|N}E^{~\'Sm\`@(=yF/OɳS{ K~H;!| 7NDO=6ȯKWcկra'~#wo>g=<|9p2ޫS ?Z:L;7ɳ_}&7tEq2[gsqIe:ΪPi|qsJ Iӹ'f>y;ri)mWBTDn0Iqk}痻H}ƞ&E_8/xANgRJhWc^#|ggZy#ox^Co<>灿[i:e_;z 8J7y5rq@O/uk-|eg,8? r{Xǃ՞SIg_Kck[4n=߉ðnBzoF8U;{2}:u/@ߍ7JGW+|)qi>s I\=O+<+oqIF^^'~?C9]{+{ cvlosXw}g^cǿurq%sG?c*0N~.'J{ݱ/iR]{zMSRP8|o-Xq"0G{tZ-z/qOo}6o#ypۯL }^+t~-^9g{p6ڟ8|_QG~ ϻQWk=ӀcЯը+&ʩ>M} ==7<>wuC;~q{+^𨿾r|Os=Q}\mB򾯭+}^R8;$;Ɠ'ubF.|38ooo>z5|>vRO~o<:ݞ?v̿Q{w.~[O< /'~'x# FtqOzߑ?}xeǎOL@/'*GJ=#z󢜣ߓGq"G_=krzrfspn$A>zsJmߋ ޠ'==w{I{Bʽbs\C?+}Y}! Igz>pܚX)stߤ '#<h'{@ʱr:3θcJ|:{?Vڱ~鹚 x.?|{RNҞ3^NO?lpW9G'OzCV}Hy煴~ynI?B[ߣIZ{juRƥqAH/}UГ{|Σ{{m|n-8}%c^l~~/iU9(nC~.zhßߩ=;\JF4&V;|/s~qެ^H>.~b=,,]Jy֧'VxW=}7!),̇5AO>þJ~ITy'ot'M)"?{gO b|^nU >'7 {>0ߑ{=yS>:{|G~Դs~}vvgb?p!YQ/i7{)R=,zls>{Ӿ#o_*SV/mzn&큇kq#W=Ӹ[;.(_C^׿v> *v3zU߿Sܠky;NC> +wU':y4K7{9 =u6.&੟2){G.vvoYR'O7y/$yӒv'M)"g: ޾sg~oH㘒~j>;/[a;bݱڒg z?CҞOHy'5}#?{ vac<|].|{rݷޟb={}cvg'3+`Xa]s~\0|JzqGげBĻ&|M{ Ozq),>?rXÿ>=Sxa|ƣ7T9.*z_MRx\?nQzOHgLy/`g?ɥS8jz~=+~tV=gqn3m?{9q,| g~ qR3{ڮͭfo#96s%E/xi/B. WݷH9w/ 1p g|c|}3d}݋>H}vSWy!)z#q1o q =_z;r 8z.?wnȽcL /}/'/ڏN)L^=k^} ~M)=zo`vJO97)%SȻvqz4/)tB̯Ewzzqm3]q>]z>/=ϑ/v^')Bn﹝||9:?3WxkxF?MSՕgq1M;K8t^S[@nznS?ym=7L78ƍ~:iRkݭ3.)6>zGG^#k_~Y_I}g~oB#W9yvE=Z?6t=D|̓w?[˝ԯ]-zo7w`˪߯?ty$7CLJn{>xޫ;}~5.~[LXr}w cK~}彟]=OJeoO}oN7i/k{ڗ\Dbc0'cwXN|EcAb'=M>WAyɳg_ R֏'C83 3}פn~|㸎V~Ӧ^kʟC;e/%)~d~1)"M{ou밎723RO{!7~jM{-yCxz.QFy ){uqwkfg{FkțoO*)t},o8˥r+"/]S^ F{#~H W K}+)5ŗlqfpR8ԃ^Ty{C}gb?yh g3.Ke]>t3{% :+J9u,C ?wmAk<؅~n򍻸[Dž2N}cOgOx~ ri>ʡgώl|HR\$hy3~ʧc3|*NL긁?Zǿc^Q~G]_zz\&z<'}) mZ ~þCA{{M|㘎kg=<|κ }oI=I .yN.붮zW_3or70sHYOo|bEuɳLrߞzK??lo^ǽizCPs ^}_=Lic/{Fa}s;Hn_ϟQ9q!i8qo5Y#Xw?JQn Lʁ'')_v 71~ac|Yp_ F~1\NCy6n~^q\/mz?}RK}-zSW^c]}Yg\IF_IgYWiOFQ~RO?vηnO)qGL`׼r|?=?yX8l<@ <70y5HGo܁ק,ߧqQs\Cw=~u\5"YL:?q}vI9M9sIY3/>abG㬏knaN'7븎d}@N{O—bۗЙ1oqܮϛZe~}Ω087 {Oqf&+\OU/kW)sJ![ʣ|?8ػS)ře.?ۏu!W=wo;̗U=ojg1d|r?Jha)ԾZ%7*S>J_'2 cyT^ |x9y|w2S#zھߋ=܇* 8뵟G*}uOճߑ v!:W6^8_v ޿|G|Kp߫Ӱs,]v_5wnM{s=f܌Sq w?7{OIR ^{n7wL{ݏM)x ρqތ3CRz${nKcgw̸(G?c]\=w+U^^<싔.}_\;߱|q2/ȁk9{VO:'vRk[zg}q:Nv*mSZ;p0-ߑ{˵'Sp|ܺЭ{>6L}vѻ^VN픴sK|BOt}|::߱࿞C}H89y\o)e?|>U}{W<> \^^LʼJ)]ew>> juv[5>X*IZqgOS=IŻܬ_gH=R]8LSt]&pk>a-?zOY?cw`}>G={W6pQN/?ݯw~?4~E> a?xz/ c\ɳ{@+;S?߻_q3&{?AOCgC@.#6wQ?p ``cr3G @?K1)|xL?Wyv6:[ w_9)T.Auﴗ|S?}z~v _co.o|B}Nv5>ޟqhݏw "^J}+)v󈞃W/Gz}>::}}ǁzG+<F˯礟N׸4թϺqG|#?=Ywt˞?A[a3nvlםG<@oկ|}K93X7!<{|*V.:~ |MSp\q_WּxܞRˡʫ%a/G_Nڻ[zDUO]z2 a7|}Ǣw'r@[ma4a}aF'g8Suc#6-)xrܤ}~”c_O[]qGWkӴ{͓I5LSݔsu<~w~_qg=+z?CB\WW>I9 ?tθ'r zbq؟Yge_Or谶4Zqݓ{AP/p!ggN!ű57r|/R\/wW=CgWLnq6=\RyոSs>|>.}_A"Bދw%]H=QXc' ︯o#HoI{]Q߇K _R?s?K)E=bݭ.Iy'xDϼn~}ƉIS7LJIt:ٰ׸ke<wzC5_{=)x"弯{ FQ{|0^:N~#Y߆_ا+qu_j}T|`ZPgݛO)sc'8GW#| #M#șq?O DI}og|CIܜ}}g䒯^7^%)x?WyvDWv;ܭ6帎}0?9%S<+}V}/^SSwnN黩F{3p۩O_Zi?N)mׂ7~I{oqgy?I׀/Riͽo{IymJiTSAA/I8J}n{7|ޝ?NʽvN g|kk{p8_n{y/:ηR}>?|eZ~|m8)wNCk<ϭ〞'|Cziɥgہ #>ya;i./_)go"ݽ1-H?xE@oENTާ}Ɲ)_K+~w? GO~+> #oa^KzBPyo_<qD~.\+/WG.A/W{a3c]y~pq2޻]9g]vzݮ깔?YotzrC =:^Iy~OS_tY8wk9ګy|~78sAzz]OIC9[wk;u-]f?Ҟyy#~RmN“zY_>;ʁCßkI~ǻܬ`C?OnW8􏾪۵ [s]'Ry]7̸@]=;o?7-~-C>uŸﻁ ^ᅟя鶮tz_k.|M>?1\ = ig?ȃ۵~_Dok#}4x@_r~+Nz"?f=&}-@2Wyzy+?Z=~-p"-p:O 㳾>xouW1P_:|y]zCFBFxi7"OkO"?SO~>Vw!r^[׻v Q9'r Ôz Iױ_k'knWYgvvGiIY5z?N?]??A;{tѳ#=irF+pg[TyzHSKʧM[kgfqm/w^>Z6pǎ@/؏w1X{!#G~U= Of>v ir8SVe^O=:R3svE ? ؟쟢w~ٿz[|w'XNk]#XwoAz*OSe@9> v#}9?aWWחi~G೼+ǻq2|/wܩ"W z~C d]n}{M}R91nGC~8VwxC㪟;g3GM/276^o~7?}Y{vGaSm|$ =yﴷU?'e WR[ Щ zq祿;vMJi~¾D Sj:6xi+|#Ocaúx9Q7(@imqǴ<3v~l.>~nY_Sux)Wruiľ~t>z?6wzN>s/X}?SmC.~ }cO09m /פiy3vor_b)e? C\/eް:i;y3m|hh[}Hޯviq?2 /N.^ pmy_J_>07wq]; Y ۵ ?Ǔz_'7͸ă+8 xYAkfT鏟^x#o}r(p_?wʋ o?r~֔>/[=?pg)g?~;[1y~}x, ^ȳ%ߨ}{ک[=wᾧ|ܹvuDi/_=8w_ꣵ\b}6v# <+r: y}gGZ>t^PB>e>xv}V{i~<v—r_;Y_inu,vsv"2껃_oq\L|_}zywT>k俍5~rFj\vxSqڙ+3v}1/~tY<]|}ێg`+J)o|j']rdȿeߥp6^<۞h-~x];{>wrSLa g|>z^=pOm|q(q7o9]&Sl:Lƕ>׸ϿI칍{>3sbNoiN=\X_5ύrq\k-|tkϿ}M7zr,㮝8I]q:A7OyvdGv3<^ئN^2B)_}2Tx`s+u޷ޞ4s^W1Ky~N3^tQ<<{k {ƙu: PɌ׺zWY+/vJ~f>:qMZR.)pw߆q-G#ه|i絛þc_c'C_ڭ侵Zxz [|YץNቜI/e\خzGQt||[_=E}+GQ?h>7nStqwbuy_XOdǁ}}_/a9?Ɲ~WhxݙzVly_~`A\HŷK5@g)Gߣ_o?OCxםܘ/~y~G<؟NCwk݁qOlik^,4~ _ݳq'y[H;=~$m_j=7ߞM}}5?8+Yus|kI{; nlG>>I~px;+c>OK叧x`?5>&e YAg|Z;݌뭓3q^xcO^h׺Jk3Rk/z"G#^Cx_wk<^8~kO9H. d_ϡlҾyH2Es/y̯NyN73OǮϓu+pwS!izZm8vx7+Gw8:e@>ωϡ79C?s'OzS1ԯ2oa['#p\L[x; '_<ɸ/89y$NC1Y~oK;=wBL> ~u|ݗZ˳zdݿ31xJjx*qt <|_;u\G2t>fAy^i/G5>_|_ƙ~j_iW۝tni+?ۮ|Gk9|O^׾=ƓcgJ'n+GI91ΞgOGk?NCK^c^uxeJqMfCgs{~|+uHEggr OBnJo kJ=7xg^w>sM?~Nuz^vVS?؄7_sgX'O~+;G.c߃ug ͣ4{yW^MGky.N(}vpc?i_Џ{vsܦ^7>ƕ+튫mԯt?|ώj|x7j7{o n~38?U؟sx'kON->˸}{qiqs9)!fshmO/sw}v#-ҫDG >ߟ=ؼp{f埃NwO|aO4X` >x~ 7߭~ً'yϓ9{> ͸f\}cݼO {to]ctlzkg|1cQ@o:<wr{>K}_~7*u?ow<ǺjGq:Iw3 >zNYʸ_(AG]U7~R{~ ?<sxkc5<+\阯M+8{ڟo8zyȗsg< _o=~6Zs1z~.7ܼ3u^N?^8OKik' <ݯI}Y7hʡ/<{zo7F##I(nco1o_k[r혟x'OCYxpSO|Cڥ6v2=Ǵk}4NݠCG}Io_vmow{<:j>dH/o\⮺N3S~w}:uQqOӟ<#WO7X{.;8Ob~g?O;[yL]ojtG7cwSzj>CxO~?6zV 7hŇyEWފwv_Rnu>-=7f}xxkI{=^>9^=Ɨ6?\JiކSg9hsig_$I{/y~OEog K|X\z=K|p<πe?>m;{.3ƝQzV||vC>yW~]: Yhuh/g~r~gp-̣gi筁:͛鏽ռۃ>O.w{u\c~4%/ãC:Y/<8})7)Mq'<˿[Oн?#4qp]ym<3>|]G>?z '8'OR^vƙy7y6u(iFu>Z^ϥv}u/yl؝IxexgrAsgnj}>+Gq4 4`CݯJ;yyOBqʡs~ЙqqbYgvw8f+w9w1_OwΏ8|o^|oky|ӧ{~w_mv'Vz8R?Ovc#ׯ<Oz9z]wJa<:~qVAxY#ǟ 8f^ 66lS.tm]8KGIɃO_xŏX9CghFf.kd}cg_M?8(y>"ޫvf>F|ByۼN>M8۽kaơݔÿ{ ~yzduqȋ3GhOs^J?Fvyssk97li~)xGyo>ytr{k6Ns8ןz ?j?}Y>_#|=m۟sLoS~ƭOlގ7g'+wMh,k +ow~q}ypwנM /w?|R8?]pWept_*rlڟOy?v|xdkMN^D]3ɯOoO)W0~u~ǟwʱ7ڏ}_<#yHng >v5}l|s7i#y/=Vqϼ|zx!=N7]gƇsnC9{gW;ֽySgry|%OəUowx9I{Y~/ qnv{&kwg>4>]I;Y Gpw~}-.52/=Y;q{ֿ~ztw:o\aڕoޤG'a (5r#聽tm'=W/>b|xOt/|-x/,snJ=PrS?y{Sk_^ssQo$?wq|P%/햿{|n7_{Ny{7y<>)g?i/ppK]ǁYO=읜W?]ާg؁/oe_;{䝔?yOGYP}yk}~i/:?+}򏚿Ǻ}2x)_zy^|μh\ <8iv}k Gq{}c<+Rܷ>/3'w0]Y^syy!?j/j>\ :~{Q/7?N,`ϒz#7Sk]Ywqr"pWg"5oހFiqֽ~}y9~?Zsq[yGZ$w^YO/{9M?_F7|>i+\zʷ!WS ;5O=W{n3>r@'Pf^1Nj|wOWON/gZϙGg}'99:k(яQoEwm>q=~S_7W f^Qy~'E ޛ_Z/WySNW8w QA~V}vx^Wwhn7!>8oxzo.ؾ {yZ^oz7_~cY۵Ji|2t)E}nzςzyV \}q6N= ~H <>=vh=Kk\z_AwzVBڅـ%i?7?Z>ƿA#i7ҏ&>io]>{φog;Zf|^<Տ N̸2 ߝѣwxGN :ޫȻQ}c27/JgO>wgɿ+~ynl2W%+w{t!x[>o=qj}\s7rSiG7oSvt:R\ъGf̸ Fvɇ[o߸AcO9|L8O ^OG7z8!''N3m)ÿqj/{{myz<|e/SEg{WߦոڌUH{G8Ǽ̳p7摿m浺wx׼4~ /[}?ZZzݷ1zjy2?bck~oc>yԙM+hA/9ԯ߆|/x><^.pE/g?yռ6D{yK? n=zؓ=WY*p߾zQ؛Ӵy!;z<;k Vk㿻~ ^혿鏪+M=b{!}s)g_yҿz:OvM1[>mn_鮝ݫ<Y_ϵOvz 8'`?ڴJ^Jڧ_sz0~\/~|<ɳk^g=oy?MFRnokYsrw}7oOgXy54K( O^?k}]t߭G{J^5ϟ_~>L?v/'+~ã78 9w|߹IOzc_+ަ_ɳż׸ K}錻 {O*f܌=OF>[;~KWG rO=}>qgi^5Yڵ.øc}Cy_=~x>m3{Xguq 9[ȸ'7ki35'+~~G< y2N|)]~Oo>4$ߛ98orW;͛8.D'v*:M 'zS}=ziʟ[Fވ=u='z_ȃu̫q~g7t#{OwƗglW>/8ry'RGYρv_^zjQp\h%Oć޳js󃄾/}:<"|fs|=TO8))|vTRy^ y,fmqś~;^zqq;]˃W/r{6UaU=w¾0Q;2No^ |kO^觍KKhxz{x\yz=]銇KyF]\kq>ɕ+Og'zc3ys~v39Կ=ywz< ,;޴t ܕ[^vT4?[+7no?K}z{J~.|~|x+J˒q?|Nʣ'~xG4Woׂ׼0zlRUA[ϳ[yiL}ʏ;_X~~W=d{6N-'_ԯrqGgsnv?~8٩>͎S~Axʞ+qM=toT{3ߧk;g$qƑz |zz<;?W{ސs ݞ|=Z}*>/[s8C{4r1wƅCq'ѧxn;gwX}tɏ}lIi~׸ԯ=y+{xrkS>8zn!ZY~ =^-z9[Njt8yN{&ָ7tsyϥyލ|;anߡ|V\ƽs)g{{ZNwOzMqR>s>Ӟ8o_lz3=s{ʋ[}D^=HǣG;)N~.vL}.o? ^;W(S_9ʿO_Ŀ{{{{eO7g(C4ɓ<8Oݳ=yr~oI}nW?;1pGk{W#{~`֛qg^ߑz ]?K_M{?x=)G/Cꝧ+<ͯ>7oqyzn6鹻bἯ'nݟr =zB?>m}{~5Ѹ '<<V|MͣvӞ3׫t7?_]O[{?5~<'y?=űk' ][ĺG5vOn`'Oy8Os[?Wćg??~gލJ=W|HyV/?Sym;}qi?ywovO~w}6hیj~mڝ~7voz罐ʹih qzDJR޼7?8hct} ڡߤW}<__knG3<~a<[z|>vHrj^<w}u૝ϴk?Ѻ}n}Gy/ޝWԮt)GnzRn3z_Cxٞp|o}_: ~jToݵ\o]t{2.󑾿/S_>nqi׎{Zvmp=~5x1埅܏Z'ƥ|:D7jJuog׳cAǏՌIr<=\ _+~9\H+'~%g{ew73ˡ ܯߵz2χ?_K'zs?>p]_Oޟ=|+}'y|.?y!~'q=:yfCrXhڵ~/fCۻvnccoRZ~/CyCOYm%b~q>~_}&tMz0 KG~_:wtn// noy~G@y>B3N~kχ :/dr*~K^x}O|!_\ <_SG|?xo5_8M=舾eX7Ox>AgO8^b~/_п+c+Ky''ϡ>xҿu9|џ{.WBn=LO?i[K+OvDOϥ5|#C:3kAwI=z΋H}6O~W{=|s^~Jo @O֮dSܾ~ًo>ٸ3x!oj:dO .g/SS{㕎<;' ?qg?oy&\g}|&<o<3=r_߃GW?XK8襏x?FO'+z^f{˺ ]y$蕕sfב;&?Og2>[ ?;:|4ѯ唿#_zy+?p[>LӃ#iu.y^<=zڣǼ[^W~_oV/S6ۺJ?_Nǭߔȍ̀bWmO{/v L}_ \O<}\;:%sS8إ1p=|1?= |^O*. _+ov{|,ѳzeeC[v'#Y'Wõ{9["r|++__'?ѻu~ |"߫׬ӓ~y+W??rqx&W/;ȳ|\dOo7>rO.Gޙ:OŽzWʡ[Y_[~~-a_Wg #:‡軟 tr:zÕOZw 9K7^q|_B<)AѳE/Mr~ݔߌvͯ}gƇӥ_xO̻} ;|$Jo̘'|ٺ :{C<+wso ?c] c_ⅼL,~DK Eѳ$ЏY=*nn>A; ^geߵr }o'9Py)2?3+. 6oǼ^\ |2vuߓ]A4O>>\;(pv/xg?{\~g< v{5~{\f&^;]17oӮu` _FXǭϡWᅵ[Xc`syuW>n&Gj7߳oC2 %,_ X5L{_wrx>;!"q ̃vg~Hd[c{td$W?~}=C^?M}^a\GIE'q/ԯ8oGߴGOgsf~7o^fXƺ7}ɕyGvpFμY@Kf =yߤ穽ޯ/^w7qgD2|e^O?p}#{շS]Ş{os'עߴ."%tY7w*?ˋc^à7]8W7Wvg~}v-3/Ů_[|>9y{l[yOt|"ave^?d>u7;W??vO3Y/[r ;]t/M>ŏuUȇY#9Yg[Ǯ^]}~JkӔ_ݿwFS_Gܤwt o ÿ fgta/_M n_}/WuàG=z kv>Gǭ0OuniγOKgqX~_ UOg7қc=A'_::gwJFzP/qE!e7w>zi''ZO|?m2gwNlu@;g4e|Ч+#Yo~iq}k ~n<}מ]댜eoz9*A6cy~T/B<}_&؏C?˯NNkvuD>Dҧ;'/ǴOXJqBa˺vnż˚ƛo>q?"ٌC:媷kaW4.%탇ݸ!/ї_~ HOz }=}v"z1n>/[x <o+~BG|  ѷ8Y+Q|q+o̸x3qwОf?g|z1βG&3^>NA?loyc_X>}@+9yg]G_<181y^Muez_-ܼ}_ԏx<.SqC wy9?|3GOlBG/u}ݿ!|8أYo&ߝ0/r2_ ?'/zouulv?B?'e^ ?Ok^Iԫqk]hփ}[uc=| ^:^Hp|B\ }X~KoWz?|B}&F#p3Zz!sd'y4(o?jR޺O%^u8<.uz+7ɱW8yM?F?[t1#>-K|ε<z2C/z>Q]t|6Nʸ~nW~9}~sWrZ|WȤuG ӳkz6|۹ G c^syx̻{?pЃwۮ2/c_pYg2~;: >7 ymvŌ x^et_>gʉ'c+kݯO3ݰsf>\-}eghYOog~:MigxŴޓE؟soew_W Cqf7O}~-]tt)߭|9jso<֨/c:M U}<?~3ϯ ~3_# _-ߴg= 77/v;~2'kp '|vxcqͫw<2?79~q~zG_!u[uNM~g-=?g5 7~5=‡98~̼>ťXgo?:&o<gn ϗo1(}|';|B*q/9&k0z6SK~C/,zEK/d;J9ñIj/8wyWr>0>+oyoV/Cfuqλxc ;Ҏyp~y~ǰ^?AAO=93tl~Ыx Lzu ?nn|ґq#^ߠ;q RǗ |h jO2.vR?xCzL㳿%1_}OYO}Sw|X+`_y]?|C+n_ ?A|j}7CEz <ПW'xϠKsDuu`I5FDޝfXl?Ygy죒~e=Q>3qyX?7}}rչZvq\eaƋξov;G,q3wڿxUaЭѫvųw`v^;9xa~ɣg=qEFगeexg/}xyͺybpQNov:lTys;I}:5O~M>_#:'7|5oUʓ#_ sHEr_ _Yw|@%?})߅>9uɎGħм)o'YWw->/??/D_cGs@#]N_7L'N_Njklc'5CNMh>աn;%z4=%?q|e"}ʟ%ޟ?RJ|s7xcr;^Rvd޻y"'/mxs z㊳_&}]~D:?[7r9}Y; YW/#_O/دl>yOɳi3SyC/v}%n~wP?w57Ҿj> yXr-X5~+7ᇅWFNәg.?0=?Cc9k/5>'Boo/OLNXͻlAuu_Ӹ?9oIn>7/?}y=߅Էb|_^%f|m7OM_ CB)Gu|%㒟;~/B?hst_ɼ N:hۏ;zOy5M&<['s\9Ms*N_DqN?io7/ +ocG'_aw7}ֹv|3 Ao /#Oؼ]>:t2kmM_FY1.'"ߛ/'ASObO~9i~aYiTOR_>bҞw~s7&{#'wo&x{5]GŦ?îooث][֕#v,^A|~¢SWv7d޿h=տgo ϲ>1ܷg]t 旰g(pn3"_gbEu{oԁ??m?ub}m~s*[kk}B?'Vs2G1o|- uD?eqO~`  Qy~Q86{AD7~y-鰫IvG~rP|6h!K+=;3" /N.ٿ'W.{7{*^4K{ξ;qV?37~oڍ'5OQַ+A~Js42lgo˟< zɟ!s[?ݳe|=O^rR;}\tsi߸Џ(O0Jf}z40?eYGT;ϼ{zyU-wzq)O<>xY= cfr@{~' JNN6ygԺC~7027`flf|z/ѼNu?wc!3xl|Ig~׃c=5q_y/s*:wi]qW7E\xu[n_d4&l/u#7G/N{o)]|Ah?v777Oz=\$gQa>z?LwߍwRO#jv~os4^l Fr<3?BGN{ijw͗/}~f}ޫ`|~Q>)vVR}gGAi~:cf]֩}vtݼk_ y?|wߎc_yg~; >}o^|G'շv嚯)|giz_wz;ؾ&Fn[c _B~O ]<9 } h' ~8ty Yq8;齩+\{})kOyvޠ7'GkUIo?|??9=]]W}?y&=c݊ץ^5~<Ɵ3~2r\g|w1?9|G?++l>_ZKKs:{.ܞ]?'<=|Wz|/t?#XxOi/ώql޳ʡi||th֍q8KQ|ov~G's_W"W9Z?kA?fsOf\=/%&%Ofdk~\;T3=qS">v*ݽ~~gUx웛gíȫ}b[Y{xb'dު{-8^BAii/B'ﴃz//|z`אo<xn^{p7Eڷkeuw g__V{`?=a><9| w ҏ#s˺wo)7{>80z+k˟d?jG/|h+ =7?nU\3}799^̸*Zd?TzOX_gqxPSc_y8߂><&[^e~)xƏkWYWΣ;hRhi뽪18(G\ o7"}i{z?o>v'k_-lϤǹ~l:{`3 yw5:L_O{| Ddrŗ/>㴏şߵn Q>+>':{`١2HOwVGwv]O8{'^ͼ󗘿m=K^gԧwygm=˽?jO2.w୾~ޓj}x$/NƧ3|\AKcWˁpo繷+gΫ {.oʣ~YűN{>$\_U|23]DN>}^]ϴ_}۾;9wob=yϾ/~}ȓG;xg_,YfRu߄Oa/?3?zx޴G⟪^rt_#ϔo'ݟS{ާ7s*1y_v{"yc^|ϲ/~2e< |gA3Ƌ<эy&+Qk6Wӷ+`;ׂѕ}#pgotc~{WoG<|9x _&G6*c=<_ n~wkݼi%x轾$>nޠ+~#.*oWz5߭}@Gq?y>>'xw_|*_o'Ίq _3<9iyڬ/_Y{BwG5nA_~Yg_ԼM}3~N;{+=~%G*"]}xp=I~ApEڥ_@B[/{I^LOO@7I?c': oF=~Vz3}}] l|wrm!]_\_7%w~2O^[ͼS)gp1tm]Iz8#{8k>|gv=+O o?wEv>`מu߬kzq섃=/ON?a_/֏7x]^zn(%]=}s|[|O?K@o^zb7O!s6}څqǪn~vw|8~sMrR|F6^wYlzn ?m_~X>_dO C?)C/?|~g_RyR1y3יǧ?/\<: Oī5o!wz/x Q^r?__yz_=\yO?͗]|N ~v|;.O=G#zL{_y^=%{FAwxWtO|ϓܢg??z|</  <S_~.7͐Ã/ԿzŇ|ǿ{]þ09-2yL^K2.5S˺/zn~Ȟ'MqЃ9J?米F=~[߯[+zzLyr|Owo=_5:zԧ5O0ua}5 nI>87{~'9ʔcg G3zq Dع}=ռ7>ϞFyڟikv~ ~ֿ.+vu?LϚ#!xM2n8/1R>h9}~yCvzI^1Ġ#3w-Aq9siϏ|߰ϟn^</3Ͻ_%x'Mh7n|;Y/ͯ?3f%ޣ6Bz?'z${;JrMN|Ϙ+CҮyoOōgؕۯExo^/!sON = >W$3}y>4r1pM}?=n;W#zG@᏿#:;i<Od|C7p-~i ߳W=g ·ѧg~#<艽o`}ًZq=K?'-Gě+_Nl)siOU*yoOq>3FQه3.-X+|A_s^yRçxthw[gžh+^|oi/~޸\O~~7=t)>Oo:h~qil=ӏizw_&f/ʋv%'9';M`k`}ޮ9;G,p>in>{~#r~g#nDyz5yM_bW;_`]ң/=VӼo͑ߍ_;魯|w%7ODwƿ;()q3z#E߽w<{o{A硝;?'_fw9{?8G{\.||ނ_ƁC_MD-~>5vt$g˽Ao"1 !y; ɴ+.9 z;ϑ6fЗW?O?aY8הv#K96dڡ7O]ѽ<1iu޻;=` fK+ ֓{o1s2r(y7]!|_% >L~o|X߶>S>7Aq>yBg][缿2N'Cd7fƬtj 4d=tߴ>82vtshLy1[\?{]⁓"kgH}j?¯w2J !4o\mKķn/~/_>A'm}k>oOK j,LJGhR/w#.[G޿/+ :p<ޅr2擾 /l~w~~b_۔; 9ò3_W>Bϡ?>JNGUo?_睇?ޟwv<'z7}i s?:_׸ώ_~#cWGBA^g\ҳO]{M𼇤/`9rڵW/~|YϹ{Qꉓukç3t\=I?og|7-#pзռ~{>uK^LK#i?/|?j!/A8z\Фq3p.̓gdK=D\WϫgRnԛg~[iza}Oo?A7 x.6.yO8/=noiޑtބr~ZKdw7Nçh]G?`}ȩ,/O?ryQֻ8Z''n/ =)^!y^);..uW?^y~, M s<+3:FA3nzby5_iG}~J0r }_e{Zz Jy~u~An\|K4otܾ3oi}{$xş7ѩ~d~{^-sAYO{PGƧ ~p9{wrJy?~ʼU|GWs+z @mNy9A _<[F5Ϡ+=oqg۞dzO8?^Yg3/K:?;=<'rzOXG+֣~?+.?ϧs{|Q^>E|2|_?Ad7>6M;z0|)/>i!p'J}{sn>o;o_ ūWweodjܳS߀^OF3{R 9 ROnj>MM{2;ϼ|87:u~nOK;[KٍNϛ;RN ?Xn?!\w8iۼC_!ҿ<3n_^D_wWp}l)ZƇ2>0>^vonX^ֳy◲?7zo>Wt8cDu^"!)EM:v47t(R@ DH= 9~>G ^˘6Y_U'ee̕yzsc#DupkOG)>ɇ_KOo>^ztuGoR<ҼQ077?Px?|ϕO*%gzp_Yɋu׿]O|ɷV>OsOz~^T|5%\|m(~}>h__\w=/}]_U|h~@˪>+y\wC.h?[*5~k4./ͨn{뎟:f{ݿ ||WG~Քoj'z<*zCzrKtܩP{Cy(H剪"ywrq*?o]]>Aߝ.Oh;^iMgw*_y|>C|OVh^RU:C?i_%N*}{+?~ʿ~ϓ ^GWW;|ר?~z^_x}^ͫiK;s<^1GqC~}W|8kTqwR=߬|zCZ+~~yCGFT>4o﫟*ϯpOϯv'q3_ch\S-W{oϭzVzu+睮_G~~yw{'|_7WߩtyUrzb\uP8Z]ꝗA+wxtywY-qזw?WSwz*V Gx<麌')s@yӼ5N4[x5?~_sx߫l>Y=uS>5>{r"?y'wy.};'z+(?<ʧ\/캕5^|U9S8bϫ|S9^-*_w}^j筋/㑮c~僷/^<Gy*]={KʧsG!ˮ;WCTɻ2JWcnuuOg{Wt9zgΏ>w #o'܈o_?yv¸ut}:W~Z>u2n^b=_v_U/^wv^゙{ GMïy+Onh.)j,*^k=v>cO+ʿxwT=O7OGq{zM-^?~qxgxwzwOˇ?פv}|^\K/^e;xiAS [e~E'xū˭~Tzv92>wzݿo[_͉SoN;8煅}ﯞ9VUy%O/W}sO]ߝ?}_W(>=|QT9k߼zj_#q74.W,~'>.QZyGk[,+=j>ORuX?}~ޣSr⇮Gҫs|:ʁ{!~}>>`ϧ뽥_CZ߯],ݗ~^D~Rx7>8͸z^||_7*nOu_?sa/}i[~jE|.>xnﯞ.ozg@ëRj|kY`13O}՟2V:ݏy3ꏷ>~ Gx{;%u}mg ~y_X~n'}Nk&w<}7uY+?yQ^Pqu/ѫx~^U59?Ϟ}ϽQz=s_tq`gϿu]]<=?u}3o~r_zK.qljzίi?\tRvq5xx}^[g8:}>lK~]V[9ynwzNoo81GP·7b=??jOzouU>_r'_ܟ7?⚯_e[㩯R#yb!ݿqT=m~'~X>->|G皧r%{^;vx~Y{^\y񌻼e}׿C[?KTUR9z;R}~L9e?~e>W?>_O{Ƴ GuKCK˷eǍ^>X։ܨQ\޺>_G޿}F>W]n}{Kj?U_Q8zΥR:(=_]O9ă;<>Բֱ~/}%y|^F8|1^)Ү?uXABu|Z7oXvt_ͻ-wZ|}.w|jסr.'BuJW?i[/17Ny˿^ve>\>(v齥{VK:,{}gK_u)}s}xQ/T9e/_?Ow? ǮcS|տ#^kxmׯt-ܲ[_W>I^O,Yg_웩p<᪜[ʲ+ݔO(N__m8ߧ^_r)J']ʹ3˾r*;oK^|u+]_7~^|U?پ-}v9|R:~cu|5_^y?~]Y}=ߏyw췤x+}.g~{}}n,oݯ7z:_=uJ+Ϸ7tOϓ[><˳'?C[X=Qso֩>,}ZxVc3˷>/ߟz;J⵬W>R|*:+>}f%e]-|ޝoz^?slsm@f/X-qP>>j}gw/ċ>gu(]>ϻzTy|/ث~_k>/I~u[}'*yFW?|>o79߾_s9s/vTYIe%_֧[x7uz}X9u.}l&]}W\n>^[˃myit_՗eMR_?Ƿqtqe]qhKǥ?z:7ޟÚ/}d^[;^Ϳ'8Xz/x|XKW>s}-|tz:Tܗze_&ʍ?ǟUzje_=WϽ u{_||[=Ny+9hJ^<|e~Wsc^+xw8,qps__~{_ntkK'KǞTT/m~#xǞOX瞉U˪̣}ݮnGJO )%姕gi|BwxT>k<Wwdz:\P{}'Q:)X:G9~r]Gc ^gp\t[}5߫s}:?y:ϧ>Rz*eަ9-~}^T.۫#ڗ?qOU^~||v c_g}}ko~-~,>N2Oo\_nX~χvGOR?F{?z(yɞ>6t?ʸuW3^9_27_yݯ_'q=)=ţ,ԽG;=>*W ߟܹL{]{m7VNןw}>Zhһ꡵Vn~ˣ~\kk)OƗޟyN]^UV/]w.]~o^V=t]O<N7_tp(_);~v>]e棥S^yо/xe[K__w7z%o]zʙWp+oNz~Y|~'ןϣW~S>u9_RV=y~6g~{1sخg7{?d \I_۟[W;^_O/^n-~*T|[8^W |J?\˽evK7|m J_ʏ{qgO\X: wVr]uvx*/+/?1nv:ޯYxt^_dcy]gv}ʯWzqusj}n74/u*JZ9Il=vdןןӗ~W=Py07Džz}ܨ%㜏U>su;g//j~~)?oǗ|o~.󟊗]2cu{|3js\k羃?ޢ}d<ρ|}J[g)\G]>W9',o|-8qS]·|~5.v/y;^ʓso'|!2N8tqǛV|=kxQ^>t>o׭.V:qpT*'7_7Ǐ<\7}_ヾZCEfʽD-;cWvV;ǹ_xzw^[?V|{[ʻ~Ǐ-]{Posv{d=);~i+>s׼/?t~ӝߪ?G,\PxõQ:~ǩ~/T}kFHҮ/;?P~~U(_s|O?,]o<_o^T?~?Gg>W9q[˯>UV^{J7e?ݿuzvz˾aJG+O?YZ}^NA/勾o}Wie帧#Ke^Qm19Ǐ<AfoV:UNW珕ߴ}\=5y&wځ*N7ONjz>T=˖O}^+oYp:rx{J_V}}fU}ׅ(s ϟ8WqO6^cVVo{>>9w3_/6~:.?JsW]^@!|ߍeVS8܉y8;ש8±x\*߷9߫~W>/G+,[oqXsΊˊ}\}ٿNx*W=e#K硕+W|Y]ՇO-|>o/n<;>+ݞ[q#}O[x>.GƏ7v<;}m~Yzg{~w;csO~oϳfrE_WU}˛Ѷ8DϳXz&ߟ*?>gY|_^OO(?8jq|K_Ky=3^.{]~3\Q(~ evtp{Jq]Nߧ;~VoV{~͇or}Ϸ5/Oz7_u<}?xrn>?>/_+߾}uEqx5~?#~Gߧqm^e|ZpoV}{?ۻ? V|׳83?:ߧY߯,V?/ }'<=?}?4/}y`hYhןeqHɛqfT^uO]?ߩޯ^/}|Gzpz\}͋\N}]R?x{.})tYxϻ}_dz~CsO}s:޷9[`x㝎^}œ?玹{}z}˽|GMy9ʾF{㓏#}]w(?UϽ_<'ʓ?_OpuJG+>/7.㿖_X>*:kNWquxzv鶌{i߷}=U?ƸYI*=3ޯqoXK>9}{>AvnOt^p{g +~V8e^_}xiT< 離\t9K=}H}->o+J'O`oU/o]^UNʏϿ-sr=?f~E~~)iig^ǫ˽wG oy7ᵯWC3S}[~y}]Fnt?Tz{/-]Ogu~Wg>?:s{{2jy?oT\RzZx>G1~E>~\Ox^Y>Jw;GʥO]֓),<Gߏ?I{-}y<>/G{{uLq2j墟ۡ:y.,Z/>^螏7wr~z~V_|/nt/˟r㷽uٯ#?4uV}}>_oӽ<׸`ozݐvۿC s_|_<J N1ߧԞcOK;k>Qw=iW1^qڷ}V[{->_(^O7ϙ},?Z}qyGVz V/:Z{.¸)>AvW{>㜚^,.x{׼)X5v̟㮽9~L/QGi_ǥ[w}NzuE=eGxQ~ѯ֍/Y}\~|>}zJ|Gv}}l~IJ߃kYZ/G?qܟ~ϻydˣϭg)hw>OeÊJGS<#<_A]tgYa='ΫWe\g3,~_pkz9?u{j轕W||] -{˻9Py^ϔgk._>ߵTZ~Y}㜗eݣq%}3[z9S|}-/M-\[i\պP#eg}=~?:,(ejyri ^~ݟGV=v~!-Ps |_y|O㇇ގyz/C}?К>o~R~mW:T\5~Ω]U9?^6x[ʵWP9= ןcW{[˼nߺ;}*߿@^s|oӿꫯBOK{o囗,?~#˟e_RqʷR-ߝW*:C?YӟS:wƲ~˫(}}?1ܻ_~}}ϟr/ϱߟeg]W~WbC/r(^_V޿z8,<wZp/s.ݳ]ó~ȧeYX{}Xz.;w 3^}e|WuCzU*},^=_By齷\X9//߶B==|Nu:|KOs'}=W]f_\ֳY|>(ݭ8w]ߟ޿~/Z >_qp7_?j٫,?|'q]_oM{*_ߏ'}6_/<~-랕JoU~[:=esٗU_яµpU=`e;\o/<>x~fxٗԾƇ幑?o<:f}~rfj{V/||cw|}yz}-;=?gi><ݾ_$>6|?xz7f짢x[~˲ʅ?XtJw_v캗c)|sV<ګ}w|^ɲ.qX~Az>e<ʱ;9/_SC>oz~/ʯߧ-륕#vޞxSpji?gɮ]Wܯ~_pzYkpգSKﭼf87?^;_^.ڟt~Qܟ_qן+jx/s=~_|۞U}_`>[6->[CI^+MK*kZv{p ʍ-׽|e7R뾿|1ݓq7Kh,]}}+ПwGj4,^>GqN+{K'ǯYz:oKx-ϯ?9N}ϟg׳}|X|I+>~SP?rk̳YGq/s!;y&;} co7䜶zޛ:,eeo ^ɗ}s֮Uţ/Ѷg4_zx:ʏT}?w?@:YƷTܟ`C|<? zyLy:YX3^b}aXχ>\gcGC~6/S=m;9B_8?}<9w8?/ωtҡs8|~n±p}|,uxje^Izwtv?ŽfoOt>ޤx~q-뭭|-W.|Oͫra|z$ݎZyy=re_Wa7ίo wjg|xO~7t}},_z\ǹgy^sMKyW>&oNϯ疎>þ{V93|?O>??~}>x}>x}>x}>x}>x}>x}>x}֎>x}>x}>x}>x}>x}>x}>x}>x}>x}>x}>x}>;?ڿ;~ww~?_o߿Ư?ǿOq?OO~ɟ۟͟?wwWQo~_gO/?|{O?_?_?O/rgſl{c$~|?Jlc8u;/GW_muaDFtaDFtaDFvadFvadFvaTQFuaTQFuaTu[u[u[u[u[w{w{w{w{w{qtGqtGqtGqtGqtGqvgqvgqvgqvgqvgquWquWquWquWquǗ_Ο3Ϝ?k},ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װj|e?w߅7>>>>> 7n @p 7n"Dp&M7n!Bp -[n!Bp7! nwCpw#wG;pw{ @=p{ D'=pO{"D½p/{! ^BzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW* * * * * * * * * * * * * * * * * * * * * * * * * *J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J * * * * * * * * * * * * * * * * * * * * * * * * *j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6jvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN.................................................~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO =^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/6i8]E @訲7rh~)F[8?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?||{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷O~v??,hexbin/man/0000755000176200001440000000000014406412337012306 5ustar liggesusershexbin/man/pushHexport.Rd0000644000176200001440000000161013171627112015121 0ustar liggesusers\name{pushHexport} \alias{pushHexport} \title{Push a Hexagon Viewport ("hexVP")} \description{ Push a Hexagon Viewport (\code{"hexVP"}, see \link{hexVP-class}) on to the tree of (grid) viewports, calling \code{\link[grid:viewports]{pushViewport}}. } \usage{ pushHexport(hvp, clip = "off") } \arguments{ \item{hvp}{a hexagon viewport, i.e., an object of class \code{"hexVP"}, see \link{hexVP-class}, typically produced by \code{\link{hexViewport}(..)}.} \item{clip}{which viewport to push, either 'on' or 'off' are the allowed arguments, see details.} } \seealso{the underlying \code{\link[grid:viewports]{pushViewport}} from the \pkg{grid} package. } \details{ A hexagon viewport (\code{"hexVP"}) object has slots for two replicate viewports one with clipping turned on and one with clipping off. This allows toggling the clipping option. } %\examples{ %} \keyword{dplot} hexbin/man/plotMAhex.Rd0000644000176200001440000001456113171627112014502 0ustar liggesusers\name{plotMAhex} \alias{plotMAhex} \title{MA-plot using hexagon bins} \description{ Creates an MA-plot using hexagons with color/glyph coding for control spots. } \usage{ plotMAhex(MA, array = 1, xlab = "A", ylab = "M", main = colnames(MA)[array], xlim = NULL, ylim = NULL, status = NULL, values, pch, col, cex, nbin = 40, zero.weights = FALSE, style = "colorscale", legend = 1.2, lcex = 1, minarea = 0.04, maxarea = 0.8, mincnt = 2, maxcnt = NULL, trans = NULL, inv = NULL, colorcut = NULL, border = NULL, density = NULL, pen = NULL, colramp = function(n) { LinGray(n, beg = 90, end = 15) }, newpage = TRUE, type = c("p", "l", "n"), xaxt = c("s", "n"), yaxt = c("s", "n"), verbose = getOption("verbose")) } \arguments{ \item{MA}{an \code{RGList}, \code{MAList} or \code{MArrayLM} object, or any list with components \code{M} containing log-ratios and \code{A} containing average intensities. Alternatively a \code{matrix}, \code{Affybatch} or \code{ExpressionSet} object.} \item{array}{integer giving the array to be plotted. Corresponds to columns of \code{M} and \code{A}.} \item{xlab, ylab, main}{character strings giving label for x-axis, y-axis or main tile of the plot.} \item{xlim, ylim}{numeric vectors of length 2 giving limits for x-axis (or y-axis respectively), defaulting to min and max of the data.} \item{status}{character vector giving the control status of each spot on the array, of same length as the number of rows of \code{MA$M}. If omitted, all points are plotted in the default color, symbol and size.} \item{values}{character vector giving values of \code{status} to be highlighted on the plot. Defaults to unique values of \code{status}. Ignored if there is no \code{status} vector.} \item{pch}{vector or list of plotting characters. Default to integer code 16. Ignored is there is no \code{status} vector.} \item{col}{numeric or character vector of colors, of the same length as \code{values}. Defaults to \code{1:length(values)}. Ignored if there is no \code{status} vector.} \item{cex}{numeric vector of plot symbol expansions, of the the same length as \code{values}. Defaults to 0.2 for the most common status value and 1 for the others. Ignored if there is no \code{status} vector.} \item{nbin}{ Number of bins } %% << FIXME \item{zero.weights}{logical, should spots with zero or negative weights be plotted?} \item{style}{string specifying the style of hexagon plot, see \code{\link{grid.hexagons}} for the possibilities.} \item{legend}{numeric width of the legend in inches of \code{FALSE}. In the latter case, or when \code{0}, no legend is not produced.} \item{lcex}{characters expansion size for the text in the legend.} \item{minarea}{fraction of cell area for the lowest count.} \item{maxarea}{fraction of the cell area for the largest count.} \item{mincnt}{cells with fewer counts are ignored.} \item{maxcnt}{cells with more counts are ignored.} \item{trans}{\code{\link{function}} specifying a transformation for the counts such as \code{sqrt}.} \item{inv}{the inverse transformation of \code{trans}.} \item{colorcut}{vector of values covering [0, 1] that determine hexagon color class boundaries and hexagon legend size boundaries. Alternatively, an integer (\code{<= maxcnt}) specifying the \emph{number} of equispaced colorcut values in [0,1].} \item{border, density, pen}{color for polygon borders and filling of each hexagon drawn, passed to \code{\link{grid.hexagons}}.} \item{colramp}{function accepting an integer \code{n} as an argument and returning n colors.} \item{newpage}{should a new page start?} \item{type, xaxt, yaxt}{strings to be used (when set to \code{"n"}) for suppressing the plotting of hexagon symbols, or the x- or y-axis, respectively.} \item{verbose}{logical indicating if some diagnostic output should happen.} } \details{ An MA-plot is a plot of log-intensity ratios (M-values) versus log-intensity averages (A-values). If \code{MA} is an \code{RGList} or \code{MAList} then this function produces an ordinary within-array MA-plot. If \code{MA} is an \code{MArrayLM} object, then the plot is an fitted model MA-plot in which the estimated coefficient is on the y-axis and the average A-value is on the x-axis. If \code{MA} is a \code{matrix} or \code{ExpressionSet} object, then this function produces a between-array MA-plot. In this case the A-values in the plot are the average log-intensities across the arrays and the M-values are the deviations of the log-intensities for the specified array from the average. If there are more than five arrays, then the average is computed robustly using medians. With five or fewer arrays, it is computed by means. The \code{status} vector is intended to specify the control status of each spot, for example "gene", "ratio control", "house keeping gene", "buffer" and so on. The vector is usually computed using the function \code{\link[limma]{controlStatus}} from package \pkg{limma} and a spot-types file. However the function may be used to highlight any subset of spots. The arguments \code{values}, \code{pch}, \code{col} and \code{cex} can be included as attributes to \code{status} instead of being passed as arguments to \code{plotMA}. See \code{\link[graphics]{points}} for possible values for \code{pch}, \code{col} and \code{cex}. } \value{ A plot is created on the current graphics device. and a list with the following items is returned invisibly: \item{plot.vp}{the \code{\link{hexViewport}} constructed and used.} \item{legend.vp}{if a legend has been produced, its \code{\link[grid]{viewport}}.} \item{hbin}{a \code{hexbin} object built with A as the x coordinate and M as the y coordinate.} } \references{See \url{http://www.statsci.org/micrarra/refs/maplots.html}} \author{Nicholas Lewin-Koh, adapted from code by Gordon Smyth} \seealso{\code{\link[limma:plotma]{plotMA}} from package \pkg{limma}, and \code{\link{gplot.hexbin}}. } \examples{ if(require(marray)){ %% for the data only --> data(swirl, package="marray") data(swirl) hb <- plotMAhex(swirl[,1],newpage=FALSE, main = "M vs A plot with hexagons", legend=0) hexVP.abline(hb$plot.vp,h=0,col=gray(.6)) hexMA.loess(hb) } } \keyword{hplot} hexbin/man/colramp.Rd0000644000176200001440000000332513171627112014232 0ustar liggesusers\name{ColorRamps} \title{Color Ramps on Perceptually Linear Scales} \alias{ColorRamps} \alias{LinGray} \alias{BTC} \alias{BTY} \alias{LinOCS} \alias{heat.ob} \alias{magent} \alias{plinrain} \description{ Functions for returning colors on perceptually linear scales, where steps correspond to \sQuote{just detectable differences}. } \usage{ LinGray (n, beg=1, end=92) BTC (n, beg=1, end=256) LinOCS (n, beg=1, end=256) heat.ob (n, beg=1, end=256) magent (n, beg=1, end=256) plinrain(n, beg=1, end=256) } \arguments{ \item{n}{number of colors to return from the ramp} \item{beg}{begining of ramp, integer from 1-255} \item{end}{end of ramp, integer from 1-255} } \value{ returns an array of colors } \details{ Several precalulated color ramps, that are on a perceptually linear color scale. A perceptually linear color scale is a scale where each jump corresponds to a \dQuote{just detectable difference} in color and the scale is percieved as linear by the human eye (emprically determined). When using the ramps, if \code{beg} is less than \code{end} the ramp will be reversed. } \references{ Haim Levkowitz (1997) \emph{Color Theory and Modeling for Computer Graphics, Visualization, and Multimedia Applications}. Kluwer Academic Publishers, Boston/London/Dordrecht. \url{http://www.cs.uml.edu/~haim/ColorCenter/} } \seealso{ \code{\link[grDevices:palettes]{rainbow}}, \code{\link[grDevices:palettes]{terrain.colors}}, \code{\link[grDevices]{rgb}}, \code{\link[grDevices]{hsv}} } \examples{ h <- hexbin(rnorm(10000),rnorm(10000)) plot(h, colramp= BTY) ## looks better if you shave the tails: plot(h, colramp= function(n){LinOCS(n,beg=15,end=225)}) } \author{Nicholas Lewin-Koh} \keyword{color} hexbin/man/hexVP.abline.Rd0000644000176200001440000000303613171627112015057 0ustar liggesusers\name{hexVP.abline} \alias{hexVP.abline} \title{Add a Straight Line to a HexPlot} \description{ This function adds one or more straight lines through the current plot; it is the hexbin version of \code{\link[graphics]{abline}()}. } \usage{ hexVP.abline(hvp, a = NULL, b = NULL, h = numeric(0), v = numeric(0), col = "black", lty = 1, lwd = 2, \dots) } \arguments{ \item{hvp}{A hexViewport object that is currently on the active device} \item{a,b}{the intercept and slope or if \code{b} is \code{NULL}, an \code{lm} object or a vector of length 2 with \code{c(intercept,slope)}} \item{h}{the y-value for a horizontal line.} \item{v}{the x-value for a vertical line.} \item{col, lty, lwd}{line color, type and width.} \item{\dots}{further graphical parameters.} } \details{ The first form specifies the line in intercept/slope form (alternatively \code{a} can be specified on its own and is taken to contain the slope and intercept in vector form). The \code{h=} and \code{v=} forms draw horizontal and vertical lines at the specified coordinates. The \code{coef} form specifies the line by a vector containing the slope and intercept. \code{lm} is a regression object which contains \code{reg$coef}. If it is of length 1 then the value is taken to be the slope of a line through the origin, otherwise, the first 2 values are taken to be the intercept and slope. } \author{Nicholas Lewin-Koh} \seealso{\code{\link{gplot.hexbin}}, \code{\link{hexViewport}}, \code{\link{hexMA.loess}} } \keyword{aplot} hexbin/man/smooth.hexbin.Rd0000644000176200001440000000611413171627112015361 0ustar liggesusers\name{smooth.hexbin} \alias{smooth.hexbin} \alias{smoothbin-class} \title{Hexagon Bin Smoothing} \description{ Given a \code{"hexbin"} (hexagon bin) object, compute a discrete kernel smoother that covers seven cells, namely a center cell and its six neighbors. With two iterations the kernel effectively covers 1+6+12=19 cells. } \usage{ smooth.hexbin(bin, wts=c(48,4,1)) } \arguments{ \item{bin}{object of class \code{"hexbin"}, typically resulting from \code{\link{hexbin}()} or \code{\link{erode,hexbin-method}}.} \item{wts}{numeric vector of length 3 for relative weights of the center, the six neighbor cells, and twelve second neighbors.} } \value{ an object of class \code{"smoothbin"}, extending class \code{"hexbin"}, see \code{\link{hexbin}}. The object includes the additional slot \code{wts}. } \references{see \code{\link{grid.hexagons}} and \code{\link{hexbin}}.} \details{ This discrete kernel smoother uses the center cell, immediate neighbors and second neighbors to smooth the counts. The counts for each resulting cell is a linear combination of previous cell counts and weights. The weights are \tabular{ll}{ 1 center cell, \tab weight = wts[1]\cr 6 immediate neighbors\tab weight = wts[2]\cr 12 second neighbors \tab weight =wts[3]\cr } If a cell, its immediate and second neighbors all have a value of \code{max(cnt)}, the new maximum count would be \code{max(cnt)*sum(wts)}. It is possible for the counts to overflow. The domain for cells with positive counts increases. The hexbin slots \code{xbins}, \code{xbnds}, \code{ybnds}, and \code{dimen} all reflect this increase. Note that usually \code{dimen[2] = xbins+1}. The intent was to provide a fast, iterated, immediate neighbor smoother. However, the current hexbin plotting routines only support shifting even numbered rows to the right. Future work can (1) add a shift indicator to hexbin objects that indicates left or right shifting.\cr (2) generalize plot.hexbin() and hexagons()\cr (3) provide an iterated kernel.\cr With \code{wts[3]=0}, the smoother only uses the immediate neighbors. With a shift indicator the domain could increase by 2 rows (one bottom and on top) and 2 columns (one left and one right). However the current implementation increases the domain by 4 rows and 4 columns, thus reducing plotting resolution. } \seealso{ \code{\link{hexbin}}, \code{\link{erode.hexbin}}, %MISSING \code{\link{hthin}}, \code{\link{hcell2xy}},% \code{\link{hcell}}, \code{\link{gplot.hexbin}}, \code{\link{hboxplot}}, %\code{\link{hdiffplot}}, \code{\link{hmatplot}}, \code{\link{grid.hexagons}}, \code{\link{grid.hexlegend}}. } \examples{ x <- rnorm(10000) y <- rnorm(10000) bin <- hexbin(x,y) # show the smooth counts in gray level smbin <- smooth.hexbin(bin) plot(smbin, main = "smooth.hexbin(.)") # Compare the smooth and the origin smbin1 <- smbin smbin1@count <- as.integer(ceiling(smbin@count/sum(smbin@wts))) plot(smbin1) smbin2 <- smooth.hexbin(bin,wts=c(1,0,0)) # expand the domain for comparability plot(smbin2) } \keyword{misc} hexbin/man/hexViewport.Rd0000644000176200001440000000355513171627112015126 0ustar liggesusers\name{hexViewport} \alias{hexViewport} \title{Compute a Grid Viewport for Hexagon / Hexbin Graphics} \description{ Builds a \code{grid} viewport for hexagon or \code{\link{hexbin}} graphics. This builds on the concepts of the \pkg{grid} package, see \code{\link[grid]{viewport}}. } \usage{% see ../R/hexViewport.R hexViewport(x, offset = unit(0,"inches"), mar = NULL, xbnds = NULL, ybnds = NULL, newpage = FALSE, clip = "off", vp.name = NULL) } \arguments{ \item{x}{a \code{\link{hexbin}} object.} \item{offset}{a \code{\link[grid]{unit}} object.} \item{mar}{margins as \code{\link[grid]{unit}}s, of length 4 or 1.} \item{xbnds, ybnds}{bounds for x- and y- plotting range; these default to the corresponding slots of \code{x}.} \item{newpage}{logical indicating if a new graphics page should be openend, i.e., \code{\link[grid]{grid.newpage}()}.} \item{clip}{simply passed to \code{\link[grid]{viewport}()}.} \item{vp.name}{name of viewport; defaults to random name.} } \value{ an S4 object of class \code{"hexVP"}, see \link{hexVP-class} for more, with its main slot \code{hexVp} a \code{\link[grid]{viewport}} for grid graphics. } \seealso{\code{\link[grid]{viewport}} and the main \emph{\dQuote{handlers}} \code{\link{pushHexport}} and \code{\link[grid:viewports]{popViewport}}; further \code{\link{gplot.hexbin}} and \code{\link{hboxplot}} which build on \code{hexViewport}. } \examples{ set.seed(131) x <- rnorm(7777) y <- rt (7777, df=3) ## lower resolution binning and overplotting with counts bin <- hexbin(x,y,xbins=25) P <- plot(bin) xy <- hcell2xy(bin) pushHexport(P$plot.vp) i <- bin@count <= 3 library("grid") grid.text(as.character(bin@count[i]), xy$x[i], xy$y[i], default.units = "native") grid.points(x[1:20],y[1:20]) # to show some points rather than counts popViewport() } \keyword{hplot}% ? \keyword{aplot} hexbin/man/erode.hexbin.Rd0000644000176200001440000000520714406412337015153 0ustar liggesusers\name{erode.hexbin} \alias{erode} \alias{erode.hexbin} \alias{erode,hexbin-method} \alias{erodebin-class} \title{Erosion of a Hexagon Count Image} \description{ This erosion algorithm removes counts from hexagon cells at a rate proportional to the cells' exposed surface area. When a cell becomes empty, algorithm removes the emptied cell and notes the removal order. Cell removal increases the exposure of any neighboring cells. The last cell removed is a type of bivariate median. } \usage{ erode(hbin, cdfcut = 0.5) erode.hexbin(hbin, cdfcut = 0.5) } \arguments{ \item{hbin}{an object of class \code{\link{hexbin}}.} \item{cdfcut}{number in (0,1) indicating the confidence level for the limits.} } \value{ An \code{"erodebin"} object (with all the slots from \code{hbin}) and additionally with high count cells and a component \code{erode} that gives the erosion order. } \details{ The algorithm extracts high count cells with containing a given fraction (cdfcut) of the total counts. The algorithm extracts all cells if cdfcut=0. The algorithm performs gray-level erosion on the extracted cells. Each erosion cycle removes counts from cells. The counts removed for each cell are a multiple of the cell's exposed-face count. The algorithm choses the multiple so at least one cell will be empty or have a count deficit on each erosion cycle. The erode vector contain an erosion number for each cell. The value of erode is 6*erosion_cycle_at_cell_removal - cell_deficit_at_removal Cells with low values are eroded first. The cell with the highest erosion number is a candidate bivariate median. A few ties in erode are common. } \seealso{ \code{\link{hexbin}}, \code{\link{smooth.hexbin}}, \code{\link{hcell2xy}}, %%FIXME\code{\link{hcell}}, %% \code{\link{hboxplot}}, \code{\link{hdiffplot}}, %% \code{\link{hmatplot}}, \code{\link{gplot.hexbin}}, \code{\link{grid.hexagons}}, \code{\link{grid.hexlegend}} } \examples{ set.seed(153) x <- rnorm(10000) y <- rnorm(10000) bin <- hexbin(x,y) smbin <- smooth.hexbin(bin) erodebin <- erode.hexbin(smbin, cdfcut=.5) plot(erodebin) ## bivariate boxplot hboxplot(erodebin, main = "hboxplot(erodebin)") %% MM: This looks wrong -- both the graphic and the logic in "par" here : # show erosion order plot(bin,style= "lat", minarea=1, maxarea=1, legend=FALSE, border=gray(.7)) %% FIXME: {compare with example in "hexbin0"} grid.hexagons(erodebin,style= "lat", minarea=1, maxarea=1,pen="green") xy <- hcell2xy(erodebin) library("grid") grid.text(lab = as.character(erodebin@erode), xy$x, xy$y, gp = gpar(col="white", cex=0.65)) } \keyword{hplot} hexbin/man/hboxplot.Rd0000644000176200001440000000660213171627112014435 0ustar liggesusers\name{hboxplot} \alias{hboxplot} \title{2-D Generalization of Boxplot} \description{ If \code{bin} is an \emph{eroded} \code{\link{hexbin}} object, i.e., an \code{erodebin} object, \code{hboxplot()} plots the high counts cells selected by \code{\link{erode}()}. By default, the high counts cells contain 50 percent of the counts so analagous to the interquartile \dQuote{range}. The function distinguishes the last cells eroded using color. These cells correspond to one definition of the bivariate median. %% FIXME ^^ (bad style, content +- ok) } \usage{ hboxplot(bin, xbnds = NULL, ybnds = NULL, density, border = c(0, grey(0.7)), pen = c(2, 3), unzoom = 1.1, clip ="off", reshape = FALSE, xlab = NULL, ylab = NULL, main = "") } \arguments{ \item{bin}{an object of class \code{\link{hexbin}}.} \item{xbnds,ybnds}{global x- and y-axis plotting limits for multiple plots.} \item{density, border}{arguments for \code{\link{polygon}()} each of length two, the first for the median, the second for the other cells.} \item{pen}{colors (\dQuote{pen numbers}) for \code{polygon()}.} \item{unzoom}{plot limit expansion factor when \code{xbnds} is missing.} \item{clip}{either 'on' or 'off' are the allowed arguments, when on everything is clipped to the plotting region.} \item{reshape}{logical value to reshape the plot although \code{xbnds} and \code{ybnds} are present.} \item{xlab, ylab, main}{x- and y- axis labels and main title} } \value{ invisibly, the \code{\link{hexViewport}()} used internally. Used to add to the plot afterwards. } \references{ see in \code{\link{grid.hexagons}}.} \details{ The \code{density}, \code{border}, and \code{pen} arguments correspond to the \code{\link{polygon}} function calls for plotting two types of cells. The cell types, pen numbers and suggested colors are\cr \tabular{lll}{ TYPE \tab PEN \tab COLOR \cr cells of bin \tab 2 \tab light gray \cr last eroded cells of bin (median cells)\tab 1 \tab black \cr } The erode components of the hexbin objects must be present for the medians cells to plot. When \code{xbnds} is missing or \code{reshape} is true, the plot changes graphics parameters and resets them. When \code{xbnds} is missing the function also zooms in based on the available data to provide increased resolution. The zoom used the hexagon cell centers. The unzoom argument backs off a bit so the whole hexagon will fit in the plot. \code{Hboxplot()} is used as a stand alone function, for producing separate legends .....%%FIXME for \code{\link{hmatplot}()} and for panels in %% \code{\link{hmatplot}()}. } \seealso{ \code{\link{hexbin}}, \code{\link{erode}}, %\code{\link{smooth.hexbin}}, \code{\link{hcell2xy}},% \code{\link{hcell}}, \code{\link{gplot.hexbin}}, % \code{\link{hmatplot}}, \code{\link{grid.hexagons}}, \code{\link{grid.hexlegend}} } \examples{ \dontshow{set.seed(753)} ## boxplot of smoothed counts x <- rnorm(10000) y <- rnorm(10000) bin <- hexbin(x,y) erodebin <- erode(smooth.hexbin(bin)) hboxplot(erodebin) hboxplot(erodebin, density = c(32,7), border = c(2,4)) hp <- hboxplot(erodebin, density = c(-1,17), main = "hboxplot(erode*(smooth*(.)))") pushHexport(hp) library("grid") grid.points(x[1:10], y[1:10])# just non-sense to show the principle popViewport() } \keyword{hplot} hexbin/man/hexMA.loess.Rd0000644000176200001440000000304513775713071014734 0ustar liggesusers\name{hexMA.loess} \alias{hexVP.loess} \alias{hexMA.loess} \title{Add Loess Fit to Hexplot } \description{ Fit a loess line using the hexagon centers of mass as the x and y coordinates and the cell counts as weights. } \usage{ hexMA.loess(pMA, span = 0.4, col = "red", n = 200, ...) hexVP.loess(hbin, hvp = NULL, span = 0.4, col = "red", n = 200, ...) } \arguments{ \item{hbin}{an object of class \code{hexbin}, see \code{\link{hexbin}}.} \item{hvp}{A \code{hexViewport} object.} \item{pMA}{the list returned by \code{\link{plotMAhex}}.} \item{span}{the parameter alpha which controls the degree of smoothing.} \item{col}{line color for the loess fit.} \item{n}{number of points at which the fit should be evaluated.} \item{...}{Additional graphical parameter settings for the \code{loess} line fit; see \code{\link[grid]{gpar}}.}} \value{ Returns invisibly the object associated with the loess fit. } \author{Nicholas Lewin-Koh } \seealso{ \code{\link{hexVP.abline}}, \code{\link{plotMAhex}}, \code{\link{gplot.hexbin}}, \code{\link{hexViewport}}; \code{\link{loess}} } \examples{ if(require(marray)){ data(swirl) %% the following had 'newpage = FALSE, ' -- why ?? hb <- plotMAhex(swirl[,1], main = "M vs A plot with hexagons", legend=0) hexVP.abline(hb$plot, h=0, col= gray(.6)) hexMA.loess(hb) } dat <- data.frame(x=rnorm(1000), y=rnorm(1000)) bin <- hexbin(dat$x, dat$y) hb <- plot(bin) hexVP.loess(bin, hvp = hb$plot.vp, span = 0.4, n = 200, col = "blue", lwd = 3, lty = "dashed") } \keyword{aplot} hexbin/man/list2hexList.Rd0000644000176200001440000000066513171627112015177 0ustar liggesusers\name{list2hexList} \alias{list2hexList} \title{Convert list to hexList} \description{ Converts a list of hexbin objects with same xbnds, ybnds, shape and xbins to a \code{\link{hexList}} object. } \usage{ list2hexList(binlst) } \arguments{ \item{binlst}{A list of hexbin objects} } \value{ a \code{\link{hexList}} object } \author{Nicholas Lewin-Koh} \seealso{\code{\link{hexList}},\code{\link{hdiffplot}} } \keyword{misc} hexbin/man/hexbinplot.Rd0000644000176200001440000002153413171627112014753 0ustar liggesusers\name{hexbinplot} \alias{hexbinplot} \alias{hexbinplot.formula} \alias{panel.hexbinplot} \alias{prepanel.hexbinplot} \alias{hexlegendGrob} \title{Trellis Hexbin Displays} \description{ Display of hexagonally binned data, as implemented in the \code{hexbin} packge, under the Trellis framework, with associated utilities. \code{hexbinplot} is the high level generic function, with the \code{"formula"} method doing the actual work. \code{prepanel.hexbinplot} and \code{panel.hexbinplot} are associated prepanel and panel functions. \code{hexlegendGrob} produces a suitable legend. } \usage{ hexbinplot(x, data, \dots) \method{hexbinplot}{formula}(x, data = NULL, prepanel = prepanel.hexbinplot, panel = panel.hexbinplot, groups = NULL, aspect = "xy", trans = NULL, inv = NULL, colorkey = TRUE, \dots, maxcnt, legend = NULL, legend.width = TRUE, subset) prepanel.hexbinplot(x, y, type = character(0), \dots) panel.hexbinplot(x, y, ..., groups = NULL) hexlegendGrob(legend = 1.2, inner = legend / 5, cex.labels = 1, cex.title = 1.2, style = "colorscale", minarea = 0.05, maxarea = 0.8, mincnt = 1, maxcnt, trans = NULL, inv = NULL, colorcut = seq(0, 1, length = 17), density = NULL, border = NULL, pen = NULL, colramp = function(n) { LinGray(n,beg = 90,end = 15) }, \dots, vp = NULL, draw = FALSE) } \arguments{ \item{x}{ For \code{hexbinplot}, the object on which method dispatch is carried out. For the \code{"formula"} methods, a formula describing the form of conditioning plot. Formulas that are valid for \code{xyplot} are acceptable. In \code{panel.hexbinplot}, the x variable. } \item{y}{ In \code{panel.hexbinplot}, the y variable. } \item{data}{For the \code{formula} method, a data frame containing values for any variables in the formula, as well as \code{groups} and \code{subset} if applicable (using \code{groups} currently causes an error with the default panel function). By default, the environment where the function was called from is used. } \item{minarea, maxarea, mincnt, maxcnt, trans, inv, colorcut, density, border, pen, colramp, style}{ see \code{\link[hexbin:gplot.hexbin]{gplot.hexbin}} } \item{prepanel, panel, aspect}{ See \code{\link[lattice]{xyplot}}. \code{aspect="fill"} is not allowed. The current default of \code{"xy"} may not always be the best choice, often \code{aspect=1} will be more reasonable. } \item{colorkey}{logical, whether a legend should be drawn. Currently a legend can be drawn only on the right. } \item{legend.width, legend}{ width of the legend in inches when \code{style} is \code{"nested.lattice"} or \code{"nested.centroids"}. The name \code{legend.width} is used to avoid conflict with the standard trellis argument \code{legend}. It is possible to specify additional legends using the \code{legend} or \code{key} arguments as long as they do not conflict with the hexbin legend (i.e., are not on the right). } \item{inner}{ Inner radius in inches of hexagons in the legend when \code{style} is \code{"nested.lattice"} or \code{"nested.centroids"}. } \item{cex.labels, cex.title}{ in the legend, multiplier for numeric labels and text annotation respectively } \item{type}{ character vector controlling additional augmentation of the display. A \code{"g"} in \code{type} adds a reference grid, \code{"r"} adds a regression line (y on x), \code{"smooth"} adds a loess smooth } \item{draw}{ logical, whether to draw the legend grob. Useful when \code{hexlegendGrob} is used separately } \item{vp}{ grid viewport to draw the legend in } \item{\dots}{ extra arguments, passed on as appropriate. Arguments to \code{\link[hexbin:gplot.hexbin]{gplot.hexbin}}, \code{\link[lattice]{xyplot}}, \code{panel.hexbinplot} and \code{hexlegendGrob} can be supplied to the high level \code{hexbinplot} call. \code{panel.hexbinplot} calls one of two (unexported) low-level functions depending on whether \code{groups} is supplied (although specifying \code{groups} currently leads to an error). Arguments of the appropriate function can be supplied; some important ones are \describe{ \item{\code{xbins}:}{ number of hexagons covering x values. The number of y-bins depends on this, the aspect ratio, and \code{xbnds} and \code{ybnds}} \item{\code{xbnds, ybnds}:}{ Numeric vector specifying range of values that should be covered by the binning. In a multi-panel display, it is not necessarily a good idea to use the same bounds (which along with \code{xbins} and the aspect ratio determine the size of the hexagons) for all panels. For example, when data is concentrated in small subregions of different panels, more detail will be shown by using smaller hexagons covering those regions. To control this, \code{xbnds} and \code{ybnds} can also be character strings \code{"panel"} or \code{"data"} (which are not very good names and may be changed in future). In the first case, the bounds are taken to be the limits of the panel, in the second case, the limits of the data (packet) in that panel. Note that all panels will have the same limits (enough to cover all the data) by default if \code{relation="free"} in the standard trellis argument \code{scales}, but not otherwise.} } } \item{groups}{ in \code{hexbinplot}, a grouping variable that is evaluated in \code{data}, and passed on to the panel function. } \item{subset}{ an expression that is evaluated in evaluated in \code{data} to produce a logical vector that is used to subset the data before being used in the plot. } } \details{ The panel function \code{panel.hexbinplot} creates a hexbin object from data supplied to it and plots it using \code{\link[hexbin:grid.hexagons]{grid.hexagons}}. To make panels comparable, all panels have the same \code{maxcnt} value, by default the maximum count over all panels. This default value can be calculated only if the aspect ratio is known, and so \code{aspect="fill"} is not allowed. The default choice of aspect ratio is different from the choice in \code{hexbin} (namely, \code{1}), which may sometimes give better results for multi-panel displays. \code{xbnds} and \code{ybnds} can be numeric range vectors as in \code{hexbin}, but they can also be character strings specifying whether all panels should have the same bins. If they are not, then bins in different panels could be of different sizes, in which case \code{style="lattice"} and \code{style="centroids"} should be interpreted carefully. The dimensions of the legend and the size of the hexagons therein are given in absolute units (inches) by \code{legend.width} and \code{inner} only when \code{style} is \code{"nested.lattice"} or \code{"nested.centroids"}. For other styles, the dimensions of the legend are determined relative to the plot. Specifically, the height of the legend is the same as the height of the plot (the panel and strip regions combined), and the width is the minimum required to fit the legend in the display. This is different in some ways from the \code{hexbin} implementation. In particular, the size of the hexagons in the legend are completely unrelated to the sizes in the panels, which is pretty much unavoidable because the sizes need not be the same across panels if \code{xbnds} or \code{ybnds} is \code{"data"}. The size of the hexagons encode information when \code{style} is \code{"lattice"} or \code{"centroids"}, consequently a warning is issued when a legend is drawn with wither of these styles. } \value{ \code{hexbinplot} produces an object of class \code{"trellis"}. The \code{update} method can be used to update components of the object and the \code{print} method (usually called by default) will plot it on an appropriate plotting device. \code{hexlegendGrob} produces a \code{"grob"} (grid object). } \author{ Deepayan Sarkar \email{deepayan.sarkar@r-project.org}} \seealso{ \code{\link{hexbin}}, \code{\link[lattice]{xyplot}} } \examples{ mixdata <- data.frame(x = c(rnorm(5000),rnorm(5000,4,1.5)), y = c(rnorm(5000),rnorm(5000,2,3)), a = gl(2, 5000)) hexbinplot(y ~ x, mixdata, aspect = 1, trans = sqrt, inv = function(x) x^2) hexbinplot(y ~ x | a, mixdata) hexbinplot(y ~ x | a, mixdata, style = "lattice", xbnds = "data", ybnds = "data") hexbinplot(y ~ x | a, mixdata, style = "nested.centroids") hexbinplot(y ~ x | a, mixdata, style = "nested.centroids", border = FALSE, type = c("g", "smooth")) } \keyword{dplot} hexbin/man/hdiffplot.Rd0000644000176200001440000001241313171627112014552 0ustar liggesusers\name{hdiffplot} \alias{hdiffplot} \title{Plot of Domain and Median Differences of Two "hexbin" Objects} \description{ Let \code{bin1} and \code{bin2} represent two \code{\link{hexbin}} objects with scaling, plot shapes, and bin sizes. This plot distinguishes cells unique to \code{bin1}, cells in common, and cells unique to \code{bin2} using color. When the erode components are present, color also distinguishes the two erosion medians. An arrow shows the vector from the median of \code{bin1} to the median of \code{bin2}. } \usage{ hdiffplot(bin1, bin2 = NULL, xbnds, ybnds, focus = NULL,% if(is.null(bin2)) 1:length(bin1) else c(1, 2), col.control = list(medhex = "white", med.bord = "black", focus = NULL, focus.border = NULL, back.col = "grey"), arrows = TRUE, size = unit(0.1, "inches"), lwd = 2, eps = 1e-6, unzoom = 1.08, clip="off", xlab = "", ylab = "", main = deparse(mycall), \dots) } \arguments{ \item{bin1, bin2}{two objects of class \code{\link{hexbin}}.} \item{xbnds,ybnds}{global x- and y-axis plotting limits. Used primarily for multiple comparison plots.} %%%------- FIXME -------- \item{focus}{a vector of integers specifying which hexbin objects should be treated as focal. Excluded hexbins are treated as background.} \item{col.control}{a list for detailed color control.}%% <<< FIXME \item{arrows}{a logical indicating wheter or not to draw arrows between the focal hexbin objects median cells.} %not yet \item{density}{fill arguments to polygon} %not yet \item{pen}{pen numbers for polgyon} \item{border}{border arguments to polygon} \item{size}{arrow type size in inches.} \item{eps}{distance criteria for distinct medians} \item{unzoom}{plot limit expansion factor when xbnds is missing} \item{clip}{either 'on' or 'off' are the allowed arguments, when on everything is clipped to the plotting region.} \item{lwd}{Line width for arrows, ignored when \code{arrows=FALSE} or when bins have no erosion component} \item{xlab}{label for x-axis} \item{ylab}{label for y-axis} \item{main}{main title for the plot; automatically constructed by default.} \item{\dots}{...............} } % \value{ % ((currently unspecified --- proposals are welcome))%% FIXME % } \details{ The hexbin objects for comparison, \code{bin1} and \code{bin2}, must have the same plotting limits and cell size. The plot produces a comparison overlay of the cells in the two objects. If external global scaling is not supplied, the algorithm determines plotting limits to increase resolution. For example, the objects may be the result of the \code{\link{erode.hexbin}()} and include only high count cells containing 50 of the counts. The density, border, and pen arguments correspond to the polygon function calls for plotting six types of cells. The cell types are respectively: \tabular{l}{ unique cells of bin1,\cr joint cells,\cr unique cells of bin2,\cr median cell of bin1,\cr median cell of bin2,\cr median cell if identical.\cr } The \code{erode} components of the hexbin objects must be present for the medians to plot. The algorithm select a single cell for the median if there are algorithmic ties. %% FIXME: no 'pen' argument anymore .. (?) The \code{pen} numbers for types of cells start at Pen 2. Pen 1 is presumed black. The suggested six additional colors are light blue, light gray, light red, blue, red, and black. Carr (1991) shows an example for black and white printing. That plot changes the six colors to light gray, dark gray, white, black, black, and black. It changes the 4th, 5th, and 6th argument of border to TRUE. It also changes 4th, 5th and 6th argument of density to 0. In other words cells in common do not show and medians cells appear as outlines. When \code{xbnds} is missing, the plot changes graphics parameters and resets them. The function also zooms in based on the available data to provide increased resolution. } \references{ see in \code{\link{grid.hexagons}}.}%>> ./hexagons.Rd \seealso{ \code{\link{hexbin}}, \code{\link{smooth.hexbin}}, \code{\link{erode.hexbin}}, % MISSING: hthin, \code{\link{hcell2xy}}, % \code{\link{hcell}}, \code{\link{gplot.hexbin}}, \code{\link{hboxplot}}, % \code{\link{hmatplot}}, \code{\link{grid.hexagons}}, \code{\link{grid.hexlegend}}. } \examples{ ## Comparison of two bivariate boxplots x1 <- rnorm(10000) y1 <- rnorm(10000) x2 <- rnorm(10000,mean=.5) y2 <- rnorm(10000,mean=.5) xbnds <- range(x1,x2) ybnds <- range(y1,y2) bin1 <- hexbin(x1,y1,xbnds=xbnds,ybnds=ybnds) bin2 <- hexbin(x2,y2,xbnds=xbnds,ybnds=ybnds) erodebin1 <- erode.hexbin(smooth.hexbin(bin1)) erodebin2 <- erode.hexbin(smooth.hexbin(bin2)) hdiffplot(erodebin1,erodebin2) ## Compare *three* of them: -------------------- x3 <- rnorm(10000,mean=-1) y3 <- rnorm(10000,mean=-.5) xbnds <- range(x1,x2,x3) ybnds <- range(y1,y2,y3) bin1 <- hexbin(x1,y1,xbnds=xbnds,ybnds=ybnds) bin2 <- hexbin(x2,y2,xbnds=xbnds,ybnds=ybnds) bin3 <- hexbin(x3,y3,xbnds=xbnds,ybnds=ybnds) erodebin1 <- erode.hexbin(smooth.hexbin(bin1)) erodebin2 <- erode.hexbin(smooth.hexbin(bin2)) erodebin3 <- erode.hexbin(smooth.hexbin(bin3)) bnlst <- list(b1=erodebin1, b2=erodebin2, b3=erodebin3) hdiffplot(bnlst) } \keyword{hplot} hexbin/man/hexplom.Rd0000644000176200001440000000570413171627112014254 0ustar liggesusers\name{hexplom} \title{Hexbin Plot Matrices} \alias{hexplom} \alias{hexplom.formula} \alias{hexplom.data.frame} \alias{hexplom.matrix} \alias{panel.hexplom} \usage{ hexplom(x, data, \dots) \method{hexplom}{formula}(x, data = NULL, \dots) \method{hexplom}{data.frame}(x, data = NULL, \dots, groups = NULL, subset = TRUE) \method{hexplom}{matrix}(x, data = NULL, \dots, groups = NULL, subset = TRUE) panel.hexplom(\dots) } \description{ \code{hexplom} draws Conditional Hexbin Plot Matrices. It is similar to \code{splom}, expect that the default display is different. Specifically, the default display is created using \code{panel.hexplom}, which is an alias for \code{panel.hexbinplot}. } \arguments{ \item{x}{ The object on which method dispatch is carried out. For the \code{"formula"} method, a formula describing the structure of the plot, which should be of the form \code{~ x | g1 * g2 * \dots}, where \code{x} is a data frame or matrix. Each of \code{g1, g2, \dots} must be either factors or shingles. The conditioning variables \code{g1, g2, \dots} may be omitted. For the \code{data.frame} and \code{matrix} methods, a data frame or matrix as appropriate. } \item{data}{ For the \code{formula} method, an optional data frame in which variables in the formula (as well as \code{groups} and \code{subset}, if any) are to be evaluated. By default, the environment where the function was called from is used. } \item{groups, subset, \dots}{ see \code{\link[lattice]{splom}}. The non-standard evaluation of \code{groups} and \code{subset} only applies in the \code{formula} method. Apart from arguments that apply to \code{splom} (many of which are only documented in \code{\link[lattice]{xyplot}}), additional arguments meant for \code{panel.hexplom} (which is an alias for \code{\link{panel.hexbinplot}}) may also be supplied. Such arguments may include ones that control details of the hexbin calculations, documented in \code{\link{gplot.hexbin}}} } \value{ An object of class \code{"trellis"}. The \code{\link[lattice:update.trellis]{update}} method can be used to update components of the object and the \code{\link[lattice:print.trellis]{print}} method (usually called by default) will plot it on an appropriate plotting device. } \seealso{ \code{\link[lattice]{splom}}, \code{\link[lattice]{xyplot}}, \code{\link[hexbin]{hexbinplot}}, \code{\link[lattice]{Lattice}}, \code{\link[lattice]{panel.pairs}} } \author{ Deepayan Sarkar \email{Deepayan.Sarkar@R-project.org}, Nicholas Lewin-Koh \email{nikko@hailmail.net}} \examples{ ## Simple hexplom data(NHANES) hexplom(~NHANES[,7:14], xbins=15) ## With colors and conditioning hexplom(~NHANES[,9:13] | Sex, data = NHANES, xbins = 15, colramp = magent) ## With custom panel function hexplom(NHANES[,9:13], xbins = 20,colramp = BTY, upper.panel = panel.hexboxplot) } \keyword{hplot} hexbin/man/gplot.hexbin.Rd0000644000176200001440000001346213616020656015205 0ustar liggesusers\name{gplot.hexbin} \alias{gplot.hexbin} \alias{plot,hexbin,missing-method} \title{Plotting Hexagon Cells with a Legend} \description{ Plots Hexagons visualizing the counts in an hexbin object. Different styles are availables. Provides a legend indicating the count representations. } \usage{ %% In future: No longer export gplot.hexbin() ! gplot.hexbin(x, style = "colorscale", legend = 1.2, lcex = 1, minarea = 0.04, maxarea = 0.8, mincnt = 1, maxcnt = max(x@count), trans = NULL, inv = NULL, colorcut = seq(0, 1, length = min(17, maxcnt)), border = NULL, density = NULL, pen = NULL, colramp = function(n) LinGray(n,beg = 90,end = 15), xlab = "", ylab = "", main = "", newpage = TRUE, type = c("p", "l", "n"), xaxt = c("s", "n"), yaxt = c("s", "n"), clip = "on", verbose = getOption("verbose")) %% FIXME: This is the S4 plot method for 'hexbin' %% currently also exported "standalone" - for testing,debugging.. %% we'd really don't want to repeat the argument list; use \synopsis{.} ? \S4method{plot}{hexbin,missing}(x, style = "colorscale", legend = 1.2, lcex = 1, minarea = 0.04, maxarea = 0.8, mincnt = 1, maxcnt = max(x@count), trans = NULL, inv = NULL, colorcut = seq(0, 1, length = min(17, maxcnt)), border = NULL, density = NULL, pen = NULL, colramp = function(n) LinGray(n,beg = 90,end = 15), xlab = "", ylab = "", main = "", newpage = TRUE, type = c("p", "l", "n"), xaxt = c("s", "n"), yaxt = c("s", "n"), clip = "on", verbose = getOption("verbose")) } \arguments{ \item{x}{an object of class \code{\link{hexbin}}.} % \item{y}{(required by the S4 method for \code{\link{plot}} but unused % here; must be missing)} \item{style}{string specifying the style of hexagon plot, see \code{\link{grid.hexagons}} for the possibilities.} \item{legend}{numeric width of the legend in inches of \code{FALSE}. In the latter case, or when \code{0}, no legend is not produced.} \item{lcex}{characters expansion size for the text in the legend} \item{minarea}{fraction of cell area for the lowest count} \item{maxarea}{fraction of the cell area for the largest count} \item{mincnt}{cells with fewer counts are ignored.} \item{maxcnt}{cells with more counts are ignored.} \item{trans}{\code{\link{function}} specifying a transformation for the counts such as \code{sqrt}.} % FIXME: use better description of these in hexagons() -- or use same % ---- help page ?! \item{inv}{the inverse transformation of \code{trans}.} \item{colorcut}{vector of values covering [0, 1] that determine hexagon color class boundaries and hexagon legend size boundaries. Alternatively, an integer (\code{<= maxcnt}) specifying the \emph{number} of equispaced colorcut values in [0,1].} \item{border, density, pen}{color for polygon borders and filling of each hexagon drawn, passed to \code{\link{grid.hexagons}}.} \item{colramp}{function accepting an integer \code{n} as an argument and returning n colors.} \item{xlab, ylab}{x- and y-axis label.} \item{main}{main title.} \item{newpage}{should a new page start?.} \item{type, xaxt, yaxt}{strings to be used (when set to \code{"n"}) for suppressing the plotting of hexagon symbols, or the x- or y-axis, respectively.} \item{clip}{either 'on' or 'off' are the allowed arguments, when on everything is clipped to the plotting region.} \item{verbose}{logical indicating if some diagnostic output should happen.} } \details{ This is the (S4) \code{\link{plot}} method for \code{\link{hexbin}} (and \code{erodebin}) objects (\link{erodebin-class}). To use the standalone function \code{gplot.hexbin()} is \bold{\emph{deprecated}}. For \code{style}, \code{minarea} etc, see the \bold{Details} section of \code{\link{grid.hexagons}}'s help page. The legend functionality is somewhat preliminary. Later versions may include refinements and handle extreme cases (small and large) for cell size and counts. All arguments of \code{gplot.hexbin} can also be used for the S4 \code{\link{plot}} method. } \value{ invisibly, a list with components \item{plot.vp}{the \code{\link{hexViewport}} constructed and used.} \item{legend.vp}{if a legend has been produced, its \code{\link[grid]{viewport}}.} } \references{ see in \code{\link{grid.hexagons}}.} \author{ Dan Carr \email{dcarr@voxel.galaxy.gmu.edu}, ported by Nicholas Lewin-Koh \email{kohnicho@comp.nus.edu.sg} and Martin Maechler. } \seealso{\code{\link{hexbin}}, \code{\link{hexViewport}}, \code{\link{smooth.hexbin}}, \code{\link{erode.hexbin}}, \code{\link{hcell2xy}}, \code{\link{hboxplot}}, \code{\link{hdiffplot}}. %%, \code{\link{hmatplot}}. } \examples{ ## 1) simple binning of spherical normal: x <- rnorm(10000) y <- rnorm(10000) bin <- hexbin(x,y) ## Plot method for hexbin ! ## ---- ------ -------- plot(bin) # nested lattice plot(bin, style= "nested.lattice") # controlling the colorscheme plot(bin, colramp=BTY, colorcut=c(0,.1,.2,.3,.4,.6,1)) ## 2) A mixture distribution x <- c(rnorm(5000),rnorm(5000,4,1.5)) y <- c(rnorm(5000),rnorm(5000,2,3)) bin <- hexbin(x,y) pens <- cbind(c("#ECE2F0","#A6BDDB","#1C9099"), c("#FFF7BC","#FEC44F","#D95F0E")) plot(bin, style = "nested.lattice", pen=pens) # now really crazy plot(bin, style = "nested.lattice", pen=pens,border=2,density=35) # lower resolution binning and overplotting with counts bin <- hexbin(x,y,xbins=25) P <- plot(bin, style="lattice", legend=FALSE, minarea=1, maxarea=1, border="white") ## %% FIXME! library("grid") pushHexport(P$plot.vp) xy <- hcell2xy(bin) # to show points rather than counts : grid.points(x,y,pch=18,gp=gpar(cex=.3,col="green")) grid.text(as.character(bin@count), xy$x,xy$y, gp=gpar(cex=0.3, col="red"),default.units="native") popViewport() # Be creative, have fun! } \keyword{hplot} hexbin/man/hexpolygon.Rd0000644000176200001440000000537013171627112014773 0ustar liggesusers\name{hexpolygon} \alias{hexpolygon} \alias{hexcoords} \title{Hexagon Coordinates and Polygon Drawing} \description{ Simple \sQuote{low-level} function for computing and drawing hexagons. Can be used for \sQuote{grid} (package \pkg{grid}) or \sQuote{traditional} (package \pkg{graphics}) graphics. } \usage{ hexcoords(dx, dy = NULL, n = 1, sep = NULL) hexpolygon(x, y, hexC = hexcoords(dx, dy, n = 1), dx, dy = NULL, fill = 1, border = 0, hUnit = "native", ...) } \arguments{ \item{dx,dy}{horizontal and vertical width of the hexagon(s).} \item{n}{number of hexagon \dQuote{repeats}.} \item{sep}{separator value to be put between coordinates of different hexagons. The default, \code{NULL} doesn't use a separator.} \item{x,y}{numeric vectors of the same length specifying the hexagon \emph{centers} around which to draw.} \item{hexC}{a list as returned from \code{hexcoords()}. Its component \code{no.sep} determines if grid or traditional graphics are used. The default (via default of \code{hexcoords}) is now to use grid graphics.} \item{fill,border}{passed to \code{\link[grid]{grid.polygon}} (for \pkg{grid}).} \item{hUnit}{string or \code{NULL} determining in which units (x,y) values are.} \item{\dots}{further arguments passed to \code{\link{polygon}} (for \pkg{graphics}).} } \value{ \code{hexcoords()} returns a list with components \item{x,y}{numeric vectors of length \eqn{n \times 6}{n * 6} (or \eqn{n \times 7}{n * 7} if \code{sep} is not NULL) specifying the hexagon polygon coordinates (with \code{sep} appended to each 6-tuple).} \item{no.sep}{a logical indicating if \code{sep} was \code{NULL}.} \code{hexpolygon} returns what its last \code{\link[grid]{grid.polygon}(.)} or \code{\link{polygon}(.)} call returns. } \author{Martin Maechler, originally.} \seealso{\code{\link{grid.hexagons}} which builds on these.} \examples{ str(hexcoords(1, sep = NA)) # multiple of (6 + 1) str(hexcoords(1, sep = NULL))# no separator -> multiple of 6 \dontshow{ stopifnot(3 * (6+1) == sapply(hexcoords(2, n = 3, sep = NA)[1:2], length), 6 == sapply(hexcoords(1)[1:2], length)) set.seed(1001) } ## hexpolygon()s: x <- runif(20, -2, 2) y <- x + rnorm(20) ## 1) traditional 'graphics' plot(x,y, asp = 1, "plot() + hexpolygon()") hexpolygon(x,y, dx = 0.1, density = 25, col = 2, lwd = 1.5) ## 2) "grid" : addBit <- function(bnds, f = 0.05) bnds + c(-f, f) * diff(bnds) sc <- addBit(rxy <- range(x,y))# same extents (cheating asp=1) library("grid") grid.newpage() pushViewport(plotViewport(.1+c(4,4,2,1), xscale = sc, yscale = sc)) grid.rect() grid.xaxis() grid.yaxis() grid.points(x,y) hexpolygon(x,y, hexcoords(dx = 0.1, sep=NULL), border = "blue", fill=NA) popViewport() } \keyword{dplot} \keyword{aplot} hexbin/man/old-classes.Rd0000644000176200001440000000127713171627112015012 0ustar liggesusers\name{old-classes} \title{Class "unit" and "viewport" as S4 classes} % \docType{class} \alias{unit-class} \alias{viewport-class} % \description{Package "hexbin" now uses S4 classes throughout and hence needs to \code{\link[methods]{setOldClass}} both \code{"unit"} and \code{"viewport"} (which are S3 classes from the \pkg{grid} package), in order to be able to use those in slots of its own classes. } \section{Objects from the Class}{A virtual Class: No objects may be created from it.} \section{Extends}{ Class \code{"oldClass"}, directly. } \section{Methods}{ No methods defined with class "unit" in the signature. } % \seealso{ % add link to grid ?? % } \keyword{classes} hexbin/man/hexGraphPaper.Rd0000644000176200001440000000465213171627112015337 0ustar liggesusers\name{hexGraphPaper} \alias{hexGraphPaper} \alias{hgridcent} \title{Create a Hexgon Grid} \description{ Creates a hexagon grid that can be added to a plot created with grid graphics. } \usage{ hexGraphPaper(hb, xbnds = NULL, ybnds = NULL, xbins = 30, shape = 1, add = TRUE, fill.edges = 1, fill = 0, border = 1) hgridcent(xbins, xbnds, ybnds, shape, edge.add = 0) } \arguments{ \item{hb}{a object of class \code{"hexbin"}, typically produced by \code{\link{hexbin}(*)}.} \item{xbnds, ybnds}{horizontal and vertical limits of the binning region in x or y units respectively; must be numeric vector of length 2.} \item{xbins}{the number of bins partitioning the range of xbnds.} \item{shape}{the \emph{shape} = yheight/xwidth of the plotting regions.} \item{add}{a logical value indicating whether or not to add the grid to the current plot.} \item{fill.edges}{integer number of hexagons to add around the border} \item{fill}{the fill color for the hexagons} \item{border}{the color of the border of the hexagons} \item{edge.add}{offset (typically \code{fill.edges} above) used in \code{hgridcent}.} } \details{ If a hexbin object is given then the parameters xbins and shape are ignored. Different bounds can still be specified. The \code{fill.edges} parameter should be an integer. \code{fill.edges} takes the current grid and adds a layer of hexagons around the grid for each level of fill. So for example if \code{fill.edges= 2} than the dimensions of the grid would be \code{(i,j)+4}. \code{hgridcent()} is the utility function computing the resulting list (see section \dQuote{Value}). \strong{WARNING! If using a hexVP be sure to set clip to "on", otherwise the hexagon grid will bleed over the plot edges.} } \value{ Invisibly returns a list with th following components \item{x}{The x coordinates of the grid} \item{y}{the y coordinates of the grid} \item{dimen}{a vector of length 2 gining the rows and columns of the grid} \item{dx}{the horizontal diameter of the hexagons} \item{dy}{the vertical diameter of the hexagons} } \author{Nicholas Lewin-Koh} \seealso{\code{\link{hcell2xy}}, \code{\link{hexpolygon}}, \code{\link{grid.hexagons}}} \examples{ x <- rnorm(10000) y <- rnorm(10000,x,x) hbin <- hexbin(x,y) hvp <- plot(hbin,type="n") pushHexport(hvp$plot,clip="on") hexGraphPaper(hbin,border=grey(.8)) grid.hexagons(hbin) } \keyword{aplot} \keyword{dplot} hexbin/man/hsmooth-methods.Rd0000644000176200001440000000146413171627112015721 0ustar liggesusers\name{hsmooth-methods} \docType{methods}% + generic -- still use this doctype ? \alias{hsmooth}% generic \alias{hsmooth-methods} \alias{hsmooth,hexbin-method} \title{Hexagon Bin Smoothing: Generic hsmooth() and Methods} \description{ Methods for the generic function \code{hsmooth} in package \pkg{hexbin}: There is currently only the one for \code{\link{hexbin}} objects. } \usage{ \S4method{hsmooth}{hexbin}(bin, wts) } \arguments{ \item{bin}{a \code{\link{hexbin}} object, or an extension such as \code{\link{erodebin-class}}.} \item{wts}{weights vector, see \code{\link{smooth.hexbin}}} } \section{Methods}{ \describe{ \item{bin = "hexbin"}{is just the \code{\link{smooth.hexbin}} function (for back compatibility); see its documentation, also for examples.} } } \keyword{methods} hexbin/man/grid.hexlegend.Rd0000644000176200001440000000605713171627112015471 0ustar liggesusers\name{grid.hexlegend} \alias{grid.hexlegend} \title{Add a Legend to a Hexbin Plot} \description{ Plots the legend for the \code{plot} method of \code{\link{hexbin}}. Provides a legend indicating the count representations. } \usage{ grid.hexlegend(legend, ysize, lcex, inner, style = , minarea = 0.05, maxarea = 0.8, mincnt = 1, maxcnt, trans = NULL, inv = NULL, colorcut, density = NULL, border = NULL, pen = NULL, colramp = function(n) { LinGray(n,beg = 90,end = 15) }, leg.unit = "native") } \arguments{ \item{legend}{positive number giving width of the legend in inches.} \item{ysize}{height of legend in inches} \item{lcex}{the characters expansion size for the text in the legend, see \code{\link{par}(cex=)}.} \item{inner}{the inner diameter of a hexagon in inches.} \item{style}{the hexagon style; see \code{\link{grid.hexagons}}.} \item{minarea, maxarea}{fraction of the cell area for the lowest and largest count, respectively.} \item{mincnt, maxcnt}{minimum and maximum count accepted in \code{plot}.} \item{trans}{a transformation function for the counts such as \code{\link{sqrt}}.} \item{inv}{the inverse transformation function.} \item{colorcut}{numeric vector of values covering [0, 1] the determine hexagon color classes boundaries and hexagon legend size boundaries.} \item{border}{argument for \code{\link{polygon}()}. Draw the border for each hexagon.} \item{density}{argument for \code{\link{polygon}()} filling. A \code{0} causes the polygon not to be filled.} \item{pen}{color argument used for \code{\link{polygon}(col = .)}. Determines the color with which the polygon will be filled.} \item{colramp}{function accepting an integer \code{n} as an argument and returning n colors.} \item{leg.unit}{unit to use}%FIXME } \details{ The \code{plot} method for \code{\link{hexbin}} objects calls this function to produce a legend by setting the graphics parameters, so \code{hex.legend} itself is not a standalone function. The legend function is \bold{preliminary}. Later version will include refinements and handle extreme cases (small and large) for cell size and counts. See the \bold{Details} section of \code{\link{grid.hexagons}}'s help page. } \value{ This function does not return any value. } \references{ see in \code{\link{grid.hexagons}}.} \author{ Dan Carr ported by Nicholas Lewin-Koh } \seealso{\code{\link{hexbin}}, \code{\link{grid.hexagons}}, % FIXME \code{\link{smooth.hexbin}}, \code{\link{erode.hexbin}}, % \code{\link{hcell}}, \code{\link{hcell2xy}}, \code{\link{gplot.hexbin}},% \code{\link{hboxplot}},% \code{\link{hdiffplot}}, % \code{\link{hmatplot}} } \examples{ ## Not a stand alone function; typically only called from plot.hexbin() %% Hence we should not run it here! %% FIXME: Improve hex.legend() such that it *can* be added to plots !!! \dontrun{ grid.hexlegend(legend = 2, ysize = 1,lcex=8,inner=0.2, maxcnt = 100, colorcut = c(0.5,0.5)) } } \keyword{aplot} hexbin/man/grid.hexagons.Rd0000644000176200001440000002045013171627112015333 0ustar liggesusers\name{grid.hexagons} \alias{grid.hexagons} \title{Add Hexagon Cells to Plot} \description{ Plots cells in an hexbin object. The function distinquishes among counts using 5 different styles. This function is the hexagon plotting engine from the \code{plot} method for \code{\link{hexbin}} objects. } \usage{ grid.hexagons(dat, style = c("colorscale", "centroids", "lattice", "nested.lattice", "nested.centroids", "constant.col"), use.count=TRUE, cell.at=NULL, minarea = 0.05, maxarea = 0.8, check.erosion = TRUE, mincnt = 1, maxcnt = max(dat@count), trans = NULL, colorcut = seq(0, 1, length = 17), density = NULL, border = NULL, pen = NULL, colramp = function(n){ LinGray(n,beg = 90, end = 15) }, def.unit= "native", verbose = getOption("verbose")) } \arguments{ \item{dat}{an object of class \code{hexbin}, see \code{\link{hexbin}}.} \item{style}{character string specifying the type of plotting; must be (a unique abbrevation) of the values given in \sQuote{Usage} above.} \item{use.count}{logical specifying if counts should be used.} \item{cell.at}{numeric vector to be plotted instead of counts, must besame length as the number of cells.} \item{minarea}{numeric, the fraction of cell area for the lowest count.} \item{maxarea}{the fraction of the cell area for the largest count.} \item{check.erosion}{logical indicating only eroded points should be used for \code{"erodebin"} objects; simply passed to \code{\link{hcell2xy}}, see its documentation.} \item{mincnt}{numeric; cells with counts smaller than \code{mincnt} are not shown.} \item{maxcnt}{cells with counts larger than this are not shown.} \item{trans}{a transformation function (or \code{NULL}) for the counts, e.g., \code{\link{sqrt}}.} \item{colorcut}{a vector of values covering [0, 1] which determine hexagon color class boundaries or hexagon size boundaries -- for \code{style = "colorscale"} only.} \item{density}{\code{\link[grid]{grid.polygon}} argument for shading. 0 causes the polygon not to be filled. \emph{This is not implemented (for \code{\link[grid]{grid.polygon}}) yet}.} \item{border}{\code{\link[grid]{grid.polygon}()} argument. Draw the border for each hexagon.} \item{pen}{colors for \code{\link[grid]{grid.polygon}()}. Determines the color with which the polygon will be filled.} \item{colramp}{function of an integer argument \code{n} returning n colors. \code{n} is determined }%% how? FIXME \item{def.unit}{default \code{\link[grid]{unit}} to be used.}% FIXME \item{verbose}{logical indicating if some diagnostic output should happen.} } \section{SIDE EFFECTS}{Adds hexagons to the plot.} \details{ The six plotting styles have the following effect: \describe{ \item{\code{style="lattice"} or \code{"centroids"}:}{ Plots the hexagons in different sizes based on counts. The \code{"lattice"} version centers the hexagons at the cell centers whereas \code{"centroids"} moves the hexagon centers close to the center of mass for the cells. In all cases the hexagons will not plot outside the cell unless \code{maxarea > 1}. Counts are rescaled into the interval [0,1] and colorcuts determine the class boundaries for sizes and counts. The pen argument for this style should be a single color or a vector of colors of \code{length(bin@count)}.} \item{\code{style="colorscale"}:}{ Counts are rescaled into the interval [0,1] and colorcuts determines the class boundaries for the color classes. For this style, the function passed as \code{colramp} is used to define the n colors for the n+1 color cuts. The pen argument is ignored. %% S-plus: In motif color options try polygon: black 16 white See \code{\link{LinGray}} for the default \code{colramp} and alternative \dQuote{color ramp} functions. } \item{\code{style="constant.col"}:}{ This is an even simpler alternative to \code{"colorscale"}, using constant colors (determined \code{pen} optionally). } \item{\code{style="nested.lattice"} and \code{"nested.centroids"}:}{ Counts are partitioned into classes by power of 10. The encoding nests hexagon size within powers of 10 color contours. If the pen argument is used it should be a matrix of colors with 2 columns and either \code{ceiling(log10(max(bin@count)))} or \code{length(bin@count)} rows. The default uses the \R color palatte so that pens numbers 2-11 determine colors for completely filled cell Pen 2 is the color for 1's, Pen 3 is the color for 10's, etc. Pens numbers 12-21 determine the color of the foreground hexagons. The hexagon size shows the relative count for the power of 10. Different color schemes give different effects including 3-D illusions %% S-plus : %% One motif color option for the first 4 powers is black \#BBB \#36F %% \#0E3 \#F206 \#FFF4 \#FFF %% %% A second option is for the first 5 power is black \#FFF \#08F \#192 %% \#F11 \#FF04 \#000 \#999 \#5CF \#AFA \#FAAF \#000 } } \emph{Hexagon size encoding \code{minarea} and \code{maxarea}} determine the area of the smallest and largest hexagons plotted. Both are expressed fractions of the bin cell size. Typical values might be .04 and 1. When both values are 1, all plotted hexagons are bin cell size, if \code{maxarea} is greater than 1 than hexagons will overlap. This is sometimes interesting with the lattice and centroid styles. \emph{Count scaling} \code{relcnt <- (trans(cnt)-trans(mincnt)) / (trans(maxcnt)-trans(mincnt))} \cr \code{area <- minarea + relcnt*maxarea} By default the transformation \code{trans()} is the identity function. The legend routine requires the transformation inverse for some options. \emph{Count windowing \code{mincnt} and \code{maxcnt}} Only routine only plots cells with cnts in [mincnts, maxcnts] } \references{ Carr, D. B. (1991) Looking at Large Data Sets Using Binned Data Plots, pp. 7--39 in \emph{Computing and Graphics in Statistics}; Eds. A. Buja and P. Tukey, Springer-Verlag, New York. } \author{ Dan Carr ; ported and extended by Nicholas Lewin-Koh \email{nikko@hailmail.net}. } \seealso{\code{\link{hexbin}}, \code{\link{smooth.hexbin}}, \code{\link{erode.hexbin}}, \code{\link{hcell2xy}},% \code{\link{hcell}}, \code{\link{gplot.hexbin}}, \code{\link{hboxplot}}, \code{\link{hdiffplot}}, \code{\link{grid.hexlegend}}% \code{\link{hmatplot}} } \examples{ set.seed(506) x <- rnorm(10000) y <- rnorm(10000) # bin the points bin <- hexbin(x,y) # Typical approach uses plot( ) which controls the plot shape : plot(bin, main = "Bivariate rnorm(10000)") ## but we can have more manual control: # A mixture distribution x <- c(rnorm(5000),rnorm(5000,4,1.5)) y <- c(rnorm(5000),rnorm(5000,2,3)) hb2 <- hexbin(x,y) # Show color control and overplotting of hexagons ## 1) setup coordinate system: P <- plot(hb2, type="n", main = "Bivariate mixture (10000)")# asp=1 ## 2) add hexagons (in the proper viewport): pushHexport(P$plot.vp) grid.hexagons(hb2, style= "lattice", border = gray(.1), pen = gray(.6), minarea = .1, maxarea = 1.5) library("grid") popViewport() ## How to treat 'singletons' specially: P <- plot(hb2, type="n", main = "Bivariate mixture (10000)")# asp=1 pushHexport(P$plot.vp) grid.hexagons(hb2, style= "nested.centroids", mincnt = 2)# not the single ones grid.hexagons(hb2, style= "centroids", maxcnt = 1, maxarea=0.04)# single points popViewport() %% FIXME --- this would mix grid- and traditional-graphics %% ----- would need grid-graphics for 'gpclib' -- aaargs... % # And if we had all the information... % if(require(gpclib)){ % h1 <- chull(x[1:5000], y[1:5000]) % h2 <- chull(x[5001:10000], y[5001:10000]) % h2 <- h2+5000 % h1 <- as(cbind(x[1:5000],y [1:5000])[h1, ], "gpc.poly") % h2 <- as(cbind(x,y)[h2, ], "gpc.poly") % plot(hb2, type="n", main = "Bivariate mixture (10000)")# asp=1 % % plot(h1,poly.args = list(col ="#CCEBC5"),add = TRUE) % plot(h2,poly.args = list(col ="#FBB4AE"),add = TRUE) % plot(intersect(h1, h2), poly.args = list(col = 2), add = TRUE) % grid.hexagons(hb2, style= "centroids", border = gray(.1), pen = gray(.6), % minarea = .1, maxarea = 1.5) % } } \keyword{aplot} hexbin/man/hexbin.Rd0000644000176200001440000000776613171627112014067 0ustar liggesusers\name{hexbin} \title{Bivariate Binning into Hexagon Cells} \alias{hexbin} \alias{hexbin-class} \alias{integer or NULL-class} \alias{show,hexbin-method} \alias{summary,hexbin-method} \description{ Creates a \code{"hexbin"} object. Basic components are a cell id and a count of points falling in each occupied cell. Basic methods are \code{\link[methods]{show}()}, \code{plot()} %(\link{plot.hexbin}) and \code{\link{summary}()}, but also \code{\link{erode}}. % .. \code{\link{smooth.hexbin}} } \usage{ hexbin(x, y, xbins = 30, shape = 1, xbnds = range(x), ybnds = range(y), xlab = NULL, ylab = NULL, IDs = FALSE) } \arguments{ \item{x, y}{vectors giving the coordinates of the bivariate data points to be binned. Alternatively a single plotting structure can be specified: see \code{\link[grDevices]{xy.coords}}. \code{\link{NA}}'s are allowed and silently omitted.} \item{xbins}{the number of bins partitioning the range of xbnds.} \item{shape}{the \emph{shape} = yheight/xwidth of the plotting regions.} \item{xbnds, ybnds}{horizontal and vertical limits of the binning region in x or y units respectively; must be numeric vector of length 2.} \item{xlab, ylab}{optional character strings used as labels for \code{x} and \code{y}. If \code{NULL}, sensible defaults are used.} \item{IDs}{logical indicating if the individual cell \dQuote{IDs} should be returned, see also below.} } \value{ an S4 object of class \code{"hexbin"}. It has the following slots: \item{cell}{vector of cell ids that can be mapped into the (x,y) bin centers in data units.} \item{count}{vector of counts in the cells.} \item{xcm}{The x center of mass (average of x values) for the cell.} \item{ycm}{The y center of mass (average of y values) for the cell.} \item{xbins}{ number of hexagons across the x axis. hexagon inner diameter =diff(xbnds)/xbins in x units} \item{shape}{plot shape which is yheight(inches) / xwidth(inches)} \item{xbnds}{x coordinate bounds for binning and plotting} \item{ybnds}{y coordinate bounds for binning and plotting} \item{dimen}{The i and j limits of cnt treated as a matrix cnt[i,j]} \item{n}{number of (non NA) (x,y) points, i.e., \code{sum(* @count)}.} \item{ncells}{number of cells, i.e., \code{length(* @count)}, etc} \item{call}{the function call.} \item{xlab, ylab}{character strings to be used as axis labels.} \item{cID}{of class, \code{"integer or NULL"}, only if \code{IDs} was true, an integer vector of length \code{n} where \code{cID[i]} is the cell number of the i-th original point \code{(x[i], y[i])}. Consequently, the \code{cell} and \code{count} slots are the same as the \code{\link{names}} and entries of \code{table(cID)}, see the example.} } \seealso{ \code{\link{hcell2xy}}%, \code{\link{hcell}}, % FIXME \code{\link{gplot.hexbin}},% \code{\link{hboxplot}}, % \code{\link{hdiffplot}}, \code{\link{hmatplot}}, \code{\link{grid.hexagons}}, \code{\link{grid.hexlegend}}. } \references{ Carr, D. B. et al. (1987) Scatterplot Matrix Techniques for Large \eqn{N}. \emph{JASA} \bold{83}, 398, 424--436. } \details{ Returns counts for non-empty cells only. The plot shape must be maintained for hexagons to appear with equal sides. Some calculations are in single precision. Note that when plotting a \code{hexbin} object, the \pkg{grid} package is used. You must use its graphics (or those from package \pkg{lattice} if you know how) to add to such plots. } \examples{ set.seed(101) x <- rnorm(10000) y <- rnorm(10000) (bin <- hexbin(x, y)) ## or plot(hexbin(x, y + x*(x+1)/4), main = "(X, X(X+1)/4 + Y) where X,Y ~ rnorm(10000)") ## Using plot method for hexbin objects: plot(bin, style = "nested.lattice") hbi <- hexbin(y ~ x, xbins = 80, IDs= TRUE) str(hbi) tI <- table(hbi@cID) stopifnot(names(tI) == hbi@cell, tI == hbi@count) ## NA's now work too: x[runif(6, 0, length(x))] <- NA y[runif(7, 0, length(y))] <- NA hbN <- hexbin(x,y) summary(hbN) } \keyword{dplot} hexbin/man/hexList.Rd0000644000176200001440000000305213171627112014212 0ustar liggesusers\name{hexList} \alias{hexList} \alias{hexbinList-class} \alias{coerce,list,hexbinList-method} \title{Conditional Bivariate Binning into Hexagon Cells } \description{ Creates a list of \code{\link{hexbin}} objects. Basic components are a cell id and a count of points falling in each occupied cell. Basic methods are \code{\link[methods]{show}()}, \code{plot()} %(\link{plot.hexbin}) and \code{\link{summary}()}, but also \code{\link{erode}}. % .. \code{\link{smooth.hexbin}} } \usage{ hexList(x, y = NULL, given = NULL, xbins = 30, shape = 1, xbnds = NULL, ybnds = NULL, xlab = NULL, ylab = NULL) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{ x coordinate to be binned } \item{y}{ y coordinate to be binned } \item{given}{ ..} \item{xbins}{ number of bins partitioning the range of xbnds} \item{shape}{ the \emph{shape} = yheight/xwidth of the plotting regions } \item{xbnds}{ horizontal limits of binning } \item{ybnds}{ vertical limits of binning } \item{xlab}{ character strings used as labels for \code{x} } \item{ylab}{ character strings used as labels for \code{y}} } \details{ There is also a \code{\link[methods:as]{coerce}} method to produce \code{hexbinList} objects from \code{\link{list}}s. %% i.e., \code{as(list(....), "hexbinList")} should work } \value{ If it is a LIST, use \item{comp1 }{Description of 'comp1'} \item{comp2 }{Description of 'comp2'} ... } \author{Nicholas Lewin-Koh} \seealso{\code{\link{hexbin}}, \code{\link{hdiffplot}} } \keyword{dplot} \keyword{misc} hexbin/man/hexVP-class.Rd0000644000176200001440000000607313171627112014735 0ustar liggesusers\name{hexVP-class} \docType{class} \alias{hexVP-class} \alias{getFig,hexVP-method} \alias{getMargins,hexVP-method} \alias{getPlt,hexVP-method} \alias{getXscale,hexVP-method} \alias{getYscale,hexVP-method} \title{Formal class "hexVP" of a Hexagon Viewport} \description{ Hexagon Viewports are \dQuote{value-added} grid viewports (see \code{\link[grid]{viewport}}) where the extra slots contain scaling and \dQuote{embedding} information. A hexViewport is created my taking the available area in the cuurent viewport on the graphics device and maximizing the amount of area with a fied aspect ratio. The default when the shape parameter is 1, is a 1:1 aspect ratio in terms of the size of the viewport, not the scale of the x and y axis. The plotting area is centered within the existing margins and the maximum size determined. Extra area is then allocated to the margins. This viewport is replicated twice, once with clipping set to "on" and once with clipping "off". This feature can be used for toggling clipping on and off while editing the plot. } \section{Objects from the Class}{ Objects are typically created by calls to \code{\link{hexViewport}()} or by low level calls of the form \code{new("hexVP", ...)}. } \section{Slots}{ \describe{ \item{\code{hexVp.off}:}{Object of class \code{"viewport"} with clipping set to off, see \code{\link[grid]{viewport}}.} \item{\code{hexVp.on}:}{Object of class \code{"viewport"}, with the same dimensions and parameters as hexVp.off, but with clipping set to on, see \code{\link[grid]{viewport}}.} \item{\code{hp.name}:}{The name of the viewport for searching a vptree}. \item{\code{mar}:}{\code{\link[grid]{unit}} vector of four margins (typically in \code{"lines"}).} \item{\code{fig}:}{\code{\link[grid]{unit}} vector of two figure sizes (typically in \code{"npc"}).} \item{\code{plt}:}{\code{\link[grid]{unit}} vector of two figure sizes (typically in \code{"npc"}).} %% MM {FIXME?}: Is n't this simply ``xlim'' - then call it so! %% NL, yes it is, but xscale and yscale is the parameters used by %% grid. \item{\code{shape}:}{The shape parameter from the plotted \code{\link[hexbin]{hexbin}} object.} \item{\code{xscale}:}{numeric of length two specifying x-range.} \item{\code{yscale}:}{numeric of length two specifying y-range.} } } \section{Methods}{ These are methods accessing the slots of corresponding name. \describe{ \item{getFig}{\code{signature(hvp = "hexVP")}: ... } \item{getMargins}{\code{signature(hvp = "hexVP")}: ... } \item{getPlt}{\code{signature(hvp = "hexVP")}: ... } \item{getXscale}{\code{signature(hvp = "hexVP")}: ... } \item{getYscale}{\code{signature(hvp = "hexVP")}: ... } } } \author{ Nicholas Lewin-Koh \email{kohnicho@comp.nus.edu.sg}. } \seealso{ The constructor function \code{\link{hexViewport}}. \code{\link{hexbin}}, and its S4 plotting method, \code{\link{gplot.hexbin}}. } \examples{ library("grid") example(hexViewport, echo=FALSE) ## continued: str(P$plot.vp) } \keyword{classes} hexbin/man/getHMedian.Rd0000644000176200001440000000134513171627112014602 0ustar liggesusers\name{getHMedian} \alias{getHMedian} \alias{getHMedian,erodebin-method} \title{Get coordiantes of the median cell after the erode operation} \description{ A method for a eroded hexbin object to extract the coordinates of the median cell. The median is simply the cell with the highest erosion number or the last cell to be eroded. } \usage{ getHMedian(ebin) } \arguments{ \item{ebin}{result of \code{\link{erode.hexbin}()}.} } \section{Methods}{ \describe{ \item{ebin = "erodebin"}{...} } } \seealso{\code{\link{erode.hexbin}} } \examples{ set.seed(153) x <- rnorm(10000) y <- rnorm(10000) bin <- hexbin(x,y) smbin <- smooth.hexbin(bin) erodebin <- erode.hexbin(smbin, cdfcut=.5) getHMedian(erodebin) } \keyword{methods} hexbin/man/panel.hexgrid.Rd0000644000176200001440000000107313171627112015323 0ustar liggesusers\name{panel.hexgrid} \alias{panel.hexgrid} \title{Hexagonal grid for a lattice plot} \description{ A panel function to add a hexagonal grid to a lattice plot. } \usage{ panel.hexgrid(h, border = grey(0.85)) } \arguments{ \item{h}{an object of class \code{hexbin}.} \item{border}{a color for the hexagon border colors} } \value{ There is no return value from this function. The results are plotted on the current active device. } \author{Nicholas Lewin-Koh \email{nikko@hailmail.net}} \seealso{\code{\link{hexbinplot}}, \code{\link{hexGraphPaper}}} \keyword{hplot} hexbin/man/hcell2xyInt.Rd0000644000176200001440000000254413171627112015004 0ustar liggesusers\name{hcell2xyInt} \alias{hcell2xyInt} %- Also NEED an '\alias' for EACH other topic documented here. \title{Change cell ids to 2d integer coordinate system} \description{ Transforms the cell representation of a a lattice into a 2d integer coordinate system. } \usage{ hcell2xyInt(hbin, xbins=NULL, xbnds=NULL, ybnds=NULL, shape=NULL) } \arguments{ \item{hbin}{a object of class \code{"hexbin"}, typically produced by \code{\link{hexbin}(*)}.} \item{xbins}{the number of bins partitioning the range of xbnds.} \item{xbnds, ybnds}{horizontal and vertical limits of the binning region in x or y units respectively; must be numeric vector of length 2.} \item{shape}{the \emph{shape} = yheight/xwidth of the plotting regions.} } \details{ Takes a grid defined by either the hexbin parameters or dimen in a hexbin object and translates the cell ids for the grid into 2d integer coordinates. } \value{ An integer matrix with two columns, i and j representing the integer xy coordinates of the hexagon grid. \item{i}{Integer coordiante of the rows, increases from bottom to top} \item{j}{Integer coordiante of the columns, increases from left to right} } \author{Nicholas Lewin-Koh } \seealso{\code{\link{hcell2xy}}} \examples{ x<-rnorm(10000) y<-rnorm(10000) hbin<-hexbin(x,y) ijInt<-hcell2xyInt(hbin) } \keyword{dplot} \keyword{misc} hexbin/man/panel.hexloess.Rd0000644000176200001440000000277613171627112015536 0ustar liggesusers\name{panel.hexloess} \alias{panel.hexloess} \title{Loess line for hexbin lattice plot} \description{ A panel function to add a loess line to a hexbin lattice plot. This function contravened CRAN policy and is no longer available. } \usage{ panel.hexloess(bin, w = NULL, span = 2/3, degree = 1, family = c("symmetric", "gaussian"), evaluation = 50, lwd = add.line$lwd, lty = add.line$lty, col, col.line = add.line$col, \dots) } \arguments{ \item{bin}{an object of class \code{hexbin}.} \item{w}{optional counts for object \code{bin}.} \item{span}{smoothness parameter for \code{loess}.} \item{degree}{degree of local polynomial used.} \item{family}{if \code{"gaussian"} fitting is by least-squares, and if \code{"symmetric"} a re-descending M-estimator is used.} \item{evaluation}{number of points at which to evaluate the smooth curve.} \item{lwd}{line weight graphical parameter.} \item{lty}{line type graphical parameter.} \item{col}{same as \code{col.line}.} \item{col.line}{line color graphical parameter.} \item{\dots}{optional arguments to \code{\link[stats]{loess.control}}.} } \value{ There is no return value from this function. The results are plotted on the current active device. } \author{Nicholas Lewin-Koh \email{nikko@hailmail.net}} \seealso{ \code{\link{hexbinplot}}, \code{\link{panel.hexgrid}}, \code{\link{loess.smooth}}, \code{\link{loess.control}}, \code{\link[lattice:panel.functions]{panel.loess}} } \keyword{hplot} hexbin/man/hexTapply.Rd0000644000176200001440000000371013171627112014551 0ustar liggesusers\name{hexTapply} \alias{hexTapply} \title{Apply function to data from each hexagon bin.} \description{ A wrapper for tapply except that it operates with each hexagon bin being the category. The function operates on the data associated on the points from each bin. } \usage{ hexTapply(hbin, dat, FUN = sum, ..., simplify=TRUE) } \arguments{ \item{hbin}{a object of class \code{"hexbin"}, typically produced by \code{\link{hexbin}(*)}.} \item{dat}{A vector of data the same length as \code{hbin@cID}} \item{FUN}{the function to be applied. In the case of functions like \code{+}, \code{\%*\%}, etc., the function name must be quoted. If \code{FUN} is \code{NULL}, tapply returns a vector which can be used to subscript the multi-way array \code{tapply} normally produces.} \item{\dots}{optional arguments to \code{FUN}.} \item{simplify}{If \code{FALSE}, \code{tapply} always returns an array of mode \code{"list"}. If \code{TRUE} (the default), then if \code{FUN} always returns a scalar, \code{tapply} returns an array with the mode of the scalar.} } \details{ This function is a wrapper for tapply, except that the cell id is always the categorical variable. This function is specifically good for adding variables to the cAtt slot of a hexbin object or for plotting a third variable in a hexagon plot. See below for examples. } \value{ Returns a vector of the result of 'FUN' as in \code{\link{tapply}}. See \code{\link{tapply}} for detailed description of output. } \author{Nicholas Lewin-Koh} \seealso{ \code{\link{tapply}},\code{\link{hexbin}} } \examples{ data(NHANES) hbin<-hexbin(log(NHANES$Diet.Iron+1),log(NHANES$BMI),xbins=25,IDs=TRUE) hvp<-plot(hbin) mtrans<-hexTapply(hbin,NHANES$Transferin,median,na.rm=TRUE) pushHexport(hvp$plot.vp) grid.hexagons(hbin,style='lattice',pen=0,border='red',use.count=FALSE, cell.at=mtrans) } \keyword{dplot} \keyword{utilities}% at least one, from doc/KEYWORDS hexbin/man/panel.hexboxplot.Rd0000644000176200001440000000401313171627112016062 0ustar liggesusers\name{panel.hexboxplot} \alias{panel.hexboxplot} \title{Boxplot for hexbin lattice plot} \description{ A panel function to add a boxplot to a hexbin lattice plot. } \usage{ panel.hexboxplot(x, y, xbins = 30, xbnds = c("data", "panel"), ybnds = c("data", "panel"), .prelim = FALSE, .cpl = current.panel.limits(), .xlim = .cpl$xlim, .ylim = .cpl$ylim, .aspect.ratio, type = character(0), cdfcut = 0.25, shadow = 0.05, ..., check.erosion = TRUE) } \arguments{ \item{x, y}{numeric vector or factor.} \item{xbins}{the number of bins partitioning the range of xbnds.} \item{xbnds, ybnds}{horizontal and vertical limits of the binning region in x or y units respectively; must be numeric vector of length 2.} \item{.prelim, .cpl, .xlim, .ylim, .aspect.ratio}{for internal use.} \item{type}{character vector controlling additional augmentation of the display. A \code{"g"} in \code{type} adds a reference grid, an \code{"hg"} adds a hexagonal grid.} \item{cdfcut}{number in (0,1) indicating the confidence level for the erosion limits. See \code{\link{erode.hexbin}} for more information.} \item{shadow}{number in (0,1) indicating the confidence level for the erosion limits of a boxplot shadow. See \code{\link{erode.hexbin}} for more information.} \item{\dots}{potential further arguments passed on.} \item{check.erosion}{logical indicating only eroded points should be used for \code{"erodebin"} objects; simply passed to \code{\link{hcell2xy}}, see its documentation.} } \value{ There is no return value from this function. The results are plotted on the current active device. } \author{Nicholas Lewin-Koh \email{nikko@hailmail.net}} \seealso{\code{\link{hexbinplot}}, \code{\link{panel.hexgrid}}, \code{\link[lattice]{panel.bwplot}} } \examples{ mixdata <- data.frame(x = c(rnorm(5000),rnorm(5000,4,1.5)), y = rep(1:2, 5000)) hexbinplot(y ~ x, mixdata, panel = panel.hexboxplot) } \keyword{hplot} hexbin/man/inout.hex.Rd0000644000176200001440000000132013171627112014507 0ustar liggesusers\name{inout.hex} \alias{inout.hex} \title{Check points for inclusion} \description{ Check which points are in hexagons with \code{count} <= mincnt. } \usage{ inout.hex(hbin, mincnt) } \arguments{ \item{hbin}{an object of class \code{\link{hexbin}}.} \item{mincnt}{Cutoff, id's for counts less than mincnt are returned} } \details{ Check which points are in hexagons with \code{count} <= mincnt and returns the row ids for those points. One can use the ids to plot low ount hexagons as points instead. } \value{ A vector with the row ids of points which fall in hexagons with \code{count} less than or equal to mincnt } \author{Nicholas Lewin-Koh} \seealso{\code{\link{plotMAhex}}} \keyword{misc} hexbin/man/optShape.Rd0000644000176200001440000000317013171627112014356 0ustar liggesusers\name{optShape} \alias{optShape} %- Also NEED an '\alias' for EACH other topic documented here. \title{Optimal Shape Parameter for Hexbin Viewport} \description{ Takes a viewport or a given height and width and returns the shape parameter that will fill the specified plotting region with the appropriately shaped hexagons. If margins are specified the margins are subtracted from height and width before the shape parameter is specified. } \usage{ optShape(vp, height = NULL, width = NULL, mar = NULL) } \arguments{ \item{vp}{a \code{viewport} object, optional see details} \item{height}{the height of the plotting region, can be numeric or units} \item{width}{The width of the plotting region, can be numeric or units} \item{mar}{A four element numeric or units vector describing the margins in the order \code{c(bottom, left, top, right)}} } \value{ a scalar numeric value specifiyng \code{shape}. } \author{Nicholas Lewin-Koh} \section{Warning}{If a viewport is given as an argument it should already be pushed on the graphics device or it will have null units and a meaningless shape parameter will be returned. } \seealso{\code{\link{hexViewport}}, \code{\link{hexVP-class}}, \code{\link{hexbin}}} \examples{ x <- rgamma(10000,.9) m <- as.logical(rbinom(10000,1,.17)) x[m] <- -x[m] y <- rnorm(x,abs(x)) library("grid") vp <- plotViewport(xscale= range(x)+c(-.5,.5), yscale= range(y)+c(-.5,.5), default.units = "native") grid.newpage() pushViewport(vp) grid.rect() shape <- optShape(vp) shape hb <- hexbin(x,y,xbins=40,shape=shape) grid.hexagons(hb,colramp=BTY) } \keyword{dplot} hexbin/man/hcell2xy.Rd0000644000176200001440000000361013171627112014324 0ustar liggesusers\name{hcell2xy} \alias{hcell2xy} \alias{hcell2xy,hexbin-method} \title{Compute X and Y Coordinates for Hexagon Cells} \description{ Computes x and y coordinates from hexagon cell id's. } \usage{ hcell2xy(hbin, check.erosion = TRUE) } \arguments{ \item{hbin}{a object of class \code{"hexbin"}, typically produced by \code{\link{hexbin}(*)}.} \item{check.erosion}{logical indicating if only the eroded points should be returned in the case where \code{hbin} inherits from \code{"erodebin"} (see \code{\link{erodebin-class}}); is \code{TRUE} by default.} } \value{ A list with two components of the same length as \code{bin$cell}, \item{x}{} \item{y}{} } %%FIXME \references{see in \code{\link{hcell}}.} \details{ The hexbin object \code{hbin} contains all the needed information. The purpose of this function is to reduce storage. The cost is additional calculation. } \seealso{%%FIXME \code{\link{hcell}}, \code{\link{hray}}, \code{\link{hexbin}}. } \examples{ x <- rnorm(10000) y <- rnorm(10000) plot(x,y, pch=".") hbin <- hexbin(x,y) str(xys <- hcell2xy(hbin)) points(xys, cex=1.5, col=2) ; title("hcell2xy( hexbin(..) )", col.main=2) %% __________ FIXME ________ \dontshow{ ## Temporal trends with confidence bounds plotted on a map: ## Illustration only pending access to user functions ## mtapply() # like tapply but for matrices ## sens.season.slope() # computes sen's seasonal slope ## This part does not work and commented out #hbin <- hcell(dat$x,dat$y) # x and y are in map projection units #newdat < dat[,c('month','year','value')] # extract columns #stats <- mtapply(newdat,bin$cell,sens.season.slope,season=12) #plot(mymap,type='l') # map boundaries in map projection units #xy <- hcell2xy(hbin) # x and y coordinates for hexagon cell centers #hray(xy$x, xy$y,val=stat[,1],lower= stat[,2],upper=stat[,3]) } } \keyword{manip} hexbin/man/NHANES.Rd0000644000176200001440000000365413171627112013556 0ustar liggesusers\name{NHANES} \alias{NHANES} \docType{data} \title{NHANES Data : National Health and Nutrition Examination Survey} \usage{data(NHANES)} \description{ This is a somewhat large interesting dataset, a data frame of 15 variables (columns) on 9575 persons (rows). } \format{ This data frame contains the following columns: \describe{ \item{Cancer.Incidence}{binary factor with levels \code{No} and \code{Yes}.} \item{Cancer.Death}{binary factor with levels \code{No} and \code{Yes}.} \item{Age}{numeric vector giving age of the person in years.} \item{Smoke}{a factor with levels \code{Current}, \code{Past}, \code{Nonsmoker}, and \code{Unknown}.} \item{Ed}{numeric vector of \eqn{\{0,1\}} codes giving the education level.} \item{Race}{numeric vector of \eqn{\{0,1\}} codes giving the person's race.%% FIXME : 0 = ? 1 = ? } \item{Weight}{numeric vector giving the weight in kilograms} \item{BMI}{numeric vector giving Body Mass Index, i.e., \code{Weight/Height^2} where Height is in meters, and missings (61\% !) are coded as \code{0} originally.}%% rather FIXME? \item{Diet.Iron}{numeric giving Dietary iron.} \item{Albumin}{numeric giving albumin level in g/l.} \item{Serum.Iron}{numeric giving Serum iron in \eqn{\mu}{u}g/l.} \item{TIBC}{numeric giving Total Iron Binding Capacity in \eqn{\mu}{u}g/l.} \item{Transferin}{numeric giving Transferin Saturation which is just \code{100*serum.iron/TIBC}.} \item{Hemoglobin}{numeric giving Hemoglobin level.} \item{Sex}{a factor with levels \code{F} (female) and \code{M} (male).} } } \examples{ data(NHANES) summary(NHANES) ## Missing Data overview : nNA <- sapply(NHANES, function(x)sum(is.na(x))) cbind(nNA[nNA > 0]) # Which are just these 6 : \dontrun{ Diet.Iron 141 Albumin 252 Serum.Iron 1008 TIBC 853 Transferin 1019 Hemoglobin 759 }%dont } \keyword{datasets} hexbin/TODO0000644000176200001440000000176013171627112012224 0ustar liggesusers-------------- Aug 10, 2014 o get rid of functions in lattice.R, which were copied from lattice -------------- o The new 3D plots -- should rather make the new functions "internal" and choosable with *arguments* from given functions ! o hexbin *class* {as mentioned by man/hexbin.Rd } -- done o find the references (on paper) and read ! --> "References" in ./Biocore-notes ftp://www.galaxy.gmu.edu/pub/faculty/dcarr/eda/bin2d/ ftp://www.galaxy.gmu.edu/pub/faculty/dcarr/software/bin2d.rev/ o example(hmatplot) is still doing many pages instead of one ------------ March 5, 2005 o Implement conversions between different hexagon coordinate systems o Smoothing on a hexagonal basis using tensor products + smoothing histograms + smoothing the intensity of a Poisson process o Family of hex apply functions o Hbin list class and constructors --- o Use standard convertColor() function more and and try to get rid of dependency on 'colorspace' hexbin/DESCRIPTION0000644000176200001440000000175514406422065013250 0ustar liggesusersPackage: hexbin Version: 1.28.3 Title: Hexagonal Binning Routines Author: Dan Carr , ported by Nicholas Lewin-Koh and Martin Maechler , contains copies of lattice functions written by Deepayan Sarkar Maintainer: Edzer Pebesma Depends: R (>= 2.0.1), methods Imports: lattice, grid, graphics, grDevices, stats, utils Suggests: marray, affy, Biobase, limma, knitr Description: Binning and plotting functions for hexagonal bins. Collate: lattice.R BTC.R BTY.R grid.hexagons.R grid.hexlegend.R hbox.R hdiffplot.R hexbinList.R hexbinplot.R hexbin.s4.R hexpanel.R hexplom.R hexPlotMA.R hexutil.R hexViewport.R HO.R LINGRAY.R LOCS.R MAG.R RB.R smoothHexbin.R License: GPL-2 VignetteBuilder: knitr NeedsCompilation: yes URL: https://github.com/edzer/hexbin Packaged: 2023-03-21 20:34:52 UTC; edzer Repository: CRAN Date/Publication: 2023-03-21 21:40:05 UTC hexbin/build/0000755000176200001440000000000014406412354012631 5ustar liggesusershexbin/build/vignette.rds0000644000176200001440000000041314406412354015166 0ustar liggesusersJ0Ӵvn9 2"&@4Z'|42d18K8g library(hexbin) > > ## a variation on Nicholas' post to bioconductor & example(hexViewport) > set.seed(545) > x <- rnorm(2^15) > y <- 3*x - .2*x^2 + rnorm(2^15) > hbin <- hexbin(x,y) > > ## > hp <- hexViewport(hbin, newpage = TRUE) > pushHexport(hp) > library("grid") > grid.rect() > grid.xaxis() > grid.yaxis() > grid.hexagons(hbin, style = "centroid") > hloess <- loess(y ~ x, data = hcell2xy(hbin), weights = hbin @ count) > xx <- seq(hbin@xbnds[1], hbin@xbnds[2], length = 500) > grid.lines(xx, predict(hloess, xx), + gp = gpar(col = 'red', lwd = 2), default.units = "native") > popViewport() > > proc.time() user system elapsed 0.368 0.020 0.379 hexbin/tests/hdiffplot.R0000644000176200001440000000160413171627112014775 0ustar liggesuserslibrary(hexbin) if(R.version$major != "1" || as.numeric(R.version$minor) >= 7) RNGversion("1.6") set.seed(213) x1 <- rnorm(10000) y1 <- rnorm(10000) x2 <- rnorm(10000,mean = .3) y2 <- rnorm(10000,mean = .3) rx <- range(x1,x2) ry <- range(y1,y2) str(bin1 <- hexbin(x1,y1, xbnds = rx, ybnds = ry)) str(bin2 <- hexbin(x2,y2, xbnds = rx, ybnds = ry)) str(erode(bin1)) str(smbin1 <- smooth.hexbin(bin1)) (smbin2 <- smooth.hexbin(bin2)) str(erodebin1 <- erode.hexbin(smbin1)) (erodebin2 <- erode.hexbin(smbin2)) if(FALSE)## does not work -- what funny stuff is hdiffplot() doing??? par(mfrow = c(2,1)) if(exists("hdiffplot", mode="function")) { ## not yet in new hexbin hdiffplot(bin1,bin2, main = "Original N(0,*) Random bins") hdiffplot(smbin1,smbin2, main = "smooth.hexbin() smoothed bins") plot.new() hdiffplot(erodebin1,erodebin2, main = "erode.hexbin()d smoothed bins") }# not yet hexbin/tests/hray.Rout.save0000644000176200001440000000246613171627112015455 0ustar liggesusers R version 3.1.1 (2014-07-10) -- "Sock it to Me" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(hexbin) > > set.seed(572) > > x <- rnorm(100) > y <- rnorm(100) > val <- rnorm(100) > inc <- abs(rnorm(100,sd = .3)) > loB <- val-inc > hiB <- val+inc > > if(exists("hray", mode="function")) { # 'real soon now' + + ## no confidence bounds + plot(x,y,type = 'n') + hray(x,y,val) + + ## confidence bounds + plot(x,y,type = 'n') + hray(x,y,val, lo = loB, hi = hiB) + + ## clockwise orientation + plot(x,y,type = 'n') + hray(x,y,val, loB, hiB, clockwise = TRUE) + + ## no tics and small filled dots + plot(x,y,type = 'n') + hray(x,y,val, loB, hiB, ticlength = FALSE, + dotside = 20, dotlength = .025, dotden = -1) + + } > > proc.time() user system elapsed 0.252 0.012 0.258 hexbin/tests/hdiffplot.Rout.save0000644000176200001440000001313213466540766016501 0ustar liggesusers R version 3.6.0 (2019-04-26) -- "Planting of a Tree" Copyright (C) 2019 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(hexbin) > > if(R.version$major != "1" || as.numeric(R.version$minor) >= 7) + RNGversion("1.6") Warning messages: 1: In RNGkind("Marsaglia-Multicarry", "Buggy Kinderman-Ramage", "Rounding") : buggy version of Kinderman-Ramage generator used 2: In RNGkind("Marsaglia-Multicarry", "Buggy Kinderman-Ramage", "Rounding") : non-uniform 'Rounding' sampler used > set.seed(213) > x1 <- rnorm(10000) > y1 <- rnorm(10000) > > x2 <- rnorm(10000,mean = .3) > y2 <- rnorm(10000,mean = .3) > > rx <- range(x1,x2) > ry <- range(y1,y2) > > str(bin1 <- hexbin(x1,y1, xbnds = rx, ybnds = ry)) Formal class 'hexbin' [package "hexbin"] with 16 slots ..@ cell : int [1:535] 16 20 48 70 74 75 76 80 99 101 ... ..@ count : int [1:535] 1 1 1 1 1 1 1 1 1 1 ... ..@ xcm : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ... ..@ ycm : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ... ..@ xbins : num 30 ..@ shape : num 1 ..@ xbnds : num [1:2] -3.8 4.3 ..@ ybnds : num [1:2] -3.71 4.17 ..@ dimen : num [1:2] 36 31 ..@ n : int 10000 ..@ ncells: int 535 ..@ call : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry) ..@ xlab : chr "x1" ..@ ylab : chr "y1" ..@ cID : NULL ..@ cAtt : int(0) > str(bin2 <- hexbin(x2,y2, xbnds = rx, ybnds = ry)) Formal class 'hexbin' [package "hexbin"] with 16 slots ..@ cell : int [1:545] 41 51 75 76 104 107 110 114 136 138 ... ..@ count : int [1:545] 1 1 1 1 1 2 1 1 2 1 ... ..@ xcm : num [1:545] -1.141 1.445 -0.493 -0.324 -0.995 ... ..@ ycm : num [1:545] -3.42 -3.45 -3.24 -3.35 -2.9 ... ..@ xbins : num 30 ..@ shape : num 1 ..@ xbnds : num [1:2] -3.8 4.3 ..@ ybnds : num [1:2] -3.71 4.17 ..@ dimen : num [1:2] 36 31 ..@ n : int 10000 ..@ ncells: int 545 ..@ call : language hexbin(x = x2, y = y2, xbnds = rx, ybnds = ry) ..@ xlab : chr "x2" ..@ ylab : chr "y2" ..@ cID : NULL ..@ cAtt : int(0) > > str(erode(bin1)) Formal class 'erodebin' [package "hexbin"] with 19 slots ..@ eroded: logi [1:535] FALSE FALSE FALSE FALSE FALSE FALSE ... ..@ cdfcut: num 0.5 ..@ erode : int [1:71] 12 35 34 57 52 4 30 101 138 150 ... ..@ cell : int [1:535] 16 20 48 70 74 75 76 80 99 101 ... ..@ count : int [1:535] 1 1 1 1 1 1 1 1 1 1 ... ..@ xcm : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ... ..@ ycm : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ... ..@ xbins : num 30 ..@ shape : num 1 ..@ xbnds : num [1:2] -3.8 4.3 ..@ ybnds : num [1:2] -3.71 4.17 ..@ dimen : num [1:2] 36 31 ..@ n : int 10000 ..@ ncells: int 535 ..@ call : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry) ..@ xlab : chr "x1" ..@ ylab : chr "y1" ..@ cID : NULL ..@ cAtt : int(0) > > str(smbin1 <- smooth.hexbin(bin1)) Formal class 'smoothbin' [package "hexbin"] with 17 slots ..@ wts : num [1:3] 48 4 1 ..@ cell : int [1:906] 17 18 19 21 22 23 51 52 53 54 ... ..@ count : int [1:906] 1 1 1 1 1 1 1 4 5 2 ... ..@ xcm : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ... ..@ ycm : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ... ..@ xbins : num 34 ..@ shape : num 1 ..@ xbnds : num [1:2] -4.34 4.84 ..@ ybnds : num [1:2] -4.23 4.7 ..@ dimen : num [1:2] 40 35 ..@ n : int 10000 ..@ ncells: int 535 ..@ call : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry) ..@ xlab : chr "x1" ..@ ylab : chr "y1" ..@ cID : NULL ..@ cAtt : int(0) > (smbin2 <- smooth.hexbin(bin2)) 'hexbin' object from call: hexbin(x = x2, y = y2, xbnds = rx, ybnds = ry) n = 10000 points in nc = 545 hexagon cells in grid dimensions 40 by 35 > > str(erodebin1 <- erode.hexbin(smbin1)) Formal class 'erodebin' [package "hexbin"] with 19 slots ..@ eroded: logi [1:906] FALSE FALSE FALSE FALSE FALSE FALSE ... ..@ cdfcut: num 0.5 ..@ erode : int [1:73] 11 35 95 100 117 88 6 39 167 232 ... ..@ cell : int [1:906] 17 18 19 21 22 23 51 52 53 54 ... ..@ count : int [1:906] 1 1 1 1 1 1 1 4 5 2 ... ..@ xcm : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ... ..@ ycm : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ... ..@ xbins : num 34 ..@ shape : num 1 ..@ xbnds : num [1:2] -4.34 4.84 ..@ ybnds : num [1:2] -4.23 4.7 ..@ dimen : num [1:2] 40 35 ..@ n : int 10000 ..@ ncells: int 535 ..@ call : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry) ..@ xlab : chr "x1" ..@ ylab : chr "y1" ..@ cID : NULL ..@ cAtt : int(0) > (erodebin2 <- erode.hexbin(smbin2)) 'hexbin' object from call: hexbin(x = x2, y = y2, xbnds = rx, ybnds = ry) n = 10000 points in nc = 545 hexagon cells in grid dimensions 40 by 35 > > if(FALSE)## does not work -- what funny stuff is hdiffplot() doing??? + par(mfrow = c(2,1)) > > if(exists("hdiffplot", mode="function")) { ## not yet in new hexbin + hdiffplot(bin1,bin2, main = "Original N(0,*) Random bins") + + hdiffplot(smbin1,smbin2, main = "smooth.hexbin() smoothed bins") + + plot.new() + hdiffplot(erodebin1,erodebin2, main = "erode.hexbin()d smoothed bins") + }# not yet > > proc.time() user system elapsed 0.340 0.015 0.347 hexbin/tests/large.R0000644000176200001440000000136213171627112014111 0ustar liggesuserslibrary(hexbin) if(FALSE) { ## the following is still quite a bit from working/useful : ## what should that do? set a palette? rgb <- matrix(c( 15,15,15, 0, 0, 0, 1, 9,15, 9,15, 9, 15, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 0, 2, 7, 0, 7, 1, 8, 1, 1, 15, 2, 2, 11, 1, 1, 8, 1, 1, 5, 1, 1, 5, 1, 1, 15,15,15), ncol = 3, byrow = TRUE) ##ps.options(rasters=600,color=rgb/15,background=2) ##ps.options(color=rgb/15,background=2) postscript("large.ps",width = 10,height = 7.5) plot.hexbin(ans.25mil, style = "nest", lcex = .9) }## FALSE, i.e. nothing done hexbin/tests/large.Rout.save0000644000176200001440000000276713171627112015610 0ustar liggesusers R version 3.1.1 (2014-07-10) -- "Sock it to Me" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(hexbin) > > if(FALSE) { ## the following is still quite a bit from working/useful : + + ## what should that do? set a palette? + rgb <- matrix(c( + 15,15,15, + + 0, 0, 0, + 1, 9,15, + 9,15, 9, + 15, 9, 9, + + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + + 9, 9, 9, + 0, 2, 7, + 0, 7, 1, + 8, 1, 1, + + 15, 2, 2, + 11, 1, 1, + 8, 1, 1, + 5, 1, 1, + 5, 1, 1, + 15,15,15), ncol = 3, byrow = TRUE) + + ##ps.options(rasters=600,color=rgb/15,background=2) + ##ps.options(color=rgb/15,background=2) + postscript("large.ps",width = 10,height = 7.5) + + plot.hexbin(ans.25mil, style = "nest", lcex = .9) + + }## FALSE, i.e. nothing done > > proc.time() user system elapsed 0.240 0.032 0.265 hexbin/src/0000755000176200001440000000000014406412354012321 5ustar liggesusershexbin/src/reg.c0000644000176200001440000000134414406412167013246 0ustar liggesusers#include #include extern void F77_NAME(hbin )(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(herode)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(hsm )(void *, void *, void *, void *, void *, void *, void *); static const R_FortranMethodDef FortranEntries[] = { {"hbin", (DL_FUNC) &F77_NAME(hbin), 13}, {"herode", (DL_FUNC) &F77_NAME(herode), 10}, {"hsm", (DL_FUNC) &F77_NAME(hsm), 7}, {NULL, NULL, 0} }; void R_init_hexbin(DllInfo *info) { R_registerRoutines(info, NULL, NULL, FortranEntries, NULL); R_useDynamicSymbols(info, FALSE); R_forceSymbols(info, TRUE); } hexbin/src/herode.f0000644000176200001440000001304113171627112013733 0ustar liggesusersC File: herode.f C Version date: Jan 4, 1994 C Programmer: Daniel B. Carr C C The vector erode returns the gray-level erosion order for hexagon cells. C The erosion cycle is: C cycle = (erode-1)/6 + 1 C Many cells may be eroded in the same cycle C A tie break is the cell count deficit at erosion time: C deficit=erode - 6*cycle C The last eroded cell might be considered a bivariate median C C The algorithm: C Repeat until no cells are left in the list. C Process list C Reduce the cell counts by the a multiple of exposed sides C If a cell count is zero or less after an erosion cycle C let order=order + 6 C report erode = order + cell count (count is <= 0) C remove the cell from consideration C update exposed side counts for existing neighbor cells C if exposed sides was zero, temporarily store id's C else C compress list C endif C Add temporarily stored id's to list C End Repeat subroutine herode(cell,cnt,n,bdim, * erode,ncnt,ncell,sides,neib,exist) C C implicit none integer cell(*), cnt(*) ! cell id and count integer n, bdim(2) ! number of cells and 2-D array bounds integer erode(*) ! erosion status integer ncell(*),ncnt(*) ! extracted id's and expanded counts integer sides(*) ! number of exposed sides integer neib(6,*) ! pointers to the neighbors logical exist(0:*) ! cell existence integer nrow, ncol, Lmax ! dimensions integer inc1(6), inc2(6) ! increments to get neighbors integer i, icell, j, k, L ! subscripts integer nc, nnc, nb, ninc, r, c !more subscripts integer loop, order, maxcnt C_______Zero cell ordering numbers________________________________ order=0 C_______Load the increment arrays and constants nrow = bdim(1) ncol = bdim(2) Lmax = nrow * ncol nnc = n C______Load increment arrays to neigbors______________ C C order=right, up left, down left, up right, left, down right inc1(1)= 1 inc1(2)= ncol-1 inc1(3)= -ncol-1 inc1(4)= ncol inc1(5)=-1 inc1(6)= -ncol inc2(1)= 1 inc2(2)= ncol inc2(3)= -ncol inc2(4)= ncol+1 inc2(5)=-1 inc2(6)= -ncol+1 c_______load working arrays_______________________________________________ do i=0,Lmax exist(i)=.false. enddo maxcnt=0 do i=1,n icell=cell(i) ncnt(icell)=cnt(i) exist(icell)=.true. maxcnt=max(maxcnt,cnt(i)) enddo C_______Store pointers to cell neighbors_________________________ C C A pointer of 0 means the neigbor in out of bounds C Also find the max count C Speed: Can avoid adding 1's to r and c C but this code is easier to follow do i=1,n L=cell(i) k = L -1 r=k/ncol+1 c=mod(k,ncol)+1 if(mod(r,2).eq.1)then do j = 1,6 neib(j,L) = L + inc1(j) enddo if (c .eq. 1) then neib(2,L) = 0 neib(3,L) = 0 neib(5,L) = 0 else if (c .eq. ncol) then neib(1,L) = 0 endif if (r .eq. 1) then neib(3,L) = 0 neib(6,L) = 0 else if(r.eq.nrow)then neib(2,L) = 0 neib(4,L) =0 endif else do j= 1,6 neib(j,L) = L + inc2(j) enddo if (c .eq. 1) then neib(5,L) = 0 else if (c .eq. ncol) then neib(1,L) = 0 neib(4,L) = 0 neib(6,L) = 0 endif if (r .eq. nrow) then neib(2,L) = 0 neib(4,L) = 0 endif endif enddo C_______Count exposed sides for cells in the contour_________________ do i=1,n icell=cell(i) sides(icell)=0 do j=1,6 if(.not. exist( neib(j,icell) ) )then sides(icell)=sides(icell)+ 1 endif enddo enddo C________Grab surface cells___________________________________________ nc=0 do i=1,n if(sides(cell(i)).gt.0)then nc=nc+1 ncell(nc)=cell(i) endif enddo n=nc !n is now the number of exposed, non-empty cells C_______The outer loop________________________________________________ C C temporary indices C nc: index for cells remaining on the list C ninc: index for newly exposed cells added to back of list do while(n.gt.0) C Subtract exposed-side counts from the surface cell counts C until at least one cell is empty. loop=maxcnt do i=1,n icell=ncell(i) loop=min( (ncnt(icell)-1)/sides(icell) , loop) enddo loop=loop+1 !all loop values are 1 too small C update the counts, rank and remove eroded cells nc=0 order=order+6 ninc=n do i=1,n icell=ncell(i) ncnt(icell)=ncnt(icell)-sides(icell)*loop if(ncnt(icell).le.0)then C Remove the empty cell and store it's order exist(icell)=.false. erode(icell)=order+ncnt(icell) C Update the neighbors of the empty cell do j=1,6 nb=neib(j,icell) if(exist(nb))then C Store cells for addition to surface list if(sides(nb).eq.0)then ninc=ninc+1 ncell(ninc)=nb endif C Update sides for the neighbors sides(nb)=sides(nb)+1 endif enddo else C Save remaining cells nc=nc+1 ncell(nc)=ncell(i) endif enddo C Add new surface cells if any do i=n+1,ninc,1 nc=nc+1 ncell(nc)=ncell(i) enddo n=nc enddo C_______compress result___________________________________________ do i=1,nnc erode(i)=erode(cell(i)) enddo n=nnc return end hexbin/src/hsm.f0000644000176200001440000000360613171627112013262 0ustar liggesusersC File: hsm.f C Programmer: Daniel B. Carr C Version Date: January 3, 1994 C C This program is an hexagon cell smoother. It smooths into C neighboring cells and hence expands. C The kernal is a crude integer kernel. C The boundary hexagons get weight 1, the center hexagon C gets weight, wt, which by default is set to six. C C subroutine hsm(cell,cnt,n,nmax,sm,ncol,wt) implicit none integer n, nmax, ncol integer cell(*), cnt(*), sm(*), wt(*) integer ind, ind1(6), ind2(12),ind3(6), ind4(12), loc integer row, cnt1, cnt2, wta, wtb, wtc integer i, j C__________Constants___________________________________________ ind1(1)=-1 ind1(2)=ncol-1 ind1(3)=ncol ind1(4)=+1 ind1(5)=-ncol ind1(6)=-ncol-1 ind2(1)=-2 ind2(2)=ncol-2 ind2(3)=2*ncol-1 ind2(4)=2*ncol ind2(5)=2*ncol+1 ind2(6)=ncol+1 ind2(7)=2 ind2(8)=-ncol+1 ind2(9)=-2*ncol+1 ind2(10)=-2*ncol ind2(11)=-2*ncol-1 ind2(12)=-ncol-2 ind3(1)=-1 ind3(2)=ncol ind3(3)=ncol+1 ind3(4)=+1 ind3(5)=-ncol+1 ind3(6)=-ncol ind4(1)=-2 ind4(2)=ncol-1 ind4(3)=2*ncol-1 ind4(4)=2*ncol ind4(5)=2*ncol+1 ind4(6)=ncol+2 ind4(7)=2 ind4(8)=-ncol+2 ind4(9)=-2*ncol+1 ind4(10)=-2*ncol ind4(11)=-2*ncol-1 ind4(12)=-ncol-1 wta = wt(1) wtb = wt(2) wtc = wt(3) C_________Smoothing_____________________________________ do i=1,n sm(cell(i))=wta*cnt(i) enddo do i=1,n loc=cell(i) row=(loc-1)/ncol + 1 cnt1=wtb*cnt(i) cnt2=wtc*cnt(i) if(mod(row,2).eq.1)then do j=1,6 ind=loc+ind1(j) sm(ind)=sm(ind)+cnt1 enddo do j=1,12 ind=loc+ind2(j) sm(ind)=sm(ind)+cnt2 enddo else do j=1,6 ind=loc+ind3(j) sm(ind)=sm(ind)+cnt1 enddo do j=1,12 ind=loc+ind4(j) sm(ind)=sm(ind)+cnt2 enddo endif enddo n=0 do i=1,nmax if(sm(i).gt.0)then n=n+1 cell(n)=i cnt(n)=sm(i) endif enddo return end hexbin/src/hcell.f0000644000176200001440000000251513171627112013560 0ustar liggesusers subroutine hcell(x,y,cell,n,size,shape,rx,ry,bnd) C Copyright 1991 C Version Date: September 16, 1994 C Programmer: Dan Carr C Indexing: Left to right, bottom to top C bnd(1) rows, bnd(2) columns C Output: cell ids for none empty cells, revised bnd(1) c implicit none integer n, cell(1), bnd(2) double precision x(1), y(1), rx(2), ry(2), size, shape integer i, i1, i2, iinc integer j1, j2, jinc integer L, lat, celmax double precision c1, c2, con1, con2, dist1 double precision sx, sy, xmin, ymin, xr, yr C_______Constants for scaling the data_____________________________ xmin = rx(1) ymin = ry(1) xr = rx(2)-xmin yr = ry(2)-ymin c1 = size/xr c2 = size*shape/(yr*sqrt(3.)) jinc= bnd(2) lat=jinc+1 iinc= 2*jinc con1=.25 con2=1./3. celmax=0 C_______Binning loop________________________________________ do i=1,n sx = c1 * (x(i) - xmin) sy = c2 * (y(i) - ymin) j1 = sx+.5 i1 = sy+.5 dist1=(sx-j1)**2 + 3.*(sy-i1)**2 if(dist1.lt.con1)then L=i1*iinc+j1+1 elseif(dist1.gt.con2)then L=int(sy)*iinc + int(sx)+lat else j2 = sx i2 = sy if( dist1.le.(sx-j2-.5)**2 + 3. * (sy - i2 -.5)**2) then L=i1*iinc+j1+1 else L=i2*iinc+j2+lat endif endif cell(i)=L celmax = max(celmax,L) enddo bnd(1)=(celmax-1)/bnd(2)+1 return end hexbin/src/hbin.f0000644000176200001440000000365313171627112013415 0ustar liggesusers subroutine hbin(x,y,cell,cnt,xcm,ycm, size, shape, * rx,ry, bnd, n, cellid) C Copyright 1991 C Version Date: September 16, 1994 C Programmer: Dan Carr C Indexing: Left to right, bottom to top C bnd(1) rows, bnd(2) columns C Output: cell ids for non empty cells, revised bnd(1) c optionally also return cellid(1:n) c Copyright (2004) Nicholas Lewin-Koh and Martin Maechler implicit none integer n, nc, cell(*), cnt(*), bnd(2), cellid(*) c cellid(*): length 1 or n double precision x(n), y(n), xcm(*),ycm(*), rx(2),ry(2), size double precision shape integer i, i1, i2, iinc integer j1, j2, jinc integer L, lmax, lat double precision c1, c2, con1, con2, dist1 double precision sx, sy, xmin, ymin, xr, yr logical keepID keepID = (cellid(1) .eq. 0) C_______Constants for scaling the data_____________________________ xmin = rx(1) ymin = ry(1) xr = rx(2)-xmin yr = ry(2)-ymin c1 = size/xr c2 = size*shape/(yr*sqrt(3.)) jinc= bnd(2) lat=jinc+1 iinc= 2*jinc lmax=bnd(1)*bnd(2) con1=.25 con2=1.0/3.0 C_______Binning loop________________________________________ do i=1,n sx = c1 * (x(i) - xmin) sy = c2 * (y(i) - ymin) j1 = sx+.5 i1 = sy+.5 dist1=(sx-j1)**2 + 3.*(sy-i1)**2 if(dist1 .lt. con1) then L=i1*iinc + j1+1 elseif(dist1 .gt. con2) then L=int(sy)*iinc + int(sx)+lat else j2 = sx i2 = sy if(dist1 .le. (sx-j2 -.5)**2 + 3.*(sy-i2 -.5)**2) then L=i1*iinc+ j1+1 else L=i2*iinc+ j2+lat endif endif cnt(L)=cnt(L)+1 if (keepID) cellid(i)=L xcm(L)=xcm(L)+ (x(i)-xcm(L))/cnt(L) ycm(L)=ycm(L)+ (y(i)-ycm(L))/cnt(L) enddo C_______Compression of output________________________________________ nc=0 do L=1,lmax if(cnt(L) .gt. 0) then nc=nc+1 cell(nc)=L cnt(nc)=cnt(L) xcm(nc)=xcm(L) ycm(nc)=ycm(L) endif enddo n=nc bnd(1)=(cell(nc)-1)/bnd(2)+1 return end hexbin/vignettes/0000755000176200001440000000000014406412354013542 5ustar liggesusershexbin/vignettes/hexagon_binning.Rnw0000644000176200001440000005225413562352572017406 0ustar liggesusers%% Emacs: use Rnw-mode if available, else noweb %% NOTE -- ONLY EDIT THE .Rnw FILE ! %\VignetteIndexEntry{Hexagon Binning} %\VignetteDepends{hexbin, grid, marray} %\VignetteKeywords{Over plotting, Large data set, Visualization} %\VignettePackage{hexbin} \documentclass[]{article} \usepackage[authoryear,round]{natbib} \usepackage{amsmath} \usepackage{hyperref} \author{Nicholas Lewin-Koh\footnote{with minor assistance by Martin M\"achler}} \begin{document} \title{Hexagon Binning: an Overview} \maketitle{} \section{Overview} Hexagon binning is a form of bivariate histogram useful for visualizing the structure in datasets with large $n$. The underlying concept of hexagon binning is extremely simple; \begin{enumerate} \item the $xy$ plane over the set (range($x$), range($y$)) is tessellated by a regular grid of hexagons. \item the number of points falling in each hexagon are counted and stored in a data structure \item the hexagons with count $ > 0$ are plotted using a color ramp or varying the radius of the hexagon in proportion to the counts. \end{enumerate} The underlying algorithm is extremely fast and effective for displaying the structure of datasets with $n \ge 10^6$. If the size of the grid and the cuts in the color ramp are chosen in a clever fashion than the structure inherent in the data should emerge in the binned plots. The same caveats apply to hexagon binning as apply to histograms and care should be exercised in choosing the binning parameters. The hexbin package is a set of function for creating, manipulating and plotting hexagon bins. The package extends the basic hexagon binning ideas with several functions for doing bivariate smoothing, finding an approximate bivariate median, and looking at the difference between two sets of bins on the same scale. The basic functions can be incorporated into many types of plots. This package is based on the original package for S-PLUS by Dan Carr at George Mason University and is mostly the fruit of his graphical genius and intuition. \section{Theory and Algorithm} Why hexagons? There are many reasons for using hexagons, at least over squares. Hexagons have symmetry of nearest neighbors which is lacking in square bins. Hexagons are the maximum number of sides a polygon can have for a regular tesselation of the plane, so in terms of packing a hexagon is 13\% more efficient for covering the plane than squares. This property translates into better sampling efficiency at least for elliptical shapes. Lastly hexagons are visually less biased for displaying densities than other regular tesselations. For instance with squares our eyes are drawn to the horizontal and vertical lines of the grid. The following figure adapted from \cite{carretal} shows this effectively. \begin{figure}[h] \centering <>= library("grid") library("hexbin") x <- rnorm(1000) y <- rnorm(1000) ##-- Hexagon Bins: -- hbin <- hexbin(x,y, xbins = 25) grid.newpage() pushViewport(viewport(layout=grid.layout(1, 2))) pushViewport(viewport(layout.pos.col=1,layout.pos.row=1)) plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE) popViewport() ##-- Manual "square" binning: -- ## grid rx <- range(x); bx <- seq(rx[1],rx[2], length=29) ry <- range(y); by <- seq(ry[1],ry[2], length=29) ## midpoints mx <- (bx[-1]+bx[-29])/2 my <- (by[-1]+by[-29])/2 gg <- as.matrix(expand.grid(mx,my))# dim = (28^2, 2) zz <- unname(table(cut(x, b = bx), cut(y, b = by)))# 28 x 28 ind <- zz > 0 if(FALSE) ## ASCII image: symnum(unname(ind)) sq.size <- zz[ind]^(1/3) / max(zz) ## if we used base graphics: ## symbols(gg[ind,], squares = sq.size, inches = FALSE, fg = 2, bg = 2) pushViewport(viewport(layout.pos.col=2, layout.pos.row=1)) vp <- plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE, type="n") pushHexport(vp$plot, clip="on") grid.rect(x= gg[ind,1], y=gg[ind,2], width = sq.size, height= sq.size, default.units = "native", gp = gpar(col="black",fill="black")) popViewport() @ \caption[bivariate: squares and hexagons]{A bivariate point set binned into squares and hexagons. Bins are scaled approximately equal, and the size of the glyph is proportional to the count in that bin.} \label{fig:compHexSq} \end{figure} We can see in Figure~\ref{fig:compHexSq} that when the data are plotted as squares centered on a regular lattice our eye is drawn to the regular lines which are parallel to the underlying grid. Hexagons tend to break up the lines. How does does the hexagon binning algorithm work? \begin{enumerate} \item Squash $Y$ by $\sqrt{3}$ \item Create a dual lattice \item Bin each point into pair of near neighbor rectangles \item Pick closest of the rectangle centers (adjusting for $\sqrt{3}$) \end{enumerate} << nearNeighbor, echo=FALSE, results=hide >>= x <- -2:2 sq <- expand.grid(list(x = x, y = c(-1,0,1))) fc.sq <- rbind(sq,sq+.5) # face centered squares fc.sq$y <- sqrt(3)*fc.sq$y # stretch y by the sqrt(3) nr <- length(fc.sq$x)/2 @ \begin{figure}[h] \centering <>= par(mfrow = c(3,1)) par(mai = c(.1667,0.2680,0.1667,0.2680)) ##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) points(-.25,.15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1)+1 py <- sqrt(3)*(c(0,0,-1,-1)+1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) points(-.25, .15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1) + 1 py <- sqrt(3)*(c(0,0,-1,-1) + 1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) px <- c(-.5,-.5,0,.5, .5, 0) py <- c(-.5, .5,1,.5,-.5,-1) /sqrt(3) polygon(px, py, col = gray(.5), density = 0) polygon(px-.5, py+sqrt(3)/2, density = 0, col = 4) points(-.25, .15, col = 2, pch = 16, cex = .5) plot.new() arrows(-.25, .15, 0, 0, angle = 10, length = .05) @ \caption[Near Neighbor Rectangles]{} \label{fig:binalg} \end{figure} Figure~\ref{fig:binalg} shows graphically how the algorithm works. In the first panel we see the the dual lattice laid out in black and blue points. The red point is an arbitrary point to be binned. The second panel shows the near neigbor rectangles for each lattice around the point to be binned, the intersection of the rectangles contains the point. The last panel shows the simple test for locating the point in the hexagon, the closest of the two corners which are not intersections is the center of the hexagon to which the point should be allocated. The binning can be calculated in one pass through the data, and is clearly $O(n)$ with a small constant. Storage is vastly reduced compared to the original data. \section{Basic Hexagon Binning Functions} Using the basic hexagon binning functions are not much more involved than using the basic plotting functions. The following little example shows the basic features of the basic plot and binning functions. We start by loading the package and generating a toy example data set. << basic, fig=TRUE, results=hide >>= x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40) plot(hbin) @ There are two things to note here. The first is that the function \texttt{gplot.hexbin} is defined as a \texttt{plot} method for the S4 class \texttt{hexbin}. The second is that the default color scheme for the hexplot is a gray scale. However, there is an argument to plot, \texttt{colramp}, that allows the use of any function that excepts an argument \texttt{n} and returns $n$ colors. Several functions are supplied that provide alternative color-ramps to R's built in color ramp functions, see \texttt{help(ColorRamps)}. << showcol, fig=TRUE, width=7, height=4, echo=FALSE, results=hide >>= #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"),"inches"), convertHeight(unit(1,"npc"),"inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40, shape = shape) #grid.newpage() pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = terrain.colors) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = BTY) popViewport() @ The figure shows three examples of using hexagons in a plot for large $n$ with different color schemes. Upper left: the default gray scale, upper right: the R base \texttt{terrain.colors()}, and lower middle: \texttt{BTY()}, a blue to yellow color ramp supplied with hexbin on a perceptually linear scale. The hexbin package supplies a plotting method for the hexbin data structure. The plotting method \texttt{gplot.hexbin} accepts all the parameters for the hexagon function and supplies a legend as well, for easy interpretation of the plot. Figure~2 shows a hex binned plot with a legend. A function \texttt{grid.hexlegend} is supplied for creating user specified hexagon legends. \section{Extended Hexagon Functions} So far we have looked at the basic hexagon plot. The hexbin package supplies several extensions to the basic hexbin, and the associated hexplot. The extensions discussed in this section will be smoothing hexbin objects using the hsmooth function, approximating a bivariate median with hexagons and a version of a bivariate boxplot, and using eroded hexbin objects to look at the overlap of two bivariate populations. \subsection{Smoothing with \texttt{hsmooth}} At this point the hexbin package only provides a single option for smoothing using a discrete kernel. Several improvements are in development including an apply function over neighborhoods and spline functions using a hexagonal basis or tensor products. The apply function should facilitate constructing more sophisticated kernel smoothers. The hexagon splines will provide an alternative to smoothing on a square grid and allow interpolation of hexagons to finer grids. The current implementation uses the center cell, immediate neighbors and second neighbors to smooth the counts. The counts for each resulting cell is a linear combination of the counts in the defined neighborhood, including the center cell and weights. The counts are blurred over the the domain, and the domain increases because of shifting. Generally the dimension of the occupied cells of the lattice increases by one, sometimes two. Some examples of using the hsmooth function are given below. Notice in the plots that the first plot is with no smoothing, weights are \texttt{c(1,0,0)} meaning that only the center cell is used with identity weights. The second plot shows a first order kernel using weights \texttt{c(24,12,0)}, while the third plot uses weights for first and second order neighbors specified as \texttt{c(48,24,12)}. The code segment generating these plots rescales the smoothed counts so that they are on the original scale. << showsmth, fig=TRUE, width=8, height=4, echo=FALSE, results=hide >>= #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) x <- rnorm(10000) y <- rnorm(10000) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"), "inches"), convertHeight(unit(1,"npc"), "inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) hbin <- hexbin(x,y, xbins = 30,shape = shape) hsmbin1 <- hsmooth(hbin, c( 1, 0,0)) hsmbin2 <- hsmooth(hbin, c(24,12,0)) hsmbin2@count <- as.integer(ceiling(hsmbin2@count/sum(hsmbin2@wts))) hsmbin3 <- hsmooth(hbin,c(48,24,12)) hsmbin3@count <- as.integer(ceiling(hsmbin3@count/sum(hsmbin3@wts))) pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1)) plot(hsmbin1, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hsmbin2, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hsmbin3, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() @ \subsection{Bin Erosion and the \texttt{hboxplot}} The next tool to introduce, gray level erosion, extends the idea of the boxplot. The idea is to extract cells in a way that the most exposed cells are removed first, ie cells with fewer neighbors, but cells with lower counts are removed preferentially to cells with higher counts. The algorithm works as follows: Mark the high count cells containing a given fraction, cdfcut, of the total counts. Mark all the cells if cdfcut is zero. The algorithm then performs gray-level erosion on the marked cells. Each erosion cycle removes counts from cells. The counts removed from each cell are a multiple of the cell's exposed-face count. The algorithm chooses the multiple so at least one cell will be empty or have a count deficit on each erosion cycle. The erode vector contains an erosion number for each cell. The value of erode is \begin{center} $6\times$(The erosion cycle at cell removal) $ - $ (The cell deficit at removal) \end{center} The cell with the highest erosion number is a candidate bivariate median. A few ties in the erosion order are common. The notion of an ordering to the median is nice because it allows us to create a version of a bivariate box plot built on hexagons. The following example comes from a portion of the ''National Health and Nutrition Examination Survey'' included in \texttt{hexbin} as the sample data set NHANES. The data consist of 9575 persons and mesures various clinical factors. Here in Figure~\ref{hbox} we show the levels of transferin, a measure of iron binding against hemoglobin for all \begin{figure}[h] \centering << echo=FALSE, results=hide >>= data(NHANES) #grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) #vpin <- c(convertWidth (unit(1,"npc"), "inches"), # convertHeight(unit(1,"npc"), "inches")) vpin <- c(unit(6,"inches"),unit(4, "inches")) shape <- optShape(height = vpin[2], width = vpin[1], mar = mai) @ << hbox, fig=TRUE, width=6, height=4, echo=FALSE, results=hide >>= hb <- hexbin(NHANES$Transferin, NHANES$Hemoglobin, shape = shape) hbhp <- hboxplot(erode(hb,cdfcut = .05),unzoom = 1.3) pushHexport(hbhp,clip = 'on') hexGraphPaper(hb,fill.edges = 3) popViewport() @ \caption{Hexagon "boxplots" showing the top 95 percent of the data for males and females. The red hexagons are an estimate of the bivariate median.} \label{hbox} \end{figure} Note that we have added ``hexagon graph paper'' to the plot. This can be done for any hexbin plot, using the command \texttt{hexGraphPaper()} where the main argument is the hexbin object. \subsection{Comparing Distributions and the \texttt{hdiffplot}} With univariate data, if there are multiple groups, one often uses a density estimate to overlay densities, and compare two or more distributions. The hdiffplot is the bivariate analog. The idea behind the hdiff plot is to plot one or more bin objects representing multiple groups to compare the distributions. The following example uses the National Health data supplied in the hexbin package, (\texttt{NHANES}). Below we show a comparison of males and females, the bivariate relationship is transferin, which is a derived measure of the ability of blood to bind oxygen, vs the level of hemoglobin. Note that in the call to \texttt{hdiffplot} we erode the bins to calculate the bivariate medians, and only display the upper 75\% of the data. \begin{figure}[h] \centering << hdiff, fig=TRUE, width=6, height=4, echo=FALSE, results=hide >>= #grid.newpage() shape <- optShape(height = vpin[2],width = vpin[1],mar = mai) xbnds <- range(NHANES$Transferin,na.rm = TRUE) ybnds <- range(NHANES$Hemoglobin,na.rm = TRUE) hbF <- hexbin(NHANES$Transferin[NHANES$Sex == "F"], NHANES$Hemoglobin[NHANES$Sex == "F"], xbnds = xbnds, ybnds = ybnds, shape = shape) hbM <- hexbin(NHANES$Transferin[NHANES$Sex == "M"], NHANES$Hemoglobin[NHANES$Sex == "M"], xbnds = xbnds, ybnds = ybnds, shape = shape) #plot.new() hdiffplot(erode(hbF,cdfcut = .25),erode(hbM,cdfcut = .25),unzoom = 1.3) @ \caption{A difference plot of transferin vs hemoglobin for males and females.} \label{hdiffplot} \end{figure} \subsection{Plotting a Third Concomitant Variable} In many cases, such as with spatial data, one may want to plot the levels of a third variable in each hexagon. The grid.hexagons function has a pair of arguments, \texttt{use.count} and \texttt{cell.at}. If \texttt{use.count = FALSE} and \texttt{cell.at} is a numeric vector of the same length as \texttt{hexbin@count} then the attribute vector will be used instead of the counts. \texttt{hexTapply} will summarize values for each hexagon according to the supplied function and return the table in the right order to use as an attribute vector. Another alternative is to set the \texttt{cAtt} slot of the hexbin object and grid.hexagons will automatically plot the attribute if \texttt{use.count = FALSE} and \texttt{cell.at = NULL}. Here is an example using spatial data. Often cartographers use graduated symbols to display varying numerical quantities across a region. \section{Example: cDNA Chip Normalization} This example is taken from the marray package, which supplies methods and classes for the normalization and diagnostic plots of cDNA microarrays. In this example the goal is not to make any comments about the normalization methodology, but rather to show how the diagnostic plots can be enhanced using hexagon binning due to the large number of points ($n = 8,448$ cDNA probes per chip). We look at the diagnostic plot $M$ vs $A$, where $M$ is the log--ratio, $M = \log <- 2 \frac{R}{G}$ and $A$ is the overall intensity, $A = \log <- 2\sqrt{RG}$. Figure~3 shows the plot using points and on the right hexagons. The hexagon binned plot shows that most of the pairs are well below zero, and that the overall shape is more like a comet with most of the mass at the bottom of the curve, rather than a thick bar of points curving below the line. << marray1, fig=TRUE, results=hide >>= ### Need to redo this part. if (require("marray")) { data(swirl, package = "marray") ## use swirl dataset hb1 <- hexbin(maA(swirl[,1]), maM(swirl[,1]), xbins = 40) grid.newpage() pushViewport(viewport(layout = grid.layout(1, 2))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) nb <- plot(hb1, type = 'n', xlab = 'A', ylab = 'M', main = "M vs A plot with points", legend = 0, newpage = FALSE) pushHexport(nb$plot.vp) grid.points(maA(swirl[,1]), maM(swirl[,1]),pch = 16,gp = gpar(cex = .4)) popViewport() nb$hbin <- hb1 hexVP.abline(nb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(nb) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) hb <- plotMAhex(swirl[,1], newpage = FALSE, main = "M vs A plot with hexagons", legend = 0) hexVP.abline(hb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(hb) popViewport() } else { plot(1) } @ \section{Manipulating Hexbins} The underlying functions for hexbin have been rewritten and now depend on the grid graphics system. The support unit for all hexagon plots is the hexViewport. The function \texttt{hexViewport()} takes a hexbin object as input and creates a viewport scaled to the current device or viewport so that the aspect ratio is scaled appropriately for the hexagons. Unlike in the base graphic functions where the aspect ratio is maintained by shifting the range of the axes, here the extra space is shifted into the margins. Currently hexViewport returns a hexViewport object that has information on the margins and its own pushViewport method. In the next example we will 1st show how to manipulate an existing plot using grid commands and second show how to create a custom plotting function using \texttt{hexViewport} and grid. \subsection{Adding to an existing plot} Adding to an existing plot requires the use of grid functions. For instance, in the following code, << addto, fig=TRUE, echo=TRUE, results=verbatim >>= if (require("marray")) { hplt <- plot(hb1, style = 'centroid', border = gray(.65)) pushHexport(hplt$plot.vp) ll.fit <- loess(hb1@ycm ~ hb1@xcm, weights = hb1@count, span = .4) pseq <- seq(hb1@xbnds[1]+1, hb1@xbnds[2]-1, length = 100) grid.lines(pseq, predict(ll.fit,pseq), gp = gpar(col = 2), default.units = "native") } else { plot(1) } @ we have to use \texttt{grid.lines()}, as opposed to \texttt{lines()}. \bibliography{references} \end{document} hexbin/vignettes/references.bib0000644000176200001440000000057713562345032016352 0ustar liggesusers@article{carretal, author = {Daniel B. Carr and Anthony R. Olsen and Denis White}, title = {Hexagon Mosaic Maps for Display of Univariate and Bivariate Geographical Data}, journal = {Cartography and Geographic Information Systems}, volume = {19}, number = {4}, pages = {228-236}, year = {1992}, publisher = {Taylor & Francis}, doi = {10.1559/152304092783721231} } hexbin/R/0000755000176200001440000000000014406411113011723 5ustar liggesusershexbin/R/LINGRAY.R0000644000176200001440000000461713171627112013171 0ustar liggesusersLinGray <- function(n,beg = 1,end = 92) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(0,0,0), c(0,0,0), c(1,1,1), c(1,1,1), c(2,2,2), c(3,3,3), c(4,4,4), c(5,5,5), c(6,6,6), c(7,7,7), c(8,8,8), c(9,9,9), c(10,10,10), c(11,11,11), c(12,12,12), c(13,13,13), c(14,14,14), c(15,15,15), c(16,16,16), c(17,17,17), c(18,18,18), c(19,19,19), c(20,20,20), c(21,21,21), c(22,22,22), c(23,23,23), c(24,24,24), c(25,25,25), c(26,26,26), c(27,27,27), c(28,28,28), c(29,29,29), c(30,30,30), c(32,32,32), c(34,34,34), c(35,35,35), c(37,37,37), c(39,39,39), c(41,41,41), c(43,43,43), c(45,45,45), c(46,46,46), c(47,47,47), c(49,49,49), c(51,51,51), c(52,52,52), c(54,54,54), c(56,56,56), c(59,59,59), c(61,61,61), c(64,64,64), c(67,67,67), c(69,69,69), c(72,72,72), c(75,75,75), c(76,76,76), c(78,78,78), c(81,81,81), c(84,84,84), c(87,87,87), c(91,91,91), c(94,94,94), c(97,97,97), c(101,101,101), c(104,104,104), c(107,107,107), c(108,108,108), c(112,112,112), c(116,116,116), c(120,120,120), c(124,124,124), c(128,128,128), c(132,132,132), c(136,136,136), c(141,141,141), c(145,145,145), c(147,147,147), c(150,150,150), c(154,154,154), c(159,159,159), c(164,164,164), c(169,169,169), c(174,174,174), c(179,179,179), c(185,185,185), c(190,190,190), c(195,195,195), c(201,201,201), c(207,207,207), c(212,212,212), c(216,216,216), c(218,218,218), c(224,224,224), c(226,226,226), c(230,230,230), c(237,237,237), c(243,243,243), c(245,245,245), c(252,252,252), c(255,255,255), c(255,255,255))[round(seq(beg,end,length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/smoothHexbin.R0000644000176200001440000000253114406411113014516 0ustar liggesuserssetClass("smoothbin", representation("hexbin", wts="numeric")) setGeneric("hsmooth", function(bin, wts) standardGeneric("hsmooth")) smooth.hexbin <- function(bin, wts = c(48, 4, 1)) { if(!is(bin,"hexbin")) stop("first argument must be a hexbin object") cell <- bin@cell - 1 n <- as.integer(length(cell)) cnt <- bin@count xbins <- bin@xbins bdim <- bin@dimen row <- bdim[1] col <- bdim[2] ncol <- col + 4 nrow <- row + 4 nmax <- ncol * nrow sm <- rep.int(0:0, nmax) nr <- cell %/% col + 2 nc <- cell %% col + 3 pad <- rep.int(0:0, nmax - n) cell <- c(nr * ncol + nc, pad) cnt <- c(cnt, pad) ans <- .Fortran(`hsm`, cell = as.integer(cell), cnt = as.integer(cnt), n = n, nmax = as.integer(nmax), sm = as.integer(sm), ncol = as.integer(ncol), wts = as.integer(wts))[c("cell","cnt","n")] n <- ans$n length(ans$cell) <- length(ans$cnt) <- n bin@xbins <- xbins + 4 bin@xbnds <- addBit(bin@xbnds, f = 2/xbins) bin@ybnds <- addBit(bin@ybnds, f = 2/xbins) bin@dimen <- c(nrow, ncol) bin@cell <- ans$cell bin@count <- ans$cnt new("smoothbin", bin, wts=wts) } setMethod("hsmooth", "hexbin", smooth.hexbin) hexbin/R/grid.hexlegend.R0000644000176200001440000001375313171627112014754 0ustar liggesusersgrid.hexlegend <- function(legend, ysize, lcex, inner, style = "colorscale", minarea = 0.05, maxarea = 0.8, mincnt = 1, maxcnt, trans = NULL, inv = NULL, colorcut, density = NULL, border = NULL, pen = NULL, colramp = function(n) { LinGray(n,beg = 90,end = 15) }, leg.unit="native") { ## the formal arg matching should happen style <- match.arg(style, eval(formals(grid.hexagons)[["style"]])) if (style %in% c("centroids", "lattice", "colorscale")) { ## _______________tranformations_______________________ if(is.null(trans)) { sc <- maxcnt - mincnt bnds <- round(mincnt + sc * colorcut) } else { if(!is.function(trans) && !is.function(inv)) stop("'trans' and 'inv' must both be functions if 'trans' is not NULL") con <- trans(mincnt) sc <- trans(maxcnt) - con bnds <- round(inv(con + sc * colorcut)) } } if(style == "colorscale") { ## use own 'inner' n <- length(bnds) spacing <- ysize/(n + 3) inner <- min(legend/3.5, (sqrt(3) * spacing)/2) } dx <- inner/2 dy <- dx/sqrt(3) hexC <- hexcoords(dx, dy, n = 1,sep=NULL) ## _______________Plotting______________________________ switch(style, "colorscale" = { midx <- legend/3 textx <- (2 * legend)/3 tx <- hexC$x + midx pen <- colramp(n) for(i in seq(length = n-1)) { grid.polygon(tx,hexC$y + i * spacing, default.units=leg.unit,id=NULL,id.lengths=6, gp=gpar(fill = pen[i], col = border)) grid.text(as.character(bnds[i]), textx, (i - 0.5) * spacing, default.units=leg.unit, gp=gpar(cex = lcex)) } grid.text(as.character(bnds[n]), textx, (n - 0.5) * spacing, default.units=leg.unit, gp=gpar(cex = lcex)) grid.text("Counts", legend/2, (n + 1.5) * spacing, default.units=leg.unit, gp=gpar(cex = 1.7 * lcex)) }, "centroids" = , "lattice" = { ## NL Solved hex overlap problem on legend ## Need to tackle too many categories radius <- sqrt(minarea + (maxarea - minarea) * colorcut) n <- length(radius) shift <- c(0, 2*dy*radius) shift <- shift[1:n] + shift[2:(n+1)] #labht <- max(strheight(as.character(bnds), cex = lcex)) labht <- convertY(unit(get.gpar(names = "fontsize")[[1]]*lcex, "points"),"native",valueOnly = TRUE) shift <- pmax(labht, shift) six <- rep.int(6:6, n) xmid <- legend/3 inc <- ysize/(n+3) if(inc > max(shift)) y <- inc * 1:n else { y <- cumsum(shift) extra.slop <- (n * inc) - y[n] # FIXME? y[n] == sum(shift) shift[-1] <- shift[-1] + extra.slop/(n-1) y <- cumsum(shift) ## (y+(1/n)*extra.slop)-y[1] ## delta <- max(log(shift))-min(log(shift)) ## fudge <- extra.slop*(diff(log(shift))/delta) ## y<- c(y[1], y[-1]+ fudge ) } textx <- rep.int((2 * legend)/3, n) ## ____________________plotting______________________ if(is.null(pen)) pen <- 1 if(is.null(border)) border <- pen grid.polygon(x = rep.int(hexC$x,n)* rep.int(radius, six) + rep.int(xmid, 6 * n), y = rep.int(hexC$y,n)* rep.int(radius, six) + rep.int(y, six), default.units=leg.unit, id=NULL, id.lengths=rep.int(6,n), gp=gpar(fill = pen, col = border)) grid.text(as.character(bnds), textx, y, default.units=leg.unit, gp=gpar(cex = lcex)) grid.text("Counts", legend/2, (n + 2) * inc, default.units=leg.unit, gp=gpar(cex =1.7 * lcex)) }, "nested.lattice" = , "nested.centroids" = { ## _____________x scaling_____________________________ numb <- cut(floor(legend/inner), breaks = c(-1, 0, 2,4)) ## Note: In old code ## top breaks=c(-1,0,2,4,8), numb<- 5 and size=1:9 if(is.na(numb)) numb <- 4 switch(numb, {warning("not enough space for legend"); return()}, size <- 5, size <- c(1, 5, 9), size <- c(1, 3, 5, 7, 9)) xmax <- length(size) radius <- sqrt(minarea + (maxarea - minarea) * (size - 1)/9) txt <- as.character(size) ##___________________y scaling_____________________ lab <- c("Ones", "Tens", "Hundreds", "Thousands", "10 Thousands", "100 Thousands", "Millions", "10 Millions", "100 Millions", "Billions") power <- floor(log10(maxcnt)) + 1 yinc <- 16 * dy if(ysize/power < yinc) {warning("Not enough height for legend"); return()} xmid <- legend/10 x <- inner * (1:xmax - (1 + xmax)/2) + xmid n <- length(x) tx <- rep.int(hexC$x, n) ty <- rep.int(hexC$y, n) six <- rep.int(6:6, n) y <- rep.int(3 * dy - yinc, xmax) ## ____________________plotting______________________ if(is.null(pen)) { pen <- 1:power +1 pen <- cbind(pen, pen +10) } if(is.null(border)) border <- FALSE for(i in 1:power) { y <- y + yinc hexpolygon(x, y, hexC, col = pen[i,1], border = border) grid.polygon(x= tx * rep.int(radius, six) + rep.int(x, six), y= ty * rep.int(radius, six) + rep.int(y, six), default.units=leg.unit, id=NULL, id.lengths=rep(6,n), gp=gpar(fill = pen[i,2], col = border)) grid.text(txt, x, y - 4.5 * dy, default.units=leg.unit, gp=gpar(cex = lcex)) ##adj= 0.5, cex = lcex) grid.text(lab[i], xmid, y[1] + 4.5 * dy, default.units=leg.unit, gp=gpar(cex = 1.7*lcex)) ##adj= 0.5, cex = 1.7*lcex) } })## switch(style = *) }## hex.legend() hexbin/R/hexutil.R0000644000176200001440000000721213171627112013540 0ustar liggesusershcell2xyInt <- function(hbin, xbins=NULL, xbnds=NULL, ybnds=NULL, shape=NULL) { if(missing(hbin) && (is.null(xbnds) || is.null(ybnds))) stop("Need a hexbin object or boundaries to make lattice") if(missing(hbin) && (is.null(xbins) || is.null(shape))) stop("Need xbins and shape to make a lattice") if(!missing(hbin)) { xbins <- hbin@xbins shape <- hbin@shape xbnds <- if(is.null(xbnds)) hbin@xbnds else xbnds ybnds <- if(is.null(ybnds)) hbin@ybnds else ybnds dimen <- hbin@dimen } if(missing(hbin)) { jmax <- floor(xbins + 1.5001) imax <- 2 * floor((xbins *shape)/sqrt(3) + 1.5001) dimen <- c(imax, jmax) } cell <- 1:(dimen[1]*dimen[2])-1 i <- cell %/% dimen[2] j <- cell %% dimen[2] list(i=i+1, j=j+1) } hgridcent <- function(xbins, xbnds, ybnds, shape, edge.add=0) { ## auxiliary for hexGraphPaper(): jmax <- floor(xbins + 1.5001) c1 <- 2 * floor((xbins *shape)/sqrt(3) + 1.5001) imax <- (jmax*c1 -1)/jmax + 1 dimen <- c(imax, jmax) c3 <- diff(xbnds)/xbins c4 <- (diff(ybnds) * sqrt(3))/(2 * shape * xbins) if(edge.add > 0) { xbnds <- xbnds + 1.5*c(-edge.add*c3, edge.add*c3) ybnds <- ybnds + c(-edge.add*c4, edge.add*c4) dimen <- dimen + rep.int(2*edge.add, 2) } jmax <- dimen[2] cell <- 1:(dimen[1]*dimen[2]) i <- cell %/% jmax j <- cell %% jmax y <- c4 * i + ybnds[1] x <- c3 * ifelse(i %% 2 == 0, j, j + 0.5) + xbnds[1] list(x = x, y = y, dimen = dimen, dx=c3, dy=c4) } hexGraphPaper <- function(hb, xbnds=NULL, ybnds=NULL, xbins=30, shape=1, add=TRUE, fill.edges=1, fill=0, border=1) { if(missing(hb) && (is.null(xbnds) || is.null(ybnds))) stop("Need a hexbin object or boundaries to make lattice") if(!missing(hb)) { xbins <- hb@xbins shape <- hb@shape xbnds <- if(is.null(xbnds)) hb@xbnds else xbnds ybnds <- if(is.null(ybnds)) hb@ybnds else ybnds dimen <- hb@dimen } xy <- hgridcent(xbins, xbnds, ybnds, shape, edge.add=fill.edges) if(add){ sx <- xbins/diff(xbnds) sy <- (xbins * shape)/diff(ybnds) inner <- 0.5 outer <- (2 * inner)/sqrt(3) dx <- inner/sx dy <- outer/(2 * sy) if(add){ hexC <- hexcoords(dx, dy, sep=NULL) hexpolygon (xy$x, xy$y, hexC, dx, dy, fill = fill, border = border, hUnit = "native") } } invisible(xy) } hexTapply <- function(hbin,dat,FUN=sum,...,simplify=TRUE) { if(is.null(hbin@cID)) stop("Must have cell ID's to do this operation \n please re-bin data using IDs = TRUE") if((length(dat)> 0) && (length(dat) != length(hbin@cID))) stop("Length of IDs does not match the length of the data") tapply(dat,hbin@cID,FUN,...,simplify=simplify) } optShape <- function(vp, height=NULL, width=NULL, mar=NULL) { if(missing(vp) && (is.null(height) || is.null(width))) stop("Need a viewport object or height and width of the plotting region.") if(!missing(vp)) { if("hexVP" %in% class(vp)) { height <- vp@plt[2] width <- vp@plt[1] } else if("viewport"%in%class(vp)) { #height <- convertHeight(unit(1,"npc"),"inches") #width <- convertWidth (unit(1,"npc"),"inches") height <- convertUnit(vp$height,"inches") width <- convertUnit(vp$width,"inches") } else stop("need valid viewport or hexViewport") } if(!is.null(mar)){ height <- height - mar[1] - mar[3] width <- width - mar[2] - mar[4] } shape <- as.numeric(height)/as.numeric(width) shape } inout.hex <- function(hbin,mincnt) { if(is.null(hbin@cID)) stop("bin object must have a cID slot, \n try re-binning with ID = TRUE") tI <- table(hbin@cID) which(hbin@cID%in%(names(tI)[tI 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c( 0, 0, 0), c( 45, 0, 36), c( 56, 0, 46), c( 60, 0, 49), c( 67, 0, 54), c( 70, 0, 59), c( 71, 0, 61), c( 75, 0, 68), c( 74, 0, 73), c( 74, 0, 77), c( 73, 0, 81), c( 71, 0, 87), c( 69, 1, 90), c( 68, 2, 94), c( 66, 3, 97), c( 63, 6,102), c( 61, 7,106), c( 58, 10,109), c( 56, 12,113), c( 53, 15,116), c( 48, 18,119), c( 47, 20,121), c( 44, 23,124), c( 41, 27,128), c( 40, 28,129), c( 37, 32,132), c( 34, 36,134), c( 29, 43,137), c( 25, 52,138), c( 24, 57,139), c( 24, 62,141), c( 24, 64,142), c( 23, 65,142), c( 23, 69,143), c( 23, 71,142), c( 23, 71,142), c( 23, 73,142), c( 23, 75,142), c( 23, 75,142), c( 23, 78,142), c( 23, 80,142), c( 23, 80,142), c( 23, 82,141), c( 23, 85,141), c( 23, 85,141), c( 23, 87,140), c( 23, 87,140), c( 24, 90,140), c( 24, 90,140), c( 24, 93,139), c( 24, 93,139), c( 24, 93,139), c( 24, 93,139), c( 24, 97,139), c( 24, 97,139), c( 25,101,138), c( 25,101,138), c( 25,104,137), c( 25,104,137), c( 25,104,137), c( 26,108,137), c( 26,108,137), c( 27,111,136), c( 27,111,136), c( 27,111,136), c( 27,115,135), c( 27,115,135), c( 28,118,134), c( 28,118,134), c( 29,122,133), c( 29,122,133), c( 29,122,133), c( 29,122,133), c( 29,125,132), c( 29,125,132), c( 30,128,131), c( 30,128,131), c( 31,131,130), c( 31,131,130), c( 31,131,130), c( 32,134,128), c( 32,134,128), c( 33,137,127), c( 33,137,127), c( 33,137,127), c( 34,140,125), c( 34,140,125), c( 35,142,123), c( 35,142,123), c( 36,145,121), c( 36,145,121), c( 36,145,121), c( 37,147,118), c( 37,147,118), c( 38,150,116), c( 38,150,116), c( 40,152,113), c( 40,152,113), c( 41,154,111), c( 41,154,111), c( 42,156,108), c( 42,156,108), c( 43,158,106), c( 43,158,106), c( 43,158,106), c( 45,160,104), c( 45,160,104), c( 46,162,101), c( 46,162,101), c( 48,164, 99), c( 48,164, 99), c( 50,166, 97), c( 50,166, 97), c( 51,168, 95), c( 53,170, 93), c( 53,170, 93), c( 53,170, 93), c( 55,172, 91), c( 55,172, 91), c( 57,174, 88), c( 57,174, 88), c( 59,175, 86), c( 62,177, 84), c( 64,178, 82), c( 64,178, 82), c( 67,180, 80), c( 67,180, 80), c( 69,181, 79), c( 72,183, 77), c( 72,183, 77), c( 72,183, 77), c( 75,184, 76), c( 77,186, 74), c( 80,187, 73), c( 83,189, 72), c( 87,190, 72), c( 91,191, 71), c( 95,192, 70), c( 99,193, 70), c(103,194, 70), c(107,195, 70), c(111,196, 70), c(111,196, 70), c(115,196, 70), c(119,197, 70), c(123,197, 70), c(130,198, 71), c(133,199, 71), c(137,199, 72), c(140,199, 72), c(143,199, 73), c(143,199, 73), c(147,199, 73), c(150,199, 74), c(153,199, 74), c(156,199, 75), c(160,200, 76), c(167,200, 78), c(170,200, 79), c(173,200, 79), c(173,200, 79), c(177,200, 80), c(180,200, 81), c(183,199, 82), c(186,199, 82), c(190,199, 83), c(196,199, 85), c(199,198, 85), c(199,198, 85), c(203,198, 86), c(206,197, 87), c(212,197, 89), c(215,196, 90), c(218,195, 91), c(224,194, 94), c(224,194, 94), c(230,193, 96), c(233,192, 98), c(236,190,100), c(238,189,104), c(240,188,106), c(240,188,106), c(242,187,110), c(244,185,114), c(245,184,116), c(247,183,120), c(248,182,123), c(248,182,123), c(250,181,125), c(251,180,128), c(252,180,130), c(253,180,133), c(253,180,133), c(254,180,134), c(254,179,138), c(255,179,142), c(255,179,145), c(255,179,145), c(255,179,152), c(255,180,161), c(255,180,164), c(255,180,167), c(255,180,167), c(255,181,169), c(255,181,170), c(255,182,173), c(255,183,176), c(255,183,176), c(255,184,179), c(255,185,179), c(255,185,182), c(255,186,182), c(255,186,182), c(255,187,185), c(255,188,185), c(255,189,188), c(255,189,188), c(255,190,188), c(255,191,191), c(255,192,191), c(255,194,194), c(255,194,194), c(255,197,197), c(255,198,198), c(255,200,200), c(255,201,201), c(255,201,201), c(255,202,202), c(255,203,203), c(255,205,205), c(255,206,206), c(255,206,206), c(255,208,208), c(255,209,209), c(255,211,211), c(255,215,215), c(255,216,216), c(255,216,216), c(255,218,218), c(255,219,219), c(255,221,221), c(255,223,223), c(255,226,226), c(255,228,228), c(255,230,230), c(255,230,230), c(255,232,232), c(255,235,235), c(255,237,237), c(255,240,240), c(255,243,243), c(255,246,246), c(255,249,249), c(255,251,251), c(255,253,253), c(255,255,255))[ round(seq(beg,end, length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/lattice.R0000644000176200001440000006742313171627112013515 0ustar liggesusers# the functions in this file are verbatim copies from those in package # lattice, http://cran.r-project.org/src/contrib/lattice_0.20-29.tar.gz # copied on Aug 8, 2014, by Edzer Pebesma. # reason for copying is that hexbin 1.26-3 generates # the following NOTE on CRAN: # # checking dependencies in R code ... NOTE # Unexported objects imported by ':::' calls: # lattice:::cond.orders lattice:::construct.scales # lattice:::cupdate lattice:::limits.and.aspect # lattice:::trellis.skeleton # See the note in ?::: about the use of this operator. # See the information on DESCRIPTION files in the chapter Creating R # packages of the Writing R Extensions manual. # the files in lattice carry the following copyright notice: ### Copyright (C) 2001-2006 Deepayan Sarkar ### Copyright (C) 2001-2005 Saikat DebRoy ### ### This file is part of the lattice package for R. ### It is made available under the terms of the GNU General Public ### License, version 2, or at your option, any later version, ### incorporated herein by reference. ### ### This program is distributed in the hope that it will be ### useful, but WITHOUT ANY WARRANTY; without even the implied ### warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ### PURPOSE. See the GNU General Public License for more ### details. ### ### You should have received a copy of the GNU General Public ### License along with this program; if not, write to the Free ### Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ### MA 02110-1301, USA construct.legend <- function(legend = NULL, key = NULL, fun = "draw.key") { if (is.null(legend) && is.null(key)) return(NULL) if (is.null(legend)) legend <- list() if (!is.null(key)) { space <- key$space x <- y <- corner <- NULL if (is.null(space)) { if (any(c("x", "y", "corner") %in% names(key))) { stopifnot(is.null(x) || (length(x) == 1 && x >= 0 && x <= 1)) stopifnot(is.null(y) || (length(y) == 1 && y >= 0 && y <= 1)) stopifnot(is.null(corner) || (length(corner) == 2 && all(corner %in% c(0, 1)))) space <- "inside" x <- key$x y <- key$y corner <- key$corner ## check for valid values } else space <- "top" } if (space != "inside" && space %in% names(legend)) stop(gettextf("component '%s' duplicated in key and legend", space)) key.legend <- list(fun = fun, args = list(key = key, draw = FALSE)) key.legend$x <- x key.legend$y <- y key.legend$corner <- corner legend <- c(list(key.legend), legend) names(legend)[1] <- space } legend } extend.limits <- function(lim, length = 1, axs = "r", prop = if (axs == "i") 0 else lattice.getOption("axis.padding")$numeric) { ## if (!is.numeric(lim)) NA if (all(is.na(lim))) NA_real_ # or lim? else if (is.character(lim) ) { c(1, length(lim)) + c(-1, 1) * if (axs == "i") 0.5 else lattice.getOption("axis.padding")$factor } else if (length(lim) == 2) { if (lim[1] > lim[2]) { ccall <- match.call() ccall$lim <- rev(lim) ans <- eval.parent(ccall) return (rev(ans)) } if (!missing(length) && !missing(prop)) stop("'length' and 'prop' cannot both be specified") if (length <= 0) stop("'length' must be positive") if (!missing(length)) { prop <- (as.numeric(length) - as.numeric(diff(lim))) / (2 * as.numeric(diff(lim))) } if (lim[1]==lim[2]) lim + 0.5 * c(-length,length) else { d <- diff(as.numeric(lim)) lim + prop * d * c(-1,1) } } else { print(lim) stop("improper length of 'lim'") } } limitsFromLimitlist <- function(have.lim, lim, relation, limitlist, used.at, numlimitlist, axs, npackets) ## have.lim: logical, whether xlim/ylim was explicitly specified ## lim: the specified limit if have.lim = TRUE ## relation: same/free/sliced ## limitlist: list of limits from prepanel calculations, one for each panel ## numlimitlist: (optional) numeric locations for factors (lim ## will be levels including unused ones) ## axs: "r", "i" etc, passed on to extend.limits ## return value depends on relation. (See limits.and.aspect below, ## where this is used, for partial enlightenment.) { if (relation == "same") { ## The problem here is that we need to figure out the overall ## limit required from the limits of each panel. This could be ## a problem for two reasons. First, some panels could have no ## data in them, in which case the corresponding limits would ## be NA. Secondly, the limits could be either numeric or ## character vectors (the latter for factors). When relation = ## same, the type should be same across panels. When numeric, ## we just take range, leaving out NAs. But what about ## factors? Is it OK to assume that all the non-NA vectors ## would be exactly the same ? They should be, since levels(x) ## would not change even if not all levels are ## represented. So, I'm just taking unique of all the vectors ## concatenated, excluding NA's ## Additional complication: Need to preserve class of limits, ## to be used later in tick location/label calculation. Not a ## problem in other cases, but here unlist-ing loses the ## class. #if (!have.lim) ## always calculate the limits from prepanel first: ## should check that all classes are the same. How ? What ## about NA's ? Arrgh! ## to handle NA's, how about: all.na <- unlist(lapply(limitlist, function(x) all(is.na(x)))) class.lim <- ## retain non-NA limitlists only lapply(limitlist[!all.na], class) ## class.lim is a list now, may be length 0 limits <- unlist(limitlist) ## loses the class attribute ## if (length(limits) > 0) if (sum(!is.na(limits)) > 0) { if (is.character(limits)) { limits <- unique(limits[!is.na(limits)]) slicelen <- diff(extend.limits(limits, axs = axs)) } else ## if (is.numeric(limits)) # or dates etc { limits <- extend.limits(range(as.numeric(limits), finite = TRUE), axs = axs) slicelen <- diff(range(limits, finite = TRUE)) } ## hopefully put back appropriate class of limits: ## FIXME: date changes may have messed this up if (length(class.lim) > 0) class(limits) <- if (all(class.lim[[1]] == "integer")) "numeric" else class.lim[[1]] ## (have to handle "integer" specially, since variable ## specifications like 1:10 are rather common, and ## class() <- "integer" would turn the limits into ## integers) } else { limits <- c(0,1) slicelen <- 1 } if (have.lim) { if (is.list(lim)) stop("limits cannot be a list when relation = same") old.limits <- limits limits <- lim ## lim overrides prepanel except NAs if (!is.character(limits) && !is.character(old.limits)) { limits[is.na(limits)] <- old.limits[is.na(limits)] } slicelen <- ## this no longer works for dates (R 2.6) ## if (is.numeric(lim)) diff(range(lim)) ## else length(lim) + 2 if (is.character(limits)) length(limits) + 2 else diff(range(as.numeric(limits))) } ans <- list(limits = limits, slicelen = slicelen) } else if (relation == "sliced") { if (have.lim) { if (is.list(lim)) { limits <- rep(lim, length.out = npackets) } else warning("Explicitly specified limits ignored") } slicelen <- limitlist for (i in seq_along(limitlist)) { slicelen[[i]] <- ## if (is.numeric(limitlist[[i]])) if (!is.character(limitlist[[i]])) { if (any(is.finite(limitlist[[i]]))) ## range unnecessary, but... diff(range(as.numeric(limitlist[[i]]), finite = TRUE)) else NA_real_ } else if (!any(is.na(numlimitlist[[i]]))) diff(range(as.numeric(numlimitlist[[i]]))) else NA_real_ } slicelen <- (if (axs == "i") 1 else 1 + 2 * lattice.getOption("axis.padding")$numeric) * max(unlist(slicelen), na.rm = TRUE) for (i in seq_along(limitlist)) { if (is.numeric(limitlist[[i]])) limitlist[[i]] <- extend.limits(limitlist[[i]], length = slicelen) } for (i in seq_along(numlimitlist)) { if (!all(is.na(numlimitlist[[i]]))) numlimitlist[[i]] <- extend.limits(as.numeric(numlimitlist[[i]]), length = slicelen) } ans <- list(limits = limitlist, used.at = used.at, numlimitlist = numlimitlist, slicelen = slicelen) } else if (relation == "free") { if (have.lim) { ## This is the only situation where limits can be a list ## (doesn't make sense when relation="same", ignored when ## relation="sliced"). Even if limits is not a list (but ## is specified), it will be treated as a list, and ## repeated as necessary (see further comments below). if (!is.list(lim)) lim <- list(lim) ## There's a subtle consideration here. It is possible ## for some panels to have nothing in them (or only NA's). ## Such panels usually have their prepanel functions ## return NA. When 'limits' is specified as a list, this ## will be interpreted as the limit specification for the ## non-empty panels only (this is an arbitrary choice, but ## it usually makes more sense, even though it's less ## general than the other choice). ## which ones are non-NA? id <- which(sapply(limitlist, function(x) !all(is.na(x)))) ## replace these with the limits supplied, except if the ## supplied limits are NULL, in which case retain limits ## calculated by prepanel. old.limitlist <- limitlist limitlist[id] <- lim which.null <- sapply(limitlist, is.null) limitlist[which.null] <- old.limitlist[which.null] ## lim overrides prepanel except NAs for (i in seq_along(limitlist)) { if (!is.character(limitlist[[i]]) && !is.character(old.limitlist[[i]])) { isna <- is.na(limitlist[[i]]) limitlist[[i]][isna] <- old.limitlist[[i]][isna] } } } for (i in seq_along(limitlist)) { if (!all(is.na(limitlist[[i]])) && !is.character(limitlist[[i]])) limitlist[[i]] <- ## preserves class extend.limits(limitlist[[i]], axs = axs) ## o.w., keep it as it is } slicelen <- numeric(length(limitlist)) for (i in seq_along(limitlist)) slicelen[i] <- if (!is.character(limitlist[[i]])) diff(range(as.numeric(limitlist[[i]]))) else if (!any(is.na(numlimitlist[[i]]))) diff(range(numlimitlist[[i]])) else NA_real_ ans <- list(limits = limitlist, used.at = used.at, numlimitlist = numlimitlist, slicelen = slicelen) } ans } complete_names <- function(x, template, allow.invalid = FALSE) { pid <- pmatch(names(x), names(template), duplicates.ok = TRUE) if (allow.invalid) { x <- x[!is.na(pid)] pid <- pid[!is.na(pid)] } else { if (any(is.na(pid))) warning("Invalid or ambiguous component names: ", paste(names(x)[which(is.na(pid))], collapse = ", ") ) } if (any(duplicated(pid))) stop("Multiple matches to component name") names(x) <- names(template)[pid] x } getFunctionOrName <- function(FUN) ## Try lattice namespace first? Does that happen automatically? { if (is.function(FUN)) FUN else if (is.character(FUN)) get(FUN) else eval(FUN) } trellis.skeleton <- function(formula = NULL, cond, aspect = default.args$aspect, # argument in xyplot as.table = default.args$as.table, between = default.args$between, key = NULL, legend = NULL, page = default.args$page, main = default.args$main, sub = default.args$sub, par.strip.text = default.args$par.strip.text, layout = default.args$layout, skip = default.args$skip, strip = default.args$strip.default, # argument in xyplot strip.left = FALSE, xlab.default = NULL, ylab.default = NULL, xlab = NULL, # argument in xyplot ylab = NULL, # argument in xyplot xlab.top = NULL, ylab.right = NULL, panel, # argument in xyplot xscale.components = default.args$xscale.components, yscale.components = default.args$yscale.components, axis = default.args$axis, subscripts = TRUE, # ignored, for reasons given above index.cond = NULL, perm.cond = NULL, ..., par.settings = NULL, plot.args = NULL, lattice.options = NULL) { default.args <- lattice.getOption("default.args") if (is.null(skip)) skip <- FALSE foo <- list(formula = formula, as.table = as.table, aspect.fill = (aspect == "fill"), ## key = key, legend = construct.legend(legend = legend, key = key), panel = panel, page = page, layout = layout, skip = skip, strip = if (is.logical(strip) && strip) "strip.default" else strip, strip.left = if (is.logical(strip.left) && strip.left) strip.custom(horizontal = FALSE) else strip.left, xscale.components = xscale.components, yscale.components = yscale.components, axis = axis, xlab = xlab, ylab = ylab, xlab.default = xlab.default, ylab.default = ylab.default, xlab.top = xlab.top, ylab.right = ylab.right, main = main, sub = sub, x.between = 0, y.between = 0, par.settings = par.settings, plot.args = plot.args, lattice.options = lattice.options, par.strip.text = par.strip.text, index.cond = index.cond, perm.cond = perm.cond) if (!is.null(between$x)) foo$x.between <- between$x if (!is.null(between$y)) foo$y.between <- between$y foo$condlevels <- lapply(cond, levels) list(foo = foo, dots = list(...)) } cond.orders <- function(foo, ...) ## function to determine order of panels within a cond. variable ## foo: trellis object-to-be ## calculate actual values for index.cond and perm.cond. ## index.cond can be a function, in which case it would be used to ## determing order of levels within conditioning variables ## Question: should these be determined at run-time? Wouldn't be ## impossible, but has the disadvantage that looking at the ## trellis object will be totally uninformative in the default ## case (when both would be NULL). In a sense, this is fine, since ## having index.cond be a function is similar to having a prepanel ## function. After all, the results depend only on the panel ## contents, and those cannot be changed via update. { ## the following to be used for changing order of conditioning ## variables and indexing their levels. The object foo already has ## components index.cond and perm.cond as whatever was passed to ## the original function call. If these are NULL, suitable ## defaults need to be computed. If foo$index.cond is a function, ## index.cond has to be computed appropriately. index.cond <- vector(mode = "list", length = length(foo$condlevels)) for (i in seq_along(foo$condlevels)) index.cond[[i]] <- seq_along(foo$condlevels[[i]]) perm.cond <- seq_len(length(foo$condlevels)) if (!is.null(foo$perm.cond)) { if (all(sort(foo$perm.cond) == perm.cond)) perm.cond <- foo$perm.cond else stop("Invalid value of perm.cond") } if (!is.null(foo$index.cond)) { if (is.list(foo$index.cond) && length(foo$index.cond) == length(index.cond)) { for (i in seq_along(foo$condlevels)) index.cond[[i]] <- index.cond[[i]][foo$index.cond[[i]]] } else if (is.function(foo$index.cond)) { FUN <- foo$index.cond nplots <- length(foo$panel.args) panel.order <- numeric(nplots) for (count in seq_len(nplots)) { if (is.list(foo$panel.args[[count]])) { pargs <- c(foo$panel.args.common, foo$panel.args[[count]], list(...)) prenames <- names(formals(FUN)) if (!("..." %in% prenames)) pargs <- pargs[intersect(names(pargs), prenames)] panel.order[count] <- do.call("FUN", pargs) } else ## this happens for empty panels { is.na(panel.order) <- count # panel.order[count] <- NA } } dim(panel.order) <- sapply(foo$condlevels, length) for (i in seq_along(foo$condlevels)) index.cond[[i]] <- order(apply(panel.order, i, mean, na.rm = TRUE)) } else stop("Invalid value of index.cond") } list(index.cond = index.cond, perm.cond = perm.cond) } construct.scales <- function(draw = TRUE, axs = "r", tck = 1, tick.number = 5, at = FALSE, labels = FALSE, log = FALSE, alternating = TRUE, relation = "same", abbreviate = FALSE, minlength = 4, limits = NULL, format = NULL, equispaced.log = TRUE, lty = FALSE, lwd = FALSE, cex = FALSE, rot = FALSE, col = FALSE, col.line = col, alpha = FALSE, alpha.line = alpha, font = FALSE, fontfamily = FALSE, fontface = FALSE, lineheight = FALSE, ..., ## NOTE: ... is currently ignored x = NULL, y = NULL) { ## top-level values x.scales <- y.scales <- list(draw = draw, axs = axs, tck = tck, tick.number = tick.number, at = at, labels = labels, log = log, alternating = alternating, relation = relation, abbreviate = abbreviate, minlength = minlength, limits = limits, format = format, equispaced.log = equispaced.log, lty = lty, lwd = lwd, cex = cex, rot = rot, col = col, col.line = col.line, alpha = alpha, alpha.line = alpha.line, font = font, fontfamily = fontfamily, fontface = fontface, lineheight = lineheight) ## override by component-specific values if (!is.null(x)) { if (is.character(x)) x <- list(relation = x) x <- complete_names(x, x.scales) x.scales[names(x)] <- x } if (!is.null(y)) { if (is.character(y)) y <- list(relation = y) y <- complete_names(y, y.scales) y.scales[names(y)] <- y } if (is.logical(x.scales$alternating)) x.scales$alternating <- if (x.scales$alternating) c(1,2) else 1 if (is.logical(y.scales$alternating)) y.scales$alternating <- if (y.scales$alternating) c(1,2) else 1 for (nm in c("tck", "cex", "rot")) { x.scales[[nm]] <- rep(x.scales[[nm]], length.out = 2) y.scales[[nm]] <- rep(y.scales[[nm]], length.out = 2) } if (x.scales$relation == "same" && (is.list(x.scales$at) || is.list(x.scales$labels))) stop("the 'at' and 'labels' components of 'scales' may not be lists when 'relation = \"same\"'") if (y.scales$relation == "same" && (is.list(y.scales$at) || is.list(y.scales$labels))) stop("the 'at' and 'labels' components of 'scales' may not be lists when 'relation = \"same\"'") list(x.scales = x.scales, y.scales = y.scales) } cupdate <- function(index, maxim) { ## This unexported function is used to handle arbitrary number of ## conditioning variables : every time it is called, it increments ## the "current" level of the conditioning variables suitably, ## i.e., it tries to increment the level of the 1st conditining ## variable (the one which varies fastest along panel order) and ## if it happens to be at its maximum (last) value, it sets it to ## the first value AND increments the "current" level of the 2nd ## (next) conditioning variable recursively. if(length(index)!=length(maxim)||length(maxim)<=0) stop("Inappropriate arguments") index[1] <- index[1] + 1 if (index[1] > maxim[1] && length(maxim) > 1) c(1, cupdate(index[-1], maxim[-1])) else index } limits.and.aspect <- function(prepanel.default, prepanel = NULL, have.xlim = FALSE, xlim = NULL, have.ylim = FALSE, ylim = NULL, x.relation, y.relation, panel.args.common = list(), panel.args = list(), aspect, banking = lattice.getOption("banking"), npackets = length(panel.args), x.axs = "r", y.axs = "r", ...) ## extra arguments for prepanel (for qqmathline) { prepanel.default.function <- getFunctionOrName(prepanel.default) prepanel <- getFunctionOrName(prepanel) if (npackets<1) stop("need at least one panel") x.limits <- vector("list", npackets) y.limits <- vector("list", npackets) x.used.at <- vector("list", npackets) y.used.at <- vector("list", npackets) x.num.limit <- vector("list", npackets) y.num.limit <- vector("list", npackets) dxdy <- vector("list", npackets) for (count in seq_len(npackets)) { if (is.list(panel.args[[count]])) { pargs <- c(panel.args.common, panel.args[[count]], list(...)) tem <- do.call("prepanel.default.function", pargs) if (is.function(prepanel)) ## results will 'overwrite' defaults { prenames <- names(formals(prepanel)) if (!("..." %in% prenames)) pargs <- pargs[intersect(names(pargs), prenames)] pretem <- do.call("prepanel", pargs) ## prepanel() over-rides defaults except NAs - e.g. ylim = c(0, NA) if (!is.null(pretem$xlim) && !is.character(pretem$xlim)) if (any(isna <- is.na(pretem$xlim))) pretem$xlim[isna] <- tem$xlim[isna] if (!is.null(pretem$ylim) && !is.character(pretem$ylim)) if (any(isna <- is.na(pretem$ylim))) pretem$ylim[isna] <- tem$ylim[isna] tem <- updateList(tem, pretem) ## tem[names(pretem)] <- pretem } x.limits[[count]] <- tem$xlim y.limits[[count]] <- tem$ylim x.used.at[[count]] <- if (is.null(tem$xat)) NA else tem$xat y.used.at[[count]] <- if (is.null(tem$yat)) NA else tem$yat x.num.limit[[count]] <- if (is.null(tem$xat)) NA else range(tem$xat) y.num.limit[[count]] <- if (is.null(tem$yat)) NA else range(tem$yat) dxdy[[count]] <- list(dx = tem$dx, dy = tem$dy) } else ## this happens for empty panels { x.limits[[count]] <- c(NA_real_, NA_real_) y.limits[[count]] <- c(NA_real_, NA_real_) x.used.at[[count]] <- NA_real_ y.used.at[[count]] <- NA_real_ x.num.limit[[count]] <- NA_real_ y.num.limit[[count]] <- NA_real_ dxdy[[count]] <- list(dx = NA_real_, dy = NA_real_) } } ## Some explanation might be helpful here. The for loop above ## creates a list of xlims/ylims. Each of these might be either ## numeric (when x/y is numeric, shingle or POSIXt etc), or levels ## of a factor (that's how prepanel.default.functions are set ## up). However, at this point, all x.limits[[i]] must be of the ## same type. Returned limits must be in accordance with this ## type. The only exception is when relation = "free", in which ## case they may be different. This could happen if [xy]lim or ## limits is supplied as a list in the high level function. x.limits <- limitsFromLimitlist(have.lim = have.xlim, lim = xlim, relation = x.relation, limitlist = x.limits, used.at = x.used.at, numlimitlist = x.num.limit, axs = x.axs, npackets = npackets) y.limits <- limitsFromLimitlist(have.lim = have.ylim, lim = ylim, relation = y.relation, limitlist = y.limits, used.at = y.used.at, numlimitlist = y.num.limit, axs = y.axs, npackets = npackets) if (is.character(aspect)) { if (aspect == "xy") { aspect <- median(sapply(dxdy, banking) * y.limits$slicelen / x.limits$slicelen, na.rm = TRUE) ### old aspect calculation ## aspect <- median(unlist(lapply(dxdy, banking)), ## na.rm = TRUE) * y.limits$slicelen / ## x.limits$slicelen ## if (y.relation == "free" || x.relation == "free") ## warning("'aspect=xy' when 'relation=free' is not sensible") } else if (aspect == "iso") { aspect <- median(y.limits$slicelen / x.limits$slicelen, na.rm = TRUE) if (y.relation == "free" || x.relation == "free") warning("'aspect=\"iso\"' approximate since 'relation=\"free\"'") } else aspect <- 1 } list(x.limits = x.limits$limits, y.limits = y.limits$limits, x.used.at = x.limits$used.at, y.used.at = y.limits$used.at, x.num.limit = x.limits$numlimitlist, y.num.limit = y.limits$numlimitlist, aspect.ratio = aspect, prepanel.default = prepanel.default, prepanel = prepanel) } hexbin/R/hexbin.s4.R0000644000176200001440000002700714406411107013661 0ustar liggesusers## namespace *internal* function: addBit <- function(bnds, f = 0.05) bnds + c(-f, f) * diff(bnds) hexbin <- function(x, y = NULL, xbins = 30, shape = 1, xbnds = range(x), ybnds = range(y), xlab = NULL, ylab = NULL, IDs = FALSE) { call <- match.call() ## (x,y, xlab, ylab) dealing xl <- if (!missing(x)) deparse(substitute(x)) yl <- if (!missing(y)) deparse(substitute(y)) xy <- xy.coords(x, y, xl, yl) ch0 <- function(u) if(is.null(u)) "" else u xlab <- if (is.null(xlab)) ch0(xy$xlab) else xlab ylab <- if (is.null(ylab)) ch0(xy$ylab) else ylab if(! (is.character(xlab) || is.expression(xlab))) stop("xlab must be a character or expression") if(! (is.character(ylab) || is.expression(ylab))) stop("ylab must be a character or expression") x <- xy$x y <- xy$y n <- length(x) na <- is.na(x) | is.na(y) has.na <- any(na) if (has.na) { ok <- !na x <- x[ok] y <- y[ok] n0 <- n na.pos <- which(na) n <- length(x) } if(diff(xbnds) <= 0) stop("xbnds[1] < xbnds[2] is not fulfilled") if(!missing(xbnds) && any(sign(xbnds - range(x)) == c(1,-1))) stop("'xbnds' must encompass range(x)") if(diff(ybnds) <= 0) stop("ybnds[1] < ybnds[2] is not fulfilled") if(!missing(ybnds) && any(sign(ybnds - range(y)) == c(1,-1))) stop("'ybnds' must encompass range(y)") jmax <- floor(xbins + 1.5001) #imax <- 2 * floor((xbins * shape)/sqrt(3) + 1.5001) c1 <- 2 * floor((xbins *shape)/sqrt(3) + 1.5001) imax <- trunc((jmax*c1 -1)/jmax + 1) lmax <- jmax * imax ans <- .Fortran(`hbin`, x = as.double(x), y = as.double(y), cell = integer(lmax), cnt = integer(lmax), xcm = double(lmax), ycm = double(lmax), xbins = as.double(xbins), shape = as.double(shape), xbnds = as.double(xbnds), ybnds = as.double(ybnds), dim = as.integer(c(imax, jmax)), n = as.integer(n), cID = if(IDs) integer(n) else as.integer(-1))[-(1:2)] ## cut off extraneous stuff if(!IDs) ans$cID <- NULL if(IDs && has.na) { ok <- as.integer(ok) ok[!na] <- ans$cID ok[na] <- NA ans$cID <- ok } nc <- ans$n length(ans$cell) <- nc length(ans$cnt) <- nc length(ans$xcm) <- nc length(ans$ycm) <- nc if(sum(ans$cnt) != n) warning("Lost counts in binning") new("hexbin", cell = ans$cell, count = ans$cnt, xcm = ans$xcm, ycm = ans$ycm, xbins = ans$xbins, shape = ans$shape, xbnds = ans$xbnds , ybnds = ans$ybnds, dimen = c(imax, jmax), n = n, ncells = ans$n, call = call, xlab = xlab, ylab = ylab, cID = ans$cID, cAtt = integer(0)) #dimen = ans$dim }## hexbin setClassUnion("integer or NULL",# < virtual class, used in 'cID' slot members = c("integer","NULL")) ## MM: I've learned that we should think twice before defining such ## "or NULL" classes: ## setClassUnion("vector or NULL",# < virtual class, used in 'cAtt' slot ## members = c("vector","NULL")) setClass("hexbin", representation(cell = "integer", count = "numeric",##count = "integer", xcm = "numeric", ycm = "numeric", xbins = "numeric", shape = "numeric", xbnds = "numeric", ybnds = "numeric", dimen = "numeric", n = "integer", ncells = "integer", call = "call", xlab = "vector", ylab = "vector", #xlab = "character", ylab = "character", cID = "integer or NULL", cAtt = "vector")## "or NULL" ) #setIs("hexbin", function(hbin) class(hbin)=="hexbin") ## FIXME: add 'validity checking method! setGeneric("hcell2xy", function(hbin, check.erosion = TRUE) standardGeneric("hcell2xy")) setMethod("hcell2xy", "hexbin", function(hbin, check.erosion = TRUE) { xbins <- hbin@xbins xbnds <- hbin@xbnds c3 <- diff(xbnds)/xbins ybnds <- hbin@ybnds c4 <- (diff(ybnds) * sqrt(3))/(2 * hbin@shape * xbins) jmax <- hbin@dimen[2] cell <- hbin@cell - 1 i <- cell %/% jmax j <- cell %% jmax y <- c4 * i + ybnds[1] x <- c3 * ifelse(i %% 2 == 0, j, j + 0.5) + xbnds[1] if(check.erosion && inherits(hbin,"erodebin")) list(x = x[hbin@eroded], y = y[hbin@eroded]) else list(x = x, y = y) }) setGeneric("getHexDxy", function(hbin) standardGeneric("getHexDxy")) setMethod("getHexDxy", "hexbin", function(hbin){ sx <- hbin@xbins/diff(hbin@xbnds) sy <- (hbin@xbins * hbin@shape)/diff(hbin@ybnds) list(dx=.5/sx, dy=(1/sqrt(3))/(2*sy)) }) setClass("erodebin", representation("hexbin", eroded = "logical", cdfcut = "numeric", erode = "integer")) setGeneric("erode", function(hbin, cdfcut = 0.5) standardGeneric("erode")) ## currently define the 'hexbin' method (also) as standalone function: erode.hexbin <- function(hbin, cdfcut = 0.5) { if(!is(hbin,"hexbin")) stop("first argument must be a hexbin object") #bin.att <- attributes(hbin) cell <- hbin@cell cnt <- hbin@count tmp <- sort(cnt) cdf <- cumsum(tmp)/sum(cnt) good <- cdfcut <= cdf if(!any(good)) return("no cells selected") crit <- min(tmp[good]) good <- crit <= cnt cell <- cell[good] cnt <- cnt[good] #hbin@cell <- cell #hbin@count <- cnt n <- length(cell) bdim <- hbin@dimen L <- bdim[1] * bdim[2] ans <- .Fortran(`herode`, cell = as.integer(cell), cnt = as.integer(cnt), n = n, bdim = as.integer(bdim), erode = integer(L), ncnt = integer(L), ncell = integer(L), sides = integer(L), neib = integer(6 * L), exist = logical(L + 1)) $ erode length(ans) <- n ehbin <- new("erodebin", hbin, cdfcut = cdfcut, eroded = good, erode = ans) #hbin@erode <- ans #class(hbin) <- c(class(hbin),"erodebin") ehbin } setMethod("erode", "hexbin", erode.hexbin) setGeneric("getHMedian", function(ebin) standardGeneric("getHMedian")) setMethod("getHMedian", "erodebin", function(ebin) { xy <- hcell2xy(ebin) stopifnot(1 == length(med <- which.max(ebin@erode))) med.x <- xy$x[med] med.y <- xy$y[med] list(x = med.x, y = med.y) }) ## Still define the 'hexbin' plot method (also) as standalone function: ## This is deprecated! gplot.hexbin <- function(x, style = "colorscale", legend = 1.2, lcex = 1, minarea = 0.04, maxarea = 0.8, mincnt = 1, maxcnt = max(x@count), trans = NULL, inv = NULL, colorcut = seq(0, 1, length = min(17, maxcnt)), border = NULL, density = NULL, pen = NULL, colramp = function(n) LinGray(n, beg = 90, end = 15), xlab = NULL, ylab = NULL, main = "", newpage = TRUE, type = c("p", "l", "n"), xaxt = c("s", "n"), yaxt = c("s", "n"), clip="on", verbose = getOption("verbose")) { if(!is(x,"hexbin")) stop("first argument must be a hexbin object") if(minarea < 0) stop("Minimum area must be non-negative") if(maxarea > 1) warning("Maximum area should be <= 1 this leads to overlapping hexagons") if(minarea > maxarea) stop("Minarea must be <= maxarea") if (length(colorcut) > 1) { # a sequence 0,...,1 if(colorcut[1] != 0) stop("Colorcut lower boundary must be 0") if(colorcut[length(colorcut)] != 1) stop("Colorcut upper boundary must be 1") } else { colorcut <- if(colorcut > 1) seq(0, 1, length = min(c(17, colorcut, maxcnt))) else 1 } if(is.logical(legend)) { if(legend) stop("Give the legend width") else legend <- 0 } else stopifnot(is.numeric(legend) && length(legend) == 1) type <- match.arg(type) xaxt <- match.arg(xaxt) yaxt <- match.arg(yaxt) ## ----- plotting starts ------------------------ if (newpage) grid.newpage() hv.ob <- hexViewport(x, xbnds=x@xbnds, ybnds=x@ybnds, offset = unit(legend,"inches")) pushViewport(hv.ob@hexVp.off) grid.rect() if(xaxt != "n") grid.xaxis() if(yaxt != "n") grid.yaxis() ## xlab, ylab, main : if(is.null(xlab)) xlab <- x@xlab if(is.null(ylab)) ylab <- x@ylab if(nchar(xlab) > 0) grid.text(xlab, y = unit(-2, "lines"), gp = gpar(fontsize = 16)) if(nchar(ylab) > 0) grid.text(ylab, x = unit(-2, "lines"), gp = gpar(fontsize = 16), rot = 90) if(nchar(main) > 0) grid.text(main, y = unit(1, "npc") + unit(1.5, "lines"), gp = gpar(fontsize = 18)) if(type != "n") { if(clip == "on") { upViewport() pushViewport(hv.ob@hexVp.on) } grid.hexagons(x, style = style, minarea = minarea, maxarea = maxarea, mincnt = mincnt, maxcnt = maxcnt, check.erosion = FALSE, trans = trans, colorcut = colorcut, density = density, border = border, pen = pen, colramp = colramp, verbose = verbose) } upViewport()# plot #popViewport()# fig ## ----- Legend ------------------------ if(legend > 0) { if(!is.null(trans) && is.null(inv)) stop("Must supply the inverse transformation") if(verbose) cat("plot.hexbin( legend > 0): ... hex.legend()\n") inner <- getPlt(hv.ob, ret.unit = "inches", numeric = TRUE)[1]/x@xbins ##inner <- as.numeric(convertUnit(hv.ob@plt[1],"inches"))/x@xbins ##outer <- (inner * sqrt(3))/2 ##switch(style, ## lattice = , ## centroids = { ## if(length(colorcut) * outer > ysize - 1) { ## warning("Colorcut is being shortened") ## colorcut <- seq(0, 1, ## max(1, floor((ysize - 1)/outer))) ## } ## } ## ) ysize <- getPlt(hv.ob, ret.unit = "inches", numeric = TRUE)[2] #as.numeric(convertUnit(hv.ob@plt[2],"inches")) legVp <- viewport(x = unit(1,"npc") - convertX(unit(legend,"inches"), "npc"), #y = convertY(unit(mai[1],"inches"),"npc"), y = hv.ob@mar[1], #height = unit(1,"npc") - #convertY(unit(mai[3]+mai[1],"inches"),"npc"), height = unit(1,"npc")-(hv.ob@mar[1]+ hv.ob@mar[3]), width = convertUnit(unit(legend,"inches"),"npc"), default.units = "native", just = c("left","bottom"), xscale = c(0, legend), yscale = c(0, ysize)) if(type != "n") { pushViewport(legVp) grid.hexlegend(legend, ysize = ysize, lcex = lcex, inner = inner, style = style, minarea = minarea, maxarea = maxarea, mincnt = mincnt, maxcnt = maxcnt, trans = trans, inv = inv, colorcut = colorcut, density = density, border = border, pen = pen, colramp = colramp) upViewport() } } invisible(list(plot.vp = hv.ob, legend.vp = if(legend) legVp)) } ## gplot.hexbin() setMethod("plot", signature(x = "hexbin", y = "missing"), gplot.hexbin) setMethod("show", "hexbin", function(object) { cat("'hexbin' object from call:", deparse(object@call), "\n") dm <- object@dimen cat("n =", object@n, " points in nc =", object@ncells, " hexagon cells in grid dimensions ", dm[1], "by", dm[2],"\n") invisible(object) }) setMethod("summary", "hexbin", function(object, ...) { show(object, ...) print(summary(data.frame(cell = object@cell, count = object@count, xcm = object@xcm, ycm = object@ycm), ...)) if(!is.null(object@cID)) { cat("IDs: "); str(object@cID) } }) if(FALSE) { ##-- todo -- #setMethod("identify" identify.hexbin <- function(x, labels = x$cnt, offset = 0, ...) { if(length(labels) != x$n) stop("labels not the same length as number of cells") ##NL: Should this be a warning? ## -> typically default method: identify(hcell2xy(x), labels = labels, offset = offset, ...) } }#not yet hexbin/R/hdiffplot.R0000644000176200001440000003121513171627112014035 0ustar liggesusers ### FIXME: Need to check for bin erosion ### or fix hcell2xy so that it checks for bin erosion. ### --- Fixed hcell2xy, probably should do the same to other accessor functions ### NL get.xrange <- function(xy.lst, xbnds) { range(unlist(lapply(xy.lst, function(xy, bnd) xy$x[(xy$x < max(bnd)) & (xy$x > min(bnd))], xbnds))) } get.yrange <- function(xy.lst, ybnds) { range(unlist(lapply(xy.lst, function(xy, bnd) xy$y[(xy$y < max(bnd)) & (xy$y > min(bnd))], ybnds))) } make.bnds <- function(binlst, xy.lst, xbnds = NULL, ybnds = NULL) { if(inherits(binlst,"hexbinList")) binlst <- binlst@hbins if(is.null(xbnds)) xbnds <- binlst[[1]]@xbnds if(is.null(ybnds)) ybnds <- binlst[[1]]@ybnds nxbnds <- get.xrange(xy.lst, xbnds) nybnds <- get.yrange(xy.lst, ybnds) list(xbnds = xbnds, ybnds = ybnds, nxbnds = nxbnds, nybnds = nybnds) } all.intersect <- function(binlist) { ## This will not work if all the grids are not the same ## Will have to rethink this if we move to non-aligned ## hexagon bins. NL if(inherits(binlist,"hexbinList")) binlist <- binlist@hbins ans <- matrix(FALSE, nrow = binlist[[1]]@dimen[1]*binlist[[1]]@dimen[2], ncol = length(binlist)) for(i in 1:length(binlist)) { if(is(binlist[[i]], "erodebin")) ans[binlist[[i]]@cell[binlist[[i]]@eroded], i] <- TRUE else ans[binlist[[i]]@cell, i] <- TRUE } ans } ## colordist <- function() { ## } ## MM: FIXME : `` get(where) '' is a kludge! # EJP: outcomment, seems obsolete? #mixcolors <- function (alpha, color1, where = class(color1)) #{ # alpha <- as.numeric(alpha) # c1 <- coords(as(color1, where)) # na <- length(alpha) # n1 <- nrow(c1) # if(na == 1) # alpha <- rep(alpha, n1) # stopifnot(sum(alpha) == 1) # get(where)(t(apply(c1, 2, function(cols, alpha) alpha%*%cols, alpha))) # #} mixcolors2 <- function (colors, alpha, where="hsv") { # colors: an n x 3 matrix of colors # alpha: an n x 1 vector of color mixing coefficents # sum(alpha)==1 should be a restriction? # where: the color space to mix in (not implemented yet) # The reurn value is a single hex color forming the mixture # This function is purely linear mixing, nolinear mixing # would be quite interesting since the colorspaces are not really # linear, ie mixing alonga manifold in LUV space. alpha <- as.numeric(alpha) na <- length(alpha) n1 <- nrow(colors) if (n1 < 2) { warning("need more than two colors to mix") colors } if(na == 1) alpha <- rep(alpha, n1) stopifnot(abs(sum(alpha)-1) <= 0.01) #colors <- convertColor(colors,from="sRGB",to="Lab",scale.in=1) mix <- t(apply(colors, 2, function(cols, alpha) alpha%*%cols, alpha)) #convertColor(mix,from="hsv",to="hex",scale.out=1,clip=TRUE) hsv(mix[1],mix[2],mix[3]) } hdiffplot <- function(bin1, bin2 = NULL, xbnds = NULL, ybnds = NULL, focus = NULL, col.control = list(medhex = "white", med.bord = "black", focus = NULL, focus.border = NULL, back.col = "grey"), arrows = TRUE, size = unit(0.1, "inches"), lwd = 2, eps = 1e-6, unzoom = 1.08, clip ="off", xlab = "", ylab = "", main = deparse(mycall), ...) { ## Arguments: ## bin1 : hexagon bin object or a list of bin objects ## bin2 : hexagon bin object or NULL ## bin objects must have the same plotting bounds and shape ## border : plot the border of the hexagon, use TRUE for ## hexagon graph paper ## Having all the same parameters ensures that all hexbin ## objects have the same hexagon grid, and there will be no ## problems intersecting them. When we have a suitable solution to ## the hexagon interpolation/intersection problem this will be relaxed. fixx <- xbnds fixy <- ybnds if(!inherits(bin1,"hexbinList")){ if(is.null(bin2) & is.list(bin1)) { bin1 <- as(bin1,"hexbinList") } else if(is.null(bin2) & (!is.list(bin1))) stop(" need at least 2 hex bin objects, or a hexbinList") else { if(bin1@shape != bin2@shape) stop("bin objects must have same shape parameter") if(all(bin1@xbnds == bin2@xbnds) & all(bin1@ybnds == bin2@ybnds)) equal.bounds <- TRUE else stop("Bin objects need the same xbnds and ybnds") if(bin1@xbins != bin2@xbins) stop("Bin objects need the same number of bins") nhb <- 2 ## Need to make a binlist class, then can do as(bin1, bin2, "binlist") ## or something similar (NL) bin1 <- list(bin1 = bin1, bin2 = bin2) bin1 <- as(bin1,"hexbinList") } } mycall <- sys.call() if(length(mycall) >= 4) { mycall[4] <- as.call(quote(.....())) if(length(mycall) > 4) mycall <- mycall[1:4] } if(is.null(focus)) focus <- 1:bin1@n ##_______________ Collect computing constants______________ tmph.xy <- lapply(bin1@hbins, hcell2xy, check.erosion = TRUE) ## Check for erode bins eroded <- unlist(lapply(bin1@hbins, is, "erodebin")) shape <- bin1@Shape xbins <- bin1@Xbins bnds <- make.bnds(bin1@hbins, tmph.xy, xbnds = fixx, ybnds = fixy) ratiox <- diff(bnds$nxbnds)/diff(bnds$xbnds) ratioy <- diff(bnds$nybnds)/diff(bnds$ybnds) ratio <- max(ratioy, ratiox) nxbnds <- mean(bnds$nxbnds) + c(-1, 1)*(unzoom * ratio * diff(bnds$xbnds))/2 nybnds <- mean(bnds$nybnds) + c(-1, 1)*(unzoom * ratio * diff(bnds$ybnds))/2 ##__________________ Construct plot region___________________ hvp <- hexViewport(bin1@hbins[[1]], xbnds = nxbnds, ybnds = nybnds, newpage = TRUE) pushHexport(hvp) grid.rect() grid.xaxis() grid.yaxis() if(nchar(xlab) > 0) grid.text(xlab, y = unit(-2, "lines"), gp = gpar(fontsize = 16)) if(nchar(ylab) > 0) grid.text(ylab, x = unit(-2, "lines"), gp = gpar(fontsize = 16), rot = 90) if(sum(nchar(main)) > 0) grid.text(main, y = unit(1, "npc") + unit(1.5, "lines"), gp = gpar(fontsize = 18)) if(clip=='on'){ popViewport() pushHexport(hvp,clip="on") } ##__________________ Construct hexagon___________________ dx <- (0.5 * diff(bin1@Xbnds))/xbins dy <- (0.5 * diff(bin1@Ybnds))/(xbins * shape * sqrt(3)) hexC <- hexcoords(dx = dx, dy = dy) ##__________________ Set up intersections and colors___________________ if(length(focus) < bin1@n) { bin1@hbins <- c(bin1@hbins[focus], bin1@hbins[-focus]) bin1@Bnames <- c(bin1@Bnames[focus], bin1@Bnames[-focus]) } cell.stat <- all.intersect(bin1@hbins) cell.stat.n <- apply(cell.stat, 1, sum) i.depth <- max(cell.stat.n) ### I will do this as a recursive function once I get ### The colors worked out! In fact for more than three ### bin objects there is no other way to do this but recursively!!! ### NL. -- Well this solution is like recursion :) diff.cols <- vector(mode = "list", length = i.depth) levcells <- which(cell.stat.n == 1) whichbin <- apply(cell.stat[levcells, ], 1, which) ## Set all the focal colors for the unique bin cells ## if not specified make them equally spaced on the color wheel ## with high saturation and set the background bins to gray nfcol <- length(focus) nhb <- bin1@n nbcol <- nhb-nfcol fills <- if(is.null(col.control$focus)) { if(nbcol > 0) matrix(c(seq(0, 360, length = nfcol+1)[1:nfcol]/360, rep(0, nbcol), rep(1, nfcol), rep(0, nbcol),rep(1, nfcol), rep(.9, nbcol)), ncol = 3) ## V = c(rep(1, nfcol), seq(.9, .1, length=nbcol)) else #matrix(c(seq(0, 360, length = nhb+1), s=1, v=1)[1:nfcol] matrix(c(seq(0, 360, length = nhb+1)/360, rep(1,nhb+1), rep(1,nhb+1)), ncol = 3)[1:nhb,] } else { foc.col <- t(rgb2hsv(col2rgb(col.control$focus))) if(nbcol > 0) { bcol <- matrix(c(rep(0, 2*nbcol), rep(.9, nbcol)), ncol = 3) rbind(foc.col, bcol) } else foc.col } colnames(fills) <- c("h","s","v") diff.cols[[1]] <- list(fill = fills, border = gray(.8)) ##_______________ Full Cell Plotting for Unique Bin1 Cells_________________ if(length(levcells) > 0) { for(i in unique(whichbin)) { pcells <- if(eroded[i]) bin1@hbins[[i]]@cell[bin1@hbins[[i]]@eroded] else bin1@hbins[[i]]@cell pcells <- which(pcells %in% levcells[whichbin == i]) pfill <- diff.cols[[1]]$fill[i,] pfill <- hsv(pfill[1],pfill[2],pfill[3]) hexpolygon(x = tmph.xy[[i]]$x[pcells], y = tmph.xy[[i]]$y[pcells], hexC, border = diff.cols[[1]]$border , fill = pfill) } } ## Now do the intersections. All intersections are convex ## combinations of the colors of the overlapping unique bins in ## the CIEluv colorspace. so if the binlist is of length 2 and ## the focal hbins are "blue" and "yellow" respectively the ## intersection would be green. First I need to get this to work ## and then I can think about how to override this with an option ## in color.control. -NL if(i.depth > 1) { for(dl in 2:(i.depth)) { levcells <- which(cell.stat.n == dl) if(length(levcells) == 0) next whichbin <- apply(cell.stat[levcells, ], 1, function(x) paste(which(x), sep = "", collapse = ":")) inter.nm <- unique(whichbin) #fills <- matrix(0, length(inter.nm), 3) fills <- rep(hsv(1), length(inter.nm)) i <- 1 for(bn in inter.nm) { who <- as.integer(unlist(strsplit(bn, ":"))) fills[i] <- mixcolors2(diff.cols[[1]]$fill[who,], 1/length(who),where = "LUV") i <- i+1 } #fills <- LUV(fills) diff.cols[[dl]] <- list(fill = fills, border = gray((i.depth-dl)/i.depth)) ##____Full Cell Plotting for Intersecting Cells at Intersection Depth i____ i <- 1 for(ints in inter.nm) { bin.i <- as.integer(unlist(strsplit(ints, ":"))[1]) pcells <- if(eroded[bin.i]) bin1@hbins[[bin.i]]@cell[bin1@hbins[[bin.i]]@eroded] else bin1@hbins[[bin.i]]@cell pcells <- which(pcells %in% levcells[whichbin == ints]) hexpolygon(x = tmph.xy[[bin.i]]$x[pcells], y = tmph.xy[[bin.i]]$y[pcells], hexC, border = diff.cols[[dl]]$border , fill = diff.cols[[dl]]$fill[i] ) i <- i+1 } } } ##_____________________________Plot Median Cells___________________________ ## With all these colors floating around I think it would be worth ## porting the 3d hexagon stuff to grid. Then it would be easier ## to distinguish the medians because they would stand out like ## little volcanoes :) NL if(any(eroded)) { hmeds <- matrix(unlist(lapply(bin1@hbins[eroded], function(x) unlist(getHMedian(x)))), ncol = 2, byrow = TRUE) hexpolygon(x = hmeds[, 1], y = hmeds[, 2], hexC, border = col.control$med.b, fill = col.control$medhex) if(arrows) { for(i in focus) { for(j in focus[focus < i]) { if(abs(hmeds[i, 1] - hmeds[j, 1]) + abs(hmeds[i, 2] - hmeds[j, 2]) > eps) grid.lines(c(hmeds[i, 1],hmeds[j, 1]), c(hmeds[i, 2], hmeds[j, 2]), default.units = "native", arrow=arrow(length=size)) #grid.arrows(c(hmeds[i, 1], hmeds[j, 1]), # c(hmeds[i, 2], hmeds[j, 2]), # default.units = "native", # length = size, gp = gpar(lwd = lwd)) } } } } ##________________Clean Up_______________________________________________ popViewport() invisible(hvp) } ## hdiffplot() hexbin/R/hbox.R0000644000176200001440000000517013171627112013017 0ustar liggesusershboxplot <- function(bin, xbnds = NULL, ybnds = NULL, density, border = c(0,grey(.7)), pen = c(2, 3), unzoom = 1.1, clip="off", reshape = FALSE, xlab = NULL, ylab = NULL, main = "") { ##_______________ Collect computing constants______________ if(!is(bin,"hexbin")) stop("first argument must be a hexbin object") h.xy <- hcell2xy(bin,check.erosion=TRUE) ##___zoom in scaling with expanding to avoid hexagons outside plot frame___ if(is(bin,"erodebin")) { h.xy$x <- h.xy$x h.xy$y <- h.xy$y nxbnds <- if(is.null(xbnds)) range(h.xy$x) else xbnds nybnds <- if(is.null(ybnds)) range(h.xy$y) else ybnds ratiox <- diff(nxbnds)/diff(bin@xbnds) ratioy <- diff(nybnds)/diff(bin@ybnds) ratio <- max(ratioy, ratiox) nxbnds <- mean(nxbnds) + c(-1,1)*(unzoom * ratio * diff(bin@xbnds))/2 nybnds <- mean(nybnds) + c(-1,1)*(unzoom * ratio * diff(bin@ybnds))/2 } else { nxbnds <- if(is.null(xbnds)) bin@xbnds else xbnds nybnds <- if(is.null(ybnds)) bin@ybnds else ybnds } margins <- unit(0.1 + c(5,4,4,3),"lines") plot.vp <- hexViewport(bin, xbnds = nxbnds, ybnds = nybnds, mar=margins, newpage = TRUE) pushHexport(plot.vp) grid.rect() grid.xaxis() grid.yaxis() ## xlab, ylab, main : if(is.null(xlab)) xlab <- bin@xlab if(is.null(ylab)) ylab <- bin@ylab if(nchar(xlab) > 0) grid.text(xlab, y = unit(-2, "lines"), gp= gpar(fontsize= 16)) if(nchar(ylab) > 0) grid.text(ylab, x = unit(-2, "lines"), gp= gpar(fontsize= 16), rot = 90) if(nchar(main) > 0) grid.text(main, y = unit(1, "npc") + unit(1.5, "lines"), gp = gpar(fontsize = 18)) if(clip=="on") { popViewport() pushHexport(plot.vp, clip="on") } cnt <- if(is(bin,"erodebin")) bin@count[bin@eroded] else bin@count xbins <- bin@xbins shape <- bin@shape xnew <- h.xy$x ynew <- h.xy$y ##__________________ Construct a hexagon___________________ dx <- (0.5 * diff(bin@xbnds))/xbins dy <- (0.5 * diff(bin@ybnds))/(xbins * shape * sqrt(3)) hexC <- hexcoords(dx, dy, sep = NULL) ##_______________ Full Cell Plotting_____________________ hexpolygon(xnew, ynew, hexC, density = density, fill = pen[2], border = border[2]) ##______________Plotting median___________________________ if(!is(bin,"erodebin")) { ## No warning here, allow non-erode above! warning("No erode component") } else { med <- which.max(bin@erode) xnew <- xnew[med] ynew <- ynew[med] hexpolygon(xnew, ynew, hexC, density = density, fill = pen[1], border = border[1]) } popViewport() invisible(plot.vp) }# hboxplot() hexbin/R/MAG.R0000644000176200001440000001437213171627112012467 0ustar liggesusersmagent <- function(n, beg = 1, end = 256) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(0, 0, 0), c( 40, 0, 0), c( 56, 0, 4), c( 61, 0, 9), c( 64, 0, 12), c( 66, 0, 14), c( 69, 0, 17), c( 73, 0, 20), c( 74, 0, 22), c( 78, 0, 25), c( 79, 0, 27), c( 83, 0, 30), c( 85, 0, 31), c( 86, 0, 33), c( 90, 0, 36), c( 91, 0, 38), c( 93, 0, 39), c( 95, 0, 41), c( 96, 0, 43), c(100, 0, 46), c(102, 0, 47), c(103, 0, 49), c(105, 0, 51), c(107, 0, 52), c(108, 0, 54), c(110, 0, 55), c(112, 0, 57), c(112, 0, 57), c(113, 0, 58), c(115, 0, 60), c(117, 0, 62), c(119, 0, 63), c(120, 0, 65), c(122, 0, 66), c(124, 0, 68), c(125, 0, 70), c(127, 0, 71), c(129, 0, 73), c(129, 0, 73), c(130, 0, 74), c(132, 0, 76), c(134, 0, 78), c(136, 0, 79), c(137, 0, 81), c(139, 0, 82), c(141, 0, 84), c(142, 0, 86), c(144, 0, 87), c(146, 0, 89), c(147, 0, 90), c(149, 0, 92), c(151, 0, 94), c(151, 0, 94), c(153, 0, 95), c(154, 0, 97), c(156, 0, 98), c(158, 0,100), c(159, 0,102), c(161, 0,103), c(163, 0,105), c(164, 0,106), c(166, 0,108), c(168, 0,109), c(170, 0,111), c(171, 0,113), c(173, 0,114), c(175, 0,116), c(176, 0,117), c(178, 0,119), c(180, 0,121), c(180, 0,121), c(181, 0,122), c(183, 0,124), c(185, 0,125), c(187, 0,127), c(188, 0,129), c(190, 0,130), c(192, 0,132), c(193, 0,133), c(195, 0,135), c(197, 0,137), c(198, 0,138), c(200, 0,140), c(202, 0,141), c(204, 0,143), c(204, 0,143), c(205, 0,145), c(207, 0,146), c(209, 0,148), c(210, 0,149), c(212, 0,151), c(214, 0,153), c(215, 0,154), c(217, 0,156), c(219, 0,157), c(221, 0,159), c(222, 0,160), c(222, 0,160), c(224, 0,162), c(226, 0,164), c(227, 0,165), c(229, 0,167), c(231, 0,168), c(232, 0,170), c(234, 0,172), c(236, 0,173), c(238, 0,175), c(238, 0,175), c(239, 0,176), c(241, 0,178), c(243, 0,180), c(244, 0,181), c(246, 0,183), c(248, 2,184), c(249, 4,186), c(249, 4,186), c(249, 4,186), c(251, 6,188), c(251, 6,188), c(253, 9,189), c(253, 9,189), c(255, 11,191), c(255, 11,191), c(255, 13,192), c(255, 13,192), c(255, 13,192), c(255, 16,194), c(255, 18,196), c(255, 20,197), c(255, 20,197), c(255, 23,199), c(255, 25,200), c(255, 27,202), c(255, 30,204), c(255, 32,205), c(255, 34,207), c(255, 37,208), c(255, 37,208), c(255, 39,210), c(255, 41,211), c(255, 44,213), c(255, 46,215), c(255, 48,216), c(255, 51,218), c(255, 53,219), c(255, 53,219), c(255, 55,221), c(255, 57,223), c(255, 60,224), c(255, 62,226), c(255, 64,227), c(255, 67,229), c(255, 67,229), c(255, 69,231), c(255, 71,232), c(255, 74,234), c(255, 76,235), c(255, 78,237), c(255, 81,239), c(255, 81,239), c(255, 83,240), c(255, 85,242), c(255, 88,243), c(255, 90,245), c(255, 92,247), c(255, 95,248), c(255, 95,248), c(255, 97,250), c(255, 99,251), c(255,102,253), c(255,104,255), c(255,106,255), c(255,106,255), c(255,108,255), c(255,111,255), c(255,113,255), c(255,115,255), c(255,115,255), c(255,118,255), c(255,120,255), c(255,122,255), c(255,122,255), c(255,125,255), c(255,127,255), c(255,129,255), c(255,129,255), c(255,132,255), c(255,134,255), c(255,136,255), c(255,136,255), c(255,139,255), c(255,141,255), c(255,143,255), c(255,143,255), c(255,146,255), c(255,148,255), c(255,150,255), c(255,150,255), c(255,153,255), c(255,155,255), c(255,155,255), c(255,157,255), c(255,159,255), c(255,159,255), c(255,162,255), c(255,164,255), c(255,164,255), c(255,166,255), c(255,169,255), c(255,171,255), c(255,171,255), c(255,173,255), c(255,176,255), c(255,176,255), c(255,178,255), c(255,180,255), c(255,180,255), c(255,183,255), c(255,185,255), c(255,185,255), c(255,187,255), c(255,190,255), c(255,190,255), c(255,192,255), c(255,194,255), c(255,197,255), c(255,197,255), c(255,199,255), c(255,201,255), c(255,204,255), c(255,204,255), c(255,206,255), c(255,208,255), c(255,210,255), c(255,210,255), c(255,213,255), c(255,215,255), c(255,217,255), c(255,217,255), c(255,220,255), c(255,222,255), c(255,224,255), c(255,227,255), c(255,229,255), c(255,229,255), c(255,231,255), c(255,234,255), c(255,236,255), c(255,238,255), c(255,241,255), c(255,243,255), c(255,243,255), c(255,245,255), c(255,248,255), c(255,250,255), c(255,255,255)) [ round(seq(beg,end,length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/hexbinplot.R0000644000176200001440000007317513171627112014245 0ustar liggesusers## lattice version of gplot.hexbin ## There are two major problems. (1) For comparability across panels, ## we want the same mincnt and maxcnt in all panels. However, a ## suitable default can really only be determined at printing time, ## since it would depend on the physical dimensions of the panel. (2) ## there is no proper way to communicate the mincnt and maxcnt to the ## legend. ## Tentative solution: the counts can be calculated once enough things ## are known, namely the aspect ratio, xbins and [xy]bnds. An ## important question then is whether [xy]bnds should be [xy]lim or ## range([xy]). Both should be allowed, since [xy]lim makes them ## comparable, range([xy]) potentially shows more detail. For ## relation != "same", both are more or less similar. An important ## observation is that with range([xy]), 'shape = aspect ratio of ## panel' does not guarantee symmetric hexagons, so shape has to be ## different for each panel. ## Only feasible approach I can think of is to produce the trellis ## object first (with known aspect, so aspect="fill" is absolutely ## no-no), then analyze the limits and relevant panel arguments to get ## 'maxcnt' (essentially doing a dry run of the panel calculations). ## This needs undocumented knowledge of the trellis object, which is ## kinda not good, but at least it gets the job done. Once we know ## maxcnt, we can also set up a suitable legend function. ## Unfortunately, this has the potential to screw up update calls that ## modify certain things. Is there any way to capture those? Maybe ## make a new class that inherits from "trellis". For now, we'll ## pretend that the problem doesn't exist. ## tool borrowed from lattice updateList <- function (x, val) { if (is.null(x)) x <- list() modifyList(x, val) } prepanel.hexbinplot <- function(x, y, type = character(0),...) { if('tmd'%in%type){ tmp <- x x <- (y + x)/sqrt(2) y <- (y - tmp)/sqrt(2) } ans <- list(xlim = range(x, finite = TRUE), ylim = range(y, finite = TRUE), dx = IQR(x,na.rm=TRUE), dy = IQR(y,na.rm=TRUE)) } panel.hexbinplot <- function(x, y, ..., groups = NULL) { if (is.null(groups)) panel.hexbin(x, y, ...) else panel.hexpose(x, y, ..., groups = groups) } panel.hexbin <- function(x, y, xbins = 30, xbnds = c("data", "panel"), # was: xbnds = c("panel", "data"), ybnds = c("data", "panel"), # was: ybnds = c("panel", "data"), ## special args .prelim = FALSE, .cpl = current.panel.limits(), .xlim = .cpl$xlim, .ylim = .cpl$ylim, .aspect.ratio = 1, # default useful with splom(, panel = panel.hexbin) type = character(0), ..., check.erosion = FALSE) { if ("tmd" %in% type) { tmp <- x x <- (y + x)/sqrt(2) y <- (y - tmp)/sqrt(2) } if (is.character(xbnds)) xbnds <- switch(match.arg(xbnds), panel = .xlim, data = range(x, finite = TRUE)) if (is.character(ybnds)) ybnds <- switch(match.arg(ybnds), panel = .ylim, data = range(y, finite = TRUE)) shape <- .aspect.ratio * (diff(ybnds) / diff(.ylim)) / (diff(xbnds) / diff(.xlim)) if (!missing(check.erosion)) warning("explicit 'check.erosion' specification ignored") h <- hexbin(x = x, y = y, xbins = xbins, shape = shape, xbnds = xbnds, ybnds = ybnds) if (.prelim) return(max(h@count)) ## have to do this because grid.hexagons croaks with unrecognized ## arguments: args <- list(dat = h, check.erosion = FALSE, ...) keep <- names(args) %in% names(formals(grid.hexagons)) if ('g' %in% type) panel.grid(h = -1, v = -1) if ('hg' %in% type) panel.hexgrid(h) do.call("grid.hexagons", args[keep]) if ("r" %in% type) panel.lmline(x, y, ...) if ("smooth" %in% type) panel.hexloess(h,...) invisible() } panel.hexboxplot <- function(x, y, xbins = 30, xbnds = c("data", "panel"), # was: xbnds = c("panel", "data"), ybnds = c("data", "panel"), # was: ybnds = c("panel", "data"), ## special args .prelim = FALSE, .cpl = current.panel.limits(), .xlim = .cpl$xlim, .ylim = .cpl$ylim, .aspect.ratio = 1, type = character(0), cdfcut=.25, shadow=.05, ..., check.erosion = TRUE) { if (is.character(xbnds)) xbnds <- switch(match.arg(xbnds), panel = .xlim, data = range(x, finite = TRUE)) if (is.character(ybnds)) ybnds <- switch(match.arg(ybnds), panel = .ylim, data = range(y, finite = TRUE)) shape <- .aspect.ratio * (diff(ybnds) / diff(.ylim)) / (diff(xbnds) / diff(.xlim)) if (!missing(check.erosion)) warning("explicit 'check.erosion' specification ignored") h <-hexbin(x = x, y = y, xbins = xbins, shape = shape, xbnds = xbnds, ybnds = ybnds,IDs=TRUE) if (.prelim) return(max(h@count)) ## have to do this because grid.hexagons croaks with unrecognized ## arguments: args <- list(dat = h, check.erosion = FALSE, ...) keep <- names(args) %in% names(formals(grid.hexagons)) if ('hg' %in% type) panel.hexgrid(h) if ('g' %in% type) panel.grid(h = -1, v = -1) if(shadow) { eh <- erode(h,cdfcut=shadow) h.xy <- hcell2xy(eh,check.erosion=TRUE) dx <- (0.5 * diff(eh@xbnds))/eh@xbins dy <- (0.5 * diff(eh@ybnds))/(eh@xbins * h@shape * sqrt(3)) hexC <- hexcoords(dx, dy, sep = NULL) hexpolygon(h.xy$x,h.xy$y, hexC, density = density, fill = NA, border = gray(.75)) } eh <- erode(h,cdfcut=cdfcut) h.xy <- hcell2xy(eh,check.erosion=TRUE) dx <- (0.5 * diff(eh@xbnds))/eh@xbins dy <- (0.5 * diff(eh@ybnds))/(eh@xbins * h@shape * sqrt(3)) hexC <- hexcoords(dx, dy, sep = NULL) hexpolygon(h.xy$x,h.xy$y, hexC, density = density, fill = "green", border = gray(.75)) med <- which.max(eh@erode) xnew <- h.xy$x[med] ynew <- h.xy$y[med] hexpolygon(xnew, ynew, hexC, density = density, fill = "red", border =gray(.25)) invisible() } panel.hexpose <- function(x, y, groups, subscripts, xbins = 30, xbnds = c("data", "panel"), # was: xbnds = c("panel", "data"), ybnds = c("data", "panel"), # was: ybnds = c("panel", "data"), ## special args .prelim = FALSE, .cpl = current.panel.limits(), .xlim = .cpl$xlim, .ylim = .cpl$ylim, .aspect.ratio = 1, #erode Args cdfcut=.05, #hdiff Args hexpose.focus=c(1,2), hexpose.focus.colors=c("yellow","blue"), hexpose.focus.border=c("cyan","orange"), hexpose.median.color="red", hexpose.median.border="black", arrows = TRUE, size = unit(0.1, "inches"), arrow.lwd = 2, eps = 1e-6, type = character(0), ..., check.erosion = TRUE) { if (is.character(xbnds)) xbnds <- switch(match.arg(xbnds), panel = .xlim, data = range(x, finite = TRUE)) if (is.character(ybnds)) ybnds <- switch(match.arg(ybnds), panel = .ylim, data = range(y, finite = TRUE)) shape <- .aspect.ratio * (diff(ybnds) / diff(.ylim)) / (diff(xbnds) / diff(.xlim)) if (is.numeric(groups)) groups <- as.character(groups[subscripts]) else groups <- groups[subscripts] binL <- hexList(x, y, given=groups, xbins=xbins, shape=shape, xbnds=xbnds, ybnds=ybnds) if ('hs' %in% type) lapply(binL@hbins,smooth.hexbin) binL@hbins <- lapply(binL@hbins,erode,cdfcut=cdfcut) if ('hg' %in% type) panel.hexgrid(binL@hbins[[1]]) ## ??? if ('g' %in% type) panel.grid(h = -1, v = -1) eroded <- unlist(lapply(binL@hbins, is, "erodebin")) tmph.xy <- lapply(binL@hbins, hcell2xy, check.erosion = TRUE) ##__________________ Construct hexagon___________________ dx <- (0.5 * diff(binL@Xbnds))/xbins dy <- (0.5 * diff(binL@Ybnds))/(xbins * binL@Shape * sqrt(3)) hexC <- hexcoords(dx = dx, dy = dy) ##__________________ Set up intersections and colors___________________ ## Reorder so that the focus bin objects are at the top of the list if(length(hexpose.focus) < binL@n) { binL@hbins <- c(binL@hbins[hexpose.focus], binL@hbins[-hexpose.focus]) binL@Bnames <- c(binL@Bnames[hexpose.focus], binL@Bnames[-hexpose.focus]) } cell.stat <- all.intersect(binL@hbins) cell.stat.n <- apply(cell.stat, 1, sum) i.depth <- max(cell.stat.n) diff.cols <- vector(mode = "list", length = i.depth) levcells <- which(cell.stat.n == 1) whichbin <- apply(cell.stat[levcells, ], 1, which) ## Set all the focal colors for the unique bin cells ## if not specified make them equally spaced on the color wheel ## with high saturation and set the background bins to gray nfcol <- length(hexpose.focus) nhb <- binL@n nbcol <- nhb-nfcol fills <- if(is.null(hexpose.focus.colors)) { if(nbcol > 0) hsv(h = c(seq(0, 1, length = nfcol+1)[1:nfcol],rep(0, nbcol)), s = c(rep(1, nfcol), rep(0, nbcol)), ## V = c(rep(1, nfcol), seq(.9, .1, length=nbcol)) v = c(rep(1, nfcol), rep(.9, nbcol))) else hsv(h=seq(0, 1, length = nhb+1))[1:nfcol] } else { foc.col <- t(col2rgb(hexpose.focus.colors))/255 if(nbcol > 0) { bcol <- t(col2rgb(rep(grey(.6),nbcol)))/255 rbind(foc.col, bcol) } else foc.col } diff.cols[[1]] <- list(fill = fills, border = gray(.8)) ##_______________ Full Cell Plotting for Unique BinL Cells_________________ if(length(levcells) > 0) { for(i in unique(whichbin)) { pcells <- if(eroded[i]) binL@hbins[[i]]@cell[binL@hbins[[i]]@eroded] else binL@hbins[[i]]@cell pcells <- which(pcells %in% levcells[whichbin == i]) hexpolygon(x = tmph.xy[[i]]$x[pcells], y = tmph.xy[[i]]$y[pcells], hexC, border = hexpose.focus.border[i] , fill = hexpose.focus.colors[i] ) } } ## Now do the intersections. All intersections are convex ## combinations of the colors of the overlapping unique bins in ## the CIEluv colorspace. so if the binlist is of length 2 and ## the focal hbins are "blue" and "yellow" respectively the ## intersection would be green. First I need to get this to work ## and then I can think about how to override this with an option ## in color.control. -NL if(i.depth > 1) { for(dl in 2:(i.depth)) { levcells <- which(cell.stat.n == dl) if(length(levcells) == 0) next whichbin <- apply(cell.stat[levcells, ], 1, function(x)paste(which(x), sep = "", collapse = ":")) inter.nm <- unique(whichbin) fills <- matrix(0, length(inter.nm), 3) i <- 1 for(bn in inter.nm) { who <- as.integer(unlist(strsplit(bn, ":"))) ## FIXME (DS): this doesn't work fills[i, ] <- mixcolors2(1/length(who), diff.cols[[1]]$fill[who,]) i <- i+1 } fills <- rgb(fills[,1],fills[,2],fills[,3]) diff.cols[[dl]] <- list(fill = fills, border = gray((i.depth-dl)/i.depth)) ##____Full Cell Plotting for Intersecting Cells at Intersection Depth i____ i <- 1 for(ints in inter.nm) { bin.i <- as.integer(unlist(strsplit(ints, ":"))[1]) pcells <- if(eroded[bin.i]) binL@hbins[[bin.i]]@cell[binL@hbins[[bin.i]]@eroded] else binL@hbins[[bin.i]]@cell pcells <- which(pcells %in% levcells[whichbin == ints]) hexpolygon(x = tmph.xy[[bin.i]]$x[pcells], y = tmph.xy[[bin.i]]$y[pcells], hexC, border = diff.cols[[dl]]$border , fill = diff.cols[[dl]]$fill[i] ) i <- i+1 } } } if(any(eroded)) { hmeds <- matrix(unlist(lapply(binL@hbins[eroded], function(x)unlist(getHMedian(x)))), ncol = 2, byrow = TRUE) hexpolygon(x = hmeds[, 1], y = hmeds[, 2], hexC, border = hexpose.median.border, fill = hexpose.median.color) if(arrows) { for(i in hexpose.focus) { for(j in hexpose.focus[hexpose.focus < i]) { if(abs(hmeds[i, 1] - hmeds[j, 1]) + abs(hmeds[i, 2] - hmeds[j, 2]) > eps) grid.arrows(c(hmeds[i, 1], hmeds[j, 1]), c(hmeds[i, 2], hmeds[j, 2]), default.units = "native", length = size, gp = gpar(lwd = arrow.lwd)) } } } } invisible() } hexbinplot <- function(x, data, ...) UseMethod("hexbinplot") hexbinplot.formula <- function(x, data = NULL, prepanel = prepanel.hexbinplot, panel = panel.hexbinplot, groups = NULL, aspect = "xy", trans = NULL, inv = NULL, colorkey = TRUE, ..., maxcnt, legend = NULL, legend.width = TRUE, subset = TRUE) { ocall <- sys.call(sys.parent()) ocall[[1]] <- quote(hexbinplot) ccall <- match.call() if (is.logical(legend.width)) legend.width <- 1.2 * as.numeric(legend.width) if (is.character(aspect) && aspect == "fill") stop("aspect = 'fill' not permitted") if (!is.null(trans) && is.null(inv)) stop("Must supply the inverse transformation 'inv'") ccall$data <- data ccall$prepanel <- prepanel ccall$panel <- panel ccall$aspect <- aspect ccall$trans <- trans ccall$inv <- inv ccall$legend <- legend ccall[[1]] <- quote(lattice::xyplot) ans <- eval(ccall, parent.frame()) ## panel needs to know aspect ratio to calculate shape ans <- update(ans, .aspect.ratio = ans$aspect.ratio) ## also need maxcnt, o.w. can't draw legend, panels not comparable ## either if (missing(maxcnt)) maxcnt <- max(mapply(panel.hexbinplot, ## note: not 'panel' x = lapply(ans$panel.args, "[[", "x"), y = lapply(ans$panel.args, "[[", "y"), .xlim = if (is.list(ans$x.limits)) ans$x.limits else rep(list(ans$x.limits), length(ans$panel.args)), .ylim = if (is.list(ans$y.limits)) ans$y.limits else rep(list(ans$y.limits), length(ans$panel.args)), MoreArgs = c(ans$panel.args.common, list(.prelim = TRUE, .cpl = NA)))) ans <- update(ans, maxcnt = maxcnt) if (colorkey) ans <- update(ans, legend = updateList(ans$legend, list(right = list(fun = hexlegendGrob, args = list(maxcnt = maxcnt, trans = trans, inv = inv, legend = legend.width, ...))))) ans$call <- ocall ans } old.hexbinplot.formula <- function(x, data = parent.frame(), prepanel = prepanel.hexbinplot, panel = if (is.null(groups)) panel.hexbinplot else panel.hexpose, groups=NULL, aspect = "xy", trans = NULL, inv = NULL, colorkey = TRUE, ..., maxcnt, legend = NULL, legend.width = TRUE) { if (is.logical(legend.width)) legend.width <- 1.2 * as.numeric(legend.width) if (is.character(aspect) && aspect == "fill") stop("aspect = 'fill' not permitted") if (!is.null(trans) && is.null(inv)) stop("Must supply the inverse transformation 'inv'") groups <- eval(substitute(groups), data, parent.frame()) ## There must be a better way to handle this, ugh. ans <- if(is.null(groups)) { xyplot(x, data = data, prepanel = prepanel, panel = panel, aspect = aspect, trans = trans, inv = inv, legend = legend, ...) } else { xyplot(x, data = data, prepanel = prepanel, panel = panel, groups=groups, aspect = aspect, trans = trans, inv = inv, legend = legend, ...) } ## panel needs to know aspect ratio to calculate shape ans <- update(ans, .aspect.ratio = ans$aspect.ratio) ## also need maxcnt, o.w. can't draw legend, panels not comparable ## either if (missing(maxcnt)) maxcnt <- max(mapply(panel.hexbinplot, ## note: not 'panel' x = lapply(ans$panel.args, "[[", "x"), y = lapply(ans$panel.args, "[[", "y"), .xlim = if (is.list(ans$x.limits)) ans$x.limits else rep(list(ans$x.limits), length(ans$panel.args)), .ylim = if (is.list(ans$y.limits)) ans$y.limits else rep(list(ans$y.limits), length(ans$panel.args)), MoreArgs = c(ans$panel.args.common, list(.prelim = TRUE, .cpl = NA)))) ans <- update(ans, maxcnt = maxcnt) if (colorkey) ans <- update(ans, legend = updateList(ans$legend, list(right = list(fun = hexlegendGrob, args = list(maxcnt = maxcnt, trans = trans, inv = inv, legend = legend.width, ...))))) ans } ## want a grob instead of actual plotting hexlegendGrob <- function(legend = 1.2, inner = legend / 5, cex.labels = 1, cex.title = 1.2, style = "colorscale", minarea = 0.05, maxarea = 0.8, mincnt = 1, maxcnt, trans = NULL, inv = NULL, colorcut = seq(0, 1, length = 17), density = NULL, border = NULL, pen = NULL, colramp = function(n) { LinGray(n,beg = 90,end = 15) }, ..., vp = NULL, draw = FALSE) { ## the formal arg matching should happen style <- match.arg(style, eval(formals(grid.hexagons)[["style"]])) if (style %in% c("centroids", "lattice", "colorscale")) { ## _______________tranformations_______________________ if(is.null(trans)) { sc <- maxcnt - mincnt bnds <- round(mincnt + sc * colorcut) } else { if(!is.function(trans) && !is.function(inv)) stop("'trans' and 'inv' must both be functions if 'trans' is not NULL") con <- trans(mincnt) sc <- trans(maxcnt) - con bnds <- round(inv(con + sc * colorcut)) } } ## grob ans <- switch(style, "colorscale" = { n <- length(bnds) pen <- colramp(n-1) ## rectangles instead of polygons ## pol <- ## rectGrob(x = 0.5, y = 1:(n-1)/n, ## height = 1/n, ## default.units = "npc", ## gp = gpar(fill = pen, col = border)) hexxy <- hexcoords(dx = 1, n = 1)[c("x", "y")] maxxy <- max(abs(unlist(hexxy))) hexxy <- lapply(hexxy, function(x) 0.5 * x/ maxxy) pol <- polygonGrob(x = 0.5 + rep(hexxy$x, n-1), y = (rep(1:(n-1), each = 6) + hexxy$y) / n, id.lengths = rep(6, n-1), gp = gpar(fill = pen, col = border), default.units = "npc") txt <- textGrob(as.character(bnds), x = 0.5, y = (0:(n-1) + 0.5) / n, gp = gpar(cex = cex.labels), default.units = "npc") ttl <- textGrob("Counts", gp = gpar(cex = cex.title)) key.layout <- grid.layout(nrow = 2, ncol = 2, heights = unit(c(1.5, 1), c("grobheight", "grobheight"), data = list(ttl, txt)), widths = unit(c(1/n, 1), c("grobheight", "grobwidth"), data = list(pol, txt)), respect = TRUE) key.gf <- frameGrob(layout = key.layout, vp = vp) key.gf <- placeGrob(key.gf, ttl, row = 1, col = 1:2) key.gf <- placeGrob(key.gf, pol, row = 2, col = 1) key.gf <- placeGrob(key.gf, txt, row = 2, col = 2) key.gf }, "centroids" = , "lattice" = { warning("legend shows relative sizes") ## Note: it may not be impossible to get absolute ## sizes. The bigger problem is that when ## [xy]bnds="data", the sizes (for the same count) may ## not be the same across panels. IMO, that's a more ## useful feature than getting the absolute sizes ## right. radius <- sqrt(minarea + (maxarea - minarea) * colorcut) n <- length(radius) if(is.null(pen)) pen <- 1 if(is.null(border)) border <- pen hexxy <- hexcoords(dx = 1, n = 1)[c("x", "y")] maxxy <- max(abs(unlist(hexxy))) hexxy <- lapply(hexxy, function(x) 0.5 * x/ maxxy) pol <- polygonGrob(x = 0.5 + rep(radius, each = 6) * rep(hexxy$x, n), y = (rep(0.5 + 1:n, each = 6) + rep(radius, each = 6) * hexxy$y - 1) / n, id.lengths = rep(6, n), gp = gpar(fill = pen, col = border), default.units = "npc") txt <- textGrob(as.character(bnds), x = 0.5, y = (1:n - 0.5) / n, gp = gpar(cex = cex.labels), default.units = "npc") ttl <- textGrob("Counts", gp = gpar(cex = cex.title)) key.layout <- grid.layout(nrow = 2, ncol = 2, heights = unit(c(1.5, 1), c("grobheight", "grobheight"), data = list(ttl, txt)), widths = unit(c(1/n, 1), c("grobheight", "grobwidth"), data = list(pol, txt)), respect = TRUE) key.gf <- frameGrob(layout = key.layout, vp = vp) key.gf <- placeGrob(key.gf, ttl, row = 1, col = 1:2) key.gf <- placeGrob(key.gf, pol, row = 2, col = 1) key.gf <- placeGrob(key.gf, txt, row = 2, col = 2) key.gf }, "nested.lattice" = , "nested.centroids" = { dx <- inner/2 dy <- dx/sqrt(3) hexC <- hexcoords(dx, dy, n = 1, sep = NULL) ## _____________x scaling_____________________________ numb <- cut(floor(legend/inner), breaks = c(-1, 0, 2,4)) ## Note: In old code ## top breaks=c(-1,0,2,4,8), numb<- 5 and size=1:9 if (is.na(numb)) numb <- 4 switch(numb, { warning("not enough space for legend") return(textGrob("")) }, size <- 5, size <- c(1, 5, 9), size <- c(1, 3, 5, 7, 9)) xmax <- length(size) radius <- sqrt(minarea + (maxarea - minarea) * (size - 1)/9) txt <- as.character(size) ##___________________y scaling_____________________ lab <- c("Ones", "Tens", "Hundreds", "Thousands", "10 Thousands", "100 Thousands", "Millions", "10 Millions", "100 Millions", "Billions") power <- floor(log10(maxcnt)) + 1 yinc <- 16 * dy ysize <- yinc * power xmid <- 0 x <- inner * (1:xmax - (1 + xmax)/2) + xmid n <- length(x) tx <- rep.int(hexC$x, n) ty <- rep.int(hexC$y, n) six <- rep.int(6:6, n) ## y <- rep.int(3 * dy - yinc, xmax) y <- rep.int(3 * dy - 0.75 * yinc, xmax) if (is.null(pen)) { pen <- 1:power +1 pen <- cbind(pen, pen +10) } if (is.null(border)) border <- TRUE key.layout <- grid.layout(nrow = 1, ncol = 1, heights = unit(ysize, "inches"), widths = unit(legend, "inches"), respect = TRUE) key.gf <- frameGrob(layout = key.layout, vp = vp) ## for debugging ## key.gf <- ## placeGrob(key.gf, rectGrob(gp = gpar(fill = "transparent"))) n6 <- rep.int(6, n) for(i in 1:power) { y <- y + yinc key.gf <- placeGrob(key.gf, polygonGrob(x = unit(legend / 2 + rep.int(hexC$x, n) + rep.int(x, n6), "inches"), y = unit(rep.int(hexC$y, n) + rep.int(y, n6), "inches"), id.lengths = n6, gp = gpar(col = pen[i, 1], fill = if (border) 1 else pen[i, 1])), row = 1, col = 1) key.gf <- placeGrob(key.gf, polygonGrob(x = legend / 2 + tx * rep.int(radius, six) + rep.int(x, six), y = ty * rep.int(radius, six) + rep.int(y, six), default.units = "inches", id=NULL, id.lengths=rep(6,n), gp = gpar(fill = pen[i,2], col = border)), row = 1, col = 1) key.gf <- placeGrob(key.gf, textGrob(txt, x = legend / 2 + x, y = y - 4.5 * dy, default.units = "inches", gp = gpar(cex = cex.labels)), row = 1, col = 1) key.gf <- placeGrob(key.gf, textGrob(lab[i], x = legend / 2 + xmid, y = y[1] + 4.5 * dy, default.units = "inches", gp = gpar(cex = 1.3 * cex.title)), row = 1, col = 1) } key.gf }) if (draw) { grid.draw(ans) invisible(ans) } else ans } hexbin/R/grid.hexagons.R0000644000176200001440000003221713171627112014621 0ustar liggesusers hexcoords <- function(dx, dy = NULL, n = 1, sep = NULL) { stopifnot(length(dx) == 1) if(is.null(dy)) dy <- dx/sqrt(3) if(is.null(sep)) list(x = rep.int(c(dx, dx, 0, -dx, -dx, 0), n), y = rep.int(c(dy,-dy, -2*dy, -dy, dy, 2*dy), n), no.sep = TRUE) else list(x = rep.int(c(dx, dx, 0, -dx, -dx, 0, sep), n), y = rep.int(c(dy,-dy, -2*dy, -dy, dy, 2*dy, sep), n), no.sep = FALSE) } hexpolygon <- function(x, y, hexC = hexcoords(dx, dy, n = 1), dx, dy=NULL, fill = 1, border = 0, hUnit = "native", ...) { ## Purpose: draw hexagon [grid.]polygon()'s around (x[i], y[i])_i ## Author: Martin Maechler, Jul 2004; Nicholas for grid n <- length(x) stopifnot(length(y) == n) stopifnot(is.list(hexC) && is.numeric(hexC$x) && is.numeric(hexC$y)) if(hexC$no.sep) { n6 <- rep.int(6:6, n) if(!is.null(hUnit)) { grid.polygon(x = unit(rep.int(hexC$x, n) + rep.int(x, n6),hUnit), y = unit(rep.int(hexC$y, n) + rep.int(y, n6),hUnit), id.lengths = n6, gp = gpar(col= border, fill= fill)) } else { grid.polygon(x = rep.int(hexC$x, n) + rep.int(x, n6), y = rep.int(hexC$y, n) + rep.int(y, n6), id.lengths = n6, gp = gpar(col= border, fill= fill)) } } else{ ## traditional graphics polygons: must be closed explicitly (+ 1 pt) n7 <- rep.int(7:7, n) polygon(x = rep.int(hexC$x, n) + rep.int(x, n7), y = rep.int(hexC$y, n) + rep.int(y, n7), ...) } } grid.hexagons <- function(dat, style = c("colorscale", "centroids", "lattice", "nested.lattice", "nested.centroids", "constant.col"), use.count=TRUE, cell.at=NULL, minarea = 0.05, maxarea = 0.8, check.erosion = TRUE, mincnt = 1, maxcnt = max(dat@count), trans = NULL, colorcut = seq(0, 1, length = 17), density = NULL, border = NULL, pen = NULL, colramp = function(n){ LinGray(n,beg = 90, end = 15) }, def.unit = "native", verbose = getOption("verbose")) { ## Warning: presumes the plot has the right shape and scales ## See plot.hexbin() ## Arguments: ## dat = hexbin object ## style = type of plotting ## 'centroids' = symbol area is a function of the count, ## approximate location near cell center of ## mass without overplotting ## 'lattice' = symbol area is a function of the count, ## plot at lattice points ## 'colorscale' = gray scale plot, ## color number determined by ## transformation and colorcut, ## area = full hexagons. ## 'nested.lattice'= plots two hexagons ## background hexagon ## area=full size ## color number by count in powers of 10 starting at pen 2 ## foreground hexagon ## area by log10(cnt)-floor(log10(cnt)) ## color number by count in powers of 10 starting at pen 12 ## 'nested.centroids' = like nested.lattice ## but counts < 10 are plotted ## ## minarea = minimum symbol area as fraction of the binning cell ## maxarea = maximum symbol area as fraction of the binning cell ## mincnt = minimum count accepted in plot ## maxcnt = maximum count accepted in plot ## trans = a transformation scaling counts into [0,1] to be applied ## to the counts for options 'centroids','lattice','colorscale': ## default=(cnt-mincnt)/(maxcnt-mincnt) ## colorcut= breaks for translating values between 0 and 1 into ## color classes. Default= seq(0,1,17), ## density = for hexagon graph paper ## border plot the border of the hexagon, use TRUE for ## hexagon graph paper ## Symbol size encoding: ## Area= minarea + scaled.count*(maxarea-minarea) ## When maxarea==1 and scaled.count==1, the hexagon cell ## is completely filled. ## ## If small hexagons are hard to see increase minarea. ## For gray scale encoding ## Uses the counts scaled into [0,1] ## Default gray cutpoints seq(0,1,17) yields 16 color classes ## The color number for the first class starts at 2. ## motif coding: black 15 white puts the first of the ## color class above the background black ## The function subtracts 1.e-6 from the lower cutpoint to include ## the boundary ## For nested scaling see the code ## Count scaling alternatives ## ## log 10 and Poisson transformations ## trans <- function(cnt) log10(cnt) ## min inv <- function(y) 10^y ## ## trans <- function(cnt) sqrt(4*cnt+2) ## inv <- function(y) (y^2-2)/4 ## Perceptual considerations. ## Visual response to relative symbol area is not linear and varies from ## person to person. A fractional power transformation ## to make the interpretation nearly linear for more people ## might be considered. With areas bounded between minarea ## and 1 the situation is complicated. ## ## The local background influences color interpretation. ## Having defined color breaks to focus attention on ## specific countours can help. ## ## Plotting the symbols near the center of mass is not only more accurate, ## it helps to reduce the visual dominance of the lattice structure. Of ## course higher resolution binning reduces the possible distance between ## the center of mass for a bin and the bin center. When symbols ## nearly fill their bin, the plot appears to vibrate. This can be ## partially controlled by reducing maxarea or by reducing ## contrast. ##____________________Initial checks_______________________ if(!is(dat,"hexbin")) stop("first argument must be a hexbin object") style <- match.arg(style) # so user can abbreviate if(minarea <= 0) stop("hexagons cannot have a zero area, change minarea") if(maxarea > 1) warning("maxarea > 1, hexagons may overplot") ##_______________ Collect computing constants______________ if(use.count){ cnt <- dat@count } else{ cnt <- cell.at if(is.null(cnt)){ if(is.null(dat@cAtt)) stop("Cell attribute cAtt is null") else cnt <- dat@cAtt } } xbins <- dat@xbins shape <- dat@shape tmp <- hcell2xy(dat, check.erosion = check.erosion) good <- mincnt <= cnt & cnt <= maxcnt xnew <- tmp$x[good] ynew <- tmp$y[good] cnt <- cnt[good] sx <- xbins/diff(dat@xbnds) sy <- (xbins * shape)/diff(dat@ybnds) ##___________Transform Counts to Radius_____________________ switch(style, "centroids" = , "lattice" = , "constant.col" =, "colorscale" = { if(is.null(trans)) { if( min(cnt,na.rm=TRUE)< 0){ pcnt<- cnt + min(cnt) rcnt <- { if(maxcnt == mincnt) rep.int(1, length(cnt)) else (pcnt - mincnt)/(maxcnt - mincnt) } } else rcnt <- { if(maxcnt == mincnt) rep.int(1, length(cnt)) else (cnt - mincnt)/(maxcnt - mincnt) } } else { rcnt <- (trans(cnt) - trans(mincnt)) / (trans(maxcnt) - trans(mincnt)) if(any(is.na(rcnt))) stop("bad count transformation") } area <- minarea + rcnt * (maxarea - minarea) }, "nested.lattice" = , "nested.centroids" = { diffarea <- maxarea - minarea step <- 10^floor(log10(cnt)) f <- (cnt/step - 1)/9 area <- minarea + f * diffarea area <- pmax(area, minarea) } ) area <- pmin(area, maxarea) radius <- sqrt(area) ##______________Set Colors_____________________________ switch(style, "centroids" = , "constant.col" = , "lattice" = { if(length(pen)!= length(cnt)){ if(is.null(pen)) pen <- rep.int(1, length(cnt)) ##else if(length(pen)== length(cnt)) break else if(length(pen)== 1) pen <- rep.int(pen,length(cnt)) else stop("'pen' has wrong length") } }, "nested.lattice" = , "nested.centroids" = { if(!is.null(pen) && length(dim(pen)) == 2) { dp <- dim(pen) lgMcnt <- ceiling(log10(max(cnt))) if(dp[1] != length(cnt) && dp[1] != lgMcnt ) { stop ("pen is not of right dimension") } if( dp[1] == lgMcnt ) { ind <- ceiling(log10(dat@count)) ## DS: 'dat' was 'bin' (??) ind[ind == 0] <- 1 pen <- pen[ind,] } ##else break } else { pen <- floor(log10(cnt)) + 2 pen <- cbind(pen, pen+10) } }, "colorscale" = { ## MM: Following is quite different from bin2d's nc <- length(colorcut) if(colorcut[1] > colorcut[nc]){ colorcut[1] <- colorcut[1] + 1e-06 colorcut[nc] <- colorcut[nc] - 1e-06 } else { colorcut[1] <- colorcut[1] - 1e-06 colorcut[nc] <- colorcut[nc] + 1e-06 } colgrp <- cut(rcnt, colorcut,labels = FALSE) if(any(is.na(colgrp))) colgrp <- ifelse(is.na(colgrp),0,colgrp) ##NL: colramp must be a function accepting an integer n ## and returning n colors clrs <- colramp(length(colorcut) - 1) pen <- clrs[colgrp] } ) ##__________________ Construct a hexagon___________________ ## The inner and outer radius for hexagon in the scaled plot inner <- 0.5 outer <- (2 * inner)/sqrt(3) ## Now construct a point up hexagon symbol in data units dx <- inner/sx dy <- outer/(2 * sy) rad <- sqrt(dx^2 + dy^2) hexC <- hexcoords(dx, dy, sep=NULL) ##_______________ Full Cell Plotting_____________________ switch(style, "constant.col" = , "colorscale" = { hexpolygon(xnew, ynew, hexC, density = density, fill = pen, border = if(!is.null(border)) border else pen) ## and that's been all for these styles return(invisible(paste("done", sQuote(style)))) }, "nested.lattice" = , "nested.centroids" = { hexpolygon(xnew, ynew, hexC, density = density, fill = if (is.null(border) || border) 1 else pen[,1], border = pen[,1]) } ) ##__________________ Symbol Center adjustments_______________ if(style == "centroids" || style == "nested.centroids") { xcm <- dat@xcm[good] ycm <- dat@ycm[good] ## Store 12 angles around a circle and the replicate the first ## The actual length for these vectors is determined by using ## factor use below k <- sqrt(3)/2 cosx <- c(1, k, .5, 0, -.5, -k, -1, -k, -.5, 0, .5, k, 1)/sx siny <- c(0, .5, k, 1, k, .5, 0, -.5, -k, -1, -k, -.5, 0)/sy ## Compute distances for differences after scaling into ## [0,size] x [0,aspect*size] ## Then there are size hexagons on the x axis dx <- sx * (xcm - xnew) dy <- sy * (ycm - ynew) dlen <- sqrt(dx^2 + dy^2) ## Find the closest approximating direction of the 12 vectors above cost <- ifelse(dlen > 0, dx/dlen, 0) tk <- (6 * acos(cost))/pi tk <- round(ifelse(dy < 0, 12 - tk, tk)) + 1 ## Select the available length for the approximating vector hrad <- ifelse(tk %% 2 == 1, inner, outer) ## Rad is either an inner or outer approximating radius. ## If dlen + hrad*radius <= hrad, move the center dlen units. ## Else move as much of dlen as possible without overplotting. fr <- pmin(hrad * (1 - radius), dlen) # Compute the symbol centers ## fr is the distance for the plot [0,xbins] x [0,aspect*xbins] ## cosx and siny give the x and y components of this distance ## in data units xnew <- xnew + fr * cosx[tk] ynew <- ynew + fr * siny[tk] } ## ________________Sized Hexagon Plotting__________________ ## scale the symbol by radius and add to the new center n <- length(radius) if(verbose) cat('length = ',length(pen),"\n", 'pen = ', pen+1,"\n") ##switch(style, ## centroids = , ## lattice = {if(is.null(pen))pen <- rep.int(1, n) ## else pen <- rep.int(pen, n)}, ## nested.lattice = , ## nested.centroids ={ ## if( ## pen[,2] <- pen[,1] + 10 ## } ) ## grid.polygon() closes automatically: now '6' where we had '7': n6 <- rep.int(6:6, n) pltx <- rep.int(hexC$x, n) * rep.int(radius, n6) + rep.int(xnew, n6) plty <- rep.int(hexC$y, n) * rep.int(radius, n6) + rep.int(ynew, n6) switch(style, "centroids" = , "lattice" = { grid.polygon(pltx, plty, default.units=def.unit, id=NULL, ## density = density, id.lengths= n6, gp=gpar(fill = pen, col = border)) }, "nested.lattice" = , "nested.centroids" = { grid.polygon(pltx, plty, default.units=def.unit, id=NULL, id.lengths= n6, gp=gpar(fill = pen[,2], ## density = density, col=if(!is.null(border)) border else pen[,2])) }) } if(FALSE){ ## considering 'hexagons' object setMethod("hexagons", signature(dat="hexbin"), grid.hexagons) erode.hexagons <- function(ebin,pen="black",border="red"){ print("Blank for now") } } hexbin/R/BTY.R0000644000176200001440000001420613171627112012515 0ustar liggesusersBTY <- function(n, beg = 1, end = 256) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(7,7,254), c(23,23,252), c(30,30,250), c(36,36,248), c(40,40,247), c(44,44,245), c(47,47,243), c(50,50,242), c(52,52,240), c(55,55,239), c(57,57,238), c(59,59,236), c(61,61,235), c(63,63,234), c(65,65,233), c(66,66,231), c(68,68,230), c(69,69,229), c(71,71,228), c(72,72,227), c(74,74,226), c(75,75,225), c(76,76,225), c(78,78,224), c(79,79,223), c(80,80,222), c(81,81,221), c(82,82,221), c(84,84,220), c(85,85,219), c(86,86,218), c(87,87,218), c(88,88,217), c(89,89,216), c(90,90,216), c(91,91,215), c(92,92,214), c(93,93,214), c(94,94,213), c(95,95,213), c(96,96,212), c(97,97,212), c(98,98,211), c(98,98,210), c(99,99,210), c(100,100,209), c(101,101,209), c(102,102,208), c(103,103,208), c(104,104,208), c(105,105,207), c(105,105,207), c(106,106,206), c(107,107,206), c(108,108,205), c(109,109,205), c(110,110,204), c(110,110,204), c(111,111,204), c(112,112,203), c(113,113,203), c(114,114,202), c(114,114,202), c(115,115,202), c(116,116,201), c(117,117,201), c(118,118,200), c(118,118,200), c(119,119,200), c(120,120,199), c(121,121,199), c(121,121,199), c(122,122,198), c(123,123,198), c(124,124,198), c(124,124,197), c(125,125,197), c(126,126,197), c(127,127,196), c(128,128,196), c(128,128,195), c(129,129,195), c(130,130,195), c(130,130,194), c(131,131,194), c(132,132,194), c(133,133,193), c(133,133,193), c(134,134,193), c(135,135,192), c(136,136,192), c(136,136,192), c(137,137,191), c(138,138,191), c(139,139,191), c(139,139,190), c(140,140,190), c(141,141,190), c(142,142,189), c(142,142,189), c(143,143,189), c(144,144,188), c(144,144,188), c(145,145,188), c(146,146,187), c(147,147,187), c(147,147,187), c(148,148,186), c(149,149,186), c(149,149,186), c(150,150,185), c(151,151,185), c(152,152,185), c(152,152,184), c(153,153,184), c(154,154,184), c(154,154,183), c(155,155,183), c(156,156,182), c(157,157,182), c(157,157,182), c(158,158,181), c(159,159,181), c(159,159,181), c(160,160,180), c(161,161,180), c(162,162,180), c(162,162,179), c(163,163,179), c(164,164,178), c(164,164,178), c(165,165,178), c(166,166,177), c(167,167,177), c(167,167,176), c(168,168,176), c(169,169,176), c(169,169,175), c(170,170,175), c(171,171,174), c(172,172,174), c(172,172,173), c(173,173,173), c(174,174,173), c(174,174,172), c(175,175,172), c(176,176,171), c(177,177,171), c(177,177,170), c(178,178,170), c(179,179,169), c(179,179,169), c(180,180,168), c(181,181,168), c(181,181,167), c(182,182,167), c(183,183,166), c(184,184,166), c(184,184,165), c(185,185,165), c(186,186,164), c(186,186,164), c(187,187,163), c(188,188,163), c(189,189,162), c(189,189,162), c(190,190,161), c(191,191,161), c(191,191,160), c(192,192,159), c(193,193,159), c(194,194,158), c(194,194,158), c(195,195,157), c(196,196,157), c(196,196,156), c(197,197,155), c(198,198,155), c(199,199,154), c(199,199,153), c(200,200,153), c(201,201,152), c(201,201,151), c(202,202,151), c(203,203,150), c(204,204,149), c(204,204,149), c(205,205,148), c(206,206,147), c(206,206,146), c(207,207,146), c(208,208,145), c(209,209,144), c(209,209,143), c(210,210,143), c(211,211,142), c(211,211,141), c(212,212,140), c(213,213,139), c(214,214,138), c(214,214,138), c(215,215,137), c(216,216,136), c(216,216,135), c(217,217,134), c(218,218,133), c(219,219,132), c(219,219,131), c(220,220,130), c(221,221,129), c(221,221,128), c(222,222,127), c(223,223,126), c(224,224,125), c(224,224,124), c(225,225,123), c(226,226,122), c(226,226,121), c(227,227,119), c(228,228,118), c(229,229,117), c(229,229,116), c(230,230,114), c(231,231,113), c(232,232,112), c(232,232,110), c(233,233,109), c(234,234,107), c(234,234,106), c(235,235,104), c(236,236,103), c(237,237,101), c(237,237,100), c(238,238,98), c(239,239,96), c(239,239,94), c(240,240,92), c(241,241,91), c(242,242,89), c(242,242,86), c(243,243,84), c(244,244,82), c(245,245,80), c(245,245,77), c(246,246,74), c(247,247,72), c(247,247,69), c(248,248,65), c(249,249,62), c(250,250,58), c(250,250,54), c(251,251,49), c(252,252,44), c(253,253,37), c(253,253,28), c(254,254,13))[ round(seq(beg,end, length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/BTC.R0000644000176200001440000001367113171627112012474 0ustar liggesusersBTC <- function(n, beg = 1, end = 256) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(0,0,0), c(0,0,40), c(0,4,56), c(0,9,61), c(0,12,64), c(0,14,66), c(0,17,69), c(0,20,73), c(0,22,74), c(0,25,78), c(0,27,79), c(0,30,83), c(0,31,85), c(0,33,86), c(0,36,90), c(0,38,91), c(0,39,93), c(0,41,95), c(0,43,96), c(0,46,100), c(0,47,102), c(0,49,103), c(0,51,105), c(0,52,107), c(0,54,108), c(0,55,110), c(0,57,112), c(0,57,112), c(0,58,113), c(0,60,115), c(0,62,117), c(0,63,119), c(0,65,120), c(0,66,122), c(0,68,124), c(0,70,125), c(0,71,127), c(0,73,129), c(0,73,129), c(0,74,130), c(0,76,132), c(0,78,134), c(0,79,136), c(0,81,137), c(0,82,139), c(0,84,141), c(0,86,142), c(0,87,144), c(0,89,146), c(0,90,147), c(0,92,149), c(0,94,151), c(0,94,151), c(0,95,153), c(0,97,154), c(0,98,156), c(0,100,158), c(0,102,159), c(0,103,161), c(0,105,163), c(0,106,164), c(0,108,166), c(0,109,168), c(0,111,170), c(0,113,171), c(0,114,173), c(0,116,175), c(0,117,176), c(0,119,178), c(0,121,180), c(0,121,180), c(0,122,181), c(0,124,183), c(0,125,185), c(0,127,187), c(0,129,188), c(0,130,190), c(0,132,192), c(0,133,193), c(0,135,195), c(0,137,197), c(0,138,198), c(0,140,200), c(0,141,202), c(0,143,204), c(0,143,204), c(0,145,205), c(0,146,207), c(0,148,209), c(0,149,210), c(0,151,212), c(0,153,214), c(0,154,215), c(0,156,217), c(0,157,219), c(0,159,221), c(0,160,222), c(0,160,222), c(0,162,224), c(0,164,226), c(0,165,227), c(0,167,229), c(0,168,231), c(0,170,232), c(0,172,234), c(0,173,236), c(0,175,238), c(0,175,238), c(0,176,239), c(0,178,241), c(0,180,243), c(0,181,244), c(0,183,246), c(2,184,248), c(4,186,249), c(4,186,249), c(4,186,249), c(6,188,251), c(6,188,251), c(9,189,253), c(9,189,253), c( 11,191,255), c( 11,191,255), c( 13,192,255), c( 13,192,255), c( 13,192,255), c( 16,194,255), c( 18,196,255), c( 20,197,255), c( 20,197,255), c( 23,199,255), c( 25,200,255), c( 27,202,255), c( 30,204,255), c( 32,205,255), c( 34,207,255), c( 37,208,255), c( 37,208,255), c( 39,210,255), c( 41,211,255), c( 44,213,255), c( 46,215,255), c( 48,216,255), c( 51,218,255), c( 53,219,255), c( 53,219,255), c( 55,221,255), c( 57,223,255), c( 60,224,255), c( 62,226,255), c( 64,227,255), c( 67,229,255), c( 67,229,255), c( 69,231,255), c( 71,232,255), c( 74,234,255), c( 76,235,255), c( 78,237,255), c( 81,239,255), c( 81,239,255), c( 83,240,255), c( 85,242,255), c( 88,243,255), c( 90,245,255), c( 92,247,255), c( 95,248,255), c( 95,248,255), c( 97,250,255), c( 99,251,255), c(102,253,255), c(104,255,255), c(106,255,255), c(106,255,255), c(108,255,255), c(111,255,255), c(113,255,255), c(115,255,255), c(115,255,255), c(118,255,255), c(120,255,255), c(122,255,255), c(122,255,255), c(125,255,255), c(127,255,255), c(129,255,255), c(129,255,255), c(132,255,255), c(134,255,255), c(136,255,255), c(136,255,255), c(139,255,255), c(141,255,255), c(143,255,255), c(143,255,255), c(146,255,255), c(148,255,255), c(150,255,255), c(150,255,255), c(153,255,255), c(155,255,255), c(155,255,255), c(157,255,255), c(159,255,255), c(159,255,255), c(162,255,255), c(164,255,255), c(164,255,255), c(166,255,255), c(169,255,255), c(171,255,255), c(171,255,255), c(173,255,255), c(176,255,255), c(176,255,255), c(178,255,255), c(180,255,255), c(180,255,255), c(183,255,255), c(185,255,255), c(185,255,255), c(187,255,255), c(190,255,255), c(190,255,255), c(192,255,255), c(194,255,255), c(197,255,255), c(197,255,255), c(199,255,255), c(201,255,255), c(204,255,255), c(204,255,255), c(206,255,255), c(208,255,255), c(210,255,255), c(210,255,255), c(213,255,255), c(215,255,255), c(217,255,255), c(217,255,255), c(220,255,255), c(222,255,255), c(224,255,255), c(227,255,255), c(229,255,255), c(229,255,255), c(231,255,255), c(234,255,255), c(236,255,255), c(238,255,255), c(241,255,255), c(243,255,255), c(243,255,255), c(245,255,255), c(248,255,255), c(250,255,255), c(255,255,255))[ round(seq(beg,end, length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/hexViewport.R0000644000176200001440000002211713775713071014415 0ustar liggesusersif ("simpleUnit" %in% class(unit(1, "mm"))) { setOldClass(c("unit", "unit_v2")) setOldClass(c("simpleUnit", "unit", "unit_v2")) } else { setOldClass("unit") } setOldClass("viewport") smartBnds <- function(hbin, eps=.05) { hxy <- hcell2xy(hbin) xr <- range(hxy$x) yr <- range(hxy$y) dx <- diff(xr) dy <- diff(yr) lambda <- function(a) pmax(log(a), 1) epsx <- c(-1,1)*(dx*eps/lambda(dx)) epsy <- c(-1,1)*(dy*eps/lambda(dy)) sx <- hbin@xbins/diff(hbin@xbnds) sy <- (hbin@xbins * hbin@shape)/diff(hbin@ybnds) inner <- 0.5 outer <- 1/sqrt(3) dx <- inner/sx dy <- outer/sy #xb <- dx/(hbin@xbins+1) #yb <- dy/((1/sqrt(3))*(hbin@xbins+1)*hbin@shape) list(xr = xr+ c(-dx,dx)+ epsx, yr = yr+ c(-dy,dy)+ epsy) } rname <- function(n, chars = letters) { ## random name with n characters paste(sample(chars, size = n, replace = TRUE), collapse="") } setClass("hexVP", representation(hexVp.on = "viewport", hexVp.off = "viewport", mar = "unit", fig = "unit", plt = "unit", xscale = "numeric", yscale = "numeric",shape="numeric", hp.name="character") ) hexViewport <- function(x, offset = unit(0,"inches"), mar = NULL, xbnds = NULL, ybnds = NULL, newpage = FALSE, clip ="off", vp.name=NULL) { if(!is(x,"hexbin")) stop("first argument must be a hexbin object.") stopifnot(is.unit(offset)) hvp <- new("hexVP") if (newpage) grid.newpage() if(is.null(mar)) { mar <- unit(0.1 + c(5,4,4,2),"lines") } else { if(!is.unit(mar)) stop("'mar' must be specified in unit()s") if(length(mar) == 1) mar <- rep(mar, 4) else if(length(mar) != 4) stop("'mar' must have length 1 or 4") } ## in both cases mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"),"inches"), convertHeight(unit(1,"npc"),"inches")) fig <- c(as.numeric(convertUnit(unit(vpin[1],"inches") - offset,"inches")), as.numeric(vpin[2])) pin <- c(fig[1]-mai[2]-mai[4], fig[2]-mai[1]-mai[3]) xsize <- pin[1] ysize <- pin[2] ## The point is to optimize the placement ## and plotting area of the plotting window with ## the constraint that the margins are preserved ## to within some epsilon. This is going to get even ## harder for cases where the complex layouts are ## being constructed. NL -- I think it is fixed now (NL --3/22/2005) ## Now find the maximum rectangle in fig that ## has the correct aspect ratio and does not spill over epsilon into ## the margins, i.e. ysize/xsize - aspect.ratio < eps and ## xsize < fig[1], ysize < fig[2] if(x@shape * xsize <= ysize) { ##center <- (ysize - x@shape * xsize)/2 center <- (ysize - x@shape * xsize)/2 mai[1] <- mai[1] + center mai[3] <- mai[3] + center ysize <- x@shape * xsize } else { center <- (xsize - ysize/x@shape)/2 mai[2] <- mai[2] + center mai[4] <- mai[4] + center xsize <- ysize/x@shape } ##fig <- c(pin[1]+mai[2]+ mai[4],fig[2]) pin <- c(xsize,ysize) mar <- c(convertUnit(unit(mai[1],"inches"),"lines"), convertUnit(unit(mai[2],"inches"),"lines"), convertUnit(unit(mai[3],"inches"),"lines"), convertUnit(unit(mai[4],"inches"),"lines")) ##pin <- c(fig[1]-(mai[2] + mai[4]), ## fig[2]-(mai[1] + mai[3])) margins <- rep(as.numeric(mar), length.out = 4) wd <- convertUnit(unit(pin[1],"inches"),"npc") ## (unit(sum(margins[c(2, 4)]), "lines") + ## convertUnit(unit(legend,"inches"),"lines")) ## Oy, mi stupido! This is the problem, need to get the bounds right ## here. Fixed, do we need to guard against others stupidity and put some ## checks on xbnds and ybnds? (NL,4/1/2005) if(is.null(vp.name)) vp.name <- rname(5) xyb <- smartBnds(x) hvp@xscale <- xs <- if(is.null(xbnds)) xyb$xr else xbnds hvp@yscale <- ys <- if(is.null(ybnds)) xyb$yr else ybnds ht <- unit(1, "npc") - unit(sum(margins[c(1,3)]), "lines") hvp@hexVp.off <- viewport(x = unit(margins[2], "lines"), y = unit(margins[1], "lines"), width = wd, height = ht, xscale = xs, yscale = ys, just = c("left", "bottom"), default.units = "native", clip = "off", name = paste(vp.name,".off",sep="")) hvp@hexVp.on <- viewport(x = unit(margins[2], "lines"), y = unit(margins[1], "lines"), width = wd, height = ht, xscale = xs, yscale = ys, just = c("left", "bottom"), default.units = "native", clip = "on", name = paste(vp.name,".on",sep="")) hvp@mar <- unit(mar,"lines") hvp@fig <- convertUnit(unit(fig,"inches"),"npc") hvp@plt <- convertUnit(unit(pin,"inches"),"npc") hvp@shape <- x@shape ##hvp@leg <-convertUnit(offset,"npc") hvp } ## Potentially: ## setGeneric("grid:::pushViewport") ## setMethod("pushViewport", signature(x="hexVP"), ## function(hvp) { pushViewport(hvp@hexVp) }) pushHexport <- function(hvp, clip="off") { if(!is(hvp, "hexVP")) stop("1st argument must be 'hexVP' object") pushViewport(if(clip=="on") hvp@hexVp.on else hvp@hexVp.off) } ## maybe in the future ## setMethod("push",signature("hexVP"), pushHexport) setGeneric("getMargins", function(x, ret.unit = "npc", numeric = FALSE) standardGeneric("getMargins")) setMethod("getMargins", "hexVP", function(x, ret.unit = "npc", numeric = FALSE){ mar <- convertUnit(x@mar,ret.unit) if(numeric) as.numeric(mar) else mar }) setGeneric("getPlt", function(x, ret.unit = "npc", numeric = FALSE) standardGeneric("getPlt")) setMethod("getPlt", "hexVP", function(x, ret.unit = "npc", numeric = FALSE){ plt <- convertUnit(x@plt,ret.unit) if(numeric) as.numeric(plt) else plt }) setGeneric("getFig", function(x, ret.unit = "npc", numeric = FALSE) standardGeneric("getFig")) setMethod("getFig", "hexVP", function(x, ret.unit = "npc", numeric = FALSE){ fig <- convertUnit(x@fig,ret.unit) if(numeric) as.numeric(fig) else fig }) ## MM doesn't think it's ok to "pollute" the generic-space ## just for basic slot accessors : ## setGeneric("getXscale", function(x)standardGeneric("getXscale")) ## setMethod("getXscale", "hexVP", function(x){ x@xscale }) ## setGeneric("getYscale", function(x)standardGeneric("getYscale")) ## setMethod("getYscale", "hexVP", function(x){ x@yscale }) hexVP.abline <- function(hvp, a = NULL, b = NULL, h = numeric(0), v = numeric(0), col = 'black', lty = 1, lwd = 2, ...) { pushHexport(hvp, clip = 'on') col.line <- col if (!is.null(a)) { if (inherits(a, "lm")) { coeff <- coef(a) } else if (!is.null(tryCatch(coef(a), error = function(e) NULL))) coeff <- coef(a) else coeff <- c(a, b) if (length(coeff) == 1) coeff <- c(0, coeff) if (coeff[2] == 0) h <- c(h, coeff[1]) else if (!any(is.null(coeff))) { xx <- current.viewport()$xscale yy <- current.viewport()$yscale x <- numeric(0) y <- numeric(0) ll <- function(i, j, k, l) (yy[j] - coeff[1] - coeff[2] * xx[i]) * (yy[l] - coeff[1] - coeff[2] * xx[k]) if (ll(1, 1, 2, 1) <= 0) { y <- c(y, yy[1]) x <- c(x, (yy[1] - coeff[1])/coeff[2]) } if (ll(2, 1, 2, 2) <= 0) { x <- c(x, xx[2]) y <- c(y, coeff[1] + coeff[2] * xx[2]) } if (ll(2, 2, 1, 2) <= 0) { y <- c(y, yy[2]) x <- c(x, (yy[2] - coeff[1])/coeff[2]) } if (ll(1, 2, 1, 1) <= 0) { x <- c(x, xx[1]) y <- c(y, coeff[1] + coeff[2] * xx[1]) } if (length(x) > 0) grid.lines(x = x, y = y, default.units = "native", gp = gpar(col = col.line, lty = lty, lwd = lwd)) } } h <- as.numeric(h) v <- as.numeric(v) for (i in seq(along = h)) grid.lines(y = rep(h[i], 2), default.units = "native", gp = gpar(col = col.line, lty = lty, lwd = lwd)) for (i in seq(along = v)) grid.lines(x = rep(v[i], 2), default.units = "native", gp = gpar(col = col.line, lty = lty, lwd = lwd)) popViewport() } hexVP.loess <- function(hbin, hvp = NULL, span = 0.4, col = 'red', n = 200, ...) { fit <- loess(hbin@ycm ~ hbin@xcm, weights = hbin@count, span = span) if(!is.null(hvp)) { pushHexport(hvp, clip = 'on') # grid.lines(seq(0,16, length = n), # predict(fit,seq(0,16, length = n)), # gp = gpar(col = col), default.units = 'native') grid.lines(seq(hbin@xbnds[1], hbin@xbnds[2], length = n), predict(fit,seq(hbin@xbnds[1], hbin@xbnds[2], length = n)), gp = gpar(col = col, ...), default.units = 'native') popViewport() } invisible(fit) } hexbin/R/hexbinList.R0000644000176200001440000000627013171627112014172 0ustar liggesusershexList <- function(x,y=NULL,given=NULL,xbins=30,shape=1, xbnds = NULL, ybnds = NULL, xlab = NULL, ylab = NULL) { xl <- if (!missing(x)) deparse(substitute(x)) yl <- if (!missing(y)) deparse(substitute(y)) xy <- xy.coords(x, y, xl, yl) if(length(given)!=length(xy$x) | is.null(given)) stop("Given is is different length from x and y") if(is.factor(given)) given <- as.character(given) clss <- unique(given) if(is.null(xbnds)) xbnds <- range(xy$x) if(is.null(ybnds)) ybnds <- range(xy$y) hbins <- vector(mode = "list",length=length(clss)) i <- 1 for(g in clss){ hbins[[i]] <- hexbin(xy$x[given==g],xy$y[given==g], xbins=xbins,shape=shape,xbnds=xbnds,ybnds=ybnds) i <- i+1 } mx <- max(unlist(lapply(hbins,function(h)max(h@count)))) mn <- min(unlist(lapply(hbins,function(h)min(h@count)))) hl <- new("hexbinList",n=length(hbins),hbins=hbins, Xbnds=xbnds, Ybnds=ybnds, Xbins=integer(xbins), Shape=shape, Bnames=clss, CntBnds=c(mn,mx)) hl } setClass("hexbinList", representation(n="integer", hbins="vector", Xbnds="numeric", Ybnds="numeric", Xbins="numeric", Shape="numeric", Bnames="character", CntBnds="numeric") ) bnds.check <- function(binlst, xb = TRUE, yb = TRUE) { xb <- if(xb) { b <- binlst[[1]]@xbnds all(unlist(lapply(binlst, function(x, bnd) all(x@xbnds == bnd), b))) } else TRUE yb <- if(yb) { b <- binlst[[1]]@ybnds all(unlist(lapply(binlst, function(y, bnd) all(y@ybnds == bnd), b))) } else TRUE xb & yb } xbins.check <- function(binlst) { xb <- binlst[[1]]@xbins all(unlist(lapply(binlst, function(y, xbin)all(y@xbins == xbin), xb))) } shape.check <- function(binlst) { xs <- binlst[[1]]@shape all(unlist(lapply(binlst, function(y, xsh)all(y@shape == xsh), xs))) } list2hexList <- function(binlst) { if(length(binlst) < 2) stop(" need at least 2 hex bin objects") if(!all(unlist(lapply(binlst, is, "hexbin")))) stop("All Elements of list must be hexbin objects") if(!bnds.check(binlst)) stop("All bin objects in list need the same xbnds and ybnds") if(!xbins.check(binlst)) stop("All bin objects in list need the same number of bins") if(!shape.check(binlst)) stop("All bin objects in list need the same shape parameter") mx <- max(unlist(lapply(binlst,function(h)max(h@count)))) mn <- min(unlist(lapply(binlst,function(h)min(h@count)))) xbins <- binlst[[1]]@xbins xbnds <- binlst[[1]]@xbnds ybnds <- binlst[[1]]@ybnds shape <- binlst[[1]]@shape hl <- new("hexbinList",n=length(binlst),hbins=binlst, Xbnds=xbnds, Ybnds=ybnds, Xbins=xbins, Shape=shape, Bnames=names(binlst), CntBnds=c(mn,mx)) hl } setAs("list","hexbinList",function(from)list2hexList(from)) #setMethod("[", "hexbinList", function(hbl,i,...) #{ # if( length(list(...)) > 0 ) # stop("extra subscripts cannot be handled") # if(missing(i)) hbl # hbl@hbins[i] #}) ##setMethod("[[", "hexbinList", function(hbl) ##{ ##}) hexbin/R/hexPlotMA.R0000644000176200001440000001655513775713071013743 0ustar liggesusersplotMAhex <- function (MA, array = 1, xlab = "A", ylab = "M", main = colnames(MA)[array], xlim = NULL, ylim = NULL, status = NULL, values, pch, col, cex, nbin=40, zero.weights = FALSE, style = "colorscale", legend = 1.2, lcex = 1, minarea = 0.04, maxarea = 0.8, mincnt = 2, maxcnt = NULL, trans = NULL, inv = NULL, colorcut = NULL, border = NULL, density = NULL, pen = NULL, colramp = function(n){ LinGray(n,beg = 90,end = 15) }, newpage = TRUE, type = c("p", "l", "n"), xaxt = c("s", "n"), yaxt = c("s", "n"), verbose = getOption("verbose")) { if (!requireNamespace("marray", quietly = TRUE)) stop("cannot process objects without package marray") if (!requireNamespace("limma", quietly = TRUE)) stop("cannot process objects without package limma") if(is.null(main))main <- "" switch(class(MA),marrayRaw={ x <- marray::maA(MA[,array]) y <- marray::maM(MA[,array]) w <- marray::maW(MA[,array]) },RGList = { MA <- limma::MA.RG(MA[, array]) array <- 1 x <- MA$A y <- MA$M w <- MA$w }, MAList = { x <- as.matrix(MA$A)[, array] y <- as.matrix(MA$M)[, array] if (is.null(MA$weights)) w <- NULL else w <- as.matrix(MA$weights)[, array] }, list = { if (is.null(MA$A) || is.null(MA$M)) stop("No data to plot") x <- as.matrix(MA$A)[, array] y <- as.matrix(MA$M)[, array] if (is.null(MA$weights)) w <- NULL else w <- as.matrix(MA$weights)[, array] }, MArrayLM = { x <- MA$Amean y <- as.matrix(MA$coefficients)[, array] if (is.null(MA$weights)) w <- NULL else w <- as.matrix(MA$weights)[, array] }, matrix = { narrays <- ncol(MA) if (narrays < 2) stop("Need at least two arrays") if (narrays > 5) x <- apply(MA, 1, median, na.rm = TRUE) else x <- rowMeans(MA, na.rm = TRUE) y <- MA[, array] - x w <- NULL }, ExpressionSet = { if (!requireNamespace("Biobase", quietly = TRUE)) stop("cannot process ExpressionSet objects without package Biobase") narrays <- ncol(Biobase::exprs(MA)) if (narrays < 2) stop("Need at least two arrays") if (narrays > 5) x <- apply(Biobase::exprs(MA), 1, median, na.rm = TRUE) else x <- rowMeans(Biobase::exprs(MA), na.rm = TRUE) y <- Biobase::exprs(MA)[, array] - x w <- NULL if (missing(main)) main <- colnames(Biobase::exprs(MA))[array] }, AffyBatch = { if (!requireNamespace("Biobase", quietly = TRUE) || !requireNamespace("affy", quietly = TRUE)) stop("cannot process AffyBatch objects without package Biobase and affy") narrays <- ncol(Biobase::exprs(MA)) if (narrays < 2) stop("Need at least two arrays") if (narrays > 5) x <- apply(log2(Biobase::exprs(MA)), 1, median, na.rm = TRUE) else x <- rowMeans(log2(Biobase::exprs(MA)), na.rm = TRUE) y <- log2(Biobase::exprs(MA)[, array]) - x w <- NULL if (missing(main)) main <- colnames(Biobase::exprs(MA))[array] }, stop("MA is invalid object")) if (!is.null(w) && !zero.weights) { i <- is.na(w) | (w <= 0) y[i] <- NA } if (is.null(xlim)) xlim <- range(x, na.rm = TRUE) if (is.null(ylim)) ylim <- range(y, na.rm = TRUE) hbin <- hexbin(x,y,xbins=nbin,xbnds=xlim,ybnds=ylim, IDs = TRUE) hp <- plot(hbin, legend=legend, xlab = xlab, ylab = ylab, main = main, type='n', newpage=newpage) ## plot the hexagons pushHexport(hp$plot.vp) if(is.null(maxcnt)) maxcnt <- max(hbin@count) if(is.null(colorcut)) colorcut<-seq(0, 1, length = min(17, maxcnt)) grid.hexagons(hbin, style=style, minarea = minarea, maxarea = maxarea, mincnt = mincnt, maxcnt= maxcnt, trans = trans, colorcut = colorcut, density = density, border = border, pen = pen, colramp = colramp) if (is.null(status) || all(is.na(status))) { if (missing(pch)) pch <- 16 if (missing(cex)) cex <- 0.3 if (missing(col)) { clrs <- colramp(length(colorcut)-1) col <- clrs[1] } pp <- inout.hex(hbin,mincnt) grid.points(x[pp], y[pp], pch = pch[[1]], gp=gpar(cex = cex[1], col=col, fill=col)) } else { if (missing(values)) { if (is.null(attr(status, "values"))) values <- names(sort(table(status), decreasing = TRUE)) else values <- attr(status, "values") } sel <- !(status %in% values) nonhi <- any(sel) if (nonhi) grid.points(x[sel], y[sel], pch = 16, gp=gpar(cex = 0.3)) nvalues <- length(values) if (missing(pch)) { if (is.null(attr(status, "pch"))) pch <- rep(16, nvalues) else pch <- attr(status, "pch") } if (missing(cex)) { if (is.null(attr(status, "cex"))) { cex <- rep(1, nvalues) if (!nonhi) cex[1] <- 0.3 } else cex <- attr(status, "cex") } if (missing(col)) { if (is.null(attr(status, "col"))) { col <- nonhi + 1:nvalues } else col <- attr(status, "col") } pch <- rep(pch, length = nvalues) col <- rep(col, length = nvalues) cex <- rep(cex, length = nvalues) for (i in 1:nvalues) { sel <- status == values[i] grid.points(x[sel], y[sel], pch = pch[[i]], gp=gpar(cex = cex[i], col = col[i])) } } popViewport() if (legend > 0) { inner <- getPlt(hp$plot.vp, ret.unit="inches", numeric=TRUE)[1] inner <- inner/hbin@xbins ysize <- getPlt(hp$plot.vp, ret.unit="inches", numeric=TRUE)[2] pushViewport(hp$legend.vp) grid.hexlegend(legend, ysize=ysize, lcex = lcex, inner = inner, style= style, minarea= minarea, maxarea= maxarea, mincnt= mincnt, maxcnt= maxcnt, trans=trans, inv=inv, colorcut = colorcut, density = density, border = border, pen = pen, colramp = colramp) #if (is.list(pch)) # legend(x = xlim[1], y = ylim[2], legend = values, # fill = col, col = col, cex = 0.9) #else legend(x = xlim[1], y = ylim[2], legend = values, # pch = pch, , col = col, cex = 0.9) popViewport() } invisible(list(hbin = hbin, plot.vp = hp$plot.vp, legend.vp = hp$legend.vp)) } hexMA.loess <- function(pMA, span = .4, col = 'red', n = 200, ...) { fit <- hexVP.loess(pMA$hbin, pMA$plot.vp, span = span, col = col, n = n, ...) invisible(fit) } hexbin/R/HO.R0000644000176200001440000001362113171627112012365 0ustar liggesusersheat.ob <- function(n,beg = 1,end = 256) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(0, 0, 0), c(35, 0, 0), c(52, 0, 0), c(60, 0, 0), c(63, 1, 0), c(64, 2, 0), c(68, 5, 0), c(69, 6, 0), c(72, 8, 0), c(74,10, 0), c(77,12, 0), c(78,14, 0), c(81,16, 0), c(83,17, 0), c(85,19, 0), c(86,20, 0), c(89,22, 0), c(91,24, 0), c(92,25, 0), c(94,26, 0), c(95,28, 0), c(98,30, 0), c(100,31, 0), c(102,33, 0), c(103,34, 0), c(105,35, 0), c(106,36, 0), c(108,38, 0), c(109,39, 0), c(111,40, 0), c(112,42, 0), c(114,43, 0), c(115,44, 0), c(117,45, 0), c(119,47, 0), c(119,47, 0), c(120,48, 0), c(122,49, 0), c(123,51, 0), c(125,52, 0), c(125,52, 0), c(126,53, 0), c(128,54, 0), c(129,56, 0), c(129,56, 0), c(131,57, 0), c(132,58, 0), c(134,59, 0), c(134,59, 0), c(136,61, 0), c(137,62, 0), c(137,62, 0), c(139,63, 0), c(139,63, 0), c(140,65, 0), c(142,66, 0), c(142,66, 0), c(143,67, 0), c(143,67, 0), c(145,68, 0), c(145,68, 0), c(146,70, 0), c(146,70, 0), c(148,71, 0), c(148,71, 0), c(149,72, 0), c(149,72, 0), c(151,73, 0), c(151,73, 0), c(153,75, 0), c(153,75, 0), c(154,76, 0), c(154,76, 0), c(154,76, 0), c(156,77, 0), c(156,77, 0), c(157,79, 0), c(157,79, 0), c(159,80, 0), c(159,80, 0), c(159,80, 0), c(160,81, 0), c(160,81, 0), c(162,82, 0), c(162,82, 0), c(163,84, 0), c(163,84, 0), c(165,85, 0), c(165,85, 0), c(166,86, 0), c(166,86, 0), c(166,86, 0), c(168,87, 0), c(168,87, 0), c(170,89, 0), c(170,89, 0), c(171,90, 0), c(171,90, 0), c(173,91, 0), c(173,91, 0), c(174,93, 0), c(174,93, 0), c(176,94, 0), c(176,94, 0), c(177,95, 0), c(177,95, 0), c(179,96, 0), c(179,96, 0), c(180,98, 0), c(182,99, 0), c(182,99, 0), c(183,100, 0), c(183,100, 0), c(185,102, 0), c(185,102, 0), c(187,103, 0), c(187,103, 0), c(188,104, 0), c(188,104, 0), c(190,105, 0), c(191,107, 0), c(191,107, 0), c(193,108, 0), c(193,108, 0), c(194,109, 0), c(196,110, 0), c(196,110, 0), c(197,112, 0), c(197,112, 0), c(199,113, 0), c(200,114, 0), c(200,114, 0), c(202,116, 0), c(202,116, 0), c(204,117, 0), c(205,118, 0), c(205,118, 0), c(207,119, 0), c(208,121, 0), c(208,121, 0), c(210,122, 0), c(211,123, 0), c(211,123, 0), c(213,124, 0), c(214,126, 0), c(214,126, 0), c(216,127, 0), c(217,128, 0), c(217,128, 0), c(219,130, 0), c(221,131, 0), c(221,131, 0), c(222,132, 0), c(224,133, 0), c(224,133, 0), c(225,135, 0), c(227,136, 0), c(227,136, 0), c(228,137, 0), c(230,138, 0), c(230,138, 0), c(231,140, 0), c(233,141, 0), c(233,141, 0), c(234,142, 0), c(236,144, 0), c(236,144, 0), c(238,145, 0), c(239,146, 0), c(241,147, 0), c(241,147, 0), c(242,149, 0), c(244,150, 0), c(244,150, 0), c(245,151, 0), c(247,153, 0), c(247,153, 0), c(248,154, 0), c(250,155, 0), c(251,156, 0), c(251,156, 0), c(253,158, 0), c(255,159, 0), c(255,159, 0), c(255,160, 0), c(255,161, 0), c(255,163, 0), c(255,163, 0), c(255,164, 0), c(255,165, 0), c(255,167, 0), c(255,167, 0), c(255,168, 0), c(255,169, 0), c(255,169, 0), c(255,170, 0), c(255,172, 0), c(255,173, 0), c(255,173, 0), c(255,174, 0), c(255,175, 0), c(255,177, 0), c(255,178, 0), c(255,179, 0), c(255,181, 0), c(255,181, 0), c(255,182, 0), c(255,183, 0), c(255,184, 0), c(255,187, 7), c(255,188,10), c(255,189,14), c(255,191,18), c(255,192,21), c(255,193,25), c(255,195,29), c(255,197,36), c(255,198,40), c(255,200,43), c(255,202,51), c(255,204,54), c(255,206,61), c(255,207,65), c(255,210,72), c(255,211,76), c(255,214,83), c(255,216,91), c(255,219,98), c(255,221,105), c(255,223,109), c(255,225,116), c(255,228,123), c(255,232,134), c(255,234,142), c(255,237,149), c(255,239,156), c(255,240,160), c(255,243,167), c(255,246,174), c(255,248,182), c(255,249,185), c(255,252,193), c(255,253,196), c(255,255,204), c(255,255,207), c(255,255,211), c(255,255,218), c(255,255,222), c(255,255,225), c(255,255,229), c(255,255,233), c(255,255,236), c(255,255,240), c(255,255,244), c(255,255,247), c(255,255,255))[ round(seq(beg,end,length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/LOCS.R0000644000176200001440000001306313171627112012617 0ustar liggesusersLinOCS <- function(n,beg = 1,end = 256) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(0,0,0), c(0,0,0), c(0,0,0), c(1,0,0), c(2,0,0), c(2,0,0), c(3,0,0), c(3,0,0), c(4,0,0), c(5,0,0), c(5,0,0), c(6,0,0), c(7,0,0), c(7,0,0), c(8,0,0), c(9,0,0), c(9,0,0), c(10,0,0), c(11,0,0), c(12,0,0), c(13,0,0), c(14,0,0), c(15,0,0), c(16,0,0), c(17,0,0), c(18,0,0), c(19,0,0), c(20,0,0), c(21,0,0), c(22,0,0), c(23,0,0), c(25,0,0), c(26,0,0), c(27,0,0), c(28,0,0), c(30,0,0), c(31,0,0), c(33,0,0), c(34,0,0), c(35,0,0), c(37,0,0), c(39,0,0), c(40,0,0), c(43,0,0), c(45,0,0), c(46,0,0), c(49,0,0), c(51,0,0), c(53,0,0), c(54,0,0), c(56,0,0), c(58,0,0), c(60,0,0), c(62,0,0), c(64,0,0), c(67,0,0), c(69,0,0), c(71,0,0), c(74,0,0), c(76,0,0), c(80,0,0), c(81,0,0), c(84,0,0), c(86,0,0), c(89,0,0), c(92,0,0), c(94,0,0), c(97,0,0), c(100,0,0), c(103,0,0), c(106,0,0), c(109,0,0), c(112,0,0), c(115,0,0), c(117,0,0), c(122,0,0), c(126,0,0), c(128,0,0), c(131,0,0), c(135,0,0), c(135,0,0), c(135,1,0), c(135,2,0), c(135,3,0), c(135,4,0), c(135,6,0), c(135,6,0), c(135,8,0), c(135,9,0), c(135,10,0), c(135,11,0), c(135,13,0), c(135,13,0), c(135,15,0), c(135,17,0), c(135,17,0), c(135,19,0), c(135,21,0), c(135,22,0), c(135,23,0), c(135,25,0), c(135,26,0), c(135,27,0), c(135,29,0), c(135,31,0), c(135,32,0), c(135,33,0), c(135,35,0), c(135,36,0), c(135,38,0), c(135,40,0), c(135,42,0), c(135,44,0), c(135,46,0), c(135,47,0), c(135,49,0), c(135,51,0), c(135,52,0), c(135,54,0), c(135,56,0), c(135,57,0), c(135,59,0), c(135,62,0), c(135,63,0), c(135,65,0), c(135,67,0), c(135,69,0), c(135,72,0), c(135,73,0), c(135,76,0), c(135,78,0), c(135,80,0), c(135,82,0), c(135,84,0), c(135,87,0), c(135,88,0), c(135,90,0), c(135,93,0), c(135,95,0), c(135,98,0), c(135,101,0), c(135,103,0), c(135,106,0), c(135,107,0), c(135,110,0), c(135,113,0), c(135,115,0), c(135,118,0), c(135,121,0), c(135,124,0), c(135,127,0), c(135,129,0), c(135,133,0), c(135,135,0), c(135,138,0), c(135,141,0), c(135,144,0), c(135,148,0), c(135,150,0), c(135,155,0), c(135,157,0), c(135,160,0), c(135,163,0), c(135,166,0), c(135,170,0), c(135,174,0), c(135,177,0), c(135,180,0), c(135,184,0), c(135,188,0), c(135,192,0), c(135,195,0), c(135,200,0), c(135,203,0), c(135,205,0), c(135,210,0), c(135,214,0), c(135,218,0), c(135,222,0), c(135,226,0), c(135,231,0), c(135,236,0), c(135,239,0), c(135,244,0), c(135,249,0), c(135,254,0), c(135,255,1), c(135,255,5), c(135,255,10), c(135,255,15), c(135,255,20), c(135,255,23), c(135,255,28), c(135,255,33), c(135,255,38), c(135,255,43), c(135,255,45), c(135,255,49), c(135,255,54), c(135,255,59), c(135,255,65), c(135,255,70), c(135,255,74), c(135,255,80), c(135,255,84), c(135,255,90), c(135,255,95), c(135,255,98), c(135,255,104), c(135,255,110), c(135,255,116), c(135,255,120), c(135,255,125), c(135,255,131), c(135,255,137), c(135,255,144), c(135,255,149), c(135,255,154), c(135,255,158), c(135,255,165), c(135,255,172), c(135,255,179), c(135,255,186), c(135,255,191), c(135,255,198), c(135,255,203), c(135,255,211), c(135,255,216), c(135,255,224), c(135,255,232), c(135,255,240), c(135,255,248), c(135,255,254), c(135,255,255), c(140,255,255), c(146,255,255), c(153,255,255), c(156,255,255), c(161,255,255), c(168,255,255), c(172,255,255), c(177,255,255), c(182,255,255), c(189,255,255), c(192,255,255), c(199,255,255), c(204,255,255), c(210,255,255), c(215,255,255), c(220,255,255), c(225,255,255), c(232,255,255), c(236,255,255), c(240,255,255), c(248,255,255), c(255,255,255))[ round(seq(beg,end,length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/hexplom.R0000644000176200001440000002617013171627112013536 0ustar liggesuserspanel.hexplom <- function(...) panel.hexbinplot(...) hexplom <- function(x, data, ...) { UseMethod("hexplom") } hexplom.data.frame <- function (x, data = NULL, ..., groups = NULL, subset = TRUE) { ocall <- sys.call(sys.parent()) ocall[[1]] <- quote(hexplom) ccall <- match.call() if (!is.null(ccall$data)) warning("explicit 'data' specification ignored") ccall$data <- list(x = x, groups = groups, subset = subset) ccall$x <- ~x ccall$groups <- groups ccall$subset <- subset ccall[[1]] <- quote(hexbin::hexplom) ans <- eval.parent(ccall) ans$call <- ocall ans } hexplom.matrix <- function (x, data = NULL, ..., groups = NULL, subset = TRUE) { ocall <- sys.call(sys.parent()) ocall[[1]] <- quote(hexplom) ccall <- match.call() if (!is.null(ccall$data)) warning("explicit 'data' specification ignored") ccall$data <- list(x = x, groups = groups, subset = subset) ccall$x <- ~x ccall$groups <- groups ccall$subset <- subset ccall[[1]] <- quote(hexbin::hexplom) ans <- eval.parent(ccall) ans$call <- ocall ans } hexplom.formula <- function(x, data = NULL, ...) { ocall <- sys.call(sys.parent()) ocall[[1]] <- quote(hexplom) ccall <- match.call() ccall[[1]] <- quote(lattice::splom) if (is.null(ccall$panel)) ccall$panel <- panel.hexplom ans <- eval.parent(ccall) ans$call <- ocall ans } old.hexplom.formula <- function(x, data = parent.frame(), auto.key = FALSE, aspect = 1, between = list(x = 0.5, y = 0.5), #panel = if (is.null(groups)) "panel.hexplom" #else "panel.superpose", panel = panel.hexplom, prepanel = NULL, scales = list(), strip = TRUE, groups = NULL, xlab = "Scatter Plot Matrix", xlim, ylab = NULL, ylim, superpanel = "panel.pairs", pscales = 5, varnames, drop.unused.levels = lattice.getOption("drop.unused.levels"), ..., default.scales = list(draw = FALSE, relation = "same", axs = "i"), subset = TRUE) { ## dots <- eval(substitute(list(...)), data, parent.frame()) dots <- list(...) #groups <- eval(substitute(groups), data, parent.frame()) if(!is.null(groups))stop("groups not implemented yet") subset <- eval(substitute(subset), data, parent.frame()) ## Step 1: Evaluate x, y, etc. and do some preprocessing ## right.name <- deparse(substitute(formula)) ## formula <- eval(substitute(formula), data, parent.frame()) form <- ## if (inherits(formula, "formula")) latticeParseFormula(x, data, subset = subset, groups = groups, multiple = FALSE, outer = FALSE, subscripts = TRUE, drop = drop.unused.levels) ## else { ## if (is.matrix(formula)) { ## list(left = NULL, ## right = as.data.frame(formula)[subset,], ## condition = NULL, ## left.name = "", ## right.name = right.name, ## groups = groups, ## subscr = seq(length = nrow(formula))[subset]) ## } ## else if (is.data.frame(formula)) { ## list(left = NULL, ## right = formula[subset,], ## condition = NULL, ## left.name = "", ## right.name = right.name, ## groups = groups, ## subscr = seq(length = nrow(formula))[subset]) ## } ## else stop("invalid formula") ## } ## We need to be careful with subscripts here. It HAS to be there, ## and it's to be used to index x, y, z (and not only groups, ## unlike in xyplot etc). This means we have to subset groups as ## well, which is about the only use for the subscripts calculated ## in latticeParseFormula, after which subscripts is regenerated ## as a straight sequence indexing the variables if (!is.null(form$groups)) groups <- form$groups[form$subscr] subscr <- seq(length = nrow(form$right)) if (!is.function(panel)) panel <- eval(panel) if (!is.function(strip)) strip <- eval(strip) prepanel <- if (is.function(prepanel)) prepanel else if (is.character(prepanel)) get(prepanel) else eval(prepanel) cond <- form$condition number.of.cond <- length(cond) x <- as.data.frame(form$right) if (number.of.cond == 0) { strip <- FALSE cond <- list(as.factor(rep(1, nrow(x)))) number.of.cond <- 1 } if (!missing(varnames)) colnames(x) <- eval(substitute(varnames), data, parent.frame()) ## create a skeleton trellis object with the ## less complicated components: #foo <- do.call(lattice:::trellis.skeleton, foo <- do.call(trellis.skeleton, c(list(cond = cond, aspect = aspect, between = between, panel = superpanel, strip = strip, xlab = xlab, ylab = ylab, xlab.default = "Scatter Plot Matrix"), dots)) dots <- foo$dots # arguments not processed by trellis.skeleton foo <- foo$foo foo$call <- match.call() ## Step 2: Compute scales.common (leaving out limits for now) ## FIXME: It is not very clear exactly what effect scales is ## supposed to have. Not much in Trellis (probably), but there are ## certain components which are definitely relevant, and certain ## others (like log) which can be used in innovative ## ways. However, I'm postponing all that to later, if at all if (!is.list(scales)) scales <- list() ## some defaults for scales # if (is.null(scales$draw)) scales$draw <- FALSE # if (is.null(scales$relation)) scales$relation <- "same" # if (is.null(scales$axs)) scales$axs <- "i" scales <- updateList(default.scales, scales) foo <- c(foo, #do.call(lattice:::construct.scales, scales)) do.call(construct.scales, scales)) ## Step 3: Decide if limits were specified in call: have.xlim <- !missing(xlim) if (!is.null(foo$x.scales$limit)) { have.xlim <- TRUE xlim <- foo$x.scales$limit } have.ylim <- !missing(ylim) if (!is.null(foo$y.scales$limit)) { have.ylim <- TRUE ylim <- foo$y.scales$limit } ## Step 4: Decide if log scales are being used (has to be NO): have.xlog <- !is.logical(foo$x.scales$log) || foo$x.scales$log have.ylog <- !is.logical(foo$y.scales$log) || foo$y.scales$log ## immaterial, since scales has no effect. # if (have.xlog) { # xlog <- foo$x.scales$log # xbase <- # if (is.logical(xlog)) 10 # else if (is.numeric(xlog)) xlog # else if (xlog == "e") exp(1) # # x <- log(x, xbase) # if (have.xlim) xlim <- log(xlim, xbase) # } # if (have.ylog) { # ylog <- foo$y.scales$log # ybase <- # if (is.logical(ylog)) 10 # else if (is.numeric(ylog)) ylog # else if (ylog == "e") exp(1) # # y <- log(y, ybase) # if (have.ylim) ylim <- log(ylim, ybase) # } ## Step 5: Process cond cond.max.level <- unlist(lapply(cond, nlevels)) ## id.na used only to see if any plotting is needed. Not used ## subsequently, unlike other functions id.na <- FALSE for (j in 1:ncol(x)) id.na <- id.na | is.na(x[,j]) for (var in cond) id.na <- id.na | is.na(var) if (!any(!id.na)) stop("nothing to draw") ## Nothing simpler ? ## Step 6: Evaluate layout, panel.args.common and panel.args foo$panel.args.common <- c(list(z = x, panel = panel, panel.subscripts = TRUE, groups = groups, # xscales = foo$x.scales, yscales =foo$y.scales, .aspect.ratio=aspect, pscales = pscales), dots) nplots <- prod(cond.max.level) if (nplots != prod(sapply(foo$condlevels, length))) stop("mismatch") foo$panel.args <- vector(mode = "list", length = nplots) cond.current.level <- rep(1, number.of.cond) for (panel.number in seq(length = nplots)) { ##id <- !id.na WHY ? for(i in 1:number.of.cond) { var <- cond[[i]] id <- if (is.shingle(var)) ((var >= levels(var)[[cond.current.level[i]]][1]) & (var <= levels(var)[[cond.current.level[i]]][2])) else (as.numeric(var) == cond.current.level[i]) } foo$panel.args[[panel.number]] <- list(subscripts = subscr[id]) cond.current.level <- #lattice:::cupdate(cond.current.level, cond.max.level) cupdate(cond.current.level, cond.max.level) } #more.comp <- c(lattice:::limits.and.aspect( more.comp <- c(limits.and.aspect( lattice::prepanel.default.splom, prepanel = prepanel, have.xlim = have.xlim, xlim = xlim, have.ylim = have.ylim, ylim = ylim, x.relation = foo$x.scales$relation, y.relation = foo$y.scales$relation, panel.args.common = foo$panel.args.common, panel.args = foo$panel.args, aspect = aspect, nplots = nplots, x.axs = foo$x.scales$axs, y.axs = foo$y.scales$axs), #lattice::: cond.orders(foo)) cond.orders(foo)) foo[names(more.comp)] <- more.comp if (is.null(foo$legend) && !is.null(groups) && (is.list(auto.key) || (is.logical(auto.key) && auto.key))) { foo$legend <- list(list(fun = "drawSimpleKey", args = updateList(list(text = levels(as.factor(groups)), points = TRUE, rectangles = FALSE, lines = FALSE), if (is.list(auto.key)) auto.key else list()))) foo$legend[[1]]$x <- foo$legend[[1]]$args$x foo$legend[[1]]$y <- foo$legend[[1]]$args$y foo$legend[[1]]$corner <- foo$legend[[1]]$args$corner names(foo$legend) <- if (any(c("x", "y", "corner") %in% names(foo$legend[[1]]$args))) "inside" else "top" if (!is.null(foo$legend[[1]]$args$space)) names(foo$legend) <- foo$legend[[1]]$args$space } class(foo) <- "trellis" foo } hexbin/R/hexpanel.R0000644000176200001440000000267513171627112013672 0ustar liggesuserspanel.hexloess <- function(bin, w=NULL, span = 2/3, degree = 1, family = c("symmetric", "gaussian"), evaluation = 50, lwd = add.line$lwd, lty = add.line$lty, col, col.line = add.line$col, ...) { stop("panel.hexloess is no longer available") add.line <- trellis.par.get("add.line") ## x <- bin@xcm ## y <- bin@ycm ## if(is.null(w))w <- bin@count ## control <- loess.control(...) ## notna <- !(is.na(x) | is.na(y)) ## new.x <- seq(min(x[notna]), max(x[notna]), length = evaluation) ## family <- match.arg(family) ## iterations <- if (family == "gaussian") 1 else control$iterations ## fit <- stats:::simpleLoess(y, x, w, span, degree, FALSE, FALSE, ## normalize = FALSE, "none", "interpolate", ## control$cell, iterations, control$trace.hat) ## kd <- fit$kd ## z <- .C("loess_ifit", as.integer(kd$parameter), as.integer(kd$a), ## as.double(kd$xi), as.double(kd$vert), as.double(kd$vval), ## as.integer(evaluation), as.double(x), fit = double(evaluation), ## PACKAGE = "stats")$fit ## if (length(x) > 0) { ## if (!missing(col) && missing(col.line)) { ## col.line <- col ## } ## add.line <- trellis.par.get("add.line") ## panel.lines(new.x, z, col = col.line, lty = lty, lwd = lwd) ## } } panel.hexgrid <- function(h, border=grey(.85)) { hexGraphPaper(h,border=border) } hexbin/MD50000644000176200001440000000755314406422065012054 0ustar liggesusersb8c6e7f6b0230cdf61f0976d387c7a44 *ChangeLog 2706f66bcb100c40d64246fa1b0e664d *DESCRIPTION 66405052564fa256843adac8756c3918 *NAMESPACE 98a77d0235bb074f09aa7675358b8650 *R/BTC.R b8083617bec9ef2a20bf2fb31d1f50cb *R/BTY.R def8a3ae791d6214f8093069780971a3 *R/HO.R e54503901b17f4b00ab192bef093ff18 *R/LINGRAY.R 9220834650597d3f9a3c2f5a38fb2fc6 *R/LOCS.R 47006284b4bc42824409e49cd3ebb6e7 *R/MAG.R c25363a22b3f824d1f25997179b74434 *R/RB.R 97262cc9f616661bf71e4686225f6c17 *R/grid.hexagons.R cd88d10aa75a6666b296efff0ac1f355 *R/grid.hexlegend.R 503b110bf985d5c12a0d514c333dc81e *R/hbox.R ad4a901fb8fc48deb4f76ad3d797ecd9 *R/hdiffplot.R 598977d1977192382b97ff947dbe2d45 *R/hexPlotMA.R 6c606d9e7d4cb2eb92eb985b922086ba *R/hexViewport.R 326bf768066c28b33dcba48039c12ab8 *R/hexbin.s4.R 5d66d35fa92d45957684ee3375513e28 *R/hexbinList.R ae5724baa7c3661621ed0018287fc6ca *R/hexbinplot.R 53e8c6ea014e06b21e56b8e447a0dad5 *R/hexpanel.R 249d47000fdc8b641cf6ed2ee6f640bb *R/hexplom.R 0b7181a5ae4cbc780f46041886fc80e8 *R/hexutil.R acf4489ea175f01eb1659a420183e155 *R/lattice.R 6928f90fe8a6af9ed24c7ea7cca7f080 *R/smoothHexbin.R 53e586900ba0c452c12ec7aed3d20295 *TODO 9eafd1cdd0fb3d78a85762281167a0ef *build/vignette.rds cfa9343134507d8eaf7386167ea1243d *data/NHANES.rda e857b573460b9eba00bdb571dfccfb23 *inst/doc/hexagon_binning.R 0f5af19e815f37b968733e524435daee *inst/doc/hexagon_binning.Rnw 31f9a053f08703accc2dffe6ee642be7 *inst/doc/hexagon_binning.pdf 3b3cb098160c79abc4d739397d315ff3 *man/NHANES.Rd bfc5169b22c653bb5912e9c3e92f3207 *man/colramp.Rd 48ab11e80111a249054645e3987a033e *man/erode.hexbin.Rd 47a11326b5056014da626fe8c3c5b8e8 *man/getHMedian.Rd af748a6a41f4a7c7cb0265b75f645d06 *man/gplot.hexbin.Rd 4f14ff188dcc89ced1434511b0da5dc0 *man/grid.hexagons.Rd 6e12f30832b4d71515a91bb8c448049d *man/grid.hexlegend.Rd 5f2695c8af33d84b154a61e3463859e9 *man/hboxplot.Rd eb4f91c7c9c4482122d7c9ee209e93b6 *man/hcell2xy.Rd 9a215a3b0ff1077d865688a5d9a40921 *man/hcell2xyInt.Rd 29e7649124c53711586904d9c556f53e *man/hdiffplot.Rd f49d784dfab4e373b90f6399c511235f *man/hexGraphPaper.Rd cbc932856dc584b571a425fe4b7ec414 *man/hexList.Rd 61f104906bbaf5499386d589c769aa5e *man/hexMA.loess.Rd 15c9da95418b954cc0feeec69eff71cb *man/hexTapply.Rd 18c065f4f0c331f17604d467cf00b305 *man/hexVP-class.Rd 9c7707d15c10f959d35a0714dc65b667 *man/hexVP.abline.Rd 1f4b3a61121669b0bccb6fdc4e5cd836 *man/hexViewport.Rd 92c69549ef7b876c66bd362e17216c44 *man/hexbin.Rd 1d1b19028ce04fe352f1195993b8802f *man/hexbinplot.Rd 37d121666c32d6396a680761b201162d *man/hexplom.Rd 13241d553371e3923f6647b3a7deea77 *man/hexpolygon.Rd 85e71d3e73900af44b7e88ead81c033c *man/hsmooth-methods.Rd 7ea0b41a11cca81d2093012166c35101 *man/inout.hex.Rd fe9d76fede0a6c4727a6efb5c2e3c861 *man/list2hexList.Rd 087875e158137bd1494533ffc2078ebd *man/old-classes.Rd 6ed5394a980386786a41eaffd7dd5c8a *man/optShape.Rd 9f23953a55209099110283ec98343438 *man/panel.hexboxplot.Rd 3d36abbaab3ec18876e2288151da11f1 *man/panel.hexgrid.Rd d62970352d19f6785e76d6c68f3ba79e *man/panel.hexloess.Rd 9da0d7245fb3f734cc0f07cb4f2aa123 *man/plotMAhex.Rd fc017f52b40dc804a41ea45305c840d8 *man/pushHexport.Rd febf2f7e1ad56316da2058e260732d7a *man/smooth.hexbin.Rd 886e2efe62994815b8acfcc78c7ad81b *src/hbin.f 470ef863da306fb9d0955b3cdb0b2ce0 *src/hcell.f f8fb4b9ec5a1dbc174102d40377ce885 *src/herode.f 719cbe239d3f98da12bd7f489ab6c197 *src/hsm.f 298e9bf5c8100f86622f996e3607bb98 *src/reg.c ddcf0653ed6863dd0260e1f58349356a *tests/hdiffplot.R 07c2792a31643ea08be36a8133f95ed6 *tests/hdiffplot.Rout.save efe67770786c28cc2bfceef357376f7a *tests/hray.R 24021c6251d46ad71065e3705e04479d *tests/hray.Rout.save 6dca74e0501c54cede56d657a1c0c632 *tests/large.R 98321f01b4ed346aa059aec1aa3c637a *tests/large.Rout.save f94ffad94528308a3483bf6f4088fa70 *tests/viewp-ex.R 53478aa4cafb6fb935b12b7c982a667d *tests/viewp-ex.Rout.save 0f5af19e815f37b968733e524435daee *vignettes/hexagon_binning.Rnw e95a649be2460892a58230b0bc7c78c2 *vignettes/references.bib hexbin/inst/0000755000176200001440000000000014406412354012507 5ustar liggesusershexbin/inst/doc/0000755000176200001440000000000014406412354013254 5ustar liggesusershexbin/inst/doc/hexagon_binning.pdf0000644000176200001440000375235514406412354017130 0ustar liggesusers%PDF-1.5 % 49 0 obj << /Length 1989 /Filter /FlateDecode >> stream x}XIϯrE qIRo\>>`(2E$5}z<=f4^n436Qesj9BeK~H~6[LnaJPe.l*}O9]EluUUŢ5{?$]߄n cblY]4uVf,{m<+ʬT9Gi;ڰѶ`!il]幸C*fhI.ts8[eo]>OH&t3=~yLԽlp}xM*]Q?0iϧ9@ _ 2/ө٢0;^NXAK<{%g /(ms'G^׳ͶT*}lӰ SNz&o6i wqg2nv5Lw1}#mP:S%Uՙq9DbR~hsi]m+0tcn*;(+ {?(!:U/x NN3. =~ p[ )?y)RD5xbFM~ם0ƮZQ ӈ(hZQxu ml|hVSj8~ :I:ϋl՘,_LlnCI% Kg4o)T̽Sf6׷> չFhwAaRJ'ABSvqh6k\paTy3!k`;%5e=~֜!EصZ^笀X.K$q 慥sCKxDޥ7; .I6LA[(W;J.+w:O=گ=<xaĜ\ZS 8C=GIJA< x$̑I1otњUQ~O"   E q,O[nFRK,ˬMe KX\墻,ʢ0>%3ռ0PV2g>F*Ψ:_3AA?;ݻp@yyPn?_5dGa/'npn@qi. '¥O~ѱCnl=^YFۆIav`ioVC3v6S!}Iw@_`Et|$v(r,W#2zAO; PO"Lb#" ̑2ܜD9}sDU `ڐ%RxJHdc#΍[Y&Q(9A'y|7 ZCzm'<n 1$"UH@Cޏ~G)#_?ib)>Y*sOyE0(3Z%BWa'Qve)/^Ua:ˋ[]c3 Syl8j7Pg=5 0C>GcmۿPܾ V_TtD endstream endobj 73 0 obj << /Length 1989 /Filter /FlateDecode >> stream xڥXK4ϯ)-mgy4 !ڑ=O'l:i4C멗Fr\;CtȒ,x| QAQ ~ ?vp.txl1ӃqSߍ0sL KzfB'xT΋υS!ʠ(]n JET̐4 tm&7SCb@Z]v${5=}[&twjvI϶4>h䐄Xgeh>8({8ڐC*)RX8b/VcУф{` qJK#ɦ &rў/-[Ũb南qbv\6)m+j!ɲ{ԊzHb.6-UǫmqQx8HAUL%MX5#o}b庱'ָЃ+1GK̡YvÝvk6ٮ+ǞQ=:0({բW;N=qJF]ŋaPO[:< M2)ĜО~&0 U=g<;0 :2yӁoQ30|N(Rrj8 #{A8PʊHC`T%pC4-c5%O='K{/sZ|w [˘$TC(e:GHC)I'9;xJmZc ( p 8m:1lC<@<hGd R4c-Rd)OR=kipS %ꍃBH@iELt0&'*Jb3F X  FG%e#݆cgLu.|,zii"degh@5xX+6W՘U~XHTA;03U00%)-\`K7%E&]Z'\ mFx̺SA:5#((R.yH{1z.tti8Yg۞k;o{ @ 4xXc+0YT(1 hUx#U8aPEY/"K,JT8X!!*XEPznkzYEAiP_QfQ+Kpk85L jփޮK,Ex6ө;oGͩFiG ju46%T![GֲG7Nͱ6KCJ' [ƶ:Ns>q7 T!L]zl`_0&*(Ic=02on„? G԰)P >Qi᷄zf 'aooMp2ֳFg,vwPi/ Sb{l">R _@|9 Pcv''= jOrg\UABTѕ=Eyʹ|~ '$0!/l)Lx;y`A-n@$xG"*Nvo0$%JƗU, H}gh^yv|law'8W[z7p){p:xOm{Ki GYqyka/4Y+[FHA'0쇎!&ϫܝn^sFyA_~g;9ju0 DPT3o luϵeN#\buL瓢XZPoKTLm+>P5RT '!l!UFw$RAXe$<[xK =R!$ļCf~oCy+1>,CD|SЯ2E~{rN5|5(-r(lkIcr.ϨPNԩf2(tQH?5 endstream endobj 67 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpmBfIMX/Rbuildc718b50218aba/hexbin/vignettes/hexagon_binning-comphexsq.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 81 0 R /BBox [0 0 504 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 82 0 R>> /ExtGState << >>/ColorSpace << /sRGB 83 0 R >>>> /Length 10876 /Filter /FlateDecode >> stream x}M6;nݾE/<.}c$ 8@2 #+F0,-P;h!%ꃢDRϿL3?xouy|?0|Gϯ^?GyZ{}|cW:A_׏/OC~)WKN ef #C6p:6p)004 ZL1<櫴:^|/?~_4N#&N?H\!xDTCT8 Ӛ*Y |v!.DڋFNizq:`du`02f0Us3 (3Xo7hu뒥MK.54Ҩ駺㧺|S]9U]_v;u|҆ T\^kfb߲hrrMKv=sjsLwK;ܑLk 2s:R:s%3_]_>4moґsq8j"#$Zh0Re֌;I- Jh%FsFdS^zVYR^ Kjsݡ.˾`j|)ghw~ڽ~Jh%5a`-}]#~ -wc>EeI[5w+MY/a&*6,d0wsݡz˾~oZٍu f9ªjFe ԴQgtJ&-ݦHe{ɢ맦V1Io0,M:d^[:; S\S 2w0_rb3eY9C,XʅZBˀ9L_Sedb}jT,;cGtk.ZDgdn6x6mAYsc$0K:R:8ZDT@2w[NzʦNk,J 5R 9x;wB_L/Ν!w4L{ iQťXpT@M,ؘZU|okNPlVQ@FeCJqT|Vqp-dwUnuu zHƑӁYzt1 %SePd3[&LȘAʱK*Ё]o]~o&bӁqj> f ) ` EƤC \|Mv2ɨ7|bӁ)QF3u <ˈQw%*#$f6?-M~?ƦXϻbMwuw41ێRp=OC"^#0#Ŗ$J[1  ` q[G6XzdA~h6"h19K&[EPd w MȜOj0ɴ&-2-v3٩4nz]v2ca|HX|z, 8=9Gdd'n'l|?l 1m%䏶d ׃\zq>l'cӁYzHJ f9Yy=f]Mf=e3x=.^ѦS dlg=Mv |`ZI=y;ܪdnV Pni(*NW*Dʮ|{o ͭZW*%P!F˹ >צW9sBѢ"eO2֬{H?XnA(C̚ɀܱO%vv4,?L,Y[3dBȕm#Gx8/!dyw9 o[۞U8+4:q[Z]޼wg۪5Ճh>Am a s{1؆:0 \izizc^(rpff'XA7\mۉË^-nQaۖa>2e1l67tEzۨ;#I'ͩ!}PAi;rp׳a8[t*sdH'Å ԔwdMȶ1S6dmCRTs(yKY"x^Y3GF|\Y`ԞyrXd'n)'N1R<ʕGlIھy|rf)գzkԣxEy,6SON|" U(wCѼf2|G^A D2#K((K}N>}f}NkVl3f]FfL2pR(2C6WOzD:=UGo㜘ޭN8'1!V" "=H$:FIw hCuF#n:0̺N/23x.^S s6xIN[Ae i7s{*~;!&itBS-aw{DbT-z=y6^;~9 ƳH]x$Favtv=l=F#>Ly  :pV4]e9-r'= Q}fӶm*A%;Y٦dglox$8{t:1?p(7YdI< $/ej! cUE e\=A}pX=YNx$^o4:0AX A\CvUg٣Ab1x$>qcp6=+b#x$nN,b$]bI  L|?#f=h!R]Lvz ,X\!L{H@~9@vaXPgR"ՠu-WK?a j:s?iY{: hKPKh0ǶR0spoC)&޻6/,`f6,+]ߎ%=I0~ oBʣ_xnoUd2SY-L΢vt`*,2夷z t {=^Nz 7ݰzE99)܊on>oZoa@ne"VVb6ݰ/ml02F}m-/2pν[vp WEp'N]k0tlp* &2S6;!Hr r?^ .o-Iơ,V"K$t+Lv~q7@b,%thV`hs'76qB#O)iK:qG[8e w\b37e?{%#N` Nψ{%'Fĉ1NtNܮEp닆f^{3qoӁ;-=DQpOQW{x'O&Ͽo.?a;rb㺋J6KҐ:yv}T!Ёa}qn rbƘn:0AX2lvoӁ] fz[-x͌C[?Nt\1󀿳e؉ΖLȰ~]'}W.mB7q6B)j<3O:աnyu{-C 0 c>,-Hz<|y'ŧײG|$@^w3VB~taVz]-^˰M7eE,q%ne"U#Ѱ?嵔8~}|2>fƦ7x olc+G]6w(w"=NU5pm4u[{\*Jn8m@1@%;>>;FM( t`p(\"nX7Y*R<#c&Q8Y<7\olgӁ;|6pkmmE̶ome_nK mEVN"f[7Btڦ lˬgf3Vľ뎵4Y"f[VMc%`-9A5 78qm l{퍵t`c` f9z`å]bZ =1HXz2=ղeحMv2x23jqA ͩ0Xl*nc̱.Xd8->p 8,#a͇tv:CPY(%yׁj8=Yn$,dtmF7B;^b<tq}R|Aܮk6>˲c=A,$LezD: ?m-]6xqW9{5Gh;gt* ƢxE ;$ .#^3 -܇9:c5/Y*DdcgP~cCr\}-cQ8tU/K;tUxP`x\}W۸3fgX*dv;k ^gF>?bo+78mEVx-AkQg^AX2f{{72e`52f{@+ _tW?.) ;;wm7dߗ t??Z)A<`u\ҦS E qSHEqS7 K|5]`X# XCG*ןO)ttUx'g؉2amA(c<{7 ha%uz ..1ifW}^q?|9'?ʧ̯OId0)Mg0js;2F86K N__^yQq G;o?xcza}c]W;xfwE. ;@MAoJ|a9HX _XN ,# ,5+KrcBbE[yե٫@=TN]L,ĺW$_wOg<$?ݥ ~3mE$?35oZ_D?Oh4.@~C@*Of:#֢_o):V> Wv>lRN+} }QOj}x!YGj"z4Y۹PoaPf_-Y>De,̘V{ann׃{GoPֿ iڬѽ\X} J.L_#׍[eGw9Ssb^ZO}fWþ1H!g89cE+Emf`Yns_dPiofVfќb f W>[DkDzesG9OTӫj"'?psGm^ν^}.^=Qs\޿ oWbԾdlDmYo앭c ϴo||}xO5H+Rǵ^՚Iϸf:BOk>|=Pj!gX3M7 oS=Pʇ]G* {%OnU[5͑FsZ {%O{N<Ti ZoW|hqW}NE'acƚ>?Qu)gyǍƝ'YªVmZZRAG{| ާ>?P1>hNتwk|ɪv2᥶~ܬzO9|H OsQwٹag79| ӱ$YQOUukmwNT# k!-u%]'sNl4.j7@9jA9w{T$wJ;x.oQQ/Wfx>s_= C3C")^wcmumy ZwOƃ\X߭R3abFԫr{HkaAv>Y$tMcf:̙%{Y3Oل]o=xj;  ^p>]6ʾtCP5MoWf']5z0}[*]߷3w[CZtia7$Nԣ@t+dyBV]}kc!-v!-,CjTkySvH5^.wk9E9nܧ.}חCZ=l[oHN7C}!gQ;iѿifxZ]\<۽ q#78#}wFP37OYͰ? C,d)-{4_{/.MZZ'j2ӊ>vrj8zثl]fm= KDv^.CZxzYy(S|*Oiqv&;{~ ?SZ?PVOe9os=5$|oD5{BcZmɜT O endstream endobj 85 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 91 0 obj << /Length 1054 /Filter /FlateDecode >> stream xڥn6Э4`1")RcӶPYr%zpHj@8I(*ֻL(+SgFW\*_L-s!=ک,se {.v?xcme#ٹviPCRZ$)pJ1p<IO'=x]u#s?xKYf)kv!=?ῡ <M-G[q8JdU膥`޷qj*G [svCsh.>SMD@jCV, "":SCŦ#a؟Z(jv$m}!t7m{!5,fvPh=IQ ^^[#<*Uؤ*qkمs:9? /}+_V/h#`&`+ 9@e@_dR+n6ſ nـ7`xJ|Qe?ᗞ$3n敐,7:&TJI]f5"P S.~$G XEE͆*iX'(ҥ USݘ+Mc\9hf.yqK *VTC{4ve㓝l M4FRT)DG: #47 >tvf6C]&_uU +Yr:N9>:4&)7Ɣh`.u9e&v;{0[dCod!N>y)V%7ih?49ml]P|ĸGw+MR†sUŶ\D]i.5m.ꆛ R`AMe;vA˵#S.wӕ#HxO 6}%8W@0M}]JV.!B:1 l.M]!%vCBFԵnKOEλ?$BW{1uux>X>Q+BUrnn\A_|mk'Hm6`!QjHD *# endstream endobj 87 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpmBfIMX/Rbuildc718b50218aba/hexbin/vignettes/hexagon_binning-basic.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 95 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 96 0 R>> /ExtGState << >>/ColorSpace << /sRGB 97 0 R >>>> /Length 18348 /Filter /FlateDecode >> stream xK,qWP) Ix( CC ޙcEǕ|2yݵ*+7/߿۷Owzolxo/o/삗vz^+o/x߿]??^XVsezkɂcPKl$n|#Ԓ1d ֒g?oӿn Z|~~<^/_{^ow3"Ηw~ۏzx}|o?~|~]WZ6Ϗ+YoyO-__F,|Zz_ Ԓ #XKlE`-Ip,jɂUw a?oo_y}~9ם__uK=ϣ/=KG_뾷m y}g>ֿl//8=_!;_ܹX/I忾>93<'=^.oA#?|/~uٟ1k ^tsYwnzBڶ1X>hḓ,_߷m= Ks_fq6;ݎzP<1_uzz۶J}ۣ_;=_Xr6 z,=ߎׯ~{=16;yl7(x=1};ga|][Gx{(c n5Vыޗiמ9g~_O} 8z3yԺ=xɽBG/׭inq֜y"k ҋ ``ы ۃ܏q챵2o,sſwx~y:,a@[g(xTwXd); oƾ 8z=jǐ}9UۣQW{Ժ=G/;cޟ{7QzxӢx|> 8zk{'QcO=zwJ|kjŞ Hz==tO== Ş Hzv }xl1x z~{c^{J=ǐ>ke$=y[~ Hz=t?Z~ HzX}xǐsJ~m^zX }^Zz~}^ؗ}\Ƕo_uo{ =sp x kiG5g`ыGe@j5i``ыGe@1k:fzxy>cыG3^<v> q<0^<v>u00ţοa8_3^=w<|kcѳο󱟯G;z>30ţοa8_3^<*õ2]{pO=2^=9~<=1ţa G/u=j=ܷdߡWEǣ)Qspakد~seK|G]=so%x2ϥ g]8|ga<=pn+\ Hzvsi00#ţ΍<0=pn+\ Hzvsi00#ţ΍<0</pW\鉧ϣU?&3^jIsGyV^'>?q>^g˛Gy7^gc}@ <3DO\==gȞ3DO HzYF{`cl_ZzZox`c|>^y[=E^kx@vWޯ?hz~= }G~QǸqQT{XxXGţ*``ѫǚGOp SыGla=\xzGg3a={9k ^gRswa^Wߍ{0^Úۂ\xh1ţz^+z``ыGVaVbW5sI/fD{ԺQڣkW#S0^<}{Buͯ=ܾQzٗ#n۳Ԟ{ʯ3'}3{zk?1FGLHz8u~jk@/<D c]bt>6GNW!=FmúNI9@ >; ^gtͣjv+^xۉ.],x7xk],<7Q]l{hW]1#)oﯷὣ뾞[ܺ8~{k7ݾ+ţy2Q1hnҋGua) RB00ţ:>:``ѫCAGΛǺ惗\y{X|00cuxv @\wXzr=n몣fz.z<ήqQ]t{XW]w00\ϝvͪW<ցG\O;ֳ7^gmUsoyvO^g̃N~<qgItc}tk]X \O?>GC& zF/R@``kRM%"xK͕CC& cыG%"qQ =,1Dfz02Q0^LK|X2)P4<29/3z9"1X:\9@Ho? 5Lo+sKrcI.^r=W3[hˤgRO?>Hn$I/x+ρKr=_e]<ܚG\&=zFKrqHct-qtxџ}:3Ooy:a&Ld?4KgނԌ4KgނGvo4<23Nn$I/xџ~|cI.^r=?{tkM} WFa/Ra00)"3^=*嵇L FX\3y*I,#y3=*G+}Px6Yu^D<=ÍZ*Wa nҋGe*qqJhfRJa)U00ţO{X 8z}\GP%zF/5Wi8G5+4e@x~L3;⏽q[qt,9Roeb::cKf;-==Ztwf]q׺7ӫ=Fa4k00#ţh{h: Hz@„%H'cW+izH/<T!6&L+^x$J$I7x ϑ+rc7Rqr=(k{hͤk Hz@ Kt!HlH8x ϖq^g%Z-_MșW!Hؕc 9tr=W ,-dXB\ϾGr&hzH\<=m'/CO'yOgxX H3x,MG^'3GtmzHfhO-d-#/=_=ÍZ*-HAWCskcѳDZk+Y7%H^y$JãI;J=r{Xzt 8z@ڭ<#]/3z9~]|x4=g6^gxd<#/3z9*Y7%H^^Cskck͗Ǟ <#]/3z{~|Piy,=G^g~ۇGskzFoρiJc9ur=?|!-ӳzFAZMϙW=ɺy,iG^g̃<3]0yiy,=G^gg{Hc9ur=?{CZMϙW^iy,=G^gs$}<#]/3ӏO%ѤIxџ~|*7HSy,G^gJãi?+^ܺƏc"'8zX3B{ 8zη>wԺuݿ܊<G/)<?tJ-?|G ܛFLGyB 6~pwff }|-AY<:/yJ=?+|<6/yBr=#1O^ә=t3cFҳr<<,Gf$={ r}``FҋG\q c>_houyQe}o3}tݛ ֣?]~2==õZV [o\N30^3j=?GT~x,G^s`&2rˇrzzZ5\N30^=ֵvCk=Kzx8緇30cţ{, g;\G?={iE%~Ɵ1[bx ϑ1T6oW!{dsXV,\s/r|WRmKlJã)7SJ=Rm{Xʍ 8z@\OWTCk&[ePǯWmK\Iu<4f5a= Iy,F ^ggx$6xџ='#&L+l<\#/3},jXrd\=Ss<4fZ5axTlKVGc5mr=+&L Ja5m00q][Y|e)޿YzO+K|ݟfcY\O 9zg:gWuo'ɾrj_skZWѳDZ[9<[#/3z9=4fufx {òhd``z$VeȪ^y_͢UW?οyrr=?<3/;/3{\geXvl\m;}c9ur=gοy81Ϟ:pzFo Ñ<ȴ7313_X\f:x+ϑ畕GsfkzF/ dexXvl 8z@VeWu%{(={ung`ы=' 8zVԈᾧ>qyD]ǭX; 6oi }Z;r-}gQpAL Gg>0<:iIJ=W#Wk J"xџ~|0hJx+ϑFM!cSZ/3z90E<6Er=N%rjaRO?>BǦ1^gs`ʂ)xl*SzF<Vc <:ȩJ==xؤ!&'Ǧ1^gR3& D0ޞ,& 1^gg,O|\Ͼ/{<:iIj=WDh4$"xρ& ͣD3z0Bش!^ycxtڐzF/AMæ 1f=? 5]h64"xsp[taxtڐzF5x|ӈzFtaxtڐzF=Bش!v<6Er=?{$bxt2 zF\E#xA#^yģSr3z9/?E#y0hL"q&㡓\0^-ŚǦ1]^xd<6iIDr=dytҐzH<&'5YMb\:9'xzZ:=2(#O=-Mb\O{Z<:=J=?<6=Br=}L cӃ./Cz~b:ȉ1#Of=Mbb\Of=Mbb\Of4Nr`R<& 1^d6iID00#ţ& D0=0YMb HzB{!'gLaD3<*ߟ]w>[rݷfH8'u 6)%_b=Js|Mޙ_F/Òw$``ѳDZiJã)=Sr=WBXJ\`4H^^Cw&sckG& +i7%Hx~BnKޑ̃VMޙ̍W&*i%H$ǒw$zF/5WzMәAG5<#m/3z9+=7HkhδmR>_H cY7pr=g \9x ρ <37Cz23x,CG^gdfX\L2shΌmR?E Б!=t.ŞI59y4gnV^'3c:2vr=W߮0<3cC ;xk9#73乾3shΌmROBc:2vr=?vfe_:31#Wݛ2tdzH5#32td``FҋGe QWkC㕑QW߯E} P_зo -nIrZ%#sA3jЋG\3qrxh 8z8wc42jr=Wן2hdzFm˫gVͫgW7W>m˫g)92hd``џ~*sf̨+^j+#w3ޞ#Tl˕;\9r<4Wf4a={ ógd`џ}-!f̒~l<#K/3z9pwe汬Y2xџ=_"G̝+l?<+#w/3ӏO\3x{xhV,i 8z߻7ȝl<+#w/3ӏOe xk2g{X 8zA#3^='c3+oq =y{ߛG劸Dݷc}Y _ouuIꑶltuxҞݞHHp$I;qhTnRwN>ȋ'zHOr|3xK͕2cd``k>Pyrx4_f4^gs+O6ȟx~|fQyy,_F ^gʓã2J=he2qZAe2xK͕Cs`Dcџ}3er=g9qgk}c90rbr=+˵e~?{.GvWs \X\9,"3sPYnx4e3^gs sX\9#'3^=U񨫮8d̢8zl5#3^<*k{k{p^μg2<1WȝE믔쁀w=oZDV,m`}uTӚ9 Xlj傀 GCZf9cы<,E> fzTj_όAG/[,qqĕc+Yr=W#yYhV,gRH֫lj傗Vf౬Y.xky=4e>3ax C2Ud``џ~c+Yr=C3Uf.cks1x,E> ^gg_۝zF~My,'E ^gR3rQ{hNe 8z@.Q"xXN 8zkz5!9,sTQz5=xǨOG}^kx^=uu;2^sJľGΈbYuМ9q\CG/9$qQY=4;d0a={<"[/3z?<,D^f| oWY<"[/3z9 +c9#rHr=B{hvla 8rx,gD ^g XΈ\O?>ͣ9#sJ=g9sH20+GsFzF5SW%[W+4e8Sy,D ^g_YG3LfzF:R~}1xO>:xҟ}C7sCmXyr=zhxXO=w00#ţzО:{ncFҳ[xXܽQsǨ#GZz8ГGrY?~xwr3^!hjn31oR)}|[Q#={Ix`cHϒ=G={s3=p^'<^zyvh00#Exy2Σ:/'۱ں]'\{`cȞ{^Qzb fx`7ٞkx^<܏V>a{Ag~W$3^=^ 8z{^ 8z^=nr?Rѫ%ǣ8F 8z޳=1l=Zãz5Qspa?Ϻ4g|v}^{bϫpn5?s]n[9u Kޣs{庒xൺj MYվN_W{pkLsZ=u?wN Y8A}{GE7Gjznҳ?۷?ݯ^~#z_vmg~y{ol~>;}|N~\{Vm}_~<Թvh~IחO=uַL/.OL~љZ.vf^cZ.iokCb>}®{6bnoUvzy.[_ g}y'Wsڻɩ~xҁoyoo/T;}=^Oq] u}eсo;/S;ɼ=Q5?M\>j6ȏ5=n?>f;lgg5S\k|y}ߎ?~ohokGߩ56?xQ}?&~-mU-ji>l~r5{=>q{Ggܯ_?vuOfk7hޣݟ.r~}ӻɱ'M endstream endobj 99 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 102 0 obj << /Length 1907 /Filter /FlateDecode >> stream xڅXK6Q5"%JTnI%]Int8m+c>xQ%I>VAe6.>IUSl2c,IlRN~ӯXi/OPey=9+mTqxF/W<2>$ivYFMᨋ:z/^Ù U^A2"ụ0u˻g]lTN$J0tY(*?7ETgqe0nԏ?j ijhQHBw~'cLȋDR%,Wm̪-̓pa_o`lhy\ m ߫9[M%qu5}LMs]y:\_@Qp kh;Z"zW߿?y2h>cTS&E,hDpo 6B@kUƺԏ>ƣYi!N!Nhqǃ|Q N+%x  Z_YmzFUǤurz.o#wQzIHs f!I1j$&{nmy\R=WMS6g*y8mP^pi,* 6KgU !'fUHEMbM:/}57tY!qٍ̟_(Yth[XD am`G@ OͣrzHyњ9KH00[f:<_HdE*#о\E1k?|xE"7rZĉ!1;١}蝄ɇ3^ $fsVlŔ 1r%X 5ͩ$~20ϣ$`RDRGi' çbgѢo,ffrv]uDe5$!Sb&ʍr=8f"iL_<.˓dHJrD7z]#FX>v76PtZ)ڈ+oJL//,CZp%/Yv_UmQC,C(ERmtk[C2]ވ>cRgevsjȭ:ub%!~^M$6{# | '\x=ZHp`ufa{yغc- M)M7M#ᶴ+p>&.bk,VD;SI d6kυ1L9I8,Iߊ.1#QWK X` Pr豏!6᧦X I1sdJ>#M,1o ~E tc!wI#?ƣlo[,PK,;:2Sldl#N^d>X]vöQ _&8xcis|l󔰒].!t~ɴnb& h6UM̔38@aj$!04 Xbeko"z> /ExtGState << >>/ColorSpace << /sRGB 108 0 R >>>> /Length 88397 /Filter /FlateDecode >> stream xM,ms~Y ז- H$`V  qȈHB{yw^~׿o~?n?_Ͽ_/.oz~z߯_/Oﯿzyzz~ÿ_G~<}_O/o:|ۇ+;XuMp,M7_8__?vv~}K_~=?~c_~Oo?=DٗO챯'SuDocx _/3~q㷎cKߞK|>??XV4=??oOFg_jc_ߟZ;O_oOߟ^~?}?}ⱷW*+xGRvK52׏ǹ:|0v_/q1o$//r*|}M_>[ȑ~z;_KJ~@ ?>k;VIy~|z=V8~<}|αcxW}G}{ɽ;V|yRa%GX|z0c)3KmsRoץv?ӏ=~席^gxx:G}16asNJ֐6zߐpsϔ|{zy̷}2S |z=Vx,c_(v5-c.xs%)Ǜh܏xǍuKbw{>z}zǒ;UH=[+zYv]o>#l=:v o++>^=*oUod?r?~_h5Vd;VIef8;V=gycWYHUNJʚGJ==V|q-oִ{ =V|]Qʀ}} |;8 XPoK5={/zgM#KƻYH.wpִ=;|}ǒf|=}M:v>:n4߼Ե_xXJ=(K]{ǎ}߼䵧jZ)7/uɚGJ=(K]{|q;-\~v!cǑl~ r?z˽j[;cc˗1XbsF n9V8r|~zc8*WaQX'8F ;V0>i|7izgQ DeC lgQ Dej纸K1o豄;e\NdWuM܇c)p>]ܢI\Ǽ$cILDK?f KF/Sܖ_Е=iKU~]C +sE=چk)Z޺sIw1;x|FT=}]LsKCV=/}aڞl|;u v$|ӻq$/[F.FlI =w3'RMru=7 .* n^صF q׼}Mˮ֪}EN5/3k*uWbqYގc{ϩ<_^XVsPް\>Ir{^^=و͝l]ۓiݱjUTk]zﲙQa]zZ^85G{՚5}qL}떉qdbq;NNl\bs Ikڞl>#و['s'}j{;NNld#vwltϝ٪Fl^{]r ws띰j{)F$/Y9GMIrrz#$1a;hm]ݳ8[?wϽfgϫvVɝvĝ1gW䮼w>j`-,dM5 F{@k֠>j`Vܕ qUzq|hjpM5kP.6;[C;+`G|͵E;3V{_d#6S{>&ɝ]vFzڞl-c~V=و,w1ImUNbĖD{_}{8SGL;:'4}nݩ3xFG 6ޝ:g4n݉XQX{̌T#wvhzuZBvk֠jh ?*Q,;t=wت$w+ݱ}_w$ɮp璏(ӽj{2[2s;.qcK{нWmO&qcK{нWmO&sK{еwmO&ݱ%3IнgBLrb$^_9 /lL;ӻ8{ltݼ$vwݰシ$N}|Y?F{䞿g>{3xg Pj`-[ܑG58GFkX<ȹb!2>k`P+<> P ўm2} qQ } qYj*Cd}\99;j`k?uP?%ǹ(J|q0fs;/4ֳZN\;>ɡ;x|Lkd;;ד`d;;ד`d%= \Sc.$>1=ž'8<1aD kjޅęgWJsaOӻؓp{z= VmO&3AIr.쩱rzGSaόUۓI|Դ(==tQQ{;'gVg>{Ƭ9;ٲ3x_1W*OΙ{/?Af59 93xg ̠3Y;g} 93xg ̠3Y;g}x};~5kpMy̪5k@5޾l3kz}wx8>ǚ5Xlד񁡎bv9ڿ7Cz6ɏ7~ьIrR9rz#>1n=ͪ'cܢ{N_=UmO68'[HRWfӻ%Ezڑl'q[LWfӻ--&g]8Κ{$j Rzň/esZqeL& 3,ȹke3+^3䌶gF3䌶gL<5n~Lp~SWykj<M50Fs{ Qj<M58Fs{;>ӜXQLsj`-|fgskՀjC?3qB-a5ycG~1m_ ;xj`Ur<Z)wO3>jXZ>I;3kprfפ2xFG7aCZ54M5~?Zo3gZIOO=_uQ,?_O|;|Okd#vw tϙ'Fl^3uM]ۓ1D=gꞸv$c0{=EWmO6bwǰK}{2ڞl~jnư$9d\9Gc0Fkň#]$9'9_='$䞢+w1bK9']=و.sɸj{W4[nWl#LtOY?>^ ?ﯻx%NNyGS&WIvO1&WIvO1&8FMk]R_!f(1 2r?/׽(1=gޞ'c {N=D%!63W$LlϷӻq$9)-[$if]ؒp{N= WmO6bwxKv{ڞlqIrYrz#x$9,\9GbEvkň/>;o$ݞ+w1HI0dss.F|$9E]9_}v0`3I=WNbωpD鹼ꍘ;YSTNݘhV$<eyOם3M䤽'꫎5Ԥ&1ʼn@ST_,[5&hI_5rd<&}Ag,5G˦hPMێ?{}o7b~GXowso6ڑLp?}lyX1=''OM$5׼9 = FxD~֎d1=''8 :Fx%ɉ]HINp1+IN=WNBLrb5r߳~gUf5 qYwgkw?ydST}j`zW<w֨i~M+g4}8L UÉdEf4x=[o{ܖ/q|PI\k*w1⋯ $4TNbĖAfF|=YPz#:(K2f̚k@<<7:cxFyo6t^xFyo6t^)Yz?ʓ,Yz?B:g4 Fb3>jhM`JZQwoTkynj ߽af]8 `$4TNbW IBQ*w1HrHRR9gIBQ*w1H{$w$)rz#%0IKL.F|u@a䕦]Dl(*21mBǦN M(PM'1ׂhCy>6t^% Ity_E&SHf~LL'IeL~Lq(O&$HR$<D5T6thz>5=6-eFG Џj$ mZ QIC:g4}8~ZNt2革p/|zxcG|{2]_֎d#vw@ݓ'螜W=وEd&Fl(OmumO6bs?E-&Ij2˜ň# Zl1IWY.FIN`I*w1$^Mfӻq$9AK-$)*2ň# Zl1IWY.FlIPtOjڪڞlW8I*w1H}ϿG74$yirz#sr4MluRcĖE$$MZY?>jT#hSg: )OѦ5O4z>C!I:y{Ϥ!(:Z2xFG j$lIzҚ5Xh֪nyXBom>?rǒǗ^=و͝0b"2.NlT=و0Dd&F!'59UmO6bw =٨ɩj{;;EC]ۓܯ$4 UNbđ6&Iiň#gC$4 UNbZ ӄS=وhAb"]ؒZ ӄS=و B䒦F@IKZ*w1bhA$搪F|"A&&ꍘY(MfNݘ>a $lޏ/$lޏ/^*ʓ٦z?j$l ^wXkzm~ʌ_ZfUzzԪ)=DZf ꝀC7냀p8X^T-t/)ڞLp?EI18Y;IX=9)$Kbw?=B$rz{@݋IX'8{rFSHd rOvhڞL<' %Ih ޅĞ@b"$>OR䌦]H}`!䌦$>Ow9BI3B*w!q~NK(I2IK.$'0JIK'>$>&KȦ̚1yF6t^gA'idJ~Fu!}LM+}93u;۬Sw<شx>Q,<شX=و͝ŮF1cIwŢl{fhd#vw #ݓ /'|Y=و}sz#$)Ifh.F|E$ɴrz#$NIL[+w1HrLی[9GdlEb]ؒ[ی[=و?$I͸ӻ {iskd#W $ɥMӻq޾xeLQS_j|j- NǗLoT,^ #}ۖp{rlSn24t p/-ڞlp{rlSn֎d#vw+ݓcr'\۔[=وJئܪFlx$űEӻq$9{W&Im͜ň# 2IrlSn.F|\$9)rz#s㉓$ɱMӻsBpEآ]8q@.$6gbB.$6WNbyN~̑b&I>nzň- !ɼMUۓ8 -/z#:*K̚k@t1k>c;ޟ&WIo\>; ߕ^1IVX.FINO$5UNbW PI̚*w1Hr+uNbĖxEfF}I*w1Hr!$iYrz#$?gF$m5UNbđhXsz#:!^1IVX.FI^>}ϿG~I*w1|v~@1&I2knň3ɏ $eMmӻ%W99{8SG*$9mY$9mޏ/^DJʓɪz?|~@Jʓɪz?wi>\o;J%۟tڞl;p璏OWmO6bw=9kG)vz2Ihsj3L {egd#6w""܋''qw3$3sF#>tOblڞl "2Icd.F}،X=وϳI;w1Hr#$6#fbđA$)rz#zN}L،X9Gߟ#IWY&I lFň/>;CDi^,Lj9qG,ɕ;3kbz#6Td͒3*Of>3Py7Kv^XoM=_<+ocxOy6v^g=$m>ޏ/?_`CIV,yG3dŝ+czϐ U#Yqde=H|<xO56 ~w}ݹOSZ3\"ǎ~ϟ7{RZ3\d#6wb܋ҊẶ'N&ݱ"H6bw=j{$ɀMӻq$$ɋMӻsB@DŢ]8A$$[6yVNbĖHŦɪF}T&Ilň#ɉ΀I&Ilň#ɉ{gI$),ň3&$ٲɳrz#&$ٲɳrz#$/oW X$ٲɳrz#$?($I͝ӻqNN}E"JSeSgGFL}#Tֻͧ1}>OT5*O{I<ɟO;cz#Tͧ3>o2Oӕ1řG<ɟO;czȐL3xF_ĐʓLz?93xFGg <Ŕ9W^3R5)7svhTd͜3>j>j|F%<7fFG_偟KUM{7cyXIt/lMŒrOlڞLbwpTI1@+w!qyܓ*'t/,RڞL</$ 6)fBLrS*IrcSe.$$'M{$76UVNBx{`bdg'?&),Rޅę$ɂM3ؓ|W=ėtJ|W9 /$rz99tWI= l6e7 t6y6u^gA\S# lZgzE%MMs}9A3)Z[4z?snAg'im\~Fu/&M$M~)$7y6u^gWgORI ܔygwO(pQ>))2D_~@'qe~F98Ho$m2Lzx)~?}}{c{ x,*tOlڞlie"]8S %$a6VNbđ)$ rz#$'?$iYrz#$?*'$6VNb IFU;w1HrL\[9@U&IrmňNQI\k+w1⋯X*$6VNbđ]iQ{|QS_|f&vonLyN\Iޤy_|'Ixr~Lz'U$Mʝ1Ce"E+csAʓ$Iz?8Q|'Ixr~Lq*O&fU#vogU"E+cz4I~;g4}8N ᄾ ;3Yv?|Eś\>;}<=0kG)2Iac.FINn%!$6=VNbđ~L,٤Y9_|vHR,Y9Gxdd&]ؒ|X=وGd&ªFgS!I+w1bKBp{q\Q^d#>We並]8$qMyӻq3 I*w1Lo ܘ$9)rz#$"17uu6~^_0fWɒT-f/j)OR٦>]P$mjޏR$Mb3>z>sdj[<*7jGFoҪFgK*5=MZ7auk֠>j~zX- rg_dZ;A:j@o5xR8cGy?YyE]ۓ݁tOoNڑl{uwd#vw 2ݓ'{܌\=و_>e"]ؒ{܌#و ef]8 V&Ibnň#;L<]9g?$Eӝӻq$9q$Iә3q&9$ٻrz#$?S ff]8$IӻgG܍(eG?zsw|`cHV,;Iw 7ݓqӝG;N({1rt9ptOFnڞl~<$O7mWNbđ=x&In2ň6${7WNbđ#IqzQ|.FI߯g]ؒd^=و?Q fd&]8_$Mӻq$9m$).2ň3Ld^9sg{$ٻɼrz#$ٻɼrz#$'2PI+w1b947wTo_+bwI߬iG3? vWd1W]y7w^bwI߬y_}S,X~Lq+Or\z?$g:x$ofά=vj$n qn?v$n^}ɵ'9wsp~Fu&*Oq}9N7 ONi%IlBňOݓ'qy^$6!VNbđsz#ssj1I2`b.FIN|$ɀMӻs@dŦ]8_'g$-6KVNb!4)6IvToϋRi)7svZ9q <ɔ9;cW:1$Snޏ-P57GvhyGޏ3%I*w1Lr/*I]^.FI~>ᐤxsz#$yrz#$yrz#$2I]^.FINv5$5UNbęofffꍘ:Ӝc4I} ;wcgQ$m*ޏ/EyʓԷz?<_HIy_9't3j~Lqs2O1bԕ1CTdͨ71}9s̩<ɠQ;cӣSyA7v^SyA7v^X)^]-bxo!F½KSH'U6sVmO6bs?-[ '$6VNbđWV$]9r2Ihi.FlIp/,ڞl 6F2IRe3g.FIN|^df]8 R`$$U6sVNbđwLTY9Gl Db]ؒ 鞤Y=و{@C&IRlňOݓ 'WaI +w1Lr`BDiFlވ-(O6vOh%Q$m*ޏ3ʓԷz?Ir:g4kȍy魼ޏ/~"7IۤyG3$rS$Mz1PdFlYpO̗3/y1$mޏgpj$m yE=;pʓLz?x1O1b1}[ z>3S8n~L=T#kYeoq.q_f4x{!5);5oN YzAxz~X2U:#|yϒTM\Uۓ Qp/*ڞl{2UWd#vw@ݓ'LU=وO*I2UW.FIN! I:w1bKB{WYd#>OI*w1bEd&F}JtV9[܋κ'q.&Ij:ň󌟾$_Mgӻsb䯦]8JlV9gӿQҚ:7bN1$mލ/voʓz>;{'O&Sd͆1}pRy6v^ FbÕ3>jT#oagߧXugf4~NG*Wk\JIJy{TE"Wh*TM!2>jY)3xFG |T55VZ5SX+psgw~?ͤMʣX>+_{2ikd;1E͔I\p=YI.KbwrI*w!'!k{2BrL\W9 3L\W9 + @I*w!q<3'5UmO&qyigHRV$9 3F$jMrӻؓtV={2UWd;IIPUۓI74uy7nQ9^iILy_}q'g3Q~F*,QdDI<r k,Y<E5c6t8;x<G5FY3xgfR3>j𛮬<6eq^?MMTIl\>+m)&&eXp?K>io[$8atO&kbڞLpX=9)j{2ݝ`⬢$v ?UI2gt!q&9A+&Ij ޅė I*w!q<+'g5UmO&qyⷖ8(szgb䬦]HIN" Iɚ*w!s`c䷦]HIltO~kڞLg\d(Mz9*K&̚;Tyij:n(ǎƝ5c;.d#6w܋丄;~w*IQSrLq$5$QMYӻsBpB⨢]9!81IrTSV.FIN%J%Ijʪň- QMYUۓCtO6jrڞlq;aI:w1Ls 1IQS.FIN|0$FMNӻq$9JՔU9[ݓ'qӿQ:7b81$mfލ/$?mޏ/*Kʓz?x /)O뇼k8y6_u^XiM5K3xFG#偻gq]XNHO3TS:#~`'%tKC&'C5aeH6bw,c;-~d#vw`ݓɪ'$՜U=وH8sz#$!'5;eH6w!CLtT9G٘$I9rz#$'$I]dӻq>;!IQW1Y.F|!f1IRW3Y.F|!f1IRW3Y.F|f1IRW3Y.FIN $5UNbωx Q :1<+Ro$mvˬً/^kbʓl٭z?)Of+Sdn1+Xyޏ-XL56Uh ۔'9ns^~L=T#l[g#)Ofs@ncy+czm92DFG GS ,Y23>jޞj`-ܻSQT ܚWV 1qL<};1EŔ]ۓ݁tOjlڞlL{Rc3ed#vw`"ݓ)'$؜X=و]E$)j,ň#LLY9[ݓ'tW=و,e$5UNbđ]E$)+ň- IlsUۓ8<]P $5UNbyΝ@4&Ibkň>4&I^kň/>;b3DiVkވ/$mލ/bDfʓIz?x)O&$2S$Mr1CcE}+c;sSAd#vw tϹj{{`HRsQA.FlI8=gv$cx{=WmO68'x>TP9GӿRIro*ň/8#IEӻsB(`d&]ؒpЧ{MUۓ8<1cg *w1b;sIj{g?!JO5wRcĖEs2ߓ{|$<9ɽz?1]FN{ Qj'M yj^.Yyrv~L`ȩxO͝3s)Xyr*Ss~Ly.'ޟN̬QWhY5rveX)`OQUTky{{C:j@5Tkz|L R Yzq@.0Xo;݁tOhI8܁tOhڞLp6=)j{2ݝb$w`ݓ"1'OqI"1*w!q&9B&IhƨޅqƁtO2hnڞLbwx'8Y($I ӻI`$]H|$)rzs{rASCd ]Í:+`W7tO8$lb课zD ʓz?~~@ ʓz?a!Y(O&Y(O&>\+m-wt)gb wc9sJj{2c9sJj{2ݝc9kJk{2 Iry?sFg_83IN=WNBLrΈD~.$`g *w!sB4@"]HINQ$]HI8=f$wtω$γxZ$f]H| JsBaD'>$,dIؼY_?7Iؼy_}Ո'ybF~F(~PF1b3>)&Pd7}9_5r\<fwY~3>kwp<G5Qxbe]5=G6Ohg.Z#'VC5Sky'PT3x~ܦ̀sׂ E-\>;8Yw-\%!vwݓ+'_OJ R9G\@b]ؒ\Q=و/q$94WTNb'' 4+TmO6]agf]8 HR4P9[tOhVڞl{@&Irhňq$94WTNb~1=YIj{fyl߳p.$49ɿz7x$<9ɿz?gӹj䴾M9$<9ɿz?pgz?skWM 1BP$M1I_yrd@iP #3>j&T#bGg݌<6dFG Єj$]lHZ5jp-'M8N_|](qxG|jfZ>I:3>j]Z>IZkՀgaǷ+ij}k.bx숿'?{M=%)vwtωѪFSdϘUۓܯ|Iryrz#$?BpENkvň/LiϮ3sqIr:ٵrz#zN02IN=VNbĖ#&syj{KYhWl#̖YsϢY?>j`T5,<Eqϗ3>j`^T|k`BQXD<&ȉeO43AIJ'>z5fePT#'=t8 E5rbMgdK5O]{jʌdK5>MSG5kpM~3k|,ﭽܷ?ZB||k.w%Dˋ:%s,{MI5CՄ%!wEt)g$wEt)g$w:tɧ碪$w/tig$vw/pif$v Z)IN>=eBLrS+%)g]H|`bzުޅė F(&ɉ]HI4?g9ל,9w,f/z5)Oh{c&S <,ȹke3>jpb\2xg Ysמ*Cd}9w3xg Ysמ:g} 52Ugc9DZf 񽼩ct&F3ROPUۓ1=g'| #PN[\2 đ~Ijysz#xN80IN<=UNbĖc sj{_=[$q*w1gP.FlI4痞o3uT 9쉥xBG L ɞX:g4WeO71}iE5rzMgVX5ݬ QӊjM50IFN{8>AX^kd'95kPo5-_ӷk.}L[pJMG;[tǒ?Wʽj{;R3MML\bwǘBZzڑl19LS=و K>ާ51E;SPd#6w+p٥&F@HO+Y;OV$gl*w1Hrb$9dS9BGzZڞl=԰=ۈ/>R%=dWM4ʓΞ:c8RT#=th)E5rjSMg X&=qT5kP5yj`-TM50FN-{gB:j@5kp-M6w r_XY kݻf.NcC{Ͻ{WmO6bwdžLܟ{ڞl ?]=و2sݻj{;7d\wd#6+0IϽ{WNbđގ Irݻrz#3 ?]=و1swj{v3w܍F v3m~3>j`7S<^5{͌1Yvеî Q;jwM5cF{]Z51U#wнvhz2Xkz g:5kPo5H_7~}8Q,ӷvlopݮi; n{!tyه{Gn%)vw\WWmO6bwǥye~d#vw\WWmO6bs^k:6.!53v ]c*3>j`P5<v ]c*3kp`5֮2xFG U*Cd4}.k]XQj䮱wM5xߝ5kW}wǚ5+^o[CP踯pXߗtl;G+UۓQw ;ڵ"؈=޵'8܏H/ծE c)Chs_]j{2{KkUmOFq?6q}w(N64+U=H#=UX܏~ j<(j`MRl'yPǚ5g_SkzNwY <YMo5݇?#~s˷2S~^;RW1c ws%+.O%Q;MgԎҵ=وsj{;.tϫz_sG;.tkz_' {8SG\U!j <ުW} QWoȫwhj|_;g4 7 jqYz7k|]5kP#\DkJ_q0(ǎK:\D^הtmO6bwEyM+N֎d#vw̰tǒkẞE;.Qt+V_Ϫ'Ebj{OU]κgq$VkY|nF^Gu&eZQ ȾthzLZPpxG+P{OZpDwVthc;t?F+Œ;.tG_]%!6w^0^׏tmO6bwǛwh;ϪFlz}^׬ެX^G?z !/½^W_Ǘݱ㕻^}l݇X^=و/(_}^MWWgqc?p~ug>{ ~\Ӯj`q/T #T#!UDZp5p?U=ߖr?rwIpc)Cx[н%ڞLp?r[!,~ݝ)k_2ǒ Np*d31oM _|3>k%g^(/%㭮wgL\tWgFLg2g>G 5ȳr>ZQ&N ᯄLfF{ \CUkzq_V3驁<ϜZ5:=}Չ ^pG|8}y5}?:MX,*wKxKCl^k8Ɏc{ ^AXkzkmVf ,=~O>xs(_C/OX ikphc+5=sk8֬A}8}4?Gz{q-_J<0)q_k~w͎bv|%>> _IoW/W?tcG}pw(c^~x;!ۿ^|?7A_z}2~8{][&9o?:fZ)@/ F8(& @(A5qVyv_Z_5|Qɯkk@,xO֐?_! 425d! _n~~_]ڰ_u׿ᷯ,?o|?҇6>8;_/9}LΪAדv$k,ZF"y,M_$YcTt}rǯyj_-k~?~=T>yޯ[~\Ǐb_f>|=zrˇ?}߳~_+}>49?vrӵ^n_-t|f6zq_o^=kxvoFX ޯxyO>o9fޟc -sFxy\{~󢔚=a?ޮ^-l]Þ2ј} +1غ}y'_>ffyla^bzaV^庳O<[16a~]s[l]Þ<{]Lg%P|ޭ8nOgޟݯ둉vrg%3* I6bEϮG&Eóu {jkg$}5h3tf_w!l]C̾.ٺ/A流rr}_u {u{v=qV9Þ2:И]{MFׁ̳Yޔl2k؟_Ϝ6[װg/1Ͼ0pvŌsV_gޟ8Nװ?և9+nkسXf_w`̾#l]C̾2`v}ʼ)وyz'{SփN)d#zQ%׺}"uI6b}} D`vd#W_Mf_-!f_b߳װ/;/5? 9Wװ'[װ_b~]^՜Alӯ ӯ!&QL$61\qݤu zI b~]Ę^՜Alӯӯ!&QP$6M0baz3hu7du 1-M=)Xj t3b-6,3hՉ5 5ئ__CLp͜AlӯNӯ!&X7sN}ۘ= =yRM?=~6Fkߗ_: ]brXXu!ŒEݰa7{NYMz{'E߸n~r7,fzO !7Boqrٗ,j9h9%EBnNB׍XV<'\-zh [;|ira1,hKBn$BX<',jY.SyNZTJ,jKnwڷ?? qi^^@җ؛5~Yxz;۵ã:1%Hz{<?1<7{ãr?e̸4䚀[}OP 2\<g$x=z53pFҳG?rjn庣I/Cו\w<g$x:]Wr QkC׫\<g$x£Ƙ\35#ţ@x蚘kg'cg!=k O"z^gZs2OG~DEW\'?#gqy^r=ך٫z8}*hߚ}zF~ Eq\tOF8գzZxh=gWi=n3^={8zCz1nҳǶi]Ǹx}z6<^V5.kWWߣ7q=5~/Ywa}[u;b ғo=CR}[u3^ ڷe_g$#OG{=/C{Qtȣ=^!yr=??u_\fh$#ţ?xh?g`3=k_g(xgQ㞣']Xg{ۣXP{~Ɗ5?OkYl1XI=zssZkzf cͳ᡽s֞3=m뇣_ W<;goykj>;pxT_3pFҟ;чG^Ǡj>;pA9{kI/5@ȣs֞!1y>r=<;=bz#/C=8hO=zHh>;pIzy>r=W[{Hz^=w:2pFҋG9{kI/+C{=g$xaxspf$xT?ϳ Ϡۣ=0F2f$xxt<g$+\mO[tR G1ٿkFҋG3pFҋG8{gI߶GHz9?o+wyhzH/y6x{a8{g~׽0hozH/D8{gIz뾹X}vzH5w ϶ Q=-<XlQzf8#٣aG{o?Ÿ=Z/2'xHz9v;=k^+<'x^y!{}}>hߟ\ybQFH\O{c<y9LedI/PFH QLedI/PFH Q:C8'9E3=^^όKϛYq| q'K8%8&2pFKG&r=<;LT <4\OON1 >\OQI>\nށOgx($yHzU1`Kӌgf0  QLed0I/G1sbrf$={_o;wQ=Gn k|߆ X1X22pFҋG!<%-d$xC/3pFҋG1<<g$xC9-93pFғ y"/Czɳ`pȣLgyK+Ced>x!2]2zH/y6zf8QK\%uc`2x(%YHc\=]ƘcX|Y^zUedϏF}7HP3^= PLVq{^9o[gƥ鿁wVH fz8k ҋG%<7G=g$x_Cy3y3pFҳGӃG{ad^Hz(2m2gRx(&zHz(.rjrg'>ySc=/Czɳyiy#/CӼ<ʿǞ!]QM>\%#rzH/y6fcQVN\n6nc`I/5Vq(+'K{^Rs.<=g$ԼŻȣ|yywݛ5N+<ʿǞ!i<ƿǑ!9ڼ<ʿǞ!)Ec>ڼ<ʿǞ!׼<ʿǞ!׼y#/C>y=/CzͳNu(+'K{^4CY9Y3pFҋG1<=g$={4rtdbcx(+'K{HzXvǣƘy?y]3^<>{9 ¨;dXZ(K:I%£ãQl ediIa,8#ţҖA2^<ᡬ,8#ţҞ3y=/CSl<Ҟ!y\y#/C<ݖW!?gbnQOF\ nI5?*j|ygGnm<ݑ!9<ݖW!)FntMjFn<ݞ!iOy#/Czsy-C59y=/Cz?G<r=5y=1G㙘'82HFҋG0<3piQQ^8-M1!I~>>q(%y^ϯ:QK\Oq(%z^1(%z^nv3^j]d(%y^gG-r=<;,ZXy]m=/CzɳYy]m=/CzͳbclyҟfUQvM\ugu|bQvM\s-VEed[Ο?VQ<ʮɶ!\ys#/Cz;#Wy<ʹ!\<ʹ!=I͵PM RλZQM\Ocy1hVkg?͚UG5r=?<8# .VEed[knVmc`I/ŪPvM Q|[kgHzP13pF .~ OFؾ{{5Xu<]m-d={<ʮɶּsr(c&z^ggQL\RL c`G| ?'hzF| #'rerm'1X.Xx|QmE[;׻^J-kggf0v Q UIO''kzH/5C53pFK/<ʮɶ!abclyK-VEed[^-E`^prq-(&{^ys=/Cz?X y#/CzX <̞!wȣLyҟȣLyk]޹W~x^ȣk QKG1LJudg?3Ҽ|<-g{4׷q~>`{ۣQ edt}1r=<F} r=<=r=<V<('{^{s?s|Nyҟ?3xyKgȣ zHz>3gLr=??3gLr=?>^yA>S\O{~yB<\鹇ggL3pFҟyA>S\O~F< )x^ >3g S\:=3g != )xHzggL3pFғPAy^^X}uY]y>y~+>?*POޯ `ҋG;<#gz,&edx G{L|('{^gg7G=r=<L'2z2zFɑ=>r=<;nɣy=/3z'O}^)㡌 8ߺ#1z0|zFoy0yѓ-3z?a1QFO\(rGo5o|aqQN.\jq6wG^gr CY:Y2Hk;y(K'k{^gbɣ,yΓGY:Yr=<;,y#/3ޣ8{(w'[^gr;tg?'tzFoy}'tzF/Ǡxϑ3^=qeW|y_^=;w?]3|m|޼KFU<_]qF^ edTI5o}ɣ yKz(&z^gc]kDedTω0 R'<ʕɝ!\ledII/5 <ʕɝ!slDN^lp`qd1 \5G"rerzH9G4r=EY׀fNx(&zHuyAQ=/Czɳwđ45r=c edTI5s"2h2zH7s"2h2zH/Ǡʠɨ3O;jlzH57Cy5y3pFҋxs0'b ҳGOOyI8Q\ z5G٣Y=]m#g$xC52HFҋG'ys=/CzfU562pFҋGGG{ad[ۣQ ed[I/\q ~f\'WϓZ\ܩl1\%T<ʊɒ!yZl<ʊɒ!'bzH/yv޽"bzHz ;bdzHz GY1Yr=<}GY1Yr=<Yl<ʊɒ!GY1Yr=޷WwF^{s$(W&wz^{s$(W&wz^f7GC23pFҟ͑ȣ\yKǸ23r=?i#G2r=?+#G2r=<;\Z<ʕɝ!=_3͑PL Tۣ=qf$xC53pFҋ;Qc̱x{al1G|8#O=QK>\%*<!Zּ<ɇ! QK>\OfCQVL\QcIͪ56r=?=nxy1F1wZ3pF ׾]Opnr-lyC9793pFҳGsm{GHz(rnrebUx(&zHz(hg'wȣg#g$l1&׻bl޻C73pыGg{cW=x(%*b gwȣ,ykņPVL qZ}ٰ+KF^g+(+&Kz^ggR*6DedI^Ή=x(%z8zygG/r=͗x3x4r=?/Gy3yJ=sʐɘ33"2d2zF53"2d2zFyvحoF^grN4_Cy3y2HKQL\lw<ʛɣKx(o&z8zhlGŗPL qQ| \r NK[g{ϓZRxs0k&+jFҳGsY{+b'Y(o%)a<<;,Ced7x!YzH:Y[zH/yɣly5,ed7I/WPJ _w_!VzH/yv]c<yK_!VzH/y9y͒Gࡼ<8#ɣ2HFҟG=/Czͳ Ճ#ٳ{^r ٳ{Hz='=2pFҋG G{HzwA1W£ga{QzXx|{cݖY^cx==ͣwIa{Ϗq9GJ{$(CaWx($x8z(2I2gWbx($x8zhic`G{={1($x^ggAG$r=cP\G PvH q_wgD^gǹy3CUDߟ\6k|~緇]lq{^=χ3^=χ3^=χ3=zbc y[?4 2B2zFyLedx? DzF5G#r=al8#w%ȣyҟQIN\KC"3pFҋG<'<g$|y'"/C](/$Ox^| 燇2@2g?>ȣ~I/uSGed^j3=o Q99h1Gţbxh}e}rk K_W)Ka=ߟ'C/{CI/C{ =g$={tE8#ţ7xh?g'z=/{C^j^eo8#ţ7xh?gGUy0r=?="Gz^B>1H^Dȣ=e!=CC{9=g$={tSF8#ţzHxhO=g?=D)\!=e3^k{Hў2{Nk=32pFҋGО2{NIz.u<fyҟ~<5/k=cP/<~3pFҳGapˑ3^y;r=??vk\OOȣ}mW!>y;r=k{SxhgM᡽j3=7mU Q)(GC{}<gzT/m qk=ȣ}PI\}<>3pыG=a}PI3^=A'y8ze8 A'y^gZs=>($G/A'E8ze8գƘ{4գƘ3pѫG=oG1G=デgǜWmג3Ҽ|g|=c7^~~=9;Q5nҋGVaVbaz"gzTo qQ<3pѫG@О({&GC{<g={ y/˾r=??Շ!eٷy^grv˲o qǠ{c=\x1y~J=c<~3pѫGl.{<GճC{<gxtE8գz6xh=eW=\x3^=Wi1<^<'dߟ'*/IOWEHz~ _e8#cy]Eȣ}RQګa<</B퓲\OOE"/Cz>'ׁ>yHcнhzH| /B퓲\T}7 K{X?Nd_L;3\^yr=ׁ>yHz^do8#٣{'zI/ՇC[ֳ^cx=iKog_Qh={skόK;x}k|r=GcmcNv<z Nv I/C{썴guz"g$xT}7 QϦQc[_Q=($I˴6DHzA탲OR5FU}h}zH/ǠzxhogeࡽM>38wy>)r=?=#!LSY^| A'yHze8#٣{%z0Gţ=Y'iFҋG=>(zF5Gţ9Ƙ{4#7~^zϓ: hHz58#٣58I/C\=Zskpў3=J{'+q{^zu]?3. `uc{ϓ~q{^aה5&֠7ȣN:7{"]r z-u,׹b>lqc[aXs3BoE:8#q[Xs3BoE:8#q[Xs3Bk[b z5& ]jL<51z8xsTOٰ(={t=9'u\=׸=Z/uo~?{<53z 5Vx,zkf<k3pыGA!h^c=Gck^zx<^Fa,id[)zX1s"f$={}=9> y6|}_7~_{?>| ~O{~q?P{X9j{ oW ?_~]<` YrJ! є@,x{vkȂe~` Ye=kHv׿.z__W6~zyݖ?u>NGƇHJ~wӵg_6>>g|qে/Ϗ%>!Ukxښ_Ͽw|?޿-糘z _|>5,ǣ#5£z _;nrzXG?z CI25c]{l5Ͽ=M%ٯٯ>J~hmsǒ5װ?lb5j6[a^bgLx}Ǯz`~qgyBŵg[Y^{?_+5gxvyv|uf5|}vW[H@Vt} |jg5|}v_*c^|(0j5Kly~ y8n=엘_fazފg5KP~dq$z 5%u(_>2qޟwz _݁58n[l={mzPg%1gCѳI35Kl_WfgTl6Aٯ>]H[fĜZjzXZc65{ r霻Vm={m$vlĜNҞ8=Pkسز.O\"] J#e{5g]o3uiv취ݒI쳿.ŭٗ7I쳿n3ٗ7I쳿3u篥J/o$f.}^w|]={]jKl_[.z ߮w -~Voתfs69[a^b^ggs=Kl_Zqby#وm@kv;qV,o$1g^YZf5K/ x"jXb9+ޟg5|}vğqF6k}_(3_Þ6uP|sP53F=Z_C}̾lĜ={ hd#ٯ LWFzqy#وmvոlĜ.ݯ}5Rٯa^bՖP>׺%~MrٯH[fĜ'T^nt'#mώ﹚gawg/~]ݮNC~mv5ǵlĜ.ߞݯ}oo$~]ݮݛFl_f9d#ٯWFWٯ>PI,و9{zvW;Fs롆fazl1l={mWhfk؟|=ow%_0~ gfzMjK^;|?հ>?_k]KgзD>UQoa^bhv}jjKl_nwO-o$~z4݉>lĜn==߉}j{#وmvhz5%쵮5>׺%~jеl6bhk_MfZ ms_߂Va)>~}?IlJF MO_Þz:m=%zW6G4WaOQL,kvEnwjxM]Ú.9IE5mhD_Þ7X4Wo鯡&!MM5uvKh5/O_7IM5=L {ÞېRܳ9IW'P\:1m%^_ݕ=S/sFxMuzj$^\aOX=:7j_u=~z65ߗxɟc}yS,|]ec'`BjƢ=ׅk|Y [~N/ioq PeQ7nY<;J}nu3H/oq Peb_XXs`9%J,jL(BvҲ0nqc㞃+_^PeQK,|l'`BɗE-Ke*V %_4—X^؀5Ko[Xg\߿Vo׷ܻƣnqޮ}EX7Wk($xFX\^x5n֛G7\vfݹ硻I>Ay|de=[Tˇrz1=zMd`Fͣ}h7y@cy}glu;߬5n֛Gʼ yԽQ~{ h(==}S_$Ob{ۣӟ/θ4׆\kS/{~ˣ\yk`G`}g{;ˣƚx];3+$8zȣƚޛcg`ѻG=ːG5Gwz"kz~"Go#7:Qz~}x|]׸=J=Yﯿa^w.xxߖ}ˣTOyV=`e=г}[u+eMyo˾nzw?5cg`Fqۣ=G?G=ǕGۣQLQcy7Zcy;@VﳳyY<'ه 1Zy>|e=П;곣zs;3Bo5aꕕ{w^1Zy>|e=[;,Y=xO=z??݃wՓGyY;@o5W,z^Y;go30#^=Vud`FͣzeyxЛG=G5=#Q:2B{}x}t;/J=w;/X{w^;zz9=<Ξ|eЛG>:읁7q;3BowfΏ9yG_eYnÑ@y{^Xy7yz?u/<gyNt/,w{X}t;/끞5w>;20#Q=<lۣQ=<xg`Fϰۣ=ٟj7:읁Gz쁽ָ=Z[w^q^Yywze=1^Y;go30#^=Vud`Fm|/[ywze=Пw++[Lzsw^Yywze=ꕕ{w^뾺>;z?=^݃+ٳLxz??+;/z^yOyYv>20#Q=<'Ϟ}g`FOϻוw^yxz?'Wv^=ω~=9W7<#Q 䍝7y8O$o y3wyXsi<#hFi,4Y7Vі= Hިh5>?s<.~䍝GoX_' ;\U}xߟ\=w%ʳz??㌐ O18#$C켬SL<;/끞L?`g`Fѽ{{^>zПwWyY䂝@ !be=П<y6b`ЛG1<!vf< ጐ 30#QL gd7]xXssS<#xsqs;Ҽ|?9۷ƯCXs3 z(~TVˣhi:B[GͣxE/7;3Bw>|-+^Q䛝@oyOJY|yY<'W|2XF;Pl<:B;/)sQrz<%}W!q.JnyY~npCqPY\yYOs8%7Vfmᬓ,30#ǠFyuv^97(Oz?=w'he=П?;|ym3M2П0g1M0Oe=П0L̳OfqIyY}A8$Sk,\&4`P=>?x\L4HP;3=.&gdGo+X| cyb㬓,{یNoE6Y'Yhe=W%&20bp&IfY,}aW&KzF5_ 2$,;3kk8$켬gVs<Df|+%fzF f8$ gAqIyYϏ6Y'Yhe=?fmgNPe=??6Y'YhzF>LgdM䦝~]_7Xb PLʳ*+P4EM+e9Q4yv^3zbpJqq z79ȁqqqz_9x5{<N<Jgey~'7Gw!y_y3ytg`FͣRΛɣ;3Bo; 3'zF iy#3BoťpNMz(.sjr*sjrzXyw^=fcy8+'K |ʳX9X:Ys<wfkŻ|z 꿏λqM>yYxWyw^9ڼyG^iU㝗@zmU㝗@5*oz?]w7xe=П)Ɲgrte=[T'rzl,gd靁7bcy8+'K yY9Yzg`Fl#3Bo׻qa7k}x ǒucK㼟?n(6r!yY9Yzg`FͣX;3BOfX,z(6r`7bcy8+'K =_q+V<݂"/u㜗Oq8%zsXyw^=l30#Vunv@oy6u8%z?7XXMyݒv^6)[z?>Ք-ne=[9[?wĝg[]e=Au㜗}:qKyY5-ng`FͣKck;3Bz:z?o5)Xz??_<Oי/qK^yY{_qK^yYPWY<yYk8%zS_뿟o}CwŹ@z}5*snrz\+o{/U@75*snrz1hVmŮ?͚U5ve=[şpM^z_*kzUl30#hVmŮ7z+~za7kʼnǹ1rzF| 'scrzF}qnLyYo<wf:'n|gb?Y,yYpK[,~Y0Yqe=_yn~Y0Yqe=_M_7yw^38Qy7WF^38q87&WVb㌙ {'3f2zFobpLq<HY\lc)xw5o)cq5K\z}ra]lп-kЛG<]mwf͟x4x520#8y~}W[<;/)^V띗@ogvxe=П㬝,O㬝,O8k'Lz7n<;(Vgd@ڏ5[w⑗@7[+vzgOܼ,띁￳<;/j.^sӣˣǚ=#ƉŎO4,<(<#/Aq>L~\y=ύR*az9ڌ'gdxǙ/pe=Пxg1_0ae=}߁.Sgd•ꁞDsۦnk=`qN}Wk<_Su딇[(yy,ymg`Fq7gXZe=[y8%Sx/yXs;Fy =={ø5Shy|8Xsw30#q[?QcQ5G}WXk,y£ǚǹ420#lJbImq{~?3.?G_@Z`g`Fͣ^`g`FѬ݃#3BopO^_,#QL-gdɿ;yǓw^\L-gd0z1uY yYy_@kz%Aͣß%䳆7]#3Bkvqz}Qh/?5.ͣ[@cy< 30#8>AY<yYlO8'Lzsl`e=[(?;/끞L|{, |ŋ>e={=Pgd@oy|X^yw^98'Lz?gyG^jWgd@oy{ZlO~`e=?@yA>SyYS3γ3z?=3|O@yA>SyYǫ(?3g ;/ zgc=3g ?+3|O~F< )켬Sǟ3ӘRS.g z9c=3g 7zF fV==cE'q~_<>?e6|~}O@ۯx\z}x?{;}qO_yѯ<7O\>yw^3z3z2}8'Lgg1z0|e=_3^L>yѓW^gvNgswr_w.Ξ<;/s \=yw^3z;X,qk-;Ogdy8K'kLgk}qNyYz/v<;/qQ<#/]3,2XΓY:Y{e=<0yw^3z?qw8yg`ћG<?KһN~<qMFyY}=yAQw^󞺘SyAQw^őpLz'Wŕ@Ϛ ᬘ,30#Vwǹ2se=[;#ǹ2se=[;8Ry+;w^VyWwF^iTgdԝ@yn/Tgdԝ@|94ue=Sq^MyY~γx5x6Oͧ㼚<4s4ug`FO׽fNqMFyY{;4ue=4sb`П͜ OfNqMFyYv 9 30#|<Ϋɳ;/끞57Лqa<yWYk<|GqXwƥyc9ǒk<_[+;m5.ͣ8RΕɝ;3BOX\z(6b]8+&KzxOɇ;3Bo5]qK>yYTWŊ@oyg-6Tgdɝ@yn[ӓY1Yre=Py%w^*6Tgdɝ@z ;b`z<}Y1Yre=[;Yl<Ίɒ;/Y1Yre=Wy+;w^yWwF^<Εɝ;/끞kvs<+;wftlTΝ@=\ܹO{γ23OHqLyYG*serz5)Ν7z*kqgͪ5620#qqQlض k{ۣƌN\X&^y5vg`FͣXUήɶ;3BOfXlz(Vk`o5ve=[;\Z\<ι;/k\s8&Lzsk;z< Vw㜛}G<ι;/x*snrzUٝ@oyTyWgw^ŧ㼚<y4s4ug`F;VyF^=knserПw͑\ܹ=ύŜ Gù2sg`FOγ23=w\ܹy ᬘ,30#A8+&KPy%w^Úņgbde=П͆㬘,y6/pg`FͣxOɇ;3BoNU5ddP==)c1f0hd`Fy;3=.G{O8+zF+O|bl9Z>;3=~7W'w;x<.yGcqupd b÷[$K:j<[p`aylVL=k\қG<%wf< ᬘ,30#h6lŊ߹<Ίɒ;/y^l<Ίɒ;/y\l<Ίɒ;/qVLyY? ,b\y8& 8z(h3ѼW5n蝫8+&Kg^s<%wf|n8+&KgkY,yY=ϝ Tl<Ίɒ;/{pK>q<[<ɇ;/NÝގA3\{, 8z(.sZrwb-y8{% 8z(~Twb"y8#%C 8uʳx*x+_O<߷y*yke=?^ךy*yke=sHHP;3?{<v5ǥ7z(kdg{Y/Ypew5y8% 8z(^[yOyW^5yOyw^yOyw^={=y8% | ;b`zg{pK>\,#]8%cPl<Ίɒ;/ގA<%wf<=|z<SɳgyYv ٳ yT.ɳgzwA W$xFڣ=G=}׸=Zo׿8ަnx,m_' 8z>_' 8zz{SL<;/qh&<!"/g8#$CV菏W8O$o켬gXCy=Mv^3zs=qH6yYn~hGpFHX,}yoR<;/qnPgd~{q8$켬g,N gOs8$ǬV%㜒5ܬ!gdG6k(GzFo57?wby8#$C qq#krNrg{w9$9eg`ѻNe㼐<Of qHyY, N<4+Oy{ %xFͣE,4;3BOz"krWrgP䉝@Ϛo7}}+eN_yv^\=<vf< ==7oիG/z\ޫg/2XFOݛ+Lzmyx[/w^=k=VO=wd`Fͣ ȣ=qAz[ދg30#Q}{uQzX'g30#辸=V}tG^{&_ y迟8{7z^Oeo30#Q<~og`F[{~.^\xzד~ yT&zۯwWre=[;ϑT)yYz?oJ=y=s>Ybj/k,ӣ{Xj77g+eGߓWUyYUkyYX6ޝ@<7OO}m+=Mj;3Bo՛{ewf<7 ==7mիF/z~Sf2XFͣMyxП^wo*ٟzMyxӣXg7!=e+eqi(k{_v4=G!["3=YG{}vf}x}zF5W#OqQ}<>ig`ћG="3=A' 8G=}PI;/\}<>ig`ѻG=>(GoꃢO 8zmk{-g\_kޞ޿N;zު=V{Gݣz+yx7cZыEf{T$Z,ݣz yxO=w=QL;3'&O_gs5YVbxt<ޗe߶Z=??Շ)eٷgvv&˲oqǠz6.{tyV`e=c<~pew=\x;3=gp 8zMe30ͣ{X=\xGճ{V8z~J_e=qkz_*l<.yw㞣#3{T?5]f{_*7U_;3BOcWEfꋔ주WXyJoyje=ꋔv^=ωuc>Eft yT#}7zzt/ɾz5k7C}I-׳^cyKon>wɎG=ˣwcq7uOFi7uOF;3BOuc>Ef<ٔ;3B|QOyYǹ{γz"/끞Ǡyx}`7{}PI;3BoՓ{aOXG?ikY'yFͣyx}R=Gͣ9ɣƚ\bzq_z.{_yzg7\и=Zo\wfZc yZ._sz\ڿ30#Qk<|mϵg`FqGy|mϵe=[;AgG^=A=7Zk{;3Bo\?}=XGX?#3Bo\?wf<9/sK530q1x4N:_u :30nױ\5K<^<|ung`FZccEf~y-x:/׺_rQZXs;3J<^<|ung`FZSc1:W㵦ט\vf~yxk/XMspu3J׺5ku.20A(.G=:W,1<^~cӿ3.Mqև7a{_y)ڻXxksˣ5=kPd`Fͣyk`7ƚdsz5E(==zMiz5E2XFͣykЛG)5&נ7ZSkLA;3BOƣǚdszuK:2XFͣ-y:ЛG[u,׹M"/nGl5\r X7kƚ|;3BokT[ocνn>P;3=n<ϓG:wfyoˣǥykxP5~ޮo|{<1czg{g/:Fctg`F=Thy\93BOʣǚ㺏u5~_F^O{govj}zzy=9싫5y}G{>Oڣ#mq{~u=zs{z=9x=jEk7{۟等95>?GS=OyGߚwk)f{;y\> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 116 0 obj << /Length 2174 /Filter /FlateDecode >> stream x}n[d(QKnoO^ɁHelSZdX͗oIr(2St$̳<ևL]M_`3ڑWnle2ĝ[9MMo:.msȖl?6LaYU5?7D?aʶ-2$L IZ3MM%f" =݂ow< X" 8 4s Y`_Mf!KGP ;\Αta =ԢrAͯ[Їu|uJF_Dn݄%ɏPget L @tidKwer Ŧq _"}[,B?"w]wn갈2YӣI$ø"OeTzC;BE׶<# f] F3%eǥh+׌*E腍:>c)4A4pCm':Ź^6hǨUzOU@Dzm/|:;F%7C03H}p [w\E!E5308tlD]-źIZ!d,B0NAiqG:LCy߀1+oK-ў;q$w-ԉ̚u8ՅXEA{vwEN@0J+ ͹M+ zsx.bEꐪ8Pu7 #qR<K[ZH̍æ9QMR1Len;7l&9CpG7ݦL߂ŎRCn681.LrZ²XQy劣U(*D[k7,D,]eZ:dž5'L5ɦcHT]+ 0YTr["a9 6}jšP =eݘz(f+~3h3U3II,结'IuU Z,/f+`mՀ *F/p=Y!ҏ(qԹf*0p_J&; {PP:VT 9qNgFY@t czRf|sϮ:O+ G> /ExtGState << >>/ColorSpace << /sRGB 120 0 R >>>> /Length 53376 /Filter /FlateDecode >> stream xKl_vS.+m%[j,A9{XhwA_3roc̺u_O_ӿǿy{zy^?z=Ov{=鏿oq^n~ZW֧ǽn__y]ͯ/ϯ.Y2uyKO__o#?== uX7Oot.|poחǣBw~ٸ{{{~bz|<=^ 񔽜/Wn~}޾q{]|`]}Ԃ&??lt}?ӽOnKx/tu_yw}ۚ?~< E_ǻ^]}?WyV~<<=}cᾬ{|J/}t뺬K,>۬^}x,I?s՗Wiޞ_c"܏ܶ˺+qgܺ.kq1iEܺ.qjQ<ǮWuq7ܶAutǙ7uOH__x\· k#z/~>T?Wfpۺ:uzzWo1^Oqϸ֗zecuy`D6bY}X}]JWWPx9~n]zebu ^B6b^х%yوew|;ElĴz>^c{ ~P~="֮_ eߛ޽.d"(e. Ոecup!1^o^]wo"޴X]Wo&޴X]7o"~Y}]!d#kKuýlIJ7W7maїziϯAS-xOWuǖ/ųauw_z}^RYzj,.cyyuT>YZv6ԖZK{,-[m{jL-k'ڶپgΌ-nelm9AmnFgL m tj3842=.v@g:@͞Vt=AmTf[ j1wÊ^$Smg"z ުcU:u O{pk_9=9y3وyږzuݥ|3o&1mmv1wg+a}ݥrS#xݨr#sf$={W^ Hz ]vf Hzxy^ϯ[Ǘ[~^xڷ.l~07KyHAaa3ɒG]Ã7ܓQ,=ZOvoǗ?,EgZnZ}G|G뫍Y. y3وiZoEb瀟zeXH~]ևD'q#q$zc<ň'I-'GΕ8wI/u6CϊΊ8KI/SgE% :gE%gNXϻku;wo&1o=7Nb'y)=38/CAc~yHq)=3Cz~M)=383ޏSyԏT<y>ᡧ~cFҋ~<kpr䡌-x5Xj30#v^~ys{]G9U,:~5ȏ$PIZ}G}HB^WהJlļz}ҫeߟ]$4!1^AW\˼lĴV U$,u9'O1b"pԫkV$eL6bs#gU8jJ^kt S.'9F,,;iX4}e:SVăMTIRR``FҋG"xhJe Hz}6e"hJ<鯾:GSR(yHT<"E/Cz~Mt*LQwETMI!=ܩ=,%E f$xT*LQJEД)|ί`xgLb.}!~`ޮ<}h&b<J , 8y >&X) f ,X]2eBfO,d~Eh"b<F'bF4iQyQ3Mgq,Y p걲xhɬ 8z"UG+OW~{??;OGEyF<;d X<课;{ f*+cx4dVq^g"UGl2<[23zyܒqQ?-5xǣ>ǺGc}b5 <fz|֓lˋ'I,Bf̞+^xv>AOwsˏtfaT^̷'h)Z?[/ďeng}fڷe^b^enҧ{3IJz^]O2ylZI4_z4Nb%ehi<L!Vhҽ bY_9Sy3(;DsD) f$Zޓ?wg6uxMԟ/^'` QYu#+G`&DyF<aXZ4i1Ӥ<'Ѵiyy_}"IGe&OyF<>mK<'i1Ӥ30诞Hdyy̝b``ѫG%>xh̄ 8zMG'iiu 4OyJ/3xܧ/Bv enyӖ澾K,W(5#y2o&W3MbyҖs+D'3) VVaI4{y23Nb&իk\fL͹bxT<Ȩf[X̕iy3r<4Gerfy;[63x,GE ^g~Q=>rx4Ger^g_rTyF <23{82x4se&s^gWO7|-xy_~|:G\f=yF} |ں>̩: ,-#{3^=OG]Ãq[ex^X{}0 s{]c٣| O\Z}G|;e\W˾?B6b^bw)3z وi Dy)F,$۟Dy)FL$kuKݛF,snA&8y 'Mq#&dZ3Etwgf|Gs'*oGwsyH3wnԑI3otLxe_}:CG3ufnyHﰍR<3s;/CxdL;xy NG ԙ!eWf <#s/CzS:Csrhg`F;9r1x4'gv^_囍$xyѢeG[GyHϯn&MߏhcM"F]}NQn-P}y3'X]3'Q,n^}ye^Kd\{uͱr͛ /|2 ͱrXI6Rj"k9y dS\hD2FyBnhDl<ėMq+NZt[(v= ;*2jO;ۂFnfaiF<;ٽr0x4gnv^g̃lu# 3+-x4fv^g_mY7uk'H ^ӮgaM}yw_džYv- 7VDӮga)FsVd5z5o&1ޑVkֽl($`=*L1b%I4z5NbB7'+6WOSXI6~]eBQyR ͅϡA54'Oxhʹ Hzyg$*}6H^ϡi4Ӫ< MV!ǧgX</%H4ixe OL)?y<C᾵.~ `z وi ? ͗>1Y!WҼl2gEbҧs#&fFOd#9$=Q'O1b!ɛ J'9F,W:Lʪ^xhZ4<=,-F f$CChZ4i2鯾&:GbIyHri1Ӥ)ln?^p<'~'V߃u xs^җe3f2e/f-d+BauMT̛ /)H4Qy2Nb%\I,QYrNb&5Qy2o&XV_kJ eL>T&jH瀘Y:2?^g̔:=Sq<43ftfxglz\9>W-CffQg`ѫ7dy92^R_#Nx.h/D>k =57Wp׫k$hL6bZ}H,YtNbBIf&\Q9e ͐01t 5zf4o&̹4:-GOʃZhvgeEhvl< /?:1<'d2:wŕ1<++CcfKg`F}#{VVlˎ-!}Y<3[Cz~:C`Eg`F_<`yH/6 *W$+Kh,eXH6~Sŷ&4Y8yIǷ^]Ӝg=fjuKsܛF̫W$5y~So!WKG&ф8y Fά@$<'O1b"A=oys{#κd+]FV1iH/<;?P <29/CO汴i,xy+<4mesf$?x4mes^ߏ3O+^+ŭuywi)QnIs[L_ٹ&Ta9y ?9D)F|1$@<'O1b"ѫkaL6bs'T~(7!5 AB&'`BҋGS?S30#Q9o;#/CfS?S;giggYgm<9 =w\6^sz Hzs=܍s9Q,7A̫ב۫ l{3IJ:r~>7A,# y3ļzv;As4[Wѫ:CEzy\ 8P8&UNuNG]c ~;WINl{g;7QDx;3߹z'Cߙuf$={;=``FҋQ׽.;(#٣gx5֨|w[o_F+*>uyw篨Wfx/. ţދfwI>i{J߻n֋GO|_93^<}}MI/>o}^(={}k{?߻HzMkMZ}[nz_޾՗XVM(yԙ2B^l{o{7z <}+}^=}U00#:w3wڡ_33y?ۧX׵N.қ'Gf{(ͶKGͭuywďF^/x|x놗oz}xXgz6}ӟ\_ӝ6/H|x}1pd>O_ޮ C1r$8P,u-Nu-5u͒bY/<r~|ם]N~߾σtd;~ͧ8?;~;<ݗ7}>{׎nZOW-|C/l_~$\>Ίc+;~~v|KI#>kg;>{:yوe5zsKL?cr|'O7XV:Y}]b/%u|y=7W7X777XV_o0.x77XV_o0.x77V@n{ػ/{--&-&0uwrlIJsgu?O=sK̫?˼WrYݼlIJIގu=Q_ֿV_V"v&9WND6bY}mX]IԛF̫b=pK,sKгyوe`uىb2o"1[On;SMd#փe'}ʼlIJzDO7WWם)&ǷXV_V}.vA&굱.D6bYtV_}ޟcynl+%R.({l]Bz7>yIJذs 7A, >`%5xX}usce]м b]fub4o"WW}v&2usce]P b]fub4o"XW?7Y]͛ Ɔu]н b]fub4o"XW?7Y]͛ Ɔu]н bYY[~Ipn=/gStV?/qauf2u'X[Ns<;[)G>L6bY}m=X]vا̛F,Nyوizjuۉl o".;QSMd#փe'}ʼlļzm=DO7XV_[V()fk>eD6b^^]w"ߧܛF,qV_}Acguߎggu&k겋kD6b^^]wQcݛF,ߎfui\F̻XmʷGO~|pn]}G|_33p{Md#צeܼlIJڔѱ7VMV=v&kSG.B6bY}mX]͛F,M;yوyڔ{uݣ}wo"6e.{tMd#צeܼlļzmʽѾ7XV_2V=:vp&kSGnD6b^6^]hݛF,M;z3وy1Woo4[y=|gX./oZ͛F,ӣ^ݽlIJ@K}z͛F̫ܱz]'#ܺ.{rƹlD6b^^]O^?ݛF,z3وeubu9y\6o"Z.'oMd#s9lIJ:jq.7XV_G-V7e&uzD6bY}X]N8՛F,yوy:j{u=y\vo"Z.'od#Qsټl^]q0_q};9sќ9yy+̑gzϳa20c^Wvm5$gfWFyx:Ϸǖqns=}'߾Gx[ã?5g_ 8zXՏG}v~qxh~ 8z/oG7 WWCKg`ѳV2<_8/3z y<1{3^}+xyrV[+>Sٷ!syOE ^at-hnf2= ڧo93^fߝGWv3yH3wj^͂I/յ+30#ţ<{e7sf$={tj^͂IggQ#~eon?ߎW{X/ HzEٛI/Ճࡽ({30#٣{P{X/ HzEٛAI/Ճࡽ({30#w^^yy N<֋7/CzUՃ({<a+h></ѯVyH<xoes^ +h></Wc}+X<7,<'+xh> Hzy?vkf݂!=] Ͳ0^ 8 <ڷ9/3zŚǺYtyF/Aw1xh7 8z.fݜG/]`{u!22^=>VG]ã~=G/]qD~Gx>wuTkG,C\cţX{X7 8z.f݌AG{ݮxews^g:s+xh> 8zyAXߊ><诞Wc}+X 8zPٱG5o35uX^yv:a+h>f29~[ǜG/ݯV``ѫG+xh>f 8z ){gx5\qq{[=׸h 8z;㛾l앸>O{ޘQ=W:3='~.]q{ޘyy 2xy Nﬞ+W!ޘyy Nﬞ<W/Cz1{<ޘyy+o<sI/[=6{30#٣{k{X Hz sAIO^x6zpVh͞<gw6^y^x.| s!\>yF ^³kVh͞<{'z+xfu^o8|\;gG>}5~?Kj_y?7<CbvIg`ѫGuCxhW. 8znK3^=C_Cg`ѳǥu/yF5ÁG;]v>yF/eО=q:j:]tyF/3wv|WpNq=E fv>oǑ](R} < eWrfzTvJ>a](R00գ< eW2a={\npx eWr^gʳhʮ.]q;5hʮ<wj.]yy ߷uJ^x.|Bٕ!\N <څ+9/CzZX<wj.]yy+߷Bٕ!\Nx7yJ^ăBٕAI3otIޔyy_|M'G{S*yH=<֛W/Czho^< vã){>ۆG{\y7E ^s@ho^e2ޔyy υzSyH/<U+^xޔyy+y8<ڛW9/CzA)BޕI5Bٕ!\}o83^gGgMyHq@?+>>7!3LX</3~xe N?>7!=CMg`FҳG~'Q}o83^5GGvyFoэhn<97Go{FYaxOd0^gWoGD yF7ճhȾa2fã}"}׏?GD yH/<;CX<gU^y6~x{d7q^³׺k4u&^xvTu hn<gKUv&x5ûwd`FҋGxhȾ Hz}7HhȾ</5#7I/Q࡝%;30#cuGi,i!=ܽC0^fy;=${<׽yDO ^³;=${< !S!=FwC{Hg`FғzGyx Hz}\7zChɞ</;=${~<;C|f}cFҋGewxhϬ Hz$ڣHz+'|f}}?C|f}g`ѫY>30ţ;<,Gfz>3;3^=VvG/a<{00co><33zy|q:Fߨ<߃|oh>n2g<><3;/3zyMTߝGd`ѫ㡙;330课:cf^f ܑɃG+7 gtnљ}s3x,GG^gʳyã;3uf$={tl˔9IO{&x4f>u^2seHxh Hzy'#Wl˔9!=ܹ3G:3^<*CsbHg`F㺓*CgJϜx!ᡙ232(#ţr!<4'ftf$xT.̑@l˔9!=ܹ3G:3އ\͉#!ʅc91rdOT=,E f$xTffx l Q 293=:exa\䱗3+G3\fS*O=dp^x31293^<*OU``ѫS*30c|qQy "3^=VWAG+#fTH*q챗qVFLWμrxhʜ 8zXYf<4dqf={ti6}G+ˌf>WOCJg`ыGxX^< 8zXd<4d1av'ãy%<+J``ѫ'y%1cмyqxh^< 8zϬџa23)5T>y/w[yF3}"'T>i+gI/Y"\Gţ<4Kdpf$={tvh5I/Y"30#ţ<4Kdpf$={thIO{yx4Kdp^lkWnw}WOmGd1+"񞝃G+rŵr;Z\a<4Kdp2BY³F2z0%2k(2B/CDf g #0;g %@=whKЋGe,YxTv5ӣC{X d^<*;f@FţxhȬ dòDd` #qޓ[5$eQFe͟#mMhsx^׏C}u9CX9g #6b[s,1#Qsk$Gouޏ97:C@ѫGȧ` ͣ?1ͣ?3q}{!8z;|MGz߶c=oN2B/z}}_ﱹ.ӣ_axz= d^<<׿3zz|}k=2B/z},M6kx~C_{t2B11׵?WFѯ^6?Qzxk/_ ЋGC_{t2BO~ d^ ӣ}?~~k}IΓCuxc<ƒ_a_[{6]pd'쟾<_~KsqE9|Ə"Lk^NkܪXɹFҬ>r^σ_nvh]俾<*+v?|_~Ͽ<ٯ_dr_cuۧ]'ޏC7 G,{_TϷW^__߿=[m[|Kz]o]ݼAbY~sungV7oXV}Oys91Wzϲz]oSd+?_IA{lŲݿ⸫7V?~_ޗ['ylŲ(vozxl|fx|q|⏟9gu1d+u:|>7V,#V AbYL s:{u>d+ϑ?$[~Y]&@يes2b>7Vu|poXV?G. ylŲ9gu1d+}6l>7V,#V AbYL s:{u>d+ϑ?$[ugdW?xL>Bbg|ݿiϗ>/a?z.7|~Rjoe1o@uqoXV?eVGIbY Y]KLيe3Pfu/1}d+5Pzu/>}d+@e1oXV?eVǼAb^WǽAbY Y]KL&يe3Pfu/1}d+=Pju/6}d+@eo![~ʬ.%ylŲ(̗> s(> g2_b7V,<s1f>Y.cW7oXVM27V,]\?:în [LǨ|\_#]~ϻg2yc.7F,Q; Lޘ Q䍹l ~F{lĺc2yc.7F?F.7ylĺc2yc.7F,Q; Lޘ Q䍹l 1WQ۫䵹 Lޘ Q䍹l ~F{lĺc2yc.7F?F.7ylIJN^ Q䍹$Lޘ ?.H 1l:Ϩ}Oޘ28WsٽAbYY]&oe&يe3jgu1d+Ϩe\6oרu\voXV?vVsټAbYY]&oeيz^]'eيe3jgu1՛d+Ϩe\6om\oXV?vVsYlŲLޘ g2yc.7Vk:y}.7V,Q;䍹l [~F.7yl\Fm{lŲLޘ g2yc.7V~K^x$Bb3FR|?>~\~Zlc8WzǟvuيeBfu$Xd+O%Db1oW5xbqoXV?!dVLżAbYY]2I$يz^]3'يeBfu$Xԛd+O%Db1oXV?!dVLżAb^!WLŽAbYY]2I$يeBfu$Xd+Bju$Xd+O%Db1oXV?!dVLżAb^!WLŽAbYY]2I$&يeBfu$Xd+Bzu$Xd+O%DbQoXV?!dVLżAbYY]2I$يyT$X>G+ .Bzu$Xd+O%DbQoXV?!dVLżAb^!WLŽAbYY]2I$&يeBfu$Xd+O%Db1oW5xbqoXV?!dVLżAbYY]2I$يz^]3'يeBfu$Xԛd+O%Db1ow-Xb oXV?!dVLElŲ !dH, 'I"7V+I<7V,2K&b [~BȬ.$yl\BH{lŲ !dH, 'I"7V=z]㑥" يyΜr̬'ۃv>vӾͷI=̞tVt@"'ݨu` 'ٓnf;0I7j58g 4y>r{ҍ ""=FmA̞tV}@%'ݨ~` i( ݨ` (ٓnf@0LI7j581h 4yhr{ҍZ n/ܯʿ*JMPQ?EUdʝZ`*g.KeaOQ#j@W3'ݨ` +ٓnjphx<2 $EBS{?4syo/89t=4fnu2^=N]ͥ[ʡa4rk0qqrzh. d\zK3:W/Cri` \ȸzz\˵'.̭^\9t<,Fn 2^|%s̺3;|?<3;/=ټ=,G2Bl><3z=*@A\?xTA㡹>s3z?3;G\?x|8u=&-z-=~>Ku^'}F|}~%xT'_ЋG~==/@Fţxh?b xT'_ӣH{X? dM~xe?˞/@FeM~yJ>~^s}ן3˧S@իG})1о}ȸz8h=/er2^<S@իG})3qqzh_> d\==ӏR~V/{~ڗO9W{ҷN?ZK٧Y\[ S^yӏGR)x~O.<ڭ{9/z9kyeOs^grTVѽWӥCUv/g tnȸzzt?jKާ~<ڗO9/z;_.ӏGR)~Vhx/E ^g~ڗO09hy/er^gsUVѽY|Kv^ WӥCUv/g tnȸz.5֭{WKv^@իɣqw wʸz)oν3㡿sC[;g #ߢk-3z6߲9G.xT_oAk-3zx\ך[~瞻w ˞kã-r? υ}mxes^z5w@<_y?o_+lyes^zX?<}vc]/`r?n7 0B/C^vAg #O~B@<G{aF@91=pxfot^z=G/ã0{r??9g36u@䬟87<9/~y\}\XOνsã.~~f\XsVW=?C`vEg #Qo< fWt2BO~a]0b0z7+:zt<;SGzΪLK}#=e/;X_@ՋG}4ȸz~97:W/CfQg ţe{Xߌ> d\zTGAWC;dvLg {c}3hr?W+}h>j+ϕZrxofu^gsvGY\/f~V~970^=_@?y~Y<7&/z_'~9<7*gv_^/GfQ~V9:rxofu^gΙc}3hr?vO]Y9eh73=oF 2^|?W]Yxh7 d\xtm]W41գxh7 d\z>y{}ȸzǣWտCxucիɹQ׳_PK}ƭɾ_G,}_}}zr??=<dz+z/|}hϾz]B>}yu\B>}=x蟜ӿGxu~+__=<dz;/kzXwnsG{v{~t==u@Fţxhwno xTW흁ЋGu==u@Fţxhwn d^}y\_ӝ<ǣ/ν ?_{xg_7^Oã}}tƏ-]\?Ю]ȸzn<ڕK;W/ݍúrt` գxhW.m ¸zz\ՍGrvi~V@G;]v>~/v|@䜙</sx:hOfpã.;r?ЃgzY{XO d^|NyeC;]v>g #p㡝.;1#Qn 5{fN>ߏaߏs{=7F 2B/C{cJcFţzxho^ d^<'@F==7F 2B/C`vEg #x}ޘyQzc~?ۼ<W:/<>ho^sgzc~+\=qx7f4^ã1{r? @}s}2qzh; d\xTWW?ChUg >}ȸz9GW 3.^\r}5x+;|yf_u^gfˣ}4r?'Ow4ȸzGhU~V{>s=f_u2^<@ի}41NXW}:=^Λg~<ϼy;Gw8xTىA㡝7;3z;y;Gw8xTosG;ovb~3u@/;kY5W:㡽1{3zztOl+ЋGg_=x|w~߳kfwUFK~[Ǵy?fEc@ՋG},ȸz8j=oe3a\zδڡc9WOgދPѱY\鄧3-vX+Y\鄧3-vX^ytәG;Tv,~Vo<:Lc*:Vr?W+ty+ϕY>iyCer^gs~5<ַ/z9_c WәC;Tv,g #Oq=~<{C{Z8g #Ql}y֧oD);3g?݉G;Rv(~(ޓyBo3<{9/g(x蟜OsG{O"@hޓ E@=w=ًA9㡽'{3z3{9G(xT=ًK8^@[zQ_ǯv{~LuNȸz8d=dgq2^s~+=rh9?3;GgY>>ous\y3ټ<<{O2B69~x4gw^zseЬYgd汬Y>xY=1#+YhV,sgY>xT6AY=3zl>3;GgY>d͟&sf~<[{9:s3zztnnёЋG9z<3g;G9;xTnљA83zx\Gstl~; e@FeW~elyeϕCqfgg #,#;ʷy71#򹻒+@kipx6으|;w3+2B1Yxx4gvv^zsмyJ,<#;/=v<4fv2B/oCnag #|w#ʷy73z|;w3;Gy8dʞOd̪xobxhͬ d=òhd` #Qs<4fVu2B/=ChfUg #E#ʞY43z<9/3:ǥٳy,FV ^zxhi xT͗?z%W͢U{E#ʓ23z83S:d2d̘yeϕC3cfJg #+2bXfLsg̘z83S:Gg2xTF͌)Aʈ㡙133z83S: dQ` #Qyh<4e~r2B/CQ'g #<"?C(3z<42?9P37~=4 4w\zL d\xo W3?33qQ3~}^'83z;:s^;Gy:x9A83zzm1ЋGyz5o#_(M~<@F=lǼ2B/5CqkcFţx}^'82(#Qw@FO5 {<~/Xk> Wнs d\==ݏr/0 endstream endobj 122 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 127 0 obj << /Length 2900 /Filter /FlateDecode >> stream xڭ˒>_KM @&qU.gd'F$f)R&~}ŗX@֫,llW2iT cw_;[Q@GO|1Ɵ< j`ZoAW[<\]Xec FF03*!~WW(qlš'mEm4 .mQJm}:j{}&qSe6L*-xȟOD)^5cv(=&2:&d9\N9M@ZxpخU o|lb&]4&k.No7໢u2B ܘPh:*T =z'~FNS^Kс rk8Q+%Q{uMlqBN]ʮ894Rʻy+Xg]^E &$oteTE/0"'c>Xޣdo=T0 Lc0|LHk-eŁ?+4eʗ'й?2Rr/x V Rٖ; #(h96&`%7 )yCM~nV̄4]@X;Gi挞h@dƀA$?\EyK}I# m/sYE8}B~sgEj>lfЙ?ݽ{nb^|@uG l鈟*}b0ڡ/K87}*F#rq= xJ\ÕHP/Jt{, A=4 Ujpn-s=`Oo/lGID,8wY [,9+_uG]{w ~C ݆9RS)g͡g`s:Ւlȩu/N&oZ c] wڽ|>Qͮ.[Zy ?10i⣉TE*Mm521+ PۧUP3 &UPfF$ݢ[* 4wuF**Va Q?%X;O2p!G2'K.0I|lrʻ$tgz훶o u/f<]T$v0i(=<ąE,S΅7Um.@N*K<ũb*c ,0i0eSYd狋]mT] >KX١] T a^c?džYrЮrtd}' Z`GzZ|JJh2TcW6Sk@Ge>]j ve锈$[05ONy} jtR;.3_V;c5h#M=!:*ջ|> stream xڵVߏ@~ jRMq $mi4=,4߻,}02|3fa ͛*h]\EYU9'4i²&0 YJqO_o{495(gޮ $a|AD`c[ӽ6._mJuM@V=|όf)c70FR&|a~ aіsd,!X_i/M O 3:=> stream xڍVK6@{[Y6)%6Q6R:$9=3=r f(\T*HSy2.HTGb%-Xy?v7o3{x *JBx~}uac)/ ~mOuU˩n_ O A+8S[90yj [w@!0QNix0סְnKҷ>Lŕ|e)Bob^2d#11%ʱ\QQL{K<ׅ!+ 9 qҬaBbB3`s,;N>mLC Q770 rQmMa2ь^O2gIdw`^ߴ:04#~k'<1;FXg"6;Rw/f|/#MhX;huyq)9@P*(+B𢇧7>$W%G53"h:vZ~~c}Go%.G\V7n nSd]'Geø~}PU|.7G:pڔ-ԁT@KZ\1dz\cCIN9EBRa#QtKy%Iӈ {wH+j8 yW25yzOi݅dh&P];xՏ7prH}Era{ I qW( %e5垙FsXr+9/@e> /ExtGState << >>/ColorSpace << /sRGB 143 0 R >>>> /Length 505296 /Filter /FlateDecode >> stream xKuˎ?b7x?**oDkW]A*7P}fxa\$Hq'kDx5gG_??wJͿ{??׿}?wj_g==_j߻ѿ|~Kd!=W|#u}k&~>":>/wǿ_??7蕿~&OןO6SWk. x5d;OAi*?w_JZ5HxT =k|[???RK~k| p+{{~m!s3l}/|Ď9|ӹdO/?zoəFW{%'tL_/_ǯ?|?E#e\zz7yQk?MN.5]cCMlnʩ/3GoYޜ]-,χꐎv|kc.ǒirLǶ3m>͹)^zoyV.,|;wVrr yOgh=6lǯıonsC.}ͿY;t}ߛ۶:7|ߵz1%خL{}k16(|sKN%<v1΢0߳Цt:|-Brm5)^z}>opJJߣe3F91Qx~RϪX86>M:6yO<66jrjJ쭷ޗzcb7ul6(59C>XR66>MV3 5Q4禜z{v3ޜy3[>YkVu棼 K:f~lǶcFiX9ԋ[o.M&_6~Uknݟ&ŠӵL|!^]޾ƶIWrN]=-j=MKfi./+Ƨɩfsl#FPrKo-m{[y^ӣ~[v۾i{:_?59|;1ԋ[[4^_hxmvkS6\Z+RR3S/boÆ9?Y0 [eZ򼟩һo"ʛ=j’i<_6q 1MJoy$^zw<"mvϳb&Xtf%J%?o u[%;Fi]MJ+1*%^zk֊bHŁ89 0(0_ј&I+,fêܐK/`_z}Yg9Oa|_YxC +6JvF!ϰہecka(i\zحc,b zE}4sFaq}TQI)[7kG7y3GcSZIDt_26 1KW=I>oоQpXKkiqy6+~U53BNز?k7Ǟco6)8I.)qJ3"]dS mʖVcS mB/bo?N)-q뤀_'斊NB,ꖊ8ņ[*rEwVժ헯< {*jyNűM1SMJU.߲*5O!Yu5֖$\~_I*j%Vd<>GaŜR=n]}xb[=_4e1W\lsq#a$\9ߩF5 )֕OR2$3o3%x_YjyJ k8 f'%|mܐK/`_z˶e̾&m+r=1~G&&MXR6N ~;Vc%eS/bo ?_nӵMP&O.z8wI8\9oIoYۛ(=z y'ΰll=iv (l576JM9"W{y(cl`VA~EfJ^ԩ.qLtlWcW941!_*y֍8*3ʴm+h&y’irb&sil:rE7R3:p]17H.\sʀ>OjXR66>m{>6)|vyŵ#Zy6ԸSpv=fԂժ(YS^͖Ɩufetb3ή^˥)/Óz. ''8v'y.tQzW9aIUS6{ܔS/boew61+oN63lmQWn5Ēi~|k\}lR: Qr˱ {sG|_(B,)&*l5sXc%?!^z{x~qp43,L*DaXR6>} M+j.^¾ւկ_mv/f&џww$Q:=7XRw|qCe.i7v8X Myp?ʣٝnd=aJ~GPi`6M+)5ם9NyBK ϝA`Euti5"h)hl]u/wܝ,d&Wh7]ܑ)/TTxWāDXxO4vxW47 ؗ&[q$[@%jhK-9pT+qNDئ;Do ؗZvĿ%8<{]UȢtzXj^&] )^zˢ|^J=8oPy\q[=M7clRZ 95%[+Ϳ+,BjL|g]BcIM?IKc$8w/wc=c9ɉp NEV&F,<+Aq:"_3)^3so[Ǐi%&5nh%irĞ6g sS.M}q9k{\Nm݊%V,mQ~B^AA,69#mgPƹ!^mat <2AnmtTˇ++8jkMJb!^֚l.&N1 *`:. fu^f;[aбɬ, ܔS/bobkn:?ɶ >~>TVaʗ8%vV$nMJT[x>?c Ї?ιcVB ,(gv{ ]Wc.x)wM-[=x{s=u؍ӳmGNҋekVQaIE9gE܃ƾ",8{͋G[>{ufso[hcK0fn8K+b+#Qu-F9vO4jѝ41Kyd۷ǎs ,8*šEi3HqZaMZBN}-QB@J-Ejof7|gh^PpQW3$o K"NmAXK|K榜z{׽KW3\pvʇ\ NCgzαtqnʋ\P4ݽjGEw(9ʧڰj%)%5vk2C/boZXg+0`,m1`̂Hay@@7;vKKKH) ꇚrEwl6e|c-c[hgd"^=X,;xM9wY-m)چ !`Slx)SJvؠ 0Ły+,L_榜z;BXhU9\f@J.4CabKy8g*,.-Qr#rEw\vhUα_< iU.ZZ 9Mb'o8˜N&BWrM9g~o9h~5XWj bI51ñՖ$]ܔ{rao aza> Nݢt"c8T Ar 6H9Ro87ԋ[o/pg.8]T 8[q<98}k?$>7 ؗq:~-Vi0lǯ1D5P9paa<~]ǯ1Ch&2ߡ6Å~NubΒ 9nO&CMݛ|~?|t`,8-Ty vHbإD( +}WrEw_섖pg2y{ O>K=+D9xMjk榜zq%#L ƬNv8ePVY->h&FrgܔS/bo# uLhYF(vK9%5c#)}ܔYe}h} Ò |VEVFL ;( g51^uߊQ_ۻ̗?o%?!$T#8Bv:1` ؗU3>vz5Ei{\J֔Ʈnjnʩ/ п71%}v(nQaIM?x[n/~ܔS/bouķD20Q9 mEaaEfJ' -CX[|lR)o#M[|bS֜

nű}g}lR2r ucKY@ Yև/E0WO#LA]D!ł eǾ8bv:%U40ݹmEھACl-GŁsKXxblR:JrSz90eoՇ(g&.vT\r|6نSrnʩ[Y~k'Szkz~uP~D*!ov8]ZhltasSN ώVq&nInPPAaHZkV`E a/[؆V{ܔS/`_z?ÅQaT6\/gAl[V-nr˥q,V80->%87ԋ[+Y +AM:箻pQu#jձ ؠi-95]: (`BΣqժˁ܆(<5̡|XPp>gHbOE J6C^t$7wĸ3Sn "Np]pC7&fVkR:ELm+}Պu,â+Xkxd.mULuxcgܔ'-qԛVN8MK`ŵB ZXr<JVJnYk+X `ccnok} + wOޭ3Gc>R ( ; m=87ԋ[o/MU:qEk vWW7RÒj%va4QtgrE쭷~Cs6jX_YBrb5pup|׮%ԋ[x頮}:+p \gjXXR6V&ƕJXb5QzarEUŁ%8z='g(9Sx:R6fqIc97C4zG~SuuLOx 6S+~I3mXRųUfAc'%ܔS/bo z)5?ӑgvOKCvA"2aaiߓ榜z{[?Vd3TPb%/0?$H-Ǚ8ٓjɰ2׸ >9)6ݺң7QfY.9VMceK6D_1,∸<2QAx椔+ϭ'Jai-=Kbm[IMNHaY%K#8'[(a(y9Cj,3CL9t"֍0%@X,za|uCH1[rplKEDl:X>WrqVT6+L}V,[ۚ/j1N}jJLV ߜli(I8ljȊ_#-ǨI۪t v *!ewop̊}8ڳ0FYrș/OlCXv8c§3*'O͙z+ mreF? ʌߟ,SyIRG 2̏'bs'~<=Iְ ~s"N9 XgݛhZHpqaXM[ksW7_~oqU*F.x|lR?ԄѽTƴϐeY*V/7Hp$Bu07pVS6hNH֕?*ʠҙI{XM}Ǖ_g碼A,83s8i83inʋΞ{= Sk[< p$İQ+9!/K>{sP,"j6QDa{b!L%U%N 4aٮ;{1`M9"[V{GqP[ '\iSBʞOLx+5Y9֟ Oa>7K\$'^V7u\p1D!Jo@!(WJVR_ϰ ]GؤRhUwЛK{eecZl%ggn$Eg#{ۯ-y-Ԩ$x1I :-8Y&xYc0gyoSIbP-榼uizvH@Yl;+cqj4!s4e,/Bn]#!Y|* l-nN|(󨬼P,5bq;’?t$OT cK;Vpsd_c%\HHni%9{jؠBN!=+[fЏ%xR6"||1n]42@"Hc'/)ʘ17m^|%=g(r6lz& uH:o,p iT?0YoHY\[W=V!0 [PkLΦ?i$gMO>6>M u $ܚrEĺWl Bի,7 {Tbx[t_?(ݫbVIWUugldtqWǣOLenG ܐklAJe).6ݺ^E ;mݪOY`E%ϐ#guy\JP2+w,vyҰ޲)qpBĹ3?p[a.JV"Q+j%q9v, wdrmB캦n4x6HJ ŠlTe3qi?զ.Z3) 6)T^9kǢd`zYfːRpa>ʗ- d2,k>6)9[-zo^gŊmS*CE3,OnWbXc[ ^h{Xm榜z{f> esuY*q~ҲU*#p mwY~i5vdhnʧJKo?ʲTP HJv#6st*cd - oi)B/zNN ܢ[!GOLaI-zg"3E ʟ?԰U6&\&̖qh`סcUh,4vġinȥ/BƊvu,ʁ';g!J*jϰU}9+qwJfZsKoF=,8vS6!D^Ȱ^.(ŧYN ]c7whnʋ2 {䅡Rl%Ÿ8Ya<͠İYY&Ꝡ4'CݺFJ|FJM0#F5D#I:l}a.f|Rs)](gQ?4YnЋ[(53Mjvgӗ^ᮤ!~*M-49]lxpaå~VՉ# wPw0kWY+`0Mpt_Y':8ʣBnbφ[,qkyOB6yփ6|<+*`)¢i)ꦶ޾qXK0#|ץd,+TA0[85RjܭfDF?Ģbqa BV[$>C,=&᜔R=n]/<#X>ͻuVwmgNT)-No/OOB|lR!ԧ>OQQLa"gE(gCi)+fG)HRG" 2Ip?Rz{I )5M^ԭ uR" mhrVTv8 e30R-&IK/`_zGw2Y~oNMm&@jy9oFPj+rEĸt5'6Sw~R)qJL5vw榼\n[a1U^:}WcVaUj)ZG K*:F%V4مsKNzF\9 /Q>o@џGnx])_Jo6,8kÂS HƎ榜z{>꥽ߜ&J>\]~6^۱x#47 ؗWzo`:9>(hWpzűuX _Z˥ҺU!!pIA(1s oU+ŸMU+.:Z`Q\cGpM9"[t;胺q]m%J6C^T0݌Ԣ*N5Ob$]ä!^ܱN+ȹy-ˎtU1rj&kll9+"X+"c;f/{CFe5RTYL.{ʃfXwbI0ɭC"9vvc^sSN{_INw6c#L#o<=F:)r>OM^=1@ǡ+a\?Wڏs_eh{`_zG6Y@qG܈;*h#]XRïTA@H\ͯT47ݫk_|1=+"m]^gNHGܜYu-OT 깅!I9wԲacg7,]ʢzaIhX>{`acj9ZSmٶp& `ssBm>z4קPT/,h&W0ﶏM N\z14Q{s|o<_@5.,_'a&;VϹؗ^Q!cm]]tY|]_RM,s֊b3pxK5jSn )wNck8P n:t H8ބPyd,XXzE{ [>%u[1q8anh (u˒8)9Sx9|lRZi&z;Ǧ_v U5d"˜bG`EELplSQj|*eqKP^faFܮGP):L0*/=i16(w 9mboWU9JݟgYw ^A*$jy]0q&sJ)'2cBa A& #;{V5]! 9\@|¹:GqA=G΢ٴWmeA]!/zlT}IlcW/!^@<ӽt'];6D}r9L+EH!9U]cpr#/waȤvwpTzmV{*:`{K`dXָW.ǵKw86IXQZKno,(o_׬&%go(,;XLvYT $⴮:Aj72{Qh"O$, %禼(z_ Իb;J W+4_dQZek yS՗V΁_Rq#YZB<~-gQj,:+cQC Ջp _.5 N7SV؆3 n~ܔ7iLJWf##6(h0yu*X45H>x.،;{͝`][-;USށ-!SdI TXjDܔS[e <$g 5sFH*ԐN,WJ8/]JIsSޕ9d[x::g1v$ʟrf%=c3ƈ6=c}lRzƸ;$][I_map]l)ڛ[ *gCkw;¹6^z_+:&v nAnl|N_A%wccNKX}lR?|sY Gc_r[ ,Z3Ge>Vp8DgfR+qNo%uӛ*,nh-컩OLSy.5ɩi;cWjnʩqq7@2dLN6 wAEd-4KPN."ehq_t\[,l,@Ya`R=:-ȷ?{\' sK  j6ŻT ؗqcRR]~u+i H%$4Uk8V%ձbǎf..zG#/7] YXܩVTq|lRۋ}z{뭿ܼ[8،wq872ܳR_fv, ֌آ3\3CNO ^'ĉ]#j)ώB:fP)řkoMJk$+}jCKY{s{M-;Gh!gcb rd 9B 榼õao&l5ao2%[iUEvn [նS8|3+PKvylzG},6Yۦ.ޫ1ȃm(z KD3rE%l)c%Izb9Z̑S&GғׇEB(QYXR9Z̑6Ğ3Ua lOTTK4~8#&J;F! Ǖh8ǥk榼+c Ju#g1Yk,: X4vs\z;1E9ZW9u09vlyMilfrVt5vuEsSNJsklej9(&ƥ(;+9{JXb6uIߌ;j&u,Xiqiy]OVT{dq` KTcGܔOq[vVjAnMF5Uil(Q}l|*ޛ|lR4Bh)ϴ=}[aU..LtuuFy VY+V}O*k ܔS/boZS*+z^<-\y4pbITv Kd km#|~~M9"֛1? ح_S\ǧ8.ǁ2İwQiG:Ut}jAp0(W2RYC#s%ʕ,EN+C/boe)?75kKfQBIlݥ2’~(ǜ?h쏬榜z{W[L%5T I-&̓V\\+{x= wma:;H 9g:!~F UH5o׎%)*]҇qAWGpX/  ^%Jv18,^OW4* c!ݶ˥eӸ36Yxİr(_B[j >-V<+ŨCϡ4!u~Zıիԋ[Tb?n2YWuw1yUaV'gp}kO 7 GS"-aZ' ;e9L^P񢒿@, ss r *KE`/s3Xզ7G+YqiXUp&X~<εByU(zV#Uںgu4:u2*5eUZ -tpEeU+q,Q(C-V*רxѻʄsr<%u|E S_%25;8])_-"֛?{1l9\&T"\ ۑp$nİ+c 5j4;ݺ^CVlЬwbhk)a-q:T9I>4hK_ __YĢG {"Ϡڽk3P{eP0*zZ &&naVM^(;gx^2x56"W^oExTqOl l347ԋ[o85tU|y;Z>Ka0w*r#Qa+YF25'[W?XİРz53Qnտ98Q$ gBÉ4'^[n]~k`dK1]U,ݖNԦKה"0}ty*\6 >9)zݺRٞ(}3!j̲ZfF@<>+`.H<;a_+ը9C5ǽt峏vJžߋ{bZϗS8Ȏ-X.‘Xj`!]_W{ 죘Rjܭk N ~vf{ZE;H7IJvY#W|{s<֕P}JƔa-TnmgaF5Jc5 ';a)۾kNH p|u?YCƳD$J6cɞZX7q$'X3j73gѶ_ҕRZnbX:77n۷ˎQu=MwVN&Mm U>٪< $׾> "+.ϐ2P/,b5v4ܔ{]mz-V z%#[ϴBf.{٢ͥVy]8U(-\-:\ZՄn]g5 :d<6"+\" {fC[,ʻ78NO.>6)lZJӥqgtV8 18&5E~D>Bg[ }xTEt&/aoX%KoV,+v1EuM5%Ts}tP&vpNJuułN:ea.6@7d):ҮCiN$?u})enMw wv??/qF lpƒ!,,ĩ KǾ#rE7FV*LEg;[Zm 18NDQT)qj噗:pm ;h`Zd';cuUwZU.9Ր-F ĸ! ҕW-aBБmnzyS7'O? zkԡ iU8ݺRAݢݶ.[AQ7kX5!E`!1e޶t=1ϋ Tr-451Tɀ/LKY:C䃱!6>o)lEĘ( \ޓ*%yhTќRn]Ѓ#=t5гwdСgMG9b,!kv(C[Ji]Ê 3Ec!Nz?dL3-İl?5{|I)ݦ M3XW ;DpepQ q$|Ò؅eDz9!6ݺFNNg4?+mҽwpQVTEqL"@Qc7\ܐK/`_z{$YW qxe"ݝI'")l{MYF% pWN<|6Er5$6\EpSť]1*7\t Q˵)3wH p:;x2İJl[{;/q$ēf g35$ҜRn]#$oEFevNݬ+YvY'i 8I>ddym x^K qQ23Ayf;FwmX7B¥gbOY>%^z5['C(yF ܰgꉃ)aQPc'ܔW֛UGV;dfdE҅U8>J%s5qNJp^Ajnf^*oӯ&._35#^[ 䶻txCyn nBm§ʫ4*Wu:.,./sر8v#ꟁ +Ƴ] +ZEQʩ+% }hY}LUǰ6#1jhl00W܁;Ex&vD9EQ4'p/]-mYdd:p5ٚ)"]q6 ʏX%K lr<{FߛSe]TBf_*!BoB4ʳg}ٗ˥WW2@("WgaG9:sV=Ph"pFrKo,p!>7\ 2r!-X 'bP &qӨͯ91^rWbQ, H`gťq؜~k8;Yh,'愴ݺI(h9:QE(cܑcd6{94vsC.}}Қփb\}Xn-P4fEVC=%QGXRa)D᭡N+ƞaɹ%^zG^MJhqZ!v Rl(/3XP) hĢƎn˚[rjJw9bJЈb'Qc{/Ճ{=VT4KXۇ}lRd(e3GiQt,*σ]{^ Jy!f*C,*{j֑ ؗ񷜥(GNWM+JE* .Ʌ2zƩ*gآ2z&z[XZ⠽[/Hv TZ] M{|z$:;Zhnʳxw.E.[$̈~oo:Ì V>r5v󎌚rKę9?Z w?J}[ BuK՟ca-ǎBu~;Utp dɁB*Q`4(/,8{zAM; {}z|d;ov8Kܛ4&%'0=Um^zwp ^Zϲ[%1l} Ocnɩ)W.7]rh{;sJ{[.KLoH(yQUܡ-^ :;C[ƙC{9osoF'[_O涄|krXe)G'";8) |l}g~|;iJz_Q,)/9N@(^㜀swyυ( 'B&m{ؒ牛marao׭U!c6Ε g?Js%Rx+^O^mM/ns%y^v=ҒϞI ϑى-kvm4@skFm",C_5 >\:qLn]Xc?u!]O^S9 IyXQ:ř H;&i;-/im8 oؔ_x'6T$>.vIN v7yXc 9gc;[xyds:o 5{ РMku6iY^Eӱ'XѮUsSN}ݝ# gx+ (])ĒQ0[qJ#5w[ƩspҞ{[G(k0,)uNQ?Th؞sC.}EQT~?{ɚb3-,J+ƙR5>YYfŕ%ԋ[[XFV#AOS mRG²VHq u²5YUds[~UMo8ή4DU(S26MePayR,D0yUaoòWKҤ mQ5N[5Hbu-ku wxZY7>hOxθVUO o{mf)zU/;*;lQQip̞jZ2qFMԦ'jR|#*߈R@.M}iBMi7'(xYG҆[xl{J<.sB[׸TeV* @p*U1c/lU7"Uk>vTܐK/`_z{e##$ ~O+SK˲8ZwhnH-f9N|9a59IE0 E*F,$5ˬќRn]3!dfdě-ԊH*L(FF2™)Q )UP-[]i39,C768n-mV{zli[1f/,jWZrE쭷6~/SɪaHT V\kO#tUXې}lRrR0Eϳ~-vCYrW8Ycη( ts6BramIɭ]RțӳOVZ2YO EcC!$\t  :BkרMߎ愔wW$k*tgx=قidDZɻov򁊳[/MwIm0Bwf;uQvL~I$jZPO` 7^rO5w@ޑu /bX,DMl&܀nв eDb g6o4'p/]$E߶ߛSl^ hN]).a|aA+bZp!ܚ[rE7 dr JTTD"2r*tO1ˇ,$`=5'[0 Y4-7 FD6ʧ l1E-i KjzL8$TM__sC.vb b1-x(._ͳ#ҁ BX$If$vB愴*Bn]>R07zNM$ow*=Sq"RdG[Ua3qQq}8'[׸YOj/23zj9ZWyEl6&'8Y;57I9{|q {l&Y4Qx9M܌HH J+jy܊8\ĞF16ۺ˥/#5%"5efO:!:ҩJ ]Rq'354 3[|)z)|oPͿ:tRo4p'ymu;)^I5Q5;6SH֕3@󊍫=EoVT<ͨrڽuIɿ =I/a_zk#gg &9Z{ѡR42]ؠt7qz {.[+*R[,ܰ"гօԌ|áYugjrȫ&g[K<{F2uVbu:#˛ZQ ]VǮGsSPưqG5*<5ǘu5fqVy(1T֧Ǝ@X557U^?5aKњp 3Fr!-U1,}Em]#Z !=\sSհޑ0p$F";90AСZYXR9lrl`O9,6BNqggy1RM׊l+¬rw*n>>;=>֎#9v!cFs^zǹe{~nQ.S&d1DI@rŠun4WK`a3h)4wIe7UoOkgػV^tyuE囜nbbJ`]e~׮)^z+*e5 7*q7`<]XREqPUDno+jnʋ* P0In5P)[zP[RyԎ} ŨgJjNHҾߺF#Cz4b9֦* Q#qž(nXRWO}4vܔWs3y]ccNzS N a@eRYhP+ǰM5=haȱGe44y҃Ƈ &9vC-3E(1XR/ű9ǢA]p)?BpnʩWд#nN3W̓cL,O8!;747ԋ[o.UN'"Yk R@’J~^a͹coK,{ex)˗aOH8g<,JB6+,ǧ#"Lcf!^~VK0<ط1vS喎_O2/'<1~ܔ{tHnz{%11J7?2]G:|pCM|gġ*GaŜ>[,9y5C+O)Z.T|RaHǚ@kh>6)-Wd[om)Sqըhfe`'u|dTs/8h *,j^0M9wH KwpflQ yCh8 yjN |lR?-#MklVV;XPQ .8.U>*/x^F_ ORsvVNu dCҕRRܡgY5vuE$MUJW NJ£k+%4#Vn4'~>T2{t3ܑ/l<1 [2knȥ/)qPZwV]D)s mKK: <@sSUbðޑ ?oOg.x.Į{Vj#]%+زh[7fؤ%bo;+&#[YTg7,BKx6UYt \Wb=q9*."rYU5 M7N 6< 5rR%s#ՐޫFx p3O=U[Mu95W+ه)Yvqߓ榜z{AJ-75*[e#%-YFmМ6Uo8&xsp6r,/(_F$ݯ#>?(ݠC=|nʩqXcގк SolQ#.XR=:6;̩rD[/w\9Dߛӑگ^T!\r K*WE]Q]<SsSNk-sF.qPtVKje(]krįK* v3ծv,MyfW4ұfO7YW G.쐿ūo 53:k>6)7Y+";YIuzęP"E3ZNuzzQ4/D괪:=(,΍!^sR팺ǜVvlOHE +4x{m3ӬcM`}7.Ϫc[ocM^LյnEj+s=RwL3.q:C aaj?zkwc{g̿"?wRslQjr߼ TWQ^9nC>MaoylZF6b8Ѳ֑Z#qHI gu4,Ԝ&kL҉KrX+IK|}a6ĕ<*6;%vy!^zA0d9z y5h;v`%Xpq.ZX=r^87ԋ[o.]Cw ,k%Zέ!plH:+Mɰd, YvoMGJmuT41HF-uוDd3Džu`yΨY=JsSNEG:@oq8PyZ9UP[bIeOy5EG~[@[hww)WHQD?E hҵԅ&-DtѲ=9h& glCMK#~iK0m-k[M7ߗ_P wO{2ctW2E^G_6w* m88S_[Td;"4V$]RȖ I[tqmʫ 8rc$ۖb#OWu`a wctʔgw*OHt%f% ;-aAF&zWw` K8>pK&ޔ턃axi3(H|&zWV4[/(4`7C8rg8mNȶS/~ czlQQvt:`OVX ~MySPtd_NN ]Q=fy~EJմ6[69W+_6,C> rln!=I߭ yck(B}z(&O8njpUPO& '<:W(g}^8v*G[?}ɗzL7 ř0q.ET8 D9;K*t ϥnxrQqM9n{:%fW@G%z&tk?k870Ypz%Gvwo}eE#banaѪc $,ƑȐ6q#XbXJzt!5!oL-㹼Osޙ|GUSB芊7`t-GimtvыSɯCj1W[N-λLt*FZA}"t o($;B+3yZt#Õ9TϞ;;(09]ɶJyEɕ]s(GJ1CR{Pgh7َֆg r 2oar2.E3lذ-I7/Eߗ4>!:u f۶enàlW?,jmʧrM7EDl PG{,TMyX4MZy,رV`Z.B~G>nֶ1e`dT|L y/ICWT0I%m'h!_~Gϒ^E,B{by#ϒ6խ6t۔ӇMQ3tn%-t9.W䰋P  %#.W3Z+^fP-b䠰CHvצ~Q7VA~XlXI3qP,]vjmʛ2>ёJw_xI)+Wt! й!8t*U+5t=MkS4N^٪1^zvIZvfլJs:L2$ݩj?}P|w"m-"jmRYQB,ۘo;լ6vҝ^7rTѤkMJC7wd:2B&3w=p w| C]Rq_?_CK|挘~Q7x%PK |,ѵOSR*IKTkQՅ}ҋkK^ϙn;. 5JWUSg6N:gӭ'`K\47q2YBEluE]nщҙtYx!ML "`$ ֚k֏Wr:/sPm |T侖^Z|芊K8Ԗ.jeFڃkSN㗎ӏ_9RfY_kdQ_#q~pۤ<C4a6&۾[4za Y@ۢ|[! cHhqY3= o(O-85om.on7y}.d{EXk/́I7)Xq^Oc݁4BTSɗCN.-q&/f[4cΛkqT- ;BU` ]Q34X\X\kCa nӢh IT7QąpQc t\mR0ءB{WH 4R`Qϴ+lO] QW| @yEW I+a~' A^v4 ( WnK*JSJNRLS~0 l؋~ww1tEMo2 Lq6ڔ/~͂H>nK.2=)wEoB%'Ht( ,s%5Mv1ml?vY#n[񊣦u%RbҎh"ҒE 8 J_Tq;YUR:pO w@9kqZP Mdysjuw茫vlϨڔ/fS35.q h{?"aIw %M8(/.ʋe;Fę1!)B- mLĽziI\nG]RKAtQ$K6kd[mwh#ȆB{(K9gKM~m#Hc)%]mRWxJe~7ʩyGQ3;_E( ?Uf 86)|5hQ#Tt٭'%, rʦMwDǩ|\)q6)-7w!haLt,v֛'P]zf=[v1 HzvܑU? iMH ?!|q C?>Wr+jy8_Hw؎*ZrEwdU j#>I۶(}Rد֐']I8.Ze{xHk*I7mxbM4A7IIxY;MOu,u ^g.smuYX[Aʫ=%%uk=y%U ']Dd;B6Sz0oG7[hM%8:8ɏMORh 9tXS؉օ Y* N(o߆kvFaJj@!L k^;Z5){˾2Y0nsak9u0\$b]̞2.xULOgDY ZҥAZO/JV%e_LRTRWðJgNU&z8[Uw8X|b s?l1׾Y m,낂m:>snel;[ 9=n;bv;b(G~ڼgý<(L#.}q@eKD6_~O^vgXmj!ʽ!*y} #_9ufֿpB`>( [`/&?Q)S|Smm{fqmQŹܞz!*GMʻb.{u<'6)1y֞w1&roR<x_H4 vGݥHZ>*h.֦~Q7wAO{1WR|UYϙ'lJ&WO3ƻV;b ]QQ//O%_;b]ᱮ hC3m(={؛tEE8H˲[6_}!⠿{|e{=: z%U=*%KdrIo?T=^",Uֱ,LCh/DMFz$ _.ԫNOa&zHV78tX@]QpbtmG֦|c{ߑf@u|UT,U %@b]!t LqPTmPz 9=n[[Bh88GԇPP]QQ*Nt @m7/%ڔ/f#8-b* w} `ӱ_.za5QܗGcM9߁šiOO\*3ݭ;=F4]O8Kَ֦܇wM~( #mgGA)]>j{K*#Gڒ/f!΂y-_Ab '5.x(?*==(`[khJM9n;:Ӊޚ:t(3 3tt]O3N7.3FLI7SS@s,E5 MFi]4ˮ,Nh4٨;crSt[]&_e(Z^9E2À傡#JZ14$9m_&_~-T-#f Kc˻eR;~9ҫպSOJ}M[-'&1zz'fTIC΃QWmpذF/eN 6o[cV 9CeK(͵`n4uI ^{ڜo=DkO^[~Gb1\ਠ*'=M~q.)9ev]춧6話zD f]EVcfћ8 M͂<fA~Q7pw>Z GmÄ<6MG]S(OLڒ/fS#euxQãxr7O]ǂӗEV)ow%Y?.M==%ghV 'uaE]l,ε)_~GeA RkGm^6l:_iZ?gv!uړsM9<^^֫-f@oSt6ÀfL$@ZcJbp3\W̅VA0CޗtQ?_N@òF˧kn#Y] H4%qŨ,=}j`ք@/ |H%-Soso9C +`{*>zWόBUny᥾*\ݱWC0+LQi&葨Q?ǭ8I $SA_#ڢ%+)?nPO/X u [8:hmu:T5D tMLU n }z: Iw[kTI*3]<ߑtߞUl)ڴ6u;ruax鉈LvQˤYj̺⚔e_ 2tt+XrB!5r1U@DTF9j`*5KrEwBugl(2Ё<=v ` _l;郼1E6t4ۧqmu߁!$\giذ=c*CqYOn;cd8[:A'r3yb^?~G6 Yu4>6=]|M"h[LTDr<ؓGCMyww`qV{BδD=5(]MHnC7m+^Mxr/dg jk)Zݎg<85$)U.Wq0hM ?vTt6OBco3gv]Mfg ,>qP0l_QM5nӔ~Ց]]ڑ hJ|bq0R E9~Q7`L8[}:@s<ƔR)(;6Zm AA?/fcOf>'gĮ/S_ωk$]R#r [uiCE7. 1s 7RT482ϡOe#~)+t ]شvQ'w48=LP^C:'" {諣1[< KFvJ&9!_jg$j8h81kz␅`B('ݡy'60ͱC]6(/9Gm %fCv>B+IԎ<19K.Y_>ybM9n[#9#Uۊ J)y+:!VabZ0g6 _~aUUӋyjpp*q+[芊jzqXO]VvTkmt$xxM웜4pdVK%q&f3Q n;n;ZU~GsefU~LvtIEnJ$ zٞ5pyRi[j?_DcwskIw(sUIQCAJc+ oL%lEfpbl2h+jlYq']\\d{UkSOE޲xpVePWjWT͹ԥpw9E|Z Vr4f2F*E0F]5}m닱JFqۤ19*<ɶ-Q+`,q9l8f|aD33ɤK:ȑ8 ]mْ&_~Gs& XB@<ʌMΌΝB@j̿n[?M{pَqM{ZʏYUXw%Wގ[T][̩|˷ڗ[;/4Jzc%} N @i1P0>lb8( ]6yDy>%_%KOlSmx8|i6F#8( Arp: ]κmR:r/WIMW܆d1 5/#ңS-#SGq !]`Xv㨥!L85쯂Ks"2¦77gIo K*;ӷuvu9M9j>d_é[d1;\__S^u f!c}z$bw|_Y:kMH ѹL CĵC8jM &oB2&?MvC UJZr5ԓmbDŽz+nWEGKx2e5TZnvԙvPpon 9tz>^7;Rr!۽j &.էliϗK l9( +`\D=S>1 =]zіծ<ք@/*໫O-ʈ~؞'9 uun ?}[+mO Bo_[yFǁM"iPuhNY@FݩzHEű=vcvۤK^Uhov<]0mu/a:/pEX%50x(ȓQ,@bŬZ֕kRQe_u"aq@V'A]2| 9 Y>*=vc9N&P GEw# -w밠Qx #N&JKCyipҞ[Q<4& ^1DNR)=$NoXqMRKC/ζt m_QKjEwS9@cYh+i)S0X;ɷFL.8_NsZME)Ou"ntQ~BW}L,G;T :Ԩeskojx7񑶿h]-;eS&ƺqu۹wvLu~Q7D/oznCHP BD.!.t;.])d){ 6wG't\4ҵO~Z+lڻX62C{l)?lQaߑSBZV7_7oNoL\)]l>:HiƳ>Egg^S^~i߃]|tk.>;TŇO .^ ٞ^v#LT¤,NBfW/H%Sf5ӲVв$,M9n;20ԗpG\|w9a$w|I|)9*+m~\jȋ.-,2Q ^Qx>'M+z8ժowۤ~A︮ ${=*E8Q*1lL!FkQx% ];mRr/w`N2N*`^u$ "'GtEe Yr>,QJ\q(ITI;g &4!&kzk*$`if,K#RQ n#uQ:oOt-Iyt|z{%L3{ 9@x[H(r։x ]QK(.eG צ;(&oj:'PT =Ҫۛ+* Rvh;]I~Ao=c>R8]ӥ6<.ԙ 7jSm/.ֲwoM9n[n~-m(~tI79~oHSkS>Գa w}4EF[gἢt'Ğn[1ޟٹ)*meXc" n`̰:Y,>z须0( b0_~V]/sm1y˘(,, ]Q%`9F,/1{MJ`rw:HH*NZ,nʂtv)KBt1Fq_ALQkuߑdAc$$$A!J;"|n%5TQ(%! 9n;ΖscQD 'yl!Lyy5=8t1CGĒ:֞\u-+]RˍűmW/7~jI7(:%;K33-Q!ʻVq];ٮwU93fļ]s:jdt1C"(VَV&_~yYjr. NJX)!GBNDnGڔӯYK'G_pf5r4#XD1LG'O$FvAmRړٌMo4sDj{j*"r_FyݺTB~4(ߥ3tIO)u 7sWSQ(vMo5nr5vlg[mI7grD-L([CZ첌4'Q~xlO?kmu!76H,Ę-UT.@kBԄ.s0E1fD@d$ݥP_z ݩr0v|!oQx c8w^>#>VZ:n| 2tBtpG8nGڙ~ ad[Iq$~q#8;|aޮ!iS#8AQ]" 'n;uI5&2]-mLMB=|T@AWT352w-lA gKF@ gK&I Ζ#nmq^Bwk#wpMyZdƉyEnϹgڙi6Q:XV"QU|[GHkS5~g@>lgzjNA; 䧢"'BtEN#)_;W'Gi<5,?Uo%5 Y@XJ͏kC.w*M"J,AC3QX;45tEEYIRK$6 _~286Ïˤ|)&ݣ?-] mRJ$~HB)}*}Dζ =~_0x󻓟cˑ. %䠎GÒ=kSNw u}MS:%@Z{ng LC`vb۫l5y f{1qEskO6ѣ=YؼړCWT @o٘-t R]"mA&_ړ#m;6bm/$|;P_h!G^W7SN"xEnkC.o%TZ1E*'SP 9,lН1 _~4BuExK.:ځmxVwN|1hۻ}mʇ;Rlp qO1r%1'K,|XKe*4"{"K6Mw[gVTV7+|gVh'[x%ۑHõ 'ہ[)bO~GiRVӿL4}^tIEp=oZkccL0WĎcLXrCvwP 0]zsna6 _~'J$Ӕ>5m ڴm {QFWP!KjxHdJ<})_~ Fyێªηu~↞tIm?clO?jmuOfÂ0Û^`xkEE[+[+*R3z#,Ytۤt`uю`A-tqϗjCLV%#*ݩ⎟V.HJ)6)Et;eδ?yc-p,ԙA^vHaHT|AtQ~!5ڔ/fcO.U|O.hChsJK-b!'-x%n;XގZXlDr8s` Qzj:%jIwBrGŅ6)=cc6'n%j3Z:2*lݫhb^+xj(v.{ ;vϭ{u~ dcl^M1X܅1XoI(r`. _J[RbhmueUalCbC 8)rFPdz\/ZmҗEl;c$1UKo$o-N'QYU܆[]Q"NQ>?&;+Vw@Z28ȡFWL)oU_.ȿt_ȿhmuˆꓻG&n ɺElܣENu >iD6׆\~AZ;L捿HNoϲSGn`T,NIs0vP .WZkuITSeuIS[qPGQtMg4骅qmU$%p[/f#2Fsw)aqvKj# yPtIM?3P͵)/i?~‰c2j+ \M3V\9N(8GHJTfjnz}Fp-?~>F%ÈjߤFOQ4q.ITq']k֦~Q7c.iD5q&pf*| iDk;&ⓨE?whWϬ =?PW (U/bdFv޴6 _~zƍ)/~ω+:>/3H/PW rʩ;QM>5׆\~AxS|B8A/4~^Ei|7FNWuTl+#}b%o'Ko_r=#./׻;:oLtyZtt9c֮Z;1v {>n4}V<5'tE>KNق궒l<},˯-V~ \w ]@v@imt #\a LnlV5._EQE+lwϢi.Ӗt bs߲dtLmS+NX#.;l5y ٮt/fS'Wiyos!9+J9sB>56tIM' IjmʽFNɶç!>ݢޒGYVZΐjRTLrp.2]:kS^֏'>qT8v>EG J]R!PK:a\Zk& o#_88[إb =P@uInA.m-t7MnȉGzN\=,Ncߏ(퐳cXݶ(h%t~-w_kC.wcW;Q6]]ߗ݃# uy8l>9'SF8#-Nwy#j%8(ꊊ:%qpȥ.>v:%M:d/olP8xMtEbC'r+y1qb CZrůr;~ǔę a@Y! Jw.|BFĔ:td<)_~P&17]A23[<R9PhJ=y` ~kR:5e_I*_ePrÃ;0EŗD!J*.W|qxpnᓶ_vt$7/ Q$1웼SПG8hJѨJ=U#1^z!բք@/ An]b@۾~8Ew[miWeqۤ3%o\HEF^kάMj_oEu cU[#QJ 낢^)Z?5){+?G=cx!=3[ I1up,g0Ur5!oLWŭɀbXG:(赱67]H4Ʈ9غJa3|g:uԚ5'vcZŒcpl1 Az–UvКz_de~S=w xZ>GHwj,`UWq_; Ն9j[z?g_+OދduئuZf@rHĠ?Twswo.w;rn3̳6ry?~+2_Uq -p,֎8kȨ]rH&OUJTMUJJce'J~~oہ/1 blv#lRǥ'/8lQAњƐ7+pkM0tcPf@خQ#ZJPz$02$;jMH RۻA x."S"$QjG'1_PCz_աsք@/ǂTǧs1`:R,d,䦩&j!7]Rǧvuۤѓ;BN&wIͷa .ܖzޱ̚16!/iaա&E}vW \Î1'{u̸~<=In?*׷ ]8M8;X?W6|>ȨAsƽ!oaq۪z ivlp4tۤXXUmuld\ ׈A4Ղ7׊ *j%d낪1@b[1k *ڔS~Box\˘`ݸy-7E;uIk)uqmP魑Y&_07_wtİX5wף95.UTTm5╙ P-G=KudbNzM!8i ycz_uc_b?v u{1RaKNM$КƐ7lnr9 lE67T=q5m6( ,;*"4n,kx z ZtI-m066onP,bo= p/n%YpG bTzUkhMH VՀQI툷[u&GH[h =~uq8vjmʇTM7YbOYUzʦJp-<:PjOS=mcȡ1MJk" Q5;捃3a4v1jY-BDwb/{a;ZRz+ m_bHπEv]a}`D(E1{Wl5)7˾F;HPc7aRptޡtI8MϹWwPkSNPoG\֊# wž@#(?Tf+8ҵ9MJGV|{E; Q{VZ\EeG(Hq)ϒ1l{sR [kCޘޗt[]1`73u᣾8R KDKzEl3tY-:"kMH pr K =\ @J,/Q'GgWY41/_BY/1,42,eW<'R"Q.=NCg e_*Nþ!b5SKwx^X:aoաք@/7,6[0s׹v8'[ެ#%єnKҳ뒬[&>kvo{>>s0B) 7Ȁ!n1 #Iz$CZҭGWR+aQg/mX!0. +A/ZI)GwG}tkr0s[P: RdMz$]R(fCWsa;C"]tal.N8t&J J>yBWTp:k^M &7n|7byoڠr*q[p}1[zvUךe_>uJ ]|l}B?6ҍ0f4I 3.=+`U;5!7˾zM O,̥Vf8Pnqx%xE=EUrdT^E5)%[} -ogi<ٰm7q'ŷлM]Wz^KZ=~V䚔NM%[WKuİ#ȻE0 NīO+:ıjk ?- )^vOFp$Cu/ 8U4RU涜U Lba YGV"Up=GVg\Sݽ^+9:JkWrtL kVu" ҪD*]j t/{T*A{˾izwMd bҥ'"bXlԴN&zWnChO|d+6P#KGb,o(Vju[vo}óū6'/|"؟a<q>=z=ܭ9;Ӟt1e_=\M(1?-Gyp]Q{⺂1VU\o!awu5*p* ^8hIǞ^G{1&̰A^YV*JOrҳr)yRz+ǣ[YN> Еjtc=ҳz^kB:[緯Xf F +Y󯣪xkFs=.SXmQe_7?aS5ZڧSx~;] OyDDn^Z]r > <\l[ 㹾?S$ +(1 Pz62]V*ڴ&zUtA ViqNMw`;tE lcR4#NQ QtLSƏ߁x~2QnZF_ C wn)_~mT/K<o+3Bw}GfİjCY:ք@/8@{AGy#c-y!ijmʇbL7G#Tm$u0uCz#̭ 5pe_}ZWgVYtnU{^ȉS  1;.=˪whMH n,/0u&Rx^$%]hS-ʪ1j8 W[$Ѭ8 Ec]tz$f! c\RzW8zbXɻKi?z"?Y {g0Z|Jȝ Ί)(j TPq0].ݧqimu45\C%C~ߔqE 4Ns]PJCFA)6K)u| m7ߊmO7˃EY<=6-&=Ӛ71-Yӑf 6qoDl >x~Oivz$] *=2eٵ&zW>M~>@]K!IyMR7OfYqՓQp-kűB5>IVݖ 74zAgiqs=Ҕժ2 )^sC'&PeEBqUOWt*z1twS1ti2nqICAm/V;w]pXF.=Kp~샨dGX/fcaۺu]hVؾ-ͽ6^z橬䚃|;&˔2/u~0'%*{gTF5!b}Փ7C5R rH:X[VN#X$ ^5!7jӺplcVb_D;c!EHvsG,$>UkBZ^;;78VqML!-|Dlu:&5!7 ʾ{nQ 95:NBZO@IGw\6x.[sD)bg.)Kf4vb*_K7 ^Gbz憬WkBJo}և^CɬAEa1@ uImB¥l^B)1}Pr2]^0z>d~ $ݭ?qIHJ=6)4s$p@}Kq8g a:L5D0K/'. ;]eoZRzkT1YU O>W30/{UTJ ]Q?gUY >?Q}%bXs#^[K#@J !JhL$#^Z\ϺGdӚ)zWʕ~0p%,xѥXkz=1 2Az 5!]QKAkIpê nK&!%R+ Jzm$ڼbkBJo}lz{`#]KsgO.dTѰGv]\`_dd(+]_]}& 9MX ˩*n%Lt/(ۥ~#Q=X9 K VApץEO߾zNmcoaD캰ޑmI.ő(׵cmuu !1/_?x7?!$# k7C/BSrtTo!?Z*NsqL,tI"Dzɮkd]<ש)_~vwAa7sZ } C O:5w'F/̥gwvY֬$ݡ}7L[/uݞb1=2K%ve_Rn exO.~]Was2PͩW 2VA0 1Kng'Űª %P[g^xJv╟Ut_8Yý^5C]{~ &BҭCvM_;ugY- ,jMH Ȼ{s/p\>حXӥ!ӉU&m9.=O:^}. \z)UY=SGȔէᠩZe_^VU=P̩Y.OP=i {7jhqp[]Jo}X"cCGt.BRШTz WhX5!7˾<190:nsޘ%_~'bv0 gB0 (@n[ Ա\POsm)t7=rh bF7C1#CWT8`<=#. *s0kXzTxʯF͞;5cOd+/Uhvm )o0ex8qycwT1oXb 8iȒG `@E]|Ƃ*Q\hz"bؙZzv T\ٵkLɩ+>A;t=+ Q~Ax:~1!f wΈqB*kL~\dfxȱ;Z5=|kYkM8W}z퍴NZZ.H ǰ\ 16崋n/r uaSQPK]0LWWtDіYUi`|VsRGuP/vL4}9vV*p> ǚı k1VF骞et?v ĈNV Nl!w못]N~6Xzvר$亚.7*kkի2SelS$z *][w47崋n=V%cIڏbE6Q9M$GB.uqQ_q,Eu-vHrElw81|y\|:>^Ha9XKVQPBް-TQHΰ\rjcȨZ’׍hGu{_(t{ʊa zfe[Uugn@yhM oLw˗ (xquxrqv(>Rf@y+ԉaN/ީl~rE*0*PѩtXVX>;5i)AƦGi!g)Tnj꒚q:•lvdp8r53o|Т]8.0Jчz$.$ުM[=\sBJkm XB$ qy&/E|Ipy-:=K8ƹ-iKM9rPuBS:k'&ReQЬrԎ Mr,k7o }nʷ<;n>RF u^Qr(Iש{禜vQ7۝S#8q* _lX Ay+\prN..5˶OqA)/yh9w_t3E&\w.ƞJ)]v{jZTOUlCUjW#-2XOb.'Zܷ9)5˶FRC$|;U%-@jگK @*!դg0"5J8'zDY90nG* w9)=+*B \,]5v57崋nm f= -2H Ś$mb7u+F؜sSN#V`Fc;ԏ(-}`.'gؾ.aL=禜vQ7лWC%vymTw%5sS^fYb2zz_)C׾\- |^mֻv7Q9Łe"*Et-2}BWp ֤k>)]7vⲗBn ?.ud{!K*rAtç#OsSN}^[r E ]_j^[[az/(=мcԡ愔@/۪c ;3[OX;Z6=ͫ#ĸ=Uu!ouI 2pTpiD47崋n"WxJg#ەFyoxnw}q]}5v57 ӱ^/ sZ(?os|r<r,[k([nȇBxSU gG_چ#,XO>M]Qiëj[vT?#He"p- D;nQya='K c =c'ep熥el()cFVy0ѬPL][ShICY *$iaלP5^8U $;=!0h%J S'[G~}U֘*P: -BH.".\u1'=Dר9!=*0kÀuzPQ-.ݓ؂0l;cԢWฃIiMe/ӕFō贪yr*\^uV|ȏnwh}3nw%.zQnÅ:F^>xOkU/tz"g-1BsC֘V0^ b1 \ӂGd;XrNDPA܅gb 朐e[m=bhw77-)81a;ѳQsJJkm86Wql4x J.Eny7OG'=j4 ^(K[U4֭9!uJ;1RfՓ`Q7#/ag'X: 9!5KrUU ; Lc*;fPڟ yWNyYA5rN5t .]M9n;%qw»HU!aի-+FvJyAt\MktܔOŁzc'wnwwC`OO`=.a(VObX=)embHHRGb8zQ6 )^UO {{q^j8tYEٯRbQI4#hnʷbVc5(oQ)}9v 'q icGK|kv+`k#8e͢O>OvPˣ #]B=]U8 SGg rS9mE?hQ_(#jA0u*;tǠFؤec+uQ|eyþB6^Q9Q\vgO7%U<3kؤ!6df\+3BTR!|(_Q4yCpfdF4?-zboԓ.~gAGTw4 2  ]K yWFvUA0Н6ƞJy)]v;!;Fo0pLGvW5!^H::0\35~jNH;V-]~O昏`jrd-!-u5"g(i^@= |Bln?(epD-NpQtY*ӥՓkMpb[Oz@oyURu[cz[V ڢ9M,p"Y^QuFg@`НP򡒺=.I#A@sI,LA\:UJ=tJ96({CFd*3mWXL ǗynlN8z/Qdt=kQ~E{5˶}NMux1 OeB{!V8P6 ^Wx}OJkm 2b'mAb:jE{‚`އBA|oα4T7tclPz9n;R ɥ<Dʞ's(6)bwIly!Ł :.;]P0-/Vum隃&O))]vDe|pZ=ymL>:#k3p0,1̏(.馢9!]:iՋ8Z%16 UOlf V:NxjpbԞZ%1une[=#z%ؑǼ :u^Anz?zqbC4tq17ќSmB/h|'1t[7+_^?hG=JY KkT9!5˶FaM ڶ*d)V媣kh-P~AUG ];ؤt+䴋nOEy鹕b s^|tZJKa_Zfna(bꡞ`\T1h >r&B`ȹ[QUaxt=SM(Y5jͭ1uYHkю VmaCvCnm(]T`UnϱK[rEl.D} >p GEw41r5&]R;oi"d_JsSNv{rqX"lط蚉*_T-8Rŏe~=q _};RbA!o@Q8KozKcOineR]Oc+y"\ęJ0y7Q8T褼6l&49@ĒnqneWW]LckhD{0#Z-"$]RѸřM!hOc4GEl/ oNHwj ,p^AڞR$Iz[iԥ' 쯭)[haʽ^7Ul釶˸.Uմ38x-%zw ;v%{BC mx-J[Z!#V [[ F{4MJ:!,nkpU FB@m.#Р詻T%^cI]wwvGBpa!KܸR$'LEq;q3GЀ&]حeQR 2{g{əB]R7 q 'uw4v HsSNO?7`cJTAqgAYG2F78pYNm?ns\vAcpg]jQᚇ4B9BhǛuC_Is`8(ᅮJx16䎐/L7\-fug.]5Ӕ9N:6VuÇ $N:Jv8|)ppjl)4VPB,'%r('@ ,%ꐀػ@ -t?vk*Ao3'eWwbYG'JS5\ .25vThnʛzטn;竹taVK4k%g!*K]R-vr_W]()禜vQ7)DC)b־`Z-0@h t*(b0\&t=+ը^ū9!kkjV ju\ж"ohGA-/jڨI[@Wض^Rf-Y3RAM^+$(!T8UTԭؤ2C^Cefa4x[q;K?.c|hAi7A{57űnGr.n[qDoo EN" uozP#^lI7ۭexy[+]6 lލf" xfl+B]itؤt0h́] ։s b7nx 3Ƙ|[kPQ!^j5+C&ʢ2lwtBr,\WYN&P(KW.fNIҔ|YI3-_`ն=ZWT7 #2}\#}Vsz9Zc%r.^0Ch$"lzNL{o>[$N#\mϖtz_+kҀm6|Ê&dr&$c{"[§^vQ7YY]qyiW5tJ֑{bIótVB<ޣ2oElw;C_ H5[qlSqtY;@lITdhco쒮eؤFrnSvn;~ƻ[Qn/eg=Ewa䎤e]qfn]&߅q:cw~)=_x;.ʯ_- Uݕ PuAb\vZ:ԑ9z|nV3@':JޱPTsq,knet?vyiG {R NQE1uRHY-]p+RgbۿITlKň2T# E]5RQ9)ef]JkmUh 86s1?仨d `VqS=|t*8B-G9_ŀvE8`K!{1]dե`{IwX=R)]vw9:_A0j]uJx~֤4!o@\˰8H݂~q].[ǖ_oHN5؁w`@zY"B+6L%tIH-Wp[%y`m)P mx+MvoE[A=ݱ9ְ(+X82V̽(ҡ݂>1)]^ؤђ3B6%v2LpGEe EQF{s)]ʽxzK ^2WI˗aԫ5˶:Bsju0^AP_WěwǥCpOoMC mJl֣3OꘓҢe[cx2W] [m;vs| UBW8s]kQWM9n;;$Wqƀ,yQ!߸S\ 4K榜vQ7⸨.@ַ BEh.q&V5,4p榜vQ7uc'shu%ծ(OȏV>΁S# -:^nz'sBXT{ܥ&xjvRu8hT}fMrݏzJNSYo}R_Skѝn '/Y-f%==`Xq8 U@t]cǨxvy Ox Ʈܔoa@8_&v?s%|,"o`D n'8eMnvwat?v}i * O5-{v5ޙp>驠ɧK*N W;N rElw/1Cj;"J򮬦SDqlt[p5,(pҏ(/\Bcw8$ىSMs:y(X|%#\dͶ=/CcCrw50lw8$ٰDk8hܷ oG.=ʭڑ<}ۤ=lx١^y 1Z-Z425o@2QWW8;E;xrݏݱ& oS e&kjr@֩c6A]cWh)*|cգF|E+m 89)pRT38b$]kc?hniu]55=c]/Wcu|B=SML<@Ιj25ؑ3)حs238 F }|7=*H]&Z LׁYj|Z͎tmI9B^Rcw${,c ]1٥`%]Ro⠤M;)N\#Wg]lpYsr uI,N/u 4pͅ8䴋Wd{ey<؛rwY^IS+E^Yn; xrT&r//]wSRؤ!BЕ4@2z89Ės+=fm3 :(sEj:.於n?v+(1 yb֨ESތ䮚tIH#[prlP4斜vQ7۝@c۬r,^tfbp$c&ݣj8@c§mnnc@8֙'s8`W¤%ec4S16(|sS.[Ϙ'`E$`LZeyr}yyJN|p%gH'ؠi-9n;y~2':ԑ&Gau,DW3J{2,znYcj ~-9<ҋa@3E:kNHi Cq/ꯧ 7ʹvY-CDu>_tW`)]vhJ9 ΅A#`ӑo cL4aJ ]Cinet?v=R=.d jx 8)N:ɜ w\4V|Ԇͩ-@\3_1.fӱ.-Uq[(nrLu |aGݡ-m9ccK yUft]ePU ۺ=gPyM^SCe?Q=VuUP*n}l NH8Cqȁ8cE6tEE8qЋ@U1JLsSN['(?/|<)v.ŤL:;h)bt]kcGLM9n;f\E+f[w ]Q1:!c~\yor(w;u;cX MVcĭu9iɜf\:Ѧ_kU.V%~-q P5c;57崋ny'mwr?hǽK7`XTMGeCn>6)|EEL7ۭe#$ZGy;*JU汰n ]Q:Zn7UQ[ 9@Aa#hCWn8L Iw B?qܟΜcRf#ՑaЏz,DxV].S+*zCu W9v $f-V{[g+_wl[8{c*\3 Kz:8ɑ.x:榜vQ7,N'h ~0Sfs0(=cc|#86)=cR7>}DXbv72[>Լ If0G*4|lR~;.Mv!:GU 砈cMx =stגQ!ב806)j~.fc#͍ulSPnlzD4]M_$YHI;57崋ț.̶ڞ7]C >X؛#78GXSs ^Ƚؑ)]vRr)Z*qF+颴%R>8pk9dSnWR41qpI :֑H@"uEU_1$RNcН斜vQ7gn?,d]yfT~-tE935sf!]ح+pd5hwrDi>FMΓ/u;>͓1zO c>斜vQ7۝|X+VNΡϷLx4W=oXq'rA`t53gSnJu;>57崋xGOLJp3c9V4wwFvB'pRen;by j`飯ӂoGɊoтJ٦;c*>ܔ.~y}qL bh+;'.TINCuix57崋n.|~|%2u9ъ=&]R+vBwWͱ57E v',so`M3s&NJGLz]Cwx-Nu`- `sSFl)4+0 em#hǍ\?IG+>|uBI;Zkniuݑ6Sz#NH!Eľx"='>v<D]NgV!J՘)Ǫ\6)woR~]dfEdfCK.3=.iVCE1R-!]{zQTAtAαSqplR >VXJlw ?4(ȉdGagz8%h$rR/MQ툒 ݐ.fS׆o:8Hi[ anG ﶫ_gP#Rrti#.!A" a&( 4O Y:hҽj8 N*WsSNG4z8$$LFOQz]jiHTJ(;P57崋?)#dr&&]A]t3S' *qNj@5v5sSN&t഍'160SCa} kHtkaElҳzZBsBJkm[=T8Hܘ1͛-17ϔ.4UKD0<_ eVFeyl+xCvDX=S`ӝލ*>Н1*"|NnT.΄?l3kc{nFԯw ;t%~O.~֕{=Ⱥ $򰪌1uZ#67mOǞ')oM7Y/Hރ8,l_ˮ 9C>q}r0.Slt UWIrwۯ{C3\gҝE51̕;{ 1˫*M7xWw"o`ʓUkv_')BL+=r_sC.;5ePQ嘨ˡ|M &;է/H؁!]ح&"~HXbR&_Wv"T^:<]1.f]<ɣ89 ;·(d@L"a&]R,Xk>v#knʛwmC(:/LJ7*!w芚fKa+tܔoL7sul>`F<+B|=zn]/pOMn;HDrMoMTGI/n }5-'[}H*.]Uo;]+*vXϱTʲKFۢt a%3Kݭӛxym&h;!^gg6𚳞ki~`|"&JݩfqW{xβ榼tQq:#?Y+\ܥBA:~^qVx96䌐.fFuNIݮ<èÓCXctIUS5ab.f#*7,rQb)(^}ԅ:tI>jg]c-]L^ԟ}?v)xּjxǫcA}q)5thnet?vGB'$_cfo;9ƩUx|(r"@#}|M9nOfq\gqYl-A^"=Ntv-o 4Ok cؤ'=tqGeOoFe EZq.ZRةJsC.;~LJqR@ϝ"Xu۝]XCtiF=^)]v}b#BQ6Ud[| Lcj8B ysS޽1c7[k$[FObXJZrV;͓6}"unCbX,/RA>-Z]޲>bARj!)%Hc}K2βe&ThrZJlw^X\e,oq~ ')(T鈧N7ːYc䄼[u->cN,dX_Q%q2~RcGKl9Bcw$:3hVM'E'AMc c;wjSDT]Y47 l(8p("NlAUa[Úp B^QGK]Q-z_Q5vq榜vQ7ąoQc"m# 639%u-$JzAESeUz3\%j=g_{Ξ~=/+jgW:aƞ͐oHc ]*8KκopKH F|hȪb'zAx9T6V9UR#]LQJ]R.s5{8UvM5(ilE$""ِBwp8d/S Aua2T"8SKiWEE܁oWi֔ESƪV芊rQpd]qrOj];6눿;o=\#^jIg]ʰ9ifc:tؤi%v+ ݉+qA`iKy]Qá{HʹWb;?%BdؑI T kZdn3(ƞ᤹*h+7byu;t-,:q}Uq".^Іn.=e{SI9e{8W^CV9(m([Ż?ݧ<͠z.!``ЭhnC ;A8 PDZWbӳ*<5#tEU_ߺV>6|W V֕ GV,dW@tqZnWgvA)U <ӵSvat?vGe.=x ¨˹N|W;7n 'ƞQqTǓa ݏ6"JډU\oRظquE(u CclP .~@A<A)3>]~7GglF=0`T?;0ˇM7[trоOEKׂ,8hon(Aˍn]jy"A.t,&o 9n;_:qB0alxp8]'+Ki.Y>c t?vGKA[鉃j>,aҹO4q}8.KD/p *[P̱Ar%lwÂ^I:Lw{،;%?lPBwnv.fpJpQ84>N)MJ)Mn=*n$i|*Y?v9WΎ>Z3N|I<{8JFJM9n;/ U(XVs =(H ^ jG#vr=iSLU`fدXxem)}m Uq})uZxl,ڋl=9B|{+{ `K8nΫvD fO.rD5榜vQ7~AɅFps )Ú+ |srkPSyinʣ)]vG*HI<׿|FG$ )#z抔D!.i%>7U[{%V{FfjdCk#@Q[1>jE݆Ľnp&]vw]W| *:/fжR)!_A+T$-c,عTHtݺ#OE qUiԔL]i&t{Eeh8qp.8v./PB_8ͶQdUfd|+a`V4%g.g=I-禜vQ7iI@+q#ٻ/' +ؓ+/;ԡonC=i-mW疞qsQ.f9 o,v;;- A+H|xĪ J`'l;nbnRz_ҕ/z\֣J׫J=﷢J'o^ItWl4kޡR@GqCܔo?ݏݑZ= R&0ޥd6DzȻvu4 / {IcG*f*n_/Ů<+pmeBkOQ#}o&.tՍtcҝ^K«[䥈*ř-­n MZʯ8W苃I4v }My@?v߲_-;~F^M@gѩيm 7J#]|lR~ϛ!gk7.":*%:@w&]R= .ɁCthV'sP;z}5(wuoHl+*WUgQ?g]u\I7bH{ +tZΊIl2|lRI!/ )o@\/nS;JfL$ݣv+>͛.e=M\nFf7xC-yUKQ>%W䜈T_4XHvODfG%,摧2ؚ{NXI\&ۈV6f3?`!ogb-6Ak4ř+Zzw[%U ͐;2sŽ!/{s+ tIȢ"M+qα47]fтQBā_hvUJǧ42*O Iw)7Ɂ_a`WQFv:fvFXȲmțe@i{ߦ˂%i;"dcx"b%lw,Ax6xհ ','黻lWؤD KZ4bO*m1 <+ ݧO%tEE8c]ՐoWS#F9%27VBvO<2sF9%a&Vٞtv{ޡ <2]<)]v˟*_nPL7wn]4BR>M.;8ծ-vrElw4[Qn@+b%TT\~=N ˻ȓ88P-ؠn;䴔Sb6N<%,S";<%yJ=v5DغB;@57 !\7Q/h9D3] m+>t34bϏw_"m.Jxe)t?v[ Q\@L7LWRnr̛H*yd4s|(Ou%ݭJaӢt[ainʇ2L7垳waA:?XU v7"  O*tԏ㎬Rwd.0\y,P׼ D JC{'K GƎ%#aY-e.4#ˊFx;#݇F5Aii t8~{tyjRWIPCq9]t4|o-I@>崋+ܥ} g|_I3/+0|_Ⱦ novR$(Eb1Zݩ6 t c,9tc5v˵Ts>%]v;E-­|:$MǺDXf$4pktinet?vYnǥٿ }GjH;O@RHƓըCA#i Ycz[Sd8@Β[kW(e@(K7tEB&Otti5MVUdqAAxyX@oyZ_^a9G]Q;zeK=fT#춐.fẌ́ \cΈ u|?-p!7zt"Bܔ{f ># /yF(XFt.5v einet?vG䛈4WM5jFU"QMޕU(7/Vt?>6)EtYKeK be+{"G㒱=Q,YIz@JsBJkLck#|' X8P]bD; @E;KӇ ()eVc7( 9{e=WM9~ַ@'[UO4|u븡\İY·Fi Ycz[c;> 3s5߶bڢQ6dCpM"c\w4'29S̜il;+oD4[s,hx1wuS;Z,0b16({vQ7Ǫ6ʲO1|P=?+"XJ zҭÏa5ҳrN՞RZl\@5]uS iC Q}Ҝxal$._o)t]5Q&9s1K*g.>7崋p^8ap CLɯyD)ʦ&Gat*rG`NbNʩ+&w4Z fhpLE0ajGV!0aPGjAcB꒪޳AJ{VsSޔh ^"wY[ac/JS[ru5!PO"#<;.Oc e>ɍFz Gj!?B]7<*Wz@rSMq RV6%nc6URY )=[y,bX^N%hNHi LX3_;3S PvR^23ۻ#'i9Dsu,E[?=E)Ŏ+vj S%OJhe['vѲŰ)Xai: Yz_GSq#1jH>NŰP=Ūq<'u33C 㣂s!kLcӳYv/. Mݙ nv,lA@:(uIMvm"6^sSNO~Kh|"/â7Ζ:I`GHϒ4gEiNHݼmOє3Dzrԁ;')Z& /,% ^dHw9XcOsnʛ/M7͟by*v#% ~ẇDؗFPCH5+=[iTyiNHi #u x̛ܚm-M~z"s@<ԓoF 焔@/hRW;q]gjQ׋pת4O~m2yW5%"D;*57崋n*qG 'b]"rK7y8$#úI|5"9!5˶I*H[$a󽮌 ^lKh"kBғ$ul٩Q?IRZln״Gg;TwwKOq}GǂSUi $CV~o:Q|&n!q tz#Ua3o>F%aҡ©'16k*vmMw?p77]zԗs 1Lq=KӨN:Δ@/%/~Mג3smXU]Xkl;HFk銹|[k97崋جj:|9 4ɦö+BqPҝs*ڤ*d9^}ކ[l+7`WXT %UzaCNҳ]5˶F.sVDr?f:2؇I gwT\A-/!gugkknet?vGa hbK0Puɗjޠ'Eݘ{?:MySf,b{qTR~TX7#2rEl7)H]&A\5{?[ ^ҫ^XObQJ .ЫcT\qTmb-=?aǙɁREMY|TD 6tcQn˶wİ)DȏQ]zq &1N?61СIsBFZ+QAj+%\I3ʬAeJ9wx@~AB-!HjG74KD\¶)}:j<ʴwUcL=!+j^}!H.ID twܰo)kVUz6\H|Ϧ4mxR@-_ Iꉊq8䉮Fwb{D8k[m>MTZ=qKރ~ j+ KO3z&-Adp')i%ݾRxoͪnꚯ~ ?,0 k8*NDwLykk[mj ៅş:/:v:%.FBkK_;"pJBS-6CKT{ߜ9FߥmQ܋YRp:$uo"y?޺ZFh:ږw~{&XgА =XSe|ZZ x`ֶ|7MmK{pt^;Je2ϚCk$VR- {Gos.oږ/#KSUi/Pp7,{t!=#2Ђ*mU, ݓkB2m4kW.ks%7Ge)o{7Y)MqbQ/tNGjuਁôY:.QC(.:;_ j$^pb˺߉bXGPc еY3d 3O[$`;D#gaK?~'DL*,sOȈ"R?Kh]6SWO(l*ֶ~Y;كjd]{ P} ÞW/5 \AׅmSdW|[08j\se(dE0FVl(=c ږ/~z`$s_'=i]t NepR]r˺ 12 bSaSh>ΔtJ"OPd/HJ)MχZC}rlфֺn EMP=]!cF:k[y}`n/X_rliB cC+0gꊺp$lWvcߑ>$o'S6_p'5D3qpc;@X-lXSR{Sw8q95oשGs**MQUZ⌕P% ^2 ְm*N\+ $\g/M*d0\(NLXT N;N[خږ7b7ɰ#a@eQ}[a,OtMx8绢 [<X wvGι9 莩+r%BTf8>7[fۮ\ږ/~ˣ18sT_=j#mDa\땃k"_ B)`< 44qw =6U8mB!^[rFtɑqp0.Nm4FӅq U9@k<2G;QWt~Y˝-ȬmJr*ڍ;آ׿V;/֔!t__1n)#^uzKWڷm=0.S8S uض[svc`J3/G19|_9=a#o'h;Fۦ|;/`05:cAahhсBf`DL`~O\te-1m7.g,վ]W]7$Aig)C+?@|t׵;+xGn{aJl^*Jo uX|Sr7l\pO]0G`tvU"C_jS{5ܹse猦VϦT>dʦwi-ZjY3 W5̬&=+8/o CuU'*dMۢ"?S>S7Jd,d&5QM'oϦ8tE~V߭KU,\kqѦdMQ>{c|A}^&-2p%\Uh*v貶˺q_:6iAzH O sB'3Q!XYXvXy0Jkһ}0O8q_,1[NC~ªB7Gvx kǷ_;-[cǶeW-zu}^(^w 5aGU8svk[nwb|16|O |Y}alKO%z& xmfA^=d[ K*owqE lPGF(oA6{u^[6!ySnOwdF}aN~9l78ۜy #TsܥPPKBophozˠ-_Q&UH+ٞ,ڜ|hQϦG.@V~=FLg{Mp-=僙kk Rxk8ǁtQ8_m,Q]GUkN;grt55ۿeOs7R) @Q{s{)DTgs@65kWK;w*jTJޑeBw\y遠Q6$UO=B@ЀI2PMϞ7K?~<~h+wcHx?!..Ԍ]8=QJXre,*ĤjpўPH[TڃAtvbkp(mQUTvՏ@Mw]Ulx_ٔ=?uwmzw^]^Vuoy O GCC~[}\vyt2^m6mֶ||j erTςD^GeSl(\ߤNk~Y;_gߎ 8*XEO kjGF RJbmQG 9~IosyMb"L5<)6S[O 5jYr{sMh 97Þ|܈9Ԍexl>Qr\=WM6EvMO7}>3Wv,'BgJz7"Lk.ׁa$`yOdNohmv.}`7kC8\5"mⵑOw~%3lT8{gP\u'Owc:CX2;u]FYY D y8ķғJ k%`5 }XSOTJtjhv5KS<.: 7;a1 *`>:8w;FaWA&N')PS1óZa۔>~;py f@s%Lʢ© Qt9vϙgׁ'"]0HyWݺ=yw\c-yRmS\c /E[f6vښfVL*ڃ ڎ`;@cm %Go}1aULj,qPvNzԝR>Ӈsݡ{Ks^x7'V 5Uԅڱc܍¸MRC_rR=s0ya>H8Fֶsgeu;8KUīq> }-P Ugr혈k["] ]/'OU@zh/;5O<*uVpDV]?gmuof0m[CWMULoek2UnֺJ8:Jö).q8>1 ט9 JV/ ?&Ue~itz-#C3-w=x=_һQ"|iQxmatvuimSD4fs~GgCۊ:!@zRփ#<rn#WUF"uss/m;69qYnQ$-[?7 }&22xW^&W`),tm *2Oʗn5U6ljÆB"ֶ~Y;!8݀樣`6"`THnyT->tעv7x< s:9NW;P@)(tMe8JB)lרam ݵG;͝mn!r$~''f8C{F-fsU6MO>(.?]=!pvyg\L7A2R* j] `{d:kK"wŷߙzإ k ~ ~׾n_Tnp8B@WXre_>n#hm kڛrYju3c~QڒtIGC-b o9zjLOGxumZ9J  Z5mɏ  ] Q ]ǰ3ֶ|9t{:A>gr>lyWK*#pl> &0Gw;5k;kKLT]3J_͘J#߄0&TxQt=˶a^;x;O4Ϛ#4r砠+&Z5EpSefc׶Qvto]5ppajQ;vH)׌j%Țݾ% 骮_si ~"\H~Α/VMRao w# u[߀rJaT/!]j!+VM~ kƯF|g֡g_qtBl"~mD#وݗ=*t(mR(\~,g(uL aeZأZSC.9СFqDڗ0iK}Ѻsy{!ÅG@ GKb@"(]ep]-hO\OSPєȭɟROXԼSE*+l'k[ ҳ-kF7 sK3QVl:*ZD \ P,kVkF[2VP*)蝳V')녻"6KUEXbcJE'LmoeG-_ֽ瀤0e 9Ok(Ū8O^ % Nftxaπ=E ݧwQ8jש/J+$Fpiu.TQ]ﱝe-9~IoA6M͆qPǯEП7%,c ˼n ]?q$Pf9;#&s .ĚHߔw88VlϟHMz8rV(Z5\EY0DRl(**NP3]Ωma 0ø?Q~ƀgA'Jy{N͐zn_jޘx}DVW YS{| ??➝r bkp7bݭ~Okm˺ߜ@-nfUS! f̿2c vlK=.=.n&jo_sEQxVSy/f9oRGE͔+ @O$qԭB݌D,J/uo#t P%o#癱 '|$OXo|wށ%c&Tu7һ}<\>4E/b\Eƾ|IJjeEUV @ږ?$Ww*8R&UO6'd^5ݻjM|1V<  ]a{Ƴ-[wΆ9p,<=^To(nߥ\58bt`{Ď-_ֽ6mV]D_ۮl{3>wtMLn@Oj׺ShՋCѽ~J}[UߤTߔM|ǙTQ:[h[6?{b #7ox(7ug;R]CVq]  |QQͬm 8nb}g|tvCv)_j%}秷3+u5-gN悕'jl@=h{?N;8j 91d: 3aIOb]I.8\@ i| $E-?4oWCf48\=iGMjD6 n;/lȦѽyԬwغvOWr2-6OF8NNzᢇmSsQ>/0'ۘWo;TOF㽂5u"gy-lCN_;ބ`J8 b=P|7Y-y?SjŮ:9@_e>duL.ힺcmuohEbKEJ*ęeFB옗n̬^aL]/)fѦO_{іݜRW{{q/w-<*]F6R_CEk[>cߜ7gt3'm4g|޺;9p$V]gt?˺\c C9R_VUzx2B\{9%{j9¶)RSp?ߜ^ݍ=8\OюUu~g/!-ZT^]~amK?~'(1 y@ }~uث'f9/]Sy> tU\<˺ߙX)7+.#4wmߝKBe~ [=pe;\˺>CH=uz{4UQ=O7,Sϫ] v˺3N9ǪPeruder'v Bmָԭ`h5N^~;H'۝/XWk&'d q;0Xm)YSF.ӻ};n޳4*Dm6Әkv8qmkn|+od➟voMߩXlg,k[>9Yw(1qV LyQ;%CU D7mR`muo_٣.&֝f/=2 _c;OѴ~Y0cIǩ~^vUyAPzOb*`yjP G-1 %jYrelߋ*bU4eQf5ʴǥr֌h ډXWi;lږ/~z~׌{π|\, ,,Lt`V+])i#-ݾi%+OvfmCfmtQRiX3_ chsU~/3Acu^c= po*X/3Xi[Qp 3-HLf͙6Az 5+;V7};ڙPO+ ZюwS#КéX1Z/1A-Ti݇ Бv跥I(mS;{w ,Xr)Y!Ʀ*F<ys抙d-Y(] S.Mp[S~6a0,"BآAPl!.L}Lhh99KQ cf~|~7u+KjefȼJN/+Wzle e|;+ QPJ(#B]cvnS ¶sw4Ve{2[ԁĭV[w wiȒngQ\ ' O_l_^rexlLJ4FoWO]ƌ.iaFs_UxkK_/ xlqrx. ``4>H҈elߓ6rK:}#כ_`I{LU}?ֶ~YW0 z C}ԫptP:~đº2[4ڶKNy3pܮsOR̐.,ˍgV0'myS~]|ݕ[QkqMu~#e#`$E673W~YVo_y5<䋕(| v%/SgaytM6gwU`bۢ"Owݜ3һFhrsoJo#(B]7 3ìmw=Ej8OI!MauBEYH8uM)kݪ]-L=]܆߸m̄־|N(#;Mפ,dش>=uUIcnuojuJPcjcPcj(L_ïrzwcKrv;F]86]^;ҽa)Ģ3X K9"[M~]׉Ë!ڏH#_ֽ؅d G]iy4}7tjCbדmH_)U̾lgk(k(toy&7&y^ęqfxп=u麕-qrh,G ۦȃ[HO{1#, E؞œQ#V}j$ ]%/e|rb+3~F;vO:]5 8@W5kny?KY7Yuږ/~_E=G]&Ze}*Nʺ{@MNmI]M!!|",3wS:8KT~uBG~z2aI6yM-_ֽ=r=(~hA/]P9/fuvCYr%3SK?O.֎ē=(~;œ֥kjgh7t7ۦxOz'K;s a~Ngw-㲺ul^r" ;iZӋH{_Y=/' LB @53^pU W׶~Yۥ}?7e e D8-&״_~|PmG(|PlN  5b`5M*UZ]ZLOzsߥ Sq9R'_xC(LY/]S; %+>|\ί(~)҅* V@SM(q\y\i:&T7*_:R#o:'uȲ(09;ZjQ/tPJ+XP(NJ9owL2˺8rܛ6-蠫l(gmuo\rQ2bR*8Fj5,*ƴܰѻ]6֖<Z׶d|ջQIۻ^ *^Oʷ'kDA81"+5o6rob{]'L Gg*[H sw{I*,,U[Mfo O}>g( (X/Tw,P\>41Kw:%t+YSG~OK;Sz+09.6|]l: o|1څ=lsEvR gMqsy/~gbM&REl(@k)ts#o#8D"Q8/~gɈo5=pȃQ+U ^Ve'\\.32µMIb2uEΰ՗fvʰO&8q.cVEDy(tnP?=> {/80Ii HP3lׯXӺ#gږۯzލ : (luR ͣ.T&BEv&ѩ<.ۤZ}4,Y3yTݴv$fUBwīyN/֮j}S{GrhSRx&7*Cԓ}sz{VG]Cyʎ_#u}^ d`Eϛ 7+kK_;+>kgCSV_E6z $Mzn<Ƭ9o{:vfֶ~Y;SEp2)-Z[R9-9~I,7JUdGO¸UY]S5BfƼ*Ifm|Pݾl?_#UOuޕp4no,N]ͼNWB%$8M`FW/lxW2ԣ{hW!9m/a]UV絑Wʏw>T-|ECJ@yC7\/%lsFRQTRmᅑyIx,;~b+N:5;Bq>%KmF]M GK/md+Fn{{7௜{cG)_9*+==ȣsKP=p+͗ICk'X[rj)esgJE,{FQKA]P#YX3y䧽?:sQ*ڃRv~g[Sٌ >+O4xytMH\5R+3/~g| 7[}ށU@qhtu]xMto{߰m*F+兤$We'ң<h_>gQ"urȵ2-_;!TK;%Wl2zX7Ox*\+cR ݳۦfz|ZZUC.<4{q3Wj2+l֓KwAί]PU)gޔ;Q&|e.sa]ۍV2q;=%lw-J_ajz*1@=W1Nu7k[n{%03 gQx⹡&[GGE-!usyjj s k[>9W ^#G8#JP[)wu08gH*팉5FZw>kʥl o;rawpt{vaHG~YB(GS|Qv\" c{ĎprmߙqpE]OBDK*eꥻ˜Yى>]v=Š{y~chAF bЙ-~I. G N6vA\a)bң{r#9l*:gިMkʧg"aH$VbkZ:i׫ሜvӄj؜FRM_f]S%K-ٚ!fݭh[B;ժ%[5U `y$ou=ƕChu!^=7S2WǺm .)Qά${bMK7{9:S~7+jc J+QPa,1 TŎc[m4-]!B?iSw'}^B\#tMv -ۢ"Eܞn:e[X? G-yc#|;|yE6ݺyq^\ǣ{(C"VK y[:\&Wu2~Vޤr3%gW ?ږ{5h8*1'DZծPjA˭UtMey9E%-ʵvm߹wKm~SG k+n|76ޗAa8$a +^8?ۥ{ϝT;QR3&#da Jެ a/D1amuo3(Yd{5egA vaAgXl(am˳7;cvnj[|޶c:T'/^${=ðmokuo 99Gk\ƥ#>j3uCږw)ԍ&딾 <P)%6gw'9h<>l?wJtfƠD8ҖA? #|{yMӁw/|to/tD[rŮ?)o~ap#]=,Pk#ShӎhMoۡfѐ*mMoLNntѭgmy!|pto_eZ ׄ}1ntb~> ħ]=^Xre,{wU>#ܰw7\e}GNje.p픽E?~]'_(lNKQK_*|Uh 9XWl zmypȪ{ioOIy70gyo]^c;QY[)pm (KOIS 6Нv~u0]N\lg.kK_ﲘ 7DҶ ~BGԅ9}xRM9o,MZ ˶1Οa,%#1Fl_* Dkm,5.}]%ꤦzMÌe;xU&/$^c;>˫w&=lZwжEo+zP)佪=Y"wv%/YF [w+m;zm˺Y䦜v:>,1SQqtMeS9Ehl%J6:ysA3,梵G{Yo#eW2l(/hW{{>]C^+6Fu٦̊5ϱńdGd@7y|P+ a=h3XZ#cםϚ,Ydyx&THgr[N KLOܸ@̖32pәy}ūw{. 5?}*'Q'ү2nlSd48PH`B3Z{3͇]؁4EhF{.%0Xޗw!8nwߓS|:M0]F`_sc?+'MqB?~g p s&e̟~&< pU¤]5k[^mstoNɉ+QDYBU=.]SGm+誥ږO"qu;,=e"fjT'rhr !NKwig'ڗb;my~?~g#xy]]1# Eo?#K>28J=.=my[[ޯe`)U {USޅ:aP;k H-}-9~I9']O$^Z%-Ы-|DHޠHMsHwk4mHymd2;8m[{SI+_EW;amuo3TSZ:JD7r2.M`s;US/ۙa to3vaH5"vI^KuS()|qtM(2)j s k[n{}L -cg!5r((xF`tC/zv%/hK>:%sIXhw?' SDg N]UMaY(hfۢd{u Zw><]8J/z?ط/BC蚺vA>jmi[ϱM7ϱywsi̾5aH 'ӗG>Vd7]`{f{׶~YMS9O 9zf_͘f %kjCp_[]w/E㛓==ڱױC]~.Nݱ'lGWMIJbPߒ={LMw8o+nUy4;B>5>ȺP9om~uoُ5ɿ9tgأ =P`ݘ:m*z% {ЉMqIˈC3}QE׀soё]S9kR-jb+s k[>&)pTR 9*jȱ{j1 9f i}_ɺ P浑ѽ48GRgpwB;U! wOM*k{4Yږۯ8Tlܠ51=МޚLW;W[;-򞾅m*=u5#'Fzmgdُy8L=Id8c*pI ΄M2?ٕϙ~Y;CG֎"`'CMOBW]n>tM5GVXmf k[n{՞dې٣,5}h&ϐ#aGYnzmJ;3YÜ>tF)/ɃVڄbҭseI]̅وz7RM{u>]1~tXX0# E[fWTȍ.3wyBY]_ֽl]9ӗ^ z^#t]S9N;-t+'wAqvKuo_fKyxw/)-Kjy>y8װs~Q%Jcg=}I>Wl^_ֵ\u =Y?fGc+uh$ ڪ`{&8׶~yw>N6~TWO煊NK%^y*q~1ǑMuB\%w3#cbNnP)oIgEoR]Xߓ~I?[ɽ™瀰:Ј+zB{se+lȽ˺߹qUa\ "bvbR ՝z*7o#w`Sw\=";Wq?~',{B|u?(T}ZꚒmNθ[+k#Peh^?VN@n)cgLL6vt<' GvSzge'﨎lݏGfܲE"tUQ!*vdmK?~g~ޅ^8 ¶>}3יCI]'"+pBW??Gtʱ˺ iyOegPWv$ATY[wa+^B;a661f(~lW\4ީ:SmQLre)Lن3pW;Ӂ)P/ݗ]*p~6-)_ֽbzƿ 3uNx~lo+:ܡ K'[o~}Sw #QXʼn}Xp慣UTCq-$tM@3TE5窗gm]\'OY'Ok'UqB/rWݶR:FG` 9=a ~Y;cPg18:O A\Pv_,G)tuvX߿.]%/fN\h7J7tE6WdWAŒn8mi#ĭu56߮6T_m-GwG4Oum_^reW]LG`S8$ڝ'IS={R?O٦.DvwlT`~Y;ߕkPUiN@yzBTk̜hϕE$/c]{w=j"Pޔ? aO %SXreørF$CBX Wrd *ۓq#==u=sI%WTxB(mm6x8nuoR[i:rWa D xq21xmSqs)ֽN|bNhȭPw·Bfա[! %jXr%3/Jo&9w'߶XJʇ*;S5|YnږWЏ7 [`'`^a(@ #{Uu%ChF#vfmK?~_<^KLHw+jޠrxCTߍ`lwץv{Oj@6ϋyd=EC7tE6Bdö)?~'n6 V+N#wՕjA;'5p͠m+5mCwvֳ5ںD>nujnq_. ]S%*9/ao9RFto[Gߥb%CHē?]t8U,[īXx(6K=-*k{5jB^FP "6Yֶ~YE_>d8jQ'~ꮌ#Z:c<э1DU]bF-x7Ͼ_^q3;"iVˎ(=: #W]QFU4w*,[ߔS~o?N'C-g$o+{V+u{pθU-"}8uT; Jӣ]|:R3?el/ɸ蘚v`{}bmcѽ3rUOqF}Ol=\ס-~gZ/Mݡ wo_.z杏SWҮ BlhYl7>m#=1°m{#;1|A?X뻪j!`{c;ۥA (z'goW&a Kt{9E KCN}AؚPa=L5p9H7vqMSŷP/#U'{cbӈyhz.ت4[u5 *8e{~娗w%xa)s);7Go)_գɥ $wy_ux/5J%q(:ϧ=g]=m*3x*fܧh0gC4eQ]3 |#|-!zIݡA1M&;j3~ G3j$ȝy{s.* ë Zlg-_ֽk|IG3 xtxU #y Oꉾ78?n=V-_|Ge:c-:{N(n#s}ytEٶ9mS 9Jo}{Xw8-vr5բK*KU#u:=8"a;KX[r|/JNpoꑑ. yg[|8OrmS|NƐ?1S߳w_ B*VK\mb07N}"aGy|w 2bWn_~nnr~Wv&QGeDu &x<)StbS]SWIcm{T?~;<㌀}5 =I\t1{*kŠ89hoLixqeYIWl *:^j`T/688tM85~5:l[Tby];Fkwv{s 7Tbh; 1ްvnq6GX[r oX}7̼y!+_c@ԋ@ҩLQƹwXskJjowʖ2Oqly3Gtߦ߫ˮS {5(8CW}wnyږ/~@qR '}9 @>n^e_ҝލa3vjvk[^).qPq+T*cyZ<^eNtE6W q֓Eqei=x* ^ 3pU:LjM67Attheą 9Jlp3R7 ni Pnps1 /np{zWl 'DVWeb>tKE]HS~ GItuvJ^re,t/*Ģ) NEz*v|1*Ѯ`6C{Ҷ( z:p̃:*W̄"Fђ*gӺ[5z-*ŕrw^ 8@KI*=۾2yPPAs.WRO/3˯+pgw]GR!Ƕe:\OB Q.k[0j~g e|;E)J G K7Fcuq@.nLܗkl$1t臣{3L$  \IyY ),;o&cgѽN@A Yyji*(oqپFzy~O:C]~j\dˁ_xY϶uM@;oox:J6=ykjFnV>TO#p Wմnn%/!E#p6M|hEvURe+a4GLt9bh -}?~sy :َǠ*pz*Z@=#*nzE~L=^[r[&V~/ӧƐîGF.!bپCZ9~I-:pHva cw s[ny$[.%yBr\נPਙdj@s.4˸tc4}ez%=: {{,@b8P 7KԅQݦbėw"k[{Sw6viҟ1x?[P{tuceђeMxЙ=i'?kVFqL-.a{O]ǰ=g}X*;.Kܔ:e;KR+G>j|+g]S#NXp4m]]°4ۜ)_ֽΆ ql[oGyl@q7$Qf;`HP/5F*oӯʰ}MjQX GH[molwTwé1ʧĩ$J VZ%/wEHQ tV}Ks4\?mtM#8P׏8oI:Ѿtos1P.ZzUjhGh)oԈT\!vs+kK_;c>2rm)B24d[OX}H_hw8Ai@#ⳟ?~'(k. Ӣж%3qc")~tclq~=wmS➗wXx5Aa Dk?Y|wQS~ k$?-`{5:j{Ո{s^H;z|./$ԅkճӶ;:~I, H渉Hշ$-zZ*ฉ%;/W׶~Y،\Puu1GnҏsZZO3U|ϥkj?>uQڃTto(᾿G%ϕgN%JR?-xcqR/GeJ?DAkM{}&);D. B&_KNA_/zgLn!%Q `D-|,J9l75m k^ч>wlږ/~; %YۇQ{w߯Hc!)/EP'Q;4*Q_bi.*T-kGu8wa(n_`skk* tc|nP~Y;nb@&Mˁh|wpX_1u.`s-FؾOcӼ0V%:`Fr o G(;YTsT }锐t&j 9:{s QPxHwQ~R6XtMՀrv{7kK_l{@𿥢w,o1|2:KtD;A'9he=:{xRWALlgn-_ֽ&T%I8Ǫwx0$z'I$I㜨;^X /֔5<"#4pgYz1=4ep?Ǻ#tU`muo3r*eΫӬAF`kIvbuU嵑S~-^>ocV~e + ȧ>-N[#5נl5&b?~'&i({Q)j'vqeo3e)^J/ҶEW_~_-.ٲpRU+kZn\de蒶ꅳ흽r^;E[(ZXR;q-蟖O^|m&5_EI]PXret7{tr{WHGB8!JYTNI:WtOq6!ה/~gGpA!.q=3]#_$َB-[οk#_|q?[:u8k3[. ZZ$$.{ SҬw@ujEQ'D}z sd{6 Wt4\Euҍz2xpԩQ1At7;G.m xɛŀ̓7kS$j|e;ǖ03u;:՘G7wf# 2CU8TLC8E~5~:%nl~&ȶ)b~iN6rjѦ as0K \نUZMtl"m+#oU=VTΊ*@˛y >8(#pa;}!k2e]H8{#:>]j3P[V ʥk*Yt5^9~-dCwV:щ|wb$gpaVAa5wjai#uvn -_ֽ\Rd lG:6l˞[4%жEvf{َ>i/⼆* :"!ZW1J{uE UIwJwVkympU9.v&^FLՌ2gWfʇ55a뭫inamuo͵TQFftEԟ8mH񮙊YcmEkr9k[h?yic ? ҇sgjwVapze$TI37{.+l"UD|S|g{;GTVQ:`vV˺YU1qUW@2q*Yza" ]Q4M-巶x*3n蓨Dx8-՗-e>{<%U 2dm 4=k[nwV9cxD4cQt__@epiOx iN˗]VU_<-;s(Ig[.y_.|.]If1RZJޕ|q䫤|)w< J+ lG^:6A&R͜w8)+I<=WwtlylzWUce؅s/ojGy6pC}~3#8tO#lGj:ֶ~YRmX_WV*Wy ^%KT>F/m螳\6y84Sn 9jp=*@ է+!Wer4hn^h%Joֽ`_55 m)_{wgPNҎa]S4j0vvҵ]/m8w|9=r%kGX{j{X yto3.vT2tl ZB=Ω]z`;Q?X{R[8Fm>뽹S>"uB18% vؾc JO{u#ѤNw4 Qܮv ޒ a;˺ߙ7T!3p45 +P<6:) <]{zvtoSgC cΉpĩMī?|s<}6~M]'*ӟo-Lsrx 1O>3On;҅pNsqa;ﲶ!+}kGYe`eLր{ŷ;GC{Na۔wMuoԐG l)y89Y:!㨢茔Z`mq\m~_c\ /-r¿7j@ŹMyu8 ?PMEOU SG} =dMI?oʷn$ݼEE?=Os6=5>U߲LǯѦ*\F^aԳM[B]8jGWwYESH[ '!.jvho;GI]gXr0]8pyK+^{;cJ52;bJ9lp/ϔ{uMe0yYWo=lX`muoPQR`]rt\)`]ZfΤJw*9/#.t=wY6=̜*,y+?1Q=cj 0qԺJb;[0TR?ʃ%滃 W8J-֒[xOۢ8|k#_~tZj.B9H6N9{l;ٺQ 6Gt2v˺;Y΁]령nED{KɿwnB=y2g c^g>T͑~Y;:L@B}:9Z+GS[}aK9[}eK4}@l rPjnVn%zmw^ ZpɌ~!.PrtYT)F);c+8E1;Sn OMyBWJ3&!!T&Dό)jDy/]SG# Н; E:Ϙ;Et je.̲mJ}y%toohP1Go E)0#EtX[ 68;gmsm[Pc=JjNQdܔ<$fʞ~8<:}{m3?~7ZOOKjGOSv푵-@?NfdWw6֦ V^j$>w-`kV6E8ܓS2to40# >}6y\6[Q3۞8Nw2'MaJ{}ZhppyU.%$g_ Τd9\ҽ4!{(t.~^<^a4:Rq7nӖ;vFZ6{Q#[`hWтö qS~gI9BC*E <ϪMJ҅*H@M2t1S3u=Vs0 N{lc|}w\w9NxW) ۦE:tx{1^<̽(so|/_HfےZ)]\ֶ|0f~{g(tV 5ewκuFTD,sGWa"lI-_ֽR>35%yw$?V# ݗ5i 8Dl zmuo[ "$% Á]PݬwBbQJqBbf>ݯX$anLO{(v~OSö:;7O38F5U G=m3~Y[V#k ~[o1q 3Az=攛q^72Vh5oޏ{JpgL3P3o@#t(Ծ'yx|V6Eٵ軥_EC׾Vq^*ڹth }tQJaoc:3nm{gFnO7v&j%GԘȞ+`*KH[)W+( fq@خy0ږ/~g^сs|X,o2ϸ[{O黂3; ~Bwږ~g~Q."жoKڃUJ Z>U7b]S6,ו\u}idږ/~_!fœW_wP\wm~n: nUO ܞZ2.0y1>U c=yw i]s4ͺQ5m"RJ~rl샇ޔ7E{eH+ʶyM7¶x͔?\j Ǔ*18gYqĆA #uvTX8~Ϲ"Bk#ǯM/NɦJ>/T5`]A&CVZt`vAYj,ytrpz~&UWLAf"Zĉ3u2=l"Duos{􈙧HuO]MA;#*CȟTQsK#j޴-*r#HҞ]/\=K\bC1`1/(.T y1hM*ai-t?Ҷ(tB$5 ]< { Eͱ#pptӗ) ۦcnuob@7pDh3L.!;Px]%V*cmV_ O߸ԒkR+NueKa$C}.ZOGӅڑITh-wzS*@Z:p`BbStFױvI;ok[^!~to3x۽ExMk"[kkE N= tomF-_ֽNZ7q eF>9Ek0԰a :ޓqg?~sG@2n/(U|͇_ϣ[G:vSQ[O kO {to3:oaW7emjv?gPy׬|vԅ ;OJN;!em$?~D+`3^ݢzoyGWΑT g\+x8l'0k[ٝ`wNڐ3 `ϨKPHm)=NpZ*I.5Nլmw'Ri/T1LEIq/P-l4 U8]_; g2! gNsp G>}us ۼ|/=mL>{vWѽ81 Yd͘a<'j-0 㵑/~W6 jrd`G " GѝjZoߚL]D=sCprto3]eDg9D*/v$O/E>Ù'5]="y~_S;s:_WT#. #h!bb%ז7{". wq` t*q<9)6#'ݗxr@Sē&\-_?`طycԊt f<-{1m~y#Ce;˺ߜ-O9}xxꊗ@6#_ 9 r\Ӄ.ݤ}wsiyxtoU_(=Uţ19]RӞgWs^3'ڝ\to/@ݹ'TW/s'+knj@)xOErۯ_V.ѱݖx2䁊}A=.Ԍx2bכi_{Y8S[v*o㒺lXroOʧ .kj%+Ua.G):'#_ֽfg_sZgLb `:MKwsJg$J6鍨JO{` \䗨?^8nGR*p^EܗKwdN{wwz 8S]R Ӭ\Dz 0ptscnn>ݹ$tQmF5uA39{:IۑO O젆@u:mdFn{^äCsVɽ,Ѳ9{fdo^! (-]Ǭ-9~It߈8V]wΛUxW{JP=:B4U/ȟ׶~IMZ+ w>-gw>Ig~­vQ`$?ۇږ/~_j`0%( vew,kQՇJx="ږ/~P>3jij0QX#Tݗ,ZFħ(2|FUw :;ۡX#p4И7@Avv!+P/<>ڭKoTk(c:ԅyZ4G (l2HG~_q~-޻" *OW5;pTԢ]GﰶѬV9=V8}XN{ qO5@P+@,B"C ;kH b]iy v2e{Hw6QuCY>YCrs%!SLM D1 yk*Q-]V`;Q-X{F^w{\ytj;y ϧ[֛ uy!y.?#:5ĺS։ǣ9od.K5-.wĎrٮwѷJ{M N?DsI?KOPt܈k X[NIKDYrep+VWmhM痢PIx/ݗa=%6R9Cwq#4YlNZ|6EUKԎ{a;c+^/יּۇ}"E}I*$!Z*GS_zۣ A7K duTVtκ8ϙ/Ϙ;|gU0\uNX.YڒWaj󙧪pw z :y!݉aOWq?&e:uo3=̄KAԓ\FmdCM=e/XԌh Ͱݣ-_ֽ" \88Tvh-(kuM#? 2dy e{7m@˶㴢7zi*pZpDyCWTQp%kDF@?<,;mcC?eE|p8/jՄ]S5}O5UoQߺ= /~pރvyiBݫq{.߲8]*j/yOUE&@zm31a/*Ic5)V p; >=PvJ!ϺiLgYJ]cFI k[n{X4f0*UA+u&2 ]=*PFT͠9EF|Ӷ(-'@n*e#W8a3T|RN=S@8%)k/-EE v&"z8j;of@LAo]S%wqOMbmQ]/to9L3=ާ4 DedvtMHyAZJMEH 9~I,scO$;FvX,Ӂ0G)5ɦSwVczP"1A_M,@={u)*3K@]s3G>.C k y~xy+4W&YN(9Rb]Q%Hp nQȶKx*y^<EI9SP%sCk>! +]z8 gTrl-K\\Y^=7gꢰt2%%FBB~~C -_ֽ+KXWK~,;GfK*[+fLQ4#>k[rv;CE;S [{ҫBGʷA+\S6:C˶Kzm䓣CM#_V=zJƦ{.Jɰ\ȜR=U.vk#_~_m7Kh@b?2p}<5#K&%FStaY-3XY?~糿:.=~Cd7Ӹt_&B G8 ۇ٧w_ֽw4|'OjN)]ޡ𮷐?EE҅O vsֶ|1i?~Lؑjea;~W=zBTw*x@݁q%`I5%m|kLHCp8a߈>mG5CDsA 9D-_ֽlyDg>4ufð CgZs9zk[n{7;C Iޭϕ KgHB򖙺vv[y܋OߛVUy_j{k)ŵʗ+t*-_ֽ6@&0U-JakoU6\$:Iljoц5%7һ}M:O$G c/;`[ELFlD: 0FjUe;-9~IoxFm zptvk[n{fcVϣOFϕX)4,ʶ9q~ςa [<Ԛn {n=>un[}ک soꍹkI|{s[} |i/aРRS>(~?r3s.W M͔-_ֽ)<M%s}*:,4\ ǖPH뚺ZzyR1K;_VG9UOQls/8"B[tJNhM[7϶(>sC\~Yo݇|m=nJ$vWFRIC ;,Va5%7һ}MLĪ9״vW쫯)'pM:ͩu`˶nLkw BU5OnU }&|usu'RSptMx_ YK;k'AH콪m΀ >h.W{OB0aNWstv } vJ:}%D>2%٭T;\nڪd«:Rf˄![MwւUW0G5sDe1_E", NYTֳQM:Wvֳ+ rХEUKpkJb6k ۱IDMl 5/~gȁ-8i?cmY0ʒ .Tb1[e;1XreNp"|\ 2WHh7u  ֶ|Qwytoy'5qo"aEO^ HKbQ8E26Uw=l I-qV"yG%#V9պiFN4P%wTՉZs횟F.wbL zW$X<<ɺ(ꥻ& heSGeoB/BU=F9'3[5zTQiʙ54_Vθl`֖'`+ h .-BtffC4nNS~gb#Q(͘<"u0ZTĉy0clGwѯV 绞Ez,׹]SUv -;Ľ%OlfKGY"@/}VS~LBW&MEtG:;&J_;‰FHƕkMu҅/pN`J@ȶ).5+W=ƈŝ?C1 :QXfe_n<1SWT%/a1=͗8cl cz=M(.]28FQnb,2ֶ~YRwZN½C ^_} ZϜt`WEqq˺?~'FZ WYS)x)omkje'&|P+WlD)tf3I,d\I5G>Zuv@#8ëuxLÌw&jT"sN'MEf\Fнz&I=f`@z㓞\,J,WǥpSY3Vo]ҽ8L`4g1S8p|:^5~2SWssX[rm~c+fN{s S)]q7 ssߍGiae[CWo=l+ֶy3\0w 9N:JWE*l/2.labӻh]Ew=W-oY]id:So@;g&NěBs*2TMq02m{+toOYD):W;>ˎF\lε/~_3ԋN/w)^<1IG:{DžԅXЭ1Q-NqŸ朚SbsD/![ԅZG6F>HJm߉{sTwSˣ|7RSjR1G tmľ9_ֽN\6e#l_"vYc,sKuM6dcY)l_$uoX ?Qu.z ' A ߗIzsn)޶K`z(w~/ΜɷO-PtOzGw7GtvXreħ9 T=*gY ,KTM[Tg%˺Yf& ^\B|y9G|_i-3"zW9yeDZslQG~rOʽS[X)Ս=X~u뼩46t&NXFӅq‚3he.=q5^mXJkOA0Vot"]+a{/-/0oI q8*K9xz0Q8n]S+0pyˢ+ +lð˺|/Xg 99 fNܫ<3w5ޔ?:6O p.8mwƓOfF% Eا'^=osNS 3'_R#S)a \Tu>utw:u~.=r֖ \}6}s㺛[yǿ8LqɥXɛP3K,*,`ț&RK?~_}}̢\x!zFEIf~:?&7l3w/MS Kӯ Ĩ_(İ8SjE׵oj`J~%r'GT^ڵ $lπdmK?~'>_@y+bTl *oU֍Lyg6SW;z6 qG:N?wNlXߔ7p>#ǖCW6%@p5%$)8ehoĀg#0&BnC"I2tږt=͵x~h6~kcTBN#h|t+0m@qYk3z^<4{stioypLEnr_M G-Ҏ]Yre[EJ>r] )Ģҕ>7PMb1X ۤ̑+{)rO`)uQ59eT%6_Bt܅mS[Req~gJ,@˔>:g~KLMZҟeJ*pK*N^aF{~8x^&猏UɗTt3t*U[lG`Hg{a۔dXS~gHq6-b 3,6`yL/$U5~/ұKM-re?]5p0G Ya'ikƩ@KۢDre !Bvb쯅0VUs\k# 顐5UG)MB&p4/o.t GYr]B7'gRw_;2k[^(v=ZtFk!&z½Hm$uM@҄tO)n6ŷXfop6g~ǎ3 #\8Q~;HSO\;믑Bw%#@yN\郟ݳmSW0ӧwvyd7KӿXx9'( k]+, ;.+l^3|Hv#}ړ~MJe) ~/D$`(z.(# tؒRXre<aWsWS?w®B *55# g(tڹ=lbm ѽR.@gEV_LQ"RR^S%cނmQri!_;KhQ4wz5tm@q¢ȍKjigYbx Dl'v=f\yN&WR S0N4iq^+"ѿn ώ8I9GW91ɿ\ʨ*7Y0[fuo6DF6DzH~toG{G)w/g5WL[N%3^dѽNT>7B^i`xD jyVՇ 5u JmyI~[y3o\迗1-W=4ҐOB@8 XM[홣7_C 8[|WrC_Ok Ӆ4f\[.XfOo-T8u&䭞wKЎD',LA~WuVbyxs~|rqJqǘ&ơ$fLCh_H-꾤[61ˆֽSWBC0kT!m9WȻ[TDsTTKwoJUJ<8ymuo)yb  mj{w%a~t=-_ֽJ2pK󖝎`5J:ӅypԀhݭDWr*rnmp4nFPiĖB`i-^WQ#5 8d ~˺1jsc~=Ar;QB1|=pԁ:xk[n{hqf{3ŵ(P/Ӡ &Q7%; n8Dw$un=˺YU"or[Vݴ#RN%bԟ֬t=rUj^܂t[6loDRS1O>s9|;5}ߜAGq![]|ѲHeè0F /$Yږ@ٚήipqNlgK\im{Jrʥ8#G3W{a۔`w~;Sa]%QƺҌpcB`<{NKWN\]۝Ь3˺N~x'vB7s^ 3' i37Q=Lk1lt&ȣsn7|Νr]5$9Tsٞwږ/~g7S=:C&vanpUov隚փ3v?lx뱶˺߼oQJ_#4@+n)A[;/f$ w.Mtor~gR>$]Sݴ; s`ȣ蚺H0!4l')k[n{})\83M$PINQAU)0; ԑT,ѪPh!/c}pgHi*D$2$œ:\eE8-{6:1sU|lޗGc~VoI]ab{dvֶ|tto9èIDN8Ft_h0)U\uP5d iyd)߉^} 9TzMf1XR_Z֞7D{#vtD{gmuo_Ŝe#E^}:Mda':PJ8^K0{muo{1R18 6Hޱ1p/'U=6^IDmSq) ,qT4J,_"Y ;A,X5"b=ЍXX)¶)n;.o}F%oFGR|w,PK&:`]S9vs4k[ޙ?~3WU=puJ)&8\Qjs{Ԣ]WESt`t@ʶ)AtuoN+݆N>u ؚlR.6^v_dꊲ\OiimSF==w;*9۴VV8uZ ИB;`\0-(tuO^!'iݮ^—d4m9;z2C8B4W]xHF.Y,T!Xgyw68CIxbIA'P9#q^M,%R^JO!mƎ!svtoP=n{4uߔZ[<ѹ(|:Qo]+lҹyB8r%CmY[bbMU:G*&0[m6lĽ:*?l"q%ѽN >אeTwU9^oQڣ"DKK'^޺5~=";/Zvoۜq{}h 3*S܎.Vu^3v:9OΚT؁3v\!/?3v 2;ҽf6Me߀Zb ij曣:c;\re2]D ,\{&/l/3uS7uVf0M7 <]U]d˪}*iTYI-~[qgKw0el@+2\)bj{Ҵ^ EfC6XJaS t͆gQp]s׎HoF2G x:I"a^蚚w;hN(Ⱥ]a4#ږ/~ ;f?]a8 ]a;,wuM|Q3t}(`̞?~8A㾧'TMJjF0Zu?=6 8z'=f6|+ڀi=J)]\]lgG׶~MI6Iy/w-Vߣv:KerƓo֦ClXe~k[>X N+l[e&<ͱ){0gS>X)GOdHrLt/5L/67Z#wL=dHhNsdǃw֫not0l"P[k?߅I.!]޶]\p.k|P!em~83uZP.Z KH}`쉆Roby}Opfۢuo/@=7scU^~o(WU6ԅu ǻB ۦ 9~-*j6ܷkMUT.ޔ/͒TI8{6tjp6HJuo!gGĂ(%3#'w tM!jpmK?~gSgEezPHG[I倣*\reL[+*Ik`.N}n;?.׹wٮvږ\w\32|2޺ @6H+NW6'YW MF,V]w1=N^Л!?)6ZpN$̞t֥2wWޘUg7++uM6ϋ+{ ݽ!mQ|4.p(<PQ/(hB͜e) !(Dۑ?~_IhhSQL[8S)G"V>R82׶|Dzto3=(C`[m!0^!07;S!0aJ ͰmS;=tntw@WP7|KwyRcg09y/-R1\.1 =Sp0kiR`.TLQc;{P;^&M 8b]xx@g ՠfT:̹/۝=6> :?.QM}\ mo[0޸q8ͳKY hѩr7lbk2×KR>Ynziԟъqr1kjg]lk[^/Sɺ3zOz z2+T<%;&jp<9z1\K\re+k uuvRJ,&G)%E8zJAۦ"B~َV|4^Y`/eBq2BM.T:(#v:rmawjv䭎۪7?n~(y0&KwlQdŷu{¶)}~wb`>+!wJW{&PC\Jk8V[m/~gAQnWE[PSR {`>+$y!ѡ;N #vb\[rf>@}5v3v+e[xR.~#@{ 8 _uLެ3SɓP#R?p&m쥇1sp޳ $Wt4զȢ半w&35*K6EK_Yuo0欓nXZ6m-k*#pc;#\Ř@c"7^gt).@Oc TN$S~1zRW3ޞKpܱiFQz/J|կ.68]vOz~:8H7ûbg/AL oqO;X$pO5V=ڑ{8EJJۡȃxT04ɥ; )|'toš)_~_e|+GKI}?}L-,gbgtdi!t`;{`%fCkspPƆTCj)ozaFb76קϨ2mSd9J<0~o/ěsp>;M; q-]nȶ(>~{.Q!ifzU۩.: szUReuQ@JCJ搶g%csB!dsbtz@(CQ'1>Il$`XejwFzZG_ BEE!8y6sDx ׶rxto#h'6>;kpL-򮐾BՑJ8@dTZ䚒ݾ^K 误V]ݳyƬ;p*+ynYeouK?~gP[-M`/ZcDxDU'5se3u`sF҇SzRn/T|#F2DO[ѡ8:y~IDMi]FsjBSg Ʃ-p=iF:C8|%tJږo|?~%ڣpika{: nPO~USR9Ox %u#w{ }= n}6j1V~'lxa I9\/ yݠJN?gפiq;ZbϘS=xovDF`o[S/ۺdž쿛1PUVs}i?rkj'KYlPږJWL%ٱNa1*L:Cv5GR;p VĹ|Ogbqv.}מ/eŞ.vvsmG;WcCmG8|]>.ީ c~xt?띯-yM`Lz` Ғb~bMYggʣ(3l_s tMq;W}.ۀ T3qGr wJk1kQѥ(A];Qjx?zo(bOǦy;s?p4PݢV:\9hzD܏ـ[Q?;#,~b[/]S[<l'+~Bҽ#o֤;ݥ~w8ۡxW}s(f?"g]xm)2S~g_5 Ry^p(U P=JSRG\tc|brpRfȏ\Bb~g/ijʤQVYJ=YM?nv~u8{RaKi)oCҐ(n>V}RބKi]S3xpGWw {D˺0׶~Y;j݄ =AmϿ.*>h :G2z;`r^ᚒv">׬t(ѝUSC1=Moi+tKO;\|^de;pm'O}.WyrC.W^KtKT.7xr[Ǽl{o 9n/]Mrz_W[awN+dVt!;>v:*݀練w.][,]>t֠n Ũ֔w7]S;msV41Uc ߐ? ܞ߹tmQngAFOXFg4n(&Ե]|_(Km)4D:%`ꁙgSdJ;ºP%jxt˶(mumK?~\/;O6x *5t.TVQ5u*mg%m9~yws5_r:֛m(_m|D$UaU?s: $mya?~g74Yr)S.]PӆzKSC;%,?Bk[ң{}Y׃`ט*{wJ$;,9tUZ(҇SGQD;5}+_Wf巳/)붮\# ]ua;mw,@vzjT&6`pbbc*.Uv7u]l=B׻w'M ֵo4QQﲳ4XYtή4ٕ6T8NWaU& "b07/ %paN61ݝQ+TuGѽRQrj 4OvqWZLvt+.:oXuO1lҧ;#owBypAl% HhWl,%:b; j+sA|T?~'̷W o.QHhNߍGwr'< :3e&my!Vaj&kIx R)(֚y UNKQ\fR+46l4-9~I,3C֧78`z 6nKw2% 2 :Ve{ ׶k ԯ)`ᔓUۨί:F$do29-6¶}?)*G;vOU8Xuu."WW#F]xn9t׶~Y;ʔg#8'כs };ۡSTRo ԌHwoik'7һ}vGɭG帞.spi?eb5 `*PkDḶ,ѽuojεF{ЖN%-f|#l LF }Oh1#?~a~Fq̻wfau %=m3#ax<:Vc9הH5CGIe?C gQ-@1$ߘ&գq*NخBږۯFl. 걍`Y^f(dJnj姍dm|U-7k[n{'Gc jF|EkהwBZ/IYvVIvi1/~gȏ$=mغX{M6tʞ U0e2~߼1 Q `36j)N:/]SOa_E2_"CEc\~{TzP.Rlay+uo wͧ u :+lی9?~g90pwQrlM#_E;{80D+o=0\ϣ{}c>\\h)5w("XIUZZf^Gչ˺WDυ##zhSڊb롨ۄ0(Q'(qG~nJN _B{lQÌ1F} rew}_OgbIlhږ/~wK[I 8s1~1N@MiMEs %~.݀ j({Vm[)xi(NJ(_wZN+ t'цuP]D#<&.4vF;G;.As9r.ȑKwtu:rЩ5^]:W#r}٦TTsv YWm 8}龁'{vXaTlԔn?~grlPZѐx@:^RJ*\Q*vږ/}XQM uHp+Pn1褡֗ہZӆr~{j k޸ug=ePԉ /ԀMzȻ:<-ڑL<%7J&lGYC MJ E,˖ԅj}Mz]"- 190U"͑w%U&ey[s{Kʛ6;lDsJ _to7c6.5hzPdBjOygmmI8yfWcQȟx;?~gī"K/pи\kG/`yȣX_(΍"N'mw=c}Cî6]eCqo-C jYkND 0/%KP* pSTҍ6\\|>턀ږwwBV;ǧjO{j J{N]3ql'׶~ eJogTVTzsߡm+Up_BW%lږ/~6#|m1 }(PӞ4vM]͓-3\Gd `wYBx"+ G8/}'`=1|.O*4|+鞜L6źbp?~'㗱5n0ָx@-華2w_jDloga۔>9\ySMuoVf{*P::u}8zy9n*`mQ'ԺWz=! V#H]Qͽ{ެa'fԺ|nN9ww&ιfS>4/-giv#D#_ֽ#WpHWR}"GW]K~ڇﻢ@*{и= Y]1RybfinѠ355AoP&;pv=_rel6tp8^d(0בo_Gws MϢ_}_I{(8%ƠS`ݩ;(~yy.ݸGhDIݪUۮ92 pG;#=5Ctug4r @CԎMy¶)to9Uތ1.#θFVˈn;jr +yѝ9Ɂ#HC`G 渌F0˺߉@/U;ڃ]0j:=O"*w= ذe=j[/#+^}~I|$BgxGF@{cIٶ& }~_a$a$,6 k2Z@:R:϶Zk[l]ÀC_y Nh3O1,`TOSs턮lTA{Feﬨ.E gp_>kj%VBj8BAW0؎lt\reyq󢧽iG7<1k]BIY Sꬅ2BɣDAMۢxw9Qto!^ۮ!/O󍴉J<2`}{+x{I܉jkIݦnQK?~Rx^ n\woP3Xr~#tpv~8!6?{:#/t5obzDjKt0JyQ:|z(vmyw"Ve@ZϘ>c8$K<`_sXdP[-đ/~g|k3TP46cnŧ 0p4C]`fsjqQ.?~gR&%0ENH]x9|,!cgO9s֜?E4m/tos~YYxgƻbr8(ʨH*spw@ӿ]s<]s`lu<2  z$ś'أzfw҅)#Ӆ&S38.댿{~qµj=A5b` @Ĥ ^NZX휺Fz +eb$c-%I E*)wd#66D EY!ǯ.{onެz9w}hJ&$DYt d3lbfpY+to#tco:)vosb=qJ1srjѸFzF4ʉKe,P1(,xwA7q&8꣖Wc6o'ѽvA]y/Di?~}}~o[ɘ]Jz`l׌3ms_;O9q<S`/(<}Z.t`D0N%zgj,\SR{# ;t ǝ@pӛp2 Nƺ'C/fPu 9 ږ/~G8NLpk)twͮ+KB n k[n{ӮR NrEXZJוKytM7o6}rn9%3R]| # \UP7~T7.oAtNyRAoΠ7׎{~g'a;W8sxI(\IYэw$Dwj%D>c\#Q>.Hiz)?,K<1xyמ"Rb\ñ=.]{Bѽq٦/[Xsٷ͇GWIP q⥣("Gvʕh~h>P.lGaqC qImmo_a["֝~Ior6Գ??KX!jFiytI*+xuڒtqK{8ꇢZiJ+™ @Q/z >]% e)Ϩ$t_ +e}FymR;lyq|?uoca|e~q0*q1(K\֥;3J\\s׫l#0e {)m#bWo5ڻXɿ0 u y-3uU홽Q{QD[V#'o$vt7 c:>a.xE 5lkV#;O'JMҎWWCs:77NieA6'ImS(x*yW!Bi>m%ڈ/(4*i;K3Dlgr#_=YBS͑Y=%7/X Ž 40v_U%u|m2;] g1pUXP=UWqt_Jv{ܙ1Gm˓N[b>l?_}NmD+蟅qB ݭ#IO;ԭel׀|ږWjw>/ű[%~":3B8R* U]U`; %/S89I{x]69WS$O[I厧>3{qcهض)voIX~_:4:'_XCNwhD9ʼn.N+-?2ԕEZk\3˵-_ֽlpnW?K%sGx2GAzؤVe3s˺R81K>KC W֥7J2l|ö)Nwqz# zjcBȧZ;eK&<_'JjđΉ򅮲nqdږ/~g{QGm> ڠtp7[7:9Q jl˧ x_ֽd>"eIኚrHsd>}2ŽLm*=9io?~_mhptuByN9K.s3j01ki˺` >se˪)՘mDxdufaʣIlw[F+lҧ+#/6:҃ӋF])1PCq䓤ZI͘RgK.ڝto(9~ GYj|nAWwHT{[]t_0IH9'µ-{/X1gvSo7RH݋i[={c,}ܖوmS'{||~S1UlM"5)φ.?w_^܂q6L;7"VMZ?iXӻ}f®XPabQr_Lؿ=j $Su-1J ,Fbkwjt~$%9CҔPllXuKw0Yp97N ۦgOޑr{jowK|ݯو0 je876q ez& g=zaݾz3iVv 6]hn JoRJ8 `%تQ]R{#WΈUMw 1!]E{~.]Syl{( 1FױGkFːyK Mx]xh*yLBΜQmv %_2I`Wc4 ~|Q%aZ!= މ`qxᚒݾA3`y>I2E"i]S=mJ NzG@ږww,64H":]̮]g1S>I[Ԍ 8HO{.#$ Yuo9tO*Ȝv66U; NJ5U$N{\8KsmW~]A$2Jr^fȿRԅRw8YEGlgkOf-}bU[pi>4f\2=LyR~*BT 8b'ݳ ۦgO\~JҽND0zv]"1|b,D =w]6epI l< Gk_ֽEWEk<8gg&^%;(8|^+2ᲝgݸC{}5Yj[}ʺX.d,p~E=.5 }mK?~_HmgJa 7F9IKwPqǎn{c^Ski˺߉Kon3KuAvL.RoEݳ!3qw6R/}ŇnkƇIl5dos^S\b&9xp319x\smA9n*qwǼgj{QOP3 xc]x9m3t~[Gx!g]C8<$ųgtDv;k2*~'R<6EKBz%íT҅*;'\ JѽtL7+ƲPxg<׮tH]YR׃lk[nw%Jk 욫_9 QҍGy?jSu,/ږѽ3]<_}՛UMƣR5OSay=l#:"b;[>˺ߙvHp?/U;]u(2yQ`m>ʜ:R kȾL:%K?~'a[Q9EA@8)'>TSTFmcïXJΨMTL~gX_ymclpYt!ʾԍ75_;[v9cpcYoNֱb|)5P>:[S/#|~to3x{lPug>0Zyͻϐ3]{8fEWdl\mm3C. (p{"pP mHU wK@tw&1[dJ} P,̗h&FtO\ kՋiG}G:'w=`SZ+J;lBYkn螕"lb7ё?t>Wν7gkv}?u vwNTJ{Il?Rpm+wc>&ǭ[=ATYR*$!u6 mrwb.P[0T7ARLxuM%h FǢe;A˺F=:1+zh+xP<6o3p^f# %[' >/g\w辌:i6U=aI@l~gZe)hWPWWtmT$)f#ltAvPѬ~_m NG@S ##1*j ap?<G|q(򍮚±`q?ЋUL3{4|'twrIq";(΋9;z;m"2k a&^t4ڒt(Yb89i G p@5 F%.h}S ~T9YReP=fKҝ {Xߍ-=a(8Ƥ\.Qc85p#JyN*1Y;ϧkӣ{Mk17m>mע"{cMԗmzuJ:.Tnhm>׶~Y;`WQ_@ź+U0d} C&O@ rm˺߹&WWXjz#Ty;QB]5e  tГL^~&wUQcpY]nAk5n[w]F+ l?ږw@xҜoXu;cNs%G/ +J >NOt/ض(RnO{zHJd%ͩ1i(*);w*H*<yi/]\]ϑ/toMNV7JSkW(2K}}/C(hF\aRn{>W0SCSݗ+W-kwA}R.]S=ǭ-֕/nxۮ9׶~Y(gwKPD  #߁jVʡpw@_͵- K|s*|pNXt=j2^7.ίNRWC?ٙ򇎕;Xtީ#6B[y ''#-p+'eMQv/twy}9\ojjN([>r3Yjn8{tv%Ĉ}-MQEWKu'5 t;cWE5׶!^lzb%+wqݿ\q Εї7ҍK%|WV)K\"6}W~Y7Y`+nNSAqI;c]'j9Cg_6#0g~' +(~T̪4]6vU=mS9uV̳^Bl>/eV*#g/u]>+o&TFg7#l0>a ۦ"RnO7S2dz8ԅͲ4fIDSg,cȧkjDaBWݲz׶~Yثd8:G'x"lxDG9JH$eJgRپϬ6rWPkA.{vP@O{J mGv ۦxWCWS~g硳O:(ƘǗ"R>y?ʶoYu5lCG^wlb9b}^V[ i8SE-&g %3x]at*)L"4wq5cꊲmOn6.Q ۦ.>f,?~HZ 7lTϼś]ď|K?ZT3&cijȵ-`o~eo {2H#S|{:Ry Ow* [\{PlcﳏOL &GOYx@c,a{ڎ7=٭7c4H#~gƼ2\rF%UՆ%BJA1=-ht`Bא>SPb6{˾ov*`mT|39R%DVcy{>reo~ J">ى{Lw\~.B17ubDʸ.Eo6Eq_;n_K:{&mZ7MץkjfM@&'my ?~CwNPm|ﻍ0k;uiutOay6Żӑ7NG;\e@JTLM)ZZi4i4n~ŕ~}{M.o6O{_`~ޒaNy1jҎ3:AG"NKU~[W]ԓEӓf]݈DE Ժe?GS;f<C=Dʟx{tuAgvϦ 3aҽNOƣֺED&ukqRlK!5s̬9M~?+9-˺߹}MZe ;`aXTƓP;&Q@HgOM\_;0[/;=:f@q[ub'jȌ9_ֽw1zYO-2tdyƓTxG+ '`1#QsTZkKqR4kVUDr߹4|coY3J=w/ݡ-ȷTݬz3?m|G1 lʆ"uo3_,pfD YQiuPd y+T}P#pT,cϵ-t8ÓAb(ɞhSzeוּCΕc]N-TjŤ#AeH]M vNږ/~g£NOda7x8F,I  v ?$9Un.A}/yg9H4I=֦~Q7dM͋}2kZ ɚ>yאoY.鸔%]dTڷïMc5uoi3LDC6Gb]Q^@_VWt%wđL~aV="hh.q٧gz"<%gI-Yքt;Z ,_8N]:Sƒ2tEE8̕.t\gM94ëވEȆ`/7eW<zȻmi!b"T\kScM7rh:[d1Mn`$]/:tH[DZ!/:o]c^"SNy1HHפ{uHP.Oi;rmOI7˨ T4r*-T]!Ղ&Pqp@WM@c wuqg⌃|e P,GmtMX ;tEqZ]wۤ=GN;QQh=qY3/DbG&K66~t`2D/(pڔW?~'`ds4B Ӆ,IOW4̐G)I DPP1QIy8f*(PNI>ݟL_$kpt'䣪}QI!UkBw_f8帧w~:.QX tIЫ8k.\e;^6 ]'w\&jVq Dq%Ÿ?ݩ8/p=HזR7@X/Gsv__9yN˪jO/($8+*fq|cֆ\~Aw$V5+ i,FH6,mq$:i+*cU!;sg=4BwaƷU b(p} QGIűUD0VَWM9n;ޕ鶶]]!dXUi>bCW8N/wMJ6[-M*٨1:P8|rt8o.];Ł_ޤd&w{oro4ݥx;țDcZrEwz'f o);q /qN'1ݏѤޕbnZ9vn55eQK|F ]4v4hmʇW;l 7q8ݳ$S>^@3!gnWyJKتJTz0(S2Fϖſy 7DIQ+nbA6{vMJq|5z$ڏ A5qΚO:V+ITsqP(]*vqM9n[Yx-@ue6Ҥ %U,Eʆ&s[F9Ҧ$78ov=jFa5 #Y]O:NKoG0h5vjMH8^/+K'|1N[&a RT ? aMxҳQ@kBJo}^3?ao*헭-:Iw%H,DŘ,Be:v5!7˾۟vA'1왾q~m$+ :p)ERz$9İ7/C' )^SwJ׊6 `M>v3w0sc\cLP=XT9ʛv'T5TNd<Bntó?L'{B *KjxGnC6CP3O N0()yN@w89u?lڛmқ7/~a_]#Jw@!?75@e}!M3wQp@á&750'&&)wɧ;jrG^M8[v7mR;ggRh,$h%6j֐ǰL8L֦~Q7-(.m!ۄ٠|aZҘ?r0o&c6b~?u_]$8~L=" |M>;<ܶ';J +ٮ^)n;Z)nRǜ u*;\9&猪3]R\"NǨ/6;vZ[4 l0zB'tqbq7G>L>T1GP;> ݩ'+9hk)4m<ǪFG@hUvE}P#0Lvʳ. d; 6UJ65ъ}Ef75&3OG m>X4A/[JJm~4r+JҪ.Ya5ݶr4+Kd{F!צ~A~蜎Áؠﰼz 8񾄮 5E]lڔ/V]+#"G maWe=!^Z~w3/ʌLG6o{V?@ Ɖ͌1'8],EGk\G&DXߺ_tvs-zwOPCmk+:]6)g)uQgYq|RGVIMK*/.\)_zϚn[]‹[#qemTgxk]!]ȞC~'=ա|ք@/ˊQřBepzi}.fNnڔ/~b;ɴmEs*m'dINN׃IL&ۻ8O߁шO(Y 97da"~uĶdJI)-~d|C/Q{tO(8"p4ыQ.%=PvM('"#m!FJ\[Af؊%tEœ8;T>Y,<~9H~wysRǶ =X=#ԎR r^@W;ٞޏ@gaP svU4A)0TK ]F:Zrݏq1RbRS>%`Y$qi|}J *Clǎy;8vB^/f"&q8.Q yǁjv48{iȷKom{M%@Hٱi8TiJᗐ0GN uqVgZ&D!1=sфMtp!ѓNY}nIש͋lN(U|vۤt(o7, 9 l7Q))]1 ʀm֦~Aw,Gcbi,(@Q`ifMzyYV C#w-TLԬ[@LG_AuL(xA1(]RÃ8O#1qGkS^4.?~G#oIa Á.p@;,.(Ƨ9vS O %qm)u߁̤'"`=.5(sd=jW$QneS&mO4~~9 u/ ,P9+~([UJmm+ʼnZ/%#bn.ڔZ!dqŅ9TLa#%z>xƧ+5wbl7!kmu]΅J鋃VTq0~ǽ{'ݮ)7'TUؿƽS/~Bu"N:\>cXh29c>2MGPwTt/ d;jXI7c"ڵEĻ4 a2 l)kRG[AhsN&P7hmt?~GcGGC1qPm{[j \TtJ\hD ז~Q7KXd[c:5 ^q}=MI\[!ۂI{rmu M4#ĵ ʭ`'FPn@K9L8^˧MdצZn;9ETߋu!܎Ie]|F7tE@v+ 6)/I{j3AQYľ܇}6bkcn\S~$0STStu݊]>4i?~kӔ4L'߽'|7-'Eq0rvwmRtgo 㵷皅63)Ӊ"-鮿 Ag)t-eI!7o/n+APq+!J4gl1Is8[mI)jCU/f#ϙJQfo RJQή2 ;܏uC[ R(6Us=wܭj^W h KjvW2N C#vEG ]UI)ʩꄧ~ER)aq>p|zm=)25 MJV3y̘ffxq8 [2Co T!>Am@\XL^7b}SdqDޚ ۦAGSF| Edݴ6SS9L79sߞX:wDRQ2(}wբ/`[;w?{PC۠ȁH>EMof6"-tEM"%Zg#َ$ o=Ǣ4]GQ 1D)kǹYuTlk-Mw+J^M,h'tDVυ tV77َWM9n[)ZŜWH-%Jʥbr8SK.19kKNmm(XbMJ;]C9a_sMmRo#wL72%^3*^հ'Hy<+*{ ]-(Iӽ8i򳘞\_j)lJVEL IYTby|rd>ߘ){LjCQ yɃSJV;7vs֦=YsH0Z|zhh(R4ek)omy49(erQXny~[(d Oi+*@\ę1LEkSTby~y*I-Q\ ok (ySAu-A8Kw4Ɣ^/~NߌWnVeCZ7݊Q[6/3gUeI7$oQ̎=O̶g SMOSupOܓlOڔW͂QԙLdB}!~u86F(ȟżn[f~uЭڕwu V TXWW{B>dbm,i a;C>cmctdwaR׭-+[G&Ӝ.@NUjK@>o>py~Q716*>&F͐nCcl591+jy|LKw`7mRõԌ5Wq8 y&>8lIX)ygs=(7HY%U#gACM3Aj]"g)_EJ=Fݚh{j=m7(m"# uԽj ^v]tvdڔ/fSyV9 r*+ ĊlR={)<2"n=姝r @*6.О^;Γ4FvwIcdyl\kS޽g;49I8d!5bS|6 *r}kn~sο{r%ݏ 8-}=PJsgM*E'J|+*LΩk`n;`Q6 qvx bӓ|iCnfpmRjgƅ`7fu~A`-^+J<56.g1uI$ JWd!g}#uߑKx2/Nww{c>D;_) %Uػx?l*rE7wG=bXkAZM/"ZP .CQٌvQX*bMJ |mﭟ9E*֊~T+(8p:'邂m}8ȁQwoZrG ֖R7͟`MY 1l|7ֵ}uR@O"7]D5kcRe.jhYHD1}hUSoV5Kv\א$7'=ԳZY%a9?ie_y*jDžKK蛈P|: **>AժtkSTq Aqj㊟w?ujC O;OqP ]˗mRt'o1,y&11-Ko =UgӻB7\ѳt,eӚ.E+Ǭt/؂nË઄,Bo+`|[%?Wpo}s?Q쑝8d/Fr!CBWT 8 ]L\!+jU<2ؙ(]tmgjΪI^m4CC *]rpoZm§ߺqO zM}˖: @U-@'iv;av֦~Q7.)}E ԡ;IX'twT2dTi%);õ)_~w'"lkssЌA fGC`n3L)t?~hTq'-Dp:d)D=pW-8I]mIu~s24A_cBcG6Dh]z4 0ѣqexeuGkB:4ΠEpXT'' B%i(!WM +>}J ZrEn)L*g4~(he^bT`&wP3wu)C!_~G E䠸^V"PP-tSٯ(F)4ikSNgkl"Cmq,oG\/`]  ~W&+jF@&AQ=)_~![{)/β%F3WSmMT$ory#]>h;=~Q7[_N^ $LE$MmRQRJ]R in=lWo$ڔ/fݵWq S^/ ؤY܋`n^vo 1j 5SlV9J=y`zYrYbVa qvQO0Ѣ mBae9_]k(_H11LxwE9VN/Zv(δt13Zc֦|)S ̉nm 6+panL|#Mݭ$O_w.Fvm֦~Q7[ckLaIa{kp6k֎LWt:nkH_cZotLx.:.9lShMz/Q*xGȏf׵TJRеBzMJIn "|1)wSQ6(S&_ y\SB 3cЬ$t nrpnU݉1Ꮏ+98"0E#Rq &[;j"=j^G*W,Gء+j\ r.޲ݽIkS3TߏlOE|ނѠJuߏWr6SwyH|Z%]ȻmRzWc_~:slhr=&&1k0)uTSOm!Slܪ]>41tѴ´4AqXbCH ti%]Pqf> AʶS~N]̩(Y,(}'{ bW[eSOiM|?~GgpD]@stUۤ?j5DgR 9KEZFw9%ݫ9*gaIg.A~-^ɶ yb6vkh޶ws 9߳%zeK b^)_~i #-Nv* [qZF%ս 8;A]t vIkSHXO\t4x|6B@Wߕ 9mk':Pޖ랭*UCNONw{Rlq*tj`"rJT8Den?:=۠<6C39(vQ<ɦDy+{s c; 1!.d;61[;P{ DւFwXÛt `z|TւmSCn[t]а/QDMu ]Q\(C *bɶ1=XDC$T$AZ NXɹP  9s/f{ [CѡC@@{˾v$iI[M-1IsQ٠)zshTg9.`C> NYUutFgUIFkST\93:F6v6TCI]MT@5-vd{VkC.;j8j@j 1 ) $[qjy8@.%e{xLTkC.;6y"^R݅.Au o& D:f=:1{ѩyeY5ZSN u)\̯|wK.3E+Ĵņ!`+X.&v9ḩL6^? o^E vH*`&YA֞lOUkmʗ0zzE/p[0X|- O_Gr ys0T6&xjO@ў \%ݏ1-ìeع7 }US}_.(֧U}۲]m@F"|;Tw+P8@}_ 8sJL>$f9 -nˉ2)eE͵l{_r5m%7U`߼^&(|O&ʇb;t&.AMIM-)ja@,d{݆\Ta,YU~#UtFJ.bZJ~Aw;6!g{? AzG!n*Ű|,- ךe_4S;t4^~&u +.rB=gڔ7֛n;_# I}S?!ǛLG>'>McMtL[ 6 S]̘婝k_u uLtjGrzJwBօU۪Lq7@=0ώh_e}z&{m;"h:BnAI:Rv`ܤPv _D,;|SW,] +Jwa9Bw>{.ue{FpD mJ/BO[N0#~J gҝJI!xI-iԶɫ?~Qi8@wKU4܌&kU3OAŴq0 ;͓혶)_p(mRm9;xxRNfڱ/ $3[#M4Ot߁T's6,nrɛ 1iArK3! [㋪uIp #ֺ 4v'5uH:d1}|lq*ȩE԰v ѻ;{q]P%Us|jn. kKNOA3|AG yMԍgpMn)=V"'QK!_/JE -zQ7BlJ=-[桠Zmo.=Uݫҝv{VQzT+у'-+ٮ*Q?/fW(űۂ$o` &ӇGŞƲ]KKkS^o^.hjf2pXمk ]Pvct-I)B˲S6*\ƚzHo )b.(EĊz$b/Q"VAv)^5"vnY?ӕccH-DO-;.7Rr/[l[)ZrE7(̦"[6oj~_kslBh#tbX:*ք e_U,!n^Aäcz)m=x Xŭv<ۆ?k;@ªw~2hJ {|*wFP;WlBsWN5@Z{&7S_`8#"؝ :U; &wn쎂E|Z(nڔ_g/.Ea;n:ڔ m]zݞ{U.EXI7$X;Hr.- =gr\ %u|)ζ7ln}\~AwHH5$U532 +f^ r0Yɓ!_Յ)"6^5u#(^V{ڛB^M5>*\>[Õl; NEkm'4w*] x3)HS\PUu &_ClO%GùM(E1'qkO MJO0 ON{jaݗ%mR8 gm{O YO M9UnDjj@2#֋ֵ}<JB>sF]RuAR~nN1 n[iVٷ1b3ݾّv=0L>fw{)} J'f-}9W,p|;\vt3y򍫘[w߷rKBpxlr5$ۂOb KlBb\Co\zHxS7e`eZҕ _UT~^Fl X099aes h\9vgC'\˗JL7,AM^mtԎ|wohӋR֣7 iu|Y~jʼ8GC[ 7H>{OI$v^:Ld{ySkSH|w⿋.F&J iB7(t/ &_?(Q$>enlcYEi:K}Ao ݢ/+/|kIT@?mgGrE췶M8A[p6hFT`ϰ`=mS>q:]vimʛM7טsU|W#FE怡TdYCN;ńPE ѯ(Ϫo'[t1%--\rݏߺ<{q.X>H%^t;KͲ=b,צ~Q7|~3azVDz%UϲBյ+nM>7B?³'˯HMϭ dIհ+ܧݓˉ.gS 77vAUc뻂}5n1kS^tn;*[춢Ջ27Lm]Ge&S { C^OB/:=w//qsq-tt(UMNů\j{֦ŭ?~(Y5vͧbwq[n>6͕̮[HJim =?',j. WM8yUoE A9ʷ",QA@WM%]sM7Uh8ؐ-護Yd2WX%`3?s8v9n;J=b@Aߋ3rSqx߽wk!8Sw..d{ E[RPͯ1uRx5_cł_(V sPwۤtErWwxzt}d[O*m:W*]hj&Fb3 Myy?~>yq/z}̶Y}R);(J tiәJhJ]Vs4/K~1C>H.Iql뢉HCqkmu*<SRhEFژ:ƨUljs]Q$D>^{ڐ/~R>)VIP)QӢou .AIG.َ֦:wwĔ44dyLIN?|b؉@c 4kvNɧ4C0`J{~heߠz@M֐.5v֦| ?~8CB@$e|֘|4tgaXu`YꃎzNNd']2W(smrv/m n~'0f<_9v%$HChtQzr,i,+X.qz\vJW5 ntߩ͐X|_JKWlG]qXIױ<^a)]^bomy^A)g-r)3zoB/{ϭrۤig|c;-nC;m̼+n_pV an:ɻ[LTw9qP)]{v\`Fx^DHgGwj"Z,TtI5?Pt9&qNI79-.N@:pSF*l&_*2ݥ3 &] ϻmR9MXR  >)wDb*JSo"}$R@EzH#})BklilnFǯFD<{7 ]Q5 >0 Ja;BNL `|s|1Sӌ]E{>mڒ/fQןil=1ҼD`R QvUbbr8H`_wۤ<>f_k׌w.Hpr%:<͠{ /$ͩK/@l6]}NQpL]qB眛3@jE@)[׼^+cn^)_~}2JX:j-7E1+w7{_ARO :o'i׮tzt3"Sv}7Ӄa[V *P#;M2K?iL=}fs=`Jy!SsdZ3qHWNK3ڔ{R3Z4o`vM7\C D)s,&T $۰Cʨ6)͐w ~B}>#9= ,Kg Jg;'>ڔ/~fraDY$uZ I,{yLTh05X3ҳMҚe_JP8)¥Ap#B hЈɯnӽW=8#IiƛofCq0XG3a1^stmRP;y F#*ɹumP\bQ )AŽg=6zkKNON{x腜ڬꂊS²TCT*z!`6u*fhDE ז~I7=KmM&SYG!bú.F.6m. RBdCxy "I4-Yˤ)~=(^FYQGZmfٜ.)Aݴ&L7Q*rkx鋪>ZRß._DamtS=ZڿGȅ(!3n QeUpuD (k1XZНj\SA*!H” Gnڈ`-;5JL'.Zdy֦~Q7ՂeusuTX:BXtܲ#7ٞ9>#_V uuvڔwA8BD%@uM&Gy6Q:BM.AqZ6)!Utïçm>X(DHҫGm{5 X<8zWtkUu{jڴ{UB8pWSUq8:T絼 ỉ`AI^t3*$+umRz2c;vfd[V3F7kvyܩ܇T0,-]Ĕ\g4j&ut0.cԎKAbxӕtO~POu7t4/=SW-K~J}xuO>蘎QcS#tE(Sjjqۤ`{+mn0m~Gw]jXY`*ck+A(V"-!^s͝󩋓lO)yn;f lv{8أ=*i+Q{ş%+nv%˵)˺ߑ^HX@*΃z5G]ƭ\3QsYBWTӊY~VVkS5@ʲqc8a/߅>9*S]j?eAPVI)Q/պ ~"A0h+ @emyW(ސ. N)T(H yxjxxWrŠeb'!j9(߱;8%5| h "JJb~Awrg4n2jpg]rs[!VFj)A16(.omW.Hu6ģj~61pƀK*'AtQ Q꠵)^]gu0UI'k+>jҳКtI UkGjMJOpqt?~޷]@k+BzۜG١|X0(m-^Q%ռ"T&Բ]"TkSNrp(~c >lQmZBW CWT{c}=@mPzrEݏ@@{g7 !KJ%oVq.oVM9n;{䷯}d(0` p7c-ԣ)v{/f9E>_ & P):;{{S.)5&&w($n#$~pP~=j3]8@ nSJ()e^ {~~PECyh}e;TJ'=<T4!{C&f;UQ6Y\MX38CZ;4~@ fb;"۱ڔ1FNKNSV{Tz,=َNMP#rKXgw1/zz_u@<5Cln|c =6(}O0{xJw-Yњ-.xT K G?7wȗ.Ui] ݢkSk dE'$H Wg[ ci7Z~2 CN"-+u_~;J{\ܟYY:Il8.߮{JArzJwn2utܥЫ:&t8 P 0lGTkSNcP-UzgR܇%~RCWT35j'Go~Aw_Ͻ_6TQ΃fL#RGcg5ZmeWw-9ޒ0? jTSS i&]RiRB]#}gUo0I7v'f{sY&JRCb" Tq7Vv@jmu?LumBJG!.c)ufEmf ڔ7;n;JÛw dwtw#у^)^A4; ]Dd;fpmʗ:wtu}հw4^$5 )oo_OPů1p8mRJ1ׯ@ۇlT$~E@i,NDR;Y*6ړO M9n[g *I*f+'D$huiA&@2Bc,d{FB 6N5xj1܄3P*UtI׹r7tf !"Bj8uߩD|(=9,d+!a%)`1B&&ݛ*rwJ#\8}l|+Yv%,'>66w ƹ$+0_U;n;}R!"ޓoB!Jw31*r'tEEK8l(HBkS=gA'sx+(y AQ\ݞ3tEUjV«ѻov\~Aw_z[rX~9:5~W_S[1پu9n@tmI¨O/)t?~O8Q;ݵ}L/L%-8%ymMkSNN1D"8bAbիm{| Q]@Oܸ(k ]rT\8.:!?[BWԎ )ݩBkSN[hf$@/uQF;!kuIJ8Ia;$MTiE W3ApӼ8Fs);BWT4z/6J0ЫvYӰ}#vE uE]% ֺEH-M!=~8KzvU?kMHݽ}cxi`U{EU# .o ]QQ,"y َeM9n[Vv(B$({^c;؃#LZ6]~Dvu6)|z`dxd“GmR?!aC]R;j0Y vcB.| D@j߂g߰$繢='jץKjxQ^h.Fcv֦~Q7%0ԊtmNuf'i]!HPw*L)BCXML7-OrY>͹]J|W]J-_nO~Ur. >lrIC,s2f͡MbaKc3,*nor2ڔ7n;7_DQpϹ F]R 8BovIX[rUt|&wq?;%sD4t'QɃ*"βk^&MyўtѩI"ΰ ׺yPX~D@ŃDaj٥&jlWڐ/~N[M̹O ٛYRAyұ`%uڔ/f?H6Υ2N|BvҢQ r HWTspdW7Jd3w1Bp7W'?g/RC^"]Q|LKL\ 0s;T8@<&/B=GwE tE5Oc蟮rfN\rݏ?3*6:(#'VM?29EBWTӁP5ݨ%)razݏ߁ U3t$,pT(ra5 7&ݫ.4ɋ܏tCy\rEwT$T VUA70 M8';jy^#t0dݥ)B0w*v]AM5'p:fwi찦|kb.Nj]Uhmuߑ,HQW$)J)"AݫƊB`]}ߝ Ji' N%lӊK/($HG'AjM~'u4akݪ{P~o2ٓn;B ޛ%fv(|T%8*bab<ֲfSLiZ~qv6Qn'%*ZHqv@6@xW.[K.R#y0p]2|7(+t:x;<':Qc7dDXkV~ǽ+ Y8/){Bܟ*u0ώI9o\Bw]%zxv*O˫"JbsP\!GݺtI5cSvMyUqfs p0EiQ%-ϤK:$IvV o,Ai=mz!TuGe@xH<0 "F ۦƑ7Jw+#+ޕ#GEw ;-Xa_q:#Zܿ-*#˺?θe CQ׵`@+',:KPtE`pr.E} k/zO!wZ :zf"7).qjTdS.Ա9ҿ@M5 雴_wߛ3|T(*/''5_OЭꃯܧTd7jRto*;܌y :/݅W[;N*1T]֭ޡ=/۔'f2+8I(05(b|:ѺP3p~EvE-ڟ~1ZCVvF**Za7HF[ȘRΕTj-E6{CJa . `|% }( k.s\6|7<rډxRuY[WutN4l"3VlsN)۱_)>R$k+ k@p ۦ(;Ժ/"czܪV؊msB]ScW>BTOܠֽEG=]1akFXuԅ{ 0qkLۢ8ěM_6Ũ4|^*}GN1GIx)jkLIoa۔>S%~g3(в.>Dq#/2Ӊk.-X3}&bG;+tBr]gZȿԒEےYdy|:lShK{v*WM,FyA=WL]<™jف~ٞږ?ĸf_i0~qu2ɭOzeg3et??g ca#m B9-w !Dގҍ"svU.T0#pta9 Pנy\` GoQN]oepϬ߬G;2bv~'hxz h\~w)yRh)qRT\co a=7DY> ptMl3Gاj{68˺.UGO>by[B"ZED|Kh΂#Tt5lh%KRt;Q#-zbio Gʉ(1MT~G..ɇQyX'sjrGwsjR="ږrG;a:c"?N0"GюR|bU'v%lSw0fU(N~y_?~LťwQ :QԔ;k]'QGsìmQ )DЏ7-3F2=ˣAfP\s|ĩ9)t%m{ږ/~ \[Mz'oץIoRp}NO˺<]U[C")߂(X¼/n-_sG@) F 41BzFOa_V2ldR6K;ӂT#Uz0WIs卑wܮַ^!N`@JlH2>H 9}\PXs@֠nݓz2w(R/FۡqَWmc9ҾsB o[ tv؎'Z uj_{cdi/ (/a\`5 ӡ hҺ-%%U<M9c7b{;Q߼+&e 1C{AA_P_)ˮ9e]}{.dm;;{%Fơ O 븠qUxc%*+ŒO;'#F|aT$e[wR$ +\VuHtMN誱۹em'{뽟|'߽J?nMo6K)RWlgz-_.NO vl5ˏFiWġrE%9Kmi[{򭍼1-4kљapn E~I>nO螮Ȱ]cOږ?1pwʂ GY),"qJrэ2;qMq6rde$׺lSۍka[VΫDnBq^z9'g&2,-_ֽNA"عnRkޭ..ٗyGm\˺ߙ w%y04K>P 7-{O]PZӘ Ȇ~R[ݾt7X;?m\]S7F=E$ۯ#/j~ /}7W4ᓯ ɪV-(.O0 ݃/lő*|?.Es>"8O I?#[z N#ZD8-nOF3(kJjowGIOtPţpM!<..Cڇ粝Y].Ѯbp=:V|wp+/d3lAJ!Uq]GVym_5cTT]U2hڢjzN6)'u)c({i=hE CbUT>P)_LDnoR:ۦOy䃾Ѷ}P#οT_JM;2Yzokpz݋e{fk[n{[c@w5B_LMޑDIO ] v_ֶ|;vtos ^o>*@3GS8|]Okc=밝֖DJC<9x_cIzaJA}ܑO.YwR(o)SMӍZ#_ֽ,C3vN{L5O!%kRoϣs]@Oֶ_~_vQ](՝wAb|~tMe8t[k{b9z>7σg (a >Nl>j/^'M=9Xfe Y-!dqwKW.Cp%u!+ʶc^.lsGuo]Y ]Y0H=z E`h=)\ztM=7#6RW90l"-_rݕH6]6{&O~t7f{Gytlτ~=]z5~epEq0+w߫*dl'6g ϭ svPA#0d ,~Naֶ2Y;uVk!Cb_gQޤ QX ]!1ֶ~=p6J?Sᨰ5p{P+˓VKa5EmwG^T>"@1G!oUP񻴐.TJ8P@[ WK?Wb9A%U/C0Ki?zbA~YyB~m˺ߙ>:3y&9+[&,M坤`VL¶)~EyWKO Fsto/66o@1- @3 գN{+.5zbXr%~g»^"MR3y0z> ?CbOJ$¶)ZR]hx"،ĢzF^ I‰2GQ|t5ۉږ?`oޕՏlh{wPl6*WtP+p4]DҜ-Eoc|#}d@0O&\\w#vt#]tCNw!K?yF!R8aԔ*phƶ?re|WW*ڪC}FaX wiJ]UY7ۦw[k[n\t9$lrGp1lk* @Yal>σu ȍg|4bx(J(3Y$]CӐS8OmJ8Q-uHU7tq dWRhe{ֶ~Y;cS%-6b%ñy(}C+N85߹g72}laZw/Un,8Bڢl:v(p8cM']#t~>)v~U<96]_Tlz15mw)gD ={5FCl+)PP3s<̺1Ԭo(vm_~gOށX87hu-;O'wtMDz4Zcl]6󤭔0w, @Q{JMMr~οw-B s [~Ej!/EG5sj9U0NW>"*[;A~CTbјt5ۉ ږ/~27.=Щlj֚\wӞ0.tO\;l?G ܬ_~s#mܞN"y[{kޤVDS(mSrK?&\v1meC){/FRSZT1AOm0kXA)ѽN{NplFUaVFU%)ίIfk*#]pFl"ֶQ,xto3WѴÎ 5>+6^_{OwDIOjFaI ۦUS;8̀XΜ7yaSL6N2GLgMřh\~lnzR;z$vȆ֥̞4ov.TK;K^ԍ=4=e]&;T(}wJ#ԅyr7GVϟ٣{g03VfȘx$2Ʌ߆.T˘9:(ڼlxR䜗YүJ}s٦vGȇiiu5ڨgsvtþ+5U3p멨s w}7}}Gߛ?O)3E.֔?dnӇ8JcD%k[n{}!)ŻΫ:·R ƻmyWѺ'J8"t59̓=csr=-߼+km]iTA(MD¿DLuGu7g;>5uvY~_d}#a0~٠\Sh|(B4mS]ƍ|˺YRqm~6㽪 Mf5ȴ7 <#fd^lmܻ[WKIy@Tb*yU "wNLŜyZ%~gوL c0 "#}x21Q}E } ;u 0$&ق#d Eȧ3QuͯrBPTuĂ/̬'uvƨY|&wC炳n@3yTIUKG]ѸϧW4WtOl"lʘ]S~g/W?C "w=v\oP}>ö)v qto9qXݵ_yv(L|tM7GƄq7_9~Ue3ˮ9u\k_7[uEɶ>mWsSd[O  =zs9^&E Gḧ́'?t8c\^aTg{9W92p}T\!.T¦ Tޡ^6-_~yD7rM/ϛQ"Ԙ.]S2gmWF6r7}mp&n:4a|=FsP[5NP΢]Ꟶf>rQ8QCkGԹGn/\=Zvqv{D]K?+J_ܳQt~@g װ<f2/Iz9ʜc;gv_WM| qj`* Z>kԨ]Sot#8jtv>WXA~u_B%vz,Sn4&:SoyְmN;]U< ݪSo{fJבּ~m&.q՜.7ĿI\IZj {-+ҝew'TJ矾22YT/&3Ą>7yz Σj5ߗ/Ӣ{i8pO{Wo4jW)648`58䋙Mjfv*s`#|3Gg`^&]uUtjUI.)>wKwXWB[USw~cmgr_~yu=/0N~`|8] A;u BE_<1_ fvV(<] 'Ͼ53=ZWR6KיS]%/Opt~ NW\PQ !nэږ/~_y䯜8Mv_.<\SG)?wk芒#QHVLۢ"y7ݨi#Y粝myxto5)Q2v W)ս"VI]78ϩEWN ֶ/gQ'_B/gBT'FP]7gmWT}_ɿtUsϬz!sڵ ]S9w nvXreo1*hP0R]; @YrG`Lv8jΈ-k[n{C/㙶W~_A-V eQ} ]e3IO{1خ4qK8ًP/ b6-onc蓟 &hb;'l>龜_~_=޻vͮP JǑ7.T(U9oݜ_ x8/ۜMK}2Gt[b3uZQ[l%vm&_Wظn=sݑEoߞP#r|pz ZląYU~ueܫsQ7>"FOĻے-ٗKOOoG9gjz{֍Ov5c_ֽޟ`7#`{(- E,ӺjDlh0h[Mq/~?\&&.Lqs+ٜx.\WdD:UD^5-"mEhPS!SlPe{].#*Zz?L7gӯWdc3Rnp}v/ "Dl_XreoM57fԃ#v|WǕd4ADȪ?tVYn "Gݎ,ݓ+T_)pT=Pq7'Uc7mQ tꦯኺ3H0~jo(/npt@]`ږMd G:4v<WN:[7uM(8Y-BߴmQ-}䓰ѽ(5YBS6XZ(A,Ba͎ +0b+i|R6Hyc?Aߦ)h5Ur )咶EZy)e<^nAR ~RwI˽Ā;yX)+զgapF!7np<[1P^JOvݢaT/lh5p (뙣`M/)NPTsT a]`+S~l6J5x\qfpyq+FQ\.*.4 ]5@k[n{o%M:pMsDIR3f @opֆܰ@o-9~IWq70'G;uiۤ`o=*;q)_*}B~P=f8M@=Ue5klzN!̢~gR֮͜ɄB@(yۅ7HD@'M$Ԯ!Ĝrl떃/H^7;ǁH6tY֯AR;j94y@;Ą#zt5 ۉ ڇ[Gw\-0NںNCW~ wX/~&5j. 3͖:-ۆ"Vf7TGnSuT3˺9NQQg'~Fmcm]STf *Pɪ)Li<ه Q5t*cʝG[@n%kݢ27tOgd6E521*ʔ~˯-zFFJy N=?]ӫR^uoBE,0 @݌&%ם ͠҉H}kZiIՐi9H_fL]i5xGMW>SWݝ؞yz$/~s`^htUUe-*ր\{ZYYnΫg{ϴ-|Rn{@c& /[w&l!:J*F8UHՕɎ}]')Y o ^OdhFZ;Ǫy#q1Ԭ|W'; ]%ȎG>8pto3\ZvO|kSɏj5OP:_R1qWp #_ֽggDL_W3_r@q[X^3o"K پ/ j:/3[`.'\dN!WD|p.N>~pNy\ =b兺:~56Qb W¾oQޘE␺b:F¶)H. 1mn=[D7que5ճ˜vvjgvwxݦ˺߹7!)_8.*dG]%RzKϢ SRЍ'S&E4N{ͽ|=beEŚ*=-u~i:Ԗ- ALKAy~iFÙ's&0yDO6; й1\}n]ږ'_~G!R>H.bHtҘyM= $e;eKH쨈C᎙.v—l kBVwwzOh*FZwG6͐tM}F_kXQ*cA>5#9 G(k$Yӳ[٫,HK4 a.!$NpAWp~ږ/~<4-pΧNc>xyaB-_n*U u#DKs_9ٗyV:m8[c;w\'G>X隒m>}8OKۢQk[v,uIjHnޭSeBi=OUl׺jd0%.ض?>yuowLE{ЖZD}riji+NQ|R G m Ox%~< #9v Li E$ubTO )MjB&@)WLyz/;I;uA6ZvzБVIt&y/-1nL7K<-| Zߓv;yitKwP(R:atSJeoVk`ߛ~VaR02M+.Ԍu8k+@6l籶%~gl앯_hwnBO'B%!0l'!k[Dew-ܕ][6g&vڌ2zb/yntǹm=b/k[>Y)k`Q?L}^gC+/nGHZN7$`zis#Yw8~yK=ĉ.!X7\p ]F?ZpԭƭbĻ-HQӮڃD9BmiaR=Uȗv5UAXh-=5˺<^ÿ %5^Rx7/|U! W\t:v_-L<ӸXW7We`|֪y5sx],枟6s_öoY_~gNGoRl߅|7l]ShӶk&ږW<^AvaZ;ߖEWmy}~sջ<HaU)[4Gw> ]S#"PpGW}tmj"_AɘrU]As?s7ǥ۩`JSvfYm<y Tf֏ Z#b k[I03r!6ѼO> S#sv%ڑw=sic G}^ڕ:r~G, +^T/\o3Qbk_۩`a{khO-:Uq2*`QtB47ahhn/ݧ;Tsɔ#ֺʹ~pT簝sX.o.摛g2}ʡ[Q#_DԌ"!d7e}ֶ|9yo̸4 n-^c 7R9o䧍7U -1Ҽxw`aE, I E Y)=6+OmnZt==y퇉ҽNl|2fê5{ nX>3:MQx=h:ټ7דitun=%lxo˺QDQᚮ3ã䌏6vΘg@fmS2t‘ט1~GGGwПjH|Z^5[خyE66e_ֽE0eFҌ-pr|a|A%-LgYIvK:%g*~&vMZic;h*NS.]S5'z'ފMӃv#\G; 超:K WDGD#+bu隺q1u|k2זKgl>eo|*s]ϣrH55xu= 3ږ/~رCސ#-u)7B> cc$mp?DW.4amuo>*IO!q]VuUK1ۯ^X }4zONGwD]ܭ|>cQmS??C.]L»s7o!岝 Yȿg˶7סtg.Lu}TFr Ņ0vplQ˚e+~Jh[W7R}eQJ}HOݟn]S5ƖvB́>Gn{c?;A;m8A{yU3voKO7MIGwG@?VZmA,{ #ӿy^XNgy1n(5l2uh<+Ll_X0/lz^ y{zn*m5DȭR}#%_ݿt4zl?9Rr0h;{-u;n%bq +΃OK7knލ=qa_Ժyjfotkf$@LvrӪG)tv԰˺YXBx[(w^~X}tx`#Buٞfmuoۃ)rM;xB6m 5]T/y(֧+_X*lIzt Gexegiv's9թƐ VbK7-u $PaDf RF GQ=LF2I# |t>Q/f]mQrc絑ۯBSlNQw.ƇSCN)3' H#m V9ܡN3.EZre~_ _t(PvF"vK8sT n4(.^3˺9.鮭a%=8%˲mƦȷ<j~#M>4*$v6G@GDwJY׉vvY*F y`0hZa0b=]]?福 )ڗKQ1>3lrF Cl#1#CmS\cԺrvn3Z?Q]>j]fScQo5z< ܱRW/~Z42VݦO'QOsQҍ]lKs ۦB'/BiRF9;T(N6KT/3@t+sEmy%~l̖^0w åzϦ g=qZ++kJjow _@S?_sjHʥ;8q HMh;%&ソdi)pjDw?髪齠9) 㜇U1vz?@)FyAq]oɓnPgq ;͝Xv>iaݾfOֵQ!ttUq:B b@Ѻj)'/]te?+[Kg&t9*tl?{֗ fcst7r`1lFx|xܞ.R6C!t9BիNk| H*e z;u9Ywj‘T\5aB܈]8*ژ|HGBquʂ8޽X׻w| |to#ZzϷ/rBOWF{=*)`CY2vz|6^*|K~NC 7u*nuN1=Qm*Nj#Q?/3DaҊxΘMלfgݣy\V`y-F$F>h;߼_*Ҷ8计.j$sz!Q{V +NrNU)DIy Ԗ;%|,,K3;?Yߧ4rlQ+KAP.]S% Yz;[w mǶE*;d{q ,s&JL̥stM220l㐵 Zҽi# y.GPzaU^K畺PH֭L5> kK>ΓKeg}?PxVwu:[Mv|,ΎK7fzT;CrgtoshӾcKW}@/kv__\=!mklO0YG-F?e^?ޱy[DÀ Kec^z0N_G~\ 5.L*=Bg+l}`77,\'pԞ 螬mtOetLtyG%/^x)QrcW%פ 5;rO=zY[r/u9jŸAP(NkQߺPop^n lϬږ/;njxJ9^8So7==ƆYs"JM*QB`v$bƛto0 bĘπRzyuG 90/~绲8'7S M[~w2='T™ U_G dmK?@ Q_-ۣܟQ_٣Ut_ ]%=7-{%ӈ%8%}GPxk_螎m /~yF5vEFVʏ<С-8㸍nWR޶{n˺߉*pg^Ec y݁oR}vIyvP%`su΁my\;F~CĖzڝ(&o?N$SӷݗHW]1c;Yre,zߎ,rk*hTt2/"* sdKSFMݡ{tږ/~LIQ6ljBj]RKUE?9Jd;3ږOoBaw]4G/|[[grт,FKԓ樔ASc];Z5 =m gzH.6Tڏ 5=FʵGW ;u= ږ7rG;ϕR(rqʣUA#7uM]+SUxe ocpTT7ߗ yQL2HΟn%D1m ET`mSޜ ~Y+py#){D5>LK O=s4v[͕@5.h 89|H ~Xw8⍹B 5 Gq_t:l{)-_w ] GijuEQ̶q0Y҅*P CgMw63sYafѽp+%qűX'!Ϛ˯|jݠ"ᨆݮ2s׶~Y;$u|bn^nL E}eyL;-kɉ[LMKmyrjme=gCNqt a`NOֶ~I߉qpo9¥tfla<, 3gmM+Kü6rw1|F8BWmK0j3>t"dzܻAJdV8BfEWȬ-gޕre_~z8 <.YgL&D|S\tM=# tnH,A,uonA'©?h/g{I@ƠaՕFѽpz\sGU }3̰ͩ:waϰScGQNew<ozL?N'ۦ]^}~ m#(OetȜ zvUߡ[d9ő]\/ E8 QB\XFTSϼt;76S4~amK?؅Z.HUwHOf2al#_GXX'Hs˺߉p6fhP͎5ƥW>%+uYmy~_~gK{S|tO?U<'xm#ֶ~Yk,D ۄ_Zͺ_Nj?7.ۉ/ږ7jw^c"֗J=]5#hcS G%ۧ {GQB5F TkID総FW*l'>k[n{;2oZ:q`%xZ9?yN*p7.h+f#~I߼Uߛ0CW75U{CիG^~PgOtvb<%~'k2bߤgi.Mspr5^JL+2bhq}}j.{p}?p|ۿ<*+)w[t{"lk;΂Fُ=5,t>%}qݞx@;Ѵu隊1QúKY[77rplVȽM,,YW8;t3`{ƞ%/u]t&#{*Ӏُ`%}Aڋ۸\#=F'U?W/sZӛƹ/Wgրy0ޢTуT8U͌JokJPݾf{%+|-/T< Ţzm9DlĭJ܅y'rt;5p[wimoum|?*x&5y?zP6o6φqҍS4&tUp홹yk_ֽߥ(bde8Jw@Faw.pEp yٞ1Y'?=WSGf{rsDebRANIޓ vӘTz?ʪ; QLf;(L쌣2նG"ѭ'|0נ_~gVg[9? ԰tfa6MN`~>qK8ggmRi A1tlZqc z |eyc=\Yt;7ֹDxMQ!БJ^+ϸ^_UعרO/nKT78%خQڒYWǎ4v&/o/Ώua*h%"rt_*ou\z(^{XΜ{gIT{:+]f?>QP37ޜ*ZPxMtJE~'-L9X.н5tr j!%*zR3s8@6ƶ{ms%GfGlM4ueVC.pOtM|)8Xre] K Gޘyftf#T<'Q]eYbֶ~Y;#Zݽ6z 7勤nI%@mHuoهԜLTU噿d3`voT>xgyW5uMcU9F^reoa2o,y.)3E ϟPeG|t fm(b˻~Ue$ C{)]*eT,[kRH[&9w&aueׄНGqbz4Q_⢧@b'ur9kk׎-"%B;j4&94x? .6E7ݓ6(8l / ֶaDѽ&gG-uMvH*)2dk<Hlశ/wΤ%޾u(JWMʨ*7.ԕ3R{t+ny.5w^c`:ƊSzpTc|8QtU=#bR(6 g~Y;* ' gnz,"О5J}81Gw׶Gz~~gӔ9mv[iyO#j'F> TuS00_ֽƉv5KQsSM)Y)ŀ\tMe4U34Y-_ֽΐ UcCs-GuA.sy[_s-_ֽY7K@}S#J*.GpT;i\0֖l`>hMyCTVvom'D iM|^kY{|7g8oB1={v'yn ,ø HW.U۶(iZ aҥWäeݔ O y^ռtf+8 j=䊵-^/P5C NVvpPL⠻ZTszi{U)u&ĽDLUfQ%KpwyN (I_0l{w/SoS"G>#|/X%7ޕpԌ-_ֽ&cxzMpfqG׹!5?)Ώ}5C1.ްmpqto =7&0 .?e 9 w05)ܿf_6͙g1y;Ցuұ?/E7V8Wb=uo U  G#{)ԯ] Y5;uuIb;/ٚ~YG~ߛ#k7caOTRO嘭kj!:6{Yʬrte~u3r³މ*3)%]'~E8j@w3M'/;N6d<[Qĩ{#(O*-䛉Ia3Ll_9LҽpcMտ'"##A}a=)pt_z骂R^aF! 7R# v;ܭPlDܱP9jNi5ږ8\/bC@j<QԈߥn7.](<-k[>x_~<ǂĦv34)<< O]pt8oS,6w9̍F@ +&}ʻowWH4}/4NKwb'{S]gMr5בO*w4 ڊZvҍ:R6Ze;x[=7K'7D_A [ąOT̤z]pjnO(î5Sto]"ZEqϾ ܿ~Dq,KD\0hʹl:i3l2DLS/y 7lojs+ܗpnpN'i['Rn{Šg۱hb Vy iQ@Ȼkj ;nlogro?9~I.},m4E=w"v=Ѻjpf]7ٶ({˺FG%V8¯uVvMu4(8/݇ 8{Uu޸l_m𝂽#ѽΪ̕U/nrdLm /9<ȉ pEנP"zmN˼Ks&;(LJ>YRɇEօjhN=t vF Y0/XJU U PԾBӦ} v2uf!b,fDQD~`rPaMIn_ytvJ'qe?ޣ.H2늒m>RZ3t-AySnO -9ݿ߅ fIXy|YncO9;6{!-9~Iߙ*Gam<W.sSIׁou.ږ wb=%O\Sѡ;NE}CqbԤD>wJL䣇/~g1U M{H\Enų/,ݺ8.D8ҫ; L ܞZ;##(LUb#CY(BdEڥ;uON3]`;{X /_fپqsN~j,u>~듬|Ǻs9JݗO ֶ~YpqCg ^Oy珮/(!U_.% *˺ydB甏8v70}{|2wޞlNA \}O51#\s]F:KC|}:m;c Vm*ȑIξBo:ƷЎRQ^zdsG<)B-myP/sk'){]FXu]Q'v8:TW.emt9̴Cܑ#1ģ}탌PDQ FGOz ,vOz dlRqsRMV69t "tLԳDh(mʶn#`okp>HoGxmF]O6U8OkK_w/nbOK߻OyLuj+%>=cmQ">eo|Jb`Cp(eȚWlמ7}tKWsd6ڣ{qa1^SH- hsԏRlpmbR@>Dj3Dc\-oQ<~!]9sA/N_kxf.wmmw@;$SI"ZUo0]-_ֽp`YyH~:l#5(5lt7PE#?퍊k 7mSl )6]rckɛLFb^5=yu`3Vs kp8,;O3jYre+޵56PR4q"x+vٯ//@Qod}I4V7pw ʀD2#8(eZ^cq@.AN h+:ʫZ<]QHJx;inet?v'3^J4xX}iu dwRTT%FX*=rݏ |I>W!MzO?=a,F7Ppѥ. qȦ\5ܹ)]v13%.1ݰ",13KLuEz芪1"3-W!1ܒ.~`@?䑳04qm(]qtђq"טWBwZAcOߍ47UqM4:Eb1_;VNbM #Q$# >\7Hi 4" 0Z*&VZβH4bXMzǦQjsB:%4Pbmoep$l"R#];İ׀zzpT_ӥzVɽ7|2? =ew.Ԝ#ѵ7anYFhNHi VJɮQ {eEY ]Q38{QBhi j:J8o뉷lkCU:\[KTd޺ƧPW9lT۞t)8^Vo6j*>K~R'dnAdc*ܒ.f AMqꭄ׈k`ycAz$ߗҳ\՛}iNHi 0T#%pv/[8T-(Az$0 F1QV%kNcn]Sc㏸WEb' H4Q2Bb >^7&U*ۓDlʊa'M{ kNcoi՚Դc`"=Ԏl\h6X[.̨>j~aRZl+k$aİ:/2EDk1vEc!q<% ^*P ^^vkLck$x_^*VJt}\ɭuI-/ g~ؑf~۩z7ȱBT1][܏pO;^''8SrI)2lwd0XHy68l`X!#=wuI5B8vl M9n; "<}muN8vOU_NRUꞭH罔#=v+],^+FNWW@]_&I*>uS6?3ilWM!]lvAYߢt0 (4)%u]|rQ]sSNyĠ l#D9C+ ?J8mmt0R4vܔ.f!fbŏ/T,aC_7ɯ|FU<J`4(`uvzX|lw)7[Qb[87[h `5_jQRz Dj.oxBX]禜vQ7V"αKGԹ؅\cxQ,׫&]RѹP&hƎ^M6CcwDZ)ܛ#NZp4K*Sb\ JgCNK߱Ӽw zWfW FIw ŔImk\ufY_XW,ߵ$Eal`jg}cG:tZ &>3O K[F8( Zm )Jg5\š+jE4”nG~ܔ.~ ](V\ @(W CݡW3>MYC i{vܔWen[XWg¡%_c5u'>C1(SIE4A:rMJ=1 K펺z9`K WtJπ!9% Ps|O䞰8] Ne1/KV6kFCJ',+g ) r0g]R1/{[B.K;rDH)#- HC>CoW#PZM?>冼!͑HmeEj!e3$[/+ F0m e$ݮ̊h fWe[sC.;`yVuXށ_Jo HR[ D;J+弑P*I!tYc߇57崋nz''.WCubXJ^ ".=H[ #hԦu[sBJkm qCgO2gӥʨ%G!Ki7D1,pR-duẌ́2˨n&=KEԨEsBJkmu:2!j>$xzt=]+1ç 8WVmEk%5ؕ३?.p?t'29HL< iTiNHj{Ob{VG}zOJH4ŰBX蠮9!5˶&o!n ӰZfLQ~!G'钊 ;qP|*ݡ(5;~z-R®NcˣE(%ꊃ:Տ grAWT԰:4FMcG | tݞLd З+VVtW{N葨YFFy! e[}MLZFn5PX."s[KOQQb|}q+qQApMۥ4zVߏG]-L/i^x7K97<]QѥLIpE;MGwzrݏ )YQuǎSGDXpcUwo\ӄa՝F. JZJ2e3 Q:Ji(SԊoz(@;kOWvau|E. x:_bX.X](n.CRuvF՘kԡ6i Ycz[:YD_bX)@/>6ge,&C =ZHϢþRZl.$\.hރ>a@Az>(&Hb8X 礔A/۪zNp=}xdd+U-R=PJ[2ıg0ƞ^)ҷ#7bR8hQҋ-Suԉj T^@_^/!]ͲV/1,7p z5ۥI7Ԧ]K=Kը$嵐7˶:H4ÂW.V.c0 DX #=kQνRZl\KǪaѐԒK~=!Dtz:*VxDs9'zvsjM1*X%́)?/O km8\GZXHBg,Q#AE4Pt.jj#7w5u w\CN ES3 uIuƮ)]M<%͌J%LeT /Ρٍ&V[=9#wBB Iye[#K);`6+* @EA| gAcl#)/mn]&ũ̥TR%L~U`J]\,@J]2IKx.vK@`UBah#G t`'P` n#2nͤBVz}@.#tAqxfRB&TdoAՁBGɦ^@ +*]EL"IKcۥJv'z$@_?+JӇiIGørEl2P,«yKʴfRˊ]0MT䜋N=mA?sSN[roEgӯ`+}>#PΦ%UurN\:͗xgtݑp,9ސOWB(oe)q zP3\;#HL;Л47崋x p= 5z]HJNP:~@![}lRx0hMN>Gqd_{Uc_.Hq_8[O,nA)斜vm4ֱ2]ݒ(H(w7}c^ժ7oPo4L']=OsSN;ܧ;ܺJ@CXUh}*]R#c }#ׂu73sSN:4D nU69WH>4GձOPk`>6)^%ݏ݁E.AKaU- #D'%5#|@DiMaS8( LM *\qJMPJ; 57K};~9{.8_yÂP{0bCA8).=g ^Eq^qNJj-jߵ >-8G/ObjTǽ՜e[#xcSݑgF1[(Mls>-ER{ݜ:эM!p"[rZJlゐuuT~[N<U|'\5SblPZ R;jv;nr"l沌@s^.ž_"MB5#i=b4cjШUkDmMFgط(=Tk^\9>6 A;j+\Sv8H&bf!*r'T 'b;QnTu*Z6~E?-51di~Lvee*b t +y[1'==A(*j%hVhNH6}mG_9@-ji hm}/) KjE &蝝ƞaܐˮROcc*JS8ppvؕd=wtr.%v<%ݦVQz^|sOn?ӲQG^g"x%i|u=[۝z/壂O1d}lsţ۸v w;=̻鑘s*3t8u לe[Ir#+.⳥b֊dt<^|FϠ{X|6 gC svG Z6tS'ZA!|{`,z(jQ~#kԢ愴)NVto DpOm:*IOvx\bՃךRZl+?8ۻ/1slH"as*;p <7<_G&xR4ơG>V̈..pv8E2.C\|nx&5ZQHKooCM )M2ŏ̆6w |%'l.W4r,r~kAqK?c;?v7jeqp`N9( KW#5Kv mՌyeGu.f5xP{4A.P]-.L혺c[}KcOO~T09ZJil58p*mTkYЈ !.("47崋8FMJc9/Tqo(M ^ :Mdū8E-yQv{ d(4בi2e<2Ǹ|LORT2wԨC! )1)h˿Cx!ʆ3]RMαf]PsSNN7t$*|h<WmSMݬ;o'n.(|A'fu݃f>M?i)uzƚiia]L@yvӟ#4KjG^rb+rv'f`i`4]loޠ5Q,55VIAE8(.Oϯ榜vQ7G0B")Ln11UDytkbݠ.fTϒb2yz|*=.a;KK_3beugFIkuRgUltyj}mc`yR ٓ-J8MML׷Vo&8OfKK==:.=:)Ʌ=:|l|z2 ]p4v܀47Gm>vf=ixkUK (xEi{T'gգBUJ+J\iaM9R%,).%~1a'Ԉl 2ucWwjniu qek((4( cm3_CTmKibۊR&.f늱#XWpIzo.tMuU(ܠr~#F%ai;iTυ,_{_>:J_. l]K:˯8x7Wc_57 rtV;2uY&u*MTw8Kk0>v榜vQ7Mi:@$BIEk8xs H-Cz$0(K.o2RZlkTJZXji0eP$Յ 1 1q&] i@n;P'Su5FI8R>aQp-fu! =FJVDjhM|Ө)گkrO_E-K[.hyySILJb7TX?vx/r loHwߐoeW+Lqtiynw^0|6ĝ!.C5V=]sV̹%]v3lTĢ=1ṟ2f`YVCc=}sRJkm 0Cg8F87ZivQ:c0HE.@#[t89yq.:<U =;qhT+)3:A5БYPQ|l*10jsP)]rܐ.~<5ӯOQͰ=|a|tIM:K,=|Uܔ7 cbߞZ1oawS3񿔤;a\Dc9斜R7NT^p!tF3&ݭ^)ہ߸B5gldsAoB-2=ҧ=cEZ===pGn;5s6_8kA]2h)]RY/7eQ=>YϹ%]v+h}W9v3Sbo+K.A~!+z?$q&1vFܒ.~s$,lIB73(wSAZ&ݮF: Necv nb+mW/Y_bw^G2VvIWC)ChB6ZxOq"> Cgv1\Kz!҃65;YSl%@c8*O4'5˶zv@E_ѷ}rY?҅:#1tÀ׬g/Gm:kNHi Ian$d^fe$ =^&DΥh*]Ra"nGIc7)X.󮇯c jBY 4;)'ukG1h[r%ݏ^K%İ 4x6꺦S<qbx ’010 5gBy%s0ӿTyqqpV8Vດ?}lR:{L:GXJlwD}nE^9rЊoײ-23(E}>ROzvOq8 Ʈì!]{s_}j=1*(e49A4v57 #/+M6cPTSQo?̖nӹgVQZOf 9n)߾~. Gl"Q6i(49Zqݩ4'Œiܔ.f#c /wwUY:&0X7%.QqvIoܐ.~NJJdSsAFaIxeWC9P;~R"t&4vNinon;}f{vO3NY&QVt3xVq:(#Z(;5|.ߪ 8Hb']` j72KjD[WY>"Fg]v/:S ;ipBבnT|LL)*ةv9䴋nҥ*^-J~B>eCi\%>!;kKc]47QI7hĦO\*zUd?9›'2zP}|B"]\AڔOsS^Tdnq>t5gyTJlr$fHTDA4]kkniu_Е6!9 3MD uX+*BWTpAH!]حe+ AY8⠠kϾ%g^A%ZQWT,qI-UΎp47[ hd|VQ20YA udS:+|qp 3?9W%C)J"S|Un(O;;/⮜펺E֧uezuw` ?oՏP[AAވ=OsSNsrHY:^ ٶUw!ȿ.HIE¶ƎnM9n;I& !QTWlYIv qw+IcWKvQ7$b \<,譽o[}lLµܡGIcOܔ.f98+cU B\>G4chnʗc;NNGk2~7sïf\|QtzV3;ypIa~RIc+ת_T|yټ/{#!}FCHHNm8K/xr+ү'R; x&$guI9=HG{ ݏ ^k_3,Ԏ ovdͽwEM֞'w՞H](ɚɏ=ݏݪqls"vy+a,u#0*nyg yqƹ=,u\:k:{KG=ӌ+8D+ ]QyKƎȓ榜vmj7-ZDkUҖMYiM*|7oVH(=ε]vgMe;b USlC/r%KjF-k#]4vZ&]ve@G4vo%Ww?yVVݰC\BWTd2\cLƣ%om;pX8|H6Xk<|B]RO<4Tt!4vDMycw.&۶W|+J}v6wpu7c9n;|Jw>&oԡG0sxk=zw+NC~M񦱫Wknʇ|ݧ$V eJ1w[?^3uqx؁)!@Icw3&TdX6$EWgro5]v3&NJ<:nineW*t~du%v3?r֫8fu̿BW9g[l>vL[w]v"<{͍hxpsR9+sZLtyx֬l}Aۚۛ9\|pA:7x+a+xѥɷb̌>6>MET],sWeդvEhM*0?%CEdkV⒞-͓ōQȈ.QV\X5CsB:PVmMm%:Ko/yw6J;вKEKj;PF^4RF47-|NCmiͭl~y學U |B\>6)=r6bq:ʯJjb9m WPKtE8TUăE/rݏӝ\(xX`K't*%& lw=BJ lƎjYn;R_.$NCsӚn梹)B6lN ŗ`qZ^otzd׋c ]Q%.K>6)%.v!-YjE-S-i W'~cALi S|lRC쎠=k6RО O:@ؘ]ۢ|‹RОڛgA吘r=u8,J\BL]U.1ǘG1o]vRAsW1KVʾi).re]OD.*F}7 YF-B5'zָ6eDzCmMlQu|ס9v(Gc ԙiS: w["Af$?VX(umrݏݼ` D _b؏{'{bѩQXcZMQa՜e[|Xp_ݯ߽*gxޖ7I1a.JRlkؽNW)qwAI_6Zu9i9*PA)]vlUUMqpMځd4^hG$1eCg5jΊ0tquސ\iG*,wvj4! %}@pM3>͇WcjennDʷΰ{j9{;l.ʐ.uGb$KK]5']qakH\Xf@A68Rj1Iwzr A= wrElw/Dz"*s.5Q1U(Rx7qZY l.>V>6)uWص\2VƊ<8ߐQ:i-KylW*e4vخ榜vUk[-昴-dTpc|-IMml&2QFc@+Zx v>8l '脍#<͝@w8i57KH*.ΆCFxJ5Ša7nSOFp7ihL2kLeOC`‡ǯ4dɯJLT u fcR |Oe/q{^ %! E |Tq:D b M64xvQL1t*(GUɛ pnqAH[Э!]حexB'Hqp lSwBl< uoi!tI R&K)b~J!Sa~:޺v1ht/}$Y ƋLWtn"Ej)j/Ѵ esk'\a󸗒ya5^0y)Uz[ñó)_J7lwODW|o9Ĩ^Ŕ/-Rw KЌeB̖Myf[W""PƁ 6)H!]vǦ)V&6˂\8n%'N -l&hEm  ;t즨88/$'jYlr'PW88?.2658\vAcw$Dߗ?{Nd"'碌3O݆cx_h 1p.ZbR=_!_GM84 D&f#}/b>CYVD8Cyu]WsoȷJQLw}.nETɇqc.+6p d@mӹ5 m. L[*ؤtdYuݑpU8%,}1(F M]R7g%]Rԧ.I&/P7قHฝeq,##BKpcӗesG>ؤtq Xq{~)uNR1 Uft~ҍ7z[ܷ^F=KШ$RU_@/կÒrېsfy ܮT\.نy5pZޭ%5+42gc 2!_2%&Q ]bqܔ.fÑJ 4žlƖIվ3#͎T4nik]vG}4bjmrIe?k#ǎ6rElwl|cz'nψ>osDnO+]}J 1~U$.{0(7Zȗzz_oO0wS)]vkWˉúp\(=NfUO0#MCzNO3+:ڂiuq ne==4qL%Zhh^U#lr,:4xHȫ؁1)]v+9m2MԺյ<*'ֺjaT 8LI-4vMHv!zFKI令=.et^!F%ܡ%δYÖf=>sSN}?̱\3kۏ ndW(]:+HMcwܔO]L7̛ @䈼xT< st8>}V5v`m9){\N=n;$"'p6QzH bNGגX5e̼>vnX=&ʼ1lwT.l*ιo]qE^^uu19=R;4~&>)ts%1i)uB#]=_i28BB@>|zH jUiیtm3榜vQ7> Cj[Fp9OK{(sKN:ޥ_p.GXtŁ&:[\U;.(䉉]\3Ocni)u^a Yx/^HЀRxԐWXxUˍO+@vљBܚrݏ݁={rӖ(mZKFXu{CUAzIf$lb[v8!5ڂJ+ɫI5QͱA ji)uLj(ZŰmxQI)zDSa[oըK+愔@/۪b*] *0B㑵e{຤y]Bc_J47崋X &8ל(X eX V\0! :4ORsSC-_t d__?-WPZh A 4z Rh2Q^Z[fΑOz0MIv:A- شؤ"`Ժ.~wDJB-e K/L]ʏELƖ"A`{ 2,(w%Wcp]afය W)Kꄻ6SC wW=-H!ҢlL%9:Z~YelS9lqgElw2qŴT&ZfYz&ݮY*5x6iiEeO.fu6G9U-v'syF%U3GAa=m#LctFIISa]?.)2QƧ?t|QcGsQO.;ְ5ly:3(=U:5UfؤC>SN.$?Zr!Bz95ȑ{n%]H3l\~>pju_1` ]H;䴋n+U̗~Pd?Fw_ܪg~tz.p=붩Q24'e[tŨ=@WXݐSC)tʧzLwHD"M ]iZحA@2fna<i+*1UJcGcsߐ.fuyQ@|Vԋ Ĵ9.܃c8@L.{DM9n;R/y! #_ H|)Mgzܒ3=VzN{}sn=U p]~vKc(2XO_[S,c+b{`Bc|{yQ HT}??+;3I:eۢ/UM!/>6h*?Fص(il;h,z4He/Yd&ľ΁K=KH5 DdHsnwq_bpJٳp&UWQR?Ⱥ8 yYo]QBcpAC@/pCq*Gk6O(v(Y| nt`W|0NؑХZvVк6/6 ˂ޞ7`.BEYE/KMyeh8`K`۷tڛ(:Z)~H@>%vزfqPod%JG?mtQE}.fc{dR0[πwLYoYy+ADkD㺼T+N5bz c7<6(_lqԽF|y.]`k$MR,?v ͘8ck;GPQϢOk A*DA(Y%k}L67崋n/l}M^Ⴝr&/oa_t 4[Wv]}MܔW}Ǧ6 ,2_cVE)PȌz`4>jiUcI%BhSo61=TH ~]!j@;ʏQ2[R0"m"eR84q)]&IޔRRU]LvJYa6ՄKB(xCV1m_&*T֕(BSĹv~尰՚IDàU$Pޔ b(@a ζvI:D.~N6#RDAz\(J-A@"5JcGAMIt_ ʎ6VVӹ ,q|}l:َnW,>vnō]νH ܶH a˸ĐєY"1DM9ғ.?2НJ:azĐhٵ.gz a;D.* T4_"MO i<៾Cgwz؍e]>q3`k0* 1J;jG"A +Pf2'&-yœ`*qWb׸N=xYX|}MPwp`or-U<{C9-n;#*A$K[#2҆E">ڡ 򭼭T ^M]ez":P^o'0os nڂܔ'tqůXV+~eU\NoM/іc&๊Oве &-aVi)u r/d5Z+Xu4?O(Ԍg覱#WVsC.;jr oj/LE `h9h.GeަKy>8@1.P4v|VM9n;:kq2 w wa:afWrdfJTǽtqQ !]ׯK AaUJ8T*ʷ򦞥sŁαSwMn[7x29/:aJƆ2JŎn쪹niinʧN;:0JvcgR؅^Ia>Iaf&ERX;H auϡ pûlێ:XUwvřdƎޚ%@4Z_:nsػY*cQp,FbSZ59)5U;q!紉=`d9kU&hHULAᨡ ="o dO/-` t4RiO庤n+0=آ)]vӧ) |/,QN2Rꅛ⠹tUc?vknʗRM7ۭߥN^@LoFnZY7B=z{E/@Vw.~4v*@j=zScw2Do!Z^H5y7 ]QQTGA+ǛrEݏb,_VPX 99ؼrݏ݁D0āYpF?>TKBk`9;=svAcw9:=6tptܩ[z$ݥܹz橽U a M-RWAծ'k' bp=PL9n; $-{mG}洹v]t|=]QO<ۛp/lIa쭓q)u֣X]A3~+1wcMkXl qqClկl.~r}s8hH mM>w A7vơKܨ;eᬪ nַD+N7LeDyf-6o x㚛rElw@9zwr.Ұх#\2I0{VuK`A7x-,n;am5`p*i,IԶ"Q`I Pߴ8,S.,5Mdfk?vG;o~*j3B#rWe1+TA˺͏G;pniuqdftp[vȓjRe%黟>Mr,d]dPsSTOnIc eWpFַ.EtG΋MP'I7J Z6Yt%Kقyo=C-inɻS%Scĵo3;§77ReeT R!]vk^@k*eK(^Y&ޚtIu E҅{HcWܔ.fl9е]}>5aTO7Y9ou3]R.uyNx~iu`m 9p,<metQrrhv]R+ȁSBpCh~KM9n[{eQ*aDQBTO/ͦ3BJXwa47崋nŘRиTrc'KlSiwk9($LK(f`bvU{/^z/]^9{\+*#-ƎVz-/ftlv좧ӫpRzZ *K w.ߓ榼+UzS/kz^ 쑭X;[o-^ǧκl={hnI7xU38<\uswQ/?Wub&8u!_OcFsC.;vƚcXkX}^cSMʔt:gTrݏݱ&`d/sXG\-<Ȋi\3V@>FgVPm'rElw/ ϲ4E-] 7{ ݊cػ87崋R%e,$[O*,}2?  q}^)w3쎴AQX;]EL ', -"O N\ך#j97  qﻩ0*{*.3cG#Ѵa k"S˙ i Ycz[SF5ݸ E=%cz.V#IP~G›ty̯Qc~au:4c/ Z@jhoAy!nJDb[M ?!yQ;n6oiA`rR RP]qW^~B~Q[61&%Oۏ:]T;ͯ_8]9VI@kV$9zJTˍt+Yq/ n.CI`wr8oZMOVCJcRмא.fqM7~ybdWbF+F%tIhHT4;p4T+Ɲt Ε)f:V 9^ܰ X!?jIXcaCwY^)ZW;J^\PMuW0duŅ º/z3a=!il()}6& rN7&%]RAt ൪r"!]<1nٌ u&XPrSJRKԝAn)q 6Ck 0=MzvG(MDʂX6MiKXA%tQ%cܔoo[~Nx Eˤj;fR@ɀ F!t#]ژT}==%bݏ?+*w<W^]Wר^[")B]3Ks'f+lJf}K`)˙u uRm׮F#q6ڔ/f F߅= HLbW|+ޭpjmP.X[rz ݏQʻ/]w,(n?ЏM*.gS2T ItFƳDU{w;Q~F!BF1ݮNf Bnqfޙ8/f3(*NUlHVEmf7  \tIjhD6)|h {F~\gZufsѲg`)3]շL]v_:ClGN@l7vthx.H́ɵ)>V>>/Na`h^1AqIwFʅ^wۯH֦"tLrq#wD&. ɍS ~vܗI9[RgJdZ=  DR*m_fuZrEw/}8! >y.u4uOA3>`Zabm4O(al?sgDWA|8"N偑!J6ubˆOd'+C>W~G[Q>qӶG ɯDL8.{֎T5J6cO[KoSiscg[D;1SvPK*?iFlMy)un̈u/z׶#Uh%J/A^Mit.K6gtŞ* N=qo}ό`ݢ̪|BOw'vu{ll81s.rܫ(R$)5.|+"Ũ.QԵ29n;y&z}*D`%>ELrڋuM"9Tqn9vNmI7}ޕ\aB:N뤣cg$]R'zp|N{AWDc CJMƦ~Q7gr,HGrEG"Rr]n[o?Lŵ)_~~x_ ;#NX|M'򡱡͵ub5xB#]Q=,A]=)_e7kE (]5T>t _Ḷd;P6KyrNeI,J"Ǽ56ci(Uْ?Y$+t~)o~Q7d/??="u:SLSu'8#tdy_kS^UwqƏ߱IFAps^g>qt K|Q!mKc֦| c/T{_Yp" dЦls'DwxQƦ*a'h~I7(l1o~.J$*tQ7rݶ_5.2=<6!_{w-t7]"<+Q*[CO6԰ J]C\Mr, wͮaZ~:8R~5GpԠNLʼ-Yvon]>5wY18835%DċrW'G svݫn-lWkmʇ~G!ow[|5LQ'ՌߓtI6L(r) ~)1Q~1>Q ^LCV%sjMK]kS{ǏqdEh9yY1fvb8ݒݽYkSNNuh^:%rƛ<{5uIU?SPkC&OR~|tQopjC$EDS+R.WRVASO^ 2 es0FɶQڔ/~BD`:NJ}CT@嶕3y:\~m!tdW8)1&k0nB;Ϛk==QwuP6(o?~Ԛ "o2wײجTW:7K%սHJbٮ^ )jB䈩>9xʶi]uĄ*hJ2t:imuۈj8"?jTa|noϠjS!ϩ?Cs NS^x֊IBq-d~30FBj!oB>Z;шaVKݦhtrݏ߱k'T>Ǣ2'*tR;j7n[{rA|Zr1wS`nul@382C7t(5Sl8X(4ڔ;fr=Nʽ‡ :q"%[Q҃J>3ElȠo fD^L ]#U8 ;b,|`uIE^L䶤lG^LkSN{\B2ĻW;z!+tEؓS[TvvSpmɏux{"'gOqi}ܟj|(e`[qڭFmP_kNʇO1%qŅVBQXw\PBWT8'pL6厐io{z]8ʰ BҞSF%Y=7S]8òv@Kڔ/f?9 98Oi/Z-)Bn#8tq֒8imʗd-\mb!3բVI^h3u f$]R+>eskUw}J{tۤZYSfc ɬ߶ {)5| t}ĜmPzr%wLalDYQSb'tEE'8FE]mNv=x)d u(_O恺3c~'qfڔƾmXoѵslsj'5(I3Jz6)YcNt뛈|ZL]tzXC՛tILqftdw3a6}c-jAky E'kH_^CrɐtEky N^Cbr!i Xb,/_ e/OvAWTQev{o[Z q:BIW8 ߋKn0KDg8ܖmPѓKo| aÕ{ WuD!dKj#q=Uh}kRJo}ָ<zk@~ uʕ(+dGȏXoXRß/1;sjOTiHQ&G=S5b&eBkBJo}qGFz8x -n+@} k^(r $tzx Tfa[#뒊ï88J[َï֦~Q7& bFo1Grǐ.qچt! 6o=yB+ JT  U-`D@JCc{=(14 ]AI{vȫn[-sd1Am BYoq.j"%BUi$1FkST&Ώ:7A7nadZ{ Qcjm钊ALsR,*ASzLkS6wۻz‹Nnvk \nh U0v6 %8pӊ"xZ(B* p Ո2)ӽ8C]3(L9?;wY .. GBwk#>yY&ۍvYĄ َT֦|jf;|wW@y3XNsG@Zl\.ʕd{QYkSNNA<@(6LhoO**3n'1>n9F$T]iBc_gKCzw Ϋ].Y)6MњN]O/ڍب[1D+*ҭV[}ZkSwߺEޒ0uana\ELSuũHݸ[ vM8ߠD=Y~2E`RFȫBvtF Na p˦j:8 ZgD;q 8ؙ1&(l7ndym§'R/f{r󎁎;*P=$;2gs[0qZ[Ѝy9-غ>ޣuL قi{KTCE21ݵ[(U>wm|C *J,\]Ǭ>bFZm'm9x%?VlWj1#j/o+\rU5_$m]TdB{ &| `/RLkfBx]9AkSuYiH4»WXYۡ+*2⠌^hڔ;Bڂ]m^&vqLb?BSB޴Q#Yצk MJ!38Xg094fum9sr<r[9@Rr ݏqKZM,W۶wM v|J4?֧y>#tAuƔFlO4[]}}?6L%N1r#]X_Wn;Ǐ<`zV]TΕK* jȔtMJGBT〢l+հ:[4qeTO ]W0ban^5K[Ips'@Y»MWm3;I[~3a2%1[6Y %K`=IΊE{uqg,A06j81}wQv %U}n;y6 cH ǣiaƺV Mב;=8'擲vnڒ/~Su^`I%J{9]=nǵ,&0lsf'b;f#PԱ8 GURPּZpB8TJ]6 ] Ԙ㬊s 8n|T\X1ˇz{pM9H &OGSA0.|MQJ<2yќJ g0h r œl8@2`#vPDz(V LQAUS{mh>%_~FɃ\ޒ2;[ُbrdKjzX@'Nݣ&ۯ_lKpN6ACҭLn@̤KzsvKM9n;09*v윊8'g MYaT0z5fMfEwr"_*>][]T-`{& Z:;`ngaMQ:rKTK|0*۩%~Q7Sڽ[ =WaDds$)g'ueYXU*1wB)O;2W'ɅO:]TUi]ӕ8]CU9%ٞ)g*C rĩn`YCnQ[.EU/gA l6)suRQ`Hlw=,weM$Ljq0$V9zݡ x~Ǟ}ӓ]Rċհ #nR"AR5uۤ[=(i SU\]ͥ\c$+:l8^EI1_weAe q*J`Կ !˻C;p.u9AiWmJʋÝ'5uOQYΤ!G,}{UF_o= &wߐ/fSE1I@\J &sϘIסOD'bgLMN%O8ϩgt-k+@ t9~LnGv)uzTyUl=^F f/ܴ9]tITjqb(]tdx5֦+jco}TGNEڪ2}՚g9$Stg%H&:U y@2vyQ5?~C1tOO`)G+>S UK*vttSRc\֦~Q7ʅseޗ׷7O]|}ys7Ctjۤ{#oNf#_y{cW)gF-ro 9[4rzJn_MJo]]>lh7jP88x|No]{[qv߮(dx9rE%3pp| b!8 \#f+*`A8F؈vpimʗ -G;ɝ.ɝm|lwUX 4QOp.OL מl~ڔ/fc\oӠq(NOfP|O\/ztܶm+t(8NCoVM9n]aEsÞLqwÐjW[tJC:GC神yJ>ZsDŽ&T>=.A|xJW9&&HF6wJp5㺊_UC5;H|T *j`0(*>D_~/~JǝzQӀP4 XVl*Phi z#&eڒ/~r"L4]l L GiGZASt9Ț&_~&^IgKg$.HSDaWt֯JY$U7ݮEu[uashmt?~"JB`i]pt텷.ᗕ8H!C/+M9n;PnMgz'`YearT)Ji(X't!_Z*,u~CML &[]nIMG]Qͷ`HE(>R֦|lqϯKr*&PX >uQrkr]R%@>6(|z KZPBS38x[0E0 2l&ghvK&Q=})_~dmE2놣Pbј5yhۓLoZmdTt<`1S1]ap/Qxnn#Z^.fNIٞ^ܮ)*Z6췮1$`9+vM`^n J[qe欖`[O N&҅N&lҽ>n; ;>?'4 +z \]ɇ&Pm}teН23J6؂9y f-Ҋ`Nȁx']R'`lm*;l\~mmzaC[3QQrު TCޅu%z^NwP4MJ %Oсco*ЮuBN|5T0tpjm~Q7ǜ8:hſGv{;^ /w jxK ׹n׈lwOximt?~~ 嫪iXX]Op̮;Lu,!d>CmLR yUk[J-f A ߮/(7 =jf%8yyk|tqu!I]Vw7̆mlMo ]O6)]cu\~Ag]wA[(?.co~ lwimt?~G`lQ|H5YzHgw."Ų]b ~d[8}+/sА"E  )m}lGMk!N5x1_ ;`3.w3ˇԊ~EɶBwIujmʷ;.ә((I(]K LwŧyfeICy$-&zn.xxh*h!?xMF[n['PjEZ{iZ}I(a!K^cc J(lNTڡRhaj֛> Sp '>1d0tWb>a\o)&<3y;ͻ0{}4IɈt 3Q(on,7bC\HM2*lKBH+ȟQTcJn$.Mдy~Ǟ jv,)eI/Y.*C9.(Vr rjHhໄR7d϶'Lb<(SeA}27k n}2󝭆!W91s{#nGȇ&yДo g b44 G(h -Źh_/u~pR#ۈe;"%u+5u LG(M4v{t yk>n't?~GJ M%0]E J"R@I:gȗAˉ>ĮlO/SF=fs#H&gcQHJN\xKjT .ᴝ\^~fŻ諈a6WUt~=]/GKa{*y>5uټęh[S15ZOc J .FAi8GzѝrjVY=+gBA\U>'amɗ$ށ>JqN+1]t㻴%ݮ+ݘ.ݨLcVT mڵ+RY?~ϐ/R+Ig+p3fzeG|(I0<"!Er!vZey.;motQ.A#]sۤaE&~$ֵ":tnfQ_(Nc)ݩJ9ܱk.ez֦~Q77Pe_Ws@DOi А :t7Gi"zomi$zWf]ĆˬoeMC ;ix5rKK9ʬim*~N]**_mÒ#žyUJ %u&ᦵ#t?~']t9l(9EwP'{S?F!ݮ5 ^C3B޲ZrEw@@%Bb 5֘.9$6]| h"$&ZZtRTLkoZ.S/ЄVMh5]i«2 m GƞlꅻTY6Cf1Ξtv#>͝(opۤ㛎dVYOkTs~=7+!)0]Rs2xlwhmuQ^0L ]F _YQT[[6mnjmMtfSL dI1%)9lQSZ!ʲԊKݷEѫl84eYZ *>LRdu,zVW.|] '䉃(ti ݏ߱$^*d,]L,.4V$ݥnftT#.~ڔ/f];  v &J-钚ᛳp%H/UZI71%Sb ӶY[DkߪHF"t4a)qwWZݏ~Oט8x'-\Wo+j5&д"=ٞ1Dhg#;@%:tw_r,]j#tE-gjP帒ZrEw1AZO^axu>^SU]P`ߕK5;~n=VZ*v XBt#2E jh*DOס ء Yn;U rul^p#4qp0fmH芚DvYc,iAm7t?~Gߝo{m(}3]>𔥮*]Be{MkSN;ɪO/ i'=1Ȁ=C&L ?8BmݽFFkS>4/K қz>]]]o+'};̰$2CI/bKo/wReM@\eMhw=V_{Z&3U lR~_8;n;q?<_~1 yPqW͙.+fL۪N9mRl&*,Y]Q,6oXsh(Y3cuŴݽIkwg:95z^kov.xN̶Yl#a ev{:rEwt<ȫ]XeNѪY12 rB]R=])""-]6CPɶP TMtrf㵅OXH&E9xW9շ[83Z\f)&v;tEEO8>B.n;cmoe0N;9| EF̐WnAm#g .'ٞG!_c4 7]_!F-uWZ݊"BHd{AMyfj/㳈}"5_8M шlW)_XPJ_5l%MvKIԱ<]v.}.ڱn;\RN\`oa&FttWSk֦~Q7(DNVBl[V Uq1C"+WY,#1>ElYhmʗvM7{;Nqq&zgkOu"*6>Qy&]RãtȄdySkSNw%oԐdzqPW <mQCsFvw' s&#:F5DZGcT֦<z&vU2 1Pj'hv/ eyE~!Xîtqq]\[r%wVm2U؅R6Csj6D^*IwmĶ89Jl&64Q]Hd[q^>qXj?kܐe m}5V+G]?d;/Z ^~NU͕8vWo݊'mU&oO~\\"A\im'wUmjtM^Qg8yB7<5.:u{%5c 9&Ԟl\Ѩ]B ;/?/sGxX=Аn ]Kżzν.e;׵6]Wdo?~{TZYFg_A%)%ncoOWups.GG!_~J2+ZMTŢջpnzѥ皮MÐYh5- R;p.Cɶc:qDuJ%G(tߩ֚}GZCGGW*Uk:2ҝ^k}DVjn=JЅ4QxkU Ca38}YkMHPȟ^5_L/o W @jGm 4ۼ4;>e{mF^4^)t?~+MZQRT?0r…6bɗFٙ.GIqP]W3Pn[exV`l/ڔ{+7d[e 3xx7AjG(^*s ]Q{nU#=]; c%U}m]OV%ݛmM>0cu$Yb Od{)_[E=ָ*-w5,TȀ:uN|`p >*ѯCk=kmʫEM7#UtIKtHZpJ,F9KTXWd;J,6bQEGGM3 ;Da]Q-fx"#]>[ 9Þ㭢uA!/+BtIuoabl;M:n;DP{(9aK n{UJȏݦ{pW]v7mR% f%0 W\0\2+v0\Q3VF .d;6]~cz  ;(t8$z ]P*m7+vSt߱skО87Hd׽(p.8jRT˶#ڔ{E+g fivi4k9QvnWO v7ve_{¯'췾n5v4 BPk| v @uaKj{\4|JcfkZ\k+8]6-?poسz\T-v/}\vWAڡ~ 8( ؏qWՏ(Oeb9g ^GNu$9_ڔW5m$ a97?Go r{܊, %ĨY^V41иE8b=w1ށ$yw]X+!IφjUuքt㧗}WG3Vl*NY5E)UG9i%8Hiޟ=fizޚLizGc3TT]L!?LȐlhڔ/fؖ͡ˊiO\Iq5,V8I9z$bX/􊮱%]Jo} +y49 kꢏ&NҢ^q[/lG_֦|#tߑKPwϥtf|aooȓ -ÁK)EjrƖ:~$-FTUc~Q7yT_7pYI`= S':~&5bʼsJ nB~ڔ=yLU}ձ(ɽkɇƯǘSEF:1Ət_~'/P|>0{Au 2ybwOlaTݏ]xӿ y)7EȕU&J >Uԗw g]~ﳂ+]zNȻ: *s[;tgU}&_~G@R@ ُO%J:B-na2FOud;j6щz7!EA(T&wꙭSoL4i;E%6&U>b^e8rEw<ǦWp Րy0hVSq/Y.r`c^A]{mRz~9'w%aaw;Ҷ%J먭EUlGCF~G@RH.ɁvUT\ޔ3Oh{}&rݏ ^^K-lĞi{tOa-ݿJǝd;^6]fSOv>poӧLހғ}N>I/!q OEu5;j&lD(O٦ݮ;R*<.q]7o 8Q ns&:rL{~SsO.xz<֍ =kFզ)Z&4}?[YGueumSG(5+1*גkMn;t۩el+҃ ?£rnro3]o"ob[[9kr[VVtn;ﭜ0Or%F!SԸTJrQITq<uâڔ/fM޾⍺ւ2},[\כ}ZZPV+ٞѾ2Ue!$~G5A\QLE͆D=%ݥmBzӳD=A)8t.ᾘmz12O͔'(I/M=UH>UVI.W>F){)6*u`z1ZМL>aSŜ6U7Nd(lDHT6!5WbƻWM,G*YI [ȩ@iBBv"$N*I7!q2+W"׿{nQ krbSWz}q0Msdy֦~Q7(6v^ƺ?a)n©-h^A8x@vn,m'wjsޥ&ư^5vvQz)q']R"N/!blt)YNu*wtqќyjQ]q^&j{]jU mXO/Oގ.uQ?@];2gA`*|jUP (?xR OqPZ0mgkrzJ췞cDٿVݞ5 mb7ZD.gܘ}~5]j' ,MJHN&09=n;6ޟNJG L؁][so@ܧannߞן8ܤ4}ǧk"=g{_kSgdͱ3f]㌼q])ǝyv[)9D='Suۤ3Soۍis-:_y7o{:.E6MԉiEY%O/v9n; zr0PTDnwE(-tEeevQO=+{}^nİ&*j ]P/{{_Xiooi;!]ڵ*!Uz%فv]+j{%8Ú14ٞQuk=n;C%&yz+J'v\>MnPH%5 T=>]Q,!_~~ihYq~iμ=xo%8t QKjŽOӒ>צ ύl݋I }p,J4~c]|фMZ!&tJZ軈Cn>=paĄf va4kld'֔7|dϾjIױ>v4fr].-My\~$SMУ#1j}liʗN TU8-t v\hiM@|[YR.8Dn6Z.akKD\ט8[]ʁTHDИ*+ʻc[ Vٮu5 #63Bv4ysα20GVU-Jz\.;KEWT?#*o-.DNPK-ApUvJ 7ꪒɶPZeZم,(+9oo0tI5Xn;imt?~G+ٚ5%ҋc>!j?D{Z~͡b^m~dJ??~'xg05bK#Dop;쳜@꒮s6)ϢՐW5n;* x8QlWGHuÍ S ۠i-9n;]6G.;PȈػ8zN(At|8J*xPx;=)_~ { RUqrvUFrߩ3(e,ElG ֦|U08+v(ҕP(:3>5p[ngZn@$]R-成SQGbg.1GkSNsS2(xhʼnb @{*uIE]GWAכJ~4颼h*t!mNvQ"Su; ?H:Zz$F `IvT0Z>ow v189Q, 1c'ݡ:,Zm13n;Bb*gZ_mK.I_NP$]QÃbv!Wۚïn6B4Eeǫ)޴jrm>Z8(])ڔWOLŶA[a븪(QzTrTITrEt_h%l{otߑ#1qp!Ic7d ׉tq v\cZrݏ f=4 _ccʷm!8kP;C =te,1 YkSN|NKCfBt_F*g6 ~/'U; fDR(molvoMN2+Ohظ[P5#* n] 41*Ld;jmʻedIo]n< 8 .JS "tJ|*l§'|*mo]c>|+Ipp S^5#b>\X@@Kh/ EUε sb4<ol(?Yݶh)a>mHZrEw*b9xU,0UPJ; V|%ݣ@rtj*ہzW~GؕiG;Tp(R9w"]5@G25tQE-%HK~Q7VAu߲]u0ǴPAvacJNSPiZ }%A+quaKL~A[P1E XPCXh; iڒO=L7Ud^fGM&eWw@z #x&5q* Փtz\5.\MV]E۸K =mҮ%}~bxyZÊ_Y<][&[磧GcC `UQI)^U) Ρ6Vrԛ)l8"ȧ %b8.h0-9n;n|o/djpQ!%BT%+ TlψCsmuCD MA+c:~ :4NEK*A=uiDy>ז~Q7Y,$ZqU6sT(?g?YW˲*r}cf+pw G2@U8LXJ|8>߳7;t;J`g>t@s]؝@?_yjr@0`mhrv@CP98o5|;1Rv@E(g&;+uIJVrz?C;Z3kn@~TԅR=Tp={,J)hK]R NPaBI 1dʫB;J xLJ2bKxm{Dz˧ʟUcք`eؤGxCF;4Z,v&rXkl3q Eo?]06>M'{slPС䴔l=?³nn%M80dW(Ҥk۵MJWkXzil *ABiB鸵svrvȇY ]n.c@].fba?:=ÏaV ? ǖt[cG:1g~7ӁºOֺZ!\Q:Y޾PX0,˥ n#t?v8·n ULkot߸sU>6)Dw^@ݪ$M~)aw[TaQ@^0O ^ra=])_ڮL7W|BKꍭpXV'2g oJݥ_؛b-}k*9ؤt';ԓRa ÔnGۓRQ(9^J)| S ;E:t)Erać?!~<[v;InC>鑤ͷB4j+{WnEz$Ǯ>ɹkJT߅EA=NKbZ(g~fh);,LBE<+_*̔W.(O_ZХk-,vIll|zk;Ki (q.fý>ޖi >v*/QK&0]R$H9vι)ý{x8(F7KO+tE$8+g8噂ocw<._en})?[p=b2nBw/3c)GWk1szE|mk*vrf SGș ]QWpqlOi+D{.~ |+ "gekwnS~O_cgT-yJzحe+ųȁ/zѩbuDc<*5tE5jl]K;b w)(Ag;z Z:j2)]A=!ū|`E@MK!BooTiV ALt&й\5ungtS0X@Ha;47]~B6`)il5mM'!r<1k*97] u.n@;f5Aң=-@Z*Za Ju n 2W.{(*ΰwaN?m> @ `a;beǁ hhn"1(1vQ7ۭgCHUy׼'ul*ˬq\*yV yn:MAWHT;#Uanat?vaECf:`]Ku4Q/NKG$9͜5m9| tzO,#pesR0qNIw3u='t෋9w{8@Pm`E<[~ߒ NS~K.v];c&߅f#^){юEqU1xCq({1횟L>tݱ~qG[vJOGȗ*Lw7E6B܋^1Ezf豽+xE8bu4>6)o ֙w&C^^&ƛP,8&ߊV oB M&<:ބb&%fc}ɛtݧ b[Ϭ5(7YjunIʵw7(+W#U"} xz_:杖/ݗLw{dVqS~M9n;0jt ' baU:U#MMp+*m̕e{ZhrֶnŦJL7^y7ӽ}L-*ű'-]nؤ酽 v}ߤߑelw[ɗj8y>SD?yC]-͘7Tn;\S;*Y!!J1V_']')Eҵ&%3z ꂻ] sO_r?E4tJc&l$<4v iniu:o-'r=Vh|䙿-CM_V"]|{UaiuɧݮS?&2(O%>FxӚ-tCs75,;d؊Z i8SL)4QG[yZtO<՚ļr; W'(@".يOy$-9vF[r%lY{tz5$ݫVtwJ1CW5YY4ݣ"_on 7y:&NV|7lG>A!'*MW؞}O pz'xI7ۭen㐟n @Q#຃*q,Cؤ>wVʇn;@84À>e[K6m!yElu)cqDv۬,LRfeiCɁz,^FB ogrogV]ؤ<|}f?puLj?υ\8ʙ |M5fDט쎜+BlPDytQ]t|q]܁IF =k\C*h AG{tؠqw(;׹8Mij\~ܔˮ"rxSd=%oh=\>_U .g7M&Np8FEaJU5(E^;œuH]r4vd! uGv+Ht+N*4&L۶[!ȑRا쐳A5pܤ|[G^i5Mpū]vGn>fZnC7͛n)ީ;?Ƨ@˗aM9n[~ K?ZbeiutH2b$RzPZgC򽶔?4HTkniuݱVlzAzw(;7TptbE~6)-vQ7ŋ\-qX] `m[x]sdh=.uWUؕZ^7kElwB]HP؞Ps.JE5maOPc!ʹ)P:m!SE8l>ߣއ]H >N]R+AtmWtkniuD0=n'ANQ)?交v"nCcDsSNw:=۳c2%5$fCΐTamitioublN^Ǫ[8UOozZc[KY7!nSEO3e<^s{EsC.;~z]ȹgK̓gv/Q 9{kP)ϹJ)5trjbQV+at?v޳ޣ9ƾ9$>Q䀼.UD{)]vGMzZAqfep\9gu| @WT\ABV<3\Sw]D4P۵%vꝺ`.$=^d8펼nۋl6t#4,EYCV7,&Nm2]._XÕ"NU҂ܶ]UhJh+xZ 9/ICA=Vau?v3rKޭ`IfJj#q*57^3 >9)5˶t`yLgޢ܉M*$r>!w*WT2^o*b88礴(0 BF%V}-$D Iѕ ȨMj"GCqNJa @u\7jtduTڂfP+|f#ݯ+EܔӮwOcۓ~r!nd<$Fߋy w#Q-A6=[9)y˶lpK \q S QEE5o1HGtIE588R kpniuQ+;vZ|$OxR ND;\fd4JU?ښePbNc˓r=)^߁-4Pyl~@| ǘ~c˓2uG =#sWNNvGMבPrlJ3`R }Q#]R#J/p. a5v@) 0+;< }8&)myװ~݂Jx W^!I}4v%ږL\%<9@_Sǐ5uYj_CWԌEYInWw%~'n;^)9jSU"JBZAWu{D?ҫWS:'Se -a|Rg{Gpݫ>A J[tݑqT#8~j5HSC?(ڷH6%V>J J=]N;s >#(m1 "S5}(H_"#7`+xo5^m;-#UZag='/4Y.)-ςqmoAyuR7!2ylq7C\Kql9>HcW/ܔӮ.38Lm/1ȟzvȧZkA}3;`n7tna{L)H7%#]@)%7(鋸!Bl%" nR7> m R~)zˬh Qqbt tZEƎlM9n;JQoޢemey|uEGΖPؠq׶!it?vG.4x 9GپNMƼWG +:3gr4v$iniu݁ w-Άg)s _h#NnsߑOosSZcwą:p%zd#r?0Ei#R{P)5EcI76=oAZD (#T6pe.y+_=o5PS fl_:ϽߏMk캖c47崋n+~s&qzgk촛yNV=ճ؟[([rŚj_I7ۭglR88GD߮[1_[ OHjt!9е&O;]voxo: hL_]{o]t4.ffwPKF n$wE`SN䰛S]a.ŬUyދ6[kx,@\H!hìxnQ &'^ua֏XV+֚^4t}PQQe[\\Nډy]-]QӷGqpisݷGM9(H8HK^$VQZK~qp.@i򗐊7N(-[)x|v'\hJ1g(LS)%*;)_@N]Q= A\}cWO1ܔo`jcwn_ed6rM\`0^k#g"p&eB!ǎ榜vAcv׾8p;w?`Pv%lW ~W <'qrisܔxJᣮXvlMj> ͐o=Q⠸I(|Q)JDkݑT9|u8.ZsEUV%ٞKj*+z=}ܐ.~vp nu ᲚR krp⺺@/J0/k"X-#~|`\+PoV'|鍷$kԡ )^5%&,IqZXi f6Ҕo]:"]H0*eAsSNNYޫ sq&]Rkı]c v_.~6RcBپW+\pޡ;O":"+]ؤ[eubMXG: 2sc)y!STka1Iw @U-q 47崋x_X+U"7U)j u'rYu@j i@~E]#{j }I/odo1G 7jlV%8LKIKag9Z64"R}Agb7U.Q8pCcE ]5FsSޕCjqU\c ڸR6"m뫂6g>I(ˈ&sy;eIzye)t?v'b/tNMQ._+jEtx ]4zf4PEI_ 6Ru/)p ?JDyٶx<[gH׾i{4漄oodNEYGO%P|ɯFP ZjKvIJQBބ!u,wHw:@7 ڢbd5]Qui~~'6Q}rY ݏUyt'DvE-+8^nP%]|ܐ.~vM>9 ;{ͭ8/HVE>IGYw=>.#9s9tJ(7)k⠸t$芮:֊Ur7WҵMc-Kn^v'g6 g6:\4o媈1wAʝE0;a=KtS8`X=91up*!D=3vcc,%]R+bKjwgSiu쬐w}>Aىd|GU?3\j*Kٳ6Ԥkv Kugq߷nXE mՙi4gIk.P;, Lc57 #Є$ε1~X~Vȷz2.x"Ag9.]v) D{{oBa!̤KjgTQA6Vƞ}|Ccw6Ai%#w?^YjȧNP;nSZBuc;47Qe[[ q8EΩN✦\`*ӓ.lw>Mg xѸn;߱Eky!l0ѯgqTj,C\.EKme47崫Jclt_FxAڮ`!8iRT9nEƎ M9n;|O}'ɪ C&JވY]r.(Oc[57MJ B4C#Bq}^ ע \@?涅{qBWԌxUZ-({mg7 ߒ(#xj&n{h@n[5Uv&bg&F(g;oyecf%"_kr_U̔V@ʂ_Vy,!+F_o#k.uIyɤsR -eLQ 9n[ 3icr w@oQ);7tñGsSNVDB|Kq אQBb(C.pG$^žt Ǯ7fv'8WV~'jU5>^7>C޼"}5ݛ&w `=›vO(oyn.2;<[F}[FX ]]TxɩӣnEc>snat݊XCjEC[^ؕ嬸|؝]RiϠtq'qgܔ.f-8;W(yS#݃m^g4?vAcw_Z=/ 7wmGwWh)5n$)V_N芪SGq.)=IvAcz0}q*r&Ѩ#i$%hI]Q}rЎ-T[%tvB64EO+EwyÍv.ihqM9SO}q<*7ZEO%5*Fn{ptqN[x?pǥ#vڢsDG纤=Ubt TM9n; Z -rv I77Qz?w&]R%)wRm̱AӘ[r%lwWO| u)U@&oBdckMrqV{D*o O~8jK(rD馨 tIXa4t+>%zL7{eE6>WVW(4x析3˞^,}k{MrݏQ{98%mdl*JQZ\>Ŕo9r]S.M9x_*rZ ݏ݁pSuE^= Ց<1.A ns;-( ؠtGn%nfjO98Xq())7tFzΕ8W }J-N` y7Sw!N$Cgz9|8A{F>7$Z;"=\c*ܔ.fSX{Lc D9^MN%2]ԉ&9@JclP.fco聪+rF2U=50>}~}\.K[x{8U7$ T={Kj9[C݅.v@rEl~lgrP쿈.ލ0ޑx~7qVnŻȁ;䴋g^%OKv]pK*,.5^rElw-dT /Z,+}SQ9c7ULRwUqMyT[fu_ˆUv̤omZ#RGƻB~mkWضޑEk5M>6)'m{OXJlra%j!w#=S {Kr5Ժ9!55R|ڵfF|y%WlkAEq8E+|(ܔ.fFŰ ؔX'?B]?W[O#Os7؝J]a늫$8MБ.5Vc~AW>iWMGElw:諥p+ ­*fHcqBOsꊚѪw0dr57 2Ԯw]؎u#ĎE47钚e ! ]εx_>ԀeaaEy7e&sܤQωhzz{xkK jrm~E;oȻHZ#'lxjF{t|w~%'sߗ^\GL@g)6#_sSNNp8BfێDvp:oN.өH !qP.]TkeNrElw \Dq*+ 3F8))kyQfc0 7Xjo,V1 DZosUM0+VhO7]4ޥ*XsC.[ ϖ˶D,RHOM;:-.e"JC<; ܒ.fB kސ* "(]t9Pwi8ȿ`w}si>qkyWRZBC{9榜vm5hil'sTVU>;,*>p"d8t8TT.~-*4H*y _UV?Su9Cv_IM &hQCL5? xS$0(1 9/%s (fy榜vQ7۝R`p4~ifm|$z$4 V$qirElw 6|GlӨ]nXEl:'.bܻW; -57Spec;. qXuAN |wwAv!gu|8{s/;&j;-Ļ e&xmQnq]%mQhc)]־;[y$ܯQ󼽹PƧ9# ܒRf#J{7KTQCTwVKۡ+*Z404vZhneTAMc n{OmqF}V̍Bo+RT 0Or .?}nvȈ!X]F/W/G?D atAal}8|$݇ cҩܐRf?ϻCZItZQ[ȯ~Kz8"QṟO.ܒ.f؏<흜搀8%-XglC6u'\ffh$nw^FU2؞{%k5x \LC|,FP Ѥ;i QWc̰+ N}O ?c@(RjJ tW-]rV.rݏݑ.}c ,or~E \'.E@wcIԐ ; ii+LIobnQڛ +% i:iYww2v'lw@):k(دtQݵ_#3pW ]SjMRCv| *RABh8Uɻũ%5=j'@o/Ucqniu]Jɜē }fo O%Ax0rze͚rElwA9 `AO[`4-A8%UOA>_S햯:ReTBUdp`1j7xOSw |ŧ/ S#] H)]v+ӊtߟ JQТFpB6]% ]BHؑj)]v}q u(jv0W.~ֻyo~OKJ}=/am|Eh >Z/]l}_sSN;R,'f} tO{7H-J7x&Gt.>9,. d8v} S2J/X*^p#S@y_eN|6dc XtYN5)v߀ecؤpiuzEb9h 3R6WLR:όyzĕ#NEkVZ .)]vخ1ŷ༽t"]Van-ʓ'V;NypB=q_[r%lw[T=,nh6oǿ!? %T^pR׺cKwݐ.f |M BmQuب-qim>6)_Nȇu;{{ɜ!8uv<]L$6JG@O!0+jniu݁ԚO?_}H ՉǀRjȗ֍j9qs.UW(;.kr{EKcbByCNc>'tNVžctϱGbln/Lk8bkɰv`/$GPDYqIJwQcwjniuq%BP/{ƕ_.JB>џD\UWUcWwjniu݁4ppWXOV3DnKaw9CM>nVVXOŻ]69n;P_w!sU8~oEVy*O8F] ؤ8z'[ c up n-JóBS/tEMN8륋Ǝ\vAcޗ]TX(A1 "sD+$uAqtQ uZM 2(؍VR>Px].'HMR9長hԢRsB:ge[S#6Ar(?0u<tѐPsSN +qPYZǴ rqt2JPI;@47Km`L7U'1Tz:wQ7{H҃;?zoS]57МzmpŴif睮f$(oѠ{:;oXTm_ݫ57崋/|m$"#SU]_W$Y3u)!lZ<-`Nqnʫ*cwm[TtAZKb̈dn3Z$Sy%DQ-f'x2UUiuo(Pr; [Xw\]CTx,֧u);ɱG$ݗ4ڒn;u99v@y6)|zcau_N~hq:_M9:N O>CtI5O۽Ǝۿ榜vQ7ۭ3R^}K>dLn.Žo#9plW^Uc{"cnB\n/<-aYQ*\D_C"H]' eYUj47 #1j3=\wĩdwlKW; ~d@_%S8Ic7?UjniuQVAg [+a/݄j呀r4e.l;PX? JZCNiaqEuB[7OU4tEE8@na>6),3^cwZ ]{hIV؝ .9K݆S.||bǠ.ݩ݈zx{r;=n;՝'snѽ<M*[Iv,lgan{b[BbH&bġ8`YX^}Q?~cj ]-87 0ṓHvd6`-Z=G|RɁ]J]QC`.j4vs\vAcw$ ݱ*L[G»WĢ+eA/~`oiXRtv' o%TTQEO'q꒪&N6a=!16).f=a1=l+aa\W+BwRBGE k` FrEίKvk-e@ffr8Diam=nPSoy}lR ϐ{ ]u/JZ!gAUw>E+dVY0IPBW q:R¨ۄҦ(\ 8wݏ*q9HB(Uong;5?Pzۈt毾[tؑͪ)ٱ9ЬP9WᜃfwXxKP\.Pu<$F8kpV J3CNu2,R; 6QZѦbKtjX57[i!Ocw\Y8„5h dCn`V;FJs+5ήm33[%༃O[8emO6O|(;Ny#prlWm>6)eސ.f\GA.\ qXE'ctEZP[D}[="!s%ĬNbIK#/z ҋF#1uÜoר]H )^5y(J[cք[s-t'XQE.Hc\ŲnhcU婪ؼų!6uBoHߔ%u6)3uKݏ_urḆ^Dm \uI76?X6 A`{06)0`uwTЖ/:@]E XABƧPߙc{&WINsgj5,%d;}k88%xlEvUӼ8,[t~m>6)̐OyL7F|?u 'PjLsRd ;麗 A ܂]>6)E&펎%Kk8*y5ȅ*c߹@؟hۣ8?DݳǀA;5䴋ʵ/UG_qPས{"~94@trKP^%~6Oؤf|8|Bcw5d+8X;(\Pe*IαH鞃 Y.]c |Ú-YkOUca\EƐQ1YOzS n7\ބȯ)~('~1w&ꢴ~cM98|Fkr1v΁.nn;*'`p )#[eܞ n,oS. l{4IM9n;*WUO\tJS5>v+&S,]V)SPS:Ocni)ustpYtAi!?E]RS }VOcGLUsSN펛$sk$pX,xc9 <<'HfүQ9|]vHnXOpte/Mk3EًS!o+(PW,箦@֪Z K+{nW]y 1\Bl׈3ߤ">CWTWdeO8zqnWn;wO0AD&!gr_wwRTw8CK$vznğ"3{TQCCsSN٥q/@yn@&a (H'࣠7Usư,Ga{Rl+Y"@Ov[OP%U* NA~>+.*t\Ȭm!6<'0 ԻeD ?w+:|2PA{`SBN12~ 5KŲ!*Eo`7 cg`tQKb*݌].L26TpcMX,Q[B wwnwcq'N@?BK7+/! C>XB]QՏh gx6-9"~ߒ[rp,R=?#.;xGR;KĐsA hjԦSt|z֔EcR&L6co~7fr ꒚aYa !t4vM~x.f#9_Lde$UUs;|BWT EIݣ'|?vjq)QC8_[ PMRjOȇmfaHw{ÿ'M9ζ}D<\3ixs%4 \c*|vǑN+/9E1S7>Eb\%;αAɵBRft5B,8nٽ &\1)oԠraGoi-57gnnfhW-99 WK>=֐ç,]Rӣ \8' |zscw4٨PTv8lcƦo>!\VwITc8NIm8ߚ}niu݁NtHs$7W@$9т ݤ^0D0u!iG[.v^<*Ӧw]3zPɧ ffj,C]uSMqcw\;2zVp)luFߛ)EiuIw"7.>.| ~S.Wəhf d7lP3*-։մ 5=ޭ)ح5I3Q*^>IVX|"kyU銊tϥ^mƐr/,UJ(K* :+R>Ñ߃q ݉,f$լ䴋:| 1݁RޔI;P)J^(hG]RdzAan䴋w¼j5ߡz5.Y[wu!߫ɧMw:"vyt ]iHOܔWo?vGufZ׋w~{|a>׋ɏLhi{y~7-47S ;lp8z8|^+ { OkAmV`McOOܔ.fx/mS3ҫFfSY]ZV~ݳ73$m>ܵrDn[Ksp#g]@7Oanr8q, \H=7m]v'2އ6 HtcF>sO'א\y-*yޏtIj}ܔWG^?vЪߑ+ K>9 9=ԽJiq<:%"Jg LNN`K:V%€{G;|nВT;8Wq{Uas]v{zw.Z sa|aWH@Rt_C LFt[lnTiYt,qj .&nY rw?;sHꊊ8î^vd=|hr5vӽON,U鴭d+帼H\ϐnwita՞i"fӳPmUYB^|mO_S 45 ye <~7G+\ Q݂jSZVZ]SsSսtQ]D{qPմ,Ҙhlu4ǣL7,T 5OZxux1S'NyB~Դi'\N|E!ƎJ|M n;Yc pqwk!G#:钊88˯8w4)]vGw1B1zLF1[~3z|.2zLoKc=7U=ill\nqp8] _7:tϥl­$]RSũKג|)ݚJWv=1{0^csvԼ2r Iji&Gy4Vɗz?n;%*B-ՃbB(bVK*bB.]r)r`sf#R1&}>u@Ԟ e4L1хk'g/rUANS/33AŰXwb+QsK==ޮ#}{uhNHݼRm׽ 8l\=TWetJ7dxLx>U{RsSN펤I voIJnԊRãn])ABpL$V˪ի57]ݳ-'xC{W`np/knHęI8ahkƾ%*7%n[P0n+Q+}.uD9@y}jCwb^ji$4M9n;dSRB$-1z޹U)?i?UN_iC3ؑ)o-nm ?V}sʧҚ.?tkknʛn[F1zِsяf8ZB ,)8OA>9D/q,H݃^5D/-9-ݬ.@BV ݋a`;{$cSF^7׾("1)ȝ7=SA{1l㑞;+b9!5˶1dew+2gzqՈ=l70,NWBBL=,n.Fw-CgEwPb@T:Cckzȷ!=ѝGo_8xUh׸25^s)I>@2ݩbfa9:%0wQ'q5m*&Jy.P7tEMDAT=6ѣΧ];BtJ(6$-J![]twjʖ kfpV5v榼*t %nx@Elw= W IPU"67 _v2FcF+FL(@h%<҅OQcG.=SCnugrS@'UV7&ݦ#O_䐺ֶ~ܐ.~FE[<9ǎ8#MAPnQC]R;6%ŲBwAcOUܔ7A>cwLjL릮uWZ,~@: ]Q/NE`m#MNewpSͣ:a?6hBƶi#tE:&"V=[kܔou_6Vʈ oX2HBWTDGRcL g;*LDQ QqФs]`)4D^?AuO*{KscU7%ɘn;16MTBhE_ 7 \O"LO]W 7mdTEicK6C+j9ah(>< &[([ &A9r>5U}(4=@ؠ姝rElw 3ɰ ~ ^Eyl*Rр8[U[Ȼcw ♼)USt3Ey0|Wig{N/뤎n/G aR5^4Pxj͒ZguQZ 9n[KW&oEI6mկMAuP"nADT=8&rlP4斜vQ7.tE0Q!wAmr 4K ]h pr/}Qbhc,^d$ $OY AhԑtIEr}CKMMcwDW:\B*| (ෑsrRtuI/ 02blPr":R7zl]_ͷxEGNPt_S y ԠJęV!]l{!];J':lINV9@֥}?&G#!鲭Puy}ؠ##dxa)udp3mc9FG|Ŭ=wn%Gyu'rnatmnГQ&ɀĄ7e@]Q#v@3tJ0Q&ɀɷ(cwiA]?8]|l] US4v].jݑN׸cl\q yC>>M;G@b#Ȥ)rn;#!rEo_P.J֭2ӝ*:EA u9slP_9n;D(c|Q#JCjP= 춞CНᴰns?Èi=^$d+J8]Ο5"~U1 )][gKThϘ8V dZX5N8[ޤKj3$е륏ܔݔL7ۭ(O1>SEon}\(OsVRt~{C~ J[j.: 7`cO"DeЕtIm4o`ԝXӽrElwq J /Y OS ]A5?UtO՚r/wTűZ9oa7@ '5W;^j$Ze]_榜vQ7ۭ*qC[Ciu&J %TⰬc(u{m47UئV,i?gY.6}P:b}iX?C`@i(6ܔ.~~qpMXᶪwa(z&xE']Rp̯dyKtݑ]Kj`-]֌ɧߗvP=t[0Tܔ.fuAµ_ _"rUՎ6b+tEEq85.4pTsM9 gi i2ǰk_ rSN0ݖl wK[9vnGē nݑO{%9ɂb5LNRZ5|j X)-ϊq:F!ui)uqGVۯwdZ4uz0DHoՐEL( Jq ]=jR\FO[ĺYM '|oL>UdS tGY'̱s Vt_NpHq}-|myhE.)v,Pc;MyfS'wjS&[a*N~ O$0C-򋴤Al^INǽi8[ @3sS Y# /8EQ^NM9JNQlSKY-ރJ[dyn;7ՂyinabV0wZh (N@t暛r/ݛTUoC>0YbtIE8LY.9vJwmܾ?v1Rwpm?XZIUw+*UӴh6@MsC.ewu#t9(y2Ct.'ş R멒CvQ7y7cj7}m-j/ &P; P@jh!];XsTߢgŧ %ttby47崋5E}0Jq2\u]Q *o+*)ڻX07B{87W=-*T:ru,ߠꦱ8^?_<.X8Ȣh|tIHNEW-0Ǝ3|\na[ n~))_rӹ.Xe@t\@sSN2~NwvDio&&ޠRm9M9IcG榼Nj:VX=TY `Jc NZnry%]{ܔ7z>}%$}{ܢ3/`0ľ rC+?(Qi'ݱ#enG^+sY,x XQƘNS8LU=2|e];`]7NlG=7].< NA{*{*SIjqUJ{D랒vAxYwgˡwW^tIm:ӡCmkniuzƦ<^r#*EuWb{U/YNQIc'fVPq񉃮Rak|T!/>bl aE'ܔӮ!l83 uk%iN !m7hG1UKir͠ blP4|j1lw<=jECTzvtzn BJz"~AXcxvQ7kFo58([GEXO5J%5 9|+M(ӮʞV^ŹFbtɛ=u*A.b aJ]]LsSN5}}MIJ~yfm<k _`SLc{"]qؤ&crZJlw<3"w?@[k{d3e}B^rt妱ݴMyKiމɺI\]ڭ1@\nt5 )(a*lۙN(\ֳCp#1uLekQTR~Uoâ_^XPcLW6;}ܔ/`cw\կ_XF0;3lQ~섮8 h溯D>/8* /Si83ީ5vW\Y!J;;~f| s.:jԪ٩w4n2⠢cKNa' [=:iPs˽w}lR8;!uحw)ѻ6%FZת ;MDozI#½>6<ضrElwW`_s77q`ѽΰ]Byup7꨻.JA7䴔(U8UP UxI+P_C&@cIKwJ.4vAinʫc7e1-`r!rB!@ C]W"ۜ4Q|8l>_F뽟pWĩayқfȯN$.}"{Kg]NnPw|^+\#K]fȱ!Kw(( XCۤk]vȋ_t8H'A>Ԙ]#锹FOWT|/v] ؤ0V/%n訶ڴv8nV֭8u7sxsm`S: z 0} [^BU >9)y˶:REI1Ͷ#+&愡ܝ#Qtz&u{}TQI)^[gVb*bXוmj}i/7ԺH[aԫQ'[qNJi ~;8C8Nys^/KHrGr]R=A^k>M9n?;}!ۚRn@lhRK=Gw1xuë н95e+ͷMѺ=yVJ.H8rV/9!5˶{w,hG cHЦ}R+~bTzj"G愔@/e٩/1ƶ{|kXr$ymJ9Nz$}YzvZҨ]@ҦDmy\Pۜ;43v \a'_JJsBZ90YybC{İxYu['gnc f ٳQ41d} TՁ0VAzApRͨGr1 'Dz jT5'zx:a)mv,x%l DKDձ\򮛱-RDwEb7mN?PSElR<+~s[@V?byJD8{mAj-G[uCC>~cT֜e[Һ;0gȶX[> (58?5=iԪ )^F\U_-e Wll]`X=Ub z8*(椔@/ʅT#]V7aO^"˾_Z ;PکV?pNJi 4߲OEg1 b]9,MR]Znz"Ű&/9*oN0d}J#ۻsL[X8!=Z8©hFwQA7ٚ[lѮd|QW6:VʋY =5HRYGkGmb<51|CaےHIRdgk2[?g4541/[bsaPZ8Nx0uBv}_, u&%ƎNrEl]Ɓzb kǎv[wv鑨ra)T+PQ4'zV>IHkWQ2Wwjv&Yk- H)G0QRZS4*` ou\RwEњnt`5N k"i'z:iNHi y {Wu1@QB+$Y ['B=sjԪc愔֘ޗ-Y~d¶RgӲr6&JN=ͿR2$"x&?åzV7{c2_U`vWMեɓxy^0Gr 5˶^^kԻ\U]#ujJ>i}z$W +ڕjT/՜WzV7y+F}1s}N+P0H9ohvQsi xեzV><*ovbO~"#1cHm3;ڵkN l_|_A,v]|1r&yaO2\ܽ9!kLV_y6^DU甼RI@g;v.4/[hN^f_tZ29HLjl ,/K.0,c4 M9nSD ,b7eh/ &  J AȨRQRXCl1:aQmOQڒPзtZ>(u%muKV x~sRz֨D/^yQOb]1yaPkok֨M;愔@/I&P}8ޫԿU^Q؛)PwǧvXS47U حj6ԝA>XH2UNQXQ*r)H.UzX?\(^ rEl;<[l5#u"SYt/.åHv o`(yVgEջjNHi Yq2+S%* kuAal}[z۽ 8~2l߳ߑ~T-Vbr ^vsivHTa ׭!GA/C֘ޗ~ ~#ԗE-$0Tq:vt>*?z鎚WQ8'zT@wl],x&3r(O҂\VPKm1q%4#M9n?Yڻ؊^ S2:ű 2 z"4!gU[hNHi ڶ |"_$V s0(GsLMՐ[J6r s蚛rEl_;[̍aE7@`nHQD=K~617%=CըS~6 )^57AN 뫽ј݌uLOgd WNtOgZu=kƭQrNHi W|"r~]VObAh֡kwT[0]S ܛj'zB㚧&j۳Ffץ(۷upƋ:is|cFue[#o6[@vG|0("fXK:Jϒ5P41/[=gg2ŰuǺHE^mcW|iH"Q} ÐW8֘ޗmfbSVZ_W^%g`ձ(5'[їޗL P 2)\_ꊪm4 LaEސo$0EOc "Q&ôZUb+w˻jLT6{P\ZEo]r=vAn>VgW&1aYk^ƢƐ;wWZk(Q^l >9)5˶ZP(VeW$ϲw:zC .oNE$8}8)VFM71Uˎ4*__urK=2Wq z"XKQϠZ5T愔֘ޗGцwxaXW3]]z o@B:%SM9jX朔e[&Bbu,0MpuAhe(: l _9vV[rZJlwjL/1!ކ@ t.Aڗ+=4Q4'zV( ^o*%Ci q7RBJS2뇩'SƲ!5˶wW%%>pd"#қS'H 8|2YK,'5˶Fjш"mPݻ(Ūz 9B%5`[Da shĜN.K}7:e'%>6E[6Њs7S%>}X]2kD97 _vB,ԅ gܺ tyν g]Vҝ(  dI%g.%fz|GHvp+2uIW_kpDS -J'z[=@a_)9\8*8у]O/SBlw"fsnsP t*=4!+g}*LrmMxX <-`Fe+;}ƧsA ؤ&|4>Ud,s@Y6[Ħwo3Zzꉘ5Ò guxV焔֘ޗ|Oٞs|^|aa_U8LSE8 q]ǡAؿ)IP28t{Y>_ 5=IAIJ !Nrp]R66> ΄3?ZvI7-Q0 9 !K 3%VK*phH݆;p57崋nV԰1 9vD|톤*A C]U S +1Q՜e[}`#[a&5v=|I.1/=iԪ׋.rkmuPX˪^_+ 8. HL $ WS )^U{kNT{yD wX[@&RRTq bp٤ke>=dLlk?v,m薔J,mD13( yt}KfH}lRrZJl7ߊpZ+ƱUmOJ{OH&o~(sޯ!]4K벦6FXYʷɊ64]uiҺ 6? 6.8Rw ƧhRi]z.foı2Yx~/:"JyC o,{ |niu<)To*q:<^Hv+I;zTsS^շt~ TO2l(%W][.2wQWLE+87#i[8.vKes` A#н~FC-7L>riܸ-tZGcOFܔWܸnAVW30KBwκwwo;nE9vq9]I!OXJl~TŰck#꟎;M{30Սh sSNeG bazw+Bҁ]QCM:75XRve[STڃs'` vzAi%KTE zعPgFM}ysyCq!$|((%Hn0Wtu[ܔ.fh!͛5SkT_ MOjȇaLTD'qc.݂?.%vf˜-E}(˘oSb ;GRԒ9(m.2q!hXrElwttīQ8"tt2)(/RSKyfq,5u eq9rEl_zZt]aݹޑ3Bs.$@Jeɛ=Pu: 8JE =S!Ldc `5y Ҷ(K_Gb)&%%Hb7uң9!5˶-$<țK=Zڿ G=NqNJa _)&x'u)&x)ŤYพ]Y=]D>*QC֘ޗ6)je/v#*8<9:Zh-TQڲJ 9KxV8E.'42M>{+?vG AȜc  pޱVsZ z\@.#{\vAne!kma Vw6l"أ| tIOg##g!#c§ 햏Aͳ0zz@KKW[ͅ7R{%;qO]s ]I7ۭwRO9ֶ^~W OBA8}4koMJ+E!_X -? v.z]h_ ҫ ҢeqjX9+d1]P tIySQ [K#ս%榜vQ7۝/W7cba%fK@T*{/AXYX;tqK榜v--{#`4xq oTtQzz;钚^$&=f{榜vQ7ԦUmȪ /VW^\x. !R@uImo$uuiƞm)]vxPBZqe@|.0"x8OPWTDhAUjjnʏ}~8'Y`+'z\ќz]ڧ&8FF-ќe[/{zX ERtM~-l$]R;Dꁺm B&b)m$\7.죵?΅qz|*JU+.-n+s nvk1l J՛[rZ /9߫A׫CPnՐ7*q uQ㥱gܫ87 _vkKihQ=h * ׍=!^;&Cޤ;EzҵM f崋nwj1Nͳ]U☂؃*e/1H"}(BJ4* zX2lkԦ7TJ(,E ~]ސSq'8ft_5C\!j{4׏Qp>/zEa(A ]%@!'!uؿ –.5 DM9n;N** ;~RQA۶ PV6Ŋ6}z5| { 禼)K֯/,$V4*I[9QkoMJ ]!wp v+JK݊. V}E_>r}PTh8n.sSNVh$oShUJn7nmyħ)sr!~X nXd\KƲ4mh,:rԽ0 uy!4PrHV'u5.2Ն2?(EH b6QAG1'ޟe[d=Űƃi豗?8&{ +=7.K5kNHi}/s 1wlQsLX>C/9e˧8hP[{8榜vQ7ۭ "2X<G2_h!tI9FsВrV?Iˮ"b;BN.0M4v1nhQj/ X@U }niuݑ\;i+C6~҇XEG^ LM񱛗Tjnito6w\YUm U ˟ށT.E.Buܼ%fyDžAV"#99sʰ~[xuI4|r,ug{zҚ榜vQ7ۭgDx8^xZr(5#発ǫivnCQݢ+)禜vQ7ۭŊDե8 =Q"yQֱ1{n6<.Ϲ!];7݄jrA3.G[^3_ 4t"*'g3u:s|v)sG"@[ɰ7Uz8Z[5;pQ/'BH 9pUU\.'+^5ƅz"#R\j5FsBmkUDJ/1k.RzZi[8WVΝAMcL#]XsSNeV+,3We\+pC]kmWNfEYX;̱#87h]v+ް9̢s&mtYnzI0ŶpGSbXѣFSRZl^?-yN3qdH[c g%UBaJ>7Yܒ.fU~gW䷥伋شuy\nʼn[-vs=ȚsBJkm{)vi5̿x0VѴעo}"h.H#b@j?˥zVo7Ëj0}T㼒7bPj%B#İ+ _z?6 )^c lI 9VOb&l*)QDSܦW]*u)^5js>Qkf&.Q:ٽ{|Ku >ԱqulrElw+ِ'ΆlH9oBeJR")ߨ7K}ܒ.f|b㵠%~*b5 d-]RKɡ˟4Q)]O, 174_/X-kt!y]5rSorSO6'zրcXʎ#/s1uw]R'j6kf>A9n;gW*?@Z}d\YɇwxZ ]Fjnʋ Mjuy7*V׮"҉HTȑL/蕫Zn.5˶XbE×?Iߺeˇ(߽c0uIim% _v˱Z\/s{Hc%5|K]QKĩpR2;i47 _vk+,q n7ߙܺr1RW3C]Ür/ eb|}No*@Z)QQcLRqTѦ{"]QYxd;-#DcOܔՍʹw7gg >Audm$ |G9ԽBQKq.. 5vqqM9n;mc7[Ʒ7?QS>غc[3FJ՜F՝k؂?zp8kwzN(myo*= ơQc~plŭ^OȮA!~5}WrEٯ}P>H]R79vv]hlosS^Hh(mzqPV"04YT2|l|kVU&xդ榜vAno)1 0Rb"qZiؓp$N?^y(4_GjnRj^pA*h`EzE%T{PnriSe[-*C^GU}lOA(:帼(t=iǧo{tq͑47崋n.́a _v4~ˆ j0Jq=èШ9'n^)߶D-f$aADF\[f'i6.a]W/眔e[WP5X 6;Je,kV5V76;Vѯ!/nw/S!Bg\krF+ P 0 ꑘpCxKiԮc愔@/yi]woDQl8X$ڥg=m4ќCheo<Űqp]{ŸSb]==-x2bCCzШ8geX l+g Wlj C=.=C1`uh8:q%}D4j=Շ2³E- O1dMhgEŸ͉YHؠYXcgcu3#ARIp3#1"HӨnf9!-zO sM l3a)|[$#~mFW[BŌ S*zTk)k/LEE+/"ٰnKa51T-FK/0%4jS愔@ﵕ;.AgjbwMǥU9(ǣz֯&~le%FňoYDЦq-mh}}{T~&|nw Yeg˫^?C~oo5 %L4@tz&-׵nkڪ,o!xM4cَކ/߇v!oʑ f59 Uu' KU<;t0{kv+H$F1&2`NIi ^[}U󌢋o5v44﷔t7K+3#GTBQ̺UkO ++NX[\?j[+ӧwԊEF\sWQKRZyϨ[OFnGA5 *z"d|Gz_G˨꽶&:6qߑS%ntF M=I bKS J>kk ʅs 7rk #,~.҉=0^8A4a34'UgN!VW) 7lxz[Zu+ew== w5>k#~?Z(X`pNzU6/d:TQI_M z?k0;<.O%r8CG[:z*-B]*-*@^70T?&\QqwS.#/9+:^ۅ 쒣s[^J\jgΥ_Ҕ4󨍆:ɱ?c_^Թj#KXcJ2] qj;ZW 7ElwA}wUYe%5u6gu;*ᯒDyܔGk,X< ]\زw+z?"*ߔZf$d47崋݉{YQ}q/+^ %+b+{xC97D.ޣ(4v ?Zrki)u_ݿL˯~/s󋞊(~,| 吺( mҍ*"M牤vJI1*={u:Kޖ]5QTzv^_ (er$s_!QsSNڝYOz;IWQ(Ș%&f]֓CQyI{.v'x8VL AkBE-?]e=٤K 8;>^5KYrM0k|Wd &uD8"R&BD1s0،n0>&љs|*v4ƄgXwOm`>URIr6Y.+tcW57崋ݙ`NKt21`:hĀO WOҋ)9!^Uu!V#Iq r7t%g|8h ݨؤMYiu_u!tT}WkH+,OS;VO29tn1ܐˮjg4n/n}4bȣA <@Uc1̌NW4'zhZ]9]I.Ӂ~uES5H,Y3bOҦv+i_CW 0,P=͑3C:awe{\{4yȋ^k `>GD,aK7nˤ|OtnUkvы[~IᯧzAvQ4f |=z]oD1n&E=C1-i@ [wNX˼X7%FF-v2C_ڳ 45KOx=*2T<=j1CV R/dd.÷X@rCE${D9jw-MV꽶zG8@[dlX_r!; .Z HzDdԫQN֕w̦̌m ^[ul AV {M4NG6 KYѦh֬_Myڭ2Ֆ(N?8q-CRByDK꤇Se2oniu_ZݯzXI(pћ/AImw @q p8)\sS޵kw8UhB,%;%GAM򉝊*X̉-X(kiu_3R٧jQ/7d@ysKܫ)*]RmqbnD=vuSsSNڭ3\"IifT jC.oZ$Hw"ƱgF87 ?vWL:#k?"t]ǣxxTlqG!}Vڟ/!k!߀.Han<;ʞ_L_ Wً tFԜ'^[>Lr|8BmKw[ MV#c^YQ+@e: {-~g;tK~KFhkNHi ^[7d')EG}swݣ r __sY_s?%" a 1"Ұtvxioe|R@PR( 1bEA::9!5xU rWAtzR{ȗJj#jmݔ)]] \{8d$DW(PwuP%E2ܔ7]dnn6y<$S~0R&QXT@7dI\z7ըjNHi ^[c '7Pc oo"=eVDwϱ^hTChNH~ί> ;:ٱ|\Ur Ѷ]ّX<*=L|^[< ؚ9f~g%AL|xʰt8Bu<*Y8|MkkB?=Bpb-w)_(.)c(`E=MT57崋M ڊqaqDmN`tdD/MKZҪ`_鿶l1PBE!OͼFcVD) ZHzԴţƟФOu>-Z:T齶:Ik"L{=uGu Gqg1י #qz>[NbFS ܖ>lޥ>jUGOV+jM4Tt3*  *rd@&˖QTw1qJ|_]mLsS>jօ(k*X .|$4LWe/{U3ܒ.vϺ0Q7a|FP1ߗ5S%冿 I8{zn+t_i>.yCuRuI`x96io9kM3㙜Lrؿ7!HV\.fMȞIMȞɝzN*xxc ir+ 㙖gBG򨼲!8z@gv G֎{R̂ZQshFjS2J^$רbJz?%.Of{?̌trTKN B1F;k2ҡ<00=Ϩxb^&lm&>hDн__a~'DFcrEnEK6-m b7`r2nL3 -҅[c[sSNڭ=!T!y ߚ4uNϮЮ[#d{jnʛ"R-_pV{lȉw?bs-. [`Gt{tI-ʼnu3-RsG[Ϙ3Q6,@13?$ܾJ%>|*59S)LlCHǡJcwknʝyg+!xb׃:xYSW]dJY{)_J ;f N*repGsq<~[#( #m&PjtNhoM9Oש:7]5pzv^KK #ܐ.؝:̆cD5.?]-˦.)7a7'" xMJ9^H3v$wT`1[SM&K$$$ק7f ӨSnRZ'\(!4'>c G잏߃RSWB9)s`cP-9ݏ˙XK+]DY@ (4OSHB3S4 \MJW凜veglaZvXD}m.K17r(RJ]RniN}Oؙ')]}~0$נ'D .uҲ_W7:PwgB5_~"ϐ.v+5Y CPQ[qOڡ{ugrߩp5JsS~؝u"-YZo"gz@-cp`N[nI>ni)u_7m€s#wSOQx f0uAqlv9OgBnMJ"7]Rv2p‚ U1aܞ$jwʣ{ږ-|I9^SNڭ:LE01>8?fȬ)B2 ݮG+8ѐźE{C ={N]\=> =z{$՜pT` Qad1zMEߨ-1'4z a ʺ'cDR$,p>WLLiR6]uܔOߔ?v |݉TW8^I:NZG?}tI||1ugWiu_3?xh:vnpN(9vIӰ88R˱O9䴋Rb௹Ň"OnEUg+:@W̺ r…e.籇E s#!Ded`8r-l-; it0]8ѐ :hyԚ]aBVgr㋏Ѣx]t $]鷺gE_Hq: &Jn%?| iXhYA"abT0iEI n&-ԛJZPi4s^kԪgSsBbJ " È|v6}lgS0H4uňTLV73@Pi,D# a[>n?6!C#\3qDluryc)@̼h+~?%)eGHRZl֪}=q}Ĝ<轶:ձ4@7X'ފE0n>DpTYvkNHi ^[3ж\K\BnjןQ~D/h)>Ro^qrWbQKb`NJi^[7+]!SmpGT k1!{"y{"swK4=*WщDEGQ7 P[~mՍ~ѽ.'[7pc- w']g-qаlűF[ScWw9c_].xۨ}R8QKitIb۝I)sϱޏ ʎd # yi3&~l[駽zurh.p}nr.K;#1ekź5Ń_{΂gc}gor] xRX[EUƉk>Z:,DS# 'QKMOJk k恹ćGzW#zzT|Mnt ʅ9LK#Յ닌v+K鮘Mz%z7qT|uϴPa+Ni8/q'qlH%5|a9x\+q?sh(KMntQwϡR7{>A` PPҦdo埇t/a?ueDz$#;]5kΠOMּm{1|"pT} Cn[RA>:WJt^GִP5xB:'q__WkHM7 :QT5>8iUc_G݉x3“}/m7P*Nch)\Nң#A>)*GY:`A_E(C0VA`KḰҍ䴔w4ɦk oɆbϩzP휎ih!^4'М轶:;MN"'ƈCJ_,{ V)r ynBo W)r[P_NVqNHuu_[Ll@XPZEMK.|]U5tX/:kTښP̍ U>wfCq,r KE.)3 4Wh.Q |*]īgݝ')wi\bx'?@'GMߊ^-EH_q*z3?SkjILքe|yQ-FEdQU%hD$bJ'UjꞃH covI;Dڶh,oÚG"& $tpJV5ۺt_o||vݸ7].+ .+,K|5s[2߭7Wp7Ƚ1d Ћ^[Z]$G??/'P>&VFqʽĸSWTqm8 J7<6hm.حǪ*°J&I,埈Oߑ=B9PtK*~SD[ %]}qjB|qPLm}qBvyB|qPL/]k,ܔ.v @X3[ e&gȏ#A-Z3-F˕U; /)BNڝ of/dWGY~U7}tIe8=RsJ/ڭe(dLq.<}WQ/!c.vo|K?]Qqpn#{ט-iȗڝmD͚]ÛowQ{KDݫ549Dv;\B>Քlֻ߄Ō@s 7'OMWI;HWAȧ%hYPR=7M:JdA=߆.]h樣榜vA<'!)]zfrH)ܩpK׺h|m/:G]g8e:Wʗώ7>Q>X(蚛.}5(#xM&H't#Jl))tklYԴg.rM9k~gKqg\7!(ӻ cΣۅN=5EHU-)/zn[(:_mw>o_V%_սbnCcD:>մ ?vg0-.Y:4ٚs{>슁k>%u,' ]pnʋZs X%"W2>QN13Ň`g[ V;M9kwO'Z1~{oedۺ(gYw++j!:Ix{emoN<@LAƜOsvX(gY 꽶& 2); -dSc@Trȧ'Ue\&ɰe;8j9)ڪ7Ɣ8r@dX2A .Ü_ n3.3inʻL?vg9Gyp^ 'sB=*0*N5Hy.-QSpd(sΣڭj w䗔䨂V[DaEYHP| b\lkNX)-}wE< W>[i88 H7 7q4 ߵ}'GΈH_prw| s3&N fNQ^ʺu='먙ؤ+6kkYҸjYָ#RpWU\(ad10,8 k:.puO EAUھ6 C7щ//z" pĈX=**Xv []1+ $ EF:|&]8' bDޖ"Q3sBJk@ښu~]|K4ʂ 6k^ud{WU WHtgqnYh}A2 ?v?-Vto1}} .&O*{,=4\6֣tlqŊt˖;LQv7Rv't8_3Du,^lLU%@IM; u{Z۩)]}ŖX߂7kv9,6MgK8`]{(DY=6)- p)ڝnz68nCw^@'$rUIdu ]QG%lL!~8slRrWܴ,¡nq $jn;FCnq .$;(rEn/]p7U.4w>Dݏ߅uIt͒Pp#sSޅS?v'1Z޸̱jrR J7"V(X\B FEV)+w|!uIaiI7R:涼Tv?:6oC'U!DȆumlNC7VF3 uߔhf;}4}yߟ̧E#޿ݫҾKʙe=[;k%pNͿ榜vQ[(L@Ԯ-7buQsgRWTw8{n UJ]&8FWA1»nF8>z k(Eb0H^8A5A5g0dMتc^𚃫Z'qoZ&|qܺ*JPM9kwZd/) $xϛ h\pk/1m+IlE8S0:{Ϩn/Ie%-G-xQz_#Hrqv{ؠ^ ?v۱^O :9pז%c)_HF.)c.@؆ܔw1?cb>|>2ڰ5rTKoT$P63{r9b?ԑzn~^9D>td bEe]d3Ts8.l5q=7 ?vUzEE"=@fK ?+۵|RvGq֋ÈF7RsBښe qܶ*yEBmC!D5QnRms+IZ*Zd8H[7'k.GrPbfϿRt@邚rE|E&Cӯd݉:G^Sހ ]Q5 ':IryY<,Qtm;xN2߻)h12.}kԮ$$ Eo̟iivJOiH31__zQsRZV#t,m;d T"@fq7ON#m"\?tl^S iS'Koqyk_WZWOt.Ȍ}CKVZhhwDYx"b QH(DV_+-zq>ר]`m轶~սMQzJ|5zWg~WW:tԜN'k+7L\h<4IB޻%=E#ዳz_tɣn)kkVu]{"cCji!:.8-%jawEݪg< Utt8'l@]SE2 ՞rڵ%Sj%r+p-*z׋7ʁu-ݮYQnE­s47 ?v{4qF4~Dp҅.#QGFla xT\cI (Ư!Qx Aāxz$=` h=P轶M{Й8/Ĥpqd`ʻzB AWqཐn==pLsG؝!nu $ ƔV中mm.)ٛÞڼND{-9kwfT2A`ɒMvw2s:¤TK*axAW{"SGc' 榜vQ; *e@K]M{.kr6;㶦=7C޹q;v 0v hn3hOvWQpU] N-ndczlRђSNڝ7՜qq[$ "!'%Nz8aҍp&. ~r%LWdXpak hBagCCKI]Q3QzjvU'+\׾JEnB=jV S3Lĩ*"i$8DsC.cwC/ `17!JS>.BTSQyؠ=͔.v?93xsZް,SjʷzTvR7=vz~M9kw툤rig@yiZkp"igKWQNkL];Uz\\~5:=5|&tIČXN+ҍzMJoW)oN+؝)_.4$lW]HMVRWTu$YO[K"pniu_3J1fyE:+j濳"1q?W=7HtcүHY.v'tXřG`i> Wb~t@Ȕ$NB],WjoW}VnCK1p |#tqezR¯x]RtgC5]}gԨt9rҍpSUNA yWkYMalu;nݏz`2NYXR? wS(}! >tI5 SHEJKfˉo?coJ#faf>?IOu;<)]Ce[H#Lv9*KUt-\ը5_3!|LCrSvY[s T+Ƈ#^t†H]Qۧjq"7x=}ܔ.؝{%BM8cׁnMjOʯ[R'R('K(wco\ (mJ1^;aj%G(Z9Q 0=Oa~etNH70DVuIwY5 X>y 8̾֟7wIkڇN]B.| n,8.X̏ߖh)9gPp.)4vQ ZcSc2NtXKBPZk=K(ٶ.\)ȩ8bR}5v2ܒ.v?>XUCS9*nY9!9CJdr&e;QO˱g퇁CP}3;k/~ٍnDio5[{'U2 Ηy~slP>U.v?k2"Bv_Az&7utEeT(nA57 ?v3&`|ƘAЈDR<36j;R/K.F\[y06(=c[NcT29 k]jO>)?9=OAݛ#55HԂ)Խz.v,5&3fT"ρH,3 z|5ՖHS\cwinet.<,ݑ.6P*5SWª"PR7jb=t7MhZ؝w}?mCDq1O9Kia 'p63u:י!ЭKC?#Ny0{]ROTe鲅9~ڤsn˛gB[ UWqߋT;{ 7[;N%U{Ǩțؤר0vI\*vX%z,E6Q+9vՒ S)sEm7k~%ܟ*%l@"^B9\)Fw"3M9Kj%89.5| EVU3o]S-rwqq#V⠝tjBcg+ 6Ƨcֱ#߅9إmZSxOd51YI$I/rSNKcwV fyGw9+;M nZxlCgxnetΒ,YOc%̊+;OSd ’"eOr)G;,Y'/'D;L50\N;(*+%rRqi<]!sS 1?v [ն|@Ҭ$F[ Ɂe5ٓ~K"@ؤ-C5cwNn KxU~hR>פ.哯83^j«HM9kO/D( tYY(w(G_ΨKj&J*9S/FIܔ.gg酐!00,w"D ˝;Ir')!dġRQ)UBȨԊrZjzVYe{o' &vPYF52ٜuS '?y47䲫 p?c;F|Ƃs.! 9`ngxtI'9XlVc-禜vQ;uL⏦rUTؗS>φ~uLt΂n]} 7崋M` 85(BQ9(˙IQXRWTɧrtI:F7~> pf-Dpcp8p(Xn;;=ul #57u?v2[w}2|BM櫕G]p}wެś"Nw'G'>-VEyY;]Qӿ8j`]@kEsSNڝw~'Bmܑv(؟&Ʃ=;89Cw=2?)?`]n [P%Uw gl=_(#қ_|=6)=c:ִǪePz;Nt^Di`󣂓xM]Q+GAtaQp]+kw^qq`[;*)3+㞭ȥ>؉q)v1~va'Fv eN}tI ##ݧjMySw5fgl_eʜ+r6279r9 >#J5qBw c̹ܔ.vg~2[ ;tJSkF>+Wٛr%սZ6%J'SNڝSޮR>Իqd͔t|/1\t>}2y:.?ι:O܈F JUSڝWfױ9[Y (+Y~\RWyWN`Wc'y/!J|]:~V^ObObG+Oynb3Jsݜڝ /C!/jƎ/%Uߎ/)鞫/p[rEH`̶[iʩ_RԔE tI9V!]} Q ZY0( =$ʂsçe닔󌽜 =|ڭߥiR8],yORTq59"Ga #Kʰ>%'):@(*fϵVQByuKűw֤AM*sK.Kccp~\׆\DF&j;nMdJ%u r=7}_(疜R;.DV$q=|A)xNڣK*\(t1>W"?l؝H9x|UŋP2Uf + 4n K[mߖ.؝ĝxM Y>[ QGww%n&LyG+m}^nnuٯhzNgζt|l< ]2sSltAqU(C( 52oz.esC.c>KQyw̍50&Jo).gc/.:hgܔӮ}>c:(8{ȦGb Tx/qzDn9J)];1anFMٻQZx:kz6 =_Hܐ.؝g~ul$uuL/q|j'{p[%u@1{4c]}3 c%+D/cu] j8 QeBtISܒw#F)3v6 ܐ.؝YcDrS L!Bk}t252f׫t#Iᯛ""kkzQOi6Σk}}8 ;)Y.E=t+{)e .b'"E &,![kROؔv7IMVȝ3x{vTgF%՘dRVyڦ(9[eC)|Ð.vT#1\uv ,=>L(vje^dP9 YsM /{ZWP Bb=ZGD;S]5v-TsSNc*<;׫2g/rNMje;9S7SB|)/,؝YĊt%H}sɌnCno7닎~.dwCDrIwLcWinʋ0C;ԟ/nbw|h?5|"Acͭ-En=c< T.g#ߥrQH*O gnG=6)=pqcw-Dwo[gMd@5_vpM9 ׋- _u^5MD!C$+T85jEZ鵦ؤx>ؤtCrU]Ӿ/ GwD,kʗ.ԃqnJI&-kwfUy9țT `ҩ=<_9d?M#=PEޤ-'jit"-t'g NmQȣuI)^I3\sSNڭ2먫j1Srof Vsٞ)*3͟O&M~h _]آ;V_Ucߍ#uE@t0kXd$ M9Ώgl%TqRU/t'~Bȇk'COuh:o)Us1}ϲqT%8(b$)"2eveVY{ñIܟsmt_oq$4*-aݡC~qդrGuc+\S>MvYYA*b@w?#H[c;fL*=cC},gD0=w{!Π:VGȇ ʣc[b%[OfKRpdϖ8wcA=w"Պ83]Q#ϖtb;Q'47 ?v? 9OW)peK|ՌI@^FslP]Ԕ.v?qO kDf+=я(b_^e<>7NYcһoʧp]xOUվ88t]^`SG u_3qԝT(.[ 9kw*dO`A( ERWTM$[o=ܴ.؝9W3jc$r[M"/j Q83UmnK]Qǧqv0cJ)];]Y^8(ʏEA.5tEYg_E9k }~> 2Wς\Oq Ay%?K|G]Q٠䜋st3J ʟe|5:#~xrF+|7y @6 te&գ FǑ#h47[cwg b)oE\xpU4SWT ̧xW-_FZU%T2#ΊC¾BJڂϒO6iA+{pW!g8\vAώ5HQG}A$#qOFJV)E5u~jyO{Pqn8񱶰43}yPKʯФZűeQڐn<6)=-k\j_iٺP KC]1sz~ 0]1;wdl}uPrd ۶t!Moڳw.vgEj4 v%qFITfY}C]R+=g_$GzuK_{t_sMnS8'ހQA+vG9//cKjU; ծrEA ?jBfoQد2xw.ڙ#&t_3ڙ]X3HfuT-JY!O}Z ݥ _\-eEv~ƮsŹ)oqkwuyilɌ-"6-G~AR lgKfwܣڝeD > de~t2utiێ榜vQ;Ac-3sķ_!{z,Q)k'5Bv ;*M9r]`܀'@jym٨[;PVK_87[;cI:o: Y#yOKXț.9W/ݩD)D,:.vg2/^hhіV!hT6ޖnE ?&0VẼ%.1qZpu1: sF)̴Qʸ8mIq/q1My:$u]n-A\?O`( @DDHl8@;y19LaUaSzR> =G ]ud܍ ҽNwG'wvEv֭1?>C C6/݈^^',G0wC7bW^ܕ];Kכ"o3`ӧoۍ$jNX>=#=tF ҽrzUxqIj)D* K|blN ]Utԩ*-]Ot?{/,8-.o&TDG'ՓVpsXYF&zcr ѽNd9Bt[Oc멓'b*UGqt9΢ёYXWKhpݨxSnEonp06EP]P}j9] m$(]2vfn'eG):=nz)j闬a(}wG^B?hz8{1vN/N5 sZNz ~w!ӅJ8:J6-wT/& ESw%|Oۅ3Tzl]ES{ܖ.v_]_t T <(+V |ؼ]xy{y7>UkvY;2;l7a+F'gW 487αWz<7ʅ%o Ct21ԘH%u]2+ތ#Qb,7"+-u_nC(n4BәN(˷j-Um3.tŝs}5k]ֽɢ8i{{bov媽^CfO%8*Xm;}čmuos79@Hz3RŤ3 ůJN_.Cȷ6ZfZg|FD3e!!X· S+0GȀ1uC ܖ?t;y7~-}8 n5T'#q# g50n* ھj .̇&0D''e]WJqBlȫ'B%BDWsK];ϖ;TE9`uxZDOY3!/нCqF6;ԆΆԾ7knTxޔ>ܓj?c-]ֽ}t[6gڷ*ԅqY@cI߁ҮN[?CC9yr;C<@ utM#YAk͙re|_>bW{.=^7tܩ;^x]D,W]bnmuo/ss:=ܳ ۾Eˇꍭ;Npw8A *w=riuo/|F(9X'CmUD *c3HQ4gXfݭc-1yauk5#pTQ# *B>YdMfR|w֌xn5v_zbS뮻80_]ż깫Xt)*wOUs]zIyAؼa{#x =<*BW(Zp䃓:NSfCH5vo1ѽ||ֶVoμ|%X5O8~5LmwּӡfDͻ낗j2}Jn<{᷄!Ck~K}5`?7Gźȃ(ԕ<أ=jm-qZ*؝=2ܞbG߸5:ґ'uovܶ=c7=3L{}*89 P{Ω'x"Wa|rt'!ӧg@`QkG4}[C<2vtM%:흱k] Q.vo7 E޽SAT-WHKydo{ޮo{Z;}J]aV HMDZ>cĶ55vǾm=7rمm7~Q gk!*⛩c(ŕǣf6`:jWU8kֽV2Qzto3`#qܽtG.4]t"*M]2IDӮں>9톁q]oUި镉o.By}(+;!8<<>qa'3i?v1<擖RiJ[R.Q@wf!yݙKV¨5j2/V|`d]SNh~%@cxƮнζvyQ@?tk4?8r_;Hw6cxJѽν0sNz^]o@P$$h|RjG ?-p1)E'vIn>~_9v»D~\ eysݦZJEc-; ,^N%Jnx.-JkNr>K7@(\< 0{dm avgȅ|#B.J .' T.j#jXEM re :ҫVoUo.תުZїlrŐwGNSjᵪ{B1)w-đ?uy_^ܤ9.|ZmVxYؗnM's?Mctߥz/JroJmc+j(+>s[ptӔr}*suo0}m-3q-;:Hac+U!O8B7/2vut ~pZ1vdI{۝ "X?D>]iF;=G]hcw.dx]O6"ІV&t)7fuMs(FH^ ӑvY;Q_,ggyՔ:l]S3jp~nR}(># ,<'-7X/z}Q}}e2.NSQF -wto3Kٱ?rx ;= '@}y䀨 ?!:;rN]};my!&qRH%?*\ztb|Qg%bP#HsL]6dnmuoD8jF޿F W$]3nc4/t^ܜoy>}{a]\+މ*x/߰nsPz.vۛ@NB~ :w]+<.m^4D7jjgE(QmE5W{ V|q:GAStug(qmyŭ|bXJTv\ n.?\O_UiYԵCtUzמue]ֽN^%V*SsVD8A)Ǒ;J$j8:+ ܖr{mu!WBlT?`$sUG} ۥr8BGWh 5#*3ijUNZU9hRX֪1[h)EWUQܖȊ؝a#e~,DÙRrr['797|5x2v|2{M3#pNsS9U}(I%F*ᜢ+ TNT涼;?vg]p?8FNxŽ @ƽKYIJjE6%s"c&cn˳dW}agStWpQjݩ[T|_jMy#|XᨘLn.oqs*{/wrO/Yy;}\cXPa^ݜ6Ñ?"_lw2<%uM=. ҥ6-q# ˟"+ŢoQ\~WtMe785n0myͻ_cS{*K;|#~^A y##76κ[i[[s[;?˹ee)k.[J#WkztM]HW]o$mw遑}Ts]97ףwsg .TT8MH֕GET|Ecw_]3b2񚒶3E[ +]S3*/:0vre7vUol ƳAux+ƾL `5 nB /pT p΂90ޑ/kNe59rA.ܖ.vgˆKF, }+_ns. n5',8WVk # wۖklcowZ@T DDlz:`DDlsK?Quއ5wmuo3QԘY) $GUҭ!VX gxsiONƓnzMw%d8 G}yPߗ*J&5UbMj%h-mw-}+d~-$Z5ŹuG>ޏ8;Fw7c3却;kAmZ%tTj ~]gGTzFjq;kuB~ѽ^鄙qVGy|)IϺzp;x;+s[`?v'6z lw%L3&ΔW~>]hp2UH͙18ctDQضLud3ij-KD˦⑿JKOƖiNA'Fcrtzif/l{oiv00ZvMY.i5p8Zkݵmuo3޴#P #^\I+M"˛No54:@$1)2ShGFiQ܀ sk/G\v龑wpՃ)z0g\cןzI`:m*US,۔TEf",_+xBe8~ :blS;vmw+QJ3tWGG=Eʾ5[ E~Wf !GDÙr5 ku}ռ -8oj8/BBxncQZ>d۔/yS/w ΀9jUa?g'^?K\_~t۹3v _s[nklpաG({CS^!Sԅqvssc~ܖ/J]^Ip<1*yW'7 TRk^t-9vI,Y[|b}3~1ekFo}l-n7l8FWi=bvI~]}FE9*V}3h-Fcuo"Z6GbtUYțҽ펌ѥN|qroWÔc Tʴw8J]GWiiL}u4LN/w͡T<翿~՟ۃ')DFQ6tIazmmyX{^1;T-勛:qUƺw=g5)WVklzk}į㭷ەTz^{o߭ڞoWOXԎ*uf}آ Omuo}ϭx_;]1 |5:zq߽0i;}O숱MsԺ݉^U;DsƓ=Z_ EQg_Z~rs=+N涼TUɲXdv;̮lGLe26T!ؑԇQGSR¯ߍ㨠AӽT SB\2:☺c]j ,(2'%>Iѝ&WPjN;sy/lFhHW|Nv߻Â& 8g"0`Ru|>\\N 2EtY*=!}q G)q)~d}#^ݙD/Z0j(ݴu(zhy/%7'6٪2at$¿ H9_6}1dyډ+GouzWs#ֽNԮBZQCxi^j W;뚺1@ d0v s[n{mӔ;d*ČG=Ǡo.9#=YШ_8ɽ{NnGqUsZjwۚ+ow7V^ZngxXki)_b8 ILM֞r3FKQOY3;{{"j0 P3pQ*>cwV-E`PA-jFϿ()7uMGZ;3hrei$'H)mRAM_"O'I*a9>.4O#w=?>e#_\y}ewM~.TL'#֘[r7THl{ھY@5e |h}n&]\ ݽ-8`;s#t}Ja8f.I<}.''Bh>u擾UIbC2̜2,>\^6bN8KeP,.+J}?G_آXh2Үy @QbhO԰T hTШ%{Kʷ"5uM_2W-?[.v_ȧz^ݕW4l"sqt^k"K"o9sѺ[)[':9vgQΐk68ʓvvnd#@ԕT68r5v6<6{۝ɹnSyx{7l*2m)˺j Z8NQu80˺,k ppqY^k>s3vуa zǽ"3'5GVUN8i[y9[tV.=qFj-<`ه9%5һm;my`!T"gI]lۣP}RW"ζm?4g=Z#&N4d@ D]SN%4CwOҤE)muocC/7jjϕ",^Mi¨xF-)m_50w< کBgY6;>T; Ѕ;KjY꼊7 Ml|y@ h@9"\cgs[(4^5y:iG{c2sL:GϺaa8UXw cmuo@ {D#ˢ*KYq*ۏl^vAֿtO<26-1hWؤ{\qMaJg:i%~:Z'9wo RImn[m~B0cm~媿g{Lt'Wk^lOO57nt>rVթoհkh/(j  nG`lP\Ͽgk s#_ldc7_f\T\[lWr4$NN pT.;){tܩc7zn?7ܖ.v_9漑'L;W@*DGޮpAei8ʎ.۔;ni"/o]cEf8;~`_2 3Б8!*#/uh9ΞmB;|u/ڝ0UTSL;μ㙾t;G3]1v\)涼3?v5ьwr~tVTmJ]vY;1朡 J*}؃X3UO+/AU~u?чAYN)涼9ev>nQ~MY[H;+z~xC|~2 :mw{yi#ҢBIg|dut(W3UOUkD/enmuo3+bx@EqqdOo`Ȏ5⊫KB!09ЕWs[n{۝\C5-Rt6nKyB3ˣe57y4)5n)mmw/T5g Qxy{z$ Y;é63g o~5Y9(N5v5#kbнNLގXJ3f@EMy/ӅZ3յI}g[rWh)w=t?M:2Y'qܑ:'ݿαEqJFnK{}UZt8BEjȾU ( \5³gE誷-c zAҽwu Ŋw?޾7r9c_61m.!.TFpTgݭ?s7mtN||Cx lwq ǻt*;w_cgF\w?ݑǽu-4r˦SO@}_Oi>zt 1H(F>{sһɪ`҂GMī"5$sG ӣB,Z~ntatRs[^izto5|DQlf1o c{B>$+MƾWSִt\cIr!8pm}# Ԝs/zhiđcYZ7,]ܖOjmw&HwPWWb~1hxV$u.ݢwan+砣{۝1⮛LһvL})_' ]SYw '>kQlκSvwܯpCNp"R{+B[DZ(u#fN9>tFؙfܖ.v':ßgDHnf|u?7}ߎ|k]S+N;0x7Iiuoc޳c:įSw3ّ@]ZP}SblS}yJjgsTlݭbe- X)),> Ut~tSW>TnJjn>F.]Skv٪rR]5cpt#̝((VG)L]='*ٯ~7nz읨C͑kl9'iTpRtsU)oa]SyN.] k_!.؝=΂ܑ5mc)#EMBrd^7j#u&^kܘreD}UiPA6Gf>Y%V}寢255 NU)cR1˺?9l_^|!FWJ,|[GMFdgC5cren>W0GE-*Qx}=g'u42Gt `쟞Fm|=W]51GxOyU⛮6GztMKclScvY;%d8зX*x r䍼$U"z'Zw+wF=7~Gz"}TfMnurn=pƮyz{ș%ӧo§38 ؒG@S[g.g(6Ogl]ֽ"[(%=U*jw{5TԐS']q'z\c(dnn)Rѹܭu(cMJp!{z'ئ>QRޣtnG*ۀ#f#3PA@ Nza&z02@?mk&5Xi q %g_OyƬ ㇃# VnazlQ Tޔ.؝[JS*ٚ4_}ŖHmWI;;آR3B;]vt;v5v6HYݭz ".݉#fkΘeC^qrv0܈;d])B/CޟL[R5L ]u`'I]N(?]C~=AT*(]\pUjn˱K?vg"ъ9r;Tn$X-XwE0uzm`N{۝J'r-kNQ˵A\Z2vk1s[n{۝.G~)BxO> '0Pztx㘴 e1G^ܐ. ')p\wƞhfnɱK?v_p}HwU,F{Q0p=4Р ܖ7{"|^]9M|.|B +(/ ("\c<]JvwAdwNw}]%ޗyz|Rst'm*᜻uscG;#ֽNB9~WbF}6jnԞUU]σ4P޴˺ݗKL!X}Jy'V!tL*)o]\cp){JI*yDZsK];g_?d<9(!]SYng6/, uC~qp! SL?N4@G9;.z~gm^/)G;_Ϊ};\qBRiһ|QqtQeR@H_[ׯSnLZ6AG_VrdGltOKD9➋x_['|F{r9#8̒#n >uF^tr#]0%y_ɽ88Ӛt'o@KKףk*M r6`n'ã{۝w6CqH_'2hݯ8o"qYN[+l<. -]ty36A?Gw&CT=DCߡ[}d3>mje܇޿cw)A!%vN %i E@s;7{L{>OR2OѽBG"jCw ؍-@s!DeNZ5c.(鞽06$yDvlR㕽+PP6 s3u湍uI _ӧbx­pY"RN;o\7Nus][(sݪǮnenmuo3LH{P9kXToeZ)okhcgP7ƮaJ+?vg}fp^z+}}ќ;7'k_߷dHzclS<y$VݙZIؾ+ߛ$/\!|%EwC+7ғqPtw37_R?%3ganxS:v5R~5UN9dt %N]x2WWmuo/iq QQ)~p#zʵIkƍ*;U!~bfnmuoIv{p^ݮ @. Vrj pgmc߁3sto}q{%M+ ' )9 6+uVp\`]/0_s[nc7*8 p5m sIi$d/myvsqw6pfp48, PM]+uDWme0-9vI,>,}YGl˺fڛG蚺N gƾN ӯ\,*pTlPJw]LC^5p&(-Yܖ.vylh{VdžV<9Y + N˥k*țf]'zlQN%:Jۿ{۝݀ I~@!ulb-IL*4-uc쑩B#+~2=J0]acOE3fg%PSW8<͈,/ b-OI ~DЏ u߇;u}}sxI[wy gW7GgkCM{:ÌKw8\a"Y'26]{۝G ̦1[f/y*Om㼙ТwBe _”/ͱR^oS`nԵ:ɸDk4HGI4;r9\';R0˺+wދaԤ8$ƕPj{⹑oV+Bw-G$.nS8(kHOI g\jc"ΔG{۝ϘK>c3(o>5ʙ^jVY8MF篱k> u؝塏n @9ME}&XNqQ6V/KMgKH-mw/S;`pT^̪"9#m9e)GThjz*8E-*3%7kfwQ ).J40{f2"iuoX w(JI}Mի˄-Z MF:z3v6UgnɱK?vϫd}d߽1RS*ȺZ-S)/kr/Kۥ{۝`[mpSQsw, iǹnȲΨsW@{۝՜J,(Kq*kk|IS#_9DЫ=ulq:uure[RS3e鷤 Q~˕P=j!ԭD)CL%e#r)mwWyjK΁)i+(v\M# =%u=ren0nC" >Ϋ98|79١"(vtߛ3n$3mmw¨9 g#Gtk^Wy݄. Jy2wcwzo) )Uns~/ݮʥkgT{5,rganmuolqMcKNcw=ޤA ZW~Dtgq|Ugh=vkk5*$gCO#W.W%}Eq?%䞣+j'R?|XwcDmuo/NRԁ[0z7mod*#lAZ4 AW}k?p+-ч'5fQ }2WFRˣD}6kkI]FT1tafnQIsג=)L@|OlS\Plޮ=BI]{_aviw>k 3Dm+vG>t-d7Eש'r-vjtokw dN|[~C=skvr[j:ɱ%9B@8S)ǖnK'[R+'v1僭)؝c# RةV|X/>[CT)8F}mS#u]-{۝iFwBJ:,UOdK]7Us2ƾڠyn I5vhK|%4Zgh7Lx *pa ƺU`J;V/vgEoWbW7VlN/鲔HMz$H5uMilv[:ͱEW#)xcRI#xp3];GܑaK-ia6޺Z;{涼Smzto}<8ncɄ;>dCg]!]Ji^FSR[#.I8 Oe  9p$c\s~R~{' glMT2LD=ꇌ,Ot]1G ve p5S,&zYBm%.4ы9QVRD ^rU56^079 fdE%(scCQK7Z<+<8rͱEķr#[W3|8*-|c>Э/vM]i8C-=cer%3~՝ٮM-oMŀ h&QjʣeII+^ݯ|[Tv5Ķkl_ΥY|[9U[pMPt;^նO:౯Ȅ)m7Gr9'@A/Vn)wF n9A0.{-o>wp||Y"_|QutU岨>D5Rc }je\\1DU *q:ˉb{ Q]S5pTsj.c>s[դcc7{ej>bᬔjhtɫD .FNY#my@y-vl?q-vssPPuZ슻#N츧O^R Ed-Y56npk2yrMfɭ<)W V}Q+1vF֘ren`xg2 .Tz"s10FsK];E]kŻGwEnBUXTTŽQvt5`єf|[r+Zd[W3kXŸ|`Ž֌?zY+c׬WBe]wxLʬ&aGeW;q~OzO]u@-Ix-IK;mJT9# 6满˻ K7ɖ4W:Ew3*(C5UD4%h]YMSqyNibl0Mӈs绯Ka1˺yw8v܉؟vvȿԅʠ#?ֳ2v5-]ֽ TRQ:_(=[#{F@ز:sV9=v;+s[>%m>RҹVߺc,V}oȚ IsqwPqdc`t8e8)}Iu%qпԖ ]SGX 眱-]ֽ&!$pP~s6C}>Yw{9NoÓَblSnvY[eG\`TV'e7=vBI 0qT;+;{޲'5һm[ڡBN'޼yl=QH;qF:$HP{qֹyj9UB䧙_Յ=U)B35)mA+iB9WKV9k{fy=%BQ-=c4{zM؝+{ggW5j?FԕӴ] nJ8sK]:?e9EY`bϥ}߷Q,z>ʰOf{n˱T?vg5AUpNFwxMiA<ÐiF%.t56.dPmwVwNޜMukvNC^X UZ]16-\>w7b1'|g)`ьlXiISOl4 je|ϰin5b8!k[t݊E5[p/ѽ*YI#ִ.S7 CTsB'K٘renޗ-s޿+bEC˫ ĝ0kj:UN=cXǘ[r|4<ќ9ZǷ^ VIW]Wd]S+Q]40v-9vIn"/I,Gwe̢&{{uMMq3SswF؝"pK75y\|nպpEWRN*sW4˥{}+Ű Y߸ ݑPtj;vcgenmuo!NHnptk`pʢ1˕xA+uMwZY-YtYdzU y= t.k l:EAcߨ;kvٮm=EI!]Sd*PoB=Aq[Qon˺ytC2Bpn=m(7K1stMV_jޕxVĪܖ$mw33Ϙxs3&?{xXm vY;Xɧ7#Sx?%3ʿ\;2@)5u͈7+7~vgn}ߪR>J/PxEtB}8TxNr,՟3= mɭzjwٝn9+lٓ][螮+1vtv-_w3^<áLX\7u5*Ag"@`;zQ9%'z'lMU'(fB=StσcϖEѽNvoK‘ã 퇹%.؝ׯ|2K#OfWyo-wՔuM7g)?slQq!.؝W|F\~ރ 5. n!M<v=bqX=2Sv^LΔ):;(NrTQs)'<%mw~M҂v\lEk/ֵI8.Kj)WֺPٱ&U$cgfv &:?vg:˔%bNf)W{vY)|I9/@鍹-{۝n$;H;]y|ζr٢zZМuM8Qkt5N1ǟ"-Wvǥ L]lQuY+Oxn7!|r۝Ϙ/T wݦXi)UXg]S;Ca/E{{=blS Y8%ן\x'gq;ޟ,ҽ\(s#g%0oZ WeIuMH#tg 3mmw"V.6X@^F1p_eY"s@%/ Ui|EO!pN'SBM%&JUu\-9etئ'.}(<P!fog3pۣ c'#9tX=vMmYf4gJ ^$\}d*Q/I\p><彍s]ֽ<&ls P[go\Ko:P.!nݗVo&Om;= =blS6-m7D'=aquCw;WC |ԢBP-Q;t</lG@8^ ,=Qp+P؎=Kpջ>nj]SY GeĖ-]պ&B!;_њt@\=G]B9i\cxƘN ڞ^cN?7GP'PCye<)z_acM·bdj{GYۇflBVʳ>{.W%ID ΣfDЍ[~m9vIn-9ho7޸/i=Zms gZj柛PkpNro8Dg Qf]SOi=t@R=NUύ|p\:eWΎz.]SyV#tOd1`gcwbYZs kŇ -5iDrE}5|p&@Cjr>c7ؠ)phoj ~+bs7Wf%6M›RG+]z  :m?ΔgN*s04<䯁/@]A/mwhO"%B ](w|SQ]EQ;,mC$kv> 8L7/r]y ϩA=;}N -\52I?3SIF?u woK/v7'OQeĿi9%5һm-ssyػ_GP"_8ǛTs;1wa[.Lҥ~'t6¡q?W(!ꇔRj)ަǛRM^h=쾒ut eL Zb[lO{qI=w垱 ݿc{2?`;z\c.iRP* C {6#+۽כJgmmwbgNaͅ#Y-:zTkXRuȵnI@{!t|0vs[n{npkVbⲎP Gi}#5vBf#\ kl~_IQr\q?>=}8UN.qu`nG;I}r_E=nVx)G6#/6̑.؝kܫp!ELtɟU6NxXFͪgЅ^GTR*wZ)x Ẁ NTO=ʳS:GR5NzD!`ҽ>W⑒%'9嬳C]O|Fdo^?8XU֞>.؝:S:mPؔo4voJ Ʃ1zc,s[n{}%(gd~wxWKȖR^)AP_b{k`nɱK?vKh蕱CvʤSwŎZkcI@sDk>0%3$j(xb#qtMЅU%cgcuNZZ>'8|mPqN)Pmر+OwO#^rZ~,}KqVMo1Np/,KKT ' -jye쒽^<˺ݙ~ZFw68הZeGzVb)Kmwb}{ܜ8r:A)pI3h5SM Jt8JWCw/|ܖ.v8:޸#STu+>PZN*)8W[Zɮڞr,ݙ۵Օ}n̞vХD;>!$^;e߃䷓B&[D.pZntoIx5nq|w{UyWHȵۣ 0)_t71v]my!}<s\l G;p?]E&BwqL9P'Nq=vY;J9[9H&UiJκvNO-fʳ%[tv%ϖy|_s7w)VKV~'mtϯc"lJe?v9y&(mqyr8'@}\j16Q+ktU؉Hܖ.v'Й d8@z[PȣtQVb̲#]ֽN 'jX?OZl 4H]81wAl%B-]@3mw:Yv:iB??/oS޸T 48[[ӿ빑.vg賓%CjAs%}NL[hC+u%QjtI;wZ-mwU;`t HQBݼ5"UdGd1krcS~q`7ݼSGXx<#'܎G7r#uf :XW};1{͚bƚlljrom4y>k Y?cRp>;"@&;z"O,Vq)A$^ Ƅ#/s.m1vvYyU.c'8s[s.=X%9qhUwQMy&XTq];8renޗiptm=sR:%tßk@l%uubenmuo3_V™x 4UJ0j't;Ea;E*Fve6T5GNc87S=DM7w1އjcztݞ.}G߮vȗb\-&VB+L)odMcll~~BCl5)})/ɗ +űuhoZMJk$ Kj[%H/[wSڀp񔶋wEIEAkS ]Q5wzc_\YclPђ- c߯(Iq1Xl¯t!XW|`GITWݨ+ ~bUNWn;bPBp.Nt$@/q._ҨÐuki rElw'ëu,Z4lsﴷ(Ygr4:.R ׆|:喐.f? xx]tȿ@*.\΢7z qp\ڎ\;n[e kp9K xIm<YC+m[!)Z4v:?r`SUK@Y)J{ %Q- p,\ 0˛\wS:XK& qr0 R)r@QWT"gÖ=ܐ.~V| p p1|){Kˠu;K/KؤpJ>;/1<5ˎf>=-@Yf @TCA,B{=iniuݑZ#*a;ʫy-5 n5t{)at?v D~299}( ;Y"?/)GtAOhmsɜ[."פV~:]TKhVa#(~Gٹ.'_q+umIGKcSL7n+߅8[7WvyBn=]q߅8/݃$'m]pn@}F%1fvc9XkV&t ^}e*z-+tQGBsS>UZ֏)yw3fm x[Y=c;py:Vc=@?亂N|/sѵwovBɗBO *YȘB$v!9tTITF|+ pT!f'*bc|SAmtq57E;`nW?+ ifh5L Qn]9HT sX1][r%lw:ot懯s̏|3 tJ|9M݃0>'{9 yWF?vǻw7=rHԉ-ۥkqm~s$lw_Pez R?蹢7~B~G]RcKPT kN~FsfKNb,PK/dlr#&jEyI`^Q>9uiTE&UmJԱ5Wt276x؟Ǣhat?vGR:4 mu<:-VUTF!#@lsiMCCm_SMX*tJV6!n{\vAcw,Tb;akX/ڡT/"֋5s aY/ְ4vbaPHc.sMjuwh16Iw<Pz|ҩh&]vy-Xޘ=0h|{XjBcK]uK%fϧq:*5<E|]Nj:wY't 3~o_yEz]؝qE]5ozƵ"J'҃Βt×nǩ}*m*drNg_48; ۚtzy:Hqpoix"cGV55Z7%fs~QN_%j!65=\wZ֠7n[{%NAg98M_C`1qC{ݠbgSB5;V M9n;U0vw`dݫkvg@A:dƤ;_kɫ0L7X7yX+APjnVEU\Ȗt*ͭ12>̹)] V9$|IwFS]rN#EoO#3pBcw= ,{Q,m ټG@y〮Q-"at?vGuP^r.ۥ_jN9BޔjMVA[,D(v݃]}"sS.K[~\q׻ON~?oJ Pt SO#b%;w@sSNcuQ?b{cld.Ovy'Nw(ؑ5D;c?vH?rUi蹞>vnއ]Nc'-,c$+|/`;~+GxUb%?:A .6T1 Iܰ8'39cbnO)k*]R##]_gnqܔ{|d [[k8M%X1kj^GXBWT5Yb}_ JAevQ7~KG-k|d^Ov򅵈gS-]MFsS=n;~`D_6rzy%b)9]Mdϔ5umӝ8̥iܐ.~N>Q8|GE<)i%]R% 9徾r%lw)1Um +r#HEi+ݨ;TT#(De~B^ S8Ø)Df;XlmwdP8gcV⺤J׀SPeHb46h)]v$ߡI/6{PCmt; ]Py x&SNK;տ',hqBS y)ʱ/Qn钊qLZh4#_sS>hizfo86VS9{2<.jXGZQO{zZžϹ!]lAPO`,CnE;Fruꫬ{ĒԫZ^+yt\BcwLj^r.m kNx:9j7qG1 O疼 tݺ#O݊\SmKo1[#G>_u0+߃V=r}916(ݿG9n[>o1u({ G1o=I=MH,QvԿc7aQWTHR]i~ yXjՖdՉZkyGi3իIwۭO.ݥ ,f"}"G4p{xW+1qK8ox7)J Fwv֒tntSq>R5S87S7쎸$N7oa0SvIlZTS8Nc?iniuݱﳕV Su{lgĞΧ+jyNsK{z\vAcwS,ā7bnux Uћc$Zp+tѶ(- 9Bill%ƙ8 G3 @>',qOݦݢ.nt?vOgO;w[Z; ʤ0yf5|g ҅uʹɏ "9< undmͩx}izIw2oc6^+]|EH 5fNñ`֬浢ãE]RBLnWHYDܔ.f#{|_la1Ӈ=Z7b> <SFp^GdcGb4bDp]c<-O*Z[8NJyBbw:M%5{|lR3cJ~?Վo#6݃mm泜ʻ2 jGf3we4hMauݪ))_ 1{הf5Mvl~l>Td3nw[cws&/^,+"3SjHS-RosUԭ_wVM9n[wdy~"NҭaR cHdKDrlP:K)1EXw +!ɷVBűSRzNؤܧ4].K;;Xxcw[Ge T%ȅ]QՑ.]47崋n*]9=/W㤭p:QɈa-<̖0<-c_Ont,;νKR;x-J.O4vdhn,S$S8mm =[,W'Qv>x+I!3M>U[k]g:dߪ3(J̢U\Gc㯫> UrOȷPgn|cM^ o@{?i HL-bKzWhԮAsC֘րbE+@6$G]=ᮞRPvDݥ$G&*_D͡P!~mRń+q/ևMp~u$7rAE8_\rpƎp憼8ح} [.$q:kGwjW :"'UGSBIEBcww!inʷkBvupOgd{8ZU5yW;[Mq47 T§vi)Q y |O 9w*ꞣE 2iu?v~/s|Ƣ1E>FȏJM8b ;vinʇ\i펔\z. *]@"CQ4HKS$Vn˦IC{$l7,K'aglGG^p/O (<T-{L 5-KXTO/  ŠlP`9URAo5+j{ي8X4v$jnʗ6L7ۭˮ2-δ3xo~5`*[MM2f7ݼ\sSNCUUNC+ڗP3Ny:SQ1^i Dw9h9>b:-A4FW/8#tEE8/I$}ܔo-cOb5TONn4aFO7'NQ79*P5Kv@^.x".nrElwª+.m @aDFpJ`6AҪIəK#!;{p})eI&.r9t1UU-Ap9\wev225b'l7>^Xa`"EO0G(v),^1 ?@']=l+7xxRC1:uOwE ۇ\lO: =KJ1rHz@*5'zV]NAjՌX x3nzSA3ֲ,xؤמ;gXJl7*뻃N]cr ^QĴv Z ^ߏekQčQ3 C\=lkTG˂8ȹbnoAd֊|tIMo3IBQ}Źfv&kgp06[s./Odǜ'X ,ӨMci Ycz[lo lಡDntu6PSϑtHcGMM9Dg6 hQ"S^O-<-54v wF t t2B AN bD9+jD*9mڕm㜛r57)~F{E+igxRoQ,mֽ"&F*՜ׯJ)Igfv&1SܥjP˳AZtchnʽ&q#_iZnq:3bdD^:ĈZ^-b95=ׯ)/n>VCн,Ym]{9S:gJ:z[+x{ޱcG=~✔52 O1DI }M^Cgyr3{5nGC&wBrN~̷]ѩkǂ#R؈.rkZHipUM%Ǧew*UmaxW򆧋MpT#d$]8hHƑY1:H) q+2 ]>!ICQ>x{uwAɋY.fSx%؉c -ʃ+,.1!q,]@8k榜vQ7ww>89"{D)Jwr6? qnLqYcW?NkneWUNc+K^̺^=XEzYt1qmjHZ[έN!]حg=5ST޾ ߷BGc|yTp69n$-v%ٜrElwJMD&|%1*JxHB]$d{P K@_I*ݳAVr-cJzg(a|Lvqp8ʶh=tE&I'%1M9X&p:yHFY;-i_ATVw` .]#)sSN_|=|:޻+35 +|;Jxu%8[-9*4;d-_zz(5֨o+u;+9.'4H'M9n;FOj5CŤ46EgRZYIJ+)i[ORZUJ$a쟤].K[oKb^w۾M7s~%?\-TDt9#0T5+FDlRZcz[hhH5^+فR#CZɦ$ݮ%\'L 6!מhnet?v'3gx F0䍦PJGu$62arQQfV~UՎ<f#G ^%U[\Ӯyk%p =^%9gȠtQ>k+]2,d[ n yMOD'ҳ ZiNH7_[˞=*NScꒈY9/z1up[tUeT͹%/0~v,aMgËC.K %ҳwBz*t*ZbWUƙ-XR9@W "ɱNITCTc'-9n;DMmQ'ZECع;钊x[ԥ8IvefT:k z(|wC钪W2ybе"}Wn;y*l* pHEK6&:TsgqеChSUt.fjm4: .j/Q;!kغ.3<86(=32@du]:Ǜus3LDz2@ v~:~ e@0;Ľ$6ܒ.fxa#ҥ8(U)b|u#.E tF'TC`ƅ;EՓLN8Tʪ=lsQvSyijӗN&ނZ3Q Fez2[!4 #Qd᷌/K`ۃꞣ,N t]4v|{cwX~qKX[y ˰$\L!߂T>=C_t3'y:C2&]Me%-^`A<,sL\7>̅I M_E2cRuN.~3vi8~bfsϘ~=C;tEE8~.2c5vdjnit?v0)5I6vU q!\q.x16TBf(&e moZ^bŢ=o槿&n[)_ Ic ܭ|`q}AV4MoQy ~y3^w@[g fn,ؠ) &lwT3AyB0Dy`M-FlZMJ^> Bcw/3ߗ:!( BdK*BS߬84v4ܔӮ,#~[&*ܗq 9TKj[6k57崋(&dy <Ɩg7=ͧ;F^16I#tzq# ]auݑs;,oA $8u}> ]QqwC:>qܒob Z4GX??u)=oU=gќ9^jdFvDEϖMoVBJ+J垐\N4Q|xy)1&f8I7۝q88_~ZiݬU}ru,ې.~5ms˜Z3t7'@]Q՟1q[c[r?vB ŅYVrqŁP2_t[.TػF;CinʫXjȷ ȗOiCGS(BWv0OqL%t{:beufzŁuۛw{Wо<ϸл/AˆŞ jYMe;"r'U#x>oj,l&r(3l8kg+at?vǙMtX!uEսtϷnP"A`颩ƎÚrElwB a'nd@KS[)Sp R_=o%^__lW ]tq ܔOL7 OŠk _On4](EOWT4a#ƎuϏzX0|eՎ +!ӵQ'nOkuY;lI357}HZjF ε0E +)6?m7;K8,8PJ5r榜vQ7ۭe Z8~%kekG&P [>8BrHײU|lRqf2ɧ;yT~a=\Iߑ$ +tEH'}%سԳѐ\=Ocw>4nvjG(u#,4.9\.~}՝gZ@q}N:Qv%Cp;,8qV͢hy榼٤#&~2zD3ziPtn$vPn!7%ZPb>v>OoPoSSH)$rv;5-[Yl 9}l)}-7dM!ovGpV>;9ǞfW9s~wIIw+L~Kq\+ik=)jLjYAB8Wd#ttIV8KЊ+CsOo#̚q䒢GAEvX DxVuQ5.CKUKknʧ`;X 5o]*E9߇yE< yo@kX4vw߀62ՏёۍFXv xTn0[_5 KVEwWcow.fKuBY3tGH=9Aw+rlP~!o;Vg:i3J38ۄrՍ (ރFMؠ1ްn, ٽY8V!a.:G`tS|(tIuo'ʽ[x"kniuݑϻYTA2-aK$n Q$ݩ-uuۡitQ֑̺8S0׍i}[q!mWNvQ7ۭz"o}h wpW6{ɻܱiݫBp݃ >qwܒUn;jLSuuW2좢Wɫ*Me=j~ _7qЅYcG*1G1`+V<] KMǙ5ZG!B; K{Sk:I 1]=]CJLcp䌵#ٿ1ۋx1yG?oݡ&jN%uꗜ7> sKNNHxZbE(D1E)N1F'rd;1S"אRtcғHDvGvE:O[vVO2ԉ_-D#=<)]v띿zT6r⽼GCTkP=VC;R^ED *sMPkgʣ%KUzUn=q,̪ t7afuk'k)찋)OA0kr ~RVQ:+#=~W2c7TܔO:; o`=0mF~ sIQ%qs-47崋]]Q>·j |DRQ7&]P'\$u-J~B>cحx=8ޔ ,xoL ]Z ]Q9Ǝș榜vAc7.'UGðs6:q«:#-Gձ] 0JxC禴˶FD~#,,`yfWr!+X.:JX8庇=0LDOC@oE0Z{PSZ:. 1BM,xE5#`c [7t+҆+ i+jyI$JiS^BN; =4<8`2&W% kl}lRڮ҆hn[_"8 ww%Xxɭׅû űuaǞkؤ0_%[yv1'kכ >RSRrLZBWTHCPcE`%t?vG}_AX vZDɹn/Ž%UUw vybؤ5䴋Tֽ#qk쁴PrJJ9RK7!\ŭco߇4䴋T硺Äyт]?Mb[aGʓt7#) Zko󥭞>T@xDz-ۊ j+1˔!JiTGҜv>lk:AH'H QBNyU K/\{v$bD=|5Gz 9jB=il"j7i-eCMKȗ"{It#AcF榼y#cwKveE/;(%J޶:]>/RԹAtZ8qC-9-=ilm1><+t,\)I+*>V>֫r֡ytMg6&8q|\1v#(o#"+{O̱A)FtbG;9 `}4Sc͇庤zH.zkrElw˅w\ߣ"LQFȷ<,>"6)]Xؤ<ƹB~;E1#TЋ+t-EOQC]Qq-yYrC_"AUˈDKd*|Zר"h =].+t?vGn;)'LRz.J%8M%]RsęARIcG=I79#:s[i].ެ%]Yu*s,)Usnet?vcGwx?n%6-ܻ1gs:?vs{57S5oĚ\urPr6iȄ<`|I2I$QX.QĹ%ojqƏݑCyxgg!X6&J;o&Tg[w[ߍADh숯hnʻvev~G|˽:v =[B k)LԨK@sBJkmb!= aw+/(b@DT=)Vt c}0t16(㆜vQ7 )ӹ*|FɊlKP7@_fqLA0t$ J>#6#n[[QW* 6x!X$pR9q_ ęJipI4K\vAcwDPLD\l'Hr7J_H| tI wtzzYcwܔwqgb!?1#fkh)]UVZ0KӐd rM+z'b/V.<&סhfYP$ Dzr6^Qi sII*3LtL/i%e$Me펴|΂4͡j*S1G[VQM, ҘsKN5^`lv_&d%նvcYo|Wb%^rElwFλ<0;A"/ -BAV^6-g8(c Ww_I6؍Y>S;SaJ Q+d=rp*mZK/Ʈ6)wG)?vGz;dh,"+9}iH:աӝ-Ez[tpiErElw@ˁ\Nbo\2K.E| KۭDQT l Pڻf$lw|z| DG-lpS7AVg!L>ho?n+t6{zHsS^6~fbf?gx{>O:&\FW:bX_%…F%aZIIiJϝBWQ[ղSk")vmQ8_מ86u8.wDovD>.]LB΁HYfXIwJ]88{I@zڴ榼Jtݺ, uZʀ4"\dQvYBT[őGcǑhxڟpn;z] odaB/1)#Ag+D{z| !tyw7 qީz:{}T9MNl6芚5Uirݏݱ wW%ae9W5| XZPx>.«Wjnʫ\Ǧ펰KVDf <^ll4"WZȽjAk %j"N[roƏ݁9!vv vG`Ph!~']p HWn9rJPcw {J?t|74OvdA=,p{*R. 'z(Jʤjniu݁L =HYx =+Mt>ۅJGrݏ?(ߗ@K4G>yFlG="$F=`]Yz_lJg?ihdU&/ʜ4lwBٺs%fq B. ݯ6 ӁD]05v t% Laaın~=O"cL$%K5 @ Z )?TX臦;hp#J>GMaMToy]Vs\{]^\o \PqiGK3E&?q[P {Zv #_QsSNg9;FT3aTK|_krګ74vTjniuqN?*NEG%)#4DITo:pWEc߻%l7>ˮhbX񲴫=*HJ:^=a+rk9'zֈ[Gcrc:wGVFJפ;LeK }N%v13B^@ S*Of;-=tEM%oan)4v P y~R3Ϗs*>3&Io>Ct">-287 uea#InVQK&F}BWvq$]@>iI횛֏DĿ`+,t7Vȑ)]R޵9(ĝ^>޸禼ݩdxiAd^0Z] ]QĩL.i.*M9hqЩ8[ζ-Я%!X xn 9}[F %]vTAASgL΢ǤqVB処;"/:&]$Gu/GZsS^{bn}77QJhӑVٷ6J^%u| +#'Z:ּqlx6QrrPw7-7NsSN<:] ?WS2 GGqլgqo]Qp~xfBcG@M,Y_l<ϙ2ڙ+ =tEur&j˙Ʈ=)w]v`jj9lvP]ȫ+>+j-j6WqܔW\f;]jGV8AW1'FV8OIY3n}='~]ݽ56(Ӯ}Umk|rW@LxUrW+Dk8ꒊoZKww榜vQ7,P8W>^OH閑 yGFuI#UrPE;pnɋ*L7֎'\{J+kOieuwbe 莿&{;]C2lw4tEIGГ￵}6EgʏM30Q.nc 䴋 K \b,AgPܵB%l *2avRvqSf疼+hDŝF.dqf-y ;gtI,uE YK2N.dM99,w2.Z  ("PErElcGxtHyX=qr BRV!򄮨)YgU&U͔Ra e;W%  (tjgc5]>!]v+{T tJJ\IuQ^tIE[wZR2NcG[MwM7>%&hdIJ O+yV%T:˖򩄷}k5{~ƱA.7b~NgKƦZ-984Ib${T 0`7Anܔ.~g1\Z*yrk4}l/l^ 颳Ƞ)jgHxJBSS6+>6ic3/6ù>6)Btse¶8x|;3nvf!^a^ǖo5v +>ù%]حw(}rS[WBVu\zqMqstR=+r.~NӸ+C gǶEsOOOϷ$]RѺ]?*uΥugFqаPM:S.ZWȤ((0VwBWԈL rC#]rݏ ]KᆀSY4v'yo'3@]Թ5?)ϮKM;aXs8 ֦h*떟P!UCJ^ȧsrbI9YsSz_49jmM9ʷlPOSKcܽq]yclPfjpeGJl#@$RGȽtIޑGyMA.f#GQ:jyUnz"2$o:1{fk}.vdpC>|`> [g@Q]o A٘OщG|l`;tQuj̒n;>n8? o9酄ZW/ӽ~*걽˛nG -pXy:47Sದ펽Ѫ%˜. (vWrp]RͳfũnA6.kniu) #pUa%\ vȫzˣPA⠎mk3BNN=MAgZ=ĝ!hFnE.nH.bj{V䴋>䠖OdЧsr€4]|l|Y#]<䴋)QA <Ȳz[l ( 2qa1 47SHĝilYoYxp\n7Q* .v8vסՏ):ʛV߈.r ^݈ cl5^ Hn#9 ֥6V+[mI  M_sniuq_8g~fqoRZPw[VWj_EuEęK4yVɗWvĨ`76069 CPqMR 8.b=0[)9w~ ;_mvW?x؈㼏?nb@ܱMhQ$#ND疼wtD9JbzV<Xnoy?"Kj?iaz"HD pIJ@4WhNcFūц_;ep:/jEpcW-E2%.iޥcB.O9p<4^D`䯡44;璒˥ -}ܔ.fS.H6P'Fp]OPថ_oxJ))%tؑb)wKK;zl8@&PB;Zpӓw I %+Me ccFZs`";#Q.H%:fHсgؠ6diu݁2ڦ`]h6K}{zPfs6Ik:jniuL'vc v Xm _ȏv~\i{oCc( &lwQ/i8&Qx!zAEPq䜺,aةāsK^2t:tMo@E@[Nq];ƏQ7 u]rT~ȹ%z;}.p0E=*;d5s tVe:|w݃6DMO\ U$rZ JZCK(Ajm)뺤I@ג}lR OrElw\M.w9XE"K\.{| tW&' Q(}r+N_{eN4&!c2pm+*]8;u α%sS.;!?еM%"Jy] !G$ݥ PݼLsS3AY OtQ5WxbMz)_aST ?"禜vQ7dy6rwpF(wm/hg8&]dB&Qni{e:/sm~kwאc֚.JsK> *]R'œV& `lPӮ 'M7;'K ˌ?ln-(VԊ@ZO=[1;MKoFhNcؚ0uu.崇ŴlMV;jnifa5 'ACk@j4~I|ItIE88`I; '47崋n"\v|ֽnRX-uIT"r*]D4vӰ榜vQ7EH5/YE.Q2¹)]vGFcV/H5'AR$'{| HtQT@苃/UexT]sSNNI,gDMfܺU\|lR:%pڒn;|J~@R!FH (UIyݰJ;QTI@'% N )rY ݏ)eSm3Z]m8Ml׷/xKx+9 [O呼0'7o/XG+MUA(,hC'=Wܐ.~"C;9~("xbUHJ>PPWԉx,9[}O16(v6vAcwov1Fu͎@96!J ,Q%qInyt+Ëڏ!蜿E:x Vɵhq>VUY]mUZ|lR zWrlwDv7e3<: 7-d^FR298͡yaUJ._D`E#TsS>|?vyxS5yN(ԐwxKW HcW%hnet?vG+n<J{GYDa>u%ڹ."]~%9w`N+=}+^ONJtnA$WLcvQ7J_+gt]DD2۞tc*(a_c\vAcwYıG bZm@Icuh'#(Dk$WUtAql +jI͍16)}ȷBcފSDԐn^xDyw|`/1:>( YH zf#>7XwNzSFw/|X>n.;sԨszCpblv~C TgCoԌdzc'ݭ&&'j=6n$tQA^C>~Q^|\d^$ ~{J0"*9>2>̹%^hqX.ToApݦ9oȯy>_tIͭ|ɏfP`f ѻ(JJّ^CWԈ0r7DNc7inet?ve֣yMn$s q.ÓNcϻܔilUD.п̩jq{<+ ed+*2Q_o誁 V0ˏ泦gh 2·+ yא_5y=MqŏW;*jnʧG3 =GZϲw55WgYrAtr9(Jn.KgQ\sND{oz ;PƱG@ fd=fxMFl~2xC=9`%5=@TXK}{}(au'h.@a@pfҷBW EUfk.J!?S.n/MuGneu.b$i)μ[wP)cWo2N진3LԱԛ"< o(?!Gt{s׉'j]-4v4ܔT;?c 1SgBw3X˟1?c&g̪]ZDX )ŕu[qt@ n5IUh{#[~N?fdNM_􇛬?| t`yLEfƞz+n;mg1 qwKO0>mN4 }jPqc'Ču䴋_lGKw:]CWMɻFÎ*{]LsS^;raZ*Zz#_ɷ"LTF}$]رinʇ;9t?ÈюSǙB713̰H z<4TS c|s!]؝j[A8{uP]"[jehJ^Uq|`šrElwTd9WEZp( .ִ2sgP'`zޮk$>6)u;AtzySC0. };bXJ]j88q]`nhh-)]vj(.$q[UEkW/1.H]%m- 87 ħ%< {Qzgvu_"Jkr.](0OU,+ ԛS!j32gP5疮I}lRkVQN0o[oĺsd&;;+tc7b ˛[| gcꕧ1j;5'ML76xl?$9fUv+o󛝙?} H7EʌA[? WxXZGÞSQlcܒ;@2)_t0_.U҃:f-XMfն4lFݏqSs籍=Xpb-56tIEƼ80j1|F+s5aNc{y#OlD[jk)#WT<@dM.=vS7QԆ&%#Dۡ;ՉҐ8|"n# |jw4nWcњ+QnOc7Gܐ.~? GdzeF1őwWM[}ӎyI"*ҝ5ݟ[.fS%Vϔ[q#l7.D×3YCʉcE0>A >6)#e׌h ,mc H һ,hj-[vckoMrY ݏݩqBRXo8f7m88jəJ]RA[ "آn2 ѓn[KT4" UETҩyE;tEh1NAkiu?v}HyTD< zsM۩uA+K  zvQɣiuݑW'sp:;ftWn]B|Ѿ/I;q5wZn;j/`%|YcubYCq&´l3_aPmHc)jj8[^-/< B.0ƭecl)/5[i3ȹ3H;bq=f,Ȋ< ɺDyw|ˣ0NP3􅭍BUc+_]ۂ_h!Q}X_QWxjIw(veKWmy06쫖nHyF]SэÎa޻i8n.k(,{(݃nAb J+:!vG8v5޸/rKL{]ec{tty}lRW2߰ۃllaCz{/,T./ kҽjtӌ)];86V䴔_T>8iQo仨CS2)2r6h+ѽ>{>ΰ'3rμ8Wz q¯Հ=ꒊEC[9vsK^xJ0"6)ɧ|i7jW88R &oO5Z4ru`}W|եkϧMJށzBNK16V87X]1oki9ԔL5շlq?KRR虡 ƞ#&o:ѻJwv">Xse;5r}<%{ {Ztݑ;aw: d%<: d{展^9&>6)5Rj& L_ E/%M/HG(3&S#&]vBTXHެձ)熜Kjz,I&r]9p=O&lwZ䍳ubCp\W5>C!wփJ*]S5v,sM9n; ?v1DW87g7%qv֥b\inʻV!;gz_GS լڭطO|2O}63˼4Nc:Zw:q@NB~t Zr$ʗa~钊NB{u)HcG'! b׆lac].&bi(71 mJ]\>{ռ DTJUx榼8Fcw\M #oW; '.Iw(ַ(|sEfvw[岥2ѥn Q!\'h,R|rݏ-ToJ+2\[oc(eQQCWԉ~:.i| x+koT`ZSQFPuaxN~V%^|sK4uD?clD=xy֬:-ur9Sĉz#^|&~!_<ݑwqM7TT?76[򡼽z_؋u\=(ؠky}Rforz״;ߑtI~ćy8 -9n;/[Tof/xyrr7[[ϙoyF:ĕk*Gv'A~ױʧ뫬8irq_7#.M"# PsC.;|}W^83v:YaL]RKιGKOrnat3lLe~ᵫ}١L;ƻ-l5"sh7̕]+ݢ7V7o10lwjAi}H[7kȯVvQCN݁X ]>ﳃy~oGYwT7 SQT SF4._/n-t?v'x̂,~no؈դ{. Q .557S,ncwܑ _\QZ 9 :URCw ciniuݱ&Wf-+o!flosGtS$JԒ|lRݚa)t?v7L)61¢zzֽغtsK4 ?LFn;aB^!_,]ҡFwmE 2.U {"T+qB5;jx57S( U5|Js[1wjG|^f` U²u=릪UE+fSϤ eg:ߒeT9^ߑW0jz{jC^Wvbdq:3dЫZ(=2A]R#ra;q,O^vQ7۝ط,~sV]ETBԎyt5}SyKcȘ/Y׭8t?v+ȧ1G^i}^TX5~gEιƎtMVf#׊J%B8j+Rp)NJǎĚ*@vǙ Y#w0c-ȻmWFOY#.6=.IsSN#w3~2'2o͵ժOdr nt O_u.q8v¹ܔwc{Cʺkۑu']ymgG&ŒO{aV_ܝƻ_?$ `ĉ7}S}{u'Q-K6I_GM}wvy,j?ӭ~rۙIՖ,KܻPƼ e4wtI<E$[H/XNz$*09Qs;{s݃.D&vI7x'Pq"Wg|D| vDkΦDMg𤱧Ú-fc1bX/V$mhqej~g NgEV!J;CN_߆ }\QTQM!7o%u"犜 _5t86(f 9n;iUZqҧם_U QzT~T$ݭHO3tc§Ξ&wl]Jva,뫊7nQLhBxuAFNc~]:v{ȫb=ScoOսttRƗ(ES 9+YK*29׫':'28K׽rJdfʪǎ +"6 Rg34v`jniu݁\0e=c%J4Ѧܤ'>Mi'Rc_2M9؎ۃ\1qX+PPޑ<ֻ jN%U<&N3tmoIoԐWJn;|6ݑřFՠ4dFEkXrf芊(u57崫+'6#A~6&Uyu-tEu#tq5zrnit?vǚ<1t|MosE~]_gjΚ-^@]dd&%WrX/tԿ !&OD <#yvȷX;|lcb ˁS 4JvGm5keOcx@Ꮁ,ULL%<]jtyFsS=w;/zme-e Oqw Q~! )'89Y=Hؠ[G"i)u_?F/x}mQ B:#<}0oi7uRt]j7.? GtCKNB 9Z GBw;%A5먓ɯjrdQqg.K:aoN?~Ԯ.vݱ#%{{g2;urݏݱ&/7dO3z fHUߐ3r^ЍU!#o#KcԐRfßd%Nގtue_QSR]Q;x"2ƞKsSH;/Š*mf_%ߗBAE72q2,4vt#[wvQ7ۭ] WsƻjN`uξhjO3Bƞqr7n'G}[~lE5(ju.⣁ ⧐hWEZ *?୫%"U^pnʷ2R'Ġ]\aTn춼'LJa 7#cڭt &%oZ+.eçDs1!f 2(8פ;H+CЈ#.fL\)ǧj 6'jDjΐ_\{_"ֹcnw_}'lȇa!ߥyӫ\֍_$]R#rZT0rElwgsjNtM~^D+^֧agxJc>%f\y~G6)>8Si__ULy<όyDnb_رkL 3pZԾ/OĀa##ꠚ)I Q8h#:W1OvQ7>w^_9Տp·aG#cf;p&?cӌ}Y(u'kw.f\_{@ӰCyOփZWX32v΄"2N|"W#Wq98w9's'ɹPT oT2}PblP~!]vU~j ,܁;ߑC~5<&N wd<)]v'|~8ԏ(֢]<"Œֱ5{>rpC.nGs.f㎼xߙ~GfGٷg39`K]g&J3V?̰ X 3љKP*PV6h]}p.q:P0~W;47 u3Y=bt-+,T9ʯVUj}颐Dc7ܔO6lw/u(9KtyGuIEgp ]Iwϴuݑ?v}9Y(+jB:]SH_r2cl$]JZ5tfDsSNN[u dUc7 ݜig3 .5^sSN3z_׽.d3{Ȟ{r.}^j9{]iֽЅ׽4v/^ ;bki"-J1B~FuxFyFMJAF8#4X8-'EQTNX5tE>8ؗ.5vknet?vGϾ?f7H q?nEž/nb_رg?vGLߍb]ᕿI]ɣ;n*C _4vz 7n;Xث8Q>Վ[n*11{қƮ{ܔ.f#ƧWnx_S;ؓIqI;üPsy/9 *aA&t3> v݊%M。ؖu)Zk#sD)C_UaE8%'tYoW^UWGI71q"w#&NoԳ}*B~|lR 2A1aqT}䖭<30NȽ3'ok*{ yMUI$lwOܢwMܤ} DF+-[}:#9x%疜U>4- 'Un.ϪB@,~mAEq~榜vQ7۝0v̙ü[vaz|t*F| 븅=X<.fS+Q,q'a߀ˌjkT3*PO"¡׾inʽr= 1o)r&U|ʹtR78q *-}`E>Ǝ|KM9n[ k 'sДmz7Q{G &-t:bӭU ^՞EM E4lwˆ`VZʫXIK78@Œ.P`;iu ny_·/`}մc}EoN5>M|K߲a| tZۺID{J5QgY!U3 't=w;pvp' Na+JO:._EFq*~rkۨOrb}۫TZD5S&h鍜JVa uqzl[Xj\ս9탭QKwc|E}m+J!$2[Icg)]5DvW8hTZhѺ:sSgwNT:ƈ=pG쫏M njE5lwLjF +z]gcM_.\Y*QFf-SYʕ-ܧ;|vǘE4+*];,t҅n(?~A]RӑI[^#)]vGj's ܼV0+ J#y_IZts"Ej.C!]حAew$qP;-V..1!oz{f z]8Ugcwoȓ.~<ƽ76;p+N w/=K1G%KB\ bK[rElw~ӑwѸRFōZd4v $ܮA.f܊!h[1 6^K"-!%H ڊapҳFm:iNHi f ;Y1nCmi`>(E~kcn-t-tEMgh1q;rElw<#9ֽ'\kG:xնgm.Ts/=#f=2ȹ@;\.y<ҝ7-27t3McOwhnʫfL7[ hGi: ܞ˫%%r 8pkAW);cne)t?vJKѢ[6Y_M>UdS rש"wCc§L^;\ wU25|$},Iwh$pdeI;yd|p ]/k{{"\ۢzi+ `kͨr\vAcw(;j['NR n ;Q~!?j`JP"N5U0MXf6@z_o9R0'3Me\5R8oSa{ې]EsC.;:BwWߍoAljoQMߐ_A2{hQcٷ]vGXm#uX՛P6f{.:ʽq˜AMJpt2BcGK M9n; z7q,Qơ&.+!(.E8XkEF;C!L ܁J Gr뮴Ʈܔ.f+p^VĨ6d`<x*`ͅ'QqI]5ɗVavUl1}Y={4;/?%۪glr4&$xyǥ]IO/ @2Q31TӰ߇a/ iaY#qtyczQAG_zJE0 ~JQI O1Q5'zV Yak^Vj'D]<ӥ1]UqÜZҳF愔@/:#fn=5i< +jz8J|~MR$tZ ~mED6Fķv<#wSTD|Qb./Ba5l7ߊ.8obw9=Cw{뙺Z\˥[GkQk4jՊ9!B9^.^nNx71! @z+ 쯭z+fڑL8ki.!&-LRU|YB'q~-c(K ETGȎ;O$gxɉDH]DcAZ1'+&vkɇMwM7^oW|lRZ {wI^<32x8$/7pJL%E0;L^=n;/Z/g ۬[.{ʏKf)ռzƭn_ճng N$s:d%Y/yz(=H8UIJƦAkl J'"K?n.zā+NTmW*6FU/[=RE*>]'n[KC5D4L(\@E%)\kĽS;>}q5t^Ac?iniu ԯXI͊{w&8RTt:5h I).au;Bn뒪 -ڮСƖ¦]vGIp 'sYN ɬ*9.0++*6Sqm@pU^?b-!?jt?vkbԸO0;b/lV>7cBAhHCfcB7viuC0lh4% 8UsX~uRÊ,WBq.82&OOBDJޱUK.uBW&ݦ f{^; Ϛ%|inȻcT>ݏݩER8]оEWRDay!^[u62] ]-j8wNoOn-]M.?uڕRy t2btIEz8CiQ4vhniP:Nc KErް|u{qqB>tX!SK׻H0>Mw5lw ςqwGmwx5xA3䭪 3T$Ja4vEsS}uIH[8sTN})b#gcC!{)]>mxd]﹌*+ox'ӓmzPq8«㐣)tݑsUiUL)w8=5uܫnfռU&%Pnwm^;xV 6jD{\.=s>;1 AzѨќe[!82Ar9_06 T銊 gq,]d0kp.ޚݰ 㖢6o)m:ZAi tPER=K;:Vauݞ1<0?aNzK'ELq^CuMl/tmƺW F0D7ŏQ\LT5%j  tNe:Ҧnne:V;hnʻ6; TG|d=PQTOm.i쀟ܔ.~ @T붧`/xpG-+L~nWyw;J5(-5lw<7A2E5|(Y]KPVT;Ⱥ.ih@)]vG!6l)َo8s@>PbMzy7*A KВ[>Ipuh$ל9័R]]T$AtjHܔ.f#F4b>8{UPOLH9jn6KF~p.&[kvG?U{QsIp P@tRcg(EaTvQ7^ _+iuX]z uPV6Z:No%$ڬI7fR[ |&߂$3@CMcBj"褕tE^bߴs`GC~pQs/)ANcw|tq>&O $`сNG=.XTʙ1B1;*g47KE;ޗgh8;a558Y7tj&8GCc7s[ubEpniuk^aq-)&CEwBF:gU9B\R%]v$n }1{/[؎$ݭ[od n|=-&ﺩHc/g~M-ctGM讚ҝ5&ߤX6K)U7I&q;@x"ǚۋ)-{!Yt_SlMKϴKϼAhQBk]c7䴋n/ LDD/%ǴZ0IR|>M 4PHv!ujk5v(_F4]Rq SɚƎ-5lw$B_t~>1?o]򥻼.5wR8Z⠏M P79n;*/;lïL3Մس`rbQWTāoK{io67 O5r0̩/%+Sv 6`맓tG|fGOon+] sɧnliq gkZԧ &=Sv6BTl9dIA&7-zwQB9ĂNB~QI]RO4P]cWjniWS)Mc+s`T8ؓVU5hmJ]B&:31|l?7?I/*ܔ%n;Y;Qk:=_(%|[oʵűu.x" N{I֦e)t?v3z~$^}1P[sҷ%0)]6lPuCb+m]3F7Ӝɩ5Aݡ]tJ*I7†8a,y {@%8A==)]vk:}Э.f6:JLn;J}1+·F~zdTK[\7AwFeǾR/90xp -Jd@8q `@"dՄ˨%]RqMg*]k74M"bWוה_I Y \X9BgܤK*z!S[:p Jb]!]v'Tu$b*tHs 9YS-/LT>KgtQ禜vQ7ۭg 2د$+CxQMIzׁ=j=č Xx"/vQcw%wcD`9Č>Q嬜]0FKT9l]]-֏sS^xlbJ\Cm0%!DaKWWn>C9tD]MT M3vџ:8跇:7Ǩot Bé{p]@QZ]{8Nt&6lݷq;;7`U%XE ;7tWŭ+J.!G@On =ATg]i,m1yZT)t-rݏݩkNeܱRtDRDiMSh;SwT}8SؠDZi)u݁vϻFiHE8HL"1a'+HΚ\BtڔЅ_UcwG]}kvS8?ꈝ$urK.SWԎS%9 'Cꢩ^q829յ_yHyC~p}eU%GtI5tqrEl7PhX%cjZ}_uF`tÐW 朔J<9zK,q/GOx0 SggwJ>P9:۬_[O 6E?_}Oӥ%=_1ݩWI\˶FpoTX a x ?ضEm[H{ޠN`ےO[,ؤ$2K[/TwۡaR0%{I ^}T|=ueԨ$#vUUM'z=ҵ&eΐW  :UUّκ( C{gl: =ܔ.f#;uEh#uER%ʷBV>9l$]t=IsS1?vGMHxVtK2K)Jn\Wm9 '|[rEݏz_,~E=/ItaKtP?{Icvet?vTOdTG#E{mjRmjO6%XcG"f"צZ"K;>XoK" {lJC&_݆L~E.LSwcLܔӮ)VY=;)Spf2*S,IQ)v|.Sj8(E1ؠDrElwxRV;*…]\#nQzK5tE9sPZ?gIc jnʷ*Yߟ U4߳4*lIQSm`EulHW7]!LcryŇ׃ {Kzv5nJ=\GhDf{xJ~<ݏݑVH?f3k}oLý>>wn=W]F4\3ٺ'lVtM/Y!ޔeX-p7b3N!ydTG4%vQ7۝@߱Bb.<3rpdmtIc[sq;fcoXawXeXp-,]ހB%I\+t-T{8:\vAcwx ʪg8CB 5'VUɛJd *At)@sC.;J&N:zC8-\%)W7@ ?8@’.5v0M9n;D;&:' DiY5Kgu‡&gIװ}lR 3̰(Ya4)rr}x J 60Dj*uIU֭'.fSYmq!|ҥq^|l=c * yFv`.=Dz}~".gCޔtEE8[3,hi(4ܐ.~¾}juVWEREGOv.鋃t+9v5wUL!)6aAnhG @u(|w[I&tI os#NKB9$| ?v  h` <,Nx/Q9=j16)]E'3rgj~+f^)v>5y3ԤN%NGPEUOcܝ榼Z?v%UAg!P]gij^!;/uV[k. KsSYZQB|牎>h?_Pzjv #}ǖf‹TfV5MvziuVA^4{V',4K{ ] i%rElwd[ë"q*VA Q%H.ETjslsKN+,>=F¬%HWS>Ɇk'..28|co.fw'sPQ7Cv칟jB.'ueNx[8T2be|[:}vSOވ ;1>}:b|SQIaIcLk2?}`\|M!ߞԃ^;䴋nc[7&ͫxc3=g@]6ةAMagOٍUNmQJ_ɏY^0[ݭ+ ϥLի̴ztqW5r{ʱ^Ɂ+ݮ, A Hؠt3M(./g#T#6A^U߷ȩjh+DENS}~(ؤ_5\;ix*E ZVD/Ս]~I('C` _:857kNcy+*:މ]f 1[lDMDgn%U<[î]};16(|sKun?vGpEg!xCV5D[s'v:T2{s'#sDq♂9o;n;Y9wqǴ* [Q+[ʫMб.n|«|ݑ1M {39QTÃq`BIgC}<@W0-9;ΖnNv.Ȥ`j')j's4?5Ūsܰn/Lq})*~̊ԳD|o!':uI?-8u_G f iu租^P엺@xGu[.@7ݘAy_l[)޼;.][LMc}oI(ʛOx$TsGf[^1LmTDԺ/S tmƟXP_N`M &Snۡ&jeCXAjly ){B۷'=֨S i Ycz[_8;8ދױ]kAE7uq]薮\vAcwh#$UQB~k( BÉrZJlw/W8%L^\&:"k}[#)]vG۬{~2:uډP(gBuEr>[nc/:ܔ.~ۅa wٵpހ"jQ^BފxߴDq8AB>6)9iXerZJlws(o(ҊGQr|GIqp.GI]uGWAA7mr'9*}jkOb =>r5t, ;tj5EϠ^OtR7UJqkVEGS+!g :r*.h;n%U<@Au8qvI7]*p)3bnʥ;ܔS\;o?xdI١;\*r7%tݩ;BgAZGEJ(B-#(##ݣ'>}E I+FKE!&ڦ3VfTqprݛ7{'V6P ;Z&Pͥˆ]@нɆ7fk`,/uQ<4Zms@5uIEpFdӽKcGpFsS^n;:;m1l"eygt x"嫇tԨ#h!]حeʥ4p]cwn%[%\fw]R)%T^0`ns-/o"sn,{g~F0h|m7tYcGi6.fR8vwQ. w k$&ꒊq?wh LN6w4<:#(]/*^-5;q-]d|-=b&]ح絕'sC'nsC|)5tIEQ8hM݃6>Q˹%0lw@V_C؅}{ ,J~2Z1ҭ+Nx4ˮ+gj~&#9Hh_%Hz.x5vinet?vGj)p u|k7$wC;ֻv.w;v#Myu;@9+v6y5nQQ؋3`KWɣɇFP-j";)Rh.fo$T_qctE}}v0CWT_Q:%*}aPaJ;`zpcM@+4LtǠopd%.7EKwn`j$0-5Bi"Fxz#T+9HK cד"{6`_1z#=R~쎴׍yCbO1ޓQWP:vwڢK`wOvva}},>UIRԫJhIRS/Q}16(}O,~3R̾حht"vNc6UF')X K*aIyKcGI719vnKHL_7""Q.P٠}ӽJי_et-cGzhOҘn;mFf>jmka[F&'uIUÈNEpFRf.f iNY{{ ~+}GmWzפ0vu//z-n x*rc;!gzuNӏ]MJ0K5wQ+tg 1q௛9glNELX'u҅/OcOsSN82lմEmzAZ9{ߐt=KDmINo>6)/)\7b/qP]E06`LXķ愅|̛:+jJUT2iurݏ P+) w(`4S!.=[olP1n.])GT1D2B1V⺤"Kmҵ&.v$ vV?Z:4FNW`47D@k{DMcWj6v5flI-Fb\,†DiN%PG-/2Dϯ榜vQ7ۭ{Bl!$<^.OWTK 7rf(!wKKcw#cH8QϮlȞة1d!_ޡxpu)bZO\c{`rElV3GzLMSآOx.U!^BĖ; sR7۝ҒN$iA)uЮ0t *.㽖CDH.16(/[rZ ݏQV D)_]C`zey1ݵJ[c_lQYkƾ83䴋noc #Q-R-iDZ+f psbE\buzil}aG.b+WԇMNtsyox587 #%qͨ^:^ .7Kc Ǯ_%:ql 0%<4cK"5#fʲVq`%Rd;m`_pkJ;-y#b{iu>Vr:K=\7ri[= (;iniuqbı$!EB AIwBa Rcn榼?v~_tòk/Бx[>S*@) +Uj~E*Ʈq2hi~L>{eB&s >P,ҳHlcT e2)o*s,ljRk[)*VD9s6>|VDG9 z ]"h[xL}#@A|;1@A|9(f!RJ r<@t#@a%ޟŬ9@n;].+t1x|mQ~!^!Jh]3r -u{ͱA<cw/ +'# ZU.;IVOr<'4vKxDɁH-uRjQFNuT?JFP).f[p~gljOv2~uEn~ܔn[IBqpLZ8|8Bojw|~G,PktM:5zݏݱTI/)}/R_amO\Nl;:݊4 5]u%] o !G]kvͥ=-OJ-68C`d"'‘v6o[q:)՗sSN; 1Sώ veCEVYx[IwxpN5tP8RsS^RwS 8< 6~UD1o d.@tؑ)]v1V3 9,y'f]5KV_෸|TS5dU"h]57[+תuQk8v$&`v&ܐۡuI5_At)]v'yK\J~ZDy:E]Rٴwx5vrFMc1\nm?tYʤ=Du=we:qG$g: plP͐Ӯ즱7q_Cd/!?x*Kj mKkͤN8i𘜋kcP'#:o=ؠWCNK:=<ۋov9M}'β|&7.,b_蔪hnʋצĄ"r: VBsEaݜH|ZtEX5v.ɜrEl7UxUFF5 _[vYoeYl OFa)+QAxH{Rl+ͷWY'D-{HD(ߣؠX'F}7|ʦF-z4'zVt$u_V+jKo];JR'³0rF.ۚ>FkTap_qc6Q!e%UTS*cZܔ.~쎪BnKjf.^ahm.A]}lmk]ۡ;͡;<47 ̫bXfvD$4|5v~ODUVIbm9*hтː5obXeϦP.Ka헦*KD60Ů+ֵbNJa mҫ#hG֕$Dzʭ%D߬瘽? H ("PUf44*fsVe4_6x>iW{0w>ڕKϜ$!5 v0wIŬ1l['K}K)"i*VP: ŰZy[|8*0Te[ҙh{j"%ζk&;PU 9 D;qg$]i;MySt_ "!'s\]#hCJNB*~)'K*] rlP%]vGBXA]Le(q{!l6]Q-Pn)Uinit?vGv؟رZ 7̸BSʍɣo94L0Zx}GѰD4Y';@d˓H %r6Pw! ѰsKVF"h88ȭ(7휍hoךPHL՘tAv!!| ܔR~"L^ Tٜ\l%:Iw [cܺPvMe4 ʪA1w{~/ⵊͳ1^LDTŸ(/CzӨE愔@/CxX-vQz%Ksy/]݃ 8 J 2dxF;b<' ٕGU_FJל.(#a"u[s[57崋Ha;L5D-z ٹ8@%u7.]9 NEy֡ҹ 7ۏAi uAal} xysؠi-9-n;.]E*/33'9Ej>G'܁%=ũ(QU;zkniu >mH^,$7JQ֡ALi EN%rEl3X}˒=G g<SN,NUqn\| K>`=>>+lR}^`+fRrx+8(eoh*i " OaNJ(;t0-9v榜vu 4ۙՈDybM; |W]Hc=[-Hİ8,̩QҢC˶ ^ >vV^lo m.bX̻Q愔@/5}M"vK>,aU?,&Aj# ,=CCըUH7R7e[Cgowc=3N%`Rx<&/U.fN r,mȅdÉj Ǣ|Ih|K鑮j1v}."Xv88L!]e_Y #tNEd5SG|1,,ξ|9!kζ@CשP pt}pq#u\4ҫﴧQRZlkl̤/Q$\8%0KGĂ ݡZ։(] BipLrEl7kk];bXm- kҼα*4IQAOw@gt4ќƐ5U?CZA|16QMԽtDBJRt&y7ح*: 9lufpo2wCO#Kjy0q(]8ja57崋n.Ssv߇&Q~Un_GV)]kܔOn{1Ԭ3ՎV +az1 @J>`aNK@Qj *b R`N4hNc j}@eU(M%ofB\`t\כd{-u:sM^9KnDYZİLzPk}"6urԡJsB`FO/^"%̟$rgG›G7`;-F|zNNduv:.y!M4-|.+RYvQ7ۭ||(E?>qE*C8֤UOhq+-@ iUu{V*.-쪭%ec]DzﻦLQ ©{^ƒ;tA57Mحe5_ g͇t7)̷u5u#] x]ۢ}lR=ښn;h3\=?3U\%tEh\|tUI)dnȗHvG#j,2Q{+Hx=56kU9Ԉ8Z9>7[XvG'+~.Bjd5M]k:Mc.׵<~!]ح5SEcɔduqiހ\ oKWTq690-ؠt(3䰋&Mj8U%l -'rK `̐oQwviuPn d U vQ75*uU^nT5M@XN(ʽ)+&OCa,:PbÑXٓn;RKRTO7NUU; Gm<5%p]RaE8Rw#c§17崋!O o"܊z%6 EҽNKW&{c&&_ʫ0lw u&ܬVg\jhxN(j\S[6t486(|sKNK#Ӵq)D\ 2z6(Ef 4AtMcG8}I7y@l4Yqm˿V4_+gZVT>3%݁6Grxhniu݁T3-SqfiUƎ%slhҜ8[Fi.U=TۼVEl7HBx4t# [%}#T8ѓQW)]v9UJrǼίp yBD  P>M)Wa` tEuzI7⾋ rw𞢴L~ 8 421U%M9n;upW}Jy-TFߧ紒.ԍB#u=8T[ropmnb}jt2i̐yu"-VYFc cb9Ǯ7A*j1jZsw!߀N.Zgʟ|[4sCN5GXtvsLDX0]n~!%'kt-cGƉ榜vQ7wsn۪-H`5q|".y$]R)j)^gZ])o2M(J4x'q܁+NK-HyU&systc9n;|j4{1K:U>,Y ԿxG.]âIK(' I7y} )9a.p*vYM=N:n'@𛮡 q=ݟ-t?vG9\/0_;c^8)Javxd~ْ%][@pnʏonc9 `*} x^TonY/QCb `p쑱]l!lt)/S|S,"JK!_`|禼-jIsꢯ=*Ƥa#$cI,P#f!]K83-?LpV©j{^wF/ʏ߹.[ |SNc@ܔ.f#窠]>%r*Rn.Gwga\n}{K cP!4ؠm54FףfK$ꊊ& eAHYѤQsC.[Qс8nGqOF/-tE};jKUI/G%_ݑX\*98 K]W_A5pmܯ;SEB;tq|EsSNJՊsGɊy .awK]' v]9vPl0LcGMyl?vGޅݩ獋s7~Q)%?xK**n1.] sKN햟"ЁsPV6H; 29sKᤜ9H A'榜vQ7(39È|xf^mgL MCE3ŎVD*;䴋 mLYb-q >V[!މOi+kr:χ8O%SL]RRBm9vWM[j3-a؋it} f%pqu%p*.^qpZ>t榜vQ7۝`\~Q֞uR,ok%]Q%ck-3F];Uؤff#JC=c <KƦvULƧUXB<ܔDil]Pq>rG[.<:t]YU]QǟqPpDݳY:E.5䴋s߾}k_?T`W"*W }>HV%t%;a+JY)7|(/R&P$5d;57崋T߶ˑ_˳E)"޲ l/3c3l5î8HcoI߷ā~uTAvSPt8p')inʛ|??=5%֘'b|5\{G 3>)EدO[d]"*)]vl's e}靴_g/{#(^uJ{xo(M nck=?O9w;ѱ3oMRd!gT9!5˶ҵR/]JKDsI~ 19 ?KFr9V(cfVt줛qrI~qq ,9RЋ@+ʱӐH]tsS{~NW|R3]B@7D܃(sD?K4Wru^غok1Gu8߂.Jߝ=c_J]R;n$䠆U.mj 3vhӚti)a*W ҪQ kEs53V%w1qp]c︋qniu tg $n]YVD`֙49]l]t#k;z[C N)t,FxjVArD3S!rgԊe6ܛv{Dhoc#eHr(΃WxT#Y +*T\"MWcG榜vQ7+Ź@+G{t[UVQ`@yCtEOfx5LH{y2\vAcw아8V}Y*Mvh;pPY(X-h>7p~쎳eG^QC]Dg!ϖ (tv|(e؄c{޽a)uQT :J]+ J] ?U]Rl]L5v-.fE!.ȩ9U4?H$Ĥ7B4@R uF>4E38}"usK^ļ?vGI`BgK=QgKj.j槷]vTqq';L3=DɺC~P\62|l3Cx{DTQauݑzc&w,~u0~ch뢯ƎrG7lw,N1[/cc0fT`*.}X%tEPqܔؤdc#t?v;2?OfzE"ՏWizazQI$,a)uGVQfУ`#oCG) >TOD _8(JTiCe"5t?vGz5ӕ #K`w'R0}苷ЛtҬJ|ֳ2100&f֙Q J fYp%~.(G%V;47崋1ĎqeŌ[XL$[*Ekj[*O&8,.]q X4Yt-DJWTՉ3eB5wWQC^kR[[97כtIO __榼{X6n:;=W+\21]X6j8|Uc\;t?v¾O*Ag֤ EkUՅ!^nV;47 #^y` ı[{ OicxSVҝތP}t 4榜vQ71>DNe[!+ԌճXz ]S9C^q_X<܉U"|֠F]&EOcȻܔ.o@/Ey7_Dev2UHR#S}r6iH:cwu4>* 'i"$2dE@WP 2SGBsfv9rKc{k|'b 씄Ԕ`q 0&]R~R8Ǝe]v\:n_¾;oܵ6#][{+(9 Y&nCrWkݏ^>_(տgi7 hxfLI]ϟ7 0Mginf$_}̎iKW5˝򷿃h[ޔk[ĝ{ mrv #]˙Iz|Wn[ bf#ӛ4/uj+jůH^EM9n;ֱM@J- [,fi\/PWTx"A`_<(cv Mc{}60&h':=lW;)6^Osc ]vǾOZA5cKߝMoK~(]R#˻g5jvGz^tpmY(y9!o`'Qq.{N\vAcw%_Oexs?p᥺.V %榜vQ7 }!= >PJ!GG t[x87 c߯M~`LFWSl؊vrUSi2Û.?|WElwZO~~r}j,L%Jg!g٪"j;'"[r%lw@[-|+97?q.gS" IĖtI܀񛩡[-誱k4 ܔӮ<+LD:ZrRu53y߶,ۖ._jjc(XU*y5Z[p]7U|TX}zn5Cr57՛?ve)4XZPyg)AUjEiʲ;0T,Myna e(vԢ^ME(ohuֽ.m/G1a^TDRȸUC0*Ds[ ]Q3 4vw\vAcwVSUg+#:!MĜ(g+ 9bx ҝ)3@ 97崋Yؖdβ3aP ag; RoI+v ]/¦ XI7JBeQzMzh#phc糏fnmvlkJ57 #:틳`6G] v@WӾ8V.ʪ4Ӿ榜vQ7۝oOxŧW\UՆ9(MwX&_XۼU^rݏq_/Z!tD&oG5qY)]R=aՏ+JYBNhg< bG1&ݥHOeRx ͛q2.f_&+=qcl.0A&rj%0MݼjFsSA4lw3&UN!f`4*;=c[ ̰ 0t?dxv81c_}Vv#5/35~nj#oElE޸ z^ʉʋ3+pL[;쎨{C57Cf#Yݟ:NDG̈p5oʛIqf+]SgWnˍK!"o[ՈiQ~FlDYDr .',q6]hh57崋nCm(c\ 8+AЁҷY%ݣ}T'q:ih?;-\ƖW\[{2 f+rJ(\B+@Z)tPF|-SF]WkNUo]O0OPwrst4?\芊H.i#|U0PBcwd2:EF$^a^cPV}՛ev7TlX"N {v͹s^)A=\#VO<.(-q0qa;= Jw7䴔n/]GA:h#;V7m%he]j 2'.C4vdhnʻNc;ֱ(46Uq3o`W&ݭjD)8[%{roixt^ӛUc-ibhn!tIMæq]5v4wW؛t̏EGmkMѿ mcܤmS;HF/Jg} AO&禛 ~4Opܕ|جC^[Q^ SU&w*feY#3ԸF\/E.0_#,;l"dk\t0;0CwYŦ.&_|%5b+t|]l;JV84+|Nwuw8ΤKՖW]EsSNod>G~g >_>C7ɣ!3ʬ2^lܐˮ%lvpij"<*nk9:Fw`^%mtřț.6I=WSy5#f%]R j!TSwӝ6^t!qk{AM^u7l0li8h?o/Vc@\fҽ]֧FqCijMn.Ec'c?^6Rf|6u=fE\ɠkMƾL^QdnT^ߊT^ ydy+i7QTڿM9{}St[ilmMnMm em5}V8@m^TW-֨wtGz>B>{z|k)/?DP=59K02jK* kyj>6)|z hR75[;^O7tu]ǧw{;FK*XÃ.0Ǝx榼8cww}`[Wٵymp!_=[J0Kc|榜vAcw…_Cq68BGM$>$]RͿiqI-!=rݏR7Z=0#bo”6N1,Bt+Fj1V[حuE190v 1Dg=U yz"jQNV b5mnet?v)W:cњckI"I6ہ!ybOZ%MkV=,۝[?hCh9ofYirСgMߢi-9-n;}+JzV1Z&ѓt4MT٢S"4dV)8h<^qM""VI龻zQ&]Rx)(աnA'Z J!]vGRd]苧$>IWTT⊃}#~n(7?ݏ_:!KTIցh_-7i{j(_h6J]RQ+G+Ǝ*_MyW vGFjS)47ʹ<;NUK+Am*57MNvǙ-Gא=2)CND.iIz#1l鵬#Gtn jRpr6""ȶP[sGʇYiDm}_aE* Q_-{J[Xcwܔ՘n;Ķ8+.K6O7yQJPn01gT`çD 2eیE7ʭ8v?eMZ&%sY vk!<߇K~pߢwPWȁL]Q3X{a87 Ή [n]QZ 9H T$rŅc:\vAcw~gUXKj֐Wnk jx8H.j4vs\ R(\KJΐNj7Ei% .fec1|49=qoYS[IncH=G1/Mcm<֪Qz.#:2zDZSt{=f-Sg3q?02ʋb,ۼfRo8pJN3])_B3l~+L~4[FQ޶:7[B7jqP*]p4vx4wUz ݏ]6[Tz-k!nQryjmu70Xؠtg;mR~߅ʞ*BMDW#7ym&nJ]|.39vdknf_ Zno;0.pgUACgHIw)eEE#97qF}!Yau݁DWzFªT ٧#" %Ne- EOU=W57%[ݑN]:4z*^Օu{1宏O3T-:ocEUhO.;*tSDc'c>[J芚"&9I4QxU[ VRW^n,qobn  ʧ 8q!]x}vY.fcؤ=z"od=/Nkzy5S=#Lw K,Dٻ pLgIsSNw[9vOa#O^ V{.0GްIE>qGOރ]˹q1So/lnM {Lr_Mw _ʽSXN{@%c{}6cn; k#+&_ZwjyŢE!Ʈ9ԋ%fS;3(eSp9b-9cmyz RKu,Ǵ-쮑ƎM灚n;bkn?z hzQs/y5,TS5{y 榜v-;5y1sHX_O!ͮU*ܒڏwmuܴƎӛ榼W]Z+~29s+{޿"?Q[5u"i;Ciniu1_mUxKde@_ݭ8'tE;ԅA3tYƱTʱbau E dη`M93>OZv(MQghnʋ|k3vpZC|7D\z; \yZmؤDR~D5~vźzH Yd*ek [{u#33z!OpQXkB ]Q={^mHPc7@inet?vϏQA~@prK-3trqk;ֽr!Ce"_~`lQ/XuIEՔ8p+Kne=}ܔ.fjw=cK= iGRL+VGlkCt:&P8׮"r r꿋ی0J1q0: uBrElw.@(wהsq|A]Q#sܝ#ي6vQ73|+<ܯ*2< ow ]Q *{{RK;^ #&u Cy}։xޗyo2T,3B gyvQ:rEl~C8\\ƉrqQ[}p%^=@לWw JQ4{_(zCVc 5 kp*ߓt{|A}fQƘn^a=ݏQhX-7qszjqgN++"Tl-|G8ao+F06(D 9-n;&N3W&aZ w(|6Z%eحRND˓(ǎJ9M9)6۝{7/ȭ_u|S/彪AM b{xL\sScw$6V)W)ªsNX5˒uI5G* inʛNoc;옮;8x,銊;8Jw`wd 9Oؿf]H3V\ޭǙtEXMʟr@RcwY#xVm"{zvQ-䀥.8'tQu1??';f?;v{yHJt]=4v}_sS^ԽtF `4Uisa4Fҝzf)/7tK{:榼 90'5e/( L58A@۷MՓc'Rtfc%'"vhI7?'Io;r{/CU&B}lYGTj3=gc3]=#nsG6los#4Ȕ_<5ԽzlyS~G&._BnQgA4!󋃲M?@XS2&_٥R߀'_b*]!`lRZW*Wݑ,(IL)h2PȨ$U>f5qwAܒ.~N5#9(wtsSCenٚ(n wl;/[qvCƞUFsS>1JrilrQz??^/zse(*bG!Lc7r)01lw..+|J~; ; ]Q# u}c7?inʗr:Vcʮ̉>%ىn Nt.MK2ݭXnEcj?Ա]$vG\qU+JRk} zΫWQ=c>8x!V-^lz7[j8+e'sU]P=2_Ɂ ]RsqEҨƎrElwZ\xdM95ҙiא#CNI&qmؠ+rٵUx19_āsoIu|h՛șL^9ZV"MGcWhnʗx> eO)3{76M~'tONƧOPvf EsS>RS"O}qLM(DIGހC>8 .5v57U Xf[oę=zޏ^JwqKβ|/ o%3(RqϭrٵN؎; ?a3k=ùLQ+~N]55>(UuJ4$ͽxݒn[g~68w*;E\θɷ" J;Qcܒ.f7lb}4Q,F;"rTGM@؁)Bld]vOc;߅ooez|{ j$yh4v5&]vٲtR+ۼ-s ,/ 1C0^O|߾ڻJ{o(K -:L!_9mׇYIW=A7qJKph}.57崋C}]xMu|X +v:Ei?#\K*VYq+4vw榼7{4Qӻ{*sZcG UXAmDŽrҝoק'tzƆ 5Tay GG-5ݣΔŁKii tݩҌثqПAvzNvNrsK*zev57崋_#䇹v8)Q.c0Oݍ;ۛ[rElwԾ ֽrSnʢ9cF+MޔwOP+):=]3E7z;r+S}8 CS1Rb|Yy3#G1]^_)]n䘢E#nɇb|펻ػΞX7"B(@o^}lyCzbر&kniuàgџa(_2RP>'p*G?AWiKt=ܗ)]v<6uPM8-QNɯ$Bޮx57崋W^|b&HAo>=׳=tEE88-Ja-9wntCcw;,@Aq=uQz$]|w]랫;:vrUBzʹb|β_u(|VV*bྋ*j[ %GՆT鼡ObgwP~2uT7U lFM]0 ge[#t2~w`eavuQ Sr:1U\=G!E)LFi)u ? W%+:Gy^ɛ+؟EH}ܠ8]~쎒%/Hc@A!G;nWqී.bܔ.~֚T!Xq`(a>*‹dB/HK*,}\?>vnܳXLNRWjMT)K_ʌM~ b飲I[~ӝn9YτɇZn[[nU0i'j3( &Gw {q/݂]+ 9n;BИi=.[^CnwDr!T x$A:iWg(i916((g 9n;0.=; (xiHQkIw*)DB.]$nw(u[sSnvG8UbB KkQ^fҽQ*9*ecM9SAsv{zO栨x1pOkyˡHh+ԠRA=tQTSɇn;(PMI^atF0M]RKYU:&9I7|rG*qx^vҝk芊F⠙t]sSNTq xDDŽ% qd?0^ت8(.@*5v|yCp7.[q#Uڼ$@AA&ǁ++=nԜ;@CcwJ H7xB#Jkr!a!a6?0'$$L]gfwrAt l G_`%Ul~LKdpuMNNa=GU%Ŋ/ ވ@^j[4vrͭV}]vT>RxE3g,gCDܮd Zm+]16)rnp#;LXk HM&G?~H0ƮsC.˹xq*\x$\Ǔ ',榞UiTѢʗ_(Z2n^dÎܩJ]r.ф;O ?dYr7K\ qt";%7(;˙{f#{Oi†8ȕ7W{oyX Zj쨠n^FElwa.tQqf28{E枯B6d*Tȓ !uX؁.)֞__x17^ݨݣ+>}{|{cݧ]Uu*:Jܔn`:"qk\2WR9-tE:gDQ~g c!Yb̲i#ZP˫冼T;A{b/tQ].;5zlW lW/ճ]&]vifg4vt{Elwd2l3wzg6lA6^+EIJӰl!4v@Mt ٞP-7M5Uxq.;p͜CPӱfo䴋XWɜs -dQZQaAxsP>I. Jk! kn;zYz )7t}n )Gy|f%Ox35I7g~"+ ޼{<Ն8y]4&{~i@JcW.fulxf)5y셓- wl`O%rT8McWShniu 9's.Lzn%.7r6}blPt~iu_,ݢ(N% [MiANVEf]¨+9QDZAܔ.~fV_Fİt}تclxsb<`|OQue+ G9'>7=`!I*ᱭOz,-] i%[ c4o_"V7]Q5%:#0._ܔv{Ǟ?ٽư>妒woN=K'h1xgeu9!kLckmwO4ZQ{4a}'5U}kJ)8ߤ۔Li[I\.;`znf K c+s{ʱA)oa)u]fOMmrW H/ҝ{uI(?tyǿ4*QM͙n P#–brF+J~{BniKxUi.l SAEBcN)&Ző^2I95Q |uEEo-qR'][8Yat?vG50M1W/nD˓q,NY<ƎȚ)enm]KcȺɔ)J;qI7 *jjR47]fao=g@ޑĞ4$ݭ4:ۊtq)EPG54c1e-a1tMO4VƎ#/39{3vAW[9}Zen\%097Mw\WSIE"`vڝTE'BWT wc]Q z|OD%;:Zޫzgxolwy/3Ԏ]8 ݅;:^jMn/HNXF$_D"׏Kc'm-Ts?U28e-h-LX^,-k}|()\n;<˿́_R?XUwB.Y]Q%N~z\߭N"禜vQcwx7n*zh ٳ\Kz8 v]LsSN ɫO 0;WaҷeHIS/@ uɃ˹%B:#wY#+1 /N,mDQNuImǬg~7iLf#IU\ylⳁRT+ɯu>>}hoRz{yJM9n;iĊ,4znb)Z4:mxK%"qRH+ƎhJBdckHDI$r&$:gGe!lPR% @9S FαAic_Z.~B[WsmcVb(+ RRXr'Qu.zYiu)]^vx؎gN]~.2fFɏKjDHP:۽>7ޅ?vG1;w]uz~\sR5^tE( "^s47䲫並Yӹʟ4A/^5 8Ћ8Fb7Pp˔@o8u+a؟7z)v'k"B <^IW׮'ғPCrC`#&/n;GL y7Uv(e7h49(.r%4v47䲋8'1;ȰeYYJrn3!V2AmwnYYk4rilTٵ-୨kEآݍ5KYeJ Q4\vAcw `FDv?D;U&ge"Y"EHcnLc@>*37kile#0D1oJWZTrbc˛Vp'`ޘK o7QO궨x<^̧*"7TC4`Np+\vAc7Cz`XHpw7~g zgöz_GGQ sho5* .ǓvzzV_fvAPtttm7Htİ Y3ZuLӜe[2$9Gw o x[j:j㬱\)/AS'H! oatA_\̤;&T"2Bw(G-rAzEl7' Z-Űm4 l Е1 ˿zhQAG1'zVw(d0իcJzgu"OHRl%Gg̛{8pokLzTwUx5v{]i7t?v9\_=q:c Jr)qۡ+jM;jQGݏh[>`4C)즾Q_Œ[Oz0y+֧/{6ծ*J(-n;eFgl'";39`̍N7봴BsBݦg[au #߮ކ [nkq<pGߖѿ[Fӂ.ti=n;8g `ڨ)]\Kj3&NDݞ!ܔ.fu 1磛vf|`yO!| ҅AcBsS%36Lyp5QzjP;zt!&z3t'2@Usd}I4V7pw ʀD2#8{~8X : a=V$NG)ix6e՟CaqЊUOÚݏz_Ȍ& ۋ݆ErvQLǧoTH);յqn5lw'UZVbxH)T+v}ӊ"=ujlP4榜vQcw'.lp~nvt|%J^>C~?lA$to}lR/orElwBμnE(?'rzu Բe)iw4v^7au"\ڎQp|43^+tEEbqx/]$ѳXsSN;r39N{U>{zZx⪺h9 -ѧ;r(Xxr߽`?Dʎ\`.u5r EƎMy#&l⨺k_Uu診USN?6uIzrN=67崋n^Dt>R}Y#.Up/8ˌd8K+]ÒXCC$So^E9w[ F_.8 Nt/M9n[KXX6ॷEg\ͥ>'@@̆X3 &q$]2imܔӮ߻ݿ:_zr ׍TxũmسO;y9wQx1N岊u4lw+'_\m݇WXW=i1Nח8%]KsSN{ oc _7m-;U=CMЊAydc|+~;-+#Xs"s*{\:ld#lQq,1.~`ć'bїjjVU-=USھp)4\sSwj;r @q"Kg>ouC^gs;uN!t=SKmz0+qN* ˑ'e}~XZ9AE.8< [;rY57Uϯfu<>m~bߤ2"L=CWTh9Ix]ܐ.~쎳% |%]VBHlZȏK*2nABіƎF\Ǽ?v󔛷Кwy]5Bou&BBB.r4vinʽ?xO\o]k#O}5Qz UھRʤW[m`jv@榜vQ7ۍXnb^>^`V0+}۾|SpI[gڅ;9!5 |1,GytTuA7&DƮ>vwofYvFus QOc+/膅 alp.kiI&j$'|z 0} -0zU.ð0ff?DD9DaHCaeuԫVUQrNJi I!1,r](X}$D% LOD2, A=3rTf>Cʶ ߉x^yUge,v:5GT5'>:"! ba_):0Naz"1 BzsQƚRZl+e;L <ۊ+VcW%`l47Xy B=-6j<RZl+ͿhM+m &=\Pcz"ywgm4OӜƐ5%KAv=!c\>'›=a?t%Fe[ٟ+SDDt{d1^EhڠŰxYeF-AsNHi}lPc|ĹlA| $]R=# V\@y4vM9n[{\p|G@׆g1!XIz᥄ޕ;0b Q:Zt)e[ETa٩AVm% %5HUQ,pDb>WKP/J~ .F?ⶰ5iτEDӾEJ#&p1,OzQ/n.᧗mc{{%4% ]C;ԮpgG³FŰAz#hTO՜e[^"NI ^@ީŰk잫QB9!5˶"W(q7:71gx>)ZFSVXZҳFJ՜.5k+XrZ0r ǂ-6:,sR6u^Ҝk@lՕGn5 EpJp>chc2=U(ƴ'zˢQB)RZlJOjzu'./(u^DFu8ѓawkQAۥ4zV߶^)kzuŰ8nӦE08DLuɰajԮWWsBJkm[/[(lu|y"pN %ϠӒXKjy8Y)]v >uc`1!=UqbX{<8BR`\kovFpad ;'@j GFn}mYz}ujgԜe[QvF'b Xۮʔ>C qeWIn饤|+$-]&oB4lIKsbXsc]"6%Dp~1 n_zQ_sBJkmex!z1 >@AkЁ .|ӛʘ,*,QIG;r y˶ƚ[}Mbe`)T6f%06υaN)4t榼IfncP8ONXqzʏp$n *e G,Y! vGw)Y ͽm]aMo+5W^юtو-vپyزuިLTG,0*\Pۉtzb 5=&]E7 䃢 -rڇURM;p.XT\IB>vqYM9n;1ݑcm<аB6pTIi5'fuT[}lRZLjKEl7 {Kyi0(_PwUe !YOSwvVq-]ؤFh&oEdO5 d+(%Lq B u{S5tͿc§*$rғn;/\4!EKŚ޵O\ti%GxwR|lY)%t'Ҵ!=kzכ-5lw>V-V[ƊƮVTjElw m8m-eF `NQr/=8-ZhIi"Ɛiu?_6aB"VQwjWӛ8tqlPV於P?v{%~YuP6<Q (EҝJ tPnQDvQ7(Ycd)ҀwFyAF_i5x,;p57崋n/h>uűķ5S^'[K* t>9v$jniuQ _w~<6Us:?bIwy4;?:?ؤ ]viڻrq:yV .BB{Feccau/X7bޏ7l,?ߝ_w;.8`7n项)]v3FOŅabDžIO\^A57t2MA궣)-5lw T5i Nud(]Q#as'廝n^)?۬*ۭe#n1N|lt;q{g"䫪]UU^~/"Iɗ ow;Vؓ縿ҙ=@Kt{J!]حgFtN.oRT Ke\QzXf7ӽ^fOîG5}ܔ.f542JSp:-N:fTܨԠAK 颡^{kLNlrΚ;7:<C7Fݥ~ޕs{fMcrElw }.O5Mz u3}%tp;"\ӡ)0lw }vޞ䷜/EA+A~K&t067#\ߖƎŚ)4@uJc}^/zaԃE}i+WURp*Uֵ&oW+auqG?Z;fg0u㆜~ |~@8ؤۙ5䴋n=cGݪ4!N&W_-*WQꋵf(Er|Nj*ıIg5k[/5NXE =c 猝tFǩdm-Ǝ=rElw׳ 07iu_JLNNS}#:KD{T_ln.*I7 ךL\l늱w '1/lwEϤ8:oc; 5wӷzn;c "9U@Q.Pfj%Zq荀.#DsKޅoLOLcW?w bQ#ź .Xs+*c8oi8in(#wn?-'*ygKْ-k%URJ랫et%KX-Qm̨A;W7բ\nA6.}ܔ.f#GYƸ;0 uɗcav .'My4~N.^=qe+T0y_r09(u_N JO.؝}Yo;Ҿ;g]芊=9=թ{Sc 9n/ѭOhYe{ X]?2،:I7 Ƨeb2n) qk܄! -_BWɿqMݿ3ÊA|Kiu݁2q@tJpNXg)8>͘ve46Kȋ%M7H-|꫚2lH\ITJOc{n;$:o~;|3)X&_STlX'Z!]vw7>o@)W"߅+][L%=B&Vzޅ榜vQ7۝ 0މ}J8REi,%S [8_[ Ւn; grBsi"m{ɛu\;rݏڿe]zBEްBg|WS%ebx?tљXcG? nރ/sr뮼RvQDU];8զnEĞcrrn b T+,L<缾_^@o3tEG/]_.}Iwet?v7vN8(v |^NaЭmحE~]줛N>%.}!PSZ.7 ]Q=~ `]Ԭ4vߥ+vTqҾ޲X cTQ<~LݗL:;rZP[ >ͅsKNN}_ݹݸQ]oc?'~GcsK7fv:{8ױ/ .ſ]!~׽8Vhd׽|+t?vzBv ҅҉m(Á>!?\;82. 5\sSN^fȝ9ǖϲAGۈLT=]Q'HMd4ׇܔ.fÎdqph\L}3;euE-_K_GdM9vH Tx!or=WX@W屫֧كnyn16) .~^yu++"sV5uWQu 8FmƮ?ܐ.~_AcnOq#ް'-Qztye4tAql|f\CG2oOcw}qoݎzoْUl =ȡ'rl9~ ]?˜en 3[tIʼnG *]Lģ)]vk+2x89>Er6ˇ%Jqs;+1iuݺW:jEŹ/)>V.PU&o^W؂:ѝAW=16)+Yj=g#o\u?b1v Z8-gCYnyH?MELN:2hħ@7 Zw ,(iު][|lR3˪u)#T+BY +LQZkƩ[g7qNve0'P|(#hrcJqXE{U٩O#ntT45:F&:F4v#oR7Ʒs^ j|"YGYcGY&_7zǞ֚lqB5^q‹"7@85颇n^a)]v}kRzFlsơ^uz]{Ś=]v)]]17ZOHU{Z8֖.5vq6b+]luLE²1}]vG^@c']gxK]vEΡy+Ocnaq_Hc˧$Į>QOPɷ0V *N `ɒ.ͪא딠)]v}-"NE*U]p(>!oAlZ9^R`ؠ8崋ߒ9=~kX)qv<;7Vu5}vv{Q4v.؏dcdV|,"ZsE 8'[5"Kw+'ߪ?zc4vM9/ilW.;W"IW^_=rrC<3n؝rGS#0npywԑS>Q)O_> ڌkK97崋[265"Ogo>m1ߥ{>BtecgU+w̗;*X^) P:zB mM%>}<]<FsSN펺wHX7"kH)҅twӧSCpnet?vk+XJ&8 ZAvXSZӒS%U2t{j iؠݤ'E}YK[XW߿~׷e٠ >qGkOwV ]l;j847]=5W[K\6]XlSrbǨ;Fec=(ؠ+*]v'||;0Z%zGVӛY5]yeWdinȫ8EM52n]+z.6W91]P[g~~omALcqni)uqs'X.M#(EN/;>gpEvIqWƗ"LG]2|;C>qtA/:S<>-sKNK:XmzQiszth36|१.􌉃焺|8vz8#Ok?Lch%g.fuN+$`2 -3uYWxe.tEsPRAWwcrirEݏݱۻZɉFT8.a.<.V{4vzGMytqX= {;Gw=b;[NN;UoţE\at?vG>j0⠉k'0Q]6/+CWTTK1N)3rݏq 3@o7iVh&\[C>Q5}lXJkU`ɛ<馛Ytχh<7ؑ QͦfK}k`]s_wF" aռ0a|{ B[|3rElw7OK7M p'Wft>pIw{E^kM9ngہܔ9:v?k͍f8XZǨKj~TH5 &ֱ%ĈV'}gs jAgܫ豳&tԊR>vThnʗb؝|J\O)eǑߧrR RI>%OO)ecs?>r,O)-+V+f!V\Ƨ9ݨQa-e K.Q፨u\|<_ 편Y".N⨑J01bd J+izXz4ruoWb$̐9DH^^Ӭ+-th~~ ݔpkѢ\wŨ#ڤ=W:X(7>EFsS.;꒸b\]X/ƕ'Ջq?dX ]Q%׋'z/ъAy]N;j{ʢ;6@xafm5Qu |(tN܎0t}7,Yc榼tݟ[)n9p͇Q"]Q=rɁEh9[y&]v^6jr PzfuF]Q+NXLX#p@9NՃ5ܵE.X@ ci5rŜlY a<ɜO{ #VnU0VnG{|Z=Ln;5xɇ0UL7{09p+q%TKj=å҅KOc3~2at?v?zµ'yV@}H㛯z̥N~nC ݏ __ ivk8x3@@r<%Uݳ"nޯ1No̽n;|JCWoqrn߇h(6Ȇ YKsC.;~Gf%(p*Jޔt~ n_N,87YaC;ub+xA7B Mu5=).E=\vAcwƉV n 9Wȋb.HYT ]Qqg7?<ؤ%|'fß\XO.+Ζ\x~w-YSrq\+j]9]kw1?+욺Ǖ4j*O/*ghښz( 9Kjz~8X 榜vQ7gͺ8ow %J˜!gєQs.єW2et?vGqdX~NދR~k0=tI3%<<^u@ JqO \7@{%9"nCo1+2R7s mq?FMc/_47MH8rw#߅8 7\Og|uZ4δÉt}#%f#^-eٕeN "u&|+v/vvwݗWcm紐RfWny޵鴑`N(8O}Z,o8.;&hnʷ :Qc4 ^2ML0_CG;o.xr.h]I87 S\ gzaa=U'gE]xի^+*p{t˃3nv\E̟lwԾ1sñj2sio>bȉ\"ω,K9rElwԋ),5rnNP<) ٖ1S[6W꾌BNKv2W=R1< lݢ宧yP;TS6)T&ߥ.fl9 rEˆO"RLjȊ[+{ga"\c_57 aVLꯪ D![򦌱j[ +𵰮4v ??a't?vGBYԱmpNr.kG+z!!N"DcG~>B]veky8Alǯ\|!G^W/tk5pˤڄZ9D@A+(| S֠gCRNc/ܔ.fv98=YTD>ѿ(o|ֿ(޿h=(f;5s_j0ʏݺ ->g]Vx 1Z=^[y5] }zWvk=3[TV~G uy *PcF]>^WuMJ,{B>:NL>u `y}'\]16(ylvI7۝~.]705;f+pT;Hҝcmǒ87崋&ݑw=zzocI;ى]^L!d]ݯwQsʋ;?ve>_F쉼CPF ؓw-HXf8viX] n;rZ:κPdqD)BFvk+ǚ\T3JDuJvQ7tݣ ݣ~_}è;dt Niu_NQs8n8#=E|w"c^.[pȘܔu6lwu%j >^'+Va=]P[7b!];%ؤp5=,Q亷3kl5֑;Zw'2F]^ Oǹ. 8oT~w 9n[/Sok,Σ{^U;03wȏ=40%.V47ӫϏ)f'{NV*0g"|+hƧmn-cOܔw=M7` +檾/uuNtDD<^q+]jܔ7?vGnq~ZѐBD1|==u=t r}q97|~3ܽ*ܞ@pF)uTD)PfۅFʼnMo[ҷbzN榜vQ7۝rrGg1r|=ub8rqT)^/s-Tft>uEE9ubjD̍sK;q9_s|Ĉx{M|0nQ9]2[n;5|b=2I*{ xlw4ؠtsci)uc$kcBSn5>`Ct(nUCc+ZJ#Yc7jnʻ7?v+f18ץ[֭~LUt|F:ŋEhiniu gBlSBN)4c$J #8ر,`vQ7>!.&D>=So8b t !Dcx@Ic榜v5Ev[ SVD%];;ŧ4+tqx`&wt0vGn#Uꑊj1u nmUH>7?XP0blP5ftV===: $3ސtrtzG1MsSt;|T 7ӤnAE=\XO }疼.ǏK&g`:;Z"8nUT9h']45:qniu\ Kw _XO!+M[D9 N(-y}Sg-YvO·{ȏr&M{*'("ƎΝ%؝rch {. N%G2D[c#};N5 ʲ ݏݱM9c\ww 3 od$[% 96JMyWvG57.zԣ֫l_;`=NPݟHqYcGB/?;}^&8OiWRf e藐/.SosTMc7dܔ7u~na ҵWn?_ &u+*JqI{j-Ga..~'WƒOv<ɻ\ K'ܴcdwtMj<%qP*HT@%݉(oV>(]QSJ;Ziyr}{e>? wҝb;tE{-_+iq1˷pGil.<'D83|8\:+GQ8ʗLT(>u7r9\~-V3]~YR="n#hbEPtIU41nF86rݏQW];~d5Y{Z^"bid]iv؟ZQ|*K+@cw쓬 ]O휽 'vt^Zc+z.⺪ahiʦ?7,n;zYiͱ ĄKUĄ[Ysraa πBfI7۝H.S=T}{JBVc)r[\Tu8h]{j|lRoOՓn;z0F,+p Ô`8u$tC29Ԥ{HG1 /Tw57ûsSrgnA.KoMQQtIG'^މؠǦKn/˜n{.>BI(0yӉt|;>,dI/4vSfg+,c뚑XvK{WQr[MfT/uIE&D-2.EI7'!gm.P-Rx?-#=ڮKj88r݆c7!ܐ.~쎽UnYVP{VzLY5;9vzYKx4v\vqv:YmWE<__#HRQVjř汑)4S|Qtݑ7^{wyU8ׇ(L5VnЊ!JX4v榼k^n-*mU͕/{Uvf..{ftE]}ܔun;pnWzx%uxx j}{uRՒ)ߎ쎽xE5rƉ-]3Nvx#gH95*I%~urlPޏ.f#7"zdvx݇;8+%^nP;*3:vj>DMySnfS5}_srj'cɗ NXG0׭;rEl7X2dԷ>nmsܓxsEs5 lK@ҡ>O/bnD*_"k!xmtNcئgؠ|q8.]ح$A"/s*4%hz"/C%^{U B 1n}\li"@b46`CJJXna9+l6 t+βDӘ{NsS>eRĮ+K;`aqO?֧/ud^N&x71,7x^aMy9v#,ųKv{vsq=o$:9*P0=Qt'GIlD-9n; +YD0!G5P'KȽ=n,"[lAœE47崋n>]т>bX=]zv ]!fwuİ|STsBJkmՋ>m8&%5k CJ;", +*yu":[`lR:3On- 59[*:Di,5uIMFA YhorEl~~E3Y:ח}m09{1CJW}ۨ|?vG*j9Wy,eeG''+,U4gq^/ `$U Ur7v/K&rV: lN,PŰr8+Fڗ4'K ^5ۏXM5vL|cNwV<&%]ϼ#Rsݮ{(n7{bN8׭ʻNw^VHP5jQWsBJkm$BU%J5 Ho-C`l:M\P%u'nz{yOs/PObJgKĚ;պԭN =J3T8@rnMGcwߔ47Cnv˱ՔyxY|P&/p 6+-Iw A'1qK0NbC&or0lw4nPhܠ6n=>6"Baʯ{ irMe0NEĜ[rZJlwJ[ gQxWJȽ uwPΊJhHcWo8)]vGA LzqێvmRH,,Iq8,s̱A#`v)ojk`ZrB9Jy?wJQWe(ϒZ|wK©n(ܔo Ocw /jz*B*zpdExz%]_<zO=ݢ0^.f/X]8XmGo;Cv%%5TPV>vEsSN<}ae(ܶ:8j oJ מ|/(-oy LNDL%JU|  wW1bY.]DELGH RFSCF(U3O59xkbGB6|U4邮h&Cߕ ߵbؠpzܒ.~/9b7c1-ZǩV/AMO]qM )M2ŏ=E%ނm=]政Qi?sx}ħ遬up96(|zخ%lwIT IyYgP ¤;Q| N[a҉aҝ S))LJ9ä7fa6`C% nCAa<1x [ Mw;.F 7j 4|TSi8].u.rDi]e3nzOj^.r[&#JrC#Ջ*TWK;0JKNm.>yZ|*yښUZ;s^)mMz@t+~so?ikW@{w]M)o+*w@^6pQ]cl#n&#'sL}A ݩ%CeP,5No*H0~EwzK;ƦU -]55s/ح[:0KmlG8uժM#k8MwUؠtw7t?vǍUQb͂TG5o%,[ (07tEu/ҭp]W(ʤ)Dʧ; *nk-½ei% +&]RKřHF. -4v@^hniuœvV LlFb[r6[v+X(_FGk|Z io";Hco)_JnwN2?}/ N2i^C?8@u.P]5BsGfT땵 l{ꕵv+g&]BT=Oβ W֦;4a;P(@LCŝs,7͈䴤{ܕOw[eN⚛!džfluU_+%ͳ9 IݓVNcTna36R]r䴋H'b>_*U8 Q .7fd.L"wnnYmMѳ\vAc^SMBc=`j:J19ITwT0q%݊[9kw~)j|53lw\An[g s{s:̶KJKd# *$F;;[ACHUPwَN;{*_grVMV[nP3gPck ]M5vIM9n;~f]sSx y&r.X [)mtell-]<'AsSYE:ǏKSMg)[uM/(0= ?Zroiu\}3׺3bO-]L]8tc؜r5ZrPǚw_%:wp1wKP~钚/uypOc]}'l-4 ovUM 7R+*PtEOsSglw1eV gg|ɁKP2@-BK'*t7M3lwY>/se2hKju;u|5vs4 i^ ke0DbXgȭM \q3@؁)]vk py[*յW`2``8I)rŧ\Q.".z\vAcw q_N`a) ;ɗMTqH 4v3榼qlKs%*[_ڻxk+>՘r˕OטSR@`ؠlyB>uJ0lwr"YqPrS|JsO!Twqx:4v.8.f vx`+8F]duƾ%=jtqZ"pMgOi)u u;~q;g'ߒpqΨ BWT[`iR5a؁<<,`IƏQaw:vSn=0;20jѳ]8#57EHצ82G]X}7bawʉ9H]R0{]b(/f#0`X-lR,6bsT[I-+=F{0bXbE|͡Q sJJmcKǵA"qSt50t쳠ta4(0c^w?.zk-87 S4H%UPF$-d `]t0 Q:viTQ@WQ *e[SvAR0_KHGjub\ ʃ]-䴋nm``L `Pz k`ȭM];lm.24{}net?vz^a}@-D7=C~^5+<ӽ'Σ꒤228=Gu|/pytI҆8, nAG*|Ny>GHϛ8cF|>tUMg;^ia^Zq*:4vӲf#[~ʒS5OAge&|;',o5v͘MNk0əՓwX(mQ 9RKj88sMs6+6"r%N*6a J7<&{ t q^;)8 ;J#TnxN9 %?.Ϟ"Fonatfϐ}sd<}ꊊ8@A.\c;=`qf Hk8 4tuʗiW ~tgv[s5vGL209n;~yn4UHQEoTα#FW ]QLSL5L[0LTƖwRϑxcZDoCEۑxvucoq޼wy/9$?y[,mi}ɗ-&zbӼgCi#oE)^*^VirvF@{E= lCyAE`m6ɇ%vIWTT&]%ܴMrdI70sHtdb2!a2ȁ3:qALƍwؤ_B^U:JLƛ+>S&N(: qg*>z%J7<5kؠ_]N;dX=O5'%LކU$ݥO[ې=uJpPܞ-f.22.NAEߙ%=#]ۅ]νn_П_-9n;" πc,DJ:mvMGC>V|gc5MJ1 K:4cbwS8T>" ǎDGvJt\+jz8H.n$_DsC.85}5㬫O ]u S"uEfU ݦi57[;0GÀ-e/ڒi/v0)W`H{ǒ4N_߸Ĥ/Ò2C}9oP.>SCG]f5#qƏzѫ@!itsb;"@J]R5w)j?=OcniuxFtX/qՆ4Gq@(7NN|Z9K֢&偳)gfuB\BQfT:JB>T1S F P(4;pni)u]XׯWF (PE]R[6[Awm._sS.K[K?BY 2Eux!@$!wÊOJc-롫v]6 ]茰]*z]V<,0[-UFZ%8i>NEKQ4vZܔoUM&d8V'JNKp e+1P8|k oWs&7%)Gq7g(w8<~g%{>^W9`;oPT 5ipMyzcwJȧZTWq$]#i榼*?S ۆ2T@?U&[uSyr hnݗm_"P/s,Xƣb wjGCwh.[4 N y?vGXᗻj]t\y"aH R)!tED u R86(yJ 98[[@ű{֊潢+a!ɏ0L!}}<_sK>Łi5E۵1 ;0!o)8)9c(%=X`HWcWOU#D<3e&„ L*ۇž P3钊wq+ZvAWTw؍H057ni)?vr2'Geg"83NqJ1 Qqgmؠrݏ_"UņSskσi4wr0<2Y plP4斜R7 _Kq:[m\IFL~3S[HVGҎA_d|*4TOγD9#TX}c'I)a"flkwa߼kXJlw߽3TiI*R qF]"q쀼ܔ.ftoR$/$ZF)UKQaM[F&hg-#ܔwo9jEDd٪[mv!Y0ve=ؠiM,=S4<|m\_\'ܢGL4]igY#z2;~.,֚,δi+ (FU5:Gn8n35v5YsS3lwPO@Iռ[{aFJ rB>q([gpyS.ilxωp|ށu%FȗSq c/< u96(y9frZJlwສ%rHAe<SAj>@ciA (kxBбmKEpHRxv=K ,9'nblPz *ۓn;J*Bx az{1@zdʗR_K jDK溌w z<+M ug9dvA?vF(/kM:+z 8[PXcW?hnʛVc7NDB;]zMJQR8q ܆İuvҮ⠧m-#СvqP(Z B. Dʗ"e5 JW^E8Z]j.|auQ`V5"FCBeԎvB vzI/;j,7qMwT1Mֱ^C i钚vܔwuo5lw' hZAH Uv3_ioӫKﯸKivUŪZZm@ ݀khy6F${>oLfSLI%.p+͆?c,Rubė6kӺf +LJʡlcڹ5 ;mF> ٽ3Y S?mHqttʤJPsKz=TkLL|)f]IOtDe_~ֲI gtF9ge>~q)<R.~Vs!9/EI=Y-{G⊮86?x*Ϗ<~to%+A:q70ߞ"T"\͸o+|Kc]K8ű ZO߯pwLזպy77$-ku3i%IS fls4i/b1æ81*ݣeN2݌[KQ:D]JOc32\I~wULӎwK͸#B_GlwΤǮi#Wgi1oĽN{3nǞ#DX-&u9B!bw{!z9BnƏ<+mpÏ<;;Iu?6/uig|U/'[N_-2?z侻#t%ElJ}f)6qUc_o]ˍ=:P%ݏ߾^$<^2Y9t%~֫ du)N}Ç)J樕o+UFBk|OnI0SILpl;6=fܑ=3;Δgi8jA1rגw{gbM}2[lM>}N{(v/ ˚)qeGҥt:+ᜒlqC_X{]0c|QGW7%򅇢C'4PW Uh'sd%sq|#K"-f,UEzB⣑lwτ;G~)R K7e)[QNyBD-v.e"w<>[QVO\pΐ3"w Ql,*Av,#*6 )tb SF>q I_pY=R7eW'@PɉeD>vnݷ$_cWXKwŮYYBڜT}C]~2lV;(Jl;b{}f:$9hb9JзZ+\Yh IoW9Hq3J̈D#Id,΃y'g۰ ΌD`kҥ:Tv?$gL~帤qw{K,٭\z5 i=輽xԕt|J%F9n_p.cO@Jvdp<Xڋ֞5^{EeRݒԫB%8!]$W[D 6 լWz۪ᇕWcb^S؍3^/mNȺX;q4/k]U )͟X#^>RXŚ{x3pQ7_Q*/(;~7/IbyJ*KEG7$buzC7ؽLvdڡPl71ݦ%vŒKHvGߐrNΤqTEϘ/+>?DK{֤RT -w6#qpl;/ϕlvJgKRR*@WHJQ JU}lq9\8]=zC,RI]JJw_Yk7݌;fţ r Ra8] Xax$udMAS}ЅuzgŋZ}9\)<E$(K.O̡e$"V/3]{kXP.#wJ~I۪?Epp1H}IS{D.2/$ t-l'AWR*4JT=Ut)#tv;U$RVhcy@%9ľyD۪'RfZ*٦J<@ܕŶ۰%]ߕWcjw}ؤ?E݌[=6>vPW.mkhdP;t%ű *Į贴Q9p'nH 8p0KG9WHդ{(ICq3twťQ~! %2’NFqPũE".Y $޷0&x/ׅ'iB()t3:!fB$}…eЪ5V)!^J"]uK1}tqI5*:o7{ ce}<aRXif;J٤q?uf#x{m_RlG3/uoآ;V6뉋w|5@KŇaB *W'cThnףoHZ~h@J݌;RF a; ~КGsNktsS6 ]wk6뉋w.cw5`'+[%pW"(nKMI;auq~^f}8&cMU(+^~rIG ;'zP?]Fb}G5V}Y=mm$ Jɒzu0bv46+{R׽ExOnR}Cһw n!FX4m+nŽ!صt8"E%{=Z}_V=qQ7gG QɁ.SzsPxHe-]I{$?Kltņ Y}9 w$>NQu,UƃzJ"޶?E@OUr )]}S6뉋wֆY/ӎfС!D$=*fM3foYݕf;%i|w,q `,qbKD5HB™twmx:bGs]o0 `Wz;BO؛qRv[džD$-R'OKeNgNF9%7l{=R7֖۷ ҇aɃ񭓽gld-o\Bjuo[ξ!| hdt:&+vu*4sF;xz#lj$aNK0'=ͯ^}lh&7ԫ(qwDeԒt37^ЁG_ӣ(η=/<&=I">T."6xpAwّXsUmd*N t*;#tm*oQ FqGLEѮop|-$\"1㚬)j]}Kn,/M>We[M7N1;w oM߱+#=/{CUCl;q_GY0~dz??ǿm?a<ȿۿ?ϿzGEE1T&ӏ~]w㰈_&۵pkېH޲ӏfYLWl+Ejbmu5hqhELb-2n\:H ru7r nx, CQ~`@w+gtc?7d|,8+C%lxw_lVqX~W,߯?{؎+Ws ?o)XgEJ$uS{VouWMg CI FC~y+lxC^Tko,ޝwL^hKKDՅ! ?‹ws0oRr5|k3| eJn+0bo}AA}|[qS`证 /Kx)ER~;y~R8=+_)ns^P{tu"hi4҆Ѷċd4ݟ^ݿ^[2S_'ܙ ۴f1uN*0hY9o7Ϸ;2<_?>7ftz1a\ݐ{+޷bӿq<|?.ⲭ=]<|>.rA#] K[8!soY>n=>\>.[mn15a<6>z}Y}a9:ˏox~L-~\mx;*HNMțHNMo/~_T?w]wT퀤}Y^"rپ}\:R؞}H[wy $۹ڰ~Z5ylKt4hʬ&2&&& RDC\c45a_< }l1~oqK}VL.>wWx\2{9\4Os}t*I{ cIߤabNM?jL\wcRb+g???Ɵ?_ϸ}_/D^(Y|eF  e\@|`O0/ޏfaCqbMؘ1d`g n`SlCva|oq S3oWf^E6vxzD78lf!uې}0^m2h?@AY}4 w3cl\oF=e`3VLtzdC6f [`iwElcƖ˺57yo1wLY[Mwzʲ >knc|gsƐ1FFDɆd1?>XK,Ɗe,YI<lg=>8q\Yǝ p=}G8Ό!cL?lOc:FxO3Wx}@=!HO.^#ER2R_6.EDI٨ݲ,jmh iL\LeCc:f2>Rxs_zR|/8~!cLk;c:x3˸דx;,393|=}~&4fq _9jmh̖i _CƘ68fq _CƘ6nK㸼31644.c!cL?}'4;q\^oAV mu,1dVe,^I?Njx([x=}k|4u316My7`Chmپ}sF|/ӷIV}Cf~S P{,MA(EGhӛӆ'e m'-'^oh?y/̥|ŷ^=6Fy' hF:~xf g}'Lc`~ۘ_0<{蓯>7_OٷL蓯>!cS3i0YD_l).MEQ=Sm<)+1lJ'Ou.4bL mdc,s!A[YhB ccj?ظ=6:ߚ1d}lLe`Sd{sc|>:7ד|)mu5cSᚿh$<|jo-x5'riCMp5r<|joxook9qfzRϟi%3νֹٌ7_Oj??yi 4[| |=pgӭso~ix:?I?}47i%zRO$ 8W\zRO}#8\3|=~3+y/|gc[,{JR3%׹wQx2\I?}5wt<\rkNxI;qƐ1>:q~gzRO3ǽ?c|u8דh>x:I?5i~zR𐱰q0]#~̩q[.$r<3s|g>cK2Ԟ1=WF=IޒHnknq sC>yn?W l|k~yy'oh#n\Exx 7 q gV.bƛϿ7ͫ^K,ł7_xF^b-fzϏx3+o1= ?~CK,ł7_q5\Č!c5Rq gV.bƛ~-5,\Ă7_|!xF^b-fe|g!xF^b-fz翏xxXsC8Xy p=~|-kXCkFᙸX^;則p<#/zsQg%VbƛۏNd٦28r=dlo?(WWՑ!x9!c )ncWVe0` )ncWVeƐ1zr/3s13W'E6&~e_ >Oq<#/3|=~8gbVfƛx?R`m^gۏτx16+3c㳍 r/ncbVfƐ1zwΞr/3q1 Wk6F~e_& Fo$>ʿxx5)3+ g?}ħ8_Y p=~|&đ3Y9CG=dcAd1z83r&+2~ő83Y9>hHL©,xx6FdI& Fo?]7GgAVdƛLp<#$3|=gBL<“,xAq$gLVNeƛMGxFdTfzq$3q& wXy'1dy)Sn/>+o3^x~4=pJzȝ:D+T`٨|Ko6 /6Fhf cjm'ZxCƘ6 'ZyCƘ'y^r<#OH3|=}\m 2~pYzЌ7_Oj=p^<#x둍Y=<~pYzЄw~fr=nc~VnhƐ15;.)L<#-x>w<҄wgByG{/B3D דgTyG0 Sy!1D+4cS3>rC316,ЂWxFgfzROq=g~Vnhƛ'#<pC |=x!3D+4דCr<#rN3s|gGL9-x/6Fhf cj=/xFhfzR|dci1 r=nc~VnhPg[\3r?+74דk#= 1|39+3'|/g{sVgƛ't#<= k|>?o|τa6ɸY9CƘ'γ̻̼̊!cL?3]}~4y^OSx !x~s=ƌ!cL퓍oq#KՄw~fPncVjƐ1نx(٘xZ0d`<y0 S%1rM+5cSdù%ژZ1d`|_1S9 1rB+g4cS9 1rB+g4cSlClL<-2~&|j38sB+g4דrxz|,<Ђ!cL?u<Ќ7_Oj?\31r7+3cSlC\lL,2gIyVwq!xFNhfzR| -т!cL? фwwM93I=#ϳ@ k|{ ^<MxIk&W6Ffvf cjmYCƘ,q<#wr;zRɿY>>j$Fx&fvzR|jݬ΄az8Yo~g|'fvf cjmY3>j?ɿJ|x>_Ǭ|͌7_Oj Fx&fvzRLq#wr;31q<#ϳ@3s|{E2퍼KדgNٺ<+4rMߩv~p8Yxoh #ϳ@31ڏ6넍YyCu,<Ђ!c :acyVhƐ1Fx1<+4c}!^G6fgV cm #ϳ@31ڏҷs4%<#'rF3|=w[|_Z>҄wh?< ь!c r@nch1F393rB+g4'|?Z1l?Enc~i1F3G+4'ڏ (l2h?xg{VhƐ1Fy1< `x?~^YyohD(xDqϳ@ 1ڏ6yx1d~]C(xf39 3qB g{@(l2hF(xDZ8CGu<Ќ6, <#'rF3|=LL/-xD #'rFcm\:<+4c`\ۘY0\ن٘nGp?$_Yc;j:-ʏ v')~jyM;g?~d'Oxp##cj?\w8#r#gJV.eƛ',nD6&dR cj? 76FdR& ~Anm\ʥ2~w(yywYIQȫˈaĘ6ȍ+YCƘ6wXCƘg0dc4c1w8XoU܈KyXCƘ6aX9CƘ6aX9CƘg%dc)c1 nc)VcPgP%S<ƌ!cL 1 `S1r+71a0k|&>af cjm?OX5>WjwP\דLm|72>' Gp 1{yLu:΋]׬rƐ1uZ|u0I\6Ծu7<3‚7_Oj?||aƛ'Oxw|`/2>ې/|`/,2~Amu0cS}co3Œ7_OjO|`/2~Amu0cS=<|`/2>ې/|`/, nc9a6觻o_CƘgec~1c|&}' ~A?m~RlC>lL>s~˲ ncW{Ɛ1gO316CS/>6Cѧ^}CƘ6Cѧ^}CƘgec?z1s|&?yg cj?ؠ_6F?yg \}8ِ>_G`knj1ن־dCzz۠,jI᳿ߝoM?~S_Ϯw~ O}7Iuec}x15㙐_xF?y'ŎgW?zƛ'Ox/OCƘ6賺ч]}яv6}!R6&r?'ePF_!cL'_猡 gdcVp?] luSlClL.2~Amx>ې'`}=1~o8a0k316-6빍[} À1ls316'%~˲y QoJɼ",~'I~?16;їX}C3w~Ɍ7_O|Ox&cKzp;їX}CGKƌ!cن8;p}ό`#ђۏ60q|\q6~mL2~.2h?x6q?' h?6u1FC19ђ68vw}L_ۏ60wg c%#oj;g-ۼ|e ~m^cj?m=cSdÿŴ1o!cL Cs0wzʴ ܆dycsY6~1mc:[ylClL߂[3)ˆJTMےo6;c.~jzeczz\ O69X1^O6}} ڌ[LWlL׺ 1ڏ6-pp{ vІ n6~ې>ܧ=Ouo߯_=umO6s cm{6(LtG,3ki1tSo1Neelig?.6rQO*ucMjsrF=dG1;6 {zdC! 6g{{_' E=eO-w$^{{OF|ɱ'ƿ9l{. ״/Jm>lNH?z᷿Ӑs* hO6~;aaG)|Ծ66kD=eOʍۖ*6k7E=dG%fQOS+gXC+<=v_Fuɾg&`/T9.%d\UZövM۾_ZgA|%(|O /k}a7%,mXn5RU}ִznƍk#ιӜ\tWKyot~wAoKVkZ'Hm;R͸y_ޯngw;9k,T*cD{{!omQ}펷6Qk+$oHV=qQ7}ٱ3,}.5HwMv-Ks]"MOf=qQ7浼Å^S%9 2\h̻URњ%E=6 /EX}52YfekQ D}NIfob~'E]J7ZKr]Qo~ɳE=qQ7/i߶J{ߡfYw\$ׇ#/GKFKBmZ6뉋 ƽw}Qݯ{K׬N$v6t)YhnK}ִznƭk}n?#_dԿLxf_ ]I՟H\9.Dv/SCweÝ%|>풽}J}St)%|/O;/znƭqLW:w;D$cg'\7[$ۤ_Dr]QO\͸y-)m}Ա@؝`;߮+Qbou_9mm;mpZ\aR{{R}0S|GbD*%ث3ߍӒKa@]zߧ|zj{&_緒.L&I>oww]Jַ|~t.oHm;R͸;DIm{P0Ewߚ]Ǯ R%؜u7EYO\͸5-tgSut}t~]Jx?jz#\VRuM lqZ}Qc1`뷻Kh/rP^U-FoHh ۪wqZڦȲVp-* ޥ{O L2{Z-f}ERjU})»OeE݌[|wYyɍ+VGg$Uܣ .iF=B-x>w/WnI7\l /*;#^'zYI7u)UJ[?޷IhM۬wupc"cgϾIxl ywFV?#lqkߺ}/9:' *JEͮY]>mqk.\b.lq}zg@[3EisvRw/w~DߐUHM7ֵGWJM҅Չs㔤byºu)Yj}cm>Cv6IWnYO\͸u-*9{4^* ߚW%Kiw2J̏n5^R}W-eu-=(}J K'o/=G뺔ojzi^tO{շIhM۬'.f┶$pTm;;]2wxGk7u)myIԽ>oHh ۪wqrcXTrvxWƗ=F%imƗE=qQ7}5Zq}^b [lOH3MItkQu]̒s}C=U\͸Ü} ؟;Yr-G:$Ɠz=Rj'Č'`}Lۧ3fy{-UR;-ҿ}5=-X7}zOKo? k+lq}9 \s3]np ~F~} ;B]J1> w nYO\͸c\of1?' s\H˟3K+JOw{l^;?va]`37+)hy&w l^{J:ئnغm;R͸5iZڃJN_Az]>//I8)dZDm欭F=qAwe3> TRB TmE($훓.%[u⺻oH8u۪|ͭLM~wV8VFIy% ;{l{ n!{S-f{m tz쌱/"OziA9$"ӡ؆#麤[r[]mu3n++ъY?&ݧ$ҥT|U@%Hw|-۬ʫkwYrO>jM%(ݶ߱@]d_=D=qQ7y9yZN:Jw$+=/Ua-tkY޷I;QO\͸=o`kg YXW ֵ5oi̯p})Aw_%E;Hf LOu)Yzd3Hݾ{lv{9uyq,3vnbJ[O\/͒?P@ I^zGjwu|%=*يhgqHxqJv˽B]J[+*,3jx~f} fߒ _5, zSJJt6I1znJ?H%* f6Ilq+ *AZ*ڳ[wnשK{%͘{mZ6뉋wpJw)Y[$25&S憎,*Doqjomu3n^KΡTb.mՙ Ia^okxKVk wzGZʄ[~3v_d9ª{)HKfYXnWBĢ[Pߐ pQO͸=6>?ƒ[~rC:o}z?v 3᢮TKM~ݲlɏWS?vH7+X8aZ 8Oռ!n#d=HRj{Ik޷Ib6fq_z%"J%8h٨q_zb/]H[%tl Isnnݗo1s|QewrK_;zbS}oRj;6QߧύdE݌[eA,g_c {$ϗ;ĪRuAZ}F-mqoٯ]5`oIiCtKHݐ:fLtOcl^;ֵ\X}KJ7GnVJ<56RVO Jާ|/wDߐv۪.;v?ݷ>O"Iw_Xɢ.`9Ub}[ɾmu3nbǐDIGW71"Q06cꫢqL%ŐĶJfљwc}% J%=~BzښIzb= }ĖR㢾!wez"nƝ% c Vꨒ463ȉt]ϒG=Nkj7$0zn-YAS~^Iw.Ixao]I7yES.m{;ҲOÉi _cI_[M<,s{7{뒯Zt}CE$ՙnƭg̨>VJNw#{oaw!"3y7[>t*ZL;'f#;bG_XRS@ů$g[zԥTIr}Ef#-;..ha+|Ǿ3ѯ ըK]J1EI_wnҲMYXYmLv9K9JYYH6{EUb ^c!~#.\" P%vC\GYO\͸N_ߏvѿLy锜Q>=麤}麖}}_YO\͸y--^OۅVIwH@DR*iˠnC}ִzj8RߊOkwu_%qut7I/[W-j$:ϯb\t bhw[f=qQ73%W7쥳vJZ#Dof h}(mqIѐo(鳆B-OC;6Iz#EIץO̓{ ]DeE݌;Xq=Vs(ɮ#@$)5G _r|eIsdE=v0ҶEτ[>gz[oM%s 7g_`/^ߓKj ݦ[it3n+7 JM:RANUY+%8}oν6f1߿X(1P?j\%(ݾ"g=qQ7}= KuG咤<3_[=<,J:Q 4MS߇6z[حr]nlb-Q GmX|.k#7٣t{!sQ )tZQn\WXyd=OJRu&Jlx]m;R͸WXb2 $`#XCYXYu5zn9.z"ňN AeuX-KXk/)O斩ce<n] wbJlvl5{EY-vnS6SIZPmu3nI4k^Q/)0V $<A#9u)mpI%uw>!"֢ޑ}­k9 TQ}ĮGۣw/^rt{ƗZ3bE݌; ^rG3v۞ޱ34bҬdgt% .qmޑnƭ~kr9vS_tz!]JeUbỮَ6I_=zn{xmAƒ{ewF>9PSsQo~T}ِ8\gyqˇ)G< KĴTμNWI3vg?.=a̓nE C۬wqǻ n;0oeS}4E,u)]iJ -wSzGZ c>w%XBxvdū5깢B]JFTҩ0IR߻.6fܺm%Eo/TC_x+ r"JJ+Qbc$~Tn[1dثǍdm=#IpiH2*)J:*}GlޑnƝ~KZ/\+\$_.Ẓз/()u[y;vGV#-u­k=d ?[mnx_~tz])*.yd.@m!ixz/,X6>ldJڗB]H2MAXH#i'k=m(Ȯ`{/%2!W,u)mĒU;6`ߐ~IC!qX\6W5xr%Rtn4V *]`ɉx2}GV=pI7oӫ ޢEƷAz$)QoK}KyLJNdģ Of}UnvOu-\JvM::W2u+ bWytN{߱.V2Z'1VoJ8gO:x}F?eY_tj%sE~pK} PwxDuq}9+ +K|=I3t#߻t)Yh%1$m;mp;vvc8-˸~w [(' u%SIgPwm^;}1|/J.|*R[ߎ3|oQ%hܘ7$}IN%݌;]GZ%u"+I|r_Qa=6IW;Uw.][mu3n P. J+ou!nc幡zeVgit] JNEp.sCmu3nݗ~ג4qQ+ZRB^Qo)\%%kA kIznƭwW+]Rut#ˣtvg_ {Ŭ1ݰ#HE݌;\> \-nC_ $;f$K뺔oz w[&7$_,&vM#>ƞٱyyNy{,ןA9of]z^;ٵ{ꉋŎ蔻X}RtC+//$HQRҥX3KXzn܃,aL J}'O$O廐IRI-旪~ki.fiPT;[ΖLy&]JKM%{.X3qog.u-2M7ϣr!nޥ~1S4b%mau)5ϣekceE݌;sr9̒2υ.*sD뒯ְTtAŪo_q۬'.fܑ zClé’/_ߏ'me}zbBIGM}6뉋w{fnl}yҩ5Jk+#lc%7vbgFk|*y|/S HlS1[s*u:}SOu-&X?kK 1Kc!N|*+ץg xImnҵ޷5Q/\pˇ)6>3Kە>va-z=z6p]JabR#BKYO\͸# 2Cc*9z1.6SUKԓ.=yI0k78;zGjw߈+ uTaq}#Y=_=1W^h+f#DŽ;UxM'qkGoriQjRsd] tN"mޑn;Xx ο97qd N?W}Wb<{A]}{Xz[%bO&ZWe^'05ɚg.1ӕV.it3d%]t\9kcuW.9’<'+wf=q5?Rڏƚ~% ~":F6Vm.)@%8B$&QO\͸7eI+t+lK2{ :T"+u!ol[]Vߐ~uGspmG\͟(y0O'!=c}D M}5veԺS߇?cznezQaMgciݪTKiuQgnҵczof#5݌;+Sɥ3 [=".n K)kJgH}6>eOK,l۝yr쳾YvgyYa!a|mtܚ9ԵDIĿ;x^oK%X7.NP%4۬'.fܺ/qVZb98 Y:JzDJ%߽dǐ.cXm tZ**w`] fu)%=XV߻#e\n}.ٲ\RSN.D\rUn"mc+iEQ٨dAߐ7lޑnƭk1g}QB]bS[zw~1zF;v~{ O cn1vѶipln;=*>j1]z.In5)ץ{xU}]{xeE݌;zK}P<ރ!=O=; +:%>P%ht&- BdrɭplvKRlQ@IR|[%du-|l 1݌;+{KZ&^c'Tlug8vx]E=qQ7ֻo{L,3ieSm1#!i$kQlҥTcM%O&݂ .&~苪5qG IKg/a~OB"J=His5Kkԅ'qQ@DŽ;Tq^Ĺ ymQW꺤H%uwlqr#Z{||q80a#B9%D}]Iw\< +cz;}M<ܻ>؏\]%9sEb꺤/Jv<'ԭZC$1PE݌;b%7b<|HXK)Wxnnjmu3x 1]s 6ganz&Iosݢގ5s]J(J:a'̉m;ҭLy܅Xڳ.YmM-.IlqE}J]J3+Qך{]8 }Cw.k3 d.b]nks`Ȇ>]Fx?lxuYk [/7N) v=4Rv)wee͸ e;noIپmuَEXzGȝ/.#p] ?mFlwNmj&ᵨ.;klxmCeN̴sǃm|c\Qcp`dL}gs4!vǸnx-+rmel0Hîby[}M|0ftGrg Gۋv|\ oV$xH.oekGv^>},f; ߈i& wuSx~ۆ7y$k ܰ|BȊBWd[/x }ޟ <y>6DY.#;s?pwqTD@ft}lobl{]|x-r|탄 o=ąZj7άϘ=\ߺ|^ <y /?y ?C(ކMYėe]n ޷f~4 ~?]Z< Ov|/ۃ_ ^߄_Cx?:iBv^^ElO{kfTCRWlM(/~~O?5oKCn])\/<uPV'\[~LGxq=7&[1o7_w^ݟk}-M|xo9y[xE._뾀6u^$3lBnݦؑN=>(?`?=އ׳c9O "m| V_xQ+Ru. |e[9R]`V|c`>wo5>-\~͏.{ endstream endobj 145 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 149 0 obj << /Length 483 /Filter /FlateDecode >> stream xڅSn }WjSljM[&%b@LS`q)d˹na$e$E ›U4T{~G5OV͵e!Z10O]<4Q=⏿ÈmSE״FЇ׌j&kgO ^xZJ,optȁdcK7]H](ʮ'Dv*g-R^U>##y6jQn'rbS{cU_ i-xZ(ܖ( _0eZ,j<%,.lB !a9ϔ+9P`'+$a[ IB3:b2(- @;"_Ծ`=t#<}xv"3ե 9ӊ3sJyt#/U Q endstream endobj 146 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpmBfIMX/Rbuildc718b50218aba/hexbin/vignettes/hexagon_binning-addto.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 151 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 152 0 R>> /ExtGState << >>/ColorSpace << /sRGB 153 0 R >>>> /Length 20445 /Filter /FlateDecode >> stream x}ˮ-q|u$$(@bPMCj}WZ+3 zзNDG#3_?>o~g篳wL?Ǐl +W-߿~䜿Z"U+? Z~`/``(yr#C~?c)/|sZ_i~ϟǏ/\~qxq#^t1)Uk_-W{lcICJ>J aׯ4.``(e}t#h_]PS0Fa[jbcXϬ_iw|^.8kϼ-O; -}/׎0kq_e{|׶͵svqO6yk?~̿? Wgk4o_횟-{[v~鞻۴?}g]w[Z>1vMxޑ~0և_31ޜ2q=\:q c{)}}?Lxcnf{׹>x1Mz tb>ǹ; -X evlKsF:_z1c7..9_xYypx]]=7>&]xp邹p_~؟sr, Hta>o[گ]|8S2{5Ӊ,{|!eۉh~̓ no&:0go5WMk`,הyZF:<=>&ó%9(<57H's\Xo͑#X\L|j]ĹiUxo~;Μw1L2qh%[ď˶a7̑C'Ƈ߇X2\|#6&-WG9د͎3Qj g#9.5IN{ ?uWrǦ!>a]w/دkyl]pWV \v҅߰/`/IkQgdg/7c>𷰗34\NxOw7~]|y>bK%h>L-Ѕ+ouhOXC {Rg.v[?lמXL].nYy]~}Af09AXgT$H'>r ;ϳof(w/l W.#?2+ǭ@:8Cg1l)7=zT~JWg}]JvhC']H>sRIk_Ś<59A~kY;O5!&ƶg@?<{9=n㞐mNFQYMs,W8go0畋n; æ<m3+OQ9k+IZhBtǍ)nY{4]7 Lw{ 4^3D~FOU>1 fyponW,=fwN18{/gI{E:1:)s.nMGvKzmۚae +[l9҉Fԝ{+a>GU#ă' yO{wFSyy#rr 7)LyM>M:/^'Ϲ@'L-~3o(3k'Љ+e t/si y]j.|tǺ˕m,nD,4RFϊ!iyzGiI^t]2ěDk3mo~1i񛛶)~s}/))phӔNQ#㜲^01V8-ŭ_vH9гN@7I(U ,'IXtb\;ǰ `oXF[#2"_~(z[f^sjQ`XxjTsZs%XL-> pBdY9W,!sE:qU%Us3 ^T ձƠ7HN\5ZJ~3@{ _(Ёq[=K‰ReypSkRsϋIKIUgZ/=uYش~#YBdҴX:qxǍdp7Va.gQ:=?=6Ƴsp3nKN8o7t5 V;Nw<%ӑycݪ$ܱ}$ Љ'bcGރroɽļ9ts{ 7ql'&âֱwnq+NE:^-o8=+a늶ےRx&s't'ڎUW%к<yf̣O+tƅ`=.)nچ=*ڂvz4 k:8\#?'ir6\"<'wԙ;8NsX,O+]òlF 6 N\2dnUN5,v#^0ęsV>{@"n]L;=w] =.]ynH s/Qb+o ' '`İ_:qN%X,f 6h"V W]gZ|k Jv#iqxc IĆČ;5JEp)_Dtrb,,a>{# ;F1>x<`% 7"Fd&}!4t8q鹴;daq[ZAztMтGmypݯ[X /XcFn!0>XoY (^onEPŠI\c9_jtbYR}5cg& ;.&T_n#-aSƾ+UQ'ӸuHNNy:'#[1d͈VtŨ|;LfxfXa:&ۑNLO}"P}f)]'kq!;SE~:OoC`DLu9pIINPKsN̨ÿDƳ2}q*+҉'%aT%cn.V9x1V:.Xs[pKxH"x2*Y\?GX_i+PKXzج]s(?bc, NdgL BZ /jؘwdi1C'^|=V::|N*4TnV3^؈=x(cǏ>feA%03D>cYNoJ1؟(Ft%̈́ѡ%/f0~(-7e !ғ d09VȬ$ГE.a@A|Υ/j )dg1 e eN1LB 8^7X`4e*mcB|AZCG?tbePzXs͙5\U UUS jB!a΀ְUí /FS+<֥JSjK4ֿpo~np:+#_4wg x/=~c$}J.~sEM |"xZIY;T,$tċZ3g:g8 K"˭KKU3AR1ߥcU%V%b[6Y=kPeS%bj?㏠ɼXcrz ׵P[i1uK;xʇ7yd] KƧU;/0ܯr~SS;rb"Nν$ȿյf~c KGEn8tW;򯛩4ኜ, (ȢSVbT<=R YCP!V~!Uaf 龚Td-Q2UVXiFAL*!V1i)fgtK3El[41P 3]1ku1Yg#L7yں?a^+i.2FAFʞ˞:|ڰ鎑fZ٦9${R;Љ[3AeNx +~!6!u⤪il@fE<bA{]()ojDsEz[ )8s.;My֊WWfp$3;v]d6pfǾqcFݝ3]\3}{]{&]kYllP 7 !.;&ݛwXMP8Ba@y8wGnUх{A+Og$˾.fm$ޒ$͘6wêL>bY;҉_[醙2~,S~oAAo>pEo=ϝW…ϵaGM*bեojȿ үX0W`szěTߡ3B]'A,tiGuK'^ſO܌VyN.TݮzSm,g ʣ^O>DwMnޢ 3MJ~}[{ɖ_CBd#\yĴo~hg>XEVNWQEinsaxyTh@fWz “6}u0R|ZW Sιpz )[^SkN;_P(%^v|)o)t}Y^ۍ2aUqB@FK'^Xi$|sU.\:r|.xCXYYvޣ ҉7_Շjy2_;+V˪ V#DT*+g9"xK/M<]f.t;:lKfW_q7g5S.^$B%,Ua9UhA"]x*,W ck0yO҉nk {Sl&6]:77rye<*k +7j%6*k'3c.S~Ŏy5W5KKz" tAVsp!pSV=#˦72A8J=~}#XG=<.`V5? 뾦oN:1RgTȥ9x4\0;=U]Cz)<6EÓ9#y\핡 V4*0MOETB:f"WBLJq%aLYHGV١6} +@6UK%@y ' k'n(OJ!zyDV%O0sS Y18m1G:=r]8"XsWo^#gկrbiNjkWfZ81ֻK'n7I +q7i7]Nij>5SU=Wa-*01܀/\MK5EnÀO(EX8يf PqaZT'u,:0L|TB:ļNG9XA^D6lA'->i*,g-8TB/p.ZC`+ P7Kryз"y;,!/mxj^a)uH5i^zx/ʙy`ԨYgH/A"/Li<АגZk>Ҙk/NA"/‹ue@B̴#iÇOB]Z}5/=p *T@<0N\:V}mtw"%{/]ӳ[/[w:7'ro={C]~F'ެDқV#a2/COڃw ݷ|~%';,)҉(]ER'3>~:AXsL &i@V75ZǽЍ<&LxCz׋?G\4z@+rWƌ]zQ.;ߡM ͛x*yo5ѥ3(~NSi#.;ڥS|püB G*#҉Hnu%:xI89woƷ!etY9:xrNGT>+C'V{sX]]+98h}@C-TqO_<͗xmˆ_b9 r.x3GP;zċu^Os13ҁq)" Bx %j.XnAc J4fVk{`,yO:zPZ}/@<Yeo= s <=iogDֻ3~^7M7@OKkMy᪾E= W^z\{_?'Y-]mxg#҉FBٯ"_N +G:+/l{⃵fz=\2/w﯋*㺭~s}gboFKa%/1߰\:z?컦6^=vso}aբ+ҋzgD΃JMoZN:vN{Ǡ~_ޒT6cM#}`zCz3gX۝&㍞5F#ANe=gP;zʥO73Esu}`}A/&<$n=S}Y#fs#_3*ʼgTVntaʡ>am,\tTEs@QX"0 # z]\RЋ+ܡ׳&Go7DNosupNKz/Nj=$B]r$]r&Ku/7ioANݡ< ~<_^u:_VM"B>tǼT^ivYؿ?7Q׌%7t`/luUkX{;[sX~@LV*~i#:"Us ނTH?b2=o9x*_7 &Cw=ptbbBFNg=qNX ’x ߯3A^?t%?.W!7ߠaF ]~3+Kfח\?YW5+a|ݪp҉ՙί׭W VNyjr>]'{ b|l܊1^$>2,ѝgWLsw̾+D_da&zN2@c0#V_dܽ:Ի!8O |vk`Cw7=2rNRDagJvy{U>a|"OzXvٌe1yHw}Ϩry~OէFqT}8}x&w{l}{E ĝWİ{ b l_ݑ~ ~V= ^EH_o*){a>Љy, +K83Xsг $.9֙7?݂ECC*A7nNTB|󸻡UQZJC3Q,!y# 2^߲*>Y}tyHձ;iAfWc۱c󸝜6VsFA&J; \n/< G껾[TBC=Shuh2xrC?/|a6|P|~?sjntb<ܗ6S󝱮C{CqLtlDBs>ĝ2{]ā̗e/<{, FC'?oM/>=g2rQ)Љ?ѠQ"`oEH13#r{7uu.y =o=T}c҉O&Pw mݠ[Ǚ#FWC'`JȸZ-Qg5 WW5dsV}vx,X!+PGX.3xN37{`/*L#uݓ~l=vۅXpށ O;>&;6']5:҉vj`7j7o<+;t,Ppۜpglΰ WBNM=ItAO, 2t (,[>DX֥uP!5??P(Ȩb Љj490Z<;w+-~XXJ+' 3卿_{tcd15=gyҲj0́A5 N<# 5?d5':Qϐxg;Wbطc`"uGyW䏾Q wԈ?|nu}fu t"I4w|t$Ө#uc+  r|+,t#alSSŔ1[JHCqKXX8zvl ,6a:T ̹$Gr-0zrA7,fC&3ʽ^04'teyK%3O̷Wk\5H s 6XJ Ԫpӑڙe}ff/g8+,ފ,H.Wdtr#ֽ8%˟s`z 'Vׄ|ggWK!wzPCn b''X֗tlB˟cncu&{Cݩ gLLt҉{C-TMi.os0Qz.+[{L ;gm ⤜N*kYLᜑ>s 5wѠwC3 rW\;U:kt,9м`24a94ʭĪ#'QRſ#Y>I̱:tUZ\Y!i!|Od #.!zA?1|?u1)3:#I6!L }3~3~QM8zA8,G~ø;i峷?E-bحq~C?eQAIb^*6uK_Cş>Nq5Ͼ:0wٷC?.)hC zlVyԊ&569{%żU^RdBڲP;-NAu'ŒW;U!#?0綨l,1y',fYf~yHuD|1;KMp@C*!Ssż!m6 ꂜ*$;vZ?C-Q޷**rg‹nnA. u)U ;GēmXpirqUOGYʬ`}#CE3tTAM buAeQ+{D÷X:@V\eFvZ^.<(sRv C@@/&\;xUjAJ#f%qo1"x* c3ߓV`lx'N4irp箰B@晻khY~sI@+abwvi+Ȱ= }һM[ĨKtbD_ g;VB})p*)aEq-W#mH\%jb.AVEWPLs >T$z D5x^f<Y[I,`w^:*-gə=40s ' #gqk[E1^g\}۝~IJmXPOE;WŻ.7ƿ\ePë{Nݔ҈)SXnK}lk* 'l#;+FŸV[E6 ڔm}1 ģ +ތRBQ<Љ&`Khk3m7rF:qe,k=̮AC̜EԆ9khN:z#ˌ NP_yvi%9*| :7VnɃj]8Zb3ږ2A24t&y K%08y?cʢHxRJ+S#atb8G_OaoY{ 7z5҉[ }xl@dŒ~ 6 otǓq⟷.W~_;; W>dÿoUĦsxA椡AjP 1ű 1>`4AKd@=p|(Q; @ӹP +V-D˺>p~]o`}{UK%䯋]Wd 7u^1Gtb!1J.g&X/Zv^\:1vsahiu|s푟1gv gʫ\͊%Źu ,OULpWѡ炥wN@[ ʯFƃaEz> +b!v&"c'Mmʳp_"Z` k0AGD>UHw\)'l|ʼn JU9 8"Cm QCJY/jf%_ͺ‘1lh +8M.\9҉۵pp9Cf!pQ ]C{_{#D%4^ Ur^'R W`n߸6Ѕ  $`S@Wl FpبqRwEuNq[=C =:A{T/h/jx@'fY v}mL$'g-y+89 hi/瞐|tL ^!#/1ML|:&&& ZPSZufΎ5d\:1;y+y A^3R莘۵n].AʆqߨplV$"Q%LT:$"ٝoX[% U3bI=TFs{$mqaG#1҉O_:IR;Tt'V]H<_蓱z]ʐ}UBws ]j5|aU{t/]F9hwo{ &09?=J#Q4j(MH*TIy O?c8,Lȷrܲ|+0]Fߊ6q0$_L"kÄz,uvo/'|_@xfY8&r@m2"s.yȧ JpS>~؉h#%ҁ;^#70thK_k\/Ń|o޼.a|zjSe3{RsZMrvkh6T´X >㹲]vt9rk*w1t F56r.`51-Նlkl̽ +2ϫo(Lݏׁ 3cc9TBb!'Al]R3ᒯht6! s)*CU.xj,X}1 V8XƵi*;tbU 1$l^8Rmwt-@^/kal_5ڶp6ݽTa@'Զ߃ Q!`T.z{ߪvNAx'Τ=X<;ưZ^˝mƒ7RsF'e_Za q fq>OR&c^s" .KQnlG U!vkdpc&cߜϯqR흛VK?x;$/m+^o^{D*iY4u>k4ޑxR =kj\KszZ^{gLd᱙A`EY5/x*3V0M#^+LvqSHN̊,yݠ3 빷+ԼaA=[H?x?oL+o}cVe˯9Yf?K̪oU:R>X(SUuyõ+:D/~_Y4^P'fE:q!2oOỽ.ΌC/+;1Ú,<ʌN^Z2NA?*>}_3̕^eok6>8)Q!gu!|v~]̪`1\;q AeGF,yz*Ytڃ2Šeot,{*ߘ2X ]ЄK'<ɯJX¹!*[r#zn, s.V(kjh&\:{?V<@\[c/i@w\ْ?'7RF:'s׍Rғ9po|IHotֹ]ncZkd:76ӣMm}zoCEኵ?>?v=Tghٮ.^5RX:~vu52=}^c޿=y"'|w{Baֽr|L{uVz@õ&xi #G ߫G 0av2-NMө\]S&mW2O5ت 0*Z Y0!f96s+zFxS,4cvqC\Zԛ zoP,4gC xvO-j5,H3U_ny̪^Ǔܚ}}oӋ$F%$UN.^24 +*wÛXuwy~wJ/ endstream endobj 155 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 158 0 obj << /Length 139 /Filter /FlateDecode >> stream xM0 w?v[$ČT )bO ' @Of1rjȼ$QO X?WO_ӡY3rs\'hl,HtEJQ͓tCoץvZɪ>]WR!#M( endstream endobj 69 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpmBfIMX/Rbuildc718b50218aba/hexbin/vignettes/hexagon_binning-003.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 160 0 R /BBox [0 0 288 576] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 161 0 R>> /ExtGState << >>/ColorSpace << /sRGB 162 0 R >>>> /Length 5703 /Filter /FlateDecode >> stream x\ˮ%q߯8 /EU[ 6 O^Z<F&R 2kFl\߼Xڝ~&*N587NEP =DN>׌*t5,L%Ң$y-̾g<= G#ۙjn5Q/`7z9|Kf \k^C/5se\r2b/b+^6^Jݩx/iRWKF<(cY2U_ǔXE%G#ls>6F/}}+&j۷vMCQ `]]6iQ9AI?BAh1Cƒq g}U鸁okʂ#U-PUƒV#Zuy ^2s-RB Tz(XE셙Clp FuޣM >ThʀJYh]*'6S\uy·?;ւmY&A5)<ڃT8pn4Bm Z4T$B1LTuUfTE2TP,,"uaJGTsv0|Be*^Bw ({LClp F]L;y wY0w~Е*U+XXD)̴N}pmŴcw-J&҂R,Usjȣ=S8hDyppW4U se5չL%2O[[sg/\uyC",bʧEDp-7e5W\G"~pesEk^:o7s%3O.lz+{ݧ!، 3ʹ:x_[{1/Wu0#0WLLpkC=0*z \G'e:J.8R%zșXD2V#Zu1X=za&@r IZ/,!gbe/i| ;{ڨi:Qً2%\)셒e=L,"bGUsvn0| 9p$HuXFKfb+^6bڱ徵irr@z-Aʝ.hYS-Q.5ujYs܍2$ɪ,,"uaJGTsv0|Br^Bw9 ({LClp F]L;yr^| 9p$HV.gaT>v[hmŴc w#אe=L,%3sg/\u1Xzgܕ+of/cze~<%l;~@F eW|6$9dfTso^V??^aYWվO߽3 zlsskssj׶A?{RR2zsKUp[an2ڀm84E58xիlx3g|}|yקÿ#ug{3@ous{cUl=[θxbG{(&c/go/jƺmዏ(;`N0Vp۳/2^Fܷ~^2$G3[ 8Qhtksg#\ENz̤[\ý5an \1Y^:etkҏo!8Qhtk*ܦz"yYn9h 5ʱ[)0p F9tk@n pTfNf5'Lȭb҇R# .0\sNpQ2G0[JYhtk5=[CX=*zL5*^RC*Cln ky 7Yd&BSTz(XE[W95\\{6YR?'ɭ5Y&:5ZBn2[A*Uѓ[C>[5@~(0p ѭ-0\sIpA_^TzW֛[t]̭ah:A 357謗P]"Zon !v1µsk,̭KwMRջEʉ]̭ڋ5u~Sytke-@9 nNhN^dn apcX&3g2an v2'sk뼇%3 8s^L8!6ѭA>N^dn a}ѭ/tk@n )wVCn[cJ5Y=54+[!IkUYXD2S]nn 4c/!^Bw9 ({L5ȕs[Cu1M dc([\!IUYXD2W]nn 4c/!^Bed&ʹͭ[cڷѭ{5Z ;!hl[%X5Lͭd@ɲr&vsk5[CX=zaf7B $zșXDͭA>Į^jn a(EJIf/,!gbm7[zګ5uޣܭfvsk+$i@C2nn !v5µWsk뼿[7 =Ѐ}[c›.n֭ܿ/ukKRAoXJnDh*dsk ϳ?.ҭQ+K}:R.߭ T[Cր?֘*Sn<[[!O95橸q .Vq FI 0Ir皇L3єW"% ȯ"7k ԉ84;Ubape'̯I77 8W-pIZǚH3~|NƲԖ SußHe?;?@Q1~.dX`J!Cσa$VLqZ74)g""A RJ]1="Y;d!θ5J7CJF?j q F[hcVkg\%DAp!*%H 6pcVcMV;⌫ t_Gȼ.i< ]xA= -!\?KQ=y@4&}& >#1(4b{kWf180[$J,r󀀎y@=DX=Z/,!W+Z/xd=OETn!v6µgw]3y@x-ҔwP͕XDUNlמ"+ ۔9OP۳:+E|ړ:N{Py{Ni8)?>C3 ƿnVx4"q9N6oO2pc9.y v?q$}y8YF_~e֎ ȿnVg##q#8N/Op7.ss vy9P_s7>?un$}8F?0h۷dZ8Z T,]!G GK1SZ8nY=Y84I+SЙ*,"uapn4-c/ br y/IՏRd&-ʹCu1M b(SP޵+,"bpn4-c/br 9z/VC2^2r¡c:1kZ8Z ;!h,%dᘏ&wTEOrOʬfGJ2[dY9hY8@GbkDkpG[/̬f WHzdY9hY8ȇbkpGg/ʬfWJ2{dY9hY8GbEkpG[/̬f WHzdQe,Cl1 µY8u7Qnͽ*7ݭ,ݷ:nM7rul6 ~~]#_H{5ܟXoN ܦB9"+> > [34+]su.~xK9MРsr1Jm{ƹ|Ҡywg |ܜ(3ob]np,γ q7 1,[852sl551|ߍmVo~V1;ElD# E4B0xV%|`c+xl:PW:uq߅BeF<}'/bզ9/b6Wv2.9BVyL })yp]ĭ.Ƽ[yw7M{MÍܾEiZ# FOǤEJ.wE/,-YCen'Cj]0d$T9ns7wI \yKX"nƒs3_ɹ$sJz:r_[ endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 815 /Length 1987 /Filter /FlateDecode >> stream xYKsWѾ~lJV%:@ $#K z5D aqIpCO?nqf2/X`B&8348ib1mqҼ`VDJy,8A P!q',gJCL9& LcE'l%&mp1ɱdn&- 8{ȇX *J3I--`ʊwih1u`KzCLhq"CV&YvžʢE*L}R>q J:,*|T Ü[m(f\%5Te\qee_GuFVE2JXuzJu+ U_j=4UTZoY\2꼏fۨE1u?#mO>p IO^E } 7馟=.68w|Ê=T?7Dy?~>sY z`e^waOߑ~聼 Ϸݺ=Aɣ[`* y? 1ocٶ5;_o#e";rbS.ЇkWÎ"f,DYq?j'Fd~3!peUsAxdgߖ,{_Iv\/rѬЈ0>z,__9ǀE_傼H `;Β4RwdR4|~1 U-Z SFԡmFOJ*:J1`OFq;EcF.^?]#6hq6vs;: !ImL,de"N&T/cٰspeg׆Emǩ]8=ɎriBz8ޞ2<ɛ=;AJWXΝU3OsUػusFuQ.iO<7k4o4*>// ${МLl._ʦ*${(Y&Oγ7O";qoh'U 'ZWبeZM9/td֯VUv̿Y^2+e_&/"\(lVaURgV^eK|u\u5+r͋r;m;~KYlY".ٛ8/V(5 6D5gJShkS;b^/MS.‹4 ( { dyjՀ (`vSyTIXR'bOḱ)epfOY땲XdrwH5 bG5Kl?@7v,AF ?]+'}z;9$Nv0 ,`31}4tP^.OX<չIͼ?(uЏk$ؗNR{ R~BfO9HhZm=NIS&'u!sJ=H>Yyjo|$tDq:3d7@Tvc`mUj֛?/@ݲ:e} EJ ^+')BJMnu:NF[=5lmYZc“A{3"yjӋIijT^X|dV$˰U} ۏ endstream endobj 165 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 168 0 obj << /Length 393 /Filter /FlateDecode >> stream xڝQMO0+WeAw5>w&|.:C!pdӄ{=X Y1Pb>yKFEqr\(uv'\+=7ury/%De ꖁ4pת`uÞ}.dnJ3%?O bfE}ף R6_7I9bɿRiJvnK&B}{VxsonL_G|k *mht;4n^i^/.z8!vݍSL贶vXYj 湒kPЅE4.]#da*ars.C]?tm.asg; ]tc\ 跄++AYEwHk19I0JH0,3(а_7H endstream endobj 113 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpmBfIMX/Rbuildc718b50218aba/hexbin/vignettes/hexagon_binning-hbox.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 171 0 R /BBox [0 0 432 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 172 0 R>> /ExtGState << >>/ColorSpace << /sRGB 173 0 R >>>> /Length 15405 /Filter /FlateDecode >> stream xAkkV]WFU ̱}|l7"AHA"4@-϶Zs9"zҠ`יc{\]qW?ǟc/~?o>>?_?ίq{>>ߧzy|~ݏ'Gtt;~q<|97?_C=/׳|5_Y=|~]Oo=8Iz.~ePWgA|n7]Ɐ+|>Ύ{xt^>S/:G*X[x}O~_'oǫ;+cՐ`߇٥_G:y-|pOy-D}e2~OqV>n<]f^WycK :7xVڿ׾zkF^vX~긟_/fpm1}2Zd sc'y|6y~( 8~x?{yc\d:wfpm켿|=z5V(|_#b`;o|>zsm1, Qb`;o|>zco1, .߃~q}NF^ >ʛ Ƹ'#qu2ֆr{3Z/qM]ZΗi YQ#u~|oח=8oy ƨ8oy ƨ8oy6̍7F/y#n7F/yΣand|IGkm1|)Λu scQK1pެlcQK1pެhm;o:_fG`;oͨ3syƨ38֙ q=_'}u0>km켽>>E+UuEյan1:W6vyNss`;o<'Un:'s`;o<'Ul7Fb\*7#I1pnslc獑87׹ sR \]#I1pnslc'b乺7̍7Fb\*6z=}=#ag>}c,sm}:7׹?^/w:W6vyNsskyc9)urm1:W׆Qd1xn\]lc獑87׹6̍7Fb\*7#I1pnsum;o<'Un7Fb\*7#I1pnslc'b乺6#I1pnslcq܀?&#ag>}cqnz>o7gu6u|?,g:6vyy`;o<ټnn:g`;o<ټnl7Fbl^g77#b1p6lc獑g8 ȳX ^#b1p6lc'blٽ7̍7Fbl^g76#I1pnsgw]y;K |Ʒn֙ΗW7zn_Ο__{f๷`;o|znrmdu{}IϯK|U}}ۗ?:בWod{+_9i\ZzWݏyU}nwh>~/ݜWTQ}jΫz*;3zt|O Y~zt~rm?Oԟz|hc?)>DyP?)>DyǭP/{AOAya?)>y8՟ꏣ^?)>V^qw?s??ԟz|tyP^qyP^qyP^qyPt?s?Ny~$S|3?/P6 ?KT^Ou }y8O| yq컜yq_׿?)>/ϾK_ίoȟ_W K=m7ǼK=vA+u2SΟ B?= 3.ia^iR:FMC*7;CӬȅq=r3(;͆\ 7߻i=YArboQzv܇b11s٬JlO?a8lCr=mL1y6T9ȱcRqhNy֟%O;&0j6vN?Z0lFCq<^\1y6TY DZcRlcf =x6T ƱcRAhNK7 s =xx6T UưsR6L<lOSpj6C8vLfsH5P\IZsxH5PY;&)ja >BY'):=M오5uT9ŰsQfTǎIZsF5wPJ;&)jlAq오5]TEıc^QfTǎIڽlE̚_@>pj6vw_氈j6p8vLRԚls}eԚʫzt J̜Ho?~VLdxX/oHL^/ua1q\SYR,3Nk*8kCTֵŌƉsMgmJպ8qMW^i3 Zq\5NMZy~U]^`6 ]Zy~G_ 7 ] Y_rW cWugb-ٙu*w`e [{L|%3=)l)3nCq-SSf݆\T LakOvws֞2S642=emh>`e zq,XT ٶLakOvwc֞2S642=emh>de [{L|ݰ|%3=)l)3nCq-SSf݆\T LakOvws֞2S642=emh>`e }tLH|Ȟjwwzjw=)l)3nC!92lі?ly-SN/ݏw>骟Yg[UpgbzeUۓ3Ju{rrSTnOnVΜ{*9{×ʙsO%goRÝ\:UҚCDrRCD{.SCD{.SCD"{,SCD{.SCD"{,Sx(U; VE\(ݽVEX(ݽV\(ݽVEX(ݽV\(ݽV\(ݽV\lOQ{LakQM&Zsv&Zsv&Zsv&Zsv&Zsv&ZsvG["&Xbe [{ݛhU`e [{ݛhUd?-]=DIM*2=DIM*.v&Zs³=EMž [{ݛhUζe [{ݛhU`e [{ݛhU`e [{ݛhU`e 9zζe [{Ȍmh>de [{Ȍmh>`e [{Ȍmh>de [{Ȍmh>`e [{L߰|)3=)l!3jw8ۖ)l!3jw=)l!3jw=)l!3jw=)l!3jw=)l!3jw=)l!3v=)l!3jw=)l!3jw=)l!3jwwzhKqO'[^eSKǍbU|U?x\%?kdziU듫CJZqS?[9t2U ˕CJZq8SA]9t1U3ʱsR%:tInOt+,>|IO+4>IO+4>I.P+4>InP+4>IP,4>P0,4>I.QT,4>InQt,4>IQ,4>IQ,4>I.R,4>InR,4>IuR-4>JͥhZi {}ؓ]Zi {}ݦZi {}]([i {}ݧh[i {}][i R(ܨ[ >)Pwp>)!Qwqw{(ջTQ(ջUѹ; {}x](]i [}Të`] ~0)ջXQnP)ջYѻp)ջZQ)ջ[Ѽƙ~)ÔpK~e H?|lc獑~&|m7#L an1Ā-(?|>7̍7Fs;o31kֆH?|lc獑~&|m07vgbזqm1}m07v~2ϊA_ϭ H?||c獑~&|m7#L 9n7Fs`;o31k6vgbזqm@F[lc獑~&|m{#L 9n7FskE+oPRV9vFy;SW?1? ߮k7 ^/5m%/5m%/5m%/5mBAm [`1:o2b1rm1#\ (,p07veŀ.cycFqm;?2dikm1#\Ƹ6̍7F`1`6veŀ.c\ 0e`;o2b1rm1#\ !R!qm7Fޮ1rm1#\ (,p#7 0e`;o2b1rm1#\ vVX7j0B07veŀ.cycFqmxMgQX 2Fn7F`1`׆݀Veŀ.cɐ&FHcv+ZycF|cQX 2Fn7F`1`6veŀ.cy?/m:8c^c>}~wbvxLٞV6XضLٞV6Xs³=5amp:m³ il4:N!L9.7Fskyc_[> H?|lc獑~&|m7OFY1k6vgbזao1Ā-yc_[> H?|lc獑~&|m07vgbזqmdF#L 9l7Fskyc_[> H?|nm;o31k6vg}徶|nm;?gŠyc_[> H?|lc獑~&|m7#L 9n7Fs`;o31k6v L _ϭ H?|nmxڽh卑~&|m7#L i7F~*)F^Üs;o켝!ǻq^k̏%yUx(ڧ/5m)/5m)/5m)/5meUO+4n4@1:o4@1`6vib1rm1ŀ.c\# P 2Fn7F0ek(,Ƹ6# P 2Ƶan1ŀ.cyc#\Ƹ6̍7F0e`;o4@1`6vib1rmdFHc\lc獑on6vib1rm1ŀ.cyc#\ HFlc獑(p#7}Zn`4ƽan1ŀ.cyc#\Ƹ6 Q~V }nm7Fs;o31k6vgbזqm1Ā-yc_[>6̍7Fs`;?gzH?||c獑~&|m07vgbזqm1Ā-[#L 9n7FY@-[OFY1k6vgbזao1Ā-yc_[> H?|lc獑~&|m7#L 9n7H?skm1Ā-[v/Zyc_[> H?|nmxڽh卑J0;og[/wBXc~,Y?|l/㥿#zA^kۖUC/5m*l!jeA a`۲ [{ZiFm[? a};# 0e`wF`3`6*0f1 slp#7F 2ƵanTibikmTà.c\F 2Fn;# 0ekܨ3#\ Qyg6Fllp#7F卑o0B`wFxv#\ Qyg6Fllp#7F 2Fn;# 0e`wF`3`6*ia}#1 slp#7F 2Ƶi7wF`3`6*0f1 ͼ3#\ QycA#1 wͼ3#\ƈ Qyg6Fllp#7F 2Fnzd;MR*3eH?|nm;o31k6vgbזqm1Ā-(?+}>6#L 9l7Fs`;o31k6vgbזqm1Ā-[#L 9n3s{yc_[> H?|nm;o31k6vgbזϭ sc獑~&|m7#oזϭ sc'5`;o31k7vgbזqm1Ā-yc_[> H?|lc獑~&|m7ΛIk6vgbזϭ O1Ā-yc_[>6<^ƈO%0;ogbzI/5ǒӼ*|W/je je je je BAm [a}7F0e`;o4@1`6vib1 sc獑(p#7# P 2ƵandFHc\lc獑(p07vib1rm1ŀ.c\# P 2Fn7F0e`;o4@1`6v~2V #1 Hk7e`;o4@1`6vib1rm1ŀ.cyc#\ HFlc>- P7j0B07vib1rm1ŀ.c\vYyc#\ HFqmx h卑(p#7OF`1h4ƽn7F0e;o4@1`6vib1rm1ŀ.cy?/a 7*3e Q~V }nm7Fs;o31k6vgbזqm1Ā-yc_[>6̍7Fs`;?gzH?||c獑~&|m07vgbזqm1Ā-[#L 9n7FY@-[OFY1k6vgbזao1Ā-yc_[> H?|lc獑~&|m7#L 9n7H?skm1Ā-[v/Zyc_[> H?|nmxڽh卑J0;ogbU Xc~,Y?x~_/5m)/5m)/5m)/5meUO+4n4@1:o4@1`6vib1rm1ŀ.c\# P 2Fn7F0ek(,Ƹ6# P 2Ƶan1ŀ.cyc#\Ƹ6̍7F0e`;o4@1`6vib1rmdFHc\lc獑on6vib1rm1ŀ.cyc#\ HFlc獑(p#7}Zn`4ƽan1ŀ.cyc#\Ƹ6YR6Xs³=Em:m³=Em:2g{jZt`2g{Zhtq6Bs\` ;o31kֆH?|lc獑~&|m7#L 9nbskm1Ā-yc_[> H?|lc獑~&|m7#L an1Ā-(?|>7̍7Fs;o31kֆH?|lc獑~&|m07vgbזqm1}m07v~2ϊA_ϭ H?||c獑~&|m7#L 9n7Fs`;o31k6vgbזqm@F[lc獑~&|m{#L 9n7FskE+oTRV9vFy;C9޽~ ad4/ OYBX#ضLٞ"XBX#ضLٞ"XBX#ضLٞ"XBX#ضL^XBH#MaOT?p#HFlc獑(p#7# P 2Ƶan1ŀ.cyc#\Ƹ6̍2bikm1ŀ.c\# P 2Fn7F0ekyc#\ HFlc獑(p#7OFJa4Ƶ6vivFlc獑(p#7# P 2Fn7F0e`;o4@1`6vib1rmݧF FHc# P 2Fn7F0ekn:+o4@1`6vib1 1ŀ.c(,Ƹ7VHF|c獑(p#7# P 2Fn7F0e`;Ud_+3 7u,7^,oՑ=)(?+|m07vgŀ-yc|lcQ~V 9n Y2k6vgŀ-yc|lcQ~V 9n7FY1k6vgŀ-[s`;?z(?+|m6skyc|lcQ~V an1ϊ_[> (? andϒA_ϭ (?+|m6s`;obזqm1ϊ_[> (?+|m7s`;oP~V _ϭ (?+|m{s`;obזϭ O1SI1:93ۙq'k%`d4.~ߤ槔jeA a`۲ [{ᅰFmY=DPBX#ض֞zZ!tVa~2F}lp#7F 2Fn;# 0ekܨ3#\ Qyg6Fqm7F4B`wF`3`׆Qyg6Fllp07*0f1rmTà.cۨ3#\ Qyc[)Ƹ6F8ޮ1rmTà.cۨ3#\ Qyg6Fllp#7F 2Fn}Z`ߨi{ܨ3#\ Qyg6FqmxMg 2Fn;# 0ekn@30f1rmTibi{nE30f1boTà.cۨ3#\ Qyc? endstream endobj 175 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 124 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpmBfIMX/Rbuildc718b50218aba/hexbin/vignettes/hexagon_binning-hdiff.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 176 0 R /BBox [0 0 432 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 177 0 R>> /ExtGState << >>/ColorSpace << /sRGB 178 0 R >>>> /Length 1380 /Filter /FlateDecode >> stream xYMo7 ϯRE3͡M)zoq.\۴qR#Euh=꽑(ƛkͳ{yWs7~w8s?ys ?ϓ/aZ6fF;&eK0_&s3l /65J|i[ǰvx4v.xszGK2jhGsݥ9; 0y9;9I{r:79&L^O&g?x0FgŕO<>×OswxW#L71N ^~2ğ,=n{Zư:#hb=6ZCLf剥>+(<8>F:FK$_P-rvmÚ1X2R1 †Zj`8=Gps-xA1u)Ck^pDggq`Ls8!4Ajlx$ccuCk^p&6yz7Ahl#qPsl1qh Bc ܝiBcƆ3x܊wRG,/(5з9OyΗ^pyau~5 s.9(9^kM1qwS]Q0Ŕ)3S\ B.A3RKU9hWx\yhḰ1ρZxɁU909 2 42^pP!iPAU1&K8́1ρ9IT=+s`L5P5k-B́1!W[3Fy`ᙃbCx{xɁ^cJxɁ^cZxQoƁ1!L{7)&  o!Mġ7cġDEƆ1P]Ej Bc s.q"z9T8tZq\T9h^thn?Ё.o?Toп1MA7ˆC{O{sР՟oa̡7xSi cZqTѿ1MA8¸7V4cӿ1ug4>J8}M~OjOVk s~N9 |.{t8Gy]Yͦ|B' wq޿R%cϓ?H endstream endobj 180 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 201 0 obj << /Length1 1563 /Length2 8505 /Length3 0 /Length 9543 /Filter /FlateDecode >> stream xڍT.-CJ3tw4H0PC ] () J*Ht7grkf㺟kMV Xc` TT8 Dӂt.XH9A0L@v.  6: An @vA:z:Cas~038XpH؃!  f hhB!``@.lPg+QF;f %TAJcChYC\ThB-a g0.\.`gt2@,`'_޿ApCA+% PUfyX ߆ ;(؁J@ saswxe,` !`sx=od q]# \ y`'ܚZ?|Kx`_%r`ή`_T7BX@a3p1O 3`ӏ0 ]B_N_%zY8<@8A_K(wwn aw0U(`ÿL7_|濣_ɺgCŐv,e"25 Xٰ&95hÈT j%*ܕ~@EcP04*_%n{fr{eˌ)׵{FT I|֦I^7x iy[?r(D\t!Kk䶊a!J}+\R e`QIy(mq El}U!LŸk\0Hkp2ifݮ%~Amk$RгbKo/NIy(h#O5R^>UFCb v{oxPAe·ݮȷ1l?/(Y ݞ}#pFy!fTP>~.3e;T0(:x"ښm/jma"d. j[ n~QIPDZe%D>.rޒ8UrT$MϬs.gY"ؔ&fPǒd:E˷AOu)H73{W@;7.jo,8O[ܣU*E/}/Qd'cpؼ *~aْciSb|dn@I:CB'H&l )Gw|`ܵ5fM^q{m;htĀū|Ru!lMcC陒.\_lX2F[PA!&Ow Po9'6r8B":=DG,Pi\dh G3all2p7ks3t-, qxYoi̕f<]e xQ>> r4QmW¥ ߵli>Q;EklwDgrnOk.HC7t?^X&ď|f.X~nݏ XOw5:bBj%Z$wwCHJ;[&碿>҂N14, q$xJ=NzPͣK8尰܄7I5/ u," x^(9z}(rD9G1S\wwRB.H7__TR;x?p*Mtۢc/J&>', T"{wlȲfRgR14xJkꆰwlm16TI.+rߤ/-)Czw7Ɖc"[M+CMZ.}E\/-u.^ز'TW\`~,iXú>^ŭHTfڶ6Jo[]guPvje:@%VKla3=8%Dy!+E9cD 2JzZIL$7!.(44dWJHv,y=V#]ɇJDj (]oI(rɜ/5\k)_= y)@ۄHX| U-M ּh26M.o64}һQS>9TM#c;ʉB&) )} ߉5  ,gqXRx^pN0>iqĉbJL,{1+?ikˣD:~MRf/>DtNPb]5+ٞhj-blS jTC^\)26:(gcZ5:^g>gE6;!:"^s\Z~[ 3\nyژ*:3/~¶v+j9gN# k8M2"r[&MߤMqe5aXX3t RYq:4Cx`e[5&ķݰ&/h"]zu6 c# Wrj^fw - g(!BMc>LL6@ * +cb  ɴyRK 4gmSyPދ5*'o\f}Ѷ*o6-bC->gX*4MԡMպ,BW,ZQ0Ə[ˤ¢-԰e0(J>{==4dA4PSVgb_+,gƟ?0ۢr:}f x|X"aHe.;/_=EKxdIhFqLj%.!(l[dŞ V*_&g DQA ŕAZF0}WL=WB2!6-._IeJN\}+L`%;L~ lċW&q8 2ˋ_-M U]}^7kAeUb]N}K8IK;;bjκlx[޲Tè%kC9S' &Zacm.*鋣3)G <ۅQ -RNB!bv]Ω?vYaIه̈́Cm7L$A3}DZ/旣Ëpo7ؤr"8|pKkcBN+09rm^<*oCm_?pQf{3vg?RĪv/m^|rV-i7^ H^<;#dj⍿vƹ F mbLZ]=eV96c< Ց:0ǚʒ*pgZ>q4Z5Zpt?|a^x{)}qڝWZp4vobţGZFd($(ztwɹHRIU;`V>`z٢hF0s`W[vy: ;^Kn}0ܱ s\1 !kf.79]II#lQ: A-$ \PO5t w?9QX#1#ϹD\ewRQlGn6o8] $B?jErNj7#k,%]M(n40Ωh+]2[i; XG/V2ȑruavM#⣘͖L:泈BgCZN4Zo\{kN( Ly΀WCwL.d7X2ŗv%fgcB9 _B5Rm+|W )']IvtΙ 1H+Q؉(Q2=Ǩqgm޺UZd7w8hBX|X,L48lX +$5_iY24s{ʪ#~ r:;s`gk)Un%-1 ɫdU[qͼ[E syCO }Y&ݴŤFS2ێזv$ 4ehn+\zF!dqT7u䊘 ðmG( Onr[3S`e"tv,>- ޛfsvnVF S㟨|T`\v+ CKQE,-n@dk@19jRM`3Tw8cE$L-{9W 5Fr~_,DMix2sO餹gMh̢@)>x +8}4ʦH5,!N)q@6ibw 26Aၑ|v1tOD'K|Z <\PVgQ+x7BG`Iѵr ~uf}^T ! QDT"lVmZi骙Msyz$x;k&+W#49QBϽB3"*յwBv)L:y~T9^PW?==nAB4:" QY&׌ᡦ ~!++˨bKftw覀mH^!?44Cz<٩GW}lK$Ker+C=9d@ (]V<b[aNpV6SׅWA'RՇw~=N!N3. ^zD\ 'Gc2!R03fm93ȁcQ^ԿoV/H'$|wJwo}ݭA#k;ڰq̹')Gs#b;}-jE;4ÑT҂Qx!tA*C&ʩbdLa#N#>VnGLdln<9.fuF#FoM`6yǩ)Jܣ C? n}yeݼm9 H@Ȧn8)b :93Vf$h ?@<(mxDۤdݹ*Wu@:7;5atqCHkL `=OBFqT߹-ms#G7tckTJ1)Ȓi5ib}+φ0g{P|Sdxz =?!_yG ŪF="#/|OvKIeW(^(ƝQ5OR6E~9 #h ]ia"$Zth>it"6wPqA ~Q)p  Պ:iQIKg-̲llМfsʝV@*-|1#^_j!37_'n ~K¯-n̑vJ&<K{(#=.y ԛ0Uͽ^yLf>]2wosK|YioroM.7j"מ1:^6H(_ EQaAF]h79 }S9)ʱF9' \D:}]Ћ5{զ䠈PŶϨi(Cr{fu_Qժ}Ùg:((޺)@+/iucژ!St5Ke0~(=&gDvSb4#&| :#GM?TmI`X4}uxPA~뜅|'HrȰ4H6@;qal?fQL ̶m_y1ůцHv4a+O&Kxb4}ys}lh:XoLzu<3R'39OO#6Hgmw{'g }YYc>53Rͩy'M z~^QblQ%-1OnS>XԕyJCdשԡ,[Iێ| K'&hUw]G~Wzo^@e3?Pe?1jLb"'\:bV EAu>u(1 EC*:w5+V"b+n 6PvqiXm[KSv631 1SjWr]^z 71|_?-Ba zcW-2e}qUh5#eQIN˄iuƌBClMN`q^W3[yJnj:/FVWWV3:fssx5F㣝O8%cnf;_gqUHyލ 'V ȹBogeΐh: !s0o+R}L!bTA-WdsSE5<-xv%kp;&iX6ou \(pORN}!q@^s#Mo ;@յ֪RS8%V@ya $^G:yب+ȇ  /iΕ}V)+`Mp0(̡e~gJJTG!+rZw6͕aHdo("`Du:?i&Z2l?E#L{ӈsՎmD+h98fyupTYNJMO}a30+^1An&;qsj1!W#}rn}/:bH)7]>Vz]G ۏ( ;%"N.~ zCGhe [ʊ8vb;Q"ʂ6=LV8~L6s)[oޜ6n~^\X;h. ,x_< ̨nv$iLl}D |HR|f''9N2/ ")7q(DE*[ 5bwȑ%Ru .L UA, U=EۘZ#,wr賑-u;89x6Y<JwYZģ <5kJOx}>d?*ÚCx)ꍘɾ{319p8kV1esG;HJxZj24ݽq|l`eGV+6Wl{|<+T`}yA> stream xڍtT.)-H ݡ CC4t7HHHI ") )19߹w{׬ͷ~~~| :ܲ+򚚪 cf6!xFPW7.P0S#Q8M@Bb a1  p(=`MucG8{l퐨c `@\NPW hvP'ԉ#@A(&aD:zzzxR\Ouz@h&c6HO+r8 P*n uj?`?.߻x@.7W!w2A890-h+i \0@=0G s0@IVF w<7+s5"2[V[#pޯ`Pڽyl5l`pk_CX;a.PU ?>[( @]P/A/7j_g35fE=;i@k xrCmب¼O(_=Ew~y UMU8L p  0 zg0omOkW WBX f@A SwῪH );:a/EZw$J 5&QU$%Y- ?M ց!!v(oKj08TmAeC ~x'vC {l(JNCAX Ce |A(ZC~3G Q)+ޯ5(«B WC .~sJBiD<ľ6ZƓ{mT{/̄{4٫8a5A?3c^Tidnߡ%rew[^iӖ*~}2q -8YXk/]wm{ Xkg=YHB[Wghӊ! )YW{aQ]/r`"Q]gtG0$x?Nb.Uvkb_+e9'kXUN1y]ۥWC3,u?9 ZT; Wɿ/p'PH[SF0\ԿĎ_ߝ1e([nC/!Zc5a~Ytm7rW -"w,bHyEEu39p[? &[~ThKsc1N3}6Dž)iK7,[^lᾎ7UyYU"mr8?[X.+|J"Y+0] Nj{Z;0v$k!ѣc $zX6rlv勱~!!XLL P: Z.z=!gv_Eb4g  $ǂ(o ./5K{ް@ɽ{MVa+[~pސ(:#Ѫ~xS]d,7cgW|%C#ÈxX-"#w;n%G*` ]Vw{>Zpv4vmmee3+jsL;Ira:!pK%͌8p;J(p,Jz}AI=T5MSЎvRk ^⡋âؠ]Zb2$mﳌ snr%͋U>!F"pX䝟Geॉ{ ,2ޖۧLn\Lz6a6GF* j8)?6vR"Пe1*ѺReEv)EPל2t%H%Ff{B vůP\~Wȑ*r)g>xMkDrP=XՑ7ug&j[嚓01,݉Q+AtI151UuR>L޶zCP, ǯH!*liEMzVe \k~yHG$qmDG{id/ .jXlq&XZ9[Y;.QT8CCς!vG5"׮gCԍBF2MWN@muk?zZ_G;Y;KAự- g oC97)Y%m Mr ֚dm39 zfODBKt=#4$`N8!Rgiu$ 'd_"U`NI(/ZSx`γt 7!=kkG0,UwN~,sr[+]64l iN[5o ^L?y$'B{wX$C%󱫭t]=NZs8bMݓbQbi70VmBw9џ,8$0sW 6h 8pQi!߈M'6n,*wBx l~-T\hLtXtΔ=R?ƙf>ujRA2s˓` 77-fR(3?n |0;^()(qဟ=Gؿ/.qf/:9+O4Nc>; ZA8 fѺ$a ¾5\^u&f46zuxgUZs+-CA+=4ϳM J /B>ɭs֎Ƃ+6FcO>  L:>prc QpD:}gK0$>f|b@ }C%D12 1M[EU[g rg'. DW FXq|O=qN64~56s+Jq縯<^aWE?)~<를{YF ͊m3KX[~hSSfٷJiɦNYvd^κMI0L1AA5'V-&ÇY\v\fn^G"?6vS " } Kv51)/ކ780,V`^jCj(,Ii ߬IHS "F2f^C }w,݌տ2fp5ưT?5fS#"4m3ڳXƎVWƨl5.C™`($q՝+DGL ?Ro~"I0ۢvLQ$BQu]vSI7e:b,WǧWwam Τ&RnAQ=.;")tu;K+IHA [Gd0'2 ޏx=_*G8f֋}EQK!=kӪ"Z ?]eSg7($5v!O;˯c7mVvo Q_~j?SIy=Pj%ToW/4m+3P\±)ɰ )OO[tD(װc>f*c.A]i6MMnǒ0rrL=jPsM- m*LWahm6!~D<8zjhÛKq|ycZ@$iŪ6"'! hv&. e$WAœGt}%l ^.@A[=׋3mȊ7V^͠Ċi!w?tœXrZ EHA,Fs/.MIr]Y.0ęaiAx|2yswNTŐ{ ) lWx{/J~ޙ Eys}KaCBud6OQʮ=C[S֐ݍXN}R vTzchգL:,;i)Ӊf.$Jiv%ED8y)ߵl |<̠Z%l{;'=pHg|)1이\3rxR& '*]7Rrͤ0jBv0~Zq#a3F.a\#iuA\' ~e,%:vHW,o &pGʊX/le5f`=0Vͮt]s^3&3znhRQZA7.shw ~mf!iʫujP0גZaI^}QLcAk9!-Ae{t#o9oMܙ4,ыdKbxt#ZoKF)[ .g/EhXU'$yQ&YD@1C5˹myFзm2/USQɑVBlZF,̂ey\s,-7%W+ nKv<.QuŠ!]"9$ACp?ǕG-x!S>iÂ2=s-VvG_; #rA(wS} +nDA^C7"\Lfʕó AEI&nnv9&|38Hy鈄łum%.< ;cxa8 IMN}`)Ǖj$֙6"Y2H&2wVِ󚨗Ech1[V8zb;k Uv|IE2Ih I/^q ɝivE8 +qd[C '6dQ2TJM ?HZjip:6کpi7!K<17/UxJLF+ƛ׆d' n`)Ԯ aJ\U&6^ZLe0r Lx24w3yG󽽩|(ac>ɎIoljpyS,i\ׂmGW}F$Ve9̧yN' dI* ZG?ƂHk$J<⽾JٹH/m/CdާK7qI2−'jڷ?Q1_ Wj 4v+~dd>#-nVT ~Gasؽn(*jT\xts?!%v.9i7G\o)bN&´}hh,$kE;B vg]6#ۨezܡO "A<&Uk2o66tU&HZwt/:^ D4*-mv_ȈN}%=^HQؓx-Er7[0+32qErdѩC'%`udAu[<-DS1]GdžlXbV-✧~$fv>"žq}>u/f=F{wZ3cu9HGQkr.ViQSuEi{K{e=Ҹ`"}D2ÛwGⓓt#a0V[ tΝ~hġJʶYZa}hJWj1K"#™ݏi})KޕdrG g2#qZo? c}ncJ"KvÞzvW(9ه1V, S}MIޤon.1t5,êy}DQBrxIim7|dCJp{~QMbbeǑ9s#nd}UjfYTGaNIu``,>vUB:U^Րy2@hٶ%BGXbf +W\>-JA*C&:|SϓjCe Z"d> stream xڍP- xp@piN. 4N78$8w .ww A;s{U_-k:juV1s)X 8j@'5FvrB@ =aoA';E( br<@^' N Wks"@ ;I@<-`O`0cyYpك@"f dPYa d9٠NŒ,7k@ vr~ Pك ae'' q~pOe`ȟ  ;_޿YCpA@k% PR`X oC3 >9 % =WyfN0g6gk%eI 9ﭵNux%XXC-~a vt˾ B\#nf;%7T`T r`N.`V[Bf0)O'l4|'kw>߿OO2B<1c*rJ VN\b}`0* /_YgOmOƮ`;`?$70{GrC[yeDZ(B?VlnbZYi vYlb 3-⚿V:[~VOj>=OC~ڜ_) 1^1Nn 4'|Es$A'Sy> >9Y|B]&nuqrp-Kc|7;o5#s[_B k"-?{j ;{'V8=ŇA>Gifh3P3@J127֭7t[I^N-.ȟ+W.>w`/mH2\.P{AiWm}g6Մ67F3/VMJΪ!}g] J޵[{uwP̖v<]kf_]i41  kr7sJ. +Ko3fsTӹDwhnѬWaRϜW|L %Vl] kpH}סVf'@ =Yfz|c'e&p<.[0nrVM"D#` Cj߷Wr@UpbuFvHIJ?liQ "6 ߦ fYpw )~K \C"?SV{Ժ63kkh-$ĊK$-!;UCJ4`v*dmB:^ײҝ[a67lGZeM1ܹԛû~}A]%%F{P2PZ|3ۜ?_mLw<wxs1΍X-}bPNJ_QU- ^a/Gѥm/"4n@*NqsY]A wD2]+ ߔ7 aa +nb5 _Rz}C_"pq Vg3l=Eoޔ;T_1hӅ]}+ulS愻t*,%dӺnc83/)8#,tQvqQmMUE'TȘdC0&)U8U%!7LVU/R ~Zccm32dgERn4R~zWsAL9Ό`נqkWjT+Ɯ;mpRUSEL]ҡhW/U3םxL.7W5&tٖ3I{B%ĥ3Z()<0;99&ydUhi~ݖ6Oï{IQHf_qY~4 "IfqS,"\qK aJib݁Q2mpU+W##wLX+Ѯ_$}f,s%Լ˙Q|mNw]>Gj 2M{D/緇qPÛ^_onWsB;W"VX.GRHD@Ls>+Fa [UdeEu!7}q CͲwVJ53^ʸ$ ٴ=uW}4?D뵧ˈL8nMRW-.:ZT$9(ط %2rW˽^6 BhPŸ%= Rwi1lk=*L&j>Ƕ`xl*>d}1j2PDϤ~R}|a8;&ݭw`_9! ׮CN|NKʀ 7oDin奮5M%ŶjE1Y/NE.S7O'L|VU;j7 ✍lsͣR!(e;y3 $Q8'Na9Jo[yie^ŋY}xȡFK)מ ɣn )Gǿ_yS{5[C??L{al+U[< z~4CSL&: ̓T?2 (RVAlMuGf3(H LJlEvj&f 3A; 42dn<.yګ'{ b/Ə&K|.lg.G4g‚',=kРMY}I83}$@)ѣU}ldEx:Kwĉɗs݅lNh e.X˫BgcJ!SpYm?n"> }7(uW}&9F7^ ^1sg~Zh I .:|JK8N{q.+YHg8z2J}ΓD,^Qh/|[d牾M;ũ}WsoE9o`XI pGq:Ȥ5F).͍sM4y+PՒgSt/u>___醨ܞHiJ=DLMcDW 驊`ίr7 y^eY@_|!ӥZuitqz?1|BS&DGaHEKA+U𒗪]]<1M5]xGxhPk̆u~Ը:D^~G)Do)MՀ 4T+cZB*܋ M^16}!Y%ɜubd*÷ Xvx/K۽eJc(t n\%Y>|):Ռb6SKG2gBl6Orͻ%+ngP&|rٍT|f4*!ݕf>Lۣ"U~ŵk_,w5Ҕ3غx4\gwe h&K #ɇfJœrMgGau E,0auxi?*5Z~CWֵ$a{6څ ]jFj oYU܊WÐʰjb ZϦY1x6o_挪WZ$Ղ!l^Y3iy]slȒ_ FLL U(hBhdhW.'Z0҄rP^ߺv: 5ԃ ~֮CDNނ8G%q@00+D\$.WH||=Rp#l 3ACޚ{CcMK8nқ=RE0\W`ܔ]9QaF!m+MPٜwkZo妽u| $z4v-r>"L6_NȪǔ5!2G E@LFmxk!2}?Dg*!J}Hp&.8h;~wt./lZXʘn &oIitnp [G݇(IMux|H[zϠNp#v|kb5W@s J5z56W2!SsԖ%>Xydv%!+\UKY姧;ۋ<15e`J&7N1vfxM"b5ϯX֎ɯcyυO}hKauSP`YnNyQ|KbPk /qoVf(O j]^_-VĪ&&F=D/ Y{rKx2ϡ['Хh )_BN_k"}|D0gяd\Vby֓xd\.erN1Udȷ2#dClǀI/Ӻ`Fx$u [$zksrZOFczxI)opf۹aN_oԆZ;[/S)E-?'T:>ڨf`X+W>==}NT; <,8Ї@?jgG)BSn\Z݄DQ]|E0j\ӹ-q-K~8_!r?L(}73ñK6Y'6K6+5(~kN<~B!\<5Zú&Ddj+L3 t[XSo` 28:2'K654Xe/ b3yŷ'guk8DKDWF/*F]-v6Ich3k E1ƃf;3Ji0ӻbjq4ĎYz&݃F]@Ew#c_JX #mk'՜dP `g˫uyaiIՊ}bDO=$W]Ls}n){7.XVTVETǽ%y"}w'6-#"`3ݺMC[eBv}x }];Y\_%*\w5q"V7༰YOi9ZU kSۣGDL11:T$+D]'3+f&|6лyG?=`ߢtdmbDݼhWbpĈX8 ^rabPJiP8 6FW#{S/;)$FլtVK .̒U#$O~fgj6[鏥buGA&4 ;%S+7)*kUxս|6g2׈ge^^^y2@#G,!o|zNys$ -Z|F1R_ GG@Jψ0C[oבiwsoTs%o#lI5q8Q.1O%029LhU!j L0YBF=E28vҔ7묝kEQ/0HU욎Mr`MC`Ʒm9nCӥp%UAÇ2I/L6KmJ`~0iqsrGiY!X: Բ])Zx+S6N[c镨6S#y*X%s:b/sʸ$E3[;* 3U^3b1)O![9eDʳcCqP╴k_j{g_2"URRq~djT}TjƣA_(]I]e?ǰxIHR*bЍLػN$뙛(n;F=)+Gm\7yFl7JL:sr w;ޕ"ـg,՝A!|HtT受bT3V[RV+V̕Yn& *0:֒ĖV~f\N(^y XhgRq16%iKMc "&X]c▮\me+bͥ{FLUEل_.I>ٴeƓ\Na?2nhFv#'3S*z/$"Njg.K4BPdHnl,곞%K;rd6"®5fQc N }ju\v”۳=ڛ= #v&tGSW>X? bDhDhިC*C5&<#ύg:+Qտn\:O 9⎩v\nLS2&nzQ!=Knɻ"R߈O%|&*],MjɽNVH68 `F]=zvg3x_ 5(>@(̙ ])Zk?{jtɌ='c=O7]ۻ{]ʩ^bh3'PDU֐73yXG^=/{o؇J^W*WOP-ќ.l,zW?= Ss:^ rcǝ~ɱ-)qw>5UU8ҺvVRbD@p jifb endstream endobj 207 0 obj << /Length1 1357 /Length2 5996 /Length3 0 /Length 6931 /Filter /FlateDecode >> stream xڍVTS]I HG"EI{UZ HIDP MQA@I^(Uʋ[Y3sf}hf)q`xIX ile`ic8$pM,'ڴx1 4Bdy% *Hwš`,O<_KLQTTTGH 4=(0CH!rU("* D=pwjhE7&Zy"q̖>$ p,x6Rh Gq6 j)ȿ+; aPPt0D }@S#)|^Er0xhu#:. Q7BEqR8ϯA/YAh<>-$#z0Xј@4D#~ F#ZyMmp*)xK*8% Q?s`E&#X #> o+AG7* ( 'O1G'5%"q: C?v_Af ( # M|i| hP,  DÃ~3Bc 0 ,#Ҍh#1%k[pxzuA:ORCQI8*UEf,v_=ijQ[dOm5UL]yqKR=`l]5>^I+SPoH s0UvN~]2_~!oH{RQu͢a\'#xI>j1 !3~$q@]ÜÑgVҸf.!.N>=i3Îq2S$N 4 ׂIW^v_\D[ۃЍ-H{|*QvܗLnyui0WRJ䩂G" /r++]NޙWJ+ 7a0~ށ."d \Dd #XU:Ohܓ% ˪npQHl;E:BV88?Tz{ y6Ll{_H^vQxgw,@2Zuo66Y4+9m?k3wy!]ﶴT׍kR@-YizUS(oB>,vx`6NGߗrkA^+GdEurYj?0\*fKlEz'պzmlvmΨj.Po~ݦ0Ail2J+u_˝-zL9~%"_n58un~vDž\yT!7*<'aC7c';{`/X)i̒ܿjԱ6vx2a@3b„DlJ%&Dh@ xʿ˘AښN^=3{BC(TCN>Lh|jVs 6j:$kwK'N)%;7mk9Dk|Ydv{UDž:kqO:Wce6gg=o$}1%o˂1q/o힟Av5Adm_g?:Q l-mZJݺ;%m`, E|wPVB2?P}>*"nq=]Vܯ%2^Jܜb Mûyb2#qӪ97k: y18_tdEt$ s}2UF&7`^@b0\,fO]is)K^S}l@6\>MyVoflCbs?GS+Lk5bVƷY>tMttf>{|,^%l2K( qVH}iWoℱM\9x&~CS̗0ǹj 4߯3N;w)z\-R oNw08e S yV.>^nBKv[Ÿ}*e/Qvb C3u[ 9jc5a+Y92[s_?S/PMzdl5HJ.?9e/ DGm-V[ΫLӝ;tWTG&_/Wo|(L½P^E9FތLmgq4T;^MOQɟO}Ivds2W䥅KM9oY%Ab RA(Y:e6@֌7>2`CRyGmxJ,l,=Ӎ^F4 ,fQ@J( uIQcR L*m?S{a6]Dъ/ $ApchcGy iơzR ۑMhէȾ]WDbVQ<^P'è~e:sjJ()h_pP#Co`3n@,EncELyVӔpʖu%~q]W:&L!k1Q\x5lԤrEM;mN1Y/X]aS#WuTB| aؑ799U #绢Bnϙ+3!kli`q+6cDis+b,+'iQNIzOf1!EfWP[X=4Idu+X +z핗xBgQBroʍԕTFӃB@m_jǡ'NV2UUew!Э;9hžs7fn21f3_aPK锻٩ߑv&c KU1M[(*W#=/T[˧<W+>*;*Ye!7#Sa|n%f@zrơfX @KDx?)P ?J*R.ln<'9'YQ?$|RCoخt f5٢{QR½b|=Z[nݳl>׺fr: 1hd=H͙@w~0>5(24~dofw6&͒REI˜`h=7[@ȗ&0}OR6:=2E-j  p!^ -0`$:&IH潨/gK1N¿=d5ߔ(jI -u9Xӻ_ ^"ukO"s( AERc^̕4}iȇ_tk\z7ٌ>66}KХh;l/?SH{B[o:$ʢ=x"v;oӖh˿UfykiM1A lK5rYc[T1*l?m?/l=yOŪy  wH";ؔT2өmwf dP\Wn6QaajG.?ٙ%XBGRj{6)dw\z6qmAcД:6\ܸ3,jTLE~Oq0ʋ:ݨⰟ=4hxo}K@~NvH&o+؎뚠NJe_/5܊xyk>};WFS}`㎱zR-] d1r\a~"hOxժص<&eGم;n80<=HuRN_D>M]nbPf__t}N1v՟@W3 1עUL¨EEސGӁpi Mc3=S-Ob&JJT:_&kwH.1V3"kJIU~ƹ)/`fAf~5|c2,syTLq 7$ =6p Jdӡ&tfgkpL7cq;} YHcISǔ yn=CM]g]Ni l%-MK4 ƾО Ƿ, Ibpf[i:-#;AG c)]ʫOKXnl\UjNכcJIZ3oNN7R1I+3]Vpj##ė[st0^s{l+VO!YUO*[ը:tG]>mSzQ~~.vϩ8? 9! M|">\v v'mV^"k@'7}dU+ݾO"MveJS Eˣn *ŸqKBeݕ ѱ ̾lБov{-l144ƍ\~1쒶2[gi%-R Vy4`H@4Zl@{1LSexFqH@A(B:g5qZ/oʠy-zDYj%4ꒃMTՂu5T;:A,gpl Ov\JH[ [6n0u*]w"R} *%%ɢ`i#&'{i?P>=+0<[|$GCG+#R6<̃yۆg>S$)^!>>Oו "RTv:Odw P1hn{ju)*,ÏW_,WLL2b[\1ևBsKTӫ|a Ҋ/+#l_)/Q a|JspBC]UjrZC73Hr꫰g=2F W<2tV]p57`{s"5y V~v-6}p;bl[u7;!F3o 0Uh6m}16' +_׳?J-"LroLx"搆 I{f_0Kl+oLtqShn:JިNz-Kb\|ozЇI `E@R@V%#+=X@s{#AknLPba[o$9j9\)>Ww(gXڅ%1nNV+R͚%1ܙA٥DBk38 1KöBo׊5p (p9Y½^yVaUQNwFH;^ W_iRycUpENʍ_7_ z 2EȝFGf儎{6[B0|Y^ '}9֧ 󎂳jg鲂 =2bxhU1US!2W"yV/Ef#FyH>ᤘ)6DZ4>!ւ{yXF! elz7>@9'mqEH qZ[=t݋ 63'w˿[\v^It2r/bjdzҶA;8ru.ZPVcG4bIBcn,f)+!lEoӗX_pGx͟SE^O}>Rra#T endstream endobj 209 0 obj << /Length1 1445 /Length2 6505 /Length3 0 /Length 7497 /Filter /FlateDecode >> stream xڍx4־ z  f;Q`3щ^#E !z D5ZѢ Ho7Z߷fyg5zPLEmCs B$Fp 7NasGQH`(,`($@ @ 1  MDKp(@[B$(Ww#ߏn$..v;@m0F Q8 R-rwc04*v)M`Ge0Dc0@!0$⁄Z]W/_{? @pog0rq#}H=h `1`$@`O0~ ԇ]1h4F_aǬ*\\`H W~Jpw{>Dy!^ÑP_e@=\p7"7D⢢" 8 rcˀa?4{ !$wt, k;`z 0( 7w5 Ut//$@ (@LL8z`Xz`S򿩦FW{UN<h~}p8Z 1ǿTnkp$La^@ٰCq"h4`H k؄DD`ww ؕJ(HGj ꂹ<]ZA8/@ x 0pWc uC A-"l 07 B2;H9k=g_{Oo%~E:` 5Lo$blʟwtmVBZGgEa?[ 0",zk>3WyX/@1k*|v6csV%̀%iF#OOZc~Xa:`RGC5()΅6F?o5&F;ޫzƮQ 9HZ)§cԴ]iOO̵p?> 2zIFH*EKQ=렽s #:Ӓ{_$!6ߵtFiǃ2E?P*b5Q6O}\%WIN Q}0Ovl!O^թE mihjTFk SӀؙyz2ʇyZF> ֍ndj|h֜?:IN7=1IyRyF{(–_xÄ(kzcXܟO TmFOj}cZgfWeFjC!&uӹfp`䈵 Wb%'vrxSrA",9RG;7=aNVuTr4=qYPLD=ܮ&2~tԅ&s]!*e߫<gC;!4jMJ^zi/(ܗ@K=odvs8&N]"&ac1[nz'W3"z] oE,OVגxI\U{+T&$B"},kjeݳT*LLMTARs m/##C^ ꔋF$Vz95fK~\.;ht`qWVv"֏W u2Uk.]O)~ɪPLF#WvVi7HZ4Z9 ލ}OQ18hN8%S 6xm ?Dځ^ K&K뎌c_gvggvەܟT-rgϏAWHoTL+zxm$v6ԉmWy.O8}%&; ]V,bC#tY/q]]C`&cdK\xG쏚*wSN}rTr|+e*bmgr'U^j蠫yK쯥o2~Β݂ CxKS)&oOpjbL,ȖT\JPtBH G3cRvUN-S]y+x .ldPTOr7,#n& #w䬯8Q\\z2KC6Te?^QkYwS=qv,;ebЪtp&{\?>a$Q"5W/՘@Iu-j}~^}c H^HUS=0au= {tSoCE%W!x8WUsFϱNE#VT"Ѿ¸=:Djry5oeeДW'vbA:ByC@ϥ@9S,a'%V?$L$oR{މJn,y=LN"qtMޒlQ~@Mwll*4Qz,"QML{6FG2w%N5yI޽:USr~xd&V0vh^C{+pɟ)mvh& Te p5'€ lecЛ ( R!sQO0ۃ"y&˃%5| oΙbj!Jz}rbEU D"rWu=JZ: yn%"=(te@m$m7jتGwVLc @˧i()_.Bֻ[A43o$P[j>LqKe#Vhgьr/,Y2*OLr8z5m5>[9PJ8 ~ .p1UԲn T%)D5Ɍ"U%d;13ƺÐ^ '!Eeb2Φ? Jp*B_1eQvJ֙{:͡)"e21~Kp@iŪuV ҡzb] F2~n~J[edxlA`z|y JsΚܭ\LEukIR|-CBYG q%I?:xHkB=-x [W96K$w,چ viegoW]cq\ų) l*;}ˇOYZe1UŠ{Y+ϡI)$dl[:6Q\ 9 ا4FO도1eW͹N]lE_Hr-h'bspߠA9.^&$TKĹW=D{eKhRF\XDPtV8˽1GC~Ӈ7(5nq5T H{=#J%OuEVülF1 ѣlkc?.ŁʽܒlҗiLgUvJ o۶7\ES5/$,0JeLQ(0;͋s{!sJBuNGlaI2#%m){<8N|4؅LX} ư>3ftzXF'y<ʖTҎon 3kE%M]Br^V&郝[cA*?6Y)=ˉu3=+o ]$#fԸs8k>#0P3-wO_uSU >r_z~KKM◺/`'V`k޿.Wk ?4cu=.ZV93`֗֓oL55UN2(~Mt'JKa4a%;mi+T3i<}V{6Y\' 4D@4K7s.φAR[Bu$iʰDS*t.FME>Ef<گ2Dq930z2P--?Թ~rBExof"4N-M3/1h<+4(~F١o"TX}^]߳fH$̜|q~ff&ngKz[Fw[E*1)YC1KV`@d .~B-\Uc'zf#h3LE-(zNe} ;o$4m\!#F4qs6WdjiLU1MO>D$^2} TpyA%_(k_Lkhg=/bymLv@ $lei4,D \j\}-QC(@Ϩ ^)Nkw"Nn[d:eu5w(:^ߨy \p2*l,oBȢY\! ? *Ʈw{hxZfW<,G6%c7Z ^>N}!w66{gXҀ+W~(]d؀!ݻ3Y tqҽ}'@Zm#B l'R-@!3Cl7X黎\jqE"$,թ2ӊp~e;'q{05xxjkX[.o >՟';@&CB/yO)F#+>3P4a3,۲>m3iтu,ɗ;Pw +1\;@!a3OÓMcϩ4Cx~2bc;J9*- lQ0Yb ڈ47ݏ뢏%t`@3vcyٜq*ē,˖fDOM~04cBH疓0x'aoE-$4?.C걗.)%+Sjny 3m<&Tp]T$n JEĈZ/VDm>smKSoH X܀[dT7Gz|snwuҮz=OJ߁p$ d3=k?{ endstream endobj 211 0 obj << /Length1 727 /Length2 10203 /Length3 0 /Length 10787 /Filter /FlateDecode >> stream xmweP\5܂ ]!hpw5][prsϹuZVW^OϦ8iy;9X8XzvV.d)(m@'' qvغ- tV  @x,m.4@-` Rj rz9Umb[Ae%vG+п8C "%!bӒ;Z; E--53f]m"sp@n _)8ZC[;'_~2`@/qprwT V@G$lr:Z6wA(C毂\eA^@+u_ɭ' ѿ=W+#vlzZzL]2+ @.V V7{C?;__0dgגe(II/ '?t-]\nwD^^X ٥7ETOU1M2fZ^0Z]kxN[ln*\7R'Qc)J*mj֟4 Lau,Ua/2WCǹk`qĚal$.81aew1lË-a" BP/hMm*" 줌`t~sX>:sbu81_ngd9ʥ󒲛0^'/U0)x_V;K/^wH2Vɯ6*<۞4p R6/,dž,ۖ%07i.cln%Xa_L>໏\{AL(T/%3,60xs7PPd~KT}Ȑ հ5W.i%7OjnѸZRn;/ب2xcK@2k['-i5>{Jkql ymƄ^sԫ`u/x+ܥl(=&C?mg2tݣFT!J)׬3AXS|[٧6qԒjC.DI,[ $ѴayB- Ա|(hh=ˉ[4jRy9?",dv&s~ Z(dn|D%p}/yxŸv?2~+Nqu!:ěmj^}syixWx.Hա ӰB.xnڃ6.m3 02f,G)%b+J-[Za#ڸ_#YV{h#QRz7X{%].u"7~vV/HtÞv~h9!q kLY(đ9~TA"˳fWN[^{X7y=}tBw0Jף6L.Tڰ40FciI)#+S腻d o'8Hpu@KT,tL5ip 0K8j2>E~H8kH[?395M+6L:F^InkZ#ݘUv{Ȕ1Zp kNC5K7CYj\)*:އk( hZ{,Ĥx"Ed,5G5TF] ՜VZϺMGʶXFWbbM,7(0]tV9VK>4WI="ws}[v~Zv"a0 Z sMF.PeU e"#:V nabѵ)Y{. 2!aȗa[~URЪ͌AAv\G礏Cþuݺvg{!aeyw&"^LdР-m&RG$\%0\IWHYGMh0s> \bferTI0.XصȞP'G4BŌEb~׫ C]]p- ՆW4?gJ2U2Eu* c}X@?׋fı\w|R,{Npt%[ Zusrr$5lU|03o ^ǐ`# иIKDBch2O|>Y N+xEy;~/~pgdq xFC;˚vt"nNaSJ>w<7*BݗJݠzd4eOCRM1xsȘQ(>lƭcCDka$i @` GB9;7agr`ߛ~nOy>naK fT:~I,kr0mf[zqwF%bg/5^AtU}%i6T1"39$A|\戒{7zڌi7x tA$Bȓܖkm;Q^zO}yU?ɫb`gsP GV..(EA~o9HYW(`s̜1T#w Aiso>Ioޱb*aHvuAsRUcFXL#Z::%ՃΥS2^#&fO~04w_kaF8w|Zy&]QRmG?6i+me\/Ypeb$Yz31#ik5N[Ol.%lɛJ8]FZX$n%׃\VC}I9Z+Q7%9rb&?X'n2A<6͔̓Gtiڡ6kc./,Z"NHsW=S `ڀ'rkxs2jȡ)#{9rLQBOR#k-[GY1!{aJA*ӭji`ơacbro~bff(P(ͬ}o v`VoLY6hB76hH? ,y?̐p#S@wr硸~40.o8>&v8ULO;f wjaCՁk|6C GZ0sv+9bSu 3祝S16'Z혽sU|3a?mhXf]f{6b,جOQTH-Ԥjdу]A IQ.cKs/)֦$2I-:50By\iqApjzTH*2;u*<'M1\GC8))H147>jۼ [$ATj|#x H8^+ A-TнV=>0A?^=4|F"Rn"|$9qP)iwJnUW$;zj΍e;l) ȚVXWL9Q92kR. B2^yqFt1oFe&z=jD)JnͼlO{8sӿr2VUk/Njl% >Qg[&MqY"QW/AfpKyԓWc.ShohC* zg1tHf[S]@*9?mTL(UB=ͮH9(n! K>l RO,Gs;ZG%VVygXGS::Sgf"A&'?V& ڏw:o_bXbV Ä:T ^-y ' pn7}{sEQ_,pct˂XǶ*}K"N#Ï3p4E`2d9阁5/noizt܊`@&~ꕤT˟JY.3*Olow1buWaPG|:7ƪ<>tb/d@Kѧ7sgfIO%"27ˆXA"LhlmuȚBy\$9D:/[`V*>ZS#N^bX3\ѣ->eљ@oX9t3iu_4IX^tRoҫ8)%Vp) < G~qhJp'\sI؀;&uGAuq;΂Ip< KG6(_{x|X$''K7oOxJMdY͐ /B/hT\"7|QK]"3)@cjAX@f'侣3P;4ZZN12:#*5]aD{HB1ِM^K xjɜ h*"&˹3K3],,vm~a Ta,e;Vǭ݉|ԍh%`#+.U6gڮOkV!<R)Z0)-?۶Tlgi,/!d"jn Jד۰cDKS`>*cya×QM/4!n񴒢ѷi^[*6\}{.;R;./k=$ qY<]|V@zYfJo[a?B vniCnHW>ڪRvl1(oᮚ6|h}8Aˇi,d6na㻊Z P5Xkxnj<^?%> 6Qq*Vf#h|[q~!+SWVV mLxA#$?ux!uO]Yeiȝm2AVLs <\ 71FI;$,kvpBנ\mUE:љQ k~:vC>R_ }!l\Tm0|1>edMGȬz1ZSAd G>o6H gn {)u1szОhОc`RNH;i&Ne?W`f:Z$ѵ^Kۻ%z^ZY(jX]CD׏*^q.\L2wIb3p[? 4>7|I:  JfMomeGL!:"_O>|}TEK˭;f Wb8bFOȨ@pu.:-AêF4xyբǚu}(_Ibo.ϯCVY]'XZfa_< iTF hs;]'w3."o/W:S= mxm<. 52ΐb2͗IUVGB;h@Uqꋼlj5%#L UɡureLNEJE]/,)ڛq-/3#F=kH mɞ5hL.$3=Y'\ZiEJ FQR^*{ƦT a]sB,MZ\'zW4 I0$~QJ]pSH6rnY4ZHFŔ7$~뵛FH%Vg*#>.lXd)PgWv1u˧<)c4 3Ћ]*=B#ŎzaDƤf7!W""/݁ g6R 668g1X B$fQc$K׬yeKwYWH7u!=30)9PҾ1J|_i*/tsM4uPY[b]pچɳy/z縈"nJ5tض~ &NocHDyFv~zs#4t[1,ۭt5pl~}M*ΦPuzZ4C/-YJupW%n4>R)r&piZ0vevL#~ɖ~K'G2%eCƿəh"'DrE#"4<~А(RlZآaoOI"РK}Wq?@j*Y{MmyvnLeEJ IFVЛf<_zxA m-v0Fr?$ﳽeϔ'5ܿ20"3DT=zꛮ־)U-FG@i%Ҡ{~G b"+[X\qS91}FˠKP J{N_pHHfoSoͶy1~^ׇnv VIg4Sy{8殺aJ hL栖)\KUKjiET0AV{;&;R$+tK~þO/_X#7OEX4GykZB;g b@m$51Jm ]?d/ 'zub9\'PA>Gv{0{edV!,g+lq̗/k_Q53;>!lfK?Y`#X|zp׭NJa`고k,{F߅zL"8|OZwU3lAp! 鵣/7鳖m 7Ri{K.|7Cm: _vlհ&gHدY w<84׹7z.Eie aN.fYq?rYblj3V@sI8c*>a T Q9'a<]7+6jH_kFS0n>66k2г:=YaDgtJƇ)w\nvȕgI{ָI֣YoٮyŋBSYeِT;#ZTS^7l!LHo<0u#$Af7s,Z_ity{oB0#"O*HԞ'bt.H3}=,]̯*H.8>x+&~V K J%R4{@ߘƣBٟUkyuyj By/J|ItMA/Vӛl NόOi[ZΓ5 ルVԺׯC(Zw=NyGWc" ťa^ X.RÍM,8xԌKhyr bR10z`_ N%5tւ~\/V0-=Gkupըi";<+?Qp : ; o6 Glxf{W:qŏLlF7vxD>\[(|s/Y =|N].Z=Q[6Xg4ϯxC"$,4yL&boJC{.G~7yu^Ȱ۝mkW !M4XcEaWZk`Yb7gx@9R*2Q05HxT&\yAxuIhk+>7M嬄Yjhx` @oߌ9mQh;eA3bqX4]3]_⣃nHv(m0=M7HWn*Ecp/tm-tEK"$Ft5uQ%R %ޣQ7?mσb M4w%1+hkOX?H:OB*7>bR/=DL/ Hٰ3-ܿXo3I #6cߗKN* vdy{S2pWގt䲼'w@%T( )y3P~Z<;f/[BkȊ]«̾'&a ,)G_bLG湦մ98!skW3&._Ea}| (ul.R0:g5]l֜޼.9$k/b x^:iN:aI hLR > stream xlcpm-vpǶ۶mɎmɎm۶mwf̩Oի7 #-#@ILH@ CF&hblag+blP31(Pavf #Ukc  G9UɅх&%  ,'!!+Uؚ8X] -F&N&S;Gſ49[?Ll2ʂbrQazea1@?N\M  "E:'ad[9 M,la囄?KrG)&]e lLv6.&;cG[1@l k_eH8㇠?2pp71prS7fנt3 ϻZ{߁,q "J;Em-lJ8jh?ey/1pvph1H7,!!;w/Z&&f-3#khbofmΈ;2ohhl8촾 2#TŠν2NL!}3A d4Q2k1IoֻB[}5*,MĝsZ<$KfyC)/8c~Y{8v£8/ o8}jYkC׽5]2l=0ͼGv `jHfJQݵ\H\0rVՈj<4"my]3R U)xmi.}em)|t0v#SJbdv1}T|]6Y?b(sO*,\fIƭjkDlQHo1p%櫍&0gLJ5&:A0&#B'۴S^31h,XK,TP3u %?EUGRl{81*HT ]ʂQ,d?`5 9NJ<oH];FY325G0%8sVΐM[{X2~}ׯReKh]>:a-'w\ޗ0xZ90 M$[4$8_&֚xR(!q>{ GcVorb Z&GY(5<6U>7pMe25ydvP&顡]G%\ @RCH3g%7pedfCP.u[`:cb,TW팩gKm~-?*'Sư:% a:YӋzAʐM#v44j󇈒E5B@*;oջ]96TQ%d}dZ_3 [f0]Wl1bzy4.rIoΰ/okLv}H:.;IlS5/vB5Vl⬈(>.rk='\oubM!KlӢ 򳂞C4ȷa aYTY^lܷ҄@-N/<ʌ2lf>`/31tA0tN ;N{\Gdֹ}HMXkqKe%"vYV g;O y!p0T0RyNo {#A?aH}F^wNשƦ@tg׍a Oq46EF"{Y|-x/+ie&MuS`Gd*pJSqIˤ9,$F %.k|gMfΠܥvpta[i+ApP6pJ;)L֘d)]79 I뎈XPP)u-! ;ΟB _ F/WWUu ~=zCOF-aɊzY]i-o̯$ CiNO+_ ٝG؉r s$<^ !no"(Z~m&tª@R064}U<XmDj`SMJfK$")\+J"8yroiH89D0 mN>Iwԓ:=U 58,d$wq ;_|4CUT/TV,'Z_u{w-Ðvt/_Z MD'"jB4)l9@zÊVM͒i.I ҪtGa.|+9fRy1q'vȗ[i, 6 ; c^F#5GM kAHjSm.u}yp DQ\6X`IꪃCtONU9S }koy/RoDbHe:z"r/umTs0t~>.1P@\A'L;÷)ȾȼZ\$)pRiH^'q/ʟi Zrzwye( ͪ=Q{~4jԽ$k C~ 1#<6 $>ybk =퓇TC|ܙ#5-W4_>j. yB-SsKvVXPw?}X+@Dy0 =Ŭ$̯8o-^ $)dRFr*tͺǠH5 ¤hJ jrwhntď!!@*1$ѱ!l8[lJ`}#]Bc]?~5Bq<%eVRzZ(?:' -U MȦT$EKjP]$_}$1֭ JN س /02̲fll uR/*R$s]!2{صHZ!./1@݈BT(K{^uCuQCFZrKݡ4vJAm ϻT3# rT6LgnҋB9=odꓼ$9MG8ft)52*}6!>Z@iύA@gTΎAJ+Jí +&\, ЕKTȗ!&b)O c2M0:s>΋W:LA0\PZ\'CPc13Y+l[fsd$a=s} *7/5A9D靄'uU"uto{\ݵV"1W>gzIO@L9(emFtQI'+iB -{!Lavv#9^O杺@ʫO>ng{jcqcV jkR0f \h/W|zBO _wRC[y4BKYY[HbdJ )uEƼZx2U'laf5NF움 Y*Z(V 29C`f@KVgSn@47 Q,'/׳tL>I) -=ؓBrb Zǝͳbew2?[ 7t΢0dxH j/{JWGrMѴ~AXnh4rfuW{O)lin^crB;n 0|) s+o` F]] &7@+UlDwcIrv]Mp{()FcŠ*XHWچ5Jĝ=,Ynj$Dr J^$z0dP?%'`s3uL[v`wI'u Z&Os@Ry%hld. c^UL)c 憌a``Qmo*)-1 s}$w;x <]rdz@x'i+:F[@$ }+@15/7=@SX9yYTSd2*o;gohᘁgGg#o" EKYDY^Zďom;U6 Tw.ƹmsoMzHAcz[G:mYktۧ%m? eGݵ/¦/0.Օ30SmFB&{6hZU6kg5h&JAG[ 9-妇xfRd7vߕ,[%xSZisN'Zn j"lոw)juZZ'8LJk/L?y™-]cET V=*RC%7(}syWSK5ThO[w֗ ]v7mNdnK?8s_芬яggu RA, >%ۏ綺8]5hז>#{hϟ\9*.lfܷ؞_#c&شH3Yv) S?Tz5uI&q:f -E@l{/3||F clֵ3@*;bijTQgDmlO`3Aᴲ`s42 WճƁ ~5tm11P_P02uS$CPoC$f.[*u, {<(y\$f.֊gzTv jᢎHW8hf ᲮG؜er* ik5--*/z7k^(= (l ,q /K=%! zڶ7R, ga.|/9;D8ڱ.~d:N0Ԧ*N4ډ S,T/0վo2B]ĸ0%~j 7t/fD9BXKRÇqɛq;+xh֐DG cNf7eF'M"r`7 SQ( csfI8yWŠ1 Yi|_toLpp-108!Z|B'*D$*ˀXݯ *Ap!菪dvAgʳʼHBbRav|mX!\5 3q1^zmg{M4TpۥTɿ`'{|R^^Zҟϭ:^ES&s$6IY T>t!A/ tH@;Gt=1ُ_N5CK(ͳ>&*%k(#憿(8XoӚn|+qf4PpSt>>!fi͓gK j9C yv=M|;K_U7[B +$d91YLQ+ft7pIeE4OՒk̿~!N)ў [*_Y8nx8rJ'ZORy?ؘ4$|&Z>j}"~ '2\u#$s?'q=͹ 2hGh*P<sAZg^k \qT7)Va`ˊ_.Ȱ"TS 4Ŧ'ʬ/K!=bǶ;x4A`4b6 +kC9׳2.zr9cQ(LXU9D;\sݴ$6Yl-de.ےFfmxM0FRkܴݩ|6-A@ NPKLj-,u.,>s\#n1,!mϵ;- `F+G:P4W ?r~ `:93O`~"q+zEZjpKYxGtK{ZnԶON/"X#:I0R^,`AGGg]P^ft?lhLT?elEPcd }{&n-5q\GW˵ڌI!H8nbTM).A5a]QIU&sPSv?N47Y|e5z ̤I{Ɛ#,!h1֜/,|lw^|Ύel)Jg\nR.EggWel`v>kje1-=򤡭E"ejνf1T5k30O oQeHeX]NUPώ2G74$/u<9/8ǎ zo^+o miqf Ĥ<"!#:E%OluhJ6(VbHezݐ}u (L|JuUcn׍x ~KͷqnY~ieVJ I{VzsN(-e}ݭY_Ȝyo^H$TrBcѿKm,㶅\k笈]/3{]oO#*/6">^ ,(*JD1ZV"4g =,-_bdi؃NjJ'7[/h#Uҿ[f?T#Do""L NV,%qo!H?z$lƳ *L!Ax\ }[syA6Pm4 H*-j$S[ݼs,M/Yk,k.@y4VTfDžìh$bV[hCrjR1~!k\dt( d t+_8*gO`[rF{yUC6;J`sőf1B{<.ipnN~|X 3 r%Keu,-"F`uкq*7r0n|;M~ *'}Z(:mfGو?_iרQ..%_p<~n <¤ﯩ Va\Qkn~[IuGѰի7YQgo5Tȋ9`ߚ6)BbbУD챾wCVj,:-cH_KICϞR ?Fgx, = iƌgRc~ DrYOߓoz8{Shu.139< ^8Nj^D#cffd~vYwedzAI^)κG( {GqwRXwb,/lj4 WߜB^ ٥HtZD[D~[߹5Yz2J+=-[S0N^6[F?K*nW$A1'ȓw#-c'yRf.4dR'ٸpYոGjĎ/(0(*+%$[tl&Yȋ|ȅZy%|mXhlsHh0RqMڻ.cْv}dy,(T }E&Pč!3q,RUZx36+bwZw+ĕWYPi\/"SNxDTSwp[#Eve0Ticmn He%SU&I7XݮE:LOZCup퐩L߈]H+AbG/Sfq l<&'{%l:4y$d_o{~3ٸ7@,䖸k *b%hAũøBaf}[ |~2sLh4P%mw={WkR bK_ g;cYZQd:p ,τmW+ Lf^!cv7/TZZY [__ڠ?:fGWP+%W&n0^ ZiY⃸zQBVII+d߷w CvŪ+:"4.eOLX2ķ¾&1U ֋B^Tѱ++ActP%2ᔠxX>Z GڳWY,@RTGVF34s2al0ع: !x<4SxhJ[mmIܗwꁾ dFlc1Xʐx+% ћ#.I;{N#N;No},y>kgl}1Q~Jg#MYUlBOMI#Y-_ 05CL;ˍ!^˻VbkG M#{G tv + ;H1*wp,ѽUl ph!yL-kRcK"P%RJ#j[ ?dX'0'%\eAXh߯{׶ͥAf,&dtyxޛvoIKp;~ Z-3$\1"GtѹD=]9/Ԏ.͵ `\bJP/ɀr,3>;DuM";oz^"N2fǾVmo%e`+EN784(XC|%b̝RfVl& u?Q?a#f- ~%SR4e?kFcvs5uJ2šs:͑2]fzRzF,s$W\d'Cw5Qtqy0Kb81HL ǧ#{օ|g:,G, 3 3.&7C[1w'w?>df(:d,a`7(@vY"%{wcmJzWڭ %`j.^6UC^B}`͛+_[ʤ/}h{2 F۹zI'`88 r$˾ 祱(xΟ<7rqd:ri,--1㹖Dz<+%$t^b\r,\΃cvbb Cϊl^IոSh-oNm`<*P7ag3 ՕVWhlF'*I=e#z%ta62:l03bJA1eDR>H$*ᜭ+E!> 1Kq2Nn@F(2=3vKgc؆s:]jC9Ln'#>_d|wSb*x֟2XŰ ]l"+t5wN? @6,1os˟8°;t9uwR:kٟ)9 zZ# pc)7Qz׈Mxށ;mm(ir{7/ o }7ǽDNyϛ-_ppzoJJ,#C{դ1:R^/}PL` S- !rBH9ٳ6y.b9pȿz9w{D1~^d?zfZ64/I^ ĸd]Bo6NF*#zJ_js>,+d֜Qn.[n'PnCc4IYxNo<0J~HY&^P0F{g仵dSƬ&8a,{}=h5bS밎/iKS,n*{VP9YP`NwHHc?m˖ J>y:}َ)\ =aj+ v}~/K.9ɢ42/ E*nR\mqCP[F ƺ_49< 'g(PZvlȯr?40M<݃rrz|?u*;k^DI5B vNR)ؗ7>?Mn=&C '+0]lntdE}#ǥxM@ڪbʔId臄 !dZ~BRɕuo\ Y.QT?%FF|q#(k@Jed 5˾&Ks6c/ e"$Q):w yxH+js =, 齊BqfޕrRne`n]Mo)rE$q ~ڥ[Rؤ&tMi>U/M3ь-Z'Aȶ$o~A ~B!BRo8{` J-R5+ruz1?$Wb+j$hi#Tx\:u1 5fxH?HOX!=t3ncLx҄j6& i ]3@6p8mjfl=SESVЪi3|L=rH[\O+1ؖ-]dÁ[ݒ34l%+-ȖF`|o׬|EQl-6D57/pwSyy3(>gRԦ_kY+HOQ@R攼Мt[*qa) deyW/qme+ꠘr.2Q+/Mm,2xlUjY|롶gn6\̤xbY>UkthNL7M ^>8Lr-=R(MV\&YzV1t\G=5:)¼S<\:Gi.dרDZ/!)<${ʢشr6*hxʒ)f-nH&%u< #/L Pco`! ë 7 >lgH<Q{ [nm5gf5f 2Β=)jY=ș|YRzHCvn2Z/\tw4 3 D:( S~P2!+~؏0ut nD2!WJSpkR>Q7'"-ܰNb#)b:r$n=++yDT5:.>"vGR/r<4Λ1Ղ>zظ40_Qyʭe<+`#0t텐t<@;=j'v48b~-xg(ƀW[jMU;~~*]g!բmsk= PvןpU:H欴:D&죤?l|k)eI^0&yVn=W _6z̹SɜG ,cc(WnWˣ^b$6l13HHۗPR%UPW ) ָZPQUcXb \S0g`[$TfHWI7<m( ;1;B5h3_^lдֿuU*GuNo$k½d(qքaC)QA^cvu)"3x.I .DX:.]UIde1$Y[Yu09ȜrqG)X+ QѼ0@05}5o)V)֒B WxV9.O(m ^?~VꊂV?c(TNW q5k6un{2[eӵuN])%!|0DäL8E\ttj6G,ˍшX#6cjt{ 0aT.F£H\;QlS=j+ (1j e%8*s"K|t*ܭ8uUD^9/n ^]nMЈ.I,>gINf93!>D0ӰU BvjD}'QW]=Ǯ n_~r.#VLm íR^Z o=m.{qzxFka(!'-:cfH8tqS5BZ-;&-qgF R>ʂ ''8ƲEvu3tOK(JZ0̢ǧM50ҽ"9sdbs<Y RT0*IDẖw'¤dc:mjR|?zB?"I-hbvw 4L6`٧,y׀9y#axu3 Gqx\F%L\s"lm)ur8>39n9Acdp|Z i 1ZaZի_C@Gx欢 dᘉU_ٺ z8A v`1&`ֱVuw'i2P (B )g4i{^K['5_| ԧMb۸i4>om@ۃUnAt+;ʶGXNd@]NQem"jT--sk0 re0EƂ^mՂVHǒ>B )bu0)B]O[b~`JC;y<7ޮX8,Z.v\e ",/Y Rftf«nhR">!?,G.E)zm8PSɧ|-C*Zi~ s+Z*I1dNX$ Ǹ? MBB'l3c\csJNɵHl-"7!ƱeKRaB:&GԐF2mԫa;xWS7&7GpMШ e&DlNHFjB> r@x کXCp_L,N rOQoA$wNh"bhUoV EŊ2%"Mr,z[ԕ9:,>Ua'A'vuIp:va#mN_QЬS.p| eИx"|b)́Ǜ;6=~wT&틹qT $d=kD]ܨ@[NFs)^ǩ/#wddT5Jn!Cv$UvT*=%4p_'xZn>G퓿M@zFć7bNȍ۪A:!U+OfJݫ:O4S/E߿2xGLϗw$5BaƇD M" t+(LU 51%ZT%]|9~.~ݍWgPӃBvNoz*|Xhu/!Jd]o>ttư#xZ˹BRt"Cd8Tш;]_}&ehlklE-xW\0UOZmж8W*Gn>ZL͸@C .: Z૳YҌ羭"&I8NROeL[e-aу ]Kf&6J"ȗMSWfPxjzCg(:!cWQQ?2wzI_재O{4y _}p*!` xcEAHX .)>f(Ɍo.#3vY[, 'ΕBA^_0$]X"#:?:" ;Dnׂ; Q@y׷ˁu9PǹL ic]Z/ ^ ֕ *ȺKlMBmoW`=C}E@b %gKCos+\n:mIf_m턅]j,H#ls榙: 4zZ5T {Crpre-y'VtUjlʚ lp+>zRusn3o&^-L8 7 (p}?h>3.@nC27GYp5 ( 9t|RZcdLt_ Y#eF8iyrkdYCmn)9u2_YX uRWLȚ`g"3պChϛ>+/ٰo2 j_oLjoӃ@ yhR<4dZ7B7x leRwZf Сz=!KK&*J6so_v .mIaD;.Zf-ux%Y}~7g4Lv ; z.a&!h1xԝ[ސD6,Zf*z8h]@[]|=r<*>T[Qm4Cn~ *(<1TB7`> ڞț7ɫF \u/u2;XX_D2\܆i t[/BrG.L`;ȩ$sjܢ;y\(4GިK <`t&``ž!c?+tE4, Lltrc<ά^dziY;>KQ.Bl̮S,X&tN?''J%\Ŏyμf0)Fʭƃ_;iPxh_tw_l  endstream endobj 215 0 obj << /Length1 727 /Length2 15659 /Length3 0 /Length 16232 /Filter /FlateDecode >> stream xmcfݲ-\zʶm۶]].fm۶m{ύObȑ#3ZPY ,&`c!%v45t1t6ML&FR3˜A#@*BG!eSS) ,))'Sڙ:\l,2ƦvN3{G89?m*br*Qaza @FvN\M ,,:FF3_Iڙ6qqoBNP!%)B kobh1;ڙmhkiIg3GA,,MM,W7|U?)g&v6?<Ӣv&ve5t4 ١RN/khfג0PBB^LZfF6#+5vqt4s_djnj lolZ+Z8[N=;mJ2}l9haxsk&wrG0xb20\w絘ܷf]1.\L X&9}}-Pj%3Fw)/8cAY{8v£8.9J7>u5ҬEHHX^. )EAyaVa;S0-Јݧ! {o|GB*50aŹks*a;fIqSXb^b3b[*]Lz |RH">u.YD8yV㲖ڝ*[va4Z6~Ĕ~#i?$dA_]@\J!'P|L%^At%jG3)Bqkru j`B9< Ts8.yGm^Ew9EOjP~fWaR_oo AțggH%樖QZI*& L;Dt}.@(@"a"HJWT/{Ɵs(Ie@5|#-W.m>zsMZkC8H )a.zƞ= 'd7Lr55P92OU8S-v#UJO4&,'|T6_p2ng'.i_\T&_Q(LH6;`zDjAzHgR"woK&>`͝'2l&^% ?QC4>qgx@7pi ½83F(\kWCt0|vq`h.l0߉j&ݩa0Ǐ{KH>S]r]r:u}HFH@Mϑ.t c]z9Qj xɭ΢Bf|F2KՎ+L+7r{r [5/\Н|Y7aJ5)=fX53 iNh L4M⊿iaL]2w[X3rȁn6^l/KjSN0w~!$'1vf9B%bm֞wYZg~M"OA^>*#sjyY>moO d>K9&_$Ty֥$uJ|pa ?)w幃QQed%F6.¡uf5 Z%[X.bgTzi+pLE@wС*f!19nVV9'wjd7=,T/6ʼ]Q#aQ g{۷$ XZ4zSicOIkAk!DQ`c SjQAI^,⓪*@ CфOsDF"RN8A#_d=H?kU1=BHc1͋n4t 3URʋ!FMpNt7{jJ{Wv0nkRZt qk!M/h'#%%K% Z^WҜ#1w7udH NE7(unJF$ZSCwHiE&xOIE61p:چԉ݋xE~_EUk0ՙar9=wV-<%g=7z:(}@OZւ,uk[ꊹ|(afgE(JeȈӯ50jCE8eo' -a RSra{_UmFu] %'7 Csltk0<Kb/ "[)ᬃOR Z$sR@+.{ɽW䩙W7%8&gReA#hmI_ ۢTߍ6xM^#3PbqFj\/YĂ`[wlCu NK['K 'OXBWbsܟ{A+4@DuwǥIł) sw@.ʽ: +Wc,L9!̅o#ټ{jD͊߅{vEyƋB1>!Y+c8l U_ݮX u-U׶br01%E,<Mil}˄ٛʹצkU?".}ݍ!Op݌wX@/3eb4;ZCYZ%s.jey4o=L}rkBX,5,`_Eq?f绾jw-PŽO4=XR"# Kd 4 pM#թ~n)- u(CZ~v-nݵ=9.V1 g ]2x˽Gq( ۓUY sD~ +?5,I9n(3ECU r8y;_ @5D Z:R\^̳;W93{~ȀM³ ғFnpB81znXM|x| UlB>eVMn8-@FF̆Fy!3ҥLpB#"M끾 >y ca`KQ8k@cTOnMBEp4'H6E'_uC)J.[{O ԿdV:ηt:&[ohΏpk"_ٮfz|ze[CW|޿  m&e mCZv'Fzǒ3D~CF<*q.̹*q6V\.#nkP֩^7Ʞ(mW($HWskaxŅ*F'"-4%O]琹av(o4e7 YSw„bUMj1,6[!2|R~P ukS9)=R0l딹&oLx1wERlsp:/LZ -J+e@/6'`N"CM7;kι/]* gѴ-dl ]-L O ğK곂x%!KBG-ӫ Bi_ 8i>!T%%ȮGy]eY^$XjZ8R:@+%WNA %%dDtbEn]nH8-0[l$jLx s `Q5FF3.tzKr)p `"bT9ݗC';ry>HkA_% bV-{ȸˇ UC0.ٚ{qsF7Xu&_Tqxy /r*ݤ>@!i-l}j&K<*R90_D2c}Wiu E*19ZO4%0*Þ'Xڛja{Ϭ{ƪ[<8i3.3'.7[TWec6'iLCm`<GZ `Wyc?{.,Yez.'`k M_)YtZ2~dɍwW,)\AupƳ#-frJ \ݩA9vI\>ƝÿߙM|aa*+7Xܐm7Zo|/CE+QSTj13>M΂Mv#΂2-91.1; ;i#*; &] 6Gw!*~R)OpC(99?z ԎZ(R-\=Yͻ  v%Meu6 mr\8 uH@]f˦AuY=V}\QdKJR3`DXܿ%pw@$3 ~t\whL2:'DǛp= t,"4#1hu2om.g>$cDJ4De%-<~?"U j>Tω&s_/S,(_~vUSq XEp'qAx^=K@ZDyU l,0Bo V= xI*_G=/JT $RZ^Y:^7 ^dy!{ii2s˜!Q䔷 .)ES4l`~Ց6FaG  ~ 7ӕ}SAETVtƙ>H/nVQeY sa3 RBbkΑ 6$>s8]Asar\, 11953&mw!jN0<Aq+.~|_*:qU~07lRw WZ6)hRJ*1tGdF <{9B!}R'Sʗ_9[QzqH}RZ}0EX``tw#>NuhmA_bt 27 'ȟAt5c|FyP8ҲQW9Wj˸\hh_$ v+X`Q*L)U8 ҆_\5'Tk6N=7s*nr_W#fV>֥p;-X`ʿ<녃f\'B@|(fmSfI%Zʾ{ņ`pFb<1JN!< 3S()5f 1As堒DpoD! vlmQ7igftN w14Dy5c>”elF}G\*ͳ$T@㓭 :LvgYg؅8~;fzw̨VإvW%S׎{&ҥ .%5,[-5Tv3H BЅX[&;"h`ZN#!t?r O~> jf+3um=x8UK &K&IhGl $< (sV~v,2Y!25ޟa4 ٻ$W_HKB2`9iOkh@x۞ [qŹ [Z,𜴜iQq˯$1P<;?OɊ]oBD֍rn+;@tkMO;#YȻ! L?J/GUgJD ga(p0<-j}}-n2>Q#\.S%+jkw:3V 6D#CdzkON:WHb`"8v;V!b'=:b1 cYȝ*w!P/#x,A,cxhs1o>93I#̬LE*_mWDQ=AƫgJGq|#V|Wl-dmh  c_ jo 1a_#UQ NIzٹ×&X^ & w)!hz=rGTPZ G p$^?FLҷ%4'>4"n5gV~7͡Bi´D;_TcnZlj$1 ޔ++="..?1]qHalO]N? fkg f:V\&%8YXA)QmhZ#8R."+:3''̖ OhtOzFF5ҷ880l fSMF0psY-]T.Z9W;|=.:'[ g^βUaG:u1e(b$ٚ , TDz_ m_$r|d;zD)-Uy+W)xIxwv jYzG䚜WUמnN壧2w+xqnw4}r0 =sm|Z HY25׷9 c#'yQ0A;z@ã43xb vbMuXGˤ%`#1bêIpWOFH/C 2yWd|=%+2L68_:-ꪲ-fDC,I ̻;Syc34SX%t$'01P_P12\f[kQvunE]5جaSp>G|ӝY5Ⱥf6ҍ[Rl,&>M&|XJ@Pzf9*$>1UɨfG!/0V6_q)qR2ZLqaKxK9r|b`χHhχG9Ww{*_;t!j3Ne J,Wǧ!H!_U s%xj(ibֶ9>¼n.<Ew:>wen 5TȸvT _e})j̠o]w/v{{HsJ@Ll+SA/De9*5$fbyN.'YO)Q;gt'qіfR@V*m[^H}E-@RݏwqÌL)6 ܫm"+`d6=/x*qLCUtɠk@?`r02XC^?F2 4R;eWL)Cz۠ϥTM'mta+rjѹ2p!MHǹx+ߏ 5>{!ILaU'1Kv?XC%2 5p_V͔r@{)UFN?8BFKGob'ψDs DLbjI ,rbg >fW()Oya8xzm{aFL$s!EJŸW{Q 윱ƿpBy4<~!< U£"Ě XЖE)nrz1sԦVe= Y|R6z]Q: PaLg $iu ~[BN$oC 97VǭS\:1@P{sޓ VzKM}nwRXS ;&_$$Պ R爚4:x .&~T9M5^l"#HSΎ9 sH`ra$k98تa\()n:N`op Y] .4 [ƑHaMwypcrj+&`[@1AWX;+ %uUvմ1^G+<!+Ï j4sdib k`[(Ȣ~u^:ć.}Trr]D/DAn-U/NXe#P/1ldZ1no]0\@:&*;|X<K HٲG5lJ|)֠JA[)/-R[ӊ\WJP^LHb}(,#Dƣ fh"&vnL2?ac_P3WT_FOqYz|}J벓W]AnFqѸHgKAx0\=gI4:ƪwɈL.3'Y;kIQn>*@9tAڕ\r\`f֡Þ\*3zM0? p] Z8r |f󸫝ؘŌcS/)LsP)ӻ0:}Wu('j4kĎsTu#sKn±f7WǡjeT2{Ϸl3 9eiEbgw mǔroab˥/tk΁3XZbx^Tt+\:"g&;әV,Utscx/ffl c =ԕIB=#gp$1U]<~p{; BFxcj7^H3xb­_2P']ijn _ETU=7kSARHX1\Ym셾n8ÜKI7j"9! oV4gIUf Wey3OLTqB"6P@M}[wzFV|q2uZ, @pƂec5=ǡWMa|@x \U1Ŝu^D#'.hT#jJQ;)? rc^֟^Mf\G8ӷM$[t[*p y%9V'`Ѝ:VUrֱ 'tW{sfsevm͙.Kؕ1]^9m3 ET/oPD NCԥF)Tڱg 4ÆY4dβ"S73PGԱfaL8ϊOLo#i'+w,^N.P ^磬]̟c}:FeX(xw^Z-xW#_Z],_O&׹[6kP (ҮErW \G V4*J~v -_t8ȸR{WNրzk`m59.ED߄5(TRfz-Sg-_@߰xGOVJ^J?IC匜Lo @hzJV<'Edz<X]Q/~SPt1Ww6s+t!āց SE>u`U}s)OFmE,x}N/W _ڹS4\n+,@aJs4JuvR9Gs.o&!|.C յbk\dfmr)ORN`.,p} ޒޤ*\[ 3Ͼ<7dH1:n7 Ix~ug*"׎yq!u٨&h8{5~Xd$tw݋_! dwY|8;[S,Lwjm.-g dW!]귮#N蛮gp݋ĄF ?UmoFj&b%Qq霣d; d 8S>=RP r ^ F;9):r {7g inN;L iM=Mjv6)c4%nDbLn"=ն>; nW iu@i{sb(7y< /x2,x?tj@qH4kGQBr!I/ siӬjpɎtX*cS Ic:R}+Zi0Zf C6LQKU!oGOKZ_Ԋq[hVvn_STDME!{`S%aI٢s @*qZn,X{gyBDj+d{jP\ yO^ 5F;4x :Lnk.E";ɞ71`-GBf7i5ws?RnffH.Uڤ- ݲ; e>sX't ׎)(T]#['Ec+o:nayˋiQ*ʠcʷ:טZ xh_@?0Rx%{ h6@-xGdM`(5gJ:ԬB2*rSf[|Z?gQze˶S얺b< "O/0_9uN-ztsN.gȄ { >[?As;zG,vt3^\/B?|q ,$o'mˬ学TstʽD\ 0dqޑapьw;\eO~6wZȭLj< ^ԪV-:aGY"# 4Avy] _3js}_Oy0BگK vBZ. XSÍseE qӹ0vUz_nX& 'itIwRӅ9;lb>rҗQj#"+3T`-EIʻX{W>;gYsGWC+}w[jE>E7ͧhDK;= MHӷB@%ӨH Y--/ >L NY.Uo.2=[R}:ģ J==n-Az.]1ܝeR&q;QŦ`% @n6i[MӍ|S@E28zQ;Pb̗I']85xM:>Zʱ&gѰy-]̈́Cis}$KIfh̽{rLIMZ)Q?GFOF_zGӶ m9#ݼC[]OBvO V/i xO++wE2Lt~xN醊),ƙ_Tixo )Jx]J(*DDJf!jW,Z8^^K  Rqfȹ7i.yQrVW`nvGȤݭB~FMW#-;`;2h,Gt~@UQƷ]xL;SЄm!ikme:o\Į?Xc^9,XK)ădu{ܽTev!Dy!ӴܳrI/V]:lP\$:O~%"Io "-·֒ cMpkA+' m(WDڦG, :||Y MIY;rZÎ\\Db,FC|C` |00+O:޽Ab.P#Ql oc#YUovqHAiZSwVXd`ILG nB)"|fCrkg`JO.lf$#t^;唚2+h_{W\h a= Y~p/ԲsiAQ YKPP~Hcc̈́D< vUj9 P[Kf=7LݺO?V+3caYDHHt,|2ZdVtl7pTxS)3#)s?UY\.~xۈLL߫0Ea3rn>\5G"Gɩ#*%GخG6/e*"+g⮦gq'[qn<* Ŗs3#+.+ gG91.__waHcDOkCӓ&IY*1xFm#mp-cJbOr~oe-|#X|)'Õ}3bƓ^F^j˜ +V][[#[d84{v9Nۉ| bؚ^inqv1dkwPC`ZPWԋݙC JyH%GȢ5Z\\WÔiTc'lNgႵV+S$0Tv[~*<Ei 5bWܯ4g¼ TQ/6ep#sdUdަQ -47NzT< v<1z]OJT+ y&M5HLܷP `xW̱̆v{ ?F8-)72_EdnV@rZ$DR=4\%咀aRO} t@ywng\5hdwF}*xRbggeF3SD2TTW hdowsCp}SF*΍bwU{P4H\SFk:ېOMJ?Bawzw нv׵߯˙k|CmK㩶~hZy!(+ٺѳ,H%q2+G2tXW}u-l5U}nͭMʝzo3~pd#-UB̷Yh1}ٗC\_P1Fg$cIx0H ȂvK ys%樧6/@b endstream endobj 217 0 obj << /Length1 721 /Length2 1124 /Length3 0 /Length 1695 /Filter /FlateDecode >> stream xmRkTSg-T)CFOh$fx"!+ ͽx`!->$c+` Q"Xjؠ P蚵f}gu! PB =TlyhF`B&pHH,$ ?Jt`ht2`a8,EXD(0b1KE21===0=MA&>B @ŋFr '2p …)RXaA@YLC44 0 A[%$*R,O Q1շD pvXr-WqbD5Ӂ ¨o\TEXH]*@ IlD paaT C8 ar!a$`p އ-TmB`%$j[Aa|Q1"ԯ03P`FEFOe`‹׳$f?}%/X[(rĩyn-3F.oS`Y+{ :ڦPϑ~%sPͺǝHddYIEv@n ܆zSL5uUAۍ_~jJENݖO:^ YƳ}"] Y'1jW-4?%[S{!s^glrKK"s=^wo{fPX.5WMwΩ@[֮r{t'0WFO^\5 ^dp7m&+e+ Z^$;s?Ԙᚷ5^z4u1/Q]>on̵ Y;ߌgD jΗԷ͜ͱv2ۄTh>ż|(w韷뎭}O&cvjA۶ᄁ8~m)lcC dr-*TjU#kfJ9kΛ3t6uec:@=fri= 4 7`<谪}n\aX]5^3b\U4xKYeւ02Jcg6_j&cw=CqA3.*9ZE(?ڔ/Q4UD Gd"|fyunU#&]>jƺkH_?`Fg~k~oSCw=#g_/d]DMǸ&Vl)ZgY;6sr3 yKf `vH} MKَp֤rӗ].6]I(ج8>{׺"^p&]_(s MYѐ߃Xm})mLzXc[~jqv/%1GVm /}. d.(L Tn{Zp endstream endobj 219 0 obj << /Length1 721 /Length2 25270 /Length3 0 /Length 25770 /Filter /FlateDecode >> stream xlspf6ۘ8c۶m;wlN&Ě8ضmMl{yyOFvEN,`dgf`J3q11XEƮVbƮ@& t0X^V*S)fVvV [w+SK?A@ 0D$T I=fbke 2ڻ/fVɅ_݁ή3wvȋ K(*EDf9]]x:OvtlW2_ΞfV=&mo?@3?n v@+ `t8xHÃ?1[e"a 4Srjsc(^ͬ*j`o'mȨ*L /@.W/տ?`M7vu21O{0Iz8xг0YYlnV.k w ­.;Z5ΖCN.3E43<ĽS@ 2߹ؖk"1"MLG/[Wo)E\Ahؙ*@\Gݺf+LeU8Gd5*mDJXYx֧DBVZ\쮂E \Z9Dh߳Sro/H%ѣAxAc&G&#Z4F~77OAgiRgKY|!m+rqP ih?=+9w$^TmP`:vY6 i!)>>'ׁ5%"e!Sg2oMSD7Fj]R(LSgڬ|{:i TfàHa1 K|sjVM 㲛xv //.::') OE寚3˨<gcB|şv5]mH(!7mW{5:"T/'V(!+< M=vCY-4^7 ) k=2cItWdώ?п|-?L!l:۾oXǼj$7C0'c~KP ܱm(+ɔ A`y\M9dc: wOlKH"(Y@Rj5_fEs ;dA_quI/ȩ8(>lu_CR^ 7MQpBþ}U,-5`t*&rvYY)ǒ <·ܕy[>b%vTJU=CLuLZp婂2T/*2l :6x*|̭>Pݻw]OcJh9Ba4O=WWJ.i4 ~3/׭"dhvd6 T@ҽϯL Z ?SV@)6ѫ[` s6Oٜl!;k].r tj[gx*|,y&K멿[r|h7$hJxeFiaIٓX!y+Prz{_&=PqiO(0]G졵[@QKo'1-tR9~iy`|\:^܍TTLHi:X۱t^sCPʈ"7D̨`YkcLBL16|Mp?= &:؈ddBOHUƃ`{O$1m52X? a@P"\Qbryj@CZӅ"E+]w"`Ga\:墲ISNBU-%DdZUZ H|Ek3&MisIfqYL^B)3]bf+#U ' 3\S&䧢C-ren!>^D` (?xu4He-B l5(ߌk|D*}qnbǵ)e_KҿB#N1 WKשv"aWd EfG.\!/eǿ`%JyA.,_toۊ]G|mk~޻FldGucGH/Qh0kl5Nȧt8^^}Z QEgz^&G%K5^,j 1Vo&u:\/4=U7B(ȃ+.HI'YQ G47p'{/CtP;T&DD-R?T 'Zz - BϒP-,+&Dtiuc穯J9MQ1=% g;TJ rSRFE/2yZ5H9$' \O#n}ʑ[c*}KaىMj~" b=U3LT펜acG?j'i!|ikP{?Fn<^>l${%>ϏWZ7Nj%ʠވmO(ve|LQJkfKtH~߰HN:Usox]Z0^[k-LC_8GFgWlmR>{v#k3 ??b."X͇bsk^Vj'RZUfʥJ_6ٱW< ZS+6 KϚr#q{󵵜8rBnoE&[6//&Pvx=PT8F a`%ӶH5yH؃ٓid G&$J5}sFZ7eŹZ!ׅ]Eg̷?OG!/Gُs{ ֽoD|².b[dkrwD=k5TrKS)m @4ׇ "Ddp|8ֳ*b&bY|U GF+Q _'߂}ֵL~czRAA?v%T,y嘘y7tL°8>5 B2sγyj^jY|=ZK)0+3M-ƚ!J$QW152oj !-no#jƷG54m+ac=1<պJyZvdrrb5(搲.<hRj] m&zCȱdi}Z zܿq_;@EZ4DJr?,0'+@Ӓ;C0ޮ:2X*Я'cq^0h[ >5Y(h:Lͼt @) ]W;rt+;zrsd?[D?l9qkp=oUN&:oԉqSowDH'UeS0ؿ#r**Qobf9DFJ]Y F H&N DyHQBdiorn}$d_uM՗WL^ʝ!~tDWk3|zG[u8p7~i+5B˯Xue̝օ)JELq{J hE]YZ_{./~&`Rc:?ەMʈ@n1޾v K$ 9x4J9q `* oq͙ƋL(2&eDk_19mz)A څ2jWX-n9o؟UG?05YoxsVE!hQH9M/=)jr/jɚtz8t%m`(teFO4R1會mڿvŵi–#vϴOrvwH4q`X"k0 m)&7Fh_LO ї5G-x|27X(PA,+m AY? d5Jx$$S|@^vҥn#q^~Uzc",tž;0*۪Yе$"~PhicN\w.I@bp7%aV)BGON4&U;[e4"^H]gwzTMpWlx(߄F*m-qkզh{튜eviq$:*rA0'AL3\Wt[^LbjNt{4f+$GP]6FRA  X'ZYiy9G4){={9}F`O}`hJ.v9xF#Iu5\M.cm8Ff9&#jfKЮ^+4z5ΆW,:R'.i팒gU(su`Rr&g}h<ټm4@aZ&W?1GseL\i:Tj1YE_moI7E0c3 yOJ~XPH/&æ9ioVJ N*u jmQ?t&FCB:T뀙4 B4-Du2\:^.$]S={d``;xO7;,), 3CZ; Aev>u?)Uy19F=OfuCc'Fe(4损%Xq tV uc-7O tEEWXwP7uc;zG˜xJ8g;uS-|IwK)v 7Nq%18i孏1_)w/J&Dh|2: muß/ _DOx(v9/x$w8S~ZB了Wӿ7oE*78k)u`P"%;54Ui;C`ľ4e z;I"#BtJYtFqE,!)0󼷳1$NP4 H0$AU_?jܤR`]5߶~`2a7.TuoKqM.BlqDIJzƔt$Ќrl~5u-񅚻hĞ{D]H߽bCdeZ5lQu܋>Z boV$ՔYVX`i @] 1Tc0kFZ)DS%$0L+?gy9qr a=$[jvQW`<#wR0Tol` VBO{( . Ӂe}BuJ{ .EOْJic UN̵צw鵇_F!XaRo,8j^BKxHYyJZҎyy:R;U(Jp%&ot?sMf5b0+QM?EWt" '񲍞d9Wķ~ScehO@nV]UЩ÷#p5&OPKKGna'LH'D2O{YbWq&ͻ9l=gjw._ޭAAg~^3c|-Tb=)f"{2{Zpu4=l-vxhrR<ڶoKB5ySNobth͙Y#{H=Jﳾ~mmPY󰮪:E$P&槗3䩉CنɳjunҐ;\p!VBt;C l5Ǐˇmk=e;C_g /Pg^);Fنp)!wS(KWQG\B$,^[ѯS*~wR%bj>[ NxO Ĵ;L!*Ȏ ncطs-zpu4'Ҏ[ܖQzc 9Ad U'{QNZ6s%ʹVLRB^pW t7[OȍqΒGDEGr(,)K`uB[Hk]c:MxrN(zY] e?5 ltj%:>|֯u:uܤ2F zrn.)FqNX}T?a}f>AOLw4jJXh~PӲf Tj0Ƈ1A5!KMpE7y˳$b}*Y kefW!AGuSy<xU%Gp&cY^>6m `J72ȣ >rʡOZ \ 7H5:4c(yГM.VlSKTO3xطcW,g]xKI C]GmV&~57t#`fsy 59s,ܥH; |[';sJk9x^lt{ruuLz~ǭpэ6=^m Դ);`UX8-JF>N%#T煮t7y/OJ%[0)z /pH/˪T;O _g`zG⁓/޿>5a1Qn6T@k=g! {sL>jWQlӰcXq5r 3T9[QO x$)$P0% ;~K ŤY#VBz3b2-ԯ. cO?B1w\n9*@bgbGzj™ؓMtַƬZ,jV72h:E@,Vi: rWjt֘Ѯm ^ mf>mR#QGW\uc!mZ L/Y.I;yJ*yL<  B9],N72ZހRTULT7PWU4RX>6$XOMսx4N##}Lg%/ ~=u!{`GCaI@k -XM)Ah(0x]tbN|!Ήu#^vXhO|xp!cs+nGrtGωWsBnD~Lm MJpۘfׂLf!Cфsě^Z!kGvDc˩g]3ϊڼqa܀pMY z\΍za#Q=q§!#h]j,Ul^;Vf1'l0+'HEyV "5r"N'(xdoЁ0 ;45a4/USzs ǙT-_S&%IV~ X{Nysjb1s[>-jS?m'z]5XjxWeo-ɇĤyO-}..|xNδ¯N9ohO {L%|K!q`:9wjstj=265N#Q|Kf3s ]bzm{DDj${Z^Cgg#ʫ:Ov&ݝr7jCUH(CI\|g,9Yuaw;Ŋ,~$uA"~sSGCYNm r\XZ Z$&'^l5kv8wFu ;H C>kSz:Kp)wP_KeC{Wf)caDD;gPA[[>0S\Ȩo UFu ߱$]JyE3YI\~{<;FCa8RY\L "2SU(K ay!(@.g_)P2pJ@-|e`9Ao݁ B28B( QwrhcGMl!A{}%qMrFp'݋@BZDhA-,;\m^]]D#gI5p]]WF.w)Ve*I Mv ~dOlal5VlwHH|{798F TP\C+mc1YUihx0VsjȽ ?SGn,{ox2'xc~ }u@˓#rex Xj~Q<)kܡ}gO9e eq%}E2 CTVڡ.av53hD- ㅷ*ҟS߄8TS!ہ/;Ko >F}# LJ8c2)Y UM!`)pYIjiRqicA7ˑ_ <0␝S SvhBx3Zohi`"nnV*q#qUm?H("2e}&]IQgDEHx)ɟwC1mD3yxQ[( tMpR┹-|Մ\ RS;Wì)# :2Y>ٟ(燳ڛȵM\w+A7NHHNEMe7j lWuMvVX?̍cK5~S 4u{'<©N$QKUeZL:V^Ӧ&To#Onbm >5qxm v[a*7`m˵+隂;([]! ҾNSBk\pb:w&j";BSrF-^,n:`jOR_͝}Q%!?Xy&q☋XЁe{ mTGWucC#*<nq~j#=x0>W.顂I~ ?B r[*شi"o^]a>Kݿ%^ČMs7 (QKH{E:J| Ց):U|+Ii^ϣ%6C/?׽Oa";z{LF`J DnHn;@ɻ&y Z+|tl>c 9232]84be {'Fρgiс>(\)m:K"|-6:z&L/TJ0D| ’F88`'7*hl eI~\`/r!vB&'o< ˼8cmI? D{ ]9 H},Z agmD [g0JM3dq/%ROgG؜nݔp/'V'BEM#BbV-DW|]٪񔦕iDl21Hw~R{Ap"B(}lSPO!< ۟%>`@-ANbJMޛbe.NvI|s̛8/oݪ|K;wJwh+ޡWъ$xPIEǝ"zMfsڏ6k}ڷ%K2|1zݺdBsnꑁnP}l[St oԣ͋yYADV$'Fa{+ ?ci$GA3a[T].iӓ tkî`eb,f?|pP.*D7dL._+kYY9fVrGwhk3{@Q3⬭>MBͅg GDAgK88$ *fy%T]Uّ"E},=fa.mN+^.LsUǦӔ"mid6-Qpvdp\k`O9-FcClw{8;EgUR{˙#OX)NcW`bɭ% AWvg*OD`(5yND4{.˒ n,47APM$nˋVF-oƓ6=&d6" qŝ\qC8- k#zJRMUKN Y\!`aϮp"h Gqfތ Ce²Wxdl .ol`6 [uRS<"۲M"r#(Eɭq.I_qv[occܶ(m|͘LrWYH*1]wtCɱR(odpzI4+u ~!1jKhSҀ36g㶛jt5ql#S i(br|+iCVNyN9WYןK&iR2Ǩ`\rOFiukM3']pr3&/XN"D 撡5K4q.u[;A}>S:X]_:fQgLLeF؜ꐨEp.v·>2T.%(Ndv %?)l̳Qv=At#Bo8%Yw.EhKwv9< @hpbFvB^Ǭ?tμV` C zCLUs;;?ȧp7&Q=dYe+.1hE}uhF{ (?}I .CfT7hJO&Y;6Xri-T)zL.ys"Z&/e${]mfMsR b[j&ZMufVN8pQ5##J&= nDG =7_NN*:u'^v )Q- ECbs\ FG3Zf#ыUizTÞnAۈ7`i%CY>{ %6r (=՚n6 |]j +9}K*/-򾜤Cfa*aNi)j?n+-rh_.ѝEF3 ? [-XV=W,wrE7 L}y |dЖg\:0*B#?[n.[' ުƓI4᤽|$–Df7G{ նdgU͵mLs1ǙZn)jʐFl+$WJ(:4ژLX(V0\R~L/l<>N$O> wp:KgU̵7$cۺpJf:a/Cۋc'oD!4p'̨ k><eWZ9B, Wc<%’e \ȨctnbZƷ*V>LxK%߱ 1U_i-P2_i3C,Z^c|9A$VW X.α hn,Z&6qMf">CClfmnvTquy͌_4q?]"5t'7O @a[=c9[4򅉑+Weùoԉտ|`/ˇܐͩI:xd◵%i ML&a68`Eul?-X{ͨɧeߨ=@jP]Sw Ehl nضm4ƶضm7΍Ѡyo~y=쳫.ݰRkУV~\vrP7lDlT?pm /O6{P u)(ck/2ֈNG10 k0":Tʏ0r+=x!%q"ڗ W(#-V{@GPDSoC\DfdqZ>h;ajL_'cƵ]-_eeݸɏ\wn]NdbZfȾk8Z)K05 L a^%njg|ZWn%2Uf?;{9r}hx+s Δ򜩗0*iHwa!sEj=m2^3h= ݑD5[Gמ'APl SxgI1P&*RE2< koAM`H]/'^G'}:{"o@<ވp(C̎v`֥G'[&7I⺑.|7k_KA/ѧUJUtJwMo%;uq͇{Jz]O@O|Ҋ r-?G - W|q9MD .hcm#Pǀ1o=cwRE$i"Ą{ycWf bA30|*[ ,(` lg'0$Qoʦ.WWOɜb7n!+߉9,Z/fDeJà'oޏ=P!Dii'Z0hVeS.]6L`&ӥ<7vr ">ܳ- Y' PymaJ=y{W]]8*>ۥ>ozGyK21 / ܒ*.B(yP.RW~ݕM?I&LWћmwໝL)0RAæWE.M-j1Mw9Hr[sh0LV^!)jY%q7~GT-JUQ fMEJuTAl>}:6G5zNWhªSb/dYX .L{3nfa q_7۶)9Ŀ`Z‡ #*2RԄgwM)\nbוY1F?[sP?Ƚn1v}DjQnFeFJMkbA]Р*,9(ZR'D`r}ҙ~hH=xmshgΛ_tpboF6KC% /L3 mՉzlgQOdmKD]e.Ywsg'?( 4TPTָ7U6cL]$*%K)rOQ 7t~T( WwGfB1]V["Ml\9X$;No6_6ҡgL- [+G%S$V2m5f mtY l槅x^1O/3mSdYF梌1Q(>-2!ߙ+F>KL_u?1OJOY+{B +K7Csj&Ipݧ tx7L(FKJsQĈ(z:aY#wDgK.8V`L>ȼr-Zli[:t2k9=ccȸ)M1Hg^cW"X(yù wτ2 oTec2*WS}f`N%7Fp?>ė9bYl?".WȠ?N+ (YZ0*tgM8$ [ 38-fZҔ}7cfLS M'ZelD'n8cyq.)i!J,􆚀Z6V2v--TaMN!ט~I@2.n+z6/WQ0 Ј{! cZʬvsyc` u6gY (Fxsa(T~l^J&>bhy%2+'[f/+S>K#ZHUL>Rx{%?Re IPn'UBQ%98ꭆ)~cSa%Ԅ_tVey3 둣x!#V2{3o9aT3 E8y nd^ccƧ"3˓)iJ\LC5m5 qcģ8K c%THk 9ڊv`,*2J)?^CСZܱ_oڕehuhl@YN'&x%؅ODhm`-@TNSEMDl~1'-rxFX}zyk&Fdpy{ *WVg"`@SE)>$f,Pٕa}#K//Վ`n!wzwL[usq=el6xkCkϺqkK]hpoMPpq0 hEP8YH WN܃QAӛ1j1WV'>0cz NH*]Dx>MTc2l !$\hd[^yps]l4XC")53»*N7?/%6ޑ@CD cd0ZLHpꌞZ&t8zmR\ "I6); ^7SjRŸ6vMƣޣ} 1u-~k\mئ#rC+Px+}U1 E 9c$fxe_nq2UqI4%[ IrCDI5K<: Zi_9})Z1ƗK9 a 5o EkyĄ+TsXi.}*Xs"J{7Q2}|z-aeɊK>1Di k34r ]<~hEeo' *BZvQM+Voَ/A#7kX%h`653歁dT>Q 2~͉qHpBX~8`Q2z|UAETwoԦւUhҞD/zs0WcI 2O/)WI/K8gtQjfښrxϊg6ߪ]xpѡa7dT C&3x3L!hu૘E&Xm,oF2 i@*8D*/}z0BYm븽YRCiQ.?}y-)}7TꌀufA°d9n@xQykWGm &ϧLܟ2ښ{c?DylxP[a,8ɟŮC%VtwQ4 6SjvPOdd[lT` xlx37lX#ZG6,Y2ĸ.:ӺYrvA"0zvQ< 'ƼFOt 5chP*\vw ӓ-oT**ۀ_ .%谒;K.4!Lrt5Q+T`^!(Ө~e#%OȅS Z>z_fHѻ%S&d?9Y'X&BWx4'Hw$qE7__: 00T\=Ae_yk\[&(߆jSoc")J!bƀaDrn1 +lΏ$.0꽮j. +m 5]ZG(Xd~n<:v=k!mf'\F5;s%~_n$V]8uyYoR\n,ax0?֧a;n 0-8S)a I讈@乙*o@s|9B /Pz NnTHb1 :;I":;؛.W4+?G>+m9 J߅|sg<쁕DONSWLq3CiIM(yC6S\hC4en ϶@ۜ1b@TchM>l][=ʋ XN EUF.p7#x"lҞ@v}*yd tGvvAWP@N\U 2]+yw,'úwg]}/񝢄WÍ4! 6J^*K}R G-TBdHApQ3)/k VzO8uH9Wxe)Hɺ .-FZKT*9֣]~pelj, o*Q'Z&#u mN%6CgoF FWwCPnNG&} &biK!f. WHB[OiƳL@ܬBf4ujRR4ۘc S/!4(? .JQz oMŴ/K(j|5~ت'ʭ/ &?ϣ43ZGnF캾/xn. (ȁ.Ir*|Š ֳ"O?[81~G gy{rCŷKV ]sTW9æXLww o^Լ)X6R jABU9 $i}3A*!){Xg 5bx352/x? 6b,!IH`,۹yI=6`.ּq\NJ5xGp_pD/ 0,/{rdn*ʦX- gbM 3(%s6K'TDD"{US$]hA=)/)>[vsz dfPk; S &z.UFD%$h _=ljc*Դf͠hEr :3wcz32Bk\qPO,CB?onщ a2r@HFT!E_Y/"k[05)&j9we1R;@8b mX q6e7FZTKud ,=]6~q[)sj]+DAX?Okkp݊4ŤPqa ZzWcƨ/uaO"#^+H)UPϘ;`:ɫα#-XzDXq z>}u ·Fc1(C3DmlJC݂Wzz 1$3f]NؕknFc\;S,-=j rZam#f>b>%xٵa\`3f`@im̑|YcRDw ˖\ FZzl,WC~ւ :Fhh;;&Z__P#*Ţ߫LvVLם~vpOUȯH:~Sƴwh3 עv.*~YAa < vh7":N vHeC1wL.7Ђ@B|[ѿcHo~-:sli%lmi0ϏY,Cv?0@9~ n50L1V`Q`uӲ,xހޢMF禥EEgG4{|oϞꫪ(hRU% qៀ aM:c%Q)triy<rF* y;+\2PJ,hL.q+8d .q+A ?Y KqfX!+໌?jp]^^^s 㣳uLBDBLvvaT\|fr~}sx u0cjFZ<^h:T_IXEG~4oF)ij{.s'n2zt𚔞n `s.&ν@ x {9&FP`ks$y0tFf)3"'W"+Co/OvX6bu]cVL$ :&uC\PҞhX٩cHh:]iJj2)5/y:ylkNHk{6@ @\v=U)wϞgZCb:â&BJKF@&1DJI9M?0W :97=ui`!?4'{u$;eN?ykj`?v, س endstream endobj 221 0 obj << /Length1 721 /Length2 23513 /Length3 0 /Length 24089 /Filter /FlateDecode >> stream xlspf>cĶm;Olv&mgbۙض{9uZ4{EF$fgadcg()2122Y~8 -l:@2 `fddAp03wPSP64pY۹Zx]]]]\]IR@5 "))'Sm#k c1 H0sXGٚX غfhgUS0 mM2:;q 4vWu G201L,F@3  M]r&@] mJ;{g#@h P1oot6![cIh`զPo:?" 4pO>>Q;[kw?e@Y!MQIQiEmL,lpih? -=n0.khfW{0Qv^tL\:f&+;5vqt:jF݁?Vy-S[B}E g+ if Ti@Q,M.qTpgv.% GDK8/$f5ozWj6rk ԓ9g5R|(Le}[+ T?3{4ȳ!WF/`ayA;dawf_,pF=NnRVbG؇a\Ew_IdSkչfXol}{>5U`m"</-b#**ov#٬A52%|+vhgmBYkZȺ/ W>L# !. ݁!Ť8Viv:NNwԬsT?8}fσU*Utz 0A5K4bD}5ɘ@MjSGE4riMS 1h::Ox[ݸ zcDM6W_܆]U(pwxiE>^-ef4_v66^߈0jhW极qySGyS9ht,l痢IA46tIj3ZϨ;=*hE `B2X(Q*0BQ)#%,@@6"蛐9 ~bm;%<XHw3|E bαCj(/B`hlCǍ \ -^2Q兯j$Tx椯wyYmaOf^I/`baRت{!@S2~w0e_sˣH˱D4x.PTa>*ؕ7wD1JIx#ŏX ;Yd)V퀫te 7i|QF&SՑL]|W.wLq\͏7ǭ.7TU{#zGZH#?&, C9#T`Pc7Dr?8g22S[M2xF"#&Fm ,!ҌDvSc\,[ y+Ni9bF2IڐÛB&{y_١(L^-˓}ڋnCgÌN9/wj^%:o3=qG ,χ \>&-w:L)7g."`Brf(Q`Mr]Ĺ'+P:]RȯJv+܌O:Y3}{Mߋ˘T(=HF~ }Yv}8JNM><]l6_n⦲\hG9GtP( NB=&h(c侃)-t:8;A#OGQdIy6v ^hz8Ɨ.Gy[KQ> mKFgԐQ绔So5WZ;N LL2V-S%OABR>a3&GHO:DLA@BgS}zuQ;7S~H[f~#a$|/LU|{vio?!aa⢿[$85Q׿I R\0uuoe!el QOGHp$1}9(OG_rחQu|3C =BW@Ec{!cvg'tS"(!( 4u+f^7 :eg`;߭IG*$ayd T(C`\A$|WDG,asRָiKW_5woZy -B]}(g-99hrL/gٛz孚Rk"ޓrq+Wy =jOEWD8G_{K&̼Gb>4ZDw\?].ՠ4'YBƛZ(v,V+Ϗ D9Bh`ΦD&܀9oNK^*TȤ ѝYlrHxUuCȗ$k㉲H/Fpl h"睏β MyYKt$FX()k 54Sԇ 2˶9瓣 xnwP-"XEFT QTPn!i3|-8ǒ~mg`ÓF(qnPt^n~r:Ք@eHp$H`LD{@& TqNS7U aŧ px|kkEʴ"sLO)a˧{vu>2pإ3#c,N|}/6;õt I, vy({ل)[T## @eH{);@(-C9׶Ѷ ΟMMl - T24fȤ) 6-(J3̱&kewS>xJHkBLZG_˝``N#@ԁN/t3.exe =͝o2@忲 ;Gn`mfBsPWT]k^&oW5Fi^‡iF|iV)n!w\lm5{)ә&EtvO ^pi6XYU!1Оru/#r-nݥRoU8X(|$ݒ6{mJTP xTZ>޳Ў-Չ?Ti4 ryB#~d5Mg%j}q_Z- B.# wpЭG% *|h4@\'lW!^@B09o{o w dXp8:yM^j iC(&-{$i|yҜ)JؚUiI3@5pc',Gblbo$A`#"mYtGE%p}M oz|T%.&D*.*۵xc[~DVK#z,.ic2h2ǒ-^BjĘ'zUƞ.A)[.!K;Gp| RrIy5.5&ԑn=,Yenb>Lhos]u=n-kHU^m`[?ehk>ջnf.p60#NBms;+Ic~vvx8雠~}(T(u9#IŸ:l?>?ﹷ)~4#e]#5 "G=C>3/`r6F飵ޱ?f.#ϸx8D_^#~|'ZfpPqVQTLo&y 2{QVR'Zz0I _xW 1o@[ഢ], ϛ {{D|#:9k$fոH’]ʪ7,.I{bjwt*xY?sSMI3?Gp[ h X)e MafMPrq~nϨ5Zn+Pζ%?47%AE9.̀-Z!q^ 4=Ǻ$-G 5|2W"Oz?Vk1)*1V(M*:>E#)7=$m3H]:|wxV {!E |2xh)`!dCG"@;w?knň(jV)7QEU-ܟ V=\͚T. '|liRДJs(hnT^d=:a?f:"/tI)ᑦ^ qPr ,)Obx:pUSB:Eehǜ5=#wGb!؝ 9OP7z{\$,:ʦ"q+ wp l!$ṢeRμ0a 7 ȅAG?Zpj^ /%Sq=~#C vF4+UePe.ޅd՘ElCX~FYՕ+Ex?!S U[^ߝ_/& gS(} _,9~.3,@|,4&ؒSS6C 8bחMe!Aʠd۫˕aqEW"rGl,<^l 5w;"zbW$,ԃDх7oOӷ-?wWu\Œ0R"91I!YR\?eLLB˖~WK.smm rSpC tBk''bj  Eڹӥ6'/haR LKb|t|DG=;OhŦs*sB]v@qa"d&)PWAčvEǍ&fȝaUʯƈU (?{c}"Ä1KX@ 0DL6p,sEwl 1GR}參pQx % @l93=jx. 蠴W5@+iv6.ji;= iZAYc7 c w?(v ]"n~(9h-/ـ8 ǟ&e \XZ Ȥ߇9=Mxegt@=Sdzc3[Z S/1"5'KI_膰 6!llPM_=L L!9wuxPܛ ְ?eC@蝘eQ . Uqm~|/t)`YqE2$n4> f:9EC#u2]FGFAiZ4kRL\f0ULÇqGaO`/ӜB\R~X*ޯYX9hK8lr {O?Bn1z[ BL ~ٍU !.uvV2{)u8pD WLy2 AI: k`*|e+L̋E![cfX8יݚW=lXs{8q7`rʜG</Ay8ƥ6{mtnNr.N#h!aLkl%>X=8f~Gۮ/#2t }UD{Lkr /xK3`: eg2*|߆KV//]7z&G%/C9T2慤o"/<|cf6qT8!<.[4pKb(,"`˫Ώ ǝݽp;W,\5o-"qdKՖˈHLGL !Sz"XGb9?%h yI) X90[wP~U܅|j÷&u\-ťo\!V*zG70l$mK#=*c[+T6v<'y@{U8rD]UZ)8aܫhA e K towdgFHq_kAܤ޺Ίhm'7C ܈r%Q 2^YbtXK"c7<Ϗb$,J/`VԓxEXx'fŽ s{S1YDm&Ų-6Z,4YhEIQ'| }Ӑ+㈘Yвb 1)0a?{5LJ2C>e2nCH arSMZۦ2ԽӤjL7~.DӅTW |F( EID44E{M(pS5w)wgQ?mW]agn:goՋ!ၮ~~\_OMfX[A_Gd6 a֕̃ U *1"Wcl8DAަ>wZ-s&]j$TC}di9ʝ8b9+< *ӼV_Ԭ|_ڴ56K-ڛLɦ*htziQQ={υ9|) P?;/ T |oD gQytwG$Y+Go⨻#h?6RcaPkLA1S($TmajoTP)}E~dS!פ8{fAS˜ڄ/w_4pBpj/Re\(xȦa-~ShwC{sJ7pem:ow(:M*ɹ  m[5Q"| 5 lYu i,^Xܫ)/ţ3voRB>06cZK_#xTs&{a߸dh@=*Ts*5e~)NϚObL\,dC0Aٳ}B/Ք2 n?rW1:Ю/k{ !iS ]d]7!R26ުt L=.K/2g(f8ذG@v"L¢) 8p96 3.t+|굌$k{-G| sS)^k})rxf#1Ǝzͯ6P:JP`%&~\v]Q*n\ekeYjExkV6%ucDh!x$$|A1Ȼfl's} ]sBp~LJWApZl?#F\lB9Oˌ)r J֗N=9xKcF(G u\~z[Ȕ"1gAku݌]es>uG`8پ [KoqPZOڣTany>VgHZxMS[욈U`)I7_(!$H3Zz.˽s3B/V@>Cm &͐,2dyŗUûqTdey~Cv4NwqV݌@1ê_LP1b$B*K?Rƾ1kPRV<]wt۽lVt"ݯvg#-<,SIhO:!vat Ȑ)6[EʨZJ>Bo %F{yP ̕'FkiXLj@k^ü,<,sbJ8pК- C,Z1DP&ko& B@-%1-WvX 1P#5by.F- ٦R@;NujdӿWģk+E= p d&ޥy:c .#ßZ|b`⦄n_8==jl $3?CK}G .l)ן||2(4M~ rzED|}yu'ė9֞%m8sǖ[O狐N+FMlfMa"[+!}ҊR3|MLv{Y\S:8 QANN~+'pw2N -Ǐ Xw=>Ϸפ}ɟ 9`>T(:Tݫ{}N̩Qȃlu1ȟ~!-zrRtJ&3CC/Esyt}rb؊pZP1 8F>b:gn4MKaZO;j )K#Bd4÷5Zc;Uz﹆2[!<Hk7(OWQHP!ЕR`ƆJھ5r/,az-Q>7`> |jS6E~ͥePWy"tLQ5cw¤Sgԯ4u\:>+t뉥-s⥟iܔ1YɔGhB|"3:c[Ni#FH6ypF_{۱5LI؞/.̻4{o=U X Ԯ%yLK4f%Ow) h:#n a=NG&p8(3tjgv^z}x - pA,cnׁEMSWtxVש23 :/)d.9W*.3̦0_ޮ &B9dﯼLPS]o}@(o18ZJSTaPtZ@c,/~V|ׂk\S;IA23\Dצ#M@0&$ܫybfIDZiH@4%Ct^JyI@2W}*n:ҸatT~ ~=[r$4 >. 芿'씜 ހay2fKJ(dkɭDZ@ċj_W`̈ҿ)aR+yD 1g,/gq3;ZOg!<|aa}껐N]es~nR;&iY'3oO3YQÑ۾ %A^׷.I/csO+P@șeR*BRwG- ^[5PMHsoqI"ɛDZ)Ǚ >OdJꓭwo ]_=RE|T/`\{ZGs-m*h.?7L[z}!f3%榰sxZCw \RShc5Є z"VQ$V-y un]./,) =+|4#߿'펂 /_Z]lKS'YtHljUd-B O>KPO|k>4. ͡᥆RH`7l3+``!JE b9m@?$FǤD` ELDzGaozH17eãN5!:ӛ&nW巋<F5cUOT\x-4h!M΄F R5a fU=cn@#[{uU )!䪖;sn.U!+EKmX+<$fIl*{ >阮 q% ;4*ET `JQ])㘽\o#/LV63QuQtfvXh(7AObپ+n5Ehb !*J O_Qe:Wvt8 yӶDtoc0}@b/ ߣx|6*gS|Pb! [IE*[mX "&.YjK;dC;튌Wc(Xk:g-M% vVJKt_Bw!zmeMVN]k8^ݹr$t9Cwk /ᥧi2;-]8/BEeEreb"аewWXy l&_ߡ*}}}3#V:]#U!بpMTN@'*Zc}00;2'au̬MtV2INޙZퟨ(Ʉ>b{") ޿2g8i5?R@ID'洄pLep|lk=&QxJ&)n]tY q<; *1nZPRTmRNPiyX²Aqgm&(ICkol!O}H ևJ_k'DLk" ףPp|"X ^1lX=p(hp`hOS7 ah|u"K 7L CϢmA4^FśF^3 ي:ʧڛV dZ-$2J͈ `{դD**+Q0twMfフ&5p gcy)]N>|7i4$zTMu}mECID+VME)a\| =JMNTYI)Ӿ({:TKoSCK5H$ 5-/p ,R h=bUҞM?VM}xܛzB(9Sk] b·;AgH $7Zv Ywݷ}n/O:Z-9l[Gf?LΊ{yc\-8Lu04Cǐ( z֨Z|~g,۔S*ce" Pf,L TQcEy w-݉ qU~3WZQGf;4Hc䡻ԇ3vuJkO7ؼh`z)Ǡ~Ev|RFqzphaQvlتI?\svxt%DK W@bZ5#.`HԚWW z L/?0s&7eAjFbdL#}U_вX`,<9K&BX dڶ8&Lɸ|@I+ D):[}xD)fw~֖/&Dt~`y2~Iz EMyNK1IG S :/|೴p;Q)kj=pqɉ o} jv݃(3H5n(1O'O^,gXm h! Z>,p8yLmWԼnncsfd$s Yyfrø}/{O\CT "nf [g g(`&t|Χkؖ j! {"G"%ihؽ٢7/  QH(;r4'/sXbȪ Bsh4LT:gd;OE{ QBjPM5/ `=n B';I1YV1iҕ5zLnB2)@#wcŎ`%E0BZ(@T4^sיOWǝX!Q Af* MDf-2PjGkQ(jj{AVLֲ8msm&KY iL{wQͫÊBY3+LLlxes ja^u$O6ޥQTE:>T졲Nh*Kه"X kQuG\"c$rnY ♦LJ|HB$+*$ylwf2^ZVR~=~@YѪ,oi87] 'fR1n6{O^ +eQ PF)yM5O$+ |B/Mxĭ߇>JH+VZ̝зO[5}hX)-s5&,` ,P/j5ꟄwOE6~;`XQX"pU&Fs8i( 7Tш+a"Dsalb˩shj1T5LGy ($V4V٥k˙_2G`Hv=o VQ%zrl6%J $#Ƈk1SH:VY]z7NWw8{oNpY׿,ʴ ~8*<7K1@jBx@ڑ<0O>%X;^Tr7a}ԽML g0v6u!TGQ3vX}9mj˻0k1{[-k<'<~/8~-8}G6lVyPQr__BcO_+\kۈCҎ$&,F.{̤0ΉQو $Fyk1p},z壕`=G H?qj!G2"ߒg~W[b_ZNS,RkGYgVS\ْS QKoVNEZf GtYSQaլw VOj}3fĦGV$YTu~3qj\V1,K(l_|B'?G(q- [(NmtW>n˂Dyt' +^;'8~!5"=T"hM8f\gq"QI-+ Δ;E :ߘ37ztƋ*[l p@/sAi<r95Iz^fс@Ez;.iMb xCI,QKʾmA loE#=T19H,n[k'$1]HtijE!Pwׄ9LFJ֪?1coj)z"tK]?W #=j@oEE5,;eopQpN|xcM)?15$5w̄!qE igg1#k=RP YQk\Tǹfӓ}0ieo"i>?]6L, ;>'}!lseKX,ϔېU#GV'8&Ƿ \}=9'k/vr̖Rg_:b׉ou^[U;Wgk+*;D+Ǯ=þrXq- kˌ b¨ͨąu`tFNoaf $ƞͺXQ0?< pֈ {Δ ~Tϡ^QYYdՔP}6Ϥ$Y#+Ȳs'|40BU^ߐBYNuFjscO7'xuqY+d>5bGW .Uy.ƹ!(h/Tc@/4A:-b6Q;Q֢lƦ\z,;uMujge%=v(#Jh(;YՅq 5\C')>!%ৣ?zZW_iAwNLO-ΗB,GסߵIhS*ߺ#q\)%}ʺ'JԦi;?1oph]~S!aVP^ Nlg)R$i0TcVLgΏ}AB+Dcs}i QF}b [.ٌD0yÂF_ip['Nҙ!pͫ^sa+Z~3G_l VC;Ƕt]JkC Xdos`?pCIC+ЂGhd1 ^|\;|DOf#;S\ۋ= "6UsPJp .\c(Z_XlMn/'T6@(Nx BB9&Ye--V{K@c ;j9qtÑoJk^ch%2o{}w@_}al[,EWe.!3b[qż7*BuYP7'Tkll焜Qu ;A*5Z`|YZhH5 6?uPp#XuT[R/" <Ҝ϶ׯ k5&2tCPچk6F).4mOB2q]eaI[4m$9|*DA,cZ"1R6Aqb&Ѝ\KtO@*SoFhH!VVrYgԑ ݕ^yeVň&V_#>W8@_yJhnakwMgXxڞeY廊F';n&Q7A!n01\%f,G)')TCg'VG\CNG.1_4yA`2֭m5`r8)hE,Fɾ"z'"͏j!gIJ~AlR6C?Q&9=P(N^wċde$/GHI ~mrnP 8E-Z ت/ aٝ`:^7)21gN)Ǧ t''F7֩ņ0#|@e O΍K[t7up9 4L55oLv 2ޡ%OJnzTWWJ'Dm}w<Cf7*3||hHZLV:)m^( : Pe7 ,/;y.q`Mp 16fe#Aዥ'`oj\ݍ8Eݫ{ JV S>$I "!ݍ@8: aG]TsNʝƭ.~OZǡ/ћ1P쥇.#4C> L25$o;zk/IAVyC/UWX_eSwm㚟q!72r\ܲNIEa_Әd[_˪i_@tͭ/:/ ^ 'fxnfKaC5rkf/?bGg֠IjCp!H+l H`DK>}(>Z̐Z]Sܶ}*' 62X[_L:_P֪EG4V!9 oidڪih3\rg$_|&i"=#UxZmO},vCjT.-5 %Vakzߏ. ) pj0c+Kd8Vk-ێu(Xe>madE0l6$;֗:O,P:aen iaL dv.)`*b@T.Tə%YR=]9HHbySj󊿻cpkK:8!_&&>]p民j.vhҏJ6O#ϾظV̀cme)u// hsR+Sܨ1spME!g%SJꯞxe线/k62mCe%/iDэ>wɡ?/3R""׍11* ä&S@;mR%Rd`[*ãJvCh;jh37tC7JbB Χż@GTէew8_jQ5^:}!җ:p1w~t̀q9cO+NAR`k>2&ݘqI KF˥b = 1bxXSBkDSRV)5Y?9 ";+WM*HOj hPYF0jRϓ]lO] U\ѓ FYw>*a[U2ǹ{CLqrrdPNm5%T){h6]JZ PV]Kᗴ݊r̬a:c^ ^Og˧U[Z%r49˵l6I{Z,sPmycZxg4u$X~&iF>AC֑_|T]#)f Lkkh1Γhà+ kk`c9KCl.5đ&;K3AOYoeJ$UЊwb^C϶~$c(>Yeu&Zˡ-8fؒ: '`Ku$Dž]D~'LmU$bP^f[ҠC䰓?gu r=2ApiH2ຎ 59'͈'zٻbukKܳ_.cm%W0^L0..-s<|?%tF|ȳ-[Bcɀ, F(lKha=M~kSmp>аM>?(~MKN[yԱHR<6N^_5+)PA2o'ŃU-d)ⷪ*Ē&[/G4~ vD_~[L3P[{rfۊY UCoQX:Nf_[pj|;*Y좉7e[`9 CZ"ˎqHS ϕ<bu y Nrvs 8ff# 9) DcSc L3@V@vgшSO&m-ȵ<)_?m__n=MS-ii4t_) V= (H<*ܝ?4߀Ov 8_ ;[u q#Q*ޔZf^;ޒlfXMp4acD BWk^{:~HtjoVIk6 AH.1@XJ5ϐk]T.X=ܨMN~.Q}Fi6Gl*^dɺWĤPŔ*86\I`"ݶ~qf^u,jx[%[xf(E[3#߲haI:n8ko{7Y`†.ShS +O$MSz(Q\’P PC? BL,M^ )Y @Aڟt9/!&4Gޛ3eѦ(y]x^VFВ20BQOꂪrYlT élj QBۥ@T( |&{Nto6Lf4~D6uqFQ fDW+ QFn.Lj+GmƩrC)ALFjC ХԢlߊĽ4!oH줶u&>D?~g=j՝P+L<2z_~.繀!@i1RX 9~ѳ7OłX[Ie@DT0qшy;%#,[;5Q$lϧ#D[iKnkuKUي(7ct_ם G5䡬ۥBI] , w&LD^ȌOUb^]:_k6"ݜ?kH6tD]-u 'U*U~60ѳIs(b !쭆li} O l YZ^O|+.@Bdj`:\"^QxT Y⏽[p`G"/\)Tq-.?6 "d4_ UGSm#;u]VURD;8~ &mA 7D,W?:$]amik__2inU`<2꡻zym9œ (bft;Zv$~ X ~b./!щNp #_&!In|9uOi9ߚ鲲 L|+k/g}  K7R"5à过cv±FN6dʅY@]!(c㗮LqTL_BY̎x+l +4v=L4_i(kSwKtɢ D=;3c4(3M?Z&__)z'; 9GnENZJVΔlpRPbL= )k{nYW _*p'‹[X agGOԣX-y|t~/?쇣/,T ^"Qw/\7 hqڔ(I*>A9*\H c(ATeכ#k iR%A ]s +Z-fx0;f^Drj^G $#[ߋ9Y?U KhS;YQ:]( Q1TE<~)U^%TRw"`V 'oAR)U,$.ұy$n$}oZԉT|Jy(\u*؃^dn|%J&LP Vu^e'f< fgpɠ Ԑԅ"\+HS)!pVjW iKIePEtm v}`Aw"^!^!_.XƝ̫7ak$`E`PkXuL]0iv:.#{ءDR=6z1;;O+mCq>^hRU8..llZGA\ ?vI¨o8e?&uE6z1~1pKjd6jqNu1SZȜ~6 ^x" ܺ?zq1c(h.oC;^_fu9n/ &~|k.+F/Zc3 sǯ7u-džxa0蟉38S2T??2-<DO#Al` y3H]`U١o k O'֋͗9^BohI9W fVUN4'w{|jlIYO@\gr\gB᪽>W 'H z`2"ijJsl'' Zn wéM45s Ȟ s-:k{ endstream endobj 223 0 obj << /Length1 721 /Length2 12621 /Length3 0 /Length 13198 /Filter /FlateDecode >> stream xmupfݶmltl6ضm;ضtl?[ծ51f17Yޔ;7@YLIww8 aGSCgK)7@lj`b0Q*c5CK[KGjiluuuwHla 01+hJʉTv6#Kc)5 w0ڙX?\M3sdEUTŒ*C;q;g'hScGmGpodc&#SsK;8&iglb_BNjH 015v35P m]M@SG;?(C[K/Άu3,,MM,JmfhWYSKϛl<ȿks * O[hbigPv  -L:;Z3'_݋ @8:9#]c$SSwSce1OUZKO_Ѣ HiUe&ЕkmT! K;|7™#;wͤqG&Iu^J*}k^ ԇ]AA\G:g*LfH93EwClǯ.<؉SRej}"VZ^ 쮁Fշ(`yFƵN#yg hQ> 橶¿C&Cwt'4k6p7z R~seꢟ쐌r$sO՜g)II\8ix.oZ8>^9ٝi@<6Enx_IIlx(\;mP72]#puklғh^խDDkOzC,z8[<E>Ak$_ck(MO"jwFtWMw|vD sh.{ /Щo~ZRsq:q{zSLjp$ιEy/Ze Ϛ:2I*;־'~8g[z Hy785ԙ%Gp% 1)/0J:SDf˾_dO Dw I&4?HT8JSjOS׏#v~h!ZF{s#LIalOOXm~ZIC==ldsФ'8y  UgGxaƖܿ[̫&ό+ؘ*`C\n>1Tο7/r`UVw+޺]:.5*ʽJ)za9;{K hFu lb1K Qfj,񪊻&儢Q,ous&D\ 0?mFEnDۇ-!쀺dvw<(eS,ͫժYl)M᧩!~S.`^*v,1 Cн2_1sQ`B9CڔxM `ydڱ53tWY}ͪwR왕(•cOHM݁}|)FVlܼ<, 0{fW(|fW!nyv~ﭙY_yo>![v[٘P]~(ܬ @H]xlD DnU) %s ekjhmIqio7ЍR rm9d^LCa¹<\w f&2C?6bƢgafИL`:e `A C='(e7./.>FK&coXr buL Uu4],{g5d Ȗ {ofgJ2P2c%9//JW&|5[ gky'r%5qtd=~`vW \}֓Tg&g UW7n հHa"^6X-Sּ;'#I|WqiJnǛz]gاcgM 29MUvE9 g(OW':m!kST;QMUrdТ?yE=4٭geÑh SCMɸG5e'p,`M&@1'Dqz!~ N>̝GA|$l)  Uڐp$WF&AO"s f=Xҍ!#$ gtkel ؗd`7&`OSRr4wrO?o*]`dSDnmXzj+>hP9K͎ C\i,/tF.[~ rmXhպTTte6[.4;{cop(|)7>] -!{(Hʛs+"U 4Yk>^Naq:-|_+">{ɦEQYmWh5 OjZE# J5O(t}Cؾo1=u5&99M|o$́aF^W#_ؖiw|PX'Y#Vd\,-WGG~wKsw6R%ǠKO=Jۈu KA2>Х*=L$A929|i3E rp5(kvSYʇ(xE],q*vؕ'N";BO^&l}!oI+Н kE_ΕR?QmU-CKgØm`+Yq~Kv92nMuuxF{3[=Ja̟/-Oq~ ,kw(#ze`\ZGptz#O1'@6$$8/>h A2y艔mX4 4A<ʼ} YEOpG <evl(@GI/ZOGDNI{Vt=m/m ?'cd1<GDxm?>ZUJ!u@0pH2 +. Q368K^+9.GڷiWYj'$ýVMt(d|g ]nehi絫U|(~]nI;'{o/=DnOE3עIt-P*1++A>f*-8Towasm@4K :Ă;3elJ?Mzcb @k3A a;>va}4"H~Q-=wd N{h$]omz0|PeE/֪n'çBE%ox$X dw?Έ2ٸU  gƄjlE`GIo&η-6Z&}r!4rH|0a|G@ϰtӇ7`A5[l\ i6¨0b2:Y=8nWwŃ(ȶD6p^ qϢ%h Hxc'+{_,**..HRliK?ʼ-+{̶p! , zμ$NR v`!X/_[>%6.ǖbҔ4@ǔ  V#/,Z@#I& g$J&=P'""m%/ p*씗Zچx><޻n.+=h=Klď#\ߩSɖ34}hqo[/;ڢԌ&lYM}3G0!>u誑 869_bJ 6X.iyi4l)._ OLp7 t=s>[!1=>tO̐>JU~CX4:79$l ǼϪVv-T `7o6PdEgr:W2n"=*][*1Dor$ Ɋ]"bNB2ywD҉;& nrDZ '@Iv~"C>+/y'ZE^"'r7U+/ړTՐ@i>a?kr$h|z5GADI<\H<]Rv.|_W5[r/x9kmWi~2)sr <wvJ"_JqyOFr]>*L)<օUK:X]Ņ0v[r0['D- ) !B'<;D> yOZ,#ks7";һ# A+RF,31"/:1-^ZG^*h]7Yɳ$˼4L7U%Z8Pݱ!Fw0!u0VY"[אXسϺֵ*h)0߸V{96Uɿ0m|o0=ϵt6+L/-|pŦn$bZag5:KQU@u0z.}|n1t`:ݕ`ISgf:/`VB9~,npogT l}CݧWO"[Pvmc|sd–эf DPZ(?~ޛHEooy@ g]qf+SYƻ -]!-?Akfky[ULMc 0^C?[hO]DU?Mzu6 S~:y،6Snd hw)z͌n$b?ei_J{ Q㼲P 5CuLOySnsIX8'sHhyb-4CHۿ*?#SO| H97M噲#5ypM aw?2ͽt%>SoSMMrN="F1ѻmVD 0$C60rh1+z"j*RCr.UOofb)˗GC1յ0芭yWpi6NrV "$V:p%c>{iyV|4Lh@)?e|̴xyp$]]UA#d^?]K{)K@!c^'iI(J6MӬ:U ='mǗjF+ǿ`7M"DeRq"^$hIʱ̞L}mRu# B"9vC%Sh9{ Q5D_n?U2MS0N;B{~VRl@`Hl"$ `J k~=BpC9G ln;6A@gXYn1rsN+tԷٙ: IYz-H𾁛.u;$pECxL@Vǡ'cdp j,ޫt720>{u:kxJb0rkO17.*)a%k *JX[GB.cCؙ]EF?LGa z47) דQ U$w\muqB<"t7m2^ Q@p=D=[fwpRmLFYG?ؔИGc* XN̨^EݧB,j9zSt{nZ/ql޽;/Vi۟AxS9fQ5{!Z퍾~qFb~3hFuD!&KKI[)@{pJ(7>8qC,, g';bƒ}~::"ϟL_%'N{n8DMB4`䖑͏)Q L~]4DlXPΤƤj&~=ҳ"FC*z:FY 2ҿf+)Ķ MǑ*7VXԍpiѱ)G5T,^D֥<Oˈ~[nYѳn#ǻLJ6o?#,tkL]9|wMx&$e,;%}l؀v{o1+'#՞e&xת?]T1XqE*'c*!騲^rZ_x>'aH U(hII-3?Xf81{[-2TO!^Ɩ&=ģ\V,|>CȪ;E^x2~&Dd2zrnm)s2B+z#,N Xet8u]+OZ %,vAXv* *nO΃T.\#TշbB7^C@,T7'fmI K-b|B?PC݇N˻DdqZG9o.6edS޻&Ef3~+|`+Bghn5XWcp)%%[8!L4 ?(@ UŦ5&CLhv1fDlM~%;ZRM M%<7q,y #>{&Y."M8GC\ŜhvXlH@e4а2!,}[XqB"W6pA٧G3Y%m%Ĥ'~'d`{>+E;Y\T{qo)/kX܆<^z1=tOU|v@(ϙ/7 4MLNޗgqfхμhQa3t|tXd~CvU9ͩiA׌3?樞.Nxa,'iP ) *s7.K$\X09Գqgc H8ArZKc35bQ! y'}&|<ŒWYR`bmʢ@$X%:ӌ4@̯V^C6LVW`/y4+GxIqs8el8}z\(rs!̎Ex5 c%*Î9 l@%W92"071G@9<`l^,2FiϬ`w>SLUQY(Fv4tʐKo:bU?0$~N j>y*`Zfэ}N'HJπZ=~ rzr>s h,1 Xqkb׋Roo 8#$c_K9w\3q(gXrE|`юPK+w |"w11bv8Ej.v_DlΈNJ5HT& n/9_uuYhx{iجJ&[fsϺZ\\(N!56\(:ovIY@)vc ;Y4J=W3H߀@@? Cq$e.yݡ4٭p+l |en;][m`s[E p@օRӬP9C^[jM(P}QEnDWK7Ld^({خ۴u+Kbs,QEnsZnP1p/Zˀ݀ o弄~2*(k( Ңs%ҹG AtDA\ֿb#3`$SNl;5{PUϞAxF=Dfz#Zw]3 \zGG]-0Ia}J{)Vq! !hއK&kVlh"YXe4hfpҾ0 w| ԰$Aiuӫ匾-:1Ahe!&FgGV 7~&xnd>զ`d4UHeaI|[|)Ԏ.>""C?;'`8 Y||%vlH,8:ݲVPw»E"_*"sۢv ؔ*S9 _&xg>E*̇zu /:e=}YC N-H?UL=G=*^N-%yuYʀj4DN8[&{Hyc "Ȕa%q_?~xE xy+'* w*:48xim9F~uV0{C+iS Etн0kΫp>RzuJ[I^ w5.8BL,àB`-XD  h]atz^%WwW߼ 1~u($|L-Zϩd'zt*^T%5߷nҘ:z? UhٷBYи0Cwq HM'C7&=[݇҄d9擁ɶɃT)Q^9G\^ 7DEڻ\l5 KQWipiS^N\+{y1 _Re+$ DVDR?hltWd`<1-@,^IaGLQ*+V$ G]hN\M#Ssڨ2%PM~Z$^&7 #rdQe@n>r on`#ڜ"jƐ@GFSp]~ py u r!*"JxP@|.7hs#K(ٺ"j2dR<abR?HMP y%=~'~"7 wf[\/]<*=K.ؗ_;m?DjWHBn 4/=[Q1&=|FwΌ!y+,i5 ;O%)t Џ vbMa|psٰgU^M%я?v Q4XI ״$]|7Y3[ iF +eX#g/r;y"U@ۇ%pcĨ{bVqC&ThE AfNgEVbKg`))VH<$id&8,g--N2RAw{P8JFD O`kV6gKVsB1mArb|g_m7Ⱥ]+gnxTmoG͑IjkK.OmƍwEFդYqugX0%LzvET04M \u^E;ɥn<5v(ő/~ron :mS'aWFvhSpN; LrB6]<ܔZ 7)Mǁr}\?c YCFyۓ&o'go)?lW.J 3*s-wx`Kf-x3p2O955deG!lno=+mz"uE#9.%1.$dyHjw2zAU|! El7} iv/7m l⯯6w\$nI%"b}<Ƈ8H>|ȯc.KW k`m/L3U\da(% LLP@h?*vr@S t:Y/))q~'r$SRm7c0t]NRt;h / U=}(mKVߩ̤2 K U%oKSw[K('Y|jVC4 _!CLbW7H+]O_<:3,"aVEEN9DS MaչGM i2~3YFKCbN}@<ȏ#[lT3}XyQeknt &[#Zf}Wh?gqt(Oj|.4FP`_JU'3^4P jfQ{Pix0Cа^,Fݼ'πj|\'ϞP(?yUDJFJϽp ce^#`_zAH"18}}+[ڨd&ކݒ/H[.*tpW&/\R㟱#xD MzIFМ tTK>6k GY׫v-QYhL¾8:C jpAAַB?PZyu endstream endobj 225 0 obj << /Length1 721 /Length2 8997 /Length3 0 /Length 9594 /Filter /FlateDecode >> stream xmxePI-n 8wNpww.C3^իeW;ٙYR*|6Njjq d0v 4fU=ƎB w,,t6f [agc28:@?)RN@9WTҖUI+` lb2ȁL`G =ځ@qrdqCbg TRTPHf9?`'G?h)NY6Y&Ye!nX,(3h,OBhH0A;(tvN@@ TlmA6_"d ?! hr#k9yz=JJ07%vf @鏖ALϿd&N@`kkJL͓ `s{?tM! o n@SE;ӏAVM!e>ӓFꌋK]X~K3ý3+5\W4)[WchcQaDE>k 4mM./(1sedTv(’f2*mrV2AMg'XӴ~Dw} Rmw2L_\R)$aB-ζڟCɧKe)_-0$݂fYosҮ34 <^V[>\m/ FRtQ~ۊsS~- , KqӊT5(, qYȁ QΩu6,FOK۠xVJviS#jHs褐9?7b4QDdk̵lEݹ r'¬(nyã$띮,`?Gf>ؽDz@)e o]$0wɩMٺڏw<' ̿B~~~4,4'W J}lJLjNtS5+z.ޒOOͶh5K<, S%&< q!z8{[+)G_Bz1wDbe-8٧NU1mXⅺcϡ+7~4]S8xx`Z{{q Ѫe=iU~[2 4WZkP^z^Pn[5wݕ1PJxGsXs 7&X%ˮZlN[Ģ$۔ t/LB>;(+Bp*6/pi{1KݲӔњ,y"km@W7.$q[:WDk*`y+G[Im1K-LE6Ʈ_U &"}|^ HOF캲A%[{4Y>YI<9,Vv8{˵܅`TWjyvA.G $f0:G,=8t3[ +Z%R oUCudC\߰g_?H.ctGי9?&}3SyߛKr=''<=0viB(Rk Ԇgi;fJ} E}dD.K&rMh,y؇m!=wz/X[j!]g.'wNlAU'rς =os_Z*;♂!\ޢ)]d 0T&U'ҥ KLHJ1{ptPg]^cR<.+AjXβEm ɣ[ cuNiz|ZSG購9ܝ+`0vt'ϩDMG`0.ʮ\uj @mnr{jsw\b KVcH2-fE72gZ@o"t,\3pװ:uYd5U<(j?2Ef,NbsDeo0͉-Hi55<r7ûR:Ub&FC[>\RiA*Tw8yJ1]m>Kwx1nRß˽)Pj9仂@ {]2vsjAm^`DG,z(a r_*$K=B}J~$dvl\~hˆꙭM2zYX+Y@OLSMnՅҖѷRn$fEwqK:{pANl'vpk{K[^!s͐6-+lg`vPt1J) yh#,Gq #3~UvRװ#gU'@rj/- Sn#%I8Y^쫧:TS~Z̵2rkt9՛>hȂ[0Y±*ȟ~J 31Q?i,m}Hg&O, {/Jk#H@RzѼbUOF^pzخvbIqRcd{)G&v{҄Ո3Ѕ| '_'c'߾WڅrYoSvYD,OM˗nflbh3Gˍ者:pz~s[ńbf3!|9I&& Cj6i8^bF~-<#>1a7=e~#gT._y8SCrxI sn~tw㉽,!T}Tgjȓg-c> O]f)-j|s' 7S#6LsXKq=biIWA` |>?09^0.Ć7Jn2ClO 7_l`0}he6qrvtL9i^l7R~$N::JWx}SMG}5ɗ!#C5$R.VMQ1Gq6lMw`P[xX!j6e,iks@kf\xKӾ|KN&jL!>m|@h o )L6Fp#`z";cbwD[(O, rLgg=꘳"x"]L;jRPC T$$IJm8\`H$W/'6I6^ܯR~pNef< ϴ hcI01x)A !]Qi_йB1bdʕia`)[MM*;\^qutӯ"KoXʄ}/#5Z5@z;YUcڢfE$#C"{#UWX 7ԅGx: F\P"oU^&< 2i3f¸6~[юMxKC}Hgȗ[,6B̆#L@Tr qwnۗDZA42FRa!ae?~70 ڟt=.L]Fl+2I$]$>K:M5`%x Z" 􋥼#'Y]::#"^C.j:Izs}Lw+g]ۜ)ʂ+ W ˀ7(0#.H'_7JoɶhN2-dP+Fd>JΜۜŀm Cqw{w wDLQjdt2jWsW v }F$:aЭhC}YCյ~ăcLZ^njĝT5O )( _jLݪ"/I#'v!y nrGD4MJ ԯ`KZҐnb*m%ف>K6tob8}+tRqKov}2 jrm ;(c#>ek<ԯfV~1ֹe rp&wh+UBk~%mGuf9x='B`_h#p LZC 1W)xJk]?_ﶏǼd\Tv,7U"N{3XqrH6hefۋW3>3+1:8,#T'd>U8a}bWF:‚$Vj#&#T-@4 hX$MzRz? D>HkX+h ߑlR],:{b8iز6#6}Sa+Ηǯ 옃V]ȑ$.ܬ͂=̴˝!<%qҳ OϴDKd'deܨ0NZc8Eڳ1srTyeT8YD7aTbGpZcI?N,8vxd72^`_=3t5H^Y`~P~LmnR;x7 +| }̵(MДTnNסU48T2>r oa~7n֎lOnFj`Ga%(e8%b= ފy ͋C&k3)8-!8 Ooz9[7bxO*ri$`95(~(ss I4CT؃= AR v: 6 c1F,]›\mi|Aai%YөK)X+wqme%,0KE&ӺxphC~+j PIËAl @2~2.6ƃV=(e~l WNk KcR+RspBE,7)YlMUg+٠^ōbUsDɻWhF G[cz2Y MsO #hE17!dFt\5]5Jӑth?l0W{n~'HYr8ԹZ-|HKF86W8xZ%ȘM^7ZZ Ze &V%OYV;QZȠ<ǾFR5Y53SoڬIGV^_aijL$"N|S~Gl=;z?vؑ"jrx~K4,Y 2pMX&Gs¤òMf4Hd"UAv%%UiNɾ 5@ Hv ,dߙrɝy>IV7O:mzhJ &+2B C2@`_KWaI8y>؛SS,BFUq<'ݳ0>;OP-powDSBWS&N99HTr _I`Žύ׹V(ކ46vlo1kyы:OM*-LxEHp{yt#q9I]JDZ95A3Y#j6sks*d!CգDꪆ #8IUVj`a*ЫHX,/+cO1)9~Ș}^ZДML2:_c6v1TQ"Y _wtr ]%ES} y3HN.;HI&OhhE)θS@ (7}ԶP?eTzޚՀ\`q2}r@M*g]_Yu^S&0{٧_q$^,kD״p^N$Nz*t&=yP&Ǵlәִ͇?{L%D̴>)GHլ"*E`p"Qg_Zn?Qq6PxȜbh+ N7sD^"]]=pM EhWB4h&.Lu#1D5&+KIJiVu`8Qm1-KRbKfbr 4m>F`Q%d'iEfDwxᒨyXвq9v\uSw iEjA^%i0GAQNN!l:"`Cj3VU]jh85>jD6EMߺ6CW[얺">3LV&@Z ٙ‘~JÿHs ;/(QV 3( <Q{9 4*C;5TL?B| ,IQ"[|pvsVTEO.U|bcA*AԈ[w92G/+<3]RfQ[ /x$u2]*[mu wjJ ~g<,=eh8]h,n#,> %آ: OFtfG"_o endstream endobj 227 0 obj << /Length1 737 /Length2 29377 /Length3 0 /Length 29900 /Filter /FlateDecode >> stream xlp//gm۶mc۶ܱm۶>W_MbZ^=]=CJ(fga`ec"PSVad`` `c&%v:[ي:&{F&&FhRa;{G 3sg c Ԭ M,l, \- x\]]\\]qRayMI9q q9Uq-К@˜@`$0s$C`lgkb񯘜+LldEUTDU mMd$quv`h6_:fd$00v&0YB 7I[S;M\GO@NG@&] mv6.GY;-wsDLZH:?0rұGl$f0Qp{gG,?M6ֿR߂Z֌@l MWo5oΎ t*]C?+!!;w/ZF6Znl>#O.w1ڲ1weZshhl8촁*2#T6Š v,L}axb20\w̷f]1>\L X&9c}-PjOyC)/8cAY{8v£8.9r7,`q<ڈuo $,/hK߼<0L+RX[SaS#W Kd+l۵+vp3Py"}MpP)~x"G~s۟_W 2kSG52n뉗'pwwZ]]!y\w[j^:Mkf+g]zYaCksclU x6A252i zTH)yDl$7VF4jU*~`,P6Μ?~0ĺB.>*l7vK_0im\Ŵ‡vIB<5p15C-mX/b0[pU6qG*;y@rXP3eRwyBĊ2+xXXkLͲ6̳n;r1EY{-R&? iWv췀~o Nd֟@g3qDљx"IYq! ȳUʱyv6x%w  V 0Ɲ`i$`DOX"_4@ZFyGQ1ҍhӢC8č'w ֞GT}C~J:_ eP~)PRhn8NdATCH({YAJRkGd%^q,hRNvx֋ccCh_Xzy\!dV36Sg0OE]=.h!&VrB^iGͺ~8 UL1V ؎vBu)Jy+j #T@,\ӿ@v!3d双7΂'|Ԝ!O RRϠ*hV;*,E|6x 9Sf57&73!"2|.ۇߵ7J|w|m ;G 9UpSHj,~c?>8nkirꖡl1T$kz{#A_"VDC;޽\ h6ߋKOstw߃cyȢPcՌ~pߺktZ_[#n(z-T+6a-zaos>dAUmYl@5hb;4k=(ael#)8%2qo!;r%AVqֶ(I0w5wSEA횟C^'a3Pֺ}SӅ zPc5ʇ&cf AiQZJ?X(aԽ]% YM !&tF~5tg`e`x'h`nCM#b5ъ%1~cL]Ɓmfkd=Jt@LZ!83Q0.QSS*f8@ p- (`0UG0=\0beSk e6돎m ge)קU{]d}*ӡo@poL{u8~GZg$wv=#mpzn}żƪZdw0-zSOY# {fϑ+&}W8rU#H5N^EMlDWdW4'_4O=\>׭cS̘J6]Y_ xb:xga:W=` ҋ z#h1 ao>Zx[6/wBơ(@,k#䡬\XF AzN]V)4Dc-ڬΔS6_8"UMRx6ew|R'j2M|2dl{iIפ;3ro;p*i /fUg6㮮 KPj{Ayn{> D"JFc _76ojPTJ|!@rS6j*]$,a_lw6* y[lU{xlB&%٘h3 D[T \yoHwG SR&t 5_QB(437ع[865/+o C9*&V)Ƌ^ $ *Mj~R/' U_3IZ@,ey׳ـVw)_,̻ b˨rƐEJ~sq[sw3]Q׺!MCI .iȅ B,[ނE@95ZpURwERx~+>kE>hILWa)Є]3By7-3c!d UeE{4T R yg3[1 A'{{:߱fٳdVϥ z7(c~|?$Zڛѵ%)aęxmV"xR@VGP/Uc<f$m.nE Ж-%SPsRvl̐BIo3ϣtfO~uL0pz̽REW]zǐߒ:ݝel.ƙݍ"RV5Ttp'^Bi5[Tr?GbZ0|^Q%{HoN}b^3]'g]uiVqMdA{Tw&+ż К},-a#W,8d5?fIa\QoƻȚx+ 9}.(脤Fy]r:JnsYH08I[0=P6r7EVVga=fo2=D~ZCixF4z-*0KS0 %]1Py~߯#fjn ̰=9]owi0?zA]7:< $mդWh4_8A,]$.'Ale@kㅽK$ n}BfUhqæ>-߬YwٞxT|YՏϧV@!dyt{I ) 5fA/[.}![LA}Xd38#q d,l`Bax4ۅ_CѕZRrk}/=3Aǽ! s)"ǎ:TwAN^:hm9joCF,s޿*RZ&$VZKLuT 8f?4Dj#dk3' 4vK'hmׯ4wu|svg{v"Cc/W,02 L-AܰdTԺ cv2It!۶Rdt5_A yK Iy:%;Spn( ))Cb1n'vz(#,'>sOײ.{)SrOctFW>C[+*`Rܵd<:AWixJ]x)h'PP͕I?vPGƼ<뾞wbQl;u4>*8ߝQ ec=v"'oۭ0rΧ$WZ4/VShh6YFE-5^ڹb÷Tlf: ̕;g*ezh~nu(3s cSԿh<&1`YjFz 0Tj!78n΍\:f&J:+>[A:!'X,ݖc(¿YnSs,Fu@&HX3֐4ۿok͏w; +FZRj+ Z1|L61z7L]#p8Οǜ hqa/Exj4kk'+x<6.\KBiy%N[KJ+- [99+Ȩ#P5.SHdo{ʣ,NAV~E|C,[PNƞ2ªAQ4gP*t3Ic3\>82jIڊRҲޱ._a~HU}h{Gmw{l KL*ΊJ??(w<6?i`xgQ|X'~8GV YA$`5.뭲v#J[cqAP(b7D;V[B*,rݺ~(bgL[*{8=7Iމ*eڪ VD?.nEVfj IN7#'7oc`Km>PmfA@͊$Bc*v`M7!>uT/UW-{qb֧T_.ܲmۊ;|gCIXM7. PK5pU UXE2Z8wV1%fLvdtLчU>W | 4)#fM%N!O4Zc,,EkKK:?R}P^ackڰ9 VD ?yV+[<ڗEh" v3 PCj4-n;dh|C8C^&1Y)/ᇥ`ђ -RiGcn`@trnzp*S?,U14o/vpZ(mZ84ter #Rr$W4V3vS#19#~cnՁ ](K ҞcDf7agW2*̷t% GNKTvܳ帑BE؈4pL;DؒH=t ta)xDSqe8ju>Wk8cM[XfMmP~QυB|$l7ɣwhi_Fj#^Ĕ< rJon*q纁Ot<;YD )d(D#O ,,(yd5,YȓfyHZmLp=5j1#qdž+5P}4n,:3?&?mvi0)R>SoYW\Zbآ˓dlOV(hC#KB۵ 7Y>W-0lLE)͡-B7MCѯZ '!y"/G>~+n(4ʂXs0sD6 Ӥ]h-7n6"qtމ*s+ ݵA9#AW%<_6`(F~a}=گb(Pk)[!,lU4S3߬h $?į`R^pjíciXq2Zb}(}=3[u@ I/WՅ[%#ۨK w/͵ 8|;\2-,?U #% ֗)O|dgh{_vw #!1hܬ]&W>qqTe}-Q7 8 6Y B=!c:q++Z9-0ʇӰ XAJx}KY– S!r"Gz̫M*@v+SVzm8b ='{e-2cFQZ:?]!J8P{y U Xľ2q#*324\(d'uB-| {RlU3 .'T ι(vW \#gk`g$_ 6q$V+@*U4d"T"NyUu\Z0_M)d_̐"<`ڀïzH*\WqxD0&$=Z*`vyw&$n^V}"re^M.bC4 pKy|hk0#K Q.pkcrEK ;>,s{Mr-.}jN6 Quj@WT@Ic'-)LOgZ$~A+hI~g4xE*y ڸ%5l^O PHW6? 5oڏYoN*즬5F3I*(89ΝP_?+'h Q| Z/,p.dwo}H/(ftE mhPNl2H72,d5cjM[ -u'HHNfcm-&sHZE'*m'3uzסċox^J{AL~ so1fnSN"+qgb$،҈jYi#׃]5B,55ubB)I_#Pm60?jr~{o te2z zƻGC g{Ym^'g³A%"ITZ4DGߵDcғhԨU;!Y{:W) !;gHB4F;Y yI))^C%^k+[}TDn<\SGn2P+afh_6[dXA3de=kjڹ p4b%<8{hY!̝% ȩ4}b_(c;89/6MX'F}dbs2,sH3N`k#D|iV*MᲐ޶gi0: rcfY`wP蚕KMb[yI8Z>J o:''"jE vSg<|<,M v#~ \ݤBD'ȘW̠^6u{5DoKç. O#:tJQ ܤ]u\E޼$iw3z4FW;i`h{t{p˳]B?kI3-*3/0U\~2{-~9UH),yY?* 0V 갋))K#rBY1ʕ1ҶOksw.r+A56l^.D0g#jWknIC.ɲ 2*=s1z>bpzq*k`E8Q^Z_dYdSQoy^yX 8 ?٪E'We6Fԝꨊub©SL2HnpڱP3dC1~_ L3치@QAJ919M8^9yTts52&^J q%>< B/sI]"EJ`R, ٰa*!8 V-N5P.Cd}g+d2\Qa,s09~ϟX( < _47u{4L29"_ ˓}F Hv BOZ7Zh4M%nJD0 /b^Kv^rW6t!r!{o҇j+R0t:4q湤 ĴGXNaSC,3A[Cid`u+ o!{eEޥTq᝱W{(,-[x;3Alx zczU'lgg[_;Ij0 >y54ܒѳJaI F{Oi!V4?Py.˳"߲ʎ?$~#u#NlL95l-VLƆz0QQnXBѽ$ʇPqOߜm;0?#T4~=UDOSC/m2*1z\` %iKYRTU} ~97{k7ur}NtC8~cv7{Du^)vHy'e$\N] `ಢ$ r}ѯ.ai Q6nfat"=tK:eO~LsCrL[ g:lX+'|du~'`0Q;bo !IIˣݝ ")XuR&NfN,]+5|HDǷ}ѕ ~FJZsWfe+rcJ݌pSC=P*dRHe%v <8{aPuRc#?HGsTfғ1Sci8ᄁ$LmBN8`xD;.]7m<KcwMGΥc}uyV931p(jGD\l6 tLM ־J1qQ&n6(#`-;m\-yb?<X%A@'7:KWNX90 *!Fx3_~ˋ,c^uqd|"fy0FoYi0ANM5Q>8ꒆ}d D<]NxKÆ鴩sOÖk#o-mǑaOC#$Yә(:Ŗ"\!̀B?7Jfa%/ޕ|:@|Su&5;0R5C_5`9c;ZonL䮉|h+U኷\-]K5_WEǥQ>F 0R_$+vD򣶋W$m 2gyܥG&ʕ]쪌rѯqZ=/m1qJ]ѿĺ'Յ`ۀ͑XƨtBič !O7 #Spwbmͬ҇(QC# Ed=: CTP=J@m B#~N!߲eaNd vW[u}cGDNpD\} 4˷ivq*+0ScR7xtiq}ñlP.KX'bbؤ.kؾ% l#C.xݫ FE/rߘߙǁTLt N .sޭ+:FR=I3F) EM~(pৗ￟m7(%S5;8[6lbKu[yA&>3޶O54;taqk0VysP5vHŸJQS'P89O xKo r2bRiɜc_gP%08q]848Y nX.:ٹ'#-j 2 StOrtm=t-Yȕvf5oƳ7 <'\VܳњI*F幔q_y2[s5NBrjIT LX:y"Lj 2':bwBC"2d0lXU$nzi|kM$z<ֺ瑪0!Ś[&Q〭⌡=32 H]/?QMb4FdrVP##բ)HQ6ӕU'眔5$KAids`Ek[TjC-Pܷ~R{r>4c$*lɵ8t'p 'Q%bK%~iijÓ㷪 T՟t>Pz*Q|_ $hsGՀue}<7ʱ7/C9)8ЯՅz[].'{L,B_͟U9F.?N zJjpt蛞b:DͶ\12l;\snKsp GHH_>u֊eC@eohTxwDrE2Q|7 q{ }ȨX=è )>,[Ǿֱ71qj$ϲhT+o^ `GPĠtI>C^ST.HҌMߓ&B# ڢldUa ޅdVh `4p^sZ` 3tdd99ۗ-j6xT~kPQr@Bo1a[ՉQ*t5u[5@|uB 'ramͣrV~IuMݩY1p=RZ=OSI\нh0AӦs! sj5p9ܪz|Q A8VziR?X=M*io&%rw2 SK$܀i<3bbGv ]{$v&'KZmJd>.Kͫ*Vv{9LƊh@[.\ [[C-M8헬EyގZ&ع& /jvJv6q{>,LSM`Cnnm]#0F3OƦi8>DY4p~ao0IJk :UҨϯ,]4$:ݪMޙ$D!]@y3X4$ ('?a3B[8XE։jߑn+!a6suQPbd :ۺ+4Ǭ>-d Rn~XOo93 -:HaLO v=nOzI_ 7m^ NB 9ǹ'@q9ElfCҝS?#GHFa2jlaR(]s DGXAXBJR%;|BM2wN$$Gٖ^;r, mG#7 9>N6 ժ,+ao"˶Wj-;SG`a#Z`в)@>@ܧb3;q)>Sjۍݸ /e a*v-bX(Tp(xu$45~a6`'NZy"V܅!Z?@mGk?*KB:+~eLՂ;,`)Zݕ~==8OGL=)yҌ2(I!iqcG>Yeކl=l=lWAA1B3tҰ* _QK;p P҃jhl!b& 17*ę;Z xˋ1^edH9ZZɼE+%a lz엜N<6$_j>Fr; 5bT- |ϊ-V W.f-祩 @2y_(T7 ߴ lF/_5m<gZR&q![ >9a3Bտ q9~$GEL%>A9o܈TYTcl0;O;lz[j &-mhmA0sW&~knjbT!d .IK9Tpc) H7W~Fs9Cu3Hː1sx4N4DT% f v5̽f)]N@ƒټ)=SaŁ`1Ko$؅ͮPZ|eW]J0i:Z Ѩ|"ȼ:;Yb#>amf4&q#{06*%D_2cv\_EtHY焭$Lw~ Ai:je$En%,O U*Wժ#YҌ &b$m<.TȀWrEvx0f&TdÝd/V:먮YW^䳵r3|\D׬mFIFև\5[/H,(i} i#"G@hrM͑ 3@t,#\6E_\ԒLThœX`*$$~2ˆJl1.2'x'P!]e_JӢ= Fmtoӽ$PUZWq4PP5M?f'w0զ9VC1+ )W Ax<@OwtrWUgFR)+*h$glqLg5f0x)}4V^LV.vk ~ B^rq߅~j]q $K 3uvٷC3ҥ$H dNyR_Zd07M8 0!߂2iukEjo_ꎜњrDK{Ǔ2f,la" :#&fJԜvgka^ O$}Ōg }ٙ2:ݛ6*̀𜥡pwXIFǂ6[ Rr8TYxIv'NjlrvQ/rst(_`BB`5jgOPhl2FI;=h:oܬRY+5oR'Y$)\Α7|xkT΃XzHys?&(j`a5jڤ9? Y1.M*uu!e|O]PE2v@*k>MlFTĒ cE֣^C1O!rU# y#6. v.JZ<…$T[nXk59Pk$5Sx_Y/*bn7l􇷀"HaBrfY#gaۏ/o%Hy5aE~ztfqJůP9+bo0u:tka}o0tTkm?WAcRƧťfXfVSc$ N"s } X2u]IԀ;9=~[M s$k\ 3"ȭ|9tXaS MyѻM[OYkqD)D^4Vq,W]EXv]n)^`_Eջ$ј$pW ZXd$ )( ^RH VvJI'}pt;'TԎy{IJu2EE!WiG(dn$uTI[}3%Ox8f] XtLI[og-)_g(g.ʉ kԡ~Ud Liply<_hkH;H{'_jUR+V rp\6׸oOe~7Fxcuc߮=68c ?*fiϒ&B|oȂ,>@x!7o}fpC_VuNtź4`D- |#2K~REKlR?ƺLEu[=/*3OdO84{Knͷ1ZU'+H"Bp=^SwtFM^,ù6 +<+LMbCvZq>Kߐuzf6ZqG[)zdY:VQCtTʅҾ.I,TWO}nc޵]*վYPVW>g@ dV*=a6G8=:9@Oɶ~PKZVmH3aU&Ζs4f)8p;Sëpo^84Q/nӉvEu15r2᳻T$69v&%㍿[( '=ǡW_h1~\p?xN6%cg#ۥhh,hL@&R Yc?qsNuۓ+]/;?5k͔eMyHu& 9@OI!IUKB0M"@'ws[;bfIෂZpn3> O>ȍ>$gξ]e C8 U "0rGuL"*yT.*hT—5g_ ɌsZlK MDs;Qyno:7JYk10䐎Y٘.l=S|R]IqRHF%NYs}nv]u4p)-) e;AAA9:o+FCVqp)xbed᧪$#hh¼Q6"d{ubRx3s5nF`wXG״[TG(i} `y[W(b%FF|іTH^"׏7#1rQCؖ1\bާSU Iu'3W.A_} 56)4 e @.l zF%PoН|Yt+WTQ?*A WOhfzT'őRZ'[0_'d Џ".i?Tgs[*- C6@knYU錫ekP ̀cbrjs< ,{ieÈoT>JNNl8Z dDھrԿQ'!NbP apvdJN.1d&5'Eo 7M_Oʂ<\}K >:m dV&&m[2>nܯ!*6 ͢# ;qeKtC0ŕTxG3<}' nة+`g/h׸D@V\{̎L۫lgc |(yIl%ۡ1``]Lt6좺DŽb/- 勇ٸu1Y#h3-#i2]||LQ}qŊJB]IDEYl^ lrr6xr!qJIT+_]A*sEk-?֟ao37m-p4!klpɍ˯=RRyItQ-3Zav}O3&Τz92]%(]Єk}ׇ-3y^CcP#(E|awb'iAM"%yPr\pF_8zߠm`k}RGK8.FXNlcA&C^eg*F-rE5G]Ѿ~zKc)zkl"vThOB'9NvBx4dU=67eIC-(#B^M+Q4PYuT*lt΃م-bmK86nBb_D(rqADR̠TgEK_z{.Ɗ}MU@VtX ETD|o6/|n :rj}=r?W!VE@!k1ʂ>O)>houѵerD?omĨ4,7S@WK0~T!uEu|o9[o1*hкkuo/LNIk#cٖ1${kS$[^Ur+,SUI34}չto]؞=2 0mLo=TAǚ&mꐌY>'J^8Aф5m^G."xISpOJWdcrvMti,Nڛ7Q'|͎Sb/Eb4a{,וw᧺@`I};= |]"SWpv[ osUk{,+r)om<`܉N, Y-Z TugjhOZΞU݇GhǯBvC'ifQ#iiiPFc`-_0F$ kQN.].rmBXuU 3fw0 I;0Q5G|w%F g-U֏C,5ۖFңifĩ f&J[BG4BM=fW,Cj= Eшhҝګ"O{jqfN h Q7\4|6FѕVB/Yv̭2<5[֏h̪'5 tDUs~"M~MHj[>Mẗ́b#4D[gAh04A@ 2zhXlf7)GF,1)rdeycUc+I#T8}HIy}a޺H y>j$VP4r3pf/ [F,6y7S^"Q'uk~Mkݚ,TPL,;{KxnMA |1$Yw\@('iBχxes,a3QG[uh0l(ްtn5 " &«<{g8]SOf*!U?̑JKYt&Ep5FxSl# =қ |h}H^(Ӌ֕I/6vAFB;CgՎrP>Z[v9ĠypMcU<*&Z4Jл!~ڗ4HR{5ە? sS$ w8SpӗR#ZliN*ǖ4Q=QJ v^j~1NK 3N؞@ LzTiINf%ӔaXƹxHpncߵ+=D!6S0@f!xSЌ!i-UЋ1XrK%Ӥ -^Y>ra s_iS"_*ju | UW/2%HoS*!\xЭI#NܿoIwZ *.OA.N{xW MsB4/ :0^j{ ƒ,Ȉ%X[ox( w [~~q'81ty NѦֽFpE\˖.[q'/K_6eOJ|0{t "`gg^&R(IZWq y1J`/ԏ.NפjVm`UP5W w3PfOPiP׼OJ;:{Ph4G`1סŮ\t 3Y7s4_ ɏpٛ>[y Xћ1[2[X;f$6CJmͫ5}7ycbV~RAfUk%/VT9'n8GʃA3 7O~.޽e]t?9vg=UPj˂,[qWx)W[e2ѫTT+~2ךdO *bZ+ W^O")aPõ4ticd2d#bI*mM\].Ggi:p숩T> stream xlspf-vv&mm۶͉mۜs9nW^OWڛDU PPScaff03QP:]Ō]M@`a23QD,,]Ԧ4fVvV [w+SK?E@ 0D$Ԓ I=fbke 2ڻi8S{3qra7{w?̝j jqQ&5Q@Nr{W?E=c1±̬L]&@ +{8&mol?\GCl7[[c; Z w0:?SlO?b[# + +O?z:ks7@3+7[5s?'ʿcVR;,no`feoPuGOcg+[g`'@_#翖qa`e0q2Xظl~]S7ggE& h `#:5_x n:2 t.oK3+{5™ R T,I2k)Y֛r_v 7QwYkJS9u2N,F(ۉ 4Th:_}ZY˰k׽5] \Cˢ _W֢Js,R?upqŶ)ݫ>o _Aenz/=0CEA)nn *B.~VG'l=WuEθԣrtC-3/N )3jǛ.*!31FKXiuR0 ic?Ņc?JrLԊ-9~GCP8es\ͼaUB2=p1@螥QKY>PP;Ϧ}>͒2!MSca7㻯)aXA e3fБ;ScJԪb0Y3}\,V z^mՋmbh XlrY!-QGJG( s@M^Rps]q$g K }~2en iq М `aqHu?LZ-[QW H,e w3ї3 /{zQePY7nTc4u2ǜHwJetJrgđ F\ITÔ.zX LbQlժ (g2g*7eӐe Nx~dG(llf֖Ms$hA*5݄xΜ3¦mwfkPyN9ik3$08W?Bj[,?0ar ed';9!ͫmiVg9Xejf;pPu=ҀɿrU7i)U7hB)5\W7~.yS%wH؋, ]+%~DuDxo(\k}g:ސY݈j%-i87o 3֋gQg4QX.ZL!u2O+wRxv$rxOElK"(+_E}}N,&Q阫ZTp](WE=.+RJc}}r,b7h+YG'z Ax=qDh%H|謼< N xO.8cToX4oI+}ou >.(-s/D FTEqFjT/4P櫬?ӓ"zPg5o2=`onrV5Ч-sѥЕɲL~"g-g ~RG:>TKo7WO@ ľD#?f2ʔ$GvBD.agyzBuLL[ieQC|m#B<`t:}ƸMywOZ \zzS3&%?9.b/҈ھ{0=Jr9;㐋n .d>:Z2g^й|7{xmqkcUi`xm7a.C>]qP̣) fҥY,hyE$&;pwzZZ_q/2]6l~Fhz11d 5,u+2m6g MϋYI1F.iR,'˺X!TC-a_nT֟|;Ae[BzHA^7ݟ=/u!?i4YDlu[aV7FCIBMIC:~k5)bhLwaG1݅PMu55tuN{JrL7J4ơ4i"PfwQnfyǻ4M^XKU,븮#*RAo:FW?!8x]=Dž- QD7$ *O #Qi6>w@F$- Yz)scڗ<[jM:'o- {r&(عKs5rg^u.v!{Ê^Wd٬˖GT5bZ1$me苟Kd>cb{ rTI0ח҆?4:eV:;cp…=v GҐ>9dW a=㌏uc~=sǍ5c`\LJ3+LGH8T}-1Fi[?WSÌ"Ф橞!E!Ư3x =9>e_5A "dMUl1:]db:r_C%{ݏto\al-wڕ9Z Vhtf|U{)Q.Ut S^֩ChB5ShX:Qr#+q0TtV/wwIH/XQ2HCWYjaayNG?<_X`P/vM,q+m<B 0'kup<@;u׆Rq,p+rs/NZp2T,U<#ml_Ob0%xPPu1#@{'9ԟI.olyt]"swZ~q z_=d2p,q楡8Rz>nkM(Wy!*b锺-u9 VMbG>߀$N5λ>) k3qb o&Xd8'彟ki19dZA7cLL7733\X5**fZ |1* nm̫u1l\ǩCRYlǧE. )Քc8_)(3cú[uJqN& hhՅ_>S$ګ$Em^B:H 1ثG]] AQO0HM1I"@=IV D; ڗiFވvw%μelYBkpZ{mW^3Aѷ09=1mUGf OþbM/lWM ƨ48D ;_&:A~PH\.sxh[>#qghQt<~a-ٔozM|1U]<)5e5tp÷pdOSj wmW"'>M Emk1):ȳnaRNOap|5 .o_F i8[5w6ZOe/RY_˷ndo+=@am ۈL-Xy&d?2"5 ;CXYU&T~0-us7@"4UFLBX\^u \"ʔ-K*tX{ =`sU 1G!@ ևH$sKu˫UqJhmvĴlFګW:ccբ+/ k*|9\>x[vA_V1RCY D2A8j]@3_X`hLvuٸ6LkN;2㱐v5oFo\Yv*Q3n~h+lh,w\},T/W>΀g͢3U ܡ>#Pu&{Ej9ب &ZJǠ:.2&FLv\W 8Z͇P] vv߈+lG1;_tH@y<j^!A2Oy0T݊? N&>7nYɩroRnsANr-ֿ <'921X$-Cژ{;"!aJg^Tb34m; Q&VvApg>P{pʫڸmhnCN@Yto/`ZY)Vemk3( 2@3ϑ"7RuXI3WheL6BxVcZ|s/fN}> 9M|\" w;8\6L'yݫWGvft~y/.}f ."uLv&0JZ{NZJ-q1]8t7wpY Šrt$D x|PQ7L-c o A?m{~,.фמx&INثAvŜ50,3OIs*OﴕS3N:t"X(t5ǡi,tcZzaHEV4@BΓs3 7?/ީ&|/`"qYWIL.ͫ65A0|%־6I:&/hCl஻!h]ϩP%52&ʸl}?cFRvKt5ɬ<}Q/Z_-׾n؅NZ&O/O JOJ\+DЇu"6"j2. >FF4\[VxD/s1?+W.TZaN]ӅER@*vjn<( % 5zDKi 3x%iS TPl'" 0F(8R+`v=]'Qx / 6K];&署uc)nI(*xk)~GWCL&q(xcY&GQ_E+I)Z.1f3# _IK͉kLth |8+fFnh }Iװm {=`#(EcGR͞m ߺg]žyKI.3Q^Ę9EcJZOcM)~3[;Tm(u?YZaZ]'gcw=m-ZeWKExB}m'^,P[Z%ēq.PaR$^ kVx|c/w{csU[ 5aXJ9bŰ'^B:7kKnfCl 3W5y2Wov(%ScrQY| 䪆+uq<}>I3 а>k CT^:AwL I$j(jD&Fg| jlfuGgtި덧4+𪼝[f144FK=jHƬjԽVT:)͔, *~U&%b c,搾ܐNd5~'G;Gۆuǝr7/ߴ#6iOz}Ć ń{7P^L !se"YD(fM0zVR_;Tl ~oW,m#̐Y5 >LoY!:\Gd)a>.]g7G.ѮȽkIJ*w!M++sO gdw$icW->61A]Ɉ1f 3zȳF.A1ή޹b6.؂7u8"QE#[@Cn5f]sQEKndEmQ;U](|3Os7My HhU:~>],i*ĘɘywA&cae5Iyt+K!wezX7ed6,l~vZH`ߑ%tOԦro9DBaWL*ƿQq&m^LT;98&TpT Rǭ &md%zZ&`ۂ'@~ҽj^dbNy:`HQRSkzL2E=TjKՑțzO{ Q:NpZG;[x@7F|]!\UcRhk NB6lŸ)ȧ}'TF7d(%,i$HJۓ=o+585Ë1]V.|xx1Q+:QN)Wz ^i X!%bgsEsVV~r\/.9H;@.IpNE1jt"TZ|6k8"i&ѩ.nPA˘ս1;GsG(KDѐ~&B i1jp #YȤiiIR(<~y24;r%R9uQO4 W~ԛbf-}BWYuë3n{^;`qRNmja3{`H9J|t$q|=Kvzpэ)g _3ܤVFТѺ&A£Uɝ8?룶v!簈wH'6AbT!|@HSA,_Lt3v|AD23>&0+˱3AX}B l_O)З>,j'nlA@>[drBմqֶBɶJ[)"dK?{qCYe0F[^X)ҍWv {L n_umʛb TɨQhlsY/BInxx;*pqcҺD#k`:c}f8?eݺD3;TԠq.~$pA|d|)*8]EU&HkvŹQ)=1͌.Q ?pD.P)%>*K+{uՐSj .ɾ(GAixl lĕL$aJbeP]Fv~ 瘝BGh]c:#puJVwB7 ~_ ϡAMjrԶ)>Qx/J^8[!gea[8왙WHX':)/: c3ǣ grbA\2˭0lQϣlhI8 @q:lYʹfL?0g{83cMOH=(!k=t\p~ޒ x02.2g&^f[s`ꥻAC1~@J6dNqKqܶU{FqρSX/xOn :dꞟ{z~ѦA]ptW["Uz`ɺ]t}}z0[!I0'X(ʠ"+ P88AP[ph_3-^ca}J|SvU6ufrz3w?sr _9c?׳~Ɲlb~lOgEfaȜ"(z]Sj~_Ԡa*|r4iƓc zsMQڐAT JBWQI,n>Z]+<zR  1+r _cs ,1͚Nг kGo^Lb 5=uV?}S%*-Cj\DAjf"d՚1߆~[i$Fo%+M8^qWUOS~y~;~ 1S [f#@gĝ߳<򅀶JZWz9#|H~pЉfeP wlFAѠ,TT@ Fʃcd ~e7JV`숪f ӧH/MsA=2ؼٕ%3mؠ1ErU BG26' y ]G s=ȩ 5` Y$)MNw栄:))!vidPJ*S".R`&Ud/kB76@h_Pr%D*ZEUϥ4QhP"b>]Tgf04zHnO%{[< ;^8U{]p@V?wG&*^'.;pxⲮ}U$Uj6 T ~;VcQyY'R]RLoXǜvwUiܪv sChXbRT%MqnRq֣ZY1OAOz6FLFMx3X@[O5idLB ZZ]cffw u F#\+[`(n؅\nUe솣C-(r'ҷ{a{76/K~?_qX_ S:)u +="]Jf+8DJCLI01D7z39W4^FD/ALd\ pڴvۻjr)=LƬpPuDTHIq/1~aG.tP(slٌYgkׄ Џ#&~7mg;{t4̾;<'k-CpQdP~͵n؟>[ѠjsNت+K.}-S -uP ۪U`Q~ XHL<+LDI&*~fgk(8lzCeV U }QIe=%OmAurrب-tcGjc DskT(Sc0H P"S!b uYYnM,,"߮=׾{ Zٔs~wSJ7_~Iㄑh+9=5]{~5 B"i.$N92m *`}C ٨⦗T CV:th9-59c^/b=} >|#5];5XUM0V;z YQ5 P ν#ǜ9<"OD4jj3j,Ҵ0Kc0톺Lɿ)pd-n/?l ATbԇ q>q>]seֶ_ZEyZ,fpY!g/ .n(jg#HUB̡_aʳ.h!G{bWhrz&$i>@\{'Lw^ Q I*>bf1e@S6S DxVU}-hE~1 #$ڙ1 P!wVKG7xP*k',\5/xL3M2хF" ڸB +xp՜(,L_T?V‘e馶mgv>Rg*7l W}>\G2ٶT, ,M~W> 嵞O-<ZIdu*8HV͆Ǽ.{:#i۝4mMi= )cT,1r^]IH?MS-.Y4po9fa,N';Eܧ#_ߣF fmJˋQank`sHa(IM-y=\uDlBf84mSBoGCYddmv86u8IUoc TG$NФ?c`k^Ct˄˜̲U9j?ǘF )@J Bet7mEhTy{ƌ>'Wǩp0O5buK> MQ)wȎ_v\ ZOžmGQwT8-!Ki؜EWcn]QD4*8gp޿Yi[xk+c@8!ul&*%Kx!T5c t\ipzuz{|JLp}jpiqײPI)qQ\#3Kra*X??F);28.!?tfn}['͆+O gC[ؙt^P8s,%ڲɤ]j/0#k0g\ kZJFv@٫Y1{>9Q>j=c0+Si6,5 χl5e}3GrySF6JХL{:h|['*;@'=LOԛ+enV _k,ݎae{7䃣, r7dۚk V;!zwbT:= L$ҙAti{":x\#-lj&Ǝs:xۛzw[K}jbR$䀷̙zZpY |'*- bÚ[Ev5@l)Đ<a"I[珁FYA’[t tw2jҧѷrĦBbmAlx6䳟880~X2.Qr^wԖMIB|J6E0_Ls\>+93!E!Y$ei-:)^]Ax(=6Q?Ts dPOZ6 =`]γR =6q .%ˋ:6t{c5[Qj´D^t냉z&p&_*|1cQU?r\ݬ#NQF?mitWsDtTL}LƓalĻ7 ]úDgxmb<흥)9826߅J5x 'W\}ح)vtd ϣ扈nI:.yx Ylsk&+#}ٞ)Zma"ǯ*[4HgM;88>-5Mk( !!DK3Sv4=Ьr7hA)f\F(пUSp(qg)l|d w*B .\gM T4>Hy8V u`0+9?~m*5ʸ#!+>NPcL?7 e :q'e}} HIjkLBUF{Zose[0+XjE'_rSd'$ܒτۡ}0kOb9CE66F=1*ԥUbCяMjO}*s]+ƏQ:1Vr.}.74I ydF׮}y.ԑQK2`il,D~)ĄBț_*|Z }=(E&+`)b'(c}JR emVoA]2EDsELj.!,%sڰӆ"Moy4ݚD۝~/f~Xq8>Ln%SC0>h_ X&;!hdrJ'-x5|2r8e@v"$g,E[v׃;xdptد:o_.lZm_-D auǷm*Yatx(Nw#a"$p%=y3}l*,]YT ܒp(*also:g/x' zϗǣQ:g{$4ˣG/?,igfۦS`7=;3AlIJO"͊h̊1SB%Xҕę0Xg<]e܋F {h1pGx1Q۟bnGv\pNHh0ͺ ua)I_JAp5KZbRެ.smJ>Zї& =i:';V0ԧ%U_p'-n IultZ{w\3 'n]П"bl'>J,-f[ N_q{˻RYjPxiOv泈ܫaPxc=Liۣ4'J&xϏ>V/O^>:٠)229DٵznzM?Q3FfѴ훾.<<_aZ~;e)w=8m0p*[!?l#3ZI][` 4j AD[ @`g4/cD<ե7q!!)"Cq_ kƝZХ8lNI_7Gb7I?{6u\RFMهVլd\I^$hɖg0Ta:h?D{5q0o[ܬlX YvyFz%֨kLȅ,ےb)Y:EST͊= lX|0J<0rHht\P}9#J7U jiH2-*Ds}sz_a0 #j7.z8;ǓIx ;U[@M9캸s+kLUv bH;i\#i1OUq~ae{?54`2Y˷=!Wkb꩜cU-A&ꀟivR1$cPƻ7ŋ/bVZC82g ö gX͠Ҫ=Ѧ&7^VN[uqNK(Jm۶m۶m۶m۶mݶm}9+WŵxIێM!p_[em9Ba0t ʢFBH(/x L%} (TϧS-v >?)sJSS3*G YoM @ƴ1P5"f.}Ur(6\cpJPq= x !qFm2d9sN'6a>\DxQ* [DXH 3oU\\/Zo嘮Nk r(U\+\+l87ᇱEu鸬7^‰04ai@7I&5]?eJkMߤ;I"04*`]+ٳE%qZ %fOnĐ^f}()Uײ{苏nma`׶:j XT)OeP*v {)IW)`|,08GvK$ZptէgQC5cqWt ZVߖ1'HD{lBn%1'( (ܩ,QzM>_a"vdk@-=.EQ|=*Zi 66Uԕvvyx[|/z~1ve:~,Cg2`^噙hi3ROd8Q&2&fP6҇XatCoۛ?3ɫ)St/"}4N\9%xK\k7JMMq%1 0}P8X2*77l9^FX]lA;oٔATt.~(088PܛSB.1T]v]jR֪:ϗa/qWM9`@J?BpN^?dصtKm:Jn$DKlL%U܂)Um8 yLeTW_6 īw^#ri}C" f"3CDB\&bN$.uHꑦàF+7o7U:?b3xk<8@[y(2`* { B3=RődϚp NM)UjRoLF`&RC1e>On/t|L,Z"&g*R hGn;M&ҤO)l/o\uUE/ڕ Apq }Rxeo9ŃJSP6Dǵ/-|l'>;는ຳ5`'j*Ҟ^QhJ ] k7GCU3]dôy~i]f/MAtQn 9A),B 1d(L#&+'[ / nǸ4V3[¶!B ɔLJ/{ALZ uL;$aZbyCF8SiҐHΊxMQ"i`\yRm1<' Kޔ"/}y~z{U~ u l`E,9;LHeu?:Sޤqn`33җ/7#yjpIp)fiH^.:DJ7r':K8zw_X}}]ߐ#\$g~ӴhZք76531ebwq& {D_̈́i-P#8<F8s|0#dW ^8.|%Eɦ'9qym6˨:FU[_ ;Ґ'%=yeqT@ B9^0[L@`a^MCpJ[>3 8Y7-D1 _BfrCjb[r5G[ ;tit)8ewN{Rok`h֧mwxHm| [>=SFSxSffq3u{Qmb"Xj J?<\=7ӥxQt`N+Ko7=ށk_HY|J4Cqh:`EeK|:HYeim'rzsNS2f^`àϨz#\rP+\s{8J]5D9: Q?Jv'U@qu\Trh}` 2T e۞WSy$HC iJPNBb4 ƽ8gJ` P˜HLBԮ҈@-@|-0Ee}09EMPOU!KZYebk-S+?BqUٰcΛ`;M)%𼛐Ĺ҇{3HmgY1:~dpyڣ|Td@EԙloL{E͔iI3cZgٝ/{B,4l<1[V?O2ʄ.YN0ł#?%ǢT.*8vŵ3"t'/ա?P Ͽ dZ {TeeIs~ZT+m=`IwYPϞ9ԳT5Ul5(8R&;'jā ^4k'TVZ@G?RYz$F8"&VmEщ9O?ȢW|ʙ1T(;{B\ovDCȵyqX.Özr~ÛP2%|}e1T T̐6?t>fkiu^d-E jbIjlPMukq uXukcE[ΑgI4dzM\U8>^u+WMP&o#2,qB!SKy'L[d h{#S6~aSy*x?=sCd|~ Dn>3f5 E`8L0jK ;1/<2 _)%W(s3l:7ʦ/DTd K&ܬA̠[ #!s's"/ 7 bxR]J4"yGT3^vݽs`Q}k*bQe];\dM"A}r߲Do6gy2OԜdJXE$9-cb>o,jU;[x]"w^J=9ҖC=MթvY]\Ihu`Hs\;F0ƶQgRzODF1SvpDAfP8X=3ei;/SRۡ;>NjsrUC֯)fk^}~Zx9D] g^@ipA懸KjǒO26o?Ӣ?xAPyb3s%Yk}< d})V~ rtxыBƒSp,# ?= X\{e>mo[q^γzÕ6h\svD:XcKa]jQyr^si{/4I;e1\q֙oM|@suΚ$y%jGmfnu1Jy4QE 53'^!@>OE:Zan2&,n59RrQ >_iԝ eL3~\ I! }j>p@fj$4L s ud,( !sP~o ^.A "y*J Nd_kJ,++ b oFo^p#7|#W G:2`$JX nCrNEꈟZu{51:2։Dl  3ĩOI|~Ԑ^NQ^1HWS5BcގUܼH6 ŶՠK@n `c|GzYК `('[{ƐPeo^ D)Wynu3WqO}R7㗾Qw:2ψYvFe4ǒ ]P9 zL-ԣ viyT.D{yKJ)H$Z(Tq rs<,4ۖǻ3tىD3F G Z{G! 0BwR9cKsH>TJslLD^2y»ˊYJ5+"<2Sޓh݊_Zi_Z*v3/£H,u ]ƣeHόSg>' |8n$YOj "BPe"YTgi;&5@jn`*K]Yvjs;rf,Sw3 fa 4C&cYU tMأfYwZKK6opE~:]2)aFX+cX1>4 o` t%s9[Fz}РLj!B*C`(MbMJjb,8m[<:(y n Ct'dfc򏚃!$Uk[cY`ko2!mOp;LW_d nrY#1,N=om-Tϥ9[e;B ăh0<*Qr㰶D,zкӔR1,y)ăn;9Gő|߬u:|BLײc=H5US0wl#dFx=FҾ,l7g`lcaDKRp 1=zX<~gٻY P jQKܟ4I Ey}~BroAp?ыvZN;~ du@?(,̤7pvYȼN߲$H+O6 X i!Z;i͸sR`aЩ˽(ˊ *4#z9IGOޜaG', +ĢƑW,1?=>tDjC:Dja>ܤ['֐.\+2U]9( v#)=RSa4e(u9h3  LB0߹í"ZMD][9/+Q&f`Rdnwj OL#bdp$ya_A0{]L#v' #AI]fGgqDud\Kk!`.Ͱ5/\ePGV̇jnkqnǩ'qy`9k]vv-2lsL@VzKBkzwU~ #kVvhhg(Sٿ>^{QΤI9O+Ko:bx`ݵJ*2}NM'hGңC|)Oq quu3OYq8Db,3W0*K.|(v}tT68[wL7Tfse$GU'1ʧYN7D$ef`#29֥x1:MPd;۽X#LgL1_)XI$jIN ;ܾj; 0&TxnjڨG?9):1MrW\)Udu_sw$QBĄl\E1 UuP1y2̳PRgWrHڨcy Z㽦^A>7|)3ćKՄ>$ID N.NJ,t ycÇ!+}6yہrgO$bH:$LÙFCbb[wgK"óuwPyq@nCk3F,]&Akn*Svg<1^rB'f Nϩy,'?Bi& $Z3enB3{w__ D;ianIms]ݵW,wq^/va۳=yAlQByo㣄 /j#\ye:U[qށ])CT65'Ry)t@L'cQJlxmDpb/x^ע8  $V?FVy5h m3-ZOҏ8crLP:h2wBIx8x*w0+ёOW}gL^8N &}G=)mA%`rg'JqHw%"nOi Rz@̏0Ko ʹ%48j_L2O;S69jCLr'ϤcBI 7҈:M[mXH^/m9Jk2SЯn`kF7Zg4oPYqMVfV6C\Q.UIό] ;.K@ F ID!4FmQxxF忌݃KVxYKFa]&NPmyP"H)`.Xhɜ{e:~bkSm{4~ eW~R{v/<8o7Ks_>&jKs֖~Tt$oP]soZnoc! b͢H`09qR_̓gܿZ 1;M y7CU83|RKvi=8ν``!Ϻ$ɑ\ I[mF ׁbBҐq.Oj#`us]MQý^sTXFtPOzi \p.B;hw*屷L6:*(y!Nqd1&HH<=O3dG4oܓ?<EyJ\Gvkp#UMѨo_ 6BLY'ZH;-s/<2T%XQ#/U\z+Phly?YY-ߺT)ʟ4bo9D, 0=R@$o_!NI YZO)ՙGt]b_-`iUyB5PK gEy] |y3,TOHalg.7$圷t΀!WRh0T4F嗨Jۦ Mdn&e"KQцde,JuPkDP`lǛ#Q6λ&R|hZ/j?53}l; ë͎ y *ݬnv)a.H-1BGn4Rmg+a?*jkL&PW1oZ^^cW Y΃uKv)@[h,K=JތrKljz\0WIDogG`y0$jv\t0֦614 ;_8V!iI_e_4N-PzP=feWa.tqWH3?Uj<<*H,%d)`IWz ),%og:A8MaL4aeˑ0 {u19!zފv albdudyIqu~fbEE}Cā{r~8Bc 3Y\;6eN%GSG\ CUĨ@W2T)㳏Cl+`L9RYu<6X1TDi"YUGB!+zN&1I[T0sX5MR5)c3*Zh *OBdgӽ`Osfa!],W*>0nNbLM0lN(WsZ’@'yxA-^gHW9^A)"e^ߡ;˺K1?zp/F p)Nj7X?b9=,ݩiCeBfnO!ŷYd~glr43|nY^݂Q0h` r 0\]pVC;oL(ayNGAŖbQN*W; B&5vU<_nc]pM\' b #e`j mo"nxU]Q6v\V2t✁Hmձ "ppiZ-oF9wdw_pY*># x؃~;4L agy0C*3> !y0oɉn Y-#w?^΅:-,{>}/(.OP~4a嫣tZ_N &&!ь@UJQTm^eS_bOQΔx" d6#b6Y\"R_f*z%tv*-˝bxc9QqDmdBbڮՇ݋e7׭P&ە]R`Ikj|pMbr&E6%Wj+IhqI_"7n a]@*5@pnnr$fej DpR$\b- ɗs2WN_K Go@=h1 j"mNjdhj8CU媭HSWIDkyd< ӒX9sɱPj?,Yѵ r۽Gs&ώ$3/G<el@X?)lJ/*+Y"H [QjDih n<^\W`u4zL1q-zagiŠE˟ ҔA5P@ Һ1rI6WPw Y<lAoy)u4py`tFSsv!P/O"pnrv0-a"V7O唍?,E$.Ѳ ܓeJQi8볾tf_M3N MV01s)he*++R`[頳 O`HHkO T!cMQ\s;2JxhD0vkZP T7MRMk ZڌluiTo3"?K#۶vgL̵~%BE5#õ2ӑ|5P$_ՐJ+s^ u*vx!e_HK'~ = 8w5QL5;[]5#9x|!.E[J@υ]ŎK"ye'\E:8$~ ?:}?l֊3c{ w1W@l^VO)ImfA=z gGa8%۱Awjβ0]Sq]&ʑ㏩+H;߾s4Y_GC<"WR|t95 ^,]rD?(u sf-TfgH{ Vk1R  n1$w?$++x~^uA-i^s_@Dz5@8?i:I+-s%zο>zBy2(TcGϦؗjж1݉p~ß ;3LZraA%+>YȼM(4+Ř1B&!lgHݪ`܉#fZm!ZԬzij[u= ~,$ !r(T-\юhx&~^_ᮩfU@Rke[;M y1idPtJnDVH`7 Vf=f="F#@ͥV:,V.c2`xdhc(,>SMV87iX_[xYo2n#EZ xX:E j/Jaxx  G?`aPg(i0{3c_6Uz}߄c@9l4@O-@/^^z.2*X٨%ȹ6mI !]QYVmpV!JČ @YwMX抵&u5M9Ήc2R=ZGv)P\%DJXAm9UC@Õn_fwdqUz8LY?~1f 0Ȃ$=-^f@. N7tkrO'|QfY_qS)F:fU0s:~8*\h{,ϸj ˷-+Kl!c#>d I)0TFWkiy/\ )rR"-=c2&*4SǠy$'X6{~3з#Z1ð-PJU+x2kj@/khfNݽOWfjz{;Fg!oz%m8ΘgjLt!F0%$x"-~;pt=͎9jʪ(m\ aX혐j)mZQ=[rF?2Fc^N|˫TDU(1x֘0QE鶜 Ӥ2h;LP}g%m)#G45c?v3Y]DSQMEUXf MaGpQRڪ}b/ä 7̏: Nut6؎wm+ʓn4daĥ.u1nD!4cH|7}e!: ޅh4;Jnf{s|(%.4˭u4V q'e#%rpjw!S?7ڟ'ùv(sk!sJS"é#jVGt ̅l(2z{-ڱ[lKTȰ0NS[i z-XߋPޓQ\ȡ[#SL)ߗ[g[]q:č\ endstream endobj 231 0 obj << /Length1 725 /Length2 24299 /Length3 0 /Length 24781 /Filter /FlateDecode >> stream xlsp5xbv2m<ض1m۶={}υիW_w5ȉ%\T= L< UUf&&+9NTf?f8r ʄA@&*O# bY ZR*Iy5$ddPt54Z휁3{'893bfN9qUa yU(( v.<&..-߬,8ff hni/ݤ :OBP!5hFupu:MNvidOF6r1G a;cOYhh.N59Y5?=3(&#/".NEﴸ9@=L7ﴢ*OE/gdabW0KDD=YXLfV6f 5qurڹ[? -ۛY6-6T]f]A058ĽSsG 7߽ؑk"1"OLF-Uo)օ_AؚC\ߺ(LeUK;J2GAlǭ.^d@q>"J0[I[voϊ刱j+=Ҷ]ge'_%/ؘK>erXeuTNF΃щ"lEig J0Bv\9u@Pe$*J>IX*o?Ia0_e_fQbBi1R[c-= UQILVDvOwdtT^isx"¢=/ϋRHm og K )4QgȩgevKOܮM4%X/hyDahlصU|tĄeBt6}z\^"[2\V 7@S4qЙ*k6n+5U-wɻ$)kRw IVJ%5 keiLѱųPf|dH1o u^lV!s S3O0<+K_n= eCx-Y]蠶#.xf)&]G>pGS3~~)e@gF䁝$"Z$d ZNR3 kxvИM u2DzbΑ?o.oTԳ`~# ʓ|ZIqtZ̈́*bQT~'$)YB [W]!Q Ftn @_<9\l_vGqֲۈsZˮo*XM5vYSo'fy=rt*oTC Hm; DK '}:R7e=OѠ0: -3V~ܝmCu)?^KԔ.(lJ\g Ԗ7 L¸ɏ pM!+L;!T̙nP<"Cp% %e2LI5W98-ķ]np TNBPX1dQ^P5"]B}à bNcS$s`NQ')5҅e5+tanyź*! g@#_Ŝ/Fgp_g \7=k<_Ĕ% BP+dwjJ$yWkCmQBg{7,l{ӧ-kx3|٬Q]"~Hni \?cu͌ >ˍ񓺲bK)M5bp˺<ɦzFڴK_)Gf"jJ`vTl{-)ԋ*H>RL?Oa CluCc mbBu!fu|; i2;u4,lC;]ЂnZsqѬB9f~ԫ ");.bgZ _o7K-(hT>Eq~plppGx^ w+⦣, 6FHtn독:/{h-g$Vx:7}JNJu_!PVr!0F^ +FK[ ytY>hv~Cm8h] N0-W.mK}/MpHgL+ ϙ׃v3},KygE^+_J^Zp?; &aѷ{1B!1M,A56iA pdc8Z o먑 + ԫkBwfRkub.*I,:ѮǭWS1&ᖿޏ9r4 +Ϧy:cKWhW_>3=0% ^ݙaK4|rT$>8qpo/µQ~؀}5tJ4W vef}E߯yR3bsTv.;w^Pܽ2Fk$%J_ɷ+MVb ECpC36W\*_" F6+Mw7c))CB+yR!fZ&(q9}koq_\àqCV*/B(< Q: =gxaO;C $֑9dl;=nZף.&)iVh(d^YH:wPYos(Ph;eޏ4pMZ"'b^lZ8@[>,9Ӑi>C0)m%B߹dZѳq5* GWK'4A QCC}jc:`a%}YRg "tu&&-H!, L:D=mw)vL?d6s3 6|7Uk >GX"yhs~rFAt}|\]{h& =Dp7\M2^%kė@ŔѺ9 V:!T =%8Kcp.:+O(!\H&.?Vt0nĕeY%LQiUV*F짎TzES;(Món?D'IZT|afJԍnBy5JT9P`a18y+d)UmyH.B =Ή?rwR@s'e_5V$0!g|(Vԯ `^;w ڼN_RKEe@9pgѼ &,WNcjq5mZgG$(GZB0,OfK#yJڏ9Jvpl:#"K404/M.۞x9Oz 12uTo =\ʡZE LBL(}XwvjH2cCAP{Sm?`̞2'-@qDisݫ{zHY3u4 ;RPj@EplWtd,mE ,Ʋ]sOP:FdLdwJ•Hi*|!?Ya^LjΖMwS})`3ʣzӳRmM1n=G[P80*$t(7?Bb\X=J?ۍ@aËcAjx$\hQ%Y錛(Ŏmu!ILy3).ˍf-4`Ic9ka>ϦP{-^=[H;WJ-Cc!q,j7X%_jM7 #Ihl]W2q'R7ƊiR@HtWX'D :]|+<2X*>n@ 6Kʤ5>þ3F2J> H5F,^1 p)I?s9ӡ%"t9VM G3k;A{PK38bmʡ{$ssG64إ?V,O P*L1+O mMCTۙX _: (01,]E>;ʹ LpjIg ՛Z.uS6ѽ÷ۿ# \ T9Kdf-Ge!J:`ON=TE4"t݄aBqRw&]$&\v|\%jqCzd*OzCoG(Uq! :0HLoXLVR"gj,U/kZzlT{szv(3YNad8&|drפMH#3ݑ<Đ!)=ws-''3#H[L5e^p}\j;JQJ/V<[4a\QcOc K'f;#TĄ'~)HYD (o7Ys-1h~!i|x& @7u L?YsPkY~I0.Lg+C¦&_Z-Wcxmfܪ{ qSa*,D~;4%oi#:(|#G3t%oU_K.R0{Qc&xQ3P)yҗc=nWo~GP!K368d0ld)sZoxf$Hn?-5Jey'B*T$+As "Q s veI&i1MvCg(V,-ǕM84pшTsFZ÷ ~^?E-Q*ٴ> z*Iߩ!N׽?7\%l(/webU"~;MقR2EB͵w!P풒脰rE9^~/ŭqP$  kXsi*UI80;l\D(]9li|#eFENʴ\| V"Wa~fe_S2}98/B a曔M' mݨT aLq"'̦|@Rё_J轢N PhS `3<2YAŋ Mg p"%jKdD-e7l$TF mx8`L}൅:D @ŭb괹_aL ZG`~/ێ÷# l{)T g 磺ZR)paF.)w~#eBᑫ.qx;CIkBGRYg8˸` T xl>@sfyD.64(Qɮ<b C^ILƖ.a@h)6kN d_H1璄۔cҰ=hҎu\*ٷ1t""C0:lv/J<Fӹ0W[ji(oq1P=> r2v6b;f|yMzj'==c޿YFӌB nu(ؼwj~!kSC@aa y3&+o`JRqj7K!S R^C}\iޛa,CWy{9]Rcb[ !\ୡmsxz/c!D|`}BN'>۹%C/! fU W ohc ;nL*:rȟfN`p¥ iI]=_Yk1ykb[][^xSpܘzvs%wX_=;u2Or19^VY#$]K `dj~;7+1z~U屨ЮN% l{NEPϽKv$͋a X#ϰp 1&r w]W-y;p&6ZHoT)`ݭ l*F܀$yZUs zE |C=ݷ 񽞷Gu, E[uKS؛V12طk>§I{j'GjJGE1kEMo=w;Sq"R1!!ӤU>G"Gn$!4 nmӒ$Jo@y=bÓrqD)0Fk.D#C4a{Lj;P!<԰40'Mln3_8Pདྷ&|e`mQGAv7L?m뼎\pLb:$g"g燗/YwzG$Uiw+|lEvs&AaZs*$bW[|\$WutAIf$6*я81˟&8]0iy}4+4զfY*U1`NejjtuPRRWE'\Z,N[xC s6)㔖 XQkIo81jC#yfrZC^"!;ł}M]ƩLja JjWCY}-*<>(rē"%y ‚ɴyT3bq6Oغ$R%> ;/$*Uϲ318MZ{y[9N5ZdBi˭ltϗQ5N&B7.ߗU4UAW J;/G#a{B’e  /عk TfQ>CcHU0SidP 񑝛e<$dM\CݓXx/$ޣlkA|nЊ\s6 I#o^ pil|{i ڝ D-ɊWږݸ!LjԜM 1$xqUib| !PdpakIzxO#htR3ezT %rUg@vބD1,(W# l*չŮО-T iJj.IN^Ta9BԶRPnR=i2 3{##-,ʍpv~9nu915Ѫ=`d34? 7*Gu=Q6'GV&"I#bcj%dͦc- iC{EME\R >0п BLI17[ֈhj '5?~V(\e/g5᧲C.+:0>gP_d1'YZ][=XACW^GQڦfW)ArrdDw[qU2 Dl͙!BO$ʕN4yKl+(qOSY_(]$YJ+/{8WAJXݯJ ~ q*g%isXTw>݋NY{n,gH"|mV M73!}gX92}OȰnG64^ucWaO=Mx|=Ui\l)-E.EZ4b%}[sPa/Upߋɞ Bq/buX)V+8̚}ݠ$D͈M$J]KK(_#o@j-uwA[2αs%R:#wD#$E/%L'vUֆ4/LDC'(ƥbKwe2!ptx]pER8EOU@ԿGn4}*7}fTrȫrh#i b#冼4<S+L7.tL+$5(+=,גw|M@ނuV="J?s (K`bґ n닭ݍ*]pŤ$oJj%\Û<3CKk~~'ϋNQtq}jBg" E?lVs5I{-sѴE@Ki6*"n//p&wg.jqіd CUz\,$Vſ s1 0:]v*8j#Ֆ>O!\`Კguu@M\>mŬص_S$uM=qu >+ܦo?=Š~1WC)@{iz,P)^6`P^)g^A ē1E )=pJG!_Ѫl`7mOdМ>ܦty&ܴFgĂKE`qd?^JǶlGy.SFbTATK& yga:Oj#gWIXV!24 9/a_Ɣ5ʭ96@$책7GBf +]cYF R}L~&eOk?ħՑYV(yz<V<7c:^jxkh"DS1ۣQ-e?V)3WETҡ'ړ`gᇣу N q*S*IdY`k BS2wxHFLU3B}dΛ̆}Gr' H˓ Ase,t%k&Ju~~_=X: K|(OTX<#SI8ug;ERS4i ~ktCEG=:Ii9&ʿDeq"T%Q%v!H,"b˃n(<!ctz>^:_lϛq%UFFO9b<;lwD_ԇ{jM8!w;d}Ⴌ\ѴI\gYG"j-Ϩ8G:8Iܔ/%U&F<{!UCd1ax@-D3?I(Yy زmZѡ X=7G3 PvGvG<~:\hz/ B?*@W^yTGi4$w(f/Bj;vLsd []qQ(JQ~y̵p1<2<_\,맩 Z}^)<tF-F+\g_xzP+ƚLD"i[b*$wCzeb}4_YD3+ &-A$t+MD}N74u?ؠLl-ɂtlU9,gGk/NIY0mʖ/Ś]CН(1\24pɠdYf >`qh<4XHEV44A%2grKÖ%a6~^-\R|y]zWRg{&Sǰ@ i/^b3M(hb#p^oW;>mo& ʖ?."/EJO*碖)Nүt,IG|Wep}8d OI"&C<4)KUXDZI3̵7SF6.Lf?XZʇ2aQR'^*E2tN6""/Cݔ6mM$m:FX`;Mm }=ߟP!7fqy;޴tjtNd fn/gje U+=B4zt7}#|5/Z&R IEښ9M~7UQzH:jwjA]#h_1{ODRN0&Ijּ5:tww"cb*c*߁{iNϓ.pnRRbh'?kVYL̈%fخRj85]Cs*AJ3y/fH s #h:TCj{ +T($b:E҇@@%åWs%ȵs'|?v?k êM2=NgiӺ#.PqxJKt,.,7%nyZJȥPlPbGThB8QI ۘZ ioʢکX?V&.+ "sQ0Pq2흅J:)1Ŭ u1gNzf&Ϧ)|%RQܣG[ˋwk~NŘ\>ϯ/ӯ .TM" ͼ2N_D>C7`BcRI59q.V m9:;I[4<;G~?kO ^ϱ\{Fg]bq,J>N#5hfA8&vy!X_î7q fq2\ =\r4BficoMd_O 6R㏮6Vܧ YSܿW_'/f8u9A #hm j֤cz :&"8[EՀvHK}'="ߪIJPPF:dq=zֱ֙:xk <)n< ?);IKW`%i<-``7/Oţ*`ҟh|sx,~sĽ\ASqצd;^" ;+G{ 8ׅ8$Wu&rEwR:q2ص}3`jK}2*Gciv!PgB<9ab뒼) WŃlۇgsV3X ɦ]4XxFKua؜ӗ`9o=@I&uHsx,L ؇|8A\n{o?GDDTDSmh<1JŋM'9-v 7pK7xtB#G)83]Q;ra %),o8ޠn˅TUEFqӤ 1VIKz}1l/~r2VcL+3S96/[f]z6y#Fvx1y "UźppiΡ)CE,I_J,,4$T2$=A wҞoowM¦^jcpk}Tt_ A͙lٶ<}1(bN{{^ z[%)Rub3lIl'rv,al\\)df؞dR(]un',{?lxך tyɴ5+ bTJ;[Rg ЪcNPAcl?[A -*-ycw/żnϴZumdIy"IM=6WORw_*޻ƅݍ"V ݦWS؍2o0+lMGCo%[*0Ή]9Ԣ4lU0LK 47tMf/%^$z`?NSs'v># ȪzNS~r/$'I Hרw(?e=]+ IIQ Z~P:X!]$`48Cd??[M5KD޷7\a%Eq/ocJ/FQ#غr5a4b$5'V́9(ʹY(:S7ygb¾XfZ=2vmRx3T[R4v)gB/:H3r&M'=nn㹰r}] t\ MLrF$=(Zg Xc cr$( 3j[{ ƪ &,`Ps jqzc~6<La=1Rq(vsSn4 8,4ēTɕ#mz1D.$faۨǧʫ#mVS!LB HmHvH j)ȕh@h;b*;PpVK!,*ٱmGb}x `yG m@ ) u>5 p?L⽦J[IGG-7 0r&5ɶ< H wvJj n򢔐 [ިIuѦ^iw"rFsDR 7 V(RTؤN?B}V]]b;dZ$5&A -r0aKRa|"-ҥb!+s*]z׍ߩU2!1Ob+@Aݝ4 -[pm\[pmYZխsnpj/z}~+vQ$>]Y"rN?1mS<%:l'BȲVѾ-E>9J;nv5ZRkfٕF#pݞT@oc6T:qU_GסQޅD%+gYz\9"lHޯ;Kk#00's�djYQUIB%O`xtJdaх5ӄ!?5 A+PW{i& L43'M+n]ҐtGK.FZP>yo[e- Kb?*ezK-F}6\} ΊoΣh7ZVA{iW3AaT~TEQjZ 7$-)j..vF0Yτ֏3IXW (E@Q@FVL]’MmVL Z-szj]%`Q2kh;+SARf4+֚wazk $.o~KuN`[ͳ,w_k%P J<,`bb~֕>$!+CC 'OV>qG4" Þ fĊ]4]vyl~·HJdZoS{2V`4F٭ui?x݄Z 29oC9s%aO-"nwKңPUfxW Gl? Fm"9J4]X٫ЎK$f9¦,#N hPŦh=d?Zn:w8.}'\FJ%]~y~Z@|W{:LV i߻Q*6M#ԳԸ)KS4jAF4dJA}ɞp1oq5VRNP`ԁ)".$kR1pVv ۅ$EGSSd}Q@Δ^++p,rbH[z0Ae Ѣ>󁭃N79p:H:L.cL>rzV|h U׾O]Za9iMd4.;,'+&"mߋ ^(Kx{6$o Eg|[d`Lk?9oƏPA>N9SUip.5mI6/`ť>Ccِ_yg^=߆i@%ՀcJi!og[I3 + y'6i_ծtdwX"4ɽ q[dٶ7m̲bC9Chc'jZK/ L뫤gM< m:TG}'k#C>K`Oڀ eRgNqTcF 4_ ZX)vfL瀫ۡ`ptm!K"2߈xY<(\pQQ]]۰bvNWi'ջ@ w?w1`wzA^-]]^+2}QUbf]:7q{-CwKYо!TUY.h6i|ʄ_O 0=hΗt[ Bx_]_Ƒ(d(:&5~N֔)*pApJT:^ku5B W?'V[˄^%>_-16kk7RrVZund3̒+.3߻9EYm#dRAr+K=ԑ%-끒W3֖Pi(3e?_cDÁ%v@WByrȊ0fR2+,Eb@vo}\<[~]{P>l7dJY%{E`/F0rc|2F%n8kn!0h/ϯ.PA<1'/FF3 v1N.:hme1J 6fϬۏ3/* )Dn_#tGc_yZa- eȝD0_M7h?rDrd@凹4X9z3t&b4+2=eR81^O>ꅇYaY#S[ka>:}MgvbЌu"i"Nx Idg)bvUS_,ϒ.L+?r=6 ǥPp~{/F)#\ LT[P l&s bZDEyMFH4!KxN:%Lh{0(X;+p9Xf~ SuDJN2ɭ: L#nEk ;8M= .q0l 2,|gqݷ=gYn9\.7r&ity #ᔎj%AiO[\QM`NN&$|b GZf]BC[T'CxixZ1$6uO q?y`NYWhStuszf[кOl$."&,\Zᝲ2= CaS|1ݭj'/+047WRzȞ fqzYK7_32_(r1$t f(,e I <]撐VJmٟtϘk$ޱh@YЬdb8%_V/f" fX ~72;(@$iܤXahrb~QTyzx~ $ͳ n FTR5Ɠnx>VU0fN0KĘY WՌw};Rc( ǻ(g %/W% ~ONUO W.i"{ǒ SUv*ioQT]75LиҧVN< }DzR^0}i&𱮷_"?~cJ/F%%ژ`ͤQS`[>UsێQ{q8 8ܒB}f|!L:o:1;"a^{3xߔ8?G/ЇpԵ5 SO{tqw@e-SrՄ.rp2?>5g{alkJV>ll _gMVneQAU4Ϊ7(⾗So-Ő=G>sq2OɈlyH6[o#lɖQse%/5߀ (.Ѱq%"V,$/sVƱNTxS߁[MY[{v$vK}ᆚ >Ff4#H.*E8⮝th14=ŏghu](~#!I"+7EiBۮ]7#d)T8_j90=3ӱ,_%3ꈨ9f`,a1䡵I&O{H.'`O=P{ݬJeOJc}4UI}Dt=10E}r|D E%Zqz(%?jGvk`=y\v|G˜;j~Q߸KoG6{[KV=d .L+n"Ց cr1?.~*a)?JG@+=L`9S% o<6Jn򯶴=E^ͅWRxyZ` ʏÃi8Lv5YBO-ZPl :`8 +qnr>xFdZMry̒5άO%<2!+p/ѯs]J,m]%#jD D%MQbspR遵YLPY])0{aGWcuhJф3rD׾aZñrwÄzcDōdh:W3.K{v&TIJuTl|gQޓ?OCRq$ѵ5> $K4!9AKߺA2#% (Z<xL|bՑ= S5o m4?(Sijk[n밷v؉|}ܛNVԢ r5ǠqވlUtŹF@r3Q\d<}K> ИQL-~P}\Ѭ{y62jdLm,R ڤ(vfEr0/sjb^S *C}ܿU"^4弗nc:IV6Np)  B5_$caQ[t6yc3,'+x<}aѼTE;W%N{z %A2_J&dV?qj7̦\](䩎5%?pqUSpK.^ѤMUp&Td4~8.l5C/6*M oxc-ֈog"Ki,Kӻ_8VIqoC+kC>^3bFuEIv%O~:#[ ,Y-)+\O'NJ([#PPc4/}s3o>Éǖs|xqkLk`StM*Ak@C0eY,M}:mLO_B l}zF$tJ FLʅ|}-W_7lٖYN,;|+R$z$F6"M'^iM\\dKSJ!ȩ~gpYbKc5B@Y;6OmJ<HV)/:]pȣB YaN25.8 EC*^,Sꪡ*y8DǙ04yVl YkX]Pz}1#"`P`,-:D=[evU "1Ԑ1]|IDѪXois@P-Պ4-WtcδKL=ɅvN[ˆ!䝩H B9QcT]M}'0  endstream endobj 233 0 obj << /Length 696 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS >_P{=s@dkx;`VY`s4JaQܡn.Uu9\Y6><ٴ.Z.4>Dӗ}~r:-d0VWk,8yLһʮӮђ[*mLr?q 5F8@=@)& 8Rx uD\j2HV0CzL] bctI g$`htы0\F0s jd< I6zg W qȐ+#k .bsrbmXK7ǵH7Gnb>&jؐu1VljOu$՟qWS/%1{\xB!K(hHTЖ枃Jρϯv=k2UKς_:~$/ ~E+7ˢ/ l(/} -+ZXukoԝE?ZKq endstream endobj 234 0 obj << /Length 695 /Filter /FlateDecode >> stream xmTMo0Wx$ ! 8l[jWHL7IPV=M̼ su;Uٛ=w]yil;<[[j<=?׾+v`&ߴț<^*;~&Q>MS>u;q~:fc_0F)lGιmu f8Gӫ6b"!YUe.`M{My?IC4}+̝l/Bj*{pϻƲO('$ *{>J-9_eQ"V$)MP:^9 ^` br @ {@(\,RH&ti m+3ԅ ,;F$БzFFieD(0A1a8yΠFpnù[w6p@ )9r9b_ia|F-(:(nQHY^`nA|n(戥K}s\}sԑoA&vqc⠦ YK^ʛ!_my_)=^ ^{TGRw1RDž'xJzImi9j'pͽܳ/-_Z,N_: ~iyY2q,nЪ5QN Y58.] endstream endobj 235 0 obj << /Length 739 /Filter /FlateDecode >> stream xmUMo0WxvHUdCmU^!1H#x?gx]OTm$|͜s_Iss :L;<Sz==׾f`*_`ɫڟk3'iѴ}=M;7rfnj-eSӵOLg~8 )ok A8 $`I\3`Af<Z]! xNky"7 _㓧q H`nḱRONH=CpB:# =%888QA~!*zƜАT?!~> tw8y*sύ }nFE>7*QύR>7G];~<6OIyktg>O:yұϓN|I/|yIg>O:y҅ϓ.}2 L> stream xmUMo0WxvH UdC۪TBb B8߯{ .@=/ۙڽs{K;K.k6/k+[M'ҷ>dyӔKe'$cS`vfSfK}fƁVGGf\bu<19w|擬CTAW $rG]IyMsh$aW7y̟u? sK-`θtJ!'c83?NaO<Dg!;IX 0z)rЃ@kpBQ]^Z7! / U <ɉ#W m/%]cX! gȀhID8QN~ACT/sQQRs 穅ύ>7: F+}n4eE=zG~<6OɈy2kLd>O&y2ϓQ>OfdV>OF<dR'<>O)yJS*}𗏿tx>z{O->tՍ]*3>cC~ endstream endobj 237 0 obj << /Length 900 /Filter /FlateDecode >> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vw%g43>\ 6 EJ78 1{~`W(-;]%=xe_,b+-O;q\L}UI--=BKE1p[! Mߊyu>.N5K)Wb٬8i[_uʕMzQ)V(Txޢjy!Z2P="Zd0\ÃGR\).2*Шa!U,H`+j.5Nα@VK-x%3%AYӀzΚ>kP#5m0Woþj.ZT$X/)n)#Wo(oRZ $Kp4Z-b\1ܰJ P"GXQi/8k^Zq:Zs9dB )sL-7xJ`aɽ)f$1 dъcCZC<73JgznHȰYɚTa,_-O87}KԴܗLloK+gJ.GZyVc48Wt]:P~`rZq.n1] S/Pu7Ue:?&?!d&1yHn5)yғBx#1ޞ]Go׏M?X endstream endobj 238 0 obj << /Length 852 /Filter /FlateDecode >> stream x}UMk@WlxW1$ |hPzuj%#%m 9ؼ}3IڽضߺItՓ;q\]U}s9|\qtY.Wժ۟oo C}? F`PޗS3ߎN6[w:n7l̵^y]/׵IFsuB`nlB =@ )U 9yI(ѥ S*043``ÍSqf|kiCc, pDˆzF:x0)ljsn l9u}SrI4"nXCA8%&ٵ6AIǚc:˿#7^YHOupQF^odž1BЖEQ?1^׆ƨАԗ039+ãbLi~jЙ}s~zrCOe fYJ|֟uМ8gΈrYφ}ŊϘъ1LҊkgigϘ݊og3f3|3ߊY[3 =L3f/gd ,' f)Rx jb&'W *~8d0UPt" ~7a3t> stream x}UMk@WlxW1$ |hPzuj%#%m 9ؼ}3IڽضߺItՓ;q\]U}s9|\qtY.Wժ۟oO+>G|V|~+>C1 V|B|FB|/g)g1{!>_|&~'a9i0K!cB{XTK5;)NŽbPq<${y儢 1 螡SsWѱ?"~t(Vu endstream endobj 240 0 obj << /Length 852 /Filter /FlateDecode >> stream x}UMk@WlxW1$ |hPzuj%#%m 9ؼ}3IڽضߺItՓ;q\]U}s9|\qtY.Wժ۟oG|F/+>㽴3Z~Z83f3[:٭ ߬Lg3t33 ~!>CO!>S 33>IY ?BXIAup*Çq&#{U-'H8qe%@ 8{Y;lFz?< endstream endobj 241 0 obj << /Length 851 /Filter /FlateDecode >> stream x}Un0CƆ"Rjn"73iwWUof8~;D>i|#7~_ga}>^=(-P7cj̧W1 kl֏Gsj4{FR2pubhnlb Ipp@FNuFFQ `r0*tFѼ% %  3p)efBkiCc,WpBƈzF:x 1v9/8vĩ8^$js7$GZ Op,cMϱXS_ 7^ YLOup3%M6`^ۘ1ل1%0ym 1F}3&ԗ03bKl+֌>oRa Oѷ`)w`)?\֟agYg ֙P.L(ulgYˉx/N|N|&ٝ N|N'>cv'>7'>S} ~)>_Sϔ+>cR|&L|'a9i0K)cR{XTG5;)NͽRPs> stream x}Un0+CW`$ MEDbɐCUA6ّD^}{l; imXc3t5n/.XjR˺^o3򼟸kյ uA )`JbD>`2$`TY'``9&Dkx,+0*NXXQQ3c 7M/߻Q 𭑦 btX& #q,pg'~ι58|%Nb'QDa 8g"h~ ' ~XkzǚOx! !=iaM4c̓ʳGym: C[1Flx L^"K~2&NCC&^P_,KV0d 1էMw"CgcY ~Y =9O('=g)YB|֙Bs:Sb+>cF+>3qg3K+>#>cv+>CӊϘ݊͊T_|~+>Cg!>o!>_33Ϙ/>?㓁41K!=,ߊTG^1|8Gh=¼WrBщWI\_tЩUtȢa5}n endstream endobj 243 0 obj << /Length 851 /Filter /FlateDecode >> stream x}Un0+CW`$ MEDbɐCUA6ّD^}{l;y| #:##0)%T\`YQqJƚ`ci|1Mލbo4m `2WQ/cW888sέ-./qJ;&\ k(d?F#h0\?IúXs>Tg ]IncT5obY:socsOPcYB?9Os֙3\Q.4ٰX3Z9#>^Z} ?L[ V|V|oV|3[: } B|)W|L| ,Y a!SMV,鸞:?8C8G潪N$ĸBO2{Nu]ޯpDQ endstream endobj 244 0 obj << /Length 851 /Filter /FlateDecode >> stream x}Un0CƆ"Rjn"73iwWUofx \iEܰpNMk l4\? ?5=cMu/x1g1=ia4c̓˳G6ڀ cxmcfƨog!/lmΘ8+^P_-C#[34IN؆1t?E߂ޡSrY ֟gg9433.XgB3\iafq3fts ,>G|F/'>t3:~:83fw3;:ٝ ߜLgw3t33 ~)>CO)>SK3- ,YJa)SMV襤:?85JC4G潺N$ĸBO<{Nu޿_E,vFo?; endstream endobj 245 0 obj << /Length 851 /Filter /FlateDecode >> stream x}Un0+CW`$ MEDbɐCuA6ّD^}{l?YtգиY}w 9]7puewSClݤMӍ'oܺ sR^}5s89 4Rӫ~R~K}O7Sk`."wAg LC3Ɋw۷qrMR8 o&݋L'lϧӫJnz_~NͿvr*aMߺkܰ^\zu \g$y=W/Q &)H8@hcRe]*q8cMC0c F F 1e|qi.Ke0^Ǣ9^'-pʹ)pq[[G]p_/+v5MĹPN~v-G`~uX}/S/w"': fyRy(#c^g!ch"ƨ-kC^d cRx~h K^| МQV14Nd5cY9Y?C9돡'g ?%>O:ShYggΈrYgDg>[bghX|&^V|{ig33qgng3tZ[Yog,g-g B|B|\3gg|2?f)O5[TT+?MGZN(:p y?0K:q:~Gw2 endstream endobj 246 0 obj << /Length 851 /Filter /FlateDecode >> stream x}Un0+CW`$ MEDbɐCUA6ّD^}{l?Ytգ;q\]U}s9n\i|ٺQ]jOtusR^}5s89Ηfi<WOlKQn8N[-#;skQ70j(+o!$oΣ;n},j7Fzoкнzr::Q:XTߙOo'BZ;vv݋ ZԲW<'suB`ilB =@ )U 9yI(ѥ S*043``MSin|kiCXc, pDˆzA:x0)ljsn l9u}SrI4"nXCA8%&ٵ6AIǚc:7^EHOupQF^odž1BЖEQ?[0^׆ƨАԗ0 9+ãbLi~jЙ}s~zrCOe fYJ|֟uМ8gΈrYφ}ŊϘъ1LҊkgigϘ݊og3f3|3ߊY[3 =L3f/gd ,' f)Rx jb&'W *~8d0UPt" ~7a3t> stream x}Un0+CW`$ MEDbɐCUA6ّD^}{l?Ytգ;q\]U}s9n\i|ٺQ]jOtusR^}5s8PYs/'7F3Hy:K-ٖ?p>ݝ2ZkXwm1985];B U{hFYs!yvq`TGy7{ E]&AjZu/?vG_L|z;9ڰƦokܰ^\zu \g$y?qמk(_KdR$| 4hd52HHNsL F.8XV`TR!fn"_LS5w[#McL#F X1+N978Nsk`q KpN8q )q4ϮEp O.?5Yş81Bx.BzҬÀhƘ'g 2xk=6u2,bق6E0F,eL燆LY` YecODV3Μ蛳;zr֟P.O0{S3ux9(uF: }6,V|ƌV|gegV|F_+>O+>G|V|~+>C1 V|B|FB|/g)g1{!>_|&~'a9i0K!cB{XTK5;)NŽbPq<${y儢 1 螡SsWѩ?!~tM(Vu endstream endobj 248 0 obj << /Length 720 /Filter /FlateDecode >> stream x}TMo0+J6*ħöUSEj9߯ IVcf͏睟ݛ{)^؝}]u:vzyu|CW$nmmΑmq5)M{`qjS5e$_FK6Ӈ~GnM|&/;M>u/tFo1C,RAj]IH}=nCbi$wiдK;!F ;oG+5~~VhVj;zk)7b]϶k+x; v/)&t,KK@F(.$ +.^ ] C@F 謨fҤ8s`Wg+`#)S%~8NTҌYE, (6*3FӪr44P#Yf͞hhӰCkE88+j"7G9~PpC+R2C#`p˜1q EE5=F]=7z&`qp&bð| _/cSMrΤ f/%m Ȱw \ԉCb֓x5cfw(:Kzgqf1iXg3Np y/hHS>W#/5ferTapC w=衡xz*m endstream endobj 249 0 obj << /Length 720 /Filter /FlateDecode >> stream x}TMo0+J6*ħöUSEj9߯ IVcf͏睟ݛ{)^؝}]u:vzyu|CW$nmmΑmq5)M{`qjS5үxO%r^q &\TƦkR@YwDoYia) SZM5_$$>kxq4|;o4vhwqB؝Bf#j{p7P_?{+4}+VYu}e}n.ˍggfjj{k:lF #QhJq  HQ/e.!Pp #]gQtVTv)#l-g!7'uӾ:[sI r.39uf *gQNxEqV11V啣Yq:54kDCZ+)]Ws8:а/9R\Qrz\8Ç]按Sp/ d8D(B!4׳030 =;fzÞJmw&^0C~/nS0GKW皠NdzG5cC)!=E^K<3Iò8ȿ q3NOg{ACt~Qn~ɸ\ %1.: *4hH`<4̶E hSu endstream endobj 250 0 obj << /Length 719 /Filter /FlateDecode >> stream x}TMo0+J6*ħöUSEj9߯ IVcf͏睟ݛ{)^؝}]u:vzyu|CW$nmmΑmq5)M{`qjS5NJJWG> endobj 164 0 obj << /Type /ObjStm /N 96 /First 870 /Length 4785 /Filter /FlateDecode >> stream x\YsF~cTSf[-/^#ɉh 0H̯4H*3ɭIlrAKN >l,qEpx H[H/ +aܫi͛›r +sp se Q#t"ttRT0mh1TZ8&04v@<\K5cJ+Bd.D`C8FYNT؁Q$?h t`:d5zD:p^(1BG[@,TFA$;*C5D0" 4E%@,'d(-{@1zU*\40Uzcq@%@ -2.ʠ{e5`\aT 5(<3 ;C[aǃ}GRt(BQqc@8TE%:De*+ R8D&80lWH: op Z BPGlT~b"|ݑY;jD#KBB+h .5` ErG!Ρ(KqmV67 ?3P oKƊzZωϫٲTq5[NŢїJƫe%|4~zrUx> x\M⪆#B UIl1dެףv2Z-z6~[܍$ O+6.CkLv [Yd6]~['ZM&^W5[Sz3ϫ% 'ޜ<)E˲h *ތx(+8q0EC//Ň K8fZ-DѼ-doNB.!)3+jE ,9+Gw7xQ^-V#j58kjY3:J .qPī-)6?V<&_e= Z0$6=qֻa|d&ZӓC +@ȈD#} Cqh 5!8B*v K5^RTN@PD: dBo-plmaPe3b" (a=duBl@$D m(Ohvs8D1.~и)<j!V-[PK9q;0ic{ Zp6hL.<5H#Q#7[k% aewQe2/C(;a WP#X 18B+;-R};yLxk`u4 3`&72ŸͰ8Okk3%4Am%t.5q1DgmN!twgux0(1hp0C-p\(T ]YD0npsdgqdl5jKI =lkWm@LyXlIsjV׽ %37Zp@'.R=Gb>,aMoۃ(5G#5L:vRh{❔Tq[WJ%;P&4(Yx*Tsd^*ǨL7TS똎SPa.UI*@t( $FM%g0`9em |,N2; 2c UA_Dܪtl *4:JmRKFF~**֩uڑW$* ϥ4F{ua3Iq>.U{mY ez׬vEG՚gde VS"v;ӭ3e};QEíA$@mnd1R#:nWl0t+l@^#r`Y10:ڕ ) 5Q$1p ng#eZ9!Э# N4lInqpИ+h0y0۷->DXo4i فݼ8QI5je:)yj1(=:%RrIOVd%MurɐvM):i(8O'h G':j1mgq4ttԪచrsH5:b#$( &:-kgTHbdNETW#EYG2@ء[4K%-o (dl:VJPO:.LgY$kMQ.KH_юv%cpPfiTc-I#ĵ:=sS8 dLSiNTLh"4qoHjCseZ۶F9q&2a*I&ArbAĉ{b+ 3| Sg ݍϦ%Yӡy @2jhP/~-oΟw;(씨I"kאY@P`/Aۣ=\L2pTۭFAǧ ݱ|@zQ? @I-:ne:G*Wō$>Zпkn~O i ӆm"z&Ťml>Nmm.x7]q|EXg7+uP*xӷc[6Wa#uؿEPIHP)?aCa&/Zv&;pvOz ɲPLaq m>鳴aNgߍz\p.7{\ >RmAe+mw n'hܨƍcM4xySr.m==̱y;r#Xe>+FK]ޟ _e6 >xi+R~иQ&wqd2)r7a&;yY j&ă?L]/SWxzL۟WPN)8!xh#=]Hm|`ß&}߾GP&ƿm~)z="Z$@T[4xqN#J/b,NZfR<Ëyy Sш=~o:N"Pv6hN12-JCl[dx)[$H\HmMNj3Zeya!;KM[=Dr[v"5>_d6~p͗G{q鲺Jٵ]•ٵ9"5peŋ^kV]qQiռB;]^u%V-EΣr4]8zfxB *%%Zw8(%Hu> endstream endobj 263 0 obj << /Type /XRef /Index [0 264] /Size 264 /W [1 3 1] /Root 261 0 R /Info 262 0 R /ID [ ] /Length 721 /Filter /FlateDecode >> stream x%IHUQ?OM}6hs4͡rȲA+,-kզhAP " PAB"@r!Q"jQw};cZcmܐP$G\%$Gb8D" ɚJ%20L"girlT!PJ4UIQ-ѹj$&5J䃦:MhxΨ5?{HܔoK9˿ 0$ are plotted using a color ramp or varying the radius of the hexagon in proportion to the counts. \end{enumerate} The underlying algorithm is extremely fast and effective for displaying the structure of datasets with $n \ge 10^6$. If the size of the grid and the cuts in the color ramp are chosen in a clever fashion than the structure inherent in the data should emerge in the binned plots. The same caveats apply to hexagon binning as apply to histograms and care should be exercised in choosing the binning parameters. The hexbin package is a set of function for creating, manipulating and plotting hexagon bins. The package extends the basic hexagon binning ideas with several functions for doing bivariate smoothing, finding an approximate bivariate median, and looking at the difference between two sets of bins on the same scale. The basic functions can be incorporated into many types of plots. This package is based on the original package for S-PLUS by Dan Carr at George Mason University and is mostly the fruit of his graphical genius and intuition. \section{Theory and Algorithm} Why hexagons? There are many reasons for using hexagons, at least over squares. Hexagons have symmetry of nearest neighbors which is lacking in square bins. Hexagons are the maximum number of sides a polygon can have for a regular tesselation of the plane, so in terms of packing a hexagon is 13\% more efficient for covering the plane than squares. This property translates into better sampling efficiency at least for elliptical shapes. Lastly hexagons are visually less biased for displaying densities than other regular tesselations. For instance with squares our eyes are drawn to the horizontal and vertical lines of the grid. The following figure adapted from \cite{carretal} shows this effectively. \begin{figure}[h] \centering <>= library("grid") library("hexbin") x <- rnorm(1000) y <- rnorm(1000) ##-- Hexagon Bins: -- hbin <- hexbin(x,y, xbins = 25) grid.newpage() pushViewport(viewport(layout=grid.layout(1, 2))) pushViewport(viewport(layout.pos.col=1,layout.pos.row=1)) plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE) popViewport() ##-- Manual "square" binning: -- ## grid rx <- range(x); bx <- seq(rx[1],rx[2], length=29) ry <- range(y); by <- seq(ry[1],ry[2], length=29) ## midpoints mx <- (bx[-1]+bx[-29])/2 my <- (by[-1]+by[-29])/2 gg <- as.matrix(expand.grid(mx,my))# dim = (28^2, 2) zz <- unname(table(cut(x, b = bx), cut(y, b = by)))# 28 x 28 ind <- zz > 0 if(FALSE) ## ASCII image: symnum(unname(ind)) sq.size <- zz[ind]^(1/3) / max(zz) ## if we used base graphics: ## symbols(gg[ind,], squares = sq.size, inches = FALSE, fg = 2, bg = 2) pushViewport(viewport(layout.pos.col=2, layout.pos.row=1)) vp <- plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE, type="n") pushHexport(vp$plot, clip="on") grid.rect(x= gg[ind,1], y=gg[ind,2], width = sq.size, height= sq.size, default.units = "native", gp = gpar(col="black",fill="black")) popViewport() @ \caption[bivariate: squares and hexagons]{A bivariate point set binned into squares and hexagons. Bins are scaled approximately equal, and the size of the glyph is proportional to the count in that bin.} \label{fig:compHexSq} \end{figure} We can see in Figure~\ref{fig:compHexSq} that when the data are plotted as squares centered on a regular lattice our eye is drawn to the regular lines which are parallel to the underlying grid. Hexagons tend to break up the lines. How does does the hexagon binning algorithm work? \begin{enumerate} \item Squash $Y$ by $\sqrt{3}$ \item Create a dual lattice \item Bin each point into pair of near neighbor rectangles \item Pick closest of the rectangle centers (adjusting for $\sqrt{3}$) \end{enumerate} << nearNeighbor, echo=FALSE, results=hide >>= x <- -2:2 sq <- expand.grid(list(x = x, y = c(-1,0,1))) fc.sq <- rbind(sq,sq+.5) # face centered squares fc.sq$y <- sqrt(3)*fc.sq$y # stretch y by the sqrt(3) nr <- length(fc.sq$x)/2 @ \begin{figure}[h] \centering <>= par(mfrow = c(3,1)) par(mai = c(.1667,0.2680,0.1667,0.2680)) ##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) points(-.25,.15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1)+1 py <- sqrt(3)*(c(0,0,-1,-1)+1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) points(-.25, .15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1) + 1 py <- sqrt(3)*(c(0,0,-1,-1) + 1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) px <- c(-.5,-.5,0,.5, .5, 0) py <- c(-.5, .5,1,.5,-.5,-1) /sqrt(3) polygon(px, py, col = gray(.5), density = 0) polygon(px-.5, py+sqrt(3)/2, density = 0, col = 4) points(-.25, .15, col = 2, pch = 16, cex = .5) plot.new() arrows(-.25, .15, 0, 0, angle = 10, length = .05) @ \caption[Near Neighbor Rectangles]{} \label{fig:binalg} \end{figure} Figure~\ref{fig:binalg} shows graphically how the algorithm works. In the first panel we see the the dual lattice laid out in black and blue points. The red point is an arbitrary point to be binned. The second panel shows the near neigbor rectangles for each lattice around the point to be binned, the intersection of the rectangles contains the point. The last panel shows the simple test for locating the point in the hexagon, the closest of the two corners which are not intersections is the center of the hexagon to which the point should be allocated. The binning can be calculated in one pass through the data, and is clearly $O(n)$ with a small constant. Storage is vastly reduced compared to the original data. \section{Basic Hexagon Binning Functions} Using the basic hexagon binning functions are not much more involved than using the basic plotting functions. The following little example shows the basic features of the basic plot and binning functions. We start by loading the package and generating a toy example data set. << basic, fig=TRUE, results=hide >>= x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40) plot(hbin) @ There are two things to note here. The first is that the function \texttt{gplot.hexbin} is defined as a \texttt{plot} method for the S4 class \texttt{hexbin}. The second is that the default color scheme for the hexplot is a gray scale. However, there is an argument to plot, \texttt{colramp}, that allows the use of any function that excepts an argument \texttt{n} and returns $n$ colors. Several functions are supplied that provide alternative color-ramps to R's built in color ramp functions, see \texttt{help(ColorRamps)}. << showcol, fig=TRUE, width=7, height=4, echo=FALSE, results=hide >>= #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"),"inches"), convertHeight(unit(1,"npc"),"inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40, shape = shape) #grid.newpage() pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = terrain.colors) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = BTY) popViewport() @ The figure shows three examples of using hexagons in a plot for large $n$ with different color schemes. Upper left: the default gray scale, upper right: the R base \texttt{terrain.colors()}, and lower middle: \texttt{BTY()}, a blue to yellow color ramp supplied with hexbin on a perceptually linear scale. The hexbin package supplies a plotting method for the hexbin data structure. The plotting method \texttt{gplot.hexbin} accepts all the parameters for the hexagon function and supplies a legend as well, for easy interpretation of the plot. Figure~2 shows a hex binned plot with a legend. A function \texttt{grid.hexlegend} is supplied for creating user specified hexagon legends. \section{Extended Hexagon Functions} So far we have looked at the basic hexagon plot. The hexbin package supplies several extensions to the basic hexbin, and the associated hexplot. The extensions discussed in this section will be smoothing hexbin objects using the hsmooth function, approximating a bivariate median with hexagons and a version of a bivariate boxplot, and using eroded hexbin objects to look at the overlap of two bivariate populations. \subsection{Smoothing with \texttt{hsmooth}} At this point the hexbin package only provides a single option for smoothing using a discrete kernel. Several improvements are in development including an apply function over neighborhoods and spline functions using a hexagonal basis or tensor products. The apply function should facilitate constructing more sophisticated kernel smoothers. The hexagon splines will provide an alternative to smoothing on a square grid and allow interpolation of hexagons to finer grids. The current implementation uses the center cell, immediate neighbors and second neighbors to smooth the counts. The counts for each resulting cell is a linear combination of the counts in the defined neighborhood, including the center cell and weights. The counts are blurred over the the domain, and the domain increases because of shifting. Generally the dimension of the occupied cells of the lattice increases by one, sometimes two. Some examples of using the hsmooth function are given below. Notice in the plots that the first plot is with no smoothing, weights are \texttt{c(1,0,0)} meaning that only the center cell is used with identity weights. The second plot shows a first order kernel using weights \texttt{c(24,12,0)}, while the third plot uses weights for first and second order neighbors specified as \texttt{c(48,24,12)}. The code segment generating these plots rescales the smoothed counts so that they are on the original scale. << showsmth, fig=TRUE, width=8, height=4, echo=FALSE, results=hide >>= #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) x <- rnorm(10000) y <- rnorm(10000) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"), "inches"), convertHeight(unit(1,"npc"), "inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) hbin <- hexbin(x,y, xbins = 30,shape = shape) hsmbin1 <- hsmooth(hbin, c( 1, 0,0)) hsmbin2 <- hsmooth(hbin, c(24,12,0)) hsmbin2@count <- as.integer(ceiling(hsmbin2@count/sum(hsmbin2@wts))) hsmbin3 <- hsmooth(hbin,c(48,24,12)) hsmbin3@count <- as.integer(ceiling(hsmbin3@count/sum(hsmbin3@wts))) pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1)) plot(hsmbin1, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hsmbin2, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hsmbin3, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() @ \subsection{Bin Erosion and the \texttt{hboxplot}} The next tool to introduce, gray level erosion, extends the idea of the boxplot. The idea is to extract cells in a way that the most exposed cells are removed first, ie cells with fewer neighbors, but cells with lower counts are removed preferentially to cells with higher counts. The algorithm works as follows: Mark the high count cells containing a given fraction, cdfcut, of the total counts. Mark all the cells if cdfcut is zero. The algorithm then performs gray-level erosion on the marked cells. Each erosion cycle removes counts from cells. The counts removed from each cell are a multiple of the cell's exposed-face count. The algorithm chooses the multiple so at least one cell will be empty or have a count deficit on each erosion cycle. The erode vector contains an erosion number for each cell. The value of erode is \begin{center} $6\times$(The erosion cycle at cell removal) $ - $ (The cell deficit at removal) \end{center} The cell with the highest erosion number is a candidate bivariate median. A few ties in the erosion order are common. The notion of an ordering to the median is nice because it allows us to create a version of a bivariate box plot built on hexagons. The following example comes from a portion of the ''National Health and Nutrition Examination Survey'' included in \texttt{hexbin} as the sample data set NHANES. The data consist of 9575 persons and mesures various clinical factors. Here in Figure~\ref{hbox} we show the levels of transferin, a measure of iron binding against hemoglobin for all \begin{figure}[h] \centering << echo=FALSE, results=hide >>= data(NHANES) #grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) #vpin <- c(convertWidth (unit(1,"npc"), "inches"), # convertHeight(unit(1,"npc"), "inches")) vpin <- c(unit(6,"inches"),unit(4, "inches")) shape <- optShape(height = vpin[2], width = vpin[1], mar = mai) @ << hbox, fig=TRUE, width=6, height=4, echo=FALSE, results=hide >>= hb <- hexbin(NHANES$Transferin, NHANES$Hemoglobin, shape = shape) hbhp <- hboxplot(erode(hb,cdfcut = .05),unzoom = 1.3) pushHexport(hbhp,clip = 'on') hexGraphPaper(hb,fill.edges = 3) popViewport() @ \caption{Hexagon "boxplots" showing the top 95 percent of the data for males and females. The red hexagons are an estimate of the bivariate median.} \label{hbox} \end{figure} Note that we have added ``hexagon graph paper'' to the plot. This can be done for any hexbin plot, using the command \texttt{hexGraphPaper()} where the main argument is the hexbin object. \subsection{Comparing Distributions and the \texttt{hdiffplot}} With univariate data, if there are multiple groups, one often uses a density estimate to overlay densities, and compare two or more distributions. The hdiffplot is the bivariate analog. The idea behind the hdiff plot is to plot one or more bin objects representing multiple groups to compare the distributions. The following example uses the National Health data supplied in the hexbin package, (\texttt{NHANES}). Below we show a comparison of males and females, the bivariate relationship is transferin, which is a derived measure of the ability of blood to bind oxygen, vs the level of hemoglobin. Note that in the call to \texttt{hdiffplot} we erode the bins to calculate the bivariate medians, and only display the upper 75\% of the data. \begin{figure}[h] \centering << hdiff, fig=TRUE, width=6, height=4, echo=FALSE, results=hide >>= #grid.newpage() shape <- optShape(height = vpin[2],width = vpin[1],mar = mai) xbnds <- range(NHANES$Transferin,na.rm = TRUE) ybnds <- range(NHANES$Hemoglobin,na.rm = TRUE) hbF <- hexbin(NHANES$Transferin[NHANES$Sex == "F"], NHANES$Hemoglobin[NHANES$Sex == "F"], xbnds = xbnds, ybnds = ybnds, shape = shape) hbM <- hexbin(NHANES$Transferin[NHANES$Sex == "M"], NHANES$Hemoglobin[NHANES$Sex == "M"], xbnds = xbnds, ybnds = ybnds, shape = shape) #plot.new() hdiffplot(erode(hbF,cdfcut = .25),erode(hbM,cdfcut = .25),unzoom = 1.3) @ \caption{A difference plot of transferin vs hemoglobin for males and females.} \label{hdiffplot} \end{figure} \subsection{Plotting a Third Concomitant Variable} In many cases, such as with spatial data, one may want to plot the levels of a third variable in each hexagon. The grid.hexagons function has a pair of arguments, \texttt{use.count} and \texttt{cell.at}. If \texttt{use.count = FALSE} and \texttt{cell.at} is a numeric vector of the same length as \texttt{hexbin@count} then the attribute vector will be used instead of the counts. \texttt{hexTapply} will summarize values for each hexagon according to the supplied function and return the table in the right order to use as an attribute vector. Another alternative is to set the \texttt{cAtt} slot of the hexbin object and grid.hexagons will automatically plot the attribute if \texttt{use.count = FALSE} and \texttt{cell.at = NULL}. Here is an example using spatial data. Often cartographers use graduated symbols to display varying numerical quantities across a region. \section{Example: cDNA Chip Normalization} This example is taken from the marray package, which supplies methods and classes for the normalization and diagnostic plots of cDNA microarrays. In this example the goal is not to make any comments about the normalization methodology, but rather to show how the diagnostic plots can be enhanced using hexagon binning due to the large number of points ($n = 8,448$ cDNA probes per chip). We look at the diagnostic plot $M$ vs $A$, where $M$ is the log--ratio, $M = \log <- 2 \frac{R}{G}$ and $A$ is the overall intensity, $A = \log <- 2\sqrt{RG}$. Figure~3 shows the plot using points and on the right hexagons. The hexagon binned plot shows that most of the pairs are well below zero, and that the overall shape is more like a comet with most of the mass at the bottom of the curve, rather than a thick bar of points curving below the line. << marray1, fig=TRUE, results=hide >>= ### Need to redo this part. if (require("marray")) { data(swirl, package = "marray") ## use swirl dataset hb1 <- hexbin(maA(swirl[,1]), maM(swirl[,1]), xbins = 40) grid.newpage() pushViewport(viewport(layout = grid.layout(1, 2))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) nb <- plot(hb1, type = 'n', xlab = 'A', ylab = 'M', main = "M vs A plot with points", legend = 0, newpage = FALSE) pushHexport(nb$plot.vp) grid.points(maA(swirl[,1]), maM(swirl[,1]),pch = 16,gp = gpar(cex = .4)) popViewport() nb$hbin <- hb1 hexVP.abline(nb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(nb) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) hb <- plotMAhex(swirl[,1], newpage = FALSE, main = "M vs A plot with hexagons", legend = 0) hexVP.abline(hb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(hb) popViewport() } else { plot(1) } @ \section{Manipulating Hexbins} The underlying functions for hexbin have been rewritten and now depend on the grid graphics system. The support unit for all hexagon plots is the hexViewport. The function \texttt{hexViewport()} takes a hexbin object as input and creates a viewport scaled to the current device or viewport so that the aspect ratio is scaled appropriately for the hexagons. Unlike in the base graphic functions where the aspect ratio is maintained by shifting the range of the axes, here the extra space is shifted into the margins. Currently hexViewport returns a hexViewport object that has information on the margins and its own pushViewport method. In the next example we will 1st show how to manipulate an existing plot using grid commands and second show how to create a custom plotting function using \texttt{hexViewport} and grid. \subsection{Adding to an existing plot} Adding to an existing plot requires the use of grid functions. For instance, in the following code, << addto, fig=TRUE, echo=TRUE, results=verbatim >>= if (require("marray")) { hplt <- plot(hb1, style = 'centroid', border = gray(.65)) pushHexport(hplt$plot.vp) ll.fit <- loess(hb1@ycm ~ hb1@xcm, weights = hb1@count, span = .4) pseq <- seq(hb1@xbnds[1]+1, hb1@xbnds[2]-1, length = 100) grid.lines(pseq, predict(ll.fit,pseq), gp = gpar(col = 2), default.units = "native") } else { plot(1) } @ we have to use \texttt{grid.lines()}, as opposed to \texttt{lines()}. \bibliography{references} \end{document} hexbin/inst/doc/hexagon_binning.R0000644000176200001440000002140614406412354016537 0ustar liggesusers### R code from vignette source 'hexagon_binning.Rnw' ################################################### ### code chunk number 1: comphexsq ################################################### library("grid") library("hexbin") x <- rnorm(1000) y <- rnorm(1000) ##-- Hexagon Bins: -- hbin <- hexbin(x,y, xbins = 25) grid.newpage() pushViewport(viewport(layout=grid.layout(1, 2))) pushViewport(viewport(layout.pos.col=1,layout.pos.row=1)) plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE) popViewport() ##-- Manual "square" binning: -- ## grid rx <- range(x); bx <- seq(rx[1],rx[2], length=29) ry <- range(y); by <- seq(ry[1],ry[2], length=29) ## midpoints mx <- (bx[-1]+bx[-29])/2 my <- (by[-1]+by[-29])/2 gg <- as.matrix(expand.grid(mx,my))# dim = (28^2, 2) zz <- unname(table(cut(x, b = bx), cut(y, b = by)))# 28 x 28 ind <- zz > 0 if(FALSE) ## ASCII image: symnum(unname(ind)) sq.size <- zz[ind]^(1/3) / max(zz) ## if we used base graphics: ## symbols(gg[ind,], squares = sq.size, inches = FALSE, fg = 2, bg = 2) pushViewport(viewport(layout.pos.col=2, layout.pos.row=1)) vp <- plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE, type="n") pushHexport(vp$plot, clip="on") grid.rect(x= gg[ind,1], y=gg[ind,2], width = sq.size, height= sq.size, default.units = "native", gp = gpar(col="black",fill="black")) popViewport() ################################################### ### code chunk number 2: nearNeighbor ################################################### x <- -2:2 sq <- expand.grid(list(x = x, y = c(-1,0,1))) fc.sq <- rbind(sq,sq+.5) # face centered squares fc.sq$y <- sqrt(3)*fc.sq$y # stretch y by the sqrt(3) nr <- length(fc.sq$x)/2 ################################################### ### code chunk number 3: hexagon_binning.Rnw:138-170 ################################################### par(mfrow = c(3,1)) par(mai = c(.1667,0.2680,0.1667,0.2680)) ##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) points(-.25,.15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1)+1 py <- sqrt(3)*(c(0,0,-1,-1)+1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) points(-.25, .15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1) + 1 py <- sqrt(3)*(c(0,0,-1,-1) + 1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) px <- c(-.5,-.5,0,.5, .5, 0) py <- c(-.5, .5,1,.5,-.5,-1) /sqrt(3) polygon(px, py, col = gray(.5), density = 0) polygon(px-.5, py+sqrt(3)/2, density = 0, col = 4) points(-.25, .15, col = 2, pch = 16, cex = .5) plot.new() arrows(-.25, .15, 0, 0, angle = 10, length = .05) ################################################### ### code chunk number 4: basic ################################################### x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40) plot(hbin) ################################################### ### code chunk number 5: showcol ################################################### #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"),"inches"), convertHeight(unit(1,"npc"),"inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40, shape = shape) #grid.newpage() pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = terrain.colors) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = BTY) popViewport() ################################################### ### code chunk number 6: showsmth ################################################### #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) x <- rnorm(10000) y <- rnorm(10000) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"), "inches"), convertHeight(unit(1,"npc"), "inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) hbin <- hexbin(x,y, xbins = 30,shape = shape) hsmbin1 <- hsmooth(hbin, c( 1, 0,0)) hsmbin2 <- hsmooth(hbin, c(24,12,0)) hsmbin2@count <- as.integer(ceiling(hsmbin2@count/sum(hsmbin2@wts))) hsmbin3 <- hsmooth(hbin,c(48,24,12)) hsmbin3@count <- as.integer(ceiling(hsmbin3@count/sum(hsmbin3@wts))) pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1)) plot(hsmbin1, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hsmbin2, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hsmbin3, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() ################################################### ### code chunk number 7: hexagon_binning.Rnw:349-357 ################################################### data(NHANES) #grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) #vpin <- c(convertWidth (unit(1,"npc"), "inches"), # convertHeight(unit(1,"npc"), "inches")) vpin <- c(unit(6,"inches"),unit(4, "inches")) shape <- optShape(height = vpin[2], width = vpin[1], mar = mai) ################################################### ### code chunk number 8: hbox ################################################### hb <- hexbin(NHANES$Transferin, NHANES$Hemoglobin, shape = shape) hbhp <- hboxplot(erode(hb,cdfcut = .05),unzoom = 1.3) pushHexport(hbhp,clip = 'on') hexGraphPaper(hb,fill.edges = 3) popViewport() ################################################### ### code chunk number 9: hdiff ################################################### #grid.newpage() shape <- optShape(height = vpin[2],width = vpin[1],mar = mai) xbnds <- range(NHANES$Transferin,na.rm = TRUE) ybnds <- range(NHANES$Hemoglobin,na.rm = TRUE) hbF <- hexbin(NHANES$Transferin[NHANES$Sex == "F"], NHANES$Hemoglobin[NHANES$Sex == "F"], xbnds = xbnds, ybnds = ybnds, shape = shape) hbM <- hexbin(NHANES$Transferin[NHANES$Sex == "M"], NHANES$Hemoglobin[NHANES$Sex == "M"], xbnds = xbnds, ybnds = ybnds, shape = shape) #plot.new() hdiffplot(erode(hbF,cdfcut = .25),erode(hbM,cdfcut = .25),unzoom = 1.3) ################################################### ### code chunk number 10: marray1 ################################################### ### Need to redo this part. if (require("marray")) { data(swirl, package = "marray") ## use swirl dataset hb1 <- hexbin(maA(swirl[,1]), maM(swirl[,1]), xbins = 40) grid.newpage() pushViewport(viewport(layout = grid.layout(1, 2))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) nb <- plot(hb1, type = 'n', xlab = 'A', ylab = 'M', main = "M vs A plot with points", legend = 0, newpage = FALSE) pushHexport(nb$plot.vp) grid.points(maA(swirl[,1]), maM(swirl[,1]),pch = 16,gp = gpar(cex = .4)) popViewport() nb$hbin <- hb1 hexVP.abline(nb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(nb) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) hb <- plotMAhex(swirl[,1], newpage = FALSE, main = "M vs A plot with hexagons", legend = 0) hexVP.abline(hb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(hb) popViewport() } else { plot(1) } ################################################### ### code chunk number 11: addto ################################################### if (require("marray")) { hplt <- plot(hb1, style = 'centroid', border = gray(.65)) pushHexport(hplt$plot.vp) ll.fit <- loess(hb1@ycm ~ hb1@xcm, weights = hb1@count, span = .4) pseq <- seq(hb1@xbnds[1]+1, hb1@xbnds[2]-1, length = 100) grid.lines(pseq, predict(ll.fit,pseq), gp = gpar(col = 2), default.units = "native") } else { plot(1) }