Epi/0000755000176200001440000000000014016527043010771 5ustar liggesusersEpi/NAMESPACE0000644000176200001440000001343314016520006012204 0ustar liggesusersuseDynLib(Epi, .registration=TRUE) export( as.Date.cal.yr, apc.frame, apc.fit, apc.plot, apc.lines, plot.apc, lines.apc, pc.points, pc.lines, pc.matpoints, pc.matlines, pc.matshade, cp.points, cp.lines, cp.matpoints, cp.matlines, cp.matshade, cal.yr, as.Date.cal.yr, ccwc, ci.pd, ci.lin, ci.exp, ci.cum, ci.surv, ci.pred, ci.ratio, ci.mat, ci.Crisk, sim2ci.Crisk, sim2ci.Srisk, sim2ci.Stime, matshade, lls, clear, contr.orth, contr.2nd, contr.cum, contr.diff, detrend, decurve, dur, erl, surv1, surv2, erl1, yll, effx, effx.match, float, print.floated, gen.exp, mat2pol, Icens, print.Icens, plotevent, fit.add, fit.mult, ftrend, fgrep, ngrep, lgrep, plotCIF, stackedCIF, show.apc.LCa, apc.LCa, LCa.fit, print.LCa, summary.LCa, predict.LCa, plot.LCa, Lexis.diagram, Lexis.lines, Life.lines, list.lex, Lexis, merge.Lexis, plot.Lexis, points.Lexis, lines.Lexis, PY.ann.Lexis, subset.Lexis, "[.Lexis", cbind.Lexis, rbind.Lexis, order.Lexis, orderLexis, sortLexis, summary.Lexis, print.summary.Lexis, splitLexis, transform.Lexis, levels.Lexis, nid.Lexis, bootLexis, Relevel.Lexis, factorize.Lexis, cutLexis, mcutLexis, rcutLexis, countLexis, stack.Lexis, tmat.Lexis, boxes.Lexis, boxes.matrix, boxes.MS, msdata.Lexis, etm.Lexis, crr.Lexis, glm.Lexis, gam.Lexis, coxph.Lexis, simLexis, addCov.Lexis, addDrug.Lexis, subset.stacked.Lexis, transform.stacked.Lexis, plot.pState, lines.pState, entry, exit, status, timeBand, timeScales, timeSince, tsNA20, breaks, absorbing, transient, preceding, before, succeeding, after, tbox, dbox, fillarr, boxarr, boxes, factorize, rm.tr, PY.ann, N2Y, tmat, nState, pState, msdata, mh, ncut, nice, NArray, ZArray, Ns, Termplot, pctab, plotEst, pointsEst, projection.ip, in.span, inSpan, id.span, idSpan, thinCol, linesEst, rateplot, Aplot, Pplot, Cplot, nid, Relevel, Relevel.factor, ROC, twoby2, Wald, stat.table, clogistic, poisreg, harm) # Import generic methods importFrom( utils, stack ) # importFrom( base, cbind, rbind ) importFrom( splines, ns, bs ) importFrom( plyr, rbind.fill ) importFrom( purrr, '%>%' ) importFrom( dplyr, summarize, group_by, arrange, left_join, select, rename, mutate, ungroup, filter) importFrom( cmprsk, crr) importFrom( etm, etm ) # importFrom( mstate, msdata ) importFrom( MASS, mvrnorm, ginv ) importFrom( survival, clogit, coxph, Surv ) importFrom( mgcv, gam ) importFrom( numDeriv, hessian ) importFrom( Matrix, nearPD ) importFrom( zoo, na.locf ) importFrom("grDevices", "gray", "rainbow", "adjustcolor", "dev.cur") importFrom("graphics", "abline", "arrows", "axis", "box", "layout", "lines", "locator", "matlines", "matplot", "matpoints", "mtext", "par", "plot", "plot.new", "plot.window", "points", "polygon", "rect", "rug", "segments", "strheight", "strwidth", "text") importFrom("stats", ".getXlevels", "addmargins", "anova", "approx", "ave", "as.formula", "binomial", "coef", "complete.cases", "contr.sum", "dpois", "fisher.test", "fitted", "formula", "gaussian", "glm", "is.empty.model", "lm", "make.link", "median", "model.extract", "model.matrix", "model.offset", "model.response", "nlm", "pchisq", "pnorm", "poisson", "predict", "predict.lm", "qnorm", "qt", "quantile", "rpois", "runif", "termplot", "update", "vcov", "weighted.mean", "xtabs") importFrom("utils", "flush.console", "str") # register S3 methods S3method( print, Icens) S3method( print, floated) S3method( plot, apc) S3method( lines, apc) S3method( plot, Lexis) S3method( plot, pState) S3method( lines, pState) S3method( points, Lexis) S3method( lines, Lexis) S3method( PY.ann, Lexis) S3method( merge, Lexis) S3method( subset, Lexis) S3method( subset, stacked.Lexis) S3method( "[", Lexis) S3method( cbind, Lexis) S3method( rbind, Lexis) S3method( summary, Lexis) S3method( print, summary.Lexis) S3method( transform, Lexis) S3method( transform, stacked.Lexis) S3method( levels, Lexis) S3method( nid, Lexis) S3method( nid, default) S3method( Relevel, Lexis) S3method( Relevel, factor) S3method( Relevel, default) S3method( factorize, Lexis) S3method( addCov, Lexis) S3method( addDrug, Lexis) S3method( stack, Lexis) S3method( tmat, Lexis) S3method( boxes, Lexis) S3method( boxes, matrix) S3method( boxes, MS) S3method( msdata, Lexis) S3method( etm, Lexis) S3method( glm, Lexis) S3method( gam, Lexis) S3method( coxph, Lexis) S3method( print, LCa) S3method( summary, LCa) S3method( predict, LCa) S3method( plot, LCa) S3method( print, stat.table) S3method( print, clogistic) S3method( coef, clogistic) S3method( vcov, clogistic) S3method( as.Date, cal.yr) Epi/data/0000755000176200001440000000000013763140361011704 5ustar liggesusersEpi/data/blcaIT.rda0000644000176200001440000000137512531361106013532 0ustar liggesusersKHTQ̔,LEQؘs㈘wYfj9430r).EDAIHHAAI}07e990UE! !f{m+պRbfY {ʺ6c xC;cpƒ3 g,;cpJOĝj<'_>!o3ߨN''f}Ľ5 FYHY"54_KblEѲFvA^239BZ'ziQ!cϕ8J}sG717|0u1ڏ껟S9|9 99\ /ظKs 8?GWGWJ'$+Bx#?wx}~X!]ӀuO@aߺ_a&`ópO/w2У\_/lf3\\V@}pK|~X uu\7M|IP}x$˃ol0oo? n_; p|;nT4t2 ܾlN>N 'I) ;v(PءCa ;vP١Ce*;TvP١Cc;4vhءCc:;tvmom/| Epi/data/DMepi.rda0000644000176200001440000025033513363620445013404 0ustar liggesusersx6 GDĆAQQ#" ^! =w S!л ذ{W]Qauy{_WV5kZ֚'=7,,Bؙ+U8o ?gU ;ǁgu36y|Xؙ; ,,<ɟ! B_/ B_/ B_/ B_W! B_/ B_/ B_/ B_ġҤc'9 gZbӘݫd\ltrk|@XrXFX)'^9 Fب6)'i9 l^N`r[ت\N`rۖخ@_ 1@_ 9@_] 5@_ =@_= 3@_ ;@_} 7@_ VN XV>`rQN D9rVN XV>rQNr}88@+'|!a@_9e +' ,+~BG0jZ?T𿁵 SNOk ! YN`rh Sar*l^NO?.3oB?.3o`r}v +'W>)~W>`r} }v +'W>)~W>)~W>߅~.?w|߅ }.]+wB_s  +' ,+X9('WN`Ya@_9e QNr}x*D9rVN XV>)~ ,+?Tr} 'aS– ( +0J@CT0AaI NSpB!;?LFcfxjvc8O_6 K7C}S_ apftcg5M8]"L8g0Cl?ah2aQkhڷt'^?jrFoЄI7pmS.R!Дcz~Y1ݶ>o[4鬇674>z|g9&ޤd?gSm M:ha1i`xi m;mWxMҿmM>ܔkd bڙxˎ VvX Z:|?ǏxktX?|Nvɇ0tVH:>|Wҍxt'>lu`I._'v& fbMN'B_`|g~޸xaҧ=,0fJ `>SH/"~ta:$B5}0vi Mg߲z?Ǘx1 w1?L`k<ÚG<>(Y>"R`o8h Ұ7?IAFh| ã4<pi[ n޼1 Mfc4t[t2?ǟrs8 >zb2P `;l_CO_ a&L>! OK?ohyG;@`hHQ&<±Zo'hz/Dśk/a'O*>cr]J?9IM0-o=t;cJ!3x~Xc|i ~w9^|OhZC' K͗^zF+7/vD˓^ߣ# oB7E<q~$k'=<>d2s$?l|ꅉWY ~Il7"^筿Ǖxr|w\o<~|8jXI?@8,}ogwo] 8?u8M3AIvM>|\?6^!ٟ0Ǜl֓\<4ޛO>aӓǟ%h~waXO|^Onz_{#?ðC"}s$j;_+VNM~ukc8y|d#(yf/ӛXSy|Kҕ''k;V#ɏV^_+F$\)wxrI?x^"ޔKOGx߰@}xKg# ²@y|JH0돆Igs^yx:/aͧv|~iwnQHy|OSOޏ6<Oi{[+7|}';n -ޕc|G|fHO_xqjkY9O{:/zwgԄJ^iߗxY`z.qz߾wZgWexLxS.K< V)BagiXzE˶Kh-zMWV/ʸ O~_h~~;oFoٳ ӄߵw;]ʇ)?ݯx?/=OgΧy#Xcw|n8M~ Ft?1mt. c k`|}rr:~w׏vkO`~?N761(u/!H`??kwGS7XAӃßob`t 㽰'>ۏm} B7GvOW#_Sp|vO#H`;Nfà ~"NƇB+WӄM9Lo}[Wd}= g~raL.mam!Om_?ݼ|O`9_mSX?,F|&򵅶"ػ>g{ðc7͗z20 )|i#K07u 0K> Ro)oi[`G"Lӕ3Hӿ43 '%t|i~d,~m~M ac-M>cvklyU?]}f\ :&LH=7/ M6X? z=*ezlZhwG?'Wbۏzo#~̯vhO'=;iE_ mi70{(i>+h3c=ϳd~nm5<,ϳdƳoiOB?]X/_kDg9 tVy~@L=x2gtSôWId!<>z5?߭ώ[Ü'&] ڏ/])r%{ڮl|a~跂~LK'^%<<ezH?(S強(}Dܯooœ Eg\'C9(rܸnX??*Q' ߿^4о[?LSyu~U“ڿKF#q;4s'nl7{nՐxAG?(3μ?:rh cۯyBiov^/[:KpM/Y곡>y^;_]wݾvNӿ:roXaOqofD/ quJ{m Ԝ7'XW8}ǿ3>_:ʏ(#JࢗϜuF!.tҗ^y/juQ[mv̚-P{/8%wwvW'$AΚvczk"o]EmNk>/93NLuPEg7cLm_$ jOϯCqm~>^kѝng|=>)lƵN-?Aqݞ9x1sp܌u44Z~k>W뻸굜V]z hs& eoEaK'@S :>F,k9Dk^g]oW9{ v:o}gK{yWm#rGWvBJ7UNo&xaI^{VۇVar>h]< pÍ,B Qetg۟shqlp9*h@=I?;y+ᏻɭo<{.={U>F%Ow"5CnuW|.Zι Ds)~n8:zpӳ+K:*s׺sh׎횶->uFZ/Zultahx֧gW l7g?֩}zݤ.-cw4;xayM^| 8Aο e_CkU2Cwo>}>@ ߀6 *$a"n\^e):>(܃N.uuew V!ϳ@o06`~}ފwLϼ8H`lKEc𥓝.%+YM|n '!9 Oě[0G_;-\#1˰NFqzT>RG {{/G|^| $4/:Po|rOCܲgI@ "N~0$֭~Y2ٷ߶+,ǷZxC=0p9-'btm""v,C5+l[/bs$È\^4e$)ڌYv.xcP*9V{G\ck)"~xgicN:s:١0lloaG*a^6Cp7wf5U6GӾx_Ew+Gĕ•Wܽ~G{!w!kx/a3U: u%>PsHxYxqM\yvL+kte_a ǰ _F?\ Nxi a8|_mrҏ{̪<{S/8PI.ʟ"8 7s*IWOk8+nSxWDm ]\:Hs0ZjaHatcZ;_E(I`u~g/ةG $lrK1YP1KH|#)ށ ~h2:dWX^`¢\9i`\p$iq"\ڱw W?"3;ʙu'QO3۰1Y{j_q6bW~Țf¸]~pcn#3L᜶S'!I} aW{3ƿ*IwBYZc\Šn kąKּ>n0ń?a6SνOHn*DzH*rӋHn?!eXsڇ/4fL"3pܹ8Hg1b-&aI`bʉU{d|ybRYObrpؙ?ߪ&Ԗ:$f}B8&t3 r}0)w^H)k޷ @j)n)G<2i;&y -Af'ǖŘz] s^uT $K$7pstE^$?ʁW\۲}yH~}UBJ9:Qi8Ӯc;ɹ 8Rwľo#喷u^pjcZF{ iWi˺[_v9x=H{7]ɲ0} ]ʲ/ic=2A"/Ҿ^"E/b]Gܲ0I~w΁i`G~4\l%"͑> ǴBY3~lg"u#:O#KYX1}KBƅr7gɹ&/c`d)ǞǑy\L6EƷtَޅq"Cjwyқ9lØ~|Ș{WHzv/|VHjCd>/P 2JZWUx_p2]u30ݠ>ͬ6= swEbƃN20\ ̎r]Kdzo0n̈uĿ_z"}d|#@Aƾfr_ȸDZU}cEy3rN`Ve~a֐k^ 38f|$5qL=-|y&f=wFYb{A̾ѝ?9Ĝ+?Wsl51{%#>U:\}ۘY;0{Y&bF_}rjry3rv]GL;t9!5 A#g'c` rH[9ye.rN ZNr/|e.Bָˋ\omDGy u[?H7Hy×)2+>.eD60.V\cYr|Y+w_zc1G$dL[#kv\_gd_/ho7 8k‚ϝf@,pf=)D[vcO~ìz: Շo GY}wܶn5_L{Ă/{ǷXkDv_?alfb##^8wpadpV}*,)癗%^8\VGC@xs:T0"q z1|:ݽ }Xcby+ZzM ꆜݢđ^{F 'K.} _s&V,l[Xd~ i%ȹّCg:#_4AfOD܂}n󇳐O\w$!kZק~4앇b,?|,, X?# 7C &~6_#-5wg݌α@!r@?hqPn %.b#m]%u/`~`~\'|UȩK7Ģ]&=ȭ&rW,i-?`G쌌ts\,HO\~y ,lk VaTXPNX`D5 ?4K,|3‘﮸8uEd55/[-!>ENY#7`iwO} K/alۗIw#?>uVuůŠgcŏM.Vl<+^bOo>w=G%݇?@.(WϿ{ھ[rQvq;+aX'~""Ȼ=_&r F~{^ >y=E?㭦.MrWy˻.䵓wc5}]{Q->¢[='K~WyX_'k9/a+uk&y9[eʹ_'2(SQo;e(fQP{w}>W(됽d3 sad'+\e2Wou;}yh˟CX\۱ypX_5G_U9g< d]dg{pEg Ca;4/Ġ|yBQ7hacQ4P&ș鞻rlth߇OUp~/X+@OBF[pWl?x EeEOT󷧓j#%qmDM<龃| <ձʽ]UsH}A{8R f`q2$L+7Ջp]ʺȿmֈQY}>W~(|D(^.ϝS+}7=9}͟ƺ,`C>qɽXs8~! ;~z770 ;~<KC`,0&a XyXC~~WHe6 ue$@9mzK/K{5gDM|MX;Yv6G1/wS\MufJg^dBJ#sbA<@A~]M(s]k;ۓ(,-aLmQD|d\\cMaN tW-†r_ nS.P OPN։Q "7Fz@qPS"AqSޠ#Y%vc_ZrkFVvXns]}[rI%rn9bmq536%:3P܍U?sߛ* [sdlR'Kʺ sCq=}R% _йX( %b3G}l|(XZbsEvdҖ;{ğ(;9v\@cs79Ųn-D"[r]ll&ǡe~#89>^v+J } Bf9U]:8gym66-a|<7"y߆-:norora횶61[+K}l%u߯Ҭ۱)9Fcg{>r8v'ÿ?ε";‡93|Gw' 8җd[-=R3lqک¶Uo}SzhSڋ)7akwh;>c8=!TcGk'OaGlb{Ov=#aםrxnzp]j<-rw(._bUpV ?9>RqEWqlGm㎚q/ Ďr>؀= vluw;( dݰ} Ee_};?c .ŮMbHy=hi("GiYFp ߇圵ūd]/,|k{MxF-Ml Ҝ g|[;}f[92|s{Nq;a~̙a;۞?==mp'7]AާUM(Ȑ{ğQt,%wDuWV,;;bGl7yw>{.tFogؽ\ObOcw {Es-9K~_Eϙ?rur+We4cpR⛱iѻؒ܃]au v%:α+瘼e`ߏ-vG?Gީþ'ʃ%!9=|/.¾Yn]'Lw dE"܇U׉<r~g\P3"Jz67ew +[b}980d3|}8Pa.-]:R[r֫T$R$r<8ǑPWª)Ik ~ lm~ܯ-\5 F}93BOK.T ##=L?8ǁV{-"?us$9CyU7:%;r#ygɽ[1[@lm'獗DعGԷjcog!w nN%8QKp_>vJQ䫄[O8pKgYnOg`.۹s36y(Wx@q艽$λoval$<r`Ŷ Kt l/~@ރoþ~s ga[8pY8JĒ )̫5Nc';^ηRy;oIQ,?!YY6nRlL{!(HCQz= nA$O9{<81Nd\cmGQ>"d.{jm;>T+iǰ{֪=3 ~tN3qDQӫ爸v:Ǫwm:^(fQ\bQ_ş9jQ@s 拢QmlIꟃ͝cK?ޫlر}]$3mg(^p "G"=}K 3E(^6|B='2uDZzEG05w{ }ߝ/qmqs,l+oꮧRE]Eȑw3s%WT/{\.zhP |zqnwuEM7Sƣ WWBQYW]UDIkum7a7 g{lYOt-ϻ[9ՑG~Nj5@icߪ1ugߒ^,}p<<oz;ޗ$ffDLX\j_êٚ~~ p:5us7Կɬ9= bRGk[;E.Ķ$Wp~E] 9}ʻR4~p~Zsz}.?۶U}1 9-]:V_(pߠϿ5'D܎WJx;;_eW?g; n@>vsA m9P.8yy|C{y˹//y yS1tWkjCX˶rΙ6Vi4~Wyyh8y݃-SE9ˡl }M/WN;sDO v?,VGNKuR-j:X["ޏ߄>A~Cw_zO>~7ej{QW߄Už'J&^C6VW"]ʲ,{&lGաf` D.ڏ8{Ȼb5*&컷X뾋~o9 K(xQyߠ(N:nƪvّrn9m;CZyg`㟮hb9orVlg=h\}݉6+&aIoQ< +z'Vy=Dzs|۽ EEeEz=87{nź^6;rNKIa{c0vtZw, M̏˱@5{y.5ȿcϧoD R2~(~}XNA-jFz/J:ht~k~r_pyu~{z)(}^cakOp9rlWog%U[G%߲/GNw+G!yDw( ȻE(Gr^ǺkJeh XMXvGGܑZlkxLwßaGyC>r*> X\__3|({O&IW@붯AawQ+(E%rrK?w`3r?0׹z=3uf1e!jA{ &ƈD̽Wz#{N^AΟ"{̇7K?Zc2Qk\eerkʳw[T}ƭH"wGjc QC7~CU+Qd\}sYˋa . C.4Y>yoY-插c9oKw#)wW:IGDoq'ʶa腩ni;w{~v3i>)z$?;0kl_c/i9^ _ QDP\s1W&OŔe)#E/Uڣ>+NQ 3^͒/d>% 0{{n] oS,7+ cs0}Z<튘i͕zq"W_l\5џ]#]}<E;L,Iaâ~>*(G1uk:@ɗ~-t9F`^rfkyW3FmyoXE،fk q}~!:z/aԟ:mmߣ :9F`=ʽ0$&b|CwTu'R^qASN# b#d}]}x nڽlWXm"w@Z">*Nyz'*{Q/aCAɳr\ Z%L ~;學{R׆@ = r[qMh[kOAu*:-{^M!֢-|:?/7]ryD<ɼLC5NEa[Ok1/?@}u q^FWq_7C\߅Ʋ D}X4?A_h'Go mO18е,|:uzK桇XM=>vzW~3QKmk:/Z~UCQۯ| j_Qo5Gl(ҵo+^6c~Z_4EsZڡ*\GyowY3E\wpWɵdڟ-j(r\%ާO y}:is|\㷷WΟ5(eǡؾ rv5g)nybp 7o8K+ϖs-d4E~ڮSƲqo^Un9u.osuO r]jCg ߦƵ=YOl]glw\}y^ǒ|\? ~q]7h+FQ4۝F~!hT_: "D:zbn$ /E|&~sow!e>2}_r_7.Ƶb.KXCDC~BcQèԎ\fE?Dk[ H47FsU-׿c\_XHS-/oph_N_>fMw~%@W즺4rɧWEu@kQ˻'W)CkhvpnwGqN?kZYBȑ ~s/G1qu2Zzu{l\~f6x  ]Audxf1Eq::EC iܳNb tp3:W{I_];xѽtp+wA?fꏣ`_<~W>@bn{z4CWݒ]yQ8w}REtmtUDCsFo==:+:yltZ=n;3='5zA) =y=@ɹb@^Amb/8|z&|"z`w)O\˽?}ߗq r~:.w?玠q_I”W:z*6>簼x1:7]7"'uiC >Z,5?ǕWDg "ڿ@ZO{EfΰVEWϋ^,(~ŌmDG0ܟ^~u4ZS0@r|~sqD.3070nĠ rѩG? 1ȯsЉ~Wf=kϟIwQ}Soy/_jƽgs7?ǰ50ǹCt:X~RU%K0TaϊB ]1jl8|%C!j#F?ry՞°tX~#jOcDk<|W}#ϥbd\;2HD {ܵw/}F}H]Ө^_Y.z/CDkd}ԏ&6CZn!rTO;ݟ\c& 1s.ꑎysKyu1 D 1Y𛫟ˉA_x_2-޵0@q{`Q+m?{12>/VXR%ĈZU^*+Eo7\ؘzo$nc1'Why,4]eb:q r@- gaXn $|[(Q8ϫ[7_{!n-CwoXWecEqJ9 @"^DBE.sPc1qo@'vAvD1/qjC< FqF*}21Jt ? fEX4Cїx  ay}D`emq8+$\-}1|09~!K1_0Dћ^t _wcxwb6l"fsw;$yv$A,@bitg $"7#q<@҃r>#Vյvu C|?>8/.ˆu1r3Z{O*SE$&I087f»r KDŽ\} hv8[\-Ǿ"(Ř=pq,K0ta1o'C9Z1>y`8erx _Uu[?בc\'K=$Q#I* SgaO2?Ô;];ICSǍ0sg :`?bz61%QU\Qw=J*F;y] }%Ӽq~{➈OZqn㏊T$9IL:,&tto~KR錔j2O Ĕ+]?q1:2u;o+g0W<&\Ũy~0F/W7#w9>2EB_0@RN;vlv)]sFJo@']cl Hv>qc?)^}7M}ĥkc"`Kcdq1you刉rdwHn- sF?֯`ww /}sA|;:s4W>a zm Gşq?Ʈwߝ㿔! Fq{ 9i wc{ 0ek'H)h8~:# *Ϩ :Q ߬[b; WMEbyg;9uлDY_@Y|LHʋ_16O7 P>=M(L=*Ä/ /"$GS] wc 暋0n3qd9iHlկ30kGoZ lƽ[oO\ I5D@z Hq 42O-e\Iaʅrw!e+PmHK8~ooI{`n$ή-zĄ_ז<+Ƅ#wu5;x>ɗcqb &|!$csq|&&;gtٷfbՁo'\ԁ܄/Ů/CNc&[> }hLsݶwT^p1񗶣݊']EL:p?arܧo[v;Tp=4Li.f>br SrBn3&mvS1G o&O)c)ω}2%zi˵\L)\{`G̘{*\ҸrvNf\Sz–|lzX>E7_BӃH.pH!s'vݐd5%[zKL HǑ^vNv;zZu9i2Yu[BJS#3'/|^$f9_miaH?]j7v_HȐF?Re&ڼyigܒ9[iH;>1FjM9PUEN_d-Lv"ߎ@ʕ|A>q0|b̸1o;m>aI.HAjK F?:)'ZsHmY."0#'V i<t٘>mab^:vw0m[<)rvM{LнA~pXs헧;3`/ny,㇟KG*]4fLKzη4M{4,6 6拓6DzO~)҇^ǿ]}6}2:)Ho&`Lŵ^M4L'}1}\9!ZKIt}0eK'CP?rmw S>X8߰+bWǝ15-6 *^=/ _=y%^dmW{~d]O;ȸIpWQC': `~l_^i޾Ȩ̻/BƯ9zxf;OUxgQ^Jl߭m:HٸaƎ71W>[hgTނ_&}o̯ĎfNl̬epæ=/vE+L艋>}gdsUzN̙0kcv f.?tC{t[:9m^q-^vƗ>k9|dLq'%uhH_1Oj\C?aγb佽ǻ~xgt2Kœvն"ïGjX0Ý_5 Om'{XY-.uIo^krfYkSCdAQٿ֘@ǜ3;w>3|k$Uk^y;ক7}-<6w[ۘp5~1Ew_ UYTi3ѵ땞Egm햍7s1ۺUU[-/#n~o f2xc֘s?f}N{nl}6׽_Oļjdk)e0ڼibpYj.kC!{kg/Dv_X+މOPd;G#gE;r~X0cs|^EιUj}A"}bo➯~3蹆 /ٯ|eV8̻M7W~Y坧Yʾq̾}NWph˂%_ gyQn/)b r~Jǘ߼9]!,~߳UOĢ!寰x( GT;!hYw5sbk=Λ)_W=W4z*fL:+߿ gX$o@ޝXPEcq-9h^\r׹KRDo*?!rv|.$9XK)ȃ _BV{o/BV} Ycwy6籰-\}%92KwXojr4>KK?vsa˷u_[1vRs~K|7_/vXU'g˹Gdu:-l(z|ocf#uK?wX$c V^T 'Ŋ{XF6ywZYQ5{L |0k[)quAVkgtKY/D'¢Vr KǢy܀_sXΰbWCt-봾I.|Vk}٣E,už/cic{+?]bEWw(z'beK6y :u-eX,EO[7`jywnug'o??2N66lΗac btoPӟsTGpK~Vt`lUS(^ZD슮GIsZbϖN=(z\*`7r*6TŁ1K'EWQZdL# z:MM'GJu^XU4B.K{ɻI+\&w?pT]-n4aU/d؅^}ֵs_J^X.o`ND)Ɲ[=ωzC6OwPz&btue6\%xo>+j8aWm[1kl*+2w36ui&n\}ǃO?K?X Esǭ:,3fײ5ƹob3^R>6$ձ;pM?eKt-e9M\WbLs<>Wtk[wK)~?qa[\?;WmX3]ėIX˦r O<|ѧFWp׹қg[Z:G).:F`DQ$m%}6,]`9Ҍ#W<"{!'\=) %D!/p}i~]- ͮD}7+`73?_7eyW{E'O Tõ+9[X{C} zȥOvlRLLbo ;Ƌg/b>??^Ag>¶~vv}׻qvEoyٯe8ra-}X;V[k_;{a@Ԑ{(ĮOlI`Z;r*"aGk)+lw`.uvI ngPUVCYXU5\'kD'Ȼ@UlSNu_[WO^yyy( =5yTXW0( ?3윫\;AqQ܎ D.%8u;>;럓nlĕ36% Hb?v|];Jޅs'>ov(I<SKbWT_Gz,B]βZ6V͗|Tp5TF+y;6'v!'i׾tl;5]䝻+vtz~$=KMh wyO^? Zg1 0E3]Bhzkk{XwGoYm(wٛ3/ak.xd2v{tq}7#)Q[٢#=Ae>BȺU Oߋ*>W(~FX_0gwsY˪pM]W\ss 8[2]?ab }bG{^Y}oڸ-EA\gyCv}Qt=8`-V/ťp<,ͱiw?Yܵs[O`CgwOE(Wmsnr opfTm]= Vi#;N 'y#vDPݢ(gEE_ 1+.׏aIamk љX`ËtFLQ.0ly+lk7$m"y vg+S>(8{{>*r; YQeL.(ª͢ r5.֭?`}Gwa}ظ.čh+l(]߿o=->;svuaoOŠ;@28RԙǠM1^a b%KdykvTE߽=6Mv򩸡 ۦ7kqwq}\h((~F (/Q-(GֳzXHj_>J"f|o٭?*b.R23|'h,6 (}XΣ/aKbk/QzۖycO8O ^EvWh{.~A쬜~U:/vtc Y7j7si/\/xq.6 (=]7es4&z}϶wts;GI i6vB.p1ŷ ª)2a23w5鮽r=v>%yl?o D#6qǧt%rgCr[߿vޅm'֬P}"܃=BD䇉<_Crv䦗CWa JU(yջYg/:##=:bgb(9W݃-i-]ȯr~'V^ڧ~W!#/C,:r1;rh>"g9סfX]Iވzs"zI(9!~{`r*kvbwx7roBYOXq}Qr: _uDsvy߈^O%^|/(~b;BzQKkՏ%Zwb֮+N? x)6M ??XF/Rw˗2CKž7˴ Eab/t)]; 3sQ,BbUw14^/ds^(v~|Wf6;0`߯v&6^k6mX,bD9X۟e__3,;~oمn߹r;~9MƢ]fE]Er.rZznŰkK3a8뎈NwޓX?T'{5//={XțaeU+n(,(xkGBsE?~(2ּ* /Z7%XpP!{F#g\DnS9oD?*"5_rX2F ]IJb7\y+\y2WGoFJP8R(,s7>Q,(U$LDz>2ޗ1V s׸jyR/!k>[Sd,<mo;՘~kwB"ߠYWٗ>*^D r~"wϽܓԒǝ|,y~ZL sj-CWmksDP9`Ưrurf?} f]㾟ϙ)v1-wJ}d3[ ` |5 $=t Ε{|kBD0y㘺Ow!y/_CEtfN@"c]VPzw/!wnDl|̝ =#vKfs(d`cE޸J=qG}WKLzNޅʽO֑I H}\r]bڲCZc{o>`MϟwPg9C k#ă0T1,I1o`:^|}RJ;=H le$^#xGRsWbp׿ήî g>|R.9n?)+[m^= }CQ߸Ϡ|?-0Cyۻ~tGL{c9 {/iL׿Ƹ + $ƺz =Ĥ(?،1z=&u%'B[ ]l=?h;\}̞E~.ƀ&vtCn_Ɛ4ca!ċ DĄyc6礸n{;õ$jihFKrz zvrWj;Ls{|}}{wQQ']Ob /-=0٫O1d+7 crM;S;5>ߋۋ\D^CIcUCǵ~u\{ؕV;͘B'Ш}6S5,fvOE ymQyB${yrUt$Nb=]vDw4,,JXXxR5d>/S íGf`uLa&k Q/H;L`# > kN > z&\@M?e\m0܍|M҅2aZ|T7lr`G7_a&~=Gz74xXhn3|d5¤cY:524[;N,ѡL:'7ī [zydL<&lǑm7;~=eY|zI?ij^U/ݚ]o| gMM|=xqfHHM=Li6xY|Y_rvݏ0 720>ğhI'G[:ayYȄY_3mL3\]׈'~X~mb74aov <?/,vrş媙t+kiy;~v|_v^.L#?X7zb`]z}3]G>gG|ċ4 R_}lǎ;;:AY7:le֧&W1@ [9oe~a}M9v-_^'^ǁϦ后=/>1g{ d[|W)qfv24r3=46nG_`{L{^& tlc ezsov,]:1lkXdćt|+;N/8u5>1~/.&kŔ#l^Mr9~O=VXY |!='j>q3^Iqx[|D`~{|HX?5ALIxN|H)l,]˿l ğwNQ|'kd?մ~Ot|)"⟨I ?#2\j?ES~M'!0? GwBD ~ɑ  l9c۟d{l?F|Mf=Zt8hiy l_Ü/$'_tK. 쇇O\R4>MEi;lWjݔ ''h?>rI 7x\NR4l | Io}Wz~Ww7=20|1MqxLr<>tu|%hi3܅a135_s}u.I9} nӵ\gh|FT`xP|*o=tgz]X~Nr.ψQ{s(o9or\yk>'5Xkזw9F( 73醿N;[>|gtczBh` v}]o:d ߶d] ?ggҭ]*}|ZpnS`]0gkol,>._;np̾1,H;&1nZitf;VntvV fjǯLLްΐXy5„} fwigflm֞I0]e`?{γr94lZak0?$VN몥}ކ#ko0/?a ~v_t|Zvķom^ۮˤ籵c_X+gg+gVkd;`GI~E#f]>x 3?ukm{` 7zZ|v?cw[0?V֮Fn{KWe 3/kOn/kf҇l֏۱vo45\'NH׎&޾0l3!߭f}v;YO{ ~HGB^ғ"=ac_0=LXa}?t~Б)$ Hg,/O>~ǥ?"伡މ~X`<ߔgoo&_ ۏVq^緃|{x?cf[d?^߆BҏЛNzа7ޥo :x#~Z?1ć|2p\FmKaOR_1ǯBo}d09ǟޯ{be9. / xq]!K{~2zӴ{>W|B]>'';iA~ o'3L~%ăў@ԧ)xPtgg\_X'h5緤,]>"F|c~xL(=g7xoډ'hA/{vX`~OzhG$&=FO58_`g_B<~7'"0iHmio~~ڡ>#3 o9xjgi[کZ]Mi`Is}!=<($}<03Iô[%Cۥ*^yɹnR0I?L9ҋ~v^h98HG<5c~vq7ߵ<ci=?G%a9V ?%L9ŃzIf<ϟS|հ=nZ޻_zgPqE֣'؎qv<W{s߮ߛ y_睻5V!o~)>=Oo|zOC|5;w(z9W/=9A!g sz`Wyy~p]'{ZSo s\= e7ҏ~\ok<_P%y)1}=W}y=1湐ğ۳|_ Y %FKW9_҅|xw?Z{cӯSޝL;9ެԜ 0LC_ċ4>*,S}/Ϻp c|_ _`|a?ؾwmK_O/ȯ=<zÞ_K!ߋOx~1L}trV#z;x Nx1.M=7ľwz~VO6aϿ aK߆/0L]7S~_uPa?gc ~#a?&lX/? Z== mV~oIX;j_mo[=Lv`N]k" ϵ1L}PkGe핬ݫcgެ=ZYl&=} l>tvSt+xvW_@K/k|־-@'I7; 35_/(>o2OA:Yۏp ?< 'ێ3۷O3_! 70t:>iOh/`rQ7„|ߍ0xn"AIhNS?[hߖ'='L`ϗ& ;_m}&ÍL>{n˝ʫv\Nx^ g"Mm d?o# {k_out0 ~-bдgrLY{ڦv&~ڷ3_0 vhośscE_OSwvtfޓ~45X`ni!>LJax/kl_ kN<7#?~}}]cUeQ#LyyvEfέg? " 6wAk~8^3%gX|(K= 6&Lߖgmq<{j +Ek9{RSU-/`"_G [2[ݏ8o}owvKލ/˰;{.#+J:G){w}s~x/?OOBk~P<5l,}x&_== /j5@']Zhtb2Ϯԯȟ\A(73!8oxrƓ #Q6]=rx#Kq?_3p45/0<-mzJ|LO,_"Ra~(=(BQ棆==DSxv?|&?P/ERk{pI__r+0d}S& S_z~֏'س_-A> h==eC맞wCM#hLP=}Duų)Uxo'짆7~h<ǁW+ o+h`.xrN3 OzY ^ieO#^#]ˌ s3<Ȯ{GN3='FH|]ɣ@<25ߌPRt|5_C{?#<35}sg<ŧy0ڟLtKH׌(Mw+,mwʴ= s<<Fh?9ڟoAr 7Sx?ST|gil_7(t-6.i{=Z?639;CgifGi8*0<ԯ>S<\ ks< ɟ3^fx)gk:eA=J׬Ox s?[!ysސU8/9I |.Y_~z|]xh8<گ>,(\ק4ϽXE֓h8KYk򯯥i/O7O,?;,0|;8/zBS*+k9mQ ?;<s(W  Jl1W!}j<>KxO"7[Ǜ|/.?T:>u§|gvcxr\^Y.rBB]n ׏ZG&WQ[럧weگeX'.i/|-@SO;7]SK%ʟKtP|B|1_@8j9>9KbT+-)%Ǣ2ͯ/9/ ^h~#ZOA7*Ooeֿ\7׵ gS<G5^ֻd'~ZO;&K%b_R ޹Z_g9ZOqų{ Vx|WF/7K\ͷX|"=sn/eⵐQpA~N9BoK_rȟ܏ jXɉT<4t7M2t^㸘^+Eש%4_q[h5^ rYɊM {4^/trs9 9ߕٚoro8X~qV:zX > ]a'!}y|`h`ZOK~e*W<4롷i{'ʁ\Ͻu,=c~Ody_=34>죚O@e獖}Wă*~Y:YQxp1gx򑖟e~/QOۃ.YڎOq%e~xrsOۡ\jO;4{E{>a$I;x9IT==0`C=zUxe~Qz>Ѧ>DxMKKc?w^;Q/SQ/ڕ1sgk@nU7aIW{MضkcY;&>aeSM~:3,o4X;Pza¬1=)p^9Rbkx)1oۏm67=]^y&><5^W"_i-8_)`ާuvMt ` >ASՖ?` ʧ3@ӭ3ظXd5o) 6M0dN_ -^AJa§sxr ھZy#”YA;k` 3Xnֿ _Su%@/;  t:Pǔ gv~ex; V^W/H`f ?v= 揉l vg9ijy_]a`)~X?֏Ouv]|rK7BKgkM`?nl⭿'7 /'4gfmL9MBқ'Y.)$ݬ'ħ 3x?l']ۥ&'x|׉4о46A w2Oxä3u~|蟀m55&?e4l!YWv_8.֎z~c GnO~'>vBE?sWPp~7 $~?ŗu lGIG'>'Y1^ a]7N~e}Ltg7| > soe9 (Do_tt﯐z ;P6xL~~\< AR_<$l1&a8_z_œ~,Q~ Ap=aH)~EFC ֯ F`k; [|HgOuC1Z&7|Btf<( ē>?аX`~C]FꉑwbPXHgҗޙn*<0x'/#X1 9.4LRn6fP1~<?mzs}ohAzkw}zOtOo}\=U_` /~YX-?AO^GF˓C_vk<h;\_ OUIt/S,G@mWh=?3M8cҗpL8xo-G?(/JG!3#-"'Mg"C ڗOӾ|፯v4Og}Ǖ^s!hC{ڳ^G#߅秄PsZgR*^;NJ= 韀v9 ӎv?BL sqWqU~ЮvAB ?ŠGWg?3´ɏ >ݳwS|hO{WGzx0Sۧ?qe?f(>"5_VD ޞ? 4L>B_Dx`gj~SiC*ThhG{A_ }*p<-Z~g/0 _zv(O{AGuҙ{ߴ룿wp}="͟Ct~Boo=I ;Pô1z~[?d\x-*t=/dk9ګ_oA_'_H^)~&hM{w~[aꊯ@*{ڻҟ-U|؏EeG?sXyCm'[&E<}OKm0[,i%"ŋv_B~zHgo=q$,|c*K5o2ŋ:r(>[zoA h}+#K@|*w=靣үVSjyEc -G.?awk/#t_ {bD(~g++__ ^:i=ZrDDžwgBi=y7`҅t]^ گZ^ӗj8-xҍO<߃8XJI^Q75pV>gxj's]Q:syc+<?o[ԧP?$9X1Aa4GqGH:ھL~K_ѯ'GEP/b.9\i?h}'(ܐa-G.,0~j(yA?Zr?JGAM<y+ھ7ŧxz=??cλx Q?(ϛ {pYN9o^~yݯjx/G!i̧{㚮ջvR}ywX=J|/{xN\XT[?~;ݍݾ N[ [ T Q;gf^羮uGe_w?Kw<]:'}[9/}}wyW}E yE!׺z.W⇠CrhWŷ5pxFGUC>i!ٿ\}7zfxBjq(`dHڒan4x p~0wO Gnǒ~WDqȍ[sW=@N:9sUHՙ@tT3ZH=voteiHڊ?6iٶz: s]d.xH_-?u#gA)I}uv[ON_7SQՖ:G#H'2= my` d󃡐/9^[ )b5  vx|nHQΊpe吚o|R[FH,Ҙo]5 MlZϏsꇐӯ]4Wğ1c-R7 v;!۩j%|8:Ӌ7yZvYϹ.k~ys7h%IU2N,|O=zWl;3clz|߯iڄOw,\7 >h_s] (g S>”^=3h{]dlTCڗN}\zv?Aޒ_ϣ/}?ZyLb%!_eDRHoJyd8`yzaŠq}=ófH>۱]OO#UW@ܞ֌3jQwϊa"/8f-Z_"5g ^'lI{rǖoh{ǖeŵJ}j́fE<=e~d2abˉI1> wL_4uO+O7hgj_[U2xStnR{ˤkDs%ŰEc2g'Tkn-}7xGȍvU|Pb'=_Uį)Nava庙o^wqrܜx6hHj3<`?CV󋝗=jryn^Lw[& Li%3(ݼƖ{~3s9Ov.8ΧwF9!~Yuc.fȋW 0eM IfHs]<| F<ɩm}Y_l(;rnϟ?y#r"0n*tV0!%˓icx~|0~d-{(zxק_ QBvuK<  ޶Ѕ\'MnY+WPu˳_[8i-2?CG2O-nicw?ҐS)#f!k.q/w*}0yVj̫D·%r[a>̶}-º`1wl]G|c6y G+79ή3vA.ނy()I}.?:j٬ݑk~pYn}H(\/9[4{|S1fS=Lwǟ+Gw;|s#yi4udyrww߃eeƭ; Lk۩iNրqf:㜶6Ό')FT^ϟ_ hBanVu 䞨U: 91"N]F~ MpR^ג#*S1; L/pI+þ2P}<)w1!(yғϷmcZWg,1qk,kzk#;ZP疙 @ˬ}(}_c:\~<-84 ׽O\nI0KY/7x]Mk=S2O4`CoZgoa& A`xY֖ߪlݛn~Qw}c]Ƹ<җ`;]7Xp&=܆צʯ}2YnÆGV1צrBY:XMKY iY쳓OA6&u#6j%],=KH:iNy.ygN5T5P`alX̙i Fop6`=չU,N<.ۀ?&?Cx띐κ!'"'bý2j>0,]4X*uqP=kؾ1(] rM! Yq>s`=ZϒZwmap\EXW:rCunfSm^tf?YNk~ykvr]U1CKa2-|lvo~&ٍg\=ovuZc "m>k>8klfY?M)a 떽I.^;}=s=dfzq+FS-E]cG̯#mLeO&,gvde}:\c2Χ/,K˼[7iE]JsCo:fdeN`Q)Z.=܆!ں{~IDw$o +nCn&H~Ԙ4Ja]+}M!LT٣4+K Sbʋٟ`3O{ DZJs{b_m6i?9} by_̎)W)96íM9YX_>sXY nW]7&T}9dNv-4`ڵJno 8*ava߀T'~Z-*I9ϻ0?FO[Y`14l;JA a}gWTװҿ X=Oޞ}Z`ݳӐ갍XǸ66(H7x<\Lֆ):t43]9qk!_=9Ç:tWy|S++{JGY'V^"R~nX!gފiB~r0lX'ηLm˅u|4[YlԗXpfw&P?άǹ=.(չaʭŐV!/gL9*eEϿX~/Nm3O\ m;f߼ O_3`#낿LG;ұqa ޻N;oٝuI}4zi@:[!x_B-櫅%jc]쵪?aC`Sܩ9lo2`3mj<{ [/,.f6ºϖa\=Y |n"M`wV5{3v acAObMH|{ߛ/^.l[B7ΣuưほV#Ta?E~q? c8۹xV,Ok {L`>+hʺ4 ֹgM8|+_o"ck;UI|'Eq|A3"a*v q}7upQֺ2!_j0 ޫqCƸ:x>I/sؖ ors7w"|Ne߱HCtq^~\V}*Xo.{- ?}۫O@ˑzߩwvI<ׅʕ_!Xcg]5_x,Ӗtu={vXV^߻:é4*3֕gi}IkViՖI;xfb}vt<&9o{ kZ6:|ݘ/3JT]Ssf!M 3zޛyǃ =[1> yɍB~ev -m=܆浡Otۦ_;|ǥq>B_vi3N-XG [~͑w7Vkaq1QXoNQˍ<a=꼢WV~[ߏr^-!Znw_ u#/Vwƿgs67?a޴nuu謬fԢa:&UEqDɬ+*Wa_8m?!hGGP_S獜6G1n26 p):tgf^vk^!`<~ކr^n +*fp}{HFc937"2=mg Ռ3<\?s V>bχr忟naZ&N=KgZR\osg:g5M`mH^#36>ޕu srlXxz2UXkU<{Xͪa\WTz_IԑM!d]G~Lwy'f+9jSa5:Apokݽ.7{c4m Ybb.|Gq-ni韶rJ1Na_M!7>'y;v[Z!_9Wm ٯ#725 qn[Zҿ!'|+v Vd_`XgnLO>ߞX~ѽ`֌-!sÜoȻԙew^}{Ƶ"~";8+|:^f*Ճ;BS]x{+weVٵqʻ9 rsQW0|wshH{Nߌo~5Wca5J\:j.<*C~9v3.[e{`pϙwPvsxG9}9ZKC~Wڃ7ECyy=Gָ ] NP0`?}_VG=mŎMց{IOț` uGi"N/cد.wVyr}y+;r~lxQ.0?q=a_gz<#o^- FY$l~ ya!CٯK{+zu9TvVga\#%y˺M<<_v]EW\Wg==IX׮#)6W rũ3ߺ(^^֟S\YwsMDrhlQ#v!?l ￳!㲩&H[5 lʗ<َuj^<'%b_5dbn+T^v+cbsݐ+N>_)wɧ(WIڬrh~{!YϜ*«CNttyn6 xH_[,S?fڽ4W#c!aeyvݛ8j]_n'*HYiOI̋ɵ}j_8V~^ }?SXQqR;!yf};Gm ?z9{z+lQH+y=wF܏(\4 Gh`V:C2MB_yj8ҵ߫-~gs؏/^of1@'C'AھB"_jr~d^?4|lv6'˝!.|:: Z갞 qCw>%u53y+,cUS:6N|lE.v|^zMdݞx6ַK? :-`Ȓcw'/ӣ 6- vOdc<4@iH`%9a)!yCrX&5)8f?8奺0c\6`q ]e}7EfWzϐuiQdo]"H=Χ4rLk dcKHWu_ܾ']N;uq=f⹠|H?\UX>^3:ӳ0;_jw߃g0/{-0`sG %1Y:2նf"3&&RȪ'd<" wd#r*_4D\`1fK2No{/-TCra{Q=ѹLR\ ]42Na_z,L7]闸 斞>#msd?Kg{̊E*\/AȼЖZ.gZmPks;s絷'xu?<}0yur]-|5%sa2j^ک70}^M0u |IFy\L>a`)3? iҔ+#E6:HUNSQ>6#T监Y(&d>OOuD'H W0 \_g@:ow`2ȓ S}`0eڛ!1_6F;!wHƹ0_û(hT(RwlgW@ڕ![#ͲCgm{suC [9{nّȞŰπܙm] fuwO% XY0j=|3Xj;,#LSOΜ O ۔m09O1ٗG괇g Uib7RT{v-4[7 T<~"o1g> X]Hcob{Wd kEd uYO;&:K˵>.G]ֵ݇FguV:;FS9ȵϯ&9p<95svZœ_RRx" eu#OѱNn-7_ebӬH[ѮHHMO;{L@dڷpdTъ* D†*Z m9Sw*69 ZqNVus'dziQ#;]_rX$_80f%.f{$7χ@rJot{Mص˹H{c{gyuB89HmҧϳAZݏau JgB@*'6jˑ;ƴ0Bx妾BNȌI#x~Iyyi].qִ7|$ C7< Iݬ"C" {F@2ޏ?i|䷢;rsbZH1ϊF'E:O gW|B,CY,ެq/֗cz14BRo4HZ*ERs 7"i !C>C d#qb߶AHy0 In :dOg$u R؋ZWw RLQwC6Qru22!T,?k:!;G>W iŐMV$znRH!źېrGb"\s'.d#V a@㋈f9>g7SLƟ8,\&!t#w.?"j_{L/!veejcb-|vb 굪!\!WKt;] ӑ[lyڷ3?x"7j ^C6p DÉsAߗN!Bz"bлvGĐ^! ٨‘s>~ޏrbZ+cgSVmqE91 ,NU \`y "(?GUO [:7BAX2`ޖ} s4f4:*Kɬpq²6E>~dy3":" hNʄD3~\=B޼uߊ-{!쭙k<u>6a m=$B]&LϛGg|CpMzY}#ԽEK!th]As逋wvЬK:v_z aCl|MW}qD*|Apz)MICН3 ?!$|h3Bڲ}߽s#Ҟk|2B*:!Uˡ_TƩW_qPo`gڒwS޼Kz'B7kSa6ny^XECyst²ϟ-@\]h~r*3 CP[h'33f A|{:ܻW!u'GG"葲DPѣGAdUc6Ag;'E_ݣUA@q.<#lt~?xR<8l%3}`;:Qh f<錀L/t<}esx*&f/Dԫm wK/69:_ L4Gעza샏蕀ǻُveoU%)XG_q%}W)/f^ dч)eoˏQ-czuK WUMTnl_<D=W#ؠGv.f ߺcxXjϻfw7z9{xOڗX8fU ~Jq&꿷hxK^e<=E3f~,ŹcoދĽlF$X48_)\&$ܓ~\n& ZڏmfJwR Z@\8]y w9\w.:i>(EgQ5 ^V[vێH+] nzd^1"Pj?q*e3o8wf;x:\miS.ngE|#8uhXD =B'8}԰ҽ86s~!8}U/3g: \ V3{ˢ.y Y~r\]u_J*.&*6q3WCgVJ8hs<@\ۆX X#gkƱ[i㥼6Yc.yy8|rq>A8U8Kl3E^.g<}|]ι{ظV[QٟT;]C;z,䉝w.S@A-mj{:Ī,om=O\|^L Vws<{˰eX,־}}8'1M %x\W$M3DLc&FaHQ8bG['9ro#-adz TwE8-]6`qoǮǒ>y KDAeuﮗU]V0+OPLy8>V<%*c<6XU Xua,VwکRۼv,KmY 0L+*>a׺&Ìob k1S~`/f~y"f50@⹉I;IBo%b,#ۛX(ʼnb]",Ҷ35Ǣ/&I%oźYWclIolG(ь~["x2?a6"vbB R0f~0׶hjL[lk:tLE"qTģy5ʎ#1KQQ3=n4+fz'.ZtLĐ/#+Y ٱw@Cw=Äِ5cZ@8q7hփ%qBqg\.,|;,:z֟rk5GL( Kc`1|>I̿EKcX~=d:Cgp]{ri?8o7z kȩ*gGN 9~{ArsҔ.תΨ3f֖>3!-N K M^{J0?H<Kۓ hQaT;˺v,u?U5Ho]wÜ@n) ryzeb-<|99ctҒ@v+!z'rl8s4s!%R[u㻳KAwWۍ,yT߷0?vK֬#4eX:`r6b?WQ@,޳uQ#nOk:;x7x.Kw<6XFD0P2sɮ a#7nY.+N5󰱩 ٣ɰ,ޱH46.=*zk+GzFwgks!,rA $e/JќlϿN?5,wk>ьuL7y>EM4~gT\uƹ"9"~=I(Kl;!y״۸,Ӻ&}*W 9%߰lYX 1݁œf&6aXnʁN= H{ _v=@O-w)q?˸|a7팻.\ը\nWU3,w0ង}zݛ^ȹR50;cZǿwYD .  Ӑws*uίx׋ٖ He(._EZe˄+-:ל2Y̶5b4,sVsa7kK+XĶq<*4|=r pGcO"Q L9}.rf~._/6@}H7[ {xҙA?=W{1oWžix 921C_{G?lqòzMO*;.:$!^bb8HdaMD ov#r>}=DϺ+ _:ʵ 9pޅtg> <%%xo*Ԫ^qʍitu qacj 1VvF|H+H\}@sXthr^/6'٥:"{ƅO5BS+r6މ?٥DE@? GumʢߦI?G5_OvS6Xvu緪x̢̊l𼳮 _ yļR>6zN[WڒQfkX`0g}X.8U&;t8^r$E_--9e0|Y>̮u?W L,V1=K0־\^kSLyƩYHC>[۱: Cz,}53n4a[f 1LDa=}˻k4^QPγי5ٿ0Ц"݄?#;0SV 'Y.͐@p ]uOAQźUCg-[ rx}rGz^kfυ[<z;Y/?yĹ|0mM=ie?G^&L( 9-YMGn'%rS1Ptq5:1]/~~x_CUy.-}ԙv׉ 2Jp e w{}_-9ktJW3nf5ys9_="-r7Gl@vxnkr>f'r\+۠.u`ջ{Ļ*0O1mX^y|{<[YHߪ'yHo&Oy]a{wi[Ty2>]BxeBRX~e~v¼&]fr}[;g͘9G_]s`Z!.ƇXWX_+eQ! f>6m#rWEX'4Mz6L[װڷ<{Q[[Ysn}muwx1N9u/5f~tL8]~{x}Ӏ}+|EB>УΑe!|mTt~ `]0YÒ5;m _c!u;Q :U q}.IRh0UrO>>W<-> 1ZyA+ʾ#0{<淴 U֋`y.ʽֽ1nn(CwXw}Xجt }DxW7G_*RǺKz8>l+}0MMDӏ'T웓|Lߨ9yj3sb?*>ddcW]O?:_ T,I~kMkfæҟPX]\r 󳭽a1j#|u<ǘ^B% O5ox>[t k->Ff;liЈ R?՛YW}2֋OwY~ JO>4}Y9oa6sSˊ:hsEX\,5a)3ޱ\SwUTn,[l=g筃)e a,) iބx ,w翲xnc!ksnw|ssvi~ѣGoe{Y_] K*/M^}{j1ȋ)=8'=q,rܪxzQ)HC}t?/<;iNs7L\KܧdcƺrJaCž`{H;5`! OJeX949VM!:푯1yg{4 [^ x[Q/֯/~u/akvd>ץj[XӮ+OzVvwyevW[;2f֯RuIC9zgyt;e'4/x|kǾ~O wRQ7SzZ<i^q,iݾږEvFD~ye5ZVt=r lZT?ʻF:g~9{㷰^^]Z5z|Xxtʧ7KAG6o:Kweռf y`e3?:kD7^M\y z<e ~y+)\9̿Ty(7 'V/oKKX):ܝc#39?scErJ| ۛWܜl!u xjf}2&Š5̓nwouE7o5OR"o컥E~CN=Z_SR Z%8:=Tn3ݽe:X͍R^نwJ?`mѻX7߾yLH_8^q֖_Y.*P̡ çոz}ݫ>sJY[ǣ͟<=ϭjˎrnX'j}]^ vYŧՏubf;ֻP~&~O຋<Ц{+~ П}B*|c7Jso|ցKl]qout?USCcXCT^OZﻶcpnn ky-lw 2辰:8֘-^=r6q-DIO] gy,U1_?t,k=u);[ABڲ=+7ܡ3; _ѯՐ_›`_jC~;ylAeGq~lgkuՃg >Y 33A4~t<K* 'wn^Ǘqjıa8R<k oNbsYNuem[lx.m=}ԙVA>q}>݈gGΗYz\LXuq=[CyYvf/~\һu*zaK4U^>bК~k"C`++ic^+9jo>S3]:q;㴭ӊ>5qeu]¥#}b@%gúϓ{۶9Z7S5\&1n9%5'cpS&qPŭ뱲ZǑ]ۇϰ<[PVA+@~xa<~ُB޼}y&?'t)]wk-\Ɲv򿻄DK||#W\b\?tWE.~rrV-Z 6SEQ%lS;ym],y:u 6E}H1Xj%\ ^?/4|mC g\[}z_j!/omK>1Aީրd~-qVɚ~m]kGAO?\a~ us`E p9J}`Ȃ; _~>dIL/j2dU:vސ,ȥ6ԫɁ܄<ן ){=u:eѶ ;}%KA^72XTx~&lNhE^8v{|T'wq?p'w'¦Y<_xzeb1/RxrL[_S\Vd=9Xw?qM.M\́7PÚCCEO w5#crE+vi澝yCG:£[I+]s&:hK5=jdetzdG_wvVa%SvD@n♕ _q_3W<787mxȽ~{ǵes6Tz:vI\Ϭ{`[cx+޷)kN')Q~T,\sx*6uxu#dKW.261&z1be}uBnσxp<_{vgY"efkz<`ޯ(^5o|*l3~jRuZ;ޞdC^t Ge_xFqOgJC.&6(`ߩL '@#ޏ:xXN-Cy]ŵY>~dq{}mͫd/xolmHS\q&AZ;镋sb>>Bc 'H{I!xq$~z<ƿ 9:!wЪ̎kqs]Cg9/}\xf0EۋiBŢ6C^326-2̙v,볢*2OX:r^cܞ&sǗNWtI<ž|`Ӛ|Xb>&[C`] | @%׆4n#,~"|Ek^BNK1.ynO90Y&,Oa|a}?A!KGwJ:Yo>⽭kJܰ{2,m^Z}os <SpH|"}>o!ν;U U~#{_!&ޫZy3`*;לҳ @.ݚcCXUM =Wpo0|C:}<w%lb1v_M* w;X @qE楨U}^F֜ ݆j]kU T>rXT~¤L{^}X{s#`ZЅYfpا]6m mܝU*RsK,.kM| %X[$u]a|`O./!" ï +fߒ5yٝ#N%=>ְK}4( 55qA;q}f7 a~~A|+`ؼgh!BƫQx-Urf\dM1JʲYT$ e/ߌښn&uYd@_{ zݙ'v{ 㺴Xg?,}k~f7?=m#V-DMAqHODAq?-2Ns2'[̟ۻG#wZw=sx?*AanuVHLga8E!N _Qtt],^orn9$.a¼NC&.#mS+HIPO@[vs/'ܞV?)Dw) hk ЩH"S:CڭZ^"'aB.5 %EBQG"YKa3NxX<}p]Ѭ85?noW.iJ#.>sw#/!  cQH fڈL\oHrbMUϡgHkq[2ΉgI`xv=LN1H=M%)T7z%s?N~Q"G8 cArw-ߌHQ\*)eTg)C B|#|-V\䀔 k}Gj6W|oϱ؅E4>>œsqxϹy)yםH:.ņHU&I@r.Fu}:#1ػ' ġQgT<⨆H<%ާ탤ݑ4lv);>1QƫHq)Ggߐe)r)K5_ r\gBJ{}'!ޞ޵#xr(+ vx Ik7};p_J n +K3'8_ޤ"!u}͗H8"kG?ϱ6zD[7q7xeѥf$'%"O#նɏKٍdof$zQHZ6d_nH}ͳaHq}2C lpIҙ asVoE1 K ?"Q'# 1C4I{O%}Pi$^c4C­k< N*~[G>bvAL4eD߈N}QmD~KDTE<"'btD!2[}5B02o۹1MO4^y #R@x~2ľ&8o ALQG٧@t>>6_Q*fD<@X/uK(??!^ߤ$ ϯKG/h3KYBMe;"bð~BwD4ρk2R~ް9\s5S?fz#Oľ~y G:Xl@ >BS3V2n :ٟ"t[!/D|h8?};!,SbZ^r\<`?XtzC𰏬G!e>J{^nAzY>#u}Y/l!cO|a?S rh)FPq!EA?* p?"oO[9Ɋbu{ C9x"7vuִ6! C|}dvɺ8 OAIZR7 -Y #[G`p y&gbG`ox^/G6?N'w/׫Gك'Kx5emo3|Ub_JGWT ?1ݥ_8!Q}//ss^NO5ǓG>]1ݎe>! sb{er~ƨi$)F^˅wk2WW-}/+&hVH>q+ŋ̽O(O<OV4 l; qc Eq,B֋vstLCFVtw֩ j?3l^y]W=ϸ7q B/_o`q׿g']6V׋.Sq"n^gVYc//_řd}|7.|YNkq"1x )\bxs(.mZ/8.KM^Es2b7p"|}KoV^9ܚm_kņ8b\pz18VQ3ǝ~5p4uru4$o_^FQpc'Ȣ }EYnX.N̎' ~[j ak%{]c*aUEK1+vC񇿰k&^߿c3v[FkFOuiZ3%/I0798 r#ض][Có8v' $4×pE fb9S&NđY0'J$q/6 Ħ+ƩF foD%l%)/IQl+U)l{TD; n>[S|[⺡vuzt`{](F+Db}}6h>X_v26,"/-~}/aqVLXuVvcu-Nmuk1Pa~8O60@g`Sjy(nΫ}MQx-uN7lY'.ZZɏ(.brOJr*YkSE~2?Qn{?~p`q/iXdul1~Q 8?aQ߿S8Gv)e8r(QGe*U9qTQGm:u9qhѐGc&M9shaъ5G8stщ3G8eу''G8s 1c08s1c49&pL1c Ti9fp1c88s,Xȱc1Re9Ĺ[cj5k9q̱cf-[9qlɱc78s8q08sp8q4+Ys9.p\qÍ Uk99npq]{989pp<AėÏ1?A!aQ1q I)iY9f !sX9ly8sx58s|38sQ79OA Vд4iM+YA zVг(A zVгgEVд4iM+hZQg=+YA zVгg=+qд-9hZA Vдg=+YA zVг?8hZA Vд4i=+YAϊD" zVгg=+X(qд4iM+hZ1g=+YA zVгg=+Yc)M+hZA Vдg=+YA zVг9YA zVгbM+hZA Vд4g=+YA zVгg=+YA zViM+hZA Vдg=+YA zVгg=+YA OVд4iM+hZA zVгg=+YA zVгiM+hZA Vдg=+YA zVгg=+YA M+hZA Vд4g=+YA zVгg=+YA zVpд4iM+hZA zVгMJzV'JzVҳg%=+4i%M+iZIJVҴg%=+YIJzVҳg%=+Yi%M+iZIJVҴg%=+YIJzVҳg%=+YIJh%M+iZIJVҴ4g%=+YIJzVҳg%=+YIJzV2G+iZIJVҴ4i%=+YIJzVҳg%=+YIJzVҳ9ZIJVҴ4i%M+YIJzVҳg%=+YIJzVҳJVҴ4i%M+iZIJzVҳg%=+YIJzVҳdVҴ4i%M+iZIJzVҳg%=+YIJzVҳg%s4i%M+iZIJVҳg%=+YIJzVҳg%=+4i%M+iZIJVҴg%=+YIJzVҳg%=+Yi%M+iZIJVҴg%=+YIJzVҳg%=+YIJh%M+iZIJVҴ4g%=+YIJzVҳg%=+YIJzV2G+iZIJVVѴUg=YE*zVѳUg=YE*hMhZE*VѴU4g=YE*zVѳUg=YE*zV1GhZE*VѴU4i=YE*zVѳUg=YE*zVѳ9ZE*VѴU4iMYE*zVѳUg=YE*zVѳU*VѴU4iMhZE*zVѳUg=YE*zVѳUbVѴU4iMhZEӪ+g=YE*zVѳUg=YiMhZE*VѴUg=YE*zVѳUg=YE*hMhZE*VѴU4g=YE*zVѳUg=YE*zV1GhZE*VѴU4i=YE*zVѳUg=YE*zVѳ9ZE*VѴU4iMYE*zVѳUg=YE*zVѳU*VѴU4iMhZE*zVѳUg=YE*zVѳUbVѴU4iMhZE*zVѳUg=YE*zVmV+mĭoiZMjVӴ4YMjzVӳg5=YMjzVӳ9ZMjVӴ4i5MYMjzVӳg5=YMjzVӳjVӴ4i5MiZMjzVӳg5=YMjzVӳi5MiZMjVӴg5=YMjzVӳgvAjh5MiZMjVӴ4g5=YMjzVӳg5=YMjzV3GiZMjVӴ4i5=YMjzVӳg5=YMjzVӳ9ZMjVӴ4i5MYMjzVӳg5=YMjzVӳjVӴ4i5MiZMjzVӳg5=YMjzVӳfVӴ4i5MiZMjzVӳg5=YMjzVӳg5s4i5MiZMjVӳg5=YMjzVӳg5=4i5MiZMjVӴg5=YMjzVӳg5=Yi5MiZMjVӴ%0 =kYCz75g =kYCh MkhZCд54g =kYCzг5g =kYCz0GkhZCд54i =kYCzг5g =kYCzг9ZCд54i MkYCzг5g =kYCzг5д54i MkhZCzг5g =kYCzг5aд54i MkhZCz,N9YCzг5g =kYCh MkhZCд54g =kYCzг5g =kYCz0GkhZCд54i =kYCzг5g =kYCzг9ZCд54i MkYCzг5g =kYCzг5д54i MkhZCzг5g =kYCzг5aд54i MkhZCzг5g =kYCzг5g s54i MkhZCг5g =kYCzг5g =k54%m-MkiZKZ7g-=kYKZzҳg-=kYi-MkiZKZҴg-=kYKZzҳg-=kYKZh-MkiZKZҴ4g-=kYKZzҳg-=kYKZz2GkiZKZҴ4i-=kYKZzҳg-=kYKZzҳ9ZKZҴ4i-MkYKZzҳg-=kYKZzҳZҴ4i-MkiZKZzҳg-=kYKZzҳeҴ4i-MkiZKZzҳg-=kYKZzҳg-s4i-MkiZKZҳg-=kYKZzҳg-=k4i-MkiZKZҴg-=kYKZzҳg-=kYi-MkiZKZҴg-=kYKZzҳg-=kYKZh-MkiZKZҴ4g-=kYKZzҳg-=kYKZz2GkiZKZҴ4i-=kYKZzҳ)=YG:z1GhZiMhZG:ѳug=YG:zѳug=똣u4iMhZG:Ѵug=YG:zѳug=YiMhZG:Ѵug=YG:zѳug=YG:hMhZG:Ѵu4g=YG:zѳug=YG:z1GhZG:Ѵu4i=YG:zѳug=YG:zѳ9ZG:Ѵu4iMYG:zѳug=YG:zѳu:Ѵu4iMhZG:zѳug=YG:zѳucѴu4iMhZG:zѳug=YG:zѳugsu4iMhZG:ѳug=YG:zѳug=똣u4iMhZG:Ѵug=YG:zѳug=YiMhZG:Ѵug=YG:zѳug=YG:hMhZG:Ѵuլg==YOzzӳzzӳgӴ4i=MiZOzzӳg==YOzzӳg=s4i=MiZOzӳg==YOzzӳg==뙣4i=MiZOzӴg==YOzzӳg==Yi=MiZOzӴg==YOzzӳg==YOzh=MiZOzӴ4g==YOzzӳg==YOzz3GiZOzӴ4i==YOzzӳg==YOzzӳ9ZOzӴ4i=MYOzzӳg==YOzzӳzӴ4i=MiZOzzӳg==YOzzӳgӴ4i=MiZOzzӳg==YOzzӳg=s4i=MiZOzӳg==YOzzӳg==뙣4i=MiZOzӴg==YOzzӳg==>:biMh@6д z6г lg=@z6г 6д 4miMh@z6г lg=@z6г l`6д 4miMh@z6г lg=@z6г lgs 4miMh@6г lg=@z6г lg= 4miMh@6д lg=@z6г lg=miMhڰL<A6г lg=@z6г lg= 4miMh@6д lg=@z6г lg=miMh@6д lg=@z6г lg=@hMh@6д 4mg=@z6г lg=@z60Gh@6д 4mi=@z6г lg=@z6г9@6д 4miM@z6г lg=@z6г 6д 4miMh@z6г lc`Fz6ҳlg#=4mi#4mi#MHFz6ҳlg#=HFz6ҳF6Ҵ4mi#MiHFz6ҳlg#=HFz6ҳld6Ҵ4mi#MiHFz6ҳlg#=HFz6ҳlg#s4mi#MiHF6ҳlg#=HFz6ҳlg#=4mi#MiHF6Ҵlg#=HFz6ҳlg#=mi#MiHF6Ҵlg#=HFz6ҳlg#=HFh#MiHF6Ҵ4mg#=HFz6ҳlg#=HFz62GiHF6Ҵ4mi#=HFz6ҳlg#=HFz6ҳ9HF6Ҵ4mi#MHFz6ҳlg#=HFz6ҳF6Ҵ4mi#MiHFz6ҳlg#=HFz6ҳld6Ҵ4mi#MiHFz6ҳlg#=HFz6ҳlg#s4mi#Mi:َََََЎَ혣hڎhڎhڎhڎََََََ혣hڎhڎhڎhڎََََََ혣hڎhڎhڎhڎََََََ혣hڎhڎhڎhڎَqEI TDfFӗX8hx>4>c>x>x>x>c>c>x>x>x>c>c>x>x>x>c>c>x>x>x>c>_?c>x>x>x>Oc>c>x>x>x>Oc>c>x>x>x>Oc>c>x>x>x>Oc>c>x>x>x>Oc>c>x>x>x>Oc>c>x>x>x>OsMϟFLLLLLLL<<<<<<<<<<<<<1111111ϝ___&1Epi/data/M.dk.rda0000644000176200001440000031235012531361106013163 0ustar liggesuserswY0fDŀi b+ &LC C0@Q$!gzOG=Z4ۣ>8ͣFQVmQV#GޛQV#G6MGf{ԣGKGf{ԣGyԣH=zxsSoniPonM3 M=iA=7fPonM3 M=iA=77M777 M=iA=77077\ÛA=774774ݠÛzx377榙4àÛÛzxsQo4ӠÛfÛzxstzxsSo.͠ÛfÛzxs zxsSonnPonE=ÛzxsLzxsSonaPonM M=7zxsSoniPonM3 M=iA=7fPonM3 M=iA=77M777 M=iA=77077\ÛA=774774ݠÛzx377榙4àÛÛzxsQo4ӠÛfÛzxstzxsSo.͠ÛfÛzxs zxsSonnPonE=ÛzxsLzxsSonaPonM M=7zxsSoniPonM3 M=iA=7fPonM3 M=iA=77M777 M=iA=77077\ÛA=774774ݠÛzx377榙4àÛÛzxsQo4ӠÛfÛzxstzxsSo.͠ÛfÛzxs zxsSonnPonE=ÛzxsLzxsSonaPonM M=76*NOKop.: :oVh<^6K,M9SϞzl ggYލ_&~^fgX{2^Ic9^i=)9,O[Heg6vU;H^o77^aEo5FF=FWC7%nb\"kѸ.z-iCo՗ Ct7ǫukCzg.waEv3qbMe'9^M7KҧQ^˨'y\ʸnKa5~Sy-9xIr/7ڥ%\v1moֿe׌_KoWZu jהa妾|]zUxPylЪ0itKn]ܬO:G|>vTԭ1qV|!^d%AӍuUA95V*y>'e\O1tQloړ tS|a*ʫ2AzZyCG׫?4m*e?oOUL R+ rf?ԿOk}U U5I_U;UCU?i2g|tzU6vf=I~4GL~}g|U4U`kWӌ=0*K2W5orǾ毪aM3W1WfoH٥q}UC% \~S 52xᷪ,Is > dK3~zMFyccތ73K^USTn MHͲrv?hoGsC,$y y*W{_&;+_ oʏmʗjo>|.?*ފK%gQO1_52xŏڛ>fi| &>3&G?\2rGx֨͌{ ~£]l/x^3oGHozf72xs?^Qx1csm?I3IM<^~6(}|$HrQo<35~USKs_{j~Os8ۭxs?g>, r)(U\jܯ܌s=b'LR?HdhaoforKW?Z>3kSQ_7|%*_B>#=5?JOQ3cMZ*Q54K_#Mcך5>Sy?mg yn?H/į2Nj?V~26տy8}]zW?io~B/*~`LM-~3?Mg_f^Q{?~?aM|{_?Sx82 yOy"oԫ~¼(W^yQ*ڛb?oos%_7k/Gsœ4տ+|Uj=fί~Jws?oO^W_eWCFZ54xŔ(W~LɛTM|2x3_)>a^?YAċ|j^by?ּ75[yXs}ja_} \ȿےoK?ɗk~0˕/7O_SUߜ|~ۧ򣡿/zY\oJߣf~5ףR~I~U?3IeEN^E>70th?T5_򧙟 _*h}ڏNsg/*r~[ ķU.R9/V^F}oO1slċ6Un)HɎ{Q.i7·˼?jaL\1*<|>,٠&~U_ 5O]sM7&MWܼ獚_ʕ}vqQҳq](U~}T~K%O_[J{GkO׆|lƷq*ޕ%Ozi/<\_>-hҫ ^y%^r2kuG8iCvzMvW~Ӹ?C5ǧ|ܨ/e+?J? 7Ǵydw~HѼߗ=qGg}Fy3>Oes=)4UOyn9טTx#~tnn[^Fl1\RrMݕogɓGœ N*ԟ o"ۑ o)|#ŜS3a¯JɖGE+l)\i 1RQ OP(7_?c8ydno՗|/q_o~=].<KU.Tj4dך'Gj3z˿?+M=F^|TjdinO.|h)|JGY^~/{PU -ykR /^F%Rq) " ?k>V#OSM ^^^xtdޯl_~( H_ҷ5˅s~\T!/*irő9i}Ғeyl*g;MNhU PgKG7 ^.\(_Owj~a}3wo Om(O;e}Gcϧ򟡏pKɷ|.+Rśڧl7qLv2&jO*nolw?]}q;U)uU|h>Ur7%Nlpۊ]Rxx۰]sיTq"՟)ٹk̭ڧ]XOx{[؟oϳ%;wS'慮,kWv/y7=^_Rrה_*Wj3-_HgQWRr3M{ylwin^6wW~xel';t&םwIK:B— C)׋lי_p;}jyNzt|G*|>K*;=zk>yNl, ?ʯg[듦֟ҟו7#U^zTPiN,Ao_T.|G?|$OJɞT.cO{V\_仲 _ye/=zmț_^W[Q>OQ'5P>IK>8x^|*~^S _G*ʟLt3uQvygo>R2'(Sx!O_ϣ,R廗%T߯W)Os+>?5_)dS>S6T|!u/+@{Sp+{(_a{OSvg:J-?^4>!OԞʾ/R/GxR\=oޞ?U9iԓuߢ&sW/ﲷZ_r<]YOz4e |3h>_QRk߫uPS2s~Zf;Kk# /+/.}uN,W~I^k,U^eۥ£ƯyXM ߳RԌW,R4^ůW.ǧ$O}Y}^np\O/RcSq|8}(/O>5>O֋sˍ:NYO}|tW++f}ٯ7j*}Nq*}*J}QSzR%*S_OKP믲Wպt@{^K*ܿ,|~u`O ۥ1ǣ|'-O}_?9NWoR#IS"R_ǫW~Yԏ֙ԟد'i$WnߏS7i/Ni)O-' %ʧj/k]jKCORA^ݽ9N$Oҏ_b}$dR_zD^Z'{8dA5uœ>Rj&œ*~u/j Q/{`[G۳80Y)o0y ~Z :ꖟ¯!ռּ֏>_&Gy}+*oo/7?4_ O̐UN=M|I9>{S/OEXj߇boO;r.T>ǓTyz(d{tSPӛ~g0պ_}_SXn?P$uSx3ǡGx@S~0S=7Ż;(/ޜ<6l7Wǁja)RxbᬧTkQOTy!?;-?2Y^RT~'Q}ҁ1H< Zkz)@=BN}Ny^՗rysY䙯R!>e*gٔu(:jUn#ؿ:WKwW)/rWRQb,*+R?5dy4=A- !/?ŸK Cy?| d=Skohͦ}9ųqE^,OF_HGd*O`=gCy}F\rxF1^^@Q/OPKÍsYvWs3L>s}ҏP+kh[_zXuZ*_*>RiRU|P!{ ȳh8)}W5Uk~y|$ɟ#M| ,r5c(O Qy|}Hޯh5|ǧEyl8ӼZ ge?a?O~ROޔ7(k_O\Fo{<K=dG9zC}eғӉX^@*`Qsg~S>rь?u g~:izsڗQ}L7Mel>Éwůa|ny§oqkbVZk~c )G)(G}O/66c ?zh |)e1c+h1VO:r.K9ZW5/T8ȿ8?RE}Cw~h(ۏ u8swlRo6ǥ}lʑ=4kGvHo/¯g~tX]x<aʇc7Aqķq}"gx^W^@:'p_S/1Ϲ uDzp'H1_1頚ǰ0׍<ݧ}u00rFR_c8Ǘʧ_#Wk=1\,SjJ^ơqRs^Qu_3B8hyIO?i'2޵1rO2~<2^K)c?YK>)wxOTvr5hFz/oaoFj>§ƯPMݟwoUũLP+5jqc$M@N|uD˦_&Q/㓨^mn[ny7ˌk>X;rGz#h#WY_~C^CŸKFёy֓£GP 5.T?~}&h_Nq)jQ~фtʙ:r1xN'Q &#d>$gdT+ʙq 'ߑ>t_9* G9>3~zD'Nɫ~KWyek7ױ?G#t4ynCwT_Xv4~K#S%~u8~O3zMqDzK=q-*O"?Rrdo7MxG/Hdǯ}Ɇ|;'*& >&(Rd/!Md?V$?Z|l<<6zi_T{X^8IGuR>|Rj~u٠$j>I{N8叉N:٭$`r~ ;S?ݷL!NGߩGq?UQ?/Sި(Wx?vQ~SLt>L~Cŷ5*OZL'I~x⸴0M}5'P87}awX㸆nZ/|4WM4kMOԺT=S~?d ?)^CyZg:NR[sy9Ivɤ.< ocX>r|uYC|tDJw!^c^|GAzh=2rGPt떠Eq]}jIT>d}鹎 _NZωWjݭĝ&s\)})B=dS9XA~Q凩u*;rs85ETmܭI6wWd_MV>JٗMe;㨷W0LshIN[s-y|KlxwUn{Lxҟ9u( 5k3r4OSdWOxͿ׸<֣DZ$_Ʃ$1Hu<4F*3v:Lֻ)X3~ֺk}~4Md;3Ɏi9GNZWxsh Otߪ|yJQ=Hrq}iN:ys>|Rxa)ZNM#/|Q_ WS:3WNnI_,>| Os>d,q( Zk}HujjϹyGQޑtyZRq˿SYy\db|ToQTq=rSx8&S4y1xL9ZigD;hU(?N{/)JG)o$O))k} c_Odg?TݣU t%>ʗK? > <|[Kr^vhIz~TrwpƔdSrrtymQ\МIl9ioIO.)ǧx}n}r> \}dGvḵo~sna=# +yT9N9ZGɿ Z_#`*?JAگtxV$"›%)i=)Ox42x} .gynS?9l']-?TzQd\Nǭ<_ťm2Sz p-[Wu?"9cAQS8zIQPYxlS~]_H8]4/ȯ}V$T$SeGuUj^|ǨTia4KϺotr؎vևUnwrZjxu?y\z8g;W>;k?֟DyŸR/o>FԺ~Ce??S/h6i}}Rn{5O'\p)NU>6<|00ߞv'q\9o䰜֫ӹo|49!u;S|c|ylaLc?9j/ ZG)?jJbW9XOɺPHdyBwt>[rڟPRXFshZ'(悔gC;h]I#/}=ϭKwUCפ~O6t_~>ouA okN=߻ܡoJyz`ǘi++eP?ꩼ1iN[CyN;SO!٠zT)=7;z>bTyC5w\"w\P[yXW}ذZO~'z.J/kֲzG?a:ScWCϝh?OiOyKU}:ϧ|C)wӉwiSG7h~ᄅߵ^ޛz@zދKM78TU97:z+>^־`<4:Gh]R!Soȡۜ&z(泜TI?N}Gs>/xޚm`{,c_?O*P~>S{,OIyzh8K~Ss\zJc8u~/{DZץ㢟z_9.^y^h?gX.znPɩ|gվp8K>VϙMNl|zY3 ޴~UT#?i?\ zW8zVϱGqGyvtޘԹ%z[)ۦC=9i<GPO!{9ُRy=zFiݣ󌴎JGqQ~[M] sJu_nu|߫%_sG?Y(r2ٿ̼3uǡs~QK|S<:ljrtOy>rc3sc TBQZ)RT) OzYQT9ǯ_@9G|~oH [eW*='!累?{g&:A :GLbsU{=)/\<ROG Y:U6s2AuҺEy%=sϨs2޵΅My8~5h!usOޛj_Xx>!:Cx{GV~O^{Gw?,.=BY :ןwRвuչ:M~3sƥOun>G;i{FW:M :udK?^ֹV«5}Ή{tιS|(W!x_Rl|~g }!]=:8])O}*vO}N~c.;;*;u`u^w'>wtnl}BG8>;uuIWjG{:[+soi5?i@y@)F':_s]'dk=U%GASagÕ.2u~zGQ.].IyNM?Iz ZΟt~`=+tSr}WI?4hIC77zY'+]#W4 >Ϫ{w\j\E6F.g7ʕo+;>d ì/u7l/kozs˄ŇqkzAZ<>^MV{Hu^nënо)GZ/5,||&^V?[OlCK벗U{_r7yB3ԟ<)%_G~zBjWy&#jnnxUΚ&?xg&;=->{jK.*R=Seؗ۵k>kxkoeytʊ|ZVGU߲o% &TvݕVA@{2-_Я|M>jf%8G%:>_k^PHȋe7vL|w /GBS!Ϯ;={{,-Qi'-vj{] ף;臷1ĒO!:{8"Lo0 F{E?I);20#Wと c<2ʿz4|l>>KN?+ۯ{)p;`n_z6vo:?1B 6},JIWt| 8ȍ]?ۍXF߅]c;';*NG+s!'F|}C?|~kh ޫ|k=ȂeK̇qǮAiGALo< GO'5 :6 τ|gK0>-bb<`g{pj źp?2< ӠWxY_v zዀ/8q%C{+/nо|-x)h>8oZs|ᯈb:!9v ={)`S7ށB}ؗ`;aE3I?a槇Bo>b1YWfC rwo/34$> c/R3aq2s ;P>:3.{ -hg_ }kw/2.ȳoRS߉;|qw!%_`xJ> xwW7x >xh5&ᛀ OiPNjDd #Zxm[C#C{{{3gEdħ]vYG~!?~.ޱeG/ξh-U FW)%ݠ (XJ|۰8W0]EȇtGA8O@ܾb/%GO_Y^#maG<3Ro$qpu!<o`%!! uD~pqA Kp=քąqNBM~GΌs\ ȳ_}fI\3a@BnqL<2_pEdfd3]8荸6!n:nbYaይ!kùr9q҉|)dc^O,yQbaы&o GX'4z?˟ox@%3[+;_"a"_:nx[r;yYrGWP>6}ѯgE&|geP-` Dm :}? à` ṰK1[Ywذ6|0 >'wkhZ@X#h_=ʯbۉ/>Kz&*赔$O@/ ?N]~/NC~z8k;\:w5?x۴v9t:jm׃0csa|KxE~#+OA9tqh>ѿzO6-IEPukh/q~ !/t1rbW`<+o#oD>1]M;F!oy_||{I/v&-ch~wy#DӰ{,OE1tk3Ɲ?']e?7A|8Wz! .k0vng܍t@ԯ =}%9'pyv o3|#~~ ] ЏgWQ8 3_ ]_ |?=?2?]Cx{3#;Ac30 k_qn[ ^X|=%v3ڳѮÞTt qv|71zŸ[L~p_O=_"ǿqi_+pq5<q^Cᬂvs~4qv:6xyNL$=2qv;wd s=BN?|r;Љ@#IZ0ԙkCp/"gwǡ_5+߻H[q&[{ѯ:SC+Xvl@e#uo?@{>>z HOe]A}Wcܱ!??Ob+_R݁ˎP??D`W=IvLp&`?gB^p{F|Vt|kgvCAJ_4Qd$"j}8qE<|?h!S`}sS/G`/068;"kv qF=C/"/2.!AF`>Y ga{YMLj]-\?$^7v+ȵkO;WbesE ĮGm"tiN@Q'LAo^ݡgz# *F΂N&sg=7-9k1;Oi]φ޶oC}[P/v6*H*ֵCKԏl1;{!< ]Onoy->\_t }=b] ?Zb[Otfך 99Xڭj&pv@Eؗ1DXm3ԋ5\0zz WR]CJ>8;-$%fVhors{㴯oq=ι 1ۡM?Eo&`( ľXȋ̆?]'« o 8Nf> A *90`G%?EF͆''r<' y'zOE>}_)'6z>C}r+{,gޱ;ӞwcM)0.>Oag!xN:wO][b]Ixȗx;ʿ=\_[COq̸a p >AS6ylIA{i"N#>~$CTʋ\>r8 s a< 74 ^p.]|7Cp?q m/<8uKhGg~l 8Dk߃"Գw ž>~g~`؅~cEp\7]쬟YGpjCzG/+'kr]Y4pEέGk? ql}1|v=c6N|n&֟Yۇq_1n=om_1>Sģs'Q?pj3  /gobqy"p/n h t_8lCEj04v1 EP7'#^,^Mi}?L; ah < ]/Va y1p~#~s8{zEqP/#M\#_ DOXh^[Rs?Q롯iφ~ΐE*ߚqp >B:y0>k7C:đSQq1rV%Ai_(p?9L3aĹnA!>?;#ا!0%TswlQp?3 8| E+3{N/W||ǁOP;aZ7ܒx>(#oW9Gdq ~G${}s.f|w)rO%=-Fję9w w/rxwq o]/ױީ7GRO\7pgnߧh2˹`)CW0^_ݦL]w\Yx 9 89j">C' x 7C̬WWϱϠQ_p ㏄9.jŸqy.p.a|^<?|WҾA5`sߣa?;; q~E p_Io< &;WI>gdsy,^ p a<< OB\اPG ďŽ S~;as^x} {&|$vEK7ȍn#<)}. 5D[gp !}P^ uFD܅k#u>$㋾F?_<:xq/vw΀o%籴fB? ˀkgi#^0+(̀^΀Ys;u _9q\->z$Ay'\%| qzt\w'voYCt ng#.?e4(csD7@B;x Gѯ0 'oe? \B! ^yg=Vv='+ο+_;X&pbn"N/CF|w_|aaAv7erc".3w|~OPq;y_]G 9G1'ςI8z%'M6M?Ǘ!>E~/߁B8@,}Bȗ'xsYo?_XO0gs}I\BX=G& >wܰ~%^tE7Ǹ{됿 )9񭂞㡇c|ocٰsb+֯Oxz>`US@55soY(cBfC2ݩoZkݟGYh6lWx;$|[q%5n;q>O|I}}vI#`I5?K߹,"~_:qL{ؗ;6 #.A|nE>qF2Oq?9|&KӈW8oBn$ 뀿9_dǮߣ#?'Cv/ .?/C?}o;x~2.#v!9~?ܥ+?NLg>\I|Cu=aOA;g/gcv$Q7e Ɲ8x NlBv_6q w&}R ;#WLꇃu|;&~&]M{KR c?}zl(:^at1|Ʌ~j_?#N"oM[g'zp٣vokOq(~oKNmߌvv:ә'NPmG {I 2Ag>򆽚{g1N#>_]kezmoC~$Oq'Q/{N%184=P6}#̗鰏ӵ_9le[@;}E<;h?Sb˘/ر{oȉR(ǑgnJ3〛#~6<5q7~߁3#~wBD~op|+xp<; 6H0q'>];ˡ#Fh d_<Ԟ9~&; O~әx ~_Yy=yh|'$ $}ׁ?^:;.e7KߎA?g¸qv3P) ?L2/ c 'tl [X[XύW{ðCd Oa/D =]<| q|8>|sc!/"'Aog9 ~6q^{pgQ_g;~^#.gij}9+i-s%K3dTˉ:s|)0 vIq#7DG0XT\$>G (~)8B7T_0Ɨ8q? H\O5e}+%a܉B%C. Pp s]Bή!îG-B!,My\ =sq7{ǟ}q=qpd}>98H{'\<%{g?Dׅ&+Nj?gEШ{ԟN{,q 64~p?웈_ہ~cu>/{8m cuC ĥ j`DM?~L|> /$={;~^ $>u= q7vƙ\oϽ1O|SDy$y@_˨}>ş n! Vܿ]~} S%n_Q?^_Ի6?xb> w3X_._#;ڷO_"PW}c h;ޖWga; }OZ_yD)M& %Vp3qn?19*3C;ȼcD9^ ~Jv#s^NIއ$aK<l&53I|4lwxw' ]Eq?Wk?r п1 GB^C{k:y=Ȁ_|)1v9|)(P.w5j?L.8EDy q1<xrvpq8~/#'Bn qp<bW~;c/3R \G^;c>ٚvv?\$v/OigO9,ҍM1kl⫀y ~unħץ[pރv9w38#>#KG%Nq=>xsV¾x_'[y 8Nz$o^w'@N"p?nt2OZ# A<Ưx9218w .WBNha 7<GPADs b}ǜw0n;|^U4ک Ɠ\s;9o#v9z:k':sz'я mnZ w}2[; wɛD-y!Q>A}7 CuY!sVSO_".m=z'i*s^lt%V2O, ѿgg0>v+^|g,p:yxŇog;9XЮSjJ^3!c{:#g ㊿/:¹a>x|~8<8U^>Q;ڿ y|޹q'3>f[}hT;IhDɿ$3/ Og\eL|`xmsg 'C~1n/t5  L5joe}h *ˣzI8ڻ.79~<.yqX $".'I @ fۙ;3a;F- .M=b:]qI}?C{`+ǀ'opd2LO܏GczC3J sWGKޠRN& De>ۗoG;Z\:g1*CCs'WO_45sCCek{ycBwA)~<\N\6z7'plߘq~O;UTϤvIqX>Gd{vdo d>qASt=sO< K'*CgULg1!ދ B^D78Nu/Ilq ܄&)u0H=9|pQ~\Dב9*ӹN:- |vI+y  &FaGLm487^vsXv v'B~粣G~#IwBY b9} N /e)65q> r߀Oyɧ/?&3A'w,%>x2'z-d~h r~ Fp|(>H x.L ^1>gbA?i8QTkb6N71}x6%77ΰG=)-KḞ[||?q: _ r!^aSG{!M,Koh pB* qqg"nh{K/q& %f~30ⳁqM¸sov^{Ի<e~B~ۙCWę 8~7dN~s#q (gwׇ֟ sć?'f>;v|8  V>Y%g_O ;݌=}q=oie >$YA>书Woo^Cq99| F~s/xu21>{^ q}:;ăD%1k $8:?`Eއ;w[s{2<WS/;Hģ=Ҟ<\ۆv {wk`O0v7q&8HT>'[;`d+M,^ek%I;v < Ms/OIt#'wAѫ8s?oCByB ρȃ1WבGl4~r. ǟA<;[OA ^aDz ~C 'QycEWܵ ;_7ຽw>Xހ|~7+UkI\-b7P'sT&j: NwD#^%sIwhBǣ}9>0oyq>L ,ޗx9GNnC!߄x`=7Ck&+="78߉R1|7O $"^#$N@/~G95`h~QGάys*b/#< 9M'|?F!./Brs vs# 8O0.CP/\ ?47xNg/8zK;}&X$z6 Љ]BF /xwf \q\O "B_}.NG;%-s 9U?c3ߣ=([l Nt3ۣ?뀏 ϱ=z Wa\)$]pnO_-yΥS8y^s Z_~}I/P/~zT{e?qz~q׃g#q# | )%?@<\69sπM3Ԃ'Bn2껖yZPyYqu GWd "ƞE1 ~ v |:3jW=7y @H{&2?Y(w\s!y͡_[i5N%' ?rP;vN8v|3Ԁ=ӌ9a/Y8uއCC?1

zŝNɐXv>Xy~xrs!?g n<Ώ!|+яG[O@|=W5}F<>Ã!WE%No~ l;yX#Bd:D3=k )7?'7d@%^"{ { he\d*%fWY >spgΜS)wfװݏ5Xxl9'-7|6lCЙG釻 ϙ naPѿ/3D|EpdCg"!Ќ_@fNp{&q=09qt{Vch[ZG.vAt;e._0c'x|4hr\gf]sorˡأQ&aĥG徚=?ځquT; Sn.iGy歙_x%< `wi"s_s1p#W u^r?0?pW#/?_`TKk{AkOKVߏ^>ːcH_%PO;U}A虨vwDQn ,_{'[:vx8_(a|/o/7|oȞO`Cm~,ۍqڼ @GaGiG#G?!y^~kcBL@yfs!g qu1O)!ޠGg˿ +yq;~~77wg|8 $# ,xoh& `ND>+8 @|78K! \ur+l6;2˿#.+^+q9?_I5suëϑ+W_o / L<CA_ou8\lC `3n8o]}[m=| xԢ#^:}p@=}EDހCkxo%B^s/`R;x;&K/~p9GYw C?(O'ky`~~:ߍ sςa໴}'t yFB(qx*~XwIUw#} xH܈߈vYܵjr%R>%%ڃ4 r7΃v=A~/q*ڑ] = #](hh9݈/K-K'W̷'b|6%ρз'ज+oD?eeoy1]A w3_~ rˉ?lGA^- G~=v0~ߒ  /OAq&E8w!"01Of=>@<}! ^øN'G'"Bcq=l[|'>ď~N 9I|3)Bă=_+U\g;g[}cYr\7п}3_L)V_C$`Y:rCsO!o/'h3W3PynHn0Nx.jO5ЮME{M}Yzqط|_*eBNylпo@\?q@[,gX\Ϡx}L Q._b<~xb\!YNUU`x$p2p 얣+|>o1&_$WAwUt~[Xޗ⺴lqu~Wikiq[ط, oȗ@ni~) {`s0Ka~ZK%;_7zy[) g{YxOs''Pz4}'|||2gϿAϒKOL࢘#59Bb>TZN~p1pW'JirJCg?._^<cę3)7p sgo7A ;j/l[rh9%Vy>X;_13.C+nO'X: / B݇RUs^SaG +bţKG%߯,x/vi.;d@$ps=px|߹ pQk7^vط =ʮ^EooEKxA^z@q?D_cisY2ECʆҿѮ7-ڂ/^H{I%\Yл|5U|{݈r -Te.lTG}CY -mN\<haqG,lSsHKE]0_f"?ފqLsYwJLJeyo)8~ʙ|_88 .S-*\v `q/6W]"M!?[v6xmS=b;QENby&\U|(H#޸_Yv/ 9Ч|B]y|,?obM{}KYN|4gvEaA((,ŸKWQI[imp6⸄q-0}0B>_Yކ\jqˋA>Qlv- zCkU_ɛw/t4@-[}#W0l ;];/%/OT v,r >EұWx]v3^uu%-H[F{yȲBVv,Jd<E*ߥsA zˈ7>WzJxVHIcQ'.ޅ8(XA~3RK_S9~JxNC.kϒ`Dzл߿(m|߁~Ά\ߡNGhw鐛,+~-k`|~d,/W:z e/ Ϡ5Y~ *s eg ˂Q{ n_KwaA)Mo.J,}K;zA>ꕎa9#,=O%Y~Ob5г9n.I?`kZءb#6!Vq_92Trnڙϗ󾱈9n~ø> 8;~g@f/>;J<"$o/N{Nbd+Nk).x}yBAo>K2~ /ȿ)`ҖKa_6sMs>/\ӒY,W;3(s%}r|>\dOчh_EE9\ړߟ, s||9/|/>~N@Y=y[v~)<o>y6){s?x^ց#({ߎ<~AUr9Jگy  |S$ߠ3!]r%;xA9foqOY X~f@C0.\G|M@C|+yC^Cxn~> }Ca<;vdi8 8J;@|oUЃzy~E|/Njp)OoOEzEC~cna Do?vnb w-r׮ !ww= ><G<87\gy N]?D}~旧'?W]|3߿?6ms[E|^o,s/gۿ~$nχ_3@ߢ٨9*Z/G"yS-#xyߙxl!7F0i&G{~e||_5xv>W{`8:߉G;.=t~;BsG*Yt>xVWx~|᱐Lص-ݽ5߳v?xxz]E迈G~{>O+)gӞg1ByZ/+ }9o{w dqk^[8s|q/* < f C-}+M?!B( ??+Xџ\m׼q~+Ʊ`mq@k[/`-i硫q}?v7BN~v>יJwpvH;ϡAϝYO/R n$y>ރs/)wW+;EEw]ܗ.`}=0~~A[ϙ,{/T/]L y{A^aqO-%i;s-̤b|+ZTw#9r*ȧ[~}'#8xfo`냸^ySE[@^ok~8矶C'o70m;gɟ@wxWb;}g B=`)(#>׻#= .A?о"9|~lO=;8e7##;u_yjDneW{ 9]h_9V0+](?;v^ހ_v 9yߵ6O;f&?1ݷ|발7'0νye'/ؿr:ݘx[>F/g|9ڃ|j]so-^ڶsk;G<56>x?b|}6_x3_TS/#/} wۣm!rQ'&0⸀;Hge{><.KqJ;m8t'Op'㈿lX| \~7}tcw{7M||m:}\oވ7y`_@+a{BުmaU]QU?>Wu+> rwpݼ}轳t YZ |z\z=mok=zO>Їo6\~poC ߳~)BO`(40mN}Co{;H3춷xaY>dEQo[<_Ձ܏E}0ϧ][CG;'/o++W\qo+}t޺ b*mA߂~̶xWL܎@Uow] |~~~Dig[{%vkwݵ|7d3Q Q`\k_xNGO>{. <K&M|g1=WA7sUO6>[x1[w'Ʊ '?Am1/B܇&ch)y گ|;ۡJ>?rzЫrX.*s1Ʊ3;'ϸV9;&|>Ov9)^5nƮہ5c;|d]_W[iuo;'">wƝkA?s!G;]c!w1ߋZ4a%}keIw=} π~ЕP|`,!uG+w[xrAܳc8NǸϏ,uc~_v>cU*3o8-~yqs{o6߹>'m ~rl[췍xtگ.;~VrQ팃UmڐW0N끅 %|_1x/KiwW+F"} )K<ʸ\N[`!1(h,:t ǷKF\,75]7(o{y|&У`?9φ>ßsۃߛDOa9[A\rț-}@(Vq0-_-1zkoDwYݣ57[4|C>W1g\/ziX?]N;^t>Y_-ƳU^҇Y֥/0޺A a^+öoe>8{̂nD}F<38_z%=M_}72M>!֕?z0ח7$$}O.Yf@O?g a6qG>Chos]~I ?s'+ݐ賊W|V~Z-F=!wۯ`2~~f_C께\.!~a<1'p }A's>|M=gNsso3p_mq95~n?/ u״Q L[An$/br9z埢b35%o=DZtyls~Go~u_2Y4:c*̽>ǗoP`o~®X:i+nf|w;oW < =\1ø>ߛC|M :Nq&9@i ߽]GMa," `p}k9-og,E>x)'חc6j=ϟx(Oqv|c&/7g]u3ih:\?r~ A؇ ws|ްnrʳ*׮娰#/|:,|8wiH j^9?Ә@wf/޹>E7x?Pow\ԛJ-y9ג ?Qdq/^zKnҞ7>Z}鴋[zzø=8q7:ż*[~鷗vmrc('t'QOm SN9iCX>q/|yM׳!MgA0~-:Z\}@l/Op{8{}l7Uv+ih?Gϧb-~ _Fcl]б o8=7nڽs] $_<~%"W玟o믲"~/@wCPOJ{< b;@{oKLD^P7ٌʛqe\Oa|'Snzu+ẼQikp_y^:/7z{ӏ׸Пq43z>"ވ7/Û混xUWwٴwF;.iNgC{ >\;|!{Q_ ?+I\Dr:3]Z8w7Uսc_i߁/gfϡoXmyͦS=/3_ʯ||L^WxϫGϼԟy `~yc |7oߎN?7v{QX{T!>{]Ns<5:{IMߕ:_})TvL `\w :+7rgl7%B8CNh?Bsz]y}=ԷO739cg?s |沂Ay8/:y)9\Ͽ9|2&Y\~'3맞g[ $߁{y8xxz~nY;֌n{>myA|=&oq@/^툗iǨ@4^t,'\u~w3էX>:8ow?g~;\L\')o(RݐG a⺬s=Q ~GӅ~c?z|ޫ"s q7=L'g~ ۑzI]hVc3l߆cy[׼gxz]7)'Yޗ?Xޟ;Q Colۅrl|%tSa(w{Y>*<ۏ}tcƹ.qz_s=םr'_){S)9Ai\o+3bרO 6]w]:x9.Xq;~]Õuf߽we졣z-]rlیY.vp_Kole߲~H_vhho/ | =S_rz|vq.ʋ.b}߾N?iojs}u\E'|h}ޫ]33}?x2_/cM×6 Õw~OK,OE6?.|._Fڪ^w|/̟ے{Wûj5Ht=x﷾/$TZ^Nc}gIߵ׼SNmKbC}7Z;2o;fW޷eþ>v|g¿;lnUૹ!kj"{䎱o)O~8xaU (w[z3N|t|g>p\y4pYϟ@z-_ŝ?Y;:}w`΅_&v𕾚~k皾_N/j~֏9/4XgKeDztÖwՙ3ѹ;W{ o:Wc4WOvXƫy_h=ov+v&[3o|/X_uS'-ZgEg;֗yJ^[g5bc<'++GylRȖ[sXɩq%W-:%g~e%e|e]-ի&XԴ>=_hEҠO[Gn%Y_LyVɦVO7r0zl_Ww>3;}5:ܰ#f%'ַO2]w3;ZC~su{e|f3xo9?+|J{l§,c]tUzjkyK!woV+:fowY#y꯻؛ Z=}՟x _sCϴ|ve~uqSmy_lݯGV^[ݼa+_E<$wX%' qgXgMnUpUk`f[߿oW95VYg}g^5+ז\udM]k+`Tzx+}YVܻ/d \?-:q+tKA=('rVGnXQ]pQ=뎟O+^J=_v|t+K*sT[D&XvC%o',/OVd{[ʗ [%VpyX[rI~w-̷"ӎ.Ge,ƌã_ڊ_sZ=Vt+?FҊ]tk<y'=rJNͬ-yC֡+o|s9VӋ/ͲfYA/*4.Z^b|U;+g̉Y/bNzeY[n3Kja!֮IF:u[zcY:XVG6qU+n9fҭcVlG*lMnG7}yUxY3m{bԭqswvW/k *s~~* ~hׄcc+e??vk;~6le^QW68D4ݗ} <X^t앃ꟺ{%3F+k)_>~U&wȷ 7(ŏ|}bOC;F4huhmYŅmo\h}2;5i˭XO'|kF*vSNj}t3u6qU~~ZuQ5Y{_ngw61v.ֶ;=uցW-]ju̷X;;2jhiߜxak&txkK~/kҶVչfxW~˓ M;g5k{tnkOڹZk^cupW7ga;aΟ~Ӛu_QM;fmjwqdo 3_߻Κ3ܙZ2{/Эs~eb+^]w˝~G[kOooxVhHSv?m~4c{'-Uzg{`Z9M9/>vygϟiw͇Z{zMyk5c&=`xwʯ>߮oǧ6a46,^~U݇Zh:0/'YSo*}ۣˬm ZֹqVkdUw޿kֶ|;>tv߶̱cו4[0xVᅗ<v+UӳOѪ뉟|763~֡ͷwH>\6kW=zf{~GV5ߧ>aEw5{wLn{cz]Tie ߈ZZ7ya k?_mްKwֳV]q(1֎9gRj͹εV4yBkױbkkUͷl#n}mjd[[O?t]YWX[_nvvxuny/XX'jNw7']aߺY%֮''3_Zהa,Ңѯ\{vkg=֝G"\7Ʒְ>jyfoYFfk1[VZKȰ |}[o^ۯS)__Z|iVpFffdqYZ%[>; ɷFMDkmymZZ%ξqQ}'Xn[PREA$ARC@%Dn:yqٰ]k9y׵5(glR\/R6/GYu(S85A2P[Zzd}O @%uA<4i[jtwoe*Hg ͪH]jeI +kڲɣ *tYCv:!7VH:V>9xU\rn r2%C೸48e ˅E[P^7ntm'>ABglß|˂95|k#jsD}^I p7AZp2㍨P-%uSQ %q[S;&\ W%aVِu_u$Bqe-hj)Ӽ_ +/CM8:b>۳ajdZB[G|ם5bz b<v2ޡrX.ͻj=椙 :4;W%՜!K&Jz}d*lp*2= egFA4t AKą{/W!(Y{; %nCwїWCMv4p93THŇB'.OZй*ui:9>BsPޖ^% <'OEyC :hy HC-Te ZCOIB/e2غɡ[2ßtxPKUCTooBY˜wg,|Pp7kT38+Le({T $EBlы\1'yr'mAdFkPS1&X:깓}AΎ ΄(T̝GQoqyAG9 ndAu?rHw0&ח,` mJ*6d:08&;1d BG.T I0Njs؂)1鶢d5SoB^@?UsXG|ɣl~mɡ߬M,=07M3ar׽sX7i[ 5xt܁}1n)DiAy@'=ʤMS>ޅ fUYǔ440 c(j,__<M Jz5.>KYY=Yoϼf %$Y@82 r4i!8_?.GWuR R-ļ87^NM^]]sw?uA.bhfjLj@2ύDZO'@$%MȚدOm IICsX~PkY4z="9I)BmPI_,i sgc'TQ́7g~]v_c g~5ozQp⁜U.xmTQ\hSR`ϗtXEgv@ɮϯxrx2.iR~=N'CF;ЙfdiCO7% WϴJ{)i}&(W7p`*e^b:BhJhlCهxtP/ܫ VoFn߆&#A ԉ[!#RBK53~_\FNvGN:d=ИuC6US*B3^z(E[׏DŽ?Z!PhZGm.[Bknw;2S WC( ͡ZRhJ=>Gɨ qZ_'i6g'2痍rf>2ĦxRo}rM?ZWzCN*zbkHr} -\H[ U傳QPɞ-%e=_3\Jeۏ *hVs/e uے82b g~h=`E85!vF@QF :]߰Rqe{ ]嫉"O@ AYd32yaH7 gdY]#IN 0I?DDr9Aa],կ_.f%-PF\e& ̉#gI<kFLXUCY4FpsV4/ZBw/|Pss )A#))2ne_\td@9ɿ ~xFۗ[swpPLuOɋ\ɩAN$Tu;t >^၌2+}ᝳv*y嗲]# Ϲxj*AME!6o%<4@+t]j~׋o؃gRPfy Z@isaf\|Z VfPCۈ,cڟYPRaG6T-(6Sķ@ZU.zid>+RCo ? 5MƵD =Ux缴m^Dz&} 3W^sdcnH& ɺw}$L^S˃h%6MTbih~էnO/\]G0W͂׏ M2d+@3o7x#VI`9*>A— C$фp-AۅxG2EpYLA *jOr@p^~}踥 Eqt?˭ PP=W C4hpfٸ;{6ve Tazq3\pjhWͼ7RY(}xZ O|llOCF.(m4Nzoh&sJn KTk}׼y֢KTIEj\!T(sWlcJxO8&¯B[=t^P{(ޣ ^5 2u_Bd/dr 7B$X+_ VhU eM5NL!t Fmd ! Y \ =sͭ\"wHݰ w&t~BS>wӑK]\4L>b֏qvePg=ˁH.Ń#U0x"i2J ?a:@N :X'1>k+RcjHZa7̟XFB1 ÿӠL3'hU+mο:5džꜞ u_gC|_l|( 6#k%n8^ kҐmMbnK2SB05ToɖTzlgo4eAѰMK/ _6?[=yUlU{?BbG;/% c.c#f)_A; r|| mg@Ɛ#ya"*RT t/ouwkra *)mCcHj j& ~CegmC. /T>;֏kbPU+!6XS[ghpݜ DDELS{aQYO>WB%3Aϡ#Jx*κ'@S\C%!{W@ T$+ 1OG lyZRX|8 %F (` #jC|/ pT]& 2D_:{. BhB:dq3`z =d'(ʜiܭH0:?? .$[z F \KQv(OAى|7z=r\5ZRFQ*Z@^㍝COޞ$M:?2SCvkz+G T'wBC4z~vuo HOR} jmc _Vx80;-(A hI~jYN}*g Kzÿ簞4d&N%PGP,EoYz1ġEW>^5T;$nBm(Ä@=Ż @[z8/ :v@⽘joPba?qӉ3( :μJܖA"kq cFX \S#|]b!qƷą[PK=.M:@vƳV{HK>/DsaRtB6yz3'L3r؝7m\p:73zk ha}U*K{T^7ۯ0j}/*1E!o;H$!w3 *97!E,wWSdapH j>݇nݗgCpF } }3prD6BspBhc=};LD#^g)>=4^7$rͬ\/>r|&PCs4|Z+ޚ0Ufyy%W]V0V:Q(T8pfcyl(࠘Z( !:Р6- ӇPx=S o4O- _}Z͡mUO1ЦM&ht-9WajD.h ;=}f|h\&/0_|#q@7CGP%#FlZgJ͐MFqFnBGo [_xPNP*C-fgtCKbK&1O? ut9\ V4#&`2?3AKb~$'iy=5yaj|OT.Cϒz͠Tÿp FK =r B5r;G6T^AA|e E|Bo]ˆ߄?PꝒK c;,aDQ'yaq. _*F">1ezB'-AQUKS5({Ԕ "R?禰G3[M:NEA &JG]$TAˀ}I): CۍLos\S*z/wXrB{̮EY\ڝHNͬ] 0sT-h'IyB)oȘCO;K< uxnsi iMht)OpnL ˜OY-w(g{ykxt<N@cRM3&w#&a:s'*57 jh1μ6.یB'Du.0@O1o-V^)k4"z:+fOAP]Ue=!uw`=V>RJ0xZ3=:3]@F1q0me`cK˿h~q}.j\L;U,F(FuÃYj:t1wfXCGL57T&YWɟ;󷡰Rs;-DÊN2Ԛ'0A݁y^O ]/VfNVɵi5nN~4)w{ABl3|;=CnC%/.F!}+5ciS"%g7ظ aI3Tq`:ݿ9o.UªfE%V\7!0#CM])o`_жg.!# KE'/)Zxc Gˏ5'( SvQ  /8@[̚CLRaRz݆0b?UU2B9( T RIէN'&}錙Á4 TjBëarP=: _a4?;z2T%n^@Uݕ+y#6MXPA[^wCJ.nT 8| m?zaC)kM-U^3G3YcIۅ^PVr"1|,\k/pwkMtF붸b>- kN?w8j'kvpsrVő "nҾS SѫOB?*XvRztb('`ezu|S3.ZM9;RKGY# sxiIddGj S# ,l?Z6XXr:Kf`e@S6Kh՝0|J#_x~̟OȀʗrv0Kqj=54,qQ΁ު|Xz Zu%04R$RZ\;0z:>(8AEi]㹅<^|hx&%mO^|-mh;}# za\ gg*a!7 k|`ȆI,>Md9^T[JX'fPa'YؕUSՠ7< %'ќCgEСMG<؇^q|0Td,oML9>Fbn&L҈R[ca5G/>e47[tA~?J0R;|y$l>w? Ykqs0Hy փL9`sXGbFr>5=q_ X1>uްr?pxCn4T7Ilm[,yo¹u mxZ1ó_?9ZE eaL-S.UAC?vuP^^{$ƪ2uHa˜Rn2j ;{VA ;_'4)3vakL$Czg-0t`6vowú&ūa_-1oKvS6՞A'w_`3N -3"#Ƹ3f>~dNv8L33t2!%&(b&'weTeEhTf( kAq`b1,4, 1Bڰ?w?ua}ᗃy?sr jDFPwwƿL4~bǏ`y]7Pѣt_, ms5չGKRZyH ;U9z"~HnJq\3lߺk(u՗x.RGUKh^h+CӦs?؈J^$`L#a{3Fj ݈IaVB/-&n 2;=^9Us>-| R#(k3c aZ`i~RxFzE5·ٳe'853K+v SUHTYˋt^T@.wZ ,q)yAU9ZU&R=sA;/u*8v^@ wt@OX;,lYʺڃs4ϱa7(2txOC=íÎlC/b0iEt} 0._n \4{b܌V )_X&⃖ }~.s_PCOX>f_=N]eavRL--Dm6YiK@ e,8^J W71Kz˹qB~0AF.v{$xm&XdOKpէŷaN¹Яs)) &|0Z_%X>8=Sܗas^ѭ< 0 :5!YIgcaE^RS,eQ8۽_d`/7>'+)4Jb~t-+:C]=^gТbB+tK@Gx-ɥCׄI:;,*,>.郦N)X]`*WC'pϯ`,_Y&cJ~K|={!dNHOxԖݣhr}} 5a:pyבКs?Bg5Flq]\'I`8tԹ<X9G`[:]Y\qnنנi~Ui=U0ݹ2b^Y8A=]5` c G_X܆ g.x sܜqa\XV~2f@֣KacJ"M 2mr,uՅ ԆН}4B#,enlM@94cxLHy1w5"0k3.evn@7к9-⢁^,6'4?`R/*ĸ<[|c;uqBD+7S>86V[1T5`ź&%XM#`mue |3 7凙dO:WK=X+Jw\ߧ Rc!:sUC QP:^5o\aOn5M,X ŢT/hQE`%t7<]PrxLiLƪ܍]c2;p]Z`Bl/lX_N=&zw  EFxX_0R+pַe`ЉgɁ3? c.ft탗0HcyMv;V86~kp@U/-X[\q<ΙGJّJE vTKak誠y4Lk1b y SMAO<>_>׷kI؞KqoF0ji>OX+*ef}FtZ†15M#KÈ.Ft# *ljQՊ_A [O|;X!ö*Jt$[AZ͐n/k<28 %D!3姎BbmTsa䴥+X->6Y = M&:uXe*օ t!j]Mߘ}Ko0jX@1c71yEꍛQCJVйL ք-t$ϡUfhmje]wGЕLk^ fJ5]?n3q)jh=S "P EgL |}$DY囯_b)~v,zB'hZ#p9 Ӓ_q5G9cAF>ni[-)(4 _2eNJ[YW)*6w`t?x*>,fl]Vg K%yv$ц7~I~V?e| 7ۊ eVz:}.w`%M!|j]Q-4N0VLpV\i&E?Æ|2-bsw yUֿ2Ako58ReAods]X7tZ+Orv5l>! ϟT5ppg5劵];aC~_?nTz k9v>0usn0ZZPݐi Ӑ=둖:;0{_U~(V U@oo0>Xt&CX *P{E`^+I jXrlG?-i0ql_\S톞ⰆI%p7B׶&{&|9;>ɺ1VJ ^BH&HI%@Gܖʗ4°O9~.ryB0iZm$)9`A.TTt޴{ʸP)}N:&f\.OX>l[-ܞH~`5[Yj z faNG~$ &^ݭ /"3J첉aȽ*L6;yÝarz|~xxX+op uܹyii`GӅ:mxT?%F!]Ȫo1U),'H ev®VWKXPL XMdX/{`_o?; #aUIL>9OJl]~mLh^jm&Ka7i lsM@7 iJ&lr+coZo{O45uL+Q26nH!}d[ZMB>o]L<d 00 9MUU}|\0ť{~A>uٙ3 iyS= ?˧"M ^m¼O>}=y3~G@/=4gaƶ&>5ioеcV=&|;b VCE0IθBk胗u&} kwV&,1<{80ܾPkjۯ?הnU֟G5<Ю,f". EKNh9A~+R8 m9fV/qݪ9w0~ M= #L=u&ι\i042d@V K9{`8CJNr=[&`17.ć4ʱ6 X;x>+_DXoZ {h֝^|Xi;.FSvylސ 㳧Ϙ0Y꟰ܿ\bMgF` ނݼ xX//Nuk0)26 ǕF.i+vi.4oüb)~A5l=\qe yM;`Dն4lu T>5%`Rt %/c9և2n^ vo}QʄJlEO{1>h: 1I~C;b䬼w{BOCg$﨑mB9_da̻~zjJ |syUN #uO0nQPa+dL-.<&ma*= yr%#s-0>ɬ䎵U{A|a֋0]̓B3`c$0L>% yo v/uGg#;F>X܂ }+`|0H+d#,F^S #X|Q2c`ݍ6^Ikrr%[/8jKK6YƁp|;1L5 ؟L1XPxp,ka$ie8h!恩W7p4`OH@o̹x}MC 2.|1hh G,7Va䚱' [r3O0nq͚4atr.l }U p |v0S#;[1`i-/-+'k`9d?7 6d,QΓ!-̯Jh-Ja-ՀC ,L<01Z w%XmYomaim|鉼FMr`>X9PFFC0]ؼ n=[.0e;XzY׭m'%N/gP;g s_FLvlMBN*`ik#mX\OZo澌A"*J}^v_.;o =GR/ bsqސivkc+2üڙCHY򂽬;%0v34R`xq=yɉz<ymw9#pzՉDd6Pf>D!a&E3;"jf i28a 3WI+(awwݼ,Oc'}1-T!G׷>J 5b;zGMihkd"Ns)'̔] mEk!,or:ΒA Mgfc~{E$ Fj젚m4s OZHvr^ؔJ}ۊE+9ffsx֙C>Q}y160smn&,%ZpEw;z LМe ZXRDKt& >(` V6meUaw|7üJW{0py/:v7J]%s"1&.6wcO&jXyOB6]V ق4L]BMk{V\K=?r\B։*c5 7Ǟ}ز[u7|.u5k\Y5Ypݝ l>>9]:?_5,U>;;o*ppl(79g>lİ#Iu.><꿀I==Ͽ尚+|yk)|g`h^*mݻ(y \/]j09\S;8Eaxwu룖/u)LzlvI;`"~Ȫ.t,8yj/607g،o Op^`b/sgI=~5*_'mV6c}j'3uM)U'j&9gJ ˳ qE3Y6X1ՏE kd;J^XpLCdXqD%$ 浗Mcp~.\Idl*XׯTԇ})_Lay)s IIM| ֲ`)| #,>=[loak*glk7j]X~HZ9rgJͦNiԾ͡MEJ# s U_q+&m K¬$Ewi|V@~([FEAi1VlW J|8sVz魄`O6j w{eG )Br!~\ IVG~`X$ވ{8֢_nS Y$gXGJo.^@`;R,)Ʒm$A8zM`s嗺p<I \ۃ5W`[ǺZnՐz6O? bZ"=s,zD{v>eUĝ[:j#zZ?KYV>E$nAT^o`e[y:?7 v%]8f 5:+NSBX'#Y|oF4^H[M=Cr6nxsJ@ޭ?'oƗ8aVSlxvra)_P7 vE;\ߤ <ЮI <Z/?x܆߶^lȩh#lQ8(0}uܕB懡=G}t5xZ-ᚧEñg١Gٸq2 s-Y!"ti8~kh =ܬ{i'"۝tcSI2Vx^Efb*T: ϾF*:z6[#|d{:kDtnat8:r.߿DU% !b>4C]M^,w> #\4ۖFx?¾x8 ^e7䈀O8zag ԯ5kaQuS,z [^c}0og`@ GN^jTr9 axx>x09+J:>G-H,T:{Vl NzAcsVμ}orcOXt崙]2S؊9ZZdzk? \a?T "0)qf@;wCzQ-Qn"Bk$8KXH8>=YiS87rU2s_NԊ,QKچnmw>yd_2|hTu${[zsg/ 6FmdN1>3_ uq%،gzhѱIqM+59{}Fg΃ `Um+prSH0̻54w{ a*՞{jlU$ StzOzS;UE/zdܵiJĥ5)M!+sQeAܵ/xp!|*$J#"5/1E6ݢaDC0'wA1/5=DtG*fQ1Ծ1]`E"d{;Fv.<Ǯǐd=7HHr2#&)DlA)d muNZr B]BD.m]rokD$ d60'="mŻ6kIśa\!"Z=%'jG| 8sqtvw"}ލދp?CF5 bUWZ@~RA׸{7A6<Ѩ ΧE. I,M^|zu6?#\Oǯ;S{]s{NO˝ɶ6'. GI"7 a/DmƟʹR%~v jQfP^ֿ/`Bsp1~Ԏ%| =ļew"X{Ez Q'˫&Ѭ*Х D3r\#r"k9&-3g7 &w"o= X/^C_8x#hfg'ЪeD7YEgF$OU~F"|2(Dg%P &/B$ߎzi\r3"@=_#4@d"aKlyCF <%D*?s&i ^6"{~Q‡.]2OT`Gpp!dOSiD{Nő6~D$7[`D"ΥRޤG+&݈R8cl_( "WS`Fv~'"]T:kpnS ]F.]W;:;]O]ܝ,\ZRk[}jC%QMmӺbXM|MKAR=^% 3v bbߚc߰u_sw7 Wti F8S.4!pN3!YC8x~iNV~Lן]XQ&:l}}9VI^)ku r~l~IB~Q^|_ʻK {y|>Lġ%0Q=fӤ@Di-Dir- ~Fǟ6N"bre?GZLvb5"יՍ {lL^IAd #0<3HQ&~~w$!<>!wx\͕|8ȋ*O dUxɅ&㬰pV N?qD0z"6_#?'+Cxx "LJr{}63nG8]$و&"ϤpvL1!g&;O:]f\S*•{G)Fm3`3|0h2Zp V3VmW\ 3jg8Zrl)KWqQ!ܷ<Qg,D/iH=qua5sBD6/!u:"`yᄎhGȜU  3D`"fs?o u]KD2Sq:\_pD|GMPyD*$mឋ\H2r"u7D_)C[mB$O8e9>6F6w|~c]1vдJWExtKgżFŤ޽tMJGx*8A ? Q^H4t(1F+wdE _]>7uY"z:&gJ)Axd7>F$3GN~ǧgO 3g)E=t|Il훯pGDN o5!JifVjDZ1Q?GOQVN+ \*)#eD&@jpg/{W*"b^l-8z."lf{fdEXPR x~(†|=v:]>ru~gyDpSDC[>emvcv Fĩ[+ĈނN};39JXFֿTA8m F<ԼM*"hh_\6qD>ATYeIN.{isQI'( |Ӟ>_U:ꊈ. ' UiЦIkd'-H^j IƠ2" P:|p2";^"-%kEkGBGiG;}BDC?'yVNÑE{"6?,uk@7!p;JQO}D>}Y4ZT"&R~"*5pDWojY`uG\ L!zÓJ~%DNx+O~[sGfR3ϭQ-^:ŏ-5#zW)/~!Om,?Hhg "2 ߅{y?TD#r BH0 JaB d7!%;up87.3)UDOLC ]ͯ e/rэM/D"2Gܑ,T{D|ս9XD$E[:oQy~sRFe ],rxҁyF~yFbʹ0@・9h_l "QX:nI: f"DWWcHv9  0"KFzPX^ h|n)g Q4:Ak%znG ]K-+)_pDǧ\}:"|7S㋪JQ;Dq!O( ETW$N0),+"WO7B⑌!Ԟ@,W?ҊCt5GL8{.g3+,eFkKc_J.5b4 IS"6HlMe+ʈeȹ^oTbyt-*a3t iy1D俉Ϳ/"ȠRDg/"؎ &UN8bN{Muh\{DXDU#II5 bhsx ~tb̉&_D符 F^ٝX ;f$ !_/";ӛNkFgbc "G8` O$d^"sK:zN1,^]z㖛R;8i  1\'8L㙈b(g9˛fHZ.|Ct}6]@y !lUF( R8`Ë[AfQ~[M'C,N*-f Q0C^w&"/?V*McC"UZD.y01gUEDb f]hH*1k"(h+#VsĄ` '*v̈:=ũ>")bE\V %~&K+{g v+ }o"'o? y8:uK OI9?DtG:˭i<}=bL`;~A$_Gŷ[*2 N2MG4b"?khʼUK 69&~ĔqmAl~6x'vDY(7Ƌf7# y>&xFx{rn^梸.1bYEL[b%Ej b{0jn7Gn8jQ9exs՛]nv6,jX<9wՇFf# o!Ne9Na:k6Dk_fb9R ( ;z ;M`dBb~5Z QIlIF=ͤ+ p?>Dy@^|x>wR7lv,"jc^5Ci2Dy~4CL^SS ^Ioq5Ō/9OT#Z7鍧rÜ7#&;"?+ 9y(} 1F3xP?gA4Oh6O0+ !fr1CEos\>%W>stY!V8I`"1;n#~=OP^JhfgA=E[Gݫԇ*Vfjyq<۔@ 8B#,nc87&Xt[!aS;Q,oxi+"?7fxD:K b<1pܦG4R"޶@6L!""WlD3uhGb}!}/%٬a|{eQ'E %:zǢIp1PO3E.>t@CS/8syӾƿoVʩd*qH o;D)w5RԱ 0kwӈ~Rk1" "yO$b4DDgPD"抄ݪF$bYstڍ%@D Xvo#><Q߈M;H"%DLcn:3=gIzңLGe=KEȰdb ^Uc88.hD"Fy&AgxSb͊kE=,t UϹ`$qqb{שN(@lKh!~\cK[ƷJQS ĆgDf'I75ms:z}rw1B<>h2 o+D_)>Bd:gIU}8*TRtXv' 7b:nⵕ8CBe]#:û =u7qb6WϤsXwf!sn Ոilxst$>mŜ>UZElaJG.#^)QbZ Ut#'D-㓛r*6G(hq1YrhDl;Os`R > _]9&#;qf#&=JWBDkOP1}BQ|9GMu ReX\[+""V2ȝCBGD6͝Ӄ U/Gl!x%s_S"ւijHX{WcmeۆJD yHU{Mm" =I*8og#F7B*a R*v e$ndUŇ8Tp.#?*Dib/OUH283 qt]Ebϩ MQ鐀Imޱ$bI\DZ #l9eoQbWHbĈ O:Sq'rzy`xd)#>G0ZD,t?>hp "x<}oHsqneV!~o1ǩSߜ>/Idf72y~D+q\@M6-с̃G?#,gND&eKq]My{q,; ~V\/\UgD4r!ǧ~ BtΧ< E7)=/" ;&܅WfƇĦt ;#Xے ջ>H̲֝qlO[Q�.}~$D$r: .݆8^R$.Ä+nih"a[S46.,>5>S##!i-t.\|G!bЪ"GBS/5q2a1d8b0#  %Ĺ9$JqHsqq#E=F.͇ !-GNs*o:ӿzx[s6፧J|)Ll>G4! hqr#OguC X'xsܼxS,ٽ5|čtU1~zX!r`e , E/0ę۬zm6T?AR#}QRRÏ+nŸldۈм}XovK 7\dt3.`z jibO 6U8^lۤi mP BHCh( H<85[~y˧!)g4O2wahP 1XY N;>$Hl#7 ) xRr\&X\@u'asCjC 3,qRGt‘XIJ뗫lEb8 Xhd G"~!.D幷H;\ըx^픎.D<% +ēCN]O. >YChrN{_1/+iLFlnJc[j7Y2ߜ?eG_~wq`M õ[A@O+9,a2?|˝s̈lO˳w#GF-܈qL4 ]x, B\/׼n!yM%r1.; ^8W1[f@]J᦭Z}Vv\\zJ7a{< 1'p>D/nL"Vq)' %zFi1\5{؄$88W ߐӫ W9ղ]2;#YCE$,}k-ՕdwZCq2]{ш$anʳh̃h:^@wcמּU$6GQU7ٰw(C5)#nO ]ĵ|"tcVus-L=8/N=. >f#GVquLR\VD9pd^ l5C݊)<ߴ=HK#Hyv~Gb=S=3RSFSL5G!h4!Yݼd<_w* Qm7"Ո#oӑ 9fܼ؇2μSXp E i1yJ͍v5vQu-Xpj=qϳ!AZ. oL 'W-\?)Hbr-)xdp$0?7IuBܦz*y.' Ƌ½流L b1gf(xh`ymdS8|JXE_Ź7 { 3o *`ϫDBJխx{u tЩG?~8F?YJ4~XT `ISt wdKH!o̟tE2nul/LiW>. xߖAӿgl^f͒);U9V_#~+nI Q!/MK(dk)'qzxFNFSe{ Y Ʈ)g{nd[y'j/=FM3ςAلjtY:LIxF6_n n4ҩT?o]D?H:F1.zol@JrLKS|Vߢ7!=JHng!cHľ* Z? ػ]U -/m[Q~ǃD uiNpgdXYR[@I 4/L,O.Xڦ%^Ɱ 9#}xGuo VFΪTZ^]O%܌!p癹kpLS_1ώ "z788Z ww.<4L':!Zxb|j $7˃g~,¡_s 'y:GJ-C+0OY϶ӈE0-Rw%Њ2ckU "xw"FFɿ|)dZu7Ld*::(ԾT Qx깈&H}35'~UBN|6ERNr@f8[XRF!C>3 ir!-ې#>QjxHXYNe/@=CH7?_FX2d)T {b\&d4eiف !}r&_~2UYK[w._?] s%{}JpFP걩[8 O,=UD!)bç 7|">>N3Ο~ˏ |n <%q9 eYȷ}CPlPy2EExһKg"g}dyyBv̗5?J] !wjOd[ ?7jݔ0*h BZtjE;lA4'gگ3 :6Jx{.pB}XOtA(Us\|9-IIO>Cqn>-p!/^@IBOUjYp*ܔ-d&3dPx/ -"r.}4~ Q ]c s盄O,Ly;Co BQe. $o1L<.>^}:ɪvB13s] 9{PL< 4ON *!??Y?zgǧ!F^do>Q(o[SSU"c_Eډ\zP"#^=\ .˲iprT,Bpe 8IIAZh)CQfIFL3(t'6h@ID~/خfB UW7OX.*C!6FA(z4{x܀Sn(w/]Նt[c(3qn9(XĹĘAly%%"HI}O\WX;|5C(;X9GMi[zP֗m|? PQ~(Φg6>ᶦҚ) (΋Hù^(X,9|"t/@1Ĩ>= W!zL;= Z6 :ι֯yrjG(W ^A6DN0H Nr삄˓gHR@#t!WbDoĺߥQ:7)^и iI[/R3CjѦMX !5ǵ,+pTB@:Jcˣs~X$myEJ6Wp?0Mny ʳ"ekq+ r.OY7>I}/y[*'ho1 Lslh+w_x ?~ГAoTY9¡26%P}fmI `P1F~hhw8X &RwZ^o^FPʗP">q[/nCo\=-P]E"?nAW2k+f{Ac3T3lTYkKjR.w5M7nɇlk# & D|ùe;[z*sF?~< d 5$OQbC']qRx1[oHe: pANbk:/NcJK~ $oz%*'cP`2wiΠϒ5Ux绋!/V Q'3\"$uSuw6Y긐]IiIKlH=w6ˆ9t!?&xu [q .Tx@rX8];MdAJ{Rk&$4-]N䡃aސhycS|c.!яg~4aO}f0x qzenD]P uS]M'o?kkY ԭ'6Kh|1-=PذV#CkDߋ >uj o&[!zGSԼ={:ßjA'MQh(~{RnŠ(%1sq3!PWcmw{K4<o&p쒂8g]"3nT0X03: |7=et#l*Ri-[P:&_W~kRtS4zmAwP-?tYȇ9S9Bj%ة7!7??_{_\"m|;d MF5 pvȸ~w>=-<4 rǩB!Shy"\du 9D??-@pmׁH< i Gġ :`"*IuHCߝ} ~.uk"G-?9";/RaTUg` H_MHr(]fv\Qx3r@QɧpH|uXי@ZUKhQZ;^Vh+ 碧M47erHi_pfȅ퇜 D](dj('ˡo|R#ԛǪnztZEw&]=h3J^1HMo 0[~ţ uO.8yt%SBZƉoaUrgjg֔û!꤀Y h7QRσjJR+ 7 xzߠѵ\ExQ '|x5?@qݓӾy_*%]/}!CTNƆx^Dne(k ܀Գ(56Ayn(~4T˾LR?y(p&$ZAa4I6dkz |AY !oO4i ׏^oSJ@]3*dz߻A:UL 2C_W@-@6 p]\ FoGr5R=~NC:6k9h} k}b+'\i D2Ngz0M+69#R݋eJT2!r 22]DGmoVhOH iaCzޣ봔)UEhnʓ$CQT3ͅ h&_-l}R x7AДו x;F|Zu]~bb{tGWf@SV;ٓ A~% .Ʉf~~ǙIhmtBzx(=2Ȝw jh j]7oLm+t.#$J = CNfЖ%bY `7/I9emgDL8!%,h(fy@/@D#BM/g6~ hip"ĵ# W r|lȽ e킔+ΐ'a>2ʱ \[qpNJԋDHXF-B~LH(fmAu=X5R']M?|bȍE}mHUdk"kA%?MEDfy#|Til32Cx>U:\Y=rێ;OUș=oyD*\dngyDy~ )Kb-h$E ȷUup}}G:ߖFF /?)s{:3-GC>-p$i_mzCl%t'gAA>_j$=tMҬFܟ319|vVk]J+Ydwk/WlqniP-蜢—xȯΕ1ס噫O$PCG` Bdw>Csx4>ǀ -H<,r{pug4I>Yb'mpxfebǯ9i2lXK~1>E]h(. Cߝi#?Q g gw_L G" LguBC_ pbۅm #m,SѨ. {tt~Py$).īC9wϐL o*s$4 Q ͍|CkX[@,}K27=A^]dZ*B Ю7A0<(`<`iRlMa їQJ5#07ΫeG+8;SbƓy>j.oQ[?bBt[ߟRt J3Su!_F ˣ"Dʘ1"i'Uˠ'סЙ.(ZA_␆_"g'}z4*n$Qf꾬0ў"BKj&Hͅ7()(<-Z䅶'^D95xڢW\tVOZ} GU^g{Tœ= y~I[Am}ry 8Acn1ԋOh|krj=ןAǑk͐4} e?zH3UX8,E e$񐼺@nug YS@;ORWZ;#%P T:èBy"̇RxH㋌P^̀ј݊ T6K$?#2T'TIRp7c0&3ю~j3($w'L}qj, aRrA%{T8l{woI8oea?ixAL-%"@S"Svяy蕷Vw`0g{g\p-=8 j__6(I8i`]Ё;.\;awaԻ^QjQz`5{T>Bv/c:zxPPC1GO~tuo5{7:w~"&U`Kg}w,A5_>} x&۠T5zדjE}ͼ#-[z SdE]ptV)@U6}-1 : Fܛx^:ա"+SJ-)Ay_-h>J d)dV)Цzpr Xhmӽ!/.Wj7s`KO 9/=ְp$?;Fl{R`>nXfLsL.0-9xsA,3';^cgeX0[|բj`*4j.4mkwy[,a#?S捔_/\iVU2 *QdL<jD!o0=:Ӵ0O8 ,T5`Cv9:0gV&#_T[ 10Γ)1S84NzT W~cᗷ׀aN&woJsr- ݩ&揇L)%/Z>1?N!DWU1,l>PJs8FM9FP;sی2t]5TvJ g^\2ܙ3wкT֣+JsP4])4YָJwT~^lBOjc{%P%-ʼnu?hf˅Kd"S?X}ez2 eL+R{~1y-XЯVc5#gaٷ=u/4g)&˿2%yhF%Er,)>PYGh)J+M@aXh1lYXj`LJO Kyӟ vDE)3\;ᦡCߨ2ϼ[Hhv=4~dZ÷ٷ%ZuF3 /K>AO\dBQCWO5(pmNV?f|mu@fn)1 A&("A>J;X@K@ړ+ЌLLxk ֿ |)" +k,fh.ܑ_w)^8,+4@ջ_Qc/Isfx$4T$u`~8˝إ§]tGbI]O߈Z gYD9ٿB;'f*QBY)NU:tϚ& ڎ\j3[^: s.Bw_yXf݀TZ(YS@gO]Xx9AOjU?V}o@7KvqAfm Czm "L p!9kK~g<VRC|c,?O+"1crNKhX5 \eDi1,?e0C;v(9٪U Q7s`;˂/#>{Y T%yXU n ۰b1Rԗ;sYw6abO7s@Wە X23|YdqXЮx,,gކVA9e!6d;𶍋a.{M0䲷*txx܁JW u>{ț[ܷvG. v$N߄&ٌf 3.FNf;*]>Z?mgC~N{ B?v`qF-s%oi __ī=$''S cޛOa^u:+pvpfszE暈P?PyP@n, Q|z26Lؤ̱fjخ%MVU,t>,\=em@)|8qOg^<֙ws*У}w,q$^^y&X9vnq7 ?#^'+Pj'~WW˱[%m2T^S.oЙwM),]I`kLU#X^%0[MYn!,/&G`|Q;kһaAd'h`!rvloeًiah?ly?cۅ/tcPW 3gkӡ=/)qƆA ?._아!VhEw쒜RB'Ń=Aa6h^g χ=_V7}}`rnD D5j>eذ\g"-<E:ϸab52@;ǶYa'.v|ޖvYUAcD&$'d]\,#lmt>SVJp篷MqܟXN`]B|?ccHpvǾGw2~n?8l~7 \ArA!=ez}T eaSF' ns|yolFἜ3VʂvG$aM7eXظ!O U|RDXL! F\"n+~2X'm`z`!z N?vNʓbD=q{ԺO@_d WJZ>Alک912[c;2'vIs9߀UQOoWj.; OF@}OCWAJ6x}]B= AqkFjxp@{G`g;G ^n0Z-;gÂ`z}nh}uF]m'WOWHrwA{=7gv*sqfN%rk" wL0skoٟl͹0ޖ Dž#)0rKUU.\ -_/)JG$-2.};Tvx>u ۆ arnvw8uԄcy~ $WC-}8H%a>ucW yv&]tUa A)&r2Y\ݻfpK6~ ;AMqr;s^Iy2lPoz 0!A&+ma8Ig+زrE1QTjal=65@n(lqeb Z >iEsXcD}XmŬxOU :R|kM+6a39u،GSRs+HNf㷕;LɩKqm!(=0X[v CfHǒ-L3%jlh+!̲ >7;,F-yH^d_-vpt)Kʗ`>UjWVU+d0]j];`ZaSE6 `C,< {cacï-l[&7;n?.<ɟ7MGo&?dc FSv7ac?xi&ކu(pSW Z Lzy,êDxfFt5L԰Lـᇻf`~&: d\1%;cW8e>R'ݟ:BX=N0b\-YZ‰>n+%,i=i-F%!o{,ǚ8~{\c=܎~Y /,5,kF&?+ /`K \ L >Mޡ0 .#OE>!x${Η%)a)7~%NW4F4P.撁-aBy:.i xpd~zOS(R?_\),DNfe۾Iv MX_ gև!X[ܷˀ]:bg/uDdO4K?PV8+m*==p >ۥpdX}.is?(X1 ,770p9 G]M0W=vaTlfga~A/HdS9yT~8H`M{e؛U ~8UvJYwr;,jpQ2Bϋ|`K!'"mai]cHiN;䋹>6"\ ę6X8n'unOQvvCp.ppؽzpm hKgDvbxp%6.fOW:FuZp(=>qٞoHli~ i_+zwMdܣv~ ]!5Cs6v%_1MȎ]O0QXu=Hۏ3LX;u '}+fka.XŶ5•o2XudVȍ氲+ CˇV`Cs }NՂE'"n7Z k>/Sy/Gݚrj`xs\i&,ݪ}mQʮ=`%F ||gg;X~P .`7N>-g3 ?tyui8s~Gh?/u2,\:S~u0+Uhby$]z,8t]t,fjYf"s0,l ' Opx1?:ܼF.5kfe6xҎ~ Gw{çcp;ps1~j_ Uuؕϱ?b\- B&x͔N ~斂$ݱ6@J+s{.נz<a}1I(YpҌϰz,9uhY@ǟ5C:TYhqYcXGīpm@uX (k(!uX\IZ3_n%]ݫ {;:`tP)T$<+gw}l,_#Ϡ1ۉX$ C`))[m7x-"# %Lz?K?Pon\_j ]xn6Z[)+J Ox] *9p_ kݬlz^[mSswxohIԉ\&³j;npPs1X9OsEa?' sn+epH ibaoE:b}p~"rs"1l /g&P<2~^V5Wp7Duv5O3czn<ܐgwy͐8 )AT| Lþ2A3<%~:zަ!5KƑJ/O۪~aBس]y"O_fxJA7<=]`gsLlXea6G <>_^$m]?=iqyK+`&gC20ݹO\.M6Kg;^_lUueoQyP? %3^zNq bltv zMqF/REA8Nǫmzt|RVU8_mNiV^k }^G.KqENU^UFr?s^1m5#ݞwg%%rS߱BxY; 'yJxv2/ev.H+M$dǑp82Rk ~PE8/ ~ f[ǥ}Tx1/Yg !>)h;ISO;5N%v voyտsý{ZثߴMN8hU1sv$th{x(Zvܢ` vNV7s8/i،~\\7f=a#2..eUstj~R'v\\w3\oȄ'RXaW\1a&|wySp}F>C+pɾrnM>_-], -f_|}W}ó1+fcpO|bl>z<r_z/4+|^gMuC7Vgz~oQ6uo;|:'BGvN[Wy["?p7FǼ =; Ox;'.a<}EjC19:E]F 0ؔ'%Ǘ%s:n&"7ïcbou}vۛ$6Y‡R/-RN| v]-tWmEOSM[ T= ׇ=4w1U3;i ?n̝ oSsfp-_L9EI oJvo68͙]z_YF98Bv8 ^OY4Un/)"yO:LzK!,\JK+e[慕?kǗ\#8Q=kFӞe+ ߗY k+7bux')j9v\$]:^5>Bum/ҭKc4ʡ'ݎ޳G2bc7y$$//?x%dMsW,nwwkNtG]b{GH(m0}>Fe!(Q=}?~8:̜_Zv1xŏZхomK#b .k/E0KQx7,:qr"HCF)b;Ox^Ɨ&H_1#Ʀ.cpFCR{?D /./hy cnI9eF;tn&7Nxx=+c?zڊ Z(I ߃O<ĉS!gW><%O~h[!D{}1}wF0Y5\!Q_j8݇F—ʇMRҢUhU E>]vGػ·+g;iŐO {F x`E`[ ~cji p{\l68i/#z_|'qR"OݨMSWwEЗaO-Age;-+F|X@ܗy-F0fY63xG\ $G Ix0>;஫Q ~ w9ɧԇ-[/fM=˩}Ч$ ARBB]Oo$|; ^9ANQx퓈y/K>g-}?N$.P#P>x<5}d&r__ʿ,6xD!Rq" 3pWg dBĩg8Z{"x7ՅGa!,Ox}OBPjX_ۭY%G bޯ.:#7I6n}Rnj8ռ0KY[%ۭ7 ΒOYtFS 鮽})_j D6-בݨFPW W}|>oAm2?󺔢o2B٪_?[_Ɠ+!sYZDd85ߏ/׫M==,vx2aOyxXaeTȎdOՎG(&=7pO޻;_oaly'WיB#SB>OW/~1fݡb;긷$>T{oG $ ޴c4РG&1">werMD- ?4%"zR3bO?)A, `uryP c/j»uGJ]+g)O'^$#-xG0^h*GpI;g^~D<:5>BI >g Xi-q>LF;EOcK/p}/Qks_G exYOׯC!Ohɮ|U{}Ju-*av\ v#R ͟3:w"ۙ ǧ^F?6+Q' Cv$w~ӷ;ڲH"\SCqsh DǕ5a/);ƫ|!jcrGES |D{OP^a;>eE@˱_iuOZ_DYlW (!Br8@ G.5@]-ĺַA;) ZΕׯ| 싺)%jkoEI[8ذjhB։za?cNg "{la_6n哱J7Y~=rK,Ÿ4\%.|>ysSniLnX·o&뺺Nc/b\y*~nW t?|?=jߖ6O9jLB I/q?#oFsj۟PG-|GtG#{b?N^0mDԷDDf%~5V f2(X)Anu"ț lHN N?B^OoP.$P?,@t®1tUn#H[}3r Aa: @'[VglLuR _3B:U@,Z574 H ŏLj}:$)n5Խ:Zy3%1_!8 xk "ffĚ%IVJDŌS>}&@ q_׊QNW# Wq;h}@dU~;]u;"yXAk?"|x N/x4E 밮B@bs_|#"D)Qē1;g!x#Pї(<#xsQJ4{v<C|Tq\{ئq2#gu]DQ9؀Zn dAHV"MO!Js|L/vF^EST-Dua##Ȯ$!̤幆kR@C*QCϯᔦC)>. +ݕodÄS[GׯQ ,M"Qێϻ-W(A$&.;Qhі,)G,AH٦8Wsz \'4!Dz \ag17E>!䎒)"Hޝȉ49;N ө "6͹ a;?!<|}(msYܽJQB? ǻ̵Hei2?`n DY+ ļ"J[B$ .#8 _w_Gd`g4=q#3SFO33WSgK`MˆɑhZV -7Jh/ zяWuG]0XBqP >s) )DѯeD9#NWm3v\)o^s} gV>!!9tyD;gg*z"V|m~NDXP6FlewU")mNI#:(h/AD u1Z=D7S7pEΖ}$_Й_3}HXOf߅ ᭚ò+gCN{x{c4=؟$㝈<^ۥz'%ĶU#+.R%_k~ }tsڈjgRT!f=]Jll{ OA Ŋ?SV$\-2-2Bo7n.%}A,Sq b}m!v'md;S# c{Vz=`DK4Я!:X(ID]Ғ{ڜDm7$ǣN"*R֎HbMOԥM)ΊaWT7CD_'U4{m;reb:sVuƼ⛆i)S%C s1t^8b;wG?GUx6[8|:~iU[H:D2t7x8ͷ ‡()ҽMYˆ+R뿛' CdhI>x!bkL["9}ԴqI;j+-.-}J{v!Lb4{qN~8ah#_#}Z(wiP"ˣB8d ڃjz"ToaeCR[?ݱt&:ĸ^\~Nցl1]!&!gsDv(b'ڋS 8kLJKoJf0 R̽Rn\ qwrlvqKd.J+mዄ'.O#P F)#s yx+GľIr!fbAO3ب8#Dri[IvgG/!oa $S٤EqHԳ4IVu^ ߑ\'F+xlDS74qfԮmOI#ǟ QA2q-$q 7=u_B2mES^$6lt,"Dҵ:#D kP+#tM)nQ3 !ѱs$9j8ws҈=Mmů6"'u D6fJ#oi&~7.d8\)j،RLWۚ#dC5ЏX*'C q^q^θ : 9"XHaǺ=o A"GlGk:&↺SBCgNYp"aNfF>iyJ8JύᧉPP[#j!.8GJ!PEԉ¡qipa È_j:>HX@-o =y6&Tcv̙~"[h}$Ѿ|r̖ CaC|Pıs!9NIJ[WTEDى"$,6BC@ҐeN%b&NB©\v{w g:zJ5 T {o Gbq5$6b;݉X'>FB#{}MJ4 s,ZɈɛ6 ~=U{)/)w!jɦbY:(.!I35 )ZCf+e~D6]"s#lr[Ll i{0kW&'vOC2ٵ1AcubCg*3d*#(^DFHe]GjnHTqHL/>/fE̻(wA{\j 1ASJeE#HOwDfЖLJDCND?7>CףfOӐn`uRR!v9?.q9qgs DON!nSk,&|PUɖƐDP!j^- Z-*A_;gMyX_Lcg.>2sCۮR#H0zowA$o?wGbf~7lrxӞНOH感wD])8qWuAYg$5jUZ ?*ICPDԏSPޡ"b'}R{^3~T n|}1KGt79Ѐo̯"2Œi۳wy!8~qaDLz)59IOC+?w MDiW a~d$z)sFH̀Lڐ1S=(wM4G<쩹wCmq7IR?sҙ7InUvV7Gjx[RlzT-L9hpW=͇2D#H~Yiy=~D[G}$->**,=ouA{w".8/$n%$Ɖ"SF^*HNm!Unf<~?k#N H&nH!LrTһ8ٕO%!yaѴjȰZ{{a f*J_r,ʜvql^ BK36(q1wmHy0eҦҧ iђ8;7 IKK1H ץE҂=Sg 1e'pB !3'otH?8:*aʖMFBk'$HwyFh;CF&k@8]Q1O{o*?6߿w9COq(b{b|b-bC|88}|=c9=|89cC}98u|B=o;Epi/data/st2alb.rda0000644000176200001440000001461713776604621013604 0ustar liggesusersTۇM{ŊQT X_%FQ jP@EX`WbF3[ivM(D oòfٙr{}XsRM8#S`Da8Θ0Θ3GvWrqw%qf i#he=i#md/VO:i#I=MOv70de`J'=l`ё}d?#INIII930%`NGJ !VJΡT8)1,ܷ9RWJ Q):Gsӓos #%UVJϱ|8I~V)ѓRr<#I+%:RZ}N d`Jt$iۜi%I)> L20%Z):9R'U$NGT9=Id`JΟ8S'g`VJt԰H~8IzRjXzJ K/[IzKO&/YuzszV+J̪s:'mKGJdf::R'3O_N+m L/#z2ӰI[)ѓzR'3 K?Π8|Q<Z02sW_owuhHb㧃Y"ĹgۙHyMR^٦w$-:tbNcqjK.'f7:_Cַ.R% rIƕ ߵSy·unя7m>DҢ%[;xll$wo7$ ]/h=ԋ/'}/mIa^#i އ:Yqe$+o%wOHr[%ռqv%&$Dٚ$릞b 2 ʗW?E Y{bN[J}xW$,|j ZOGrs59|1J%]k{\Qre$pW)ZC6E¯m~?6 eIiRvO 2>ҮHgŬL(q%$=c3&v9 d^{>':JokZ4 *[m$'7IjDi}O): ΖSʰtq$xj >껍<6x6$ש PEDBH㞈R8ZUP0i[]H0Ey&R9,xB(O)̍ j@`++ )lE*!K)Nt)^j 8%yᡏדhzf;1#|5H8t$^^jB~7_'֛b.iDea7#am6kIwYH196w霜'CVMoBrOH2?$%!gͭMHZc Vq$\. {~ ܭC9KR~(ab1]mhsI *vI:%y^^g~U$5"; ^:A 'z=%mЪ4sH,Ig/49z}V_f4%ŭm顅7I>0oN?bIiI݁kHyx(He$/swҒ"R.s~ ިk.Iݚ$1r w} wvb#&+IXu!EkuPb'wx%}Ze4)x#~} Ǖr[]"RP"i!%3Tr%ttydρKIIy]^_p}Hƒcc>9ZZmR5h$]ux 1ɽeQԋ5R^X'-\< G(!b޹EH8:a<-1'ס1?|Ib҆Q(-,ljazyحfޓ|6RR5tjFWFw3΂n-HT?5xg{*:YߜĠA$|~v5hF.݊3Kq,VLi^Ր$3qUb/ϠfjJ^IAz#)ֿMdL\lOB®ԤSS["b|vXHr&חڭ^?']E[ѩgO 1Y4) 15)0>[q3n%#x8sRu:݉&H ִxR>ң6 (VIiC(i]ӃH :gFy)X}TD\o-q7Ju8 9bBI!俍?h͢9ygQ5='.D렝X7=}?{<4 I_w-qMG29WGĦKI}Gԕy^q>T流sε&aՋuw>bR ;ҷuN>N{E$_X$7+Rj'Yd} sy~x0ݯc_-w?:KiMQ2x`=.GhS0 \|Ǎ}OW[ !!iY,χc֓"ci_)ŧs`uJqx_{גf$r=Y+ݼkR{c|T o*3Ǻds$lje)M,(vʛzGd%OI>Y8ޣ+`j_yyw4\ BlaCLue"F$pf^SRXXT_o/W=iJԡ~ } {NyIb%y'8\Zк8lhJ2GKI1Vh{{#1k ސHXcxTۏ:#eURzV I`?|>?C{s}A✵zûOknuۣ뒓ӱf ':zo%)]2R0Mū2|nyXo>W~h3^=#Ⱥ͒;UP+PVuߒHjkgD3vIº 盼N?瑙}B7;JG$_04f֒rR%vl_d-$mΪvP'_ux:r٤rnP-:vw+ŏu Ke&ӌa<5ez [>VnPm6xA}J=7i>b$e>|_A`= V-e;28EשD}{)uC4m| g.]lwdz|UCcԍ\l{mEn |͜}9nc*0>E;%>~^wsb*V2#rڅ5դm8o֐bs&WYg*Xe$̗{:iK_`1o6ݪ?G/ D=:591bJ{|3Fۀ[/xz3)}\`ݮg5B+6WL'y ~#m(e}P/Ja8; ;..*# -CH %(䡵I8#+wgĺp~SIeʙoI}kKyɣ[\i>Oytl8;@]]G+|줔 +GݶԨ;^>߶{_ wu]WOCY}ޗm8ў۪Hk;/}ث;7m^u[vuתƙunuW۾e gWWј>{ƕܷ5OhP0j l7-~<8hQ_9e6l9`4-њ 5_-`v8z>дF7 )hM hZ[ mд3Mw@Ӟ hڑ;MqW9hZ{5V\MV6iմjZ\5U.` 4mLMpiԴ0j56AM op4M;KViqҴ!iZ4;MEN 74?k~הƚQgY`6o y`>  B ,K2H@$X*`-@,F āxl~{>G@8 8 _ gYpEp \R Ȁ(T2p\ p7}<A&x, </K ^o<"P J@)(>q^ev? ^384 N384 N384 N3+fpifpifpi- >33 >33 >33 >3@7fpi kfkfp N384 N38Fx5 ^3x5ll< n36 ^3x5 ^3x5 N384 N384 >33 >y>33 >33 >33 >3"if+fkfkfkfkfkfkfkfkfkfkfpi ^3x5 ^3x5 N384 N384 N384 N384Kkfkfpifpifp=kfkfkfpiMs N384 N384 N384 N384Rix<5yxk^<5k^<5yxk1<6ym5yo~<6ymnp<5<5yxk^<5y8iNp<4y8iN(jzzw Fe?16Epi/data/hivDK.rda0000644000176200001440000000420612531361106013375 0ustar liggesusersBZh91AY&SYۄ \TUu{}P@FPBH@BD@@@A }`0zݾVpcXfJ'R6QMC!#z h6dH{TPjIiM44I R3Db24`L4@FLdɀ&4h!$ ?RM=)@H2>rK6mm5o88UUUcUUUUUUUUUUUUUUUcl͇Rvl7fffffֵdqqZfffffffffffffffffmkZֵc-f1cò֓c.ý~v9Xr͟4M2""""""""""Q4EŊ텱V 2~-~wXfJZ;Tu֍ESe32m ֛%ŻJ-u2R)Z5ZjjM \˽;iwz4bbR͆wp4jsXn(OXOu}VIxf౳SõD&;l6>׃GE2!dj#$&&a%Y\r'}I84`Q0IiW+,ѕ*cbIK!@й&n &b` 4T$dЎieL+mt 1:k~<5\,Yձaŏ&Xi`m<oDA$6r|u ,Eۯᗩ꽍u_ĈU} jUr- EגZUe}ܣJ".Jeߐ0 4?&Y70bn2J B}+ EQߨݖi#8o̅%7yQ[qLXXMa\vsO#y&V3+w'~'#wkdC71B,W(e0 dWIʿA)ggLKϸ 6l{@V OϜy=C"dwxs})H4 ,0"o|w'ײgA%Z-a{jfcu/rM A>enjH7sAu/zp .eyc÷|m6Qe೓ZQցmڞ"us'KsQ 4_'<^$ʗlj]㍽r<#0n wŠh>d>Ld@E_6x뽂H2'h5$@ u.Eu;?ee 6C >rtJT#ui1-^Ԟ裯2J![sžܺ[c%׬׺ETlnfٵzASl!Ͷa,T}d@;hqT]7qk^o 6d= M/5&bѭP+.Lg6})< zQ$vď]> ` z# 'oaɥKAɤ.˔:mQ0}T.V}пr ҋuZ~XZ!h*S\Y;f=}`N/Ւp ]JXvy@z/í:$ָ݀B$g | ?j?ÜfIsk1׊Z6'FF=A$>ƕ" T1 *3<+\]5չ #[+'W0bsBdp p4)u"\҉9y?Ȱ+ȠU=yW ^,IZ< Q\rQbG7[2~n1ַxaf{vUH_A5=BQ1D#c~EOzQE^y{}0T0z|*L! wLAٵץ廷fɱ2m~XHM$L3FSmf>Ձw@BI6!A$4k7ԢBf< t\g? feLG(u#4"x*vx5c0䊢d!MĮUJ]OPVڲQ"aΤ\[Zec:iT}6B زq|ZkqTO7>fK\ֵ{bPLV&U%z@41 IH_"% 𙫺 O"rC,^D&ۏR+DLJp)A_Dmm>\taJ{:30~$$(dn_b޸9 2|;ȟSVFlg%y|{%(^JtT:wGmTmx(;`~^ PF~f~H|3qiN*OGP kjY[Z'+ dG!M].>6 qP !rc}s̆[z>;Act YؚM`>"}j =قJ"8DbjQr!]2+apqଷw*K#/U"u]dB% Yj,VbִJZoZ -ȟK.\uwHvGu2%Y j L>Twբ:a]5M­ZpiP( @qQ8 FOGX/ަgP])z3x_:kF+<멘喇o]+|f׈%s+_A>~yEFGmQZ <PzÂ*eGAi Ͷy'I5 Wt$))ކo-z4Z1=biV*v&1ޓGB }O,%RC0go4-Dd.K:IM fke&4V>CO1w b7c5eD*ٗNfjg> ]pR껾1 bR{9a@0OA F0U_{IE5 62)6Za|>^Hiqxt4,bKOtA/" Zl腋3٭ٷV9\B;T_L,c*ۙ_sutf:q_G=`k #e %BB٦+ʍ`z|EM9fMT:*y=:~70+&F["T(P#1[+wy6º{VqHK%bq }#`F9<%I"!~\ y{+$^뭯opUDK,jSD @HoKq̆Oe56$}'DA݋~r2>fF'sv ų;ke/3Ȭ6 $`Nƹ;֪5É$2[~ пV.^?Ą.LHD U̘cmqi@ g6:.S`kG ujgւ^7rʝC`17|GnQbFcZ'`GHU%_u(S@#C0/HPN 6y@|uX5n Йαl\G Qp;_x ~@ eaP$N`8핇%WVbq8޲;n] # JUYVsYDu)I;:J * J@K CMK: '9ߚ9\Rb8%u|ˑqYbuE?Ӂ֦J \$3TA{?8enk P6Nr!:ZsZ*iVM)Pdj0h(z/\4@veTJxݏ.֑E>~Sh k ÿ3^T#jTw9J<'!VC{SsWFGi۠9sFU3^kS[ :H׉Ljм){ڽ0jy &埄?Lo:UgTړzUh"Z gG/S5D5;fXj|Q]Ђf4d76՜]fɦ&VwrUHgHSpZ ^3֎ӊ:G3T3-Mmq`s%q=Z[澦Ep 6B!r!融7l[aIQƯ)@fvtpD'Jx&;pkl'Si,)0 R24:Q1 Ɲ9e5/_~SkMn*tg kym1⸺q8=^S*mTi!#H㴾OؤlT〬cI7nqv}wrmiٲi)^ƴ J=1 ,ٷTRAtZ" $=`ŭ{My$c9ݖVҁ#h,qT̤>\wyf?ghċp WSݔ](Zh܌@Ň\;w̜J}˴Vh}7\r 6f狗լ^eAN0. gfJ0:;MH"EVyqG[nhʹV׊7( w|VU6k4K*[& r>xdsQ?0Jܝ?#폲*wJidfk* (Y?o`I9jq,`BP)]ibb]ލ_E9bmɾܼQ AӘY8GU]`<+/|Af?+ Kql:q-5qr'l~]=VPgL)!oZjy{">IU94{Aex4A,0↋bpH##阢#΢aE,5KGpO͸=0}_46fd^nϹ.ښ*#5V:yt=?K~[k?l6J n6y"&4 AR4b.bV5<pə@;5a]kh)3ش[Qu{ڇZDejByԫXyFz&:+Dz afo,.Kè͜"_Diy(MA? }j53yA·599whZ4\E,q휧,L~iN|, ;ϑ5S)#G!MzM K ğ^)׉!d|Jv|8=6R Ɇ{Gs=)/3ؔ;X6FF'upȶ3]WRHA +$a>gFVf\G8-:xkXcI(PDDEaW&r"&EaK"-+3V>Mb9 "4Dȃ;xiiG4oJ wW?;hrTsVzbeЙe{S!TJ;q:ҜڥŖN$Hzrx֧U%Q5^Ȱ&z?@VE+mPk ͭ͆}ñN@]Jٯv~!_U@DV0;L|N٢ #gf&0YFf;l~`e͊hmZ̉$)Fk\4QRdM_r' {Tz!kiQm(n+j0ܑ`,q^/UxKS'.Q'qZv}@_R -&?ikLh_TR_7YBI$[j-xv8I m&b n5~x@c@ۜQ8J"?0cOgR1wF-7QS`VUYyѮ!&z=Ň#4aWÿɉ}r[^+F6¤սmRE|+2isR垦*([Sx}^>DVKٕ>Ajj2ǩ Hט&«N(m1`EIbBECs Ȃ՘ozuVk4w&('~45GrE>W˵;- o7:%%US1 znAcftkh(XJ2e~aT-ӷꎙhg^f^;qP2߶^p8 -6rHBU_NGF!`(m\ ɀm(闧~+% \6>wx[FWkO`ez"KlO>a/WiVEQBK|9RpcH_&bu.c|:G].7Qm͈x'-F%>D>»X0^]Nм>꽥x(PP6z)|jꆠoLq VZ: CeΊbpa,}6lgIݠ(*f7觪OO&S{jY"][wXj29<_An;j I^Sfgkb[͖p|ԲڟOJl-:5׷^ڧ׸3Pܢ$`{[7 dWV(_Ge _x-km wy4G}$3Bts_tϰQH)6%hOz`ݮ5{v=5;=07.u{A~*%V%LoWiG;qAI/S`Y<ھv }`T@"H澑aU ˶r&hVqeDd [ 吊,;:oL]cԖdķãP×`C9YtR|?&<ހ_cf!`_ʊx'{ϛ.u0 8Cm|v!SF(6ҚU-۱>8auVhA#egY+OZ/kbZ0˫.=٪K}{l7;CވcqGt/BfhRDj8^βEac9r&4NC'*ڌInaC1E.?*1 "%P7>CqrЫvwrz~|,;3cЮ|R`1 AnIYL]}= 0Ű.Ș2x$ v תC3%1|Q+‰n :2ʅRa.l͘亶T5x t! 0Ћw8s<ҹrB@l[\ cDlQ~f-!&F@h,a|3+C0R? d7)*}*XVN]krgH /g/ghmS739@ֽ8ˑ=ᙗScm+g:$B'7/4#b'7(."d5^Ĵ lr9?ȁelo㴱-3qI[\ ڧb wP>qq4i%EP]oN:'AxZ7~X݇ԌPa0&&d81Yֻ_!֥Rc07X~U-m9W^}ಈ&⏍4=޲(+: ߊs&=Quax~ WW |L ;cbUdR_9PuwT+E`{\ΤR~Zn loNxQӥ/^OӜ_=d=$7r[: ^$xosNF8B|PogoK`d -~ޏ+u DCO[e:^-)1Yֹ먬t!Hf˰Fu#ժre1Du\u*y͙E.W:qc,6*l?c.,¬+Fv߰QFY MNx,")҅aQ\hŐo!/}AgEQzćRَ';mSDwH[[wS0:nsr9$Ǽswx_$uGӗdp5D1X֙ƅ38,ٜ1gUgJ{tVo Tj%dLTXEMS>:ϭir5ayCAv a-GEԥ=+[@IF2 'Ќ<#ƈx ؛ƝNhK[}sH`c'?t_a`A&`gI?J9RtM(RdFB5&#n vKtCo91sZ5II>u*s\& 8e9y9OrR>{b~oUqo&~ H-wvpE,h˚mXҙ䇓!rdWsB}^Kss+MpIȩӜ K:9${TdC8؅[pӣPչГ]!eorO¼zI6lju6-#ay01+/'\Gvy^Æ% 3 3qZ]E\GcB0U2 ߳k9hV^0`i}̵ Cipy?>qKF`D(Ky9W۠\ڕhY|!+ ?ATAԼTf? )MRHyN~WȜ #y:gZT\.W,A`qO.Oqj`c>-(kw 1P\ȢQTix2m4Tsd|6-v=6k4[j) 3bl7+<+354:-TзűrǛd@BR ^Zj ~3ni&\u~ :Mf e\M# nt@1wK&z%o]Y=^W x-.9u٫]M72B8ymn_묎4D%Zy`[##;AS}5-[K0kmZyqdČ GĘ@E u\[jaåǨ/.ԿõcP% )3Ros0K'u ac4ʭc=rߺ,q`uR=V;s9N8!X[ 0r xPExCIh,cJڻ~/6D@4W㋓sXeh}ôi,=$:JA+*R# * zކXJwOeiy$:L۵H@Qt6SY(D2/F~wG/ U]'oߌۺ$Gy_yכ1_?Sϙ: kꃑѴ(367{#I,_5g\[1"'m;Iڗ #&;nos}#i `Mܰ3c5:سV|r]Y-R O3Hc+_oau0R&b80paS*Ke#ۏD%!y(UoN )Ƿ.-*!x+_Q$Dف$SHb[cSTcxO:T&WDycnQ'RXiJ6o7g]|Ec̟v5H'|먗ASrvC~J9NPp}*>0 YZEpi/data/N.dk.rda0000644000176200001440000006730512531361106013173 0ustar liggesusersg]U?QuW ,D@,ZPpM BM(CBBBr&L)Z{k! :.6Ouvx3G|i~00^10܏x_A0@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@:Ёt@sr]}=s$`_ 9|Sߒ÷p9/r'r~ r~$a!,~l ,~| ,~b ,~r ,~j ,~z ,~f ,~v ,~n ,~~ ,?b0b8b4b%` |F  p'pπ p' 0NK 0`W 0`; 0N 0`7 0`;o 0`wg 0`; 0`w0`~(` , 0`; 0`w?0`~!` 0`~5` <$` F 8+` <*` n À p'pv xr {n?QS|ݲ@cջ#E'8ɋվ0[zOT~֐Dq>q~v<_ <qBiڹMc?өO9#w?ǩA} ܣjמvTz7k~V[BqS?_MߠJMշ_n^~I5~|[3Ew#:>8KY3(6~ !:uG\ ُVLq s_1,ѵW[ AX^UɇEP狮~|Jc 6jˡwSD/Tk7!{nT8zڭ=|~ WuRǠ|]Oyŗ^RB]κu %p»gyME5oex |H!+j|c}~2vԸ7wk0&Sz2ƾ}}:yaC|w?}\y^~֡*o s>r~FQ+"ޟD7?<NsYs ѭ]٪o?Wo纞v ˜'뻞u/繪g:ϿR} z79ߺf3-w'%}-au7ೕW}}/DŽ:OjA8+>WD_- ط@On?U_ \L}-olT?WL~կx~؅szpq?~Qm»z/.X5 c~0zlᅬ7 ^2Wxڐ9?(>MBEAW-^;KMjoIb Ow{b{.~V,zsoWdvw_V.R7 2OzD. 2Q4jWu<.q.b/PX25aj7Ɓώ_8˄c8s~ rķT{~DQv޿^W 7-,UbFyd/$\Xxpҷ'-}ޏv+] )>qcECx9|tڝx' 3$La/OӾ?JQ(_zA?ܯ]\ #?}t'oV S^_LH)ˌC?zC6 jyߏ>S'59N}B_'a>%W4_z 蟦6_>2/zo}WsZWv;:<վsI>oU+gyoޯ慔#Eq)F=u:|ʯR4DDoD:qƺ\'&Rֻ?ɾ/A9g&s <'Y߅<Gj@xNΣH/B3/zںߠӯ\1s*/835C_<@U(GUS P(qbM;㏋GZw;衷:[b3|CqPUa)rK'F,H4@^v~2 L󝋅w?pӄ΅̃^t3^a|ƿ ;?~SoV,<xQn[Cq%!z\ߠ?~ [{,z#ϟ]Tɢӧjm[R=[H/|ooY>}CORe?$qB/V=_x` E!g\y^؟1O&zj ~ejC=4oRӺC4K~|\/|7 vM%[UsXtK9'$lC;@#g=Oaڽrfiql"_V<МmͿўsTB"D3e[ {L7+пU$E?zME裚կc}N{Y e_DO?DŽՂpy2#==`T>ހhlկ]WV8ew {Jsp?*>`p ǼYB=^sMO3Q/1ip PưPבI/.L,w0(s@?/Cz+ ^Q4*7o$qtW zþ?Kt>Ah鮔cI~SӬ̃=R{3BO#i@x _s0< зou'<MC;w]󦧨ԅH彿kt.>$|ySc}>.|s@aEYOnn^y#+nָ͗BcГE;O5D>yᇭXrc =L ~{R =^Əة;/.{XI]k\F;L`jpozchQ?,}OEI53 ܘyUEbDoG?Sf[Ǔ1/zMy1&aG݆t_#˯B?*?kk|_X"Uș#xڏr"6&]e.;_M!U o@n9]BS=a9.(Ƽf琚vGS?u<)|Ă O4z#|MAU?zp,~_qQǫi]qoLwQZ_oOկOSB <?.^X[|AC?ѯB=ʯc?x O{b_x<;vR']:aOQ)KWK:u'I aov`oENA ?ͽ}$~s ?4 5W?5u!*4#)*3 R_~1Por ^)Z˼_ZSM4-&W<{kuRy`Ӊi^UV^?{w2fg۰u臚_T4M=Q5]|T}z3忩_%'oֶrj>yѕVo>? ?^0lž:A Wڅߎ?[?/z3> ܈1uZΛ9ы>Ra>'<*|R 3}*CgҎw5|Dfi1yXx:7-GRLp&hyC}0_r|}tBU9'ݟE/ Y?twOޮ%{sD]rҼ&Q\?xC<?u7EQ ?[y.* QxORdK/ox=G*{Qzgs4ُ};-O+EtQ٢;Plsj7ooOMMW"qNE'E5#z>уFO(7>μ zQ}k&tv1~iW~WN[+ "]#UԿ"Ÿ~\_X^E~5~U @,sߥ5WU+c}O(o;{݌kbHF_0| !A϶eU%zdve'k"\#3rXe[Nco>{kfܼ =MI.I;˱T< ;(tAቱߥ͏cQ'bλ.ro}vp9jwS<P}dmcgu?WtsH4~)~5l?a?oe/m{K%*;Hz{Vj}ʻj~=p㷱Ѓ?59o5}=4_c_ =Gq=~*ocVv~I{g/T_ǟ5w0rbk<'v:{Gs |?j"S5񢫜K *G߷hCxq W֩~;}?ѭ'u)lFka#z~GU?yM,z#>KX"cz6 ?/C[ W_*\`|A΍&",.Jv"_\sh s[\0Kx-~sE 1}2,<_Τڵg/蚟}*rh>W/R?E_~75dj|PHKދ4N-+:!1֕|>g]iǽɝ߷L}tyN<v±/T*ݷr(&z3z}o#qֳ'%t;jDjp3zѣm|eX5a)<=vvKpwS}FO>9-GbHx|gb8yj/‹gnڟ<( +;yMAbkf1~万9#.avYB~>ڛ_.z,~?C%7wmU}:z%7SG~GQ>E~`W?"٠>:zT[q##5Whގd T^Gd~55`ȉϨZ|~*oVy畱ԑ+&>Nqfy*r*l%.i ~6awZ8o}NWßa)O`D F<",Ov q!ó+9g ׅ_zo5?kO#~9D DŽ?fЏ2CxlCs(xSvN>&o(|m q~PqOmi~k?@ վ}߹B>sns4ÿϽ ~]Bߐmq<&ݕD q]^-ݤ'hg"Ag ={'}3)?繅~w)4B zo_P7Cٕ<^?~π-A;r~S_?rzʽ85ɣj_& En-Ye h+bu/k&M4Jn'E3oU=A/i wG/ռ,''%v&2z->&)B ".^I\SW:]DćW58W._Wu _\fq4N"y alc E%ojMQ&C^q䬵6.ϻ8mK׈=P_MS<*KrÜ%kߍl@X=F^xw8t;R-II!ţ_:[8{OQ%<4Cn?Xhq3ntP lU lhqh2]mgu cﺢG:yO,yٍUGNg=v)G\^Jj+k| =)Ue8遪O'5\-[X7ro]g{Ppr/x RkzvT?>܎M?c#_ˀ%y㧫o"7t fa{wkso/"Uf?D&4/4=y÷ۡ75#EQ?+)GhXH4oU˻#׻߰^m?)k&@vIٍ-V4"NZgr;Eء765gD64~fGnpomzBD67ν<"[c\t =qd%gzTl7c'+wu9ܣjg{Q?IuD&oV*z ~X}o5yf'y_6pL_j{%(ܟ?XF-:Q gVW4R"{VϿyx;hvq},OCv)v[gZC Mey\qJB_]?"6;֑ M#kI&eq/m1y'~˱= w^0 ڍPpPvM|$ꗾIɁ6#N|H_x ?Gsz~w?#>q5p20?D=q|sa7cOGO9_~d_8S{}oƵZBͿN%?J0_a6~-kZ'9?$"N;"_}8Zu a7 ~QD|ksXE1CofzQ&Q OտN>\e<-ƫ7\ϻ?nu˓~?g=%>dn!c%1}֣W_s ap?&|{=RY6_?^=..B Gfu91<;&.Ž}F=<6M-^$ڦy#Ekp44,>;a :"oю43^]z/㼨[X[ۨO}~~hŭ/]=!N!q^N\ݨv[Xr먑oOGO8Fޅ r<,ܴ}Yh5fO^1!+ȴ\1CxeAxx=g ͟W7P,Ł4[4?DȗDknh!:n/EazamZú.kc]%XH<#3%P;`˛?Y=̳R"%_ԸSU!g r}߄^B=r9}yÒݿz(g?Q/} zÏ/eaá ֭'0A<އ5N ))qh=bܛ\z#nͽFuYO{C?$sg{w=Eyg}KGȗK9Fg~zMmokbaC0vZbZؽ"sFD vϱ 0㘾|~<y,=PL7rh.f㺜yuga|n]:۵_Un[};&/478#vvoOX'K=(wϵ_5G?#䵚[zXŞ8ܯfoǯH8C >S&_J yi{TubOast?"c>Q%N} zKR!0t|G7Mndq_>So܊<;f\Oy}1ϳ'Z>Q}/c #Ni !Gr?=j࿺~o27 -NGW@?} Π^Oƍ|SgȋM Ӎc7ɓ]Za|hT 8B>g-i5m(J_ݎT?"&^ }~2,eP6xE] y(sޯ6rO?_UoyF,(jGHܛ;rH0+_5CԄLQE/:TqʫljKN8%hkckU跍a9q뫅eѷON5p v1ޔ[Yιe#6ƅ}xG+9q;+6"{Øa5{7{>|x-ɵ}hJ,Ny:P8v߂>cOa;vHnlg^]N;!Emzqu_-vFWiq.ڿT}K6y# 䧈T9vLcűR'6n Ae{ا/P{_9tsY=R D-[z0"_MFD9]x}NK*ejձ+ݹ9U#S>Uw?=_Q UeUKf?G\|O+EV{7 &cngU7H a\qoQ>GЛVVU^z3~ӓg6;NZ#g'e ˈD'X=^;2.S/ky}1ewGA(״avˇuYSƄWW)wS i']-:- yڼm TA-‘/Y9cWt]OOj?ɾ=O{OKM?NȇK^:H?_y=?R&h`~Ƴ_aJspO~HzY^oɮrK]ZjoL?X"U _ݽv66z7޺L-M~~yāGs68-a~&Υ|UNR^^Aj zʵj Lծ_Wd4o9n{hαwQd2rLVEWf&P1N5j-coF}p%(ve#7g1aZ~>>q+X78 ^/^~'L)"WShyJ;a,XR Μ-4qLᬒ'hع뉎.9n:'ka|;-<"=GOv@wP?~q"wm4Mh-.~<ػ;Ot/Gr$w{zXqx-__:}a=Wjg$/7?ޑ>&gwis/m-(ZZ$ni~Oo#vXO,Ns>u8;UQҞ8ߊI{^{Z8m|eԛj?tx2D]vq 12+7hmT^ƿs+-&䡛H眸OƉ+Z0z픗[>:7W{i>Za՜_󱛯c~T˹nt͛d\O%rz˨sCOMu=WΦE1tP@a{?q㿕ύn;c'ׁu؟66qC[),/*&;sk~&~ݢ}^<\f_+'OJa}ʓ'Fiov<97S%o?zEOL1Ỷ)U v˄|,~Oh?^ C>S_M? $?a?|B}.oN_Lf\N{B^da5+Epn' ];y%'axG5Bޱ=_S5Yca?Oyׇ`ܡo:1sfǼ)zScBriG0}'^; }L{gn.gߡmr?lp.N ao RjuZeU7USB:zEװOǭc*QȗuUϞ>ljg>S 6W > $r['l݉ۄyyl?.Ma=_"#4QN+6 7"=B:5Vs, D^aO{ޣedku|J.8?#~#Ucg /-Oթ+z;RuA Ɵc'pt6?{ kҮ:{CF>}6|ѓ?Ş߁M]> =zOC۷߄?Agz1aL?M5~- 8Ux"c?~< y!FOOgB>sҗ_H?Ùሟ'~ֵgvj﹤\3?;A/AI#ױ<c7w;mͽ]^ɹҜTy^=1SW=aGhP|5;{=lZOw?/W{U8gC/u?7_Fɋ&@U)>R%ZW8qհcrO~niC#mD"7id5ZcKm% y]>fAɳ0mO~Q"?W?|;vG{"Ap!r۾{~#w7KSbtx 8c*yb0+~' J\rou8ϻ'jwȓ".ɹ2?/fOEw5w݀GW4M拈h'iǭ߷qѯvx!t55=ra广w;X&ݡ}K'/A< SɽDݬKޗ8{߭~unT~ MY/9OwRGг_(ʟv ?}?}}>ӻ}[s+}>Aܴ}̣?rK<1yu:T[i4woDn[Ma@~a_XXx~O5|85jeD՗ˬqTƏ~>J<8*peרr_UojMeH[layi_`_X~noPb}--#Nl#׋g^B5w;2Cx7zo?,2r0%nB<'9› OC'wks'r7L=a^GD?0BǸ~|o{,$C%C\^6|E /}l"5odx&8"ۏ2?rr9MiS9?x~g?{hAwV˂^<)!nßzϳ^ iO>ݔv y _gq}`OJH~ء=ZGJvϿDY?@댳-_vgyλ~.Bk{}YJn7!?x#|&ed7a,}o Ewq=B^i}&߆ݧxK|\Sy{m a?pw*Ϥ4)}X8I*\e,-$*ub;@oPş{<8B{Fv 6u6O羽8dzk)usZ*œ-&^̾'kqʱ)̀>TY?Ic]x]~o]#:GmEMv&R-Ʊ|rM Ѯ q5O#};&v6~-ӿq_ů~ts/gr+j_\BKT6߳'x|Wm,_p~;; ׇ}~u*~Qu~xkVv87^̽~b=l>6=J *^&+Wu *O_u!"~b+2_F'emxpz6csאo`;q#wWgڂ>krX2FږBהrO8͛)\ҋNkͯ{/ /icz{ W ?P8ra>Ofz=^A$xg&O[v0Foe3wsSc~w\o\vmo_MzEYDM|_Դ.?}k~!_{uؾW.#~Wkb:qG}eyC~9sb'_b$uxvNCď_߹ joqWI."Io?"i{۪T_)O]!JO>|RoLg\ſa &*Ļs?N ǐ*[ǰo\ 2}v-ď6S>:k\K?Gۊ<&z v87?|&{^}d=y8WZK|Cp^_^^N˹J=|y"G-<|sk, /Pc‘ `*q|68R}/x/QC-n =k:qѝo9k_4+""Uqk!7Gj/&Y~.~mS.<ݮ'[[ o#[ ch|w߾B`_ÿDwO<(ng!zӜS}*<)JbU^~u&#A{^aRO,E!=s&|Vr܉9qCK]Ν!\H~+Y*L]ģq,郌gS>߃wkăvow הD[2=#n*&۾gvQY/ŪoƝ)ɯavGѧw9 /toװ 6KlD4W6vﮉ+"q677_*y~5t7w?hww1^mxF}gqz-!.'/C1ߥ<=i=J}>O͟vM=v z]o뀏L۞,8{'cߡssc=&w<7/o&)qүRO\A>+1=EqG<11r}+~qo7G?-&Jknja7,n|k`O+- q5Ua-sϯį r„ř1Gdڻyq=_ Ծ/[~ϸkA난N䰋:[&<zs"%hB^Ȅ<}ÏK>?տ¿Ⱦ\=M9Ußھeq?X{2b=4^|+S]ɿZ~>Z4l$c[=L5Ϩ9 y ISL_|gk#jG_Z&p-C^؀|xu^l CzOŸnvޫG7@‡8wd(C\yN孚 _=aPx3$>dKLvD,>kV&w3?v7KhveBĻh\Gv9 |,8)ܛOB9/wZW{iݩOt8}ks0oN®ڪn>Ms=[G>o8 ]8~ ]oVn8[ 9:1?)ſo޾+J=ztڥW:Q <=;'WRǵ7(OԸ}}@w#OGox.94wп4cCr&GL#-{ WzMJOIO Axp-G&vyjȩ Uյ_ X$ouP8?};8~ecUsImPFۈ@}o?Z\8y6 µя]oE7|Uқ[Dz x%: 9נ|s}?~]c}?웑'^~?19P|7[|ѓ&| <}1>^8}{}vg>џG#@8qcz؟uij}6hvsT;[_aߩZZCC޻Jwۉcy[4Sx-|!Hap/y/9}yPDXx1f7P8(X?vi?.?}w<8C1X1 ȋ}c-bkGNwS8cۙGs$&+ƯKޘSշ3n!l/ؚA;95kiqhbl-SmN"{!^|]bb C.3zkϟv}}y_2bg!dw_OohRa@]#>W:v+5hU*؝&nVC7?߫y#'Џon>qQ#?n2PF&58ư;s qANJ̕E6C->xE6.a#M^|_x;kK݌=}ry9d^;^Du+|G3W^>$=(꯰sۂht؍Acg?giIt&E_GLgwkj#g8~u[@}1 w/fG/5]kmh;K?;ZrX M|A&/D{L񧏯zc11z?rt{#!V]£g6?6Y1C/5oDJzg^Vcs()T$ 卪$v&mg8Qpfo"el=1e&ZP62VǼWWq/R>FS˰oŜF?[ ] wǞG_ i!a' /C9N!Z{7?k?~Gc+:O \/3蒗%f /=~%"I{`j|2F2{㽉q92-p܏O5^=q~/a]䁈w.Uđu^ۜ6qlkm[fͽIhJd^.w̺b_#gķ<ɋ/c5#_:_?L~SEw)}aO+T?EկS[կeoq_O=sMZxwD3e5~~vZ5bt͑7q~:~w O~5!^)yOL{Y;X'q]ΡK{R?U^/>"/GzWSR ~52z*E ǐ&f#?cxՌc޴Ƿ~5kۈXV)E__"?>sӻTz0OoBkg/s{ ?Vx Z!BǾj~wrޚqCf1|GiYW):"</蒇0 ]1U] cŞџ|B]ڣw#olrb!&.)tQΡs^čA7|`c[?]%ԾV}A#Ƈ:3hFqa}Y缴T9?V7_԰OWG_Q<^rDn#.JF~f׻*CoN6솣SW[[nFaβ<$/[<kxB7|f9< %{8^gr ~ps3Ŏߗ?'վ'u=+iy޾OYB~!/`HA4rwj= ?3K4{i|5;܋ٱkۋz1G~?8̿>[H;v3ȣ]?~1UkqEv̏1ݝ ?CmY[';߂h;.vCϳXwvmz!z_8a"C[!!WBl4U|T$G1_:COog;OKyzoR)R?=Tؑ?w8D~%y!MuK=w=S}0%}j0}qo|r*$xy2Ɓw#3?Vm"]5V_Q8UT}RN8iSDsB>qΧMKȼ2? o%Zo{j|Dhx7 ڀ}1zu^H^9F87cX#7iA|AA}{m-u-OQIj.voΣx.zо>Y?^BA߇>BݗWm-bg/~??~d{h7~ zs喧z;<Ì_x+pcD^q11riw6?wpuc(6& yFbX,Ո/wbc?rc s#<TBYjwڙ_L{ioTtIg>u&L#f:Kob_x=moue:99 ti_NLN8NЯoӾ'whg\GmmWaW=vya l*4? qN w[cwx1R2saknsv#qm~~ahr.Exl~X }+V ͹xۉ|뱓|? Bk>vӆ?q- &/B|m- b:䕊u\j'j=-tOW$&b}wzbĵBK-82ǿ?izgq{h~g`\@ȋwA).9汾@׸].y;mW]ro}d!?g_ :1, 6]<؏yAs? Z|J Jk?F|y}:${ )}PϽ.ݕuOyg=|cDžp8=7O8g=}2C/s y_bΙ;E?Pl~{f1K!'VQ|>ǜ8=z3O<}lLon3>qq'}2?'OG~ ;Ï'>?yq~,z˚,CD4Epi/data/S.typh.rda0000644000176200001440000000247612531361106013564 0ustar liggesusersBZh91AY&SY|qT]@ P@@@IP 4E?TC#'0iDhCCLj7D2&Ќ 424bbd0JBp a#sqPfXx{FxPOS؅x."+k D;9ĝkM(TNV84X+u O:PErLdwG \{9/C3 mӥEJX{% 9ϛuǶ EӃg{`{.]1\VB/P67MZXމKW":o%94Vx2 )!ײ&պ4&趾̭QaSRpo]FJ-?HՈCr(I3)=Eu{BiM+-ZD-Uc,.p48s7Nѽ#{1 HO]E`Q~:[Y/bK-#%,&=S]eЯ3_ļ E2l! 6i5䂦q.Rľ"rϿ$U| l~آ%ԡw+O'2*m BW!`M'z-t3i c7f8ia ~bng L:TX0ew*X*nW|KR)i.z}tm$HI}[K 9p[ŨekE27MXZ r8&Ўg=+n lDte(ƪ i\O6B%=3}9!3TilF %d.:3|qdY־K MinyEC׵-_oĵa-Iv> 8hr#n͜u>ú,G2𸣴<#Ѓƺ>Lf뺽z\[hC7xbQ!N%9Ov I%*MDl>_ M s{H7l8a3=~~P o WFiS ʫR(Ҳ{(#R,C>\b@0;eV"ô '(9O! "g\\-m|RλƓRT9WUS*TZMyz^{K~t=Ӱ]tVua C/$ȸVQy؇DPƲz8pvHP 辥S`x ou.0Tİ3soġW1Yjɚ1)a&|=ND/[32T,_,;zAd;S\<'qbRjQyF/[AT;W"ap׫DM,Fמk^%5]'5 㡚$i$5'\bX"pcBhЄ%#њysPS]\td+dZ*qt݄8K8RrdUXiCk5UpND3n#Ba6ӯXE9`5xfxޝ+1pyN"E?{a;"$ߨÉ hϪxH9ԕ | cɞa0|΃(Cw22CėIl"j2ܫflI Y ku/$'~ "gB :!=.-Tj,`3;-g1:ԵAlf瑊{ફn(M-ih&P*-. [w1:>Ll"L 5:eTzT7S)Iپqy*]4?^n$mu H!hI'0kTL|f \r/>HHӠkrFUXd~l<9q)Wby-mda٬˛>^sB=;T\ٙQDedxwA\TnxeH( T1j`{DGi_,#ݢYz1n!{FP [° 5kA y3o;=>Izl f-ă?ԸUDNNRH (~6#6e]4;a_Nڎb{RX^cEE'G ~lh7oQ}W7}UcnbC ̤aa};Ct :f`F1+c_Ms)Z>ڻɷ}"IN.?;XIm6Zk{Xh)EQFFPb;w;E"dYmReLP`B [=Mk}]|zy K;F[#眖dT` ҷzՑReڊךa m蠌%'b>輭;'r'*-d m3T:ZqN>kP։pF Z OF0ND4ӡdDj0bBC&}\'L*}f4@2k?l X 3k08BCDn?8 n#A?<-JYW7jY 2Cj&*}6]Ôe$&#קշ1u2mPE)&.07 .3iH6Boҹ 9&8-J;5.6vWGc?'MhtKaW]y}^tϓ/k4pGh߱X¢!AQ9ĞUY+mI{ftӵ5-3V ~16:;%}Lgz%4nܽO [C*ْŨD*ؖ,-_h26ͣgT ܔmW^,;䃧0[ur'6cs %~``\+43ݐӑgo*})./6"LJ }#tELndu%\was/=$/Mė7Dϲ;U d댡Dp߮/"juB[6Ӡ5"e>54%`T`*pnl@ O 0VjݝnpeҥF ^W87shi;j" k[LO &]յEY&F'1R$<>P_x{"_FC$]6FPI2edž@2SF߰D$ft 6"\3zk} B3T- ,sܩ#{Iw=J}q\8P;<^6:qжdE. 󵆉h48|/Nn@ TٻE-=LMوVUbRpyt\$RXޞ\Qd<qJX@*(ZNyaZiK-N{fU_dE@y4%%#H|BM,$UM"o2My س*358\#~oz(\ƌ}=÷j\݅+5dn%7)غm% yS .}]ƫbA n q ˊztǾb3AܰPU1v6$ XTeh8fDV{W?6801D3^J@"xhf4!J: /*D汃p%ve?vŃx6J8#*u2dsS;{2#)"tKF%N_5Dh2|2#]~ n<%R] mfzi&q[B%ʛhcB,+ d["vVJ6I`мzi@p.i!{OvD9ݴ!V+8mύ(f߽歏XKU-eC1k--ׯ C@3 77K2ǃhf.A&|9(jُ&ǀ1HtTOn\0rƞ7=3|'YpDs EK/&O g;pu9%'07{SQ\58̡ooZ۸˾Dk'Ofb(0WJ w?& 8PrB)9PT^@3\* vr צm-ԍmmi< 5d]|ٓ lNV6oY b4\؁풭`ϙnnB~ZQ ~"vWt?,`z= Pu%6[}QO5WadՋB{[ŲV`+?Ǔossa儖wnruZFDz! MOPx%|4MmR5/;vuyzL{RkՍ oJ{1RBnE0LzjMӎ֫f`fCз*W% PM?W?ؠb'jC+B !g'P.2rꗍLDW!i^rO\9/kmh~; @g2`9lacڱ/]s8Km-yz8:HL~Fz(. $mEC֭YmύMqpi&R.=*4Aa|/e:ԯ6b}ס&#*+X}z%hlpPX*شTq,ypM e3:M;\AɫsfLIjn[O*7f.IJu+?$+ M&ڕٔ|\j(=C+4v*Ǟd#U;HCTK _f[ns~NgM(=SDݯi[G|7Q#(?bbOҰmI?ci_rXjl Q,1ޢ]e-A,^$*l^fwitms8Pp]s{ շx ]$2N>|Jc`g=-֞zT5 BR ?j.-5ȅM^"s4}@z3;u_go )khun@}-II'rFDnP)OUE‘#f6'.Y 3e߱m D3m{?0nI+*apș|36~Hv vW|h:o};0rYDRfOJE'0^mϲ}08i\&\ɓ\Ԋd {9JD8\߄N$z^~jIiD +yPP!n8mr2 p7P(ELʭ|}H5eCu%0\ʚ[eəC!CO.ZԻ'ܠ&5V ~6s!R_ f)sfŚvyrv[k“wƥ?Ǥ#'W#ϩDw㌕XC=A,%9]}_ R1("Q/Pg}]L&5Muѡj֙":wM͏ˑrR#v{y1'DS⚸H> &.Z>FռE56;.CxȖr9`VypQt͋f7+T\5>'b|Iz0D]OweU ߱a@WLLV6>sT`+ nř~a{q#fy,?W@)K h,?ԱT9VP_if9zZaj.']@zKQ.`OLr H BT:,fHhV((xp\%VVD#?6KiL]~&gFA8Cz>$83}ְ+u|7@xQXW;g)IA&qǟ7!|K} f]U\r/'v̂` ?&(Q~,{xª⌽R*)Σ,߷@ns4CNb6}`RHYrP֫N\ƾq-}BF>kT8|dNQnyH q;WP Pe]lOߡu:cqA>bd]^6zKYEEN"y<&?vN䁡I->̒ZRPS0{H"ΚYyFe5߻zޯðhC8) yrJ8G:bAfN(*0vswG`D0pM_&[)mX-tO&!C[,UZ@>,ſER KKӌ#{/H@B`a9׆w!􍄌ȣߖFiȘj?&U_´3lGQY^,OWHb M9Q0.i5 \]Ӣ|*HLSԔ5(-/&R=7ms'{<6]E.Z=V5M`UNc2D tR2SK#:eAqq-sQ5zvtX9ʀF&⢷ap zjqhu]Yy0Mbѻt'.G:P5q&tkHHpN}a7cP*pbG=Ł0T,:MWfS؇[uxrwjP? ''&AcL;R7hY|ݯMi@Sz w׌\b@o1讧0@[Qiֶlxa}ww J2aCĶS׾x|JaϏJcmEd],'Z½F>ƒtϔ\EtHXP=/ K7)2$Yubݯl D p{BvRAĺ gWm+FrTq2}yʬӐuNb_M)NOU\.Ћח0.֭:YLUA31ǎͿ7Cw}'qjy4ߨTCibrm>NѕގjZu#zBG[ Ń6iV~}~adX]ɗzDn": ס>a"`ԚE"*ͱl.DL`hv: ,/ž:Lz@Rd:u^tq[p&*6HwőT63ux)4w> ߓ'H+'" @4tMo̾hg &g:f,w3YqdAm#H뾚 Yhch8}5o'Ƒ)7,c6E %+(5戬Y"Zܿ,PW,m!Wɵ!;'ZӟKi<So/ff;z&"AjoUkϴ]+"vuwWQ , Sͱ&yɊdUÃp3`fXLBc ["g 'j낵>oG?};ƌmNlϾ& 1UL69s#,Bg9iIpc֡lqXABSoz/f2'o=n%B`ĆnHlNyKhX5Z("j/1ǽ 62`7ş%a،Y |m>[{󒈹ׁWlA30Ϊh fUΣLcka@L'a-Wז*SY PM_.W- j;?Iss+I m\+lQ[WVYKĄyp+RƓe^7E7lf0{Xv@>koŰ{6TRBt됽H::DMly(37;"|Ssw,/˥ =8y ^eFR|(}s,+#5X;R/ t& UP`3[%]q0=ˋ05yOidN_sRf|ix>.}-?WUsZ[_ݲ@(T!Tٺb 01#B8]q@XW2 Py ҈ѽ<1UBuؚej!uB%|2`fPn3~Lm23.L[8A̜uihU2 $;@q+f?D,PDJ@ҫ5L#nMbƘJ)ׄQVYdKP\ ^Ԥ,:m!3י  U-[y+4Qib(l$C"aə zۭ7G0 Ixqhx.(&7⮖$HvQ8vک3v("Iv7܅_jo0g*^%mem%q%pFHS>v#Z1 @cf]U'dAhj](dv,ϣ%2u[3 M cYUG2Ўad1%(GЌ(;p( $lΗy?ߒdIzZ6|U 8\U>Ȯܐ5 鳗'ӹ\_64K%{F5gbj?\H>:{F=hzNj| -qZ c3mTxQkTƚUǻȯHGs3o5BrL ˓)̭9:K6/h{c`k? &aS(n_֯$t}yx a/8`Ԍvq2E0 +E#9ygdzM3;FC[Q$S0<%ے`~0kyAX {|y/DL/{m+0($8 (3Vw+ҩ[=Rc_ly9 zipЂy5ۢwdCף ^\y6b'9$M\\BBgmJna#^уރshX=&UXq_C'edNy&I]}yDgPo~g-#9񈀴|KhdZUyN3|es(;pbq<<ʗRoMQ"copC.m/tsr vroN[byS8|t u?^R3$LQ  c\yf |y.Q9ke3}(*̋^vX֡O@wPCya'+TIoS5nf%Q#Fa[Rzp?Wi+|]CGj}NJpŬc$Ŀ шHSzD"Eup8+]zrN8F3-"$aMʂ[D]̢cĀ)xs9FZC4{{D#pp&"×-vXjb9o0ں  u.dVuan-Ws.Y|T^f*=kzNHr' *@# N>z@[GkH1"r8QsE˗>yO@+i$ h}5̿n=ʏZM J%4(<ϗws;S 'kT"0*ZB; 2%f˵ WxE,.z/v-Dzx%Hg4M|SBKW3 zQDNaMiD;XΟ+Pauݶ>"V+jHqƵفdj/wWh]`dE@޽.!L5ԗQ_8xNjSe963]{+($فV 0!̓6&.("-gxi @65fNTs(3k3OX {MVyE&;rY 4 s 9(Ewsk"K=aoObV%8Hfd/xx*w09h:Yzo z]prS)q+GA䙇G(9&šA2P15 JrA2xgrؠCx7fdr)T]FdODjf&4U& Wt;ɮK{ \4DŽ>n .( hF|u2{ v]8mAn3gFhAb#yЎTp!>J0mx)&(zI`N6|&'X$ًAҶŬCsU`}=SKIIdX2|u.I tE+ =:&&x xz\t} m]Eֱ"~`t3 ,(2_k$1܁8SAYح2Wxr^U´%m-LR(J됝ɐuIx{=s.F,L G=UѰkƬ]/HR`+񎱗N{q/ޝ j{ۀBw0I#clƆL7Ͻ8(fcoZUu2fDF iҼނi͛eY :_)1)O0끄tg貽goT֝hr b4v `e=A$T4_S>OΞ%Z<_k` Vҧ7HEp(I@ k.Jbota8~ץKsu_0JRՂX}-gգa3=;Ѐj2ԃK\6OI+8Gua` G<|)2<4(/Y$Sb[kO,|Q=D J!c%*Et.osU+E,rZm Q/,+RO{5G S@;SM`.\ KaYit8ik}XKF-mmNyD/,8䣱5Y)GePꔇLf^8hKJ&M$m+uxZMuƉ0DÚ8jwGؾjg@v zٲ_%_Pr{$o -:VNv-g{yʯ9N#l][5ʾxß[@zd8YTtj 䱃D|!Kb)6@4vc (NVN{KcL+S,suEs1HxZW4&}81` Vi'8?Bp T#Ut NzT{/T>wüWC@ŎHl:#C&VK^]1Qo1+iTV|V0'p~w?l;DM.r~]r^}F~pa3;mNdžֺmiR~jE2VD(̐le|/'sNuBI~;"94ir5P.VӂYvN1L0ͣO[E-Bx'mR0i@U1C%x6h]!t[]"P!Wk c/jb DFr(O `ˁiU}j@0m"X՞9x4Ȓkef>v@1V;q!pψգԭ9_DnŪ8slYb4ᓭivVѫ'BZS ߯PdYcCÔE8~tVBiҝ啄%WQe!SP$ÈnjC]LEE `Z͂AZ..M"nFt laȄuWtM&f&>j>/ޠp!M [/O9F2]E5)YdxM2#23_<5^.;JA#.*Y1e?A\DElx#y LiO@1Kyi!LQ vt4:ҟHa[`4tz1:4R6FǢ|UO5i<~:c4kޕkY1A묩?e}zxY*j 9vPi 9=hMOFu/rQ\jTH^=ˇ⾁:قe]I&0^*ٙ=ap%(XRXpIʊAqReOc!èj-c;d#XrSJQx' ܜ@ E;r$tPtאca؆,KNYJȷK٦s 쓲w+1,쒴S/B=zmcu-i-о)C,.b+>vv;!E2)SR5qЗ \RNYp D`mզ懌v~.-j礕uB2G%7l?G >d (cn:;tx 4KQ67ƻp+^hb$~sOhJO_$EAPbymqd~!hb]>ܤNloQa&giq}v81bX6rC4l`~ YB׋gHw]z9Ho%f'2~iN^,\Yo\<8H.+ǕU4'bB&@}})v3xjwЭ`R$/D~]A/Gtɷ9r5ˀ!VxْyiŠ7;tA_E2ISHU %+Y7o|CJo%Py_KBuBrʒp5OSr==Uwi֨9'7ǜoN[}XY86oK GD [pS4܇ lOt*7˭,C&0,8GcBM&EWpLݱB@T+ZjxZQekp 9䎈I6JKNQtZ~YNigDҙ3-Op|Գs;˚ENe)bTYHުP`s$V6JZU;]߳hw|?r9 IM.%C~52~ 7aQKCp7 )sJtvɅjkLݺZl$+{p=.P_NeDQc(U6HtQ:ˋ&U, 7\;16 @{H/nh r"q|*O I4Ҟ崟2DlT ]'.FFOp1ua/FZ:I)h*5_ON9 C&r(P%,m:>O^.Ԕ ݳ*Vq%."ފ h:}*UhY;{AܾLyicTRHF&iưkȪxmPt̄ߍ7)Dyjt{_m#i:T9AI4/ܿD¹o>6֚p+(+遱9yr ΍ !I)/Bal}. :W owx\oqH )T)ҙ^q 튓T;Kg-b_7y *"~3H p/g40z`< T d"ӌviWV:na+GԔݚMt'8bSzjo5YE8+1;5^4?ߥtL3? 1v)Tۍ Eb6;=l[#W@[_4wJ5:Qr}ISh[}^o8_ScCv.:O,&[VEIUӅwYB_6L=7B>Z&QdS2Xޝ g 3Qϝ+oB5~s4I+čbYo:q <zLfq/;:(u M}( ŀʤ$| 6cb8Y/, ` ԻA3fR&u%:;u͠l>m$ ,>er1;sJwMHbOJk[meTӐ2|lKjMB,CC{žWyDe%Љ<+- (llie-t1o@H jtD"vmq|tʖsVr0XT+btev~y K酳&̀N|/hiLjv0'5j0 ,Oz<$vM{4"dsYO_t¬G$ۀ神sHK2Ap/^z~sƨOv3iil5ͨz?;; dE>4g0m%Dzۯ׀lc/U0LC>H+9b8A˨i:#Ur2$#Oxg?.oDL~ RL^IFh-' fUc]Za길scBGAF֦PWÎ ߊBQ 3uLj fٸ"/GxƠJ0+D'o9[j6¼nǖm7jFIjaۦGXlm - $U9qT Ź֚JE:2>Z2;4TI CqȖݵĊ7 Ge\wn[\io%;juS$]`ϔ~pPM݈ ᢱG!˘UX깤`5pB V u6{N$[*8ҹb{"\/ۍ0S=ؔJUxv3/(ŝ P4);H8Y4~&0r`t=iM+.l- ,ˊjM򢩪˝{r !!*\~MҳgzEnSE1@Plfʱy}f6f 5 h60{gI^ |0Y/@S*SǝJǾMcisjlśEVۣ8~͍+Ҽ4j/kHd8LRY>A) &+Pz4cJe!0ӴHLNJQMsŋF5`7T?Crh)k-/1֣M+w ?0ѧ-Kൃ@DEFk4d\p#1`B4Ͳ!B1QQ5$o7GMa<|#Q^\%RnPEعZY(%H6uoX#"gwJ_z?3vuRcjh?[JDDɇu6 OgQt VVRh/"W+%!Ãip"cTST;R\14Cj6aEmW<`R7 4!f˂_QZĶn'cɺb7x-#5:[7驐^gJ W#897pPU+yaq^ִ^n&GMT(+$\ة&]\lG3*qIeRr?1H \B\xaY['JdNl{4]Lu VI'!M ;֝AZ^G(aӔQ͵Bj GV[X%L)+`v*0gqhe7~-͗fx_纠|YsI|1q * }kmɲҐ8!LY .3m,* h2~yF] IS@_5 ~Vkqn3W6P k0u `>yuer2!'>St{YM| WkCz9Xnm4YGsy5acEV[T6!f*ZL]s]"dn!z!Zr^A>N:Ϸ]4"Y.>QV7Tظ Z\2D6L-+ԉX [E&C}U1nqUcG#Hdk,LeDXؔc<BVkNX?84k 2f*ꅱAוOc{˛ʶ;nAwy;&},ѡ$zx!:OT)nqX֞6R'AQp>=UQq߫zJp'K<'84H~lگvi=V0h]]Ng'ZIJ.4OnriHɼ—R{ ] <Њ}7erlt EuV?0X]Vq(BV0 Q̳ԟ;6ԁ;{(OҀnT=MM4#0fpoVWp}4뮂ZjA[yJUGM ] )4tn/#o8j4^ZA+\4+qǫ"S*59qfo%Ye) IubCbt\㱏\M(o 3;ڋΒ 6^4=he )+o.1햑yQ`rF8>0M2}:bF d,<{Q<_dO/ @WQ8a`9>5ᖈƶ Ho>U5]{k<- *[{FÜ"I25NmdC Gn&ɎMFy>`U6vY *Ֆڮ. ض 5nQ\0 +Es\V˃i jsH lUt_[YJb#+ӒGto"e6[yj1)$I?}RnG/LF챈.5,cvrc4nZ- i!%]ĆcHO6hC&,+x0w&!j@/)pF1(9M,V+)Q W)=#V[o n8 SM`Lآ`q"B[0DI;ZA~`/Q\v', +M`3 .P*[6YPyd~ңÚ[$X\I )n'ba .⫴ w3wizbh@/H.Lس{ o2I$Ja<^h p2iB`mvcHsݛ;i@f3˃4r}%"w XU7ow34ԏjRdB{TgU;igA Mvekya ;% 65nWnh5QNhr\ ߫6(ޛ^ DŽ8f1mU)fr7,ҠPGdA-8@@z{[;_{ eB|`-QzA 6-g<$sb' a焻hC-lWN@=,1yxAtdZ)Geb-(pgk )bGh֐qﺗ;6\gdHd 2=3eǺ( fxj]Jo=zMAϘMlg9hi{`z| l7Q0 \D Yw'B#I&rC}iGE׵qw!}ϥ0yuyV, +hm |?PQKIt7t+D,8ۿhh+( \<m#lh݂Lv[7Nڪvtmgy9ތk3We{(΋}+^S i;9OX;Id&7TTTz9@b+msCV0vqw;F6ܳF9p^*tRqms`2RlFd"P036Fۀ0EOui۹.2U,=Ʊ#]3][װK !u -T[plf,yBF.(r?2!2rp MtHf.t}Ԥ#AⷷҌ:} O.TA+C#!ofB)H"i1@@$2c (0WH}pZ^9C/BB mkVqXf 3q&]AuDZOJ!Tm1 jd^-)pطz( hAѷ CCkʱ29|HͿT*ƹV6vKRP} 'P% <[l |8__'Ex?| ћ,se.Xjqb$Ġ UHܚ*X?| 0$ 3U%c+hдqK`vv6{|suÆxI-g"Xp`/rq'hz2{0.Ӽs"/_YCۻ}aݱf:5.A|꫿&!G`!:8 LyKMAJƦyQ,0aq҅a$#B?9@J&F11hk*A<}rW4Iڹ*E{}÷)L~h%Lש7cȮĖ\ ); OcP~hD%!e6ֆ[C`DT#!b*G &(ȯH Se 9E,,jgWÄ7`t~ {v N>̃wwv8!L׮ygH@Å٘\F⒖dC) ڤ6]yINQLFBQ+b2lbC}8T{ Dec?:H͖ՠU)me~$1h!3]6U~_3 Zs({ѮP AK³ꐺ%m2) zpZ697TM5$ծt?#拡] V.yFVM ]qҽR0-WT{eN9BV9Ac/MNis>^U67)G(1f:fM;]pi`@z# .jfYZ|dCPzv3Gg; vUsenj\Mf3 !tvT&KT xl~V/0&{sE&a Bv׺16}׼$81i̐J̞=oQh3#*k>#\^Ad>a$9GSG&el9#Ox pas_CΥl |wH*eoɳh2Q=j~G"Y&ł ;}GY:HU۝ k+Y1Em$h=NoD#tXPF_@[v2[5gq x;Y/$P.5`붵w'3̔M<\bǻjbgl%.ܛx5.HvQqn䅤ڴct:n\"Q&0(ZP}.@FA_k0a<H/._yXUkz :> tPP8XGO,%-qsO}wnėIo  0QM=),>4Ϸ{?SgT,QSv<3jMYᱠьvtL^ gԑ(5-%֜jC0N SΒV@JzL_q%`xl9Ub CaD>/% #v&ql+F6(_t3f.;?/3Y YnJ F brqR 5ƿW H{7 .^I܏+HL_oMY?e -9S@UvF@p&wzYm M&j^6 enU|#bTe5V!+60R'!7euEF|F)rtX) 6>+:h'iRR,_E&5yP]y~4Ks]vX}xuԑ_f:).' Y' DL,Ε^; 04-n23 TON_ĒY7b䉂ȟ)|`K23LdAĕA˵'{_i{;|ۼd\VUm s/A7F7D ?AҬODZ -:']#. Ź|P? d=uVї!ƩW&ɍ)&Kaܿ/6bgHOx jc"1 EM6O`ov}Lhѭ&GR>._M8Ej wMq2c-\S$=I14JO>|¯gùY('#[M}Fr*gK3F. jbR^#]ͽ^F#lP>X7J'08c Mֲw9-60F ?ɓ>XrkjtՄ};4 -e@k%#Ϝ%!by"fQD"M0U%8,G~>"`Hߵm];g`&ЪeM9DfLx15ܳłwj3oTt1:mFĽ(тXוJ9IoPѪy."IT|S)~BM1"ES"?&R~uF}YPoQ|C; kU3!&#ͬN\n|3qd(oX H@Q9{uG)a5[)>ԫV _!nZﻵJXڳyP$m=nzDzzAo"lȉ& qH]vo1}ڻ*@N " quK3"`mm44 P T1)aR !ﱀ=V5T0Ή=ٕ^fn㒺M̐͝a;9Jo3ZKM_EjRqA_N#Ҁ4wH!}E8w Q]RxykS(+1nqmb]ൾ#fټ#bfofw]JPZʩ Ўequ!끧wb*[Ag1ﱦl1g(V -q+b;ټ,6f(h|tξԱɇ-u"dQҺ h(Ȃ_O X"7zJwЇAG0L35AuXZJʂoܦ랴g; Th+hxB(h=HMJԿ<. 6xÅ/𵲱!b%^ @m:KY7KTS9'e''b둔50͝BeFQM92sryc e=vQ08;5OT7].'YL{;QUWrQN fΪ(w֫ٲ[r($>L4po-4ЕX5e瀀U23zIRȽcIv#1'M\߃# 37|+PF3B:lRGi4|:9oՔ/"vTQew]ތ-Gg{azj;?Y"k WC4cdR$X9&w^ E{q/tX(MNN'g[ƒgͩz覙S,SulX'`g.e**ޅB{Hn"[F<\s丷0 8X`edsze MW`GʅTrm,?*,o=x8Hs].#M6OB0kI@sTsX'd d)$VB9BCnk$=q`q~rJZM/:ߝEM¥.2SLe9ʍ$~#"BitC0Tl&G7Kӈ<>%6м³oKG;,f; äKjc!jHdZ*'ރ-[z!sQZXhiԽG r9<[wˌJLE3?B_ bQ7(5(5c˪b&IE*W37{Z?oeɼ%pXs=RA{7={:_Y0 yR6,H>֡Ģ#./g=Lfc,Kc$V >Uf‘F; , &{m&Ic"RflE GݣWH^2K/ɔ:zҮRs%8Qw3(}4:A0MMx1vz6 *3>u<_{}-lCpbEa'FHV6r.J {.oL  Hhlh*-b{勇ȕ'=pPN+`qF.Ҡ {Xfك:"[ MU PuhI &##Hx虋9k"urvbE% `Ɣ952zA(7Q=hFzw^H i:=W`l-lzSƚKDS]);x1w,ŠR6n-e<3 ӟTJG3LE]{%Q*tP}ay6(0Χ.i q}e?6~ `4$ٺa;OxJ@Ϳ Ik᬴ e#PD3k_k3oXA'4πwf^2PD}'ǟM.qB2ᩁa3CCf30RU8WVÌ_9ӸJLJ ^5\ou]o5 Dj(OĻi&(}#Bt&O`F1/~Xy26;JBɂ_H.^ 9Y6B@23q _$<';uѲS7]d ,\< ~ m#ZK@j" wDsLYrm HZ  )rJx&~L)]slP@= Katlkϖz^OQ誔Շ Җķ|uARsQ"KSruK$YGTiûV)K\D-Ȯg/XF֬w=Cd.KeD+> ̖cq`| C z hʮmJdyMbAHR@xB P(^9ӧUEΎvwnL m B>֣vx>>ĉփBW=X[jzm-'FbZ2 {͢y˯gPrˍ<}x|=Oy )uD[ Ĵ-G"/,"+?[?=pL7cf{͝yLꡮ9ڛ\1{Rl:ˎ݁^q`ӃjV0R%l@U_/AXik93`i9BaV\Y B28wu?̤铞I\ :Ut uHOCs-oHXDC@c!ݼho.~s!QH*5  `ہO9{X|P3L# So瓶\/S>mF^wع8ؐՇ5'sJ1xvv%๝3~l;~[$TЉ;X-l@1qn?+XHزC>ۗ92rRhW? I[`񬵃/3MbyPɱG؁DvʓRSK;D]ƎfjqZ@ު|=GwXUboD=lX~wVv#FEU R>*"Y!U(D5`J5G$Utv6.3C˯#KsE=-#ȕv1@lO+o:Fxb/!&PZ:䟎av:3R 4*k{!|x^6tM*Opѧ_Ws Ia qW* /qڥå0< c8 EQL` @_Vl[}LY[2P%AGbGaN}Ijd*vq>wec+!A23Vj;od~8Jcʻ΀RY^֧y0xcV8BCݰVe+Sϋwa<1k!S%P{uy; J!N/4 SIy$qD渚~mTkg=б<;(TVrst-2Z1)i/tީ>UաLܿ( ڈ6ˈF{8e8*}bESVab3 Z_b:*ǿGerHlٯB\UBgP Ԍ}BM A  Gex<.0c pA^,ynEŔtq35|sgMVsy3j0+Yj CgՂb"|\즻Q>ݸ("fh! fȝZ^֕Q7/4.߂T0VM:7cGeI`īM!vt6=ڂ!,Wт552IW_Q0#xҬ ^l'oI-ƛsMhHXY٢+NG|ةVWdK3_.S5?]1drX-èFpϪ z=4Q3M}bęn(EÒjBٹ4*Tk4 2".~@ы >O4,<4iÎl;3⵷em9s8mDǘ"Cjm|pd_;z< =$5_+\dC+.ɤ%ƏyCž͎F5~\~ X ܇BX}[#afzJ-S!l5z_v2wz28>:I̥`Dr2B[죐.G0,!3C$+HBZ C^ȒR@8݅MtOa:a g{uE8JD relC/{3sKnZ!8Q 3 cĻ<iCգ Zv#puShfz&?֙/|9@%HnLmBx#4} 5:*ڕX}0twO_~/lN1EB;_RQ2IGNN~(;4c@ђ5&9c.KǎBZa#Cl bo0ǿ}ǘ[ύ|J'й6[ؕIM?b9Kx.Q5"閥)Kz'aT2V:Ԣ28^ u{;.[w+t|EykewQ `Pj4vUcH"SDh\r@HFZہaT ]DLeCGa<oČ0g JW߬M\[m oh*,KU}7HWܓ/WjDJ9+5D\8j}nQ RZsnC25{- t07W{xT77&NO?՚y EC2?E͍*U`ݘ Q2bQ"- ݟϑ_i{&'4<'x TI!-SC2|K0P BiRgkK,MکeZ:tAwz'/ג%Zl1yYC3wz -B7 h 0[+6;ϹH %P^hRZGTv;wsIUۀ%uRrRZ;Ug5'cRGìKur,m4ؤ%փ M1'N_Υ>Gx _ENI!`SJ5d,+_H {85ߗjb'"rHaR+JDLM;p?X25#\G'R31? ҹmtJM\%5bm8S>CS2[̸1#n\U_~2BhV"wa.UN[20O4{E&#EBbQHRr d l!w,ObQUҲ#{߉W(A#cE+LK iaz띮(Q2%p$b֟J#g2cġ;O&v:*FhUQA|Q0}ize,/3t;1ް="t.WVG@ZzXo#@ڛ !ztr}"ztՂH/fL; Aj.NfLՄIPDI_' ʋ%JM6v/2t/v!A!5mՠXh.Qq۟lz,} r70PP#14RipNZ>d\H-\&oE*~Pw Z_@ k7Pc)RGW*r.[.#avs9K1I-;bq4 mݵ >ǻ DޢP_7; 6+ܹHm!H;:؎;z(R(&+O(=a;#[Yjmn1KW>v܌Iړo<:Vՠx/0f YD1RRc53Ƒ40׌q '@$ oz;r3$Q=겸7ڹHBpvazjVO3]/ᵔqȃ 4"I@/(߿ԙ @y@vb8#GyfkM;>|ڎv:_u]XԨ4ĵڍ3jK18vAP10Gr)y3@mn/n&̛npIjH16TƵ1U1?%#'M9Z;dBO,s9mU o'KS Y&ָ4M@]z԰ܒp*eTu5Wkf @pR]+ ^=GE^^)!REbGPc@'<{2 gHIÄs6Q1w.;'c[.o #mhb 9dRû0:),+MD6+?}p`lu8ǁktPx\N#Ă$ p| E.0ӗbhW_B}ƥ'S0JX(;saH&nPBx'6Odn (G^Q**zެ1\qpIq>U5}HlX@  {#D'EQ0g¿-̄oA^AK:Ԛ)fiUWwps)$#-l|6$ PM+rl8]pfTO!H[!h7J[—UÄfqGbdXϱZ='nnaәN9S=;A sFoR6Qlׁ.R<=7HJ8Chl E;XH]t}i>Yt\Is;I޺aF͖8(8#ۘ[fQWP\X*C>$4+Zh;f 5 A.b!]$-=,n:ckW!_ꑾKj]љo؛!'{s(8Rn+f NODEֲHw k"][kc.^x .[Vl5U\ً 镛ތBH`@"v %9AM-ˠ .,w: = 1XM ./ )Dؽ ]2CiS?/8C&o?6i4~7I;|Ipc6DW4ǚ ڋ:G"G5PFHDMqg s,W NIWLP3]Hej󖋸^u|f1PidWSnDxޡ 4#'?a-WRTE@Ae. p)^Au)c Y!ybzUYfP}Ƞ>=RmpasI{SRmME^hk$s`a"fNhqf$w)7YH_Dz5q]]~+fj!JW!$5<$ QCUF)L)'HފJ>aG|`O8'CoXAҘ%_YP=Lr:+-C'36!̡9++Yj1@_:pb176jfKf$Uo{~M}cÜf`g++g-1mY-VK45 ìW{OȔ DRޥ%;P)qQ()Q-|6!°4ݷR!tG Bn8kS(iRܓ?9MSAhzt{%4/f*9C&RV(O{qذXBiS*(X*!T*\s`5o[Z>r@ή/L75 cV,ß\\ZK%Yeo$~8q*5,xD#FCC1˛lJr՛pas퉡W1y+/x\85ۑo[tŋ x^_gs2 :T!.`PU:I<+2dYfמ`9Jtwhp)8ǿǀ?>LW5^ңqTK3?ͦF&xOmrP[s\9!D?^%R~#*NRc>y^;r-VdWi&ck$`YR( 1mZNdh+]>JJ`g `ۯ EEQqSu]l[\ TC xId1Y%1p4QIEǿw3"`HU0#zo]|> a~¾ӥҥ):JAjRοԣm[GMR>kc`'ZG7.׻b/Ԥِ$!z4GAQHGxe5Fl*lĴz9Zn!eR 2X?*A*@f#F8ɕ1VIt3H|Mp9jQt9@(pI0!ta~ȅ0W(yzC&S+ yzŽ+UyJFi!;^БI[ZL=9s2,9(4U?h?*/4jY{:fU$_xh"6q`ϒޏҋl3>+&} ivp)N(M{ 3p lxۓ-EeN' yku@]&UPe'1Z|t(*j罼Y|AEtJbJcgvCoQjgTB%.*47;[q.ǎj$2nݱr"݌;@xaF>T :acSzrN>î2G Aȩg^JSI<ꅝq,]c} foP(+`:+?Q1EaV&@ڸbrO*Qfw"@h168jeQi<낓/JjU9wFo^AttqpUބqd{fA |>2@o4m֩ `7#_Qf8_؅66(v||G!U'@Ch)v-2 Fs>V*ީ9ػ eb$: 'h!WTizڡύ݂PO -`3ǴH*ɝKޔH El_p-Qpk8ddTh d/o`OʖVE,ʘg8ԓ6/wgW^̿].R2B0\iXIʏL]NaD^L؂؍3jE#l8A+ѳ8ftι ǯUď ,C 83P.UQl]3uT ODiu09K=_5Ũ8v% u_t ٨ۚʵý='zަy͂+J }[M9*;5:qo)`1mVI/Mc~*o6Y?8az5mS\F ch@RϛudtU5iڨ-g]chRE5eNn^D[ בM(*RR1WĂ_wTePJvB &?CM1U2Ě{-S)Za0oM12Sr|үgꍥ1`= *C;}oklh: B^Bk%ћ !?oۥM/ dzqҧHy4s  S N'hoXK+V 1ԟ]JK1( 7jBӰz狭 7XEԐ^UZL_ɹcY`м0?p:+=}8 7QOsڝIn-{Zx֐P2A oD;@MBx,>1T&0&Suhd& ;F_HktȡYSTs& .S#( Mr "@TݡSC"HGCK e|HN h&Rvw +<Μje' _H/z g!n,%%{-͇F!t8}X"x-Yy̴ʙä>{py,:y?>{ ne&ܠr3xp)J&.La74Ce@.3 CVESh)%mUԱZOv\/GO֯;X/h28S"O,y➮Tma;S]jywhjhTCzr~=MAm/A(2q~Ot_E; V}hI71sΏwMc HTBd]\b~^pY(0 O?8elON[bP̮SD]&Th撒i3a i[rJn0>Vdkyr0B՘0?ʞ9CCM#π^NׂLh/?ywT2Cq4q^ŭ#=gfW+Z{CK,49,6DT!~u{ĪL7`~3LЏ?<:_~s.kVnD> Ȗa%b(!W/:wھ2)nDi"i,{3~uS!{I8s+-p8:UFffNf.IPDrL](ZcM{YD1/͒asoY6E3q żKAo\0~+2A]-˖}$O "$1ZSЪx ̸/dBK,}I󠇦"_b+8ڛ|z3=V[^)vIʅ(eR\]=b89 (p%R>_Edzg)|Pd6+ Bp"Zm~'׶U@P"N01x9%u%N>妳0[CC6i&j9%bC=7-rnz(f}z;Mz}BOE&s5~=mc8`ܒs}dxTQQ\Oύ'@ Xfӎ1w Hԅ,C6 5Y}SXQK?ޢZ݃hME?SӾk4xp}{5 GU>-5]Gl?Sb CNo}dr4*) pٿR`8c*w}'y]/boj*Qn _E8#1ljO!.]0Wq\"=d~{d]z_TM/'F?#MbWksowJcd)8UxAm r}H*n^nfQ~hЉwR&;LnwM#{O O^0i6̔ך (eolץN~M ,;Ș 1VŸi%c6DVP-E~x1٪lHy20eM'd(S' k@@E$lot\uf1KFWKTŒiV!5-1(z>ۦ/U[{AOL?d;믔M426kz{5\G s6șhAE|UroDbyxCzOq t!PW黓XSuB.-P\:D6m%[z٦0x튭m#3!Ș2@֚;$oU g mDq+b* "@;ݭ+J>Д&WG8mV`FU('ssdf-_ bg*{o:(:eDK]a[O>\w+*49bdu5fYw+bWQ5O(NKp|e tq J^H[yH #nfFv1IӚR?݅ZpN،Ql;-]c}MXAM"7㗬E[:ФI☆_]XjCxöި6]uثLLfRDNqQH GNCJEß~.z3}On#7 ݋ጅQ"z-?L9eeGI,S+?l0>DIm+z}9dg p\1c濲 ap1q%ҩLaxwyY,{NVM䑂SMU>|>:?\w|;-~*AΪʏE:. 7~}V X\#nKyv#6Fwo2Q̮Xg!35#y쀗50 Mb|\'#z_dP98N-{G*|4ҟxY5K!ݩ2oCnv(LrCXY* ]m&螎YF:8<3V. v:H-q`dŹo{gD-zЃl.[ +φXy~4JC?P-̗NXj9ފEY̴!d*(@I^vƋOnx) f=K_ E٨3P Ā(=Mrޟ?MP 2LD4L*Uy] YG,@y* ڰ@&mΟ([G^o E j&6:hHA:mg8M ` BD,43۔-"M)!jvO Iӗ1ۄt,<}N:_痎AtɂxS:Su'":]=6MG2~ۛso'E$)'?XL .h^P(Z%>fӕd~6O}Plm:s$ZPe5uU q Ҭ3vB`f)Ula4e D@O  U (yI(Ro g3rӎ$_CsޠWMl[|ڃj(8sT3rq+i1Jz b{jfȮW4K@ 70uԦ1?E)uD0훚嚫 z{/aTXF,l@4aĐ:?0<8qR@[_}p2BR怙Ω@P&/oݷk4^N4 KB7^Ҿ%7;85BILQI'k%rICn㝥~dȲ1&mH&NOtn_{ę!'4#|ZSq(G 8x}{ JZvkX5D_2KO98Z4|uC41@ T~f΃)2H lN~>?WAkP։k*_c ,_Sf=$W[&N1@5ӗ)c粷\jo^3ey^!RIR,@Ƒ 14P d3V-pQ+NV%ѳwB>_ M3$qT I4́BkUga^S8(ʁf%8[?ʻG88}F/qDGh==IToKg<={Yr."$3I\O[Uф/fМcE&f#JA^H$BsGХGoգ {HuqB 'scEoDHrZ<]mlE~ZK9xxgJIdvv0t25=owͮyH0 z9p^>7M<>? '/`rG!5g%4d-y*Dx#ˌYZDYl5x8voU-ö`l!q:Z=L/'~f<#"D)#An`O=GKdُTNkpPr C|7 Bc{$@w''bɃŽHXyn{^t`fgܷ*U,{ >9ISEcRGVR:V}:̢?!jf@nPޚ3, H ?mF"*j7F -Sb> [8ݳ8sܽ,T#uB/5]ے /kZŽj'(,W>:Z`t) @{vz1S3Uz;LI#J?K/e,:2C'YwW"y5Лt0Ͼz`ׇa˨f~asI,!Rw L'8\.\ :ppG߯FH ]S̛<݇fߤaý灕 <.NIIR35 MA@br}u_Y7v%%Z<[RL5V)о v0+7"DB_|HF. 'g8 ^ULя ;Kly,:|B%IoLڋ@i/_''ѕEټ0ڶ5R#ѢN>\ƭB)!?6V3U̘`藗ȍ+eƵ9nB ^$MrWg !lٵY*Cq(/ֺz91`A`pvֹIKL}c,tSt,nnsNWTR4CfT@x^H@6C=`׻|.u epC7)Kԑ8'ڨ~f`Bnz Jc6E'Z|/Vyޝ Yhˈ{2Fꨄ=tIZfGkj4t,H)zZA9C W4T泠_bT3RJw{hcNH ./* '<X!!RA&t u{2 DXBZ)m9i1jy,f ~7}ɽt'{B=HQSW:3i-KB̥͗5$ s'^z'1vjw)n\1\f}3 ]+k}փT$rH[ 8@Oq֤0ۊ'A.1K %VwnntI7r9 xrŚ,c d+s;V\]Ͱy~צsX*t`~TYe@O4RS= Y|Di"W%#&V'\K W~9C&vh`e?E/_'J'OJ3/jό!hَ3XUoY cy"µNs`T,JhM*-"VvvW=,͍p ٦5c!۸ !u䕡l,^x^ Yq PS1m'N"J ձ]g˨O_قzkL 5[:%Zx:|,L4i$XJ}|}Or'4!]WdrNzƼlh0QimVNX l/[p8kstouU_@ mI>jb~sj8Ky-@fg`:cߟ#.m\}9\La Ͼ=lYcJM+p8fŗr,*c5ެ "5=řxΧ[y$ӾCX} 0 ?) eh'ҧ$ JQ13[R nKlSޓsS5Eeh˿=пDf =@ŷ~m* [ O['}qЫ렾by tتVE/1+ 1fA\M -.KR Th;q)]9C%(|%BBӨa'R@ .tӑ|3O樉3?;'@g\U7kh|30PѳVj8]ϝAj!`왿J΀7p脦VJ~tc]仴<8݁K\@lq$` Kc\$b4^QeYR,ZMuvܸsiF /hO.BX/z]^6o֫9 Q ʀmγ*m$3\cGR2B<)/piE6vY5ps\<?lntH0]{$lj,*8Åf`:eftUa]mxVc$B#Gex_k;(UX%gHd~UigLjuDNOH7\qd7̤B$/(^IwY1{d5N2#؅P6(S@IsvӋ6b@t..0W(JN%fۅGfĘ%! vB"dk-"zf*DRG3yR?`b3l~up|su"oqXfs(XbUxyO^<Ӏ? htK\}j- U$2ǞYT)Wtf1 &sK9]FZ#(3P(p3 yOnIfSY+ѫXG'b¤PzWM&$͙6r_ë p{~HݐnLK7j?]GŦfLcŔ8q[NzveF!9͘e@ ٽp7՞b[!I"@ dxqke*v>g8!k`Ѱe_tUy;DEkM_24.%޳*%qY\b~j!T328纑w#\3 A/.nN -@)srZȸ&ێ8 dlxGb׀:CIbG)YGe Tau#>F_!yòa!"=4T1QT &ky[kSjP2Sjt0p5[x"S $&P=ƀ2CUQ1n(ձ3J1b; ]HEߋ{yW"tnb'x!t᪍J6<-ZvMcd/ e ү]!no!5?AgNҀI)dwx;xF{R?asWi4'K/KykϊVx$~G9ߖrzۀ !iJP>U'~TVIXgͱrQ rOl*7 Ka"(n MU#:^˲ۣy}y Ɣ'܉lUL&DZޡb>xiP*|71Td4ь5Fp9BJA6Ӂo@ʦ F/] 3SX_o#xs!1teW\݇`c9bqjBwNn~)Hr"Cߢ] xiʰV6_Gōi:30Xo ;(U^xb;i0c ^BX iOD'(~k w&y UQ+"jrr{{Pđ6`<7rsݏf @ȸֶ.aklS@PٞV;H6b{F98.jRTY ®qsG^AjlbADIńA)gxTXز-QּMUx~g ;NE8b:1׹78k#ټd/ŸV+mxFubq摍/tغ~j}$^<{;$`_/=fa-vM댢8$eW܈=t6[?y)rTxec}tY;l:2n~}t$CuH&:S*S*Ħ"B+B5~hi0Ds]cʹ^/yW>JΌ"`tpD= tIA ~x@2dx u~<\`Z>s)]A1nP % lF5`\$8뜗}5~O%&jOp><.h4qu6rHWQiyTGK'tn Vl| I)c(oB!\&STǗIEͿCH7yrjA5sNmCv\ƎFҳdS"$y8zbx}v)jgp!O@C(n܋O?Fr̗q{iBU4 0d \c IY }:ܢ(ɞ)hyԫ_* qGFiy;ZnaI6yƴwS[zf?nŎI1')ׄ_H:Zg$i*uf%I,t=E+mc@9s uix<UAbU0im`ïXoo:eC=Bygp6&L 9O7_ׯu! $Ӂ}+`Dwx{NGLSڛչ@Q(f>zj4K9pt65ve榋/;oɤ*>B;[ߐDSp^]_E(ˡa 0Ga0#(A55ܧ9ϝ 8dJ\v/GJAb>% HnZDh>pETʲ8`bz8? 6>ME‰,~ܶ:yZWq}g@Vblv~O ʞȗm'&^-Rx5m;9o70(Ƿ0[BHX MN 1$U&:j9 UD R6bh%lPEyºB?-7I܁V+eY32U#祣 7Ye1ysnGYBOyO§ېiBo 3m'94p~Okh,D?ެI%m/C*K;_ƍ2cҬtĆ$[ԕ68#;i}QIzIG ?\C3{J 9Bmk/Txѽ|)%Wd5 @T0޻ѡ %+mLTռC{$KNlr}z '@9ҽ4 n?lL_ @]rΊTes$mĚH-/4uwzt06zD,eYWip¾֜ۢ;|'q<4[3k ]=4q38{~E\mXW?Uq, t ]Oh1+yNdDw݇>Bm{b߲6]Glnb#SV5#Tj4 "Zt~uxC[u@8ʑ]xdBf1*HgC|Fu*`PtW$zZe*Npw!|@▌6 [X![ oljEk^ZdfޟH T? F HgW5qS,ʨT`(zɫ c;X>؄ڪ撬5-x\KMu<;-́1Ma, 99h4F@gbn>ʡv jF>5Af? {-Oel t8ȸ/_eABcQtygzmѓX@գK(a:?#L '91nM7z]nՌx1Hdjzǘhpm31 [h!AL9W >,⏅6u]~د_|HK׹lߜl^\dv!=/J#I9ߩ؎<6M;n4i$|샨 M"#{ Qǂk=`J9ρ"\J!7YAKA-xr mk**}{W+^V_ȅ+ /~}U?\f9ʒ![d Vv'|v챂8a2 y&XEY/I_;fP4EIV 4^i=׵L"Za#mڶ%Arz' ߦ/x]SeX e+*Lۭ Zұ(Lr Arq j=^ /pCa <[tlc${{k跤7HC8pC}m5Pp# |_.m5H AT 5O')ynrmGt}BЃUA#!N_f5 w)Q3!׉ Jn V)Dm FمE%TC5E ci'/T9٩gDhKb1ah7Wᅛ(o?S;(i|lwҤ:ZdʆYg1۳Y̙S1m(Ԣ*v[%v-ed^B͉15GjR?'E|ѰN+ŕVcH p$7C1A;qv_ iqxb*(2<jNYyc/6&l\|Ud+b[f:]jLۨULq#PЈ01.eKs[< N-hOvOU<^ Y4![sU[@KGժy\Zb 3f(x' MuZVe!h`S38E]+\<}Ai:@CA56ibWf e҅!<+X*$#VmO~Թv(RLJ@P?XCz EhZ9)DFs=,,)r9PIc$ABПё  G[X5cUiwFu7̼{RZf!aXS9x#z%_(EMנNM(w I6;FjE]$aQh,YCl{=1[,bVz阹je{hNvTCJ]6BJ]o _j .IoYvXUmuP>ds'l tu}_rDXv0}2lqKڱ,[ Y^lӳ^B x_][]R*whѲHwQ;ɐF(,g o!Q5a(3|֥me%=9ԢV ?;=" #H̵h(ʔLbIs%fφ]'5c# *Fe ytÁbmy_VӴ\$Ȝ9s' .zg.eW υbztlҧ6݅pr&*3+^q*t2Mٱt**; B^K*wdN;$Q2<7mp)elүVn UibjbJޢl F+XX; o1ʂ*gſc"=E|1G~ :.;T}(%gg<;ջ2l|R+$M5,%\ Sx)^ 4nZ#['7q&rT#I"1Ro^mN';MIDO`wmAd9^8ؖ"[Fb I^|g ґwJQ1k= 7rmS2ͶO %$pfwC>Q2(%Ka*nKUasMڱWe\ğ=)pCCפ$ۏLݎ* $\s$daT(TfKB^8hLul}REL>ڞwE~o@V0ƴ{80pyl%Zfb5<=yH4 "rK=W&_[&dy̕Og+<2H3Kۀ5u2o^`6vHpT0>m::af[ё|`yeҴ 1 ؠ?ZJi^Gfhu9Gns UnOadp8RBX {zAD54t"\Pfy:5^+(he4C8̳ 90d0@nxG˫۽/G/rP^Bj h9uι:% &g} LsMY~q>oľIoV؆9)vx.59b`Cl<ˢpj8e0 >?Blcf9t~?|>ݹ4Æ`,H}(Vh9*$Q-#;d^ZD.7߽>hgL_m~`niJe_l3$fsy-v a1ExDWƟ`M?J'4I+uR{jU[h.9hߩ <St`LR:FyPVc\|[0_3\ 0%g"#a>g% >z&$a`4jN]à5<~Zz䌠 %fݵn(ޥ)#MlNj (ar^>4ShGKO@ ^s#eS7Bedv2]?{mkb_#>&2rxȥ}Tܜw{|W\)deF#o@H^c+l?,(5.[Z]w1VfDuG_*F几ԪQ(8CR]E3Elz$LieV~[7ι /ӗaI:`^ {{zSŋ[hHT4֙zd%7Ǭ2%I Dٗ>\bպf]{K<Wv6gޤr{rf뉛٨qkR7M`q8%kmyk5X?] _{,#!]j?2Ƶ+\j"rGċuM6T 0Uc I9ecV g;u \ͬOk:]ypTA=~s|t!?/1 a :.]с3CiBb;_o* t{Q|A NM4-]y' 0|ܺ௵*t;7f;$Qfdn};^ٙf3rV9kr]zVR N7>-)Ԡy(yؚxf8dhf<.{o/d2_)gj1̈&7WI_4V@D8TBYUeE7{Z1)!^-3 ޕ%걄 jC?^>i6-<`!.=0QKxv,;L b92/'gBfuǑ ^$d" -tAS7;֕|2h<8<INLUH3b]?i{p {hh{ۚࠕ%iXW߾BJeDD&xe!>ޛ̳lO2= :'@:zt/ 2Ei .lQD;ڬ rkXot2z/wƂ{ `6Jն&!vbYѰ-PA9, /<k~H6tBhZe̯:^R>B /.9=;;(+mѐ d5ւ;o}a^D,]@sIdcZ("3(v RgiJ(4sؐ03&]$6XcJI$+iq*SV1+XAׇ}Rc+$ *k8`Lନjh®(,y#|g}?lDh3mP0HL.;6p`=;J~"HCh{ܴDݰ TT#0NOFdP6q7|FR>hdGNԽY5dz/l-6[>RM %NM,F-3RW)USTQL,Np Sܜ5*Բ"F/O!d_Jw9V{Փw#fҌʹ/J3=_9M~ :,(=O$@6kcD}˥f;Ɖ0,86'^ݨ:K@ 9p'|Y(mVh'Ixʿ8:dP:XFż/ؿ_6fR P9\S $j8Y[\! d1qWbDe$2.BF}" (N=#i:8K,pڞ]rn<c *5 Z}f:9쟀>zķ-9ha o}aɩA,yP$脡-q̭']->EW5ewuaH\jr? \Lu4#t+(T/eeqP1v?<ͺr.Gg1C)D~\Kt( x;nG$..+)Oo~˴ouB[X%&6ƿo1; y-i4Dɘ7rM;3΅ƕ QP5( J55=pFL >&$m]40F5VQM]Cгqz_VتPmp_3ZEH$IĤ\Mt ƁRg*j 4bU1f1LR\fӽS(fhzs$lEaG.߾n7BiAT­dQjbu,>IB_5fu`p&L+L/ȫ{3 f=.53f~dt\ 2=\ q#(x|o%-t2})e鿤WĹ3$4ǩm^&cRU ؒSiHiH+ZDeWSҎIR5r$i=jmE l2&mУ]qjՖH BXәS-W !`_B# o1#,2z5x$APkdX 1WfSؔ )\<B14+ih;L"6IO+-0UY^NxgOXM?c!ò/]'pI"J3eF19Aq ՌoKD#~t#FAc ue>uL'=Z̦JClfrf̣j',cݤ^%e~a'-8]$&{535ۯRH ~hPkqz66CG ?y֨SרbTqg6 <_m~W?aM6oLـ$t#"&2>}<0ہe2}TIͷzds[̪@;z!PB˧p "FTU EO~HHoG~+6xح1}ZB)&12_ԵF(d(Öα3؛2i݅&R%҇bo2 ͹Q\ Y >sBP1o*)`r";Z˔b׵~jT+KA@iMd6?Ea; s7+{Xe%R OVUy)q+ oϞì۵/BLETt_[Uw>pD WRE,[ ;C$A.]!|v#ci/xD"qZV@iC7FڸBFC, JmxЩb$X q!cX g ZRG-8/j ;7*a[VD VuIAx3I,cu"͹XXG7Op\Ӈfu:ǯ7nnKϡEs7xY&,4k+U&xo mKxˋ 8-nБ8bnN)SE} ] a#:*F 4w /ULu5N)<Τ7DC%kǎ#RW!$ĴAYYguRi\5P9yVB(W]/^ŎwmH%D,:1;f 61 d(wz/USߝ[53lpT0|9FGفhYZHm)8>j:j(6)'3{sgn#^<* *"4OI(JtyUy{)8".TT ;xyW[ޞ6/; r 8 +h8zڵZd3!z/d®'@uR@dKVI0!ƠStCs3' BF[GL4-L)!tdLv wM%4Qc2{3fVBj$%yT[qǴk4KϟXqyzfvR1^\4o־Ǹ69gVgϊ`kA !)9*ˍda;Id7A>K ]PviS?⃐+7)j@RYeo*s-:i}$H$zLOe{ tZZȢ9_2.ra-G 񝑗XnI&Bmsqa OC4X<~|gw)IӓJ@dm"U2eL|T:5I}iz{N!C-g\+hۏ~$}{-T uߍ 8BI5 ujKw!d[]ћb3/q t `ܚkJ:v_Kzbt%f4pT, QŘXn ]QcCD)\$|)Xmwöқ]zn2{ˇG}b`/pbRŊI֫J'/R*cu[G>(A.q(mÕ9rK0sQhd }qO.k&^G)}ŤWA\?Z,|3g BJg]#|Wǭ {tSXh;D ,c)\Xiϴ,=< :*#GR 딚/2B߷#]kFD<ϊCG@*|qhdAJJ>b abҟg40>PVcUg7VsCJFBM@'#XG,Hf {4}B!+jF]XveB{E~Z zT,3Şg܊ZA TWlݔ(| 5V@ZЅG!6ŭ0]~ 0}ޝ&)"g{1Uѷjq J~h=x%:,P:Xc!Ati[ǠvũiaPY`Be0{8ԹWB+Tκ5aV 36ZB6F״GXjXC+ttj|gӀ[6Hz9k1Ξ?IwNUE&՜ zt]=6e|ô[_y芰X XY4ܠsTȌ51&*ԗE zNLY-#gpW}3GkD< lhunب9_e =Hx=\69ƶڣe⚟[oN-Z ]hT;CbE| ZDM0um܀5RIAO),܇–VzԦ5{D'cĄO!zuՀ禃E1%sMo~'u0`3aٹEA$E2IlzZbN+%,jyÓhXG9l)?Q\IBrVUUsXCDsoà'N7fzDy n]a7w BkI]_7<ػ["~a }p0ΈaoB8|'J Ce;|llޤRq\?È0fj'{A5 sP6WwvD#ܘ/|V-q JK]1D7Uk#AJ\O Iu.v_v_o &|ߕo!CU@ km8^Kn'`9X( orV1e0{a<||lD u&^=HU[;^xq*HZ/[nM߁Z.{&1ol4,U>pf%̱Ijs@\k1j͛'mjW*!)84r/X_'= PLbU pbR7ͺ8U@nˬ\UBᣓ%v-MdwOIJ;,,fP:14-Qg>95hz0~d䳭lH1j\߽u2d,3ǴiHxxO*1S0l.塐ҙ3*3/pW]>uiH6fnvo)֧s⺀+8z@LyDդnP|(6"cE Xqbbg\Nizx MB^fn]ήtY֓"ZE-/)@ ^Q/ʫ)94i/Z]?b8;Lm.U,~߻?P̶9"*`MQ"9!=M{RٴɈawrXM=%uf+5wEVy22U8F؆<C=H{"eȇfU&G1ziLF8B7S]K&(C9f3?#_Ş/C`+'41@ĥfiv7 dX^aC{DL>eVDI v> ,RH`P&Z;+X2 yaEgs RqYYHy2Ѷ_Lm0z.2|Yj  )Ge}oU; DB̶2IeRv)XLQI2F,\VFi9;=]ZjMl ?+mMJɈ;}Q&+JӺ=vw˄FYS@`Jf ߙ1R?).وhEҰ5*<^\e(R)+V/ Cq# K& h!Z)0Vc,3Fjr1' +Wlgm01Z`bWM^3a~\W-Zvg34] ?MA'|GjqkW~7֠i/VdՁ͗.i>_bjk2DtNfx%RZU#BW(6jnq bW*.W_ ak1D'YIhnzR>nqۻ".k䰞Ok]-Pv׉?"_r=t\C. 213j.ar ΒӉYϡ Z"GD)48 f`ayFmd8v؛*{i)ۨ4cMp"֡/sQ~`zvߝlOv*;L1vIg ;Q#;_wN|6"aj]MP|yz Rzʄcn 彪Tc_5ؽȲ8"H%c6qt*f*#`iWچ}S`.G:MeL4WM\ruU,i 9'| kvhmL`(p Sg20h~0C.H1 >lNncԕŻ8uFdWuZ Jp%M'>K)4=kyJk{lsa񴊱(< k>b+ƚ A/P? ?az 3X7KA(vS@qgd b#ZKEׅqoG<}/' ^[[SX2fx܋ƒ4H)Ӝ>v<[I4/l߱gH|rqod^hM[%Pf?@6/4 q!XaR;]hݸ@S bB*#@ڠSN,4)PRVجEqW%%ڠ :IZQx+ry ^ 78ZJЊ/9L4nq&a~<գw@$Cu+U.)NtdE"k?~+S3,!Ä.avԸu4>wF^`~ժ-pRqvK|d͠! uI}o@T@XGy6XS)HV >fP`g6/=#@1a,)IiQԑMBm{PהDщI(N]qzmݍUsȜGITiN^'Z!m@W><J-к2.]}{MSygO մF|@0b:|Àxcf7gާ! V'j4ܤ leTlb}բ$2%ozNiMS<[(HJ`9.+8r6i RY> ]zgEuhz .2SWKG5aXP`dlz*Rw$>TY*~>}@c5.SzTd_=ƔAĔl !Θ`K]MخZ5߹<_sfVq?Vjl$b͊E>7bDP:UY{QX\ \fb{ '@έ|+D6n_^.6ݩ^WC>Ҡ2]ֈ54Duɰп:YrybҚ255Z͈W]p`mZg^<]J2 w%R㥬>SK\|+`:)_iAܘ;$p RnFn?\^Et0&R}pwH7r.\V`ǧ 4\ hVYHF `ǹM"p]^@;B : r=P^<4VnsAxZkvY;EqyD痒4 KC!q bEPzs)$4|5pmI˓Գ;),5]zJ2נ4hH#߬ G=2V.]",@"w G%@ k# XE㲖CzjL #Ήpup<pa Mv=(B9 kHVBuuEе)U7^l+.H#٧Ϗ{@u+P/8|7| '>aR!*+Ux*ա-)[S?72j.W+㒋+u`-*Y]L])-?PD8;`:Oh7++,V491pt9W=G.#>$:\f1Nia\_0K2RX `^S%!vXZXi䘀AŠtsp^*݌&UFIMu7D%CϿxT b܍߼ c!ϣ=)xDq;M:.aF<ܳeiDA& ;Z93,6@SdZW9 \y0]L) 1e&b3o|ФIzޓ>KWE)>蘆ԔDVgX;cT~On|U`6| YO|[ҿNYw8ڜ]Zs?a] T6j,@,M q]VR[pz.'F!ѩi4Hh+m0k'*d{A5wV S4찊 {&pIK`Oe/; U- TO 9O!3a,4{/ߡ[dOVJݨUiC1msY^ h [#%J7).P`?-lK!9]!\Hj $c &D"GƲnA(¨E‹!̬PF223UI0be2mo]qa`{@O\u+i 4)FdWpHrH9aRy_d ρ9siľ& W'A2M߁ y~QgOG$i{(,#~,yc_DٛYcik'֙OW]dl%XpԾ˚{ _tI{6YWU 8$H9e>c9Ү`ѰHpߤ/@˗  "$OD1J cVe"ż |yȞh&/,;ߟU ё0#~$@F{o~0wN][F;L:HmS,3GcNC񐄈ww\κ"v2Bƺfޮ8fv|‰`q3&էB&#hճ˛j˨a{YTiMiŀVfuh\Bc?n.xfX Q3-;G,tSߔ*5,ޒBmHRY6g̦5Lz߾U_)fCM ͨTDڈZ)Aغ|b#8ov;7^|rErbR(}SRRU/м߁$|MEarJeccyO1fP5s]xYF ^9TQ3$I?'#\j䶘_t@Y<!F/࿴ |B2f%ќ08!I+'[dfeVb:IOZ*r]>X ܘ~8C%=J?S3;ᕪ,&Fv'?@DKTeEA}-E47=}b y7l(YWv;bDK}3ԯNhEE~1#Xg,,3EskW{8#%ss?YݸW ̋(Qooo&~w 4꒠0Ӊ}Fxwl 2EqUnlTcn>g⹛5u 5a>(,ob]/<4҆+ypzKc`<>"2?(v )ٲYX]B?mU۸|ע'/5vޗ )cAL$Eq ᯉr^]t w7zJwٵ يR uOѷ+8u ge:ee|qz(*f";!JKي'%_Wn#I/-7OkcI!\;fdN[I%]E|@1\ljde:qY݄îZl9 kmJg^9F:f=u[3aJZ KWrlR&?ūgu^T䫴`\)He&#ʞVll"[!ѿ&h]$q`Z3p,t˼kw-,7q U?|J#⡾^f<ϦԑTPh+(-1pUL @k/>:굔%Ww9o]5᦭)378""@ p  Y{mW ˼Q\@=S 2ԟiLv|HU)oS%zPxjIA>xo@m8 : .nXfEl,lU*qB!CHJ?e?W/4RXf#O㥇p;p],\ t=NѲ da <8i"v' zr%_5[cuas00A"Yt˜w|ZR+ q B1tC GHv8w5gʕ?ʿnsma"k#ٳil 0:xRlq0qW_#KEqsFXvg3~[dl)VIȞl euZ\\`f*iW'h|0]}uf{CaTSpjؓtʀxGZ@U#N锬~>Qlꭍ.+xb+O@1l9"{$^,|o~hXk!3)Q-5ejW>ħ6銌VlkwZ(lCIwQ\r¤*2C9{k-em M#K;9rZ5tjRAcN$RBqJ7dLJ;܀S !v'7:Jg:zmNX$e/`l5@Zs|RUmKYd&_kt$[B+ jXf9VAfE'ݭH4-HYؔÞq~P2{Y6`W{fCO;EԿZCZۉgaa+;dA\59[i-k49˔PUc2B}S6^[tVU,-R/YΨl4U(jg#+с,Ȑ ۍlNyItȏeM5 Hнr/hgW|w[7<=;Փ,U'YD 0͇ٔAZa|u+D1܈4 M(k1t4"<5{|]okV.Q%VRtߛ=ed~V4'{-)p sУ_H/Nz7AL(66xU,ȤfsD&^#"q1Ϥ2&lq~@:N(l:[s#OcQ)H;,%/6ih;t˼6v^ 6y_AnK;yQ>iJ R1\9Y]R MNy}n0Sip`~;bKdXVv-턧IAm!>,(T0V[wxc thmXmq¬? )ƶ7QmMG(,azBpYU#nTF-ְ`:Cgqj6sYV*ǕӴ712LƵF,j "MlXC֑8 Tiay5pPtx6. `Xpzz?azb3&n}$dcy(,c8;l&@fZٳBx_t3Գ{Gk ґ1eהpoO&(4lfq3ƿB6 N 7$ 謹Ό3~a;:^tygІlRf?%{"^PKpJ19,DF;*!{}E1 mzC7"Z]xm-TnѮ|\r=tۍ@4m_>m(odYWBOAYAUPJ Ќ49P<@ CgԼ13(.nta*}o=lgqN|= ;XҖp~| 3[O"-bY:0᢫|dXf %ǯQq[- ( dL(9.r۷_O>ү i W$3F&jIv!Jc}^=ap$jT@]~ۤ nPqlᬺ='zo$z?u$Hc9st[`SGO|u@Ȁ|?;)=iP&%iOJ`Y#+NNˣovhu-a^tkiRptCiqLtRV?@1}N@gW4xxB+AkV2]|W-{I ;[EJz ϑҶWyˋOZA (Pp) ,Z&zbt0::SRQM]`nY! 0cb`ոYe%ч!Kֵ|rM)*6$ . M sY,̔`8؆fz&ի)_;*q2bv up@n-6w%V7B(M~?G#fJC䬽)@r|:OU?dL%#(kZ+mɧK Iud©އfϬ|} t! lS n o@#Ófr\l>NՁ6w%>agå2"m]:/iv7x+W LoUX}w bew ~;^17V#A]eAmwBԪK2Ga:G ,< "Tz3kL(N|urhqݷe࿬4m|)$\y B}hyGRvu67T&B6lI׵cǺ4^aH:#D 7|gnXv6·:ʁQ~I;s rz^)uuٵJŊvBA`|Onds0w@ͼɊA_n4ă4ei3vE C_Hr6 GDK=.,C+ x+7eºsf.٤䜘Tq_ʭjm_dW_q4Z؃.'P;hjNPπ(٬,~w7e|%ZuINd9CL5w Wǧy?@!suT ~5})Koq-bn!O8%wp%Zк%OFD}B$}Af/&C&ڠ6|1N64ko뾯5S",.D4^ssluj|#³-\ЄVt"[AnA 5#Ex O{3)k6zFZY ?qyYVכ?sT+ʠΩgr+#kr ~/%q+˳j[HigrUv:S;ɇak{F#T v"vc?؄*ԌT]Fŗ^%WZJbBQ  3.QKtw9DՕAU`赮 ms ]4ӳl$:ĹlHOKs 3[+7I:{Zc"&#YcV+~6}[SɊg{*'ȻGT~ gJj^߀Gl(uGnR1Z/,rռ`IA"]2ĦooQ+-b*RҀlvFJj򸆜0*ft+k]y%E (ш(_Bu*Z a-%Sսԍ5P=Ml0LJϣR6a>aYj)| #vqEbٌ>8>(Cfή(QHE7yn0{nӾ SJKRW@jtfaqVѾ>@ ]C*>6цr#P^M%bs),F+ZioűeBz@A5gc E>&8?fS27|,~ɒk7=n/ Y)+%6$J.~g蕷Q3O-!֔5R&!$9Wb*4b }o:,}ajLCe!|٪ bE. ?+`䝪iqɨ#)zr9p~~J5X'qd؎Fjg&?j,I/Tdj.X4Etd` Դz^?Ux;]HJ='am!Ix*Fn-fS!5x&}GN6b*k/^'(/J73AZxLA˯Jk,@'`5 $W<@#MT_#]!w2% }N_Bd0Y}H`*%oL4s`!ਔk _lI` O9T\YHV :D.z>w<<8;'cE jH-MbzL\Xf[+tX1X7TԵԱ lUͲ$m &?L,#6n^rsBц'!VE_هJ{|}d0;II6 .䃔eB 1w:n76ߒj]a!:;V@֚dqyr-OfAz )4Y.h!u0A7'H6X SEk2yLx<+, LNg[Z6tko^()1'\%6X8@t;foR+KïNZ#upәg H0 EW!IRfi{a=L4JXz iGcJ2 n]:Z N%ms*մ\df!BV)+\*Cste0ssA3fSAT&iZm1@ŒVj) w$cPK:QE%Uv(&KV&L xMPp'bc ꝍć.>FoynE`7+E ]%k %и,[' @ai%F EKvv>&&%^xv@N e}E?|w(oHfۣ"]L^$o:-sW'ۢG G>y; &~ 퐚fk0ƠS*(4@%.@Ap747ak%nbdq\u&A/7n}qHFZmS/Ѹ-hW%鰚mnX7(\>;>O-髞56s7Ctw1NIؐ|yb!GHf{L|\mv8 ^/~, YHdݗ[‚somCr\f`۲)\hn&bް=تE ӫSlTWB 1g:ex04T2Xr@Wc>]Zύ~" % bVkcz CU큗?պqxdFJ2͇Ko:>sk-JG F'_ySx|<[z83c@ ը%4T^e֫ .(laoЌihLPVN).\91RΛsl|l SoxA0IAQ,y杛 5%X*cOw;Ђnf[+( hg ~FV~CS!PC EY4-H"i9] zGzS|jZzR~YK(VEu֯p>b_*{h) 9G/P XBk?e7 3#qN)@O&T*rp[ Z 7m~?ɩqJW&"C* usʀ*jBZsܒD@JwiʹU+λǢq7O<[! u|,ZiΉ!䖘Qə6|+DF÷IeG]j()@ի:t# a?Qߓ) Mo#%x< 5`@.Pn B ~KbptE<# <1ea@Zk1k\2Rm#it(|b^= J!7*Vyxڶ@}N|-LJ۴m=Q!y :~zʜiԚ7jf%U۔eea]>K=hH<7 vb@~!Æ'Lkc`oћ/&>^z i kŜPPR3V47K.PZ[rvKjUϳ7wubl^@-gLq71!_ w~>"g~m%bLY(%0yr][cЭMFR7$GvXMASдSz:O[ ܪ*D1)Gus3E[LDgԆDhq~ɠ;5( fmc+e:mꩭLwdjA[qԨ☏/,pA;k1>0Nf[:b2|VpvKHP'9qSE?vth5~؉:+"P'Ah˷Rybϊ{K0ie6*V&!_q#4G5U0! Bs1-ve(SK-1sy{6Gb/ƣoK>ad@Tv)Mu駋Zp:RFn+ߑI}Ţdbo:]ڣ&?is:LraD-Ldc}ILALVGns_LW"ջˆ,Stz|<,SCt^ a7d4W=A ꣅ'P;Bp"8w ^G,\-Fwe[僒 h޷2#Gwɟ\sA#׈tj.*~_d8U;g_gEVo }bd午?IHMs֧mA\HlCW('BJvGERpJ<s[7ti U$2|Zg+_w#ڲ!V; cږ0vo3NVHVj T"`6+ N BYKEsjJce*~ahtv[Z̗M2e8|`jPZřyH!IhD9Ey#Ol7"Ā$C )f.ůs(ad+,ήt\YHsqѝsn=NLV]9*̀ }|b aE -QPȒ^la>X"@r_O㙓}ff" Ě ڄN #Eܾ`RUE%0BxYG:4"M#|U))m>䬷p] e 3rq!'0ˆD3dp+= \1mLmSFmtFuKGP 'oI i Z-U&[[ts@%w6r4;-vuW ߕVkxVKZ-}p%>,J`^TRg蹺+by:0П2VOTuU vHV 3Ϫres䓿ho"u@k0`>:vraH%mjO#,>yJzZ 'I´̲] 5dQDI) 2=@KvHӠّTeN6%DƁ%ЭMsBӾ,.8-}` Rl1@oL%XhVuT`(s&he%%m#= D!W-9^e'f?Uv#aI}KbHE3r3{Co9+$Tj' ⇋5UN}U]W4^j֔D'"24ש0zFޝId3+,I/l~vԺ"k.HBZݞTzy U@׹䍏ƴ+Bq,0#Rxph!0;B{G%3+ĖcsJvܭ h nNvdӌ&W$/usZC ,뜥^zkkZ"B/sJT?!22(BXΕ~PNl$7JZi+xvN6E'Y bcԋ܇Hg.O$[{P5Ob)zJ/sϽ e}up͑/Xz(+>D2]7sѫ!B&62a4}ިz$J(HOjT^3"a= ύ QGOU;ˁПܸw$~-^{ZvvŬ8Qu1fvA Nt^blӌg(s+*>|*oo&)ZԆdN^痧4J/T'?'<< ֢E_@khEaĘ)~(⋀6K%iH>}q=_aX\#x*'j̩ьaNwl dϛq]g`&jʸGf_`\ya4GlJ btzJVd?\~SP(?ȋ8JGӤ @;N.C 1hFKv*4OGt~W̅: lRT#B/7(`Md$(Fg1+z7=~ ǡNG9(Dp$ҵ -aI~ {63PyC؉R̰_;.Kς ,_B9Yfx5[TbPt "mR盿>VpoRXC˰-4VG.aYzѶu[]2ѩ &p--) +:̻*"}a 9qRƾ*<;)L6;O){pz`z]*:QYJLάʅ8yq]&$=b -Z1V%% Ϙd(Qc&A|I[S^E,{ ѳ[4_i EPI3ƫͭ+qh%X%5wBT, cgd+c2{><6è{C؛DGp;WkݙrmmlFfkw~U^4ף(\>뻒eʶ,_!Ƒ(1OIaئzv 7y.8G°z&MWR8/>VH[J"=ih xS1 lUGa\/#-eزM' 2h`C@`kbݦ`JmֺkSHIޥ+0ڃ?zxME2:7 F@ϽF&d\Ku()'j˒/25%=@ =5t}خ2B3NqG'`*2Va ]j\Bb@P4e{Ԁ  "Vm-w&bz wcrC˯kHfӔg\nU!<2@DudAb4a(8,³XA2n!5`fI<Z1B%I/ dz2A1p0#/br?<5@LxRTnSt'fwh}-b@eRe%1/_Zyp3ƣxyڀE 3HyjDmȢږ ]}P|@Ӫ%K৊(ͨ)Ao!(=q]ā'PAjK˞+P.5NeM ?q?A&R'+yj(i\z 8-YJ u+&RGSP'[DEVb顛M(B*cѵ!BB*$_- !T3 {QR^!AjX]rTqo+[|QBߠ<Vhy@V(Ireb4[p`At+0򞋼LS'VLkLmĨMJ~i\1۵hv}l=b ߍĺE7BrC!,gE7& 7ISiܶ$?Ly,# 3E2b>[R󊝜a ٦{_=C}YZ.J4T郝N6 S~?2x;(QkGJl4mkdKD,c1plܽ1'Z֋QJMz]GrUL&hԃFʱY`%>V dُqIP6\gyKd8)}}h׫WL>T\*\W/$\t$ҍv8?RrWH|ҏ&lZ4-)s2Lg@9#!8ZL~*”EKυr0d@V+/=")f[hZA<69o‰|3:6mgvM68 Nza=VXVio3<ǴIh nt0$^2EnV$2(4}FgDk!*=bҘe:(cig,ʫ^sI'Fa>ج}|j'[κ i>лX 2.ߑe*| PR=u8;?lq~&Txd)<"rQXu}\7 TFMFNRLAq[pLx,>C[2V%jz,|$PoxωxE"Bׂ ,s=.,7?X@`\-r8!87N$,H;2B"[>ҩl# sC{/ /wb٪.LG!ok| ;j-RzAH!:UN]f``YٰF ֌R`G UDe0Q_#@*PEjENQ碤;2`}_;xdV,gb7&+b"c\pʖd6b~`M;_}VG)QD{['BL70XjΚ7yO]vnz{#$>Cy^hy@6)it .u.Hݑ\8լ7Qܠ+U] K+<l9C{qnuaH0e%cZ/^oHI5Rb͉(8F6hW}omͥgY\=NFCF⿩g&@8=.JDH)-Ni8؆KGT;Vm+NjSYǛ_QÂWoS> 35Mjo?ƪrq`0qkZ qHo2vB tخf%)lԲ&3D^ּ+`x+!m8'WxW--%<׊iJxH}%jE$\n%tͨg-bĜ,DGWʒӳ^+Sd঱dɡDzȶưv7`j7%pJAsF1B-+@-+F&A~ʥ[ TB:KPŨ]ʦ@l.b?(6ȬK. +}+j 3ގ oϮ%PO]5SVрȩ17Qěr`[TI=ff<}6Yzޘ o +n oT̺+GH6ju'qFƕb†D#y)W%\]9un$c)RA( 5jFVJAatj!<{tBơyʂKFfGӗ/Mǖ5b\9j٠n3pzJMn< 1u ![,@ョgۃi-`A2+ l-똅ɒT}]98'r`Pjw+ngou"ٸ?9qvtO &C(}X2b5Gٛzr8' JvgB+NE;,Y($ JT 5c|\h{#| Ly%űIo8tL0S&ؾ)!J|ltCٯmRRרTq= L3KoX' AlyFm>·xW,]B092W(LCDMoӾ>4mb2SrX UX`4v41[;G|ZH ݱ!Zk'$ٞ܏`BS,2Ql1(#9-1KH\obm(As;Oa<|Ҕ4 Q=(X~N`S˵jKi? ]ckqt* Aek'eSVFLH&MCb0u - ؐAS:T#ݰԅ=FXm;x:4u7ƓgYwI@rHZTG46l7,q$F8ya#O9 pzkהZ9Mb:b0,S%rɽ:΁@~$։wTcRζw"օE #o( bjHB)MUU#A/(B];Ep"' #BfZA~S~D{7ǴM$U7K}:yR$:)6y˱ D}9נOV &(O;Onls*Kp+yŕ 61P跞`%4ӥ_ ^ g_ty(: Im 1MLkj"ҵ`93?|2Kw~eSI>o2.hnbOwUzȼ Y֧sp㏌T׭)zXrD-/F/ohAsŁ.D{s~ 3NIu=| j=|3_x37[Z[ՎUxK3a.RBaWR}u?y nlR|GcJ;$JO1x«O_] |M&_l I蟱3څx P Q07|abGF7VO =#-b\394}Rs)ǿ&5[r-ariBZom6!ueA(wQR)?J7roF‚aWB%g>eE_"i5AI7 NJVb#[| eM9`NN .!)ALE\l5klv !$N|NR lҞ2 +e0T6r]j,+p]?1V,?q,W&rNh>ﵳ|zDASOޢAJL3DY *.f3Rq:ZS@8ʜf]Zj2pc~Q&a<”z?sj;f7ϤoѿK 7R's-5ݭ(!׷;N1K5CҴX'Y!@HKoб(d}y,Ox`aUC?`23aZ0Ked;fwrͪӗ$SKN=p~,Y`4BCS~p,aBU:Za+6"h)8]oV6TQqdٖr1?`"2@s9|Aơ߃z-;Ǻ ڴP3hWfn:ti0ĮR$hN̏{ࢵ+ e,'!HgC}m}|=ݯ@RN;lɅ{YQjw?Ik|(v3PTg:/>֧a$urчha!דMmx&J[=U&Vp~4#^.pA6Q ķ!IvŅV^XU6:[//͔ݼ\v)! \MDD1++Sᘱ~30<8O; \bJ[CгB/bM84+]iݏx!/E\>аMˉ]CGdć0b=U*d\ktcng2hzB$6"i(o;ڹs=sH8$zzacvP3mWFPlb}E 4D=w l^%* Nv:^IhNfO^%Lp)^ZCmo#*սkh-^[v\w,X.+?KcA9-3yqC(nӟ#mQˁI*X1{${Ə!P܂FFփ劉XZAsi,)G`mܵN?)cK9ِ{X h;@KP_kX X+,IIϦKH8ujNu dEY#Z dJEs><>_b'Zi}|بNyD;~9#Ê{ Bѭ}kzwTnW,8[܁2@״AKag9`t)-e{*@!ưUॿQޜ[H$7=W;C$@6AOl~E1~nK$8 sz6$hDZ7^˖F|s^;^~tLlKvY] T髛2?x4v pYT%WPΗ|e~ +O7|ϲ^3qE-_nY"+Iaa"hj Iyl 5KeV\Lڦ=v2l{SQ01$J#<'OB! IIkCFإ в6>L c΍NBMlOd90? {/YCwZp#xLAc1XDaq%+|Dٲ k 9{G{R"nI u;",5.GFmE}ņi7 B}u xD ]b(͟E&4o=>)ػ0ƏЗʡGc2"f[x]=X/MʷKPQ82FTj<6i3}>gW2[Opv~Jӂi5D=4^h_`ݑ^P+!r7.NeaPwC퐐٦c n)1[P\M9s4VnxDcDz6I)˟6'oT|&jtzYx- f0[dxIJtFP}FNk 쌵>ڶO.>!%ĵ~H0ؚ0!N{[ AMqaf<3o tI f'NQOmVgZ>8pݯ@\ }R-R̼W/ u޵cc.7,OYKʱR]%wL^Y m8r6? e6]iL>W{ (;r Φ3z\"/Z3UJ|zb%:< FE_zD@ 45gJ⑗9TS(#0izĀ1K4_$?*}>mPfL@QGx^2|rjdR-(/fASV๵w$g10R^f^DWpFs#.kRpVk.{Ps+ )\ǺihC6%&WXF%1 !ׂT.>5y?O NxYi!JGĸRc0=@t +MzH (;e_.طPV߯?}r11O*ߟP8%g]&e =cF6HŮ;q{*׻BSF_v=ysmA'XYozLwrwu57_$? _5)zefw(",O[ ~5Uw!bs ժFç79i8|"*"hWu߁.[corEs%].A2/(3`o ғqƳNI];1݆љya!13gWs 0ث,ˇ 7G ]{7_?\)g v;׬%&> "b <6Z= i/&fI4T )-ndA1*7AWg`RF KA CSmQ[$4F˷Fp](4Kg͇ .xξSR}bK:{GFPʣ(A x`ސy9;C>Z/5{82]G+#|F (9Nr&#[Ҧ ]NkDb77ja3d9X NF爕'v/k$|5ȱۿYh/M&?x>dƶKHgc_ Z|`s!HK񣊘+}$qf>!8f[s"`2Aס y2_.. ~x)^!8gwU e]ˣ A5i3(Hw7#`d4$ ؚl"ڐ5FR!̝q'#x1c܊CҖ v1( I{gh۰WS k5̕g- 6k/R{LML%rQzE:xM+̲oOA{r$]35UT;ٛCvGE!ZB4Aؼ+.EcãVWX F>įK_CBÓ 6^}X]ZZ[S=b7AQG n<}m,IyEK rܻ̀TLv{~c?UAG!1VV;Yb@rqQ^ے ]9=& S+ذj˴aVǃYfna'#bHy.LC}biO꼢N̛k0wH h8y`wuGK,kf0,y6ܽ1gU*y%^˝|&Y]WaM=k_Da%ٹ}R 5M{2@k$r?I_REw0PSM2R<1  sTp"&=oKZ,z*e185/ڏ=jM{pc&D~~3%x?XVfDC9<> %; v_%<$uLÃ^a]>Þm/&[`*!+ʺLϤ wXGȇ mj*}`-Qp )cn'@tE @i.arOt(-VzC(/|pTyJ?4'61N JnRLNp}OY[!mz"IeMsdLG,Z_I+'_GzXkCFع>z( y˧P$Hde"vdLj^J5tӿ"xQ\3~5Lf.=l|^4g'L=Թ;P W(Ϩ8}ӿ qN=K!z /mWLX i~ꮞӄmzk2?SbMk $<\bmpS~|WK~8 @qe ?/+Ms:}14:u;Kxe_=RN{xB}ꕥ~51zQX*8.u;U\oDr5#!m2/qF`e+[US |46ؼ;|i+em IhM7p[̀9qVEP?icOz'VޖbVkv܂Á GEnfa o m[b]KEAҕ[H./Zf;I<[)&0őmO]G<./Ђ^v GI ;4FBt9W͹"1z 7B.%I.ms CE௺U^x?.RIKB͊ g$nZXt%ȣPyDhQx9kW (s{F7*:R0CuAf`` !ء0}4+-DDӑ}/Ad91 NvYZ5e .;P)"Et&< [=SʤfQq w6Ct%24dxzIOu4SNTF,pD!k!׵ELxau"gt~,'66X((nR Iý9?, \S󔄔M9Ό&nl EdKi6,9YL f@s- FÆixո4ydyM>nJՀw|]I;2B`4rY'vNy .겻8JeA\YjAW|Vˑv [im=kh+["{_auoA7,ͪ3;3fSFem[U]l=UkI|wyhLsWrILml쁉JFo8aqٮ4ڴ@UCJ=ٛOVdWVў93Vt*wLa8%b_ XO->9eFN虱W}w7(1Zߥ,!iM?yGk4/f*Ps4Oߎv@9Թ6[f]5|8jƒLqf%{fAIMph^{44Z~ۓfS^ZIAd\X|k+nf܌e%d$OCJzGCBt_2Nc1߸&heXDuLlt93ڇ 0q8 /oCN}-a#psJh!KРx&~v3WQ{yCI7Cso-Qnn}%Ҳ"+0E}G+щv5d˙,H_F@wNB˰aHAwb'l%ɚҖy޷qE7dHcVUކ0KA9ov=O,m02Gp3hMy>]RҢ4"6 "Qz2$wmEҽy6Q%hrO% bvn[qr 4&D~2gUֱ]goRw`2극&qM0-brT+GQbb:HUL?r'vrkq mtp:Μ6-fY+N45._sݼDZV:5( [1]] < :<$= %ɍ"/r.iӄxBZsf iq "*f|ݮe4Uը-z:EqnE"=mn {?`S|Xf$\ZR5b[輲-gBpD)ÑYKR{!Hgy ZlNRoAsʐ4롰Z\H!%RR!$\O͆#}C~wSg~quw끙/X/o.ױxyaS`OQi6%7ڲL樑1"7sRBzd9E4w /cUY{ƪH6" ByҼ:/kO_V=?a㇌0w~A)lR͕|C r]^9Rv`NVSuyG 0.Ba?z Tk~ Fݼ!BH6^6w!rL,õ˅ VVp[Ȏ,t?F9G2~PöMy $f[Dzyol91/vdvW}D-nď~@HǤ0W _,Ub'@J/X?=E>~Qvv }$\J2aChQ:@&45~ǥ \Bs9T><.&vCi6(nPk )fV+V#/7dӶbv؅# -_wR,gv\rfab ,@L|("W;6-L/z.(QUa3 '1PÇt:WC 9(㽵%8CUd::x>i,l3,:کC_Wl#ݻW$e;PIPG~ .zr|+ynBvJ]ѓ)jc)YI4v+m Db!=IѮȼ΂./G>Ir&T:4Q03(Hܗ g&#|t[TR)ljO".S6o* ZXw qOQUw&5USNt+CG*QqʲZ,[ H`U{ZYB' o#7lWf\XEznX(sq1KxzԶzt ލT?q&?OcQ:ᇾ֩q]uF<.D;QK $zv-Pv^{!k<@Zp ]JlorE oPߕ4P1m^(Uߘ 4nL%R э|N^|}ECy2 =:xhY/k560;QOϭي` YS@_^^l(n08w9ήBaQȡLhޠj0kW{.fʬֲ($O^ tVCRHH)[>8Ų PG=`ӵ.ҋÝ.*L;UvB. 1-Ǽ'B ܅4 TU'HO5XN[]WtkOg_< XХo1::wd$ %YHJ k&d\mp"3X \"mBW2ĝIFySd4 -Fr;]xquhB;|ug٘lQrb$|[ &9JqX#~LB 5 B P ^2+r5>hYH*y{?D΄١XxWI%?M YEGM H9:Q>F Q~&A™ ^3锖jBG;ڨ >O _Y#Edi&uL< \d\7hxdc=}$;@Щ:woxt4r2=qNF4AzgٜӢm]+`KʓUy6K[Z: ԯ3t\KGFDݹ}2:$f@*_s[ j*6%z1R#Y^a$l|\ ;-{|7< 9CJ+#iQ>ic͹P%k DCRY ULlS=g6?pq~քW;T-T}؇Uy<5o?\V'# {^rQn ]?HYx#lۣ 4@7e(7jdVF[l\ɠ?o@-'3{q Kuz. |_ߞ9@|՛UIv8D2-ʰ3YmO VS=C'G_c zM]\vke5G7C%@tt$+-}8'%>zdGm&A{Gg_=d=Qz\6y=G􋾪^I7o cxEI" 'RI{!+{ȡN97 m=7My˜Ś>{Iboll%Um&տ,)d:/OcDۻH*չ w7p$`.94A%n;(h }_:ٱ1ю,W֨{Yȓ#'nE@HB IOA?$({/wvImybCu'߉v&変HJj\촽4zKǢvbYbo7S4 6" % VP6JhW֡}Gj)*k6~eΠYvcڔ2Zmk ;~^@nRHΎ/34KøqS6i|Zd|i9|ȕ{Q,=}ҪI#֨m̮N29ߤ5o N_:9uD%#ZPmWNFgs! {:Zhb7{gV \|2Ī#s'ERt# ;^hW1HZu@cnعt vF9ij^Jv#v:ZdYNU\yV>X?Wkw51!N꺫}ڂ7/cp =:> ;~)_%@M2aĢ$%̋}@]4 QZ{dsF w8NRx\LH@SZ݋ Y/= xq4Y,m{/kn. F6υE0 i6Q7pCt\Ǩbd]<]~/#g)劊M̜)_foD*5A'[Ͳx"b?|Y*Y ?0EN تǴ4بaaؙ ! _?EutBHr*gG`uWzÑҢC9\~XD Q+D^yaޯ'9>>N@g+p+J|4}Aϗ\mbo-U[*i/ :F!ww(+}'?T]0郞د!U$n 0bՓ\ϛ3[U+7;\U[X /S[D#0y4dď\{2e``~"G@*Ay4H :4 G.QKIḼHlERs\m1((dX G*֌JWL|`L'BnNOw0u^_Qv6U"aײg<AJu[$g(a_r`!3ʞ P_JN#߳[j^@ TȸޮW²0n}ƇLX]T;Nv0"ȯ05^z!p OXκ|&ʪhXt pv`B EqՏSwQH.p^=˰ [/֮{6{8ZGET \haV0wFW%-eS4M=.=xA*q_\xvSMui V_jHwn2r=܌Q _]^RܫmgeC'_NNb9kwtpje,m <k|G}D$ޔh( YLϡ.wc]KAݒG]֑ Y6=odȁSvU>)6Pǀ`4ލٶOҸ@6igy6&xɂzHG0?S|VYƬ26Ҷ~]:`$`[jaK:+2٧gLs%:y}Id焵c{N#JKcXM]yڽ$Obx pv+tgH\mGӉl8'@Bs[_q6Acr{!M݊H"BGzㅱﴬfv(  k{w.x(vKWkWcR!xJzY|GoYzVBlP(ryI5FHfP*M{.]Q2z8Yn- or8-T!4JQ'Yn ixN ^Қ+w`X_ $"*!AB趢b#V} Ѹ#[$XsqeWL 1/LR,>QX<^nrF_Uncea0< ( ߏiٴF Lefy _D(?(j -L\20$u>QKeRi u̷d 誷|9}{sa}ގF- %nuKCE 8&]zĜT凉&!w5O:(.vZ҄@ ϰ|k 5$je^T `1rOv5=$̊Û<p^UOR{0'SX?*4Uql|ˆt@FپEvDDSa"a seƚYlmij-ꉇm= l\mfUQdLp7[֮g+[{ BDZ^0\Ckxg*lBOYS6l=LOӁ>Ň-*PƾX8& uƝMY,eTtY; S)jX\iwFwotiW iKad'ydEiVBO i.l#KSYyU._&aww",S֩{\}24,$[{)믻2Rok7}; b7OEE[42Ѵ$f^EB3VWE#^65p[g&(Ak~Bk#63 ޡ3bzƷfm6[/t!FEM $fwvJBP/$!] WxJmmxi"<~Ի+|tH o ŝ(L`[Q??Moas2̛Y@*#3#Ma` \aP65X/S%"3#S(M%(Bo`8ahWEdP fYӣ6mB2ceUS!B.3k2V~xc^iTIb3S5͉eOD])Aiud}ε 3Ǔv&iZYDZ RPLh#.v5-!RFRAiđ]Z&s-z@;4)@02a9J=EYY/wFxPiZ^#,9RhST%HX¹+OL$,!7](/'W$ElZ/ aǀv2W-> +e"ɩ%{o[}dwL BRqHQV$84.aw^MaLTr'\05.6~mP&ֆ7h-'3ğ R"^Xg, N3MlM9 ɞV>PB}i* .kc);Oёksow_7V a h/1Ayr_F*8Ea<3l vm42Wa>YoލcAIg$n}W !OIJnq.! IYv#+eqi64_7XAha#w0N蛽T-lz?M]7a T_xܽ-K!SB;̭=p ~ټD\+g9ծ$GNt#cvm]Xotg)cEG!(+7&v`k ̯9Aovnkqyۏy&N@c/-..脳%7cm64r}ܾV޴=>ܲ,VbtƂ'F&+V0I%q{h FvW˲;;<]mJK @%]RWWwW~m 0gO|Nk ,$auPY,;\O"2\{}Sh]?q&lƣHl^&`oxQݡU͘1H8|3]D~%(6{I:ku '盀܍| fBthS a ,~?fKuL]EF6Q6;.ZAI =' JT$TS&B"tuRI+BȗFO;u3/z>VcİZ"^elvIuynwb6SQJol=,/Se:@$8e'*dR\fmI¦V_O5Rkޓ'*  Nfikc^Eb8u=ΖdXb"m{e]3lG, Ͷ)C9}GpӲ'!&:0gX)| M+0^IAuQ*afRBVA~0n1n"-|^;NPl8H2?.P3Q,:CkТveta=WxH0o`c <9 n}3fivV9XNUx:̸Y\ FelF׺ij&` ֐{D㛺6 tyon2*0}pg|QTM?j-Flj]Q_PmkU\a:%^XC%FMfFj8MuCE,>Ʀ ƋZa hvfjP1:(}}}- .nqoȡpEldq5l5 ]PE};p;yzgzFW~r `|Od HlaW83<7&0\]c-^_(.̘ , w6 ˄UĂMTǽt<Ռl6VI 6ȜT8nnf*/6̿KB-QYMiPjq jc b͞k+`j+?.ylD\h^b9E p!fCQͥ(GS|7:J3|Qɒh ,a.tlvqa:s^Q@r[=I^Ge(QaK`)7;p ۶uull:y6M%+T>>鄂Qzq@+59qgCJ|S;T"ō!ˮ=X mcA7-'zbMy p([~U 2W^\#n6kRGltbJ7./(9F XypwY@Gg:Xa/G,٣H32{:vn38C+Pҗ:g>.I @_n}8T%rqh#Z KJ[̖qw2_&2UH5[dQR*.Gޣޔk6U3e =VZ9rhh.bM4|lZqSqTrNۿ 9a]EÌ}WkL;|'ϫ&}kt;RwHDuQïRs}Q0RO0G@AZRK5[.j9ݎ@̮ugkֽh-[)ZWD} 8)lW)Cy/ГEx~)kND,,C;vJѨ@#C7]pŰ !)JVZ}ypOuiU=tmExq- J?+G;0Ʒ^"QÝXFUv(%ԁ.+ PTs@ ̥*fi.|~s4g $^FyN\Qjwk냂1Ts?T$n&Ns:LuIsCã󦜻L;ю V}GEUc/G.]uS nbáWa7aֲ.A gYDВXx\I+c9tdbsQ<Ɔ_Xc34b2+GM~{}jpYi餓ͭTK2F>b1jre4 gD8,qd4Xlr_8\r#![xrFA,A+4BE ~^-z nvPY'?l">WS,t=;S JsJۃ4l䆯y96kOui-*Y"s68E1;V_Ng/VRvf''nPOUr"g0Nq#'T8ɡwm70hRx 6U= \E8RY꽪-п-ۜ0D ӠFe|H+ KBp Z7x bAoڡAv/ϝ'X'ZJX~ޫ$r'}_OV DV|9 󽆹 {A$E KA~ E8oTu]KruS g<=D8W<~NͶHw Ǯ:i"i?ڽà` 5;pJ=e:gtBsBVK7g45aXIRG]}vxg( % 0k枤 dN a(M&^-@75!ٴ[`&юַPw֔s[i>ZZK*q@cc/ *({JwTvt3D;~nCݾ9b>TEv7EoՄ'){rӛ! ^OEMZYhE6->vq~YTZa!};{FAwǑ/RkZ~ՖN/TkN,Xݙ3s2LA&OꎧAWi_1,>!O/G$ O}o/iRaokVNED02Tȭdi>"{y;XjMWdUDJ)^JrKǾCj2/}oFYV$`Ԉ8M ,Hxau/o-R{F?~4'Mh R[kfD#h10BN &`<{d~D.Nfag4ܙ[ݭKI `1*θX֫n)~q@)G0(϶[v)VπЃՎQ$P -X Q iwQm,Z`iL@8=Fym4yk7L.!D?vs+9CZ3EIB}״,6꾙ECP") 4 N9G!xQ̽8F[N,ťKbFE迁P@㏷ Ty f4T_Zz\ـ0{"ӚҳN֛5#+Է8~YR o \7^%0HG)(a#F3[_ .aeL'(Dbu ഡrOOe $8nm(]F{Lrtfa0k@ݤpK WG6 @Cw*d/m}QcvEcС-ׁ|Q;{ρ%˽TJ{MH|Y"j#{ J`r"11ևsA̕^*.,ED lZC!nփ 92pAlϟ& !kZ VH#MX%@슓hK 턓pAlxG$p9R:]1[4_iՒ gƫ/g߅Æ՗# s[ RY gVd1BcxHmK絖lj~wiKw]Kb=;蒍x`/[_ӇWZO@ - va#'\⟨ s"@0GXGXۂ>hKG5BΨІXNrk"JkgY #=i/{/W5оr,U(3x  9A705v}% h*ȔDAƀFݘtu*uAfrBĆS5(37'c˺h]ޜmQ&w3j?qyW 'ʨI ?pzJzM%P*U6{ g=jC짍. @FA~Ə?c>G聁~V6<<$8b#aY&Jtը2ߩG;B;© ANю;Zwj#F Ú`oylu gs)«/~)%PI#CQ}U/&VkS z!(aGj,_T#*R)5ͣ9SA/z_u- /pdna>-_:Qb`kH"9eؾc]bM\bEwͱzJj'ݧwеuJp3ux il2L LJUT?b ?!aLr؂#`xr]Q˙}5lMSSR: Uj8Z/@@\]sȍ[DGԷ,^,ʄ8 x,'h*l`L*+~>]vS_eރj{Z}.rأ$I)}(ܕVjgj )ߢpL~;ryJB7F&G046 O"`Hjh!N1``` `]Sxu66گc㎕w RG{1].N#_Y]r ?;z'.ܹ;`1_t]z2QT/k8Bvh!+6ҕր8%s12J79ӏbdz55Z |;Q JԞcW9mvY0!*/W xmұ"bS!_rNxw=?0W$ՙW R[Qoͫ6f~e<_Bi]RJw f?r6uLet`gNhBA,BY+:^C4R]U^p(q+W$yKuN =YcޢARt*C!uA XRe6=DbבsfcxPE㘦(h-`$Fjj;QN`[b|73;sӊ$;t󏧌a-nܜ/!U aUq&:/hEI^9\(ցºEճ] 2x4lGk`a4SWuVˏDBG+ޑK,&mIIjP.n g Z۹J\؏azHF`]bĦl:1˒.OQ[$:m0$sS;Oǽ˱$~rES"YRY#XB.M? k̗Nַ ͷ&y!O/UdvUػD_аRvb ka BXy$'%9F3[8.ߚ']6I3e߾MVk-`ޱE_KI ʣ` MުRƜICI26Z`_{>7K= ʝ|<4{pm.i}?A)7#c} NiM*wj(?2ѻT"RWkɦVxa&">L]׊oyF {J^Uט{N=wH g@Ŋ[S2:uHO'~rU W:=/:rǁuQ{R稪'гAXm[׳DR]Jg|R{}.Wƺ&Zu/!Ѐ3nfz2tAQ[,)OVS6&g 8g65n;2[xXU Ŷ错GgVE1)J09~RwFW0LoiA"JԢƆ7:+yޙ(gݨhVuVN;(ZTOHOkTYWjo-#e 5结%k=~uGP7ޔ4M4?w>ѡaN pDWaH? -=7/qQ{"X+*g/<_YVSK4ӿ<)w˦jcۯҰ=С$rkf.eCdhZd,3PѨW+;s{/[Fpi&?O?شӐ*Kif~f^cϪԍׄxuxż^aש&uU},Xqk +č-m.r}@]Z3_އqӂ LmHVPEXkm%rMzp)0[B[  Gn*_07'1ɕܼKTC~~N}ŽxE;c^͗3A`CP7 .G @\+EwAIv5 2 4 f'N !y|!^eOǛ -3%dCZm}VqFhAMahEZnnH Vm]|E, yw.LIF(t^u.3A \c.x+^%FjAjIi6ұY@% Ac`bV/kSJ?f };=l3 Sh~ T*cv_k BsqGK4jzK3z+қT&Lja15^ 4YBIBYD$)EuP$iw))A]+9B"PL&qI]߃j!bGS/2P恟աRmZsd&ĒЮt |H{tC1Y?C/tj_;l>y>1j#VWwKLB@Es{"]k_*E'IAƛyL@S?Y#t857"3H~aZ|xt 'CJ NX.UWv0vdOʹ `Jfo_^0!hQ'b[]Y6 21BurmX@MJ 2xH1i/Ram,npYt UFAMAe$Xݻ,үUVÌ+&v~vj {NyZ`IwI:xJ9MSr}8LZ[Zv܈@߀P mR%ըÄH~8Ͱ@  &J^3ȏ eߟO}U&]riG\/b] gSUSqB bȂ|'aC\C8ԮtP=E85WN+l46BLGO*Xh]=;2Q- +l}sA=\:FX8;$8G)>y=Ƿ=RT`e~/4YSˏiXF5@x>'i~̙~YP򺊭idϕo X{FpMǧ4yK'wF L!QRte̳/oc d!}bvt `~Sv"״&`٬E]i[t|-ZC;G׉?Î;q~1jO|yJ1U`3VɅrt'q1a Jk*S9_$óμˍ\.LǼ.3^bX2q%pgm00gCRj#Kޅ|w:@N6LGyلHeunWZVu̷2;NgQ jKQHwYK܄$W+mvm,`'G" DrՉ%͘ǹ#**a;mv2VM/ qHa/}ZǔXX0z\RR KY/!];lV9:TZ{ p pe8_eu7AAk9rhU?brÍOAijB}lBckHAX30W*UP)ش6Y N6PRfR-Z)KNs펝?)cH3b (q)^wC[voQg~݅g +# ⫯x>4ln},LOI0wbDvXurPHk͓.qҐQ4}A\Vw1 ߵ r 6wc}\y ˝v5\;di,*#Zkz64vSf'$ SMc30|C e)BEY[X(0ySlS>6IR@s|YqMy4TD`6yX6L$ 6kS s4t<~yyNAy~rHT\z_tDٽBxUKHr`W#8Cnn&78Pߗj%v#C,(b*L)8HT:SO $|v24QdHt )NٷEӠ^ tZYVJyq␊"Uɚvۛ1k?Xʻ]Vg3imefJ7$q+r|rJk^S(mOUf(gR㦥tmא3MKs}xuzlwƓemg_bT)~Ve١,[0%-z78zCW{NI,F#=DZQ5 }ҕ^@ NQP+ a3{>J[H4ǤjdkO1p 57tU؜MASpWo o 'PW&dû8庿Zw‎cϕt8&'!֜aHBm3QzC&`!. #` ޘzJs7-|em?C?u{ }&`.URy.sI?>ц|6>BXjD, {\|고hؔ.y/p5XϸrZR5vbKK!%u7Gzx oꀕ£XaCb;#_O:4NKR4ж⌁e]d 9H&ʆǯi̓ܞ̻vɂPN{L^,ijd^ȟ )W&0'y@dr72$"ߏelHl0AM)M֯"D!llfG^3V_/bct+li}m,x ww)`u y|D2`~ waMܰA*~ž~ To &_/Z֙߉nNT$ AD׽hۙf \q܃&Ve*o8m9߱K'nS*ǹ`aB_ ZpC* PD)ɣ΁[HO|C~j$wȊ{(<*fHgC1@)T4E npaE~\(,VS r-,2:%5t:u%f% fᾮ@ L|7Y |!bv37>Ɉїf &r`Ŕ劣bQŝ 0CO% B&^u]B9hi+nB[yc'rjBI@KU?taM0:{E7ktB>QkfG<Kq;w>MhQ x|snRPǫh2<`iZ8,.8f֥Hƈ$;cM\ߔ##O:#3Auh8}v^Vut@IW`GӚу͹=i$xRP\V]x_ ,岓w9İT%KIkx^L7ߪFύIѰ[HT([x䖳.R~Dѯۘzqmf0gzT JwŐyK*>`v& *Vq}^JtY8mB7w P"VjoޛCoÖy{8(=`SJ]p{+z&F{[P^j[$¶Uq ɾeFĠ<}C`Vzb=rb~2~ySy(l;$_|j#uZ<Q忚d$X4<\G~)~mxjj[GxM]e}(ٸ7V.}YʨX(;3& ~kԹi3`(u;O VͣV3׬G?2{&[r͵FeNTDt I?,LBj!3sY_\ @h؊K:WRYk9l4>"oU/̟T==Ҋ BkFH 2~kǡT+G(Վ۶yofBRNM2Xa|z `#X{J=>ĴI*) 7I)O ge[ؔh+xln\1?#։Ua0ڐ)6E `»9}r=/3  ' VN'>xe-KoSGU+g(40&QQn!jXsNJ4 YUɢ/ǦM l& ʮmtԩ"D.Re!`2_R3ܡ6\$ӪKga*G B0+;{[lIi,-6nD7p/0ᠥsZ87RP6\32J𤯄cLfz=~9q~>/J#`[w|J2lx`kX#ڂw{BweHXkS@1>8iYKc *PV$OZVZשf}snl'Q eVFxNh–,dO6Q#BzJvwYHBL-'"kCy1*%棒}1!}KғYu0JM:eQ-t$My2;9-7]pAi}&өݫn }zJ>ԘR3.RoTS+:"˾>d1G_srQAҍG~iT0Ӑ1+~;(U s =--j3D Ǒa!ˠi:CAO:`0U55 i]pn"E\`ݪr3Ѡ7,hT?JN l@̐>m H.RL3gPM_+16_g] |KtSQGDs^hR\uWBcy*c^"O3jJBZn&meKɇE(e49, $JP3f)wrZWQN6ո 9sY4F_wm(K&2]$8|1J?PM-Y"!3 'T)ɪ_:N9`gp@$,eU#O7!ʉKgnT:<7Ӭ]W! AhV@dF PYHE: b3)V3T$,+܍1rf}Qk΀Qb*\L!*;һ JG@LLٱ9i`"0<>Rt='Y~͞i[5 !]@N3)MA5Wj+=iTx6E]TP ЙyTmQDQNW[xsDA2tNIAi)LOE%B,$ɿ/0fq ߪqOe^㸐(3~40RId$LMT!9yϘXq-"uko1\)D~JyL,t֟ښ{DЕxVj5qmB弐j+ad71p?ɼpKFْ*;Bن6v]1 Z"{Kn t]U٫XIFTg8~$7Ĭ(hԉ׷P]J%GyaF>_Q6<PǬkauwƒg7@{7gIg>yHƱZ2s"nAq!O x[eB wt83}8G$Ad 0ؤi HMd΄=S5qwsI2_OUZ'Cz hX%zSAp㖶} gH3ӨOeq_bj9̴=3D#>:`h=FOri'6S@4I\3bls; ѓ&mUT "hW̭vٵGe~h2NmW al"ݱES:=e.S z=/4/z<ң lyl6QЎ~ʪ j,3C~OUF*%09셖-@Hs,6c\ae hEFL2d1n3ơc=zc#M] r=>>6/Y5Ib_zU=/a2Js 7m6~M%gf @>mg^9.5=ʗ؊JWaGv|347) 5[&%#pC0M`*8έcH͒knĎ9h߭NnjGal;;156aa&٪d5,*mz2P J`lTg'oR"D-Ճ߬kW&| g6^WMh$Ì'amF)W N[sPlj^_ ~º!JRa.\r֊ XitkYsbu9'e迩s7SCޣ0¶/@RNUyv;H@j#SOWYU(c~|opo7B :ܯ7inEJ9jTxcfUK:4=BvC3E1;@[ء`_s>x/ceѸ_%IvtVL[@U+fV&wpe kr?: *!ߡ[a< TBb aivޥwA91P ~5sMI Uֳ.Us%JVէnQJtvݕ ~~h1JJēf`uE vhy >MF(/LnEwE$-e,_ŲήvΨ ޶AUS2Hż)0K=yg=QA3&64"99wmn1]EEeĉX]Z^&! 'ܽ4v83Ҳ^.z^)3l]b8f0QEkq*.8Oa8YpyՅ&OG$pb4KP ~G&ul0rj (eNh)]3S*J{t 9=ǯcsoK3O7"ݶOCu >\gH*%cYǹ)A3'H柟Õ 6\f s!ٲ6^z(9d6Yʯ9tGo{VOx.SC*hޒwOVo,ݵҚw-$pXu5tt {K+P G(yg=V,&^Hӆ4 4jg:GA!zdq^!E}CS&%eFًZ i\Y~Q KA];^En=b%MS-Tj>TWeT>u03lGTOAX,6kϙTCHM>V&ZS2&Ԙ^+WōsC Esԯ{w7T wfP -*p9=_'Z*g;jD^#UkjUmn`wۊuMio7b&{kͅ9>2kt>8SйF Ӱ\+(ys%D?躽$_2wM#Q[`bȩub]jbQ- 96tkb접=W5qx_4xMc ta?Cڌ.u+:TCG@@(!wY9P@:6*ٗ!T m-|"G$E=Uuz + G9Y:әai-@>3VVڪհ0pjo/OKDh4+I@¬YoR?b̞EYx[ 5#WA;EvGO؎/߷K_UTP:7VO8FʃE9>ao;@2Az%iB‹rfwu$d^uFWۃ:9nGMoŬlv/ůL? Qu^yįRv\疝Tx6܍uctx]n`QlX 1>nd!w'o\@c*Yq4lCĄ^rrNʹJw}R >VE9VL;=Aq͒s&tgp*#+0~It׏!Aq'%oַNXv5bxa e v m0A*=Ո'&p-cAL% h kEm~UZ.!YɬT"xG`zo<8$/H,2@):ixcHAb2H|E#,&B9V%HcǕÈ$_ P|zJO Y/06*w%Լ<%x𳏫ß7-(Hbj5b֍5w=/24Pg%vsNk\XCzxC&rYun.S"UVib'ZAT}ש].Bx4.v~_4tHV"xF(3=|uV*~|j("K~=@AE.UpM{Hx+bj$'0x91YEG^ô_(lMId#t]Y_X//upPnpIZ?̥aF|! `h*ZkIk{1mזWC!JV)U'z$8SbF9Ż-4 = fI{ _ . utr~+4oEFk%Qzf|1Ǻ"$d `a'.b7#a乤nqϗxtӸXH. E&R9XyWa-J'LDeW#1c%ry⌊}V'Q*D]2jc܍w<ùò7R$EB|^Lv^Pb$wߍ!גB0U6Vm8{I+ˀdo1xKMsfgJ@`Yygndh3 {r)?iJ9;8ȩxl~+&wϮܽ"YOt@;Bu#8,7mnɞҸ88'Af#q^79.͕+ n!i[ UX"pױ`gF#RaNc0sYa B1ucW{dgۍ/C-y.i奦SemC*"QOga)4#aV#oǫ;[c0ҴKcCܷY#RДFߊ?!9dM*@Z^$9؝Jy #b10f#+Ǎ -S'ߥo*}fskzhd 1~k,:n%Յ9|\xf33?l]ޡv~ȵ<k/fٗ)Fr*\ӥ4:^bJU8c~^jѕN 17y0AL=NqSi7S OM.H( ڱ!_ɎנMoFQl.e*W'5>vhMOzKQaī-k<OD]A0y:u#31rBa*{r,2AP/*vH|fQa uPI #+ÃF17aB5㠶RZ74Ì/+L)  UXfB6@H:,5]󅥪h y.%Xg-ip\4>{LK*B_߽''yx1b}x'ݵ:ПӵUʠ7"-mpblئ(ʦV|-vWA3hPܠ$i$HA?@"F9-.n+3 ghGf__!1)@VVNq\傹dǃQ3|"Ľd`SC`0R?L$O^YC!wYnِI}ⲫ"9DPH4 Q_9*pOqhv߲n;w2ɼ=Hs20[SJ1§K_g>2 <'Q6n\sCA4Y"ۦw?nJrPLY/j$ uaYqkWd_ O%#O{wԁfyT(xDk-6o<6N1m3~O\6 <@K\j~YLW/sJ$5='߳Q&*;Yb|'A`dQh+G`[k%נּPx[R,BC9CA?て7`~M[65meTl+nӠHP_[21!eO2g8ӁG4. AemB18C=f?waFA@b 6|?.[2kF3H7 N`Xg+w:֧/ṑ] s_Α2`X[yv).h9(u:wݔjs {S5''a0&;.*g(AʝRyE[C%5PoVE)fBHk*4)oI蛖HC 1uߋem%!|0UZW"cC E72Srmܴeȕ4H,i,1^}G,z7Q.$e>*dKԹ*~3 ^bAj]";VPj@6sk{Ս R_z74 z SlxKSm7"!oVa׭ )\DTP܇U]QxRb6!\Q-E'y&A7~&#;[tl~d?"p9 H0bBsPO dك<v`Q~~um(F`;A4ݼMݰVυ4o9fQ1@ff~-{Y:0"o3?-\U?~ 9Eg&JtUBs}D!#+%!d+t~g{ ~TLu%HeRXVeWဍ2b=k]z3^uŕ.v`zEdADЭ{ 0N+Ƃu|\!He$m zBI]wb¦ a^ܛ Q0_ңx4Ƨ]z/K`"uiZJ_+:Q!IEnS &GF!*<_&i*p՝fAH\ң~pSD^%B]eaYcWUNc/‹5Ɓ-$Wf\ ?1K0[ʯ9~ d&`CM(țbiKWP=)b*r_½`vSj3HnXa l'S0OUa<‰ňRKF́7`sO߬ͺ">rq?=:atq+}{03I}iڪ!G_s˘U$giH߇n>)X/9Lx8>0u~})zEAEͫ'"`l+!y$!L…{/!#m֨XF0ƍ. V*GCW$ݟm<]یT~7kxvjn[-f B劒x*s%8pT3"EKM*w%YU Zv}@:pIkPccG*re.)B%Wz\·t$nfvlqŏ^wH~TNR 9hv&wypA, K_Nɗ}*Ri{N s4QZǍ,~_@.-378 y4&و9+/ \6ɛYf~;=5&R2b'w^߀}z[ tٔo֩E(ˆ:g&KxBjX\ Rj.TnKk!] '$ \ bSA[RR( Ⱦ|پ=̎5_=>Y&9!9b-p;gԭW٨"*{O~ @.h>3Z^& ?E)b"=&G= Ux eZ>2FU gzh7Ekq3>?#%oKFSڥvR W)澰3 # ϗ뮽Ъ(6}0<EcvK$߿aYmk>T PUh}%7L ?WN)R$+=ׯk0_9Nw4)/w(vTol5Qw+BAtf +,EtІ Bg o/ir#"zQ$ۛH}xS*<| .gv]ch?^Tdl",K(HCbP/Vܠ󮻁A_|dO1& +M@)7(LYgb}pUP:1󶀯Ҡo kXZ,;d2j7U>[pL-̞DMPƪuY0¹'lO֘ u{ňa~-)h1#hzϝg۲9},#wg֪J%>naMF+^.d9g-TtYQfo._{¥\#f}u *』Z_ܣ%L2 3*+b¦޹z[7ށD!AQVHnhlcnxyIbьv7)$;a@QD~,>Π_:﷬$Y‡w*p-w j +]6'ҙbdO**\m%g&7l?g.5$U 3v<tS t^'͚?R?2bk4d[E'tr'.Þ=؉NjRj$Bd,k%B']̒4 Yҙ 0rE0dEsd [Cy6؛!žxEɑb,lB 5?Y - I1h?#=N2ѐV@ P{ L@t'Y|G񠶌_SC87<A,6B O̅ۑg]0RJ"G|h`Mn9/FU-Te;q=ݨR+/f0yJh~P *k9a.>Ơḟ/gKcaMv(ke+¸BbG{n2:򝘎ݩk211evu$?p ׭|WNu`7 fL=Uhx@#FS^+( Ia.QPьI= BXkl׿ץ KgoI#0pM̎|D!+*l0 N><Pi]>D((*Th$"ݷ3Q axϖ͌ﯧu,Í>M7&5)8ݙ߰O/Rn|ϕ+fCTK2aEuaX>6&?++*LShřALiAyG6٧=ND?o4n9_$ bʹHFTѨU&cqPc.H71Ggo#x`7 `OR$2rns]!!6#VaDbe eיClI+Y|6; Mšc6xWDBT~1HɄ?T{B[٠n<D |ˌ:Ê=D;%c.A"r@q+f GbJF.&1Lng"$=5",O1Gm'[aKe R4Y2?P Z]*֘ \' V&<},@]TYchW%q#Ro( }@&6{E V(K ~y NrPA.vbݰݲ3-Mn% uPħ>VA`F>?ýr"'*Rz[?T 1J4~ߒL Wkf9Z[e@n5G YrV@X59˾|UёVj `v%-rnꄸ[V5ұc0yLD';fn _7 ̾y_uԆ[{ÐQ.wiY!i$ O hoAfj ND^3 I"޻UӰ;}Y%yw YB ק`C!QxƪF|#p2 7Ny^NJ.{w4ݣoɩW4fJ.#4pS8bR!kJE#c)&l^jDKV1C\0 0 YZEpi/data/ewrates.rda0000644000176200001440000000303112531361106014035 0ustar liggesusersklTEO/T4M Q?6bH70X*Ĥ0HK,P "P1PBE ]0Q,$} ?\f97眙-s ,ʵrOK?9oGxMT.vKYMj@SeYYb2Kleg-("#cdq,,`D#Y_.o^3d%aRL>l p2$y i~09Lл0@Cw%6< j+cӁN^y2QAr,=M|Ns?Iw_ګϗM'`]_ ÅjsԮNme]u{y7Hm=)g^O<NOW[H~^G2Jﰫ,w=y׷Wh 3 S{Ur^A|oC:-b#m=ϯwXb{fxg-6FEbWk*-w}7u /}^Wy_Lݭ_Ĩ<b"Tmxp'Ey@ٯ1)[[GOy&>5\&սjJp/az=Vqzy{.3 |y^*zڳ < :BZgDMkzW_&̧VzK{ 8y ✇|f̫0 Y}FGz˛ ͣx=9zkǾ~}a|}/}S==3=˳=_YY>г<߳|o}=,Y>Գ|g=Gzҳ@W{=_Y~g=_Y>ֳpB7zYf=Y~g=˭,?޳ݞ'z׳dS=O,gxz{z{=ˤg,e޳,zeϲY=˦g,e߳,=Yrg۳ҳ|g='{ԳL{O,gtO{,gٞ,zѳ|g{ٳBz,gŞ,Գ۞=˿Y,ܳJ{_YC?,ֳ{ܳF_zYkgo=剏^s^^DEa kD9/_G?tG?tG?7?_[?.K?/ǩ_7//[ݫ\"?3AFoO_w Gq_'/$3o.\_gQ>Vq#jb|m:5%>Eb>7SpSY-jxdzk;f>w??HxV{{-]i/ӿRz5$}]iP#kpW_h+@VrC^\_#OѯQdo3xA]F_:5t 'ٲuf|fw̟y:9ҋ{ȇ?sQw=lx-vWv\vq){)fv8;tu]>+_< _>AWOvټ+n _UUC[,ϕ-I>!%򛘷 9Z1i\鹙9ZJoz}|ʿ_,%wWwy^kcg/:-9~^ g m)ABB_:|cj{,?ʯ<[o:x_a{@)rSC~aO֊f>NKs׸W~Mjdn?*s\;ۆ|+<ng?:!yġ[;U|;g)*)[+<|ºo)پw{TY[bN'wnQ<̋h[G(/QCG_ej+5ȥ+]pѺh=wZ<ޯYoIoV⛵ecw7{幐_ _|[K`?qE}%W/*ߧyS~VϏޜOW %{)NT~;Go\^ߢkN[p򼧲.?cOY3Ss*;oBg{='.s *}7b_q&;ƒҏ>5W\xx)\J_$g_c^OuC3<|Qz%v Wvg|go{=Sm_Ί(_wA]W`ϔTϖo*~]j}O/ݝL1̇υ+̏d?XWR /*Zb͈fn>yU![KƷ?gf)G?[z3E= aV8/{ʣc !s7F7/ 1g_%@kǦӄ8br3*R\y=An_3TÇ3o6?l̰_SKS6ua]yS3aϧe% \wS37\kϺM ru>cocfޟk]$sOMn:<sL<2C =#3V3m.P uX|.>5zu~^.wǟ^r}C忕G~^k_gB?X蹐ۥZ.j  dW*>kTzsRrU\xY~Fq V⤕ϥκO8OZGsy_Ze 8kɗhKʗ3k>V~7x~-kЇ?ʞU,O,cCJ+ZZR|Eު^KgկȟcW7Org]ߨ|Glμ-yXJ5zP97ȏiݏKT%\L.?/ɿ,;5?k-߲sOuyUܳĎg xhyc g_~n+'^ xw>gê=8ȻI`]ռ"o:?9}K}~WZ.GG ׯr?h~},{IcV\W?`N##QͿ(s04O?*8X޾~]<x*^Dw݇ǿZ)@xY~x^ Î*U#Ѿ~c׷ZG}ѯzI~+\y/|G=DPF</CtnC*:-ܽ߾4o)۪_u޹O~?*s?{Gu~_'q); 9~C~V^࿯KtNMq[k>k5gf]yO4Nx{EAU?NqK*.׹^|[~y>R+yv^y =uZw=vd_?/\gٗ[^nџ{ܷV>A =%'[#?ZUq|]ȝmּDͷOԟ<z8K/zϊgnR+BN9=B^3%^q5?gO]ӂ<7Q>}/3~I~PA=z~qsx+|V^cr<Dyʇ)gu+ =UR⎅}o?+bfwuˮ/5)}CJ?>yEsʟ_V< zyv{,,5O"9ȎINּ7Oy!+|9::]ʓyc ך(O/hqվ^OxD<)϶B^yz>usOA'jUE쑯z^>{{;Ac߽_S{zܧ-z^>1?E ?83<9t>o> ~y. 5)|u:|}x.w/5{Jܩs'o:_~sbO;GyM}pN=|WuuչzKKɸx /ֹe{IR+L K5?|hu*?$?Tg.z{rz?fsZϧE]yr8^zTPvG7Лj}]|sqcU~|Bأ>꾹7D[+g]wE=O)<0='z}?&([֥\y!{YC]Gȅq-A׳5QGߖ^ ?je=}D{_z~~W)K⾍cjIvPGUj%(s5>C_,/k@qY~kkN^.?oMP~!^sAo'"NXb笃* OvOHy{ϧ8RqւWaʺMYw%fs!mP#:s 3O3oJ5߮[ܯ/mǩeŷ5ߠxwFfC= t뼒 䩞ce}'wяކQcuSIu.Uo3/1/9~*5?x~稉K&ۄy y_ )O rU&& qO|i^'؝ 2]>#/Kc̄#y& &'#X9B:/>%~甑OτSeόyDu]ϳOZ)eγsسgUޕ'K oM; QK'/\L7֭<~>>z_O|:z؟Ϋ)-Y_sz9c_4'\hS[ٍ{\߃U-tGy?0t].vτ_#'<%v^j=LNWfs~ٯP3_m@=_uϷΛCuެ3uCBFSW\~pܯR+Ϡ{): HsE=ɸ% .SrL:Oxyq9=|"WmsaO|.5#>Ѻ輄΅U;!y!2c:,yv>5vaQ'xN7<ϿyJ]k{^Ѫѩ1TcƘkǵ5mQhM5  *@Dm^"{V[[]^Q*FbQjϥRlEQךTb4M^l5uDMVbmhkm=٪#j눺z]*FW11=k/9[uD]Ѱ^VaVQUQyT{e٪#QWqWqמǵq:QX^78d3YdfM,5ίW5HAb kXUϛY$9A2j$Z$Z$Z$Z$ZIf3r%D+VI&њh ,9&6&Zhm&Dafljh]u%Zh]Bt֙AX30:La mhD&0;%К9asWG6JQmhggcfsU#qJGt$D2I$1ؚ9J_LTHTH.H.AXsQޛW*"U:R#U:K"$:3k0"&*"U:R#U:K"$K"$5sIbdI*ґ*%\%5sIbdI*ґ*%\%5sIbdI*ґ*%\%14k0"&*"U:R#U:K"$F֙AX3$I6Tґ*%\%ŸdlfXI)I%UJT\RKJrI5K67&UT*]RKrII.)%% š9$dS*JtI.%$R š9$dS*JtI.%$:3k0JMI(%UJ䒒\RKJrIiL+I6%JT*]KJrII.)Cf3I$ٔ*]RKtI.)%% š9$dS*JtI.%%$AX3$Vl&UInR&9 š8y5InRT&I.iKf`fXd$U4Mt*$4%MrIS š9$&ɦIhRT&UI.iK䒦1k0Ě$&InRT&I.iK Lkl&UInR&3f3IIi*T&UInK&I.ia&5I6MRE*ݤJ7MrI\$4cf3IIi*RT6UM.iKָdlfXd&Umt*&%mrI;0k9{jRE*ݦJmrI\҆ufa&I6mRE*ݦJmrI\&%mf3IMi*T6UMnK6m š9$6ɦMhST6UM.iK䒶3k0$6MnST6M.iKڡAX3$&ٴImt*ݦJ%mrI; š9$6ɦMhSTT:M.iK:㒱5sIb]MTѥJw]t\%t% Yy5KRT.K.K0k0ĺ$.KRT.K.Kba&uI6]RE*ݥJw]rI\5֙AX3$%tI]t*ݥJw%]rI\%t5s&cab&kmKJ9$αkk7nY{h푵 7 7 7 7 7 7 7 7 7 7 n1bp-[ yU<8abڭ;k=ᶆnkᶆnkᶆngvngc].`6K&Nɋ$a20]aa mhD%(F6JQmhD%8Ɖ6NqmhD'8]a׋kwZ{dmЇldmpΞ;0܁ 7laaaaaaaaap-[ n1bp6nc6nc6nkᶆnkᶆnkvngvV3p;z>ܵ]X.Calk^f{`vvcڝYppppppppppp-[ n1bpm 1pm 1pm 1p[m 5p[m 5p[ 3p; JʹN{f> 3fX0LyhhD&({9LQmhD%(ƉѹfmhD'8abڭ;k=Z,20o00܁ w`pk 7 7 7 7 7 7 7 bp-[ n1pg4nc6ncᶆkq5p[m 5p[m 3\AvngvngCõxg04ܡ whCp;2\#pG;2ܑ wdcõ8n06ܱ wlcp**************************************************U1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*WYFiheQZFiheQZFih wd#pG;2ܑ wdcpdž;6ܱ wlcõLtX&:,De2aLtX&:,De2aLtX&:,De2aLtX&:,De2aLtX&:,De2aLtX&:,De2aLtX&:,De2aLtX&:,De2aLtX&:,De***************_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*W_b|UU1*WCW|۟|'!W/Y,WEpi/data/bdendo.rda0000644000176200001440000000626213521235225013631 0ustar liggesusers\]GXY"y"Aڹ=1$! !k;'7&FkC[%<%nvUםuG=Uuz,UM|c{V&Ď7xç65I]?'kgėx݈U#f_7⏍b7xӈ{F\qi܈K#VF\gF|ˈo#܈qmچpFmx{Έ wFmKgچ8#6ᯜkok~XcgچuFm3bm9#&t]3zcXo7nsnz;wcH[鼘KdqXrј~EEE^Rbw"6O-5xr'6M䓣֚j2?<|~t6jHbul} guPk\VN(= *Ow*>睇Xb2megͥbju-imтT\Z_9ƥutʕsRo1ЍRk.os|\?'/a/4ހI܎W8#>36}c `l #?$\b嵉@sſwpiИccS<;/@:=<]*!mX[ڂ3eYe'%CB1"5fx,!uʋajmXV,vCŲޭ\CZCQKe/KΝ_|/>?||xfy\k fmKO4Oïg:\svߜ}3;xc{~CVS?m$\öĤW *x9zǮb>wa^C%*@ZSt^ף/ !Lɝ=6l˔=a{uQQQbOX$V&R\BRJ, Ȅ#L82Ȅ#L82Ȅ#p,c)KX R8±p,#\8rȅ#\8rȅ#\8 (B8 (B8 (R8J(R8J(R8*ᨄJ8*ᨄJ8*ᨄc%+X J8V±pc%+.`.` fY¬`m`[m`[ml6F`#l l2e`-[ lؖ`[m %ؖ`[m %ؖ`[-[l9r`-[l `+V[lJ`+V[ l%J`V[ l*U`VmV`[mV`[m6h AKZB%-!h AKZB%-!h AKZB%-!h AKZB%-!h AKZB%-!h AKZB%-!h AKZB%-!h AKZB%-!h AKZB%-!h AKZB%-!h AKZB%-!h AKZB%-!h AKZBdВ ZAK2hI-ɠ%$dВ ZAK2hI-ɠ%$[酩IQ3݂Q$^Kj;/š2~K_eq[aC>YO6k<-Bjƾ^?kw}knA4[?϶@>9aK ׏=isMƻp{DQE?Riׇÿ^o߰ox#nߧ//Iu+cƆpWUÈ-uDq]NߔR'nY%i~bno zoRg]=Zb넺 &ֻ7܏(ތ tLRHAz!U7w~_KZyn[]Z> ?xp}i(e'o1b:~~dΗȾOԻ(7Nh߷snmbͿ;)\]P"ZS&0& _DycmqVC9bqxGPu'[6"(v'>gu6IB'ɯRV؛htƖOԛa>J+K<~H:RnׅU>߽BV׶qe~7p:ʧ 0ʾr ]ӫ<.N[0FAaOOwzQ}V*zkT>c뷷8C.[G[w9T}σġ:$SI: cA :yxM֏6N+c|B* ]B/ͥc?qskcbxVc4Ϗsh}֝:KC Oy мO^}Լ֟W5Usj&O Bi^&< Җa3k|x|0pc70pc70pc70pc7/YYyశ 2~j{%pYkc EP=?kKh9"fEE귱/stkQ+*|WNboWN"ߕەw9v7'mwq^M1tR_LV .s]v̯U c}ee/pt4w_v,y)ZԿ6~v?j'OO5'G87>1OK܃_Hzz?D+IeR9Bx/x/1{!9 i^ȩ9 asҘ㽐4⽐࿁W'C]`g8r!iIlq% d^%4~LN_+'\w $t L'*Oljcmjqߕ2{ka+};i<{WD䁧Ѷצ.7jHo1'afõ4'z}kWէnevPC=n 5qTE9tڼU zO,OL&fEXx-( h+ qo}f?Q! 9N'$8BԭFG+gʗxQ|G v?9t>@hES;Ϣ)e^&jr>$ 6źSi%N@l*-\Pz -y+X+!*EX$xk9Rp>HX-kklB^]drlUkyZVK>Z|p_5jmK_JOeJh&f:p`(n8 _2]u$pv+Y A֬|*<З:,[P \TRh }Y߀ܱ)c1!(Br{\ܩB|aly3޸ĺ)JŷRŃw2!ϸa+qs(q"}\o@ ^e!ˏݣBPj Yo$Eό5==מ5/#"3+f~>T"鍇H~L%SWF!zUiCfHYގ, iQb#qSԀqҀ>3Q5Cg#5g a1=elm޺-@IY$&C9=T(Gr{]%1h1\-acE󅏱\$uCj=3I="J/&Y.3 ]a )Jt 9ڲc5T`L(Ev^ϼ55:BxEob3s6WV|<}Ɛtõ""id61Gmtor3[Oe  28rj$=kAzDNlCTni<'\,{9^Pj&m&v~ rm4|\tǿ¸L^/-O-C$F44t~Xt'=)!ܺ$Dм߸cV sxNj}ͬ$T=SZ2+7Ad_.^oo ]`'P4%T)\s>$6g)Cmy`$6Ң6{b^0 ׿,]yM.~t&"@i(t1Ef^KbQ"1:+PcӲu̖X"-%mhU=:`d_U8sJH8.no#1 N$Ix0 &G=F׋ *$EZ ތ ׎8$%XXE9! 1XS9EMvA]l%Tj? F#ɝӽ9O[Z_0Suk#W|cvMʂ 3DY|rxAFlUHu C#`vяݍ&Ȭ ?=vnb$/醼ÞXHq^_S)7dV‚XliǑv12A*x k5ՠ@Ϟ@A[rԷhS:%DXT:ޜ :뇀uյ࿑%D6Xfru9B{0V3_D'kUV @?I`"=b  BӕMg<$/"[ʝ)TOߑG5*3{C@T'"v57-N}A{\'Ⓚ9V4x\1 viyk0p|/e {ri_*$u=2wξ뫃Q\ '[.vW/( x=hkܐ5-e/-EQZ_ !V©]xJ0 `@gHZE4#FIϫx³Tigf5=u4;A3CFV^iFmXIh>fުHOm[[Yߕ0p멵10az栕Uȹ0Ҁ⿉QDsrҟRZ؄uЧdpDG (+yXrJ ;9SB ٸIi5Jt0`H$\JLbٺ`,iPo-?=QAj&K]l$rZw.}s[y4cwJ|)pA)6^4YqO e}wATƭ -o 1k9>@ BȊF"ŀ#"u\Yt2]|0( *4uǛg-Yb}܀iFDrG Px3|;ULV]eN<ѭ~SRt;6_SÜ$d~K雉X}e-1s>)xjNjII,-sb'^e$j2! 9,)&V^#BeTSa P*.vZ!ߖ6oߘB& $+3W"DC-_M**10ڏވ:; F${-J!C1ȂJ0 _/F~zlZj/Wokϰw8snZs#(|xRFk@(P(6R4k <:n4x3fo5L hޑ&ŊWAE3y߶R2D1՚ x Bp8.G8یMBa Fe=h7%;(.=w2_Bӳ SXm"u>3+'sSV)e2?p:_VUp\ѿKg4-4;SNfxuw5Mj wt1)fWL5)]>A$GlB+{ֺ:@KRרВ`t'fpNme%]̉jVףGR' "(_ 5n8l0.?*?c0{A2(YX[+PlZ,< @6wq5;3s*uuG5@K>mHK#&p.AguXhz ~r`8)[::3Pכ pmF[赉o -i٩h`K.PyyQeWR"mm)C7!/ՇQyx4NJ{ՄWֵ'AVzCVYg_z!##=~mH݃^;ٳg1O*@f2'ptjv^"&zeI*fnr Ph'w% JH$*Br,jg¨8L\Q!(5~UYilH@PLLJ"`2yM71NĔcW'wúsrNw+'b%]YFeR_0" Z"^% `QYK5O(#JlV{C:n+-Y}iQskaFoAЛ"]j'47hp_Q2Iv'b#K N\PQ%{Rn} oo˴8i|L! !Y,}>[ I{-Epiס=n!6C6l2aS8eSb1-Sun"!oI0yKdGFf.6FNv 򤉌1;[}~ qK~6Ae9=b@{b\̊Ts QI [ A]?2kt(h<6t>70SDg'p>C>NK&]{}On,l\#E)u5[ uH1$ȢF^ φXZ-N7቏V $&X *i6Wd. }UudwF/g(Z)Es ZWNaʣBj0Zps&%u 3RsŹl>w]01L֑Ro*Gݛĸg!g:|Ǎ.uYTĜy7rS/` G:ZPD;!>pv;T{5Iǎ{K[՛ϫ=wpqqߟJ8% }Z zzoZtIB>nҕA3  JKݒT 0aЁC/d=EP_1ӇSPi}mDE5 ħl"P-Snd'E`ZtHSeMzl'-&íE&>7xJEdV9?iY$Z|'3 D3WnLE8Ү:Ѯ;;q1!5FHCt(иqp3Ja//P(2gѯ!@FͻgOȶK$dA80a#ʧdeө)U5{B6]~` 31IVRV?sD_-~]}1撩Ђukn*cG>|lb4+dpGP ڻ=-]EۏDZe\c۸) ڳMvpt,7ܢdPƱ-ES!e|&җ#|›EOӚzvd*g`3sΛԍXly쵥TEk+V]u&ƒ2H۲ ͚eA{m`R zr5lUnu#ss\R?yFn+e H4O[#i ~TS*)hziKѳɴ\1KpFިU6ь)hг Cި.ZT})KճH_⭖zsfdtwf?"F,% 3HY*] *宁 יi gM]ңzԮ' K@>TIXIZAtN<&)~1-# `ƁIP$J:@KcQU^kڊ'm ' HR y̞l9n+1ܼz ?C})[ ~pR͛N@ׅcB2b; ?'STs !#PMC׃I +;y؎0`5 iIqq.g:-4@7i L D9iv8p)`"`nQb2dɸZ 8iLRݽ wk!q%є'`^L1 JsBTUmD&SEL" S<5v~^ Wapk1%^Jcϥڡ?jY.VdɉT"^]|eYlk0 ZXQӚ|:GX~UO\l#2<\z"4DbLUߣA`0:L:[&is1\-כպu!X]|Fa<}4ŎG%SS !.>mcĞ|dXƽ"9^S^wK>Gbcq}RI_"c%DsO7;_ռn`n{:ǵLb΅kA̲ ])孽:#v1mo}(I_8MΛ z~y(R{ǃE ȼxG=v,٨K؈{kf֩_DsMw|Do,YtޖhP_GQ)O!T3k\6.P7 {\2X.~2wn}/Q:MU$II1k9 S.} u,Nc9~UthFǘ4ß*<닙\xp7=7G4p"RN?{%^=ZOTc ~ȤG%'\;9W֎ƺXI j8 4+ Ƃź*BxXN<&:1A<$є %fɦ£4Oƣ&F}AEJXBkwp~ECXH _:Ń9j "*T_ //iљ d,eDPȂY+_,늆L o2F@Tolf\9U0bfjdNJɍ,†)d9"(:L0s*<`षa/tx[w:JAB;IY),0ƒ,Q{T1|9.GTn]w#+&'$.|54DؙX{}g$F$x v!/ OЎX(9At7p[@ۅAAh:w5}~Qs MbSljҎ9 X"WV~!!&E2uX{\c$sJglXwoߠ=i13|I\@uq|jQ051]PUDGJgvͅ a)]J^4ܓWx5aY~Dq/ +xFLW@Cpf.0$V^%d*)Ҧs[@..pAk6Y* })Nf _4 Y "$<)>PeUrx5`<~nvq0Qj ] -3<D2[4|:Qq^^5^X|1m:]c}Ռ맕4=#CܬA<^~uU^o*X&kbHjh/ v9 (2>e:zTclAN2QXOѣ /0iz-Kct(J zs'BlWMC(w'C2TL zA2eLeg~NvUcyB1Q;׼x] xAQj:ڞvsHM9v`NX3m'rߏK<}j|C8pLNן/[!۠ 9ek8|ά!&K+0Mɂ(0; n,$ntMri_"7$dܢm,7J%ƟwE)qGf%Ϯ)ܘ 5(vpm"oCO}d[T9Ŀӑ@o`|sfHz@/z$L_H%9S^θzOcgvt[FaCN!c*GcIl@ܖeSv0̴\7C''f쌘FVk#f}IadzpT<5$(\B8"N{MRHy4e0^goun6a|o_uݝ삜_C. faWSص8(p&f3[&l]ѧޮދ'j'fsh }ߩ# `8Vܷ:ȝ \qB)c"ֶU5= tRlۓ*?O}'׵MWƌ gqL#LVYu-u . xe'ɂ`}n`ehJtu0t@1A * Xp?UvegxHt}) :64\Ok֢C*'΅G=d|`6Jt|lҰ\cVߦDP5z8H<*3Yf u3y/կ]\3b=T|/@rhąKFV|P KWj0i*c8]Mmmfơϖāl .FA[m&;LD'}-Y@Ts/\(븍+GKl@H{yձ""ox+T`Sz)d =A/<ܢ-ƗlRN 玢;΂>Oy ^ccZZʻ>rBcp (#N[R;$^YV: =sxS4ydF1~ٽfhvN/v z&RkL Du 4DVe8+A{ ,0}tK{1r&f~ Ж:Z'lwd^$Y>0 YZEpi/data/DMconv.rda0000644000176200001440000001735412531361106013566 0ustar liggesusers7zXZi"6!X])TW"nRʟXaqjnj-&;QAFS,[Q $;DxhXX܊01N1ͮBTكUH*Zآx]1 埕֜1 {FS銗'LI@.a`8ܠPjSeRjowebl>6 ?^Wh?i:P;eY6.|P+r٨tfV]! }d)2< `sAHM8qEun-,쫰szX=rUKYať Yֵ2ȏ@m" x2<%Q$ۯ/)PT JMԠc44|h➐~Xk+.g2ұINmbouT9~xZQMLDɼODo;RyMScT}-~%1:`{xS6l{?_fж; qi|{3@hD9VOv̥9.*<ʃQ8˚UQm|=wm0ȱD>V`/9=pY!DžQb~%Ԗ }pi j쏪.SKd:_h 2'}X]w[Q%rr@baynC; :f~,1 + =7+6-cQ`MhWꊊ2 /"*]mVGyp} #X1 aB7jo2CX/Yϼ8yh\#c 5hFn %[:R&DjQ|Z ,m#Jb,PI!aނH+`oU+,X6@(UMgVzk1{.11ELgnqs(`l5nPi_"+VU71{6W J}{ v95aQ 5StQ]luݧ@qqq蓢+S̹h#F盎a:ݚ9~AeE πh{'|O.vK<'JH 5y{p~>YXw^x'!ҽuO-g6֯/dWP^=Οܯ^РS+$O^}13MoTUW.^f=_nPkc`F3kh/qO*Zܝ;E+ھ>[-r y[k+#YeC|L.R in(8u8mCC-_i#L[k,0dpt.JǂyOZ9f鵃od4uY c/9@ wtn:8"01J,&wJ/Qӣ,JM{ѐ;}#a3P)6?;(#}hb` OKaGtkV#* MG|27jl=6ߝl觭K hS8G8!y4\j'\۞8L%9 p%/R˝rAI+r=vKN< vӥK69%ē 5.Xo@?!JhՆ `(+ksj %&3D`R(_ tM.FRBL!yޟ9ttگlˡYz+3hs'99E]VT۬sdugW]FpUqoD 3a O-s?9S)v|7:0>C|'kÐZq#eG#VV07%6zhUznV `[ZPiRpG?kGyr*w r.o,؅A9N8 FP }Q'/%rz&^H,8"`3=pʟ>-3k".5mfuőwPszoLJ` 8^qÑpQn5~J @T`-W$iHC6GY$6̑5ԘSzVzJ5'XwśtdQ0asoxcUXڥWhQLͽrQH 9'Z`W~U0J3RDQm@B,!+(YȘB?qv)+ D]h!rV'x!_osaff`uʁJM=O'wR[ 5UJ-<j=?k;&vY^NB6{{Ԃr.C2;-kƥbȼܺ4'ܩθ*|5gN)+B 1PKڢ{:C q᧗`^iF~"CnmzEڨ)3U\7&P{5XA[{QO<{#&W[WJP'z? i"L2?^Mr6L B նB,/t { V?$# H%QYa̡l"pF=WI˼w`^a,B bTNS79Zx)r ^ yɷ_OE)_Bє[z)}]<ǁ%c & ,ô/^]@j4+qFʴgX/Dyh &B}6]Xke9TH`8E+84^`OI1*&%7uZ )6OE{x)CSތd"N;f)*.KAE7BjFLt] ;aumL ǝ\%Y[5zbdIp\Du4OK#QyXo^qpbz?&霱\y?K yƾ BߪS$gPOʥ]M6"|+ؗƉrhYj?QǛvFjKJF\FX7I6o#;ti)qYM[e-yW>nwe8 Zݟѯk.MuIWJʐ:zN?=XS,:)z+. <_Je-[w=o@蔊k"t?8yx9W8c+WTrUbz$zUDVYO ~ zH㹙GؘyD H;EE!{] ..,#Z`\Va VzQ&⼢g-r^*+̢DGh%3b4fu,r`u]a#yudtuh;n;Kj8ZAn }V?"VtJZ )Z(+0L8|{%s$9HBGjUg ɁmPpq*#!{=!kg̼;"j =O; 7Q)vQJOpK.q!| $UtІ;lýIkg)j=mڒJDZn#X-mϔ&,g U$Ӧ[o͈Qp }=@~X[񿑁넑AѬS+OOH ATdO,JsjT݂ {~&7M斐wȎbҜC݁5* #WJB^Bfh4D,8b&=;m~zp  $dxڸl"(Vb*WrͩC &{0sʉϜiF.SНAAC锩_l/e)(IJoFE,9,@ʶ9!%WeN DPB=^JA[ҙj "D Gj/E#bjv^i |SWrRWUaAα}BsaL(AU88o1O=dJ(#8 ggz U8?\2CXmv)iÓemRȁݱeqRf=^a1N]sTTL<IPƕ⿛owk(g\ ~+R[Ku?Ta@p)^&Qd(BB(ugqCo6T70y슢#^4yu䊗؅ƶDTBIvV Uq}1 El׺X꒎ՉANC!N3@`K!'6GX7ox7ѫ)9ؘ_{N9>\*=ܼ@~BZ3-;_}V53'^*w^(Y3kϋQU䜖@"rd2ӡ](u8<٘m% A!<խL ՗Y;PRK_xFK3DI’IeeP yD+ Gf/%BnC\ކї$}+(lZS­B?X@K6,>;hx {Ο'$Si5`UY!_"Nl' As+ { 1ɉ.K;͢Oʿ}YdJpl-S cxO,IܐI:)"mgЖwJ!8l΄CQKŋܒm4gaJXZ.I!nl?$!m@KJ`lށH}TpZ+U+>\u70MywR/̄^3e9|r 5$`+(#e4 v~xo>2r rcZ (^ՌwNCOD}܎1,ra06}6ֳŧ$wU3;0YM_1xu2'Jӻh[oʧs~G!t~In{@+:#"-be4`, g񘇆zezTU^ϛNVX,sc~k@Fm`[%}`5k+UZ0OJO&|ʘGS뙤hV0lBQ`#ȮdM vmFSb\+6*:ejiqZ9fExhsb^(b8A(#Xpfcooq'C@pNIF6 ;2|FyVEqf/֪ YIv"ں~"Jux+e4x" L=Ɯۀt+@N.mN $c6eO7aDZF>œ//v}'\4t:W˻{Da^_+λ>d$߱N6 Ajc4TnJueN%3?+ThFGBD8x|ٙu/a&mS_VAKXe}+R0 YZEpi/data/BrCa.rda0000644000176200001440000021464713235626716013230 0ustar liggesusersE83뻑佼!BNB@pww? K WMWξp}ݙh-Ff !lDŽqD\d䃦(DW§\ ׀ >AH|ߡ$OCG";3/v|S wg@;;VvωPjhs)x}{:>p q j޽paDR? o6`ٿ}h;*O: ?ʊU9 MO%<7 -Clh!|ʬϠoC ? pƾKb!GBC>pᓀ2'Ax=PFxOc8@;u%(w7f ܋>+- u66b mwx~χ§;|GܝwYnAbgh(~gډø|ON2P.&<P7 pǁ@;oAipΆhoHwFN pU0 |h~mHr7ǖ}E>bA /pp.xti x Y I '`l) hQp]~ m2O ^GsX '}l)ȏ + Qq&xȷ=~_~ e h?~Cq('Af=WU y>ɀxha.zCPxJ^@~SP7,2ȵvWWt5go+pd\hZ7oL ϡn>;pug 6t: δ@GA~ ~m/ix+ dD}D7 ^Pk(s \wg۹ 7 Xwe.+&c*z!>_ ^ $\ab=Ȫ>xMAY/17 t^~HlGh'<[==q|p#~?7 8#hڼ ׇ S'Fq =̢ A @5}ׄr͠mZ%@.(w-E  C<ڊ! V(gCx!B=,zA0 >ـmX[ ʀ]mByh{>F>~!\Mؠrq_u@ 1e pAؠr({WO@~-e $pl`mu+,U Dy~o@;v^Wol Ie1]m}^K gcy+G=ؘȕI%l| W@Y&A6mБIdDǡLC~@<>Sb_) Ɠ@uc؃WqgЇAΉa̠CbO d))8>%g`m 0fF@/A_e7Y ^hxOI?~|G~~-Y`؃$`qešȧ@y}8m,^܂1_6cǀckQ¸O'@$a 9 ?{?~0 5(Sȏ8} ~ g1S9hlO"20[/# 4!@rfx;ho xF} Tt 0trgZ`+‣'O. SU ƛG_-#} #- t>J-4;{pk$MdzMX7"8z7Աwvo@8A~Z|4,'r8]6 I?=h!l1b[Ǡ2`G,]}]':"vL .8]^,cr ɥp{Gm~ kY @_v][X3o`I )sd8'~A  .6( <~Ag^$@T@xHMLG T ^Och7M0 G@]Fۊd4r=q.H >c|U d, ! /gAF'ICR`[f5AfO/=Y)SCXbCaL2Zdo~'G;v|PG_:dFl}ˁϐ1Y,L[!@WgȂL@~GfSi; r$8w&0)/ @6ڋv˂) v"}f Ok4]}FiF)[t1"ϡeQGqh>R7|Z `A~b@4Bt>gYEwzS`KC4ȡ_2M`c'[fب Pf'16$}9 ] X@7z) ? >EhM$@c tJsY(850f Gx'4@&06~3C?9@?9R &Чqdп| = y2=Y3 17"a)14|2n .6aX?`bhc@F_ȑ= Czx;rKW n 4] :%-̅σc8w< y9d15@8E>OtZʀNa6U 蛃$~>wL^`3Orh'0>F^_$d{৤Ag1iH[u:6Ȇr{ 1O /1  z&4򄉺 x!ׂ}πn-A$7&s7!koNːчOt <ga<lqj8 @w&!6J"П{ncȟw `Hd@&2im02@O~L<*R11:1炾N_S=d΁X3C|ƍ( ?q SH`gw@$4o0p @7Y4b )x&NsĨVY[s[޵VYm RIA77r ȗ(3 1UW2w| 52 z7y9Qbha= <LKE_?d<<C`}>kac: M¾Ц6K0"^ hI@,#;5i?ۀ4I *<8Vb}\ڀ,C|aTI7` )6$7R@$S 69Sk1O`C%Ρ ˜S 2Re1AZ0V;oaNYctcܧ@ޓ+}A;(qm; O^csR [i$4i3P1<Os #Iн e绀v yq'9,0_8Oo1|$g@me1vYK#Ѷ`La >˂Ƞ%68ƺ%@$.1ge('c]JX< }́(9,? b|rϥ.pb4 Cx+ >Km9LB,;8Rf!%_8O9 urP6/#Si$ !$zuq;yx#H.l[`AS 9Yà,? ίL{ cf#?)mWƛ^t!_`e0I,xײxm"i%0|B<t? [lY)2h{ŀ11d&ѷ[1Pf@V`23|ȱuOx5s;]x)pH7h)1̉vReptj mo1|z)ov ػF| "9 ;:511,S )= g)UYߒ^/tI?qeA^Q|8) S-,e{ݛ|g. @ 9Sxh?@[w sCn 61&9C$˂O|VH<$ (v sP YWG _N!YI7Y'bOf0΁qd?AgpnO,ȯ<˂| g}n A%0_9|P.9 0<0 Y!fȡFt:x8 8]`~ex|f=iIkiп B x- z5! >q}]_P_I[`?< xAW/9$ܷ9sEx1_cNS@e0F fѷy ) 4Kߧ1X2'cO8I`Nx3[F |87 hAY)fClƜg k|,km6y%2klgY b%ث,.E{xpœ2 s{33$'Ykf0ĸ 2q3>O\2?$1u~16i >Lo}ؒ, u Ii,1.ƅ@eo,Ч)QƛB$y`+6tp PM@$e0ό4ĘtsC9Di[O}HEqgtdN ؞$aYoü4ĦkYsJc>B|x6#|i-ofxqqLϓ OiCQ6IaCb{b ;04_DOCV ?ƛh/J@iX~a} xAIaL|$eAf1/&;@1&KY etf1s}'Shfi){)\3@i{_~stZm sDkdƸR I+}و ԭ+2"A^283 'q/vh1 4v:S"vs#ҘWB?/ 0f$)λf>I im@l-Y}d=<{u$ yoBL^M`/#PaLi O$n}[hq 'gM? 6> ~CHsH#>Y9- s$Aeq9^h7 %cLcve: 10 ̽M_~j ^tKs8 %,JBI7 I{39 ؃,7 4Na<}0/+xD_yx+ |48o>0fDcR8@%YϢlHW-M\"Q%)Z6&@7dq^~ 1v8xRBI=|,=h sb`_ҠRȋ@>S$Rn LpM$ĸY)%3r" N`'7dV?w/B4 aLKX~ýCy`.K ~I?qG@Oз;8F9nx) | 51y?؜Qƒu _9Љ9b| P?".u_, _q'MR ed_@Ya }aq/a1,ƌ_dHFqAW B=k1\1'9`.>3lzus ysF?s3sLs:w),{x؀)MF1xa<>k{‡'=m3Ӏ z6|&Lljc7Y'4|itd2>ig<3gxe9s 1c\=_mwיL^a5y9ᕳg 2&eqexf~s_=atz:Sxm1`r3 >c|Fs laq,x#\ޟc`Ykғc{'y1&zۤk39,cxBxiss>e2耟G>$6Ӥ+)L75Ōonus#q=,nq_=3}h5W>xd\0y~Ǽt1.8gO0(c6˙7m,F~ޞ)\^/M2Suw&巫.LC9Fӏ1m)n5u czθg&g>c6} M116b93pre??c6m/e4r}0\q>ĭCsL2L:E,qvO1>greKwƹL~0~8g pYSa1ô̋8h˯rp[6؞2dL2}?L~swe? xDŽ9ۘ:Ǐg|ϴc<Dž76eƉߎt~[b>ǓF&M3zhil85u)~ee覯8m| ~kګWrïOf>&o|bx^1u_>MY ʫp ,64lʼi&/=5-s#nc~ь ,Sa>d:a6#ܳ>&>M״f yl&t1i7~%gfLM! F]3_LySvri)Mebs܏}z܌yMa`|=kL961f,if xq+˔4} #]SW6Y036yҨ?,04,Oc{̀ˌXG:qW3ð=(2<ϸa(36m>̤1?o>)oa'|]6}g|<-f.W12sL+S/0?"¼lqf:qgb 3ucfibІ̕iS|3a<̧,vߘ Sc3G#wM=n˰^0s3LqoOz~/XL]c5%oG&LY0 ތ}sCXgzf,``<6Wɦn_&v;}D&O(g8̹k/O3MaҸ>I{nO3Hiò#~,/έu))=gdaC_]6،F]s-LiYϙ9T|a%f˶2-{43-<9Ĺ1W]et0\͜)tf~1/I/'Y6uO/9=ǜq~鷘&/1>^v^84a8`ԤǬ;fl=I3s<|#؛ ~3KǙ]kc0 cGO7:yu'b2 yBɘ)Ӧܞ|aʱSc҄t+.mҙa{DxRnO3YuՓFY32QM̹N30:ԃc~4Bƣ?e7>MQ(^41u鯘2?gz_81c3?ÏçL4㦏`~glw•6}1ms;ESGs |2C~3},=;Ǚp4eф}=M6?E30Ynϸ`|<ϰ|k/6sL Z,Cg2u闛rɱ턙2|oČ#L̕qz̟z/L^d{c4uo/e&m{TקCO-?{^Gi~K},C8;Wߣ<~o^ỀN[Y}~_427N/*DATu 86ӳjDx47ړ$j=G}lkm*;q !WrR* 2}GRXzXX&S]^oN&k4GyhX-|>ڋc^BLcHmO:׏c_Si,+STv *F4Eפ~V7`eLF &ҕer =Hm"iOz:LIm&G41$Z!\~DXSy tDTg8y5OϑfkSvIwSLojo ~  !1DT=klvPTg$qC_>Xj,]$}(zapHGµ7 RXv-z 7>LFQ l^Xƹpup$3;BEi% W{W;c]YM%8V&8FSը8sp<5J噗 W,]6O Ipd=G0}ҽU PF}!| &Vzi|ji?(M4c@^ V251!µgg[V[pvY^[~TϴSkK؞䉆+۩dj3S1upmۈik SiLÅkS#1.g]k+Q F>KzezFQR>qop}Qµ[+Qy39ge%u"5!\;|pT+>c]63M 1}+\.\[:uvxE>[X`Xן9?z"a"?֏gqpa>oleW}KL?IxMp0O~`[W:>Ai 6Qێ񲼰n&\Y[Dm [їOcH03W{WQ٩UGQlHƱE$}q|6؃i%\Y@ϓ듲^\Q ^/xHH/Nxb*4 |.W> זs2ӗ>&Lkӽ6?=DQtm7AeA;?"n@YG ¶פ:N.pȾq:Hj aToUW~gé_c1gOĚt$# ^7\ST%ܘˬ! ed^4cé0F.f>DH 7Inp  Wo4xף~' 2CC',}W#P9h jk 5 Wf 7 >to]j[W_Dp~ r:03M *ϧ W/1T?OM#Io-b8]p8'SRxiTv?7h5-&}mڛU=t#}vr}7hu$? ۣ i Z84Mn>(ܘsTWeʲ>N|8|'p}Η0_~&Ϻ' =Oa~AR:INFPP0CO 7OeFP}-q~peԏ_Zk'ܡ_)@pp9Ĺ](9>`o:.72pΖn@n c-|r,űtv'נ)4upnu{'N{˯#\u%j,Ӝۙ(\i8~b}&3 n2&d$a g ק'c> 7}82T:`=y;SVixC^b<2ӅnNn^M˻P9- 鄋U#"K98W=LKpCD<6T,S NVnL2]9,Oc{.!-8ξ(jo52~r.׎66n~mps0  xǚN0p?Z6sWnJeP3tNgW;stLqFY6n\:p*ak' חDM"\~*LOvGpu5!\>BGV! rㅛjgpނ8,'.xYk w^3祘9YCx{ WD}Nnq9iTı-2PYCpwUtne}XX Wnojpc㡄WqϺiglC8_Ok Ru- !6lk+SAps^ǽ'ӟs8y>b"pѩG97/1]^s 7oȾp9bM^pp}it?@s:oSߜfpuy=юnn} >_N8bpXo ecwm79ݠ۲]K,b!YO0iL92escaڎ%qr2yu/#.Xaf:q?Q17|ߐhzlJm`9y!9ӰhIS)9k 7F s1|S .3:*40?b}Յ[%9S[߭gaeWRۏ<TAmW G K1|=WXRu"ʥ}و20~m1\?*MJK\Y)%(Cؽ0ފrd=(X^ԾJOQU&*LƗQ~˕Ũg)Ox#({ap`X6R4 rS gdo#GQx+buJj) Oʡc|vaL).Ebw\,R`QaT^lmW [l,x1gWj5^E9JeEu#gaFRrWݨ0Gm/JYXh^\E}Բ\yr#*J-w'Jb2[ d$*o}|׋A(K{+_ؽ0~/0Gհߥ#(x+g`*C(c(Rߣ<^,FW1,%g\:FR4oZjG佔|q1ZQy#*χ)* ;~Rcxiؽ(:!laQj0)&'Q(+*[TZ>JV0l w)(%QR2(pE;ʧ#z\w! O90稴)Q*rډJ+J0c (4+:V)|-ŏód# FIT+z^+OG^ 䨳QE[ؘ)Wnq).X(;KEѿQpep xD]\a_Frh),/acKaᡣvgCrϰQ0RJWq\} \]9U8OJ_!J`[mǝ XcG>Tb2bmEqFgNCZ^;~)^oQK_g)>Ċg) cώv1=k~-ER(V>V(FR2YJ7j# DeQ/ς(3oGEKU GQۍ'Qw~3KYT{PJU]K ◨/V(_L}rxx#laax*ۥ+;˳Q?QX)5k[1㓎(goG(.ʩ ϥ/%Q秠01b۔b} |ԗނ QJZT~ b0Rmࣘ͢\]l ELQе.pĿ$*=] J_?A2_Jp0~{TJ:_M R<`^|rh/6re7 ?D` 1ǎdnrנY b4N1*(Fgbx(Gd<&Qi4ޠqTbۅ) oヨtץar(2Rk>b«az1m>ۿb4kAߋ},_ULNJR4*e+D0 R Mlxc맨0qSjlA:R.KD 7P?g1>at QtD1_kAx㬘<c~Ѣ ።j)(0=H'o~Z:[1l Ei1>ҩKw?S)]P?kvC1ATL?RupUb"x t)]_L` £? Hٌb8 o)yv=>~ |&\n/j{V&:rxj#mH~9c\(0.~]{\\wf_QhVX٨uT9sa REXa'*l~}^lŞGc 9J_Q]*sPapCT|E[)|G{Gs{eXQQ`(?GQXG!w u =Q]j꟨% ^ eax㋎rxE|^2rx*WJr( ruG}r:EkyUJbܶ:.Q(_F鿔 ITD9 v}^~9ruC ^v* M:^/e:?VDb<fGʥ]K-ҵM::>0aw #6n *Z)\9w#W 'agKg闎ڪkG׉bJ,*WmʑwgЩ#W6}x` 㻎]ƊJ' zG6;R,ac-ζh6R8+gj7: /ty6riXνb}D- >ʅQۍZ?:w_{/_:ʻ~ >Z|Z.Dz3|rprbg~:"{⣣"ƻYQ/<8 =ggݎmGrߢ'ʁ3_Ghg~,3#0u\Ghg;n/q}EY+uAgX?Q o錿0?[בw9t M)V%:ۥ`*WvO:{*R.^O4*G'g:arƏ Oa}8K7*,f:gapD-zؘJ,O[vʐW(a6|>pWN#ް˵ax ;Q0Y;v+R^<}+{AR/?Qpf2&<&hN׉Q24( <,cϸq _&i3 ҅^ L ?)_5 s\& S~ +Yyȏ! AL 7l]l_1m;h)_.12?x}[ꞿ lj/9O=JHp2F M 鑠v-*6/Ͷ " -t1] g;n76  ~PL# ^6aÿ1q(e)e8w~\ׄÏ[iO?-b1qcʛ%M^`&p1<]1x6݄Ca3ǟޱrBxb9fS>%IR)?8̫&aM1>>L^4xwhʐI~׆?2F<Ƹ,6oߴLh?ia:|MW. 'bƅ4'ALzW߃x/7ܦ) Cڸ4ԁ]j UYl.c8Pyc7q6fzu7pca] ѿkS?v:!!6: o8H}s;c a9J|UxyeLFZx_/v<2݅+w1?i\Mٶ}7e8aQig6'M3w^Wҕb>2mcϔxט/r͸ROnbF}S.&/1$x<;Z-ߙ.Ne צb|tkր[xƼ t3e¸ϸf:V㴍vRghm] c5piʸr݅˯ 1] rL_.<Ɵp^r3h|p􍥛Q²?Gc2n~g<0\ה W|ߤIojTy'kࠋѦoLb5Peޫ5Ɗϫw+neu4Սhd<BoA-.[koҜaLHmv3R^PC2oe]}ek\W JWw*h;G;**~?o6 *nE6/sG7y˙R!\R+\_hRv^w? ]>ӕd,c|O9OǬ֧'C?PUnus;1D P4n෍:FI2<|P 5 Og'Bu-P<d[E>n ;ýp}>:? BthO<kОx>ẍ)} |f@7S &}W߿J=pކhNש6Coa_cx}}|V}:cY -cp^>cPcx]4.Qp}gV?{ < >p 7_?XPxlu5v{|? o$z<߻b_C5qYiǙD?+;BeWϯã6ꛜ§>' *75`mo&GjB+ZO'tn=p=W(ݷP:(_-Q6a|6:~H\"[s(Wg3 4³cFg? < nq (S78m,;ڜ5FuQx);>C] g86{{@pdq@{l3Ω{~΁Hk>=8 4-;¾/ ue'ȃOuzx;|P_SAOȧl$} 6lu¥@b_eQl(c.B=\Pm86pe<: پhuQOe|0G]y+-&5RI JQתڀoG>b nAZ> ڦ3`vƃd{;Uԥx9CƤBwSI(޼h~e?n(z ^mڳ"|]OQ9%,CE4g\aC Tw*ysPH쭄TھpDrb*3K' y`ێK">FTm ҩD+l/\P|M8PDq.2;slhk_#gByE EՋ [y; ߭+:](<)STymޗ>8:?ia[ WU l|L(djFyՋI![1xxKz8A(#^ Op؛ʠc:=D|VzSC8B<]'\OBώ>*ӝ踞TڶꖣwO&k}lP|@Ap1µ[F{P<:Ty>H8Gp({A}!/U+ܠ_6cjTw= 0K. o]^"JF4B8f'OD~YPn ^ʩY,wDdG: W r໌`FG>Cp5 P} pi6xO/Oѽ?>GUu?п>%Z>m pܜOjF?/6hѧBA~bw"/8F6;ܺt'QN/#U7t"F7O=G_ M•6e!H&R9liV2@ґ+a;*~>8 wZ'GϾ#yÿqio;=Eu@o+H[H;ǵRtƯN'8]/u wCdiGz(w4A0 7yluGYx7{ ;֥O@ )P{|~ƾIW",4}]F]!sP/ͿueS0:< 9<2݀l5sT_ 5oM e+tƎ nק17wTrd.8B?a1Fw79ſV/ ֪N<+BFt?1QǸ@}#xoi'P(yT/u'1Cl{&w} A\R.ߺBuØm>Acȋ9zy* *_;)6r5(c'1nUu0x ~ΧܱPt6U¾C?}m>6]!TNWT8V%0BbLp/8Mq̵Aʠ~5~&y AcŜ 'ҌtSAZfm1|Np8p-l|cY wN0q9+s`z~ɥ xDЖGu-\m{ anPVgQ-9##9QA}*7='7BY= #nW% "OA:gvw+%SZ#7O"YCl格 Ώ5BH.ۜ}T(UC2˿JK! ;e n<KsYaN0ޥ`DxEoib 7ayD],LWob&)_sM ;o_{, {,7c ܀|1$=}U+ W^/avt=Ԧ1GU`~p'&P \GcO׭q'?P[qe|N%{ж։綤~wf#| 9oIxJG3 ͳو5>cF]|P|-vˠqN?Wq^Խ/C8 'SsCΜ "} w-abw J~^[O_B]1B~ǐ3}>gJ\|<n =rc@\Az ȭ..jjTP(ﬧ9.9)9Brރ{ Wg >Nm'O3z s|ÅVaac[<3s, ?2+' =O9 y "1ohD|/&h(SVq6'8ߠ߹}GX12Wsҋ' !τh'1zSu ӒzvlMxühUĝ]L/o"o}D|p%x.>ݽy?'']hVИQgH7Ku:}~] L(IZWB# 7q%ܳCL<hGяAR';v085p>/t&ܵb\>\2*[$!]3''I=kV80ScAp:?tr#C3zpgwMᮁƿџ@cxCmw;~ |;B\TƂ&t|пZz\ӱyGk+ӕx4=öXFϐwe}㨍aF.<~5(E~.TFXmKIϱzqTyіF>^8-Wt|(bNqp܆zYkY.Ugnwpo:csahI/cNj & 3AHY6Ɔ>NrT~ ܠ5/>v#_!lw9m" * \ "ǎ1F=ԉ8)CP77 F<A9OmsOc=*Ķq^MAzg·L"h ֓tixU7 i('O3~QٵRnQVl'QGbC.uףXm=)K1^!\:M׬Qn&j0G<1b>M}|e87]jq5bGɀΊ\:ce]@cB݉!np}l`Y5*oU?herdF>9*Ysc7pXv[#1f&SdYw_sw_tӳ'$}qcד_}~oY5v%~&Y k|JYVk=~c=oGYTT֌z}y[;{d C=e}?Y{o{LYq덲E'ZV6m'u_?]__wS&n[eZdqj׷dՎ7,OkޮyaKk3X֜W!xE//&y=9d=~<q/?lnKǟ)S~FٽAjsi.Z]V9;:X]co"k˪,0Ɵ3!+\uo1wrku?IW_G-xg*~`seðڏ{hY9vCVw|uȺʏt뻺MߏS=d|ܺ!{ɖ{t\.{w9G W8RVplxyÏm7}w˖\<};LVMu 4M믟}N=e7^]v&Nuulm9TW=n3e.3jֈ;Vs=>w~Ip(Y vߧ$p6NzlCdkWql]5\kÜǹC~v٭O>t|z\u\gח?yϟuЋg ZxY/'ܽwbu~bǗ85]zCu={.|;E|7~s2S{̒W+kɃg-~gؗ76~e[W\8dks W}䥗Ȫ9˚vk+rol8ϱ'sұ{lY7~D"T[ke-S;tdmTkdՐMK Q6nsJU.Z6{k~?}f˺Vyv>^[sڲaQM[EVz{_W{odG?礃.F6]uEU;dƿxl"1ͽ4|-wn٧s/|.afOn.[vfﺓ5rP:i4=XO1_nw懳~(k}Jӵ8azg;y)Y]ZR_yדxlOkO}c4V*5d)KsY;}'4^n/6t5saOVw-|l-x}oΓ-cf);kea}k|KǃȊW/y@PY9pQWR?ov@g2d岗G gU/ХktcZ&w0x';8닊if1.l"}nss=NwW.W@+{o:Yu/]~v{8OVp; ,Ҿf+ikƮ.6?eyگ~_Ƨ߹g Y(;4_j?)u–/'>i^[EGUuGF7uCe-X Ǝo0h/be~n򘬿Ə{}cPo_ۇGoo77)NsyսrV;\.~iKImz -uMW=ۦw3_vn>۝Çj6^A_6~_)G~V u[gzjlkMgJz}e1]o> 7lX?ok/e w4od⚻n=X?oi}q]^kIN[suo?ˆ;^[+陚_Xnk~?󔳷P12zu?_u;wnY‹Gjgr̾i"X_}: -ۭ;w7^6={ __']^W丁_Y]Fk^;GqNSw]2jo\YcZ]kaCfʂEŞYGg-:H-w7e]_/zA>pÎ xS6l^)۝{~?G?oZ'O7-ns/踵vZ\u-{9a)ǜ`=WAd=]}{#ߜq+OS55=}dO}[ɦfoq?//~\u^+T} S[SzŧɊg ھ3 ?=_Y=vIv_ʳ/z!<dO9~X~*kY|!9݆]ۦjc{0Yv}Ʌkg\'^H6Y{ԩ%yw]_ڏ|GsU2kn5_׵r|!8?Ed(~g8h\yimj8GoιHz߮?OhlGu|qsle_|c<}#8Z7ʗjnusjz9~O~2|q?˔ۯ:c.yDYhj( 7% YAA7߬w\g-㐄U|W>ı0z!J1>b'yk^-~bW|vrn7_7'^>\c*咾j>8Fq뇨<.uQ7{#:Ov~--:Zּui .Ozr74|p)_`ϵ9\7fB悥Hqqs|PuonY=˿vWyKb<|n_$|ccc|׷l_c/9dLO*_e?rMY}Kq7,6{/zuo8X64Fc#<@xqK8OM+}}S~.㖥:W^!zD/aM=Ү=r4??^d{袟3x~9;E*Θq[Gخ5~K~yn,o>CwԽ8UAn9k-wM7ߴv(q#y5=;ؾj~UvХZl{EsVE*]z]#WOjwّCtf9zO`j|y|U߸!ni#)oQgEgZ1tyoҷ~YPm7.Ps=aP~Pg=rpW>a:;';`;1.\<) 8D%/y#:n/ia}8K1ͯҼj[sNpS7OC˽?~*_..Cq?^3F=ٝc|REyVWcr㾣Vʷ5mO)yp-wp|w֗8~[,M?ި';A/@y}o>י0>^B_}oog8.!_u~u>:͜^y?fϽ4Y+zcđ\a~Gm?x^ӟ-Oypk߬x_xE~j}ų~z|l)W9ſj|O#N.eh萇Թ eq^OCi)\q^)Km,)fmy] ^; dЛ炼 -9< *g5i9 =7&>Ηy Wb$9GݦKe :^< _]+n6xy-߲=ˍ|~s:s7F:Y/[\齿j~'#xy!zM:u3>n;MkSUжղy :~y9}EKZO_@y|X e?7讟?D5oxF7tͺMxP\韯d=p>׿?p␂iRMg~G5,0 t_~i: 4^.kgӜ k&pq+{=? ShzKҧ8ha=e?DOV햣Geݴ/M]NNwƲY~%dOϜz}owiZ8BS︼PvΏS\'=뛇u߬o{SZYkYs'~9qֽto?.矇#zZϫ1?4{+zʚԑEQ.=^;6G^gC _O(Zu?i7hy&|䓏G^z^SvI|?xSru<(]po^rK|9/LvN[FKOzS]cYaƵuDz񺰦? q,y1xa=Խ~K^;mg񾛇k:oSѿ~_^*"LuT`8َzgu5w4N]v ӕi=e_qϟ.߼irꔝ9 vWx憗;?K<`,>^|8ŧ]Ѷ+5[W8^}x=6;L4?{C'k_US:ə 4ϯiwsC?-t(χ.^)dg\~(;Hrxж=jz}7n˥nGGDvR+%{te!B%j]?y 6}?sɯ*_P w i=V5r?~X}¯ x=|:^N3\QG7\ziϥxP>B̶'}t;~f|sߧu9d>&?^S5Wl??34\ͮޢ/Y3]Xo{CG>!^{׏[tZ5|52q?Lm\>/0zHooloOL}_Eƻ_{%j-=o@tqLϟ>73sN?)+߷ޔI{> WڏƮz7?<^G^;O7˕gQ1=^P* =QG{S~h4Aҏ%=8k=k{]nъS6\͗WޮPW~E,h/>)'ͷ?xٟsqA?ΰ}q8N|?떔=9モz^wLq|S}$; ZyE֡qys}q?|qO .E}|yI_Q%%<%_֫ k}7l='{==}^"Ϲ>d?]?9.vӾ?L'=엹ۻ9q?uxN?s|;չMYFvZ g1])x шýn,ܧp,vn.s(0 XR[+Wa5pH^SƳ Tts;zO N.c=|/ig`ng4=+³l9z;u>sYWEK猣<Ϗ9F3Uu:bGRֺ^'vuXm% e+ya)M@G `3u)nm֓~f8:X= `'uxMxsdP_#mx _(GmN^:Z[*[Pm!!l]:!=, d:sYS$KN8cCszxv/L6->قq?6:˗cEw8}G^ځ`#mJ\g(G"V7#+N{lF}꙾#;xtz>z%k#?,U }p㜇W_CsO;D~Gj"\ vwΤJxhag E['PCev"yDc쓍v:v۝E>@9Ce7:py @yc]7#csZpxWqqF| k_5ԉB{CMdJٕ Nю?>6|7y+/%+TIi%#(~J2WpE[v>P]IPg#2$}ʟ8geUssN=Y>S *>Ǫ4V3'| .>emꬍƭp9ɗhcF eϡO` }vl>c\/ ]Ppgk1/[e8qw!XIԧȿ@{ 9)(Gi|7\y i4?ܜv/w#P~yd*B]Nuh/n1#I4[KgC@x=׎pd֧X}G[ -5E =}}n  tm)Y [2c-0.JQҙNmD9B ޗsѷY3. F8Qf#¸O nІg'xPn8a4 vHwЃ6}utpeDNC#>}+'=e^S":7} l] c+1X' Ud9vB݂+NY4~ƸbP>/ M#g*XluPG=A^ybx^WϔixF_D+B6t#CW; ˾&恾:ȇY;`_rƒwіzI|C{F(ocQ=F0 \x:ŧRobReω N'EN87s %!,toz<(˨P?0߲Ƕףv;ld'I1d~S1ʃ ^LI?чD[zF?߫¼G۽B? c+>5Ekcγa\w%ۈӍ>Kzsv_*>=7 :>旮$}!s7=KkbR8<0Gx&W1#A/:yG1qUUo:;8OFoksDf`{tH5$Ն2ptL {xN46yO% U-~Ȉɨp%E@PxG#> .6q|>DMQ>n(S>s/S]_g69BnCe#em_6ZNNp@}53@,s '|0XVPq!4{B=3C\Qom\A8_ǝ^*DuPz3g# )7r3R8% |Ukʙ8#oa;BsBDv;ꖘT2Ž%-5P6}(o+`E<$7k9ꥭ/0RI- q/'XP=,]ή!_}•Q W?!bݑߎ2ڜ;Rh_/0'zt J`~xsM+B?mFc4nƃʹPC@8B 蕼.h> t5-+'':a}m< _ltUgRU[[;AWw+9(pbZ8Pv]}=|5wŘbim9}RIsk 8b6sL+*G<įDk??A i& Po6ڈck'HF%?m(f ?b ~/Ku'7(٢pE>;¨1ٔo5i<1N,4K\|B  _g0wуǼDuzkTqf޳f ןG}p ppC&\ b.#J>\ĸ}D86{pό'd,5x/Njs;c#)B-=~l՝& /[lCec,yGm^lgk 7@Hϑ}wYL  uԉ 8>ozppiiW9b Y—1ǂi?q j*^Dj$z|Q0bWuaq…Qpk*LN6|VW[+E`a@6.| ꃫuwlP~̧;O@޼p+m0{E(8GJj|TBϢ1K sl6Ƙٓ lB,D8xІ>! ;:csԏrGީ&-ƅs)aPtk/MkO"f!';Eq315[|pu =iz[A~m ބr''k߈Nxr F_y 6Dsy[:B%9"low-# IZDπяQ#c|ϱ[QA:kJ;;K 7z ysB_-B?yK!m[(Ƕpe( NyBS(>G[wpISˍAbE6db`Op oHcKq>H IP8~>@=b<s`w/8~B\Sn׍8xFx\ 6s qBȿ'bcaKD|89 7??ٽq~} ΍M3s&thv}JCv"7TwcymX|yFO,b]]O qjΓđs8k6Pѯ3}Y'y.9c?Uiw?j\qsE2{`~۔žϺxL>f=)T E0/ۘu \ί OEyW0_>F|}hʹCl|k?iñ }SYN9R'06WS}1{!ȣݩ1G$8w#XL' j^Mo{npu?$|AXy =~,=o7AXWZn>> `x 6x_ؾh9W0.W4Yc,O>}ٙqwFټX:2RrE)oytOgr3`*K:GzGyyyᇥ ʏZ&J\^[gɌvgۆRF w0L+ {QV͎)QUϖba}#Q`󷻢xX[}\GzG(vcY)(6ގry$ʳG-rdسҠ*FQ'8_2=qu,CA(-FgrBJQtC63Uwޯ۟Ŏ`U(ƅ,zmǝ OX'Qt&V}{>/򘄨07p+%3.>([g?+ߎӎ0Ph|H{Yɷ) i:Zu[)t>+ ~,W;;Qa(׎7#v3UڊⅨR*UfEҥt)ƴE!/EЯr/_./vt_`1tT:v-OR|bQ0V\xJ٩0< ߊDR98DqOK`Pbt o1GAG贼<E[Oޥ pURuE)`-?(4/ E})(JRٖɁbxm?GvaW!ż=!>>.QNfeS{ Qel~̀:}e_0t:$6G>z'R|VOd۰g~NwngAt;A—MːwR׎v^K6>triO)Mz.ߺ~f}֠09mxy1eEPsKԳ_9q9; NJOO69Ml>QG6^-+{:<*6EKCYˀ EJOv aPdrAyFo8[^@ڰ ayΞ7|G~/ZraDTM@kUo&w"/OyB>IU|]MzeP ~wn6Lϋ O)9sDs|M0[ҿmc =%'l;#?~#?L9rz!Zg%k.9ֳ7uY/2^c&Rz{s&_4;4Nt}AA.f͸EEL&;<ҼmYaگ#sY{byؿRD/.)l8P|FW7Yq/f1:QSN O\oͰ\?,/g(O_F${ݬ3gE!Sء" h|V.U?cl%>(ӮwGw~=axB~WWe:gFzuW8kLu_Ɵ\\sI>XNO#t6gU}쮴lo#jc2yA~(ޕw8G{>KqF{EpCKXUUV\Q{Y&Sg/z/RoݔoGaAr\8O> «'\~'Ϝ ]"D~/YwLY/rMa"t쥃L^?0I{6̏yَړbK/ADzTbƻG?#' C77ޟ>xO~r.<>{κLMr~Vjbi#kz+}fBle! IBe]gѪxڍzۃoeݍߌ^n7DO牊-=ʯ-O=CZtXϕWwxP'.[@}zbx)f?~pT_Goﵗ*eүǹgd-O\ya^^?۝ gy#⣓ƹ1g!D?2N@8yt|xƷϢGD|ߘ1E{U{ὓYyA@5th=Lp?H7헰ϛWٺI N8}F:opͣZǷu&>JYLu~s'_yl|V_Kz G}W:_{2窎}SfJJ:G?|_=^rK$ߊ=z/~̭gEkY Bi>.Œ3q3^?;3z,}DGui4'[._:T:7|u{/F_)"xt:Cm:LmWsҾl QVܳeoa}=?) lyF穀*W}zW=dHg{M9.Yu C&[{Бdm-(TF.um GވeNq%;_^|}UQg&\ Wufջ)rYv &v$@!{މOZgQ6|=._st!CӲq5з~/+hcu_靡gd1?].߾粉 W?d7D˭Wƍ"B=YWbZ)o~#.[X?:|DGg;+/N(>ik>7{n`Uڕ->{u~k^5ʸewDr|˸̸Oonx>_8Yg/M|ʶS"uMBy<2d9xo>?_~9l+2ƃ.]T+7g |:?+n9؞˅X9vz|YQ|{oQzkW\։x>A>~:N/u'*uzp~C-vm[+.k1{ZHv*?y3JX\セbpżoei~r}y߲XV>p _ZZ^?ґ|fd߷aÂ}˭Y?SpРv 7kuWO̝Mg2sҺa/Ye8 G }. KȘ+w5ᱸT uI)zjԝTxSc7){G*\~I𹘲N_QFk٥ @~PیMxGoa8K_~q&^&I$?oq޳ ϑUjLz=z \8T]v7Eyw9.ێā3㑝ʖ`zPv;@|u=SeSc+zmij|I+_A{pށb',~9b픕'|nw.7|E>e''q=RPȴ7 wu\<Γx0np ?Wǒ_p~rr|ڿӾ.utAK['Ǽ# 8vԕW(oyk.;x= WA{iy(%{Nx؟L~brP'?O_v\ƣ2HLB+7<2x=0Yg:B#=2l$ o;LseFdeTG#b˄w?:3y=PA?793|7x}uw8nS#!SnvgReqK£{)~;ZOp/THʾ_꜠8 _\Ƀ1<'[A o'7~7۷O|YK~CgKQd}QE>{3owMGOG];xj0$kf>}neh3wo:ߜy{oMY7ޮ&8̡s%S7:x7|{P5~'YMʙ-l??Vs=+?٠֑[O>^ZZe_8k)|9~S9=N)ΫmZ#G{|7(VOuW qW\|Uoɬ/No~섧|5!䦌׏ꋂ򴿞/G~?8#2#k:DOYD&^WUf{cyjިQQZeף* iޔb/k_M*Wh WIJ[}V=@|խG^i>Q'ky꾷gnZOu?&;>b3.A|Q/7{]:57WOMO=TȺwVq}o₋+ߤv/?x#/#Y}ԩU+mCӀ_Np7^͍rw?}K"ٕYW:zci2nVZ?噋Cx&suW]wn{B z>wN.Ǿo?Z'W"ESzǭ)]ҵ3%Z/~L޺C7pz~Q"Gi{rBc{ȍq蜼`nLvSL5ׯzʉEYO??3Cǔ0/>{-SPo} z}gu/C_rc=7Vn7~'dssm];t9{c7ZvrW c*͋ɮ8UOn>uw;!%TqJ 4z?ꌐdzɃNy{:2; 8ʜ/UC> |3ʸD}ߟ+%{2^oIyZ~.3ߥL n#yO!זk]9S,~?g?6J'fÿy[@=ҽλ`&\z~:GZϗqo)+wEUc#pOʻ8x_]!ſnrswb~3ݿLs3oAȚy+;^_5<@ QO?τѓ?[w/< ڵg_Eރ߆k(=u@$i>tu*7SYsB==W-.~z؞\|xBƓ_\jwu8'M͋ԟ/W39>츴TxuS8'h?_ٍg|wCW}CXL25dg_|o=N-:ϱ.8,4>i'Ηw7*$U8ךgr :' ^gg<ǎTrփ~ΩIƭ?~x΃. *LƷVz[t8gĕ8yyLg2 #zٳH9cTސϷ;.{ﵒӳ;z#˼Rx_pi|պ1 WG钽;7^wT~QyeYOcߕ|{7^>Pʤzo˓U;k7xȉ9IhzunzJ )u?T5ɇ|)Rq+*}ꁧ=MTu&WR~3Wyx/?x+uΟLCwS|Dq7ge`獧d볇8:B;xtK|yb!_|Iy}?u;RtsIޟ^>\ u_ЉSvAfO7s>z Z%O{ȡ{qTy޼g1~z}Q~+*dսPɵ/'=1%ΗCV6e9|Geosy=P~ʓ%+߿w'2[g|4oPv˕_y}Z*pf[E4w] ?+>5ΡGJ^p|kO95o҃/1@-<|E*++T>G9R/5E6Eh]iǎsZ_uG:|E5+WJ,5׻4 !ۗ;_ԣy1>o[f>r'peGey]^Q7|o;_*=ϴ_U\PmyeXSeܛGb|\C_7G?!n%Z|qxU6sE̯>xj*>/rJ?}ߗʾTP:"'U>DCyZ]w/#]Լnh{|̛˿Cx=++7_?W]Cj}c}]Ͽ)Jv Lh{Di7]g[(!1Rܑu*:j;GCGZ'S_P\w}b}Z_#o\ZHoqk(Sy+}C_7*O\2l^N ?KuwI8K+ktիcr޸83׆{+~.Ex}$7.˻~DngNsͫ1WyOlΟzsrPD|Ϡ:]5(ǞFϡ]e3|xq9|/{nNZQVis>?ϊ冯W3DEPN ^]| h:~n`YRmORxuNnzuX>8=~׮+|=$J>o|{ <\q Oz(zTGbn<ϫz?|, ~ of㓽nh|2OMuJ݋}?qY*} :| {O]oܯ;زՖS:Zn?kcgEڎ?FvE㟞j?.y'R>1?e۱ϼu{A/+ZW8[Ow{כ>dѷ`GPAI?se7JѹW}-; o/[ UQҀ[ Y}hŷFs0*+c2oK֝rm;SV;Fvg07.y QcO!^SdZ=q}PnzEw=-KTzLJg~m~*վ`w=v*U~d*:ʂ}[/Sԧi\8x#jOo~3t{v:y >1>ܺ|?_T}7Ecoz&8SO]&n3x*ͩywri\ɔ7/e: 7iP9d+ˁOv}yP~uVΌbչuSQ}%m,y /^y:uso5>(r`LG&+&ԣQdCⓚs!H=t/Ծ'>RvLPcz/#F.+KU(jBq5dey)ޠ#>Kh__ϸ{_] n[hh??W^g3+Jjw5=|!v{wH~%c`IN;ig\{>CݼL uҗ7!p\g<lU~\wZq|θ\ng茣骃_Ygw|6{7m)'f]#vuU_ML*X zOK8%G%~ K7G$ujVpϏ+U7z~gփwz55Kp8\˶7/.u/+=Qq}9yXYyq=/SO7S7\:n5wA}^EӫC[8UCnMx#j {VC`t ?_ /RQKKcj.8%NښwMxdZ"[pک._zS6hyd?ٻ3^ޟi*7d :=kW63;[hvߺ㺗_/w}DjCoq.Tv~>#emq;FFp~X<%[in͘O%_8xΨ.e}yz߫ ndjϥCvNs˓)uΗS汳5O=7G3(j/hzYxkչNE@蟥=}׎y2…t&qO۔><޲=.Sj?gM'Lh_淮wVϨaD~_\ޟ/hwϯjp#)[CG|UU]S^A|U׫ Txݐm\ qZ~YSǩu/O6;g9ϻ_ws&i߹qmg:Ɋ)޻/g?|Iz/>7swv2ymnkFoZO"_O Gs Ծ;Ҧ}#Wy?4սbsoϵ)wO-?/$O\WkU]pTͧ;':ou%Εȩswnj_fٮ瑕j^Ky,JI?;;2~i[W|?}+T/?ut~jNJYAlsg=%-N[vy_ޛuG2}¶| ˪E9|=zb*H,Qʮ>zkidEc׫ fD??g+F\SՔ}CZ&3]<.is>_ې} o?Ծ[18\P>N>|x̻.:sKyNO?__ժ$oGm{lӿ>wI6=w3*$;FlVWvuuoM|_xoϿ_N;(+f䑳*ڇ!~dU=dU!+_Ϩ 9@.g\Fdy{9tl<\}{P\[]/A/$L^}y@Y8/eVO*+}wM|/dڟ[|l < s:OYvC#?Ϗ!s s²uzx픟|.'x޵jt^%-"{>-P~\3Zd%uaI$oj+z.7).}7;Gfu.̪udߨ~>~?o^ۅM\ֿ?߹enK}9?59n~`[98 ߶5zbNyYh{/(3*/շ0c>:1Mo<[uv9pwz5У{>fN~/9y$tl#zr_֥+sDG&~ɛٛ?S?r砤>.N;jX?yR-c,?Q~<}NW8[;]L~rcjhw|jJcsxlX?>9sM#{xz]n/q~p0ѱ6q לLWv@wUKͷ][Q޺xuӼlVռ>ǪϝK?s%\^5.:oɷzۜ~zJVs*eq:?TxV\{W?^΋i$I?6j!"#ޟݕsn6DW/Ȭdpڷ8i75b+t>덬ڇ< t:WεW;ͯ.VeBͷdE֍B5'<ܶMKHNnO}3SAI@H D"BQt%Z҈<K:+R%U(pz"&c|c|Y'ϽgZk19?r>ag:<v>8y|^zƔ#G«_pR{??<LE/[x'ß=<_~d!.W6d;wz[}* %sg|9Y_@Wl>57mg{?27D9w/v?wݿF8xeyݹ?n aU˝aA>`_[{C8EU/vӬ=~r?Kߞ~gT4]O pR~}c: wL=v<œCvr-]wc}ǝ?伸xwyf_/{?+_|_~ba1Wv🋯[u,?~԰bCƝ}qz,G##+~Zߝ8?Cߎ?|7a _w_w6o<'_yv˳xߋcoi^RX~ܯaI8J: yeG?>}rnzgouzη]_lSV}+6.+-G'}K꙯Ϥ"妇#ߘ~q6^s8qg~-myZ{Xُ<}Oڏ;Eޏ/'3u~dq%3}cMKkg"3e֮_xrBynNt/N?-Y.Dnz祺6?u^>~U/!}YIa+z[޾,7=,8? K'/s2%~S'ޝ c^U]^H _|Քǫq.=d1}o;<#x~Zv>]+m7yzg8_"sêGpYJG-~ /?z{I||ݡ{U_ߋ뱺#rJ+ ӗ珎&.XnȮ[I+Wŷƃَ ,ڸ悵?_oa F>ډ-6nsF +؎Vn"_N榇}0}W缔0gzwH|aݒx|huʿɴw튝iƳK/G~J6 !rG";[U8?ߗ֏7>{C߷fͺo[n3r_֧WWc妇U_\ID{桇vwv؟r6J3.vzr-?ϸ .Eƕl;ZnzX0oXfsW+)o/-u|p7 ?O >g}.2bVxy\}*| Mko1] Y[x؋~l^_??5v7K~!n]z|pOϻ7@Z)7=θ,7=ԾmswM+w=׳' sQ {SaMG?t|ٶv[_/K???ڕM߷[?W_y|E>/=妗Y|->E͎wX.|C7ۣ̿?r}~Y܏j^ކyʣcL榗yvܰhOr>03;a8;l*ytUOpC/{>0K#ѾK_nxX"sn a~6o?Plq]j6Nno˕kӼ0OgkY]Ҽ7~#yOxnwz);禗:i}ճI;n;KM騽gKz+-^ovOs%?{c/[r#k=79:ͯ狅{VS{Iadgx,7=:;<]_MZI~8|)۵t6hy* [L>Z7`m|'%b7_6yh} rnG$}^M/z"7=Znz]lb~)~Ϊ2?&ra\kc7(n|W\9_%s oly.I#֯c~&n.?gY妇KMQw/.J9aCr~k 68~[{S896_2ޖ7ONܲq‰t0)7=,q0`y ~/K߷70zGc=v\˗<*_N䦗<.;7W \‹~x]n.}7Ϲም-)qvo0FMϔ.7phh-7=ןoK//~?wcc~sOvOMaծJg}8vܛM/fo|rr$yryDnzrs:`lke}t~3KiX΢ljp>}|妇ut>of{zryeI|Oa]YnzX]gMk:,7oZnz;z}u`_voіF~;ph[״YG쯎~/ ~7)KhxjaG:M.+?;?37pms;|k'rsQX>|6O>N䦗ʃggF(zr矙xaot ]XnzWVo:_<0!gK\&/a,7=qǸpJr9^[K<,7=q3-ȋdrJnz8j^f䦇 ~>?IMa~{ځnHQJGuv<׏򏋏rA^p|8/hT[y\"lg\ yڛډ`<SdnzX~jScX~WHksdݲ3(.jn|$O }N\Ka妇\fa=˹e[4f?˼2/rn*ϸ..妗 ˳>j#qDY?'KZzzY.<'ròCcᐍWfoq<禇@\yKv}qvyQ>>{ha:ry7H;M6d%_7y=b~C'ƏUsѺ/|r}_?38'2vzbxjwa)OMoK|7䦇C}z ϼ:rêy^妇ew#o?NS,7=Lja7孎ynzؑ5rnznV2,7=%7=j+g%pͣYyKܓc?yȾ]9xXrR?Ƒ8l7/rj;-ס>̇/~97=,ۦόi8{MK/tj_6_qz4,܏f,7=,|]Dnz?m~Yؗ|ys(˹e~gq(<_m՟Slg"7=cMG=YnBXb/mlTYnz釺p/Hux=Z{Dnz6y|a_s"7,X嚍L䦇=tӑٛ^|EcFnzg>M{lbJnz8xm~妇Nѕg?1 Oae\r~8^Dnz8|Y:Υrf妇Ǟ%vȮ,ktm8#Lx_XnzXOp{Dnz+ESr˸|".njnظK]-o65{|yN~H3%7=x9x /H9ږML䦇5ǞSnzXyS~f>{6+ec[nzXz[vf 2&rzm|Dnz=my, kǃO|Vsݟx6#7=XSZL)aw8vYR){ha ΙS^eJnz=i;^˛'}R^Ǵ2ǟ_ie,?=m~7m"7=,%NyaQGl˸o9g\Uj?zDnzer^U'rwc0|soĿߵ/snz ;ќ;ʴ_~/{M/ywF)ŏl9g ^2c=)7=l7sá_V|=6`yYa%^'srl.s^uVnXDnz2/–'禇ɹaW.:43MM/g,q&rF/-WrE> ,7ܯ7+7=Csn97=ɔS/Ϲc_%zcBʍ͹%rñxd|>Dnz8ǥlXN,v_i8妇/rCG6naDnz8dQ_la',V>Dnzg^nyxrXxԔ2hQ{NO v~;Hkgw/u䦇UȾf䦗A3~8],7=,^-榇=yQj[MnjK^[f䦇j27=q}y3r1w^!^-7xyq1^f䦻rrnz?eaF妗ܠj׻wy|sÁ?.M䦇573#-?1,~o-st^Iç<-?M~Qi;n^M䦇;{禇mL{Znz{Q2OPGsÊyve9^6n17={+qO&r XN]g0%7=[ݜa/ujW;&syN!㒴^t}M䦗~k;Qnz>^|)a%M/LaX6jr󙖛^s?P?^7M! argzv?ɹew/?)bnz;c|ޟ'r^O{mk>X?9?"7=b2/k2#7=A>M?/6z˹acߔ8rKk'b{MgOMl^6ƴqYaw[nzX&;.hy!P|妇kM 6o˱7Kp/%/M/^Ɣpy׷77=l^mX?܏Ҵ~6M/0aOw57[nz؛gY72ZYr.m&wK\<|4Jg;meNWr6TVY=.m]oe0wݬmͳ歹Rg+ǝ[ZӶVf{ng{KjZ}j7yǬw []y-S][m׳4>mfmi Ն7{>9;N[ifyY`q*fZYmz:絛-Ke'>R]yU~2G_}˕W]zg_xBpE_θ,?cW]_tc.{|p^>ޟ^OO}5Sw^z7}㉵p&MDIIIɐl\<ʳ ! ^0O@:y]ǃkuiYƷsgvα*|C!Ygt8n05̧߭N+cҪRaȹgUӊ<47x-9-w닥]C6Lx>M은~ͬ/ne/owS}KH}םm?̾MuůgRڋ<=]wwWyϝ2ҳ˅#8ټ\NUo.} qxe|/yI9BcYٔii2LFIrnihZ6*Z_&` W,PUZY-C(q$2ڡZk[ZXs/Vg0Uaڴ-¼.zT[+MbZ[!J%ԣ]ec,T3K6nuȐnd`"_y<Ԝւ_%v}j'=#zV 4u^-[!,fb#ж%1lbV1T1B^hHKb8AP"c @n 8hH5-;Զ'rx% UJ!XB(SvI bFHwK $/"tBBI!1Vؒ*Wt TU17Uwx otvJr;-ǧHj}ҀːKGY.Lfdɓ&L_ӭ ֚m/Xb,,A.`zk71x娔 o ]AL`!|YA1KPR>]Vb"MtPjХ& >]mmmm1r&0ik`y8.Xat3UUID$RI$IJ!$BI%(JQ $I)D^o{]u]333 4*^Scݻv /2$cX ۚg0o.cʒI&gdfl@F[W1Ɵ)f]y=,|cKc4[$kHTB(F9UB*)K H+o?s?zf۾N"Ad*$HDJE"ZqxZ!_qa:A-_e}nU ʴ^A!6gnl"Un+'s Ӈ.Ήeᦪ0rvc2`// SQmMMMNLHZoqrqTRJ*MҥJ&,E$B**%K THjE"OKKgO dЧD61 "KtBBRA@Dy~,PRĂ#VrYLHDƣ:戒"B͌ DRTtcK_>ld$ J2ee2CM0`ٛ.=,2UY-%PVEEgWS>e_.ճl)?fe w5s6_a(4!4RI)454fϳ2ѭWOja,,V7wN+IS^[G[\+5|b 229FUhFYԮe!|O>|I&L2dI&L76"k͈ڤ`gW#tF=頌EJ!_U 5 e`-,n_;zZ J,x5 @ceZ L̔[ASo #hVНjPlS8.9YL8$&D$H"G 1=rAMU`#[8ax~ز͙E} 󕍊-eD#/襻֤ۣ0viٚ4r< 2Z wPm#:O):WΥa0ņZ4ruX.0ʶV`u/0Y bFukF6-gh60NkjJqNPr-kBͲaT7Qݪ aҴrJU8@SH I$b"#At+ot>_BQzq4M;=='P6χ7sCqˡB } }p`3 1xKrRDY:㄁z2?>F:u(2朖'f&xhTr}]f}R~ f:\KH*,XbE,Xbŵ~jX;d2:=8TԿ|A{E'L;or ,*"/`P<  K.r˗.\irƍ4hѣF 4hѭ1!~tҕ+U d c/N^:]+7qց#-nvꅀY& EH"D$8"DYYD.04%`q{̶WX`92SH65lm0.=.1c?6٤[# :6.f1""DҊ*&k.i6I"Z'sL) O.p!Epi/data/occup.rda0000644000176200001440000000045412531361106013502 0ustar liggesusers]J@'Uh"= D&"]br16%b>| }L30vfv401(P{jK9)a|`GrI A>7PګPo/8'޽cS"!.RME}?1vA'HW׿]GƒkOH~n-FO,ij>ߖ)+T9>s K--K[7" 5nWxV.]}Q7Epi/data/Y.dk.rda0000644000176200001440000017662712531361106013216 0ustar liggesuserswEq]e :f6+& `VTLP6cBr!Ð0sN }ưUVӪ;}W\_xEUW+}]W]RVV}eەmC;n_ve;?l ޹eeT, BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( _* BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( ;,QVvNuww1>7[ jp0x5G= `D2xr'<O3x3 i,6xAˤ2s :+3h<̠2 :/*3h뼸̠2^emu^VfyyA[emWu.3h ::*3h ::.3h ::)3h ::-3h :: } Zm Zm ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::ESA[N? ZmFOAm? :Ett0h ::=Ωf/ B}P( P( [7BP( # BVpP( [BPX( ­gBP(nBPZ( ­wBP(n BUeBP(nw Bp+P( [݅BP( v Bp+P( [BP( V( ­`wP( BPip0x5e/6xAO5x5x v7[`WtNw6g?6 cMA```Ak 2Xkp68$ 6Q >cI 4{ 77x/3x Z'E}2(DOt4_Of?HOt>)DgN'EF }6(DOt:EF }>۠Ot>iFɌM;E}A':E}6_Of?HOt>)DgWOt>ѹO%="6(DOtEF }>ϠOt>96Ofl!?3(D >)D O%=ROt>ݠOtn#dSI>k >)D >ѹO%="}sA':E}6O}>)DgOOt>ѹ*}B>)D[ >ѹ*}:E}S-EFISI>E >)D}RՕݠOtE}SZG}SN':-Ot>ѹ*}E}S2O n#GDOt6(DOt:}R՝A':EmPN':Et *)RN':EmPN':}RT#OME}SήEFISI>E6(DOt}RՓ<֠OtV}SN':}G}SN':}SmDT?pA':E}A':}RT#O@':k >)D n#"4(DE}SMKISI)DOt4(Dۈ>b*'`N'E}A':}RT#O@':Ot>)Dۈ>M^fPN':Ot>)DG}SN':mOt>ѹ*}v5(DOtZEFISI>E >)De:}RՏ٠OtE}S2G}SN':G}SmDT?A':E}A':}RT#O@':7}SN':FI@Ot>ѹɠOt>>Jx)Ug]h/epA348@` lzm2<ߠe8}R~}S2O >ѹO G}SN':OtnDI':{}SN':mۨ>NRN':}S%DϐOt>)DoP%DcE}SNߠۨ> >)D nD΋Ot>ݠOt/'r}SN':7}>{dA':E}sA':Q}"H':}SN': nD푢Ot>ӠOt/'b}SN':}>{cPN':EbPmTA':E}6O"RN':-Ot>DwOt>YS%DS%}Ot>)DgN'Q}"sOt6(DOt:Q}RT#O@':G}SN':ۈ>N֠Ot6(DOt:KISI)DOt6(Dۈ>b*'&Ot>)DgWOtn#GDOtV}SN':}ۈ>IkPN': >)DR}RT#E>)D >)D6O؟JzD ŠOt>ݠۈ>b*'E}SM}Reg}SZOt>)D&G}SN':}SmDT?LOt>Ӡۈ>b*'A':E}smDT&/3(DA':E}sR}RT#E>)DA':EFISI>}SN':-Otn#GDOtE}S2ۊ>GlPN':}Ot>)DgV}RT#E>)D >)D6O؟JzD ݠOt>۠ۈ>b*' >)D] n#j A':EdPN':EjS(+;R?٥f\ާg S! ξzW?8܇p_7rUSVT :PFȯj w)u'p8CPyx:<=с:\ɟDX{nC=Uuq?>js<VN\9* Kt}$3GD>h'oWx0+A sw|L+ƟxP"^htnw.grp=O2]GCz+QUh'(g=v%?d]!/ǽ{w-w>c5~'C>w "ӽ?1k=\tÐnb8y µ߇tˑnk/4@绁C' g{)ꅊr<Q<}OןX^W { \o>?Fg|~b58?՝r7c\EXjr jg {0 wGza22<^HL1G:߱hP+s< EvgAېS>v;[7e Dd'~SNfjD~>ҟ ֣=wD?!][w,; n4]uL {#H?]F7Q8>gvDy#' (ȕ~ RAOYOP^'wߌ|EtGy|pcF ;.⥖CTƣɃ>il_m pG.kɡ[ &WI,w*Q/& G"uBQk{oM?pu_(­\W ?d-r,zpf7g95^:f^tf,@ x>i?< ǎx>_ n>xC>>֌y xw%W@[!m^x~f_TߞX'}r`QBC^@#SOx#A}zrt:DDqp{ރὔNSϿ{@}g\Y~dA~a?Np/w1oϫCx~xn& yOqIw*{> w A8vM> ;roi 0+1ʝ MmE9Z<ފ|])VAe3<5n_?>^a%9dWlg{͂{A=9>C:9]f][W3}ྀ]< BOA;حj~SW`f5Uw}ejXg'<߈ _U$#ΎX~ƸT?c%K-c0^ձ,ߣ[U 5 z!woo"ʥ?<3|e)WIKB7ސ7[TQq M?z ݉nbyA>~__ rik\?!^Dz#< COI{F,&#W;r^}; WO.ީW( yo/~z5垏|/|g?2 N)h,"cX),_3QwW|Sw>pO+Ox} { =u65Kr 'g ]`|Em/Bz7꣕?-@n{#~h/a@=l5o.[kg!tY]]_,|[jF-OpWcgx> 6g|ӯ)ߓ7&t9|CH.9|,ԍ o d~1{Yc ovAz0{Q>9x LYg:mP|]]~~9ߗ]/~Ǽ~ QqK0U&/$w:?)_5rXg)/*MVԓP L~LuxO?_ {uo ]"rzCs? p]O+~^<k8Tu|Wu{ |zį=%o[Xs/r{>Y33_Gw7p= yOAmD>=i6Bׁ?rf%qxgsȳ?3H] wDh Axom/H_:p{}vG| 8hd:|_jwю'*zɯA_]ߣQqQ%ҏӋ>?BփZ%9gW@: ɐS=r;s?RdW ìW\>UrJ,xRe/:Ǡ>!N3pC" fyFT^Dxd'=,{ 'sj>9sxFxo9B:ޥҝt ; {>XF*O|L k!;r 띌ҜoF=Y<'!yt<[0⾪t7s$9;<{=YzJ'%1ܽx&΁ jog{֓O!|K_[~B&r8?x'k oB+|=םk' %wo^9\5P"xw)75_ _#|y!z)X7"?:pp;.@es,\~z.Hgp?z#A)߱}'_׉|t=^y3h6)x v3uqV7<6F`j5 qA84IDn+5y~߇{ oU7"ɐ+: _\ڟZRW :E<ʯ*K X?1'>n w%zun(?`^$kS$yz>*'!o?G|G#r'r6C;d_Gd__fӏ"qx3[xdW}@:mߗzq'@Է+)D8w0n^<R/c|rbq>{r|vL?y'M;ʕbyj R`rIr}&9pc%6c oFȕ<r&C|&goEwBHȯmڣn[zkY6;~s5`q7P{Kh: _(Q/ A9E'5??ЭjC!Mcρ},]^ zOF:OR ףwv刧3 ϯ-Ļ}eEyf,;8{ G>ue߷Ao|uqzTE?wSпU%_w&|+ʙ "[&\ِ+:rApoʹr_5<.'z&1dV% P*b}a<3J+~Wl"o<˿t/Bގ __>xQpH韸D9cx}}fG}fA/s(=}3KE:$w$}rp.-@Ƹry*tE@9ܫ 7t=x㺈w<]-&.`] _~nBqG:Ðn˾H96vn:r8_r"F|7u_ߎ|OpuUp^qbҭ= e#R~7,:OOM7[p8;(Vϑ<>ʗx0?L1@+ ʙrF8;)<ug: CPC=ovWW]៾-}{x|q^z{Ͻ{rT.u,Sc\|)tǣ~\[QSPn7-7ܫQ_~[\OKӓg ~;oC>?L@9/o#6pj=gկk64W|"ߕ\Xˇj?BK%PeV kyA9#ެ#Qpyy)x>5:WWGG9P!;x^1<oxf!ˑN~/~ Y?.oz$%Afj~E{纡s;B|M{%/WtOq_yׂýnDb\8? xE:U##wu9C(',9u"STC>V/ӿ_O+YX; x(UwsSH?:3vG\??w\r (z VI5"^T2#*\Op{Qϧg!;열 t&?OweϽS w Ɲ =s*9?6MHos/餾C>@^X'ڟqOAZr;>As_\|/p_v).5݀=W&gXzk羞k~:ooNA6zQ_n|[ ߏ-i5/Ai5znZ}5~x G3[u_{n(g[h_>VN[;eM<_%X ͣۂsҐkVOp&#΍ykx㸯^E{6#N{T{ WTmF!qH`Qo\X3^Qe6ބhw?ݽr' |` YڍXoP8\_~@OwWOF~#UGz%¸ "O56?nqCX H'ߝQ&羠䋸.ÃP>ՄzWmw9|cٯՐN"]QNRW<-ԫzQCg]|o`mwC.<Bs!j"\D}yNoq:g//g%4Ǥ=|'>??א_oxߤ8lOMN $d<ϔQT60YO)xth/!5r$?A}Կ:N{$^ Vmɕoyn<-(WH㮕cZ!~+B|'Ѵ&vE ix@<_ ܫwu9¯9V VNx^;Z\࿀(1#?gq=x&۷߇\'O;9xu;^zI߀PƷ\C~phW xY!m ,nF8[.tzW j.{|zfĿ؟c?伪;}zpǠ92 v.Y Ώ6XtΣ c滊Ss)-+rx<PZCpGAslDYϳDXx p*Wk!j@g]\?PnE;$rF~jnBƸSWu|B~Ohu5q^>!_ݕ;NE=yNAv ϫO<r}9eA_Av3C{61`vWү~$)ԗS-?9*S?~{NSN1LA*ȝ=?OS3!Wi|r^4E;-H7u 9&Y̧Oq9W`;˵s_s0ӆSm7Uu(5xM.mP9;}SWO8k@~~UnE+hvN..[}W h_o. Y=n;S_pFp{?n0¿y~󳕜_I{ùv<8^uOOۿxS5ا]]9?>V|˩O/{#+_}hoOO⾮0!g>#N^x hw,X|UO8PޮoY.yvwt@S"E}!gD'A7GIΛ%3=$L~e3ӿ:~#܀NrSS$}SØυ`26Hh+׻[y}s5ߖwǍ$A4E,wiHcp} ~cڿ+p=w}9 /<*9Xs+h k/C%/:|p/<yG 3yY<2gp:׻Lx2v"_<_ !P;|~ B[AG/:cx.`<ܗmKp\_vEcr/t9; %!;<]hwO*ucw!xA ::]T%G(W\x)1U.(v!Wt 䊮Cul - {~y`Vh\7!'wE'+ w!B⹓i(S\R5zG: @So2pIJ=AE&}9~\?wp?q䫑~hۛv ,%NYQ*3(_h_WyP޳p{ߧmx 9^E"ԅ?k$$ƸJnxr'7#$'FѧP sZG侤p$&i/,%亂lcPĝLL Hmgo㾨]ڳe rmԷ!fn> r5q=eDHq i6tsu>ws5ܗ\es!+Sop|RZr0X ٷyjw/p!xN죹> _ݔ>Gp~j(`~į~  b?l:4Dهe}w<ڻEx5= OM@;!;nw)uӟ%{t xFd~܁?KE >x/xp]$x"7yE̊vKvuߏ+ >z 骮x}ঝsG/z~(g~<Ӈ!o8 ;'KNF| ʭc9`yXWR#Ǿb?C=N1; 39^r>%>\wK)ڃHueh0sE;=㿈pߗ׀gp?tU 'usOJx @ȥs >ݎc?țLr>+{c@Kk+|uxy,x9 5_NMGx5P9Ԣ U_U_/êPuL _g-|a9ș??9둧C,alg[ !pͳ<P{3CЎ/On<>%/[yۑ~;$n0yw;sL-ՒW&o>ՔD4|C{ik#>6r= W@zYx4<Ǵ(3-zfͧyܧ<73/CՏ#4ә"K=1O=SJ}Y^snɈos`~<?z96~wjĻ4^_cP Ȱe?Q{_ݽ#/<|Koj9!~{i彅ig6!'x+y\OsUw<~AGE.Aq?iw*HKunBO~/!혇@^u?幛@9P_Ejέb?P3X>eUygY7<8Rjr?z= 5m(wG}~ ry{n#B+ $llj`r9! 20u4c\s?F< nߓPIJ$%Gԟ//y'9a7[9D;'InF;ׇgb$h'=.kS?Go~+^ȿ}0tVKW_3 9C9\tvBFS5FWo< jG;;>?kaZ+ >U|ˠ /JG:;M{ikKsU~ڙrp݌sOqT_.G\]Hs_X2[(=h/!4uW>Cm bk<vss%c;Gwuqc h/Lug#\q{!Or~(gOB|w?h)'Z%V=ʸc pG rzW|BoQE|噆Q!:W~RKP/pz9r)ޟF>a- tﳾ}&Ոh[V#PޠK܇Nm>Ǒ_זi}>s^|F;P\go}f΃7qi{/4K)?5^ /[7:\\aՏާGS7W=Y<_yZuX.931`fUO_Ӹ^2k'>X'+/HGaN$ ~?Z&,#n?np`qvXW-V}kց{2mpgp᜕jȑ-=<'xw8O߹D~n}8i~e$3ewǸݏGromE­AC-qjOG>paCޣN|P( r;FtcUq<_{t!B #`{/Bnu, ]ӈ-z1TwS^kR {ȥ/t8ȫFCp.⇴mA;DO+BGl#L(S8k$'b?~ g'%)Mex݈=ú/r=> M݃ɟN~zN8.ݴ&0m%@>;Q9~/= OUQ~iJ;Xxprum\/hֻhۭ ^hsQs47^tÓ纞CB~nl)y~XE+-[Zǹd,/=;2EfL~M<41'GQώ;3doe7!ݧ~<[j{h<#GylnྡҽReH,yspwM?w~,ϻd?d=FWܧ>9K/.": .v@Q cgysHr<*m樿|#⊴)9seg< y߀OYYa7FcR8 Ͽ=^C(=GKwѮJ%WQu::Whu:r=ɋY0 >`E2Iuq}EB=kUpϢ=[0xvk<8qx^c }:X"M_w{C/|0:p~u,k{^>x9X}Nԓ1ƽc/p>yڹH'lWmGH|O^K>7uԟ7rȥ^1p{'y{p<_3W ,.H,ϰ{ _q]eK.ëW Z/zC1WP<Ǭ8N|N&dxGSOT A?y(4vYȑ} o~{gǐo#~~e_D>'Џ3w;\bs..xtKៜ~ $gv']iPۮEmҽw[Wץu&k@ky;Ņ-) 6&ڛl 4quM6pᷨ pq|-WoDմsR鯢]U#ʛrއ-EXW=1YvLs_7?ѹx4`p??sCh7k0*H|;j{| `hO?^tzw)`8+(C v E? h?Ϳ}_|/Xi?YGLwf+h4k]3 rs/eCp>$[xY:M,-7Ӿ7x ^(PO{t|J=n\}C܏mDGWqCy~GFVV:O3>i W߄£.<'"|x&z)(; ݈&8@>5r`\TS!z>q>o_0W*cO~pq+u_Ë}tc]U^h߀紂.糃Fˠ(^sq-GJoF<q G;)OY yӟa\F:i{=e(ԏ;x3|K3m?S}aY*/8|j.b*UQ6xR"/Qp5_ ij<乨c~]y| ɷ S(_i#G* ig7Ex%MǸ 'ϫO-dȭ&݌)NDZG=TqK{x/~w#H* n 鯽 kW݌W Ώ!~xKyob΃/t^Nqk]̦݃im7(MqY^ =QO|?JCzyqH=oy #ྐྵ חÍc9}-l/~AT>e}p 78 Yޛ>~ N?Up3?s_vOkӴÜ_=P~n]x/A8g>Cz"\KO{%QAsnp`5x~b8OB f:>gώ/AW5.W1H߸>f i G/ӿxnb"_>-Fy)9 wT !otӈ/#t yRx .<ʣxF%kI5p~B ԞtA]~sʡ__@9a,G,?c0v#; o㾩`.u ?dh7y4.b-oӿ=2 ᛹n׼y?nӃO;w|vrC5^wXcυ=u_Xuug¿~*~:  j϶Hg|pɓ0r_ڭONu}YΘ~8J3 0c^ }}pip?O?d.cH_wE{7nk X|M龨tY?G;:/|D{B-v~)88 ί>>H?Oș/78sx_wܑ/?rr׻z"s-7(z7ӿFBx\P,gΜ;WPX \<^"ԓ>ҹW>%r/1~,b^ G!3yGqIԳF'p]5]|N;&O\xea\s@ya꿎qOBy}8r܏Y~fr |z4;/f §+%DiNO}?t|ޯ?rW!_@^b'RO +IOMDhOv чhh(GPОh}(onw}>BO 9coF5G)(_n)yBK{{{ F>ƿ;AZ>(wq>b:ǧ?D@_h7֐XOGQK޿ Wۛ~e -|,B$M ]'uy7H-RcmZx%vj9㫅yMOC6&wD;s!|ȧՍD6;|xm=OlYkvBռnxsԅ Y^کCtpap[}9/p6ϕ><:ix2 L\X} _SF~tv {5waαƺϯ8(- 5~~??bz O{pyN3K?oEcio|sЯH~ 9[X f<{;(}"sn(ȟ_Nȟ}rF?hi_!\g}y_{WyRԃZAh\st?0vGW bQq*|G1ɯE|יB(%C;<n@9CI OGjHevyz:𴫩ؿ xk>:+(x`+B >(9nrU=@"= Ҵam+>t=ȗIT8]!~߶'ߺ[B-m| f{o /Mo;ƹ9ý>ۯϐikO[#\dXR_u=|_E+f7-}<﷈~>=@s|nL]=3=-D:_F96>h%+u9p?'?q?B{(ތ簃Ǻo*Tf]e_΅tk*Ͽy|(OA+A?Ÿ?5꿉v+2ÙAq޷/si&^SL4E|?@_GcYDyO>A{ޅܹszcWy]㜚9SyR'F5v~+iVغ?µ~W{=tٞ;M!5Mol&{:n}W\Ё\Yu-[{:\:U܇ zgw-Z5\Z+{f9t{&SOLq |"휏zJ>' o.?X7N_PcHcO?Ч "ԏ! `}؏7W~}=evqpL|\Io9we$·^fL{9MBS ӈ|;'`|5R?n{z'<֝ |z[#*^B+hwy-/?kYe#%¿X+{sdX'?F?8_ 7 Ψi#r}8~O"~owPBٌ? +qv6=oD/3<7|]#?~wVa<^fex@?Ȳb\NO;S_X"[KwI "w\~͡Y9Ӹ>8f4v "z?5 =g\O FA_(a.կܒyo}g_s?~Ns}kٯ{x<2ny(O~B{?-= y r] rާ}W Ѿez5{UL!K~ y.*8g" /\uߟ9+νtrXJ[7Y g\SOI?'^*|q=*"~ȣF2HT=Gv:k~~,ϿrOE;-'GoPpȯ+W:BP}ߥu.,pçwOA^H;;;7}嬏YeH?<rܻRNԷ%~7q53$K{o.7j> 'oOQ?mJ;\iZB?i~O秜#ў VȳQX ܧHg=ןs^mݛ.{m_3\y}嬕W!M_U{%xoj/9 hq*3y.j9ge&sā8q]s}Jѹ>QsE@6د }Cږ]@ksO{~Ɨ3s?}C$}w0xOw]bo0}O @ ⸼FE;&jr1.vH/2w)X,U~Socx~=W~'w-|?3[2 9Jna\fnwG> r ~OOCs~qǻE{$(kUU]PsQݨ~xE8_fBj6~KH{~qjK_F$"ɟtH/B/?= }Go!JF GnO~kuf >N}O~fލ өǠ>QN /<-|=#kx xԧϏdi-S8K;:S7I4 ȗF}=v>z?꥕"65c{qf\v.{1>/j} wc|}<_wshȽv"­},Ywڀ+ _>G~9{.}| oSlwt~La9&ϡFɞ;w^?#ᴗ?zK7~AX.t<totp \_pÜ_.p<zi_⿌"Ɲ& O}Λ=s7<~z?yL#>}*'=s9nyN( @.kS;B. 0Oo}A7^(,G_ Q?Yn㸴N_/]wMv)¯e5n\M%}IvVr˨ r,k{)j>{;oϥ9_9}5v$'q_7`j9(=}38{t}؁[@,7Sgrm%S/5|Z~Ϩ_v3}7OAXx7#]W7~9^i/hE{hT-Q<䫞Q\?8/|sԛY-2S=P$mr[{#Ǡ^>V^[F-{ÿr;o9 |Luw#\=$¯95?jh<~:\gp+n;EH.vX|/:yq~k-~YAF7py\xw4#|q BbKL3( ܇tb3<]xO̳ q>-thw*߇'ڳ/{F[1;c9 w9!gQC+wYf3sFz5COq:v rop|nEއKЯb>G=_`=d={?s4K^ ,gf]2Y7dy/Hx[̧rpլG7?;D+P|׳|o!}Մ&w8+wyn әzPV=g pQ:.|Av?󴷓9x?[q?}}ʃWH? 5;.W *^z h'i1D0]up?cv={;dAӴ =$p'h_[ܯCV` pys|s{yc=m<lfC|D{x_ݭ\XVG>u;ײߊy_+/ÿ+0;s\܋?5HZSqA{KuxΧ/)ggw+{1g!:Ss u.VqE<Ƨڟ{E|n=႓H%w'?^-scP߳Yg_Ee8{.K{4Y,1M /1N7~o?rrA}GC-c}rߔ=UCcyp" LԇFx1=h.>h1;xbixOq?f<;~ oEe*7V .mЁ zde83!WO3iO<7ܟd?9>Ay>y,Gq=B.v`'ϱSx oz>W'ahJr_Wlۑno ->#Wߴù8os ܿ~"] v#^ނpu\+߆{({r~,KKyo_a>ϓ<c\V4Wy~,%uk\}CNG{Bpz){opE{0Ⱥp\mh; > l gZ? >ǷߗK>Q~`q>_:is> ,ߧ?V`7v'N‡+|C#S3Pj.݁C}9uF+/wŅ|#S{jyb[D;5d!U-w;UfngЎ4'~^hO|GPoڼWY 5ku3n#o?Snatw9ƫOJBQvx6ZAl7{{B+ yMx>S'rҾ^8C/9C{7 93 EH[x }d>{ͻD?0ۣ3 [ShK#~z ʑ^N<idxvx.f@c'{c9Nb=9Kv {Gy<~45H{jދ󡝍4{y=n7Z+. /E7@0xn .F` ?(|, ~D@ߧM(gCzKS8cY>#YD{CB|O79=E F"zByA]hO=Ɏ8\gnxʌ3GfAyҼ:u.o{\^gw<z#\}r 7c3㼻c>N۞i{n /L)/r 2;A4z#p!q7LSy{4[v>nsWHoS~zNzNWN2ьsJ޿!ߛ^cH7pI#JrIb )1nڣh s;!m9Z?@-ݲᛓ{"\9 5iu*>FBU\ccPe+= CSo@'8?z 8`:9Tf᳽̺o{*>%Lpݾ@,..g8ߐ?I/{|_nkxe<< E;.ns53 8ݐԇ9!O,|}jU?sH?xCYLe< a\ `|7|ty?iPU3y^T0>³Yn{^O'!PEo8#|n]E \NY̝ 3Ιp_|<g+E㾎zu_ߓޟa_pV/@0lէx(vp8׺F_ wsl[d 6/xJgz3>` w`9p2l_;܏pa0'G d9lG~7"+҉uE#F(ouvQ<`{r \v ʑ܆x1..ALn3ρxωx.'tG]f>tF{o-HmM|.Dz[eά$9 ܯ^;C2=h;ݓrλWޝ,w/TQ]MelG7wSAp1=!t?v1]vIރ|..?q2K=>ug!W[oOk+ЎO 7E>ʹ'{ 7nO Ӟ0gFÿ_wyN CCM=_gUǺ|k,_p+8u+|g+;Z~>^f:~`SWo0#aH?C?ҋvB2?wS+Q `3C>x廑Ϲ>,(O { xOJn:9R܁LoBe4s2G җ> H{Azq+POޑdw یq?nbWqKOKނvK{9]92ܼW1 _p@s=vq<x}Pr{GUǗ[<D=C}t h"r/L0׳?\xSH,/2砟e[y]|?}j=pPסFɍy( ޺Pj[}>;g%c^[ƥX2\7~Uǹ΂c}(F{}gfY.a)|ԁ}pݲov#8__u}stG_,sG? )x2v,gxtVUE@h7@e^p83B  C>5w r ~Zs~Ag.X #RE{?"_u<-铣X_KU=%s/wg}dxV g*@=W݊Q.U7]~?}~U>߂P xzA F0K_K,7esw ]7] %1| xU_@ {@Q3O{Ph"9zn/A\nB=Ig}B{MGϢ}2g2LҴۜ>ri6}YH}帉~w6t#;垂zI}9Sb}m@8w)R䟺 r8/{%uEH' { \۷vjxno \f3h:8ȷv@ GjqմzW#go9'jýhӞǂ%|k7ww3>Q VN)gp sǠ}rߟ93ϔ#I;s=!ͧy/deӼ6}0{O=LZt e G3${{@o'.F=gi([xno A{/丼ȥu9RDcdu,ss7 L-Rr&yoE`Xq/Aj{乤Vh=lofl>6FM"֖s4ʽq;zG0摟uEߙ޷xy<>(%=)=ykP^o:3>YMh,Iԣd)GySkBIH7.OD)7ImDP_I?9nKHru60q)M6Zr֠[XWkݼ5MHND6΂|.B|K\­p{Vq=}%+2[.O5B{g,۬#;&}?vǴzL{ւMPNxrWui]?v#4ҧA4+7|nx|ٳ>ȑwj4}aMtRKPx'u'h$[Nюnj GOEs䯑^=țhGyYO@6΋_)`HeoלGfgl B6~Fwo{wz=kn# WK;6#>ˬ#ۏPXw-FCX7Hh+7teF;exlss? vvrwa1ڹ(Q>1ixU0Wφxҋ<ߢ,o^tP+?| 釴C^V}}j8?;s aJ,g:idh1Ld`_3~['ܭ!}W#: G=~^;A['H'C{Nh7u>Ե۩]Nn;sɫni:r8_I:'щtO<~L܌r$xG[·r\E2-gCf{knDM%kiOF: S >߮w(=S-ҩaYp/|},wȂ^\~L) t-);1̆ 8NJ nbn &bRmFྡྷ{㾻/i%Ю]v27丯,'OpyE?mgDٳMu-ޯnF'ܜgFV^xQX.#^|<F;%乶eaoC{*~j85}SxrBwp*Laߠ?y_ 0'ac9gw­QYSCQZ$B{Fw|y0P.e:!GFy=PI> ڷG{qd*o>Vlk;q|<3;sλH-wh/_1A{ҥqP!}e;NVԻ/TVA9{w@MT}^fg3~>qɬG Wig ו~Ws?s0k&f~Mџ;E:y{#yxĉYW|z||OzBѾV|~y?APzuV_ᡚW#5Lg9ٛ}vv;[lLj7ۄ3ҷ7}Ѥ8+Sߒ>w$\B}ɱd/hM덗x&gG_P>\;{oމRt3Ӑg "L{sZgz`?@1W!{^K|_9Mw\|.qyeqK`g=.Lh>ո,j1GZf?xQr~aWEbօǺGaa?I{TC!Sr}5KԎ~\3V;?'O-{jyDmr%$g9(|ʗy.M?<}^˜*s?_W:Q.T_ O5>y~NT:U=[Qn Zv/ۨsF|6qz=8YUy3_Ԋ=gU㜫Lc= ;dANn:\x䮪i™+[/>>k>vޗ͙/_iy[)_l˻up֙_}u6zECjzIՉYn4{~|{{_4?>Ӫ<U ϖ|G"uOj>ת~"~cD/ΟCj'F?'?EoЎG4TOP׿kk׺F|5AV3;!?C'W}/`}ʻ`G;?Z_CR?*PxE_UնB(̹\)Rg%7%$'wŽ-j8Q-Wzjߍ|_ѧo|]|_uwg?XZUO*ߊJ_rX-/ޒ?)}ݸJy̓U)߬O#ӱ{6 B'0?z~O{9M7E*?lꚽt0sŎOrIҟzG}pLq^ר{e+Gͬ<_ϫKժOp=:Ưj'}~1HE{^{Qmlb+ztϙY)o>`>9KWJ1>{ŏMowk>H=Ew'>N6A5)<O5)mo=zF/Rik^ D'ɝ~kMC>jS$/NK~'w7fvռ5; /x^+6SW{B՞c>>=Mk*^ 9^צ{~{UQ{NxO ~v\O{r>t ?%H]=Q꿏>Our-89D<|},Y"NOs"EKnv${"ŝo?G7;YRz?]{Ίف:@zu[Ur27-P-YvϣO;sYߏG+q5s©SD~o'|թ;.ar'w}hȹjHW} :_U[mz>||{8z0?Sz`.wCo[׳>dupmQǿ\ut믨0zC 3Ԣt2&_۷J~{Ewj~GV=Qv޳xꋹJ>( 񲒟x1]ZX!#ŷݿ9_]L?(reɏ~G2_rъ{$w^ޠ|l,vjv06++%rK~)>('V;W1q>+l~[gڽPrԈUkjWXϞ[X=Wo{ē88yoΕ<+U|;ZgķP#΀7;YL'Gd6\.9^TBS'9?YM=/ę)EՏ"vE Y)p^G0/πkՅ}UL3ozk=ѕwď]st䲄Un1 wP/9>Xt&r3k{}-?gjocnx=:/7L֭=zs?%aı}αZ|nÕ/ DzQ}@|F<7߆rƺ8uPc v= }_^-Kպo&i;uY!ߩf4ܬ&6?(cR̛P˾ڇ}6@#S~Qz|՞l~y䛜{{|cS{xհ`?jwݧv ,32mQwȇ>YJ[y>!G:7M87sAzn߅S[c-?f3?yU''Lgo\c޿ԿSS~/%5kk渚_̏ 9ďGBIE;zp^~MYY:c^_>zD0zJ#>??NR%\4XE!RDoLvTIR~QvӸRz]?D?u35误z@xm2.圽Aճ| =|-:/hX/O|+ Gnʣa9{hs~/.nCx;77V!{s`n0wK[*=i~f'ɡ2o^T>|"?$ߏU;Uzgk\+3oyT}EEϬ>Ҹ~T4kվA?ܣWvcJ-}iO󊞛C[TIz>@|7){~M)=۩3ZøEfh Kn/8P'߆fyZ|Vξ>&}+w\(>k4o4n(ʷ)xn!ʿsk<7E(߳k}y?S#ǐčg+; ;5 }1'*wz]NA!R=1z^;J5ޏi\T_>v8>zaq_QEƹySŮ,[Q F<`W̐!O35i~*J^[DߙKTO7hRz?ޚҞ JiBxq~ʕ$qc=7ym.KT~$$ٹ)-)?ɒMRS;M_|%>!~7T}ue꣆֎:͵.pƥ4F'*7zSIS!WziUPg4 'jߜX}ıGx>k=_F?cw5jYkWa U_@8G<%>ssƜ)y,v3pKsk&ѻ^tyOGxpOгWkJ4=A6űS;C;E=aS78A1վy~;4n&O=?v ef$M_e>&%='.=ӏ}OUr-iIտh!>c/5WQyUWp 75Ovg/[}}Go}.%SR+wGeUyWg#2Wz+W*?߁S%3[jةgƫrVON{ vf!jpQX" #߻/y~<1O]دtrډ[ּ_ǾyJ*w~eя%.AO|!2 ϢW6RV좞D/>BUσܧ޳Q% ܛ~7{ЈWX٤_|fK~'NZa۵^xO' ZT.F}뿆^o*O3.tr>qd=[KT9wY;Pհ+qoW\g+p~\%߅yV2 z7"\~q@#ZGvZsܞ->-q fjʏP93UxPMic΍z8uzO=~Y_w/؁3hgkTIzsgʚ/Ƨ?2+?&/" Q_q??Cϲax@ۃޑ|PJrK.sȔ\r'd'ct'BO o^bhc{F0Io?U7'ظ_&xGBWlrUo2gyW~ ʁgs?Wyz+^&`U[>|-.&>cDK*Կwo;+&l8O4KonRa?M_;Ѫ-S#;EGAs;KkVe//≖S">Ce=/_W ?O˳˟瞧 ծswGYʷN7|Wqnaw;ħ]J_x"K#/^9| ͻAzfu*LmNoQi>Mڙ'>Bgx7OcU4Coh v0F-zuoӺ~ڮ)w?!{?A߂aƣoy^vVYU<=Z7>+jÿGio8m_:N۩o6FTu~@Z{ )Ҧ}Ip`kzmggmN۱|k~U}=@274n17'KMvUZ:r1l]FY,I7{ պ6?} Cgk^)oC܇F!5gR!=D`oqoW'%d%)I_8zOe gY?O:@//@ 0$V0-mUGowq~QV=6G._YxG3%򑪿|+o{[ o}z¥KWzY,aG\и?屇(J.v|ǖT_#}[p4'4O.DutJ5Xv:vԺzw{Px-kEW~%W+_nz9gˎS{K9job:w~=5>;hTOOIt z^)}~03>tnNƻ0i BTGedE/,|QTzj1;<S>aZ!qqB54/4~k]rTbq>ZUN\<zwkyk^?"O)O 霟=)y xz@OS+/k>VZ{y|1( Jq-q\Bo]SjK~gMJD~m_>k Sկz)EK(r~O?]'.uGlgD:X̛uÏ:dEW?(|OnIʷm.ST>f}6#:ޓY=&ptZ>P=Oq`;ZoLa_ui /}ĹB~jtetAD菤%\]yV.j(zKg8N#$nqxG? 5~OVcSşf>̓#UV\x >Gz U}y9$ϰ'QC OPɇ{`$J\_;AN7cbco }U=7g3]|!:OH=}Oh6)=F`I՛\2^4&^fɛU_t;: ,>:slI9l5<_ӛ|}ws+\ P%+~.q.ݦ%Jc4nſj]5Nc4^bs U?gEǪ.N纟%⯰Ŀ^P0:.QGgX'֠wuX}˄jpY_[KտE3_\>_gLGЋ/N|:B׈pS;^=$y<^ђkt=V,~.ѾT]#9۵E`7F؎M6׸'>0{+I_|B+%{=Пvۻ /|*OUyUW/7$zn֊Oj?f4#v'.@Ŏ%ƾ6P-ZCV\Q}_a{wt%WC[mZ~Ius?{GL=`WTh۲-aQ"F)xqJ;pKMZ_H^6ɩ8^(!V{ŃTo"v[ s +]YNˢyƿo7݇ +5~ػoɺ{ RxW[@l6REo#~/Tn!Y杫} :kҟ>ug᧸_i8v+UC>s⻈{;FsLkɢd8܇Uc8[%|^u.9GAF'e/!ZSt禴8a550$r{pơνF*vC?5j>VTxauL޽$*1kַ|vVj~yPE!_d6'fiO蟖ы|m;oͪgOmSP#ʗ2A_gz|bo ^ IgY8|ģƏz7qzǮ0˿~nZ_Q՗d}#_+z}j2Vq^+oK-[}k)KkCou oܟξPϢG αviNW8i>|;^U&~3旄CEi]Ei=U}!Wa^$zc Cգ_.{,T|kQ!aYC͢]<$Գxm ϵK%͋*fI1:7"u YMq~W罭a #Fd?n'>TN<٤TrgI1GIz^\E|ՏP4QcrɎdg_s'܇$o)d;T?;׿_}@X̛?+|*4Ι^'? 4 ]L"׼~7 P}܃'&@/DGw?>\㒜!yOj2"7k)Q?jRb/`><,9빇1{JEB<ކP-XC wM+~W<(Ͼ0 z.߽0T5npuT A_R;uG]whv}OrD庨 ;.Z{w`~V V]qҗ|Ke\ԒJo[rϳ/®mG2{,/fي?3O]&?Q;AAi9]rc>@t;9q4Z7)=y^qSсQ-<-ďaH|}h /=^9/ov߂UJDh-Iآb<s4u/m#>k;}[*@_k?>r|}~V)O[-:~r>A|MӒ@?FY6i>Jz&?Z1dƞNa?5a}MϸE|&BIG.~6ڤv&AykWiOkH3mԞ {dq)_TQ{E$y|5?Qr-פ yzciā)*?5jUک=п|6o?ܬ:*Z|.]+[$GFW@pI={RFtXvoG:z7yx籓0?@u؅~['~a:^Buby'ku}\տ+[ /R-F{x!vr5of|=> )QDՇ志ߓ/֘SMװGUtz> S1[r J-[Eok5~Q_̓#Į B(Bn@҇hz2}Xw؉*NG~pHq?$,|˾ XM}R>=ͻ*_;ZWW)80~+?Gr08W=z{ڱ^ St 7@r΢$y|,MniMY6ً$o{~M1З69~Eڿ4ŧ4>s8{ӜGKԏ|Փp?&j?)z7J^wAlT׼/O>{ ՛ٚ.exO1S$ct摹C0f_,f6r}8r1I=x)/wz4n_T5)YTT"sp?!?Ws%JFt򗰏.# b0z +߶[oT;T1?cg'szGy׻*߅>B͒oOk|/$O6|TӁx~=&q3Y|)zujoQ*?;GذG^p$7sx;q4F؇tc%s0::BUh3h3iv߯=7|-U_4AF8GsZX? :s=mE뜇~vkħXk9.T ۔c/f]r~\IUE׮Tyu~;Ëg8HD@nCmj<9ױ؇3:)oKH5Y&o.%ro{nGcko8$A'?4H>yɹg݄+ۇĢm^mUOpywUjE?F|^hQ,+V5K?ӫQB#n 5]u޻ƪ.˻;|u7]ZY躱k+h'e;r^{Rr,ů|ۋJo-D зYg2 =晧* mQi=5K?07yMdE8{2ߑ^kBFa'rz +?(ɷBE@p oR悔h hsͣ3!ڗ5k]E-X ~ Iվ̓ͪsg=q>_뤾FFQCq>Zpsz^=KUUhv@5tV!6>"MF +t"#wDnѾ`9WkثI&>}gg_]{עogm}dO&I o4 o%~S?c%w{0`h``'i|?wXr5oi{Z܌%m_5@>q0F_j<EyX3wZ勉!y/h\b2ȁq+XϜT3t+yV,G].>^ >K+Q[_`9R7;'O\{'uGC:[O's;aEף߁5Z˹ZAל ׾o* {w*mo^t~澩Kp6&3A\ܧ8|rU$=zO~_8SrǛ߻t1E$LN x)w! 2%~CG5~?n>"D)7\7ua1[mп&7dh+ZR'ubG`JU_Îv=~7~_O_%.Q]]k ?-5&Թg $j8ώF+%ϠgҦ|vײ)qWgn'U; oa+TrՎE#> ^ },>o wj-3EZ;j4Rч*n{:O{9;>Cy͛x",Zx\2++یyZΐ[՟ -T2pQ.Zh\K{ݭa/?$'uqҺN"i׉9Q;|؃otzV?:k~#ڿiޮ&ժ/jW$c%3T/ EǑ7]߳ǟ lq|O>S/7yD9vM@/A]ݏ]U-+&~GFs5!z!<$RH|p_1DM[:4 yƧߤ5j'J5koS?uK7!,CO7x Z/W]O;=i{ ;U;R(iѷ7j_zM=o?knJfdO`gùF~"w{2PL[MJm?ϝu|jW0oj1Eɼ'ş}\#&> d/®%">_؁dCvL7uzQ}D oߵk 7?y>ri*SR ͕V2*MT}%"~S? OqIѣ>@tcן'bh~խ]N~:窝._'qw7p޶lctiz|W\^{`?[yʭXzѯJ"|bΏOw -yܣpf>k ~Z*ӫoSgj'CEl.(>ܳg sK^q`5jgk|e{_GCد4aK}6F/;ko?D<įnt}GD[zZ>+qte?ue }Y' ިU'!(~숢!54:A+^D#F\:絲ک[rzOWz}6VU>$QZow>Z*yDtcx!'lWh>؇Tyݣ\qS~SSڧg풯]-W$9T<"NrAf_$hG'Az{;eټNd&~g\(>ik#)_x埀z`\z [w;ko8;ǽ`{p?}y砽י`$ŸjQة{yG/:Zc%h;hGha:no:ܙux嗢Rʭ}gFwChȥC(dqY'G8=4zT?5?eT%n=CoWިF< t3s՞IiV v~T}g_fl~?s^9ZC%8!r}CĿV'oJ7^9p<8lN,=TxVo-y]~A.'/))#sIn^8] ]\:/yq;nC.s"ѵӭ_?5 {Pa%~Vעe|.}[6<_m؝ϻWsOR}sNQDg7V{D{2a?u qi2&w;Fnc߆~sw 󗻻Jý@?DO=!që$\zÎ:QnAvmԿKܪ *gj-zPR͗<Is r5{S,לx|ԟXm߃5?^'oL'ΰ3ķDujCH?&[%g~گ|_-oOW,.>牏~w[|q͋߹}h~y?Utv;N"m`vp>|k]? Y̪«˻r!;ߐ\Y, Uҋ5?`_E+Xt-\(<Tn: C=07e?}[EoиUmI *1J1x3ԿWK?r}6Ꮤ/>Ga̷f՗ i|]_Uu9zZљU_D\hoѾNnL,>Ows}ۺE{٥I93X2WìC4L_3'H.O5Op '%".|tC~v+~|eUb2] Gn7UrWٿO`*mM 1⯇O%xEBSQwEOszدE'w!U?@SMaqc^O璽mߧϩ8>?vavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav-7f}M/ˮ<{mM#ŸqNidu46xx7|TVv69FddleG]5n~Gsn|e#ï1kd]6|_=r5]kU/[k.}oCuoBۀO Epi/data/lungDK.rda0000644000176200001440000000535612531361106013563 0ustar liggesusers{tMgOA"rriVGMŌsTuC$9JKD"R-J0fDGi'S,mZjd. .ѢfTgRӺE1&3|߷g3g|˷aJϕsG#76xt^:^:a/4쥓YkJsnԓZtEk-E-zʢ-z?X,:0XCyCyCyCyCyCy@^ C=aѿYNuhE<~Q_h﫲}%|}dѧwPPPPPPs&h@(ϣ:vGbx}BS{ODߎ%俎mAދ[G~_Wf8>}b { v}II0OϹ KLc8*GQ'~:n7d{SD}||9Ջ3pTM_9> f`Lgb<#8@?2ϓ8~%/5<.~KN.y#_l~N3tq|#S^ Z9VƼ⿷ĜkƁ==\j+t#o|_""oU ΃w0= A7c͘fh5λH|q1yg7u&t#k90O*:s C?y1 ؾKp|,k} } u{SvP)ʨPǢ)דio>Ǚ<~_`&'q+_''_'Y ^_F9 0k@-Ӆ&7t˝#IФ/IsIl-z?(.gDpv6aa m y^u,=kn!\h/+yϊ{]c=: GxCV@|8^ӍĎl\o _z1ڞ{|W& _g wH<-F{W{\Gc-;q/ ;woqAG6d/)B>q19!yo׶6 WEb_yL_]8K,Ek0׷&u^=7a]:-=~:lq;o7^nN:啄KWD9#ǭeg38o|!Mh5f̖&OYo T3jwq]h?7{+p|46C/^l}#jYBQ3;ʴY*K?fbm>z_!ƴr (ҫSR9{S|V*{3Y[.SE}H.1J*Q:'!K<7x/\xYqꘄiTвBs Udˆ&ۊ^Ȥ T530P0=$L8N"Ϊt0ɾ$cfķԵʀ*Wa[>Zwh>%TVހ}pٲ5>F!Z`0{gI?*>ZFtPh7;#,֐&thpъZB%N 1יd~&Sl@ #"~ўg ϣ_e[K At!J+9OYeiR|mJF#r2_[n0es6E)nn=؟E rӅQ Q. \yte{J vT(+G 5Z7|}Өܪ>ot\܏QnǓ c!.W~>O˫s&ͩ O*%N?pim2Ti*JTȖVʹ.X 4+p g6TW1 X/.T"M}lӊƭaj7 o?sE.6T&- |?K[&թesh|%GGCx4Z,n#0G=91M?XK䫟m=^03<欘 JmQLDTm?,c6|HbS] ]F9*JUXLFڄ}fPK YZEփ\. kh-؛jS|ƛC' zus65<<"gʚO[+M$T]{Gf&=-\LUd$)WɱqE+3:\;j|uh7/4R~Ms2( AqlDϧWerI*̥Frlv<4ZS=A`L;{YX-/g EN罇V1m>ukJsw, ;灯,(N}a( mԅIC` P2@(}bfnf)=pjFX'2,:C3Ia \8cqm=kfnu;ZԒʬRd>\ &Nwv' 3:<\{ex.fۂ6Ű5*##T^^_Xj,'brs PF/Cm/ aJD?IopUg"6d* EEBfhQ+yYX/tZDrnG3¶),2"!h'Z.Iu}`EXJ%d1oKL6K]Y1Uc͡}2InMx6k5r[Rxpءbf;3XTy;t)+)zSJ_#͆Fa 7ޭdSI?.Z#b Vt.`ɧ>  nk9Y3}Qi3GٸKغȥujVdO"&K(8! daF́w$Q04uk/9Smr b%F/U wX߾h՚g] OL4瓤Jw}I"yώD'1[S&3vTm6L-7ژ޴"G $~_ʞ\)#һҕ'v&·M5}NoN#!fl^sBJhO><t6<%IAH-u:ĺ(+f/ҰQdž*/q94V~ڬtbR/m39V ⚉t~D֛O.DyI0 s7jAF[tvW([~FvYqͪi1{ KfCM3_ms5!Zqncjb)pf (EL>Ϫd+cQwAH ?XE|] (/=cZ9JS٪٥ -k)>đ 9wo[13yͼuD KKWIȮ1neiw%'9JM!Y̦xl1҈āSO%ھA cw G?ЯcXKO֜QgWVʦL4["7y( m@wp)n =Hq\}{Oa:?WvpVjifDP#QC KI1BS&SG&}pne[ s|ZĘQf}H瑴VwצdKdY]1F,{SppVye I#yu'rSFȐ նř5΍:g,5;etW"v5Ƭ@{UIni8*K?FuE*E5`.WN;M_(v+BZzH6͚t>h$GG݄= `5qy6Ę'[(Cn"8 HAyBoz,)e|z(&[]QE6JrLNZu51ٝ4U!`'vd.|˙Hq[M2Έع㬨jpG=6><̟/vT u>5w;R_?'"*tl"f,mALs*Q=yo"|z 0Sj=&Q)>*XpfHs>\'1o>9趽i.XL5=uߺCS%S|-A)qY E`z&Ј DC Aodj3W3BDJbf_֩r;:Y-566hڮ;D%@ mr2?rra]P@Y&ԥ:T+&m{G ɾ`3gb -}I+T]aH"2b8nRރO~rsrSA#]jT,:uB@qפl_gjflR_yC)dàZn|_3[|NJ^=p`zK'7F_ɦsMĖ*Yj{~vMBMEц1_9?(ŵIKi%ۙ.(x6Hx av\TnFiAm g2{tj}M;]fbMEbZ_x m?Ni|_v^eX˳ARFjPEC"TGOX؞hl ncl%x6);c:{;( 2(uOs2GQܒO-h@' 7iCnrz5WxQ"FQ:bݮkž?:2sSh 6BȜB v7t1;EkcAyy(h.XMC7z)B^6¯n7⃮(m"3 +ʸüD+u_Cx_s;`5lwa IӘ &'?׏,V \qCx|;. 5۫;zumP従khGj{^Be|&rg9qȯ*6bdi+cA;ڧ)qq*ۈSHŊP!$%X:JEK1E+QV=/7 3aQK|YuAy.wqW;(0DoQDbBW K_+1@3)kv#=j3`@? [NZ c)>-uCVUDZNFkf2=:^ ᒦ#=KV䏐zìonZϣ/@y6^T;8," R)UU7^`R!u T_(ۘU!nj# _\3_^>05taθIarvP@Ha`/@OF7Mfwɗ"@=K`9P.LA vDݲ :'YxFs#uWn62JRubpK㖋ƶ|=*S;0pPXљ3AcR^`9ϥo Xw$+%đzyEoY::*mwE>j.s?qӯ ꦈO֧z2o&fY{D.ڜCO*=-7W(zh䇊jooI]mmtiIa}ybyc W&.Q3T nrI/ OSgFAjA :ki/kjC9RKhgc40%Vb3Kov4Fd_IpURX0G/)`4n٬Ɗ<Ie*  R\ÈԶ1m`Z Jzl5_z+,cMDdi$;9ꝁ=#rF pִhZeQD0 YmonNy1j/ކOYq8XҴʰ׀ qtSm HLܚ/o5k9J2B%d>ѐ}<Rߏf),6|Skx";^ꙸqb{6m֔C}G.Q{=~pЍ>Z8]ȡ fg4O)*$a,14sŠ +y:{P KiQUN8=IAc:R7!P_g”w| j6%?~&ZIp`ψӓiplf "B‰}¿ZnŸ' /95SaqcoN7MVߊmHR}_x4MdL_E(NI:Fۏtc3;f%0qM8r`)LsW &HzThX :8" $/ xj H>HE֝Z/ڀg|9,/p!E.>i-) ww`;,ɿ^(s /ћ9׺V>7H%lG@Qrx8YB2m4yqc5[>1~o4iv"#Z28l3U 7eC"ɲ,mDUG!.J~boSN%;0,s~U./êD!>hřcҒIٿ*AN!IGKlG;A\R[:f zy(.~¡qr;srg+?pnSd4Eug^8ش!Pw9Dcw 09Tɚ:?\Egv7"k}ɿu|15FoxaNek ~ߡf]H۱:r݀VDo<{COPP&Iȫy->Vgge~S[]ɽS앵Qb2XխܴZG’"3L@͌3x+(c_D ?<Fjf}Z˷]H1ׄ* jxS c|v܎;} 1 }0؎uS A8[ RƮs:#c2Rн|8R׽7tZ$imBMmF}Ӿ wB\#{{]!qO l Cˏ䀓܍K {/$*9 ƶ!gJ?\80 aՔ&翫RqTLK.TL|ޙC?=헮\J<\FcZď b|Dwܧ&ǻ iP܃F3&MQR+j'zDK +g&L6SZJP$ %WUl4fqwۇsmVl0kDJEg>lf8$8*qGf.s޿fsGҁX$1^M8bp EĝaKBnk>`2Qgoӧ] -ckhR#zw^3~=m:|{FJTr٣u@n0R;8$4쳊+j?F}]i^ǂL R ە2+aԾ?  Gr `!+$:F~H&:}Xy6iמtlIfo%*]@OjcOEwfg{h үIVFM"/y`L} 1pZ M"bgS]YL30|GأuKҖH,LF >XυNW~Y?wD?37JY'Y N?鄔5v OPwqfQqK8 l.#7=*1! mG}eSY|i>f8=-yiCr3Nha緄0PuEOǯZ#'.8˫1x%(iE[~.RO0Izs SUc^m[3}WTw%GdEɅh'N!ۉ%w~=^xX..Sz4[م2(⡽~o\\x\)n=:f?ȏ>TKʩEL\W4 %g8bZ析E~#9bNprta?IߣtϢ4Q#C{gtbUp=$PblIJ AVc~r68Q(Bο^W*i]\ApYqJW>zo8y-or[pZoк֩55G[;x^/cB t :lX%uqXxGsϟRR+*z/4DDO:rp- i B>O}0#;s,{6ޟ]a1Pزg̈|XvChy*xOQ?Ȉf%ڌN[A莽kɞ<=֕s%I7Y^3?bjHH=>:Ѳ3H s{9R;jTVl<r K;U"Zu(&67jη')x6ԮuD6yge8hZAJI۾߼Iлփ+~lwFPSϺq1tE9n*ԧyJǩE$)|JmOi3,N2܁S\pVvǃ{ԫ— s<+?q='$|O2Q|w:זP|BP ,RB-_c:)l;Ipz%ScW,Gz]$HgЙI $ә:B~s)oTæU],7n5k $vI)֥9@k4 @CD(wFqN:k?{\LA쒛>7j*/քlqGO^q3itqIerrlQ6*z_Ϡ&kV /MZ$2lHk n: I\bq&jhL.[ 0m͋$q D: ,UksE̾:H7"aTROtMl{Asnqcf={w 3 4l#8,tZ@qڪХmϡ]obX aP ɉ/@JhB<(G=N; 6k>¹Ʋ8?ާ*ژb?ٸCO֦7^94Wxʟ!~fONTU csW_AUEDd N$ YѝN]`ʼ0b}lEuE4w` y2NTRwa7" *w#@FYzA5c'nC17QɖgOWX=͎ ^?zro0pĻN|@ZO'0g/+ogk8:3#}orayLX~Z]+ ܽ¦d^YCe78lzV%03T(qZ.9oir8'{~_lo%o ae?ȯ!O.BOz+G܊NHhJTUˌM[5{BD~&>3#e9htGyISQ=Pite=\pL8~ig+=l q Gpb0i]:p ,C1!3OhQ/cj+7$jsB+ѺsK]  lX"W*Pt٪9~g(1)yϋ9;9#6勪@l&_3{zzP7/u*3Sjn"/CUpxۦWBPMp,tWxRKg"3pE&3ឿKRR%3n).^ڎ'kOc:Dz P<}_JrzѴbeP dymQ #&GeOsutH +TV48[^yDֽቑk6\D j gE jj( Aa a5Pl&+:n C+wGH,ͪ /m1*7ȊI+ 4*-jLURύ_Î:a6&Mwi=U8`{A9~To64oM@[۹Tq3*P-KnK(g:e<Hް)6锢e;fcx?4p_!ŭnX$0N)|s&n8Cnu2b,Th>+WۻQ)bN̻1E }UTE{ uH ;sXƨ\+?(Mlj8!N0릯'Nb]sW$$مX,o\NyՆTւsdN!a kh:u9콡3{ShKH0F'$ԼqG2_V^rSnLd4 zi&+z)~.Bذ!DŰWaH #ײZA+'u:8_LA~HeF9S.Z0;%LJ,̗$*L R5r{w&D  "XePϬDQUy@w=Xěk'0vwy`A*ˠ j8|; f! ǜO[yO<>*k G)zbw^Xs;2r5jN)VP^`[$MEB!J5TW-Rm v2"%Fbr}FVs|UfPk眯mSh|t>5L?*;s^>AG-2cs NwzrRbT|qg$͚.kf"UØ1wI, H<`ijOhzyYۡz_級y#*6yIUx5 1 D^p@yρN-+JD{b2p5kD<`NȲUJbyTNGu UL7Z<]-iU7g)r^$J'Ǩ?iLZӧaحMar?0s^TVSķ1TvO~pwM}F쒛Aӑ{ƗS<3t"OWe+%!1$ 9BǠu,φQ AG&W5kd>Rorm V+-r_sDgi+bibb@g1!B#sLWx`s,̓~)RY8e̾7"JT(ﶷ#ͳT۪xV+ñ^_8*ηIeA,!Xg{ѹcxg\Ckp~_ WwVkD*v_~@CWaPB?4h퍠}[a* E\&A:i(5H{Z$cv D3idc4lTE6]/D}V^Y05P%#yw^s<(cٌD>" gG}0 QF.ա\&RBm0οnjQsuzOtΚӝ!F1bٽ@o e|Դ "Gkl[C_/ Tj).PڥF~7(w%ȭ9Q>`ϸ(Y:.?ˢ8Ñ)<Չp5U.]ek:br,ACvLp~PØ s ?B& G쳫fD r1`>uFJǬ~sԓۮދq㌶֕h"mZ/d|=9dS||}o:uXˮc׈XR57#L'"D%M.1~+I3Cg+O` $D)@"` [=Q$?;ΚEW}DI5b#8j#MD˰J<N"E-Lۢvɮn,)ڇPJ""\X`ėD|LXL 2@".QbhۚʸIP- |#@%Dbu񕄯Mi; ~{Q b` FsO-V䢃[*|gU GShn8SH8I1 nV&T&)U +,DC%X\m{#Ԑ.X˽z=Y )$B}b@ 'A\VN|Z7ynhӻ)z|6JkY?nUH-JLe ,PL-ݒ Q/5s,{\3=+WgN>!)X ~c[1<@ǹC+B,DգlDþ!Vg%g8'>D cP,m:-#P*ɧ?h{_@SԹWtL8Q^h_!" μ&q2>z &>^GlSU`JXz-dp 3-ԃK[[08)ڛ7cdCr{ϑ@훉M7g532 \@Q)aY*ǟ⅞sIТRU<txLjkQԼ(vܴAyyl>zXt+CvRWK*¬iۮ #* a&ci2dRҘ{F2_Tdۄcs>ʨ[99In,0lULo-2ZSc|e6hמ|7~HSVU@)$ṵ)DhR,Eɐį@ʉhD3Hm0{( F$'ˬɻi'+uQmS1ĆA|&ӯNInQaȑ]Fֹ N^FF1 tib?Ysn^q`m#.vW'Xg.qsu",gPusrlF\T͋jipd}4$FPޖ;CU䧘\ŋ氿p-^Ȳ g"Tb`|y sGGyuvgyH2L86<|DzV!#x}/=r3XqzD- Ѭ_O5 w_Z#ƆFE&]x)"6,Nd|Tzc+H۞.}pNaidM ܆&;϶& kQn/6gGɗ>MpzJG+oT`yK\нȳR @^@:Fz&Cݥ&Xz1HBn͜{B H[]f{0`Ly?mxgw7?t+[?z_)¤'XVX-o{OӥyKm3}No7qIco Qax~Mb SBfgUl1/q9/.Жu~meH؍I2f4حDA+;:g-ןMV{aq{ﶽ(:&F4xCXHǰ- d!k Tri/bQq<߷/XJ05]T/,o.W}ߑtqTl+Hٚ2uҴ/0|I_8A7IGyw^An JJe"_gU6>ׂIOA@yPNA^7SZ6]>.>;{ vD8iS.)'3ʤԒ$dƏrlkJ/XL8S*'op $;įx]=vogSM mN R@KBݐgxG9$/=Qp0 1K.CHs?:>K[jًM=5~>B·SЏro b6,v/ vYc'E=Ҷ {|?]ezN0[i1e8_\o19(rڣnͤDžlnG4+X.>0h2߽<~][ҕ4r꾶i%N[iH<nZ1Y-T]O J#z@?d؊t CWi.OTcAzuyq 5UيeWY{@ϣg ;j$˪Rbu Ɍjx2%^?+;h1_z6:5 22 A=4m\ff{Y";yCg^ztpKxGxVbJ57b|xc27Q zJ Bz\ wxf@Q E 0V zEĥs&Ɖ ڀr-&j'&Gd0ju~ -p'X&N5Q퐈%⨇r(ƍIƌ'|Σ Xm6pf62;uHm՜Q^nM/&N2'T!1;͉ QU۔Yp/҈?`/Y`}9bUHNimrIj1q\,D]֍)\Ba{6832+ wa84 {ɺpp@ΈH# ܇rHLfU4?ySϻ\)/>m;5|`>*pF *D#_Nmx7@+͝^/>W z.B{Fy+A'**TĘfǡ[KACzFhIfMz9Q Ȍ.Śk!g,.@e\ 73k$EPjQ*I䛛 tFuVgLf%2WC,ekMo>vV#ni3e،#kwǿg9/CGHS6 ]?h-o^:0ݤ#kjxvׂ]ȽXZ\Rǁٽ/gpw=Ѿo#wtd@{L[Ob6^vW,)Nqçrm.DրM4FUFu:R \?o"Z/)\soi"z(zg˻ywmrkeKB^ d8Nkqs[#Ӑ 6lnxv uQĝP|<#N)GV25cҞUGzO1Bqbۘbn!?G̯u5g]YY$7+A'ss Yakξ!O-SI]~ ,\5皂i_SR pJ1kLc묹ByqȒfGD_gEZ]0L)}6$Ӎf5gJJw_s}dNwɲj7֦E^9F֊OlbX- Yy.S~%AcLV,yfn TE$/L،H\v6;/+!B\,J#A,Ҿ}~IV@=}UǛJ_"#g 12Ӝ}r/%p<ov[ǧAdJ,3.,E<msSq)78+O $B]Q>ojլ4a>GI7͑`UZXMЙF ?L>FZIЂ*ߑDC6ĪL ̭f>%$viʊ<#n^Ir>j-yYjBձc-uZ8joB}_T,54B,ḥ\Tx_;mC6Ɯ1YAऋ?oΏ605J9TK~"~Q ]Jh(x >̟ǟ嵏[ylnFkLuHFYɁ_.,O d~TlcL2 Mwq8qjt.̸c=L'6W)y 3ϲR1ԟ0KȹQ4 9j- j!{蔹z-hLv.}OjK^6 a&+'m*G lz97Opf|²rVg[J.:$ToMv)!FӖ)H!8{hWK*ai\G^K\=w~lfzwk$boc>AWTԁǎZNa7O1w UjrTu袮}ny:T  oZ^A&zOƜ1U Kt 2o_U_ȱ3NmNe9`̺Zzޣ:a*.p_hNTutی;@7&߀mGbh7Ե|Q f,=i;=' )v٘WkG: XAJeD=Lon -Bڬ>9V0[;7@`"L`=0: JISیe7dIa-C\5շ]^#y =1E]U2[D bAAӯGv&*4Isn Ϟ])3f2 <ؒ|jWA3O^Ej 2 fC0uD}X[FƋ[f6HDZfTqfL< WxL A 88[ òp٤6Ԩΐc勍ޙk\2s |LcӒO]L8씒G _CHt5CYՖNhGzմR0L%jɹx1L]>j ((U9UDhekߍjVKzrtۅ`K/xtez8Dx|[ϊHڪh֝}h`a Hh5;5aŠZhja͗tciB6\I͝.3#-C}+ʖӗ p?.lh..oxxf*{4Xtb 2&c(6Ja< Ðu<4Lqs 4%TOu ʾB!TX_Gm[ -ȸ7 Dw]%hGIetI~r4]~[Ƈ a=>Ǒ!yj>]^} kk=/KDVX"ˈed.3uQ]YhP!lO=Z$HO?)M-%F{ {)ICի0~3=Iv3PyF|`f0DR*]t@)K2&\E\?u,!%DFa L7ȂQwqWM=~q~fOHhh?UW p}|e;t)**It9pFOD};uޓ1eLbG6Uu:A 7R4}B7ۛZP()3֖TN)e ̕}ZG0>o JeJ9*Vօ!]:Ñ f]~94̘sw?n@B]>?1t`,B?Oã-|*ȼ2p,nGsBq~=vׁZj&68 /qQ oG?]k|u,- y59L}OcR b߬dMiDžTYZnl l}X Vp[ߴ#F-/D vߏq TdFHp4`7F0Wn⌳D [\^9#'? ǝ67!0GhB.JF3Ee/mx\]r-H[:/LR MM*&NrHvKUE[C|r^o"T - bʃK#DFiC%'ںeIn4ϏkkķPp15Lm(׎;<\ BΔO|23\Sv߲! лd+u,`OeprAr/PK qFbP^AVJ+X^;ޑl=a ,(mte|N M8ݻ3y\&pk<+f~Uʰ4nU%( f -{}hrfDHg{6YN<Ѽ AC OC`ZBÑ x]Aqd*Ҕ )AdUGK*UjfVt؈ yK}j' ;@/Utm5-:Һ'/c.D\Ci' .pr(S+\yt~^>JQ^k89kb"~_ye50U3`4(4Ɠ`Jd~<>agH;ZmĬק!pﵽᵲK(Ȑ>' %!]hmwɯxMWSV.[t4 HQâX+_BVáXc[Թ+^W!xIPV`2(oZM3OGR1_kHxȫFK(9=,?m40N,:/ivgKY`*3ga) =q, +Zbm)"6ň5] @1{w;l<#;6r! \Fb]ŸEFtO L#]E]rَ.\Z8,aD9ȴSHYtJgHouRds >ȹdZ ۖYRVnB1q}}'Ib0υ'*/u7x(TO޷< Ĵ!Ab+ҶcRf+0{Lk-Qda&X6}n^͵Y7!,f; rq{o1$'mA4Hz/b3>#,Kً&߬-T8LGYQ)㦍E\XwaZPÆ "Z-8 ^:p8L,Qf47oϕO/ܨĹXOF+H55.EokJa߁ tńou g1(+MghSP5:1am?ӶR3@_7G%8 C*c%g 4K>~la-ky8._L*~m&CRQWsۺQnPz27NbS^"fs_,@MLYC>&zbDxbU&'cjA"^ihEW_#}|`S<JAӯ6Ej@\]M2[oXjn.nx`M)RN'bˤQ2󠏕wv)JƵ@?G0o:˲^e`cA<\;2@Z"^ QEa?~~#4k&&x$ yZŰW|P Gt ,m fjZ^$|QrؗjRXӅMƀqvhIw:xPzGY6` eQ5YBƌQ+ہ$ g5EaUkp/dlRg?5Y X"yǩi]ӥdl~1B mP9KPDz">Dw~_D7=F˳֫#k6zh1Awv?^V N 8]`E(e͕Z950K}~*6hL0l\@E5of&z4{Z)7^ (ɋ5nNN;' 1ELRč3ٓΎօ@0EsWU^6gz-.n) y^@Q"Y+ŏgA\bch\92# YV8btpkf&uY# O}ɾ~KoS&؉0rH\.Z jMVxĊ ,$B?75jUA)>m 4WW>ܔ y{ ΋ qxnw!cl̊Ο*P;ߓPWYi:_:$r6'+X,rV}z*n0yD5 K4/Un++Ƞ[ƧN #(K;^-=tFݯș&POl=~AA4US}<DǠzý, |ih,A(N/*JX|XHT־X e)#t[CSQL6ʑעZNP2hp1dxaoPAQMebo<^g/qsp 4og #y_+r FolL:~uJgߩtoE0CV༁>϶PU~*Ya6 ")c|i qxP|lX(t55msˍ.wL^5 Ф @Xxfmkg+@Qs j$de[abUm!m^8rg`:vUrў^Ni࣠yg#U bb;8F:1KjĜDH}0Y9u1?_㿋P5A7lvb )NRu^-]D- ("rqZ_rq&j;=&*[Q' w&|  tzOٟDoݻzdS$IHm.1uTu'=>UDknSC'{pȎwv Q0p z?a’+ {2m 4KbZ0 gӒ1*bl#?`ǼBkMlDd2|*m!w>":sRɲh;o "OUVIVN:Y*f ? THV%/٬!O6?=+4 Uc}/́Kp}z6I,:|XQQm_(G{`j;b餋3b"biXM//`0TٸpL黔/hxGZHU7LY&?Bq/riԞ#n40*O`,PLqL'QMExE}8h8E0#{%vʀת[k]N'9%֫he?¶N-\C&ťvagAѥw[~w-W)PC# s:Dtero)poR11Ck2'i)^\BZ1Ռ̘QU.}NBUe +s$Sm.(uکZ~ƃ!k{֤fyFC -[℞|%Av873'Lqyh8Y:HMdt~(SqTi ^-ĜGt/Hj3"P<޲$uV?GL=#'!P{WF,[%Y?]Uq+ɋů"AS`a6|QыTӷ'J>Q9*M$Z=QCl0{€P#K)cpR679^;/>Ugb:ʸHSeYm}6Wb/YË9bӲkOon2z0S 69J?PK'n\:($Ɲ6 U`50;YH1-m9{f<%6JZDf&՗M|a778s*7@%]| Zq@bQ؆fQ޵"B%u`AwBL8SHjW]"'$)p6o֩_29{Zc0o.$UnK; fΧ.RrEŽ{JR+Sb(`T>U/}g]ҏ~3#cN=!ȵөТ]uFA}f34/q IT`o9UjcKhZR{#iO.#J-;,O4P߅?ʲmbGVr\@4$4j4TCd€*yM2R͑JnRD"AxcDtC2om59BZf)_\G..V)kۃ;O t= !!̌anA~P#r~lj^՛JaCA]HieVy){qQ"52V$@K%|*)`쳮B8{8d5SfeuNQA#u"@3#d?y}gv[}DU?`hkrwTq^ч.䚛EȍLYN8qf܏֦8]X!؉S15<^;>܋h-D&Pld.'^LTcF ]~>d&TJy'9G.6ܘJyT֥^Sr -`Ë9i`ċ̻;뇛7GʉiX? ?w]Vqrn'b7읟b{v,vyhjӢI LEmڑ$?lΞǹ8 qm߆Bd!9f [ŀD+5/Vtس_mkKq7K#Hg6)Z6niYI.%uX׀F;V9tsmUJzM %(S"F\)]r"O~IJZyhJ !qq~'+LBQJDCvF$-dqKqt@U6"`K?}o0rVp-]csogBU,l$T0bM@1 8 %u{*Dp6%J.^ I['.K,a~aXDLTZ5Z9idS| 7ŦJ2E.p`%m{+Pgi{CPVP>:9c4Tʐ3wt{ʟjh)JҡD" ,ͤ\`<Ҫ0KV%E.$ٹ=LF25$[d{!8Չ+'H`]auNԻ\ysW}ĸ~G f]?7u=c_UQx"::ZE}A id&s޴cEi WXLw>ρ :J2DïC!cj%.%c-֯] Ӗ`!x,.m%UX\S- g#P:G't>I$FFTx_֚J>K>N7Yu~+ Qһemc%v1e,C/7 Pe(&Ҡ)ڡ(VM<}SC|,S/2h>yxż2RS,Hc)"Y(#Sٔ.#Z' wn5I௻eޙ:ݵWLTщ'byTk_xZU =̃yA!ITy׀ }֗ga6h AE3rVeBIb1:A7'Q㬅:=g0c^=21ϲvW=FۙBz)po6L~o_M%ܟ B@<([J[,I/qLP;N9ţ*I5lAf^.x5\Z$%xCղK E%$*h`6~X^[~fM[?6iԑ{̓Jo$Stk!D: 0e]h"|pQO4\,'B {٦ҍaNb[nHkNj -%* cJܫĜp1[mxM pBvB@P-׷5hff2OUz,-g("pZOh5Ÿ{c楘 D[0[8t+ei4 l5YdGt=e$U>!2B9M@/JAK-J@S>x3O*iX^߯ySHtS/PZ* >Q=.X;;h ^@&W6'|sm.䏸:\qʥYSQ(/~f: CU|ӫi|I<)֟1t0AĄq*VvbJ䠧bڙ䙲7.(ǩU~_nN%(JWĀpr'7?Ð^\[$3D$P,dʷ`VQKLiqR$IbrFM[t=ˆf17~ UvCJU[/e+3c)J- cߔ23$PkpI4(2d A.k'jB{k#"߰v<ۙ1v'p:]PN 즴;ȆN1DLv=jCmjB6ECS*%8}99?ҨgJ\n e)TG5vZu:%:4b3Q˂Ut'hK<"03MO:#LX򺽐Rbf=u6xCIɡHEt溆z0jѮzTt1dF֨%| WM#qc{uz84iG'zTw?gQkY*H4xj"uv#j-~VIfLApw6Wj #H# zrb"{icBeO+mCuDc~@3mV9K~-Y:F֟G9VѣLL4{˰p¾@!DT{!OŚA%E;% '=ԓXU咯oAwMa$ATw@1$N滴Iaw1y24"_s'dCx16NwHChNO'C8) gΘΛA4\}Bȍ@'1([1,[#_^MFCjp ϡsj{j1` ~f-1tCoVXǓ2ЫE[n83B]=V(әI.>M.ۀ{aJ베VlWPSB( \ߥ>`޹\qP5.GND3Ý*0JCW2  r!Nc 2_C& bh LB:olk?}0jhZI%Ū:#\+ 5POg{MsxHzMsXa~)0Gz|nH!5r%ۡ09csFzVm*yi#'&!o\[ 2(T"}^K}N~Ћoy !v$+0b8Rh" qMq9sav1+ge".,TFK獙M7ƋX U&2 ( Z 34x HY)p2dvWrhs=$uDB&[rHD tl;֪!to%!|I&4Y]ƾGd]Kk MkHҹ[k2h) o.7:Qqe2;No2 &t'i!b4Uo^׍6%CfFRCI 2Fj~Avؿ|yF(cZ=+RYVF(#o@׬jR[r[fM,srqV%C֡v2辰հO'wjAŔ ;X{ؐb6'i 4Rd5vZbTGzn %P}N֥L5ˌ-w4w)z]2<T辌3P0jӗo;z>EC"m=~NB)_>e8| 9 -]ϠLntg1Jѣ24RZiעjOHZl\=} Ň|`[/}:sğ3*zF6CL.%Y̻ OE9A^A NB1,Ǽ~jB͢gaMZSzUCr_{6˾D;V[1o:!DCiΑzEnБ'$_mC 5:__$)uoSy=h"m2VY r."YGl4|>[98C9z{Q*|(@Pz-1dXmDaWz2%-8i?h﷢/<# Ny9لQd/!#>g8l8)0R$q~>/DIx$/@CA߯#g^g&<8*@ = >QL<`YkIgX )N/8%:2onHbpA bT7WC~ړɠпW)[ Op'xB֦ 7,m?H賘lXdWXZK8]+L9 %q+aj dАqW_2cANjҵX7DHFwp!APDH>=KIԮQ?L#JGgĶJہ8VuD O؉o<aX|8Xۭ`At9ON1  ѳ>L͂7V/VXmw凈JZؑu2t` h=FG]`@~ᅡ6 fU`KhV?8Z]N='r̡[vb~6}эhʗQXT^IAP] >^yΛ )s 胕R$pceLu0OUi?5 \X~#BYP&Qe -ʬ#pos]+x'#fG&Pv%}օ9Fl:d$^ U;-x1ez bhL;UkV&NsyN IVmHUj_sM"7_:1xƽ5b<}nA w>Vf-*IX!Tâex$x,9̦؇8Z}gR[+Ԋ`pJQR\HX;dB\9w"^ gĂq?'wB,E kTӓDE_P(^F S-EyJ( f- BJZ}hpս%0?.;1vI>\ np7x=gboc^\g_idl[w!ר8x_^uGUň> {FAXle=aHo/':;y3f?(%D^^8Mbd '6lGڎ|myD;F;Tg5tO'DQQߐ5d$߷ʑ+t1ҖA8GNJfa2N,5WIB5ŽHmm]i3 M&AP o>ŰÏso:4&ג7 ̽/_F:\w -%'n)qb@V;X ˍl['\ 80=oA'<=+|zZ}0IRȌVCۦ@QaXG8A>h€ŭsԭ#C?X @Zgc^M,\fin1OsS,mB> s rXT9i`0UHCSyJZ[´xeysY5 ܧ;:z=s0ӦՁiϨ/(Id+v>Q5" ^sQۥYl_ky{r"%k~:{!kM8"U&Su=r,)&Q[SB~Y3-L4X J׷mw9_00Z:b&@ dnP׋!R]ҁ؞WSg~,#cV'P&\:f*B}+F}㵑LNF~1Ҹl̐ qH`W/< ,{CaۄC-fGM=֫'TTl3=_kUxAK?)ZDC[0c 1=0ٞ9Rk&U bRMp"8?:JI#J}&UZpA&Գ):wQNNsGť#.\9yD"Y(TUd<MX>+`,^ҏjJY~()>-GBގPO\K,.^8Y # $bTqtl0Y~ 3QUT1Y<7bgoWiDh˵+j$3G4O ajX씯b5m*t=+W6k8 =LJ uθ guߴXF<2~(bvDb7֙Ӑ84.y{[pMQsr]֬%"͛|nW j YЅ#H\PxJҚToPtH r\Gt~7/&qĉF/nuV3Ե٣S}]qxx0`FBHkP{>ELx6'wsg_HG\b@%|ץ'/LV{Z?7"TW ]UW" ͱasl \J*Οˎ-OZ4@ h?\Pc:_eikwx` 9"e+T\]UXF`H%^י<_n]t1Fd*K`y]+J) L3\4L{#?;Zf;u'Wx<2u:ƺ7b;PrŐuZrO+Ʋ(u`d*WTP\:B(D>AmXa'b0=FhF󑮕Au9d&1}%-:s #c#UCa:"ƭD Hj6DBz'Xg]HhP ;gdܷ@XҌ.5d"$ІSd/`=0gWg&pRqT hǀ Ze]V(CZmfjS "řZG()r*)LR{d\~FU0.`B_Vz)|0N1\. ϭ_|\![ EbF.^VQ>q)"82'.RmWrr+'0 ᧈDzW[6ēk9eɽGző;m/5"^E4B%iĮs$>hITs)bYŀ{dx8WXi#,1?n F9<O ;&{jXr[kw )Gc aK]T {R1oK҅t3u#A~S1Nȍ}ZI8sh oZlwo>;8 # 2%`7G< #'=5SpDQstkOsu[)?MܺJ z#uV`V犵;!TC;ӨQ.(KsfH I|9܉>E vrߊUe_+"9u=$~-uڷ.w^fnK'.uݛ(-\+n,Ynfjy r4xM \5rURZ»u"*rrX]^EZ怒~(c63 Θl8iX*A%O눥chF BL罬窏vtg3q3^7oU#hO-Kuubj 8P\SȆ΂g)P@䞓ޣ-Og{0,&'}k- H:þ]`<4D#Ł4*{aKR&tiF5f_)OqG$HՐ> 㙁B=}>IK<2f=OOr3K,ڴl6 \NIJ|A7ojb s$X+1۽]B%xEX!r1-mCc|U aٴA16([+yy&5 QfT7(vKS:s5=75IJJ(gRNG/@ӇȮ$c>).F0eE#p%ed`Kƶhi6F|77C')$)ޱ10XTx]n6 r))T1EYQN;Ce]I`sٚTe#h3Q;(GS&cƥNf`JVu\^.HN !Z7Tfbq86$<nZkp&fh,XS'n1kZKOjB/3Ј2{Z'ۗzzMI1-0˶O*Ӝ홄2|)ڞŁcʉYsLﳛW[0K;݅2 !=]G' i~twɮh$(M.qRcwf,Sqsֲ̲YEbIY,\# ͝Mc{Ї  a, 2\ 2xr!H?*'M;nkl6YDŽji\\ `0vY*SAzΧ UzV¢43~N(~$#aTxJ"}M6+DپtCG$1uᥟ\1a8ZU iPXl*f@1p̛K9{(k3(z$/s;Lo}_ _9S;j ˶Zz&zDf xѷCBTUk]3@u6Wcu5T!dSG F4ͼfl$l.gFjRV2ͿdNmN"n_@6%;u~PHp08E\HyIĆ_([/L@?d!nr# l9AD=UaHoLvXod=o+g22sVҙ٢hI) %pu03y^ E/Xʋ6>VUb0b]%5*g0߳7rcMj6pGňTR>l%p3QtAKC‡K5qXG cc^oq9 GThh2cySvg;:$?,:${ gg"j,OB{UJIC7h1O7wC'mD{E33푫2PB7k[fϩ0/>7vԨc: *+K*0,')iP<(+0`,\VԃF,͡=R͕ZCiV™iM.՝FK2Kl#(s Jg'^Ÿ!I-ɲ=c-hRJqxjuس)Dq9 s JRDh1 ͤ5D~ [4M[1wc A|TVk!{hsHy-p\hVӔ!ºI \O bzsR€NeN'`.|?ӚfXKFٌb5L\|;- W/:"ZHQӔ3u]pBU ]n1@1@YkN*S#|o|]tC`bCT0>T̸JƻEowc+夰&e2Y,ž);\7+[%(ޥ/dE6$ZI4X{K824>OSw+irJr\AEomG&ڮk%}M 0вڄ* Sa/U#u/;5vr Ҽ(ś1_>5n2< me"bَ n>RK|Fw\N `y!sw[(JB^|z H=]^Z*%}x@)Õ,?n1|)C^ksu_)?ފbN𗨭.#fyWi܍>(z@ϘsZ/]@Ywa%%@.KgB6`OчҞ{!.|s\|7EEk%2~E&K& +gL,av ZhDK)~Radž+s,x4Hj-~L`'Hd i'Toϰ\OT"'W?SЎ[o,Ul"Z;wCD*tW_R=M9̝cr `2oX4ȇÁpl*Av/! \.a]/-xCMIj(WP.7Սhhڟq FL%Z~?Px o\yb7Nί%e~޺*{ E ,Ojjt;os.'DAu 𼥔E;Ủ|:Ĥ'QFO>X mlQ4 $)^{N\o Xqru54׫ٷ\b{/ܴ}բ)8##9C#n 諢Vv`6deIϩ䣳ǐ?r鬩,#G.)P-"y  ׆yM^7Rv阭[2@8͑G'lK|13hE>vԏ,W#.\x>dzp}D| \ خ:m${')C)į/6 U*A--|4a c^cWKlGOA3Ы񞵵o[ÂX ᎐BbI:(0 C`f8t a(Ҩuz&d`Aېu@kr޺W wDݥzԥKcϹ&@ D; W"uQ|s{dL B{o7Q򴝟'M. Ew b|QŽ6< =l[Uit~>6LRyfΠ)UM5BƀhT:)A/e[P_nOm)W^]qOi ho=NCu~ݍhvLJٴ!}ӎ/JXNw]"?rf y524.qSvb2$ϵ4t`vS>7dwĊs,?F|l nBt CƵLVq'h֜Զcx}tw==MbFAas`~q xKl*|qkH~:@fBc^AΌMR]|2GUx6FL,*gj;0N*@@xvs Qu4:ׅj:ÜM Wbo9.Ftx[u"w}1'FTKa "+l|="fIEFv/CقPqNz TrӱHs;@\vPgL>0 YZEpi/data/pr.rda0000644000176200001440000000313513347676626013037 0ustar liggesusersOUǏL]MMKKZ+׈̧hf>J$ *Yc'| `a!&z5(0{\kt>n.}9wĸ=Ra*<"BFuQ{ߓTxNwhUğ~Ny $#+`6Gԃ_"PaG|CP ԒJб9F :6TnXI[Jб9N :6VJбlNtlNTIJб9Y :6(Afoescstl&(A-zmNWf?es#9C jAGksԂeI-zmRZڜhes#9G jAGk3Q jAGkYe1tT8GpЪ"3RsS3CGey3Nwm%Y*=rΔEehlIe㋠s}*O^m8fM}As0yE,XS벋}b3jvSK1(pZy )7F/nV; Ǒ3>a^vS^}\@=2ׄA"\MUڅ$S/tyΝl$#o N>a?}q~5( CoN\=_>kei3~ܞ@k9~n{4f~1W7qʖ|!(t^LW//pO ҃qVN8R\tŤegW>ODhvGc~v ]o:D-cMP7]7.X8mCx< 7F$hI)`6>vO1ZJEFx|tW Z9ASli_LpC}rcuc؊JG, ,z E66|0|cl.5؎,0W!oGUſ/rr 6[=4GEBxw__}dvŐ>[{VE`Rf/xD? '_v6bR%cvH魋dU+ P E7AaJ|#3'm8Aȵ`1,ᆼ0748 8% W [<1MGG\"'Ίhh j[J%[q9kbd5*Yl28\Գ&Ď*-~>$U{ [ SĶ %H}]S 1Wi\={[dxf4f> }1Km@ؖCE)N-X6T.]!jK83RF{#XMccG֯.}uKۤ84BMGE?2L1_X~)ӒxkL_W]ZY _ ިtJY--Ȕy/CP&PA/%U!.)64B4/1OIWI֝o Q|afcMtY,gH퉕b|,LJ%. JK9+쬇QϢ3!>'1b~/3f)t$MgPrjn펈Ŝ']%\gtHWzysc2G)%f|@MjmS4~&N"BZ愞jgɸCmvM"lfDxJcLy4nPaA}3:pz{7:kKL͗YuYTN< P9PHL˙8ABv^R 7tЈLk[s#C D g,`(cAW:Z%g] TwG9c[ !.$ +FlO,E}X_cJP".",ܿrT^Y,~ET-s ! y1DG7Rj+)9WJaamSq/uorDL9;HXf/!hϣ۵hny7/3rQQĀvo` ro*ξWH6L.w++xFSG;L/cz g{>u $u)p6-|oA,@6D  J`p@ =d-%oOD|soRNQތtѽ"'cڲ^bBD?\eZ}lܪٞIB:p9x jl ]VJ 0g~c gb?CBEF)9e|x ] f cMGIzup4ج{75g2PzoNoKn]2hF6 0)*~@Q Za{ksoVf@Fu#%SBHBcXp#,`&Yfۼ; &tPѵ.$u?,S>y<^tq1Pk#8X}E[,5t </R @x]^Z H&ZlԠ9H<ݰ~-+\'A5O5z7FOyqjLn#Z-AA:L#~*Z[vȀBfcuLz|$W4дJ|^74|_W쫣F~0VUNF*H|NHWv$gn-'/2ڳ伊àeB#nJt>B{1PSmv6h*toy5P뎖Mmh"2S`Ù[ѽw3[aԡ8!)@Y9h$ֳ.L z/1D _Be7 E5K9!tT!"s9.Z6yQW/8 Ͳ(ZI@KgiuJbB5ndJybBӍACI N!$M"YDKX \o:?g;̩w$~M%6m a $w) __#t⠬#ޒ0jKSGoB拼XcbvĉҎ,ί)N.#ڶ S]q9ɟQ/ p^؟WED׏EITTFRutr!`OIH\?+Z" nb5S8P_ kXNz8H@nТ/49ŽoŵÖT\8^1!'OJ#9ǯ=pqS6ڟnڅ}Y\xhί7/*zCOtZ%τМ'һN}*Oim R1(ٺn+9 .`>cN.eSf{ŽEeJ{1 rӠ"ct4g2t@ɚ._~Mvcs&)6  Ֆ q$ l0q*Oi) Ɨn92+3(W!qd=^3GrߥdZ 4C]0RȷN^hƉ `=7(̒ܖ^X85c, k3Ѣ_Gs5v&?͋$A88!.KR[oHcULd@G;-7QeFα(3Ȥ}t \,>3I&B,z&\g6S4weD%X~rwcVq4v#}EcVebӺ;*-jQbVhG,Z#azeG=v}V dg^a9k: G\|@:A+I|Sls[v2 X9=FEGVRUj !vʇw'Y_xwPY <]x>@9'QOWAD #9E=J$%) 66έi4[hq$I%դsnLwQDz+$aP"@JYt5s <`ׄݾ|O 7-/,ܹ0L.TeX}Kd<2Ԝe6jbi4MnҾ\-LjxuH,4 QMeF M[N]rY  =T/8VۻG,G&C/-o]flgc.d$yERwԕd4uTUWmFh jl7߆UUq{msNilLm\kKus~o0Ɓub\R?e]]:_#AݤRt&Ⱦy#wlnM;I~.G{ Di|?b}⊘5޽^^w"G 11 )+r0ߛ +nYtu4L`[٥=ih,Q@N0m1SWCэsݏ-1I{-@-olA mo'\pO[8wT{6c)/nszlb0.M0吊OݹN?࠻m=rghE 0%R@U3Z؇;m-0u aWJk+WB>5)kbX9?V;TXU%JPCAC:{kh!XF qf=-Y @3q}: B[QHi:<ft~mM{sZJʨ )'>3?!l[Mm5D7/RZ.M3֟uj{\sm&R3ҥOyТR0lq5'~yR7"iO`ҟAPo ütH و][Gc:d k17(q*c9>)%ES>-*'p!7k7zRJ1kwDm}CcQ5e+PiibR [&t-L=7"M]8_\yYt8a~s1 6tQRe2UEM6."cM%FX"-e0'B,6N*h%c?7--F3'eezM[]'v4WkSY3di ?֦mD >=rĊ7_`^[#ŵ_Y> @ :lFNg],JܿJ!%j;Oߟ7^C0Vg]O{3D+A]q]mD:..Y;̉^٣?'Pd ؄X~#tn)ȟ M|:Fقk^緳B(=dVQb$8$yV~De-.Z,q/lW9޺;<-Ųp@;~PZܼ!WYQ]kDJm&7i%]-OFkO[o8^Š+Qe&M=} ~ScH]kR`} EeaV[3fKnYj*|BAFf86M;K/%Nߗ|k =S' @54smݲaFh0B={!lQYa3`9rGiǞ΅34m_? c;$s-]Cr"oi٢0#A[p<8<8i>%xn]ڍ5%Id0g`xU@cOa e[\O/MC QHF?Aȶ&=N~/teC2}m7 ǓgzQma DfLA@nm}\Myin$y+ 7=f=qK7ԲoVC,`KĔb3R%dٙ?P*)OuD&LRmvtp ET/0rdhy 9ו`آqS">˺WO1 Gܴbޭx;2T?1qݰ:"LKQr:dklEgjTrJΤ(.eiU\܍ 5.ƝQ+U?Cdjj +)]ٹz8v#kZwveڛ<&\DӄcA NLP{4 ^z˴ѱJAS0 Ѻn{ X맱C|mCʙ?m- uߜ*Mv4*(…IJV8u(p S\JޡVogАa:^0ŀ^JAV#a} {PC H:Ƈߣ>*=cI6m2?oBybibWH)h] |p桷G(vD隑vuψu4Hn9>0~w \sPܡ*'[MƎb. P[6T܂'))vƫN0V\xV&x $#oO;4Z,8pGWJUԕYcVVh^}j"C7 fߎmp,hyi4"%yh4`=3*|B9f1OaanP M}^k.3P@T-RX^r^\;n(H4rҬ!H1J@j-K?RG$뜀(Tai!-lJZ'!)dcᦘ)j"m2Ǽ ~v["΃-"D[,B $Y? i)&QֲH\;vjBk o\9co70q&۷N\Z$06JP MR?: ę ?ЪЋ@olșp\fDf!]=~SW&uJι}h]P#du(;D:T-f:׫S>n [au1gW*O޶<3&sGv ;@ +S9'thmgQֶF_/u}XEmMڅ^.5o쮩H5(dxK沉 Bܜ^31fKf:cl|&M 龬Ė^cUS-%^ ^ ЯxCS?B`!u❻"ܡTVBOQ-iV4<އQS"Nm#FW: 1jOY _Vܹ`‘QkFsI`ACVt'cEE]g㏕Cz϶XSJݓ /VЭcS>JgǼ ПW,;\̳zphŸL- VVŽy(^ΑGJ>yiH~%=5(B9]Y^Y< !:3#(fRp!QK0oŠ1P'TE%gY\i:ާM0M#"63.4@-ٱݱh{>U:*KpqcsumC>dKԘ,4h1YT(@@XH"@/7#u6 R^5eSf*J9 lcsA bIjI]w:ʽ7_wV3- ,]»YJcIa|U|ȩ/y.sr;rҗ9lۚ&gIxV5ͳyciӄ-;JGx&Yw*V{R?wU]r!IhI%9M [% jP몏N ׫N&T (㺬1*[2Veީ#YnNz%GI2hi*anl=ڛ2[>n#:YHP!OF"F~htp.Վn53E.#& 5YṟCLԉaܱj%|d۔Ivү[0b寘B|@vs* U nVG4MpAMMM_W=A3 !&1lN͒Ti "Dę7E-DW/L~_9C|O vƆYr$8Lq;Q8jdN\ݰ Ճ?|lX{uxNl#fpnKSk+ϑ?S7=ڢ(VoaIߞ*>NpHebh>au%C3)l9S EMn\ 'tE-7kCQ]aA$ֽES ''K?>)@sFޅaNz2yV%8tT\C:n%-a6xy'ʇ3 4^5#$j+{r9_0; -rvI{k]溏RY :Й8`)'.7S`O)r+g,DL "0IDOڇrЈp]K=23&@rԚ=\ ohR $ú646gKݾ>i\-8y 2@;pc03AoVx`Я*U\&D&r;%xWQ+~$2ݘC3`hZxI&FO #K>ckP=j~%O|$fע+0d$|[,f{"ZE[mC~`KT32brm&\w%5*ÒfUp4zOG6)JT8!Z [7kC+ZmVk|<#Yg{lˆS>6[Y/-]QjL']'i|AGdkT45%KV&i\no.u* _:C彏Un%r.,5-\Z)[T"'kˤdIG6ri1y vUڗiwRfEJ7AeCPmy}-UJRAw k~3f\=/|:~yjж^ Tl~[`GS`,z;߿XIلFy\wEJv R3WX  )Yz\ArbL_´-p`i- CAg'%*w"=}}3[ )\bib'RybNhm52@ws/xtzۚd`jɉ=NC;˖Cr&-J}|Z]jC0kN\2JfuАrb¤xFߝ)Z1vFqyR5lj /]Q)=fryZFrVIic N)>wg7?.li5zc1qS3F#kֈ#KM:bMRsT:MzU8x5wM2w* :-phf0˗6 T]Yi=a>(5lX_pH)'d*ո؏Ajbr퓠`FRzB2ho) 'y}Mxz#9P16YIBII4AQhX(V+R PB8Oo .kv6ih18`[oygHߒRtN{sU&{E-[|[a!4n2hF$pitP:c _Ӯ_f#h\<-7D@v`zc& L Xb[[ >p"xv]rDDsA^wڄ#Tz-PP}DP]\asN):&dIjTn/GH(7!?Z֣'+qiƢ8)H9E o=\_rQx;wJvL}’)VkF:Wak/WSE{PCĎ*n լ|Ơ}n% HEȿk;[3&5h8!BiDwa{f_C6/:+X]!aJhJ-R)Pa8vb2h9Bn?dd?㥍"B=-fAW(O.mWZ-pзJ+@_ ]KI{$>'+s/炪#oS m[YD 9'L1hINZUZ FX|/dl\7/ip΂C \lvD\d#xAPT ˒ Gّ%;zP 6 )KE6h=X Co$#25!nt50TCvRNw,)wOah\zL avKTktρ꣬6 ҫC897pTsN,>* HX?n &s/:nsO#K`P=lpW0!a99r!ݪ\6whbScBҖEz<{Vi t*ΜlS4{'>Y4z㻦wg.7}X{.8(@hNb`&+ +WYGA#MI`!l }63(Ѽ0FJaH'ōg'\UnJ~e$ Ub>~! 4aKqLL @*LG zۅF%4҇pY^5O sD%6g֐A2IBjrdJR+I4YWFM/]D"6 C4~"urٵ+kbpG-2rQZK,&kL Gj_scݩbLQQA ~@2ն"% f3xOJW{HX!G+6$ˆ%95u?;`&$L_Go$ em3dV\ Ŧg bKSJ=3|ZVg7$ȁF∕Lk+EU~W4 ;{I>⅟k*c;G:~mY (\|VvWMѕ)x}F+ Ac ыY4o!=VbeӁE,JaCB슄(,w W-{ WiWsů7uc(-Hey D1b~U ,hi/ U J6)o(o |PVa}Q%ـ&89$3}Q圀x|Ykt>r롗dę1cK6z8;gX=Ѹ3 F;**k_܈>p&ݎH=&CSe[^f )Ti{Gi1ؗOFrz/4ݵv}ƐPxqVK+15ƥtϔ4 ORX$bC-Zg1&Oa nG2KK|p8--aV1l  5jp4 Ji̝-+)л٠ⲶK$o#1Ls{.?9o}(}ߺaJX5Be)sgWCʤh'k }h3Rr{.6tC~s^ KK9OD3XBS1.] \ š q.udG/1?}/~?vޅ ݳⱏ'qoWtpx^'N2 Gb˺Jd=K)Z[ָ+EorӘ)p<펼% ^,M[pmk೽Tp-诲9IXs^99.1igS剳p [RF!k2 5Ŀ|\.V N2T uV`\ KK6BOj*9)6ăX5k zūL 1;H!.> m&cOJU1ٚ@Sng0*O!FZ@Th` _.vpfWZu@?NSc-I#JZECTcǘϚh(tm([Dّr@8Qр๴R3LI}):s^:+06>a3[}gcyP7єWuW YATYdJi}́ ;_8M>紩=mgjMőKii(O @hAq[Ү+4dF4TWc {Ɠ=M̝`lr`~+1'-bF8{{=h$z;bZe[6yaXMIx*uē FcRɢz-3_v[ؖG%g?l AƐM׸M|q˵9޴+'M5_a"ǥ'NP"H 2!SU bF׿Mx *z*!^ jX^9KM}Qx} @Mb1b'ľۯA} Ym5CX6-V w ؘuRu& WBx%I߿U+3fiJjo}k--qJ8j'ǰmS1v隷Q ΜPnQ&TWzǜR)6G<@PMMNS88] '(Ы-N(KGyKx&RQ;?ڮ>>`h - Fbm)XԱd;^Me.J jCwOv| >-gg8h:D:|j?(UB;McBV% U]Ki X6AUE=86 0n`-јpQ"UI4?u-qF[Q^QѠݍ8I2LP^?M"(Rz+!d0q3*G};?4[`Fش=N woLVޗҴlJ p7+G 8{ƶ1$,q=XX2W E &v q= W3r*Cmd8ŭ|K'H%f珹#\!p%%2McŦJwVO 1:Ӽ}šy'D5*:`k"c9O4D#nyNi)=峂`Qp[*ډaq䲤&ҨgׁND. Y!H Ĕ %p c-k-q\۫>mEts90&/L`1\Fct#2ZN#,}Gs8= @doa-u Bڣӈ)۠C`y='\"G57J$QBKa=dsBKlGަ(A'A^!u=:ɑp8Һ%Bc_MM)VsMЛWkʓtdaf>bk {O?Ȁw%(-~YM5wcCP ai ;knkR5CA0-CK̐uf!Qs 6`z\㗗>wlu +[K{s{;}&N&83SpnvELUlAEJR1Q-|OamxDTjqdSg. % m,;!B5!/xj)Sr7z ejm- į[2¦)ñf0(zw=Qΰg*wBvʺz>lt;g^ ]fW8`#*MTޟ_!Ԉ nk[%h/o] (?,򞔅}\8&VH7F˸x%'^-8R9ʀF0nGL8n~ "4e1]}W# mgm.\`"-WD 7Qۈܷr$pAOfA҃rr CiFVs%VeP,KfF]nO}6X.*ViD<rΞ"2%v'39ei HѪ@U_?I LζMfdwa3[? |j^Ddx+~rc. 6qD{ zZ|UE-ݎJc*h0 .99~yl\{{YAһ/xt* ]'ۻXv-Dc]wc oZAObÖjwK Y$wl [m4ĿL˅/{BlD,{vA)OFupC]6OpO5ϦF2W;A,X ZL_sρn:`զ_ n+S"u'Xαd4()Lep]N0mVKeYe#f"5dܤE)2̽j=IQqe0ˬv0 ѾFd=Q6I}ˀvmJ0nI#/?-A~dnEдxpd]O}my)_L#nG:eYB.S旦?X;:0J9jStb/Ht4cpn'M>h3xy= a@ޭiW @Dz&ѯf~[}+p8IF&9U q=Gу Pw(\/5;"G$g=t ݉k;0Xb) 2jXz/'l-"8LA .ϻ Fʢyj7KL6:J2bNxM߃21ݢY?5!mt^o}aJYpH徯,e GZ+ɡ(qQبaM lA+c+N)V8XV \Ye2b2+ðՉc(#yV4wZ-ʋNTFEPmq1J^=ZnHז2O?!|p6v6hj7ٲB1zp83 Rͩ [qSqDs d/+OuKP̌ 9dAZH[`^5{4$Ut&Qgc1;U}e>);c6֒%3;+:vFCtYޚ77$itL0_iI ȃ~mǥbߓ*f SotFDMÄo:9L) :3Ac}‡ʡZ8P׶b AHD8ݓ͏O bՌ.# M{cD\k#0/^61Q+C0H߾l"1tE#|GP^6E@4獩 Mdgf8dty(ea̰YAyYW])/xQ O,R#Y]xP>H}$Tݧ+ 򋾺+(E%V,M dC΅ܻXU`4 Jw܆+7mLw4:I)}'΅au4 .+lfr]绱0oNe9[&^@[̓(W(ZX-Y휠/a eaO\&HPgƌx97ӭS偀]qiV &evACE$FR}bG޾(d~p-dW{l C]aGQzk)VF105?`7 Zupx4@iq>=#I9)^^ 0'א%CPecKJEQy=!Ԍkš}Z]i p3ˀ%E m1u!K3^W\K83#N3?_@ t 셨snBOR0^$֦ ZV+fҲ2cJVRJYn7Hڼ_IK8re%^@Mm;<ųu{X|}VYƖ@W(*PEȚ) ?i @fafV>mm WasvU0yИ [)H"$,, mD=B$pjjiJ\t2uxէ@Y-.ViC=JsSD@䒣Joo+壸P:`K4O|y<mn*\;ȱ;!?϶'̸ڃqp=&mhfBf]hYuR,iNdF(LicfVD6# 3iA W<602F@@_LMϞ;4r\)xg 1qibhoWJV/8|ߠaF &)-}tP܅qkP|*88L^ϜsY0UDv#yƈWFpc- $0o9:v,N/Zu(ҔVuazS)A'kA;*e^ M%ЯeWW2<{Ў>G9l/ôokqjkϯ37minT-&%bUkZ} g ?/I;K7_z E=R" 7橕zf)^!Mq-\aU!?93ʡ6v.^RbU=ĮIs1aY7<ȯÖ#A(6>C0' w !]JXL}; =W+g5@|)VR?&쁧i^|Xh6.LrO{Q O` 'a /\gZu']! G%t )Irܥ0gp-jB푟I{Wf}r-mVcȂnQ^v>[Z-;=&bl\rTp)n{'"2Lrdz8a}gjS6۪Q =BJt9$WT,P=~id*\!޸ud|Xt+re}֝yӊ/AsʐܑVcgďVy cd}zMsY|F( zXJA +?@3wXArȏ[:=Uݽ9s UeVXaeݢ`J_};mbM!BM)Sk"ڡ'[Y}!PE #"(7,jǎ~#BfTx: SqV\jD>es=gW7߃ADA[֟RN GG_ڌw3eVDT`ȴZJ4 `V"ЫUc=boe: -F fwB- ư嶎PCGtV#z{!b' YԯkF:cIn9q8Ls T-]xIDdh7!]u5 8->k2ĦF;M O Wڢj!%SX$gO0mC$$EP9t wqˑž‘ +eA>odɃ1l+9Ȁ(f%`4=^-2) ѷOk>w?ZW_$kj v.x>{T%<5;54h]PTDҌ63[!G;)l oR90c$yL.l֠MՌb~.-9Uw"d,@@$-)\2.7g(q)8RHMOhDͤPM\ԢSd%ظ/KB4J%Y,M2-Ӛ=|_dKe'nqE/?xeE8 GVZ1q{75W/EJr&1SNs"ņ=dpnOFv"BCIKd|?4Qbe+j$iN&ڱ(z]sbFj}Rjy]`5O;~q8?:J=A{[xO[}9#*9; 74P^i$0 * ȐxR}' Ž/,-f P-mf.؛}o^2X045TG&D?&zn<{ߑJ21v>qt+ˈ+m-r0R~]yD/I~ڒ~wrBZR)#d&"d֭W36yMNIT$:GaI|-O=LWEZ3WA·"%Yx 6.[,oS{ä*ry6P֬|bpſx{OQo[xMҙꉒ}%bпc@BLhe\~z֘y/'֙1:swbBQ(ѫoH;vwxUrХEoq!)7 HiJ׹|JNiBT@ݙR:OjũA>9cVӻ9W9r}MH]3[OY:Yȫu8yD:S&_AljP,dZj^6>@F %;c !qE#>+o>1A,ۛNp!s"\Ih_(p*:Pk2< \bʱ2jY!q[ g:,dxuN^jE1&N21u+/COE\8^wFG!1| :,e_MDIK0X1[*2˜8;ߜ[ViIf^خ LԂrjEzK:ECVDYrɺc!P5Mh/֐L<|W'KzQJ U Vhrwv&~34RXi8#\`7>}f*}##ewx璯 `69++\ׅ ݡyW5JE/\B|vRL+S|I_us1?i3W"WviWjw# ^fBu1hEX mD& |7@JQKp͒؇Q}o=/wI!Q$ xmeiӡb*%GM}8 GFLwW=}Bw1B-vd{IKŃZ~:g yw "'/|PɝZey'2 &O=kHsh#%-+>Zyo+ sN=?S 8ûf =B).k=q]3sEYpbd{cSTaZFr FS{_aV8̄.ytm9jU)-*h44r丈[5ʴF됌7}AVvqsxc=7kg2FҀLGoGCH]?='q#Iؓ[:  %`˟<+3n>7 B/D"ny 09^a^BKbX(S_a-bΛ̔xr=[3y:4R^GB߿::M~e(sH3Chg>,:#!ܳVT\廗sy٢@S!xzšEI1YCx,춫}qj P!j8Nt JM!y}⡥rVQR_%T Sn[+:Zb_3ͬ<+)1`ʖ".x;b\R a=,Eb0P׳GԜcjrSs4'| u !LiesT^osA2T)#=Lz ͣsBBK)Oʛ5xv-Ga~;[ 489uI'ȳw%{2 i_%K"azB(Acw猶5n+Vrγ6KjWYX5 MW*g%_e35;) ƕze@?=U7_j_]BRJ |yk\S{u/3ļ_]̀WN>X̦k7hD$g!>Yp:tRyzWYAϻ?^Jf8ݽ"mܙ<-,{Mn$i[{z=CX2-'E 㱀r5%L$Nf§\E6^6ĝ#-2lZ&_;2)JI^o0nǗOsE2O,D& @lQO+T!S4/LX=pb)Ȥevmiwb^(lg vfl.|Bu3L_7G7RzI"-P\]B eDrzW[Qd nsI&}5lES9\a{DyΙ. z5 Jʡ%GgY"L/N =}O;Y0&;xda zIЖ׺LqG Qnp9(f!fϾ~핰-F8ԯ`ߞQ3j77`}mlh8t=GY:iF p &[J"iS(l\Y kWqМ)V uJ.5,ω*_&( T$\P Ψ)71A/JApޜ]n.z&*JtRqS*0C."MGY1< ˦nrU%/$E0j|D>/'c6ڜ1Q Yu} 9zdnT'm, &]ek$u_+,:PZWghO)+kypDÆ9&P}l׿b(1eeCYt#*2\fpp`Ts/NxH[9Z|69ݶwwhA <|.=->u^NjĽ+l+djS5θIrw%d$j9yc㳗HLS Ǩ^$"%.49eIӚ3nԞT'fԴ2pUH#n0>/jVpÛ*G,LQ>' !(- N|.7caͪr;5usIx&m2gо,_ ŭoc=$foFcptN7i/hp[te`uƏ``$+6GT|Bex+1ņAa}&EBxŧv{xL'ŭ+S.Qd xdBkgdys8"4Nn,Er]lK`6i^K2c0R%+YY|% swDn|l${dQH'/.zv )|dji!ݻݭԈ4YUBa R]B'5^ i|N^q_-"H پ)Sڦ$pӮ>hF~e9Pl#+WqzyT1z*t<:BhWHM1kW`ggge_ +` }H5? v)N?"iErARoyf̺jΚV?5~ֱվ׫ZÊjc'߸o跀hLmWs ~sB]JWc FcUh5|X8;V X٫֮'4brLW`9 d^ :G$AEcmlk-_ N`Vz.|؈n{έ;KAaaW}їڵ8 P jխ{ؑnjG1"E0j_sY45p؋}P>VzOCf$ky;`/Qny3V]%42>/`Wԣw':+ g·Kl\ g0EF}aM{Z/g3`yAumw*@rf#>g)k_sGD+ණJ+mBXVLfs!-;l#~u8ϲ(sfab~IٿcƸ}#lZ`!B!9৊/=@播4(H<zFc[8dCD}żJ 4r5GL7{.'406&UTSKxi7sZqc 4}yٔl:RQ] -̉GK,/b'1op,nE=%! ċR4XH5cњޥnd>'}<vIT>SR|Uԛmy2MJ6y ? ޗLeH8B_xp'lWiPSQ5J&БhG7 g8q[Ǭ+d.tɨxPxLD-#:0Jr[з9{iXt T`7+؆x@ fPF-≳9iV1 B뷟>w105G+{LH4 aIFe`z} LJiO U"%NgMܽsB&$v/p\1KG[܀}+TG;ydцw#$[56t l{2 GG  - өI UqH=wv$PX}jEn-xB55V:^6]Ef %ub6w~2OZCd?"mDz2i̚^㶔5E2/,PG3>WK%uJSOL>8OK[1)}`T l$[|f ɺ@e24{^\-T숩f:oٗڈc9JpX+ysS1W@!r`l&\b6h;KSI+WWxVj~B;P iV[ ͔Hu\+U^,)F ɚLZ9=?ێ̸=Mq?B"waFAO ݫ 5m׼l%M:>nZ-_g$Rޢ  _&vD F-ٖIEd }M)VĻqq\12uJ>b.G91aGZp等vzWi2 #ISͿbU WcOmleH}C+aXI/+8 %vusp6c1WpJBfp4cӘ-+Jh__Y:$v~JWI%0 B/> pW-Z̐[7'2!ϥimb0`GkΝǷƠ[Aa2 +˸)ww D d=3U7 D&p}+ <N­l ai6nVl3Exrqq 1NI߲!WE,894HWڲ9ynuAcy!ś;bsPvZ%?ϊ̃leg[1Dw+;FJ Wl]V:8ɐm7\d!PuzO=JS͊`@*:oUK'b.XCB{a25B)ͬaDSJT:FbKB~pΠ?=xɨ$29n]+UgZ`la|b0 @F7=nsb&Mu.nu](=$/ڲ>XSMpj>ۙ9t7)?K!e<wqžS+onpҋibמlSr7JD;?Z8c#o=qkF:M‚=|c䭽o4Ңi~ޮw h`Xsm̝ܤ)P<ܱM Gx$BR)ɔŠRLO}Qg΋Dɵ$ b1G"I, aKE \裲#C\cO17~灘lh Z=Kۙ܋Ɋ]@U6]CL%@ISrw\k4D5.k&]9pߦ4XڿnAH͍뺆xCNwLvS8; 8 @&Q1SFx6:N rY41.: Nns( .n hέM\|P)}`K͐/K@`m=*X Ab3og D펟C]m*. zT:i[f D-gGfF7raC%i\oPU+TdPkAdVuK 's~A@Vuܚ@FȆ拊b rN;*Ϛ b'}_d{ l#<){eЦZf, ,i*Fam{XNDwʨH(x7(Xsr6c'߭j JH o/ez=L6>j꿊Gɜ;Nίe^z֬nnD Hb(+bCZ`JqW.GJ <jn!:˷ccP` B̔Ų)EG-o5Nꢶǐ4LOiB4=w1 XObo%iWȮ ^=L !|CV}D`}$F__Vc{myGX wcSͼŭsJEqٖd3Y:4]iJ ͷj0O ά=}ᦈ4nhξ*jl+]J@Zon+=cp@uhMeZZFK ) :%_>Gbz`oz, 4/DfUbM|*v؞p!( 2m>b¤GdN_T<>Fzz't {¾NH\*P<5wh'38ZXxآBݞBTWP8څ0}Dֆm燮~K//x_x4wKV݇J-W8 D`qyzޡZ֧"$fn#9B*y 4c{W hl40Uj|gƛtNָr yʃCv/aC<](}0~ ew߈wQg); ̫\u,zS"c#Wݳ}M^Q(¦Y0j$:oU#VT +SrVmWX W6/N0yNptR8ÛtdO&Ҷۚ!ޚ]M@Qy6R8:ӈ4e|I^as峡E ~({̥Z9<!΄V$ +,5Y|h:1)e$;E έ *ɉ[qi< )Dp=E4JE Za ْZEV1w clpaBFv4$LK9ZaɿʋC? V]t!D@N}@ǹ:9u͂}L_W|h U5Lw UI FVϽeQi <(汩 +\7W0R.e <AS.v~J'I,KwM'!>~hXm,U9/hYveyu[ ؓ%ϷN#k(n9j6J-3}u]xI\N)On|9.:*q;QgGV݄n3 H x;`^8٤0g4$yz\'sǚ]3ʨ/ɄBbf iFg{1xwSECe\:7xBR92E.$wj@^aؿppљH )fmh5h,O_'$SD%M1g_|ݿWCJd HRvY&VS/JV?l&.ۡ+upJ<_j]ՆGXHQϧ|ng{u9O;Z+-߹x[/ +T:6 }IK|DsK+e1mkBUp,][oE*SGѦlgWIMH榡'loK74I:zp,,/DfUOGiHKOdY,boagzE]5^MߍB\0Wt>7 E94Cty(7Ձ]И.]Q;'DT'xlA%u*\"wd{Щ3#"xQ+zvZL 7ps[XtT=:OEx''[c9r1spϘﹼ"bPٱ2Ik~Q5JQlQAt5Zp1V;nI@$]jb2j!Ʋ;Z=t) AUeY ǯ)Ft ^մ.w"rϘd9 M{J?E7Ar~#^'+sy^ P9f߃Yfq؉ ΪVza4MSp O߽av5~6 ٤ %vgkӯ!J #`,|fbU8nuX?#vF^uVO=P2FjK-Iz 씡HcWz |YnC*ed헨1^?mn@ lI0ɬ }ZŅl@\g:u@3qqR)gp|8'd6bUٞ:Q/2-!gzĮkӺ nUH|Z䞧mf5b6]ǂ"xi]I վ@DU)s澺S/0 biOZwUH z0]@F4zbĶ +uo aowa8b$+{z .R'u> jD,#$ZƟ,$EYbg<{a`O''98R<LA~=7}svV7)* =LkZcW-1m3|1&s4..v0hP>JD0xv9bf1ūNSjQo2Y8'<Q/⨵~^)-$:ܰ{~A\*WrIsjy"[r%4&R=P-`&/xk^zgB"' U}L^p)b7uB  vteAzjC$Y{2!\^.?E.Un+pqDu=.-g<]&mN"uE4T ]~4_`y\dZ0d<ŰJޫjgP^UPG$jŠ;A曲s9`KS#c_X&'><6;:nj뿵eRNuϜ6R&zlV1 | 'mOgg4bzu&` Bt=ǩjh'\ eH(1LTr/b*POnMN]vS"㗛ba**E8H>m :<y]hxS&A{;g}k U}6,0ݖb(4Ns { J&iB>"Ȑ<`BC}{5Rzuq϶vNp8%g'Wt {@7{BOSx0^MBE>PdGKq }/z8Z]h{ c,Ƞu0,| xnkO"RUx1jt-|7@:# w ,QqHhI8Ẕ́FCH1ZG4&)3S>Hڪ7?Ddn]l~{p:d }%Ԑ?6LW@p=@>x<(IV`{h>*;UA jS=Y1wR`=>?`X3w=Xɦ[й*Uu-Fp:Orԋ1t5ꑔv %%Q%HyĂ$ X5f; >OeQ˘Ȍr!1sz# ʑo' ^ƼHYz _2ϙl͈8sdnzM "~/x{|h1jf<>ѱwZ?gF7Y`IE;טtM.8b:!^[]FR'?ߙUcO;LrGYgER,)ջpq;?b[NSq?&e fb\ ׏!1٤HK#tc@*'BX I6aQJxu 8R!-Zz49EDImm~Jbd剖R˹<96q-Meͻg_f_ߍuxi -IBqW&Ge:~8ɦk5 ڜ(7gܠwk(IMV,7A|w#zlT~RH%*m +I17EH!o -/ƟUVPzAW\|6gLzXGˢ@ X5Ю2(KvCe Q=kX`*]^μ!K̷Ԝq[Zrh*F3p {(m}Jy'7J\CýPp,A+K)b\ kp2JV[/oePR@* &&AA+L.}#{&{T,nnYԍBs\;ά1583i^L[]JOA\]SF8 ԨRG/B_9呱Jj E g!UEFwQ]Ͱy% -IU%4 +ͮo`ȐOLT,*poN*rAs5۱|r5/%t3.r,iH!l. ѱ(kAA,!}F+DIAɗ}X::UFLs[|IS1aM^IkגP"dS*衜f.on ?oL3ﺳ/5TRVҌ ~zϖHk WBұJVkh|!$C 4UZ-)v;poGҏ@cvmR~,އkM8o Kʊk4o\G<𾀋 d=\EJ{'TH\D:@_/fErnyKpUt+OEJ_51O?_ӿ9Ipf9f/ bVQ}wE%!ܸ )HhJʥ&~b;ss)3b#&JHi}䉩 mzEjs/41M"^6j:\:wG*nQW}Ȝ'%e?:Qe870;ݸ,Wy=vڅ ltT)wl r&?=ٓGzFsVCPVA ҄W1FvWf|{X[y>︃M]t@x(tJ}Px">i}k VVmial^ױ~:NihvsL'Oj# >ݓRd-| `| yPzgx !4`u,<Sgp_>:d'ZU{md0W4bg%=lfk*$s0E vvZ"I^6xR\_?pǯLAm9 qnbr/whJ7iP`yAi͝,8K6 n˨ :M \Qsϋm:IchRs +6d?S.ASWmti㙌wi )Qn5& _#,8nŎ]ۨt*fիbF/H7P{Zegx,_ǂ",4jZvZ>zBϮrKq05ߦ_zc@:v)7OXd? _W.֣ğ~EݸKV[Yjl٘ + zjE:^ s#խ[qbqsT?g$'e_u,؅] nle^ M3Vs( !:$٬ +aB47y҆/>W%1h[wIF'MxNijĪ8#Z:p [9'hEED".z*9f}/hZ' Lk8'5o0FPba$_Gx3 k %NHe4P=dPH2Lo` } "?Sx1&jPWJ/J?E6Cܱ &Ap- f, Rp>-Ƃdu}"9N{@-T;stE4b$ e+[9< 3CK6PV1a#Sf$E;(}eqXېCKEvuB(drƪQʇͺ!gS[ZeFcb]KLHR[A&[kCQ}.S;1qζx~='ₚAb\QkQwͻ"ѵ3lÙ--z4!j=D]L 3@%[ rϨ>AZ"khb7c tVF94~c!?[ɿ'1K2C /z;9d-gfi>U6NHOl5)!΅snw2Te Rp%Ⱦ<);jLll$]Y1La֝r+! };#m`4`Y3:YhL煀XT9P[ܡld`H&ɩn4v \y[=.fꦶPK *"Pu4 W~ \ ߩsDYzk+LHuKf ٓnpP/Og|@QS _zZBBj @Ln`x1;+#O`5 ˸D)1G: F@HYB ]E^ ݎmPɬT#V=…L˶}IX*1=|s98`㨤c"XE$4raЄ|Az\?x8zYg&g:;Cs͏=7šTzV,Q=*o(?D1G -++󛳏n1nf!w&Ҭ(&h 0)- \ٞ:C6 A@jE$̟=v+(4oBai#x+ ŵxj 2,K7Vv8fa~)n@jH m7ȪbQP;LW~z("S||K ?Ez˹?,zpi_%j@eV0@z4F0948}0{KsR|8, `4ەJTR͹.ڌ&NY_x8ͩէZ;PPX7rGDS4 )(S(oOwjrNMb;+XaInKUڊn7gz5 IMz~8pAvXԇn5;Ya^*ן 6 3Ŭ8Atɋ@E4Ϳ", mcXuklf_(jsDв9'I ,(fX#kIkAφIמq dJiKNV>o)Ҥo|a@*:n6JyX|uܩe6|labc=ꆫtkggJ}"3F8!2 nSC17%By"ZR3<43}*! 4Rm_B=#ʍg )kT6! pj /7_A08ػ6fz(wElIn)Z)5=mJѕ܏g3B}2K1XiRÃF mDX;`ct3Hpb踪w9ގ3ۓYzl 9X[j = @m ̷+>^\ uXSp&|.ӌ, `)'xCs ~ D +W1g>_ Li_E@O^iSPt5gESyPNs*Jՙ6eJnHSG6so3G9ٮm>2{&=yWeE^"L)s}w< :3^a |])mI98a/cX$?Kp!!T0~0d/FU2N'82au~dY-d?#ǵrsa_,TPxsF))'1pev#Lj=@Z.(6wtM^,;A^4L a+>׶_! E4BƠ^ce<[h&4|ޥ(KNO8\σi/]ifDI b܊Dk)VbTaqxaLpB>s,uQьwm3Bi߮n]$ qbi9K_&.3w܍&4•9SD[WsKQLaJnT3)Ly\dmY% >~>唹nF̤z}6{Q*A#}+P?S:bp٦` ,9>!fvTԼgy]["sPWood~Yt.;(Ah ě fӀ;mLb=˂-D$U=W/8F! Ďϲ OD|snAP<`p1x.?XI5E:VC9#;|9$rJꋑAT3L{y MYNQTwkwt`+8(y I$Fy}AvjrV¹Rm9MqWy}\/^]Kbnf7*N!2ݹmLQC@LDORb\3S0$n ѪO^gAGB URq':IR{Ԙ>BW Lkw~!\;.b wػn[ "BG˸5g1dl7xn"ѨeDmJ@tIR`;{TE܍ۢx -Bo"&BK$|m 9YJ*x#CD3qi]1kۃ)=Xk1F<=X+ *eN \aVlf:aզe:9z  K@PZQ./)qɽm*ѫĥKfN2boZOyl$u̇`K8,F'hrr!!_jڷ+?8ǣ撽[XC7O/n*M}"ǰd,jPc'\ydss+]Uit~k} ś3!-G>`1/l_Mb3(o8<?rnUK8?aO5~K϶V1ݨp9?ayCK*Čcϸuct ׶`}h;؁>qYVk+]'A9! ~񹙒k{NJiq-n \-;}>BG&|?rҔE8sȡzp ƔFFӅu=wBaRRK ( Jh_Ӗ^abSas^gMT)0xNd8V-) °an _#gau =限͈gJLl,LݞkvE,I NI(^p^J:s.ׂ|LuyPm֌ 6:Je}kfK.0-Jڡk$ȿ]S(s_EO$mH[t] [ :Uo՗Lϙ+IJLl!uDl'q@9cu[jӡgWO+45SrF@rGݟzogw1R0Yb㾹w(}wp zy=!Pw(f` 0նrJ'*pC!ۥbycĢN. YSyzJeS_}:̬8vZA{i2kEbD]џ=?>,5'Ղ~*4O4}`e_ ^l?Az4 ,XxP\,ϻd;~4!!x|TP_31Vyd~DS Om@|,vD"Ii\ h7 .>?EHԹfͨwk#ATl|.cat_TV6ra*WPN `B_y"~we7NU+mӷaLPv};5K %*ZI_ZZӫ?XD&)1[FHcwt&Ah.1͗:Wt˽ B^,:nOe]zxLK l48iOo)A;gajغǗT]&Y1"I5@k3_4+ >y[_o v'abvV@N wQ\POdsȴC9ʃĉjJgO^_=KQ"ʃ{<ƝxI6_p=k_ מ\c)5?(f~%}_1p( IMj'y6Gs#դaA3ۊI6PI6yqFI^;GmF҂rz5VZ*wUzdcԣvz»r%0p%?L@1Y/t+eJ"L7F|wmLZ tV!xee֒P|Gf #"M4:qL\K2"[+w))D[)ħxs f|3i!FD-bܼ?~cU{.r/r aWE|*}kJ;v P̗rߏz21B<l'nX;a+KvLf8S,&uN` V o0SB$4:Xu"QÇ)U.6\4X\4C4h BٶtҼ"& @?h,$\eJrׇeilI]6"Yx6]+Twr@cUruo$뉊q0zБ+{2wbTAb7nY?AGwW'7j:15>8 1+,]5eztͳG)h24-$g7;I~ߓlFRM +6b33A2`ȣ"9f8ptx?5(zyP<WeP 6`3U^EGHӰY"c* ,3-͏AђNf\.}oAYNdC]''v?c QE^ ׭z:%ټ2mPͶ^f% ;i<7?$>4QΑ&(^oU>rZ4SbtYcy]Ý%o?(LW2\\<(5z4}뙢Ur@7;^Dh)]Ɓ]YScGKԑ!B|0O}=xmeǻi0w/A!.(,vːU.- "-ϓ$G8r~@#4Afb3p˃ gj.l$H 3 YO.[łm`,!}OsG\$Xꇂ@ӇRb}id#(~#Q\R IGvٮ5 sF=~DϮ]B? izLḒcgk02v\+) al7(KL9QLޒ7 .RbT5?χ}1jZwt/vH~$!1SqRz$!c4{1wsi9~`eh~8 L;<+gqkf%2#̘3Uj40]šO,\9}Zi(A7J/wFƎ+gi#{FU CL`KܖxN&*m_>=jc6fe;ʺL Wkd pj 3d=rn0-Eo3% @갇k|3Y |oKDbܩaEe9ķĢs "ocפ31ߓ OBFn86d.{Lxߠ][GVVx[Ä,[tb(d Eby0sVζBK.zUǞ}$]YpX8p qH+WHGT_<;f147hcω"!UPװW:XXW xET_Pu3!?tow:2F̶!s> .˒GELeVd?z-vFP*Q=׾P -Sx [[̐EyǪˉ 4;:q ůœ 18n[^˺&bƭ ,=Re2Q ! ^m`J'uV Q> !R_m>W! `T"ls2aB١K`FEKKuiI7/UnESeD:여tuQhbNLvH$·{WrSn<4]9OUB_?qW*@k#i 2XlbZT帿B!4\|:]NsĩZr gn/.nYyB 1/}asmZ[++iN' ԿIDYM0 cq?lpeKV uUǹ[7nF9Jy@).nl>4|7k缧tu5V܏ɍN-R&.&;z _tŠs&(B 0rcE2<7sӛipX0QǏb۸? ϙPoWQY<+ZW]qJ*D3= aBrYQU(bNomO?.o-Sϵ[~i<*qmWHN;U'9Nt!UJ/IO&#/izkmB/ ibC/xW@~zo6X'Z* _ I.ǥ u9S WEVbeCQg!ȷʎ~(99F칸_L@0R <,Ә1,Fš8 WX9;b4ǷqApfK1)ٔiL%c9Q);98q@bDb="8o0])ZiIg3FL k<"X`JL5Gm(Bh =m% BwxxN^ >4+͜ੵglwZIԆЕiX7.%l,ނ7}#i%Ct,#/k(V 鿈wYg8K{(SHJ"N:,MBbW#)0-{Do3)S(V Nӛh{f#DmU8^ ;҂Nkn H/Gd*xjb27Ճ@L0od6*Ғ \*UEȢM@% ÐE<%5f39\3Wiא(^<"ܟPű@" n5kZ"\y{"O<>,"9'"go>\ O?hXѲ, .h#eH̿iZ|Q:AK6+t[z85>>SnPj͘b{=Gm~gUs$M7;NE([`DİD˾W*;Kj)Þ::\@S~]bz_]6}iO>UBy6njTid׵Ch,|zmU GRo>L@8M2]z9H^A2D); /%y*74c̱}PbI<4 4$_o470HpWh-c F[и iJmB 5*;XȈmI&6io܊/UojΦ`O {ߖg@Я㸩n99d(j 8m+7])??FN)[?=?*k3̑6 40ZYxQa]Q|$~,{RNK}'`mlE/o ‘KD@~q4Ϡ}DnVtqoJX桥 3|- TRݡ %ɅV7O._Ln:ogp+*_sˋdKpr,>'G JPdbY5`{? FhR8#uF)A#~zDLe}81($ N)3mkϭV槶4D y˦E -lZD0ˉKs3d޽ XSP>LJމ4"iш;|Đs\G+!_b^-'AS;f#:IARC$ro6, !dJSdب46hѷ%oQaM ɼ,dE_ʯLo:Hm`-m%*V8@Fo'ʛT@ީ9+?fant1w "rW`x|ހ~"`s֕4ZMVycw_)E).?\u܂ $DKDG9Aɨx@'M>:jbi#mD-_논"g,/Lƚ&GB1D/0%_HEY>X8BSr IdySi.Iiv1K0cv=d)Z`3)|n \*=r8{1B/i-~LI?KsBuHq7~'} 86<,pE{/k/Nl .0$BEV v+]|PzQk=E,%Ħ:Q+OB44\¿vl k~xmM (7DH8=\ԏX/jɎ_F1hL%N5z88 hza'ĭc`z#Fltu3{7 @BbHtWv) EAjK" 143H!Wr|yFBKboL (W덇Ⱦҧqaո7NͮYyjTUV+3L} t^5kJ-PT:*Y$19EdD4"BO怛a4Ǻ'REٖ.ӌ̋zT8v+ +8B zM 1/*/q(X>h;yM" 4+mX*`1$B)j=z/ Vԇ<] 53 }dlQ\U{H4~䩻 e爾?YFZmg}Uqz +powVÁ,YhwυG>'e֋ BN&0Z[Y".-AA5;ؕa""'s(7s=(ι6!: IVMz.g}\brEB#-m)%}JL{:#R愮E0 ޏ:-t$3fմ0 c={;r0nT~@@@4%e)x=E  `hR]*ou/73',B`ގDH}H=QBsO=H}:+Hu&(/G9 MѺmLHGd |HFϾak}R+^=.RA[`z|/DZLaΐR9vS;;hSwT.L.A('jZa JL|)8qL%ŹvFj'sLwޮC>. ߨ |*8mv6gKLa3OVLeO":tDաASC+ AbagRe @ljTX2;ر6iAGY#:8<58j2S.<%hT7n_&|cV~#-2m&2 [&e놤ºqg}G0zR9≢(~WRyn\EO aEf^ʂ1xwϷ7A֔vc\2j6A:BOt~4UAD9B\jGQV:)I}-0 Ox.,9FO.xaYWw4̍Mً9 6}np}t@C^1P@ )< S`zW{5\zf)ƛoz>&dYM(P=`~ {n$AI]PQ3y7ݛ91*H^qͰ% GEw+k10SxA'>a^HcG]Fg1ZR0AKS'ijU %Bۊ"'_dT,֑l-}٘O{W9OV* ]FrD9,;wdۘO\NP‰~z*Z~f8!,ݽФWԥ+;:7D3-:3 LS)"jY[PҮ{w,2:m*ӴԽ 7˙[ [pz:9s(Q`,kv3%7^/V5d \h̡A;*eB D GAv?@޿j%YjňB@"4]+4!2bu̲l^$M;K7qCXQ /89Br.Huqo](<84 q|[zcGܫf}2WnuJQȥmK}CX,`9yQ- SMűwTeՔY(tCnZ#JѾ0ItTWm {BSlc]vH\A]r*̊r6);B[ 9x)qyT84`Ix%,+BGjIگT鄾KAp.Y6n9T4$[wc2`D)vG}}:Vӣtt8s @x'. ҹ @{#]C6dLҋ-G*+'gA t56q aqM@ d䚈h$LSLg3,{c?*; :8[:˔'+ t[td$0ڛ_Qj{gɁZ>ЎK '[ V: D^&FQ?<kd+be>PxY>?ś=r5;$aj|@dEޅjՅ>_aH-"{ 92X{oU*}zd퐰+P܁bvRJS୘F2+J>E4F o3wyi_m{C-KH76#Ul)3-6 3 F`. 軓%N]w[u;]r|Vfoi:tqSwDM(\Ěʴ,*lſx !^RwG:!^$PBD7n阕 -3:V=|Σ&Tf0s/^k=(fXFa&SR ;}p\S't-4 )vÏQ ;Hzva Lrs}Y'qG\L8Y1G@*@P#5v "rFdϓ''{Rry;LŰ]0 d'oQ[1߁' J #!T-pbisSȎ'PKv37I8fˆ>J@j./ao]X#Ǚ(ns%lKXoՇX?fpT' \fپ{bC%F%sf@4ncTߣp5aɭ !re tW|J=1$cˤ}Ok]|1S8҈EhSZgRZ3A7K~hkvF/E3zt@'JwY=Ʈi@@:#tB $W7 ۱L_Dp~ 3NP:%K/V]$MpL8P08ꇞH2_1#W:'}G*bԪ)!QO4߾.5laS?LaTD*ē )p51URY8[JeoՅPpm>W(K%A(h d1m7Aȅ hz.&Km;@2&`,\ ;v2^P1^󜾦9v? zfǾmg̷vs-7WEg;AR=/5Jx1WcQbf֍*" Na=rN, @7[_0*^r yȖ ?U`JT!bh>'#03 :||dk42_ZnF\,OˎEh%)ÿ8R Qi1!&lxEYluq^=:dW&'2Qfï}M) -9cJmhD!i0 ,j`d2B@N] J(їnoWW \HL d5S* WsCe;餷?Z,b8? !(DE|jܼ^(H5w}A' 9pqW^^hI/ >3Y>ӗӥ~3V%V=q 7C`܌_ w@yc Ace*܆ ]R3V-fv5co4YvL?ӆ>6.>B+6vh;lG;^)Z_ņƔOVU(@G.A5%n5A9Q#dڂ|XKR~+> IH Fgm@*Z*Aܕ*hcɟ_Cːgl@i`&nUnq`@9=&":Y+䠧^ۇ^% R| e'b*z,2#!OPc?Ke;\)ed I+ 1Wϔc]Xx: *DZwzD WaՈ8@L[{uPGWc6rfO{ݭx6ʳhLeuA|jh%lO'. N.gգ;ybt/ϥhG!a !2|p*&Z=eH$ <ԁs I̊)E;:HK?rGsa,펫^:m9sد%ȫU{pW]9$=1ׂf+I:0٢uQ\J(}gc,bfZ_m0YE}g>aNz, * vciK!$ /y7ɲƏZD "z5y.i\=$ֶ*Lu=Q"a[ Wa> lh@=˜Z;H|p&M򈹽Sb[`ziĤF SWh!e[ $ߍWPKw>a/k8$R^Jj7X'ՐEڽH=fmҎ- oEHҽYIҤ2f{`RE1Uk ź8QILt_YUUdS8 65Ga^*7~DhGi7!8@0 %5:Xd9Fmwkô VSb\ڛ !3r`:_tAVU6 M}/mw2*yc=zǵ1aF^jtTK C~2 Gg]?Ste}Bqpw$qujt\;Z|^^Ы m[|T}7!"MxGT%mJ9GN pƂXRO }Cf\ǰ '~27٤kJքƃXs BNMߡeMӗXqdɝ?AA0حG)I:x\x>\߰q6xmkQ9K2"VbߔD7l/@ Ddd+:.867Fx_*{[WN".f"GýCoM!la2fBK T1'Ӽ7)SA$_%bY]v;Sr\IoƵ yq|nKvU=Ymm(ޑ2Q_#3bXf> h-qG O2_uB+㚨GݲܜA)80-`ezVSp#n^q)Qf#v;@v0nvӪ@3[]n#;+x<܇rtn ."(ToEވE yo7pQퟚky伃ҫ m_QEi^V](ωؔ2[oG4MPF"V/,4ďaL,k֏oC{ ] (URY3ޙx3  ycPiZŋkI;KW2IjͿQLE 3ױ\IgΞk(&l棬 1>uqW\rYU?,.@ǐ9'Ճs}?gAWVv{autR Ruς# 0;CR >n D15,LQtjЊL |o3 pMd\t:\7Ijq{P T<׊QoK'P\8:F o)´&oCfV55iR):_P"ZSaEhäUu(ݭ̬>F [He  ieөCp$`49ri<^ I8$5CӢy8Htxα^\]F]I4~C;㨫X q=(bo],zJ/_*dii>@'l^@nχժkeUӪ v0z79Gܺ,b v ENwDZv مTG"gDg%`4d1Mr:0Iw][S{0\RX>$eT 9+=uԎۋ;z7ϩqģH -QO5Y˶iR]!FfmQqN2o;qp/LH/pJ<\B%.T,qĉb3F9)u!46nb b5ZoY\풂wxd{Bطg%ڈr]ls9tYb} hEP.(N`AYUq0 P5RMxD׀I2Pv_MMEª G&~4W;UY)䬐C@c3O0C5:F$X;f_B/*u{_x#P KB%r̔QMx/ lwM?k~D\CbAalx9ˀ+6JɏDwlTWeVYj7P5AheVؽ3L=M.Xp ~轟h4=K*5 R4#r Ii9F|GC0>)i?3 =[XXIJoO<_ /3jSP.0DY͓*q k-#@'l$]rAZ\ 0x=,#%nH㼐B6A%sFtgK9<0xօm^yg9I8i~aDPAk]wq@H#ͅ+؛s ]f~q] 6_]AviU=@*H9bK{gh"UwhSK)N෇1C$=_g$}&67oBK rQ4Z#Ti/?? 3&'(t_|%䲽ʑž(ϦJ W~ޓŹ¢ppo!a0~2z9w=Y+;uF U ozkQ]LcΩDW޽pL?W:SlLnٯh2[k=VTm&CX^5[@ۏrs KÐ7%ɤÌIY=Ě bpM@W>zTc.d^TN茢Z;KG.p|Q>n& :-<ѯp8<-Vb^Җ+$iP68ʕaEH `NgC_6"yfB}ˍE\Hgu*< t&EKhMgESI[څȴ`5Br%vL1~J_?.m!&3Z)\*+&T7#[M&STk>KnCՐ$:`p?Jī|br28Yu?"1(#E1jk9~nwX6{z$[gazJjX`Q+/v(2d(k `/5ap͏f0 k9*vPz@ 1W#K5O&+G&N6|]_OZ ye=cx3rT:Өd3s҆; ]AN=VpDT 5#p0 [( יQLv'`HF#d9(i+ӷ{>6g#aDstߝGqh0{^iIr’I7-*3lҡ"ZJ?|r2dLP&3?.@5 e\J.0b#upl2͆TJyS;Pŕjpž$guVֵ,3x;(ö"_%V(s5\iKۡߦ(07yq(]nMԱ,@poly!V,/Υ$5'Ah: >T~ =jI+mqbXd)EJN?wd9h'&ץMm.b(& ߼a%) D$:nj7 NT] GB'O+cVcFT(wߝM Bw̷sHoOT/J'k PbGe"]S}S΄r ⋖nBsarX.1X5XTG1%V#1[*)"сH/5e%s8)ݧ۴Q 3.;@'YZiOn4JJ֣E֋%þ6o,RUwT}q0HzC aI <Չ#˞3㕥¬\61T{`h'QQ^ۖ#Vן~ _ؽ'gM@|bap"`mLx}VB_db GA6uW+馃 8y0,7Z[I+QbJ|@9jW12 $L@kQfOAMeA)<&|zAR~GeC%1E_o$Y2oߴ7{_Vb8lR[3#QoCda " W `ԝY?(6>q1>Ze'dvRlBg'5ń1+jDyBvwTRpYs$9|{Zu3 `|2̦ԒplB}ߙ:W7ߧ)MXEY$8U@jzcF/ߢݱmjm^U(9>W8oKr ,f bOq\?ѡT(.l=f`qe~ &bkkzT-`hՓo0YS!Uupu)pL$Xj>q^ըR !31ꩁIUSڋ18*09 wQ򿙸~ʓmCWy`}kZ<; ;7bT&&6I>bo]n9ϽGO WN*lβ) \Ǹ/LIqbY_o]_IU ~W[O \jT2nD'Q(d4qys ἧx$3?H^3{Uqzdn}zInlBŖ(x:ޖ~@ft|  5RnSR?H%.D-i)l,&XI2nJ M]jUkE /#, &K Ө1F }_м^XYIw4xS"lxhE u3!>9AlOr:h|_O0]=ў"ns2U7w?Oo'i_QJ݈zϨS?DQJ@X&YȞT[^51ٍçK*[jskuGZx ٩Cb8nv*aO}n+)n ׌2yч u>63{4YH|&&kPj,1v(aLjrRCl%J Xy;dܥڨ H"&^%짼[7"x|.* X<;M :׭+p}?AwͱS5AW7 $THip-ONۺ-W<†I|yZ2K.pVߔ-׽v0B- ^#ҠU.l\!>'1N5 ԆWn۪;Gv&vI;2dVH9N A [nA 7JC=t@^`;{뻫ؒۜ})V{ Ie6~ >˰3Df{˪<ӱ?TVTo1YDhܨ?Ea1'֬q\C1[O*D桊ISWyhCZ âY8&Eo!X4Mwً?PѱbN ssU*9<-]^@ hxiH)y`9b[wb) s r'KO8SG8"< {P(oˎqSHw *_ӱsj|̽v4/ߌy{V P[!qjhGDcz-x[e4A>cQw"c2p8g{6~j(c )zÁidiKV>cSShltd?E) nMI~y :Ӥ PSݬnv'AS+ں;[#~W팒 y|Z ԚVkַ zdhNFS_D(7E#uҒq#nөU._wRl;܏]`G:R^awQRֺ&^72=)lIEq5-췈޿vAG1ޛ+2=Q/ԑNvRSiXF(ldL`n]aaQI;>Y'Jv*6O Ed:d?bޕ"?!slL4|ꨇEBB-Ob ND+Pլi}\/ڮʜM6] cPxkz%?,nhB(^;=:,ng3͓?r%Pr8rk24B?//O ׵n7C[\7:Ix}f 63 oDySIBqƲQn\dmlqC6m|YFyb!}bIf͔>FB1'>l\L`eT\7'8/ӏ?fW1c$0#!@qŻ'W9U/SP>RȅWM^gIF6%$1: u1[R:3EGP?tEewH2B6,Q<,aԌ%xM# Z F_׺)Sh)ўI5)k7#k[U|G*py1Fχx& %ףdEM#܏WNp/Xf(K!9+?Oj3!\)j-%"Ŕ imGe7QXmڈ}?uYx79gY*n-̚K ̲bm) 1IRs/x[Ywn9qfe隐+ɍ}ěcm^J1:~20; Zb)DM4Γ`Xy[s^ZUoT[%aΩ,T.H#i $.az%gƄDհ+͎EM6ʜjB^-^p|p%qһR':oMzYjmL {lC2p#AW}ezMK3 i>触w6K G K!au|^B3'DX/4HݐYƶ>Λ BEOiߖq)Ǖq_mbXtМۊ/3T"i#}LcUmyşO\Nr0oǽo@p4!׍Nȼ:b{J@=}R;ZAz-/ND=Hp6@-( ^Hm !9mcFNb OW;a_/toG;~KXJwIOKrBk6`K(U5-={F܈ :fjW=^^rZ䱞!=OHų6߾I^;[5U. JA bAX/hr{|>t6ZOuydjbګєd֮ /H`;Ke]͋ɭ'bY2xv1o51ƀ&Zp@2:Z΂D6\ a£'~ضQ~4= YZ {}9J~lxB%cW_ [I  TtQ׾J6ҖL%4pTz؟ӬBG&֔xfk M%HnڞK Zƻ?m.bjz~Am}R_eJoj-xrji7;^~& |YM'Z kBoWZq]8=LYdKOW_bnf~ !DB1]Lo# ~r6^I3gz$US$eZ\}<-Է!1!K^CU̸?;oMHѼn;|cAyIʸ$8S_v1::s]_hAM)CqP? SY 4 1+QGX^?= t))֗?9X[Jln(jB1mih[E2.C5cӏiX]}UE6Rfsx2Q,8BI:kv T.Ō@8fLXp參eڊum%g3q!g^=</w&Y swxLhQ/M}wi STU3LO+99{Ԃ>@Z$:ܧ0pOp34 M7Z knDũ (Cv_o$1)65l$^]@2:3:gtmF[ FDF9-`Bz IU(U peTqk҄]6[rYPV1ugE QZ nBrbHj.E VHSj(>6Mij7   "=@'0K 1Qdz$q Cߢ_3p<Uh܃ܓ [ p +]rܩcGMZiw+> | пY2#m<9x|_.YOm+$0G,+Wm1A󋃃tmU7HUǩR *XBΞyxhMkք^SBg++΂!", uqmh},G?,3ƀRрHw#iHjfRA4?։tTz$euǺ"c^ ⴚ..&~ٿnCb;Q?GeA7,nJomlԋ+OZjPe ooGDggZr}1UBij| ir*9Ob;߈TS˯A '!*C-i8EdV,%N3~첥){v c#w˂N<sx\ *q`U`nd~)?AB FC^Z-xhܰ$ǧCev+2P)":Ԯ'i T ?Ud6p0s2/č^J!xȝ=j}8m?G 7喷p<{y2}]Au_۱,ؖ9]]$c$Ccj>GʵݵxYֲt٦P7-*JQ>{t6貞"G2I'ʌ gvXPTCCb #Wfݪ{7,&z0P6]JӍW%^-)b?Cᭋ*O'oQZ2vd,42ӣDڃJ⺪/@o9%LCnWGRHN50=˂xaICʃc,:8hj;LNq2g2b|Rgiyjeh5U ^t 1?t@`~"SaA2;s=Hr9[Nیm~wRwS1(ֻ SjaI#͂Lmf=VB-ވ\V/@Gn!KF 9t 7&tԹy̴ !{=si>WOYn!I T5Δqƌsjs}_FH;5 X,5\*HZ_GҮ!@5TvEkjNluS ֡P>2[ۨi|mi.пRrJ NʺK],iJ(QѺ4Z8f#0L'.a{R 0|U\ME_̍L h Wnٴ1ʉ0ih"=RpD>[$ԓZhT5in T±nq"+D7ia@JgWdg /:quL vLg}Z9$RL_=/qۛtQLHn9~*qC1>ۊ6oKY륳ﰚ.<ܷY7_!V(ԞuI&F&<2."($plfޯ*{@ZÍ%OdؙݕWjd fM2o-%{MBQٚww`GbGi$xЂK#Ӓ<20?z7Ƀq*əkD )8>QNF鼗E5:%"{ #R"G5‚ز+/mQѮN=N2eW8Vim i$č7!x?~Νh|p<1>d N9VNO㠶#@!p"5cqb)m'~ nyl>XbZv@ju& -kJeqYhV:ԲO73N ]C_"3sԔC0 ?ȍnAJ~ VWQ$x1?RVouMmHZJ΀n RzDڙG-T}wzs:c˹ a`@K:YCwf0NbܖsZ]UF;E7@Ni6\ȹn`B"Ujp6Dж̔#1 IG@]'㰲Q)䬦!3s=\/bф~2:&czնBhkk2 3.#cpL eZȆVmw5=[Dg .פjm3~ tX{22V1{P0IM'2 ;2qicί|8\F=rri(ϓO$ BQ! #)h[d$뷻R"o)fMfmޓq#XY ** kn.Ws)U'.?u?;%KDib1KC]U +U1_q 6%zpʏl$#B 4hM}irR\6Ba g.@ YaB'U?)-Ď{g}F6Dr&S$cyή74{rJ.?SZC!J5'$Oo 7f@I4L:or?ȴf|CޏZRoQs}Ş8U$)iHyޞJY1:-MeHHw\wR ݩ-' [Ѿn6qНAy%Fؚ]tbѷ/bq E ՒNRu\݄%mqGgH:LU#!(FmU3GnVQG&u>=e%7f0\cJP Rzn^I[ޏB c<2Ht*@o6#%-JDٴg*%WBu3Xx=ޗ2e輀u>D{E\\'a =|KOtozG c>wSC-/1( dsOYǛG([HJ[͓l=^L/, K) {WM`)Y>a֦c^[(@d Y%aT6Yt^V6[/H$&3s7d@8f{" 5P炗X톎L+4 L@ T |FNm&Vvq%Uc}e1u3@d33|ec ? <3ߩGۤZUКA4]MAu]P0.+YL R c$G%7WG1D'bvVA妑 H-PޤΜPҾsŴ҃@o;~b [P^MkN!jIdBmL%A1cɄuŽg*d\#,aoiVAW TS mQ qha><%r-#~w&$s*9JCV~<'p<9#L"qqgAmpfJJA֮4RDX 4,Lø(z.z+;)f쵕joqoYMq~wa=k[\yp^TOLrh1<h㏋koy'xo_,-U<[;G] [0PL 5ArE.hh>|V De~L Fb20&͍p*[bf{[8`׃u4S3wi4Jy~1JJ9@$B0[$oS>';ݴhj(@(p< m#00pC[6BD-(,ҙXFRƄmR4t.lEC'v=ܷh뤕p>@k'0:@,:wDG ccuH1 =|2i^ovƨnUG[A3c0;%BxOR"ҟ!Yn eqٻBJOұb_r* UJX`~Y1S>RЏV qJj&R(]_m3!;wH)5*RQ>\m _ 3Z<14̵2Y(7[1ں|D2,lyj퓖'6: r eA{$3K[=Ђ;ѳ"79t@F`srWk|B4GÈ" X/d$r|9],g=yWHl=iw=! ;P,+K/ Ĭq9}ѵ. ,g?h]9PM*h㓾eL.[ݬBT8`Ҩ~ݡ1E&Цb mJR)k"#%L`{([v( /ڜS7ܕ+:9 G$Y<9]7А.c* (yٝП#rX[6PD+^^t\V_O%R6@[NH׿]12 lH[ԭ 9۔OZp=8a ~$yyNNP>ԫUrE>>j.gꁈ&E 6 ]!D^'ExYt>;= HMē4uFdZEШ8Paoazd!TJUGBS Ng{~D 91a]Z w@ '>(o9;l|~h!{I+6w!VC[/b\VJWf?]sDL$g1Y0B%c אz}m!0 `gDg#^=QݦC|f*,}?0p'0W% .ct`:L{e =oƥ>EK):xX ŪerE뗧&r&e$TnYONʼ%n!Ca4&hh}^$W"w}&a$|'RM%yd{bIYTy :׫ȑsq} Y5f\>%%wLH`@PW;>Dx%{۔8gl(q_>R%9Kn 硡 !y؎ͻk+[(齻&)by@,s(%IF⴨ZV+ɏMuP,VN$Ƭǫ{(EX^+zՒ#TFP( ?[.6wt6$3O9þ%vL=㗬+,'X;j~ >WTuCu9*x6IDTH5B;ޟnwzTl{X)2V=|*ld|{zW fOQȜv _㵆."Ey.EwB6&3AF蔏}(RLY9ؕ2aJJ*ȕ34KuDh};G?Z$y!Pk׿0U 4!:;vmfu0uI=ڤOy˴sM1莴Xkh'?!zuJAcT2% .[E_,LD^Z+j>6~QZȝPN?٧eR|v.ӈAR.pyᾟ^zѴNfOu mMpx@,xxI?+aVcZy\@'5Ḳ!4Uz6x7 u} Tz!y ۆ>oiϴQIk?%25&2x@챻N2cFgXP'84U_yɊ4vAq[X! rQk-Iӕ5l)6( -j|VʂUJ Yh- @l#๼y1Q T'i]%tRgwcv- Z7%mf}!".t/"aV] 4yNVc&FLyfp6<#uVV9+MET—*^aT3K1@.x{oXA*MiiBu9^vX)-m@T~ģY-}GQTTܿa#^  E`$34=-uo(o"Cfh˜ʔIOʚL[yh3<4ZoƷE&=\q2/`~ŭ轨 ur¸q5;s56~@&P?3;C.CAn*rruF<`gI(w%,׳%&-*CjL幃DΞ+3opҮ/5ލ/ɫ VEl.yzp 5s@=bf0f0HgI{c -}{I~^Sq_l]/>~. H'}W|6{;ԑר`TF[{V es+ҠEx,MN9.U:I!煅4MA CGp<fh6.ZF(-;}F ixvkYK}ٰ1BJq'ǓK?_+7D\vec ޜi]=gICb?zAjG-aA'7Pl5rdW0)`r28;kҒ/EQg4s9AqX .5Th QgMy4?kM9PESYhl#JV\GqQ2<\jۂTy JfKJ ?zq9/Nll|.M&Rx[m s 5md ʵ9mBHqdx6o}-jMa}ٺ c:?G v Ӌ®  ܿ"@7 Fw>zʩRQů2@m}jL.wT%U=qS2JML>ʕ)5J;n7~0aG+WGՑ/ura C^=а# Sޅza&IOf2"̑_D2|Ү:5x2 )2NBi1Xe Q-Ofó7|kàp{p6zAـ}.R:=ˌ|>fto{b8!u;\d Hq) }\F?/kK->>~M[ը3g O݈8엎BҶ`RSiۋK$-P3geQK"A{g LHY<c _^)wh)92e+f' 3#ҥ曕F`(ܽIn4 A'\S;XkdF}"'F)ͺyyԬO?h+nkR&OM͗G63x-,D/n[NsiƣWܿbZȂ½9⏭IN8wk|&[Iqa=о)#WNg\, kCK웦|ӧ nmD6Ы t͟q,H؈"FW54v"  `=rl 6 *;с0'%zpYFP}yx*)S GLuT ['k4#B1~4cjq)Z96WkI+3A8Wvެ/nAzKi 쓖2VYR5xixNۺ@lb\/ztB!tƸ @H ?׶~ wMͲom%Hկuj@O2b }wLPkf~ *~2M{e8d'[kڦ1'[e:Jf_`(5TΌE5nfH9oF[N thTRqNFE`luz|u|CBGI$Cy@gZ{Ʊ~οea_ϥ&nU#Ssumebް/ⵠV׮pY6e$-3Zb6-,B冭̆-P@v1v<ԸE O=F"SՔe6hҠEl`;5ئ.B<{!4^1ٿcS?-]`$1P" Ikc^k^/F@ߦ7ozƠdUt̴/HF 5t{>B"DE``bľ{ <$0N& q#K^9[ \ZWq.GHoRd~;Ix(hDd>ŭ_-VW^H̋$w?N"Pg%acc $tJQj|nRN%XPnK*E͵:D,Q4a0ie+F/=IinCaƠy+Ư։{aF F;D}E0z]q*@i\ؘ*%p8wpZibf9#UئON|5@a;Ѻ1 IǕ$3`旒ni=@K"J8Lc]h wދ{L9"?ʶAG ?YEC Qj?ih͘Nղ?P 4 ®z̿f%~j@^'aȺMM2{A3iv)˜FKJeNX@zJwo$,[BG{*M?%It ,FiƵ#6, |V2ݮ /!ʁĥ:"bo*+rN@||44 phi &FC:6 y$۝lļ'O0V= -WB(V6 rЙ}?LLhϕ\RԺ҈ e5A}Ĭq2!5{2gO @\- 0 &>ަ((ц5ϲXȩfeXp hMkWz}~a`G8{tBTTx >:N'?ys 4#*/RM|Aas낿HDj4GߌR yțF$Ϡ-[jdHf}Gs]y]%]PhZrPa _c`g'XuDpcЍ #A.2MC䈤+/]Bf$ CA/.`O(9/H]Snd\{%U!\P;PWROry=D҅?Dj"a 0d]I9y/V5*"=V19k֫ 0Ewk$HNXeEp!C<{ Nh"ȃzGԹc sgv70aibwvCfKHsO^v\T@n,Wx (0B9ro 2qט )`/Qia%)L "#Ӎ~Ş\&|cijK>&z&@`1ﱍ=v $JU#2 "bZ"LAHdXY;$D߼=1T|{y0s.TEMHݹAX,hoC&⌹AL A= wK&k:i`(߮i+($W@+Mpi..+X(mGfx@&P#m2bu-7cƝs/kFTf܈%r8]rB'Ϙ2w k:!. MgjeqrnXWMQ7=Ѱ#Ӕi)ʽˆif^sX %x^SL^ AWdWGmӛ:>l]oQИӢkޗ[(XtdK>7[NviEUL3N h+ӏfWtQ3oT}*Oj!^_|j#1D}mD?R}YLb 呹Dg:Ff>]R:E4aWmz1WB mZwF9ŞVuM+peFJhȢ|Plb=!2nz󪠔a1$E{wt"x ]-#~c8'e B8t:j6X:5@#*;jF]O <\عxzp1id0X9<6&_(k@^A͓5,ٿK w4zT鮙biHhşl(QR~QW%Z/MX^H5xs=Q EnXS&݋w W{(k^G(78d?Ř$~ƛTJ (/'D6Fb+)FpںU&Y/=ԝ+Py4J""@@)>, 4H:+~\iW-6 eR)++p x"qL^u}u(^ ]#1n/gIspٔOjҮOJaYIRcOG/f Mxꦚ Ǝ\o3Lxw{mPFPՅ̡5 d/#̡FM0hs+V҅FGS޾¦Ui4ք1p+z^?MOJՎ&}ARZby*w&^NG1&G9DD@Q~>Ȭ4"L?bSmm78KD2+hsc[[Ֆg U:N}E#AZ -3~,x-h%|$hd;Y7Ir)F8 âJE$utik]f j6$z3.Gl#vyYY!ڽB̦ѶkxCCLQZ9D0'ݴAaVE)^y)@aTT7QBD\T"h/Q ޸H ߈84 c+u珋1dbXUQu*6UpNeux-je0s߂ΗhL|"apE9AZ{Yb].]dm^mՂuF?~;l|<}]Us}pI\nãdiE*-; q`ᰵ2H:=kCۉ\heTPl"<WN1sJr0^:FM;QwiϘUvɝ3riU'z E 8H61 oGBML\L?]"*8> úL 璏VGw.= km`-*%,eU,gBzsU?X6wE|S0Z0/-DU{;-:&Ha^Vʪpab w5q)k:b`?`-!`҈N%]N1Ij4)+$si|TnQ+<"k`1B1?n=h(lj}V_<|iVHcyq 6FqT˟%: }ogrGSHn@6[ ujp/;oujfKTF1m WOeẄ́ kG6}MtwzZLEi? A#2K [ء<3).1'R^AmrvzB]Jo$FpɈ:ޭyfÃyDdXÑ&dZ.#0Iq!Gn^)7\}/ݴ칲=FjFp@bp%*}͍5B 9qK'63,X/\w<#c4|֓#m'pl㉊Ibmw{W,;"ܭA08֨hz}O)r!qN JW# ☿+4s cA܄].Tce M4&/L+h_s|.X A7zPSKd 2:"+1K%rӼ;[6D!Ȧ$V [tr:m ̦-~Ok~ܱ al}5ꯓҶ\ꠈ#LF^4Zonf3oȂ|@`:fU+D@y[ZJe/Ɍ'T΀;?h:? 9dL (%#K^MWߍl`#ֆ*b'W}45[qWvO#ѹsYOH9mnڗ_n Q.6搝ʳf!2E=w2E3$Tc!G|Io6c`.g:HS="e*؏ɷaV?8w!ݭT":9k0TTBK9X|7Q%Y:t-yz1`&h#vbr{;(\/gD pA*F zIظ`AAl_){i/?HhzO_BB?9&G&喜ٙJ͞5i|LLRtN,p,j!G۳x~#~ua:\ QM1.lXa3z7@ɴ+P?ýՒϮeq):\Tv=ץn U˫|3~"񾣦g`cdwq>M%.\$-zdL.|S|A?ϹYAdQ{xM1zDC5OyB -rxFY7u;?zrk|9`Zeȴ })Yh`Bk^#2|#B".VM{/GRPeUpc6xB_1bA:om#>V4~1U\GpZHdP;m{)"1$@u֥Jm*9ڪkBd7>cQ.FO@ ;9l4?@|>Ec{ b$YQ$-GR[D894)fE}k'e09X2 _E9+pDm~ADEBY7xSM~t- )4{WW[ih拌>a呴gV7 DAqrmlD_4azRu-^qՙ3,:G]B/H֖o՚2_6yg@a>[92kXDk zW;=AQ:"_ O.=RHU,Ѷ sV",gF`{MlG`60´hJRIYTUiǮo߄dkJfrv}1>ٲ$29W64>HŐPU rr4iL_Ɨ 540K~\ZRQo H'wk|Ciᯜ;݄j+=o:AʿS8{J/$BHfFUTс0Qð$ ʋT-PFyCBG AJ*)$okq,H̖Rl֫s~c}L$%gY9v#eg<9uI`tdrONic*:$mnh</&jҠȑ%j n-+]ٙ5iXȿmyJjZt2{{&2].ݣg#`s؞J?N_ `wd]hܚȕWFpڢf T,E܍ ћj2{Ev/IA=_a8TBsWC p%C7RU '#etT0 zK1!' J1_е:ޅZMBF}NcWDνJFPڦVP~VTo#]Q%'.wR<0Y؛ʁs +|VecZ5{/TV躕b$++툾ɪuL$NJ9d%!ߑ;\K8@4p(  J-iA*Ӂ B5&D5MAxeѬ(wI []ao`wcZ<[MdB}21mK[-@޶to\N(S4UԢ;:m-icop\j6"vjw;>

ʎ"mWp Cf,6ff@2O$ݴvM}pjz-[a+!#IkqD7YEE`GBZ>(pQpgX|1Ua4# $ވ+Z1+ EBӶt"KN Tg˳˝>xAY h$Oz)K۫:vZp<WYz@S0 ( ˺" 8WPN.W& I\8]J0 YZEpi/data/st2clin.rda0000644000176200001440000002412613763140361013757 0ustar liggesusers}xŶv=$@(b5^$.R P QPȡ<؀ADTiPrgewo{y<̚5|{bW9K2ʩtuq)[Z5JuB8ߌCG)RQsuq)}M]n@O>   vvvvvvv> '8}v_@D; ?0G;#ЎD;(ЎF;cDM7a܄q37c܌q -`܂q+ƭb܊Xb<x0xc<Ox0D'0$'?Ox S?0o.@Х󀘗z։iyiyiyiy阗y阗y阗yy} ļLļLg>Y}¼,YUr?=;o okg@.'u sB_uˉZ:^:gwק'zd֟&Dt?uz'Չ縳N4.O:z~FU3߽IXsq>@y||,h"b;?7=yz^Y>y~#O?o Qqθf<˸e>)N?1~R1q 8J<ɓ_=)Nx8?< jwq)u]|5_iJ MOB_. zGr>pP*%Q _Uva^ V8kЏ+{*iZ[[UϞP ~pR-e"?\Ypj/]W+t|XM٧ nj#x l&ئ|u- ?-δF w}c`$ۿ-1?mDͷv0fdXKW\G#C /u B=/?)PƿY3TK}2*=TyIͽ_~sâ0oƆ2"w8G3|y>,cm~QnZt[~R @i^)MN8Iճ~3mpۣ!!g*TX}PdU =zjjVK{ klYV7Tz@ ~## c`{ʾ-7==4V#ڊZ_Nʯ+޶€3aKT>kR_ 5o*7\Z0f}R+I;Oǚ |^^>jn߳SUn3t+d/Vncy%K8j'?}Jssz aYI= ]^"_7е^݅novtfw=``tE!׆|W^D7%''j(@>2ZdF7z1ܷFw|o7mu+A×^rEEozC7댐:'gѷ>1Ү~VS':MD/~/ u+n*r߮ui=:GƇ1kSiؔLi m8lߺ( W_m k#uXA3~8{HwHvƦɼ M^-ge"G~xb8Nl9T ء]ҊӟS~i{mw'8="ߖuIQ'rGTxoߦlGez vJ/4+owmsyDb9z8WmJWڲ ҟʫ;31Wk5mi(*"t׶vy6+E Z %Ok$\(󛧼=UԤE/>h/b.(KX9I.j2U菷!Wi~E?i'7v>VgWYZ. ɒy.O?Qڝ\E<-|XZk 2?[}媜vRʼ)/\8}4O3F~> |;YUsYTk7Ir=VӻHN&ҦITG9#|On],#̯E v]t|bW;'nw-{doYwti{ 'b򂛬hU-1lV ioSb*_mmoHj+|&|z\KJ_[u*lMwV(IlM&|[maPE혯gkp:sD3l367M~7_6lms%-*m_>mú^eT=Qmcrzek~E򪹪^"Tknom{we|oy6g&dA?SK[xeD5W\ ̬'XEs[߹ŭ3Vm[DZ<.Q̛}!ee} U+|PY/Kua Ѭ{=|T>}Z;ZY7mfOzٓTw_'vi6*l7fWB[[Ç{Wl)^Sym{D.N*w3Qb5?>eC oܥ_~^dUwmU.VϥwMAm+mgeaϹ)[ m.'7}p;o:L6Tׯm?_2|&$^S /ԧ~]X,6']Mb'b>G9ֶn۶rB˶ſsmnԹ qxk^{wkYգg92;?DK<9c: =w_mV|yWŁ=jfs3;USQOge*;; #|}O?(tTw7ǭ#{p>`Ӳ]u>V*_ ?Zpq5e*[=NӊҞ'5UajbͿT& b*Ga7bZsʧԹeYaJ>VN=둝"oTSSfuR^˽}>|+rE:`Os/ z}uUg؃κ?C ٚ[pTG$^)q2bsB7a=UC>x q/ɿCa[K3{i3G7&}\_u2j?˧ɏ{n\Cje:L}Y:Sn~[ }cM\6ߞ(ht9Җd3v>-(K?u:yq(rjsi>V=8.dQ]U&~د6 ǩ*=w~:~Y}ZmwN^.p2G*>qy\(Z}EU}r yUV*qT];\!T+uu\{]kcE.>0NCou>rl/Ry8zOpHN/]o,T>8)֢^}E͏__x~r{/%g_.cDZv|/m\^;_ciP[䟸|{vs~lonNp[1N:~J4ùN0*?Hz& rS~KUf#zā?sَ:G3#CkBF'}DP.-2AP̏vbBs] 㷲̠3o =d?c^ @b]|`q g47~s >C%^a z!*,2 _͐4 ~EDA 9̰{z$HK9ho1[(`~/r^v >3A8/ؙ'b0OWM~"OLy~b<v 㠇q]1Bob=BaXē g1viGЛa7w4OEB"N@gX3rF`d?ֳ.;Eyi8>͸K~-K9 >Oۓ& ^<ˈ_~Rá OVԉW43c=5?% {1Ι&z XX {f7f ~1a] nq2y6+o {%r-#?A zAS,w 0Gqh^G?v}0t!gEy8EE. zӯd0`օH)أ_K̇T7 x%'뚴|EE1+eZJƹp?/Vu(!=sN0`bmÞ}>c[ u 䠝'|.}+( Ѡ b|܌ G<y3㬗;If`4,zV! Oϝ|a73}!7M8 u"O`}~6qo+릃/o=q:0ء/;An|~ ͨX؃F%& gS!:_ $@o|zzO^ϑI7w()ú`YG@c>y'q7+,? ¼|zmP2͐G& 'p`uY#?rS~;Ē&o'ZēuKȇq;+nTW< #v Xx<Gt$D0kPepO dNKqsR8 sYf<+)v{ڗ?>'bܟ~3kA <|Xǔ|kqh90ιQ>O ~A= {-N7<ߚK}ޏ a_\+"z# ~]C3~UJt?4_]>CK}1[_U q=ɯ֧xi/Is]Ɖԏ|>!="a<=jh~u-im/I{)ҮGzZ~xh1?Z\δn/7M^׆wE@CӏmC] ;i8s|)fG^hm=[UGӓyIy:v=M?rv} z`=!4yh/M.Ƶ^nj}G j\\EW/w38MӋ~1Y[C5>֣}L?u]|]uMn1޵z^S[:O-_-9nFǸa?m]=~ȯf_C?Vy^fgO.|Q/SۨkDiqf/@׸FKlCT_UI;אu`1c_6}M>~yoh3o:ŋf\67h/E:駷㬢&?MuzuЈSJ?I硭kWM| ?ǧnOX~b<ПP?rG ly~eY5u)?W|jџ> 㤪y^HM,&m엘G}uc=5jiqe[#Ȩ?.cSw@Q?=5_Q4Xޏ ˰hM=i'E_ƹK:?8_t \K;S^=Ϊhm[$ ߻o"?߆V Ќ~nϹ~߈~~>۬&ȗpo/IykH~{~o#?޺-f[y5V@޾>@}$6)ަEzn[yoK6ۛxkj??<|i ߡ xD D۸5xB;|߻Eߟf΄I?Nԇ|@smi ?''=v\Pg^.~kFIyyFGJӾ3/7uo#̢vg| |-b݌ۀѦW͌yJ9~㺼yg7Yiڛymԉ_Yh=9r;oFC?ouL?ҎVhtEqgG~Цb5~}~HҎAzct? :?oE}07NG{>p]\/_oqe|VIƍs p9)K o܏(q "ѮW~~ úx2AꅶQWϸ2U_ڏv7,17KaUr>msNIXh{J33`ܬ|!Mg2θ甔uո7ωm'6ο\x? ՐtQBa^3_ncv6waT'|˺H鷑vg: ϸ>\|?r4|1cV z#g#1ql/)0 :Ay6|zfYO#ү3x1r2' nʋ5i)?#0sqI3KiF4Yzh&U&83C/cҜL>r)yM̴qimUKhVmqiΣG˧r*uvEpi/data/bdendo11.rda0000644000176200001440000000335513521235234013773 0ustar liggesusersnE&0,Xbk{2`LoAa&D2vd"6'!f<}bc60#S󝪮.Wm=<򔷸`l\)3N,(_]G;0}s^_oT?с"Dz-koCz]HoOztKF1i4!MI3ҜO!GH?&6逵SEZغH [?SksEZzG~H [*/iaWkEZzO~H [+oia^~<=OwBMW8o.yV싈1[Ž/u4sGG$x7<dplaUm̜^׎J TVˮc̞L+<}0`F0fH6{Lj3fMM 5-ԴPBM 5-ԴPBM 5-ԴH"M4-ҴH"M&)7qڳnve5Y6kki/N[_m t~PY?I:ʑ*o8!jrQ^8WkQ<ڨTZ.)9*q|3wC w>ht|W8ygxyH?M7vzprgQ9=nYi9*#.8ݳ:~u√uj1}7iTIs=(m H e+-+[Qlx]&92]VKR7xK:qRNr7IslK[vY_IIq+؊8I%>x!CQ}4)|/_N5Zdae}s/4xIKs/w󞋙g2|C]M6fLgŪ[׵>o7cX{E{$B"{R n,ƪ2d~ n+w l NK)Z)C"?C  s be(>*}4+uKW@4W;N`uLpҜ+<P`z8VK4if~ZDg0/#>>cԉʥ]I*)?J_9,֛C%kFzm6EyWR*E%?wdzGl6 '_;u"QxQTs{N,:߾sIۿ:c=$21keֶn6P]䗱;*yO,e1=!_lmʸG <8C'\Vc3v.b> q7َue0y qpUKY4NV+|Uҩ&&BP T$-Ţ 'u2lB&`E D"`d(Q@]mmk鈓E1AFb1#F 6ƢWoZ[m HB:xV nݻv۷nfUe84QWv1[Yd?#

  • A!hPBpi$KI! $ ;~+0PĒd I@B=*a` `^a))7WqyL::1p.!s&>";@U-5~ o;H5\ 6l@-}ƶ^ l'q@a>΃eϑ̍ək"Wt;^SWN@E8uU\PsIqq3';<\8q+`8p6v7<7ěf 61Q'J9vu 0]Tf$;BY+(%8S]Z((T]88888:~YeYe6dI$I$I$ɠ7wF.T PQjihE4m6 m@lmE)iV00/^z,,v|Hm6 m@lmd mqѱkdYeYf (E4K m@lmd TSM4E)ib,W]u]I$I$I$I$I%V˗.\UUUUUUUUUUUUUUUUUUrxVT]u`,I$I$I$I$Iz׿vUUUUtDI$I$I$I$e|N!au]u I$I$I$I$b( 95wbAፕ6 .4gqQ·5> c8|?PbxNu[Me327\ldESQMgcw.k44`3 A0PFݕѺUQ:+_)]1!\3B( ӳ:+\J(I'D'YHChceڹn;\_WmxL#HVFENZdҿ1+#ҵ":&_od?NZ~;YC u08Ķٽa]A҇*M3yvH|y[2h C ͅ =zٓo\)jTYgm7ΝS%缠f 1$n?pl*"7wǼ F& "G;aeX]QAtu:[D`\a\79{ќGή$h9M6|So1#H LKuc:s. J.|eTCF_|g,"}l~Yo9\+CIIdTKA&lvsS @ NZe XhS14?g<;}OOKMGaG;:VKKX$2;ut%dQGqj15uaMVHW%6Cc}Mpͣ*b+Bq,2Ȩ36H4(){ZG5d4~ a6bmQ 6gVjlتJFe-_FmkTۆbq6}miz(TZyE#J?$ a_SAwؒ@Juϖl I$ԅ@*V. aS1wHQq9Te#2'}.\5D2z7{Z_;D@F X pPE a3ik!HË܎a|6'Cӯ㺣ԚP{Du0\^O|tW!LTJ~BrXhħlD*;2Ce1fyVa7:Dd]eM]^;sɚsL,5GB.&1~**X;12f UUf U8E'M7ah-@4 4 6ya r j'!V\kv=t=%q97!Ep|ԶڅM8mVi2Ͽ:˹{K,'FuylWnFZf}Z2VBI/'լ63ݗ½ļta5spclhYHY;%6@@0ۼe.-AqZ h.JP[3XCTN^8hڍi5mmmET[dQ&Lmx$j( /1 b174pM 38X(iE$Y$ Q̃J&C9$lq+HYӘZ8y1]p $I I$H$I =(`sh]G%'"NGU7ӭAK500d陛oVG3))qc"ٗ! yb8.QkNsݟv~꒜FLfr|MNWIThyukE.p Epi/data/lep.rda0000644000176200001440000001432412531361106013152 0ustar liggesusers7zXZi"6!Xgu])TW"nRʟXaqjnj-& H4 L־oZ0rYFLzUWE[mFZ'VMS96e Bք`_E4vlD_GfOgsÈ)jX٫#C?GL$zKQ x1lE6kw5?g\/A.yuW6q4pڭ@hL.G :S#] U~_plS/::d&QSE1 r6 h*/o4_@pScZ}&9ƞYֹ #Yu/KM]Y. 2RFo1յ'|ȗtWD$1O[<90#kG6Eu|b`7B%\(pDV6Ja$1a`B%: 1t! ]ޜ7K}d>]SB,[7Yvޒ>,P N=Rc),G.f?Qȣd))U,d'njz˸?o4J9ӹDH,!ٮؖZPXflu%ZP,HU>Ƿ@DE&NUgKZc¦VIKWDKK-vm #kfwX"bt伪-r'ټ; }kD`K)/.ɆJU{I{Z:ǃTtl.0:W {_\S]CJU%* "+\kͼ-'UAWmANOv+ĮΉsPDz#7A# L֑y[*|@ p/`䳊4hFyPoiD+ T3DGB(3Tg/'Pws]wgX(8xğ;M;,wĥ3j.C\bk2 v(ݲK?MICydW8V_º7<OJC`#bVkgƺޥ=0jĊ0݀8oa$SJ;wLm{ 2\%+) 'GRot8r6b+EԳ8E5@tA P: [m|_hh~GGiMr"`epkʒ>8+enxq2,k؊38b љ7V#h~ \ZPG U.V}ހF"'Wu41;w|(r&dz {θ^0If\C^$4|0?E3̱MrvںjZuK}! !ybguGFK*#6K$-j@j_u,m8~@($o+yԗ VèWy&lH;2SDseq:V(FͿTG vNQ|]J{SAZV U g^ 9uRd `~\q{J372%3ӑ)NlU-6۰08^׹U Q(Z(Az#Şd}g#K4%k'u=wZn~5% K=O!HGS }^gT]փV+Q U#\3q~k)faJe}!+y۰zNMo`ZrD;G^@g1bg35=Qe$gjRJBea>똠yԿPs޺X QT>&0eq%sJ` ̿0/ Bmڨ\x9%}>Eh#e?R`H =3k{r8r|ށ8^S #=Rןɤ;Zx/1ݡH\jG5"eU5L >Hq%̑aoJgW%#)0 IcV6\k]"&\996}ʺ97Q͙ӗdq+(9“^,% Yk[q2rLoD<H)c#u8u ki`QJh4s`ukVh /^?űxK`w%.<vMp0qm?4&^~@uv~toƱK]#CFYX›9.DOSk}G\8πVBL-"t9+箌Ň=Ar<O nNil࠿;)zvLMs!S;f׬%r=wnjf3ۭFX\Cxqd>Dx?Hk5˾1x(0E-w|Wray P@oD0 R焈msCP7u?FVq(w 7 )COذFWS@Cw>YкB(F"H<&x^6<|vTTVr0C@jR[i D:\I|nh5LLJpZ?P[i6C8'H52dkeMUs4m_Zj\! #=e҇IBn0v [[ VӇΏBy0EI,= 6$zq=u{,mR:}hw j5"yR'@#1ɈXb}"o<,zq B-*&qyEQjK ]n8I0rVZ0՛MAR>LA#.n1ND{ 2 WKĊ_ E`J[H`Mu25ѯ H$sU(^98;(5]'ܜvbmGЪ 1|71Tw،><.fOY* ޲sB9aÝQ !1;[/5V$lw%L8qhH!t-{v[xQ k!y ^?Fʋ 2yYu$'E`Aoy%8s!BS[d&]^-~Ahi0Q+(5 0#=6(#UbJ<#Iy׮r*".MpKksQ"YՎ#+_[1Xb*FZb`S2/ ` g-UM،e4AGo؈ ܴhls.?+ὗ[ŌMc_OwHL6{KIǞ򊻷JG7C=ϝokF~v}n^xȪCyH24(GaX:CJi?_H?heg@[Cd ȩT8Snt9vᝊU7DQ)=86I$ѓzZH5X2wB_nыclGdW5yFB|B+q=%w0/zBu!&/ #q6X/4RDJøKtSĆ^W:%oH^ߣ0ʅ`^FM@^ݢotМ_ay07j`asf yGN3_ }xNcJcz%F ֓epZguO1͓.c\֬2?Սn'-6?3gחg%pEx /7u*©И19KB4Vt<[m™&Tr&!]nY`tEI@dѝngߦ~W\mL&0pXrOO\_z٤x0ɘLdA׀Fl)%<[X *c+7?^'5ȁY汎5jptw7syf;g+(F0zg#$A7 3:v.LnQ.ZpcoVFM߳D>FFD$ mGӯZ"rPhTN8P2˪CI-㘳.eь`w}g;0T9@ԉӊĦR::g $ @Y]v[Mg{Eiygt>*kɾ=˜ac5O?t@Ņ'eKʆ,;-`$ kXFg_Ӎnbq6%8򽲣̡>6hw,|,)HN2}WK݋/RdE1}\y d$bcv!x 1)Nœ.e{ L!MWqDv0"LdAǡ=R*d-Oʉ>Wc Ŧ"ˑ#"]'9K!jYo}mhqID/u'Wp#]V@4wy FQ%Xkez  ]ac2Qp3$ 2u3R #vrXqM e+b6# ?\וLz@LU{\Q/Z<͏ K33x=#mgmYD3%C 1L:eeDTq#uY r˙e;җ=**m_yx[?J-ri(Ty5Kk!G_L2 yK VI !s5UّKrTm ^}wZ9B7l,-[Wg1n[RhHaWu0 YZEpi/data/steno2.rda0000644000176200001440000002016513763140360013611 0ustar liggesusers[  ER9\r*:ARIJ*"̘0]JBCckj5|3}}mM"ޒG嶦:DD$BTDB?R>z`yoE_ FC0*cQaQ $'cQT0N8L08\ 0bz0X1=F6´11 0miLbfb|sLcĴ%cz1`z 0mikL[>R,_K|)` ` /eX ˗a-b-br,_˱|9XW`J,_+|%aa=c}9`;`#;b}G_*,_NXNWc5XF#[c~bH~GU}Y ~4zgYGO|R |G c_3tr-׏g>˟˷G{G5~.L.?RR߿ˏgz3j;>lźD~;ݢ= 4{4p_E~;Y{vm~t}~o-gSsW=y]{GY_=u_j>}?OGsEHK\6p@D?NK*b5˟G(7bȻBf,{1Lx_@+.(T qǿ,dgZ"V\}grҤˈ>es4R q,h@$ۮsR'kK4ck+G)RWHERjMkXDRWnr$B Y驃[s"w G,1_u"m }e[rٰ|tp>]^نfQ9d5poR'~ 瞎XE8x3S#1:Q\xj3"O_3s?=|v(-;bL5rLQX*.&KHK6nBt#y0~n5o9r^WG^DdcD^zwC45k"Iܩ~1 quWoA%dO-DL7bdTC^T$E2m<b~\tM≝Yq&ID!i)l [H,~їMA7&X*bqc[ku1.;OICF FYROMn ]Or.ٳ%( 2ADW@ױ ۰.ޜ2oy/~I7V[rnL.2@ȼ(Դ JFmVӯڙAQZÐ.5lBv(<!_ZMyhf;M-`ր.~ie ^t_'pB%<'̈́b Pt{ǖd7-,TPٱ igr,tm@Ʃ,g~LwH+V{p_]Eij/=o/꺪(v҅[^j uV+ yz^:@`^F՞#_CAfOùuW@JT rҰP4lw)]<25-k!qiB8EJbVKTo&AU+NN:8bdmP E=Mr h\$KX.² o^w@[i H_(%%GMWn׸@מfW@V&@uQ9v&m7H0JYyG3JxS>Ϝ+GupS9# 䖖&>I}| }پA5|r(' AUC })P\1$Q gd (k۲`Qs(t.:6ޖ~pd?50BnPBuFm  *6O d5:fgb1Q˘vs(4/k /G+Jo7CVsLʹyK<掞991^yg'p=_Ζ; Umմ*lYPși 7%P|6ӼKȥ1!ɷI?8ɿJRE%IPW~P^J|!kf\Ҕ{sS%O4!k5<޸fљ~6ƭ&*PIp{@K2bs!86ly3-[o;$]? a 4)Kv'dTŢ((zĶ  /5Gv,JQ]x Cg@׮=ZPeh1hDb"": OFh6[@^9^_F?@r_x=N\!mh+k &`~y&*.n _=1M¿<b;dlDֺ{ Ehб T]:3ɔNM\Hݿ6csz@"3d@g= (`_ s%^OtBN#:~8:ζhJ#oA':]Hf*ueJv('r\5qrΟX|%®М^qT"{J_lhc; { *}ܒuTrQkjF*|3>nle 6 "Ki'^}V t4yӏLjJU(Z@Heo3r6.w!xEQ t"ӫBT]zDk-/q5UgZ?OU MmO<@ˈ9>> ovڳ?9}R@Cw,?[E4w6vċDՅ*Z1&x.GǛ/'vôـ6qJBԅD8݉9x{r#11EĹ O:NS3k DΦ?%MPA=*PׇD/RD N_C}k+: ~]F|@_f\=CP!Ч'܏mg` ViY!oIz{m$ dv;r2D8 uy36g}Xt?gn(W~Fp|-mCZ/Mݤ\n|/MHvpOrڤN_K#Ans~RYПn[U0$^>o-u cdY!cV#9hǸ>*ݾsy3/no+PrVhW-r^<"Y_JT>I1JsWqSn|uF~m 9[b{X @-< nVM 'WP:slQ9d,gUUj7ͥCl JTr/yg|52O{1H:}836nyk.'hMK:^gp8?K{r< {d8]XW]cV & ?T]us[ƬnۗP%ĎΊN ]8q o?aS™c7z]2Yٹj5(ZPO?ڷ,YZ[}Ka#kP/ſ=&XuݦcgeWd:Mף>vu? W<+2н=GNR&߼ЮAbebВ^=7uqD pJ*C)hCG+eXݩ7/j%OK?$̖~#&YU 39}A}wɹ@^cu9@TGb9#ж_ ň2hwE^ߔ/ pBXÄs9XZ9-/cZ ۴(;xr}ZqG& 5rzvP[JWZVnR;buFeXInEMm )g{X'K@o/'Wy V²7|kB L/vH_ JKYJ߸&o(MOf~d7K3+wGYfQ1ٱ {bi'}~ӹЇ|Or;5x[uQ9)U$?-\&TߴcoKudX;ӫAzE}}w45)ܡJ!-@rL)<&t 'e7㒾;~H4~7bTu>rCRtoQfM\7a]^?&Rc;smffw"JC\wlBO?~y[]BZx]z0jڇmlԽ1Kޏ#_ G_SP^rh 3;o?#"]協#p4zmŦhNھ~cIf|Lc]UӀˁK*+40"fP;krv}xEIjHb! Kzֽ>j3J.= 5ѱfv}b;ą\ mF¼(s#)({v_˅ݗ䮽g_s3$U]3X=$=~0xDE?ʗ&`V寠Lo'|~p-0 _5 rm@$_#p5w[>;z0X`ǁk\结%> "rZ>_O|Z x|T:Qz}8o|>ߞ%R"Щ|;z' <7];ΞzpU|8y@{#'!rAt~5Ji(AKz|8a|ne en?dѮ%3O|Zhx.kDiN< =ɓRzHwE@igwחH0W{XKG6^ q 9(k`fpx  snܕI ]GsA)PS| {+=ܮ|e]i }3}<'\'Npwy~ۅ9C^~[A-,K^~sN(C\´Jj# bQ+쁼4Z 2pt`UOtKHzH/ͱ+{kC;8lSqߔ! 쏓v[[U.o =/am"?Se^ezQVQ|]+d*gdj3MM>9>o$Ďtr6 VLUSc|͘яGZ=`Z4U;Uqgc x->QQyud^9Wئ@SJvKr&aޝ#[U&-ʶ`s)@lB2EgI{[X!fkl P8xfg/f";y.}ϩ_yeg o/;M)osQ aaƮh[G;*X}ZI~sh;P4 m_ݷNwkV]=R^+d?ßGFh `<3wrݖo/(mz䉺3$q8G ;ڠ1@o1;xK{ī407CVu4Ǎn9uVz@M.Ҭ{Z/ZZqXZ l΁k`Iz6;ȝX ߰Nu &ڸD?pe<}akX9ӸUֶd~̩ ]r#uIJ4̭|7zRZ{u,Tai;_&i!,/9cԨ!V> ]"+0c"4B֡BKEF4BVe1G4!b*&R~Ũ<aX ю?K$gĘ /mG]G /ȅbB5WѤ~!tP.Q=UPS~DmgTx=+]NSNHRaj4URhnfNa'q4CjtML=`׏q_Q.^82Å.5 NnUB=T^ W .e:&7f6R#Jҟ];dxР"lGvk̅KǠꣻy6dMsZ߀Q| зJ3NI]#'=2輗9 8+[(NRX^މo2Mbl<3},;zBÃ-p tԱGij2 ޟ9:}GiL{7iRŇ>7>:EYC"]t_lRsjyK49ܯO4x4-IV@osN$3_.PݧVL1VB(QjM/fn/ϕX>ÿr`Ԯl|Lsn*B#}1#`]3X'H)Jh5YL}dEΦ{ծ8(Q\ 5+ c+˞NR~Vk @% \!4N{4}* >JM(mF&L | N?ςdMaD':f+bCtVH b$qς>M(y}>/^~ $l+ Ѧ &DKxY )& ue9Q 5>kv:U>M xa'A08 'r? VC: [cCA@ia٧TI4 Ϝl2s(VϟU!ru,ڰ6ۯNd=lMtyNT3PAT@,ŎMGeş$>~+,'r˽A|=\(4 (lg4a첳৴S@پPz"~e<:c y,zU6Oz@{t`Jc$iy+V%:=nI?RtO߳++$gnP50Ґ=u fc-8T**&[i ]Ai!=VCP- G~EbM[SLQE&" V&dN/u3.4W -](61 !'6_Z]5P}2)&DFtVOt;`D!$itҮ*2UJ(Ŭ F Ӆ^Ջffpnd(X2LzVW!1e/Pû8AZ$쳩\|&/%*zO鮒'Watֽy  Jej2e嘦1j_ҳ=u ~*M$q\^0Ѻ#S}¦ 7`k#Gx+'o5~[3z/q#%#nc1'd rO=!uT f{%|@C7UW%.j @E.#5KyIe*\SУf=,M +-5nm,CM0rSsQL^Ag{=|u!`c@?Ԁb;$ 0c;ݨw>:^5;4E46W%"īe9r[Y!4gMu%_G3wzo.Dno6WrUZE4x[?E<ደj[>&<׶YQYd~=yI$蛄9 xAuy.c"]a7zIA:7+>]rlύz_DVg3&{&u'^ٙ@:Ek倏1)9PZQ:iSlr66_Lb"j{V0h}GZߺ}2HÔ;!R]\onB:^CUq'kDtQ7eԈ`J#ZEZd |¥}VO{+A`/9[Ex)q/gJYN+|_ iZNͪnq]XEmfz pL}tCk@ʨɯ x81zӷsׇU2 m!Om"BV5Ca_;dyi].B9m4 {d: G_*7;jvEm_w)%GKZ= ;--#1} WL`rE>nC̄ m:<sl5 Vo[!xјܩ IoW{ŘZ&km;h? I'@]yȜNݫ4ѠTCoK[gv+o3YY~T0K!=B 5C);1=GT3SA@1k]mS(V <u{"Ǖ6܀&=n@m{ʑ1&9tA4x|q Tyr z rLp}i;~xX#=p -$} e^8iϙ.LFc)If < _\$SbA VnTzz{{*y7 &l5IC4NuZGۏB#@[A; s|l@Fymɓ{:Q `I2*r;[ jauwa~RBH%#/{283F"ckW-2՝\J R6: A a➷< "U D(SU )qF%3`~TiM:!%{tZJ jKm^,@8'rQDJ]b7d?YL{*`tGn!xVmfK^ЭQMZՎ^F1շֽs@բ*lsU$Oe {K:\)xI=M&'H=`]}"Aމv42N /ۍq䯫[]lAs"rf~,ah@duW`Ɔ\Bw; Ɖ􏞅-ϧDx8_7|AK_[LDm90mv!bM'X2fZ>f$+Ƴ쭒O {xDϦ`f$렩rTĤVp;)8U |]-<@cWFc=7*ֳM r*$7 >$jEa(8k\It_dwѯ(H^r(vrSU&Szk-DW'uuzqo°p@rǹ}6|oJ"Bw\aRxw G65׏VQ3Y_-heXvumX7R=b ^.7i 944u?_l({S }3 F~\avFAa8+rN|z6LL4/QRϖ-Lx2(3Nl֍;[-I&$ cvK\']f_ ,nKɔpyln> 6 \eU`Ca(`k/v LqJK<э܄Éʴuzx8";{͟) B[:$)t;xdS牽n:/FC^% FQ)Kbn8QKˈ9$I8h}n=0(_YxIYz@3*ĵ㖱Bo؟M6_+E=yS~M[)Qo2ſSf/ǘ(zI0p,zO*lk bTJ e(f:d'0.^w9xvS0Yt),ew?+QH=4.KϿRE9!_*RDnOIߪѴI&8UKZhDAlcQ:"'B@D;!DG1vTEJ aτ) Ktlj6p;$5K5s oFB\\c?ҀWȣRaqӻ;ZԠc (UOByR'V3xt,Q/$oI'iШu8D ,D@ڑҎIm"$ E< <=zW2=Jn/y  PRa`7a}I_꘶3 ]ew>;ĭncFrdƛ#_䲦l{bHgWLN%@ ib?+K53BDWԿZr`Ta/wfa|6-0|I17M)}w/"ےp ny4L82\;q%Mme3rկݱg|WlT`#y";W0)_ [u +` PQ `񆭍>x^Tv=C]OS Eи4&UF/Zrqy#-3 j-8Q' ͌;(,f':S )Aj9T j0Zdΰ=ZםhVU4 Z4mmg=xu(.A:Hx8}qS"|&I+pS-"u朔4BcԜ];%c%d.=Ó }5LEH GFlj6Hj 2By^cvpgc RPRRLhsE^4Y{V@̣->Kkr9+&2y臠t=q^ i4T;U}{І rJw ܼ8/Mx?p 2(wi=Gw.pՓ%Ι'0&LngoXm5aG[&6g`NWjf )\iۡ}ԏT((뗟=/5%4i,ۣƎX]G?3x3VX/=Gchw8=\/kYDb<hZen{7>%" +R$5RMdV<;hp1%LXUC<5؞\x\` Qz\i!+ fp@`  3&p/P[h@C$½>Bn$u\BC,eL$@7Yv(JQ1o<jޤ0b]׀jrk%WG Ź28ZPCњ <5a$Wx;l Uߗķ,m0RՈ>0A]% eT5h* ~ i6܊XmXA qb S6ɇ҈n;G25^zqƢ4q=+쎔@DaARd)u-Ot#!u/Z P+voqsHf TEJ*GFӠ x~%TV&~mz7#)0!}; dǏʇDj\uOtqkG>^bfsc. kQ,T EQ"w^Ru\rY_;MZyDd~lNZ`LFH)dHl q}0=ؑcH6ud h+^N,)E,Hfi2ޛ`ݎٹg Qت ALyǶ„OE s/q_#wfoVKɤa[Ls8P,e,w ^li>{:it~TXťСd6mA3#:-'8-ci~Koät UQhFh@?8&It_kUX|;;`tȸœ kDBRzAN:4\`P{iM32 GjA}v.H $?[79ܶpL!55N=+F/(2C/9zApEu [իDZ-ԽwZJU&UƈEcʦ1V غt벨]P*1[51KP3v'Ovifth+V pg?Y;sDwDLa[L*G&%>( tJ ~΅N?w@vD*d1E@lB;0I$V:eE逻©:bX+T΂;+\yu *=>\j}FA7咊)aF24YglikPFRC.H?6rSN(Ptʠyj& !soawd0D8A>T&x45g\}%Ϟ :Lf\"oU # ,k3I+OqP Mě$>NKPtqN;_Փ9O%`_WpM:'qiEBߙa)]*"RRH% fR7P)AsHȈZr$Ҳbk|p~#ly#[K=t-|s2]d"uN%פ\by K8ٖ,aM\Q}2.OnL10)շEuOacş7۝(;6Zq89֥&j>ࣵ۵>v]9'In|J̘a)}gJ6J8rӢS"DKuYC!%3.wzˆlρj;%CY`wy /c >*ϘUt!梴j:S99AD+,=C?br_CJ8z ޵( dGTr-4jUbZ흓03d3=  jsΜT16^hTTӭ cwv;`L맋'RvțG9DzDekobJ}{GVnKN 7MžTH;Xv'>0 YZEpi/data/thoro.rda0000644000176200001440000005152412531361106013530 0ustar liggesusers7zXZi"6!XlS])TW"nRʟXaqjnj-&dV^ꥍ k7}} qrRs杋ʂ#}+,[J75)2X: `rR#~LOTAZ-"p-!}abO̲<*+Z`o1ڳ.ڥ%x%g// d$f#)A[0K*9Y}3Os 0+w)$6"'vI\0#m1ɄJ&(8§ `Amw ipМo$#1&3jXAr'vE [E5.<MTrE\>ՈO'K\,˦J밇@JnW6RsyʳصH{{bFil!NDZ\@Hk&\Ag D?KH:qq :sQѤxGÜ`3 Q= 8K+q+vHc\s41Yzz9Zw5PT0$ lu1Vq((, x |peKp\J =s TG!,CMFSJg=ȋ^/:Ģ:H &o?(L4T$j؟5v9Տ_LD|=;Ju8tdvP,cœa@Qu>Doj>[M5O׀t8\3B_2MKך{YMpS5楖U^)iWyU8}0nfM ހsFGܟbrx^S\݂'uYSC1f4n ijw[GB17T*TR\w"w P2Nkb_y/E&' T{VZXX2hb&+ci3)hxN:,\1SƎŖZ$`T5Ms!j67o9aj:N+}*-[quI0ҡI߳R i؟>\kfYD5k^ Go *6(-ŻJ;UdOEq1# ]Zs{$.eSVM>ci}'WϚӸ68z̍r}kNuBa~eHH(޻r G?{Q3U1FXVJ_61$A_RȈ4XȉS2c}iߙd}$54+ ϓ!cǒ~"i6vQ}$3|EjS'r)WLB4ӲP=,%)<k D>ZM1h w_ Dڮsw564iPO;jϦ]e dMZoάT_x4U{( 20@4y>CT9H07bD/A'tiJټ c33;@^,䏰yV^<ݔ#=^$Heʩ[ `V:]I+4GX#]TQ}RPt0[X-Iƫz!w!{w$2nF`Kı4Ii|pP#Q=Jl4 +4]~ XAUvz?gN{ygnBX3~( kܨg-f}fm1 :-Ez`KR,u<մ3=GmW 9tMYdZ`RԈJTs?gn{djloׂ9$޿rV~U,ao,Lwu5dqMJkiI[kO_\2IUK5=6MJL?ND%P$acGF:YA_u˟Y#fC'#$&+Mӟo!:7 $~/) RVsqp. &6Vm4mv+q6e;7 0WuZuky'b/e*h;ƣubqxLiF0&2;%DskNF!M.dusGR0ϋHHw> \ÍUBJ4rOÇHPM}ެ`Mxpol\ Ўׁ<$||BpH8>Jҕ0r,vPhG\cB+A +pRgl".t֟HxɌRV hA<2/ ,U-&s!(|yGqOSr.Y^:щBV߼HМ4_)f ]4^r]uDBrk-L$VMض]͐y굃krVOyƫF0i{sNϬxɅCv9/m!"1jn)I>Xo fPNtmtc>Z q|xH#KܔnHyث:u8-*B_^˚l`5ǕEnT]M`O;v"86QOq% ֶŀ}IKW@R)΁lR2Bp_2:F"~GAj:r5. O砂Y@`h|n31oIKR*xIףcFúLBH"~mЬlX(ubf~0\,*O2wP&DM=a0b@ m/7_"7gCe&!K>M_ZVi\:uĽaE;Up2:k4<*x;D>ʼnJD/)"T`^UQdpt3ȇARw>$7waÃܣ]9:BD?,oIo-1s4"U `vןdN 'OӰKy(-Ԋ1_iBvTW@ ҙ#gBV'; ΏKtmLkX^庱$=u`tx]Ia-پSV6v t'Q߼GLA@o~:zj*(̗ŝ҉JJS~W#mau1u>4nA$}ߴp}ZW6B'.=~B! vщ0G}0~^ںSgV=G76U2|+4ɮkI0FB ##,R3o:ƙ}S4C Exw5JYg/@J1Y>Ww7uLBu^Z+ڰV3&|}'5O9D#":B=IR馝Y*IXq8M=xtIqQNj)HÙTʄ:Cã43^csI'neB& (H0e<8NRsXh7aVZ뒈L b4g# kFxԽm!O]' ɦ'['A+˥>uBjCk|rT N-fI kU߻CLAAKңWrLrrp4~`!)28Y}ٜmd&$,7<Դom9+$:]tGijTHq!6sG#v'"P(daLd6`f uEW;TD[V,/EM4)o@IS,(vvX: Zc'k_$D^*l&|1ޕ]o.e짐7}D҅ٔO i)4x΍NoI*W3b_<7Pw^B{HQF-j\XKG uZ0RzcF&)re7;BwH,RT3D`ʲ%rwA^jЇ^eQ]+pSG"JW/0 BЈf.'U.r54Uj7P#"za @OEʆaox 4I~-ҋ#o5 3@u0ؖEglKSn0akH!mUDMc~W_S?*oeA@[4Y.o7!S5[#Ys·r-~\kYѲ >^XͥHcedzjвGj  IqE493=뺳s+Q#FqYX?4E~J}#1F> VWޠOމli;YeZҖgv'i0a[D %>/$%`5~W`GqLDĜgeCPPON=HT-M{YT02 -쿣=f)L|dZ< y_)'C 4iELXZ:l2{{-LJ6B")R[&W KI +dw_4[lR<M|[@.d1 ZUȅW^S#^AIN DQ$Uڦs@G!D{bGBUp@]x('? ᘭ6Fx"v7G˽+E -UQSϱi]SM$c,'yi5|gj@=Rfe gnk_ЬCPz,+gFJ@YBAƹ9+ot9 ga wƠO#í/WXd}*%5/0=v_[2I `G7=:,ҟס~8UY 0<Jg•{ uF_V*#q—6_DE8Hcf%8`/M γI*PbGbkؗ/$$Q@P >, g9'ZbďE=k]݂jX:!Sq00w 3^.TSL&)J5 A/."VTAWX 7'׭kmL!p?srl*ft䈔m>DG V H9gi.;PDXG+ӥ i'3#l(Ŝ6ʫyȆ{%aNB['+Yp1hM H ^SҮ3](N>O&VJl,0?˃7ɳH_U[%R2W2TI;F b @tuM/]zM6P9NBoSV ~B4ˋl=@ޮYR|8t\3">3C8LA^:q;R]:::Ϟ]sdٳ43MFn[e&XY= O&8BkaIR:)`N]0^5pn #AwX)`Ӗ~C BFMP< Ӵ>Zfu,ǹ(\'2:`S\hX0}\"byQ< '.4/ 'k8yAN(6SQgBlp oɴ_wEi݂^EBZ!y!¤'oiryD(βAŒIVKKZQԄX:jCw6sKhG޹B^L8Flp\y*`W7,aޕ T&=K8" icta9 M"Ȁ/Yx`nc;ul,\=mcEsm.J}5ESItp6qf{YX$=h4S5Cze S71=#pa񣆀ٱOi 5c0HhSEW1Ŵϗihg//z6D )f"&U舡v2."$3w/C,twAX7m= ?cpՖ-v/l%˸LA՞ɦ& t>e8ۉh4M= $vXM|@7N|+\u- ΧmNrcvW gQ=^ͨjL_ɫײv:',0*wu0&AγyL O6ܦZMz&d1RPGp0ܧ6p-RnK(tez?|*I/Ƒ<#J`JpT{&?ȏ_?ݖK&pmwʄ_dpp7i8Bm+讋W_|"B Z$bC.Z?/ °v@r;0t;whQFkN6怛*2Iag_"5~|i]4SvxTuʈ/Ҳe?͜/ڤ֢Ѳ/kVByp1vQks}Xp%->R֛5u`PZ+BaΏBW Dl1#p#lLMdCuފpSbڻ} f|G}:qO#RP94FzM2u]z.o_?Abܶ,vҏaU@ek4E "ƃԉr#K]}{27l_ H kǧ&Vb!ajuG+Ǵ֖ԛ}qNM!U!9^gv5 Hkt8XolKNJHDS7dp Li/ JR6 .;&PuqW,ҁpllPʢ?ҍ ;Lva1#}A,Q:) Ac@k@;|HۥG`>S6D%lsM" l+o1\O!zTg5Y8W|HB<}[/UsgY#tw^I4ntmw,*+ \m0F-b4Gf hq!MT#$)oGyC7`3Z6A6f;W>6sF\a@ŘNh ;|pٱvY}XPePq˅⺞#]_փVU|E &F0{Hx>A[2*=Kص+r sh4'3ResnGA $Qԃv/a|SO%y`p=_՚ԽR#EYTQFqnmHki3ls6׌}?oHGإ^ 9iLϣS]hb 7rRkڎ6aNC!vRbc>I:Omw6M0 $H|-yuXş7RX_L6]'z <ټ0;%94 !h h()Kdl85-vPApjYVD_}Zz)bYʁoDegY'̼qUpum)dGxVQn'i$Xl:P }vR-MZ4dLJ:Ǫٹ#' ^Ziłv덐 JBa= FK/Dl MZtmmAkWG'˫jqZ iFy-Њ_W-J ە<>@)5-3#ELSL֮,RyQ 6nD҉ز@CR>3$3#:Q<8LRtƜ;6(<ɉW/B+d9)_R\nG}S x:+>޲ߛ%BJ q1BsY}!yЁP}jyZN^dDێP|KKZ~1M0ȂFټēMQ43M]" TݙhwŞsƂL'K!'1RՁ4ǭwL7!H,`.*jp@Eg-EJЋjigi(\R :gM k F*r`|Yg4fd\fFME $1z4Vjx&8mCҊlE!-dTY_8}% 7{\>0{K:35\ŘsH dd:{kN <{GOmV#{C~a sx +SSe]vYE`&SD6=eÎ 9ثʜ_֦S߹\Kk*kUe#+ #esڞu156*ФY-c|lJ.OK榜 [j^RyOsMS5 '6cW7:tH'ǫ6V69()﫳kb,v?'HH(2i=oKw+jlm}xdt_ڶa)[m1]\zD Hukz,TF#5ZO z(pϾO]ֵ=/H[ȠS_$%q]M]Cޮqsģwa h8Рdw.NI;Z7a wy퍇\ڿ)`u=K ϕX~vkGH22f|0^biST%:ӥ1*&ZS<^ϭb.The"9i7|1})y+pսl fN^}"11v!dgC$= cL!Gqn;*\z贍f2X 2W=X<BᒊKN,, Υ!v!|^_̂\*>3%ɿއ 6$̼(C|u B!܌ z֔ 1,^':_|R9#rc#3E%ILlwjirXفj0|9N| f O[EN_Ϲb!U Ou1ȓY܌'vyZq fuuFDSѳZe{eWϠ;Fҏd/8\lsRs΢Y@=3EM#f[YjPXT-8i0ȫ s1o4\~@eYQg:4>.t)H+n ڙ@@1R$У2g09b itNQ,t(UI@@x3z) uP*cP?`RGS7s_]V`_/fMpSQ|=DQor).%*2 4K:w{ݫ@Aԏ' 00Qb~σt$PĦe06Y-wUa=(e$| xXfA+:_jqsZ*Xe@$IR)(!4* &]mgR-66J0YyQh"Lʘ(:A^yu{=JWVH520e4fAkKS(Z гr`$v^(.F8=;st*ZfBv\9% mg5h %Cij%lUZ0>o!t,߰KB]UL0(V,IsgKm]HVY% f\<$'-G `WJл/QAP%Sy}_yqMF0 عLUgF%aQ&Y.2>Gu+u 2)Z1}#%j^Ɯ3r5uUn8HLBTEQU(ui1?NodqlW=h`|fƁ?ЄC}ZcLʉ8\"3]̫宛 +ƐiBqwq<x,q\ZFBH Vwb`"*Q]RJ4~qmV\aloT`uKj$#UB8K}pmM_P~DNwy]#׀)Ǥ3M-6*yJ]N!fp4ۖlDžzOvК=gvl)/hhޖ8R񛘚! 9wN>rc;+Pԯ^O,LO5oR"YO%vg1*1)=[s2_D(.%qԦ.*ܮ^y@AnĉcFbzJmڼx*pQ^JDtmWVda=kR ##A(j7'ѿNFr]t< n`=Bqh~8_uG#>Te"1ί`Lg!c[v(l[O1+ $|Lpbzc`1nUL_d09G[G !i&!ܲdQ9g]B _:ncqlh bx|p n&{"ma9Y!G|,j3V$z<F_b4;咁):~5 r5c*Z~Zjk6tX|DϪCٰ&PF H AMB\!^\7U@ VV޶\ewpT+l4=ʴ:"i8u$'$)wyRKG!b?O`r=a axW aA`'{bKّVxPc4p !cCVNj5G676ϼBĺ QI(NuW=LGcjeFQd?ܤ@2JK[/6VLhPA8}: o6ۘApsOix`萒fuS _Aq  H\r"Dܥ(RA{ǭ_@ܾCٔvju<6@?PvL+Q &=?jg? ]\Z+qLgҟOwXk3h*-^ g` rW?A6e(l~ ezC :jK[HK?v%"/}by'a\U(oGNaWNHUHNې ƶSڄ⺚g gOMdC)K:/;R߮{jb KOiwͼ]ywc90n DtǭNNSuFgw8NrJ5?q! ,c-kvۆWqz50+G[bO}G|.jW$x6vcT'in\ 7_n`|"`ӫ0*`χ ĠjtO t2AvK8$.l2x8eN2-^;015W%Q9)Dte5Fg>#s0QV}D O sJG?#k$%K7&̗݉/~Zis Dv"#jK\0^^ɘ&2dS.19-bfuaILzmRc~o? Sy@d6WYqRMYB9D"h,ĸF@k P30<ə+exH05Ky1[0S`}4/?6a.Uxi [va7U<|*Q*CCo*xG[~g\ [}h\PT]'76e{Vɽ:K ̈ /D[m<.g[d1(;/+eAżFG FDsb]R?* >}+|2]̻u?&2bPTpdGL5_$H[qἵu~4sܬt|5%pNd R+(`{}T?}Z.М0 uJMSls^H駾 NNu  6|$e>송kW$΅`i_%;kěW66  42 !}}qx*oU k@;C=+ 5['+?oa*Rʹq&\u1(Z2lBZE*iVKܴejfPeGl񞅡04UFC׵Ӗa0!1K}_WyrW3+) f(SXD)vʢ&K=m~0 ~`VVõv.LLxVGW;$1C= +5#}򺓪tq*VH7}0Q ~1零,}y=Rr,Ӻ*WJk$Ho""J:fёf9)Sx{G>XʪKEO ͌(H^yldƃr$:>.Q3K~ő .m䖟BGs1 Q0eU ! oa` ,8}(Ty'gƸF,=IEsJ͚资YwӳLcA hx*}Æ"Hb}m3sa67~D!"}gc?]꺸 `UM1%W+dʧ'#SxBW*h9#V)DbsʩFI2ܑo=+T^F5<|:b*%ga:ԕ;MXt;zO$k0V^+` jr\KN}yGsj\Q-s/s_-B@Dp:a@x!,+ w[H'-4 bv J޾`V˽s~P{@Ͻ^w Omt%Z*h +,WR>ḯ;_,b|?BB#,Tzt/"5c$l b':D@#Eha6£myhdq'xvތ7zuZbn:r`zW''Z@[HA}vϗ|E .H5|$;LU+ҏs߈GZ]aN[$٦#Ku`j.XT)uؤgnj`՘M?| rD<Мc&)z{ mkq #)=g1%M"@GjqEFv4F^}KQ-m:FS;+E+^/^3<_7gUoZ]||]-NG'I5\X"脑&3*C1fJ }賢´ObDʏHRcsrgI=9)FQۤ*N@Xt=5c(r?,*8T(c`'RE`AZ+Khuc<ǿtHLF҉em*": #efqnِv7ED#iY&YgGΤ*rpXUZUeچE;v%5+#o^ݼ|z+r;K $#HVFr͂:Zт' Cdb\"RU£׏lFE7 b t# Fdj%Ӡ@C ss\}(ex9ʟȲъǣ'Pז9tO0|!(5EunVrP^hMߒ+Ȫi>mIB#cuvd=5v^SBl "P,FDPjWXx'I zIU {\%4Ӝ܋C~:"+Ye?O]՘c{co9i z#lVOu-i!(=R@8 B(8>VD#ىZ5~0tt -G$ xƆ<,Ʃ@9ȇFF@Vw_JBe=h&\0kJȡF 3Jj?avEOI=Oh[F}L[rxKe}VH؂tLa̖5pKsj@%&4!8ȪI۵SjxAbxC_RNS*s \ѡ((\oG&^0ZV#OqokZ cx`̜BM4Md/IB(3A# WH$);brmo>c+^μ6(Xjܭ[uV>פl}6iJH4d[wmU0#T Ns ]^e$U?hA* 9= &_t` iY=|\#?K2 -.GP Sha PxaHzY穙;䬢J<4mc}mYomHj^An2}0jv֩7Kq_ʳ9$^4 !Ȩ|W8ut\Ģފ/% zJg"?|5se * 橎T؄\HS7HBȓR &?;֝jq(uݗL\F1n xPݏ8b~`YY118."7VYZ"':ϯXMXFN*C_=Vi d d3K Hwx&St|c4.KuƆ2`nO!ɂEjvYiOîAg|#4+bJ! 0?dg<͡\X ~s$ԋ /J|Fadz# Pvx=HU4!t;W ƝjU@HGZq^+ġÿ2Օ'jh)~L8CMj\>hUz$")oO@[8dVe@+y}ް$~rFPRu+SBMKcw*/h:kX'^__loYP3̐>Pss4tdq#+po1}zp-優ةpp!Fq/mEӉ)H>0 YZEpi/data/testisDK.rda0000644000176200001440000005523212531361106014127 0ustar liggesusersxBHPł%6PQDiQDQPƂbADZH %RB%!vmo.w|UDg BQ<kݹn&glLL1'W ;b4 _‹Op=11'fFVk@ `qhϠ=6ڋh/6 ګh[ѶZh^O{m[iD{3m{[h;*;Voe#p'`dNb.fnNba^e>c3Ýp6?+2+211;3;3{0{0>ɌOf|2`l6amis`mamamio k kLxgXg. <&<<2晖6ϰ6ϰ6ϰ6ϰ6ϴyyye33ͳl<<<<2晖6ϰ6ϰ]yMyye333-mamamamamio k kLxgXgXg<ýyyye333-mama0l @k kLxgXgXgZ<<<<<2晖6ϰ6ϰ6bykLk k kLxgXgXgZ<ڶٟlk:dm=`[;3ƶCmm[lCڶٓmk:dlk:dֶuȞa[!{mm[lmm[Emֶu^a[!ʶ3zk@}DldfU?y"Y9w/4m*R:9h_*hsH3r‡wtqR]"|~\9y_V㴶n:M.XmGǪǨ|7II'Y8lr[~rmtzo"mF:omLJwa9GzHa++oEnm4J5q G⮶~U|dh7%J[;[WYd--th:/#v)oGñn{ܿ-BwkI]s\6rU=-h[y'uݢC8U,C>7 -Kᣝ79R=D{~",qMwV~4͓DA(5m-VsW47CWK 5VKdK_V|j}mkw-֟S#d[s\t|5V;8\h.oo^ޔ(NJ[7+=lpfVu_sK=`ky]ڎ_MGuNk)R8)uqRٴq~p-z#U{'*E;XozXoqhugj:_~=?O:퟾Զ=C\yfH|_8"˫o1!oV/n|w:V"ѹ8)l|󸿮?d~\UwMH'v7[6I6>/88|>/98!D{f5~#\h_G[HnoÞu yھo㸿>%beݽ@ K[?+ZQ,j߿G r+G6K9|G;q[#-ҏLҿgKVWKaQ>چڱH[7K;8l{$}$N R\3t eG_tqlJ_o8RkYE}jXwmrqW~r6qdxu=N ˜H:pY}?WK?>WlVvP:߶E f[\Ye>#Gx"G_d\:m^#Z{G*n|^+o7Zq[qkIӑjr<9^Ww[uG:oHǝ:V~Em{ RR8A2<<5i-Uyh:E߳3hFHhzבk6od9? dn#6›2V> bNm~eZ=znI'wpy6㭮cr|M~Q#כnJ¯|EWGdj>Ίg }[WFh~o}-_qc=g+dN!d.DH>VϷ+#Se[Ng6v^:?!p磣7~OޔLgyp@+ΐG{~n5m5mGGھG٬8ƿ)JoEӉC/6A/G2`/rxzG79b-G"6s꣝h?]h!˺)뢬 6!x+[_vq ?j/}dcpT#|Hm?}țeg!<|),Ygʟ[Yؚt<_DN_-Ѹ=R;V=Ɵw.˼[=/2Vz{h߅ICA2ROd>Lַ?WHaYOpIe.+AV{#[Vʹ\#1V[m煣]׏۱sE2;V#G߈"]D/[/IH"a)lGV._{ݨmyG[߽GrG8p1­ y>+H|o1r|+V%h󁇻F6n:-̃FxNVLjޣV31guqۑcUk{j~_(Fl׭he"AG~)_ey1qr8N/WG˓UUr8Z~VILLJVF#533sR{K)>9ǯ/{nد/D:kدFz ?UDE@cEߏ/qxL\RqNu䷕ "}EF<½Po$޷dQ/Q3%>[hDzfvCOEX x X7'Uw<."sF/A5 B- D>oVqe vX3gRMǕ>ܦz@$]UJb"]q[俧eE7:Dݽn+_8 ^Z(}vĸP{Kh's(Էdt2༸7tyO7p[t8}u}_`ׁg![q97B7~9I_V]] P޴ `'$A?`oS^$رD5P^Tё_K'<}eHw7~q/= cK޿#Ѯ~'+^_gskynn' $+?uKLjf.xq"GCvOq_z6$뫡gEC[)e瀏yF$ N4L-Qב_F< vڸ?וI@'\ ?> eO?%Oٛ&;DJp #zX_p^Ѿ~1חmCrp\ 0~ uGmo}_x\px?w&Q1mro~S5 >{Vc$~%DNEcNA|!_x3Y3?/c~O.Ot/nk`b]}D_(@|@O| >p ~6MBkQ!;גaiY迯-7 ?47ǫG goN,zf1̯%ƇGZK|l|z'#Oj*tS|=W<;hW9?x)krJ7JR{ؿ'E⾮p-t] ;|@eGG9yW~z&8ooA|kmWJv(oSu^aWnvoGϮ/p=|V4QwIV~W78V+?CpgTq†{oc۫% ͪ/l% lWv@A?>/uu/_:xu&u&]Zo isB,uƃorRx 菂[*Go|SCW\_7\_yK- :Up=QWGLy z.8u_f(#vtBefuRMܖN>g<|h۠{8Y (܅qQprw4yU۞B6[&y" V._+桜}+/y1[N<]pf=~O} I?Lp8 8߲)ҕicvlmo乐< [8s|@m zksnN&ǭv+O`Ip=lDU"{#vHjk@;yCuT|u?}* +{{ Ûp\( n) O-_> uu EoBz!ORџЮe8y|mx5'~ z3y=<?yDw7t\/f~yhF=h-g7}w_F}_S{c|9v|Oy'{W.LA=R 7E&gysՂwy? ךn=Ys no]3fowHm_ ~nx+yeKc\ 8^3:7[phBUks6^ GAWaR[Ѵx-O|u 2ޚ $>߆|??e1u=_ }Էr'_Sh_⺡`~rL" p/Y[Q5>K#>/F*@g`LuN%,رzyCcn*t9}$l|_˜yjnpPn^]"8_w,EUOn>oFi?О~>=!y;~05r D>z9'(_~m=w zy_g@~ky~ _u삾{.8t8r-E;98vFQ%ҕ?[69 >HOvHpWn' 9}P?G*u==E'1݁4gSΥh7g#w`|s1/QrmgC{n&{&b^Zv.B##>Ep\>.>7!uW^} 8]/(-t>ߘ>rWq+w81n z |8߰-א9\\)w8 K]_unvB:+9y蜘5O8^: 0PP=rƸpUоξ8αr4A..%[ۈp'ݍrwۅ|~3Cpy|-̿81Qu]u#ì ^W}^AKq*p%H?<ީL~߀NY3%a^M~/PߚL7|̓^ 5&㼃7Oؐ/?$[|KvUAh>||S }駓{ڳg|>{)>8.\z}z_r酴{PO p}y=ǫςsvp9 k:ƉzM|گi=R%(hEt-(n;a\?8ޚrV\oV3W$@?.,sS6)SC'=QM<}jvwk[d=# 1w*Kp\|wUӆ 0T7~qTa_dr$7zBy_ ~UCz/Nj ֈ\zy[^|/|{' ׆^<~[08N<]^G4}(G ĝq}>kˈwWu_.ΧTgo?烯=/繈u:ΣSqzdzH !+۪ oBzٜXtz)-lFO雐nH$=h0<ݽu'ch+p<1~*8?hcR,[,O5eyobx*bV*e'~`KCwoDzA;{`,ɳyb+NoD#~}nrM`WLEApv^SOWLbg6J,E|^^CcU<S*ZU~"x՞>z9n`՟^{f|[^u>@~BX__ =y ;k=Q` xC;~g8w{п'.|;gy>--FZ2*:{RXx 9Ovcߖ)8ν}ޔ"9anHG=ag鋕[/oٰM?ڟ6<%mɞև~@_fK4:|k \2k;<SdY*zFؽm}gD# \?VZ).$_1~3ӻS.TsMNnNE^g5[s ||컁\rvho*yWซL?\L?)rܯ|RSl:y'<^6y?G& .> EPP奄/?#kD,;y s:b\lloV®eX-3cW9=-އǎE;nyt~%6 ]߽ï F;v {jzM'!yh5OhT<_܎qEERXy">k1g CG~w=zxwP@XK8p {@~EE?=c!eNL2.xm:zy9t88"TNO#}/O}#}XiU؟M3 _s]йfoƸz݂=I~ހ\&ǡ_Nro~_rao߅76HyߥqWs^o2~ ~ eWwoh?״6BpǙ2Vs^ c*{|ZN~׹6Aͦ>9סۚ+_}9K/[ <[ q?Hq}v%˕=Ui;'7~"J+v,x5)~&3s\;= s~w$P$cU8D?"׫~kOo~6tS&T!xU{B>އoY?2]7/@~]_cS: :'Ǔ\ևߏyո6zs~a%|<ۅz~C\ N+G_>>o~|nj?QnJxἏ_ xuΣO ~c+9OL~/sN,]? ~8?VM} q^-8,}~{Rs8mpfkӆ"OE?_G 9w}RpOdpq+ܨ:OK .qmCoBw 8_G$^w ƅuryx>M[\w&q[ݏW^[]@z ZOn~N5?Fzox . >ת~7%Y-8߇2fPN)Xt#NPX7%!\S'GsS{w;??|A>^y/m5yzd>N>O"\o{7|=m{SV|b@"$˯G].Ǘ\3JpX|kh-yC *_+1}X)xt䟳!tzS*x^tyuCprty9~)x^h-j} \)o7o:0ĥJ`x?:\- +8 ~uGOxj0˓n.yg9Ά>G- ~C9 ?C=W1\?=UIT_/q/]^O@{}qmLށ;vMjU,5R/N@ ]y=x<'H@y]yBwI'xP|<#ϣl..Bm?ϻ/υ=Bw;:c97&teߚDsϊ1>Ae6twr*Nx+PKA`/*B&_b;gGѝ<@x֘K; yy `7ww\d=q|ogCߣ>'~)əC!9H<ܜ{Shoh$Mι@^C_? Ὑ݇j;LO|9"\D}|J^~p^N\a`p]Hݹ9<yE?wN-滱7/l>g+CU291/vLjtxw\bIn"w1Cq>]y |\+pUB7Jؘp4< ㄺ ƃ1|SQcOqa%|_8>\-0n_'} xC}G+ >H~1|(\g[zj Ck n%l:c_xoK NNKP﷨hg53 ǻ#6qލr7!+u{?: ].iu ûeߡ5^ۮgm9 bbeo0N_q/IhBcBpFD;\CgC#m܇ms@}'F/x-NA׋7g̹:=~K~O dƣ_abQ  \18\ NBBq5wPq33g"y #+w:0MnrʚT?!bdn^ />;9c }ڔm?[>tV^G=*x4CG[4߁_q˯V>܇¶ &d2ø0^xZ<v 2ד7[OH!`E=>Ԕ ܇P|M_]־'W|;)kz3W: j)u8{{_M=} 1.X*xu1. s qn~6C~8oyQ6̿RzڣBr}rz0<1;>˽S-W]yCrdq_{qyRyw6R*.F,⾢ֽx~YWBޱ0Whx/s҅<2ԡtt 0K_ Rrz)d|o<@;\xUxD&rߘb.$:)ߓ QOs.C{~w!]aQ?[ ޕq":ݜ #3vD<vnC~$?\G;U\~|>^qc2MFz4w}ڻc [",CTr|Hu}gOx3V>U?:/c΀-F:~sV'a.@lÝ('("{ t8\댩Rǣ_T} 3xQ!4ؕqH}`|{ ƗW4 w=p"u ;f`|.Gzd+η#آRwLqV܂ b~flTm7 =gC^zrvK'8u-8?N_j~>sp Ztp} r[&w>q.UMRN |F{˞{uz_~N8V"ȧlNW{d>syo{4ZPOx\9j9y1WӘyNF`]cnx8sfxCE\SU*ysa y깍; s.5l:k;疉"u:x^6uh7,5 (\~8P #-9|oؿ>B!]uz|1xi$$ =n^C!{D}KZfB _F-OhrQh y[m?|6?ׁ(?ys1}}}M]=Eҫ^m[踇~\'ʴ6tT}j6;8v59EWQO ?P8\˝࣌ёu;[tbஐ:pnwIkî |g cKCw,k c=w9y0gkzюr05ep'?;`Ȣ?3=˙ +c:Ƈ1'| qzfwۈpx mG;v^D}t.R^L~s}j!_q?qœwCG[1K6pƉvA;8x/ *z9e_vx.m+x-{EH%'޻e#X;~ǪaAǗM`ԡk)]ǝl[߅8/iUhwKpjPG!L/p!ދg*)l,N c #GD>b>~xђ^>oT|x,Azχ<2lf{7@mb}z| xyᱼQ'&z2 C|<+h_7'żR%M?, r;I~߆Qqu/kK3u\'Lw7tSc~o9_>#-$g}ϒ[W):~zA_pfp*83Y&^L+e]x^yJ :{ŗc|/=M**_vPBX?!s`x | ^BIwI-+ai-:8 :QN軡1 Hd|v36ߘM8 ^#X<|Ã_aL޿^}03UB-SBx=o=3|u߸K}ޮ<7蓇Q<^ nѾ8ʹKr_!IYJM2wۊ;a\uYmzHH6\6ufZCϗ?]F#N̓~S^PG_U0NEvroWkN_c0pO= .O7t8|CK7fƁFQ>O ƒBrqbwFu4<}61;0fX?Bx Px0ҭu Qƭ߃?:rrRos~Os<1oŽ\?=zn~~x8ŵ ~VXȧlJR\Ӛ4SxN"s=uvN3*n.oٗ&f.5#-zxvW;3ny ~ vP9^zƽu:E.@C 5x?8:CݰK3p*GӶPo9x2Cx!]Cޗtyu41FO<"82בcE|!HGȍ@qxȆznE;ϢO|EH^B{>{=z=raLQ\C\ Aqn^Ïޡeg8 bm\Konpxu/y%3y~Ms}wm,i?%LW霋o܃v .}.: |N?*tylԣI3߇+Xq N"wo9ፑޏa6[Y]؅6߃6uR;jI*l_^hC{*^>7^c|Dp2x, np{ccKYJFxH*~ m ?k&(g[5G,c+g2k;P"?_V}uK}~>0uԻbP:UB·x*9Yt碞 ⚈vw~Nw2s'rFp!30(ەc-i[B{·9[+}18n;mekڽ: |cz Ay nڒƋv~'[nތ*2hgov67e-ˡ_O2rz8C 2D‘E QnVׁ)#-\SGcF/>&wo:O@>0_,jOCrRg_^1v~{5s]i^'Wzj7]t˥PA;Ӑ'u:*ėE{ GswWJ&~ŏV }.넵VvsB't].snvytz])V S)fVʺmU"e'<3d=Ԡ,"bNuM׏뾨ӛp8oR!\s}o 󗀛QgXp19OF~~\ÍexlKA!P" .:z=~Hw3#}0n(pQ%Hz; }Q%Qu}>Pjo!?/Yz_u"uE?F?:+?Ι?g1\^*ote(ԣ4+->[(6%mJߋ&眖~}x]lf l1?o9pRQ0|q]+)h?_*x9M'.WF\G+y*F/WG0¹fyY?2LJMŴSwV:8 Fm Qq2 o%3b%74mOjC;D}p# wC?aq?_-x+ g@8ߤ_vzD/a]p랇˃vbQB}~9;fzϳ.{^v(]i7\r qϴ˅NdeG%8nisݬ߷0,Y.I k]f@"t]udy ׍Q/f]l{1~5h_o7zs_;QxMG;cpj8Z%SIй8.¦!8= f|(']Gg^'F'q7-s^qz!kcc'h0.}/㡓Z<{9AxnE?BxZ&WGN<%)LxKW֕{/y~ԛ{bsj^wކzzy?mjc%m:kry ϏSG?٩m%y@gEW7ׇ0JpY҇vN'w5U}a+RQcpƀS|~fDٸ/0 >w6 p*| c>u9*&э݉w=ؒ1}47h50~P_ӊP?/ZOn.C8S\g.CˇAw@dLqxe^3߷1y9P0t;msz=x} as a predictor of \code{stat}=TRUE. } \value{ A list with two components: \item{res}{dataframe with variables \code{sens}, \code{spec}, \code{pvp}, \code{pvn} and name of the test variable. The latter is the unique values of test or linear predictor from the logistic regression in ascending order with -Inf prepended. Since the sensitivity is defined as \eqn{P(test>x)|status=TRUE}, the first row has \code{sens} equal to 1 and \code{spec} equal to 0, corresponding to drawing the ROC curve from the upper right to the lower left corner.} \item{lr}{glm object with the logistic regression result used for construction of the ROC curve} 0, 1 or 2 plots are produced according to the setting of \code{plot}. } \author{Bendix Carstensen, Steno Diabetes Center \& University of Copenhagen, \url{http://bendixcarstensen.com} } \examples{ x <- rnorm( 100 ) z <- rnorm( 100 ) w <- rnorm( 100 ) tigol <- function( x ) 1 - ( 1 + exp( x ) )^(-1) y <- rbinom( 100, 1, tigol( 0.3 + 3*x + 5*z + 7*w ) ) ROC( form = y ~ x + z, plot="ROC" ) } \keyword{manip} \keyword{htest} %\keyword{ROC-curves} %\keyword{sensitivity} %\keyword{specificity} %\keyword{predictive values} Epi/man/splitLexis.Rd0000644000176200001440000000673313751040403014177 0ustar liggesusers\name{splitLexis} \alias{splitLexis} \title{Split follow-up time in a Lexis object} \description{ The \code{splitLexis} function divides each row of a \code{Lexis} object into disjoint follow-up intervals according to the supplied break points. } \usage{ splitLexis(lex, breaks, time.scale, tol=.Machine$double.eps^0.5) } \arguments{ \item{lex}{an object of class \code{Lexis}} \item{breaks}{a vector of break points} \item{time.scale}{the name or number of the time scale to be split} \item{tol}{numeric value >= 0. Intervals shorter than this value are dropped} } \value{ An object of class \code{Lexis} with multiple rows for each row of the argument \code{lex}. Each row of the new \code{Lexis} object contains the part of the follow-up interval that falls inside one of the time bands defined by the break points. The variables representing the various time scales, are appropriately updated in the new \code{Lexis} object. The entry and exit status variables are also updated according to the rule that the entry status is retained until the end of follow-up. All other variables are considered to represent variables that are constant in time, and so are replicated across all rows having the same id value. } \note{ The \code{splitLexis()} function divides follow-up time into intervals using breakpoints that are common to all rows of the \code{Lexis} object. To split a \code{Lexis} object by break points that are unique to each row, use the \code{cut.Lexis} function. } \author{Martyn Plummer} \examples{ # A small bogus cohort xcoh <- structure( list( id = c("A", "B", "C"), birth = c("14/07/1952", "01/04/1954", "10/06/1987"), entry = c("04/08/1965", "08/09/1972", "23/12/1991"), exit = c("27/06/1997", "23/05/1995", "24/07/1998"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) # Convert the character dates into numerical variables (fractional years) xcoh$bt <- cal.yr( xcoh$birth, format="\%d/\%m/\%Y" ) xcoh$en <- cal.yr( xcoh$entry, format="\%d/\%m/\%Y" ) xcoh$ex <- cal.yr( xcoh$exit , format="\%d/\%m/\%Y" ) # See how it looks xcoh # Define as Lexis object with timescales calendar time and age Lcoh <- Lexis( entry = list( per=en ), exit = list( per=ex, age=ex-bt ), exit.status = fail, data = xcoh ) # Default plot of follow-up plot( Lcoh ) # With a grid and deaths as endpoints plot( Lcoh, grid=0:10*10, col="black" ) points( Lcoh, pch=c(NA,16)[Lcoh$lex.Xst+1] ) # With a lot of bells and whistles: plot( Lcoh, grid=0:20*5, col="black", xaxs="i", yaxs="i", xlim=c(1960,2010), ylim=c(0,50), lwd=3, las=1 ) points( Lcoh, pch=c(NA,16)[Lcoh$lex.Xst+1], col="red", cex=1.5 ) # Split time along two time-axes ( x2 <- splitLexis( Lcoh, breaks = seq(1900,2000,5), time.scale="per") ) ( x2 <- splitLexis( x2, breaks = seq(0,80,5), time.scale="age" ) ) str( x2 ) # Tabulate the cases and the person-years summary( x2 ) tapply( status(x2,"exit")==1, list( timeBand(x2,"age","left"), timeBand(x2,"per","left") ), sum ) tapply( dur(x2), list( timeBand(x2,"age","left"), timeBand(x2,"per","left") ), sum ) } \seealso{ \code{\link{timeBand}}, \code{\link{cutLexis}}, \code{\link{mcutLexis}}, \code{\link{summary.Lexis}}} \keyword{manip} Epi/man/transform.Lexis.Rd0000644000176200001440000000777114004310647015142 0ustar liggesusers\name{transform.Lexis} \alias{transform.Lexis} \alias{Relevel.Lexis} \alias{transform.stacked.Lexis} \alias{factorize} \alias{factorize.Lexis} \alias{levels.Lexis} \alias{order.Lexis} \alias{orderLexis} \alias{sortLexis} \title{Transform a Lexis (or stacked.Lexis) object} \description{ Modify a Lexis object. } \usage{ \method{factorize}{Lexis}(x, ...) \method{Relevel}{Lexis}(x, ref, \dots) \method{levels}{Lexis}(x) \method{transform}{Lexis}(`_data`, \dots) \method{transform}{stacked.Lexis}(`_data`, \dots) order.Lexis(x) orderLexis(x) sortLexis(x) } \arguments{ \item{_data}{an object of class \code{Lexis}.} \item{x}{an object of class \code{Lexis}.} \item{ref}{New names (or order) of the factor levels (states) for \code{lex.Cst} and \code{lex.Xst}. Can be a list, in which case some levels are collapsed, see the documentation for \code{\link{Relevel}}. No sanity check for the latter type of operation is undertaken.} \item{\dots}{Additional arguments to be passed to \code{\link{transform.data.frame}}, \code{\link{Relevel.factor}}.} % \code{order} or \code{sort}.} } \details{ The transform method for \code{Lexis} objects works exactly as the method for data frames, but keeps the \code{Lexis} attributes. \code{factorize} transforms the variables \code{lex.Cst} and \code{lex.Xst} to factors with identical sets of levels. \code{Relevel} does the same as \code{\link{Relevel.factor}}, but for both the factors \code{lex.Cst} and \code{lex.Xst} in \code{x}. \code{lex.Cst} and \code{lex.Xst} must be factors with the same levels. They can be made so by \code{factorize}. If \code{ref} is an integer or character vector, the levels of \code{lex.Cst} and \code{lex.Xst} are permuted to match the order of \code{ref}. If \code{ref} is \code{NULL}, as when for example the argument is not passed to the function, the returned object have levels of \code{lex.Cst}, \code{lex.Xst} (and for \code{stacked.Lexis} objects \code{lex.Tr}) shaved down to the actually occurring values; that is, empty levels are discarded. \code{order.Lexis} returns the order of the rows in a Lexis object to sort it by ()\code{lex.id},\code{ts}), where \code{ts} is a timescale in the Lexis object with no \code{NA}s. \code{orderLexis} is just a synonym. \code{sortLexis} returns the Lexis object sorted by (\code{lex.id}, \code{ts}) where \code{ts} is one of the \code{\link{timeScales}} with no \code{NA}s. } \value{ A transformed \code{Lexis} object. The function \code{levels} returns the names of the states (levels of the factors \code{lex.Cst} and \code{lex.Xst}. } \author{Martyn Plummer, Bendix Carstensen} \seealso{\code{\link{Lexis}}, \code{\link{merge.Lexis}}, \code{\link{subset.Lexis}}, \code{\link{subset.stacked.Lexis}}, \code{\link{Relevel}}, \code{\link{transient}}, \code{\link{absorbing}}} \examples{ data( nickel ) nic <- Lexis( data = nickel, id = id, entry = list(age = agein), exit = list(age = ageout, cal = ageout+dob, tfh = ageout-age1st), # Lung cancer deaths end as 2 and other deaths as 1 exit.status = factor((icd > 0) + (icd \%in\% c(162,163)), labels = c("Alive","Dead","Lung") ) ) str( nic ) levels( nic ) nit <- transform( nic, cumex = exposure * (agein - age1st) ) str( nit ) # It is still a Lexis object! summary(nic) # change order of levels nix <- Relevel(nic, c("Alive", "Lung", "Dead")) summary(nix) # change names of levels niw <- Relevel(nix, list("Alive" = 1, "Pulm" = "Lung", "Mort" = "Dead")) summary(niw) boxes(niw, boxpos = TRUE) # combine levels niz <- Relevel(niw, list("Alive", c("Pulm", "Mort")), coll=" \n& ") summary(niz) par( new = TRUE ) boxes(niz, boxpos = TRUE) #stack Lexis object siw <- stack(niw) str(siw) } \keyword{manip} Epi/man/lungDK.Rd0000644000176200001440000000361413751040403013216 0ustar liggesusers\name{lungDK} \alias{lungDK} \docType{data} \title{Male lung cancer incidence in Denmark} \description{ Male lung cancer cases and population riks time in Denmark, for the period 1943--1992 in ages 40--89. } \usage{data(lungDK)} \format{ A data frame with 220 observations on the following 9 variables. \tabular{rl}{ \code{A5}: \tab Left end point of the age interval, a numeric vector. \cr \code{P5}: \tab Left enpoint of the period interval, a numeric vector. \cr \code{C5}: \tab Left enpoint of the birth cohort interval, a numeric vector. \cr \code{up}: \tab Indicator of upper trianges of each age by period rectangle in the Lexis diagram. (\code{up=(P5-A5-C5)/5}). \cr \code{Ax}: \tab The mean age of diagnois (at risk) in the triangle. \cr \code{Px}: \tab The mean date of diagnosis (at risk) in the triangle. \cr \code{Cx}: \tab The mean date of birth in the triangle, a numeric vector. \cr \code{D}: \tab Number of diagnosed cases of male lung cancer. \cr \code{Y}: \tab Risk time in the male population, person-years. \cr } } \details{ Cases and person-years are tabulated by age and date of diagnosis (period) as well as date of birth (cohort) in 5-year classes. Each observation in the dataframe correponds to a triangle in a Lexis diagram. Triangles are classified by age and date of diagnosis, period of diagnosis and date of birth, all in 5-year groupings. } \source{The Danish Cancer Registry and Statistics Denmark. } \references{ For a more thorough exposition of statistical inference in the Lexis diagram, see: B. Carstensen: Age-Period-Cohort models for the Lexis diagram. Statistics in Medicine, 26: 3018-3045, 2007. } \examples{ data( lungDK ) # Draw a Lexis diagram and show the number of cases in it. attach( lungDK ) Lexis.diagram( age=c(40,90), date=c(1943,1993), coh.grid=TRUE ) text( Px, Ax, paste( D ), cex=0.7 ) } \keyword{datasets} Epi/man/lgrep.Rd0000644000176200001440000000221013751040403013132 0ustar liggesusers\name{lgrep} \alias{fgrep} \alias{ngrep} \alias{lgrep} \title{ Convenience versions of grep } \description{ Often you want the elements of a vector (or its names or levels) that meet a certain pattern. But \code{grep} only gives you the position, so these functions are designed to give you that. } \usage{ fgrep( pattern, x, ... ) ngrep( pattern, x, ... ) lgrep( pattern, x, ... ) } \arguments{ \item{pattern}{Pattern searched for.} \item{x}{Object where \code{pattern} is searched. Or in whose \code{names} or \code{levels} attributes \code{pattern} is sought.} \item{...}{Arguments passed on to \code{\link[base]{grep}}.} } \value{Elements of the input \code{x} (\code{fgrep}) or its names attribute (\code{ngrep}) or levels attribute (\code{lgrep}). } \author{Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com} } \seealso{\code{\link{grep}}} \examples{ ff <- factor( ll <- paste( sample( letters[1:3], 20, replace=TRUE ), sample( letters[1:3], 20, replace=TRUE ), sep="" ) ) ff fgrep( "a", ff ) fgrep( "a", ll ) ngrep( "a", ff ) lgrep( "a", ff ) lgrep( "a", ff, invert=TRUE ) } \keyword{ manip } Epi/man/Ns.Rd0000644000176200001440000001453613751040403012417 0ustar liggesusers\name{Ns} \alias{Ns} \title{ Natural splines - (cubic splines linear beyond outermost knots) with convenient specification of knots and possibility of centering, detrending and clamping. } \description{ This function is partly for convenient specification of natural splines in practical modeling. The convention used is to take the smallest and the largest of the supplied knots as boundary knots. It also has the option of centering the effects provided at a chosen reference point as well as projecting the columns on the orthogonal space to that spanned by the intercept and the linear effect of the variable, and finally fixing slopes beyond boundary knots (clamping). } \usage{ Ns( x, ref = NULL, df = NULL, knots = NULL, intercept = FALSE, Boundary.knots = NULL, fixsl = c(FALSE,FALSE), detrend = FALSE ) } \arguments{ \item{x}{A variable.} \item{ref}{Scalar. Reference point on the \code{x}-scale, where the resulting effect will be 0.} \item{df}{degrees of freedom.} \item{knots}{knots to be used both as boundary and internal knots. If \code{Boundary.knots} are given, this will be taken as the set of internal knots.} \item{intercept}{Should the intercept be included in the resulting basis? Ignored if any of \code{ref} or \code{detrend} is given.} \item{Boundary.knots}{The boundary knots beyond which the spline is linear. Defaults to the minimum and maximum of \code{knots}.} \item{fixsl}{Specification of whether slopes beyond outer knots should be fixed to 0. \code{FALSE} correponds to no restriction; a curve with 0 slope beyond the upper knot is obtained using \code{c(FALSE,TRUE)}. Ignored if \code{!(detrend==FALSE)}.} \item{detrend}{If \code{TRUE}, the columns of the spline basis will be projected to the orthogonal of \code{cbind(1,x)}. Optionally \code{detrend} can be given as a vector of non-negative numbers og length \code{length(x)}, used to define an inner product as \code{diag(detrend)} for projection on the orthogonal to \code{cbind(1,x)}. The default is projection w.r.t. the inner product defined by the identity matrix.} } \value{ A matrix of dimension c(length(x),df) where either \code{df} was supplied or if \code{knots} were supplied, \code{df = length(knots) - 1 + intercept}. \code{Ns} returns a spline basis which is centered at \code{ref}. \code{Ns} with the argument \code{detrend=TRUE} returns a spline basis which is orthogonal to \code{cbind(1,x)} with respect to the inner product defined by the positive definite matrix \code{diag(detrend)} (an assumption which is checked). Note the latter is data dependent and therefore making predictions with a \code{newdata} argument will be senseless. } \author{ Bendix Carstensen \email{b@bxc.dk}, Lars Jorge D\'iaz, Steno Diabetes Center Copenhagen. } \note{ The need for this function is primarily from analysis of rates in epidemiology and demography, where the dataset are time-split records of follow-up, and the range of data therefore rarely is of any interest (let alone meaningful). In Poisson modeling of rates based on time-split records one should aim at having the same number of \emph{events} between knots, rather than the same number of observations. } \examples{ require(splines) require(stats) require(graphics) ns( women$height, df = 3) Ns( women$height, knots=c(63,59,71,67) ) # Gives the same results as ns: summary( lm(weight ~ ns(height, df = 3), data = women) ) summary( lm(weight ~ Ns(height, df = 3), data = women) ) # Get the diabetes data and set up as Lexis object data(DMlate) DMlate <- DMlate[sample(1:nrow(DMlate),500),] dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) # Split follow-up in 1-year age intervals dms <- splitLexis( dml, time.scale="Age", breaks=0:100 ) summary( dms ) # Model age-specific rates using Ns with 6 knots # and period-specific RRs around 2000 with 4 knots # with the same number of deaths between each pair of knots n.kn <- 6 ( a.kn <- with( subset(dms,lex.Xst=="Dead"), quantile( Age+lex.dur, probs=(1:n.kn-0.5)/n.kn ) ) ) n.kn <- 4 ( p.kn <- with( subset( dms, lex.Xst=="Dead" ), quantile( Per+lex.dur, probs=(1:n.kn-0.5)/n.kn ) ) ) m1 <- glm( lex.Xst=="Dead" ~ Ns( Age, kn=a.kn ) + Ns( Per, kn=p.kn, ref=2000 ), offset = log( lex.dur ), family = poisson, data = dms ) # Plot estimated age-mortality curve for the year 2005 and knots chosen: nd <- data.frame( Age=seq(40,100,0.1), Per=2005, lex.dur=1000 ) par( mfrow=c(1,2) ) matplot( nd$Age, ci.pred( m1, newdata=nd ), type="l", lwd=c(3,1,1), lty=1, col="black", log="y", ylab="Mortality rates per 1000 PY", xlab="Age (years)", las=1, ylim=c(1,1000) ) rug( a.kn, lwd=2 ) # Clamped Age effect to the right of rightmost knot. m1.c <- glm( lex.Xst=="Dead" ~ Ns( Age, kn=a.kn, fixsl=c(FALSE,TRUE) ) + Ns( Per, kn=p.kn, ref=2000 ), offset = log( lex.dur ), family = poisson, data = dms ) # Plot estimated age-mortality curve for the year 2005 and knots chosen. matplot( nd$Age, ci.pred( m1.c, newdata=nd ), type="l", lwd=c(3,1,1), lty=1, col="black", log="y", ylab="Mortality rates per 1000 PY", xlab="Age (years)", las=1, ylim=c(1,1000) ) rug( a.kn, lwd=2 ) par( mfrow=c(1,1) ) # Including a linear Age effect of 0.05 to the right of rightmost knot. m1.l <- glm( lex.Xst=="Dead" ~ Ns( Age, kn=a.kn, fixsl=c(FALSE,TRUE) ) + Ns( Per, kn=p.kn, ref=2000 ), offset = log( lex.dur ) + pmax( Age, max( a.kn ) ) * 0.05, family = poisson, data = dms ) # Plot estimated age-mortality curve for the year 2005 and knots chosen. nd <- data.frame(Age=40:100,Per=2005,lex.dur=1000) matplot( nd$Age, ci.pred( m1.l, newdata=nd ), type="l", lwd=c(3,1,1), lty=1, col="black", log="y", ylab="Mortality rates per 1000 PY", xlab="Age (years)", las=1, ylim=c(1,1000) ) rug( a.kn, lwd=2 ) } \keyword{regression} Epi/man/Lexis.Rd0000644000176200001440000001703613751040403013121 0ustar liggesusers\name{Lexis} \alias{Lexis} \title{Create a Lexis object} \description{ Create an object of class \code{Lexis} to represent follow-up in multiple states on multiple time scales. } \usage{ Lexis( entry, exit, duration, entry.status = 0, exit.status = 0, id, data, merge=TRUE, states, notes=TRUE, tol=.Machine$double.eps^0.5, keep.dropped=FALSE ) } \arguments{ \item{entry}{a named list of entry times. Each element of the list is a numeric variable representing the entry time on the named time scale. All time scales must have the same units (e.g. years). The names of the timescales must be different from any column name in \code{data}.} \item{exit}{a named list of exit times.} \item{duration}{a numeric vector giving the duration of follow-up.} \item{entry.status}{a vector or a factor giving the status at entry} \item{exit.status}{a vector or factor giving status at exit. Any change in status during follow-up is assumed to take place exactly at the exit time.} \item{id}{a vector giving a unique identity value for each person represented in the Lexis object. Defaults to \code{1:nrow(data)}} \item{data}{an optional data frame, list, or environment containing the variables. If not found in \code{data}, the variables are taken from the environment from which \code{Lexis} was called.} \item{merge}{a logical flag. If \code{TRUE} then the \code{data} argument will be coerced to a data frame and then merged with the resulting \code{Lexis} object.} \item{states}{A vector of labels for the states. If given, the state variables \code{lex.Cst} and \code{lex.Xst} are returned as factors with identical levels attributes equal to \code{states}.} \item{notes}{Logical. Should notes on entry states and time be given.} \item{tol}{Numerical tolerance for follow-up time. Rows with duration less than this value are automatically dropped.} \item{keep.dropped}{Logical. Should dropped rows from \code{data} be saved as an attribute with the object for inspection?} } \details{ The analysis of long-term population-based follow-up studies typically requires multiple time scales to be taken into account, such as age, calender time, or time since an event. A \code{Lexis} object is a data frame with additional attributes that allows these multiple time dimensions of follow-up to be managed. Separate variables for current end exit state allows representation of multistate data. Lexis objects are named after the German demographer Wilhelm Lexis (1837-1914), who is credited with the invention of the "Lexis diagram" for representing population dynamics simultaneously by several timescales. The \code{Lexis} function can create a minimal \code{Lexis} object with only those variables required to define the follow-up history in each row. Additional variables can be merged into the \code{Lexis} object using the \code{merge} method for \code{Lexis} objects. The latter is the default. There are also \code{merge}, \code{subset} and \code{transform} methods for \code{Lexis} objects. They work as the corresponding methods for data-frames but ensures that the result is a \code{Lexis} object. } \note{ Only two of the three arguments \code{entry}, \code{exit} and \code{duration} need to be given. If the third parameter is missing, it is imputed. \code{entry}, \code{exit} must be numeric, using \code{\link{Date}} variables will cause some of the utilities to crash. Transformation by \code{\link{cal.yr}} is recommended. If only either \code{exit} or \code{duration} are supplied it is assumed that \code{entry} is 0. This is only meaningful (and therefore checked) if there is only one timescale. If any of \code{entry.status} or \code{exit.status} are of mode character, they will both be converted to factors. If \code{entry.status} is not given, then its class is automatically set to that of \code{exit.status}. If \code{exit.status} is a character or factor, the value of \code{entry.status} is set to the first level. This may be highly undesirable, and therefore noted. For example, if \code{exit.status} is character the first level will be the first in the alphabetical ordering; slightly unfortunate if values are \code{c("Well","Diseased")}. If \code{exit.status} is logical, the value of \code{entry.status} set to \code{FALSE}. If \code{exit.status} is numeric, the value of \code{entry.status} set to 0. If \code{entry.status} or \code{exit.status} are factors or character, the corresponding state variables in the returned \code{Lexis} object, \code{lex.Cst} and \code{lex.Xst} will be (unordered) factors with identical set of levels, namely the union of the levels of \code{entry.status} and \code{exit.status}. } \value{ An object of class \code{Lexis}. This is represented as a data frame with a column for each time scale (with names equal to the union of the names of \code{entry} and \code{exit}), and additional columns with the following names: \item{lex.id}{Identification of the persons.} \item{lex.dur}{Duration of follow-up.} \item{lex.Cst}{Entry status (\code{C}urrent \code{st}ate), i.e. the state in which the follow up takes place.} \item{lex.Xst}{Exit status (e\code{X}it \code{st}ate), i.e. that state taken up after \code{dur} in \code{lex.Cst}.} If \code{merge=TRUE} (the default) then the \code{Lexis} object will also contain all variables from the \code{data} argument. } \author{Martyn Plummer with contributions from Bendix Carstensen} \examples{ # A small bogus cohort xcoh <- structure( list( id = c("A", "B", "C"), birth = c("14/07/1952", "01/04/1954", "10/06/1987"), entry = c("04/08/1965", "08/09/1972", "23/12/1991"), exit = c("27/06/1997", "23/05/1995", "24/07/1998"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) # Convert the character dates into numerical variables (fractional years) xcoh <- cal.yr( xcoh, format="\%d/\%m/\%Y", wh=2:4 ) # See how it looks xcoh str( xcoh ) # Define a Lexis object with timescales calendar time and age Lcoh <- Lexis( entry = list( per=entry ), exit = list( per=exit, age=exit-birth ), exit.status = fail, data = xcoh ) Lcoh # Using character states may have undesired effects: xcoh$Fail <- c("Dead","Well","Dead") Lexis( entry = list( per=entry ), exit = list( per=exit, age=exit-birth ), exit.status = Fail, data = xcoh ) # ...unless you order the levels correctly ( xcoh$Fail <- factor( xcoh$Fail, levels=c("Well","Dead") ) ) Lexis( entry = list( per=entry ), exit = list( per=exit, age=exit-birth ), exit.status = Fail, data = xcoh ) } \seealso{ \code{\link{plot.Lexis}}, \code{\link{splitLexis}}, \code{\link{cutLexis}}, \code{\link{mcutLexis}}, \code{\link{rcutLexis}}, \code{\link{addCov.Lexis}}, % \code{\link{glm.Lexis}}, % \code{\link{gam.Lexis}}, % \code{\link{coxph.Lexis}}, \code{\link{merge.Lexis}}, \code{\link{subset.Lexis}}, \code{\link{cbind.Lexis}}, \code{\link{rbind.Lexis}}, \code{\link{transform.Lexis}}, \code{\link{summary.Lexis}}, \code{\link{timeScales}}, \code{\link{timeBand}}, \code{\link{entry}}, \code{\link{exit}}, \code{\link{transient}}, \code{\link{absorbing}}, \code{\link{dur}} } \keyword{survival} \keyword{manip} Epi/man/Y.dk.Rd0000644000176200001440000000267113751040403012641 0ustar liggesusers\name{Y.dk} \alias{Y.dk} \docType{data} \title{Population risk time in Denmark} \description{ Risk time (person-years) in the Danish population, classified by sex, age, period and date of birth in 1-year classes. This corresponds to triangles in a Lexis diagram. } \usage{data(Y.dk)} \format{ A data frame with 13860 observations on the following 6 variables. \describe{ \item{\code{sex}}{Sex. 1:males, 2:females} \item{\code{A}}{One-year age class} \item{\code{P}}{Period} \item{\code{C}}{Birth cohort} \item{\code{Y}}{Person-years} \item{\code{upper}}{Indicator of upper triangle in the Lexis diagram} } } \details{ The risk time is computed from the population size figures in \code{\link{N.dk}}, using the formulae devised in: B. Carstensen: Age-period-cohort models for the Lexis diagram. Statistics in Medicine, 10; 26(15):3018-45, 2007. } \source{ \url{http://www.statistikbanken.dk/statbank5a/SelectTable/omrade0.asp?SubjectCode=02&PLanguage=1&ShowNews=OFF} } \examples{ data(Y.dk) str(Y.dk) # Compute mean age, period for the triangles attach( Y.dk ) age <- A + (1+upper)/3 per <- P + (2-upper)/3 # Plot a Lexis diagram library( Epi ) Lexis.diagram( age=c(0,10), date=c(1990,2000), coh.grid=TRUE, int=1 ) box() # Print the person-years for males there text( per[sex==1], age[sex==1], formatC( Y[sex==1]/1000, format="f", digits=1 ) ) } \keyword{datasets} Epi/man/Icens.Rd0000644000176200001440000000673513751040403013102 0ustar liggesusers\name{Icens} \alias{Icens} \alias{print.Icens} \title{ Fits a regression model to interval censored data. } \description{ The models fitted assumes a piecewise constant baseline rate in intervals specified by the argument \code{breaks}, and for the covariates either a multiplicative relative risk function (default) or an additive excess risk function. } \usage{ Icens( first.well, last.well, first.ill, formula, model.type=c("MRR","AER"), breaks, boot=FALSE, alpha=0.05, keep.sample=FALSE, data ) } \arguments{ \item{first.well}{Time of entry to the study, i.e. the time first seen without event. Numerical vector.} \item{last.well}{Time last seen without event. Numerical vector.} \item{first.ill}{Time first seen with event. Numerical vector.} \item{formula}{Model formula for the log relative risk.} \item{model.type}{Which model should be fitted.} \item{breaks}{Breakpoints between intervals in which the underlying timescale is assumed constant. Any observation outside the range of \code{breaks} is discarded.} \item{boot}{Should bootstrap be performed to produce confidence intervals for parameters. If a number is given this will be the number of bootsrap samples. The default is 1000.} \item{alpha}{1 minus the confidence level.} \item{keep.sample}{Should the bootstrap sample of the parameter values be returned?} \item{data}{Data frame in which the times and formula are interpreted.} } \details{ The model is fitted by calling either \code{\link{fit.mult}} or \code{\link{fit.add}}. } \value{ An object of class \code{"Icens"}: a list with three components: \item{rates}{A glm object from a binomial model with log-link, estimating the baseline rates, and the excess risk if \code{"AER"} is specfied.} \item{cov}{A glm object from a binomial model with complementary log-log link, estimating the log-rate-ratios. Only if \code{"MRR"} is specfied.} \item{niter}{Nuber of iterations, a scalar} \item{boot.ci}{If \code{boot=TRUE}, a 3-column matrix with estimates and 1-\code{alpha} confidence intervals for the parameters in the model.} \item{sample}{A matrix of the parameterestimates from the bootstrapping. Rows refer to parameters, columns to bootstrap samples.} } \references{ B Carstensen: Regression models for interval censored survival data: application to HIV infection in Danish homosexual men. Statistics in Medicine, 15(20):2177-2189, 1996. CP Farrington: Interval censored survival data: a generalized linear modelling approach. Statistics in Medicine, 15(3):283-292, 1996. } \author{ Martyn Plummer, \email{martyn.plummer@r-project.org}, Bendix Carstensen, \email{b@bxc.dk} } \seealso{ \code{\link{fit.add}} \code{\link{fit.mult}} } \examples{ data( hivDK ) # Convert the dates to fractional years so that rates are # expressed in cases per year for( i in 2:4 ) hivDK[,i] <- cal.yr( hivDK[,i] ) m.RR <- Icens( entry, well, ill, model="MRR", formula=~pyr+us, breaks=seq(1980,1990,5), data=hivDK) # Currently the MRR model returns a list with 2 glm objects. round( ci.lin( m.RR$rates ), 4 ) round( ci.lin( m.RR$cov, Exp=TRUE ), 4 ) # There is actually a print method: print( m.RR ) m.ER <- Icens( entry, well, ill, model="AER", formula=~pyr+us, breaks=seq(1980,1990,5), data=hivDK) # There is actually a print method: print( m.ER ) } \keyword{ models } \keyword{ regression } \keyword{ survival } Epi/man/detrend.Rd0000644000176200001440000000265613751040403013464 0ustar liggesusers\name{detrend} \alias{detrend} \alias{decurve} \title{ Projection of a model matrix on the orthogonal complement of a trend or curvature.} \description{ The columns of a model matrix \code{M} is projected on the orthogonal complement to the matrix \code{(1,t)}, resp. \code{(1,t,t^2)}. Orthogonality is w.r.t. an inner product defined by the positive definite matrix matrix \code{diag(weight)}. Non-diagonal matrices defining the inner product is not supported. } \usage{ detrend( M, t, weight = rep(1, nrow(M)) ) decurve( M, t, weight = rep(1, nrow(M)) ) } \arguments{ \item{M}{A model matrix.} \item{t}{The trend defining a subspace. A numerical vector of length \code{nrow(M)}.} \item{weight}{ Weights defining the inner product of vectors \code{x} and \code{y} as \code{sum(x*w*y)}. A numerical vector of length \code{nrow(M)}, defaults to a vector of \code{1}s. Must be all non-negative.} } \details{ The functions are intended to be used in construction of particular parametrizations of age-period-cohort models. } \value{ \code{detrend} returns full-rank matrix with columns orthogonal to \code{(1,t)}; \code{decurve} returns full-rank matrix with columns orthogonal to \code{(1,t,t^2)}. } \author{ Bendix Carstensen, Steno Diabetes Center Copenhagen, \url{http://bendixcarstensen.com}, with essential help from Peter Dalgaard. } \seealso{ \code{\link{projection.ip}} } \keyword{array} Epi/man/births.Rd0000644000176200001440000000165513751040403013330 0ustar liggesusers\name{births} \alias{births} \docType{data} \title{Births in a London Hospital} \description{ Data from 500 singleton births in a London Hospital } \usage{data(births)} \format{ A data frame with 500 observations on the following 8 variables. \tabular{rl}{ \code{id}: \tab Identity number for mother and baby. \cr \code{bweight}: \tab Birth weight of baby. \cr \code{lowbw}: \tab Indicator for birth weight less than 2500 g. \cr \code{gestwks}: \tab Gestation period. \cr \code{preterm}: \tab Indicator for gestation period less than 37 weeks. \cr \code{matage}: \tab Maternal age. \cr \code{hyp}: \tab Indicator for maternal hypertension. \cr \code{sex}: \tab Sex of baby: 1:Male, 2:Female. \cr } } \source{ Anonymous } \references{ Michael Hills and Bianca De Stavola (2002). A Short Introduction to Stata 8 for Biostatistics, Timberlake Consultants Ltd } \examples{ data(births) } \keyword{datasets} Epi/man/nickel.Rd0000644000176200001440000000233113751040403013272 0ustar liggesusers\name{nickel} \alias{nickel} \docType{data} \title{A Cohort of Nickel Smelters in South Wales} \description{ The \code{nickel} data frame has 679 rows and 7 columns. The data concern a cohort of nickel smelting workers in South Wales and are taken from Breslow and Day, Volume 2. For comparison purposes, England and Wales mortality rates (per 1,000,000 per annum) from lung cancer (ICDs 162 and 163), nasal cancer (ICD 160), and all causes, by age group and calendar period, are supplied in the dataset \code{\link{ewrates}}. } \format{ This data frame contains the following columns: \tabular{rl}{ \code{id}: \tab Subject identifier (numeric) \cr \code{icd}: \tab ICD cause of death if dead, 0 otherwise (numeric) \cr \code{exposure}: \tab Exposure index for workplace (numeric) \cr \code{dob}: \tab Date of birth (numeric) \cr \code{age1st}: \tab Age at first exposure (numeric) \cr \code{agein}: \tab Age at start of follow-up (numeric) \cr \code{ageout}: \tab Age at end of follow-up (numeric) \cr } } \source{ Breslow NE, and Day N, Statistical Methods in Cancer Research. Volume II: The Design and Analysis of Cohort Studies. IARC Scientific Publications, IARC:Lyon, 1987. } \examples{ data(nickel) str(nickel) } \keyword{datasets} Epi/man/ci.cum.Rd0000644000176200001440000001220713751040403013206 0ustar liggesusers\name{ci.cum} \alias{ci.cum} \alias{ci.surv} \title{ Compute cumulative sum of estimates. } \description{ Computes the cumulative sum of parameter functions and the standard error of it. Used for computing the cumulative rate, or the survival function based on a \code{glm} with parametric baseline. } \usage{ ci.cum( obj, ctr.mat = NULL, subset = NULL, intl = 1, alpha = 0.05, Exp = TRUE, ci.Exp = FALSE, sample = FALSE ) ci.surv( obj, ctr.mat = NULL, subset = NULL, intl = 1, alpha = 0.05, Exp = TRUE, sample = FALSE ) } \arguments{ \item{obj}{A model object (of class \code{lm}, \code{glm}. } \item{ctr.mat}{Matrix or data frame. If \code{ctr.mat} is a matrix, it should be a contrast matrix to be multiplied to the parameter vector, i.e. the desired linear function of the parameters. If it is a data frame it should have columns corresponding to a prediction data frame for \code{obj}, see details for \code{\link{ci.lin}}.} \item{subset}{ Subset of the parameters of the model to which a matrix \code{ctr.mat} should be applied. } \item{intl}{ Interval length for the cumulation. Either a constant or a numerical vector of length \code{nrow(ctr.mat)}. } \item{alpha}{ Significance level used when computing confidence limits. } \item{Exp}{ Should the parameter function be exponentiated before it is cumulated?} \item{ci.Exp}{ Should the confidence limits for the cumulative rate be computed on the log-scale, thus ensuring that exp(-cum.rate) is always in [0,1]?} \item{sample}{Should a sample of the original parameters be used to compute a cumulative rate?} } \details{ The purpose of this function is to the compute cumulative rate (integrated intensity) at a set of points based on a model for the rates. \code{ctr.mat} is a matrix which, when premultiplied to the parameters of the model returns the (log)rates at a set of increasing time points. If log-rates are returned from the model, the they should be exponentiated before cumulated, and the variances computed accordingly. Since the primary use is for log-linear Poisson models the \code{Exp} parameter defaults to TRUE. Each row in the object supplied via \code{ctr.mat} is assumed to represent a midpoint in an interval. \code{ci.cum} will then return the cumulative rates at the \emph{end} of these intervals. \code{ci.surv} will return the survival probability at the \emph{start} of each of these intervals, assuming the the first interval starts at 0 - the first row of the result is \code{c(1,1,1)}. The \code{ci.Exp} argument ensures that the confidence intervals for the cumulative rates are always positive, so that exp(-cum.rate) is always in [0,1]. } \value{ A matrix with 3 columns: Estimate, lower and upper c.i. and standard error, unless \code{se=TRUE}, in which case the standard error is returned too. If \code{sample} is TRUE, a sampled vector is returned, if \code{sample} is numeric a matrix with \code{sample} columns is returned, each column a cumulative rate based on a random sample from the distribution of the parameter estimates. \code{ci.surv} returns a 3 column matrix with estimate, lower and upper confidence interval. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ See also \code{\link{ci.lin}}, \code{\link{ci.pred}} } \examples{ # Packages required for this example library( splines ) library( survival ) data( lung ) par( mfrow=c(1,2) ) # Plot the Kaplan-meier-estimator plot( survfit( Surv( time, status==2 ) ~ 1, data=lung ) ) # Declare data as Lexis lungL <- Lexis( exit=list(tfd=time), exit.status=(status==2)*1, data=lung ) summary( lungL ) # Split the follow-up every 10 days sL <- splitLexis( lungL, "tfd", breaks=seq(0,1100,10) ) summary( sL ) # Fit a Poisson model with a natural spline for the effect of time (left # end points of intervals are used as covariate) mp <- glm( cbind(lex.Xst==1,lex.dur) ~ Ns(tfd,knots=c(0,50,100,200,400,700)), family=poisreg, data=sL ) # mp is now a model for the rates along the time scale tfd # prediction data frame for select time points on this time scale nd <- data.frame( tfd = seq(5,995,10) ) # *midpoints* of intervals Lambda <- ci.cum ( mp, nd, intl=10 ) surv <- ci.surv( mp, nd, intl=10 ) # Put the estimated survival function on top of the KM-estimator # recall the ci.surv return the survival at *start* of intervals matshade( nd$tfd-5, surv, col="Red", alpha=0.15 ) # Extract and plot the fitted intensity function lambda <- ci.pred( mp, nd )*365.25 # mortality matshade( nd$tfd, lambda, log="y", ylim=c(0.2,5), plot=TRUE, xlab="Time since diagnosis", ylab="Mortality per year" ) # same thing works with gam from mgcv library( mgcv ) mg <- gam( cbind(lex.Xst==1,lex.dur) ~ s(tfd), family=poisreg, data=sL ) matshade( nd$tfd-5, ci.surv( mg, nd, intl=10 ), plot=TRUE, xlab="Days since diagnosis", ylab="P(survival)" ) matshade( nd$tfd , ci.pred( mg, nd )*365.25 , plot=TRUE, log="y", xlab="Days since diagnosis", ylab="Mortality per 1 py" ) } \keyword{models} \keyword{regression} Epi/man/occup.Rd0000644000176200001440000000333313751040403013141 0ustar liggesusers\name{occup} \alias{occup} \docType{data} \title{ A small occupational cohort } \description{This is the data that is behind the illustrative Lexis diagram in Breslow & Day's book on case-control studies.} \usage{data(occup)} \format{ A data frame with 13 observations on the following 4 variables. \describe{ \item{\code{AoE}}{a numeric vector, Age at Entry} \item{\code{DoE}}{a numeric vector, Date of entry} \item{\code{DoX}}{a numeric vector, Date of eXit} \item{\code{Xst}}{eXit status \code{D}-event, \code{W}-withdrawal, \code{X}-censoring} } } \references{ Breslow & Day: Statistical Methods in Cancer Research, vol 1: The analysis of case-control studies, figure 2.2, p. 48.} \examples{ data(occup) lx <- Lexis( entry = list( per=DoE, age=AoE ), exit = list( per=DoX ), entry.status = "W", exit.status = Xst, data = occup ) plot( lx ) # Split follow-up in 5-year classes sx <- splitLexis( lx, seq(1940,1960,5), "per" ) sx <- splitLexis( sx, seq( 40, 60,5), "age" ) plot( sx ) # Plot with a bit more paraphernalia and a device to get # the years on the same physical scale on both axes ypi <- 2.5 # Years per inch dev.new( height=15/ypi+1, width=20/ypi+1 ) # add an inch in each direction for par( mai=c(3,3,1,1)/4, mgp=c(3,1,0)/1.6 ) # the margins set in inches by mai= plot(sx,las=1,col="black",lty.grid=1,lwd=2,type="l", xlim=c(1940,1960),ylim=c(40,55),xaxs="i",yaxs="i",yaxt="n", xlab="Calendar year", ylab="Age (years)") axis( side=2, at=seq(40,55,5), las=1 ) points(sx,pch=c(NA,16)[(sx$lex.Xst=="D")+1] ) box() # Annotation with the person-years PY.ann.Lexis( sx, cex=0.8 ) } \keyword{datasets} Epi/man/ccwc.Rd0000644000176200001440000000413413751040403012747 0ustar liggesusers\name{ccwc} \alias{ccwc} \title{Generate a nested case-control study} \usage{ ccwc( entry=0, exit, fail, origin=0, controls=1, match=list(), include=list(), data=NULL, silent=FALSE ) } \arguments{ \item{entry}{ Time of entry to follow-up } \item{exit}{ Time of exit from follow-up } \item{fail}{ Status on exit (1=Fail, 0=Censored) } \item{origin}{ Origin of analysis time scale } \item{controls}{ The number of controls to be selected for each case } \item{match}{ List of categorical variables on which to match cases and controls } \item{include}{ List of other variables to be carried across into the case-control study } \item{data}{ Data frame in which to look for input variables } \item{silent}{ If FALSE, echos a . to the screen for each case-control set created; otherwise produces no output. } } \description{ Given the basic outcome variables for a cohort study: the time of entry to the cohort, the time of exit and the reason for exit ("failure" or "censoring"), this function computes risk sets and generates a matched case-control study in which each case is compared with a set of controls randomly sampled from the appropriate risk set. Other variables may be matched when selecting controls. } \value{ The case-control study, as a dataframe containing: \item{Set}{ case-control set number } \item{Map}{ row number of record in input dataframe } \item{Time}{ failure time of the case in this set } \item{Fail}{ failure status (1=case, 0=control) } These are followed by the matching variables, and finally by the variables in the \code{include} list } \references{ Clayton and Hills, Statistical Models in Epidemiology, Oxford University Press, Oxford:1993. } \author{ David Clayton } \seealso{ \code{\link{Lexis}} } \examples{ # # For the diet and heart dataset, create a nested case-control study # using the age scale and matching on job # data(diet) dietcc <- ccwc( doe, dox, chd, origin=dob, controls=2, data=diet, include=energy, match=job) } \keyword{datagen} Epi/man/crr.Lexis.Rd0000644000176200001440000000737613763470050013724 0ustar liggesusers\name{crr.Lexis} \alias{crr.Lexis} \title{Fit a competing risks regression model (Fine-Gray model) using a Lexis object) } \description{ Fits a competing risks regression model using a \code{\link{Lexis}} object assuming that every person enters at time 0 and exits at time \code{lex.dur}. Thus is only meaningful for Lexis objects with one record per person, (so far). } \usage{ crr.Lexis( obj, mod, quiet=FALSE, ...) } \arguments{ \item{obj}{A Lexis object; variables in \code{mod} are taken from this.} \item{mod}{Formula, with the l.h.s. a character constant equal to a level of \code{obj$lex.Xst}, and the r.h.s. a model formula interpreted in \code{obj}.} \item{quiet}{Logical indicating whether a brief summary should be printed.} \item{\dots}{Further arguments passed on to \code{\link[cmprsk:crr]{crr}}.} } \details{ This function is a simple wrapper for \code{crr}, allowing a formula-specification of the model (which allows specifications of covariates on the fly), and utilizing the structure of Lexis objects to simplify specification of the outcome. Prints a summary of the levels used as event, competing events and censoring. By the structure of the \code{\link{Lexis}} object it is not necessary to indicate what the censoring code or competing events are, that is automatically derived from the \code{Lexis} object. Currently only one state is allowed as l.h.s. (response) in \code{mod}. } \value{ A \code{\link[cmprsk:crr]{crr}} object (which is a list), with two extra elements in the list, \code{model.Lexis} - the model formula supplied, and \code{transitions} - a table of transitions and censorings showing which transition was analysed and which were taken as competing events. } \author{Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link[cmprsk:crr]{crr}}, \code{\link{Lexis}} } \examples{ # Thorotrats patients, different histological types of liver cancer # Load thorotrast data, and restrict to exposed data(thoro) tht <- thoro[thoro$contrast==1,] # Define exitdate as the date of livercancer tht$dox <- pmin( tht$liverdat, tht$exitdat, na.rm=TRUE ) tht <- subset( tht, dox > injecdat ) # Convert to calendar years in dates tht <- cal.yr( tht ) # Set up a Lexis object with three subtypes of liver cancer and death tht.L <- Lexis( entry = list( per = injecdat, tfi = 0 ), exit = list( per = dox ), exit.status = factor( 1*hepcc+2*chola+3*hmang+ 4*(hepcc+chola+hmang==0 & exitstat==1), labels=c("No cancer","hepcc","chola","hmang","Dead") ), data = tht ) summary( tht.L ) # Show the transitions boxes( tht.L, boxpos=list(x=c(20,rep(80,3),30), y=c(60,90,60,30,10) ), show.BE="nz", scale.R=1000 ) # Fit a model for the Hepatocellular Carcinoma as outcome # - note that you can create a variable on the fly: library( cmprsk ) hepcc <- crr.Lexis( tht.L, "hepcc" ~ volume + I(injecdat-1940) ) hepcc$model.Lexis hepcc$transitions # Models for the three other outcomes: chola <- crr.Lexis( tht.L, "chola" ~ volume + I(injecdat-1940) ) hmang <- crr.Lexis( tht.L, "hmang" ~ volume + I(injecdat-1940) ) dead <- crr.Lexis( tht.L, "Dead" ~ volume + I(injecdat-1940) ) # Compare the effects # NOTE: This is not necessarily a joint model for all transitions. zz <- rbind( ci.exp(hepcc), ci.exp(chola), ci.exp(hmang), ci.exp(dead) ) zz <- cbind( zz[c(1,3,5,7) ,], zz[c(1,3,5,7)+1,] ) rownames( zz ) <- c("hepcc","chola","hmang","dead") colnames( zz )[c(1,4)] <- rownames( ci.exp(chola) ) round( zz, 3 ) } \keyword{survival} Epi/man/bdendo.Rd0000644000176200001440000000423513751040403013265 0ustar liggesusers\name{bdendo} \alias{bdendo} \alias{bdendo11} \docType{data} \title{A case-control study of endometrial cancer} \description{ The \code{bdendo} data frame has 315 rows and 13 columns, \code{bdendo11} 126 rows. These data concern a study in which each case of endometrial cancer was matched with 4 controls. \code{bdendo11} is a 1:1 mathed subset of \code{bdendo}. Matching was by date of birth (within one year), marital status, and residence. } \format{ These data frames have the following columns: \tabular{rl}{ \code{set}: \tab Case-control set: a numeric vector \cr \code{d}: \tab Case or control: a numeric vector (1=case, 0=control) \cr \code{gall}: \tab Gall bladder disease: a factor with levels \code{No} \code{Yes}. \cr \code{hyp}: \tab Hypertension: a factor with levels \code{No} \code{Yes}. \cr \code{ob}: \tab Obesity: a factor with levels \code{No} \code{Yes}. \cr \code{est}: \tab A factor with levels \code{No} \code{Yes}. \cr \code{dur}: \tab Duration of conjugated oestrogen therapy: a factor with levels \code{0}, \code{1}, \code{2}, \code{3}, \code{4}. \cr \code{non}: \tab Use of non oestrogen drugs: a factor with levels \code{No} \code{Yes}. \cr \code{duration}: \tab Months of oestrogen therapy: a numeric vector. \cr \code{age}: \tab A numeric vector. \cr \code{cest}: \tab Conjugated oestrogen dose: a factor with levels \code{0}, \code{1}, \code{2}, \code{3}. \cr \code{agegrp}: \tab A factor with levels \code{55-59} \code{60-64} \code{65-69} \code{70-74} \code{75-79} \code{80-84} \cr \code{age3}: \tab a factor with levels \code{<64} \code{65-74} \code{75+} \cr } } \source{ Breslow NE, and Day N, Statistical Methods in Cancer Research. Volume I: The Analysis of Case-Control Studies. IARC Scientific Publications, IARC:Lyon, 1980. } \examples{ data(bdendo) str(bdendo) } \keyword{datasets} Epi/man/mcutLexis.Rd0000644000176200001440000001040613763206636014023 0ustar liggesusers\name{mcutLexis} \alias{mcutLexis} \title{ Cut follow-up at multiple event dates and keep track of order of events } \description{ A generalization of \code{\link{cutLexis}} to the case where different events may occur in any order (but at most once for each). } \usage{ mcutLexis( L0, timescale = 1, wh, new.states = NULL, precursor.states = transient(L0), seq.states = TRUE, new.scales = NULL, ties.resolve = FALSE ) } \arguments{ \item{L0}{A Lexis object.} \item{timescale}{Which time scale do the variables in \code{L0[,wh]} refer to. Can be character or integer.} \item{wh}{Which variables contain the event dates. Character or integer vector} \item{new.states}{Names of the events forming new states. If \code{NULL} equal to the variable names from \code{wh}.} \item{precursor.states}{Which states are precursor states. See \code{\link{cutLexis}} for definition of precursor states.} \item{seq.states}{Should the sequence of events be kept track of? That is, should A-B be considered different from B-A. If \code{FALSE}, the state with combined preceding events A and B will be called A+B (alphabetically sorted). May also be supplied as character: \code{s} - sequence, keep track of sequence of states occupied (same as \code{TRUE}), \code{u} - unordered, keep track only of states visited (same as \code{FALSE}) or \code{l}, \code{c} - last or current state, only record the latest state visited. If given as character, only the first letter converted to lower case is used.} \item{new.scales}{Should we construct new time scales indicating the time since each of the event occurrences.} \item{ties.resolve}{Should tied event times be resolved by adding random noise to tied event dates. If \code{FALSE} the function will not accept that two events occur at the same time for a person (ties). If \code{TRUE} a random quantity in the range \code{c(-1,1)/100} will be added to all event times in all records with at least one tie. If \code{ties.resolve} is numeric a random quantity in the range \code{c(-1,1)*ties.resolve} will be added to all event times in all records with at least one tie.} } \value{A \code{\link{Lexis}} object with extra states created by occurrence of a number of intermediate events. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{cutLexis}}, \code{\link{rcutLexis}}, \code{\link{addCov.Lexis}}, \code{\link{Lexis}}, \code{\link{splitLexis}} } \examples{ # A dataframe of times set.seed(563248) dd <- data.frame( id = 1:30, doN = round(runif(30,-30, 0),1), doE = round(runif(30, 0,20),1), doX = round(runif(30, 50,60),1), doD = round(runif(30, 50,60),1), # these are the event times doA = c(NA,21,NA,27,35,NA,52, 5,43,80, NA,22,56,28,53,NA,51, 5,43,80, NA,23,NA,33,51,NA,55, 5,43,80), doB = c(NA,20,NA,53,27,NA, 5,52,34,83, NA,20,23,37,35,NA,52, 8,33,NA, 25,NA,37,40,NA,NA,15,23,36,61) ) # set up a Lexis object with time from entry to death/exit Lx <- Lexis( entry = list(time=doE, age=doE-doN), exit = list(time=pmin(doX,doD)), exit.status = factor(doD}".} \author{ Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com} } \examples{ data(DMlate) str(DMlate) dml <- Lexis( entry=list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit=list(Per=dox), exit.status=factor(!is.na(dodth),labels=c("DM","Dead")), data=DMlate ) dmi <- cutLexis( dml, cut=dml$doins, new.state="Ins", pre="DM" ) summary( dmi ) ls.dmi <- stack( dmi ) str( ls.dmi ) # Check that all the transitions and person-years got across. with( ls.dmi, rbind( table(lex.Fail,lex.Tr), tapply(lex.dur,lex.Tr,sum) ) ) } \seealso{ \code{\link{splitLexis}} \code{\link{cutLexis}} \code{\link{Lexis}} } \keyword{survival} Epi/man/diet.Rd0000644000176200001440000000474413751040403012764 0ustar liggesusers\name{diet} \alias{diet} \docType{data} \title{Diet and heart data} \description{ The \code{diet} data frame has 337 rows and 14 columns. The data concern a subsample of subjects drawn from larger cohort studies of the incidence of coronary heart disease (CHD). These subjects had all completed a 7-day weighed dietary survey while taking part in validation studies of dietary questionnaire methods. Upon the closure of the MRC Social Medicine Unit, from where these studies were directed, it was found that 46 CHD events had occurred in this group, thus allowing a serendipitous study of the relationship between diet and the incidence of CHD. } \format{ This data frame contains the following columns: \tabular{rl}{ \code{id}: \tab subject identifier, a numeric vector. \cr \code{doe}: \tab date of entry into follow-up study, a \code{\link{Date}} variable. \cr \code{dox}: \tab date of exit from the follow-up study, a \code{\link{Date}} variable. \cr \code{dob}: \tab date of birth, a \code{\link{Date}} variable. \cr \code{y}: \tab number of years at risk, a numeric vector. \cr \code{fail}: \tab status on exit, a numeric vector (codes 1, 3 and 13 represent CHD events) \cr \code{job}: \tab occupation, a factor with levels \code{Driver} \code{Conductor} \code{Bank worker} \cr \code{month}: \tab month of dietary survey, a numeric vector \cr \code{energy}: \tab total energy intake (kCal per day/100), a numeric vector \cr \code{height}: \tab (cm), a numeric vector \cr \code{weight}: \tab (kg), a numeric vector \cr \code{fat}: \tab fat intake (10 g/day), a numeric vector \cr \code{fibre}: \tab dietary fibre intake (10 g/day), a numeric vector \cr \code{energy.grp}: \tab high daily energy intake, a factor with levels \code{<=2750 KCal} \code{>2750 KCal} \cr \code{chd}: \tab CHD event, a numeric vector (1=CHD event, 0=no event) \cr } } \source{ The data are described and used extensively by Clayton and Hills, Statistical Models in Epidemiology, Oxford University Press, Oxford:1993. They were rescued from destruction by David Clayton and reentered from paper printouts. } \examples{ data(diet) # Illustrate the follow-up in a Lexis diagram Lexis.diagram( age=c(30,75), date=c(1965,1990), entry.date=cal.yr(doe), exit.date=cal.yr(dox), birth.date=cal.yr(dob), fail=(fail>0), pch.fail=c(NA,16), col.fail=c(NA,"red"), cex.fail=1.0, data=diet ) } \keyword{datasets} Epi/man/Epi.Rd0000644000176200001440000000130713751040403012544 0ustar liggesusers\docType{package} \name{Epi} \alias{Epi} \alias{Epi-package} \title{Epi: Functions for manipulation and statistical analysis of epidemiological data} \description{ \pkg{Epi} has grown out of the course 'Statistical Practise in Epidemiology with R' \url{http://bendixcarstensen.com/SPE/}. The major contributions from this course have been the \code{\link{stat.table}} function for advanced tabulation and summary, and the functions for representation and the \code{\link{Lexis}} function(s) for manipulation of multistate data with multiple time scales. } \details{Click on the \code{Index} link below the line to access vignettes (tutorial documents) and an alphabetic list of the functions in \code{Epi}.}Epi/man/Life.lines.Rd0000644000176200001440000000404013751040403014014 0ustar liggesusers\name{Life.lines} \alias{Life.lines} \title{ Compute dates/ages for life lines in a Lexis diagram } \description{ Fills out the missing information for follow up of persons in a Lexis diagram if sufficient information is given. } \usage{ Life.lines( entry.date = NA, exit.date = NA, birth.date = NA, entry.age = NA, exit.age = NA, risk.time = NA ) } \arguments{ \item{entry.date, exit.date,birth.date, entry.age, exit.age, risk.time}{Vectors defining lifelines to be plotted in the diagram. At least three must be given to produce a result. Not all subsets of three will suffice, the given subset has to define life lines. If insufficient data is given, nothing is returned and a warning is given.} } \value{ Data frame with variables \code{entry.date}, \code{entry.age}, \code{exit.date}, \code{exit.age}, \code{risk.time}, \code{birth.date}, with all entries computed for each person. If any of \code{entry.date}, \code{exit.date} or \code{birth.date} are of class \code{Date} or if any of \code{entry.age}, \code{exit.age} or \code{risk.time} are of class \code{difftime} the date variables will be of class \code{Date} and the other three of class \code{difftime}. } \examples{ ( Life.lines( entry.age = c(3,30,45), risk.time = c(25,5,14), birth.date = c(1970,1931,1925.7) ) ) # Draw a Lexis diagram Lexis.diagram() # Compute entry and exit age and date. ( LL <- Life.lines( entry.age = c(3,30,45), risk.time = c(25,5,14), birth.date = c(1970,1931,1925.7) ) ) segments( LL[,1], LL[,2], LL[,3], LL[,4] ) # Plot the life lines. # Compute entry and exit age and date, supplying a date variable bd <- ( c(1970,1931,1925.7) - 1970 ) * 365.25 class( bd ) <- "Date" ( Life.lines( entry.age = c(3,30,45), risk.time = c(25,5,14), birth.date = bd ) ) } \seealso{ \code{\link{Lexis.diagram}}, \code{\link{Lexis.lines}} } \keyword{ manip } \keyword{ dplot } Epi/man/Termplot.Rd0000644000176200001440000000643613751040403013645 0ustar liggesusers\name{Termplot} \alias{Termplot} \title{ A wrapper for \code{termplot} that optionally (but by default) exponentiates terms, and plot them on a common log-scale. Also scales x-axes to the same physical scale. } \description{ The function uses \code{\link{termplot}} to extract terms from a model with, say, spline, terms, including the standard errors, computes confidence intervals and transform these to the rate / rate-ratio scale. Thus the default use is for models on the log-scale such as Poisson-regression models. The function produces a plot with panels side-by-side, one panel per term, and returns the } \usage{ Termplot( obj, plot = TRUE, xlab = NULL, ylab = NULL, xeq = TRUE, yshr = 1, alpha = 0.05, terms = NULL, max.pt = NULL ) } \arguments{ \item{obj}{An object with a \code{terms}-method --- for details the the documentation for \code{\link{termplot}}. } \item{plot}{Should a plot be produced?} \item{xlab}{Labels for the \code{x}-axes. Defaults to the names of the terms.} \item{ylab}{Labels for the \code{x}-axes. Defaults to blank.} \item{xeq}{Should the units all all plots have the same physical scale for the \code{x}-axes).} \item{yshr}{Shrinking of \code{y}-axis. By default, the \code{y}-axes have an extent that accommodates the entire range of confidence intervals. This is a shrinking parameter for the \code{y}-axes, setting it to less than 1 will lose a bit of the confidence limits on some of the panels.} \item{alpha}{1 minus the confidence level for computing confidence intervals} \item{terms}{Which terms should be reported. Passed on to \code{\link{termplot}} and eventually \code{\link{predict}}.} \item{max.pt}{The maximal number of points in which to report the terms. If \code{NULL} all unique points from the analysis dataset are reported for each term (this is a feature of \code{\link{termplot}}).} } \value{ A list with one component per term in the model object \code{obj}, each component is a 4-column matrix with $x$ as the first column, and 3 columns with estimae and lower and upper confidence limit. } \author{ Bendix Cartensen } \seealso{ \code{\link{Ns}}, \code{termplot} } \examples{ # Get the diabetes data and set up as Lexis object data(DMlate) DMlate <- DMlate[sample(1:nrow(DMlate),500),] dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) # Split in 1-year age intervals dms <- splitLexis( dml, time.scale="Age", breaks=0:100 ) # Model with 6 knots for both age and period n.kn <- 6 # Model age-specific rates with period referenced to 2004 ( a.kn <- with( subset(dms,lex.Xst=="Dead"), quantile( Age+lex.dur, probs=(1:n.kn-0.5)/n.kn ) ) ) ( p.kn <- with( subset(dms,lex.Xst=="Dead"), quantile( Per+lex.dur, probs=(1:n.kn-0.5)/n.kn ) ) ) m2 <- glm( lex.Xst=="Dead" ~ -1 + Ns( Age, kn=a.kn, intercept=TRUE ) + Ns( Per, kn=p.kn, ref=2004 ), offset = log( lex.dur ), family=poisson, data=dms ) # Finally we can plot the two effects: Termplot( m2, yshr=0.9 ) } \keyword{hplot} Epi/man/addDrug.Lexis.Rd0000644000176200001440000001441414016517671014502 0ustar liggesusers\name{addDrug.Lexis} \alias{addDrug.Lexis} \title{ Expand a Lexis object with information of drug exposure based on purchase dates and -amounts } \description{ A \code{\link{Lexis}} object will contain information on follow-up for a cohort of persons through time, each record containing information of one time interval, including the time at the beginning of each interval. If information on drug purchase is known for the persons via \code{lex.id} in a list of data frames, \code{addDrug.Lexis} will expand the \code{Lexis} object by cutting at all drug purchase dates, and compute the exposure status for any number of drugs, and add these as variables. } \usage{ addDrug.Lexis(Lx, # Lexis object pdat, # list of data frames with drug purchase information amt = "amt", # name of the variable with purchased amount apt = "apt", # name of the variable with amount consumed per time method = "ext", # method use to compute exposure maxt = NULL, # max duration for a purchase when using \code{method="fix"} grace = 0, # grace period to be added tnam = setdiff(names(pdat[[1]]), c("lex.id", amt))[1], # name of the prefix = NULL, # character vector of length \code{length(pdat)} suffix = NULL, # character vector of length \code{length(pdat)} sepfix = ".") # what should the separator be when forming prefix/suffix } \arguments{ \item{Lx}{A \code{Lexis} object. } \item{pdat}{Named list of data frames with drug \code{p}urchase \code{dat}a. } \item{amt}{Name of the variable in the data frames in \code{pdat} with the purchased \code{am}oun\code{t}. } \item{apt}{Name of the variable in the data frames in \code{pdat} with the consumed \code{a}mount \code{p}er \code{t}ime. Must be given in units of units of \code{amt} per units of \code{lex.dur} in \code{Lx}. } \item{method}{Character. One of \code{"ext"} (default), \code{"amt"} or \code{"fix"}, for a description, see details. } \item{maxt}{Numerical. Maximal duration for a purchase when using \code{method="fix"}, same units as \code{lex.dur}. } \item{grace}{Numeric. Grace period to be added after last time of computed drug coverage to define end of exposure, same units as \code{lex.dur}. } \item{tnam}{Character. Name of the timescale used in the data frames in \code{pdat}. } \item{prefix}{Character vector of length \code{length(pdat)}. Used to prefix the 4 generated exposure variables. } \item{suffix}{Character vector of length \code{length(pdat)}. Used to suffix the 4 generated exposure variables. } \item{sepfix}{Character, used to separate the \code{prefix} and the name of the generated type of variable. } } \details{ This function internally uses \code{\link{addCov.Lexis}} to attach exposure status for several drugs (dispensed medicine) to follow-up in a \code{Lexis} object. Once that is done, the exposure measures are calculated at each time. There is one input data frame per type of drug, each with variables \code{lex.id}, \code{amt}, a timescale variable and possibly \code{apt}. Three different methods for computing drug exposures from dates and amounts of purchases are supported via the argument \code{method}. \itemize{ \item \code{"ext"}: Extrapolation: the first drug purchase is assumed consumed over the interval to the second purchase. Exposure for next purchases are assumed to last as long as it would have if consumed at a speed corresponding to the previous purchase being consumed over the time span between the previous and current purchase, plus a period of length \code{grace}. \item \code{"dos"}: Dosage: assumes that each purchase lasts \code{amt}/\code{apt} plus \code{grace}. \item \code{"fix"}: Fixed time: assumes that each purchase lasts \code{maxt}. } So for each purchase we have defined an end of coverage (expiry date). If next purchase is before this, we assume that the amount purchased is consumed over the period between the two purchases, otherwise over the perido to the end of coverage. So the only difference between the methods is the determination of the coverage for each purchase. Based on this, for each date in the resulting \code{\link{Lexis}} four exposure variables are computed, see next section. } \value{ A \code{\link{Lexis}} object with the same risk time, states and events as \code{Lx}. The follow-up for each person has been cut at the purchase times of each of the drugs, as well as at the expiry times for drug coverage. Further for each drug (i.e. data frame in the \code{pdat} list) 4 variables have been added: \itemize{ \item \code{pre.ex}: logical; is the person exposed in this interval \item \code{pre.tf}: numeric: time since first purchase, same units as \code{lex.dur} \item \code{pre.ct}: numeric: cumulative time on the drug, same units as \code{lex.dur} \item \code{pre.cd}: numeric: cumulative dose of the drug, same units as \code{amt} } } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{addCov.Lexis}}, \code{\link{gen.exp}}, \code{\link{cutLexis}}, \code{\link{rcutLexis}}, \code{\link{mcutLexis}} } \examples{ # Follow-up of 2 persons fu <- data.frame(doe = c(2006, 2008), dox = c(2015, 2018), dob = c(1950, 1951), xst = factor(c("A","D"))) Lx <- Lexis(entry = list(per = doe, age = doe- dob), exit = list(per = dox), exit.status = xst, data = fu) Lx <- subset(Lx, select = -c(doe, dob, dox, xst)) # split FU in 1 year intervals Sx <- splitLexis(Lx, "per", breaks = seq(1990, 2020, 1.0)) rc <- data.frame(per = c(2007 + runif(12,0,10)), amt = sample(2:4, 12, r = TRUE), lex.id = sample(1:2, 12, r = TRUE)) rc <- rc[order(rc$lex.id, rc$per),] rd <- data.frame(per = c(2009 + runif(10, 0, 10)), amt = sample(round(2:4/3,1), 10, r = TRUE), lex.id = sample(1:2, 10, r = TRUE)) rd <- rd[order(rd$lex.id, rd$per),] pdat <- list(Joe = rc, Pat = rd) pdat addDrug.Lexis(Sx, pdat, method = "ext") # default addDrug.Lexis(Sx, pdat, method = "ext", grace = 0.2) addDrug.Lexis(Sx, pdat, method = "dos", apt = 6) addDrug.Lexis(Sx, pdat, method = "fix", maxt = 1) } \keyword{survival} \keyword{manip} Epi/man/rm.tr.Rd0000644000176200001440000000354513751040403013077 0ustar liggesusers\name{rm.tr} \alias{rm.tr} \title{ Remove transitions from a Lexis object. } \description{ Sometimes certain transitions are not of interest. This function removes these and assigns the risk time in the target state of the transitions to the originating state. } \usage{ rm.tr(obj, from, to) } \arguments{ \item{obj}{ A \code{Lexis} object. } \item{from}{ Character; name of the state from which the transition to be purged originates. Must be a valid state name for \code{obj}. } \item{to}{ Character; name of the state to which the transition to be purged targets. Must be a valid state name for \code{obj}. } } \details{ The function removes all transitions from \code{from} to \code{to}, and assigns all risk time in the \code{to} state after the transition (\code{lex.dur}) to the \code{from} state. This is only done for risk time in \code{to} occurring directly after \code{from}. Risk time in \code{to} occurring after a transition from states different from \code{from} is not affected. Transitions from \code{to} to another state, \code{other}, say, will be changed to transitions from \code{from} to \code{other}. } \value{ A \code{\link{Lexis}} object with the indicated transition removed. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com}. } \seealso{ \code{\link{Relevel}} } \examples{ data(DMlate) dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) # A small subset for illustration dml <- subset( dml, lex.id \%in\% c(13,15,20,28,40) ) # Cut the follow-up at start of insulin therapy dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins" )[,1:10] # How does it look? dmi # Remove all transitions DM -> Ins rm.tr( dmi, "DM", "Ins" ) } \keyword{manip} Epi/man/projection.ip.Rd0000644000176200001440000000171613751040403014616 0ustar liggesusers\name{projection.ip} \alias{projection.ip} \title{ Projection of columns of a matrix. } \description{ Projects the columns of the matrix \code{M} on the space spanned by the columns of the matrix \code{X}, with respect to the inner product defined by \code{weight}: \code{=sum(x*w*y)}. } \usage{ projection.ip(X, M, orth = FALSE, weight = rep(1, nrow(X))) } \arguments{ \item{X}{ Matrix defining the space to project onto. } \item{M}{ Matrix of columns to be projected. Must have the same number of rows as \code{X}. } \item{orth}{ Should the projection be on the orthogonal complement to \code{span(X)}? } \item{weight}{ Weights defining the inner product. Numerical vector of length \code{nrow(X)}. } } \value{ A matrix of full rank with columns in \code{span(X)} } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com}, with help from Peter Dalgaard. } \seealso{ \code{\link{detrend}} } \keyword{array} Epi/man/harm.Rd0000644000176200001440000000223213751040403012754 0ustar liggesusers\name{harm} \alias{harm} \title{Create a basis of harmonic functions. } \description{Returns a matrix of harmonic functions usable for modeling periodic effects } \usage{ harm(x, ord=1, per=1, verbose=FALSE ) } \arguments{ \item{x}{A numeric variable. } \item{ord}{Integer, the order of the harmonic. } \item{per}{Numeric, the length of the period on the \code{x} scale. } \item{verbose}{Logical: shall I tell what I do with dates? } } \details{ Columns are constructed under the assumption that the periodic function has period \code{per} on the \code{x} scale. Thus, the first columns is defined as \code{sin(2*pi*x/per)}, \code{cos(2*pi*x/per)}, \code{sin(4*pi*x/per)} etc. Since \code{sin} and \code{cos} are periodic functions there is no requirement that \code{x} be in any particular range. } \value{A matrix with \code{nrow(x)} rows and 2*\code{deg} columns and columnnames \code{sin1}, \code{cos1}, \code{sin2}, \code{cos2} etc. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \examples{ x <- seq(-1,1,0.01) head( harm(x,ord=2) ) matplot( x, harm(x,ord=2), type="l", lty=1, lwd=3 ) } \keyword{models} \keyword{regression} Epi/man/ci.Crisk.Rd0000644000176200001440000001467514003725771013521 0ustar liggesusers\name{ci.Crisk} \alias{ci.Crisk} \alias{sim2ci.Crisk} \alias{sim2ci.Srisk} \alias{sim2ci.Stime} \title{ Compute cumulative risk and/or expected sojourn time from competing risks models. } \description{ Consider a list of parametric models for rates of competing events, such as different causes of death, A, B, C, say. From estimates of the cause-specific rates we can then by simple numerical integration compute the cumulative risk of being in each state ('Surv' (=no event) and A, B and C) at different times, as well as the stacked cumulative rates such as A, A+C, A+C+Surv. Finally, we can compute the expected (truncated) sojourn times in each state up to each time point. This function does this for simulated samples from the parameter vectors of supplied model objects, and computes the mentioend quantities with simulation-based confidence intervals. Some call this a prametric bootstrap. The times and other covariates determining the cause-specific rates must be supplied in a data frame which will be used for predicting rates for all transitions. } \usage{ ci.Crisk(mods, nd, int = mean(diff(nd[, 1])), nB = 1000, perm = length(mods):0 + 1, alpha = 0.05, sim.res = 'none') sim2ci.Crisk(probs, alpha = 0.05) sim2ci.Srisk(probs, perm = 1:dim(probs)[2], alpha = 0.05) sim2ci.Stime(probs, int = attr(probs, "int"), alpha = 0.05) } \arguments{ \item{mods}{A named list of \code{glm}/\code{gam} model objects representing the cause-specific rates. If the list is not named the function will crash. The names will be used as names for the states (competing risks), while the state without any event will be called "\code{Surv}". } \item{nd}{A data frame of prediction points and covariates. Must represent midpoints of equidistant intervals. } \item{int}{Numeric, the length of the intervals. Defaults to the differences in the first column of \code{nd}. } \item{nB}{Scalar. The number of simulations, that is samples from the (posterior) distribution of the model parameters. } \item{perm}{Numerical vector of length \code{lengh(mods)+1} indicating the order in which states are to be stacked. The \code{'Surv'} state is taken to be the first, the remaining in the reverse order supplied in the \code{mods} argument. The default is therefore to stack with the survival as the first, which may not be what you normally want. } \item{alpha}{numeric. 1 minus the confidence level used in calculating the c.i.s } \item{sim.res}{Character. What simulation samples should be returned. If \code{'none'} (the default) the function returns a list of 3 arrays (see under 'value'). If \code{'rates'} it returns an array of dimension \code{nrow(nd)} x \code{length(mod)} x \code{nB} of bootstrap samples of the rates. If \code{'crisk'} it returns an array of dimension \code{(nrow(nd)+1)} x \code{length(mod)} x \code{nB} of bootstrap samples of the culmulative rates. Only the first letter matters, regardless of whether it is in upper lower case. } \item{probs}{Three-way array of simulated cumulative risks classified by 1) time points, 2) causes (incl. surv) and 3) Samples. A structure as returned by \code{ci.Crisk} with \code{sim.res='crisk'}. } } \value{A named list of three-way arrays with results from simulation (parametric bootstrap) from the distribution of the parameters in the models in \code{mods}: \itemize{ \item \code{Crisk} Cumulative risks for the \code{length(mods)} events \emph{and} the survival \item \code{Srisk} Stacked versions of the cumulative risks \item \code{Stime} Sojourn times in each states } All three arrays have (almost) the same dimensions: \itemize{ \item \code{time}: end points of intervals starting with "\code{0}". Length \code{nrow(nd)+1}, except for \code{Stime} where it is only \code{nrow(nd)}, "\code{0}" not included. \item State. \code{Crisk} and \code{Stime} has values \code{Surv} plus the names of the list \code{mods} (first argument). \code{Srisk} has length \code{length(mod)}, with each level representing a cumultive sum of cumulatieve risks, in order indicated by the \code{perm} argument. \item \code{ci.50\%}, \code{ci.2.5\%}, \code{ci.97.5\%} representing quantiles of the quantities derived from the bootstrap samples. If \code{alpha} is different from 0.05, names are of course different. } } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{mat2pol}} \code{\link{simLexis}} \code{\link{plotCIF}} \code{\link{ci.surv}} } \examples{ library(Epi) data(DMlate) # A Lexis object for survival Ldm <- Lexis(entry = list( per = dodm, age = dodm-dobth, tfd = 0 ), exit = list( per = dox ), exit.status = factor( !is.na(dodth), labels = c("DM","Dead") ), data = DMlate[sample(1:nrow(DMlate),1000),] ) summary(Ldm, timeScales = TRUE) # Cut at OAD and Ins times Mdm <- mcutLexis( Ldm, wh = c('dooad','doins'), new.states = c('OAD','Ins'), precursor = 'Alive', seq.states = FALSE, ties = TRUE ) summary( Mdm$lex.dur ) # restrict to DM state Sdm <- splitLexis(factorize(subset(Mdm, lex.Cst == "DM")), time.scale = "tfd", breaks = seq(0,20,1/12)) summary(Sdm) summary(Relevel(Sdm, c(1, 4, 2, 3))) boxes(Relevel(Sdm, c(1, 4, 2, 3)), boxpos = list(x = c(15, 85, 80, 15), y = c(85, 85, 20, 15)), scale.R = 100) # glm models for the cause-specific rates system.time( mD <- glm.Lexis(Sdm, ~ Ns(tfd, knots=0:6*2), to = 'Dead') ) system.time( mO <- glm.Lexis(Sdm, ~ Ns(tfd, knots=0:6*2), to = 'OAD' ) ) system.time( mI <- glm.Lexis(Sdm, ~ Ns(tfd, knots=0:6*2), to = 'Ins' ) ) # intervals for calculation of predicted rates int <- 1/100 nd <- data.frame( tfd = seq(int,10,int)-int/2 ) # not the same as the split, # and totally unrelated to it # cumulaive risks with confidence intervals # (too few timepoints, too few simluations) system.time( res <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = (1:100-0.5)/10), nB = 100, perm = 4:1)) str(res) } \keyword{regression} Epi/man/B.dk.Rd0000644000176200001440000000421113751040403012602 0ustar liggesusers\name{B.dk} \alias{B.dk} \docType{data} \title{Births in Denmark by year and month of birth and sex} \description{ The number of live births as entered from printed publications from Statistics Denmark. } \usage{data(B.dk)} \format{ A data frame with 1248 observations on the following 4 variables. \describe{ \item{\code{year}}{Year of birth} \item{\code{month}}{Month of birth} \item{\code{m}}{Number of male births} \item{\code{f}}{Number of female births} } } \details{ Division of births by month and sex is only avaialble for the years 1957--69 and 2002ff. For the remaining period, the total no. births in each month is divided between the sexes so that the fraction of boys is equal to the overall fraction for the years where the sex information is available. There is a break in the series at 1920, when Sonderjylland was joined to Denmark. } \source{ Statistiske Undersogelser nr. 19: Befolkningsudvikling og sundhedsforhold 1901-60, Copenhagen 1966. Befolkningens bevaegelser 1957. Befolkningens bevaegelser 1958. ... Befolkningens bevaegelser 2003. Befolkningens bevaegelser 2004. Vital Statistics 2005. Vital Statistics 2006. } \examples{ data( B.dk ) str( B.dk ) attach( B.dk ) # Plot the no of births and the M/F-ratio par( las=1, mar=c(4,4,2,4) ) matplot( year+(month-0.5)/12, cbind( m, f ), bty="n", col=c("blue","red"), lty=1, lwd=1, type="l", ylim=c(0,5000), xlab="Date of birth", ylab="" ) usr <- par()$usr mtext( "Monthly no. births in Denmark", side=3, adj=0, at=usr[1], line=1/1.6 ) text( usr[1:2] \%*\% cbind(c(19,1),c(19,1))/20, usr[3:4] \%*\% cbind(c(1,19),c(2,18))/20, c("Boys","Girls"), col=c("blue","red"), adj=0 ) lines( year+(month-0.5)/12, (m/(m+f)-0.5)*30000, lwd=1 ) axis( side=4, at=(seq(0.505,0.525,0.005)-0.5)*30000, labels=c("","","","",""), tcl=-0.3 ) axis( side=4, at=(50:53/100-0.5)*30000, labels=50:53, tcl=-0.5 ) axis( side=4, at=(0.54-0.5)*30000, labels="\% boys", tick=FALSE, mgp=c(3,0.1,0) ) abline( v=1920, col=gray(0.8) ) } \keyword{datasets} Epi/man/ewrates.Rd0000644000176200001440000000172213751040403013502 0ustar liggesusers\name{ewrates} \alias{ewrates} \docType{data} \title{Rates of lung and nasal cancer mortality, and total mortality.} \description{ England and Wales mortality rates from lung cancer, nasal cancer, and all causes 1936 - 1980. The 1936 rates are repeated as 1931 rates in order to accomodate follow up for the \code{\link{nickel}} study. } \usage{data(ewrates)} \format{ A data frame with 150 observations on the following 5 variables: \tabular{rl}{ \code{id}: \tab Subject identifier (numeric) \cr \code{year} \tab Calendar period, 1931: 1931--35, 1936: 1936--40, \ldots \cr \code{age} \tab Age class: 10: 10--14, 15:15--19, \ldots \cr \code{lung} \tab Lung cancer mortality rate per 1,000,000 py. \cr \code{nasal} \tab Nasal cancer mortality rate per 1,000,000 py. \cr \code{other} \tab All cause mortality rate per 1,000,000 py. } } \source{ From Breslow and Day, Vol II, Appendix IX. } \examples{ data(ewrates) str(ewrates) } \keyword{datasets} Epi/man/plotevent.Rd0000644000176200001440000000216413751040403014051 0ustar liggesusers\name{plotevent} \alias{plotevent} \title{ Plot Equivalence Classes } \description{ For interval censored data, segments of times between last.well and first.ill are plotted for each conversion in the data. It also plots the equivalence classes. } \usage{ plotevent(last.well, first.ill, data) } \arguments{ \item{last.well}{ Time at which the individuals are last seen negative for the event } \item{first.ill}{ Time at which the individuals are first seen positive for the event } \item{data}{ Data with a transversal shape } } \details{ last.well and first.ill should be written as character in the function. } \value{ Graph } \references{ Carstensen B. Regression models for interval censored survival data: application to HIV infection in Danish homosexual men.Stat Med. 1996 Oct 30;15(20):2177-89. Lindsey JC, Ryan LM. Tutorial in biostatistics methods for interval-censored data.Stat Med. 1998 Jan 30;17(2):219-38. } \author{ Delphine Maucort-Boulch, Bendix Carstensen, Martyn Plummer } \seealso{ \code{\link{Icens}} } % \examples{ % } \keyword{ models } \keyword{ regression } \keyword{ survival } Epi/man/addCov.Lexis.Rd0000644000176200001440000001142214004041532014305 0ustar liggesusers\name{addCov.Lexis} \alias{addCov.Lexis} \title{ Add covariates (typically clinical measurements) taken at known times to a Lexis object. } \description{ When follow-up in a multistate model is represented in a \code{\link{Lexis}} object we may want to add information on covariates, for example clinical measurements, obtained at different times. This function cuts the follow-up time (see \code{\link{cutLexis}}) at the times of measurement and carries the measurements forward in time to the next measurement occasion. } \usage{ \method{addCov}{Lexis}(Lx, clin, timescale = 1, exnam, tfc = "tfc") } \arguments{ \item{Lx}{ A Lexis object with follow-up of a cohort. } \item{clin}{ A data frame with covariates to add (typically clinical measurements). Must contain a variable \code{lex.id} identifying the persons represented in \code{Lx}, as well as a variable with the same name as one of the \code{\link{timeScales}} in \code{Lx}, identifying the time at which covariates are measured. The times must be unique within each person; if not records with duplicate times are discarded, and a warning issued. This is done using \code{duplicated}, so not very well-defined, it is advisable that you do this by yourself. } \item{timescale}{ Numerical or character. Number or name of a timescale in \code{Lx}. The \code{clin} data frame must have a variable of this name indicating the time at which the covariate measurements were taken. } \item{exnam}{ Character. Name of the variable in \code{clin} with the examination names (such as \code{wave1}, \code{wave2} etc.). Values may not be repeated within person and cannot be equal to any of \code{levels(Lx)}. Will be carried over to the resulting \code{Lexis} object. If there is no such variable in \code{clin} it will be constructed; if the argument is omitted, a variable called \code{exnam} with values \code{ex1}, \code{ex2} etc. will be constructed. } \item{tfc}{ Character (\code{t}ime \code{f}rom \code{c}linical visit). Name of the variable in the result which will contain the time since the most recent covariate date. If the argument is omitted a variable called \code{tfc} will be constructed. If \code{addScales} is \code{TRUE} this is included among the time scales, even it is not formally a time scale. } } \value{ A \code{Lexis} object representing the same follow-up as \code{Lx}, with cuts added at the times of examination, and covariate measurements added for all records representing follow-up after the most recent time of measurement. } \author{ Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{cutLexis}}, \code{\link{mcutLexis}}, \code{\link{splitLexis}}, \code{\link{Lexis}} } \examples{ # A small bogus cohort xcoh <- structure( list( id = c("A", "B", "C"), birth = c("1952-07-14", "1954-04-01", "1987-06-10"), entry = c("1965-08-04", "1972-09-08", "1991-12-23"), exit = c("1997-06-27", "1995-05-23", "1998-07-24"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) # Convert the character dates into numerical variables (fractional years) xcoh$bt <- cal.yr( xcoh$birth ) xcoh$en <- cal.yr( xcoh$entry ) xcoh$ex <- cal.yr( xcoh$exit ) # Define as Lexis object with timescales calendar time and age Lcoh <- Lexis( entry = list( per=en ), exit = list( per=ex, age=ex-bt ), exit.status = factor( fail, 0:1, c("Alive","Dead") ), data = xcoh ) str( Lcoh ) Lx <- Lcoh[,1:7] # Data frame with clinical examination data, date of examination in per clin <- data.frame( lex.id = c(1,1,3,2), per = c(1977.3,1971.7,1996.2,1990.6), bp = c(120,140,160,157), chol = c(5,7,8,9), xnam = c("X2","X1","X1","X2") ) Lx clin # Different behavours using exnam and addScales addCov.Lexis( Lx, clin ) addCov.Lexis( Lx, clin, exnam="xnam" ) # Works with time split BEFORE Lb <- addCov.Lexis(splitLexis(Lx, time.scale="age", breaks=seq(0,80,5) ), clin, exnam="clX" ) Lb # and also AFTER La <- splitLexis(addCov.Lexis( Lx, clin, exnam = "xnam" ), breaks=seq(0,80,5), time.scale="age" ) La La$tfc == Lb$tfc La$age == Lb$age str(La) str(Lb) } \keyword{ survival } Epi/man/erl.Rd0000644000176200001440000001751513751040403012621 0ustar liggesusers\name{erl} \alias{surv1} \alias{surv2} \alias{erl1} \alias{erl} \alias{yll} \title{Compute survival functions from rates and expected residual lifetime in an illness-death model as well as years of life lost to disease. } \description{ These functions compute survival functions from a set of mortality and disease incidence rates in an illness-death model. Expected residual life time can be computed under various scenarios by the \code{erl} function, and areas between survival functions can be computed under various scenarios by the \code{yll} function. Rates are assumed supplied for equidistant intervals of length \code{int}. } \usage{ surv1( int, mu , age.in = 0, A = NULL ) erl1( int, mu , age.in = 0 ) surv2( int, muW, muD, lam, age.in = 0, A = NULL ) erl( int, muW, muD, lam=NULL, age.in = 0, A = NULL, immune = is.null(lam), yll=TRUE, note=TRUE ) yll( int, muW, muD, lam=NULL, age.in = 0, A = NULL, immune = is.null(lam), note=TRUE ) } \arguments{ \item{int}{ Scalar. Length of intervals that rates refer to. } \item{mu}{ Numeric vector of mortality rates at midpoints of intervals of length \code{int} } \item{muW}{ Numeric vector of mortality rates among persons in the "Well" state at midpoints of intervals of length \code{int}. Left endpoint of first interval is \code{age.in}. } \item{muD}{ Numeric vector of mortality rates among persons in the "Diseased" state at midpoints of intervals of length \code{int}. Left endpoint of first interval is \code{age.in}. } \item{lam}{ Numeric vector of disease incidence rates among persons in the "Well" state at midpoints of intervals of length \code{int}. Left endpoint of first interval is \code{age.in}. } \item{age.in}{ Scalar indicating the age at the left endpoint of the first interval. } \item{A}{ Numeric vector of conditioning ages for calculation of survival functions. } \item{immune}{ Logical. Should the years of life lost to the disease be computed using assumptions that non-diseased individuals are immune to the disease (\code{lam}=0) and that their mortality is yet still \code{muW}. } \item{note}{ Logical. Should a warning of silly assumptions be printed? } \item{yll}{ Logical. Should years of life lost be included in the result? } } \details{ The mortality rates given are supposed to refer to the ages \code{age.in+(i-1/2)*int}, \code{i=1,2,3,...}. The units in which \code{int} is given must correspond to the units in which the rates \code{mu}, \code{muW}, \code{muD} and \code{lam} are given. Thus if \code{int} is given in years, the rates must be given in the unit of events per year. The ages in which the survival curves are computed are from \code{age.in} and then at the end of \code{length(muW)} (\code{length(mu)}) intervals each of length \code{int}. The \code{age.in} argument is merely a device to account for rates only available from a given age. It has two effects, one is that labeling of the interval endpoint is offset by this quantity, thus starting at \code{age.in}, and the other that the conditioning ages given in the argument \code{A} will refer to the ages defined by this. The \code{immune} argument is \code{FALSE} whenever the disease incidence rates are supplied. If set to \code{TRUE}, the years of life lost is computed under the assumption that individuals without the disease at a given age are immune to the disease in the sense that the disease incidence rate is 0, so transitions to the diseased state (with presumably higher mortality rates) are assumed not to occur. This is a slightly peculiar assumption (but presumably the most used in the epidemiological literature) and the resulting object is therefore given an attribute, \code{NOTE}, that point this out. If however \code{muW} is the total mortality in the population (including the diseased) the result is a good approximation to the correct YLL. The default of the \code{surv2} function is to take the possibility of disease into account.} \value{\code{surv1} and \code{surv2} return a matrix whose first column is the ages at the ends of the intervals, thus with \code{length(mu)+1} rows. The following columns are the survival functions (since \code{age.in}), and conditional on survival till ages as indicated in \code{A}, thus a matrix with \code{length(A)+2} columns. Columns are labeled with the actual conditioning ages; if \code{A} contains values that are not among the endpoints of the intervals used, the nearest smaller interval border is used as conditioning age, and columns are named accordingly. \code{surv1} returns the survival function for a simple model with one type of death, occurring at intensity \code{mu}. \code{surv2} returns the survival function for a person in the "Well" state of an illness-death model, taking into account that the person may move to the "Diseased" state, thus requiring all three transition rates to be specified. The conditional survival functions are conditional on being in the "Well" state at ages given in \code{A}. \code{erl1} returns a three column matrix with columns \code{age}, \code{surv} (survival function) and \code{erl} (expected residual life time) with \code{length(mu)+1} rows. \code{erl} returns a two column matrix, columns labeled "Well" and "Dis", and with row-labels \code{A}. The entries are the expected residual life times given survival to \code{A}. If \code{yll=TRUE} the difference between the columns is added as a third column, labeled "YLL". } \author{Bendix Carstensen, \email{b@bxc.dk} } \seealso{ \code{\link{ci.cum}} } \examples{ library( Epi ) data( DMlate ) # Naive Lexis object Lx <- Lexis( entry = list( age = dodm-dobth ), exit = list( age = dox -dobth ), exit.status = factor( !is.na(dodth), labels=c("DM","Dead") ), data = DMlate ) # Cut follow-up at insulin inception Lc <- cutLexis( Lx, cut = Lx$doins-Lx$dob, new.state = "DM/ins", precursor.states = "DM" ) summary( Lc ) # Split in small age intervals Sc <- splitLexis( Lc, breaks=seq(0,120,2) ) summary( Sc ) # Overview of object boxes( Sc, boxpos=TRUE, show.BE=TRUE, scale.R=100 ) # Knots for splines a.kn <- 2:9*10 # Mortality among DM mW <- glm( lex.Xst=="Dead" ~ Ns( age, knots=a.kn ), offset = log(lex.dur), family = poisson, data = subset(Sc,lex.Cst=="DM") ) # Mortality among insulin treated mI <- update( mW, data = subset(Sc,lex.Cst=="DM/ins") ) # Total motality mT <- update( mW, data = Sc ) # Incidence of insulin inception lI <- update( mW, lex.Xst=="DM/ins" ~ . ) # From these we can now derive the fitted rates in intervals of 1 year's # length. In real applications you would use much smaller interval like # 1 month: # int <- 1/12 int <- 1 # Prediction frame to return rates in units of cases per 1 year # - we start at age 40 since rates of insulin inception are largely # indeterminate before age 40 nd <- data.frame( age = seq( 40+int, 110, int ) - int/2, lex.dur = 1 ) muW <- predict( mW, newdata = nd, type = "response" ) muD <- predict( mI, newdata = nd, type = "response" ) lam <- predict( lI, newdata = nd, type = "response" ) # Compute the survival function, and the conditional from ages 50 resp. 70 s1 <- surv1( int, muD, age.in=40, A=c(50,70) ) round( s1, 3 ) s2 <- surv2( int, muW, muD, lam, age.in=40, A=c(50,70) ) round( s2, 3 ) # How much is YLL overrated by ignoring insulin incidence? round( YLL <- cbind( yll( int, muW, muD, lam, A = 41:90, age.in = 40 ), yll( int, muW, muD, lam, A = 41:90, age.in = 40, immune=TRUE ) ), 2 )[seq(1,51,10),] par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, bty="n", las=1 ) matplot( 40:90, YLL, type="l", lty=1, lwd=3, ylim=c(0,10), yaxs="i", xlab="Age" ) } \keyword{survival} Epi/man/plotEst.Rd0000644000176200001440000001057113751040403013464 0ustar liggesusers\name{plotEst} \alias{plotEst} \alias{pointsEst} \alias{linesEst} \title{ Plot estimates with confidence limits (forest plot) } \description{ Plots parameter estimates with confidence intervals, annotated with parameter names. A dot is plotted at the estimate and a horizontal line extending from the lower to the upper limit is superimposed. } \usage{ plotEst( ests, y = dim(ests)[1]:1, txt = rownames(ests), txtpos = y, ylim = range(y)-c(0.5,0), xlab = "", xtic = nice(ests[!is.na(ests)], log = xlog), xlim = range( xtic ), xlog = FALSE, pch = 16, cex = 1, lwd = 2, col = "black", col.txt = "black", font.txt = 1, col.lines = col, col.points = col, vref = NULL, grid = FALSE, col.grid = gray(0.9), restore.par = TRUE, ... ) linesEst( ests, y = dim(ests)[1]:1, pch = 16, cex = 1, lwd = 2, col="black", col.lines=col, col.points=col, ... ) pointsEst( ests, y = dim(ests)[1]:1, pch = 16, cex = 1, lwd = 2, col="black", col.lines=col, col.points=col, ... ) } \arguments{ \item{ests}{Matrix with three columns: Estimate, lower limit, upper limit. If a model object is supplied, \code{\link{ci.lin}} is invoked for this object first.} \item{y}{Vertical position of the lines.} \item{txt}{Annotation of the estimates. Either a character vector or an expression vector.} \item{txtpos}{Vertical position of the text. Defaults to \code{y}.} \item{ylim}{Extent of the vertical axis.} \item{xlab}{Annotation of the horizontal axis.} \item{xtic}{Location of tickmarks on the x-axis.} \item{xlim}{Extent of the x-axis.} \item{xlog}{Should the x-axis be logarithmic?} \item{pch}{What symbol should be used?} \item{cex}{Expansion of the symbol.} \item{col}{Colour of the points and lines.} \item{col.txt}{Colour of the text annotating the estimates.} \item{font.txt}{Font for the text annotating the estimates.} \item{col.lines}{Colour of the lines.} \item{col.points}{Colour of the symbol.} \item{lwd}{Thickness of the lines.} \item{vref}{Where should vertical reference line(s) be drawn?} \item{grid}{If TRUE, vertical gridlines are drawn at the tickmarks. If a numerical vector is given vertical lines are drawn at \code{grid}.} \item{col.grid}{Colour of the vertical gridlines} \item{restore.par}{Should the graphics parameters be restored? If set to \code{FALSE} the coordinate system will still be available for additional plotting, and \code{par("mai")} will still have the very large value set in order to make room for the labelling of the estimates.} \item{...}{Arguments passed on to \code{ci.lin} when a model object is supplied as \code{ests}.} } \details{ \code{plotEst} makes a news plot, whereas \code{linesEst} and \code{pointsEst} (identical functions) adds to an existing plot. If a model object of class \code{"glm"}, \code{"coxph"}, \code{"clogistic"} or \code{"gnlm"} is supplied the argument \code{xlog} defaults to \code{TRUE}, and exponentiated estimates are extracted by default. } \value{ NULL } \author{ Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com}} \seealso{ ci.lin } \examples{ # Bogus data and a linear model f <- factor( sample( letters[1:5], 100, replace=TRUE ) ) x <- rnorm( 100 ) y <- 5 + 2 * as.integer( f ) + 0.8 * x + rnorm(100) * 2 m1 <- lm( y ~ f ) # Produce some confidence intervals for contrast to first level ( cf <- ci.lin( m1, subset=-1 )[,-(2:4)] ) # Plots with increasing amounts of bells and whistles par( mfcol=c(3,2), mar=c(3,3,2,1) ) plotEst( cf ) plotEst( cf, grid=TRUE, cex=2, lwd=3 ) plotEst( cf, grid=TRUE, cex=2, col.points="red", col.lines="green" ) plotEst( cf, grid=TRUE, cex=2, col.points="red", col.lines="green", xlog=TRUE, xtic=c(1:8), xlim=c(0.8,6) ) rownames( cf )[1] <- "Contrast to fa:\n fb" plotEst( cf, grid=TRUE, cex=2, col.points=rainbow(4), col.lines=rainbow(4), vref=1 ) # etxt <- expression("Plain text, qouted", "combined with maths:"*sqrt(a)*phi[c], f^d*" Hb"*A[1][c], eff^e*" kg/"*m^2) plotEst( cf, txt=etxt, grid=TRUE, cex=2, col.points=rainbow(4), col.lines =rainbow(4), vref=1 ) } \keyword{hplot} \keyword{models} Epi/man/fit.add.Rd0000644000176200001440000000265713751040403013351 0ustar liggesusers\name{fit.add} \alias{fit.add} \title{ Fit an addive excess risk model to interval censored data. } \description{ Utility function. The model fitted assumes a piecewise constant intensity for the baseline, and that the covariates act additively on the rate scale. } \usage{ fit.add( y, rates.frame, cov.frame, start ) } \arguments{ \item{y}{Binary vector of outcomes} \item{rates.frame}{Dataframe expanded from the original data by \code{\link{expand.data}}, cooresponding to covariates for the rate parameters.} \item{cov.frame}{ do., but covariates corresponding to the \code{formula} argument of \code{\link{Icens}}} \item{start}{Starting values for the rate parameters. If not supplied, then starting values are generated.} } \value{ A list with one component: \item{rates}{A glm object from a binomial model with log-link function.} } \references{ B Carstensen: Regression models for interval censored survival data: application to HIV infection in Danish homosexual men. Statistics in Medicine, 15(20):2177-2189, 1996. CP Farrington: Interval censored survival data: a generalized linear modelling approach. Statistics in Medicine, 15(3):283-292, 1996. } \author{ Martyn Plummer, \email{martyn.plummer@r-project.org} } \seealso{ \code{\link{Icens}} \code{\link{fit.mult}} } \examples{ data( HIV.dk ) } \keyword{ models } \keyword{ regression } \keyword{ survival } Epi/man/ci.pd.Rd0000644000176200001440000000476313751040403013035 0ustar liggesusers\name{ci.pd} \alias{ci.pd} \title{ Compute confidence limits for a difference of two independent proportions. } \description{ The usual formula for the c.i. of at difference of proportions is inaccurate. Newcombe has compared 11 methods and method 10 in his paper looks like a winner. It is implemented here. } \usage{ ci.pd(aa, bb=NULL, cc=NULL, dd=NULL, method = "Nc", alpha = 0.05, conf.level=0.95, digits = 3, print = TRUE, detail.labs = FALSE ) } \arguments{ \item{aa}{Numeric vector of successes in sample 1. Can also be a matrix or array (see details).} \item{bb}{Successes in sample 2.} \item{cc}{Failures in sample 1.} \item{dd}{Failures in sample 2.} \item{method}{Method to use for calculation of confidence interval, see "Details".} \item{alpha}{Significance level} \item{conf.level}{Confidence level} \item{print}{Should an account of the two by two table be printed.} \item{digits}{How many digits should the result be rounded to if printed.} \item{detail.labs}{Should the computing of probability differences be reported in the labels.} } \details{ Implements method 10 from Newcombe(1998) (method="Nc") or from Agresti & Caffo(2000) (method="AC"). \code{aa}, \code{bb}, \code{cc} and \code{dd} can be vectors. If \code{aa} is a matrix, the elements \code{[1:2,1:2]} are used, with successes \code{aa[,1:2]}. If \code{aa} is a three-way table or array, the elements \code{aa[1:2,1:2,]} are used. } \value{ A matrix with three columns: probability difference, lower and upper limit. The number of rows equals the length of the vectors \code{aa}, \code{bb}, \code{cc} and \code{dd} or, if \code{aa} is a 3-way matrix, \code{dim(aa)[3]}. } \references{ RG Newcombe: Interval estimation for the difference between independent proportions. Comparison of eleven methods. Statistics in Medicine, 17, pp. 873-890, 1998. A Agresti & B Caffo: Simple and effective confidence intervals for proportions and differences of proportions result from adding two successes and two failures. The American Statistician, 54(4), pp. 280-288, 2000. } \author{ Bendix Carstensen, Esa Laara. \url{http://bendixcarstensen.com} } \seealso{ \code{\link{twoby2}}, \code{\link{binom.test}} } \examples{ ( a <- matrix( sample( 10:40, 4 ), 2, 2 ) ) ci.pd( a ) twoby2( t(a) ) prop.test( t(a) ) ( A <- array( sample( 10:40, 20 ), dim=c(2,2,5) ) ) ci.pd( A ) ci.pd( A, detail.labs=TRUE, digits=3 ) } \keyword{distribution} \keyword{htest} Epi/man/steno2.Rd0000644000176200001440000001047614007532512013252 0ustar liggesusers\name{steno2} \alias{steno2} \alias{st2clin} \alias{st2alb} \docType{data} \title{ Clinical trial: Steno2 baseline and follow-up. } \description{ Steno-2 was a clinical trial conducted at Steno Diabetes Center 1993-2001. The intervention was intensified treatment versus conventional treatment of diabetes patients with micro-albuminuria. The datsets here concern the extended follow-up of the trial population till 2015. Three files are provided: \code{steno2} with one record per person, \code{st2clin} with one record per clinical visit and \code{st2alb} with one record per transition between states of albuminuria. These dataset are entirely simulated, but designed to give approximately the same results as the original. } \usage{data("steno2") data("st2clin") data("st2alb") } \format{ \code{steno2} is a data frame with 160 observations on the following 14 variables: \describe{ \item{\code{id}}{person id, numeric} \item{\code{allo}}{Original trial allocation, a factor with levels \code{Int} \code{Conv}} \item{\code{sex}}{Sex, a factor with levels \code{F} \code{M}} \item{\code{baseCVD}}{0/1 indicator of preexisting CVD at baseline} \item{\code{deathCVD}}{0/1 indicator whether cause of death was CVD} \item{\code{doBth}}{Date of birth, a Date} \item{\code{doDM}}{Date of diabetes diagnosis, a Date} \item{\code{doBase}}{Date of entry to study, a Date} \item{\code{doCVD1}}{Date of 1st CVD event, a Date} \item{\code{doCVD2}}{Date of 2nd CVD event, a Date} \item{\code{doCVD3}}{Date of 3rd CVD event, a Date} \item{\code{doESRD}}{Date of end stage renal disease, a Date} \item{\code{doEnd}}{Date of exit from follow-up, a Date} \item{\code{doDth}}{Date of death, a Date} } \code{st2clin} is data frame with 750 observations on clinical measurements at different clinical visits: \describe{ \item{\code{id}}{person id, numeric} \item{\code{doV}}{Date of clinical visit, a Date} \item{\code{a1c}}{Glycosylated hemoglobin, mmol/mol} \item{\code{chol}}{Total cholesterol, mg/mol} \item{\code{crea}}{Creatinine, mg/mol} } \code{st2alb} is data frame with 307 observations of changes in complication (albuminuria) state \describe{ \item{\code{id}}{person id, numeric} \item{\code{doTr}}{Date of transition, a Date} \item{\code{state}}{State of albuminuria, factor with levels \code{Norm}, \code{Mic}, \code{Mac}. All persons begin in the state \code{Mic}ro-albuminuria.} } } \details{ The data are not the original; all values of measurements and dates have been randomly perturbed, to prevent identifiability of individuals. Analysis of these data will give only (very) approximately the same results as in the published article, and only some of the aspects of data are included. } \references{ P. Gaede, J. Oellgaard, B. Carstensen, P. Rossing, H. Lund-Andersen, H. H. Parving & O. Pedersen: Years of life gained by multifactorial intervention in patients with type 2 diabetes mellitus and microalbuminuria: 21 years follow-up on the Steno-2 randomised trial. Diabetologia (2016), 59, pp 2298-2307 } \examples{ data(steno2) data(st2alb) L2 <- Lexis( entry = list(per = doBase, age = doBase - doBth), exit = list(per = doEnd), exit.status = factor(deathCVD + !is.na(doDth), labels=c("Mic","D(oth)","D(CVD)")), id = id, data = cal.yr(steno2) ) summary(L2) # # Cut at intermediate transitions cut2 <- data.frame(lex.id = st2alb$id, cut = cal.yr(st2alb$do), new.state = st2alb$state) L3 <- rcutLexis(L2, cut2) summary(L3) # # no direct transitions Mic <-> Mac allowed, so put a cut in between: dd <- subset(L3, (lex.Cst == "Mac" & lex.Xst =="Norm") | (lex.Cst =="Norm" & lex.Xst == "Mac")) # artificial visits to the middle state Mic: cut3 <- data.frame( lex.id = dd$lex.id, cut = dd$per + dd$lex.dur/2, new.state = "Mic") L4 <- rcutLexis(L3, cut3) summary(L4) # # Show all transitions boxes(L4, boxpos = list(x = c(15,15,15,85,85), y = c(50,15,85,25,75)), show.BE = TRUE, scale.R = 1000, cex=0.8, pos.arr=0.7, font=1, font.arr=1) } \keyword{datasets} Epi/man/boxes.MS.Rd0000644000176200001440000003676113763206455013517 0ustar liggesusers\name{boxes.MS} \Rdversion{1.1} \alias{tbox} \alias{dbox} \alias{fillarr} \alias{boxarr} \alias{boxes} \alias{boxes.Lexis} \alias{boxes.matrix} \alias{boxes.MS} \title{ Draw boxes and arrows for illustration of multistate models. } \description{ Boxes can be drawn with text (\code{tbox}) or a cross (\code{dbox}), and arrows pointing between the boxes (\code{boxarr}) can be drawn automatically not overlapping the boxes. The \code{boxes} method for \code{\link{Lexis}} objects generates displays of states with person-years and transitions with events or rates. } \usage{ tbox( txt, x, y, wd, ht, font=2, lwd=2, col.txt=par("fg"), col.border=par("fg"), col.bg="transparent" ) dbox( x, y, wd, ht=wd, font=2, lwd=2, cwd=5, col.cross=par("fg"), col.border=par("fg"), col.bg="transparent" ) boxarr( b1, b2, offset=FALSE, pos=0.45, ... ) \method{boxes}{Lexis}( obj, boxpos = FALSE, wmult = 1.20, hmult = 1.20 + 0.85*(!show.Y), cex = 1.40, show = inherits( obj, "Lexis" ), show.Y = show, scale.Y = 1, digits.Y = 1, show.BE = FALSE, BE.sep = c("",""," ",""), show.D = show, scale.D = FALSE, digits.D = as.numeric(as.logical(scale.D)), show.R = show & is.numeric(scale.R), scale.R = 1, digits.R = as.numeric(as.logical(scale.R)), DR.sep = if( show.D ) c("\n(",")") else c("",""), eq.wd = TRUE, eq.ht = TRUE, wd, ht, subset = NULL, exclude = NULL, font = 1, lwd = 2, col.txt = par("fg"), col.border = col.txt, col.bg = "transparent", col.arr = par("fg"), lwd.arr = lwd, font.arr = font, pos.arr = 0.45, txt.arr = NULL, col.txt.arr = col.arr, offset.arr = 2, ... ) \method{boxes}{matrix}( obj, ... ) \method{boxes}{MS}( obj, sub.st, sub.tr, cex=1.5, ... ) fillarr( x1, y1, x2, y2, gap=2, fr=0.8, angle=17, lwd=2, length=par("pin")[1]/30, ... ) } \arguments{ \item{txt}{Text to be placed inside the box.} \item{x}{x-coordinate of center of box.} \item{y}{y-coordinate of center of box.} \item{wd}{width of boxes in percentage of the plot width.} \item{ht}{height of boxes in percentage of the plot height.} \item{font}{Font for the text. Defaults to 2 (=bold).} \item{lwd}{Line width of the box borders.} \item{col.txt}{Color for the text in boxes.} \item{col.border}{Color of the box border.} \item{col.bg}{Background color for the interior of the box.} \item{\dots}{Arguments to be passed on to the call of other functions.} \item{cwd}{Width of the lines in the cross.} \item{col.cross}{Color of the cross.} \item{b1}{Coordinates of the "from" box. A vector with 4 components, \code{x}, \code{y}, \code{w}, \code{h}.} \item{b2}{Coordinates of the "to" box; like \code{b1}.} \item{offset}{Logical. Should the arrow be offset a bit to the left.} \item{pos}{Numerical between 0 and 1, determines the position of the point on the arrow which is returned.} \item{obj}{A \code{\link{Lexis}} object or a transition matrix; that is a square matrix indexed by state in both dimensions, and the \eqn{(i,j)}th entry different from \code{NA} if a transition \eqn{i} to \eqn{j} can occur. If \code{show.D=TRUE}, the arrows between states are annotated by these numbers. If \code{show.Y=TRUE}, the boxes representing states are annotated by the numbers in the diagonal of \code{obj}. For \code{boxes.matrix} \code{obj} is a matrix and for \code{boxes.MS}, \code{obj} is an \code{MS.boxes} object (see below).} \item{boxpos}{If \code{TRUE} the boxes are positioned equidistantly on a circle, if \code{FALSE} (the default) you are queried to click on the screen for the positions. This argument can also be a named list with elements \code{x} and \code{y}, both numerical vectors, giving the centers of the boxes. These must be numbers between 0 and 100 indicating percentages of the display in the two directions.} \item{wmult}{Multiplier for the width of the box relative to the width of the text in the box.} \item{hmult}{Multiplier for the height of the box relative to the height of the text in the box.} \item{cex}{Character expansion for text in the box.} \item{show}{Should person-years and transitions be put in the plot. Ignored if \code{obj} is not a \code{Lexis} object.} \item{show.Y}{If logical: Should person-years be put in the boxes. If numeric: Numbers to put in boxes.} \item{scale.Y}{What scale should be used for annotation of person-years.} \item{digits.Y}{How many digits after the decimal point should be used for the person-years.} \item{show.BE}{Logical. Should number of persons beginning resp. ending follow up in each state be shown? If given as character "nz" or "noz" the numbers will be shown, but zeros omitted.} \item{BE.sep}{Character vector of length 4, used for annotation of the number of persons beginning and ending in each state: 1st element precedes no. beginning, 2nd trails it, 3rd precedes the no. ending (defaults to 8 spaces), and the 4th trails the no. ending.} \item{show.D}{Should no. transitions be put alongside the arrows. Ignored if \code{obj} is not a \code{Lexis} object.} \item{scale.D}{Synonymous with \code{scale.R}, retained for compatibility.} \item{digits.D}{Synonymous with \code{digits.R}, retained for compatibility.} \item{show.R}{Should the transition rates be shown on the arrows?} \item{scale.R}{If this a scalar, rates instead of no. transitions are printed at the arrows, scaled by \code{scale.R}.} \item{digits.R}{How many digits after the decimal point should be used for the rates.} \item{DR.sep}{Character vector of length 2. If rates are shown, the first element is inserted before and the second after the rate.} \item{eq.wd}{Should boxes all have the same width?} \item{eq.ht}{Should boxes all have the same height?} \item{subset}{Draw only boxes and arrows for a subset of the states. Can be given either as a numerical vector or character vector state names.} \item{exclude}{Exclude states from the plot. The complementary of \code{subset}. Ignored if \code{subset} is given.} \item{col.arr}{Color of the arrows between boxes. A vector of character strings, the arrows are referred to as the row-wise sequence of non-NA elements of the transition matrix. Thus the first ones refer to the transitions out of state 1, in order of states.} \item{lwd.arr}{Line widths of the arrows.} \item{font.arr}{Font of the text annotation the arrows.} \item{pos.arr}{Numerical between 0 and 1, determines the position on the arrows where the text is written.} \item{txt.arr}{Text put on the arrows.} \item{col.txt.arr}{Colors for text on the arrows.} \item{offset.arr}{The amount offset between arrows representing two-way transitions, that is where there are arrows both ways between two boxes.} \item{sub.st}{Subset of the states to be drawn.} \item{sub.tr}{Subset of the transitions to be drawn.} \item{x1}{x-coordinate of the starting point.} \item{y1}{y-coordinate of the starting point.} \item{x2}{x-coordinate of the end point.} \item{y2}{y-coordinate of the end point.} \item{gap}{Length of the gap between the box and the ends of the arrows.} \item{fr}{Length of the arrow as the fraction of the distance between the boxes. Ignored unless given explicitly, in which case any value given for \code{gap} is ignored.} \item{angle}{What angle should the arrow-head have?} \item{length}{Length of the arrow head in inches. Defaults to 1/30 of the physical width of the plot.} } \details{ These functions are designed to facilitate the drawing of multistate models, mainly by automatic calculation of the arrows between boxes. \code{tbox} draws a box with centered text, and returns a vector of location, height and width of the box. This is used when drawing arrows between boxes. \code{dbox} draws a box with a cross, symbolizing a death state. \code{boxarr} draws an arrow between two boxes, making sure it does not intersect the boxes. Only straight lines are drawn. \code{boxes.Lexis} takes as input a Lexis object sets up an empty plot area (with axes 0 to 100 in both directions) and if \code{boxpos=FALSE} (the default) prompts you to click on the locations for the state boxes, and then draws arrows implied by the actual transitions in the \code{Lexis} object. The default is to annotate the transitions with the number of transitions. A transition matrix can also be supplied, in which case the row/column names are used as state names, diagonal elements taken as person-years, and off-diagonal elements as number of transitions. This also works for \code{boxes.matrix}. Optionally returns the R-code reproducing the plot in a file, which can be useful if you want to produce exactly the same plot with differing arrow colors etc. \code{boxarr} draws an arrow between two boxes, on the line connecting the two box centers. The \code{offset} argument is used to offset the arrow a bit to the left (as seen in the direction of the arrow) on order to accommodate arrows both ways between boxes. \code{boxarr} returns a named list with elements \code{x}, \code{y} and \code{d}, where the two former give the location of a point on the arrow used for printing (see argument \code{pos}) and the latter is a unit vector in the direction of the arrow, which is used by \code{boxes.Lexis} to position the annotation of arrows with the number of transitions. \code{boxes.MS} re-draws what \code{boxes.Lexis} has done based on the object of class \code{MS} produced by \code{boxes.Lexis}. The point being that the \code{MS} object is easily modifiable, and thus it is a machinery to make variations of the plot with different color annotations etc. \code{fill.arr} is just a utility drawing nicer arrows than the default \code{\link{arrows}} command, basically by using filled arrow-heads; called by \code{boxarr}. } \value{The functions \code{tbox} and \code{dbox} return the location and dimension of the boxes, \code{c(x,y,w,h)}, which are designed to be used as input to the \code{boxarr} function. The \code{boxarr} function returns the coordinates (as a named list with names \code{x} and \code{y}) of a point on the arrow, designated to be used for annotation of the arrow. The function \code{boxes.Lexis} returns an \code{MS} object, a list with five elements: 1) \code{Boxes} - a data frame with one row per box and columns \code{xx}, \code{yy}, \code{wd}, \code{ht}, \code{font}, \code{lwd}, \code{col.txt}, \code{col.border} and \code{col.bg}, 2) an object \code{State.names} with names of states (possibly an expression, hence not possible to include as a column in \code{Boxes}), 3) a matrix \code{Tmat}, the transition matrix, 4) a data frame, \code{Arrows} with one row per transition and columns: \code{lwd.arr}, \code{col.arr}, \code{pos.arr}, \code{col.txt.arr}, \code{font.arr} and \code{offset.arr} and 5) an object \code{Arrowtext} with names of states (possibly an expression, hence not possible to include as a column in \code{Arrows}) An \code{MS} object is used as input to \code{boxes.MS}, the primary use is to modify selected entries in the \code{MS} object first, e.g. colors, or supply sub-setting arguments in order to produce displays that have the same structure, but with different colors etc. } \author{Bendix Carstensen} \examples{ par( mar=c(0,0,0,0), cex=1.5 ) plot( NA, bty="n", xlim=0:1*100, ylim=0:1*100, xaxt="n", yaxt="n", xlab="", ylab="" ) bw <- tbox( "Well" , 10, 60, 22, 10, col.txt="blue" ) bo <- tbox( "other Ca", 45, 80, 22, 10, col.txt="gray" ) bc <- tbox( "Ca" , 45, 60, 22, 10, col.txt="red" ) bd <- tbox( "DM" , 45, 40, 22, 10, col.txt="blue" ) bcd <- tbox( "Ca + DM" , 80, 60, 22, 10, col.txt="gray" ) bdc <- tbox( "DM + Ca" , 80, 40, 22, 10, col.txt="red" ) boxarr( bw, bo , col=gray(0.7), lwd=3 ) # Note the argument adj= can takes values outside (0,1) text( boxarr( bw, bc , col="blue", lwd=3 ), expression( lambda[Well] ), col="blue", adj=c(1,-0.2), cex=0.8 ) boxarr( bw, bd , col=gray(0.7) , lwd=3 ) boxarr( bc, bcd, col=gray(0.7) , lwd=3 ) text( boxarr( bd, bdc, col="blue", lwd=3 ), expression( lambda[DM] ), col="blue", adj=c(1.1,-0.2), cex=0.8 ) # Set up a transition matrix allowing recovery tm <- rbind( c(NA,1,1), c(1,NA,1), c(NA,NA,NA) ) rownames(tm) <- colnames(tm) <- c("Cancer","Recurrence","Dead") tm boxes.matrix( tm, boxpos=TRUE ) # Illustrate texting of arrows boxes.Lexis( tm, boxpos=TRUE, txt.arr=c("en","to","tre","fire") ) zz <- boxes( tm, boxpos=TRUE, txt.arr=c(expression(lambda[C]), expression(mu[C]), "recovery", expression(mu[R]) ) ) # Change color of a box zz$Boxes[3,c("col.bg","col.border")] <- "green" boxes( zz ) # Set up a Lexis object data(DMlate) str(DMlate) dml <- Lexis( entry=list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit=list(Per=dox), exit.status=factor(!is.na(dodth),labels=c("DM","Dead")), data=DMlate[1:1000,] ) # Cut follow-up at Insulin dmi <- cutLexis( dml, cut=dml$doins, new.state="Ins", pre="DM" ) summary( dmi ) boxes( dmi, boxpos=TRUE ) boxes( dmi, boxpos=TRUE, show.BE=TRUE ) boxes( dmi, boxpos=TRUE, show.BE="nz" ) boxes( dmi, boxpos=TRUE, show.BE="nz", BE.sep=c("In:"," Out:","") ) # Set up a bogus recovery date just to illustrate two-way transitions dmi$dorec <- dmi$doins + runif(nrow(dmi),0.5,10) dmi$dorec[dmi$dorec>dmi$dox] <- NA dmR <- cutLexis( dmi, cut=dmi$dorec, new.state="DM", pre="Ins" ) summary( dmR ) boxes( dmR, boxpos=TRUE ) boxes( dmR, boxpos=TRUE, show.D=FALSE ) boxes( dmR, boxpos=TRUE, show.D=FALSE, show.Y=FALSE ) boxes( dmR, boxpos=TRUE, scale.R=1000 ) MSobj <- boxes( dmR, boxpos=TRUE, scale.R=1000, show.D=FALSE ) MSobj <- boxes( dmR, boxpos=TRUE, scale.R=1000, DR.sep=c(" (",")") ) class( MSobj ) boxes( MSobj ) MSobj$Boxes[1,c("col.txt","col.border")] <- "red" MSobj$Arrows[1:2,"col.arr"] <- "red" boxes( MSobj ) } \seealso{ \code{\link{tmat.Lexis}} } \keyword{survival} \keyword{hplot} \keyword{iplot} Epi/man/Lexis.diagram.Rd0000644000176200001440000001160213751040403014515 0ustar liggesusers\name{Lexis.diagram} \alias{Lexis.diagram} \title{Plot a Lexis diagram} \description{ Draws a Lexis diagram, optionally with life lines from a cohort, and with lifelines of a cohort if supplied. Intended for presentation purposes. } \usage{ Lexis.diagram( age = c( 0, 60), alab = "Age", date = c( 1940, 2000 ), dlab = "Calendar time", int = 5, lab.int = 2*int, col.life = "black", lwd.life = 2, age.grid = TRUE, date.grid = TRUE, coh.grid = FALSE, col.grid = gray(0.7), lwd.grid = 1, las = 1, entry.date = NA, entry.age = NA, exit.date = NA, exit.age = NA, risk.time = NA, birth.date = NA, fail = NA, cex.fail = 1.1, pch.fail = c(NA,16), col.fail = rep( col.life, 2 ), data = NULL, ... ) } \arguments{ \item{age}{Numerical vector of length 2, giving the age-range for the diagram} \item{alab}{Label on the age-axis.} \item{date}{Numerical vector of length 2, giving the calendar time-range for the diagram} \item{dlab}{label on the calendar time axis.} \item{int}{The interval between grid lines in the diagram. If a vector of length two is given, the first value will be used for spacing of age-grid and the second for spacing of the date grid.} \item{lab.int}{The interval between labelling of the grids.} \item{col.life}{Colour of the life lines.} \item{lwd.life}{Width of the life lines.} \item{age.grid}{Should grid lines be drawn for age?} \item{date.grid}{Should grid lines be drawn for date?} \item{coh.grid}{Should grid lines be drawn for birth cohorts (diagonals)?} \item{col.grid}{Colour of the grid lines.} \item{lwd.grid}{Width of the grid lines.} \item{las}{How are the axis labels plotted?} \item{entry.date, entry.age, exit.date, exit.age, risk.time, birth.date}{Numerical vectors defining lifelines to be plotted in the diagram. At least three must be given to produce lines. Not all subsets of three will suffice, the given subset has to define life lines. If insufficient data is given, no life lines are produced.} \item{fail}{Logical of event status at exit for the persons whose life lines are plotted.} \item{pch.fail}{Symbols at the end of the life lines for censorings (\code{fail==0}) and failures (\code{fail != 0}).} \item{cex.fail}{Expansion of the status marks at the end of life lines.} \item{col.fail}{Character vector of length 2 giving the colour of the failure marks for censorings and failures respectively.} \item{data}{Dataframe in which to interpret the arguments.} \item{...}{Arguments to be passed on to the initial call to plot.} } \value{ If sufficient information on lifelines is given, a data frame with one row per person and columns with entry ages and dates, birth date, risk time and status filled in. Side effect: a plot of a Lexis diagram is produced with the life lines in it is produced. This will be the main reason for using the function. If the primary aim is to illustrate follow-up of a cohort, then it is better to represent the follow-up in a \code{\link{Lexis}} object, and use the generic \code{\link{plot.Lexis}} function. } \details{ The default unit for supplied variables are (calendar) years. If any of the variables \code{entry.date}, \code{exit.date} or \code{birth.date} are of class "\code{Date}" or if any of the variables \code{entry.age}, \code{exit.age} or \code{risk.time} are of class "\code{difftime}", they will be converted to calendar years, and plotted correctly in the diagram. The returned dataframe will then have colums of classes "\code{Date}" and "\code{difftime}". } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \examples{ Lexis.diagram( entry.age = c(3,30,45), risk.time = c(25,5,14), birth.date = c(1970,1931,1925.7), fail = c(TRUE,TRUE,FALSE) ) LL <- Lexis.diagram( entry.age = sample( 0:50, 17, replace=TRUE ), risk.time = sample( 5:40, 17, r=TRUE), birth.date = sample( 1910:1980, 17, r=TRUE ), fail = sample( 0:1, 17, r=TRUE ), cex.fail = 1.1, lwd.life = 2 ) # Identify the persons' entry and exits text( LL$exit.date, LL$exit.age, paste(1:nrow(LL)), col="red", font=2, adj=c(0,1) ) text( LL$entry.date, LL$entry.age, paste(1:nrow(LL)), col="blue", font=2, adj=c(1,0) ) data( nickel ) attach( nickel ) LL <- Lexis.diagram( age=c(10,100), date=c(1900,1990), entry.age=age1st, exit.age=ageout, birth.date=dob, fail=(icd \%in\% c(162,163)), lwd.life=1, cex.fail=0.8, col.fail=c("green","red") ) abline( v=1934, col="blue" ) nickel[1:10,] LL[1:10,] } \keyword{hplot} \keyword{dplot} \seealso{ \code{\link{Life.lines}}, \code{\link{Lexis.lines}} } Epi/man/cal.yr.Rd0000644000176200001440000000554513751040403013227 0ustar liggesusers\name{cal.yr} \alias{cal.yr} \alias{as.Date.cal.yr} \title{ Functions to convert character, factor and various date objects into a number, and vice versa. } \description{ Dates are converted to a numerical value, giving the calendar year as a fractional number. 1 January 1970 is converted to 1970.0, and other dates are converted by assuming that years are all 365.25 days long, so inaccuracies may arise, for example, 1 Jan 2000 is converted to 1999.999. Differences between converted values will be 1/365.25 of the difference between corresponding \code{\link{Date}} objects. } \usage{ cal.yr( x, format="\%Y-\%m-\%d", wh=NULL ) \method{as.Date}{cal.yr}( x, ... ) } \arguments{ \item{x}{A factor or character vector, representing a date in format \code{format}, or an object of class \code{\link{Date}}, \code{\link{POSIXlt}}, \code{\link{POSIXct}}, \code{\link{date}}, \code{dates} or \code{chron} (the latter two requires the \code{chron} package). If \code{x} is a data frame, all variables in the data-frame which are of one the classes mentioned are converted to class \code{cal.yr}. See arguemt \code{wh}, though.} \item{format}{Format of the date values if \code{x} is factor or character. If this argument is supplied and \code{x} is a datafame, all character variables are converted to class \code{cal.yr}. Factors in the dataframe will be ignored.} \item{wh}{Indices of the variables to convert if \code{x} is a data frame. Can be either a numerical or character vector.} \item{...}{Arguments passed on from other methods.} } \value{ \code{cal.yr} returns a numerical vector of the same length as \code{x}, of class \code{c("cal.yr","numeric")}. If \code{x} is a data frame a dataframe with some of the columns converted to class \code{"cal.yr"} is returned. \code{as.Date.cal.yr} returns a \code{\link{Date}} object. } \author{ Bendix Carstensen, Steno Diabetes Center \& Dept. of Biostatistics, University of Copenhagen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{DateTimeClasses}}, \code{\link{Date}} } \examples{ # Character vector of dates: birth <- c("14/07/1852","01/04/1954","10/06/1987","16/05/1990", "12/11/1980","01/01/1997","01/01/1998","01/01/1999") # Proper conversion to class "Date": birth.dat <- as.Date( birth, format="\%d/\%m/\%Y" ) # Converson of character to class "cal.yr" bt.yr <- cal.yr( birth, format="\%d/\%m/\%Y" ) # Back to class "Date": bt.dat <- as.Date( bt.yr ) # Numerical calculation of days since 1.1.1970: days <- Days <- (bt.yr-1970)*365.25 # Blunt assignment of class: class( Days ) <- "Date" # Then data.frame() to get readable output of results: data.frame( birth, birth.dat, bt.yr, bt.dat, days, Days, round(Days) ) } \keyword{manip} \keyword{chron} Epi/man/stattable.Rd0000644000176200001440000001135313751040403014014 0ustar liggesusers\name{stat.table} \alias{stat.table} \alias{print.stat.table} \title{Tables of summary statistics} \description{ \code{stat.table} creates tabular summaries of the data, using a limited set of functions. A list of index variables is used to cross-classify summary statistics. It does NOT work inside \code{with()}! } \usage{ stat.table(index, contents = count(), data, margins = FALSE) \method{print}{stat.table}(x, width=7, digits,...) } \arguments{ \item{index}{A factor, or list of factors, used for cross-classification. If the list is named, then the names will be used when printing the table. This feature can be used to give informative labels to the variables.} \item{contents}{A function call, or list of function calls. Only a limited set of functions may be called (See Details below). If the list is named, then the names will be used when printing the table.} \item{data}{an optional data frame containing the variables to be tabulated. If this is omitted, the variables will be searched for in the calling environment.} \item{margins}{a logical scalar or vector indicating which marginal tables are to be calculated. If a vector, it should be the same length as the \code{index} argument: values corresponding to \code{TRUE} will be retained in marginal tables.} \item{x}{an object of class \code{stat.table}.} \item{width}{a scalar giving the minimum column width when printing.} \item{digits}{a scalar, or named vector, giving the number of digits to print after the decimal point. If a named vector is used, the names should correspond to one of the permitted functions (See Details below) and all results obtained with that function will be printed with the same precision.} \item{...}{further arguments passed to other print methods.} } \details{ This function is similar to \code{tapply}, with some enhancements: multiple summaries of multiple variables may be mixed in the same table; marginal tables may be calculated; columns and rows may be given informative labels; pretty printing may be controlled by the associated print method. This function is not a replacement for \code{tapply} as it also has some limitations. The only functions that may be used in the \code{contents} argument are: \code{\link{count}}, \code{\link{mean}}, \code{\link{weighted.mean}}, \code{\link{sum}}, \code{\link{quantile}}, \code{\link{median}}, \code{\link{IQR}}, \code{\link{max}}, \code{\link{min}}, \code{\link{ratio}}, \code{\link{percent}}, and \code{\link{sd}}. The \code{count()} function, which is the default, simply creates a contingency table of counts. The other functions are applied to each cell created by combinations of the \code{index} variables. } \value{ An object of class \code{stat.table}, which is a multi-dimensional array. A print method is available to create formatted one-way and two-way tables. } \author{Martyn Plummer} \note{ The permitted functions in the contents list %are overloaded functions that are defined inside \code{stat.table}. They have the same interface as the functions callable from the command line, except for two differences. If there is an argument \code{na.rm} then its default value is always \code{TRUE}. A second difference is that the \code{quantile} function can only produce a single quantile in each call. } \seealso{\code{\link{table}}, \code{\link{tapply}}, \code{\link{mean}}, \code{\link{weighted.mean}}, \code{\link{sum}}, \code{\link{quantile}}, \code{\link{median}}, \code{\link{IQR}}, \code{\link{max}}, \code{\link{min}}, \code{\link{ratio}}, \code{\link{percent}}, \code{\link{count}}, \code{\link{sd}}.} \examples{ data(warpbreaks) # A one-way table stat.table(tension,list(count(),mean(breaks)),data=warpbreaks) # The same table with informative labels stat.table(index=list("Tension level"=tension),list(N=count(), "mean number of breaks"=mean(breaks)),data=warpbreaks) # A two-way table stat.table(index=list(tension,wool),mean(breaks),data=warpbreaks) # The same table with margins over tension, but not wool stat.table(index=list(tension,wool),mean(breaks),data=warpbreaks, margins=c(TRUE, FALSE)) # A table of column percentages stat.table(list(tension,wool), percent(tension), data=warpbreaks) # Cell percentages, with margins stat.table(list(tension,wool),percent(tension,wool), margin=TRUE, data=warpbreaks) # A table with multiple statistics # Note how each statistic has its own default precision a <- stat.table(index=list(wool,tension), contents=list(count(),mean(breaks),percent (wool)), data=warpbreaks) print(a) # Print the percentages rounded to the nearest integer print(a, digits=c(percent=0)) } \keyword{iteration} \keyword{category} Epi/man/fit.mult.Rd0000644000176200001440000000360413751040403013573 0ustar liggesusers\name{fit.mult} \alias{fit.mult} \title{ Fits a multiplicative relative risk model to interval censored data. } \description{ Utility function. The model fitted assumes a piecewise constant baseline rate in intervals specified by the argument \code{breaks}, and a multiplicative relative risk function. } \usage{ fit.mult( y, rates.frame, cov.frame, start ) } \arguments{ \item{y}{Binary vector of outcomes} \item{rates.frame}{Dataframe expanded from the original data by \code{\link{expand.data}}, cooresponding to covariates for the rate parameters.} \item{cov.frame}{ do., but covariates corresponding to the \code{formula} argument of \code{\link{Icens}}} \item{start}{Starting values for the rate parameters. If not supplied, then starting values are generated.} } \details{ The model is fitted by alternating between two generalized linear models where one estimates the underlying rates in the intervals, and the other estimates the log-relative risks. } \value{ A list with three components: \item{rates}{A glm object from a binomial model with log-link, estimating the baseline rates.} \item{cov}{A glm object from a binomial model with complementary log-log link, estimating the log-rate-ratios} \item{niter}{Nuber of iterations, a scalar} } \references{ B Carstensen: Regression models for interval censored survival data: application to HIV infection in Danish homosexual men. Statistics in Medicine, 15(20):2177-2189, 1996. CP Farrington: Interval censored survival data: a generalized linear modelling approach. Statistics in Medicine, 15(3):283-292, 1996. } \author{ Martyn Plummer, \email{martyn.plummer@r-project.org}, Bendix Carstensen, \email{b@bxc.dk} } \seealso{ \code{\link{Icens}} \code{\link{fit.add}} } \examples{ data( HIV.dk ) } \keyword{ models } \keyword{ regression } \keyword{ survival } Epi/man/matshade.Rd0000644000176200001440000000776013751040403013626 0ustar liggesusers\name{matshade} \alias{matshade} \title{ Plot confidence intervals as shaded areas around lines. } \description{ Uses an x-vector and a matrix of 3*N columns with estimates and ci.s to produce the lines of estimates and confidence intervals as shaded areas in transparent colours around the lines of the estimates. } \usage{ matshade( x, y, lty = 1, col = 1:(ncol(y)/3), col.shade=col, alpha=0.15, plot = dev.cur()==1, ... ) } \arguments{ \item{x}{Numerical vector. Unlike \code{\link{matplot}} this can only be a vector. } \item{y}{A matrix with 3*N columns --- representing estimates and confidence bounds for N curves. Order of columns are assumed to be (est,lo,hi,est,lo,hi...) (or (est,hi,lo...)) } \item{lty}{Line types for the curves. } \item{col}{Color(s) of the estimated curves. } \item{col.shade}{Color(s) of the shaded areas. These are the colors that are made transparent by the \code{alpha} factor. Defaults to the same colors as the lines. } \item{alpha}{Number in [0,1] indicating the transparency of the colors for the confidence intervals. Larger values makes the shades darker. Can be a vector which then applies to the curves in turn. } \item{plot}{Logical. Should a new plot frame be started? If no device is active, the default is to start one, and plot all \code{y}s versus x in transparent color. On the rare occasion a device is open, but no plot have been called you will get an error telling that plot.new has not been called yet, in which case you should explicitly set \code{plot} to \code{TRUE}. } \item{\dots}{Arguments passed on to \code{\link{matplot}} (if \code{plot=TRUE}) and \code{\link{matlines}} for use when plotting the lines. Note that \code{lwd=0} will cause lines to be omitted and only the shades be plotted. } } \details{All shaded areas are plotted first, the curves added afterwards, so that lines are not 'overshadowed'. If there are NAs in \code{x} or \code{y} there will be separate shaded areas for each non-\code{NA} sequence. Applies separately to each set of confidence bands in \code{y}. Note that if you repeat the same command, you will get the curves and the shaded areas overplotted in the same frame, so the effect is to have the shades darker, because the transparent colors are plotted on top of those from the first command. } \value{NULL. Used for its side effects. } \author{Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{\code{\link{pc.matshade}} } \examples{ # Follow-up data of Danish DM patients data( DMlate ) mL <- Lexis( entry=list(age=dodm-dobth,per=dodm), exit=list(per=dox), exit.status=factor(!is.na(dodth),labels=c("Alive","Dead")), data=DMlate ) # Split follow-up and model by splines sL <- splitLexis( mL, breaks=0:100, time.scale="age") \dontrun{ # the same thing with popEpi sL <- splitMulti( mL, age=0:100 ) } # Mortality rates separately for M and F: mort <- glm( (lex.Xst=="Dead") ~ sex*Ns(age,knots=c(15,3:8*10)), offset = log(lex.dur), family = poisson, data = sL ) \dontrun{ # The counterpart with gam library( mgcv ) mort <- gam( (lex.Xst=="Dead") ~ s(age,by=sex) + sex, offset = log(lex.dur), family = poisson, data = sL ) } # predict rates (per 1000 PY) for men and women ndM <- data.frame( age=10:90, sex="M", lex.dur=1 ) ndF <- data.frame( age=10:90, sex="F", lex.dur=1 ) # gam objects ignores the offset in prediction so # lex.dur=1000 in prediction frame wll not work. prM <- ci.pred( mort, ndM )*1000 prF <- ci.pred( mort, ndF )*1000 # predict rate-ratio MFr <- ci.exp( mort, ctr.mat=list(ndM,ndF) ) # plot lines with shaded confidence limits # for illustration we make a holes for the RRs: MFr[40:45,2] <- NA MFr[44:49,1] <- NA matshade( ndM$age, cbind( MFr, prF, prM ), col=c(1,2,4), lwd=3, log="y", xlab="Age", ylab="Mortality per 1000 PY (and RR)" ) abline( h=1 ) } \keyword{color} Epi/man/apc.LCa.Rd0000644000176200001440000000550713751040403013236 0ustar liggesusers\name{apc.LCa} \alias{apc.LCa} \alias{show.apc.LCa} \title{Fit Age-Period-Cohort models and Lee-Carter models with effects modeled by natural splines. } \description{ \code{apc.LCa} fits an Age-Period-Cohort model and sub-models (using \code{\link{apc.fit}}) as well as Lee-Carter models (using \code{\link{LCa.fit}}). \code{show.apc.LCa} plots the models in little boxes with their residual deviance with arrows showing their relationships. } \usage{ apc.LCa( data, keep.models = FALSE, ... ) show.apc.LCa( x, dev.scale = TRUE, top = "Ad", ... ) } \arguments{ \item{data}{A data frame that must have columns \code{A}, \code{P}, \code{D} and \code{Y}, see e.g. \code{\link{apc.fit}} } \item{keep.models}{Logical. Should the \code{apc} object and the 5 \code{LCa} objects be returned too? } \item{...}{Further parameters passed on to \code{\link{LCa.fit}} or \code{\link{boxes.matrix}}. } \item{x}{The result from a call to \code{apc.LCa}.} \item{dev.scale}{Should the vertical position of the boxes with the models be scales relative to the deviance between the Age-drift model and the extended Lee-Carter model?} \item{top}{The model presented at the top of the plot of boxes (together with any other model with larger deviance) when vertical position is scaled by deviances. Only "Ad", "AP", "AC", "APa" or "ACa" will make sense.} } \details{The function \code{apc.LCa} fits all 9 models (well, 10) available as extension and sub-models of the APC-model and compares them by returning deviance and residual df. } \value{A 9 by 2 matrix classified by model and deviance/df; optionally (if \code{models=TRUE}) a list with the matrix as \code{dev}, \code{apc}, an \code{apc} object (from \code{\link{apc.fit}}), and \code{LCa}, a list with 5 \code{LCa} objects (from \code{\link{LCa.fit}}). } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{ \link{apc.fit}}, \code{\link{LCa.fit} } } \examples{ library( Epi ) clear() # Danish lung cancer incidence in 5x5x5 Lexis triangles data( lungDK ) lc <- subset( lungDK, Ax>40 )[,c("Ax","Px","D","Y")] names( lc )[1:2] <- c("A","P") head( lc ) al <- apc.LCa( lc, npar=c(9,6,6,6,10), keep.models=TRUE, maxit=500, eps=10e-3 ) show.apc.LCa( al, dev=TRUE ) # Danish mortality data \dontrun{ data( M.dk ) mdk <- subset( M.dk, sex==1 )[,c("A","P","D","Y")] head( mdk ) al <- apc.LCa( mdk, npar=c(15,15,20,6,6), maxit=50, eps=10e-3, quiet=FALSE, VC=FALSE ) show.apc.LCa( al, dev=FALSE ) show.apc.LCa( al, dev=TRUE ) show.apc.LCa( al, top="AP" ) # Fit a reasonable model to Danish mortality data and plot results mAPa <- LCa.fit( mdk, model="APa", npar=c(15,15,20,6,6), c.ref=1930, a.ref=70, quiet=FALSE, maxit=250 ) par( mfrow=c(1,3) ) plot( mAPa ) } } \keyword{regression} \keyword{models} Epi/man/thoro.Rd0000644000176200001440000000401113751040403013155 0ustar liggesusers\name{thoro} \alias{thoro} \docType{data} \title{Thorotrast Study} \description{ The \code{thoro} data frame has 2470 rows and 14 columns. Each row represents one patient that have had cerebral angiography (X-ray of the brain) with an injected contrast medium, either Thorotrast or another one (the controls). } \format{ This data frame contains the following columns: \describe{ \item{\code{id}}{Identification of person.} \item{\code{sex}}{Sex, 1: male / 2: female.} \item{\code{birthdat}}{Date of birth, \code{Date} variable.} \item{\code{contrast}}{Group, 1: Thorotrast / 2: Control.} \item{\code{injecdat}}{Date of contrast injection, \code{Date} variable.} \item{\code{volume}}{Injected volume of Thorotrast in ml. Control patients have a 0 in this variable.} \item{\code{exitdat}}{Date of exit from the study, \code{Date} variable.} \item{\code{exitstat}}{Status at exit, 1: dead / 2: alive, censored at closing of study, 20 February 1992 / 3: censored alive at some earlier date.} \item{\code{cause}}{Cause of death. See causes in the helpfile for \code{\link{gmortDK}}.} \item{\code{liverdat}}{Date of liver cancer diagnosis, \code{Date} variable.} \item{\code{liver}}{Indicator of liver cancer diagnosis. Not all livercancers are histologically verified, hence \code{liver >= hepcc + chola + hmang}} \item{\code{hepcc}}{Hepatocellular carcinoma at \code{liverdat}.} \item{\code{chola}}{Cholangiocellular carcinoma at \code{liverdat}.} \item{\code{hmang}}{Haemangisarcoma carcinoma at \code{liverdat}.} } } \source{ M Andersson, M Vyberg, J Visfeldt, B Carstensen & HH Storm: Primary liver tumours among Danish patients exposed to Thorotrast. Radiation Research, 137, pp. 262--273, 1994. M Andersson, B Carstensen HH Storm: Mortality and cancer incidence after cerebral angiography. Radiation Research, 142, pp. 305--320, 1995. } \examples{ data(thoro) str(thoro) } \seealso{\code{\link{mortDK}}, \code{\link{gmortDK}}} \keyword{datasets} Epi/man/clogistic.Rd0000644000176200001440000000656013751040403014015 0ustar liggesusers\name{clogistic} \alias{clogistic} \title{Conditional logistic regression} \description{ Estimates a logistic regression model by maximizing the conditional likelihood. The conditional likelihood calculations are exact, and scale efficiently to strata with large numbers of cases. } \usage{ clogistic(formula, strata, data, subset, na.action, init, model = TRUE, x = FALSE, y = TRUE, contrasts = NULL, iter.max=20, eps=1e-6, toler.chol = sqrt(.Machine$double.eps)) } \arguments{ \item{formula}{Model formula} \item{strata}{Factor describing membership of strata for conditioning} \item{data}{data frame containing the variables in the formula and strata arguments} \item{subset}{subset of records to use} \item{na.action}{missing value handling} \item{init}{initial values} \item{model}{ a logical value indicating whether \emph{model frame} should be included as a component of the returned value} \item{x,y}{ logical values indicating whether the response vector and model matrix used in the fitting process should be returned as components of the returned value. } \item{contrasts}{ an optional list. See the \code{contrasts.arg} of \code{model.matrix.default} } \item{iter.max}{maximum number of iterations} \item{eps}{ Convergence tolerance. Iteration continues until the relative change in the conditional log likelihood is less than \code{eps}. Must be positive. } \item{toler.chol}{ Tolerance used for detection of a singularity during a Cholesky decomposition of the variance matrix. This is used to detect redundant predictor variables. Must be less than \code{eps}. } } \value{ An object of class \code{"clogistic"}. This is a list containing the following components: \item{coefficients}{ the estimates of the log-odds ratio parameters. If the model is over-determined there will be missing values in the vector corresponding to the redundant columns in the model matrix. } \item{var}{ the variance matrix of the coefficients. Rows and columns corresponding to any missing coefficients are set to zero. } \item{loglik}{ a vector of length 2 containing the log-likelihood with the initial values and with the final values of the coefficients. } \item{iter}{ number of iterations used. } \item{n}{ number of observations used. Observations may be dropped either because they are missing, or because they belong to a homogeneous stratum. For more details on which observations were used, see \code{informative} below. } \item{informative}{ if \code{model=TRUE}, a logical vector of length equal to the number of rows in the model frame. This indicates whether an observation is informative. Strata that are homogeneous with respect to either the outcome variable or the predictor variables are uninformative, in the sense that they can be removed without modifying the estimates or standard errors. If \code{model=FALSE}, this is NULL. } The output will also contain the following, for documentation see the \code{glm} object: \code{terms}, \code{formula}, \code{call}, \code{contrasts}, \code{xlevels}, and, optionally, \code{x}, \code{y}, and/or \code{frame}. } \examples{ data(bdendo) clogistic(d ~ cest + dur, strata=set, data=bdendo) } \author{Martyn Plummer} \seealso{\code{\link{glm}}} \keyword{models} Epi/man/testisDK.Rd0000644000176200001440000000115413751040403013561 0ustar liggesusers\name{testisDK} \alias{testisDK} \docType{data} \title{Testis cancer incidence in Denmark, 1943--1996 } \description{Number of testiscancer cases and male person-years in the Danish population 1943--1996} \usage{data(testisDK)} \format{ A data frame with 4860 observations on the following 4 variables. \describe{ \item{\code{A}}{Age class, 0,1,2,...,89} \item{\code{P}}{Year, 1943,...,1996} \item{\code{D}}{Number of testis cancer cases} \item{\code{Y}}{Person years} } } \source{The Danish Cancer Registry } \examples{ data(testisDK) head(testisDK) } \keyword{datasets} Epi/man/expand.data.Rd0000644000176200001440000000334713751040403014224 0ustar liggesusers\name{expand.data} \alias{expand.data} \title{ Function to expand data for regression analysis of interval censored data. } \description{ This is a utility function. The original records with \code{first.well}, \code{last.well} and \code{first.ill} are expanded to multiple records; several for each interval where the person is known to be well and one where the person is known to fail. At the same time columns for the covariates needed to estimate rates and the response variable are generated. } \usage{ expand.data(fu, formula, breaks, data) } \arguments{ \item{fu}{A 3-column matrix with \code{first.well}, \code{last.well} and \code{first.ill} in each row.} \item{formula}{Model fromula, used to derive the model matrix.} \item{breaks}{Defines the intervals in which the baseline rate is assumed constant. All follow-up before the first and after the last break is discarded.} \item{data}{Datafrem in which \code{fu} and \code{formula} is interpreted.} } \value{ Returns a list with three components \item{rates.frame}{Dataframe of covariates for estimation of the baseline rates --- one per interval defined by \code{breaks}.} \item{cov.frame}{Dataframe for estimation of the covariate effects. A data-framed version of the designmatrix from \code{formula}.} \item{y}{Response vector.} } \references{ B Carstensen: Regression models for interval censored survival data: application to HIV infection in Danish homosexual men. Statistics in Medicine, 15(20):2177-2189, 1996. } \author{ Martyn Plummer, \email{martyn.plummer@r-project.org} } \seealso{ \code{\link{Icens}} \code{\link{fit.mult}} \code{\link{fit.add}} } \keyword{ models } \keyword{ regression } \keyword{ survival } Epi/man/start.Lexis.Rd0000644000176200001440000000543013751040403014250 0ustar liggesusers\name{entry.Lexis} \alias{entry} \alias{exit} \alias{status} \alias{dur} \alias{transient} \alias{absorbing} \alias{before} \alias{preceding} \alias{after} \alias{succeeding} \title{Time series and other methods for Lexis objects} \description{ Extract the entry time, exit time, status or duration of follow-up from a \code{Lexis} object. Classify states. } \usage{ entry( x, time.scale = NULL, by.id=FALSE ) exit( x, time.scale = NULL, by.id=FALSE ) status( x, at="exit" , by.id=FALSE ) dur( x, by.id=FALSE ) transient( x ) absorbing( x ) preceding( x, states ) before( x, states ) succeeding( x, states ) after( x, states ) } \arguments{ \item{x}{an object of class \code{Lexis}.} \item{time.scale}{a string or integer indicating the time scale. If omitted, all times scales are used.} \item{by.id}{Logical, if \code{TRUE}, only one record per unique value of \code{lex.id} is returned; either the first, the last, or for \code{dur}, the sum of \code{lex.dur}. If \code{TRUE}, the returned object have the \code{lex.id} as (row)names attribute.} \item{at}{string indicating the time point(s) at which status is to be measured. Possible values are "exit" or "entry".} \item{states}{Character vector of states.} } \value{ The \code{entry} and \code{exit} functions return a vector of entry times and exit times, respectively, on the requested time scale. If multiple time scales are requested, a matrix is returned. The \code{status} function returns a vector giving the status at "\code{at}" (either '\code{entry}' or '\code{exit}') and \code{dur} returns a vector with the lengths of the follow-up intervals. \code{entry}, \code{exit}, \code{status} and \code{dur} return vectors of length \code{nrow(x)} if \code{by.id=FALSE}; if \code{by.id=TRUE} a vector of length \code{length(unique(lex.id))}. The functions \code{transient} and \code{absorbing} return character vectors of the transient, resp. absorbing states in \code{x}. These are necessariy disjoint but the union may be a proper subset of \code{levels(x)}, since the latter may have levels that are never assumed by either \code{lex.Cst} or \code{lex.Xst}. \code{preceding} returns a character vector with names of the states of the Lexis object \code{x} from which one of the states in \code{states} can be reached directly - the preceding states. \code{before} is just a synonym for \code{preceding}. \code{succeeding} returns a character vector with names of the states of the Lexis object \code{x} that can be reached directly from one of the states in \code{states}. \code{after} is just a synonym for \code{succeeding}. } \author{Martyn Plummer & Bendix Carstensen} \seealso{\code{\link{Lexis}}} \keyword{survival} \keyword{ts} Epi/man/brv.Rd0000644000176200001440000000363213751040403012623 0ustar liggesusers\name{brv} \alias{brv} \docType{data} \title{Bereavement in an elderly cohort} \description{ The \code{brv} data frame has 399 rows and 11 columns. The data concern the possible effect of marital bereavement on subsequent mortality. They arose from a survey of the physical and mental health of a cohort of 75-year-olds in one large general practice. These data concern mortality up to 1 January, 1990 (although further follow-up has now taken place). Subjects included all lived with a living spouse when they entered the study. There are three distinct groups of such subjects: (1) those in which both members of the couple were over 75 and therefore included in the cohort, (2) those whose spouse was below 75 (and was not, therefore, part of the main cohort study), and (3) those living in larger households (that is, not just with their spouse). } \format{ This data frame contains the following columns: \describe{ \item{\code{id}}{subject identifier, a numeric vector} \item{\code{couple}}{couple identifier, a numeric vector} \item{\code{dob}}{date of birth, a date} \item{\code{doe}}{date of entry into follow-up study, a date} \item{\code{dox}}{date of exit from follow-up study, a date} \item{\code{dosp}}{date of death of spouse, a date (if the spouse was still alive at the end of follow-up,this was coded to January 1, 2000)} \item{\code{fail}}{status at end of follow-up, a numeric vector (0=alive,1=dead)} \item{\code{group}}{see Description, a numeric vector} \item{\code{disab}}{disability score, a numeric vector} \item{\code{health}}{perceived health status score, a numeric vector} \item{\code{sex}}{a factor with levels \code{Male} and \code{Female} } } } \source{ Jagger C, and Sutton CJ, Death after Marital Bereavement. Statistics in Medicine, 10:395-404, 1991. (Data supplied by Carol Jagger). } \examples{ data(brv) } \keyword{datasets} Epi/man/subset.Lexis.Rd0000644000176200001440000000225313766441333014435 0ustar liggesusers\name{subset.Lexis} \alias{subset.Lexis} \alias{[.Lexis} \alias{subset.stacked.Lexis} \title{Subsetting Lexis (and stacked.Lexis) objects} \description{ Return subsets of Lexis objects which meet conditions } \usage{ \method{subset}{Lexis}(x, ...) \method{[}{Lexis}(x, ...) \method{subset}{stacked.Lexis}(x, ...) } \arguments{ \item{x}{an object of class \code{Lexis}} \item{\dots}{additional arguments to be passed to \code{subset.data.frame}. This will normally be some logical expression selecting a subset of the rows. For details see \code{\link{subset.data.frame}}.} } \details{ The subset method for \code{Lexis} objects works exactly as the method for data frames. So does the "[" method. The special methods are needed in order to propagate the Lexis-specific attributes. The method for \code{stacked.Lexis} objects also shrinks the set of levels for \code{lex.Cst} and \code{lex.Xst} to those actually occurring in the resulting data frame. } \value{ A \code{Lexis} object with selected rows and columns. } \author{Martyn Plummer} \seealso{\code{\link{Lexis}}, \code{\link{merge.Lexis}}, \code{\link{bootLexis}}} \keyword{manip} Epi/man/stattable.funs.Rd0000644000176200001440000000332413751040403014765 0ustar liggesusers\name{stattable.funs} \alias{count} \alias{percent} \alias{ratio} \title{Special functions for use in stat.table} \description{ These functions may be used as \code{contents} arguments to the function \code{stat.table}. They are defined internally in \code{stat.table} and have no independent existence. } \usage{ count(id) ratio(d,y,scale=1, na.rm=TRUE) percent(...) } \arguments{ \item{id}{numeric vector in which identical values identify the same individual.} \item{d, y}{numeric vectors of equal length (\code{d} for Deaths, \code{y} for person-Years)} \item{scale}{a scalar giving a value by which the ratio should be multiplied} \item{na.rm}{a logical value indicating whether \code{NA} values should be stripped before computation proceeds.} \item{...}{a list of variables taken from the \code{index} argument to \code{\link{stat.table}}} } \value{ When used as a \code{contents} argument to \code{stat.table}, these functions create the following tables: \item{\code{count}}{If given without argument (\code{count()}) it returns a contingency table of counts. If given an \code{id} argument it returns a table of the number of different values of \code{id} in each cell, i.e. how many persons contribute in each cell.} \item{\code{ratio}}{returns a table of values \code{scale * sum(d)/sum(y)}} \item{\code{percent}}{returns a table of percentages of the classifying variables. Variables that are in the \code{index} argument to \code{stat.table} but not in the call to \code{percent} are used to define strata, within which the percentages add up to 100.} } \author{Martyn Plummer} \seealso{\code{\link{stat.table}}} \keyword{iteration} \keyword{category} Epi/man/time.band.Rd0000644000176200001440000000450113751040403013667 0ustar liggesusers\name{timeBand} \alias{timeBand} \alias{breaks} \title{Extract time band data from a split Lexis object} \description{ The break points of a \code{Lexis} object (created by a call to \code{splitLexis}) divide the follow-up intervals into time bands along a given time scale. The \code{breaks} function returns the break points, for a given time scale, and the \code{timeBand} classifies each row (=follow-up interval) into one of the time bands. } \usage{ timeBand(lex, time.scale, type="integer") breaks(lex, time.scale) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{lex}{an object of class \code{Lexis}} \item{time.scale}{a character or integer vector of length 1 identifying the time scale of interest} \item{type}{a string that determines how the time bands are labelled. See Details below} } \details{ Time bands may be labelled in various ways according to the \code{type} argument. The permitted values of the \code{type} argument, and the corresponding return values are: \describe{ \item{"integer"}{a numeric vector with integer codes starting from 0.} \item{"factor"}{a factor (unordered) with labels "(left,right]"} \item{"left"}{the left-hand limit of the time band} \item{"middle"}{the midpoint of the time band} \item{"right"}{the right-hand limit of the time band} } } \value{ The \code{breaks} function returns a vector of break points for the \code{Lexis} object, or NULL if no break points have been defined by a call to \code{splitLexis}. The \code{timeBand} function returns a numeric vector or factor, depending on the value of the \code{type} argument. } \author{Martyn Plummer} \note{ A newly created \code{Lexis} object has no break points defined. In this case, \code{breaks} will return NULL, and \code{timeBand} will a vector of zeros. } \examples{ data(diet) diet <- cal.yr(diet) diet.lex <- Lexis(entry=list(period=doe), exit=list(period=dox, age=dox-dob), exit.status=chd, data=diet) diet.split <- splitLexis(diet.lex, breaks=seq(40,70,5), "age" ) age.left <- timeBand(diet.split, "age", "left") table(age.left) age.fact <- timeBand(diet.split, "age", "factor") table(age.fact) age.mid <- timeBand(diet.split, "age", "mid") table(age.mid) } \seealso{\code{\link{Lexis}}} \keyword{attribute} Epi/man/lep.Rd0000644000176200001440000000233013751040403012604 0ustar liggesusers\name{lep} \alias{lep} \docType{data} \title{An unmatched case-control study of leprosy incidence} \description{ The \code{lep} data frame has 1370 rows and 7 columns. This was an unmatched case-control study in which incident cases of leprosy in a region of N. Malawi were compared with population controls. } \format{ This data frame contains the following columns: \tabular{rl}{ \code{id}: \tab subject identifier: a numeric vector \cr \code{d}: \tab case/control status: a numeric vector (1=case, 0=control) \cr \code{age}: \tab a factor with levels \code{5-9} \code{10-14} \code{15-19} \code{20-24} \code{25-29} \code{30-44} \code{45+} \cr \code{sex}: \tab a factor with levels \code{male}, \code{female} \cr \code{bcg}: \tab presence of vaccine scar, a factor with levels \code{no} \code{yes} \cr \code{school}: \tab schooling, a factor with levels \code{none} \code{1-5yrs} \code{6-8yrs} \code{sec/tert} \cr \code{house}: \tab housing, a factor with levels \code{brick} \code{sunbrick} \code{wattle} \code{temp} \cr } } \source{ The study is described in more detail in Clayton and Hills, Statistical Models in Epidemiology, Oxford University Press, Oxford:1993. } \examples{ data(lep) } \keyword{datasets} Epi/man/lines.apc.Rd0000644000176200001440000001054113751040403013703 0ustar liggesusers\name{apc.lines} \alias{lines.apc} \alias{apc.lines} \title{ Plot APC-estimates in an APC-frame. } \description{ When an APC-frame has been produced by \code{\link{apc.frame}}, this function draws a set of estimates from an APC-fit in the frame. An optional drift parameter can be added to the period parameters and subtracted from the cohort and age parameters. } \usage{ \method{lines}{apc}( x, P, C, scale = c("log","ln","rates","inc","RR"), frame.par = options()[["apc.frame.par"]], drift = 0, c0 = median( C[,1] ), a0 = median( A[,1] ), p0 = c0 + a0, ci = rep( FALSE, 3 ), lwd = c(3,1,1), lty = 1, col = "black", type = "l", knots = FALSE, shade = FALSE, ... ) apc.lines( x, P, C, scale = c("log","ln","rates","inc","RR"), frame.par = options()[["apc.frame.par"]], drift = 0, c0 = median( C[,1] ), a0 = median( A[,1] ), p0 = c0 + a0, ci = rep( FALSE, 3 ), lwd = c(3,1,1), lty = 1, col = "black", type = "l", knots = FALSE, shade = FALSE, ... ) } \arguments{ \item{x}{If an \code{apc}-object, (see \code{\link{apc.fit}}), then the arguments \code{P}, \code{C}, \code{c0}, \code{a0} and \code{p0} are ignored, and the estimates from \code{x} plotted. Can also be a 4-column matrix with columns age, age-specific rates, lower and upper c.i., in which case period and cohort effects are taken from the arguments \code{P} and \code{C}. } \item{P}{Period effects. Rate-ratios. Same form as for the age-effects.} \item{C}{Cohort effects. Rate-ratios. Same form as for the age-effects.} \item{scale}{Are effects given on a log-scale? Character variable, one of \code{"log"}, \code{"ln"}, \code{"rates"}, \code{"inc"}, \code{"RR"}. If \code{"log"} or \code{"ln"} it is assumed that effects are log(rates) and log(RRs) otherwise the actual effects are assumed given in \code{A}, \code{P} and \code{C}. If \code{A} is of class \code{apc}, it is assumed to be \code{"rates"}.} \item{frame.par}{2-element vector with the cohort-period offset and RR multiplicator. This will typically be the result from the call of \code{\link{apc.frame}}. See this for details.} \item{drift}{The drift parameter to be added to the period effect. If \code{scale="log"} this is assumed to be on the log-scale, otherwise it is assumed to be a multiplicative factor per unit of the first columns of \code{A}, \code{P} and \code{C} } \item{c0}{The cohort where the drift is assumed to be 0; the subtracted drift effect is \code{drift*(C[,1]-c0)}.} \item{a0}{The age where the drift is assumed to be 0.} \item{p0}{The period where the drift is assumed to be 0.} \item{ci}{Should confidence interval be drawn. Logical or character. If character, any occurrence of \code{"a"} or \code{"A"} produces confidence intervals for the age-effect. Similarly for period and cohort.} \item{lwd}{Line widths for estimates, lower and upper confidence limits.} \item{lty}{Linetypes for the three effects.} \item{col}{Colours for the three effects.} \item{type}{What type of lines / points should be used.} \item{knots}{Should knots from the model be shown?} \item{shade}{Should confidence intervals be plotted as shaded areas? If true, the setting of \code{ci} is ignored.} \item{...}{Further parameters to be transmitted to \code{points} \code{lines}, \code{matpoints} or \code{matlines} used for plotting the three sets of curves.} } \details{ There is no difference between the functions \code{apc.lines} and \code{lines.apc}, except the the latter is the \code{lines} method for \code{apc} objects. The drawing of three effects in an APC-frame is a rather trivial task, and the main purpose of the utility is to provide a function that easily adds the functionality of adding a drift so that several sets of lines can be easily produced in the same frame. } \value{ \code{apc.lines} returns (invisibly) a list of three matrices of the effects plotted. } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{apc.frame}}, \code{\link{pc.lines}}, \code{\link{apc.fit}}, \code{\link{apc.plot}} } \keyword{hplot} Epi/man/hivDK.Rd0000644000176200001440000000260413751040403013035 0ustar liggesusers\name{ hivDK } \alias{ hivDK } \docType{ data } \title{ hivDK: seroconversion in a cohort of Danish men} \description{ Data from a survey of HIV-positivity of a cohort of Danish men followed by regular tests from 1983 to 1989. } \usage{ data(hivDK) } \format{ A data frame with 297 observations on the following 7 variables. \describe{ \item{\code{id}}{ID of the person} \item{\code{entry}}{Date of entry to the study. Date variable.} \item{\code{well}}{Date last seen seronegative. Date variable.} \item{\code{ill}}{Date first seen seroconverted. Date variable.} \item{\code{bth}}{Year of birth minus 1950.} \item{\code{pyr}}{Annual number of sexual partners.} \item{\code{us}}{Indicator of wheter the person has visited the USA.} } } \source{ Mads Melbye, Statens Seruminstitut. } \references{ Becker N.G. and Melbye M.: Use of a log-linear model to compute the empirical survival curve from interval-censored data, with application to data on tests for HIV-positivity, Australian Journal of Statistics, 33, 125--133, 1990. Melbye M., Biggar R.J., Ebbesen P., Sarngadharan M.G., Weiss S.H., Gallo R.C. and Blattner W.A.: Seroepidemiology of HTLV-III antibody in Danish homosexual men: prevalence, transmission and disease outcome. British Medical Journal, 289, 573--575, 1984. } \examples{ data(hivDK) str(hivDK) } \keyword{ datasets } Epi/man/bootLexis.Rd0000644000176200001440000000601513751040403014000 0ustar liggesusers\name{bootLexis} \alias{nid} \alias{nid.Lexis} \alias{bootLexis} \title{ Create a bootstrap sample of persons (as identified by \code{lex.id}) from a Lexis object } \description{ \code{lex.id} is the person identifier in a \code{\link{Lexis}} object. This is used to sample persons from a Lexis object. If a person is sampled, all records from this persons is transported to the bootstrap sample. } \usage{ nid( Lx, \dots ) \method{nid}{Lexis}( Lx, by=NULL, \dots ) bootLexis( Lx, size = NULL, by = NULL, replace=TRUE ) } \arguments{ \item{Lx}{A \code{Lexis} object.} \item{\dots}{Parameters passed on to other methods.} \item{size}{Numeric. How many persons should be sampled from the \code{Lexis} object. Defaults to the number of persons in the \code{Lx}, or, if \code{by} is given, to the number of persons in each level of \code{by}. If \code{by} is given, \code{size} can have length \code{length(unique(by))}, to indicate how many are sampled from each level of \code{by}.} \item{by}{Character. Name of a variable (converted to factor) in the \code{Lexis} object. Bootstrap sampling is done within each level of by. Calculation of the number of persons (\code{lex.id}) is done within each level of \code{by}, and a vector returned. } \item{replace}{Should persons be sampled by replacement? Default is \code{TRUE}. Setting \code{replace} to \code{FALSE} enables selecting a random subset of persons from the Lexis object.} } \value{ \code{bootLexis} returns a Lexis object of the same structure as the input, with \emph{persons} bootstrapped. The variable \code{lex.id} in the resulting \code{Lexis} object has values 1,2,... The original values of \code{lex.id} from \code{Lx} are stored in the variable \code{old.id}. \code{nid} counts the number of persons in a Lexis object, possibly by \code{by}. If \code{by} is given, a named vector is returned. } \author{Bendix Carstensen, \url{http://bendixcarstensen.com}.} \seealso{\code{\link{Relevel.Lexis}},\code{\link{subset.Lexis}}} \examples{ # A small bogus cohort xcoh <- data.frame( id = c("A", "B", "C"), birth = c("1952-07-14", "1954-04-01", "1987-06-10"), entry = c("1965-08-04", "1972-09-08", "1991-12-23"), exit = c("1997-06-27", "1995-05-23", "1998-07-24"), fail = c(1, 0, 1), sex = c("M","F","M") ) # Convert to calendar years for( i in 2:4 ) xcoh[,i] <- cal.yr(xcoh[,i]) xcoh Lcoh <- Lexis( entry = list( per=entry ), exit = list( per=exit, age=exit-birth ), exit.status = fail, data = xcoh ) Lx <- Lcoh[sample(1:3,10,replace=TRUE),] Lx$per <- Lx$per + runif(10,0,10) Lx$lex.id <- 1:10 Lx <- splitLexis( Lx, breaks=0:10*10, "age" ) Lx nid( Lx ) nid( Lx, by="sex" ) Lb <- bootLexis( Lx ) head( Lb ) nid( bootLexis( Lx, size=7 ) ) Li <- bootLexis( Lx, by="id" ) # superfluous summary( Lx ) summary( Li ) L2 <- bootLexis( Lx, by="sex", size=c(2,5) ) nid( L2, by="sex" ) summary( L2 ) } \keyword{manip} Epi/man/N.dk.Rd0000644000176200001440000000141513751040403012621 0ustar liggesusers\name{N.dk} \alias{N.dk} \docType{data} \title{Population size in Denmark} \description{ The population size at 1st January in ages 0-99. } \usage{data(N.dk)} \format{ A data frame with 7200 observations on the following 4 variables. \describe{ \item{\code{sex}}{Sex, 1:males, 2:females} \item{\code{A}}{Age. 0:0, 1:1, ..., 98:98, 99:99+} \item{\code{P}}{Year} \item{\code{N}}{Number of persons alive at 1st January year \code{P}} } } \source{ \url{http://www.statistikbanken.dk/statbank5a/SelectTable/omrade0.asp?SubjectCode=02&PLanguage=1&ShowNews=OFF} } \examples{ data(N.dk) str(N.dk) with(N.dk,addmargins(tapply(N,list(P,sex),sum),2)) with(subset(N.dk,P==max(P)),addmargins(tapply(N,list(A,sex),sum))) } \keyword{datasets} Epi/man/pc.lines.Rd0000644000176200001440000000323413751040403013543 0ustar liggesusers\name{pc.lines} \alias{pc.points} \alias{pc.lines} \alias{pc.matpoints} \alias{pc.matlines} \alias{pc.matshade} \alias{cp.points} \alias{cp.lines} \alias{cp.matpoints} \alias{cp.matlines} \alias{cp.matshade} \title{ Plot period and cohort effects in an APC-frame. } \description{ When an APC-frame has been produced by \code{\link{apc.frame}}, this function draws curves or points in the period/cohort part of the frame. } \usage{ pc.points( x, y, ... ) pc.lines( x, y, ... ) pc.matpoints( x, y, ... ) pc.matlines( x, y, ... ) pc.matshade( x, y, ... ) cp.points( x, y, ... ) cp.lines( x, y, ... ) cp.matpoints( x, y, ... ) cp.matlines( x, y, ... ) cp.matshade( x, y, ... ) } \arguments{ \item{x}{vector of \code{x}-coordinates.} \item{y}{vector or matrix of \code{y}-coordinates.} \item{...}{Further parameters to be transmitted to points, lines, matpoints, matlines or matshade used for plotting curves in the calendar time realm of a graph generated by \code{\link{apc.frame}}} } \details{Since the Age-part of the frame is referred to by its real coordinates plotting in the calendar time part requires translation and scaling to put things correctly there, that is done by the functions \code{pc.points} etc. The functions \code{cp.points} etc. are just synonyms for these, in recognition of the fact that you can never remember whether it is "pc" or "cp". } \value{ The functions return nothing. } \author{ Bendix Carstensen, Steno Diabetes Center Copenhagen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{apc.frame}}, \code{\link{apc.fit}}, \code{\link{plot.apc}}, \code{\link{lines.apc}} } \keyword{hplot} Epi/man/Lexis.lines.Rd0000644000176200001440000000447713751040403014237 0ustar liggesusers\name{Lexis.lines} \alias{Lexis.lines} \title{Draw life lines in a Lexis diagram.} \description{ Add life lines to a Lexis diagram. } \usage{ Lexis.lines( entry.date = NA, exit.date = NA, birth.date = NA, entry.age = NA, exit.age = NA, risk.time = NA, col.life = "black", lwd.life = 2, fail = NA, cex.fail = 1, pch.fail = c(NA, 16), col.fail = col.life, data = NULL ) } \arguments{ \item{entry.date, entry.age, exit.date, exit.age, risk.time, birth.date}{Numerical vectors defining lifelines to be plotted in the diagram. At least three must be given to produce lines. Not all subsets of three will suffice, the given subset has to define life lines. If insufficient data is given, no life lines are produced.} \item{col.life}{Colour of the life lines.} \item{lwd.life}{Width of the life lines.} \item{fail}{Logical of event status at exit for the persons whose life lines are plotted.} \item{cex.fail}{The size of the status marks at the end of life lines.} \item{pch.fail}{The status marks at the end of the life lines.} \item{col.fail}{Colour of the marks for censorings and failures respectively.} \item{data}{Data frame in which to interpret values.} } \value{ If sufficient information on lifelines is given, a data frame with one row per person and columns with entry ages and dates, birth date, risk time and status filled in. Side effect: Life lines are added to an existing Lexis diagram. Lexis.lines adds life lines to an existing plot. } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com} } \examples{ Lexis.diagram( entry.age = c(3,30,45), risk.time = c(25,5,14), birth.date = c(1970,1931,1925.7), fail = c(TRUE,TRUE,FALSE) ) Lexis.lines( entry.age = sample( 0:50, 100, replace=TRUE ), risk.time = sample( 5:40, 100, r=TRUE), birth.date = sample( 1910:1980, 100, r=TRUE ), fail = sample(0:1,100,r=TRUE), cex.fail = 0.5, lwd.life = 1 ) } \keyword{ hplot } \keyword{ dplot } \seealso{ \code{\link{Lexis.diagram}}, \code{\link{Life.lines}} } Epi/man/effx.Rd0000644000176200001440000000732014002243074012757 0ustar liggesusers\name{effx} \alias{effx} \title{Function to calculate effects} \description{ The function calculates the effects of an exposure on a response, possibly stratified by a stratifying variable, and/or controlled for one or more confounding variables. } \usage{ effx( response, type = "metric", fup = NULL, exposure, strata = NULL, control = NULL, weights = NULL, eff = NULL, alpha = 0.05, base = 1, digits = 3, data = NULL ) } \arguments{ \item{response}{The \code{response} variable - must be numeric or logical. If logical, \code{TRUE} is considered the outcome.} \item{type}{The type of response\code{type} - must be one of "metric", "binary", "failure", or "count"} \item{fup}{The \code{fup} variable contains the follow-up time for a failure response. This must be numeric.} \item{exposure}{The \code{exposure} variable can be numeric or a factor} \item{strata}{The \code{strata} stratifying variable - must be a factor} \item{control}{The \code{control} variable(s) (confounders) - these are passed as a list if there are more than one.} \item{weights}{Frequency weights for binary response only} \item{eff}{How should effects be measured. If \code{response} is binomial, the default is "OR" (odds-ratio) with "RR" (relative risk) as an option. If \code{response} is failure, the default is "RR" (rate-ratio) with "RD" (rate difference) as an option.} \item{base}{Baseline for the effects of a categorical exposure, either a number or a name of the level. Defaults to 1} \item{digits}{Number of significant digits for the effects, default 3} \item{alpha}{1 - confidence level} \item{data}{\code{data} refers to the data used to evaluate the function} } \details{The function is a wrapper for glm. Effects are calculated as differences in means for a metric response, odds ratios/relative risks for a binary response, and rate ratios/rate differences for a failure or count response. The k-1 effects for a categorical exposure with k levels are relative to a baseline which, by default, is the first level. The effect of a metric (quantitative) exposure is calculated per unit of exposure. The exposure variable can be numeric or a factor, but if it is an ordered factor the order will be ignored.} \value{ % ~Describe the value returned % If it is a LIST, use \item{comp1 }{Effects of exposure} \item{comp2 }{Tests of significance} % ... } \author{Michael Hills (*1934-Jun-07, +2021-Jan-07)} %\note{ ~~further notes~~ } %\seealso{ ~~objects to See Also as \code{\link{~~fun~~}}, ~~~ } \examples{ library(Epi) data(births) births$hyp <- factor(births$hyp,labels=c("normal","hyper")) births$sex <- factor(births$sex,labels=c("M","F")) # bweight is the birth weight of the baby in gms, and is a metric # response (the default) # effect of hypertension on birth weight effx(bweight,exposure=hyp,data=births) # effect of hypertension on birth weight stratified by sex effx(bweight,exposure=hyp,strata=sex,data=births) # effect of hypertension on birth weight controlled for sex effx(bweight,exposure=hyp,control=sex,data=births) print( options('na.action') ) # effect of gestation time on birth weight effx(bweight,exposure=gestwks,data=births) # effect of gestation time on birth weight stratified by sex effx(bweight,exposure=gestwks,strata=sex,data=births) # effect of gestation time on birth weight controlled for sex effx(bweight,exposure=gestwks,control=sex,data=births) # lowbw is a binary response coded 1 for low birth weight and 0 otherwise # effect of hypertension on low birth weight effx(lowbw,type="binary",exposure=hyp,data=births) effx(lowbw,type="binary",exposure=hyp,eff="RR",data=births) } \keyword{ models } \keyword{ regression } Epi/man/merge.Lexis.Rd0000644000176200001440000000244613751040403014216 0ustar liggesusers\name{merge.Lexis} \alias{merge.Lexis} \title{Merge a Lexis object with a data frame} \description{ Merge additional variables from a data frame into a Lexis object. } \usage{ \method{merge}{Lexis}(x, y, id, by, ...) } \arguments{ \item{x}{an object of class \code{Lexis}} \item{y}{a data frame} \item{id}{the name of the variable in \code{y} to use for matching against the variable \code{lex.id} in \code{x}. } \item{by}{if matching is not done by id, a vector of variable names common to both \code{x} and \code{y}} \item{...}{optional arguments to be passed to \code{merge.data.frame}} } \details{ A \code{Lexis} object can be considered as an augmented data frame in which some variables are time-dependent variables representing follow-up. The \code{Lexis} function produces a minimal object containing only these time-dependent variables. Additional variables may be added to a \code{Lexis} object using the \code{merge} method. } \value{ A \code{Lexis} object with additional columns taken from the merged data frame. } \author{Martyn Plummer} \note{ The variable given as the \code{by.y} argument must not contain any duplicate values in the data frame \code{y}. } \seealso{\code{\link{merge.data.frame}}, \code{\link{subset.Lexis}}} \keyword{array} \keyword{manip} Epi/man/poisreg.Rd0000644000176200001440000000655413751040403013510 0ustar liggesusers\name{poisreg} \alias{poisreg} \title{Family Object for Poisson Regression} \usage{ poisreg(link = "log") } \arguments{ \item{link}{a specification for the model link function. The \code{poisreg} family accepts the links \code{identity}, \code{log} and \code{inverse}. } } \description{ The \code{poisreg} family allows Poisson regression models to be fitted using the \code{glm} function. In a Poisson regression model, we assume that the data arise from a Poisson process. We observe D disease events in follow up time Y and wish to estimate the incidence rate, which is assumed to be constant during the follow-up period for any individual. The incidence rate varies between individuals according to the predictor variables and the link function in the model specification. When using the \code{poisreg} family in the \code{glm} function, the response should be specified as a two-column matrix with the first column giving the number of events (D) and the second column giving the observation time (Y). This is similar to the \code{binomial} family for which a two-column outcome can be used representing the number of successes and the number of failures. } \note{ When using the log link, Poisson regression can also be carried out using the \code{poisson} family by including the log follow-up time \code{log(Y)} as an offset. However this approach does not generalize to other link functions. The \code{poisreg} family allows more general link functions including additive risk models with \code{poisreg(link = "identity")}. } \value{ An object of class \code{"family"}. See \code{\link[stats]{family}} for details. The family name, represented by the element \code{"family"} in the returned object, is \code{"poisson"} and not \code{"poisreg"}. This is necessary to prevent the \code{summary.glm} function from estimating an overdispersion parameter (which should be fixed at 1) and therefore giving incorrect standard errors for the estimates. } \examples{ ## Estimate incidence rate of diabetes in Denmark (1996-2015) by ## age and sex data(DMepi) DMepi$agegrp <- cut(DMepi$A, seq(from=0, to=100, by=5)) inc.diab <- glm(cbind(X, Y.nD) ~ -1 + agegrp + sex, family=poisreg, data=DMepi) ## The coefficients for agegrp are log incidence rates for men in each ## age group. The coefficient for sex is the log of the female:male ## incidence rate ratio. summary(inc.diab) ## Smooth function with non-constant M/F RR: requireNamespace("mgcv") library( mgcv ) gam.diab <- gam( cbind(X, Y.nD) ~ s(A,by=sex) + sex, family=poisreg, data=DMepi) ## There is no need/use for Y.nD in prediction data frames: nM <- data.frame( A=20:90, sex="M" ) nF <- data.frame( A=20:90, sex="F" ) ## Rates are returned in units of (1 year)^-1, so we must scale the ## rates by hand: matshade( nM$A, cbind( ci.pred(gam.diab, nM )*1000, ci.pred(gam.diab, nF )*1000, ci.exp( gam.diab,list(nM,nF)) ), plot=TRUE, col=c("blue","red","black"), log="y", xlab="Age", ylab="DM incidence rates per 1000 / M vs. F RR" ) abline(h=1) } \seealso{ \code{\link[stats]{glm}}, \code{\link[stats]{family}}. } \keyword{models} Epi/man/cutLexis.Rd0000644000176200001440000001776513763207003013652 0ustar liggesusers\name{cutLexis} \alias{cutLexis} \alias{countLexis} \title{ Cut follow-up at a specified date for each person. } \description{ Follow-up intervals in a Lexis object are divided into two sub-intervals: one before and one after an intermediate event. The intermediate event may denote a change of state, in which case the entry and exit status variables in the split Lexis object are modified. } \usage{ cutLexis( data, cut, timescale = 1, new.state = nlevels(data$lex.Cst)+1, new.scale = FALSE, split.states = FALSE, progressive = FALSE, precursor.states = transient(data), count = FALSE ) countLexis( data, cut, timescale = 1 ) } \arguments{ \item{data}{A \code{Lexis} object.} \item{cut}{A numeric vector with the times of the intermediate event. If a time is missing (\code{NA}) then the event is assumed to occur at time \code{Inf}. \code{cut} can also be a dataframe, see details.} \item{timescale}{The timescale that \code{cut} refers to. Numeric or character.} \item{new.state}{The state to which a transition occur at time \code{cut}. It may be a single value, which is then applied to all rows of \code{data}, or a vector with a separate value for each row} \item{new.scale}{Name of the timescale defined as "time since entry to new.state". If \code{TRUE} a name for the new scale is constructed. See details.} \item{split.states}{Should states that are not precursor states be split according to whether the intermediate event has occurred.} \item{progressive}{a logical flag that determines the changes to exit status. See details.} \item{precursor.states}{an optional vector of states to be considered as "less severe" than \code{new.state}. See Details below} \item{count}{logical indicating whether the \code{countLexis} options should be used. Specifying \code{count=TRUE} amounts to calling \code{countLexis}, in which case the arguments \code{new.state}, \code{progressive} and \code{precursor.states} will be ignored. } } \value{ A \code{Lexis} object, for which each follow-up interval containing the cutpoint is split in two: one before and one after the cutpoint. Any record representing follow up after the cutpoint has its value of \code{lex.Cst} updated to the new state. An extra time-scale is added; the time since the event at \code{cut}. This time scake will be\code{NA} for any follow-up prior to the intermediate event. The function \code{tsNA20} will replace all missing values in timescales with 0. This is commonly meeded when timescales defined as time since entry into an intermediate state are used in modeling. But you do not want to do that permanently in the cut data frame. } \note{ The \code{cutLexis} function superficially resembles the \code{splitLexis} function. However, the \code{splitLexis} function splits on a vector of common cut-points for all rows of the Lexis object, whereas the \code{cutLexis} function splits on a single time point, which may be distinct for each row, modifies the status variables, adds a new timescale and updates the attribute "time.since". This attribute is a character vector of the same length as the "time.scales" attribute, whose value is '""' if the corresponding timescale is defined for any piece of follow-up, and if the corresponding time scale is defined by say \code{cutLexis(obj,new.state="A",new.scale=TRUE)}, it has the value "A". } \details{ The \code{cutLexis} function allows a number of different ways of specifying the cutpoints and of modifying the status variable. If the \code{cut} argument is a dataframe it must have columns \code{lex.id}, \code{cut} and \code{new.state}. The values of \code{lex.id} must be unique. In this case it is assumed that each row represents a cutpoint (on the timescale indicated in the argument \code{timescale}). This cutpoint will be applied to all records in \code{data} with the corresponding \code{lex.id}. This makes it possible to apply \code{cutLexis} to a split \code{Lexis} object. If a \code{new.state} argument is supplied, the status variable is only modified at the time of the cut point. However, it is often useful to modify the status variable after the cutpoint when an important event occurs. There are three distinct ways of doing this. If the \code{progressive=TRUE} argument is given, then a "progressive" model is assumed, in which the status can either remain the same or increase during follow-up, but never decrease. This assumes that the state variables \code{lex.Cst} and \code{lex.Xst} are either numeric or ordered factors. In this case, if \code{new.state=X}, then any exit status with a value less than \code{X} is replaced with \code{X}. The Lexis object must already be progressive, so that there are no rows for which the exit status is less than the entry status. If \code{lex.Cst} and \code{lex.Xst} are factors they must be ordered factors if \code{progressive=TRUE} is given. As an alternative to the \code{progressive} argument, an explicit vector of precursor states, that are considered less severe than the new state, may be given. If \code{new.state=X} and \code{precursor.states=c(Y,Z)} then any exit status of \code{Y} or \code{Z} in the second interval is replaced with \code{X} and all other values for the exit status are retained. The \code{countLexis} function is a variant of \code{cutLexis} when the cutpoint marks a recurrent event, and the status variable is used to count the number of events that have occurred. Times given in \code{cut} represent times of new events. Splitting with \code{countLexis} increases the status variable by 1. If the current status is \code{X} and the exit status is \code{Y} before cutting, then after cutting the entry status is \code{X}, \code{X+1} for the first and second intervals, respectively, and the exit status is \code{X+1}, \code{Y+1} respectively. Moreover the values of the status is increased by 1 for all intervals for all intervals after the cut for the person in question. Hence, a call to \code{countLexis} is needed for as many times as the person with most events. But also it is immaterial in what order the cutpoints are entered. } \author{Bendix Carstensen, Steno Diabetes Center, \email{b@bxc.dk}, Martyn Plummer, \email{martyn.plummer@r-project.org} } \seealso{ \code{\link{mcutLexis}}, \code{\link{rcutLexis}}, \code{\link{addCov.Lexis}}, \code{\link{splitLexis}}, \code{\link{Lexis}}, \code{\link{summary.Lexis}}, \code{\link{timeSince}}, \code{\link{boxes.Lexis}} } \examples{ # A small artificial example xx <- Lexis( entry=list(age=c(17,24,33,29),per=c(1920,1933,1930,1929)), duration=c(23,57,12,15), exit.status=c(1,2,1,2) ) xx cut <- c(33,47,29,50) cutLexis(xx, cut, new.state=3, precursor=1) cutLexis(xx, cut, new.state=3, precursor=2) cutLexis(xx, cut, new.state=3, precursor=1:2) # The same as the last example cutLexis(xx, cut, new.state=3) # The same example with a factor status variable yy <- Lexis(entry = list(age=c(17,24,33,29),per=c(1920,1933,1930,1929)), duration = c(23,57,12,15), entry.status = factor(rep("alpha",4), levels=c("alpha","beta","gamma")), exit.status = factor(c("alpha","beta","alpha","beta"), levels=c("alpha","beta","gamma"))) cutLexis(yy,c(33,47,29,50),precursor="alpha",new.state="gamma") cutLexis(yy,c(33,47,29,50),precursor=c("alpha","beta"),new.state="aleph") ## Using a dataframe as cut argument rl <- data.frame( lex.id=1:3, cut=c(19,53,26), timescale="age", new.state=3 ) rl cutLexis( xx, rl ) cutLexis( xx, rl, precursor=1 ) cutLexis( xx, rl, precursor=0:2 ) ## It is immaterial in what order splitting and cutting is done xs <- splitLexis( xx, breaks=seq(0,100,10), time.scale="age" ) xs xsC <- cutLexis(xs, rl, precursor=0 ) xC <- cutLexis( xx, rl, pre=0 ) xC xCs <- splitLexis( xC, breaks=seq(0,100,10), time.scale="age" ) xCs str(xCs) } \keyword{survival} Epi/man/blcaIT.Rd0000644000176200001440000000127613751040403013172 0ustar liggesusers\name{blcaIT} \alias{blcaIT} \docType{data} \title{Bladder cancer mortality in Italian males} \description{ Number of deaths from bladder cancer and person-years in the Italian male population 1955--1979, in ages 25--79. } % \usage{data(blcaIT)} \format{ A data frame with 55 observations on the following 4 variables: \tabular{rl}{ \code{age}: \tab Age at death. Left endpoint of age class \cr \code{period}: \tab Period of death. Left endpoint of period \cr \code{D}: \tab Number of deaths \cr \code{Y}: \tab Number of person-years. } } % \source{ % Reference to a source... % } % \references{ % Reference to a publication... % } \examples{ data(blcaIT) } \keyword{datasets} Epi/man/S.typh.Rd0000644000176200001440000000421613751040403013216 0ustar liggesusers\name{S.typh} \alias{S.typh} \docType{data} \title{Salmonella Typhimurium outbreak 1996 in Denmark.} \description{ Matched case-control study of food poisoning. } \format{ A data frame with 136 observations on the following 15 variables: \tabular{rl}{ \code{id}: \tab Person identification \cr \code{set}: \tab Matched set indicator \cr \code{case}: \tab Case-control status (1:case, 0:control \cr \code{age}: \tab Age of individual \cr \code{sex}: \tab Sex of individual (1:male, 2:female) \cr \code{abroad}: \tab Within the last two weeks visited abroad (1:yes, 0:no) \cr \code{beef}: \tab Within the last two weeks eaten beef \cr \code{pork}: \tab Within the last two weeks eaten pork \cr \code{veal}: \tab Within the last two weeks eaten veal \cr \code{poultry}: \tab Within the last two weeks eaten poultry \cr \code{liverp}: \tab Within the last two weeks eaten liverpaste \cr \code{veg}: \tab Within the last two weeks eaten vegetables \cr \code{fruit}: \tab Within the last two weeks eaten fruit \cr \code{egg}: \tab Within the last two weeks eaten eggs \cr \code{plant7}: \tab Within the last two weeks eaten meat from plant no. 7 \cr } } \details{ In the fall of 1996 an unusually large number of Salmonella Typhimurium cases were recorded in Fyn county in Denmark. The Danish Zoonosis Centre set up a matched case-control study to find the sources. Cases and two age-, sex- and residency-matched controls were telephone interviewed about their food intake during the last two weeks. The participants were asked at which retailer(s) they had purchased meat. Retailers were independently of this linked to meat processing plants, and thus participants were linked to meat processing plants. This way persons could be linked to (amongst other) plant no 7.} \source{ Tine Hald. } \references{ Molbak K and Hald T: Salmonella Typhimurium outbreak in late summer 1996. A Case-control study. (In Danish: Salmonella typhimurium udbrud paa Fyn sensommeren 1996. En case-kontrol undersogelse.) Ugeskrift for Laeger., 159(36):5372-7, 1997. } \examples{ data(S.typh) } \keyword{datasets} Epi/man/nice.Rd0000644000176200001440000000141413751040403012744 0ustar liggesusers\name{nice} \alias{nice} \title{Nice breakpoints} \description{The function calls \code{\link{pretty}} for linear scale. For a log-scale nice are computed using a set of specified number in a decade. } \usage{ nice(x, log = F, lpos = c(1, 2, 5), ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{Numerical vector to} \item{log}{Logical. Is the scale logartimic?} \item{lpos}{Numeric. Numbers between 1 and 10 giving the desired breakpoints in this interval.} \item{\dots}{Arguments passed on to \code{pretty} if \code{log}=FALSE} } \value{A vector of breakpoints.} \author{Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com}} \seealso{pretty} \examples{ nice( exp( rnorm( 100 ) ), log=TRUE ) } \keyword{manip} Epi/man/apc.frame.Rd0000644000176200001440000001152213751040403013663 0ustar liggesusers\name{apc.frame} \alias{apc.frame} \title{ Produce an empty frame for display of parameter-estimates from Age-Period-Cohort-models. } \description{ A plot is generated where both the age-scale and the cohort/period scale is on the x-axis. The left vertical axis will be a logarithmic rate scale referring to age-effects and the right a logarithmic rate-ratio scale of the same relative extent as the left referring to the cohort and period effects (rate ratios). Only an empty plot frame is generated. Curves or points must be added with \code{points}, \code{lines} or the special utility function \code{\link{apc.lines}}. } \usage{ apc.frame( a.lab, cp.lab, r.lab, rr.lab = r.lab / rr.ref, rr.ref = r.lab[length(r.lab)/2], a.tic = a.lab, cp.tic = cp.lab, r.tic = r.lab, rr.tic = r.tic / rr.ref, tic.fac = 1.3, a.txt = "Age", cp.txt = "Calendar time", r.txt = "Rate per 100,000 person-years", rr.txt = "Rate ratio", ref.line = TRUE, gap = diff(range(c(a.lab, a.tic)))/10, col.grid = gray(0.85), sides = c(1,2,4) ) } \arguments{ \item{a.lab}{Numerical vector of labels for the age-axis.} \item{cp.lab}{Numerical vector of labels for the cohort-period axis.} \item{r.lab}{Numerical vector of labels for the rate-axis (left vertical)} \item{rr.lab}{Numerical vector of labels for the RR-axis (right vertical)} \item{rr.ref}{At what level of the rate scale is the RR=1 to be.} \item{a.tic}{Location of additional tick marks on the age-scale} \item{cp.tic}{Location of additional tick marks on the cohort-period-scale} \item{r.tic}{Location of additional tick marks on the rate-scale} \item{rr.tic}{Location of additional tick marks on the RR-axis.} \item{tic.fac}{Factor with which to diminish intermediate tick marks} \item{a.txt}{Text for the age-axis (left part of horizontal axis).} \item{cp.txt}{Text for the cohort/period axis (right part of horizontal axis).} \item{r.txt}{Text for the rate axis (left vertical axis).} \item{rr.txt}{Text for the rate-ratio axis (right vertical axis)} \item{ref.line}{Logical. Should a reference line at RR=1 be drawn at the calendar time part of the plot?} \item{gap}{Gap between the age-scale and the cohort-period scale} \item{col.grid}{Colour of the grid put in the plot.} \item{sides}{Numerical vector indicating on which sides axes should be drawn and annotated. This option is aimed for multi-panel displays where axes only are put on the outer plots.} } \details{ The function produces an empty plot frame for display of results from an age-period-cohort model, with age-specific rates in the left side of the frame and cohort and period rate-ratio parameters in the right side of the frame. There is a gap of \code{gap} between the age-axis and the calendar time axis, vertical grid lines at \code{c(a.lab,a.tic,cp.lab,cp.tic)}, and horizontal grid lines at \code{c(r.lab,r.tic)}. The function returns a numerical vector of length 2, with names \code{c("cp.offset","RR.fac")}. The y-axis for the plot will be a rate scale for the age-effects, and the x-axis will be the age-scale. The cohort and period effects are plotted by subtracting the first element (named \code{"cp.offset"}) of the returned result form the cohort/period, and multiplying the rate-ratios by the second element of the returned result (named \code{"RR.fac"}). } \value{ A numerical vector of length two, with names \code{c("cp.offset","RR.fac")}. The first is the offset for the cohort period-axis, the second the multiplication factor for the rate-ratio scale. Side-effect: A plot with axes and grid lines but no points or curves. Moreover, the option \code{apc.frame.par} is given the value \code{c("cp.offset","RR.fac")}, which is recognized by \code{\link{apc.plot}} and \code{\link{apc.lines}}. } \references{ B. Carstensen: Age-Period-Cohort models for the Lexis diagram. Statistics in Medicine, 26: 3018-3045, 2007. } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com} } \examples{ par( mar=c(4,4,1,4) ) res <- apc.frame( a.lab=seq(30,90,20), cp.lab=seq(1880,2000,30), r.lab=c(1,2,5,10,20,50), a.tic=seq(30,90,10), cp.tic=seq(1880,2000,10), r.tic=c(1:10,1:5*10), gap=27 ) res # What are the axes actually? par(c("usr","xlog","ylog")) # How to plot in the age-part: a point at (50,10) points( 50, 10, pch=16, cex=2, col="blue" ) # How to plot in the cohort-period-part: a point at (1960,0.3) points( 1960-res[1], 0.3*res[2], pch=16, cex=2, col="red" ) # or referring to the period-cohort part of the plot pc.points( 1960, 0.3, pch=16, cex=1, col="green" ) } \seealso{ \code{\link{apc.lines},\link{apc.fit}} } \keyword{hplot} Epi/man/rateplot.Rd0000644000176200001440000001723013751040403013663 0ustar liggesusers\name{rateplot} \alias{rateplot} \alias{Aplot} \alias{Pplot} \alias{Cplot} \title{ Functions to plot rates from a table classified by age and calendar time (period) } \description{ Produces plots of rates versus age, connected within period or cohort (\code{Aplot}), rates versus period connected within age-groups (\code{Pplot}) and rates and rates versus date of birth cohort (\code{Cplot}). \code{rateplot} is a wrapper for these, allowing to produce the four classical displays with a single call. } \usage{ rateplot( rates, which = c("ap","ac","pa","ca"), age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, a.grid = grid, p.grid = grid, c.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), a.lim = range( age, na.rm=TRUE ) + c(0,diff( range( age ) )/30), p.lim = range( per, na.rm=TRUE ) + c(0,diff( range( age ) )/30), c.lim = NULL, ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), a.lab = "Age at diagnosis", p.lab = "Date of diagnosis", c.lab = "Date of birth", ylab = "Rates", type = "l", lwd = 2, lty = 1, log.ax = "y", las = 1, ann = FALSE, a.ann = ann, p.ann = ann, c.ann = ann, xannx = 1/20, cex.ann = 0.8, a.thin = seq( 1, length( age ), 2 ), p.thin = seq( 1, length( per ), 2 ), c.thin = seq( 2, length( age ) + length( per ) - 1, 2 ), col = par( "fg" ), a.col = col, p.col = col, c.col = col, ... ) Aplot( rates, age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, a.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), a.lim = range( age, na.rm=TRUE ), ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), a.lab = names( dimnames( rates ) )[1], ylab = deparse( substitute( rates ) ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, c.col = col, p.col = col, c.ann = FALSE, p.ann = FALSE, xannx = 1/20, cex.ann = 0.8, c.thin = seq( 2, length( age ) + length( per ) - 1, 2 ), p.thin = seq( 1, length( per ), 2 ), p.lines = TRUE, c.lines = !p.lines, ... ) Pplot( rates, age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, p.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), p.lim = range( per, na.rm=TRUE ) + c(0,diff(range(per))/30), ylim = range( rates[rates>0], na.rm=TRUE ), p.lab = names( dimnames( rates ) )[2], ylab = deparse( substitute( rates ) ), at = NULL, labels = paste( at ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, ann = FALSE, cex.ann = 0.8, xannx = 1/20, a.thin = seq( 1, length( age ), 2 ), ... ) Cplot( rates, age = as.numeric( rownames( rates ) ), per = as.numeric( colnames( rates ) ), grid = FALSE, c.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), c.lim = NULL, ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), c.lab = names( dimnames( rates ) )[2], ylab = deparse( substitute( rates ) ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, xannx = 1/20, ann = FALSE, cex.ann = 0.8, a.thin = seq( 1, length( age ), 2 ), ... ) } \arguments{ \item{rates}{A two-dimensional table (or array) with rates to be plotted. It is assumed that the first dimension is age and the second is period.} \item{which}{A character vector with elements from \code{c("ap","ac","apc","pa","ca")}, indication which plots should be produced. One plot per element is produced. The first letter indicates the x-axis of the plot, the remaining which groups should be connected, i.e. \code{"pa"} will plot rates versus period and connect age-classes, and \code{"apc"} will plot rates versus age, and connect both periods and cohorts.} \item{age}{Numerical vector giving the means of the age-classes. Defaults to the rownames of \code{rates} as numeric.} \item{per}{Numerical vector giving the means of the periods. Defaults to the columnnames of \code{rates} as numeric.} \item{grid}{Logical indicating whether a background grid should be drawn.} \item{a.grid}{Logical indicating whether a background grid on the age-axis should be drawn. If numerical it indicates the age-coordinates of the grid.} \item{p.grid}{do. for the period.} \item{c.grid}{do. for the cohort.} \item{ygrid}{do. for the rate-dimension.} \item{col.grid}{The colour of the grid.} \item{a.lim}{Range for the age-axis.} \item{p.lim}{Range for the period-axis.} \item{c.lim}{Range for the cohort-axis.} \item{ylim}{Range for the y-axis (rates).} \item{at}{Position of labels on the y-axis (rates).} \item{labels}{Labels to put on the y-axis (rates).} \item{a.lab}{Text on the age-axis. Defaults to "Age".} \item{p.lab}{Text on the period-axis. Defaults to "Date of diagnosis".} \item{c.lab}{Text on the cohort-axis. Defaults to "Date of birth".} \item{ylab}{Text on the rate-axis. Defaults to the name of the rate-table.} \item{type}{How should the curves be plotted. Defaults to \code{"l"}.} \item{lwd}{Width of the lines. Defaults to 2.} \item{lty}{Which type of lines should be used. Defaults to 1, a solid line.} \item{log.ax}{Character with letters from \code{"apcyr"}, indicating which axes should be logarithmic. \code{"y"} and \code{"r"} both refer to the rate scale. Defaults to \code{"y"}.} \item{las}{see \code{par}.} \item{ann}{Should the curves be annotated?} \item{a.ann}{Logical indicating whether age-curves should be annotated.} \item{p.ann}{do. for period-curves.} \item{c.ann}{do. for cohort-curves.} \item{xannx}{The fraction that the x-axis is expanded when curves are annotated.} \item{cex.ann}{Expansion factor for characters annotating curves.} \item{a.thin}{Vector of integers indicating which of the age-classes should be labelled.} \item{p.thin}{do. for the periods.} \item{c.thin}{do. for the cohorts.} \item{col}{Colours for the curves.} \item{a.col}{Colours for the age-curves.} \item{p.col}{do. for the period-curves.} \item{c.col}{do. for the cohort-curves.} \item{p.lines}{Should rates from the same period be connected?} \item{c.lines}{Should rates from the same cohort be connected?} \item{...}{Additional arguments pssed on to \code{matlines} when plotting the curves.} } \details{ Zero values of the rates are ignored. They are neiter in the plot nor in the calculation of the axis ranges. } \value{ \code{NULL}. The function is used for its side-effect, the plot. } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{apc.frame}} } \examples{ data( blcaIT ) attach(blcaIT) # Table of rates: bl.rate <- tapply( D, list(age,period), sum ) / tapply( Y, list(age,period), sum ) bl.rate # The four classical plots: par( mfrow=c(2,2) ) rateplot( bl.rate*10^6 ) # The labels on the vertical axis could be nicer: rateplot( bl.rate*10^6, at=10^(-1:3), labels=c(0.1,1,10,100,1000) ) # More bells an whistles par( mfrow=c(1,3), mar=c(3,3,1,1), oma=c(0,3,0,0), mgp=c(3,1,0)/1.6 ) rateplot( bl.rate*10^6, ylab="", ann=TRUE, which=c("AC","PA","CA"), at=10^(-1:3), labels=c(0.1,1,10,100,1000), col=topo.colors(11), cex.ann=1.2 ) } \keyword{hplot} Epi/man/apc.fit.Rd0000644000176200001440000003020413751040403013351 0ustar liggesusers\name{apc.fit} \alias{apc.fit} \title{ Fit an Age-Period-Cohort model to tabular data. } \description{ Fits the classical five models to tabulated rate data (cases, person-years) classified by two of age, period, cohort: Age, Age-drift, Age-Period, Age-Cohort and Age-Period-Cohort. There are no assumptions about the age, period or cohort classes being of the same length, or that tabulation should be only by two of the variables. Only requires that mean age and period for each tabulation unit is given. } \usage{ apc.fit( data, A, P, D, Y, ref.c, ref.p, dist = c("poisson","binomial"), model = c("ns","bs","ls","factor"), dr.extr = "Y", parm = c("ACP","APC","AdCP","AdPC","Ad-P-C","Ad-C-P","AC-P","AP-C"), npar = c( A=5, P=5, C=5 ), scale = 1, alpha = 0.05, print.AOV = TRUE ) } \arguments{ \item{data}{Data frame with (at least) variables, \code{A} (age), \code{P} (period), \code{D} (cases, deaths) and \code{Y} (person-years). Cohort (date of birth) is computed as \code{P-A}. If this argument is given the arguments \code{A}, \code{P}, \code{D} and \code{Y} are ignored.} \item{A}{Age; numerical vector with mean age at diagnosis for each unit.} \item{P}{Period; numerical vector with mean date of diagnosis for each unit.} \item{D}{Cases, deaths; numerical vector.} \item{Y}{Person-years; numerical vector. Also used as denominator for binomial data, see the \code{dist} argument.} \item{ref.c}{Reference cohort, numerical. Defaults to median date of birth among cases. If used with \code{parm="AdCP"} or \code{parm="AdPC"}, the residual cohort effects will be 1 at \code{ref.c}} \item{ref.p}{Reference period, numerical. Defaults to median date of diagnosis among cases.} \item{dist}{Distribution (or more precisely: Likelihood) used for modeling. if a binomial model us used, \code{Y} is assumed to be the denominator; \code{"binomial"} gives a binomial model with logit link. The Age-effects returned are converted to the probability scale, Period and Cohort effects are still odds-ratios.} \item{model}{Type of model (covariate effects) fitted: \itemize{ \item \code{ns} fits a model with natural splines for each of the terms, with \code{npar} parameters for the terms. \item \code{bs} fits a model with B-splines for each of the terms, with \code{npar} parameters for the terms. \item \code{ls} fits a model with linear splines. \item \code{factor} fits a factor model with one parameter per value of \code{A}, \code{P} and \code{P-A}. \code{npar} is ignored in this case. } } \item{dr.extr}{Character or numeric. How the drift parameter should be extracted from the age-period-cohort model. Specifies the inner product used for definition of orthogonality of the period / cohort effects to the linear effects --- in terms of a diagonal matrix. \code{"Y"} (default) uses the no. person-time, \code{Y}, corresponding to the observed information about the square root of the rate. \code{"R"} or \code{"L"} uses \code{Y*Y/D} corresponding to the observed information about the rate (usually termed "lambda", hence the "\code{L}"). \code{"D"} or \code{"T"} uses the no. events as the weight in the inner product, corresponding to the information about the log-rate (usually termed "theta", hence the "\code{T}"). If given \code{"n"} (naive) (well, in fact any other character value) will induce the use of the standard inner product putting equal weight on all units in the dataset. If \code{dr.extr} is a numeric vector this is used as the diagonal of the matrix inducing the inner product. If \code{dr.extr} is a numeric scalar, \code{D + dr.extr*Y} is used as the diagonal of the matrix inducing the inner product. This family of inner products are the only ones that meet the split-observation invariance criterion. The setting of this parameter has no effect on the fit of the model, it only influences the parametrization returned in the \code{Age}, \code{Per} and \code{Coh} elements of the resulting list. } \item{parm}{Character. Indicates the parametrization of the effects. The first four refer to the ML-fit of the Age-Period-Cohort model, the last four give Age-effects from a smaller model and residuals relative to this. If one of the latter is chosen, the argument \code{dr.extr} is ignored. Possible values for \code{parm} are: \itemize{ \item \code{"ACP"}: ML-estimates. Age-effects as rates for the reference cohort. Cohort effects as RR relative to the reference cohort. Period effects constrained to be 0 on average with 0 slope. \item \code{"APC"}: ML-estimates. Age-effects as rates for the reference period. Period effects as RR relative to the reference period. Cohort effects constrained to be 0 on average with 0 slope. \item \code{"AdCP"}: ML-estimates. Age-effects as rates for the reference cohort. Cohort and period effects constrained to be 0 on average with 0 slope. In this case returned effects do not multiply to the fitted rates, the drift is missing and needs to be included to produce the fitted values. \item \code{"AdPC"}: ML-estimates. Age-effects as rates for the reference period. Cohort and period effects constrained to be 0 on average with 0 slope. In this case returned effects do not multiply to the fitted rates, the drift is missing and needs to be included to produce the fitted values. \item \code{"Ad-C-P"}: Age effects are rates for the reference cohort in the Age-drift model (cohort drift). Cohort effects are from the model with cohort alone, using log(fitted values) from the Age-drift model as offset. Period effects are from the model with period alone using log(fitted values) from the cohort model as offset. \item \code{"Ad-P-C"}: Age effects are rates for the reference period in the Age-drift model (period drift). Period effects are from the model with period alone, using log(fitted values) from the Age-drift model as offset. Cohort effects are from the model with cohort alone using log(fitted values) from the period model as offset. \item \code{"AC-P"}: Age effects are rates for the reference cohort in the Age-Cohort model, cohort effects are RR relative to the reference cohort. Period effects are from the model with period alone, using log(fitted values) from the Age-Cohort model as offset. \item \code{"AP-C"}: Age effects are rates for the reference period in the Age-Period model, period effects are RR relative to the reference period. Cohort effects are from the model with cohort alone, using log(fitted values) from the Age-Period model as offset. } } \item{npar}{The number of parameters/knots to use for each of the terms in the model. If it is vector of length 3, the numbers are taken as the no. of knots for Age, Period and Cohort, respectively. Unless it has a names attribute with values "A", "P" and "C" in which case these will be used. The knots chosen are the quantiles \code{(1:nk-0.5)/nk} of the events (i.e. of \code{rep(A,D)} and similarly for \code{P} and \code{C}). \code{npar} may also be a named list of three numerical vectors with names "A", "P" and "C", in which case these taken as the knots for the age, period and cohort effect, the smallest and largest element in each vector are used as the boundary knots.} \item{alpha}{The significance level. Estimates are given with (1-\code{alpha}) confidence limits.} \item{scale}{numeric(1), factor multiplied to the rate estimates before output.} \item{print.AOV}{Should the analysis of deviance table for the models be printed?} } \value{ An object of class "apc" (recognized by \code{\link{apc.plot}} and \code{\link{apc.lines}}) --- a list with components: \item{Type}{Text describing the model and parametrization returned.} \item{Model}{The model object(s) on which the parametrization is based.} \item{Age}{Matrix with 4 columns: \code{A.pt} with the ages (equals \code{unique(A)}) and three columns giving the estimated rates with c.i.s.} \item{Per}{Matrix with 4 columns: \code{P.pt} with the dates of diagnosis (equals \code{unique(P)}) and three columns giving the estimated RRs with c.i.s.} \item{Coh}{Matrix with 4 columns: \code{C.pt} with the dates of birth (equals \code{unique(P-A)}) and three columns giving the estimated RRs with c.i.s.} \item{Drift}{A 3 column matrix with drift-estimates and c.i.s: The first row is the ML-estimate of the drift (as defined by \code{drift}), the second row is the estimate from the Age-drift model. The first row name indicates which type of inner product were used for projections. For the sequential parametrizations, only the latter is given.} \item{Ref}{Numerical vector of length 2 with reference period and cohort. If ref.p or ref.c was not supplied the corresponding element is NA.} \item{Anova}{Analysis of deviance table comparing the five classical models.} \item{Knots}{If \code{model} is one of \code{"ns"} or \code{"bs"}, a list with three components: \code{Age}, \code{Per}, \code{Coh}, each one a vector of knots. The max and the min of the vectors are the boundary knots.} } \details{ Each record in the input data frame represents a subset of a Lexis diagram. The subsets need not be of equal length on the age and period axes, in fact there are no restrictions on the shape of these; they could be Lexis triangles for example. The requirement is that \code{A} and \code{P} are coded with the mean age and calendar time of observation in the subset. This is essential since \code{A} and \code{P} are used as quantitative variables in the models. This approach is different from to the vast majority of the uses of APC-models in the literature where a factor model is used for age, period and cohort effects. The latter can be obtained by using \code{model="factor"}. Note however that the cohort factor is defined from \code{A} and \code{P}, so that it is not possible in this framework to replicate the Boyle-Robertson fallacy. } \references{ The considerations behind the parametrizations used in this function are given in detail in: B. Carstensen: Age-Period-Cohort models for the Lexis diagram. Statistics in Medicine, 10; 26(15):3018-45, 2007. Various links to course material etc. is available through \url{http://bendixcarstensen.com/APC/} } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{apc.frame}}, \code{\link{apc.lines}}, \code{\link{apc.plot}}, \code{\link{LCa.fit}}, \code{\link{apc.LCa}}. } \examples{ library( Epi ) data(lungDK) # Taylor a dataframe that meets the requirements for variable names exd <- lungDK[,c("Ax","Px","D","Y")] names(exd)[1:2] <- c("A","P") # Three different ways of parametrizing the APC-model, ML ex.1 <- apc.fit( exd, npar=7, model="ns", dr.extr="1", parm="ACP", scale=10^5 ) ex.D <- apc.fit( exd, npar=7, model="ns", dr.extr="D", parm="ACP", scale=10^5 ) ex.Y <- apc.fit( exd, npar=7, model="ns", dr.extr="Y", parm="ACP", scale=10^5 ) # Sequential fit, first AC, then P given AC. ex.S <- apc.fit( exd, npar=7, model="ns", parm="AC-P", scale=10^5 ) # Show the estimated drifts ex.1[["Drift"]] ex.D[["Drift"]] ex.Y[["Drift"]] ex.S[["Drift"]] # Plot the effects lt <- c("solid","22")[c(1,1,2)] apc.plot( ex.1, lty=c(1,1,3) ) apc.lines( ex.D, col="red", lty=c(1,1,3) ) apc.lines( ex.Y, col="limegreen", lty=c(1,1,3) ) apc.lines( ex.S, col="blue", lty=c(1,1,3) ) } \keyword{models} \keyword{regression} Epi/man/twoby2.Rd0000644000176200001440000000352413751040403013260 0ustar liggesusers\name{twoby2} \alias{twoby2} \title{Analysis of a two by two table} \description{ Computes the usual measures of association in a 2 by 2 table with confidence intervals. Also produces asymtotic and exact tests. Assumes that comparison of probability of the first column level between levels of the row variable is of interest. Output requires that the input matrix has meaningful row and column labels. } \usage{ twoby2(exposure, outcome, alpha = 0.05, print = TRUE, dec = 4, conf.level = 1-alpha, F.lim = 10000) } \arguments{ \item{exposure}{If a table the analysis is based on the first two rows and first two columns of this. If a variable, this variable is tabulated against} \item{outcome}{as the second variable} \item{alpha}{Significance level} \item{print}{Should the results be printed?} \item{dec}{Number of decimals in the printout.} \item{conf.level}{1-\code{alpha}} \item{F.lim}{If the table total exceeds \code{F.lim}, Fisher's exact test is not computed} } \value{A list with elements: \item{table}{The analysed 2 x 2 table augmented with probabilities and confidence intervals. The confidence intervals for the probabilities are computed using the normal approximation to the log-odds. Confidence intervals for the difference of proportions are computed using method 10 from Newcombe, Stat.Med. 1998, 17, pp.873 ff.} \item{measures}{A table of Odds-ratios and relative risk with confidence intervals.} \item{p.value}{Exact p-value for the null hypothesis of OR=1} } \author{ Mark Myatt. Modified by Bendix Carstensen. } \examples{ Treat <- sample(c("A","B"), 50, rep=TRUE ) Resp <- c("Yes","No")[1+rbinom(50,1,0.3+0.2*(Treat=="A"))] twoby2( Treat, Resp ) twoby2( table( Treat, Resp )[,2:1] ) # Comparison the other way round } \keyword{univar} \keyword{htest} Epi/man/foreign.Lexis.Rd0000644000176200001440000000622313751040403014545 0ustar liggesusers\name{foreign.Lexis} \Rdversion{1.1} \alias{msdata} \alias{msdata.Lexis} \alias{etm} \alias{etm.Lexis} \title{Create a data structures suitable for use with packages \code{mstate} or \code{etm}. } \description{ The \code{mstate} package requires input in the form of a stacked dataset with specific variable names. This is provided by \code{msdata.Lexis}. The resulting dataframe contains the same information as the result of a call to \code{\link{stack.Lexis}}. The \code{etm} package requires input (almost) in the form of a \code{Lexis} object, but with specific column names etc. This is provided by \code{etm.Lexis}. } \usage{ msdata(obj, ...) \method{msdata}{Lexis}(obj, time.scale = timeScales(obj)[1], ... ) \method{etm}{Lexis}( data, time.scale = timeScales(data)[1], cens.name = "cens", s = 0, t = "last", covariance = TRUE, delta.na = TRUE, ... ) } \arguments{ \item{obj}{A \code{\link{Lexis}} object.} \item{data}{A \code{\link{Lexis}} object.} \item{time.scale}{Name or number of timescale in the \code{Lexis} object.} \item{cens.name}{Name of the code for censoring used by \code{etm}. It is only necessary to change this if one of the states in the \code{Lexis} object has name "\code{cens}".} \item{s}{Passed on to \code{etm}.} \item{t}{Passed on to \code{etm}.} \item{covariance}{Passed on to \code{etm}.} \item{delta.na}{Passed on to \code{etm}.} \item{\dots}{Further arguments.} } \value{ \code{msdata.Lexis} returns a dataframe with the \code{Lexis} specific variables stripped, and with the following added: \code{id}, \code{Tstart}, \code{Tstop}, \code{from}, \code{to}, \code{trans}, \code{status}, which are used in the \code{mstate} package. \code{etm.Lexis} transforms the \code{Lexis} object into a dataframe suitable for analysis by the function \code{etm} from the \code{etm} package, and actually calls this function, so returns an object of class \code{etm}. } \author{ Bendix Carstensen, \email{b@bxc.dk}, \url{http://bendixcarstensen.com} } \examples{ data(DMlate) str(DMlate) dml <- Lexis( entry = list(Per=dodm,Age=dodm-dobth,DMdur=0), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate[1:1000,] ) dmi <- cutLexis( dml, cut=dml$doins, new.state="Ins", pre="DM" ) summary( dmi ) # Use the interface to the mstate package if( require(mstate) ) { ms.dmi <- msdata.Lexis( dmi ) # Check that all the transitions and person-years got across. with( ms.dmi, rbind( table(status,trans), tapply(Tstop-Tstart,trans,sum) ) ) } # Use the etm package directly with a Lexis object if( require(etm) ) { dmi <- subset(dmi,lex.id<1000) etm.D <- etm.Lexis( dmi, time.scale=3 ) str( etm.D ) plot( etm.D, col=rainbow(5), lwd=2, lty=1, xlab="DM duration" ) } } \seealso{ \code{\link{stack.Lexis}}, \code{\link[mstate:msprep]{msprep}}, \code{\link[etm:etm]{etm}} } \keyword{survival} Epi/man/DMlate.Rd0000644000176200001440000000437413751040403013204 0ustar liggesusers\name{DMlate} \Rdversion{1.1} \alias{DMlate} \alias{DMrand} \docType{data} \title{ The Danish National Diabetes Register. } \description{ These two datasets each contain a random sample of 10,000 persons from the Danish National Diabetes Register. \code{DMrand} is a random sample from the register, whereas \code{DMlate} is a random sample among those with date of diagnosis after 1.1.1995. All dates are radomly jittered by adding a U(-7,7) (days). } \usage{data(DMrand) data(DMlate)} \format{ A data frame with 10000 observations on the following 7 variables. \describe{ \item{\code{sex}}{Sex, a factor with levels \code{M} \code{F}} \item{\code{dobth}}{Date of birth} \item{\code{dodm}}{Date of inclusion in the register} \item{\code{dodth}}{Date of death} \item{\code{dooad}}{Date of 2nd prescription of OAD} \item{\code{doins}}{Date of 2nd insulin prescription} \item{\code{dox}}{Date of exit from follow-up.} } } \details{All dates are given in fractions of years, so 1998.000 corresponds to 1 January 1998 and 1998.997 to 31 December 1998. All dates are randomly perturbed by a small amount, so no real persons have any of the combinations of the 6 dates in the dataset. But results derived from the data will be quite close to those that would be obtained if the entire 'real' diabetes register were used. } \source{ Danish National Board of Health. } \references{ B Carstensen, JK Kristensen, P Ottosen and K Borch-Johnsen: The Danish National Diabetes Register: Trends in incidence, prevalence and mortality, Diabetologia, 51, pp 2187--2196, 2008. In partucular see the appendix at the end of the paper. } \examples{ data(DMlate) str(DMlate) dml <- Lexis( entry=list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit=list(Per=dox), exit.status=factor(!is.na(dodth),labels=c("DM","Dead")), data=DMlate ) # Cut the follow-up at insulin start, and introduce a new timescale, # and split non-precursor states system.time( dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins", new.scale = "t.Ins", split.states = TRUE ) ) summary( dmi ) } \keyword{datasets} Epi/man/mod.Lexis.Rd0000644000176200001440000002130513751040403013671 0ustar liggesusers\name{mod.Lexis} \alias{glm.Lexis} \alias{gam.Lexis} \alias{coxph.Lexis} \title{Fit intensity models to follow-up data in Lexis objects } \description{ Modeling intensities based on Lexis objects, exploiting the structure of the Lexis objects where the events and risk time have predefined representations. This allows a simpler syntax than the traditional explicit modeling using \code{\link{glm}}, \code{\link{gam}} and \code{\link{coxph}}. Requires that \code{lex.Cst} and \code{lex.Xst} are defined as factors. But it is just a set of wrappers fro \code{glm}, \code{gam} and \code{coxph}. } \usage{ glm.Lexis( Lx, # Lexis object formula, # ~ model from = preceding(Lx,to), # 'from' states to = absorbing(Lx) , # 'to' states paired = FALSE, # only the pairwise link = "log", # link function scale = 1, # scaling of PY verbose = TRUE, # report what is done? \dots ) # further arguments to glm gam.Lexis( Lx, # Lexis object formula, # ~ model from = preceding(Lx,to), # 'from' states to = absorbing(Lx) , # 'to' states paired = FALSE, # only the pairwise link = "log", # link function scale = 1, # scaling of PY verbose = TRUE, # report what is done? \dots ) # further arguments to gam coxph.Lexis( Lx, # Lexis object formula, # timescale ~ model from = preceding(Lx,to), # 'from' states to = absorbing(Lx) , # 'to' states paired = FALSE, # only the pairwise verbose = TRUE, # report what is done? \dots ) # further arguments to coxph } \arguments{ \item{Lx}{A \code{\link{Lexis}} object representing cohort follow-up. } \item{formula}{Model formula describing the model for the intensity(-ies). For \code{glm} and \code{gam}, the formula should be one-sided; for \code{coxph} the formula should be two-sided and have the name of the time-scale used for baseline hazard as the l.h.s. } \item{from}{Character vector of states \bold{from} which transitions are considered. May also be an integer vector in which case the reference will be to the position of levels of \code{lex.Cst}. Defaults to the collection of transient states immediately preceding the absorbing states. } \item{to}{Character vector of states \bold{to} which a transition is considered an event. May also be an integer vector in which case the reference will be to the position of levels of \code{lex.Xst}. Defaults to the set of absorbing states. } \item{paired}{Logical. Should the states mentioned in \code{to}, rep. \code{from} be taken as pairs, indicating the only transitions modeled. If \code{FALSE} all transitions from any of the states in \code{from} to any states in \code{to} are modeled. } \item{link}{Character; name of the link function used, allowed values are \code{'log'} (the default), \code{'identity'} and \code{'sqrt'}, see the family \code{\link{poisreg}}. } \item{scale}{Scalar. \code{lex.dur} is divided by this number before analysis, so that you can get resulting rates on a scale of your wish. } \item{verbose}{Print information on the states modeled? } \item{\dots}{Further arguments passed on to \code{glm}, \code{glm} or \code{coxph} } } \details{ The \code{glm} and \code{gam} models are fitted using the family \code{\link{poisreg}} which is a bit faster than the traditional \code{poisson} family. The response variable for this family is a two-column vector of events and person-time respectively, so the predictions, for example using \code{\link{ci.pred}} does not require \code{lex.dur} (and would ignore this) as variable in the \code{newdata}. \code{ci.pred} will return the estimated rates in units of the \code{lex.dur} in the \code{Lexis} object, scaled by \code{scale}, which has a default value of 1. The default is to model all transitions into any absorbing state by the same model (how wise is that??). If only \code{from} is given, \code{to} is set to all states reachable from \code{from}, which may be a really goofy model and if so a warning is issued. If only \code{to} is given, \code{from} is set to the collection of states from which \code{to} can be reached directly --- see \code{\link{preceding}} and its cousins. This convention means that if you have a \code{\link{Lexis}} object representing a simple survival analysis, with states, say, "alive" and "dead", you can dispense with the \code{from} and \code{to} arguments. Occasionally you only want to model a subset of the possible transitions from states in \code{from} to states in \code{to}, in which case you specify \code{from} and \code{to} as character vectors of the same length and set \code{paired=TRUE}. Then only transitions \code{from[i]} to \code{to[i]}, \code{i}=1,2,... will be modeled. There is no working \code{update} functions for these objects (yet). Strictly speaking, it is a bit counter-intuitive to have the time-scale on the l.h.s. of the formula for the \code{coxph} since the time scale is also a predictor of the occurrence rate. On the other hand, calling \code{coxph} directly would also entail having the name of the time scale in the \code{Surv} object on the l.h.s. of the formula. So the inconsistency is merely carried over from \code{coxph}. } \value{\code{glm.Lexis} returns a \code{\link{glm}} object, which is also of class \code{glm.lex}, \code{gam.Lexis} returns a \code{\link[mgcv]{gam}} object, which is also of class \code{gam.lex}, and \code{coxph.Lexis} returns a \code{\link[survival]{coxph}} object, which is also of class \code{coxph.lex}. These extra class attributes are meant to facilitate the (still pending) implementation of an \code{update} function. The returned objects all have an extra attribute, \code{Lexis} which is a list with entries \code{data}, the name of the \code{Lexis} object modeled (note that it is \emph{not} the object, only the name of it, which may not be portable); \code{trans}, a character vector of transitions modeled; \code{formula}, the model formula; and \code{scale}, the scaling applied to \code{lex.dur} before modeling. Only the \code{glm} and \code{gam} objects have the \code{scale} element in the list; a scalar indicating the scaling of \code{lex.dur} before modeling. Note that the formula component of the \code{Lexis} attribute of a \code{coxph} object is a two-sided formula with the baseline time scale as the l.h.s. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com}. } \seealso{ \code{\link{Lexis}}, \code{\link{cutLexis}}, \code{\link{mcutLexis}}, \code{\link{addCov.Lexis}}, \code{\link{absorbing}}, \code{\link{transient}} } \examples{ library( Epi ) library( survival ) data( DMlate ) # Lexis object of total follow-up mL <- Lexis( entry = list(age=dodm-dobth,per=dodm), exit = list(per=dox), exit.status = factor(!is.na(dodth),labels=c("Alive","Dead")), data = DMlate ) # Cut follow-up at start of insulin use cL <- cutLexis( mL, cut = mL$doins, timescale = "per", new.state = "Ins", precursor.states = "Alive" ) # Split follow-up on age-axis system.time( sL <- splitLexis( cL, breaks=0:25*4, time.scale="age") ) # ( consider splitMulti from the popEpi package ) summary( sL ) # glm models for rates based on the time-split dataset by insulin and sex # Proportional hazards model with insulin as time-dependent variable # - uses the defaul of modeling all transitions from both transient # states ("Alive" and "Ins") to the absorbing state ("Dead"). mt <- glm.Lexis( sL, ~ sex + lex.Cst + Ns(age,knots=c(15,3:8*10)) ) # prediction of mortality rates from "Alive" with and without PH assumption nA <- data.frame( age=40:70, sex="M", lex.Cst="Alive" ) nI <- data.frame( age=40:70, sex="M", lex.Cst="Ins" ) matshade( nA$age, cbind( ci.pred(mt,nA), ci.pred(mt,nI) )*1000, plot=TRUE, lwd=3, lty=1, log="y", col=c("black","blue","red"), xlab="Age", ylab="Mortality per 1000 PY" ) # gam models may take some time to run so we leave it out \dontrun{ mt.gam <- gam.Lexis( sL, ~ sex + lex.Cst + s(age), to="Dead", scale=1000 ) } # Fit a Cox model for mortality with age as baseline time scale and # insulin (lex.Cst) as time-dependent covariate mt.cox <- coxph.Lexis( sL, age ~ sex + lex.Cst, c("Alive","Ins"), "Dead" ) # Pretty much the same results for regression paramters as the glm: ci.exp( mt , subset="ex" ) # ci.exp( mt.gam, subset="ex" ) ci.exp( mt.cox, subset="ex" ) } \keyword{models} Epi/man/ftrend.Rd0000644000176200001440000000476613751040403013325 0ustar liggesusers\name{ftrend} \alias{ftrend} \title{Fit a floating trend to a factor in generalized linear model} \description{ Fits a "floating trend" model to the given factor in a glm in a generalized linear model by centering covariates. } \usage{ ftrend(object, ...) } \arguments{ \item{object}{fitted \code{lm} or \code{glm} object. The model must not have an intercept term} \item{...}{arguments to the \code{nlm} function} } \details{ \code{ftrend()} calculates "floating trend" estimates for factors in generalized linear models. This is an alternative to treatment contrasts suggested by Greenland et al. (1999). If a regression model is fitted with no intercept term, then contrasts are not used for the first factor in the model. Instead, there is one parameter for each level of this factor. However, the interpretation of these parameters, and their variance-covariance matrix, depends on the numerical coding used for the covariates. If an arbitrary constant is added to the covariate values, then the variance matrix is changed. The \code{ftrend()} function takes the fitted model and works out an optimal constant to add to the covariate values so that the covariance matrix is approximately diagonal. The parameter estimates can then be treated as approximately independent, thus simplifying their presentation. This is particularly useful for graphical display of dose-response relationships (hence the name). Greenland et al. (1999) originally suggested centring the covariates so that their weighted mean, using the fitted weights from the model, is zero. This heuristic criterion is improved upon by \code{ftrend()} which uses the same minimum information divergence criterion as used by Plummer (2003) for floating variance calculations. \code{ftrend()} calls \code{nlm()} to do the minimization and will pass optional arguments to control it. } \note{ The "floating trend" method is an alternative to the "floating absolute risk" method, which is implemented in the function \code{float()}. } \value{ A list with the following components \item{coef}{coefficients for model with adjusted covariates.} \item{vcov}{Variance-covariance matrix of adjusted coefficients.} } \references{ Greenland S, Michels KB, Robins JM, Poole C and Willet WC (1999) Presenting statistical uncertainty in trends and dose-response relations, \emph{American Journal of Epidemiology}, \bold{149}, 1077-1086. } \author{Martyn Plummer} \seealso{\code{\link{float}}} \keyword{regression} Epi/man/lls.Rd0000644000176200001440000000335213751040403012623 0ustar liggesusers\name{lls} \alias{lls} \alias{clear} \title{Functions to manage and explore the workspace } \description{These functions help you to find out what has gone wrong and to start afresh if needed. } \usage{ lls(pos = 1, pat = "", all=FALSE, print=TRUE ) clear() } \arguments{ \item{pos}{Numeric. What position in the search path do you want listed.} \item{pat}{Character. List only objects that have this string in their name.} \item{all}{Logical. Should invisible objects be printed too - see \code{\link{ls}} to which this argument is passed.} \item{print}{Logical. Should the result be printed?} } \details{\code{lls} is designed to give a quick overview of the name, mode, class and dimension of the object in your workspace. They may not always be what you think they are. \code{clear} clears all your objects from workspace, and all attached objects too --- it only leaves the loaded packages in the search path; thus allowing a fresh start without closing and restarting R. } \value{ \code{lls} returns a data frame with four character variables: code{name}, code{mode}, code{class} and code{size} and one row per object in the workspace (if \code{pos=1}). \code{size} is either the length or the dimension of the object. The data frame is by default printed with left-justified columns. } \author{\code{lls}: Unknown. Modified by Bendix Carstensen from a long forgotten snatch. \code{clear}: Michael Hills / David Clayton.} \examples{ x <- 1:10 y <- rbinom(10, 1, 0.5) m1 <- glm( y ~ x, family=binomial ) M <- matrix( 1:20, 4, 5 ) .M <- M dfr <- data.frame(x,y) attach( dfr ) lls() search() clear() search() lls() lls(all=TRUE) } \keyword{attributes}Epi/man/contr.cum.Rd0000644000176200001440000000306213751040403013737 0ustar liggesusers\name{contr.cum} \alias{contr.cum} \alias{contr.2nd} \alias{contr.diff} \alias{contr.orth} \title{ Contrast matrices } \description{ Return a matrix of contrasts for factor coding. } \usage{ contr.cum(n) contr.diff(n) contr.2nd(n) contr.orth(n) } \arguments{ \item{n}{A vector of levels for a factor, or the number of levels.} } \details{ These functions are used for creating contrast matrices for use in fitting regression models. The columns of the resulting matrices contain contrasts which can be used for coding a factor with \code{n} levels. \code{contr.cum} gives a coding corresponding to successive differences between factor levels. \code{contr.diff} gives a coding that correspond to the cumulative sum of the value for each level. This is not meaningful in a model where the intercept is included, therefore \code{n} columns ia always returned. \code{contr.2nd} gives contrasts corresponding to 2nd order differences between factor levels. Returns a matrix with \code{n-2} columns. \code{contr.orth} gives a matrix with \code{n-2} columns, which are mutually orthogonal and orthogonal to the matrix \code{cbind(1,1:n)} } \value{ A matrix with \code{n} rows and \code{k} columns, with \code{k}=\code{n} for \code{contr.diff} \code{k}=\code{n-1} for \code{contr.cum} \code{k}=\code{n-2} for \code{contr.2nd} and \code{contr.orth}. } \author{Bendix Carstensen} \seealso{ \code{\link{contr.treatment}} } \examples{ contr.cum(6) contr.2nd(6) contr.diff(6) contr.orth(6) } \keyword{design} \keyword{models} Epi/man/BrCa.Rd0000644000176200001440000000456213751040403012644 0ustar liggesusers\name{BrCa} \alias{BrCa} \docType{data} \title{Clinical status, relapse, metastasis and death in 2982 women with breast cancer. } \description{ This dataset is a transformation of the example dataset used by Crowther and Lambert in their multistate paper.} \usage{data(BrCa)} \format{ A data frame with 2982 observations on the following 17 variables: \describe{ \item{\code{pid}}{Person-id; numeric} \item{\code{year}}{Calendar year of diagnosis} \item{\code{age}}{Age at diagnosis} \item{\code{meno}}{Menopausal status; a factor with levels \code{pre} \code{post}} \item{\code{size}}{Tumour size; a factor with levels \code{<=20 mm} \code{>20-50 mm} \code{>50 mm}} \item{\code{grade}}{Tumour grade; a factor with levels \code{2} \code{3}} \item{\code{nodes}}{Number of positive lymph nodes, a numeric vector} \item{\code{pr}}{Progesteron receptor level} \item{\code{pr.tr}}{Transformed progesteron level} \item{\code{er}}{Estrogen receptor level} \item{\code{hormon}}{Hormon therapy at diagnosis; a factor with levels \code{no} \code{yes}} \item{\code{chemo}}{Chemotherapy treatment; a factor with levels \code{no} \code{yes}} \item{\code{tor}}{Time of relapse, years since diagnosis} \item{\code{tom}}{Time of metastasis, years since diagnosis} \item{\code{tod}}{Time of death, years since diagnosis} \item{\code{tox}}{Time of exit from study, years since diagnosis} \item{\code{xst}}{Vital status at exit; a factor with levels \code{Alive} \code{Dead}} } } \details{ The dataset has been modified to contain the times (since diagnosis) of the events of interest, to comply with the usual structure of data. } \source{ The original data were extracted from: \url{http://fmwww.bc.edu/repec/bocode/m/multistate_example.dta}, this is modified representation of the same amount of information. } \references{ The data were used as example in the paper by Crowther and Lambert: Parametric multistate survival models: Flexible modelling allowing transition-specific distributions with application to estimating clinically useful measures of effect differences; Stat Med 36 (29), pp 4719-4742, 2017. (No, it is not the paper, just the title.) A parallel analysis using the \code{\link{Lexis}} machinery is available as: \url{http://bendixcarstensen.com/AdvCoh/papers/bcMS.pdf} } \examples{ data(BrCa) } \keyword{datasets} Epi/man/time.scales.Rd0000644000176200001440000000241313751040403014235 0ustar liggesusers\name{timeScales} \alias{timeScales} \alias{timeSince} \alias{tsNA20} \title{The time scales of a Lexis object} \description{ Functions to get the names and type of the time scales of a \code{Lexis} object. } \usage{ timeScales(x) timeSince(x) tsNA20( x, all.scales=FALSE ) } \arguments{ \item{x}{an object of class \code{Lexis}.} \item{all.scales}{Should NAs in all timescales be replaced by 0? If \code{FALSE} (the default) only timescales defined as time since entry to a state get \code{NA}s replaced by 0s} } \value{ \code{timeScales} returns a character vector containing the names of the variables in \code{x} that represent the time scales. Extracted from the \code{time.scales} attribute of the object. \code{timeSince} returns a named character vector, the names being the names of the timescales and the content being the names of the states to which the corresponding timescale is defined as time since entry. For those time scales that are not defined as such an empty string is used. Hence, if none of the timescales are defined as time since entry to a state \code{timeSince} will return a vector of empty strings. } \author{Martyn Plummer, Bendix Carstensen} \seealso{\code{\link{Lexis}}, \code{\link{splitLexis}}} \keyword{attribute} Epi/man/gmortDK.Rd0000644000176200001440000000303113751040403013372 0ustar liggesusers\name{gmortDK} \alias{gmortDK} \docType{data} \title{Population mortality rates for Denmark in 5-years age groups.} \description{ The \code{gmortDK} data frame has 418 rows and 21 columns. } \format{ This data frame contains the following columns: \tabular{rl}{ \code{agr}: \tab Age group, 0:0--4, 5:5--9,..., 90:90+. \cr \code{per}: \tab Calendar period, 38: 1938--42, 43: 1943--47, ..., 88:1988-92. \cr \code{sex}: \tab Sex, 1: male, 2: female. \cr \code{risk}: \tab Number of person-years in the Danish population. \cr \code{dt}: \tab Number of deaths. \cr \code{rt}: \tab Overall mortality rate in cases per 1000 person-years, i.e. \code{rt=1000*dt/risk} \cr \tab Cause-specific mortality rates in cases per 1000 person-years: \cr \code{r1}: \tab Infections \cr \code{r2}: \tab Cancer. \cr \code{r3}: \tab Tumors, benign, unspecific nature. \cr \code{r4}: \tab Endocrine, metabolic. \cr \code{r5}: \tab Blood. \cr \code{r6}: \tab Nervous system, psychiatric. \cr \code{r7}: \tab Cerebrovascular. \cr \code{r8}: \tab Cardiac. \cr \code{r9}: \tab Respiratory diseases, excl. cancer. \cr \code{r10}: \tab Liver, excl. cancer. \cr \code{r11}: \tab Digestive, other. \cr \code{r12}: \tab Genitourinary. \cr \code{r13}: \tab Ill-defined symptoms. \cr \code{r14}: \tab All other, natural. \cr \code{r15}: \tab Violent. \cr } } \source{ Statistics Denmark, National board of health provided original data. Michael Andersson grouped the causes of death. } \examples{ data(gmortDK) } \seealso{\code{\link{thoro}}, \code{\link{mortDK}}} \keyword{datasets} Epi/man/in.span.Rd0000644000176200001440000000714213751040403013400 0ustar liggesusers\name{in.span} \alias{in.span} \alias{inSpan} \alias{id.span} \alias{idSpan} \alias{thinCol} \title{ Is \code{x} in the column span of matrix \code{A} and what columns are linearly dependent? } \description{ The function \code{in.span} checks if the vector \code{x} (or columns of the matrix \code{x}) is in the column span of the matrix \code{A}. If desired, it returns the coefficient matrix \code{B} so that \code{AB=x}. The function \code{thinCol} removes linearly dependent columns an returns a matrix of full rank. } \usage{ in.span( A, x, coef = FALSE, tol = 1e-08 ) inSpan( A, x, coef=FALSE, tol=1e-08 ) id.span( A, B, tol=1e-08 ) idSpan( A, B, tol=1e-08 ) thinCol( A, tol = 1e-06, col.num = FALSE ) } \details{\code{\link{thinCol}} is mainly a workhorse in \code{\link{detrend}}, but made available because of its general usefulness. \code{in.span} and \code{inSpan} are just different names for the same to accommodate different naming schools. \code{in.span} (\code{inSpan}) is handy in checking whether different parametrizations of a model are identical in the sense of spanning the same linear space. Equivalent to checking whether fitted values under different parametrizations are identical, but has the further use of checking if subspaces of models are equivalent. The function simply checks if the regression of (columns of) \code{x} on the columns of \code{A} produces residuals that are all 0. \code{id.span} (equivalent to \code{idSpan}) checks whether two matrices have the same column span. } \arguments{ \item{A}{A matrix.} \item{B}{A matrix.} \item{x}{A vector or matrix. \code{length(x)} (or \code{nrow(x)}) must be equal to \code{nrow(A)}.} \item{coef}{Logical. Should the coefficient matrix (\code{k}) be returned, so that \code{Ak=x}?} \item{tol}{Tolerance for identity of matrices in check (\code{in.span}) or QR decomposition (\code{thinCol})} \item{col.num}{Logical. Should the positions of dependent columns be returned instead of the full-rank matrix?} } \value{\code{in.span} returns a logical: is \code{x} is in \code{span(A)}? If \code{coef=TRUE} it returns a matrix \code{k} so that \code{Ak=x}. \code{k} is not necessarily unique (A may not have full rank). \code{id.span} returns a logical: is \code{span(A)} the same as \code{span(B)}? \code{thinCol} returns a matrix of full rank, formed from \code{A} by deleting columns linearly dependent on other. If \code{col.num=TRUE} (one possible set of) positions of columns forming a full rank basis for the column space of \code{A} is returned. } \author{Bendix Carstensen, \url{http://bendixcarstensen.com} with essential help from Lars Jorge Diaz and Peter Dalgaard. } \seealso{\code{\link{det}} } \examples{ # Matrices and vectors, x in span(A), z (hopefully) not A <- matrix(round(rnorm(15)*20),5,3) B <- matrix(round(rnorm(15)*20),5,3) B <- cbind( B, B\%*\%c(3,4,2) ) x <- A \%*\% c(3,4,2) z <- 5:9 # how they look data.frame( A=A, x=x, z=z, B=B ) # vectors in span(A)? in.span(A,x) in.span(x,A) in.span(A,x,coef=TRUE) in.span(A,z) in.span(A,z,coef=TRUE) # Do matrices span the same space ? in.span( A, B ) in.span( B, A ) # B is not in span of a subspace of B columns, but vice versa ( M <- matrix( rnorm(8)*7, 4, 2 ) ) in.span( B\%*\%M, B ) in.span( B, B\%*\%M ) id.span( B, B\%*\%M ) # But not unique for singular matrices: ( xx <- in.span( B, B\%*\%M, coef=TRUE ) ) cbind( B\%*\%M, B\%*\%xx ) cbind( xx, M ) # Easier for full rank matrices: ( K <- matrix( rnorm(9)*7, 3, 3 ) ) in.span( A\%*\%K, A ) in.span( A, A\%*\%K ) id.span( A, A\%*\%K ) in.span( A, A\%*\%K, coef=TRUE ) } \keyword{math} Epi/man/ncut.Rd0000644000176200001440000000310013751040403012771 0ustar liggesusers\name{ncut} \alias{ncut} \title{ Function to group a variable in intervals.} \description{ Cuts a continuous variable in intervals. As opposed to \code{cut} which returns a factor, \code{ncut} returns a numeric variable. } \usage{ ncut(x, breaks, type="left" ) } \arguments{ \item{x}{A numerical vector.} \item{breaks}{Vector of breakpoints. \code{NA} will results for values below \code{min(breaks)} if \code{type="left"}, for values above \code{max(breaks)} if \code{type="right"} and for values outside \code{range(breaks)} if \code{type="mid"}} \item{type}{Character: one of \code{c("left","right","mid")}, indicating whether the left, right or midpoint of the intervals defined in breaks is returned.} } \details{ The function uses the base function \code{findInterval}. } \value{ A numerical vector of the same length as \code{x}. } \author{ Bendix Carstensen, Steno Diabetes Center, \email{b@bxc.dk}, \url{http://bendixcarstensen.com}, with essential input from Martyn Plummer, \email{martyn.plummer@r-project.org} } \seealso{ \code{\link{cut}}, \code{\link{findInterval}} } \examples{ br <- c(-2,0,1,2.5) x <- c( rnorm( 10 ), br, -3, 3 ) cbind( x, l=ncut( x, breaks=br, type="l" ), m=ncut( x, breaks=br, type="m" ), r=ncut( x, breaks=br, type="r" ) )[order(x),] x <- rnorm( 200 ) plot( x, ncut( x, breaks=br, type="l" ), pch=16, col="blue", ylim=range(x) ) abline( 0, 1 ) abline( v=br ) points( x, ncut( x, breaks=br, type="r" ), pch=16, col="red" ) points( x, ncut( x, breaks=br, type="m" ), pch=16, col="green" ) } \keyword{manip} Epi/man/simLexis.Rd0000644000176200001440000003205613751040403013631 0ustar liggesusers\name{simLexis} \alias{simLexis} \alias{nState} \alias{pState} \alias{plot.pState} \alias{lines.pState} \title{Simulate a Lexis object representing follow-up in a multistate model.} \description{Based on a (pre-)\code{Lexis} object representing persons at given states and times, and full specification of transition intensities between states in the form of models for the transition rates, this function simulates transition times and -types for persons and returns a \code{Lexis} object representing the simulated cohort. The simulation scheme accommodates multiple timescales, including time since entry into an intermediate state, and accepts fitted Poisson models, Cox-models or just a function as specification of rates.} \usage{ simLexis( Tr, init, N = 1, lex.id, t.range = 20, n.int = 101, time.pts = seq(0,t.range,length.out=n.int) ) nState( obj, at, from, time.scale = 1 ) pState( nSt, perm = 1:ncol(nSt) ) \method{plot}{pState}( x, col = rainbow(ncol(x)), border = "transparent", xlab = "Time", ylim = 0:1, ylab = "Probability", ... ) \method{lines}{pState}( x, col = rainbow(ncol(x)), border = "transparent", ... ) } \arguments{ \item{Tr}{A named list of named lists. The names of the list are names of the transient states in the model. Each list element is again a named list. The names of the elements of this inner list are the names of the states reachable from the state with name equal to the list. Elements of the intter lists represent transitions. See details.} \item{init}{A (pre-)\code{\link{Lexis}} object representing the initial state of the persons whose trajectories through the multiple states we want to simulate. Must have attributes "time.scales" and "time.since" --- see details. Duplicate values of \code{lex.id} are not sensible and not accepted.} \item{N}{Numeric. How many persons should be simulated. \code{N} persons with covariate configuration of each row in \code{init} will be simulated. Either a scalar or a vector of length \code{nrow(init)}.} \item{lex.id}{Vector of ids of the simulated persons. Useful when simulating in chunks.} \item{t.range}{Numerical scalar. The range of time over which to compute the cumulative rates when simulating. Simulted times beyond this will result in an obervation censored at \code{t.range} after entry.} \item{n.int}{Number of intervals to use when computing (cumulative) rates.} \item{time.pts}{Numerical vector of times since start. Cumulative rates for transitions are computed at these times after stater and entry state. Simulation is only done till time \code{max(time.pts)} after start, where persons are censored. Must start with 0.} \item{obj}{A \code{Lexis} object.} \item{from}{The point on the time scale \code{time.scale} from which we start counting.} \item{time.scale}{The timescale to which \code{from} refer.} \item{at}{Time points (after \code{from}) where the number of persons in each state is to be computed.} \item{nSt}{A table obtained by \code{nState}.} \item{perm}{A permutation of columns used before cumulating row-wise and taking percentages.} \item{x}{An object of class \code{pState}, e.g. created by \code{pState}.} \item{col}{Colors for filling the areas between curves.} \item{border}{Colors for outline of the areas between curves.} \item{xlab}{Label on x-axis} \item{ylim}{Limits on y-axis} \item{ylab}{Label on y-axis} \item{...}{Further arguments passed on to \code{plot}.} } \details{The simulation command \code{simLexis} is not defined as a method for \code{Lexis} objects, because the input is not a \code{Lexis} object, the \code{Lexis}-like object is merely representing a prevalent population and a specification of which variables that are timescales. The variables \code{lex.dur} and \code{lex.Xst} are ignored (and overwritten) if present. The core input is the list \code{Tr} giving the transitions. The components of \code{Tr} represents the transition intensities between states. The transition from state \code{A} to \code{B}, say, is assumed stored in \code{Tr$A$B}. Thus names of the elements of \code{Tr} are names of transient states, and the names of the elements of each these are the names of states reachable from the corresponding transient state. The transition intensities are assumed modelled by either a glm with Poisson family or a Cox-model. In both cases the timescale(s) in the model must be using the names fo the timescales in a Lexis object representng the follow-up in a cohort, and the risk time must be taken from the variable \code{lex.dur} --- see the example. Alternatively, an element in \code{Tr} could be a function that from a data frame produces transition rates, or specifically cumulative transition rates over intervals of length \code{lex.dur}. The pre-\code{Lexis} object \code{init} must contain values of all variables used in any of the objects in \code{Tr}, as well as all timescales - even those not used in the models. Moreover, the attributes \code{time.scales} and \code{time.since} must be present. The attribute \code{time.since} is a character vector of the same length as \code{time.scales} and an element has value \code{"A"} if the corresponding time scale is defined as "time since entry into state \code{A}", otherwise the value is \code{""}. If not present it will be set to a vector of \code{""}s, which is only OK if no time scales are defined as time since entry to a state. Note that the variables pre-\code{Lexis} object \code{init} must have the same mode and class as in the dataset used for fitting the models --- hence the indexing of rows by brackets in the assignment of values used in the example below - this way the variables have their attributes preserved; using \code{init[,"var"] <-} or \code{init$var <-} replaces the variable, whereas \code{init[1:4,"var"] <-} or \code{init$var[1:4] <-} replaces values only and prevents you from entering non-existing factor levels etc. The function \code{\link{Lexis}} automatically generates an attribute \code{time.since}, and \code{\link{cutLexis}} updates it when new time scales are defined. Hence, the simplest way of defining a initial pre-\code{Lexis} object representing a current state of a (set of) persons to be followed through a multistate model is to take \code{NULL} rows of an existing Lexis object (normally the one used for estimation), and so ensuring that all relevant attributes and state levels are properly defined. See the example code. The prevalence function \code{nState} computes the distribution of individuals in different states at prespecified times. Only sensible for a simulated \code{Lexis} object. The function \code{pState} takes a matrix as output by \code{nState} and computes the row-wise cumulative probabilities across states, and leaves an object of class \code{pState}, suitable for plotting. } \value{\code{simLexis} returns a \code{\link{Lexis}} object representing the experience of a population starting as \code{init} followed through the states according to the transitions in \code{Tr}. The function \code{nState} returns a table of persons classified by states at each of the times in \code{at}. Note that this function can easily produce meaningless results, for example if applied to a \code{Lexis} object not created by simulation. If you apply it to a \code{Lexis} object generated by \code{simLexis}, you must make sure that you start (\code{from}) the point where you started the simulation on the correct timescale, and you will get funny results if you try to tabulate beyond the censoring time for the simulation. The resulting object has class \code{"table"}. The result from using \code{pState} on the result from \code{nState} has class \code{c("pState","matrix")}. } \author{Bendix Carstensen, \url{http://bendixcarstensen.com}.} \seealso{ \code{\link{Lexis}}, \code{\link{cutLexis}}, \code{\link{splitLexis}} } \examples{ data(DMlate) dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate[runif(nrow(DMlate))<0.1,] ) # Split follow-up at insulin, introduce a new timescale, # and split non-precursor states dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins", new.scale = "t.Ins", split.states = TRUE ) # Split the follow in 1-year intervals for modelling Si <- splitLexis( dmi, 0:30/2, "DMdur" ) # Define knots nk <- 4 ( ai.kn <- with( subset(Si,lex.Xst=="Ins"), quantile( Age+lex.dur, probs=(1:nk-0.5)/nk ) ) ) ( ad.kn <- with( subset(Si,lex.Xst=="Dead"), quantile( Age+lex.dur, probs=(1:nk-0.5)/nk ) ) ) ( di.kn <- with( subset(Si,lex.Xst=="Ins"), quantile( DMdur+lex.dur, probs=(1:nk-0.5)/nk ) ) ) ( dd.kn <- with( subset(Si,lex.Xst=="Dead"), quantile( DMdur+lex.dur, probs=(1:nk-0.5)/nk ) ) ) ( td.kn <- with( subset(Si,lex.Xst=="Dead(Ins)"), quantile( t.Ins+lex.dur, probs=(1:nk-0.5)/nk ) ) ) # Fit Poisson models to transition rates library( splines ) DM.Ins <- glm( (lex.Xst=="Ins") ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="DM") ) DM.Dead <- glm( (lex.Xst=="Dead") ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="DM") ) Ins.Dead <- glm( (lex.Xst=="Dead(Ins)") ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + Ns( t.Ins, knots=td.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="Ins") ) # Stuff the models into an object representing the transitions Tr <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = DM.Dead ), "Ins" = list( "Dead(Ins)" = Ins.Dead ) ) lapply( Tr, names ) # Define an initial object - note the subsetting that ensures that # all attributes are carried over ini <- Si[1,1:9][-1,] ini[1:2,"lex.Cst"] <- "DM" ini[1:2,"Per"] <- 1995 ini[1:2,"Age"] <- 60 ini[1:2,"DMdur"] <- 5 ini[1:2,"sex"] <- c("M","F") str(ini) # Simulate 200 of each sex using the estimated models in Tr simL <- simLexis( Tr, ini, time.pts=seq(0,11,0.5), N=200 ) summary( simL ) # Find the number of persons in each state at a set of times. # Note that the times are shirter than the time-span simulated. nSt <- nState( subset(simL,sex=="M"), at=seq(0,10,0.1), from=1995, time.scale="Per" ) nSt # Show the cumulative prevalences in a different order than that of the # state-level ordering and plot them using all defaults pp <- pState( nSt, perm=c(1,2,4,3) ) head( pp ) plot( pp ) # A more useful set-up of the graph clr <- c("orange2","forestgreen") par( las=1 ) plot( pp, col=clr[c(2,1,1,2)] ) lines( as.numeric(rownames(pp)), pp[,2], lwd=2 ) mtext( "60 year old male, diagnosed 1995", side=3, line=2.5, adj=0 ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[1] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[2] ) axis( side=4 ) # Using a Cox-model for the mortality rates assuming the two mortality # rates to be proportional: # When we fit a Cox-model, lex.dur must be used in the Surv() function, # and the I() constrction must be used when specifying intermediate # states as covariates, since factors with levels not present in the # data will create NAs in the parameter vector returned by coxph, which # in return will crash the simulation machinery. library( survival ) Cox.Dead <- coxph( Surv( DMdur, DMdur+lex.dur, lex.Xst \%in\% c("Dead(Ins)","Dead")) ~ Ns( Age-DMdur, knots=ad.kn ) + I(lex.Cst=="Ins") + I(Per-2000) + sex, data = Si ) Cr <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = Cox.Dead ), "Ins" = list( "Dead(Ins)" = Cox.Dead ) ) simL <- simLexis( Cr, ini, time.pts=seq(0,11,0.2), N=200 ) summary( simL ) nSt <- nState( subset(simL,sex=="M"), at=seq(0,10,0.2), from=1995, time.scale="Per" ) pp <- pState( nSt, perm=c(1,2,4,3) ) plot( pp ) } \keyword{survival} Epi/man/rbind.Lexis.Rd0000644000176200001440000000621113751040403014207 0ustar liggesusers\name{cbind.Lexis} \alias{cbind.Lexis} \alias{rbind.Lexis} %- Also NEED an '\alias' for EACH other topic documented here. \title{Combining a Lexis objects with data frames or other Lexis objects } \description{A Lexis object may be combined side-by-side with data frames. Or several Lexis objects may stacked, possibly increasing the number of states and time scales. } \usage{ \method{cbind}{Lexis}(...) \method{rbind}{Lexis}(...) } \arguments{ \item{\dots}{For \code{cbind} a sequence of data frames or vectors of which exactly one has class \code{Lexis}. For \code{rbind} a sequence of Lexis objects, supposedly representing follow-up in the same population.} } \details{ Arguments to \code{rbind.Lexis} must all be \code{\link{Lexis}} objects; except for possible NULL objects. The timescales in the resulting object will be the union of all timescales present in all arguments. Values of timescales not present in a contributing Lexis object will be set to \code{NA}. The \code{breaks} for a given time scale will be \code{NULL} if the \code{breaks} of the same time scale from two contributing Lexis objects are different. The arguments to \code{cbind.Lexis} must consist of at most one Lexis object, so the method is intended for amending a Lexis object with extra columns without losing the Lexis-specific attributes. } \value{ A \code{\link{Lexis}} object. \code{rbind} renders a \code{Lexis} object with timescales equal to the union of timescales in the arguments supplied. Values of a given timescale are set to \code{NA} for rows corresponding to supplied objects. \code{cbind} basically just adds columns to an existing Lexis object. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{subset.Lexis}} } \examples{ # A small bogus cohort xcoh <- structure( list( id = c("A", "B", "C"), birth = c("14/07/1952", "01/04/1954", "10/06/1987"), entry = c("04/08/1965", "08/09/1972", "23/12/1991"), exit = c("27/06/1997", "23/05/1995", "24/07/1998"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) # Convert the character dates into numerical variables (fractional years) xcoh <- cal.yr( xcoh, format="\%d/\%m/\%Y", wh=2:4 ) # See how it looks xcoh str( xcoh ) # Define as Lexis object with timescales calendar time and age Lcoh <- Lexis( entry = list( per=entry ), exit = list( per=exit, age=exit-birth ), exit.status = fail, data = xcoh ) Lcoh cbind( Lcoh, zz=3:5 ) # Lexis object wit time since entry time scale Dcoh <- Lexis( entry = list( per=entry, tfe=0 ), exit = list( per=exit ), exit.status = fail, data = xcoh ) # A bit meningless to combie these two, really... rbind( Dcoh, Lcoh ) # Split different places sL <- splitLexis( Lcoh, time.scale="age", breaks=0:20*5 ) sD <- splitLexis( Dcoh, time.scale="tfe", breaks=0:50*2 ) sDL <- rbind( sD, sL ) } \keyword{survival} \keyword{manip} Epi/man/LCa.fit.Rd0000644000176200001440000003146213751040403013254 0ustar liggesusers\name{LCa.fit} \alias{LCa.fit} \alias{print.LCa} \alias{summary.LCa} \alias{plot.LCa} \alias{predict.LCa} \title{ Fit Lee-Carter-type models for rates to arbitrarily shaped observations of rates in a Lexis diagram. } \description{ The Lee-Carter model is originally defined as a model for rates observed in A-sets (age by period) of a Lexis diagram, as log(rate(x,t)) = a(x) + b(x)k(t), using one parameter per age(x) and period(t). This function uses natural splines for a(), b() and k(), placing knots for each effect such that the number of events is the same between knots. Also fits the continuous time counterparts of all models supported by the \code{\link[ilc]{lca.rh}} function from the \code{ilc} package (see details). } \usage{ LCa.fit( data, A, P, D, Y, model = "APa", # or one of "ACa", "APaC", "APCa" or "APaCa" a.ref, # age reference for the interactions pi.ref = a.ref, # age reference for the period interaction ci.ref = a.ref, # age reference for the cohort interaction p.ref, # period reference for the interaction c.ref, # cohort reference for the interactions npar = c(a = 6, # no. knots for main age-effect p = 6, # no. knots for period-effect c = 6, # no. knots for cohort-effect pi = 6, # no. knots for age in the period interaction ci = 6), # no. knots for age in the cohort interaction VC = TRUE, # numerical calculation of the Hessian? alpha = 0.05, # 1 minus confidence level eps = 1e-6, # convergence criterion maxit = 100, # max. no iterations quiet = TRUE ) # cut the crap \method{print}{LCa}( x, ... ) \method{summary}{LCa}( object, show.est=FALSE, ... ) \method{plot}{LCa}( x, ... ) \method{predict}{LCa}( object, newdata, alpha = 0.05, level = 1-alpha, sim = ( "vcov" \%in\% names(object) ), ... ) } \arguments{ \item{data}{ A data frame. Must have columns \code{A}(age), \code{P}(period, that is calendar time), \code{D}(no. of events) and \code{Y}(person-time, exposure). Alternatively these four quantities can be given as separate vectors: } \item{A}{ Vector of ages (midpoint of observation). } \item{P}{ Vector of period (midpoint of observation). } \item{D}{ Vector of no. of events. } \item{Y}{ Vector of person-time. Demographers would say "exposure", bewildering epidemiologists. } \item{a.ref}{ Reference age for the age-interaction term(s) \code{pi(x)} and/or \code{pi(x)}, where \code{pi(a.ref)=1} and \code{ci(a.ref)=1}. } \item{pi.ref}{ Same, but specifically for the interaction with period. } \item{ci.ref}{ Same, but specifically for the interaction with cohort. } \item{p.ref}{ Reference period for the time-interaction term \code{kp(t)} where \code{kp(p.ref)=0}. } \item{c.ref}{ Reference period for the time-interaction term \code{kp(t)} where \code{kc(c.ref)=0}. } \item{model}{ Character, either \code{"APa"} which is the classical Lee-Carter model for log-rates, other possibilities are \code{"ACa"}, \code{"APCa"}, \code{"APaC"} or \code{"APaCa"}, see details. } \item{npar}{ A (possibly named) vector or list, with either the number of knots or the actual vectors of knots for each term. If unnamed, components are taken to be in the order (a,b,t), if the model is "APaCa" in the order (a,p,c,pi,ci). If a vector, the three integers indicate the number of knots for each term; these will be placed so that there is an equal number of events (\code{D}) between each, and half as many below the first and above the last knot. If \code{npar} is a list of scalars the behavior is the same. If \code{npar} is a list of vectors, these are taken as the knots for the natural splines. See details for naming convention. } \item{VC}{ Logical. Should the variance-covariance matrix of the parameters be computed by numerical differentiation? See details. } \item{alpha}{ 1 minus the confidence level used when calculating confidence intervals for estimates in \code{LCa.fit} and for predictions by \code{predict.LCa}. } \item{eps}{ Convergence criterion for the deviance, we use the the relative difference between deviance from the two models fitted. } \item{maxit}{ Maximal number of iterations. } \item{quiet}{ Shall I shut up or talk extensively to you about iteration progression etc.? } \item{object}{An \code{LCa} object, see under "Value".} \item{show.est}{Logical. Should the estimates be printed?} \item{x}{An \code{LCa} object, see under "Value".} \item{newdata}{Prediction data frame, must have columns \code{A} and \code{P}. Any \code{Y} column is ignored, predictions are given in units of the \code{Y} supplied for the call that generated the \code{LCa} object.} \item{level}{Confidence level.} \item{sim}{Logical or numeric. If \code{TRUE}, prediction c.i.s will be based on 1000 simulations from the posterior parameters. If numeric, it will be based on that number of simulations.} \item{...}{Additional parameters passed on to the method.} } \details{ The Lee-Carter model is non-linear in age and time so does not fit in the classical glm-Poisson framework. But for fixed \code{b(x)} it is a glm, and also for fixed \code{a(x)}, \code{k(t)}. The function alternately fits the two versions until the same fit is produced (same deviance). The multiplicative age by period term could equally well have been a multiplicative age by cohort or even both. Thus the most extensive model has 5 continuous functions: \deqn{\log(\lambda(a,p)) = f(a) + b_p(a)k_p(p) + b_c(a)k_c(p-a)}{% log( lambda(a,p)) = f(a) + b_p(a)k_p(p) + b_c(a)k_c(p-a)} Each of these is fitted by a natural spline, with knots placed at the quantiles of the events along the age (a), calendar time (p) respective cohort (p-a) scales. Alternatively the knots can be specified explicitly in the argument \code{npar} as a named list, where \code{a} refers to \eqn{f(a)}{f(a)}, \code{p} refers to \eqn{k_p(p)}{k_p(p)}, \code{c} refers to \eqn{k_c(p-a)}{k_c(p-a)}, \code{pi} (\code{p}eriod code{i}nteraction) refers to \eqn{b_p(a)}{b_p(a)} and \code{ci} (\code{c}ohort \code{i}nteraction) refers to \eqn{b_c(p-a)}{b_c(p-a)}. The naming convention for the models is a capital \code{P} and/or \code{C} if the effect is in the model followed by a lower case \code{a} if there is an interaction with age. Thus there are 5 different models that can be fitted: \code{APa}, \code{ACa}, \code{APaC} \code{APCa} and \code{APaCa}. The standard errors of the parameters from the two separate model fits in the iterations are however wrong; they are conditional on a subset of the parameters having a fixed value. However, analytic calculation of the Hessian is a bit of a nightmare, so this is done numerically using the \code{hessian} function from the \code{numDeriv} package if \code{VC=TRUE}. The coefficients and the variance-covariance matrix of these are used in \code{predict.LCa} for a parametric bootstrap (that is, a simulation from a multivariate normal with mean equal to the parameter estimates and variance as the estimated variance-covariance) to get confidence intervals for the predictions if \code{sim} is \code{TRUE} --- which it is by default if they are part of the object. The \code{plot} for \code{LCa} objects merely produces between 3 and 5 panels showing each of the terms in the model. These are mainly for preliminary inspection; real reporting of the effects should use proper relative scaling of the effects.} \value{ \code{LCa.fit} returns an object of class \code{LCa} (smooth effects \code{L}ee-\code{Ca}rter model); it is a list with the following components: \item{model}{Character, either \code{APa}, \code{ACa}, \code{APaC}, \code{APCa} or \code{APaCa}, indicating the variable(s) interacting with age.} \item{ax}{3-column matrix of age-effects, c.i. from the age-time model. Row names are the unique occurring ages in the dataset. Estimates are rates.} \item{pi}{3-column matrix of age-period interaction effects, c.i. from the age model. Row names are the actually occurring ages in the dataset. Estimates are multipliers of the log-RRs in \code{kp}, centered at 1 at \code{pi.ref}.} \item{kp}{3-column matrix of period-effects, with c.i.s from the age-time model. Row names are the actually occurring times in the dataset. Estimates are rate-ratios centered at 1 at \code{p.ref}.} \item{ci}{3-column matrix of age-cohort interaction effects, c.i. from the age model. Row names are the actually occurring ages in the dataset. Estimates are multipliers of the log-RRs in \code{kc}, centered at 1 at \code{ci.ref}.} \item{kc}{3-column matrix of cohort-effects, with c.i.s from the age-time model. Row names are the actually occurring times in the dataset. Estimates are rate-ratios centered at 1 at \code{c.ref}.} \item{mod.at}{\code{glm} object with the final age-time model --- estimates the terms \code{ax}, \code{kp}, \code{kc}. Gives the same fit as the \code{mod.b} model after convergence.} \item{mod.b}{\code{glm} object with the final age model --- estimates the terms \code{pi}, \code{ci}. Gives the same fit as the \code{mod.at} model after convergence.} \item{coef}{All coefficients from both models, in the order \code{ax}, \code{kp}, \code{kc}, \code{pi}, \code{ci}. Only present if \code{LCa.fit} were called with \code{VC=TRUE} (the default).} \item{vcov}{Variance-covariance matrix of coefficients from both models, in the same order as in the \code{coef}. Only present if \code{LCa.fit} were called with \code{VC=TRUE}.} \item{knots}{List of vectors of knots used in for the age, period and cohort effects.} \item{refs}{List of reference points used for the age, period and cohort terms in the interactions.} \item{deviance}{Deviance of the model} \item{df.residual}{Residual degrees of freedom} \item{iter}{Number of iterations used to reach convergence.} \code{plot.LCa} plots the estimated effects in separate panels, using a log-scale for the baseline rates (\code{ax}) and the time-RR (\code{kt}). For the \code{APaCa} model 5 panels are plotted. \code{summary.LCa} returns (invisibly) a matrix with the parameters from the models and a column of the conditional se.s and additionally of the se.s derived from the numerically computed Hessian (if \code{LCa.fit} were called with \code{VC=TRUE}.) \code{predict.LCa} returns a matrix with one row per row in \code{newdata}. If \code{LCa.fit} were called with \code{VC=TRUE} there will be 3 columns, namely prediction (1st column) and c.i.s based on a simulation of parameters from a multivariate normal with mean \code{coef} and variance \code{vcov} using the median and \code{alpha}/2 quantiles from the \code{sim} simulations. If \code{LCa.fit} were called with \code{VC=FALSE} there will be 6 columns, namely estimates and c.i.s from age-time model (\code{mod.at}), and from the age-interaction model (\code{mod.b}), both using conditional variances, and therefore likely with too narrow confidence limits. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} This function was conceived while teaching a course on APC models at the Max Planck Institute of Demographic Research (MPIDR, \url{https://www.demogr.mpg.de/en/}) in Rostock in May 2016 (\url{http://bendixcarstensen.com/APC/MPIDR-2016/}), and finished during a week long research stay there, kindly sponsored by the MPIDR. } \seealso{ \code{\link{apc.fit}}, \code{\link{apc.LCa}}, \code{\link[ilc]{lca.rh}}, \code{\link[demography]{lca}} } \examples{ library( Epi ) # Load the testis cancer data by Lexis triangles data( testisDK ) tc <- subset( testisDK, A>14 & A<60 ) head( tc ) # We want to see rates per 100,000 PY tc$Y <- tc$Y / 10^5 # Fit the Lee-Carter model with age-period interaction (default) LCa.tc <- LCa.fit( tc, model="ACa", a.ref=30, p.ref=1980, quiet=FALSE, eps=10e-4, maxit=50 ) LCa.tc summary( LCa.tc ) # Inspect what we got names( LCa.tc ) # show the estimated effects par( mfrow=c(1,3) ) plot( LCa.tc ) # Prediction data frame for ages 15 to 60 for two time points: nd <- data.frame( A=15:60 ) # LCa predictions p70 <- predict.LCa( LCa.tc, newdata=cbind(nd,P=1970), sim=1000 ) p90 <- predict.LCa( LCa.tc, newdata=cbind(nd,P=1990), sim=1000 ) # Inspect the curves from the parametric bootstrap (simulation): par( mfrow=c(1,1) ) head( cbind(p70,p90) ) matplot( nd$A, cbind(p70,p90), type="l", lwd=c(6,3,3), lty=c(1,3,3), col=rep( 2:3, each=3 ), log="y", ylab="Testis cancer incidence per 100,000 PY in 1970 resp. 1990", xlab="Age" ) } \keyword{models} \keyword{regression} Epi/man/plot.Lexis.Rd0000644000176200001440000001160513751040403014072 0ustar liggesusers\name{plot.Lexis} \alias{plot.Lexis} \alias{points.Lexis} \alias{lines.Lexis} \alias{PY.ann} \alias{PY.ann.Lexis} \title{Lexis diagrams} \description{ The follow-up histories represented by a Lexis object can be plotted using one or two dimensions. The two dimensional plot is a Lexis diagram showing follow-up time simultaneously on two time scales. } \usage{ \method{plot}{Lexis}(x=Lexis( entry=list(Date=1900,Age=0), exit=list(Age=0) ), time.scale = NULL, type="l", breaks="lightgray", ...) \method{points}{Lexis}(x, time.scale = options()[["Lexis.time.scale"]] , ...) \method{lines}{Lexis}(x, time.scale = options()[["Lexis.time.scale"]], ...) \method{PY.ann}{Lexis}(x, time.scale = options()[["Lexis.time.scale"]], digits=1, ...) } \arguments{ \item{x}{An object of class \code{Lexis}. The default is a bogus \code{Lexis} object, so that \code{plot.Lexis} can be called without the first argument and still produce a(n empty) Lexis diagram. Unless arguments \code{xlim} and \code{ylim} are given in this case the diagram is looking pretty daft.} \item{time.scale}{A vector of length 1 or 2 giving the time scales to be plotted either by name or numerical order} \item{type}{Character indication what to draw: "n" nothing (just set up the diagram), "l" - liefelines, "p" - endpoints of follow-up, "b" - both lifelines and endpoints.} \item{breaks}{a string giving the colour of grid lines to be drawn when plotting a split Lexis object. Grid lines can be suppressed by supplying the value \code{NULL} to the \code{breaks} argument} \item{digits}{Numerical. How many digits after the demimal points should be when plotting the person-years.} \item{\dots}{Further graphical parameters to be passed to the plotting methods. Grids can be drawn (behind the life lines) using the following parameters in \code{plot}: \itemize{ \item \code{grid} If logical, a background grid is set up using the axis ticks. If a list, the first component is used as positions for the vertical lines and the last as positions for the horizontal. If a nunerical vector, grids on both axes are set up using the distance between the numbers. \item \code{col.grid="lightgray"} Color of the background grid. \item \code{lty.grid=2} Line type for the grid. \item \code{coh.grid=FALSE} Should a 45 degree grid be plotted?} } } \details{ The plot method for \code{Lexis} objects traces ``life lines'' from the start to the end of follow-up. The \code{points} method plots points at the end of the life lines. If \code{time.scale} is of length 1, the life lines are drawn horizontally, with the time scale on the X axis and the id value on the Y axis. If \code{time.scale} is of length 2, a Lexis diagram is produced, with diagonal life lines plotted against both time scales simultaneously. If \code{lex} has been split along one of the time axes by a call to \code{splitLexis}, then vertical or horizontal grid lines are plotted (on top of the life lines) at the break points. \code{PY.ann} writes the length of each (segment of) life line at the middle of the line. Not advisable to use with large cohorts. Another example is in the example file for \code{\link{occup}}. } \author{Martyn Plummer} \examples{ # A small bogus cohort xcoh <- structure( list( id = c("A", "B", "C"), birth = c("14/07/1952", "01/04/1957", "10/06/1987"), entry = c("04/08/1965", "08/09/1972", "23/12/1991"), exit = c("27/06/1997", "23/05/1995", "24/07/1998"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) # Convert the character dates into numerical variables (fractional years) xcoh$bt <- cal.yr( xcoh$birth, format="\%d/\%m/\%Y" ) xcoh$en <- cal.yr( xcoh$entry, format="\%d/\%m/\%Y" ) xcoh$ex <- cal.yr( xcoh$exit , format="\%d/\%m/\%Y" ) # See how it looks xcoh # Define as Lexis object with timescales calendar time and age Lcoh <- Lexis( entry = list( per=en ), exit = list( per=ex, age=ex-bt ), exit.status = fail, data = xcoh ) # Default plot of follow-up plot( Lcoh ) # Show follow-up time PY.ann( Lcoh ) # Show exit status plot( Lcoh, type="b" ) # Same but failures only plot( Lcoh, type="b", pch=c(NA,16)[Lcoh$fail+1] ) # With a grid and deaths as endpoints plot( Lcoh, grid=0:10*10, col="black" ) points( Lcoh, pch=c(NA,16)[Lcoh$lex.Xst+1] ) # With a lot of bells and whistles: plot( Lcoh, grid=0:20*5, col="black", xaxs="i", yaxs="i", xlim=c(1960,2010), ylim=c(0,50), lwd=3, las=1 ) points( Lcoh, pch=c(NA,16)[Lcoh$lex.Xst+1], col="red", cex=1.5 ) } \seealso{\code{\link{Lexis}}, \code{\link{splitLexis}}} \keyword{hplot} \keyword{aplot} Epi/man/mortDK.Rd0000644000176200001440000000301213751040403013222 0ustar liggesusers\name{mortDK} \alias{mortDK} \docType{data} \title{Population mortality rates for Denmark in 1-year age-classes.} \description{ The \code{mortDK} data frame has 1820 rows and 21 columns. } \format{ This data frame contains the following columns: \tabular{rl}{ \code{age}: \tab Age class, 0--89, 90:90+. \cr \code{per}: \tab Calendar period, 38: 1938--42, 43: 1943--47, ..., 88:1988-92. \cr \code{sex}: \tab Sex, 1: male, 2: female. \cr \code{risk}: \tab Number of person-years in the Danish population. \cr \code{dt}: \tab Number of deaths. \cr \code{rt}: \tab Overall mortality rate in cases per 1000 person-years, i.e. \code{rt=1000*dt/risk} \cr \tab Cause-specific mortality rates in cases per 1000 person-years: \cr \code{r1}: \tab Infections \cr \code{r2}: \tab Cancer. \cr \code{r3}: \tab Tumors, benign, unspecific nature. \cr \code{r4}: \tab Endocrine, metabolic. \cr \code{r5}: \tab Blood. \cr \code{r6}: \tab Nervous system, psychiatric. \cr \code{r7}: \tab Cerebrovascular. \cr \code{r8}: \tab Cardiac. \cr \code{r9}: \tab Respiratory diseases, excl. cancer. \cr \code{r10}: \tab Liver, excl. cancer. \cr \code{r11}: \tab Digestive, other. \cr \code{r12}: \tab Genitourinary. \cr \code{r13}: \tab Ill-defined symptoms. \cr \code{r14}: \tab All other, natural. \cr \code{r15}: \tab Violent. \cr } } \source{ Statistics Denmark, National board of health provided original data. Michael Andersson grouped the causes of death. } \examples{ data(mortDK) } \seealso{\code{\link{thoro}}, \code{\link{gmortDK}}} \keyword{datasets} Epi/man/M.dk.Rd0000644000176200001440000000315113751040403012617 0ustar liggesusers\name{M.dk} \alias{M.dk} \docType{data} \title{Mortality in Denmark 1974 ff.} \description{ Mortality in one-year classes of age (0-98,99+) and period (1974 ff.) in Denmark. } \usage{data(M.dk)} \format{ A data frame with 6400 observations on the following 6 variables. \describe{ \item{\code{A}}{Age-class, 0-98, 99:99+} \item{\code{sex}}{Sex. 1:males, 2:females} \item{\code{P}}{Period (year) of death} \item{\code{D}}{Number of deaths} \item{\code{Y}}{Number of person-years} \item{\code{rate}}{Mortality rate per 1000 person-years} } } \details{ Deaths in ages over 100 are in the class labelled 99. Risk time is computed by tabulation of the risk time in \code{\link{Y.dk}}, except for the class 99+ where the average of the population size in ages 99+ at the first and last date of the year is used.} \source{ \url{http://www.statistikbanken.dk/statbank5a/SelectTable/omrade0.asp?SubjectCode=02&PLanguage=1&ShowNews=OFF} } \examples{ data(M.dk) str(M.dk) zz <- xtabs( rate ~ sex+A+P, data=M.dk ) zz[zz==0] <- NA # 0s makes log-scale plots crash par(mfrow=c(1,2), mar=c(0,0,0,0), oma=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) for( i in 1:2 ) { matplot( dimnames(zz)[[2]], zz[i,,], lty=1, lwd=1, col=rev(heat.colors(37)), log="y", type="l", ylim=range(zz,na.rm=TRUE), ylab="", xlab="", yaxt="n" ) text( 0, max(zz,na.rm=TRUE), c("M","F")[i], font=2, adj=0:1, cex=2, col="gray" ) if( i==1 ) axis( side=2, las=1 ) } mtext( side=1, "Age", line=2, outer=TRUE ) mtext( side=2, "Mortality rate", line=2, outer=TRUE ) } \keyword{datasets} Epi/man/list.lex.Rd0000644000176200001440000000341013751040403013566 0ustar liggesusers\name{list.lex} \alias{list.lex} \title{Compact printing of Lexis object } \description{Often the number of digits after the decimal point ant not the sugnificant digits is relevant in printing timescales. } \usage{ list.lex( Lx, dig, sh="_" ) } \arguments{ \item{Lx}{A \code{\link{Lexis}} object.} \item{dig}{Scalar. How many digits should be printed after the decimal separator for the numerical variables.} \item{sh}{Replacement string for \code{lex.} in names when printing.} } \details{The function is designed to make a compact listing of a Lexis obejct. Variables are ordered with \code{lex.id}, time scales, \code{lex.dur} and state variables first. In order to avoid save between columns the \code{lex.} prefix is replaced by an underscore to shorten the names. } \value{NULL, the functions is used for its compact printing of a Lexis object. } \author{Bendix Carstensen } \examples{ # A small bogus cohort xcoh <- structure( list( id = c("A", "B", "C"), birth = c("14/07/1952", "01/04/1954", "10/06/1987"), entry = c("04/08/1965", "08/09/1972", "23/12/1991"), exit = c("27/06/1997", "23/05/1995", "24/07/1998"), fail = c(1, 0, 1) ), .Names = c("id", "birth", "entry", "exit", "fail"), row.names = c("1", "2", "3"), class = "data.frame" ) # Convert the character dates into numerical variables (fractional years) xcoh <- cal.yr( xcoh, format="\%d/\%m/\%Y", wh=2:4 ) # Make a Lexis obejct Lcoh <- Lexis( entry = list( per=entry ), exit = list( per=exit, age=exit-birth ), exit.status = fail, data = xcoh ) Lcoh list.lex( Lcoh, 2 ) } \keyword{manip} Epi/man/plot.apc.Rd0000644000176200001440000000352413751040403013552 0ustar liggesusers\name{plot.apc} \alias{plot.apc} \alias{apc.plot} \title{Plot the estimates from a fitted Age-Period-Cohort model} \description{ This function plots the estimates created by \code{\link{apc.fit}} in a single graph. It just calls \code{\link{apc.frame}} after computing some sensible values of the parameters, and subsequently plots the estimates using \code{\link{apc.lines}}. } \usage{ \method{plot}{apc}( x, r.txt="Rate", ...) apc.plot( x, r.txt="Rate", ...) } \arguments{ \item{x}{ An object of class \code{apc}. } \item{r.txt}{ The text to put on the vertical rate axis. } \item{\dots}{ Additional arguments passed on to \code{\link{apc.lines}}. } } \value{ A numerical vector of length two, with names \code{c("cp.offset","RR.fac")}. The first is the offset for the cohort period-axis, the second the multiplication factor for the rate-ratio scale. Therefore, if you want to plot at \code{(x,y)} in the right panel, use \code{(x-res["cp.offset"],y/res["RR.fac"])} \code{=(x-res[1],y/res[2])}. This vector should be supplied for the parameter \code{frame.par} to \code{\link{apc.lines}} if more sets of estimates is plotted in the same graph, however see \code{\link{cp.points}}. } \details{\code{plot.apc} is just a wrapper for \code{apc.plot}.} \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com} } \seealso{ \code{\link{apc.lines}}, \code{\link{lines.apc}}, \code{\link{apc.frame}}, \code{\link{apc.fit}} } \examples{ data( lungDK ) apc1 <- apc.fit( transform( lungDK, A = Ax, P = Px, Y = Y/10^5 ), ref.c = 1920 ) fp <- apc.plot( apc1 ) apc.lines( apc1, frame.par=fp, drift=1.01, col="red" ) for( i in 1:11 ) apc.lines( apc1, frame.par=fp, drift=1+(i-6)/100, col=rainbow(12)[i] ) } \keyword{hplot} Epi/man/summary.Lexis.Rd0000644000176200001440000000521513751040403014611 0ustar liggesusers\name{summary.Lexis} \alias{summary.Lexis} \alias{print.summary.Lexis} \title{ Summarize transitions and risk time from a Lexis object } \description{ A two-way table of records and transitions classified by states (\code{lex.Cst} and \code{lex.Xst}), as well the risk time in each state. } \usage{ \method{summary}{Lexis}( object, simplify=TRUE, scale=1, by=NULL, Rates=FALSE, timeScales=FALSE, ... ) \method{print}{summary.Lexis}( x, ..., digits=2 ) } \arguments{ \item{object}{A Lexis object.} \item{simplify}{Should rows with 0 follow-up time be dropped?} \item{scale}{Scaling factor for the rates. The calculated rates are multiplied by this number.} \item{by}{Character vector of name(s) of variable(s) in \code{object}. Used to give a separate summaries for subsets of \code{object}. If longer than than 1, the interaction between that variables is used to stratify the summary. It is also possible to supply a vector of length \code{nrow(object)}, and the distinct values of this will be used to stratify the summary.} \item{Rates}{Should a component with transition rates be returned (and printed) too?} \item{timeScales}{Should the names of the timescales and the indication of since which entry also be given?} \item{x}{A \code{summary.Lexis} object.} \item{digits}{How many digits should be used for printing?} \item{ ... }{Other parameters - ignored} } \value{ An object of class \code{summary.Lexis}, a list with two components, \code{Transitions} and \code{Rates}, each one a matrix with rows classified by states where persons spent time, and columns classified by states to which persons transit. The \code{Transitions} contains number of transitions and has 4 extra columns with number of records, total number of events, total risk time and number of person contributing attached. The \code{Rates} contains the transitions rates. If the argument \code{Rates} is FALSE (the default), then only the first component of the list is returned. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} } \examples{ data( nickel ) # Lung cancer deaths and other deaths are coded 1 and 2 nic <- Lexis( data=nickel, entry=list(age=agein), exit=list(age=ageout,cal=ageout+dob,tfh=ageout-age1st), exit.status=factor( (icd > 0) + (icd \%in\% c(162,163)), labels=c("Alive","Other","Lung") ) ) str( nic ) head( nic ) summary( nic ) # More detailed summary, by exposure level summary( nic, by=nic$exposure>5, Rates=TRUE, scale=100 ) } \keyword{survival}Epi/man/ci.lin.Rd0000644000176200001440000003542313751040403013211 0ustar liggesusers\name{ci.lin} \alias{ci.lin} \alias{ci.mat} \alias{ci.exp} \alias{ci.pred} \alias{ci.ratio} \alias{Wald} \title{ Compute linear functions of parameters with standard errors and confidence limits, optionally transforming to a different scale. } \description{ For a given model object the function computes a linear function of the parameters and the corresponding standard errors, p-values and confidence intervals. } \usage{ ci.lin( obj, ctr.mat = NULL, subset = NULL, subint = NULL, xvars = NULL, diffs = FALSE, fnam = !diffs, vcov = FALSE, alpha = 0.05, df = Inf, Exp = FALSE, sample = FALSE ) ci.exp( ..., Exp = TRUE, pval = FALSE ) Wald( obj, H0=0, ... ) ci.mat( alpha = 0.05, df = Inf ) ci.pred( obj, newdata, Exp = NULL, alpha = 0.05 ) ci.ratio( r1, r2, se1 = NULL, se2 = NULL, log.tr = !is.null(se1) & !is.null(se2), alpha = 0.05, pval = FALSE ) } \arguments{ \item{obj}{A model object (in general of class \code{glm}, but for \code{ci.lin} and \code{ci.exp} it may also be of class \code{lm}, \code{coxph}, \code{survreg}, \code{clogistic}, \code{cch}, \code{lme}, \code{mer}, \code{lmerMod}, \code{gls}, \code{nls}, \code{gnlm}, \code{MIresult}, \code{mipo}, \code{polr}, or \code{rq}). } \item{ctr.mat}{Matrix, data frame or list (of two or four data frames). If \code{ctr.mat} is a matrix, it should be a contrast matrix to be multiplied to the parameter vector, i.e. the desired linear function of the parameters. If it is a data frame it should have columns corresponding to a prediction frame, see details. If it is a list, it must contain two or four data frames that are (possibly partial) prediction frames for \code{obj}, see argument \code{xvars} and details.} \item{xvars}{Character vector. If quantitative variables in the model are omitted from data frames supplied in a list to \code{ctr.mat}, they should be listed here. Omitted factors need not be mentioned here.} \item{subset}{The subset of the parameters to be used. If given as a character vector, the elements are in turn matched against the parameter names (using \code{grep}) to find the subset. Repeat parameters may result from using a character vector. This is considered a facility.} \item{subint}{Character. \code{sub}set selection, but where each element of the character vector is used to select a subset of parameters and only the \code{int}ersection of these is returned.} \item{diffs}{If TRUE, all differences between parameters in the subset are computed, and the \code{subset} argumnt is required. The argument \code{ctr.mat} is ignored. If \code{obj} inherits from \code{lm}, and \code{subset} is given as a string \code{subset} is used to search among the factors in the model and differences of all factor levels for the first match are shown. If \code{subset} does not match any of the factors in the model, all pairwise differences between parameters matching are returned.} \item{fnam}{Should the common part of the parameter names be included with the annotation of contrasts? Ignored if \code{diffs==T}. If a string is supplied this will be prefixed to the labels.} \item{vcov}{Should the covariance matrix of the set of parameters be returned? If this is set, \code{Exp} is ignored. See details.} \item{alpha}{Significance level for the confidence intervals.} \item{df}{Integer. Number of degrees of freedom in the t-distribution used to compute the quantiles used to construct the confidence intervals.} \item{Exp}{For \code{ci.lin}, if \code{TRUE} columns 5:6 are replaced with exp( columns 1,5,6 ). For \code{ci.exp}, if \code{FALSE}, the untransformed parameters are returned. For \code{ci.pred} it indicates whether the predictions should be exponentiated - the default (\code{Exp=NULL}) is to make a prediction with a Wald CI on the scale of the linear predictor and back-transform it by the inverse link function; if \code{FALSE}, the prediction on the link scale is returned.} \item{sample}{Logical or numerical. If \code{TRUE} or numerical a sample of size \code{as.numeric(sample)} is drawn from the multivariate normal with mean equal to the (\code{subset} defined) coefficients and variance equal to the estimated variance-covariance of these. These are then transformed by \code{ctr.mat} and returned.} \item{pval}{Logical. Should a column of P-values be included with the estimates and confidence intervals output by \code{ci.exp}.} \item{H0}{Numeric. The null values for the selected/transformed parameters to be tested by a Wald test. Must have the same length as the selected parameter vector.} \item{\ldots}{Parameters passed on to \code{ci.lin}.} \item{newdata}{Data frame of covariates where prediction is made.} \item{r1,r2}{Estimates of rates in two independent groups, with confidence limits. Can be either 3-column matrices or data frames with estimates and confindece intervals or 2 two column structures with confidence limits. Only the confidence limits} \item{se1,se2}{Standard errors of log-rates in the two groups. If given, it is assumed that \code{r1} and \code{r2} represent log-rates.} \item{log.tr}{Logical, if true, it is assumed that \code{r1} and \code{r2} represent log-rates with confidence intervals.} } \value{ \code{ci.lin} returns a matrix with number of rows and row names as \code{ctr.mat}. The columns are Estimate, Std.Err, z, P, 2.5\% and 97.5\% (or according to the value of \code{alpha}). If \code{vcov=TRUE} a list of length 2 with components \code{coef} (a vector), the desired functional of the parameters and \code{vcov} (a square matrix), the variance covariance matrix of this, is returned but not printed. If \code{Exp==TRUE} the confidence intervals for the parameters are replaced with three columns: exp(estimate,c.i.). \code{ci.exp} returns only the exponentiated parameter estimates with confidence intervals. It is merely a wrapper for \code{ci.lin}, fishing out the last 3 columns from \code{ci.lin(...,Exp=TRUE)}. If you just want the estimates and confidence limits, but not exponentiated, use \code{ci.exp(...,Exp=FALSE)}. If \code{ctr.mat} is a data frame, the model matrix corresponding to this is constructed and supplied. This is only supported for objects of class \code{lm}, \code{glm}, \code{gam} and \code{coxph}. So the default behaviour will be to produce the same as \code{ci.pred}, apparently superfluous. The purpose of this is to allow the use of the arguments \code{vcov} that produces the variance-covariance matrix of the predictions, and \code{sample} that produces a sample of predictions using sampling from the multivariate normal with mean equal to parameters and variance equal to the hessian. If \code{ctr.mat} is a list of two data frames, the difference of the predictions from using the first versus the last as newdata arguments to predict is computed. Columns that would be identical in the two data frames can be omitted (see below), but names of numerical variables omitted must be supplied in a character vector \code{xvars}. Factors omitted need not be named. If the second data frame has only one row, this is replicated to match the number of rows in the first. This facility is primarily aimed at teasing out RRs that are non-linear functions of a quantitative variable without setting up contrast matrices using the same code as in the model. Note however if splines are used with computed knots stored in a vector such as \code{Ns(x,knots=kk)} then the \code{kk} must be available in the (global) environment; it will not be found inside the model object. In practical terms it means that if you save model objects for later prediction you should save the knots used in the spline setups too. If \code{ctr.mat} is a list of four data frames, the difference of the difference of predictions from using the first and second versus difference of predictions from using the third and fourth is computed. Simply \code{(pr1-pr2) - (pr3-pr4)} with obvious notation. Useful to derive esoteric interaction effects. Finally, only arguments \code{Exp}, \code{vcov}, \code{alpha} and \code{sample} from \code{ci.lin} are honored when \code{ctr.mat} is a data frame or a list of two data frames. You can leave out variables (columns) from the two data frames that would be identical, basically variables not relevant for the calculation of the contrast. In many cases \code{ci.lin} (really \code{Epi:::ci.dfr}) can figure out the names of the omitted columns, but occasionally you will have to supply the names of the omitted variables in the \code{xvars} argument. Factors omitted need not be listed in \code{xvars}, although no harm is done doing so. \code{Wald} computes a Wald test for a subset of (possibly linear combinations of) parameters being equal to the vector of null values as given by \code{H0}. The selection of the subset of parameters is the same as for \code{ci.lin}. Using the \code{ctr.mat} argument makes it possible to do a Wald test for equality of parameters. \code{Wald} returns a named numerical vector of length 3, with names \code{Chisq}, \code{d.f.} and \code{P}. \code{ci.mat} returns a 2 by 3 matrix with rows \code{c(1,0,0)} and \code{c(0,-1,1)*1.96}, devised to post-multiply to a p by 2 matrix with columns of estimates and standard errors, so as to produce a p by 3 matrix of estimates and confidence limits. Used internally in \code{ci.lin} and \code{ci.cum}. The 1.96 is replaced by the appropriate quantile from the normal or t-distribution when arguments \code{alpha} and/or \code{df} are given. \code{ci.pred} returns a 3-column matrix with estimates and upper and lower confidence intervals as columns. This is just a convenience wrapper for \code{predict.glm(obj,se.fit=TRUE)} which returns a rather unhandy structure. The prediction with c.i. is made in the \code{link} scale, and by default transformed by the inverse link, since the most common use for this is for multiplicative Poisson or binomial models with either log or logit link. \code{ci.ratio} returns the rate-ratio of two independent set of rates given with confidence intervals or s.e.s. If \code{se1} and \code{se2} are given and \code{log.tr=FALSE} it is assumed that \code{r1} and \code{r2} are rates and \code{se1} and \code{se2} are standard errors of the log-rates. } \author{ Bendix Carstensen, \url{http://bendixcarstensen.com} & Michael Hills } \seealso{See also \code{\link{ci.cum}} for a function computing cumulative sums of (functions of) parameter estimates, and \code{\link{ci.surv}} for a function computing confidence intervals for survival functions based on smoothed rates. The example code for \code{\link{matshade}} has an application of predicting a rate-ratio using a list of two prediction frame in the \code{ctr.mat} argument.} \examples{ # Bogus data: f <- factor( sample( letters[1:5], 200, replace=TRUE ) ) g <- factor( sample( letters[1:3], 200, replace=TRUE ) ) x <- rnorm( 200 ) y <- 7 + as.integer( f ) * 3 + 2 * x + 1.7 * rnorm( 200 ) # Fit a simple model: mm <- lm( y ~ x + f + g ) ci.lin( mm ) ci.lin( mm, subset=3:6, diff=TRUE, fnam=FALSE ) ci.lin( mm, subset=3:6, diff=TRUE, fnam=TRUE ) ci.lin( mm, subset="f", diff=TRUE, fnam="f levels:" ) print( ci.lin( mm, subset="g", diff=TRUE, fnam="gee!:", vcov=TRUE ) ) # Use character defined subset to get ALL contrasts: ci.lin( mm, subset="f", diff=TRUE ) # Suppose the x-effect differs across levels of g: mi <- update( mm, . ~ . + g:x ) ci.lin( mi ) # RR a vs. b by x: nda <- data.frame( x=-3:3, g="a", f="b" ) ndb <- data.frame( x=-3:3, g="b", f="b" ) # ci.lin( mi, list(nda,ndb) ) # Same result if f column is omitted because "f" columns are identical ci.lin( mi, list(nda[,-3],ndb[,-3]) ) # However, crashes if knots in spline is supplied, and non-factor omitted xk <- -1:1 xi <- c(-0.5,0.5) ww <- rnorm(200) mi <- update( mm, . ~ . -x + ww + Ns(x,knots=xk) + g:Ns(x,knots=xi) ) # Will crash try( cbind( nda$x, ci.lin( mi, list(nda,ndb) ) ) ) # Must specify num vars (not factors) omitted from nda, ndb cbind( nda$x, ci.lin( mi, list(nda,ndb), xvars="ww" ) ) # A Wald test of whether the g-parameters are 0 Wald( mm, subset="g" ) # Wald test of whether the three first f-parameters are equal: ( CM <- rbind( c(1,-1,0,0), c(1,0,-1,0)) ) Wald( mm, subset="f", ctr.mat=CM ) # or alternatively ( CM <- rbind( c(1,-1,0,0), c(0,1,-1,0)) ) Wald( mm, subset="f", ctr.mat=CM ) # Confidence intervals for ratio of rates # Rates and ci supplied, but only the range (lower and upper ci) is used ci.ratio( cbind(10,8,12.5), cbind(5,4,6.25) ) ci.ratio( cbind(8,12.5), cbind(4,6.25) ) # Beware of the offset when making predictions with ci.pred and ci.exp \dontrun{ library( mgcv ) data( mortDK ) m.arg <- glm( dt ~ age , offset=log(risk) , family=poisson, data=mortDK ) m.form <- glm( dt ~ age + offset(log(risk)), family=poisson, data=mortDK ) a.arg <- gam( dt ~ age , offset=log(risk) , family=poisson, data=mortDK ) a.form <- gam( dt ~ age + offset(log(risk)), family=poisson, data=mortDK ) nd <- data.frame( age=60:65, risk=100 ) round( ci.pred( m.arg , nd ), 4 ) round( ci.pred( m.form, nd ), 4 ) round( ci.exp ( m.arg , nd ), 4 ) round( ci.exp ( m.form, nd ), 4 ) round( ci.pred( a.arg , nd ), 4 ) round( ci.pred( a.form, nd ), 4 ) round( ci.exp ( a.arg , nd ), 4 ) round( ci.exp ( a.form, nd ), 4 ) nd <- data.frame( age=60:65 ) try( ci.pred( m.arg , nd ) ) try( ci.pred( m.form, nd ) ) try( ci.exp ( m.arg , nd ) ) try( ci.exp ( m.form, nd ) ) try( ci.pred( a.arg , nd ) ) try( ci.pred( a.form, nd ) ) try( ci.exp ( a.arg , nd ) ) try( ci.exp ( a.form, nd ) ) } # The offset may be given as an argument (offset=log(risk)) # or as a term (+offset(log)), and depending on whether we are using a # glm or a gam Poisson model and whether we use ci.pred or ci.exp to # predict rates the offset is either used or ignored and either # required or not; the state of affairs can be summarized as: # # offset # ------------------------------------- # usage required? # ------------------ --------------- # function model argument term argument term # --------------------------------------------------------- # ci.pred glm used used yes yes # gam ignored used no yes # # ci.exp glm ignored ignored no yes # gam ignored ignored no yes # --------------------------------------------------------- } \keyword{models} \keyword{regression} Epi/man/pctab.Rd0000644000176200001440000000222413751040403013117 0ustar liggesusers\name{pctab} \alias{pctab} \title{Create percentages in a table} \description{ Computes percentages and a margin of totals along a given margin of a table. } \usage{ pctab(TT, margin = length(dim(TT)), dec=1) } \arguments{ \item{TT}{A table or array object} \item{margin}{Which margin should be the the total?} \item{dec}{How many decimals should be printed? If 0 or \code{FALSE} nothing is printed} } \value{ A table of percentages, where all dimensions except the one specified \code{margin} has two extra levels named "All" (where all entries are 100) and "N". The function prints the table with \code{dec} decimals. } \author{ Bendix Carstensen, Steno Diabetes Center, \url{http://bendixcarstensen.com}. } \seealso{ \code{\link{addmargins}} } \examples{ Aye <- sample( c("Yes","Si","Oui"), 177, replace=TRUE ) Bee <- sample( c("Hum","Buzz"), 177, replace=TRUE ) Sea <- sample( c("White","Black","Red","Dead"), 177, replace=TRUE ) A <- table( Aye, Bee, Sea ) A ftable( pctab( A ) ) ftable( pctab( addmargins( A, 1 ), 3 ) ) round( ftable( pctab( addmargins( A, 1 ), 3 ), row.vars=3 ), 1) } \keyword{ manip } \keyword{ methods } \keyword{ array } Epi/man/DMepi.Rd0000644000176200001440000000556213751040403013034 0ustar liggesusers\name{DMepi} \alias{DMepi} \docType{data} \title{Epidemiological rates for diabetes in Denmark 1996--2015} \description{Register based counts and person-years for incidence of diabetes and mortality with and without diabetes. } \usage{data("DMepi")} \format{ A data frame with 4200 observations on the following 8 variables. \describe{ \item{\code{sex}}{a factor with levels \code{M}, \code{F}} \item{\code{A}}{Age class, 0--99} \item{\code{P}}{Calendar year, 1996--2016} \item{\code{X}}{Number of new diagnoses of diabetes among persons without diabetes} \item{\code{D.nD}}{Number of deaths among persons without diabetes} \item{\code{Y.nD}}{Person-years among persons without diabetes} \item{\code{D.DM}}{Number of deaths among persons with diabetes} \item{\code{Y.DM}}{Person-years among persons with diabetes} } } \details{Based on registers of the Danish population. Only included for illustrative purposes. Cannot be used as scientifically validated data, since small numbers are randomly permuted between units. } \examples{ data(DMepi) # Total deaths and person-years in the Danish population ftable( addmargins( xtabs( cbind( Deaths=D.nD+D.DM, PYrs=Y.nD+Y.DM ) ~ P + sex, data=DMepi ), 2 ), row.vars = 1 ) # Deaths and person-years in the population of diabetes patients round( ftable( addmargins( xtabs( cbind( Deaths=D.DM, PYrs=Y.DM ) ~ P + sex, data=DMepi ), 2 ), row.vars = 1 ) ) # Model for age-specific incidence rates; inc <- glm( X ~ sex + Ns( A, knots=seq(30,80,10) ) + P, offset = log(Y.nD), family = poisson, data = DMepi ) # Predict for men and women separately in 2010: ndm <- data.frame( sex="M", A=20:90, P=2010, Y.nD=1000 ) ndf <- data.frame( sex="F", A=20:90, P=2010, Y.nD=1000 ) prM <- ci.pred( inc, ndm ) prF <- ci.pred( inc, ndf ) matplot( ndm$A, cbind(prM,prF), type="l", lty=1, lwd=c(3,1,1), col=rep(c("blue","red"),each=3), log="y", xlab="Age", ylab="DM incidence per 1000 PY" ) # This is a proportional hazards model - add sex-age interaction int <- update( inc, . ~ . + sex:Ns( A, knots=seq(30,80,10) ) ) prM <- ci.pred( int, ndm ) prF <- ci.pred( int, ndf ) matplot( ndm$A, cbind(prM,prF), type="l", lty=1, lwd=c(3,1,1), col=rep(c("blue","red"),each=3), log="y", xlab="Age", ylab="DM incidence per 1000 PY" ) # The rate-ratio is teased out using the ci.exp: RRp <- ci.exp( inc, list(ndm,ndf) ) RRi <- ci.exp( int, list(ndm,ndf) ) # and added to the plot matlines( ndm$A, cbind(RRi,RRp), type="l", lty=1, lwd=c(3,1,1), col=gray(rep(c(0.3,0.7),each=3)) ) abline(h=1) axis(side=4) mtext( "Male/Female IRR", side=4, line=2 ) } \keyword{datasets} Epi/DESCRIPTION0000644000176200001440000000267014016527043012504 0ustar liggesusersPackage: Epi Version: 2.44 Date: 2021-02-28 Title: Statistical Analysis in Epidemiology Authors@R: c(person("Bendix", "Carstensen", role = c("aut", "cre"), email = "b@bxc.dk"), person("Martyn", "Plummer", role = "aut", email = "Martyn.Plummer@warwick.ac.uk"), person("Esa", "Laara", role = "ctb"), person("Michael", "Hills", role = "ctb")) Depends: R (>= 3.5.0), utils Imports: cmprsk, etm, splines, MASS, survival, purrr, plyr, dplyr, Matrix, numDeriv, data.table, zoo, mgcv Suggests: mstate, nlme, lme4, popEpi Description: Functions for demographic and epidemiological analysis in the Lexis diagram, i.e. register and cohort follow-up data, in particular representation, manipulation and simulation of multistate data - the Lexis suite of functions, which includes interfaces to 'mstate', 'etm' and 'cmprsk' packages. Also contains functions for Age-Period-Cohort and Lee-Carter modeling and a function for interval censored data and some useful functions for tabulation and plotting, as well as a number of epidemiological data sets. License: GPL-2 URL: http://BendixCarstensen.com/Epi/ NeedsCompilation: yes Packaged: 2021-02-27 19:39:55 UTC; bendix Author: Bendix Carstensen [aut, cre], Martyn Plummer [aut], Esa Laara [ctb], Michael Hills [ctb] Maintainer: Bendix Carstensen Repository: CRAN Date/Publication: 2021-02-27 20:40:03 UTC Epi/src/0000755000176200001440000000000013052766107011565 5ustar liggesusersEpi/src/init.c0000644000176200001440000000066413052766107012702 0ustar liggesusers#include #include #include // for NULL #include extern SEXP clogit(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP); static const R_CallMethodDef CallEntries[] = { {"C_clogit", (DL_FUNC) &clogit, 7}, {NULL, NULL, 0} }; void R_init_Epi(DllInfo *dll) { R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); R_useDynamicSymbols(dll, FALSE); R_forceSymbols(dll, TRUE); } Epi/src/cholesky2.c0000644000176200001440000000317713052766107013644 0ustar liggesusers/* $Id: cholesky2.c 11357 2009-09-04 15:22:46Z therneau $ ** ** subroutine to do Cholesky decompostion on a matrix: C = FDF' ** where F is lower triangular with 1's on the diagonal, and D is diagonal ** ** arguments are: ** n the size of the matrix to be factored ** **matrix a ragged array containing an n by n submatrix to be factored ** toler the threshold value for detecting "singularity" ** ** The factorization is returned in the lower triangle, D occupies the ** diagonal and the upper triangle is left undisturbed. ** The lower triangle need not be filled in at the start. ** ** Return value: the rank of the matrix (non-negative definite), or -rank ** it not SPD or NND ** ** If a column is deemed to be redundant, then that diagonal is set to zero. ** ** Terry Therneau * * Copied from the survival package by Terry Therneau, version 2.35-7 */ #include int attribute_hidden cholesky2(double **matrix, int n, double toler) { double temp; int i,j,k; double eps, pivot; int rank; int nonneg; nonneg=1; eps =0; for (i=0; i eps) eps = matrix[i][i]; for (j=(i+1); j void attribute_hidden chsolve2(double **matrix, int n, double *y) { register int i,j; register double temp; /* ** solve Fb =y */ for (i=0; i=0; i--) { if (matrix[i][i]==0) y[i] =0; else { temp = y[i]/matrix[i][i]; for (j= i+1; j #include #include /* Utility functions by Terry Therneau from the survival package These are specially adapted to work with information matrices that are not of full rank. */ extern int cholesky2(double **matrix, int m, double toler); extern void chsolve2(double **matrix, int m, double *y); extern void chinv2(double **matrix, int m); /* Efficient calculation of the conditional log likelihood, along with the score and information matrix, for a single stratum. Input parameters: X T x m matrix of covariate values y T-vector that indicates if an individual is a case (y[t]==1) or control (y[t]==0) T Number of individuals in the stratum m Number of covariates offset Vector of offsets for the linear predictor beta m-vector of log odds ratio parameters Output parameters: loglik The conditional log-likelihood (scalar) score The score function (m-vector) info The information matrix (m x m matrix) The contribution from this stratum will be *added* to the output parameters, so they must be correctly initialized before calling cloglik. */ static void cloglik_stratum(double const *X, int const *y, double const *offset, int T, int m, double const *beta, double *loglik, double *score, double *info) { double *f, *g, *h, *xt, *xmean; int i,j,k,t; int K = 0, Kp; int iscase = 1; double sign = 1; double lpmax; /* Calculate number of cases */ for (t = 0; t < T; ++t) { if (y[t] != 0 && y[t] != 1) { error("Invalid outcome in conditional log likelihood"); } K += y[t]; } if (K==0 || K==T) { return; /* Non-informative stratum */ } /* If there are more cases than controls then define cases to be those with y[t] == 0, and reverse the sign of the covariate values. */ if (2 * K > T ) { K = T - K; iscase = 0; sign = -1; } /* Calculate the maximum value of the linear predictor (lpmax) within the stratum. This is subtracted from the linear predictor when taking exponentials for numerical stability. Note that we must correct the log-likelihood for this, but not the score or information matrix. */ lpmax = sign * offset[0]; for (i = 0; i < m; ++i) { lpmax += sign * beta[i] * X[T*i]; } for (t = 1; t < T; ++t) { double lp = sign * offset[t]; for (i = 0; i < m; ++i) { lp += sign * beta[i] * X[t + T*i]; } if (lp > lpmax) { lpmax = lp; } } /* Calculate the mean value of the covariates within the stratum. This is used to improve the numerical stability of the score and information matrix. */ xmean = Calloc(m, double); for (i = 0; i < m; ++i) { xmean[i] = 0; for (t = 0; t < T; ++t) { xmean[i] += sign * X[t + T*i]; } xmean[i] /= T; } /* Contribution from cases */ for (t = 0; t < T; ++t) { if (y[t] == iscase) { loglik[0] += sign * offset[t]; for (i = 0; i < m; ++i) { loglik[0] += sign * X[t + i*T] * beta[i]; score[i] += sign * X[t + i*T] - xmean[i]; } loglik[0] -= lpmax; } } /* Allocate and initialize workspace for recursive calculations */ Kp = K + 1; f = Calloc(Kp, double); g = Calloc(m * Kp, double); h = Calloc(m * m * Kp, double); xt = Calloc(m, double); for (k = 0; k < Kp; ++k) { f[k] = 0; for (i = 0; i < m; ++i) { g[k+Kp*i] = 0; for (j = 0; j < m; ++j) { h[k + Kp*(i + m*j)] = 0; } } } f[0] = 1; /* Recursively calculate contributions over all possible case sets of size K. */ for (t = 0; t < T; ++t) { double Ct = offset[t]; for (i = 0; i < m; ++i) { xt[i] = sign * X[t + T*i] - xmean[i]; Ct += sign * beta[i] * X[t + T*i]; } Ct = exp(Ct - lpmax); for (k = imin2(K,t+1); k > 0; --k) { for (i = 0; i < m; ++i) { double const *gpi = g + Kp*i; for (j = 0; j < m; ++j) { double const *gpj = g + Kp*j; double *hp = h + Kp*(i + m*j); hp[k] += Ct * (hp[k-1] + xt[i] * gpj[k-1] + xt[j] * gpi[k-1] + xt[i] * xt[j] * f[k-1]); } } for (i = 0; i < m; ++i) { double *gp = g + Kp*i; gp[k] += Ct * (gp[k-1] + xt[i] * f[k-1]); } f[k] += Ct * f[k-1]; } } /* Add contributions from this stratum to the output parameters */ loglik[0] -= log(f[K]); for (i = 0; i < m; ++i) { double const *gpi = g + Kp*i; score[i] -= gpi[K] / f[K]; for (j = 0; j < m; ++j) { double const *gpj = g + Kp*j; double const *hp = h + Kp*(i + m*j); info[i + m*j] += hp[K]/f[K] - (gpi[K]/f[K]) * (gpj[K]/f[K]); } } Free(f); Free(g); Free(h); Free(xt); Free(xmean); } /* * Calculate the conditional log likelihood summed over all strata, * along with the score and information matrix. * * Input parameters: * * X - list of matrices of covariate values. One element of the list * corresponds to a single stratum * Y - list of vectors of outcomes, corresponding to X, * beta - vector of log odds ratio parameters * m - number of parameters * * Output parameters * * loglik - contains the conditional log-likelihood on exit (scalar) * score - contains the score function on exit (m - vector) * info - contains the information matrix on exit (m*m - vector) */ static void cloglik(SEXP X, SEXP y, SEXP offset, int m, double *beta, double *loglik, double *score, double *info) { int i; int M = m*m; /* Output parameters of cloglik_stratum must be initialized to zero */ loglik[0] = 0; for (i = 0; i < m; ++i) { score[i] = 0; } for (i = 0; i < M; ++i) { info[i] = 0; } for (i = 0; i < length(X); ++i) { SEXP Xi = VECTOR_ELT(X,i); SEXP yi = VECTOR_ELT(y,i); SEXP oi = VECTOR_ELT(offset, i); cloglik_stratum(REAL(Xi), INTEGER(yi), REAL(oi), nrows(Xi), m, beta, loglik, score, info); } } /* The chinv2 function only works on the lower triangle of the matrix. This wrapper function copies the lower to the upper triangle */ static void invert_info(double **imat, int m) { int i,j; chinv2(imat, m); for (i = 1; i < m; i++) { for (j = 0; j < i; j++) { imat[i][j] = imat[j][i]; } } } /* Find maximum likelihood estimate of conditional logistic regression model by Newton-Raphson. The algorithm is copied from coxph.fit from the survival package by Terry Therneau. The variable u is used to store both the score function and the step for the next iteration. Likewise info contains both the information matrix and its Cholesky decomposition. If flag > 0 then the arrays hold the score and variance-covariance matrix respectively. */ static void clogit_fit(SEXP X, SEXP y, SEXP offset, int m, double *beta, double *loglik, double *u, double *info, int *flag, int *maxiter, double const *eps, double const * tol_chol) { int i, iter = 0; Rboolean halving = FALSE; double *oldbeta = Calloc(m, double); double **imat = Calloc(m, double*); /* Set up ragged array representation of information matrix for use by cholesky2, chsolve2, and invert_info functions */ for (i = 0; i < m; ++i) { imat[i] = info + m*i; } /* Initial iteration */ cloglik(X, y, offset, m, beta, loglik, u, info); if (*maxiter > 0) { *flag = cholesky2(imat, m, *tol_chol); if (*flag > 0) { chsolve2(imat, m, u); for (i = 0; i < m; i++) { oldbeta[i] = beta[i]; beta[i] += u[i]; } } else { /* Bad information matrix. Don't go into the main loop */ *maxiter = 0; } } /* Main loop */ for (iter = 1; iter <= *maxiter; iter++) { double oldlik = *loglik; cloglik(X, y, offset, m, beta, loglik, u, info); if (fabs(1 - (oldlik / *loglik)) <= *eps && !halving) { /* Done */ break; } else if (iter == *maxiter) { /* Out of time */ *flag = 1000; break; } else if (*loglik < oldlik) { /* Not converging: halve step size */ halving = TRUE; for (i = 0; i < m; i++) { beta[i] = (beta[i] + oldbeta[i]) /2; } } else { /* Normal update */ halving = FALSE; oldlik = *loglik; *flag = cholesky2(imat, m, *tol_chol); if (*flag > 0) { chsolve2(imat, m, u); for (i = 0; i < m; i++) { oldbeta[i] = beta[i]; beta[i] += u[i]; } } else { break; /* Bad information matrix */ } } } *maxiter = iter; if (*flag > 0) { cholesky2(imat, m, *tol_chol); invert_info(imat, m); } Free(oldbeta); Free(imat); } /* R interface */ SEXP clogit(SEXP X, SEXP y, SEXP offset, SEXP init, SEXP maxiter, SEXP eps, SEXP tol_chol) { int i; int n = length(X); int m = length(init); int M = m*m; int flag = 0; int niter = INTEGER(maxiter)[0]; double loglik[2], *score, *info, *beta; SEXP ans, a, names, dims; if (!isNewList(X)) error("'X' must be a list"); if (!isNewList(y)) error("'y' must be a list"); if (!isNewList(offset)) error("'offset' must be a list"); if (length(X) != length(y)) error("length mismatch between X and y"); if (length(X) != length(offset)) error("length mismatch between X and offset"); for (i = 0; i < n; ++i) { int T = nrows(VECTOR_ELT(X,i)); int xcols = ncols(VECTOR_ELT(X,i)); int ylen = length(VECTOR_ELT(y,i)); int olen = length(VECTOR_ELT(offset, i)); if (xcols != m) { error("Element %d of X has %d columns; expected %d", i, xcols, m); } if (ylen != T) { error("Element %d of y has length %d; expected %d", i, ylen, T); } if (olen != T) { error("Element %d of offset has length %d; expected %d", i, ylen, T); } } beta = (double *) R_alloc(m, sizeof(double)); for (i = 0; i < m; ++i) { beta[i] = REAL(init)[i]; } score = (double *) R_alloc(m, sizeof(double)); info = (double *) R_alloc(M, sizeof(double)); /* Calculate initial loglikelihood */ cloglik(X, y, offset, m, beta, &loglik[0], score, info); /* Maximize the likelihood */ clogit_fit(X, y, offset, m, beta, &loglik[1], score, info, &flag, &niter, REAL(eps), REAL(tol_chol)); /* Construct return list */ PROTECT(ans = allocVector(VECSXP, 5)); PROTECT(names = allocVector(STRSXP, 5)); /* Estimates */ PROTECT(a = allocVector(REALSXP, m)); for (i = 0; i < m; ++i) { REAL(a)[i] = beta[i]; } SET_VECTOR_ELT(ans, 0, a); SET_STRING_ELT(names, 0, mkChar("coefficients")); UNPROTECT(1); /* Log likelihood */ PROTECT(a = allocVector(REALSXP, 2)); REAL(a)[0] = loglik[0]; REAL(a)[1] = loglik[1]; SET_VECTOR_ELT(ans, 1, a); SET_STRING_ELT(names, 1, mkChar("loglik")); UNPROTECT(1); /* Information matrix */ PROTECT(a = allocVector(REALSXP, M)); PROTECT(dims = allocVector(INTSXP, 2)); for (i = 0; i < M; ++i) { REAL(a)[i] = info[i]; } INTEGER(dims)[0] = m; INTEGER(dims)[1] = m; setAttrib(a, R_DimSymbol, dims); SET_VECTOR_ELT(ans, 2, a); SET_STRING_ELT(names, 2, mkChar("var")); UNPROTECT(2); /* Flag */ PROTECT(a = ScalarInteger(flag)); SET_VECTOR_ELT(ans, 3, a); SET_STRING_ELT(names, 3, mkChar("flag")); UNPROTECT(1); /* Number of iterations */ PROTECT(a = ScalarInteger(niter)); SET_VECTOR_ELT(ans, 4, a); SET_STRING_ELT(names, 4, mkChar("iter")); UNPROTECT(1); setAttrib(ans, R_NamesSymbol, names); UNPROTECT(2); return(ans); } Epi/src/chinv2.c0000644000176200001440000000301713052766107013123 0ustar liggesusers/* $Id: chinv2.c 11357 2009-09-04 15:22:46Z therneau $ ** ** matrix inversion, given the FDF' cholesky decomposition ** ** input **matrix, which contains the chol decomp of an n by n ** matrix in its lower triangle. ** ** returned: the upper triangle + diagonal contain (FDF')^{-1} ** below the diagonal will be F inverse ** ** Terry Therneau ** ** Copied from the survival package by Terry Therneau, version 2.35-7 */ #include void attribute_hidden chinv2(double **matrix , int n) { register double temp; register int i,j,k; /* ** invert the cholesky in the lower triangle ** take full advantage of the cholesky's diagonal of 1's */ for (i=0; i0) { matrix[i][i] = 1/matrix[i][i]; /*this line inverts D */ for (j= (i+1); j options( width=90 ) > library( Epi ) > print( sessionInfo(), l=F ) \end{Sinput} \begin{Soutput} R version 3.6.3 (2020-02-29) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 14.04.6 LTS Matrix products: default BLAS: /usr/lib/openblas-base/libopenblas.so.0 LAPACK: /usr/lib/lapack/liblapack.so.3.0 attached base packages: [1] utils datasets graphics grDevices stats methods base other attached packages: [1] Epi_2.43 loaded via a namespace (and not attached): [1] Rcpp_1.0.3 magrittr_1.5 splines_3.6.3 MASS_7.3-53 [5] tidyselect_0.2.5 lattice_0.20-41 R6_2.4.1 rlang_0.4.4 [9] plyr_1.8.5 dplyr_0.8.4 cmprsk_2.2-7 tools_3.6.3 [13] parallel_3.6.3 grid_3.6.3 data.table_1.12.0 nlme_3.1-149 [17] mgcv_1.8-33 survival_3.2-7 assertthat_0.2.1 tibble_2.1.3 [21] etm_1.0.4 numDeriv_2016.8-1 crayon_1.3.4 Matrix_1.2-18 [25] purrr_0.3.0 glue_1.3.1 compiler_3.6.3 pillar_1.4.3 [29] zoo_1.8-4 pkgconfig_2.0.3 \end{Soutput} \end{Schunk} First we load the diabetes data and set up a simple illness-death model: \begin{Schunk} \begin{Sinput} > data(DMlate) > dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), + exit = list(Per=dox), + exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), + data = DMlate ) \end{Sinput} \begin{Soutput} NOTE: entry.status has been set to "DM" for all. NOTE: Dropping 4 rows with duration of follow up < tol \end{Soutput} \end{Schunk} This is just data for a simple survival model with states \texttt{DM} and \texttt{Dead}. Now we cut the follow-up at insulin start, which for the majority of patients (T2D) is a clinical indicator of deterioration of disease regulation. We therefore also introduce a new timescale, and split the non-precursor states, so that we can address the question of ever having been on insulin: \begin{Schunk} \begin{Sinput} > dmi <- cutLexis( dml, cut = dml$doins, + pre = "DM", + new.state = "Ins", + new.scale = "t.Ins", + split.states = TRUE ) > summary( dmi, timeScales=T ) \end{Sinput} \begin{Soutput} Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 6157 1694 2048 0 9899 3742 45885.49 9899 Ins 0 1340 0 451 1791 451 8387.77 1791 Sum 6157 3034 2048 451 11690 4193 54273.27 9996 Timescales: Per Age DMdur t.Ins "" "" "" "Ins" \end{Soutput} \end{Schunk} Note that we show the time scales in the \texttt{Lexis} object, and that it is indicated that the time scale \texttt{t.Ins} is defined as time since entry into stat state \texttt{Ins.} We can show how many person-years we have and show the number of transitions and transition rates (per 1000), using the \texttt{boxes.Lexis} function to display the states and the number of transitions between them: \begin{Schunk} \begin{Sinput} > boxes( dmi, boxpos = list(x=c(20,20,80,80), + y=c(80,20,80,20)), + scale.R = 1000, show.BE = TRUE ) \end{Sinput} \end{Schunk} \insfig{boxes}{0.8}{Data overview for the \textrm{\tt dmi} dataset. Numbers in the boxes are person-years and the number of persons who begin, resp. end their follow-up in each state, and numbers on the arrows are no. of transitions and rates (transition intensities) per 1000 PY.} \section{Analysis of rates} In the \texttt{Lexis} object (which is just a data frame) each person is represented by one record for each transient state occupied, thus in this case either 1 or 2 records; those who have a recorded time both without and with insulin have two records. In order to be able to fit Poisson models with occurrence rates varying by the different time-scales, we split the follow-up in 3-month intervals for modeling: \begin{Schunk} \begin{Sinput} > Si <- splitLexis( dmi, seq(0,20,1/4), "DMdur" ) > summary( Si ) \end{Sinput} \begin{Soutput} Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 184986 1694 2048 0 188728 3742 45885.49 9899 Ins 0 34707 0 451 35158 451 8387.77 1791 Sum 184986 36401 2048 451 223886 4193 54273.27 9996 \end{Soutput} \begin{Sinput} > print( subset( Si, lex.id==97 )[,1:10], digits=6 ) \end{Sinput} \begin{Soutput} lex.id Per Age DMdur t.Ins lex.dur lex.Cst lex.Xst sex dobth 2142 97 1997.55 58.9268 0.00000 NA 0.2500000 DM DM F 1938.62 2143 97 1997.80 59.1768 0.25000 NA 0.2500000 DM DM F 1938.62 2144 97 1998.05 59.4268 0.50000 NA 0.2500000 DM DM F 1938.62 2145 97 1998.30 59.6768 0.75000 NA 0.2500000 DM DM F 1938.62 2146 97 1998.55 59.9268 1.00000 NA 0.2500000 DM DM F 1938.62 2147 97 1998.80 60.1768 1.25000 NA 0.2500000 DM DM F 1938.62 2148 97 1999.05 60.4268 1.50000 NA 0.2500000 DM DM F 1938.62 2149 97 1999.30 60.6768 1.75000 NA 0.2500000 DM DM F 1938.62 2150 97 1999.55 60.9268 2.00000 NA 0.1793292 DM Ins F 1938.62 2151 97 1999.72 61.1061 2.17933 0.0000000 0.0706708 Ins Ins F 1938.62 2152 97 1999.80 61.1768 2.25000 0.0706708 0.2500000 Ins Ins F 1938.62 2153 97 2000.05 61.4268 2.50000 0.3206708 0.2500000 Ins Ins F 1938.62 2154 97 2000.30 61.6768 2.75000 0.5706708 0.2500000 Ins Ins F 1938.62 2155 97 2000.55 61.9268 3.00000 0.8206708 0.0116359 Ins Dead(Ins) F 1938.62 \end{Soutput} \end{Schunk} Note that when we split the follow-up, each person's follow up now consists of many records, each with the \emph{current} values of the timescales at the start of the interval represented by the record. In the modeling we shall assume that the rates are constant within each 6-month interval, but the \emph{size} of these rates we model as smooth functions of the time scales (that is the values at the beginning of each interval). The approach often used in epidemiology where one parameter is attached to each interval of time (or age) is not feasible when more than one time scale is used, because intervals are not classified the same way on all timescales. We shall use natural splines (restricted cubic splines) for the analysis of rates, and hence we must allocate knots for the splines. This is done for each of the time-scales, and separately for the transition out of states \texttt{DM} and \texttt{Ins}. For age, we place the knots so that the number of events is the same between each pair of knots, but only half of this beyond each of the boundary knots, whereas for the timescales \texttt{DMdur} and \texttt{tIns} where we have observation from a well-defined 0, we put knots at 0 and place the remaining knots so that the number of events is the same between each pair of knots as well as outside the boundary knots. \begin{Schunk} \begin{Sinput} > nk <- 5 > ( ai.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), + quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) \end{Sinput} \begin{Soutput} 10% 30% 50% 70% 90% 23.23751 48.82218 58.63244 67.79028 78.88542 \end{Soutput} \begin{Sinput} > ( ad.kn <- with( subset(Si,lex.Xst=="Dead"), + quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) \end{Sinput} \begin{Soutput} 10% 30% 50% 70% 90% 61.91951 72.52731 78.43121 83.32348 90.15195 \end{Soutput} \begin{Sinput} > ( di.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), + c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) \end{Sinput} \begin{Soutput} 20% 40% 60% 80% 0.00000000 0.06570842 0.45448323 3.28761123 6.63764545 \end{Soutput} \begin{Sinput} > ( dd.kn <- with( subset(Si,lex.Xst=="Dead"), + c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) \end{Sinput} \begin{Soutput} 20% 40% 60% 80% 0.0000000 0.7687885 2.1327858 4.0465435 6.5232033 \end{Soutput} \begin{Sinput} > ( ti.kn <- with( subset(Si,lex.Xst=="Dead(Ins)"), + c(0,quantile( t.Ins+lex.dur, probs=(1:(nk-1))/nk ) )) ) \end{Sinput} \begin{Soutput} 20% 40% 60% 80% 0.0000000 0.3093771 1.1307324 2.5489391 4.9117043 \end{Soutput} \end{Schunk} Note that when we tease out the event records for transition to \emph{transient} states (in this case \texttt{Ins}, that is \verb|lex.Xst=="Ins"|), we should add \verb|lex.Cst!=lex.Xst|, to include only transition records and avoiding including records of sojourn time in the transient state. We then fit Poisson models to transition rates, using the wrapper \texttt{Ns} from the \texttt{Epi} package to simplify the specification of the rates: \begin{Schunk} \begin{Sinput} > library( splines ) > DM.Ins <- glm( (lex.Xst=="Ins") ~ Ns( Age , knots=ai.kn ) + + Ns( DMdur, knots=di.kn ) + + I(Per-2000) + sex, + family=poisson, offset=log(lex.dur), + data = subset(Si,lex.Cst=="DM") ) > ci.exp( DM.Ins ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% (Intercept) 1.37516629 1.21414923 1.55753699 Ns(Age, knots = ai.kn)1 0.23411761 0.19185266 0.28569349 Ns(Age, knots = ai.kn)2 0.23166177 0.19576557 0.27414000 Ns(Age, knots = ai.kn)3 0.02835009 0.02284379 0.03518363 Ns(Age, knots = ai.kn)4 0.38067392 0.32945713 0.43985278 Ns(DMdur, knots = di.kn)1 0.04462626 0.03373451 0.05903459 Ns(DMdur, knots = di.kn)2 0.22388988 0.19028663 0.26342723 Ns(DMdur, knots = di.kn)3 0.03379141 0.02574708 0.04434907 Ns(DMdur, knots = di.kn)4 0.47100646 0.40783317 0.54396529 I(Per - 2000) 0.97381513 0.96082049 0.98698552 sexF 0.73757407 0.66886782 0.81333785 \end{Soutput} \begin{Sinput} > class( DM.Ins ) \end{Sinput} \begin{Soutput} [1] "glm" "lm" \end{Soutput} \end{Schunk} We can also fit this model with a slightly simpler syntax using the \texttt{glm.Lexis} function: \begin{Schunk} \begin{Sinput} > DM.Ins <- glm.Lexis( Si, from = "DM", to = "Ins", + formula = ~ Ns( Age , knots=ai.kn ) + + Ns( DMdur, knots=di.kn ) + + I(Per-2000) + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object Si with log link: Rates for the transition: DM->Ins \end{Soutput} \begin{Sinput} > ci.exp( DM.Ins ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% (Intercept) 1.37516630 1.21415038 1.55753552 Ns(Age, knots = ai.kn)1 0.23411761 0.19185214 0.28569426 Ns(Age, knots = ai.kn)2 0.23166177 0.19576473 0.27414118 Ns(Age, knots = ai.kn)3 0.02835009 0.02284374 0.03518371 Ns(Age, knots = ai.kn)4 0.38067392 0.32945601 0.43985427 Ns(DMdur, knots = di.kn)1 0.04462625 0.03373347 0.05903639 Ns(DMdur, knots = di.kn)2 0.22388988 0.19028599 0.26342813 Ns(DMdur, knots = di.kn)3 0.03379141 0.02574705 0.04434912 Ns(DMdur, knots = di.kn)4 0.47100646 0.40783201 0.54396683 I(Per - 2000) 0.97381513 0.96082027 0.98698574 sexF 0.73757407 0.66886641 0.81333956 \end{Soutput} \begin{Sinput} > class( DM.Ins ) \end{Sinput} \begin{Soutput} [1] "glm.lex" "glm" "lm" \end{Soutput} \end{Schunk} So we have a slightly simpler syntax, and we get an informative message of which transition(s) we are modeling. However we do not have \texttt{update} method for these objects. \begin{Schunk} \begin{Sinput} > DM.Dead <- glm.Lexis( Si, from = "DM", to = "Dead", + formula = ~ Ns( Age , knots=ad.kn ) + + Ns( DMdur, knots=dd.kn ) + + I(Per-2000) + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object Si with log link: Rates for the transition: DM->Dead \end{Soutput} \begin{Sinput} > Ins.Dead <- glm.Lexis( Si, from = "Ins", + formula = ~ Ns( Age , knots=ad.kn ) + + Ns( DMdur, knots=dd.kn ) + + Ns( t.Ins, knots=ti.kn ) + + I(Per-2000) + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object Si with log link: Rates for the transition: Ins->Dead(Ins) \end{Soutput} \end{Schunk} Note the similarity of the code used to fit the three models, is is mainly redefining the response variable (\texttt{to} state) and the subset of the data used (\texttt{from} state). Also note that the last model need no specification of \texttt{to}, the default is to model all transitions from the \texttt{from} state, and his case there is only one. \section{The mortality rates} This section discusses in some detail how to extract ad display the mortality rates from the models fitted. But it is not necessary for understanding how to use \texttt{simLexis} in practice. \subsection{Proportionality of mortality rates} Note that we have fitted separate models for the three transitions, there is no assumption of proportionality between the mortality rates from \texttt{DM} and \texttt{Ins}. However, there is nothing that prevents us from testing this assumption; we can just fit a model for the mortality rates in the entire data frame \texttt{Si}, and compare the deviance from this with the sum of the deviances from the separate models using the \texttt{glm.Lexis} function: \begin{Schunk} \begin{Sinput} > All.Dead <- glm.Lexis( Si, to = c("Dead(Ins)","Dead"), + formula = ~ Ns( Age , knots=ad.kn ) + + Ns( DMdur, knots=dd.kn ) + + lex.Cst + + I(Per-2000) + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object Si with log link: Rates for transitions: Ins->Dead(Ins), DM->Dead \end{Soutput} \begin{Sinput} > round( ci.exp( All.Dead ), 3 ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% (Intercept) 0.057 0.049 0.065 Ns(Age, knots = ad.kn)1 4.101 3.462 4.858 Ns(Age, knots = ad.kn)2 4.661 4.064 5.346 Ns(Age, knots = ad.kn)3 15.434 13.548 17.583 Ns(Age, knots = ad.kn)4 7.509 6.695 8.421 Ns(DMdur, knots = dd.kn)1 0.466 0.384 0.565 Ns(DMdur, knots = dd.kn)2 0.642 0.563 0.731 Ns(DMdur, knots = dd.kn)3 0.229 0.165 0.318 Ns(DMdur, knots = dd.kn)4 0.796 0.713 0.888 lex.CstIns 2.168 1.947 2.415 I(Per - 2000) 0.965 0.954 0.977 sexF 0.665 0.614 0.721 \end{Soutput} \end{Schunk} Incidentally we could have dispensed with the \texttt{to=} argument too, because the default is to take \texttt{to} to be all absorbing states in the model. From the parameter values we would in a simple setting just claim that start of insulin-treatment was associated with a slightly more than doubling of mortality. The model \texttt{All.dead} assumes that the age- and DM-duration effects on mortality in the \texttt{DM} and \texttt{Ins} states are the same, and moreover that there is no effect of insulin duration, but merely a mortality that is larger by a multiplicative constant not depending on insulin duration. The model \texttt{DM.Dead} has 8 parameters to describe the dependency on age and DM duration, the model \texttt{Ins.Dead} has 12 for the same plus the insulin duration (a natural spline with $k$ knots gives $k-1$ parameters, and we chose $k=5$ above). We can compare the fit of the simple proportional hazards model with the fit of the separate models for the two mortality rates, by adding up the deviances and d.f. from these: \begin{Schunk} \begin{Sinput} > what <- c("null.deviance","df.null","deviance","df.residual") > ( rD <- unlist( DM.Dead[what] ) ) \end{Sinput} \begin{Soutput} null.deviance df.null deviance df.residual 22535.77 188727.00 20412.81 188717.00 \end{Soutput} \begin{Sinput} > ( rI <- unlist( Ins.Dead[what] ) ) \end{Sinput} \begin{Soutput} null.deviance df.null deviance df.residual 4867.127 35157.000 4211.735 35143.000 \end{Soutput} \begin{Sinput} > ( rA <- unlist( All.Dead[what] ) ) \end{Sinput} \begin{Soutput} null.deviance df.null deviance df.residual 27415.21 223885.00 24705.70 223874.00 \end{Soutput} \begin{Sinput} > round( c( dd <- rA-(rI+rD), "pVal"=1-pchisq(dd[3],dd[4]+1) ), 3 ) \end{Sinput} \begin{Soutput} null.deviance df.null deviance df.residual pVal.deviance 12.314 1.000 81.154 14.000 0.000 \end{Soutput} \end{Schunk} Thus we see there is a substantial non-proportionality of mortality rates from the two states; but a test provides no clue whatsoever to the particular \emph{shape} of the non-proportionality. To this end, we shall explore the predicted mortalities under the two models quantitatively in more detail. Note that the reason that there is a difference in the null deviances (and a difference of 1 in the null d.f.) is that the null deviance of \texttt{All.Dead} refer to a model with a single intercept, that is a model with constant and \emph{identical} mortality rates from the states \texttt{DM} and \texttt{Ins}, whereas the null models for \texttt{DM.Dead} and \texttt{Ins.Dead} have constant but \emph{different} mortality rates from the states \texttt{DM} and \texttt{Ins}. This is however irrelevant for the comparison of the \emph{residual} deviances. \subsection{How the mortality rates look} If we want to see how the mortality rates are modelled in \texttt{DM.Dead} and \texttt{Ins.Dead} in relation to \texttt{All.Dead}, we make a prediction of rates for say men diagnosed in different ages and going on insulin at different times after this. So we consider men diagnosed in ages 40, 50, 60 and 70, and who either never enter insulin treatment or do it 0, 2 or 5 years after diagnosis of DM. To this end we create a prediction data frame where we have observation times from diagnosis and 12 years on (longer would not make sense as this is the extent of the data). But we start by setting up an array to hold the predicted mortality rates, classified by diabetes duration, age at diabetes onset, time of insulin onset, and of course type of model. What we want to do is to plot the age-specific mortality rates for persons not on insulin, and for persons starting insulin at different times after DM. The mortality curves start at the age where the person gets diabetes and continues 12 years; for persons on insulin they start at the age when they initiate insulin. \begin{Schunk} \begin{Sinput} > pr.rates <- NArray( list( DMdur = seq(0,12,0.1), + DMage = 4:7*10, + r.Ins = c(NA,0,2,5), + model = c("DM/Ins","All"), + what = c("rate","lo","hi") ) ) > str( pr.rates ) \end{Sinput} \begin{Soutput} logi [1:121, 1:4, 1:4, 1:2, 1:3] NA NA NA NA NA NA ... - attr(*, "dimnames")=List of 5 ..$ DMdur: chr [1:121] "0" "0.1" "0.2" "0.3" ... ..$ DMage: chr [1:4] "40" "50" "60" "70" ..$ r.Ins: chr [1:4] NA "0" "2" "5" ..$ model: chr [1:2] "DM/Ins" "All" ..$ what : chr [1:3] "rate" "lo" "hi" \end{Soutput} \end{Schunk} For convenience the \texttt{Epi} package contains a function that computes predicted (log-)rates with c.i. --- it is merely a wrapper for \texttt{predict.glm}. So we set up the prediction data frame and modify it in loops over ages at onset and insulin onset in order to collect the predicted rates in different scenarios: \begin{Schunk} \begin{Sinput} > nd <- data.frame( DMdur = as.numeric( dimnames(pr.rates)[[1]] ), + lex.Cst = factor( 1, levels=1:4, + labels=levels(Si$lex.Cst) ), + sex = factor( 1, levels=1:2, labels=c("M","F")) ) \end{Sinput} \end{Schunk} Note that we did \emph{not} insert \texttt{lex.dur} as covariate in the prediction frame. This would be required if we used the \texttt{poisson} family with the \texttt{glm}, but the wrapper \texttt{glm.Lexis} uses the \texttt{poisreg} family, so \texttt{lex.dur} is ignored and predictions always comes in the (inverse) units of \texttt{lex.dur}. So we get rates per 1 person-year in the predictions. \begin{Schunk} \begin{Sinput} > for( ia in dimnames(pr.rates)[[2]] ) + { + dnew <- transform( nd, Age = as.numeric(ia)+DMdur, + Per = 1998+DMdur ) + pr.rates[,ia,1,"DM/Ins",] <- ci.pred( DM.Dead, newdata = dnew ) + pr.rates[,ia,1,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) + for( ii in dimnames(pr.rates)[[3]][-1] ) + { + dnew = transform( dnew, lex.Cst = factor( 2, levels=1:4, + labels=levels(Si$lex.Cst) ), + t.Ins = ifelse( (DMdur-as.numeric(ii)) >= 0, + DMdur-as.numeric(ii), NA ) ) + pr.rates[,ia, ii ,"DM/Ins",] <- ci.pred( Ins.Dead, newdata = dnew ) + pr.rates[,ia, ii ,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) + } + } \end{Sinput} \end{Schunk} So for each age at DM onset we make a plot of the mortality as function of current age both for those with no insulin treatment and those that start insulin treatment 0, 2 and 5 years after diabetes diagnosis, thus 4 curves (with c.i.). These curves are replicated with a different color for the simplified model. \begin{Schunk} \begin{Sinput} > par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1 ) > plot( NA, xlim=c(40,82), ylim=c(5,300), bty="n", + log="y", xlab="Age", ylab="Mortality rate per 1000 PY" ) > abline( v=seq(40,80,5), h=outer(1:9,10^(0:2),"*"), col=gray(0.8) ) > for( aa in 4:7*10 ) for( ii in 1:4 ) + matshade( aa+as.numeric(dimnames(pr.rates)[[1]]), + cbind( pr.rates[,paste(aa),ii,"DM/Ins",], + pr.rates[,paste(aa),ii,"All" ,] )*1000, + type="l", lty=1, lwd=2, + col=c("red","limegreen") ) \end{Sinput} \end{Schunk} \insfig{mort-int}{0.9}{Estimated mortality rates for male diabetes patients with no insulin (lower sets of curves) and insulin (upper curves), with DM onset in age 40, 50, 60 and 70. The red curves are from the models with separate age effects for persons with and without insulin, and a separate effect of insulin duration. The green curves are from the model with common age-effects and only a time-dependent effect of insulin, assuming no effect of insulin duration (the classical time-dependent variable approach). Hence the upper green curve is common for any time of insulin inception.} From figure \ref{fig:mort-int} we see that there is a substantial insulin-duration effect which is not accommodated by the simple model with only one time-dependent variable to describe the insulin effect. Note that the simple model (green curves) for those on insulin does not depend in insulin duration, and hence the mortality curves for those on insulin are just parallel to the mortality curves for those not on insulin, regardless of diabetes duration (or age) at the time of insulin initiation. This is the proportional hazards assumption. Thus the effect of insulin initiation is under-estimated for short duration of insulin and over-estimated for long duration of insulin. This is the major discrepancy between the two models, and illustrates the importance of being able to accommodate different time scales, but there is also a declining overall insulin effect by age which is not accommodated by the proportional hazards approach. Finally, this plot illustrates an important feature in reporting models with multiple timescales; all timescales must be represented in the predicted rates, only reporting the effect of one timescale, conditional on a fixed value of other timescales is misleading since all timescales by definition advance at the same pace. For example, the age-effect for a fixed value of insulin duration really is a misnomer since it does not correspond to any real person's follow-up, but to the mortality of persons in different ages but with the same duration of insulin use. \section{Input to the \texttt{simLexis} function} We want to estimate the cumulative probability of being in each of the 4 states, so that we can assess the fraction of diabetes pateints that go on insulin In order to simulate from the multistate model with the estimated transition rates, and get the follow-up of a hypothetical cohort, we must supply \emph{both} the transition rates and the structure of the model \emph{as well as} the initial cohort status to \texttt{simLexis}. \subsection{The transition object} We first put the models into an object representing the transitions; note this is a list of lists, the latter having \texttt{glm} objects as elements: \begin{Schunk} \begin{Sinput} > Tr <- list( "DM" = list( "Ins" = DM.Ins, + "Dead" = DM.Dead ), + "Ins" = list( "Dead(Ins)" = Ins.Dead ) ) \end{Sinput} \end{Schunk} Now we have the description of the rates and of the structure of the model. The \texttt{Tr} object defines the states and models for all transitions between them; the object \verb|Tr$A$B| is the model for the transition intensity from state \texttt{A} to state \texttt{B}. \subsection{The initial cohort} We now define an initial \texttt{Lexis} object of persons with all relevant covariates defined. Note that we use \texttt{NULL} as row indicator in the \texttt{Lexis} object we used for modeling; this conserves the \texttt{time.scale} and \texttt{time.since} attributes which are needed for the simulation: \begin{Schunk} \begin{Sinput} > str( ini <- Si[NULL,1:9] ) \end{Sinput} \begin{Soutput} Classes ‘Lexis’ and 'data.frame': 0 obs. of 9 variables: $ lex.id : int $ Per : num $ Age : num $ DMdur : num $ t.Ins : num $ lex.dur: num $ lex.Cst: Factor w/ 4 levels "DM","Ins","Dead",..: $ lex.Xst: Factor w/ 4 levels "DM","Ins","Dead",..: $ sex : Factor w/ 2 levels "M","F": - attr(*, "time.scales")= chr "Per" "Age" "DMdur" "t.Ins" - attr(*, "time.since")= chr "" "" "" "Ins" - attr(*, "breaks")=List of 4 ..$ Per : NULL ..$ Age : NULL ..$ DMdur: num 0 0.25 0.5 0.75 1 1.25 1.5 1.75 2 2.25 ... ..$ t.Ins: NULL \end{Soutput} \end{Schunk} We now have an empty \texttt{Lexis} object with attributes reflecting the timescales in the multistate model we want to simulate from. But we must enter some data to represent the initial state of the persons whose follow-up we want to simulate through the model; so fill in data for one man and one woman: \begin{Schunk} \begin{Sinput} > ini[1:2,"lex.id"] <- 1:2 > ini[1:2,"lex.Cst"] <- "DM" > ini[1:2,"Per"] <- 1995 > ini[1:2,"Age"] <- 60 > ini[1:2,"DMdur"] <- 5 > ini[1:2,"sex"] <- c("M","F") > ini \end{Sinput} \begin{Soutput} lex.id Per Age DMdur t.Ins lex.dur lex.Cst lex.Xst sex 1 1 1995 60 5 NA NA DM M 2 2 1995 60 5 NA NA DM F \end{Soutput} \end{Schunk} So the persons starts in age 60 in 1995 with 5 years of diabetes duration. Note that the \texttt{t.Ins} is \texttt{NA}, because this is a timescale that first comes alive if a transtion to \texttt{Ins} is simulated. \section{Simulation of the follow-up} Now we simulate life-courses of a 1000 of each of these persons using the estimated model. The \texttt{t.range} argument gives the times range where the integrated intensities (cumulative rates) are evaluated and where linear interpolation is used when simulating transition times. Note that this must be given in the same units as \texttt{lex.dur} in the \texttt{Lexis} object used for fitting the models for the transitions. It is not a parameter that can be easily determined from the \texttt{TR} object, hence it must be supplied by the user. \begin{Schunk} \begin{Sinput} > set.seed( 52381764 ) > Nsim <- 5000 > system.time( simL <- simLexis( Tr, + ini, + t.range = 12, + N = Nsim ) ) \end{Sinput} \begin{Soutput} user system elapsed 17.936 1.015 17.934 \end{Soutput} \end{Schunk} The result is a \texttt{Lexis} object --- a data frame representing the simulated follow-up of 10000 persons (5000 identical men and 5000 identical women) according to the rates we estimated from the original dataset. \begin{Schunk} \begin{Sinput} > summary( simL, by="sex" ) \end{Sinput} \begin{Soutput} $M Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 1438 2048 1514 0 5000 3562 36620.95 5000 Ins 0 1363 0 685 2048 685 10935.47 2048 Sum 1438 3411 1514 685 7048 4247 47556.41 5000 $F Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 2186 1689 1125 0 5000 2814 42181.63 5000 Ins 0 1321 0 368 1689 368 9535.20 1689 Sum 2186 3010 1125 368 6689 3182 51716.83 5000 \end{Soutput} \end{Schunk} \subsection{Using other models for simulation} \subsubsection{Proportional hazards Poisson model} We fitted a proportional mortality model \texttt{All.Dead} (which fitted worse than the other two), this is a model for \emph{both} the transition from \texttt{DM} to \texttt{Death} \emph{and} from \texttt{Ins} to \texttt{Dead(Ins)}, assuming that they are proportional. But it can easily be used in the simulation set-up, because the state is embedded in the model via the term \texttt{lex.Cst}, which is updated during the simulation. Simulation using this instead just requires that we supply a different transition object: \begin{Schunk} \begin{Sinput} > Tr.p <- list( "DM" = list( "Ins" = DM.Ins, + "Dead" = All.Dead ), + "Ins" = list( "Dead(Ins)" = All.Dead ) ) > system.time( simP <- simLexis( Tr.p, + ini, + t.range = 12, + N = Nsim ) ) \end{Sinput} \begin{Soutput} user system elapsed 19.197 1.137 19.298 \end{Soutput} \begin{Sinput} > summary( simP, by="sex" ) \end{Sinput} \begin{Soutput} $M Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 1633 1984 1383 0 5000 3367 37674.18 5000 Ins 0 1135 0 849 1984 849 9807.38 1984 Sum 1633 3119 1383 849 6984 4216 47481.56 5000 $F Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 2285 1695 1020 0 5000 2715 42892.52 5000 Ins 0 1191 0 504 1695 504 8833.70 1695 Sum 2285 2886 1020 504 6695 3219 51726.21 5000 \end{Soutput} \end{Schunk} \subsubsection{Proportional hazards Cox model} A third possibility would be to replace the two-time scale proportional mortality model by a one-time-scale Cox-model, using diabetes duration as time scale, and age at diagnosis of DM as (fixed) covariate: \begin{Schunk} \begin{Sinput} > library( survival ) > Cox.Dead <- coxph( Surv( DMdur, DMdur+lex.dur, + lex.Xst %in% c("Dead(Ins)","Dead")) ~ + Ns( Age-DMdur, knots=ad.kn ) + + I(lex.Cst=="Ins") + + I(Per-2000) + sex, + data = Si ) > round( ci.exp( Cox.Dead ), 3 ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% Ns(Age - DMdur, knots = ad.kn)1 4.172 3.535 4.923 Ns(Age - DMdur, knots = ad.kn)2 4.502 3.824 5.301 Ns(Age - DMdur, knots = ad.kn)3 16.077 14.087 18.348 Ns(Age - DMdur, knots = ad.kn)4 7.479 6.501 8.605 I(lex.Cst == "Ins")TRUE 2.170 1.948 2.418 I(Per - 2000) 0.965 0.954 0.977 sexF 0.667 0.616 0.723 \end{Soutput} \end{Schunk} Note that in order for this model to be usable for simulation, it is necessary that we use the components of the \texttt{Lexis} object to specify the survival. Each record in the data frame \texttt{Si} represents follow up from \texttt{DMdur} to \texttt{DMdur+lex.dur}, so the model is a Cox model with diabetes duration as underlying timescale and age at diagnosis, \texttt{Age-DMdur}, as covariate. Also note that we used \texttt{I(lex.Cst=="Ins")} instead of just \texttt{lex.Cst}, because \texttt{coxph} assigns design matrix columns to all levels of \texttt{lex.Cst}, also those not present in data, which would give \texttt{NA}s among the parameter estimates and \texttt{NA}s as mortality outcomes. We see that the effect of insulin and the other covariates are pretty much the same as in the two-time-scale model. We can simulate from this model too; there is no restrictions on what type of model can be used for different transitions \begin{Schunk} \begin{Sinput} > Tr.c <- list( "DM" = list( "Ins" = Tr$DM$Ins, + "Dead" = Cox.Dead ), + "Ins" = list( "Dead(Ins)" = Cox.Dead ) ) > system.time( simC <- simLexis( Tr.c, + ini, + t.range = 12, + N = Nsim ) ) \end{Sinput} \begin{Soutput} user system elapsed 20.557 1.208 20.873 \end{Soutput} \begin{Sinput} > summary( simC, by="sex" ) \end{Sinput} \begin{Soutput} $M Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 1714 2039 1247 0 5000 3286 37280.04 5000 Ins 0 1348 0 691 2039 691 9990.38 2039 Sum 1714 3387 1247 691 7039 3977 47270.42 5000 $F Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 2332 1702 966 0 5000 2668 42168.20 5000 Ins 0 1313 0 389 1702 389 9083.14 1702 Sum 2332 3015 966 389 6702 3057 51251.34 5000 \end{Soutput} \end{Schunk} \section{Reporting the simulation results} We can now tabulate the number of persons in each state at a predefined set of times on a given time scale. Note that in order for this to be sensible, the \texttt{from} argument would normally be equal to the starting time for the simulated individuals. \begin{Schunk} \begin{Sinput} > system.time( + nSt <- nState( subset(simL,sex=="M"), + at=seq(0,11,0.2), from=1995, time.scale="Per" ) ) \end{Sinput} \begin{Soutput} user system elapsed 0.776 0.000 0.776 \end{Soutput} \begin{Sinput} > nSt[1:10,] \end{Sinput} \begin{Soutput} State when DM Ins Dead Dead(Ins) 1995 5000 0 0 0 1995.2 4932 38 29 1 1995.4 4843 93 62 2 1995.6 4773 137 87 3 1995.8 4702 179 116 3 1996 4621 226 148 5 1996.2 4547 269 179 5 1996.4 4469 309 212 10 1996.6 4407 342 237 14 1996.8 4322 386 275 17 \end{Soutput} \end{Schunk} We see that as time goes by, the 5000 men slowly move away from the starting state (\texttt{DM}). Based on this table (\texttt{nSt} is a table) we can now compute the fractions in each state, or, rather more relevant, the cumulative fraction across the states in some specified order, so that a plot of the stacked probabilities can be made, using either the default rather colorful layout, or a more minimalist version (both in figure \ref{fig:pstate0}): \begin{Schunk} \begin{Sinput} > pM <- pState( nSt, perm=c(1,2,4,3) ) > head( pM ) \end{Sinput} \begin{Soutput} State when DM Ins Dead(Ins) Dead 1995 1.0000 1.0000 1.0000 1 1995.2 0.9864 0.9940 0.9942 1 1995.4 0.9686 0.9872 0.9876 1 1995.6 0.9546 0.9820 0.9826 1 1995.8 0.9404 0.9762 0.9768 1 1996 0.9242 0.9694 0.9704 1 \end{Soutput} \begin{Sinput} > par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) > plot( pM ) > plot( pM, border="black", col="transparent", lwd=3 ) > text( rep(as.numeric(rownames(pM)[nrow(pM)-1]),ncol(pM)), + pM[nrow(pM),]-diff(c(0,pM[nrow(pM),]))/5, + colnames( pM ), adj=1 ) > box( col="white", lwd=3 ) > box() \end{Sinput} \end{Schunk} \insfig{pstate0}{1.0}{Default layout of the \textrm{\tt plot.pState} graph (left), and a version with the state probabilities as lines and annotation of states.} A more useful set-up of the graph would include a more through annotation and sensible choice of colors, as seen in figure \ref{fig:pstatex}: \begin{Schunk} \begin{Sinput} > clr <- c("limegreen","orange") > # expand with a lighter version of the two chosen colors > clx <- c( clr, rgb( t( col2rgb( clr[2:1] )*2 + rep(255,3) ) / 3, max=255 ) ) > par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) > # Men > plot( pM, col=clx, xlab="Date of FU" ) > lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) > mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) > mtext( "Survival curve", side=3, line=1.5, adj=0 ) > mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) > mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) > axis( side=4 ) > axis( side=4, at=1:19/20, labels=FALSE ) > axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) > # Women > pF <- pState( nState( subset(simL,sex=="F"), + at=seq(0,11,0.2), + from=1995, + time.scale="Per" ), + perm=c(1,2,4,3) ) > plot( pF, col=clx, xlab="Date of FU" ) > lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) > mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) > mtext( "Survival curve", side=3, line=1.5, adj=0 ) > mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) > mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) > axis( side=4 ) > axis( side=4, at=1:19/20, labels=FALSE ) > axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) \end{Sinput} \end{Schunk} \insfig{pstatex}{1.0}{\textrm{\tt plot.pState} graphs where persons ever on insulin are given in orange and persons never on insulin in green, and the overall survival (dead over the line) as a black line.} If we instead wanted to show the results on the age-scale, we would use age as timescale when constructing the probabilities; otherwise the code is pretty much the same as before (Figure \ref{fig:pstatey}): \begin{Schunk} \begin{Sinput} > par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) > # Men > pM <- pState( nState( subset(simL,sex=="M"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > plot( pM, col=clx, xlab="Age" ) > lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) > mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) > mtext( "Survival curve", side=3, line=1.5, adj=0 ) > mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) > mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) > axis( side=4 ) > axis( side=4, at=1:19/20, labels=FALSE ) > axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) > axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) > # Women > pF <- pState( nState( subset(simL,sex=="F"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > plot( pF, col=clx, xlab="Age" ) > lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) > mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) > mtext( "Survival curve", side=3, line=1.5, adj=0 ) > mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) > mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) > axis( side=4 ) > axis( side=4, at=1:9/10, labels=FALSE ) > axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) > axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) \end{Sinput} \end{Schunk} Note the several statements with \texttt{axis(side=4,...}; they are necessary to get the fine tick-marks in the right hand side of the plots that you will need in order to read off the probabilities at 2006 (or 71 years). \insfig{pstatey}{1.0}{\textrm{\tt plot.pState} graphs where persons ever on insulin are given in orange and persons never on insulin in green, and the overall survival (dead over the line) as a black line.} \subsection{Comparing predictions from different models} We have actually fitted different models for the transitions, and we have simulated Lexis objects from all three approaches, so we can plot these predictions on top of each other: \begin{Schunk} \begin{Sinput} > PrM <- pState( nState( subset(simP,sex=="M"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > PrF <- pState( nState( subset(simP,sex=="F"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > CoxM <- pState( nState( subset(simC,sex=="M"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > CoxF <- pState( nState( subset(simC,sex=="F"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) > plot( pM, border="black", col="transparent", lwd=3 ) > lines( PrM, border="blue" , col="transparent", lwd=3 ) > lines( CoxM, border="red" , col="transparent", lwd=3 ) > text( 60.5, 0.05, "M" ) > box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) > plot( pF, border="black", col="transparent", lwd=3 ) > lines( PrF, border="blue" , col="transparent", lwd=3 ) > lines( CoxF, border="red" , col="transparent", lwd=3 ) > text( 60.5, 0.05, "F" ) > box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) \end{Sinput} \end{Schunk} \insfig{comp-0}{1.0}{Comparison of the simulated state occupancy probabilities using separate Poisson models for the mortality rates with and without insulin (black) and using proportional hazards Poisson models (blue) and Cox-models with diabetes duration as timescale and age at diabetes diagnosis as covariate (red).} From figure \ref{fig:comp-0} it is clear that the two proportional hazards models (blue and red curves) produce pretty much the same estimates of the state occupancy probabilities over time, but also that they relative to the model with separately estimated transition intensities overestimates the probability of being alive without insulin and underestimates the probabilities of being dead without insulin. However both the overall survival, and the fraction of persons on insulin are quite well in agreement with the more elaborate model. Thus the proportional hazards models overestimate the relative mortality of the insulin treated diabetes patients relative to the non-insulin treated. Interestingly, we also see a bump in the estimated probabilities from the Cox-model based model, but this is entirely an artifact that comes from the estimation method for the baseline hazard of the Cox-model that lets the (cumulative) hazard have large jumps at event times where the risk set is small. So also here it shows up that an assumption of continuous underlying hazards leads to more credible estimates. \chapter{Simulation of transitions in multistate models} \section{Theory} Suppose that the rate functions for the transitions out of the current state to, say, 3 different states are $\lambda_1$, $\lambda_2$ and $\lambda_3$, and the corresponding cumulative rates are $\Lambda_1$, $\Lambda_2$ and $\Lambda_3$, and we want to simulate an exit time and an exit state (that is either 1, 2 or 3). This can be done in two slightly different ways: \begin{enumerate} \item First time, then state: \begin{enumerate} \item Compute the survival function, $S(t) = \exp\bigl(-\Lambda_1(t)-\Lambda_2(t)-\Lambda_3(t)\bigr)$ \item Simulate a random U(0,1) variate, $u$, say. \item The simulated exit time is then the solution $t_u$ to the equation $S(t_u) = u \quad \Leftrightarrow \quad \sum_j\Lambda_j(t_u) = -\log(u)$. \item A simulated transition at $t_u$ is then found by simulating a random draw from the multinomial distribution with probabilities $p_i=\lambda_i(t_u) / \sum_j\lambda_j(t_u)$. \end{enumerate} \item Separate cumulative incidences: \begin{enumerate} \item Simulate 3 independent U(0,1) random variates $u_1$, $u_2$ and $u_3$. \item Solve the equations $\Lambda_i(t_i)=-\log(u_i), i=1,2,3$ and get $(t_1,t_2,t_3)$. \item The simulated survival time is then $\min(t_1,t_2,t_3)$, and the simulated transition is to the state corresponding to this, that is $k \in \{1,2,3\}$, where $t_k=\min(t_1,t_2,t_3)$ \end{enumerate} \end{enumerate} The intuitive argument is that with three possible transition there are 3 independent processes running, but only the first transition is observed. The latter approach is used in the implementation in \texttt{simLexis}. The formal argument for the equality of the two approaches goes as follows: \begin{enumerate} \item Equality of the transition times: \begin{enumerate} \item In the first approach we simulate from a distribution with cumulative rate $\Lambda_1(t)+\Lambda_2(t)+\Lambda_3(t)$, hence from a distribution with survival function: \begin{align*} S(t) & = \exp\bigl(-(\Lambda_1(t)+\Lambda_2(t)+\Lambda_3(t))\bigr) \\ & = \exp\bigl(-\Lambda_1(t)\bigr)\times \exp\bigl(-\Lambda_2(t)\bigr)\times \exp\bigl(-\Lambda_3(t)\bigr) \end{align*} \item In the second approach we choose the smallest of three independent survival times, with survival functions $\exp(-\Lambda_i), i=1,2,3$. Now, the survival function for the minimum of three independent survival times is: \begin{align*} S_\text{min}(t) & = \pmat{\min(t_1,t_2,t_3)>t} \\ & = \pmat{t_1>t} \times \pmat{t_2>t} \times \pmat{t_3>t} \\ & = \exp\bigl(-\Lambda_1(t)\bigr)\times \exp\bigl(-\Lambda_2(t)\bigr)\times \exp\bigl(-\Lambda_3(t)\bigr) \end{align*} which is the same survival function as derived above. \end{enumerate} \item Type of transition: \begin{enumerate} \item In the first instance the probability of a transition to state $i$, conditional on the transition time being $t$, is as known from standard probability theory: $\lambda_i(t)/\bigl(\lambda_1(t)+\lambda_2(t)+\lambda_3(t)\bigr)$. \item In the second approach we choose the transition corresponding to the the smallest of the transition times. So when we condition on the event that a transition takes place at time $t$, we have to show that the conditional probability that the smallest of the three simulated transition times was actually the $i$th, is as above. But conditional on \emph{survival} till $t$, the probabilities that events of type $1,2,3$ takes place in the interval $(t,t+\dif t)$ are $\lambda_1(t)\dif t$, $\lambda_2(t)\dif t$ and $\lambda_1(t)\dif t$, respectively (assuming that the probability of more than one event in the interval of length $\dif t$ is 0). Hence the conditional probabilities \emph{given a transition time} in $(t,t+\dif t)$ is: \[ \frac{\lambda_i(t)\dif t}{\lambda_1(t)\dif t+\lambda_2(t)\dif t+\lambda_3(t)\dif t}= \frac{\lambda_i(t)}{\lambda_1(t)+\lambda_2(t)+\lambda_3(t)} \] --- exactly as above. \end{enumerate} \end{enumerate} \section{Components of \texttt{simLexis}} This section explains the actually existing code for \texttt{simLexis}, as it is in the current version of \texttt{Epi}. % The following code sources the originally formatted code in % simLexis.R in order to make it printable with all the formatting and % comments in it. However the sourcing does not work when compiling % the vignettes in R CMD build. So when checking the code we comment % this out by putting eval=FALSE, and moreover, because it is only % simLexis that is exported, we also need to bring the functions simX, % sim1, lint, get.next and chop.lex into the workspace. So depending % on whether we actually construct the pdf for the inst/doc folder or % test (upload) the package, one of the following to chunks are run % with eval=FALSE and the other with eval=TRUE % When compiling the published vignette \begin{Schunk} \begin{Sinput} > source( "../R/simLexis.R", keep.source=TRUE ) \end{Sinput} \end{Schunk} % When checking the package The function \texttt{simLexis} takes a \texttt{Lexis} object as input. This defines the initial state(s) and times of the start for a number of persons. Since the purpose is to simulate a history through the estimated multistate model, the input values of the outcome variables \texttt{lex.Xst} and \texttt{lex.dur} are ignored --- the aim is to simulate values for them. Note however that the attribute \texttt{time.since} must be present in the object. This is used for initializing timescales defined as time since entry into a particular state, it is a character vector of the same length as the \texttt{time.scales} attribute, with value equal to a state name if the corresponding time scale is defined as time since entry into that state. In this example the 4th timescale is time since entry into the \texttt{Ins} state, and hence: \begin{Schunk} \begin{Sinput} > cbind( + attr( ini, "time.scales" ), + attr( ini, "time.since" ) ) \end{Sinput} \begin{Soutput} [,1] [,2] [1,] "Per" "" [2,] "Age" "" [3,] "DMdur" "" [4,] "t.Ins" "Ins" \end{Soutput} \end{Schunk} \texttt{Lexis} objects will have this attribute set for time scales created using \texttt{cutLexis}. The other necessary argument is a transition object \texttt{Tr}, which is a list of lists. The elements of the lists should be \texttt{glm} objects derived by fitting Poisson models to a \texttt{Lexis} object representing follow-up data in a multistate model. It is assumed (but not checked) that timescales enter in the model via the timescales of the \texttt{Lexis} object. Formally, there are no assumptions about how \texttt{lex.dur} enters in the model. Optional arguments are \texttt{t.range}, \texttt{n.int} or \texttt{time.pts}, specifying the times after entry at which the cumulative rates will be computed (the maximum of which will be taken as the censoring time), and \texttt{N} a scalar or numerical vector of the number of persons with a given initial state each record of the \texttt{init} object should represent. The central part of the functions uses a \texttt{do.call} / \texttt{lapply} / \texttt{split} construction to do simulations for different initial states. This is the construction in the middle that calls \texttt{simX}. \texttt{simLexis} also calls \texttt{get.next} which is further detailed below. \begin{Schunk} \begin{Sinput} > simLexis \end{Sinput} \begin{Soutput} function (Tr, init, N = 1, lex.id, t.range = 20, n.int = 101, time.pts = seq(0, t.range, length.out = n.int)) { if (time.pts[1] != 0) stop("First time point must be 0, time.pts[1:3]= ", time.pts[1:3]) if (!missing(N)) { if (length(N) == 1) init <- init[rep(1:nrow(init), each = N), ] else init <- init[rep(1:nrow(init), N), ] } if (!missing(lex.id)) { if (length(lex.id) == nrow(init)) init$lex.id <- lex.id else init$lex.id <- 1:nrow(init) } else init$lex.id <- 1:nrow(init) if (is.null(tS <- attr(init, "time.scales"))) stop("No time.scales attribute for init") if (is.null(tF <- attr(init, "time.since"))) { attr(init, "time.since") <- tF <- rep("", tS) warning("'time.since' attribute set to blanks") } np <- length(time.pts) tr.st <- names(Tr) sf <- NULL nxt <- init[init$lex.Cst %in% tr.st, ] if (nrow(nxt) < nrow(init)) { tt <- table(init$lex.Cst) tt <- tt[tt > 0] nt <- length(tt) warning("\nSome initiators start in a absorbing state\n", "Initiator states represented are: ", paste(rbind(names(tt), rep(":", nt), paste(tt), rep(" ", nt)), collapse = ""), "\n", "Transient states are: ", paste(names(Tr), coll = " ")) if (nrow(nxt) == 0) stop("\nNo initiators in transient states!") } while (nrow(nxt) > 0) { nx <- do.call(rbind.data.frame, lapply(split(nxt, nxt$lex.Cst), simX, Tr, time.pts, tS)) sf <- rbind.data.frame(sf, nx) nxt <- get.next(nx, tr.st, tS, tF) } sf$lex.Xst <- factor(sf$lex.Xst, levels = levels(sf$lex.Cst)) sf$lex.Xst[is.na(sf$lex.Xst)] <- sf$lex.Cst[is.na(sf$lex.Xst)] nord <- match(c("lex.id", tS, "lex.dur", "lex.Cst", "lex.Xst"), names(sf)) noth <- setdiff(1:ncol(sf), nord) sf <- sf[order(sf$lex.id, sf[, tS[1]]), c(nord, noth)] rownames(sf) <- NULL attr(sf, "time.scales") <- tS attr(sf, "time.since") <- tF chop.lex(sf, tS, max(time.pts)) } \end{Soutput} \end{Schunk} \subsection{\texttt{simX}} \texttt{simX} is called by \texttt{simLexis} and simulates transition-times and -types for a set of patients assumed to be in the same state. It is called from \texttt{simLexis} with a data frame as argument, uses the state in \texttt{lex.Cst} to select the relevant component of \texttt{Tr} and compute predicted cumulative intensities for all states reachable from this state. Note that it is here the switch between \texttt{glm}, \texttt{coxph} and objects of class \texttt{function} is made. The dataset on which this prediction is done has \texttt{length(time.pts)} rows per person. \begin{Schunk} \begin{Sinput} > simX \end{Sinput} \begin{Soutput} function (nd, Tr, time.pts, tS) { np <- length(time.pts) nr <- nrow(nd) if (nr == 0) return(NULL) cst <- as.character(unique(nd$lex.Cst)) if (length(cst) > 1) stop("More than one lex.Cst present:\n", cst, "\n") prfrm <- nd[rep(1:nr, each = np), ] prfrm[, tS] <- prfrm[, tS] + rep(time.pts, nr) prfrm$lex.dur <- il <- min(diff(time.pts)) prfrp <- prfrm prfrp[, "lex.dur"] <- 1 prfrp[, tS] <- prfrp[, tS] + il/2 rt <- data.frame(lex.id = prfrm$lex.id) for (i in 1:length(Tr[[cst]])) { if (inherits(Tr[[cst]][[i]], "glm")) rt <- cbind(rt, predict(Tr[[cst]][[i]], type = "response", newdata = prfrp) * il) else if (inherits(Tr[[cst]][[i]], "coxph")) rt <- cbind(rt, predict(Tr[[cst]][[i]], type = "expected", newdata = prfrm)) else if (is.function(Tr[[cst]][[i]])) rt <- cbind(rt, Tr[[cst]][[i]](prfrm)) else stop("Invalid object supplied as transition, elements of the list must be either:\n", "- a glm(poisson) object fitted to a Lexis object\n", "- a coxph object fitted to a Lexis object\n", "- a function that takes a Lexis object as argument and returns\n", " average rates for each record in the same units as lex.dur.") } names(rt)[-1] <- names(Tr[[cst]]) xx <- match(c("lex.dur", "lex.Xst"), names(nd)) if (any(!is.na(xx))) nd <- nd[, -xx[!is.na(xx)]] merge(nd, do.call(rbind, lapply(split(rt, rt$lex.id), sim1, time.pts)), by = "lex.id") } \end{Soutput} \end{Schunk} As we see, \texttt{simX} calls \texttt{sim1} which simulates the transition for one person. \subsection{\texttt{sim1}} The predicted cumulative intensities are fed, person by person, to \texttt{sim1} --- again via a \texttt{do.call} / \texttt{lapply} / \texttt{split} construction --- and the resulting time and state is appended to the \texttt{nd} data frame. This way we have simulated \emph{one} transition (time and state) for each person: \begin{Schunk} \begin{Sinput} > sim1 \end{Sinput} \begin{Soutput} function (rt, time.pts) { ci <- apply(rbind(0, rt[, -1, drop = FALSE]), 2, cumsum)[1:nrow(rt), , drop = FALSE] tt <- uu <- -log(runif(ncol(ci))) for (i in 1:ncol(ci)) tt[i] <- lint(ci[, i], time.pts, uu[i]) data.frame(lex.id = rt[1, 1], lex.dur = min(tt, na.rm = TRUE), lex.Xst = factor(if (min(tt) < max(time.pts)) colnames(ci)[tt == min(tt)] else NA)) } \end{Soutput} \end{Schunk} The \texttt{sim1} function uses \texttt{lint} to do linear interpolation. \subsection{\texttt{lint}} We do not use \texttt{approx} to do the linear interpolation, because this function does not do the right thing if the cumulative incidences (\texttt{ci}) are constant across a number of times. Therefore we have a custom made linear interpolator that does the interpolation exploiting the fact the the \texttt{ci} is non-decreasing and \texttt{tt} is strictly monotonously increasing: \begin{Schunk} \begin{Sinput} > lint \end{Sinput} \begin{Soutput} function (ci, tt, u) { if (any(diff(ci) < 0) | any(diff(tt) < 0)) stop("Non-increasing arguments") c.u <- min(c(ci[ci > u], max(ci))) c.l <- max(c(ci[ci < u], min(ci))) t.u <- min(c(tt[ci > u], max(tt))) t.l <- max(c(tt[ci < u], min(tt))) ifelse(c.u == c.l, t.l, t.l + (u - c.l)/(c.u - c.l) * (t.u - t.l)) } \end{Soutput} \end{Schunk} \subsection{\texttt{get.next}} We must repeat the simulation operation on those that have a simulated entry to a transient state, and also make sure that any time scales defined as time since entry to one of these states be initialized to 0 before a call to \texttt{simX} is made for these persons. This accomplished by the function \texttt{get.next}: \begin{Schunk} \begin{Sinput} > get.next \end{Sinput} \begin{Soutput} function (sf, tr.st, tS, tF) { if (nrow(sf) == 0) return(sf) nxt <- sf[sf$lex.Xst %in% tr.st, ] if (nrow(nxt) == 0) return(nxt) nxt[, tS] <- nxt[, tS] + nxt$lex.dur wh <- tF for (i in 1:length(wh)) if (wh[i] != "") nxt[nxt$lex.Xst == wh[i], tS[i]] <- 0 nxt$lex.Cst <- nxt$lex.Xst return(nxt) } \end{Soutput} \end{Schunk} \subsection{\texttt{chop.lex}} The operation so far has censored individuals \texttt{max(time.pts)} after \emph{each} new entry to a transient state. In order to groom the output data we use \texttt{chop.lex} to censor all persons at the same designated time after \emph{initial} entry. \begin{Schunk} \begin{Sinput} > chop.lex \end{Sinput} \begin{Soutput} function (obj, tS, cens) { zz <- entry(obj, 1, by.id = TRUE) ww <- merge(obj, data.frame(lex.id = as.numeric(names(zz)), cens = zz + cens)) ww <- ww[ww[, tS[1]] < ww$cens, ] x.dur <- pmin(ww$lex.dur, ww[, "cens"] - ww[, tS[1]]) ww$lex.Xst[x.dur < ww$lex.dur] <- ww$lex.Cst[x.dur < ww$lex.dur] ww$lex.dur <- pmin(x.dur, ww$lex.dur) ww } \end{Soutput} \end{Schunk} \section{Probabilities from simulated \texttt{Lexis} objects} Once we have simulated a Lexis object we will of course want to use it for estimating probabilities, so basically we will want to enumerate the number of persons in each state at a pre-specified set of time points. \subsection{\texttt{nState}} Since we are dealing with multistate model with potentially multiple time scales, it is necessary to define the timescale (\texttt{time.scale}), the starting point on this timescale (\texttt{from}) and the points after this where we compute the number of occupants in each state, (\texttt{at}). \begin{Schunk} \begin{Sinput} > nState \end{Sinput} \begin{Soutput} function (obj, at, from, time.scale = 1) { tS <- check.time.scale(obj, time.scale) TT <- tmat(obj) absorb <- rownames(TT)[apply(!is.na(TT), 1, sum) == 0] transient <- setdiff(rownames(TT), absorb) tab.frm <- obj[rep(1:nrow(obj), each = length(at)), c(tS, "lex.dur", "lex.Cst", "lex.Xst")] tab.frm$when <- rep(at, nrow(obj)) + from tab.tr <- tab.frm[tab.frm[, tS] <= tab.frm$when & tab.frm[, tS] + tab.frm$lex.dur > tab.frm$when, ] tab.tr$State <- tab.tr$lex.Cst tab.ab <- tab.frm[tab.frm[, tS] + tab.frm$lex.dur <= tab.frm$when & tab.frm$lex.Xst %in% absorb, ] tab.ab$State <- tab.ab$lex.Xst with(rbind(tab.ab, tab.tr), table(when, State)) } \end{Soutput} \end{Schunk} \subsection{\texttt{pState}, \texttt{plot.pState} and \texttt{lines.pState}} In order to plot probabilities of state-occupancy it is useful to compute cumulative probabilities across states in any given order; this is done by the function \texttt{pState}, which returns a matrix of class \texttt{pState}: \begin{Schunk} \begin{Sinput} > pState \end{Sinput} \begin{Soutput} function (nSt, perm = 1:ncol(nSt)) { tt <- t(apply(nSt[, perm], 1, cumsum)) tt <- sweep(tt, 1, tt[, ncol(tt)], "/") class(tt) <- c("pState", "matrix") tt } \end{Soutput} \end{Schunk} There is also a \texttt{plot} and \texttt{lines} method for the resulting \texttt{pState} objects: \begin{Schunk} \begin{Sinput} > plot.pState \end{Sinput} \begin{Soutput} function (x, col = rainbow(ncol(x)), border = "transparent", xlab = "Time", ylim = 0:1, ylab = "Probability", ...) { matplot(as.numeric(rownames(x)), x, type = "n", ylim = ylim, yaxs = "i", xaxs = "i", xlab = xlab, ylab = ylab, ...) lines.pState(x, col = col, border = border, ...) } \end{Soutput} \begin{Sinput} > lines.pState \end{Sinput} \begin{Soutput} function (x, col = rainbow(ncol(x)), border = "transparent", ...) { nc <- ncol(x) col <- rep(col, nc)[1:nc] border <- rep(border, nc)[1:nc] pSt <- cbind(0, x) for (i in 2:ncol(pSt)) { polygon(c(as.numeric(rownames(pSt)), rev(as.numeric(rownames(pSt)))), c(pSt[, i], rev(pSt[, i - 1])), col = col[i - 1], border = border[i - 1], ...) } } \end{Soutput} \end{Schunk} \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2011a} B~Carstensen and M~Plummer. \newblock Using {L}exis objects for multi-state models in {R}. \newblock {\em Journal of Statistical Software}, 38(6):1--18, 1 2011. \bibitem{Iacobelli.2013} S~Iacobelli and B~Carstensen. \newblock {Multiple time scales in multi-state models}. \newblock {\em Stat Med}, 32(30):5315--5327, Dec 2013. \bibitem{Plummer.2011} M~Plummer and B~Carstensen. \newblock Lexis: An {R} class for epidemiological studies with long-term follow-up. \newblock {\em Journal of Statistical Software}, 38(5):1--12, 1 2011. \end{thebibliography} \addcontentsline{toc}{chapter}{References} \end{document} Epi/vignettes/yl.tex0000644000176200001440000010621114003554036014146 0ustar liggesusers%\VignetteIndexEntry{Years of life lost (YLL)} \documentclass[a4paper,twoside,12pt]{report} \newcommand{\Title}{Years of Life Lost (YLL) to disease\\Diabetes in DK as example} \newcommand{\Tit}{YLL} \newcommand{\Version}{February 1.2} \newcommand{\Dates}{November 2017} \newcommand{\Where}{SDC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/Epi}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk}\\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./yll} \chapter{Theory and technicalities} This vignette for the \texttt{Epi} package describes the probabilistic and demographic background for and technical implementation of the \texttt{erl} and \texttt{yll} functions that computes the expected residual life time and years of life lost in an illness-death model. \section{Years of life lost (YLL)} \ldots to diabetes or any other disease for that matter. The general concept in calculation of ``years lost to\ldots'' is the comparison of the expected lifetime between two groups of persons; one with and one without disease (in this example DM). The expected lifetime is the area under the survival curve, so basically the exercise requires that two survival curves that are deemed relevant be available. The years of life lost is therefore just the area between the survival curves for those ``Well'', $S_W(t)$, and for those ``Diseased'', $S_D(t)$: \[ \YLL = \int_0^\infty S_W(t) - S_D(t) \dif t \] The time $t$ could of course be age, but it could also be ``time after age 50'' and the survival curves compared would then be survival curves \emph{conditional} on survival till age 50, and the YLL would be the years of life lost for a 50-year old person with diabetes. If we are referring to the expected lifetime we will more precisely use the label expected residual lifetime, ERL. \section{Constructing the survival curves} YLL can be computed in two different ways, depending on the way the survival curve and hence the expected lifetime of a person \emph{without} diabetes is computed: \begin{itemize} \item Assume that the ``Well'' persons are \emph{immune} to disease --- using only the non-DM mortality rates throughout for calculation of expected life time. \item Assume that the ``Well'' persons \emph{can} acquire the disease and thereby see an increased mortality, thus involving all three rates shown in figure \ref{fig:states}. \end{itemize} The former gives a higher YLL because the comparison is to persons assumed immune to DM (and yet with the same mortality as non-immune prior to diagnosis), the latter gives a more realistic picture of the comparison of group of persons with and without diabetes at a given age that can be interpreted in the real world. The differences can be illustrated by figure \ref{fig:states}; the immune approach corresponds to an assumption of $\lambda(t)=0$ in the calculation of the survival curve for a person in the ``Well'' state. Calculation of the survival of a diseased person already in the ``DM'' state is unaffected by assumptions about $\lambda$. \insfig{states}{0.7}{Illness-death model describing diabetes incidence and -mortality.} \subsection{Total mortality --- a shortcut?} A practical crude shortcut could be to compare the ERL in the diabetic population to the ERL for the \emph{entire} population (that is use the total mortality ignoring diabetes status). Note however that this approach also counts the mortality of persons that acquired the disease earlier, thus making the comparison population on average more ill than the population we aim at, namely those well at a given time, which only then become more gradually ill. How large these effects are can however be empirically explored, as we shall do later. \subsection{Disease duration} In the exposition above there is no explicit provision for the effect of disease duration, but if we were able to devise mortality rates for any combination of age and duration, this could be taken into account. There are however severe limitations in this as we in principle would want to have duration effects as long as the age-effects --- in principle for all $(a,d)$ where $d\leq A$, where $A$ is the age at which we condition. So even if we were only to compute ERL from age, say, 40 we would still need duration effects up to 60 years (namely to age 100). The incorporation of duration effects is in principle trivial from a computational point of view, but we would be forced to entertain models predicting duration effects way beyond what is actually observed disease duration in any practical case. \subsection{Computing integrals} The practical calculations of survival curves, ERL and YLL involves calculation of (cumulative) integrals of rates and functions of these as we shall see below. This is easy if we have a closed form expression of the function, so its value may be computed at any time point --- this will be the case if we model rates by smooth parametric functions. Computing the (cumulative) integral of a function is done as follows: \begin{itemize} \item Compute the value of the function (mortality rate for example) at the midpoints of a sequence of narrow equidistant intervals --- for example one- or three month intervals of age, say. \item Take the cumulative sum of these values multiplied by the interval length --- this will be a very close approximation to the cumulative integral evaluated at the end of each interval. \item If the intervals are really small (like 1/100 year), the distinction between the value at the middle and at the end of each interval becomes irrelevant. \end{itemize} Note that in the above it is assumed that the rates are given in units corresponding to the interval length --- or more precisely, as the cumulative rates over the interval. \section{Survival functions in the illness-death model} The survival functions for persons in the ``Well'' state can be computed under two fundamentally different scenarios, depending on whether persons in the ``Well'' state are assumed to be immune to the disease ($\lambda(a)=0$) or not. \subsection{Immune approach} In this case both survival functions for person in the two states are the usual simple transformation of the cumulative mortality rates: \[ S_W(a) = \exp\left(-\int_0^a\!\!\mu_W(u) \dif u \right), \qquad S_D(a) = \exp\left(-\int_0^a\!\!\mu_D(u) \dif u \right) \] \subsubsection{Conditional survival functions} If we want the \emph{conditional} survival functions given survival to age $A$, say, they are just: \[ S_W(a|A) = S_W(a)/S_W(A), \qquad S_D(a|A) = S_D(a)/S_D(A) \] \subsection{Non-immune approach} For a diseased person, the survival function in this states is the same as above, but the survival function for a person without disease (at age 0) is (see figure \ref{fig:states}): \[ S(a) = \ptxt{Well}\!(a) + \ptxt{DM}\!(a) \] In the appendix of the paper \cite{Carstensen.2008c} is an indication of how to compute the probability of being in any of the four states shown in figure \ref{fig:states}, which I shall repeat here: In terms of the rates, the probability of being in the ``Well'' box is simply the probability of escaping both death (at a rate of $\mu_W(a)$) and diabetes (at a rate of $\lambda(a)$): \[ \ptxt{Well}(a) = \exp\left(\!-\int_0^a\!\!\mu_W(u)+\lambda(u) \right) \dif u \] The probability of being alive with diabetes at age $a$, is computed given that diabetes occurred at age $s$ ($s data( DMepi ) \end{Sinput} \end{Schunk} The dataset \texttt{DMepi} contains diabetes events, deaths and person-years for persons without diabetes and deaths and person-years for persons with diabetes: \begin{Schunk} \begin{Sinput} > str( DMepi ) \end{Sinput} \begin{Soutput} 'data.frame': 4200 obs. of 8 variables: $ sex : Factor w/ 2 levels "M","F": 1 1 1 1 1 1 1 1 1 1 ... $ A : num 0 0 0 0 0 0 0 0 0 0 ... $ P : num 1996 1997 1998 1999 2000 ... $ D.DM: num 0 0 0 0 0 0 0 0 0 0 ... $ Y.DM: num 0.484 0.64 1.641 0.552 2.507 ... $ X : num 1 2 4 4 4 1 1 3 4 1 ... $ D.nD: num 28 19 20 11 21 16 21 15 16 16 ... $ Y.nD: num 35469 35085 34240 34056 34002 ... \end{Soutput} \begin{Sinput} > head( DMepi ) \end{Sinput} \begin{Soutput} sex A P D.DM Y.DM X D.nD Y.nD 2 M 0 1996 0 0.4839151 1 28 35468.92 3 M 0 1997 0 0.6399726 2 19 35085.18 4 M 0 1998 0 1.6406571 4 20 34240.14 5 M 0 1999 0 0.5523614 4 11 34055.52 6 M 0 2000 0 2.5065024 4 21 34002.22 7 M 0 2001 0 0.1184120 1 16 34177.39 \end{Soutput} \end{Schunk} For each combination of sex, age, period and date of birth in 1 year age groups, we have the person-years in the ``Well'' (\texttt{Y.nD}) and the ``DM'' (\texttt{Y.DM}) states, as well as the number of deaths from these (\texttt{D.nD}, \texttt{D.DM}) and the number of incident diabetes cases from the ``Well'' state (\texttt{X}). In order to compute the years of life lost to diabetes and how this has changed over time, we fit models for the mortality and incidence of both groups (and of course, separately for men and women). The models we use will be age-period-cohort models \cite{Carstensen.2007a} providing estimated mortality rates for ages 0--99 and dates 1.1.1996--1.1.2016. First we transform the age and period variables to reflect the mean age and period in each of the Lexis triangles. We also compute the total number of deaths and amount of risk time, as we are going to model the total mortality as well. Finally we restrict the dataset to ages over 30 only: \begin{Schunk} \begin{Sinput} > DMepi <- transform( subset( DMepi, A>30 ), + D.T = D.nD + D.DM, + Y.T = Y.nD + Y.DM ) > head(DMepi) \end{Sinput} \begin{Soutput} sex A P D.DM Y.DM X D.nD Y.nD D.T Y.T 684 M 31 1996 0 305.9671 29 51 44161.83 51 44467.80 685 M 31 1997 2 326.2074 31 54 45508.64 56 45834.85 686 M 31 1998 2 340.1759 34 46 44954.45 48 45294.63 687 M 31 1999 5 330.9918 24 39 41148.97 44 41479.96 688 M 31 2000 1 332.0876 41 26 39027.30 27 39359.39 689 M 31 2001 2 310.8467 35 33 37975.78 35 38286.63 \end{Soutput} \end{Schunk} With the correct age and period coding in the Lexis triangles, we fit models for the mortalities and incidences. Note that we for comparative purposes also fit a model for the \emph{total} mortality, ignoring the \begin{Schunk} \begin{Sinput} > # Knots used in all models > ( a.kn <- seq(40,95,,6) ) \end{Sinput} \begin{Soutput} [1] 40 51 62 73 84 95 \end{Soutput} \begin{Sinput} > ( p.kn <- seq(1997,2015,,4) ) \end{Sinput} \begin{Soutput} [1] 1997 2003 2009 2015 \end{Soutput} \begin{Sinput} > ( c.kn <- seq(1910,1976,,6) ) \end{Sinput} \begin{Soutput} [1] 1910.0 1923.2 1936.4 1949.6 1962.8 1976.0 \end{Soutput} \begin{Sinput} > # Check the number of events between knots > ae <- xtabs( cbind(D.nD,D.DM,X) ~ cut(A,c(30,a.kn,Inf)) + sex, data=DMepi ) > ftable( addmargins(ae,1), col.vars=3:2 ) \end{Sinput} \begin{Soutput} D.nD D.DM X sex M F M F M F cut(A, c(30, a.kn, Inf)) (30,40] 9135 4650 597 277 12080 9648 (40,51] 25535 15784 2947 1439 35445 23925 (51,62] 59698 40171 10838 5253 60539 40034 (62,73] 106519 81253 26197 14299 55908 44221 (73,84] 158365 156678 34510 28834 27985 30381 (84,95] 100880 179466 16194 25317 5272 8967 (95,Inf] 6095 21414 640 1928 90 288 Sum 466227 499416 91923 77347 197319 157464 \end{Soutput} \begin{Sinput} > pe <- xtabs( cbind(D.nD,D.DM,X) ~ cut(P,c(1990,p.kn,Inf)) + sex, data=DMepi ) > ftable( addmargins(pe,1), col.vars=3:2 ) \end{Sinput} \begin{Soutput} D.nD D.DM X sex M F M F M F cut(P, c(1990, p.kn, Inf)) (1990,1997] 51569 53567 6407 5990 13175 10960 (1997,2003] 144136 155695 22390 19922 49805 41277 (2003,2009] 131159 141782 26079 22249 60554 48066 (2009,2015] 119812 127714 31285 24704 63440 49457 (2015,Inf] 19551 20658 5762 4482 10345 7704 Sum 466227 499416 91923 77347 197319 157464 \end{Soutput} \begin{Sinput} > ce <- xtabs( cbind(D.nD,D.DM,X) ~ cut(P-A,c(-Inf,c.kn,Inf)) + sex, data=DMepi ) > ftable( addmargins(ce,1), col.vars=3:2 ) \end{Sinput} \begin{Soutput} D.nD D.DM X sex M F M F M F cut(P - A, c(-Inf, c.kn, Inf)) (-Inf,1.91e+03] 19679 49020 2004 4446 599 1416 (1.91e+03,1.92e+03] 129799 189192 19780 26870 10665 15275 (1.92e+03,1.94e+03] 158953 152454 35667 28471 37850 36659 (1.94e+03,1.95e+03] 99058 72432 25494 13074 71489 50631 (1.95e+03,1.96e+03] 44129 28315 7534 3731 51750 34255 (1.96e+03,1.98e+03] 13598 7484 1373 720 22942 17689 (1.98e+03, Inf] 1011 519 71 35 2024 1539 Sum 466227 499416 91923 77347 197319 157464 \end{Soutput} \begin{Sinput} > # Fit an APC-model for all transitions, seperately for men and women > mW.m <- glm( D.nD ~ -1 + Ns(A ,knots=a.kn,int=TRUE) + + Ns( P,knots=p.kn,ref=2005) + + Ns(P-A,knots=c.kn,ref=1950), + offset = log(Y.nD), + family = poisson, + data = subset( DMepi, sex=="M" ) ) > mD.m <- update( mW.m, D.DM ~ . , offset=log(Y.DM) ) > mT.m <- update( mW.m, D.T ~ . , offset=log(Y.T ) ) > lW.m <- update( mW.m, X ~ . ) > # Model for women > mW.f <- update( mW.m, data = subset( DMepi, sex=="F" ) ) > mD.f <- update( mD.m, data = subset( DMepi, sex=="F" ) ) > mT.f <- update( mT.m, data = subset( DMepi, sex=="F" ) ) > lW.f <- update( lW.m, data = subset( DMepi, sex=="F" ) ) \end{Sinput} \end{Schunk} \section{Residual life time and years lost to DM} We now collect the estimated years of life lost classified by method (immune assumption or not), sex, age and calendar time: \begin{Schunk} \begin{Sinput} > a.ref <- 30:90 > p.ref <- 1996:2016 > aYLL <- NArray( list( type = c("Imm","Tot","Sus"), + sex = levels( DMepi$sex ), + age = a.ref, + date = p.ref ) ) > str( aYLL ) \end{Sinput} \begin{Soutput} logi [1:3, 1:2, 1:61, 1:21] NA NA NA NA NA NA ... - attr(*, "dimnames")=List of 4 ..$ type: chr [1:3] "Imm" "Tot" "Sus" ..$ sex : chr [1:2] "M" "F" ..$ age : chr [1:61] "30" "31" "32" "33" ... ..$ date: chr [1:21] "1996" "1997" "1998" "1999" ... \end{Soutput} \begin{Sinput} > system.time( + for( ip in p.ref ) + { + nd <- data.frame( A = seq(30,90,0.2)+0.1, + P = ip, + Y.nD = 1, + Y.DM = 1, + Y.T = 1 ) + muW.m <- ci.pred( mW.m, nd )[,1] + muD.m <- ci.pred( mD.m, nd )[,1] + muT.m <- ci.pred( mT.m, nd )[,1] + lam.m <- ci.pred( lW.m, nd )[,1] + muW.f <- ci.pred( mW.f, nd )[,1] + muD.f <- ci.pred( mD.f, nd )[,1] + muT.f <- ci.pred( mT.f, nd )[,1] + lam.f <- ci.pred( lW.f, nd )[,1] + aYLL["Imm","M",,paste(ip)] <- yll( int=0.2, muW.m, muD.m, lam=NULL, + A=a.ref, age.in=30, note=FALSE )[-1] + aYLL["Imm","F",,paste(ip)] <- yll( int=0.2, muW.f, muD.f, lam=NULL, + A=a.ref, age.in=30, note=FALSE )[-1] + aYLL["Tot","M",,paste(ip)] <- yll( int=0.2, muT.m, muD.m, lam=NULL, + A=a.ref, age.in=30, note=FALSE )[-1] + aYLL["Tot","F",,paste(ip)] <- yll( int=0.2, muT.f, muD.f, lam=NULL, + A=a.ref, age.in=30, note=FALSE )[-1] + aYLL["Sus","M",,paste(ip)] <- yll( int=0.2, muW.m, muD.m, lam=lam.m, + A=a.ref, age.in=30, note=FALSE )[-1] + aYLL["Sus","F",,paste(ip)] <- yll( int=0.2, muW.f, muD.f, lam=lam.f, + A=a.ref, age.in=30, note=FALSE )[-1] + } ) \end{Sinput} \begin{Soutput} user system elapsed 16.741 8.250 14.896 \end{Soutput} \begin{Sinput} > round( ftable( aYLL[,,seq(1,61,10),], col.vars=c(3,2) ), 1 ) \end{Sinput} \begin{Soutput} age 30 40 50 60 70 80 90 sex M F M F M F M F M F M F M F type date Imm 1996 11.3 10.2 9.4 9.1 7.4 7.6 5.4 5.9 3.4 3.8 1.5 1.6 0.0 0.0 1997 11.1 9.9 9.2 8.9 7.3 7.4 5.3 5.7 3.3 3.7 1.4 1.5 0.0 0.0 1998 10.9 9.7 9.1 8.6 7.2 7.2 5.3 5.5 3.3 3.6 1.4 1.5 0.0 0.0 1999 10.7 9.4 9.0 8.4 7.1 7.0 5.2 5.3 3.3 3.5 1.4 1.5 0.0 0.0 2000 10.5 9.1 8.8 8.2 6.9 6.8 5.1 5.1 3.2 3.4 1.4 1.4 0.0 0.0 2001 10.3 8.9 8.6 7.9 6.8 6.6 5.0 5.0 3.1 3.2 1.3 1.4 0.0 0.0 2002 10.0 8.6 8.4 7.7 6.6 6.3 4.9 4.8 3.1 3.1 1.3 1.3 0.0 0.0 2003 9.7 8.3 8.2 7.4 6.4 6.1 4.7 4.6 3.0 3.0 1.3 1.3 0.0 0.0 2004 9.4 8.0 7.9 7.1 6.2 5.9 4.5 4.4 2.8 2.8 1.2 1.2 0.0 0.0 2005 9.0 7.6 7.6 6.9 6.0 5.6 4.4 4.1 2.7 2.6 1.1 1.1 0.0 0.0 2006 8.6 7.3 7.4 6.6 5.8 5.4 4.2 3.9 2.6 2.5 1.1 1.1 0.0 0.0 2007 8.3 7.0 7.1 6.3 5.5 5.2 4.0 3.8 2.5 2.4 1.0 1.0 0.0 0.0 2008 8.0 6.8 6.8 6.1 5.4 5.0 3.8 3.6 2.4 2.2 1.0 0.9 0.0 0.0 2009 7.7 6.6 6.6 6.0 5.2 4.9 3.7 3.5 2.3 2.1 0.9 0.9 0.0 0.0 2010 7.5 6.4 6.5 5.8 5.1 4.8 3.7 3.4 2.2 2.1 0.9 0.9 0.0 0.0 2011 7.4 6.3 6.4 5.8 5.1 4.7 3.6 3.4 2.2 2.0 0.9 0.8 0.0 0.0 2012 7.3 6.3 6.4 5.7 5.1 4.7 3.6 3.3 2.2 2.0 0.9 0.8 0.0 0.0 2013 7.3 6.2 6.4 5.7 5.1 4.7 3.6 3.3 2.2 2.0 0.9 0.8 0.0 0.0 2014 7.3 6.2 6.4 5.7 5.1 4.7 3.7 3.4 2.2 2.0 0.9 0.8 0.0 0.0 2015 7.3 6.2 6.4 5.7 5.2 4.8 3.7 3.4 2.3 2.0 0.9 0.8 0.0 0.0 2016 7.3 6.2 6.4 5.7 5.2 4.8 3.8 3.4 2.3 2.0 0.9 0.8 0.0 0.0 Tot 1996 10.7 9.8 8.8 8.7 6.9 7.2 5.0 5.5 3.1 3.5 1.3 1.4 0.0 0.0 1997 10.5 9.5 8.6 8.4 6.7 7.0 4.9 5.3 3.0 3.4 1.3 1.4 0.0 0.0 1998 10.3 9.2 8.5 8.2 6.6 6.8 4.8 5.1 3.0 3.3 1.3 1.4 0.0 0.0 1999 10.0 8.9 8.3 7.9 6.5 6.5 4.7 4.9 2.9 3.2 1.3 1.3 0.0 0.0 2000 9.8 8.7 8.1 7.7 6.3 6.3 4.6 4.7 2.9 3.1 1.2 1.3 0.0 0.0 2001 9.6 8.4 7.9 7.4 6.2 6.1 4.5 4.6 2.8 2.9 1.2 1.2 0.0 0.0 2002 9.3 8.1 7.7 7.2 6.0 5.9 4.3 4.4 2.7 2.8 1.2 1.2 0.0 0.0 2003 9.0 7.8 7.5 6.9 5.8 5.6 4.2 4.2 2.6 2.7 1.1 1.1 0.0 0.0 2004 8.6 7.5 7.2 6.6 5.6 5.4 4.0 4.0 2.5 2.5 1.1 1.1 0.0 0.0 2005 8.3 7.1 6.9 6.4 5.3 5.1 3.8 3.7 2.4 2.4 1.0 1.0 0.0 0.0 2006 7.9 6.8 6.6 6.1 5.1 4.9 3.6 3.6 2.2 2.2 0.9 0.9 0.0 0.0 2007 7.6 6.5 6.4 5.9 4.9 4.7 3.4 3.4 2.1 2.1 0.9 0.9 0.0 0.0 2008 7.3 6.3 6.1 5.6 4.7 4.5 3.3 3.2 2.0 2.0 0.8 0.8 0.0 0.0 2009 7.0 6.1 5.9 5.5 4.5 4.4 3.2 3.1 1.9 1.9 0.8 0.8 0.0 0.0 2010 6.8 5.9 5.8 5.4 4.4 4.3 3.1 3.0 1.8 1.8 0.8 0.7 0.0 0.0 2011 6.7 5.8 5.7 5.3 4.4 4.3 3.0 3.0 1.8 1.7 0.7 0.7 0.0 0.0 2012 6.6 5.8 5.6 5.2 4.3 4.2 3.0 2.9 1.8 1.7 0.7 0.7 0.0 0.0 2013 6.5 5.7 5.6 5.2 4.3 4.2 3.0 2.9 1.8 1.7 0.7 0.7 0.0 0.0 2014 6.5 5.7 5.6 5.2 4.4 4.2 3.0 2.9 1.8 1.7 0.7 0.7 0.0 0.0 2015 6.4 5.6 5.6 5.2 4.4 4.2 3.1 2.9 1.8 1.7 0.7 0.7 0.0 0.0 2016 6.4 5.6 5.6 5.2 4.4 4.3 3.1 3.0 1.8 1.7 0.8 0.7 0.0 0.0 Sus 1996 10.3 9.4 8.4 8.4 6.6 7.0 5.0 5.5 3.2 3.6 1.4 1.5 0.0 0.0 1997 10.1 9.2 8.3 8.2 6.5 6.8 4.9 5.3 3.1 3.5 1.4 1.5 0.0 0.0 1998 9.9 8.9 8.1 7.9 6.4 6.6 4.8 5.1 3.1 3.4 1.4 1.5 0.0 0.0 1999 9.7 8.6 8.0 7.7 6.3 6.4 4.7 4.9 3.1 3.3 1.4 1.4 0.0 0.0 2000 9.4 8.3 7.8 7.4 6.1 6.2 4.6 4.7 3.0 3.2 1.3 1.4 0.0 0.0 2001 9.2 8.1 7.6 7.2 6.0 5.9 4.5 4.5 2.9 3.0 1.3 1.3 0.0 0.0 2002 8.9 7.8 7.4 6.9 5.8 5.7 4.4 4.4 2.8 2.9 1.3 1.3 0.0 0.0 2003 8.6 7.5 7.2 6.7 5.6 5.5 4.2 4.2 2.7 2.8 1.2 1.2 0.0 0.0 2004 8.3 7.1 6.9 6.4 5.4 5.3 4.0 4.0 2.6 2.6 1.2 1.2 0.0 0.0 2005 7.9 6.8 6.6 6.1 5.2 5.0 3.8 3.8 2.5 2.5 1.1 1.1 0.0 0.0 2006 7.5 6.5 6.3 5.9 5.0 4.8 3.7 3.6 2.4 2.3 1.0 1.0 0.0 0.0 2007 7.2 6.3 6.1 5.6 4.7 4.6 3.5 3.4 2.3 2.2 1.0 1.0 0.0 0.0 2008 6.9 6.0 5.9 5.5 4.6 4.5 3.4 3.3 2.2 2.1 0.9 0.9 0.0 0.0 2009 6.7 5.8 5.7 5.3 4.4 4.3 3.3 3.2 2.1 2.0 0.9 0.9 0.0 0.0 2010 6.5 5.7 5.6 5.2 4.4 4.3 3.2 3.1 2.0 1.9 0.9 0.8 0.0 0.0 2011 6.4 5.6 5.5 5.1 4.3 4.2 3.2 3.1 2.0 1.9 0.9 0.8 0.0 0.0 2012 6.4 5.6 5.5 5.1 4.4 4.2 3.2 3.1 2.0 1.9 0.9 0.8 0.0 0.0 2013 6.4 5.6 5.5 5.1 4.4 4.3 3.2 3.1 2.0 1.9 0.9 0.8 0.0 0.0 2014 6.4 5.6 5.5 5.2 4.5 4.3 3.3 3.1 2.1 1.9 0.9 0.8 0.0 0.0 2015 6.4 5.6 5.6 5.2 4.5 4.4 3.3 3.1 2.1 1.9 0.9 0.8 0.0 0.0 2016 6.4 5.6 5.6 5.2 4.6 4.4 3.4 3.2 2.1 1.9 0.9 0.8 0.0 0.0 \end{Soutput} \end{Schunk} We now have the relevant points for the graph showing YLL to diabetes for men and women by age, and calendar year, both under the immunity and susceptibility models for the calculation of YLL. \begin{Schunk} \begin{Sinput} > plyll <- function(wh){ + par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, bty="n", las=1 ) + + matplot( a.ref, aYLL[wh,"M",,], + type="l", lty=1, col="blue", lwd=1:2, + ylim=c(0,12), xlab="Age", + ylab="Years lost to DM", yaxs="i" ) + abline(v=50,h=1:10,col=gray(0.7)) + text( 90, 11, "Men", col="blue", adj=1 ) + text( 40, aYLL[wh,"M","40","1996"], "1996", adj=c(0,0), col="blue" ) + text( 43, aYLL[wh,"M","44","2016"], "2016", adj=c(1,1), col="blue" ) + + matplot( a.ref, aYLL[wh,"F",,], + type="l", lty=1, col="red", lwd=1:2, + ylim=c(0,12), xlab="Age", + ylab="Years lost to DM", yaxs="i" ) + abline(v=50,h=1:10,col=gray(0.7)) + text( 90, 11, "Women", col="red", adj=1 ) + text( 40, aYLL[wh,"F","40","1996"], "1996", adj=c(0,0), col="red" ) + text( 43, aYLL[wh,"F","44","2016"], "2016", adj=c(1,1), col="red" ) + } > plyll("Imm") \end{Sinput} \end{Schunk} \begin{Schunk} \begin{Sinput} > plyll("Tot") \end{Sinput} \end{Schunk} \begin{Schunk} \begin{Sinput} > plyll("Sus") \end{Sinput} \end{Schunk} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-imm} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes, assuming the persons without diabetes at a given age remain free from diabetes (immunity assumption --- not reasonable). The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:imm} \end{figure} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-sus} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes, allowing the persons without diabetes at a given to contract diabetes and thus be subject to higher mortality. The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:sus} \end{figure} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-tot} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes. Allowance for susceptibility is approximated by using the total population mortality instead of non-DM mortality. The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:tot} \end{figure} From figure \ref{fig:sus} we see that for men aged 50 the years lost to diabetes has decreased from a bit over 8 to a bit less than 6 years, and for women from 8.5 to 5 years; so a greater improvement for women. \chapter{Practical implementation} We have devised functions that wraps these formulae up for practical use. \section{Function definitions} % The following code sources the originally formatted code in erl.R in % order to make it printable with all the formatting and comments in % it. However the sourcing does not work when compiling the vignettes % in R CMD build. So when checking the code we comment this out by % putting eval=FALSE. So depending on whether we actually construct % the pdf for the inst/doc folder or test (upload) the package, one of % the following two chunks are run with eval=FALSE and the other with % eval=TRUE. \begin{Schunk} \begin{Sinput} > source( "../R/erl.R", keep.source=TRUE ) \end{Sinput} \end{Schunk} % When checking the package When using the functions it is assumed that the functions $\mu_W$, $\mu_D$ and $\lambda$ are given as vectors corresponding to equidistantly (usually tightly) spaced ages from 0 to $K$ where K is the age where everyone can safely be assumed dead. \texttt{surv1} is a simple function that computes the survival function from a vector of mortality rates, and optionally the conditional survival given being alive at prespecified ages: \begin{Schunk} \begin{Sinput} > surv1 \end{Sinput} \begin{Soutput} function (int, mu, age.in = 0, A = NULL) { if (any(is.na(mu))) { mu[is.na(mu)] <- 0 warning("NAs in agument 'mu' set to 0") } age <- 0:length(mu) * int + age.in Mu <- c(0, cumsum(mu) * int) Sv <- exp(-Mu) surv <- data.frame(age = age, surv = Sv) if (cond <- !is.null(A)) { j <- 0 cage <- NULL for (ia in A) { j <- j + 1 cA <- which(diff(age > ia) == 1) surv <- cbind(surv, pmin(1, surv$surv/(surv$surv[cA]))) cage[j] <- surv$age[cA] } } names(surv)[-1] <- paste("A", c(age.in, if (cond) cage else NULL), sep = "") rownames(surv) <- NULL return(surv) } \end{Soutput} \end{Schunk} \texttt{erl1} basically just expands the result of \texttt{surv1} with a column of expected residual life times: \begin{Schunk} \begin{Sinput} > erl1 \end{Sinput} \begin{Soutput} function (int, mu, age.in = 0) { age <- 0:length(mu) * int + age.in musmuc <- function(x) rev(cumsum(rev(x))) surv <- surv1(int = int, mu = mu, age.in = age.in)[, 2] cbind(age = age, surv = surv, erl = c(musmuc((surv[-1] - diff(surv)/2))/surv[-length(surv)], 0) * int) } \end{Soutput} \end{Schunk} We also define a function, \texttt{surv2}, that computes the survival function for a non-diseased person that may become diseased with rate \texttt{lam} and after that die at a rate of \texttt{muD} (corresponding to the formulae above). This is the sane way of handling years of life lost to a particular illness: \begin{Schunk} \begin{Sinput} > surv2 \end{Sinput} \begin{Soutput} function (int, muW, muD, lam, age.in = 0, A = NULL) { if (length(muW) != length(muD) | length(muD) != length(lam)) stop("Vectors with rates must have same length:\n", "length(muW)=", length(muW), ", length(muD)=", length(muD), ", length(lam)=", length(lam)) if (!is.null(lam)) { if (any(is.na(lam))) { lam[is.na(lam)] <- 0 warning("NAs in agument 'lam' set to 0") } } if (any(is.na(muD))) { muD[is.na(muD)] <- 0 warning("NAs in agument 'muD' set to 0") } if (any(is.na(muW))) { muW[is.na(muW)] <- 0 warning("NAs in agument 'muW' set to 0") } wsurv2 <- function(int, muW, muD, lam, age.in = 0, A = 0) { age <- 0:length(muW) * int + age.in MuW <- cumsum(c(0, muW) * (age > A)) * int MuD <- cumsum(c(0, muD) * (age > A)) * int Lam <- cumsum(c(0, lam) * (age > A)) * int pW <- exp(-(Lam + MuW)) Dis <- c(0, lam) * (age > A) * exp(-(Lam + MuW)) * int pDM <- Dis * 0 for (ia in 1:length(age)) pDM[ia] <- sum(Dis[1:ia] * exp(-(MuD[ia] - MuD[1:ia]))) surv <- data.frame(age = age, surv = pDM + pW) return(surv) } surv <- wsurv2(int, muW, muD, lam, age.in = age.in, A = 0) if (!is.null(A)) { for (j in 1:length(A)) { surv <- cbind(surv, wsurv2(int, muW, muD, lam, age.in = age.in, A = A[j])[, 2]) } } Al <- A for (i in 1:length(A)) Al[i] <- max(surv$age[surv$age <= A[i]]) colnames(surv)[-1] <- paste("A", c(age.in, Al), sep = "") return(surv) } \end{Soutput} \end{Schunk} Finally we devised a function using these to compute the expected residual lifetime at select ages: \begin{Schunk} \begin{Sinput} > erl \end{Sinput} \begin{Soutput} function (int, muW, muD, lam = NULL, age.in = 0, A = NULL, immune = is.null(lam), yll = TRUE, note = TRUE) { trsum <- function(x) { x[c(diff(x) == 0, TRUE)] <- NA sum((x[-length(x)] + x[-1])/2, na.rm = TRUE) } if (!immune & is.null(lam)) stop("'lam' is required when immune=FALSE\n") if (!is.null(lam)) { if (any(is.na(lam))) { lam[is.na(lam)] <- 0 warning("NAs in agument 'lam' set to 0") } } if (any(is.na(muD))) { muD[is.na(muD)] <- 0 warning("NAs in agument 'muD' set to 0") } if (any(is.na(muW))) { muW[is.na(muW)] <- 0 warning("NAs in agument 'muW' set to 0") } sD <- surv1(int = int, muD, age.in = age.in, A = A) if (immune) sW <- surv1(int = int, muW, age.in = age.in, A = A) else sW <- surv2(int = int, muW, muD, lam, age.in = age.in, A = A) erl <- cbind(apply(sW[, -1], 2, trsum), apply(sD[, -1], 2, trsum)) * int colnames(erl) <- c("Well", "Dis") rownames(erl) <- colnames(sW)[-1] if (yll) erl <- cbind(erl, YLL = erl[, "Well"] - erl[, "Dis"]) if (immune) { attr(erl, "NOTE") <- "Calculations assume that Well persons cannot get Ill (quite silly!)." if (note) cat("NOTE:", attr(erl, "NOTE"), "\n") } return(erl) } \end{Soutput} \end{Schunk} \ldots and a wrapper for this if we only want the years of life lost returned: \begin{Schunk} \begin{Sinput} > yll \end{Sinput} \begin{Soutput} function (int, muW, muD, lam = NULL, age.in = 0, A = NULL, immune = is.null(lam), note = TRUE) erl(int = int, muW = muW, muD = muD, lam = lam, age.in = age.in, A = A, immune = immune, yll = TRUE, note = note)[, "YLL"] \end{Soutput} \end{Schunk} \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2007a} B~Carstensen. \newblock Age-{P}eriod-{C}ohort models for the {L}exis diagram. \newblock {\em Statistics in Medicine}, 26(15):3018--3045, 2007. \bibitem{Carstensen.2008c} B~Carstensen, JK~Kristensen, P~Ottosen, and K~Borch-Johnsen. \newblock The {D}anish {N}ational {D}iabetes {R}egister: {T}rends in incidence, prevalence and mortality. \newblock {\em Diabetologia}, 51:2187--2196, 2008. \end{thebibliography} \addcontentsline{toc}{chapter}{References} \end{document} Epi/vignettes/crisk.rnw0000644000176200001440000005506714003730034014651 0ustar liggesusers%\VignetteIndexEntry{Parametric competing risks with simulation based confidence intervals} \SweaveOpts{results=verbatim,keep.source=TRUE,include=FALSE,eps=FALSE} \documentclass[a4paper,dvipsnames,twoside,12pt]{report} % ---------------------------------------------------------------------- % General information for the title page and the page headings \newcommand{\Title}{Parametric competing risks with simulation based confidence intervals} \newcommand{\Tit}{ParCmpRSim} \newcommand{\Version}{Version 3} \newcommand{\Dates}{January 2021} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \href{mailto:b@bxc.dk}{\tt b@bxc.dk} \\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./crisk} <>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) @ % \chapter{Competing risks in practice} The concept of competing risks is one where persons in a given state, 'alive', say, er subject to a number of different causes of deaths, 'cause1', 'cause2' etc. Causes of death are required to be exhaustive and mutually exclusive. In situations where the causes are not causes of death but other events, it is implicit that we only consider the first occurrence of an event from the state 'alive', and ignore what occurs after. The likelihood for observations from a competing risk scenario is a function of the cause-specific transition rates, and is \emph{product} of the likelihoods that would emerge if we considered each cause the only one. Thus analysis is in principle straight forward; just estimate a model for each of the cause-specific rates. These will together form a complete model for the competing risks problem. If the cause-specific rates are all we want to assess then we will be done. But most often we would like to have estimates of the cumulative risks, that is the probability of dying from a specific cause before a given time as function of time. Each of these are functions of \emph{all} rates. Specifically, if the cause-specific rates are $\lambda_c(t)$, then: \[ R_c(t) = \int_0^t \lambda_c(s) \exp\left(-\int_0^s \sum_j \lambda_j(u) \dif u \right) \dif s \] Even if we from the modeling of the $\lambda$s have standard errors of $\log(\lambda_c)$ the standard errors of $R_c$s will be analytically intractable from these. The only viable way to get confidence intervals for the cumulative risks, $R_c$, is by calculation of the rates $\lambda(t)$ by sampling from the posterior distribution of the parameters in the models for $\log(\lambda(s))$, and computing the integrals numerically for each simulated sample. The simulation approach also allows calculation of confidence intervals for sums of the cumulative risks, $R_1(t)+R_2(t)$, for example, which will be needed if we want to show stacked cumulative risks. Finally, it will also allow calculation of standard errors of sojourn times in each of the states 'alive' and 'cause1', 'cause2'. While the latter two may not be of direct interest, then \texttt{differences} between such sojourn times between different groups can be interpreted as years of life lost to each cause between groups. \section{Example data} As an illustrative data example we use the (fake) diabetes register data; we set up the Lexis object, cut the follow-up time at dates of OAD, resp Ins: <<>>= library(Epi) library(popEpi) data(DMlate) Ldm <- Lexis(entry = list( per = dodm, age = dodm-dobth, tfd = 0 ), exit = list( per = dox ), exit.status = factor( !is.na(dodth), labels = c("DM","Dead") ), data = DMlate ) summary(Ldm, t = T) Mdm <- mcutLexis( Ldm, wh = c('dooad','doins'), new.states = c('OAD','Ins'), precursor = 'DM', seq.states = FALSE, ties = TRUE ) summary( Mdm ) @ We initially split the FU before drug inception in intervals of 1/12 year, creating a \texttt{Lexis} object for a competing risks situation with three possible event types: <<>>= Sdm <- splitMulti(factorize(subset(Mdm, lex.Cst == "DM")), tfd = seq(0, 20, 1/12)) @ % We can illustrate the follow-up in the full data set and in the restricted <>= boxes(Mdm, boxpos = list(x = c(15, 50, 15, 85, 85), y = c(85, 50, 15, 85, 15)), scale.R = 100, show.BE = TRUE) @ % \insfig{boxes5}{1.0}{The transitions in the multistate model, where follow-up is extended also after beginning of first drug exposure. Rates in brackets are per 100 PY.}% <>= boxes( Relevel(Sdm, c(1, 4, 2, 3)), boxpos = list(x = c(15, 85, 80, 15), y = c(85, 85, 20, 15)), scale.R = 100, show.BE = TRUE ) @ % \insfig{boxes4}{1.0}{The transitions in the competing risks model, where follow-up is stopped at drug exposure. By that token only the \texttt{DM} state has person-years; a characteristic of a competing risks situation.} \section{Models for rates} Now that we have set up a dataset with three competing events, we can model the cause-specific rates separately by time from diagnosis as the only underlying time scale. Note that we only need to specify the \texttt{to=} argument because there is only one possible \texttt{from} for each \texttt{to} (incidentally the same for all \texttt{to} states, namely \texttt{DM}): <<>>= mD <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Dead') mO <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'OAD' ) mI <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Ins' ) @ % With these models fitted we can compute the rates, cumulative rates and the cumulative risks an sojourn times in states using the usual formulae. First we compute the rates in intervals of length 1/100 years. Note that these models only have time since diagnosis as covariates, so they are the counterpart of Nelson-Aalen estimates, albeit in a biologically more meaningful guise. The points where we compute the predicted rates are midpoints of intervals of length 1/100 year. These points are unrelated to the follow-up intervals in which we split the data---they were 1 month intervals, here we use 1/100 year (about 3.7 days): <<>>= int <- 1/100 nd <- data.frame( tfd = seq(int,10,int)-int/2 ) # not the same as the split, # and totally unrelated to it rownames(nd) <- nd$tfd str(nd) @ % With this we can show the rates as a function of the time since diagnosis: <>= matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.02,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) @ % \insfig{rates}{0.8}{Estimated rates from the \textrm{\tt DM} state, estimates are from \textrm{\tt gam} models fitted to data split in 1 month intervals (1/12 year, that is). Rates of \textrm{\tt OAD} is in the vicinity of 0.1/year, and mortality about half of this. Rates of insulin start among persons on no other drug are beginning high decreasing to about 4 year and then have a peak at 8 years.} Note that the graph in figure \ref{fig:rates} is not normally shown in analyses of competing risks; the competing cause-specific rates are hardly ever shown. I suspect that this is frequently because they are often modeled by a Cox model and so are buried in the model. \section{Cumulative rates and risks} For the calculation of the cumulative rates and state probabilities, we need just the rates without CIs: <<>>= # rates at midpoints lD <- ci.pred( mD, nd )[,1] lI <- ci.pred( mI, nd )[,1] lO <- ci.pred( mO, nd )[,1] # cumulative rates and survival fuction at right border of the intervals LD <- cumsum(lD) * int LI <- cumsum(lI) * int LO <- cumsum(lO) * int Sv <- exp( -LD - LI - LO ) # but when integrating to get the cumulative risks we use the average # of the survival function at the two endpoints (adding 1 as the first) mp <- function(x) x - diff(c(1, x)) / 2 rD <- cumsum(lD * mp(Sv)) * int rI <- cumsum(lI * mp(Sv)) * int rO <- cumsum(lO * mp(Sv)) * int @ % Now we have the cumulative risks for the three causes and the survival, computed at the end of each of the intervals, at any time point the sum of the 3 cumulative risks and the survival should be 1: <<>>= summary(rD + rI +rO + Sv) oo <- options(digits = 20) cbind(summary(Sv + rD + rI + rO)) options(oo) @ % We can then plot the 3 cumulative risk functions together: <>= zz <- mat2pol(cbind(rD,rI,rO,Sv), x = nd$tfd, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen") ) mm <- t(apply(zz,1,mid<-function(x) x[-1]-diff(x)/2)) text( 9, mm[900,], c("Dead","Ins","OAD","DM"), col = "white" ) box(col = "white",lwd = 3) @ % $ \insfig{stack}{1.0}{Probabilities of being in the 4 different states as a function of time since diagnosis. Note that \texttt{OAD} means that OAD was initiated first, and similarly for \texttt{Ins}. We are not concerned about what occur after these events. \texttt{Dead} means dead without being on any drug.} \chapter{Confidence intervals} We want confidence intervals for each of the 4 cumulative risks, but we may also be interested in confidence intervals for \emph{sums} of any subset of the cumulative risks, corresponding to the borders between the colours in figure \ref{fig:stack}. If we only had two competing risks (and hence three states) the latter would not be an issue, because the sum of any two cumulative risks will be 1 minus the cumulative risk of the remainder, so we could get away with the confidence intervals for the single cumulative risks. This is the reason we have chosen an example with 3 competing risks and not just 2; we then have 4 probabilities to sum in different order. A short look at the formulae for cumulative risks will reveal that analytic approximation to the standard error of these probabilities (or some transform of them) is not really a viable way to go. Particularly if we also want confidence intervals of sums of the state probabilities as those shown in stacked plots. So in practice, if we want confidence intervals not only for the state probabilities, but also for any sum of subsets of them we would want a large number of simulated copies of the cumulative risks, each copy of the same structure as the one we just extracted from the model. Moreover, we might also want confidence intervals for sojourn times (i.e. time spent) in each state up to a given time, which would come almost for free from the simulation approach. This means that we must devise a method to make a prediction not from the estimated model, but where we instead of the model parameters use a sample from the posterior distribution of the estimated parameters. Here the posterior distribution of the parameters is taken to be the multivariate normal distribution with mean equal to the vector of parameter estimates and variance-covariance matrix equal to the estimated variance-covariance matrix of the parameters. Precisely this approach is implemented in \texttt{ci.lin} via the \texttt{sample} argument; we can get a predicted value from a given prediction data frame just as from \texttt{ci.pred} resp. \texttt{ci.exp}; here is an indication of different ways of getting predicted values of the cause-specific rates: <<>>= head(cbind(ci.pred(mI,nd), ci.exp(mI,nd) )) head(cbind(ci.pred(mI,nd), exp(ci.lin(mI,nd)[,c(1,5:6)]))) @ % Here is an illustration of the prediction with model based confidence intervals for the rates, alongside predictions based on samples from the posterior distribution of the parameters in the model: <<>>= str(ci.lin(mI, nd, sample = 4)) head(cbind(ci.pred(mI,nd), exp(ci.lin(mI, nd, sample = 4)))) @ % The simulation is taking place at the parameter level and the transformation to survival and cumulative risks is simply a function applied to every simulated set of rates. \section{Joint models for several transitions} Note that we are implicitly assuming that the transitions are being modeled separately. If some transitions are modeled jointly---for example assuming that the rates of \texttt{OAD} and \texttt{Ins} are proportional as functions of time since entry, using one model---we are in trouble, because we then need one sample from the posterior generating two predictions, one for each of the transitions modeled together. Moreover the model will have to be a model fitted to a \texttt{stack.Lexis} object, so a little more complicated to work with. A simple way to program would be to reset the seed to the same value before simulating with different values of \texttt{nd}, this is what is intended to be implemented, but is not yet. This is mainly the complication of having different prediction frames for different risks in this case. Finally, it is not a very urgent need, since the situation where you want common parameters for different rates out of a common state is quite rare. \section{Simulation based confidence intervals} These ideas have been implemented in the function \texttt{ci.Crisk} (\texttt{c}onfidence \texttt{i}ntervals for \texttt{C}umulative \texttt{risk}s) in the \texttt{Epi} package: <>= setwd("/home/bendix/stat/R/examples") source('ci.Crisk.R', echo=TRUE, max=10000) @ We can now run the function using the model objects for the three competing events, using a common prediction data frame, \texttt{nd} for the rates: <<>>= system.time( res <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = (1:1000-0.5)/100), nB = 1000, perm = 4:1)) str(res) @ % As we see, the returned object (\texttt{res}) is a list of length 3, each element a 3-way arrays. The three components of \texttt{res} represent \begin{itemize} \item \texttt{Crisk} \texttt{C}umulative \texttt{risk}s for each state \item \texttt{Srisk} \texttt{S}tacked cumulative \texttt{risk}s across states \item \texttt{Stime} \texttt{S}ojourn \texttt{time} for each state, truncated at each point of the time dimension, hence there is no 0 in the time dimension \end{itemize} The first dimension of each is time as interval \emph{number}, starting with 0, and corresponding to endpoints of intervals of length \texttt{int}. The second dimension is states (or combinations thereof). The last dimension of the arrays is the type of statistic; \texttt{50\%} the median of the samples, and the bootstrap intervals as indicated. The argument \texttt{perm} governs in which order the state probabilities are stacked in the \texttt{Srisk} element of the returned list, the default is the states in the order given in the list of models in the first argument to \texttt{ci.Crisk} followed by the survival. If we want the bootstrap samples to make other calculations we can ask the function to return the bootstrap samples of the rates by using the argument \texttt{sim.res='rates'} (defaults to \texttt{'none'}): <<>>= system.time( rsm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = (1:1000-0.5)/100), nB = 2000, sim.res = 'rates')) str(rsm) @ % This is bootstrap samples of the rates evaluated at the 1000 midpoints of intervals. Alternatively we can get the bootstrap samples of the cumulative risks by setting \texttt{sim.res='crisk'}: <<>>= system.time( csm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = (1:1000-0.5)/100), nB = 2000, sim.res = 'crisk')) str(csm) @ % This is the cumulative risks evaluated at the 1001 endpoints of the 1000 intervals, and also includes the survival probability in the first slot of the \nth{1} dimension of \texttt{rsm}. In both cases, the first slot of the \nth{3} dimension, \texttt{sim}, is the rates, resp. cumulative risks from the model. \section{Simulated confidence intervals for rates} In figure \ref{fig:rates} we showed the rates with confidence intervals from the model. But in \texttt{rsm} we have 2000 (parametric) bootstrap samples of the occurrence rates, so we can derive the bootstrap medians and the bootstrap c.i.---remember that the first slice of the \nth{3} dimension is the model estimates that should not enter the calculations. We use the function \texttt{mnqt} to compute the model estimate and the mean, median and quantiles of the simulated values. <<>>= Brates <- aperm(apply(rsm, 1:2, Epi:::mnqt), c(2,3,1)) str(Brates) @ % Then we can plot the bootstrap estimates on top of the estimates based on the normal approximation to distribution of the parameters. They are not surprisingly in close agreement since they are both based on an assumption of normality of the parameters on the log-rate scale: <>= matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.1,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) matlines(nd$tfd, cbind(Brates[,"Dead",], Brates[,"Ins" ,], Brates[,"OAD" ,])*1000, col = c("white","black","black"), lty = 3, lwd=c(3,1,1)) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) @ % \insfig{rates-ci}{0.8}{Estimated rates from the \textrm{\tt DM} state, estimates are from \textrm{\tt gam} models fitted to data split in 1 month intervals (1/12 year, that is). The white dotted curves are the bootstrap medians, black dotted curves are the bootstrap 95\% c.i.s.} \section{Confidence intervals for cumulative risks} In the \texttt{Crisk} component of \texttt{res} we have the cumulative risks as functions of of time, with bootstrap confidence intervals, so we can immediately plot the three cumulative risks: <>= matshade(c(0,nd$tfd+1/200), cbind(res$Crisk[,"Dead",], res$Crisk[,"Ins" ,], res$Crisk[,"OAD" ,]), plot = TRUE, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Cumulative probability", col = c("black","red","blue")) text(8, 0.3 + c(1,0,2)/25, c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) @ % $ \insfig{crates}{0.9}{Cumulative risks for the three types of events, with 95\% bootstrap-based confidence intervals as shades.} \section{Confidence intervals for stacked cumulative risks} Unlike the single cumulative risks where we have a confidence interval for each cumulative risk, when we want to show the stacked probabilities we must deliver the confidence intervals for the relevant sums, they are in the \texttt{Srisk} component of \texttt{res}. <<>>= str(res$Crisk) str(res$Srisk) @ But we start out by plotting the stacked probabilities using \texttt{mat2pol} (\texttt{mat}rix to \texttt{pol}ygon), the input required is the single components from the \texttt{Crisk} component. Then we can add the confidence intervals <>= zz <- mat2pol(res$Crisk[,c("Dead","Ins","OAD","Surv"),1], x = as.numeric(dimnames(res$Crisk)[[1]])/100, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen") ) mm <- t(apply(zz, 1, mid<-function(x) x[-1] - diff(x) / 2)) text( 9, mm[900,], c("Dead","Ins","OAD","DM"), col = "white" ) matshade(as.numeric(dimnames(res$Srisk)[[1]])/100, cbind(res$Srisk[,1,], res$Srisk[,2,], res$Srisk[,3,]), col = 'transparent', col.shade = "white", alpha = 0.3) @ % $ \insfig{stack-ci}{1.0}{Probabilities of being in the 4 different states as a function of time since diagnosis. Note that \texttt{OAD} means that OAD was initiated first, and similarly for \texttt{Ins}. We are not concerned about what occurs \emph{after} these events. \texttt{Dead} means dead without being on any drug.\newline The white shadings around the borders between coloured areas represent the 95\% confidence intervals for the (sum of) probabilities.} \section{Sojourn times} From the \texttt{Stime} component of the \texttt{res} we can derive the estimated time spent in each state during the first, say, 5 or 10 years: <<>>= str(res$Stime) @ % We extract the 5 and 10 years components: <<>>= s510 <- res$Stime[1:2*500,,] dimnames(s510)[[1]] <- c(" 5 yr","10 yr") round(ftable(s510, row.vars=1:2), 2) @ % So we see that the expected life lived without pharmaceutical treatment during the first 10 years after DM diagnosis is 4.31 years with a 95\% CI of (4.21;4.42), and during the first 5 years 2.77 (2.72;2.82). The quantity \texttt{OAD} is the years lived without medication that has been terminated by OAD inception, and similarly for \texttt{Ins} and \texttt{Dead}. \end{document} Epi/vignettes/flup.R0000644000176200001440000004611314003562712014075 0ustar liggesusers### R code from vignette source 'flup' ### Encoding: UTF-8 ################################################### ### code chunk number 1: flup.rnw:22-25 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) ################################################### ### code chunk number 2: flup.rnw:137-139 ################################################### library(Epi) print( sessionInfo(), l=F ) ################################################### ### code chunk number 3: flup.rnw:148-157 ################################################### data( DMlate ) head( DMlate ) dmL <- Lexis( entry = list( per=dodm, age=dodm-dobth, tfD=0 ), exit = list( per=dox ), exit.status = factor( !is.na(dodth), labels=c("DM","Dead") ), data = DMlate ) timeScales(dmL) ################################################### ### code chunk number 4: flup.rnw:180-182 ################################################### str( dmL ) head( dmL )[,1:10] ################################################### ### code chunk number 5: flup.rnw:198-199 ################################################### summary.Lexis( dmL, timeScales=TRUE ) ################################################### ### code chunk number 6: dmL1 ################################################### plot( dmL ) ################################################### ### code chunk number 7: dmL2 ################################################### par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( dmL, 1:2, lwd=1, col=c("blue","red")[dmL$sex], grid=TRUE, lty.grid=1, col.grid=gray(0.7), xlim=1960+c(0,60), xaxs="i", ylim= 40+c(0,60), yaxs="i", las=1 ) points( dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col="lightgray", lwd=3, cex=0.3 ) points( dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col=c("blue","red")[dmL$sex], lwd=1, cex=0.3 ) box(bty='o') ################################################### ### code chunk number 8: flup.rnw:255-258 ################################################### dmS1 <- splitLexis( dmL, "age", breaks=seq(0,100,5) ) summary( dmL ) summary( dmS1 ) ################################################### ### code chunk number 9: flup.rnw:268-271 ################################################### wh.id <- c(9,27,52,484) subset( dmL , lex.id %in% wh.id )[,1:10] subset( dmS1, lex.id %in% wh.id )[,1:10] ################################################### ### code chunk number 10: flup.rnw:277-279 ################################################### dmS2 <- splitLexis( dmS1, "tfD", breaks=c(0,1,2,5,10,20,30,40) ) subset( dmS2, lex.id %in% wh.id )[,1:10] ################################################### ### code chunk number 11: flup.rnw:284-290 ################################################### library( popEpi ) dmM <- splitMulti( dmL, age = seq(0,100,5), tfD = c(0,1,2,5,10,20,30,40), drop = FALSE ) summary( dmS2 ) summary( dmM ) ################################################### ### code chunk number 12: flup.rnw:301-304 ################################################### identical( dmS2, dmM ) class( dmS2 ) class( dmM ) ################################################### ### code chunk number 13: flup.rnw:334-344 ################################################### whc <- c(names(dmL)[1:7],"dodm","doins") # WHich Columns do we want to see? subset( dmL, lex.id %in% wh.id )[,whc] dmC <- cutLexis( data = dmL, cut = dmL$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM" ) whc <- c(names(dmL)[1:8],"doins") # WHich Columns do we want to see? subset( dmC, lex.id %in% wh.id )[,whc] ################################################### ### code chunk number 14: flup.rnw:362-369 ################################################### dmS2C <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM" ) subset( dmS2C, lex.id %in% wh.id )[,whc] ################################################### ### code chunk number 15: flup.rnw:393-394 ################################################### summary( dmS2C, timeScales=TRUE ) ################################################### ### code chunk number 16: box1 ################################################### boxes( dmC, boxpos=TRUE, scale.R=1000, show.BE=TRUE ) ################################################### ### code chunk number 17: flup.rnw:437-445 ################################################### timeBand( dmS2C, "age", "middle" )[1:10] # For nice printing and column labelling we use the data.frame() function: data.frame( dmS2C[,c("per","age","tfD","lex.dur")], mid.age=timeBand( dmS2C, "age", "middle" ), mid.t=timeBand( dmS2C, "tfD", "middle" ), left.t=timeBand( dmS2C, "tfD", "left" ), right.t=timeBand( dmS2C, "tfD", "right" ), fact.t=timeBand( dmS2C, "tfD", "factor" ) )[1:15,] ################################################### ### code chunk number 18: flup.rnw:481-482 ################################################### summary( (dmS2$age-dmS2$tfD) - (dmS2$dodm-dmS2$dobth) ) ################################################### ### code chunk number 19: flup.rnw:487-489 ################################################### summary( timeBand( dmS2, "age", "middle" ) - timeBand( dmS2, "tfD", "middle" ) - (dmS2$dodm-dmS2$dobth) ) ################################################### ### code chunk number 20: flup.rnw:594-596 ################################################### dmCs <- splitMulti( dmC, age = seq(0,110,1/4) ) summary( dmCs, t=T ) ################################################### ### code chunk number 21: flup.rnw:618-623 ################################################### ( a.kn <- with( subset( dmCs, lex.Xst=="Dead" ), quantile( age+lex.dur, (1:5-0.5)/5 ) ) ) ( i.kn <- c( 0, with( subset( dmCs, lex.Xst=="Dead" & lex.Cst=="Ins" ), quantile( tfI+lex.dur, (1:4)/5 ) ) ) ) ################################################### ### code chunk number 22: flup.rnw:639-644 ################################################### ma <- glm( (lex.Xst=="Dead") ~ Ns(age,knots=a.kn), family = poisson, offset = log(lex.dur), data = dmCs ) summary( ma ) ################################################### ### code chunk number 23: flup.rnw:663-666 ################################################### Ma <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn), family = poisreg, data = dmCs ) summary( Ma ) ################################################### ### code chunk number 24: flup.rnw:674-676 ################################################### Xa <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) ) ################################################### ### code chunk number 25: flup.rnw:679-680 ################################################### attr( Xa, "Lexis" ) ################################################### ### code chunk number 26: flup.rnw:689-690 ################################################### xa <- glm.Lexis( dmCs, formula = ~ Ns(age,knots=a.kn) ) ################################################### ### code chunk number 27: flup.rnw:693-694 ################################################### c( deviance(ma), deviance(Ma), deviance(Xa), deviance(xa) ) ################################################### ### code chunk number 28: pr-a ################################################### nd <- data.frame( age=40:85, lex.dur=1000 ) pr.0 <- ci.pred( ma, newdata = nd ) # mortality per 100 PY pr.a <- ci.pred( Ma, newdata = nd )*1000 # mortality per 100 PY summary(pr.0/pr.a) matshade( nd$age, pr.a, plot=TRUE, type="l", lty=1, log="y", xlab="Age (years)", ylab="DM mortality per 1000 PY") ################################################### ### code chunk number 29: flup.rnw:741-745 ################################################### pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + lex.Cst + sex, family=poisreg, data = dmCs ) round( ci.exp( pm ), 3 ) ################################################### ### code chunk number 30: flup.rnw:759-763 ################################################### pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex, family=poisreg, data = tsNA20(dmCs) ) ################################################### ### code chunk number 31: flup.rnw:769-775 ################################################### Pm <- glm.Lexis( tsNA20(dmCs), form = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex ) c( deviance(Pm), deviance(pm) ) identical( model.matrix(Pm), model.matrix(pm) ) ################################################### ### code chunk number 32: flup.rnw:781-782 ################################################### round( ci.exp( Pm, subset="ex" ), 3 ) ################################################### ### code chunk number 33: ins-time ################################################### ndI <- data.frame( expand.grid( tfI=c(NA,seq(0,15,0.1)), ai=seq(40,80,10) ), sex="M", lex.Cst="Ins" ) ndI <- transform( ndI, age=ai+tfI ) head( ndI ) ndA <- data.frame( age= seq(40,100,0.1), tfI=0, lex.Cst="DM", sex="M" ) pri <- ci.pred( Pm, ndI ) * 1000 pra <- ci.pred( Pm, ndA ) * 1000 matshade( ndI$age, pri, plot=TRUE, las=1, xlab="Age (years)", ylab="DM mortality per 1000 PY", log="y", lty=1, col="blue" ) matshade( ndA$age, pra ) ################################################### ### code chunk number 34: flup.rnw:819-823 ################################################### library( survival ) cm <- coxph( Surv(age,age+lex.dur,lex.Xst=="Dead") ~ Ns(tfI,knots=i.kn) + lex.Cst + sex, data = tsNA20(dmCs) ) ################################################### ### code chunk number 35: flup.rnw:827-830 ################################################### Cm <- coxph.Lexis( tsNA20(dmCs), form= age ~ Ns(tfI,knots=i.kn) + lex.Cst + sex ) cbind( ci.exp( cm ), ci.exp( Cm ) ) ################################################### ### code chunk number 36: flup.rnw:839-842 ################################################### round( cbind( ci.exp( Pm ), rbind( matrix(NA,5,3), ci.exp( cm )[-6,] ) ), 3 ) ################################################### ### code chunk number 37: Ieff ################################################### nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 2 , lex.Cst="Ins", sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), plot=T, lty=c(1,2), log="y", xlab="Time since insulin (years)", ylab="Rate ratio") abline( h=1, lty=3 ) ################################################### ### code chunk number 38: IeffR ################################################### nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 0 , lex.Cst="DM" , sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), xlab="Time since insulin (years)", ylab="Rate ratio relative to non-Insulin", lty=c(1,2), log="y", plot=T ) ################################################### ### code chunk number 39: flup.rnw:948-953 ################################################### imx <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) ################################################### ### code chunk number 40: flup.rnw:963-973 ################################################### Im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns((age-tfI)*(lex.Cst=="Ins"),knots=a.kn) + lex.Cst + sex ) im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + lex.Cst:Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) ################################################### ### code chunk number 41: flup.rnw:988-989 ################################################### anova( imx, Im, im, test='Chisq') ################################################### ### code chunk number 42: dur-int ################################################### pxi <- ci.pred( imx, ndI ) pxa <- ci.pred( imx, ndA ) pIi <- ci.pred( Im , ndI ) pIa <- ci.pred( Im , ndA ) pii <- ci.pred( im , ndI ) pia <- ci.pred( im , ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pxi, pIi, pii)*1000, plot=T, log="y", xlab="Age", ylab="Mortality per 1000 PY", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) matshade( ndA$age, cbind( pxa, pIa, pia)*1000, lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) ################################################### ### code chunk number 43: dur-int-RR ################################################### ndR <- transform( ndI, tfI=0, lex.Cst="DM" ) cbind( head(ndI), head(ndR) ) Rxi <- ci.exp( imx, list(ndI,ndR) ) Rii <- ci.exp( im , list(ndI,ndR) ) RIi <- ci.exp( Im , list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( Rxi, RIi, Rii), plot=T, log="y", xlab="Age (years)", ylab="Rate ratio vs, non-Insulin", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) abline( h=1 ) abline( h=ci.exp(imx,subset="lex.Cst")[,1], lty="25", col="blue" ) ################################################### ### code chunk number 44: splint ################################################### gm <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst:Ns(age,knots=a.kn):Ns(tfI,knots=i.kn) + lex.Cst + sex ) pgi <- ci.pred( gm, ndI ) pga <- ci.pred( gm, ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pgi, pii )*1000, plot=T, lty=c("solid","21"), lend="butt", lwd=2, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", alpha=c(0.2,0.1), col=c("black","red") ) matshade( ndA$age, cbind( pga, pia )*1000, lty=c("solid","21"), lend="butt", lwd=2, alpha=c(0.2,0.1), col=c("black","red") ) ################################################### ### code chunk number 45: RR-int ################################################### ndR <- transform( ndI, lex.Cst="DM", tfI=0 ) iRR <- ci.exp( im, ctr.mat=list(ndI,ndR) ) gRR <- ci.exp( gm, ctr.mat=list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind(gRR,iRR), lty=1, log="y", plot=TRUE, xlab="Age (years)", ylab="Rate ratio: Ins vs. non-Ins", col=c("black","red") ) abline( h=1 ) ################################################### ### code chunk number 46: flup.rnw:1112-1125 ################################################### dmd <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) + sex ) ind <- glm.Lexis( dmCs, from="Ins", to="Dead", formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + sex ) ini <- ci.pred( ind, ndI ) dmi <- ci.pred( dmd, ndI ) dma <- ci.pred( dmd, ndA ) ################################################### ### code chunk number 47: sep-mort ################################################### par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ini*1000, plot=TRUE, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", lwd=2, col="red" ) matshade( ndA$age, dma*1000, lwd=2, col="black" ) ################################################### ### code chunk number 48: sep-HR ################################################### par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ci.ratio(ini,dmi), plot=TRUE, log="y", xlab="Age (years)", ylab="RR insulin vs. no insulin", lwd=2, col="red" ) abline( h=1 ) ################################################### ### code chunk number 49: flup.rnw:1171-1179 ################################################### dmCs <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM", split.states = TRUE ) summary( dmCs ) ################################################### ### code chunk number 50: box4 ################################################### boxes( dmCs, boxpos=list(x=c(15,15,85,85), y=c(85,15,85,15)), scale.R=1000, show.BE=TRUE ) ################################################### ### code chunk number 51: flup.rnw:1209-1217 ################################################### dmM <- mcutLexis( dmL, timescale = "per", wh = c("doins","dooad"), new.states = c("Ins","OAD"), new.scales = c("tfI","tfO"), precursor.states = "DM", ties.resolve = TRUE ) summary( dmM, t=T ) ################################################### ### code chunk number 52: flup.rnw:1221-1226 ################################################### wh <- c(subset(dmM,lex.Cst=="Ins-OAD")$lex.id[1:2], subset(dmM,lex.Cst=="OAD-Ins")$lex.id[1:2]) options( width=110 ) print( subset( dmM, lex.id %in% wh )[,c('lex.id',names(dmM[1:8]),c("doins","dooad"))], digits=6, row.names=FALSE ) ################################################### ### code chunk number 53: mbox ################################################### boxes( dmM, boxpos=list(x=c(15,80,40,40,85,85), y=c(50,50,90,10,90,10)), scale.R=1000, show.BE=TRUE ) ################################################### ### code chunk number 54: mboxr ################################################### summary( dmMr <- Relevel( dmM, list('OAD+Ins'=5:6), first=FALSE) ) boxes( dmMr, boxpos=list(x=c(15,50,15,85,85), y=c(85,50,15,85,15)), scale.R=1000, show.BE=TRUE ) Epi/vignettes/yll.tex0000644000176200001440000010604614003563063014330 0ustar liggesusers%\VignetteIndexEntry{Years of life lost (YLL)} \documentclass[a4paper,twoside,12pt]{report} \newcommand{\Title}{Years of Life Lost (YLL) to disease\\Diabetes in DK as example} \newcommand{\Tit}{YLL} \newcommand{\Version}{February 1.2} \newcommand{\Dates}{November 2017} \newcommand{\Where}{SDC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/Epi}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk}\\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./yll} \chapter{Theory and technicalities} This vignette for the \texttt{Epi} package describes the probabilistic and demographic background for and technical implementation of the \texttt{erl} and \texttt{yll} functions that computes the expected residual life time and years of life lost in an illness-death model. \section{Years of life lost (YLL)} \ldots to diabetes or any other disease for that matter. The general concept in calculation of ``years lost to\ldots'' is the comparison of the expected lifetime between two groups of persons; one with and one without disease (in this example DM). The expected lifetime is the area under the survival curve, so basically the exercise requires that two survival curves that are deemed relevant be available. The years of life lost is therefore just the area between the survival curves for those ``Well'', $S_W(t)$, and for those ``Diseased'', $S_D(t)$: \[ \YLL = \int_0^\infty S_W(t) - S_D(t) \dif t \] The time $t$ could of course be age, but it could also be ``time after age 50'' and the survival curves compared would then be survival curves \emph{conditional} on survival till age 50, and the YLL would be the years of life lost for a 50-year old person with diabetes. If we are referring to the expected lifetime we will more precisely use the label expected residual lifetime, ERL. \section{Constructing the survival curves} YLL can be computed in two different ways, depending on the way the survival curve and hence the expected lifetime of a person \emph{without} diabetes is computed: \begin{itemize} \item Assume that the ``Well'' persons are \emph{immune} to disease --- using only the non-DM mortality rates throughout for calculation of expected life time. \item Assume that the ``Well'' persons \emph{can} acquire the disease and thereby see an increased mortality, thus involving all three rates shown in figure \ref{fig:states}. \end{itemize} The former gives a higher YLL because the comparison is to persons assumed immune to DM (and yet with the same mortality as non-immune prior to diagnosis), the latter gives a more realistic picture of the comparison of group of persons with and without diabetes at a given age that can be interpreted in the real world. The differences can be illustrated by figure \ref{fig:states}; the immune approach corresponds to an assumption of $\lambda(t)=0$ in the calculation of the survival curve for a person in the ``Well'' state. Calculation of the survival of a diseased person already in the ``DM'' state is unaffected by assumptions about $\lambda$. \insfig{states}{0.7}{Illness-death model describing diabetes incidence and -mortality.} \subsection{Total mortality --- a shortcut?} A practical crude shortcut could be to compare the ERL in the diabetic population to the ERL for the \emph{entire} population (that is use the total mortality ignoring diabetes status). Note however that this approach also counts the mortality of persons that acquired the disease earlier, thus making the comparison population on average more ill than the population we aim at, namely those well at a given time, which only then become more gradually ill. How large these effects are can however be empirically explored, as we shall do later. \subsection{Disease duration} In the exposition above there is no explicit provision for the effect of disease duration, but if we were able to devise mortality rates for any combination of age and duration, this could be taken into account. There are however severe limitations in this as we in principle would want to have duration effects as long as the age-effects --- in principle for all $(a,d)$ where $d\leq A$, where $A$ is the age at which we condition. So even if we were only to compute ERL from age, say, 40 we would still need duration effects up to 60 years (namely to age 100). The incorporation of duration effects is in principle trivial from a computational point of view, but we would be forced to entertain models predicting duration effects way beyond what is actually observed disease duration in any practical case. \subsection{Computing integrals} The practical calculations of survival curves, ERL and YLL involves calculation of (cumulative) integrals of rates and functions of these as we shall see below. This is easy if we have a closed form expression of the function, so its value may be computed at any time point --- this will be the case if we model rates by smooth parametric functions. Computing the (cumulative) integral of a function is done as follows: \begin{itemize} \item Compute the value of the function (mortality rate for example) at the midpoints of a sequence of narrow equidistant intervals --- for example one- or three month intervals of age, say. \item Take the cumulative sum of these values multiplied by the interval length --- this will be a very close approximation to the cumulative integral evaluated at the end of each interval. \item If the intervals are really small (like 1/100 year), the distinction between the value at the middle and at the end of each interval becomes irrelevant. \end{itemize} Note that in the above it is assumed that the rates are given in units corresponding to the interval length --- or more precisely, as the cumulative rates over the interval. \section{Survival functions in the illness-death model} The survival functions for persons in the ``Well'' state can be computed under two fundamentally different scenarios, depending on whether persons in the ``Well'' state are assumed to be immune to the disease ($\lambda(a)=0$) or not. \subsection{Immune approach} In this case both survival functions for person in the two states are the usual simple transformation of the cumulative mortality rates: \[ S_W(a) = \exp\left(-\int_0^a\!\!\mu_W(u) \dif u \right), \qquad S_D(a) = \exp\left(-\int_0^a\!\!\mu_D(u) \dif u \right) \] \subsubsection{Conditional survival functions} If we want the \emph{conditional} survival functions given survival to age $A$, say, they are just: \[ S_W(a|A) = S_W(a)/S_W(A), \qquad S_D(a|A) = S_D(a)/S_D(A) \] \subsection{Non-immune approach} For a diseased person, the survival function in this states is the same as above, but the survival function for a person without disease (at age 0) is (see figure \ref{fig:states}): \[ S(a) = \ptxt{Well}\!(a) + \ptxt{DM}\!(a) \] In the appendix of the paper \cite{Carstensen.2008c} is an indication of how to compute the probability of being in any of the four states shown in figure \ref{fig:states}, which I shall repeat here: In terms of the rates, the probability of being in the ``Well'' box is simply the probability of escaping both death (at a rate of $\mu_W(a)$) and diabetes (at a rate of $\lambda(a)$): \[ \ptxt{Well}(a) = \exp\left(\!-\int_0^a\!\!\mu_W(u)+\lambda(u) \right) \dif u \] The probability of being alive with diabetes at age $a$, is computed given that diabetes occurred at age $s$ ($s data( DMepi ) \end{Sinput} \end{Schunk} The dataset \texttt{DMepi} contains diabetes events, deaths and person-years for persons without diabetes and deaths and person-years for persons with diabetes: \begin{Schunk} \begin{Sinput} > str( DMepi ) \end{Sinput} \begin{Soutput} 'data.frame': 4200 obs. of 8 variables: $ sex : Factor w/ 2 levels "M","F": 1 1 1 1 1 1 1 1 1 1 ... $ A : num 0 0 0 0 0 0 0 0 0 0 ... $ P : num 1996 1997 1998 1999 2000 ... $ D.DM: num 0 0 0 0 0 0 0 0 0 0 ... $ Y.DM: num 0.484 0.64 1.641 0.552 2.507 ... $ X : num 1 2 4 4 4 1 1 3 4 1 ... $ D.nD: num 28 19 20 11 21 16 21 15 16 16 ... $ Y.nD: num 35469 35085 34240 34056 34002 ... \end{Soutput} \begin{Sinput} > head( DMepi ) \end{Sinput} \begin{Soutput} sex A P D.DM Y.DM X D.nD Y.nD 2 M 0 1996 0 0.4839151 1 28 35468.92 3 M 0 1997 0 0.6399726 2 19 35085.18 4 M 0 1998 0 1.6406571 4 20 34240.14 5 M 0 1999 0 0.5523614 4 11 34055.52 6 M 0 2000 0 2.5065024 4 21 34002.22 7 M 0 2001 0 0.1184120 1 16 34177.39 \end{Soutput} \end{Schunk} For each combination of sex, age, period and date of birth in 1 year age groups, we have the person-years in the ``Well'' (\texttt{Y.nD}) and the ``DM'' (\texttt{Y.DM}) states, as well as the number of deaths from these (\texttt{D.nD}, \texttt{D.DM}) and the number of incident diabetes cases from the ``Well'' state (\texttt{X}). In order to compute the years of life lost to diabetes and how this has changed over time, we fit models for the mortality and incidence of both groups (and of course, separately for men and women). The models we use will be age-period-cohort models \cite{Carstensen.2007a} providing estimated mortality rates for ages 0--99 and dates 1.1.1996--1.1.2016. First we transform the age and period variables to reflect the mean age and period in each of the Lexis triangles. We also compute the total number of deaths and amount of risk time, as we are going to model the total mortality as well. Finally we restrict the dataset to ages over 30 only: \begin{Schunk} \begin{Sinput} > DMepi <- transform( subset( DMepi, A>30 ), + D.T = D.nD + D.DM, + Y.T = Y.nD + Y.DM ) > head(DMepi) \end{Sinput} \begin{Soutput} sex A P D.DM Y.DM X D.nD Y.nD D.T Y.T 684 M 31 1996 0 305.9671 29 51 44161.83 51 44467.80 685 M 31 1997 2 326.2074 31 54 45508.64 56 45834.85 686 M 31 1998 2 340.1759 34 46 44954.45 48 45294.63 687 M 31 1999 5 330.9918 24 39 41148.97 44 41479.96 688 M 31 2000 1 332.0876 41 26 39027.30 27 39359.39 689 M 31 2001 2 310.8467 35 33 37975.78 35 38286.63 \end{Soutput} \end{Schunk} With the correct age and period coding in the Lexis triangles, we fit models for the mortalities and incidences. Note that we for comparative purposes also fit a model for the \emph{total} mortality, ignoring the \begin{Schunk} \begin{Sinput} > # Knots used in all models > ( a.kn <- seq(40,95,,6) ) \end{Sinput} \begin{Soutput} [1] 40 51 62 73 84 95 \end{Soutput} \begin{Sinput} > ( p.kn <- seq(1997,2015,,4) ) \end{Sinput} \begin{Soutput} [1] 1997 2003 2009 2015 \end{Soutput} \begin{Sinput} > ( c.kn <- seq(1910,1976,,6) ) \end{Sinput} \begin{Soutput} [1] 1910.0 1923.2 1936.4 1949.6 1962.8 1976.0 \end{Soutput} \begin{Sinput} > # Check the number of events between knots > ae <- xtabs( cbind(D.nD,D.DM,X) ~ cut(A,c(30,a.kn,Inf)) + sex, data=DMepi ) > ftable( addmargins(ae,1), col.vars=3:2 ) \end{Sinput} \begin{Soutput} D.nD D.DM X sex M F M F M F cut(A, c(30, a.kn, Inf)) (30,40] 9135 4650 597 277 12080 9648 (40,51] 25535 15784 2947 1439 35445 23925 (51,62] 59698 40171 10838 5253 60539 40034 (62,73] 106519 81253 26197 14299 55908 44221 (73,84] 158365 156678 34510 28834 27985 30381 (84,95] 100880 179466 16194 25317 5272 8967 (95,Inf] 6095 21414 640 1928 90 288 Sum 466227 499416 91923 77347 197319 157464 \end{Soutput} \begin{Sinput} > pe <- xtabs( cbind(D.nD,D.DM,X) ~ cut(P,c(1990,p.kn,Inf)) + sex, data=DMepi ) > ftable( addmargins(pe,1), col.vars=3:2 ) \end{Sinput} \begin{Soutput} D.nD D.DM X sex M F M F M F cut(P, c(1990, p.kn, Inf)) (1990,1997] 51569 53567 6407 5990 13175 10960 (1997,2003] 144136 155695 22390 19922 49805 41277 (2003,2009] 131159 141782 26079 22249 60554 48066 (2009,2015] 119812 127714 31285 24704 63440 49457 (2015,Inf] 19551 20658 5762 4482 10345 7704 Sum 466227 499416 91923 77347 197319 157464 \end{Soutput} \begin{Sinput} > ce <- xtabs( cbind(D.nD,D.DM,X) ~ cut(P-A,c(-Inf,c.kn,Inf)) + sex, data=DMepi ) > ftable( addmargins(ce,1), col.vars=3:2 ) \end{Sinput} \begin{Soutput} D.nD D.DM X sex M F M F M F cut(P - A, c(-Inf, c.kn, Inf)) (-Inf,1.91e+03] 19679 49020 2004 4446 599 1416 (1.91e+03,1.92e+03] 129799 189192 19780 26870 10665 15275 (1.92e+03,1.94e+03] 158953 152454 35667 28471 37850 36659 (1.94e+03,1.95e+03] 99058 72432 25494 13074 71489 50631 (1.95e+03,1.96e+03] 44129 28315 7534 3731 51750 34255 (1.96e+03,1.98e+03] 13598 7484 1373 720 22942 17689 (1.98e+03, Inf] 1011 519 71 35 2024 1539 Sum 466227 499416 91923 77347 197319 157464 \end{Soutput} \begin{Sinput} > # Fit an APC-model for all transitions, seperately for men and women > mW.m <- glm( D.nD ~ -1 + Ns(A ,knots=a.kn,int=TRUE) + + Ns( P,knots=p.kn,ref=2005) + + Ns(P-A,knots=c.kn,ref=1950), + offset = log(Y.nD), + family = poisson, + data = subset( DMepi, sex=="M" ) ) > mD.m <- update( mW.m, D.DM ~ . , offset=log(Y.DM) ) > mT.m <- update( mW.m, D.T ~ . , offset=log(Y.T ) ) > lW.m <- update( mW.m, X ~ . ) > # Model for women > mW.f <- update( mW.m, data = subset( DMepi, sex=="F" ) ) > mD.f <- update( mD.m, data = subset( DMepi, sex=="F" ) ) > mT.f <- update( mT.m, data = subset( DMepi, sex=="F" ) ) > lW.f <- update( lW.m, data = subset( DMepi, sex=="F" ) ) \end{Sinput} \end{Schunk} \section{Residual life time and years lost to DM} We now collect the estimated years of life lost classified by method (immune assumption or not), sex, age and calendar time: \begin{Schunk} \begin{Sinput} > a.ref <- 30:90 > p.ref <- 1996:2016 > aYLL <- NArray( list( type = c("Imm","Tot","Sus"), + sex = levels( DMepi$sex ), + age = a.ref, + date = p.ref ) ) > str( aYLL ) \end{Sinput} \begin{Soutput} logi [1:3, 1:2, 1:61, 1:21] NA NA NA NA NA NA ... - attr(*, "dimnames")=List of 4 ..$ type: chr [1:3] "Imm" "Tot" "Sus" ..$ sex : chr [1:2] "M" "F" ..$ age : chr [1:61] "30" "31" "32" "33" ... ..$ date: chr [1:21] "1996" "1997" "1998" "1999" ... \end{Soutput} \begin{Sinput} > system.time( + for( ip in p.ref ) + { + nd <- data.frame( A = seq(30,90,0.2)+0.1, + P = ip, + Y.nD = 1, + Y.DM = 1, + Y.T = 1 ) + muW.m <- ci.pred( mW.m, nd )[,1] + muD.m <- ci.pred( mD.m, nd )[,1] + muT.m <- ci.pred( mT.m, nd )[,1] + lam.m <- ci.pred( lW.m, nd )[,1] + muW.f <- ci.pred( mW.f, nd )[,1] + muD.f <- ci.pred( mD.f, nd )[,1] + muT.f <- ci.pred( mT.f, nd )[,1] + lam.f <- ci.pred( lW.f, nd )[,1] + aYLL["Imm","M",,paste(ip)] <- yll( int=0.2, muW.m, muD.m, lam=NULL, + A=a.ref, age.in=30, note=FALSE )[-1] + aYLL["Imm","F",,paste(ip)] <- yll( int=0.2, muW.f, muD.f, lam=NULL, + A=a.ref, age.in=30, note=FALSE )[-1] + aYLL["Tot","M",,paste(ip)] <- yll( int=0.2, muT.m, muD.m, lam=NULL, + A=a.ref, age.in=30, note=FALSE )[-1] + aYLL["Tot","F",,paste(ip)] <- yll( int=0.2, muT.f, muD.f, lam=NULL, + A=a.ref, age.in=30, note=FALSE )[-1] + aYLL["Sus","M",,paste(ip)] <- yll( int=0.2, muW.m, muD.m, lam=lam.m, + A=a.ref, age.in=30, note=FALSE )[-1] + aYLL["Sus","F",,paste(ip)] <- yll( int=0.2, muW.f, muD.f, lam=lam.f, + A=a.ref, age.in=30, note=FALSE )[-1] + } ) \end{Sinput} \begin{Soutput} user system elapsed 17.679 8.252 15.803 \end{Soutput} \begin{Sinput} > round( ftable( aYLL[,,seq(1,61,10),], col.vars=c(3,2) ), 1 ) \end{Sinput} \begin{Soutput} age 30 40 50 60 70 80 90 sex M F M F M F M F M F M F M F type date Imm 1996 11.3 10.2 9.4 9.1 7.4 7.6 5.4 5.9 3.4 3.8 1.5 1.6 0.0 0.0 1997 11.1 9.9 9.2 8.9 7.3 7.4 5.3 5.7 3.3 3.7 1.4 1.5 0.0 0.0 1998 10.9 9.7 9.1 8.6 7.2 7.2 5.3 5.5 3.3 3.6 1.4 1.5 0.0 0.0 1999 10.7 9.4 9.0 8.4 7.1 7.0 5.2 5.3 3.3 3.5 1.4 1.5 0.0 0.0 2000 10.5 9.1 8.8 8.2 6.9 6.8 5.1 5.1 3.2 3.4 1.4 1.4 0.0 0.0 2001 10.3 8.9 8.6 7.9 6.8 6.6 5.0 5.0 3.1 3.2 1.3 1.4 0.0 0.0 2002 10.0 8.6 8.4 7.7 6.6 6.3 4.9 4.8 3.1 3.1 1.3 1.3 0.0 0.0 2003 9.7 8.3 8.2 7.4 6.4 6.1 4.7 4.6 3.0 3.0 1.3 1.3 0.0 0.0 2004 9.4 8.0 7.9 7.1 6.2 5.9 4.5 4.4 2.8 2.8 1.2 1.2 0.0 0.0 2005 9.0 7.6 7.6 6.9 6.0 5.6 4.4 4.1 2.7 2.6 1.1 1.1 0.0 0.0 2006 8.6 7.3 7.4 6.6 5.8 5.4 4.2 3.9 2.6 2.5 1.1 1.1 0.0 0.0 2007 8.3 7.0 7.1 6.3 5.5 5.2 4.0 3.8 2.5 2.4 1.0 1.0 0.0 0.0 2008 8.0 6.8 6.8 6.1 5.4 5.0 3.8 3.6 2.4 2.2 1.0 0.9 0.0 0.0 2009 7.7 6.6 6.6 6.0 5.2 4.9 3.7 3.5 2.3 2.1 0.9 0.9 0.0 0.0 2010 7.5 6.4 6.5 5.8 5.1 4.8 3.7 3.4 2.2 2.1 0.9 0.9 0.0 0.0 2011 7.4 6.3 6.4 5.8 5.1 4.7 3.6 3.4 2.2 2.0 0.9 0.8 0.0 0.0 2012 7.3 6.3 6.4 5.7 5.1 4.7 3.6 3.3 2.2 2.0 0.9 0.8 0.0 0.0 2013 7.3 6.2 6.4 5.7 5.1 4.7 3.6 3.3 2.2 2.0 0.9 0.8 0.0 0.0 2014 7.3 6.2 6.4 5.7 5.1 4.7 3.7 3.4 2.2 2.0 0.9 0.8 0.0 0.0 2015 7.3 6.2 6.4 5.7 5.2 4.8 3.7 3.4 2.3 2.0 0.9 0.8 0.0 0.0 2016 7.3 6.2 6.4 5.7 5.2 4.8 3.8 3.4 2.3 2.0 0.9 0.8 0.0 0.0 Tot 1996 10.7 9.8 8.8 8.7 6.9 7.2 5.0 5.5 3.1 3.5 1.3 1.4 0.0 0.0 1997 10.5 9.5 8.6 8.4 6.7 7.0 4.9 5.3 3.0 3.4 1.3 1.4 0.0 0.0 1998 10.3 9.2 8.5 8.2 6.6 6.8 4.8 5.1 3.0 3.3 1.3 1.4 0.0 0.0 1999 10.0 8.9 8.3 7.9 6.5 6.5 4.7 4.9 2.9 3.2 1.3 1.3 0.0 0.0 2000 9.8 8.7 8.1 7.7 6.3 6.3 4.6 4.7 2.9 3.1 1.2 1.3 0.0 0.0 2001 9.6 8.4 7.9 7.4 6.2 6.1 4.5 4.6 2.8 2.9 1.2 1.2 0.0 0.0 2002 9.3 8.1 7.7 7.2 6.0 5.9 4.3 4.4 2.7 2.8 1.2 1.2 0.0 0.0 2003 9.0 7.8 7.5 6.9 5.8 5.6 4.2 4.2 2.6 2.7 1.1 1.1 0.0 0.0 2004 8.6 7.5 7.2 6.6 5.6 5.4 4.0 4.0 2.5 2.5 1.1 1.1 0.0 0.0 2005 8.3 7.1 6.9 6.4 5.3 5.1 3.8 3.7 2.4 2.4 1.0 1.0 0.0 0.0 2006 7.9 6.8 6.6 6.1 5.1 4.9 3.6 3.6 2.2 2.2 0.9 0.9 0.0 0.0 2007 7.6 6.5 6.4 5.9 4.9 4.7 3.4 3.4 2.1 2.1 0.9 0.9 0.0 0.0 2008 7.3 6.3 6.1 5.6 4.7 4.5 3.3 3.2 2.0 2.0 0.8 0.8 0.0 0.0 2009 7.0 6.1 5.9 5.5 4.5 4.4 3.2 3.1 1.9 1.9 0.8 0.8 0.0 0.0 2010 6.8 5.9 5.8 5.4 4.4 4.3 3.1 3.0 1.8 1.8 0.8 0.7 0.0 0.0 2011 6.7 5.8 5.7 5.3 4.4 4.3 3.0 3.0 1.8 1.7 0.7 0.7 0.0 0.0 2012 6.6 5.8 5.6 5.2 4.3 4.2 3.0 2.9 1.8 1.7 0.7 0.7 0.0 0.0 2013 6.5 5.7 5.6 5.2 4.3 4.2 3.0 2.9 1.8 1.7 0.7 0.7 0.0 0.0 2014 6.5 5.7 5.6 5.2 4.4 4.2 3.0 2.9 1.8 1.7 0.7 0.7 0.0 0.0 2015 6.4 5.6 5.6 5.2 4.4 4.2 3.1 2.9 1.8 1.7 0.7 0.7 0.0 0.0 2016 6.4 5.6 5.6 5.2 4.4 4.3 3.1 3.0 1.8 1.7 0.8 0.7 0.0 0.0 Sus 1996 10.3 9.4 8.4 8.4 6.6 7.0 5.0 5.5 3.2 3.6 1.4 1.5 0.0 0.0 1997 10.1 9.2 8.3 8.2 6.5 6.8 4.9 5.3 3.1 3.5 1.4 1.5 0.0 0.0 1998 9.9 8.9 8.1 7.9 6.4 6.6 4.8 5.1 3.1 3.4 1.4 1.5 0.0 0.0 1999 9.7 8.6 8.0 7.7 6.3 6.4 4.7 4.9 3.1 3.3 1.4 1.4 0.0 0.0 2000 9.4 8.3 7.8 7.4 6.1 6.2 4.6 4.7 3.0 3.2 1.3 1.4 0.0 0.0 2001 9.2 8.1 7.6 7.2 6.0 5.9 4.5 4.5 2.9 3.0 1.3 1.3 0.0 0.0 2002 8.9 7.8 7.4 6.9 5.8 5.7 4.4 4.4 2.8 2.9 1.3 1.3 0.0 0.0 2003 8.6 7.5 7.2 6.7 5.6 5.5 4.2 4.2 2.7 2.8 1.2 1.2 0.0 0.0 2004 8.3 7.1 6.9 6.4 5.4 5.3 4.0 4.0 2.6 2.6 1.2 1.2 0.0 0.0 2005 7.9 6.8 6.6 6.1 5.2 5.0 3.8 3.8 2.5 2.5 1.1 1.1 0.0 0.0 2006 7.5 6.5 6.3 5.9 5.0 4.8 3.7 3.6 2.4 2.3 1.0 1.0 0.0 0.0 2007 7.2 6.3 6.1 5.6 4.7 4.6 3.5 3.4 2.3 2.2 1.0 1.0 0.0 0.0 2008 6.9 6.0 5.9 5.5 4.6 4.5 3.4 3.3 2.2 2.1 0.9 0.9 0.0 0.0 2009 6.7 5.8 5.7 5.3 4.4 4.3 3.3 3.2 2.1 2.0 0.9 0.9 0.0 0.0 2010 6.5 5.7 5.6 5.2 4.4 4.3 3.2 3.1 2.0 1.9 0.9 0.8 0.0 0.0 2011 6.4 5.6 5.5 5.1 4.3 4.2 3.2 3.1 2.0 1.9 0.9 0.8 0.0 0.0 2012 6.4 5.6 5.5 5.1 4.4 4.2 3.2 3.1 2.0 1.9 0.9 0.8 0.0 0.0 2013 6.4 5.6 5.5 5.1 4.4 4.3 3.2 3.1 2.0 1.9 0.9 0.8 0.0 0.0 2014 6.4 5.6 5.5 5.2 4.5 4.3 3.3 3.1 2.1 1.9 0.9 0.8 0.0 0.0 2015 6.4 5.6 5.6 5.2 4.5 4.4 3.3 3.1 2.1 1.9 0.9 0.8 0.0 0.0 2016 6.4 5.6 5.6 5.2 4.6 4.4 3.4 3.2 2.1 1.9 0.9 0.8 0.0 0.0 \end{Soutput} \end{Schunk} We now have the relevant points for the graph showing YLL to diabetes for men and women by age, and calendar year, both under the immunity and susceptibility models for the calculation of YLL. \begin{Schunk} \begin{Sinput} > plyll <- function(wh){ + par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, bty="n", las=1 ) + + matplot( a.ref, aYLL[wh,"M",,], + type="l", lty=1, col="blue", lwd=1:2, + ylim=c(0,12), xlab="Age", + ylab="Years lost to DM", yaxs="i" ) + abline(v=50,h=1:10,col=gray(0.7)) + text( 90, 11, "Men", col="blue", adj=1 ) + text( 40, aYLL[wh,"M","40","1996"], "1996", adj=c(0,0), col="blue" ) + text( 43, aYLL[wh,"M","44","2016"], "2016", adj=c(1,1), col="blue" ) + + matplot( a.ref, aYLL[wh,"F",,], + type="l", lty=1, col="red", lwd=1:2, + ylim=c(0,12), xlab="Age", + ylab="Years lost to DM", yaxs="i" ) + abline(v=50,h=1:10,col=gray(0.7)) + text( 90, 11, "Women", col="red", adj=1 ) + text( 40, aYLL[wh,"F","40","1996"], "1996", adj=c(0,0), col="red" ) + text( 43, aYLL[wh,"F","44","2016"], "2016", adj=c(1,1), col="red" ) + } > plyll("Imm") \end{Sinput} \end{Schunk} \begin{Schunk} \begin{Sinput} > plyll("Tot") \end{Sinput} \end{Schunk} \begin{Schunk} \begin{Sinput} > plyll("Sus") \end{Sinput} \end{Schunk} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-imm} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes, assuming the persons without diabetes at a given age remain free from diabetes (immunity assumption --- not reasonable). The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:imm} \end{figure} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-sus} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes, allowing the persons without diabetes at a given to contract diabetes and thus be subject to higher mortality. The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:sus} \end{figure} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-tot} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes. Allowance for susceptibility is approximated by using the total population mortality instead of non-DM mortality. The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:tot} \end{figure} From figure \ref{fig:sus} we see that for men aged 50 the years lost to diabetes has decreased from a bit over 8 to a bit less than 6 years, and for women from 8.5 to 5 years; so a greater improvement for women. \chapter{Practical implementation} We have devised functions that wraps these formulae up for practical use. \section{Function definitions} % The following code sources the originally formatted code in erl.R in % order to make it printable with all the formatting and comments in % it. However the sourcing does not work when compiling the vignettes % in R CMD build. So when checking the code we comment this out by % putting eval=FALSE. So depending on whether we actually construct % the pdf for the inst/doc folder or test (upload) the package, one of % the following two chunks are run with eval=FALSE and the other with % eval=TRUE. % When checking the package When using the functions it is assumed that the functions $\mu_W$, $\mu_D$ and $\lambda$ are given as vectors corresponding to equidistantly (usually tightly) spaced ages from 0 to $K$ where K is the age where everyone can safely be assumed dead. \texttt{surv1} is a simple function that computes the survival function from a vector of mortality rates, and optionally the conditional survival given being alive at prespecified ages: \begin{Schunk} \begin{Sinput} > surv1 \end{Sinput} \begin{Soutput} function (int, mu, age.in = 0, A = NULL) { if (any(is.na(mu))) { mu[is.na(mu)] <- 0 warning("NAs in agument 'mu' set to 0") } age <- 0:length(mu) * int + age.in Mu <- c(0, cumsum(mu) * int) Sv <- exp(-Mu) surv <- data.frame(age = age, surv = Sv) if (cond <- !is.null(A)) { j <- 0 cage <- NULL for (ia in A) { j <- j + 1 cA <- which(diff(age > ia) == 1) surv <- cbind(surv, pmin(1, surv$surv/(surv$surv[cA]))) cage[j] <- surv$age[cA] } } names(surv)[-1] <- paste("A", c(age.in, if (cond) cage else NULL), sep = "") rownames(surv) <- NULL return(surv) } \end{Soutput} \end{Schunk} \texttt{erl1} basically just expands the result of \texttt{surv1} with a column of expected residual life times: \begin{Schunk} \begin{Sinput} > erl1 \end{Sinput} \begin{Soutput} function (int, mu, age.in = 0) { age <- 0:length(mu) * int + age.in musmuc <- function(x) rev(cumsum(rev(x))) surv <- surv1(int = int, mu = mu, age.in = age.in)[, 2] cbind(age = age, surv = surv, erl = c(musmuc((surv[-1] - diff(surv)/2))/surv[-length(surv)], 0) * int) } \end{Soutput} \end{Schunk} We also define a function, \texttt{surv2}, that computes the survival function for a non-diseased person that may become diseased with rate \texttt{lam} and after that die at a rate of \texttt{muD} (corresponding to the formulae above). This is the sane way of handling years of life lost to a particular illness: \begin{Schunk} \begin{Sinput} > surv2 \end{Sinput} \begin{Soutput} function (int, muW, muD, lam, age.in = 0, A = NULL) { if (length(muW) != length(muD) | length(muD) != length(lam)) stop("Vectors with rates must have same length:\n", "length(muW)=", length(muW), ", length(muD)=", length(muD), ", length(lam)=", length(lam)) if (!is.null(lam)) { if (any(is.na(lam))) { lam[is.na(lam)] <- 0 warning("NAs in agument 'lam' set to 0") } } if (any(is.na(muD))) { muD[is.na(muD)] <- 0 warning("NAs in agument 'muD' set to 0") } if (any(is.na(muW))) { muW[is.na(muW)] <- 0 warning("NAs in agument 'muW' set to 0") } wsurv2 <- function(int, muW, muD, lam, age.in = 0, A = 0) { age <- 0:length(muW) * int + age.in MuW <- cumsum(c(0, muW) * (age > A)) * int MuD <- cumsum(c(0, muD) * (age > A)) * int Lam <- cumsum(c(0, lam) * (age > A)) * int pW <- exp(-(Lam + MuW)) Dis <- c(0, lam) * (age > A) * exp(-(Lam + MuW)) * int pDM <- Dis * 0 for (ia in 1:length(age)) pDM[ia] <- sum(Dis[1:ia] * exp(-(MuD[ia] - MuD[1:ia]))) surv <- data.frame(age = age, surv = pDM + pW) return(surv) } surv <- wsurv2(int, muW, muD, lam, age.in = age.in, A = 0) if (!is.null(A)) { for (j in 1:length(A)) { surv <- cbind(surv, wsurv2(int, muW, muD, lam, age.in = age.in, A = A[j])[, 2]) } } Al <- A for (i in 1:length(A)) Al[i] <- max(surv$age[surv$age <= A[i]]) colnames(surv)[-1] <- paste("A", c(age.in, Al), sep = "") return(surv) } \end{Soutput} \end{Schunk} Finally we devised a function using these to compute the expected residual lifetime at select ages: \begin{Schunk} \begin{Sinput} > erl \end{Sinput} \begin{Soutput} function (int, muW, muD, lam = NULL, age.in = 0, A = NULL, immune = is.null(lam), yll = TRUE, note = TRUE) { trsum <- function(x) { x[c(diff(x) == 0, TRUE)] <- NA sum((x[-length(x)] + x[-1])/2, na.rm = TRUE) } if (!immune & is.null(lam)) stop("'lam' is required when immune=FALSE\n") if (!is.null(lam)) { if (any(is.na(lam))) { lam[is.na(lam)] <- 0 warning("NAs in agument 'lam' set to 0") } } if (any(is.na(muD))) { muD[is.na(muD)] <- 0 warning("NAs in agument 'muD' set to 0") } if (any(is.na(muW))) { muW[is.na(muW)] <- 0 warning("NAs in agument 'muW' set to 0") } sD <- surv1(int = int, muD, age.in = age.in, A = A) if (immune) sW <- surv1(int = int, muW, age.in = age.in, A = A) else sW <- surv2(int = int, muW, muD, lam, age.in = age.in, A = A) erl <- cbind(apply(sW[, -1], 2, trsum), apply(sD[, -1], 2, trsum)) * int colnames(erl) <- c("Well", "Dis") rownames(erl) <- colnames(sW)[-1] if (yll) erl <- cbind(erl, YLL = erl[, "Well"] - erl[, "Dis"]) if (immune) { attr(erl, "NOTE") <- "Calculations assume that Well persons cannot get Ill (quite silly!)." if (note) cat("NOTE:", attr(erl, "NOTE"), "\n") } return(erl) } \end{Soutput} \end{Schunk} \ldots and a wrapper for this if we only want the years of life lost returned: \begin{Schunk} \begin{Sinput} > yll \end{Sinput} \begin{Soutput} function (int, muW, muD, lam = NULL, age.in = 0, A = NULL, immune = is.null(lam), note = TRUE) erl(int = int, muW = muW, muD = muD, lam = lam, age.in = age.in, A = A, immune = immune, yll = TRUE, note = note)[, "YLL"] \end{Soutput} \end{Schunk} \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2007a} B~Carstensen. \newblock Age-{P}eriod-{C}ohort models for the {L}exis diagram. \newblock {\em Statistics in Medicine}, 26(15):3018--3045, 2007. \bibitem{Carstensen.2008c} B~Carstensen, JK~Kristensen, P~Ottosen, and K~Borch-Johnsen. \newblock The {D}anish {N}ational {D}iabetes {R}egister: {T}rends in incidence, prevalence and mortality. \newblock {\em Diabetologia}, 51:2187--2196, 2008. \end{thebibliography} \addcontentsline{toc}{chapter}{References} \end{document} Epi/vignettes/toparticle.tex0000644000176200001440000000715613240230017015670 0ustar liggesusers %---------------------------------------------------------------------- %\usepackage[inline]{showlabels} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[english]{babel} \usepackage[font=it,labelfont=normalfont]{caption} \usepackage[colorlinks,urlcolor=blue,linkcolor=red,citecolor=Maroon]{hyperref} % \usepackage[ae,hyper]{Rd} \usepackage[dvipsnames]{xcolor} \usepackage[super]{nth} % \usepackage[retainorgcmds]{IEEEtrantools} \usepackage{makeidx,Sweave,floatflt,amsmath,amsfonts,amsbsy,enumitem,verbatim,dcolumn,needspace} \usepackage{booktabs,longtable,rotating,graphicx,verbatim,fancyhdr,datetime,afterpage,setspace} \usepackage{ifthen,calc,eso-pic,everyshi,pdfpages} \usepackage[abspath]{currfile} % \usepackage{mslapa} \definecolor{blaa}{RGB}{99,99,255} \DeclareGraphicsExtensions{.png,.pdf,.jpg} % Make the Sweave output nicer \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontsize=\footnotesize,fontshape=sl,formatcom=\color{Blue}} \DefineVerbatimEnvironment{Soutput}{Verbatim}{fontsize=\footnotesize,formatcom=\color{Maroon},xleftmargin=0em} \DefineVerbatimEnvironment{Scode}{Verbatim}{fontsize=\footnotesize} \fvset{listparameters={\setlength{\topsep}{0pt}}} \renewenvironment{Schunk}% {\renewcommand{\baselinestretch}{0.85} \vspace{\topsep}}% {\renewcommand{\baselinestretch}{1.00} \vspace{\topsep}} %---------------------------------------------------------------------- % The usual usefuls \input{useful.tex} \setcounter{secnumdepth}{2} \setcounter{tocdepth}{2} %---------------------------------------------------------------------- % How to insert a figure \newcommand{\rwpre}{./graph/gr} \newcommand{\insfig}[3]{ \begin{figure}[h] \centering \includegraphics[width=#2\textwidth]{\rwpre-#1} \caption{#3} \label{fig:#1} % \afterpage{\clearpage} \end{figure}} %---------------------------------------------------------------------- % Set up layout of pages \oddsidemargin 1mm \evensidemargin 1mm \topmargin -5mm \headheight 8mm \headsep 8mm \textheight 230mm \textwidth 165mm %\footheight 5mm \footskip 15mm \renewcommand{\topfraction}{0.9} \renewcommand{\bottomfraction}{0.9} \renewcommand{\textfraction}{0.1} \renewcommand{\floatpagefraction}{0.9} \renewcommand{\headrulewidth}{0.1pt} \setcounter{secnumdepth}{4} \setcounter{tocdepth}{4} %---------------------------------------------------------------------- % Here is the document starting with the titlepage \begin{document} %---------------------------------------------------------------------- % The title page \setcounter{page}{1} \pagenumbering{roman} \pagestyle{plain} \thispagestyle{empty} %\vspace*{0.1\textheight} \flushright {\Huge \bfseries \Title }\ \\[-1.5ex] \noindent\textcolor{blaa}{\rule[-1ex]{\textwidth}{5pt}}\\[2.5ex] \large \Where \\ \Homepage \\ \Dates \\ \Version \\[1em] \normalsize Compiled \today,\ \currenttime\\ from: \texttt{\currfileabspath}\\[1em] \normalsize \vfill \Faculty % End of titlepage \newpage \raggedright \parindent 1em \parskip 0ex % \section*{Preface} % Here is space for the preface % \input{preface} %---------------------------------------------------------------------- % Table of contents \tableofcontents \newpage % \listoftables % \listoffigures % \cleardoublepage %---------------------------------------------------------------------- % General page style \pagenumbering{arabic} \setcounter{page}{1} \pagestyle{fancy} \renewcommand{\sectionmark}[1]{\markright{%\thesection\ \textsl{#1}}{}} \fancyhead[EL]{\bf \thepage} \fancyhead[ER]{\sl \Tit} \fancyhead[OR]{\bf \thepage} \fancyhead[OL]{\rm \rightmark} \fancyfoot{} Epi/vignettes/simLexis.R0000644000176200001440000004201314003562715014722 0ustar liggesusers### R code from vignette source 'simLexis' ### Encoding: UTF-8 ################################################### ### code chunk number 1: simLexis.rnw:23-26 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) ################################################### ### code chunk number 2: start ################################################### options( width=90 ) library( Epi ) print( sessionInfo(), l=F ) ################################################### ### code chunk number 3: Lexis ################################################### data(DMlate) dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) ################################################### ### code chunk number 4: cut ################################################### dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins", new.scale = "t.Ins", split.states = TRUE ) summary( dmi, timeScales=T ) ################################################### ### code chunk number 5: boxes ################################################### boxes( dmi, boxpos = list(x=c(20,20,80,80), y=c(80,20,80,20)), scale.R = 1000, show.BE = TRUE ) ################################################### ### code chunk number 6: split ################################################### Si <- splitLexis( dmi, seq(0,20,1/4), "DMdur" ) summary( Si ) print( subset( Si, lex.id==97 )[,1:10], digits=6 ) ################################################### ### code chunk number 7: knots ################################################### nk <- 5 ( ai.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( ad.kn <- with( subset(Si,lex.Xst=="Dead"), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( di.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( dd.kn <- with( subset(Si,lex.Xst=="Dead"), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( ti.kn <- with( subset(Si,lex.Xst=="Dead(Ins)"), c(0,quantile( t.Ins+lex.dur, probs=(1:(nk-1))/nk ) )) ) ################################################### ### code chunk number 8: Poisson ################################################### library( splines ) DM.Ins <- glm( (lex.Xst=="Ins") ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="DM") ) ci.exp( DM.Ins ) class( DM.Ins ) ################################################### ### code chunk number 9: simLexis.rnw:282-288 ################################################### DM.Ins <- glm.Lexis( Si, from = "DM", to = "Ins", formula = ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex ) ci.exp( DM.Ins ) class( DM.Ins ) ################################################### ### code chunk number 10: simLexis.rnw:293-302 ################################################### DM.Dead <- glm.Lexis( Si, from = "DM", to = "Dead", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + I(Per-2000) + sex ) Ins.Dead <- glm.Lexis( Si, from = "Ins", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + Ns( t.Ins, knots=ti.kn ) + I(Per-2000) + sex ) ################################################### ### code chunk number 11: prop-haz ################################################### All.Dead <- glm.Lexis( Si, to = c("Dead(Ins)","Dead"), formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + lex.Cst + I(Per-2000) + sex ) round( ci.exp( All.Dead ), 3 ) ################################################### ### code chunk number 12: get-dev ################################################### what <- c("null.deviance","df.null","deviance","df.residual") ( rD <- unlist( DM.Dead[what] ) ) ( rI <- unlist( Ins.Dead[what] ) ) ( rA <- unlist( All.Dead[what] ) ) round( c( dd <- rA-(rI+rD), "pVal"=1-pchisq(dd[3],dd[4]+1) ), 3 ) ################################################### ### code chunk number 13: pr-array ################################################### pr.rates <- NArray( list( DMdur = seq(0,12,0.1), DMage = 4:7*10, r.Ins = c(NA,0,2,5), model = c("DM/Ins","All"), what = c("rate","lo","hi") ) ) str( pr.rates ) ################################################### ### code chunk number 14: mknd ################################################### nd <- data.frame( DMdur = as.numeric( dimnames(pr.rates)[[1]] ), lex.Cst = factor( 1, levels=1:4, labels=levels(Si$lex.Cst) ), sex = factor( 1, levels=1:2, labels=c("M","F")) ) ################################################### ### code chunk number 15: make-pred ################################################### for( ia in dimnames(pr.rates)[[2]] ) { dnew <- transform( nd, Age = as.numeric(ia)+DMdur, Per = 1998+DMdur ) pr.rates[,ia,1,"DM/Ins",] <- ci.pred( DM.Dead, newdata = dnew ) pr.rates[,ia,1,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) for( ii in dimnames(pr.rates)[[3]][-1] ) { dnew = transform( dnew, lex.Cst = factor( 2, levels=1:4, labels=levels(Si$lex.Cst) ), t.Ins = ifelse( (DMdur-as.numeric(ii)) >= 0, DMdur-as.numeric(ii), NA ) ) pr.rates[,ia, ii ,"DM/Ins",] <- ci.pred( Ins.Dead, newdata = dnew ) pr.rates[,ia, ii ,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) } } ################################################### ### code chunk number 16: mort-int ################################################### par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1 ) plot( NA, xlim=c(40,82), ylim=c(5,300), bty="n", log="y", xlab="Age", ylab="Mortality rate per 1000 PY" ) abline( v=seq(40,80,5), h=outer(1:9,10^(0:2),"*"), col=gray(0.8) ) for( aa in 4:7*10 ) for( ii in 1:4 ) matshade( aa+as.numeric(dimnames(pr.rates)[[1]]), cbind( pr.rates[,paste(aa),ii,"DM/Ins",], pr.rates[,paste(aa),ii,"All" ,] )*1000, type="l", lty=1, lwd=2, col=c("red","limegreen") ) ################################################### ### code chunk number 17: Tr ################################################### Tr <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = DM.Dead ), "Ins" = list( "Dead(Ins)" = Ins.Dead ) ) ################################################### ### code chunk number 18: make-ini ################################################### str( ini <- Si[NULL,1:9] ) ################################################### ### code chunk number 19: ini-fill ################################################### ini[1:2,"lex.id"] <- 1:2 ini[1:2,"lex.Cst"] <- "DM" ini[1:2,"Per"] <- 1995 ini[1:2,"Age"] <- 60 ini[1:2,"DMdur"] <- 5 ini[1:2,"sex"] <- c("M","F") ini ################################################### ### code chunk number 20: simL ################################################### set.seed( 52381764 ) Nsim <- 5000 system.time( simL <- simLexis( Tr, ini, t.range = 12, N = Nsim ) ) ################################################### ### code chunk number 21: sum-simL ################################################### summary( simL, by="sex" ) ################################################### ### code chunk number 22: Tr.p-simP ################################################### Tr.p <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = All.Dead ), "Ins" = list( "Dead(Ins)" = All.Dead ) ) system.time( simP <- simLexis( Tr.p, ini, t.range = 12, N = Nsim ) ) summary( simP, by="sex" ) ################################################### ### code chunk number 23: Cox-dur ################################################### library( survival ) Cox.Dead <- coxph( Surv( DMdur, DMdur+lex.dur, lex.Xst %in% c("Dead(Ins)","Dead")) ~ Ns( Age-DMdur, knots=ad.kn ) + I(lex.Cst=="Ins") + I(Per-2000) + sex, data = Si ) round( ci.exp( Cox.Dead ), 3 ) ################################################### ### code chunk number 24: TR.c ################################################### Tr.c <- list( "DM" = list( "Ins" = Tr$DM$Ins, "Dead" = Cox.Dead ), "Ins" = list( "Dead(Ins)" = Cox.Dead ) ) system.time( simC <- simLexis( Tr.c, ini, t.range = 12, N = Nsim ) ) summary( simC, by="sex" ) ################################################### ### code chunk number 25: nState ################################################### system.time( nSt <- nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=1995, time.scale="Per" ) ) nSt[1:10,] ################################################### ### code chunk number 26: pstate0 ################################################### pM <- pState( nSt, perm=c(1,2,4,3) ) head( pM ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM ) plot( pM, border="black", col="transparent", lwd=3 ) text( rep(as.numeric(rownames(pM)[nrow(pM)-1]),ncol(pM)), pM[nrow(pM),]-diff(c(0,pM[nrow(pM),]))/5, colnames( pM ), adj=1 ) box( col="white", lwd=3 ) box() ################################################### ### code chunk number 27: pstatex ################################################### clr <- c("limegreen","orange") # expand with a lighter version of the two chosen colors clx <- c( clr, rgb( t( col2rgb( clr[2:1] )*2 + rep(255,3) ) / 3, max=255 ) ) par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men plot( pM, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=1995, time.scale="Per" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) ################################################### ### code chunk number 28: pstatey ################################################### par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men pM <- pState( nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pM, col=clx, xlab="Age" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Age" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:9/10, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) ################################################### ### code chunk number 29: comp-0 ################################################### PrM <- pState( nState( subset(simP,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) PrF <- pState( nState( subset(simP,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxM <- pState( nState( subset(simC,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxF <- pState( nState( subset(simC,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM, border="black", col="transparent", lwd=3 ) lines( PrM, border="blue" , col="transparent", lwd=3 ) lines( CoxM, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "M" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) plot( pF, border="black", col="transparent", lwd=3 ) lines( PrF, border="blue" , col="transparent", lwd=3 ) lines( CoxF, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "F" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) ################################################### ### code chunk number 30: CHANGE1 (eval = FALSE) ################################################### ## source( "../R/simLexis.R", keep.source=TRUE ) ################################################### ### code chunk number 31: CHANGE2 ################################################### simX <- Epi:::simX sim1 <- Epi:::sim1 lint <- Epi:::lint get.next <- Epi:::get.next chop.lex <- Epi:::chop.lex ################################################### ### code chunk number 32: simLexis.rnw:972-975 ################################################### cbind( attr( ini, "time.scales" ), attr( ini, "time.since" ) ) ################################################### ### code chunk number 33: simLexis.rnw:1000-1001 ################################################### simLexis ################################################### ### code chunk number 34: simLexis.rnw:1018-1019 ################################################### simX ################################################### ### code chunk number 35: simLexis.rnw:1031-1032 ################################################### sim1 ################################################### ### code chunk number 36: simLexis.rnw:1044-1045 ################################################### lint ################################################### ### code chunk number 37: simLexis.rnw:1055-1056 ################################################### get.next ################################################### ### code chunk number 38: simLexis.rnw:1065-1066 ################################################### chop.lex ################################################### ### code chunk number 39: simLexis.rnw:1083-1084 ################################################### nState ################################################### ### code chunk number 40: simLexis.rnw:1093-1094 ################################################### pState ################################################### ### code chunk number 41: simLexis.rnw:1098-1100 ################################################### plot.pState lines.pState Epi/vignettes/crisk.R0000644000176200001440000002347414003562515014250 0ustar liggesusers### R code from vignette source 'crisk' ### Encoding: UTF-8 ################################################### ### code chunk number 1: crisk.rnw:24-27 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) ################################################### ### code chunk number 2: crisk.rnw:83-100 ################################################### library(Epi) library(popEpi) data(DMlate) Ldm <- Lexis(entry = list( per = dodm, age = dodm-dobth, tfd = 0 ), exit = list( per = dox ), exit.status = factor( !is.na(dodth), labels = c("DM","Dead") ), data = DMlate ) summary(Ldm, t = T) Mdm <- mcutLexis( Ldm, wh = c('dooad','doins'), new.states = c('OAD','Ins'), precursor = 'DM', seq.states = FALSE, ties = TRUE ) summary( Mdm ) ################################################### ### code chunk number 3: crisk.rnw:105-107 ################################################### Sdm <- splitMulti(factorize(subset(Mdm, lex.Cst == "DM")), tfd = seq(0, 20, 1/12)) ################################################### ### code chunk number 4: boxes5 ################################################### boxes(Mdm, boxpos = list(x = c(15, 50, 15, 85, 85), y = c(85, 50, 15, 85, 15)), scale.R = 100, show.BE = TRUE) ################################################### ### code chunk number 5: boxes4 ################################################### boxes( Relevel(Sdm, c(1, 4, 2, 3)), boxpos = list(x = c(15, 85, 80, 15), y = c(85, 85, 20, 15)), scale.R = 100, show.BE = TRUE ) ################################################### ### code chunk number 6: crisk.rnw:139-142 ################################################### mD <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Dead') mO <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'OAD' ) mI <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Ins' ) ################################################### ### code chunk number 7: crisk.rnw:155-160 ################################################### int <- 1/100 nd <- data.frame( tfd = seq(int,10,int)-int/2 ) # not the same as the split, # and totally unrelated to it rownames(nd) <- nd$tfd str(nd) ################################################### ### code chunk number 8: rates ################################################### matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.02,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) ################################################### ### code chunk number 9: crisk.rnw:194-209 ################################################### # rates at midpoints lD <- ci.pred( mD, nd )[,1] lI <- ci.pred( mI, nd )[,1] lO <- ci.pred( mO, nd )[,1] # cumulative rates and survival fuction at right border of the intervals LD <- cumsum(lD) * int LI <- cumsum(lI) * int LO <- cumsum(lO) * int Sv <- exp( -LD - LI - LO ) # but when integrating to get the cumulative risks we use the average # of the survival function at the two endpoints (adding 1 as the first) mp <- function(x) x - diff(c(1, x)) / 2 rD <- cumsum(lD * mp(Sv)) * int rI <- cumsum(lI * mp(Sv)) * int rO <- cumsum(lO * mp(Sv)) * int ################################################### ### code chunk number 10: crisk.rnw:214-218 ################################################### summary(rD + rI +rO + Sv) oo <- options(digits = 20) cbind(summary(Sv + rD + rI + rO)) options(oo) ################################################### ### code chunk number 11: stack ################################################### zz <- mat2pol(cbind(rD,rI,rO,Sv), x = nd$tfd, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen") ) mm <- t(apply(zz,1,mid<-function(x) x[-1]-diff(x)/2)) text( 9, mm[900,], c("Dead","Ins","OAD","DM"), col = "white" ) box(col = "white",lwd = 3) ################################################### ### code chunk number 12: crisk.rnw:278-280 ################################################### head(cbind(ci.pred(mI,nd), ci.exp(mI,nd) )) head(cbind(ci.pred(mI,nd), exp(ci.lin(mI,nd)[,c(1,5:6)]))) ################################################### ### code chunk number 13: crisk.rnw:285-287 ################################################### str(ci.lin(mI, nd, sample = 4)) head(cbind(ci.pred(mI,nd), exp(ci.lin(mI, nd, sample = 4)))) ################################################### ### code chunk number 14: crisk.rnw:319-321 (eval = FALSE) ################################################### ## setwd("/home/bendix/stat/R/examples") ## source('ci.Crisk.R', echo=TRUE, max=10000) ################################################### ### code chunk number 15: crisk.rnw:326-334 ################################################### system.time( res <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = (1:1000-0.5)/100), nB = 1000, perm = 4:1)) str(res) ################################################### ### code chunk number 16: crisk.rnw:364-372 ################################################### system.time( rsm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = (1:1000-0.5)/100), nB = 2000, sim.res = 'rates')) str(rsm) ################################################### ### code chunk number 17: crisk.rnw:379-387 ################################################### system.time( csm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = (1:1000-0.5)/100), nB = 2000, sim.res = 'crisk')) str(csm) ################################################### ### code chunk number 18: crisk.rnw:406-408 ################################################### Brates <- aperm(apply(rsm, 1:2, Epi:::mnqt), c(2,3,1)) str(Brates) ################################################### ### code chunk number 19: rates-ci ################################################### matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.1,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) matlines(nd$tfd, cbind(Brates[,"Dead",], Brates[,"Ins" ,], Brates[,"OAD" ,])*1000, col = c("white","black","black"), lty = 3, lwd=c(3,1,1)) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) ################################################### ### code chunk number 20: crates ################################################### matshade(c(0,nd$tfd+1/200), cbind(res$Crisk[,"Dead",], res$Crisk[,"Ins" ,], res$Crisk[,"OAD" ,]), plot = TRUE, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Cumulative probability", col = c("black","red","blue")) text(8, 0.3 + c(1,0,2)/25, c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) ################################################### ### code chunk number 21: crisk.rnw:467-469 ################################################### str(res$Crisk) str(res$Srisk) ################################################### ### code chunk number 22: stack-ci ################################################### zz <- mat2pol(res$Crisk[,c("Dead","Ins","OAD","Surv"),1], x = as.numeric(dimnames(res$Crisk)[[1]])/100, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen") ) mm <- t(apply(zz, 1, mid<-function(x) x[-1] - diff(x) / 2)) text( 9, mm[900,], c("Dead","Ins","OAD","DM"), col = "white" ) matshade(as.numeric(dimnames(res$Srisk)[[1]])/100, cbind(res$Srisk[,1,], res$Srisk[,2,], res$Srisk[,3,]), col = 'transparent', col.shade = "white", alpha = 0.3) ################################################### ### code chunk number 23: crisk.rnw:503-504 ################################################### str(res$Stime) ################################################### ### code chunk number 24: crisk.rnw:507-510 ################################################### s510 <- res$Stime[1:2*500,,] dimnames(s510)[[1]] <- c(" 5 yr","10 yr") round(ftable(s510, row.vars=1:2), 2) Epi/vignettes/yll.R0000644000176200001440000001611014003563041013715 0ustar liggesusers### R code from vignette source 'yll' ### Encoding: UTF-8 ################################################### ### code chunk number 1: yll.rnw:21-24 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) ################################################### ### code chunk number 2: states ################################################### library( Epi ) TM <- matrix(NA,4,4) rownames(TM) <- colnames(TM) <- c("Well","DM","Dead","Dead(DM)") TM[1,2:3] <- TM[2,4] <- 1 zz <- boxes( TM, boxpos=list(x=c(20,80,20,80),y=c(80,80,20,20)), wm=1.5, hm=4 ) ################################################### ### code chunk number 3: states ################################################### zz$Arrowtext <- c( expression(lambda), expression(mu[W]), expression(mu[D][M]) ) boxes( zz ) ################################################### ### code chunk number 4: yll.rnw:265-266 ################################################### data( DMepi ) ################################################### ### code chunk number 5: yll.rnw:271-273 ################################################### str( DMepi ) head( DMepi ) ################################################### ### code chunk number 6: yll.rnw:293-297 ################################################### DMepi <- transform( subset( DMepi, A>30 ), D.T = D.nD + D.DM, Y.T = Y.nD + Y.DM ) head(DMepi) ################################################### ### code chunk number 7: yll.rnw:303-329 ################################################### # Knots used in all models ( a.kn <- seq(40,95,,6) ) ( p.kn <- seq(1997,2015,,4) ) ( c.kn <- seq(1910,1976,,6) ) # Check the number of events between knots ae <- xtabs( cbind(D.nD,D.DM,X) ~ cut(A,c(30,a.kn,Inf)) + sex, data=DMepi ) ftable( addmargins(ae,1), col.vars=3:2 ) pe <- xtabs( cbind(D.nD,D.DM,X) ~ cut(P,c(1990,p.kn,Inf)) + sex, data=DMepi ) ftable( addmargins(pe,1), col.vars=3:2 ) ce <- xtabs( cbind(D.nD,D.DM,X) ~ cut(P-A,c(-Inf,c.kn,Inf)) + sex, data=DMepi ) ftable( addmargins(ce,1), col.vars=3:2 ) # Fit an APC-model for all transitions, seperately for men and women mW.m <- glm( D.nD ~ -1 + Ns(A ,knots=a.kn,int=TRUE) + Ns( P,knots=p.kn,ref=2005) + Ns(P-A,knots=c.kn,ref=1950), offset = log(Y.nD), family = poisson, data = subset( DMepi, sex=="M" ) ) mD.m <- update( mW.m, D.DM ~ . , offset=log(Y.DM) ) mT.m <- update( mW.m, D.T ~ . , offset=log(Y.T ) ) lW.m <- update( mW.m, X ~ . ) # Model for women mW.f <- update( mW.m, data = subset( DMepi, sex=="F" ) ) mD.f <- update( mD.m, data = subset( DMepi, sex=="F" ) ) mT.f <- update( mT.m, data = subset( DMepi, sex=="F" ) ) lW.f <- update( lW.m, data = subset( DMepi, sex=="F" ) ) ################################################### ### code chunk number 8: yll.rnw:336-373 ################################################### a.ref <- 30:90 p.ref <- 1996:2016 aYLL <- NArray( list( type = c("Imm","Tot","Sus"), sex = levels( DMepi$sex ), age = a.ref, date = p.ref ) ) str( aYLL ) system.time( for( ip in p.ref ) { nd <- data.frame( A = seq(30,90,0.2)+0.1, P = ip, Y.nD = 1, Y.DM = 1, Y.T = 1 ) muW.m <- ci.pred( mW.m, nd )[,1] muD.m <- ci.pred( mD.m, nd )[,1] muT.m <- ci.pred( mT.m, nd )[,1] lam.m <- ci.pred( lW.m, nd )[,1] muW.f <- ci.pred( mW.f, nd )[,1] muD.f <- ci.pred( mD.f, nd )[,1] muT.f <- ci.pred( mT.f, nd )[,1] lam.f <- ci.pred( lW.f, nd )[,1] aYLL["Imm","M",,paste(ip)] <- yll( int=0.2, muW.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Imm","F",,paste(ip)] <- yll( int=0.2, muW.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Tot","M",,paste(ip)] <- yll( int=0.2, muT.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Tot","F",,paste(ip)] <- yll( int=0.2, muT.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Sus","M",,paste(ip)] <- yll( int=0.2, muW.m, muD.m, lam=lam.m, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Sus","F",,paste(ip)] <- yll( int=0.2, muW.f, muD.f, lam=lam.f, A=a.ref, age.in=30, note=FALSE )[-1] } ) round( ftable( aYLL[,,seq(1,61,10),], col.vars=c(3,2) ), 1 ) ################################################### ### code chunk number 9: imm ################################################### plyll <- function(wh){ par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, bty="n", las=1 ) matplot( a.ref, aYLL[wh,"M",,], type="l", lty=1, col="blue", lwd=1:2, ylim=c(0,12), xlab="Age", ylab="Years lost to DM", yaxs="i" ) abline(v=50,h=1:10,col=gray(0.7)) text( 90, 11, "Men", col="blue", adj=1 ) text( 40, aYLL[wh,"M","40","1996"], "1996", adj=c(0,0), col="blue" ) text( 43, aYLL[wh,"M","44","2016"], "2016", adj=c(1,1), col="blue" ) matplot( a.ref, aYLL[wh,"F",,], type="l", lty=1, col="red", lwd=1:2, ylim=c(0,12), xlab="Age", ylab="Years lost to DM", yaxs="i" ) abline(v=50,h=1:10,col=gray(0.7)) text( 90, 11, "Women", col="red", adj=1 ) text( 40, aYLL[wh,"F","40","1996"], "1996", adj=c(0,0), col="red" ) text( 43, aYLL[wh,"F","44","2016"], "2016", adj=c(1,1), col="red" ) } plyll("Imm") ################################################### ### code chunk number 10: tot ################################################### plyll("Tot") ################################################### ### code chunk number 11: sus ################################################### plyll("Sus") ################################################### ### code chunk number 12: CHANGE1 (eval = FALSE) ################################################### ## source( "../R/erl.R", keep.source=TRUE ) ################################################### ### code chunk number 13: CHANGE2 ################################################### surv1 <- Epi::surv1 surv2 <- Epi::surv2 erl1 <- Epi::erl1 erl <- Epi::erl yll <- Epi::yll ################################################### ### code chunk number 14: yll.rnw:484-485 ################################################### surv1 ################################################### ### code chunk number 15: yll.rnw:489-490 ################################################### erl1 ################################################### ### code chunk number 16: yll.rnw:497-498 ################################################### surv2 ################################################### ### code chunk number 17: yll.rnw:502-503 ################################################### erl ################################################### ### code chunk number 18: yll.rnw:507-508 ################################################### yll Epi/vignettes/simLexis.tex0000644000176200001440000021405214003563037015323 0ustar liggesusers%\VignetteIndexEntry{Simulation of multistate models with multiple timescales: simLexis} \documentclass[a4paper,dvipsnames,twoside,12pt]{report} \newcommand{\Title}{Simulation of\\ multistate models with\\ multiple timescales:\\ \texttt{simLexis} in the \texttt{Epi} package} \newcommand{\Tit}{Multistate models with multiple timescales} \newcommand{\Version}{Version 2.5} \newcommand{\Dates}{\today} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://BendixCarstensen.com/Epi/simLexis.pdf}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk}\\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./simLexis} \chapter{Using \texttt{simLexis}} \section{Introduction} This vignette explains the machinery behind simulation of life histories through multistate models implemented in \texttt{simLexis}. In \texttt{simLexis} transition rates are allowed to depend on multiple time scales, including timescales defined as time since entry to a particular state (duration). This therefore also covers the case where time \emph{at} entry into a state is an explanatory variable for the rates, since time at entry is merely time minus duration. Thus, the set-up here goes beyond Markov- and semi-Markov-models, and brings simulation based estimation of state-occupancy probabilities into the realm of realistic multistate models. The basic idea is to simulate a new \texttt{Lexis} object \cite{Plummer.2011,Carstensen.2011a} as defined in the \texttt{Epi} package for \R, based on 1) a multistate model defined by its states and the transition rates between them and 2) an initial population of individuals. Thus the output will be a \texttt{Lexis} object describing the transitions of a predefined set of persons through a multistate model. Therefore, if persons are defined to be identical at start, then calculation of the probability of being in a particular state at a given time boils down to a simple enumeration of the fraction of the persons in the particular state at the given time. Bar of course the (binomial) simulation error, but this can be brought down by simulation a sufficiently large number of persons. An observed \texttt{Lexis} object with follow-up of persons through a number of states will normally be the basis for estimation of transition rates between states, and thus will contain all information about covariates determining the occurrence rates, in particular the \emph{timescales} \cite{Iacobelli.2013}. Hence, the natural input to simulation from an estimated multistate model will typically be an object of the same structure as the originally observed. Since transitions and times are what is simulated, any values of \texttt{lex.Xst} and \texttt{lex.dur} in the input object will of course be ignored. This first chapter of this vignette shows by an example how to use the function \texttt{simLexis} and display the results. The second chapter discusses in more detail how the simulation machinery is implemented and is not needed for the practical use of \texttt{simLexis}. \section{\texttt{simLexis} in practice} This section is largely a commented walk-trough of the example from the help-page of \texttt{simLexis}, with a larger number of simulated persons in order to minimize the pure simulation variation. When we want to simulate transition times through a multistate model where transition rates may depend on time since entry to the current or a previous state, it is essential that we have a machinery to keep track of the transition time on \emph{all} time scales, as well as a mechanism that can initiate a new time scale to 0 when a transition occurs to a state where we shall use time since entry as determinant of exit rates from that state. This is provided by \texttt{simLexis}. \subsection{Input for the simulation} Input for simulation of a single trajectory through a multistate model requires a representation of the \emph{current status} of a person; the starting conditions. The object that we supply to the simulation function must contain information about all covariates and all timescales upon which transitions depend, and in particular which one(s) of the timescales that are defined as time since entry into a particular state. Hence, starting conditions should be represented as a \texttt{Lexis} object (where \texttt{lex.dur} and \texttt{lex.Xst} are ignored, since there is no follow-up yet), where the time scale information is in the attributes \texttt{time.scales} and \texttt{time.since} respectively. Note that \texttt{time.scales} attribute is a vector of names of variables in the \texttt{Lexis} object, so all of these variables should be present even if they are not used in the models for the transitions, and they should be set to 0; if they are not in the initial dataset, \texttt{simLexis} will crash, if they are \texttt{NA}, the \texttt{simLexis} will produce an object with 0 rows. Thus there are two main arguments to a function to simulate from a multistate model: \begin{enumerate} \item A \texttt{Lexis} object representing the initial states and covariates of the population to be simulated. This has to have the same structure as the original \texttt{Lexis} object representing the multistate model from which transition rates in the model were estimated. As noted above, the values for \texttt{lex.Xst} and \texttt{lex.dur} are not required (since these are the quantities that will be simulated). \item A transition object, representing the transition intensities between states, which should be a list of lists of intensity representations. As an intensity representation we mean a function that for a given \texttt{Lexis} object can be used to produce estimates of the transition intensities at a set of supplied time points. The names of the elements of the transition object (which are lists) will be names of the \emph{transient} states, that is the states \emph{from} which a transition can occur. The names of the elements of each of these lists are the names of states \emph{to} which transitions can occur (which may be either transient or absorbing states). Hence, if the transition object is called \texttt{Tr} then \verb+TR$A$B+ (or \verb+Tr[["A"]][["B"]]+) will represent the transition intensity from state \texttt{A} to the state \texttt{B}. The entries in the transition object can be either \texttt{glm} objects (either with \texttt{poisson} or \texttt{poisreg} family), representing Poisson models for the transitions, \texttt{coxph} objects representing an intensity model along one time scale, or simply a function that takes a \texttt{Lexis} object as input and returns an estimated intensity for each row. \end{enumerate} In addition to these two input items, there will be a couple of tuning parameters. The output of the function will simply be a \texttt{Lexis} object with simulated transitions between states. This will be the basis for deriving sensible statistics from the \texttt{Lexis} object --- see next section. \section{Setting up a \texttt{Lexis} object} As an example we will use the \texttt{DMlate} dataset from the \texttt{Epi} package; it is a dataset simulated to resemble a random sample of 10,000 patients from the Danish National Diabetes Register. We start by loading the \texttt{Epi} package: \begin{Schunk} \begin{Sinput} > options( width=90 ) > library( Epi ) > print( sessionInfo(), l=F ) \end{Sinput} \begin{Soutput} R version 3.6.3 (2020-02-29) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 14.04.6 LTS Matrix products: default BLAS: /usr/lib/openblas-base/libopenblas.so.0 LAPACK: /usr/lib/lapack/liblapack.so.3.0 attached base packages: [1] utils datasets graphics grDevices stats methods base other attached packages: [1] Epi_2.43 loaded via a namespace (and not attached): [1] Rcpp_1.0.3 magrittr_1.5 splines_3.6.3 MASS_7.3-53 [5] tidyselect_0.2.5 lattice_0.20-41 R6_2.4.1 rlang_0.4.4 [9] plyr_1.8.5 dplyr_0.8.4 cmprsk_2.2-7 tools_3.6.3 [13] parallel_3.6.3 grid_3.6.3 data.table_1.12.0 nlme_3.1-149 [17] mgcv_1.8-33 survival_3.2-7 assertthat_0.2.1 tibble_2.1.3 [21] etm_1.0.4 numDeriv_2016.8-1 crayon_1.3.4 Matrix_1.2-18 [25] purrr_0.3.0 glue_1.3.1 compiler_3.6.3 pillar_1.4.3 [29] zoo_1.8-4 pkgconfig_2.0.3 \end{Soutput} \end{Schunk} First we load the diabetes data and set up a simple illness-death model: \begin{Schunk} \begin{Sinput} > data(DMlate) > dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), + exit = list(Per=dox), + exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), + data = DMlate ) \end{Sinput} \begin{Soutput} NOTE: entry.status has been set to "DM" for all. NOTE: Dropping 4 rows with duration of follow up < tol \end{Soutput} \end{Schunk} This is just data for a simple survival model with states \texttt{DM} and \texttt{Dead}. Now we cut the follow-up at insulin start, which for the majority of patients (T2D) is a clinical indicator of deterioration of disease regulation. We therefore also introduce a new timescale, and split the non-precursor states, so that we can address the question of ever having been on insulin: \begin{Schunk} \begin{Sinput} > dmi <- cutLexis( dml, cut = dml$doins, + pre = "DM", + new.state = "Ins", + new.scale = "t.Ins", + split.states = TRUE ) > summary( dmi, timeScales=T ) \end{Sinput} \begin{Soutput} Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 6157 1694 2048 0 9899 3742 45885.49 9899 Ins 0 1340 0 451 1791 451 8387.77 1791 Sum 6157 3034 2048 451 11690 4193 54273.27 9996 Timescales: Per Age DMdur t.Ins "" "" "" "Ins" \end{Soutput} \end{Schunk} Note that we show the time scales in the \texttt{Lexis} object, and that it is indicated that the time scale \texttt{t.Ins} is defined as time since entry into stat state \texttt{Ins.} We can show how many person-years we have and show the number of transitions and transition rates (per 1000), using the \texttt{boxes.Lexis} function to display the states and the number of transitions between them: \begin{Schunk} \begin{Sinput} > boxes( dmi, boxpos = list(x=c(20,20,80,80), + y=c(80,20,80,20)), + scale.R = 1000, show.BE = TRUE ) \end{Sinput} \end{Schunk} \insfig{boxes}{0.8}{Data overview for the \textrm{\tt dmi} dataset. Numbers in the boxes are person-years and the number of persons who begin, resp. end their follow-up in each state, and numbers on the arrows are no. of transitions and rates (transition intensities) per 1000 PY.} \section{Analysis of rates} In the \texttt{Lexis} object (which is just a data frame) each person is represented by one record for each transient state occupied, thus in this case either 1 or 2 records; those who have a recorded time both without and with insulin have two records. In order to be able to fit Poisson models with occurrence rates varying by the different time-scales, we split the follow-up in 3-month intervals for modeling: \begin{Schunk} \begin{Sinput} > Si <- splitLexis( dmi, seq(0,20,1/4), "DMdur" ) > summary( Si ) \end{Sinput} \begin{Soutput} Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 184986 1694 2048 0 188728 3742 45885.49 9899 Ins 0 34707 0 451 35158 451 8387.77 1791 Sum 184986 36401 2048 451 223886 4193 54273.27 9996 \end{Soutput} \begin{Sinput} > print( subset( Si, lex.id==97 )[,1:10], digits=6 ) \end{Sinput} \begin{Soutput} lex.id Per Age DMdur t.Ins lex.dur lex.Cst lex.Xst sex dobth 2142 97 1997.55 58.9268 0.00000 NA 0.2500000 DM DM F 1938.62 2143 97 1997.80 59.1768 0.25000 NA 0.2500000 DM DM F 1938.62 2144 97 1998.05 59.4268 0.50000 NA 0.2500000 DM DM F 1938.62 2145 97 1998.30 59.6768 0.75000 NA 0.2500000 DM DM F 1938.62 2146 97 1998.55 59.9268 1.00000 NA 0.2500000 DM DM F 1938.62 2147 97 1998.80 60.1768 1.25000 NA 0.2500000 DM DM F 1938.62 2148 97 1999.05 60.4268 1.50000 NA 0.2500000 DM DM F 1938.62 2149 97 1999.30 60.6768 1.75000 NA 0.2500000 DM DM F 1938.62 2150 97 1999.55 60.9268 2.00000 NA 0.1793292 DM Ins F 1938.62 2151 97 1999.72 61.1061 2.17933 0.0000000 0.0706708 Ins Ins F 1938.62 2152 97 1999.80 61.1768 2.25000 0.0706708 0.2500000 Ins Ins F 1938.62 2153 97 2000.05 61.4268 2.50000 0.3206708 0.2500000 Ins Ins F 1938.62 2154 97 2000.30 61.6768 2.75000 0.5706708 0.2500000 Ins Ins F 1938.62 2155 97 2000.55 61.9268 3.00000 0.8206708 0.0116359 Ins Dead(Ins) F 1938.62 \end{Soutput} \end{Schunk} Note that when we split the follow-up, each person's follow up now consists of many records, each with the \emph{current} values of the timescales at the start of the interval represented by the record. In the modeling we shall assume that the rates are constant within each 6-month interval, but the \emph{size} of these rates we model as smooth functions of the time scales (that is the values at the beginning of each interval). The approach often used in epidemiology where one parameter is attached to each interval of time (or age) is not feasible when more than one time scale is used, because intervals are not classified the same way on all timescales. We shall use natural splines (restricted cubic splines) for the analysis of rates, and hence we must allocate knots for the splines. This is done for each of the time-scales, and separately for the transition out of states \texttt{DM} and \texttt{Ins}. For age, we place the knots so that the number of events is the same between each pair of knots, but only half of this beyond each of the boundary knots, whereas for the timescales \texttt{DMdur} and \texttt{tIns} where we have observation from a well-defined 0, we put knots at 0 and place the remaining knots so that the number of events is the same between each pair of knots as well as outside the boundary knots. \begin{Schunk} \begin{Sinput} > nk <- 5 > ( ai.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), + quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) \end{Sinput} \begin{Soutput} 10% 30% 50% 70% 90% 23.23751 48.82218 58.63244 67.79028 78.88542 \end{Soutput} \begin{Sinput} > ( ad.kn <- with( subset(Si,lex.Xst=="Dead"), + quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) \end{Sinput} \begin{Soutput} 10% 30% 50% 70% 90% 61.91951 72.52731 78.43121 83.32348 90.15195 \end{Soutput} \begin{Sinput} > ( di.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), + c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) \end{Sinput} \begin{Soutput} 20% 40% 60% 80% 0.00000000 0.06570842 0.45448323 3.28761123 6.63764545 \end{Soutput} \begin{Sinput} > ( dd.kn <- with( subset(Si,lex.Xst=="Dead"), + c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) \end{Sinput} \begin{Soutput} 20% 40% 60% 80% 0.0000000 0.7687885 2.1327858 4.0465435 6.5232033 \end{Soutput} \begin{Sinput} > ( ti.kn <- with( subset(Si,lex.Xst=="Dead(Ins)"), + c(0,quantile( t.Ins+lex.dur, probs=(1:(nk-1))/nk ) )) ) \end{Sinput} \begin{Soutput} 20% 40% 60% 80% 0.0000000 0.3093771 1.1307324 2.5489391 4.9117043 \end{Soutput} \end{Schunk} Note that when we tease out the event records for transition to \emph{transient} states (in this case \texttt{Ins}, that is \verb|lex.Xst=="Ins"|), we should add \verb|lex.Cst!=lex.Xst|, to include only transition records and avoiding including records of sojourn time in the transient state. We then fit Poisson models to transition rates, using the wrapper \texttt{Ns} from the \texttt{Epi} package to simplify the specification of the rates: \begin{Schunk} \begin{Sinput} > library( splines ) > DM.Ins <- glm( (lex.Xst=="Ins") ~ Ns( Age , knots=ai.kn ) + + Ns( DMdur, knots=di.kn ) + + I(Per-2000) + sex, + family=poisson, offset=log(lex.dur), + data = subset(Si,lex.Cst=="DM") ) > ci.exp( DM.Ins ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% (Intercept) 1.37516629 1.21414923 1.55753699 Ns(Age, knots = ai.kn)1 0.23411761 0.19185266 0.28569349 Ns(Age, knots = ai.kn)2 0.23166177 0.19576557 0.27414000 Ns(Age, knots = ai.kn)3 0.02835009 0.02284379 0.03518363 Ns(Age, knots = ai.kn)4 0.38067392 0.32945713 0.43985278 Ns(DMdur, knots = di.kn)1 0.04462626 0.03373451 0.05903459 Ns(DMdur, knots = di.kn)2 0.22388988 0.19028663 0.26342723 Ns(DMdur, knots = di.kn)3 0.03379141 0.02574708 0.04434907 Ns(DMdur, knots = di.kn)4 0.47100646 0.40783317 0.54396529 I(Per - 2000) 0.97381513 0.96082049 0.98698552 sexF 0.73757407 0.66886782 0.81333785 \end{Soutput} \begin{Sinput} > class( DM.Ins ) \end{Sinput} \begin{Soutput} [1] "glm" "lm" \end{Soutput} \end{Schunk} We can also fit this model with a slightly simpler syntax using the \texttt{glm.Lexis} function: \begin{Schunk} \begin{Sinput} > DM.Ins <- glm.Lexis( Si, from = "DM", to = "Ins", + formula = ~ Ns( Age , knots=ai.kn ) + + Ns( DMdur, knots=di.kn ) + + I(Per-2000) + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object Si with log link: Rates for the transition: DM->Ins \end{Soutput} \begin{Sinput} > ci.exp( DM.Ins ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% (Intercept) 1.37516630 1.21415038 1.55753552 Ns(Age, knots = ai.kn)1 0.23411761 0.19185214 0.28569426 Ns(Age, knots = ai.kn)2 0.23166177 0.19576473 0.27414118 Ns(Age, knots = ai.kn)3 0.02835009 0.02284374 0.03518371 Ns(Age, knots = ai.kn)4 0.38067392 0.32945601 0.43985427 Ns(DMdur, knots = di.kn)1 0.04462625 0.03373347 0.05903639 Ns(DMdur, knots = di.kn)2 0.22388988 0.19028599 0.26342813 Ns(DMdur, knots = di.kn)3 0.03379141 0.02574705 0.04434912 Ns(DMdur, knots = di.kn)4 0.47100646 0.40783201 0.54396683 I(Per - 2000) 0.97381513 0.96082027 0.98698574 sexF 0.73757407 0.66886641 0.81333956 \end{Soutput} \begin{Sinput} > class( DM.Ins ) \end{Sinput} \begin{Soutput} [1] "glm.lex" "glm" "lm" \end{Soutput} \end{Schunk} So we have a slightly simpler syntax, and we get an informative message of which transition(s) we are modeling. However we do not have \texttt{update} method for these objects. \begin{Schunk} \begin{Sinput} > DM.Dead <- glm.Lexis( Si, from = "DM", to = "Dead", + formula = ~ Ns( Age , knots=ad.kn ) + + Ns( DMdur, knots=dd.kn ) + + I(Per-2000) + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object Si with log link: Rates for the transition: DM->Dead \end{Soutput} \begin{Sinput} > Ins.Dead <- glm.Lexis( Si, from = "Ins", + formula = ~ Ns( Age , knots=ad.kn ) + + Ns( DMdur, knots=dd.kn ) + + Ns( t.Ins, knots=ti.kn ) + + I(Per-2000) + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object Si with log link: Rates for the transition: Ins->Dead(Ins) \end{Soutput} \end{Schunk} Note the similarity of the code used to fit the three models, is is mainly redefining the response variable (\texttt{to} state) and the subset of the data used (\texttt{from} state). Also note that the last model need no specification of \texttt{to}, the default is to model all transitions from the \texttt{from} state, and his case there is only one. \section{The mortality rates} This section discusses in some detail how to extract ad display the mortality rates from the models fitted. But it is not necessary for understanding how to use \texttt{simLexis} in practice. \subsection{Proportionality of mortality rates} Note that we have fitted separate models for the three transitions, there is no assumption of proportionality between the mortality rates from \texttt{DM} and \texttt{Ins}. However, there is nothing that prevents us from testing this assumption; we can just fit a model for the mortality rates in the entire data frame \texttt{Si}, and compare the deviance from this with the sum of the deviances from the separate models using the \texttt{glm.Lexis} function: \begin{Schunk} \begin{Sinput} > All.Dead <- glm.Lexis( Si, to = c("Dead(Ins)","Dead"), + formula = ~ Ns( Age , knots=ad.kn ) + + Ns( DMdur, knots=dd.kn ) + + lex.Cst + + I(Per-2000) + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object Si with log link: Rates for transitions: Ins->Dead(Ins), DM->Dead \end{Soutput} \begin{Sinput} > round( ci.exp( All.Dead ), 3 ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% (Intercept) 0.057 0.049 0.065 Ns(Age, knots = ad.kn)1 4.101 3.462 4.858 Ns(Age, knots = ad.kn)2 4.661 4.064 5.346 Ns(Age, knots = ad.kn)3 15.434 13.548 17.583 Ns(Age, knots = ad.kn)4 7.509 6.695 8.421 Ns(DMdur, knots = dd.kn)1 0.466 0.384 0.565 Ns(DMdur, knots = dd.kn)2 0.642 0.563 0.731 Ns(DMdur, knots = dd.kn)3 0.229 0.165 0.318 Ns(DMdur, knots = dd.kn)4 0.796 0.713 0.888 lex.CstIns 2.168 1.947 2.415 I(Per - 2000) 0.965 0.954 0.977 sexF 0.665 0.614 0.721 \end{Soutput} \end{Schunk} Incidentally we could have dispensed with the \texttt{to=} argument too, because the default is to take \texttt{to} to be all absorbing states in the model. From the parameter values we would in a simple setting just claim that start of insulin-treatment was associated with a slightly more than doubling of mortality. The model \texttt{All.dead} assumes that the age- and DM-duration effects on mortality in the \texttt{DM} and \texttt{Ins} states are the same, and moreover that there is no effect of insulin duration, but merely a mortality that is larger by a multiplicative constant not depending on insulin duration. The model \texttt{DM.Dead} has 8 parameters to describe the dependency on age and DM duration, the model \texttt{Ins.Dead} has 12 for the same plus the insulin duration (a natural spline with $k$ knots gives $k-1$ parameters, and we chose $k=5$ above). We can compare the fit of the simple proportional hazards model with the fit of the separate models for the two mortality rates, by adding up the deviances and d.f. from these: \begin{Schunk} \begin{Sinput} > what <- c("null.deviance","df.null","deviance","df.residual") > ( rD <- unlist( DM.Dead[what] ) ) \end{Sinput} \begin{Soutput} null.deviance df.null deviance df.residual 22535.77 188727.00 20412.81 188717.00 \end{Soutput} \begin{Sinput} > ( rI <- unlist( Ins.Dead[what] ) ) \end{Sinput} \begin{Soutput} null.deviance df.null deviance df.residual 4867.127 35157.000 4211.735 35143.000 \end{Soutput} \begin{Sinput} > ( rA <- unlist( All.Dead[what] ) ) \end{Sinput} \begin{Soutput} null.deviance df.null deviance df.residual 27415.21 223885.00 24705.70 223874.00 \end{Soutput} \begin{Sinput} > round( c( dd <- rA-(rI+rD), "pVal"=1-pchisq(dd[3],dd[4]+1) ), 3 ) \end{Sinput} \begin{Soutput} null.deviance df.null deviance df.residual pVal.deviance 12.314 1.000 81.154 14.000 0.000 \end{Soutput} \end{Schunk} Thus we see there is a substantial non-proportionality of mortality rates from the two states; but a test provides no clue whatsoever to the particular \emph{shape} of the non-proportionality. To this end, we shall explore the predicted mortalities under the two models quantitatively in more detail. Note that the reason that there is a difference in the null deviances (and a difference of 1 in the null d.f.) is that the null deviance of \texttt{All.Dead} refer to a model with a single intercept, that is a model with constant and \emph{identical} mortality rates from the states \texttt{DM} and \texttt{Ins}, whereas the null models for \texttt{DM.Dead} and \texttt{Ins.Dead} have constant but \emph{different} mortality rates from the states \texttt{DM} and \texttt{Ins}. This is however irrelevant for the comparison of the \emph{residual} deviances. \subsection{How the mortality rates look} If we want to see how the mortality rates are modelled in \texttt{DM.Dead} and \texttt{Ins.Dead} in relation to \texttt{All.Dead}, we make a prediction of rates for say men diagnosed in different ages and going on insulin at different times after this. So we consider men diagnosed in ages 40, 50, 60 and 70, and who either never enter insulin treatment or do it 0, 2 or 5 years after diagnosis of DM. To this end we create a prediction data frame where we have observation times from diagnosis and 12 years on (longer would not make sense as this is the extent of the data). But we start by setting up an array to hold the predicted mortality rates, classified by diabetes duration, age at diabetes onset, time of insulin onset, and of course type of model. What we want to do is to plot the age-specific mortality rates for persons not on insulin, and for persons starting insulin at different times after DM. The mortality curves start at the age where the person gets diabetes and continues 12 years; for persons on insulin they start at the age when they initiate insulin. \begin{Schunk} \begin{Sinput} > pr.rates <- NArray( list( DMdur = seq(0,12,0.1), + DMage = 4:7*10, + r.Ins = c(NA,0,2,5), + model = c("DM/Ins","All"), + what = c("rate","lo","hi") ) ) > str( pr.rates ) \end{Sinput} \begin{Soutput} logi [1:121, 1:4, 1:4, 1:2, 1:3] NA NA NA NA NA NA ... - attr(*, "dimnames")=List of 5 ..$ DMdur: chr [1:121] "0" "0.1" "0.2" "0.3" ... ..$ DMage: chr [1:4] "40" "50" "60" "70" ..$ r.Ins: chr [1:4] NA "0" "2" "5" ..$ model: chr [1:2] "DM/Ins" "All" ..$ what : chr [1:3] "rate" "lo" "hi" \end{Soutput} \end{Schunk} For convenience the \texttt{Epi} package contains a function that computes predicted (log-)rates with c.i. --- it is merely a wrapper for \texttt{predict.glm}. So we set up the prediction data frame and modify it in loops over ages at onset and insulin onset in order to collect the predicted rates in different scenarios: \begin{Schunk} \begin{Sinput} > nd <- data.frame( DMdur = as.numeric( dimnames(pr.rates)[[1]] ), + lex.Cst = factor( 1, levels=1:4, + labels=levels(Si$lex.Cst) ), + sex = factor( 1, levels=1:2, labels=c("M","F")) ) \end{Sinput} \end{Schunk} Note that we did \emph{not} insert \texttt{lex.dur} as covariate in the prediction frame. This would be required if we used the \texttt{poisson} family with the \texttt{glm}, but the wrapper \texttt{glm.Lexis} uses the \texttt{poisreg} family, so \texttt{lex.dur} is ignored and predictions always comes in the (inverse) units of \texttt{lex.dur}. So we get rates per 1 person-year in the predictions. \begin{Schunk} \begin{Sinput} > for( ia in dimnames(pr.rates)[[2]] ) + { + dnew <- transform( nd, Age = as.numeric(ia)+DMdur, + Per = 1998+DMdur ) + pr.rates[,ia,1,"DM/Ins",] <- ci.pred( DM.Dead, newdata = dnew ) + pr.rates[,ia,1,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) + for( ii in dimnames(pr.rates)[[3]][-1] ) + { + dnew = transform( dnew, lex.Cst = factor( 2, levels=1:4, + labels=levels(Si$lex.Cst) ), + t.Ins = ifelse( (DMdur-as.numeric(ii)) >= 0, + DMdur-as.numeric(ii), NA ) ) + pr.rates[,ia, ii ,"DM/Ins",] <- ci.pred( Ins.Dead, newdata = dnew ) + pr.rates[,ia, ii ,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) + } + } \end{Sinput} \end{Schunk} So for each age at DM onset we make a plot of the mortality as function of current age both for those with no insulin treatment and those that start insulin treatment 0, 2 and 5 years after diabetes diagnosis, thus 4 curves (with c.i.). These curves are replicated with a different color for the simplified model. \begin{Schunk} \begin{Sinput} > par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1 ) > plot( NA, xlim=c(40,82), ylim=c(5,300), bty="n", + log="y", xlab="Age", ylab="Mortality rate per 1000 PY" ) > abline( v=seq(40,80,5), h=outer(1:9,10^(0:2),"*"), col=gray(0.8) ) > for( aa in 4:7*10 ) for( ii in 1:4 ) + matshade( aa+as.numeric(dimnames(pr.rates)[[1]]), + cbind( pr.rates[,paste(aa),ii,"DM/Ins",], + pr.rates[,paste(aa),ii,"All" ,] )*1000, + type="l", lty=1, lwd=2, + col=c("red","limegreen") ) \end{Sinput} \end{Schunk} \insfig{mort-int}{0.9}{Estimated mortality rates for male diabetes patients with no insulin (lower sets of curves) and insulin (upper curves), with DM onset in age 40, 50, 60 and 70. The red curves are from the models with separate age effects for persons with and without insulin, and a separate effect of insulin duration. The green curves are from the model with common age-effects and only a time-dependent effect of insulin, assuming no effect of insulin duration (the classical time-dependent variable approach). Hence the upper green curve is common for any time of insulin inception.} From figure \ref{fig:mort-int} we see that there is a substantial insulin-duration effect which is not accommodated by the simple model with only one time-dependent variable to describe the insulin effect. Note that the simple model (green curves) for those on insulin does not depend in insulin duration, and hence the mortality curves for those on insulin are just parallel to the mortality curves for those not on insulin, regardless of diabetes duration (or age) at the time of insulin initiation. This is the proportional hazards assumption. Thus the effect of insulin initiation is under-estimated for short duration of insulin and over-estimated for long duration of insulin. This is the major discrepancy between the two models, and illustrates the importance of being able to accommodate different time scales, but there is also a declining overall insulin effect by age which is not accommodated by the proportional hazards approach. Finally, this plot illustrates an important feature in reporting models with multiple timescales; all timescales must be represented in the predicted rates, only reporting the effect of one timescale, conditional on a fixed value of other timescales is misleading since all timescales by definition advance at the same pace. For example, the age-effect for a fixed value of insulin duration really is a misnomer since it does not correspond to any real person's follow-up, but to the mortality of persons in different ages but with the same duration of insulin use. \section{Input to the \texttt{simLexis} function} We want to estimate the cumulative probability of being in each of the 4 states, so that we can assess the fraction of diabetes pateints that go on insulin In order to simulate from the multistate model with the estimated transition rates, and get the follow-up of a hypothetical cohort, we must supply \emph{both} the transition rates and the structure of the model \emph{as well as} the initial cohort status to \texttt{simLexis}. \subsection{The transition object} We first put the models into an object representing the transitions; note this is a list of lists, the latter having \texttt{glm} objects as elements: \begin{Schunk} \begin{Sinput} > Tr <- list( "DM" = list( "Ins" = DM.Ins, + "Dead" = DM.Dead ), + "Ins" = list( "Dead(Ins)" = Ins.Dead ) ) \end{Sinput} \end{Schunk} Now we have the description of the rates and of the structure of the model. The \texttt{Tr} object defines the states and models for all transitions between them; the object \verb|Tr$A$B| is the model for the transition intensity from state \texttt{A} to state \texttt{B}. \subsection{The initial cohort} We now define an initial \texttt{Lexis} object of persons with all relevant covariates defined. Note that we use \texttt{NULL} as row indicator in the \texttt{Lexis} object we used for modeling; this conserves the \texttt{time.scale} and \texttt{time.since} attributes which are needed for the simulation: \begin{Schunk} \begin{Sinput} > str( ini <- Si[NULL,1:9] ) \end{Sinput} \begin{Soutput} Classes ‘Lexis’ and 'data.frame': 0 obs. of 9 variables: $ lex.id : int $ Per : num $ Age : num $ DMdur : num $ t.Ins : num $ lex.dur: num $ lex.Cst: Factor w/ 4 levels "DM","Ins","Dead",..: $ lex.Xst: Factor w/ 4 levels "DM","Ins","Dead",..: $ sex : Factor w/ 2 levels "M","F": - attr(*, "time.scales")= chr "Per" "Age" "DMdur" "t.Ins" - attr(*, "time.since")= chr "" "" "" "Ins" - attr(*, "breaks")=List of 4 ..$ Per : NULL ..$ Age : NULL ..$ DMdur: num 0 0.25 0.5 0.75 1 1.25 1.5 1.75 2 2.25 ... ..$ t.Ins: NULL \end{Soutput} \end{Schunk} We now have an empty \texttt{Lexis} object with attributes reflecting the timescales in the multistate model we want to simulate from. But we must enter some data to represent the initial state of the persons whose follow-up we want to simulate through the model; so fill in data for one man and one woman: \begin{Schunk} \begin{Sinput} > ini[1:2,"lex.id"] <- 1:2 > ini[1:2,"lex.Cst"] <- "DM" > ini[1:2,"Per"] <- 1995 > ini[1:2,"Age"] <- 60 > ini[1:2,"DMdur"] <- 5 > ini[1:2,"sex"] <- c("M","F") > ini \end{Sinput} \begin{Soutput} lex.id Per Age DMdur t.Ins lex.dur lex.Cst lex.Xst sex 1 1 1995 60 5 NA NA DM M 2 2 1995 60 5 NA NA DM F \end{Soutput} \end{Schunk} So the persons starts in age 60 in 1995 with 5 years of diabetes duration. Note that the \texttt{t.Ins} is \texttt{NA}, because this is a timescale that first comes alive if a transtion to \texttt{Ins} is simulated. \section{Simulation of the follow-up} Now we simulate life-courses of a 1000 of each of these persons using the estimated model. The \texttt{t.range} argument gives the times range where the integrated intensities (cumulative rates) are evaluated and where linear interpolation is used when simulating transition times. Note that this must be given in the same units as \texttt{lex.dur} in the \texttt{Lexis} object used for fitting the models for the transitions. It is not a parameter that can be easily determined from the \texttt{TR} object, hence it must be supplied by the user. \begin{Schunk} \begin{Sinput} > set.seed( 52381764 ) > Nsim <- 5000 > system.time( simL <- simLexis( Tr, + ini, + t.range = 12, + N = Nsim ) ) \end{Sinput} \begin{Soutput} user system elapsed 18.788 1.130 18.914 \end{Soutput} \end{Schunk} The result is a \texttt{Lexis} object --- a data frame representing the simulated follow-up of 10000 persons (5000 identical men and 5000 identical women) according to the rates we estimated from the original dataset. \begin{Schunk} \begin{Sinput} > summary( simL, by="sex" ) \end{Sinput} \begin{Soutput} $M Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 1438 2048 1514 0 5000 3562 36620.95 5000 Ins 0 1363 0 685 2048 685 10935.47 2048 Sum 1438 3411 1514 685 7048 4247 47556.41 5000 $F Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 2186 1689 1125 0 5000 2814 42181.63 5000 Ins 0 1321 0 368 1689 368 9535.20 1689 Sum 2186 3010 1125 368 6689 3182 51716.83 5000 \end{Soutput} \end{Schunk} \subsection{Using other models for simulation} \subsubsection{Proportional hazards Poisson model} We fitted a proportional mortality model \texttt{All.Dead} (which fitted worse than the other two), this is a model for \emph{both} the transition from \texttt{DM} to \texttt{Death} \emph{and} from \texttt{Ins} to \texttt{Dead(Ins)}, assuming that they are proportional. But it can easily be used in the simulation set-up, because the state is embedded in the model via the term \texttt{lex.Cst}, which is updated during the simulation. Simulation using this instead just requires that we supply a different transition object: \begin{Schunk} \begin{Sinput} > Tr.p <- list( "DM" = list( "Ins" = DM.Ins, + "Dead" = All.Dead ), + "Ins" = list( "Dead(Ins)" = All.Dead ) ) > system.time( simP <- simLexis( Tr.p, + ini, + t.range = 12, + N = Nsim ) ) \end{Sinput} \begin{Soutput} user system elapsed 17.604 0.988 17.625 \end{Soutput} \begin{Sinput} > summary( simP, by="sex" ) \end{Sinput} \begin{Soutput} $M Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 1633 1984 1383 0 5000 3367 37674.18 5000 Ins 0 1135 0 849 1984 849 9807.38 1984 Sum 1633 3119 1383 849 6984 4216 47481.56 5000 $F Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 2285 1695 1020 0 5000 2715 42892.52 5000 Ins 0 1191 0 504 1695 504 8833.70 1695 Sum 2285 2886 1020 504 6695 3219 51726.21 5000 \end{Soutput} \end{Schunk} \subsubsection{Proportional hazards Cox model} A third possibility would be to replace the two-time scale proportional mortality model by a one-time-scale Cox-model, using diabetes duration as time scale, and age at diagnosis of DM as (fixed) covariate: \begin{Schunk} \begin{Sinput} > library( survival ) > Cox.Dead <- coxph( Surv( DMdur, DMdur+lex.dur, + lex.Xst %in% c("Dead(Ins)","Dead")) ~ + Ns( Age-DMdur, knots=ad.kn ) + + I(lex.Cst=="Ins") + + I(Per-2000) + sex, + data = Si ) > round( ci.exp( Cox.Dead ), 3 ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% Ns(Age - DMdur, knots = ad.kn)1 4.172 3.535 4.923 Ns(Age - DMdur, knots = ad.kn)2 4.502 3.824 5.301 Ns(Age - DMdur, knots = ad.kn)3 16.077 14.087 18.348 Ns(Age - DMdur, knots = ad.kn)4 7.479 6.501 8.605 I(lex.Cst == "Ins")TRUE 2.170 1.948 2.418 I(Per - 2000) 0.965 0.954 0.977 sexF 0.667 0.616 0.723 \end{Soutput} \end{Schunk} Note that in order for this model to be usable for simulation, it is necessary that we use the components of the \texttt{Lexis} object to specify the survival. Each record in the data frame \texttt{Si} represents follow up from \texttt{DMdur} to \texttt{DMdur+lex.dur}, so the model is a Cox model with diabetes duration as underlying timescale and age at diagnosis, \texttt{Age-DMdur}, as covariate. Also note that we used \texttt{I(lex.Cst=="Ins")} instead of just \texttt{lex.Cst}, because \texttt{coxph} assigns design matrix columns to all levels of \texttt{lex.Cst}, also those not present in data, which would give \texttt{NA}s among the parameter estimates and \texttt{NA}s as mortality outcomes. We see that the effect of insulin and the other covariates are pretty much the same as in the two-time-scale model. We can simulate from this model too; there is no restrictions on what type of model can be used for different transitions \begin{Schunk} \begin{Sinput} > Tr.c <- list( "DM" = list( "Ins" = Tr$DM$Ins, + "Dead" = Cox.Dead ), + "Ins" = list( "Dead(Ins)" = Cox.Dead ) ) > system.time( simC <- simLexis( Tr.c, + ini, + t.range = 12, + N = Nsim ) ) \end{Sinput} \begin{Soutput} user system elapsed 19.195 1.241 19.470 \end{Soutput} \begin{Sinput} > summary( simC, by="sex" ) \end{Sinput} \begin{Soutput} $M Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 1714 2039 1247 0 5000 3286 37280.04 5000 Ins 0 1348 0 691 2039 691 9990.38 2039 Sum 1714 3387 1247 691 7039 3977 47270.42 5000 $F Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 2332 1702 966 0 5000 2668 42168.20 5000 Ins 0 1313 0 389 1702 389 9083.14 1702 Sum 2332 3015 966 389 6702 3057 51251.34 5000 \end{Soutput} \end{Schunk} \section{Reporting the simulation results} We can now tabulate the number of persons in each state at a predefined set of times on a given time scale. Note that in order for this to be sensible, the \texttt{from} argument would normally be equal to the starting time for the simulated individuals. \begin{Schunk} \begin{Sinput} > system.time( + nSt <- nState( subset(simL,sex=="M"), + at=seq(0,11,0.2), from=1995, time.scale="Per" ) ) \end{Sinput} \begin{Soutput} user system elapsed 0.744 0.000 0.743 \end{Soutput} \begin{Sinput} > nSt[1:10,] \end{Sinput} \begin{Soutput} State when DM Ins Dead Dead(Ins) 1995 5000 0 0 0 1995.2 4932 38 29 1 1995.4 4843 93 62 2 1995.6 4773 137 87 3 1995.8 4702 179 116 3 1996 4621 226 148 5 1996.2 4547 269 179 5 1996.4 4469 309 212 10 1996.6 4407 342 237 14 1996.8 4322 386 275 17 \end{Soutput} \end{Schunk} We see that as time goes by, the 5000 men slowly move away from the starting state (\texttt{DM}). Based on this table (\texttt{nSt} is a table) we can now compute the fractions in each state, or, rather more relevant, the cumulative fraction across the states in some specified order, so that a plot of the stacked probabilities can be made, using either the default rather colorful layout, or a more minimalist version (both in figure \ref{fig:pstate0}): \begin{Schunk} \begin{Sinput} > pM <- pState( nSt, perm=c(1,2,4,3) ) > head( pM ) \end{Sinput} \begin{Soutput} State when DM Ins Dead(Ins) Dead 1995 1.0000 1.0000 1.0000 1 1995.2 0.9864 0.9940 0.9942 1 1995.4 0.9686 0.9872 0.9876 1 1995.6 0.9546 0.9820 0.9826 1 1995.8 0.9404 0.9762 0.9768 1 1996 0.9242 0.9694 0.9704 1 \end{Soutput} \begin{Sinput} > par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) > plot( pM ) > plot( pM, border="black", col="transparent", lwd=3 ) > text( rep(as.numeric(rownames(pM)[nrow(pM)-1]),ncol(pM)), + pM[nrow(pM),]-diff(c(0,pM[nrow(pM),]))/5, + colnames( pM ), adj=1 ) > box( col="white", lwd=3 ) > box() \end{Sinput} \end{Schunk} \insfig{pstate0}{1.0}{Default layout of the \textrm{\tt plot.pState} graph (left), and a version with the state probabilities as lines and annotation of states.} A more useful set-up of the graph would include a more through annotation and sensible choice of colors, as seen in figure \ref{fig:pstatex}: \begin{Schunk} \begin{Sinput} > clr <- c("limegreen","orange") > # expand with a lighter version of the two chosen colors > clx <- c( clr, rgb( t( col2rgb( clr[2:1] )*2 + rep(255,3) ) / 3, max=255 ) ) > par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) > # Men > plot( pM, col=clx, xlab="Date of FU" ) > lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) > mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) > mtext( "Survival curve", side=3, line=1.5, adj=0 ) > mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) > mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) > axis( side=4 ) > axis( side=4, at=1:19/20, labels=FALSE ) > axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) > # Women > pF <- pState( nState( subset(simL,sex=="F"), + at=seq(0,11,0.2), + from=1995, + time.scale="Per" ), + perm=c(1,2,4,3) ) > plot( pF, col=clx, xlab="Date of FU" ) > lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) > mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) > mtext( "Survival curve", side=3, line=1.5, adj=0 ) > mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) > mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) > axis( side=4 ) > axis( side=4, at=1:19/20, labels=FALSE ) > axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) \end{Sinput} \end{Schunk} \insfig{pstatex}{1.0}{\textrm{\tt plot.pState} graphs where persons ever on insulin are given in orange and persons never on insulin in green, and the overall survival (dead over the line) as a black line.} If we instead wanted to show the results on the age-scale, we would use age as timescale when constructing the probabilities; otherwise the code is pretty much the same as before (Figure \ref{fig:pstatey}): \begin{Schunk} \begin{Sinput} > par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) > # Men > pM <- pState( nState( subset(simL,sex=="M"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > plot( pM, col=clx, xlab="Age" ) > lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) > mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) > mtext( "Survival curve", side=3, line=1.5, adj=0 ) > mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) > mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) > axis( side=4 ) > axis( side=4, at=1:19/20, labels=FALSE ) > axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) > axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) > # Women > pF <- pState( nState( subset(simL,sex=="F"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > plot( pF, col=clx, xlab="Age" ) > lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) > mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) > mtext( "Survival curve", side=3, line=1.5, adj=0 ) > mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) > mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) > axis( side=4 ) > axis( side=4, at=1:9/10, labels=FALSE ) > axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) > axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) \end{Sinput} \end{Schunk} Note the several statements with \texttt{axis(side=4,...}; they are necessary to get the fine tick-marks in the right hand side of the plots that you will need in order to read off the probabilities at 2006 (or 71 years). \insfig{pstatey}{1.0}{\textrm{\tt plot.pState} graphs where persons ever on insulin are given in orange and persons never on insulin in green, and the overall survival (dead over the line) as a black line.} \subsection{Comparing predictions from different models} We have actually fitted different models for the transitions, and we have simulated Lexis objects from all three approaches, so we can plot these predictions on top of each other: \begin{Schunk} \begin{Sinput} > PrM <- pState( nState( subset(simP,sex=="M"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > PrF <- pState( nState( subset(simP,sex=="F"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > CoxM <- pState( nState( subset(simC,sex=="M"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > CoxF <- pState( nState( subset(simC,sex=="F"), + at=seq(0,11,0.2), + from=60, + time.scale="Age" ), + perm=c(1,2,4,3) ) > par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) > plot( pM, border="black", col="transparent", lwd=3 ) > lines( PrM, border="blue" , col="transparent", lwd=3 ) > lines( CoxM, border="red" , col="transparent", lwd=3 ) > text( 60.5, 0.05, "M" ) > box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) > plot( pF, border="black", col="transparent", lwd=3 ) > lines( PrF, border="blue" , col="transparent", lwd=3 ) > lines( CoxF, border="red" , col="transparent", lwd=3 ) > text( 60.5, 0.05, "F" ) > box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) \end{Sinput} \end{Schunk} \insfig{comp-0}{1.0}{Comparison of the simulated state occupancy probabilities using separate Poisson models for the mortality rates with and without insulin (black) and using proportional hazards Poisson models (blue) and Cox-models with diabetes duration as timescale and age at diabetes diagnosis as covariate (red).} From figure \ref{fig:comp-0} it is clear that the two proportional hazards models (blue and red curves) produce pretty much the same estimates of the state occupancy probabilities over time, but also that they relative to the model with separately estimated transition intensities overestimates the probability of being alive without insulin and underestimates the probabilities of being dead without insulin. However both the overall survival, and the fraction of persons on insulin are quite well in agreement with the more elaborate model. Thus the proportional hazards models overestimate the relative mortality of the insulin treated diabetes patients relative to the non-insulin treated. Interestingly, we also see a bump in the estimated probabilities from the Cox-model based model, but this is entirely an artifact that comes from the estimation method for the baseline hazard of the Cox-model that lets the (cumulative) hazard have large jumps at event times where the risk set is small. So also here it shows up that an assumption of continuous underlying hazards leads to more credible estimates. \chapter{Simulation of transitions in multistate models} \section{Theory} Suppose that the rate functions for the transitions out of the current state to, say, 3 different states are $\lambda_1$, $\lambda_2$ and $\lambda_3$, and the corresponding cumulative rates are $\Lambda_1$, $\Lambda_2$ and $\Lambda_3$, and we want to simulate an exit time and an exit state (that is either 1, 2 or 3). This can be done in two slightly different ways: \begin{enumerate} \item First time, then state: \begin{enumerate} \item Compute the survival function, $S(t) = \exp\bigl(-\Lambda_1(t)-\Lambda_2(t)-\Lambda_3(t)\bigr)$ \item Simulate a random U(0,1) variate, $u$, say. \item The simulated exit time is then the solution $t_u$ to the equation $S(t_u) = u \quad \Leftrightarrow \quad \sum_j\Lambda_j(t_u) = -\log(u)$. \item A simulated transition at $t_u$ is then found by simulating a random draw from the multinomial distribution with probabilities $p_i=\lambda_i(t_u) / \sum_j\lambda_j(t_u)$. \end{enumerate} \item Separate cumulative incidences: \begin{enumerate} \item Simulate 3 independent U(0,1) random variates $u_1$, $u_2$ and $u_3$. \item Solve the equations $\Lambda_i(t_i)=-\log(u_i), i=1,2,3$ and get $(t_1,t_2,t_3)$. \item The simulated survival time is then $\min(t_1,t_2,t_3)$, and the simulated transition is to the state corresponding to this, that is $k \in \{1,2,3\}$, where $t_k=\min(t_1,t_2,t_3)$ \end{enumerate} \end{enumerate} The intuitive argument is that with three possible transition there are 3 independent processes running, but only the first transition is observed. The latter approach is used in the implementation in \texttt{simLexis}. The formal argument for the equality of the two approaches goes as follows: \begin{enumerate} \item Equality of the transition times: \begin{enumerate} \item In the first approach we simulate from a distribution with cumulative rate $\Lambda_1(t)+\Lambda_2(t)+\Lambda_3(t)$, hence from a distribution with survival function: \begin{align*} S(t) & = \exp\bigl(-(\Lambda_1(t)+\Lambda_2(t)+\Lambda_3(t))\bigr) \\ & = \exp\bigl(-\Lambda_1(t)\bigr)\times \exp\bigl(-\Lambda_2(t)\bigr)\times \exp\bigl(-\Lambda_3(t)\bigr) \end{align*} \item In the second approach we choose the smallest of three independent survival times, with survival functions $\exp(-\Lambda_i), i=1,2,3$. Now, the survival function for the minimum of three independent survival times is: \begin{align*} S_\text{min}(t) & = \pmat{\min(t_1,t_2,t_3)>t} \\ & = \pmat{t_1>t} \times \pmat{t_2>t} \times \pmat{t_3>t} \\ & = \exp\bigl(-\Lambda_1(t)\bigr)\times \exp\bigl(-\Lambda_2(t)\bigr)\times \exp\bigl(-\Lambda_3(t)\bigr) \end{align*} which is the same survival function as derived above. \end{enumerate} \item Type of transition: \begin{enumerate} \item In the first instance the probability of a transition to state $i$, conditional on the transition time being $t$, is as known from standard probability theory: $\lambda_i(t)/\bigl(\lambda_1(t)+\lambda_2(t)+\lambda_3(t)\bigr)$. \item In the second approach we choose the transition corresponding to the the smallest of the transition times. So when we condition on the event that a transition takes place at time $t$, we have to show that the conditional probability that the smallest of the three simulated transition times was actually the $i$th, is as above. But conditional on \emph{survival} till $t$, the probabilities that events of type $1,2,3$ takes place in the interval $(t,t+\dif t)$ are $\lambda_1(t)\dif t$, $\lambda_2(t)\dif t$ and $\lambda_1(t)\dif t$, respectively (assuming that the probability of more than one event in the interval of length $\dif t$ is 0). Hence the conditional probabilities \emph{given a transition time} in $(t,t+\dif t)$ is: \[ \frac{\lambda_i(t)\dif t}{\lambda_1(t)\dif t+\lambda_2(t)\dif t+\lambda_3(t)\dif t}= \frac{\lambda_i(t)}{\lambda_1(t)+\lambda_2(t)+\lambda_3(t)} \] --- exactly as above. \end{enumerate} \end{enumerate} \section{Components of \texttt{simLexis}} This section explains the actually existing code for \texttt{simLexis}, as it is in the current version of \texttt{Epi}. % The following code sources the originally formatted code in % simLexis.R in order to make it printable with all the formatting and % comments in it. However the sourcing does not work when compiling % the vignettes in R CMD build. So when checking the code we comment % this out by putting eval=FALSE, and moreover, because it is only % simLexis that is exported, we also need to bring the functions simX, % sim1, lint, get.next and chop.lex into the workspace. So depending % on whether we actually construct the pdf for the inst/doc folder or % test (upload) the package, one of the following to chunks are run % with eval=FALSE and the other with eval=TRUE % When compiling the published vignette % When checking the package The function \texttt{simLexis} takes a \texttt{Lexis} object as input. This defines the initial state(s) and times of the start for a number of persons. Since the purpose is to simulate a history through the estimated multistate model, the input values of the outcome variables \texttt{lex.Xst} and \texttt{lex.dur} are ignored --- the aim is to simulate values for them. Note however that the attribute \texttt{time.since} must be present in the object. This is used for initializing timescales defined as time since entry into a particular state, it is a character vector of the same length as the \texttt{time.scales} attribute, with value equal to a state name if the corresponding time scale is defined as time since entry into that state. In this example the 4th timescale is time since entry into the \texttt{Ins} state, and hence: \begin{Schunk} \begin{Sinput} > cbind( + attr( ini, "time.scales" ), + attr( ini, "time.since" ) ) \end{Sinput} \begin{Soutput} [,1] [,2] [1,] "Per" "" [2,] "Age" "" [3,] "DMdur" "" [4,] "t.Ins" "Ins" \end{Soutput} \end{Schunk} \texttt{Lexis} objects will have this attribute set for time scales created using \texttt{cutLexis}. The other necessary argument is a transition object \texttt{Tr}, which is a list of lists. The elements of the lists should be \texttt{glm} objects derived by fitting Poisson models to a \texttt{Lexis} object representing follow-up data in a multistate model. It is assumed (but not checked) that timescales enter in the model via the timescales of the \texttt{Lexis} object. Formally, there are no assumptions about how \texttt{lex.dur} enters in the model. Optional arguments are \texttt{t.range}, \texttt{n.int} or \texttt{time.pts}, specifying the times after entry at which the cumulative rates will be computed (the maximum of which will be taken as the censoring time), and \texttt{N} a scalar or numerical vector of the number of persons with a given initial state each record of the \texttt{init} object should represent. The central part of the functions uses a \texttt{do.call} / \texttt{lapply} / \texttt{split} construction to do simulations for different initial states. This is the construction in the middle that calls \texttt{simX}. \texttt{simLexis} also calls \texttt{get.next} which is further detailed below. \begin{Schunk} \begin{Sinput} > simLexis \end{Sinput} \begin{Soutput} function (Tr, init, N = 1, lex.id, t.range = 20, n.int = 101, time.pts = seq(0, t.range, length.out = n.int)) { if (time.pts[1] != 0) stop("First time point must be 0, time.pts[1:3]= ", time.pts[1:3]) if (!missing(N)) { if (length(N) == 1) init <- init[rep(1:nrow(init), each = N), ] else init <- init[rep(1:nrow(init), N), ] } if (!missing(lex.id)) { if (length(lex.id) == nrow(init)) init$lex.id <- lex.id else init$lex.id <- 1:nrow(init) } else init$lex.id <- 1:nrow(init) if (is.null(tS <- attr(init, "time.scales"))) stop("No time.scales attribute for init") if (is.null(tF <- attr(init, "time.since"))) { attr(init, "time.since") <- tF <- rep("", tS) warning("'time.since' attribute set to blanks") } np <- length(time.pts) tr.st <- names(Tr) sf <- NULL nxt <- init[init$lex.Cst %in% tr.st, ] if (nrow(nxt) < nrow(init)) { tt <- table(init$lex.Cst) tt <- tt[tt > 0] nt <- length(tt) warning("\nSome initiators start in a absorbing state\n", "Initiator states represented are: ", paste(rbind(names(tt), rep(":", nt), paste(tt), rep(" ", nt)), collapse = ""), "\n", "Transient states are: ", paste(names(Tr), coll = " ")) if (nrow(nxt) == 0) stop("\nNo initiators in transient states!") } while (nrow(nxt) > 0) { nx <- do.call(rbind.data.frame, lapply(split(nxt, nxt$lex.Cst), simX, Tr, time.pts, tS)) sf <- rbind.data.frame(sf, nx) nxt <- get.next(nx, tr.st, tS, tF) } sf$lex.Xst <- factor(sf$lex.Xst, levels = levels(sf$lex.Cst)) sf$lex.Xst[is.na(sf$lex.Xst)] <- sf$lex.Cst[is.na(sf$lex.Xst)] nord <- match(c("lex.id", tS, "lex.dur", "lex.Cst", "lex.Xst"), names(sf)) noth <- setdiff(1:ncol(sf), nord) sf <- sf[order(sf$lex.id, sf[, tS[1]]), c(nord, noth)] rownames(sf) <- NULL attr(sf, "time.scales") <- tS attr(sf, "time.since") <- tF chop.lex(sf, tS, max(time.pts)) } \end{Soutput} \end{Schunk} \subsection{\texttt{simX}} \texttt{simX} is called by \texttt{simLexis} and simulates transition-times and -types for a set of patients assumed to be in the same state. It is called from \texttt{simLexis} with a data frame as argument, uses the state in \texttt{lex.Cst} to select the relevant component of \texttt{Tr} and compute predicted cumulative intensities for all states reachable from this state. Note that it is here the switch between \texttt{glm}, \texttt{coxph} and objects of class \texttt{function} is made. The dataset on which this prediction is done has \texttt{length(time.pts)} rows per person. \begin{Schunk} \begin{Sinput} > simX \end{Sinput} \begin{Soutput} function (nd, Tr, time.pts, tS) { np <- length(time.pts) nr <- nrow(nd) if (nr == 0) return(NULL) cst <- as.character(unique(nd$lex.Cst)) if (length(cst) > 1) stop("More than one lex.Cst present:\n", cst, "\n") prfrm <- nd[rep(1:nr, each = np), ] prfrm[, tS] <- prfrm[, tS] + rep(time.pts, nr) prfrm$lex.dur <- il <- min(diff(time.pts)) prfrp <- prfrm prfrp[, "lex.dur"] <- 1 prfrp[, tS] <- prfrp[, tS] + il/2 rt <- data.frame(lex.id = prfrm$lex.id) for (i in 1:length(Tr[[cst]])) { if (inherits(Tr[[cst]][[i]], "glm")) rt <- cbind(rt, predict(Tr[[cst]][[i]], type = "response", newdata = prfrp) * il) else if (inherits(Tr[[cst]][[i]], "coxph")) rt <- cbind(rt, predict(Tr[[cst]][[i]], type = "expected", newdata = prfrm)) else if (is.function(Tr[[cst]][[i]])) rt <- cbind(rt, Tr[[cst]][[i]](prfrm)) else stop("Invalid object supplied as transition, elements of the list must be either:\n", "- a glm(poisson) object fitted to a Lexis object\n", "- a coxph object fitted to a Lexis object\n", "- a function that takes a Lexis object as argument and returns\n", " average rates for each record in the same units as lex.dur.") } names(rt)[-1] <- names(Tr[[cst]]) xx <- match(c("lex.dur", "lex.Xst"), names(nd)) if (any(!is.na(xx))) nd <- nd[, -xx[!is.na(xx)]] merge(nd, do.call(rbind, lapply(split(rt, rt$lex.id), sim1, time.pts)), by = "lex.id") } \end{Soutput} \end{Schunk} As we see, \texttt{simX} calls \texttt{sim1} which simulates the transition for one person. \subsection{\texttt{sim1}} The predicted cumulative intensities are fed, person by person, to \texttt{sim1} --- again via a \texttt{do.call} / \texttt{lapply} / \texttt{split} construction --- and the resulting time and state is appended to the \texttt{nd} data frame. This way we have simulated \emph{one} transition (time and state) for each person: \begin{Schunk} \begin{Sinput} > sim1 \end{Sinput} \begin{Soutput} function (rt, time.pts) { ci <- apply(rbind(0, rt[, -1, drop = FALSE]), 2, cumsum)[1:nrow(rt), , drop = FALSE] tt <- uu <- -log(runif(ncol(ci))) for (i in 1:ncol(ci)) tt[i] <- lint(ci[, i], time.pts, uu[i]) data.frame(lex.id = rt[1, 1], lex.dur = min(tt, na.rm = TRUE), lex.Xst = factor(if (min(tt) < max(time.pts)) colnames(ci)[tt == min(tt)] else NA)) } \end{Soutput} \end{Schunk} The \texttt{sim1} function uses \texttt{lint} to do linear interpolation. \subsection{\texttt{lint}} We do not use \texttt{approx} to do the linear interpolation, because this function does not do the right thing if the cumulative incidences (\texttt{ci}) are constant across a number of times. Therefore we have a custom made linear interpolator that does the interpolation exploiting the fact the the \texttt{ci} is non-decreasing and \texttt{tt} is strictly monotonously increasing: \begin{Schunk} \begin{Sinput} > lint \end{Sinput} \begin{Soutput} function (ci, tt, u) { if (any(diff(ci) < 0) | any(diff(tt) < 0)) stop("Non-increasing arguments") c.u <- min(c(ci[ci > u], max(ci))) c.l <- max(c(ci[ci < u], min(ci))) t.u <- min(c(tt[ci > u], max(tt))) t.l <- max(c(tt[ci < u], min(tt))) ifelse(c.u == c.l, t.l, t.l + (u - c.l)/(c.u - c.l) * (t.u - t.l)) } \end{Soutput} \end{Schunk} \subsection{\texttt{get.next}} We must repeat the simulation operation on those that have a simulated entry to a transient state, and also make sure that any time scales defined as time since entry to one of these states be initialized to 0 before a call to \texttt{simX} is made for these persons. This accomplished by the function \texttt{get.next}: \begin{Schunk} \begin{Sinput} > get.next \end{Sinput} \begin{Soutput} function (sf, tr.st, tS, tF) { if (nrow(sf) == 0) return(sf) nxt <- sf[sf$lex.Xst %in% tr.st, ] if (nrow(nxt) == 0) return(nxt) nxt[, tS] <- nxt[, tS] + nxt$lex.dur wh <- tF for (i in 1:length(wh)) if (wh[i] != "") nxt[nxt$lex.Xst == wh[i], tS[i]] <- 0 nxt$lex.Cst <- nxt$lex.Xst return(nxt) } \end{Soutput} \end{Schunk} \subsection{\texttt{chop.lex}} The operation so far has censored individuals \texttt{max(time.pts)} after \emph{each} new entry to a transient state. In order to groom the output data we use \texttt{chop.lex} to censor all persons at the same designated time after \emph{initial} entry. \begin{Schunk} \begin{Sinput} > chop.lex \end{Sinput} \begin{Soutput} function (obj, tS, cens) { zz <- entry(obj, 1, by.id = TRUE) ww <- merge(obj, data.frame(lex.id = as.numeric(names(zz)), cens = zz + cens)) ww <- ww[ww[, tS[1]] < ww$cens, ] x.dur <- pmin(ww$lex.dur, ww[, "cens"] - ww[, tS[1]]) ww$lex.Xst[x.dur < ww$lex.dur] <- ww$lex.Cst[x.dur < ww$lex.dur] ww$lex.dur <- pmin(x.dur, ww$lex.dur) ww } \end{Soutput} \end{Schunk} \section{Probabilities from simulated \texttt{Lexis} objects} Once we have simulated a Lexis object we will of course want to use it for estimating probabilities, so basically we will want to enumerate the number of persons in each state at a pre-specified set of time points. \subsection{\texttt{nState}} Since we are dealing with multistate model with potentially multiple time scales, it is necessary to define the timescale (\texttt{time.scale}), the starting point on this timescale (\texttt{from}) and the points after this where we compute the number of occupants in each state, (\texttt{at}). \begin{Schunk} \begin{Sinput} > nState \end{Sinput} \begin{Soutput} function (obj, at, from, time.scale = 1) { tS <- check.time.scale(obj, time.scale) TT <- tmat(obj) absorb <- rownames(TT)[apply(!is.na(TT), 1, sum) == 0] transient <- setdiff(rownames(TT), absorb) tab.frm <- obj[rep(1:nrow(obj), each = length(at)), c(tS, "lex.dur", "lex.Cst", "lex.Xst")] tab.frm$when <- rep(at, nrow(obj)) + from tab.tr <- tab.frm[tab.frm[, tS] <= tab.frm$when & tab.frm[, tS] + tab.frm$lex.dur > tab.frm$when, ] tab.tr$State <- tab.tr$lex.Cst tab.ab <- tab.frm[tab.frm[, tS] + tab.frm$lex.dur <= tab.frm$when & tab.frm$lex.Xst %in% absorb, ] tab.ab$State <- tab.ab$lex.Xst with(rbind(tab.ab, tab.tr), table(when, State)) } \end{Soutput} \end{Schunk} \subsection{\texttt{pState}, \texttt{plot.pState} and \texttt{lines.pState}} In order to plot probabilities of state-occupancy it is useful to compute cumulative probabilities across states in any given order; this is done by the function \texttt{pState}, which returns a matrix of class \texttt{pState}: \begin{Schunk} \begin{Sinput} > pState \end{Sinput} \begin{Soutput} function (nSt, perm = 1:ncol(nSt)) { tt <- t(apply(nSt[, perm], 1, cumsum)) tt <- sweep(tt, 1, tt[, ncol(tt)], "/") class(tt) <- c("pState", "matrix") tt } \end{Soutput} \end{Schunk} There is also a \texttt{plot} and \texttt{lines} method for the resulting \texttt{pState} objects: \begin{Schunk} \begin{Sinput} > plot.pState \end{Sinput} \begin{Soutput} function (x, col = rainbow(ncol(x)), border = "transparent", xlab = "Time", ylim = 0:1, ylab = "Probability", ...) { matplot(as.numeric(rownames(x)), x, type = "n", ylim = ylim, yaxs = "i", xaxs = "i", xlab = xlab, ylab = ylab, ...) lines.pState(x, col = col, border = border, ...) } \end{Soutput} \begin{Sinput} > lines.pState \end{Sinput} \begin{Soutput} function (x, col = rainbow(ncol(x)), border = "transparent", ...) { nc <- ncol(x) col <- rep(col, nc)[1:nc] border <- rep(border, nc)[1:nc] pSt <- cbind(0, x) for (i in 2:ncol(pSt)) { polygon(c(as.numeric(rownames(pSt)), rev(as.numeric(rownames(pSt)))), c(pSt[, i], rev(pSt[, i - 1])), col = col[i - 1], border = border[i - 1], ...) } } \end{Soutput} \end{Schunk} \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2011a} B~Carstensen and M~Plummer. \newblock Using {L}exis objects for multi-state models in {R}. \newblock {\em Journal of Statistical Software}, 38(6):1--18, 1 2011. \bibitem{Iacobelli.2013} S~Iacobelli and B~Carstensen. \newblock {Multiple time scales in multi-state models}. \newblock {\em Stat Med}, 32(30):5315--5327, Dec 2013. \bibitem{Plummer.2011} M~Plummer and B~Carstensen. \newblock Lexis: An {R} class for epidemiological studies with long-term follow-up. \newblock {\em Journal of Statistical Software}, 38(5):1--12, 1 2011. \end{thebibliography} \addcontentsline{toc}{chapter}{References} \end{document} Epi/vignettes/useful.tex0000644000176200001440000002363113430576324015040 0ustar liggesusers% This is a file of useful extra commands snatched from % Michael Hills, David Clayton, Bendix Carstensen & Esa Laara. % % Commands to draw observation lines on follow-up diagrams % % Horizontal lines % \providecommand{\hfail}[1]{\begin{picture}(250,5) \put(0,0){\line(1,0){#1}} \put(#1,0){\circle*{5}} \end{picture}} \providecommand{\hcens}[1]{\begin{picture}(250,5) \put(0,0){\line(1,0){#1}} \put(#1,0){\line(0,1){2.5}} \put(#1,0){\line(0,-1){2.5}} \end{picture}} % % Diagonals for Lexis diagrams % \providecommand{\dfail}[1]{\begin{picture}(250,250) \put(0,0){\line(1,1){#1}} \put(#1,#1){\circle*{5}} \end{picture}} \providecommand{\dcens}[1]{\begin{picture}(250,250) \put(0,0){\line(1,1){#1}} % \put(#1,#1){\line(0,1){2.5}} % \put(#1,#1){\line(0,-1){2.5}} % BxC Changed this to an open circle instead of a line \put(#1,#1){\circle{5}} \end{picture}} % % Horizontal range diagrams % \providecommand{\hrange}[1]{\begin{picture}(200,5) \put(0,0){\circle*{5}} \put(0,0){\line(1,0){#1}} \put(0,0){\line(-1,0){#1}} \end{picture}} % % Tree drawing % \providecommand{\Tree}[3]{\setlength{\unitlength}{#1\unitlength}\begin{picture}(0,0) \put(0,0){\line(3, 2){1}} \put(0,0){\line(3,-2){1}} \put(0.81, 0.54){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.81,-0.54){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\Wtree}[3]{\setlength{\unitlength}{#1\unitlength}\begin{picture}(0,0) \put(0,0){\line(1, 1){1}} \put(0,0){\line(1,-1){1}} \put(0.8,0.8){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.8,-0.8){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\Ntree}[3]{\setlength{\unitlength}{#1\unitlength}\begin{picture}(0,0) \put(0,0){\line(2, 1){1}} \put(0,0){\line(2,-1){1}} \put(0.8,0.4){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.8,-0.4){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\Nutree}[3]{\setlength{\unitlength}{#1\unitlength}\begin{picture}(0,0) \put(0,0){\line(2, 1){#1}} \put(0,0){\line(2,-1){#1}} \put(0.8,0.4){\makebox(0,0)[br]{#2\ }} \put(0.8,-0.4){\makebox(0,0)[tr]{#3\ }} \end{picture}} % % Tree drawing % \providecommand{\tree}[3]{\setlength{\unitlength}{#1}\begin{picture}(0,0) \put(0,0){\line(3,2){1}} \put(0,0){\line(3,-2){1}} \put(0.81,0.54){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.81,-0.54){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\wtree}[3]{\setlength{\unitlength}{#1}\begin{picture}(0,0) \put(0,0){\line(1,1){1}} \put(0,0){\line(1,-1){1}} \put(0.8,0.8){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.8,-0.8){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\ntree}[3]{\setlength{\unitlength}{#1}\begin{picture}(0,0) \put(0,0){\line(2,1){1}} \put(0,0){\line(2,-1){1}} \put(0.8,0.4){\makebox(0,0)[br]{\footnotesize #2\ }} \put(0.8,-0.4){\makebox(0,0)[tr]{\footnotesize #3\ }} \end{picture}} \providecommand{\nutree}[3]{\begin{picture}(0,0) \put(0,0){\line(2,1){#1}} \put(0,0){\line(2,-1){#1}} \put(0.8,0.4){\makebox(0,0)[br]{#2\ }} \put(0.8,-0.4){\makebox(0,0)[tr]{#3\ }} \end{picture}} % % Other commands % \providecommand{\ip}[2]{\langle #1 \vert #2 \rangle} \providecommand{\I}{\text{\rm gI}} \providecommand{\prob}[0]{\text{\rm Pr}} \providecommand{\nhy}[0]{_{\oslash}} \providecommand{\true}[0]{_{\text{\rm \tiny T}}} \providecommand{\hyp}[0]{_{\text{\rm \tiny H}}} % \providecommand{\mpydiv}[0]{\stackrel{\textstyle \times}{\div}} % Changed to slightly smaller symbols \providecommand{\mpydiv}[0]{\stackrel{\scriptstyle\times}{\scriptstyle\div}} \providecommand{\mie}[1]{{\it #1}} \providecommand{\ie}{\textit{i.e.} } \providecommand{\eg}{\textit{e.g.} } \providecommand{\ea}{\textit{et al.} } \providecommand{\mycircle}[0]{\circle*{5}} \providecommand{\smcircle}[0]{\circle*{1}} \providecommand{\corner}[0]{_{\text{\rm \tiny C}}} \providecommand{\ind}[0]{\hspace{10pt}} \providecommand{\gap}[0]{\\[5pt]} \renewcommand{\S}[0]{section~} \providecommand{\blank}[0]{$\;\,$} \providecommand{\vone}{\vspace{1cm}} \providecommand{\ljust}[1]{\multicolumn{1}{l}{#1}} \providecommand{\cjust}[1]{\multicolumn{1}{c}{#1}} \providecommand{\transpose}{^{\text{\sf T}}} \providecommand{\histog}[5]{\rule{1mm}{#1mm}\,\rule{1mm}{#2mm}\,\rule{1mm}{#3mm}\,\rule{1mm}{#4mm}\,\rule{1mm}{#5mm}} \providecommand{\pmiss}{P_{\mbox{\tiny miss}}} % Below is BxCs commands inserted % Only works with hyperref package: \newcommand{\mailto}[1]{\href{mailto:#1}{\tt #1}} \providecommand{\bc}{\begin{center}} \providecommand{\ec}{\end{center}} \providecommand{\bd}{\begin{description}} \providecommand{\ed}{\end{description}} \providecommand{\bi}{\begin{itemize}} \providecommand{\ei}{\end{itemize}} \providecommand{\bn}{\begin{equation}} \providecommand{\en}{\end{equation}} \providecommand{\be}{\begin{enumerate}} \providecommand{\ee}{\end{enumerate}} \providecommand{\bes}{\begin{eqnarray*}} \providecommand{\ees}{\end{eqnarray*}} \DeclareMathOperator{\Pp}{P} \DeclareMathOperator{\pp}{p} % \providecommand{\p}{{\mathrm p}} \providecommand{\e}{{\mathrm e}} \providecommand{\D}{{\mathrm D}} \providecommand{\dif}{{\,\mathrm d}} \providecommand{\pmat}[1]{\Pp\!\left\{#1\right\}} \providecommand{\ptxt}[1]{\Pp\!\left\{\text{#1}\right\}} \providecommand{\E}{\operatorname{E}} \providecommand{\V}{\operatorname{V}} \providecommand{\BLUP}{\operatorname{BLUP}} \providecommand{\std}{\operatorname{std}} \providecommand{\sd}{\operatorname{s.d.}} \providecommand{\se}{\operatorname{s.e.}} \providecommand{\sem}{\operatorname{s.e.m.}} \providecommand{\Var}{\operatorname{var}} \providecommand{\VAR}{\operatorname{var}} \providecommand{\var}{\operatorname{var}} \providecommand{\cov}{\operatorname{cov}} \providecommand{\corr}{\operatorname{corr}} \providecommand{\mean}{\operatorname{mean}} \providecommand{\CV}{\operatorname{CV}} \providecommand{\median}{\operatorname{median}} \providecommand{\cv}{\operatorname{c.v.}} \providecommand{\erf}{\operatorname{erf}} \providecommand{\ef}{\operatorname{ef}} \providecommand{\SSD}{\operatorname{SSD}} \providecommand{\SPD}{\operatorname{SPD}} \providecommand{\odds}{\operatorname{odds}} \providecommand{\bin}{\operatorname{binom}} \providecommand{\half}{\frac{1}{2}} % \providecommand{\td}[0]{\stackrel{\textstyle \times}{\div}} % Changed to slightly smaller symbols \providecommand{\td}[0]{\stackrel{\scriptstyle \times}{\scriptstyle \div}} \providecommand{\dt}[0]{\stackrel{\scriptstyle \div}{\scriptstyle \times}} \providecommand{\diag}{\operatorname{diag}} \providecommand{\det}{\operatorname{det}} \providecommand{\dim}{\operatorname{dim}} \providecommand{\logit}{\operatorname{logit}} % \providecommand{\link}{\operatorname{link}} \providecommand{\spcol}{\operatorname{span}} \providecommand{\spn}{\operatorname{span}} \providecommand{\CI}{\operatorname{CI}} \providecommand{\IP}{\operatorname{IP}} \providecommand{\OR}{\operatorname{OR}} \providecommand{\RR}{\operatorname{RR}} \providecommand{\ER}{\operatorname{ER}} \providecommand{\EM}{\operatorname{EM}} \providecommand{\EF}{\operatorname{EF}} \providecommand{\RD}{\operatorname{RD}} \providecommand{\AC}{\operatorname{AC}} \providecommand{\AF}{\operatorname{AF}} \providecommand{\PAF}{\operatorname{PAF}} \providecommand{\AR}{\operatorname{AR}} \providecommand{\CR}{\operatorname{CR}} \providecommand{\PAR}{\operatorname{PAR}} \providecommand{\EL}{\operatorname{EL}} \providecommand{\ERL}{\operatorname{ERL}} \providecommand{\YLL}{\operatorname{YLL}} \providecommand{\SD}{\operatorname{SD}} \providecommand{\SE}{\operatorname{SE}} \providecommand{\SEM}{\operatorname{SEM}} \providecommand{\SR}{\operatorname{SR}} \providecommand{\SMR}{\operatorname{SMR}} \providecommand{\RSR}{\operatorname{RSR}} \providecommand{\CMF}{\operatorname{CMF}} \providecommand{\pvp}{\operatorname{PV$+$}} \providecommand{\pvn}{\operatorname{PV$-$}} \providecommand{\R}{{\textsf{\textbf{R}}}} \providecommand{\sas}{\textsl{\textbf{SAS}}} \providecommand{\SAS}{\textsl{\textbf{SAS}}} %\providecommand{\gap}[0]{\\[5pt]} %\providecommand{\blank}[0]{$\;\,$} % Conditional independence sign from Philip Dawid \providecommand{\cip}{\mbox{$\perp\!\!\!\perp$}} %%% Commands to comment out parts of the text \providecommand{\GLEM}[1]{} \providecommand{\FORGETIT}[1]{} \providecommand{\OMIT}[1]{} %%% Insert output from program in small text %%% (requires package verbatim) \providecommand{\insoutsmall}[1]{ \small \renewcommand{\baselinestretch}{0.8} \verbatiminput{#1} \renewcommand{\baselinestretch}{1.0} \normalsize } \providecommand{\insoutfoot}[1]{ \footnotesize \renewcommand{\baselinestretch}{0.8} \verbatiminput{#1} \renewcommand{\baselinestretch}{1.0} \normalsize } \providecommand{\insout}[1]{ \scriptsize \renewcommand{\baselinestretch}{0.8} \verbatiminput{#1} \renewcommand{\baselinestretch}{1.0} \normalsize } \providecommand{\insouttiny}[1]{ \tiny \renewcommand{\baselinestretch}{0.8} \verbatiminput{#1} \renewcommand{\baselinestretch}{1.0} \normalsize } % From Esa: \providecommand{\T}{\text{\rm \small{T}}} \providecommand{\id}{\operatorname{id}} \providecommand{\Dev}{\operatorname{Dev}} \providecommand{\Bin}{\operatorname{Bin}} \providecommand{\probit}{\operatorname{probit}} \providecommand{\cloglog}{\operatorname{cloglog}} % Special commands to include output from R, Bugs and Stata \providecommand{\Rin}[2]{ \subsection{\texttt{#1.R}} #2 \insout{./R/#1.Rout} } \providecommand{\Statain}[2]{ \subsection{\texttt{#1.do}} #2 \insout{./do/#1.log} } \providecommand{\Bugsin}[2]{ \subsection{\texttt{#1.bug}} #2 \insout{./bugs/#1.bug} } \newlength{\wdth} \providecommand{\fxbl}[1]{\settowidth{\wdth}{#1} \makebox[\wdth]{}} %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: Epi/vignettes/flup.tex0000644000176200001440000025476514003562712014512 0ustar liggesusers%\VignetteIndexEntry{Follow-up data with the Lexis functions in Epi} \documentclass[a4paper,dvipsnames,twoside,12pt]{report} \newcommand{\Title}{Follow-up data with the\\ \texttt{Lexis} functions in \texttt{Epi}} \newcommand{\Tit}{Follow-up with \texttt{Lexis}} \newcommand{\Version}{Version 6} \newcommand{\Dates}{August 2019} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/} } \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk} \\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./flup} \chapter*{Introduction} \addcontentsline{toc}{chapter}{Introduction} This is an introduction to the \texttt{Lexis} machinery in the \texttt{Epi} package. The machinery is intended for representation and manipulation of follow-up data (event history data) from studies where exact dates of events are known. It accommodates follow-up through multiple states and on multiple time scales. This vignette uses an example from the \texttt{Epi} package to illustrate the set-up of a simple \texttt{Lexis} object (a data frame of follow-up intervals), as well as the subdivision of follow-up intervals needed for multistate representation and analysis of transition rates. The first chapter is exclusively on manipulation of the follow-up representation, but it points to the subsequent chapter where analysis is based on a \texttt{Lexis} representation with very small follow-up intervals. Chapter 2 uses analysis of mortality rates among Danish diabetes patients (available in the \texttt{Epi} package) currently on insulin treatment or not to illustrate the use of the the \texttt{Lexis} machinery. I owe much thanks to my colleague Lars Jorge Diaz for careful reading and many constructive suggestions. \section{History} The \texttt{Lexis} machinery in the \texttt{Epi} package was first conceived by Martyn Plummer\cite{Plummer.2011,Carstensen.2011a}, and since its first appearance in the \texttt{Epi} package in 2008 it has been expanded with a number of utilities. An overview of these can be found in the last chapter of this note: ``\texttt{Lexis} functions''. \chapter{Representation of follow-up data in the \texttt{Epi} package} In the \texttt{Epi}-package, follow-up data is represented by adding some extra variables to a data frame. Such a data frame is called a \texttt{Lexis} object. The tools for handling follow-up data then use the structure of this for special plots, tabulations and modeling. Follow-up data basically consists of a time of entry, a time of exit and an indication of the status at exit (normally either ``alive'' or ``dead'') for each person. Implicitly is also assumed a status \emph{during} the follow-up (usually ``alive''). \begin{figure}[htbp] \centering \setlength{\unitlength}{1pt} \begin{picture}(210,70)(0,75) %\scriptsize \thicklines \put( 0,80){\makebox(0,0)[r]{Age-scale}} \put( 50,80){\line(1,0){150}} \put( 50,80){\line(0,1){5}} \put(100,80){\line(0,1){5}} \put(150,80){\line(0,1){5}} \put(200,80){\line(0,1){5}} \put( 50,77){\makebox(0,0)[t]{35}} \put(100,77){\makebox(0,0)[t]{40}} \put(150,77){\makebox(0,0)[t]{45}} \put(200,77){\makebox(0,0)[t]{50}} \put( 0,115){\makebox(0,0)[r]{Follow-up}} \put( 80,105){\makebox(0,0)[r]{\small Two}} \put( 90,105){\line(1,0){87}} \put( 90,100){\line(0,1){10}} \put(100,100){\line(0,1){10}} \put(150,100){\line(0,1){10}} \put(180,105){\circle{6}} \put( 95,110){\makebox(0,0)[b]{1}} \put(125,110){\makebox(0,0)[b]{5}} \put(165,110){\makebox(0,0)[b]{3}} \put( 50,130){\makebox(0,0)[r]{\small One}} \put( 60,130){\line(1,0){70}} \put( 60,125){\line(0,1){10}} \put(100,125){\line(0,1){10}} \put(130,130){\circle*{6}} \put( 80,135){\makebox(0,0)[b]{4}} \put(115,135){\makebox(0,0)[b]{3}} \end{picture} \caption{\it Follow-up of two persons} \label{fig:fu2} \end{figure} \section{Time scales} A time scale is a variable that varies deterministically \emph{within} each person during follow-up, \textit{e.g.}: \begin{itemize} \item Age \item Calendar time \item Time since start of treatment \item Time since relapse \end{itemize} All time scales advance at the same pace, so the time followed is the same on all time scales. Therefore, it will suffice to use only the entry point on each of the time scales, for example: \begin{itemize} \item Age at entry \item Date of entry \item Time at treatment (\emph{at} treatment this is 0) \item Time at relapse (\emph{at} relapse this is 0) \end{itemize} For illustration we need to load the \texttt{Epi} package: \begin{Schunk} \begin{Sinput} > library(Epi) > print( sessionInfo(), l=F ) \end{Sinput} \begin{Soutput} R version 3.6.3 (2020-02-29) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 14.04.6 LTS Matrix products: default BLAS: /usr/lib/openblas-base/libopenblas.so.0 LAPACK: /usr/lib/lapack/liblapack.so.3.0 attached base packages: [1] utils datasets graphics grDevices stats methods base other attached packages: [1] Epi_2.43 loaded via a namespace (and not attached): [1] Rcpp_1.0.3 magrittr_1.5 splines_3.6.3 MASS_7.3-53 [5] tidyselect_0.2.5 lattice_0.20-41 R6_2.4.1 rlang_0.4.4 [9] plyr_1.8.5 dplyr_0.8.4 cmprsk_2.2-7 tools_3.6.3 [13] parallel_3.6.3 grid_3.6.3 data.table_1.12.0 nlme_3.1-149 [17] mgcv_1.8-33 survival_3.2-7 assertthat_0.2.1 tibble_2.1.3 [21] etm_1.0.4 numDeriv_2016.8-1 crayon_1.3.4 Matrix_1.2-18 [25] purrr_0.3.0 glue_1.3.1 compiler_3.6.3 pillar_1.4.3 [29] zoo_1.8-4 pkgconfig_2.0.3 \end{Soutput} \end{Schunk} In the \texttt{Epi} package, follow-up in a cohort is represented in a \texttt{Lexis} object. As mentioned, a \texttt{Lexis} object is a data frame with some extra structure representing the follow-up. For the \texttt{DMlate} data --- follow-up of diabetes patients in Denmark recording date of birth, date of diabetes, date of insulin use, date of first oral drug use and date of death --- we can construct a \texttt{Lexis} object by: \begin{Schunk} \begin{Sinput} > data( DMlate ) > head( DMlate ) \end{Sinput} \begin{Soutput} sex dobth dodm dodth dooad doins dox 50185 F 1940.256 1998.917 NA NA NA 2009.997 307563 M 1939.218 2003.309 NA 2007.446 NA 2009.997 294104 F 1918.301 2004.552 NA NA NA 2009.997 336439 F 1965.225 2009.261 NA NA NA 2009.997 245651 M 1932.877 2008.653 NA NA NA 2009.997 216824 F 1927.870 2007.886 2009.923 NA NA 2009.923 \end{Soutput} \begin{Sinput} > dmL <- Lexis( entry = list( per=dodm, + age=dodm-dobth, + tfD=0 ), + exit = list( per=dox ), + exit.status = factor( !is.na(dodth), labels=c("DM","Dead") ), + data = DMlate ) \end{Sinput} \begin{Soutput} NOTE: entry.status has been set to "DM" for all. NOTE: Dropping 4 rows with duration of follow up < tol \end{Soutput} \begin{Sinput} > timeScales(dmL) \end{Sinput} \begin{Soutput} [1] "per" "age" "tfD" \end{Soutput} \end{Schunk} (The excluded persons are persons with date of diabetes equal to date of death.) The \texttt{entry} argument is a \emph{named} list with the entry points on each of the time scales we want to use. It defines the names of the time scales and the entry points of the follow-up of each person. The \texttt{exit} argument gives the exit time on \emph{one} of the time scales, so the name of the element in this list must match one of the names of the \texttt{entry} list. This is sufficient, because the follow-up time on all time scales is the same, in this case $\mathtt{dox}$-$\mathtt{dodm}$. The \texttt{exit.status} is a categorical variable (a \emph{factor}) that indicates the exit status --- in this case whether the person (still) is in state \texttt{DM} or exits to \texttt{Dead} at the end of follow-up. In principle we should also indicate the \texttt{entry.status}, but the default is to assume that all persons enter in the \emph{first} of the mentioned \texttt{exit.state}s --- in this case \texttt{DM}, because $\mathtt{FALSE}<\mathtt{TRUE}$. Now take a look at the result: \begin{Schunk} \begin{Sinput} > str( dmL ) \end{Sinput} \begin{Soutput} Classes ‘Lexis’ and 'data.frame': 9996 obs. of 14 variables: $ per : num 1999 2003 2005 2009 2009 ... $ age : num 58.7 64.1 86.3 44 75.8 ... $ tfD : num 0 0 0 0 0 0 0 0 0 0 ... $ lex.dur: num 11.08 6.689 5.446 0.736 1.344 ... $ lex.Cst: Factor w/ 2 levels "DM","Dead": 1 1 1 1 1 1 1 1 1 1 ... $ lex.Xst: Factor w/ 2 levels "DM","Dead": 1 1 1 1 1 2 1 1 2 1 ... $ lex.id : int 1 2 3 4 5 6 7 8 9 10 ... $ sex : Factor w/ 2 levels "M","F": 2 1 2 2 1 2 1 1 2 1 ... $ dobth : num 1940 1939 1918 1965 1933 ... $ dodm : num 1999 2003 2005 2009 2009 ... $ dodth : num NA NA NA NA NA ... $ dooad : num NA 2007 NA NA NA ... $ doins : num NA NA NA NA NA NA NA NA NA NA ... $ dox : num 2010 2010 2010 2010 2010 ... - attr(*, "time.scales")= chr "per" "age" "tfD" - attr(*, "time.since")= chr "" "" "" - attr(*, "breaks")=List of 3 ..$ per: NULL ..$ age: NULL ..$ tfD: NULL \end{Soutput} \begin{Sinput} > head( dmL )[,1:10] \end{Sinput} \begin{Soutput} per age tfD lex.dur lex.Cst lex.Xst lex.id sex dobth dodm 50185 1998.917 58.66119 0 11.0800821 DM DM 1 F 1940.256 1998.917 307563 2003.309 64.09035 0 6.6885695 DM DM 2 M 1939.218 2003.309 294104 2004.552 86.25051 0 5.4455852 DM DM 3 F 1918.301 2004.552 336439 2009.261 44.03559 0 0.7364819 DM DM 4 F 1965.225 2009.261 245651 2008.653 75.77550 0 1.3442847 DM DM 5 M 1932.877 2008.653 216824 2007.886 80.01643 0 2.0369610 DM Dead 6 F 1927.870 2007.886 \end{Soutput} \end{Schunk} The \texttt{Lexis} object \texttt{dmL} has a variable for each time scale which is the entry point on this time scale. The follow-up time is in the variable \texttt{lex.dur} (\texttt{dur}ation). Note that the exit status is in the variable \texttt{lex.Xst} (e\texttt{X}it \texttt{st}ate. The variable \texttt{lex.Cst} is the state where the follow-up takes place (\texttt{C}urrent \texttt{st}ate), in this case \texttt{DM} (alive with diabetes) for all persons. This implies that \emph{censored} observations are characterized by having $\mathtt{lex.Cst}=\mathtt{lex.Xst}$. There is a \texttt{summary} function for \texttt{Lexis} objects that lists the number of transitions and records as well as the total amount of follow-up time; it also (optionally) prints information about the names of the variables that constitute the time scales: \begin{Schunk} \begin{Sinput} > summary.Lexis( dmL, timeScales=TRUE ) \end{Sinput} \begin{Soutput} Transitions: To From DM Dead Records: Events: Risk time: Persons: DM 7497 2499 9996 2499 54273.27 9996 Timescales: per age tfD "" "" "" \end{Soutput} \end{Schunk} It is possible to get a visualization of the follow-up along the time scales chosen by using the \texttt{plot} method for \texttt{Lexis} objects. \texttt{dmL} is an object of \emph{class} \texttt{Lexis}, so using the function \texttt{plot()} on it means that \R\ will look for the function \texttt{plot.Lexis} and use this function. \begin{Schunk} \begin{Sinput} > plot( dmL ) \end{Sinput} \end{Schunk} The function allows quite a bit of control over the output, and a \texttt{points.Lexis} function allows plotting of the endpoints of follow-up: \begin{Schunk} \begin{Sinput} > par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) > plot( dmL, 1:2, lwd=1, col=c("blue","red")[dmL$sex], + grid=TRUE, lty.grid=1, col.grid=gray(0.7), + xlim=1960+c(0,60), xaxs="i", + ylim= 40+c(0,60), yaxs="i", las=1 ) > points( dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], + col="lightgray", lwd=3, cex=0.3 ) > points( dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], + col=c("blue","red")[dmL$sex], lwd=1, cex=0.3 ) > box(bty='o') \end{Sinput} \end{Schunk} In the above code you will note that the values of the arguments \texttt{col} and \texttt{pch} are indexed by factors, using the convention in \R\ that the index is taken as \emph{number of the level} of the supplied factor. Thus \texttt{c("blue","red")[dmL\$sex]} is \texttt{"blue"} when \texttt{sex} is \texttt{M} (the first level). The results of these two plotting commands are in figure \ref{fig:Lexis-diagram}, p. \pageref{fig:Lexis-diagram}. \begin{figure}[tb] \centering \includegraphics[width=0.35\textwidth]{flup-dmL1} \includegraphics[width=0.63\textwidth]{flup-dmL2} \caption{\it Lexis diagram of the \textrm{\tt DMlate} dataset; left panel is the default version, right panel: plot with some bells and whistles. The red lines are for women, blue for men, crosses indicate deaths.} \label{fig:Lexis-diagram} \end{figure} \section{Splitting the follow-up time along a time scale} In next chapter we shall conduct statistical analysis of mortality rates, and a prerequisite for parametric analysis of rates is that follow-up time is subdivided in smaller intervals, where we can reasonably assume that rates are constant. The follow-up time in a cohort can be subdivided (``split'') along a time scale, for example current age. This is achieved by the \texttt{splitLexis} (note that it is \emph{not} called \texttt{split.Lexis}). This requires that the time scale and the breakpoints on this time scale are supplied. Try: \begin{Schunk} \begin{Sinput} > dmS1 <- splitLexis( dmL, "age", breaks=seq(0,100,5) ) > summary( dmL ) \end{Sinput} \begin{Soutput} Transitions: To From DM Dead Records: Events: Risk time: Persons: DM 7497 2499 9996 2499 54273.27 9996 \end{Soutput} \begin{Sinput} > summary( dmS1 ) \end{Sinput} \begin{Soutput} Transitions: To From DM Dead Records: Events: Risk time: Persons: DM 18328 2499 20827 2499 54273.27 9996 \end{Soutput} \end{Schunk} We see that the number of persons and events and the amount of follow-up is the same in the two data sets; only the number of records differ --- the extra records all have \texttt{lex.Cst}=\texttt{DM} and \texttt{lex.Xst}=\texttt{DM}. To see how records are split for each individual, it is useful to list the results for a few individuals (whom we selected with a view to the illustrative usefulness): \begin{Schunk} \begin{Sinput} > wh.id <- c(9,27,52,484) > subset( dmL , lex.id %in% wh.id )[,1:10] \end{Sinput} \begin{Soutput} per age tfD lex.dur lex.Cst lex.Xst lex.id sex dobth dodm 430048 1998.956 61.87269 0 9.508556 DM Dead 9 F 1937.083 1998.956 22671 2000.042 52.71184 0 9.954825 DM DM 27 M 1947.331 2000.042 338459 1998.249 61.85626 0 11.748118 DM DM 52 F 1936.393 1998.249 274124 1998.260 62.37919 0 10.929500 DM Dead 484 F 1935.881 1998.260 \end{Soutput} \begin{Sinput} > subset( dmS1, lex.id %in% wh.id )[,1:10] \end{Sinput} \begin{Soutput} lex.id per age tfD lex.dur lex.Cst lex.Xst sex dobth dodm 14 9 1998.956 61.87269 0.000000 3.127310 DM DM F 1937.083 1998.956 15 9 2002.083 65.00000 3.127310 5.000000 DM DM F 1937.083 1998.956 16 9 2007.083 70.00000 8.127310 1.381246 DM Dead F 1937.083 1998.956 54 27 2000.042 52.71184 0.000000 2.288159 DM DM M 1947.331 2000.042 55 27 2002.331 55.00000 2.288159 5.000000 DM DM M 1947.331 2000.042 56 27 2007.331 60.00000 7.288159 2.666667 DM DM M 1947.331 2000.042 108 52 1998.249 61.85626 0.000000 3.143737 DM DM F 1936.393 1998.249 109 52 2001.393 65.00000 3.143737 5.000000 DM DM F 1936.393 1998.249 110 52 2006.393 70.00000 8.143737 3.604381 DM DM F 1936.393 1998.249 1004 484 1998.260 62.37919 0.000000 2.620808 DM DM F 1935.881 1998.260 1005 484 2000.881 65.00000 2.620808 5.000000 DM DM F 1935.881 1998.260 1006 484 2005.881 70.00000 7.620808 3.308693 DM Dead F 1935.881 1998.260 \end{Soutput} \end{Schunk} The resulting object, \texttt{dmS1}, is again a \texttt{Lexis} object, and the follow-up may be split further along another time scale, for example diabetes duration, \texttt{tfD}. Subsequently we list the results for the chosen individuals: \begin{Schunk} \begin{Sinput} > dmS2 <- splitLexis( dmS1, "tfD", breaks=c(0,1,2,5,10,20,30,40) ) > subset( dmS2, lex.id %in% wh.id )[,1:10] \end{Sinput} \begin{Soutput} lex.id per age tfD lex.dur lex.Cst lex.Xst sex dobth dodm 31 9 1998.956 61.87269 0.000000 1.0000000 DM DM F 1937.083 1998.956 32 9 1999.956 62.87269 1.000000 1.0000000 DM DM F 1937.083 1998.956 33 9 2000.956 63.87269 2.000000 1.1273101 DM DM F 1937.083 1998.956 34 9 2002.083 65.00000 3.127310 1.8726899 DM DM F 1937.083 1998.956 35 9 2003.956 66.87269 5.000000 3.1273101 DM DM F 1937.083 1998.956 36 9 2007.083 70.00000 8.127310 1.3812457 DM Dead F 1937.083 1998.956 111 27 2000.042 52.71184 0.000000 1.0000000 DM DM M 1947.331 2000.042 112 27 2001.042 53.71184 1.000000 1.0000000 DM DM M 1947.331 2000.042 113 27 2002.042 54.71184 2.000000 0.2881588 DM DM M 1947.331 2000.042 114 27 2002.331 55.00000 2.288159 2.7118412 DM DM M 1947.331 2000.042 115 27 2005.042 57.71184 5.000000 2.2881588 DM DM M 1947.331 2000.042 116 27 2007.331 60.00000 7.288159 2.6666667 DM DM M 1947.331 2000.042 229 52 1998.249 61.85626 0.000000 1.0000000 DM DM F 1936.393 1998.249 230 52 1999.249 62.85626 1.000000 1.0000000 DM DM F 1936.393 1998.249 231 52 2000.249 63.85626 2.000000 1.1437372 DM DM F 1936.393 1998.249 232 52 2001.393 65.00000 3.143737 1.8562628 DM DM F 1936.393 1998.249 233 52 2003.249 66.85626 5.000000 3.1437372 DM DM F 1936.393 1998.249 234 52 2006.393 70.00000 8.143737 1.8562628 DM DM F 1936.393 1998.249 235 52 2008.249 71.85626 10.000000 1.7481177 DM DM F 1936.393 1998.249 2084 484 1998.260 62.37919 0.000000 1.0000000 DM DM F 1935.881 1998.260 2085 484 1999.260 63.37919 1.000000 1.0000000 DM DM F 1935.881 1998.260 2086 484 2000.260 64.37919 2.000000 0.6208077 DM DM F 1935.881 1998.260 2087 484 2000.881 65.00000 2.620808 2.3791923 DM DM F 1935.881 1998.260 2088 484 2003.260 67.37919 5.000000 2.6208077 DM DM F 1935.881 1998.260 2089 484 2005.881 70.00000 7.620808 2.3791923 DM DM F 1935.881 1998.260 2090 484 2008.260 72.37919 10.000000 0.9295003 DM Dead F 1935.881 1998.260 \end{Soutput} \end{Schunk} A more efficient (and more intuitive) way of making this double split is to use the \texttt{splitMulti} function from the \texttt{popEpi} package: \begin{Schunk} \begin{Sinput} > library( popEpi ) > dmM <- splitMulti( dmL, age = seq(0,100,5), + tfD = c(0,1,2,5,10,20,30,40), + drop = FALSE ) > summary( dmS2 ) \end{Sinput} \begin{Soutput} Transitions: To From DM Dead Records: Events: Risk time: Persons: DM 40897 2499 43396 2499 54273.27 9996 \end{Soutput} \begin{Sinput} > summary( dmM ) \end{Sinput} \begin{Soutput} Transitions: To From DM Dead Records: Events: Risk time: Persons: DM 40897 2499 43396 2499 54273.27 9996 \end{Soutput} \end{Schunk} Note we used the argument \texttt{drop=FALSE} which will retain follow-up also outside the window defined by the breaks. Otherwise the default for \texttt{splitMulti} would be to drop follow-up outside \texttt{age} [0,100] and \texttt{tfD} [0,40]. This clipping behaviour is not available in \texttt{splitLexis}, nevertheless this may be exactly what we want in some situations. So we see that the two ways of splitting data yields the same amount of follow-up, but the results are not identical: \begin{Schunk} \begin{Sinput} > identical( dmS2, dmM ) \end{Sinput} \begin{Soutput} [1] FALSE \end{Soutput} \begin{Sinput} > class( dmS2 ) \end{Sinput} \begin{Soutput} [1] "Lexis" "data.frame" \end{Soutput} \begin{Sinput} > class( dmM ) \end{Sinput} \begin{Soutput} [1] "Lexis" "data.table" "data.frame" \end{Soutput} \end{Schunk} As we see, this is because the \texttt{dmM} object also is a \texttt{data.table} object; the \texttt{splitMulti} uses the \texttt{data.table} machinery which makes the splitting substantially faster --- this is of particular interest if you operate on large data sets ($>100,000$ records). Thus the recommended way of splitting follow-up time is by \texttt{splitMulti}. But you should be aware that the result is a \texttt{data.table} object, which in some circumstances behaves slightly different from \texttt{data.frame}s. See the manual for \texttt{data.table}. \section{Cutting follow up time at dates of intermediate events} If we have a recording of the date of a specific event as for example recovery or relapse, we may classify follow-up time as being before or after this intermediate event, but it requires that follow-up records that straddle the event be cut in two and placed in separate records, one representing follow-up \emph{before} the intermediate event, and another representing follow-up \emph{after} the intermediate event. This is achieved with the function \texttt{cutLexis}, which takes three arguments: the time point of the intermediate event, the time scale that this point refers to, and the value of the (new) state following the date. Optionally, we may also define a new time scale with the argument \texttt{new.scale=}. We are interested in the time before and after inception of insulin use, which occurs at the date \texttt{doins}: \begin{Schunk} \begin{Sinput} > whc <- c(names(dmL)[1:7],"dodm","doins") # WHich Columns do we want to see? > subset( dmL, lex.id %in% wh.id )[,whc] \end{Sinput} \begin{Soutput} per age tfD lex.dur lex.Cst lex.Xst lex.id dodm doins 430048 1998.956 61.87269 0 9.508556 DM Dead 9 1998.956 NA 22671 2000.042 52.71184 0 9.954825 DM DM 27 2000.042 NA 338459 1998.249 61.85626 0 11.748118 DM DM 52 1998.249 2004.804 274124 1998.260 62.37919 0 10.929500 DM Dead 484 1998.260 2003.960 \end{Soutput} \begin{Sinput} > dmC <- cutLexis( data = dmL, + cut = dmL$doins, + timescale = "per", + new.state = "Ins", + new.scale = "tfI", + precursor.states = "DM" ) > whc <- c(names(dmL)[1:8],"doins") # WHich Columns do we want to see? > subset( dmC, lex.id %in% wh.id )[,whc] \end{Sinput} \begin{Soutput} per age tfD lex.dur lex.Cst lex.Xst lex.id sex doins 9 1998.956 61.87269 0.000000 9.508556 DM Dead 9 F NA 27 2000.042 52.71184 0.000000 9.954825 DM DM 27 M NA 52 1998.249 61.85626 0.000000 6.554415 DM Ins 52 F 2004.804 10048 2004.804 68.41068 6.554415 5.193703 Ins Ins 52 F 2004.804 484 1998.260 62.37919 0.000000 5.700205 DM Ins 484 F 2003.960 10480 2003.960 68.07940 5.700205 5.229295 Ins Dead 484 F 2003.960 \end{Soutput} \end{Schunk} (The \texttt{precursor.states=} argument is explained below). Note that the process of cutting time is simplified by having all types of events referred to the calendar time scale. This is a generally applicable advice in handling follow-up data: Get all event times as \emph{dates}, location of events and follow-up on other time scales can then easily be derived from this. Note that individual 52 has had his follow-up cut at 6.55 years from diabetes diagnosis and individual 484 at 5.70 years from diabetes diagnosis. This dataset could then be split along the time scales as we did before with \texttt{dmL}. The result of this can also be achieved by cutting the split dataset \texttt{dmS2} instead of \texttt{dmL}: \begin{Schunk} \begin{Sinput} > dmS2C <- cutLexis( data = dmS2, + cut = dmS2$doins, + timescale = "per", + new.state = "Ins", + new.scale = "tfI", + precursor.states = "DM" ) > subset( dmS2C, lex.id %in% wh.id )[,whc] \end{Sinput} \begin{Soutput} per age tfD lex.dur lex.Cst lex.Xst lex.id sex doins 31 1998.956 61.87269 0.000000 1.0000000 DM DM 9 F NA 32 1999.956 62.87269 1.000000 1.0000000 DM DM 9 F NA 33 2000.956 63.87269 2.000000 1.1273101 DM DM 9 F NA 34 2002.083 65.00000 3.127310 1.8726899 DM DM 9 F NA 35 2003.956 66.87269 5.000000 3.1273101 DM DM 9 F NA 36 2007.083 70.00000 8.127310 1.3812457 DM Dead 9 F NA 111 2000.042 52.71184 0.000000 1.0000000 DM DM 27 M NA 112 2001.042 53.71184 1.000000 1.0000000 DM DM 27 M NA 113 2002.042 54.71184 2.000000 0.2881588 DM DM 27 M NA 114 2002.331 55.00000 2.288159 2.7118412 DM DM 27 M NA 115 2005.042 57.71184 5.000000 2.2881588 DM DM 27 M NA 116 2007.331 60.00000 7.288159 2.6666667 DM DM 27 M NA 229 1998.249 61.85626 0.000000 1.0000000 DM DM 52 F 2004.804 230 1999.249 62.85626 1.000000 1.0000000 DM DM 52 F 2004.804 231 2000.249 63.85626 2.000000 1.1437372 DM DM 52 F 2004.804 232 2001.393 65.00000 3.143737 1.8562628 DM DM 52 F 2004.804 233 2003.249 66.85626 5.000000 1.5544148 DM Ins 52 F 2004.804 43629 2004.804 68.41068 6.554415 1.5893224 Ins Ins 52 F 2004.804 43630 2006.393 70.00000 8.143737 1.8562628 Ins Ins 52 F 2004.804 43631 2008.249 71.85626 10.000000 1.7481177 Ins Ins 52 F 2004.804 2084 1998.260 62.37919 0.000000 1.0000000 DM DM 484 F 2003.960 2085 1999.260 63.37919 1.000000 1.0000000 DM DM 484 F 2003.960 2086 2000.260 64.37919 2.000000 0.6208077 DM DM 484 F 2003.960 2087 2000.881 65.00000 2.620808 2.3791923 DM DM 484 F 2003.960 2088 2003.260 67.37919 5.000000 0.7002053 DM Ins 484 F 2003.960 45484 2003.960 68.07940 5.700205 1.9206023 Ins Ins 484 F 2003.960 45485 2005.881 70.00000 7.620808 2.3791923 Ins Ins 484 F 2003.960 45486 2008.260 72.37919 10.000000 0.9295003 Ins Dead 484 F 2003.960 \end{Soutput} \end{Schunk} Thus it does not matter in which order we use \texttt{splitLexis} and \texttt{cutLexis}. Mathematicians would say that \texttt{splitLexis} and \texttt{cutLexis} are commutative. Note in \texttt{lex.id}=484, that follow-up subsequent to the event is classified as being in state \texttt{Ins}, but that the final transition to state \texttt{Dead} is preserved. This is the point of the \texttt{precursor.states=} argument. It names the states (in this case \texttt{DM}) that will be over-written by \texttt{new.state} (in this case \texttt{Ins}), while the state \texttt{Dead} should not be updated even if it is after the time where the persons moves to state \texttt{Ins}. In other words, only state \texttt{DM} is a precursor to state \texttt{Ins}, state \texttt{Dead} is always subsequent to state \texttt{Ins}. Note that we defined a new time scale, \texttt{tfI}, using the argument \texttt{new.scale=tfI}. This has a special status relative to the other three time scales, it is defined as time since entry into a state, namely \texttt{Ins}, this is noted in the time scale part of the summary of \texttt{Lexis} object --- the information sits in the attribute \texttt{time.since} of the \texttt{Lexis} object, which can be accessed by the function \texttt{timeSince()} or through the \texttt{summary()}: \begin{Schunk} \begin{Sinput} > summary( dmS2C, timeScales=TRUE ) \end{Sinput} \begin{Soutput} Transitions: To From DM Ins Dead Records: Events: Risk time: Persons: DM 35135 1694 2048 38877 3742 45885.49 9899 Ins 0 5762 451 6213 451 8387.77 1791 Sum 35135 7456 2499 45090 4193 54273.27 9996 Timescales: per age tfD tfI "" "" "" "Ins" \end{Soutput} \end{Schunk} Finally we can get a quick overview of the states and transitions by using \texttt{boxes} --- \texttt{scale.R} scales transition rates to rates per 1000 PY: \begin{Schunk} \begin{Sinput} > boxes( dmC, boxpos=TRUE, scale.R=1000, show.BE=TRUE ) \end{Sinput} \end{Schunk} \insfig{box1}{0.8}{States, person years, transitions and rates in the cut dataset. The numbers \emph{in} the boxes are person-years and the number of persons \texttt{B}eginning, resp. \texttt{E}nding their follow-up in each state (triggered by \textrm{\tt show.BE=TRUE}). The numbers at the arrows are the number of transitions and transition rates per 1000 (triggered by \textrm{\tt scale.R=1000}).} \chapter{Modeling rates from \texttt{Lexis} objects} \section{Covariates} In the dataset \texttt{dmS2C} there are three types of covariates that can be used to describe mortality rates: \begin{enumerate} \item time-dependent covariates \item time scales \item fixed covariates \end{enumerate} There is only one time-dependent covariate here, namely \texttt{lex.Cst}, the current state of the person's follow up; it takes the values \texttt{DM} and \texttt{Ins} according to whether the person has ever purchased insulin at a given time of follow-up. The time-scales are obvious candidates for explanatory variables for the rates, notably age and time from diagnosis (duration of diabetes) and insulin. \subsection{Time scales as covariates} If we want to model the effect of the time scale variables on occurrence rates, we will for each interval use either the value of the left endpoint in each interval or the middle. There is a function \texttt{timeBand} which returns either of these: \begin{Schunk} \begin{Sinput} > timeBand( dmS2C, "age", "middle" )[1:10] \end{Sinput} \begin{Soutput} [1] 57.5 57.5 62.5 62.5 62.5 67.5 67.5 62.5 67.5 67.5 \end{Soutput} \begin{Sinput} > # For nice printing and column labelling we use the data.frame() function: > data.frame( dmS2C[,c("per","age","tfD","lex.dur")], + mid.age=timeBand( dmS2C, "age", "middle" ), + mid.t=timeBand( dmS2C, "tfD", "middle" ), + left.t=timeBand( dmS2C, "tfD", "left" ), + right.t=timeBand( dmS2C, "tfD", "right" ), + fact.t=timeBand( dmS2C, "tfD", "factor" ) )[1:15,] \end{Sinput} \begin{Soutput} per age tfD lex.dur mid.age mid.t left.t right.t fact.t 1 1998.917 58.66119 0.0000000 1.00000000 57.5 0.5 0 1 (0,1] 2 1999.917 59.66119 1.0000000 0.33880903 57.5 1.5 1 2 (1,2] 3 2000.256 60.00000 1.3388090 0.66119097 62.5 1.5 1 2 (1,2] 4 2000.917 60.66119 2.0000000 3.00000000 62.5 3.5 2 5 (2,5] 5 2003.917 63.66119 5.0000000 1.33880903 62.5 7.5 5 10 (5,10] 6 2005.256 65.00000 6.3388090 3.66119097 67.5 7.5 5 10 (5,10] 7 2008.917 68.66119 10.0000000 1.08008214 67.5 15.0 10 20 (10,20] 8 2003.309 64.09035 0.0000000 0.90965092 62.5 0.5 0 1 (0,1] 9 2004.218 65.00000 0.9096509 0.09034908 67.5 0.5 0 1 (0,1] 10 2004.309 65.09035 1.0000000 1.00000000 67.5 1.5 1 2 (1,2] 11 2005.309 66.09035 2.0000000 3.00000000 67.5 3.5 2 5 (2,5] 12 2008.309 69.09035 5.0000000 0.90965092 67.5 7.5 5 10 (5,10] 13 2009.218 70.00000 5.9096509 0.77891855 72.5 7.5 5 10 (5,10] 14 2004.552 86.25051 0.0000000 1.00000000 87.5 0.5 0 1 (0,1] 15 2005.552 87.25051 1.0000000 1.00000000 87.5 1.5 1 2 (1,2] \end{Soutput} \end{Schunk} Note that the values of these functions are characteristics of the intervals defined by \texttt{breaks=}, \emph{not} the midpoints nor left or right endpoints of the actual follow-up intervals (which would be \texttt{tfD} and \texttt{tfD+lex.dur}, respectively). These functions are intended for modeling time scale variables as factors (categorical variables) in which case the coding must be independent of the censoring and mortality pattern --- it should only depend on the chosen grouping of the time scale. Modeling time scales as \emph{quantitative} should not be based on these codings but directly on the values of the time-scale variables, notably the left endpoints of the intervals. \subsection{Differences between time scales} Apparently, the only fixed variable is \texttt{sex}, but formally the dates of birth (\texttt{dobth}), diagnosis (\texttt{dodm}) and first insulin purchase (\texttt{doins}) are fixed covariates too. They can be constructed as origins of time scales referred to the calendar time scale. Likewise, and possibly of greater interest, we can consider these origins on the age scale, calculated as the difference between age and another time scale. These would then be age at birth (hardly relevant since it is the same for all persons), age at diabetes diagnosis and age at insulin treatment. \subsection{Keeping the relation between time scales} The midpoint (as well as the right interval endpoint) should be used with caution if the variable age at diagnosis \texttt{dodm-dobth} is modeled too; the age at diabetes is logically equal to the difference between current age (\texttt{age}) and time since diabetes diagnosis (\texttt{tfD}): \begin{Schunk} \begin{Sinput} > summary( (dmS2$age-dmS2$tfD) - (dmS2$dodm-dmS2$dobth) ) \end{Sinput} \begin{Soutput} Min. 1st Qu. Median Mean 3rd Qu. Max. 0 0 0 0 0 0 \end{Soutput} \end{Schunk} This calculation refers to the \emph{start} of each interval --- which are in the time scale variables in the \texttt{Lexis} object. But when using the middle of the intervals, this relationship is not preserved: \begin{Schunk} \begin{Sinput} > summary( timeBand( dmS2, "age", "middle" ) - + timeBand( dmS2, "tfD", "middle" ) - (dmS2$dodm-dmS2$dobth) ) \end{Sinput} \begin{Soutput} Min. 1st Qu. Median Mean 3rd Qu. Max. -7.4870 -2.0862 -0.3765 Inf 1.3641 Inf \end{Soutput} \end{Schunk} If all three variables are to be included in a model, we must make sure that the \emph{substantial} relationship between the variables be maintained. One way is to recompute age at diabetes diagnosis from the two midpoint variables, but more straightforward would be to use the left endpoint of the intervals, that is the time scale variables in the \texttt{Lexis} object. If we dissolve the relationship between the variables \texttt{age}, \texttt{tfD} and age at diagnosis by grouping we may obtain identifiability of the three separate effects, but it will be at the price of an arbitrary allocation of a linear trend between them. For the sake of clarity, consider current age, $a$, duration of disease, $d$ and age at diagnosis $e$, where \[ \text{current age} = \text{age at diagnosis} + \text{disease duration}, \quad \text{\ie} \quad a=e+d \quad \Leftrightarrow \quad e+d-a=0 \] If we model the effect of the quantitative variables $a$, $e$ and $d$ on the log-rates by three functions $f$, $g$ and $h$: $ \log(\lambda)=f(a)+g(d)+h(e) $ then for any $\kappa$: \begin{align*} \log(\lambda) & = f(a)+g(d)+h(e)+\kappa(e+d-a)\\ & = \big(f(a)-\kappa a \big)+ \big(g(d)+\kappa d \big)+ \big(h(e)+\kappa e \big) \\ & = \tilde f(a)+ \tilde g(d)+ \tilde h(e) \end{align*} In practical modeling this will turn up as a singular model matrix with one parameter aliased, corresponding to some arbitrarily chosen value of $\kappa$ (depending on software conventions for singular models). This phenomenon is well known from age-period-cohort models. Thus we see that we can move any slope around between the three terms, so if we achieve identifiability by using grouping of one of the variables we will in reality have settled for a particular value of $\kappa$, without known why we chose just that. The solution is to resort to predictions which are independent of the particular parametrization or choose a particular parametrization with explicit constraints. \section{Modeling of rates} As mentioned, the purpose of subdividing follow-up data in smaller intervals is to be able to model effects of time scale variables as parametric functions. When we split along a time scale we can get intervals that are as small as we want; if they are sufficiently small, an assumption of constant rates in each interval becomes reasonable. In a model that assumes a constant occurrence rate in each of the intervals the likelihood contribution from each interval is the same as the likelihood contribution from a Poisson variate $D$, say, with mean $\lambda \ell$ where $\lambda$ is the rate and $\ell$ is the interval length, and where the value of the variate $D$ is 1 or 0 according to whether an event has occurred or not. Moreover, the likelihood contributions from all follow-up intervals from a single person are \emph{conditionally} independent (conditional on having survived till the start of the interval in question). This implies that the total contribution to the likelihood from a single person is a product of terms, and hence the same as the likelihood of a number of independent Poisson terms, one from each interval. Note that variables are neither Poisson distributed (\eg they can only ever assume values 0 or 1) nor independent --- it is only the likelihood for the follow-up data that happens to be the same as the likelihood from independent Poisson variates. Different models can have the same likelihood, a model cannot be inferred from the likelihood. Parametric modeling of the rates is obtained by using the \emph{values} of the time scales for each interval as \emph{quantitative} explanatory variables, using for example splines. And of course also the values of the fixed covariates and the time-dependent variables for each interval. Thus the model will be one where the rate is assumed constant in each (small) interval, but where a parametric form of the \emph{size} of the rate in each interval is imposed by the model, using the time scale as a quantitative covariate. \subsection{Interval length} In the first chapter we illustrated cutting and splitting by listing the results for a few individuals across a number of intervals. For illustrational purposes we used 5-year age bands to avoid excessive listings, but since the doubling time for mortality on the age scale is only slightly larger than 5 years, the assumption about constant rates in each interval would be pretty far fetched if we were to use 5 year intervals. Thus, for modeling purposes we split the follow-up in 3 month intervals. When we use intervals of 3 months length it is superfluous to split along multiple time scales --- the precise location of tightly spaced splits will be irrelevant from any practical point of view. \texttt{splitLexis} and \texttt{splitMulti} will allocate the actual split times for all of the time scale variables, so these can be used directly in modeling. So we split the cut dataset in 3 months intervals along the age scale: \begin{Schunk} \begin{Sinput} > dmCs <- splitMulti( dmC, age = seq(0,110,1/4) ) > summary( dmCs, t=T ) \end{Sinput} \begin{Soutput} Transitions: To From DM Ins Dead Records: Events: Risk time: Persons: DM 189669 1694 2048 193411 3742 45885.49 9899 Ins 0 34886 451 35337 451 8387.77 1791 Sum 189669 36580 2499 228748 4193 54273.27 9996 Timescales: per age tfD tfI "" "" "" "Ins" \end{Soutput} \end{Schunk} We see that we now have 228,748 records and 9996 persons, so about 23 records per person. The total risk time is 54,275 years, a bit less than 3 months on average per record as expected. \subsection{Practicalities for splines} In this study we want to look at how mortality depend on age (\texttt{age}) and time since start of insulin use (\texttt{tfI}). If we want to use splines in the description we must allocate knots for anchoring the splines at each of the time scales, either by some \textit{ad hoc} method or by using some sort of penalized splines as for example by \texttt{gam}; the latter will not be treated here; it belongs in the realm of the \texttt{mgcv} package. Here we shall use the former approach and allocate 5 knots on each of the time-scales. We allocate knots so that we have the events evenly distributed between the knots. Since the insulin state starts at 0 for all individuals we include 0 as the first knot, such that any set of natural splines with these knots will have the value 0 at 0 on the time scale. \begin{Schunk} \begin{Sinput} > ( a.kn <- with( subset( dmCs, lex.Xst=="Dead" ), + quantile( age+lex.dur, (1:5-0.5)/5 ) ) ) \end{Sinput} \begin{Soutput} 10% 30% 50% 70% 90% 60.29350 71.31937 77.72758 82.72745 89.86393 \end{Soutput} \begin{Sinput} > ( i.kn <- c( 0, + with( subset( dmCs, lex.Xst=="Dead" & lex.Cst=="Ins" ), + quantile( tfI+lex.dur, (1:4)/5 ) ) ) ) \end{Sinput} \begin{Soutput} 20% 40% 60% 80% 0.0000000 0.3093771 1.1307324 2.5489391 4.9117043 \end{Soutput} \end{Schunk} In the \texttt{Epi} package there is a convenience wrapper, \texttt{Ns}, for the \texttt{n}atural \texttt{s}pline generator \texttt{ns}, that takes the smallest and the largest of a set of supplied knots to be the boundary knots, so the explicit definition of the boundary knots becomes superfluous. Note that it is a feature of the \texttt{Ns} (via the features of \texttt{ns}) that any generated spline function is 0 at the leftmost knot. \subsection{Poisson models} A model that describes mortality rates as only a function of age would then be: \begin{Schunk} \begin{Sinput} > ma <- glm( (lex.Xst=="Dead") ~ Ns(age,knots=a.kn), + family = poisson, + offset = log(lex.dur), + data = dmCs ) > summary( ma ) \end{Sinput} \begin{Soutput} Call: glm(formula = (lex.Xst == "Dead") ~ Ns(age, knots = a.kn), family = poisson, data = dmCs, offset = log(lex.dur)) Deviance Residuals: Min 1Q Median 3Q Max -0.5883 -0.1688 -0.1144 -0.0766 4.5958 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -3.82830 0.03861 -99.16 <2e-16 Ns(age, knots = a.kn)1 1.36254 0.08723 15.62 <2e-16 Ns(age, knots = a.kn)2 1.49446 0.06845 21.83 <2e-16 Ns(age, knots = a.kn)3 2.63557 0.07058 37.34 <2e-16 Ns(age, knots = a.kn)4 1.94173 0.05769 33.66 <2e-16 (Dispersion parameter for poisson family taken to be 1) Null deviance: 27719 on 228747 degrees of freedom Residual deviance: 25423 on 228743 degrees of freedom AIC: 30431 Number of Fisher Scoring iterations: 8 \end{Soutput} \end{Schunk} The offset, \texttt{log(lex.dur)} comes from the fact that the likelihood for the follow-up data during $\ell$ time is the same as that for independent Poisson variates with mean $\lambda \ell$, and that the default link function for the Poisson family is the log, so that we are using a linear model for the log-mean, $\log(\lambda) + \log(\ell)$. But when we want a model for the log-rate ($\log(\lambda)$), the term $\log(\ell)$ must still be included as a covariate, but with regression coefficient fixed to 1; a so-called \emph{offset}. This is however a technicality; it just exploits that the likelihood of a particular Poisson model and that of the rates model is the same. In the \texttt{Epi} package is a \texttt{glm} family, \texttt{poisreg} that has a more intuitive interface, where the response is a 2-column matrix of events and person-time, respectively. This is in concert with the fact that the outcome variable in follow-up studies is bivariate: (event, risk time). \begin{Schunk} \begin{Sinput} > Ma <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn), + family = poisreg, data = dmCs ) > summary( Ma ) \end{Sinput} \begin{Soutput} Call: glm(formula = cbind(lex.Xst == "Dead", lex.dur) ~ Ns(age, knots = a.kn), family = poisreg, data = dmCs) Deviance Residuals: Min 1Q Median 3Q Max -0.5883 -0.1688 -0.1144 -0.0766 4.5958 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -3.82830 0.03861 -99.15 <2e-16 Ns(age, knots = a.kn)1 1.36254 0.08723 15.62 <2e-16 Ns(age, knots = a.kn)2 1.49446 0.06845 21.83 <2e-16 Ns(age, knots = a.kn)3 2.63557 0.07058 37.34 <2e-16 Ns(age, knots = a.kn)4 1.94173 0.05769 33.66 <2e-16 (Dispersion parameter for poisson family taken to be 1) Null deviance: 27719 on 228747 degrees of freedom Residual deviance: 25423 on 228743 degrees of freedom AIC: 30431 Number of Fisher Scoring iterations: 7 \end{Soutput} \end{Schunk} Exploiting the multistate structure in the \texttt{Lexis} object there is a multistate convenience wrapper for \texttt{glm} with the \texttt{poisreg} family, that just requires specification of the transitions in terms of \texttt{from} and \texttt{to}. Although it is called \texttt{glm.Lexis} it is \emph{not} an S3 method for \texttt{Lexis} objects: \begin{Schunk} \begin{Sinput} > Xa <- glm.Lexis( dmCs, from="DM", to="Dead", + formula = ~ Ns(age,knots=a.kn) ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object dmCs with log link: Rates for the transition: DM->Dead \end{Soutput} \end{Schunk} The result is a \texttt{glm} object but with an extra attribute, \texttt{Lexis}: \begin{Schunk} \begin{Sinput} > attr( Xa, "Lexis" ) \end{Sinput} \begin{Soutput} $data [1] "dmCs" $trans [1] "DM->Dead" $formula ~Ns(age, knots = a.kn) $scale [1] 1 \end{Soutput} \end{Schunk} There are similar wrappers for \texttt{gam} and \texttt{coxph} models, \texttt{gam.Lexis} and \texttt{coxph.Lexis}, but these will not be elaborated in detail. The \texttt{from=} and \texttt{to=} can even be omitted, in which case all possible transitions \emph{into} any of the absorbing states is modeled: \begin{Schunk} \begin{Sinput} > xa <- glm.Lexis( dmCs, formula = ~ Ns(age,knots=a.kn) ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object dmCs with log link: Rates for transitions: DM->Dead, Ins->Dead \end{Soutput} \end{Schunk} We can check if the four models fitted are the same: \begin{Schunk} \begin{Sinput} > c( deviance(ma), deviance(Ma), deviance(Xa), deviance(xa) ) \end{Sinput} \begin{Soutput} [1] 25422.92 25422.92 20902.31 25422.92 \end{Soutput} \end{Schunk} Oops! the model \texttt{Xa} is apparently not the same as the other three? This is because the explicit specification \verb|from="DM", to="Dead"|, omits modeling contributions from the $\mathtt{Ins}\rightarrow\mathtt{Dead}$ transition --- the output actually said so --- see also figure \ref{fig:box1} on p. \pageref{fig:box1}. The other three models all use both transitions --- and assume that the two transition rates are the same, \ie that start of insulin has no effect on mortality. We shall relax this assumption later. The parameters from the model do not have any direct interpretation \textit{per se}, but we can compute the estimated mortality rates for a range of ages using \texttt{ci.pred} with a suitably defined prediction data frame. Note that if we use the \texttt{poisson} family of models, we must specify all covariates in the model, including the variable in the offset, \texttt{lex.dur} (remember that this was a covariate with coefficient fixed at 1). We set the latter to 1000, because we want the mortality rates per 1000 person-years. Using the \texttt{poisreg} family, the prediction will ignore any value of \texttt{lex.dur} specified in the prediction data frame, the returned rates will be per unit in which \texttt{lex.dur} is recorded. \begin{Schunk} \begin{Sinput} > nd <- data.frame( age=40:85, lex.dur=1000 ) > pr.0 <- ci.pred( ma, newdata = nd ) # mortality per 100 PY > pr.a <- ci.pred( Ma, newdata = nd )*1000 # mortality per 100 PY > summary(pr.0/pr.a) \end{Sinput} \begin{Soutput} Estimate 2.5% 97.5% Min. :1 Min. :1 Min. :1 1st Qu.:1 1st Qu.:1 1st Qu.:1 Median :1 Median :1 Median :1 Mean :1 Mean :1 Mean :1 3rd Qu.:1 3rd Qu.:1 3rd Qu.:1 Max. :1 Max. :1 Max. :1 \end{Soutput} \begin{Sinput} > matshade( nd$age, pr.a, plot=TRUE, + type="l", lty=1, + log="y", xlab="Age (years)", + ylab="DM mortality per 1000 PY") \end{Sinput} \end{Schunk} \insfig{pr-a}{0.8}{Mortality among Danish diabetes patients by age with 95\% CI as shaded area. We see that the rates increase linearly on the log-scale, that is exponentially by age.} \section{Time dependent covariate} A Poisson model approach to mortality by insulin status, would be to assume that the rate-ratio between patients on insulin and not on insulin is a fixed quantity, independent of time since start of insulin, independent of age. This is commonly termed a proportional hazards assumption, because the rates (hazards) in the two groups are proportional along the age (baseline time) scale. \begin{Schunk} \begin{Sinput} > pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + + lex.Cst + sex, + family=poisreg, data = dmCs ) > round( ci.exp( pm ), 3 ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% (Intercept) 0.022 0.021 0.024 Ns(age, knots = a.kn)1 4.248 3.581 5.040 Ns(age, knots = a.kn)2 5.008 4.376 5.731 Ns(age, knots = a.kn)3 16.832 14.624 19.373 Ns(age, knots = a.kn)4 7.994 7.126 8.968 lex.CstIns 1.985 1.791 2.200 sexF 0.668 0.617 0.724 \end{Soutput} \end{Schunk} So we see that persons on insulin have about twice the mortality of persons not on insulin and that women have 2/3 the mortality of men. \subsection{Time since insulin start} If we want to test whether the excess mortality depends on the time since start if insulin treatment, we can add a spline terms in \texttt{tfI}. But since \texttt{tfI} is a time scale defined as time since entry into a new state (\texttt{Ins}), the variable \texttt{tfI} will be missing for those in the \texttt{DM} state, so before modeling we must set the \texttt{NA}s to 0, which we do with \texttt{tsNA20} (acronym for \texttt{t}ime\texttt{s}cale \texttt{NA}s to zero): \begin{Schunk} \begin{Sinput} > pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + + Ns(tfI,knots=i.kn) + + lex.Cst + sex, + family=poisreg, data = tsNA20(dmCs) ) \end{Sinput} \end{Schunk} As noted before we could do this simpler with \texttt{glm.Lexis}, even without the \texttt{from=} and \texttt{to=} arguments, because we are modeling all transitions \emph{into} the absorbing state (\texttt{Dead}): \begin{Schunk} \begin{Sinput} > Pm <- glm.Lexis( tsNA20(dmCs), + form = ~ Ns(age,knots=a.kn) + + Ns(tfI,knots=i.kn) + + lex.Cst + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object tsNA20(dmCs) with log link: Rates for transitions: DM->Dead, Ins->Dead \end{Soutput} \begin{Sinput} > c( deviance(Pm), deviance(pm) ) \end{Sinput} \begin{Soutput} [1] 25096.33 25096.33 \end{Soutput} \begin{Sinput} > identical( model.matrix(Pm), model.matrix(pm) ) \end{Sinput} \begin{Soutput} [1] TRUE \end{Soutput} \end{Schunk} The coding of the effect of \texttt{tfI} is so that the value is 0 at 0, so the meaning of the estimate of the effect of \texttt{lex.Cst} is the RR between persons with and without insulin, immediately after start of insulin: \begin{Schunk} \begin{Sinput} > round( ci.exp( Pm, subset="ex" ), 3 ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% lex.CstIns 5.632 4.430 7.16 sexF 0.674 0.622 0.73 \end{Soutput} \end{Schunk} We see that the effect of sex is pretty much the same as before, but the effect of \texttt{lex.Cst} is much larger, it now refers to a different quantity, namely the RR at \texttt{tfI}=0. If we want to see the effect of time since insulin, it is best viewed jointly with the effect of age: \begin{Schunk} \begin{Sinput} > ndI <- data.frame( expand.grid( tfI=c(NA,seq(0,15,0.1)), + ai=seq(40,80,10) ), + sex="M", + lex.Cst="Ins" ) > ndI <- transform( ndI, age=ai+tfI ) > head( ndI ) \end{Sinput} \begin{Soutput} tfI ai sex lex.Cst age 1 NA 40 M Ins NA 2 0.0 40 M Ins 40.0 3 0.1 40 M Ins 40.1 4 0.2 40 M Ins 40.2 5 0.3 40 M Ins 40.3 6 0.4 40 M Ins 40.4 \end{Soutput} \begin{Sinput} > ndA <- data.frame( age= seq(40,100,0.1), tfI=0, lex.Cst="DM", sex="M" ) > pri <- ci.pred( Pm, ndI ) * 1000 > pra <- ci.pred( Pm, ndA ) * 1000 > matshade( ndI$age, pri, plot=TRUE, las=1, + xlab="Age (years)", ylab="DM mortality per 1000 PY", + log="y", lty=1, col="blue" ) > matshade( ndA$age, pra ) \end{Sinput} \end{Schunk} \insfig{ins-time}{0.8}{Mortality rates of persons on insulin, starting insulin at ages 40,50,\ldots,80 (blue), compared with persons not on insulin (black curve). Shaded areas are 95\% CI.} In figure \ref{fig:ins-time}, p. \pageref{fig:ins-time}, we see that mortality is high just after insulin start, but falls by almost a factor 3 during the first year. Also we see that there is a tendency that mortality in a given age is smallest for those with the longest duration of insulin use. \section{The Cox model} Note that in the Cox-model the age is used as response variable, slightly counter-intuitive. Hence the age part of the linear predictors is not in that model: \begin{Schunk} \begin{Sinput} > library( survival ) > cm <- coxph( Surv(age,age+lex.dur,lex.Xst=="Dead") ~ + Ns(tfI,knots=i.kn) + lex.Cst + sex, + data = tsNA20(dmCs) ) \end{Sinput} \end{Schunk} There is also a multistate wrapper for Cox models, requiring a l.h.s. side for the \texttt{formula=} argument: \begin{Schunk} \begin{Sinput} > Cm <- coxph.Lexis( tsNA20(dmCs), + form= age ~ Ns(tfI,knots=i.kn) + lex.Cst + sex ) \end{Sinput} \begin{Soutput} survival::coxph analysis of Lexis object tsNA20(dmCs): Rates for transitions DM->Dead, Ins->Dead Baseline timescale: age \end{Soutput} \begin{Sinput} > cbind( ci.exp( cm ), ci.exp( Cm ) ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% exp(Est.) 2.5% 97.5% Ns(tfI, knots = i.kn)1 0.2984062 0.19417148 0.4585960 0.2984062 0.19417148 0.4585960 Ns(tfI, knots = i.kn)2 0.3871151 0.29011380 0.5165495 0.3871151 0.29011380 0.5165495 Ns(tfI, knots = i.kn)3 0.1239128 0.06287008 0.2442238 0.1239128 0.06287008 0.2442238 Ns(tfI, knots = i.kn)4 0.4405121 0.34839015 0.5569932 0.4405121 0.34839015 0.5569932 lex.CstIns 5.6700284 4.45011220 7.2243623 5.6700284 4.45011220 7.2243623 lex.CstDead 1.0000000 1.00000000 1.0000000 1.0000000 1.00000000 1.0000000 sexF 0.6753202 0.62316569 0.7318397 0.6753202 0.62316569 0.7318397 \end{Soutput} \end{Schunk} We can compare the estimates from the Cox model with those from the Poisson model --- we must add \texttt{NA}s because the Cox-model does not give the parameters for the baseline time scale (\texttt{age}), but also remove one of the parameters, because \texttt{coxph} parametrizes factors (in this case \texttt{lex.Cst}) by all defined levels and not only by the levels present in the dataset at hand (note the line of \texttt{1.0000000}s in the print above): \begin{Schunk} \begin{Sinput} > round( cbind( ci.exp( Pm ), + rbind( matrix(NA,5,3), + ci.exp( cm )[-6,] ) ), 3 ) \end{Sinput} \begin{Soutput} exp(Est.) 2.5% 97.5% exp(Est.) 2.5% 97.5% (Intercept) 0.022 0.021 0.024 NA NA NA Ns(age, knots = a.kn)1 4.208 3.546 4.993 NA NA NA Ns(age, knots = a.kn)2 5.012 4.380 5.736 NA NA NA Ns(age, knots = a.kn)3 16.560 14.386 19.063 NA NA NA Ns(age, knots = a.kn)4 7.921 7.061 8.885 NA NA NA Ns(tfI, knots = i.kn)1 0.298 0.194 0.458 0.298 0.194 0.459 Ns(tfI, knots = i.kn)2 0.385 0.289 0.514 0.387 0.290 0.517 Ns(tfI, knots = i.kn)3 0.125 0.064 0.246 0.124 0.063 0.244 Ns(tfI, knots = i.kn)4 0.438 0.346 0.553 0.441 0.348 0.557 lex.CstIns 5.632 4.430 7.160 5.670 4.450 7.224 sexF 0.674 0.622 0.730 0.675 0.623 0.732 \end{Soutput} \end{Schunk} Thus we see that the Poisson and Cox gives pretty much the same results. You may argue that Cox requires a smaller dataset, because there is no need to subdivide data in small intervals \emph{before} insulin use. But certainly the time \emph{after} insulin inception need to be if the effect of this time should be modeled. The drawback of the Cox-modeling is that it is not possible to show the absolute rates as we did in figure \ref{fig:ins-time} on \pageref{fig:ins-time}. \section{Marginal effect of time since insulin} When we plot the marginal effect of \texttt{tfI} from the two models we get pretty much the same; here we plot the RR relative to \texttt{tfI}=2 years. Note that we are deriving the RR as the ratio of two sets of predictions, from the data frames \texttt{nd} and \texttt{nr} --- for further details consult the help page for \texttt{ci.lin}, specifically the use of a list as the \texttt{ctr.mat} argument: \begin{Schunk} \begin{Sinput} > nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) > nr <- data.frame( tfI= 2 , lex.Cst="Ins", sex="M" ) > ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) > cpr <- ci.exp( cm, list(nd,nr) ) > par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) > matshade( nd$tfI, cbind(ppr,cpr), plot=T, + lty=c(1,2), log="y", + xlab="Time since insulin (years)", ylab="Rate ratio") > abline( h=1, lty=3 ) \end{Sinput} \end{Schunk} \insfig{Ieff}{0.8}{The naked duration effects relative to 2 years of duration, black from Poisson model, red from Cox model. The two sets of estimates are identical, and so are the standard errors, so the two shaded areas overlap almost perfectly.} In figure \ref{fig:Ieff}, p. \pageref{fig:Ieff}, we see that the duration effect is exactly the same from the two modeling approaches. We will also want the RR relative to the non-insulin users --- recall these are coded 0 on the \texttt{tfI} variable: \begin{Schunk} \begin{Sinput} > nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) > nr <- data.frame( tfI= 0 , lex.Cst="DM" , sex="M" ) > ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) > cpr <- ci.exp( cm, list(nd,nr) ) > par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) > matshade( nd$tfI, cbind(ppr,cpr), + xlab="Time since insulin (years)", + ylab="Rate ratio relative to non-Insulin", + lty=c(1,2), log="y", plot=T ) \end{Sinput} \end{Schunk} \insfig{IeffR}{0.8}{Insulin duration effect (state \textrm{\tt Ins}) relative to no insulin (state \textrm{\tt DM}), black from Poisson model, red from Cox model. The \emph{shape} is the same as the previous figure, but the RR is now relative to non-insulin, instead of relative to insulin users at 2 years duration. The two sets of estimates are identical, and so are the standard errors, so the two shaded areas overlap almost perfectly.} In figure \ref{fig:IeffR}, p. \pageref{fig:IeffR}, we see the effect of increasing duration of insulin use \emph{for a fixed age} which is a bit artificial, so we would like to see the \emph{joint} effects of age and insulin duration. What we cannot see is how the duration affects mortality relative to \texttt{current} age (at the age attained at the same time as the attained \texttt{tfI}). Another way of interpreting this curve is as the rate ratio relative to a person not on insulin, so we see that the RR (or hazard ratio, HR as some call it) is over 5 at the start of insulin (the \texttt{lex.Cst} estimate), and decreases to about 1.5 in the long term. Both figure \ref{fig:Ieff} and \ref{fig:IeffR} indicate a declining RR by insulin duration, but only from figure \ref{fig:ins-time} it is visible that mortality actually is \emph{in}creasing by age after some 2 years after insulin start. This point would not be available if we had only fitted a Cox model where we did not have access to the baseline hazard as a function of age. \section{Age$\times$duration interaction} The model we fitted assumes that the RR is the same regardless of the age at start of insulin --- the hazards are multiplicative. Sometimes this is termed the proportional hazards assumption: For \emph{any} fixed age the HR is the same as a function of time since insulin, and vice versa. A more correct term would be ``main effects model'' --- there is no interaction between age (the baseline time scale) and other covariates. So there is really no need for the term ``proportional hazards''; well defined and precise statistical terms for it has existed for aeons. \subsection{Age at insulin start} In order to check the consistency of the multiplicativity assumption across the spectrum of age at insulin inception, we can fit an interaction model. One approach to this would be using a non-linear effect of age at insulin use (for convenience we use the same knots as for age) --- note that the prediction data frames are the same as we used above, because we do not compute age at insulin use as a separate variable, but rather enter it as the difference between current age (\texttt{age}) and insulin duration (\texttt{tfI}). At first glance we might think of doing: \begin{Schunk} \begin{Sinput} > imx <- glm.Lexis( tsNA20(dmCs), + formula = ~ Ns(age ,knots=a.kn) + + Ns( tfI,knots=i.kn) + + Ns(age-tfI,knots=a.kn) + + lex.Cst + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object tsNA20(dmCs) with log link: Rates for transitions: DM->Dead, Ins->Dead \end{Soutput} \end{Schunk} But this will fit a model with a rate-ratio between persons with and without insulin that depends only on age at insulin start for the time \emph{after} insulin start, the RR at \texttt{tfI}=0 will be the same at any age, which really is not the type of interaction we wanted. We want the \texttt{age-tfI} term to be specific for the insulin exposed so we may use one of two other approaches, that are conceptually alike but mathematically different: \begin{Schunk} \begin{Sinput} > Im <- glm.Lexis( tsNA20(dmCs), + formula = ~ Ns(age ,knots=a.kn) + + Ns( tfI,knots=i.kn) + + Ns((age-tfI)*(lex.Cst=="Ins"),knots=a.kn) + + lex.Cst + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object tsNA20(dmCs) with log link: Rates for transitions: DM->Dead, Ins->Dead \end{Soutput} \begin{Sinput} > im <- glm.Lexis( tsNA20(dmCs), + formula = ~ Ns(age ,knots=a.kn) + + Ns( tfI,knots=i.kn) + + lex.Cst:Ns(age-tfI,knots=a.kn) + + lex.Cst + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object tsNA20(dmCs) with log link: Rates for transitions: DM->Dead, Ins->Dead \end{Soutput} \end{Schunk} The first model (\texttt{Im}) has a common age-effect (\texttt{Ns(age,...}) for persons with and without diabetes and a RR depending on insulin duration \texttt{tfI} and age at insulin (\texttt{age-tfI}). Since the linear effect of these two terms are in the model as well, a linear trend in the RR by current age (\texttt{age}) is accommodated as well. The second model allows age-effects that differ non-linearly between person with and without insulin, because the interaction term \texttt{lex.Cst:Ns(age-tfI...} for persons not on insulin is merely an age term (since \texttt{tfI} is coded 0 for all follow-up not on insulin). We can compare the models fitted: \begin{Schunk} \begin{Sinput} > anova( imx, Im, im, test='Chisq') \end{Sinput} \begin{Soutput} Analysis of Deviance Table Model 1: cbind(trt(Lx$lex.Cst, Lx$lex.Xst) %in% trnam, Lx$lex.dur) ~ Ns(age, knots = a.kn) + Ns(tfI, knots = i.kn) + Ns(age - tfI, knots = a.kn) + lex.Cst + sex Model 2: cbind(trt(Lx$lex.Cst, Lx$lex.Xst) %in% trnam, Lx$lex.dur) ~ Ns(age, knots = a.kn) + Ns(tfI, knots = i.kn) + Ns((age - tfI) * (lex.Cst == "Ins"), knots = a.kn) + lex.Cst + sex Model 3: cbind(trt(Lx$lex.Cst, Lx$lex.Xst) %in% trnam, Lx$lex.dur) ~ Ns(age, knots = a.kn) + Ns(tfI, knots = i.kn) + lex.Cst:Ns(age - tfI, knots = a.kn) + lex.Cst + sex Resid. Df Resid. Dev Df Deviance Pr(>Chi) 1 228734 25096 2 228733 25087 1 8.9631 0.002755 3 228730 25082 3 4.6804 0.196749 \end{Soutput} \end{Schunk} so we see that the models indeed are different, and moreover that the last model does not provide substantial further improvement, by allowing non-linear RR along the age-scale. We can illustrate the different estimated rates from the three models in figure \ref{fig:dur-int}, p. \pageref{fig:dur-int}: \begin{Schunk} \begin{Sinput} > pxi <- ci.pred( imx, ndI ) > pxa <- ci.pred( imx, ndA ) > pIi <- ci.pred( Im , ndI ) > pIa <- ci.pred( Im , ndA ) > pii <- ci.pred( im , ndI ) > pia <- ci.pred( im , ndA ) > par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) > matshade( ndI$age, cbind( pxi, pIi, pii)*1000, plot=T, log="y", + xlab="Age", ylab="Mortality per 1000 PY", + lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) > matshade( ndA$age, cbind( pxa, pIa, pia)*1000, + lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) \end{Sinput} \end{Schunk} \insfig{dur-int}{0.8}{Age at insulin as interaction between age and duration. Blue curves are from the naive interaction model \textrm{\tt imx} with identical $\RR$ at \textrm{\tt tfI}=0 at any age; green curves are from the interaction model with age at insulin, from the model \textrm{\tt Im} with only linear differences by age, and red lines from the full interaction model \textrm{\tt im}.} We can also plot the RRs only from these models (figure \ref{fig:dur-int-RR}, p. \pageref{fig:dur-int-RR}); for this we need the reference frames, and the machinery from \texttt{ci.exp} allowing a list of two data frames: \begin{Schunk} \begin{Sinput} > ndR <- transform( ndI, tfI=0, lex.Cst="DM" ) > cbind( head(ndI), head(ndR) ) \end{Sinput} \begin{Soutput} tfI ai sex lex.Cst age tfI ai sex lex.Cst age 1 NA 40 M Ins NA 0 40 M DM NA 2 0.0 40 M Ins 40.0 0 40 M DM 40.0 3 0.1 40 M Ins 40.1 0 40 M DM 40.1 4 0.2 40 M Ins 40.2 0 40 M DM 40.2 5 0.3 40 M Ins 40.3 0 40 M DM 40.3 6 0.4 40 M Ins 40.4 0 40 M DM 40.4 \end{Soutput} \begin{Sinput} > Rxi <- ci.exp( imx, list(ndI,ndR) ) > Rii <- ci.exp( im , list(ndI,ndR) ) > RIi <- ci.exp( Im , list(ndI,ndR) ) > par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) > matshade( ndI$age, cbind( Rxi, RIi, Rii), plot=T, log="y", + xlab="Age (years)", ylab="Rate ratio vs, non-Insulin", + lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) > abline( h=1 ) > abline( h=ci.exp(imx,subset="lex.Cst")[,1], lty="25", col="blue" ) \end{Sinput} \end{Schunk} \insfig{dur-int-RR}{0.9}{RR from three different interaction models. The horizontal dotted line is at the estimated effect of \textrm{\tt lex.Cst}, to illustrate that the first model (blue) constrains this initial HR to be constant across age. The green curves are the extended interaction model, and the red the full one.} \clearpage \subsection{General interaction} As a final illustration we may want to explore a different kind of interaction, not defined from the duration --- here we simplify the interaction by not using the second-last knot in the interaction terms --- figure \ref{fig:splint}, p. \pageref{fig:splint}. Note again that the prediction code is the same: \begin{Schunk} \begin{Sinput} > gm <- glm.Lexis( tsNA20(dmCs), + formula = ~ Ns(age,knots=a.kn) + + Ns(tfI,knots=i.kn) + + lex.Cst:Ns(age,knots=a.kn):Ns(tfI,knots=i.kn) + + lex.Cst + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object tsNA20(dmCs) with log link: Rates for transitions: DM->Dead, Ins->Dead \end{Soutput} \begin{Sinput} > pgi <- ci.pred( gm, ndI ) > pga <- ci.pred( gm, ndA ) > par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) > matshade( ndI$age, cbind( pgi, pii )*1000, plot=T, + lty=c("solid","21"), lend="butt", lwd=2, log="y", + xlab="Age (years)", ylab="Mortality rates per 1000 PY", + alpha=c(0.2,0.1), col=c("black","red") ) > matshade( ndA$age, cbind( pga, pia )*1000, + lty=c("solid","21"), lend="butt", lwd=2, + alpha=c(0.2,0.1), col=c("black","red") ) \end{Sinput} \end{Schunk} \insfig{splint}{0.8}{Spline-by-spline interaction between age and duration (model \textrm{\tt gm}, black), and the interaction using a non-linear effect of age at entry (model \textrm{\tt im}, red), corresponding to the red curves in figure \ref{fig:dur-int}.} This is in figure \ref{fig:splint}, p. \pageref{fig:splint}. \subsection{Evaluating interactions} Here we see that the interaction effect is such that in the older ages the length of insulin use has an increasing effect on mortality. Even though there is no statistically significant interaction between age and time since start of insulin, it would be illustrative to show the RR as a function of age at insulin and age at follow-up: \begin{Schunk} \begin{Sinput} > ndR <- transform( ndI, lex.Cst="DM", tfI=0 ) > iRR <- ci.exp( im, ctr.mat=list(ndI,ndR) ) > gRR <- ci.exp( gm, ctr.mat=list(ndI,ndR) ) > par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) > matshade( ndI$age, cbind(gRR,iRR), lty=1, log="y", plot=TRUE, + xlab="Age (years)", ylab="Rate ratio: Ins vs. non-Ins", + col=c("black","red") ) > abline( h=1 ) \end{Sinput} \end{Schunk} \insfig{RR-int}{0.8}{The effect of duration of insulin use at different ages of follow-up (and age at insulin start). Estimates are from the model with an interaction term using a non-linear effect of age at insulin start (model \textrm{\tt im}, red) and using a general spline interactions (model \textrm{\tt gm}, black). It appears that the general interaction over-models a bit.} This is in figure \ref{fig:RR-int}, p. \pageref{fig:RR-int}. The advantage of the parametric modeling (be that with age at insulin or general spline interaction) is that it is straight-forward to \emph{test} whether we have an interaction. \section{Separate models} In the above we insisted on making a joint model for the \texttt{DM}$\rightarrow$\texttt{Dead} and the \texttt{Ins}$\rightarrow$\texttt{Dead} transitions, but with the complications demonstrated it would actually have been more sensible to model the two transitions separately: \begin{Schunk} \begin{Sinput} > dmd <- glm.Lexis( dmCs, + from="DM", to="Dead", + formula = ~ Ns(age,knots=a.kn) + + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object dmCs with log link: Rates for the transition: DM->Dead \end{Soutput} \begin{Sinput} > ind <- glm.Lexis( dmCs, + from="Ins", to="Dead", + formula = ~ Ns(age,knots=a.kn) + + Ns(tfI,knots=i.kn) + + Ns(age-tfI,knots=a.kn) + + sex ) \end{Sinput} \begin{Soutput} stats::glm Poisson analysis of Lexis object dmCs with log link: Rates for the transition: Ins->Dead \end{Soutput} \begin{Sinput} > ini <- ci.pred( ind, ndI ) > dmi <- ci.pred( dmd, ndI ) > dma <- ci.pred( dmd, ndA ) \end{Sinput} \end{Schunk} The estimated mortality rates are shown in figure \ref{fig:sep-mort}, p. \pageref{fig:sep-mort}, using: \begin{Schunk} \begin{Sinput} > par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") > matshade( ndI$age, ini*1000, plot=TRUE, log="y", + xlab="Age (years)", ylab="Mortality rates per 1000 PY", + lwd=2, col="red" ) > matshade( ndA$age, dma*1000, + lwd=2, col="black" ) \end{Sinput} \end{Schunk} The estimated RRs are computed using that the estimates from the two models are uncorrelated, and hence qualify for \texttt{ci.ratio} (this and the previous graph appear in figure \ref{fig:Ins-noIns}, p. \pageref{fig:Ins-noIns}) \begin{Schunk} \begin{Sinput} > par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") > matshade( ndI$age, ci.ratio(ini,dmi), plot=TRUE, log="y", + xlab="Age (years)", ylab="RR insulin vs. no insulin", + lwd=2, col="red" ) > abline( h=1 ) \end{Sinput} \end{Schunk} \begin{figure}[tb] \centering \includegraphics[width=0.49\textwidth]{flup-sep-mort} \includegraphics[width=0.49\textwidth]{flup-sep-HR} \caption{\it Left panel: Mortality rates from separate models for the two mortality transitions; the \textrm{\tt DM}$\rightarrow$\textrm{\tt Dead} transition modeled by age alone; \textrm{\tt Ins}$\rightarrow$\textrm{\tt Dead} transition modeled with spline effects of current age, time since insulin and and age at insulin. \newline Right panel: Mortality HR of insulin vs. no insulin.} \label{fig:Ins-noIns} \end{figure} \chapter{More states} \section{Subdividing states} It may be of interest to subdivide the states following the intermediate event according to whether the event has occurred or not. This will enable us to address the question of the fraction of the patients that ever go on insulin. This is done by the argument \texttt{split.states=TRUE}. \begin{Schunk} \begin{Sinput} > dmCs <- cutLexis( data = dmS2, + cut = dmS2$doins, + timescale = "per", + new.state = "Ins", + new.scale = "tfI", + precursor.states = "DM", + split.states = TRUE ) > summary( dmCs ) \end{Sinput} \begin{Soutput} Transitions: To From DM Ins Dead Dead(Ins) Records: Events: Risk time: Persons: DM 35135 1694 2048 0 38877 3742 45885.49 9899 Ins 0 5762 0 451 6213 451 8387.77 1791 Sum 35135 7456 2048 451 45090 4193 54273.27 9996 \end{Soutput} \end{Schunk} We can illustrate the numbers and the transitions (figure \ref{fig:box4}, p. \pageref{fig:box4}) \begin{Schunk} \begin{Sinput} > boxes( dmCs, boxpos=list(x=c(15,15,85,85), + y=c(85,15,85,15)), + scale.R=1000, show.BE=TRUE ) \end{Sinput} \end{Schunk} \insfig{box4}{0.7}{Transitions between 4 states: the numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} Note that it is only the mortality rates that we have been modeling, namely the transitions \texttt{DM}$\rightarrow$\texttt{Dead} and \texttt{Ins}$\rightarrow$\texttt{Dead(Ins)}. If we were to model the cumulative risk of using insulin we would also need a model for the DM$\rightarrow$Ins transition. Subsequent to that we would then compute the probability of being in each state conditional on suitable starting conditions. With models where transition rates depend on several time scales this is not a trivial task. This is treated in more detail in the vignette on \texttt{simLexis}. \section{Multiple intermediate events} We may be interested in starting either insulin or OAD (oral anti-diabetic drugs), thus giving rise to more states and more time scales. This can be accomplished by the \texttt{mcutLexis} function, that generalizes \texttt{cutLexis}: \begin{Schunk} \begin{Sinput} > dmM <- mcutLexis( dmL, + timescale = "per", + wh = c("doins","dooad"), + new.states = c("Ins","OAD"), + new.scales = c("tfI","tfO"), + precursor.states = "DM", + ties.resolve = TRUE ) \end{Sinput} \begin{Soutput} NOTE: 15 records with tied events times resolved (adding 0.01 random uniform), so results are only reproducible if the random number seed was set. \end{Soutput} \begin{Sinput} > summary( dmM, t=T ) \end{Sinput} \begin{Soutput} Transitions: To From DM Dead OAD Ins OAD-Ins Ins-OAD Records: Events: Risk time: Persons: DM 2830 1056 2957 689 0 0 7532 4702 22920.34 7532 OAD 0 992 3327 0 1005 0 5324 1997 22965.24 5324 Ins 0 152 0 462 0 172 786 324 3883.06 786 OAD-Ins 0 266 0 0 739 0 1005 266 3770.53 1005 Ins-OAD 0 33 0 0 0 139 172 33 734.09 172 Sum 2830 2499 6284 1151 1744 311 14819 7322 54273.27 9996 Timescales: per age tfD tfI tfO "" "" "" "Ins" "OAD" \end{Soutput} \end{Schunk} We see that we now have two time scales defined as entry since into states. \begin{Schunk} \begin{Sinput} > wh <- c(subset(dmM,lex.Cst=="Ins-OAD")$lex.id[1:2], + subset(dmM,lex.Cst=="OAD-Ins")$lex.id[1:2]) > options( width=110 ) > print( subset( dmM, lex.id %in% wh )[,c('lex.id',names(dmM[1:8]),c("doins","dooad"))], + digits=6, row.names=FALSE ) \end{Sinput} \begin{Soutput} lex.id tfI tfO per age tfD lex.dur lex.Cst lex.Xst doins dooad 18 NA NA 1996.75 61.7221 0.0000000 1.16906229 DM OAD 2005.99 1997.92 18 NA 0.00000 1997.92 62.8912 1.1690623 8.07939767 OAD OAD-Ins 2005.99 1997.92 18 0.00000000 8.07940 2005.99 70.9706 9.2484600 4.00273785 OAD-Ins OAD-Ins 2005.99 1997.92 25 NA NA 2003.69 60.3422 0.0000000 1.88090349 DM OAD 2008.64 2005.57 25 NA 0.00000 2005.57 62.2231 1.8809035 3.06913073 OAD OAD-Ins 2008.64 2005.57 25 0.00000000 3.06913 2008.64 65.2923 4.9500342 1.35797399 OAD-Ins OAD-Ins 2008.64 2005.57 20 NA NA 2009.25 53.2183 0.0000000 0.04071988 DM Ins 2009.29 2009.29 20 0.00000000 NA 2009.29 53.2591 0.0407199 0.00131847 Ins Ins-OAD 2009.29 2009.29 20 0.00131847 0.00000 2009.29 53.2604 0.0420383 0.70813277 Ins-OAD Ins-OAD 2009.29 2009.29 38 NA NA 2008.37 63.9316 0.0000000 0.09308693 DM Ins 2008.46 2008.67 38 0.00000000 NA 2008.46 64.0246 0.0930869 0.21355236 Ins Ins-OAD 2008.46 2008.67 38 0.21355236 0.00000 2008.67 64.2382 0.3066393 1.32511978 Ins-OAD Dead 2008.46 2008.67 \end{Soutput} \end{Schunk} We can also illustrate the transitions to the different states, as in figure \ref{fig:mbox}: \begin{Schunk} \begin{Sinput} > boxes( dmM, boxpos=list(x=c(15,80,40,40,85,85), + y=c(50,50,90,10,90,10)), + scale.R=1000, show.BE=TRUE ) \end{Sinput} \end{Schunk} \insfig{mbox}{1.0}{Boxes for the \textrm{\tt dmM} object. The numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} We may not be interested in whether persons were prescribed insulin before OAD or vice versa, in which case we would combine the levels with both insulin and OAD to one, regardless of order (figure \ref{fig:mboxr}): \begin{Schunk} \begin{Sinput} > summary( dmMr <- Relevel( dmM, list('OAD+Ins'=5:6), first=FALSE) ) \end{Sinput} \begin{Soutput} Transitions: To From DM Dead OAD Ins OAD+Ins Records: Events: Risk time: Persons: DM 2830 1056 2957 689 0 7532 4702 22920.34 7532 OAD 0 992 3327 0 1005 5324 1997 22965.24 5324 Ins 0 152 0 462 172 786 324 3883.06 786 OAD+Ins 0 299 0 0 878 1177 299 4504.62 1177 Sum 2830 2499 6284 1151 2055 14819 7322 54273.27 9996 \end{Soutput} \begin{Sinput} > boxes( dmMr, boxpos=list(x=c(15,50,15,85,85), + y=c(85,50,15,85,15)), + scale.R=1000, show.BE=TRUE ) \end{Sinput} \end{Schunk} \insfig{mboxr}{1.0}{Boxes for the \textrm{\tt dmMr} object with collapsed states. The numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} Diagrams as those in figures \ref{fig:mbox} and \ref{fig:mboxr} gives an overview of the possible transitions, which states it might be relevant to collapse, and which transitions to model and how. The actual modeling of the transition rates is straightforward; split the data along some timescale and then use \texttt{glm.Lexis} or \texttt{gam.Lexis}, where it is possible to select the transitions modelled. This is also possible with the \texttt{coxph.Lexis} function, but it requires that a single time scale be selected as the baseline time scale, and the effect of this will not be accessible. \chapter{\texttt{Lexis} functions} The \texttt{Lexis} machinery has evolved over time since it was first introduced in a workable version in \texttt{Epi\_1.0.5} in August 2008. Over the years there have been additions of tools for handling multistate data. Here is a list of the current functions relating to \texttt{Lexis} objects with a very brief description; it does not replace the documentation. Unless otherwise stated, functions named \texttt{something.Lexis} (with a ``\texttt{.}'') are S3 methods for \texttt{Lexis} objects, so you can skip the ``\texttt{.Lexis}'' in daily use. \setlist{noitemsep} \begin{description} \item[Define]\ \\ \begin{description} \item[\texttt{Lexis}] defines a \texttt{Lexis} object \end{description} \item[Cut and split]\ \\ \begin{description} \item[\texttt{cutLexis}] cut follow-up at intermediate event \item[\texttt{mcutLexis}] cut follow-up at several intermediate events \item[\texttt{countLexis}] cut follow-up at intermediate event count the no. events so far \item[\texttt{splitLexis}] split follow up along a time scale \item[\texttt{splitMulti}] split follow up along a time scale --- from the \texttt{popEpi} package, faster and has simpler syntax than \texttt{splitLexis} \item[\texttt{addCov.Lexis}] add clinical measurements at a given date to a \texttt{Lexis} object \end{description} \item[Boxes and plots]\ \\ \begin{description} \item[\texttt{boxes.Lexis}] draw a diagram of states and transitions \item[\texttt{plot.Lexis}] draw a standard Lexis diagram \item[\texttt{points.Lexis}] add points to a Lexis diagram \item[\texttt{lines.Lexis}] add lines to a Lexis diagram \item[\texttt{PY.ann.Lexis}] annotate life lines in a Lexis diagram \end{description} \item[Summarize and query]\ \\ \begin{description} \item[\texttt{summary.Lexis}] overview of transitions, risk time etc. \item[\texttt{levels.Lexis}] what are the states in the \texttt{Lexis} object \item[\texttt{nid.Lexis}] number of persons in the \texttt{Lexis} object --- how many unique values of \texttt{lex.id} are present \item[\texttt{entry}] entry time \item[\texttt{exit}] exit time \item[\texttt{status}] status at entry or exit \item[\texttt{timeBand}] factor of time bands \item[\texttt{timeScales}] what time scales are in the \texttt{Lexis} object \item[\texttt{timeSince}] what time scales are defined as time since a given state \item[\texttt{breaks}] what breaks are currently defined \item[\texttt{absorbing}] what are the absorbing states \item[\texttt{transient}] what are the transient states \item[\texttt{preceding}, \texttt{before}] which states precede this \item[\texttt{succeeding}, \texttt{after}] which states can follow this \item[\texttt{tmat.Lexis}] transition matrix for the \texttt{Lexis} object \end{description} \item[Manipulate]\ \\ \begin{description} \item[\texttt{subset.Lexis}, \texttt{[}] subset of a \texttt{Lexis} object \item[\texttt{merge.Lexis}] merges a \texttt{Lexis} objects with a \texttt{data.frame} \item[\texttt{cbind.Lexis}] bind a \texttt{data.frame} to a \texttt{Lexis} object \item[\texttt{rbind.Lexis}] put two \texttt{Lexis} objects head-to-foot \item[\texttt{transform.Lexis}] transform and add variables \item[\texttt{tsNA20}] turn \texttt{NA}s to 0s for time scales \item[\texttt{Relevel.Lexis}, \texttt{factorize.Lexis}] reorder and combine states \item[\texttt{rm.tr}] remove transitions from a \texttt{Lexis} object \item[\texttt{bootLexis}] bootstrap sample of \emph{persons} (\texttt{lex.id}) in the \texttt{Lexis} object \end{description} \item[Simulate]\ \\ \begin{description} \item[\texttt{simLexis}] simulate a \texttt{Lexis} object from specified transition rate models \item[\texttt{nState}, \texttt{pState}] count state occupancy from a simulated \texttt{Lexis} object \item[\texttt{plot.pState}, \texttt{lines.pState}] plot state occupancy from a \texttt{pState} object \end{description} \item[Stack]\ \\ \begin{description} \item[\texttt{stack.Lexis}] make a stacked object for simultaneous analysis of transitions --- returns a \texttt{stacked.Lexis} object \item[\texttt{subset.stacked.Lexis}] subsets of a \texttt{stacked.Lexis} object \item[\texttt{transform.stacked.Lexis}] transform a \texttt{stacked.Lexis} object \end{description} \item[Interface to other packages]\ \\ \begin{description} \item[\texttt{msdata.Lexis}] interface to \texttt{mstate} package \item[\texttt{etm.Lexis}] interface to \texttt{etm} package \item[\texttt{crr.Lexis}] interface to \texttt{cmprsk} package \end{description} \item[Statistical models] --- these are \emph{not} S3 methods \begin{description} \item[\texttt{glm.Lexis}] fit a \texttt{glm} model using the \texttt{poisreg} family to (hopefully) time split data \item[\texttt{gam.Lexis}] fit a \texttt{gam} model (from the \texttt{mgcv} package) using the \texttt{poisreg} family to (hopefully) time split data \item[\texttt{coxph.Lexis}] fit a Cox model to follow-up in a \texttt{Lexis} object \end{description} \end{description} \renewcommand{\bibname}{References} \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2011a} B~Carstensen and M~Plummer. \newblock Using {L}exis objects for multi-state models in {R}. \newblock {\em Journal of Statistical Software}, 38(6):1--18, 1 2011. %% \bibitem{Iacobelli.2013} %% S~Iacobelli and B~Carstensen. %% \newblock {Multiple time scales in multi-state models}. %% \newblock {\em Stat Med}, 32(30):5315--5327, Dec 2013. \bibitem{Plummer.2011} M~Plummer and B~Carstensen. \newblock Lexis: An {R} class for epidemiological studies with long-term follow-up. \newblock {\em Journal of Statistical Software}, 38(5):1--12, 1 2011. \end{thebibliography} \addcontentsline{toc}{chapter}{\bibname} \end{document} Epi/vignettes/topreport.tex0000644000176200001440000001061413250443225015561 0ustar liggesusers%---------------------------------------------------------------------- % Packages %\usepackage[inline]{showlabels} %\usepackage[latin1]{inputenc} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[english]{babel} \usepackage[font=it,labelfont=normalfont]{caption} \usepackage[colorlinks,urlcolor=blue,linkcolor=red,citecolor=Maroon]{hyperref} \usepackage[ae,hyper]{Rd} \usepackage[dvipsnames]{xcolor} \usepackage[super]{nth} % \usepackage[retainorgcmds]{IEEEtrantools} \usepackage[noae]{Sweave} \usepackage{makeidx,floatflt,amsmath,amsfonts,amsbsy,enumitem,dcolumn,needspace} \usepackage{ifthen,calc,eso-pic,everyshi} \usepackage{booktabs,longtable,rotating,graphicx,subfig} \usepackage{pdfpages,verbatim,fancyhdr,datetime,afterpage} \usepackage[abspath]{currfile} % \usepackage{times} \renewcommand{\textfraction}{0.0} \renewcommand{\topfraction}{1.0} \renewcommand{\bottomfraction}{1.0} \renewcommand{\floatpagefraction}{0.9} % \usepackage{mslapa} \definecolor{blaa}{RGB}{99,99,255} \DeclareGraphicsExtensions{.png,.pdf,.jpg} % Make the Sweave output nicer (slightly mor compact) \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontsize=\small,fontshape=sl,formatcom=\color{BlueViolet}} \DefineVerbatimEnvironment{Soutput}{Verbatim}{fontsize=\small,formatcom=\color{Sepia},xleftmargin=0em} \DefineVerbatimEnvironment{Scode}{Verbatim}{fontsize=\small} \fvset{listparameters={\setlength{\topsep}{-0.1ex}}} \renewenvironment{Schunk}% {\renewcommand{\baselinestretch}{0.87} \vspace{\topsep}}% {\renewcommand{\baselinestretch}{1.00} \vspace{\topsep}} % \renewenvironment{knitrout} % {\renewcommand{\baselinestretch}{0.87}} % {\renewcommand{\baselinestretch}{1.00}} \input{useful} %---------------------------------------------------------------------- % Set up layout of pages \oddsidemargin 1mm \evensidemargin 1mm \topmargin -10mm \headheight 8mm \headsep 5mm \textheight 240mm \textwidth 165mm %\footheight 5mm \footskip 15mm \renewcommand{\topfraction}{0.9} \renewcommand{\bottomfraction}{0.9} \renewcommand{\textfraction}{0.1} \renewcommand{\floatpagefraction}{0.9} \renewcommand{\headrulewidth}{0.1pt} \setcounter{secnumdepth}{2} \setcounter{tocdepth}{3} %---------------------------------------------------------------------- % How to insert a figure in a .rnw file \newcommand{\rwpre}{./graph/gr} \newcommand{\insfig}[3]{ \begin{figure}[h] \centering \includegraphics[width=#2\textwidth]{\rwpre-#1} % \caption{#3} \caption{#3\hfill\mbox{\footnotesize \textrm{\tt \rwpre-#1}}} \label{fig:#1} % \afterpage{\clearpage} \end{figure}} \newcommand{\linput}[1]{ % \clearpage \afterpage{\hfill \ldots now input from \texttt{#1.tex}\\} \fancyfoot[OR,EL]{\footnotesize \texttt{#1.tex}} \input{#1}} %---------------------------------------------------------------------- % Here is the document starting with the titlepage \begin{document} %---------------------------------------------------------------------- % The title page \setcounter{page}{1} \pagenumbering{roman} \pagestyle{plain} \thispagestyle{empty} % \vspace*{0.05\textheight} \flushright % The blank below here is necessary in order not to muck up the % linespacing in title if it has more than 2 lines {\Huge \bfseries \Title }\ \\[-1.5ex] \noindent\textcolor{blaa}{\rule[-1ex]{\textwidth}{5pt}}\\[2.5ex] \large \Where \\ \Dates \\ \Homepage \\ \Version \\[1em] \normalsize Compiled \today,\ \currenttime\\ from: \texttt{\currfileabspath}\\[1em] % \input{wordcount} \normalsize \vfill \Faculty % End of titlepage % \newpage %---------------------------------------------------------------------- % Table of contents \tableofcontents % \listoftables % \listoffigures \clearpage % \begingroup % \let\clearpage\relax % \listoftables % \listoffigures % \endgroup %---------------------------------------------------------------------- % General text layout \raggedright \parindent 1em \parskip 0ex \cleardoublepage %---------------------------------------------------------------------- % General page style \pagenumbering{arabic} \setcounter{page}{1} \pagestyle{fancy} \renewcommand{\chaptermark}[1]{\markboth{\textsl{#1}}{}} \renewcommand{\sectionmark}[1]{\markright{\thesection\ \textsl{#1}}{}} \fancyhead[EL]{\bf \thepage \quad \rm \rightmark} \fancyhead[ER]{\rm \Tit} \fancyhead[OL]{\rm \leftmark} \fancyhead[OR]{\rm \rightmark \quad \bf \thepage} \fancyfoot{} Epi/vignettes/yll.rnw0000644000176200001440000005272614003562347014347 0ustar liggesusers%\VignetteIndexEntry{Years of life lost (YLL)} \SweaveOpts{results=verbatim,keep.source=TRUE,include=FALSE,eps=FALSE} \documentclass[a4paper,twoside,12pt]{report} \newcommand{\Title}{Years of Life Lost (YLL) to disease\\Diabetes in DK as example} \newcommand{\Tit}{YLL} \newcommand{\Version}{February 1.2} \newcommand{\Dates}{November 2017} \newcommand{\Where}{SDC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/Epi}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk}\\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} <>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) @ % \renewcommand{\rwpre}{./yll} \chapter{Theory and technicalities} This vignette for the \texttt{Epi} package describes the probabilistic and demographic background for and technical implementation of the \texttt{erl} and \texttt{yll} functions that computes the expected residual life time and years of life lost in an illness-death model. \section{Years of life lost (YLL)} \ldots to diabetes or any other disease for that matter. The general concept in calculation of ``years lost to\ldots'' is the comparison of the expected lifetime between two groups of persons; one with and one without disease (in this example DM). The expected lifetime is the area under the survival curve, so basically the exercise requires that two survival curves that are deemed relevant be available. The years of life lost is therefore just the area between the survival curves for those ``Well'', $S_W(t)$, and for those ``Diseased'', $S_D(t)$: \[ \YLL = \int_0^\infty S_W(t) - S_D(t) \dif t \] The time $t$ could of course be age, but it could also be ``time after age 50'' and the survival curves compared would then be survival curves \emph{conditional} on survival till age 50, and the YLL would be the years of life lost for a 50-year old person with diabetes. If we are referring to the expected lifetime we will more precisely use the label expected residual lifetime, ERL. \section{Constructing the survival curves} YLL can be computed in two different ways, depending on the way the survival curve and hence the expected lifetime of a person \emph{without} diabetes is computed: \begin{itemize} \item Assume that the ``Well'' persons are \emph{immune} to disease --- using only the non-DM mortality rates throughout for calculation of expected life time. \item Assume that the ``Well'' persons \emph{can} acquire the disease and thereby see an increased mortality, thus involving all three rates shown in figure \ref{fig:states}. \end{itemize} The former gives a higher YLL because the comparison is to persons assumed immune to DM (and yet with the same mortality as non-immune prior to diagnosis), the latter gives a more realistic picture of the comparison of group of persons with and without diabetes at a given age that can be interpreted in the real world. The differences can be illustrated by figure \ref{fig:states}; the immune approach corresponds to an assumption of $\lambda(t)=0$ in the calculation of the survival curve for a person in the ``Well'' state. Calculation of the survival of a diseased person already in the ``DM'' state is unaffected by assumptions about $\lambda$. <>= library( Epi ) TM <- matrix(NA,4,4) rownames(TM) <- colnames(TM) <- c("Well","DM","Dead","Dead(DM)") TM[1,2:3] <- TM[2,4] <- 1 zz <- boxes( TM, boxpos=list(x=c(20,80,20,80),y=c(80,80,20,20)), wm=1.5, hm=4 ) @ <>= zz$Arrowtext <- c( expression(lambda), expression(mu[W]), expression(mu[D][M]) ) boxes( zz ) @ % \insfig{states}{0.7}{Illness-death model describing diabetes incidence and -mortality.} \subsection{Total mortality --- a shortcut?} A practical crude shortcut could be to compare the ERL in the diabetic population to the ERL for the \emph{entire} population (that is use the total mortality ignoring diabetes status). Note however that this approach also counts the mortality of persons that acquired the disease earlier, thus making the comparison population on average more ill than the population we aim at, namely those well at a given time, which only then become more gradually ill. How large these effects are can however be empirically explored, as we shall do later. \subsection{Disease duration} In the exposition above there is no explicit provision for the effect of disease duration, but if we were able to devise mortality rates for any combination of age and duration, this could be taken into account. There are however severe limitations in this as we in principle would want to have duration effects as long as the age-effects --- in principle for all $(a,d)$ where $d\leq A$, where $A$ is the age at which we condition. So even if we were only to compute ERL from age, say, 40 we would still need duration effects up to 60 years (namely to age 100). The incorporation of duration effects is in principle trivial from a computational point of view, but we would be forced to entertain models predicting duration effects way beyond what is actually observed disease duration in any practical case. \subsection{Computing integrals} The practical calculations of survival curves, ERL and YLL involves calculation of (cumulative) integrals of rates and functions of these as we shall see below. This is easy if we have a closed form expression of the function, so its value may be computed at any time point --- this will be the case if we model rates by smooth parametric functions. Computing the (cumulative) integral of a function is done as follows: \begin{itemize} \item Compute the value of the function (mortality rate for example) at the midpoints of a sequence of narrow equidistant intervals --- for example one- or three month intervals of age, say. \item Take the cumulative sum of these values multiplied by the interval length --- this will be a very close approximation to the cumulative integral evaluated at the end of each interval. \item If the intervals are really small (like 1/100 year), the distinction between the value at the middle and at the end of each interval becomes irrelevant. \end{itemize} Note that in the above it is assumed that the rates are given in units corresponding to the interval length --- or more precisely, as the cumulative rates over the interval. \section{Survival functions in the illness-death model} The survival functions for persons in the ``Well'' state can be computed under two fundamentally different scenarios, depending on whether persons in the ``Well'' state are assumed to be immune to the disease ($\lambda(a)=0$) or not. \subsection{Immune approach} In this case both survival functions for person in the two states are the usual simple transformation of the cumulative mortality rates: \[ S_W(a) = \exp\left(-\int_0^a\!\!\mu_W(u) \dif u \right), \qquad S_D(a) = \exp\left(-\int_0^a\!\!\mu_D(u) \dif u \right) \] \subsubsection{Conditional survival functions} If we want the \emph{conditional} survival functions given survival to age $A$, say, they are just: \[ S_W(a|A) = S_W(a)/S_W(A), \qquad S_D(a|A) = S_D(a)/S_D(A) \] \subsection{Non-immune approach} For a diseased person, the survival function in this states is the same as above, but the survival function for a person without disease (at age 0) is (see figure \ref{fig:states}): \[ S(a) = \ptxt{Well}\!(a) + \ptxt{DM}\!(a) \] In the appendix of the paper \cite{Carstensen.2008c} is an indication of how to compute the probability of being in any of the four states shown in figure \ref{fig:states}, which I shall repeat here: In terms of the rates, the probability of being in the ``Well'' box is simply the probability of escaping both death (at a rate of $\mu_W(a)$) and diabetes (at a rate of $\lambda(a)$): \[ \ptxt{Well}(a) = \exp\left(\!-\int_0^a\!\!\mu_W(u)+\lambda(u) \right) \dif u \] The probability of being alive with diabetes at age $a$, is computed given that diabetes occurred at age $s$ ($s>= data( DMepi ) @ % The dataset \texttt{DMepi} contains diabetes events, deaths and person-years for persons without diabetes and deaths and person-years for persons with diabetes: <<>>= str( DMepi ) head( DMepi ) @ % For each combination of sex, age, period and date of birth in 1 year age groups, we have the person-years in the ``Well'' (\texttt{Y.nD}) and the ``DM'' (\texttt{Y.DM}) states, as well as the number of deaths from these (\texttt{D.nD}, \texttt{D.DM}) and the number of incident diabetes cases from the ``Well'' state (\texttt{X}). In order to compute the years of life lost to diabetes and how this has changed over time, we fit models for the mortality and incidence of both groups (and of course, separately for men and women). The models we use will be age-period-cohort models \cite{Carstensen.2007a} providing estimated mortality rates for ages 0--99 and dates 1.1.1996--1.1.2016. First we transform the age and period variables to reflect the mean age and period in each of the Lexis triangles. We also compute the total number of deaths and amount of risk time, as we are going to model the total mortality as well. Finally we restrict the dataset to ages over 30 only: <<>>= DMepi <- transform( subset( DMepi, A>30 ), D.T = D.nD + D.DM, Y.T = Y.nD + Y.DM ) head(DMepi) @ % With the correct age and period coding in the Lexis triangles, we fit models for the mortalities and incidences. Note that we for comparative purposes also fit a model for the \emph{total} mortality, ignoring the <<>>= # Knots used in all models ( a.kn <- seq(40,95,,6) ) ( p.kn <- seq(1997,2015,,4) ) ( c.kn <- seq(1910,1976,,6) ) # Check the number of events between knots ae <- xtabs( cbind(D.nD,D.DM,X) ~ cut(A,c(30,a.kn,Inf)) + sex, data=DMepi ) ftable( addmargins(ae,1), col.vars=3:2 ) pe <- xtabs( cbind(D.nD,D.DM,X) ~ cut(P,c(1990,p.kn,Inf)) + sex, data=DMepi ) ftable( addmargins(pe,1), col.vars=3:2 ) ce <- xtabs( cbind(D.nD,D.DM,X) ~ cut(P-A,c(-Inf,c.kn,Inf)) + sex, data=DMepi ) ftable( addmargins(ce,1), col.vars=3:2 ) # Fit an APC-model for all transitions, seperately for men and women mW.m <- glm( D.nD ~ -1 + Ns(A ,knots=a.kn,int=TRUE) + Ns( P,knots=p.kn,ref=2005) + Ns(P-A,knots=c.kn,ref=1950), offset = log(Y.nD), family = poisson, data = subset( DMepi, sex=="M" ) ) mD.m <- update( mW.m, D.DM ~ . , offset=log(Y.DM) ) mT.m <- update( mW.m, D.T ~ . , offset=log(Y.T ) ) lW.m <- update( mW.m, X ~ . ) # Model for women mW.f <- update( mW.m, data = subset( DMepi, sex=="F" ) ) mD.f <- update( mD.m, data = subset( DMepi, sex=="F" ) ) mT.f <- update( mT.m, data = subset( DMepi, sex=="F" ) ) lW.f <- update( lW.m, data = subset( DMepi, sex=="F" ) ) @ % \section{Residual life time and years lost to DM} We now collect the estimated years of life lost classified by method (immune assumption or not), sex, age and calendar time: <<>>= a.ref <- 30:90 p.ref <- 1996:2016 aYLL <- NArray( list( type = c("Imm","Tot","Sus"), sex = levels( DMepi$sex ), age = a.ref, date = p.ref ) ) str( aYLL ) system.time( for( ip in p.ref ) { nd <- data.frame( A = seq(30,90,0.2)+0.1, P = ip, Y.nD = 1, Y.DM = 1, Y.T = 1 ) muW.m <- ci.pred( mW.m, nd )[,1] muD.m <- ci.pred( mD.m, nd )[,1] muT.m <- ci.pred( mT.m, nd )[,1] lam.m <- ci.pred( lW.m, nd )[,1] muW.f <- ci.pred( mW.f, nd )[,1] muD.f <- ci.pred( mD.f, nd )[,1] muT.f <- ci.pred( mT.f, nd )[,1] lam.f <- ci.pred( lW.f, nd )[,1] aYLL["Imm","M",,paste(ip)] <- yll( int=0.2, muW.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Imm","F",,paste(ip)] <- yll( int=0.2, muW.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Tot","M",,paste(ip)] <- yll( int=0.2, muT.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Tot","F",,paste(ip)] <- yll( int=0.2, muT.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Sus","M",,paste(ip)] <- yll( int=0.2, muW.m, muD.m, lam=lam.m, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Sus","F",,paste(ip)] <- yll( int=0.2, muW.f, muD.f, lam=lam.f, A=a.ref, age.in=30, note=FALSE )[-1] } ) round( ftable( aYLL[,,seq(1,61,10),], col.vars=c(3,2) ), 1 ) @ % We now have the relevant points for the graph showing YLL to diabetes for men and women by age, and calendar year, both under the immunity and susceptibility models for the calculation of YLL. <>= plyll <- function(wh){ par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, bty="n", las=1 ) matplot( a.ref, aYLL[wh,"M",,], type="l", lty=1, col="blue", lwd=1:2, ylim=c(0,12), xlab="Age", ylab="Years lost to DM", yaxs="i" ) abline(v=50,h=1:10,col=gray(0.7)) text( 90, 11, "Men", col="blue", adj=1 ) text( 40, aYLL[wh,"M","40","1996"], "1996", adj=c(0,0), col="blue" ) text( 43, aYLL[wh,"M","44","2016"], "2016", adj=c(1,1), col="blue" ) matplot( a.ref, aYLL[wh,"F",,], type="l", lty=1, col="red", lwd=1:2, ylim=c(0,12), xlab="Age", ylab="Years lost to DM", yaxs="i" ) abline(v=50,h=1:10,col=gray(0.7)) text( 90, 11, "Women", col="red", adj=1 ) text( 40, aYLL[wh,"F","40","1996"], "1996", adj=c(0,0), col="red" ) text( 43, aYLL[wh,"F","44","2016"], "2016", adj=c(1,1), col="red" ) } plyll("Imm") @ % <>= plyll("Tot") @ % <>= plyll("Sus") @ % \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-imm} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes, assuming the persons without diabetes at a given age remain free from diabetes (immunity assumption --- not reasonable). The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:imm} \end{figure} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-sus} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes, allowing the persons without diabetes at a given to contract diabetes and thus be subject to higher mortality. The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:sus} \end{figure} \begin{figure}[h] \centering \includegraphics[width=\textwidth]{yll-tot} \caption{Years of life lost to DM: the difference in expected residual life time at different ages between persons with and without diabetes. Allowance for susceptibility is approximated by using the total population mortality instead of non-DM mortality. The lines refer to date of evaluation; the top lines refer to 1.1.1996 the bottom ones to 1.1.2016. Blue curves are men, red women.} \label{fig:tot} \end{figure} From figure \ref{fig:sus} we see that for men aged 50 the years lost to diabetes has decreased from a bit over 8 to a bit less than 6 years, and for women from 8.5 to 5 years; so a greater improvement for women. \chapter{Practical implementation} We have devised functions that wraps these formulae up for practical use. \section{Function definitions} % The following code sources the originally formatted code in erl.R in % order to make it printable with all the formatting and comments in % it. However the sourcing does not work when compiling the vignettes % in R CMD build. So when checking the code we comment this out by % putting eval=FALSE. So depending on whether we actually construct % the pdf for the inst/doc folder or test (upload) the package, one of % the following two chunks are run with eval=FALSE and the other with % eval=TRUE. <>= source( "../R/erl.R", keep.source=TRUE ) @ % % When checking the package <>= surv1 <- Epi::surv1 surv2 <- Epi::surv2 erl1 <- Epi::erl1 erl <- Epi::erl yll <- Epi::yll @ % When using the functions it is assumed that the functions $\mu_W$, $\mu_D$ and $\lambda$ are given as vectors corresponding to equidistantly (usually tightly) spaced ages from 0 to $K$ where K is the age where everyone can safely be assumed dead. \texttt{surv1} is a simple function that computes the survival function from a vector of mortality rates, and optionally the conditional survival given being alive at prespecified ages: <<>>= surv1 @ % \texttt{erl1} basically just expands the result of \texttt{surv1} with a column of expected residual life times: <<>>= erl1 @ % We also define a function, \texttt{surv2}, that computes the survival function for a non-diseased person that may become diseased with rate \texttt{lam} and after that die at a rate of \texttt{muD} (corresponding to the formulae above). This is the sane way of handling years of life lost to a particular illness: <<>>= surv2 @ % Finally we devised a function using these to compute the expected residual lifetime at select ages: <<>>= erl @ % \ldots and a wrapper for this if we only want the years of life lost returned: <<>>= yll @ % \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2007a} B~Carstensen. \newblock Age-{P}eriod-{C}ohort models for the {L}exis diagram. \newblock {\em Statistics in Medicine}, 26(15):3018--3045, 2007. \bibitem{Carstensen.2008c} B~Carstensen, JK~Kristensen, P~Ottosen, and K~Borch-Johnsen. \newblock The {D}anish {N}ational {D}iabetes {R}egister: {T}rends in incidence, prevalence and mortality. \newblock {\em Diabetologia}, 51:2187--2196, 2008. \end{thebibliography} \addcontentsline{toc}{chapter}{References} \end{document} Epi/vignettes/fixall0000755000176200001440000000125314003553264014207 0ustar liggesusers# Before this is run, do this: # 1) run rw on simLexis and yll with eval=TRUE in the lines with # CHANGE1 in order to get a version with properly formatted # code. # 2) Move the .tex files to sL.tex and yl.tex, and compile. # 3) Swap TRUE and FALSE in the CHANGE1/2 lines in the rnw files. # Then we are ready for the following: rt crisk rw crisk bl crisk cp crisk.R ../inst/doc cp crisk.pdf ../inst/doc rw flup rt flup bl flup cp flup.R ../inst/doc cp flup.pdf ../inst/doc rt simLexis rw simLexis bl simLexis cp simLexis.R ../inst/doc/simLexis.R cp sL.pdf ../inst/doc/simLexis.pdf rt yll rw yll bl yll cp yll.R ../inst/doc/yll.R cp yl.pdf ../inst/doc/yll.pdf kleanEpi/vignettes/flup.rnw0000644000176200001440000016705013522040203014475 0ustar liggesusers%\VignetteIndexEntry{Follow-up data with the Lexis functions in Epi} \SweaveOpts{results=verbatim,keep.source=TRUE,include=FALSE,eps=FALSE} \documentclass[a4paper,dvipsnames,twoside,12pt]{report} \newcommand{\Title}{Follow-up data with the\\ \texttt{Lexis} functions in \texttt{Epi}} \newcommand{\Tit}{Follow-up with \texttt{Lexis}} \newcommand{\Version}{Version 6} \newcommand{\Dates}{August 2019} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/} } \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk} \\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./flup} <>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) @ % \chapter*{Introduction} \addcontentsline{toc}{chapter}{Introduction} This is an introduction to the \texttt{Lexis} machinery in the \texttt{Epi} package. The machinery is intended for representation and manipulation of follow-up data (event history data) from studies where exact dates of events are known. It accommodates follow-up through multiple states and on multiple time scales. This vignette uses an example from the \texttt{Epi} package to illustrate the set-up of a simple \texttt{Lexis} object (a data frame of follow-up intervals), as well as the subdivision of follow-up intervals needed for multistate representation and analysis of transition rates. The first chapter is exclusively on manipulation of the follow-up representation, but it points to the subsequent chapter where analysis is based on a \texttt{Lexis} representation with very small follow-up intervals. Chapter 2 uses analysis of mortality rates among Danish diabetes patients (available in the \texttt{Epi} package) currently on insulin treatment or not to illustrate the use of the the \texttt{Lexis} machinery. I owe much thanks to my colleague Lars Jorge Diaz for careful reading and many constructive suggestions. \section{History} The \texttt{Lexis} machinery in the \texttt{Epi} package was first conceived by Martyn Plummer\cite{Plummer.2011,Carstensen.2011a}, and since its first appearance in the \texttt{Epi} package in 2008 it has been expanded with a number of utilities. An overview of these can be found in the last chapter of this note: ``\texttt{Lexis} functions''. \chapter{Representation of follow-up data in the \texttt{Epi} package} In the \texttt{Epi}-package, follow-up data is represented by adding some extra variables to a data frame. Such a data frame is called a \texttt{Lexis} object. The tools for handling follow-up data then use the structure of this for special plots, tabulations and modeling. Follow-up data basically consists of a time of entry, a time of exit and an indication of the status at exit (normally either ``alive'' or ``dead'') for each person. Implicitly is also assumed a status \emph{during} the follow-up (usually ``alive''). \begin{figure}[htbp] \centering \setlength{\unitlength}{1pt} \begin{picture}(210,70)(0,75) %\scriptsize \thicklines \put( 0,80){\makebox(0,0)[r]{Age-scale}} \put( 50,80){\line(1,0){150}} \put( 50,80){\line(0,1){5}} \put(100,80){\line(0,1){5}} \put(150,80){\line(0,1){5}} \put(200,80){\line(0,1){5}} \put( 50,77){\makebox(0,0)[t]{35}} \put(100,77){\makebox(0,0)[t]{40}} \put(150,77){\makebox(0,0)[t]{45}} \put(200,77){\makebox(0,0)[t]{50}} \put( 0,115){\makebox(0,0)[r]{Follow-up}} \put( 80,105){\makebox(0,0)[r]{\small Two}} \put( 90,105){\line(1,0){87}} \put( 90,100){\line(0,1){10}} \put(100,100){\line(0,1){10}} \put(150,100){\line(0,1){10}} \put(180,105){\circle{6}} \put( 95,110){\makebox(0,0)[b]{1}} \put(125,110){\makebox(0,0)[b]{5}} \put(165,110){\makebox(0,0)[b]{3}} \put( 50,130){\makebox(0,0)[r]{\small One}} \put( 60,130){\line(1,0){70}} \put( 60,125){\line(0,1){10}} \put(100,125){\line(0,1){10}} \put(130,130){\circle*{6}} \put( 80,135){\makebox(0,0)[b]{4}} \put(115,135){\makebox(0,0)[b]{3}} \end{picture} \caption{\it Follow-up of two persons} \label{fig:fu2} \end{figure} \section{Time scales} A time scale is a variable that varies deterministically \emph{within} each person during follow-up, \textit{e.g.}: \begin{itemize} \item Age \item Calendar time \item Time since start of treatment \item Time since relapse \end{itemize} All time scales advance at the same pace, so the time followed is the same on all time scales. Therefore, it will suffice to use only the entry point on each of the time scales, for example: \begin{itemize} \item Age at entry \item Date of entry \item Time at treatment (\emph{at} treatment this is 0) \item Time at relapse (\emph{at} relapse this is 0) \end{itemize} For illustration we need to load the \texttt{Epi} package: <<>>= library(Epi) print( sessionInfo(), l=F ) @ % In the \texttt{Epi} package, follow-up in a cohort is represented in a \texttt{Lexis} object. As mentioned, a \texttt{Lexis} object is a data frame with some extra structure representing the follow-up. For the \texttt{DMlate} data --- follow-up of diabetes patients in Denmark recording date of birth, date of diabetes, date of insulin use, date of first oral drug use and date of death --- we can construct a \texttt{Lexis} object by: <<>>= data( DMlate ) head( DMlate ) dmL <- Lexis( entry = list( per=dodm, age=dodm-dobth, tfD=0 ), exit = list( per=dox ), exit.status = factor( !is.na(dodth), labels=c("DM","Dead") ), data = DMlate ) timeScales(dmL) @ % (The excluded persons are persons with date of diabetes equal to date of death.) The \texttt{entry} argument is a \emph{named} list with the entry points on each of the time scales we want to use. It defines the names of the time scales and the entry points of the follow-up of each person. The \texttt{exit} argument gives the exit time on \emph{one} of the time scales, so the name of the element in this list must match one of the names of the \texttt{entry} list. This is sufficient, because the follow-up time on all time scales is the same, in this case $\mathtt{dox}$-$\mathtt{dodm}$. The \texttt{exit.status} is a categorical variable (a \emph{factor}) that indicates the exit status --- in this case whether the person (still) is in state \texttt{DM} or exits to \texttt{Dead} at the end of follow-up. In principle we should also indicate the \texttt{entry.status}, but the default is to assume that all persons enter in the \emph{first} of the mentioned \texttt{exit.state}s --- in this case \texttt{DM}, because $\mathtt{FALSE}<\mathtt{TRUE}$. Now take a look at the result: <<>>= str( dmL ) head( dmL )[,1:10] @ % The \texttt{Lexis} object \texttt{dmL} has a variable for each time scale which is the entry point on this time scale. The follow-up time is in the variable \texttt{lex.dur} (\texttt{dur}ation). Note that the exit status is in the variable \texttt{lex.Xst} (e\texttt{X}it \texttt{st}ate. The variable \texttt{lex.Cst} is the state where the follow-up takes place (\texttt{C}urrent \texttt{st}ate), in this case \texttt{DM} (alive with diabetes) for all persons. This implies that \emph{censored} observations are characterized by having $\mathtt{lex.Cst}=\mathtt{lex.Xst}$. There is a \texttt{summary} function for \texttt{Lexis} objects that lists the number of transitions and records as well as the total amount of follow-up time; it also (optionally) prints information about the names of the variables that constitute the time scales: <<>>= summary.Lexis( dmL, timeScales=TRUE ) @ % It is possible to get a visualization of the follow-up along the time scales chosen by using the \texttt{plot} method for \texttt{Lexis} objects. \texttt{dmL} is an object of \emph{class} \texttt{Lexis}, so using the function \texttt{plot()} on it means that \R\ will look for the function \texttt{plot.Lexis} and use this function. <>= plot( dmL ) @ % The function allows quite a bit of control over the output, and a \texttt{points.Lexis} function allows plotting of the endpoints of follow-up: <>= par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( dmL, 1:2, lwd=1, col=c("blue","red")[dmL$sex], grid=TRUE, lty.grid=1, col.grid=gray(0.7), xlim=1960+c(0,60), xaxs="i", ylim= 40+c(0,60), yaxs="i", las=1 ) points( dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col="lightgray", lwd=3, cex=0.3 ) points( dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col=c("blue","red")[dmL$sex], lwd=1, cex=0.3 ) box(bty='o') @ % In the above code you will note that the values of the arguments \texttt{col} and \texttt{pch} are indexed by factors, using the convention in \R\ that the index is taken as \emph{number of the level} of the supplied factor. Thus \texttt{c("blue","red")[dmL\$sex]} is \texttt{"blue"} when \texttt{sex} is \texttt{M} (the first level). The results of these two plotting commands are in figure \ref{fig:Lexis-diagram}, p. \pageref{fig:Lexis-diagram}. \begin{figure}[tb] \centering \includegraphics[width=0.35\textwidth]{flup-dmL1} \includegraphics[width=0.63\textwidth]{flup-dmL2} \caption{\it Lexis diagram of the \textrm{\tt DMlate} dataset; left panel is the default version, right panel: plot with some bells and whistles. The red lines are for women, blue for men, crosses indicate deaths.} \label{fig:Lexis-diagram} \end{figure} \section{Splitting the follow-up time along a time scale} In next chapter we shall conduct statistical analysis of mortality rates, and a prerequisite for parametric analysis of rates is that follow-up time is subdivided in smaller intervals, where we can reasonably assume that rates are constant. The follow-up time in a cohort can be subdivided (``split'') along a time scale, for example current age. This is achieved by the \texttt{splitLexis} (note that it is \emph{not} called \texttt{split.Lexis}). This requires that the time scale and the breakpoints on this time scale are supplied. Try: <<>>= dmS1 <- splitLexis( dmL, "age", breaks=seq(0,100,5) ) summary( dmL ) summary( dmS1 ) @ % We see that the number of persons and events and the amount of follow-up is the same in the two data sets; only the number of records differ --- the extra records all have \texttt{lex.Cst}=\texttt{DM} and \texttt{lex.Xst}=\texttt{DM}. To see how records are split for each individual, it is useful to list the results for a few individuals (whom we selected with a view to the illustrative usefulness): <<>>= wh.id <- c(9,27,52,484) subset( dmL , lex.id %in% wh.id )[,1:10] subset( dmS1, lex.id %in% wh.id )[,1:10] @ % The resulting object, \texttt{dmS1}, is again a \texttt{Lexis} object, and the follow-up may be split further along another time scale, for example diabetes duration, \texttt{tfD}. Subsequently we list the results for the chosen individuals: <<>>= dmS2 <- splitLexis( dmS1, "tfD", breaks=c(0,1,2,5,10,20,30,40) ) subset( dmS2, lex.id %in% wh.id )[,1:10] @ % A more efficient (and more intuitive) way of making this double split is to use the \texttt{splitMulti} function from the \texttt{popEpi} package: <<>>= library( popEpi ) dmM <- splitMulti( dmL, age = seq(0,100,5), tfD = c(0,1,2,5,10,20,30,40), drop = FALSE ) summary( dmS2 ) summary( dmM ) @ % Note we used the argument \texttt{drop=FALSE} which will retain follow-up also outside the window defined by the breaks. Otherwise the default for \texttt{splitMulti} would be to drop follow-up outside \texttt{age} [0,100] and \texttt{tfD} [0,40]. This clipping behaviour is not available in \texttt{splitLexis}, nevertheless this may be exactly what we want in some situations. So we see that the two ways of splitting data yields the same amount of follow-up, but the results are not identical: <<>>= identical( dmS2, dmM ) class( dmS2 ) class( dmM ) @ % As we see, this is because the \texttt{dmM} object also is a \texttt{data.table} object; the \texttt{splitMulti} uses the \texttt{data.table} machinery which makes the splitting substantially faster --- this is of particular interest if you operate on large data sets ($>100,000$ records). Thus the recommended way of splitting follow-up time is by \texttt{splitMulti}. But you should be aware that the result is a \texttt{data.table} object, which in some circumstances behaves slightly different from \texttt{data.frame}s. See the manual for \texttt{data.table}. \section{Cutting follow up time at dates of intermediate events} If we have a recording of the date of a specific event as for example recovery or relapse, we may classify follow-up time as being before or after this intermediate event, but it requires that follow-up records that straddle the event be cut in two and placed in separate records, one representing follow-up \emph{before} the intermediate event, and another representing follow-up \emph{after} the intermediate event. This is achieved with the function \texttt{cutLexis}, which takes three arguments: the time point of the intermediate event, the time scale that this point refers to, and the value of the (new) state following the date. Optionally, we may also define a new time scale with the argument \texttt{new.scale=}. We are interested in the time before and after inception of insulin use, which occurs at the date \texttt{doins}: <<>>= whc <- c(names(dmL)[1:7],"dodm","doins") # WHich Columns do we want to see? subset( dmL, lex.id %in% wh.id )[,whc] dmC <- cutLexis( data = dmL, cut = dmL$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM" ) whc <- c(names(dmL)[1:8],"doins") # WHich Columns do we want to see? subset( dmC, lex.id %in% wh.id )[,whc] @ % (The \texttt{precursor.states=} argument is explained below). Note that the process of cutting time is simplified by having all types of events referred to the calendar time scale. This is a generally applicable advice in handling follow-up data: Get all event times as \emph{dates}, location of events and follow-up on other time scales can then easily be derived from this. Note that individual 52 has had his follow-up cut at 6.55 years from diabetes diagnosis and individual 484 at 5.70 years from diabetes diagnosis. This dataset could then be split along the time scales as we did before with \texttt{dmL}. The result of this can also be achieved by cutting the split dataset \texttt{dmS2} instead of \texttt{dmL}: <<>>= dmS2C <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM" ) subset( dmS2C, lex.id %in% wh.id )[,whc] @ % Thus it does not matter in which order we use \texttt{splitLexis} and \texttt{cutLexis}. Mathematicians would say that \texttt{splitLexis} and \texttt{cutLexis} are commutative. Note in \texttt{lex.id}=484, that follow-up subsequent to the event is classified as being in state \texttt{Ins}, but that the final transition to state \texttt{Dead} is preserved. This is the point of the \texttt{precursor.states=} argument. It names the states (in this case \texttt{DM}) that will be over-written by \texttt{new.state} (in this case \texttt{Ins}), while the state \texttt{Dead} should not be updated even if it is after the time where the persons moves to state \texttt{Ins}. In other words, only state \texttt{DM} is a precursor to state \texttt{Ins}, state \texttt{Dead} is always subsequent to state \texttt{Ins}. Note that we defined a new time scale, \texttt{tfI}, using the argument \texttt{new.scale=tfI}. This has a special status relative to the other three time scales, it is defined as time since entry into a state, namely \texttt{Ins}, this is noted in the time scale part of the summary of \texttt{Lexis} object --- the information sits in the attribute \texttt{time.since} of the \texttt{Lexis} object, which can be accessed by the function \texttt{timeSince()} or through the \texttt{summary()}: <<>>= summary( dmS2C, timeScales=TRUE ) @ % Finally we can get a quick overview of the states and transitions by using \texttt{boxes} --- \texttt{scale.R} scales transition rates to rates per 1000 PY: <>= boxes( dmC, boxpos=TRUE, scale.R=1000, show.BE=TRUE ) @ % \insfig{box1}{0.8}{States, person years, transitions and rates in the cut dataset. The numbers \emph{in} the boxes are person-years and the number of persons \texttt{B}eginning, resp. \texttt{E}nding their follow-up in each state (triggered by \textrm{\tt show.BE=TRUE}). The numbers at the arrows are the number of transitions and transition rates per 1000 (triggered by \textrm{\tt scale.R=1000}).} \chapter{Modeling rates from \texttt{Lexis} objects} \section{Covariates} In the dataset \texttt{dmS2C} there are three types of covariates that can be used to describe mortality rates: \begin{enumerate} \item time-dependent covariates \item time scales \item fixed covariates \end{enumerate} There is only one time-dependent covariate here, namely \texttt{lex.Cst}, the current state of the person's follow up; it takes the values \texttt{DM} and \texttt{Ins} according to whether the person has ever purchased insulin at a given time of follow-up. The time-scales are obvious candidates for explanatory variables for the rates, notably age and time from diagnosis (duration of diabetes) and insulin. \subsection{Time scales as covariates} If we want to model the effect of the time scale variables on occurrence rates, we will for each interval use either the value of the left endpoint in each interval or the middle. There is a function \texttt{timeBand} which returns either of these: <<>>= timeBand( dmS2C, "age", "middle" )[1:10] # For nice printing and column labelling we use the data.frame() function: data.frame( dmS2C[,c("per","age","tfD","lex.dur")], mid.age=timeBand( dmS2C, "age", "middle" ), mid.t=timeBand( dmS2C, "tfD", "middle" ), left.t=timeBand( dmS2C, "tfD", "left" ), right.t=timeBand( dmS2C, "tfD", "right" ), fact.t=timeBand( dmS2C, "tfD", "factor" ) )[1:15,] @ % Note that the values of these functions are characteristics of the intervals defined by \texttt{breaks=}, \emph{not} the midpoints nor left or right endpoints of the actual follow-up intervals (which would be \texttt{tfD} and \texttt{tfD+lex.dur}, respectively). These functions are intended for modeling time scale variables as factors (categorical variables) in which case the coding must be independent of the censoring and mortality pattern --- it should only depend on the chosen grouping of the time scale. Modeling time scales as \emph{quantitative} should not be based on these codings but directly on the values of the time-scale variables, notably the left endpoints of the intervals. \subsection{Differences between time scales} Apparently, the only fixed variable is \texttt{sex}, but formally the dates of birth (\texttt{dobth}), diagnosis (\texttt{dodm}) and first insulin purchase (\texttt{doins}) are fixed covariates too. They can be constructed as origins of time scales referred to the calendar time scale. Likewise, and possibly of greater interest, we can consider these origins on the age scale, calculated as the difference between age and another time scale. These would then be age at birth (hardly relevant since it is the same for all persons), age at diabetes diagnosis and age at insulin treatment. \subsection{Keeping the relation between time scales} The midpoint (as well as the right interval endpoint) should be used with caution if the variable age at diagnosis \texttt{dodm-dobth} is modeled too; the age at diabetes is logically equal to the difference between current age (\texttt{age}) and time since diabetes diagnosis (\texttt{tfD}): <<>>= summary( (dmS2$age-dmS2$tfD) - (dmS2$dodm-dmS2$dobth) ) @ % This calculation refers to the \emph{start} of each interval --- which are in the time scale variables in the \texttt{Lexis} object. But when using the middle of the intervals, this relationship is not preserved: <<>>= summary( timeBand( dmS2, "age", "middle" ) - timeBand( dmS2, "tfD", "middle" ) - (dmS2$dodm-dmS2$dobth) ) @ % If all three variables are to be included in a model, we must make sure that the \emph{substantial} relationship between the variables be maintained. One way is to recompute age at diabetes diagnosis from the two midpoint variables, but more straightforward would be to use the left endpoint of the intervals, that is the time scale variables in the \texttt{Lexis} object. If we dissolve the relationship between the variables \texttt{age}, \texttt{tfD} and age at diagnosis by grouping we may obtain identifiability of the three separate effects, but it will be at the price of an arbitrary allocation of a linear trend between them. For the sake of clarity, consider current age, $a$, duration of disease, $d$ and age at diagnosis $e$, where \[ \text{current age} = \text{age at diagnosis} + \text{disease duration}, \quad \text{\ie} \quad a=e+d \quad \Leftrightarrow \quad e+d-a=0 \] If we model the effect of the quantitative variables $a$, $e$ and $d$ on the log-rates by three functions $f$, $g$ and $h$: $ \log(\lambda)=f(a)+g(d)+h(e) $ then for any $\kappa$: \begin{align*} \log(\lambda) & = f(a)+g(d)+h(e)+\kappa(e+d-a)\\ & = \big(f(a)-\kappa a \big)+ \big(g(d)+\kappa d \big)+ \big(h(e)+\kappa e \big) \\ & = \tilde f(a)+ \tilde g(d)+ \tilde h(e) \end{align*} In practical modeling this will turn up as a singular model matrix with one parameter aliased, corresponding to some arbitrarily chosen value of $\kappa$ (depending on software conventions for singular models). This phenomenon is well known from age-period-cohort models. Thus we see that we can move any slope around between the three terms, so if we achieve identifiability by using grouping of one of the variables we will in reality have settled for a particular value of $\kappa$, without known why we chose just that. The solution is to resort to predictions which are independent of the particular parametrization or choose a particular parametrization with explicit constraints. \section{Modeling of rates} As mentioned, the purpose of subdividing follow-up data in smaller intervals is to be able to model effects of time scale variables as parametric functions. When we split along a time scale we can get intervals that are as small as we want; if they are sufficiently small, an assumption of constant rates in each interval becomes reasonable. In a model that assumes a constant occurrence rate in each of the intervals the likelihood contribution from each interval is the same as the likelihood contribution from a Poisson variate $D$, say, with mean $\lambda \ell$ where $\lambda$ is the rate and $\ell$ is the interval length, and where the value of the variate $D$ is 1 or 0 according to whether an event has occurred or not. Moreover, the likelihood contributions from all follow-up intervals from a single person are \emph{conditionally} independent (conditional on having survived till the start of the interval in question). This implies that the total contribution to the likelihood from a single person is a product of terms, and hence the same as the likelihood of a number of independent Poisson terms, one from each interval. Note that variables are neither Poisson distributed (\eg they can only ever assume values 0 or 1) nor independent --- it is only the likelihood for the follow-up data that happens to be the same as the likelihood from independent Poisson variates. Different models can have the same likelihood, a model cannot be inferred from the likelihood. Parametric modeling of the rates is obtained by using the \emph{values} of the time scales for each interval as \emph{quantitative} explanatory variables, using for example splines. And of course also the values of the fixed covariates and the time-dependent variables for each interval. Thus the model will be one where the rate is assumed constant in each (small) interval, but where a parametric form of the \emph{size} of the rate in each interval is imposed by the model, using the time scale as a quantitative covariate. \subsection{Interval length} In the first chapter we illustrated cutting and splitting by listing the results for a few individuals across a number of intervals. For illustrational purposes we used 5-year age bands to avoid excessive listings, but since the doubling time for mortality on the age scale is only slightly larger than 5 years, the assumption about constant rates in each interval would be pretty far fetched if we were to use 5 year intervals. Thus, for modeling purposes we split the follow-up in 3 month intervals. When we use intervals of 3 months length it is superfluous to split along multiple time scales --- the precise location of tightly spaced splits will be irrelevant from any practical point of view. \texttt{splitLexis} and \texttt{splitMulti} will allocate the actual split times for all of the time scale variables, so these can be used directly in modeling. So we split the cut dataset in 3 months intervals along the age scale: <<>>= dmCs <- splitMulti( dmC, age = seq(0,110,1/4) ) summary( dmCs, t=T ) @ % We see that we now have 228,748 records and 9996 persons, so about 23 records per person. The total risk time is 54,275 years, a bit less than 3 months on average per record as expected. \subsection{Practicalities for splines} In this study we want to look at how mortality depend on age (\texttt{age}) and time since start of insulin use (\texttt{tfI}). If we want to use splines in the description we must allocate knots for anchoring the splines at each of the time scales, either by some \textit{ad hoc} method or by using some sort of penalized splines as for example by \texttt{gam}; the latter will not be treated here; it belongs in the realm of the \texttt{mgcv} package. Here we shall use the former approach and allocate 5 knots on each of the time-scales. We allocate knots so that we have the events evenly distributed between the knots. Since the insulin state starts at 0 for all individuals we include 0 as the first knot, such that any set of natural splines with these knots will have the value 0 at 0 on the time scale. <<>>= ( a.kn <- with( subset( dmCs, lex.Xst=="Dead" ), quantile( age+lex.dur, (1:5-0.5)/5 ) ) ) ( i.kn <- c( 0, with( subset( dmCs, lex.Xst=="Dead" & lex.Cst=="Ins" ), quantile( tfI+lex.dur, (1:4)/5 ) ) ) ) @ % In the \texttt{Epi} package there is a convenience wrapper, \texttt{Ns}, for the \texttt{n}atural \texttt{s}pline generator \texttt{ns}, that takes the smallest and the largest of a set of supplied knots to be the boundary knots, so the explicit definition of the boundary knots becomes superfluous. Note that it is a feature of the \texttt{Ns} (via the features of \texttt{ns}) that any generated spline function is 0 at the leftmost knot. \subsection{Poisson models} A model that describes mortality rates as only a function of age would then be: <<>>= ma <- glm( (lex.Xst=="Dead") ~ Ns(age,knots=a.kn), family = poisson, offset = log(lex.dur), data = dmCs ) summary( ma ) @ % The offset, \texttt{log(lex.dur)} comes from the fact that the likelihood for the follow-up data during $\ell$ time is the same as that for independent Poisson variates with mean $\lambda \ell$, and that the default link function for the Poisson family is the log, so that we are using a linear model for the log-mean, $\log(\lambda) + \log(\ell)$. But when we want a model for the log-rate ($\log(\lambda)$), the term $\log(\ell)$ must still be included as a covariate, but with regression coefficient fixed to 1; a so-called \emph{offset}. This is however a technicality; it just exploits that the likelihood of a particular Poisson model and that of the rates model is the same. In the \texttt{Epi} package is a \texttt{glm} family, \texttt{poisreg} that has a more intuitive interface, where the response is a 2-column matrix of events and person-time, respectively. This is in concert with the fact that the outcome variable in follow-up studies is bivariate: (event, risk time). <<>>= Ma <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn), family = poisreg, data = dmCs ) summary( Ma ) @ % Exploiting the multistate structure in the \texttt{Lexis} object there is a multistate convenience wrapper for \texttt{glm} with the \texttt{poisreg} family, that just requires specification of the transitions in terms of \texttt{from} and \texttt{to}. Although it is called \texttt{glm.Lexis} it is \emph{not} an S3 method for \texttt{Lexis} objects: <<>>= Xa <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) ) @ % The result is a \texttt{glm} object but with an extra attribute, \texttt{Lexis}: <<>>= attr( Xa, "Lexis" ) @ % There are similar wrappers for \texttt{gam} and \texttt{coxph} models, \texttt{gam.Lexis} and \texttt{coxph.Lexis}, but these will not be elaborated in detail. The \texttt{from=} and \texttt{to=} can even be omitted, in which case all possible transitions \emph{into} any of the absorbing states is modeled: <<>>= xa <- glm.Lexis( dmCs, formula = ~ Ns(age,knots=a.kn) ) @ We can check if the four models fitted are the same: <<>>= c( deviance(ma), deviance(Ma), deviance(Xa), deviance(xa) ) @ % Oops! the model \texttt{Xa} is apparently not the same as the other three? This is because the explicit specification \verb|from="DM", to="Dead"|, omits modeling contributions from the $\mathtt{Ins}\rightarrow\mathtt{Dead}$ transition --- the output actually said so --- see also figure \ref{fig:box1} on p. \pageref{fig:box1}. The other three models all use both transitions --- and assume that the two transition rates are the same, \ie that start of insulin has no effect on mortality. We shall relax this assumption later. The parameters from the model do not have any direct interpretation \textit{per se}, but we can compute the estimated mortality rates for a range of ages using \texttt{ci.pred} with a suitably defined prediction data frame. Note that if we use the \texttt{poisson} family of models, we must specify all covariates in the model, including the variable in the offset, \texttt{lex.dur} (remember that this was a covariate with coefficient fixed at 1). We set the latter to 1000, because we want the mortality rates per 1000 person-years. Using the \texttt{poisreg} family, the prediction will ignore any value of \texttt{lex.dur} specified in the prediction data frame, the returned rates will be per unit in which \texttt{lex.dur} is recorded. <>= nd <- data.frame( age=40:85, lex.dur=1000 ) pr.0 <- ci.pred( ma, newdata = nd ) # mortality per 100 PY pr.a <- ci.pred( Ma, newdata = nd )*1000 # mortality per 100 PY summary(pr.0/pr.a) matshade( nd$age, pr.a, plot=TRUE, type="l", lty=1, log="y", xlab="Age (years)", ylab="DM mortality per 1000 PY") @ % \insfig{pr-a}{0.8}{Mortality among Danish diabetes patients by age with 95\% CI as shaded area. We see that the rates increase linearly on the log-scale, that is exponentially by age.} \section{Time dependent covariate} A Poisson model approach to mortality by insulin status, would be to assume that the rate-ratio between patients on insulin and not on insulin is a fixed quantity, independent of time since start of insulin, independent of age. This is commonly termed a proportional hazards assumption, because the rates (hazards) in the two groups are proportional along the age (baseline time) scale. <<>>= pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + lex.Cst + sex, family=poisreg, data = dmCs ) round( ci.exp( pm ), 3 ) @ % So we see that persons on insulin have about twice the mortality of persons not on insulin and that women have 2/3 the mortality of men. \subsection{Time since insulin start} If we want to test whether the excess mortality depends on the time since start if insulin treatment, we can add a spline terms in \texttt{tfI}. But since \texttt{tfI} is a time scale defined as time since entry into a new state (\texttt{Ins}), the variable \texttt{tfI} will be missing for those in the \texttt{DM} state, so before modeling we must set the \texttt{NA}s to 0, which we do with \texttt{tsNA20} (acronym for \texttt{t}ime\texttt{s}cale \texttt{NA}s to zero): <<>>= pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex, family=poisreg, data = tsNA20(dmCs) ) @ % As noted before we could do this simpler with \texttt{glm.Lexis}, even without the \texttt{from=} and \texttt{to=} arguments, because we are modeling all transitions \emph{into} the absorbing state (\texttt{Dead}): <<>>= Pm <- glm.Lexis( tsNA20(dmCs), form = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex ) c( deviance(Pm), deviance(pm) ) identical( model.matrix(Pm), model.matrix(pm) ) @ % The coding of the effect of \texttt{tfI} is so that the value is 0 at 0, so the meaning of the estimate of the effect of \texttt{lex.Cst} is the RR between persons with and without insulin, immediately after start of insulin: <<>>= round( ci.exp( Pm, subset="ex" ), 3 ) @ % We see that the effect of sex is pretty much the same as before, but the effect of \texttt{lex.Cst} is much larger, it now refers to a different quantity, namely the RR at \texttt{tfI}=0. If we want to see the effect of time since insulin, it is best viewed jointly with the effect of age: <>= ndI <- data.frame( expand.grid( tfI=c(NA,seq(0,15,0.1)), ai=seq(40,80,10) ), sex="M", lex.Cst="Ins" ) ndI <- transform( ndI, age=ai+tfI ) head( ndI ) ndA <- data.frame( age= seq(40,100,0.1), tfI=0, lex.Cst="DM", sex="M" ) pri <- ci.pred( Pm, ndI ) * 1000 pra <- ci.pred( Pm, ndA ) * 1000 matshade( ndI$age, pri, plot=TRUE, las=1, xlab="Age (years)", ylab="DM mortality per 1000 PY", log="y", lty=1, col="blue" ) matshade( ndA$age, pra ) @ % \insfig{ins-time}{0.8}{Mortality rates of persons on insulin, starting insulin at ages 40,50,\ldots,80 (blue), compared with persons not on insulin (black curve). Shaded areas are 95\% CI.} In figure \ref{fig:ins-time}, p. \pageref{fig:ins-time}, we see that mortality is high just after insulin start, but falls by almost a factor 3 during the first year. Also we see that there is a tendency that mortality in a given age is smallest for those with the longest duration of insulin use. \section{The Cox model} Note that in the Cox-model the age is used as response variable, slightly counter-intuitive. Hence the age part of the linear predictors is not in that model: <<>>= library( survival ) cm <- coxph( Surv(age,age+lex.dur,lex.Xst=="Dead") ~ Ns(tfI,knots=i.kn) + lex.Cst + sex, data = tsNA20(dmCs) ) @ % There is also a multistate wrapper for Cox models, requiring a l.h.s. side for the \texttt{formula=} argument: <<>>= Cm <- coxph.Lexis( tsNA20(dmCs), form= age ~ Ns(tfI,knots=i.kn) + lex.Cst + sex ) cbind( ci.exp( cm ), ci.exp( Cm ) ) @ % We can compare the estimates from the Cox model with those from the Poisson model --- we must add \texttt{NA}s because the Cox-model does not give the parameters for the baseline time scale (\texttt{age}), but also remove one of the parameters, because \texttt{coxph} parametrizes factors (in this case \texttt{lex.Cst}) by all defined levels and not only by the levels present in the dataset at hand (note the line of \texttt{1.0000000}s in the print above): <<>>= round( cbind( ci.exp( Pm ), rbind( matrix(NA,5,3), ci.exp( cm )[-6,] ) ), 3 ) @ % Thus we see that the Poisson and Cox gives pretty much the same results. You may argue that Cox requires a smaller dataset, because there is no need to subdivide data in small intervals \emph{before} insulin use. But certainly the time \emph{after} insulin inception need to be if the effect of this time should be modeled. The drawback of the Cox-modeling is that it is not possible to show the absolute rates as we did in figure \ref{fig:ins-time} on \pageref{fig:ins-time}. \section{Marginal effect of time since insulin} When we plot the marginal effect of \texttt{tfI} from the two models we get pretty much the same; here we plot the RR relative to \texttt{tfI}=2 years. Note that we are deriving the RR as the ratio of two sets of predictions, from the data frames \texttt{nd} and \texttt{nr} --- for further details consult the help page for \texttt{ci.lin}, specifically the use of a list as the \texttt{ctr.mat} argument: <>= nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 2 , lex.Cst="Ins", sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), plot=T, lty=c(1,2), log="y", xlab="Time since insulin (years)", ylab="Rate ratio") abline( h=1, lty=3 ) @ % \insfig{Ieff}{0.8}{The naked duration effects relative to 2 years of duration, black from Poisson model, red from Cox model. The two sets of estimates are identical, and so are the standard errors, so the two shaded areas overlap almost perfectly.} In figure \ref{fig:Ieff}, p. \pageref{fig:Ieff}, we see that the duration effect is exactly the same from the two modeling approaches. We will also want the RR relative to the non-insulin users --- recall these are coded 0 on the \texttt{tfI} variable: <>= nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 0 , lex.Cst="DM" , sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), xlab="Time since insulin (years)", ylab="Rate ratio relative to non-Insulin", lty=c(1,2), log="y", plot=T ) @ % \insfig{IeffR}{0.8}{Insulin duration effect (state \textrm{\tt Ins}) relative to no insulin (state \textrm{\tt DM}), black from Poisson model, red from Cox model. The \emph{shape} is the same as the previous figure, but the RR is now relative to non-insulin, instead of relative to insulin users at 2 years duration. The two sets of estimates are identical, and so are the standard errors, so the two shaded areas overlap almost perfectly.} In figure \ref{fig:IeffR}, p. \pageref{fig:IeffR}, we see the effect of increasing duration of insulin use \emph{for a fixed age} which is a bit artificial, so we would like to see the \emph{joint} effects of age and insulin duration. What we cannot see is how the duration affects mortality relative to \texttt{current} age (at the age attained at the same time as the attained \texttt{tfI}). Another way of interpreting this curve is as the rate ratio relative to a person not on insulin, so we see that the RR (or hazard ratio, HR as some call it) is over 5 at the start of insulin (the \texttt{lex.Cst} estimate), and decreases to about 1.5 in the long term. Both figure \ref{fig:Ieff} and \ref{fig:IeffR} indicate a declining RR by insulin duration, but only from figure \ref{fig:ins-time} it is visible that mortality actually is \emph{in}creasing by age after some 2 years after insulin start. This point would not be available if we had only fitted a Cox model where we did not have access to the baseline hazard as a function of age. \section{Age$\times$duration interaction} The model we fitted assumes that the RR is the same regardless of the age at start of insulin --- the hazards are multiplicative. Sometimes this is termed the proportional hazards assumption: For \emph{any} fixed age the HR is the same as a function of time since insulin, and vice versa. A more correct term would be ``main effects model'' --- there is no interaction between age (the baseline time scale) and other covariates. So there is really no need for the term ``proportional hazards''; well defined and precise statistical terms for it has existed for aeons. \subsection{Age at insulin start} In order to check the consistency of the multiplicativity assumption across the spectrum of age at insulin inception, we can fit an interaction model. One approach to this would be using a non-linear effect of age at insulin use (for convenience we use the same knots as for age) --- note that the prediction data frames are the same as we used above, because we do not compute age at insulin use as a separate variable, but rather enter it as the difference between current age (\texttt{age}) and insulin duration (\texttt{tfI}). At first glance we might think of doing: <<>>= imx <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) @ % But this will fit a model with a rate-ratio between persons with and without insulin that depends only on age at insulin start for the time \emph{after} insulin start, the RR at \texttt{tfI}=0 will be the same at any age, which really is not the type of interaction we wanted. We want the \texttt{age-tfI} term to be specific for the insulin exposed so we may use one of two other approaches, that are conceptually alike but mathematically different: <<>>= Im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns((age-tfI)*(lex.Cst=="Ins"),knots=a.kn) + lex.Cst + sex ) im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + lex.Cst:Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) @ % The first model (\texttt{Im}) has a common age-effect (\texttt{Ns(age,...}) for persons with and without diabetes and a RR depending on insulin duration \texttt{tfI} and age at insulin (\texttt{age-tfI}). Since the linear effect of these two terms are in the model as well, a linear trend in the RR by current age (\texttt{age}) is accommodated as well. The second model allows age-effects that differ non-linearly between person with and without insulin, because the interaction term \texttt{lex.Cst:Ns(age-tfI...} for persons not on insulin is merely an age term (since \texttt{tfI} is coded 0 for all follow-up not on insulin). We can compare the models fitted: <<>>= anova( imx, Im, im, test='Chisq') @ so we see that the models indeed are different, and moreover that the last model does not provide substantial further improvement, by allowing non-linear RR along the age-scale. We can illustrate the different estimated rates from the three models in figure \ref{fig:dur-int}, p. \pageref{fig:dur-int}: <>= pxi <- ci.pred( imx, ndI ) pxa <- ci.pred( imx, ndA ) pIi <- ci.pred( Im , ndI ) pIa <- ci.pred( Im , ndA ) pii <- ci.pred( im , ndI ) pia <- ci.pred( im , ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pxi, pIi, pii)*1000, plot=T, log="y", xlab="Age", ylab="Mortality per 1000 PY", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) matshade( ndA$age, cbind( pxa, pIa, pia)*1000, lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) @ % \insfig{dur-int}{0.8}{Age at insulin as interaction between age and duration. Blue curves are from the naive interaction model \textrm{\tt imx} with identical $\RR$ at \textrm{\tt tfI}=0 at any age; green curves are from the interaction model with age at insulin, from the model \textrm{\tt Im} with only linear differences by age, and red lines from the full interaction model \textrm{\tt im}.} We can also plot the RRs only from these models (figure \ref{fig:dur-int-RR}, p. \pageref{fig:dur-int-RR}); for this we need the reference frames, and the machinery from \texttt{ci.exp} allowing a list of two data frames: <>= ndR <- transform( ndI, tfI=0, lex.Cst="DM" ) cbind( head(ndI), head(ndR) ) Rxi <- ci.exp( imx, list(ndI,ndR) ) Rii <- ci.exp( im , list(ndI,ndR) ) RIi <- ci.exp( Im , list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( Rxi, RIi, Rii), plot=T, log="y", xlab="Age (years)", ylab="Rate ratio vs, non-Insulin", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) abline( h=1 ) abline( h=ci.exp(imx,subset="lex.Cst")[,1], lty="25", col="blue" ) @ % \insfig{dur-int-RR}{0.9}{RR from three different interaction models. The horizontal dotted line is at the estimated effect of \textrm{\tt lex.Cst}, to illustrate that the first model (blue) constrains this initial HR to be constant across age. The green curves are the extended interaction model, and the red the full one.} \clearpage \subsection{General interaction} As a final illustration we may want to explore a different kind of interaction, not defined from the duration --- here we simplify the interaction by not using the second-last knot in the interaction terms --- figure \ref{fig:splint}, p. \pageref{fig:splint}. Note again that the prediction code is the same: <>= gm <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst:Ns(age,knots=a.kn):Ns(tfI,knots=i.kn) + lex.Cst + sex ) pgi <- ci.pred( gm, ndI ) pga <- ci.pred( gm, ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pgi, pii )*1000, plot=T, lty=c("solid","21"), lend="butt", lwd=2, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", alpha=c(0.2,0.1), col=c("black","red") ) matshade( ndA$age, cbind( pga, pia )*1000, lty=c("solid","21"), lend="butt", lwd=2, alpha=c(0.2,0.1), col=c("black","red") ) @ % \insfig{splint}{0.8}{Spline-by-spline interaction between age and duration (model \textrm{\tt gm}, black), and the interaction using a non-linear effect of age at entry (model \textrm{\tt im}, red), corresponding to the red curves in figure \ref{fig:dur-int}.} This is in figure \ref{fig:splint}, p. \pageref{fig:splint}. \subsection{Evaluating interactions} Here we see that the interaction effect is such that in the older ages the length of insulin use has an increasing effect on mortality. Even though there is no statistically significant interaction between age and time since start of insulin, it would be illustrative to show the RR as a function of age at insulin and age at follow-up: <>= ndR <- transform( ndI, lex.Cst="DM", tfI=0 ) iRR <- ci.exp( im, ctr.mat=list(ndI,ndR) ) gRR <- ci.exp( gm, ctr.mat=list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind(gRR,iRR), lty=1, log="y", plot=TRUE, xlab="Age (years)", ylab="Rate ratio: Ins vs. non-Ins", col=c("black","red") ) abline( h=1 ) @ % $ \insfig{RR-int}{0.8}{The effect of duration of insulin use at different ages of follow-up (and age at insulin start). Estimates are from the model with an interaction term using a non-linear effect of age at insulin start (model \textrm{\tt im}, red) and using a general spline interactions (model \textrm{\tt gm}, black). It appears that the general interaction over-models a bit.} This is in figure \ref{fig:RR-int}, p. \pageref{fig:RR-int}. The advantage of the parametric modeling (be that with age at insulin or general spline interaction) is that it is straight-forward to \emph{test} whether we have an interaction. \section{Separate models} In the above we insisted on making a joint model for the \texttt{DM}$\rightarrow$\texttt{Dead} and the \texttt{Ins}$\rightarrow$\texttt{Dead} transitions, but with the complications demonstrated it would actually have been more sensible to model the two transitions separately: <<>>= dmd <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) + sex ) ind <- glm.Lexis( dmCs, from="Ins", to="Dead", formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + sex ) ini <- ci.pred( ind, ndI ) dmi <- ci.pred( dmd, ndI ) dma <- ci.pred( dmd, ndA ) @ % The estimated mortality rates are shown in figure \ref{fig:sep-mort}, p. \pageref{fig:sep-mort}, using: <>= par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ini*1000, plot=TRUE, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", lwd=2, col="red" ) matshade( ndA$age, dma*1000, lwd=2, col="black" ) @ % The estimated RRs are computed using that the estimates from the two models are uncorrelated, and hence qualify for \texttt{ci.ratio} (this and the previous graph appear in figure \ref{fig:Ins-noIns}, p. \pageref{fig:Ins-noIns}) <>= par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ci.ratio(ini,dmi), plot=TRUE, log="y", xlab="Age (years)", ylab="RR insulin vs. no insulin", lwd=2, col="red" ) abline( h=1 ) @ % \begin{figure}[tb] \centering \includegraphics[width=0.49\textwidth]{flup-sep-mort} \includegraphics[width=0.49\textwidth]{flup-sep-HR} \caption{\it Left panel: Mortality rates from separate models for the two mortality transitions; the \textrm{\tt DM}$\rightarrow$\textrm{\tt Dead} transition modeled by age alone; \textrm{\tt Ins}$\rightarrow$\textrm{\tt Dead} transition modeled with spline effects of current age, time since insulin and and age at insulin. \newline Right panel: Mortality HR of insulin vs. no insulin.} \label{fig:Ins-noIns} \end{figure} \chapter{More states} \section{Subdividing states} It may be of interest to subdivide the states following the intermediate event according to whether the event has occurred or not. This will enable us to address the question of the fraction of the patients that ever go on insulin. This is done by the argument \texttt{split.states=TRUE}. <<>>= dmCs <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM", split.states = TRUE ) summary( dmCs ) @ % We can illustrate the numbers and the transitions (figure \ref{fig:box4}, p. \pageref{fig:box4}) <>= boxes( dmCs, boxpos=list(x=c(15,15,85,85), y=c(85,15,85,15)), scale.R=1000, show.BE=TRUE ) @ % $ \insfig{box4}{0.7}{Transitions between 4 states: the numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} Note that it is only the mortality rates that we have been modeling, namely the transitions \texttt{DM}$\rightarrow$\texttt{Dead} and \texttt{Ins}$\rightarrow$\texttt{Dead(Ins)}. If we were to model the cumulative risk of using insulin we would also need a model for the DM$\rightarrow$Ins transition. Subsequent to that we would then compute the probability of being in each state conditional on suitable starting conditions. With models where transition rates depend on several time scales this is not a trivial task. This is treated in more detail in the vignette on \texttt{simLexis}. \section{Multiple intermediate events} We may be interested in starting either insulin or OAD (oral anti-diabetic drugs), thus giving rise to more states and more time scales. This can be accomplished by the \texttt{mcutLexis} function, that generalizes \texttt{cutLexis}: <<>>= dmM <- mcutLexis( dmL, timescale = "per", wh = c("doins","dooad"), new.states = c("Ins","OAD"), new.scales = c("tfI","tfO"), precursor.states = "DM", ties.resolve = TRUE ) summary( dmM, t=T ) @ We see that we now have two time scales defined as entry since into states. <<>>= wh <- c(subset(dmM,lex.Cst=="Ins-OAD")$lex.id[1:2], subset(dmM,lex.Cst=="OAD-Ins")$lex.id[1:2]) options( width=110 ) print( subset( dmM, lex.id %in% wh )[,c('lex.id',names(dmM[1:8]),c("doins","dooad"))], digits=6, row.names=FALSE ) @ % We can also illustrate the transitions to the different states, as in figure \ref{fig:mbox}: <>= boxes( dmM, boxpos=list(x=c(15,80,40,40,85,85), y=c(50,50,90,10,90,10)), scale.R=1000, show.BE=TRUE ) @ % \insfig{mbox}{1.0}{Boxes for the \textrm{\tt dmM} object. The numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} We may not be interested in whether persons were prescribed insulin before OAD or vice versa, in which case we would combine the levels with both insulin and OAD to one, regardless of order (figure \ref{fig:mboxr}): <>= summary( dmMr <- Relevel( dmM, list('OAD+Ins'=5:6), first=FALSE) ) boxes( dmMr, boxpos=list(x=c(15,50,15,85,85), y=c(85,50,15,85,15)), scale.R=1000, show.BE=TRUE ) @ % \insfig{mboxr}{1.0}{Boxes for the \textrm{\tt dmMr} object with collapsed states. The numbers \emph{in} the boxes are person-years (middle), and below the number of persons who start, respectively end their follow-up in each of the states.} Diagrams as those in figures \ref{fig:mbox} and \ref{fig:mboxr} gives an overview of the possible transitions, which states it might be relevant to collapse, and which transitions to model and how. The actual modeling of the transition rates is straightforward; split the data along some timescale and then use \texttt{glm.Lexis} or \texttt{gam.Lexis}, where it is possible to select the transitions modelled. This is also possible with the \texttt{coxph.Lexis} function, but it requires that a single time scale be selected as the baseline time scale, and the effect of this will not be accessible. \chapter{\texttt{Lexis} functions} The \texttt{Lexis} machinery has evolved over time since it was first introduced in a workable version in \texttt{Epi\_1.0.5} in August 2008. Over the years there have been additions of tools for handling multistate data. Here is a list of the current functions relating to \texttt{Lexis} objects with a very brief description; it does not replace the documentation. Unless otherwise stated, functions named \texttt{something.Lexis} (with a ``\texttt{.}'') are S3 methods for \texttt{Lexis} objects, so you can skip the ``\texttt{.Lexis}'' in daily use. \setlist{noitemsep} \begin{description} \item[Define]\ \\ \begin{description} \item[\texttt{Lexis}] defines a \texttt{Lexis} object \end{description} \item[Cut and split]\ \\ \begin{description} \item[\texttt{cutLexis}] cut follow-up at intermediate event \item[\texttt{mcutLexis}] cut follow-up at several intermediate events \item[\texttt{countLexis}] cut follow-up at intermediate event count the no. events so far \item[\texttt{splitLexis}] split follow up along a time scale \item[\texttt{splitMulti}] split follow up along a time scale --- from the \texttt{popEpi} package, faster and has simpler syntax than \texttt{splitLexis} \item[\texttt{addCov.Lexis}] add clinical measurements at a given date to a \texttt{Lexis} object \end{description} \item[Boxes and plots]\ \\ \begin{description} \item[\texttt{boxes.Lexis}] draw a diagram of states and transitions \item[\texttt{plot.Lexis}] draw a standard Lexis diagram \item[\texttt{points.Lexis}] add points to a Lexis diagram \item[\texttt{lines.Lexis}] add lines to a Lexis diagram \item[\texttt{PY.ann.Lexis}] annotate life lines in a Lexis diagram \end{description} \item[Summarize and query]\ \\ \begin{description} \item[\texttt{summary.Lexis}] overview of transitions, risk time etc. \item[\texttt{levels.Lexis}] what are the states in the \texttt{Lexis} object \item[\texttt{nid.Lexis}] number of persons in the \texttt{Lexis} object --- how many unique values of \texttt{lex.id} are present \item[\texttt{entry}] entry time \item[\texttt{exit}] exit time \item[\texttt{status}] status at entry or exit \item[\texttt{timeBand}] factor of time bands \item[\texttt{timeScales}] what time scales are in the \texttt{Lexis} object \item[\texttt{timeSince}] what time scales are defined as time since a given state \item[\texttt{breaks}] what breaks are currently defined \item[\texttt{absorbing}] what are the absorbing states \item[\texttt{transient}] what are the transient states \item[\texttt{preceding}, \texttt{before}] which states precede this \item[\texttt{succeeding}, \texttt{after}] which states can follow this \item[\texttt{tmat.Lexis}] transition matrix for the \texttt{Lexis} object \end{description} \item[Manipulate]\ \\ \begin{description} \item[\texttt{subset.Lexis}, \texttt{[}] subset of a \texttt{Lexis} object \item[\texttt{merge.Lexis}] merges a \texttt{Lexis} objects with a \texttt{data.frame} \item[\texttt{cbind.Lexis}] bind a \texttt{data.frame} to a \texttt{Lexis} object \item[\texttt{rbind.Lexis}] put two \texttt{Lexis} objects head-to-foot \item[\texttt{transform.Lexis}] transform and add variables \item[\texttt{tsNA20}] turn \texttt{NA}s to 0s for time scales \item[\texttt{Relevel.Lexis}, \texttt{factorize.Lexis}] reorder and combine states \item[\texttt{rm.tr}] remove transitions from a \texttt{Lexis} object \item[\texttt{bootLexis}] bootstrap sample of \emph{persons} (\texttt{lex.id}) in the \texttt{Lexis} object \end{description} \item[Simulate]\ \\ \begin{description} \item[\texttt{simLexis}] simulate a \texttt{Lexis} object from specified transition rate models \item[\texttt{nState}, \texttt{pState}] count state occupancy from a simulated \texttt{Lexis} object \item[\texttt{plot.pState}, \texttt{lines.pState}] plot state occupancy from a \texttt{pState} object \end{description} \item[Stack]\ \\ \begin{description} \item[\texttt{stack.Lexis}] make a stacked object for simultaneous analysis of transitions --- returns a \texttt{stacked.Lexis} object \item[\texttt{subset.stacked.Lexis}] subsets of a \texttt{stacked.Lexis} object \item[\texttt{transform.stacked.Lexis}] transform a \texttt{stacked.Lexis} object \end{description} \item[Interface to other packages]\ \\ \begin{description} \item[\texttt{msdata.Lexis}] interface to \texttt{mstate} package \item[\texttt{etm.Lexis}] interface to \texttt{etm} package \item[\texttt{crr.Lexis}] interface to \texttt{cmprsk} package \end{description} \item[Statistical models] --- these are \emph{not} S3 methods \begin{description} \item[\texttt{glm.Lexis}] fit a \texttt{glm} model using the \texttt{poisreg} family to (hopefully) time split data \item[\texttt{gam.Lexis}] fit a \texttt{gam} model (from the \texttt{mgcv} package) using the \texttt{poisreg} family to (hopefully) time split data \item[\texttt{coxph.Lexis}] fit a Cox model to follow-up in a \texttt{Lexis} object \end{description} \end{description} \renewcommand{\bibname}{References} \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2011a} B~Carstensen and M~Plummer. \newblock Using {L}exis objects for multi-state models in {R}. \newblock {\em Journal of Statistical Software}, 38(6):1--18, 1 2011. %% \bibitem{Iacobelli.2013} %% S~Iacobelli and B~Carstensen. %% \newblock {Multiple time scales in multi-state models}. %% \newblock {\em Stat Med}, 32(30):5315--5327, Dec 2013. \bibitem{Plummer.2011} M~Plummer and B~Carstensen. \newblock Lexis: An {R} class for epidemiological studies with long-term follow-up. \newblock {\em Journal of Statistical Software}, 38(5):1--12, 1 2011. \end{thebibliography} \addcontentsline{toc}{chapter}{\bibname} \end{document} Epi/vignettes/crisk.tex0000644000176200001440000007404014003730256014641 0ustar liggesusers%\VignetteIndexEntry{Parametric competing risks with simulation based confidence intervals} \documentclass[a4paper,dvipsnames,twoside,12pt]{report} % ---------------------------------------------------------------------- % General information for the title page and the page headings \newcommand{\Title}{Parametric competing risks with simulation based confidence intervals} \newcommand{\Tit}{ParCmpRSim} \newcommand{\Version}{Version 3} \newcommand{\Dates}{January 2021} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://bendixcarstensen.com/}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \href{mailto:b@bxc.dk}{\tt b@bxc.dk} \\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./crisk} \chapter{Competing risks in practice} The concept of competing risks is one where persons in a given state, 'alive', say, er subject to a number of different causes of deaths, 'cause1', 'cause2' etc. Causes of death are required to be exhaustive and mutually exclusive. In situations where the causes are not causes of death but other events, it is implicit that we only consider the first occurrence of an event from the state 'alive', and ignore what occurs after. The likelihood for observations from a competing risk scenario is a function of the cause-specific transition rates, and is \emph{product} of the likelihoods that would emerge if we considered each cause the only one. Thus analysis is in principle straight forward; just estimate a model for each of the cause-specific rates. These will together form a complete model for the competing risks problem. If the cause-specific rates are all we want to assess then we will be done. But most often we would like to have estimates of the cumulative risks, that is the probability of dying from a specific cause before a given time as function of time. Each of these are functions of \emph{all} rates. Specifically, if the cause-specific rates are $\lambda_c(t)$, then: \[ R_c(t) = \int_0^t \lambda_c(s) \exp\left(-\int_0^s \sum_j \lambda_j(u) \dif u \right) \dif s \] Even if we from the modeling of the $\lambda$s have standard errors of $\log(\lambda_c)$ the standard errors of $R_c$s will be analytically intractable from these. The only viable way to get confidence intervals for the cumulative risks, $R_c$, is by calculation of the rates $\lambda(t)$ by sampling from the posterior distribution of the parameters in the models for $\log(\lambda(s))$, and computing the integrals numerically for each simulated sample. The simulation approach also allows calculation of confidence intervals for sums of the cumulative risks, $R_1(t)+R_2(t)$, for example, which will be needed if we want to show stacked cumulative risks. Finally, it will also allow calculation of standard errors of sojourn times in each of the states 'alive' and 'cause1', 'cause2'. While the latter two may not be of direct interest, then \texttt{differences} between such sojourn times between different groups can be interpreted as years of life lost to each cause between groups. \section{Example data} As an illustrative data example we use the (fake) diabetes register data; we set up the Lexis object, cut the follow-up time at dates of OAD, resp Ins: \begin{Schunk} \begin{Sinput} > library(Epi) > library(popEpi) > data(DMlate) > Ldm <- Lexis(entry = list( per = dodm, + age = dodm-dobth, + tfd = 0 ), + exit = list( per = dox ), + exit.status = factor( !is.na(dodth), labels = c("DM","Dead") ), + data = DMlate ) \end{Sinput} \begin{Soutput} NOTE: entry.status has been set to "DM" for all. NOTE: Dropping 4 rows with duration of follow up < tol \end{Soutput} \begin{Sinput} > summary(Ldm, t = T) \end{Sinput} \begin{Soutput} Transitions: To From DM Dead Records: Events: Risk time: Persons: DM 7497 2499 9996 2499 54273.27 9996 Timescales: per age tfd "" "" "" \end{Soutput} \begin{Sinput} > Mdm <- mcutLexis( Ldm, + wh = c('dooad','doins'), + new.states = c('OAD','Ins'), + precursor = 'DM', + seq.states = FALSE, + ties = TRUE ) \end{Sinput} \begin{Soutput} NOTE: 15 records with tied events times resolved (adding 0.01 random uniform), so results are only reproducible if the random number seed was set. \end{Soutput} \begin{Sinput} > summary( Mdm ) \end{Sinput} \begin{Soutput} Transitions: To From DM Dead OAD Ins Ins+OAD Records: Events: Risk time: Persons: DM 2830 1056 2957 689 0 7532 4702 22920.32 7532 OAD 0 992 3327 0 1005 5324 1997 22965.25 5324 Ins 0 152 0 462 172 786 324 3883.07 786 Ins+OAD 0 299 0 0 878 1177 299 4504.62 1177 Sum 2830 2499 6284 1151 2055 14819 7322 54273.27 9996 \end{Soutput} \end{Schunk} We initially split the FU before drug inception in intervals of 1/12 year, creating a \texttt{Lexis} object for a competing risks situation with three possible event types: \begin{Schunk} \begin{Sinput} > Sdm <- splitMulti(factorize(subset(Mdm, lex.Cst == "DM")), + tfd = seq(0, 20, 1/12)) \end{Sinput} \begin{Soutput} NOTE: lex.Cst and lex.Xst now have levels: DM Dead OAD Ins \end{Soutput} \end{Schunk} We can illustrate the follow-up in the full data set and in the restricted \begin{Schunk} \begin{Sinput} > boxes(Mdm, boxpos = list(x = c(15, 50, 15, 85, 85), + y = c(85, 50, 15, 85, 15)), + scale.R = 100, + show.BE = TRUE) \end{Sinput} \end{Schunk} \insfig{boxes5}{1.0}{The transitions in the multistate model, where follow-up is extended also after beginning of first drug exposure. Rates in brackets are per 100 PY.}% \begin{Schunk} \begin{Sinput} > boxes( Relevel(Sdm, c(1, 4, 2, 3)), + boxpos = list(x = c(15, 85, 80, 15), + y = c(85, 85, 20, 15)), + scale.R = 100, + show.BE = TRUE ) \end{Sinput} \end{Schunk} \insfig{boxes4}{1.0}{The transitions in the competing risks model, where follow-up is stopped at drug exposure. By that token only the \texttt{DM} state has person-years; a characteristic of a competing risks situation.} \section{Models for rates} Now that we have set up a dataset with three competing events, we can model the cause-specific rates separately by time from diagnosis as the only underlying time scale. Note that we only need to specify the \texttt{to=} argument because there is only one possible \texttt{from} for each \texttt{to} (incidentally the same for all \texttt{to} states, namely \texttt{DM}): \begin{Schunk} \begin{Sinput} > mD <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Dead') \end{Sinput} \begin{Soutput} mgcv::gam Poisson analysis of Lexis object Sdm with log link: Rates for the transition: DM->Dead \end{Soutput} \begin{Sinput} > mO <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'OAD' ) \end{Sinput} \begin{Soutput} mgcv::gam Poisson analysis of Lexis object Sdm with log link: Rates for the transition: DM->OAD \end{Soutput} \begin{Sinput} > mI <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Ins' ) \end{Sinput} \begin{Soutput} mgcv::gam Poisson analysis of Lexis object Sdm with log link: Rates for the transition: DM->Ins \end{Soutput} \end{Schunk} With these models fitted we can compute the rates, cumulative rates and the cumulative risks an sojourn times in states using the usual formulae. First we compute the rates in intervals of length 1/100 years. Note that these models only have time since diagnosis as covariates, so they are the counterpart of Nelson-Aalen estimates, albeit in a biologically more meaningful guise. The points where we compute the predicted rates are midpoints of intervals of length 1/100 year. These points are unrelated to the follow-up intervals in which we split the data---they were 1 month intervals, here we use 1/100 year (about 3.7 days): \begin{Schunk} \begin{Sinput} > int <- 1/100 > nd <- data.frame( tfd = seq(int,10,int)-int/2 ) # not the same as the split, > # and totally unrelated to it > rownames(nd) <- nd$tfd > str(nd) \end{Sinput} \begin{Soutput} 'data.frame': 1000 obs. of 1 variable: $ tfd: num 0.005 0.015 0.025 0.035 0.045 0.055 0.065 0.075 0.085 0.095 ... \end{Soutput} \end{Schunk} With this we can show the rates as a function of the time since diagnosis: \begin{Schunk} \begin{Sinput} > matshade(nd$tfd, cbind(ci.pred(mD, nd), + ci.pred(mI, nd), + ci.pred(mO, nd))*1000, + ylim = c(0.02,500), yaxt = "n", + ylab = "Rates per 1000 PY", + xlab = "Time since DM diagnosis (years)", + col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) > axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), + labels = formatC(ll,digits = 4), las = 1) > axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), + labels = NA, tcl = -0.3) > text(0, 0.5*0.6^c(1,2,0), + c("Dead","Ins","OAD"), + col = c("black","red","blue"), adj = 0) \end{Sinput} \end{Schunk} \insfig{rates}{0.8}{Estimated rates from the \textrm{\tt DM} state, estimates are from \textrm{\tt gam} models fitted to data split in 1 month intervals (1/12 year, that is). Rates of \textrm{\tt OAD} is in the vicinity of 0.1/year, and mortality about half of this. Rates of insulin start among persons on no other drug are beginning high decreasing to about 4 year and then have a peak at 8 years.} Note that the graph in figure \ref{fig:rates} is not normally shown in analyses of competing risks; the competing cause-specific rates are hardly ever shown. I suspect that this is frequently because they are often modeled by a Cox model and so are buried in the model. \section{Cumulative rates and risks} For the calculation of the cumulative rates and state probabilities, we need just the rates without CIs: \begin{Schunk} \begin{Sinput} > # rates at midpoints > lD <- ci.pred( mD, nd )[,1] > lI <- ci.pred( mI, nd )[,1] > lO <- ci.pred( mO, nd )[,1] > # cumulative rates and survival fuction at right border of the intervals > LD <- cumsum(lD) * int > LI <- cumsum(lI) * int > LO <- cumsum(lO) * int > Sv <- exp( -LD - LI - LO ) > # but when integrating to get the cumulative risks we use the average > # of the survival function at the two endpoints (adding 1 as the first) > mp <- function(x) x - diff(c(1, x)) / 2 > rD <- cumsum(lD * mp(Sv)) * int > rI <- cumsum(lI * mp(Sv)) * int > rO <- cumsum(lO * mp(Sv)) * int \end{Sinput} \end{Schunk} Now we have the cumulative risks for the three causes and the survival, computed at the end of each of the intervals, at any time point the sum of the 3 cumulative risks and the survival should be 1: \begin{Schunk} \begin{Sinput} > summary(rD + rI +rO + Sv) \end{Sinput} \begin{Soutput} Min. 1st Qu. Median Mean 3rd Qu. Max. 1 1 1 1 1 1 \end{Soutput} \begin{Sinput} > oo <- options(digits = 20) > cbind(summary(Sv + rD + rI + rO)) \end{Sinput} \begin{Soutput} [,1] Min. 1.0000000534682520481 1st Qu. 1.0000010095665299303 Median 1.0000010154411886898 Mean 1.0000009973166215094 3rd Qu. 1.0000010316432050850 Max. 1.0000010385709348082 \end{Soutput} \begin{Sinput} > options(oo) \end{Sinput} \end{Schunk} We can then plot the 3 cumulative risk functions together: \begin{Schunk} \begin{Sinput} > zz <- mat2pol(cbind(rD,rI,rO,Sv), x = nd$tfd, + xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, + xlab = "Time since DM diagnosis (years)", + ylab = "Probability", + col = c("black","red","blue","forestgreen") ) > mm <- t(apply(zz,1,mid<-function(x) x[-1]-diff(x)/2)) > text( 9, mm[900,], c("Dead","Ins","OAD","DM"), col = "white" ) > box(col = "white",lwd = 3) \end{Sinput} \end{Schunk} \insfig{stack}{1.0}{Probabilities of being in the 4 different states as a function of time since diagnosis. Note that \texttt{OAD} means that OAD was initiated first, and similarly for \texttt{Ins}. We are not concerned about what occur after these events. \texttt{Dead} means dead without being on any drug.} \chapter{Confidence intervals} We want confidence intervals for each of the 4 cumulative risks, but we may also be interested in confidence intervals for \emph{sums} of any subset of the cumulative risks, corresponding to the borders between the colours in figure \ref{fig:stack}. If we only had two competing risks (and hence three states) the latter would not be an issue, because the sum of any two cumulative risks will be 1 minus the cumulative risk of the remainder, so we could get away with the confidence intervals for the single cumulative risks. This is the reason we have chosen an example with 3 competing risks and not just 2; we then have 4 probabilities to sum in different order. A short look at the formulae for cumulative risks will reveal that analytic approximation to the standard error of these probabilities (or some transform of them) is not really a viable way to go. Particularly if we also want confidence intervals of sums of the state probabilities as those shown in stacked plots. So in practice, if we want confidence intervals not only for the state probabilities, but also for any sum of subsets of them we would want a large number of simulated copies of the cumulative risks, each copy of the same structure as the one we just extracted from the model. Moreover, we might also want confidence intervals for sojourn times (i.e. time spent) in each state up to a given time, which would come almost for free from the simulation approach. This means that we must devise a method to make a prediction not from the estimated model, but where we instead of the model parameters use a sample from the posterior distribution of the estimated parameters. Here the posterior distribution of the parameters is taken to be the multivariate normal distribution with mean equal to the vector of parameter estimates and variance-covariance matrix equal to the estimated variance-covariance matrix of the parameters. Precisely this approach is implemented in \texttt{ci.lin} via the \texttt{sample} argument; we can get a predicted value from a given prediction data frame just as from \texttt{ci.pred} resp. \texttt{ci.exp}; here is an indication of different ways of getting predicted values of the cause-specific rates: \begin{Schunk} \begin{Sinput} > head(cbind(ci.pred(mI,nd), ci.exp(mI,nd) )) \end{Sinput} \begin{Soutput} Estimate 2.5% 97.5% exp(Est.) 2.5% 97.5% 0.005 0.3355221 0.3050046 0.3690931 0.3355221 0.3050046 0.3690931 0.015 0.3240042 0.2950104 0.3558474 0.3240042 0.2950104 0.3558474 0.025 0.3128817 0.2853291 0.3430948 0.3128817 0.2853291 0.3430948 0.035 0.3021411 0.2759506 0.3308172 0.3021411 0.2759506 0.3308172 0.045 0.2917693 0.2668654 0.3189974 0.2917693 0.2668654 0.3189974 0.055 0.2817538 0.2580639 0.3076184 0.2817538 0.2580639 0.3076184 \end{Soutput} \begin{Sinput} > head(cbind(ci.pred(mI,nd), exp(ci.lin(mI,nd)[,c(1,5:6)]))) \end{Sinput} \begin{Soutput} Estimate 2.5% 97.5% Estimate 2.5% 97.5% 0.005 0.3355221 0.3050046 0.3690931 0.3355221 0.3050046 0.3690931 0.015 0.3240042 0.2950104 0.3558474 0.3240042 0.2950104 0.3558474 0.025 0.3128817 0.2853291 0.3430948 0.3128817 0.2853291 0.3430948 0.035 0.3021411 0.2759506 0.3308172 0.3021411 0.2759506 0.3308172 0.045 0.2917693 0.2668654 0.3189974 0.2917693 0.2668654 0.3189974 0.055 0.2817538 0.2580639 0.3076184 0.2817538 0.2580639 0.3076184 \end{Soutput} \end{Schunk} Here is an illustration of the prediction with model based confidence intervals for the rates, alongside predictions based on samples from the posterior distribution of the parameters in the model: \begin{Schunk} \begin{Sinput} > str(ci.lin(mI, nd, sample = 4)) \end{Sinput} \begin{Soutput} num [1:1000, 1:4] -1.14 -1.18 -1.21 -1.24 -1.28 ... - attr(*, "dimnames")=List of 2 ..$ : chr [1:1000] "0.005" "0.015" "0.025" "0.035" ... ..$ : NULL \end{Soutput} \begin{Sinput} > head(cbind(ci.pred(mI,nd), exp(ci.lin(mI, nd, sample = 4)))) \end{Sinput} \begin{Soutput} Estimate 2.5% 97.5% 0.005 0.3355221 0.3050046 0.3690931 0.3767340 0.3368546 0.3618715 0.3346903 0.015 0.3240042 0.2950104 0.3558474 0.3633041 0.3245842 0.3484644 0.3233786 0.025 0.3128817 0.2853291 0.3430948 0.3503529 0.3127608 0.3355540 0.3124492 0.035 0.3021411 0.2759506 0.3308172 0.3378636 0.3013682 0.3231222 0.3018893 0.045 0.2917693 0.2668654 0.3189974 0.3258196 0.2903907 0.3111510 0.2916864 0.055 0.2817538 0.2580639 0.3076184 0.3142052 0.2798133 0.2996236 0.2818285 \end{Soutput} \end{Schunk} The simulation is taking place at the parameter level and the transformation to survival and cumulative risks is simply a function applied to every simulated set of rates. \section{Joint models for several transitions} Note that we are implicitly assuming that the transitions are being modeled separately. If some transitions are modeled jointly---for example assuming that the rates of \texttt{OAD} and \texttt{Ins} are proportional as functions of time since entry, using one model---we are in trouble, because we then need one sample from the posterior generating two predictions, one for each of the transitions modeled together. Moreover the model will have to be a model fitted to a \texttt{stack.Lexis} object, so a little more complicated to work with. A simple way to program would be to reset the seed to the same value before simulating with different values of \texttt{nd}, this is what is intended to be implemented, but is not yet. This is mainly the complication of having different prediction frames for different risks in this case. Finally, it is not a very urgent need, since the situation where you want common parameters for different rates out of a common state is quite rare. \section{Simulation based confidence intervals} These ideas have been implemented in the function \texttt{ci.Crisk} (\texttt{c}onfidence \texttt{i}ntervals for \texttt{C}umulative \texttt{risk}s) in the \texttt{Epi} package: We can now run the function using the model objects for the three competing events, using a common prediction data frame, \texttt{nd} for the rates: \begin{Schunk} \begin{Sinput} > system.time( + res <- ci.Crisk(list(OAD = mO, + Ins = mI, + Dead = mD), + nd = data.frame(tfd = (1:1000-0.5)/100), + nB = 1000, + perm = 4:1)) \end{Sinput} \begin{Soutput} Times are assumed to be in the column tfd at equal distances of 0.01 user system elapsed 12.326 0.669 12.477 \end{Soutput} \begin{Sinput} > str(res) \end{Sinput} \begin{Soutput} List of 3 $ Crisk: num [1:1001, 1:4, 1:3] 1 0.991 0.983 0.975 0.967 ... ..- attr(*, "dimnames")=List of 3 .. ..$ time : chr [1:1001] "0" "1" "2" "3" ... .. ..$ cause: chr [1:4] "Surv" "OAD" "Ins" "Dead" .. ..$ : chr [1:3] "50%" "2.5%" "97.5%" $ Srisk: num [1:1001, 1:3, 1:3] 0 0.000696 0.001385 0.002065 0.002738 ... ..- attr(*, "dimnames")=List of 3 .. ..$ time : chr [1:1001] "0" "1" "2" "3" ... .. ..$ cause: chr [1:3] "Dead" "Dead+Ins" "Dead+Ins+OAD" .. ..$ : chr [1:3] "50%" "2.5%" "97.5%" $ Stime: num [1:1000, 1:4, 1:3] 0.00996 0.01983 0.02962 0.03933 0.04896 ... ..- attr(*, "dimnames")=List of 3 .. ..$ : chr [1:1000] "1" "2" "3" "4" ... .. ..$ cause: chr [1:4] "Surv" "OAD" "Ins" "Dead" .. ..$ : chr [1:3] "50%" "2.5%" "97.5%" - attr(*, "int")= num 0.01 \end{Soutput} \end{Schunk} As we see, the returned object (\texttt{res}) is a list of length 3, each element a 3-way arrays. The three components of \texttt{res} represent \begin{itemize} \item \texttt{Crisk} \texttt{C}umulative \texttt{risk}s for each state \item \texttt{Srisk} \texttt{S}tacked cumulative \texttt{risk}s across states \item \texttt{Stime} \texttt{S}ojourn \texttt{time} for each state, truncated at each point of the time dimension, hence there is no 0 in the time dimension \end{itemize} The first dimension of each is time as interval \emph{number}, starting with 0, and corresponding to endpoints of intervals of length \texttt{int}. The second dimension is states (or combinations thereof). The last dimension of the arrays is the type of statistic; \texttt{50\%} the median of the samples, and the bootstrap intervals as indicated. The argument \texttt{perm} governs in which order the state probabilities are stacked in the \texttt{Srisk} element of the returned list, the default is the states in the order given in the list of models in the first argument to \texttt{ci.Crisk} followed by the survival. If we want the bootstrap samples to make other calculations we can ask the function to return the bootstrap samples of the rates by using the argument \texttt{sim.res='rates'} (defaults to \texttt{'none'}): \begin{Schunk} \begin{Sinput} > system.time( + rsm <- ci.Crisk(list(OAD = mO, + Ins = mI, + Dead = mD), + nd = data.frame(tfd = (1:1000-0.5)/100), + nB = 2000, + sim.res = 'rates')) \end{Sinput} \begin{Soutput} Times are assumed to be in the column tfd at equal distances of 0.01 user system elapsed 0.461 0.500 0.320 \end{Soutput} \begin{Sinput} > str(rsm) \end{Sinput} \begin{Soutput} num [1:1000, 1:3, 1:2000] 0.453 0.449 0.444 0.44 0.436 ... - attr(*, "dimnames")=List of 3 ..$ time: chr [1:1000] "1" "2" "3" "4" ... ..$ mod : chr [1:3] "OAD" "Ins" "Dead" ..$ sim : chr [1:2000] "1" "2" "3" "4" ... - attr(*, "int")= num 0.01 \end{Soutput} \end{Schunk} This is bootstrap samples of the rates evaluated at the 1000 midpoints of intervals. Alternatively we can get the bootstrap samples of the cumulative risks by setting \texttt{sim.res='crisk'}: \begin{Schunk} \begin{Sinput} > system.time( + csm <- ci.Crisk(list(OAD = mO, + Ins = mI, + Dead = mD), + nd = data.frame(tfd = (1:1000-0.5)/100), + nB = 2000, + sim.res = 'crisk')) \end{Sinput} \begin{Soutput} Times are assumed to be in the column tfd at equal distances of 0.01 user system elapsed 6.192 0.554 6.109 \end{Soutput} \begin{Sinput} > str(csm) \end{Sinput} \begin{Soutput} num [1:1001, 1:4, 1:2000] 1 0.991 0.982 0.974 0.966 ... - attr(*, "dimnames")=List of 3 ..$ time : chr [1:1001] "0" "1" "2" "3" ... ..$ cause: chr [1:4] "Surv" "OAD" "Ins" "Dead" ..$ sim : chr [1:2000] "1" "2" "3" "4" ... - attr(*, "int")= num 0.01 \end{Soutput} \end{Schunk} This is the cumulative risks evaluated at the 1001 endpoints of the 1000 intervals, and also includes the survival probability in the first slot of the \nth{1} dimension of \texttt{rsm}. In both cases, the first slot of the \nth{3} dimension, \texttt{sim}, is the rates, resp. cumulative risks from the model. \section{Simulated confidence intervals for rates} In figure \ref{fig:rates} we showed the rates with confidence intervals from the model. But in \texttt{rsm} we have 2000 (parametric) bootstrap samples of the occurrence rates, so we can derive the bootstrap medians and the bootstrap c.i.---remember that the first slice of the \nth{3} dimension is the model estimates that should not enter the calculations. We use the function \texttt{mnqt} to compute the model estimate and the mean, median and quantiles of the simulated values. \begin{Schunk} \begin{Sinput} > Brates <- aperm(apply(rsm, 1:2, Epi:::mnqt), c(2,3,1)) > str(Brates) \end{Sinput} \begin{Soutput} num [1:1000, 1:3, 1:3] 0.458 0.454 0.449 0.445 0.441 ... - attr(*, "dimnames")=List of 3 ..$ time: chr [1:1000] "1" "2" "3" "4" ... ..$ mod : chr [1:3] "OAD" "Ins" "Dead" ..$ : chr [1:3] "50%" "2.5%" "97.5%" \end{Soutput} \end{Schunk} Then we can plot the bootstrap estimates on top of the estimates based on the normal approximation to distribution of the parameters. They are not surprisingly in close agreement since they are both based on an assumption of normality of the parameters on the log-rate scale: \begin{Schunk} \begin{Sinput} > matshade(nd$tfd, cbind(ci.pred(mD, nd), + ci.pred(mI, nd), + ci.pred(mO, nd))*1000, + ylim = c(0.1,500), yaxt = "n", + ylab = "Rates per 1000 PY", + xlab = "Time since DM diagnosis (years)", + col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) > matlines(nd$tfd, cbind(Brates[,"Dead",], + Brates[,"Ins" ,], + Brates[,"OAD" ,])*1000, + col = c("white","black","black"), lty = 3, lwd=c(3,1,1)) > axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), + labels = formatC(ll,digits = 4), las = 1) > axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), + labels = NA, tcl = -0.3) > text(0, 0.5*0.6^c(1,2,0), + c("Dead","Ins","OAD"), + col = c("black","red","blue"), adj = 0) \end{Sinput} \end{Schunk} \insfig{rates-ci}{0.8}{Estimated rates from the \textrm{\tt DM} state, estimates are from \textrm{\tt gam} models fitted to data split in 1 month intervals (1/12 year, that is). The white dotted curves are the bootstrap medians, black dotted curves are the bootstrap 95\% c.i.s.} \section{Confidence intervals for cumulative risks} In the \texttt{Crisk} component of \texttt{res} we have the cumulative risks as functions of of time, with bootstrap confidence intervals, so we can immediately plot the three cumulative risks: \begin{Schunk} \begin{Sinput} > matshade(c(0,nd$tfd+1/200), + cbind(res$Crisk[,"Dead",], + res$Crisk[,"Ins" ,], + res$Crisk[,"OAD" ,]), plot = TRUE, + xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, + xlab = "Time since DM diagnosis (years)", + ylab = "Cumulative probability", + col = c("black","red","blue")) > text(8, 0.3 + c(1,0,2)/25, + c("Dead","Ins","OAD"), + col = c("black","red","blue"), adj = 0) \end{Sinput} \end{Schunk} \insfig{crates}{0.9}{Cumulative risks for the three types of events, with 95\% bootstrap-based confidence intervals as shades.} \section{Confidence intervals for stacked cumulative risks} Unlike the single cumulative risks where we have a confidence interval for each cumulative risk, when we want to show the stacked probabilities we must deliver the confidence intervals for the relevant sums, they are in the \texttt{Srisk} component of \texttt{res}. \begin{Schunk} \begin{Sinput} > str(res$Crisk) \end{Sinput} \begin{Soutput} num [1:1001, 1:4, 1:3] 1 0.991 0.983 0.975 0.967 ... - attr(*, "dimnames")=List of 3 ..$ time : chr [1:1001] "0" "1" "2" "3" ... ..$ cause: chr [1:4] "Surv" "OAD" "Ins" "Dead" ..$ : chr [1:3] "50%" "2.5%" "97.5%" \end{Soutput} \begin{Sinput} > str(res$Srisk) \end{Sinput} \begin{Soutput} num [1:1001, 1:3, 1:3] 0 0.000696 0.001385 0.002065 0.002738 ... - attr(*, "dimnames")=List of 3 ..$ time : chr [1:1001] "0" "1" "2" "3" ... ..$ cause: chr [1:3] "Dead" "Dead+Ins" "Dead+Ins+OAD" ..$ : chr [1:3] "50%" "2.5%" "97.5%" \end{Soutput} \end{Schunk} But we start out by plotting the stacked probabilities using \texttt{mat2pol} (\texttt{mat}rix to \texttt{pol}ygon), the input required is the single components from the \texttt{Crisk} component. Then we can add the confidence intervals \begin{Schunk} \begin{Sinput} > zz <- mat2pol(res$Crisk[,c("Dead","Ins","OAD","Surv"),1], + x = as.numeric(dimnames(res$Crisk)[[1]])/100, + xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, + xlab = "Time since DM diagnosis (years)", + ylab = "Probability", + col = c("black","red","blue","forestgreen") ) > mm <- t(apply(zz, 1, mid<-function(x) x[-1] - diff(x) / 2)) > text( 9, mm[900,], c("Dead","Ins","OAD","DM"), col = "white" ) > matshade(as.numeric(dimnames(res$Srisk)[[1]])/100, + cbind(res$Srisk[,1,], + res$Srisk[,2,], + res$Srisk[,3,]), + col = 'transparent', col.shade = "white", alpha = 0.3) \end{Sinput} \end{Schunk} \insfig{stack-ci}{1.0}{Probabilities of being in the 4 different states as a function of time since diagnosis. Note that \texttt{OAD} means that OAD was initiated first, and similarly for \texttt{Ins}. We are not concerned about what occurs \emph{after} these events. \texttt{Dead} means dead without being on any drug.\newline The white shadings around the borders between coloured areas represent the 95\% confidence intervals for the (sum of) probabilities.} \section{Sojourn times} From the \texttt{Stime} component of the \texttt{res} we can derive the estimated time spent in each state during the first, say, 5 or 10 years: \begin{Schunk} \begin{Sinput} > str(res$Stime) \end{Sinput} \begin{Soutput} num [1:1000, 1:4, 1:3] 0.00996 0.01983 0.02962 0.03933 0.04896 ... - attr(*, "dimnames")=List of 3 ..$ : chr [1:1000] "1" "2" "3" "4" ... ..$ cause: chr [1:4] "Surv" "OAD" "Ins" "Dead" ..$ : chr [1:3] "50%" "2.5%" "97.5%" \end{Soutput} \end{Schunk} We extract the 5 and 10 years components: \begin{Schunk} \begin{Sinput} > s510 <- res$Stime[1:2*500,,] > dimnames(s510)[[1]] <- c(" 5 yr","10 yr") > round(ftable(s510, row.vars=1:2), 2) \end{Sinput} \begin{Soutput} 50% 2.5% 97.5% cause 5 yr Surv 2.77 2.72 2.82 OAD 1.44 1.40 1.49 Ins 0.40 0.37 0.43 Dead 0.39 0.36 0.42 10 yr Surv 4.31 4.22 4.41 OAD 3.64 3.54 3.75 Ins 0.84 0.78 0.90 Dead 1.20 1.14 1.27 \end{Soutput} \end{Schunk} So we see that the expected life lived without pharmaceutical treatment during the first 10 years after DM diagnosis is 4.31 years with a 95\% CI of (4.21;4.42), and during the first 5 years 2.77 (2.72;2.82). The quantity \texttt{OAD} is the years lived without medication that has been terminated by OAD inception, and similarly for \texttt{Ins} and \texttt{Dead}. \end{document} Epi/vignettes/simLexis.rnw0000644000176200001440000014376714003562304015343 0ustar liggesusers%\VignetteIndexEntry{Simulation of multistate models with multiple timescales: simLexis} \SweaveOpts{results=verbatim,keep.source=TRUE,include=FALSE,eps=FALSE} \documentclass[a4paper,dvipsnames,twoside,12pt]{report} \newcommand{\Title}{Simulation of\\ multistate models with\\ multiple timescales:\\ \texttt{simLexis} in the \texttt{Epi} package} \newcommand{\Tit}{Multistate models with multiple timescales} \newcommand{\Version}{Version 2.5} \newcommand{\Dates}{\today} \newcommand{\Where}{SDCC} \newcommand{\Homepage}{\url{http://BendixCarstensen.com/Epi/simLexis.pdf}} \newcommand{\Faculty}{\begin{tabular}{rl} Bendix Carstensen & Steno Diabetes Center Copenhagen, Gentofte, Denmark\\ & {\small \& Department of Biostatistics, University of Copenhagen} \\ & \texttt{b@bxc.dk}\\ & \url{http://BendixCarstensen.com} \\[1em] \end{tabular}} \input{topreport} \renewcommand{\rwpre}{./simLexis} <>= options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) @ % \chapter{Using \texttt{simLexis}} \section{Introduction} This vignette explains the machinery behind simulation of life histories through multistate models implemented in \texttt{simLexis}. In \texttt{simLexis} transition rates are allowed to depend on multiple time scales, including timescales defined as time since entry to a particular state (duration). This therefore also covers the case where time \emph{at} entry into a state is an explanatory variable for the rates, since time at entry is merely time minus duration. Thus, the set-up here goes beyond Markov- and semi-Markov-models, and brings simulation based estimation of state-occupancy probabilities into the realm of realistic multistate models. The basic idea is to simulate a new \texttt{Lexis} object \cite{Plummer.2011,Carstensen.2011a} as defined in the \texttt{Epi} package for \R, based on 1) a multistate model defined by its states and the transition rates between them and 2) an initial population of individuals. Thus the output will be a \texttt{Lexis} object describing the transitions of a predefined set of persons through a multistate model. Therefore, if persons are defined to be identical at start, then calculation of the probability of being in a particular state at a given time boils down to a simple enumeration of the fraction of the persons in the particular state at the given time. Bar of course the (binomial) simulation error, but this can be brought down by simulation a sufficiently large number of persons. An observed \texttt{Lexis} object with follow-up of persons through a number of states will normally be the basis for estimation of transition rates between states, and thus will contain all information about covariates determining the occurrence rates, in particular the \emph{timescales} \cite{Iacobelli.2013}. Hence, the natural input to simulation from an estimated multistate model will typically be an object of the same structure as the originally observed. Since transitions and times are what is simulated, any values of \texttt{lex.Xst} and \texttt{lex.dur} in the input object will of course be ignored. This first chapter of this vignette shows by an example how to use the function \texttt{simLexis} and display the results. The second chapter discusses in more detail how the simulation machinery is implemented and is not needed for the practical use of \texttt{simLexis}. \section{\texttt{simLexis} in practice} This section is largely a commented walk-trough of the example from the help-page of \texttt{simLexis}, with a larger number of simulated persons in order to minimize the pure simulation variation. When we want to simulate transition times through a multistate model where transition rates may depend on time since entry to the current or a previous state, it is essential that we have a machinery to keep track of the transition time on \emph{all} time scales, as well as a mechanism that can initiate a new time scale to 0 when a transition occurs to a state where we shall use time since entry as determinant of exit rates from that state. This is provided by \texttt{simLexis}. \subsection{Input for the simulation} Input for simulation of a single trajectory through a multistate model requires a representation of the \emph{current status} of a person; the starting conditions. The object that we supply to the simulation function must contain information about all covariates and all timescales upon which transitions depend, and in particular which one(s) of the timescales that are defined as time since entry into a particular state. Hence, starting conditions should be represented as a \texttt{Lexis} object (where \texttt{lex.dur} and \texttt{lex.Xst} are ignored, since there is no follow-up yet), where the time scale information is in the attributes \texttt{time.scales} and \texttt{time.since} respectively. Note that \texttt{time.scales} attribute is a vector of names of variables in the \texttt{Lexis} object, so all of these variables should be present even if they are not used in the models for the transitions, and they should be set to 0; if they are not in the initial dataset, \texttt{simLexis} will crash, if they are \texttt{NA}, the \texttt{simLexis} will produce an object with 0 rows. Thus there are two main arguments to a function to simulate from a multistate model: \begin{enumerate} \item A \texttt{Lexis} object representing the initial states and covariates of the population to be simulated. This has to have the same structure as the original \texttt{Lexis} object representing the multistate model from which transition rates in the model were estimated. As noted above, the values for \texttt{lex.Xst} and \texttt{lex.dur} are not required (since these are the quantities that will be simulated). \item A transition object, representing the transition intensities between states, which should be a list of lists of intensity representations. As an intensity representation we mean a function that for a given \texttt{Lexis} object can be used to produce estimates of the transition intensities at a set of supplied time points. The names of the elements of the transition object (which are lists) will be names of the \emph{transient} states, that is the states \emph{from} which a transition can occur. The names of the elements of each of these lists are the names of states \emph{to} which transitions can occur (which may be either transient or absorbing states). Hence, if the transition object is called \texttt{Tr} then \verb+TR$A$B+ (or \verb+Tr[["A"]][["B"]]+) will represent the transition intensity from state \texttt{A} to the state \texttt{B}. The entries in the transition object can be either \texttt{glm} objects (either with \texttt{poisson} or \texttt{poisreg} family), representing Poisson models for the transitions, \texttt{coxph} objects representing an intensity model along one time scale, or simply a function that takes a \texttt{Lexis} object as input and returns an estimated intensity for each row. \end{enumerate} In addition to these two input items, there will be a couple of tuning parameters. The output of the function will simply be a \texttt{Lexis} object with simulated transitions between states. This will be the basis for deriving sensible statistics from the \texttt{Lexis} object --- see next section. \section{Setting up a \texttt{Lexis} object} As an example we will use the \texttt{DMlate} dataset from the \texttt{Epi} package; it is a dataset simulated to resemble a random sample of 10,000 patients from the Danish National Diabetes Register. We start by loading the \texttt{Epi} package: <>= options( width=90 ) library( Epi ) print( sessionInfo(), l=F ) @ % First we load the diabetes data and set up a simple illness-death model: <>= data(DMlate) dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) @ % This is just data for a simple survival model with states \texttt{DM} and \texttt{Dead}. Now we cut the follow-up at insulin start, which for the majority of patients (T2D) is a clinical indicator of deterioration of disease regulation. We therefore also introduce a new timescale, and split the non-precursor states, so that we can address the question of ever having been on insulin: <>= dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins", new.scale = "t.Ins", split.states = TRUE ) summary( dmi, timeScales=T ) @ % $ Note that we show the time scales in the \texttt{Lexis} object, and that it is indicated that the time scale \texttt{t.Ins} is defined as time since entry into stat state \texttt{Ins.} We can show how many person-years we have and show the number of transitions and transition rates (per 1000), using the \texttt{boxes.Lexis} function to display the states and the number of transitions between them: <>= boxes( dmi, boxpos = list(x=c(20,20,80,80), y=c(80,20,80,20)), scale.R = 1000, show.BE = TRUE ) @ % \insfig{boxes}{0.8}{Data overview for the \textrm{\tt dmi} dataset. Numbers in the boxes are person-years and the number of persons who begin, resp. end their follow-up in each state, and numbers on the arrows are no. of transitions and rates (transition intensities) per 1000 PY.} \section{Analysis of rates} In the \texttt{Lexis} object (which is just a data frame) each person is represented by one record for each transient state occupied, thus in this case either 1 or 2 records; those who have a recorded time both without and with insulin have two records. In order to be able to fit Poisson models with occurrence rates varying by the different time-scales, we split the follow-up in 3-month intervals for modeling: <>= Si <- splitLexis( dmi, seq(0,20,1/4), "DMdur" ) summary( Si ) print( subset( Si, lex.id==97 )[,1:10], digits=6 ) @ % Note that when we split the follow-up, each person's follow up now consists of many records, each with the \emph{current} values of the timescales at the start of the interval represented by the record. In the modeling we shall assume that the rates are constant within each 6-month interval, but the \emph{size} of these rates we model as smooth functions of the time scales (that is the values at the beginning of each interval). The approach often used in epidemiology where one parameter is attached to each interval of time (or age) is not feasible when more than one time scale is used, because intervals are not classified the same way on all timescales. We shall use natural splines (restricted cubic splines) for the analysis of rates, and hence we must allocate knots for the splines. This is done for each of the time-scales, and separately for the transition out of states \texttt{DM} and \texttt{Ins}. For age, we place the knots so that the number of events is the same between each pair of knots, but only half of this beyond each of the boundary knots, whereas for the timescales \texttt{DMdur} and \texttt{tIns} where we have observation from a well-defined 0, we put knots at 0 and place the remaining knots so that the number of events is the same between each pair of knots as well as outside the boundary knots. <>= nk <- 5 ( ai.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( ad.kn <- with( subset(Si,lex.Xst=="Dead"), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( di.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( dd.kn <- with( subset(Si,lex.Xst=="Dead"), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( ti.kn <- with( subset(Si,lex.Xst=="Dead(Ins)"), c(0,quantile( t.Ins+lex.dur, probs=(1:(nk-1))/nk ) )) ) @ % Note that when we tease out the event records for transition to \emph{transient} states (in this case \texttt{Ins}, that is \verb|lex.Xst=="Ins"|), we should add \verb|lex.Cst!=lex.Xst|, to include only transition records and avoiding including records of sojourn time in the transient state. We then fit Poisson models to transition rates, using the wrapper \texttt{Ns} from the \texttt{Epi} package to simplify the specification of the rates: <>= library( splines ) DM.Ins <- glm( (lex.Xst=="Ins") ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="DM") ) ci.exp( DM.Ins ) class( DM.Ins ) @ % We can also fit this model with a slightly simpler syntax using the \texttt{glm.Lexis} function: <<>>= DM.Ins <- glm.Lexis( Si, from = "DM", to = "Ins", formula = ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex ) ci.exp( DM.Ins ) class( DM.Ins ) @ % So we have a slightly simpler syntax, and we get an informative message of which transition(s) we are modeling. However we do not have \texttt{update} method for these objects. <<>>= DM.Dead <- glm.Lexis( Si, from = "DM", to = "Dead", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + I(Per-2000) + sex ) Ins.Dead <- glm.Lexis( Si, from = "Ins", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + Ns( t.Ins, knots=ti.kn ) + I(Per-2000) + sex ) @ % Note the similarity of the code used to fit the three models, is is mainly redefining the response variable (\texttt{to} state) and the subset of the data used (\texttt{from} state). Also note that the last model need no specification of \texttt{to}, the default is to model all transitions from the \texttt{from} state, and his case there is only one. \section{The mortality rates} This section discusses in some detail how to extract ad display the mortality rates from the models fitted. But it is not necessary for understanding how to use \texttt{simLexis} in practice. \subsection{Proportionality of mortality rates} Note that we have fitted separate models for the three transitions, there is no assumption of proportionality between the mortality rates from \texttt{DM} and \texttt{Ins}. However, there is nothing that prevents us from testing this assumption; we can just fit a model for the mortality rates in the entire data frame \texttt{Si}, and compare the deviance from this with the sum of the deviances from the separate models using the \texttt{glm.Lexis} function: <>= All.Dead <- glm.Lexis( Si, to = c("Dead(Ins)","Dead"), formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + lex.Cst + I(Per-2000) + sex ) round( ci.exp( All.Dead ), 3 ) @ % Incidentally we could have dispensed with the \texttt{to=} argument too, because the default is to take \texttt{to} to be all absorbing states in the model. From the parameter values we would in a simple setting just claim that start of insulin-treatment was associated with a slightly more than doubling of mortality. The model \texttt{All.dead} assumes that the age- and DM-duration effects on mortality in the \texttt{DM} and \texttt{Ins} states are the same, and moreover that there is no effect of insulin duration, but merely a mortality that is larger by a multiplicative constant not depending on insulin duration. The model \texttt{DM.Dead} has 8 parameters to describe the dependency on age and DM duration, the model \texttt{Ins.Dead} has 12 for the same plus the insulin duration (a natural spline with $k$ knots gives $k-1$ parameters, and we chose $k=5$ above). We can compare the fit of the simple proportional hazards model with the fit of the separate models for the two mortality rates, by adding up the deviances and d.f. from these: <>= what <- c("null.deviance","df.null","deviance","df.residual") ( rD <- unlist( DM.Dead[what] ) ) ( rI <- unlist( Ins.Dead[what] ) ) ( rA <- unlist( All.Dead[what] ) ) round( c( dd <- rA-(rI+rD), "pVal"=1-pchisq(dd[3],dd[4]+1) ), 3 ) @ % Thus we see there is a substantial non-proportionality of mortality rates from the two states; but a test provides no clue whatsoever to the particular \emph{shape} of the non-proportionality. To this end, we shall explore the predicted mortalities under the two models quantitatively in more detail. Note that the reason that there is a difference in the null deviances (and a difference of 1 in the null d.f.) is that the null deviance of \texttt{All.Dead} refer to a model with a single intercept, that is a model with constant and \emph{identical} mortality rates from the states \texttt{DM} and \texttt{Ins}, whereas the null models for \texttt{DM.Dead} and \texttt{Ins.Dead} have constant but \emph{different} mortality rates from the states \texttt{DM} and \texttt{Ins}. This is however irrelevant for the comparison of the \emph{residual} deviances. \subsection{How the mortality rates look} If we want to see how the mortality rates are modelled in \texttt{DM.Dead} and \texttt{Ins.Dead} in relation to \texttt{All.Dead}, we make a prediction of rates for say men diagnosed in different ages and going on insulin at different times after this. So we consider men diagnosed in ages 40, 50, 60 and 70, and who either never enter insulin treatment or do it 0, 2 or 5 years after diagnosis of DM. To this end we create a prediction data frame where we have observation times from diagnosis and 12 years on (longer would not make sense as this is the extent of the data). But we start by setting up an array to hold the predicted mortality rates, classified by diabetes duration, age at diabetes onset, time of insulin onset, and of course type of model. What we want to do is to plot the age-specific mortality rates for persons not on insulin, and for persons starting insulin at different times after DM. The mortality curves start at the age where the person gets diabetes and continues 12 years; for persons on insulin they start at the age when they initiate insulin. <>= pr.rates <- NArray( list( DMdur = seq(0,12,0.1), DMage = 4:7*10, r.Ins = c(NA,0,2,5), model = c("DM/Ins","All"), what = c("rate","lo","hi") ) ) str( pr.rates ) @ % For convenience the \texttt{Epi} package contains a function that computes predicted (log-)rates with c.i. --- it is merely a wrapper for \texttt{predict.glm}. So we set up the prediction data frame and modify it in loops over ages at onset and insulin onset in order to collect the predicted rates in different scenarios: <>= nd <- data.frame( DMdur = as.numeric( dimnames(pr.rates)[[1]] ), lex.Cst = factor( 1, levels=1:4, labels=levels(Si$lex.Cst) ), sex = factor( 1, levels=1:2, labels=c("M","F")) ) @ % $ Note that we did \emph{not} insert \texttt{lex.dur} as covariate in the prediction frame. This would be required if we used the \texttt{poisson} family with the \texttt{glm}, but the wrapper \texttt{glm.Lexis} uses the \texttt{poisreg} family, so \texttt{lex.dur} is ignored and predictions always comes in the (inverse) units of \texttt{lex.dur}. So we get rates per 1 person-year in the predictions. <>= for( ia in dimnames(pr.rates)[[2]] ) { dnew <- transform( nd, Age = as.numeric(ia)+DMdur, Per = 1998+DMdur ) pr.rates[,ia,1,"DM/Ins",] <- ci.pred( DM.Dead, newdata = dnew ) pr.rates[,ia,1,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) for( ii in dimnames(pr.rates)[[3]][-1] ) { dnew = transform( dnew, lex.Cst = factor( 2, levels=1:4, labels=levels(Si$lex.Cst) ), t.Ins = ifelse( (DMdur-as.numeric(ii)) >= 0, DMdur-as.numeric(ii), NA ) ) pr.rates[,ia, ii ,"DM/Ins",] <- ci.pred( Ins.Dead, newdata = dnew ) pr.rates[,ia, ii ,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) } } @ % $ So for each age at DM onset we make a plot of the mortality as function of current age both for those with no insulin treatment and those that start insulin treatment 0, 2 and 5 years after diabetes diagnosis, thus 4 curves (with c.i.). These curves are replicated with a different color for the simplified model. <>= par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1 ) plot( NA, xlim=c(40,82), ylim=c(5,300), bty="n", log="y", xlab="Age", ylab="Mortality rate per 1000 PY" ) abline( v=seq(40,80,5), h=outer(1:9,10^(0:2),"*"), col=gray(0.8) ) for( aa in 4:7*10 ) for( ii in 1:4 ) matshade( aa+as.numeric(dimnames(pr.rates)[[1]]), cbind( pr.rates[,paste(aa),ii,"DM/Ins",], pr.rates[,paste(aa),ii,"All" ,] )*1000, type="l", lty=1, lwd=2, col=c("red","limegreen") ) @ % \insfig{mort-int}{0.9}{Estimated mortality rates for male diabetes patients with no insulin (lower sets of curves) and insulin (upper curves), with DM onset in age 40, 50, 60 and 70. The red curves are from the models with separate age effects for persons with and without insulin, and a separate effect of insulin duration. The green curves are from the model with common age-effects and only a time-dependent effect of insulin, assuming no effect of insulin duration (the classical time-dependent variable approach). Hence the upper green curve is common for any time of insulin inception.} From figure \ref{fig:mort-int} we see that there is a substantial insulin-duration effect which is not accommodated by the simple model with only one time-dependent variable to describe the insulin effect. Note that the simple model (green curves) for those on insulin does not depend in insulin duration, and hence the mortality curves for those on insulin are just parallel to the mortality curves for those not on insulin, regardless of diabetes duration (or age) at the time of insulin initiation. This is the proportional hazards assumption. Thus the effect of insulin initiation is under-estimated for short duration of insulin and over-estimated for long duration of insulin. This is the major discrepancy between the two models, and illustrates the importance of being able to accommodate different time scales, but there is also a declining overall insulin effect by age which is not accommodated by the proportional hazards approach. Finally, this plot illustrates an important feature in reporting models with multiple timescales; all timescales must be represented in the predicted rates, only reporting the effect of one timescale, conditional on a fixed value of other timescales is misleading since all timescales by definition advance at the same pace. For example, the age-effect for a fixed value of insulin duration really is a misnomer since it does not correspond to any real person's follow-up, but to the mortality of persons in different ages but with the same duration of insulin use. \section{Input to the \texttt{simLexis} function} We want to estimate the cumulative probability of being in each of the 4 states, so that we can assess the fraction of diabetes pateints that go on insulin In order to simulate from the multistate model with the estimated transition rates, and get the follow-up of a hypothetical cohort, we must supply \emph{both} the transition rates and the structure of the model \emph{as well as} the initial cohort status to \texttt{simLexis}. \subsection{The transition object} We first put the models into an object representing the transitions; note this is a list of lists, the latter having \texttt{glm} objects as elements: <>= Tr <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = DM.Dead ), "Ins" = list( "Dead(Ins)" = Ins.Dead ) ) @ % Now we have the description of the rates and of the structure of the model. The \texttt{Tr} object defines the states and models for all transitions between them; the object \verb|Tr$A$B| is the model for the transition intensity from state \texttt{A} to state \texttt{B}. \subsection{The initial cohort} We now define an initial \texttt{Lexis} object of persons with all relevant covariates defined. Note that we use \texttt{NULL} as row indicator in the \texttt{Lexis} object we used for modeling; this conserves the \texttt{time.scale} and \texttt{time.since} attributes which are needed for the simulation: <>= str( ini <- Si[NULL,1:9] ) @ % We now have an empty \texttt{Lexis} object with attributes reflecting the timescales in the multistate model we want to simulate from. But we must enter some data to represent the initial state of the persons whose follow-up we want to simulate through the model; so fill in data for one man and one woman: <>= ini[1:2,"lex.id"] <- 1:2 ini[1:2,"lex.Cst"] <- "DM" ini[1:2,"Per"] <- 1995 ini[1:2,"Age"] <- 60 ini[1:2,"DMdur"] <- 5 ini[1:2,"sex"] <- c("M","F") ini @ % So the persons starts in age 60 in 1995 with 5 years of diabetes duration. Note that the \texttt{t.Ins} is \texttt{NA}, because this is a timescale that first comes alive if a transtion to \texttt{Ins} is simulated. \section{Simulation of the follow-up} Now we simulate life-courses of a 1000 of each of these persons using the estimated model. The \texttt{t.range} argument gives the times range where the integrated intensities (cumulative rates) are evaluated and where linear interpolation is used when simulating transition times. Note that this must be given in the same units as \texttt{lex.dur} in the \texttt{Lexis} object used for fitting the models for the transitions. It is not a parameter that can be easily determined from the \texttt{TR} object, hence it must be supplied by the user. <>= set.seed( 52381764 ) Nsim <- 5000 system.time( simL <- simLexis( Tr, ini, t.range = 12, N = Nsim ) ) @ % The result is a \texttt{Lexis} object --- a data frame representing the simulated follow-up of \Sexpr{2*Nsim} persons (\Sexpr{Nsim} identical men and \Sexpr{Nsim} identical women) according to the rates we estimated from the original dataset. <>= summary( simL, by="sex" ) @ % \subsection{Using other models for simulation} \subsubsection{Proportional hazards Poisson model} We fitted a proportional mortality model \texttt{All.Dead} (which fitted worse than the other two), this is a model for \emph{both} the transition from \texttt{DM} to \texttt{Death} \emph{and} from \texttt{Ins} to \texttt{Dead(Ins)}, assuming that they are proportional. But it can easily be used in the simulation set-up, because the state is embedded in the model via the term \texttt{lex.Cst}, which is updated during the simulation. Simulation using this instead just requires that we supply a different transition object: <>= Tr.p <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = All.Dead ), "Ins" = list( "Dead(Ins)" = All.Dead ) ) system.time( simP <- simLexis( Tr.p, ini, t.range = 12, N = Nsim ) ) summary( simP, by="sex" ) @ % \subsubsection{Proportional hazards Cox model} A third possibility would be to replace the two-time scale proportional mortality model by a one-time-scale Cox-model, using diabetes duration as time scale, and age at diagnosis of DM as (fixed) covariate: <>= library( survival ) Cox.Dead <- coxph( Surv( DMdur, DMdur+lex.dur, lex.Xst %in% c("Dead(Ins)","Dead")) ~ Ns( Age-DMdur, knots=ad.kn ) + I(lex.Cst=="Ins") + I(Per-2000) + sex, data = Si ) round( ci.exp( Cox.Dead ), 3 ) @ % Note that in order for this model to be usable for simulation, it is necessary that we use the components of the \texttt{Lexis} object to specify the survival. Each record in the data frame \texttt{Si} represents follow up from \texttt{DMdur} to \texttt{DMdur+lex.dur}, so the model is a Cox model with diabetes duration as underlying timescale and age at diagnosis, \texttt{Age-DMdur}, as covariate. Also note that we used \texttt{I(lex.Cst=="Ins")} instead of just \texttt{lex.Cst}, because \texttt{coxph} assigns design matrix columns to all levels of \texttt{lex.Cst}, also those not present in data, which would give \texttt{NA}s among the parameter estimates and \texttt{NA}s as mortality outcomes. We see that the effect of insulin and the other covariates are pretty much the same as in the two-time-scale model. We can simulate from this model too; there is no restrictions on what type of model can be used for different transitions <>= Tr.c <- list( "DM" = list( "Ins" = Tr$DM$Ins, "Dead" = Cox.Dead ), "Ins" = list( "Dead(Ins)" = Cox.Dead ) ) system.time( simC <- simLexis( Tr.c, ini, t.range = 12, N = Nsim ) ) summary( simC, by="sex" ) @ \section{Reporting the simulation results} We can now tabulate the number of persons in each state at a predefined set of times on a given time scale. Note that in order for this to be sensible, the \texttt{from} argument would normally be equal to the starting time for the simulated individuals. <>= system.time( nSt <- nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=1995, time.scale="Per" ) ) nSt[1:10,] @ % We see that as time goes by, the 5000 men slowly move away from the starting state (\texttt{DM}). Based on this table (\texttt{nSt} is a table) we can now compute the fractions in each state, or, rather more relevant, the cumulative fraction across the states in some specified order, so that a plot of the stacked probabilities can be made, using either the default rather colorful layout, or a more minimalist version (both in figure \ref{fig:pstate0}): <>= pM <- pState( nSt, perm=c(1,2,4,3) ) head( pM ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM ) plot( pM, border="black", col="transparent", lwd=3 ) text( rep(as.numeric(rownames(pM)[nrow(pM)-1]),ncol(pM)), pM[nrow(pM),]-diff(c(0,pM[nrow(pM),]))/5, colnames( pM ), adj=1 ) box( col="white", lwd=3 ) box() @ % \insfig{pstate0}{1.0}{Default layout of the \textrm{\tt plot.pState} graph (left), and a version with the state probabilities as lines and annotation of states.} A more useful set-up of the graph would include a more through annotation and sensible choice of colors, as seen in figure \ref{fig:pstatex}: <>= clr <- c("limegreen","orange") # expand with a lighter version of the two chosen colors clx <- c( clr, rgb( t( col2rgb( clr[2:1] )*2 + rep(255,3) ) / 3, max=255 ) ) par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men plot( pM, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=1995, time.scale="Per" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) @ % \insfig{pstatex}{1.0}{\textrm{\tt plot.pState} graphs where persons ever on insulin are given in orange and persons never on insulin in green, and the overall survival (dead over the line) as a black line.} If we instead wanted to show the results on the age-scale, we would use age as timescale when constructing the probabilities; otherwise the code is pretty much the same as before (Figure \ref{fig:pstatey}): <>= par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men pM <- pState( nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pM, col=clx, xlab="Age" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Age" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:9/10, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) @ % Note the several statements with \texttt{axis(side=4,...}; they are necessary to get the fine tick-marks in the right hand side of the plots that you will need in order to read off the probabilities at 2006 (or 71 years). \insfig{pstatey}{1.0}{\textrm{\tt plot.pState} graphs where persons ever on insulin are given in orange and persons never on insulin in green, and the overall survival (dead over the line) as a black line.} \subsection{Comparing predictions from different models} We have actually fitted different models for the transitions, and we have simulated Lexis objects from all three approaches, so we can plot these predictions on top of each other: <>= PrM <- pState( nState( subset(simP,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) PrF <- pState( nState( subset(simP,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxM <- pState( nState( subset(simC,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxF <- pState( nState( subset(simC,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM, border="black", col="transparent", lwd=3 ) lines( PrM, border="blue" , col="transparent", lwd=3 ) lines( CoxM, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "M" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) plot( pF, border="black", col="transparent", lwd=3 ) lines( PrF, border="blue" , col="transparent", lwd=3 ) lines( CoxF, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "F" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) @ % \insfig{comp-0}{1.0}{Comparison of the simulated state occupancy probabilities using separate Poisson models for the mortality rates with and without insulin (black) and using proportional hazards Poisson models (blue) and Cox-models with diabetes duration as timescale and age at diabetes diagnosis as covariate (red).} From figure \ref{fig:comp-0} it is clear that the two proportional hazards models (blue and red curves) produce pretty much the same estimates of the state occupancy probabilities over time, but also that they relative to the model with separately estimated transition intensities overestimates the probability of being alive without insulin and underestimates the probabilities of being dead without insulin. However both the overall survival, and the fraction of persons on insulin are quite well in agreement with the more elaborate model. Thus the proportional hazards models overestimate the relative mortality of the insulin treated diabetes patients relative to the non-insulin treated. Interestingly, we also see a bump in the estimated probabilities from the Cox-model based model, but this is entirely an artifact that comes from the estimation method for the baseline hazard of the Cox-model that lets the (cumulative) hazard have large jumps at event times where the risk set is small. So also here it shows up that an assumption of continuous underlying hazards leads to more credible estimates. \chapter{Simulation of transitions in multistate models} \section{Theory} Suppose that the rate functions for the transitions out of the current state to, say, 3 different states are $\lambda_1$, $\lambda_2$ and $\lambda_3$, and the corresponding cumulative rates are $\Lambda_1$, $\Lambda_2$ and $\Lambda_3$, and we want to simulate an exit time and an exit state (that is either 1, 2 or 3). This can be done in two slightly different ways: \begin{enumerate} \item First time, then state: \begin{enumerate} \item Compute the survival function, $S(t) = \exp\bigl(-\Lambda_1(t)-\Lambda_2(t)-\Lambda_3(t)\bigr)$ \item Simulate a random U(0,1) variate, $u$, say. \item The simulated exit time is then the solution $t_u$ to the equation $S(t_u) = u \quad \Leftrightarrow \quad \sum_j\Lambda_j(t_u) = -\log(u)$. \item A simulated transition at $t_u$ is then found by simulating a random draw from the multinomial distribution with probabilities $p_i=\lambda_i(t_u) / \sum_j\lambda_j(t_u)$. \end{enumerate} \item Separate cumulative incidences: \begin{enumerate} \item Simulate 3 independent U(0,1) random variates $u_1$, $u_2$ and $u_3$. \item Solve the equations $\Lambda_i(t_i)=-\log(u_i), i=1,2,3$ and get $(t_1,t_2,t_3)$. \item The simulated survival time is then $\min(t_1,t_2,t_3)$, and the simulated transition is to the state corresponding to this, that is $k \in \{1,2,3\}$, where $t_k=\min(t_1,t_2,t_3)$ \end{enumerate} \end{enumerate} The intuitive argument is that with three possible transition there are 3 independent processes running, but only the first transition is observed. The latter approach is used in the implementation in \texttt{simLexis}. The formal argument for the equality of the two approaches goes as follows: \begin{enumerate} \item Equality of the transition times: \begin{enumerate} \item In the first approach we simulate from a distribution with cumulative rate $\Lambda_1(t)+\Lambda_2(t)+\Lambda_3(t)$, hence from a distribution with survival function: \begin{align*} S(t) & = \exp\bigl(-(\Lambda_1(t)+\Lambda_2(t)+\Lambda_3(t))\bigr) \\ & = \exp\bigl(-\Lambda_1(t)\bigr)\times \exp\bigl(-\Lambda_2(t)\bigr)\times \exp\bigl(-\Lambda_3(t)\bigr) \end{align*} \item In the second approach we choose the smallest of three independent survival times, with survival functions $\exp(-\Lambda_i), i=1,2,3$. Now, the survival function for the minimum of three independent survival times is: \begin{align*} S_\text{min}(t) & = \pmat{\min(t_1,t_2,t_3)>t} \\ & = \pmat{t_1>t} \times \pmat{t_2>t} \times \pmat{t_3>t} \\ & = \exp\bigl(-\Lambda_1(t)\bigr)\times \exp\bigl(-\Lambda_2(t)\bigr)\times \exp\bigl(-\Lambda_3(t)\bigr) \end{align*} which is the same survival function as derived above. \end{enumerate} \item Type of transition: \begin{enumerate} \item In the first instance the probability of a transition to state $i$, conditional on the transition time being $t$, is as known from standard probability theory: $\lambda_i(t)/\bigl(\lambda_1(t)+\lambda_2(t)+\lambda_3(t)\bigr)$. \item In the second approach we choose the transition corresponding to the the smallest of the transition times. So when we condition on the event that a transition takes place at time $t$, we have to show that the conditional probability that the smallest of the three simulated transition times was actually the $i$th, is as above. But conditional on \emph{survival} till $t$, the probabilities that events of type $1,2,3$ takes place in the interval $(t,t+\dif t)$ are $\lambda_1(t)\dif t$, $\lambda_2(t)\dif t$ and $\lambda_1(t)\dif t$, respectively (assuming that the probability of more than one event in the interval of length $\dif t$ is 0). Hence the conditional probabilities \emph{given a transition time} in $(t,t+\dif t)$ is: \[ \frac{\lambda_i(t)\dif t}{\lambda_1(t)\dif t+\lambda_2(t)\dif t+\lambda_3(t)\dif t}= \frac{\lambda_i(t)}{\lambda_1(t)+\lambda_2(t)+\lambda_3(t)} \] --- exactly as above. \end{enumerate} \end{enumerate} \section{Components of \texttt{simLexis}} This section explains the actually existing code for \texttt{simLexis}, as it is in the current version of \texttt{Epi}. % The following code sources the originally formatted code in % simLexis.R in order to make it printable with all the formatting and % comments in it. However the sourcing does not work when compiling % the vignettes in R CMD build. So when checking the code we comment % this out by putting eval=FALSE, and moreover, because it is only % simLexis that is exported, we also need to bring the functions simX, % sim1, lint, get.next and chop.lex into the workspace. So depending % on whether we actually construct the pdf for the inst/doc folder or % test (upload) the package, one of the following to chunks are run % with eval=FALSE and the other with eval=TRUE % When compiling the published vignette <>= source( "../R/simLexis.R", keep.source=TRUE ) @ % % When checking the package <>= simX <- Epi:::simX sim1 <- Epi:::sim1 lint <- Epi:::lint get.next <- Epi:::get.next chop.lex <- Epi:::chop.lex @ % The function \texttt{simLexis} takes a \texttt{Lexis} object as input. This defines the initial state(s) and times of the start for a number of persons. Since the purpose is to simulate a history through the estimated multistate model, the input values of the outcome variables \texttt{lex.Xst} and \texttt{lex.dur} are ignored --- the aim is to simulate values for them. Note however that the attribute \texttt{time.since} must be present in the object. This is used for initializing timescales defined as time since entry into a particular state, it is a character vector of the same length as the \texttt{time.scales} attribute, with value equal to a state name if the corresponding time scale is defined as time since entry into that state. In this example the 4th timescale is time since entry into the \texttt{Ins} state, and hence: <<>>= cbind( attr( ini, "time.scales" ), attr( ini, "time.since" ) ) @ % \texttt{Lexis} objects will have this attribute set for time scales created using \texttt{cutLexis}. The other necessary argument is a transition object \texttt{Tr}, which is a list of lists. The elements of the lists should be \texttt{glm} objects derived by fitting Poisson models to a \texttt{Lexis} object representing follow-up data in a multistate model. It is assumed (but not checked) that timescales enter in the model via the timescales of the \texttt{Lexis} object. Formally, there are no assumptions about how \texttt{lex.dur} enters in the model. Optional arguments are \texttt{t.range}, \texttt{n.int} or \texttt{time.pts}, specifying the times after entry at which the cumulative rates will be computed (the maximum of which will be taken as the censoring time), and \texttt{N} a scalar or numerical vector of the number of persons with a given initial state each record of the \texttt{init} object should represent. The central part of the functions uses a \texttt{do.call} / \texttt{lapply} / \texttt{split} construction to do simulations for different initial states. This is the construction in the middle that calls \texttt{simX}. \texttt{simLexis} also calls \texttt{get.next} which is further detailed below. <<>>= simLexis @ % \subsection{\texttt{simX}} \texttt{simX} is called by \texttt{simLexis} and simulates transition-times and -types for a set of patients assumed to be in the same state. It is called from \texttt{simLexis} with a data frame as argument, uses the state in \texttt{lex.Cst} to select the relevant component of \texttt{Tr} and compute predicted cumulative intensities for all states reachable from this state. Note that it is here the switch between \texttt{glm}, \texttt{coxph} and objects of class \texttt{function} is made. The dataset on which this prediction is done has \texttt{length(time.pts)} rows per person. <<>>= simX @ % As we see, \texttt{simX} calls \texttt{sim1} which simulates the transition for one person. \subsection{\texttt{sim1}} The predicted cumulative intensities are fed, person by person, to \texttt{sim1} --- again via a \texttt{do.call} / \texttt{lapply} / \texttt{split} construction --- and the resulting time and state is appended to the \texttt{nd} data frame. This way we have simulated \emph{one} transition (time and state) for each person: <<>>= sim1 @ % The \texttt{sim1} function uses \texttt{lint} to do linear interpolation. \subsection{\texttt{lint}} We do not use \texttt{approx} to do the linear interpolation, because this function does not do the right thing if the cumulative incidences (\texttt{ci}) are constant across a number of times. Therefore we have a custom made linear interpolator that does the interpolation exploiting the fact the the \texttt{ci} is non-decreasing and \texttt{tt} is strictly monotonously increasing: <<>>= lint @ \subsection{\texttt{get.next}} We must repeat the simulation operation on those that have a simulated entry to a transient state, and also make sure that any time scales defined as time since entry to one of these states be initialized to 0 before a call to \texttt{simX} is made for these persons. This accomplished by the function \texttt{get.next}: <<>>= get.next @ \subsection{\texttt{chop.lex}} The operation so far has censored individuals \texttt{max(time.pts)} after \emph{each} new entry to a transient state. In order to groom the output data we use \texttt{chop.lex} to censor all persons at the same designated time after \emph{initial} entry. <<>>= chop.lex @ \section{Probabilities from simulated \texttt{Lexis} objects} Once we have simulated a Lexis object we will of course want to use it for estimating probabilities, so basically we will want to enumerate the number of persons in each state at a pre-specified set of time points. \subsection{\texttt{nState}} Since we are dealing with multistate model with potentially multiple time scales, it is necessary to define the timescale (\texttt{time.scale}), the starting point on this timescale (\texttt{from}) and the points after this where we compute the number of occupants in each state, (\texttt{at}). <<>>= nState @ % \subsection{\texttt{pState}, \texttt{plot.pState} and \texttt{lines.pState}} In order to plot probabilities of state-occupancy it is useful to compute cumulative probabilities across states in any given order; this is done by the function \texttt{pState}, which returns a matrix of class \texttt{pState}: <<>>= pState @ % There is also a \texttt{plot} and \texttt{lines} method for the resulting \texttt{pState} objects: <<>>= plot.pState lines.pState @ % \bibliographystyle{plain} \begin{thebibliography}{1} \bibitem{Carstensen.2011a} B~Carstensen and M~Plummer. \newblock Using {L}exis objects for multi-state models in {R}. \newblock {\em Journal of Statistical Software}, 38(6):1--18, 1 2011. \bibitem{Iacobelli.2013} S~Iacobelli and B~Carstensen. \newblock {Multiple time scales in multi-state models}. \newblock {\em Stat Med}, 32(30):5315--5327, Dec 2013. \bibitem{Plummer.2011} M~Plummer and B~Carstensen. \newblock Lexis: An {R} class for epidemiological studies with long-term follow-up. \newblock {\em Journal of Statistical Software}, 38(5):1--12, 1 2011. \end{thebibliography} \addcontentsline{toc}{chapter}{References} \end{document} Epi/R/0000755000176200001440000000000014016520013011160 5ustar liggesusersEpi/R/N2Y.r0000644000176200001440000000425413245401062011765 0ustar liggesusersN2Y <- function( A, P, N, data=NULL, return.dfr=TRUE ) { # Make local versions of variables if a dataframe is supplied if( !is.null(data) ) { A <- if( !missing(A) ) eval( substitute(A), data, parent.frame() ) else data$A P <- if( !missing(P) ) eval( substitute(P), data, parent.frame() ) else data$P N <- if( !missing(N) ) eval( substitute(N), data, parent.frame() ) else data$N } # Derive the interval lengths from supplied data A.int <- unique( diff(sort(unique(A))) ) P.int <- unique( diff(sort(unique(P))) ) # Check if something is fishy if( length(A.int)!=1 ) stop( "Non-uniform age interval lengths:\n", A.int ) if( length(P.int)!=1 ) stop( "Non-uniform period interval lengths:\n", P.int ) if( A.int!=P.int ) stop( "Unequal age and period interval lengths:\n", "age: ", A.int, ", period: ", P.int ) # Put population prevalence data in a table Ntab <- xtabs( N ~ A + P ) # Devise a table for the risk times Ydim <- c(dimnames(Ntab),list(wh=c("lo","up"))) # Note: one less period category Ytab <- NArray( Ydim )[,-dim(Ntab)[2],] # How many age and period classes na <- nrow(Ytab) np <- ncol(Ytab) for(a in 1:na) for(p in 1:np) { if( a < na ) Ytab[a,p,"up"] <- Ntab[a ,p]/3 + Ntab[a+1,p+1]/6 if( a > 1 ) Ytab[a,p,"lo"] <- Ntab[a-1,p]/6 + Ntab[a ,p+1]/3 if( a == 1 ) Ytab[a,p,"lo"] <- Ntab[a ,p]/2 + Ntab[a ,p+1]/2 - Ytab[a,p,"up"] if( a ==na ) Ytab[a,p,"up"] <- Ntab[a ,p]/2 + Ntab[a ,p+1]/2 - Ytab[a,p,"lo"] } # Remember to multiply to get the follow-up time Ytab <- Ytab * A.int # Convert to a data frame if required (the default) if( return.dfr ) { ## If a dataframe is required as return value Ytab <- data.frame(expand.grid(dimnames(Ytab)), Y=c(Ytab)) ## Retrieve the numerical values of left endpoints of intervals Ytab$A <- as.numeric(as.character(Ytab$A)) Ytab$P <- as.numeric(as.character(Ytab$P)) ## Compute the correct midpoints from the supplied data Ytab$A <- Ytab$A + A.int * (1 + (Ytab$wh == "up"))/3 Ytab$P <- Ytab$P + P.int * (1 + (Ytab$wh == "lo"))/3 Ytab <- Ytab[, c("A","P","Y")] } Ytab } Epi/R/lexis.R0000644000176200001440000006342414015164716012455 0ustar liggesusersLexis <- function(entry, exit, duration, entry.status=0, exit.status=0, id, data, merge=TRUE, states, notes=TRUE, tol=.Machine$double.eps^0.5, keep.dropped=FALSE ) { nmissing <- missing(entry) + missing(exit) + missing(duration) if (nmissing > 2) stop("At least one of the arguments exit and duration must be supplied") only.exit <- missing( entry.status ) && !missing( exit.status ) ## If data argument is supplied, use it to evaluate arguments if (!missing(data)) { if (!missing(entry)) { entry <- eval(substitute(entry), data, parent.frame()) } if (!missing(exit)) { exit <- eval(substitute(exit), data, parent.frame()) } if (!missing(duration)) { duration <- eval(substitute(duration), data, parent.frame()) } entry.status <- eval(substitute(entry.status), data, parent.frame()) exit.status <- eval(substitute(exit.status), data, parent.frame()) if (!missing(id)) { id <- eval(substitute(id), data, parent.frame()) } if (merge) { data <- as.data.frame(data) } } ## Check for missing values in status variables wh.miss <- any(is.na(entry.status)) + 2*any(is.na(exit.status)) if ( wh.miss > 0 ) stop("Missing values in ", switch( wh.miss, "entry status", "exit status", "entry AND exit status" ) ) ## Adjust entry status mode according to exit status if( only.exit ) { if( is.logical( exit.status ) ) { entry.status <- FALSE if( notes ) cat("NOTE: entry.status has been set to FALSE for all.\n" ) } if( is.character( exit.status ) ) { exit.status <- factor( exit.status ) } if( is.factor( exit.status ) ) { entry.status <- factor( rep( levels(exit.status)[1], length(exit.status)), levels=levels(exit.status), labels=levels(exit.status) ) if( notes ) cat("NOTE: entry.status has been set to", paste( '"', levels(exit.status)[1], '"', sep='' ), "for all.\n" ) } if( is.numeric( exit.status ) ) { if( notes ) entry.status <- rep( 0, length( exit.status ) ) cat("NOTE: entry.status has been set to 0 for all.\n" ) } } ## Convert character states to factors if( is.character(entry.status) ) entry.status <- factor(entry.status) if( is.character( exit.status) ) exit.status <- factor( exit.status) ## Check compatibility of entry and exit status if (is.factor(entry.status) || is.factor(exit.status)) { if (is.factor(entry.status) && is.factor(exit.status)) { if (!identical(levels(entry.status),levels(exit.status))) { all.levels = union(levels(entry.status),levels(exit.status)) entry.status <- factor( entry.status, levels=all.levels ) exit.status <- factor( exit.status, levels=all.levels ) if( notes ) cat("Incompatible factor levels in entry.status and exit.status:\n", "both lex.Cst and lex.Xst now have levels:\n", all.levels, "\n") } } else { stop("Incompatible classes for entry and exit status") } } else { if (mode(entry.status) != mode(exit.status)) { stop("Incompatible mode for entry and exit status") } } ## If entry is missing and one of the others is given as a list of length ## one, entry is assumed to be 0 on this only timescale. if( nmissing==2 ) { if( !missing(exit) ) { if( length(exit)>1 ) stop("If 'entry' is omitted, only one timescale can be specified.") else { entry <- exit entry[[1]] <- 0*entry[[1]] if( notes ) cat( "NOTE: entry is assumed to be 0 on the",names(exit),"timescale.\n") } } else if( !missing(duration) ) { if( length(duration)>1 ) stop("If 'entry' is omitted, only one timescale can be specified") else { entry <- duration entry[[1]] <- 0*entry[[1]] if( notes ) cat( "NOTE: entry is assumed to be 0 on the",names(duration),"timescale.\n") } } else stop("Either exit or duration must be supplied.") } ## Coerce entry and exit lists to data frames if(!missing(entry)) { entry <- as.data.frame(entry) if (is.null(names(entry))) stop("entry times have no names") if (any(substr(names(entry),1,4) == "lex.")) stop("names starting with \"lex.\" cannot be used for time scales") } if(!missing(exit)) { exit <- as.data.frame(exit) if (is.null(names(exit))) stop("exit times have no names") if (any(substr(names(exit),1,4) == "lex.")) stop("names starting with \"lex.\" cannot be used for time scales") } if(!missing(duration)) { duration <- as.data.frame(duration) if (is.null(names(duration))) stop("duration have no names") if (any(substr(names(duration),1,4) == "lex.")) stop("names starting with \"lex.\" cannot be used for time scales") } if (missing(entry)) { ## Impute entry entry <- exit - duration } if (missing(duration)) { ## Impute duration full.time.scales <- intersect(names(entry), names(exit)) if (length(full.time.scales) == 0) { stop("Cannot calculate duration from entry and exit times") } duration <- exit[,full.time.scales[1]] - entry[,full.time.scales[1]] } if (missing(exit)) { all.time.scales <- names(entry) } else { ## We dont need the exit times but, if they are supplied, we must ## make sure they are consistent with the entry and duration. all.time.scales <- unique(c(names(entry), names(exit))) ## Fill in any missing entry times entry.missing <- setdiff(all.time.scales, names(entry)) if (length(entry.missing) > 0) { entry <- cbind(entry, exit[,entry.missing, drop=FALSE] - duration) } ## Check that duration is the same on all time scales dura <- exit - entry[,names(exit),drop=FALSE] if (missing(duration)) { duration <- dura[,1] #BxC# apply( dura, 1, mean, na.rm=TRUE ) # Allows for timescales with missing values } ok <- sapply(lapply(dura, all.equal, duration), isTRUE) # ok <- sapply(lapply(dura, all.equal, duration), # function(x) identical(FALSE,x) ) if (!all(ok)) { stop("Duration is not the same on all time scales") } } # Taken care of by the code that detects whether lex.du <= tol # ## Check that duration is positive # if (any(duration<0)) { # stop("Duration must be non-negative") # } ## Make sure id values - if supplied - are valid. Otherwise supply default id if (missing(id)) { id <- 1:nrow(entry) } else if (any(duplicated(id))) { ##Fixme: check for overlapping intervals ##stop("Duplicate values in id") } ## Return a data frame with the entry times, duration, and status ## variables Use the prefix "lex." for the names of reserved ## variables. if( is.data.frame( duration ) ) duration <- duration[,1] lex <- data.frame( entry, "lex.dur" = duration, "lex.Cst" = entry.status, "lex.Xst" = exit.status, "lex.id" = id ) #### Addition by BxC --- support for states as factors # Convert states to factors if states are given if( !missing( states ) ) #is.character( states ) ) { # This as.character-business is necessary because we cannot assume # that the values of states are 1,2, etc. st.lev <- sort( unique( as.character( c(lex$lex.Cst,lex$lex.Xst) ) ) ) lex$lex.Cst <- factor( as.character(lex$lex.Cst), levels=st.lev, labels=states ) lex$lex.Xst <- factor( as.character(lex$lex.Xst), levels=st.lev, labels=states ) } if (!missing(data) && merge) { duplicate.names <- intersect(names(lex), names(data)) if (length(duplicate.names) > 0) { stop( "Cannot merge data with duplicate names:", paste(duplicate.names,collapse=" ") ) } lex <- cbind(lex, data) } ## Drop rows with short or negative duration for consistency with splitLexis short.dur <- lex$lex.dur <= tol if ( any(short.dur) ) { if( notes ) cat("NOTE: Dropping ", sum(short.dur), " rows with duration of follow up < tol\n", if( keep.dropped ) " The dropped rows are in the attribute 'dropped'\n", if( keep.dropped ) " To see them type attr(Obj,'dropped'),\n", if( keep.dropped ) " to get rid of them type: attr(Obj,'dropped') <- NULL\n", if( keep.dropped ) " - where 'Obj' is the name of your Lexis object" ) lex <- subset(lex, !short.dur) if( keep.dropped ) attr(lex,"dropped") <- subset(data, short.dur) } ## Return Lexis object attr(lex,"time.scales") <- all.time.scales attr(lex,"time.since") <- rep( "", length(all.time.scales) ) breaks <- vector("list", length(all.time.scales)) names(breaks) <- all.time.scales attr(lex,"breaks") <- breaks class(lex) <- c("Lexis", class(lex)) return(lex) } is.Lexis <- function(x) { inherits(x, "Lexis") } check.time.scale <- function(lex, time.scale=NULL) { ## Utility function, returns the names of the time scales in a Lexis object ## lex - a Lexis object ## time.scale - a numeric or character vector. The function checks that ## these are valid time scales for the Lexis object. ## Return value is a character vector containing the names of the requested ## time scales all.names <- timeScales(lex) if (is.null(time.scale)) return(all.names) nscale <- length(time.scale) scale.names <- character(nscale) if (is.character(time.scale)) { for (i in 1:nscale) { if (is.null(lex[[time.scale[i]]])) stop(time.scale[i], " is not a valid time scale name") } } else if (is.numeric(time.scale)) { if (any(time.scale > length(all.names)) || any(time.scale < 1)) stop(time.scale, " not valid time scale column number(s)") time.scale <- all.names[time.scale] } else { stop("invalid type for time scale") } return(time.scale) } valid.times <- function(x, time.scale=1) { # A utility function that returns a data.frame / Lexis object with # rows with missing timescales removed x[complete.cases(x[,check.time.scale(x,time.scale)]),] } plot.Lexis.1D <- function(x, time.scale=1, breaks="lightgray", type="l", col="darkgray", xlim, ylim, xlab, ylab, ...) { ## x Lexis object ## time.scale name of time scale to plot if (length(time.scale) != 1) stop("Only one time scale allowed") x <- valid.times(x,time.scale) time.entry <- x[,time.scale] time.exit <- x[,time.scale] + x$lex.dur id <- x$lex.id if (missing(xlim)) xlim <- c(min(time.entry), max(time.exit)) if (missing(ylim)) ylim <- range(id) if (missing(xlab)) xlab <- time.scale if (missing(ylab)) ylab <- "id number" plot(time.entry, id, type="n", xlab=xlab, ylab=ylab, xlim=xlim, ylim=ylim, ...) if (type=="b" || type=="l") { segments(time.entry, id, time.exit, id, col=col, ...) } if (type=="b" || type=="p") { points(time.exit, id, col=col, ...) } ## Plot break points brk <- attr(x,"breaks")[[time.scale]] abline(v=brk, col=breaks, ...) } points.Lexis.1D <- function(x, time.scale, ...) { x <- valid.times(x,time.scale) time.exit <- x[,time.scale] + x$lex.dur points(time.exit, x$lex.id, ...) } lines.Lexis.1D <- function(x, time.scale, type="l", col="darkgray", breaks="lightgray", ...) { x <- valid.times(x,time.scale) time.entry <- x[,time.scale] time.exit <- x[,time.scale] + x$lex.dur id <- x$lex.id segments(time.entry, id, time.exit, id, col=col, ...) ## Plot break points brk <- attr(x,"breaks")[[time.scale]] abline(v=brk, col=breaks, ...) } plot.Lexis.2D <- function(x, time.scale, breaks="lightgray", type="l", col="darkgray", xlim, ylim, xlab, ylab, grid=FALSE, col.grid="lightgray", lty.grid=2, coh.grid=FALSE, ...) { if (length(time.scale) != 2) stop("Two time scales are required") x <- valid.times(x,time.scale) time.entry <- time.exit <- vector("list",2) for (i in 1:2) { time.entry[[i]] <- x[,time.scale[i]] time.exit[[i]] <- x[,time.scale[i]] + x$lex.dur } if (missing(xlim) && missing(ylim)) { ## If no axis limits are given, set the plotting region to be ## square, and adjust the axis limits to cover the same time interval. ## All life lines will then be at 45 degrees. opar <- par(pty="s") on.exit(par(opar)) min.times <- sapply(time.entry, min) max.times <- sapply(time.exit, max) xywidth <- max(max.times - min.times) xlim <- min.times[1] + c(0, xywidth) ylim <- min.times[2] + c(0, xywidth) } else if (missing(xlim)) { xlim <- c(min(time.entry[[1]]), max(time.exit[[1]])) } else if (missing(ylim)) { ylim <- c(min(time.entry[[2]]), max(time.exit[[2]])) } if (missing(xlab)) xlab <- time.scale[1] if (missing(ylab)) ylab <- time.scale[2] plot(time.entry[[1]], time.entry[[2]], type="n", xlab=xlab, ylab=ylab, xlim=xlim, ylim=ylim, ...) # Set up the background grid(s): if (!missing(grid)) { if (is.logical(grid)) { if (grid) { vgrid <- pretty(xlim) hgrid <- pretty(ylim) } } else if (is.list(grid)) { vgrid <- grid[[1]] hgrid <- grid[[length(grid)]] } else if (is.numeric(grid)) { vgrid <- grid - min( grid ) + min( pretty( xlim )[pretty(xlim)>=par("usr")[1]] ) hgrid <- grid - min( grid ) + min( pretty( ylim )[pretty(ylim)>=par("usr")[3]] ) } else stop( "'grid' must be either logical, list or a numeric vector" ) # and plot the grid: abline( v=vgrid, h=hgrid, col=col.grid, lty=lty.grid ) box() } if (!missing(grid) & coh.grid) { # Make the 45-degree grids as fine as the finest grid on the axes for (yy in c(hgrid-diff(range(hgrid)),hgrid)) abline( yy-min(vgrid), 1, col=col.grid, lty=lty.grid ) for (yy in c(vgrid-diff(range(vgrid)),vgrid)) abline( min(hgrid)-yy, 1, col=col.grid, lty=lty.grid ) } # End of explicitly requested background grid(s) (PHEW!) if (type=="b" || type=="l") { segments(time.entry[[1]], time.entry[[2]], time.exit[[1]], time.exit[[2]], col=col, ...) } if (type=="b" || type=="p") { points(time.exit[[1]], time.exit[[2]], col = col, ...) } if (type != "n") { ## Plot break points brk <- attr(x,"breaks")[time.scale] abline(v=brk[[1]], h=brk[[2]], col=breaks, ...) } } points.Lexis.2D <- function(x, time.scale, ...) { x <- valid.times(x,time.scale) time.exit <- vector("list",2) for (i in 1:2) { time.exit[[i]] <- x[,time.scale[i]] + x$lex.dur } points( time.exit[[1]], time.exit[[2]], ...) } lines.Lexis.2D <- function(x, time.scale, col="darkgray", ...) { x <- valid.times(x,time.scale) time.entry <- time.exit <- vector("list",2) for (i in 1:2) { time.entry[[i]] <- x[,time.scale[i]] time.exit[[i]] <- x[,time.scale[i]] + x$lex.dur } segments(time.entry[[1]], time.entry[[2]], time.exit[[1]], time.exit[[2]], col=col, ...) } ### Plotting generic functions plot.Lexis <- function( x = Lexis( entry=list(Date=1900,Age=0), exit=list(Age=0) ), time.scale=NULL, type="l", breaks="lightgray", ...) { time.scale <- check.time.scale(x, time.scale) if (length(time.scale) > 2) time.scale <- time.scale[1:2] # Save the timescale(s) for use in subsequent calls options( Lexis.time.scale = time.scale ) if (length(time.scale) == 1) plot.Lexis.1D(x, time.scale=time.scale, type=type, breaks=breaks, ...) else if (length(time.scale) == 2) plot.Lexis.2D(x, time.scale=time.scale, type=type, breaks=breaks, ...) } lines.Lexis <- function(x, time.scale=options()[["Lexis.time.scale"]], ...) { time.scale <- check.time.scale(x, time.scale) if (length(time.scale) > 2) time.scale <- time.scale[1:2] if (length(time.scale) == 1) lines.Lexis.1D(x, time.scale=time.scale, ...) else if (length(time.scale) == 2) lines.Lexis.2D(x, time.scale=time.scale, ...) } points.Lexis <- function(x, time.scale=options()[["Lexis.time.scale"]], ...) { time.scale <- check.time.scale(x, time.scale) if (length(time.scale) > 2) time.scale <- time.scale[1:2] if (length(time.scale) == 1) points.Lexis.1D(x, time.scale=time.scale, ...) else if (length(time.scale) == 2) points.Lexis.2D(x, time.scale=time.scale, ...) } PY.ann <- function (x, ...) UseMethod("PY.ann") PY.ann.Lexis <- function( x, time.scale=options()[["Lexis.time.scale"]], digits=1, ... ) { if( !inherits(x,"Lexis") ) stop( "Only meaningful for Lexis objects not for objects of class ", class(x) ) wh.x <- x[,time.scale[1]] + x[,"lex.dur"]/2 if( two.scales <- length(time.scale)==2 ) wh.y <- x[,time.scale[2]] + x[,"lex.dur"]/2 else wh.y <- x[,"lex.id"] text( wh.x, wh.y, formatC(x$lex.dur,format="f",digits=digits), adj=c(0.5,-0.5), srt=if(two.scales) 45 else 0, ... ) } ### Generic functions ### Methods for data.frame drop Lexis attributes, so we need Lexis ### methods that retain them subset.Lexis <- function(x, ... ) { y <- subset.data.frame(x, ...) attr(y,"breaks") <- attr(x, "breaks") attr(y,"time.scales") <- attr(x, "time.scales") attr(y,"time.since") <- attr(x, "time.since") return(y) } `[.Lexis` <- function(x, ...) { y <- NextMethod(x) if (is.data.frame(y)) { for (a in c("class", "time.scales", "time.since", "breaks")) { data.table::setattr(y ,a, attr(x, a))} } y } merge.Lexis <- function(x, y, id, by, ...) { if (!missing(id)) { if (!is.character(id) || length(id) != 1 || !(id %in% names(y))) { stop("id must be the name of a single variable in y") } if (any(duplicated(y[[id]]))) { stop("values of the id variable must be unique in y") } y$lex.id <- y[[id]] } else if (missing(by)) { by <- intersect(names(x), names(y)) if (length(by)==0) { stop("x and y have no variable names in common") } } z <- base::merge.data.frame(x, y, ...) attr(z,"breaks") <- attr(x, "breaks") attr(z,"time.scales") <- attr(x, "time.scales") attr(z,"time.since") <- attr(x, "time.since") class(z) <- c("Lexis", "data.frame") return(z) } cbind.Lexis <- function( ... ) { allargs <- list( ... ) # Check that at least one argument is Lexis is.lex <- sapply( allargs, inherits, "Lexis" ) if( all(!is.lex) ) stop( "At least one argument nust be a Lexis object\n", "and none of the given are.\n") if( sum(is.lex)>1 ) stop( "It is meaningless to 'cbind' several Lexis objects:", " arguments ", paste( which(is.lex), collapse=","), " are Lexis objects.\n" ) is.lex <- which(is.lex) res <- do.call( base::cbind.data.frame, allargs ) attr( res, "class" ) <- attr( allargs[[is.lex]], "class" ) attr( res, "breaks" ) <- attr( allargs[[is.lex]], "breaks" ) attr( res, "time.scales" ) <- attr( allargs[[is.lex]], "time.scales" ) attr( res, "time.since" ) <- attr( allargs[[is.lex]], "time.since" ) res } rbind.Lexis <- function( ... ) { # A list of all Lexis objects allargs <- list( ... ) # Check if they are all Lexis # (or possibly NULL - often rbind-ing with NULL is very useful) is.lex <- sapply( allargs, inherits, "Lexis" ) is.nul <- sapply( allargs, is.null ) if( !all(is.lex[!is.nul]) ) stop( "All arguments must be Lexis objects,\n", "arguments number ", which(!is.lex & !is.null), " are not." ) # Put them all together allargs <- allargs[!is.nul] res <- plyr::rbind.fill( allargs ) # Get the union of time.scale names and the corresponding time.since tscl <- do.call( c, lapply( allargs, function(x) attr(x,"time.scales") ) ) tsin <- do.call( c, lapply( allargs, function(x) attr(x,"time.since" ) ) ) # but only one copy of each scls <- match( unique(tscl), tscl ) tscl <- tscl[scls] tsin <- tsin[scls] # Fish out the breaks on timescale in turn from all input objects and # - if all the non-NULL are identical use this # - if not, set the corresponding break to NULL newbrks <- list() # all the breaks attributes in a list brks <- lapply( allargs, function(x) attr(x,"breaks") ) # run through the timescales found for( scl in tscl ) { # breaks for this timescale in any of the objects brk <- lapply( brks, function(x) x[[scl]] ) # but only the non-null ones brk <- brk[!sapply( brk, is.null )] # if more than one occurrence, all non-NULL breaks should be identical if( ( length(brk)>1 & all( sapply( brk[-1], function(x) identical(brk[[1]],x) ) ) ) | length(brk) == 1 ) newbrks[scl] <- brk[1] else newbrks[scl] <- list(NULL) } # define attributes of the reulting object: attr( res, "class" ) <- c( "Lexis", "data.frame" ) attr( res, "breaks" ) <- newbrks attr( res, "time.scales" ) <- tscl attr( res, "time.since" ) <- tsin res } ## Extractor functions entry <- function(x, time.scale = NULL, by.id = FALSE ) { time.scale <- check.time.scale(x, time.scale) wh <- x[,time.scale[1]] == ave( x[,time.scale[1]], x$lex.id, FUN=if( by.id ) min else I ) if (length(time.scale) > 1) { res <- as.matrix(x[wh, time.scale]) if( by.id ) rownames( res ) <- x$lex.id[wh] return( res ) } else { res <- x[wh, time.scale] if( by.id ) names( res ) <- x$lex.id[wh] return( res ) } } exit <- function(x, time.scale = NULL, by.id = FALSE ) { time.scale <- check.time.scale(x, time.scale) wh <- x[,time.scale[1]] == ave( x[,time.scale[1]], x$lex.id, FUN=if( by.id ) max else I ) if (length(time.scale) > 1) { res <- as.matrix(x[wh, time.scale]) + x$lex.dur[wh] if( by.id ) rownames( res ) <- x$lex.id[wh] return( res ) } else { res <- x[wh, time.scale] + x$lex.dur[wh] if( by.id ) names( res ) <- x$lex.id[wh] return( res ) } } dur <- function(x, by.id=FALSE) { if( by.id ) return( tapply(x$lex.dur,x$lex.id,sum) ) else return( x$lex.dur ) } status <- function(x, at="exit", by.id = FALSE) { at <- match.arg(at, c("entry","exit")) wh <- x[,timeScales(x)[1]] == ave( x[,timeScales(x)[1]], x$lex.id, FUN=if(by.id) switch(at, "entry"=min, "exit"=max) else I ) res <- switch(at, "entry"=x$lex.Cst, "exit"=x$lex.Xst)[wh] if( by.id ) names( res ) <- x$lex.id[wh] res } transient <- function( x ) { if( !is.Lexis(x) ) stop( "Not a Lexis object" ) tc <- tapply( x$lex.dur, x$lex.Cst, sum ) nt <- names( tc[tc>0] ) nt[!is.na(nt)] } absorbing <- function( x ) { if( !is.Lexis(x) ) stop( "Not a Lexis object" ) tc <- table( x$lex.Xst ) setdiff( names( tc[tc>0] ), transient(x) ) } updn <- function( x, tt, states ) { if( any(is.na(match(states,levels(x)))) ) stop( "'states' must be among states: ", paste(levels(x),sep=',') ) tt <- tt[,states,drop=FALSE] setdiff( rownames( tt[apply(tt,1,sum)>0,,drop=FALSE] ), states ) } before <- preceding <- function( x, states ) updn( x, table(x$lex.Cst,x$lex.Xst), states ) after <- succeeding <- function( x, states ) updn( x, table(x$lex.Xst,x$lex.Cst), states ) timeScales <- function(x) { return (attr(x,"time.scales")) } timeSince <- function(x) { tt <- attr(x,"time.since") names(tt) <- attr(x,"time.scales") return( tt ) } timeBand <- function(lex, time.scale, type="integer") { time.scale <- check.time.scale(lex, time.scale)[1] breaks <- attr(lex, "breaks")[[time.scale]] time1 <- lex[[time.scale]] band <- findInterval(time1, breaks) ##Check that right hand side of interval falls in the same band abrk <- c(breaks, Inf) tol <- sqrt(.Machine$double.eps) if (any(time1 + lex$lex.dur > abrk[band+1] + tol)) { stop("Intervals spanning multiple time bands in Lexis object") } type <- match.arg(type, choices = c("integer","factor","left","middle", "right")) if (type=="integer") { return(band) } I1 <- c(-Inf, breaks) I2 <- c(breaks, Inf) labels <- switch(type, "factor" = paste("(", I1, ",", I2, "]", sep=""), "left" = I1, "right" = I2, "middle" = (I1 + I2)/2) if(type=="factor") { return(factor(band, levels=0:length(breaks), labels=labels)) } else { return(labels[band+1]) } } breaks <- function(lex, time.scale) { time.scale <- check.time.scale(lex, time.scale)[1] return(attr(lex, "breaks")[[time.scale]]) } transform.Lexis <- function(`_data`, ... ) { save.at <- attributes(`_data`) ## We can't use NextMethod here because of the special scoping rules ## used by transform.data.frame y <- base::transform.data.frame(`_data`, ...) save.at[["names"]] <- attr(y, "names") attributes(y) <- save.at y } # Two utility functions used to sort a Lexis object by (lex.id,time) order.Lexis <- orderLexis <- function( x ) { # Some time scales may contain missing values # So find one with minimal NAs so we can sort on it if (!inherits(x, "Lexis")) stop("Argument must be a Lexis object\n") # Fixing things if a data.table attr(x, "class") <- c("Lexis", "data.frame") nNA <- apply(x[, timeScales(x), drop=FALSE], 2, function(x) sum(is.na(x))) a.ts <- timeScales(x)[which( nNA == min(nNA))[1]] order(x$lex.id, x[,a.ts], na.last = FALSE) } sortLexis <- function( x ) x[orderLexis(x),] Epi/R/xgrep.R0000644000176200001440000000036013100324421012425 0ustar liggesusersfgrep <- function( pattern, x, ... ) x [grep( pattern, x , ... )] ngrep <- function( pattern, x, ... ) names(x)[grep( pattern, names(x), ... )] lgrep <- function( pattern, x, ... ) levels(x)[grep( pattern, levels(x), ... )] Epi/R/plotCIF.R0000644000176200001440000000217713564775677012655 0ustar liggesusersplotCIF <- function (x, event = 1, xlab = "Time", ylab = "Cumulative incidence", ylim = c(0, 1), lty = 1, col = "black", ... ) { ng <- length(x$n) co <- rep(col, ng)[1:ng] lt <- rep(lty, ng)[1:ng] ne <- dim(x$pstate)[2] - 1 if (event %in% 1:ne) { time <- x$time gr <- rep(1, length(time)) if (ng > 1) for (g in 2:ng) for (t in (cumsum(x$strata)[g - 1] + 1):cumsum(x$strata)[g]) gr[t] <- g CI <- x$pstate[, 2] for (e in 1:ne) if (event == e) CI <- x$pstate[, e+1] plot(c(0, time[gr == 1], max(time[gr == 1])), c(0, CI[gr == 1], max(CI[gr == 1])), type = "s", ylim = ylim, xlab = xlab, ylab = ylab, col = co[1], lty = lt[1], ...) if (ng > 1) for (g in 2:ng) lines(c(0, time[gr == g], max(time[gr == g])), c(0, CI[gr == g], max(CI[gr == g])), type = "s", lty = lt[g], col = co[g], ...) } else print(paste("Error: event must be an integer from 1 to", ne)) } Epi/R/plotEst.R0000644000176200001440000000726312531361077012762 0ustar liggesusersget.ests <- function( ests, ... ) { # If a model object is supplied, extract the parameters and the # standard errors # if( inherits( ests, c("glm","coxph","clogistic","gnlm","survreg") ) ) ests <- ci.exp( ests, ... ) else if( inherits( ests, c("lm","gls","lme","nls","polr", "mer","MIresult","mipo") ) ) ests <- ci.lin( ests, ... )[,-(2:4)] ests } plotEst <- function( ests, y = dim(ests)[1]:1, txt = rownames(ests), txtpos = y, ylim = range(y)-c(0.5,0), xlab = "", xtic = nice( ests[!is.na(ests)], log=xlog ), xlim = range( xtic ), xlog = FALSE, pch = 16, cex = 1, lwd = 2, col = "black", col.txt = "black", font.txt = 1, col.lines = col, col.points = col, vref = NULL, grid = FALSE, col.grid = gray(0.9), restore.par = TRUE, ... ) { # Function to plot estimates from a model. # Assumes that ests is a p by 3 matrix with estimate, lo and hi as # columns OR a model object. # Extract the estimates if necessary # ests <- get.ests( ests, ... ) # Is it likley that we want a log-axis for the parameters? # mult <- inherits( ests, c("glm","coxph","gnlm") ) if( missing(xlog) ) xlog <- mult # Create an empty plot in order to access the dimension so that # sufficient place can be made for the text in the margin # plot.new() mx <- max( strwidth( txt, units="in" ) ) oldpar <- par( mai=par("mai") + c(0,mx,0,0) ) if( restore.par ) on.exit( par( oldpar ) ) # Set up the coordinate system witout advancing a frame # plot.window( xlim = xlim, ylim = ylim, log = ifelse( xlog, "x", "") ) # Draw a grid if requested # if( !is.logical( grid ) ) abline( v = grid, col = col.grid ) if( is.logical( grid ) & grid[1] ) abline( v = xtic, col = col.grid ) # Draw a vertical reference line # if( !missing( vref ) ) abline( v = vref ) # Draw the estimates with c.i. s # linesEst( ests, y, pch=pch, cex=cex, lwd=lwd, col.points=col.points, col.lines=col.lines ) # Finally the x-axis and the annotation of the estimates # axis( side=1, at=xtic ) mtext( side=1, xlab, line=par("mgp")[1], cex=par("cex")*par("cex.lab") ) axis( side=2, at=txtpos, labels=txt, las=1, lty=0, col.axis=col.txt ) invisible( oldpar ) } pointsEst <- linesEst <- function( ests, y = dim(ests)[1]:1, pch = 16, cex = 1, lwd = 2, col = "black", col.lines = col, col.points = col, ... ) { # Function to add estimates from a model to a drawing. # Assumes that ests is a p by 3 matrix with estimate, lo and hi as # columns. # Extract the estimates if necessary # ests <- get.ests( ests, ... ) # Cut the confidence interval lines to fit inside the plot # before drawing them. # xrng <- if( par("xlog") ) 10^par("usr")[1:2] else par("usr")[1:2] segments( pmax(ests[, 2],xrng[1]), y, pmin(ests[, 3], xrng[2]), y, lwd = lwd, col=col.lines ) # Then the point estimates on top of the lines. # points( ests[, 1], y, pch = pch, cex = cex, col=col.points ) invisible() } nice <- function( x, log = F, lpos = c(1,2,5), ... ) { # Function to produce nice labels also for log-axes. # if( log ) { fc <- floor( log10( min( x ) ) ):ceiling( log10( max( x ) ) ) tick <- as.vector( outer( lpos, 10^fc, "*" ) ) ft <- max( tick[tickmax(x)] ) tick <- tick[tick>=ft & tick<=lt] if( length( tick ) < 4 & missing( lpos ) ) tick <- nice( x, log=T, lpos=c(1:9) ) if( length( tick ) > 10 & missing( lpos ) ) tick <- nice( x, log=T, lpos=1 ) tick } else pretty( x, ... ) } Epi/R/Relevel.R0000644000176200001440000001157313763627513012735 0ustar liggesusers# The Relevel method Relevel <- function (x, ...) UseMethod("Relevel") # Utility to group a factor from a 2-column table; # called from Relevel if second argument is a matrix or table tRelevel <- function( ff, # factor to be grouped gg, # 2-column matrix or table with levels resp. grouping xlevels = TRUE, # include also grouped levels not present in ff nogroup = TRUE ) # levels of ff not grouped are tranferred (if FALSE set to NA) { if( any( wh <- ( apply( table( gg[,1], gg[,2] )>0, 1, sum )>1 ) ) ) stop( "\nFactor level", if(sum(wh)>1) "s", ": \n", paste(names(wh)[wh],collapse=" / "), "\nis grouped to more than one group.\n" ) if( any( is.na( match( unique(as.character(ff)), unique(as.character(gg[,1])) ) ) ) ) cat( "Note: Some values of factor not among levels grouped.\n" ) if( any( wh <- ( apply( table( gg[,1], gg[,2] ), 1, sum )>1 ) ) ) warning( "Factor level", if(sum(wh)>1) "s", ": ", paste(names(wh)[wh],collapse=" / "), "\nappear more than once in the table of groupings." ) # indices and names of the original factor levels ixff <- as.integer( ff ) chff <- as.character( ff ) # where they are in the translation table ixg1 <- as.integer( factor( gg[,1], levels=levels(ff) ) ) # indices of the new levels in the translation table ixg2 <- as.integer( g2 <- factor(gg[,2]) ) # remove unwanted NAs (levels in g[,1] not present in ff) ixg2 <- ixg2[!is.na(ixg1)] ixg1 <- ixg1[!is.na(ixg1)] # where in ixg2 are the integers ixff - match(), choose those values grff <- levels(g2)[ixg2[match(ixff,ixg1)]] # transfer non-grouped levels of ff if( nogroup ) grff[is.na(grff)] <- chff[is.na(grff)] # a factor with the correct levels in the correct order grff <- factor( grff, levels=union(levels(g2),levels(factor(grff))) ) # keep all levels from second column or not? if( xlevels ) grff else factor(grff) } # The factor method is the default method Relevel.default <- Relevel.factor <- function( x, ref, first = TRUE, collapse = "+", xlevels = TRUE, nogroup = TRUE, ... ) { # Function that collapses multiple sets of levels of a factor # # If ref is a 2-dim structure if( is.matrix( ref) | is.table( ref) | is.array( ref) | is.data.frame(ref) ) { if( length(dim(ref)) !=2 ) stop("ref must be 2-dimensional\n") if( dim(ref)[2] < 2 ) stop("ref must have at least 2 colums\n") return( tRelevel( x, ref, xlevels, nogroup ) ) } else { # Otherwise use the old version # if( !is.factor(x) ) { argnam <- deparse( substitute(x) ) f <- factor( x ) cat( "WARNING: ", argnam, "has been converted to a factor with levels:\n", levels( f ) ) } else f <- x # This is a copy of the relevel function from the base package: # relev <- function (x, ref, ...) { lev <- levels(x) if ( is.character( ref ) ) ref <- match(ref, lev) if ( any( is.na( ref ) ) ) stop( "any values in ref must be an existing level\n" ) nlev <- length( lev ) if ( any( ref < 1 ) || any( ref > nlev ) ) stop( paste( "ref=", paste( ref, collapse="," ), ": All elements must be in 1:", nlev, sep="" ) ) factor(x, levels = lev[c(ref, seq(along = lev)[-ref])]) } # If called with a non-list argument assume reshuffling of levels # if( !is.list( ref ) ) fnew <- relev( f, ref ) # If called with a list collapse levels in each list element. # if( is.list( ref ) ) { fnew <- f newnames <- levels( f ) uninames <- character( length( ref ) ) for( s in 1:length(ref) ) if ( is.character( ref[[s]] ) ) ref[[s]] <- match( ref[[s]], levels(f) ) # Check for replicates in levels to be grouped if( any( (tt<-table(unlist(ref))) > 1 ) ) stop("Factor level(s) ", levels( f )[as.numeric(names(tt)[tt>1])], " has been allocated to more than one new level.") for( s in 1:length(ref) ) { uninames[s] <- if( is.null( names( ref ) ) ) { paste( levels( f )[ref[[s]]], collapse=collapse ) } else if( names( ref )[s]=="" ) { paste( levels( f )[ref[[s]]], collapse=collapse ) } else names( ref )[s] newnames[ref[[s]]] <- rep( uninames[s], length( ref[[s]] ) ) } levels( fnew ) <- newnames if( !is.null( first ) ) { if( !first ) fnew <- factor( fnew, c( levels( f )[-unlist( ref )], uninames ) ) if( first ) fnew <- factor( fnew, c( uninames, levels( f )[-unlist( ref )] ) ) } } # This is in order to merge levels with identical names # return( factor( fnew, levels=levels(fnew) ) ) } } Epi/R/mh.R0000644000176200001440000001034512531361077011727 0ustar liggesusers# Mantel-Haenszel estimate and test mh <- function(cases, denom, compare = 1, levels = c(1, 2), by = NULL, cohort = !is.integer(denom), confidence = 0.9) { ndim <- length(dim(cases)) edgin <- names(dimnames(cases)) edgen <- paste("Dimension", 1:ndim) if (is.null(edgin)) edges <- edgen else edges <- ifelse(edgin == "", edgen, edgin) if (is.null(edges)) edges <- rep("", ndim) if(length(dim(denom)) != ndim) { stop("Cases and Pyrs arrays of unequal dimension") } if(is.numeric(compare)) { comp <- as.integer(compare) if(comp < 1 || comp > ndim) { stop("Illegal argument: compare") } } else { comp <- (1:ndim)[edges == compare] if(length(comp) != 1) { stop("Illegal argument: compare") } } if(!is.null(by)) { if (!is.numeric(by)) { mtch <- match(by, edges) if (any(is.na(mtch))) { stop("Illegal argument: by") } by <- (1:ndim)[mtch] } if (any(by < 1 | by > ndim | by == comp)) { stop("Illegal argument: by") } } gtxt <- vector("character", 3) gtxt[1] <- edges[comp] gtxt[2] <- dimnames(cases)[[comp]][levels[1]] gtxt[3] <- dimnames(cases)[[comp]][levels[2]] ctxt <- edges[-c(comp, by)] if (length(ctxt) == 0) ctxt <- as.null() others <- (1:ndim)[ - comp] select <- function(a, el) { b <- a[el] ifelse(is.na(b), 0, b) } d1 <- apply(cases, others, select, el = levels[1]) d2 <- apply(cases, others, select, el = levels[2]) if(length(d1) == 0 || length(d2) == 0) { stop("Illegal argument: levels") } y1 <- apply(denom, others, select, el = levels[1]) y2 <- apply(denom, others, select, el = levels[2]) d <- d1 + d2 y <- y1 + y2 if (cohort) { qt <- ifelse(y>0, (d1 * y2)/y, 0) rt <- ifelse(y>0, (d2 * y1)/y, 0) ut <- ifelse(y>0, d1 - ((d * y1)/y), 0) vt <- ifelse(y>0, (d * y1 * y2)/(y^2), 0) } else { s1 <- d1 + y1 s2 <- d2 + y2 t <- s1 + s2 qt <- ifelse(t>1, (d1 * y2)/t, 0) rt <- ifelse(t>1, (d2 * y1)/t, 0) ut <- ifelse(t>1, d1 - ((d * s1)/t), 0) vt <- ifelse(t>1, (d * y * s1 * s2)/((t - 1) * (t^2)), 0) } if(!is.null(by)) { if(length(by) < ndim - 1) { nby <- match(by, others) q <- apply(qt, nby, sum) r <- apply(rt, nby, sum) u <- apply(ut, nby, sum) v <- apply(vt, nby, sum) } else { q <- qt r <- rt u <- ut v <- vt } } else { q <- sum(qt) r <- sum(rt) u <- sum(ut) v <- sum(vt) } rr <- q/r se <- sqrt(v/(q * r)) ch <- (u^2)/v ef <- exp( - qnorm((1 - confidence)/2) * se) if (cohort) ty <- "Rate ratio" else ty <- "Odds ratio" res <- list(groups = gtxt, control = ctxt, type=ty, q=q, r=r, u=u, v=v, ratio = rr, se.log.ratio = se, cl.lower = rr/ef, cl.upper = rr * ef, chisq = ch, p.value = 1 - pchisq( ch, 1)) class(res) <- "mh" res } print.mh <- function(m) { cat("\n") if (!is.null(m$control)) cat("\nMantel-Haenszel comparison for: ") else cat("Comparison for: ") cat(m$groups[1], " (", m$groups[2], "versus", m$groups[3], ")\n") if (!is.null(m$control)) cat("controlled for:", m$control, "\n") cols <- c(m$type, "CL (lower)", "CL (upper)", "Chisq (1 df)", "p-value") nr <- length(m$ratio) if (is.array(m$ratio)) { dnt <- dimnames(m$ratio) size <- dim(m$ratio) nw <- length(dnt) } else { rn <- names(m$ratio) if (length(rn) > 1) dnt <- list(names(m$ratio)) else dnt <- list("") size <- nr nw <- 1 } dno <- vector("list", nw+1) so <- vector("numeric", nw+1) dno[[1]] <- dnt[[1]] dno[[2]] <- cols so[1] <- size[1] so[2] <- 5 if (nw > 1) for (i in 2:nw) { dno[[i+1]] <- dnt[[i]] so[i+1] <- size[i] } s1 <- size[1] tab <- cbind(m$ratio, m$cl.lower, m$cl.upper, m$chisq, m$p.value) # as.matrix(m$ratio, nrow=s1), # as.matrix(m$cl.lower, nrow=s1), # as.matrix(m$cl.upper, nrow=s1), # as.matrix(m$chisq, nrow=s1), # as.matrix(m$p.value, nrow=s1) ) print(array(tab, dim=so, dimnames=dno)) if (nr > 1) { Q <- sum(m$q) R <- sum(m$r) cat("\nOverall Mantel-Haenszel estimate of", m$type, ":", format(Q/R)) h <- sum(((m$q*R-m$r*Q)^2)/m$v)/(Q*R) df <- sum(m$v>0)-1 cat("\nChi-squared test of heterogeneity:", format(h), "(",df," df), p =", format(1-pchisq(h, df)), "\n") } cat("\n") } # Power calculations mh.power <- function(mh, ratio, alpha=0.05) { n.se <- log(ratio)/mh$se.log.ratio pnorm(n.se - qnorm(1-alpha/2)) } Epi/R/mcutLexis.R0000644000176200001440000001333513761777063013316 0ustar liggesusersmcutLexis <- function( L0, # A Lexis object timescale = 1, # the time scale referred to by L0[,wh] wh, # indices/names of columns witha dates of state entries (events) new.states = NULL, # Names of the event types (states) precursor.states = transient(L0), # NULL, seq.states = TRUE, # Should state names reflect ordering of events new.scales = NULL, # Time-scales referring to time since ties.resolve = FALSE # Are tied event times accepted? ) { ### we rely on referring to the timescale and event time variables by name if( is.numeric(timescale) ) timescale <- timeScales(L0)[timescale] if( is.numeric(wh) ) wh <- names(L0)[wh] ### don't be silly if( length(wh)==1 ) # return( docut( L0, osv ) ) # old cutLexis should be absorbed here stop( "mcutLexis not needed for one type of event - use cutLexis\n" ) ### states if( is.null(new.states) ) { new.states <- wh cat( "NOTE: Name of new states set to\n", new.states ) } if( length(wh) != length(new.states) ) stop( "wh and new.states must have same length, but lengths are", "wh:", length(wh), "and new.states:", length(new.states), "\n" ) ### precursor state if(missing(precursor.states)) cat("NOTE: Precursor states set to", precursor.states, "\n") ### timescales # either all or none if( is.logical(new.scales) ) if( any( new.scales ) ) { new.scales <- paste( "tf", new.states, sep="" ) cat( "NOTE: new.scales set to: ", new.scales, "\n" ) } if( is.character(new.scales) & length(new.scales) != length(wh) ) { new.scales <- paste( "tf", new.states, sep="" ) warning( "new.scales not of same length as wh. Set to: ", new.scales, "\n" ) } if( is.character(new.scales) & length(intersect(new.scales,timeScales(L0))) ) stop( "Names of new time scales must be different from names of existing timescales:\n", timeScales(L0) ) ### Tied transition times untied has.ties <- any( wh.tied <- apply( L0[,wh], 1, function(x) any(diff(sort(x[!is.na(x)]))==0) ) ) if( has.ties & is.logical(ties.resolve) & !ties.resolve ) stop( "Tied event times not allowed with ties.resolve=FALSE:\n", "there were", length(wh.tied), "records with tied event times.") if( has.ties & is.logical(ties.resolve) & ties.resolve ) ties.resolve <- 1/100 if( has.ties & is.numeric(ties.resolve) ) { rnd <- L0[wh.tied,wh]*0 rnd[,] <- runif(rnd,-1,1) * ties.resolve L0[wh.tied,wh] <- L0[wh.tied,wh] + rnd cat("NOTE:", sum(wh.tied), "records with tied events times resolved (adding", ties.resolve, "random uniform),\n", " so results are only", "reproducible if the random number seed was set.\n") } # End of checks # The object to return initiated as NULL Lcut <- NULL # Utility function returning sequences of ocurrences as paste of numbers NAorder <- function (x) { oo <- order(x, na.last = T) on <- (1:length(oo))[oo] on[is.na(x[oo])] <- NA paste(on[!is.na(on)], collapse = "-") } # where do the different sequences of events actually occur in data L0$whseq <- apply( L0[,wh], 1, NAorder ) # Loop through the actually occurring orders of event occurrences for( sq in unique(L0$whseq) ) { # Persons with none of the events occurring transferred to result if( sq=="" ) Lcut <- rbind( Lcut, L0[L0$whseq=="",] ) else { # Extract the subset of persons with a given sequence of events Ltmp <- L0[L0$whseq==sq,] # The numerical sequence of states (refer to the elements of wh) ost <- as.numeric( strsplit( sq, "-" )[[1]] ) nxst <- "" prst <- precursor.states for( cs in ost ) { nxst <- ifelse( cs==ost[1], new.states[cs], paste( nxst, new.states[cs], sep="-" ) ) Ltmp <- cutLexis( Ltmp, cut = Ltmp[,wh[cs]], timescale = timescale, new.state = nxst, precursor.states = prst ) # include the created state among the precursor states for next cut prst <- c(prst,nxst) } # end of for loop through events in this sequence (cs) # Attach it to the end of the Lexis object Lcut <- rbind( Lcut, Ltmp ) } # end of the else clause } # end of for loop through sequences (sq) # Do we want the sequences, the unordered set of previous events or # just the current one: old.seq <- seq.states if( is.logical(seq.states) ) seq.states <- ifelse( seq.states, "s", "u" ) if( is.character(seq.states) ) seq.states <- tolower( substr(seq.states,1,1) ) if( !(seq.states %in% c("s","o","u","l","c")) ) stop( "What do you mean by seq.states=", old.seq, "? - it should abbreviate to one of s, o, u, l or c \n") # Unordered or last (current) states if( seq.states %in% c("u","l","c") ) { # Each list element is a vector of states visited slvl <- strsplit( levels( Lcut ), "-" ) # merge those that have the same elements or take the last rlvl <- if( seq.states=="u" ) { sapply( lapply( slvl, sort ), paste, collapse="+" ) } else sapply( slvl, function(x) x[length(x)] ) # Relevel the states levels( Lcut$lex.Cst ) <- levels( Lcut$lex.Xst ) <- rlvl } # Did we ask for timescales as time since events? if( !is.null(new.scales) ) { # insert columns for the new time scales Lcut <- Lcut[,c(rep("whseq",length(new.scales)),names(Lcut))] names( Lcut )[1:length(new.scales)] <- new.scales for( i in 1:length(wh) ) Lcut[,i] <- ifelse( Lcut[,timescale] - Lcut[,wh[i]] < 0, NA, Lcut[,timescale] - Lcut[,wh[i]] ) # set attributes attr( Lcut, "time.scales" ) <- c( attr( Lcut, "time.scales" ), new.scales ) attr( Lcut, "time.since" ) <- c( attr( Lcut, "time.since" ), new.states ) } # return the cut object without the auxilary variable rmcol <- grep( "whseq", names(Lcut) ) Lcut[,-rmcol] } Epi/R/NArray.R0000644000176200001440000000146212531361077012517 0ustar liggesusersNArray <- function( x, cells=NA ) { if( !is.list(x) ) stop("Argument must be a (named) list." ) array( cells, dimnames=x, dim=sapply( x, length ) ) } ZArray <- function( x, cells=0 ) NArray( x, cells=cells ) larray <- function( data=NA, dim, dimnames ) { if( is.list(data) ) return( array(data=NA,dim=sapply(data,length), dimnames=data) ) else if( is.list(dim) ) return( array(data=data,dim=sapply(dim,length), dimnames=dim) ) else if( is.list(dimnames) ) return( array(data=data,dim=sapply(dimnames,length), dimnames=dimnames) ) else if( !missing(dimnames) ) return( array(data=data,dim=length(data), dimnames=dimnames) ) else return( array(data=data,dim=length(data)) ) } Epi/R/stattable.R0000644000176200001440000003440412531361077013310 0ustar liggesusersstat.table <- function(index, contents=count(), data, margins=FALSE) { ## Get names of indices, using either user-supplied names, or by ## deparsing. Some of this code is stolen from the list.names() ## function in table() index.sub <- substitute(index) index <- if (missing(data)) eval(index) else eval(index.sub, data) deparse.name <- function(x) if(is.symbol(x)) as.character(x) else "" if (is.list(index)) { if (is.call(index.sub)) { ## List constructed in the call to stat.table index.names <- names(index.sub) fixup <- if (is.null(index.names)) seq(along = index.sub) else index.names == "" dep <- sapply(index.sub[fixup], deparse.name) if (is.null(index.names)) index.labels <- dep else { index.labels <- index.names index.labels[fixup] <- dep } index.labels <- index.labels[-1] } else { ## List constructed outside the call to stat.table index.labels <- if (!is.null(names(index))) { names(index) } else { rep("", length(index)) } } } else { ## A single vector index.labels <- deparse.name(index.sub) } ## Coerce index to list of factors if (!is.list(index)) index <- list(index) index <- lapply(index, as.factor) ## Coerce contents to an expression representing a list of function calls contents <- substitute(contents) if (!identical(deparse(contents[[1]]), "list")) { contents <- call("list", contents) } ## Check that functions in the contents list are valid valid.functions <- c("count","mean","weighted.mean","sum","quantile", "median","IQR","max","min","ratio","percent","sd") table.fun <- character(length(contents) - 1) for (i in 2:length(contents)) { if (!is.call(contents[[i]])) stop("contents must be a list of function calls") FUN <- deparse(contents[[i]][[1]]) if (!FUN %in% valid.functions) stop(paste("Function",FUN,"not permitted in stat.table")) else table.fun[i-1] <- FUN } ## Label the contents by default with the function call ## But if user has supplied a label use that instead. stat.labels <- sapply(contents, deparse)[-1] content.names <- names(contents) if (!is.null(content.names)) { for (i in 2:length(content.names)) { if (nchar(content.names[i]) > 0) stat.labels[i-1] <- content.names[i] } } ##Define the allowed tabulation functions count <- function(id){ if (missing(id)) { id <- seq(along=index[[1]]) } y <- tapply(id, INDEX=subindex, FUN=function(x) length(unique(x))) y[is.na(y)] <- 0 return(y) } mean <- function(x, trim=0, na.rm=TRUE) { tapply(x, INDEX=subindex, FUN = base::mean, trim=trim, na.rm=na.rm) } weighted.mean <- function(x,w,na.rm=TRUE) { tapply(x, INDEX=subindex, FUN=stats::weighted.mean, w=w, na.rm=na.rm) } sum <- function(...,na.rm=TRUE) { tapply(..., INDEX=subindex, FUN = base::sum, na.rm=na.rm) } quantile <- function(x, probs, na.rm=TRUE,names=TRUE,type=7,...) { if (length(probs) > 1) stop("The quantile function only accepts scalar prob values within stat.table") tapply(x, INDEX=subindex, FUN = stats::quantile, probs=probs, na.rm=na.rm,names=names,type=type,...) } median <- function(x, na.rm=TRUE) { tapply(x, INDEX=subindex, FUN = stats::median, na.rm=na.rm) } IQR <- function(x, na.rm=TRUE) { tapply(x, INDEX=subindex, FUN= stats::IQR, na.rm=na.rm) } max <- function(..., na.rm=TRUE) { tapply(..., INDEX=subindex, FUN = base::max, na.rm=na.rm) } min <- function(..., na.rm=TRUE) { tapply(..., INDEX=subindex, FUN = base::min, na.rm=na.rm) } ratio <- function(d,y,scale=1, na.rm=TRUE) { if (length(scale) != 1) stop("Scale parameter must be a scalar") if (na.rm) { w <- (!is.na(d) & !is.na(y)) tab1 <- tapply(d*w, INDEX=subindex, FUN=base::sum, na.rm=TRUE) tab2 <- tapply(y*w, INDEX=subindex, FUN=base::sum, na.rm=TRUE) } else { tab1 <- tapply(d, INDEX=subindex, FUN=base::sum, na.rm=FALSE) tab2 <- tapply(y, INDEX=subindex, FUN=base::sum, na.rm=FALSE) } return(scale*tab1/tab2) } percent <- function(...) { x <- list(...) if (length(x) == 0) stop("No variables to calculate percent") x <- lapply(x, as.factor) n <- count() ## Work out which indices to sweep out sweep.index <- logical(length(subindex)) for (i in seq(along=subindex)) { sweep.index[i] <- !any(sapply(x,identical,subindex[[i]])) } if (!any(sweep.index)) { return(100*n/base::sum(n, na.rm=TRUE)) } else { margin <- apply(n,which(sweep.index),base::sum, na.rm=TRUE) margin[margin==0] <- NA return(100*sweep(n, which(sweep.index), margin,"/")) } } sd <- function (..., na.rm = TRUE) { tapply(..., INDEX=subindex, FUN = stats::sd, na.rm=na.rm) } ##Calculate dimension of the main table, excluding margins n.dim <- length(index) tab.dim <- sapply(index, nlevels) ##Sort out margins if (length(margins) == 1) margins <- rep(margins, n.dim) else if(length(margins) != n.dim) stop("Incorrect length for margins argument") ##Create grid of all possible subtables. fac.list <- vector("list", n.dim) for (i in 1:n.dim) { fac.list[[i]] <- if (margins[i]) c(0,1) else 1 } subtable.grid <- as.matrix(expand.grid(fac.list)) ##Fill in the subtables ans.dim <- c(length(contents)-1, tab.dim + margins) ans <- numeric(prod(ans.dim)) for (i in 1:nrow(subtable.grid)) { ##in.subtable is a logical vector indicating which dimensions are ##in the subtable (i.e. which have not been marginalized out) in.subtable <- as.logical(subtable.grid[i,]) llim <- rep(1,n.dim) + ifelse(in.subtable,rep(0,n.dim),tab.dim) ulim <- tab.dim + ifelse(in.subtable,rep(0,n.dim),rep(1, n.dim)) subindex <- index[in.subtable] if (length(subindex) == 0) { ## Marginalizing out all dimensions subindex <- list(rep(1, length(index[[1]]))) } subtable.list <- if(missing(data)) ##eval(contents, parent.frame()) eval(contents) else eval(as.expression(contents), data) for (j in 1:length(subtable.list)) { ans[array.subset(ans.dim,c(j,llim),c(j,ulim))] <- subtable.list[[j]] } } ans <- array(ans, dim=ans.dim) ans.dimnames <- lapply(index, levels) names(ans.dimnames) <- index.labels for (i in 1:length(index)) { if (margins[i]) ans.dimnames[[i]] <- c(ans.dimnames[[i]], "Total") } dimnames(ans) <- c(list("contents"=stat.labels), ans.dimnames) attr(ans, "table.fun") <- table.fun class(ans) <- c("stat.table", class(ans)) return(ans) } array.subset <- function(dim,lower,upper) { ##Returns a logical array of dimension dim for which elements in the range ##[lower[1]:upper[1], lower[2]:upper[2],...] are TRUE and others FALSE ##Check validity of arguments (but assume everything is an integer) ndim <- length(dim) if (length(lower) != ndim || length(upper) != ndim) { stop("Length of lower and upper limits must match dimension") } if (any(lower > upper) || any(lower < 1) || any(upper > dim)) { stop("Invalid limits") } ##The math is easier if we index arrays from 0 rather than 1 lower <- lower - 1 upper <- upper - 1 N <- prod(dim) ans <- rep(TRUE, N) for (i in 1:N) { l <- i - 1 for (d in 1:ndim) { k <- l %% dim[d] #k is the index of the ith element in dimension d if (k < lower[d] || k > upper[d]) { ans[i] <- FALSE break } l <- l %/% dim[d] } } return(array(ans, dim)) } split.to.width <- function(x,width) { ## Splits a string into a vector so that each element has at most width ## characters. If width is smaller than the length of the shortest word ## then the latter is used instead x.split <- strsplit(x,split=" ")[[1]] width <- max(c(width,nchar(x.split))) y <- character(0) imin <- 1 n <- length(x.split) for (i in 1:n) { cum.width <- if(i==n) { Inf } else { sum(nchar(x.split[imin:(i+1)])) + (i - imin + 1) } if (cum.width > width) { y <- c(y,paste(x.split[imin:i], collapse=" ")) imin <- i + 1 } } return(y) } pretty.print.stattable.1d <- function(x, width, digits) { ##Pretty printing of 1-D stat.table if (length(dim(x)) != 2) stop("Cannot print stat.table") ncol <- nrow(x) col.width <- numeric(ncol+1) col.header <- vector("list",ncol+1) n.header <- integer(ncol+1) print.list <- vector("list",ncol+1) ##First column col.header[[1]] <- split.to.width(names(dimnames(x))[2], width) n.header[1] <- length(col.header[[1]]) col1 <- format(c(col.header[[1]],dimnames(x)[[2]]), justify="left") col.header[[1]] <- col1[1:n.header[1]] print.list[[1]] <- col1[-(1:n.header[1])] col.width[1] <- nchar(col.header[[1]][1]) ##Other columns for (i in 2:(ncol+1)) { col.header[[i]] <- split.to.width(dimnames(x)[[1]][i-1], width) n.header[i] <- length(col.header[[i]]) this.col <- formatC(x[i-1,],width=width, digits=digits[attr(x,"table.fun")[i-1]], "f") this.col <- format(c(col.header[[i]],this.col),justify="right") col.width[i] <- nchar(this.col[1]) col.header[[i]] <- this.col[1:n.header[i]] print.list[[i]] <- this.col[-(1:n.header[i])] } ## table.width <- sum(col.width) + ncol + 3 max.n.header <- max(n.header) cat(" ",rep("-",table.width)," \n",sep="") for(i in 1:max.n.header) { cat(" ") for(j in 1:length(print.list)) { if (i <= n.header[j]) { cat(col.header[[j]][i]) } else { cat(rep(" ", col.width[[j]]),sep="") } if (j==1) cat(" ") else cat(" ") } cat(" \n") } cat(" ",rep("-",table.width)," \n",sep="") for (i in 1:length(print.list[[1]])) { cat(" ") if (pmatch("Total",print.list[[1]][i],nomatch=0)) { ##Add a blank line before the total cat(rep(" ",col.width[1]+1)," ",rep(" ",sum(col.width[-1])+ncol), " \n ",sep="") } for (j in 1:length(print.list)) { cat(print.list[[j]][i]) if (j == 1) { cat(" " ) } else { cat(" ") } } cat(" \n") } cat(" ",rep("-",table.width)," \n",sep="") return(invisible(x)) } pretty.print.stattable.2d <- function(x, width, digits) { ##Pretty printing of 2-Dimensional stat.table if (length(dim(x)) != 3) stop("Cannot print stat.table") nstat <- dim(x)[1] ncol <- dim(x)[3] nrow <- dim(x)[2] col.width <- numeric(ncol+1) col.header <- vector("list",ncol+1) n.header <- integer(ncol+1) print.list <- vector("list",ncol+1) ##First column col.header[[1]] <- split.to.width(names(dimnames(x))[2], width) n.header[1] <- length(col.header[[1]]) col1 <- format(c(col.header[[1]],dimnames(x)[[2]]), justify="left") col.header[[1]] <- col1[1:n.header[1]] print.list[[1]] <- col1[-(1:n.header[1])] col.width[1] <- nchar(col.header[[1]][1]) ##Other columns for (i in 2:(ncol+1)) { col.header[[i]] <- split.to.width(dimnames(x)[[3]][i-1], width) n.header[i] <- length(col.header[[i]]) this.col <- matrix("", nrow=nstat,ncol=nrow) for (j in 1:nstat) { z <- x[j,,i-1] this.col[j,] <- formatC(z, width=width, format="f", digits=digits[attr(x,"table.fun")[j]]) ## this.col[j,] <- formatC(z, width=width, digits=digits, ## format=ifelse(identical(round(z),z),"d","f")) } this.col <- format(c(col.header[[i]],this.col),justify="right") col.width[i] <- nchar(this.col[1]) col.header[[i]] <- this.col[1:n.header[i]] print.list[[i]] <- this.col[-(1:n.header[i])] } ##Correct first column for multiple stats if (nstat > 1) { pl1 <- print.list[[1]] print.list[[1]] <- rep(paste(rep(" ",col.width[1]),collapse=""),nstat*nrow) print.list[[1]][1 + nstat*((1:nrow)-1)] <- pl1 } table.width <- sum(col.width) + ncol + 3 max.n.header <- max(n.header) cat(" ",rep("-",table.width)," \n",sep="") ## Supercolumn header super.header <- names(dimnames(x))[3] npad <- sum(col.width[-1]) + ncol + 1 - nchar(super.header) if (npad >= 0) { cat(" ",rep(" ",col.width[1])," ",sep="") cat(rep("-",floor(npad/2)),sep="") cat(super.header) cat(rep("-",ceiling(npad/2))," \n",sep="") } ## Headers for(i in 1:max.n.header) { cat(" ") for(j in 1:length(print.list)) { if (i <= n.header[j]) { cat(col.header[[j]][i]) } else { cat(rep(" ", col.width[[j]]),sep="") } if (j==1) cat(" ") else cat(" ") } cat(" \n") } cat(" ",rep("-",table.width)," \n",sep="") ## Body of table blank.line <- function() { cat(" ",rep(" ",col.width[1]+1)," ",rep(" ",sum(col.width[-1])+ncol), " \n",sep="") } for (i in 1:length(print.list[[1]])) { if (pmatch("Total",print.list[[1]][i],nomatch=0)) { ##Add a blank line before the total blank.line() } cat(" ") for (j in 1:length(print.list)) { cat(print.list[[j]][i]) if (j == 1) { cat(" " ) } else { cat(" ") } } cat(" \n") if (nstat > 1 && i %% nstat == 0 && i != length(print.list[[1]])) { ##Separate interleaved stats blank.line() } } cat(" ",rep("-",table.width)," \n",sep="") return(invisible(x)) } print.stat.table <- function(x, width=7,digits,...) { fun.digits <- c("count"=0,"mean"=2,"weighted.mean"=2,"sum"=2,"quantile"=2, "median"=2,"IQR"=2,"max"=2,"min"=2,"ratio"=2,"percent"=1, "sd"=2) if (!missing(digits)) { if (is.null(names(digits))) { if (length(digits) > 1) stop("digits must be a scalar or named vector") else fun.digits[1:length(fun.digits)] <- digits } else { fun.digits[names(digits)] <- digits } } if (length(dim(x)) == 2) pretty.print.stattable.1d(x, width, fun.digits) else if (length(dim(x)) == 3) pretty.print.stattable.2d(x, width, fun.digits) else NextMethod("print",...) } ## Satisfy QA checks by defining these functions. But if we never ## export them they can't be used directly. count <- function(id) { } ratio <- function(d, y, scale=1, na.rm=TRUE) { } percent <- function(...) { } Epi/R/mat2pol.R0000644000176200001440000000102313564245720012675 0ustar liggesusersmat2pol <- function( pm, perm = 1:ncol(pm), x = as.numeric(rownames(pm)), col = rainbow(ncol(pm)), yl = 0:1, append = FALSE, ... ) { if( missing(x) ) x <- as.numeric( rownames(pm) ) if( length(x)==0 ) x <- 1:nrow(pm) xm <- cbind( 0, pm[,perm] ) xm <- t( apply(xm,1,cumsum) ) if( !append ) plot( x, x, type="n", ylim=yl, ... ) for( j in 1:ncol(pm) ) polygon( c(x,rev(x)), c(xm[,j],rev(xm[,j+1])), col = col[j], border="transparent" ) invisible( xm ) } Epi/R/boxes.MS.R0000644000176200001440000003752713763222575013003 0ustar liggesuserstbox <- function( txt, x, y, wd, ht, font=2, lwd=2, col.txt=par("fg"), col.border=par("fg"), col.bg="transparent" ) { rect( x-wd/2, y-ht/2, x+wd/2, y+ht/2, lwd=lwd, border=col.border, col=col.bg ) text( x, y, txt, font=font, col=col.txt ) invisible( c( x, y, wd, ht ) ) } dbox <- function( x, y, wd, ht=wd, font=2, lwd=2, cwd=5, col.cross=par("fg"), col.border=par("fg"), col.bg="transparent" ) { rect( x-wd/2, y-ht/2, x+wd/2, y+ht/2, lwd=lwd, border=col.border, col=col.bg ) ch <- ht*2/3 segments( c(x , x-ch/3), c(y+ch/2, y+ch/6), c(x , x+ch/3), c(y-ch/2, y+ch/6), lwd=cwd, col=col.cross ) invisible( c( x, y, wd, ht ) ) } fillarr <- function( x1, y1, x2, y2, gap=2, fr=0.8, angle=17, lwd=2, length=par("pin")[1]/30, ... ) { fr <- 1-gap/sqrt((x1-x2)^2+(y1-y2)^2) if( !missing(fr) ) if( fr > 1 ) fr <- fr/100 for( a in 1:angle ) arrows( x1 + (x2-x1)*(1-fr)/2, y1 + (y2-y1)*(1-fr)/2, x2 - (x2-x1)*(1-fr)/2, y2 - (y2-y1)*(1-fr)/2, angle=a, lwd=lwd, ... ) } std.vec <- function( a, b ) { l <- sqrt(a^2+b^2) if( l==0 ) return( c(0,0) ) else return( c(a/l,b/l) ) } boxarr <- function (b1, b2, offset = FALSE, pos = 0.45, ...) { d <- std.vec(b2[1] - b1[1], b2[2] - b1[2]) dd <- d * offset x1 <- b1[1] - dd[2] y1 <- b1[2] + dd[1] w1 <- b1[3] h1 <- b1[4] x2 <- b2[1] - dd[2] y2 <- b2[2] + dd[1] w2 <- b2[3] h2 <- b2[4] hx1 <- x1 + ifelse((y2-y1) != 0, (x2-x1) * ((h1/2)/abs(y2-y1)), sign(x2-x1) * w1/2) vx1 <- x1 + ifelse((x2-x1) != 0, (x2-x1) * ((w1/2)/abs(x2-x1)), 0) hx2 <- x2 + ifelse((y1-y2) != 0, (x1-x2) * ((h2/2)/abs(y1-y2)), sign(x1-x2) * w2/2) vx2 <- x2 + ifelse((x1-x2) != 0, (x1-x2) * ((w2/2)/abs(x1-x2)), 0) hy1 <- y1 + ifelse((y2-y1) != 0, (y2-y1) * ((h1/2)/abs(y2-y1)), 0) vy1 <- y1 + ifelse((x2-x1) != 0, (y2-y1) * ((w1/2)/abs(x2-x1)), sign(y2-y1) * h1/2) hy2 <- y2 + ifelse((y1-y2) != 0, (y1-y2) * ((h2/2)/abs(y1-y2)), 0) vy2 <- y2 + ifelse((x1-x2) != 0, (y1-y2) * ((w2/2)/abs(x1-x2)), sign(y1-y2) * h2/2) if( abs(vy1-y1) < h1/2 ) { bx1 <- vx1 by1 <- vy1 } else { bx1 <- hx1 by1 <- hy1 } if( abs(vy2-y2) < h2/2 ) { bx2 <- vx2 by2 <- vy2 } else { bx2 <- hx2 by2 <- hy2 } fillarr( bx1, by1, bx2, by2, ... ) invisible( list( x = bx1*(1-pos)+bx2*pos, y = by1*(1-pos)+by2*pos, d = d ) ) } wh.no <- function( tt, i, j ) { ## Utility to count the number of non-NA off diagonal elements with ## rown.tr ) col.arr <- col.arr [1:n.tr] if( length(col.txt.arr)>n.tr ) col.txt.arr<- col.txt.arr[1:n.tr] if( length(lwd.arr )>n.tr ) lwd.arr <- lwd.arr [1:n.tr] if( length(font.arr )>n.tr ) font.arr <- font.arr [1:n.tr] if( length(pos.arr )>n.tr ) pos.arr <- pos.arr [1:n.tr] # Here comes the plot # First setting up the plot area, and restoring the plot parameters later opar <- par( mar=c(0,0,0,0), cex=cex ) on.exit( par(opar) ) plot( NA, bty="n", xlim=0:1*100, ylim=0:1*100, xaxt="n", yaxt="n", xlab="", ylab="" ) # String height and width only meaningful after a plot has been called if( missing(ht) ) { ht <- strheight( pl.nam ) * hmult if( eq.ht ) ht <- rep( max(ht), length(ht) ) } if( missing(wd) ) { wd <- strwidth( pl.nam ) * wmult if( eq.wd ) wd <- rep( max(wd), length(wd) ) } # If not supplied, ask for positions of boxes if( is.list(boxpos) ) { names(boxpos) <- tolower( names(boxpos) ) if( length(intersect(names(boxpos),c("x","y")))<2 ) stop( "The list given in 'boxpos=' must have components 'x' and 'y'" ) if( length(boxpos$x) != n.st | length(boxpos$y) != n.st ) stop( "The elements 'x' and 'y' of boxpos must both have length equal to no. states", n.st ) xx <- boxpos$x yy <- boxpos$y } if( is.logical(boxpos) ) if( boxpos ) { ang <- pi - 2*pi*((1:n.st-0.5)/n.st) xx <- cos( ang ) * 35 + 50 yy <- sin( ang ) * 35 + 50 } else { xx <- yy <- numeric(n.st) for( i in subset ) { cat( "\nClick for level ", st.nam[i] ) flush.console() pt <- locator(1) xx[i] <- pt$x yy[i] <- pt$y tbox( pl.nam[i], xx[i], yy[i], wd[i], ht[i], ... ) } cat( "\n" ) } # Plot the boxes and record position and size b <- list() for( i in subset ) b[[i]] <- tbox( pl.nam[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.txt=col.txt[i], col.border=col.border[i], col.bg=col.bg[i] ) # Arrows and text on them arrowtext <- character(0) for( i in subset ) for( j in subset ) { if( !is.na(tt[i,j]) & i!=j ) { # Which number of arrow is currently processed? a <- wh.no( tt, i, j ) arr <- boxarr( b[[i]], b[[j]], offset=(!is.na(tt[j,i]))*offset.arr, lwd=lwd.arr[a], col=col.arr[a], pos=pos.arr[a], ... ) if( show.D | show.R ) { if( show.D & D[i,j]>0 ) arrowtext[a] <- formatC( D[i,j], format="f", digits=0, big.mark="," ) else arrowtext[a] <- "" if( show.R & R[i,j]>0 ) arrowtext[a] <- paste( if( !is.null(arrowtext[a]) ) paste( arrowtext[a], DR.sep[1], sep="" ), formatC( R[i,j], format="f", digits=digits.R, big.mark="," ), if( length(DR.sep) > 1 ) DR.sep[2], sep="" ) } else if( !is.null(txt.arr) ) arrowtext[a] <- txt.arr[a] if( !is.null(arrowtext[a]) ) text( arr$x-arr$d[2], arr$y+arr$d[1], arrowtext[a], adj=as.numeric(c(arr$d[2]>0,arr$d[1]<0)), font=font.arr[a], col=col.txt.arr[a] ) } } # Redraw the boxes with white background to remove any arrows crossing for( i in subset ) tbox( pl.nam[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.bg=par("bg") ) # Then redraw the boxes again for( i in subset ) tbox( pl.nam[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.txt=col.txt[i], col.border=col.border[i], col.bg=col.bg[i] ) # Finally create an object with all information to re-draw the display MSboxes <- list( Boxes = data.frame( xx = xx, yy = yy, wd = wd, ht = ht, font = font, lwd = lwd, col.txt = col.txt, col.border = col.border, col.bg = col.bg, stringsAsFactors=FALSE ), State.names = pl.nam, Tmat = tt, Arrows = data.frame( lwd.arr = lwd.arr, col.arr = col.arr, pos.arr = pos.arr, col.txt.arr = col.txt.arr, font.arr = font.arr, offset.arr = offset.arr, stringsAsFactors=FALSE ), Arrowtext = arrowtext ) class( MSboxes ) <- "MS" invisible( MSboxes ) } boxes.MS <- function( obj, sub.st, sub.tr, cex=1.5, ... ) { if( !inherits(obj,"MS") ) stop( "You must supply an object of class 'MSboxes'" ) n.st <- nrow( obj$Boxes ) n.tr <- nrow( obj$Arrows ) if( missing(sub.st) ) sub.st <- 1:n.st if( missing(sub.tr) ) sub.tr <- 1:n.tr # First setting up the plot area, and restoring the plot parameters later opar <- par( mar=c(0,0,0,0), cex=cex ) on.exit( par(opar) ) plot( NA, bty="n", xlim=0:1*100, ylim=0:1*100, xaxt="n", yaxt="n", xlab="", ylab="" ) # Exercise the subsets by putting the relevant colors to "transparent" obj$Boxes[-sub.st,c("col.txt", "col.border", "col.bg")] <- "transparent" obj$Arrows[-sub.tr,c("col.arr", "col.txt.arr")] <- "transparent" # Then draw the boxes b <- list() for( i in 1:n.st ) b[[i]] <- with( obj$Boxes, tbox( obj$State.names[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.txt=col.txt[i], col.border=col.border[i], col.bg=col.bg[i] ) ) # and the arrows for( i in 1:n.st ) for( j in 1:n.st ) { if( !is.na(obj$Tmat[i,j]) & i!=j ) { a <- wh.no( obj$Tmat, i, j ) arr <- with( obj$Arrows, boxarr( b[[i]], b[[j]], offset=(!is.na(obj$Tmat[j,i]))*offset.arr, lwd=lwd.arr[a], col=col.arr[a], pos=pos.arr[a], ... ) ) with( obj$Arrows, text( arr$x-arr$d[2], arr$y+arr$d[1], obj$Arrowtext[a], adj=as.numeric(c(arr$d[2]>0,arr$d[1]<0)), font=font.arr[a], col=col.txt.arr[a] ) ) } } # Redraw the boxes with "bg" background to remove any arrows crossing for( i in sub.st ) with( obj$Boxes, tbox( obj$State.names[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.txt=par("bg"), col.border=par("bg"), col.bg=par("bg") ) ) # Then redraw the boxes again for( i in sub.st ) with( obj$Boxes, tbox( obj$State.names[i], xx[i], yy[i], wd[i], ht[i], font=font[i], lwd=lwd[i], col.txt=col.txt[i], col.border=col.border[i], col.bg=col.bg[i] ) ) # Done! invisible( NULL ) } Epi/R/cal.yr.R0000644000176200001440000000300312664034207012503 0ustar liggesuserscal.yr <- function( x, format = "%Y-%m-%d", wh = NULL ) { cl.typ <- c("Date","POSIXct","POSIXlt","date","dates","chron") # Check if the input is a data frame and convert if( inherits( x, "data.frame" ) & is.null(wh) & missing(format) ) { # Indicator of where a date-type variable is wh <- which( sapply( x, inherits, cl.typ ) ) } if( inherits( x, "data.frame" ) & is.null(wh) & !missing(format) ) { # Indicator of where the character variables are wh <- which( sapply( x, is.character ) ) } if( inherits( x, "data.frame" ) & is.vector(wh) ) { if( is.character(wh) ) wh <- match( wh, names(x) ) # Convert the dates or the character variables for( i in wh ) { if( is.character(x[,i]) ) x[,i] <- cal.yr( x[,i], format=format ) else x[,i] <- cal.yr( x[,i] ) } return( x ) } # Finally, down to business --- converting a vector to decimal years: # Check if the input is some kind of date or time object if( any( inherits( x, cl.typ ) ) ) x <- as.Date( as.POSIXct( x ) ) else if( is.character( x ) ) x <- as.Date( x, format = format ) else if( is.factor( x ) ) x <- as.Date( as.character( x ), format = format ) else stop( "\nInput should be a data frame, a character vector, a factor or ", "some kind of date or time object:\n", "Date, POSIXct, POSIXlt, date, dates or chron" ) res <- as.numeric( x ) / 365.25 + 1970 class( res ) <- c("cal.yr","numeric") return( res ) } Epi/R/ROC.R0000644000176200001440000002211313150633754011744 0ustar liggesuserssteplines <- function( x, y, left = TRUE, right = !left, order = TRUE, ... ) { # A function to plot step-functions # # Get the logic right if right is supplied... left <- !right # ... right! n <- length( x ) if( any( order ) ) ord <- order(x) else ord <- 1:n dbl <- rep( 1:n, rep( 2, n) ) xv <- c( !left, rep( T, 2*(n-1) ), left) yv <- c( left, rep( T, 2*(n-1) ), !left) lines( x[ord[dbl[xv]]], y[ord[dbl[yv]]], ... ) } interp <- function ( target, fv, res ) { # Linear interpolaton of the values in the N by 2 matrix res, # to the target value target on the N-vector fv. # Used for placing tickmarks on the ROC-curves. # where <- which( fv>target )[1] - 1:0 int <- fv[where] wt <- ( int[2] - target ) / diff( int ) wt[2] <- 1-wt t( res[where,] ) %*% wt } ROC.tic <- function ( tt, txt = formatC(tt,digits=2,format="f"), dist = 0.02, angle = +135, col = "black", cex = 1.0, fv, res ) { # Function for drawing tickmarks on a ROC-curve # for (i in 1:length(tt)) { pnt <- interp ( tt[i], fv, res ) x <- 1-pnt[2] y <- pnt[1] lines( c( x, x+dist*cos(pi*angle/180) ), c( y, y+dist*sin(pi*angle/180) ), col=col ) text( x+dist*cos(pi*angle/180), y+dist*sin(pi*angle/180), txt[i], col=col, adj=c( as.numeric(abs(angle)>=90), as.numeric( angle <= 0)), cex=cex ) } } ROC <- function ( test = NULL, stat = NULL, form = NULL, plot = c( "sp", "ROC" ), PS = is.null(test), # Curves on probability scale PV = TRUE, # sn, sp, PV printed at "optimality" point MX = TRUE, # tick at "optimality" point MI = TRUE, # Model fit printed AUC = TRUE, # Area under the curve printed grid = seq(0,100,10), # Background grid (%) col.grid = gray( 0.9 ), cuts = NULL, lwd = 2, data = parent.frame(), ... ) { # First all the computations # # Name of the response rnam <- if ( !missing( test ) ) deparse( substitute( test ) ) else "lr.eta" # Fit the model and get the info for the two possible types of input if( is.null( form ) ) { if( is.null( stat ) | is.null( test ) ) stop( "Either 'test' AND 'stat' OR 'formula' must be supplied!" ) lr <- glm( stat ~ test, family=binomial )#, data=data ) resp <- stat Model.inf <- paste("Model: ", deparse( substitute( stat ) ), "~", deparse( substitute( test ) ) ) } else { lr <- glm(form, family = binomial, data = data) resp <- eval( parse(text = deparse(form[[2]])), envir=lr$model ) Model.inf <- paste("Model: ",paste(paste(form)[c(2,1,3)], collapse=" ")) } # From the empirical distribution function for test for each of # the two categories of resp. # First a table of the test (continuous variable) vs. the response and # adding a row of 0s so that we have all points for the ROC curve m <- as.matrix( base::table( switch( PS+1, test, lr$fit ), resp ) ) m <- addmargins( rbind( 0, m ), 2 ) # What values of test/eta do the rows refer to fv <- c( -Inf, sort( unique( switch( PS+1, test, lr$fit ) ) ) ) # How many rows in this matrix nr <- nrow(m) # Calculate the empirical distribution functions (well, cumulative numbers): m <- apply( m, 2, cumsum ) # Then the relevant measures are computed. sns <- (m[nr,2]-m[,2]) / m[nr,2] spc <- m[,1] / m[nr,1] pvp <- m[,2] / m[,3] pvn <- (m[nr,1]-m[,1]) / ( m[nr,3]-m[,3] ) res <- data.frame( cbind( sns, spc, pvp, pvn, fv ) ) names( res ) <- c( "sens", "spec", "pvp", "pvn", rnam ) # AUC by triangulation auc <- sum( (res[-1,"sens"]+res[-nr,"sens"])/2 * abs(diff(1-res[,"spec"])) ) # Plot of sens, spec, PV+, PV-: if ( any( !is.na( match( c( "SP", "SNSP", "SPV" ), toupper( plot ) ) ) ) ) { # First for probability scale if ( PS ) { plot( 0:1, 0:1, xlim=0:1, xlab="Cutpoint for predicted probability", ylim=0:1, ylab=" ", type="n" ) if( is.numeric( grid ) ) abline( h=grid/100, v=grid/100, col=col.grid ) box() for ( j in 4:1 ){ steplines( fv, res[,j], lty=1, lwd=lwd, col=gray((j+1)/7)) } text( 0, 1.01, "Sensitivity", cex=0.7, adj=c(0,0), font=2 ) text( 1, 1.01, "Specificity", cex=0.7, adj=c(1,0), font=2 ) text( 0, m[nr,2]/m[nr,3]-0.01, "PV+", cex=0.7, adj=c(0,1), font=2 ) text( 0 + strwidth( "PV+", cex=0.7 ), m[nr,2]/m[nr,3]-0.01, paste( " (= ", m[nr,2],"/", m[nr,3], " =", formatC( 100*m[nr,2]/m[nr,3], digits=3 ), "%)", sep=""), adj=c(0,1), cex=0.7 ) text( 1, 1-m[nr,2]/m[nr,3]-0.01, "PV-", cex=0.7, adj=c(1,1), font=2 ) } # then for test-variable scale else { xl <- range( test ) plot( xl, 0:1, xlim=xl, xlab=paste( deparse( substitute( test ) ), "(quantiles)" ), ylim=0:1, ylab=" ", type="n" ) if( is.numeric( grid ) ) abline( h=grid/100, v=quantile( test, grid/100 ), col=col.grid ) box() for ( j in 4:1 ){ steplines( fv, res[,j], lty=1, lwd=lwd, col=gray((j+1)/7))} text( xl[1], 1.01, "Sensitivity", cex=0.7, adj=c(0,0), font=2 ) text( xl[2], 1.01, "Specificity", cex=0.7, adj=c(1,0), font=2 ) text( xl[1], m[nr,2]/m[nr,3]-0.01, "PV+", cex=0.7, adj=c(0,1), font=2 ) text( xl[1] + strwidth( "PV+", cex=0.7 ), m[nr,2]/m[nr,3]-0.01, paste( " (= ", m[nr,2],"/", m[nr,3], " =", formatC( 100*m[nr,2]/m[nr,3], digits=3 ), "%)", sep=""), adj=c(0,1), cex=0.7 ) text( xl[2], 1-m[nr,2]/m[nr,3]-0.01, "PV-", cex=0.7, adj=c(1,1), font=2 ) } } # Plot of ROC-curve: if ( any( !is.na( match( "ROC", toupper( plot ) ) ) ) ) { plot( 1-res[,2], res[,1], xlim=0:1, xlab="1-Specificity", ylim=0:1, ylab= "Sensitivity", type="n", ...) if( is.numeric( grid ) ) abline( h=grid/100, v=grid/100, col=gray( 0.9 ) ) abline( 0, 1, col=gray( 0.4 ) ) box() lines( 1-res[,"spec"], res[,"sens"], lwd=lwd ) # Tickmarks on the ROC-curve if ( !is.null(cuts) ) { ROC.tic( cuts, txt=formatC( cuts, digits=2, format="f" ), fv=fv, res=res, dist=0.03, cex=0.7) } # Plot of optimality point if (MX) { mx <- max( res[,1]+res[,2] ) mhv <- which( (res[,1]+res[,2])==mx )[1] mxf <- fv[mhv] abline( mx-1, 1, col=gray(0.4) ) ROC.tic( mxf, txt=paste( rnam, "=", formatC( mxf, format="f", digits=3 ) ), fv=fv, res=res, dist=0.03, cex=0.7, angle=135 ) } # Model information if (MI) { crn <- par()$usr text(0.95*crn[2]+0.05*crn[1], 0.07, Model.inf, adj=c(1,0.5),cex=0.7) cf <- summary(lr)$coef[,1:2] nf <- dimnames(cf)[[1]] text(0.95*crn[2]+0.05*crn[1], 0.10, paste("Variable\ \ \ \ \ \ est.\ \ \ \ \ (s.e.) \ \ \n", paste(rbind(nf, rep("\ \ \ \ ",length(nf)), formatC(cf[,1],digits=3,format="f"), rep("\ \ \ (",length(nf)), formatC(cf[,2],digits=3,format="f"), rep(")",length(nf)), rep("\n",length(nf))), collapse=""), collapse=""), adj=c(1,0), cex=0.7 ) } # Print the area under the curve if (AUC) { crn <- par()$usr text( 0.95*crn[2]+0.05*crn[1], 0.00, paste( "Area under the curve:", formatC( auc, format="f", digits=3, width=5 ) ), adj=c(1,0), cex=0.7 ) } # Predictive values at maximum if (PV) { if(!MX) { mx <- max(res[,1]+res[,2]) mhv <- which((res[,1]+res[,2])==mx) mxf <- fv[mhv] } ROC.tic(mxf, fv=fv, res=res, txt= paste( "Sens: ", formatC(100*res[mhv,1],digits=1,format="f"), "%\n", "Spec: ", formatC(100*res[mhv,2],digits=1,format="f"), "%\n", "PV+: ", formatC(100*res[mhv,3],digits=1,format="f"), "%\n", "PV-: ", formatC(100*res[mhv,4],digits=1,format="f"), "%", sep="" ), dist=0.1, cex=0.7, angle=-45 ) } } invisible( list( res=res, AUC=auc, lr=lr ) ) } Epi/R/ftrend.R0000644000176200001440000000520312531361077012602 0ustar liggesusers"ftrend" <- function(object, ...) { if(length(object$xlevels) == 0) { stop("No factors in model") } xname <- names(object$xlevels)[1] if (!identical(object$contrasts[[1]], "contr.treatment")) { stop(paste("Treatment contrasts must be used for variable", xname)) } xlevels <- object$xlevels[[1]] nlevels <- length(xlevels) coefnames <- paste(xname, xlevels, sep="") ncoef <- length(coef(object)) if (!all(coefnames %in% names(coef(object)))) { stop("The model must not have an intercept term") } index1 <- match(coefnames, names(coef(object))) index2 <- (1:ncoef)[-index1] m <- length(index1) ncov <- length(index2) ## Centre the covariates according to Greenland et al (weighted mean = 0) X0 <- model.matrix(object) if (!is.null(object$weights)) { mu <- -apply(X0, 2, weighted.mean, object$weights )[index2] } else { mu <- -apply(X0, 2, mean)[index2] } mu.full <- rep(0, ncoef) mu.full[index2] <- mu X <- sweep(X0, 2, mu.full, "+") ## Information matrix with centred covariates if (!is.null(object$weights)) { J <- crossprod(X, sweep(X, 1, object$weights, "*")) } else { ## linear models J <- crossprod(X,X) } J11 <- J[index1, index1] J12 <- J[index1, index2] J21 <- J[index2, index1] J22 <- J[index2, index2] ## Variance matrix V <- solve(J) V11 <- V[index1, index1] V12 <- V[index1, index2] V21 <- V[index2, index1] V22 <- V[index2, index2] cal.V <- function(mu) { one <- as.matrix(rep(1,m)) mu <- as.matrix(mu) return(V11 - one %*% t(mu) %*% V21 - V12 %*% mu %*% t(one) + matrix(1, m, m) * (t(mu) %*% V22 %*% mu)[1,1]) } f <- function(mu) { V.mu <- cal.V(mu) # lambda is current vector of floating variances D <- sum(diag(V.mu)/lambda) - c(determinant(V.mu)$modulus) + sum(log(lambda)) - m S <- (1/sum(diag(J11)) + t(mu) %*% solve(J22) %*% mu)[1,1] grad1 <- - t(1/lambda) %*% V12 grad2 <- + sum(1/lambda) * t(mu) %*% V22 grad3 <- - t(mu) %*% solve(J22)/S attr(D,"gradient") <- 2 * (grad1 + grad2 + grad3) H1 <- V22 * sum(1/lambda) H2 <- -solve(J22)/S b <- solve(J22) %*% mu/S H3 <- 2 * b %*% t(b) attr(D, "hessian") <- 2 * (H1 + H2 + H3) return(D) } ## Initial value of lambda lambda <- diag(V[index1,index1]) ## Do the minimization nlm.out <- nlm(f, rep(0,ncov), check.analyticals=TRUE, ...) mu2 <- nlm.out$estimate ## Calculate parameter values and their covariance matrix ## if the covariates are appropriately centred coef <- coef(object)[index1] - c(crossprod(mu + mu2, coef(object)[index2])) return(list(coef=coef, vcov=cal.V(mu2))) } Epi/R/Lexis.diagram.R0000644000176200001440000000742312531361077014015 0ustar liggesusersLexis.diagram <- function( age = c( 0, 60), alab = "Age", date = c( 1940, 2000 ), dlab = "Calendar time", int = 5, lab.int = 2*int, col.life = "black", lwd.life = 2, age.grid = TRUE, date.grid = TRUE, coh.grid = FALSE, col.grid = gray(0.7), lwd.grid = 1, las = 1, entry.date = NA, entry.age = NA, exit.date = NA, exit.age = NA, risk.time = NA, birth.date = NA, fail = NA, cex.fail = 1.1, pch.fail = c(NA,16), col.fail = rep( col.life, 2 ), data = NULL, ... ) { # Function to plot a Lexis-diagram # # BxC, 2002, revsions in 2005 ## Get variables from data argument, if supplied, or from parent ## frame if not. entry.date <- eval(substitute(entry.date), data) entry.age <- eval(substitute(entry.age ), data) exit.date <- eval(substitute(exit.date ), data) exit.age <- eval(substitute(exit.age ), data) risk.time <- eval(substitute(birth.date), data) birth.date <- eval(substitute(birth.date), data) fail <- eval(substitute(fail ), data) # First expand intervals to both dimensions # int[1:2] <- c( int, int)[1:2] lab.int[1:2] <- c(lab.int,lab.int)[1:2] # Plot the diagram # plot( NA, xlim=date, xaxt="n", xaxs="i", xlab=dlab, ylim=age, yaxt="n", yaxs="i", ylab=alab, ... ) axis( side=1, at=seq( date[1], date[2], lab.int[2] ), las=las ) axis( side=2, at=seq( age[1], age[2], lab.int[1] ), las=las ) box( col="white" ) # par("fg") ) # Then the required grids # if ( age.grid ) { abline( h = seq( age[1], age[2], int[1] ), col=col.grid, lwd=lwd.grid ) } if ( date.grid ) { abline( v = seq( date[1], date[2], int[2] ), col=col.grid, lwd=lwd.grid ) } ages <- seq( age[1], age[2], min( int ) ) dates <- seq( date[1], date[2], min( int ) ) if ( coh.grid ) { segments( rep( date[1], length( ages ) ), ages, pmin( date[1] + ( age[2] - ages ), date[2] ), pmin( ages + ( date[2] - date[1] ), age[2] ), col=col.grid, lwd=lwd.grid ) segments( dates, rep( age[1], length( dates ) ), pmin( dates + ( age[2] - age[1] ), date[2] ), pmin( age[1] + ( date[2] - dates ), age[2] ), col=col.grid, lwd=lwd.grid ) } # Check if data for lifelines is supplied and plot lifelines if so # if( sum( !is.na( list( entry.date, entry.age, exit.date, exit.age, birth.date, risk.time ) ) ) > 2 ) { LL <- Lexis.lines( entry.date = entry.date, exit.date = exit.date, birth.date = birth.date, entry.age = entry.age, exit.age = exit.age, risk.time = risk.time, col.life = col.life, lwd.life = lwd.life, fail = fail, cex.fail = cex.fail, pch.fail = pch.fail, col.fail = col.fail, data = data ) invisible( LL ) } } Epi/R/LCa.fit.R0000644000176200001440000005332013320763654012547 0ustar liggesusers###################################################################### ### estimation method LCa.fit <- function( data, A, P, D, Y, model = "APa", # or one of "ACa", "APaC", "APCa" or "APaCa" a.ref, # age reference for the interactions pi.ref = a.ref, # age reference for the period interaction ci.ref = a.ref, # age reference for the cohort interaction p.ref, # period reference for the intercation c.ref, # cohort reference for the interactions npar = c(a = 6, # no. knots for main age-effect p = 6, # no. knots for peroid-effect c = 6, # no. knots for cohort-effect pi = 6, # no. knots for age in the period interaction ci = 6), # no. knots for age in the cohort interaction VC = TRUE, # numerical calculation of the Hessia? alpha = 0.05, # 1 minus confidence level eps = 1e-6, # convergence criterion maxit = 100, # max. no iterations quiet = TRUE ) # cut the crap { # "model" must have values in c(APa/ACa/APaC/APCa/APaCa)? if( !(model %in% c("APa","ACa","APaC","APCa","APaCa")) ) stop( '"model" must be one of "APa","ACa","APaC","APCa","APaCa", but is', model,'\n' ) # Which main effects and interactions are in the model intP <- as.logical(length(grep("Pa",model))) intC <- as.logical(length(grep("Ca",model))) mainP <- as.logical(length(grep("P" ,model))) # Also includes the age-period interaction mainC <- as.logical(length(grep("C" ,model))) # Also includes the age-cohort product # if a dataframe is supplied, fish out data and put in the function's environment if( !missing(data) ) { if (length(match(c("A", "P", "D", "Y"), names(data))) != 4) stop("Data frame ", deparse(substitute(data)), " has columns:\n", names(data), "\nmust have variables:\n", "A (age), P (period), D (cases) and Y (person-time)") data <- data[,c("A","P","D","Y")] data <- data[complete.cases(data),] A <- data$A P <- data$P D <- data$D Y <- data$Y } else { # if single vectors supplied, check they are all there nm <- c(missing(A), missing(P), missing(D), missing(Y)) if (any(nm)) stop("Variable", if (sum(nm) > 1) "s", paste(c(" A", " P", " D", " Y")[nm], collapse = ","), " missing from input") # and that they have the same length if( diff(range( lv <- c( length(A), length(P), length(D), length(Y) ) )) != 0 ) stop( "\nLengths of variables (", paste(paste(names(lv), lv, sep = ":"), collapse = ", "), ") are not the same." ) } # end of data acquisition # code-simplifier for knot calculation eqqnt <- function(n) round( (1:n-0.5)/n, 2 ) # Define knots - we compute also the knots not needed if( is.list(npar) ) { # Check if npar is a *named* list if( is.null(names(npar)) ) stop( "If npar= is a list, it must be a *named* list.\n" ) # Fill in a bogus 1 if some of the items are missing for(ee in c('a.kn','p.kn','c.kn','pi.kn','ci.kn') ) if(is.null(npar[[ee]])) npar[[ee]] <- 1 a.kn <- if( length(npar$a )>1 ) npar$a else quantile( rep( A,D), probs=eqqnt(npar$a ) ) p.kn <- if( length(npar$p )>1 ) npar$p else quantile( rep(P ,D), probs=eqqnt(npar$p ) ) c.kn <- if( length(npar$c )>1 ) npar$c else quantile( rep(P-A,D), probs=eqqnt(npar$c ) ) pi.kn <- if( length(npar$pi)>1 ) npar$pi else quantile( rep( A,D), probs=eqqnt(npar$pi) ) ci.kn <- if( length(npar$ci)>1 ) npar$ci else quantile( rep( A,D), probs=eqqnt(npar$ci) ) } else { # if npar is too short fill it up npar <- rep( npar, 5 )[1:5] # if not named, name it and notify if( is.null(names(npar)) ) names(npar) <- c("a","p","c","pi","ci") a.kn <- quantile( rep( A,D), probs=eqqnt(npar["a"] ) ) p.kn <- quantile( rep(P ,D), probs=eqqnt(npar["p"] ) ) c.kn <- quantile( rep(P-A,D), probs=eqqnt(npar["c"] ) ) pi.kn <- quantile( rep( A,D), probs=eqqnt(npar["pi"]) ) ci.kn <- quantile( rep( A,D), probs=eqqnt(npar["ci"]) ) } # Reference points if( missing( p.ref) ) p.ref <- median( rep(P ,D) ) if( missing( c.ref) ) c.ref <- median( rep(P-A,D) ) if( missing(pi.ref) ) pi.ref <- median( rep( A,D) ) if( missing(ci.ref) ) ci.ref <- median( rep( A,D) ) ############################################################################ # Here starts the actual modelling commence <- Sys.time() # Matrices to extract the age-interaction terms at reference points Ap <- Ns( rep(pi.ref,length(A)), knots=pi.kn, intercept=TRUE ) Ac <- Ns( rep(ci.ref,length(A)), knots=ci.kn, intercept=TRUE ) # Current age-effects (in the iteration these will be term predictions) ba <- matrix( 1, length(A), 2 ) # cbind( rep(1,length(A)), 1 ) # set to 0 if term is not in model at all if( !mainP ) ba[,1] <- 0 if( !mainC ) ba[,2] <- 0 # Main effects model with (at least one) age-interaction # --- at this stage it is either 0 or 1 mat <- glm( D ~ -1 + Ns( A, knots=a.kn, intercept=TRUE ) + Ns( P , knots=p.kn, ref=p.ref):ba[,1] + Ns( P-A, knots=c.kn, ref=c.ref):ba[,2], offset = log(Y), family = poisson ) oldmb <- oldmat <- mat$deviance # Terms prediction --- three terms here. # No need to divide by the ba at this point, it is eiter 1 or 0 pat <- predict( mat, type="terms" ) # iteration counter and continuation indicator nit <- 0 one.more <- TRUE # For simple formatting of the iteration output fC <- function(x,d) formatC(x,format="f",digits=d) # now, iterate till convergence while( one.more ) { nit <- nit+1 # The estimated terms from the modeling of the APC-effects to be used # as offsets Aoff <- pat[,1] Pint <- Poff <- pat[,2] Cint <- Coff <- pat[,3] # P or C terms with main effects should be either in interaction or # offset, so one of these should always be 0 if( intP ) Poff <- Poff*0 else Pint <- Pint*0 if( intC ) Coff <- Coff*0 else Cint <- Cint*0 # Iteration of the age-components of the interaction mb <- glm( D ~ -1 + Ns( A, knots=pi.kn, intercept=TRUE ):Pint + Ns( A, knots=ci.kn, intercept=TRUE ):Cint, offset = Aoff + Poff + Coff + log(Y), family = poisson ) # Get the age-interaction terms only, and if one is not needed set to 0 ba <- predict( mb, type="terms" ) / cbind(Pint,Cint) / cbind( ci.lin( mb, subset="pi.kn", ctr.mat=Ap)[,1], # These are the values at the reference ci.lin( mb, subset="ci.kn", ctr.mat=Ac)[,1] ) # point for A; we want the RRs as effects ba[is.na(ba)] <- 0 # If no interaction only main should be fitted; if no main effect, set to 0 using mainP/C if( !intP ) ba[,1] <- rep(1,length(A)) * mainP if( !intC ) ba[,2] <- rep(1,length(A)) * mainC # apc model with assumed known interactions with age mat <- glm( D ~ -1 + Ns( A, knots=a.kn, intercept=TRUE ) + Ns( P , knots=p.kn, ref=p.ref):ba[,1] + Ns( P-A, knots=c.kn, ref=c.ref):ba[,2], offset = log(Y), family = poisson ) # extract age and period terms - rmoving the interactions pat <- predict( mat, type="terms" ) / cbind( 1, ba ) pat[is.na(pat)] <- 0 # convergence? Check both that the two models give the same deviance # and that the chnage in each is small newmat <- mat$deviance newmb <- mb$deviance conv <- ( reldif <- max( abs(newmat-newmb )/(newmat+newmb)/2, abs(oldmat-newmat)/ newmat, abs(oldmb -newmb )/ newmb) ) < eps one.more <- ( !conv & ( nit < maxit ) ) oldmat <- newmat oldmb <- newmb if( !quiet & nit==1 ) cat( " Deviances: model(AT) model(A) Rel. diff.\n" ) if( !quiet ) cat( "Iteration", formatC( nit, width=3, flag=" "), "", fC(mat$deviance,3), fC( mb$deviance,3), fC( reldif, 7 ), "\n" ) } # end of iteration loop # Deviance and d.f - there is a "+1" because the intercept is in both models # but not explicit, (both models fitted with "-1"), hence the df.null # is the total no. observations dev <- mb$deviance df <- mat$df.null - ( mb$df.null- mb$df.res # no. parms in mb + mat$df.null-mat$df.res # no. parms in mat - 1 ) # common intercept if( conv ) cat( "LCa.fit convergence in ", nit, " iterations, deviance:", dev, "on", df, "d.f.\n") if( !conv ) cat( "LCa.fit *not* converged in ", nit, " iterations:\ndeviance (AT):", mat$deviance, ", deviance (B):" , mb$deviance, "\n", if( VC ) "...no variance-covariance computed.\n" ) fin <- Sys.time() if( !quiet ) cat("...using", round(difftime(fin,commence,units="secs"),1), "seconds.\n") # unique values of A, P and C in the dataset for reporting effects a.pt <- sort(unique( A)) p.pt <- sort(unique(P )) c.pt <- sort(unique(P-A)) # extract effects from final models after convergence ax <- ci.exp( mat, subset= "a.kn", ctr.mat=Ns(a.pt,knots= a.kn,intercept=TRUE ) ) kp <- ci.exp( mat, subset= "p.kn", ctr.mat=Ns(p.pt,knots= p.kn,ref=p.ref) ) kc <- ci.exp( mat, subset= "c.kn", ctr.mat=Ns(c.pt,knots= c.kn,ref=c.ref) ) pi <- ci.exp( mb , subset="pi.kn", ctr.mat=Ns(a.pt,knots=pi.kn,intercept=TRUE), Exp=FALSE ) ci <- ci.exp( mb , subset="ci.kn", ctr.mat=Ns(a.pt,knots=ci.kn,intercept=TRUE), Exp=FALSE ) # Label the estimated effects rownames( ax ) <- rownames( pi ) <- rownames( ci ) <- a.pt rownames( kp ) <- p.pt rownames( kc ) <- c.pt # do we bother about the correct variance-covariance? if( VC & conv ) # ...certainly not without convergence { commence <- Sys.time() if( !quiet ) cat("...computing Hessian by numerical differentiation...\n") # the number of parameters for each of the 5 effects na <- length( grep( "a.kn", names(coef(mat)) ) ) np <- length( grep( "p.kn", names(coef(mat)) ) ) nc <- length( grep( "c.kn", names(coef(mat)) ) ) npi <- length( grep( "pi.kn", names(coef(mb )) ) ) nci <- length( grep( "ci.kn", names(coef(mb )) ) ) # get only the parameters for effects that are non-zero (the others # are in the models but they are 0) ml.cf <- c( coef(mat)[c(rep(TRUE,na), rep(mainP,np), rep(mainC,nc))], coef(mb)[c(rep(intP,npi), rep(intC,nci))] ) # and some more snappy names for the parameters: first all names all.nam <- c( paste("ax",1:na,sep=""), paste("kp",1:np,sep=""), paste("kc",1:nc,sep=""), paste("pi",1:npi,sep=""), paste("ci",1:nci,sep="") ) # ...then those actually present in the model names( ml.cf ) <- all.nam[c(rep( TRUE,na), rep(mainP,np), rep(mainC,nc), rep(intP,npi), rep(intC,nci))] # We need the variance-covariance of the estimates as the 2nd # derivative of the log-likelihood, D*log(lambda) - lambda*Y, # or for eta=log(lambda), D*eta - exp(eta)*Y, # assuming the sequence of parameters is ax, kp, kc, pi, ci # (first A, P, C from model mat, then Pa, Ca from model mb) # Note that we cannot simplify this calculation because the model is # non-linear in pi,kp resp. ci,kc # Matrices to use in calculation of the terms of the model for each parms MA <- Ns( A, knots= a.kn, intercept=TRUE ) Mp <- Ns( P , knots= p.kn, ref=p.ref ) Mc <- Ns( P-A, knots= c.kn, ref=c.ref ) Mpi <- Ns( A, knots=pi.kn, intercept=TRUE ) Mci <- Ns( A, knots=ci.kn, intercept=TRUE ) # Computing the log-likelihood for any set of parameters llik <- function( parms ) { ax <- MA %*% parms[ 1:na] ; nn <- na if( mainP ) { kp <- Mp %*% parms[nn+1:np] ; nn <- nn+np } else kp = rep(0,length(ax)) if( mainC ) { kc <- Mc %*% parms[nn+1:nc] ; nn <- nn+nc } else kc = rep(0,length(ax)) if( intP ) { pi <- Mpi %*% parms[nn+1:npi] ; nn <- nn+npi} else pi = rep(1,length(ax)) if( intC ) { ci <- Mci %*% parms[nn+1:nci] } else ci = rep(1,length(ax)) eta <- ax + pi*kp + ci*kc sum( D*eta - exp(eta)*Y ) } # Numerical calculation of the Hessian for llik ivar <- -numDeriv::hessian( llik, ml.cf ) # Sometimes not quite positive definite, fix that after inverting the Hessian vcov <- Matrix::nearPD( solve( ivar ) ) vcov <- as.matrix( vcov$mat ) fin <- Sys.time() if( !quiet ) cat("...done - in", round(difftime(fin,commence,units="secs"),1), "seconds.\n") # Since we now have the variances of the parameters for each of the # effects we can compute corrected c.i.s for the effects se.eff <- function( sub, cM, Alpha=alpha ) { wh <- grep( sub, names(ml.cf) ) res <- cbind( cM %*% ml.cf[wh], sqrt( diag( cM %*% vcov[wh,wh] %*% t(cM) ) ) ) %*% ci.mat(alpha=Alpha) colnames(res)[1] <- paste( "Joint", colnames(res)[1] ) res } # Append the corrected c.i.s to the effect objects ax <- cbind( ax, exp( se.eff( "ax", Ns(a.pt,knots= a.kn,intercept=TRUE) ) ) ) if( mainP ) kp <- cbind( kp, exp( se.eff( "kp", Ns(p.pt,knots= p.kn,ref=p.ref) ) ) ) if( mainC ) kc <- cbind( kc, exp( se.eff( "kc", Ns(c.pt,knots= c.kn,ref=c.ref) ) ) ) if( intP ) pi <- cbind( pi, se.eff( "pi", Ns(a.pt,knots=pi.kn,intercept=TRUE) ) ) if( intC ) ci <- cbind( ci, se.eff( "ci", Ns(a.pt,knots=ci.kn,intercept=TRUE) ) ) } # Collect refs and knots in lists klist <- list( a.kn=a.kn, pi.kn=pi.kn, p.kn=p.kn, ci.kn=ci.kn, c.kn=c.kn ) rlist <- list( pi.ref=pi.ref, p.ref=p.ref, ci.ref=ci.ref, c.ref=c.ref ) # Finally output object res <- list( model = model, ax = ax, pi = if( intP ) pi else NULL, kp = if( mainP ) kp else NULL, ci = if( intC ) ci else NULL, kc = if( mainC ) kc else NULL, mod.at = mat, mod.b = mb, coef = if( VC & conv ) ml.cf else NULL, vcov = if( VC & conv ) vcov else NULL, knots = klist, refs = rlist, deviance = dev, df.residual = df, iter = nit ) # Remove redundant stuff before returning res <- res[!sapply(res,is.null)] class( res ) <- "LCa" invisible( res ) } ###################################################################### ### utility to determine the types of terms in a model model.terms <- function( x ) list( intP = as.logical(length(grep("Pa",x$model))), mainP = as.logical(length(grep("P" ,x$model))), intC = as.logical(length(grep("Ca",x$model))), mainC = as.logical(length(grep("C" ,x$model))) ) ###################################################################### ### print method print.LCa <- function( x, ... ) { # terms in the model mt <- model.terms( x ) # no. of parameters in each term npar <- sapply(x$knots,length)-1 npar[1] <- npar[1] + 1 npar <- npar[c(TRUE,mt$intP,mt$mainP,mt$intC,mt$mainC)] npar <- paste( paste( npar, c(rep(", ",length(npar)-2)," and ",""), sep=""), collapse=rep("") ) cat( paste( x$model, ": Lee-Carter model with natural splines:\n", " log(Rate) = ax(Age)", if( mt$mainP ) " + ", if( mt$intP ) "pi(Age)", if( mt$mainP ) "kp(Per)", if( mt$mainC ) " + ", if( mt$intC ) "ci(Age)", if( mt$mainC ) "kc(Coh)", "\nwith ", npar, " parameters respectively.\n", "Deviance: ", round(x$deviance,3), " on ", x$df, " d.f.\n", sep=""), if( !("vcov" %in% names(x)) ) "(only conditional c.i.s for effects)\n" ) } ###################################################################### ### summary method summary.LCa <- function( object, show.est=FALSE, ... ) { # terms in the model mt <- model.terms( object ) print( object ) # the number of parameters for each of the 5 effects na <- length( grep( "a.kn", names(coef(object$mod.at)) ) ) np <- length( grep( "p.kn", names(coef(object$mod.at)) ) ) nc <- length( grep( "c.kn", names(coef(object$mod.at)) ) ) npi <- length( grep( "pi.kn", names(coef(object$mod.b )) ) ) nci <- length( grep( "ci.kn", names(coef(object$mod.b )) ) ) # Show knots used cat( "\nKnots used:\n") for( nm in names(object$knots[c(TRUE,mt$mainP,mt$intP,mt$mainC,mt$intC)]) ) { cat( nm,"\n" ) ; print(object$knots[[nm]] ) } cf <- rbind( ci.lin(object$mod.at)[c(rep(TRUE ,na), rep(mt$mainP,np), rep(mt$mainC,nc)),1:2], ci.lin(object$mod.b )[c(rep(mt$intP ,npi), rep(mt$intC ,nci)),1:2] ) if( "vcov" %in% names(object) ) { cf <- cbind( cf, sqrt( diag(object$vcov) ) ) colnames( cf )[-1] <- c("cond.se","joint.se") } if( show.est ) print( cf ) invisible( cf ) } ###################################################################### ### plot method plot.LCa <- function( x, ... ) { # terms in the model mt <- model.terms( x ) # A small plot utility to exploit the structure of the effects plc <- function( x, ... ) matplot( as.numeric( rownames(x) ), x[,ncol(x)-2:0], type="l", lty=1, lwd=c(3,1,1), ... ) plc( x$ax, col="black", xlab="Age", ylab="Age-specific rates", log="y" ) rug( x$knots$a.kn, lwd=2 ) if( mt$intP ){ plc( x$pi, col="black", xlab="Age", ylab="Relative period log-effect multiplier" ) abline(h=1,v=x$refs$pi.ref) rug( x$knots$pi, lwd=2 ) } if( mt$mainP ){ plc( x$kp, col="black", log="y", xlab="Date of follow-up (period)", ylab="Period effect (RR)" ) abline(h=1,v=x$refs$p.ref) rug( x$knots$kp, lwd=2 ) } if( mt$intC ){ plc( x$ci, col="black", xlab="Age", ylab="Relative cohort log-effect multiplier" ) abline(h=1,v=x$refs$ci.ref) rug( x$knots$ci, lwd=2 ) } if( mt$mainC ){ plc( x$kc, col="black", log="y", xlab="Date of birth (cohort)", ylab="Cohort effect (RR)" ) abline(h=1,v=x$refs$c.ref) rug( x$knots$kc, lwd=2 ) } } ###################################################################### ### predict method predict.LCa <- function( object, newdata, alpha = 0.05, level = 1-alpha, sim = ( "vcov" %in% names(object) ), ... ) { # What main effects and interactions are in the model mt <- model.terms( object ) # is person-years suppied, otherwise use units as in the model if( "Y" %in% names(newdata) ) Y <- newdata$Y else Y <- rep(1,nrow(newdata)) # Matrices to extract effects at newdata rows Ma <- Ns( newdata$A, knots = object$knots$a.kn, intercept = TRUE) Mp <- Ns( newdata$P , knots = object$knots$p.kn, ref=object$refs$p.ref ) Mc <- Ns( newdata$P-newdata$A, knots = object$knots$c.kn, ref=object$refs$c.ref ) Mpi <- Ns( newdata$A, knots = object$knots$pi.kn, intercept = TRUE) Mci <- Ns( newdata$A, knots = object$knots$ci.kn, intercept = TRUE) # Default terms values for models without interactions kp <- kc <- rep( 0, nrow(newdata) ) pi <- ci <- rep( 1, nrow(newdata) ) # P, C and interaction term(s) if included in the model if( mt$intP ) { pi <- ci.lin( object$mod.b , subset="pi.kn", ctr.mat=Mpi )[,1] kp <- ci.lin( object$mod.at, subset= "p.kn", ctr.mat=Mp )[,1] } if( mt$intC ) { ci <- ci.lin( object$mod.b , subset="ci.kn", ctr.mat=Mci )[,1] kc <- ci.lin( object$mod.at, subset= "c.kn", ctr.mat=Mc )[,1] } # First fitted values from mod.at # Note that the model object mod.at always has the same number of # parameters, for some of the models either period or cohort parameters # are 0, hence not used. pr0 <- ci.exp( object$mod.at, alpha=alpha, ctr.mat=cbind(Ma,Mp*pi,Mc*ci) ) # Then fitted values from mod.b # But mod.b has an offset beyond log(Y), namely all the APC terms lp.b <- ci.lin( object$mod.b , ctr.mat=cbind(Mpi*kp,Mci*kc) )[,1:2] lp.b[,1] <- lp.b[,1] + ci.lin( object$mod.at, ctr.mat=cbind(Ma,Mp*(!mt$intP),Mc*(!mt$intC)) )[,1] pr0 <- cbind( pr0, exp( lp.b %*% ci.mat(alpha=alpha) ) ) # label the estimates colnames( pr0 )[c(1,4)] <- c("at|b Est.","b|at Est.") # The doings above gives confidence intervals based on the conditional # models, so if we want proper intervals we should simulate instead, # using the posterior distribuion of all parameters, albeit under the # slightly fishy assumption that the joint posterior is normal... if( sim ) # also renders TRUE if sim is numerical (and not 0) { if( is.logical(sim) & sim ) sim <- 1000 # Check that there is a vcov component of the model if( !( "vcov" %in% names(object) ) ) warning( "No variance-covariance in LCa object, only conditional c.i.s available.\n", "no simulation (parametric bootstrap) is done.\n" ) else { # using the parametric bootstrap based on the parameters and the # (numerically computed) Hessian eta <- NArray( list( pt = 1:nrow(pr0), it = 1:sim ) ) parms <- MASS::mvrnorm( n = sim, mu = object$coef, Sigma = object$vcov ) na <- ncol( Ma ) np <- ncol( Mp ) nc <- ncol( Mc ) npi <- ncol( Mpi ) nci <- ncol( Mci ) # Compute the linear predictor in each of the simulated samples # period and cohort effects if not in the model kp <- kc <- rep( 0, nrow(newdata) ) pi <- ci <- rep( 1, nrow(newdata) ) for( i in 1:sim ){ ax <- Ma %*% parms[i, 1:na] ; nn <- na if( mt$mainP ) { kp <- Mp %*% parms[i,nn+1:np] ; nn <- nn+np } if( mt$mainC ) { kc <- Mc %*% parms[i,nn+1:nc] ; nn <- nn+nc } if( mt$intP ) { pi <- Mpi %*% parms[i,nn+1:npi] ; nn <- nn+npi} if( mt$intC ) { ci <- Mci %*% parms[i,nn+1:nci] } eta[,i] <- ax + pi*kp + ci*kc } # predicted rates with bootstrap confidence limits pr.sim <- exp( t( apply( eta, 1, quantile, probs=c(0.5,alpha/2,1-alpha/2), na.rm=TRUE ) ) ) colnames( pr.sim )[1] <- "Joint est." return( pr.sim ) } } else return( pr0 ) } Epi/R/Lexis.lines.R0000644000176200001440000000631012531361077013515 0ustar liggesusersLexis.lines <- function( entry.date = NA, exit.date = NA, birth.date = NA, entry.age = NA, exit.age = NA, risk.time = NA, col.life = "black", lwd.life = 2, fail = NA, cex.fail = 1, pch.fail = c(NA,16), col.fail = col.life, data = NULL ) { ## Get variables from data argument, if supplied, or from parent ## frame if not. entry.date <- eval(substitute(entry.date), data) entry.age <- eval(substitute(entry.age ), data) exit.date <- eval(substitute(exit.date ), data) exit.age <- eval(substitute(exit.age ), data) risk.time <- eval(substitute(birth.date), data) birth.date <- eval(substitute(birth.date), data) fail <- eval(substitute(fail ), data) # If fail is numeric make it logical if( is.numeric( fail ) ) fail <- ( fail > 0 ) # Complete the information on lifelines XX <- Life.lines( entry.date = entry.date, entry.age = entry.age, exit.date = exit.date, exit.age = exit.age, risk.time = risk.time, birth.date = birth.date ) # Expand lwd.life/col.life/pch.fail/col.fail/cex.fail # Np <- nrow( XX ) if( length( col.life )==1 ) col.life <- rep( col.life, Np ) else if( length( col.life )!=length(fail) ) stop("col.life must have length 1 or length(fail)" ) if( length( lwd.life )==1 ) lwd.life <- rep( lwd.life, Np ) else if( length( lwd.life )!=length(fail) ) stop("lwd.life must have length 1 or length(fail)" ) if( length( col.fail )==1 ) col.fail <- rep( col.fail, Np ) else { if( length( col.fail )==2 ) col.fail <- col.fail[fail+1] } if( length( col.fail )!=length(fail) ) stop("col.fail must have length 1,2 or length(fail)" ) if( length( pch.fail )==1 ) pch.fail <- rep( pch.fail, Np ) else if( length( pch.fail )==2 ) pch.fail <- pch.fail[fail+1] if( length( pch.fail )!=length(fail) ) stop("pch.fail must have length 1,2 or length(fail)" ) if( length( cex.fail )==1 ) cex.fail <- rep( cex.fail, Np ) else if( length( cex.fail )==2 ) cex.fail <- cex.fail[fail+1] if( length( cex.fail )!=length(fail) ) stop("cex.fail must have length 1,2 or length(fail)" ) # Was XX returned as a Date-object? # If so make a numerical version i LL, otherwise just a copy. # if( attr( XX, "Date" ) ) { LL <- data.frame( lapply( XX, unclass ) ) LL[,c(1,3,5)] <- LL[,c(1,3,5)] / 365.25 + 1970 LL[,c(2,4,6)] <- LL[,c(2,4,6)] / 365.25 } else LL <- XX # Find age and date ranges in the current plot. # date <- par( "usr" )[1:2] age <- par( "usr" )[3:4] # Plot the lifelines segments( LL[,1], LL[,2], LL[,3], LL[,4], lwd=lwd.life, col=col.life ) # If there are any non-NAs for pch.fail then blank out the space # where they go before plotting the symbols if( any( !is.na(pch.fail) ) ) points( LL[!is.na(pch.fail),3], LL[!is.na(pch.fail),4], pch=16, col="white", #par()$bg, cex=cex.fail[!is.na(pch.fail)] ) points( LL[,3], LL[,4], pch=pch.fail, col=col.fail, cex=cex.fail ) # Return the untouched version of the completed dataframe # invisible( data.frame( XX, fail=fail ) ) } Epi/R/ncut.r0000644000176200001440000000074012531361077012332 0ustar liggesusersncut <- function( x, breaks, type="left" ) { # Sorting to get the opportunity to call the function recursively. breaks <- sort( breaks ) # Get the indices, but fix the 0 indices to produce NAs: fi <- findInterval( x, breaks ) fi[fi==0] <- length( breaks ) + 1 switch( toupper( substr( type, 1, 1 ) ), "L" = breaks[fi], "R" = -ncut( -x, -breaks ), "M" = ( breaks[fi] - ncut( -x, -breaks ) ) / 2 ) } Epi/R/rcutLexis.R0000644000176200001440000000221514013245047013275 0ustar liggesusersrcutLexis <- function(Lx, cut, timescale = 1, precursor.states = transient(Lx)) { # avoid note about no visible binding new.state <- NULL lex.id <- NULL # All new states should be precursor states # new.state may be factor, hnece the as.character pr.st <- unique(c(precursor.states, unique(as.character(cut$new.state)))) # utility to select n'th element in vector getn <- function(x,n) x[n] # make the data frame a sorted, grouped tibble # note that the cut in arrange is the variable cut in the tibble cut <- group_by(cut, lex.id) cut <- arrange(cut, cut, .by_group = TRUE) # the Lexis object to return eventually nxL <- Lx # max no transitions for one person maxn <- max(table(cut$lex.id)) # loop over transition number per person for(n in 1:maxn) { # the n'th transitions for each person nx.cut <- summarize(cut, cut = getn( cut, n), new.state = getn(new.state, n) ) # update with cuts at these for each person nxL <- cutLexis(nxL, cut = nx.cut, timescale = timescale, precursor.states = pr.st ) } # done, return result nxL } Epi/R/gen.exp.R0000644000176200001440000002472713403770433012677 0ustar liggesusers# Acronyms: # dop: date of purchase # dpt: dose per time # amt: amount # dur: duration # dof: date of follow-up ###################################################################### # A function to compute cumulative doses etc. at the purchase dates # *and* derive intervals of drug coverage resp no coverage from the # purchase date, amounts and dosage per time use.amt.dpt <- function( purchase, # data frame with dop, amt and dpt push.max, rm.dose ) { do.call( "rbind", lapply( split( purchase, purchase$id ), function(set) { np <- nrow(set) if( np==1 ) # return data frame of 2 rows { dfR <- data.frame( id = set$id, dof = set$dop + c(0,set$amt/set$dpt), amt = c(set$amt,0), dpt = c(set$dpt,0), off = c(FALSE,TRUE), cum.amt = c(0,set$amt), cum.tim = c(0,set$amt/set$dpt) ) return( dfR ) } set <- set[order(set$dop),] # Compute length of exposure periods drug.dur <- set$amt / set$dpt # Put the exposed period head to foot new.start <- min( set$dop ) + c(0,cumsum(drug.dur[-np])) # Move them out so that the start of a period is never earlier than # the dop exp.start <- new.start + cummax( pmax(set$dop-new.start,0) ) # Compute the pushes push.one <- exp.start - set$dop # Revise them to the maximally acceptable push.adj <- pmin( push.one, push.max ) # Revise the starting dates of exposure exp.start <- exp.start - push.one + push.adj # Revise the durations to be at most equal to differences between the # revised starting dates drug.dur <- pmin( drug.dur, c(diff(exp.start),Inf) ) # Compute the end of the intervals exp.end <- exp.start + drug.dur # Find out which exposure intervals that are followed by a gap: followed.by.gap <- c( exp.start[-1]-exp.end[-np] > 0, TRUE ) # To facilitate further calculations we add records for the gaps # and also a record for the date of drug expiration dfR <- rbind( data.frame( id = set$id[1], dof = exp.start, amt = set$amt, dpt = set$dpt ), data.frame( id = set$id[1], dof = exp.end[followed.by.gap], amt = 0, dpt = 0 ) ) dfR <- dfR[order(dfR$dof),] # Logical indicator of intervals off drug dfR$off <- (dfR$dpt==0) | (dfR$dof < min(set$dop)) # Finally compute the cumulative dose and time on drug at the end of # the interval using interval length and dpt: if( rm.dose ) { dfR$cum.amt <- with( dfR, cumsum( c(0, diff(dof)* dpt[-length(dpt)]) ) ) } else dfR$cum.amt <- cumsum( c( 0, dfR$amt[-nrow(dfR)] ) ) dfR$cum.tim <- with( dfR, cumsum( c(0, diff(dof)*!off[-length(dpt)]) ) ) return( dfR ) } ) ) } ###################################################################### # Compute the cumulative dose at all purcase dates and at the last # (unknown) future expiry date, computed based on previous # consumption. The resulting data frame has one more line per person # than no. of purchases. use.only.amt <- function( purchase, pred.win ) { do.call( "rbind", lapply( split( purchase, purchase$id ), function(set) { np <- nrow(set) if( np==1 ) return( NULL ) set <- set[order(set$dop),] # The points to include in the calculation: # All dates after pred.win before last purchase, # but at least the last two purchase dates, wp <- ( set$dop > pmin( max(set$dop)-pred.win, sort(set$dop,decreasing=TRUE)[2] ) ) # Cumulative amount consumed at each dop since first cum.amt <- cumsum(c(0,set$amt)) # Average slope to use to project the duration of last purchase avg.slp <- diff(range(cum.amt[c(wp,FALSE)]))/ diff(range(set$dop[wp])) # Purchase dates and the date of last consumption dof <- c( set$dop, set$dop[np]+set$amt[np]/avg.slp ) # Cumulative time since first cum.tim <- dof - set$dop[1] # The only time without drug is after last dispense expired off <- rep( c(FALSE,TRUE), c(length(dof)-1,1) ) return( data.frame( id = set$id[1], dof = dof, cum.amt = cum.amt, cum.tim = cum.tim, off = off ) ) # will be used in the subsequent code } ) ) } ###################################################################### # Function to interpolate the drug exposures to the dates of FU. dex.int <- function( set, breaks, lags, lag.dec ) { dof <- NULL # If only one record return null if( nrow(set) < 2 ) return( NULL ) # All values of these are identical within each set (=person) doe <- set$doe[1] dox <- set$dox[1] # The first date of drug exposure according to the assumption doi <- min(set$dof) # Breakpoints and the entry end exit dates are the dates we care for # - but only within breaks doin <- max( min(breaks), doe ) doex <- min( max(breaks), dox ) breaks <- sort( unique( c(breaks,doin,doex) ) ) # only the breaks inside the follow-up interval xval <- breaks[breaks>=doin & breaks<=doex] if( length(xval) == 0 ) return( NULL ) # Merge a) the purchase dates (set$dof) and # indicator being off drug (set$off) and # the date a person goes off drug, doff (set to NA for remaining records) # with b) the break dates (which is where we want things computed) # Note we merge on the variable dof and have the data frame with # dof=xval as the >first< so that values of xval will be in the # resulting dfr$dof even if dof-values in set are almost equal til # an xval value. Ensures that sum(dfr$dof %in% xval)==length(xval) dfr <- merge( data.frame( id = set$id[1], dof = xval ), data.frame( set[,c("id","dof","off")], doff = ifelse(set$off,set$dof,NA) ), all=TRUE ) # carry the off drug indicator forward to all break dates dfr$off <- zoo::na.locf( dfr$off, na.rm=FALSE ) # possible NAs are before any drug purchase hence off-drug dfr$off <- ifelse( is.na(dfr$off), TRUE, dfr$off ) # carry date of going off drug forward, but only for the off period dfr$doff <- zoo::na.locf( dfr$doff, na.rm=FALSE ) * ifelse(dfr$off,1,NA) # time from cessation can now be computed dfr$tfc <- dfr$dof - dfr$doff # time from initiation of drug dfr$tfi <- pmax( 0, dfr$dof-doi ) # restrict to the desired timepoints dfr <- subset( dfr, dof %in% xval ) dfr <- dfr[!duplicated(dfr$dof),] # linear interpolation of the cumulative dose and time from the # purchase data (set) dfr$cdos <- approx( set$dof, set$cum.amt, xout=xval, rule=2 )$y dfr$ctim <- approx( set$dof, set$cum.tim, xout=xval, rule=2 )$y # the same for the desired lags for( lg in lags ) dfr[,paste( "lag.pre", formatC(lg,format="f",digits=lag.dec), sep="" )] <- approx( set$dof, set$cum.amt, xout=xval-lg, rule=2 )$y dfr$doff <- zoo::na.locf( dfr$doff, na.rm=FALSE ) dfr$tfc[is.na(dfr$tfc)] <- 0 dfr$dur <- c( diff(dfr$dof), NA ) return( dfr[-nrow(dfr),] ) } ###################################################################### # The function that ties it all together gen.exp <- function( purchase, id="id" , dop="dop", amt="amt", dpt="dpt", fu, doe="doe", dox="dox", breaks, use.dpt = ( dpt %in% names(purchase) ), push.max = Inf, rm.dose = FALSE, lags = NULL, lag.dec = 1, lag.pre = "lag.", pred.win = Inf ) { # to aviod a NOTE from R CMD check dof <- NULL # Make sure that the data frames have the right column names wh <- match( c(id,dop,amt), names(purchase) ) if( any( is.na(wh) ) ) stop("Wrong column names for the purchase data frame") names( purchase )[wh] <- c("id","dop","amt") # Allow dpt to be entered as numerical scalar common for all records if( use.dpt ) if( is.numeric(dpt) ) { if( length(dpt) > 1 ) stop("If dpt is numeric it must have length 1\n", "otherwise it must be the name of the dpt variable in the dataset") purchase$dpt <- dpt } else names( purchase )[match(dpt,names(purchase))] <- "dpt" wh <- match( c(id,doe,dox), names(fu) ) if( any( is.na(wh) ) ) stop("Wrong column names for the follow-up data frame") names( fu )[wh] <- c("id","doe","dox") if( use.dpt ) { tmp.dfr <- use.amt.dpt( purchase, push.max = push.max, rm.dose = rm.dose ) } else { tmp.dfr <- use.only.amt( purchase, pred.win = pred.win ) } # Having done what needs to be done about the purchase records we turn # to the follow-up records, but we first need to accommodate the fact # that there might be more fu records per person: # Generate record no within id in fu (ordering in fu is immaterial) fu$no <- ave( fu$id, fu$id, FUN=function(x) 1:length(x) ) # Set up the object to collect the resulting follow-up res <- NULL # loop through subsets of fu with different ids for( ni in 1:max(fu$no) ) { # Merge the follow-up period for the persons to the correponding # exposure records (hence the all.y=T) tm.dfr <- merge( tmp.dfr, fu[fu$no==ni,], by="id", all.y=TRUE ) # Interpolate to find the cumulative doses at the dates in the vector breaks res.dfr <- do.call( "rbind", lapply( split( tm.dfr, tm.dfr$id ), dex.int, breaks, lags, lag.dec ) ) # end of do.call res <- rbind( res, res.dfr ) # append to result from other fu$no } # end of for( ni in 1:max(fu$no) ) var.order <- c("id","dof","dur","off","doff","tfc","tfi","ctim","cdos", names(res)[grep("lag.prefix",names(res))] ) res <- res[order(res$id,res$dof),var.order] names(res) <- gsub( "lag.prefix", lag.pre, names(res) ) res } # end of gen.ex Epi/R/list.lex.R0000644000176200001440000000057513562341466013076 0ustar liggesuserslist.lex <- function( Lx, dig, sh="_" ) { wh <- c("lex.id",timeScales(Lx),"lex.dur","lex.Cst","lex.Xst") oth <- setdiff(names(Lx),wh) tmpLx <- Lx[,c(wh,oth)] wh.num <- sapply(tmpLx,is.numeric) tmpLx[,wh.num] <- round(tmpLx[,wh.num],dig) names(tmpLx) <- gsub("lex.",sh,names(tmpLx)) print( tmpLx, row.names=FALSE ) return( NULL ) } Epi/R/lls.R0000644000176200001440000000242113052220176012102 0ustar liggesuserslls <- # A function that expands the functionality of ls() function( pos = 1, pat = "", all=FALSE, print=TRUE ) { # First a function that returns length/dim when you ask for it dimx <- function(dd) if (is.null(dim(dd))) length(dd) else dim(dd) # A vector of object names lll <- ls( pos=pos, pattern=pat, all.names=all ) # Are there any objects at all? if( length(lll) > 0 ) { obj.mode <- obj.clas <- obj.dimx <- obj.size <- character(0) # Then find mode, class, name and dimension of them and return it for(i in 1:length(lll)) { obj.mode[i] <- eval( parse(text = paste( "mode(`", lll[i], "`)",sep=""))) obj.clas[i] <- paste( eval( parse(text = paste( "class(`", lll[i], "`)",sep=""))), collapse=" " ) obj.dimx[i] <- paste( eval( parse(text = paste( "dimx(`", lll[i], "`)",sep=""))), collapse=" " ) obj.size[i] <- formatC( eval( parse(text = paste("unclass(object.size(`", lll[i], "`))",sep="")))/2^10, format="f", digits=1, big.mark=",", width=14, flag=" " ) } dfr <- data.frame( name = lll, mode = obj.mode, class = obj.clas, dim = obj.dimx, sizeKbytes = obj.size, stringsAsFactors=FALSE ) names( dfr )[5] <- " size(Kb)" print( invisible( dfr ), right=FALSE ) } } Epi/R/print.floated.R0000644000176200001440000000160312531361077014071 0ustar liggesusers"print.floated" <- function(x, digits=max(3, getOption("digits") - 3), level = 0.95, ...) { K <- qnorm((1+level)/2) n <- length(x$coef) mat <- matrix("", n, 4) ci.mat <- matrix(0, n, 2) cm <- x$coefmat cat("Floating treatment contrasts for factor ", x$factor, "\n\n") mat[,1] <- names(x$coef) se <- sqrt(x$var) ci.mat[, 1] <- x$coef - K * se ci.mat[, 2] <- x$coef + K * se mat[,2] <- format(x$coef, digits=digits) mat[,3] <- format(se, digits=digits) ci.mat <- format(ci.mat, digits=digits) mat[,4] <- paste("(", ci.mat[,1], ",", ci.mat[,2], ")", sep="") dimnames(mat) <- list(rep("", n), c("Level", "Coefficient", "Std. Error", "95% Floating CI")) print(mat, quote=FALSE) cat("\nError limits over all contrasts: ", paste(format(c(0.99, x$limits), digits=2)[-1], collapse=","),"\n") } Epi/R/clogistic.R0000644000176200001440000001474113052766107013311 0ustar liggesuserssplitMatrix <- function (x, f, drop=FALSE) { lapply(split(seq_len(nrow(x)), f, drop = drop), function(ind) x[ind, , drop = FALSE]) } fixEvent <- function(event) { ### Convert outcome in clogit model to 0/1 binary coding if (any(is.na(event))) stop("Event contains missing values") if (is.logical(event)) { status <- is.numeric(event) } else if (is.numeric(event)) { status <- if (max(event) == 2) event - 1 else event temp <- (status == 0 | status == 1) if (!all(temp)) { warning("If outcome is numeric then it must be coded 0/1 or 1/2") } } else if (is.factor(event)) { if (nlevels(event) != 2) stop("If outcome is a factor then it must have 2 levels") status <- event == levels(event)[2] } return(as.integer(status)) } isInformative <- function(Xsplit, ysplit, strata) { ## Identify which observations are informative in a conditional ## logistic regression. is.homogeneous <- function(x) { all(x==x[1]) } y.bad <- sapply(ysplit, is.homogeneous) X.bad <- sapply(Xsplit, function(x) { all(apply(x, 2, is.homogeneous)) }) is.informative <- vector("list", length(ysplit)) for (i in seq(along=is.informative)) { canuse <- (!y.bad[i]) && (!X.bad[i]) is.informative[[i]] <- rep(canuse, length(ysplit[[i]])) } return(unsplit(is.informative, strata)) } fitClogit <- function(X, y, offset, strata, init, iter.max, eps, toler.chol) { ## Safe wrapper around the C function "clogit" that ensures all ## arguments have the correct type and storage mode. y <- fixEvent(y) if (!is.matrix(X)) { X <- as.matrix(X) } if (!is.double(X)) { X <- matrix(as.double(X), nrow(X), ncol(X)) } if (is.null(offset)) { offset <- rep(0, nrow(X)) } offset <- as.double(offset); ## Split into strata Xsplit <- splitMatrix(X, strata, drop=TRUE) ysplit <- split(y, strata, drop=TRUE) osplit <- split(offset, strata, drop=TRUE) info <- isInformative(Xsplit, ysplit, strata) if (!any(info)) { stop("There are no informative observations") } ans <- .Call(C_clogit, Xsplit, ysplit, osplit, as.double(init), as.integer(iter.max), as.double(eps), as.double(toler.chol)) ans$informative <- info return(ans) } clogistic <- function (formula, strata, data, subset, na.action, init, model = TRUE, x = FALSE, y = TRUE, contrasts = NULL, iter.max=20, eps=1e-6, toler.chol = sqrt(.Machine$double.eps)) { ## User interface, edited version of glm call <- match.call() if (missing(data)) data <- environment(formula) mf <- match.call(expand.dots = FALSE) m <- match(c("formula", "data", "subset", "na.action", "offset", "strata"), names(mf), 0L) mf <- mf[c(1, m)] mf$drop.unused.levels <- TRUE mf[[1L]] <- as.name("model.frame") mf <- eval(mf, parent.frame()) mt <- attr(mf, "terms") Y <- model.response(mf, "any") if (is.null(Y)) stop("missing outcome") if (length(dim(Y)) == 1L) { nm <- rownames(Y) dim(Y) <- NULL if (!is.null(nm)) names(Y) <- nm } X <- if (!is.empty.model(mt)) model.matrix(mt, mf, contrasts) else stop("Invalid model matrix") offset <- as.vector(model.offset(mf)) if (!is.null(offset)) { if (length(offset) != NROW(Y)) stop(gettextf("number of offsets is %d should equal %d (number of observations)", length(offset), NROW(Y)), domain = NA) } strata <- model.extract(mf, "strata") if (is.null(strata)) stop("argument 'strata' missing") contrasts <- attr(X, "contrasts") if (attr(mt, "intercept") > 0) { X <- X[,-1, drop=FALSE] } if (missing(init)) init <- rep(0, ncol(X)) if (iter.max < 0) stop("'iter.max' must be non-negative") if (eps <= 0) stop("'eps' must be positive") if (toler.chol <= 0) stop("'toler.chol' must be positive") if (eps < toler.chol) stop("'toler.chol' must be smaller than 'eps'") fit <- fitClogit(X = X, y = Y, offset = offset, strata=strata, init=init, toler.chol=toler.chol, eps=eps, iter.max=iter.max) if (fit$flag <= 0) { stop("Information matrix is not positive definite") } else if (fit$flag == 1000) { warning("Iteration limit exceeded") } nvar <- length(init) which.sing <- if (fit$flag < nvar) { diag(fit$var)==0 } else { rep(FALSE, nvar) } fit$coefficients[which.sing] <- NA fit$flag <- NULL ## Add back in parameter names cfnames <- colnames(X) names(fit$coefficients) <- cfnames dimnames(fit$var) <- list(cfnames, cfnames) fit$n <- sum(fit$informative) if (model) { fit$model <- mf } else { ## Without model frame this cannot be interpreted fit$informative <- NULL } fit$na.action <- attr(mf, "na.action") if (x) fit$x <- X if (!y) fit$y <- NULL fit <- c(fit, list(call = call, formula = formula, terms = mt, contrasts = contrasts, xlevels = .getXlevels(mt, mf))) class(fit) <- c("clogistic") fit } coef.clogistic <- function(object,...) { object$coefficients } vcov.clogistic <- function(object, ...) { object$var } print.clogistic <- function (x, digits = max(options()$digits - 4, 3), ...) { ## Print method for clogistic objects, edited from print.coxph cat("\nCall: ", deparse(x$call), "\n\n", sep="\n") savedig <- options(digits = digits) on.exit(options(savedig)) coef <- coef.clogistic(x) se <- sqrt(diag(vcov.clogistic(x))) if (is.null(coef) | is.null(se)) stop("Input is not valid") coefmat <- cbind(coef, exp(coef), se, coef/se, signif(1 - pchisq((coef/se)^2, 1), digits - 1)) dimnames(coefmat) <- list(names(coef), c("coef", "exp(coef)", "se(coef)", "z", "p")) cat("\n") prmatrix(coefmat) logtest <- -2 * (x$loglik[1] - x$loglik[2]) if (is.null(x$df)) df <- sum(!is.na(coef)) else df <- round(sum(x$df), 2) cat("\n") cat("Likelihood ratio test=", format(round(logtest, 2)), " on ", df, " df,", " p=", format(1 - pchisq(logtest, df)), ", n=", x$n, sep = "") cat("\n") invisible() } Epi/R/Icens.R0000644000176200001440000000620012531361077012357 0ustar liggesusersIcens <- function(first.well, last.well, first.ill, formula, model.type=c("MRR","AER"), breaks, boot=FALSE, alpha=0.05, keep.sample=FALSE, data) { ## Create follow-up matrix containing three event times fu.expression <- substitute(cbind(first.well, last.well, first.ill)) fu <- if (missing(data)) { eval(fu.expression) } else { eval(fu.expression, data) } ## Check consistency of arguments missing.f1 <- is.na(fu[,1]) missing.f2 <- is.na(fu[,2]) if (any(missing.f1 & missing.f2)) { stop("You must supply at least one of \"first.well\" and \"last.well\"") } if (any(fu[,1] > fu[,2], na.rm=TRUE) | any(fu[,2] > fu[,3], na.rm=TRUE)) { stop("Some units do not meet: first.well < last.well < first.ill" ) } ## Fill in any gaps fu[,1][missing.f1] <- fu[,2][missing.f1] fu[,2][missing.f2] <- fu[,1][missing.f2] ## Recensor cases that fall after the last break point is.censored <- fu[,3] > max(breaks) is.censored[is.na(is.censored)] <- FALSE fu[is.censored,3] <- NA exp.dat <- expand.data(fu, formula, breaks, data) model.type <- match.arg(model.type) if (missing(formula)) { fit.out <- with(exp.dat, fit.baseline(y, rates.frame)) lambda <- coef(fit.out) } else { fit.out <- switch(model.type, "MRR"=with(exp.dat, fit.mult(y, rates.frame, cov.frame)), "AER"=with(exp.dat, fit.add(y, rates.frame, cov.frame))) lambda <- coef(fit.out$rates) } beta <- if (is.null(fit.out$cov)) numeric(0) else coef(fit.out$cov) params <- c(lambda,beta) if (boot) { nboot <- ifelse (is.numeric(boot), boot, 100) boot.coef <- matrix(NA, nrow=nboot, ncol=length(lambda) + length(beta)) colnames(boot.coef) <- names(params) for (i in 1:nboot) { subsample <- sample(nrow(fu), replace=TRUE) exp.dat <- expand.data(fu[subsample,], formula, breaks, data[subsample,]) if (missing(formula)) { sim.out <- with(exp.dat, fit.baseline(y, rates.frame, params)) boot.coef[i,] <- coef(sim.out) } else { sim.out <- switch(model.type, "MRR"=with(exp.dat, fit.mult(y, rates.frame, cov.frame, params)), "AER"=with(exp.dat, fit.add(y, rates.frame, cov.frame, params))) boot.coef[i,] <- switch(model.type, "MRR"=c(coef(sim.out[[1]]), coef(sim.out[[2]])), "AER"=coef(sim.out[[1]])) } } ci.quantiles=c(0.5, alpha/2, 1 - alpha/2) boot.ci <- t(apply(boot.coef,2,quantile,ci.quantiles)) lower.ci.lab <- paste("lower ", formatC(100 * alpha/2, format="f", digits=1),"%", sep="") upper.ci.lab <- paste("upper ", formatC(100 * (1-alpha/2), format="f", digits=1),"%", sep="") colnames(boot.ci) <- c("median", lower.ci.lab, upper.ci.lab) fit.out$boot.ci <- boot.ci if (keep.sample) { fit.out$sample <- boot.coef } } class( fit.out ) <- "Icens" attr( fit.out, "model" ) <- model.type return( fit.out ) } Epi/R/simLexis.R0000644000176200001440000002747013451655454013136 0ustar liggesusers# First the utility functions ###################################################################### lint <- function( ci, tt, u ) { # Makes a linear interpolation, but does not crash if all ci values are # identical, but requires that both ci and tt are non-decreasing. # ci plays the role of cumulative intensity, tt of time if( any( diff(ci)<0 ) | any( diff(tt)<0 ) ) stop("Non-increasing arguments") c.u <- min( c( ci[ci>u], max(ci) ) ) c.l <- max( c( ci[ciu], max(tt) ) ) t.l <- max( c( tt[ci1 ) stop( "More than one lex.Cst present:\n", cst, "\n" ) # Expand each person by the time points prfrm <- nd[rep(1:nr,each=np),] prfrm[,tS] <- prfrm[,tS] + rep(time.pts,nr) prfrm$lex.dur <- il <- min( diff(time.pts) ) # Poisson-models should use the estimated rate at the midpoint of the # intervals, and have risk time equal to 1 in order to accommodate # both poisson and poisreg families - they only produce identical # predictions if lex.dur is 1 (i.e. offset is 0), scaling is after prediction prfrp <- prfrm prfrp[,"lex.dur"] <- 1 prfrp[,tS] <- prfrp[,tS]+il/2 # Make a data frame with predicted rates for each of the transitions # out of this state for these times rt <- data.frame( lex.id = prfrm$lex.id ) for( i in 1:length(Tr[[cst]]) ) { if( inherits( Tr[[cst]][[i]], "glm" ) ) rt <- cbind( rt, predict( Tr[[cst]][[i]], type="response", newdata=prfrp ) * il ) # scaled to interval else if( inherits( Tr[[cst]][[i]], "coxph" ) ) rt <- cbind( rt, predict( Tr[[cst]][[i]], type="expected", newdata=prfrm ) ) else if( is.function( Tr[[cst]][[i]] ) ) rt <- cbind( rt, Tr[[cst]][[i]](prfrm) ) else stop( "Invalid object supplied as transition, elements of the list must be either:\n", "- a glm(poisson) object fitted to a Lexis object\n", "- a coxph object fitted to a Lexis object\n", "- a function that takes a Lexis object as argument and returns\n", " average rates for each record in the same units as lex.dur.") } names( rt )[-1] <- names( Tr[[cst]] ) # Then find the transition time and exit state for each person: xx <- match( c("lex.dur","lex.Xst"), names(nd) ) if( any(!is.na(xx)) ) nd <- nd[,-xx[!is.na(xx)]] merge( nd, do.call( rbind, lapply( split( rt, rt$lex.id ), sim1, time.pts ) ), by="lex.id" ) } ###################################################################### get.next <- function( sf, tr.st, tS, tF ) { # Produces an initial Lexis object for the next simulation for those # who have ended up in a transient state. # Note that this exploits the existence of the "time.since" attribute # for Lexis objects and assumes that a character vector naming the # transient states is supplied as argument. if( nrow(sf)==0 ) return( sf ) nxt <- sf[sf$lex.Xst %in% tr.st,] if( nrow(nxt) == 0 ) return( nxt ) nxt[,tS] <- nxt[,tS] + nxt$lex.dur wh <- tF for( i in 1:length(wh) ) if( wh[i] != "" ) nxt[nxt$lex.Xst==wh[i],tS[i]] <- 0 nxt$lex.Cst <- nxt$lex.Xst return( nxt ) } ###################################################################### chop.lex <- function( obj, tS, cens ) { # A function that chops off all follow-up beyond cens since entry for # each individual # Entry times on 1st timescale zz <- entry( obj, 1, by.id=TRUE ) # Merge with the revised exit times on this timescale ww <- merge( obj, data.frame( lex.id = as.numeric(names(zz)), cens = zz+cens ) ) # Only retain records with an entry time prior to the revised exit time ww <- ww[ww[,tS[1]] < ww$cens,] # Revise the duration according the the revised exit time x.dur <- pmin( ww$lex.dur, ww[,"cens"]-ww[,tS[1]] ) # Change lex.Xst to lex.Cst for those with shortened follow-up ww$lex.Xst[x.dur0] nt <- length(tt) warning("\nSome initiators start in a absorbing state\n", "Initiator states represented are: ", paste( rbind( names(tt), rep(":",nt), paste(tt), rep(" ",nt) ), collapse="" ), "\n", "Transient states are: ", paste( names( Tr ), coll=" " ) ) if( nrow(nxt)==0 ) stop( "\nNo initiators in transient states!" ) } # Then we update those who are in a transient states and keep on doing # that till all are in absorbing states or censored while( nrow(nxt) > 0 ) { nx <- do.call( rbind.data.frame, lapply( split( nxt, nxt$lex.Cst ), simX, Tr, time.pts, tS ) ) sf <- rbind.data.frame( sf, nx ) nxt <- get.next( nx, tr.st, tS, tF ) } # Doctor lex.Xst levels, fix values for the censored sf$lex.Xst <- factor( sf$lex.Xst, levels=levels(sf$lex.Cst) ) sf$lex.Xst[is.na(sf$lex.Xst)] <- sf$lex.Cst[is.na(sf$lex.Xst)] # Nicely order the output by persons, then times and states nord <- match( c( "lex.id", tS, "lex.dur", "lex.Cst", "lex.Xst" ), names(sf) ) noth <- setdiff( 1:ncol(sf), nord ) sf <- sf[order(sf$lex.id,sf[,tS[1]]),c(nord,noth)] rownames(sf) <- NULL # Finally, supply attributes - note we do not supply the "breaks" # attribute as this is irrelevant for simulated objects attr( sf, "time.scales" ) <- tS attr( sf, "time.since" ) <- tF chop.lex( sf, tS, max(time.pts) ) } ###################################################################### nState <- function ( obj, at, from, time.scale = 1 ) { # Counts the number of persons in each state of the Lexis object 'obj' # at the times 'at' from the time 'from' in the time scale # 'time.scale' # Determine timescales and absorbing and transient states tS <- check.time.scale(obj,time.scale) TT <- tmat(obj) absorb <- rownames(TT)[apply(!is.na(TT),1,sum)==0] transient <- setdiff( rownames(TT), absorb ) # Expand each record length(at) times tab.frm <- obj[rep(1:nrow(obj),each=length(at)), c(tS,"lex.dur","lex.Cst","lex.Xst")] # Stick in the corresponding times on the chosen time scale tab.frm$when <- rep( at, nrow(obj) ) + from # For transient states keep records that includes these points in time tab.tr <- tab.frm[tab.frm[,tS] <= tab.frm$when & tab.frm[,tS]+tab.frm$lex.dur > tab.frm$when,] tab.tr$State <- tab.tr$lex.Cst # For absorbing states keep records where follow-up ended before tab.ab <- tab.frm[tab.frm[,tS]+tab.frm$lex.dur <= tab.frm$when & tab.frm$lex.Xst %in% absorb,] tab.ab$State <- tab.ab$lex.Xst # Make a table using the combination of those in transient and # absorbing states. with( rbind( tab.ab, tab.tr ), table( when, State ) ) } ###################################################################### pState <- function( nSt, perm=1:ncol(nSt) ) { # Compute cumulative proportions of persons across states in order # designate by 'perm' tt <- t( apply( nSt[,perm], 1, cumsum ) ) tt <- sweep( tt, 1, tt[,ncol(tt)], "/" ) class( tt ) <- c("pState","matrix") tt } ###################################################################### plot.pState <- function( x, col = rainbow(ncol(x)), border = "transparent", xlab = "Time", ylim = 0:1, ylab = "Probability", ... ) { # Function to plot cumulative probabilities along the time scale. matplot( as.numeric(rownames(x)), x, type="n", ylim=ylim, yaxs="i", xaxs="i", xlab=xlab, ylab=ylab, ... ) lines.pState( x, col = col, border = border, ... ) } ###################################################################### lines.pState <- function( x, col = rainbow(ncol(x)), border = "transparent", ... ) { # Function to plot cumulative probabilities along the time scale. # Fixing the colors: nc <- ncol(x) col <- rep( col , nc )[1:nc] border <- rep( border, nc )[1:nc] # Just for coding convenience when plotting polygons pSt <- cbind( 0, x ) for( i in 2:ncol(pSt) ) { polygon( c( as.numeric(rownames(pSt)) , rev(as.numeric(rownames(pSt))) ), c( pSt[,i ], rev(pSt[,i-1]) ), col=col[i-1], border=border[i-1], ... ) } } Epi/R/contr.orth.R0000644000176200001440000000040712531361077013421 0ustar liggesuserscontr.orth <- function( n ) { if( is.numeric( n ) && length( n )==1 ) levs <- 1:n else { levs <- n n <- length( n ) } Z <- contr.sum( n ) L <- 1:n - mean(1:n) contr <- Z - L%*%( ( t(L) %*% L )^(-1) ) %*% ( t(L) %*% Z ) contr[,1:(n-2)] } Epi/R/clear.R0000644000176200001440000000072312773674456012430 0ustar liggesusers# Clear the workspace of all objects whose names don't start with a # full stop, and remove objects attached immediately after the global clear <- function () { env <- as.environment(1) to.go <- ls(env, all.names = FALSE) continue <- TRUE while (continue) { nxt <- search()[[2]] if (substr(nxt, 1, 8) != "package:") detach() else continue <- FALSE } remove(list = to.go, envir = env) } Epi/R/summary.Lexis.r0000644000176200001440000000641613430534203014137 0ustar liggesuserssummary.Lexis <- function( object, simplify=TRUE, scale=1, by=NULL, Rates=FALSE, timeScales=FALSE, ... ) { # If we have a by argument find out what to do if (!is.null(by)) { if (is.character(by)) { if (!all(by %in% names(object))) stop("Wrong 'by' argument: '", paste(by,collapse="','"), "' - must be name(s) of variable(s) in the Lexis object") else res <- lapply(split(object, object[, by]), summary.Lexis, by = NULL, simplify = simplify, scale = scale, Rates = Rates, timeScales=timeScales, ...) } else { if (length(by) != nrow(object)) stop("Wrong length of 'by' argument:", length(by), "must be same length as rows of the Lexis object:", nrow(object) ) else res <- lapply(split(object, by), summary.Lexis, by = NULL, simplify = simplify, scale = scale, Rates = Rates, timeScales=timeScales, ...) } # to avoid printing the time scale information repeatedly for( i in 1:(length(res)-1) ) res[[i]]$timeScales <- NULL return( res ) } # Table(s) of all transitions (no. records) tr <- trans <- with( object, table(lex.Cst,lex.Xst) ) # Remove diagonal, i.e. records with no transition for( i in intersect(rownames(trans),colnames(trans)) ) tr[i,i] <- 0 # Margins added trans <- addmargins(trans) tr <- addmargins(tr) # Sum omitting the diagonal trm <- tr[,ncol(tr)] # Compute person-years in each Cst-state pyrs <- with( object, addmargins( tapply( lex.dur,lex.Cst,sum,na.rm=TRUE), FUN=function(x) sum(x,na.rm=TRUE) ) )/scale pers <- with( object, c( tapply( lex.id, lex.Cst, function(x) length(unique(x)) ), length(unique(lex.id)) ) ) # Amend the table of records with column of events and person-years trans <- cbind( trans, trm, pyrs, pers ) # Annotate the table nicely colnames( trans )[ncol(trans)-2:0] <- c(" Events:","Risk time:"," Persons:" ) colnames( trans )[ncol(tr)] <- " Records:" names( dimnames( trans ) ) <- c("From","\nTransitions:\n To") # Make the rates and annotate the table nicely rates <- sweep( tr, 1, pyrs, "/" ) colnames( rates )[ncol(rates)] <- "Total" names( dimnames( rates ) ) <- c("From", paste("\nRates", if( scale != 1 ) paste(" (per ",scale,")",sep=""), ":\n To", sep="") ) if( simplify ) { trans <- trans[!is.na(pyrs),] rates <- rates[!is.na(pyrs),] } if( nrow(trans)==2 ) trans <- trans[1,,drop = FALSE] res <- list( Transitions = trans, Rates = rates[-nrow(rates),,drop=FALSE], timeScales = timeSince(object) ) if( !timeScales ) res <- res[-3] if( !Rates ) res <- res[-2] class( res ) <- "summary.Lexis" res } print.summary.Lexis <- function( x, ..., digits=2 ) { print( round( x$Transitions, digits ) ) if( "Rates" %in% names(x) ) print( round( x$Rates , digits ) ) # if( "timeScales" %in% names(x) ) if( !is.null(x$timeScales) ) { cat("\nTimescales:\n") print( x$timeScales ) } } Epi/R/fit.baseline.R0000644000176200001440000000065012531361077013664 0ustar liggesusersfit.baseline <- function(y, rates.frame, start) { if (missing(start)) { ## Get starting values from logistic regression model glm.out.init <- glm(y~., family=binomial, data=rates.frame) mu.init <- fitted(glm.out.init, type="response") glm(y~-1 + ., family=binomial(link=log), data=rates.frame, mustart=mu.init) } else { glm(y~-1 + ., family=binomial(link=log), data=rates.frame, start=start) } } Epi/R/summary.Icens.r0000644000176200001440000000140712531361077014117 0ustar liggesuserssummary.Icens <- function( x, scale=1, ... ) { if( attr( x, "model" ) == "MRR" ) { if( is.null( x$rates ) ) { class( x ) <- "glm" emat <- ci.lin( x ) } else { rate.est <- ci.lin( x$rates ) rate.est[,-(3:4)] <- rate.est[,-(3:4)] * scale emat <- rbind( cbind( rate.est, RR=NA )[,c(1:4,7,5:6)], ci.lin( x$cov, Exp=T ) ) } } if( attr( x, "model" ) == "AER" ) { rate.est <- ci.lin( x$rates ) rate.est[,-(3:4)] <- rate.est[,-(3:4)] * scale emat <- rate.est } if( length( x ) == 4 ) { b.est <- x[["boot.ci"]] colnames( b.est ) <- c( "Boot-med", "lo", "hi" ) emat <- cbind( emat, b.est ) } emat } Epi/R/stackedCIF.R0000644000176200001440000000354413564775635013306 0ustar liggesusersstackedCIF <- function( x, group = 1, col = "black", fill = "white", ylim = c(0,1), xlab = "Time", ylab = "Cumulative incidence", ...) { ne <- ncol(x$pstate) - 1 ng <- length(x$n) if (group %in% 1:ng) { r1 <- ifelse(group == 1 | ng == 1, 1, cumsum(x$strata)[group - 1] + 1) r2 <- ifelse(ng == 1, length(x$time), cumsum(x$strata)[group]) pSt0 <- matrix(0, nrow = nrow(x$pstate[r1:r2, ]), ncol = ne + 2) pSt0[, 1] <- x$pstate[r1:r2, 2] for (c in 2:ne) pSt0[, c] <- pSt0[, c - 1] + x$pstate[r1:r2, c+1] pSt0[, ne + 1] <- 1 pSt0[, ne + 2] <- x$time[r1:r2] pSt <- cbind(0, pSt0) pSt2 <- matrix(0, nrow = 2 * (dim(pSt)[1] - 1), ncol = dim(pSt)[2]) pSt2[1, ne + 3] <- pSt[1, ne + 3] pSt2[nrow(pSt2), ne + 3] <- pSt[nrow(pSt), ne + 3] for (j in 1:(dim(pSt)[1] - 1)) { pSt2[2 * j - 1, ne + 3] <- pSt[j, ne + 3] pSt2[2 * j, ne + 3] <- pSt[j + 1, ne + 3] pSt2[2 * j - 1, 1:(ne + 2)] <- pSt[j, 1:(ne + 2)] pSt2[2 * j, 1:(ne + 2)] <- pSt[j, 1:(ne + 2)] } plot(as.numeric(pSt0[, ne + 2]), pSt0[, 2], type = "n", ylim = ylim, yaxs = "i", xlab = xlab, ylab = ylab, ...) for (i in 2:(ne + 1)) { polygon(c(pSt2[, ne + 3], rev(pSt2[, ne + 3])), c(pSt2[, i], rev(pSt2[, i - 1])), col = fill[i - 1], border = NULL, ...) } matlines( as.numeric(pSt0[, ne + 2]), pSt0[, 1:ne], type = "s", col = col) abline(v = max(x$time[r1:r2]), lwd = 2, col = "white") box() } else print(paste("Error: group indicator must be an integer from 1 to", ng)) } Epi/R/addCov.Lexis.R0000644000176200001440000001067614015422370013606 0ustar liggesusers# The addCov method addCov <- function (Lx, ...) UseMethod("addCov") addCov.default <- addCov.Lexis <- function(Lx, clin, timescale = 1, exnam, tfc = "tfc") { # Function to add clinically measured covariates to a Lexis object # The point is to cut the Lexis object at the examination dates # and subsequently add the clinical records # to avoid notes in check org.Cst <- NULL org.Xst <- NULL lex.Cst <- NULL lex.Xst <- NULL # ...but first the usual cheking of paraphernalia if(!inherits(Lx ,"Lexis")) stop("Lx must be a Lexis object.\n") if( inherits(clin,"Lexis")) stop("clin cannot be a Lexis object.\n") # Is the timescale argument a timescale in Lx and is it a variable in clin? ts <- if(is.numeric(timescale)) timeScales(Lx)[timescale] else timescale if(!(ts %in% timeScales(Lx))) stop("timescale argument (", ts, ") must be among the timescales in the Lexis object ", deparse(substitute(Lx)),":", timeScales(Lx), ".\n" ) clin.nam <- deparse(substitute(clin)) if( !( ts %in% names(clin) & "lex.id" %in% names(clin) ) ) stop("'lex.id' and timescale '", ts, "' must be variables in the clin object ", clin.nam, "\n" ) # order clin to get the possible construction of examination names ok clin <- clin[order(clin$lex.id, clin[,ts]),] # check that examination dates are unique within persons if(any(dd <- duplicated(clin[,c("lex.id",ts)]))) { warning("Examination dates must be unique within persons\n", sum(dd), " records with duplicate dates from clin object ", clin.nam, " excluded.") clin <- clin[!dd,] } # the variable holding the name of the examination if(missing(exnam)) exnam <- "exnam" # and if it is not there, construct it if(!(exnam %in% names(clin))) clin[,exnam] <- paste("ex", ave(clin$lex.id, clin$lex.id, FUN = function(x) cumsum(x/x)), sep="" ) # exnam cannot have values that are also states if( length(common <- intersect(levels(Lx), unique(clin[,exnam]))) ) stop("Levels of Lx and examination names in clin must be disjoint", "\nbut", paste(common, collapse=", "), "are in both") #...done checking # variables to merge by mvar <- c("lex.id", ts) # clinical variables to be merged in # --- note we take examination date and name as a cinical variable too cvar <- setdiff(names(clin), mvar) # A data frame of cutting times of the examinations cfr <- data.frame(lex.id = clin$lex.id, cut = clin[,ts], new.state = clin[,exnam]) # a copy of Lx with a saved copy of the state variables in org. Lc <- transform(Lx, org.Cst = lex.Cst, org.Xst = lex.Xst) # Now cut Lc at each new examination date, state variables will be # changed to examination names Lc <- rcutLexis(Lc, cut = cfr, timescale = ts) # Lc now has the exnam in the variable lex.Cst, so we can merge the # clinical data to this if we rename to exnam # the lex.Cst contains the examination name, except where # the original levels are left Lc[,exnam] <- as.factor(ifelse(Lc$lex.Cst %in% levels(Lx), NA, as.character(Lc$lex.Cst))) mvar <- c("lex.id", exnam) # timescale is present in both Lc and clin, # so rename in clin, it will be the date of clin names(clin)[grep(ts, names(clin))] <- tfc # merge with clinical measurements keeping the attributes att.Lc <- attributes(Lc) Lc <- left_join(Lc, clin, by = mvar) att.Lc$names <- attributes(Lc)$names # attributes(Lc) <- att.Lc # compute time since last examination Lc[,tfc] <- Lc[,ts] - Lc[,tfc] # we have problems if a clical date falls in an interval # ending with a transition, they need to be fixed: wh <- with(Lc, which(c(org.Xst[-nrow(Lc)] != org.Cst[-1] & lex.id [-nrow(Lc)] == lex.id [-1]))) Lc$org.Xst[wh] <- Lc$org.Cst[wh+1] # move the original states back Lc <- select(Lc, -lex.Cst, -lex.Xst) %>% rename(lex.Cst = org.Cst, lex.Xst = org.Xst) # Add tfc as a time.scale, time.since and breaks: attr(Lc, "time.scales") <- c(attr(Lx, "time.scales"), tfc) attr(Lc, "time.since" ) <- c(attr(Lx, "time.since" ), "" ) brt <- list(x = NULL) names(brt) <- tfc attr(Lc, "breaks") <- c(attr(Lx, "breaks"), brt) attr(Lc, "class") <- c("Lexis","data.frame") # Done! - well order first sortLexis(Lc) } Epi/R/Relevel.Lexis.R0000644000176200001440000000337314003571117014001 0ustar liggesusers# The factorize method factorize <- function (x, ...) UseMethod("factorize") # Default method is just the Lexis method factorize.default <- factorize.Lexis <- function(x, ...) { Cst <- Xst <- NULL # If lex.Cst and lex.Xst are not factors, make sure they are, and # if they are restrict levels to to actually ocurring Cst <- factor(x$lex.Cst) Xst <- factor(x$lex.Xst) all.levels <- union(levels(Cst), levels(Xst)) # then amend them to have the same set of levels x$lex.Cst <- factor(Cst, levels = all.levels) x$lex.Xst <- factor(Xst, levels = all.levels) # Note if levels changed if(length(setdiff(all.levels, levels(Cst))) > 0 | length(setdiff(all.levels, levels(Xst))) > 0) cat( "NOTE: lex.Cst and lex.Xst now have levels:\n", all.levels, "\n") return(x) } # The Lexis version of Relevel Relevel.Lexis <- function(x, ref, ...) { # Is this really a Lexis object if(!inherits(x, "Lexis")) stop("First argument must be a Lexis object") # Make sure the states are factors with the same levels if(!is.factor(x$lex.Cst) | !is.factor(x$lex.Xst)) stop("lex.Cst and lex.Xst must be factors") if(any(levels(x$lex.Xst) != levels(x$lex.Cst))) stop("lex.Cst and lex.Xst must have same levels\n", "you may want to factorize.Lexis()\n") # Then use the same Relevel on the factors x$lex.Cst <- Relevel.factor(x$lex.Cst, ref, ...) x$lex.Xst <- Relevel.factor(x$lex.Xst, ref, ...) return(x) } # The levels method is already defined (in the base package) # and hence imported in the NAMESPACE file levels.Lexis <- function( x ) { union(levels(x$lex.Cst), levels(x$lex.Xst)) } ## # The Lexis version of levels ## "levels.Lexis<-" <- ## function(x, value) ## { ## base::levels(x$lex.Cst) <- value ## base::levels(x$lex.Xst) <- value ## x ## } Epi/R/Aplot.R0000644000176200001440000000622112531361077012400 0ustar liggesusersAplot <- function( rates, age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, a.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), a.lim = range( age, na.rm=TRUE ), ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), a.lab = names( dimnames( rates ) )[1], ylab = deparse( substitute( rates ) ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, c.col = col, p.col = col, c.ann = FALSE, p.ann = FALSE, xannx = 1/20, cex.ann = 0.8, c.thin = seq( 2, length( age ) + length( per ) - 1, 2 ), p.thin = seq( 1, length( per ), 2 ), p.lines = TRUE, c.lines = !p.lines, ... # arguments passed on to matlines() ) { # Plot the frame if( p.ann ) a.lim <- a.lim + c(0,diff( range( age ) ) * xannx) if( c.ann ) a.lim <- a.lim - c( diff( range( age ) ) * xannx,0) matplot( age, rates, type="n", xlim=a.lim, ylim=ylim, xlab=a.lab, ylab=ylab, log=log.ax, las=las, yaxt=if( !is.null( at ) ) "n" else "s" ) if( !is.null( at ) ) axis( side=2, at=at, labels=labels, yaxt="s", las=las ) # and the grid if required: if( !missing( a.grid ) | !missing( grid ) ) { if( is.logical( a.grid ) & a.grid[1] ) a.grid <- nice( age, log=par("xlog") ) abline( v=a.grid, col=col.grid ) } if( !missing( ygrid ) | !missing( ygrid ) ) { if( is.logical( ygrid ) & ygrid[1] ) ygrid <- nice( rates[!is.na(rates)], log=par("ylog") ) abline( h=ygrid, col=col.grid ) } box() # What lines were required? if( !missing( c.lines ) & missing( p.lines ) ) p.lines <- !c.lines # Period curves: if( p.lines ){ matlines( age, rates, type=type, lwd=lwd, lty=lty, col=p.col, ... ) # annotate them if required (every second by default): if( p.ann ) { nr <- nrow( rates ) nc <- ncol( rates ) text( rep( age[nr], nc )[p.thin], rates[nr,][p.thin], paste( "", per[p.thin] ), adj=c(0,0.5), cex=cex.ann, col=if( length(p.col)==1 ) p.col else p.col[p.thin] ) } } # Cohort curves: if( c.lines ){ # First convert the age-period table to an age-cohort frame rt <- as.table( rates ) dimnames( rt ) <- list( age = age, per = per ) rtf <- data.frame( rt ) rtf$age <- as.numeric( as.character( rtf$age ) ) rtf$per <- as.numeric( as.character( rtf$per ) ) ac <- tapply( rtf$Freq, list( rtf$age, rtf$per-rtf$age ), mean ) matlines( age, ac, type=type, lwd=lwd, lty=lty, col=c.col, ... ) # annotate them if required (every other by default): if( c.ann ) { nr <- nrow( rt ) nc <- ncol( rt ) # Find the ages, cohorts and rates where the cohort curves starts a.min <- c( rev( age ), rep( age[1], nc-1 ) ) p.min <- c( rep( per[1], nr-1 ), per ) c.min <- p.min - a.min r.min <- c(rt[nr:1,1],rt[1,2:nc]) text( a.min[c.thin], r.min[c.thin], paste( "", c.min[c.thin] ), adj=c(1,0.5), cex=cex.ann, col=if( length(c.col)==1 ) c.col else c.col[c.thin] ) } } } Epi/R/rateplot.R0000644000176200001440000001551012531361077013154 0ustar liggesusersrateplot <- function( rates, which = c("ap","ac","pa","ca"), age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, a.grid = grid, p.grid = grid, c.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), a.lim = range( age, na.rm=TRUE ) + c(0,diff( range( age ) )/30), p.lim = range( per, na.rm=TRUE ) + c(0,diff( range( age ) )/30), c.lim = NULL, ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), a.lab = "Age at diagnosis", p.lab = "Date of diagnosis", c.lab = "Date of birth", ylab = "Rates", type = "l", lwd = 2, lty = 1, log.ax = "y", las = 1, ann = FALSE, a.ann = ann, p.ann = ann, c.ann = ann, xannx = 1/20, cex.ann = 0.8, a.thin = seq( 1, length( age ), 2 ), p.thin = seq( 1, length( per ), 2 ), c.thin = seq( 2, length( age ) + length( per ) - 1, 2 ), col = par( "fg" ), a.col = col, p.col = col, c.col = col, ... ) { # Remove 0 rates, in order to avoid warnings rates[rates==0] <- NA # then do the plots for( i in 1:length( which ) ) { if( toupper( which[i] ) == "AP" ) Aplot( rates, age = age, per = per, a.grid = a.grid, ygrid = ygrid, col.grid = col.grid, a.lim = a.lim, ylim = ylim, a.lab = a.lab, ylab = ylab, at = at, labels = labels, type = type, lwd = lwd, lty = lty, col = col, log.ax = log.ax, las = las, p.ann = p.ann, xannx = xannx, p.col = p.col, cex.ann = cex.ann, p.thin = p.thin, p.lines = TRUE, c.lines = FALSE, ... ) if( toupper( which[i] ) == "AC" ) Aplot( rates, age = age, per = per, a.grid = a.grid, ygrid = ygrid, col.grid = col.grid, a.lim = a.lim, ylim = ylim, a.lab = a.lab, ylab = ylab, at = at, labels = labels, type = type, lwd = lwd, lty = lty, col = col, log.ax = log.ax, las = las, c.ann = c.ann, p.ann = p.ann, xannx = xannx, c.col = c.col, p.col = p.col, cex.ann = cex.ann, c.thin = c.thin, p.lines = FALSE, c.lines = TRUE, ... ) if( toupper( which[i] ) %in% c("APC","ACP") ) Aplot( rates, age = age, per = per, a.grid = a.grid, ygrid = ygrid, col.grid = col.grid, a.lim = a.lim, ylim = ylim, a.lab = a.lab, ylab = ylab, at = at, labels = labels, type = type, lwd = lwd, lty = lty, col = col, log.ax = log.ax, las = las, c.ann = c.ann, p.ann = p.ann, xannx = xannx, c.col = c.col, p.col = p.col, cex.ann = cex.ann, c.thin = c.thin, p.thin = p.thin, p.lines = TRUE, c.lines = TRUE, ... ) if( toupper( which[i] ) == "PA" ) Pplot( rates, age = age, per = per, grid = grid, p.grid = p.grid, ygrid = ygrid, col.grid = col.grid, p.lim = p.lim, ylim = ylim, p.lab = p.lab, ylab = ylab, at = at, labels = labels, type = type, lwd = lwd, lty = lty, col = col, log.ax = log.ax, las = las, ann = a.ann, xannx = xannx, cex.ann = cex.ann, a.thin = a.thin, ... ) if( toupper( which[i] ) == "CA" ) Cplot( rates, age = age, per = per, grid = grid, c.grid = c.grid, ygrid = ygrid, col.grid = col.grid, c.lim = c.lim, ylim = ylim, c.lab = c.lab, ylab = ylab, at = at, labels = labels, type = type, lwd = lwd, lty = lty, col = col, log.ax = log.ax, las = las, ann = a.ann, xannx = xannx, cex.ann = cex.ann, a.thin = a.thin, ... ) } } Epi/R/effx.match.r0000644000176200001440000001531612531361077013411 0ustar liggesusers## Program to calculate effects for matched case-control studies ## Michael Hills ## Improved by BxC and MP ## Post Tartu 2007 version June 2007 effx.match<-function(response, exposure, match, strata=NULL, control=NULL, base=1, digits=3, alpha=0.05, data=NULL) { ## stores the variable names for response, etc. rname<-deparse(substitute(response)) ename<-deparse(substitute(exposure)) if (!missing(strata))sname<-deparse(substitute(strata)) ## The control argument is more complex, as it may be a name or ## list of names if(!missing(control)) { control.arg <- substitute(control) if (length(control.arg) > 1) { control.names <- sapply(control.arg, deparse)[-1] } else { control.names <- deparse(control.arg) } } ## If data argument is supplied, evaluate the arguments in that ## data frame. if (!missing(data)) { exposure <- eval(substitute(exposure), data) response <- eval(substitute(response), data) match <- eval(substitute(match),data) if (!missing(strata)) { strata <- eval(substitute(strata), data) } if (!missing(control)) control <- eval(substitute(control), data) } ## performs a few other checks if(rname==ename)stop("Same variable specified as response and exposure") if (!missing(strata)) { if(rname==sname)stop("Same variable specified as response and strata") if(sname==ename)stop("Same variable specified as strata and exposure") } if(!is.numeric(response))stop("Response must be numeric, not a factor") if(!missing(strata)&!is.factor(strata))stop("Stratifying variable must be a factor") tmp<-(response==0 | response==1) if(all(tmp,na.rm=TRUE)==FALSE) stop("Binary response must be coded 0,1 or NA") if(class(exposure)[1]=="ordered") { exposure<-factor(exposure, ordered=F) } ## Fix up the control argument as a named list if (!missing(control)) { if (is.list(control)) { names(control) <- control.names } else { control <- list(control) names(control) <- control.names } } ## prints out some information about variables cat("---------------------------------------------------------------------------","\n") cat("response : ", rname, "\n") cat("exposure : ", ename, "\n") if(!missing(control))cat("control vars : ",names(control),"\n") if(!missing(strata)) cat("stratified by : ",sname,"\n") cat("\n") if(is.factor(exposure)) { cat(ename,"is a factor with levels: ") cat(paste(levels(exposure),collapse=" / "),"\n") cat( "baseline is ", levels( exposure )[base] ,"\n") exposure <- Relevel( exposure, base ) } else { cat(ename,"is numeric","\n") } if(!missing(strata)) { cat(sname,"is a factor with levels: ") cat(paste(levels(strata),collapse="/"),"\n") } cat("effects are measured as odds ratios","\n") cat("---------------------------------------------------------------------------","\n") cat("\n") ## gets number of levels for exposure if a factor if(is.factor(exposure)) { nlevE<-length(levels(exposure)) } else { nlevE<-1 } ## labels the output if(is.factor(exposure)) { cat("effect of",ename,"on",rname,"\n") } else { cat("effect of an increase of 1 unit in",ename,"on",rname,"\n") } if(!missing(control)) { cat("controlled for",names(control),"\n\n") } if(!missing(strata)) { cat("stratified by",sname,"\n\n") } ## no stratifying variable if(missing(strata)) { if(missing(control)) { m<-clogit(response~exposure+strata(match)) cat("number of observations ",m$n,"\n\n") } else { m<-clogit(response~.+exposure+strata(match), subset=!is.na(exposure),data=control) cat("number of observations ",m$n,"\n\n") mm<-clogit(response~.+strata(match), subset=!is.na(exposure),data=control) } res<-ci.lin(m,subset=c("exposure"),Exp=TRUE,alpha=alpha)[,c(5,6,7)] res<-signif(res,digits) if(nlevE<3) { names(res)[1]<-c("Effect") } else { colnames(res)[1]<-c("Effect") if(is.factor(exposure)) { ln <- levels(exposure) rownames(res)[1:nlevE-1]<-paste(ln[2:nlevE],"vs",ln[1]) } } print(res) if(missing(control)) { chisq<-round(summary(m)$logtest[1],2) df<-round(summary(m)$logtest[2]) p<-round(summary(m)$logtest[3],3) cat("\n") cat("Test for no effects of exposure: ","\n") cat("chisq=",chisq, " df=",df, " p-value=",format.pval(p,digits=3),"\n") invisible(list(res,paste("Test for no effects of exposure on", df,"df:","p=",format.pval(p,digits=3)))) } else { aov <- anova(mm,m,test="Chisq") cat("\nTest for no effects of exposure on", aov[2,3],"df:", "p-value=",format.pval(aov[2,5],digits=3),"\n") invisible(list(res,paste("Test for no effects of exposure on", aov[2,3],"df:","p=",format.pval(aov[2,5],digits=3)))) } } ## stratifying variable if(!missing(strata)) { sn <- levels(strata) nlevS<-length(levels(strata)) if(missing(control)) { m<-clogit(response~strata/exposure+strata(match)) cat("number of observations ",m$n,"\n\n") mm<-clogit(response~strata+exposure+strata(match)) } else { m <-clogit(response~strata/exposure + . +strata(match), data=control) cat("number of observations ",m$n,"\n\n") mm <-clogit(response~strata+exposure + . +strata(match), data=control) } res<-ci.lin(m,Exp=TRUE,alpha=alpha,subset="strata")[c(-1:-(nlevS-1)),c(5,6,7)] res<-signif(res,digits) colnames(res)[1]<-c("Effect") if(is.factor(exposure)) { ln<-levels(exposure) newrownames<-NULL for(i in c(1:(nlevE-1))) { newrownames<-c(newrownames, paste("strata",sn[1:nlevS],"level",ln[i+1],"vs",ln[1])) } } else { newrownames<-paste("strata",sn[1:nlevS]) } rownames(res)<-newrownames aov<-anova(mm,m,test="Chisq") print( res ) cat("\nTest for effect modification on", aov[2,3],"df:","p-value=",format.pval(aov[2,5],digits=3),"\n") invisible(list(res,paste("Test for effect modification on", aov[2,3],"df:","p-value=",format.pval(aov[2,5],digits=3)))) } } Epi/R/cutLexis.R0000644000176200001440000002575713763207377013152 0ustar liggesusers doCutLexis <- function(data, cut, timescale, new.scale=FALSE ) { ## new.scale is a character constant with the name of the new timescale ## Code each new interval using new variable lex.cut: ## 0 = unchanged interval (cut occurs after exit) ## 1 = first part of split interval ## 2 = second part of split interval (or cut occurs before interval) cut[is.na(cut)] <- Inf #If a cut time is missing, it never happens ## First intervals (before the cut) in.1 <- entry(data, timescale) ex.1 <- pmin(cut, exit(data, timescale)) ## Create Lexis object for first intervals lx.1 <- data lx.1$lex.dur <- ex.1 - in.1 lx.1$lex.cut <- ifelse(cut < exit(data, timescale), 1, 0) if( new.scale ) lx.1[,"lex.new.scale"] <- NA ## Second intervals (after the cut) in.2 <- pmax(cut, entry(data, timescale)) ex.2 <- exit(data, timescale) ## Create Lexis object for second intervals lx.2 <- data lx.2$lex.dur <- ex.2 - in.2 lx.2$lex.cut <- 2 if( new.scale ) lx.2[,"lex.new.scale"] <- in.2 - cut ## Update entry times lx.2[, timeScales(data)] <- exit(data) - lx.2$lex.dur return(rbind(lx.1, lx.2)) } setStatus.default <- function(data, new.state) { data$lex.Xst[data$lex.cut == 1] <- new.state[data$lex.cut == 1] data$lex.Cst[data$lex.cut == 2] <- new.state return(data) } setStatus.numeric <- function(data, new.state, precursor.states=NULL, progressive=TRUE) { if (!is.numeric(new.state)) { stop("If lex.Cst, lex.Xst are numeric, new.state must be numeric too") } data$lex.Xst[data$lex.cut == 1] <- new.state[data$lex.cut == 1] data$lex.Cst[data$lex.cut == 2] <- new.state exit.state <- data$lex.Xst[data$lex.cut == 2] is.precursor <- exit.state %in% precursor.states if (progressive) { is.precursor <- is.precursor | (exit.state < new.state) } data$lex.Xst[data$lex.cut == 2][is.precursor] <- new.state[is.precursor] return(data) } setStatus.factor <- function( data, new.state, precursor.states=NULL, progressive=TRUE) { if (!is.character(new.state)) { stop("new.state must be a character vector, but it is ",str(new.state)) } current.states <- levels(data$lex.Cst) new.states <- setdiff(new.state,current.states) new.states <- new.states[!is.na(new.states)] ## Modify factor levels if necessary if (length(new.states) > 0) { all.states <- c(current.states, sort(new.states)) new.order <- match( c(intersect(precursor.states,current.states), new.states, setdiff(current.states,precursor.states)), all.states ) levels(data$lex.Cst) <- all.states levels(data$lex.Xst) <- all.states } data$lex.Xst[data$lex.cut == 1] <- new.state[data$lex.cut == 1] data$lex.Cst[data$lex.cut == 2] <- new.state exit.state <- data$lex.Xst[data$lex.cut==2] is.precursor <- exit.state %in% precursor.states if (progressive) { if (is.ordered(data$lex.Xst)) { is.precursor <- is.precursor | (exit.state < new.state) } else { warning("progressive=TRUE argument ignored for unordered factor") } } data$lex.Xst[data$lex.cut==2][is.precursor] <- new.state[is.precursor] # Reorder factor levels sensibly if (!progressive & length(new.states)>0){ data$lex.Cst <- Relevel( data$lex.Cst, new.order ) data$lex.Xst <- Relevel( data$lex.Xst, new.order ) } return(data) } # Added by BxC match.cut <- function( data, cut ) { if(sum(!is.na(match(c("lex.id", "cut", "new.state"), names(cut)))) < 3 ) stop("The dataframe supplied in the cut= argument must have columns", "'lex.id','cut','new.state', but the columns are:\n", names(cut)) else { if( length(unique(cut$lex.id)) < nrow(cut) ) stop("Values of 'lex.id' must be unique in the 'cut' dataframe\n", "- maybe you are looking for rcutLexis?") else zz <- merge( data[,"lex.id",drop=FALSE], cut, all.x=TRUE ) if(is.factor( data$lex.Cst)) zz$new.state <- as.character(zz$new.state) if(is.numeric(data$lex.Cst)) zz$new.state <- as.numeric(zz$new.state) return( zz ) } } # End of addition / change cutLexis <- function(data, cut, timescale = 1, new.state = nlevels(data$lex.Cst)+1, new.scale = FALSE, split.states = FALSE, progressive = FALSE, precursor.states = transient(data), count = FALSE) { if (!inherits(data, "Lexis")) stop("data must be a Lexis object") if( count ) return( countLexis( data=data, cut=cut, timescale=timescale ) ) if( inherits( cut, "data.frame" ) ){ zz <- match.cut( data, cut ) cut <- zz$cut new.state <- zz$new.state } else if (length(cut) == 1) { cut <- rep(cut, nrow(data)) } else if (length(cut) != nrow(data)) { stop("'cut' must have length 1 or nrow(data) (=", nrow(data), "),\n --- but it has length ", length(cut),".") } timescale <- check.time.scale(data, timescale) if (length(timescale) > 1) { stop("Multiple time scales") } ## If we want to add a new timescale, construct the name if( is.logical(new.scale) ) { if( new.scale ) scale.name <- paste( "tf", new.state[1], sep="" ) } else { scale.name <- new.scale new.scale <- TRUE } if (missing(new.state)) { new.state <- data$lex.Cst #Carry forward last state } else if (length(new.state) == 1) { new.state <- rep(new.state, nrow(data)) } else if (length(new.state) != nrow(data)) { stop("'new.state' must have length 1 or nrow(data) (=", nrow(data), "),\n --- but it has length ", length(new.state)) } if (progressive) { if (is.factor(data$lex.Cst) && !is.ordered(data$lex.Cst)) { stop("progressive=TRUE invalid for unordered factors") } if (any(data$lex.Xst < data$lex.Cst)) { stop("Lexis object is not progressive before splitting") } } lx <- doCutLexis( data, cut, timescale, new.scale=TRUE ) if (is.factor(data$lex.Cst)) { lx <- setStatus.factor(lx, new.state, precursor.states, progressive) } else if (is.numeric(data$lex.Cst)) { lx <- setStatus.numeric(lx, new.state, precursor.states, progressive) } else { lx <- setStatus.default(lx, new.state) } ## Remove redundant intervals lx <- lx[lx$lex.dur > 0,] ## Remove the lex.cut column lx <- lx[,-match("lex.cut",names(lx))] ## Update the states visited after the cut if( split.states & is.factor( data$lex.Cst ) ) { post.states <- setdiff( levels(data$lex.Cst), precursor.states ) tmp.Cst <- as.character( lx$lex.Cst ) tmp.Cst <- ifelse( !is.na(lx$lex.new.scale) & lx$lex.new.scale>0 & tmp.Cst %in% post.states, paste( tmp.Cst,"(",new.state,")",sep="" ), tmp.Cst ) tmp.Xst <- as.character( lx$lex.Xst ) tmp.Xst <- ifelse( !is.na(lx$lex.new.scale) & tmp.Xst %in% post.states, paste( tmp.Xst,"(",new.state,")",sep="" ), tmp.Xst ) all.levels <- unique( c(tmp.Cst,tmp.Xst) ) ## put all the new levels after the old ones xtr.levels <- setdiff( all.levels, levels(lx$lex.Cst) ) new.levels <- c( levels(lx$lex.Cst), xtr.levels ) lx$lex.Cst <- factor( tmp.Cst, levels=new.levels ) lx$lex.Xst <- factor( tmp.Xst, levels=new.levels ) } ## Include the new timescale if( new.scale ) { ## Rename the new timescale variable names(lx)[match("lex.new.scale",names(lx))] <- scale.name ## The timescales' position among columns - used to reorder columns tn <- c( match( attr( data, "time.scales" ), names( lx ) ), ncol(lx) ) oth <- setdiff( 1:ncol(lx), tn ) ## Reorder columns (lx will then lose attributes) and sort rows lx <- lx[order(lx$lex.id,lx[,timescale]),c(tn,oth)] ## Update the attributes new.br <- c( attr( data, "breaks" ), list(NULL) ) names( new.br )[length(new.br)] <- scale.name attr( lx, "time.scales" ) <- c( attr( data, "time.scales" ), scale.name ) attr( lx, "time.since" ) <- c( attr( data, "time.since" ), names(table(new.state)) ) attr( lx, "breaks" ) <- new.br attr( lx, "class" ) <- attr( data, "class" ) } else { # Remove the new timescale and sort rows lx <- lx[order(lx$lex.id,lx[,timescale]),-match("lex.new.scale",names(lx))] # and transfer all the other attributes attr( lx, "time.scales" ) <- attr( data, "time.scales" ) attr( lx, "time.since" ) <- attr( data, "time.since" ) attr( lx, "breaks" ) <- attr( data, "breaks" ) attr( lx, "class" ) <- attr( data, "class" ) } lx } countLexis <- function(data, cut, timescale = 1) { if (!inherits(data, "Lexis")) stop("data must be a Lexis object") if( inherits( cut, "data.frame" ) ){ zz <- match.cut( data, cut ) cut <- zz$cut new.state <- zz$new.state } else if (length(cut) == 1) { cut <- rep(cut, nrow(data)) } else if (length(cut) != nrow(data)) { stop("'cut' must have length 1 or nrow(data) (=", nrow(data), "),\n --- but it has length ", length(cut),".") } timescale <- check.time.scale(data, timescale) if (length(timescale) > 1) { stop("Multiple time scales not meaningful") } lx <- doCutLexis(data, cut, timescale) ## Update status variables lx$lex.Xst[lx$lex.cut == 1] <- lx$lex.Cst[lx$lex.cut == 1] + 1 lx$lex.Cst[lx$lex.cut == 2] <- lx$lex.Cst[lx$lex.cut == 2] + 1 lx$lex.Xst[lx$lex.cut == 2] <- lx$lex.Xst[lx$lex.cut == 2] + 1 ## Remove redundant intervals lx <- lx[lx$lex.dur > 0,] ## Remove the lex.cut column lx <- lx[,-match("lex.cut",names(lx))] ## Retain the attributes attr( lx, "breaks" ) <- attr( data, "breaks" ) attr( lx, "time.scales" ) <- attr( data, "time.scales" ) attr( lx, "class" ) <- attr( data, "class" ) return(lx[order(lx$lex.id,lx[,timescale]),]) } tsNA20 <- function( x, all.scales=FALSE ) { tsc <- timeSince(x) if( !all.scales ) tsc <- tsc[tsc!=""] if( length(tsc)>0 ) for( ts in names(tsc) ) { x[,ts] <- ifelse( is.na(x[,ts]), 0, x[,ts] ) } x } Epi/R/ccwc.R0000644000176200001440000001264213626052376012251 0ustar liggesusersccwc <- function(entry=0, exit, fail, origin=0, controls=1, match=list(), include=list(), data=NULL, silent=FALSE) { # Check arguments entry <- eval(substitute(entry), data) exit <- eval(substitute(exit), data) fail <- eval(substitute(fail), data) origin <- eval(substitute(origin), data) n <- length(fail) if (length(exit)!=n) stop("All vectors must have same length") if (length(entry)!=1 && length(entry)!=n) stop("All vectors must have same length") if (length(origin)==1) { origin <- rep(origin, n) } else { if (length(origin)!=n) stop("All vectors must have same length") } # Transform times to correct scale t.entry <- as.numeric(entry - origin) t.exit <- as.numeric(exit - origin) # match= argument marg <- substitute(match) if (mode(marg)=="name") { match <- list(eval(marg, data)) names(match) <- as.character(marg) } else if (mode(marg)=="call" && marg[[1]]=="list") { mnames <- names(marg) nm <- length(marg) if (nm>1) { if (!is.null(mnames)) { for (i in 2:nm) { if (mode(marg[[i]])=="name") mnames[i] <- as.character(marg[[i]]) else stop("illegal argument (match)") } } else { for (i in 2:nm) { if (mode(marg[[i]])=="name") mnames[i] <- as.character(marg[[i]]) else stop("illegal argument (match)") } mnames[1] <= "" } } names(marg) <- mnames match <- eval(marg, data) } else { stop("illegal argument (match)") } m <- length(match) mnames <- names(match) if (m>0) { for (i in 1:m) { if (length(match[[i]])!=n) { stop("incorrect length for matching variable") } } } # include= argument iarg <- substitute(include) if (mode(iarg)=="name") { include <- list(eval(iarg, data)) names(include) <- as.character(iarg) } else if (mode(iarg)=="call" && iarg[[1]]=="list") { ni <- length(iarg) inames <- names(iarg) if (ni>1) { if (!is.null(inames)) { for (i in 2:ni) { if (mode(iarg[[i]])=="name") inames[i] <- as.character(iarg[[i]]) else stop("illegal argument (include)") } } else { for (i in 2:ni) { if (mode(iarg[[i]])=="name") inames[i] <- as.character(iarg[[i]]) else stop("illegal argument (include)") } inames[1] <= "" } } names(iarg) <- inames include <- eval(iarg, data) } else { stop("illegal argument (include)") } ni <- length(include) inames <- names(include) if (ni>0) { for (i in 1:ni) { if (length(include[[i]])!=n) { stop("incorrect length for included variable") } } } # create group codes using matching variables grp <- rep(1,n) pd <- 1 if (m>0) { for (im in 1:m) { v <- match[[im]] if (length(v)!=n) stop("All vectors must have same length") if (!is.factor(v)) v <- factor(v) grp <- grp + pd*(as.numeric(v) - 1) pd <- pd*length(levels(v)) } } # Create vectors long enough to hold results nn <- (1+controls)*sum(fail!=0) pr <- numeric(nn) sr <- numeric(nn) tr <- vector("numeric", nn) fr <- numeric(nn) nn <- 0 # Sample each group if (!silent) { cat("\nSampling risk sets: ") } set <- 0 nomatch <- 0 incomplete <- 0 ties <- FALSE fg <- unique(grp[fail!=0]) for (g in fg) { # Failure times ft <- unique( t.exit[(grp==g) & (fail!=0)] ) # Create case-control sets for (tf in ft) { if (!silent) { cat(".") } set <- set+1 case <- (grp==g) & (t.exit==tf) & (fail!=0) ncase <- sum(case) if (ncase>1) ties <- TRUE noncase <- (grp==g) & (t.entry<=tf) & (t.exit>=tf) & !case ncont <- controls*ncase if (ncont>sum(noncase)) { ncont <- sum(noncase) if (ncont>0) incomplete <- incomplete + 1 } if (ncont>0) { newnn <- nn+ncase+ncont sr[(nn+1):newnn] <- set tr[(nn+1):newnn] <- tf fr[(nn+1):(nn+ncase)] <- 1 fr[(nn+ncase+1):newnn] <- 0 pr[(nn+1):(nn+ncase)] <- (1:n)[case] ## Work around bad behaviour of sample for vectors of length 1 noncase.id <- (1:n)[noncase] pr[(nn+ncase+1):(newnn)] <- noncase.id[sample.int(length(noncase.id), size=ncont)] nn <- newnn } else { nomatch <- nomatch + ncase } } } if (!silent) { cat("\n") } res <- vector("list", 4+m+ni) if (nn>0) { res[[1]] <- sr[1:nn] res[[2]] <- map <- pr[1:nn] res[[3]] <- tr[1:nn] + origin[map] res[[4]] <- fr[1:nn] } if (m>0) { for (i in 1:m) { res[[4+i]] <- match[[i]][map] } } if (ni>0) { for (i in 1:ni) { res[[4+m+i]] <- include[[i]][map] } } names(res) <- c("Set", "Map", "Time", "Fail", mnames, inames) if (incomplete>0) warning(paste(incomplete, "case-control sets are incomplete")) if (nomatch>0) warning(paste(nomatch, "cases could not be matched")) if (ties) warning("there were tied failure times") data.frame(res) } Epi/R/matshade.R0000644000176200001440000000325513563764541013124 0ustar liggesusersmatshade <- function( x, y, lty = 1, col = 1:(ncol(y)/3), col.shade = col, alpha = 0.15, plot = dev.cur()==1, ... ) { # check sanity of x and y if( !is.vector(x) ) stop( "x must be a vector\n") if( ncol(y)%%3 != 0 ) warning( "number of columns in y, ", ncol(y), " is not divisible by 3\n") # create a new plot? if( plot ) matplot( x, y, col="transparent", ... ) # number of curves to draw ncrv <- ncol(y) %/% 3 # The recycling rule for colors and alpha: col <- rep(col ,ncrv)[1:ncrv] col.shade <- rep(col.shade,ncrv)[1:ncrv] alpha <- rep(alpha ,ncrv)[1:ncrv] # First shaded areas - allowing NA to create holes draw.shade <- function( xx, yu, yl, col ) { # Find NAs and plot shades for non-missing sequences wh <- 1:length(xx) # NAs where at least one is missing wh[apply( cbind(xx,yl,yu), 1, function(x) any(is.na(x)) )] <- NA idx <- 1 + cumsum( is.na( wh ) ) not.na <- !is.na( wh ) chunks <- split( wh[not.na], idx[not.na] ) for( ch in chunks ) if( length(ch) > 1 ) polygon( c( xx[ch], rev(xx[ch]) ), c( yu[ch], rev(yl[ch]) ), col = col, pch = NULL, border = "transparent" ) } # Then the shades for each set of 3 columns for( i in 1:ncrv ) draw.shade( x, y[,i*3-1], y[,i*3-0], col = adjustcolor( col.shade[i], alpha.f=alpha[i] ) ) # then curves on top of these matlines( x, y[,(1:ncrv)*3-2], col=col, lty=lty, ... ) } Epi/R/contr.diff.R0000644000176200001440000000057512531361077013363 0ustar liggesuserscontr.diff <- function(n) { if (is.numeric(n) && length(n) == 1) levs <- 1:n else { levs <- n n <- length(n) } contr <- array(0, c(n, n), list(levs, levs)) contr[col(contr) == row(contr)] <- 1 contr[row(contr) - col(contr) == 1] <- -1 if (n < 2) stop(paste("Contrasts not defined for", n - 1, "degrees of freedom")) contr } Epi/R/ci.lin.R0000644000176200001440000003571313640636047012511 0ustar liggesusers# The coef() methods in nlme and lme4 do something different, # other objects do not even have coef or vcov methods defined, # so we make a workaround by specifying our own generic methods: COEF <- function( x, ... ) UseMethod("COEF") COEF.default <- function( x, ... ) coef( x, ... ) VCOV <- function( x, ... ) UseMethod("VCOV") VCOV.default <- function( x, ... ) vcov( x, complete=TRUE, ... ) # Then we can get from these methods what we want from lme, mer etc. COEF.lme <- function( x, ... ) nlme::fixed.effects( x ) COEF.mer <- function( x, ... ) lme4::fixef( x ) COEF.lmerMod <- function( x, ... ) lme4::fixef( x ) # The vcov returns a matrix with the wrong class so we strip that: VCOV.lme <- function( x, ... ) as.matrix(vcov( x )) VCOV.mer <- function( x, ... ) as.matrix(vcov( x )) VCOV.lmerMod <- function( x, ... ) as.matrix(vcov( x )) # For the rest of the non-conforming classes we then just need the methods not defined # VCOV.coxph <- function( object, ... ) survival:A::vcov.coxph( object, complete=FALSE, ... ) COEF.crr <- function( object, ... ) object$coef VCOV.crr <- function( object, ... ) object$var COEF.MIresult <- function( object, ... ) object$coefficients VCOV.MIresult <- function( object, ... ) object$variance COEF.mipo <- function( object, ... ) object$qbar VCOV.mipo <- function( object, ... ) object$t COEF.polr <- function( object, ... ) summary(object)$coefficients VCOV.gnlm <- function( object, ... ) object$cov VCOV.rq <- function( object, ... ) summary(object, cov=TRUE)$cov df2ctr <- function( obj, nd ) { if( !( inherits(obj,"lm") | inherits(obj,"coxph") ) ) stop("data frame facility not inplemented for ", class(obj), " objects" ) # Factors in the prediction frame must have more than one level, which # they typically do not have in the specification, so we find the # factors in the prediction frame and expand levels to the complete # set of levels which should secure the working of model.matrix() dcl <- attr( obj$terms, "dataClasses" ) whf <- ( dcl == "factor" ) if( any(whf) ) for( fn in names(dcl)[which(whf)] ) nd[,fn] <- factor( nd[,fn], levels=obj$xlevels[[fn]] ) # The contrast matrix from the model - differs a bit between (g)lm, gam and coxph # this is needed to keep NA rows from the data frame supplied org.op <- options( na.action='na.pass' ) on.exit( options( org.op ) ) if( inherits(obj,"coxph") ) MM <- model.matrix( obj , data=nd ) if( inherits(obj,"gam" ) ) MM <- model.matrix( obj , newdata=nd ) else if( inherits(obj,"lm" ) ) MM <- model.matrix( formula(obj)[-2], data=nd ) return( MM ) } ci.dfr <- function( obj, ndx, ndr, xvars = NULL, vcov = FALSE, alpha = 0.05, Exp = FALSE, sample = FALSE ) { if( nrow(ndr)==1 ) ndr <- ndr[rep(1,nrow(ndx)),,drop=FALSE] if( ( ( nrow(ndx) != nrow(ndr)) ) | ( any(names(ndx) != names(ndr)) ) ) stop("\nThe two prediction frames must have same dimensions and column names:", "but dimensions are: (", paste( dim(ndx),collapse=","), ") and (", paste( dim(ndr),collapse=","), ")\n", "and column names are:\n", "exp: ", paste( names(ndx), collapse=", " ), "\n", "ref: ", paste( names(ndr), collapse=", " ), "\n") # Now supply and fix those variables that are needed in order to get model.matrix working: # Supplied variable names: cols <- names( ndx ) # Factors in model; which are supplied; derive names of omitted factors (ofacs) facs <- names( obj$xlevels ) ofacs <- setdiff( facs, cols ) # omitted *variables* must be supplied ovars <- setdiff( xvars, facs ) # Construct the extra columns with bogus data (their contribution will be null) xcols <- ndx[,NULL] if( length(ofacs) > 0 ) for( fn in ofacs ) xcols[,fn] <- obj$xlevels[[fn]][1] if( length(ovars) > 0 ) for( vn in ovars ) xcols[,vn] <- 1 if( dim(xcols)[2]>0 ) { ndx <- cbind( ndx, xcols ) ndr <- cbind( ndr, xcols ) } ci.lin( obj, ctr.mat = df2ctr( obj, ndx ) - df2ctr( obj, ndr ), vcov = vcov, alpha = alpha, Exp = Exp, sample = sample ) } ci.dfr2 <- function( obj, nd1, nd2, nd3, nd4, xvars = NULL, vcov = FALSE, alpha = 0.05, Exp = FALSE, sample = FALSE ) { if( nrow(nd2)==1 ) nd2 <- nd2[rep(1,nrow(nd1)),,drop=FALSE] if( nrow(nd3)==1 ) nd3 <- nd3[rep(1,nrow(nd1)),,drop=FALSE] if( nrow(nd4)==1 ) nd4 <- nd4[rep(1,nrow(nd1)),,drop=FALSE] if( ( nrow(nd2) != nrow(nd1)) | ( nrow(nd3) != nrow(nd1)) | ( nrow(nd4) != nrow(nd1)) | any(names(nd2) != names(nd1)) | any(names(nd3) != names(nd1)) | any(names(nd4) != names(nd1)) ) stop("\nThe prediction frames must have same dimensions and column names:", "but dimensions are: (", paste( dim(nd1),collapse=","), ") and (", paste( dim(nd2),collapse=","), ") and (", paste( dim(nd3),collapse=","), ") and (", paste( dim(nd4),collapse=","), ")\n", "and column names are:\n", "1: ", paste( names(nd1), collapse=", " ), "\n", "2: ", paste( names(nd2), collapse=", " ), "\n", "3: ", paste( names(nd3), collapse=", " ), "\n", "4: ", paste( names(nd4), collapse=", " ), "\n") # Now supply and fix those variables that are needed in order to get model.matrix working: # Supplied variable names: cols <- names( nd1 ) # Factors in model; which are supplied; derive names of omitted factors (ofacs) facs <- names( obj$xlevels ) ofacs <- setdiff( facs, cols ) # omitted *variables* must be supplied ovars <- setdiff( xvars, facs ) # Construct the extra columns with bogus data (their contribution will be null) xcols <- nd1[,NULL] if( length(ofacs) > 0 ) for( fn in ofacs ) xcols[,fn] <- obj$xlevels[[fn]][1] if( length(ovars) > 0 ) for( vn in ovars ) xcols[,vn] <- 1 if( dim(xcols)[2]>0 ) { nd1 <- cbind( nd1, xcols ) nd2 <- cbind( nd2, xcols ) nd3 <- cbind( nd3, xcols ) nd4 <- cbind( nd4, xcols ) } ci.lin( obj, ctr.mat = df2ctr( obj, nd1 ) -df2ctr( obj, nd2 ) -df2ctr( obj, nd3 ) +df2ctr( obj, nd4 ), vcov = vcov, alpha = alpha, Exp = Exp, sample = sample ) } ci.lin <- function( obj, ctr.mat = NULL, subset = NULL, subint = NULL, xvars = NULL, diffs = FALSE, fnam = !diffs, vcov = FALSE, alpha = 0.05, df = Inf, Exp = FALSE, sample = FALSE ) { # If ctr.mat is a data frame, call df2ctr if( inherits( ctr.mat, "data.frame" ) ) ctr.mat <- df2ctr( obj, ctr.mat ) # If ctr.mat is a list of two dataframes then call ci.dfr if( inherits( ctr.mat, "list" ) ) { if( length(ctr.mat)==2 ) { if( !inherits( ctr.mat[[1]], "data.frame" ) | !inherits( ctr.mat[[2]], "data.frame" ) ) stop("If ctr.mat is a list it must be a list of data frames") return( ci.dfr( obj, ctr.mat[[1]], ctr.mat[[2]], xvars = xvars, vcov = vcov, alpha = alpha, Exp = Exp, sample = sample ) ) } # If ctr.mat is a list of two dataframes then call ci.dfr2 for 2nd # order differences if( length(ctr.mat)==4 ) { if( !inherits( ctr.mat[[1]], "data.frame" ) | !inherits( ctr.mat[[2]], "data.frame" ) | !inherits( ctr.mat[[3]], "data.frame" ) | !inherits( ctr.mat[[4]], "data.frame" ) ) stop("If ctr.mat is a list it must be a list of data frames") return( ci.dfr2( obj, ctr.mat[[1]], ctr.mat[[2]], ctr.mat[[3]], ctr.mat[[4]], xvars = xvars, vcov = vcov, alpha = alpha, Exp = Exp, sample = sample ) ) } } # First extract all the coefficients and the variance-covariance matrix cf <- COEF( obj ) vcv <- VCOV( obj ) # Alised parameters are set to 0 if( any( is.na( cf ) ) ) cf[is.na(cf )] <- 0 if( any( is.na( vcv ) ) ) vcv[is.na(vcv)] <- 0 # Function for computing a contrast matrix for all possible # differences between a set of parameters. all.dif <- function( cf, pre=FALSE ) { nn <- length( cf ) nr <- nn * ( nn - 1 ) / 2 nam <- names( cf ) # Work out the indexes of parameter pairs to compare # xx <- numeric( 0 ) for( j in 2:nn ) xx <- c(xx, j:nn ) ctr <- cbind( rep( 1:(nn-1), (nn-1):1 ), xx ) # Now for the annotation: # Find out how large a proportion of rownames are identical i <- 1 while( all( substr( nam, 1, i ) == substr( nam[1], 1, i ) ) ) i <- i+1 # If a factor name is given, then use this, otherwise the identical part # of the parameter names if( is.character( pre ) ) { prefix <- pre pre <- TRUE } else { prefix <- substr( nam[1], 1, i-1 ) } rn <- paste( if( pre ) prefix else "", substring( nam[ctr[,1]], i ), "vs.", substring( nam[ctr[,2]], i ) ) # Finally, construct the contrast matrix and attach the rownames cm <- matrix( 0, nr, nn ) cm[cbind(1:nr,ctr[,1])] <- 1 cm[cbind(1:nr,ctr[,2])] <- -1 rownames( cm ) <- rn cm } # end of the function all.dif for all differences # Were all differences requested? if( diffs ) { if( is.character( subset ) ) { if ( inherits( obj, "lm" ) & length( grep( subset, names( obj$xlevels ) ) )>0 ) { # The case of factor level differences we find the relevant # subset of parameters by reconstructing names of parameters wf <- grep( subset, af <- names( obj$xlevels ) ) # All factor levels fn <- obj$xlevels[[af[wf]]] # Reconstruct names of relevant parameter names pnam <- paste( af[wf], fn, sep="" ) # Find them in the parameter vector wh <- match( pnam, names( coef( obj ) ) ) # Get the relevant subset, and stick in 0s for NAs cf <- coef( obj )[wh] cf[is.na( cf )] <- 0 vcv <- vcov( obj, complete=FALSE )[wh,wh] vcv[is.na( vcv )] <- 0 names( cf ) <- rownames( vcv ) <- colnames( vcv ) <- paste( subset, ": ", fn, sep="" ) } else { subset <- grep( subset, names( cf ) ) cf <- cf[subset] vcv <- vcv[subset,subset] } } else { cf <- cf[subset] vcv <- vcv[subset,subset] } ctr.mat <- all.dif( cf, pre=fnam ) } if( !diffs ) { if( is.character( subset ) ) { sb <- numeric(0) for( i in 1:length( subset ) ) sb <- c(sb,grep( subset[i], names( cf ) )) subset <- sb # unique( sb ) } if( is.character( subint ) ) { sb <- 1:length(cf) for( i in 1:length(subint) ) sb <- intersect( sb, grep(subint[i],names(cf)) ) subset <- sb # unique( sb ) } if( is.null( subset ) & is.null( subint ) ) subset <- 1:length( cf ) # Exclude units where aliasing has produced NAs. # Not needed after replacement with 0s # subset <- subset[!is.na( cf[subset] )] cf <- cf[subset] vcv <- vcv[subset,subset] if( is.null( ctr.mat ) ) { ctr.mat <- diag( length( cf ) ) rownames( ctr.mat ) <- names( cf ) } if( dim( ctr.mat )[2] != length(cf) ) stop( paste("\n Dimension of ", deparse(substitute(ctr.mat)), ": ", paste(dim(ctr.mat), collapse = "x"), ", not compatible with no of parameters in ", deparse(substitute(obj)), ": ", length(cf), sep = "")) } # Finally, here is the actual computation if( sample ) { # mvrnorm() returns a vector if sample=1, otherwise a sample by # length(cf) matrix - hence the rbind so we always get a row # matrix and res then becomes an nrow(ctr.mat) by sample matrix res <- ctr.mat %*% t( rbind(mvrnorm( sample, cf, vcv )) ) } else { ct <- ctr.mat %*% cf vc <- ctr.mat %*% vcv %*% t( ctr.mat ) se <- sqrt( diag( vc ) ) ci <- cbind( ct, se ) %*% ci.mat( alpha=alpha, df=df ) t0 <- cbind( se, ct/se, 2 * ( pnorm( -abs( ct / se ) ) ) ) colnames(t0) <- c("StdErr", "z", "P") res <- cbind(ci, t0)[, c(1, 4:6, 2:3), drop=FALSE] if( Exp ) { res <- cbind( res[,1:4 ,drop=FALSE], exp( res[,c(1,5,6),drop=FALSE] ) ) colnames( res )[5] <- "exp(Est.)" } # class( res ) <- c("ci.lin","matrix") } # Return the requested structure if( sample ) invisible( res ) else if( vcov ) invisible( list( coef=ct[,1], vcov=vc ) ) else res } # print.ci.lin <- # function( x, ..., digits=3 ) # { # print( round( unclass(x), digits ) ) # } # Handy wrapper ci.exp <- function( ..., Exp=TRUE, pval=FALSE ) { res <- if( Exp ) { ci.lin( ..., Exp=TRUE )[,if(pval) c(5:7,4) else 5:7 ,drop=FALSE] } else { ci.lin( ..., Exp=FALSE )[,if(pval) c(1,5,6,4) else c(1,5,6),drop=FALSE] } # class( res ) <- c( "ci.lin", "matrix" ) res } # Wrapper for predict.glm to give estimates and confidence intervals ci.pred <- function( obj, newdata, Exp = NULL, alpha = 0.05 ) { if( !inherits( obj, "lm" ) ) stop("Not usable for non-(g)lm objects") if( !inherits( obj, "glm" ) & inherits( obj, "lm" ) ) return( predict.lm( obj, newdata=newdata, interval="confidence" ) ) # get the prediction and se on the link scale else { zz <- predict( obj, newdata=newdata, se.fit=TRUE, type="link" ) # compute ci on link scale zz <- cbind( zz$fit, zz$se.fit ) %*% ci.mat( alpha=alpha ) # transform as requested if( missing(Exp) ) { return( obj$family$linkinv(zz) ) } else { if( Exp ) { return( exp(zz) ) } else if( !Exp ) return( zz ) } } } # Function to calculate RR with CIs from independent rates with CIs; # r1 and r2 are assumed to be vectors or 2 or 3-column matrices with # rate, lower and upper confidence limits repectively. ci.ratio <- function( r1, r2, se1 = NULL, # standard error of rt1 se2 = NULL, # standard error of rt2 log.tr = !is.null(se1) & !is.null(se2), # is this log-rates? alpha = 0.05, pval = FALSE ) { if( is.data.frame(r1) ) r1 <- as.matrix( r1 ) if( is.data.frame(r2) ) r2 <- as.matrix( r2 ) if( is.matrix(r1) & !is.null(se1) ) warning("r1 is matrix, se1 is ignored") if( is.matrix(r2) & !is.null(se2) ) warning("r2 is matrix, se2 is ignored") # if supplied as 1-column matrix change to vector if( is.matrix(r1) ) if( ncol(r1)==1 ) r1 <- as.vector( r1 ) if( is.matrix(r2) ) if( ncol(r2)==1 ) r2 <- as.vector( r2 ) # move to log scale if( !log.tr ) { r1 <- log( r1 ) r2 <- log( r2 ) } # how wide are the condidence intervals if( is.matrix(r1) ) if( ncol(r1)>1 ) rg1 <- t( apply(r1,1,range) ) if( is.matrix(r2) ) if( ncol(r2)>1 ) rg2 <- t( apply(r2,1,range) ) # get the estimates on the log-scale R1 <- if( is.matrix(r1) ) apply( rg1, 1, mean ) else r1 R2 <- if( is.matrix(r2) ) apply( rg2, 1, mean ) else r2 if( is.null(se1) ) se1 <- apply( rg1, 1, diff ) / (2*qnorm(1-alpha/2)) if( is.null(se2) ) se2 <- apply( rg2, 1, diff ) / (2*qnorm(1-alpha/2)) # compute the RR and the c.i. and optionally the p-value lrr <- R1 - R2 slrr <- sqrt( se1^2 + se2^2 ) rr <- cbind(lrr,slrr) %*% ci.mat(alpha=alpha) if( !log.tr ) rr <- exp( rr ) if( pval ) return( cbind( rr, 1-pchisq( (lrr/slrr)^2, 1 ) ) ) else return( rr ) } Epi/R/Pplot.R0000644000176200001440000000346512531361077012426 0ustar liggesusersPplot <- function( rates, age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, p.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), p.lim = range( per, na.rm=TRUE ) + c(0,diff(range(per))/30), ylim = range( rates[rates>0], na.rm=TRUE ), p.lab = names( dimnames( rates ) )[2], ylab = deparse( substitute( rates ) ), at = NULL, labels = paste( at ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, ann = FALSE, cex.ann = 0.8, xannx = 1/20, a.thin = seq( 1, length( age ), 2 ), ... ) { # Plot the frame if( ann ) p.lim <- p.lim + c(0,diff( range( age ) ) * xannx ) matplot( per, t(rates), type="n", xlim=p.lim, ylim=ylim, xlab=p.lab, ylab=ylab, log=log.ax, las=las, yaxt=if( !is.null( at ) ) "n" else "s" ) if( !is.null( at ) ) axis( side=2, at=at, labels=labels, yaxt="s", las=las ) # and the grid if required if( !missing( p.grid ) | !missing( grid ) ) { if( is.logical( p.grid ) & p.grid[1] ) p.grid <- nice( per, log=par("xlog") ) abline( v=p.grid, col=col.grid ) } if( !missing( ygrid ) | !missing( ygrid ) ) { if( is.logical( ygrid ) & ygrid[1] ) ygrid <- nice( rates[!is.na(rates)], log=par("ylog") ) abline( h=ygrid, col=col.grid ) } box() # then the curves matlines( per, t(rates), lwd=lwd, lty=lty, col=col, type=type, ... ) # annotate them if required (every second by default ) if( ann ) { nr <- nrow( rates ) nc <- ncol( rates ) text( rep( per[nc], nr )[a.thin], rates[,nc][a.thin], paste( "", age[a.thin] ), adj=c(0,0.5), cex=cex.ann, col=if( length(col)==1 ) col else col[a.thin] ) } } Epi/R/float.R0000644000176200001440000000666612531361077012443 0ustar liggesusers"float" <- function(object, factor, iter.max = 50) { float.variance <- function(V, tol=1.0e-3, iter.max = 50) { ## Calculate floated variances for variance matrix V, which is ## assumed to represent a set of treatment contrasts m <- nrow(V) if (!is.matrix(V) || ncol(V) != m || m == 1) stop ("V must be a square matrix of size 2 x 2 or more") evals <- eigen(V, only.values=TRUE)$values if(any(evals < 0)) stop("V not positive definite") ## Starting values from Easton et al (1991) R <- V - diag(diag(V)) V00 <- sum(R)/(m * (m-1)) V10 <- apply(R, 1, sum)/(m-1) fv <- c(V00, V00 - 2 * V10 + diag(V)) for(iter in 1:iter.max) { w <- 1/fv S <- sum(w) w1 <- w[-1]/S ##Augment data matrix V10 <- as.vector(V %*% w1) V00 <- as.vector(1/S + t(w1) %*% V %*% w1) ##Calculate new estimates fv.old <- fv fv <- c(V00, V00 - 2 * V10 + diag(V)) ## Check convergence if(max(abs(fv.old - fv)/fv) < tol) break } if (iter == iter.max) warning("Floated variance estimates did not converge") Vmodel.inv <- S * (diag(w1) - w1 %*% t(w1)) evals <- 1/(eigen(V %*% Vmodel.inv, only.values=TRUE)$values) divergence <- sum(1/evals - 1 + log(evals))/2 return(list(variance=fv, error.limits=sqrt(range(evals)), divergence=divergence)) } if (is.null(object$xlevels)) { stop("No factors in model") } if (missing(factor)) { i <- 1 factor <- names(object$xlevels)[1] } else { i <- pmatch(factor, names(object$xlevels)) if (is.na(i)) { stop(paste("Factor",i,"not found in model")) } } xcontrasts <- object$contrasts[[i]] xlevels <- object$xlevels[[i]] xname <- names(object$xlevels)[i] nlevels <- length(xlevels) ## Extract the coefficients and variance matrix for a single factor ## from object if (nlevels <= 2) { stop ("Floated variances undefined for factors with less than 3 levels") } ## Get contrast matrix C <- if (is.matrix(xcontrasts)) { xcontrasts } else { get(xcontrasts, mode="function")(xlevels) } if (qr(C)$rank < nlevels - 1) { stop ("Impossible to reconstruct treatment contrasts") } ## Get coefficients and variance matrix if(is.null(cnames <- colnames(C))) cnames <- 1:(nlevels-1) contr.names <- paste(xname, cnames, sep="") coef <- coef(object)[contr.names] V <- vcov(object)[contr.names, contr.names] ## Convert to treatment contrast parameterization if (identical(xcontrasts, "contr.treatment")) { V.tc <- V coef.tc <- c(0, coef) } else { D.inv <- cbind(rep(-1,nlevels-1), diag(nlevels-1)) S <- D.inv %*% cbind(rep(1, nlevels), C) S <- S[,-1] ## coefficients coef.tc <- c(0, S %*% coef) ## If we find a baseline level (implicitly defined ## by having a row of zeros in the contrast matrix) ## then adjust the coefficients is.base <- apply(abs(C), 1, sum) == 0 if (any(is.base)) coef.tc <- coef.tc - coef.tc[is.base] ## variance matrix V.tc <- S %*% V %*% t(S) } names(coef.tc) <- xlevels float.out <- float.variance(V.tc, iter.max = iter.max) var <- float.out$var names(var) <- xlevels ans <- list(coef=coef.tc, var=var, limits=float.out$error.limits, factor=factor) class(ans) <- "floated" return(ans) } Epi/R/rm.tr.R0000644000176200001440000000274112743677240012375 0ustar liggesusersrm.tr <- function( obj, from, to ) { # checks if( from==to) stop( "Don't be silly, 'from' and 'to' are identical." ) if( !(from %in% levels(obj) ) ) stop( "'from' not a state in the object." ) if( !( to %in% levels(obj) ) ) stop( " 'to' not a state in the object." ) ### These things do not change over the purging iterations # Sort the rows of the object and count them obj <- obj[order(obj$lex.id,obj[,timeScales(obj)[1]]),] nrw <- nrow( obj ) # First obs for each person no1 <- !duplicated( obj$lex.id ) wh1 <- which( no1 ) ### Utility function doing the work inside the loop purge.one <- function( obj, from, to, nrw, wh1 ) { # Where are the illegal transitions chX <- ( paste( obj$lex.Cst, obj$lex.Xst ) == paste( from, to ) ) whX <- which( chX ) if( length(whX)>0 ) { # Change lex.Xst in this record obj$lex.Xst[whX] <- obj$lex.Cst[whX] # and lex.Cst in next record, but only if it is not a new person whX <- setdiff( whX[whX=sum( x*w*y). # Avoids computing the entire projection matrix # X %*% inverse( X'WX ) %*% (XW)' by first computing # inverse( X'WX ) %*% (XW)'M # (which is (p x p) %*% (p x n) %*% (n x k), i.e. (p x k) ) # and then premultiplying X (n x p) hence avoiding making # a n x n matrix underway (note that n is large, p is small). # Note multiplication by W (diagional matrix) is done by # vector multiplication using the recycling facility of R. { if( nrow(X) != length(weight) ) stop( "Dimension of space and length of weights differ!" ) if( nrow(X) != nrow(M) ) stop( "Dimension of space and rownumber of model matrix differ!" ) Pp <- solve( crossprod( X * sqrt(weight) ), t( X * weight ) ) %*% M PM <- X %*% Pp if (orth) PM <- M - PM else PM } Epi/R/bootLexis.R0000644000176200001440000000444413340467163013300 0ustar liggesusers# The method nid <- function ( Lx, ... ) UseMethod("nid") nid.default <- nid.Lexis <- function( Lx, by=NULL, ... ) { if( !is.null(by) ) { if( !(by %in% names(Lx)) ) stop( "'by' must be the name of a variable in Lx" ) if( !is.factor(Lx[,by]) ) Lx[,by] <- factor(Lx[,by]) } if( is.null(by) ) length( unique( Lx$lex.id ) ) else sapply( split( Lx, Lx[,by] ), nid.Lexis ) } # Make a boostrap sample of a Lexis object: # Sample the *persons* with replacement, possibly sampling within levels of by= bootLexis <- function( Lx, size = NULL, by = NULL, replace = TRUE ) { if( !inherits( Lx, "Lexis" ) ) stop("Only meaningful for Lexis objects.") isDT <- inherits( Lx, "data.table" ) if( isDT ) class( Lx ) <- c("Lexis","data.frame") # determine size of the bootstrap samples if not given if( is.null( size ) ) size <- nid.Lexis( Lx, by = by ) # allowing for a length 1 x-vector REsample <- function(x,sz) x[sample.int(length(x),size=sz,replace=replace)] if( is.null(by) ) { # Simple bootstrap bLx <- subid.Lexis( Lx, REsample( unique(Lx$lex.id), size ) ) } else { # Bootstrap by groups bLx <- NULL spL <- split( Lx, Lx[,by] ) for( i in 1:length(spL) ) { bLx <- rbind( bLx, cbind( bootLexis( spL[[i]], size = size[i] ), bgr = paste(i) ) ) } bLx$lex.id <- as.integer( interaction(bLx$lex.id,bLx$bgr) ) bLx <- bLx[,-grep("bgr",names(bLx))] } # return the result after converting to data.table if needed if( isDT ) class( bLx ) <- c("Lexis","data.table","data.frame") bLx } # A utility function that returns a Lexis object subsetted to a set of # lex.ids, allowing for repeat values of lex.id subid.Lexis <- function( Lx, ids ) { tt <- table( ids ) bLx <- NULL max.id <- 0 for( j in 1:max(tt) ) { # avoid note about no visible binding wh <- NULL lex.id <- NULL # who appears at least j times in the sample ? wh <<- names(tt[tt>=j]) sb <- subset( Lx, lex.id %in% wh ) # remember their original id sb$old.id <- sb$lex.id # to assure that different samples of the same person has different lex.id sb$lex.id <- sb$lex.id + max.id max.id <- max( sb$lex.id ) bLx <- rbind( bLx, sb ) } # Generate new lex.ids in the order 1:N bLx$lex.id <- as.integer( factor(bLx$lex.id) ) bLx } Epi/R/expand.data.r0000644000176200001440000000436212531361077013554 0ustar liggesusersexpand.data <- function(fu, formula, breaks, data) { Nsubject <- nrow(fu) ## The model matrix to be merged up to the expanded data if (!missing(formula)) { covariate.frame <- data.frame(model.matrix(formula,data)[,-1]) cov.names <- names(covariate.frame) covariate.frame$id <- 1:Nsubject } else { covariate.frame <- NULL cov.names <- character(0) } ## 1-responses for the survival intervals Nbreak <- length(breaks) ILENGTH <- function(x) { pmax(pmin(x[2], breaks[-1]) - pmax(x[1], breaks[-Nbreak]), 0) } well.mat <- -matrix(apply(fu[,c(1,2), drop=FALSE], 1, ILENGTH), nrow=Nbreak-1) ## For the sake of the stability of the fitting procedure, each record ## with a 1-response is further split into separate records for each ## follow-up interval: id.vec <- c(diag(Nbreak-1)) well.mat <- matrix(apply(well.mat, 2, "*", id.vec), nrow=Nbreak-1) well.id <- rep(1:Nsubject, each=Nbreak-1) valid.cols <- apply(well.mat!=0, 2, any) well.mat <- well.mat[,valid.cols, drop=FALSE] #Remove cols that are all zero well.id <- well.id[valid.cols] ## 0-responses for the event intervals is.case <- !is.na(fu[,3]) # Observed to become ill fu.cases <- subset(fu, is.case) ill.mat <- -matrix(apply(fu.cases[,c(2,3), drop=FALSE], 1, ILENGTH), nrow=Nbreak-1) ill.id <- which(is.case) ## The dataframe for analysis is one observation per survival interval ## (well.mat) and one per event interval (ill.mat): rates.frame <- as.data.frame(t(cbind(well.mat, ill.mat))) rates.names <- paste("(", breaks[-Nbreak],",",breaks[-1],")", sep="") names(rates.frame) <- rates.names rates.frame$y <- rep(c(1,0), c(ncol(well.mat), ncol(ill.mat))) rates.frame$id <- c(well.id, ill.id) ## Merge the covariates on to the model matrix for the baseline if (!is.null(covariate.frame)) { model.frame <- merge(rates.frame, covariate.frame, by="id") } else { model.frame <- rates.frame } model.frame[["id"]] <- NULL #Remove id variable return( list( rates.frame = model.frame[,rates.names, drop=FALSE], cov.frame = model.frame[, cov.names, drop=FALSE], y = model.frame[, "y", drop=TRUE ] ) ) } Epi/R/as.Date.cal.yr.R0000644000176200001440000000014312531361077013764 0ustar liggesusersas.Date.cal.yr <- function( x, ... ) { structure( round( ( x - 1970 ) * 365.25 ), class="Date" ) } Epi/R/ci.mat.R0000644000176200001440000000045012531361077012472 0ustar liggesusersci.mat <- function( alpha=0.05, df=Inf ) { ciM <- rbind( c(1,1,1), qt(1-alpha/2,df)*c(0,-1,1) ) colnames( ciM ) <- c("Estimate", paste( formatC( 100* alpha/2 , format="f", digits=1 ), "%", sep="" ), paste( formatC( 100*(1-alpha/2), format="f", digits=1 ), "%", sep="" ) ) ciM } Epi/R/fit.mult.r0000644000176200001440000000260212531361077013122 0ustar liggesusersfit.mult <- function(y, rates.frame, cov.frame, start) { if (missing(start)) { ## Fit model without covariates to get initial rates estimates glm.out.rates <- fit.baseline(y, rates.frame) ## Initial values for iterative fitting lambda <- coef(glm.out.rates) beta <- rep(0, ncol(cov.frame)) } else { lambda <- start[1:ncol(rates.frame)] beta <- start[ncol(rates.frame) + 1:ncol(cov.frame)] } niter <- 1 cy <- 1 - y while(TRUE) { ## covariates model off <- log(-as.matrix(rates.frame) %*% lambda) glm.out.cov <- glm(cy ~ -1 + offset(off) + ., family=binomial(link=cloglog), data=cov.frame, start=beta, maxit=100) beta <- coef(glm.out.cov) ## rates model wgt <- exp(as.matrix(cov.frame) %*% beta) temp.rates.frame <- wgt * rates.frame glm.out.rates <- glm(y ~ -1 + ., family=binomial(link=log), data=temp.rates.frame, start=lambda, maxit=100) lambda <- coef(glm.out.rates) ## Check convergence ## Convergence <==> deviances are equal TOL <- max(glm.out.cov$control$epsilon, glm.out.rates$control$epsilon) dev1 <- glm.out.cov$deviance dev2 <- glm.out.rates$deviance if (abs(dev1 - dev2)/(0.1 + abs(dev1)) < TOL) break else niter <- niter + 1 } return(list( rates=glm.out.rates, cov=glm.out.cov, niter=niter)) } Epi/R/contr.cum.R0000644000176200001440000000056612531361077013237 0ustar liggesuserscontr.cum <- function(n) { if (is.numeric(n) && length(n) == 1) levs <- 1:n else { levs <- n n <- length(n) } contr <- array(0, c(n, n), list(levs, levs)) contr[col(contr) <= row(contr)] <- 1 if (n < 2) stop(paste("Contrasts not defined for", n - 1, "degrees of freedom")) contr <- contr[, -1, drop = FALSE] contr } Epi/R/print.Icens.r0000644000176200001440000000020012531361077013544 0ustar liggesusersprint.Icens <- function( x, digits=4, scale=1, ... ) { emat <- summary.Icens( x, scale=scale ) print( round( emat, digits ) ) } Epi/R/plotevent.r0000644000176200001440000000217112531361077013401 0ustar liggesusersplotevent <- function(last.well,first.ill,data) { subsetdata <- data[!is.na(data[,first.ill]),c(last.well,first.ill)] subsetdata$n <- seq(1,dim(subsetdata)[1]) plot(c(subsetdata[,1], subsetdata[,2]),rep(0,2*nrow(subsetdata)), bty="n", yaxt="n", type="n", xlim=c(round(min(subsetdata[,1],subsetdata[,2],na.rm=T)),round(max(subsetdata[,1],subsetdata[,2],na.rm=T))), ylim=c(-2, max(subsetdata[,3])), xlab="Time",ylab="Conversions", main=paste("Times between ",last.well," and ",first.ill,"",sep="")) mtext(seq(0,nrow(subsetdata),5)[-1],side=2,at=seq(0,nrow(subsetdata),5)[-1],las=1,line=0) mtext("Eq Cl",side=2,at=-2,las=1, padj=0,col="blue",font=2) segments(subsetdata[,1],subsetdata[,3],subsetdata[,2],subsetdata[,3],lwd=1) left <- unique(subsetdata[,1]) right <- unique(subsetdata[,2]) names(left) <- rep("0",length(left)) names(right) <- rep("1",length(right)) MM <- sort(c(left,right)) type <- as.numeric(names(MM)) type2 <- c(type[-1],0) diff <- type-type2 int <- MM[diff<0|diff>0] mat <- matrix(int,length(int)/2,2,byrow=TRUE) d <- mat[,1] - mat[,2] segments(mat[,1][d!=0],-2,mat[,2][d!=0],-2,lwd=3,col="blue") } Epi/R/erl.R0000644000176200001440000001541113673706023012106 0ustar liggesuserserl <- function( int, muW, muD, lam = NULL, age.in = 0, A = NULL, immune = is.null(lam), yll = TRUE, note = TRUE ) { # Computes expected residual life time for Well and Dis states # respectively in an illness-death model, optionally ignoring # the well->ill transition # Utility to integrate a survival function from the last point where # it is 1, assuming points are 1 apart trsum <- function( x ) { x[c(diff(x)==0,TRUE)] <- NA sum( ( x[-length(x)] + x[-1] ) / 2, na.rm=TRUE ) } # Check sensibility if( !immune & is.null(lam) ) stop( "'lam' is required when immune=FALSE\n" ) # Replace NAs with 0s if( !is.null(lam) ) { if( any(is.na(lam)) ){ lam[is.na(lam)] <- 0 ; warning("NAs in agument 'lam' set to 0") } } if( any(is.na(muD)) ){ muD[is.na(muD)] <- 0 ; warning("NAs in agument 'muD' set to 0") } if( any(is.na(muW)) ){ muW[is.na(muW)] <- 0 ; warning("NAs in agument 'muW' set to 0") } # Survival functions sD <- surv1( int=int, muD, age.in = age.in, A = A ) if( immune ) sW <- surv1( int=int, muW, age.in = age.in, A = A ) else sW <- surv2( int=int, muW, muD, lam, age.in = age.in, A = A ) # Area under the survival functions erl <- cbind( apply( sW[,-1], 2, trsum ), apply( sD[,-1], 2, trsum ) ) * int colnames( erl ) <- c("Well","Dis") rownames( erl ) <- colnames( sW )[-1] # Should we compute years of life lost? if( yll ) erl <- cbind( erl, YLL = erl[,"Well"] - erl[,"Dis"] ) # Cautionary note if( immune ) { attr( erl, "NOTE" ) <- "Calculations assume that Well persons cannot get Ill (quite silly!)." if( note ) cat("NOTE:", attr( erl, "NOTE" ), "\n" ) } return( erl ) } # yll is just a simple wrapper for erl, only selecting the YLL column. yll <- function( int, muW, muD, lam = NULL, age.in = 0, A = NULL, immune = is.null(lam), note = TRUE ) erl( int = int, muW = muW, muD = muD, lam = lam, age.in = age.in, A = A, immune = immune, yll = TRUE, note = note )[,"YLL"] surv1 <- function( int, mu, age.in=0, A=NULL ) { # Computes the survival function from age A till the end, assuming # that mu is a vector of mortalities in intervals of length int. # int and mu should be in compatible units that is T and T^-1 for # some unit T (months, years, ...) # impute 0s for NAs if( any(is.na(mu)) ){ mu[is.na(mu)] <- 0 ; warning("NAs in agument 'mu' set to 0") } # age-class boundaries age <- 0:length(mu)*int + age.in # cumulative rates and survival at the boundaries Mu <- c( 0, cumsum( mu )*int ) Sv <- exp( -Mu ) surv <- data.frame( age=age, surv=Sv ) # if a vector of conditioning ages A is given if( cond <- !is.null(A) ) { j <- 0 # actual conditioning ages cage <- NULL for( ia in A ) { j <- j+1 # Where is the age we condition on cA <- which( diff(age>ia)==1 ) # survival up to condtioning age is set to 1 surv <- cbind( surv, pmin( 1, surv$surv/(surv$surv[cA]) ) ) cage[j] <- surv$age[cA] } } names( surv )[-1] <- paste( "A", c( age.in, if( cond ) cage else NULL ), sep="" ) rownames( surv ) <- NULL return( surv ) } erl1 <- function( int, mu, age.in = 0 ) { # Computes expected residual life time at all ages age <- 0:length(mu)*int + age.in # Small utility: cumulative cumulative sum from the end of a vector musmuc <- function( x ) rev( cumsum( rev(x) ) ) # The survival function with a 0 at end, and the integral from the upper end surv <- surv1( int = int, mu = mu, age.in = age.in )[,2] cbind( age = age, surv = surv, erl = c( musmuc( ( surv[-1]-diff(surv)/2 ) ) / surv[-length(surv)], 0 ) * int ) } surv2 <- function( int, muW, muD, lam, age.in=0, A=NULL ) { # check the vectors if( length(muW) != length(muD) | length(muD) != length(lam) ) stop( "Vectors with rates must have same length:\n", "length(muW)=", length(muW), ", length(muD)=", length(muD), ", length(lam)=", length(lam) ) # Replace NAs with 0s if( !is.null(lam) ) { if( any(is.na(lam)) ){ lam[is.na(lam)] <- 0 ; warning("NAs in agument 'lam' set to 0") } } if( any(is.na(muD)) ){ muD[is.na(muD)] <- 0 ; warning("NAs in agument 'muD' set to 0") } if( any(is.na(muW)) ){ muW[is.na(muW)] <- 0 ; warning("NAs in agument 'muW' set to 0") } # First the workhorse that computes the survival function for a # person in Well assuming that the mortality rate from this state is # muW, disease incidence is in lam, and mortality in the diseased # state is muD, and that all refer to constant rates intervals of # length int starting from age.in, conditional on survival to A wsurv2 <- function( int, muW, muD, lam, age.in=0, A=0 ) { # age-class boundaries - note one longer than rate vectors as it # refers to boundaries of intervals not midpoints age <- 0:length(muW)*int + age.in # cumulative rates at the boundaries, given survival to A MuW <- cumsum( c( 0, muW ) * ( age > A ) ) * int MuD <- cumsum( c( 0, muD ) * ( age > A ) ) * int Lam <- cumsum( c( 0, lam ) * ( age > A ) ) * int # probability of being well pW <- exp( -( Lam + MuW ) ) # probability of diagnosis at s --- first term in the integral for # P(DM at a). Note that we explicitly add a 0 at the start so we get a # probability of 0 of transition at the first age point Dis <- c(0,lam) * ( age > A ) * exp( -(Lam+MuW) ) * int # for each age (age[ia]) we compute the integral over the range # [0,age] of the product of the probability of diagnosis and the # probability of surviving from diagnosis till age ia pDM <- Dis * 0 for( ia in 1:length(age) ) pDM[ia] <- sum( Dis[1:ia] * exp( -(MuD[ia]-MuD[1:ia]) ) ) # 1st term as function of s (1:ia) # 2nd term integral over range s:age # upper integration limit is age (ia) and the lower # limit is the intermediate age (at DM) (1:ia) # Finally, we add the probabilities of being in Well resp. DM to get # the overall survival: surv <- data.frame( age = age, surv = pDM + pW ) return( surv ) } # survival from start surv <- wsurv2( int, muW, muD, lam, age.in=age.in, A=0 ) # add columns for conditioning ages if( !is.null(A) ) { for( j in 1:length(A) ) { surv <- cbind( surv, wsurv2( int, muW, muD, lam, age.in=age.in, A=A[j] )[,2] ) } } Al <- A for( i in 1:length(A) ) Al[i] <- max( surv$age[surv$age <= A[i]] ) colnames( surv )[-1] <- paste( "A", c( age.in, Al ), sep="" ) # done! return( surv ) } Epi/R/twoby2.R0000644000176200001440000000702013521223020012526 0ustar liggesuserstwoby2 <- function( exposure, outcome, alpha = 0.05, print = TRUE, dec = 4, conf.level = 1-alpha, F.lim = 10000 ) # What is the limit for trying the # Fisher.test { if( !missing( conf.level ) ) alpha <- 1 - conf.level if( inherits( exposure, c( "table", "matrix" ) ) ) tab <- exposure else tab <- table( exposure, outcome ) tab <- tab[1:2,1:2] a <- tab[1, 1] b <- tab[1, 2] c <- tab[2, 1] d <- tab[2, 2] bin.ci <- function( x, n ) { # Confidence interval for proportion based on Taylor-expansion of # the log-odds --- surprisingly good coverage. ef <- exp( qnorm(1-alpha/2)/sqrt(x*(n-x)/n) ) p <- x / n c( x/n, p/(p+(1-p)*ef), p/(p+(1-p)/ef) ) } rr <- (a/(a + b))/(c/(c + d)) se.log.rr <- sqrt((b/a)/(a + b) + (d/c)/(c + d)) lci.rr <- exp(log(rr) - qnorm( 1-alpha/2 ) * se.log.rr) uci.rr <- exp(log(rr) + qnorm( 1-alpha/2 ) * se.log.rr) or <- (a/b)/(c/d) se.log.or <- sqrt(1/a + 1/b + 1/c + 1/d) lci.or <- exp(log(or) - qnorm( 1-alpha/2 ) * se.log.or) uci.or <- exp(log(or) + qnorm( 1-alpha/2 ) * se.log.or) # Computing the c.i. for the probability difference as method # 10 from Newcombe, Stat.Med. 1998, 17, pp.873 ff. pr.dif <- ci.pd( a, c, b, d, alpha=alpha, print=FALSE )[5:7] pd <- pr.dif[1] lci.pd <- pr.dif[2] uci.pd <- pr.dif[3] as.pval <- 1 - pchisq( log( or )^2 / sum( 1/tab[1:2,1:2] ), 1 ) # If the numers are too large we don't bother about computing Fisher's test Fisher <- ( sum( tab ) < F.lim ) ft <- if( !Fisher ) NA else fisher.test( tab, conf.level=1-alpha ) # We need row and colum names for annotating the output if( is.null( rownames( tab ) ) ) rownames( tab ) <- paste( "Row", 1:2 ) if( is.null( colnames( tab ) ) ) colnames( tab ) <- paste( "Col", 1:2 ) tbl <- cbind( tab[1:2,1:2], rbind( bin.ci( a, a+b ), bin.ci( c, c+d ) ) ) colnames( tbl )[3:5] <- c(paste( " P(", colnames( tab )[1], ")", sep=""), paste( 100*(1-alpha),"% conf.", sep="" ), "interval") if( print ) cat("2 by 2 table analysis:", "\n------------------------------------------------------", "\nOutcome :", colnames( tab )[1], "\nComparing :", rownames( tab )[1], "vs.", rownames( tab )[2], "\n\n" ) if( print ) print( round( tbl, dec ) ) if( print ) cat( "\n" ) rmat <- rbind( c( rr, lci.rr, uci.rr ), c( or, lci.or, uci.or ), if( Fisher) c( ft$estimate, ft$conf.int ), c( pd, lci.pd, uci.pd ) ) rownames( rmat ) <- c(" Relative Risk:", " Sample Odds Ratio:", if( Fisher) "Conditional MLE Odds Ratio:", " Probability difference:") colnames( rmat ) <- c(" ", paste( 100*(1-alpha),"% conf.", sep="" ), "interval" ) if( print ) print( round( rmat, dec ) ) if( print ) cat( if( Fisher ) "\n Exact P-value:", if( Fisher ) formatC( ft$p.value, format="f", digits=dec ), "\n Asymptotic P-value:", formatC( as.pval, format="f", digits=dec ), "\n------------------------------------------------------\n") invisible( list( table = tbl, measures = rmat, p.value = c(as.pval,if( Fisher )ft$p.value) ) ) } Epi/R/contr.2nd.R0000644000176200001440000000037112531361077013130 0ustar liggesuserscontr.2nd <- function( n ) { if( is.numeric(n) && length(n) == 1 ) levs<- 1:n else { levs <- n n <- length(n) } if( n<3 ) stop( "Contrasts not defined for ", n-2, " degrees of freedom" ) outer( 1:n, 3:n-1, FUN=function(x,y) pmax( x-y, 0 ) ) } Epi/R/poisreg.R0000644000176200001440000000563013521051303012760 0ustar liggesuserspoisreg <- function (link = "log") { linktemp <- substitute(link) if (!is.character(linktemp)) linktemp <- deparse(linktemp) okLinks <- c("log", "identity", "sqrt") if (linktemp %in% okLinks) stats <- make.link(linktemp) else if (is.character(link)) { stats <- make.link(link) linktemp <- link } else { ## what else shall we allow? At least objects of class link-glm. if(inherits(link, "link-glm")) { stats <- link if(!is.null(stats$name)) linktemp <- stats$name } else { stop(gettextf('link "%s" not available for poisreg family; available links are %s', linktemp, paste(sQuote(okLinks), collapse =", ")), domain = NA) } } variance <- function(mu) mu validmu <- function(mu) all(is.finite(mu)) && all(mu>0) dev.resids <- function(y, mu, wt) { ## faster than 2 * wt * (y * log(ifelse(y == 0, 1, y/mu)) - (y - mu)) r <- mu*wt p <- which(y > 0) r[p] <- (wt * (y*log(y/mu) - (y - mu)))[p] 2*r } aic <- function(y, n, mu, wt, dev) { -2*sum(ifelse(n > 0, (wt/n), 0)*dpois(round(y*n), mu*n, log=TRUE)) } initialize <- expression({ if (NCOL(y) == 1) { n <- rep.int(1, nobs) y[weights == 0] <- 0 if (any(y < 0)) { stop("y values must be >= 0") } m <- weights * y if (any(abs(m - round(m)) > 0.001)) { warning("non-integer #successes in poisreg glm!") } mustart <- m + 0.1 } else if (NCOL(y) == 2) { if (any(y[,1] < 0)) { stop("negative values not allowed for the 'poisreg' family") } if (any(y[,2] < 0)) { stop("negative time not allowed for the 'poisreg' family") } if(any(y[,1] > 0 & y[,2] == 0)) { stop("non-zero counts in zero time in a poisreg glm!") } if(any(abs(y[,1] - round(y[,1])) > 1e-3)) { warning("non-integer counts in a poisreg glm!") } n <- y[,2] y <- ifelse(n == 0, 0, y[, 1]/n) weights <- weights * n mustart <- y + 0.1 } else { stop("for the 'poisreg' family, y must be a 2 column matrix where col 1 is no. events and col 2 is time") } }) simfun <- function(object, nsim) { wts <- object$prior.weights ftd <- fitted(object) rpois(nsim*length(ftd), ftd*wts) } structure(list(family = "poisson", ##Fool summary.glm link = linktemp, linkfun = stats$linkfun, linkinv = stats$linkinv, variance = variance, dev.resids = dev.resids, aic = aic, mu.eta = stats$mu.eta, initialize = initialize, validmu = validmu, valideta = stats$valideta, simulate = simfun), class = "family") } Epi/R/Ns.r0000644000176200001440000001412113252222304011725 0ustar liggesusers# ------------------------------------------------------------- # extension of ns() from splines, to allow for clamping. ns.ld <- function(x, df = NULL, knots = NULL, intercept = FALSE, Boundary.knots = range(x), fixsl=c(FALSE,FALSE) ) { nx <- names(x) x <- as.vector(x) nax <- is.na(x) if(nas <- any(nax)) x <- x[!nax] if(!missing(Boundary.knots)) { if( length(Boundary.knots)!=2 ) stop( "Argument 'Boundary.knots' must, when provided, have length 2" ) Boundary.knots <- sort(Boundary.knots) outside <- (ol <- x < Boundary.knots[1L]) | (or <- x > Boundary.knots[2L]) } else outside <- FALSE if(!missing(df) && missing(knots)) { ## df = number(interior knots) + 1 + intercept nIknots <- df - 1 - intercept if(nIknots < 0) { nIknots <- 0 warning("'df' was too small; have used ", 1 + intercept) } knots <- if(nIknots > 0) { knots <- seq.int(0, 1, length.out = nIknots + 2L)[-c(1L, nIknots + 2L)] stats::quantile(x[!outside], knots) } ## else NULL } else nIknots <- length(knots) Aknots <- sort(c(rep(Boundary.knots, 4L), knots)) if(any(outside)) { basis <- array(0, c(length(x), nIknots + 4L)) if(any(ol)) { k.pivot <- Boundary.knots[1L] xl <- cbind(1, x[ol] - k.pivot) tt <- splines::spline.des(Aknots, rep(k.pivot, 2L), 4, c(0, 1))$design basis[ol, ] <- xl %*% tt } if(any(or)) { k.pivot <- Boundary.knots[2L] xr <- cbind(1, x[or] - k.pivot) tt <- splines::spline.des(Aknots, rep(k.pivot, 2L), 4, c(0, 1))$design basis[or, ] <- xr %*% tt } if(any(inside <- !outside)) basis[inside, ] <- splines::spline.des(Aknots, x[inside], 4)$design } else basis <- splines::spline.des(Aknots, x, 4)$design # Fix the clamping if( !is.logical(fixsl) ) warning( "fixsl elements must be of mode logical" ) # Only the 4th parameter affected, should be either 1 or 2 in the two positions const <- splines::spline.des( Aknots, Boundary.knots, 4, c(2-fixsl[1],2-fixsl[2]) )$design if(!intercept) { const <- const[, -1 , drop = FALSE] basis <- basis[, -1 , drop = FALSE] } qr.const <- qr(t(const)) basis <- as.matrix((t(qr.qty(qr.const, t(basis))))[, - (1L:2L), drop = FALSE]) n.col <- ncol(basis) if(nas) { nmat <- matrix(NA, length(nax), n.col) nmat[!nax, ] <- basis basis <- nmat } dimnames(basis) <- list(nx, 1L:n.col) a <- list(degree = 3, knots = if(is.null(knots)) numeric(0) else knots, Boundary.knots = Boundary.knots, intercept = intercept) attributes(basis) <- c(attributes(basis), a) class(basis) <- c("cns", "basis", "matrix") basis } #------------------------------------------------------------------------------- # An extension of ns that automatically takes the smallest and largest knots # as boundary knots without further ado, but also allows centering # around a reference and detrending by means of projection, as well as # clamping. Ns <- function( x, ref = NULL, df = NULL, knots = NULL, intercept = FALSE, Boundary.knots = NULL, fixsl = c(FALSE,FALSE), detrend = FALSE ) { ## Check sensibility of arguments if( !is.null(ref) ) { if( !is.vector(ref) ) stop( "Argument 'ref' must be a scalar, but it is a ", class(ref), "." ) if( is.vector(ref) & length(ref)>1 ) stop( "Argument 'ref' must be a scalar, but has length ", length(ref), "." ) if( intercept ) { warning( "ref= specified, hence intercept=TRUE is ignored") intercept <- FALSE } } ## Detrending required? if( any(detrend>0) ) { # covers both logical and vector if( any(detrend<0) ) stop( "Some elements of weight are <0, e.g. no", (ww <- which(detrend<0))[1:min(5,length(ww))], "." ) if( !(length(detrend) %in% c(1,length(x))) ) { warning( "Weights in inner product diagonal matrix set to 1") weight <- rep(1,length(x)) } else weight <- if( is.numeric(detrend) ) detrend else rep(1,length(x)) detrend <- TRUE } if( detrend & intercept ) { warning( "detrend= specified, hence intercept=TRUE is ignored") intercept <- FALSE } if( detrend & any(fixsl) ) { warning( "detrend= specified, hence fixsl argument is ignored") fixsl=c(FALSE,FALSE) } ## Here is the specification of the spline basis ## knots= specified if( !is.null( knots ) ) { if( is.null( Boundary.knots ) ) { if( !is.null( knots ) ) { knots <- sort( unique( knots ) ) ok <- c(1,length(knots)) Boundary.knots <- knots[ok] knots <- knots[-ok] } } MM <- ns.ld( x, knots = knots, Boundary.knots = Boundary.knots, intercept = (intercept & is.null(ref)), fixsl = fixsl ) if( !is.null(df) ) cat("NOTE: Both knots= and df= specified, df ignored") } ## df= specified if( is.null( knots ) & !is.null( df ) ) MM <- ns.ld( x, df = df, intercept = (intercept & is.null(ref)), fixsl = fixsl ) ## Reference point specified ? if( !is.null(ref) ) { MM <- MM - ns.ld( rep(ref,length(x)), knots = attr(MM,"knots"), Boundary.knots = attr(MM,"Boundary.knots"), fixsl = fixsl ) } ## Detrending required ? if( detrend ) { DD <- detrend( MM, x, weight=weight ) ## NOTE: detrend does not preserve attributes for( aa in c("degree","knots","Boundary.knots","intercept","class") ) attr( DD, aa ) <- attr( MM, aa ) attr( DD, "detrend" ) <- TRUE attr( DD, "proj.wt" ) <- weight MM <- DD } return( MM ) } Epi/R/Cplot.R0000644000176200001440000000514312705663505012410 0ustar liggesusersCplot <- function( rates, age = as.numeric( rownames( rates ) ), per = as.numeric( colnames( rates ) ), grid = FALSE, c.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), c.lim = NULL, ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), c.lab = names( dimnames( rates ) )[2], ylab = deparse( substitute( rates ) ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, xannx = 1/20, ann = FALSE, cex.ann = 0.8, a.thin = seq( 1, length( age ), 2 ), ... ) { # Convert the age-period table to an age-cohort table rt <- as.table( rates ) dimnames( rt ) <- list( age = age, per = per ) rtf <- data.frame( rt ) rtf$age <- as.numeric( as.character( rtf$age ) ) rtf$per <- as.numeric( as.character( rtf$per ) ) # Check that age and period classe have equal lengths: wa <- diff( ag <- sort( unique(rtf$age) ) ) wp <- diff( pg <- sort( unique(rtf$per) ) ) if( unique(wa) != unique(wp) ) stop("Age and period intervals must have same width:\n", "Ages:", ag, "\n", "Periods:", pg, "\n", "No plot with cohort produced.\n" ) # Table by age and cohort ac <- tapply( rtf$Freq, list( rtf$age, rtf$per-rtf$age ), mean ) coh <- as.numeric( colnames( ac ) ) if( is.null( c.lim ) ) c.lim <- range( coh, na.rm=TRUE ) + c(0,diff( range( coh ) )/30) * ann # Plot the frame if( ann ) c.lim <- c.lim - c(diff( range( coh ) ) * xannx,0) matplot( coh, t(ac), type="n", xlim=c.lim, ylim=ylim, xlab=c.lab, ylab=ylab, log=log.ax, las=las, yaxt=if( !is.null( at ) ) "n" else "s" ) if( !is.null( at ) ) axis( side=2, at=at, labels=labels, yaxt="s", las=las ) # and the grid if required if( !missing( c.grid ) | !missing( grid ) ) { if( is.logical( c.grid ) & c.grid[1] ) c.grid <- nice( coh, log=par("xlog") ) abline( v=c.grid, col=col.grid ) } if( !missing( ygrid ) | !missing( grid ) ) { if( is.logical( ygrid ) & ygrid[1] ) ygrid <- nice( rates[!is.na(rates)], log=par("ylog") ) abline( h=ygrid, col=col.grid ) } box() # then the curves matlines( coh, t(ac), lwd=lwd, lty=lty, col=col, type=type, ... ) # annotate them if required (every second by default ) if( ann ) { nr <- nrow( ac ) nc <- ncol( ac ) # Find the cohorts for the last rates in each age-class c.end <- rev( per )[1] - age text( c.end[a.thin], rates[,ncol(rates)][a.thin], paste( "", age[a.thin] ), adj=c(0,0.5), cex=cex.ann, col=if( length(col)==1 ) col else col[a.thin] ) } } Epi/R/crr.Lexis.r0000644000176200001440000000253012777350201013230 0ustar liggesuserscrr.Lexis <- function( obj, mod, quiet=FALSE, ... ) { # Model formula to be transmitted md <- mod # Outcome variable fc <- as.character( mod[2] ) # Censoring levels cn <- unique( as.character(obj$lex.Xst)[obj$lex.Xst==obj$lex.Cst] ) # The competing causes (the remaining levels) cc <- setdiff( levels(obj$lex.Xst), union(fc,cn) ) # No l.h.s. side of formula when deriving model matrix mod[2] <- NULL # Remember no intercept term cv <- model.matrix( mod, data=obj )[,-1] # Then do it M <- crr( ftime = obj$lex.dur, fstatus = obj$lex.Xst, failcode = fc, cencode = cn, cov1 = cv, ... ) # A table of the no. of transitions N <- with( obj, table( Relevel( lex.Xst, c(fc,cc,cn) ) ) ) names( N ) <- paste( rep( c("Event:"," comp:"," cens:"), c(length(fc),length(cc),length(cn)) ), names(N) ) # add model and table to the resulting object M <- c( M, list( model.Lexis = md, transitions = cbind(N) ) ) # remember the class attribute (lost by doing "c") class( M ) <- "crr" # print overview if desired if( !quiet ) cat( "crr analysis of event", paste('"',fc,'"',sep=''), "\n versus", paste('"',cc,'"',sep=''), "\n with", paste('"',cn,'"',sep=''), "as censoring.\n" ) M } Epi/R/Termplot.R0000644000176200001440000000341412562641313013126 0ustar liggesusersTermplot <- function( obj, plot = TRUE, xlab = NULL, ylab = NULL, xeq = TRUE, yshr = 1.0, alpha = 0.05, terms = NULL, max.pt = NULL ) { # max.pt suppiled no.max <- missing( max.pt ) # Extract the curves to plot zz <- termplot( obj, se=TRUE, plot=FALSE, terms=terms ) nt <- length( zz ) for( i in 1:nt ) { # Thin the number of points in each returned term if( no.max ) max.pt <- nrow( zz[[i]] ) if( is.numeric(max.pt) & (nrow(zz[[i]]) > max.pt) ) zz[[i]] <- zz[[i]][round(seq(1,nrow(zz[[i]]),,max.pt)),] # Compute the estimate and the c.i. on log-scale zz[[i]] <- cbind( zz[[i]][,1], exp(as.matrix(zz[[i]][,2:3])%*%ci.mat(alpha=alpha)) ) } # Labels if( is.null(xlab) ) xlab <- names( zz ) if( is.null(ylab) ) ylab <- rep("",nt) ## Compute ranges of y and x xw <- sapply( zz, function(x) diff(range(x[,1 ])) ) yl <- sapply( zz, function(x) range(x[,2:4]) ) mr <- max( apply( yl, 2, function(x) exp(diff(log(x)))) ) yl <- apply( yl, 2, function(x) exp(mean(log(x))+c(-1,1)*log(mr)/2*yshr)) if( plot ) { ## Plot the effects side by side par( mfrow=c(1,nt), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 )#, bty="n", las=1 ) if( xeq ) ## Plot the terms so that x- and y-axes have the same extent { # Margins and total width in inches mw <- sum(par("mai")[c(2,4)]) tw <- par("pin")[1] # Widths of each plot, approx. at least pw <- (tw-nt*mw)*xw/sum(xw)+mw layout( rbind(1:nt), widths=pw ) } for( i in 1:nt ) matplot( zz[[i]][,1], zz[[i]][,2:4], xlab=xlab[i], xaxs="i", xlim=range(zz[[i]][,1]), ylab=ylab[i], yaxs="i", ylim=yl[,i], log="y", type="l", lty=1, lwd=c(5,2,2), col="black" ) } ## Return the extracted terms invisible( zz ) } Epi/R/ci.pd.R0000644000176200001440000000604512531361077012322 0ustar liggesusersci.pd <- function( aa, bb=NULL, cc=NULL, dd=NULL, method = "Nc", alpha = 0.05, conf.level = 0.95, digits = 3, print = TRUE, detail.labs = FALSE ) { # Computes the approximate c.i. for the probability difference # Optional methods: # -- "AC", Agresti and Caffo, Am Statistician (2000), # -- "Nc", method 10 from Newcombe, Stat.Med. 17, (1998), pp.873 ff. if ( !(method %in% c("AC", "Nc") ) ) stop( paste('Method', method, 'unsupported: Only "Nc" and "AC" supported') ) # Fix the confidence level if( missing( alpha ) ) alpha <- 1 - conf.level if( missing( conf.level ) ) conf.level <- 1 - alpha # Allow various forms of vector and matrix input prefix <- "" if( is.vector( aa ) & length( aa ) > 1 ) prefix <- names( aa ) if( length( dim( aa ) ) == 2 ) { bb <- aa[1,2] cc <- aa[2,1] dd <- aa[2,2] aa <- aa[1,1] } if( length( dim( aa ) ) == 3 ) { prefix <- paste( if( is.null( dimnames( aa ) ) ) 1:dim(aa)[3] else dimnames( aa )[[3]], ": ", sep="" ) bb <- aa[1,2,] cc <- aa[2,1,] dd <- aa[2,2,] aa <- aa[1,1,] } if( length( dim( aa ) ) > 3 ) stop( "Maximal array dimension (3) exceeded!" ) # Function to give roots in a 2nd degree polynomial # (Polyroot does not work on vectors of coefficients) pol2 <- function( Aye, Bee, Sea ) { Dee <- Bee^2 - 4 * Aye * Sea lo <- ifelse( Dee >= 0, ( -Bee - sqrt( Dee ) ) / ( 2 * Aye ), NA ) hi <- ifelse( Dee >= 0, ( -Bee + sqrt( Dee ) ) / ( 2 * Aye ), NA ) cbind( lo, hi ) } # Put the data in the right form x1 <- aa n1 <- aa+cc p1 <- x1/n1 x2 <- bb n2 <- bb+dd p2 <- x2/n2 pd <- x1/n1 - x2/n2 z <- qnorm( 1-alpha/2 ) zz <- z^2 if ( method == "AC" ) { x1.1 <- x1+1 n1.2 <- n1+2 x2.1 <- x2+1 n2.2 <- n2+2 p1.1 <- x1.1/n1.2 p2.1 <- x2.1/n2.2 pd.1 <- p1.1 - p2.1 SE.4 <- sqrt( p1.1 * ( 1-p1.1) /n1.2 + p2.1 * ( 1-p2.1) /n2.2 ) res <- cbind( n1, p1, n2, p2, pd, pd.1 - z*SE.4, pd.1 + z*SE.4 ) } else if ( method == "Nc" ) { A1 <- 1 + zz / n1 B1 <- -2*x1/n1 - zz / n1 C1 <- ( x1 / n1 )^2 r1 <- pol2( A1, B1, C1 ) A2 <- 1 + zz / n2 B2 <- -2*x2/n2 - zz / n2 C2 <- ( x2 / n2 )^2 r2 <- pol2( A2, B2, C2 ) dlt <- sqrt( ( x1/n1 - r1[,1] )^2 + ( x2/n2 - r2[,2] )^2 ) eps <- sqrt( ( x1/n1 - r1[,2] )^2 + ( x2/n2 - r2[,1] )^2 ) res <- cbind(n1, p1, n2, p2, pd, pd-dlt, pd+eps ) } colnames( res ) <- c("n1","p1","n2","p2", "diff",paste( alpha/2 *100,"%",sep=""), paste((1-alpha/2)*100,"%",sep="") ) rownames( res ) <- prefix if( detail.labs ) rownames( res ) <- paste( prefix, ": ", aa, "/(", aa, "+", cc, ") - ", bb, "/(", bb, "+", dd, ")", sep="" ) if( print ) print( round( res, digits ) ) invisible( res ) } Epi/R/pctab.R0000644000176200001440000000070212531361077012410 0ustar liggesuserspctab <- function( TT, margin=length( dim( TT ) ), dec=1 ) { nd <- length( dim( TT ) ) sw <- (1:nd)[-margin[1]] rt <- sweep( addmargins( TT, margin, list( list( All=sum, N=function( x ) sum( x )^2/100 ) ) ), sw, apply( TT, sw, sum )/100, "/" ) if( dec ) print( round( rt, dec ) ) invisible( rt ) } Epi/R/ci.cum.R0000644000176200001440000000627513471207755012516 0ustar liggesusersci.cum <- function( obj, ctr.mat = NULL, subset = NULL, intl = 1, alpha = 0.05, Exp = TRUE, ci.Exp = FALSE, sample = FALSE ) { # First extract all the coefficients and the variance-covariance matrix cf <- COEF( obj ) vcv <- VCOV( obj ) # Check if the intervals matches ctr.mat if( length( intl ) == 1 ) intl <- rep( intl, nrow( ctr.mat ) ) if( length( intl ) != nrow( ctr.mat ) ) stop( "intl must match ctr.mat" ) if( inherits( ctr.mat, "data.frame" ) ) { ctr.mat <- df2ctr( obj, ctr.mat ) } else { # Workaround to expand the vcov matrix with 0s so that it matches # the coefficients vector in case of (extrinsic) aliasing. ## NOT needed after 3.5.0 ## if( any( is.na( cf ) ) ) ## { ## vM <- matrix( 0, length( cf ), length( cf ) ) ## dimnames( vM ) <- list( names( cf ), names( cf ) ) ## vM[!is.na(cf),!is.na(cf)] <- vcv ## cf[is.na(cf)] <- 0 ## vcv <- vM ## } if( is.character( subset ) ) { sb <- numeric(0) for( i in 1:length( subset ) ) sb <- c(sb,grep( subset[i], names( cf ) )) subset <- sb # unique( sb ) } # If subset is not given, make it the entire set if( is.null( subset ) ) subset <- 1:length( cf ) # Exclude units where aliasing has produced NAs. # Not needed after replacement with 0s # subset <- subset[!is.na( cf[subset] )] cf <- cf[subset] vcv <- vcv[subset,subset] if( is.null( ctr.mat ) ) { ctr.mat <- diag( length( cf ) ) rownames( ctr.mat ) <- names( cf ) } if( dim( ctr.mat )[2] != length(cf) ) stop( paste("\n Dimension of ", deparse(substitute(ctr.mat)), ": ", paste(dim(ctr.mat), collapse = "x"), ", not compatible with no of parameters in ", deparse(substitute(obj)), ": ", length(cf), sep = "")) } # Finally, here is the actual computation of the estimates ct <- ctr.mat %*% cf vc <- ctr.mat %*% vcv %*% t( ctr.mat ) # If a sample is requested replace the estimate by a sample if( sample ) ct <- t( mvrnorm( sample, ct, vc ) ) # If Exp was requested, we take the exponential of the estimates # before we cumulate the sum if( Exp ) { ct <- exp( ct ) vc <- ( ct[,1] %*% t(ct[,1]) ) * vc } # Here is the cumulation matrix cum.mat <- 1 - upper.tri( diag(ct[,1]) ) # Multiply columns of the matrix with interval lengths cum.mat <- t( intl * t( cum.mat ) ) # This is then multiplied to the coefficients ct <- cum.mat %*% ct if( sample ) return( ct ) else { vc <- cum.mat %*% vc %*% t( cum.mat ) se <- sqrt( diag( vc ) ) if( !ci.Exp ) { cum <- cbind( ct, se ) %*% ci.mat( alpha=alpha ) return( cbind( cum, "StdErr"=se ) ) } else { cum <- exp( cbind( log(ct), se/ct ) %*% ci.mat( alpha=alpha ) ) return( cbind( cum, "Erf"=exp( qnorm(1-alpha/2)*se/as.vector(ct) ) ) ) } } } ci.surv <- function( obj, ctr.mat = NULL, subset = NULL, intl = 1, alpha = 0.05, Exp = TRUE, sample = FALSE ) { CH <- ci.cum( obj, ctr.mat = ctr.mat, subset = subset, intl = intl, alpha = alpha, Exp = Exp, ci.Exp = TRUE, sample = sample ) exp( -rbind(0,CH[1:(nrow(CH)-1),-4]) ) } Epi/R/splitLexis.R0000644000176200001440000000775612531361077013477 0ustar liggesuserssplit.lexis.1D <- function(lex, breaks, time.scale, tol) { time.scale <- check.time.scale(lex, time.scale) ## Entry and exit times on the time scale that we are splitting time1 <- lex[,time.scale, drop=FALSE] time2 <- time1 + lex$lex.dur ## Augment break points with +/- infinity breaks <- sort( unique( breaks ) ) I1 <- c(-Inf, breaks) I2 <- c(breaks,Inf) ## Arrays containing data on each interval (rows) for each subject (cols) en <- apply(time1, 1, pmax, I1) # Entry time ex <- apply(time2, 1, pmin, I2) # Exit time NR <- nrow(en) NC <- ncol(en) ## Does subject contribute follow-up time to this interval? ## (intervals shorter than tol are ignored) valid <- en < ex - tol dur <- ex - en; dur[!valid] <- 0 # Time spent in interval ## Cumulative time since entry at the start of each interval time.since.entry <- rbind(0, apply(dur,2,cumsum)[-NR,,drop=FALSE]) cal.new.entry <- function(entry.time) { sweep(time.since.entry, 2, entry.time, "+")[valid] } old.entry <- lex[, timeScales(lex), drop=FALSE] new.entry <- lapply(old.entry, cal.new.entry) ## Status calculation aug.valid <- rbind(valid, rep(FALSE, NC)) last.valid <- valid & !aug.valid[-1,] any.valid <- apply(valid,2,any) new.Xst <- matrix( lex$lex.Cst, NR, NC, byrow=TRUE) new.Xst[last.valid] <- lex$lex.Xst[any.valid] n.interval <- apply(valid, 2, sum) new.lex <- Lexis("entry" = new.entry, "duration" = dur[valid], "id" = rep(lex$lex.id, n.interval), "entry.status" = rep(lex$lex.Cst, n.interval), "exit.status" = new.Xst[valid]) ## Update breaks attribute and tranfer time.since attribute breaks.attr <- attr(lex, "breaks") breaks.attr[[time.scale]] <- sort(c(breaks.attr[[time.scale]], breaks)) attr(new.lex, "breaks") <- breaks.attr attr(new.lex, "time.since") <- attr(lex, "time.since") return(new.lex) } splitLexis <- function(lex, breaks, time.scale=1, tol= .Machine$double.eps^0.5) { ## Advise the uninformed user... if( inherits(lex,"stacked.Lexis") ) stop( "It makes no sense to time-split after stacking ---\n", "split your original Lexis object and stack that to get what you want.\n") ## Set temporary, unique, id variable lex$lex.tempid <- lex$lex.id lex$lex.id <- 1:nrow(lex) ## Save auxiliary data aux.data.names <- setdiff(names(lex), timeScales(lex)) aux.data.names <- aux.data.names[substr(aux.data.names,1,4) != "lex."] aux.data <- lex[, c("lex.id","lex.tempid", aux.data.names), drop=FALSE] ## Check for NAs in the timescale ts <- check.time.scale(lex, time.scale) ts.miss <- any(is.na(lex[,ts])) if( ts.miss ) { na.lex <- lex[ is.na(lex[,ts]),] lex <- lex[!is.na(lex[,ts]),] cat( "Note: NAs in the time-scale \"", ts, "\", you split on\n") } ## If states are factors convert to numeric while splitting factor.states <- is.factor( lex$lex.Cst ) if( factor.states ) { state.levels <- levels( lex$lex.Cst ) nstates <- nlevels( lex$lex.Cst ) lex$lex.Cst <- as.integer( lex$lex.Cst ) lex$lex.Xst <- as.integer( lex$lex.Xst ) } ## Split the data lex <- split.lexis.1D(lex, breaks, time.scale, tol) ## Reinstitute the factor levels if( factor.states ) { lex$lex.Cst <- factor( lex$lex.Cst, levels=1:nstates, labels=state.levels ) lex$lex.Xst <- factor( lex$lex.Xst, levels=1:nstates, labels=state.levels ) } ## Put the NA-rows back if( ts.miss ) lex <- rbind( lex, na.lex[,colnames(lex)] ) ## Save attributes lex.attr <- attributes(lex) ## Merge lex <- merge.data.frame(lex, aux.data, by="lex.id") ## Restore attributes attr(lex,"breaks") <- lex.attr$breaks attr(lex,"time.scales") <- lex.attr$time.scales attr(lex,"time.since") <- lex.attr$time.since class(lex) <- c("Lexis", "data.frame") ## Restore id variable lex$lex.id <- lex$lex.tempid lex$lex.tempid <- NULL return(lex) } Epi/R/apc.plot.R0000644000176200001440000001343113443412120013027 0ustar liggesusersplot.apc <- apc.plot <- function( x, r.txt="Rate", ... ) { if( !inherits( x, "apc" ) ) stop( "Argument must be an apc-object" ) # Determine the ranges of the horizontal axes a.lab = nice( x$Age[,1] ) cp.lab = nice( c(x$Per[,1],x$Coh[,1]), high=0.1 )[-1] # The necessary range of the two vertical axes r.rg <- range( x$Age[,-1] ) rr.rg <- range( rbind( x$Per[,-1], x$Coh[,-1] ) ) # Align the RR with the rates on an integer power of 10 rr.ref <- 10^floor( log10(r.rg[2])-log10(rr.rg[2]) ) # Find the tic-marks for the two vertical axes r.tic <- nice( r.rg, log=T, lpos=1:9 ) rr.tic <- nice( rr.rg, log=T, lpos=1:9 ) # Expand to cover it all r.tic <- sort( unique( c( r.tic, rr.tic*rr.ref ) ) ) rr.tic <- r.tic/rr.ref # Find the places for labels r.lab <- nice( r.tic, log=T, lpos=c(1,2,5) ) rr.lab <- nice( rr.tic, log=T, lpos=c(1,2,5) ) r.lab <- r.lab[ r.lab>min( r.tic) & r.labmin(rr.tic) & rr.lab% mutate(extime = dop + c(NA, diff(dop) * amt[-1] / amt[-length(amt)]) + grace) %>% ungroup() # generate 0 purchases in pzero where coverage expired before new purchase group_by(pdat, lex.id) %>% filter(extime < c(dop[-1],Inf)) %>% mutate(dop = extime, amt = 0) %>% select(lex.id, dop, amt) -> pzero # pzero has potentially become a grouped tibble so make it a data frame pzero <- as.data.frame(pzero) # append to original data frame pdat <- rbind(pdat[,names(pzero)], pzero) # reinstate the time-scale name names(pdat)[grep("dop",names(pdat))] <- tnam # sort by lex.id and time and coerce to data frame oo <- order(pdat$lex.id, pdat[,tnam, drop = TRUE]) pdat <- as.data.frame(pdat[oo,]) rownames(pdat) <- NULL pdat } #---------------------------------------------------------------------- # addDrug.Lexis addDrug.default <- addDrug.Lexis <- function(Lx, # Lexis object, should be timesplit pdat, # (named) list of data frames of drug purchaces amt = "amt", # name of amount variable in pdat apt = "apt", # name of amount per time variable in pdat # to be used if method = "dos" method = "ext", # extrapolation from times and amounts # "dos" is based on dosage, apt and amt # "fix" is using a fixed interval, maxt maxt = NULL, # vector of times covered by a single prescription, grace = 0, # vector of grace periods after final data tnam = setdiff(names(pdat[[1]]),c("lex.id", amt))[1], prefix = NULL, # character vector suffix = NULL, # character vector sepfix = "." # separator for pre- and suf-fixes ) { # utility functions na0 <- function(x) ifelse(is.na(x), 0, x) csum0 <- function(x) c(0, cumsum(na0(x)[-length(x)])) # binding variables qwzrx <- exnam <- tfc <- lex.id <- pur <- lex.dur <- xtime <- expos <- dospt <- NULL # don't bother about the warnings oldopts <- options(warn = -1) on.exit(options(oldopts)) # Save attributes to return with result lex.attr <- attributes(Lx) # time scale if (missing(tnam)) cat("NOTE: timescale taken as '", tnam, "'\n", sep = "") # construct names for the 0-expanded purchase data frames if not given if(is.null(names(pdat))) names(pdat) <- paste0('P', 1:length(pdat)) # prefix or suffix for variables ex, tf, ct, cd if(!(suff <- !is.null(prefix))) prefix <- names(pdat) if(!(pref <- !is.null(suffix))) suffix <- names(pdat) if(suff && pref) cat("NOTE: you are asking for *both* pre- and suffix\n") # if none specified use prefix pref <- pref | !suff # the renaming vector to be used later onam <- c("expos","tfex","ctime","cdos") shortnames <- substr(onam, 1, 2) # number of purchase files np <- length(pdat) # expand maxt and grace by recycling maxt <- rep(maxt , np)[1:np] grace <- rep(grace, np)[1:np] # Structure to hold the 0-expanded data sets pdat0 <- list() pall <- NULL # Define the 0 amount purchases at exposure end and collect times in pall for(i in 1:np) { pdat0[[i]] <- ins0(pdat[[i]], amt = amt, apt = apt, method = method, maxt = maxt[i], grace = grace[i], tnam = tnam, verbose = i == 1) pall <- rbind(pall, pdat0[[i]][,c("lex.id", tnam)]) } # order pall by id and time, remove duplicates and add a bogus variable oo <- order(pall$lex.id, pall[,tnam]) pall <- pall[oo,] pall <- pall[!duplicated(pall),] pall$qwzrx <- 0 # add the total purchase data in order to expand to all cut dates when # appending data from each drug Gx <- addCov.Lexis(Lx, pall, timescale = tnam) Gx <- select(Gx, -qwzrx, -exnam, -tfc) # remove tfc as time scale and keep Lexis attributes to resinstate later wh.tfc <- match("tfc", attr(Gx, "time.scales")) attr(Gx,"time.scales") <- Gsc <- attr(Gx, "time.scales")[-wh.tfc] attr(Gx,"time.since") <- Gsi <- attr(Gx, "time.since" )[-wh.tfc] class(Gx) <- Gcl <- c("Lexis", "data.frame") # put the expanded drug purchases in the Lexis object allnam <- NULL for(i in 1:np) { # renaming the variables with pre- and/or suffix rnam <- shortnames if(suff) rnam <- paste(rnam, suffix[i], sep = sepfix) if(pref) rnam <- paste(prefix[i], rnam, sep = sepfix) names(rnam) <- onam allnam <- c(allnam, rnam) # add the i'th drug exposure data file Gx <- addCov.Lexis(Gx, pdat0[[i]], timescale = tnam, exnam = "pur") # compute the exposure variables, drop unneeded variables and rename Gx <- ( group_by(Gx, lex.id, pur) %>% mutate(xtime = sum(lex.dur) + tfc[1], # total exposure time for this purchase dospt = amt / xtime ) # dose per time for this interval %>% group_by(lex.id) %>% mutate(expos = !is.na(amt) & amt>0, tfex = csum0(lex.dur * (cumsum(expos) > 0)), ctime = csum0(lex.dur * expos * (amt>0)) + na0(tfc[1]), cdos = csum0(lex.dur * expos * dospt) + na0(dospt[1]) * na0(tfc[1])) %>% select(-pur, -xtime, -dospt, -tfc, -amt) %>% plyr::rename(rnam) ) # reinstate as Lexis object attr(Gx,"time.scales") <- Gsc attr(Gx,"time.since") <- Gsi class(Gx) <- Gcl } return(Gx[,c(setdiff(names(Gx), allnam), allnam)]) } Epi/R/foreign.R0000644000176200001440000000346413763626440012766 0ustar liggesusers# The msdata method msdata <- function (obj, ...) UseMethod("msdata") msdata.Lexis <- function( obj, time.scale = timeScales(obj)[1], ... ) { tr.mat <- tmat(obj) # Essentially a msdata object is a stacked Lexis object with # other variable names tmp <- stack.Lexis(factorize.Lexis(obj)) lv <- c(match(timeScales(obj), names(tmp)), grep("lex\\.", names(tmp))) # The transitions that we refer to are extracted from lex.Tr: ss <- strsplit(as.character(tmp$lex.Tr), "->") # The resulting dataframe is created by renaming columns in the # stacked Lexis object data.frame( id = tmp$lex.id, from = sapply( ss, FUN=function(x) x[1] ), to = sapply( ss, FUN=function(x) x[2] ), trans = as.integer( tmp$lex.Tr ), Tstart = tmp[,time.scale], Tstop = tmp[,time.scale] + tmp$lex.dur, time = tmp$lex.dur, status = as.integer(tmp$lex.Fail), tmp[,-lv] ) } # The etm method etm <- function (data, ...) UseMethod("etm") etm.Lexis <- function( data, time.scale = timeScales(data)[1], cens.name = "cens", s = 0, t = "last", covariance = TRUE, delta.na = TRUE, ... ) { dfr <- data.frame( id = data$lex.id, from = as.character(data$lex.Cst), to = as.character(data$lex.Xst), entry = data[,time.scale], exit = data[,time.scale] + data$lex.dur, stringsAsFactors = FALSE ) dfr$to <- with( dfr, ifelse( from==to, cens.name, to ) ) etm::etm( data = dfr, state.names = levels(data$lex.Cst), tra = tmat(data, mode = "logical"), cens.name = cens.name, s = s, t = t, covariance = covariance, delta.na = delta.na ) } Epi/R/Life.lines.R0000644000176200001440000000555212531361077013317 0ustar liggesusersLife.lines <- function( entry.date = NA, exit.date = NA, birth.date = NA, entry.age = NA, exit.age = NA, risk.time = NA ) { # A function allowing any three of the arguments to be specified # and yet returns enty age and -time and exit age and -time. # Check if any variable is supplied with class if( conv <- any( inherits( entry.date, "Date" ), inherits( exit.date, "Date" ), inherits( birth.date, "Date" ), inherits( entry.age , "difftime" ), inherits( exit.age , "difftime" ), inherits( risk.time, "difftime" ) ) ) { # Convert "Date" and "difftime" to years if( inherits( entry.date, "Date" ) ) entry.date <- as.numeric( entry.date ) / 365.35 + 1970 if( inherits( exit.date, "Date" ) ) exit.date <- as.numeric( exit.date ) / 365.35 + 1970 if( inherits( birth.date, "Date" ) ) birth.date <- as.numeric( birth.date ) / 365.35 + 1970 if( inherits( entry.age , "difftime" ) ) entry.age <- as.numeric( entry.age ) / 365.35 if( inherits( exit.age , "difftime" ) ) exit.age <- as.numeric( exit.age ) / 365.35 if( inherits( risk.time, "difftime" ) ) risk.time <- as.numeric( risk.time ) / 365.35 # Convert to numeric class( entry.date ) <- "numeric" class( exit.date ) <- "numeric" class( birth.date ) <- "numeric" class( entry.age ) <- "numeric" class( exit.age ) <- "numeric" class( risk.time ) <- "numeric" } # Find out which three items are supplied. # wh <- (1:6)[!is.na( list( entry.date, entry.age, exit.date, exit.age, birth.date, risk.time ) )] # Matrix of relevant quantities. # LL <- rbind( entry.date, entry.age, exit.date, exit.age, birth.date, risk.time ) # Matrix giving the three constraints among the six quantities: # M <- rbind( c( -1, 1, 0, 0, 1, 0 ), c( 0, 0, -1, 1, 1, 0 ), c( 0, 1, 0, -1, 0, 1 ) ) # Now in principle we have that M %*% LL = 0. # Partitioning M=(A1|A2), t(LL)=(t(x1),t(x2)) # this gives A1 %*% x1 = -A2 %*% x2 # Check if there is sufficient information # if( qr( M[,-wh[1:3]] )$rank < 3 ) cat( "Insufficient information to display life lines" ) # Then do the calculation # A1 <- M[, wh[1:3]] A2 <- M[,-wh[1:3]] x1 <- LL[wh[1:3],] x2 <- -solve( A2 ) %*% A1 %*% x1 LL[-wh[1:3],] <- x2 LL <- data.frame( t(LL) ) attr( LL, "Date" ) <- conv # Convert to dates and difftimes if( conv ) { LL[,c(1,3,5)] <- ( LL[,c(1,3,5)] - 1970 ) * 365.25 LL[,c(2,4,6)] <- LL[,c(2,4,6)] * 365.25 class( LL[,1] ) <- class( LL[,3] ) <- class( LL[,5] ) <- "Date" class( LL[,2] ) <- class( LL[,4] ) <- class( LL[,6] ) <- "difftime" } LL } Epi/R/stack.Lexis.R0000644000176200001440000000377513763706532013533 0ustar liggesusers# Functions to facilitate analysis of multistate models # The stack method is already defined (in the utils package) # and hence imported in the NAMESPACE file stack.Lexis <- function(x, ...) { ## Function to stack obervations for survival analysis ## Make sure that lex.Cst and lex.Xst are factors with identical levels x <- factorize(x) ## Same covariates xx <- data.frame( cbind( x, lex.Tr="", lex.Fail=FALSE ) )[NULL,] tm <- tmat.Lexis( x ) for( fst in levels(factor(x$lex.Cst)) ) for( tst in levels(factor(x$lex.Xst)) ) if( !is.na(tm[fst,tst]) ) { tr = paste( fst, "->", tst , sep="" ) zz <- x[x$lex.Cst==fst,] xx <- rbind( xx, data.frame( zz, lex.Tr=tr, lex.Fail=(zz$lex.Xst==tst) ) ) } xx$lex.Tr <- factor(xx$lex.Tr) ## Reshuffle the variables wh.om <- match( "lex.Xst", names(xx) ) wh.rl <- match( c("lex.Tr","lex.Fail"), names(xx) ) xx <- xx[,c(1:wh.om,wh.rl,(wh.om+1):(wh.rl[1]-1))] attr(xx,"breaks") <- attr(x, "breaks") attr(xx,"time.scales") <- attr(x, "time.scales") class( xx ) <- c("stacked.Lexis","data.frame") xx } subset.stacked.Lexis <- function(x, ... ) { y <- subset.data.frame(x, ...) attr(y,"breaks") <- attr(x, "breaks") attr(y,"time.scales") <- attr(x, "time.scales") class(y) <- c("stacked.Lexis","data.frame") return(y) } transform.stacked.Lexis <- function(`_data`, ... ) { save.at <- attributes(`_data`) ## We can't use NextMethod here because of the special scoping rules ## used by transform.data.frame y <- base::transform.data.frame(`_data`, ...) save.at[["names"]] <- attr(y, "names") attributes(y) <- save.at y } # The tmat method tmat <- function (x, ...) UseMethod("tmat") tmat.Lexis <- function( x, Y=FALSE, mode="numeric", ... ) { zz <- table(x$lex.Cst,x$lex.Xst) class(zz) <- "matrix" if( Y ) { diag(zz) <- summary( x, simplify=FALSE )[[1]][1:nrow(zz),"Risk time:"] } else diag(zz) <- NA zz[zz==0] <- NA if( mode != "numeric" ) zz <- !is.na(zz) zz } Epi/R/ci.Crisk.R0000644000176200001440000001250414003542722012761 0ustar liggesusers# Simulate rates from a list of models, 0th simulation is the rates # based on the model estimates simrates <- function(mods, # named list of models - one for each cause nd, # prediction data frame nB = 1000, # number of simulated samples int = mean(diff(nd[,1]))) # time is first in column of nd # seed) not implemented yet { # from a list of models (mods) for nC cause-specific rates and a # common prediction frame, nd, we generate nB samples of predicted # rates. It is assumed that the nd refer to midpoints of intervals res <- NArray(list(time = rownames(nd), mod = names(mods), sim = 1:nB)) nT <- nrow(nd) # no of timepoints (interval midpoints) nC <- length(mods) # no. competing risks for(i in 1:nC) res[,i,] <- ci.lin(mods[[i]], nd, sample = nB) res <- exp(res) attr( res, "int" ) <- int res } # Compute nC+1 cumulative risks from nC rates mkprobs <- function(rtab, int) { # rtab is assumed to be a matrix with rates in (named) columns at int # equidistance assumed computed at times int/2, 3*int/2 etc. so rtab # is assumed nT x nC nT <- nrow(rtab) nC <- ncol(rtab) # integrated intensities at interval boundaries, so (1+nT) x nC Rtab <- rbind(0, apply(rtab, 2, cumsum)) * int # state probabilities at interval endpoints so (1+nT) x (1+nC) Pr <- Rtab[,c(1,1:nC)] * NA colnames(Pr)[1] <- "Surv" # Survival prob in first column # survival function (also the first column in Pr) Pr[,"Surv"] <- Sv <- exp(-apply(Rtab, 1, sum)) # convenience function to compute midpoints between points in a vector midpoint <- function(x) x[-1] - diff(x) / 2 # cumulative risks - note we are using the midvalue of the Sv, length nT for( i in 1:nC ) Pr[,i+1] <- c(0, cumsum(rtab[,i] * midpoint(Sv)) * int) Pr } # return first, mean and median and ci from simulated sample mnqt <- function(x, alpha = 0.05) { # extracts the relevant quantiles across the # simulated samples c(quantile(x, probs = c(0.5, alpha / 2, 1 - alpha / 2), na.rm = TRUE)) } # Here is the function we need to compute cumulative risks ci.Crisk <- function( mods, # list of models nd, # data frame of points where rates are to be computed int = mean(diff(nd[,1])), # interval length in nd nB = 1000, # no of parametic bootstrap samples perm = length(mods):0 + 1, # order of cumulation of states alpha = 0.05, # 1 minus confidence level sim.res = 'none') # seed = floor(runif(1, 1, 50000))) not implemented yet { if(missing(int)) cat("Times are assumed to be in the column", names(nd)[1], "at equal distances of", int, "\n") # First generate the simulated probabilities (T+1) x (C+1) x nB # contains the estimates as the first entry in the simulation dimension simrt <- simrates(mods = mods, nd = nd, nB = nB, int = int) # seed = seed) not implemented yet # if we want the simulation results for further processing attr(simrt, "int") <- int # the interval length needed with simrt if(substr(tolower(sim.res), 1, 1) == 'r') return(invisible(simrt)) # Array for the state probabilities probs <- NArray(list(time = 0:nrow(nd), cause = c("Surv", dimnames(simrt)[["mod"]]), sim = 1:nB)) # Compute the cumulative risks for(i in 1:nB) probs[,,i] <- mkprobs(simrt[,,i], int = int) attr(probs, "int") <- int # the interval length needed with probs if(substr(tolower(sim.res), 1, 1) == 'c') return(invisible(probs)) # otherwise we compute confidence intervals for selected statistics # 1. state (cumulative) probabilities Crisk <- sim2ci.Crisk(probs, alpha = alpha) # 2. stacked (cumulative) probabilities Srisk <- sim2ci.Srisk(probs, perm = perm, alpha = alpha) # 3. sojourn times in states Stime <- sim2ci.Stime(probs, alpha = alpha) # finally return in a list of useful quantities rlist <- list(Crisk = Crisk, Srisk = Srisk, Stime = Stime) attr(rlist, "int") <- int # the interval length used return(invisible(rlist)) } # 1. cumulative probabilities sim2ci.Crisk <- function(probs, alpha = 0.05) aperm(apply(probs, 1:2, mnqt, alpha), c(2,3,1)) # 2. stacked (cumulative) probabilities sim2ci.Srisk <- function(probs, perm = 1:dim(probs)[2], alpha = 0.05) { cprobs <- aperm(apply(probs[,perm,], c(1,3), cumsum), c(2,1,3)) cnam <- dimnames(cprobs)[["cause"]] for(i in 2:length(cnam)) dimnames(cprobs)[["cause"]][i] <- paste(cnam[1:i], collapse = "+") cpr <- aperm(apply(cprobs, 1:2, mnqt, alpha), c(2,3,1)) cpr[,-dim(cpr)[2],] } # 3. sojourn times in states sim2ci.Stime <- function(probs, int = attr(probs, "int"), alpha = 0.05) { # convenience function to compute midpoints between points in a vector midpoint <- function(x) x[-1] - diff(x) / 2 sojrn <- apply(probs, 2:3, function(x) cumsum(midpoint(x))) * int aperm(apply(sojrn, 1:2, mnqt, alpha), c(2,3,1)) } Epi/R/mod.Lexis.R0000644000176200001440000002067513743773377013214 0ustar liggesusersmodLexis <- function( Lx, nameLx, formula, from = preceding(Lx,to), to = absorbing(Lx), paired = FALSE, link = "log", scale = 1, verbose = TRUE, model, ... ) { # a common wrapper for glm and gam modeling of Lexis FU # is this a Lexis object ? if( !inherits(Lx,"Lexis") ) stop("The first argument must be a Lexis object.\n") # check that events are actual levels of lex.Xst if( is.numeric(to) ) to <- levels( Lx$lex.Xst )[to] wh <- match( to, levels(Lx$lex.Xst) ) if( any(is.na(wh)) ) stop("'to' must be a subset of: '", paste(levels(Lx$lex.Xst), collapse="','", sep=""), "'\n" ) # check that from are actual levels of lex.Cst if( is.numeric(from) ) from <- levels( Lx$lex.Cst )[from] wh <- match( from, levels(Lx$lex.Cst) ) if( any(is.na(wh)) ) stop("'from' must be a subset of: '", paste(levels(Lx$lex.Cst), collapse="','", sep=""), "'\n" ) # subset to these states Lx <- Lx[Lx$lex.Cst %in% from,] # first a small utility to show transitions as text: trt <- function( f, t ) paste( f, "->", t, sep="" ) # work out which transitions are modeled if( paired ) { if( length(from) != length(to) ) stop("If 'paired' is TRUE, from and to must have same length!\n") if( any(from==to) ) stop("If 'paired' is TRUE, entries in from and to must be different within pairs\n") trnam <- trt( from, to ) } else { tm <- tmat( Lx )[from,to,drop=FALSE] trnam <- outer( rownames(tm), colnames(tm), trt )[tm>0] trnam <- trnam[!is.na(trnam)] } # just for formatting the explanatory text onetr <- length( trnam )==1 trprn <- paste( trnam, collapse=", " ) # warn if a potentially silly model is defined if( any( (ts<-table(sapply( strsplit(trnam,"->"), function(x) x[1] )))>1 ) ) warning( "NOTE:\nMultiple transitions *from* state '",names(ts[ts>1]),"' - are you sure?", "\nThe analysis requested is effectively merging outcome states.", "\nYou may want analyses using a *stacked* dataset - see ?stack.Lexis\n" ) # Beginning of a new feature with a countmultiplier of the transitions # allowing tabular records to be merged to a Lexis object # --- not used subsequently in this function (yet) # if( !("lex.N" %in% names(Lx)) ) Lx$lex.N <- 1 # construct the model formula - note that we already made sure that # from and to are pairwise different if( length(formula) != 2 ) stop("formula must be a one-sided formula") form <- cbind( trt(Lx$lex.Cst,Lx$lex.Xst) %in% trnam, #*Lx$lex.N, Lx$lex.dur ) ~ 1 ## form <- cbind( (Lx$lex.Xst %in% to & ## Lx$lex.Xst != Lx$lex.Cst), #*Lx$lex.N, ## Lx$lex.dur ) ~ 1 form[3] <- formula[2] from <- levels( factor(Lx$lex.Cst) ) # only levels present in lex.Cst # Scaling Lx$lex.dur <- Lx$lex.dur/scale # Tell what we intend to and then do it if( verbose ){ cat( deparse(substitute(model)), " Poisson analysis of Lexis object ", nameLx, " with ", link, " link", ":\nRates for", if( onetr ) " the", " transition", if( !onetr ) "s", ": ", trprn, if( scale!=1 ) paste(", lex.dur (person-time) scaled by", scale ), "\n", sep="" ) } # Fit the model mod <- model( form, family = poisreg(link=link), data = Lx, ... ) # Add an explanatory attribute attr( mod, "Lexis" ) <- list( data=nameLx, trans=trnam, formula=form[-2], scale=scale ) mod } # Here are the actual functions of interest: ###################################################################### # the glm function glm.Lexis <- function( Lx, formula, from = preceding(Lx,to), to = absorbing(Lx), paired = FALSE, link = "log", scale = 1, verbose = TRUE, ... ) { # name of the supplied object nameLx <- deparse(substitute(Lx)) # sensible defaults if one of to and from is missing if( missing(from) & !missing(to) ) from <- preceding (Lx,to ) if( !missing(from) & missing(to) ) to <- succeeding(Lx,from) xx <- modLexis( Lx, nameLx, formula, from, to, paired = paired, link = link, scale = scale, verbose = verbose, model = stats::glm, ... ) class( xx ) <- c( "glm.lex", class(xx) ) xx } ###################################################################### # the gam function gam.Lexis <- function( Lx, formula, from = preceding(Lx,to), to = absorbing(Lx), paired = FALSE, link = "log", scale = 1, verbose = TRUE, ... ) { # name of the supplied object nameLx <- deparse(substitute(Lx)) # sensible defaults if one of the two is missing if( missing(from) & !missing(to) ) from <- preceding (Lx,to ) if( !missing(from) & missing(to) ) to <- succeeding(Lx,from) xx <- modLexis( Lx, nameLx, formula, from, to, paired = paired, link = link, scale = scale, verbose = verbose, model = mgcv::gam, ... ) class( xx ) <- c( "gam.lex", class(xx) ) xx } ###################################################################### # And here is the coxph counterpart: coxph.Lexis <- function( Lx, # Lexis object formula, # timescale ~ model from = preceding(Lx,to), # Exposure ('from' states) to = absorbing(Lx) , # Events ('to' states) paired = FALSE, verbose = TRUE, ... ) { # Lexis object ? if( !inherits(Lx,"Lexis") ) stop( "The first argument must be a Lexis object.\n") # sensible defaults if only one of to and from is missing if( missing(from) & !missing(to) ) from <- preceding (Lx,to ) if( !missing(from) & missing(to) ) to <- succeeding(Lx,from) # name of the dataset nameLx <- deparse(substitute(Lx)) # subset to the states we shall use Lx <- Lx[Lx$lex.Cst %in% from,] # work out which transitions are modeled # first a small utility for annotation trt <- function( f, t ) paste( f, "->", t, sep="" ) if( paired ) { if( length(from) != length(to) ) stop("If 'paired' is TRUE, from and to must have same length!\n") if( any(from==to) ) stop("If 'paired' is TRUE, entries in 'from' and 'to'", " must be pairwise different\n") trnam <- trt( from, to ) } else { tm <- tmat( Lx )[from,to,drop=FALSE] trnam <- outer( rownames(tm), colnames(tm), trt )[tm>0] trnam <- trnam[!is.na(trnam)] } # just for formatting explanatory text onetr <- length( trnam )==1 trprn <- paste( trnam, collapse=", " ) # warn if a potentially silly model is defined if( any( ts<-table(sapply( strsplit(trprn,"->"), function(x) x[1] ))>1 ) ) warning( "NOTE:\nMultiple transitions *from* state '",names(ts[ts>1]), "' - are you sure?", "\nThe analysis requested is effectively merging outcome states.", "\nYou may want analyses using a *stacked* dataset - see ?stack.Lexis\n" ) # Correct formula? if( length(formula) != 3 ) stop("'formula' must be a 2-sided formula, with the l.h.s. the timescale") # Is the l.h.s. a timescale? ts <- as.character( formula[2] ) if( !(ts %in% (tms<-timeScales(Lx))) ) stop( "l.h.s. of formula must be a timescale; one of:\n", tms, "\n" ) # What are the 'from' states actually present? from <- levels( factor(Lx$lex.Cst) ) # construct a Surv response object, and note that we want the possibility # of transitions to transient states, hence the lex.Xst != lex.Cst Sobj <- Surv( Lx[,ts], Lx[,ts]+Lx$lex.dur, trt( Lx$lex.Cst, Lx$lex.Xst ) %in% trnam ) # Lx$lex.Xst %in% to & # Lx$lex.Xst != Lx$lex.Cst ) # Tell what we intend to and then do it if( verbose ){ cat( "survival::coxph analysis of Lexis object ", nameLx, ":\nRates for", if( onetr ) " the", " transition", if( !onetr ) "s", " ", trprn, "\nBaseline timescale: ", ts, "\n", sep="" ) } mod <- coxph( as.formula( paste( "Sobj", as.character(formula[3]), sep="~") ), data = Lx, ... ) # Add an explanatory attribute attr( mod, "Lexis" ) <- list( data=nameLx, trans=trnam, formula=formula ) class( mod ) <- c( "coxph.lex", class(mod) ) mod } Epi/R/apc.fit.R0000644000176200001440000003335213452066255012655 0ustar liggesusersapc.fit <- function( data, A, P, D, Y, ref.c, ref.p, dist = c("poisson","binomial"), model = c("ns","bs","ls","factor"), dr.extr = "Y", parm = c("ACP","APC","AdCP","AdPC","Ad-P-C","Ad-C-P","AC-P","AP-C"), npar = c( A=5, P=5, C=5 ), scale = 1, alpha = 0.05, print.AOV = TRUE ) { dist <- match.arg(dist) model <- match.arg(model) drtyp <- deparse(substitute(dr.extr)) parm <- toupper(match.arg(parm)) has.data <- !missing( data ) has.pref <- !missing( ref.p ) has.cref <- !missing( ref.c ) if(has.data) { if (length(match(c("A", "P", "D", "Y"), names(data))) != 4) stop("Data frame ", deparse(substitute(data)), " has columns:\n", names(data), "\nmust have variables:\n", "A (age), P (period), D (cases) and Y (person-time)") data <- data[,c("A","P","D","Y")] data <- data[complete.cases(data),] A <- data$A P <- data$P D <- data$D Y <- data$Y } else { nm <- logical(4) nm[1] <- missing(A) nm[2] <- missing(P) nm[3] <- missing(D) nm[4] <- missing(Y) if (any(nm)) stop("Variable", if (sum(nm) > 1) "s", paste(c(" A", " P", " D", " Y")[nm], collapse = ","), " missing from input") if( diff(range( lv <- sapply( list(A = A, P = P, D = D, Y = Y), length) ) ) != 0 ) stop( "\nLengths of variables (", paste(paste(names(lv), lv, sep = ":"), collapse = ", "), ") are not the same." ) } # Utility to compute where the median amount y is on the x scale med <- function(x, y) { o <- order(x) a <- y[o] names(a) <- x[o] return( as.numeric(names(a[cumsum(a)/sum(a) > 0.5][1])) ) } # Set the reference points on the period and cohort scales p0 <- ifelse( has.pref, ref.p, med(P , D) ) c0 <- ifelse( has.cref, ref.c, med(P-A, D) ) # Number of parameters in the spline modeling if( is.list(npar) & length(npar)<3 ) stop("npar given as a list - should have length 3! \n") if( !is.list(npar) & length(npar)!=3 ) { npar <- rep(npar, 3)[1:3] names(npar) = c("A","P","C") cat("NOTE: npar is specified as:\n") ; print( npar ) } if( is.null(names(npar)) ) names(npar) <- c("A", "P", "C") # Labeling of confidence intervals lu <- paste(formatC( c(alpha/2, 1 - alpha/2) * 100, format = "f", digits = 1), "%", sep = "") if( is.list(model) ) { if (!all(sapply(model, is.function))) stop("'model' is a list, but not all elements are functions as they should be.") if ((lmod <- length(model)) < 3) stop("'model' is a list, with", lmod, "elements, it should have three.") if (is.null(names(model))) names(model) <- c("A", "P", "C") MA <- model[["A"]](A) MP <- model[["P"]](P) MC <- model[["C"]](P-A) Rp <- model[["P"]](p0) Rc <- model[["C"]](c0) } else { if (model == "factor") { MA <- model.matrix(~factor(A) - 1) MP <- model.matrix(~factor(P) - 1) MC <- model.matrix(~factor(P - A) - 1) Rp <- MP[abs(P - p0) == min(abs(P - p0)), , drop = FALSE][1, ] Rc <- MC[abs(P - A - c0) == min(abs(P - A - c0)), , drop = FALSE][1, ] } if (model == "ns") { # is npar a list knl <- is.list( npar ) # if scalar expand if( !knl & length(npar)==1 ) npar <- rep( npar, 3 ) # if no names, provide them if( is.null(names(npar)) ) names(npar) <- c("A","P","C") # if names too long or wrong case, rectify names( npar ) <- toupper( substr(names(npar),1,1) ) # if not a list make it one with the correct knots if( !knl ){ nkn <- npar eqp <- function(n) (1:n-0.5)/n npar <- list( A = quantile( rep( A,D), probs=eqp(nkn["A"]) ), P = quantile( rep(P ,D), probs=eqp(nkn["P"]) ), C = quantile( rep(P-A,D), probs=eqp(nkn["C"]) ) ) } MA <- Ns( A, knots = npar[["A"]] ) MP <- Ns(P , knots = npar[["P"]] ) MC <- Ns(P-A, knots = npar[["C"]] ) Rp <- ns(p0, knots = attr(MP,"knots"), Boundary.knots = attr(MP,"Boundary.knots")) Rc <- ns(c0, knots = attr(MC,"knots"), Boundary.knots = attr(MC,"Boundary.knots")) Knots <- list( Age = sort(c(attr(MA,"knots"), attr(MA,"Boundary.knots"))), Per = sort(c(attr(MP,"knots"), attr(MP,"Boundary.knots"))), Coh = sort(c(attr(MC,"knots"), attr(MC,"Boundary.knots")))) } if (model %in% c("bs", "ls")) { deg <- switch(model, ls = 1, bs = 3) knl <- is.list(npar) if (knl) nk <- sapply(npar, length) MA <- if (knl) bs(A, knots = npar[["A"]][-c(1,nk[1])], Boundary.knots = npar[["A"]][ c(1,nk[1])], degree = deg) else bs(A, df = npar[["A"]], degree = deg) MP <- if (knl) bs(P, knots = npar[["P"]][-c(1,nk[2])], Boundary.knots = npar[["P"]][ c(1,nk[2])], degree = deg) else bs(P, df = npar[["P"]], degree = deg) MC <- if (knl) bs(P - A, knots = npar[["C"]][-c(1, nk[3])], Boundary.knots = npar[["C"]][ c(1, nk[3])], degree = deg) else bs(P - A, df = npar[["C"]], degree = deg) Rp <- bs(p0, knots = attr(MP,"knots"), Boundary.knots = attr(MP,"Boundary.knots"), degree = attr(MP,"degree")) Rc <- bs(c0, knots = attr(MC,"knots"), Boundary.knots = attr(MC,"Boundary.knots"), degree = attr(MC,"degree")) Knots <- list(Age = sort(c(attr(MA,"knots"),attr(MA,"Boundary.knots"))), Per = sort(c(attr(MP,"knots"),attr(MP,"Boundary.knots"))), Coh = sort(c(attr(MC,"knots"),attr(MC,"Boundary.knots")))) } } if (tolower(substr(dist, 1, 2)) == "po") { m.APC <- glm(D ~ MA + I(P - p0) + MP + MC, offset = log(Y), family = poisson) Dist <- "Poisson with log(Y) offset" } is.bin <- FALSE if (is.bin <- tolower(substr(dist, 1, 3)) %in% c("bin")) { m.APC <- glm(cbind(D, Y - D) ~ MA + I(P - p0) + MP + MC, family = binomial) Dist <- "Binomial regression (logistic) of D/Y" } m.AP <- update(m.APC, . ~ . - MC) m.AC <- update(m.APC, . ~ . - MP) m.Ad <- update(m.AP, . ~ . - MP) m.A <- update(m.Ad, . ~ . - I(P - p0)) m.0 <- update(m.A, . ~ . - MA) AOV <- anova(m.A, m.Ad, m.AC, m.APC, m.AP, m.Ad, test = "Chisq") colnames(AOV)[1:4] <- c("Mod. df.","Mod. dev.", "Test df.","Test dev.") AOV <- abs(AOV) AOV <- cbind( Model = c("Age", "Age-drift", "Age-Cohort", "Age-Period-Cohort", "Age-Period", "Age-drift"), AOV, 'Test dev/df' = AOV[,"Test dev."]/AOV[,"Test df."], 'H0 ' = c("","zero drift ", "Coh eff|dr.", "Per eff|Coh", "Coh eff|Per", "Per eff|dr.") ) A.pt <- unique(A) A.pos <- match(A.pt, A) P.pt <- unique(P) P.pos <- match(P.pt, P) C.pt <- unique(P - A) C.pos <- match(C.pt, P - A) MA <- cbind(1, MA) # Determine the inner product (diagonal) for projection if (!mode(dr.extr) %in% c("character", "numeric")) stop("\"dr.extr\" must be of mode \"character\" or \"numeric\".\n") if (is.character(dr.extr)) { wt <- rep(1, length(D) ) drtyp <- "1-weights" if( toupper(substr(dr.extr, 1, 1)) %in% c("T","D") ) { wt <- D drtyp <- "D-weights" } else if( toupper(substr(dr.extr, 1, 1)) %in% c("L","R") ) { wt <- (Y^2)/D drtyp <- "Y^2/D-weights" } else if( toupper(substr(dr.extr, 1, 1)) %in% c("Y") ) { wt <- Y drtyp <- "Y-weights" } } if ( is.numeric(dr.extr) ) { if( length(dr.extr)==1 ) { wt <- D + dr.extr*Y drtyp <- paste("D+",dr.extr,"*Y weights",sep="") } if( length(dr.extr)==nrow(data) ) { wt <- dr.extr if( any(wt<0) ) stop("dr.extr must be non-negative") drtyp <- "extn-weights" } } Rp <- matrix(Rp, nrow = 1) Rc <- matrix(Rc, nrow = 1) xP <- Epi::detrend(rbind(Rp, MP), c(p0, P ), weight = c(0, wt)) xC <- Epi::detrend(rbind(Rc, MC), c(c0, P-A), weight = c(0, wt)) MPr <- xP[-1,,drop=FALSE] - has.pref * xP[rep(1, nrow(MP)),,drop=FALSE] MCr <- xC[-1,,drop=FALSE] - has.cref * xC[rep(1, nrow(MC)),,drop=FALSE] if (length(grep("-", parm)) == 0) { if (parm %in% c("ADPC", "ADCP", "APC", "ACP")) m.APC <- update(m.0, . ~ . - 1 + MA + I(P - p0) + MPr + MCr) drift <- rbind( ci.exp(m.APC, subset = "I\\(", alpha = alpha), ci.exp(m.Ad , subset = "I\\(", alpha = alpha) ) rownames(drift) <- c(paste("APC (",drtyp,")",sep=""), "A-d") if (parm == "ADCP") m.APC <- update(m.0, . ~ . - 1 + MA + I(P - A - c0) + MPr + MCr) if (parm == "APC") { MPr <- cbind(P - p0, MPr) m.APC <- update(m.0, . ~ . - 1 + MA + MPr + MCr) } if (parm == "ACP") { MCr <- cbind(P - A - c0, MCr) m.APC <- update(m.0, . ~ . - 1 + MA + MPr + MCr) } Age <- cbind(Age = A.pt, ci.exp(m.APC, subset = "MA", ctr.mat = MA[A.pos,,drop=FALSE], alpha = alpha))[order(A.pt),] Per <- cbind(Per = P.pt, ci.exp(m.APC, subset = "MPr", ctr.mat = MPr[P.pos,,drop=FALSE], alpha = alpha))[order(P.pt),] Coh <- cbind(Coh = C.pt, ci.exp(m.APC, subset = "MCr", ctr.mat = MCr[C.pos,,drop=FALSE], alpha = alpha))[order(C.pt),] colnames(Age)[-1] <- c("Rate", lu) colnames(Per)[-1] <- c("P-RR", lu) colnames(Coh)[-1] <- c("C-RR", lu) Type <- paste("ML of APC-model", Dist, ": (", parm, "):\n") Model <- m.APC } else { adc <- update(m.0, . ~ . - 1 + MA + I(P - A - c0)) adp <- update(m.0, . ~ . - 1 + MA + I(P - p0)) drift <- ci.exp(adc, subset = "I\\(") rownames(drift) <- "A-d" xP <- cbind(1, P - p0, MPr) xC <- cbind(1, P - A - c0, MCr) lP <- cbind(P - p0, MPr) lC <- cbind(P - A - c0, MCr) if (parm == "AD-C-P") { rc <- update(m.0, . ~ . - 1 + xC, offset = predict(adc, type = "link")) rp <- update(m.0, . ~ . - 1 + xP, offset = predict(adc, type = "link")) A.eff <- ci.exp(adc, subset = "MA", ctr.mat = MA[A.pos,], alpha = alpha) C.eff <- ci.exp( rc, subset = "xC", ctr.mat = xC[C.pos,], alpha = alpha) P.eff <- ci.exp( rp, subset = "xP", ctr.mat = xP[P.pos,], alpha = alpha) Model <- list( adc, rc, rp ) } else if (parm == "AD-P-C") { rp <- update(m.0, . ~ . - 1 + xP, offset = predict(adp,type = "link")) rc <- update(m.0, . ~ . - 1 + xC, offset = predict(rp,type = "link")) A.eff <- ci.exp(adp, subset = "MA", ctr.mat = MA[A.pos,], alpha = alpha) P.eff <- ci.exp(rp, subset = "xP", ctr.mat = xP[P.pos,], alpha = alpha) C.eff <- ci.exp(rc, subset = "xC", ctr.mat = xC[C.pos,], alpha = alpha) Model <- list( adp, rp, rc ) } else if (parm == "AC-P") { ac <- update(m.0, . ~ . - 1 + MA + lC) rp <- update(m.0, . ~ . - 1 + xP, offset = predict(ac,type = "link")) A.eff <- ci.exp(ac, subset = "MA", ctr.mat = MA[A.pos,], alpha = alpha) C.eff <- ci.exp(ac, subset = "lC", ctr.mat = lC[C.pos,], alpha = alpha) P.eff <- ci.exp(rp, subset = "xP", ctr.mat = xP[P.pos,], alpha = alpha) Model <- list( ac, rp ) } else if (parm == "AP-C") { ap <- update(m.0, . ~ . - 1 + MA + lP) rc <- update(m.0, . ~ . - 1 + xC, offset = predict(ap,type = "link")) A.eff <- ci.exp(ap, subset = "MA", ctr.mat = MA[A.pos,], alpha = alpha) P.eff <- ci.exp(ap, subset = "lP", ctr.mat = lP[P.pos,], alpha = alpha) C.eff <- ci.exp(rc, subset = "xC", ctr.mat = xC[C.pos,], alpha = alpha) Model <- list( ap, rc ) } Age <- cbind(Age = A.pt, A.eff)[order(A.pt),] Per <- cbind(Per = P.pt, P.eff)[order(P.pt),] Coh <- cbind(Cph = C.pt, C.eff)[order(C.pt),] colnames(Age)[-1] <- c("A.eff", lu) colnames(Per)[-1] <- c("P.eff", lu) colnames(Coh)[-1] <- c("C.eff", lu) Type <- paste("Sequential modelling", Dist, ": (", parm, "):\n") } # If the model was binomial we convert to probabilities o2p <- function(o) o/(1+o) if( is.bin ) Age[,-1] <- o2p(Age[,-1]) res <- list(Type = Type, Model = Model, Age = Age, Per = Per, Coh = Coh, Drift = drift, Ref = c(Per = if ( parm %in% c("APC","ADPC","Ad-P-C","AP-C") ) p0 else NA, Coh = if ( parm %in% c("ACP","ADCP","Ad-C-P","AC-P") ) c0 else NA ), Anova = AOV) # If a spline model is used, add a "Knots" component to the apc-object if (model %in% c("ns", "bs")) res <- c(res, list(Knots = Knots)) res$Age[, -1] <- res$Age[, -1] * scale if (print.AOV) { print(res$Type) print(res$Anova) } # Print warnings about reference points: if( !has.pref & parm %in% c("APC","ADPC") ) cat( "No reference period given; ", "reference period for age-effects is chosen as\n", "the median date of event: ", p0, ".\n" ) if( !has.cref & parm %in% c("ACP","ADCP") ) cat( "No reference cohort given; ", "reference cohort for age-effects is chosen as\n", "the median date of birth for persons with event: ", c0, ".\n" ) class(res) <- "apc" invisible(res) } Epi/R/apc.LCa.R0000644000176200001440000000354013471341545012525 0ustar liggesusers################################################################################### ### apc-LCa comparison apc.LCa <- function( data, # cohort reference for the interactions keep.models = FALSE, ... ) { models <- c("APa","ACa","APaC","APCa","APaCa" ) LCa.list <- list() length( LCa.list ) <- 5 names( LCa.list ) <- models for( mod in models ){ cat( mod, ":\n" ) LCa.list[[mod]] <- LCa.fit( data = data, model = mod, ... ) } APC <- apc.fit( data, npar = list( A=LCa.list[[2]]$knots$a.kn, P=LCa.list[[1]]$knots$p.kn, C=LCa.list[[1]]$knots$c.kn ) ) dev <- c( APC$Anova[c(2,5,3,4),"Mod. dev."], sapply( LCa.list, function(x) x$deviance ) ) df <- c( APC$Anova[c(2,5,3,4),"Mod. df."], sapply( LCa.list, function(x) x$df ) ) names(dev)[1:4] <- names(df)[1:4] <- gsub( "rift","", gsub("eriod","", gsub("ohort","", gsub( "-","", gsub( "ge", "", APC$Anova[c(2,5,3,4),"Model"]))))) if( keep.models ) return( list( dev = cbind( dev, df ), apc = APC, LCa = LCa.list ) ) else return( cbind( dev, df ) ) } show.apc.LCa <- function( x, dev.scale=TRUE, top="Ad", ... ) { if( is.list(x) ) x <- x[[1]] print(x) TM <- matrix(NA,9,9) rownames( TM ) <- colnames( TM ) <- paste( rownames(x), "\n", formatC(x[,1],format="f",digits=1) ) TM[1,2:3] <- TM[2,c(4,5)] <- TM[3,c(4,6)] <- TM[4,c(7,8)] <- TM[5,7] <- TM[6,8] <- TM[c(7,8),9] <- 1 bp <- list( x=c(50,30,70,50,10,90,30,70,50), y=c(90,70,70,50,50,50,30,30,10) ) if( !dev.scale ) boxes.matrix( TM, boxpos=bp, hm=1.5, wm=1.5, ... ) else { print( top ) print( str(x) ) print( rownames(x) ) bp$y <- 5+90*(pmin(x[top,1],x[,1])-x[9,1])/(x[top,1]-x[9,1]) boxes.matrix( TM, boxpos=bp, hm=1.5, wm=1.5, ... ) } } Epi/R/fit.add.r0000644000176200001440000000117212531361077012672 0ustar liggesusersfit.add <- function(y, rates.frame, cov.frame, start) { ## Modify covariate values rates.sum <- apply(rates.frame, 1, sum) cov.frame <- sweep(cov.frame, 1, rates.sum, "*") model.frame <- cbind(rates.frame, cov.frame) if (missing(start)) { glm.out <- fit.baseline(y, rates.frame) mu.inits <- predict(glm.out, type="response") glm.out <- glm(y~-1 + ., family=binomial(link=log), data=model.frame, mustart=mu.inits, maxit=100) } else { glm.out <- glm(y~-1 + ., family=binomial(link=log), data=model.frame, start=start, maxit=100) } return(list(rates=glm.out)) } Epi/MD50000644000176200001440000003021214016527043011277 0ustar liggesusers3881e7db20d6d75465bf9685554851b9 *CHANGES 7e340706aee63a43ebe09ccc2fd15733 *DESCRIPTION 07c63ae136ed96ec8a22bda151bd0eab *NAMESPACE fac3c7f01ab0bd6930cf3cbea20e6bcc *R/Aplot.R a031997be7388601dd1df6a28fc55328 *R/Cplot.R 6a1c4f4cbbf509d1f3c40b9f0adb6399 *R/Icens.R 4a6288a0cf99c7e1c4de816d18e6e8e7 *R/LCa.fit.R d802fc697f55ab0ef5ccd45e51776e46 *R/Lexis.diagram.R c6b992622881e60fb82ee4b8c3357c9d *R/Lexis.lines.R 05c38381cc48ab25b681e8615ac31ea8 *R/Life.lines.R 330f1cf58e92430145b958a0f9d41571 *R/N2Y.r 8743609003b32036a7a1d02fb4b8e17b *R/NArray.R 74aace0e5df5492a0dbf3b94bd25406e *R/Ns.r e9f582b5dc17d07bf2df96de74441963 *R/Pplot.R 144bd0af57017a5d92c4a7bde47da4e7 *R/ROC.R b99336ee0c14ce41c007e5d7e5836ba0 *R/Relevel.Lexis.R 566bde82417d3f255e04aab183eb8098 *R/Relevel.R 0e3e3d23b8ab79dcf3046828190462b2 *R/Termplot.R 3f30311f13dff23a36857e49a320536f *R/Wald.R 07d72feb7757464381a9318f35b010b3 *R/addCov.Lexis.R aae77bfd1a9b2dd4e6e1c3b9103f3611 *R/addDrug.Lexis.R 3f1b3d03d4d91baa3625e6112d9bcb55 *R/apc.LCa.R 0f9a88d6d781d2fa1e5292454fd64421 *R/apc.fit.R 3c53b3d667196c204fab811d2231ccd5 *R/apc.frame.R 47465f1ff476493433d2ae5634ce3b12 *R/apc.plot.R 8ce5a4c989947cb9d93becdecfde642c *R/as.Date.cal.yr.R 81ce578a7e479b90d62726d8fc9b2fd5 *R/bootLexis.R 749a7fe3b1a1515771c041e7be7dc8a0 *R/boxes.MS.R 44e5f888817c94b8a190eae4aa964a2c *R/cal.yr.R f14431f76cee75cbd74e553b8dcd68ff *R/ccwc.R 236cd9a64a95938c8eb6935e77c16737 *R/ci.Crisk.R b078c41ae066c38ad950c169e6095493 *R/ci.cum.R a510401e7d75bbc518eaad33840478a3 *R/ci.lin.R 6f80c7b2b2120068cd16c043fbc29db3 *R/ci.mat.R 886f87cbd08266fa281e2ed7b3b3c253 *R/ci.pd.R 7637da11fdfb3612df5d73a64ee044e4 *R/clear.R e7e271d9c47316877e9726fdaaa9699f *R/clogistic.R d365bc4739ebb104b0318c1c9ee226fd *R/contr.2nd.R bcd4142d3bf3e4517397387fe43fdf95 *R/contr.cum.R 8064804ee2b1cfa0cea2b44a58106b0a *R/contr.diff.R 8ffc3eabb90b6b9b710109015779d853 *R/contr.orth.R efb8f1a3b97b41244275534855707b8b *R/crr.Lexis.r 7788ad7432a62c874a0a9d37e826bd11 *R/cutLexis.R b0d625f846ebf87e6aa7dfc188f4d7c1 *R/detrend.R a86250cce524f9fa2215c0c0cac4c6e7 *R/effx.match.r 79292fb5601cdd6ead350751f4c7ae59 *R/effx.r 284fde46d95bf072717bd340736a9303 *R/erl.R 822e02862de39625e5ed9ef6f84bdf39 *R/expand.data.r 67ce5a28408f42c7b65084195897b995 *R/fit.add.r 44eec3e5b106ee3f518beed49b4e0f9b *R/fit.baseline.R 8ffaebb81a92649b137ff8a4911841da *R/fit.mult.r 7c7059bf47c6421d6412a4bc53fc5950 *R/float.R bdb5671bebcdac29f7feb52749c08007 *R/foreign.R da7b5d41fe7876ef6bab01839b613939 *R/ftrend.R fa3fd08784cc9ba4731ad8b5b974be50 *R/gen.exp.R edb1f704b064f67363d224d10461413e *R/harm.R 36ff27447fc7512936d1c411d6556714 *R/lexis.R 4b9c00f8e1833edf816e733cb5ddf8bd *R/list.lex.R f8eba91de17a8207c6303ffb7b34f0a7 *R/lls.R ae9b3e6688dda87762f9fce5482a69e8 *R/mat2pol.R 73c68c0b91606ad7c535611c96219867 *R/matshade.R f19e3a14cba0018c3ab3ce57886a7fbf *R/mcutLexis.R 79d6e0b02a2c4e98fbbfcd936b21d377 *R/mh.R 34a4da74c4be8fa5ea12d12b6b728824 *R/mod.Lexis.R 9e48e47769874a34f63a2e2d4e6ffffc *R/ncut.r 2a44a66ac4fe7eccab191f94957265e2 *R/pctab.R 9d62f0d8c66944abb94dac22b9b34cd6 *R/plotCIF.R bb1ce8ea65f95b7e1720c2686e4de799 *R/plotEst.R 57eecdd415b7d0f7dfad39825644add5 *R/plotevent.r e28288fe6d4c247c3c7fe0a05212e2d9 *R/poisreg.R c0229c2819d977a8c557a22dea1dd5fa *R/print.Icens.r cca51283f637927702fbe217367011eb *R/print.floated.R 961858aa39320463dffa6154c70c87f6 *R/projection.ip.r 0c2a2e493c190c4e74587b5127e9bef6 *R/rateplot.R 26e145b4a0930d29b0d6be659a5394fa *R/rcutLexis.R 251d9ec19ef0ca158582f78d70255c23 *R/rm.tr.R 1f3397f4132776aadb6742688f3b75df *R/simLexis.R 358b6fa60093d8bbee969a76a88797c0 *R/splitLexis.R 6a097056fb666f3745ca22b93c24822a *R/stack.Lexis.R 616cfbd958f633f6eb89a18a5deec7d0 *R/stackedCIF.R fb143d532001643d3f74fbd2e114e976 *R/stattable.R 889282ea37a5a9d9bf7155d790cd9036 *R/summary.Icens.r b8638a405b03eaf8357a7c6f501aa75e *R/summary.Lexis.r 263c0279603c07039a53d4748c3a1ed8 *R/twoby2.R 53904292629435d35ec42f11329b2c60 *R/xgrep.R ef6ffd17fa44ecf836b681e4c0b5bfce *data/B.dk.rda 713014c7934c558deeba7accf8fd8e6c *data/BrCa.rda 666e336a1aefb9c4298abb83a81a3300 *data/DMconv.rda 074ff34399f500115f0cf77f22d215c7 *data/DMepi.rda e200a06eee9305b2fa2c59af5982d62b *data/DMlate.rda e8f6f529b77cb3a860b9d53f5f65c3bb *data/DMrand.rda ba4f4ad111ab2f488d1373c1cfcb7398 *data/M.dk.rda 7dda71830cede85dbfcbc4629ca31892 *data/N.dk.rda 7a458e4dee088bf6808e1e553532e590 *data/S.typh.rda 5fa4742e7db7dadb4b4be081ff296a24 *data/Y.dk.rda bb9fa826daff3922e6ca07aeb4839317 *data/bdendo.rda 83ff1dcdfa22efe9e5f4dd27030f280d *data/bdendo11.rda ccc912355c96834cacc675ff5e8c0e55 *data/births.rda 2c17f06d2737d1dc3d2aaf1821013c9f *data/blcaIT.rda c902acbb18655da273e13654014be570 *data/brv.rda 27a20f2f644259b9d295a0486071f6c9 *data/diet.rda f9b5f0bcba4b20da2393194711e43d1b *data/ewrates.rda 8f51a96ef03eb3d5f8c723e58e3a8f29 *data/gmortDK.rda 2f3b8fc48d21966281153d98079cec92 *data/hivDK.rda 480bd25e6150c55fe17db41d6eb00007 *data/lep.rda b5911d05263d3e9efe5e4e99eaa6a76e *data/lungDK.rda cb139c31c1fb0421232caf88181ec5ac *data/mortDK.rda deb94384c7380312f9b33f75cf6d8559 *data/nickel.rda 4640a31484934cccc1d626104af1365f *data/occup.rda e5d644438c62b0a219c98a9bb64f7e8d *data/pr.rda d7791c06751fd80b22b525b58e475187 *data/st2alb.rda 337752d93746b212825913919b26c305 *data/st2clin.rda 51212e0627b2774d7a44baa71a5b54e1 *data/steno2.rda 404cc2c826ccdfb5b5edbe9834561e02 *data/testisDK.rda 1953ddd7d750051c5682fa08b11cb777 *data/thoro.rda 543026d4d6474e1e49f843beb44c18ab *inst/CITATION 8460bb2b6f0283564f1d00985cef3708 *inst/doc/crisk.R 4cbf63f2a70061bf4a7b170d4e6323e2 *inst/doc/crisk.pdf 0ebdcdefdea6f858b9add3bfad0c81d9 *inst/doc/flup.R 01da1348bcd408567d2ca9d362f6d700 *inst/doc/flup.pdf bfa62c4fd3d9c11afe5933273a75cd3f *inst/doc/index.html f067c3b6790b9a799c39d9dfbff62bc7 *inst/doc/simLexis.R 400b4cec181255f0e879b3b4d45c070b *inst/doc/simLexis.pdf a80a260dbf7d640a43c921d042aae6e2 *inst/doc/yll.R 51da3b13d61d6dcd4523b0af9a016be0 *inst/doc/yll.pdf 317bb6ebeaec5e7376b609d7e382c166 *man/B.dk.Rd ffe380e7252698c820a448b587714b49 *man/BrCa.Rd 3abc5c20e62c874d70dcb2688ad2cce5 *man/DMconv.Rd abe65ad85f5ed8ee4a4efbe865dc4c13 *man/DMepi.Rd fd6111e72286fe5e4ea652bd2de43791 *man/DMlate.Rd 69b5075e6ad38e535c6251ad11c0ddb9 *man/Epi.Rd aad6d76980bfe9b529979a9505dd925b *man/Icens.Rd 86be4725c9a6325a79e74877fd3e2d40 *man/LCa.fit.Rd 653dcab331e08aa099cd90fd68787c99 *man/Lexis.Rd ff237551a22848d361550c2d11e69107 *man/Lexis.diagram.Rd cb48c6097ea268ef1ff610d4e4c813a1 *man/Lexis.lines.Rd b4b2ca144feacece204f86bc6640d51a *man/Life.lines.Rd daf66f950320e836b8ce1d2bd37cdc41 *man/M.dk.Rd 6ae7494a426801b9944c37190c09b3ee *man/N.dk.Rd 9810c11864c0863613c74e1846424e7c *man/N2Y.Rd 424aecfdd664b3123ad4815880aa3761 *man/NArray.Rd cddc9fd049b34de27a61fd1bb119d998 *man/Ns.Rd 500abb257c5a71a4fb82e0c5a845f7ec *man/ROC.Rd b6bf46101c9e32978e04297fa2ecb241 *man/Relevel.Rd bb2162d557dfb7685edac64ac3213b6c *man/S.typh.Rd 9351888a37017068f2c9ac8b843c846d *man/Termplot.Rd 3995803f52a91af5da0e7ba9f45d0769 *man/Y.dk.Rd 16c2b0205cad182816811d39f03c05e4 *man/addCov.Lexis.Rd 4091ff116479609b54b878a78876e77a *man/addDrug.Lexis.Rd 4aa9775e619aedf1cf539b71fbc348f6 *man/apc.LCa.Rd 6ae510f69bbae0c560915c9759ba1253 *man/apc.fit.Rd b2df9e1ef085b33cb9f8d4bd8f62a066 *man/apc.frame.Rd bedfcab650cc145b5eecd24c2db0f703 *man/bdendo.Rd ff76ca0065c867d889a6dc622a81441f *man/births.Rd 8dc11840302a388e4f26892335d5d888 *man/blcaIT.Rd 87644ae01b40269fee4a2069c982f4df *man/bootLexis.Rd 60c379efebadb817280fbf1e72e70b89 *man/boxes.MS.Rd 18d942d375c5d5f6899291bf9cd1fe11 *man/brv.Rd 319489b0679387c837601079dd55be82 *man/cal.yr.Rd effba2c17ade00f0afd10184a073d34c *man/ccwc.Rd 4b7fb75419f251f563c300caa577cccd *man/ci.Crisk.Rd 9348bc816f3ae22046ddb9209800e20a *man/ci.cum.Rd 5f69030f166d24e218008fd2cdadadc9 *man/ci.lin.Rd 831f321e2d20d108151f6e478efde3e7 *man/ci.pd.Rd 128c0b1d00a69e41d131a6f74a1bae23 *man/clogistic.Rd cf5e5a6e18e07b7bb8d70dc0417e6166 *man/contr.cum.Rd 9aa205309fc22776579143524b37cb5a *man/crr.Lexis.Rd 835652306eb9cbc537ca585e8939d7ee *man/cutLexis.Rd 294199aca45f1ed1a7208ed78e4481a4 *man/detrend.Rd 8c51a1104754ab84c116f7e4f281ea9c *man/diet.Rd b7fe5bdd954d42417d8c37ea7c5c39a3 *man/effx.Rd 3c3cc3b1ecabece6b7709c1b147bab4e *man/effx.match.Rd f281dede5c1a091f9dca30199fb41bec *man/erl.Rd 0dc62e726cdff6694774fab66595ee81 *man/ewrates.Rd 2354b1ba8931880f3377bfedcc1e13c9 *man/expand.data.Rd 162733de2fd66ecb561e5d60d53c1609 *man/fit.add.Rd 4b4edfa7b120f9b28299089b7584cc27 *man/fit.baseline.Rd 2c35107b90ac98f16a10f4a09f277605 *man/fit.mult.Rd bca8b8c3452180e63d4d22885b04e3ce *man/float.Rd 719217525d9bd29409827d4f24054b82 *man/foreign.Lexis.Rd e5a57a203cb91e9680dedc9023779e59 *man/ftrend.Rd c5cc45fada3c644af88bc65a4f8c576b *man/gen.exp.Rd cbbc2a23f902d83ba2527b27b5ed3adb *man/gmortDK.Rd a8c6ac7de060971f95b34f5014ded40c *man/harm.Rd d9f1d31e109d6058a2160ca0aa49bf81 *man/hivDK.Rd a0a1a30226efae3d86645e79803f01a9 *man/in.span.Rd 9c3b059921d728298ccff73298b4dd31 *man/lep.Rd a9c6804fd2a3d407b74f88975698782a *man/lgrep.Rd 8a3cc7360e53c73889d010d03d359b0b *man/lines.apc.Rd 6f17d98773f4b68ec456012f7a2185ec *man/list.lex.Rd 78125ba49d54905fb727765dc8997796 *man/lls.Rd 661ec298ffcd0f39cf55c5d033e04fd1 *man/lungDK.Rd 888d44fff78e5ee9cb9f58c703a2f241 *man/mat2pol.Rd e931751cea782a953aa599ba211679ff *man/matshade.Rd f9a949cfca0f20237b5e5c0d763c15e7 *man/mcutLexis.Rd 3c462c4ce7ca1ce4b8c6fef50b3c7623 *man/merge.Lexis.Rd 34c530c36a3a1a7447ff8eea58f42084 *man/mh.Rd dca077219775fe032677f543b5539506 *man/mod.Lexis.Rd 2ecfec2d86e80b9bbcc2c3a253348edd *man/mortDK.Rd 8aac1f36334a9ad410792dd49c170a16 *man/ncut.Rd 322261ba370afa2c470c78be18f569fd *man/nice.Rd 05bd25340716d0805cbc7eb433896206 *man/nickel.Rd 0e0ff2e0894523b3878213d03afcc8cf *man/occup.Rd bd9d3936e1c6a70a6cf439db641da5ab *man/pc.lines.Rd ec157d8bc7e36cb16cef3112183e6cb9 *man/pctab.Rd 50c0516a536004d7f4ce91ef1bbfd8c9 *man/plot.Lexis.Rd c4ebef5ccd8dc5c001ec26095beac8f1 *man/plot.apc.Rd b324ccf765a5ad308bb7fc29d0c70ce5 *man/plotCIF.Rd 9eaa63cdfda554940dc36c6b793fee56 *man/plotEst.Rd b0047a7bab6a20b153485db9bd338394 *man/plotevent.Rd 5ec37fecb0bf62364a9ccbcff2126a19 *man/poisreg.Rd e67824a4cb4bb5e2f545801b49e09aae *man/pr.Rd 650851ce4e70b3cb68b90854b0a227ca *man/projection.ip.Rd 5f9126ea22dd332ad3c9ecd051010364 *man/rateplot.Rd d7cd3994998dd6e158ac37339310f448 *man/rbind.Lexis.Rd ec97e56a596828f807b4d56ef29ab5b7 *man/rcutLexis.Rd c3dcb0cb9643afc3119c741abe22943a *man/rm.tr.Rd 38f963a219b58fa65b517f1eb83a6633 *man/simLexis.Rd a22aa8901f1f717b6d3a7ed086bc8e02 *man/splitLexis.Rd 9398717a32a374024fae34ab89344011 *man/stack.Lexis.Rd a1276119b4a28fd73149101911b6051b *man/start.Lexis.Rd 4f43436fc863747dad4fcdd566948039 *man/stattable.Rd 73cf4597fcb4a9d019bda47431b095be *man/stattable.funs.Rd 4b668d31d2d8cd3ae6abf92d9bea36ea *man/steno2.Rd f64993885912b74636bb8d1517cbff7e *man/subset.Lexis.Rd 832f27234cfe339fc8b91a7b4e21dfd1 *man/summary.Lexis.Rd 14711d23ae0b89d9d22b9f3b07211093 *man/testisDK.Rd e3446824b09ea4ad8e8a0ddfc1987eef *man/thoro.Rd 6ea9cf64475187fa2f402275c40573a7 *man/time.band.Rd 120a43f3c8f4bff2fd46ef1c4137a3a6 *man/time.scales.Rd 1e3d5075a2310c7a43a78ce7bca21b22 *man/transform.Lexis.Rd 02fc311541fae16a5d3a580a04925050 *man/twoby2.Rd bcc0556f8f0a158637592731928cf835 *src/chinv2.c 3e3a51847b5767274f0945350e947726 *src/cholesky2.c 09bf10fed80e805e7e58db9794e5edcc *src/chsolve2.c 872ef5e7ef0c1941c17d7dd612f6b1c3 *src/clogit.c d77bd820f6ce7dc7883c9e2813a44c89 *src/init.c 8460bb2b6f0283564f1d00985cef3708 *vignettes/crisk.R 709df795f6017b9a120e42ca5ac44ef9 *vignettes/crisk.rnw 0aea53ed1cc0538bf0761bae96e915ff *vignettes/crisk.tex e811e20b5f5eed54af54cc4dbaa50251 *vignettes/fixall 0ebdcdefdea6f858b9add3bfad0c81d9 *vignettes/flup.R a3dced3aa14c13322d0b6021853370de *vignettes/flup.rnw d83c710444893df09a09537ed352ec4d *vignettes/flup.tex a1d42a49097da515049a1fe3fb63c5b5 *vignettes/sL.tex f067c3b6790b9a799c39d9dfbff62bc7 *vignettes/simLexis.R 1439d708e0992583e1cd8209d157b727 *vignettes/simLexis.rnw 06c830d8a33228ec0e96e03ca4cc03ed *vignettes/simLexis.tex e18d102389aa23a92012542bb87debdd *vignettes/toparticle.tex b4b55559db3e7a6c0a8eb3632ead0d8e *vignettes/topreport.tex 4ca326289be7225df127914243ab35fb *vignettes/useful.tex 0a1eb7afce25f9efacb7305b889219dd *vignettes/yl.tex a80a260dbf7d640a43c921d042aae6e2 *vignettes/yll.R 99c06603da2b086a5ba95e243a056b84 *vignettes/yll.rnw 0ff6714caafb8041d2de9d06465b04bc *vignettes/yll.tex Epi/inst/0000755000176200001440000000000013750775251011760 5ustar liggesusersEpi/inst/doc/0000755000176200001440000000000014003553417012513 5ustar liggesusersEpi/inst/doc/crisk.pdf0000644000176200001440000206065714003730346014337 0ustar liggesusers%PDF-1.5 % 56 0 obj << /Length 806 /Filter /FlateDecode >> stream xڅUKs0W3"ɲ,qbΔ 8$4N=ZIJ[2nu4IKɔ楅u`R\IJ9ٷctzd:apA^iC62k%-L-~iܱA!yqk-'-Z~|@x}1Caы滐zInSf;skfqd$H@N3rQjVmkSRLsgAQɧ>Jo@FbchП76i{rb+z ',p$MH ;`$xNԊ~LZp:bH9.|VRm^qmӧpP5mW^0 endstream endobj 78 0 obj << /Length 650 /Filter /FlateDecode >> stream xMs0 Iև}m&L:=[Kb2wWA!$%iZBH<- "%7*VS1[yCy& AG\/UZK\In \"+n{xyrX=/KSN.j'K2Ef:ķLR|2 ɅbJ鐂2ంsI/~Ḃ7HCEú\UR JN>ztG^FWY."!YA܇Odp8_7&Q/  PDpɒ#T{?q( -:cIT,ieũ$}&ɇa"j!rn㇓^ #B^D+,=Qx[64Fr ֪ y3.~:d&bnCTr.:~4ʃ,ඥW{>~,izW'qMZ86`#ȔN">P}\L-Lk~ qPxezX fq%ۻTr~t̽S&?>tﶥpz/ 0.YOjE`c붽0N0XOl`H+^1.'.~\ endstream endobj 83 0 obj << /Length 2474 /Filter /FlateDecode >> stream xڽZKsܸWLNU40|$n٩qv5ÑƖʐZ}@hhs&A_hXݭͻk WdMVUղ\Vit)kW;L-k G`t~COp}7YGI?ּ? ✵J -,$meXoy NzvoO$Hwv nz\ZYэ%egӷ~ͺ?; _[PT{m+Q_aFvrI+ ʈ% ŭ<;SKkdnzU^U+kvֈƯ<5Oj#rgzϙ(KinkfhwT3LÜ-(pGg ӯdS*LPC?[ԑG3 U ށp5ֻ0 X9wA΃-[bu0>{H  Mt H 16tl ClԌʚ N `nO<ڞ@ &HtuC3sVʘȻ.d"Qކ#ʷ̂_o'1=eof{&!LXz/h[>6X]BJ4Qk3 oYOц'c#UBOV!ے[TphLݳ3iҖv/d5 RDψyԥGr0H dMԜ;ϣn~SIg)pN1y_X Ct`fٗP1ˁ'PFG+&) Ǥ_Ȋ\HFJ< oU-䭺cL|x,M@&>RL I>' /0],r*ֈ\lIx >ȭ*(3S QN{?ވ`UU6UpV kUJ^|[\1m5KFFjaJ.uu6ò:p0~߂7ĘJ1*DOYUL (Dk:e6ZYR/򊊼2.yye*&fG+됪0bs6* x[.n"λ(yM:P.r.e(Y!dn?dm S9=$}s}Ow,#=(lG6ێd3xT%DyR zh;(6Rd.sGˆIȩ<7.Rik7 slji)[80貃9so.d9,T}e5g|u뎫=iW,~N!N9 z61W?zF=fhn'۾E|݀@(;pfzt3 B|zjحDYGV I~ȇw' endstream endobj 93 0 obj << /Length 2089 /Filter /FlateDecode >> stream xY_6ϧpyi2\%˖M[f(1P( PBp%GqV+i\',v&ѧ(~I1Yƣ,".,2F}>^<8IB!lzZJ:qK;7VϹz.sj0LyޟOk޲dɸz3R{{~@^z{zJ1/\gIM{?$T}{)q+w\ƒI>{dY&De1.VPg*e yz\ @3|6רМz9ERCWWZp_LDƧze)rW8 %ќVp ^D `(?ouh SJZwLBFy//v)Cdi_D~`L6$C1t$_jit}pnr.]fZz3!qr<9NDtmu13QK];#C4b>Y}xk0R*m&񆾚XF^&1(VCkW[C j|EG4ƅfcKc6) `㚍i صCo]y)!A敥s%M>an2QhD IE̢GIie1#ſ 5wFD rM?ڈqVF0Rq_PezsKž DSLJsP.LB$Zz;{()q ߖZ#RJMD)SG.NJXHm\C?V6ǁr2@S潍28qfFb6f##52Ozjy{&wՆvQѸ^u™s]4`<*!d'38ư$JL8(0 uJ]؀dZdx»-ssu bQ[y!a H[ʬGgǐP[ɘr?b][0|=nT=)(I+7Pn+_P-eq+-oxTX/CgCcJ]OۤtL3tJhӦLsՙgvoMulMeHє=LCiqh 9M=TpqDfDszvLE"4f6e}n8(Q! ,([3Oe1#@Տ!b-MoN_۠A)ȼDSnCఆBGd`tAy]qy.l(q\ ۀu<1}9mty-Z>Q?7AJGO 'e¿׈lx20rp-2ȫ=pjxX C3'IT6DDI{ANH -G0,vLtL2)Oߤ4*$c^BE.3dJݕ CEyrɶɈiNe('^]0n{Y%Iz^ʙO8bk9sRpu ;32PXURaLzIu}&/Xq3҇V>\:mEj2]²,6U,6ÃQB6V q q,r$SzNn8-Z"V/%n"( nJ,@+ǝWid)L®z=o_Ij4 u޶O CT(J]zB_a`8k=JuEx=m/=X.F-7oPw\BÓ:4J8b+Ҙ=۸rؼ׶ NL)0~x5m?6SF endstream endobj 102 0 obj << /Length 1546 /Filter /FlateDecode >> stream xXKs6WVi/,yЗze3nut"c*h:UzFDo'S |{+.A I$Jɻf#CN;QwfU<騛j+0,j!=^gG!xgE״UV{GLEb%M7xNI[ ASrϬL^Z&}u_SQ& nQ8`HXF^}JJABiSS[>ZB)xbj'm&s= ]0F(*KTۼ `OSNwanQE ;\" c8\=cPsf8y[g 3yIUV1ئ Js6rG?^ԏhkߛhS,L{{dߓkALiu@02FFw7Z?wd6j endstream endobj 90 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./crisk-boxes5.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 105 0 R /BBox [0 0 720 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 106 0 R>> /ExtGState << >>/ColorSpace << /sRGB 107 0 R >>>> /Length 2462 /Filter /FlateDecode >> stream xK$ ) 7zPt 8;7ۇv g!)Za-f*~]zE_w_>,\?_~_Z~qsno&O[~|x`\bSY.9..uy??-nhڱqDsyyz^|'?n]I55qc+ bXZPܚey0?.ƺO\Z/ۍ41>ֵi{Z|zWVKÛ][雷?-OPMPNk8;AOƌ>k 8hVSZ?o6eyVdWyu8:urp6ea3˽۷ikrNn-4O˺` OcY= _s^Šy :u;\=ҙƸ<_;TF҆FJgR@KՃgdtfwAɫ" &LzWa3 Xg Tڙ 3fBaW3oČxύCa:}Zx&:Rg"33IΔ9 鏘 3{ffbߣ3ɱ0{j̬2es>f IxF^K{΄"d!rGL6G/;qb҉ݡB <17t?̛tySt_|&&2ﮐcº]t8 y_v;uC[,m}<ŝv N`<`8}} uKjB0t/}6zD 9%Vh1AΤ]qK|320%pTEs<ì”$DeV9pI#0N& )Be0K9]7'Ip^FadVaUUa1A$Xg0S ff8Zb)WxΙt&)Y0ČEd-1+ 1ɼG݇t;%݇8bK=Q$ͳkjS % _Z"K>Ty liиb؞w%GPN0K未NL)3y\2K4&NU0S&L!Й@/]30S9`rH$ۘ|xlژP>-mh}Jc:$bfL3UaFRfbf9$LٍD>]sL g! 0V&bf}=ٙ3Fe$R䜸)H=!$2tCz"R$WV x&<9Wp!xK .1. ppq!c!B܇3Ac\f\8XlؾgY}GGr?ƕ!W️gY}lk;:4k9{\:ؗ)'r)f6yYYހ cIvWg:c;S$;5f)6tWg2c;!LC>3sLyv&!\|lg&|lg:άqVk |lg&hL|lg yvf_󐏍 /ouWgB򱝉3&ۙ) Wgc;&L|l PdN9dڪ=я'qϸpﮐ㼉2Rfh"L5fͳ8lcz?e/I1]3Y0d{C֘uL_IaM֘)Ⰵ)v5fY1Sß2%nⱝ+ًMⰁYW'm186f_^wכ%כ81f2K{3Y1YdƬum̈7qSfi/l &k̼Ƕ]!;9a^ngiXVɦVzV%F0/0k5~ahVƯ3Ew PF_cy1¨F`g> 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 112 0 obj << /Length 1868 /Filter /FlateDecode >> stream xڵXݏ6 _a``g%wkum֢/q.%q;MO%;aeHHL\;y*!+V+XUح^Æ+#t'|0B p` @H.Ƞ0mzweys eLd i=.wvZ *QEŒOt:>OfiξыT~*f{&-]`W۵B.7kߪMc?\GvXܾ*ĉ49$`Uʙ 0%%2N79rlh endstream endobj 99 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./crisk-boxes4.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 117 0 R /BBox [0 0 720 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 118 0 R>> /ExtGState << >>/ColorSpace << /sRGB 119 0 R >>>> /Length 1122 /Filter /FlateDecode >> stream xKo]5WxHy "T]j"" >3s%$ҽ=g;c>.kfǗ|=|> B>cv8@Or{y?v>o/~@w9:2Ս;9}ꮮ v%#SF<<#RP l|  .^.:br1_\{SSKIv;RqO}\S⇊=3,tggjv=ap'ߝwWsff{J@|X>^RCK6C,RL'rYIy,6N¬Ɣ0%E\3M.id1٘101GlR,0M^<f4&bǕXjL(#f5<3/4y)3& dLżɭ3 )qTZ䅙FL Ř4M 3f #ʅY$}_Cvy{u'i/IDhgr^=ٜ;@@S]'<BӉ]4 >L[!gSCe>Lulgria߫r3cٹ7؉d:]O){\zwa .M1C7>L=cHԾ`}agvk0,F,D|t2 \_" َR+y"{}cxs?(l]e endstream endobj 121 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 126 0 obj << /Length 1535 /Filter /FlateDecode >> stream xXK6 Whd+.)>fld4{$֖mumɑ (R6IOm4IH,=2qx@wDz5&?O~O.eQx󕗄,$K3͗z&;hӢa h Zh7EĂ= ~f} W %؆z1hf*Ra}]iK.hR7ebW^1!S#/R,ɧ L"yG-a%*{yaD$0zMMWC!(:'aB)a|DI4] "н8-EvO;\yOfM%;-{-jNq (SeJʎh@Z\V:K{6z:IQPg{B$!ZX% _8rorw,$1 NϺ UI:(i`BUZ.F%20lmjΕJ[miQkqd#wcIbv5z\lI.΁!vyc^2,}0ɇKTٴTO8U1+] *ŅZFepn*5djB`kj I<`H RCTpW.ʪNpa@`tL^)$PǶ˷ZPk r4J| 5ݦl0qa9ݢ@DjHV5u)e]5{ 6zln$fSz~eUZnFh”R$}vRa0*R}oL~C $2= 0B^wH5r'5.ݜ> /ExtGState << /GS1 132 0 R /GS257 133 0 R /GS258 134 0 R >>/ColorSpace << /sRGB 135 0 R >>>> /Length 48270 /Filter /FlateDecode >> stream x-r7?W[]Sɶ2l!i@HLaSu {x,ַ׻WdEfF?/?뺮?5>ן\g*|OoOگBm?Rvakk\s*8o8uϷy9////?&_£S믹?_]?-umw:˯^vʯWm[ˊI(_:/w_/W_o__^߼\iXUwSk둘vm_w}7uϿףZ߷_~q5p*`}g[­r} *{5_N8h߂ߏLfߟ;`+Co»j>GY ϙp%#&8g•_4:` &`~h/Nؚ k~ᄀѲF-`~U_x΄ߗpw]p.q n;߿jIث|W~p^ ;|n?{|_xk4nAr]گ%`h/\5aG._X`h΍/Wӻ_3Fw s>aL/MpktZ9O_ؖh?szcza)FCw,=.ӻO W}[ 8`L/ɰKN:5i4_s6wל_/ F~hrz&aL/̍ FW~vœ,[#TM0 pk4g~Y){hgœ]0/ݵ}aN>pVߘ _xkzw'h~_ӻK~Ѧ/yM/9qwM~aN79̵9~/<9΅kz1pg\ќ_ӻjNSӻjh_ӻ¥]cK85׽5ӻKJܑ;fn0w9Vsy +H8gx(plp3pNrro񜌁s_7͉~<4?u!X.59OW~r MKq@{i,pnjeSp(k1鿸op/nz/*p5ysec| sp %&/ Vbb%'Ff+X_߿l|[yxop,c,*B(Fc%w/nLs#(1k z u&u_ 5>cҸ[lf#[lWMz߱%߉c n|c%C+(:O~QC*p_%bX%š-ָc[pzjːN4X6k<I[8}4#n+U|qӸ/k?lM) 롱Ҹֵ*OZߧeT8҆Ce=q73 \*s=TKrPuPڗW=0pnJK s=p7 4ҋCQP8Ca~<k5ğPq׸~/Px/Px3ks=]#URxh\z>.EyS{_ZOg$8|[<{g Z.[b~|qi\z8xyFVp9~$xͻx⋇u}q/-u3KxƘc=.nŁ>8C`ܨ5;fYAh\7=c0z^W nz^o_ڏƝ!w 87l 6 pgc=|̅x!²3#<oggn;f\/8C * zFfxyLjF:h.H 5^}Dś%vKs"q%& qp6=xG{7x{"~c{|~w <|P ^zޡswm_w!z |GySGx0K^~7.f\~|zs'`=[/6/Ow[W/S9k&>xo+[ioŗ9_kx/xħMO|^ 20[xW+k>ywO=/>/&>).Z]7%%^zޥ^|^k|wb\<w͇]?s_D*.oq }Mw0]V7r ^`kiyk澦_.ݧw#Z+|WȺzxy ޺kKExp7>xՊ ^7B5Z35[7/*bZomO{}4Ֆ G>m$W >*<5^*Qux |yӋHn/yMEyߣUK?%|^Η>VHyyy7xhn`>xy瑾 <[Ut >7p׸ÀkX_50a5C?y?:K?/}4:<<:E!w}<2ʁ~ŧ>|qӸΏ9?&|^KN<9KQU:g&B3P[ϻyq*9/[ x}h?M~4\(k? Aڏ2؏T~mMyF9i\|Pop׸_GS|^i+_ŋ%> xƵ2XK|^`#ָ~^Cϫ{+SӺkxkϋ\}^N7x* X? ܔ/G㊟7+8xi\W&7zYVzZ/hYn7f'[|^+|OY'>,t`:_Ѹ~->Pn8KOj[f z^[|Ƶ޶<W})>]Voy*Ը->/[|^? <7nOz ~])|N\7+{Cf_h/OZ0_h?ש`/~ v{Bޮ|)b>onB"hWQ|5?7M:xy}}INJ/=ֿWK|^O .y Ϲns=@B$qzϻ]T;1>#|8E\ij][2͋ L=RW#͋sfϸ>_|^!Pncz ͸>_|^zޜye|w^[c-ŧ#sN}y>xW멈+sK?5=oYB}7z^Zt_:K `փo^?5z^ڼ])X֙|Cy}aaY_+^my/j`m)>m묇} AzzlSv{=h=A_Oo+Ћ׃kAQ^گzz~֛Swy=h?AeOe`փ>t_w0A}^; f=|AO?u>oo}F>"͸>z z|k<6.3tKQ2 zPS|U0ҿs2{[>ok\Ӏs|5 |bys^_yz֥w[yw5kUŧKCϛ|AM}x>R_辱/yW77Bq5t_? </[|~7Y_k*> >or,oMƛzy >o߮_zy 7?7|d}|`߯z嵿zy>~m<[ 78?py𱁩Kn}r ޺ >~9}kvΛ}^^˾zyŇzy7||zkyϣ?$7?<~Ƶ_yZ?kx|O ?@ טR|دo|޺? 'y <_GA|QMl&#xysKm&V<>9_C709_+J|ϫ'}[o=O_VOzYo?xߣR߫ok=_qS5|癏>>|v{~z' ]^s^ͿT߯/_'n"~S}c?_UϪwKC{Vgog6y->~yQ7y2 |Σz{yUoUγuU|EsFv4F}x][Kp<֨rOq<.#v9V_L._'/7x]īz/dzr|x7 /.xI8o8^o#|*Bвm?4}_y~}]o>._t_jԷ>xW=/9|mߘ}Ka~zjz8ܗ,so.p[`zM92.>dy=z8Emo<|%⼁Oyc|ycփ'jϛ/zcX|STY|׃/YWͿ֛{c|{=߅{c\|f=G1`z⼇}c{=0z7QYs[/~7'?އ7f={\^ߘppy7g=/Yz p z?^ZC'_Ƭ[|ל|΃9/zTų^g ׃ eg=\|}x|zs^7'8 }zsߡ^܏goܷ83%}z|'~H=FuzsO8YAz"$~MɹSRqʹSr]7R/siA;9:S\c>k\TOL3A=M3Q\A}N5Jւs=S=@KlKSnvv=걪Ǩײꦾz~5٨̂t7 SzzTVO}RrHعzzTOWox;SWO| *wpy/6 #zJVs=du#s=e]OPoY_-3笋z==޳Ho~45ד4kg)޵^Os=mEoU{3~}z:zzU\O=1|ϛgUu]\'zJ̕멧ϛ_#Lxxs=!yRk>ԓ/s=x%_zqEO=y=yj`R^O==|p=-qz:WSO_ɏ޾5ǯ'^bD/(ޚ~*0Ta7ⶾW0qo3\C%*/SO~y_c~k|vdt?Hu "j}I>&9X*SO?Ku?./pj6闱ijsvQ?Nu:q^cG_%>rPmjs?,~JJ=KUz?;UeHKUSPGV/,1~\ C?X/׎~Aju?ZO_Vljϋ6 nD?\\k~1߮~~Mja uQ~NaE-+BB?0X 7KƵOkoiLc~ #>Om߿O?hn7ߏ ~zϫMUs[_?~ڐ1ԸmǭGܯ[ݿN?o%~z|kPݏN}Wک_\Owzz~h#Ǐ~h_z_v_SNz eYL D\g?/Dgzo L}kR\B}ܴ~ z~п]=|}n7syYL}aέ}=á~Q#z:N}=^O=\`G>* ZO(u/zD"ZwTЃF/ zJGz>^S>f='3[)p!1}S<7f=hxzg>x+zg= {=y~Ы< =˳ѻ<=2kG/o4~f`ud=ϳzm끞 PCXO荖a=W鑖/zg^Z/z衖a=S-=GT]nU~=V׳[5>Oz>zyG?BzKH=Y֛^h}~Zlol=\[/t˴+ֻGzo`=ߣޯ;~^GO ca_X_YCݯa=e[v|h=fǏkvZ &:֋v|k=icXobjֳ>˲oz }_i/~7׽ 履Hԗ$_+JCu05ǹU[zWz勵n}Џ⭯OBg=rG~}~9Dz N?zoq ?GX/~g۰_ z;,?%~ Cozc{;:p/Z O8~7?87yz?yһϢ^xzQDZ~_Iy >5/ 'R/WFjH~% >b?&>W߀JE?~+A'ǯh?{1n?bc/leگ&h.py Sׁ_N~:6ŲNă:3{8_bR>H9?c?#>6_Qm~QmRmW_YS*^c#>/] ָ_߳_T5'U鏳Tjgg|*êjo~\_|# }~b~cGs?0<~h_6OoxvlЁ6kVn<&zۥۧ"rEd6CsȌٜG[$؎q-6CQޖy46?O3>mG3J!Ue@" [8@ l>Hp"<3w!-sTeiKD lHiڧ.?]Qk1qt)(&T҅DNHqc..Z'"ƔŶaeCQKbes2#*ɯ!vEfL #NbVS`80B rm`ɴ9֢[1m:bKHcZ8A4m`xi9vvYR[J56[amcҪpmf`Uö_؆)Ʋ Slg%,6:mah7661rFF+>& ކ& }7Y[$wX7L0nɱn\1nx^lX~:KA(mE(su27C[0c|afo&misgni~(ܹlMArVRڮgYfkmMmiu6x,;pwȱ `ݹE`ݹ4`_?e^s^+|B6"|4_u#̓lyEC,/aq-7yksx ^b,%~(Ϻ?ɔ01abg:MHH&d`*N61&$gON&~g@l '8hd,̀e;8hXԃ|!tBNf҇8EQ}k\:(7{GO3#o2G7XD,W,˻Jx \+f{7-\8N?GQ3տW^'WSiY $#RV;MrZCđmtq_wB9d<#%H.DUb `^!J7YC(zs)4 <+8E{AUQ"!YT+ɀpsQ}%'P0*eb^SY`2?QUΓ=k(bc} }X^Q , 7ߤ,>W7 ȣ6'QKہ߷*ԏؤptׄS2|9bDU^@Ty=]^SdEyjZrI\ՐQ:9uY\21]P%1WȨKM(8JϬc4wQr'Uw(+;Y"pލ n!QҦ܌QWw4YrGG w<l}7%^bFBduyrյpյwpյapZčԓwR(97$\q3xɊ gFxQ#.QO7%<1/z(-n*Jhu䶢pqWx(w!n-JRn.KJ1=^䣘+bZ\(/n1K4%%s(̅%\ ̒9h8BVdn4핫%pf9n( Nn8K^qsPWpϙqӑ;;LOw=D} L_ĊAqΫn5_ĽgJ)n.Hq6)k^rgn rgD 9c27 \MDX\r2v#%\_Hʕ)_Rjs&X\r/r3XWOXsA=e R _-_UzUSn+֣r_k]HY.}%{>")H37)F"2Y|$)F ,nV?-iEzh%Q2 YrZ{Rn4ON5Ou%&כmgn6ffWOܜNarŽcqq#8Ct9\rױ̶sױWw,[ne\y}dn= P}0~9/'ڀ|mڂb-djJImBv- opkRPNmj#ظ]KEڊ㽞w5?T28ɮSm` 5ܶj EorX8xC_ym.V&xz;^a|Zփs-Z\^Kk?:5Nx^rjWw^KXV|r-ȵUU~ծ~mеSVm|`=j͝.ZjsW~vzހ(yފbMz/<(X[ޏbmczC)v$^XOoFQ}ɢWԋޖz5SzgSoM9^\)J9^OD|^=D^0-^C}&%`*Uş%^,^9 +iMUET*zIo5wNVzZE|Zkޱx['Wv/M+¡wX+޶b-&zߊs;9u{^W^{qjܷ}Li kpkz ^ļMMnyӻt_6O>/z⚨^`VVz/Z̼z7ӫ[^;|^`r74}[[AqSzOKԼ֩45Cɬ2=zgoxeTm\˧bV78kýkG|(ko.>o؛Wym*ฯ}7<עژ{;נ 0Ũ*֨7Y?Upq۫[|s~ǵE^ kzŽ"=Z۽qoyVo{^; |Kσ/w>=my^y>jy^T~^˟|mry벗w橒l!zX^^i$ia5΋[͟'>ou^f6BRk*mϓ6aok7DX[C`^9o䷽K{"Z?O|޶/25/+m[qħ{mK#P7=OXZ  #;qħ ;[{$4p<2|ihˈϻvjD8^)'J`GiD^,Vp{YF|mm3idnh|Lm2{&>5d~Gk2Lȯ]^eG2,w'o0Zi{汮K>/ 롣vh஝b'Guai`i]8C[r\ўN\?G>vu>s[}*/ssH{;痵s=Tkgg S߇z<87G|x=NM?Dr6y9^hLS{9uX_"auX[^ezV*TٛX큻Ǘě_mhF^y^sc]ƻ'Fk?[qjwsX}Z?Sv~uyM於F.pUחG|ڽ?H70yK]w7A My^~%pk;! Ь=._HڲWFy/CSxg>Q'wo{K|^`_yW$SEu} vpZEy{ysԣկޠzHFxy>)b:^~#ojfo~wzyqx$y'䍒|y~/o᭝|^',սxKvY/x&{֓e_N›&oqݝ7qɴV'qHI%?OIv[)F#wqS=,Qw{SM4{;2:E/>7ހϳ< ϴ=|ް9|^g>s﮲_o,g8)b?{, *8e/cyیn|^t<[Ui7kZϛb7[nnO,n59uya.x=fg\|ʬKo,s෧m~Y(MYo{eY 0/[/%8C߫>oxw_9"$?~0Cx1hH-'s#2|s) #_way_ë)V>wb΋IqދzVn|y;fZ!>Uϗ|^Kύ%o{2MYד+񎑷e=opfKΌ=f'7g9ޝ7ު_og- Y1~. 㬿/%ԬO1zmy/g3јm4YTH}?jN:arͽ3{&Kfrp|oo 0{<}=};wpw۾v9^Udh%yy㓉r%兤 ̫?YLZy/;WxRv f2ɓ幎!gՓ_m5Lؓ&L'qړ #`b=~#k{̌x,>l2F|~iD4繦"(wp^C-e~^bf_8V~ f\j?">HY6S4; v/"̌fOٙ5i_UxVEf׳h2Ϛ1_@*ԊWzF"2 #xo%_j/B/-UG2 j6}|6WVlYu={hhahq"< ֳǍ w 74E:Ak T9:p?'Xz5'\&'``ܽVgV7͌c{Na X&#G'scVp:8(d:DZF.)b!1q4> gF] "j7'",<̘EFoGhhqSX"dTvEf00D]ʍLP`އ2 &BTFuGx7G(3c/.L>EEY$  !5FF#ǍFdP74U$tֹd;o8z2~ܐa|ݠKܺUQ놖W /Snpd.pQFNn6pfp oUF7$`Q^  :p ;+'C/!o' d`2P2JbȠ0f o*-# [{!—N}`X㖝 LXc3?y ' ] 83vC.bpAxa TP]=(\Z 4 CJ tnҁanv3|bfg~M>09@ArƉ0ȉP/s:a8c=b i,pӸOiRIGy?me]exMx3b *~bc^X7ý3b fȗ<Ð/:/0R33"2(!3 5|gWb1&C2 ǚ~~e@ 85eF EŴ381W:3 RTpGj9 C:^2\2`ndqVm 2l+3tz2v ~ .b7re7bN0dc=l_Pngl`n*֜q1AT9úsvW}eh7d|c=[m @@oWTާb@ 2d+Ȑnpew;2 /Mǽ3'WƇ ] 'C*vܾ<b;>B"zpƃ =TiWh UploTxU{@vBq2 Fop\vrQ s*(\0\pB+8שxUrnT. uUauꚮTr'k"U|r5TȮ/>oc [k]Bw!e 5*|W{S1_6W g|jw^*+@^våByÎ u*}wy*YWPӱDt+;`gxOT->o.W|.WϓS[ iw<*ܧ_*5ptG TO*]5*\?]Jo/ 0;Mwҡ0n{ qw@bCbc 롺bN}:4t:8p'&u  q;L<@)/,[.1pw !3gP(|zvC{' 2:RQFÕnv:;`r;zC7lbrrY!t%|;8Q_{ BՖt>;0F > P F1WdC2+'8+1ˬwաY]@g`:јW6:DqVj):PݶP͊AXeߨõݏqU!ٚt6c=tf~x'Eoԁոoz;:P.Cp CKꐎ|NMz,gpSܰQ?ux[|xC⁋;ʇ:@5?07iC^xW얭{[;鐿MmE:o\ ܁7YOW0ww*+R~"R~GG}٭EPf0oK`VB^vK^?;PH8((lw 1BGPx(8YbW+XH!bSKAb/ (P싎>*yź(\,a kYD V(Ʋ4 n(taE )xV  (,wܢ *% # A+Xc %Bq)L(("t -(He~˜V̉QZARVeVnREfzFf@f3>QЙ[ag)Lp3//|N_vb5 ݊(4v;Vp< (<6 ¢"Q0i+PvE+TvVt}.,7怒=)lv +p>W byW uA!ODFa_(@z+{pz gz 1&8V`VEs^Zcf^}RBd{{f;h;QVF[QnMp{*c(nB1 Bo, (n7n)w+܇ݬ xٟQ v{GOaQ0v'Gḣd~ܹՁe'<~ܭ0Bs (&RHȍHn;Pr0'q@^CM}Tێ'Rdow>VZRM>[/qA$'CL\{A&I7_?ϻ|CM`rIZ!|"ǧ=y9N;I p_ Sq@>Imp^_rJiS 옿o.v|QjM;|ʎvjUkvA-;l#\nx:Ǩpc < ײ@$wěs8.1OmNc6s,o1 #E;`"5ݕ_4S}?ܿKaYع0,aYkpLc9f&=DQ ۱!d1)s:,L=؟V 0G-`j%bdU:ݿQz7>Ff!ВPǢ62cboۉ0(Xvdl;7x.}1en`;hdưwLe;`k26 z"s#0 7 wL`%ϢƓdǓ cm'Ø*e[vcLX]̜j FЋYDc&Xb>ԔaO>żzCbm}\e|kl7gM.޺wpaot1)q~V9M_բ<<=+y̛#^yEMIob~Rh~8kIX7A2%gJͨt7=SpdޜLI~Oc Ğ,8_۳gz&3IJvע7iT6 v`3lZو6.ԦMl*ڳ:T`{t=禶blmH8ni;ϖI˰o".FdRA$D86nmrp}2uk-p8"`]9v ;E`́bw3"|%TXbH,439AQ0j7Mhq p.MXX] eBB2Rl%p.wIdX5GhVad<dT!h;O0cC>n }v` 9b grghVz`cT{%" Gv.]@Q=5ܫMڧۄ9Ե(cPNPW9tኸ"wo]2̸>m%rJfum+d7zy&jn1qFh$S]sЩ7ZΥ'wsTϹ[g$u޽k+qn܋?p3>ID\^-և{k=_rjpͽpq Hn$4riǤ/Cfug8(v`1bd~ ^Q-~K)0,4g]enkĪ- |pkXˠ]]Xr{b `l>Ws74fuu}Sk!n4|q>[m^r7'e`$Ws[㗹X5Gg˷qWpϷqNҹ\*j=Ϋc7wzhv[Iڎ[ Smc+ QXה@;DYfZj3vzL\KԒn+ۊkT[X^[ג$@~v5j7E}M\q=O|}ksĮnO\`G;kߛ5]zUm3rzx?Go0Azށvj?[Y۽ ERtz~އox~މHCUTջ嫷#_Y[xKEٕnٻAޖs^z]7&ϛszgJ2b9;Y ޟ4No<ӛx}NRszG):czN@Tz"*Z^%~fe2>w3v5&xNoXGsz2~R/ƨ޳MK޵V޶ޫ7.9sQ/>+Bo^ƟszӋ(>}Tϖ xW#>Zf|;y71%.fW{Sx^O|^Wײk|z/~^\л z?a<JӼָԻxz[ާټqݼ7kO|^~YFy?5o7yk'>]zOwtޟs=Lu޷;~^kn}ߺ^t_[Oxgw'_`<5. '` A/y3[y7S__h?Ro}z7?/_kv}s$y_[K|+r.H>HC|ݩ>H-#mᾁvCYҪϣ 6xi\KDse֚)*/ׄk:||2m\聗2K;#k\σ?D#p36HS8Z9XI|i.oMb=4FI~8mVI>,ƏVK6KֺRLqxB0q/׺ݹS[nmyRio^i|k|oKA8ի䷅)>A'%Y|E~h$׎{B7kH;(%_utL-KUtZN{]w\Gb&񂴓Ƈr=\LXq65zІJ,&yBRBo֝78׃m4kƠx&Vb=yk}J۫7hi%^|旴2^|Ih:qvYJph%ڎ֎6&>.R"cҺv[ˤDw &fi5kߣ-X󚵂MKyv[M|^.~+vI[ ƬZ>|;=~i&kwlo7[ϋFQ&چ_v#}K1/bs4ڋͽh36Fc |3,!Op\|^o)w(>Ͻh_&[ϫ#'_`͸yS/l-+is6zn-PjvOgEE?p_+>y>yO_#>yks;گ#m <+m3?Miמ?ڶh6k x~vnں>G'{qӕYh6pb}h']m֨C8qmh'm? mܟo_=|B^DҎ O@{:ϓ9ԭA m]s>};}6ws%ms}{3пm/O?ڛC6F.kn$XzywhgXwŗӘTJ|3^>G>Y}y/o۸a7ŧZ ~k6!~3t_v_y g*>GM7wAޟ!>Ͻx#- AN x'{f2ⷽ9i~5}}vo5 Q̓7E}';`Dyc&*SσF~ n'4͑T|z=n߹#=R|Jm3!Zx{A>ɟy+ܣn._JN>o?^-Sx>O>Oyx4_,{Q7ͩWo?s&Yw}wF/va;|}{?.v#ߪovnۗ>gos(|@5W>ꑪ?/#̷Sn]"=r[ 3U[1W:+xW|Vy%m0oOo{q+h#u9:WN=^ﯓ?,y o<+i\'og]g^~> Ti7]kɛ-Z+xk\[",p_ty a}{{.,|s{ܾϋM~)\->Jyo=9{go[B|(N7`ڿXMނqW.{5|>yƻQ|e.y-<3,X؎ڵ.>~/f-۵5M؁zwٮi$Y[O|+oʼq0]x_f/^W+̼Vupw{Un-Ǜ4'yMlLx_3yxf<}טCk[4濼G㚩Aޤɻ4mXL\Z+/y5Okj``]ޏjyɻ5Ovkz]7/ޱ76} V^*}kom{ϳ+/^xޞxFt޼7 ]Iy 햎7mKcozc{hۛF=?6\A ZBx''//⽜SŜ"Zsh܍KI{։%WM=ԁqhH!mơbok]l0./N]X^@7߁s~ 4dO_'-2 _/|Vy^y< <>V .ϤY}y6#ϻ^I ت?+[?sګVi\zt[ڿ"bcld$l* D@ ] O#N]K\ٍ8=vZsz~=wq*Uwӥ>p?eY2f8\||#.>;YF]jכ;hgqs}Sz8{Y/g~q>d?v <_Z9>я}r_~g/-o (B=\-Rr_KwSoC?/1<Ü%7 =oT1bmysg9?Zݏ8V, <><\ٜ+v1ky_{U |sޯy?>D5}e}އrbsHK{y!Pk|>WO<q{_o{f_h>}Z_>ne}WC?}ro|^,|ߜ2_OhkmW?_|FK~&!W%+J>|ߞ%+FiMv7[I~#IojxjW5YZ}+_v'Azi omm'C>KO [;|_9lg =ƆӛUO!_gC6#o?_mߒ|j;6?E>f 57{lV[y'7z 2Y|%G=2zi7N?n>o_XwW|ma9/=l3?z[EwXI=~zJKzc:kzz`)X3^zQ_ԓM(Y֫_սoRa72=u_ۺq|$E=z[}]V5zb_9`71 }S?zhULOo=U ]2Hzh?`wԓ.;;s?l9v~X>?Izz|E~/z~~D<o@?|'d^دYg^~Nd~/m{S~ҏ/觬stϋ{tA:YtMiKQ:6j.ϤߥפFv2m;/4'6~~~n}~~2OO~~~ ~7>GB7~'C_doeXbk]uoF߯~1W?,Ds~WfpwL?+?o;_o=^߯~WO> E?uz[=z*'zRCԣ⛼OUz'=^=m[lmW5^w|Ӗ_Q[_|/} zF?z䶣_B虛=z3C7KGFVFL?sW+6޻u3zFCxsFO`7/$/GO>={kQOP/ߨ7oT?<ۋ _a̿Ъ ՟@Zf^_KhSXzl^?ƯG҃d)67'M菨ҳWYb?FO? q?ԯX?ׇ/hONJ?gN;)_)T[oEּ~,;x~0Ő/Z~29P\~44՜M8~>,V9~8~9WtЯ,W?@yY~>`-'?'!ˏ|+}zs#~GC/%U)UX:-],KKϩ0N_T?)MUQ]?Uy#moa.k<>G?Vϫo:q~_yU\*-OƪՎ~eU$~fǕ|^ףzj_2UU{g~q~r)~tuW7S?bWo/ϫg{xy_qyϿ;n;N>y=|x p} ?DK\7~>[k\7~y/d9$l]&,X(-~#Iﲒ_2Ov|/8njX6C]goT+H7үT+LiN+Pz_j;=G !<Z.|8~U>~|E,_fwY?jo`?}m%vw?z󕭫1y'Y| ׏Я3?k).czyS^eˏYQ_lpŻzÜвO7~ԲcY&þ?X>pN{Яɷϻߡ߷Y7 oP~x#zUʗ?=~i^~O*W*o]=~n~~|e:_Qʫz?Kyѷ{g7~B|O{7c8׿}?+1z<+o@6>Jx I>WyK>*&dbx=ttϏRS]I J _s#`vY۪W śx4S ~w~(t ǩ7?7,G?cy@<7yO>odWyE {׌ /i_._NS~Ә{|ç$_ByQWIy7s2? <]68+Kּ,9%Gޖϗ|-:<2?yecMٱ}$wxހvȟvȯv `9vԜNAh;zײ҈kY8q/?Ƕ-7`;<[*xDQw$+n{Ca|B߹w-ti#"#>1D |UD4!In'5J'GN' 2ij,t~-A15 #-4%G.-Z$M )q[I S%3^%>eb,LLA&f8eJ'NS">X<(ebТ3`IGZҋ HӋӑ:bKgRŜ\*^bX) iE.•DW_I[% :oP,=5bgiJK^d-n)/ å[LT.rtR,^ |otB}oeIV 8]'v@ `+X2cq JƋCr dEU3_ftk⛑ w'`hzFc!T^4 R\5vp¬OVb0S華nόK/ȩsލ[V8ZmY#2HW@Y|_￶|/eaFxZPњP\'` a/@@F xM |$)kw oڞoWeF5'uynMjl?ƻ++g|}_+)P3}_1@qO~}^bC/>}> (/P!P#P%P'P(hh·_o:-@"|5@q (z$Pp(PN S,w|A"_YΧuy zU`Xg)Gx / .  7 @x'&w8N>/L a(yYO0Р\r,_<1(aQN ?|pՠ`G9?W5)H9 :5 @ 3(4OC X_kR4L|0z=+x` BY N0)aS. laPNO"`r k^,`X0ob8vEDUC3<"~AcH"֐ Z5D0}JYɪ&4G1U;w 0?1_B̊|55?CJ@ϊaz%%zzh`Z\jp:L @wO+( >K ZTjZ_bZ_b[|j;|~h8g<&&z) p+: rnXom Ǡ~" |*@n[!1 X 5t`X 5pРX 5lv1@]Jd 4P],kؠ 4W8kP@̥Ac U`2hP]r_Z k^4:ڕBh]?kЭAvi𭡌Hh^k UCw +k8y0UV[@u 1HÀC.=Xh^}1xcC @, ?yy0_^ + +xkA]k@~pcص A;vᑀ*;ni@P(x-7@xǝΛ2-@yr^> yxJ ;>~;niqd8y1~h^>aw?>@|ibÊ|a4(n,PC˚Q_ϣ@5bCb>ŝW P%P| w w?@q/x֗(wbCpY? l(iŻMC]cOw?(~%P|_`w(.Z8 ( v߇NZ;Z^Cl_    [dluyK@1j-`%M76I+ P|r_ U"`!.1<|ͧ U2<+, ^@{H~3ZϣGr Zezgh6) \mT@U#zzmTWkz!dW h mYw-ytגAkua8% b'@b%%/ G#~҈_TЈ_GЈ_D#~iB#~LFjI  IIAq0F<%?(}?8)?Hшш<6hď AyVw$hwjhwhwhwЈߙhwfhYQc^U_NxxF7dLtY^> jqLՈ|S#Yq.j9_g{z4F"S#-xWaF\2quh=w(шU}hīrgTﴤ@#^24/}Kh~;W3<ш>E#DC#>҈o߸8hZD#fE#>3񑘏K*4|~<ޣ(Q1fq %9:Sգ2&ш hGgnшrQ|F|TŬ$b(hjG%.6AtQw4⣌l7'"шW͋5҈&5J1Qt{(F|>Nm'Y&xS;W#>Jܟ?Q?P1J4نp~] F|4=葘ɢhGżE#>:4b>63ѣ!dd$yt ?fg3LR#>zglʼnyG&sS#>ZaF|Eh=0Ѻ J4UH/*fzGզf|ZhԄ}F#^hx<1K#>ZW<zs6hīwV4?ŷ3'3{Jg먦?zz!~95M=~ihF#>[mI=#f'j/ZԼG|4[O1 =!hG29[_&u AVkLgqmnc&X8D9[7165?шV[x/3^at1z_?5!8Ԅ13!UԄC#drCㅿf!@={JKJjćci̇)Q3c>AI4шJ{ić%O錦mF|hghنF|Hv/tHaI2yH&yF|Hlf!_)ziħҬh.^A)ة&|(hħl'2ٝ9!m;_&#F?T.ш]4шޥǃ:<ш_71T0/om9F|HXˈ75?ÐB65*F|L-nrhħSMC zA#>$3^c>G#[1v5шmb=ẋ] P4#͞) n1҈q4шOir%>Ǹ&шOF|F!x"F|'hċF4x*]Z4#F=5mG={JG6q㩆|̇d ^E#>}ίqQC|PG}thcjߋ/4EL4s=|~шT>Cg\_dbćc>TϯшSh6?񹭨)^G#^Lvkhċ554#FS>5!4Ś bbO<qhċ54#ϞbRф/11VqW>=hċ9c4Ŝ0R|f҈shGf{J]뙃҈sh1;F|yшZHΜEAxI+η4>Ê̇y$ߛj1FأF,Ϩhg&~/4WƯ5ш4Q̹Ntg>x?Fcb,b̓G#>o5G Э|2D#̯hğ3?/}=AOhċ5v4Ş4Ş 4eAFyF|+*ve> AI1q4[惞Iш?y4EB4s?pQՄo?D#>hċhċyP4~p?q>mB 1й+f/m/Zu/|/BMш7SuUy3W7b ~tr~F| 5㾶#шJ#-hLٍ S:hP/mAnE#^T8yRC> p4f|OߟG3xYhGЄF#>xj4ш&hF| 9CWF|#q4䳧t FDzF|3>y A4pO537hf|̇8/h긯[MO~~nEhy,nVaF| ءyQaXF\9D#^^hrP>yqқxO<шc1,qhDZ2hDZ)q4шh1r'c]P<&! h9~14GcF<x.Ǹf|N!шcqc\'伀F|и'wG>Ig=F|}D#^]}yh1prA#>MMMxM~ $ 󸟡Ǥx󨹣q4|I4Mj[}xO/zш vq )c>u[8vD<wWYf|̇[ \4#F?'86c>шcBy=#F|M~ ֋8K|-9|F|Ph6x^f~۸' Y4ljGP4c[m?È9VG5m'F|njGAmsF|q-v=h:5qk4B#>b437F|nc,ϞҪ-F|hgO؆vJ^4szi6Q4#Fs>AG#9hr_f>oćQF^hF#>F. f4cُ-4}шWGhDz*x\3>ycF>yuAˣt{i}0hg>oh\_l{шer+Ϣ&|̇FxF|,hg>6=cf֟hG)L1Y4U"3I1ک|be4#>Ԅ(F#>] }~~E#>q4ш8s4cY~3ߢXhvzy4|8-s{i2҈e)c4F C#>&|̇~1 F|/1h| Ј8[4cZ1vh7E54c)/w5%hg>o,;[ЈefS3>՜|ވϗFh?Qo]?qk4#ԄϮ hG!}zzD#>4-R{qF#>|̇:,U1}  a=F|.SẋgF|,KgV#>GшuHM 獸o5c>@ш8g4#>ԐpA#^шe/6 pj &|_zE#>̯h2;S#F= E#=:i>:}Q`#GЈxigF|.Ѥ_iA|\8F|hg>oM G#>ẋ5񹬟-V鱏F|K>/[L |q4,ш43|~FFjF|n+/̇P4#F# 43O;>g|Ȯg>Fӂ_4|>hğ7F~|ш?o4_V3^hğ'*E#<шWQhfMJ4s~ OшD#^[/~쏆|O<шx7Y/d_G=EkBiшHՈkJ'aw~D#>шD#>A';9hGML4&yFky>|դF#wh//y;64#gΟSh⃸q~f&/M;B4?hk]<шϴB#s^F|ш4I<Χqhgq4шKhI|] a4&徦f,y2n37V{kjī4#|^y37tx|ވ3Pc?yU@#vthj|H۷/8g FzjG\^?3F|'ΗF|'W[шߗ|,hFڏF.\҄U14xш|QW3>ΧuS|^|Eo3wy;OՈQG#>J|^|^7VF#hG~1A>oS=#?/o^/D#hG4a^F|[G#>|\qx݊/;_F#Ո5Y؝;|_ܮ98шYhG=hg?M<7hg@%/|x/ш)hg[|ώF|KР?ң"YyiG}fiG}"_F||ެmGE] 8o~J<'E4&~F=,hG\^|ԛOhċ`u4#ԌzhK~jgu!lK;G}D#>y/Ј8hiV#>뭕xԛO|l3|ig[b^zK 9̏hgF<~zf`ԿO5޼E#>7ш|'/}a/jF|G4 Aш6`5c>tMЈ~45zrE#>-N^AjGFhGǥ&yS3>/6hgI!t1o4MCMvDZшߨш(;ЈG|47y5y5s8;rIH!Cy v=riEF#~ㆂFF极Ff@#~$FiM*${[ q2^W<Ȕ㳂#~K>ZXrPG|)#:?*?8?䗇Et0%7 Gx5c#~Lqyp,y8?hN#~#~/#~YG0,[cq6j\jjjrራ##nO]M.Yjzlrwjrw|Ռ.G\_9L8ǧ]]ȱG|qoU };x\;x|;/5)Mw9py>Sny8] HGjS4ҾGs#ﻚF?ո;9#޻p jwV9w53pĻ8w9p#jet8]<1w(_p\ 9G~Kny|J#ٔ#xooKx;}=553p#u^vw- u|Jℇ#4pҔ;<5Ҍ15!9mЈ7{7_8xSxpĽoj7p[;Ԗ=>xs Gܜxy# oGY#|ሷ#ђ#8>o&GҶ4ሏA?;sluqwN^!4IUp5>pM9ܡ^>ox3)G\qkr+)9r䈏S G9G\q}>Wz0)GR#qWr+=9r #^jCh刿c8\E}8\xõb8\+Ƨprx|pG|}pī,pG|}_pīFpq#&DxnC'8UO8 JϲZx5^7%#Tp#<1%·hW=/ 8⵨ZxՃP#<6W K/O8BGZZሻԜ/j9#ap#~&G|q/q=N/#^. Nx_G<{s8!G|i-P4op#G\΁q r2 G\9\RC~O>OΊ^ܡGWrī=pĵ#>λʝד|^UGz;tzϫj{^#><3|8"$GY#nz]; 9r!u627;ғ GZ5A.mm|'G^rp.9p豕#^FwrS>-ЭЭ!GGN'i/';&ToPyKN>zjr1ሷhƯs|oUM;<=79pěa8z}#8opro]5<5p[WM>wȞX9gW>/&x# Gɥ#v9v95=;];<5\pě\x8⣕<|z GpG~4|9zGa#ޖF|ޡf;!=刷S7<5apěR8 \9M9FExs=rp9 M1-oojሏic|$}43|^Фozbojd-GQ_#zo\o۝|^s}#n555p G/#g;wHL9WC~exy]6.x'[xn&|/x/jr/%8]8x9<3hr[O#<#iN#_eqpĻh8ַw8]3^jlw9p{[Pj֓Wp{U#d#n=Ox G7uWp{ЈzaƓ[XpĻ-8!w7?/8xoIx>.GGI# Muy?9⽩9O>75&#޽/_p;rĻI8q=wo#6#9zq'>߉'g}\x^ G3>G;3>χ#OWy^''|>?_y}i{>pG?#<#8>r}~G|;1Mwq>G[ϿqNOOSxSG@#4>a8BG]h&ሷK {yM4[!5<>O$G#}RS5#YO>#(oj7X{rěh8Ý|^SG>G:Ԍӏ /+=/#޺oyK7<7poOpěF8⭩y&G_js>op[Ј|F</8S#>mx·*|N8 p9M%&x(Goy?#H#6_?'fq5rā-8i#&Q89zw}#~q#~~qOpZS~$4HK#>jG|#~<+"4ߧH&i{i綰&#?q8ٛ8rհ,G&8̏W(G\Nq'rĝor=o#+G٦?qMM6-_p8⛜r8⛜ 29f#^(#^#^L#^G3>ΧB>RxYxxp r G|u /kGPq列CMuyz//\.7x8QG,yy~;9:9rċ\y8EO85pKSc|^ G, u8eq+*G-GGP#^p ;rK>lpK>//M8K>o}mztn_yK>oS G|>92/ 8)W=!K1a;' g9⛞%pķ~G|s~ߨߨv5mԏo01䈧{q7;r7]rķ< fIG|3?G|kj<Oo0Ho_oV'y#G|3 hO>o_RV|o=o?qķG|CS/G|-G|Cn&G|CO$G|C!G|ТAO>oyi-Lc_-՟>T|ށ헿)_KK+{_o/a}hkhgEG=Ccn9LoShƏ[Z _{^/I2_5M3~O9OkG,yϑ)xc] c,e |4gcDS_JO___: endstream endobj 137 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 141 0 obj << /Length 1785 /Filter /FlateDecode >> stream xڽr6]_Q MwLIԚZl5vec,xH"^]yε9~NbaH̉7C'S7I}gvhs\HlF .4m5+cpFc]qAyļVBv]B> f=歨2 ΐ.ʟnzv|>\ft=J1V1V38SOw3KuU|}mD=XA#%5Ѐ0# ߽a_b%`-=)=kQӂg W )Z&ng| {J{(gEp U5!}R(+ 2Rc8$rDA=τ4jJq1 T j2ѐ6Y ˶f7Rb(j0'Bq[|ǪJH&Hrq0e?7WI|"ˈ.A9"oE܎0ՃJ` +Α]Md"/À~yt2.꧀2Ч|緩@ ܅hZM% `|unG)"J w{]Q0H7g{#i)nqxYws4';VH\TxD4H6q#N]A(DV=*zrTo;W 37>zTFScW*' VSwH>Eg8i!ZHmTJsTc?$}S;޿y endstream endobj 145 0 obj << /Length 695 /Filter /FlateDecode >> stream xmr0W3EPomtCL=Chbx]=8aao-A[D:Y])(J$9 TRZ>3^ig`GQţ/5|ɶ鲇ꊱetCr>0E PLi+&ՋϑUCv.5c2B.$Ɛ{Ki|*#Kz+霥t:ɷu7#(Z ):z=ĒJwWr8c9 "h, stC<_xq:)B12T~[pmŌyns]t&*yv?LдIGVٰie6&S<ЭCh ^mm'@n7wT[ӏzĮ(2r1e([0WP?'+.I95l\XJ:BfKf\mxXGmg4T!Ydzw{ TI9u|>J5,WwN ns쪟B^) K"=8Aި9 zc!]P^a]X? .J9qNG/ف)L8?30 dLӜb}&kMvΐ!UJv$z2WҺ<ym|w_8su/ endstream endobj 138 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./crisk-stack.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 148 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 149 0 R>> /ExtGState << >>/ColorSpace << /sRGB 150 0 R >>>> /Length 30763 /Filter /FlateDecode >> stream xMr6bAIEr@$@,'Wx$#z82{s?_}?W7׶m?w}_=ױ}ç+e_}gy߿k߿~߿}?<9ߜ??_s&?q}5>_lC{:;H[:۞F:v5[:vO."V5_^τ︴޿~K+N;/;at~Ưy:vѯe{u<_r!1~]'\J8گį|儣{ޟv????Oy.?_.{>}{Nvj?7O?k2|}?}' Cw2m}3C9^Όr׾e㝿F:xĻ~&9MZ4$43(Ǜ9޽j=~3A#wx:gF{&{S9Ժ2˞QwJ2o({/!ƯsdM<_g~l9ރQ7SQ;콐P~mwF9|Iu2%/Kvf=ϗ/6/w:όre <_r x{ܾm9NytxJf^kney_%^yco{kq?wX}C`k5z79O9g>M6v=oOP>[}E@{i;;GArQ>O|ԸMv?6q=sܧVv9%nyAr][ǩqϜ]ƽrkP96(qGN Jܑ95(qg|I\{o}`퐸L Ar lP⶜tkܞԸg΄vi+%ow`J JܙSbw$|}`JKL-g%nA5SdInU)Ή)VSlPΜq8s\ӱV"sy* M㶜];g J+%3JMĽs[ةqgN V:oS.m0ǵ>5v q64nInU!0S+K3'%Sy)6(q]#%wjܙݪ]`Jw/ qys\+MJܞ{ h{`NdS`NI>J)s\9j.0}9ٶ I%n$j.0'Om+$Vso%%0'Vcl[d9׊tSVcI $JS`N(vI,O?l?P^[m~ISK[I(q$Vw9`{ҸWN J[96(qGN Jܙ|w$xlqHO?Sĵ"}(qm96(q{N J3'%ÊKĽrm*{$" @;so0%sܧ*Oɶ׊C`;{H\+9~r$ٶ"ئ@{$ߠ=5%ɶ[J[|+һ?0'V_smE.0'VcHosV%ndIoEz5qOIǥq/IHޒ[ I]l?Uĝ[~Is\+һl?0}l[m?P6Ig׸]vIH$ߊ]`NHޒ[J!ɶ)I%I~" Lq dY~ Lv"}o$ߠmd۠=soP9oV)0%͊.0%)%IA;soPNkEz>exJ VcsM㶜l ='%i %fE!P96(q7+7-PN;sݞ2<ǵ" q2|s\+¯2(q[N Jܖ$ߠ=so0%͊K`J J;'%fE.PΜl3')s\+O9׊S`J Jܖ|$Y gN J3')%|IA;4ɶA;smPΜ䷧*qօe0}`Jm!ǵ" -'%nIlgN J3'%fEz(ql7+O)6(qgN VsVw9Sߞ<ǵ"=4nIlk\7(qoP^Wh%+;5 渗 d`{9%[5W+{j\Y0(q/+%lО\V@ƝW-So0ǽe9`{zlMm+w35l 4+wW}i\Y0(qeYĕuwh\0(qegY~ IYhC6 dW J\Y0(qƕ Wv]`N2\A;4L`0ǝN`0ǝPЦlq4+қ?eĕk\Y-0(qeĕW ڼ5qeǠ͡qeˠ=eĕ=)nd`J }eW>V .pcmWv5lt+/ y`P^W J\Y?0(qe?eĕ)ٶ}wnE)s]v q[N J\A0(qe?eĕҸ` Wv1?9޿ ?8nO8}O~O4~~,9ߓ8c'_ߟ /ds|@:N?q}1|/={:>{8m]84[0~ܑ}އ}Q>os\3<)3%#}q>}d~qz9wǎ}nqܾ/&ךݘRt||ߙ;:~+qqmf }_;?>1p3Wpx;47qyr|s~?&A͑ |#r?o1&` ?s07;bysC.:Ay3K&>OG|ﹿiy?olqJ Ska$v4BccCL1Eo[9ϋ0/*(ǏTOT}zĿvv9N|x\(,wf~4nbU׋ZǍwKbǝI|zV|@98~>PZ1~#Nq>gp3g|O41|"fwUoW'_[o H ~qdxWr|88i7qW}A|x\9>O+88:>}D<B:?0?dKt@7S;;Csְ:ވGt~oČƎ7b O4wbEK۱?6oNwq<74Č{7/b9aܯ#Hkb`k<_>06_">ϗ@l/Gv?1>1 }1|1;q}ax'f|䗘 9ވ_L 7>:9c|q?bߧE"ze'i뉉|bTgIFps@q=a?q=ax#f|`Fc zac}a<0\u{|3:9}.%~b8Sc~~0T6󃙳㝘|Flx?16pǍq`x'f|\?I/ 037bx%ؿ?HpwzøP0LjwF|P;>,7ba<p܈^p{gLj#~9%qrb71z0]vƱY0piG&Ou y I}Fl¶y-wPv ~7z% OP3qD|Y?q )̰rRfg2?/!mNJW3t6eA2r\^* z߷K3kr'i2猓9\M2g g/9q87Ո8'2"MB䜨ȦLɵ0ө/OsN蹐-N˥OL2m'\p'[t'D8k _F5d,7^}}^V29>/> u7YmNx׃ԟϋ<-.dJdJd?,yv{O8;eyf3ad[i&w&Ln$E&{f'v:̓W;6!w=yjOloL$1^ڱ52Frd͍<[bemycevdHt `[[2kLOZbfv$ܿ4s inL&4&rgh6Ta(l:svO6lhrW^%qqci6؂7;vT1f͎ݬxcskQ̽yfd;p@5 yXdou]AE'6}b0=tv}_pgmɔssɹ_;s9ًdʹcr˜;>6'ۮ>6>Ư}йǶctni:7~}Bw'TƯֹosŏعxcvnwzn;&}l{c6`ƒRn=[cE1ycy^(cч1^F\Bcɏ'71}1Ƕ|c|DMiGy2a} 14#<쾏H?\c[c0`ML돛}l}}(}I>T$ff% ʹJjiʹ qøQQaD-YFd}ЁA%bI n$&G'Gq^Ÿx/@b\|@c\1. Pm8{Z *y`:F 2m`"q^@dDI tMF$P=BeUAŔq^ j+Ľ@-q"R8q/Pet TyGPft T/cFǽ@uq/P{f@eQPft T9PfHE&"r9 Tl!RkgH%"uzFǽ@!5~T  T YsB* % Z4Rhu@#(9zH9!ՒsBj) TZ 4Ri0'Arڐϫ4:8Zv8(`NHݩq2Y5< h5< w5< 5;{3 8oqC ׯh`cׇr+6v~}_d9!sB T; 6R)m0'`NHl?* 66`o?* 67`ۏsO"^jv( ;L>6<78OPRcol!SxSxSxSx3 =sCqGh_1.~nh rO>렃xO;xsM {A{Qś=3lQfsʎ7{}/T! țSm*Jރz=}UysM%{BPQ#fG͛ >}z܌ں2woc{{sKMߛ-)'_@P 9⥖}toR|sK 3߀±=oBK)Ցoܨ|wރPVI,9-Uk7lTt;_{#V57r;2(PߤwRnȟ`}sJ}ktBn}7FPξ76?}sJ;"yߍԾoLnp#QG|*7 #Ba(orn~GO*$6R7>PPU>+W o4~N~H%LO?yoN+@hVS7Զw^HP#.M Uo4' Mߜ1oorG]&C3{O\B{Mb]pYGg+r\W$ L8tB 7k2Wik>3.lq]b?$4r.\q .&|-zb\ZxYmQwӋ"CNknI|\y!"!;'t b goX/Ҳ`irqX\\`M,T.`rlY,[..:Y|ux" 17`sq؄žlgX\WSV6 GBb8Rι8A'K ;W%; X\ ? l|.r`s*7 AWCtt@"6E_0Hŷ.c`tx*2:pN"kGsX4];oH%ӵE",w**P[*dlS]a]um[kCOFCW}>e~sV|\g~}wGn-}]~{Rߡ~^wv}w%G9М+9s549oԜ9vjWU]۫{~vjWU^뫶}վvjWU_Po=zwA6aNPo꽰z3wCvbPo=zSwEcooz!-RGVo.&z)RWVon.zT-SgVo6QoSuͣ=gQoTMEh>RoTͤMi~oxKU՛J}X;zkU՛K`;zU՛L˪}h;xUxw[v[zUo=zөw][zUo꽷zw_[zVo=zfm;CFމ[z/ތXWGޑ[zOޔ]Y-WKƬޙ[zoޜY=WOޡh]IջzާZSj^]Yջzޯ [cl]i ߟO{V;osnw97q{~p{~}~ {߻q{}l8p{}5z2{}2{ q~{0M{bכv7}~i}4z2|Y_oZ??{}>n8p}m_oډ3oG}|M*G}|O'_>$zԻ|}?2>w|v.n7;ID7%;QΕ':'_o)#/`+/=}E|oC=̗z?OuR#2|XG |su8XV拝$'~~|s7!%泱nCÆ/ͧ;簑o!27F߯8{EЯ8[G=zGHCIZzND=Ϩ?Q/S~jչX?^szZS~j=O7{wYj?d$DZzs(~FzQ#ND!c|?A{W0~AџA?!D2{wЏgGNq;zg=~HNJSzcϠӣ`G~Ny==%uro_oz MEޢ~UoџA?G~W2^:IF/3g?%q=Oz̷d|/{~bb;ZяQ_٣~g?s7 ~7/= jg_kc~oy(=ܣ~s?lN&_{{ Fs$靋'oK~|'E1}~> ~}9<_8o<|s^) wtJH0$ƼGND̋+̓q}p׈yUgNG̻Z9yemyZ1üE?6cy]#a9yFZ9l\y?y~c^G|~_w;_ &_]0;t!CXH4 >Eo67'_]_0>3A/i >I|OQZWi'䳴.cN2 > 4|'8Nio O @ ՌO"$ߨ|F٘+5Czwj/բKTD[Z|Zk|FtZ䃵o/'ko֢N>Z# O Ab,-vWlG glG0{oixtI`M"zl +m'LN`ރo#Ǐ h+9ވ=S(FSZrv U*x~aAlAI:i$$n8y%01ca+d8+eV/܄4 s3@߉wޱWI7pv p5==s}Gl1>~  FX)qFwi6.+J:N- x'zh/yD|S:q#f=H Rø13{ǰx'>q<}QjFq<XuKiu܈OĒ/zJ=V b}cwna[0Xf6!v;6?cC8N+%wX=c3}F|<7ź k؊tbw ヸxn_Bbڽal;nV/a1vP2";" ;vAq8_oq>6 |* q> 3>$ČĎ~a\pFB[F~q tI1uďe<(_0㤛IVcc8ivIpKI/q1'[#q܈{!!d׽ è8MxBeo‹ad F#SPcĻ">xBG/:HW&q*J'TG3 Nxr~\C1>D G9Ͼs?SÿE|BrXV=Թ&Ejn9I.K^Wyo +S?h)uFjQJ9t~^2 9_tWR%oq>ZPWBu+{yߜ/<>:c !rm9Az*9y|^ẗM];K_WyU^5E=>c{'ME>;h) f|A,SKSCJbƇ|$t oČE2 |~$:> ww _ЉwO@}$f bԎ|'(-x'f||5[֡{\Ο0E1jf  w_߂s ~LBݏڧc/gZ[|-oSs?2?to/ANw_wM!QyOQuߘRyOcImXا|@YBiHcԥu3>ھjOhA|w}oC|3)Qد bR }p?G|߈ :! P.>}ԛBXWCz`Z ~$,E}$nد Iw_پۉ|zێ7bƇ-_b޾<'}$ύBC qߟnVl4Jc#^G|'P!p 8yOb uv>}FܰϏ/7uNǿԕ}T09hFܰOm)c)a3P!o-4/쏶?_bw=No }> r?">?4Čgqл 1Oes6d{'sJ7S|#-`+#'=\_0p=AܡϏOoOw|N[nzLb" ށƁ-=vc~ ;sJәɫCσ6H/`2g8kfQ Tfؘ@ 40)lI˗I7>'疴Ԥ̌rK4 'Lf0:e)xB\߯/99kqƻ٤,& K4oz2f`~Fmx\|f&;u} I&]A/t4IdSR3|0ٰ?d{J3{O 9O0y>IJ9<&V|kr߬k'Mۚu:]]J Ehx.42Il! .L$f^c"E!T?e6 MM>z6= *p:-#^O4`OxM s.[7Yty%<@A 1^{/7HՄg~~2%p=<C*]HlwppOA! ۖ2>! ?bȔ;187_518 4?]r4MzR8ʁ&x^vTJr ޗa"_A) xf 4oyS>7)2Y@¿z=oxs 7e(zV /ћK 3xlŸxޥ7kzs57C&WM _ac& ެ)JEb4^^E{QvܟX~{"[p׷xsGVʵ[׋G.~5 oݓb=yWUzO4{r(s݈-^,$8S})}Ea.7qv%ޫ7wP k3ZC>Gz]sX|]5ף^:׸^S~ާz]\gF}g>ϯlK=}&.,>\> };F?ݔ[N.CZ߽>OzJC-rޡ9IWr.y@)Us|,ji_ sި9e7s.y䰚.o΋5gtε5]_kZ/ZB A>KkPKZMk˵։ZCj}Yk\jZ\j5ϵu^ϵ@侂j?"*J#cis&"Ji,i͔Mi딦Qi'-&iEFUic&Yi-5\ozõڛ\{ӵڛ]{㵷ڛ^{ֵ^{w_{k_guvtPguvQgCg#uvVtRg3uvSg;GgCuvΖdTgSζٗlٝp-&٥6Ftf٭vw :[sMkmw:[{ͯ{T-PA&6TCFToʽ܌܎ܐY%=ܔܖ}ܘʝY5ʽܜܞܠZE=ܤpTOUS+JWrU_Vc+LgrהVoWs+NwrW 7rWnr+7q.*r+7r'Wnr/+7sn*r?+7rGWnrO+7u*r_ 7rgíUm]VoW-Vq&e6WsFWʭVufmvWwW-y}ʝ_ʽuw`-݃.nC}uwbݭ݋nݎݑuDwOnʺ-uݙuFwonκ=uݡuHwnҺMuFݩVUZwt~a;VwYM[wtq;Ww][wt;Xw aM6u7Rw'neݽvu7TwGni=u7Vwgnmݽp-u7y]Ftݭu7{x-u7}]|ݭ_vnuP퀪-P6]U`FP턪P6êݠUaՆP툪-Q'6o+Tۢj_Q5FX;Tۣj REH&YKTۤj(RUJfY[DۥjFFcL՞4vjTUGsNީh;zkVVo7~pw\[ԛz׭v}Ww^[ԛz~Ww`\՛zކ}XwbVz3VQ7dޒzSVR/7fάޚzsVS?7hޢh&ޥ6UZS꽪ެջuvU [c=޴ջvU[s꽫޼ջw xWo{Xwmz'Wo{YwzGWo{-5<24}L|xo yb^Uygfǿŋ}^~/#>5L90Ua7|ygֆCacGGr?v缜3~9Ky>my-f><">;Z 惆yEG/'a_G?oڂO|0e从ϛo0_)Mϧ o)߶6+1 kmoxacFz߅u7oQ/xт_zy|36Fs=d@|YOyaèz0C/z0ψwǬ:Qoz;R=mws^68iG`zo~oc?D?x~a|=0G39Og;`? qg'6~ߘD?=_oo_c/y|ao2|د2~ΎQc_fi6V_7O ѿ7q|L1A?7hc1\_G_i|u; ~h ><-f!~OЏmg0^~a l3;b~uCw`?ǘ_nQ/ސ&D?Ƥ!~oO~a7|аGn 9D<0; sp >>8/')ü̜<7ď/9ϘLNq'M9̫ ieO̻ 1;qm~迃`剃a70|&>a+8& |?K/:Ǔr#~<0Os8(?1A #%VlxQ;mi'ze۾?,-Jw!-'0qs90wm 0 < ~0}E~  3F>4+ >p/4G==Vh[ >a|崸#_Ǔ|0~_0W^>izx<;+_׆\No"~ޱ?>a73|&>az[uz#'4 ;{ 1+|FY&aic% >aoiĆWi@->= Ev ~+|SG%m?ć韗/k >큵ߗokc?|]akD;> :#m3|g |h[|m cpN>#Ǿ9G7}k'>agH# ߟc7 ~5؃o 4k2 o?}?b_0Gpm>f3ubs}}k澈'3þak܈"{L2>#W<>q>͉7؇1}qa. a/ؿ0yA徏]6?>_f1seC؏¾כz8W |r36܇:nWq_0ا:þ]x~`[cs ľ_|'7b_.kOfNf~}>a }?xľ#vC->[h>a0 'ߖſb?Ă㚱/V}GOF;ſb_'<~#~G}sc9QGs07 cށ}SO>=Wbㇾ؏}X9=>(5b+=돡+{^~>a/ >=|ƾa_1|_t4}3nisi0ؗc' s!~bp}#c6c,Es/o~ WCa0|_O~1 wO>3 ^a? c>^؟=֑@_;?czZߝk%ޡz Z`ȟ}C|y`5 #?^v?1?Л0|Ǐ;* SFOޅB;ek,5^8w"~B0uď< 3^G7a~g;x7I|xO+1g=L#R<>OGXpr^J{RGS0O~cxЛ1'=AƩs"~л~xѨ4 r6z;qCӄCz>?/d>PB,@~="O;B3vgdzNx6ܒ&%)ޒa=B0kZs2CiԧaA/zQVt3So0ؠGe =+=+{ 0vu_zYG-i>/Zu=.<q~|Y5Cs_zbq~7fuhL_fBx~gv BC^;<~BopOzlq~fzny, Ջ;OO=98Л3 =:Gҫ3#~ #gqø~w~?ޤ?iJcztԻ4 Haz[XQOvBo}Bqf<4x⏈w!~B}JZxa߯#|zaO*ˌK5<z7zGR0{2'` C/z -7{>4h S?F|gkeUCzqC/p=bߜz{AeO^nG^xoO=`x~B/0]O02k[Ҏ>;}eN|x\Cl[X/QO4| ӫo[{ލ@/0OX19 Sى+wƚyxB>3 S'^ciBm+g?|au?|$}{? ^8^ o#7ʏR0;?K=tԟ@|+Qop?ڏ#{|nЃ7 }_=y/y; =zxAX0g^a\7 zY ȧq~*2c8^Xq,7W~ǫ Qxꕝ>Fx0w2zp{ۀa~'ߊaoZW~.qBv[/'ck;h _%߃m ??EamFlvV=Bxx`|ql_&p C&C"ø?`Q6O8Y?#ø~a$cm =0Yxc'ze|L?at_l߁'Az0z^M`V{hC +&p2*х. 5kR;'ၰ89S>˺Aq)w0:l* |Ŭ2L zbG2k_}2n2A3$ Aaf O3w<ռ1?f߿e.l3wX޳EJ n*|!oy=njKKpV_ ?Av}El5)I00u 'ZOZW?abj5KeѾLuD8;.Wp.Ρ\~=?aE'=qxAw a;tۻ OJxR>dz ;y .8GrKx5,|6"/] rf,nEKzQ|],k'_WzX.R M"POnrCA偲 Tw.Q5ZwtW2N Uw.UݵZwtWr^ Vw.Y5.]uMwܺKvu]uOwKu*]uQw!Kuj]z.h]wIu״]պ˺.lݕ]wiu׶]ݺ˻.p^wu׸"]˼:.tݕ.Z]캫]w]o.]^w]w݅.]_w]Zh T-EjZPV-ZZ Uj9ZQ"V- ՚ZUjYZQ2V- ڨZEjyFC@VȪ%Z#UjT-UDPVʪZ+UjT-UE`V̪%Z3UjT-UFpVotTkjTjP ZTkjUejRJZTkj1Uj=TՊZDkjQ-ZUUjպR-jiVZ]UkR-jX"ZeUl:S-jZb+ZmU7ZoWV-9՚ZtUj٭ZwWV-=ګZ|UjZXW-AZVjVâXZUqjT-ǪX V%ZUrժT-˪uY0V檥ZUsT-ϪY@V%FJU˴jV-Ԫjjb]ZU˵jV-تjɪlբ]jU˶jV-ܪjn]zE˷j.ZU+xVEjq:ZU+yRVżj5szZU+zՒVEjUuպ.ZU+7Zڪ]WnZU jZ5^Wr2ZU jZꪵ^WvrZU jůZ5_UZUjWUK_կZUzTK@U^z!TKA ^a^zMT/իB,E¨^zmT/իCkK[%q= `IQy)~ HIYGCߟ5?kMy/8"!I|_ >߇5Ok| `BGF{` ȧK|c%>=,/&|o&| |X|Z|\|>K|J|7kS,QCG=%X{"(X{=Y%׋ ̈́[``^O ^ ^1}}*~o#_b*"X{?&^{?'V{?H?J|7 ޯ%X{b %<4>y @*p)X{4V %sK| O7jno~-^ >~)8{ߤ^<#aw>/Ix/wW8Ix+78΋Rp$Xc^%X_R/p&xz{ߥ^OpW8/LzFKyf› 穂sylCc1/W8og]Ky`W0Ozz|7W7, %>%> ^z|z|+z|R"XZ/O#Xq޴^,B 7, J^Iƿ^J+c%ܵ^+ `5f^_M+ x WKz|@z|C^!_Qp{ߥ^!_2V7Lz|΄wW77Oz|WסXO+8 &|IB>M?KSk.ʂPWȗNx/wNxz|n^!\pW',GO +'|JB`ߥ^ _&ǷI}z s}7W/ا,񱏑zs}+GI,Opz2 7Wo#XR/pGp$zH_}%^SCK%|K}+I}.^>&K}[ߤ^[‡ ܗKxzvw9~+zs}BXc_Qp%%>^ᾥ]%~/  >oz5&e%>qs}`^>s(+g ܗNI}k+Nx/wO.8+Gb wOxH}oo/z %_bߴ^`W XZ/@oA+k, LR/@OB УHze5~k= zz^^`Wpzz! %H޵^`W"X,|1VKR@%[ УIzz6^`Wp+ , ~޵^^`W7$8ǧ^zG O$K|1%| {JzzQ79oR/PJpW%o5.[ٳXDA4_ UP^&}SWN'j">.O>00Ox}}|! ч }lu_ fW/, |% ч g< Nxߗ}`oCD_>F_>G0gBEާ~D_%wi2M0wJyy/} _S/S5c5Ns`>YGk]_>^ _>_p }`ox}i ѧyܯB_|0gB{`0y_{`מ;|%}A{ `I~/hh8wa+W2=0|A{`J}%~hJ_^ 0o ڃW'c+9-kt'wbǸ/߉= 0|E{B߉#cwb/ _r?-99єDfw4C覢 +GelGX.)rtE(Dvuuu5Y͌9`N`L`J`HGi$]Ȁ|xtZ&29G7M9.c9;S9;C9stѨDrv~߷3333@G7M :w pS8! :rh4q"8\`f0|3 &$3?L n37bNdF3nә tfm4fPG ͋:.C6ΈFO'2`ԉt~tFk:5ut|[Dg1SѨDj4;q:.4Q$&~4Q^c1BӘi huA[Ɏ. ٙLcrF͎ }Ԍ'23SLTf`zkGo*2IʠLeN6zwto^K\^ o4O.ow/o8,_ϣw;?{z鯱/7PF?]x j?i endstream endobj 152 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 156 0 obj << /Length 2387 /Filter /FlateDecode >> stream xZK% LkD$NYX 0كږ۞,ǒggQU,R{=hIVWor*Y.*㪖ݪ:+VeUzخ>F_hߞ'.ʣtÿy"oӦ33u&"̢V~3-HӕqS.w,8mJ׵\'7JuZŧuZ `m= "EU{v^DEгvjgQmg~SRL\P\a[t(V Y(?‰%KL%\z9e,:Y VF#؁% ;H?ALeżhާ"r= ꣈}e2pW(f=YGjQQ~K"<(]0 ]0}@[A7 D[rat64hЖIY`DB4fkuז۽sf*'k͍e4A+n;Vt~P!/Xq ,0CošW8jՁ,| PP d~R:e8kl C[EBFKp:aøyK~ؓ{cZN2cĥ5*]fdBKK#Ef;aMeO+\߰^\6/ H8Ƚ:;I<ﰻmCRt~m=0[iL](=k8>L&,X]zcrR,Hon=6,R4_Y jowY89k.Oy*c[+H?/h:LaR Ptzp<[;9gǾڀ8_糞QzG3a[$sn-#+ھmv 쓛`V9WH^] lͯ 8o Ԁz KoVT Rb:x;op9δLPd'jY;\9 șj7t0b,Zt x5k>r2KZC Bz06uA_9k6c򘰗lC^zu[{%Hi P\׊^Vd$) 5(97gWf5 ȧmIOk^f)q}sv :єү d}uF+]*u;40RgF"r0y6Q=a,c,z^?^+YW Bgg,CZ8fn^P{R3saö ^]>sI " MLXȻ~$\,;pOE L(jK]4UH^Rs{Bo{,4kUz$(8ݠO 7xa jR:Z6Ԋb3OK*8Cp9BV6y]P ԅheM,걡h"=;>Kll ^Tѓ1> stream xZ[OH~ϯ- COv.jz4x0=ج w j["]u\ܪ(&cF1Ϭf͔.)KLi)VL=Кi[tc[f,n%3#f.lDdht0zϼ >b,)D#Io4-x?pP ـv!@xGPH=Q'u,@1 @%ǂa:o 0Y&PB;wP5Zf  ,P v'X+"2B@U@DIhR( }hނc= `Ț46$Vxѩnj6 up; c< m\e8.#e8R0! rgc7qtx :ę'ڶ7,aygOXiyZSyI<"*o~˻(J.]~_:WZh_ОpeF^#y5S&#>E qiȚB3wp,zvO5u~V8)_vעEC{E.%_zBU .W#ܖ(Yu&}GT0g|O5T OE`8hX'aLAEuҢv$~ .q!@<J'{3kX͓Q[=-P'V6ܠQ+|h$8x F,nP -=@Aj6H~{ 7,ru◁RsQ]RT˅ghkkT/ }ޙѽ |aY{S[c|`yic B:i?:tף34(, C_9:[&x1wM]OdNkTˀwA}_vc|- uLۃN4/J |6WMM:Ky@O#a_ݙCTn̳!gALsC W3476hhK`ĸQ/=bT\t#5LJqdi[l%w-GB) W<İr"8 9l8e_uLǣlڊo[@7bٱn XGMN[TGsrd}"i9r(-"_/E3~+a=wXZ>XZ}oXjz^yY |:tV So  qGѯl(#D9b=wdz1Sv\ٴM@ Ssjw"@WoiS> stream xZo2C/)^\)}ʶbʑv?| ɡD5 gG*MRRʯ"MRE\ˡ,tMU$*XryBfIQTxrI/_ugt)k#F_7g+erWwzpeZpoÂX\R-I:"/jhChʷJ$Qk3R+uWhXT?zWzjZ)v0UdUfrӂ*K;{f$Kd]&ytM56yA Zw,ңԎT4%UZQ9QQ(L_q7^je$\M2 Uc9U!PxD

    МjA{&$Qçb?;$40/@_$X49y_UWl\Tp&WV2"8MEɉ&+2%EYNW:]_ .p8 YW!`>PeQLA` dӕ_!ͨ#pP6Bzhկp9F-xXć !+Cc쑿86;иٸ׌5nXkgTg3tk !ܟWZFo<} ~'G V{9)8_ğ'%@<o@ ##rDyl#?իpn> "n\D&#@p6ʹ,޺Ss.l>r)KB͡mEu惈$湕U*R 㺥EZJQAgb08G͐n,ґ=Z9gZI)P%H+CDZ}zkq}CǠaxX7J#kjŸdQ[j|Gp0.G:f3{mwhGm';a t5uWmk{&@ہDM?_Rh"; 0ײo4J\F9TYjU,` hcxn_ysYaCSoՙB}K)aj]}p UqF-7:c,W#jӶY,o+5zAC#G[xmCR5n봷avn sת7_Y&Z("7LhNZ%څُv[+ǵRX:yt #jjFʸ9T8tY=䪿uvֽuGB7Ary ..~Tu:ʥNܛM%rɧka反^C\ݺhtC.V]ePna,(AR6ҫV2>M>mHnG:پhcj"|h&~a4=v>o7IlGT88aS8·؂OQ 6T˜LNKu.611pn[/w5w>锱xsREmkP`(Yu]YM%IBGV ѫ0E :@8W](JXXDڜv=Aa4nDڧrcbz+l೬뎚Hb0]t$.j c5`'gO`"Ǿ h~j=s~K¶Z'cUXv{p7y3AbҏJީivڙsr~cygՉsFkv&L5f5G6Is V{}ڥZWhQGqf)}W$̳ u63oǚ*J8uۓcO_Z yZkIf gMJ8w۬&up>.bIe49Fc[mE5/LJɶDDq[F=Xٜi{ytj__. @lY endstream endobj 165 0 obj << /Length 2376 /Filter /FlateDecode >> stream xZYs~_1Kˈ saFSeGIo2Cj=䝡Xi4`\ wpM'óg?NALVU]edMQeRiz 17?!y͚FV8-i Zҟ*䭙zV6y3}khshA^̊R-uB\o SϋNOX8l;tkp>DQ ܐE.qڛ bb䷉%<Uɻ-a짌3=MV֒IZgWM/&eٲ0Ŭ*r ӻ̫ =d+!L%oXQ #-!!bQ34LkY*l&JVD(:k>gM mQ/lɡ,` ˼mGij; :_= cCd&ApN4eHm|.ЅE; j(<""Ŀli4d<Fxؘ>1GCiA5ck6Sro#S77`dBc=8|ˏo<n-=xol|<\p^]޻҃3/'8/d?Iy5 =*CW. t)U}]&K}x`<+RL4*b%55QpV-LlK_Z'ClʂDݹ~kfpnl:\TYRwk Ury[Ре5&8UEJF3-ل)6SeS7YQmTBLTJJֶG" 6,xQz7)bKz]i#]z.Ur!}vW:%OASeB>Ҝ~uS*O*4fHB`Jc IMLqv6M&zg)%AdQi6(9/`Yь6d+䐱^hဲSy:9=wQ](yݚ[UxݑN᷺0~rm1*MATj %j:koO{؞6#=ݨ'Ii\g(h\[٘}^T\-KGνKq:O+,b_(ܝ`H'΄G̺pg0®4K8"hlkOa)/Hp^4{= „*/Pt/@:)y zY^G~am}ݜ& a[&MpfaÈ2y`7yT}L#Wn9,7?L6cW3!J".6 Ϗ#mo׏k\8H {}}p*ǻCgi@P|0cL*K@֬pFP9(QyC]b{ˎ #]39grd9}eз,}hDed)3en9Ք{nO #bMNfuRW$RT{*OtL &(~t_\;TUb =ykk;઴>1 C 1{{g |asqapn3%{Φ3,+.H&#ҕKj#N<rgspO=wgoG5aS878#V  UO\<͹zU}"3)ɔ2i4=(izudnϰ/(BECfM+y@zO+ endstream endobj 171 0 obj << /Length 2045 /Filter /FlateDecode >> stream xZ[o6~/bvv0<8ԗwxxH`ADQ~G&M.4b{ 2fVYuɊR&Ir)W3kj`(Eޟ{Q|dY 7pm磷O^ .$`*+\C<scx Q0ͬ0+h vKYZ5&lFެH#i`e)q3j0&VnƲLEjd7tF?)OT8ƛ# |ͪozڽ/1;v6htyed5㪌gG4!Oޓ4[tt5~hj/C2]׊87vƅ )0A2Ǧu >uTZIJ>G+aAL!qQ#l5;Xk+B =Z{~\"!8†@m5^ڛK7Svܷu^ ֠Xy Vpmi.{e3(}I詈Kg0nǕwaR0kߞZ'LТ袼/T= "Y9CN9Q7}O9e5p~|k$CЩ> 96LRG#'@IWpammT?#}>L)' LS"`{҈o !@߆,uyӑO-RQ:L[iZƐ)Eќ'HUNj8 Xw+hpvp8imrYh@gOME7DaEKK[)hVꔺ/Ͳ\'II> Pm*˂a:ƣ͜eJ6K͢sjGA(bZBon' b tvo(ib\kkc{'E @KIlɲ8Z7i>MfnIb#6GNPI/yFhGQpylٚ$^]n} 끰.aOM5*1t3u3{+pt㺾E 1Ue~2.0!O̥n_8vEoCǠ" F:osM[L+k@}EleJPHO0"fbuCF,ӱUW뷎71CB%2eyG+(,kW0J endstream endobj 178 0 obj << /Length 2071 /Filter /FlateDecode >> stream xZmo6_!`1+R2`ҡva2@qċ_Rˎ?ɓDN2ݰ$x<ޑ+~tJG)ɢyK/ ID^d$opvivYl+01I&$c*,4%)4Myݧ!\Ra,d;K 2?w(eK.x%.K Eߑk1 L9y!zܔIV&_eևd!p$o 6AMs!B1980 xԴToFY-J殎TU&.e5h*~ָGd,^)V=ID-РTYcʓ2ЙROV t0q ,ImU=/?Ty J/?ZrρHB2Eo#\kxIx}8 g>aQ$\SF+t& sYl0/ =&\ Gr%^h*J4Z3cvF+N^碢,3G\0v5$a}>Yx{#k|oARz.aTJ ;n'I^)[>`_C #bb+(|S$P!]HȨBBʖO-\ina}Hvfca (ui \5m,Z{"ĄQLY_TB oFΑ/l!T*|,0C qzJDI/{O]+{x4n[71,CyCF1b0X%rtUc8|9J)׵h_i\:P؊t+ CRt"k6꿀o:aï v[Kqma쐏t1a~[6{4l¶Na z2 yBB:€DCsb*B~<]/VEHʡp9K=Jj*tsom.Q{H>IZɂ$ !mJ$f&c>TFSGMǸI@,Ԭ*z`$̐+B";>NQe,w[Tk0-4T6B"Jk3x(ͪqӭ[7*LDۥtl Ni:+=h'hLfT: XU"7_.Q0v sp6G쀪-st<8w8>nݑcX8D*'F:ƨna{\/o1]R%1ÕiWYCpPF0m@߅,}n wa:ff*EA)K7ȬqE/bk2Ml1p<* %*R44UP妙Josuߵ|m+Aw>7o->sdUvޥX*4Q ڃɡSG"u!nall W7hq )b@$ "MGjQϓA/J endstream endobj 182 0 obj << /Length 1323 /Filter /FlateDecode >> stream xXo6 Z}Yl$E C{K94?RunuCI$MDRTx<x~v>9!3*&,1FZ~ ?μY٦S?th0kr]&j2qyTu|cc(a m\]}SL^b)DbcqaXj03*ÜZb٤JE3-%K˭K{|E 7Ȱ.ݼ Ab ʹ TUQOg2@Fi]nϩݗ 38=Z&>BՎWT +tfpSԹS,[ZkWnn!}VG֝O].[{F?ک.Ma*[ܺe4;;E&k~?4-дekR V1C!dH1T+B1?re X9fDZef$_؊1a^N&mG}` Q:ERY5y~ " QXSX[Iv!EPԌ fijv͜py"I ƅ'ىSIi9X%3"&IrHS޸:=}}<E ?:a|>;;0.MXFV*{%1׏%uv'?u:'?v  endstream endobj 174 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./crisk-rates-ci.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 185 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 186 0 R>> /ExtGState << /GS1 187 0 R /GS257 188 0 R /GS258 189 0 R >>/ColorSpace << /sRGB 190 0 R >>>> /Length 92860 /Filter /FlateDecode >> stream xMAr_Kr᫷md!iAP#%mk xa cs}>"3#^ٟx~=Ͽ](z?x?kWoWگS_OڌRa׸g|Ɓ~|?_o1טZ?7|lS?[gm*?+~_}l/+&ﯢg^?|?˿w??}|~X* o??J|z$Ozϯ˿c}_z$; Gh H؁I_E U]֯=p%84:W] pjFߟ BIgHo85Z3'`L7u Wn}G~7z܎fXfXaL7 10'y\. &a>=77E0TyØo1b 1b9Pc~C}K~@}| 1V|6vN7c qb289P_7<<>CJo_Ko<%'pc?CKKoFKnܴ yxc?,\<5cK|'qm|b"oߧg sy}ٚ͟h<'1^y~0zq}-Fyba{Īq}XCOb}X{bXc75bWى5bjw}ޮ@(́3fs=[8c D,'p'Mx&5pãb)[@3w=xx-ָD<'퍏jx\?5w<9n/6WEMx|<.]SP\KMJƵ>80%qƛxHH;m"|bbz#w2y@*d`7-qXn47xNyxi\Z7>sLZ_Z.o5i#!~|h3'pA޿ָg=z7ތxkC_ø~_*ϭd\!7;8!~rm 3ƵopC^^ɸ%}A0O-q=J <~Cϫv}~|W狝.qW¹PxRp?p?1,7<&gOI{|vxk'!>|;|ϏgӾ&gi!O-l|ʍ v<4*_qꍇ v<,0ixOO2tWOf}Ak9}֣3u_zg=;ֻt_ <9o/CzUGƋ(UC>#9f:O >d²6}~SϫC}/0S׎Ts?=UϷ[Ј G֣icy𽁷zw}u׸z'>z<?xj\5ρ8ţ_~ _6my]Kzmis4}k_-FKۺuŷ>z^/?zOw|>t_y>O_>OƗ4? ;|瑿 ?~G<j g(35>=j>|||y]$|$|by>W|i~[>σ?8Ox8|byr[/>oqΧK|L`-Y_,go=>oqydoGP'|fyl:n Y'|f>q Y'|GZ|M|y8Χ86q5qnO7۬>o}Oϣ ָϣ$!P~L[z:ȷ՜_S|/\yl?\yznzK"q7s '_Y"]SV=7?~kdoOu^ SO3?x+.7U1΢'}|UfGϫ`7փݔo&_\ vWa}}n=5kڪ{/׵|3|y֋Tު(~{|*k>QC"vGSqq|=STA>DD>z^]tƵnz^Ńʉ/ ߏYKKp֟3\ř@B4/0:i#J]9[BʸQjxJ}]ϛWx~Zm<&_5L<\L<}ެuNY'zxxP||[w6xxy/ -?0d]7&.&}?'&Zs<\ھ}s㡀xPxZ/zqG/}9z?xշA[ϋl>kP'x|ϟ!Cߏxy`ǃ &Q]ƨz00K)芇q>_xk |>{cΧc*fs><~xpøV<<cVu_i|06C}(0S}Q

    >[Z|K,XNY]<ۓ-N^mgmG575Qb&mgeL8VG~aMO }',BJXRbW [̽rx"dۅ]A>du!Z}yI 3 !)0׺g>C0ko$s7cϟ\^b bup#j0~Z l/Y|k[Lp)V>a\/CHq֘wăl4 ƒѐq\+IĆH);Tr&N{}OU,3tRt#=b ]|),?| X^(8MsǞIfD%j5z܍#N( oG!yǫ[Q  \jK蛒,fNO/w_ ePP12fߡN S 7̓A`|O6^+/,ߺϙZAsk"S_uV!Ѥx}VQyu6p^ fs'8&Oq$NuQ8K:&!ٶXpp+ߍU տ or+gD;wa|D#VHSHLͩDI<P@8MR`}5&[ @:'}?ziUb:MN>c snDd V4t!wUtUxgR>{՛5\~ڥ,؅5cΎrU 5fa~j+` *lMiZt@RչRq7֋>l-ya'xW[cA]ܒjm'bsc8DNU0'{!O+v3ZI ?b*BvR9?f.W@Ejq }aQ|x0hD_E^Gl]3zr9M$Vd%ޞT4o6Ug->b )JM)v1~)ڒ= :=Voy=5Jݩ|>F$'_d} Z&(I3I" o@/W',g3sq03Zh;dPK4”t>&2GnQn53;A>lMcsȧ-S<%ǿH8 dRp TNyYABBBǙPg)8J&zk0[KSİmޞ7`DPޣ->d[ M[q+f͵FRu?#5iH1$m2};f={H( RzlsӛFR=yV\M+B*3ma Uq/*/7ph #I33X NaOSwtffZ(.xR"ͪdF-'GEߐUbj'qRBdʕ^l,U EyCDx;N:}Y'Ֆ>‚Lw_{X3?-#{ju#ȣ 280d19TrB`ӆ)ԗp!̂t@q <71M%\D թ$׆skkϖZQd̰ٞa\G^2 ZM5b~nzNŊ5 ~-Qx!tpdgՐ{ܿ0˳c20a1m6EfR B2d{ylv%qjEJ(>wr`twi`hGدYrBjF}%n%#skPa1Nm(8vw+8E_v kCM圝D 578lǬ&-:R`$bY,C<{XTsyOJ[OxXh7MI_|.y()0\r22/ʂB3))[]&+Dyt{*u_ ӧkB"HPw[~Z@73ژЉU2ǒXU][kKm⥭.'4jEndڟbNNi|r'IVc| FFZ~&caRIN̏x~b4>s,UctKF'>ΒJox>VnJ+Пf%F{CvhY\.\ T%EJuo?#IWr>S 1eB6}iSfC$^*šC05'A'\R':xn*f9?`C*/ Q}6(gHfu޻Q)4}/#g=g`â^+XQݛ@-*#aNgIƆ(6ǒ1w¿%'7zZP!jGmȋ\ϑT&tƬ%roo]tevl_V0v9Cq#3݀*GN.qS SAesR4T[Bcw]uj"6BԦ$?=Ey!\,UǔT%]H dB]C( &kYCP fZ{ 7/ZniX߆@zҏ)O4riY)@%OY%źƣ\gn4ҜddtD|iz8-iF;;:9PR(yY3+=Q (_>]1zK0GckETFFua,t9mh.?I1Ұ(D֎H&,$OO- !j=A gvN~HkW riid^yhcGjrE7}oM^d!L -- 3U F~g-hVjO)lZr(ܣT1LoЯ,q?m,7~ZSȚ2PxF=U AI1 w(^MeY=6I@3q>3T551r7EWR؇Jm<ݚh1˕vx 3TYpiL{4b񣚓pdb5G]Lp|WF`pxڑX\\: vK&IZ37v3:h n61Fr;3tn:uf)U{AY퓎@8mp=242[rR3`eu` &;R y 5٤ݑ`Q&Kzi#įnrB'sô 'o H5?_û+$kRR͆9fmͻ! [ u>5S~1}?K4ݼG/yb.V~8t9:v/G=Z+b6Gk|+=R[}fT}UXm|JT^=*a])Y~ܸPS\&1$<:3j@0%N?PT*\)%?<Bwٵͧ6YyrD Gw Έ&MgK tfK&{%um60c܀ PH#RwG07bˡSQ0<2 yh1JEO-hn{!n]f"}T? VО-cK0]اkp@r![%}iJi Ju\>6_r]hu2ĉlKp9-O._Njv(^`f噠\ g\!rP&Z&g m=m=w CyjY.KȄb@ApUtyhI 1]rFDP6"r^ld9ߗvP-VJۨQiҚs`SiU0]Τu\1%*雔rNU g'BQ<(;>~՜_p!w&&>B"q g`GU9tU endstream endobj 242 0 obj << /Length1 1490 /Length2 6557 /Length3 0 /Length 7559 /Filter /FlateDecode >> stream xڍuT]6 *0tݝJw 030 9t*-t#JK+t (R{ﳯk}>ʤk`aH^ $@IK($`e5"]  X!(& %)D-8 E%bAp$@haV%/' JHv(BP0!!  }Ctz<o( v_ Wi|CG_ B@(uA MY/|+]@0_(`utT5>Hfr@P-AU=V}` uWcV)]]!0)C)3 Cɰt7A=!8& H(%0u̷Pnp7 Hr"@y $O+ `#(oַG@}zeuavpK̯LWpWP+(!*  #[o.g{RfHV58 ' p-D?v5(kT=]\~ uømhOphoGT_z7_ P@tH_}wnû@a]ם v;v`{Z!T3 5~"%-JΩw{`p V^ US m!0=RoDm=߭u+ `p yGe>dp?IpS9kB?#R.pbB4F&]_Z?_o#POP~8!k8n>5z5/'xb-CJ'Ymhqx\>w&O>~a| `7Ne,>Xi(9-=)q6fCTYR$Sۍřa3]ZH<V|H!~o ;T )<ݹwZe>f$!ūGEDU-s>wEq XljI6O|+52¢k/O0ic;s*a8$U<+6~G[:Ám:r[DdnT!"Lh&>,_ 7z9xo=CsWI_^1gV~N~Uep2 شsݷF.3VAz6Q9>:qLR0?ٻw$kgy~:*\44,To mv_lgF'I@Gb5ۖ莌qWQE*1U=iΈ ZYWz{'B< =9%Y)G)"5PL%Pyl FOO2sGrL GQ cHsw_~fY qo]W=h\>1hϙ# g}}*3>ٱ҉;Z1'tHEcRbEon5[·kVh.ǚ66}qqMB3 gAC7AŴ9yE+T48/$iY xch_fѹuooq @ U2_4]_Pqn~Es5 2w0Tt{lCYdRIA)hkps6"{\%"q&ye w2twBۧA+K{TO/{GYx!abhvMU$4оɾW`\dF*V5u.͛wGVv?P5H-&[]X 0mчGQkEv8Ҫd/b>]ʘIH6$z[[m! ~jpX^?=f6Բ# K]N<@s+zË)%AJG%Q)Cm5߬IG[88 #/"|>Otջ:pY/yg7{fS؉%EESH-6^Cci߈:N1Q;Fi]JP*ٶy8^;+RZV-.Dv$xFS]UzG6uoW?fN>\5)5廘Fw,IP= X=ȾcA X*gdliJrV5g3* Ÿ)E=vCW>ޅ+*}Gm !VTr>-:dEv,#iwڪΧݒ4dZ $䥁H@ؾpw:ٚ%s&ӆj<& )h 1Kh ]f׬Z/{D#QAoY[Sh/m6d5v6  pAhZOIPob̡%([ {=y}Js/W5NڊVaŔ|&B"'o0QHۚ1cPuᵰ;*Í xjD \RɎO|4 R6\Lr^/ϥo4?-dMp0Ma:\Re9π eJ~au)4SI<'*_}^Qa-I;[EzWWK4m҈DytPQ[0r1H#Q =Si5UL:~nyߠ1V}#QhLÅ~N|HAEֻzˁ9C=O-YwI*Pls9k@Ƀ}??DtIY_ \Lv[M谯k/ri^60h/@6}i (>K7"2޼8W iI#O4"Ɖ_.PƮ[T]V=6iŌX5M h zo$S(VO[ОL k}edᆟ~Juch xibБvY'm-|6v0m>7nminSI*"4v{3w e8/5*JTdlDuj<ysJ˜m;QQ.>x8qufzP.|.aGW \(72ž2ڡ]HKZ!Fga3OeQj:NS 6޴<>L9HaԟOmV̬ɇ2{4J\?;.1{ͮ3MW74@ݎ: mOMo*B k/&߅z+xzE+[;[E%WMЭ ô("B8(s[[-hXݝ|z4X Ǻf2Vfb\Yӈ0kpDiÛ\mYѶ+[}@H:N?""-g(I2IgSR)ݶޫ޿VBW4\ vjYWn=7߱Pbq F4GޡS) {L]1mz (=$e&~ie@= &*GF-.@4h4N. 2{5GY}C$GQ1H=k*Z}$=]',г4A F[U35k!$xhVeuI 9,M_ڕO^ QX)<e!t_'h#,~#tڛ^-9Fs~ٺ [S7+7~p56'RXU}D4렽 }\yOSq.;fHIF%S%œ:pFH[6v§O_yji*v*O!+I.w㋵f_11r`ǹ4`J3:?E w:Es,qN1Q'\<2ɡYLs;q?%*:z#4z\Cp{rIWIWFJ>9Z mDtp&2I3d2ˡ*H|Ԯb 粲:Jp;(ð)8tC.1j:iwd8eGR.1(R7Tq,7YIo>QmWHŤ}LYo\#GH/]Y'y`1; UeyTmdەeiR+ /ש.=I\9 )ϗ}69cHDDw+_0hݐNѽϔR2FČUݝTcl>]g0`SgQi1F UugbLXVl͊>vD}+rJ?#;枥Mt7rZ+Bhv>*(Q"es;aXB!Ih`Ni){ebUXz L:4uwhOV0e'DS´=dEЋC|6&#"6F.] 1.B2T?;Aqq(1;G]VƩ,1eQ^~J x//nr!szٓxҘ&3 RP5pW&BZmBȂ&8M$ZK$5xE%4Ǧ!iYFDnsO9FIQc-eUR[:7하>& $–`~?x:zSnj;A#qx1lQoLz{PKSU;o>'dCyJGJݻ*1^MgDnSo6 +֯K\OLB=*N2Vm_I:?8̎jMlFFYRAIV|% uKM%Αa|>p+$ڰ\iWvM1h_Nd9 wEhhP*;,かdpȋG{o-ϣcr @] L7r`:gr]A67!zh9o_̎ 63FQmԪ_H;Dn?ReL0>agg]pҫ;KB ?:fĄ5җ\\!jM"ꤦlz:3&uo{̓*EWqAF?LhG;#Y⓼<:I{2F|Y]`Q)XOz~Ul'r|!'W!g}5V j|&icYMKinaŋ3ƒ 2ݙO@z1L.|;ٚ{GH}[lo61Uɹ7WAuS^ m Aj b)2Ķ[~cEEifq(K}C铥L{ͫ˃2)RaQEUj:oF2J[eМdbd+a2,eWK825uDȏjdk.p-SaΝ>8X`Q2 s lԜEw>Hקg̈8'Dy3;voޝgOM3־~M),]";N5_?9-k)-5%U;0#be'H/ήmo]Kިn8d)&w?HҚ2!7뱆^;D=D3JɟVL]!YRyVu)y|H個WWU k =جX0|g^ޒ_-nI|IǷsvc}0MXER6 L ZC+^ԙ-1|3=Rq;n=n\@=zNoj]H*r *ֆڃdibF vzT endstream endobj 244 0 obj << /Length1 1533 /Length2 2839 /Length3 0 /Length 3807 /Filter /FlateDecode >> stream xڍU 8Ttdf 3D[wc '̘d-JvBԧHlO(EBIR>C_wu͜yy}0`.%V8,꣱X=ġ? (U/ņ07 $sA BpOX@%2XDD#ĀA6JՊ gAdЏG@ #EȂ(dp$s d"LB4a1049f4u0l REҀ9 R< ; #@I! 5!0dxpf77tՋ xi1Ba1p846ha"Lg3P2D'! WPNMaAL͆$1msV Q#A,|8Œ08gH`*m5ОPr 0bFF @.%8# .qiEdh0*M+g*D~?~uG [HqXD8nIUKK@x<@m~KY2}si rx?x~whNpb _؆5R/l%w{K6!t@;A=;t#1 o7Ԏ  w՞CFlb#RTC XRΏ@F!taWW 1%y;[*k SE2EGa"@JK0hAH`oo`,S"cC_qψ?Eo!BD{)%Bܿ$AxU\gPL<{B!LMB:T 9ﲓl`AGBKOٙ )FaT$]8ԉ(:)q{ !,S*nB􌯪 It-OU-w~կI{lGr% n%awp-" 㟤Z$wwZFKEqj'|+7Z6ol彤S~X}Ny(eoȕ sL]] 9?'4׾ݗ&GmaٸK_66B)zT\%q*hlF^((_d0Jsd^|r AAPy}5idRA襃 :72Ox't/OɉpYMfgR  tgm8\և2* ]BJ!ܾ'v=:ל]-$oR>nҞ޲K 7U'\N?zѫ}Uc|w]xQ&*' a"(aWKadp`AiMdGo@sV XL㯵^w{C'Ɂ?̈́2!oUE 10H+\Hc4ӗ61}%~Un2qcnlSjCjw|W'==+p5K>בjo[u}tZ)oDG̭#Ch#6P oTwPvn);.Ms\U:cf'YտUgQ3UId~+8/yԬN` χ*zbeL6G͇k6 joM[#sfzca3Ӟ _USБYek*lInݞjui#A 62yF4 '?K<}ONKuV1&,cjo9gѯ_%LkL %s걙GSbmxʈbW}wwt)dH[;_b鲊݉WNڪWi&omWԎW/Nm8S1u]i#LgSJSdxG}~6NݵyDK:)OỷX,X{FAř>2xRwuJZqNФ=N>+ώcug2 %\U"sC֗by[U{F/n$e pf_HE=1}^,Mh*>ɦ [1M25JP|Lb MKJ?5>֘iUX햜rµieVJ4v04Z!s3,ȘHGՈkW*-R~gXDlZ-7Qj~wJ3\Ҷ+;iՒ/LS+w]A`DggyW÷Jw#.xK[o }Od odգr,x]pl>Ѷ%37`sc]JxI֍֛mZ_8eoJʈ#7J&GD鮱3\v-ga⣱ņpDi>y.]1iV>#AsaY\%gh LY@PM@))ITF.9P[;,k?`y[JxZn]qȳ_weypsfDP6.ngR9qH;/_U`)sﭠ[2C:jWB)I- bE evlW9VeޡΧsǮZh<?Sn,:uӗ]m.''i5gr"غ#Fru*JeŇz㉈G6`5Mz,wZ{꣇.z>[xۛO65ݛOwa mvؚ=^kvdeOWA,Dž퉧iU>+3)a}6q _.0=av>ޢޜ3[Jlpap5L%a>ϔMء\Q[YI\e|HwRՃ-5`38,X-#hB_7A ͗rkjկӹܸOmyhΜ:RZC]PyYYGVZE珳wWkT&଍b /;fV]S0;~Hу"j}rgYJ2rHյ`тiK_0$-ҫo34oY䀂84p61r19]]C9{!Ǫxf3WL$VpUV7J0ܸ/#} Ϻ+im!s糷/T cElǾ LjVR 26/ =`޳u#YqKpQi )b۔".a<]7x ,lx;q_OT]|=nv ϴx/3ٗ/R6 ^%^=iB \]xBqsXwn|O ˯qBZ75@g.sy}]pDD~}PIAz8Sĸ D> qāu&PғVݹM]`JmJ[{40e\T qkmoG-0/0|YZIΛyI-ō X9WgRDӞ=MޓXH~}uІӉp%Y(Yq@;V+N;C:[) endstream endobj 246 0 obj << /Length1 1479 /Length2 7746 /Length3 0 /Length 8741 /Filter /FlateDecode >> stream xڍT6 (t 4 - 03 Hwt] !݈}Zfߜ9هF]Mf Al@vN! Ʌ A؂c2;!0xH;A l@nO/ (9C*E dٻ9B,u9͘@AA~?I;# V`f [ FW F+^Ņdg9Z1\ +&vt~CCcdh[A`#𠰅'9P PCrVˁ;w"O0 fgA -&̎pE@Pߎ [8! ؂LIj@7s#po<\,\fg"8ݍ@a.P$ 7 s'{( σ :K0)-;fV hك-GYߎlmrAv[=xXÊ@UF!NvkU@Dj@t6 ;'_z\ 6W ̬"?xa ap!lgff XDğ}B`wrta>PAxv( x9bCp؂LAR|?e>=]fS03@U.l#"qAGʎ>T"7{cݮ*3sic6jmKjӘ{\RN4 &JQ 9"Sv`[j1xyX_1E8]B&t@{e֪]tZQXj*HfK%J^eg1}0OVxBI\۬"T|Syi"-M#['zaV1HpZsS `IWܼ]IYhC,y,i5N _>^\}1̘NiUV|=$n\afƮ "gv1|z(Lq?Mn ҁϾTMZ{1:tfT[ 'aZlH8)o ?O'^=xS/> #3)4)3n(A5$(ý)M<~㤃$YJᆢ!<M/vo&-S&7_=!vzWw-Ø'@o={ D;2&{Hs|Tc捥gÿŕ;[{&T2|HT JjV +H 3mfP2tA:8RGgo}'Uk?PIcp_!I\{i&Q$“bC 7 ¤P*7-7O"0BL<@X8"ȃ鰽c1H'D׫INϼ"J͸R\K U0(m $/ĴNMUeUa`swG*hofeT{ՐSvöշdz) Fug~<ŧfp0a5Au`9DHi0~2b'9]D oj2H =-wiL}JKDO:nw!@飯&J\"TFg /b#+ M2B-ym,nm{<6̼^yTTtFUXx0̂ltծ,lA4%;a 5}oMũDzhd, +gg.(sf%ԟIS@=hÞ}}=V#lNu:IEZ`L\I1~9#tZ1GxdB ʜOrmX@~8m]=#d^ץp4y?I5X$e0X_MtI ?k҆]:簮}2= iQEoՉa2 ƢVE_h ͋ûuGjo%kFCAƭne~`# /}k5TyDȼQӈ嗢܍hm;Sp!go#KLDՕw׺mF kHۋ1kɯJ;RcghwJpmɒ,zo>j;4:sֈQ/fXгiNݱ*`n҆ZL.fdkVK}ގ_bI;$ܼ6ozv>#dz[xZs1TB5ҨX۪ 4tsIzg|ZViܑ&J@Ux .ɤ,ټXzeǜU3mG88M2zI P-qVH1X}cb^q/%F]'H=T}{a/V4V%e$F/r}4khĤ|>c. vt~qIy\pT Og!t?eW4ݩ5ߓ_Emta YPs5Ȉfw%îCًlriF\GӒ|r3%ATM;ǹ]3Be,yvEWk"ȒOObfܭOk}@:fe􏾸9lƱPW)Dv$l618x) 5g4( WPɈj'w=o)ѷ*aD^eҴ44!Vk,t\.{d9U" yw&mS3W];\ !3&6.NˢS7/2n7,D̨YFCS[Y m%ǐjcLѿXs$$2ZN_K"h#¨4$[B٪Ll6M |'}5OeYx-xNˡ/uۦ5oޅ R>oxrY1g6؅U6J[6<1Jsu3NTKx\Oǧ/Ef)Q~\ѦO' "|xr%5u'Ӹdr=Qj>dp-ήcXGB9-FUe/GEst۬M|h8JR7U lnyl%52d_Oǀpq;_0Q5 𯟌ո x z쑻ϡ•P XuqF@PKR&r. X I7(1THotX)Ӯrh|e.hLzv5ufި8w[iɳvxcc7^\pz2YatHKlpK&ZZǷ[Z%寍^B>xA|~qOЮ ;b .m۱.{žLdU۬}K>܂B|Ǔ>.]=V4wc\Ѫe z(Je$j'Eiͬx +Y +ShȾdQ;B jd򗢛ĆMLqbo'j<^|)2+'c[V}t;Fpc6;h^YpfhPfJ>y_xf >͋HJxCF5M2hWD $ 찳@!727rWlz^ݟv񤴀Qb@(˳+CD[hv֨k\MorO+rݸ7I͊08T[4}Z1zWAKqެ.tCUNa9ie)FK#m)N"u*A6X:m'"ι?]""2ݧ>OTJC`PaQ4]&o]ZuJyLɛޔn3dǞ}𶮼Vݏm "?ɭ5Y<뻣TH̆zIΒ@|XwK6*P]?J&s3I.uOzn궫ͷ+zTK~v-MZ5{7[u;3~^~r`0G*Y#"۫Hͳb( } |wÀD=vH%.3 lCxZ*zȱ;Eao:0~@H_oh OJ6o&Kok\q)H;zII)h(͆۷/T W1oѺܽvC1߉R>n{BMϫR9ʔGGX_W1:c?=V;#fSh"}_ .:]2mE2;w49t'9FPt5w)̀AV~!ɐRi+#s+ח ~4<s E/f6 , V|:nEL2ʯ>`g'JCwm :)XrS`p"Ϗ'em}ӆoD_{7ը MR ܺ vn~5DAq6flkMXOlO;5W]%(dMMhq6X(z^&CE93؋aΒ5BN2<-/Tr%̧l"wmu)G(bsj9syhxм+$q[V%5}*@ége ]Ђy`WcFRy_"Rֱpk2~DG#!e;u\AxQu'gd;*H]#*C,8ǁ*  j[!퀋N[rޔo-sU$Pϯ]G ^ ҚCId,^$^sCb"w̕ZӦ_8rw"wL!{h}rt]f"_$jԑ~hd6?4=볹Ր84p'yw=LCILs(\2O[W)Mm-N]MkLZV4)^e/iOK\*osy玮".FhT:*ɞi 9^E۹Ka"'Z2~!Wk;p@l3oMǥӘf)W?"k= ߽NU\-j@zr O*!tB*Q\VYͭ>}yD_\9 iw8wlp:>QSYh4("JEaCӧ3c(˦ CSfwcg:22c&=o2玘ytI"@0m8zvOys71-1.%aF7))k lSg}~ϫB9JWruӾ/`m}Rt`r p(rt7,4'Q2ퟋ ̬UhuN,&iw[V0[ˆ ̃Y,k!,NBon*( endstream endobj 248 0 obj << /Length1 1452 /Length2 6465 /Length3 0 /Length 7448 /Filter /FlateDecode >> stream xڍvTk.H)C % 1) ( %) -! 9k֚y|빯]H)e#(N0H $x@ \FF]Qꊄ!+A A}:O (900ND d!0k@"qe^0[;,V)'+ APvP'VG Ey ,qBr!\mY90@C!N?ȸpv0qGDW%U3'YO௻iWF0bm60G(@C^ @ֿ!H9B, '䥴4!\a($ "6[[ p|0Wڽle6@X9sa.nP%ٿR.|P$Wu@=r|}4/ABܡmk ` qvCm<& 4ЯFI_n} -Ye?Fx|8y<  |?7^M@tT .Aoo /Ͱ}:Mf(AV/~߈=08J@s օ@hY j ss ևqN0yB5a(+?L{3ap& AW@CZA7'A5_6!BX# Em|hZC=G%4f_ ךV\-0Hm p#~=o~B=V3+j)JεϢX{gT0 RiK];14ZIXv0?c4LrhzskuY* em{5c2ehi*U}=smQAk a(B9*Y>*?rKݷ3|,eHtp{d bg=K&Xv,;Nnc-:/~*olko~p#KݫC~)(J+cN.<$q~{pgNgazsLPLJ@5)U8|NJ7%uB)ܶAXXf]r"+LrS̓R,Ⴓe>U ~ƱO^<E>S̱v\]!2 Bpiؼ>5Nr%Sϑ̻LXGd?`Vל~OO{ a+ 8yb/S껇G HlSj%]Ð.|M{>-Kk*Wxg8nw/e>uNk[\kt1Rw( A ︜wyɛwa:ڇnb$eSűڏ(Aw,,K)6嬻"chV7ȹHMyi>"-er(qz^H7o֓f65}MUKpJ^PPqH"5yڧMKbr:-[#2F~I!iH:ָ^bS\f0gyL p*s~Vyh6[S`Vk3TvjhtE~Mj^sH^Ǘlf/%$p1TEaKj 2CQˆo7މΑL|]Q5 :r@ =_8Ҵ/@;۝ L~ji+OX 2FnOQVwz=/o * ^%0^&S=q]r\~r,D^%,fs_!Iu{[wAs px)/2 *Sʭ2%k+0&Ȣc< jQJ- D qoW @~&z*_6W&߾= \m\V껣3<3NVХ mz4Qapw.˷ۇ¬(~ґH)!= G.\voTBczC 7jV>-w4|_W="2"{t\!؈0D@HTNMÞ~xC/BbýRm!uT68K_E(*$zoh) he@LSn~r]1{q~hDZZu@8.ƮoСяr64隇c 6VQNB79SKkZeG,dn,Hh #}R}il˘<[WBfFRX5&EB '9ٷ9j;]{n^8OkP6]J'bB wkLs&=zv% +yvGu-ĦX!?vd8O!k/8 v̬xyOͩDQYM_Dutݸ5p{M1 mm@q*6,Nk)LfPOV*.opn.N_\#cKmWcÿY)+24PTvXi;~jQViµ/EO**4##rX=s̳] _MjCK˃E0:%4>x?:#fE*u=v&YY8ߚ͛J4=vI~7Ƈ2:&f*xL3zfF3٥!|Յ7\QNIR sxq{""hɿpN>M}glYsn*a )^2#ՅG~Úk)S3 n-QJRz 'op7PO7iM?l "M:JI+O+4!;rr^#VA 5#0ՠT ؃KN3%mplHK--aV8l<_Q[ճjg!E^ GA)Wх@e\Vh^GM * #IoNyc:Z^F ɸ1|gڠY:].~OmUj&?p 'dp_xR, 4'q4$sx@U彦7ͅJ^Ud^]t9j[b=,%],=qc٩֚-Qצ[o;qtb&s/ L9 ٫}lrFDKn*)oŘVڰ{sw3kR Ah c] qJ!7/):Fv>S9C- f lP=h+fAQ0š)Ġh$5m*$(D~(AfXH;6?i6,&|,aFp6; L;w =~X+$WGF·F]u >`ǨxKJzU*kS>,\fP6n2vO``2ũ'=>+Fᄍg&FӰKZF5k5yft=d3҄X퀖 ֹfE&oU "[ꙏ>{SnyºH9^~rC6$Pvwݼ{:%XIMK`9}ɦ\bQV*Yz!]7Ol=Yz`l 8M'w:AfSDrIJ+f({=OM)ƍe헱2\vRnKP}&S~ 9:V42@eTMꪞ3 ﬒fM:!4aXSX>f Pս]r H;N Ca4(Q=@ei9Gnasc1X'!r=uN*kZ-?āzR g2 \EqK_܎N|gF)-o%pVm&]9&W1hb߄l|?5T#bK0޶! c-NyB&pӣ ?t2s7#3=i3ZȊv2f4Ck]1gsFtmw# 'cMH?iڅ˽ 4%$g#|)39ro(F1wдgkQs=rkg&m:ʓ怌ϫ )-nS xY+9D]WҥOvBhLv>;47)=4"<EJjIdՔ# 92|[-%< =RJTJ{!>mݘ7uzY9ZR\^w8G4j2tf`O" 2[VNq0 υ Jۿot-f͡28neh(I n>ٟ"ro#&SvnC ,;ۡ !8P˼"tX}~ū#2U\$+֠|q?!d?9"o{Ih:d.8.EpHr-l oEd_Nt5,t˵*ֵ:@*2'ާbsL1:òˇܩ ^ sz={~Yᩚ:LڣvcDYB!nV/ o%b*,[}q1YB7bi zEw1i Y0pl <3s^ ŻbbaJT.~ MfwH3feʩNI lXe kiL|KJYWwIt6Eepp;ה>zfB ;q~CULqH7!ܔ;A?3x"V<2ݿLd9.`45g|9HP~)ژ\UtN;<|ɟRM\56w Бs՞k[V p|"cjj^x.ZөYkʊ}N^Q,tvdj=g͎ \ <{"qǢpȍw w-DdEvcb ᕐ7OTal|6NMH\5=ԸG|&u endstream endobj 250 0 obj << /Length1 1705 /Length2 12258 /Length3 0 /Length 13354 /Filter /FlateDecode >> stream xڍP k݂www'8 'hpww n#szjfݻmW %* PfdebɫXXؙXXؐ()լH@'g+{߿bN@cLƓd\lV.>Vn> N|qcW+3<@tFwp@cJ `f bt25@ƶU{S+ \X|nnnLvLNinV`K  40@WfLH5K+`7c' M`ke 9ỲNUi9Y/XXq@9<@s+[ @QB f :ۿ[1@BD`9:Y9lH7oU2HO hVv:kwy ̭@f$artJMy!Wf8YXXy@GԒj?2rw%2 y9`'׿XYfV` _ob_NV]c6^f [/_wx1r8Y S$Tˣ4WoO+C  o wX8YL߾X?/&/o/$bkOo(Bm9@ kfV.vW+ 6~[?err)YM-tͽdlc`|kѽ-ۃ֫?U}ߐ@f,'of@?G;!Q..7Y쿈,0xߘ 7Xpx̦ 7b}sf _l/fo/vXvok | d/_ͳӿg Ru/d{'89W.[|@w)¬)u]p]7Ɲ1)TZFvIkN7"Ih[hIZ}d2ӊ4?HQMx[# e {<;^Ij.Y䧲Ih(i\<280#ƹ;FWxz$hB/uϕ 56N| |<"k */d9yBleF4}j+HPSOBvN C?&,C'2EVHLp- h\tF:pw0myqep64`VfP+'K݈%t2(T&P a5 8D+BuEr3"Ƨ\c}} C?5KGy%'PO]sWc Ae8L$r Ғ=;sUzLqʤǑ ?EBzyo7oE 5+Ec6Ըs?wgw:+IDBn 5Ţj >lv=1ISR.y/ϋ |ngkWxCMn>ؤqB AU.sgnrttxb˶RmOE:jM&*N._ `|WMLxϾS9}ˡJnx+=款 4eR^^>[b$Ջk /qV8_:1SmR[iYpWrH8\LGT2c},uh"˔FJCE3uNi`EIgح~|[/KBZN4V"nWc%kB8xÿn7-TB[1z?ԎڿQ)5-*.ds'q$3`ͪSTP )KBv=?eo叉Al 6}5@᳐0~ݩ._{d3ҟ\" `<9U)TMu] !Om6'Ko^ۊr3vذV ET?z4gB+ *M(YRa~Yl~ݓiN-XCVUTyW L,K$6Ӗk,H. !""Ke>W fPDO^sv*E}0c[~˿<֠E z˜ !qAALe*/?7.٧ mWW"m}9Y* ̼h(Ϟm̲%+|ܳ3 fVvLv9 ;"`2h"^XOF!y탽_$ {7'Ѓ(&nxxuy *Q5 :O]$6Ù0 \ bp(Dޥf<ìs[ ?V5y!S,졓_a.2(RE LSN AWlso13̗7 *UTW.[@6{TSDV;O0v^;L7Ҙ㫗)٠T(꺆:c `NZ^1PZm%F j-'4f!( ZF.&Yn/gx+ReDҹMj7H:_aɸ@=)uLnmnǗ߬~Nv"IXW 5hV!st,axYdR11H/\S&M?3]\CRMt:fT[w-x{<=J\H6 D=²C N!A^]υhA!%/Y-#!qH j {^dCUڋT|A$It%eoH |pZiX7L6Nd0 ]FG̞Aq)<-gl'@d]չlRm{\h'%<ӍM!U^aNa ̀L@B-2+JR-)z,S|s@_/7}גӏ$K+'I4՟}n{ (GH:"^GcH #.7e]s/#Q,.QY p = t]Dj\͟+M4"^uWgZI]t(.T$4:^p>V2Jo\zeKQƪwB{nF{P+m67 Ui a$0NYmI / ziVa:J~vc UoYx"NzVZ҅P2a5=y񹖵n(~׼̂ג衤R_Lh`ERmf[L\$pMʥ¿{e}xC H/6zь^zE,vqYw_.{x jZn_t7#?8{H$YqIw6x[wR{obskՎo;UЗoaN{v9|~EYFE?Q"t"Ќ&;F>ewtxku)gc=T7(玺{  sIeѽz_m+Sy4yāQng#GѷnӕeB][ >%`>+m(/ugٓ!F/#yN\YZoĹ|șHzXi.zkiq!ŦQ"u4/}A׸о.#UmaB8c4)P\Jn/Pf6|{"G^i Л1>'d: !YR~߹M\@{fBD5 /|7GK+"uBk*6g%*W=t_7Ƿ=~fr {8/ͥz`o -P+u+new5fCswK1(PPcZF*(wI_JM'R;8SxEWZam\ל h0oo]bW5P`$<3 (4]} l잾9goCjhopJwEAgyGRk%4 K ϢqI#둤-||0|8SK'3ՠG5pƮ1-a=PrV2D).5I03bqo̚z;q0E8IZ;v[y< jas+7M3߼lƮ[,v\W?~Vެi˓Lr=q%%"=70Úu?]d%sDƵA[ȯ$ո ԧto˫]Z|0KB7뵈' ˢwA]eYd=jm+&}pK4ut(7}Z숨/[!X N=ڞTN)"fb|\zö#ts+;JU"eA8#ǥpO5$1>)y3BR@eww`x`/|qˬm"˨s؇KUJPp'sMYAPAE8VѾYSɬ@to.e_Ā wOjY<2 J߬oKP/jKnĬT﷦`"X@oNjYm{6#j:wR1Dxƭ^Vb4s%CxT1$h5\]@;̓ 8% 58GP;W`WhLVt 齃؜ Eb{ 7Q/ÈBjeQ|? [VL`bxJKj}e\M-<lN>>Km$"Y ApI[(n7H_hF ^,6Ar'T?0van3`9_pVyـ\۩= ۢbdB1eh N^|C0&.%~_IzjmJ ~H]喒b,H3S,b,/Hڷtwmh*\)r)f\-b+|RMc'p|p<"NԴ1+JU%XWK$rhZTv!N Խ߳;b")]gRkED'Ԩ=2 W]Hvz/~pK(u˃yϼe*^C/61_Q#rax )Dts\x$S#%87OBPZ^p) FfMAL{"$3Ag{HRߒ8dHuN{Xr;*0Q:5}3 F J̺_*(\cOLf9PݩEvXWo5t`[՘Ҟu}Mb_2FoWy)`mY ['$ND0jrs_! ( WTSGdu9@'U0Eokwb׳6I'uZVyW>'lm]uk.|6H1QWƪ Yޯ- npN׽|zjݸP'uzvɣxF>$ >f|NSƔAabE'8`Yv飦S#"C%Jo0w :3 $+OaJ#D؅ںҺ{.>xA[a?Mjϰ?)qsN1Ʊ.Ҍ^QzV&+d ?Uoď# ̳f&q_y}[+U 0PpA)_!AՈ/3G;wQ5%I#1W 0pciJR5~59aQ!룟UTLqDB)xf6}rr&.6 Ѧ~*xfy?acJ[Fh`dQjy;#l1ȓ|Xbfę?W{ 9KG6tI]+q}ll+o,Fa_꾄{wŤZakƁo/sc4+ h:˖Q0Zǁ<^L$Y$NDB7^ݎbsN2o*-?|#w-Оߥ&CfQH,yx2}2ixI; >kgB:v=_'x 5d$/G33! K?-E{M'_aRTã&vCm$[cHPvy֤Q0b d\mJU>„JZ ĥB|Ryv"]CMkԴV: !N=Ǧw1xij 17yL*xĝHPHls!-󓟹DVՐBℝY1;_[_daqclC/l}n.H˼MtPBX:}a0ʤCbJvX~)Fhfwqm?GaZ\Tis|x(oߝy F{v=iL #W4(ZyŷZO,rMI6&zR ‡=, ,Ė#KQkiսTnH]mqK._VHBc̅-qP{[ v@nL}deNW XLj`XB! mfhSIh>2E_ ?C] zie G9Haχ~ &$`p2K. %\j]Ϙ }-f*Ě7Rz(ِb$eV~1$qjEZ)[WiۻZwr^AD2:]7 ZQkvOI³e~kN/aj2j{AV+1~IGPu~3v?"6Ԑ>/κZ?_~{ڗY?^tMv '< =Av)g@>a!Zɒva@=Qï7.ywLL^ EcFLwFxp &H2cӵ`9ĜZuŦ>awKvi´ѵ4f^&z ^o7wiܷf#w_BaL"k]DIm`qԝI]ǹkgq"D>S/:afpЊ Y?|G_(L]Yr>m4* nI% UۣRUh] }49w}TG70 v Svwɼf( TRP؎W ۦy%g$O&̸U;nn2 !BHfz&4 8VEz(otcm/!rα(lݑgإ);cǣ;<#7#x{ʁM܌qx%AŸwwL( |fku)Ys~_crCyR!|Uk~9G^TPszjI BC^<,^Xr6DL I;)f*N#]ZI/8𮘆_SڝR;@>luՕw}HVg~ZĝwEB2`뜻kg[l5CUxsaZnk Dj!ڑ C<|7m,N.1ۘgc ^Q/{\E$s=$'WpQUVNtSl^|dFc\8CbkKm#u2_1593=Z hc^%6ȹ0W[( R,!9)n_3'ɠ"@n >vO\MX'UrTӇ^ꕼkRF^"(q| eEyҐhۋA#;s ǽ#O`lr:xywy-:G˺Io<]#>F>\=fzyG !gIHN#2x.m-s#H//C@ibZ+O"ktNؗ֯ߩblM=t)cj-jӔ6g4.7ZNshyبkYwS)ͳQR ^`ֆg ljU1Y\ XfY,n^wI v4 ڡާ0uq?&g,^i53kNLtTu>Bs8R6THdhm}n7eof`(fV50%WrzߎS$ GҪg2_dەhKOM$B4>`/4s4e&&O:׿W@R+&X1v?vyZ4.D.wX)d R򾺟Z g[߂C+>hNS0`sJg%&yؓ  $Z~.7¥o)bB}0A|uY3t0LoOh:y(/$)O \-0:jƾ^V9:]ձ lh6 &3+Z'rO!yJ?$=-sht|PG9x6f)#Il°;yCR1;z!OIXj!߫lG]僣ޜ{wߐ* UÀ%{̙ }mpIT H³2^GBCqQFbepMz~cj0-^>RҬ}4yz/Rg0WTJ3>؇u3njL&Jcj71Kٕ_'%g>߻K`O9޴}б5"zu`:Jsd5f` kJ|nX\(6 .t9y &6zU6GB@M2sʝ| CD=^ -D4-~8U.!>V"fCF V*L۸'4?W׫^F2Jv$nCc/Cݲ$%deI\q8ȑԄEFfQ)ށj9b;F֔ <,CγO;nFrרķyy,'V\9KJ:*:ӊsePEzgXz}tOU}Yy0,i_9B!yB#EN9C5T܌ u`هMu@hޖ\r6[`)QA `'q,<06ޣuu>U%k'xL3ߤais#<⓱ Pv$zF$ȨWVD؟R|\O8|TpXcO_>)9f`V'fRيp?XO%@Q͚|ƒ;ZUM/ endstream endobj 252 0 obj << /Length1 2493 /Length2 18349 /Length3 0 /Length 19787 /Filter /FlateDecode >> stream xڌT Hw !5t])t H7HwHw9z߷ֽkbyys :)P `e`feeGҰv+F\0M\2IW@`gge4q6(2.TN^ kK+WpКxvAf&EW+=8@?VN,,&.̎ Ka:F@  P2S3"@  ̀.`7s PS(;1Vǀooll/"kML,v@+#/C;G)MbpbvruavDh]r0p: 5hn?uppXX;[UPN_ bee@O3+5++qrtXY[_>.&@+ "` v@-წ=zc/z;:y6{,Z:qqGO' b/OKUL͍7#On' |}V.V3moBnvviM5o+T(:φ5snW+j>bvm'\v@G+сϛ->qo|7_玝`x!׋ >@Ͽ7 vX8(7E/?"X$~#^o`/aHFl߈"qX~#No+FJ8/8oFxv]7G/#o쿈 3s?Nο$3/op, @{s |^~Ӏ ֿp wxNp물Xe@p6@p m>;nof.4;8Vɜ/wS9XN@ÔoqdGL7 8%g7G=dw[ G$.'ɀsvs;) vY\@? `? x<@pf *37߮&?@OҼ@MmH]w=tL>KTd̠ ЍXp2ٳqK=|xkjۣQ^$DX]? 1gg_@[Ny\g7^T|;>Ϻҕ=UJb4gL¹29$7{.=~Co}ve8cܞ2!H蠺59G#n] _ ,a Erfzn G ҠA1]FA[]DvfXUE.o&F!,|\}Tָ:f|D mXvES&VARKuq4d%OX 3y\D|/Za}I#FJ7ۡ;lX S=SjU_htzOC#ۭ tU]avp_kWIյ!t\Z- ͱ{jY% 1@L񺓊(tGЃ-%PIҽ1:=Y^ݡSWa"L#s$+2_*3VlrF{.km}Cҷnս;'6+ pawIyg(9*et4;q>NVhxO10ϖ$emJ嗨5"Z%x:_fDN_F!w~훥K})d WZ7ݣ̄zKZp>Ҝ~p4af ~="2hYlx*vp.7:!8u` :gc D5aM5n2u8uF8lwMc_[C5B,p_]r~oR& 5ӿ_3c89XL+^@[88 ,SLKk6,sϙ'wm7W8M *0CD3<ɜC SDzy.\`.ߏ\<~Is,^DSRCN?+.`ºROBQ f`k.,,15LIaDY#Sm|C7/ r*Uƀ8\'LqI \F%ٽ gˠ*R~qx UGO@QgJgسq։k!w1b*!aL U0 Ev3 S.s)ze)xM 5;N6"#:Y1J'ct1fXeGNy#fƭs۬}\hi#ӑ >8H9n8cGWЍq.|{>|^l]#&+36] 4LVW1ȚW@HC(Y#ʫpk.[zaR Ra|[Jnޭ-׆,\.r#6@L9֧9q1iZ€a1#JbͻUfehbFC"j}|6 L ZȆ˗f'<SuV~qxztv3'l͕qSx3gmB6T:cl m H%pľn Yr hzz.gKVw/)\J|JY^DI? Q+aIJ}^ZKu𸟜b;q-J=ZGhnu%5M 1e-i++uNuj"0( PڏBYGlsB6g2Hk "ߝ-2ӼϿ !G яnAj PmPT;aы K PVs= M yCMH7&yn5ԛձpw:<޶ilr! U#Ykl,(C` B"l\]tE7Kk B#iF6\}ۗ=6IzR f>'Z&>mrؒ"5a EC0sqfZCԀ9yzo1EJDD?Gc]f_.챞LQcyFMs|<m: 0ґ%LZ ự~{iMg=/nJXr!HKod MX5SiAF>|6325I'lm(uVv\vMc7Cc~GKNqʂ~ ~lrP05Skܝɣ~Om1.2-H+ un~Eh.A1(xk]YzN+$P\"툼ߘcB;ƱEh~f?EȄ@RL Q 2>u3yȌDf^ZS_ {[  ޵A0> ']8C\k2 U:B.&\s}:5W+e=P'0?D.2Vm)ˢ;.ʼn&]ygЮEtv,}胻uq_2X _'q!KHeIE; #=9v$Q[PY$/z}q[ 8]eKigO €*N5?eo΢]~;Sxx>'t̯Q4hv66~ ,G<t5jf ңB|9Y uZE"!an, $D:/#+:D[qH=Jur;dMYUoN凋R ZW@K4;)IM! NWu:vq:nd2H-P Hz݆ڊ'oA:fN\WZ`FtZO0ēJR1q@÷oʍ5{S[1J}_:> ҁr0x6>/ p6 oL`^:kѶTz]n0Tt*:edKJpcqhBIWj6T*aCh 2v S"PiY g_n`RwGY]CPwAQGR= }ܿ]z|v;y;8:'mnQ3rspֶlTZ2AC rέg{CaHx^'hn\g~ h>>OڌD txr<M '㷋@ۄL[v =j`ڵ5)! ;K$pSqs"Xr<=E$yzZ(!1>?51v`R׉zhygt$Hvzɬq |0 sMd}3#5'Z;)>K=Yskr&'O EL_մA61e@œ֊Z*fc ׮$Dc!샛8=+ P-k3~{]e) ߣCٍ^i,*+U`\Ǚ}p<ł\U~0sz:(5ZGT~ߔAWFyzI/Dv5D)z' y% OUt],"h\^{ &&U,(ݍRL zЪdC?$qtw$C].y!'dV`FdSZr9 NlN*|C{xB^1DCP,=L LmjB_SSK]C'!/=iJx-w7Pt?ze l|E*tfMbA9AhE.?*ïD4˻eQ;pqߋv(⅙mV;qm?@0fhuiW-mK/LW#pġacg Aeٵ} {M tJz ME߷C,M懯R>H1N'BȔ~UV[/.pJXns lmv5DOzς- R;e,, bDSL}љWS+58h` *^xΈп7aԍM"TTjAL׈Gk-0 gLҺ|go}T@Zg k?1AA湝ٜ}7ڹp*=.͗2Pbt~{!~o0L7U'*DŽDHQ| D6=-u{F"%iG;"4ǔ =|aF_5.cމ18i}`'mN\)1 G= ,9yǝ0:DIEKQiMLUQC3DS3 O\"N+ Yۜd碇g̽ Tꍍ#O?X!în E.y_lu6H_9w7Ljm?j = AixǝTlQe#Mxc4{voXSypɮXvMAL^΀}HvD]|btt"L2uzrT G*i2a=MKfmõtrZd2>,\Q ^Sp5i˔ k$+J ҔY%:=76|ɬ6[xv7Y(MSk=3Q䬫Ys /xq}AӺ`Ѹ8:Ɯc%L^% Uۗw|HZuJčf`ڟh ]!hlzBFA/rxrTT!ƙ.SvG~f͒RQ3 (w> #}ϱJ6D-9>$Ⱥnz7PD\RTf2ȄX?Y8(Ҝje 3_K'edI4S%'QhYv8ӬGOStþ|quK)vLs3+^% /5ٍ._yz=CqC͋'i?.z' dͪ'sa<(/?y Ӷ)z7gd-ng9f)Qnm*mE%*dKk {A;kyV1I+&#q%[ kgE]-RmcI=(N6=< !\âo| 7wڡh2(F)Cu7tn,0i:JRK !fS48089{^) i`5 0z}4>ڦOl)R$VaFxa RrWtA|廲ݻU4^V4:WF"8YZ$Eq~svr9x!ݫ/#kϱ a,ܺeYX4%<%mUI.eo‚v4󈖆tf1Ӄ'R)%0܃Q[ҫ*,Y^s|xs,ecL i2W^U*/7if nF)XaB2 ^>-ʘ#ǟ&8O)HИ#R8"1NLFHU:gA1 qM2? PЌ7\>j{#l)K[ mpVfsl,^GN0fA6滐_"+[ Ś\N|X Az[Ņ10??yiPhc~tίq=heNͨ5F}F.H Xz~1Vyg<{]dnsRpnT^z2_[s噟+j*]FF&t9?f"DJxKʇhMyrO#4 a?V˾kC~۳8緫$S-sO(D$tZ+B| gV DCtL9\j0V3O|,f4iF1"hd;r r-[67«Pz :C'uB hΌT= tlH|o~pTb}z|̜O_q B}52J;pM!x.LF*n-ڭ8(F\ItGrBZc眇}h#}NW! k5ZaW37j5gt! 7" P/HSEW>9V}@P[~Psġw;sn;EO)j+]Js\*Ӈ+ Yvaإ*; q8@eF}&$Dv߹>dB-(8ı J=Ǥs<7h!Y-Dhh؍4})+YZ?~lx0]n'Q4GGZ%Ls=Fi63jJÍQGml[﷼uoIs<$esx򍣌|_T?c,E~j*o..l)l2.2ʡ;ϣDҷɮOxwKco06r[Vdď_ T4͌{x DHٺQé2Qϔe(tylaq]1s~{ۗq5PuyŤfHo.ʚ͇HNU]Y^1g4ӫbÿ]B5oK#0u/NvNÁ/b+g?K; 7J8r%K{ކMuO{VjrrkH_A ‘5ߊ]FU0$Ʋ0YiEXw}T[Br0L1);9#Sm;밂75\UhMCp͛AhV*>a1P詣Kk(Q5 tzaq\헢{1!wE.^7,i>?3M>To/3LRBڵ&0hXh*hF}%ŝ[]'F"$u%9g_anT?k 9WÚ#[O[lGoI*54?U̻P13 z l(3'jp42Y#ځz$AyO꜁["}sP>4Ll50" Mr: o4>$'3[iy޺Q1DGfO^⨹#4pM #:BU5rIZEU1d 6ۨ1L̙XȜ/e5=ܘV<]"vusF֥T‡Hlc~%)ALaQ h`ռybL7u@jGW30R+M+ 0/- #FhǏ? X߾@bIgmBʖ\MIw;&P8;'[ɏ㷥Ӌ螹Rt֐TWFv-ZloIٰeT;߹wug<]hLߎf[}Z֒(3ҳD66#Iy䪣6_Ȇ6{(z!%Xr e6*z\%)»&pa*[BvpbG^Ȍgv*@KLo@2wd1N\5")sc%?y-щ^.NeㆡGGQTUQ4}ua' Ԯ8 э7`rWOA&_YW}Īv4>7zԭQ^| 'j(SuxEkp%y63zE\ MRRYcIZJW5"ɫ4b;òQj]m|hR 9DJt_ ϻ]2)n> _N|kyﱠ)>@o iI2j0:!6U}Jڝ&UԡPz9xiOjU.Xcu8gM$O9kQoJIȉrŲ 1n9+n[CǑOS㯱YjgsFYWVEA3߅Fȴ"u4`9KpBm(&_D@.˶3 t70˩$r=5(mP"=>}a^&liS]dtʋw(An!G[.[(O VKH.t hS>Z,ėl 6;+vtZ߷8HqFQ;oweF#FBfil'g-w𕲰i8 guD*l]0픩:w褏['*[ i[Y3 |χ)M$ E7sVZO&kKܶ83oA#_:j͙o(1N*g&oEZs?ݘQO!pOt_ʡ̨q-_"D!ȑFM7x䈧ObĭЯ˽f8KACR9ݻtNCޠd~VE)=t$j-ZB4-fry@<#*fN/qayY(#=ŦF]dӢB"a)JV9#x0V/!uӟ[ZDCHj} Zd*G nL Jc?rZ%MĊ1z)5vDyQrIRNDD*+;:wŅA,BbŁ ~eKrBqhL!9ޠ@`UC>'Y/md:|AGON8@BZeb k:3l풺y|hc\ JZ*޲0 )JO[[{q SY4jS2܇%hԴlV0xdD4qѝ&{h\ƣ%ͯo VBݨM"*)='*PL}Bu.}THuIRWa$S5Q߱MNWQM0yէ\,$gfRI`~r38DڪӺ)hBu;qwm)^Eeb{n؛m<\ZCWױM1>dlZ>)(f>D<F3wfe丗'aVH> Y_#iCaPBe7PV'³{8ޥ̫UE< O1q*7WJk~ ksmҿD H`/PA#[z}.};vh=u+PDkN+ucf$A[?KM0hD}ׇ2uudY"ufI U lM+ 4̱C7F~Z11}|c!=[f7)G-!'&$Y!U[]c8l7FlLsݛ_NcAӼK[[lwY;A7u+h:~oz]LN1-gԣf(^SaNEĿH89 iQDx4s DP0Y`mO:7kܸέ/6Wg_Vo~O`ez7m["}9< oRoGJ jۯ\+ ȍjxi'Ki~XZͫmlWO?s־q }qSFUB%ubGt1L箆ڊJDz07CGs**Fi^/l*UntYiμg-yp;" pP;eTW.L y]\Q0Ɏtѷ#15   OfRѹd!՜0dss;$`(& Zo6[bQW5'ٞy& ا,i큫zI-n)u5.>GO _Q[XT&HM%Ȉ'B4Qt!W9 f ['.=$pو>f%{f :"*=zU]qY`n{m '`DX4+ |螟o|ߠ,jjE^@$av0`TԕQCh2~vg޴R;[w5ɋʮb)-ؠ`zE^Zo1g%vųfAf)A) 1Y2-R/Q%lK\r9GvKHoz;k,5YT7U?D!<۲5ެO-(:YNEዯ&/H~) Z W!K1mvԗ6.r(Ԟ{b=7S:.W%eˠa1Y%:0ޕ_bMtx^#Ӿloq,U45h5wVQD =CǷ`<{@skV<}V%uiSKsd׉1)'dĵQ{Mba%U=!lWyc3S;d1b*jTcNh0$SD.fg0ҷ [`5B.')`\t>>Wy̞)%Eьf5YZ/,xPR<ˢY }r9ԫ]kO LpqnszZq~xUT"]2QwsgBM]qBy!m|gjnJ/κ۾ kq[>3^B<,gv;x`0\yESbG*B ~}o[BN|pAD_C'@3} . *n&3Xc3DMA\*P@cTyIwLȘUK#\D6P?̹WMƨ~JQ'Ї(=oFo״5 ,3jrhD^y"tk| Z+f6&9#-fcԐ{!w} ga@| iQF{ki;&HCVrub_خ: 69V5ѥ[LW#C>J.l|o4Ʋ[݉0VU@C僅 %mJwafH?H;(a$ce9)QEҒdPl#_rCIQi_(iѿPyeR oKT)AuMЈ式v?Xpd' Eb`?{šTr> stream xڍtT]6]%Ȁt)%"50- %( "|SZ߷f{׮#$"8\<"5>.^FF]0Cè;aPe sĽNqo] ((ed]V5.2 ra9z6,,ow4  Bx+-(e7@GIaϫW 0%@C^ C~Ca`ŽRZ{~s\`/ܿ_J"q~' ,o݃w[07gk0+GP HIO{?: #$  wK[_u=A}a{ 5@]@>^ [V`Kd^ C<0< lY7[JOWGZ7!ii;O+>7j矈JPk@ w ?gua;:~AވG?o#FY~jxO ~#`{o?X dvqoT a~RPߗv4K?܇ M33vkO}~CUwJ9% psK/rZ5 Cܻap_Om/ 0?Dn}7?=A?"a/!gA8s30K )*7΍IƍoY9.鯖R_XN$io`6$h5^y_ko4|#}]SWr[/U1)fɹ[{uwP̆fʃ QFS,2)14XlS'Yw8>|y^˼1Ӟ_Kty(( (hPOƙz-ɛW![,C&QJ nTRȨt13(/+ [8shi@Mlƫ6; n&vh&g$ԕ k8ڔ\#^"ec\-M! *b krk_SM:9WbvXj̝KlEuL$W ++.89Ygյ5!"pGI`^HhsfeW\]s@`{(bz3}ztSfy, hĶ^e<.CiAq9!sŕ@yVru}xt<5sBFܾfcgiq|O(Nc%WBSCÏs}tz>tJa3Ґ/U? "1^RvcEר?V9\qL$c$|UtN H枴, m|]ڤ+ThZi[pTȚZtзx>V@co4+XiioUA6C'#۩?s>FyQ 5^=@%֏ 6hg=] ![OeBa>qt/=`q AXa-$zsT~ 7G]ݽ-Ur΀nM[-_'uco۰ GB%Xv$D$Hr՗JZObe;0!|5ICm]zUc޵jl(W VUvtzM oAU')^D׽ 1.\ 5$=sapP',W;b .b̕S.=o EKx{8qsr L`,?cs>]gl>ͻ%z`oQ{G%dsb;z=; tW=]}S{?R'_sZyN8bI>b/يuyx eE!!OTU%'NjSavG&SuS &`eklIriW&mTޱ;ۏ{֐u6W):ϨdjT%;a`/$;ؼ~= w.%&kK7v '-˓t܊&X sZr.֌[,XX,N/(]Gilz纐(; e'䔊TiIY!7LOLC˞ślO'oyE#3lޕ9o ]n=Dѻ"͈D&w DS˽ v:dL]y!~TXp$PZ I5v93d9BSuC%{|ם=ÏX}KP8N߇ i7|Cd@C we v#~QI Zwh'%mstz\Z2|*+W4yNuRP٘/3EZȦ>zs7?WchD ۳#`Q3YY)]۩=tvSttb) . ьÁK DJV{9{i:EkP(&sMiT>|ޥOڣ {Q⮪wԟ'=^XVjEYC1cm7)#Fq_NpxUUߠ*(mH#~JŬ쿘y6qx< K+pvr$mAoWU\U6{tޒÆ8$JHlxYÕ^rAg 3 -o<†O |LMsٸ#xG lGiI֗pkLLOeSPAWZ>CQ >+$()&Ec]T2>m7񋰄b I,Z]ԩ^/Շ\1`Z˙˄ cBs^$P[b:CGt">#l!y璚iriq@nR[0(GCʚ\NB!ŐGR͠Rh A\GS݄EHkLQDəIY*\]g8r_9-gڽqo_~ v'PGi27yq\JO]Dd_NyȚ[Y.mf *"O0Dfݐ~Y7dNR7?RF7Jƹ ?^䓘ImD!!yOW磗. (uzW/~Rd ą }{k3-EK0Z[4 {Jp3{qe 8/w,S-.?PrW Mݦ0Ұxix6݅@j bҰffQIeP]:(lcG)-KwuIT* X c]% gКi5̉UX(5ñ!AM佁9/gB PN[ub?^~w<7ڬkJLiZ y80ʓdDaVaŽw %6\^X-])ܓٗ?a"KLqv2_)ʻ\(NT͊*]:bܧ.nr&ϫ+7QvCC @ڶ\mI Em1`=K,c FO/Yhmn.ԇ\V?>?/Dn4襼}Pu`H:n}dof7Ry^@LGhRوޡƾ]5:Ula*sXZr-n2$3u>~&;ӖfE1ʛO )GF2Jϣ~z)\JA :XD]C)0:3N3utrUa[\7a]TLfȄ:Q'!}㣑ɵi~_͙z--4l',,#WE)f,DEvId"l2KJqX+xe 3Vje2)ajM2`O dzOݾ{wR% oڹ Y4[ +~6([J1R|gxN=*㍼P8Gh؆?_ ^6lQ 3F>$߶Fܺ˓k>MW=e]\/\mh R|r$sVÓRVV<\؋hgd,N &#]Ƣ+xa+}Z"4yeaj l .Lu) G8pKL. :O"5cGSY$eo5GC\|3 Mo~7E X8(OhducЦ)I'{B[8r=ϱ{wi䓑9r Sra~Á١b{IbKEWZqt{܄xGF) xWN2=ΞGJLЃ1LhMvHNq$֩ o[ԅĜxmP#Blvܮj(D| 'Wm& mb퍷"͐jNZjX]ڼ%.lh 2Y::|*饪wrl=j_aˑ%ĺѝvv6V#纘`1c"枾٭NFrEF@k\ի u3 3/D:މ'dtB3L\Ү*^roBO^H tD@u|U@F Q%M 69~Fa-p.@;9`g1DtxH-DENd!F{-)ţ=F=٣%1 id!{ta<vf\h?%\W}Y¦+x#myl*8CY''k]qy 7Ku |D/" i#q.Wk?ʤ[b;TԆ35hRA_3'wI´<$fwJ2쳷9xX|,9A}cwݭ/%p:B40*\uA {{K"nDg'Om{ cOLH0_Sb;.#w5칮;$ ]dx/Qʲw1|v?gqj*8ͦj.qs|Z*j1vgN$z w]Ȍ{#|b\~Akm Я "-KrtFۣ"r((`wS9[Yȳ_o}fJ1tTC sgGؿgr荨n*ILt/6 &G8_~S/tk+dnp y&)`tJōB۝~[;$]RyI?01@7FBsfWMV*ٴ~<=ONʆ&oO4 dNezr|tER/긹vRg]D g"yXDlBi2&{ }Z\aְ1U>"qd(t*Is&%onlu5d0zV[ES(0Z^RU> m>*Es~qrZ qu{HLvUBRb}&=I)"=V?+|ۻMQ \f .IeIV4E?tfДޚRI^y9=^fOЈ* 2©r^~8"Rkhnb29 C$ ~Y;diň0̤D.q0!'lu9s\itu՘]u$ %k'l:[ Jq[gcum|!9Dc!=7mNn(mDs}$,`W whΣufZ|W0DM3|t:c1ςSCN7{-٧Uۇrgt@Já5r܌b}Nd38>'vn\R%rҺp,F>2MJ~ V 1.i(qMܦ>vx՛,0G„qÁ.+Ջ󦽕3f\ /@KSSξN9C=wHgDrmz$sk:dce$vosz3Jj=8'6s R8l458/-8̇jlTl7! d%KOD[!Nɚ#ne[ǎqNkEj%NfA{fa-H}j:sB?1懟swyo$0z)7,_C,(uF%`mNiC ŗ?Ej#{CmZX/ ЩvC}b^\oD))}^mK4Nqi`mܪF=:mߓsP-n_Q g:vi"0:Ҍz} endstream endobj 256 0 obj << /Length1 1780 /Length2 11727 /Length3 0 /Length 12848 /Filter /FlateDecode >> stream xڍP ׁ:;= ܝ\Cܝ`!H.#szݻ{ݻTQg57H۹XqEu;`Qih4.6Qi NP{;E;A./6 K@A<@ O?@5( Ψ4NP K: 7ex<8AMvE%)no xO zAK~66wwwV303b P8C f?$4,9]Nj s~9jgqT* v+ r V}DP?MMmvP; 9PR`upa8ۿ6`?R¿9:A\Y6hd#5KڙB\Q'uܻ'͵w2ڙ!ՁM ;ń<||#ajG OȟN /2 搗/Tog o"T`5u@,vd1C/wz/˄xgٔDEE_@@vO 7;?e|xq{2^VPgrM_?/GY_2rOWl ;e]]^vCeCo6䯅VA]mW#v/s,@]L-⥄ b {iQ&>8Bw [9,~_` `v<ݜܕm,fyDW;Dˁ&V.V%:1.K|n0Lj6wkot5doA"sO8u;7(`f$}<}Ekp`ZBYkc+7h'Ux8{3+ ghӐifj}[(ͽ|ԌE,ؾ/&!P73 c|*dG zI3 xKY !u[*V`J mm+v,<0rܲKk+K$mk.b08m+y) x>[Et P%N9m#(=kGmn&A \.ȣ/(5s% V\KB!d _"jXb>HyVR`nErNSlK[4xyT(r 8?sd?3@ DXCຝcD"gK8sf;^K41+FWM_#[oGf-!߿9>Ɩ-Sr`=UMM`jRb,lH&JmAU[y2TœIB~&K^(:RDYI 2\j%%ѝ3YZFV7ὊE)􃙪S7q|ֲӮ׆&PFBCI))۾W>Mv"}ʐ#i,BDEUg ByF&|x$am]Cok&1d xGLҒU9cG7N K&1-0tf`ʔik8a:C4Iʏ b6ٷ=zm؋Rߦ],r 8'iS|aw{DR$j_kйٞ1ݟ,VNa3OCŪ4)-}_'A/lD#C%:vqY`9aoJhZh\=NgjthdaQ ,7sj_#})?!K@h2<\o qI#Zu-Ej Wݪ4O-2zt,l\,x5hdy&9.]1k{QGl\FtQ2j>( ۔'tѼQowhUU0oT+ NCxk*Rǚw \Ԯ"oaߡ(>9>.MC?pn\C>4\jR xYCy?eqͱHJW?anlm$W0UkF 0ӅoxO74#{oY4 #ĚyAz]4I|N3H /a75]Fa0tkSxɫzy`G 9_<%HIZ UmYr]ArrAG`S[@$xǃي„Qֿ{^l8͒߆yTirE]sSd,mMK};NQ8JF tڇH.!opwE8tB]L`%-b;Z|aۜȍ }ytdZRصcB߸ÌI֌.. ESJN\S8`-50s6->&ޯ&1-w,:I6${GR96 z2j܂ud X" l]0OIy?d1"φ`ULƠfyZrW;Ăق_tPw`wJ/7iwQʗ܆QzgW)2*+&-zAE o z9oq]/Y"W5E 3'?rx>sfVH{.㥅,/!G\p"bd[{s[&X!:pfF&]*7@ϏAEBncCt!nbrz#`qr+ʻ_D H9H?"19<M7=ǹkɽ~3iWF {@QiC_kQQ1-b6 B'4W,%rS¹5~[x\Vo^$s'ΤGWNˊD׭Srm%uk r2t'|/>'WIP wm1`$6 _^,[P2p'S6l R~CfsCFr3p9xͲXv ۮK̒>Oŋo(<׸,P"1I~Zl`0*XUH66aq`bT;*hVnɬL͖|2f\Y2hTЂ.8(IaBXwF5Gv^it &^YA *M_a[Z mǧau٘$$ʡUFjOR~Uv+i%a~IY{78͕J/i|b3B?J9ˀRa3](\)>g9hK"LPMDړ~dԽ= hL%2TU S)˩y2އX ~w|Z'qw 1YqHs>F݇^*3x@aP(MNƨƼV#!RG *BjP]&CҀa L&![[&&CNz=ɬƻ9P8((q)$y K&< .^zuc,I ZhAl:H!2C7Qtב6B1s-w4XFz45;}TNQPqO3)_UaW8MMC@Gsqh(Jډ%*9Ե/nկL_9EK;ޗu4!f⚙j'4^d%3*wh^C7ۊ< =/*F2FY8|?-#~p,A !Nn6$Oz} xGjx2.\7AUp{[-N(\b&JA~^X82Id c<1bڨpx>S $FvK擛SQ=ju EJ` F0ud5W& ~",yǚqku*&ÈNq<"8|8la`.vy߳o?'TT(7^ʤ J —jfu;0܎Q禌T/e-`jD 6FrqHNjy)a:[ϙ;(֜?vg[?W<ְwSu熴Ď0*UPE܅7후'q2Rsy.!v . ʙjp'J~5dP06>F-zĨg}*[Fkh+ˣ`׫ߞV7$pOr!ִ+!ZMlx-_]r]lBkyt`ŸuٜRY9T<-<`V!&}MmeIzyڡ i\ML:T'w F0=> 'қ9Zٟ1%CjFtc_Q91%Zg|Ƃ;)啚XtyC%Ǒ5k\hni*]µ'6 z. wwcNоܑ2CjII2j:}֨J2 ?3 za/QZ3rf1 qNKГq{ |m|^k/ъk$q:!!Ey.ϲíA;Oey/"P{X#G,=tv1~ry i/W*\ab<.ց櫗&(O'J1/D<*PMnL0DOe Qh(W'+rc;\?*`0QKImǷ͍ LH Ia h*;18f>{mY>-=p[NQ'?z}s 2_d,CO Gy< krX.FU'L1a]s{!\{FHaAP%,~,2rnאے\W97Y5 [w._1pg(`z߆$ ZIQ95}]s"mh٠L>z_#hl k<)>哣wȕ!ߢvƨmy'&9έIםzAZ|Q7YUWQ>؂! Rs9!^2vNc/!6wƾ>b=tA;!^dэ3W3Ȁ/v\èz&b*\"p*u{uP.YP4`o 'Bɹ7+aBi-vZzMDyzΔi?4`A50â-؜O[F"߹$~W,W(Z, "U,{ӸӬ%$95ު HP=rqǿIfSȡF5((u_]GsCL& q}J*5ͭN~8?yPFߛjc (9ܙ|*^?b9'c17[dxgLh1n.<ŭjpZ Rc9؅:v_# ]8KdgjO?Y۳s͆3jJJƄ '׊z*["Tq M؜\~À9Mm`#Pظlp F-'J^1K?O? q2mY8p:KW[{R< #W:o&LX߅K,F^`QNLo.ܳ`gF1yV}b`]-QRg}IfĖS^ORA}M8R*8_#N䵘kde,b#fgi]j( 2O^BK ^il3%3%>*!2kw:W-2yE1n<8' )k-+3FQ5U/9GADz8V/ fk8!%E&^ lNIf"0?z݉)[nڎ"4*_3QM(ݙnpZ\%NRO+7fk?X G*OnTUY@qӔ6O7RzDRm4z! ߑ~Ck=Q∷5ReaӸ­VM3˕>$_CMT,3/ ^EҀVKڵ /?'e`+t0.9xc-)316fo 72ܺe*I>\ze9kf2y2]W&BR^قr#+׽CCVȎ#=L3kԛs .%ڨP7:U2uցsj{/BA-A\8O淝_妄ʑ46şzq~uIA.HN{+*t;V@2rw.oؚ/K(uj{ƪ4thБeetPc5NћowY{Z!CC(8oa|>ykǎ.hfĶ;7Z(p}'Kv C!B\h:KV6mzf} (lQdSNcAZ~ÞNǹ\tΛ'v#? BYo% 5LG LUj\S[`foӴURkL r|]6܌ile@|M{J%l)U+'^Dԣwn<ƙJ!/d̶څXA4IA ιٯtT}?.!_^myQr` Kv/Mcm/\iiWb!1Fnf+h Ǖy] dhnկM zt*I@!3Lhoٮ{3c8yZyΈKQf].FAK2aẋ'S:G.Rq,dž˙^l@>FJSENK!-l rVTW6;/1RR #kE0ƞ vg#iwTԶ ct=*BAs?_ pF.."ۊY\3#!*I8LȺs$ ̄qO̕qf"<8)1M _xC,Ož^BV@->aI>Hj %/K[  YZ x3O| yZv8>|8dx-;8EU ˫RPNNAUZrČe8A>f25"m&_ph^85! 7U41 y1s|fQQMjՃUx]r'82wZ_z2x ӯJYLsajq؇ԳP;Q"@df0}Y+wlI8Q]T|LiZbλ ~uga֬cxp&h*7˦S`QCz]LooIle=4T{mDVhIQZy!D-' h>ޏe?<׉s]RH!7X3A0Dn'Жa^ߍ5ۅvvP4B׸VݺOQw~Q+2{ ɛnwt_G+,TlƎϹEije \Hߙej wA9^"S_]@zr_O`$W<6/7b, {G0AG=i&RR_ϡU=J.YU_cL2t!-j_b!c!x~ FNv8~""!l;;{ (f?|֠$ִ郰 k_uĥ\z:DqrnZGZ&wg'3EvN\&B7S_?;i_v1~sFK&LGM7Q;m؜Dy,?I"(Bz2KaX(6N ǎ^E ?&13[4kX&eRiD*~"2 9|hۭ餜bX` hGK~,o{&Gin؄wߊU6cG.C>ps}0%`15$v2h>0wU#F/ɘkBQjIrJ@{1P4D3}DHDqŧmLԧHVdٱz+ZԓLw҇=ŘT~tsErD w{qLX%\iЦYpfl},g Y㫠i. Lrg+߃Oyty4{*{6.<6##XpX2͵OdkE72^GG;fFT=|o|d$_F 䛩&JjYw>x?j.ƴ蔴FoI2ah8,lTrP-u/|n^Gt+_.ǘ&xfݿ0Xc`2=ap: dO""8j 5yxoY?jx,$,yk~ :١ :U!X1m#n3_eʋjz 00 kxh ER}!9n*' XkiauٟA<@ f2lΒ%|3\Ul0jf{0S; SIO#!㹘x2 --H/_@> z]$Š%1Ֆ)~DEN nd/Oy&[ci# %~FGέ omQgߌGUNcGGv'<ᄤkQDp/epbOʊ"FI# _uzR!AetE/B y jrPlΰA@Z5Y]#/Ş3G82?zĴ~ ^/ǓZe[FdAٰZ ;C͞2.i:IwjPǁvTqؚs2-[cKӎg}&'q;czk6&x>z=R)kŖ3bx:眹> stream xڌeT].Lw#]fݝҍt )(%% gƣg0p95{TEQ (WTW`e3!PRjظh(n6N|وMA2 Sw#@`ccaɕ aicPd99(ŝ}\mA/ƜQ#@hnjPw233-tz-(:I amo+ۘ@<-@oc0S+?t9_M͝M}l6@;ⷡ輩_DU,Ӏ -h!ttwC+TyZl[8ZXNÙY(++ daa5z[3v G3 0f zV/B`eXؘ̀V6Ab1h \m,!d?CМY891W唤4TI7bpr7IULm_Ng*3xg{hA 4@͟-0`d1bޅ[,[$ao/ ,Ll}clwВ(:V6{6V,VgeMhbnno;@m*Nn6/ #vK Դ_N7 `j56NN+he-r3;awk8̢EF\f?,% ^?,e T@JSTjȃ`@iA N/Ȼ:gfnccnj? w{ ?rbxظ!`X#fg;ك%=%@vPNY6h.uM_U`kdaionA&VVL&t$j5/ / /j_T?Ip c{YA+#Х'dr`+$Ѕ'h_XYA:Q|8^^?} '?$@".Uhaf HWYAa)@?.@ٛYuȟ@5+frr/j_T# t/ '8/߮3p_/ 4GX^p2m o%bܛ`Ҽ} @HakWIQtÓ/2f-T @2ˎW 3B&Y@~rOC_5u>͓Ӭɕ:-AĞ송x)SD 抉/fh(hX6ѭ'gH_ge:ުDtA !g ?@YRS/3X9B 1d!\aGM^r8a"N>[/k=󪩹E%!,@NR6 O{\Ռ_nO 1s[):汦l8g}PjC4fe/d"79>ekYԣ,N&|Tj>52{^d8EUG`]h񖡉Q| eEdz?Ws4Jwt=o)p0<4(O;A-36y]nX#$ CI{,h6˸q^3WlgQXJ|lH)mU̩p>?)Čc1._FcG#^pR-=):|}%2CFtM3GOKrdzH$?]Pg쟧o7/JJn6mkN9Q;ˆNdY9*cFl tSh]ΔX f'M_qQP7{z=#31Dkuid pD"lv$c,33\7@1SkSǘCd׻c'}0<--l)\&>͘~!OWH ZNk1ʗelpVmTq!Wc}Xr7!51,WZ]/T uZ}}pH'^ mHֱj2,In)Wè]`w]uJllSjzz3@{G#$@ l{EJTl.Vܯ?4GIJ 6Hb~Nl!M>V=N }a{&, ?|t51ڄ) ccnȡ&%\1oIS8}k#cjꏽRiwG&9ޣJ"VVdU݄Wʧ )X._GgdƵVqD/~YR1WtG,N"`fFfOb=(?E4I `s%еK_Rګ,*(ц}fC$&TsF^/]򩜽 t+f!Sȫm;QG,"`Si|URǧk)໼!"*qf9P\eiyZ>zh_7oB0&>IZ#37i0Mшx$HVY0'3$Z8*?]C8Eƚ/7O2x$"g]/0e?t]dx7ֲ/hQJ¡B*%\ x_S/Sz7`F=),u4pVJmJ4tt9L;CKQj& #Q<6qF0鷮ItS*9l]:~~.#怬;EݪёM;ӂ4Ꞽl-Ɠ:\s x,<RH%+QwJ9Kj ('UJʝ3!&e ")@fՏFjbuųX&sx/c$t#{Sǥ~T{v_ݧZugZVoBPzߺ=o؇K 4Ona4N ?]8.(lt?Ub[O^" ?}|Ç j^YJ\qcy/\5w&_=laXFpegS6OK~ )N_̑IQR%$f5mG=TX0e* K zt]Qi^Zb'Ӌ3'EU7'^Ȑ5*ߒE}B?: ^(X^.DyK>Xot dE'ZbN!NS_:yf !8 Am,G1&*V dA@푯_ t/e1J,Mo*K$Z>ðԜ$0`"⮷Uޫ״ʝP 6}1L"Ռ>5Y0EJ4nN0U1"xʿ gܳn}V#jf܏>Jwy &HO}<e67gӝo]e(E9s'ae%0&ay": Z35$2I': GT}漸cZ[xp ަ"I|[#~V^ك{N!RFt)L Z?cP55I撜qe}|)`͈ɀ$R}2 Mv00yuOvq9Nd?P8 r"O0`D<|vauUD\ Du'{FLĝBnkw"wJV$H+# `7k&  \eJx - с{ M J\$2bub= )΀AsHOLJmTa׵unJ$PNo! &. @_a^T7z1qc`{M[yh_N9Pp,;Ȍȼ6E MeWv Y!`2#Tz^, jYU I/#:P^P/3X*G'TL; \m\=<_퍎2CG8;gjbtVuO'D NEhqq\yW7}sJGUa=jyqJmxk.jJ&o/٠Cjo'ѵ\> M0@L[~ٌ!)D)󸆸+%[wayYJRaPecO)`õC:H&h˴C\|yN~}dĶ$OtcyR 2|otjP/p#E'54KsA^7 Cڐf%j|Iȴ7^L{i ''<Hi3:.OJ 9={j 8YDR(۷G-xJ񻚕)HHU}aS͡;5Bgcqsß1ßss9LS$zw!}tj8aPfh:>-)cjnREP5L|Cp䑅Fȶ7Ez gh~]LO 1i$U溲(mӰkZC7Amrg'}Fx|4T kZ ~ըҢ(0Ɋ9vv*=֎~"\]X rĿ/cq|G+W)}ŀvJ uI \[{Z Gűsk(x>E͇V7&?g(1/>lQK8ݡ6υIMfeXbIK֐4 %.;'߳=&ig >X4JrthUg;Bnpafvm( &2pS-oQJ8jg3yg NCCLw+O6.M{Hي[1ZaQS0!t+YH:S| @؆v,2\R͖ބS( AWIC]ScM9;wprA;ß' :*.6L,CpQ9N"߅1^3\>[i1gy=H^u4V~ l|i7_;v]y!Ϡs3oź*F~|,ʰ}S&[ם`ܲ!hj90%RGR鶬{| o.jI*L-D>}yB>OrW,> $+IC(4Ƥe/dry:ӱ2 bF/?D HLhlr8ĎD6>vL6`\ &w~z$$}aJTb`/Qŭēyw |8>ǨL:+שKQ4ٕHD>gɯAiL~DPW /GQu&AˇrC0BMo Ԛq~Ɯ1fn5 O (=QG4xe}Bg{I|h@#\n"KO8`Gzn)&VN X:u&x41HcE1ЮrY45WJ/ i'Dc` O&h궼åןpnx<G@"RSoqXGӼ^'@Qn,G'})4I>IJQ1synTa/5;<'զϣvũJ`'~jBj%GT"Q yʪUx䥨sREބMsv *)rXWZᄉWd{G O{Qq{zD͞路XOU sW 7$X``i(ōwQSxATdS-DWt>|rGzI=\9!0c!DR]i3C8~ʹDJÑ[v9X?. &%rJ3.3ŖϜvod υ7YX^q$ P&Unx%6|dpfWkebD]ueWR3]I]XeYF"9vm!Ҙ-Mj f/DVY/N Y ո`;^1*~(mihk]մӈJ`E`Nka1ɦ'884q,(vwFzj(~RmtT"bj\k{x'HǼHTCl3VJYi]>5U&isQIѤe Q kI?Ε"y QvN8>#>\h /~ )ƛُl%弅E^d)km Ic?3'DʈōNFϔ^03Q81B);3\+n5Da"-!OCA7|}^ǷE C.d!18vSL/6!()\-zCW#V;f fyDZ*ɫ{[.Q˄x#^O?6|m%g˕sV҉UT1wNcK/x~i&9^Zn V`ߟW4\R88ʣQ_1 7%/㒣1aŴZawO&#?֪Bʏ#zNg,ajt)8ubECqY)3tQo\ stvx @sg\NWF`&wpd;x|I WM /-1L̔r8_X3KLrr "ITCI<$8{“yGw8OΤ'RoҦf _IV%lտ7 =7{[e4xVoQ'˼wf^lےJM}W}(r\F"G])}qu:cV=)Vƈ>n|̗ zlzБLݾb#=Z9CA+1[r6G/D3q {@/.N^&>1tەJJ1U l3eV٢&ck}+{;C}C (ZVR 9!m.&6KDmYC?7[ Lq !fP7'ҫ%#y>gnHzdzYj6kѸ;{׃Ђ["t\hi{v9@sk: <fA=1;#!,]K2hwt5m2sZH5)Pn+%{M_Q^Њ#.3{akHϖH$y"+v T ͫ/q>͡_TZ*zkl<0/m88(͡b|[sScфm hc3T_c沲[qj-D)YTp՜D[y5^~[Q]} QY>!]e-y [lz d|sC_ꇊ+fHO~ܗhuxAnzUaަi 4w[m6Jtv(%) 0 !\ղ^h#Ep`f'/0v_YAdJ+|W՜oW'}8$7:Pʏmr /"R%/qmӊuw˪C/t|w6 3>=5gzBA~G朢W+ f(e|ɌXː]lYkH<Gȗ) ~XՑ#Z8-}\{ meqSi;0˚umȜkZԋ&nhxB-zd/1:f cb^QMJbZ)93BNdYt~NЇa+ Km `EH)4嗕h[X*ilE j ۠u! * sSڵZiYvƠwnhz3UVzXHOf}GA4btuJS0~8OB-{ӭ`ט]%~_`|Cjk6([0a(̯+x 3nv_jDx2Y B2Ae "iO2~O^4$h3j ^pcIQU}9nuZb;~sqY3!Jjia^,q^k-~PP 'SI)΢j{g{~$=7w e98ካ#nձ!tM QLm\ZO崙 Osr[ yl#6PV(ualjՠw@| B\}/{@܁?vcѺNKs{q2"{"f&P 9u83ڹ%HriC¤U98QQQu^\ev( lyڎ uh5ZMN6||upØ' 1i9=Nr@܆@# ~YJIqո*Ƃyc@y,Wr-PĴxS^lբUL{;]OMzƘ9$5WYkPNO@IZ+b/`'r}@Ͼf =+Og=tFfy[I2~8p;@Xcqa ~Nǯ .)F.5VgTmjV`շH\ ͋ dă#BeTG&)\@=UESRf&Sű;N7 m(V!>@o ;2K9i6>G! ]/r0նV.L%H:q mpghRs_#ѯ/cg5 8&I [Ia7{>!4" }32ۮ*K>\A$!i{Y3tXsFu,VJ5 -`7\H-Y:'u؝\TmkBb[h>,|d d蹓f'E+M|o* I,0(kڀ~0jbnZNSLhZ893(|:Oo349`gMZ^7Ծ{]?n&>i,TLY%u_8%C'O/*3 T8" zȒ\P }b1 !;n _O"~y5Row1{t &Jܟifb;['=4"|vVd1E£+$:J_\qc$ӹ6 aS1gtB5 ;q[e4OL/\7ǢF3E0}$x.}0i&nt :IĔ9Xm7=ph~4aReS2#5ZcP8-u"4܏KJ S@ó|* FNVyR53M(]Gγ3ץtieǏSDLϗǟ>΍9v21QEȚ}T/u2q'7piM1e)pEk:+dz6{KX/o,)cX8dTɃ˘tz.K Xq!tھ'4C3s忚u!6B3 V\cG6ԭIv%,ymߥ2YSjcqO͉іAU[E.W4*hc9gG)h;w|Sl|f̖g߳ f*ݕK/ $:Q )*,NFf7ԡ2P]ksN=.ϞK%|_&U[o,UA0R2D$gt;/&mowfqY/Q>W.nCȷ;oӄ3^6q7S<{v1m8r?\ CWv|8GLeZ.CV+%Džnƾ3d+2lnZBW`4畭t{,%㵗|Mz@jmK0k-kLi [><_lێ$Khg5,PjlL@ffIGFJ?ƿYg<00!ݪpFd9dMVd$ǿA8xUZ!8Fœi3Vkh[٭ӮS)Ɨ$3<8G:kLJlBJM$XΎlHի dkHɾ\l#&F =2YCM9y+Ln$ҷӲˠ${.yPagځK\!'`GƸ+4SW4aoh]fE60)SL|JI"r[:UMfFoZA[9M.?7' .gD yͮjgRkAؕSـWkdKBay_v؏#\i9 %]y:j3'̜VI4 'il$U,]G֯,o7`\Wg6wp;{rK_TJHY2ۏ&p#[ د'[2:]_cT'Z죣6\ڞ K/> ^0Ex͝@d/P1 67 <?)$b8kB L|YTʘid=i+w UYzMG!g[z56\gѳJPt4R‘oAqfhxF ] ۛ+#?;Q}dYQxm$^92:kC5{*Z Ql駃-Iyi*61IFV ~P:s<}IvsW~6:ԫL9K͂UZx +4vިhc}XOGԈQRN` d[d2Paq 2sJ]o\2׮UQZ+09x}Kly^m#"MCpRX504G3GEۿhT4(^'KbC=њE/~tE^o%dr E vMpb;jҋd&LTԲGȌ)+Y db +? Wy>plY^۰5!w]MS擃*2X;Dr2 JUuN^0[W\7L4aNqhP Ks;5+G:Fj_/ˣ(dxɏ TAI{^]I#p6(#/+gA7*؏;É < 2Y:#R iKDc;EDE õC!K71RUv5_Ucwuܮlk:>ZWY𕶜3$N= ,/ RW[BGB/`xko~ ҹ(m+I[d^]oіzV,!wX$5iL>#ߠ||G-+<;eNW'ю>N8o:k~D Zha6X1P!OTcf8,w>b4CZ|sY½ۿ?}$%w!S2,],^5<\;2}/r4F>RJCq9*G5aMO]5vk Wͦs,؇*6ʗ;IٲCc֠H,\4Yr`')&@"iXY"MT={U) 'E)V%*Ne_k0L>.k '%hQ3wQGB|1 auI ěz\4g6Cȫ{AbR*tW-ڌ^/,_U]&O32*8,wI:lWTf ?O8—T@/5sfIKošiE .px!樾7eDu2߶-U^û#nm*]^7a)VƄx,[k?W!_$}o1m8ITaDO:reN7e69t?9!4Вd2;րP$uu8|`/& +2˖uym>Cۆ]2zK$6/j6 Zs !*TK_#Z# UD~́J@B!Wډ6,>ĽE-s\?~{םt5g 8F0R婩D_]D479|wT'QO'iTD9D= !F39 endstream endobj 260 0 obj << /Length1 1401 /Length2 5902 /Length3 0 /Length 6856 /Filter /FlateDecode >> stream xڍxTS6"wkEjH $*IG^#Eқt)J/"={ߙgfgv6;1#Re]cK! M(o;> EGm*(4PhyB"!1)!q)  J DxHT콠]F+#}=N(to\ n8p tQ`7tE= `A(qFܥݐ'9n>7 0#^`G/={7jg(/1#!pG]`w9п l!Pj:( hC"^P{5EC=~H@Ba8 J>fU2 G!OWOs]o+E]} TAms@I11Q!rUیp@4PP@ts/$pPh3 ;kp[,faajJJ?$_R _'7V{GFM8&G\Ɔ z!PB_C;_YWH`|=ətu}L0.5^jNmW0@cj5`q֊3 i>F du!}3fI{#%1BFn0?6AY W 2BɦP93&DUg5Jy{=֠$TM⻗bo}ѫD[_-;l%-L-0P=ֹްn[VH x <2cf4VM;)=jK<Α cVI0HYZ×Қ@(5d / 2L07^@<+Ѭ56AF՟+"7IAµ+X4ƽy}[ԌtVAO{(2򙻦r6~5 VJ:-Fh+ԬK7,L Tn3C4<]jOiHcN˭y/>QV[sz6m/#\Cg|Z[A\NW2xlKQ!{1QsHϕ t!=)v(dx@=^1 8(<z8aU}U]Pa/K#,2Lfŀ3ArW,[#iYÞZ;\<첁2pC8UX/EX$=S=@kX֦HX  TPv|C$jge|a{!U<[ GܧkR Xzf #<` w6ɧ`{S̵Ɇ5NcBkO |Eѓ,1%Y"/r^MVbDkE PBLl(ѭ ;|hyq%^E(Ƒ3;[q>m~M*tS`X}Eٶ,L"S?ګǶ hgA2`epb~qMEE钆^ L TM)t*CTIcp9~%,cb#%Fl[ڤ~vLP]Y0 }?KB`b7}{jt}E:DA#MEwN3>_Y*)ȹOn;wcǯЀ $3ù<˝<@;& p3o|} ؐڰ܋jt4;a#NTw 7N p C̼ݯOk&7< 5qɋqRqS_j(E݁ysF=Bֵ8;r@qKpU],t ߺIP:u\oVfXjx6ޜoţ@:?gH ]@)W7Moz}Eim1*[7=0j=U\ƋnxFЪ׸)0 A1F4>+K!]ޮKQ4LBxPޣP6 ƪ^3yh7Y@@wO_&3Oh:)&&-nϾ%w'h >eFqO .>.wp.y^~!́> h6#:N:9e&-;WqBDq!q<:F})F$d[+WʱR2ю1s%ĉDbӇx\!rPzgo^_R )XK^Uؾ0l2m>O`E` X%b1LȤQHȵj4CPU=G]qQLK}_ ˶b/̽~{Ōa*T߅תT_:ПqNcA$xj-vm vdK0B0){%S8S\y)_pO.)8iXh`.5s->8Ud\?<0kґFڛ3Jwtc-*=BoaBbuq盨Yd4vAHtϸlQ^md2O#v*qh=\΂[:˰8'봙e;W2zi%G(ƒhKVWEM(njKf?-3Mt88Y<6 ɜ  uk]LStud?w+y@D52}92Y;!,]eK_79Krngavn$Xi/]Ft2?vc]~54Z+rXx>!LT^o.&Os|毚B9\;dv-Tlm˙{f}i-%ymp2r]$;3̰YlrJA[MLRuMI`U$MY䦝'-3۝vaj}E- J~6DOB؍;drV{^t{k֎}ɿÐ)Wȁ\i;l)UVz<9R]=BM-9k3>gb{)KA1t>W~QAMb-RIA;0ΣKS/|-{'mM)Iw4(ɈJ?PXW~΍]}#ז9~*鮮n;~SC8/ O"z: &TȎK'y5O֫}54`}=[1m'VqAu\q%ߐqYj'^|=8!ٚPj+AVA#˩lZ">glj24TOOp}Qɾ P9_-JQk1OQ{#AEf# դ%-5cL/*|> )^{8%F=Kl{ArsA".aa-קU.jTY*DAu!9MB2]@;FV]ԓ={~pnuՐ/d&>xZ'˟GDn?ȺϤ]ѿ]SELkR?ge3XvS%275(#OBRfՖ7HW`H4&yff 7 w:%%߃J[H16 +Y| q5r-) {yXJKL#cZr^oYB貌'!#ȺGO%c iH)ɫ*^'o}֖'E{w IG:/'8?g;Y,Y}yj>b֜7NJyq gJ6"ߺy4y_aj,{Ϝz.4_Pn88_~t]-&}M,R;7;vlwe.2xIQ =uVѴZ?*u5CWvQM ^8a6zOt(?y]5? KA2+Z$}g"檟.e (gtb 0,(⮔?Rj<8C"}J4eԴI76n8m{ 6IƷ2lo,k\bX|ާ{XT ۥfwd*0E{E$fr7G?$.iwVм@:`Vyd/d#/{vdxe)b7XuynU߱04sVtJ}cW)cZJmǬᛪrcv^/jM@s8G`XVt.U8ᾱ(/Y)OGd*/MYS+;nя^|>xLҭͤK& m )5 z'mɆXQī~t-C-/|O&+W#snYN̲a]gE:)qG('5>ޔJUt +^ AƱx'BEԻt<~BN݇=cY3.8=(YE{;̾HoOlӟ&1*i$ym؏w4qc|*?up|'V;PuwrW]0g"陰>vƐmAw˕ו4MK޾:dكN:< _ҝ \It~^$+ȵQƆo]o\Pm̈́Ieu!ZARtSrCBoSY ۟|Jϣ]zJ^}0A+'NfIx~xOQ>.+=FhmhziL9,/k4MumTtG剗=T&3J^Emy϶L;ޝEsytp f|Uyvgp_oðwS0r:߼Wdi|IYZҀ?בψV~rKXqR96@T$Iۚ ?Y6َNnj[U/(n4R.I9ϤD*Cd= ʮ> stream xڌPk w-;)ݵ@qwkqkR~Lk'"SQgp0J9]YXlv&6D** ?rD*-  qgLP sXXXXl,,1tpH,L90Jde?_tV^^n@g)hj hnjPw0]'#3 j P݁(LƄHаK`a  @@˛ xPU(;2V27ܿ ljn`h  ; @YJӕ` dgjfw)QUs1w90W6K-`WĿ9õ;x},A` ˿hX92kANn@YۼȬN6^ 4f+#o%_7~>7@?%puvS`2w@`?@wyYƏ &l#fVQoU9x|ٹlVVv7' aTXD[:xE{!ɠ7<߀o:")7;2ћڃm6no!k B+-@nW+j#`9gd`b"Z\ͭ5K9v 0P׽tognv*fo^I_+0uv6Bdy36NNۮZ=q3`rqE q n`x̒Eo:?M_6Y0kAo(Eo:?-fi_fcW_-Y·1di[qg #_z7{3|+Oo`hv x߸|cob߸ ~8?߂9=?v@?`)2?a}#ෂ\ s;?48BؙX-/[f洝01ˬ*qUe3+ul l}YL}uۺh?EHߋ:k2/)]]DO~n( o3YDVQL>_RoCXSh qbya OiO5dzΕ87}EV(OEjB{Pes)-|d!Op愪ՊDN|Atmĕdn]5/ꡧҾEP7 S$ UCy_AWzĶR &`LJ!zΛfAX#c.\WGN\ȩZ։Gg؁+T}),Q^(NQjVӢWFtH3 ,*J7g(A^: 8Yjy;;J hl nʦ7H&Rs$SLPv1,b㮉+6I.G/` .ڒ>9zIB&㧿 oS5*/'GPOa`QT>L|Qku~) 'm5 _?_Jv=a.^ {XZ O"cӫynՐ!]Ai XtR`f[!^3bSy1.e誤'5DgmI ɳG.;y Ÿ|tBZ G?ZoQm$O\(U܎ N[v\MOY`4zvCݐ\"#  -0e*)Yi{' g\~L糇ɮ`7#Ԗ֫v:$XrJ ,~@^*5?-X=GhF=}%2ؕʏW҆*aU@[0dhx–R >Y&Z/U廀{e c,;6rv* xnj .hr m\;TnUine+y/"QAI\~<@oC p֎RѽԪIm1b8qSmԱ;׬i|08=nǎBJ *^\2 t_pt#^1rPO9Vtp#=hܐy%Fmߨy׸!(Wm rŬ Y3,w{ZY9km,Րz$C/Oȫ(밊!D3{6S.H4ϟIQF&:m|ShJP4V8.r?%_V7v3Gr:FL?c2,,mpږo?ބV:VlP! N B պuο6&9$Hc^+xVL9ǓRᳳezMOX0Xa,5\*بS~Ywh/RԲמS,ss)n'9K"quw4YiWicR a{{w诫}cF"XIw,iRqzb*(BWL̇]l4n; !? sr_[vVgD_uY+nu`W>ݿTiB@d/\*ERB,-j Glz?2|^1ɌFJF}&+R8==E=D́k3wl-IqAK낛mT 7z|5%KRO>Q(Bm n$0Eǯ(FJ~ lT&r˰]$UJ|6tjp0Ƶ';^qKa@ )>}tHj>ޟ^B;ޔ&u|Yh j%7}B !÷73-'$VN)2 (W qZq/jۡE,B݆2'8kŮcEL~3ÙAק DT=4.S0BGũm+J- M8 Ԋjx1B4cZZ(-nU2^={SƵ/?H"O[':ٚO[:m'9qf|Έb㜫{-vykޏ9eх4=L~ca${ %'i3 ;gtpB'dQ௃c٥ʕ;ӱ?i7"SDl%evW"Ј9";|g#_5*KSċ;j1T>W%?rbc<nxHzzjFGWv慅S ɋfph]y?5`~4z57W#+诽*}Q1J^:PEKX z|Ec$ ULGW6RvgjFoQGPLWSL!ςb+G qD{$_=Kn'5,XDݪN]u.*ba6v fFw˟2i  ^u03[Mɒy-czJG)e19'> Ɂ/.rB ڒ}'P(ϴ%wT$ (hv;1.j&URs<~ʸEoYvG}BվF%XI C$V.vdV(QueNhQ!(S`\M%dՠԫY7s_?zI,Q`l\mb*g5q!o®qa%|{K ^F2(:T^80&dMrۀD_yN<y&nd>r6jT:e f4)61n2AjC/Tx:,3\/MS֖rCM\#٭E`IY{5ݼ S FOX|e󠬃=+"Ș{N c2Ļ C0j1.0]W>'Ѷ9x@kQ" 8.U;INL=Bd s38^m~NT棦ѳI>,%NMpqg\95xQW9YOU7ea`-›"nCKebTB;zq)k~q&#O5NZ-J)y7Z;6SEʻ tb >6b썼9g5-쩥jf$<&Li; 8r6| <埯~W+~1QirQ?[K~^A)[ D,])!, onA!G-Z\d[jI~9ߦRԇ|ؠ~Gˠkzw:j3qudSU٘VQDm$:}<5UTxxG(;kuʗxpcDiK:=%<,!! {P&K3 7A3ȭ қCh^aX_O0>ܢ7$0XϤ&:y/^b@K$}ܖBpzM=Fz&fF=Αr b^8p/=B/A̭]].]~Rzzon_lFd^zQM aikYj,*Yd=\(^A$"b)Ou&1'6+gA-Y,b< =zn<eUF齊(Zֆ9M:&.#totϗ_r~Eb8Ydj&A3(pdžTB`15lEgy=o%I0M~nd%tf#Q+:l`zʏcѦt0K'&j7F[Wy5W;a3ˑDtiu<䁜J-: >"!ԚLvy*=Hժ>+4濠Q8館!/ ^tGd:a#jp4*KVajwrfķۈ}l?wqnIau }CA"ZbrC5~ƒ~X|0`n^ _ ٬c0,,Kds(e {73\FQu[FdCNF3( s'a`=͡CGЕt^d"^V%09y'+э$ϬVe 6c$Xݷ='CÒ>u{=< ˉޞK?γfT/)4ZwH.@=lznzΤ]&d+@(V]_4+„AFeIe݊*g|&,fu sdلqy+F7l1eul1N+_4G8VFx̶cU?3+I[TG9Q_?%$a,qϱ$4J-t$DU'PyygMaR{I,F:p;*)ٌJSGz/^lT)Irw^CFe5޷8}!89o:U &2$i# +ܟ<3+ÝlN62k۴$=xDx wق,yЬC=iu:b7E􇢊-WupUWywJ`P$oU٥ߎ6|o fjW{dUm _#ձ*&N88 'qF']Oipct HpjFq8uSr2 h80 j*-kc{4ֻti {H>5OwB8EWZAz܇IvH?%~]c[Ni:&pkV5oe{ sҷZ'W DG[$@;:͛H*DB8fAMb/nNt꩖8GV5~)arJGU#뻧w"Rn߸QDK\ $D<]ض" -J :b fk"Ŭq?dNC oi*U,Z5#s'7o'#"vZ v(h2Bo\=HW[='5(Ra2j#S٪E~5W;vVU'߶ ڶw$(bLA W,D̲eB{zփWI<{ӣ)".GDW~N /G6XF*]5nI% L&iWq@NayO+:E$))RM'BϥJjz}bǂ9; 82z,xT}AjZGrI\ LD/3bq!A79qA|9p>| \/þ| D'xlU„LS&>&[D,]-0kUxbnȼ̅($fDB찙r{$d$3$2ZsX9zFΆmtSŪxncV|CߗdyXSF27Z55cv"B(V%aF<2Eؒq.3~0 {d%Os]уl04u&U9dz9T Rd}j[>`:py0-"@I~8eo~) 3|qϐ0)RI*Nj~Hଜx=0v6m|i P+T]D~_|s`GK^wUVL=I宲&"FCv3avpiF>To IdL~C!-OB!l(!r]Q*$a w8S"0^%&e2cV" G0g z{gj υ|{@ áBUFS ոbS [ίDs}(|a_^b>i`; 3n?DZORMCKxIJt^=}ITD =F-A! :yic28C҅e4UܴO$ms/1H22ߖm:ڲs>jnI-MWn\D7,s*RsT̪~J@ hԣW4:vn6 )J2S90&1<9Diu#"Ym1lxQN D}'C93I:g-_^'x4T"r" Ŧ&+w7 }jw;Q[knt%IZN*ɸUӡ詅)wR;4ų>9!Ÿ7ΧrjׇKh]rydoHnc|Pzts`/ #D~ΆA}]L6GOimcO21H:Ja89DN&WmF;пPd`1e?T9mX6U^b{2L5ղ `G O~/C$ahӈ&i0|}Mψ f3"-hMwɗ,z)uz0+i\Olt% H艰sx{f60pg]3d[דOΔ!7?CYuKX׻[0rR'$LuW~ݧj ' Qb~ȠYeW%Jl ӥ) 9o}[*QDnia}VV/H\SCqG>YJZ.G̗qVrzHb!=iVZ Q!wGVf {bBAW <o&kE9]]S4Ss꼠*vͫهkT T ^raWv]&ƈ} VGQGP]F!0c(E00WT1KNlš>`)Q uk#&Fi2pUK"-.SӢ|r_] qd7B~ T]gKuZA/"kzMSM doq V ~ȪJoYspzX@{(D`4,11q}~TLOWGc؉ǢM2** MA"%ľp)@* Ka);>ƐM!tЃ?$]ch>dJq9&<WWaAX\o<|fc^4KeL_ ЈN( Y]O8 .˸~8iV~0rWJ/AUtkCp)@~\)>A9SH@_xAj #yȸYviSt ga1$yLw>;ggKe:Y9/d 覺bi.4</e#0<"ո)']`OUXp}[Ȅ`]-fLUUsleW^x bsе4TAa>τɅ/bE P2G"NN}m5lxG-lEsl}QSNZR f #$?82Wһle9"zQxUu$wk3amvQ#_ŽHLcA; }^DR%eSsC D_{kq:,K _ȕs&8.qvvBR/vۍ?ƥ;t̎<0 \yY3e 4A]< ɩ@#\0 کẈMr: 3=_[" /iF3/a(K6 [VyŶ>I=NHj >9k(95cr[J"S}VZqӭ)7]j̵s5Im~M0CU7 D. sR;mnEr* Fbu"]@ j aulf;|"$PK6TIߊjL~=>ktRr#j7A0!̃PyV<6PYgɒ0 v%1[€E5ھZ_>8kЙjIkЕ?>p7I}sJwuYuX2_GCӫl1C_QrfRyi:I>ϧUBXS^j@:ϊi Ryǻ9d-y|~3cY(/G20-"ULf86 :%2"Tf#Wm"eQ|렼d W[u˓:вZe\3'-#i>rḚ>1-#Ht0RZ:VA_1F+*ι}c Ӆ<1а 4kR݌iXzK15~6CUROU3@BܩnBֶ)"';u v k_ T'-I62Q9EN3,3f24;AoHN`b\Ttl1͹Ev68c__dFEQ,*_[0vtضrL8|Y* 0_9r4; HDH ÉG!V~eU2W9w@בCu7B%+IJF" Rjs6^I\?!+8-Km V'?[!\ 6Ȗ메t5NOovIȯ#-=*x|tdKhŜW -`I*e"<%"m$R_bǗז~ GeNr$lV:4$AIb3e9\?'rB6náPf/1U~D!y]9|~~݂̿fVq}.l8hH as#n,ze{r9_p*sm_afqc!} 6 NU|>Cƒs8'F <Th1 _liYjl8=QpaB赿DnY{V 뙵ir 36O6.) >e>1DFᤥ'k.K̟9П*֕4Jw-JkQEQue/ix\ oWD[ )ZLX+oQ,VL lg@7ۼ/ 4_L-}œɼe( g&[a֠ 8'Teb"/}gR}L0Jv0ɬd.9ՎeO]AqZ1Dכ?MYUU%x~o]gʰjq7'Kx )t& Eіl+M$sCuC:;^>&FPԹb)Y۟1042A~ZZ@xH;䭶WC3vz`)>Mf`=t} ;_?96{A3אlѥ* >CLbL3F,ppL"i+b+s津.j3NL^w];R~e. d} xjяDPO){V,#=lSglk6 H |_j(luƐݺ볉)aji-\AO+z,02K Oo-b݄ˆ}C;^H4JןUkK6^9\Hl"=u4#k_BP.'8a){$Q1TA2rpvbqraQpx F޺P5RJr#C녋OMOtL֩-3t*%0qbݣ$B8j?G(Zj|R nj*qz( d{fvEey+[utgNr6:v]>[+M6b=٢f-Pѕؐ㈪99ٵP^=4A'6OdDmt~r,wܞ v54ޱ*V]NT↱"R*T޽_s:2toS#茛w's63͌dB8obOߜ;sᒤK'f*<Ӎ [Y e'2)^h_XW=`4:=`ǭÏPTo=~Ǟ6v~kj95aPΊ%3nYA&b<\i/WLYi4Vb|Fh*([Vau+ )}:KoM6X- ..kWS %hqaV-飊14AZV")ɻ蝖s6 1Li;]a|mR>wy[dFnQİUj0.7H3iku5WE(}S Z_A[sgPjX2spqN&`&R=S- 4oYRϩF0M-F{%!AHoZoWKm@PlVQ *J |d}5;7Ung%KZέ.˕/&x! !Wu?BwI3)ʿ_x̭$R7*턺Kd ˽ V2oQ._%:D[Rc3 [X^Z+e~Nܖx'tmye]JouiCe.^9vj\ \:&=r- eM$s9H" fJpvKS3 圠0 >Vo^I]㾶slJ->q'yǐ\: azfxj6|jC"֐|TCF,ȁw ZG3p g؁8r]GrQj2PꂗU":oJ d1ɘ~0 $_De]iR{:_#4dc㰦ݴCkտ v=Dv8&2zɰ2FVzxB迖~K#hx̵ D vߢ$0f47:vO`|e6mB c>lj,:.R~8k4&$e?86acO1eC>4 { 5_̴ne.V¯@Ar(&?P4z 맡MFFuB }&wA 5g$:uHg*" endstream endobj 264 0 obj << /Length1 2495 /Length2 17595 /Length3 0 /Length 19053 /Filter /FlateDecode >> stream xڌPbݝ=H4и;w\/3g$ޢ z}>{7J* 6@ kGFf^* 3Bh dc=M&ff(oc qX8yYx<58k<=-?h,<<\ #k-%@tt j~3GG[^&&F+F{Sz t; P0S#<@ =&\i9-?r1 #˿txE dm 0Yrk ,l @on0xA ˿jdƢ6VV@kGp-m\=L@&adˤf sJc&-3:8X@;Ȍn,j򰵱{88N@/?YX #G!d M 4~=~,~a6֖n1'1)QJW)"b ``08ظ<eTOnI[xS[[?{Aϡom/gff_,.6/I8YZ d6;9 yaMՁ9@cJ;akS r@Ffon *8o ,Gv,a(nmdcc3+]^m :/=_#0 %0F&߈$/b0IFl&߈$qFo ⿈S7b0}XLʿ[<߈Ub/b4px5ɛo0q-gW WVѿmdKbe;d/d{koYY'(_z;6.o隀Kmg7ߌozӿ7&ofnf@?,d?[[ߚ;cη.Xo .:ߡ8޸N&oVپ=3Uv;ӷ{ha d{rot/ Lvigd46cP,o?z !-x3wx{/ oNer41]lpxpIߐF;7Ww2rO%_ h8gch^zW)L°3abG=cѾ&"F8quyKZh㨩&9cˣ^N vxޑp"8BU]g;O~M2vNJw.5?|ܭEx*bRW8Cc1K@K~2s}35J"KuŖ~}TաO }dCd μGQAڇLfF$'r8̖<#^-5L~=p;*նGt&..!pt0 nPךGײG'C&pX "+b!v^ЄWܝyiɫ I טRLK[Z}yy9!? G(goo"Z4*hS`< ]VHt *~ WVo|E.p]=BS;yDkKkmu":ORL;v,ny%Hޫ=vgzΜQy,*{iXnz7J%zpZaժq{W< sDx~4ăYӓSd/ O琩s|PYjuRv*FwR}'b߃!J嬄(6`i6e-FB[;8K[KxYQQ 9JL(X*ϫ:.sƵS I7۟1"ҭ9*\ؙۢRffϝ\4zfdj;NL }]Y.hvhBHA oܗNP B J C%ϾN廧YH <;iZ}N͹(@BI؛h4xêL`vjU1M, S +BH8,x=ߪ%t2d$f\va覓>FBвv3dg5ul~ri~8Bx@r/B_y#T烵y;f,~ b>aNHzx[c5m$ˇ;E&9 Ebj*ѳ.%/**4*n׋I]/[2_" ]S,hWĘ`dpEI4ǻq><%+OC+CҌIBptU᳔)++KcunӊEEt+8y_ l - URSC,FcQ NB[d@Q9],j?|?@'N,Jy BBݜFBK_WRWadUF.p>EsG,ݭ&A壥AqȢBh~Yfm4mO>ܖ_ 6t T&KMIXZdiӱ;Ux }cB@j\ǠQYW ΛO3zġ;ًO᩽WƛTÆ+v_n?6oz%/97W'@_u>3AB0؜x}EhnGb V{٠ʂS=Ɵp"!f {z_N-R?.t8gɃk<-ǐ~`ᰏ2M3D+x7#Y"B %Uu/)HYޗMp>]Ҙalyo;.OmB  4]K(1-3dݩoso^V>u.^_Ezm6Ϩs{f_M} / 0kɄvbr?Zx,Wc$x"Iʼ35KQk-,ȏqGB ϵQ!gs}cbh- 8E&Iڋ]A~ңKMG8knF|)gI`]Ϯ}?oukJg |`Ӏ:cP }'Nl =g e+.0\jF>=0%`T !֍ ()c,{}%/0E'+8A.sEIPOv!!uwm"(v%xi5h ߯ |~!0 J :;M ;P-0XQ{8$C׶FXz7d;fЕ=Wt;>.,XK,W~J1x E‹c8cU+k*2F<'L Ω͠J{N5 O%_L P[q2$Q$$W̄0 JxQH+S*{ x!hFM9$bjp59AG3{9'9Vף:hs ^Y[.C>FƋ^j@CbQ9T1~wI~O]v=ً;.#MN]gBB\<0S*k$1r""֮JۧT@ݕ~C7nH>mӦ!:g`Q*^uYy|7a}O j#g qË:6!;M\ݨ%џC{g18d 1.!D1tp7P-N`ǥ(pZ CzP/]рm݈11Tz:t؋[(Z=?0Lsǐʫ6V(I]A[WhSWY{k`×˔l2jwImkKt0@ 򳟒"hZ)t1]{ m^F[Cv@Ga.d³&,ڶ ~SK勉X ~*;:GByz0RX}L#WvM}s"NQ-'v+:ךƙȸasM<]7 /"8ʬ_Lz)i#1wįjlE_o#En_緒lrr3e(%#f9(8\+GTq@VmqD_)X8[{nl?MlI=| IqvKp ]`/~7Mn,DUazEM1 ן!#*zVpт50{έYk@FzVшp00E웰aE{2z"f3v܈|rg{i xI6iһ֓j6.Dlq]QvDh%TQvUl>}S5[Ӫ;6&,WQD"JC' >D8]|g#ޠo\~mX0;:N_z(m;81B_eڷ`X @~|U\" rSȼ߄^!MT4Ouș{FXCLA4ÃpKx ܮSFn>ϬO#tzAE7%1,^s]FO%iǷˍk#sW!`_&C;֧ %L|:힛 vC'נNK%:ؗy w\s;k?6 X1x;ӇЕF(-Z2,f^1Z:s5:űf&p[MBL"׍C^mNx\&?fh֔wOHI?,S:Y*otҋE]ӵR75(/e8){ߝ_ J~ 05S'm\td9M >7if@Q##y6CTˡ霊ܞ.19d&f͊2BN} ҖWJ5d7ejT$}GIgt.56!z9^F{ 4`䃂_ / I}|.:cҦE*y-OKmйWS +j|Iţb0.;o2M92#ˁjM%ɕQ ea^][>bbCS D2wGgunuq@B0&ʫ@j)!&`?:"J@H 8.Xw;9BX^dY{xmH0_, ԫ(/U>Ҭ,aD(Y-lhC㠃nc N~Gr3Bґ=mR* Q?AVV`@;b+6CBXp:lυAgk}{u@YaE8q2K>Eн at/v~YՑ1sj6eRKVU)m1Rca2'tP>u@pC ?z!D,"vDs/,:kҺIR!?'w-SAa-Vt… 7^禱NCX{89 vv\L~FEٴPCl_?h;=.8u}xw]xdlU! ky-8S9STTY9L@JeZZ'C׫XPyz.nx~o)B;8|,pvKD~+Ҵ/LCK_"FI?_{|>y Wd\w.\қ6> xR|)os\h0>6]l;./HoRCbѢF|+#tph]:D㗕o@NGk|yV0ϰX3q/cO{D;T̛sj,憩欈 i[ " wѱpbe$g S=$gTY4ʺbc<-YUgq?mʯ g1,5S(nfC2~j۹} 2L =jF}WyG k-D֫cDP]t>%BJ&s0tϨl7oϭ$>#7?!NG^u҃t - QeJp>زM~MjS F"|Aj!a:A6GY]y w*։l4l7u<(<ޛk>\=\QN:U_-boK21D7t3хi{\ wIIs^n!I+ݜW~(M!ǂ^>7-SFOq m`]=$a/>ߧ 2| 4ݘ'\ΆcBQlT^r-H(UŒh>HjTue[dM؈L%[C1įo U߮p$K')K:\oy8ti? x"IJj* ) [/69Bk3#P`r3#WOӸzIȹSpJ#DD 'Ee#(rl04rn@,8҈)~mwP-tr6l4^JR2ctwS?&rḑA TIkkƬ{5t 4+S;?DkbקUMjWo#f_"*'rXpա'B<Z PM8/}`J"'`ŗ*˃n/ajSɻSIU]ѻ%i<0o r*1ڊCOՒ]7:^0^ :f.fqK}Y gMcGLly$ט$l~&T"_0wm_28jzN<Ncxe}SgwHj'n i\2BZbZPL]O+w >{Pp4kըV-az\R~5ZH:= n_Au5ƺb;v2՟rݑ\y\X^?~=!ݘW> ~ $`E{&kh^c\Ͳ DFeI+e|mP#K4bN$ZmePaWlD3̅Yj^/YL ǝyX#5SX"=~*|S>k< zҠ'S5k٬\wq,Z%D4xhYO–L4o[L͌$I0[b-!<8#7 #;d_U c;,"ϭI^I]Do"'Uh#I4Q Ӣ!C\>{/ϟt bŖ}" xP-(4ўi`s0SX 0աg)יF.t L#~Ivvm}x`@!iG)1 HAb"lcUa{Aj!wF7\RHd |u.?,ǎ໅UOspT%լp|2nvOyw^֦&Q@}D*3U=Ӌ8&w1>Kd+tDg0!r9Q=ȌљhH}+ RGPF}k3k.gH-^Rħ,gH;0gK^eب6+ A9.HX̯z{{ Γrvc̄<}/,qC^:/}ND$>r{]Oia_>1̇40`{}DA [ے $j۬`Z>phDЭ}*MM GQx>l,^@^r ծK@ֲS,X(`KJd.X@|QmSp2'x!hړsAe0B59PAgeh]{WH)M wN]/j"Ik4Y{ؼ1BU-6L hۚKxbk x0]Wt֗$""0"M'9G*]%%Q03F<+T~82zHdϫ+)؊Q^:L#J oV.o6ν jKiX#7; Kph*C\h6"*5W3vTF+sށ&'0pIX z4fwK,Y ڵ̬un];3F:\z!!@+n}L*O;X e"5֏q nrź8BhoyɿBn"@Yc9S􅥭rw_i ϔ΍e ^ٲPR.cglےDpM(Xuw;Tl_&o6ki3O \ҧTxMYoWx9AlzG;rH HPbgd.z3ѥ։ J o&GTI֗6m"~G)g'ûy6Z=KpJY9Y y]0I.e& &n#Q`'~w_urľX[jw8Ww_co/=C{(2+'K\ÿa8}.ɯ?:"] "/Vz6~ill9G26l5kӌKrQ 43㶇،c &bbx`CN+pk/*A4= BA :=Z]z>_ME}%S>굫~/uHm,2y6~O+Yv"OOP/ U}({cBϝzж@E s"WZ)2qP Jm. YeuπN`)ď83A0lJpBJ.θaMWDZjx?`a~H seug>BmV 4qBr{) J7Gm?{c5nH 9&d^q=[Z+ y.x>SGwGJ8{B/넉|tsIț:LcRi,Q0vr[|idCH6Qt{>̛fyMUނ1n^z{ymf'37f5-3>VB&炆7ޡ9q88!zXzJhLy_\ 3^}/tȉdqdA!;XD'`Plhv *ϥ߼r2~8~ppI~4aFDʦp΃ԍNf琉)`~}{2ckgj@KC[dL9oٿB dS*TnMQC_㡳+&Q-v-AMA=O?fP豄G˃qS,/B|ka xcskkZ;Ѱh@n)ūE5qA,9#_k~nDfN KZ3F']3*Qb9}cݽ@pYSϵOBcHmE#Ec~[EcsGPrt˷mt*>WiEXNwIn *U=2Z0T#I[lj%&–훝@}}MžN>[=[OJQ(?kڪ~ Cv'(oT|pkYIXi};EY4K'f~'?7WU9Ft( طm7pPK{Nb,.Nf ʒ|E G!B  zZ~Dܭ{$HџA'%v-yb7-+,;1LyxRs&EjP"sKX1m`57ILjiA$mRF =iU2B[ݩ'_c%˽z5u%8([Γ uA(c '01&/al&{*<̿[G/Ć̢[ƈ!VP+˔}wgg=>+@Slh]ș mTv~n:HN0 w}?kX9~5FO_!|Eufy̾3HTt" &hr)"GDڷEkH/=N~j6#jW:# $)!Z|M`/9l Y}}0Ȑ! [GBE$"fiHh҃__L!G3fqc9w]/Xp21 ЁxVI\f6anukma&Q2u䘴y:ӬR0$E&jgAʺ 1}k4A%` ޾>'c"ӔGؘqd`QkŤ!K 1?SB˦0"Fѥ CuP%w!a9Hdf33|yڥGfuY/wZOx>~lhZ'[ ؃orH)fCӐ_n߃KY/X,[F_+ͯPs)t~Y5M'%R+|t}WD472%E T`Ib뻌)k^t cTO#2o0mn΁73*,ZL&~e_}Pd 31yWz4[e` k$0Nkͬo^n]jChX(TkrSة>Zx͂Q{v]j4DЌoqa K.D2 8&J}wA9%0gdTZKf@әdȫ,IGMDas؇y7Glߔ$];rޱ0{p8wf>CEdw~0bE7Hq7]G>`SRIdb"JA+9gFο%&"S*(|q̓[Xfdgo-2&V>F.y0JM+0ɬ^1!8TH'l˅mr=\1ː8ϟb~b# ףeO9aEcsjבb6)yi&-z> IlSG@t:!k!D"Ǐ}kI@4{|y^SF[;[kILBfA8grMu\^׽Y)m[{A0F1VlCT5}#jiOyTۆVu/rT@arV{ 8#o1vj\p 3kVbB(}FEhVr烉 z}܉oon3ߍ%S1Gc p03mj}E]7"㿽 @&XٖMR'?u&X*xЭ X{HApg4EA+$gP: h)(}\-sW%UtĹmqsz"j`i_ otۘ\g;/ qd3cK#xMKI|ezY ʅ:[Hj X%W7L? %O E^ppB2A_!qA ݞJ1>]uκx`3N'aF_%)}qoȶ%dH#bO^D N{ЄQPiHջ#PV2)틩h drwhk^~.gp/WUϥ 化?3K?~T>* N.OhC.Vwa@Jxg}&:5\JSxtj/Lw5IUr^I%tOPe6#5^a=4 )  )jjY/Χ% "rN64R0ZE=[ֻ(4HEvcyT+{<2oV@g㷧5O==<*lW[3x nD݇&Ryj>lgʽD\Xސl#AoY&鐟[/-rZ%`xyvQ4 RMt =NC&Y oo^otLG#l j۟g=I0+:VkB׳u' J1p>P޻Yxבi7 oT̮f|Jo/`?S? XtmvsȦkv̆%~iy :rZ 3l> X$RF'*4Я2ȨbƋ<;8D6M>"=^Z{voe A -EhgxoW!e*5eh?4>WBB>B(HrxTКC9ϻzq lSrx>6 v2aK_Gm^ZzǯPP֝dLM%AgEo8 A0db Pw$1r~MIGG4 $ZbjkmijNbJ.X9]dn HC[;i endstream endobj 266 0 obj << /Length1 2023 /Length2 7147 /Length3 0 /Length 8354 /Filter /FlateDecode >> stream xڍT6H*%¤K6nPFl0F "(Hw(Ҡtw4ݼogluu1i(bõ]`/AP/N@m "/ Jw#  Hq@\ͬhC~+9Q<_(O  Nϗ*89P3$b DG!a#}j8_ Qfٺݘ>b.ߔUJJ]/ppqxx|F?KпkēYQ@Ko8j!7P_+oEV$dk[Gںmf'$j3s_ 1:V FmFBes5(s PD up@C NqDoQ(3Z=.^>P xɉQs9`p$b #~)/(K%o?(u@$?7(PQn* B@/DoF*xQ:3-H~5h!7!'겸  CXQYQ=QDlLr*pQu Q!ԅ|2(w ߃|c"H8ބEr;5@˟h:@.&JAey6sB P|~_9a~@ 3u_I˓.8e:9N hZ>#ɕ}]a dc4,D6^ZeaG$zQɉkY^τfnI]r >awi8~ceqm ;=`JKI ;l$ve":KN`x.GhdXl!?`~}PlإCaW3IQY( - ~?VKwKw'$q~ q"ԘkDtyIZweR;ܣkO>apeئ q:c-|Qj0x/r+lytki-kh r;.Ms1ӬAgA \xM{~>@tOW12PG}*V #xv.ЬEW{u۷+/?KQ2|!uqAS>jBؚI}8vz lAjPHk*ôq_N^S =j9#zWH)k a, JrApj gB)IPɓ 3.c[)Yr>sCKb&N]0ʔ> X57%NbI,vuhxxv_bQ"miiGi}d%W)";-gxӋ7k%cd+70|p$|P%zbN}->%w{lySH gT#)JujDVo1S[(bǙ)p$qi:G軀ǻ qR>~ض+#y)q/vpcwqCAĝ܋?,x"^.ISgn#ΌuFN%S1W~Z Yk `DʜUzfwN$T{Yx81>HR$mu'ZR7Qm ?ecXZxr|oǫVvd6b.֤E$Qkx#Ʉ*Ae8>F' (G? ju7d. iм@!""[6޸|ȠwdzKL;|FX_p-;ߺ@\=Խ^,R{%W ^^Zy *EZ.ۖ VѠBļ-Sۓ*WM]CU "O<ՄlKs#3S >h{FJVS ˅O.y ˣa @b7V@Yx*ɂNR4MN޺iyse{7igXgu5.fJh?,XWe#쫯J+K{4kR\!i/Fǩ9sWzi/.wzyl*K֖YWˉQYzژ!lE# 7t{L eE(S_u◔-%~_".(tc ۦ 84+/"F˅JhAzD"ms2Z_}h#˓ie;v~DsS [[n44R AZl-(wf7_^gf 4P1Ev 9c*׭I-L+^n<]._G{ axE]'xd<wCfh.ĔJvwz99y>45WКsyr[>nV+-AJFt|4Q}81AV(JGìa%H&iynϠ_Gc{F A({_¡u൞vmSB4^@Y#E!0%X~42lA0nVg *ǓϷz)T⳺]}ZlWB r|?U6Si<*D`hwh?jޮOTXåTW6{&H?τ8~b Sҵ6l>"T!B S6?X3MBQ:5"*<0 ePzjNRfn$eے* ~Zlɇ)$}Iw?.c"mN?'H4>i# s $7?;G`/<؊ɕMm#е_ckF> ݝuVII^ > Eqfa y ҷ0< 3{5ϖ|֎B5/:N"W'JwS0խr)1Pi7TGs/??Nbn:hJo;9t]ƹ\T٭x Z-߅DduZ.~ёtc>?v#to1|cE67D]:};0Z-.-ri&kWYyAO=a*q+wi}F%v&5DoQ]*=)XRxo5!.C g ~xI,#yµU}ei'l%7acDmEnM'\4J5+Z+nyva ' 䶾 _{< K;iXPc񢇎ݦؘߖ ɍg#%]N=kfm!e%0"{m[R8~1Sotܨ3mvw zG׸hruDiv {yJC&`a0N(e{<|]:wUvbٹTw9eLe!K.w];.{뤖'=f\@`q"Zc`p2y|6s FHLېj 40%̭wS![# xhN".V;Nc `u\2/ SDc袂⅖ص8&SƩA/n!bO|.П#@t#=Ud *VGTB͐`olŏ sʪ8^h"CȿWiZ6e(Ind˔}g+-̤ŧ hL m[2|>QvS_dS]ΚC1*6(Mǃ4#J֣^AC]kS =[*D¹̸UDkv~&,e|!uxz~Ֆ=*~H.:Γ,GlWkLP 6JQ2 GʲY|N"_% -bȕS9z.n\!S6- g=mH F|В~nҙ28`{+ NǍ~jOP/9gJ<) Vj|KCE\jШs?(_қ]ػwBz>߸csP[|v*q"\lFkaWNBN,ɟCHO#޽kwyƻ5E< uyRk#"󎟟}3G𿧱)?U3Fﯱ/r\{/,+ZV"hz0[8^HEBh#Ljl wxͭr|x7' =Pp:҄^uғʄhlVdEj+=x!Yˉ̐CW 9@۹HV*:d?Y=6B]M[>-7L7 ޸lpŚq9 .+r,Bve_ײr]Gz&1w16Sq40}Ku9PܱJ4c/L== %!t|kP>[_ٝ]w8LRK( 5>)[\;>ΔiW[e|呮uPs@%Nbrn HkVX>>wfb6,G58¦"(W2G4%#G |C[qfR#yW}V)lU&|Ś2Nxf)4$WH4 =lr-ۑ3Ehh^l"U_mfյ'G $''"ȆK*,g:__KGQ2QX{"^_SH)OIҲҏ=FS>ܨ@*:]ؚ\+G⾗U̹Ĥ`YSc>KUpՊqϱ ,]IjfckMO;D~`+GӼBT9M-%arVePBYXkg?a֑ZSi!WJvL$=N&$6b~x#Yh"vr/!tڽ2q0֎vY&uZ](~c*1OY w/,U1 XT1os][ ]%1VM.E*ZA€a*ݽG _@";֊$)`Zɫo_=rި:]-oJS_-jsl] ~G +z׬#w3{-ߩBs ṛmtʤC*{wWS?\ (Ή7= 3i V %Alt\(Tհ5Q9ͨ:q\PSz 3d蜰μЃ3Fzsd1Ƃ;Kr+11!CtI`i124,xL?}9eF4tDպY=_zMjn2aRl!|mU']w9wחʇa )m̩FAFawBL=t'[H{Gj:ݲLi^/0 (Z~ ^4.<ݏ{#~*f:DXO o4SV!6u7k3ىS7K0;uS8K??ۺgMgb)4`gꖆQ;R{MQ(2F.M#|]-/Ҍ`ǘ+Ovl>L*2, u}IR^Wp~$u&Y:wG3<}[ )&o~l֖L5֪zW_O( IU r?qv24LHɂ2!?ST1}W̍:;㽀7궟X|YxR=gd,?Bf]PTT]`E7__T")}w;'Mڥ8Ukd4CZw3`|"\Km=TV}-bQ\,jg wቻWQG.5zFkuF@J<[KDv_b3#) ᣔ)8N/+&ȠcUpCq\=V0}"j`A}.au9[?Wq{GζXWu+]41js W$Z]'|Q첻GU8[,Vxr]9jLva^2?eXܫp]&v}Em!TcAiyF=kYzq.nZ=ᥦSW7Kn5B74qD I*jyDȟ8'bz'>V= õ[Fތ1w3y.O7F͘ ?kJu駾zSa:;A"B^z endstream endobj 268 0 obj << /Length1 721 /Length2 5243 /Length3 0 /Length 5832 /Filter /FlateDecode >> stream xmrPZ5P*P+ł-RBBHRJqw(NZ] ]9{vs^Da\<ym5^>?3# G!e0Q> Ёx^f neZNPB\ր...R.N\\M:0m X0UA]CMgnP[N0 @,PH(/MN\ @,Qv59: ' #Uv$I pk:?0ACUA\( H|SBZ9{@algB`A;a5h̑/Jh{V;`PM8jKsĽEa wvBQH>y?r@-e9 GZt^;BK]4=wn7<\__d,+ D?r-aH߆o"`n0 )XM|͇BoѢou٧x1 5!wZCTD#~Ej(`8}E.cwVeEo=J; uCt{MA䴝Re|q2m-D?A*MX'VKZfH^,Oce/3SYgٯbYytdWzg}.VbC}DJ/aUֲR+}ծP[yW6JQ G8[am0 ]VoIYk 6}|nz#M H} j]AtLKHd_,~Rɍ?&gf N,1 Gbtwk#kuCWKU*1Ohh.;/v~Fpl`JԤ0 rĀ8;.,W4 \vuŽ8}l0r|5U͗|>yΓ䫗Sj\]W(/hǁ@x* (bA,n ңJcoN:VWRش@$tl=m0e]󌭉Nt) o&ƴ|n!3i4m] |)xZBfF?aov1 PH?/B3<S^56яt.;.zl1 Y?6?NGYB4d&d"kXkH ]SFh6co)糈j&%[SPn2^h9>g&<

    =7op܉(ʎT/( Qv l(y .Ewr9_gR.U2.#Ot7)sZC˩/A3S¯PԶL/!ư T/TƐ-r[!+ԇe6>o;VBM)ii]f2t;}"4ږզey)XΒ`l+ɷwNyů\6+7 q 5m}:鍷w\x(g͔u20F+ o} I3(XmDYbD&#CL=61`uN6?NA[mԺإD-W.]%#,n{@vݣfh:ҍI^ŝZ\E.Y;qAzCfDlK*_.T_|'YiW0<cdlTr- ;qP%Ó =dpfeK;J̩<|p7':BjUݶ^/I$G6L֤?XaH?O__rH1*1) Ny~Ў9Gr`nYʨ(~7og/q.0C1wIqW-:|cgdy X`}JE wfp``egtB@Jg'*DCԭTNGni7>y=}0tx3sL|tڝ7#ke0˽` .1`A8hAR$1o'=Z3dT)?0}rUc %sjõ>wV"-8<>jPY,V!}zj.>CbN /\c, I2&iO\-b @U:u+?>8W61YNECHC'VPrȖBgq_$cFeO14Q@TU0}0վO}~/sN5)zJ c-I6cx?ek+\Xy`<Ϥ>'q$Մ͙H֖ܡii(3?tOP!cƮBGUQ~?_DOAfkK+$YW7D6uwNr4qͽD4u2A]ijOvWm#@@{P/^ Ips74`!mdX0lөiqX[9m鋋=jVzC8:e(DO1k|1k sRh<4`4)7LhHdR/wR+uK6 Cc fk4äe֨$)R0arإs{m+A=Qrb{+V?%i5+p}ߟbF(2I /_kL,ڻ^L$L/'G`2&|ln=B=" 2?,M^qS4}߼gW8D Ty>t T{0J(@Sd̒4k}`d-?̉O3XPg{eh/ Sy-ǔT2!@SJ=1 WŬIx.ɾܩ'%77\Ej2i\->] o>haHL586uϋbo>4 SDH>%j-Y |uQ8'-HmwjlJIա\xpuLBeچK4De&r<&'&]c3<.{0]0gBYRNJd?m"NH?E8,'fM?J%3iya7[֠J5& %m, kjPBC)d-]?w_-aw1aZ-qG fϝ"qظRSc6uf)A $Ya{pmsa3𕱲(^|m\C~-rݛ&e D.Om@ҼO[>2WGHQp%/=F$P_Yc GIf}xl}Q;=\[!z?ߒUrCwZ뗻St14<~;*S,> \'H:;ND1OL1ЎRvJOon69IP>h!M0@śd #SPb|1)b#0qP?݌JZz{&2ʐ"-rjg#&tQAf!Kh@ȚjbOpgNh;?°y~Z{vJ1nIȡzrKte]'@_Am~0{Ƅ̪++; ೎ْFh g߻g\ue4q0-l2H^QjSڊ@d0Z4@ce$Nh'T #OvqG*hFD%OU)f?u%U,@="l_=UtUP-tU)[땴=.3wB@:t:ufgpBpC.5 Y”D!ݓ Vǃy7iaԥZd~S}rBȼDh@|J)vn$Z˙h![,NvQ~&!dQqWNr1nBf?eDAqB EFj|^mٶvԥy^јA\R"CprgDfg&ZuqYqn 5r&n2rCͫVyL)U:{}|Kô8?^ħ DQ*(61dzo!q_=tXR'|bL -;dQhd0SʪiZO6.F]>sc&wBCciZI<iLu E|I IFy QidCKy25?צ:7|KR 5Mx{~HFɶs༧S9zz^y⣽Ժҽ8ela6ʃZnJl'/ 1'@IKǩ@LL-IWx6!uOp"ǝF䊯A3ʓt%9Y3 N.Ѳ+?;F<%1};XAGZa2' O"s1v~oN9Mѯ+S &.^|AkBn "K'%1d{a3(s͑cqhb,'Xl@2k?Xz %ΰ\c|4ś'/4ZDL40*DFyifoÒƌ9~%<`1)|mˀa֒N~JhѽHY#B -xǔXeT@\3^ {K/ X{b(yK8Iۗ5k@"6U gJVS]fA%(R$cR$!ѐULB#i۝|-6 [xL}y;uzK8Rlt{T_5ethv557K.Rɳ@P6#'QpJxhJ G_LjEZQv ;gsGF'U߸*UTƁPcHy1>zNH(׬oڵzn)u&QG@ T>\`[as{|BJq/bBK'ƥ*`_j/blvY2%}35K[joR% l CmNe2&^PkEQc!#5%(S?# #@$EV;gE`\lYԥCmhR~`K!ĄE b){Y4(k^C\ѡ b&t߱m"i )Zz ^k옐W+㪥iHE7& o~Gg?)D) %ȊgF ɘ zlTц&8Fj1qfVzhoiPgdQ3TI z1H3kȏs*o),PxBbwv_8`@!1mR4g)U6w VfIvnՓOxFeab^zޚv".&}#_Q|0<2*1!z-k#nG睨`b6CAqz9qfiJb5>R`_$clS#%F%u.S~v_GS,=4GA=a8/Yɵ#e9a.OXNpJ|Y9hnV=&2=ejcE?*KE9l7ȟ qJ:#ĦDrmF6%wwDkY5&oZb ]3PYmXztQT oZPn [cE0;pY`0[d ?aXۮ"jtI'TL@I nFP(˹^Y=^CªӶivGE >ur5;M#)ʽ=SZ3[<RhyctoXl X-!-ᥢzіcIB; 8cNnNk>rT +SfX@{6ͭTtC,OhP=$=߷_OI̩A\*=YurHFV`84{lI{)^:`ږ,:ʳ>x=\v bMpPGJtjLK`I='[vU>2W:5Lip^1d/UJN Ab_H\hCm> i^)K!O5 TkFKjr'i?}&}}2-*ztQNq V$<6+{gnA>꼫XY2藜qa* L[bj@b$O_diEZl7lꔎ?|;e _]ggJ*_po񒝯1^esVh:FQzzR8z) *waCm/ʗpBګ)'qt2>y-HJ%uEHX|픫Om%5ܗ| 5sdkMz wĥr`2l҈,jK @.Ïu4Og'Y*jnmvɫӶJp  @ϼիU0Uvof] dlFrEm&_1Yٔ`Wyks\(:TItt|O7}tu@ \p=+w2ݯ xp]pDAxs?x7]tr>"FfF՞\$ 'M4jѕz&G4KZ ҖqY;Eb1W٪{fqKVn7`O?KӢUwjFft _e[f?Doxxv1b.0{oICmpt@D஧Bc U ~8FT-Ϣ DJ{w0g]~JՊjR,O JH Ė]&:6'y=χ,AcHjA_b1hFiFLO6 /p^E1ZLrڐwR&obt„ʮի_)Ha۸hT=5X6٩{h90DH vgrI()^AOXǔSWRUt:vHK^u߻DGiL\6Gy3x'K7N4֝ pf2l* `x0k^J8)E >U#:C+6NXƞoZAGTD{qH LPnjȄw9Ÿ57$|h |%S/c}ΞW[%OǝX6#.-w{FRdHISۆ ~׭Qx&RD+p[Sd3_ˣٽ\(~Z5Uq"\ ԙuM_u?r[$IH뤮Z K1+M|;n!` ~Y\K󹐷}SXq㵞ݷʍtF}ȋāmOsnO7 T[inGq,yk}} %jG2b>.yoA}X nE7ۨP0UN%f%3+O8|N RgM?D "<"F7 lH~`P"is7ʭ:IZ3{>C eȇ{Ch/fs]]QDtX_D)`Z?Rb`j}EYNVdVf[f4Uy㼓\nVDx5zb\F HETY7%B-=63Ǚ[ay<ڿE&b1`U10᥺+J@*CeUᏢPK:"|\)tj'ӑ º ~rҵ5o~ xw2{Z_q aj%υ)uAf+rDNjx7ӫQD9bWB=\4i}PnOf];-^P/?[y5 B,53fq3!d|64D˲-`QOiJ2|WsI'N)mq΁:|#2f>&g6ʦv(ߢ\[h! 2_i5[yy Ne뫽y/b8P #m,+ g!uhw&azz~rej_mODK.V OxL_qāBozCqpOT' E r&kB<$# ƣQ+;#QLV_cx6Aq^ @RR ߱lUWD/uctsnPt#kkzTgX) ryZȠI{OU@,C k]c+UJD>B9edEG$ puTmB;vđ8OGZ/vG¡{KԖ렶GRA-6i-xՈY{oqre3H5zbOT~ ] !Gf=€ИBG*eօٴ+ OGl{ly󎇝2BP/)W 0iEb5-Ŏ:yϝe2O25/54KWp9M&!7 jP~p ow6~T Au6y#17x:SU^P HOO/EO4/i[_2flHB_b $2P{S^(p[3FG8nkz~<Ϋ^pnbru1HE;`60&zO 3#`I83]ͫѻXa1]=OFerF.zb{dNierWzX2$ Tjwgτ3"M w̃KSޠ!=ST[MʐދY+Ӑ կ[ MQs!>ѯ,kÉ .fWh28av-Ԡ.[QO* ;oCW7iF eOy .G15jG1fbڸ5"KW^{{N-) zj! !o}7ƥƽ;$>`7ۅ5/Gy.ʡbtwX(^dAÌp1,:d/2MQk(bXOCtȥs2XLDT.V1sM~(9'`mb u3aU߹$asZF_lqXtTkx0ӱrr&.hkh1ؓ@-+r-#%y_UN| \mZNrr6nA-֧Pa_ɧՄ;gkVY<*zZ~Mk G6 #Nz㲅'2gU~Rf?`W34Ak,$f0v8=kpv *rH?֑(XaV>(254fQuZn=Wu]"*1_]mͱ:dR: G_MЅ/X{ _u-niC"Ѱ}[Ҥ>€iy裆Ke: ZaN:Q*Qy_+OufNrI,[@<v;יNudC #zo#Pq|D6[giޖ]':&c9 2o0B01at3&O3(t*Y~ @z9:R'}83ݩYj\f]3ƁS%r RŻO!F9 FׯF+hՏOHlr"!JSO$>p~(?)ȽbXIy^ DdS[AI;0Y{ yY06פ>Cd􀅴lJluE(m&qO,)ҷ}`bՂ_K[b!4m?cיb}yS2hBEȧlv1eE0+7xI?-V[8^1³:(RjjW9rjdBMAUw!]ylBzQ_IlYtP~.%6/UQ?yw!BlCˁEqQRIDCQ+DBFu*Ontߛf Kٵ#2tC穚m7qJCdse2CZE^L, rtm,k'&&pē"4 }"1Ӫ?u"G >  ʓ.w3rQH.s۽x$M 6M'!UYC湃I`dm.fC ЛSd8#ϥيNd;PD_ s E"Ḅ\P+gxq'V.&B\V^GL{D̈́$H;fJ JZo.vgFubeY5cF7sBp Sx4]2I"If9 Pɻ ppX:K ]?Y/OfE P8eC/G: ԩ;*!zKF5EZLğlErl.ߚ(5 q"% {:҅R@uqN3T[f۵$Ө!ۅ{ľSʃ9DQqs'~WƀH&j}.Ie9JU+<E/Xh]y-b1-:,HeG A7("},Dw$3s(L~ ?ЊkP~Uf)6~MPiH #mL<,sRQS`msTTUAM=Bhb⌰EBN=EQXtH6m*LZ`Hɯ;p& i/`UF,,itiV* y*մMCdxy`"iwze[٠ŵR r$~^di|, ܥ`~k2]f)O48#ֿ*OhgShMAiQP% Kn9d\ V:ZvJT͞G;亅IV {. {J)gP_&sFT1%%xa+bM 7# VBdUWyO3 %hO[Mu\ (dMˊy׏9Aٯ6 Jn7ZvV.,1(>Q~w1-]h!Ok:cQwIvҧ4@&a3YS-&9o]Xgrf;{"YnvAxQw˹ԍȨ=xXG|L.r\<ם?Da^VeɟfA{Q)˻ki<vz<2|V:'++UǢyj3*ئ3]f9qtK>w U.@&G9&'C~Æg)\3DGBj/e9]a1X~PxwPkJ)[Ҕ[h.o"$[l^~VBvgY0kX);Ga zN19Z8JQjTw^ZTڥ`#YͰ5<8H0]1, sg}8 Gq|4rzbc Aף3l-g81t- SIq]^.ΈXϣCGKKhҭG͹5\vo C`vt s-+5^$3 LˑQq:*1klyZf5!LwbgUڀ:$V-tyT"Іf%w)9{LxDAbƣjʷ֐7z=LI/ex7Gf de@YP)*O ( _Z},i3+خDlM`҆(Bݪ;.Acu&ryd_ƊEuPJ{ '&S۩xG(sй.>wm$ߣm吗W? (v>IP5I-Klb%d)r)RhJE7Hʑ}X?<~ ,k8TTgpOk/Vnt=HMs-09|7} s^$n58T$QL.?v_ d2MΪ DІTM9J';"ޯMW#hu/pU߷6QU%R6ǁ^8h]:ѸpiDQ:VNr_XH(V?",0}݆pK$wQ6>:iW`'TuNl+ݻh((b'Ӽ a\E\0O(HXܐ E.Gڢ,>:ˊ) CMԤcrJɅ+XSOycҐ5/D8 d{끧2kvHɤwaaoldݹj7Hv+LӋoshS%d<dbUd5ݷ#\ G#F0zC\z^u,jYe(qQJqѽ@mEM(ߎvR17lԲ;K; pu]gR ڲ,?Ղmc!#9\QnIY rĒ~, zK4'g,p+k d^w4A ljpьw<i[ endstream endobj 272 0 obj << /Length1 725 /Length2 16161 /Length3 0 /Length 16663 /Filter /FlateDecode >> stream xlc.]-\ze۶m۶mۮe۶˶97g2XcȘ3V&)#-#@YLE@ CF&djbio'bbP75(:L 0da{O'Ks 1տ5CK[K'Mٕɕ$eSS) ,))'Sڙ:\l,2ƦvΦT3{'09?̜m*br*Qaza @Ft;gM]\_l W2_N`&.#SsK;&igf`\r&fDښ(m\]L&NvqdB m-m<O?dڙCLb& .jF?pϩxʿףQ"[N&k[??XW5tqh3D=iXlFfVF35vur2s71ƪ1wUzkXh|8**#L6尅5΃ N;\ɇbxSUR*s; z7`jضr`.A ,yyc *:v֗ĩt)P~Lhj-Bn7@ nɰ-*µ 5%0Evwݪㆷ!2Wt G!oywe syTwyY|#^fu(\f)twEa`l6W\d'9&Q+-O1ۣo΋>ym )e@l]ځmڝAK%U2=1['",ݚκpv8R [2g5 y &\5_Ү#K\TEzW<2ҷJ5< UxKʠzS!O,>8c;Oz^W/MrBFN*A81u_oݭ2̽췸ڪDP0 !e 3-GK^eGqsGx^䀍^R\D K$}u󾃬?FDsuVw(BVŏbqz6+?1w~*eM^n@wתJ.ޖD:cqtzgz -U<8#)-{íAi\y-!wY}ɖX7nkK Fvg(KI N94ġBFhvvyRC8EWW2?c}aagQxb]c~E990RFD4>:+=(s qwtUm[<8"\cX`FyCrPܪsmgSiTB'vk?q';-4^ܑ&l dr1CwDwPڋ.hutJ9Ro,eE Em\9͕Z%W OIo=2=Qg9'>cn G `1L7~&96zv3CCHl ȊFg-N"}РQDU*eԢB~Jmp!%+NIiAnWO%iwI0[9^<91N/ʏ,[<,gScjEj=Z9]= Ͳcsg呇Vz 9ۋoضUK(j0p0%$9uyV |ė֙2P)M:bswmc=N̩@^t{#2FF,8$Y;(>.A>I#ūN9_L}T(qGMhѧYu۷k^م|:u,RNoXXgQdt8|cAt${ A]c -(*n&@rwaP[O+o2\7:^uaBߘR2ͭt ܪ 5ߚ#S?j7L$IK3;SAsaɃ!fES%p3iid6aKu0U˙Yg*.MR?g&O'2sʻ!A]icԸ!Ʊ${r:\i_@torڏ&cf"쑫~5']>oF(G #C+_o&װ-9n ]LͫJ^]:$4{+]^$ +ug!guCK6I3(hցAzk~jp{G*TvJ@olR'תyN&x41q@L8 4\ڠ}C$`agY$ p{lr>֫-ҩbPL;&,^Up$cu K0JMȓig4ÚoR W?hY/[Ь&UOxOkh!=P7GeûQt.>ԕgd!P\ -@?' OP_v@HH:eY,P+{P?aM|}P+jo e[ BW3f!83Ecs^ʊ,RMr?%ˠiQw'X7zwMStBufNH6G[.(fVAng*~afɦ !ƨ;EuKoUH BCp,eZoy DODeAcCCf&T= @L>`';ͩ^7n45߹&.gt@[O ق&(DSDIP*:LB}eJܕdƯ*Hehq՚[pPe(=hejP'/ [XR@0'd}>,-BΉ{p3_tc.L[=ڣx!q :U >mx&܂EC)tk2U[-zaZ(k2nT 4^w%3K3̉{4!kjJ"nۦp2qo`k/?zH.T"*=2c4q&x2SOCb^Bq$t&ʃAZ̻N_,V/ty4~>2L+/{sRJ&/MK%/۳GBfKq)*XϪkGK8][LY/W~M>T^1gޟ!ø s$Ï22g"v|˔H 瘡܂YB$\ZXAs× pec(D g"Rmg۵J3 8+{KԒ~ O^FǓ::%*{bJw܂!.)O2~k{14f܋qy\'Zj*N:jnNelZ&VdC)tRޚh{fNLjܷ/B&a68={UXY q@F\ys\qa]sޞWihvP?9r@8K#=s?U3a3uA4<+dډB>'c8XTOPŀ14"c캱o kG@,K/t[*, W b͏KkvL-%DHqRe[]&sQr> thO&)U޸Fnsm4#GT.Ljkܑ/w%&"]#:F~$ o1 Uٓ_'`- AJl}~V|x.8슴vh/@Lq{E\V|HA[tsMf%0e65VxW P ^]g3!3źt r;NNjNFV[`Q Z,o1n0b>a?PtRձ%H坫}] ϫH.(9&o@K Sj<_$q_g!sI8nⅣRcf2+DT @*O"ѿFo!p6ST^”J:Ϙ4M88 ~M9|<1A F'h&r\S#K #޸jz^cY9ҝ,|=OB^0T!eq_"S4]ίSNdk8 !EBth㯎 ۪?0Gד-1t`,x្d;<$?65l\k<ۂ.c,L¿_?˱eӼSk/Rzs@Ҥ*H{u^2Е=m\Noµ--$R}ǒYxNHdRrlЃ]uaе!8&MQ,[ߜ3/}3)M65H"RvE$71IΟ6;7u][H} z!Mփ;H]_WQ@+OrjPU 1Re\Èe]qTдϟ*8WkaoM|DsDE8,{SPq=+:ÅmĚ~ö'ttMh,@_~ud[p *Ga3wP887;S޿FR`> LF헣正e!=.e_ yVRdxoqV}7P4P^vmt!ƥsMQL.6rYb[9^=xǪmeAqJP@CcXI`VqMv1΁;KZ52a$U[9G׆qN`F^䎥Th?:;n<9Ļ a& j$!d2jԇaZ,G)EL c kpIb(&{2":$<Ņ/ `r&_Q-l|tu{hf۪=.|pԶ*|U.# 0u臜bI>9G@'2;xˢd2z|*QabSUgM^Ò{Tp]1@AުiuXpٟ'?M-lwK!+gB1?LcJ,hƙ+B#^^.Iv]LO֟|Wa]}_H 7㖲5܏XV^P^ C{xt'ܳYb] m-Zrn7c]{Dj`O/X/~[-m'.s Gl]z(SriЮA̚Ź21\,fg~ⶤxb~6N*PY0'uU%|O QpϘ`=3h'Gj9ރ#6&H^Rݘ]t> æb`6  'nYL^55ӈQ:]ҍ֢L=r2,mf\ҷOړ,Ncyb"CHnpԛpqnaoUrsK+,-R Z-gohG=Bv!-ߔ/FZ>yo:ird,mO]Q&ri?1I bRI\Iłx5Ʒ)n.6j}%&4s6Bf'~UoCyLtR9lՠQ 12^˸,߈g SbJcv/)w 7pmA÷f&A.Ye#.'0&MBа,ƑkIne_Bˠy%W^q7 |L%*{meu RERxIfLsû块e[VxޗTOtk RtuY ATBj18O^S"9L__[)jYbM}V˹`W}X-f{aϺ\jͶbْnjϬTӚ|6o|cO%x!|ǹR$[tH*_~@e*"`;I KT>B`5IwlRz7dRDM8ږ17]fA!AĄ#NEH C#F/f`t ^>?ɓ\N"v x."r]U6vG;ԘmbaMY0(Nks9iE;^I(y)[ % q줦 e\yT]{xҊz]ن=_yB~܄e%Wj#$;"ߋs-jӽ@lLbl挵8h e?{_I |s^x/4rf;vEO_|_P]MH'3ZT@0K3';KyBNWtwC<;HXih/A)yc: gBT_&/#jxJMEw/F(h Rf#yYIrZvV^*+PivLǣIx y= ,r[Co3M#&F-}T*KM^45QjRЌE<;O'r[FpO{؄qfIHPDV&ErwQ<s#3cBuz9=s-7D~Q!V%m%s=N]4h52zxOĔ)S jK_8rFqZ_t[-%F݉dy˝>1 лUƷav$zjoĺn$"1h}95 #R]<32"%c#׵P~>4+k^-WY(gjNB%^oZ+?'鳯AB@t`cz.4;,>TT=x|;nl g$lY/1e{=xr_İ%9<}&%{lre1<7i4ʎUďs]Y.6\zD8̄ yn:'!͖EGѻX5:El.'KJ1j"Kc.a[uMk,G Yb^b7Gm8Ub f 9Ԏ|; w<~$ [V%ȑ~hnQ.A $yݱjeMkM?/xۻH~8кH,V808~>:A]R)78WNWBh4r7X }AM?:Ug-3vb@zv5XDPT'|K{kZIlGr&v1K⅞%!pVq3(xT[gu~G! <̨ys6uF2$ ȗk!3fpjUE_vTPԊ>~AW> ā;돉c[ǹr>1%lc:k dN@B8NpT@eq'x%sfw-G#P'q!ZfA  :d9w)K_s!-++,2{s3 Ԇ8lm=+}B>{ZoV`DKA#L9&%[V/5muC@-&]%%bgc1Yfc?ي+,)3(e7}.ʳqQN{kr}j.6GլҏGݟuDŽr!'S ٯqx,q͂=)ioyA<اxۂC]aU+˖}HJ&Ø\4u_w߿\v0uiwZ0zm85u\l2mَiđ58ȩ9R{ySTm+Z^9Ow򴥉2f+һb]obͦ>%] 2R5X3%z󙮴0)^\M]@S3=,Cro3tá٘ߐA3t<ȁh")gxB0~Or:,R*bD{srF͵ڍ&[I ,P\HWե֝]x/G} Zm|j r"'rQbⲄTA̜hq1OeYr^5Vط#Gd.tk׸tw">,Z,9'#d, cddGVOYJ˅Ey٣ptK 5m3}C-#Mi)EK³{ L,PӶI =D- ``Xx6>!LF]YQ23<`l ga:e`}3+o"}/FtR6vZ 8WGY:S6-07,%Ke2au?,V؞:i\K{Np&awN}sG$][8*8#yif\ji>WN/_g?ҁ3<aio?XMİDrc)@ zl}Ob؎ [؂SцͷN)=%h$]m=a,M]DK*E:! [yMKԸFd$F\ 1 0aYu6߁"W+zs &ۃUᴍ&5zٯKcuq+AuͩdDJ#A<:6'ZW 8705gnHN>4x[ yN-_d Gk&Q.|[K$l${"*5!qSNKOeKk׭1>cll!2 d398)-e-9x[Yz5(@_ɜL} 7Q`syl-wJw 6"/hGA/@Òάo=4Wt c?~;}ت뤍=3EAlq%~ ˡ2hA:S=$9d\`>\IUf}X(ŵA13eA0%Kcu5]Q}\{ث6ș1 WkXKjm__ޡ$fkD?m 7e. >`.}U8Fai!apww8h’ާK sRyXlu%fr~!.U-qIr] ro񻮊 #MX,1^  ʺg45WcFQ-JXܐ7z Fᚢ ƁzlV=x҄X/[!Skrw~N]8UDCcg\kr"z)[Ml{M]%iTxFL@r괛j5 W֫{y c[=g#m %;ۥWsF-T(t\Ae/A<s$QO IGQQ'H+Ri8aM]>):wvVE#GKڎ&&dH@V{"qù@Cw ;N"1= Dm֮{kavzY ~JDlCiK* ?ـ" }%Yto=$ ^o]7U9|2oZƒ >˚_X))ˠ h0$P}:/7w-!i/IbTV!)?@DLlrنb@G<CSU v(FbQ tmPGE^'?/fރy+?^+Q*zw]4h-~t+9ݮ[ zpn3j"5Y(S,kvmu9#X ä9À \#HYd5HDbԿԣhL`y"*iH34e)<Δ Zn(}?E;7_U{w]>[-Μ~c~)Lz>3> 6?/P}pMv\ hu,'%Be_$nJ' 'mer 5:FH@fOIhYHy)lM\-$LCi0:=s`+4ӈCz%v΀oJLMn:rpkP,}~͸eeWPv5c{D&[7硼fs刀~q~c}}*y-7-jv8⢜LyOvUKF+h>wyShQPeP}m?ҟ\AIAv[B$=#Cfׅ\gH{=:&Fӄ?X[_L8RU."`kF#'Da&[|U 4ץkdM}AM 4+"%[j;c;5 jQXlS(nfwZցgw aYL6ZU̢Upܱ/Ęc}b&Dqy{ 粖?m7?ඹe^ҿ9D(.j竼T9o6-,}H2SL((eMU+qQ6TGp4CPEp MA!YAEW#:PMg ] :OCnV:W=L ~9DnSt4hVU/& pE?˝i4#[K j=4> stream x[Ys8~ׯ㤶"75U'v.'r偑h[Yf J$ӑQ2!h4__I+噴&3&..)|siiKD1ӑLf%QI_9Z癏! }9iITw_:Ka>[2H-\]ptKh71`FTb0?xȠ30Li46SV1;]P\P @yUҴh9-'y&N3qV~d9)Q\-dLxSQseW<~iQ66) FCيX@WP (Bm%hbڹnB+ k8ނn+.p7v ]wEl6VCg8k6z_|Wp Cp-%@<-_ISAg .yX(|mtcڽL6vv,GwsqO bBV§j1iw`[t..J(4w c}:*2Ftv|ѭ9_4?с?|8 lηIF;_6X>N{HU}}`:W>$OCLgSZÇhnӳhJ/q3ѳ7|dmWO ݏ&Ķ:ҵ=*\R"' - Ŗ|5>όsJ{&Ī,UF|ڂBRY^)65U)pOejd.jOU9P4Sifs#+׳yK#+*GIW n~ccXx#6IZ]ԺP.=ShK:L{~IB*xKrK_+"Ƙ. ؠ+9xTMrH7+RS箻DcETbkH <06.g ӊ +;KYFIզp"遍RK%DtR!iMH)Ɖϓ![Xfg63WDvxIr*JBNxm @{rCUNvMVL{kog?K1Js4M%UVŲ-tj+%[[QjXP V4)%3sꁂ9R˥̣\jp&΅ .\%43VYk4iT(^WΟLSO4Frua3ӟOU.`=i!?UexH[6$>N~ڷgįE2s/x˚6}_2Џ4zxs\1QQ8kwpX[KC!J]LNج,a`8l#}8&H6mUb>>]8t1t҅h:u)%%G>ȅVxܜ6GFG%i-A9z7(=Np~<=>K~q9LxZ=LMj7Fcz ~q]^6iΣIu2[tR^@KaWňu"cq,^q* YtDWIŅk).ӑW'.1 J1C7]1c1.1}1c(&Y=R|U3~8y ) P6 M^/SFzӲ^o0)/GE? ڠ7^znDv<2j^~ptvրpj6$ 2 b#{@^|e6<4 ց7Ce6>;|4y#ܻRUw(!`5Ҹt!cgǃU^Tb!k*=n^|,c?F|{&C?j=/'SqpފwU A"b|%ߧER-Yꏛ+d0HW?G ^Z"rnHޞ>:$5v3QwY/%ɹ.Vջ{{{y^)ĹQ^`\2o-U=~yxvr4&ʇ*2;eʸQ\x-B׸cR=}SO_QRNzUblv[錁_%}T}Y8`zqw9xs?y<*%ۧ*P,KO>BpeYY6(?ZmcN^?{ΚC 7?j?7!|g|r.f&uwzp[go~9z<)xŎ"yxϱ{Eyh_w[%{G>$6xLf=nt[+&8mؕZIz\w}[U󎯷Vyݻ׏rzTyg>E4cx)nk^G/O0nt>m,OҔ1W7ֲ,wZhD~|Ӄ#HtvD5D.>)ֱ΅P&N>^y[3z'$@FTϋ zNзW[NWc}vkVSZH/b~e~uz%5ӯ> endobj 274 0 obj << /Type /ObjStm /N 36 /First 294 /Length 1156 /Filter /FlateDecode >> stream xڭW]S8}ϯcb]}{ Mmh) ^ $Ld# >ɾs#E6)HLT&( \JI%I QEty 1]aZ@. `"h48/1 H_0/5(g&0iP."bo_e`ZclaS!FpeXn)I@\f>XFlFG?9I>W(YlU (?}?|?=]\鳼\njAuvx)]!t==_7]ud t>G#`nȁA@/^O?>;[e]LVC?>_|zX ط߫OXb^ 5-#j҃#OIUEO#TtK"Em^zyɞVu)OYAtxbjCP? 7JW>9uQFHLNzl-F|clH%¢ω{j7_Dt#W)JL;E af7 W!LD?0,x04[KUwUHe*빪U{Sw{A[ !"h0E^10F1%19svm3Y>}7[/?,lSt.{o{0&vb66&_Cx(#mGć,n|oze玂x(au_q/=2&p)S LP2:eІZPnG?)>,ddrɗ|uP+oFտCkw endstream endobj 290 0 obj << /Type /XRef /Index [0 291] /Size 291 /W [1 3 1] /Root 288 0 R /Info 289 0 R /ID [<2C3255C08E20DE5512018CC766E67091> <2C3255C08E20DE5512018CC766E67091>] /Length 735 /Filter /FlateDecode >> stream x%oaμ3VjE]zQmQUzW/zىH$" NJDhbƆ؈  n>9L!B9P\ۨ43J$2BC :mJCfmʃ5eYY m!ld3+-*+d/f+a_;,3o7v(r9Povr9Xbށ-"?jTC ZݰB=THpR~ =l.yfA!wAB񜷇YYAGOBBgo 8Gt(>Rhyeyv N+t}[U?c_a&` <*0C0 #0 cR뵜sgT4,T}ghxyqҗ/K2DzHz[>p (6_ЏnhCPbgDԊ/?P{6KG|F5.5k$H+17(Y.)1[Rg*5"jDԈ)cf4iAq-_ -kzLZ;+#WFH:2i]@ A@Wq Fw^+֫wy5+jX/FxըRW׍)dqt{5tWJylJW:lZ;e^*3Ja;A9 9*efe>iZ endstream endobj startxref 548304 %%EOF Epi/inst/doc/flup.R0000644000176200001440000004611314003562715013612 0ustar liggesusers### R code from vignette source 'flup' ### Encoding: UTF-8 ################################################### ### code chunk number 1: flup.rnw:22-25 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) ################################################### ### code chunk number 2: flup.rnw:137-139 ################################################### library(Epi) print( sessionInfo(), l=F ) ################################################### ### code chunk number 3: flup.rnw:148-157 ################################################### data( DMlate ) head( DMlate ) dmL <- Lexis( entry = list( per=dodm, age=dodm-dobth, tfD=0 ), exit = list( per=dox ), exit.status = factor( !is.na(dodth), labels=c("DM","Dead") ), data = DMlate ) timeScales(dmL) ################################################### ### code chunk number 4: flup.rnw:180-182 ################################################### str( dmL ) head( dmL )[,1:10] ################################################### ### code chunk number 5: flup.rnw:198-199 ################################################### summary.Lexis( dmL, timeScales=TRUE ) ################################################### ### code chunk number 6: dmL1 ################################################### plot( dmL ) ################################################### ### code chunk number 7: dmL2 ################################################### par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( dmL, 1:2, lwd=1, col=c("blue","red")[dmL$sex], grid=TRUE, lty.grid=1, col.grid=gray(0.7), xlim=1960+c(0,60), xaxs="i", ylim= 40+c(0,60), yaxs="i", las=1 ) points( dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col="lightgray", lwd=3, cex=0.3 ) points( dmL, 1:2, pch=c(NA,3)[dmL$lex.Xst], col=c("blue","red")[dmL$sex], lwd=1, cex=0.3 ) box(bty='o') ################################################### ### code chunk number 8: flup.rnw:255-258 ################################################### dmS1 <- splitLexis( dmL, "age", breaks=seq(0,100,5) ) summary( dmL ) summary( dmS1 ) ################################################### ### code chunk number 9: flup.rnw:268-271 ################################################### wh.id <- c(9,27,52,484) subset( dmL , lex.id %in% wh.id )[,1:10] subset( dmS1, lex.id %in% wh.id )[,1:10] ################################################### ### code chunk number 10: flup.rnw:277-279 ################################################### dmS2 <- splitLexis( dmS1, "tfD", breaks=c(0,1,2,5,10,20,30,40) ) subset( dmS2, lex.id %in% wh.id )[,1:10] ################################################### ### code chunk number 11: flup.rnw:284-290 ################################################### library( popEpi ) dmM <- splitMulti( dmL, age = seq(0,100,5), tfD = c(0,1,2,5,10,20,30,40), drop = FALSE ) summary( dmS2 ) summary( dmM ) ################################################### ### code chunk number 12: flup.rnw:301-304 ################################################### identical( dmS2, dmM ) class( dmS2 ) class( dmM ) ################################################### ### code chunk number 13: flup.rnw:334-344 ################################################### whc <- c(names(dmL)[1:7],"dodm","doins") # WHich Columns do we want to see? subset( dmL, lex.id %in% wh.id )[,whc] dmC <- cutLexis( data = dmL, cut = dmL$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM" ) whc <- c(names(dmL)[1:8],"doins") # WHich Columns do we want to see? subset( dmC, lex.id %in% wh.id )[,whc] ################################################### ### code chunk number 14: flup.rnw:362-369 ################################################### dmS2C <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM" ) subset( dmS2C, lex.id %in% wh.id )[,whc] ################################################### ### code chunk number 15: flup.rnw:393-394 ################################################### summary( dmS2C, timeScales=TRUE ) ################################################### ### code chunk number 16: box1 ################################################### boxes( dmC, boxpos=TRUE, scale.R=1000, show.BE=TRUE ) ################################################### ### code chunk number 17: flup.rnw:437-445 ################################################### timeBand( dmS2C, "age", "middle" )[1:10] # For nice printing and column labelling we use the data.frame() function: data.frame( dmS2C[,c("per","age","tfD","lex.dur")], mid.age=timeBand( dmS2C, "age", "middle" ), mid.t=timeBand( dmS2C, "tfD", "middle" ), left.t=timeBand( dmS2C, "tfD", "left" ), right.t=timeBand( dmS2C, "tfD", "right" ), fact.t=timeBand( dmS2C, "tfD", "factor" ) )[1:15,] ################################################### ### code chunk number 18: flup.rnw:481-482 ################################################### summary( (dmS2$age-dmS2$tfD) - (dmS2$dodm-dmS2$dobth) ) ################################################### ### code chunk number 19: flup.rnw:487-489 ################################################### summary( timeBand( dmS2, "age", "middle" ) - timeBand( dmS2, "tfD", "middle" ) - (dmS2$dodm-dmS2$dobth) ) ################################################### ### code chunk number 20: flup.rnw:594-596 ################################################### dmCs <- splitMulti( dmC, age = seq(0,110,1/4) ) summary( dmCs, t=T ) ################################################### ### code chunk number 21: flup.rnw:618-623 ################################################### ( a.kn <- with( subset( dmCs, lex.Xst=="Dead" ), quantile( age+lex.dur, (1:5-0.5)/5 ) ) ) ( i.kn <- c( 0, with( subset( dmCs, lex.Xst=="Dead" & lex.Cst=="Ins" ), quantile( tfI+lex.dur, (1:4)/5 ) ) ) ) ################################################### ### code chunk number 22: flup.rnw:639-644 ################################################### ma <- glm( (lex.Xst=="Dead") ~ Ns(age,knots=a.kn), family = poisson, offset = log(lex.dur), data = dmCs ) summary( ma ) ################################################### ### code chunk number 23: flup.rnw:663-666 ################################################### Ma <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn), family = poisreg, data = dmCs ) summary( Ma ) ################################################### ### code chunk number 24: flup.rnw:674-676 ################################################### Xa <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) ) ################################################### ### code chunk number 25: flup.rnw:679-680 ################################################### attr( Xa, "Lexis" ) ################################################### ### code chunk number 26: flup.rnw:689-690 ################################################### xa <- glm.Lexis( dmCs, formula = ~ Ns(age,knots=a.kn) ) ################################################### ### code chunk number 27: flup.rnw:693-694 ################################################### c( deviance(ma), deviance(Ma), deviance(Xa), deviance(xa) ) ################################################### ### code chunk number 28: pr-a ################################################### nd <- data.frame( age=40:85, lex.dur=1000 ) pr.0 <- ci.pred( ma, newdata = nd ) # mortality per 100 PY pr.a <- ci.pred( Ma, newdata = nd )*1000 # mortality per 100 PY summary(pr.0/pr.a) matshade( nd$age, pr.a, plot=TRUE, type="l", lty=1, log="y", xlab="Age (years)", ylab="DM mortality per 1000 PY") ################################################### ### code chunk number 29: flup.rnw:741-745 ################################################### pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + lex.Cst + sex, family=poisreg, data = dmCs ) round( ci.exp( pm ), 3 ) ################################################### ### code chunk number 30: flup.rnw:759-763 ################################################### pm <- glm( cbind(lex.Xst=="Dead",lex.dur) ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex, family=poisreg, data = tsNA20(dmCs) ) ################################################### ### code chunk number 31: flup.rnw:769-775 ################################################### Pm <- glm.Lexis( tsNA20(dmCs), form = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst + sex ) c( deviance(Pm), deviance(pm) ) identical( model.matrix(Pm), model.matrix(pm) ) ################################################### ### code chunk number 32: flup.rnw:781-782 ################################################### round( ci.exp( Pm, subset="ex" ), 3 ) ################################################### ### code chunk number 33: ins-time ################################################### ndI <- data.frame( expand.grid( tfI=c(NA,seq(0,15,0.1)), ai=seq(40,80,10) ), sex="M", lex.Cst="Ins" ) ndI <- transform( ndI, age=ai+tfI ) head( ndI ) ndA <- data.frame( age= seq(40,100,0.1), tfI=0, lex.Cst="DM", sex="M" ) pri <- ci.pred( Pm, ndI ) * 1000 pra <- ci.pred( Pm, ndA ) * 1000 matshade( ndI$age, pri, plot=TRUE, las=1, xlab="Age (years)", ylab="DM mortality per 1000 PY", log="y", lty=1, col="blue" ) matshade( ndA$age, pra ) ################################################### ### code chunk number 34: flup.rnw:819-823 ################################################### library( survival ) cm <- coxph( Surv(age,age+lex.dur,lex.Xst=="Dead") ~ Ns(tfI,knots=i.kn) + lex.Cst + sex, data = tsNA20(dmCs) ) ################################################### ### code chunk number 35: flup.rnw:827-830 ################################################### Cm <- coxph.Lexis( tsNA20(dmCs), form= age ~ Ns(tfI,knots=i.kn) + lex.Cst + sex ) cbind( ci.exp( cm ), ci.exp( Cm ) ) ################################################### ### code chunk number 36: flup.rnw:839-842 ################################################### round( cbind( ci.exp( Pm ), rbind( matrix(NA,5,3), ci.exp( cm )[-6,] ) ), 3 ) ################################################### ### code chunk number 37: Ieff ################################################### nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 2 , lex.Cst="Ins", sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), plot=T, lty=c(1,2), log="y", xlab="Time since insulin (years)", ylab="Rate ratio") abline( h=1, lty=3 ) ################################################### ### code chunk number 38: IeffR ################################################### nd <- data.frame( tfI=seq(0,15,,151), lex.Cst="Ins", sex="M" ) nr <- data.frame( tfI= 0 , lex.Cst="DM" , sex="M" ) ppr <- ci.exp( pm, list(nd,nr), xvars="age" ) cpr <- ci.exp( cm, list(nd,nr) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( nd$tfI, cbind(ppr,cpr), xlab="Time since insulin (years)", ylab="Rate ratio relative to non-Insulin", lty=c(1,2), log="y", plot=T ) ################################################### ### code chunk number 39: flup.rnw:948-953 ################################################### imx <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) ################################################### ### code chunk number 40: flup.rnw:963-973 ################################################### Im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + Ns((age-tfI)*(lex.Cst=="Ins"),knots=a.kn) + lex.Cst + sex ) im <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age ,knots=a.kn) + Ns( tfI,knots=i.kn) + lex.Cst:Ns(age-tfI,knots=a.kn) + lex.Cst + sex ) ################################################### ### code chunk number 41: flup.rnw:988-989 ################################################### anova( imx, Im, im, test='Chisq') ################################################### ### code chunk number 42: dur-int ################################################### pxi <- ci.pred( imx, ndI ) pxa <- ci.pred( imx, ndA ) pIi <- ci.pred( Im , ndI ) pIa <- ci.pred( Im , ndA ) pii <- ci.pred( im , ndI ) pia <- ci.pred( im , ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pxi, pIi, pii)*1000, plot=T, log="y", xlab="Age", ylab="Mortality per 1000 PY", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) matshade( ndA$age, cbind( pxa, pIa, pia)*1000, lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) ################################################### ### code chunk number 43: dur-int-RR ################################################### ndR <- transform( ndI, tfI=0, lex.Cst="DM" ) cbind( head(ndI), head(ndR) ) Rxi <- ci.exp( imx, list(ndI,ndR) ) Rii <- ci.exp( im , list(ndI,ndR) ) RIi <- ci.exp( Im , list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( Rxi, RIi, Rii), plot=T, log="y", xlab="Age (years)", ylab="Rate ratio vs, non-Insulin", lty=1, lwd=2, col=c("blue","forestgreen","red"), alpha=0.1 ) abline( h=1 ) abline( h=ci.exp(imx,subset="lex.Cst")[,1], lty="25", col="blue" ) ################################################### ### code chunk number 44: splint ################################################### gm <- glm.Lexis( tsNA20(dmCs), formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + lex.Cst:Ns(age,knots=a.kn):Ns(tfI,knots=i.kn) + lex.Cst + sex ) pgi <- ci.pred( gm, ndI ) pga <- ci.pred( gm, ndA ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind( pgi, pii )*1000, plot=T, lty=c("solid","21"), lend="butt", lwd=2, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", alpha=c(0.2,0.1), col=c("black","red") ) matshade( ndA$age, cbind( pga, pia )*1000, lty=c("solid","21"), lend="butt", lwd=2, alpha=c(0.2,0.1), col=c("black","red") ) ################################################### ### code chunk number 45: RR-int ################################################### ndR <- transform( ndI, lex.Cst="DM", tfI=0 ) iRR <- ci.exp( im, ctr.mat=list(ndI,ndR) ) gRR <- ci.exp( gm, ctr.mat=list(ndI,ndR) ) par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1, bty="n" ) matshade( ndI$age, cbind(gRR,iRR), lty=1, log="y", plot=TRUE, xlab="Age (years)", ylab="Rate ratio: Ins vs. non-Ins", col=c("black","red") ) abline( h=1 ) ################################################### ### code chunk number 46: flup.rnw:1112-1125 ################################################### dmd <- glm.Lexis( dmCs, from="DM", to="Dead", formula = ~ Ns(age,knots=a.kn) + sex ) ind <- glm.Lexis( dmCs, from="Ins", to="Dead", formula = ~ Ns(age,knots=a.kn) + Ns(tfI,knots=i.kn) + Ns(age-tfI,knots=a.kn) + sex ) ini <- ci.pred( ind, ndI ) dmi <- ci.pred( dmd, ndI ) dma <- ci.pred( dmd, ndA ) ################################################### ### code chunk number 47: sep-mort ################################################### par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ini*1000, plot=TRUE, log="y", xlab="Age (years)", ylab="Mortality rates per 1000 PY", lwd=2, col="red" ) matshade( ndA$age, dma*1000, lwd=2, col="black" ) ################################################### ### code chunk number 48: sep-HR ################################################### par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") matshade( ndI$age, ci.ratio(ini,dmi), plot=TRUE, log="y", xlab="Age (years)", ylab="RR insulin vs. no insulin", lwd=2, col="red" ) abline( h=1 ) ################################################### ### code chunk number 49: flup.rnw:1171-1179 ################################################### dmCs <- cutLexis( data = dmS2, cut = dmS2$doins, timescale = "per", new.state = "Ins", new.scale = "tfI", precursor.states = "DM", split.states = TRUE ) summary( dmCs ) ################################################### ### code chunk number 50: box4 ################################################### boxes( dmCs, boxpos=list(x=c(15,15,85,85), y=c(85,15,85,15)), scale.R=1000, show.BE=TRUE ) ################################################### ### code chunk number 51: flup.rnw:1209-1217 ################################################### dmM <- mcutLexis( dmL, timescale = "per", wh = c("doins","dooad"), new.states = c("Ins","OAD"), new.scales = c("tfI","tfO"), precursor.states = "DM", ties.resolve = TRUE ) summary( dmM, t=T ) ################################################### ### code chunk number 52: flup.rnw:1221-1226 ################################################### wh <- c(subset(dmM,lex.Cst=="Ins-OAD")$lex.id[1:2], subset(dmM,lex.Cst=="OAD-Ins")$lex.id[1:2]) options( width=110 ) print( subset( dmM, lex.id %in% wh )[,c('lex.id',names(dmM[1:8]),c("doins","dooad"))], digits=6, row.names=FALSE ) ################################################### ### code chunk number 53: mbox ################################################### boxes( dmM, boxpos=list(x=c(15,80,40,40,85,85), y=c(50,50,90,10,90,10)), scale.R=1000, show.BE=TRUE ) ################################################### ### code chunk number 54: mboxr ################################################### summary( dmMr <- Relevel( dmM, list('OAD+Ins'=5:6), first=FALSE) ) boxes( dmMr, boxpos=list(x=c(15,50,15,85,85), y=c(85,50,15,85,15)), scale.R=1000, show.BE=TRUE ) Epi/inst/doc/flup.pdf0000644000176200001440000342073214003562715014170 0ustar liggesusers%PDF-1.5 % 127 0 obj << /Length 792 /Filter /FlateDecode >> stream xڅTKs0W3b='H)p. 4q [ϮV8XV>Vl*vUJ&5 6]sg[*&4WH gHc@lM&+x0{U _Ce))#ݲ |jo XF*[XF]#--, #ﺴ#"P( 4$p7 )ϥFk/dc /-ƶ OI G0sMN V9ĩ P'`P.g@fcd~2 ݊(7a%ey imbRvA0Jri\&zv 0J\Q,]$|z +^D&veۤ&Mw˛ح{w(xQ㸵(kÈ7B$uЇZzKLN#&z] imDY0<ۓvFHECe@wI6T~`HwP !>%~Ŀǘ) 4Q鄹ϻ2F}!m EI5lMqApyـ ؾ:ׯ4@Œ ?Lߔ endstream endobj 167 0 obj << /Length 1367 /Filter /FlateDecode >> stream xZMw8WxiV-kɤNgiٵPsI:~adc|4 Y,Y< _xhB9R"x(r&)5R,O判jHZVZ_`B`dR"tomQp:)ꅻIIhH>f2Rb}x22GK7#6wFEFT[ژ?G ȸ}#< +ى.&md!(T""\LL,4r !(;ļ2DZ5gy-aFܙFvvvR~^)=7UhT0$Cg2׋> S4C5Q_G9iɠ/f z'4oac^(cw_˥adtc/i0 S]i*ќ &ōV I'LV8;1ݣDhovTRv$eƦkgle ˥5lD"DP_"sJEgDž:/qC@=J0aVJ"Bd"h\ Y+׎FUZ2[ѺkdXQ!j̮ofPA^h(@5;$ ~AY2HL, &}Iչn~:Xߴ͑+KGΠ60@-9ʢ-N+ׇ"+H2"xN@6h"(IƚDHmծ]4Q|C>@ޅu0tڨngx Чk7Y}(xk~ޚ5'Ht?<=rzvq-(*J(~^DON*"z5)Z@ciA{B`d0?m#=/~g Htt3QCm o{ߙnZsJ1$Ro}d\^Σ:F^̟̏̿" ctXo0W?\zܯ s!6̍uȈt PY~>n #٘YF&ݲ*XϹb2vu,БC'C?juSKg\'_?&yIwA f~u06%0e$)Z+sVP:AFLQ~ƅX> stream xڵYێF}Wԣ}q l֘s!r))i.d@&Y<}UI,iIH^IL i0I: (IʸRpSYR"iojMa0d@dy iM>rS0@ ^8g-,E9"urAILC+iԕc ÈX#Fkg،3IZ!&RJHkxL Rƞl %ޙ&=9\xb:@i&x /j19B`K +kBiARRc#p$OpuC!( ecbFzdӄt, /ka' GxŶdVofC Ö,app9X-J6?>כ e"4ecBI #t<{k!ה|j(KMݕukɫtbѕ?2|_wm3[MK/A&2ZvM^Ach%(>5wt\-hVtU5u_JaQѢVܗWꡤ崘1b^u]U+m7xP/z1D̺Z㭱hձNլ`UAQ' Difqm[Èj0UhyїW;/%MHVwwe[SܖeY0L2r18-9oԐpD{*g}-4/z*v\AWpRCS-w6+e=Clmv`AP]@]vcK*t|[sE{_0j8vc8nsy_V:.UVAc;M/-iUbQEѻ7(oKV#^ΪՌ~iXyW-_Ko)n֩nU&0T!<}X@CCSYr,ͪ4}FV 3LySFf!Lڮ/羙չfA/74l{hqϯpz~d>km3)M̢qgVzO0_!m_tMv QwiGO 2-KSL vozvW~/,>LW^Yu';Dq?5ㆻl RJ/ko/6A}G[O=@gnڧ11G#(ӨҨӘ4&(k2@'a3 AoxL^>Ap86D<"O1F)oC 'Q{ȳ(v "#Bd–B" }BX&[?YqJcd]phl!9Ic tFYvyuZ6&fZ-p s8Sۦc u }6JdFm3"SsE,2%~uܐ06ǰ9i~[Q9ChBS Go`9t2nF1KӲAE;Qx" NKD"mi> stream xڭXKs6WpzfB_bomIәtsr)JVm=*RV__`ĂmyFXoU_B:Y2(hdAQEp=8U4Q<v0'cݭn;:N2˴UaF,PHZ֬չ{&װV44 t4# ;P( iʲscgcF'ik#Wٝ[Z(~2t}oD^7LVvhI!m0 n&}IfA(Ms΋c7 \AVlmUքa*[SnXk\=}vvSx *\%bk߃fA"BxU"B@c ]EGN@Uhg{'V }8zG1`vJlY\mt#m4U-d`r.!c7gYwƷ݈0 .?oCl#cM5uWĩouѾؚ6"97NqƾD.6;epzvKӴ vK3G u {_moaLi꫑j\ p\N2>CZ={ 7zZ=숾kMP|5#"cP?N%5,P3l~95XdP 0wՊ0M]1{- hV7GhYOr2쥕/CCAvm5! 9!fLRaZ)Ͻq"#C{g- +uGpRJ=?=mm)Lu3]ti$Crx% OzsFE-?deutaR Ĺ,' 2{w#CJb';FGwF㑵|'\b"ʐ&?$I ne82EN'frB.`rh4.^Pq_q<(/ˋD7Y&#cSºph40\DofMb3++8 ϫZc ,˛g5X2Jc ]ia8K]NIu]']}a FcWXyA6-K\TrtgĝG+jD@f@GbZ8ք;~Jдi>a9=1E.6uQ?3 5gt1k8mU&_T$KK/:Cdበi5_F: QfE-~_69 endstream endobj 182 0 obj << /Length 1724 /Filter /FlateDecode >> stream xXKFPqDԈ!"To,-ӣ׊%@ac_?Yrd7UeDs,In6qNmb&My:GU:7["^@Gu)w¿ymz:Yy×H~r d+b,!N::Qæ7Hwxz{ t- 6Ej]1͜N{%)H) k +MU=T61]=F k@za L7?1˙6k}4\#dS:l|mrh9ѥ2bf*჏:Wb69 rO^,$@պ}fM:ڞs]2FدkL:}Km] keVzS_q6S!TpJEbnΥVKXl: td[>*:7 ÁG \' tF[)-bvT]6]`781g>A=o6mN}ܲԺPŹ$Hݠ1"M̳C Ģ@(bL^ͼj#握jP >rMpXA$]]$3J&g?3g^[4^ #[ǹ^"0جfl±fg` l[6kwʲVjS*=V=!azt+nY%$ e~8B4,XFzoYK]o>T%Ft5~Xܜ$Dם )dcwZ]g'Y.m(5A|W520b?{ӏ $ Ƶ L'0J&soD&`s [-}rq ^Y"7/|@U߼}%+x 8ȓ+ 1cddDL\oVXeE+ Gh&,Υp<6jDާ&CHj(\JVe&Of^8 Œ JsS ۩Lhe(,D}*Eg0ZzUH͘0CƐ9 $sUDN AZuT+}/iT oЗx@"/Z(`B .ڼk'8)|nlZpPYFs78l1N3Wt]u63 Ik=mdA>Y$%.mW?AU7nSO cqn2' Pw9 aC(Ey ƷnϛavBvAўăJX7zh_攭-a~lC(zXАNsX^[%HN-r-E'B}mɹaj~w[2Ey9.G;mw{y_8Pǥl*t h v3C>+9nPiolmmGHm$mP^/.c鵺7 SlWAܓՔCA\L+21P)M&vjWveovJO{m&A!-]xhB;naI5~hx۶C[ή5*zgz4>VƸ:~S\9?`vqkX攰Y (`oT"t endstream endobj 190 0 obj << /Length 2428 /Filter /FlateDecode >> stream xڵYݓ۶_I7`g&LR۝|\'sÓ;I(9?>b,(PE"Mn4仫<Y"Z&e*'eY"y7}sNta_jګF]Jlu1"ǥ~,Kk{!z ^Eiz~PlrAiZI nƆ" ۱;$9|isIgL2ev*W㘺x X%KWZ , X5f /+L%gY&RoyOuo! Ds#NDVcEU6,hu'8ߠ׆ˑV&_QvD+ ۢ6|ĤbqQ=`삌}pWcf?:O4\r1VJ}Wl&Ź,!5jP@26uMq:#˖rBұ ԫ!k)Gd%I% %3 o:FJ8[:-\l.%TRyH7G/cTdN_{\=>nP$!ي9)c;RUވbtܾ+whr3q,B37IRm38s@NEZ,fWFKNY~v|QGx6EZW =#nHY*ܪP%oJV2?!x<,!YA{Gܓѳ4C 7x덝YK/,.};|e 0mǺfpګgױ<;wZW0߽ooc3mx c/uDsGZHX)A70ûx {Ё43rp e=0Tpxu54 endstream endobj 197 0 obj << /Length 3021 /Filter /FlateDecode >> stream x[mo_!N."b \Ӹ$@ $jlN\q?CrHw8Ea].w8|䘏ޏo'8yr^ˑ5F..Gf2nYӪ|fO^\*Qr&ȸ.T\wоalCߋ%tkq:Qov6v  )QJ@5tk}* kƟ8;<ɺ$T%vg?yvq뉀|$&ގf7'o0F\jVGN~fΚ :zak CsxC[tbrK@+"\Sc)?sg]&'Ġ2Gt\U+>< H1]z9 x6p=J͖4۩\WL,&@8LNkԄ96aXV}V#th`7˿EpM}BwWgK_l{OEE"2sw^+ P U 4i]yt & 5h&`,oEԬ^,kȾSթlμb`Mjz85VaǮ׈v׳qՂ)&٭|$M%7Ef)'O#u.'a(y[[4;3^#~BB$1~0[+'`֢(6^Jk: %3bxBF1inbjsIx:Mt u&d7Ehx *&e}} v(mԬ,h#T!ayFOtzSKN?]sa#8]Ng3.,]Y4s"f]&ƛA5toe$)H2>Χ+I~ܗ$&:NfPy~B6~QTwXNKn*|?ISQ j^g{$F#dLjCTTN1OQd5F2X8Tn!#^0${QJ$?Nid ] RM" U AĮ1Vq=?PCiqPdF$ .Qer4C5e`o0ɒQMkHFó}} 3l&2R6X,IMkjℒױ Ѡ3R _5Dvyoy"w<S GQ-frMSmKo(^t QvO>7kXՕv ;RPӭݢtP}*$tJR;3wZղF(ZԊl:m͌VTn7C*dKLVi8\ƫxRLXղw깊_l!mMa-3JY~](:+H.wOw;T$aS)q gX %2nHAΒT4Sǵ+%lb^2Tuj+ųrLOjc MYha'evr25]'g endstream endobj 207 0 obj << /Length 2862 /Filter /FlateDecode >> stream xZY~qc\M&@ 3j[}mc}קHɢDwl^j%U:R$i.&_kEa5ᚊQnCd.`<ɜK&eaևPKYʶZFO!-mZ_gDBk\G,F= 1j3i!  f +M#9D">S*j"g@N=CDz5L=С90:3IЎ~ @ġ 4GK|[3O"] #땮Tdx6tN0!2AaDCeiǮ|9eiAMѤ,adv?F,Lj~ FAvS2u.V~uD E|"s2 ]u@5EAhA 5ikfvᏱiA@idwyn`-rҶSm]@ HT!??,d*-#'N7RrZ B9Tz(B>ʽ:EGA.;V]riKZ 3jhz ^ ">\7vv$ⅦG挝hp3AȫyCʩD0,;پ=j-LI6YmknVCiE37ǤJ rO[PMpsQscL@n힨`nًvλjJvΣwc=,dXĤkzBZ[n,/<jx-ho#:54E * riս9D7|bF'2HaHmP?loJĕgNiNʆ4߇nH"7Ui'Ir .%.AߺjɑUd:=c]2g*`ϳUM5ri5-E)tLRqL浮Cq/$* .q}\)(0nGt,mL}0䎜8SibWخ޳mkxSigkm0r #d+2.,hߴ'՛{_`P=4rL@ֳ65{3f1 |;D>pb_Ve{19>?x8T4{8r LG HnDP9m@m|FS'i6: afZgm680O<40|)!rܳtK,qW5AkXzqbTZX/#n)teF TG*>s qnJVqIVkƆwAafttm, Zmlqǹ- -G%k~\ ks޴V6PP=~b؊pU4}?yTEeOBOð8bH"r\ Y%f矧n|=*t^>ߺLQoziȇ:h+_UH}0uBoyNoi/?\L~ endstream endobj 215 0 obj << /Length 1770 /Filter /FlateDecode >> stream xXK6WR IԴ=-&@h$Z^M9Ce0E3xG|)p 6EO'[\&/֠N9uM'9?;wv(ܘJ- ƉM eX!{Υ"K8F??N0^m;oBJV__\ZƐaEod7~ y;˨t|*"0'CVItE",-a-s5]I1({5m*KOZ%u_ T#>-n-6*P|>u.zvyA_MP:D)rq-֢(8C_tL'KH^07+9&@Z_2}}:w$}#ט^i$8$"y'R_C9l/Ux endstream endobj 203 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-dmL1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 217 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 218 0 R>> /ExtGState << >>/ColorSpace << /sRGB 219 0 R >>>> /Length 100751 /Filter /FlateDecode >> stream xMu͒4€$K [b h >+#2*Fb}^{Ȉ/Rso_g_??- wg?wϯSO]k^~?OM~?߇?7_ܜo)ߝO.? ?>RdžnXï8m.Mx~]}nx~_Y?^g<^~f­{jY'}*3 ZNO{~7߳r_T'k%IK?iTuu_WSe$Y@U3e=Fs~ʷz=/S+_n3|M}AtN]V[=_4OE_{S2y䪯"i6 ܶ{CFY2?)"30|I벯EBB\zW?mݗ9.{_/ߺY>l>>?EX;H^e`|YECUu#_d̫8/nvy}oe3xqY~w+ێzX{!w-'=τ5LrDۢh"wޢ~f+~o^^/yG{];mﹾ5,CKD^]sw ި?v\+n2~e'ⷃ{C4${?ye-!kF~O{iGjqݯe/]u:[)`ci[-rx$P~|",,-$jz[L{e?:ݩ/KjCw{;TySB%հ y~PSԷ`Z;[c_{o\mooyR>Au7(¾Ӌ,&|~#*mA8e~.=wV߃ݸEb#De\7c{cמv'ã^+'ge ٍ`-"Je+ uUi+g|˔l{.49b9vFWwRjw2Jr 26Zܙklsx;īݙ#:\wkr-;:Đ;^W{\8߳|-[aG[Ȇڙ4`|=s{oo-6YS%7_P`\8$ywE! ۛXb'Smp&f n-x\!|,%LqGLY;QC~./"od|jG׋kZ_ aNPE0*uwA&*j88k^:P3mwrȹxAr-{BAu eۄaUCQHl%S$.֯lh"۪ y'9GV`t{ŝѸ]esKq<`Nle+ΐ-D:_mk]-YJȷv{Ly>j-唺ZŨoK:5׺eΈ){Xb,)'W8):6[Hkgg=Bmw{ ͼ!PJ#&!N$}ZJJq߈%4NH)g$ wo>B{'k4K5.6YB]o#˪_/_..w٨2uIRZ Ï(ӽ䉲Ñ-1,"kY$D&Q*t _0(;>m[5|wW{z2[FBy9r0&BJV)Z7nu}K9TxjfЩ\z#|_[I 7O˯Aމ<vT9BXKvC$c(SV%حoiIЊ߂xbYP- bY1c9 Y W)U@R_@:Kq-Kc&kwlgDpI|~X8ם}V;L3{V"Ud:M@5YVEά56xHKQN߉DyR)X`=f`bN!}ܽX5׹rJc'zw<F!=}nvoV9-Mb[Q"k1-"|ID8 +ٿC'T2@%%־ځųoX]!}7ʕ$d/,xKz(K`vڒK-!NtbﲷuKX/ڧ(B[-3z4 '{S7yM8Y,RoeN 639$Y=v u/ښ5eP'qp/YU  a[[B we\BV|E`c'd<$m8d5"޴8S// F{O㖫 hfVR!f?GkGVyHcpoGԖ73ޅ)%1$FٻyqV*];keʹp!5[O%]}bNs[,.7 rB"(9R)u)w|ޖ ZbdT=c,&S事ىԘ|BX3dR$k!IZC80fB6@W]LM"\sѣHZhArjB#3zPx(9髄Kؖ{ lX×` gR5 p#jwB+ }In^%Y$yc ?1~/gfe [{TIe=n %PlP/VITY;A(DȫՀDQr2$w#Cٺ8M2l@8T+DצX^ ?R܀^ فso *W-0 @em?}dId7+ u{뼸fļ+ $P&{\wfIU:t@5z oCZL]yV,*=$hDg8*$zFe%q107Y,|K?VGY$V& }{аmVR~s_ `fdy98bk }b4@_>C{2U6!5|'4$u_9Fz40)z0 W6"{al~'A>_[%it HԷ4Y2 Kt[@} wM)zFB ݍ_}J'=0u 'a  R}f/@qm,6[V-w!CC w?/C(A+D+}# ifڧFE?i~ ߓ[;Cp !5v=$C74h9<77ګHw3[ 6bn`AIF%je~QGֶf"#2y`IwH=P.MBčKJ\+ђBQp;2r&&^DIuish'"_} ̣Jm3&ᲝOce`9r.hyWWObR!351Vr's ?zxF)ޝY*}T!Wg05a=LĊ{Rp^Гv7M"5JպӪC$#~:*>'*Tӵ!P dP392vhO|vGnGRec%q݂Ԇ0'D"e W%_uvb&Ub C-M \NvW ^'Ȑxd#8`g;8UJŵLQQc>CXr_˛lQX@0y6kX[bMiԡ(677yu(ҦN/w7o%*b}dOe>{Oѵ$=-+-%<,@(0ߎH~4%*"I62@FPWԦ*=2g@RJj"8J3N(p{iLna7F(Tq*' G#l'DЫ*e["6Ls.)ke*|Bd[v=[Yѣ^% %(xYsp9©浖]qNb96N  -+Np}^#vܕ6T W%$ÂLgNB0Q& vz$FvxGEGŜ!$Yꏺmc4Ωw7D% :Yw-J᩵5S׭}S^87d6ʥf34y$OZɉꔤg8`!"3d'\SEJ@ϦGrY@}1܏\{09x&縦e3!oW%]ܦvhRReoN.Q9rrxv~'M)؇:wHcD2PB}1 u'DZ6e7Oۡ1%,t`ű Y0|~ԧd_ 1#e՟ALnTRhX؎ PV`zm]aLQ;%3l!زT/r?)daړzDh1o :Op4?n>h6xf4?׽ɣ>5ڏ ^1O($UVn+J1'N]@| gXnxKP ϓghPLqhwҒ* "bww9fvSgߧA\/]̮Qdʹ;er}G()^aol^R.lNe >w!--(P 'BU=O-Ղ޾`K5HeIHkRo_dQ& 4#2Qᥜdg]YJˢx8: RԌj8@ŹFͱ2KgZYE ]BY=q "`-{o7&fJyo7{Q#]>^5['S}ӵ=%w݈[L%Ct+ pD Fq\%ƦKxsizqq Nn| 0 f$,oE{^.6a=U~Ee8ǁz*mA=&_}Cɔ78F`RJUVsVK&SPV2EJgp{ }jv|aOe:=u~'ӉkWgl/k%f`$f0< MTSAZlT٧%$kbzZWhBhE//:VQOiY"UlO%7Rac37:Q^BxW?&'z ~P"f!M@d$|+d&Qds\j#˯PWX YՅp8>*_#cF}D8Q9űԫz`E!d!T5' q}ج!4dz >u_1 wcP1h4YkąS$c;="-T/ETo\8񲯧}ᥕԍNl^l0pB$&$ہA嘤3DpG).j}38KG۱sP͉X5@2GF.%y/G5XFӷ|4,a(A.ʚH=.3.;VCY)?sJA"s+8J]>p ^mb}T5x62O{[L{zY #/ h>=NUfaiKr,!g jC;V'>~f.T{|lA.LjR\l[1N\_&;"@7sIb$]SR^vNYJ*]ѾY dZ <{tHjA88*@\5GCjl p\^&/Jc/)Қ$ VG@zuc.z+z7jGdҠj"J]wx7P!:VfFMFgB\|Ӌ])PMq4=ɁIHU[iӪ/ ^vM? %s5 fAr4B",O/< n?Z>d޾ބ 3jSb='o?_V4{,3ȤTOUcqDSN{f ;hIB`>Q*;..=ƴ vo55, bҜ4-@M)܀sZoEĵzr}+Ar`mɆݶҤd[~&{NMnSǫ0Դv`HaQdv et!0=kq]#[paԲ~nΙI1#FDMsU[b]m>I>K"~"YIJȃp[9i,%3#{١ 5\E{MOC @>WƒsA-"EpñFFdj,HH-Aml!Df ڀ'6![}}dػ$G;yI-V;0.>a<@uOA)Q-׹# }b{fiq;W;;Si2+&=1;L Q>!tr'eh djBx ډOҺq2j0m:kʔā[h:eE:dDOw Ay-#{QHG4jat[V|ද:88AEt>AٲkVj[)ML0曼v)w.˱&NB61n)񎬣+Ó͍( k: -RFxg[ASM7 mytɄ 9XW^cU E *%"?iY(Gʓ3j]}a=L"[3EdX2T M=;9.Ag8d-@`Tmg5Sj1-MnDS.^ ]OWUnX"1|Zc3}eC5F&'9dž!FOEK@SEuAwp s@L>b }BSDV&S3[k[8$ǭkxT"gw l6ete's``6Հ(A pQ7ԅDv(^F7d.4w8.`9MPX.=}uRϧ20MT99%9h8@XrLuj&5 eGO(N9q)]ǕR$Z!";44XqKHC`ۖm3]yn4MAFԟ$~IB눸K! `)e.t/ӌ%x5|asFAzAdq/jV(B ᭞(ޭ_ xf6YOǎg5$BM7烻XV?=F3>"pȃ bے[|"؇.&z, IE0DSH( U$mIOZg_˅#oĉJY )7 F~3iԆąT;@[.ܞlȦ. -'}h?4&{8q5+i=zAABI5deB,>y@1&ӗ}Ak,ia1.h?C ,s)4)'{7?~>MlIymNeyP#*Cj>;4򝶨V&HVbuSg*0mf22I10);9fm<Ka[qq{8,+Jɩ)t툲:QQMAw/㹏 w5¹Xr )8kN}[8Q(%Rnn$M :w TXȬ:t [!QI4C~db]-Tݯ<>K$:d#wZ1qĵ'KQ{Z B+v"(z_bFYjVn&? nHUt tZ >^E]4꽵~.BTfH.9V9eZP?*'tUڴ~`T b.zu9ּr(-?o ewbE7/~傕&?Lb{> l-@4RRÃA[<;AWѣJ}VZ45}9|DEܺ=+~ZkqPDH&9q6\4n0;Ч\]+ߞ6h(Y}p&d^P)y?L.۩n\]!9|9[͵ni7$Ȕ,G N',wbTiF83T''X_5╋;o]O_7ڳ0c:(r4Ck(;-6*@8ŏ&/Ӻpl[el/'OItú(X8f_*[$gWc;IKYh"dfP:E5(,ҭǠopFV8ފ"fua&|^y#n1BVާ;3fW~9f$% 霮]"T#u (6ؾ&ot= O,8QνƠۖR}IdܚNܠ3(}{瘆ѵ2 +UcJ|* CŸQ)ϝfɇЃU r@}m:M~WS~SFa'm')_aaTu2r q!f=4Ty?h*sƃHfij]G[Jƾxp@"i(OȐ+'j-_(%$ _$%MDg^go*D83TF58uE8J6R8 "d=ڭ/ml \Sfzsf͘OjatּsaJh\/AȚ~ &d%[X^YO_;&-'ObS>4G2!q*6 A]tzA峯.98-{t{DUZu4}89z9Be:Q%ܦ[ua9r-gz[y @l9Gg4H@C;L_eG:jg"|H"PT* ttl_3.QN+10Zw$Sh!igSNW(:9U|iE ""ϘIsnͮ &,d K/'QzGRKC{,N#[S?6G'欞Pf4f=ylbOuA6R%&2', 8nQ4"CBHQ*lw*MK3ڰΈ2K]'Oz32"~nUc8{ $\SoIOc{]OCt~+}B AQltBnA#~}j-W Upk鉏`/;4*;|c!-*ϭ!@56TynQ_ SQfַ#?P.f`/g_R5p +񛊎X^[CqݰVu=O2Yֺ d_&W9;HJYQy,'WvSb֑R\vD*Fq-1% S&\n%|5_蟏*žx#.n!% q_7vCa;AatbP:>!Zt+@,jRXu3PVL*}K0 \%;۩-v@!mTB5dG拸6Aza0c{aW % KDB{zR m'Wu~A*YXtpsprdUr@joVLzIcZ$Raon㱺AnLvH? xҊPKv#"{}HW!F0E'sj7a(O_Ȗ)Mq)s!K3/-{ (7gs6U35VѤ&<i.8E 58)q~sP(_8փS˻R;cw*9_kڍ Ѭ!"^k&`^߲gPaKfTspTZ-B'6=k(W믃m c7HYG7GHpGy)MʣP{/BoL{0yqUIQAm0H* l0]vže>Cڅ<. UZ=Ri>JkR* SQ^NV!GdJX3 n_tL&*Fex*c吾+ 8V)Τt ݨWVl4}Qru"v#skUcE iR)N+_hȧHY=:ߌ7l{~)#^E٢WpY5B7py uvJNfhct%u>V֩^ջDrEZbȱAתR1{ZB ٪TNSUVLTҎjᦒ| w4H'Tm?RSW1\SL%}Y,M(uȁd?Jv`ã׃ ڵt^styi 8kl6ݜd-JXEߒ(r)q6=>=Z K'wXivh>bęs=p>B=ܯK55!wўqݿ"v fE!(v9Z#b7X>IHnEљ="s, U|BjS":uR*3NFG:ibRoJ`\:D+QULvDTR:̢8am9xb?Oq9i.앓EIA 9FtT2.^3W|QiQtA3vֺf6) 3&gIݢ4XqBjY5RQ{*H%-@:#nV8mǴ]{)lm>_36L "tkQX߅9!e:Hp'jٙh Ag!r-0  AzJPԾM`LS7QKWSg@VMj!9%Ū:pnHazcS:ELQ}+4)RKyu1vͿ Zx850T<,uYy =`NJmsR~=#+y o}ABFy)Y6y-fs4.aW#]%ni!P5SK tJy;URSCIp|^ک voJϒ܎bEVij8 tD4P9[5; {]brĺ=Fo40<(p5}M^= ʱamLrG“Wx.ۖ8dVw/GQG[Vx ? PrHmN8$8'gO L@{\zhtK(#\C(G+P]qU0I6$I~sn)K3bئfb?nyn{rrDG=UI,/ӎ:3K9 uטh:M!sE%2cpXyJ+tԂ`0Y:QUCQR;\1^7ˠfBB2 `|P\uwUfkU0jz]j}&+Yn+jUfߖa>o?.DR8w] ggV/+KpWw+)Qߢ2q=_=# $p?aSЖi@d]KYR}xbgpfH>8GOM"uKnLÂٮ{Wr,o,O/}r&k[;ߎ#= uoK ^:߳#Vuߩ2T:D4@~؄ENItjYe/s, @M#(#+8̙.>EGRA`zt%tV@q@XR,Tw?V̨aeg<Fv86 2=BV1?RLO*p$2?84KDB+v~$;%H!;q2>ilՀt*gz*-0P] E=_̏"\,DvaN8JIɛwt~)DOUʷٵPbs{kaf ;9%ɂ4 ,N'ǥ`T sKb"mA'B ݶ\Bbu,#W4<]Xm=;P<.n),/QxXӝ8!'4X]l $p*,gEjµifVV"<: i讶Ԡ6ΛCU3#j=_f=T~ܗ&<"`BvʮjQV2^씤1Soϯi3@?UIcq*KtS 4@f7eF?鵒=;{!=Z۶dk8]EMO+"V4;Ck7AuE؝z4Tu)k#MzAȨ~TBڑSP=n*J9㲎d3ƌ (/&vn*2kN#X,qS NlGG _N˓ ͋-E|.R:;MUmCS|17Q5 SFX>(ʐbHz;H kzp|謼E39xAuLX? IU9djvReR~Cqbx1?:&WCEℱ8݋'xmluQ'%Xgv5֛zI RLUSrc_Q (>NH2cKV%QGG*VmWr{˚$J 8tA46?/;^5hXX~;&HU\Mw3rID]g~HǻYDd$ӆ={8™78pbX:Pt{b4 pwiNFwX|\R賣.=C3.{N ٤#ۭX5῎AVD$~R!@/(=V8eY+4CNXmM* \ ydXV`r,8t< dW2!G[~>TԠj끐:=쏛rqɞRhrLV[ZY] ړ&K"#vڟtm%V6\aܟ.V4|./X:#Na:U9B<;43FbU hE`;(/\ :y.ڕ=JUVܘ@.:),*ŰHj| BuN[\%G2CH-G$W 2Oy2VNWf3\ʮ3rҦgx XIiU Sy,kZ (qH޳7tQn)FGDa&KO[z`e$fj9SsacIatځp.šR(i1P&.'diwG@h~ZL+ &GL҅"%OgTM-67 }-SQQ;P҇yYIzv{y4y Ԫ'DI_8Tc3W2;ǑD;"0<3zK=ey^=dRc;`)PL=c% 3*G3}5ʂQuNM4HT=ְ@HnNv:n gӼI%=f3kiT3 Ճ-ٻ( qa£;LuG Y߃ [#c/\5O^5 @ӡ %Agc1iM7/A!"(| !(%BÓ6-iY8 ġ CBX2-P/PCafxss>ЩC,#imOn@Q+YYhn`yҏ:&D)t*75|-)j7{'$햨ό\չrGh/0OWpLVyn0=#=xJ~f*qP 3eiunIPj4+B-ieG۠q9KӾқpy|\cpC'JJ_{ܛu!P@9#/%˝Tj#RfBjJb :g(ƯismxO)|Z DϜƲ<=27mkIFw GYe,ޣoIzH8Zq0ՅuVb?flrN#e =@1 *QZ=(EJ,A6@'95o&qJ fIy\|cy`ObJq*.+rR3ׇԻu؍uv:qyPj3̈́"RU*#OɖZz[m_E%M,N8jvޢ9K+GDSԃo +q*09} FpTltv\.,HWgZ؞=?`:$2ٜѐ K?ܜMBE r#*$tzw*BKcAׯڛ7jHfzF\cTO52אu)g#$tdaIM~s7aj: 3|ddGt7gLU dZ=,EyQɹٛ}G1_-\헢އS9oߛ`r-ȑ L/և@FԦr[dlM$cSCc AnӦgpX uIn"#mjۯ=RG3>JF1XMk; {it/N24Tg#去cQWaV{N(/(rMI:U ^8)dlؠ5qIwz 0:~ Pgj;eۤh,}pv iGIb :j֨ }<5;H,4x\;gEA+=[J`ܪYIajFLw@oE zrg׍? P2UMKXrk'w"PhdǢe`{<:xа0yɷj~ԝo[JN|l=U;hWmg-䱵Ə:t1U %mZ"בc惯 1v)dW,bwz+ 9r! ᭺ŹHIϥXYed삑pHqJbBf9VO ȁK'Ϻ;-ljٍhS QZRD[0wLt ãS:T;>-imF =M,$n r-ĢINàIW!iZ$DkUJt`2VuGjRk +PiI:{86K>{yM5"w*:.%JW3MQE}&608X ;qld3nh@v=_qs /@Ot 8R NװQB-Vb1 G^5"՛` 麲9r tK'CDߧw*$w|csB>fD>ϰM7J?vqu٪$vdVT2QL-QXiMd2 IR&` gaB`^ܗ*Ryש1E'ҔѓK0Bd&o5Q6n^*ipG\foOV!d2m^&jy?`>Qpc_>;A?DLkB (0pOjVN_٤+)a:@ghrrBU\!C]4aD X@w=ٿ `&dR3b'^>0]Ͱοd3(*jacQo}k9sJ^z3MvS/*ᛞXVqkoݽWr 绖|! _[18"/:OtSiI+W+%R9[i{zνV&Q3oS*TdeGl% T Ik N.rJ #{wdÍ;˵ ד+g%4纂eӃV% 7!Z|ҹo|L; JǵB7得[c\P5A0+T?[kT58`pX7 ٷ݋c,J[j!Z?9~kg kXnuX " T\ m;* e4Qv@d1 ^],Po>ֹ\&ҋY|'K 'p@vݳXc~5GL=tg!|ܧub—eʩ%Y$U-h Í7T|(L2aX>tw`LpsWrzwP*QH`# ?76NKVE!s)ӣ>z~ĥTgH}qIpI? {ݍt<}YA$)$cE"m"݈<h0 <'V3 qj vcPe$mTXV$DI]kQǗۊXnSe`IUF_h́']S5c KȀPUV'~, PyFVTuX,5?H5;[UGN3un,y؞!:Q3gX5^dSE8cnJr0B_sC9=Axs([)!zcȷۍcAIǵXEskBr?dxkT㩹[5=(єؤyd*xG#n!yYфCYπ 4\r25ҩxD4@81$s%eKp+ϓ37F Ay,O0Խ$OYO{I''UKMC^CK>bnKl0i@x+QXxҁb Yѽ:u;r0񗎂p{'*U࢛USUP ~i04e8).ӏObXe]8 aWSؔ'ƦIض:q؁6H}O9T2I[O*ɸ٦jGE!Nd5PѪlGm]٪n˿bZzͿoͣ^Ze8v YFYՏˀi83 X8:CLJTO4șuLת43 #Nd; FSyEiO*1c^#h5X,Tk(SQh$a)- -ߧqh{>EH׀\|g>ښrg|A'sUSXU! "+y.U$6si'n0+03HP/9wDgH,ɀa1CGp3vK 2[y*Qb#?;-BC@/{x:sg"m8+ rH/׸}?htw~>||S,) b[.N=^ʋU͈a3Q\BĚ6, tJhۨ?tۗDzl}0~n iuA}Ç`JLtK0 \A+{1z]`xs{bd`lQsʰ+G:{:ɍKjA;Ϳ[ѪJ.MP9~d.1WF>}{9OGwD^"xXDvjf_N .:`Rœ[HK=Jub P"%?^LϨrڧ\I5~$|,'ʝ}rwG`~Ul NRӣk.6+Ωۑa?ICЛ˞Rt0{Nq~~x%oN^e<ǭz-gHtl47_6@kq2Iqa.fX9j=|''|"7#O_>sQm_,p+u6 u vo! W]`cPDt)Q?χ8q}?9Z5qr0/7 ʓ B UJwp~zLxtqm59|?w=v9PFZ}]'=m@'V]o7B>H<)Mwܕ. {{6ǜͪH{6 =9Oj]$p;nו8hE{ htv"?P gsƱa k,9:q]Gpcl9i)=i_&(hE/9Bdr !pZ{&MlZ9_.f:)o!VcsĵAjpeDcPэX<7ᙃyfP􄉳do\ZNݎv-:s9`tCXj*?Vepao/&f9Rp5443W=]I+qT:isZVG,qS7iW+i4$_9'rfpXCGdO19e*/q- kHSJ\x.ɎB/F],%v4Cǘ:\]E>@KO\TvkWH mz0C{1}0+ '|QWzʹsNo ӻZj>߳|x<#c] c-z%ܿΝ:: _mؽ2:n=zufxVfFo 6Fj;srdx>9b 'M> }z½;k'$y[a2ل)oJFSe=OR*^4=0H鋩Ң/fM*8X1Kxan8N{PaޟǼ4)2Dwyi&˓f"7Cey\GŎ_㧇1]mX>1 ~}J9QQlsRi̳,'W˝QS$#)(۶?Ry1lEOIti'|mJ']t9];n+$ kY_D{ % I@HJ;cS8Mp*퉎 )=)6}0Ȧx@dtH@|4f:=uˁrR~y\Z;:$2`\<14{>k(7=#i9h))PO{{9./jZ&10{ #_W1 ||c5,zo~n!{xCu1\ŹH׭BBSut AtfV7>l8b5f!d̗I+5a-&Z߈=kgo4pT f{ ϒ`4APz4Xn+w0XÇT,h;LTBaQ&bu`H"(XK0\}4`6܃^$n2bM uh1گIܛ C3[1f(b:|s䢁 40u4i{~bwGAZhUwhD(tfW'B84JBџ1M' &{f1Edb' J#@-0n{K[yW MG}jj|sCىF zao)AׯaDciz4Jnפo#[n]~#͖<-+2T߸6.mRQ<`>D|؝WOyYE[z Tz N.w:lTDd3jp`SF_1uc8lݰ;)ұf_B!1~qXQ]pJCYb|ȿYt9BFCn*v#s2mw{m,ׯeyr8+_L+w-#Çz_+SӼbŬ櫤$Z|C̩8/" >u0 B 7|)(mjGE@T?cPZtJ1aYO]t=[~wTx}>xt}*yk(Phl_ yÑo'LW# %̓Vt7ѯ~jDײK)('psQa#WF[8O~[ _+^D k_J,0N@zUSǑ([7jlZyJ\P}m2CR4z)Fh{TFD| <EŪDRIVٞm/NXNYV'Cqd4J6wlѷ2fNO^${#~*+AV+aG #jN?H+ZTdϮzwr9o3v?`Ypi Ԁޯs)V㰟Jd{"7/{\SIIo L F˃ߜ,z"8- DU6).Dgn'7tǡc WR.V!6 TzRݒ `,jS蠤9@,|tt50;k:ө3D1 6$UkqD4bze('$gOk?Ckzү|"B2CQ^jCe~ t}R숳 #& ,Q@ll\p5DI r?Pb}/@jj d=F@~OO{g(WR˻y!sL6yRWsJ؇42SCELp+ Bj D&k۾b.] WcN=ٜ /,Z4s?jy}գgX"#ԋiI '8:`N(H[~hg:XsˎiKۡ54^Kz `ܧ8d qC*=/=Un`&e54si b MGYQ>>O&IQe6=XǏ##Gp0Qz[P2Fjh6[TXXolA|-(x^,+gIC}$Et<%i惚T"X˝f7#ϴ bR;}{`-ݒ0F ]v~hd/Or:̰*Om:67y0WkHcذ92va(y>i2TW] 4JtDVy>þ#GBIcMҧp.w! )+Q%Z)zfSȯngy>FshKŬǛSmVͼTc;NmT$䓁\o@O63(zvf!#u@8mQ5#}}xCwlq=t4)1%Q+3pJ]\(Rd:>,Ɨu󬫏͘Q#w%Ɨ$Vc P}2`[yRf~%ȱx*Fr.=Xq~p,]tS.!K#k#]#A`vC*xgO9X6?L=?(QdP֞ GzRjfIu"&}PqgpZ۱c;w4ŰfC*G\Qg>MU_6握= b6xyP&C>CcdyZ +~gw̱ 9> |/c<g׳8IJ=+pVPHp *IǑh GYb8hovC_cF&NGC/ 5ZxY;W#@yk7:N8{?KHWK;lo=,ٞ?*WY@˲x‹"#qn0`$o}i"Ե8ŠG@>țD }Fsy<+SN'n92T]bnXfݎ Ӈf܌ : 8 ^l|NX-T<ݶ;ݸh Nףv8`MY)^y n 2GWj@#ˢ7OS@`z꣩RJEm()p; WeݍozEJ.Sk2DRԠ0 Zs@:'Y`4\H1kav=S|[::rG[; SyH8`XNk^VLmhI \`Ԓ*Ĵf_Tg96Q*˱RqnU+bP/ǃ5pB%3_/m܋'xx,%6=Ѡ&]]nd%Ы=]}  p1o<]#]2<eR!6p跭_ rfl ]Beᗈ3cwhr}CN#q"񸬍+̋0!8?X~ӺzNi[+qVxViP7h8O֊oIψE.Z!]]m;\B"k TOwę`Ufɪ.|B ֮Qiʹ?n٣Y6Sv.`Do4.X3Q0'(Ъ;U E.t7 eHʃNe8cS:ܸ2DWø B[k.x]J/}RG50^o;8"K\d}Tj ,`@{vNeSro#7ӝ3\PcqϷ#e' jg\6h7l]X䴚r=6{qJ]Qr|LdLWDk0B>J[KP`!jrju o^}lO,`1m}*]eo<,ɌOw"܄OT> G]F:Yɀ[3:-m[gfje+`Mo'1/& 1#t3n*R" %8j!z~|^,;#eixB̹GyrAߺV@̩t/Y7?%K˔'|G]>ueCM-鴰WIzs>H|2EC~j3C0Pq- gT(|=v9!\mTa )P!n3cG9&2b^5<ڳ]ӘĽmy!ryY%L龍Kc^*e_Ez]׋.Qq;ZGn@u,Ğ\G{mcS9*N_m3GO\E;qwt(5<CډOZzF &1W0`1]twe<4 {푦dOP߯GI/+֫G!.#FF\[nMBoV u[ 15l= %ƉAȴôtD&wD !'/ߏi:Y@D.NQ v_G\0q [hK@:e.hߧsEY]-G#Ovolq"!}B[=s?Sm b;2yg`&s.J[owΨ3>@d.37"aigݟ9щB?À#|BUgPY_xot]pjlzu &zf2K jgSLVq KKʍqN7pO-$%(>鱢,Eu-ALd]w7Q[>O#f{c]oX&qVi#NT>w$COUWAv$,JSY7 72cQ6SNnCE2Lz2E~vc$rj-fȼ mlprq"kDEX*k=^bz2ԓC>! ooJs, fUL?at?sKqcgO>w@+rx1OO&o6]aprX#UUml[֠]z蟾C[!{u vrkMM\3(hm7"d% qP>=alMg Wp[z˽ʙ#Q4|=_ s Z㐙6d򩶟 cFzMuyA=[uoYebox1q?wUt)«\3̉$oA8}ǵʇaNゟ}¤uޟMV'ڄ s:5磛?_V ! X1BQ``@!&dc}1`M)Im{uK%tOA]/Cm`cjXAR{!5:JU^NNF\A܆y'&bXOr)3?b,jEqsƊl\uí<íW AT84I1`@PL^ >ɩ8s>dIxzb?蓬Ɣ `7(<6Ju *"C,#jhиݐ/yn >w`q&)PCcnQ:j{X"oE_m+'-Z9{Hsg5a|jp3ӫwr|o'<{opI^R%Y,rH ZCͯ^x'{{~Uhxe,D]rG EBIPbk-b9ڵ|E)4Nn % qjn?Хr˿ǰm)"gJ/p5CdJe<1I8e3?}W.1δg,%+,D GWR(gǰ0`ɓ˓6px5~p1PuV )W!B-C KDF.۽DTӉ(]quz L߃]*JQE@;/7gkH]Kh ,77@w~?*m׌dl۪ 0ѾuP` ªގEyˈĨ+?qSdoo04Sr޽9g'^7yQ{fQpfϟVKsF@vUI65Q#ܤcQbԶIgcrO(Dc1˪0{U9Ƒ:.?C.j/h&n1&q}bcWbLq Ge\+tt`-!%ъůN){1S:v0Fǻ~;>ZZ/4(a匳&C)L|NAZ9l82ZKVh9q(#$']D"Pߙx'=%[[l稦YHӡAOQ y^h5w N,S Hc}`Ol;Oԍ8u0!LEJr[IDGVKR4Qm+9O*Biؓ ;mut2tfC`nFi,܋v1!+?!,* *txt`qfzXxivMA7ˍO%S; Pmi=HMU4Ђ5p? M z9uע=93Y&y3 ?Z.8)qy%pΛQWaO?FpdKd="Bo!XVOk?QޚN$#(ɼϤ+|8t4fNT/P}>}Gat Kw@\._xƖOElZ1Cad:H:crY?~ڋՍ9[=\֞n=zpP~Hl:|(~0>izBp4nخ7n'(N2>#kg̚pQWȏT6ƒ "!N}.W&@U3i?9)z„4vbuA-vO =,z;K!c\ z¡~O:[jWL7fa#J^ 8T'+R~naVQƧ.cJޘ _`{fBkH(w ,3~t;qjk߭"ӋB[CΤ^aM옇S=M$ 9x+Ϝtk6Q%M4L4.KɑޕG*MU)O`gJݞ R4f||3!!qlVa:!~Ms|d+Y |?7 (+-=3q #;F{.B9<*!S\%{oA bfP\ν%O;kۧUVOc0:F;.HeUy @9d S)+&-Pqk+<w1p2#b+c$GIG'U=TƑ)7ڦ]]ˡPdOJ@i]V$Jʗn'nձu[ i9 ّMY}ԝ.}XqOըߩ2*i[(PO+10AylYx%'qAךܣGNJ#C`&3I6y8l{=| dffއc8jd^O-K{{LevΟ1unh`g?J9{+-e y脪+4ͥs~\U}**u)m]2ޯ * bc:Iؼ}W1-73\>Ց0Ԅ>ae1uL.JZd.ÞZ 'l!eu۴IҊur'm&lH"0i=.0̓eSЎ Dw6ۥE‡'H4K([~{ 1}^[^-TSC=X|2YY_Bc\C(3#`]ea]ȑxvźBJhICAA'ߊQsv2}18uD4JFkŽ jLBA{` eB# uOakP˿Uд3LL$5\+FaNUdMvֻ ]7JqꚦPx®3@6% W>B!Kfro\h-\0j$7$sE-T6e8fe$X$[emfQyϗ}2<ߣ3"0bzwVuauƢ]+)V@)+ԚDR!A*+{5|r)J}!Fy*}yč}j}xMWlɏ@նJbK. DD:(b$QB0 %G)W;G f05K5_XHXϊ Qǿ WQ|՛zT5Q@ċ3|ψ0T+iڈߦ1x\Cƈ=iE|R  UtKm9=^CUb`jzvBW1X[fD*Q8iH9㧜]\ w t C.r.> ySLhko+Rk͒_ψ*7IaˤR9n!6Grt@-.)l˴H>D{ $Թ=":Ȓi>Dɼo,;jHv^Yr%bm=!6ޓQ=@˼0 ޓ[ћJ/U;] ){H-.oib^wM)'LdxxӤj`qXB2~ٹcw]ڝJIUF d镣S5Pv J 塵%}n#rrE DCM"\h`h+NgD<^p2'An{X41ķ@h|Nc=׶܆G$*4)XOd˼۬Xxh}vf=6;gez\` V/]4F-C:**3u쓻}a s=/6IhS^ƛ# 1G,r*im UPG ϲ!:Ճ$8ChoѦ^CZmWb'AOz;%^DSI< R~cv>E|ƜCZ:=,wXF˸4 dȘL9ZrґC'ՌQ~UrR p^?Af◼C zR7: !P4mUp9]Lq$ "zlsYX(rDžˉ<޸M^-8KO 9>~wKI6ċm?]H_g$5Yl8{$Th>IoVܞEV#{`ʢXӇC$}^4/Bnr[N z7="+4)#!oY#ZqAW)rsBa]E1^_ЦTEݥp1Fid>dCWvnNKM{5 QieazXb+ NWP\DxWntyͺ/WltULuNyow/B_+ua}; Ʉ}%co⳾BF0p-\I&VjhQF8ZCb 0O>mg6YUm+B<`υ#(ݢ*Cxmۧ0:6 0>:<782Ϡ)afnBNs9:M{<OX3=sFyrPYbM?ڔ=LƝS Eyqgju4 p8d.4'wfG%![/[fΓs7xtc2s|Cha]TUz3YrH~6$Ao߂bDu?)E0^p?P'OA><9x]1v''Z9bQ+ف5?X>ÛWFuC뎔>sf)HmCB!mqo]z]A:|N;@h;/c{{M7_Z(f؁ / ?PH}u: OSTERk%& vtk?π}1mb۔*މp7@;F>BDY5s͸K☧Nj? 8s<96f7c>:41Q&RΝ xrWU=e7vՃg)[!Z]W[-:pVAo}l+Pee0(񖭇@i3J.+v`0iBT.n3p9&Y^;(T$54w^ls@)DP;Q-VN$KL|S!:#El&YB yLX@7;-=cFZfS ɗ6s1)T@kæZ*/6SCf'KX.p)_rNwGFvl !-M'5͡>o,tAKY"(Eiެ'\uSe=0/+6٨6:Ī"CZ+.][r\QVrw4b)%LIbqwr \ 3d`@2?=z`Va!X`Rc1|K|=IqsypC[*8/A>w"גHˆYѮ56Yㄎ¹b7:=, Ccs,Xjg; dn[i=Lz;)Xuaf3=˺_ah~XuWivU3;Ev%hX\ȲIPZ|AeD[}E~=fvtɗ F^aS$Ĺ7h{u3/kP[aqrv-%圤t.~% @v#=cvÇsOm4\)Y.ƺ3!1A0C36٣w7FW'z` 7bI>(t3?I?$ C17O V܇V-HxRԗڹ+!Т~2"\xghe$d{>Ȯ vEj"xޙu+hrbkMOI4%h~Nj#o@tO {,g^1҃YO 'ׂ #dPhXL.)g{# @͝{Ak~7kjf֣h](. ;N|~27~g4ո>slcPX<.{T;d8nd1Koҵ0+q۟w8놻w_CzfZp(KPH#S=.R7&Bcɗ5뤼/4Ep+.qJ,|}@SHi|UˇvDۓŠO\R.ZϏωJF-1~2X qm!SO1ny^Ɛ[AҫL2'n' jnOK,A[_0tR2{H4-`=vg Z@NJeW_q6>B~bqN-3i#5tMFhWSj|^dǫj)=w=NgNQܤhRP@Beղd GIrǡbVF=D83z٪GL~URʟ.[+kW,]:R;ZZ]~@9 sscrrAqPAˑ39` nrr\vcyk(4&I^BQ+P7\s}g y x&l?@l6KDKi2-[혝҇ I &'VrgAqZmƃـ'uq>v1r ہeuKC k`كc0T_ҽ쌆/ y!ynQ0]{Sf>|y U En}D hO:DE1zԚCE6“qI5P4wx=sc=ئ&}ǔ L!AG6Qej"94a_ȶ,5 (H^ٽiۆ|6L#T(fq D6x9p\Gj9b) @·::=  &ӏSiw %aky `6Ít^FۼYԻ cqMԲt)ޝΚCyQ?8/wQOxx!>ǙD\D,0 ԑfXk$/ˍgBP'Y--f0X7 3zx` \9,[}ZrX$iSeD^;D[{4K=3dN&=:Ƽ6G0ЩZ >!k''憆U$! r]L\qt1ׇK>`& KFW:QwmX-s ^0fy>'URs9'\nwUt\QQ6Ϙi/K[g(Nq\lwvW~r /9^P }|˂iuT͋[x۫ɚ/:"lb/hl^"7h7 3P"h|?LE<(ZcU(_oЦ ɲ㑬$6ـK`k|:BeCSDW>֒+LVډ½g 7dy#XglMjOX]q8"}I4W@hόSPN"DJn1ަ &p0 }|y=5WIp'=!ud`h@UGy}WCWтTka ckG nzZA쳆 Jʇm5gvq%V&R6*ZUVP N:2RQ]`]ʌ#%}d9䍠|k~=Al%#N18KT9Py6/)L7o!G^gwY#pHPܧ MJɶ>,I'{wUF: ,L'PFG6r9/=<1;7FY} )<ၽk\Fî,& H[e%V~t8,2|j֝Zkݎ\{jhP0{Dq]>zg8/[`sV1 JCr2!ݥ/Hz7Ԥؤ>2OaBa2hy% | ae$!9A&h睔h߽ͪNzFK>8(4/V~O4l { ~m- O|.v65vKݎјݚay&>3ZY6^g}ZO So=}%=:q蛏\v' [w3?TK<׏K-rXE6~ub*$2,{GOQj:*5 ?dM?5EyGO&ǡ+ϻsĸ{!poѶ[ʶN;YP,Prۆ? -cIa($OЋaڳyeZ|UYz Ѓi`EsIk z0½^<2~Iпa /y1jrMD9\5 2IB`n(ptT;Qǔc, h|ru|5ua3'ӔByFMcbކў|iT4q|E.oJ@.|Y3Y#S;L<nrU,ǟ.& _ 0A;ͰY# ۺ/$=?c@,ah؉XOAA63ٔ.+2d 68"gDt?L>:a$ʜwo?ĢkjbMVMAp]`Chs)W9j[9"3kFozj濜 EZpⳣ>z+ܶ'8W23r梍Ì̺.#2fIOgTYKPC8yw^Cݷn<ΊYf@hm n*,G:F9a$L|0!=F -Bfr>8%'h@n%'nzX\x˅=m8>C2}&7fhxm5g:tZSwIC*p75uZ\/0,9./` g+QϬ qǣ\I/oLx:V$/3Xj~-t}P=4QLD70FYtƬxA/Җ={OqfcDCKk֞~V^ㆳ2XD_r'6S85z7n:&W1d 1*MnAa$nզЁAĊ p[UξT{cmeQO>OCHlcmnO-m4b;EdHx,+| 𗼜Kxg^*4i^<x-̨'!v.$-{y|/O)9`o}N!c-@mljF(&J㡑2}mXu0hއ)&OaZp"`QR\pzF͕徺-~~?#V6CJ]3;L zK Z;k;F} B:G&[ڰYGv %W$, O*=KOkSm 뜢A, AI)z S#Z+ǹ߇m$0F`\-d/3=eRD'SS"Svv+!34%=]n8XGk>0x5u x^\Q//KgXv}}3RU>綞 ]N[hXYF? 7 POcB!$xAuL9JL}9:ӛ>qě^) EF a"=ÒR@6(4sw;)Ux2J𠠢/@y T 44iw6P36boJ_" 0S kx-- ˝Ió6z8c4IoBI2+.<0ԣxcSnf]xDoЎ Pfn 꿢Pܪ;x <h.B #@`~{os_ ?YPt 8U^t邋H4N5*GHeKt$6z[L+uH{SꡫX@gnk =sgb A/ S6˹ɇi]ZJ}U2AaWv5C7\K+e<,,7ohZu%'JF#a{~5s=osW[yF<)yC4QLjy9|r&Z uy"wqQ U=xQ6tSO~C{gcI #bs܃< ]0zk%DB1S1z>$5/钡xp# :[aQ>}Ͷy#Mj\l<){e 1wY#x"Yv;|Ѳe->PO2G1).5̵T^ULyKk@=sfS[k̗ʷުMdGe3 guz>,`d2+oXG *^"e6O8#y>tx`jam\(ӆ}jT蕊இ)Z5$%)rXo:VNzI""}Rd{ds̼D NI wcMgNW'g,UA0J {>g)즔=7r;N3ۚγt&HHyd6gjŠ5Q6-BS z#pmMBG<;ceOJZAmIT[+וx&˜ǐ?1 =ɘ=߁yk ^w"RY"[3h+dk1?9W"! `gmI=WP6D}PA(M3Dg4_yjػ!5"77IHL[] Kِ4# C@:423<}t{r^@ Lê{wьo90 t=hC$:iBБѯ"D;pM&CFm%! er҈>?` C0\^(݈"s1KFq u.)K2$m:KeiR6lD13u:\QHz !k_b2T!! Uޮ:n+0; |Z%9wTPh̜<ɟ>P[.4#'ư$c r -X=N_/d^S,_.d>%9nfTc|Jz"ĩVPeJ'Azr>Ay]f=^xm;V_TLXP+Y[g=s$"~ s3dtiM C$(w1m]&Y%DoE&޵Kڽ Z'j@*d†s"9~].hz{ס)j @H&7R^)YdY&iGB.wݡ*sS"̛ =ش>#XA@MőEx -|ߣG%I坆\>,x댻-] T  wN0RFghAJ|:d73]!cKF!Cv˦_$u=ïO!1 xDZC1βmp%%S.S{I'\)uA? Q*oNk%>lޤl%WU a|. B;cXװ0%m‰Cep ƦL1HHdᴲ_f𤳀]Z{"S/T}eR[Oܛ('n Ű by Ҟ\XݿW[h#"PhN aɐ\6Э4 k^C˷CZ yn@bOXYWih+i8&&ۇ)Zy[!.>8mG/6r :$pF'~.MaoZQaQt;,=Z?yx[M}>si:@$0 65mXPe't-Zv~s^q@A0N;cs0֞7]\7[1Rdό$-&4-3Mc 㸌˲[AQn= 3d̨P蜑q2ھpcqCxj)INE쏓,{tYױ`#1'eV ԲFh֏-;X.^cUHLu߲I]k͙ B="^vtfC_chvN爬ki]qǐ]IЀ>Ӻ` \E,q\ q+M۾Do<fKrzyʷ&],=L)5{ ?'|? X3VOL$=N@JK]'Q٪,JO4^@&*ܿb8?IyI +vR&$9=\4J*1]!雥þk+̗ʮ߾コK,oy+|Ƅʇ~8f`n-X4u) T 3H`T$`oX Sn/c6`%ʨ<dZ?Nejsx}(.ߖ7$dL@њbО,D*я6+늖t toD5K{SdBhEtէtaR#G~IgWVj6;VE .P՞4n"!sܱOtó"mMiQjк( ஬ՙZӜk0.p0|(???1. &~orW"N)< /O%vԦV &^kQMAtXX.S|1a؇}t>VKv@լrGImUc躒,YrwZ8(MP hQ袘~Qز8%2qQ3d1`-WFNSk *k'ٰYcq\M?h1ږ0V$ѕsI"XH+ǒ X9?`mI txAA3uNNy_p̬N0/bI!Y9 Kg3= FQ7!/iFgKRΜ$De'1k*܅63PZG(u]8 W9hoCUJT" HN]6'(; %Aa]J$S{PaG#ZS!cUn =rXfE3b 嚏sH{.C `y̳jrv@c^]}t`+ad.A ~fېt2J{v7)H]H ݘJYTms̑2(z 9л7xF' 7öbD7x3%"HS81C3bCpRYV1FF;ӌ`t0s2+y~ֵ洑~{{?ټXo˚.\Mfsb@8B G[bXIu2f1M+1a_ *T4cӡ]i8L5Sj.5(;mp:8Di`j-G;Wl@8/ޥ ]<[ X'rciз!KIz3(۝ZlXT9fТo2&/aO킡d^֤qM0>C`2Q #/{5>6O_ a!>S\ĎσdP~,'Wc?ԧ/1bP^z=&?@|nqyٱV{EZ@7Aٴ]vm1eFuFT5x=|bă w?<&7W}%&n,SZVmj"mWi2rR?lE,iלW0NOw{AD@~1ޫ˚Lze7v%<WL6[I1@oفA[cȪ wۓ|¡7>~y=<'U\_L]_w'֐fq7>y F;*qE4 L> u9_Q~+7m%ڹ̵{ ^dUQ*xWק  :&~(}ȩ C&Le~skTqRz\)puX:rMLFpb~Bd̈ n~ԒaOc[Ż*:͊J B /.)ocHGHH>f } k,5+<(t)glyE\%0P ȞܧŃ`S(TB䆝^\y +%#Vry׮M. oghnr?^fa8Mi ̙`[tƓxc)r{\ qQ-mUbpz-"% B^%CoӰn$R>ً#b6uFJcn'L^ՖԁuuY6{߃TFf\qwL@eBVBaeݲ8Wͷ{R:E\\%=mN[V^ea}Mt4mtb)W\ (6 ` iZ2 jW0A5 ]TcySpr0٣Lg=?Y(h>6}NR=)'SRt߯])DBlc+aIDn߳m=d-u) @eBrk5oۥ0"TU x!M=ڗ6!ۥ2K8RsV$ K Ϛ`|DVԩT '3imH,-W4٥ixBk/eٯ]2΁Wh7gHO}H77]B0|[m>li8Z P'"zC5pfXUS?;,xYfƟ_Orw38oiD86 -5ȍi _j6,A^'éIc\=߷~|8ʜsGF7|r/&Ua$1VGeE 6[N)@->FK;8=^g\нY"k^wy͕-t}Fr+^NSL գxi)MSos/.Zv *SϢDffid :Rk2IQ 3_~M֋=]F|؋EI'|B_kq?b۟zcLy?ȷ:\Bweҷt 6WjHQj$^zJ ><nP/6\e-FiWۇCgx"T!PCZ8h$_ D̛c88Ax+] Gt .M܇ hbÃtƏ3t{ЁnvY42GrЊg&~EPԀהz}?ӽʊg=ĨD2s U}Bh?0Ͼ;:˼|SFsczqp]̏4?6&*0Vڀ&? mgk{H{-=)W&iLw=c PJptU œ!(kVE xbxh0j0V9L,j&} :bs3O2UcL<\*T9x&G&?)Xh׿zrK>1,N1RP H쬃 T9h_456tlk)!tcؓU:.xڕLSĪ VCַІnxFۣn*{gQԎaG:~P~+}9/2Nx0 |h0 /RTOۦ]V@D-cV3{CvvCdA!^_ Wd}:gM賗QZ 8֫e#n8 GǷa׋Aq?-߁D' ʠp~?X"?+Q p=G*4Q (b/+gk&{}2dgO\l+%>+ZqM42C%g}4>lx76Vg2``N!C gRL'W\-k$w@u+{[tZ'kRƹa7;3g?W)O( lD7Mqg^| ӻy˻NO*>{]x: 5dސx:/ix7 e8`q%Va{ЌZխ(㑍/<6 z.;jU =tD<ɟӽim9:3$L,Nzdd) *ɤ sw2nP>^Ptl\[}Fʱ$[/40Ixs98-aWQ=pmYAw>q0LjJo~vNQ4wJ~8%!X.Yl Wz/,bJ #+?)㗕nth.& r|16j+S$]b=9Eǟ#ѫG~^Nj1 \1㕎N2Kw}׊=Ͱq!x~HZ |/&в_,v axE9BvA u suwq&GOH̶ >>!+Xmne7ܞvl DE-_ a)(vF@e,=DtwEkOϒո ]Θ449J8޻~ww|[q:hGIta6 CkM, jS|4]'DvaH%:,%Ԯj-GSewǴoƞ.6k}SS?c v4,}ç-c80"]Q~^{m|Y<߁n]6ዬUڠHQvl2csCT2f>j!pR@'n߷(_%uOYWwa4ZդJFIŝ#=ߟpyb&t2\S32 [G.dfeP2z̃67ؾpJrR*7mvgQ6("T)f^hCwi@X%׏qRYFYbށBM[uA=vr&ix yPb @z"WKꟴyIxw1R@ '&ϲ;!9K}h6CbqNԄC&!) m}۩79*AU 'x#@x{\l1|u9"fئ41g懴]Xut--ZJdt[;Z*3{)zBo0݃F']"^јR8ldY}}JnGǘ [N|t=L*#bFeˬsߵxRWSsuw?n|(]`Ci *H3$rAbY1Jn0@J8w_| ('GJWc>CY7SU=㱴\M45Nf^0i"iRJ{tv=~A #!Nv(+I+df\# (*S+'G}fLII.hB_;#f{A3`r9&KTE}^#ڦB__D ss8pyyӏFױu6NE7Ldcu'f3H'ĂD M?QThf<ޣg~x4z0*Fj`Nww9USbWc /)^iᠩkp$ Ш=+P,ygB| DȕgP A]&<501;D{Vzhts'V*F;C1#N2.EOafsLI1pcI~Zx1Cp9YQϏl֛< %|yW_|-]YI UMU|q =Gk$txѐ̞o5[E=Kv:`mUWD9NOZXO'M>/y 4rA7Xv96Ѻ!0Nt}ܣ` '،{Efcj:,yj5^H7;TI+NlG#Y7qƚ2n3;ߏwm7HrpK~:I'X:D&1$lqj'\4S$ݭϻ@š]: 'Iڡ:*#WK7^S?Pd\_yQ /2} w,s;xk>wcr1XBt'e9E)] y'qi\[a+;6h%3ΰ:,_۾Sʣdy *&oú '5BFmEqD}ǓZ@"Z&6d+2lZ[+qYYhUS'E-pu^˾3A)uXpZq2N>lF] i qW")ȝ1dd]+ںOԧ?Cl\@3N4Q/>M(R(F'wh|v~MEJ`K9veR @0ce:%W$"ToL iTҝ(IgQ4sr#$s<]81ת7ۈb%ʁkORw4xbnF71nER?)oSs{2e?uޥ&\<hj.+(I_EW/ـ/xu{ꈱ$8ɇEi=0(*'9Ktu4},`YF@%^"b7}# S H ӒUzub[ g0/h2'Y5ENJ3c`F)JD4jb%Xy %C=Lw/ŢmR;ۮu].MeX#56}z/@݋<~݅p}OV!?×K;2|E[B 7 x$Tic `ߺ6lA:_dhtlO~ɋcc'o8y3$wa$ù@!q8+f lNoȓ3vm!do%ÔFúLZTS={gQ>iY3ў x_#˼x&:)iU{[C@4*^λ L4?*01X(j֑n㓌9ix1 u28Z#U2v NS~t>h_gJtqy-4q:m?rʠRh6/W4A3~ÀVm=0J/i|,MGCvilP|S I>웿 1j/ݺSK*)Z )橕˘2"#EI*{۟îH3Jn=@¨ hB!i 3HĈxc#8~BT[+|:Tk\R21T>XOF : r.[Mb5e[gx<<0葖$HW8WX]ddǒnyi:|.1RX(h״.=F S⩤9,0ge!8>bG>h0Q}]ܜusp2[ˣl}&׮/n'Wk"t07]f/ZG5z,Iw ˔f\8N.]x.x RcCMxYzTR9E``h҅(to c榨KanӜ} ł!5KO05_/bӾF+cgz85Hx5O|8ӌ@D>`A H-Zd҄N=Bqz$V?j4 Cb&2; ˟8`hf: k@w).mpVIq#l5}OST=bZO76ܡr%a4@/"=HsdP=`wO"+;,a m]Of2LKݰ(^?[J계@N|ާ^LjBU&3OV/ec{-uc~`aLll5P]-"/t11k5fѷ'%_!SEkݤ`4n=D='j1\ސמ}L%8f2t\*\k$S1oc B$֟X;P6H$,Muzѵ3Ow <u-/cѯP8 Ef{.Dt6 )J6h L[ݺ|0Ƴ.0) u)N4VǁB]I'xL_t9+5bfL N"C|7 L䴃{<2Ykk|cgtj@8֕^ɹ~K"uJ8[8.R#)^ÔEӒ+貲)\U!uŪmSُaZtkgHg+u@أZ$g?X'ڥ5:ZB1Z0@- rzk _;^oؑ9a~Ū}{ڔE `Dصn˩TO=GՉKZ0XӷcNY{!ap=2lM_wuO]v~s&o߼xk%/L\ziQ'.m<̜lN$cog)McF6w;jWe[_S(׫]99#EZ-n6$E]]zLC(vىXO| KlmH:ETxB$uD3vm!`'Pc'd`AqmQZ0W}J3ì=rHyyH]1 YBcg<Ү]c&VCa$=)koΟx)2-!1(_:c^u[IY2kJ;D5%B;fFبi@o׭secTTzˆ8J fZ|RA +4Sלޞ!үaXz/NA&`{ŋo:>}S ޕXȾ8vdHhk}b2@dۻjTuTޕqnjb|%_ RTջ s *#aX 9-Y[3ymӃ3HnlgRjK2=@vddTit +Ih`CؘwX5ܾ-?L!s_\o P#]6,ez;hčFoRiX  -T'>݅g!}aR#tks d{EAK+޽o[eidgICK؞X? ~=>F_S5rF~FR+>6t8[WmH<g0E~S0#g3GviQF*&EES?Y}lPWM4 dC^[&o D}7}jJcy΂~U#|ԃ ` p"bJb6%"=y[_P1~3#b({I\ݍТp̼˰ɻyq8hyM3PS vAeӽ&r$T5_Vpcn|*n.FI5=6Ŕ[Sr MіXZӴdb 5ޱ&r,6o]2k$ȁ/rZp h;Z}S9))V!>Z& *77rm uP1@CS2*HMT~H6pe EV^S ⣳^yqA)b uE/ c%);hL {Ed1ߖͼܴ^Ȇa'eS(rT8SfY- Z 2%m8v*/ FQe mzc+`pb}&YHKqtߒwlsAj+LK\-=W*l>M&̋.oXMh1-o3dM/mLMX tKWAL:.B;+_Wm%X>(8?(wSIho=2{w1-o9-Oc"͏sv' 6e,{<`!7 I|!(Og2; MЪi#+TbR*4 FiuP5ɶA߫5[1eEާUHq>aAc0qסdݱ" ^h}UcZ*f~(_i2}|5z0u)Z4>ODKϱo/b}ןQܚR(J\}ȯ*Lۀ#|GH2#R=X]Z4"KDj[[>l;iϗ%ʯ4FJG~A V:t?|vb犵%4 IzMB+N*lO_-{.bãYlBz!hro\8>wVC4]iV/@a/p&M0bIGGȒcRN:.A{hVOj;(8+p-`@>qw S&i VswUiQArI0!g*\ Lm-Ck)\N#m9M6K*1]Б 1'c+y8#ϫ3 w+$y3 IU5 / ,7kK?HQB'q= cܯ€ۤbw=6JKL -}EQ|@+ˎΣ##Q5r}VugixlN̦A~Crȵ Au|c ʮ>?̄ s/F)ܕuY32NpkEdtEq" }6"1mt!YWn<|!1A#^•Tz,Y5om|gѣT9 ׽q)YY%m+0.ŰHmz71*ǧ70~SxgݵMÏ#fVdȄIqYsiʟYzhy˥0Ӄq +l18G!>9 H٥'\vpw/>#Yw"gң2<ܗ˳ "hi]1 ~4D38'=3cR%Xݤh<fžt j'/%84Pm);}XTMŠFRO ZaÞ$OybX^ bgIȍJīUqF"rAyu(?t%TlH 7A-L/ݝŦCX{`9[ǃN1x0[p75qw:&M[<){ȋ1'뷧]G'cToz{q(qbd< OC7q(Hq[3 9싵9S=Z&ߤJ'FϪ]-vor49Z1M9i~<%GZ~_r߅Gm|Be$Q k(𼎅xBaVG$aNRvc, TyiQbHpu#ƈLp;px"+}ҿGc~St.&7fT T{iJ暠f<1qJdIbH9(oa6ڱ H~j'^.KVZ:Iu<5&OOrc^Dz΍k0sTbz*8*FN\F 8$ta|6%ULZ\Dv%/R Avw9.vQ`E9p8s/K i9 q!9dF~òh3vizǡ@p& WySS\~qU?fS~)1 AMpHuش=KD̝BT|IJ\[nѧr&ޕHIMijSM 'DiH3gڦttцy;9BPK/>@VʵS|I Xq ;]"4Z? ٔ,\=msT<<kL x[ѝbiRP`qk<Ҁ5L6Kp*^BU؆w&z$;Žy.zO3ѺNdθ 2.aM/iEFḒMr`w_\q^օ>PPj[;ŞۀBEO=te5yuW]}Fq%C{<.bcI}ɏ^w(J$$Ԣ򓨕)h=ђ(' O:DG$1,_me#7oi&f=)G ; Arz<RmZߗx֝;>\އ)%/*Ij je=ߣ"C2x Ԥ>7[cdKkm,FS( Rt,}tV-[?8C!>X8 S~;5=Z3B0?ZA]GHSTy lە8yKI9ߍH@ߔï$&&۪A<2瀨&s2QŸBçۉ<[쥙́gu th45f$!Qжt`zuN={!{ x+gJ_\@[DQrw\B\S*n9zUSJLpѕՓ7&Y0BߘGN y!=%iO?nb >nl vUI7!PN>{alڢO-/ w14<|%tnE"=#gC˱a;=(vOTZ[,pw)Oak17AKns&nEɁt)cл@ -G<v wa\ıZ_ JѪϵx mz/R`є*+Y;mA0&kb-n)fvr֚g8CEA܇ s&aYJ<ݑ q)ۣ5LSlc :P](>9>vݘ` cNc::T&OݕgOkޢĚC98Ju`4Qʩ7#RJ+tF'n76b=;&vo5#WTqzw|ۇߠW . `)PV:L[ѳpr5'bIcoZ/y^Dz 4F;>!9ʪ$9B.'i *{x+V?Y,V l:TإG~d:A-N/82ëL+tbDw$Y7 3CUkCr-"AUA)i4[?TX4DMڻh`G;X*'IV-f<+K? *JAYkbĦX8@kFW@}Kl}ŀF\|Q)N-aO$k ic3 &Sv_4-;Gz_1x~pS3AW+S&hŰ9/Q 3L? 3L4q-H$'v΄f&QfGs"DTL]aZ w QMtD& N\W|''s])c~tOw?H*(0N[fjcqzϕ2P~2.<ZI 9.2Y{f!D,+|Q3k#Id6163бNRy78x|f>NM[[ܔdoHB=PeFP94bzMakg4$%'ɵP9PxI$!$;`7驍y FCbQofWB⌀~JQşa{Y}eR{ne;dOs_$'qֹy;ZuzHIG?/`\d(؄žN*EƔGɹagL7֓7xrn|1uȖ:o2˱gr"CLE(7@|`tIn*JGm쟏湏ҽ9'i𽉭ش'>$>s/;,|Aؒj4zzu9`Jt 8P]#?x3:GtێҬ.S+>%m ,4 _ j:鰨.m>|q~ :GԐ٪B~{}O=mr \o2N/*Sʧ ̌}DA"ʆv=x|.]BR|}_l:8 ͨwؘ32>%Ҭ廲Gp 8p2b1=Wՠ!B${k`:>A<:νF'"Y*F3ZjƠJ{Η597ϗ D4󊆓2F0k[a,ty15:D~y> {%e|< 1!o2C #oT׺<1dd'/@"v4/,ifIjDc!Gwׯꬊ[/{0S4K@-fr@ XX+n ,0 qL1*NvF׈NyVnҔ"AKi;p"ƾʮ4Ea9O|SoL;)o+f-\[4H"w+9No.?1e7w0P[\ƙy@hb8Er9wJ g\]2 /LR,ۺ|w.yWH0R7i}DB 󾗒r8| bШGZKxL3LհtHHnWę-nUi椯eλUvSG{\<36G "Vvt rԴpx/m[~sn+X;}\<ߓ]pebkw10ցW^UŏgN;p Ǜ\kDq:מy);'Sr h>ʀ) sZ$IH-Nj2\R7KD?Qa |b[d0S]-HrcPξ,xڏpK"0$9!t2,ȣ0mRr43nRۡtAUD"EL=!ރϱo- ӃO"{~k^J]*qRLdmR~v׬'vi5Jt t"Q6zR?KDعw4 y_t5 <Ӓr|؜~2_kC!S.oѱ#϶ھG9oؔA).ɽa3=g6~ Ŧ生nMjbY7 &:DByHT0#Qhrʬ񊓍 ub9K aIҰ.ZP"P)I~= S2`P!d\ֶ_C_"k)!j݊&6cYJW C`e2'Hfă>GV r !O :u&>Q#M z顴I7 S>cm`9.*JZzPtkwlkO u3-3zn{gExŲyX> |ѩg9J4짹rfzxJIA(.ȫ>t`m̀ǧ$C9C*OWW>ѯ`lj87tN&q p\otl2kX]b@6gDF>ͷ;WM$/̹MY٣OI)s C|rHv2kû<"}͢bhZfYaԻ=h:c>ٓ54qzM ձЗIJtN2wLJd%$>;zqVK~K15PS v)jVqkǷ}6tҗ6cM&]w=Ar] $ܘU~+h-@ū@G"wIӭAyoic+i )uy{|,uhʁc3ϩoqiXŔ ls3bkϵ9a(&C%_ JԽdc;?2| @!:\IPl&ƭ7rO7q@@|sd4i^=)zb\ƇCiI]š2z-2Ƨpb\ɑڌ^cS7)3B4(I'pA%UۉW̞ۺk sܲ3$ѭ:=b(xNcz= C+юt+^OWW$dL\m~Vc]O t|E;dޙ'kƮoͪ1 \t5J5M<} Fe~6c6O/!2ٯE1 wa}U=ZnwГds̴k-VsiE&z2~dgNhἰ-}R1[*\x{W]-W1;Da)S'C8FqTEObXv7ƗO{UJG 6ٱcpPwxtW0|k E'^F{RyIJTLVVƨ|(bnOS?|0B*9h'G8t?.+?2c?" ,H1>.?]ͳ'iշN 7_R{QM:Rx$ {If`8e'A:G-zh7[j01ೆ,Jmcٟ1Z< sCOn:$x?tamt SϭkΏbIhg-wq\E$BFՈjMW4_a.'[J4>izJ>,,?,2e@0w^Ԥ@-τ5?p784l`/xjm@rm肊@gZb/c<DZ+$QLŇ㣽ls]E[*oiitYM?wzc=e()hkdȜo q4[/ `J#jrtn-.'kk# ZP,8ғJlN  G+@\1cNa~yפ)i6 &.+:=@ds_E#ESӯ]{ g7D~n A;ELU\>Сb>/zeٌ +1zNy )83^U\$E@QNySi濸37hFsBkLЩH~l VܽaAẏ{ǀl)mTmH݆P;DiWMQRvFzHDò4E"Phc'%_LA+%ck8L3Oγ_ؤrAah2= IYHmk5M8;t/|Oh 吾/ E\MAfjY*ʌ3&"kYrFfFbZ੽d=4|j.y 't0Ÿ(Pn&d j`zP@ZḚ@$[(^iz>W4WA#?)8|$>!0ꇦZQsUU67]qLNC1=wxxru |UM'<27TQZ3]jO-=~~+? ʺ<&)e'C?c +&?MwtmQB cb]c1s[0KPx!@^<= Nm@2)lqAAAefaT\ w ==m~$&ߐFz2@=Agƿ&ƗzX IcYOLRWMcQeBY1rh?3y74CҞMTj yid$`*dg8ĽirXأ]wnP8vq6u(/Gq|5X  :tY-ng}~'OvVAP. +)ݒ90)d#6 nd%}薬$m<b#].>98 CnU;l9f:la;F1V:"ey_l*&ύ45&ւRFMC:t ߵbWf| .ڥ5)G?zif>JN$Z{Pe{ҪiYD:,*lh+8..<\Ɍ,@ם;$yV Eh}.3:'K+ ]nyYB+6f=PXCYrIǞvf`7΄2#3~ 3M>X%g>ģ)nF,VYr/'tIdX@ g41f$b_!l&YpbBebNIٴ*hƒf(6B@٤ RHV,9Y<)i)Z[]-MN6ȗ9jcQ0E ?{4ݩEe[^催0=[oenY$@;િS gc.bTM|,81I=[ S$eu ^[\_C.$g2~]p8$g5A8L aIXGs0d9nT<3`7}5MK=,$`#cRD/CzJ\-~3KB8=!V % .G_".#b53 KecF[/KHNdzr֮)*KE" B LJr VԾX2Mi#$>WS<[Tl6P*- p^?öqLzb6MS} +'fSrXlӄ+qׂ! ߎU(\ccӤ[AYXS?z>I{洤ۤ!*a-.]OP-qS)R/ d$acDɱ-vj9=AHQ,EY-ߧ)׿q:}WeM_ &Ɠ74'G lɋfcstJ5]_y׮I6#Ud-o [_B!n, =hl䪯kN6x:a^}=M*SVbtz3k0xcJbV {ghК`gֆ{V w$ƉwX:&DSevا,%AYfSPoðܓL=(Hmvr "cz:5ihZ"-z-LU"+˂!.0HbIc9cnP9~YSo-ܸ̚muigaѧ}3$v] pwi ehGjˁ8nBݣ)OapB29v1%)=K4[2U"ug3ٕ(v{dVe3ׁᷰ^Ʃ<pD\]9#++rֲ|L܆; P02$'띝A8JgBJ@ArbJT$4WƑH)f˕`=JWX i9͹oQ~kUa%:Hi]'!oz&"4<Sve3>z= /3dSо戶m2о*(ӹz[dq chßJ%<#]KÇa dӜܚD*kFZnUbouu~`~q` 0g'Rމ > @d琢pmˏEG^5;P$TYoH? `y Ov٫L,/t|l1`ltBhcY 00k|Sa`(v䜀whEg: 0F]:*2ڊ\jeɃwe'˲CnZv-W7Xh =7ӨvpЖ\c>:C8Xra[xcᝊiO2`9RKU硒lc&"2RWP{pՌTe7u.d:;ϝ1y\R,''M[mWvIIgž`E~rXWXϴө}7I;sO-y2/Yc {c,#8-d/H8bȵlE+zճbquFR q N?P?}49 b[ JKd}Kzzs!%+s-5o/k9FX谉hɣ5eHcMyi1@;?Zt-5+|,4)BS'Q̩î/Ҩ>1. o*J޴WSU 78 8V="Hsʖ4A kIx<]k NY eLO33ęDv$:^2d(w㹓hM(XOœT\Hxgp5++;URK|婛Mw"s^TQPd 9Ƚ'豜YZǍ 68 >Vh4𿒠]W"koQ0O+LJSER/LkIvZMzw6m{c ws^FA?T{'QI C(/B@@x ?O g\%mx;TZL"'$tKca7EF.ӳ^GZ2) 8~ H ec |LLͼze~j?*}ij2MCH~ֹQAXvV͹2c|CR͟Ƣ!R^&6O#XėdۃymkgV6O=U|4໳Fvw-BzN P6*Wb)zwք>DD*]ΰ~˦cnwwsE6Nk5g=KNόx^pEn4i,3({5أqu8R6?ejM/xNƜ&;2✃{Cz6n%LkFT`|LOPd*d0 IOǸ){Y̵v3xN,tauGإ!g',}\>݋}g&s='4y%PqQ1NpTlڸ q@mvI.BoMf8&a/4]<{{uO#. Bd@vH 0[- 98 J)r'PZ㣙n*܊[yiVOt8xb$0φHR RA[ Q)Byl*ZMhVX3-PgAovQ7Vnp\J )?#<躗61:Y.k9= DfL qs"*g~$u#( _.4ئ' 5eɃ.mJw}Hc>kLp3$2{6)#Kx*ywMt&Pu8IY*NtXq)rRS=#iwx :NKQnfȵۚ!5EV~$FPddI$WcۻkW.ۄ'weI++j"YXJMlIQL[$^ro R}4n Iw(V( -KG4:Iإ &s$E"qF0ȮK1U"H}F6(GR#E&?J #PG(Ů}w) 23S?i!PܬRmD}T D7qE6pNǶ]8$Cw#T l 3X?[)PmBV{AgS9ݣupϧނv)Om%M0ʷ53|(EDzT먗&cR 㰿 f 0<8VxGىspFV%V-ק$c>ON2~JX# 8: 4( ~ /V 坵yu{NOu=2֙1(Sz+Kp٨,ߡ.'D!*@ӌ>V/D4Яf>%魶B).tc N6<kI_) TlZN ԏ,K^3MLvV hhE14tUtD8Kn'FᶄD]zF!?"꾧*p|30+% & h2 lhv"}G~< Wag maǾC##uW;k(ōT.C]euэ0(oAoc*ZA!,+LbN A=CBLo%sYNv'#dV?Q*&$INCfR 'N|)CKwcJ/7 2" I2EXSE$ Ƨy C}z*Ve:a题FE2}Чǖ˓)_m,rѳBX23$94U,.׵j7f%DIf X)i mt|";t/=JbL$HC{:8^z GOˉy '9૘YeS9(@KڪsZQrĂ>?ehlMș_rԅ331qе\:o6-5:A$kK[!$LmY51D l-L{|yRg0=!aL'Ao;xcHKɟ~ 5bK) ,{Qe?Q$Ǚ$TLjL=!Wa3)'.O5qd还EȚ0_DoLk|gqBYdpdYhQcP.{og!F8آ9mMN Pp<2߃7DS(Ӝ]LA7,Q|T235?HnWZAzM6|meAbעo9ۋ!h𸭺x.aԫ =Ӄuqyd5Rie 'ul{~eE0?;dv?xƛ kCO:է| qB>+H! (mi\ /G!CF/'3%?,J©#v WݫN#B@؇X_`a h좬-F?k: }!X&1 ,oFA%J fEv+|ֵd^cqE}5'uD8V%=s@7A7]fp_x˳0sD}K>=%ϼakY=:ʂGo%fߔ`h&dꃘ5"UmBHJQ-~H`%^N9s$M'㴡ŸoC-3E[*[OyMUZ.MиVQ;fce#.stAx'cakv ^&]]:re0 wiKJ_gxx5dvv"M42HIf2qEZ3 HH,3VZ޴8I-R&?oY r "ړovs+4W!R\v@ IYAqP^L'mͦء㈱'2?gH[V BK5[7TB`z-ɞ=3m \~_` ok ٿ)^5+ X\n: dME&g+JX>H 4RGQz$J@H:n׹ֽ%9-?s嫧/#E롞>P$  FpO?d=PnvLr "O6WX6~IL cAW厺r'4岏WntHa jcMPd7ڲ L3+x^R!7tȖ~;~cW~0_n5>F1nx޴yѰ-xϳE6}VB'_){He'hO/Tt fS:W%1P0'߄azDB,gPgL|Hq!Oȧ* @ YOsxk!8m:_,3bM!Gn-QgDRV,opF9/ʽѽnTnˑ17^R *`4V@!sdi3$|ڪ(L(i^p!S;~gQR[/#Uݹfl#9}rjF=UΠ#tFvsŬ>!⸞FRݮ*o`*ٺhzYca2 _)bJ \[|FJYYgk&Ks^9$F6k]}}b/OGb9jYQ΁)֠``[Iw՘\ n)7; LD5ܮ5¶WSz<9⯔{3ц+=3h ֘ZCg/b2ܙe'冷hm]6@f!]#>AO9=n>"*[t]Łx_ R&7:OsLe# %7_zɡޭD$I x(ŝ5ߺ6䬈?I;IG19HQf+dW5G5_^I9dmVBj;EtT@PG]('-eVsVe;k0ܚAз=l  ^gOȪǶ3_sSn .ϲr*U>Z(3'b0QFWaLM Ѣ Vd+_VǼvE恒Y3RNr۱PbY&&]#ut%I]^|@0(YE;Uڭ/=*kW>ppJNK̈QBٔ'LLoO8cߔvXRyigg>?dhHv5:?_S#Հ3'h6H~?N1@1[uϽn#)'`AP5'۾S팏Jt6{ĩU_g^|.``!#P,J̨30CI5~*>B%do: ug &m1/3)yCJz$Wkٴwh:S[UuS8ZPe4RT;ˣ&kƉ`HFܥ|NKhx'mBQ>Đ p Qb3g4ѱ%Itj!y&fUrDwR{{6FTf !N$mJkNSvMaxbPדR(MH|\Gxk(M`a?C\b9((IQ]6xڇ֡[chߝS'/nc !V$YWF#V)5ݔ9Ũ;{SƏIh7Yq9{=og3J>iL複][fW f<D3 c>]ɯ d:J$-ۓiެmκӸcʮ|RoopǥzOCG\>c tu,JDI&'*] bXћP`F#`{&1E9@ fXv $'QѿװjtM2L^cKD~.<%pɉej :~5Vͬ=75nuczD`hx=k<բ} 򅓭m(F0K? 62ԛ 4_7&L.O|)of5QZ7]tܘ[jQ,:'8`v/\۹u)'|. L2hb U:"WY{qːd\ZUZG`a%F40ń5DэWZ3<-ܟ}|62`̤0_ P#J]?ܠdR{8ȩk.-@S AX1GSK=)%bﷻaegIш#V;Z8I1,&1@l ͐ô(L))seFvI)Γ{M\"}ʞ9wmR豍ZZV`'ɶv\ty97Uҏ2`E].jOpM0RG;&>.NɎ~N!dm2=?!ɪ) k.WD)*CtE++`72uG0\=ˋ= fGu^׿I^G(& ^t`!oJquߤ m`psB{ӥ/Y8R54`,|0'@ej!Ey:)yJeFRRvWC'(\U{ ͭ}~.+맯vDQqY킧J;Kp6iyxą_P5eg9m6JC|3"\uJ(XR<=BIyX )o:Uv|`2Զ3MgqwRKǚmhå.,*t+]g5 [}2 jh-~|*I۱yHirȊ_r2Yrokqȫa0!tB"5;mO+6&wZdA8'DU\w|IyLv&A?}}\+_gkhm!':gphCV "P3/ Wv\Oߖ^s>& 茔|Z&vRX$Ҍ/{ JW|<C=V',bŨ4`]KU}Wx9 v"lBtFے;3Z~D%;p=nvTyX_.A=R( n{5&w $8\b-{n@ 1 qk`cX:/ţ={z.Md( 2Z$ VeOޣ=1}_r3kH]ve cI !߼G̸b{o؋iýkT-o h<>Z_+Gs,?*zeܙE+56#,2CpY"5uS0IsO~WmUuV#]e_p9`ғHk`pP41T ORr$54mxQXE.ףȏsOќ>d&fQ05Q>MgB$ohgbP2b#ar VO>̤< %ڽ0F_}M۰O^" v+!e9cUl=9e7$=wh0.,.C 2rHjǍ ca*fYh?zt+qcCZ"<}zA4> }vZ#D)G ])i #]󁖷09'o8tیr_GXmɂyN=.mG@7  u03j-L 1m^t`uoc2;q׬fB:<\O:/4_]ѣ6P5^ n$#{r#Ӝd,6TJ'^r E {RI".&ʕoP~^lw tfnkj);]X>xs|' i$J*y:{ɺ2*17ٻjR4< akƭhѸQx(^bG0rօLȽ}5E-N ~aJI! r̼Gci>;'h6>cf[dcR}v`$Suʢi' 70rЊs]XE:) 3jn=xƩ2OĂ 3Va6+n}fAtIqUP)vro1he>#Y)_my>^(L,k3PX6=hWY*Me2F>Ee(kqH(yD,`"w3εlOFlvOb4P"8ƚ\,ӆY"z| x4WތD<ؾobZȾ3w-v)VߓCqܝR9R@+^c6^p7'm?G@jnkM<v'O-k8N 8,y ?̮GN)I{΢#ch1,>L0mDJ6Q-nwѧJ%֚Ǟƛ kg?B/ endstream endobj 221 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 204 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-dmL2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 222 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 223 0 R>> /ExtGState << >>/ColorSpace << /sRGB 224 0 R >>>> /Length 220292 /Filter /FlateDecode >> stream xˮmK$ϯMh+ޏn$D@] ~0xy3"2<'Yk9f׿e˯oC߿m??_7߷,;KWw?k'&?>{qy;Wl}יnSy_O7kw_Ϯ.sSO~&_O|qxw//]F#/w_-_w~0v buu+uyryρY?gO6Ξ{7?܎܏K|诏 ௏;9__fAU߸\vηe/[y<-o{pҿv}YZn.إ;zN(v=4^z~yKq&aow6D\{vx^ڥonW7n&wP k7sm; RuR[r\noyT\+w5{dgo}v(OM]r5㛺p&gʷ[ܻ A+#}mVWg 7̕ dxsm d=mۺf-9/(:D>/aX(<6*Vgy [3qpTL&[E,-Ddp`ۋL[[#E[\[v@9ZppZ+ⰠuU ,]o6Yu=-:*kJu,ˑ(lUȷӬ\7xۖ!ݶ=˼OBŹ.˪Mmb{$Śwj|ʥߗ:bc]ڋ^0nubF;roińhgZϳjH&AٶRQ΍cTA a8| pvG;e[܍C$#,ȸ̓r.14%/NwjGԢB-[ݟli[}EþSp{m:ucyj_ftٶfvږ5.R2ǷjK:F32\[x=CƑV?ԌMUZ^"iLZ ۞~l!n#-e?ccۮ$OuƋ  BѲJӯDd]A)m[}+/bFuT֍J+ʦ"sVA\r[a`#shϿE-"f, KY#F%dw~,[BP' Ȟ-Qv9q_W866Y&2)ȖSBw{WgfE&?spIme;.wt 5ҿǪG ֦YU`um1!^:nWxq8'zh8G}{K3 _;@>N8sXޢۃfیkыP?jl=gP^aQ K7V" Iw^.d}D)cx׃rHge dnبKhI(j+hGBO{- Nb rǤsvj0Ds45h-zF tXVpS`À;J{*vkҞA\[ ]EYőba5̧x[dA 7" &(э"XB~ɨt(mur^BαLSm{mgoŁDYGO-@{uwƆtؐUXbI:ju/IoN."3KזC۝ǡ"_]Y;Vw$ S 0ppo2 4AVH8E%K `KZۑW-Dm@*zy/2% 9)$`\Tz=6'Bqjh^D X.//a/@kèپHVjY]qqf;SPn{Lrr#y8X!UɄE8Z:u&\ ۻgv?5+* M;R3$i#qbXe?@@RGQ U2dVЋ{7O˰+Yn6* 5uRI[zy5{Ix2Hn'cZyd!_I"~Ej o-X[`qol&O~:;K i -:eEl;ӫޓ]\N;J`eE?RaUQ%=G| KvA (y}SR}:NHł-0QЯqG(g{Ae]H~1%t J37͸g6bW(*1w/zcEJْp=, 7s {?&ؽpx$_oBP!;;gkavoHl.;-ZԿK1n)<Ԟg=V޾EDUH u-v#-EouWf|"IHش,MOьEZk8EO#mJڳ wn^pg夡Llѵ<(?Qp&2`XJJF+†$$ QgCJ["Lw_8__0{KoˁQwo1iZ-G[·'>v౳VXO˶è篈 Oz׳e$x$x{HuѪ_U%YסY*rn44V.;Xjх3yڍ˪$' Vd\Qj:`%z FYVa۵{M!#y8@ X} #\! ^NU5=^e h'ۈ|5x$ړn^<U{ce Up M11#6af%@| K \gA{XE؈JJj1r~>p.328U)"u ZKW&a}0;rP,<(q*o]gI'3LW;%}q#Lybכ#Z_*"NK#yJ1$']= :lf2{PCͩ$9t5![ ,6_e&R8L<%e'Z%^Og,6/ op%ȠAd \[ޛ~@F'( 7k{^Rʏ.D$Ey} (\a_-e6آ9cV60zfC/4w늗>8cUt?ϽrA۟8j@A8ZLЅ|Hӹ)xnpWQe}-?d1_Vx"d]IlW,_25y , #}*>P&=kaH f伞,ar*Y8)La΢e֫jy 6h#;ze_sώzpb-IrLki?3 k2o6{qAwf |BM^d*1@"%c@(o{ء6ڍN,V4M|_6j/def*VJ5!x`  !#^S,1O9UKU7+tC sw0AD] %`WzW&Zr̲#H:3t\̛]컩 LXO9C?t ؃ae#+8Ir8`Vs^~6Rs<"rIsSؑ@$BFmU䡁mI!Z*WHΡ,PrC:2A ;8,=F{6(OqlE{)?E2>vnH2DɭpûSt ώU!Zf**b'@,劺#4ȥc|qOQ0 T:&qs2Ҟ`=Cm0O67٫0an͍yR1iʑuH<'HŚSӽwAAQC.!!pA}U*NՒw00U UU{e>$zY鯗H'kg}f$x;`Bh ((^ fzeOiΈQŰzH$°W|9}Fє4:U;̘OdY5SLє_Z2QQV̗*8V"yosv'lcgފh_x{%m:Yݽ%4>S!P Qɥ24(1Ī;I30W +s``*9Ln175SJ6#v8~30]N3V%Zjҁ?<8ێc1 _T{[l%E#ugS԰j0 ٵXasw|DY`\<B~50(҇fd,Ob!\q Ml(-oqjßoY,. f..ք?oWHa(cƦĜA*)`Psx dt{:5%3:#"zj RvS;]M=8e;WOΏ"Qk3ZX94A]okk#9hx 1raH<}FrUR ) 0FHOQkJgmw'Qv"xF F\jȅ"!wR1$ANfn}ۨ]Rc=g #C̆KЃ4YJ{H=q֋(4>IWF]BMiSl}UeYϊ#d&,e=C,)>HQ= :ty:(x=PKEj ?lLʢ̽RPc߾ڬU*eb__-զ4}RcٽE򅹕B*?NI;c-]j[&ژ(<3tnf|U"e]}Z%u׈)o,$[!( M .E[I5Μo#B|RGpT}fahpzA&=D,f/ &:Y8}銙_M&VmDwޣeҝJp>:yl|J>l(,_ʛL"^[}aqv%N^= {ܮ;6"+\#rք/_7i LI8Q{!y4[ľ]YdڤPd 3V*Z{iD~^YS1b.i^89dz)S*!MR-ƿ(_b ϲ(6~u}dcBԴA_-/\ ;gxXǶHLI,#/rN9ق T ::3 ϛiwgVE[ǩ;un{W=Ef"؇w4v`ST!WY.g^qpxc5SzF,oFF/6Ax;w7D9B8HSہl ~Ιɋ V7Z'|ƩfK4}x߯I}^cy@RX.rtU ǖBRSrN^ ]0C\ 1e@%a>ӣ<4 do `16ecC,tR )%xh`^cHjo1cWyy<N79-2~?j ٠$5{8~ڇvubߎkLQ}DVkvi`yz_!l\s@6gf:L 2*yCXP5y2g`}"|da:N_L\Z)#Y*\J `[> ǨAY#z:y1(}<;wκC?u7 qPWJ6S\#}6ĵvPһX2dh}dn_;Mڐah9Jl3g(͟/¬ c|B֋d7ǻ"nDD.r*ڨwqzqMb5P:pqj1dbfNwPnv؈eN;Z#*{ۃ$`|5#Q(.`\"qR'2q?( TР\e<6IOg_o=KNbmOs?L !{nE$2iUbwc./j\&T}odz R΅WqG8=, S$(c)6BATr>xa-i+X^>n ! bD@tP1F0!iGÿ* j`IytM\OR&^ƚ8+ / &:, 7CFۻ`}%;v(f!2;^dŘ _Kwu^T^ej !g&8#O,;6--4+;*u Y9x:$skd bix&5:aWZUH6C#=8"kLVuTԱvR>ӀMs>a{-O@ MHZ\>n4UCbJ L-{~TUѬZM( "^bɔaYaD݇S9h%=+$gʕB:%<@ hQ0? Z.' kYGlB禺1 DQ?N•û=NnAj?KsE(j~1@U4(+bc1rG= zFGx vJD,1nOBgJ>TNL\<( ZO_ F#.`[db\e EBviu W!k#΁!zM|\bNv*~Vu(֧?F0_K(J *UbD$furieE5u#~Go?}- bznQ(MPB8Pk eIAUܵ+;W/t?tݔ^f/ּ$pIO KL{P6Fn#a-^R2gA=aejd~1b(wPM3 =ݵr-2>Tn "|!LQD!U(#v]9ڮ͔ (I0_CrSr5CҪ_Җ"1@ǔa7b5d 38?쉌zbV{lTY|3˼#ĬS+(2n4 Sb(uJk_UV纚yXq65na^`4,jI,!WH:6f#3,$ZJ9N@kst%uvp:dw94\E塻/Mu0Uh0efAZoGݯE-hnD 89͟4/9!q%qπY>n)̓܊μT U$~X>K$R1r8B]oZP, /D33B%GJ>T;ղ&0bbA1>=e'Dg ~WJAasl49)uqac3-àX{˼jQ\sORyU4 ]Q#=ɩuBM*8s/èbP4_72vòmV^sPVE{K,Q%A53!}8;DgDm*>x.!&z]BKk|)_ `1Ecڋ_w"/m[XA1M1~ FQ裬5hT-aY"|{ű_ϧh[<溪; !JS O2I;_oI$ P{V6Q̪~Tٝz| =WR)˲jJJRo>(;k $Hqs] 60/Nf1kӖx'IRo9f6ƍ,{׹03K+IXfZ8ٌpe*̢~hS8l~K"rUZBPIV>xVW!NXWsp 8hiT.7aɢR Gb$&X$S`}X uNHXf5|7w 6u"%U]˛((8\IaW? %018t|:x&iܕOk4y^kƒD4K@-%BzJ'oȿbB1mE cULB8{΢wCJ~gE v#Rے$j}k(j@N汄ʄ(#ΘJg1LVW.jUޘ6>vWTD}5aLI)H2(]4ړFj"{("ʔ(fk4ؠXb~qіi8ad@ʞd8z.M~:Aɣ*ә \S24,qG dSP-}UU=Ză%oAh&mڋye8=a;&5BD˻p A8ݨ6m:!hs_YP<|O᾵Llċv໻X2b_! z q.Mn5rth^,>ڥ^?Q-EO؏>0Z2B98׿.%S ˫D5 OJ08M eF.03X6<}w]G'y*a2Qrdy}vU͒2fqPdQ;?tjU D-@y܆X:MuCLiJR EnClL!A;Ɗޓꗡo*ZMarH[DHLjjy}O u[Eh"& sB6mc?Iwmhu6F#cv1l9@D*WEYX>&Rn&iD$ SBZED; ə!]A_sNݮVg9uzUc$9O^ю0kAE@N^1#D*Nސb í- Cì]9"-$@2#Cth PhM]4aê` ?kg7_YsN}2)(ee./-,bw SxRF8mvMN:< 4Hu L9p骘C ӭ1 'F:Zc1j67tƔݙfftP)M3n6uIrtnF-z0uFy8,$ms?HlBl#o{Gs^IkjlF8JMM* }",LȪ:]Y `zI`v+XAtkD\6P(#P.c^,_<8Q3z%6'!b]"jB'c4b[Y?Y|F"^g=5lnQSK? ;-ͿH-Ɉ$vlKe{!1x&}kђmf QQԐ/:I#!EV%fBtAXnM/vlвpy%+ ;y2zKb-i#Ǎפ09dXZm[\ӊ G~;}r$%rt.ĜԨ{Ihٛc|] 1TJ4gzJC.=yq~pnQrz1wPg:f"$;hU8PO9آ ޝ`x|A5?lvՕv((aatx,baJ.WG3e(݀0J#m%GZXNcOcNթO;pԊy "U.Ϣ+PySK{(#8-1c1JKG.JD(s91uq~\0*Y,zuGcPeY@ ּy@0V9Px>uC2D^Pu,3yOP6T Y珥8{|r뭹믨<ވsm^ãy؞qy#abފ'ݪcΒI|^Ö#^ x BjUn6L˯h#4J?߇;#±Jz9p#(ۄlD"Oznx~Ű(ыe.7EqxG0y6m֫!;URZ,Srh{fV8m$$Џ]"3p?`%*Roit~$J-8|A 5xHs4S$8Ƀu_fB6}LyL1n'ȜQ"'#_M>}3Y\o ~xtdY?|}Tֶh_UcCh%H%)ּ ںr5i dޠb}?;3e420 .qJ Jaۛ/ԓ `7:B躠ޜ/&]cA s~9YsD ,zNKiBnX6Ubigs"P^)@z]F`6A8I̹"9QDCj"O1۽LO սw׹: Q#3@pE uf*hP3& Sދ1ɶv:_dcP,D!,%*@gA}NƮ8fDCz4 {hNUi/?H2PpAl .5u7^ KZB8~`TamDDLKubp*!䁹?2ZQ~ECQC̣CєDZ n++~P`ir?")Utf Lp!;bi&A7.ou35CH%=/ƴle SF(KrUJ`@j8w!Ti{z'-G !wH Fp?ㄤ3V!+݌zbgUQ]"㖴? \wbz 08MxR=eCKĹmlQaT$$w6= hpY2z~YP*]L+Ȃ{hqL]RA!TxT88vnpa85R1i_HiF(UT GuA>M*lSTNDC}~g@7fp_%\:r/胨W MY7)K |O;pTPPfyyG1\2FٹhREt%Au #魸|([Uh4[bJ&sqkcJ#d<:dHU-#ǒzjP9,1+"IO%|7Q~u|].AVFc*B( rBUɪt#nx8T̂GsHFըax]TC"\nNa kwlɌ": ޅ*m{ Q6nw&yeScY'#:dwG8fgڳ@C5,gIq!WEZ=a>g¬JPGQЛ^t3ZLG𠖁 Su)8S2o_WV{1FYds_]T5ŠWM@{H&wSkԆL?@mH^`xnS<U$ _A24ҽ{Oc 3$y`F- A⃕{p9h DNPEGs7>[X^fM.< l >h RbLڴ{K2)F_1q;CY? )_ ]jAXwKzfAvI ] O/XyL.1a(Q.Ǯg`kZݥp?+:P1B22vΛ ~g1Tm6@e_6hȞ0@2hm\cׇ)3;aۨI)uR4'<2 \oۺz#"\#eXY i.NR{/7\.=DD^:3GZ2{PB\y}#LJ:>06qC)e檥ŽTإҥv~N mTNdu#e^zBs&%RG1/JSNrqn!eN˴k\J8 2rg |46"M'z]hHl@Ż< Cٞ@̲)LPM0pxC[LvPH`¹w  PW[eE!yL2}ޒ]vj8s##@ }e!]8s/'C({k84gq Emʆ pB${`t(M r~dŕ b q_I C"fAÕ;24;M+IrNVusVHyh쒺M~Ӝ36VSu+_5M5-0-֤D}^Pp QQEBz=n9'RN l_y0pУ 9}]x`r/Cz֫"bcP@M^]B3a|Hآڨ 2Y-u8m;h1S^?mAV1N""a huh4jQQ!:,HXAɖsDuH6#6&~cs+V 6pVhLR] /L8vn`@pSKQ|8"qGQխ: ><}~>6ZXhoQ"2uZZK^Hb2W*rwd_M%( YD[EβfN|b@);=|L,.$l3f+شt G|*Cg)T{nIM{XrNBY,Bɽ- te!8|\)z*~o2u"M=R{bYKQW<"nt`)ΉkQqTD?a􄋳UpK! ~vǐohe9y "qhÕ䡐ŋP)ac} NIgfsÜ k`]ØNwrZw_)vryf(K/)A[ ډ-+)a/G 'yɰT/IUmsar^MX?Lq*#'Iԣj‡QdQT摏Z{D 7'pN%~`yҁY2%wA<9ݭ䰦=WtJ":y t;h_ZZg ̩Z\y,XVtVܾjX~Q8|NZ|$YenX(t}՘;PYCK[ej UŻj0WM]Xt\j-jjMNGsw$({>b@-kiڏOyNj#v-5+e5GCOP}53[ ,ߊ)%HR'OOMsО77gE_ML!8 wsŹ|b4y53Z'')̃LٰT"ݵr%BȶQLV6MNѻR-e >ν*[`2.}A[EbE»,sDA cW.;.p sg|>)D,/jIł4c#a>v1ˍ޽$#[T}D‘41=wQ(d D7ۧe+͗C!:dtUIU;JPPW& 22Aks"K|PG* +@}: ݧl85`C?];:i4]ޒrlO 9^/T`h| NJC6"ˏJz ԞM3;/َB0f-9S?W2-JMαȹfAI&IoYd*0)\*Q 2MU*)tf$xѴ(i؊P!FnKf$=vC)LZ'%wUGi2$1bpۜ&I3l$Ixvp{Ye >v5S-R5gYvkD#E b16܍܄'MÊDzC.)}<#v0\ʐdO/h;,mە!u1aqzWKUQýHFjvV2i7xQ{ѓ$b!2.HY]SN\-:dql qZz5dlEPYBbyAt(sq7Q 00f=#`)%#}И{8\1)mGUa&ߔ[7Y?+vmL~ w}NR<倿{Ͷm+H _눩M|^ֲ*lj1Mae֬00cdSkp8?T۶ 2 4{:؍3t0r'5W$ĎV!>?NolqT g^kNgؾSj]7iV60)4 M kyl.(cޘ\&"U. zzWo(E&<>qGve|ݚK|+6H? dEĎQ;<@oFR̙TOepe5i)*FAEI}C})w2I0B3=jt.NC6lnC~ٳPBxUdި~[Ae* 63CRʙ]Fʅ7F<1ϖaBei:N⫧| >tZGʋz<=y$8sJT$fb#j͎+au/<DZ#qwL)ؕ)SRpUI-i:m!bB*>"G19@HDtJNlQ*C_ce*[gH][Zwe>Pt_7Dei1ŸϦ$]&Zԫje9g(*.`TpeRAnNEx7 ؞:ZC<DNkZ y)jΣ:!bmUYq uj6Ko\s1\aPGGMFYHo~b_tvUܰhzm?`ݹ8 iz{$=턭eU +˩^+4'l8M%S_{ n-ӷ݉ j% 5|` >? 涓VTCDw;ilT]fIn}?;ivhcBw"frtG~bG˒2[zd!Ġ0* V~ݿU`!Omt<\Se`q"!TĘ˾-U)^CFƵLQfGn rY:՜6h<#t {PnS[&}yg[Yɯݕomlqk5RG$8$7yaT4VȧwGjqWթM/"~DA e{sryJ lvT:_(GSg5~֔*6I"V#P`oJ3Fx&+ڸyCMⳈylOR``pN 類et rM(k6OOhy;?o#rraNaGCv,; C'|@b1'37\rbxw[E#6W/쉰OߙK=yɄTh' Db]VLWM'v=]ٲBA Dy w I A^g7vVs&ԍ̹{Zė8/@E1ћ.E=aн!1~PFsoOy]ށVBz{u 9ؑg3b~Pw<[$; cI@K붟ZIRZe/4US>B:')iсl^{҈.Jbg@;>$V?h+C[ Y%kԉئOQ!^5@ؤJ˛uXygDKVH9v!_:9u"}2]k 9H%)d' QFf.;#X1紌s>z2|5Z`[悆Q贬>"Md$r$eVKo꨹yV4j j_Ǟq:ڳSX*O2̪`O?y1VQ+6=!gt? +>[9a\4Uy[%9KRԱ:)ɰB,1sBT}>4]f%z^ dU_>e>/ ;*o k҈[+7+R0N#G+s`|AymaWXr9!HKl@z?؉;ʱ쨈Dm~8æ3AʠZ9]1y5>c Uwj\'=<Ƥ-S ӉnX8=%W ż9pr9E?Y#[n=h / 83K^hQ"[c6(Mq$]\nb!U`'~:s v2{H8*ȏɞFu8b˵)i6XR;u+IQi[WM!8mgwShsjg<5-_*IBش@aqCBb| 9d7M35Yq[GaUkr:#&l`4Fnx:\kQPvqz$!@ƹ%lSei|2|]{ξUƇS7+LSFg0wRZB]lOҁd-;BW}tQ9bK;:ӽ2N28=|'AƽߓAQ] w}JyK)QC(ҭRLMn&ȼӐxx{Ё`#Mܳ DAGaB loHy(0Fi[jߥC1WcBOYKpB)uKDd 0@FoJ-tO1Gƴk!E*?ے 3-GAU{ڮ/!^cNK[^!p?>62)Β~umWǐӒFm0YFdOQ?NCW"<, m8ˡAWYQ!VHz̫GRQw9a'@? \ţ&eQg%jt0]JZb.<=ɲBZt}b{P"!Ϛ-eD3P6%!&2u4W>:D.gHϔLy qqw6.,»*XŖ֡FᣩZgc$R0Ģ|\B"Iڏ!'TQbCW 5AN^QAhZV&$`8} oQx񙬶v&b!F%,1|+cia8"SBI*^'ο,+ BNUfG Odː((kN1 1 r'Ee[Hb-ɲ 3ȋSTDR1d΍ѣ]Ժv/xj0$U'H\dg%G1Qkݧ(1/QITcNo wY yK-MMEe?N/mL,oK_BlO1{eBLT\ 6h,6rѕtQuqI/^ (L` }v+c.Vb0ʫt<^*0L/ߧ>opCqx̉jtTq%ԣ3Zv+.R+Uv`cIQє:n7A^)++G,$V́WjÒg=@E>RTPӅ7@v ܃)͡ȵs52]$1T .TI{ [":hmLWﬡ!Kyc ze,(wO]K\X$߮r@rr7s) 1xs:e1]Rf)@R94w0PRd;>r6ܡnٜE!MqI?K%ͺ x*Wq rM]1:spSV@]H+u*[ ; ydbN 6@wUx8 2ՂnijC\*Zх$+7IՃ0"&QG2'~AV9)oll+%9*[La۲#‚* BZ.oÐd.Və lE{ =L^=3E@o3:|k*$ .EINJuGݘ \#RÌ0 E ZwFԛ,@` n޲mn\2>sc\GCLM遦2MF~]gÈ<g=]) jtz&}}oϙANx=mw#Ud\?SImy]g[jj&2T-,"e92N*AdڢBF(;c Î,l_%o8@Ŵ`z"U@:h+.ŸC εf9=>PХ(\T-Zϓ'Ȱ5/MX'zQo~ ]s:)gKVZ`UҲ׸$@6֡H)C/Mպ;?W,؏,XW> /EOXRR0G+Mf &`ֱ" q/L>Jهu*BΔhPQNz ULEz" D,H3[,шjyD"}'0a83!lX 1A0Xt%WPE9l H~a pR~RT3?s)ȴȍ^v|<1KjGr)4;J *89ڢ-Gohk4u5վ5SL`ng^^0 $87#C^jp3Xb0 7@n*.X5 ~Zq9xaخVC;6f]L-Q2e?}8O.1dIRst&,w"t5Hé[GT+ 7m[}hT>{Zl"Œ&$̪ *h[T(̯ar/QA'0NW3~XRy0OLqUzOqQl[V\SVLN pΘBm1k:XN RMW3%6P E$!TyzDN;  ЭBL*6IMO\>}a5f}杉r%V'#s8Oott1dCD;_Ι)avid0<-Dszq5@On8 ^KJMϫfr;*E@:a~Ai-uf8@r~ȿG:!fPF`:rfS(=ׄIs iGuIvf|%/UH}/ݥ01Vn" CZn9_(dOM=ЎKOqj5P}DdRSbFP&qXx@0á\8;GJ~мbyx { cb_ΈQVc&pu ,0w@CyFN&g[˜:j/B*a_lt|bQ g8`σǵu6 LENƮdLvz',>(X(eWk4LPWqA]tWF$RY(}HXZř$DkAY x,[5+`+7ܬFd:R$kCcgE1GQ3M.܋k&35:TZ[{qMPCvWzyf@jkK %P:,-N&j3/߿omu@#LJzav=|4{t_J}/:?6fWu/Hϣvr#E/۫~NG]&ȆR*NV 8(_%|~P tK<(+oVZD$+FPAV6òFq$ĝ1x {ɨ9cn ?{U@[_1LS^Oe_M+K_UԮ#o1sgi>lҌҭ^pf&7} U9=KN%{Z.wN'{sEgG3nlݴJ %g*%$ƙXdX3rzb(F6aWM8b~=¼.|6d%LKW<#޿-nax#pF9] d}0ڐ5o+q<77$aRN6w(aBqfjC}+_dWN'A2:@nG~b| Îw0dS|3F>B ̯8g‹qcK۴Uʵ%yxD k 59= *M{',ANC#@2W],Z(m,Ò,("Yf:` HLt€CS }ſ%g n'QލW6r"!1= & #w%Ƃ"]~\dC}S:~WoYtJ |롯ewoAQ{q#NT~Q<Ȱ'$n8k;DMLy@FnR(2|r:|=#vQ赁x21*XƏ9֏Rr_'<x}#i"F]\oQJRQ“!JP*FT}O6!Ы9YӜfyxtD?Jq|ܢu ^X3gbd^W D_=r<™I!rt8^̵/YԳ@w˜[]M-Nَ6/0#(NQWѶ'Aul5v a>*ЀO2~ 8z6 -BK-a2|-6G9|=qZFhdM<_`'|1k"0ZL.wq,)O.m&0swE=ҿn:wm8խeܱc; #w)y:QՑ)s"%y}`'d!8(#n+|qEJ[Ӻ v5i|/d??1r l);/xa̲I>;sy/fo-F]H04xژ`&fE_|f!dMnhZ|wX6Ͼ4UEU7 cFlk0?P * d2$y~m[#Lr)ne*-<3yA%?#v6QrXfZPdJ4II"~]2(˥tZ^H qN5 q3^v$pć q1F'JvӐ(V'73B4_9װ eB+An'/D8kz`,$*BD zcɕ磐AIm]6i%fVeى%pY> h1l붓Ki!jGߖWZ9 ] &#i̯,ԃa1: fRe{8d[89GH51ѱGOzRB)r:Tb\nB b*%>2͘J`,^hmk'Loy0ꑩ|r *)x\]mcs4{=$wΒkw2S^K2qc|dmܹnҹxjc=9^!;$s@vz~{8Lsq l#ܥSMΉk:`#rj>nrꑎ9酧\FΉ`~rgv|x2sRӇ!c2~k>FOF f:E&{DIYGKU#qyʈ*dmh 5=L7K:z~{ӿ'f;L^c+hQuJ Ԇ ~FHۜ0AUX(>LQIbƫ ߭>M5N3җf!sl_lG.&Hp WNt$kιj)?,W0ܽ?.@Hʦ|d$/io_mv]u\c]{Ub}R.zoT0&N:?Rz(PHFQZQ9wsc)=mbs@@!i f)/w 7Eex6Yk<̋!raNQQuX2 05 sfcp&QNˎ 90UBu!dBcS.?2Z/bkwjzPQ="!L.6aS!')[*i%-i)G_hla#%Oo<#N+.pkUW*5艌@"L g *90UCX.9#k+aQ{K͢n˱X_IZڳ`ݖG!]ql3_IA,Cv](̐۞f]>[dRMMdV:: H^΢$$vP( n)S WE!l<]ZwQ7 LP_k"4mpvuQ.~G"0qr3Nw)/39{V{Nϼy)z79T1i$'/ۤIG τ2L>F$лw6uhR'2K׹=WvK(7 @d2{ +ft+AR6BYɇ*쓣_l+kd+!dzo-"V$w)w۞}xurm\R@zɮ]ǗP::@Qb&i$G'~ndr^mC*]W#4 nH܂DoLӟJ:Z <6L]k7+CHoڞ4$>ds/Tiw²V6#*Ikʞ}g;p8Xẟt(oJm~IqVv +BSo4cpe҈sa7 sbyG#I=AV.vрOo\R+RHoL̓`gGӭE} iئ(L&ЫS]O'}P`߬\ '?^#HLJl=%}cBG)\_swo H`j{ \e)Opzw`rq*Zr~: Qa H>,|xYl;/!yLGl!sBxO Tn mș,/([u +=@⫥Ȥn(ynUI#$я zp! ")"9wbioVAix&ST|Ii )VފT$?jQpqyh򨝙"MׯO6ex <.3uzR;.@_rϊÅKP9j4]t8,|.J#z;,%7Q91eѤoi*pG,M3}z~&bFpTq[/iu Scoz8n+Dփr7(%eL\ 0&¨2ǘUk9S!F|R.So`kB[dDpf81n7$ D|Eg=n?2:j&wvƂ3Ż B/vpe]=c``gb'<໑֢gW kV]ʐPOc932EB5~{!KJ_#RZN˪;c }_7L)TT; e@F5IUk/S]-t &jEDb+R ob Z}"^.t[)L#)DHub36ߙV]z(_ @I"/;c}#I&H"SK )S4/n7C2TN*dĽ3#x 1rpt{Xۈֿ2Zs(5nܥAVQ!\#y1 Ƃ+/I,*u |n@vHNfTdӶ׿XgxမB{PwEwڠi𠤑6è*`pl/yf˧Kd0ʘ|FiO#T=i*G+z+w+ TŒM'|ޫ|qɵlZ:&PCQH0H ȫ9*u ;+٥.KŒj9 Nucg9 ?!9Fp}%KtT6TZp&A6YQ.@G$tDa,%)*Q>$D *e$TPN!w59nL0>QIu#7x+D1)Z%c02&ީ+oV[CPhjxąΣ O6H/;Nۚ* B!Is_"l방rt^y;U:&++6ͧiDb@sjƨ")7XK'?WME lct_s5GYq܍#먿XYs&AAB\Hg{Pe`Bu!0֠7\#o Qn,]7- sufXߨMk a~E;"x?;k.s3vV)=-y{rE<X]z-%N#dU-_9:]aaa9O UM'P86ӚEGdy F|bӔ]tKFݠ:4 |: CPD輘̠FۅR! {?Q 9tƬ9VnN2 Wtw&,ٮpV" 8p[du:r|㓥g1;wbO"ß؃H4\__2k^HQmatDT-)O]: COl_ T$c \ I/"kJgħzUV}]'h.m^2~$GCh8zxaV[RIkc-JB mF-{yR +:W^CIFߡU2(=vy'![%;3ʑF.F<@k!m[jsp੆4ns4 ᩏ9Q$*Hm=m"6fX5gx=NA@B@ڝ՘ec6"jP{:nD+ ,?Pƶ ?8퉰P߯ )r5MJ' <#EnwO5 nhj;y tOԉ'`|p/ŻA{QmTS3;8\h-#E' }Ȏm lva͢AѭF{5R:%RtȜ}w!`z({t [r~ 2QcNťt;WT-ՕJ\**Fݙ Xݛ IFBD@vҍD+u7!ln}.S,"8`wFZ {hrjz ֏}H-+8q4$P,d>ITkPUVc<]ezrO'l5@T>3W+臸~<@t  4 +`#;܂  =A y>S;|5O$$#y}D>F_SzfUZ9 B7ƌտ'Io H97!y|YVAVw3ApZ^AM*^fVud6)"0eM8ͺ:c(@dau&:S!܇l:TIn{ae׎6LIEa2.LR%|p,0?,j%YEcẅ́@i pi[{,#RM;[9X1חO8i@A9=|9tsJ8( ;]*s/Z\,W;c05&b8`dk2"5ҔIrc@ ;H?R~1xbGVB,1KA8P &m+= 15-iBxR/Ws8Ͷ4l^i_|ҁ&wQ2Bwks:o@akޫP묘dy @0 @Ti`lr{aրSe%cQ#te2[Jhg۳|gַy b= Ixĸ[#o^aH4Dr$Y;Z;~<F'hD$5˅50f L^VoQicG5-F@N bR*/6-kȯ\tma/w%Vzƞ,͂aBr]nY!BE0UE :^1cNw{x1ԛ*Vcτa6)PY.Ѽ*DabGEqftS㎮Wn2洕.O ".eM.Ng@|0`LjO#Aܭ ۝BV0"gm$ OB3o꿃T`36%JC=q=+܆f{w8X8rHk奚}ٖK_N f&=7BWB8p^v*Ƙ^P>n:]wҿm Ȑ78.!9.`/SaY `0OV_E\\Z[#=//Rߍ7!X˦#h.ɣ&qk.6$[??ȺP i՗s3+|$|f)s @rdmX5Xw|!o/lOI',{~)0JwImS7c GXmdI~)(eqC,A[Ie@({&#)vCXRB{KV0+_~.7Cݩ]uߟX۹ZRt^M(ϑHYY ^muC_-e3n2Nikugb켁NlPi=8 PW{ބP$ %Th@iۃ.ШoBWC(^Hժgf6{@ YA07Zmbr!Ѹu>Yu&Nxj:dh$;eV$- ~nZLG,O[oX3lЗL(6 +Ww0|_*[2&1R+iqףɏQ% 4z+@@//pFs5KTk"/ӌtdy'S; ȻBlw|.Ȁ-0L#C$?v"dރ>1̐j LdX `aZ]8;|A Y˸DRM/`iIABd$=qWgePhʁ,g[D^DA_$b' m)UHsj(Djȧ|`]]B~.稰8rHvĠQax -ǘ"!MJ4t68@+AF#f٦Gs )Kc~]6/5+ȑmH î78뫺mLhBjhg{||'*Ch{o;4Y)zyɞs$ DO:.lN@8XYB=2/,O7N FT&5uB果(&NGa{b\e%j[{Gkd|7CSDg= t7,#5R6Rm^ D]$)Ap x~Ih});XIl@kwg'tN_`KmjYIU@ 7A_`da8?{Nv\΃i#KKJ-ue'i +ZD,"DNplndB.f˧c-1].Ȧj2w L@Gp˗ ^'b0~5o~xOP6ҕ8eiZjiju:~& i> S̭Q{LH]%ŠN(=`NgU1~uiOeJaye"Ǣi['?)k|0pUV1U˓Ӣ3h!hkv}3mxXžK PqQQK9qLM(.EZ1B2RRAq؟kI(_h3=@̀iizC$A ]+=`_)9.i8laV|ʭd*-1iG]nyv]qж,/ۉqloRCqd#Gg䣃*}2HMxDqH9,onN A+ Ӳh ynTVG0y4 qѫ pؠag?Rr[R-^81B#_uU5#ƑRsoy'sL9P>е1qpi P a~2*0b@AFz-~-Dl|4QLjv}t?e2"Mq+yr*`z@rJcqDM'wp~W]![M{ Hdj , X\@sc3(DOINjb&lT,|bGT,fVy`0w"ǂidlJ/*C9,DkLpUUK8tg}s@k=|f31c0Ql2٪P`ׂNr{AgśO]HXi$ctb^%c,Te0D֘M6pq4p00eH.6;|>Do +[H-2^1inr*f_N d@i CH d-*xm?g;i`0 fEdĄ+E(k3)tC~p$+-#mXո`{jF nYH6#h cxo]aPtSRKD`Wb6+ĚxΒo?(05VSh9VKFT&x1cF\,;SZVb T~ʨI(q@BF̸p,%x\YL?PX2ii۲$x Cݪ#lR5mr[4<20SH PRm0esBóO-,h|;xP*:R9ziO%=w A3,F ͚Y )@`\Ni6?1iMsIGǒC\$-Th9+% Q\$+M: >=q{fh>Tǽ(rko lF .d4PGjP֞h9Qʻz(<03CRx9xűYT~]Н%̙,V]r̥햕h_6v:_X`eɐ~-&1lb\h^+!2I;8#k,{{?$tjz78-ڜMe13J__@{QzO J#֛̓uANĝ!PrP՜Nj{ecɥeB]4KɄ|Pң Bg"\E]+ը־( 7}:8Orp- Xlkc`ݲgMOHuDY0A Oy3MQWdB\ҵ5* @ AtL#wkrr =)%2 /=_d!5֝l&fUv)P'l_,UnF2 2,na\BN.4G6U~R!xCT+jIJ%rCGfFZ$@6vG襤(go3D+⦃є4chp@j~յ$Jܸ ^k^[ [q ~%,=ZX改k0/h㊗, GfE9POYo/mȰÌs !<\:#Cғq= o&$dQ~GE [b|GwL:B2{攱 46it(U:ϼY`y ƣ sd 5 $=AoN[KS,i€G,[:uBta$HíD֏"B%8Tf590yeZ\ىyH:(@hE{~֩T4 UʃL{xb˧+t Dg]mM3I!j?5 rUK0\jUwLB1'D$+"HK`^Lz`zC}DU SujPUB2ttFD8T?ÝqaE: Ze8ar@oB4B;]YStk )4M I֢@m }"]&"( QSq83翡/[5ZJn 9ߦ 8ݭ*\ %;WKSR>/XzbSW} hg\E\xJs1ʭS9o:4V]\gDc{Y DrC6Kavq:.FجIby`PJTG 5XKn4Îeo/!1S `=LW<ѭB͚I c^fW=zeu C]L~.K,>o: a\;:?):s$Cq{Y"QJ_v(z'ךcy6Bt(iGt]s3=Vq$nEVp a ;D)Y[A.ޠPR>C!wI|\1VXD$x?*af-ه?+o#ֆ~..Z|4vṛ=DG0.33'˜*q&5XrIZ_0\w:JyOޱBnZzHOQ ch΃M3A<~EJ9>rʶ5JOf<1$8Xv^R IM|Oj$S;2Mei9ܺrd (EB># 2O4a`5#Vs>Ec3 %%O-0l[M,qxsokP Ix<LwH>f3u,'MeBП/v^ C4JH*T,n)yL;CqbPA?*پqerJˌ;UWʜ%N'&W% t!Ra-OUadl8 -XILoou$%jו&Bi(*=NZ}@"A7kLwJr%=׏Xf^H^Ф !/|3!D %"z:cDtK$eGtO!`Ujޛe>9)2&Y#I:LyB\gM!BAua)+(ǘ4䁔?g[0!͌ )hѤN #W&4ݹ#OiԐ*v+#0qkݹf}&u|EF-bc =_˧D`,ldɈLD;Aߡ28Uhwj(d ThZO7QJ}v;@l 20txhAa`giK\Tv u Mãf:@v}^k5Foi.hr6+|KF v 0ndLK1$A8G҂ֻUgSiE* h_w]Q`2[s<5QJJGpm#gN9KnuKx2qI0TX@jU <ϥsK/1ANY'=ۚ6rnUk79 g6 ]UNB}>b&Q)S㹂n.ejT=^Ddm{tYd+kN8٘Q,|I]J<}uSy^LL-֣ԇݴ[S8S 6ɾ4. G/{g!! JnDuf[<@w!RCn‚t/~1*A1, E\{\]>B!@ _Ӊ1.kC<@]j}z@7Iin+H4Qf1ԃxR*Ƕ7iҭb3g S^\<ԫWr{;m_bm62}9e}HsA1XP@|M1ÓTM!֛ū^թx83A[mTi˯`*PZ>A#Z *XYU]C5jv]nʉ̣ZSn31Q:"a{D čftc|ń;Yu|c|ꋴQV8%Sj~HKsF\$@l=&2*?23]o?1M 93._9uON3yJwd*bTb[5ff#~"i sq'b%LTɦT%5I'ce֓jf+21%8.1٫@JsJ8"u #lDukB! Qgޑ fPbVdf xaxw{J-9Aqg0oOYQ9jS6xr3!F'#pB"HjӣZ)7!atVsTW,M-H%kڧRHd 9V\WNNzPQznp"ROOM$W!T+4 /5彖(o*2+ѤdR(H?XTC?pm{$!PPp+gi$a5HӒy@pBxGcn BIt  iFAuD[ &Ԋq8>h 6T1Oc`^׭Ntw1^.[}kh -I;6K7Cu6+6`i!FMگG";(rna\CuZjn;Qt0kPͨ3TC^6=<"kgPA*1ǣM`8n,Z%&5ݑ (cBbAT|hb@6 Yc{Ll8'g>]dV9-(1s3ۤic?/K9Ly{V ~5_ ;<g̼;ٺKpW*̱ፔ:IL!gʯ퓖3HWPW4VH<ݷU#-\gc bFK>Lrs#cGKY&¾I&jdXYV啘mQ-V_d} _?9+oͽҌ޶!ٝ:~75;Daũ G|uX>H{ql1,V R]*u|e\+#0(S9j?HE#"$dMXlNkP-.'_$0P =l!QRN9W=LʹM!M>)8t8BMeĴ(o hC̚p:e,5!6P6^ 06͘<$PEy`wEcI!U%!Zɿ*^Z?)X NF@%8\(~(Xna6ef k=ehjQ]2<ƌ=B?Αx5vn9g^=2hA:ܲ*26+V_j P&Wkn&SM,:[D cCrLsv*`#s[(7Guvޙ #f]0 z䛻sFJU/֐E v im|_n"[E9,AdJxϗto^<>+Jc.PF}̤|\ c:Ͼ9+3pyu/%{uL9_%@p̀mG1HÇ- VC+ 6X"N`%Н$s{)w/侸3_ܺU1bpSE3)|8N[ڕ~X)܂@G@aGoRHvrNh:d4JGwj8et/T7S~z X1antHC'{֝Uz:+NB؎<2PM;,vbNt/I( Y:hZ{395ב BDdDZTXRh9~ši a8|8aj76C&2XeScOS#Y?ڸx`RTrR ~=f."` V X'Hm|CN\" *'x+:`K9b2#3\SϤS|{BKqݷzbf~7UmR^6-Zu_+zG+=uxTK+ѵW>v(390؂q9 lPSux^=HTF8[Olx š)yxw|hUѬ^hjz ƽRUnFGF dh&Im]N! ȑ~Ŝzp2#&rfD3DtL2ש1:ؼ4c4x-ޕCJ&V^\)T9y` RT<c !==gl}46roA#޻.$AWK,f%)mSܱv7LYpa.1/:GigE>OÐ j#Md5 ycADSD|f3Sy%(|hI 17@k 7~P$uk-I+q2!BU%T8I2W|+)S@#*:"T_] $f .Y N RPbfjS73Z\M➚\hSKf ',B$:)(5ư+,2I.L/.9>[v `+t3%\wyKFOttHng<"Q9Wh~U:@mxC\1'NZFz~빼 jU/JP2chfkK4tꪝrL?Z0{9i%*Wp)LdBlqwƪ螢\0CQY`ꘝ*2JY #v8EC@qkzȐަId2Vo+)HXi;fW|Mֈ3 D8 bܴ E܋&O> @BX*}L ?L/~g$xΊ$]V4tKa {H"e0} ' p,8IX%7%3nhk52bo5#b@41矇jH#SQ!?qwZWBp}8\rL+dĻ  u5dR="u"A]!ь5k/ǽzp§C(̆zM S)}XEQ)xĜ`V!F!o 0 Eҟgw1´|=rё:m ;xX KMlR!rV3m%qd5ե6v^2MZW +\CbT y ;¯I @irOsZ6KP؄QR/_*wF| 3FrG-yi,<*/ЫkR1 7yk0ц3BL&C^vk] 6q19,߽( ՟=eƦbj7nʏ].ň] V 3w?8 c)dfEMI_dL.14wk4vd`;(nvc6n&}}YT 9j"c/"챋 6mpg1!fbYT~ i}VD4G!2 T`Vm刔yȣh4K% ps.Bi^'fqBğx4+A߸TS,X/IcdAssUjBX[ IQ@Tq8gA]n6RxM?T]Ycr9 vAϳ<&.*mJN4K 5̯h):?ht{4>_0$7lHr *㥏pl>FJ؜Z<5jˈ83v'q(&HW.ZJ`,!{<~hD៭ef-[ba wuCy~ $[m  o4H=t!\ۏ|rPA;az;S=M#^M8SRuCEy[WRf?M6 (l+BR}oeOq#Ta @CQ nx<\1BpnGB|,Jql4O~א'W*=DyJ52PJe8%9ji2XL՝vd"´#M: ƙbϧ̓BNY8ʱnx8Xr(U@jۈ4}ỶƑcZl;a( M(SemCor/r{|TW3:?> &AqeJ^i0iNAZHf%bTȄ  ;Ci_ _paD 6GL u9 =^q'%<ΆUܮvGw v>Nv1*ka[+!?8d[{/}b2KZߙ T fz'6.._Dg9wg?LTPzy&kѐSA?j8F+BzS x bMVߙ삻\ ҡ2[ 'ٗLI+HZɳrȨ oud\$B;:O6 $m.Q= ګ6e?t&cMv믝${ ҋ+v0LӢCx5[Zuyh!n"pQxְmrV:{Dm]R\87#RbS8#G^N6Ǒ0~tyЁ10a;fع|ZA([:If#Z/p(#pcA\5uN~1]K X}t:?,|?F\T) v~m;3-lD·^/=C<r∯('F| ?F4~/QX=X2%КW^[8=7ɂ7Y8 l&ܯϐ;S~7$x),?И&e9j(Xӛ5#l3$ QF3WHphԇSyhi] 1&b.p.Ac?лv'jʱ`WgI}yS1C pToկD`#$w=fe!< prT<[o6Qb s<-ArU3Of} ͯZ"=p7ӿ'0Ӡs0?d283 "Gr?q IHZSPy}'k9%3h10oJr4%l1=,}r>],a&iW?\)=wU̵l{D-s#m`VCG5FR>[;ݑU9}pŚ&8s*EfE f*xӪ=|3 u&չ[JgӾXb {#@}‚i= 1A2 =AU8&EES%+4$utKbZۿnΰZP;eG$TchiE̛V2ɰ 9o0\Lv#Z D 9p)=X} ;~tTmaAĬf~zgZ Nl湺F{S Jfpf^vZ!Z}l2`jhmLKz¥ɍ"sK4T; u R@& [t|{0cC3Q3BL{l sqIEc&cN>1\oI5>HnNzҊ/c`Xnekp҃ٔ` 3d=vLc @ߝh՚SikY5?Gaȼ1J0LK;DtlWp36Gzd_v˶`i5tp{[MzS- d܃Gިf8];q#@ WG}NXzL][^d҅h ?)=pQO/F@xPy:?,Č Szl_GPɪqZg<g.#R]J ́@>$o=Aҭ3j"{R0[\^:|zLe]*v"UYBUኯ/¡Փ?5$HOL=/j_$0D0+`>:`nB{_0hFdZOj+⭇&xqs|R l<%"M6\AL8 W̾U qݠX7 lsAi9CgMnfc<δvӤ ߳>>F@-40W  H`/Wދ qهQpݑ3 (_\E=ܦ. <ح.+'ى4 !9E>n&p}Ӫ~\ȟ[}rˇ,Тx,U)+d3.7H]KO;=$Aka2wݿz"_VI[+Dgs߭JhIǬ=aeF} xN@Y+6 J+hX0Og6`nd krˀɶ3~~]glwa 6hX r&6;$I_quDLҞBBB,6t7=$tOT)~s"%-|dVD}'9ws L?U:>GJ N%j;zy I]H\kٝ<9j4At~1*sw'K4Tuodkck@ 56퍌.nMW Nms fOv&e- |QWV aF">(‹'{Zes9FLmJM k;+=]x ~F?{9sʡ&1ᠻM3 I "pXOi6wG4 ޕ;@:٭޾?rh5}jͤ s3˧3ѫ9wmnTBcZ {VB(i]!0@&L'0æHs!G7{OiL-hkmZ 9u:NӝApj7ؘ.Ԗ Y %$\v61T)0Fv/$$ZdXA>2ngnT!a3B=hwMрUZFP o v{3с1"P@grȚYG[*ƛyWRBVGnr/vEtH8ϨЫ W*ķ!˿k|'H Bϐ6_,nPpOԯQi(Bv*7(}ǡ×exKiJlW9yTc€^0M;YI8|A7L#f(_3j~r,Mq2t,f^,=2fdj]AaY`m4+>A|qc HNM$#=J4!dպgGR8f)jӛǵh,m:FQ-LVa$o.De<(O& +M6cw#mq `\'X*kkf32\(k+:H =+ˀը,Xg7QzgcȿD܂p $*dtf֨ױTsaDnP$#&="@"UD%(%# b$@ лi$ukhҲ4RVD`IɵYSS22*g~At+"/6^oաV9> V#g7u|#WD]\۔WA`}Ⱦ޼E4uH [UGF74SG&Ӑ7#a2$6I[ò3oLvG0H}{o=] >+t`<v¨ո1?N}Ɉjm| БXƀ>amEk W_2>wQ(ˍOoF{*2Zf[Nj!c3 c(zԥH(<҉\\RIv ?h\jaUF*t#,a*Ɩ3e eݡwN߬L=I2[So<:l_4`3}c5@8q6׮2fO}`V:#c2|HSԨ< Y0,S0Rj<,/ZSAux=a'-r"5.??S'fr)JfТ/;+syamG89޺o&wJ >'$4G ڮղ&aAɷ2K|$0.}X+7o/DҤDdji: y~a޾~9"Ӹ@>ʞGA >czȞbO´E 0s /9}V笮nE_F "vD@WȍPdO I8+Vi}v0>O^#qR}v"[K+vcѻc+'z"͎6'( h#o +hL@` GHݣby:FM{{Ŀ)PNi:o+@㽌V7΅Y2wzw!y'~"C׶#4I}I)[TΗ"sp`aXDòYϽ-cg`/ä,mzmMw*|/Q <;Z[tr._k8Bn^:kF"b!]~ꈜTBL佪g6AY-،M& AR hy汏|jƥVz~G8GZ h[pIp^]N89`4v;\&baOqM"-X't ]5Ṕ2n"4xtdӉ< \q*|+a: y Mo~]p0 "V? g%JrBW9r"nDd-Bs3yIYG nb ֲM:~D9~YMmLU3OhM,-׭`iRVL*=}"? ,xnN#SDbkQVAg#sW4X8n9'%v?xpD.BgLdgb#LHS8rR[^WA|6WDInQr|nᾠtU?׍Gl>[H\m^ 6W"\AG,5vM2+ Z"Y"!7 d EҧG0($gtkK6 ~nӺb)G{&l{ز"V&(7A7w5Dž#eRPl∱-20FlwH[;%l(4N< 2_ф Ȫpz;-j zeX顽O"4djR}a>ŕiem*G_b]W?;k0֗=6%<ք\$D͟ $Z&Uuǁ^>ֺ YB|@4#g`w?^C>q'>02srnj姗`EJ},?+ޱ:T'X?wάްfb'ԓv~ݭpDuChIhlAneɓia?F!Gn7 "I6.LE!L;Fppy Ayk4-Lմ$ p̠a-;N (^de 6#}?l;Ea֒r'M4ӄxJ LdbRS=Gts>}@_ON[y*:4"(2GgH!Q?02mŞMn0U΁9$~3+UD/MIfX =rZ96hŸT<\wd^5ǢaUw#Sdd3-; ![Շ>0 h#< HO6"ݬfC\zdԡJ` J-P9Ǿ nOF[bTa)uJ?z ;MuD`}B\Q/bcE}^ h -a?-H<$ar!Qt9 5u]0EF֨P"OC>+?[oѵ m,OONްTu0g& |wGHN͜@ne2V  Ow_d<@seXj1vW˫(l\|_elX][ϊ><6DTwN1}i7HqʣʨlAT~mvUTKr[ʠ5aS0̂ 8n[$.a 1<#2dU^. lwۤax-f#lALM"$͚?N-*OmӁ tcKJ͓9N7ÄFRznߙiyǂkCDWois]݆ -3:hwIoFu[D<>Cn*mq3^DCs7tOX /Mh4ZdX[$dUYA7~!_h¡2R"攍ǜ@MR+w~VaCDK(`6Eiq1iRy'q\p XV<.$ېɦѝ8-YRT砫˦13r)=AȠ.75'FI-[obIڞzz2‘W*2r3k15XoŒr<Ԋg\_Z¦j9- n\z"rVJL;NtN>Mv(1 _BtwnPjNuی<T:4#m)vYWgk)0>Z0F#0uCIeRIDzGR*!v ~U蔥0Ҟ PfΊTge1nW$\;h^TaR8ɈT2e~A̜A03&aIM8aVwk'I 'P{!P\ 5%V$r.5:qp d0+sf bbVJsQ:}rr]ޑ'yi8nXZėzl{6͔ŒI4v0ɍwyw!7 0$-kz KSdB@z8 PtF7N{{~c#Y-i=é#mښ;{d;'>w;o8KK EDUXvHhN~`/:U" ˏF3JFUc^;080yciu~Y\G@fl)M/E=r"rB~@~* Lֲ"&}N4y!cw'oO߉B ̐],3MΗwol΂Hpʃ*dtmx"%O`MȾi.y;^x\ی92R<0,{CqMLzVvi^'ѺJDhfXQOc ƽBQa׈)I+a>EEa<ٴFR)&I{f% d3 2.(1q٣aY=v#$'K>_9;nj\d6,ﻤ픿as(;79:m5ZwkdwfMCLچW(6\ZJݽW;Pid<<7\9 9|N!>t}%`U h_?.?܎"G>9PE'WUMSe銒tPnr3L}EW53KWL_Ri)R pn4y۲S@s#2a%(V6U_wjr;,;#&"vBtO%O7!|.M4JB Xew8+E?w`/乨f.q (cRyD -;}zq{s?ڇKI/^H."5#;~)\6 ,k`PeB/=ԁ21v|5j&L{T']A;ᯙd >h#Y//N BVGi5 ~%;+H5jΑ -z4Y0\};ޠ\eq2&]ɞ<6 ՐWCHz#'zf Yu43`QfaDw Zy:,i!8aƝ_4†X ɟ5P[Fi"C+d&.Т ExJ `u,\ {bCq GF|d]Vhð=#*_$հA"qyWt0/9%RY ~/?.U 9@? q3G z0P4~v@R wgVwMS!2m/ܠb3 'u$7ef J+ScLI-Wdx3 :rPx׿]WRSz)?yTQ/ Æ bX_AD+40yHhfs aM8N ȂTw)eݍ->I<rޯnA߸P 7޲:镤V6 c똶}|}b>4ψә{N1۽1Mq{=.S$:̊L˖eJˠq`Czx聺hB#C7~N #JVG2\QT~J]˂fB|@'!g¾c9NBl ^ &v>5: ӈ̭F('uwTGn_"> ]vi}(j'Xp!] ؽ=Ϗ+q{ΠGt|0 3_JEJ#XB૊z`"PGaV(#TK< Rk0vǛjEWy`-FemNǽuYU9u='-< DV#0%K:}gBhX-frPsݗuZ65Ƿِ9K"G~4XPR/pG`Zmc)}~, 0dqeM=i͠څEcɫ Տ>̀Mlŷ ^v4q<`;^?L%wsD)YV4Yh1EZ݉euَ+k~9f3=*׬#ѐ aN:RIgaJ$?f4uT9VV2 "F3Ll_i2r&a74Cv͑"[B'ϫ;i`\ 8qF?:C'Ȫ8Bw 2rC%LW&WF ctT0 "xnsU<e޽0 ,Ҍ6yf`_ l0 Aj pB1Y)//$=Vq<i< _F%7K~ ፗ!;\0m@o S 8!wwBFJ:3/{DXƚu5&3;9ί0L#6Wx{YZnnTG#d^^Mɻ)HW:n0~#4 h7PAH**`s4,4ޣL᎚ S3UĊ=+Ͼqh`=?E:N9A$>{% 97SZ#L$RI]}F;QD[$n*.蔞LG.Gw"~%bz&mձ0Hdcȿ H8/7 >FʯynǎvW*8ͦ8 c-cqVXw.sf'+WF#E~*!Ep>#Yi)q4S6当~:n'4)vL]EK)M*7*D E ir, =xUCbH9BPUZdzeUInKyK̄#Yv0}B-+gm֤O*ɜUT(gk}QCWbҔ*32HEt*b닜c~#Vel]6=-'a/\eq̔I/zT(ɼ]!9'ps<#"BUSkJEZ#\8N\vT6h8 3<$)>'L'Z'Wo ʹ VK4s,JfX݃Сfw+asr1LcĢe3kiYhj<=eZ"W ^=o$:ԬOCe>)GXZ{h ΙFs Ⱦ^\wk H V+ǖC(3]A+_m4@aP[:?@DNcc{5FZm?5rzq5SwѤIhc z&b,oPrgaNnn%PL^X 38ΆFv3YڵßT`9[a;bm>CYR֜wf\ z4l QQ4i6akhP8\' ͍:O u^Ʋlc2egҺ?N 52[^.d3h{4ZMMگ /R6* Y5tݺ{e 6|Urccb7е ҉]`9]Q x҆0!Y^oז2>xXt5=<&T^=%,KL8))>m{n~=>?2:.,ONnL:⽯@YSr--T 灌[5T~#—=~!*1 gRFn_4"I:Xp< W(u|MZ6cL7mUbk~{E{H@WtG‰d d6($ zz{+ 7&Xҙ)"&@M`6 'p[[H'$8,iE֙Mu6ޜ_%>܋">bҞLZ>]>5k|bD^{GrɯD*IRIJ*>Dwb|irySB=ZyK4r`Hq{ϩE y_FG$YfԚ PFfvYY:m+e] [Kҷ)\caA{ 9xXQIUitQdiZmf)2![> α0+iX^p(P靴AkJ0Sc,'R@JYR"X4#p _ |N\q X>d$&JPr饄Y2׿ ٲ7ge^#7ǡXܯ:JGtx,V(̰ [8r)ؓأ h8#a #{:)lıM3PΕ9 >zf:AI%[͑+U-e\1~i/h86QCP@͐g P@QzP'ي=JM֖#6*/KyAb#pz32FArC$$fʓ$ ɈmTcEVp&d+#jIwК6:5`o){}da<8{d%N &$ȅ`<"3{ +kl&Ύ$o[(*(7ރ2N'7%`wasw<%^$ {溔skq \5ŷ~0 ×Sk N.\~p0}`G WՏĜI!9$jl7h8/I༚&(DpH"ӕ: YBHacO{p7DhnwXm^<5c\ڨ&+=Hڇ:J"]7{F,Ԗt]4rpd9F{.A חҦh"":\ҬHi(}pszc_"g4"T&^$Jj.I)  J`q6&H~ygPI0}h˰0Ԡaq<_s&j` ]۳N{/9<YY'$t(ߝcZ9a`Gw6+o(808Zͬy# گrBK-_"h24T?]U%[ȵ05K }P/!@j )G0aؒ w%E~3Ɉfbk&ڗ<P&;hC*_g5 6:z"ChOm((~D{ EHs Nlrzxd~W8 OcNٿ^O--Wy٩ˊWO+]>7"r6D8/ xd l= 룤Iu5Lq=quBdFDlJnyE}(+HO^OEP,o- Q,)#8T* f k{WF-ֆ6?zcGZ3R}`b0CSRYkx7&( oVE)+ 2I7WiS`8Yp6XvYfgthߎLQ:rx8Eø~fX<zJˀ=[Y-kjtZcupNH1[ wt0R.#+iI3w{,ܝm!Nͥ{!H?})GAnԙapN]aE gDfWT"FwW,IL/78l J}>LO^!S3&Y ۉ(]{Q*`l4*& 7t\yy.M3 PTV:J=Ny6õVS;X'0iVtsS?b6gZ2gRl+oegL&]7X*ތ +PF:p@ XOq0XA4(mad-`A]JUpCUhYC|2eM{=mh &BaN'݊3MfS 2Ouё},VH&_z+fyF,Xy1%yvΜ駑}򊱩HZΪ"|'D ƈz]u'_x_T?JgW9Һ,#e Tptî|r0+g.Mb?JޮKb;G)c$u'Ih͛'J/-JHoD(ȚU1Jhw}+#ΦYk7`z_8Xb}Qvh@'-?XE5#[8ooeף&~x+S0}EJ`c|0C`lp4s[8,33PEl+cфnm5vY*qqXe0?f~3Xr|:#|zIT<ZkRHF |ޘMN,ъDb> HXJv qDE[`ޝ rh!ku~tL ؋0pX7Ve6tt7̑һh=p((pJKy2-#֤I1}T[$Gݗc.Ys卷 }\(rg F- ڽD{-0@a_l\S&[XIy gY@s_*fY CcWZ DH.`S!$&BLm8FW&;Ep@z:2_uaUWg)ZCFLV;܏.U9̧JrV ,ck囙3-LgX9 A}p7Ux@8^h5+|\ø iYH3]T,hrܭBt/g蓋{~YL?2ز) #"z,!"hC$1,,j1LY.(w@ &t,n[7d1K_gX ᚢ٪ŤUیvEU|+z#aea_9L*TC ߕ}hyu0h8קGJ)eIAE"Blӛ ‰4L}O,ֱs)|BIإ5A|r DV[H_3$r19E9I Xa-Q65 30|*A(HX_7[);ؐ-nF8 'fNڥ!N*`ē_E?*􈭏gضK q MN`,ӂmz0sjw :syl-[DNM W1 @]^,J2}+PE9)$[k/Bd`. ia:`b `[гZ2gTGްS.Q:xd8@nuOp!ۚ=D 8hdHqbu l #xfo!n=|\`7ˢ,zXGeRhD@S'!ѹq|>5#̷z2u/[P.fb\qcydpa'!UkjTp%ԙ[5Un ğK Ñrn,U!A7ln5?mG(Jݎ({b;73yDL.; |{1&}Ie tqUdºV(ekؠTZ +ガIsl V)*ڢ[TH2 0e ԾIMÒD|6Nh$P?h֤uB:Zޖī|%&@)"},Y6=̍#Y ,466e޾婽\8IR' D̝*۽I k`! ClMщfNvG GBf'E3A&)%ec|VN7B e1ߗw{ɱC6%F ˿&qDOzoTM2e0D.͢G̒S BV@ӞUi5hUz%HKP&yeh˿_ނ?KE?׼PH}ˡ{Wɗkn|2Q;bUӟIFv1 C2n] G3H?aHnpSt8G+9jH;Sf ${ S?q*8uv>mExaZ^Z?Pg{1s/Mba3v.B3Lkj^O$ܪ _0Ma%%%wNuƟh&>E5}XJlEȁ?ѰH J1'QC.DHLN$2b`ЛpzHM +ܳˠ˶uzdJs8h,ݧP=>W4zp?]|ԆM8*XixɈX7-+GlO3#E3/'<3l@yKG5 jC5`S݌'Lm除ai(Iƪ))N?F.[Z.TKQ06ü-?1P)eO9'OE j's\XYJ<;/'0>su)@Q@j2'Sd^Y#kN2ݽTS1 J<]cOnGZ4wm1~QeKt5A (kF캕ө}C|):R0&~!hxIaYWzLJ5ႋ }̈́ A$p3GLr9׍Ö _\ obS >1P#6q%XӔ0th~#g>XbG[HZ4hRpZQL ku%L 4oum1I[4;0:To@`Gr+XiZ t09\r$2ZY7avV*Az%fD ]lBW؟g2Rhޠ\%pg,`T)#帅[A VPܩ?XTKVV@@6\]pZ!-ߗzl+7t8\IvQh^߃gV~(p,st@v9$ #$mO$yS>?T4@ Ff6!O0vxx2"Mzc19_sPA?}[A98;R^hb^׌pEfȠnK~*$XT6Ր!;7z/׾"+G,z[3]yPޫFIS〺zh, 35PI9fP\(Gq. O<sмgeU8,$oKECXa@y?+cWs5p":Izo0N/WU&PCNrêgYᾸB!h<*wNOw_' peʲ(+!nxEg <J2_8.CPtۇJor< Vw M;0… #oj +k˺ 0ij3 o7 xmb{P@vwD_ՏEH4\H_Щ}y;m:/nFC)#B<K1mh8YnZ<H Jo댚1u a#GYI%qUB=A,Ư8 pwټX?}`\F4=\[h"m׭lƗ9 _!8GcQG7dq;X86eĮ}o3 x6l?K8Af}|Rl@C:C?Ypj .EAh]&VkL 7 wO~v>3nxqǍ/h}I} 4lUPt 8c/ cA  /2F=eoYNă/[d{ݱZ@1)Ő0p(N߽W.痃Ph1w ͊"R^B!p)~l=5H@A?(7BSR1#[kv "kh1P7Gօ' hztxm0KRiVԽY!b/tf]]+В%'!WI{l':%wk?gZN#CrRT?# .(?UG3:-fIU)K< m}Ȗ~7U.*r u%vv(aelx ;ڱv=WEBĨWh{ w De G$\x,%1=VpS(ro2ac1%ȿqS3#Y_P\e_0G= ϑTGaqLr$ن>L,T^K0]h)Q[W%69n n__`:}]x>OŰ~?vv2Hcտt 2#ټHtprPԧ~yx qmU !o+ɞЛ;KwS#^+MF!7Mo;]T|XȻ hm 4qi<=8Ikˀ,,d0NsK΢cGaK(ؐ sG}5"*SgdƊ|Us?eڹzq "`1C!#1S,*9CHhyřs,trN#R=,5db$$b\EFYR'=,CjR|AoCtJ:*Mf%=4=|8؞l`C> _*04~y&r_.#.t+Wp69 d 0n'sd2fzM.WIL ʇ zIX5.l60hpCzZ-#׌Պ''E]~fK^<u nrנIk:"Pk[EZV0qƺ RMjt' `Y!@iGoghK+PRS:'f< :buN!= d aӴnܣ6)FϪ0)ch<^MkgKϸ_j>S(0qbBÛVp/YM:!gF!4Qjso`1UZ _ 8hځ:"3M=R"P #l:Y 4@-{ X[p/d5D:ӥ2C1Nk0J6vXc/ rSR09NN.Wwy䬭SÏ+7/Yˤy"zb;6kv)h>-e& IG/U]H+8B6D 2$NG+ä{M}9D 횽OWmKqZ5 SMމ|Yj 'ˈPX zFGvhV.3O.2J|I=О|@s@ _xa#xPcc,9O$|u.})pf ["cq:X8Aۑ z ?z1$ZÈ%H'"av3Alvc;"J>na8۝S*J3\>`=X83TGa`ˇCOsU<P).MR1sfXәjd52빋Mb*R=m_0UɎ4qF plf}c]z-+ Ucj*]s,&%{70FㆆՃ'|p#`aM {d:\CJJ[P9X qƬ/m 8ICn* ' ૷BkR %Y>姆t|%vPmoz~]!!< | %'gH6 '=0@<0GhH=y}p)#",Fk=8\WSid<>d 4ゾX-Ű6>WdN$c;_~7jX͘u+.mX:r>@r^q[71x_t4tK Ot`p[kSA#4mB ݜ7dM 7=4F.o^nE[:-%"OfR?WZ] ld&|RG^cg*E+=޻l̰@tf>Z'by@)n}q=9P*=go8O+O3tHt?0 2(ц/(ΡH2ڱƇ %nX GL@^>hd9[˻cR[A'7S }x_5'?;'stNoH~iGXn} W1`PB81`XbS646- =4wLk\IzX ق tC>ɓqcp'&V5kxHFhI'|vz7Hzu}s+ۯmQF:{_.nOw\dn8ۗ`v_ůZ#z"z!V )mn<BvE }Je<2''$x\qf)fDT1^$&,H+l.!қs[%/<ĆHEhWv 47-9=pIuH9 k;p&ESLѲ vܑ ^ `2 N awwpF>=ٹ0 >"fZ878c4 yDx]TR +@0*P Fz؝Clۘ|ycm0p 9-"P3j/Z qfKa)\0юãwxPIBtڂN4출 j<\/\l6m^S< 9Eth1f@7}V/JGOt@P=Yh)1g(%#J3bl4IH g^NgP`,t?""XnXW.}!jv6# -$lA|`L\I\Cq,Ǐ1_ӖG-bwpxHl"áP ȋH #a㚥#8p&r73 qkvO}e y6зc=[ixA\yaDL.n1b=J9| G ܲ5k$w'fBɂS-0ے#1+2;kZ0j!Z.vӊɁ0NJ jux_@p'OTAnH-, d7՗/ʯ *A6Q&ŦdyJ)|~3V`.!~&JRJqdYS2ԩ =g(}C_)|Vf)7;%H~ adЩl3qm%1P( 6H#gK8?S*7+,"09iW ܕ別iͦzƖ_ǃek2ËB烦Yf 2wH(2&e gurZJ*[!ʽ!aX1/1.ɾMhq379pm1/eΈ+(t`e1|z 8Ի%$f]v҉^qL5x qGz{C"1HَjԇF>kJ3K?wQ~iH2;Ǯsti?V/#H]l=uyNJF*&Ģv?Bk{4% #:RkzN 3O_RƪI%N]j-|!HY9*;|Ug诹\($Bc k9#եbvT77PLɿT`A$`! 䮘δr|TM_hvyR黖EwzJu~B'ŞC"X'ӧbQqSBè[4!OV8L͵Nz]I4p`#?ԓ&o)?.|)UYH6V!-Ŧ7ElNyú4 *p2;8)E܌v"y~2xe*H|AkSwK4PvAfClSÚ6Z^/}+~\5 l䀮xgOjl04v6֓V4=ˈD\6!4p(w^Ưlan`7R_9 S@RXs_,dzӵƅ%1聂U!MYufB֋!nk!umnj2=I9+Q縓EAϳ5!bY')%c;֭\_HHrnTXܩ:l~=dT|CzN $q}{00ɇ4AuF)LLPk\P"~O>cp 53;}`&쳆{<` ho?X[`8q@.b?0z~Qͨ_ޝ}hXZO K㱌S,Ozaf^)xpRBf#'͵; 9 6g7hmq4b C!4 ?E1S]wp F\iψS /7PYNfvlyw3닲l{arȱ}֐h0]>mEG%9Wr ;NJuD$pFB0ھBzv5|w1.րNd7K :oXuw+^;Zq61&a87J0cEIP9낺@кDpy58VS**iّ,ʋ .A5G-.vL@zQ\c~Φ7Fcaץ|`X{.!O[!+ʑnWz׶{%W"J~dhgR7+0Am߃^dƁu xY~`Gį -I蛪 ^iaxFxD}< FܫB)nedP8Kqs(,>ElcrzƄ‹KeP8i-^4v϶ ήgkۄYlk"-i v6<*k}'%H F3n20U#(2&o7iKG1gHr`y }`eeMy!X){]3h}Vኙ?|?%8T "C 6N>mL,Xl(p//-WxD#ətq˦Ois">}!P{ްt[H<,龛GV=d\؎pYŰD>o+Hs6A1ŨG*f*lYu=t%C% g` Zl 3]íq=<@DH\)?#=ȿtVcC&M?173ZXu2(99sGЃ3+k lO)lfEx Mw[B]ףDh(bӫ@Ѱ4ЫrCU$hOvui)M3V[L "{Ǣ6uY.q,J{7k@6Ph [f^$m-rK5'i3]H7̐)di+\A 0)X/FXJ}LN0_3\| 2 E`ɑM.gj=zUj9RU*w&wbpGT gN=| f+w0#skbHwH,{UH5vGN"eHs ZZ)&l}:)~FХ !qv y\Jt$%Ce0p_j,?: -t8cc 2BY(`TiOg?NEk|T1Ң-M @~1E^dwEg>ڡT5S^ |~>ҩLp9f 1_L1f" *uݵ_+{ՓZwL&`}K&D[Cҫ[rθ$a;IґzԌCeWUd2}ʻk)AZe13 ɷ>Hް% kzWvi)k;!T0%j{h5*A'2ײf0-*}Ftozo1~g6 6adRǝin^tґ^!E%gFKCMS͝10O]z5>@=դAkVěI%+aiH1:y5IzK@RjILưAeԝkYyJ@&=)j7>T?=j^`۱@C G*i&r*8}e5ͬˋ_zvUD#D9}-yJ rYV8hƐUNڿK*1W##)]qБm! qlȂu5~_bXR^ؓ5bQhG߮8Ssm6@Κ % p;ĺ$F, |E:|FvǣQȾӕK]_mF!+GsQ{iUcY > 27jH}ann4zY0^=bʙD*gb3l4m|^sAb#}lҟ緋u7L U$ۼ]㦼Щh`K8ɋ5 gn,taAyK!g9Ȇ5jIu/eW5<`_[9?-)2yk]H|:ӑ?/Ogb?Qt;4HrAfOdf| B'rEGΑA,srvUTNw,ycC6?i۴3 i/fRm-`_&W :N&>E4JwE a&>bV27|]էl\Yh?:^r-F+'pNO=d"z)d'r잤9NRXgTJN8y{H)ڔu8tDN ǎ˅}]EDJB !NzLΗIJ׼Ngnj1W\4+x4%|֩# X_r!mJ5iRyP?-N] :׎EfCaz=t ֲ#\0ee)0Csu(qx~{jz;97rQ7!ggݓDɞ.Eai`")v*(?`}ov"Z[L®YXLCR~Uӡ7m:O_'_wIv}c+jqw3<]D!ՆRW8ãY;̒9X|OT #{ۃRKCh "sa;Ge15SQ<9u7 _H9]9(QQrRCSwj'9Dʂݛ #5K 1X H-3{ysmwb%rѥCզ>'M1?8a4+l뙚󘇺Llw + ;H//k_ ,$tkRDYBk@UZʳqQ򭓨1;Zj[eRR1%GMs6e0Tz M8趰vVG0H\.6jC9}_7+EN&5p#cRܔkGwDYN39qhGjiz1I}AWS^~QR܂FBa2lob֋ E:n/|qsB~Rͤh1d>(N7~hA̲3 GԻ^Eg:ɛ9+IXH MB 5W598e{%G$%滝lzCN2[[6*Tb,c*,_K0l6".nMUeh-UczINI;t$Hn(hȨlҊ:S Dl0}`~C"TnD5 YȈzJJ/rBLQv#"i;[D4=]e0xÕoĂYG2M{)3EA&NS@1yw'O^0PGy*a]nÕ/;`RBНC#/;X)>/ 8Uh1KiyT5:;OaҲ \6CCX 򅶚c$՟Ve(7q]GX_X0;rM@_B8Ƈ4锠].+I᳋R"qҮdӲ#UMw*2+6ehunK.sfF]Lρ᭖^r~mЍCN} -p2I5.2ΈOvgIitMȈ_kڍkӯ 1˛(n"}!%mk@Q#d=,S-oʳ2`YpYd)PyM* WmtRM`T⟏R;zA-& *8KCӈޘM4jrz5&[c>DN}]ءl`Oz˗I.%P8o& t1kȊJܧ9ZK-I"$#}=!5t6Cݔ&&ɜLV^G{V ˯6Oz97Wx*'?\ΆF%.L"ԜH5^~!tv%q])7P}9a⪆3$F>F ,ҡqj}hhэOA~zd<?4- J'xs$ԅ;p2Χ aszŻ@GAdD5tɋ辖n$C NlʲU`FsK񸑶z e=>SkpbPMrϻAőUZ8>QmnD+k([vg@Bޔ+G8Ji2>eY#ٷ/*Kwm}iO6!IET s/9 ͍lPg$`x6+)XvO.0"9 ضX[|YFX̅eLR~֕oCURaz[t9慊5LQ|\NFrU @;5E6^jd4hqдH AJ/nk[qs?bo}uaG\tbrj(5Y'}`{WK=5znܯS3mwg \m6.%kq O.f/l/h\9azVDԲa֝A (A`JVoOg0)bY`;ՉI؜VƢ5`43lc_)h&QےAtAD}:Y/ R=@61\Z\aJ 'K@Z'pH XpܟXG}X8+( +' [favQNer3Ír2 DnOlɱ|j4;rQ_נ)ÇFҢk$ǙHȭt)9$k~24'g-ZG L4tC˫'XT(|6`q^ ,ѱ)n[_FfnAbWUXkn=0"OEI0lzm T9Xmb|iU\PGZ6\k'j!0J_*va6e.cȾ8qja^C%"Hbm¨}{vDvpaѡo! PQea֜wOo  WY{ rӓu~4Zę K::/􄙱`˼pDnnm[:"[ :*U7k.N+w{?1lW_ ![L>m6'TӐh݃vc#?W?(e:1x\-nq,+c̉x4o@t x65P(6-(;BG{wԄB塛`J(!^Ďmgʟ7%QR(P>&fY)?\etDG6!xIC#,~7$k ţ\b|t^Fϓb&ڶn&=ҎoRS~`ZAZAfn)K$UXbQ8Q, ~p%cc6;`q }%M" iEU1;R*D,))B6jJ|h)gWi)yV.d.'Xq4J_CIqpÜ (;i+h}Tn%>I*wyyQgsM)4/n]7ٽ/ho9,uL-Hb/]>Eaԇg>n!̿31vŔgsCss:ٍۇ^G G'èL'6*A*Cڿѻu@yI Pzd^rϻGAL2!|b}Ac>7P7]nBbX )88]pp~ЄE馇J [u0%T+mTʭFn cW&nS ^8"Ӟ3O<磸W(/р3.)Ki(el ݌E o2RxJZw E`-al/!YKxFdܬ5ߝku fgL-1;`r}=F8J$B.=g$i7Ip6VNu;p59j)f́Cع=jci?Evtz}HoW6$Z<40M){hxdZe>5k;trLw˘UE } f EubeXe8E5ad}8'@>IjVŹ|etsC󒉮%)`n!OLԑ{ ؖZ݌O4o<;t9Ђ+=#V, Gx5<:ےo޵RhOpW* CG;׿a\P4ɒ`MDm<}:'.uN.ؿqQ{r G}\2߿UJW11YT[yɡūS%DžMߒL^(DD!+=VYAÚzfO6EyO fae$鸬aWK%ccf!qt2_ֈWRߧ .<%𗜣k Fä\OV9cPEOnɴ%r ,Ç ,)ǒܢO=yX:Vlu4}¿[}!7n3NoG|OB < GdvC%%wRA:&XN|2Un_t40T"&qw,e[6BE=^&NvNtŋ$D!jh)gچم{a^ 82ltD)ͰtW_\ZY$ = ɲ ~;wזVy-H00mNo^_Lc޽9"yv'²cCP=}Mr46z@XO+} {5 &vst;NAIyv.I~=;2? tA"OT^RWq; <Fm+J7o 9{ܿ 1rH3@*&[ gChd8)eʧg˼BD09|2s|:Y?\-r󱺐."4BF)I2A]Ajn CG X$w?;Q\)m0ey[=FDL,ak.`/ qc?P|2VS9Aށ[]|Rn܂Q19 66Tf."_3eeܓ <#Y}`LE{0-,E9Ϥ=#R<(PX02k{olHoӤz~"U_93DM$ +ULpฃ#<m89DVORNq ugY +_3e'64hau)BsM(  O =n(yO9~Rɱ:A #0 q| ,x4Ӓ SYW;y6Ǽ19t]{{k/v2IJ޳:~=ɉ*!!ŒN<%W?m{ - [ rqHNLԍiߺz ,ubQ=iV$=?jd} ;.?_%R>it.}Vp~w/2SDfM17+]*ku≯^+YL4|C($F5qeGj[Ui;$l1w/ ՍIiʜNƝ0DK}'ۺiS$so:M,|AopBѝoL:-V:%DqU;F;\~0MUR_*@PD ä~iu6t%lw((&zdf_2 NU}NԽ`C,Kk8qL7WW`5")=)xeJ EP!(5#"Գ4` ?"q- p& 'L. <}aϱYdIAp 'lh'/-!eWU_z ab3x/̯^` tdd٫RL@P 5n]֐K#dfX$ꑦ>׺G3N.D9 ?-H /}% nh^cڏh]zwMp7^3Y˽|!*W%2kw#oN}faڰlC&F &ɑIbʌw*v A9 üѨ+OEӤ lhMzM滂Ҥ%Ez%`ͩWGlޤGʈ8Dpq:5| 0]"c)߾XYtn]k<LJ6@R0RX*p)/!TviU=c_7?ƖnT{aWj+& psɆhfڷ*`r25)GA43Fkv 1iK=H2x/$Dv3"&@σav2g`Sq-+cL0sw=Um8q@ +=S9-y_ahi4 ޿N4mq vCpyYM`=XBy%3 /#3r5svj9< 7$ $C!Ӆ1* *ˣl2lw [P霉N-nLqj `&P{_,M鎀W<9v ;X)uqVh`bdg@II |`L=KpX̏LL)-BAM'4D$',SXQ:㺘 P(4G۫[jLxTX6ζG^? .aFxFLʗ(6#opԤѼR4 _tUL(B+u31ynF#({p YZQa:o"1AHZ뉆[-HDX1ѯH򮉰@FtB$(MPdR eΰ^r> {b4"2ᣳ ff݀&+>@Ni .SH&|~#! b;5R ƚ#0mzՇhJGƧU}ܐZ`Q͘ +_D1t-N(er.K,{%pz- 5ĺVGV`Oq?Hޚ3xެ4`q|3}~,uJ^Ն9Tv]֐au,VSOI↣ b*7Cݰs Bmm#(4פ$;E~' W4JOv 4ioj K^ղ_7acp0Jg@:NΆv^\0 KbDu"O.m a!S"qzO` 6|QFn-3Zc[J޿BDZ+FX~ƬAM1;`[- [MRCο(se`儽g493]&]YH@Ze3wKa ~ÖsH묅٣*~ |W=/a=Z# uAFdA@ߨt=dܩ$D"(QMJ"huO)4j.!|D &\J˃ B\ZVh d~g}RLQ.8i:D'(d3c0%pDV>$oK0gr X8$Ue,*X3 Oq(L&|s 8)Ƃ rM423e?*z{۝fHIhFl~lCLOuGQ'o'3Dj\Xp'] .SwN$vKS)@nxvh#m\e}TȬa{ڄ[\`]S^{,D20 nn[ N9q?GR(鵨,;=!EyV%) U pyJfX=/^̙Rk{[eEɏz7g P6{Qk:Xy7ìB⦕nS 4R@[uY uXS{A-@,rb^NqT+6;ˉ=pfAw0lV wceZP;'q&ZA^:Uin}".CTؙ*T4Q?~(u܁AhmM߷:8 06ꚳՈNnɤYY_aBӖ`GOb*i <%.Ťny^/g[ I;g> 18dZuP 2j!;|)c5ڞ'3>Š/ivZ&{vw7& + _jX T+Q'o%ḱ$Bb:<łAw6(ַQKGV/lrбcZjΉh\cF֬NĴq"G]#?OO%P 4| 5Çw'tXWdKB'lrU -Aj'PWF{.LCCpi !$/vӸ<1F1ǽ+{;z.ŒCM]Q3Yr aP#ֹ 8U#'o;KALPa5}&6{,i|T C'I| ־as&8.C2s碌=(ÃXڬ8C߬p^:x-ejQ k3(|- \' Nr4:o0a`rzǤ-Qgfb1W5jK5/ur/(h UȔ8XSPU$ӘАW3tJKđ_> ho$^c* {v+Gf}#/TDV3 φ dŞA&4uݦ'Mb9rLjB)<T쾫sgrH|RSc- T>7ߘ{cä XgԭD#g [[%3󻕗PsQF΄%>meTcE-c܉ 5H j! @fc#z+tE P`EF;VPTiUH\N >]"O )hA&Ir'7Ө*_l6Rh=;n'=Ӆb>kG$aB w1F(n$M&BLZrCDHȸ@Oׅ]Blzߵ$*8BuMd.S9sܓp_jC1HߺnOx=sIe}~^Yf: (Z*@9E3Z/#lQ^h08 /++ӋNb76PuDC;C3/OV./ҀUm4LGh;Qx)=A`~E6gwJdثTԡ#w܅`nǴHSe#uw#a}{|,!D/3dkgڪ>/q &V9SUZewԞQ;\%*G•ʞFۙ7*5U_7[}Juo* f#`I-\MPvsCAvYFG-_A?GtܮIM3? L .:8Ε`\nDV@ 2 Ě#9J;N>~:zA !P:n!Z@Mԥ= P=6ҫ?.Gځ3Z)Pth o նJ>^ RV;"g@!ٌ>5v+$[6\:3ඹboSPI^R.e`7hsp[x~9xXKNY=.OsȉڃU\ * ܨ M* 9>q4BH b"cXATO!H)rm6B3 _)"0?=ؒ2kI݇ zԫ9s |ڠ&&e>t~?_7!"~IB*G6Gyti97y\}eP Tɲ9#tZK$NW_n8vcYs c%h^ 7mvbгRkEAo# CfBIu3ۇɝ$8 y7 RzA_Is=J)Z~pe}霧SV5jE+=,Fů0$Ǵ+ze4ݑϼO`ݭFV 1SNx~K'+Oz^u@xp sYBΌpf.ϰ.irox&w-;c@S w):F[s^N(yIeeXy$Ej4n|o06ӅKeNj"z9زO0w#+-pO@ O)]@Vny 骁_: P·ܨ9faE#gdb@N<+HfPȴl鱯[2RYCMW S|rg} d.;۱=8 iq&آOn(][Lf}糣ZHO'q{-ssQ=ȼj,ڼtЗ&0u<51EOƔFPg-I)e}6YR ˸Jjr۷z(KL햾hG\̈ ^RJZUJ2\&;mC8nFTt"m=~`J&o;Gr5^b_oWZB3on ALAx/ ;9֖^u[ZΗVDudgU!Cl4n<4R?1OS[^Vܝw4zwptZXnOqZᐎ{/޳]\9l&_.:,(0uB2}U@,]h%P n|4es%ś8}Tw7[{x`|SivpF6;BjUii֖eīWDI P)1?'d abgFMMoC6rRN4/ m :M3 t.cI vkK?-cU 6sP-ìz;6H2 a :uc DhdHuu'( IN9h\)}VC|r̵ є\}& QqCSu} F9hBW*Rb\mF։wT*~_ª$L>WDy1xFf)ot3@zfnYZy fҧh@ͽ$cLs^,sUd.H&U`oL!NV39F/yl;`~RåH1k!{з8ƀ~;W_rPuB2=8R%TYt,lJlt HEmq T3" 򖶃H5*pZ#fSy0܈HT+S⾄X s:l%f+LajS(6oCLZv.m%QhMnfЭ{L:TLڿӖwds`:b탿- n]OȲeLgf_* /T@IոnF]4Әz{Εy˔ȳ -Cow_洸m@F@zefӨj\yR%JVBP$WҥCK ڇŶ [A_t{jJ%].]*bByXaJil?+n+1.8`-SH~1A&Wleۉ[S]M1#_OНRq[']&1?B18-))j4WvHsw-/* ZO@=?̒'f{cA }kmY(u!N6ߟ>eAmlqڭthם1?Q16#xnx2=. D (fY6YzG 4Nq+_G< 2' *7 =oN+4_K*8sØd0YM%.#Emd<bqݷ 0,U?oIV" HnI^F[~j>M"A N{vB m֝y6gsZiwHՔ2Иo؀pUJ/ JZVq>i7[UdX-6/6-LV[q)34`ers%X$k[ h%`ŋ&¤{!5 q̚ {205'{q?-⹞z cUߌ̴]؜)uc{ Ț{HNXZi~Ѷ$jg~N D'̣5Ryz^n`yH^Y1ZgWd%}Ԯ2WUJ%c#:!eNZdc̭ K{Nу7l^Kmn; S:=iQTol h&/֘owa+VXD@z,>y@b˳a:U],[}iTo'/ϳ0Qug!> !*G JvЛ 3 ꠙ5l/S2Ӡ(05 Fd yXjpC)vyz2$zn Gb>x2,!MGXI!̨T@H ʰDe6R砳~NLV8,'*`׭p4O"侻" mbHvG"^ȧ'q[mtՒ v#;\OIg$egZ\N⮴zithbS;;^G_3vߋm6Ըn 5k9 a;%ɛyY<a91?Am+Fи-/""w1lNm%3o WV $~_0֑U^([r~$~+=/id8ӖJZ+}=#Yl'~X78]J(I}/yzYR {zw X6d $e AP!$qZJXf; bEg4v НE). :[&iNLzК͏1 E ,\W3t4(;  ^H<,vgG:K6e`eǝ-}7M*/4^G$'=ʎB# }tSc ,}r84hlVи!C^7ǭQ(V/(VLJ흔^w#]KkWŖ9j&%RXnMLl,V\&:gEi"4 Ցpi\0෠ߢ1?Qgqidum$KQu8/S n'fa~1w/ՓbS#kRS"R>}BB-)o;kl#OTㅢ`. N% 'q7X[.k.7;1M1(/={r͑1_6UlJܦk*39ALhftHz"%44VXq[L)2.խ1?(_+^ <+'g=M9As2I{ǖ$Ay'd3' 3/l8wˡL{hVSc} fi-F +줲xAﴧTvTW7 Ez8-ūjV5CA6?c[AU(ޜŇci\Ij<\CQ?4s]z-꾵}Kc4L3q2s8`%)%V8ϵ3,pa1?D[Yٻz#瘰RPPghݺՈfa1c~&ytU}78Ѫy_g'}<"⯖2aw&`u7 ևe#m~I6C)O O:W}kňo 8yG*gEQm,^˰;Z뗁'ѽgNF$ZOSJjkzK؞P{gxlC @q4tW wkqwk!ʣ1?VyF̆7F% }ǸU}v,q+$//evʬ9[lWJާI%pjgb3xmRsQ5ba ND ֫TӺ, \xAcQ5W_/XJi٣/֗ѯ'ƩR tI F,eu׉jV|3]b> j'Vﻓ']Ⱦ:2d|r7-fWZ6b~M>Zn5ӕПq1(e[->냫j(FN|ӖҸRQ'dR1Wfz+c@3Uzrg[LPa4%p+sd_? x+`WbΊXF4|a0{Q'Z q-Fکa;IjKj2ha[s_m˔Ms9$C/X 'lCc۳R˲,+cH_2J tlW'P*HG8v-^cnR:&jٹ& 07'+vږŷdހx;RR&~˦F&j{Ac6W^ZѹZDl LF3{!y<6#I" <;Re#՞탫HԿ8 {svsK#$fomΈ|_#Ǐ;[TS@V`n2֛KeҤ\CQq(>}?󇝌&x+bq1 l: 9PBmgY {kO'ehlK-=j]kq}dEyO,Ǵ2y7tN3U њ";m[!QbC<-v=d2q<5ȩO0m D%UMVa]`jw5/ꞷ;^2ׯ"9JY7L<&P=aMě{U3iL4}h)c'{AN=Ӂ/xݳm=z}igө]gM02Ɣ? '*a$Yfq[%ۯ 3U 'ħqMkfx)>[,!}ΛHԨQY_.u"'}n-4Ce?-m $Nś8y-UG1?Dh7 eOknq@éx;)8qgxO_?;,?+}ii\  K\VQ)57k?D%S U)ƢiM!zuLX]7cgFKv6x~Soԅ orEmif3ř:YW᭔%A1}X=[\NN`rMgpsMq&+ou?al]Feb,n Zxz7]'f`|P烑gܙ0 &/v*_/3ڒb#3fϑon]H${krdΉXҎ⓰04'0 VD/_I ;l݄NdO6d7\Ѱ# (5n&ډ'ildI1,+Ukd5Eِv0:|@e,|TӸ[ڵ)f%-734^OFi8m;hټT2\ ~]dW/|A Uh$/J4s}p;Zv%Oi81}j k>*Wfa@_3(K9_lq;C7=mF B{PP ]5J ,`* 5T!KIbˢVuej5kW nYNęnfv:7f9bYA7w6Z8=U&2-K0q")+⺰.Mǘ SP3[`F-G&mԂv/tN8öz4T\FG4WM[';>vUQ*R-^{|L)xH5rp#iѷS4EȀvUɥ0LQuƶ͈:44!S1 ;,Cʶ~e+eOeD̅Q^~"en&FՊR ǞJ4wYLhIjD2}Vj{Gw%/%ol9f V dO؁ [kCb>p}/a)$CSYZ"ݼkLJq}R5!؄nn'ԪJU)Q=HUqz^LljozAL$ݸK=e߃wzv>fjlRn\mڎvv+2^mw1 >lRT:]{ZϭM4K2J7}~EN)Kcm``aw u-&AM`,I̅س f{W /81-j*dsJ+ݶ~ i7|U^D+\yT'_ǹuE "l5G+CL)=nrZl XkeZ؞(!{\8蠔jN>71 hoHa_zHex3C<3iVxW掞\(ݹ/ˢ3%h!g֌6u }# eJA>^F[+^'8&=릨uJ4a"t`"-]^E1oD6,ރޖpURZzMJ+Yd#i\7m~P~;.)]0ƴ\ȴi}xM[b՗x1}̔2oȓ4q . H5u 6I7`7]07`7R!ې6<јMY؂@7 i&~ƶNj*+|Z`+EelAL[öhV_HyI Լ!j>Ds"0b96>j2$ϳI*aSWc;m2l JJJ*)4y 1M_ʈN!HHեD2[`\aN{X,CaB6Ɩ%OI0n:Sio !k:]%a-ZY9%a5) k03Fլmi0b)Z@炈bhYs %*$h3 9tk~ K E'VPh͎-Ԇ3HRΰ [اIQ`AYxhl:F{5n[X(#"f6#isOR1l"?5K\cTV}4Yk8qAW)mudm3l>-YA|ĹD"UMJgR0k=m?;\[xf+tG]PSmnv{[7#(F\Xuc~a|:Nx$l{FxH7;f"Լ9i_+`\Khzak# ȏ(cwώwe5iucW^NV?B&(]iA2cZq;.ϰD?ش\bODsY'/Oc//v3FoM+ޓ#vY'g{q.xzlDyߛDCKJp);Q؎&DF@ p+" gKOplY:^sY0KQai|7=嫒]AJ̈́ %I8К'yߙ(+?e2"a0H1 Z%Ul(S+ݬ7E7FN IeYw1o;YGu ܇x8f8s4n6V%x> \^?r1'ƚ. +fVPg%Oxw@-'qʼn#Z@ E(|mGkކ$WmAV,NEErwչ V (}E #"X-ל~MNPSgr+EtE|+ 칗(d"̧xϧ*-ഴBxIoGHr3V]Yr&ڻҎJKJI7*kJ`0ݓ)D~^G1r' oS¾,&Xyss4pT{5KG%h7 Zoyo>K$i];QkeMD`9\v*-8M)7F0eͧXֺ/}G^)Wat25LS1g5[)oŢ'̏ 8]L1A=+-OK+^wĭ䎱,lr'ocE1eKm]׳Ҵc[t\uƮ;ǬÇOs zo67?Wv]·dm:®.' E:QëN͂Cbwo7>rv"` ([0 vhnj)bfI%rG%>1~uӘ0bR0\VKgƣ0j;H'hPUzλeR8v0F`pvB0vY+a[T wjO2+nBմ+qަ; '#+ُ5xݞ{oܴl4g;Jr;9cZXawʀ/'&i-hܾ>qԧҊK*Lx= hY 2I˞"[;nSp%\ZmZLG/+$J[Rm"YӅH%X䭎%ouV<Ὥq B6ON4j1`\8ܰ,a `|"* j< LX]2 8c;9 YWd|VRBê`,JK iÓq'}9d^M{3]U.5Eػԯp}xvXcm)Yp5 iR6ԴìwVc߷R} ̲>kȊ-dNid혌 1 2u񦢯D*ᨥ ׵Tw~l8 K1-[DlvFH=gЂ%Z;`Ԓ;oܾoػHL_GE4]9eo}(ؓ Ol..r<jqj4,kYR9gz SPby7|ޙ5<ӗ3}%c\1V:}˅&Z#*aoޅU4NǫN,׽8mR'Bb'~Ȭ_9?)#O2Q\n@N6:Cc aߓ 8uc!CAq%0 NVpbJLxy$iƮ^ϓ o*II۷:xF塝&=cUy1?1Q{U ȡ[' #rpbs;uy_?i#90'(]y*( j,ۺrcn/w|j=V4pO&M7K??NUido0m?\T]]`Tg6M}6. 4\|c+l1'@Ʃ.}L0QhMWH9&myͮxόv* ߹A~p$㣕e}yg) :Ԛ(\x|CrLQqj>ΥR`mr[,pg7@oc)+4ѲM"Ou?F`SQ>ArTjkpVJ3favO8@]-:貞4[xG.o>^@N ܥyub%]{o(k'~!胤,pr᭘bR=ck*73O' 8NIVm~cמmʑ';Siث mhH%1j{v'&+LCoALo4vE B7G=%nSv ʳZ;:C 2rWJ^ɣy51oAh}=ζׇqrg֡-mԺׇue@K qyO~ PlRA'Uva{(lŔuz7);I^s5G@֊gT2(Ii8mFb^1~Xkcλ|{Ug pd ;|= bp57eg`YƮ=P88'M',26]%mYIJ/~N-VZYDPsflfq:zxŶN:iؕge]=,)730XeڼzrĪ$܆1>Y*{<d;3+l,qn5BoVLqjϥ9N<{7)^bd̒[Ʉ'8vM&wD{|b"52QVvX9??_].1>1 5Bc*;nƇ'nXY5c<: q hzV\[{2 k YlSc5,oz`Ƽ*:hz3!3?ONᏝso;6,LȽ & X9k/cW3m(M}p^xm[[~ %$֌g_7HXOnnnqr67S9%+ =RW;W?QG-E7e&V>c}~4 :鄣K^aa'7=#-&pmZM+Ӂ!'/73íH.CWBp.|%uC R?jߒ܂9K= [ <ҋ{,Lgaof:>i<_q2^ܬ9nާ_SMGNáa M%DRkI\kcS7v# v4޹Gxry Wߐ>Γ/5k3z"k7K?Otf#ûZyُ(Yŭ 5lbb- ^WKB;F '8ߜ_dF4< /w6 IyWb+OmN31m.h. j-Yi<&ŀq3;NC+qܕL8w]`ޘ+^;)GX Yn]gb9#⎇1#*3j}][J~GjyREH;WKv}.q$gT{ 䌶y&mߥaO)<_=P]n`عS!w-|A7۸0.xȅPL?GQÌT`߷"~*o&r5rVcs\Uil/ۧ=0xT>ys<\EՏ50quqpFQk_}oԫfHw`Zx`A0@n30?qٯ9&|C0@w|mor伸n̍[kLk2d4W42j>ݱH]:2w*g[u2pn3Wsu(~{[hu/s0L {6G1g<T4D0&bRGh<-G3v9][6~}\f/DŠ B/rM *KE,h!$ԨWvI~UzEŹ&O@j2ߏ%̧isVCaY*>b~ڕfFF7v5~[=j~\o"  tj#*̜z)T;aE?h0Y AbkMN^u1tduѻqtbsYʃ7s@7BQUpm]~mqWol>&/gA4X>B:cƄ1?1贻7T(dRʇuCC  -!hܼS" *d<<ޛN'hoꊾQ`9I{Stك1 럪Cw.7 *6JpQ"FʸÌ*{Tp<+s9QtU[y%SYkN.gq5'-m~Nߓ܂+<vQf@E7_jƝL|l餳11x@nj39ʨ-3˿>eRՍ? (<";Ff'E;M{gsP)(ʪW%{ѤS1y)&h6]۾O:x(LbWOM x=wbs8#y5(&0o˽#}zc8M}2ii SjWs҇3Qi+tSh:ط\S#-`tZp>(<* T/wYK[WCZ_ukE`?/?G]_ g} WzU:; z|CՂN.̜ɿX"BQm%:hqt(N0>ၲwΕLؗ D6߃qzF*w-r3m_HHeIe~3b~b1=\V*G?!iS򐳙sS#z`ŎQ wri1s8(14dʱlCf?>:je/o^6 =RcR{z%+t%;~q;LJm򙾋IGiK3hp u"T[r}:8y=ۮлvOS:OS:ͧ1N<2\]V3N:fAoRMX->.OGMܒ;a^G@suSZ"m-ZNe2'":[M-T-ᲄE?&;6?mlc~%+/Y뗌FQ1fc컡 GŨ3aRpSg ̾ ŸL^hз=sx4NOc9f0{kA`|Dmȷ]0nhtzr6it|*$ks<,اYw>=*|{Xb/np&_sqtRhd7nUb<ƺi%5_3HV>~rt皱,%jϒ99OC+>? α 6H@csaɹ{ާ g q'2p } [.9[2F5ޠ9]m G~91yٺ1?q.I ;twv%Μ=E46ېϯ4pC+,ibN (A6Nc~l_]gsyڡ32۵1&^L ipӌ[dr ps_u43l*kgtUhc0'cЌq_b+x>oA{ jkvȟ`t$+G)YXY唚SHj+Z~u%WGDw3կ8lc~ .j)[v4® ^c1)o?KjQqKN CqXSn Gܝo}ӲlN{e~rKIL/* QA'͟<7noԥWY^ҫ?iCw{0t#{v%|)J+6>Lj>Y0I5O5\H)in~.ga~gp:mM6H㍣ 89>^5f7+f-FD!VҞme 9]w Rn@+s}J7s /E[Pt'vb[="y&5 U}Ś,tSdz*z~̭N܇W=؝r^pw/Y -K^SX3 $O9!`8؝ 8jAg211bܺF3-͞x =:uOuO쨖Q5^0O1qc<_Vٝl!xCsmEQɣfOOE;Pqb<"23Y=/#|tA7wN81asXVlk&1 ~r(D{ {tssmkLgr#Z|_h_ 1NKCt,Kjpey Ztj]zjɈ':-Gv3@wBAzSI!7~|؁x[ڜJ!<'2>qtXc]8gܭ6o޹^}C) ӊO-/WkؐC=Vzz,QRuYTq1-ܨ-Ƭ:Snzdn?7/Pk7Od2:'=~'ƔC#bSZJǜ+}RØv7NNwMwJ15qjNc)O zGU{ )a^Op v\{=JtS]d¢G뒻{0n5':O06IMa]xݿt{81$'Ε>8αIMج_.lJXp/VKƾ_.WG2ʞ_j&s;}3i`xZA+6-ؘżn/ҳˌ[~|4"YMB/2 sosog8|& (1?A-zqsM\joSyܛ糖jg~^*S?C 6Nb?,OxP]8x.~nZa0wk;6:#uN:vtQk'ʱ" oT f]'҉A9 W>5szsg +dD&4sx.\{Bscc![{9u7|~ &>X_v/TxkJs},*49+&w'[_<UwkboJHa .ƌss_>#}㲧? b'0}ĜR;8ׯi Gj+PTGϖ$b[hFEL>é挹7mIWmآ[U}=[BBs6?p@JjFELqj7vM|*d >rj/|؛''g{p{3̹8>)P n,\F>@~NͬRJjc]RT8Ϛ'Wi +$OeɽfUqsg1AuI7tŘ@K=}mWڳ3++/cTMS̨?;-Dn_M8T4 9f<>s3]8&/e/z_ n9{# (bקP2q܄ n3&S)w'ЕۧSP&7FV#E5' WO8!8͐ ` ;9W<9}6Zg79䧷ߛa-jSawYȇP]8қvn~/lp2\Q{d*T'Ɵl$fA}b?&*uzW\[c6;+mo"S#6On^m+Ԗ YC[>Qr>:p&zeCb*ߦKf XC&lImᶊ@'XΟ`&Sp~Y >>R) sUP'B[ڂ .#C}#UrB̗0?6x'gxZ ysrj:bwIvov2stͶVi =dCOQ3漱DBQWmZ_u\m5vc-ʓssbp&lyN}9IY#|_zG5̞dֆ_ /COբܱ k88-ɜ[ͫ}}$fx3zvoi#0(sC6<Jy[՛1?qT0ǫ|Ě-c=ggY)m2\{t8߁-jt\,GcDq}vڻ ܻMfv\ ΋S g){j\;B@>ԏhh,}4 9XNE!tsE&z9Vqr{2߂J%j !{x[m৊;'ꃓ.󜌓4l3<Z@˖ٺ?wctGj kK:5f85l [һqTR;a8g{j~~:T=TL >_?8y֯j{:1?-by+ˢVnn(d~n0^̠N] Z a~9|Da)ߺ? 3A;YarI8}~DRwT~/PzN{2BԨi=w;5wHIg׬,'C*jʠqK~|&qmq=v}7S*eY㑼 L?[hNkzKp/Ǣ&vl1;D|xg؝r~Ń ǫ홄[Ic:j<'Y0gE٨͔퀴!NU5ͩ0 J g0Q> % ݀G1/\ե6 w)µ~7aԾ 1ffEov|=mb xBb1sqL<#v}zx^3Dv|cJ)Jng<'~5rsʙgS8C9paP[S{\jo}\N)k:݉0qa3-l żʄoԕ6^\:71㓺K6? ϳ1Ȃ:$0^?T`: ¾T++~W-sn-lw6~gƟ,ij%wldLC 째G6ĿES׶pG柷iaɨ{og 8a]˕mrhbqS@qF3˽6;1 *MŤ|]CeW#|sf@'Tf'UIO3-35R{ J=ޭՕpj < [(銨VW|\2έmV tmXd7~}XEQvsob`Wcco"aPxƝdu^ZqZԸwƉd? txΰ+v[:Wmp%iP8'=uC]˱n†oYp3;mF PoL/ݕp~ ˓'R^Sͩ[dBЊlc~j]Ry|PM\طq'_M*ל`?8ퟶ „] 즓^N\՜0?A7=y_{N9a2tzɆ0ZLmhF]/?63x)^m~>.wIIW_*;h d<?%RR/" Ocv3ey;c3{ol?_Uev̜>S;/jփƹsfrr*}-v'U j( "\apuw 1ͽߛgssuTƮzRBz:u)f8WD{LJsA ŃLҗ6Nw_}ᇵWN\c~dtTlC.Bcpܤ%-}gI$߷sj؆WKS5gRg[#?u'ž4UJޕCL|RA\9sȤ>3{Cz]ήo,ӫe{~[P]O1%}n;6JfKx@ bzIq18Oo߄M{mǙ6<1cg _S+:O fo}N_+)_f?/qtզ#0{MV#Kq{ 7c' Sy#,|(d  1aA]jjfޭ^ ^X>Cs=}1Gx @aQM3;4i+ 3[G`wydcO6tbω?GD[bBߔo'{<#|7κ{^c߂_53uv}\F(nuN}w]#=b^Ң"/hQصvn"&|E4?jp>?\7NfnCyO gsa.UVM'b CS1r+}ptXoYGAOz1;h: q8O9TKa1B_齶e3 Lšk6;<tgS>1Ϡ-L3~8UB{zX^Iî,샒Hƪ{}\ĔDJ50?1jTT6mg240֢­}SoN:XOsX7ysu6NS1M-*:[,f}РNx? c~Dp_vv}݄nZӑ(oF-OƮ-~318F)77wvF87tzێ3 mev⡠V|x"_L8tla!o4}&0Kx;1/bK'Pxzs*S;,wR\ 'QY/c:uY/~N_5>]Ѕ3Փ̧zLlazaCQӳV~lL8cD1;u}Nê Od$ c~xhzx6͸ ϏqH?ٖTcFɟxgrlzYIXrkn|;s| aВ;8cnλD{rBukkꨜ ݕs~҃*3ՒQ'U,Ol:8aA;NKa.KLWθYu% OHt{% 9vt1'LB7.@wjTFBV[ޏ܉MיWTt8o%΄"Ī`oI j/"v5m$dݵmw9>t gtS^!LݮϠJGN)Za.[0lfQw>BzY'L;8;tba K!׽IM]ZaWlӳ;˵ԫ7R3]KMv8oZ/ߴ|Қ=6_.e@O꡿p3oUxę!Xb<[{;4yƤs9A3,Aߕa0pLʜ.򭅣ߟ~o?)_s{Χgz8<)5=Hڡң+<+{Ւu͙ؿ8AQ?!Fi/hpr7<+bVd͍ͩh5ezۍd!7`/oJ>;w⁏<cޜl.qZN,sG K(cuYP=0;:m-QIwdn jL'p/OcՇ[ƽ;V#*ǂUk8Y ĝqPy>aV8褰9LRu4Ig Or~eXּ @W)>- 63ɰ74cW[߅Q 'wI't!oSMP]'msG vmp~9{΂[rrp?2)шMy=3=iT3w8opSy5]ww^.ry/&Hn㭔OJ̹~5c.QTx' NuLxB?xFS c۔s Mj|G M19وl]1:Q XaT]r3=5am {o ;ZKi0}~Yxy㟴1g22F歨pvT3y's0Av{>fkӓ b> kN0p*M'.lń Ȋ0cvpvkwXot?]*wvowE']Hő6S\(b J|dϱj%]Wt') ܿ3UNP%y9 ۞;>ɕu+i bwrФFx}o{@d-j~T0yn_+?i$ yq\IXIHᝓV[S΋TpxlȣK8hbE]ɜO4q OjIL6NQľo~|;Ou,:b c㜰6ѷ~iXC ~5ʸ sIJ]KR>z4mQ3]'WM5.ɸAef?BÈ0=EIu%⵺OU 3%׃ 5Mܷ Qmbo-#EA8;Ga32hTz~| JKAVb96ռ~;vJK٨2nM 0'."׊Xپ%w2'O\[yjijaL pnב.^FaJn&*5Wq7]wC?w |Lwғy_:lW[d 9=8ݴbm<6aRO aUǻ/~CT'o0vz*7+ o_| 6^c]ٍQ'1MTNpß/s=+gpjm<'N:%0=;|c TM “miE?Gc.Yhix7i3nG'l)!ݭ~S?t]Jﱛ'Tjٟ缛2lqΫ0wmQaܮ**O9Ppэ}d"G8{ m=CS STD} ~p-b˧(78 ]y>|cT;5fAy<1 b[c$+U9Nu}bOf|x*"3gr.^KYdᝪ'x(ӄ}kdPYIk7jLxֽ(zcިq j(UҴbI8& gsrN37 9Ox\#¤~ϟ#Bϧcd 9}Ml5)a7I m-P-շ}.|cZ8ɈV Px8\o[Pi\ۧ>Y]_)"| +Dsd&t 4qe`D'' 4pL΂$O0+tWu=U쐀_ˬٓ/*R]Holߗ#3SI/sw{t Z㽁;m5N`@8 wbz1?10Mv@5>8.Ԙ ]}SF[P)෎n}Y,UkaL*י8Tu*rw:[+N./ ыVO iSNd/8jA*FZԂݏNV3'c~ifruk9e4Y$y#Oy;\s8:t߶13G-Ʈ8L`SP8?ڪVp@$IQ3uÓ=~??uVLP]Zs#RsS1΅K "qSUnT5>dS;{靱qN h= >z+WncنUlqjCNc Ѣ3g!G4'#3SSvf5POZ]ΞvBkW}8br5|Pa6&nc V(O#[A8;gy1 zr_ݐOPJZu\wֵp+nqcĹ>NLjNi6^vJ㫺 \Q4M\N84ζFXP#no8u«Ĥo1Dc3sj~G+*>Ǚ|]mӷdu4c7ޤ|}KN|Sʕx(҄Ugdm*£^W/9Pmy; *^7nq:lee}O^P#-iYW6e]~aO볰98~FeyՅ:2\X&MbaVG酎#ʓdbL.Oci6=j1o)YmƮ-vsusVۃ~|Ǭ4N=4YҸuV4`wI?<'aϣ1(3 3 &D1l^-,0iʁ~D)E9 ;<<̧ޙ4=tg.Դ+6\?K7vgrKֽ%;̅R4GǬgURݼ'/`}T;9MnQ>k7uKp|UF©ũv_Dsk7Չ{C]/4uj?I;Qg7O޻"1Aեˋ0?NmR{ 2К{BxQWYOb=9Qhx#|d7Ra㤛3skjlK7;KC/+q5'*YDOj-]a$!쓲ru%JvArH$#o|hףJa׃w 8y[N*V}=o|J*zJPܕ\O $]Jpx+-͗[g6o!ַF#61ꇳ7"xr~7fӿuyM;' φS7ؽؠ!wQZx0d]'t|R=l֍ϚV谘}XSت0Tr g([]l\6UQ 2|N9'zӔ3fAQ@K7T(fĠ:}qW9ʳ1Gz%elt՚HV9.oc瘎5/}V w6kLa~é|HwxGչ(rÐI ƒK94򲞱lSMf ϏW.)osө;br |PüjOΧL&'!hcñrG؆9hGcǷG7nޚ>{IIƙ4OnV1)H^2x{YWSvػ'l?)N_O~족=4V%Ё3؆5;{{v(м]iEVZ:mEJL{r6J3TMvc:2㼄s95MbϏG7a~a/\{syg~KI%|_JkaWJʖfgR{Zfs`*ܦWt'x 2|4tQZ#s%1;~UNQ>- aݘSUuR(vnщoI7`E*[-=t18}-7XxvxRӛ2U=\_g}#iq+{Zc;ӸC']~oco>opjd& Jʝi ^mNySb=7IoqkU;cUL>˜/%sB;+կpو{]WmJ|Ja^;˕>B6Hz:<ٌnN]˙Rת[uݧ/Oo5a-ܨfMȩNg_Vk'wQOIxyLL"v=V^R<;}G}Kt^ch\5' Tuw +Ig8|&={1eex$sekd9ZsTB̿>6}jrXe^Ӆr%Y9}?!CN"'pc[NNGT<ܘ>ΙsO-ǡe@TȄEp;Uܳx Km zwgE*U`G}۩ɗ*UU'W'\rR7}ިKi(} RDm:1@+D+pK((v Czql_nj+pNӝ k8ʺ" Z:wluj*i6tf,a="f(խoBX+UEF&Oո7p}c<$8G0qR-tsu2_7$uy8t؟:S'B]Ud^>p/HSxva/^\tv6z'7^49:֮nʞ^5wc._kݳZlUabckW{ݧʸt\Le\:^qY\@ @W⦮tq{O_:Iņc}Rޚ\k &Wa^s S,9!VOș:Rpԁ+8:ä{$Y=Զh؜Ei&/pչb̻jLʻrϑ6fr*:E{juʾ_&R49?8V5n*wIYlގ#Nv5 X0upcR[)sjf|3u)Ap1+L/n?غO[X淞Ocn}^jeN< ~5$9I(p< ǪǬs|tXLu-Ȫ )9G89ld]]'N9T e;O87S(1o|lz"pw=Vr*]՘A+6S ߁Ɍk0El!GTO܄&uJo咣g Ss*$Z0T`#/sF?U|.Wb z9;U.s:V9W^0 Hs$E"gʅ)' N;#k*v6UU%M9A_ЭB=yEg*X;[tj0u_?J `T6Jxf=W Ǽ` t?K-Լļ3փ*uY`!1\Oz:]&VtZ{0t6p21d|<%oWZe42Ա|E'4J'Bը4'HLFы <>qX;fV:͌V`B] >vŌ@%>-E/mȖc]s8bQf R ʇU kdYe䧈<x2vA@cWѲ56BaVO;t.;I'<")LbT84R.- C}7ܝ?mE+fl'F]v;٢wzCc^9b WZina=u>{bZք#vkU]%e2K!倫Q \iJWbd峉8tl2gJ͘0rߌ;JC-z'3hы1Br8%'d`A|&ַmlDIc Qj2Fyzjx7۸YS<#Vs<mI~LösD8^~$t)-M#b4L#)GI[dOMLב^%eU.(AsZ.YL⢎#p~ 9rLbF_W3ӌٺܳu;XwÓY%tB;>Ann"QԀ#]ȱ\!,l-bXK=ݤB YR:>Yڮ&|DZsO ݠR ݠvsET85ȕUGO䦯UGaZ5.J{_&Fm09EY"";w4Ec]W(ʊbI6 iUDϴZT0vJ0=qx'/[^11Gj{*\QiU@+zhlI9L0|Kj D^|n9+rY\yb,u1fq+p2> qlW/7):7$Nlr&Nǹg\B+șZ2ҋEYr:jw?Y՜M3Yf2++$\N"QFQ^(UC59tWߗK7y}ْ8z52UO3[J ӑJꎜO+V%TԱܜ ŏ5X-U(^hUmxd3 Lu8dobo^"219R1qQ)oùz|S\K'+o֝Tpc6j bgjT(U-Jp~!ye1A{'s)ףrDe3aݦ44 iGߎ<KHXD="фOv:+(s}.5-Vz &\!kD,dǪ WiqR+O;ݱ ?5Os|#3oգ"T7êd'ƗY% VkcWQyuT5LZY.+T5RSټʺ|3˓9~C +O܍jCm8j)t}i>ל$|Q5W)eV_OŸ'o){ὅqϫ6#H%x&_QRyW8<Ǽ qNJ USLG[<#pˌ\S{~o3 焳5~L _LBǡeq'sMFG1 *WJyRtfbWwTdJ͕{vRuRr*z'QBǧڞIԮJ8 \slN5m1vqACV^ 2&g^.+xX#%Gfx c^W~NHlc66VvhRgpǪ?JUxefL<ޑϪH#m)vEnx v@MrL6.qXfṕR#4t:ˏvzFb'S8m+nT Ly*zJ|#c♾8sk+dC%. e=vd( Lr&Cyr쫳KXoTc}Qя|>1?gre~N;9G8i*JQ]0y/^jK&}8E#P;!v'阰ZqmowX;z{(|ug}E8*X:'q# ş1]%1qL 6?Z~1_0NZhg֛mѳ3znQ뭜ԏqop: b|ysG='p9]_zͱə͟Ñ.&U qTEݰJ ;%)3PJ[ Ow~KVI@&y#"~@N%1bJs AjtRtm\Ljw1)jdiѹXia(ݨiQ#u'p!R<+I)/;5[Kw~Ő2ӧ2pf=#BHC)yF(:iCAV~{(uHIsee2ܚ0k> 3> 9Pt*Wp8#[gB6Ȭ<}dzbzt}L>s$u98V\2ͣ_$b,z\pn`^Sl9OTlMqt7 ODžOnBAȝL]}' .vt JQI&{jRV;^ժ0htI*|C{r.t}@#̮x̮6L`c􃯘 qGn;shY=Δr-'uġ[ϽŮ"|Wrzj;[r34TӞ Q `  'u>IJS%.Ii*J(EXb+|2ykeתMhWWy##Eh$9@#[;KrdȐٶzRx wI9~fIEߥwiꖪ? 7S38~7\K WC<,Q2cvn*J w O0k 3rALs\zx]Lz8(lqyf'utmeb#50{ɧ|-M0Wr+&sȧK\%e#o;M+ |_[snًĖ-g Ns ㎷A _"5wMa)/[;qSwt-ylRa2O8`N4aT&TIe+q[ 9RB,FeaFl34(ڼS] h%JySi=AQTH`?-9Z EKp@JeMNJ+Iu[{D ġ7h2473rK_[Xwn2`0$ Ff*$1">ls*Z*&k)|1 F5HEXGhӷ{MF'٦Grj7.H7`۷orܢ 7G6 Yգ@=▇(Wұ?F+)H2iߏ-|2+)a;[7ρrmHm"Wlu5 *K .٬hY8v-,mF)3dV˴ѽՈMLK>9ݟu&K8⣁|h1FYkc8D !AbƳ Quxs> k-li-ap u cw͇i"ޣ ]J+3Z|rb7] Wߊul[qLdq$p益+$I׋-Qc{8«QŨTf}h E9DƁXv8Ƀz[5Q- Ή رy8p/SNt5I'%9[c"j~_d~_J;]ء(`guoθMT1Rš ڈ|D4|*WZq_5(AɋJ+An-@5kv-(awh؝9z+H+QDc=eA6:b`@s]ⶅyc\EHc|[[ū=4iE]i?]fǥ6rE $rw)4ʎ-E.?qgyAm,)Bds+u ct-q-;V18j4eF8j|?m{t #}~:}cؒ/L69Nv+*ۏ[Q3\+]z+U!Aի!+KrQU8"/ 0<oP:Hy<"<~ށ}[r*8|DRt|HV/WXe*2I_-?$NO SoT5#Zt~t ]E,9" i3+qy&ρ[cZ3][\ )k;c0OBhOts+p3 U7a=cF( $JUK&1(2NaeU:^Z.wFEONDZs\c5[V_\i$m4{هoIk&jf  ̺;{ *bX8s;ȁGxT%Yd1:,D|15n>z8eArFXUҏ)߸O;a):]%2CI{XoGql p\=y^DF=j MZiurfXB]9<.WbGb4xKZ0k]&zl!C_0Rxe 96YtbW`f!]ݴA%),bWߔ4_+a5UWiZ, \s K20p߰R#ׇaqAtrboYbjm4vCLdX bbVJVT$&6gv%e&A AS7lҤ{ƽt*g)PAP{ C1UAL8UД늠) A%hW+pMau5`kX\l._; _L pp^G0:}{xP`u 6?u ?V>(ۍuaU|+)xۊ$9WhdΜCY#i{ܺ0vWq%J'`=q8YIs|8N^ PƔ>o}è^aN72o)m|[dgƀ7qNK&| Ν?:yw3hSXM ["#ji& Ț""{$TRTdg jIµZW F$cȔʨ'u?F(*WF=xCБu] -Bn˶MHU$nv:U+i:%UĩUoԸh%Zr m1iS]i}NKg5c3g:/y< 4TĤ_hV|ĊM^{ggT5|?`؎ҊCg]ƒp achGJm2"a,N^YP78W\Zp.5n\Ke7W( Y } Ǻ֝!5EW'2EXcyxi{o>wE(3I#}2O ?1!If㴉I6O ƪv36x7WX:fvҀi3zPApz,&Zse ɀXfdPm3\~7n]՟B7n%Ձ(g7 AY c*z[gQ[,&F+(FFώn9^ɰ T_YTpxddt"4SgYߝt̨GE5sdBE[M>i f&z# #ٶʌxE"aFU##z縦q)mUD5xPB-ª+ݬkվ|(]wСpRg#@wvX kb P󊆻ϔ`74Xm'w}A>_z%ҤF-tL:[bW#Mļ żb ٰvZHc݃띝5W+ܣ#'q=_WdDOO뫉nG|k#쳄OXD8 B:avfZ{tYe7ws~l&p;KX NI0J_¼QV)񚋯|cZ'@؋tCn!`3\s7gX,~f;8[Eru+\c MY9:^*#fdph ;d4MSǫE[x${:y.r~꜌ zCw7\Cw {[%?5Ī.mLٶ7VRGbXU0€3 ȟ5rs~u{(O7jl7TgSgwA>ogA ?+3+[ zP>%6l<1͗.+=/#gIS 00 =À*4m)^=S8N4qҜ>4\&}UC#7 .zкYgKU{C#[lKXh; 8Ϸc\U]МN89:7ǹ#%+.uǼ' gt: ~'Ɖ4NlqboV DGf]WJ~<Iv8%C1:;y"TPaٶCX+]:9́uoȎ C3 ÷s5Ћ[kWdQzgNeMwX h;DF\mT.6JyǪ9e$컬u36ʛ=Y Efpx=J@La(ݍA!̠&!̀ւ'r?0$ױ΄8lg;N0^ j_~u7:si'PMÓ%mč9ݣo+nJwrʼhy :#cuON58qkk=U> 9SDnԣ>9;|3Ӧɻ}!DGz7 zf8bc)  MBI.`ⵥr)txm)fֹpg'I>z7wA3ɱ Vu9X (ft6Mq ~r|Eߐ(UzcBޚ}|铁!&]8%qiߡ]˭hL6 g.KÙ QzUXov[벽1XMrej\1 kp=z6EM$$sA;B"IoRR4 ,mTrf1|0]1֢?XvĤXv9ņp\L.QbhoLN&Gŝc5"Wێ8ot& uFݿmh %A YIfPq;FaqAq8LA{m81D<|jQtzihyS^E <[L~r=0 qWOApMg]oMXTr7Q|2q@ф4*_5@! a[&zܷ y4~#9[Zq%gTܱ𥺜#ǪMoI{KTD tfY/G~+BWjf}U!hK-ї0d_s\z7TzOJ=iVEԁ{c ;aO]a%x,obUP G=@ǪmfCc:uԄU\tԴɻw :1bA]XUuH7 8a+>mr< vqE -LlJCM'X"$%Vps^=E6o֪mCi 蜊Qݭca~}G{у;#۵&+nqd <`dEj󨒓;4EAr#aauJKNf:|(W6*pvGMU /PȒ~apQA( 0ڝ"+h#hx+n V $ pPgg5pq3dGqRAl=8*GEy#u+Vugwd܄Isag$#ѧ[Uq0+-:xpeN~] d!zeʰUxk vk\ >M&&TK>c/V9R=#a6yͫQ NgN"wtZ܎yŀ܎=g_anϰH=dIV/K{:uT<{7S`!L f"^aO{M/`=j~I\$Ww NgMŚN{RcDp:%58Za "Q:ߖ;<Šƭz7}X=7#zԩ*PNWn`bs_' pSMάD:WCg13bXaݗu3y:*'Uvg?SXdswZ O՗׌m?:=<ӭ6a^qu<;:;=l`0PKy-#{׹9~ (WFFp7x[LJt^ٙ 뺺=9 (UX1h''j)$FcS.Bd5Io~Q>=i pH{<J9{4.8=H<.~i*/XJ#qar=W܄U,ïx1`G79zow 1nP_j~s'PgSau0nl>G>7s“>7E%̣Win~oZ +9S]o)%9v7[ wنM.|nO'l64W:+h/=*p(tQZ kT( [ 38tr8,_g}"cJtַT9qr{3 dמlZ7.z.Ĵ^95}*:Nggwb^k, W[זk!3aGg 8^ 굞'p F+ v`^1(1I0NՖ} ǩh^#3K|V7 O>s2f+~*iL|3)J3џ:<8%;x_s;״x&,Wp)[Sl*pI3VZºvH0RL8l:9sҡ4?ܴwW:+Dcxr$|=2ΰ!=-Wʪ.=p)R5q qO=̭;ExK^?hsF ebW13Šv~TgMz5ZG8_IOwcOoћX<"5s52徔 E{5p!iUg8<5,9;K挰89N.NL+IIaTl(%uO{'H"ժ'%U={1Zq+赞Ot/#\ZyWE)ܩ):or73hVĠ٩.[8zM϶<v`vʯXw ^GGHByVZK]Wt3+H&(o՗cxpmAb<: w䠖Ѽ\,ޙNר ׫;z2=w]CgfV%Cޕ8t~,͕-:Xt&= 'sp',4XWXdJxOz?GO)><.1WN&tٯ9rVıu\]wBVl6^GǼ7]=i"ruA;NȆP\ \ed<ͧRKʭR*vl-Wr5?dsdW0mz~nYײ(5emYfNX׍_a]ws#7SC?iRW\dž+rcg616mg \Lū_y0/Rه{pNjѮΪVUxe0sVÏ-t (ҟB8)b)0GS9|ԁk;z8s?r9~]'] &Q :]1CURu?˟;Bi@\Z7b/~'l'o uK8.e3pEs 䌄'}\aUINhj2'. +VG}1گ;{Bگˣup`21g'5 ugq3LBvZՌq)Ϟ>8y|H_:y6 *i\Fb.ޚīGԆݱ6Їs_M7\TkZ:־9+vrK/l5-]w?.UpȮ>%r7 xܫ8k-a=V7odIaeMGgc>ytQwl;yҬ5 ϸ*lF9*K;(j(.c*! 梎=g-/A~/b]ք;T _uE|? _|vؐɿlaMvRXWI*9:=|]ԁ9QܩYņ,Y~ZIpw7."ϴG\T`r42 95:]Hc{k{s=AOCVv?sȬʪ~~g`^3HDTG=3$g{,!_~iXxR̸ЖϽvV;hqOF4kR ̝k'*Zxi?u _^V-1W|IDVM*: N's}L빛ß}V-ɇ)01dZO}&AML4{ٽͻr'(nWـ8j#pt>+ F]Y:/u|uƝM2ݹ3C~&G~&յE%fe1=Vyj~5:YؔU8˓O{E<:5haBò0q|tFt};]31TG)WfL~*#  JTzn~zW4;dcԂ&5x{ub/]) O!vOygݬ'GIH8OkLX&#ߦM>dquNC8NT>( $H4>A8`mlUS/Ҹ0 :񮙴4XZu.mδ~\l:=uLVyxK Kg;ߜ_.#FshŽp 9:{^ūҶ/SE.~3%yIc*ӻ}<|Z8\% ̎xEBN?5zgfx0P+& \V\U\_\B֙ڙHSd7|`8VUݍy\Vw\#sjg+nYϪ&bq9CoӇ]&V6\vMNU-XM ہXO`Z뚄;/Q*^$=&nwplݼOք[*c 4ZBMj.(k͕+ ysjEq|2=|.y:Huq|{Mk}q8O dЗ+ ^yU榲5ߺ-a@_Cy>ot'T*9Y5T05VPrRNDZJaZ+ywK^u1{pUbd? Ca^Pƃ mSOaGXϛqз*P`~zޘp7ʲv`Gs,Iܺ4c? 8>Yt`n\Qs'89y %3C)*2Y+{A>`ߥ+u3;\/ܿ֓+u)or{gJ9"+<YG>^f=\ 6:bӛ}>P|zWwOCz';=zX7wӄy|G_D˱b~dWO+3uRb |XF(ӡ~seoփ׏Z[WZ*:q ~/ pu(uH8LWpxyR_g9yU0tn,C dNpE>5;U_m>b8 y_65lxl:[f?1\1tkջfh4*7Z*\RJ{_8[mUTf͂[jU]ݽtꢙ2U%I7~ݱ\%]9#'ϘUW'U&p Dl#jɧ_f\ۺt1Q8VY9v(v΢өq9Y Nᕿ?DёAVUw<i᧹rup7h1눷>UE}g^H`F~W5MgƯj;A|~ǻqS~ZzzRVdґ'Ȱ!t ϕr oLE.XAɳ§25wVQu"gj6q֛7|lcoJ w=T,zy5MXv._ist.Zg̾ڈ2$g{,(E̍_R#ؠƀQ.HV$J|M͑{9Ζ%9W|ϠmzuNB¼%\9s3Y ]HTpTМ5gW'O(ZһiVwD8|G>n}SLq8YK4ӦB7^t^\W?u#?FVl'jVykLJVxӉ 8|>/k3a^uJBQ?]82?kczIwzI^ tTĸ wlY?˄"S LV:h`"ipz500QH=&1yKT9}1ltbZyGGR#9~¡t^owzxӺșR3;b[WL2+=M"xK+y"xBX<' ?{,N Zï}&򳶺,VVLTW:&+Gr 3>zyeJW F:{;Mݱ#tXڙԝ>ȏU'ѷ?sN0iA3aVaՑ<%Fpj6<gЄF̆oYPs H:2z7@q=Ԝt&5'ef.h0Y]OiW;s39||C\ iHBp7#g.7*+ᢷ VNxf~0b^b̭ Mޱvdj%psOהU0Oʻ 9E'*q/2뗸DԯSWW}3+;s_s>R &gcQ3``jMrrY2w\:qRM؎yQu~x2gr[1 R=WTO4:} 3i&_߷ƞ:=]!֊ҩ!/|[:?2s ~=ؓqFP_//o:yLaK۞ϝg'4?NpdB18:#pKg^sSGϴ9mSUvcr`u10#ʧcɁ3R1匼ѝ%R9}lcEE~tعRwUw]zNlSGV'w,Mw;t`wy1 {3dߝٔ!%[SOk&7wG@}Wk~p,bq5G!nEsO[̪j]2eQQu3L[LeL\Jvy~:;ë2+&im^ֿW!TK%cJe֥HǍ̈=8i^ ?8J`(KX i)kveN6>YG+ȁz 1jUAƑ :0^8^Z>s؊3VZa{: ~|2 ӕɾ4a=*9t23݂v*wge=I92D:YM-ٝBE$-?:AwJkhbF#s#UVE^{{OWVW eHrkR>%C/|t'y+IZФ2_LU֡?g7ט{Ў6to'6V.հ11_Z/-&U ދ*+2|/ɥHިjU̳֡v)@8 >kfݑɌvbJ+7%6<ɓw+ILC>зbqS<=9Z;UQՏ<[qaM 8M3ջY]8dw/D71|iXUobGvީ1&f Yr :~f`{ta^I 8Eµa;f -.\Xv+>pXMY(ml"w0Vwzv㨫;x<SYDm}?k{u<8wz20<# ɢ.KVs::VWKM/[|m 4";ķZTXzǤpeJ>8:/ YL L$/x4'ˎsFtq0A[Y 9UIٍ zg6F+fU)NȒ›:m^Q̣}W76GzHQZsXT~;2N=O*%ߖ8ɣyd\xNlgDSWU+EpBD"D7U8=6s{cU߸qZFoޭl¼̹]"["qx }^iLT˟ l^7<'gh1hF9?L8;o;b .gJ|tuΐ.*\p! _XI'`$Uak_]kuy8?1&Ψ|8L&%5EH6A"]CQO|g+pF}~/JLjfw0Ŕ3G}utr; : b+h^:gG{c5?* t:~&J< *;;MIv85tg`-CiS[Yo2G ~UMjypBx_&8@8 4ٻӫ*l!t5H\>A#C1g.Tw<0z1\x*{.":%0-\[ u\v0Qnޠ;dGV:]XBOt8 {8*>7Qa0sAn0c# j) BxcPŢ7i7;H!5RvO!aM}0薠-r{Hϗr =as m±|dfGtvJ{I:ͨDЅMG#ñ F[N9FA:)X2I ,#%Ut9L4gdhOKB BCe8p,v+&:eԴj-<&0W`0ٮySۑt IG`~&D1lI_'Ca)*[6rlO N=g,>q"REaHS;g#LlM0XdbC2_⸅Ўuٴۥ ( :8)֞RiA5$C FNK +Lmͪ:^u,r?;`=FY39|& L%0{dB&piDIߙ2oj77pKn ŕ qY=c Tdowb^A[yܵ?|z:cfc>}a;jm bTe_!HЫ֙]s)(yTybTn>_ogI@i\k]"?cW$RGy8ԻA,Dwz; K":nKk52a 3zvU\>KS8*.%ILVU/^m[aՎsRno\E}{,"[;%#R _zoJ9jk\M "w3h  [MK3_RY+M#~wIin>./Xӥtitq*4"6؎㛡/Gw-O4PL*Y.]%oڞ7E  4/%ãO— 4(oбN9]3/fcX~~aAn*] :6WoMMcvl6wa}T\E>(]t(IGSvvmVptH )8?yq8]!Ψ3')*zSz*i.K, ǻ|6khFiftkoU~̲OY.suӄu+Hx=w> 2(XWu>C)'6sqšD8L{ڂaĔF{^[`NP5|(cEωc{\4XMd GOxjʨ3sc'pnτabWX'X'x7nzQx'% (;[l[RIw7unQU Ʈ &my mA`|"@}mo%t4ۄ!nX79555&܎t ZHp%?vNm3'/ 9et6j^5"C4vUTt*8ܺ  oQ}*˷ :=ߪLmT6; y:VxH}7E$Uw kr]yXwZu:P  a k;J" KpIDiq*/E\ZǯZ"-:1cmNg݉!5)۳2g? #ԭ['cUJ$.q[}(/ 95YZ-)<2zo.-)d0A 'lhzg[Ex+@*b^UxY5؋Ϗ8jgU:`[Js 3p<7Iw_4xEŴ)1KғTL;~3!zowd}d n5pFK+ }3՝mWqՐ^WCD^|;ғ< 8*^aӦ ]Lִ]A0-8d1\:E$Wza$KXG}O'ӝ*+gKa@]qu*AeK"ԱYۃdP>FNMuNA^$vfP{Ԭx\esS(QT"W[a~f!Cee 'YpV٬!>H~zP;0z|o3 c )є D}xZ?Uk9>񷐠Y'p?mo[duv$S8XJ vn7AxșO0r0n$w⬙^hG1bV-tvRNc,G,ֱJjѵ%or؂{D8n\z"GkHq!5 \t8qac-zS0-;GbYUL`]}o1TeߕH8i{[-xJܲ(G%2QD<]2iW EXK{f8E}i IV ~L[H)Qu>|Gdu .|gy RZ5l9I#>0<-q $d<Ibݏp]9E34P8QPQ'+q+b͏0Sͳo4u?Q 'U)Aonv|;WI0{ƊBn姰N}w)i81/7xv뙶mܹnSŲ#ұK1iOj|^ n&4IFYS!bBq͏8yɔ=>THpz.4{;* nZG)f ̐*K.FYչ*TEiUX *_>+NLoqDt㈮uo3vkvh/wW>m{A9k_{L7>pV{QPt[mHw#fsv`H@_{0 59_aq;iDuzM峱4rmiO]_8(ci ץLXl5;i!U\-7`L#↋n| YC~T uxhՋۨ&O'B`!0}7vĈP'F2C\/1 N#Vh,Siڜ 1C g0#oT ؏=K2zIx|vYxf`q-^)pV7Z֛+%6Ha} lsY/sqHlo`yB&Vë$&x[Zk)`Zv N; : D. )U?FitݪQjىۼF>OQs42J3*=bUQM=b俊-"l<}WT}-ܻ\յ{`}gQGv6&V P+]8:kŠ1? dNbr|ccTv 3QƟG,}_ǵRhVN 9>n>/h%!q*{|}߉vӱECU 7]蘟 a;F=v'7!l`+UX}7ju{3n;T_fuS OqGܤZ MOLum*7VI^`zۓs^Y-3gu=l ޳D_2'$>L*z(*6I+j٤7ݣ&Ϡ-5 /cA3M:与oEQ3^V 8˾WϞ qo~XϛxgK7># ,H_]Kn]vǰe;䩻j uVdA*s mH9w`j3do2[1%0?4F6y×XY^nu!;ԭT|Nʺ!qq*F@V?`!O+W}ȿ/4D _n wp㑦̠s9%gIMUeKE_G O"y?HU7,¶wܓ1F!38KΚm8:Pv ;qUܣ-{ќahQt-?)qco -7y! I1k5V xC >}0j#H?tYE{Q T/"®,)RNw`9EW+U#ǂ%yi%ߊy$I eU$Nw?viz/1e*vudǣ&]lgX$Uw&1'1l ߞ< I'&f~."Y{NI0== =1zwL½W18NMz!85ԳSDu@X WZʴ,|RŰ5 )OMKa-蠄=uv >QI2:fz3ѢقG&[бVny yDZ@巨KF1~v{q j mtÂg 'cK.Wn&ށg:,/z\v~FaiFc3pTr3;3T"KobL8ҵc_Fjt^b8KF)SDq<{p\`ZYG=:E"c.t=3XFv؜vn_eNҎX-c8%3ܢS9ZOYr3p8{AT*YXg\\">Elau=цu[߼wh45NgFLL7hgzxv҈gv)|Shuh_2 fB$I&E2TU"n[f t+Pn ;=Ĉyteh> fjcAV=Ϫ=7ɘ5_6b$g9t/<ûV mɗqF.6iXyL ^YcDGSe58i׳cřuy=$ lnD`Y-jR_n{f T)gY W'f`af]Nx/>yVM}I~F~X[!?Ka7[=ew'.^:ޗ{5-i]wrA[ .cIV3zywSE5 'Q3Y%e<đo yUϻw9h#SՍThM~7<6JfX yhdb`'+fIz-@h*g!_SuVȤ7agwtWq`B˪x !a;'/ߟ'Rȗ%WXs6dJ#m>aտY<槎W($JC7 3}nQ ҷ?x*T P`.JT+n>nOXcȹVp{o8ȡa73H7pT\ryWpGZ@pSOY'rkcS6xfKT] !UƑNy[f|WaUۻA/0v^KV :ΎLo |/9C] *ȫߜVS+̫8QƟ{fZ+Xgk6HaiPhu} -\ZhPGQБ:&}{ u+mq_8r_XSR`ܕ A>Oj^ŪۗbU6=,nGšD">e!~?A,=s8wsOZ6S 6()6($ۀ6}^1ȑ]21cvyyBp6vpر{ocG~S7Uԏ.~l0M)H֜fn:ANDuASD{ 4ƥ 1w՘bX<\zmk}۬I}[i^ f]qOB[~ߕ:m1#H#y67#<:>6[[Ή cp&ӖS|NVm+Zֿ\8_b,, _-+1o=];QV=НMOտјU/Ǫ :D=W驄Q_ F-wdId~]<:P~E^d8\aM3=Y >q0jo5WΘ{ @2#f` /{8w]$ٚ7!مӹ6kS-+5Y+e6n5tJtyNTgvNq GU ڐpذT[N9'@k4nOeo)VpO*V QHSH|J=l$sѺbM֜)ó{''fܽvO~N|Qm 1Eb>fV|@Q|hv֙Yqb4_APVz(]qGJ@O``j!Opç|x(VWª KJ4޸ WSrWt[<.n=P1 &T!T7 [96~XguOWn[O |isHq&8kߐ'"S?yNu':"UD`+նXu`U}=og5IӸ #Խ=HvcaP/8s4JoS]6P6@e*ͫH}u6۳_|%k  *td+֪22z<ϖϞ.ra* UXc/K3œMccKܣVtz&'S?:;tSW!T*/ǵoxuR%T/R4xCM5;8JL%9WBUےY*ٹ=f6Z1jH1jp3PgѤ nk*vǑ:L/ {c* (xUH95p͘Rpʼn2 ݨel\-ސ#Sm;Ac;L Ui0౿V0aYWqMa;3{fyzaz9GeJIBU4/d`Ω9?j5 yXz6t]XO1=فۿO9F0> Vo*c{TomkɈOqӭ|}O<!k%O>Rb?&m 5lStS-O*62Rݳf&(gY7A8h٢ɢ ?r#_gpPiUC1QTkH%A+DJtFI&IVxs`* V <^Ą:^Xw(|pIcN&-{P'K_%+7sy$+y"Y#Y SlU  [ -7LV|S5r d߾±R_is˹7uh#1)sEO,6K,unLF".HOn.ӥ  9ݥƴbͽ>= RI뜘 9*x8CXbnh9Wb1jaWJ-rUv39M ҩ:\w0hSV'΅9S쾊c;s ߼ASԩѣ誸+"pT1C2RnH]I۶^;z~} 1i3rb4O*:MKiss_нn7l􋂓RMv-:m/OhlyM N*&وײ1]+qω^Q*]D$_r 7 ӝ%Be GϜzqWWa19/3 *McGXwY 7q:R0*'XJ?&G&gڤ*U|^շ4Tn&:qfq觳zX?߻OWM2|j9'ëi,?< ;doe1tL/;|*ly4&MҤ^YYaޯ12&cg,[bŭ_d[zZ|cBld](Tx|Grn(\a=nBgsԩs/}4'%7zc{fg RڀѤႈ4щ b:vֻ*t$rҢsD h},{i; xm4]S ~ĥ]Z:dž*P0Ʊ;#pP,~XUW([o~ɢgQwNa޷xa*.;{Ԙ =N.ҔghV89hk3q̻U5{#)}a^?lՂl opz01wZpZX/=`ҸsMUĪlsd~ rZne9 Ԁjz *NXdTq<ʇ'M8WNޙcU,֢*s?X<8% &M/U-|?bPOŠ6\'ٸ^yvtnދ)bN{/>=6 *gvx/p2H÷]-}1?e(LP_:F}eồ zƲR9jk?Dۇݏ_y w_XPiWo_S3-+gZvO7Ut3ΟFnGY^o<l`kb%U`B[{dp_R H'_nNx_9fj:f`.gr~]NAj*`i |wxE>Ҫd#i}w |%fuS#?tݕZ[Ј&6_g2ⳍ-y^w;;R= c=SP~S0HSgSm^rFv$ʹ52fo69Kg1*ZŔcuw^jUu*"93f(Lz'_fA2CaD!JE8đP0q(Qav: ,{Jtܿ>2g=G9on.Ԗ>tGJ`0;Z+bc&Ih֔΢`8:0!!t X~>cy0pǂsWY^sꐎHu9-` x@q.닮~mYG0#Vnyp(D+,NQmU{DsRXiyɛT3틖Xe{U=hdʢsprΙֶc\X݀m8jPfkҦs k1'.]?G1?~e w7  ɖ&YNnɋBs[;Z?ǭZ?J5Qӏ*(R:=0?q4KϏj#{ioP=o~喾f|U\B[MM*}ݖ_I_By |ڻҬ.w|+ۈ*?41owi="U@;p).2xCtp>Sn]]<6t[S8z mpjm抸!nިΒQ}rOTOz֘^MxQiSԤilAӪl)=ɞ*8(v]9P^#`#s;֭qp2[vaͺ6-7ɬ2v|rֿhQX[]:a#dc}5O,uFPəy! l>S*'qWl8ovn\GldVNmW}.~8Mupvng՝|H̦,~';n;0ͺNUXw-,}H%:9wGM(㹽_|lD`iv/!s:z[+U#9 \TB㘟`cRuM;9ucSo){@#\9 F]2=}'G Sy65רt8k>+y?ؽ<'"13NIUFkn9sw"˫ZBKzxwOѽ]/1'Yu;4~/%OU|+΀镣jU9ZM^Ws7Yc2IYZՙhDC_xC!q?L*:p:'M;6bS@|SughGdLSJgsˌ)r8&&;ru 1>ƱޮIxs͜O~_Knv͕G[KU5)Mdz{_{N9y( x`"io'=~|;+ba $4*K[_}]NFZ悢VsF1yǺ)GO\ښ#S܍B6OAٻ4mkܮUmGl-t'7k krhNn\Iʚ-J޳<;o Rjn!F+Jc'I֛6dz65s&Z5MWX!B{\<n4Kr04O5mn㑝VS̫)en~C8! وT0?AO1 x*Փg/ DVu\pg mo /'yX ʹX?ftu:_7mgmH]T-LA% 0,wŽ7+=$1 sCcMgtįr|K;| n6W>@rɖ⤖&7pz]7tF7|c* 7_o +SxDҽ]WIH֞G gǺި+b)u"nNL[{r.w'N+p8Y∂W\GɃ9k9e,Ym NLY~͹ W;rgֽh#7{lLO,xg3yojzhV.v-dĄ/=}腊٥-yoF/׶o9/Vkr|Eqoaqp7=f7GX 3}./܈߳YXGgGoP9V_ 05x(,AH۩  _w=1w7Z*,h#|Bfsy@b Fbѣ1&_JNšn%.U:?Eԗ _)V`yr0FV\ƛRH*|-U{[TNou׻p9j>pni4d2iVEIO+&]  ϙ_nJw%Gb)SzM58Mŧe :'$EwZ4ʍ7TzަǑo> :Vϝ[7|ezƾ=Ǐ|Z6]58WWU縫3 >]z8ЯFW#|w.s+{̤{Orq1lQQiPGaU2իoVhժ0%2(FC罎=npCiZu 4pt8t誩hd/+O`9/] F93)Xg&RH,XQ}֨:4g$K>5 [\VUy' x Ṉg>c=9 Mªxݘ_͙l:%UA76]ٔ6RWDEc~b-|;'WySG2v_m%s^M\ƘOW~,&Bw/Vz jk =P]{r筎qOƤS&'=#Ƣ"E‘Y`FcAX'n'?Mt)ApBnWk]S?Vy§-Nu yP5xMm^FJ..oY7Y:Sk-(L9^.M 坣d '&3КOnގ~ Avyd ?\ :}S 2,nPY\86~ NB 1)aK>?tUx:PNos8Oo!ܱiϻҖ+Nմe>=[|uLU[)vŒC6?{ץOclRX"NkVnmau`LђwBȨط^zJϴi. 1[<ڶf8 1=~[;>1hTR)O 9AH?c&i8=5IF$/9 [#dT,xi;;]G$|Oܲp cT*7U혋p++Ur##n% W]2U\:td򘲷jwiM5뵺B8NV`op s =5r;90񹰍Qªl]k[4Yi4A MEx?n;Ϧ^=)0L)ý}q`2dI]k94ǙTݿ9cMMn-sǻA-pT{g\pT=׺WO}HͧnPC 01W~llR*ᘟM. ;-wgwR`:k %Cǖ™J2rȐa` [ƟE7ő[ۯCdgxVXudyß.ev*uO&Ou xwԇ={}S:}S:Uq:Hal%}mWk"/=yRWsr NA߇PJqB~h,Hp2g{/L"Zx)| x۝1ߧߝ _N`48_ItFOdƗoAV`4x=NR~8D,l|S7Ah a~$( #8+_n9e=Mi5Q3O60?pgΛ<hk@/5﯆ձGsL&ax)]??5|&& ܶ yx"/ie]j#; ;Vap}Kxm'PBx<OPX=E;_Nػ 'Vwbs%o6:aV#7Ta~}<%=K0RﹴßW뭰h 9g}oܓSŕMM_=APm| ڱ اÎۇ>Riɻuf2q7>D` C`b8ʑ"E}ʯs|4%{\e='W(p_ΘU\)J8(|YR-9G|FSgU#inU+ I©XXtisot6MGOmU|E܏|̴َ Z=>#sB4Α Oh{oWx|:sxZrzǚk:`8Gq{w[{׌kıI76Oa!fZ犧Et bR =?uS-+(n=q܃ؕk`z<žʎ&e^gCXϤW1[ω\ImBTz+Ӂc0-ةH=J=<,k0; zL qeTrZ D:G8w2o]3cPC!)В. 59TJ4QKb3&^C: r;Rޜ?ѷv+yㆲ*K~p6Y 3ጅc~hJqH4M%֭s ЫN4a~w{[R3r:lPڬjXMt2o{Nۉr]̓jbb>3{վ|?Ϊ6錠EX"7a;_jC }CXz? 'WgNq09߅ݵMH|j>+R~~>1Ax9 &gc8ļ &zf&BWx eDZ[h'3ބցW3{65ocOf3 meF$ט3]qΆQvim!pqq<>xн?,~IEc m cGηkd7ssVx9o>2f&3ǚ~''#wU!gu~ ?2)v}ܱjBg*F8Ϊ| /hS@E}3?ت%nGcHϒߟ9@ t\9Vޝ\NMc|2ZJٙ g'WC8%N1'“CAAc`͜b oBV#FwZe&pOBg&pjZ4]Wzi#muv'Y5vֳ'K].s~ݭsIpԐ8nt|Li;u|ݕ[λԦ|a%.{g1oThד*SӑX~:b 4C*Z |wNWNƿ| ,CS_u-W9v1(kεNl$uf=:2yH8w-ѭ~'73Nk+ܾ [?b'[_b U/9BlnwMgΜAkjc}w.ZC\z.`DŎ&ɖyNpZ3sZkEv|ws6*gօ5 p|IǙ1pzOpOTjWURXw);W`܃~MA6Ļ%W ᅚnO ,ure3#2/_2\SgM >Gg%9HKp7^ޯ( tHHhhmk@fn7jE $5}YS~-u9\vzm9^T^oK{dl1uqCd@i]o|.v5Bs" s l*)5]ܵ Ѕg^ wԢ1{Cp>D]x9#Qsڭo5Ë=hŮabD]1p8=۔O+į:S}[xΟPZBB't8ç/9NN09'gQD[:oꑭ;wS|㜅\Qex& WuqV/0:g߽\L-+oz6*f\P3md)qCW^ќB,?/=p19(h^V{+qšJ(ˤ Sq0|38kHcFKAuuGBTL^dw93,sB7%6< iǪ#8R#y/wm& 3!)݁@ӏR̈́cݏ6:[NTeF7^XNs9ߠhp7 Τ㎅Pެ#4>fN7ۘe]K^ab߱Y9_0xCw<&_yTw3XÌ"Ʀw;+MpW3ʥ{FY,?8OYo l :`l퉄D_YS:L|3˵;Z;C]RUrjL|ɧuY}/;ݧ~ g/ukG9k{s_;AEǐїog;6]xG祱Nl;- Εb_^P0 :h1^A2~i̢ߺ? 8*ԅr|d{l3#.8xLIo צ8}39<~yn 똟?EٻD4ؼr'l]78Soqw͛L/gVE1ͳ4SrKѥ~w&&Nojz :dډ5 UՖ>)g{[ݳyuwj9]XUm*,zXJUֺRp;epyVyy8+Ω'k:d6cGF:lVlovI;NxmTuC8:˂,U h7۝zq|?MEfOi+{$H޼JL4zxMNmwI0SbjMpO *ǹͥ4(n<.3=Ou|ӥ`V=e5 ~lqС\XpАT9\Y 0v-j;%ܰז}QK7%-e*["]LgvOlElǽ &2_Eȿ~/,L  (' 6D&S9.-ӼiWbݣ#8{X Իx}^X6qP(L ax?yD^¡.^8MSL%nݗƨ 9`ZQwhhT)F_z #z*"D]ѠbwOLήT#J!gaz옿7AllyƽL4a6wPW 4m?t(pLo&O۬@W^sڪ*Ǭ-!BjzF](s>dvG`z7* Z[p4.VS5 @YGo^ά6'ìwHdg69Ϗ}u]T? G_Z ."EGەjӒ)rVT#6NE#5(Fzf8uu rd EOeNoxP}˫-yXEx޸0c`ސ ٱUkd6zx?Y;}ϻ/E9wy###3pS:+6u.#gj^8Ζ=f2ܘ,ߎWI)}z"̿|g~uPn.o{r|%q6cυ /ksY+V&V*S )f'(S,p&L1WW8vo3Etyauefq9l߸'~}d$Gm;7Tzz4%C@=X7CS-O*|Y'*Eu=|jۓ+]Šͱnʽs8$]S H&3{ n%4y%`ag-_mYyAαq{~;YqLv`ˇTm?4XB]=9YXuQps%t:S_sn^1@zޱw*(OTk<}TݔS&%5Gt5'Yjh`&S SȗH-o1g&^GirBwfR)q&gίyФ3:tzΚtd?H@'y긚:5*[V]6t>IjPtɵWa:It(.'i5י؂yP#=CSim}d 7#Fu QӇ8Ȣ+Rt Hy`1|>auLBjX$gZJ;`7ߞ,0g^t!ڕS#w|GFbwfS{z-%5=3k,he:PS {Ĺ~01Һ҆2k7 D9 @-#?ڧ i ?gޘUlAӰ}TzgH<9rQ捬L %j3 +1G1.&cz >`:։yn/5Ϟ4'[MXӿA wG=yE'.z͗?N\/C@[ب9ZG9sJ?˿fo="xIn8Bih nx|p.UIP7v4xlCLo'Te `4AO{~Qؓ^:P-#$^L1N*z34:s%+N^)h1uV#)JZI&.ER tʺ bSl m,ۦL&_Ph=4D&"{ EïsU8s,ҿR㥉x|ԢeFA.Ub~&OH9!# IEbUu:gjTd!hs"4~BR0^FGd݇|,a dv9J7t">b'o҅,^캕ʞnK3vRaTߚ\7*7X tJW[26aƸjXs +T}9#nTs iMzY{413bCXE tm_Qy3/iԃp]5SNgWblLy=7o_Ǔz' 'hcԮwyZtIlWmȀjZkļsO˦$瞎O&&lĝuMVeuyUԐ,Vʣ*_&/_&_ZnOaDe?_bh`3Σ|x=EU'4mn$XU { l\ԹaV5kcSG1 ,(s grз|޾QwMXd_j3 oU/n%oPϷ)UXQmLĖj-:%v(&sD4 _P:WcVug^ׂ{zgXwCVy<}wJ[N+79,B*lV_8yϽD֯⹷~P/'0 7taS%؋Qn.νϜQ".Yu -.\hX˅fpK /Vvd'{R|ϧCVAIgvACh1p +0G(,.~Zh6Mnj0thV,]#v^읛*l#N+:!@/ yゟ*;օUN{2xB-emr`=Cfkݠ| %ePOKJNŨCXo,фO*A"\j}~{|&M/*Zڭe* knL#,^S)e3xΰt-+O1bj!= Ғ~xHזy yȢn_(0Z(VP׍/*WpńW׾C])1#{v8qVȕb- jsgGzNo[K c\QA+{8ZT muUg{X% %r g_U d7-u2zB[$pfxWq%D&cQ*%8bt9û8k-$ovo oJP bW gM I+g M }PW3#:T1oKC9T +:а-lGX|h;t 5*lɩܠsNE>\$3UzV}>R\R95^9{V=ekxS}AN"JZ4xM5Xr/.|2fw5(WiC 4D '9?;3'J)s3fDܿ^=Y=5WN ×8[ܟe}rvFxqo03zoۣDe aU6]!<^ѓg [zk z'0Ȁ?NjMb p,~W(ᐆ) /\hvپ KyWo "K0ի/Iy"+78kDZIhjǤlnr]LUuY8n^Gc7r43KD`9RkIU~'k$wnW~Ww .77E^O5Rr/&6%*pZ7 #1a>.͘LQJ$%-Ǔ&o u=1'[SDxФ 5Xtmf0@j63TW.T J8* j #ن:ݹ* #ـ'McX LƧ6l$P e2kD8]=$7ou>Qv^}tH;ZthA|,O+#mbdwookuYqc794aB.\ˡj55ˡ Rt\G8onRtn7,06)%3NMqv6O8݅b5ZX5Z=tPiWJX)mr]bQN$T|wAtjtqFۺ#( l݅PnSp#SA ʆl򈊬 +͉C_'⯴xW!b" n*goϏ6̥7TYH# fflzyԳ]\OKDԳwA*5x:wB+*pui`;ubj{2=ӄU(z uC*UUEJ׉:AW#17z;+:kұ(p:n %; F9bf"Fd52_raeˈh1uzcSbo\Bo`X[eIZ0#b&,rZKWfY[3m*xXa0U/A!zVy}Yl~NTP5ԋ0O7|ӥ=2*U(F7SW)?/9ÓݥۊJVUdb:[7'@ki[Ȧj50wn:!/ýҞSHjR-#B+ P|0lY$$equDS9v9GnIe)MӄysәtURz-ih +Y6Ym#"V-'VJ&ڢ =>yXQ_ \kO+bʹXggH* ࠝ;_(K՜B䤶@$N_?[-To{#~p)\R:FQci^9CX9,f$Q0\ݮH b`0o9TuV#KaE^EpVȯSbi;OkHbbYߊ7m 6fl G;7Vcjr5}[VTb^=Q{Gg8LJ:^j/Q"\D>X 9 msa4طύPB{CuM0)9 >!|[~8Ob 9)V]*Q02j|lG _*%n9̒k7cu\yN YFo˞nTbO _tGӹѩ+3LW@?ySn깅N {uУ>1G‰G#r4>wNXMjvi bn$ql Eq:8Ђ|rV[9~RwN$w& dʚu>u:/fQN:.?A):O|:K]C&􁗉8;f8Լ:Т%ݚ_5~"L.= .9ߝDr[@FyX\F: d8IJ/e?ڮgO"*}NW`~ {EUu6H!XdDX˫yTiIZ3 0Ujh65ZǢ:le'ſ+0y i)GRufl Fo'Iת0׭Q^n~`9ү.VtrQq`13913̉!Ꮙ!$<1_,9o^;كxKJQ4qbeTvR..f`9 X3 v 򘘍o<&fbyJL 4Hѱ&AQ6VŌihz#E-tWS so%720p"_n+O6'WM|4<ڽ29|b7wF9Zª,:IJJuwwz]+րOug x}(r؅uN(崸KWՐMף b9)MV"Nh4kτ= (6ɽ=VZ`VOjʊ]@QSZjkN':6EPt!HC4٬`q6ݑµP(`30?e%Vޣ_l:)ylNx)3TݍF}r("{I^컒aqx}vu{uk:ЕBWQA#%Χ2F;diJ Cx̋s@ͽ8rUXgSSǽT*R!=GSE Akfr}b%hrobKm$մ*jZg4\%}H]&(}%|eC^!ևq|SG{?@nFIGbw[jR K8i-#TʨH'"?'~07ޖڣ/g Yi|0OopkOyYl{,5eW+'9d~s_Qsj^E'(6c+uz׻ӵQ/AJXFcEq{|ܸ0g"$„Wj>tT6c]Co Ϗު/M UVe{æ ^ܧJMUjE8_@^ME/&ŭF> {H SwlŠaphOJCSJȴvvO+ H j7 = u1/1~*#T\Z^shC5 +\꦳Yە ."uA XZr[o3qDFݨVYذ\!H~ ǟk{ f P|8PBWXp)ٓXa[8 wQu Q\JCfI½:hNYI!$ O t ϫE ᥦa [ q ;~R] 7ECX΁w | *㝂ˁUBYf(V?ֹ\x)=LHwR4ޘ-Lzr?퀑&R4KXfW}e]nVոD\md߮'dt@BSDzࣶׯ)"5GJKNQ2(D?A\LWq7tsh&|ܭ C#1f)ز*͖1ao[^ؾ{WlZF'M;c|sh+aJP9Ƒ)}k s(;v Ի|XRȦ_{JWljR%S(_`J$KkφM8 A+fSӊf ghz\ࡤי͹h;  s\VsM+qJ%A~w^[с{!--"ŦhyT=c J<|kR!e}KPx'w =ԁ행وGLC"^^aTP)'t -#}Κn:v:qv>h8A)[-RNI Tv-UdDߓE4vgEJ2T˜W9Z:V:8һԈkH%FqABщ2MfzM3֪ܪdW1o^(|xTC6OuYn+L UURAC kUO.i匹ߎ(0] >C9'jd?-#E4.-yBY wȉ1nG<=P)Syg/6gTLX͠םQ7(nkz+O31_r6&i+ȱR%ܲ2fgIYh™QDĪaKO&XrM٢ѬkpjGt=}kFwHm2@G=(6~=>ؼ{YËg?:g)-垥Ÿg`kJf+0fe#bB T!Hթ+G k !EQO MķC{;xL*iJ9MtK> RVJEܶ _+\XPD{SV#)JKYzF^G.t9@`~2 &%9CtĭD&Eznlnn98;fA{k-3qDWw=(p1˾g9xϊ+h-`Oxeb0f㠡>BԑJSJx؞ Fdq+G:KDpTrBø?':FЁh"Ua4Mg84#]+=Raf%R+WR &Y~ThWX- ?#C/෰2xqR !W`^ uZ U 8)x7JI#f(r[h9V- m&pr{ή|* ɡFPRտ+8Cƣvr% 500wF!SB{f9z#g $s |a5[m,?Ax t8w`a彛ZGZ}Aq i+H? 4suI|]![1šx>Z ZVJ6UoY͸Pm~fKTpmFABl5 0{[6W>1h١_#V o/n:n!\&.54pl&d'r"W~pn¼e+L*__c#GMp@y|+J@$s^U!'IH 7%V}+#z>\z&UCxZoK*F8EC\ϋGz F}/; tH?:k`,P4𳱳=Ie 0e]N._=c% I`=Ł`S2sb2U;J ֚͌$S+LLV%A9> Ss@ AdkH;)@G2q:yi^oӌ6E9dQf"}&^D٥ϣn l@^ħp>qU|w pD/7IsҥZ[LNE!#2٢ū$'h'̡blF^O=yJ˩ty:IsFFc;l9:ƼwVY0mҰ;be1p1Y_ҁ\Iv7GHd"_&̝YB(U8!mKPne {m6Vlۓ6Tk<2yg ?/>!?E*rg Ά&LE/=]ІDR`/=]'2=Evf"H ƈޏGXY>GF,<{?`J[VUAX)~`x4lF&=Vw)K68MCP!T6~IGU|nXSG%- DBw,ݮ ]tR4U 7"+Α0p/ٟĿ- &ːA }/!%z-/ 'ݿ q|rx`-`ÓS1VɑJ#bX$px$ֳ_M:!Έ,7dfSg'5\( U{Ѧ1 &2ᬖ(^@N#DŽyy\YƵL^1IB}fb]ÎGOEAc4(zpǠ)NK'9tu$Njġ="adRٽH0XW15xgf~_ڨEсui[H4iU2Kj]WLOwOQ'+0UF_92/' G^` 8w0O at(q-"ք1xȬAjaPj3k]Qw,JG>촐scm|>O9J .%~h|$oX!;*9fEb=;D:ZtL,i%1@aOA`>OkM2ńZc\RL=\=Ss,hnxa=!0I^22X"z'X-?9p0(3/M 31{h'>a1k0 J2i4/'A)rx4{ Gmsm-Z2nwRi4]Lse?b.G5>|CyΙu|+eG"YNݯ"KrbD2,'SۧqJⵧqܨIfէ؈.yoqdG}?71+>{c٩Aw3޲[r}7>5:+ۛ4C=4TRLdG ~Z0 JPi0v cRvׁ9_CŌ3uqȊY;0 [C]P4?۳6]+' apUYP߅y 3 n0˒o?00<CN k Mv):~-l(<$b hTpؾjzxF HN`ʺiǙ/ >N3NƺO.WBLO.0L`!uߓ.JnD[)RmMun+v@]y߁n5I gθ.\pY),{J 1[,e-NΌn])ڸ}.Sq"3%)DӤe+CVdSWDv= OU1~.;LrW d^`;sX U4tK{< k䷫GX߮{|T_(+(_vCa\pvsX |`Fiv'OVm4ķXd:ϧuCu6qZ{巵/:7L)G)K-b(2giy`&cQ94j/%gkSJJjSJH&[dIo<*e'!JH1eGŭXKe.U>KhఃN^fO7M{dtsFʽj^؜KtIsL6n oWE#'XLJ)&03Xg7UK{μoc+7u*|C|WԸ 4S%!pv ѰQ+70ωs-gxhDj)ůzh)ŝI-ĩGl/Wh4{3eNWa30ҝ |W3@ ^a2|ѺUy.3^l<+IʱuT^2tTnlTmL1dϜC`$Z0m\Vgf¼`CJC@ϯܤ*SvSΊB`qguiA-kS?MOKuIFN~(.OCfsj2kD7ބ:[ݷWB56_]Ղ92 >UUWm%u?ݥPi#rY5NMZG药)+gT |7YӔ{fE^Ttf 4%n3z̲{jv(I1etjDd gT7 Wμaby`eN*9 !kQ/R0G]p#|;'z]YdիFj.Q mQ&&wd"+8 h~y"=2*_sKÕ_c,*s#ߋʸfq+YJ0@;|fVG'-q:i Hq+ _1,ݽ,41,.^6x:#5(XA " PlÄu~E3aj~ 6X8ɓ1tu^j(W\gIq*Y}亗uzZSwRM4zǜȎvu>tr ~s#9yҍבBytFBvFg6R yEE滏`ħ~,Á!SQtM* ܜރAb힓s].bvB\ b]&#k>{4ZSnaŵ0Z0zl'V@a )?r^[XgZ싄L3u掜,165[3js_gfj>_iqh¦i1p)b2TvP*$,P^!; y#F#pOIP1n˭dpNEWbV;z]R&zQF{RWDW"kn4w?9vNE!]maE {wi&LmräM>K5wMy]1q/MO+Ԯ|h2QQH`*c#։w?&YAoUA t*2{PCH,q;Ό[G$ɔSu^M9HJO;X4ɢ@5(u (X& mgG7W'3[XuZ|qU4*7jO]]&>gܥ{q6׼wB 3 !xt0Ϸ_y>6@?8F)6A?JyKcB̘N8&hjr"(p蜏>Xˁ`5}g9`YKZ<8N|.aP] na=1ue4_U ]_iWҪTMh]KT&ATV kGר-kg! ~ 0)2d;[XIY>ǜ.c*A Wr31(D䳥7Mmj >]e<#%k+"[ ikBy97E+8屏]d]tECa.\뗞Z#ԂRY!%2BWç>ɤss^UƆj7ػ2w<7t-2Y9x/Cg5NJԮFhhN6Fa=B atc/:Wu^œ*(d |0!g]S콾R0->Z~^ y5s6*ힳMlT3tllnLl;SUv:H 1%5bfu5bo }"&6R%~٥="I="qjwh l[dbWmz8s̡W5ʩ>V&5F{`ە:LQr,8,8ܥR)hI "xwcκ"<2)8ԣ@vV!OSu?010=Ȓ\R/dIh_x^peB3`_=j,0+(otG@YUO0pҹ8MsBAZN`U@'ZArԊ{se |?y(Mlx  mu|rEN/*B:ٽE}Fvo{˵Çj† v d7c_ENs&^%qܠ5)w3<oc aeDP'!^g}E/:-ӸOcH*%VwwMq1^(+7p =9h&-3CoL'^k5?stX~OǍ?F-!?_??ua endstream endobj 226 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 229 0 obj << /Length 2190 /Filter /FlateDecode >> stream x[Yo7~ׯX ֖r7hS z(Aeǵe;\'<׊{ȶ,+q1(CyI3,Dve&_`3sM2dI QeEaiqKsåLOkn ZfqB͠[OiSڎiƇucB-{egνE|x;>Dѝ ?hvb;mp &Ƕ_YqT|Gc2Ԍgxk({|~!8a]mLJ6O?k_&W'?0nrnpePAvIƎ8ׁtƩjƉv78 XNk[ Mq@"Z](Ɖ65BO MfSUƢ.;MO4ϚHaD $+Y'iCƾ_y9Zu[0 13ro.斏P:YFG@F̖*piV=iO5#1Cbh@Jf SI8bZ(P/oHb*sLB.n!IC(HDv UöLGD<->K ЋP!$U{O. EL̄r`U7g9*PTU!#ia(WaB'=dI+$XRVm 8(LW<I/$ eOd)̓>1#<;4i.Pf+ةy?_Z( L`:&ڎgA, Pke6߿ݽbحyF;ؽ endstream endobj 233 0 obj << /Length 3004 /Filter /FlateDecode >> stream xZo#Bp@,f%qiZ$H%m@ ݇:'{l@!9ܥdߣ@?kg͐$p/J1JjRJVjR5|rVw?~Bt/* 3>eP):WFϵ~(+mt3QMl5OOk{X z1Cu}e_пsk,qiE[3r^"o/f/\KdY%p+4a( =M4,gsr+-pvs~㮑f7,)6?\l~SOi~Tk ^^``,W%*lyeZT18wLe*φ}fl ~=eEv;O)pjqg>V1SnP,zw;0^:m$д3oۄh9';}5*ra5>Y-s-^ɤD9wgXm%; _1Ii_4Yfs_ NwëwlWbD{lc [3o *Gl٭|3=7#ZZ)b&/j@ TѽslKqCfk"K޷p.X L?ܼd6O|Kլ^:ճ4/*_zo\l>x_՚w Ɛq39-ۙl:k. Syգ͌kG]@~b h{4HR >ư0<.0W{ * `2so(/6!D)U,jbݷ-aW[Ay'Ȱߢ և)A}FQ4GZIVxaс\*]S7"9xu^ 0,ç T =U,V=WY2̣tNKrLjB1~|$v\ >gFtPs#4 fbMDl5[j@0Xx(ņ~UrIzp,/F.숿:bp%,u~Z(uY{rAp;H2o3[BR OK ֕t R8kgMtp?>n#./Kw@RtF>)ӧ7{kWzӍy[t\@QLlN'J啾e8пS)J.supFidYUATs5vCY0]Nbl=۪#ޖY9+ڠxd#d_pO;vclLD]kh1F 8`LK+fDƺ&itS֫Q@On Nd~n n 2O]+Qߺ"OF88)GtveJIS/f*FO/ƽ*Z$&1ɝ\:wсBR $:RغZ)15t|/Okվ%ڊ99PP_%(U%q2 V%׮ dnNt ۬]r-c7]|$CjPr:pA8эSWB zcd4.74>)qbSe8LpX)|5zeOgMC<-eU_&gOO04ѷ&eNݲ@ҟtԥm~7: L]^OT;rkgpi*e8'ې/@WD _5Idn3R .DGo[́I r3&  [viFX rM{6ɞ;U>bW9UͻW̐G r+Ûb5S— ˁ^F፭PE9JZ,%oD .[d]Sj utI'wnĺF8\ݖC" 蒛PhVx['qgX?01WGMP-wdq3\Av=Ǖj\!#/XshAI$IN(Cb~~_. endstream endobj 237 0 obj << /Length 2292 /Filter /FlateDecode >> stream xZێ6}Wi h*JA/hmh4,ͦmpHQ2%k{<ЖDr8pHDf̾:}5*cJ<ӒBeZ(EvΞ]ylES\b3ו)KsmRp2 s|m~^k/r+o{&㱚JK| v!qNpȕυRR+Rwe1E$a)xPE`bx) /P1]nP DE.b ^V ئIMw.)ɩJflJ3ֺ"j֦@Lh&{2eF)) D ٟޣa'D+K"s ~X*.%:\Ko 6 jL*Ug]}ˈsiHEx, `C?4eJ3"6/yBm7pp8]/ :}H]CڧďkwÌLyV(57v})?xK nwkt;p-Ybπ)))!8|Wy-6\! MWANX^Vz6l-_9]Ma mJU}Q _ - dY̟A)QG¬KK]qܴsYJ"hdT=I'8iBՒR%Zr F_.9+GK,`)%GW&D¡6&i@(|\5Y-TcxH7Oǧc]XbDŽ'b GwĨx};GİS'Nnh x:m={_^1zro(û(z0=< ` L݅)00Ly愨J{9 ') 0EW>lsiJT9!šyN[3mtkEsno_N|W/A9&ЗB?&Ћoەd`'D_^>p@5Y >?`{5o$>~!">"&| QD_@~ !ωӓd}9K>ko %e]9@gw\. G>f> stream xZKWtV-ǘR)Q*CFKR&TAȉ@̠{,$Wfagw/oonJI)jkU6_g6+ZTǩ(7BTU 6[en^YJawO@\[fZ5wT5=GwkkV~AjmY~mk?Dq}h,`C<կn*ЦԠe.jil7W/2qwL}ޓ,KNʅ.TW'!~z>e"UbVؼɏ?־s6)JQJgkHYdN7L-5!\j&sS#rNwf[ENK_"z![pFO_k;5ĹOR鐬b$u,ښʪ:BA/#Z0.k!P/ H3Z蒝쨔}-D:vӊS-T -q_(/}/l)|ݞjA`蛌e:Q6(0g%-lN({JǦcd3##BS:U:\Jz4.#&&:A:x(#W%"!}!"$6w@se9} # =;ǫG='D0_o~I=[_udgB1@0uJ^X"jHW¡,$'FG| x pP`6% *k0P3;z7kgVo%dzӦ|JU|}`".voN{zqꃈ9ͫzzCE3)ցǠЉ:D.B1Lw[w ">d+(fWѦmIk?6"NWt eЫfJPe}1%1"oICWjdgiCyɢ2%u!T͌ qo001ys-m!Idbہ1!bKFYv ))UF}́<-hlvHEˤ1 ^ߑ)7̗o` +"s#EOLwf$QFRsӾMʥDdʴ_bع?7)+r 9f.! 0ӧz% 9]NmȖ,VIVL&𜐷=u*H>:sCgxZ^ vjHh9[9B9QH R-е}\jwŀĪOqvN6C!+?{'@遛t9i:}h8ؠ/)|n~<ͻbJۏ` NH|u0O끊!%ٞ 3Ȯ g[-缩6XIAL{st=zW$Jz8ۮ@io֡놔t8 D {sϩȭ aj928jdftWVOZ/zG) OpUX#Xi"%R9!@{w?d:#-j$zXr# '߇-gn@X<'O?ע}3%d?gι~ K_%6w;R?-xgҕXpcd鲸]JuXVNK,0PF6gh'[ѳ{^1mcuG]<Ccෟjă?+"iKjN?v{h63g|^^E]0uƷ䍟|5?N.#rcK+{N2%ÀFyۃP #u׈vjlb^8f"a~I6js%n =]pgkG?`U*kw7Bf^ ~#\|/F{~/Nxf9  Kr^4[X%d̋'N]`OYnggڹQNA͔d2,,}\\%; jySzbаrۅw]4\m!$w.%}AN[2'y7; >}NWR.hKJ6|^ #-Q~>*z>{s endstream endobj 246 0 obj << /Length 853 /Filter /FlateDecode >> stream xڍUKs0+tHBԙ^&=9m18ɿ$0$JǷ1&|.5gpNR,VHgcin3(}|gDW5V_ç$i&#WHxSXm"L|"=gAIIߠaqnr1uS0I(WN#^vT[>%+Q*.'3"Ls h(\.}(|X<^\ .9dk[:&.7A 2(,OAiEO)|lfeT39Ł\t#~*Ed)wCDjC 7@?mB9AjquPsDKLHoی|i;;(w0/ Ĺ:U #&/ CNUi XI*+3յXVƯA' rtu_M煊 U8~,^zR}U=MRx2nGCw 2)zعS f JsCX; ),sjt]HUj߷+/pR"b> ,+|Уsf]7Mݬ!3EY&MF?-4%CD+)~jaZX9m 3Ngdf^Ws:̆F;8bX㗰>gܝ dd#t3֝;$MU=vrk"(g (b^ sD)p; CǺ gyH#<Ei8BT >~/RF1C}/ܻ_CxESXQG)OK endstream endobj 239 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-box1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 251 0 R /BBox [0 0 576 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 252 0 R>> /ExtGState << >>/ColorSpace << /sRGB 253 0 R >>>> /Length 1129 /Filter /FlateDecode >> stream xO7 )|LH隤- ޚJlC~%ٳ {0OȒ,ɃCw8x^]}{}˯7b8 9Lv<:^^w×A a]~5V19J {sw}s|wmohg1:"M;Kɧ F%s5_* r!Xu~^\ /~rnn9^_7<}i^\P/&V%zJ揅o7芄:<.D5 >cm`L133ڃ/e,3hn0ј1ORKwNLC&iYvq¤$LL4a%c.$M0=[/K: ȳuH e°-_(0GZƪk \Ɣe:yLZp|) M'M._gƮC&SDh:0df&|c}J|KӉfͧ|]gv*Svq[^lmufj1߰c$ ƢEeĬ-/YtVl6fZ|;'r/_gR)_gBcq a=Ht"SgL}:u:3F0NZcІ6 5(v=4޿PI-;Bڙxtՙ"bA&eoĬ*ڹי2+3 Sv2S`J5QfC&[fXgiSɈL:O`k̢:RW1bk6;Ƥ?#:O!kHi”M ٘R#̤u&ګNqf5f\gf+Œd̍}*Q+t֙:Dg9_14F.3l0u n!`efB̩?-[cYgqA87~q^p-ȡ~u^XxJJ)2. endstream endobj 255 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 258 0 obj << /Length 1829 /Filter /FlateDecode >> stream xYKs6WhCiA48m'msnN2E=Y'RI9P$ov:ZR>wF*r4]l& mFy^ Gj|9z?Ij~'HR2s`2nԌڶJwד$QOu J 7$ZKa` ,6/F$Rl|h58Y|4*=R( ^PPy餽Feh 7k>{7Pӓ FXϐp?.4LJō}Jj6hxj?0Qvn'n?N @$tܶ;Iu/' ~=PbT^߆ !I @qMڏ@iQ*Ɋ$tT['`ihs{q[(̞L((Z *_.a ިٔv{֩v3oՎ e3?;CXz2 ]=^*{&Ne9ř%|D~:g )SČoJ#_ú}ECJT@7a*YUDs԰_$;_7GֹP2:hwl[qx]SjF[37١92Wd@*r. , t&ƴŚ=XhTc|1fL iXzU<[I8$`H|sN]W [uY{r#M6 a8qUD?&,aٻuSi =-rƧ3|7y^ -;F3!G;uDwVXMLOAێ>LbdZأLQ'FQ+C>|v+|0М[{3{CM6DCSLat6|v/ӒՇ=쯗()!9~q=FVy}4u?MKrў*-%čr|_y}FDnǯw66Z^{%<43/zƖW0+{rVJnoAmn#Vr.G .N;|X'G"8Z::8!WWvQ hܸ`۶ M}/@`U]Q8lw5 %GV377X#O$/dEǎ_#}jið [ [2?Djm- CӡGNcɥ=1}lS5Rc03|Qv|JtTI&t%a>36hj8\Jl%wCK Umh0TΗd1)ϧ.N_C%wyn izJA/їC||"a^2zF/Bl1S&C0&n8mðZϝZF0 zb{C;7mћ؛z~yZ?&! & "ό$SG?Lm?iN endstream endobj 265 0 obj << /Length 2899 /Filter /FlateDecode >> stream xZKsWrj- L*d6[Zv@K-z$j=ʏ@%y9@"Ak4cu1ꟜfI6U_<SY#D>^OeZ bz6/jYwlԵU|Qbk_jV^y^ s:$T"_B ?}[d\qrՎ'5쏹vrYv~0LL~UB7|s=y?Z ~j5䷷t}TçOô$\K~?u$;NF^)`Y5lXYp+T5_ .pڈPT𾀫Kil;U*8\ i*}e0%j!/ Q~N ׿j (JO- 2B c4(ԣ&8T(6ed@:x#@hy吼A  @`QL&Qo'\)L%]GE* }(d*K;&17J/O+} bI~'g_P IP8~r8t< _@9 Br@ ?92IM:ȓ?X I. d"~ h,&hj9P(cByc bQ4Z OewH᷺3lޔ>~M7* C5|y.pU|}},qXuQueL{K[7gd/YYV+*ZʂAZ j4 Wl!YpVJ>2zR]YQ9y;{֠h6|v{g3O퉞GܷFP}ͽzz-NOBrV1ډ5(哾a{3!PSw], _N(\)ۂ=R]2Q|=WH %0S[tKs%l 1q5Fvvv}g}gR/r]M߻ڙӫ8܃elAkA$ 6 %Fm,ح ;J%嬁 M0G,F\ȟ`a`$cw[)]{i~2G/αxAt9,Z5mʃs4-$ x<\WcDl(.I1ž?V̳YO&bU&0P?a3.VJVHVx?qkgͬ=\ȸBWFuL5NW2QPYp49 xلXXP{QÔ6&Iz2s\Rn2w?/v*RdM%ʪIf򼜽(TM_6B=Er衳-MX&9s xGlQvV:@>t"@Oep,/]7!Cj:fejj.1>9n+aA䖔^NzgWB)L[@oocrU2jw"U2Q2YI?(|G$!#(e)#F3hBL v!VqRȑj1;U=k4g#ƫƢİTNu1[$ЎQp~4sV&\ ޸Hб/XzC&Zg)9;OrS ~̅ V m)ĢK]5M&8&µd{[]n>X#5<.ь)QF}FY" $4RF2Y w۝/Ҽu My]ꂿ]V+d9 T*x7=zf'EsVe\iwx s#,lG$VW "Is1V]]ѝ.LN8ڜ> tt:KKQZpȋQ{_X[Z?FԂ7nw[hR9;ԦyS[[w-F+M; #Oj 5;&c7t =Œ%|śƌ #^> ^g,WEz&PQ(yp$Lե;E%+qGA1eL0^}3+[bEL"*_|8#y|)i>x)}>_Yς(p7l991Tѧ9љڕܨ6}*,yR8lGqx l6&՜RME Ay_>%srA' hCq<#\h9Uz_0 endstream endobj 269 0 obj << /Length 3382 /Filter /FlateDecode >> stream xk ΌH=(5ȇ+4E.Ihey{E{!e{}K3y8=̲_orw[)f,n5r&e&-g-?}[Ţbu-^&`0KyVҵfhpۅKXom=n(燕G )rm-Xí|{ף0dj_zn~p7qϭY3v7͖pYY͊J2& 978,-+*>ԕiuw@C nnnE=V8; pixK`,y[Hv,fɽU8{{PXU(i|:.Zڣ1X[^cᆒJ/'C20w VaF{e!N^yJ(^xA4X2O%ly9Ӧ?Lb uGl` &*]+Y!(uY3,q'N0!+QZ$96/W#O1ߛʼnKHYYHVk6g)Py2jÓ\TNJʊONͲm* ⑼nxVG+b P]L,&4!_fH*/7U(XeL=7Dv5}}1ҟ4.~9Ǖ.`qʔjJ0.^dPPO8 ##4L yy:Hx Xl=Kޭ,]h&8[BB*EdY!+r|]Zzt(|.@ʤ~):(4\ nt,iDDsoī`bmN"eEjH~$*0ŋZN`u^ԤWBepѝr{Bd'¨7+d:\P̯h#E82Z!2zstdqYOyb|bVt8 lf =Myyh<}<FJ42pggSSq.ɏ3g]?:^]%t |iX3Ӏ1/maɜ_vA}GLcY;]du}\O2Q6k7G4-mӜa0HLqD+vW_kfuHró%eRLmpˡ{n?c+_ݶ8rWwpu}mJ ֩2{[WNk]=s>ӓlj,꜎xƪ#O+OS"wWa1 ;Dk.p!gӅaz' #a[F\c2*!6'|"msM 6Jפu آ.Quؽk4o}'-h0Y&kn k՛ ﰬU5A=Q QEh@xzYq=vGW;)g[|ڳE-V%[tqnzi-O.rfQ~f#i hYlIoA>B7Pay`Egr8͑9Ɂ,|((i'!v穈g:uN4tHw,NGn,Ѭo2Pl%7=8 ^6DAƧIҵ{uFZ$Rja`o||86dUKwr8!!nɄ$ [?J!䔱OArf$Mm411iC$<7O4{qv=QDp̀[Fx( ` @"V, Mqq21j;l\d@O/`!վR$ c7q^y 6ؑw6`Ӭ~1}88rH곢3Z5a!9X%d"1} @<JTusn&1!l˚ҕL+F派?ss-&ŀZx@&hRF>{LO~?-\9k gV:mkfψC߷ F$1u$m2D 3 Co@yɐZSjM˴]UU%auPu%^pL|mZրSssn [nN^i GdA$m2 " -/ [Z? " pbN*9T _8gSrZ-6Y?ĉ*ba\ߐŸ&ˆA ΰ@Ci 5k -MD0*- W|zd28HN+u ~f<>DzN}G#TzLK@ݨ?\=caB"û\U50EDd4nr99mȨJBDsK$g\pS:6${Dg?߁$7I8y|u8~zI i'$^4m!FpVqĸU**%jGcHZM}0hNiZ yO#Oo|%LO6ng>3Ż1WXε;t>%rwq蟞U GT endstream endobj 274 0 obj << /Length 2992 /Filter /FlateDecode >> stream xڝZ[s~4f L6N3۬g䁦hK,iMi8<A8\|v7g7oUgJeKԳYf]fE=_-|ؚ?su, =}8ځz~k~?͟o?-T!Py1$o뿴H/t:+ ~Ů}?CeReU$Wᛧ|4CwXXU-Dm]xx>S^:r?\[>[g?L͞`ìQVpه_R!mriV^fUpzK,=2eǿ}=?Asi@MO>x-{(g{ע-kxw#Ubi̝u|궧!iƈ:x}wuCco9J+߃6˲ngʪjFF),Byǝ4펛cw|R\֕9^ޑX#hFB8v_)&ҋ#.u$5ސNcrם7TTUMVPp"iiV˸OܜPyh Fm($Yw1%\lp!2lӇw,@m;26+<yӳ^'^^ba`hZ =m-3ļʸ(|038]1B+('#jO!^iF`>ᖓލHLV^?~"4T;qiE":(Jt`@nq؛>^v:ccz\b}lDVĥ;6>q}e/ؘ j8 s:1Li!6Ӳuk6n>p-@QbEpVQ "#ʬr!&xwXe' '' &,N/KɟטwOh%c)ԽAchq:'Ǡg5ɟ-6O|!l9eEz_u0+/i\ .6aC$Ȟ+^6D#Z Edg{lp61i䎞dwr m+րX%[T@-`),0eNJgdϊ6ӭ ټ؇H<~KAr=h@A:w:a@Ry^+GyC$ ]'wd^x܊S)d LZs-UӵjzV!!YX]R4;qDoj c $ Kpۖ~g4gIR_ 64KG^5{J4ь42r孥-~ $(Z&$bmXXv;4, Αv2Ӎ`.hd?g}gH@:?BVJ+XQYY+I& B:6Te~IEatiHaӚAǂ4 th7Ia$ꞁPeT"bto{J:/j/6HW₣$՟DDe~ {>G (_ ~}AMޛ0q:F:N!D!haNBB3Mg|$ꅶraXqytE5KzͪqBd];='8.+th=>ܺVvA-a{dXAF<'\MXf2DdTjJZwɳ<1L-h_ ;qt4yrcnHe uU}C`|<۵nH)sxǞAn>Hv}>I;Ee#7֤m;b>8e'gBˁ80ޭ:4fz0'12g> stream xZ[o7~ׯ, m m,nt;$[q%9N<QM7[ y*_$O[JDCHb(F9}3ybF(BR!1,1)$# Kk zEY>˓u8a4l!O  חD~ axf;ˉӈnҳwwyzL?X.sjK8gMMtGMȕ:VRE}^Q PFR ]Jx4U _!Bu.^ulG^CRVLul7͞שܙI"3*R&iI+#hns%ݮ]NmA(s#uВ|+}|ξD&A.a~ }(WJ ;P##na:ޮg>?[ݤT SOlP&LOX.~=dX$ClSVdKx%db%5e^K,{^Rٚ%8^4L%̘]ѼO4SyJԬ28t,LtFW%&EB!' ɮ.m[Y6; 3-u ps)9^CZ>ZmlgTFN/1|Eϼu6`Ț-bb*b>Z>'vL,hƾE:d ફ,6 &ik?7^> T cFSߙw2Jԟa%(/P\^ToBGG[a{ ϸ N{ zRj=4Y&bXǵb](EF{HbUeGFYzW \D(d `̣5 .tRh!sT B"W#5]NSsIYa^Nlv5k8j'/"%IA4C'E;$~nbFsZP ~6.y-rȽ "0 `B'?oB8>Nd;P"˘dʶ̗) 2 W [$f:Ǩc9cpMLPAZf'8x"ĊHLZ,ޤl mHf8b&2v!P5'm#`Gco?Vga=݅w6s.ޣsko\gb|5t? endstream endobj 282 0 obj << /Length 2345 /Filter /FlateDecode >> stream xY[o6~>ؘ+R(N tinh;y(0VbO(-%o2dEdɼw.<̳,Ͼ|/i.2JI-/3IULʚTuljF͍٨V=WyĴ[Aw^U?ٻo[\"VVTϯrb AS("ڧ2n'15%ק}٩wXVXDʮK@M'Lj3e.l}g+M=mKI$ՂL~c풼&f9"djngR _"iҬ˼k%̗|$-fu픧)fHIBk'.2󢘞2@SL@Fs]@gic֨E=UgU;iд 4Z2wlA~-Ӛ^K޼4Lqfi?×֖SԆ9bYtH 0C4(5z[Ӽu QlFJa'e݀__Fl)PHHt_45hr2rHN-δ6I1RΣܡ(3pY HY {G'lr.MYŦI$+k١̮R6Vj tŜӝ6esj~XT S +j| Ё+x%$9>X^+juJvħ ' +@g?;\^1O!pZ \L2*#%$e)dwzi &pWX JPGuAB5hծr3 X*5)Ga "U&5Vn=y%.rg#2ts*Vh[bXADdxoƱ!=ҴFRܾve)8lNNx+̸ruψpsԄPOOʹ5 g?YDVxwh@  u۠\ nHp9,Y ^wo ȃ3T7@;z4cIBqk .;l7 y3b mUU]-"_j|j%`>e`u!, !|x ښ㉛Tg反OϚ%Đv߁?ZX u!@OI| t=-߄?>ҟEz"pu_Ȩ| D"]Bl\2G@mdCmyvqEwͭ𾔆3ɥ%`.:J0(UpO*Q< [,+6ыO#>K\sp<ZG )t1>R pGA  Ǻ{3 cp ON]f QqVjF ޖZn ;Yh]ђPO Nʃx@>9M^QT6§JMЕ u# u9oQ9޶k!uu,N捉%z +de]vZ^OtIJ>j[U䋏^5ѪQոq븒3tuSRPu|\ >a}<^3~$aܬO}-:cyK_KT=ӵ>S onQ*xn ~td7@s,uĨ|^)wCw*{w+[@дpM0ZpSzj,?ylFTx5VGnBg Zsw;y/&|[<ս=II"T)7,o¨PRH02(Q}B8Su|8; $w endstream endobj 290 0 obj << /Length 2674 /Filter /FlateDecode >> stream xڵZms_qqý_jmN(mZeڎg("y,L{8eNoϾBq*$u78t9zL")EIt ,kQit9ގDɻo_NRNJ  $T9^tρ]ß<[x&gi-{hj9(>TƢJP&I9=xvz͹S%EZ$fwj#8 El3z.-ZFHTZG0E"Rgk咖H._®zxf%uVm&<U BYb@0(McQb8rf(/7$5dO|F4ぶU][teW_ 6A%"M<4'V["nBTih,y] n ,Nb̃hymUeT9R)d" MUE {QfN-mm .tkGiPzV|E>Gf S3kAfe",_jYq?Aj5ϓ:LjCېFZQK)ԍL4IhgߣҾ&F0[2+*fGo {.k[]m]|s=.&G˖LZw6d6=A?Xsm`3lP_i(*Pe+hQ `9AV!wz_hՍQ]c',p?yDg gO7cϪsM yROoܓ<Վ\ZҮZq•F4-Hۨ=tIZB?=mMLgiMriCGwٝjKj5^ $RwKSa#äO9rG f\kQ|싎՗dS,3c8wD,~b$(#jn _LrIbg̶N 7Ɵ{mNҒ[t $/.Bi0Q6U_VAOEzS,M.~9C d[b]iDq--ְ):ͫ8KO4cm7Dg1nJǥF{\z!ue##հx9ʾR{÷~#mdkaǶJ.{CRO1SRB(&cSb` 2:6&p>ɡAÕ0u\;YC>-}XU68gkLP$C0R}8 c˃IK|U95yVnÛÉibdԣCaxNV ;)t1-X{ë~o&ΩM@E⽠CS0Wy`1(b'c.8 endstream endobj 294 0 obj << /Length 1530 /Filter /FlateDecode >> stream xڽW[6 ~ϯ0 pcUe[/CuX}cׇQe>9E_6E?ƒ}_V?oV BޯB: ɩO=ASSbnVO69Ĵ! KxNWoxP3|@SRʹ0?W/W6==!KyęfݬX7pHI[&˘`Mpb@+Dj#JTa3Rqn˔o*X(P,m敇V\vL|C]5Iľ/ꁖwgYКPTmÿ0 "PL)⡯(p(F"0f'cXI'+lcktQCcuZ#6N]hvKOROL)Dz5{G3X壙2#g 0 /$Yf0tYӜ&$JF8])JF*v+Ʃ|U +bMNCN.c> /ExtGState << /GS1 299 0 R /GS257 300 0 R >>/ColorSpace << /sRGB 301 0 R >>>> /Length 1264 /Filter /FlateDecode >> stream xn\7 )E٤m)zHR'1N;@DAfg@S!? KC|ܞ&xN?}6̯k|C/O'W9~^= |mm#syl]7eRhpw' /`M,Wsbnv_a;Cl?0T֜wn7%6%8*%8\FZ >\fpsv=SؖںU%mӭgmJӯQF`5_e Uz"- xB`vd}l|zpW>y(}ŋ=߼?TLbYzyk96go_6/]hy4yq",G{wwO_w$ß*Z^<+n)؜ >!q,(:nIs-c)6 o"/Wfyqԉ;]ɳv [v%6iA![Nb#}HQ&P{sk%$JAڔb5d$~F=Hj~MbKЗ1vţ|;z*FS;*l` $;v y8R/,vF=ؔ{}zp?بbq qrq冬#q屷hEKy#y' ->p  ]E/G=Q,eeWmWӣ$vD.R˧&ysbԓ"ôk?/mMuyz} _SiHn7w+6^XS^!SOǸyuCa > stream xZ]s۶}c;Τvf$i{=~`(e_,Gmդ}HK`vX{'d AO#xuQh-"TZ:jiDi'"]iT'cl0 @VJ@6GSO3T@ĀaA0},Bb2y d t$7@Bee F:`+Ѱ \_=s(a"5ٳ,739 x֠ɦ;4<)@56b_~寗mՈKx!wՇF\eh~[#Uf=ob,U;w۪oI]| .y"h KtmF|@ * = Z,~ߴ_rR-ۑUM*?G^n%2:d^*L6@8'#i=o{+w _/ʺz6+>cNS^zGVZ9/+FŮJ⒗ֻ?0UFR գv#4D$mG@˻H=Eu v,z8r?@Ym!Lj̝\ޕ8,m㬿3G&oXߤaVGT<]wn;*@%(P.{ >jƥt/IըCgeFZX%NFk_7e%ⶩsiD6Vct6tl Ʃ%+Yڐ3INt ?:M9?W$Lv=jjs 5F9_VQ4_V)7A3M=T(y~YAe GCU.1&uy 'N}M\Ϧź7yk^(݃~$?2%#cNڣ  nu'jƇ[(XC(D[2#ت>|ٻDpY2nң1~ƍfa8hDN`>KS1DCܹZȺ5+ޞԡ/4ԡh?7.# cp;O=$߸~,FLMCdj5ȐF=Cz3f)#iWه JЦal2o9<Ǣؿۢ(}T'*WKtDg*0OI0 "jrNx{mBaڴJcsQgԏFL}No(a hcY¥]:^eVFM endstream endobj 303 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 307 0 obj << /Length 2652 /Filter /FlateDecode >> stream xڽZo7BP@B-fI8Grp}pe[%9u܇oHΐ]r\> $H&&(\?9;zR)ESjrv1rXLu'gS5l/U)R~K2+\YZ54lp-gs鹽ӛCSL[aV2T}Le&ϗZM0/WMpwX.wfו#YUd ]*ʈљG/ΎImPd!,Gdsx=AN$/+QIoGe7]\b7"I][Y-[.`EtϨΨs߸G;kEonQV֒ޢ{7q2OA w{6V~&]e.tlqyZ}V[rX#uT=wvs ќ %@z *0 .|7a :`ExQ7X-9MRt;%eG**څ)Le6@nf~GZ : ^73]G˶e&lypt7hI6dA^!  ȗ /NS$)i?>jPNrCalK,75p(.@:aH_*QgټPzznnsw{3Ʋ $Q#n$]NOzw8ϟ٠αN8;"H[j̗ڪ$Y`!vUP0qVfYEʊڢ) ?7(6A^:(4|}l~Љ:j:GI~CC3_PNɽ-Y^l0Y\vKu~aNkK5ڗ** È!CE"[96 ,( 3ǎm6NjԻGS 1낰v}pJe*QQ=I[hT-ce%Fw\wQaLR1 ^>)J UlIGH+MDVr˦& \bUc2{+ǬxlF2U3\vMںj^~>^ Ľb`hhM~j#TSL|SLf)& wOLެ+Dk މx|-n]u3[Lvk~ ?"щ-L{o]#; ġʴ Rpi`hmLTJqq%)2=5ǡvN H1XD@@mhCPʸy7'{2lF7qxc<< u/#ݯ1Z 5xKr^jD|rza[3I\{ sK%'fՈ]SyN:vjTa'nSnԸfY ž$]q4)!e9WYToϼ잀'9/ae{{T|o$uJwi^RCtHlz5Bns;m> stream xڭWQs6 ~;y%k.K-ͺ[WaAۍm%~T$@I ׁ,:2.V*SAH< He|(j <[x(Q:ܕ0ng,fa_B>RfY_mV3k%Q9 d-s٤=GZ6va7<ұYil&Ɏ YBa^vYlZKe/O4iAVmni؎ q :^wuUVz=rd)K_(䶌K%LdU *m臕bF/jo;ݖ%#O59Zi`+UxbP~G{ *]BgVrj!}T!-²Ń~@[]mz|¦-wj00-E&i1t h, xW,4Nx3C# Z#wޯڥ3 uk|01k3;2 M -˹x8+3)wfpvN{,("SuCc8O<n^y4sK%9 #HtCLjk01^g@c 9;aM`CdNלmֹb?vi^i?iŃϋ@uq^> /ExtGState << /GS1 319 0 R /GS257 320 0 R >>/ColorSpace << /sRGB 321 0 R >>>> /Length 22217 /Filter /FlateDecode >> stream xK=IݷOsKn@H.ѐҠ  s~7Xepw{s|Wǯuo??/R?R/c}_뫷z}嫭]_j34~Z]6?~wie?}~vrޫ}?p$kWs/_wΏRw<~ǵywq{x1><W%_뻎|U?W(i6?~~he?~O|˳ܷ?;Z_y=}beڿ˾˗z߯_b_Q7t΅?_7_owޏg}&Y/?K?}ŭ|ߴ?u_ܶ|@i?_ s'U~ yY ~"kּb{Y*7U ~5g8VŗDzvSz<ǖ5%]W\QO8šqVa8WtiVɫ񽷥o?WOmpÌ+:}3V \eI^#/ʮXV kObȺ϶f\mOsջštq'){􍷵BkzJ5GX=zW:Eɷ`v~MXimF3mG kYj>3u?xiXݧ^߆>֊>W))wv[sɺ~7Wf]Mw{r-֎r{ o**wv/8Y|;9͝'lߑܦa?񙷙glCt"% δypEDY¯K$$jUnOw{)a^iik~g RA=rG}ϸ(~z^AgPإ/ST﷌\/y:¾xʨxlK/ӪʌǢ׬u>.x,:+Ԧ ||,5chGcՆ t6hci?~tṃ&n[[Q'Q8Xܶܧ"N>uH#6jW|p7Cܖ|Gx]K(:^+Un-r^1>b [\j܆?=nQz8+;}r~rqvP0&c| %6:v28%nc5۷ |D9q:/)oKNPa_W"*,pm]}oy63Rfn_yt5ސ2nYi0C;V 3߄"U?0WO|PIq> ed\fE.Mz;ˇYjvxy8)EWP̭"\i7- 3׽r|{&^^vMT('D)0=KQfFL-bML'{{[$2"UxK)DF1ofy*7=KMyYio+ɝ\r*O>Kr̽3>^ʽOiάd~߃ i0@/%Z*vq]43LP !BCǚA[5W([>ɟfM#6pwcQ"!ESJ%yg$(|Go}k0Ӯo_9jw}x9V.w`[N-{D[mʥ~vaxnYdE޵}ӷ;ߧ(io)^i`o=v.N/twקhGM2̯7:_m;:E_on ٝAWȲ޶G$~.΅hm赸Gt[/~_o,Fz(IDSѯ>X{ER-mϏL"rhقXmO~.XhFXi+8Pc*y޶2ێ㸺vaKa^6G&a+ڸpzXVt4|_ehc}v͟KVwY}v3gDy|o[\1Ѳ*:1:myۊdjLOv$~ڹ~KקaN;4*؞q gFk82OOT@;"Ϋe|?k(Q4y[A{"!:^X߷z9Mو;wǼ;Z&ohHb}}Fhf矌Kِο۞Ww:Eq6plf6D3[0wǵMqARؙQT}>EArVjjw`U:&~z,E3_: {F{gرz x?/?'e3}z?ƶtC~ <8+>/cFϓV|8)<5kWjϳH\9⼻mU_|nw8/u id_|^oyqk/xiD΂ /igS?wO&_7ğ8/mxs8ވ0H׫xdN_W"+ݟxg| I/a܏x*ʊoMcExRpNMn⿈0U _q<9h9GǣcWo}Ƴc8^s{ێv:ӃV?Z?7^4JgQ(w н|jA5Xq|qM7G|9_쇿W>to|3vz_桻lQ|6(tf Kt3w3:?w7{t3:ݑt3t3 =t3&w3y?w~^ztMKyV=Ӎrwv=&g7c߹s/sş e׃>6y݌r)g7vϨ^G֡5.z/{S#گOxgE>tk'^^34>5ڦ}z'9}n?98&ycDL1sL|cٽL͎i@Y\>3}L31դF~g7')Z9mOQQEN%lru9K9rK 92嶧~QneUG9J*GYM{:9J4#(GY+G;ΰM(G#(#Q8lր>SL>gtVv5Hv*ݛ5Z/ŴwG1rȚ0cX3r} w)fc}搜e[5ad4Bd>ք󆭜-&&쭿?yF&^՚cH'#bn٬ [9eylٲv1ϯ"[ߗIK?郶!#a/]#O2H[n#P^u}ao{zi>X> ڱulr}o`Žog{=/,|>|l}޶71Oo΍v}t}#Zvn/czLj]ח/s:r᤽l__N__V]jD#Si /~iwKקɀ/s:/C/S c[j8W~~:i[}]{2rKS0~|_!0}k(+i/۫YM;W=ۧp>vOڹP~k~>?uF߯ 9ykz?zy|?O7G<6'z^aǬEQ#^WfX^cٴJ%S,bY]mt>k=jzަ~Oa_oq \쿈GZGjDZ q_H_tı9?ΛpZ:Oz 7>p[Z_:ӭ}ixz$/I 5/z$5'z$<=jH=UHzk? ǚ== VC# Gvz-gǜ㚒5?z$szO.(˶3 `^TOcBכ5{ףzGzl2YpƅOg|}9xJ|Bgݮ~uOש-Z \j>0>Ͽ2d`+fI1ES:戟VL8"b"Չa}r"<+&$WLGzcjL"1}bj1]=d!,K1bx铏cǤNbv;Aۈ[!fnf S7sgc(+V;o伎_#gh1s3gwN6חmCEG??٧Ĵ>v8;5eg1+9#cւ1ruwč;cjȳa˧F÷e - |:c}}ێ۟]bv3Sc< ߯)Ž3Sq,)&:0 [U'lN&Waptb<}$2̴s=doKח5v6缿߮(=jv{v&E/K]sҰz_!w؎ݍ3mv`|_v)X [Ca/-Z>fs= Õ-k|MYao'$e8S%}vĀ9x&Di{j?]~ߎ%bn±̴s5%7ӱTv,r<Þy޴ մ״}t>Ln :];׷sVַn<\R]]<K;?_hy~4anG9RwͽP}#|l-˴yY [ϯe%:bOkVkih5/.=O8yn8Y|rMƂ?ݿձ츆;W199ߘ԰LzWfw Lb}OFɇBE|iڟOMzηNS>ig|.Z\`#)_uO|^ia̯7=N=zH=0H*{$H {$|HTæGR4_#FWw j j֮ ^zK~cUfO3/]ov0>zޱ KMGT?oqQBOJnG1Jy}Z}p<ϧO$FrrsWQ&gQ?WF9$QQQ(\rm96Ne_(Qv!FR@%(1R)Gٮ;#Gٮ M9ʞ8Q(5rm'9^I(9&gvɝlsQ&P]7&G9l+w)G9>Qn{7G9Ƒ9ʩ\rӸ>(XurcAz$)_²}T# B Tp;cnJb@D=u(IR 9Tߘ')2lݟ$A2UN3_^}+8Ϥ9F: F>1>ߛ  H㥟v [9m=wTgz#w^ث]u}h(}vF62jxO[kBX#WڊɃwyJ b[1L{؊#Xi {cj:P(G N[aJz)GRJ[s&0|3m$V&J(l`>+%Y>OuJ[?$RJ̥k!0w0V| Syr4t^[vNG)llO:v'ioG'%ctTiO[do/aMַkmooj͡ɘK{)ih}[i(yp79iZ4oRZ>NV 줄T`N ]m7?S d2>GIai׬vTҞW/l~|e?zΑz︟cpyyF?X+ˤ{)~{=m+M7gnkwe?i?vWD~CaF*y>2N`Ux2f]~>&մVYyR4.2RqNj>oUy.{ޏy/0̥_ z*' 9(R5{Aa7y NiڭTE_GXV>y7nߍS# 8K^>5z+!z;숇RGFj@ٶ+mڤ Ɩ:z` $ж kxrA_nh|-$aFM!!p]ǐQfE2[Kn);n n%ML^|$٤̷]nl6J~m'-5@J| #-M"R K—iГ_!$Py)*fEiҞdEop&Jqv.]^ )JnD0z]1WBS*G$._s83%%y ܌\B [4DyϓA;VZbBR)iby!=Xgcq~zovkD$z\APVz K[O1sОM]ҰQ.,#ʳף$+eګGle[p(^h5XWire ʺWCWڋQ/u^mj/Rk91n5ҋFr-wW+Z?G]Zx9FBZ<:ߟ.cJЊD{PжC{^,vÖZ^DkŊRڋmk/>^D+Eg^?öv;ڌ^D jo@PZ=T:ʴwF;fsBz6v.?}7wF;fszgGil.1cvcEj+-)VV>c1(G+;Nhyxl1֎,Ďpc6/klkc#$v?ⱌM׎e5/n;\pc\~kgƬE'YYvAYѦvihH;4u\E;dv8:[;` i3.vAKYLA;Yhg{@juO ,f5!iMH+B Z#Z&~EqSVU[Z¸~qYO- 7km\.Ģq9CA(8<#[ZDJZ +kȵJk Z$UB -k%^M-b^N8pA8R^\\<*sA?8~ Z,IpU g]2 㠍.p=\pKp!8B`yyx™^\#^= -#RK܇ ;{xH> /^zUu͵ѢٟZLu!Zh7OUn{J@1Qy0k0&fM? sp pry8PL0\Lx0qQv3r>J1''J!fVNY̼̜3UsZ-uffl\FY<3un\00[aNL9<f23 3b0-a.P|f.O<*cKj5̒B2aII,zĒZÒZ0͒Zw K*ĒZԓXR5XR YRkjKذZVXRdKjJ3K=% ԃ2K3K %XRe*(<`K KjoK%5`i%,2XQJU,6, 6, +,9,5a=zpX++DDž>8#U>ǎI_}wL#GzX7vW yWȑ?pta?;(yW*cǦsex*1fЎ9;v́sO^s}1gCc'wy;朗GX#{pspK4NbGy=y^}nȬ!8ҫm" 88UpX/ï^^-՚w%ܳq8܇WdÃ1 p8 m#6r~pnX8epgs.X88if~. t7 Z(qqeā0'#/3/C/]8ufc/q5qpL'O }EK8 .8Z|_+<+8y+<6y؄G4x<5O+6N{ OYx̃GRϢK ZFuWG#<fD#_>LZ+d;<.6u+^wuэ]wl ^\zf՘,A׫W]c^ݫtl)W@t:_t-nAa ^tg"zc ^=Yz {x?>Aכ#MAכ{Q7t5ItmOAכ+悮tV"zsf&zsOf԰S]oKtGyǂw#~]:\BA׻'3t[Ej]&zw!zwV#z_Zuw Oꁠ1mm] NMĂ*$:]^&0\aƎ{C8AׇW!"yFT ]WmW>\b6t}t}t}dat [ @ z@iACקuOU0t}Za9t(dԘ\vc pǂ/JFW_eU*%b}5YC\F.F |PvyZF.rޮ=Rv̛4v],an̛v3P |5#ʗa왰!k2HJm!gPa=rl[Xns EͼQ!l#nlkIמ\5ᵧ <<11IFbly"kO(ڇz"\y }zPC= 2,PyD yBV =VO{]L 2<Ŵvi Vx˪iFi4# Ƌ œ1Oj<- izVaqxz1XU<-Ӥ+쀧-Ӗ4Wi˃p16]zA 6vi3Eŕ9 !i6x~xZia}nVE€OG~_xZ,xj>x xF3ℌoiZqсс~-(t;6:p3:pR:p2:i۠ :p:p:78^t 6:pf`tmjtL2:pk7:p2i9A' 8:`ttgt8A8dɚdRO\0YsoO\9=YsU&sj沊65m`]dMz4ɚlɚk2S5 ۓ4YsmT<5Ys}{&k^N:U9:UTu֩N>0YKk5RN(2u ze=;$XʶN scXR .[S^ujL4֩MGcG:5::5`Hc V:5ZZsԚbK֠z0E)4wZb*Sk#ȍBÕkcs!7Fn ::MuBNlN#v:gNQHX*BOuE1aur#ڇBYO?Ns{4SsutuZfuZW`(BP^7R~<EEފз[3CkH'E(IzqY%#7ҭuV<@ȍtk(xܨHU( n YJb;tBnby&F1!I v͔mTߞG;[ȍp[Щ .Emi n@n>b᦮EDuۧ~Lr#'r#V$;$ H+BWCT+͔.QDz((B ]l""AjEh:QP@4r_ȍR~"7 Fnˍ(Qx#7 FnP_Q@>QP6r,>Oȍb:ȍȍ4rܨfSx%ܨ`!7* Fno'v c/Y;lMdP)٭cl!j ;ğ&I#`鶏5 +QKdPHa,x)G$ܢGMiK߷L7umpEwL204FBs~_hW*v}"7^zXzAF/b=. 5~|< c?-I֥"42΋Ԝ'p8ofy4Oy5+γP >λi$.tyq"ig}O$8Q$)  F_uϺZv`L.HH&րC#) Ғx$&SLAj25$nɪxx9^FQ9(HAaJy F# Hg# r#ዧ?xHxO!_f~x @LdBwτ!;Hτ"ML0?ד{R!!?p}Ppw>~|0y3A@3@z`L2\8 \Wʔ`ObE|Ob"z\oz)<kQ=gÔpg3gB8&X0̭{JYU*Wn ~r-1T[0\[Lq=o-U[V)WYo$ '>|)xAg#+3a(jSKoM?f|sfTOsLq?h0anmM,W߫՟~]}~XGn.04im3uԬܯ#_כuK_/8?~d{/GvCh3LK? &x3Ѡ&WC<n{n35x4x:%mAc<~#m' s APx~-xEF̀g\׀w\\\\[.7jsڢg  ⋏'[W[3yO=Kޱେ:cN=Ђ3{)6^|t'g7fG0Wg߀wV?i凵w&~oO<~^2x2t3ja;#Л@3tok!z!Dg[ >>zw||"m}?(1]z4o4{çe ߦ=<"iiŤ<}o~5>Q=oTO>RiReLuWߩs4N/U>T[U-Ǫ~ZyPsU0_ 4߬n>ZO!Z5>[(&[ap9ʂ_'>^qL3QgO>`y2Dn~ oLA͜9%uo& 1fbDA_xj;<?\槀Oa r-߯DB-]<\V2ay3'F2rTP|E&FAfTA}L~߉GY=0grKuh|!2V&)e .ǰ*u=bӮ!k&efƥ([Gi8ɏX3$H}|dm۷fߩb!8i@L7%s*Ekt~&쿝}Y  ݘ2  l&;I`w^ϸFЖK ga}!}P)L¥2){dT[WHe^J_R{-av) +I],E3>E4ÈW) ftu)$dMP q(R]U) sx'Ea؃sӉƺUsl|O[&%yoͳN#C@uB5ԭeՍwFwk]v&fowZK#3_wݧd_yݨ n:0:ȏuv=\3gҥhj896I7h¿HbuUv׭xXORpPg8 eVhaΰɴ΂|tF~TQӎYkVhS~oZX>qZ\2J}KQ䃧;ZϓiErp  ?7H'8hxT~R,Lp,)Y(XY(YQ:3$A q )Z_ܾl1>Mv2*;(\N;d$q@Ȳe`X*dR}D    vྻ3$M`41HN'6:J662JEF)mG"3n:0J )^*ʯ˪t+ӯӐ1ĹaRә!'tWݝvj*+}䛎9 ("mR##> th|z6ǙwJN|`x|P/x\O_ze<py3ɼS;.QD=}% HV{WȨ\ԛ\a6 vxEL;y~}~L_ؘ~`#Wgg?}$fӠD}$=H]Ϧ_>gY4S>㣏l$<Gr#7 8x!AzGpﰞiC,WKσX:B~3H>HNx}$f> H>z^I.718'~*<,GY H7x %GW*=>NL>xNSx23>Cң}>G?> <"xxb<x54\px#C'>x8oz6o}$#>xA '} oˣd~x_u NM%IU[tf1Q1/}$w}d*#GAz>ףd6#YGws(#)od8L_ϬC`֡'W4 _=9K|9|e} _H>BOHIPGbHK]!Ou÷o _ ~ |,|0zŖ-_fky- }$ה}$& })#9{tC>|UzC*>7|opso>}$'>Gr#G2^S:-y1I5vG:̆>1 }c<H&t}G෡Z =7ye9Ormџ .v>8/<[5_'|D>}>;_͇ _çf|!=IK|z6<.4/fC}$&te>Ť+‡g—~-|zW/+zWׁYx&Y/G ~'H#? pChY/>?z Iyk@=6gC[/Hߵ^Ds' =~E78֥o!= ~]Fćې^FsHO[iqtkEϣ[Io&iI/߉p~xDG2#0=a=bN?z)2}魀@>z-\CeX =8yҋ!>COf^)Ioz4zHWC}=i6z7[pL٣3=~Lcapz>2~Q0>r=!ZG@h_2#{!-˿l endstream endobj 323 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 328 0 obj << /Length 2584 /Filter /FlateDecode >> stream xZm۸_!puHҡ)ФIq/-"^[Ǝs+o6)#CrHvM>p%Ky,⬨LOyꂱ.O %ʖBl;^Wzx}7/kNl[YyRaIY%)-k˶&gs^7v7-[=oVhYUvL8v/gma w5wz~ǹeeV%ojG# o'RV]N^~}Qm!U*f)~}R߫m c++Q)F~aLG?ѕ3gsYs0xDž ~JVj@7H$&sն?yxjm\LH7V$%`${dj2kEeKcWz+?g\q.C|w=ޢ{$}n- IUWR (RSjк=\ۧ2 M` E]MkPRM/BY#X;`nPmɕw#- n7hGh+&ia:P C9 FNTi}n~LM,E;#{뜰x د cm( ڭbb*ZS[qӏ$i״|ieP%r tu/EfBebFx5I,UiqnrÎqh!فvgOa֠ebm. ^L 曝f+$8ө?^7,w[43S?×.6d郶kWH$IjGsh?!J2^I&[}7΍5$/BfT8ڱ?po?+LIdLh OISHO:|\4)8{>Fv eiitk?"h~$K NKs̢*=͛U $r3Hܢټ ORJӅ4t>*BFD9>^Ǿ石CKه|ن-8:ub6m-3Mw9(OK`LjnoA5vvOSW 0MkYRĢiK=dk Bn=t@P|ds3};H W,w2N#A'o듎 hCURqNh)#tx}m)tt2?A` P L4)@ۨ/P!ղ-y-0z,/ʦc<'m6Y,]!f\p-àI+Y_. JGGduP%.c[``3>H⇕ Uħ mo ߸Qq $bGw+7ly58<0HuKTbU:'cIAգmDZ"6~kuK)K^h lv^[qٚxΜ)Vrn<˃(~`@bY%އ8PGAVfBAYoX5Ĥb)d ߍbz.  p}Cv/Q6nm?bIMy]u2ssg/  =?'~=]RԮK$hTe'4_X8umNIZ5U@@ P`0ZQ*=oyqևD1V <:EGDDc"Y.y.=!YX=.*i-YL0f<!FWGd]IqQ#C\誺+BHԶTj2̫I9Z8z =| ܱZ`ؾ`G޲ [}PCEx+ܒkP[CX EXYs 0==42γ߶[Ŗ %8o$.¶I6}ƨɣ~ sC:807ùcY !Up >.g[$OaK0lr>#M0j~&t厒9iVwEmd5 |'ɫT3ߝrNa<Y'#!>ʑ3kVӽ;cdQ޽[N)q6Ș>!?F 4mu5* ">|bpgjVxe*93]J8winxWDn3 A&LfD| zDN?gwwwqbe`X~:Зc? a)82 LQ#*yFNكIGI ~)K9x0=H o?d endstream endobj 335 0 obj << /Length 1730 /Filter /FlateDecode >> stream xXݓ6_t`O &mд\t3}3y|wW+>Ig-j%nyj "OJFV/bF^b*녯yb?;x*xn~y×-. ~K8B*$" @<07 #݂~.ݰGt)Q@&&˥XҾFЪ {nW bM:( ;֡$hu[󚝷w`TXKWf?ffxr0Z$ m]8Dgxp"::{j,:ID4!:OX\pxp~w3J$nQe rPA;к3siXƆmR(Lٞe>Nʌs47XfӍRu]:4(ЛPJ"uUxS(.J([ҫ)2P>h·<,?;f;,jc~GfG<# ;K%\#t1cw. ebw)93׿VK51$ =EQUFu"]픞60::g 7 L9Pa >Mh2K `{FUMZ'N\LJX3a^FTc kةdNNY?Lmcb0ֵS䃺Wu|Y_9|{8p&XPp{vjܛ\f,`a0dts<#Ǭ|lsRL|>yjp}ghݴͦTRPDxan7j` \c }ZrԚ nMeD/TxGSkU c7g-pTm㵄ZYDXyBEuךU*@0+]m*w$i˨S؍>[*aS]o+S2Ib_hb%Xy5ÖHkRth veѧf$la&ݚtd;-ͫ}GEj 0mZ`BL=,! #cqؚ=qg&ٗ50>ua~ڊT14!XB ]usb.f2Nݞ*WK耕9?p!L|zvj]Qq]I' H;kHn%Bqm vCQ<0SfϷ1 tl}}l?Ҝ y=0 Zq. ڛ endstream endobj 330 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-Ieff.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 339 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 340 0 R>> /ExtGState << /GS1 341 0 R /GS257 342 0 R >>/ColorSpace << /sRGB 343 0 R >>>> /Length 5084 /Filter /FlateDecode >> stream xݛMfq+ޥfח%/Fb@@ A'#H qߧ9EVuDz5&BӪ_(Vz./?^~coǯz9q<_W8R_߾Ǘ~=qg=?Σ=w\rq,s_w3z\{7L>}/Hԧ_?;_XYǻo_=-~;=ug/n/kp*}pt}]f\w}^׾f\?cPgyWM3՟52ϙP> ]?ӌi,¿U˨gw_ǧ?|O=l ~|ʿK_*٬<ۯ;_Ywe?~xzjucFۜf!(^V{q;'~:;g);|?Oaūyͮ{t[^EӺft\ h Rҵ&_xr\M)ƫZ8>nT>_N\(K׭+C[lj\ۺq32.5=b o$=͆ǦfZܕa~ҶX{f^T|6|X{xA[wpݿ߭#Y=uIm ~=ok sQ,6O8a1mv)C>dn1_XQ&'R{lf~o:~'998peep483QOzT_TQfIi?M6B>泚Ÿf{%M{hOUWџͦ"tk+!٠Y'᪣a:Wܙ ]6<ak˟~nVݰyU[3Z ;R-# !ǁ}1)||^c `Q4C=M cV䑜֮|:jiU؍퓖gRkK+s}JKSkæt-6VMv-ZE[jjsjهⵅj'j}2TmZjIJ\j)~j5zL|GG`٬isJ0WZUK?jK|?2VU-_%֯&TT޲1l&''A 5E..Ab01'ȣ\B+.\RsV 6\sB:վ%'XW 5,HEmNBI 0Z ol9ȶ1c*\٘drEyUsTjF-ruk'W.tJ+?+Mb\"SADR5Br r%JJJ䪩Ja"Wb W\:Jl&ɕMTnr1KMTorՄ6ZJ$g+AMMbPrUDN/7҈lr_+ WElJjz\䪽&W%f+ W&WMj+\DtFW r%ɕg+j WԺAZBUݩ&WN\j W~U]7Gt&W0 r%%:R5<ɕ;ȕ8\ߐ+E Wb\I\,-r$%+E<%r%r%*JJ4՝3잖;#ElDD\ߝbl-ES W Ar5ߐ:];ҮQ+ W"AzŨ;r%2J3ȕR+?+e\AD\iW'=#גDI*հ W"A|SZ`+Z-ru rVb{\Id!W$k r5ߐ+i W\I  r%Yj8 r%&r r0W$k+ W"GA&W-j&OJذU*?lɕj W%“&W:Jd'ȕK+ɕMjMnٛ\9Je+R\ ?JJe+/՝jYƟTbD.\t5R-Mr'ҩMT+&rS,\LirEM!&W FAz A\Q rŰȕGE"W "W,'W]p*-䊭 rEAѫ' N󭯚)(soݾwxt+7*G*4GG!4CUbg"8Zz?/T20`{J jkAM%=ğ~Xۄ63݅:uirt$$ !ai!!mOHXE]%#B8B.HwB2#~8`;BBȇl2vxVCu#~(~HȊ iaNg`35[{K%Qe%9"'ȬסDE,QDYp/Qvț(z:D(;4T!8!ע7(+y C)i'Q&ӢLuG2>D-fsD+([{t!T&QNPד(˧N,lQ'( Q[I&QQ:18%Q1m{2ՑI(ea[yqH,9Nߓˢ,(&Q8E8ejoePlQ&Q&QL"l2!&QN(Qir272xڢL{!č(eFIc(˧/_OY%FQc[IImQ8We~[K=$!(S{(H Q=-$tboV{(KڻDAY=)(ke#2Q{[sޒ(',)tr2w2_oY%N[(DDFeCܢL(DDF2e%9?DDemmBnQ(kk,ҙy.(ig@t"xFۢ|%WGFQވ2q[7e(oDYy#ʮ7L]lQ(l(S{C!e=mI.;ҔݢO`'Q(˼L1iNuHdxyeg endstream endobj 345 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 351 0 obj << /Length 1821 /Filter /FlateDecode >> stream xڭXK6WA6z+h{h4@aVjd˱} EʫMMp~=:y5;R""[$iyI4 U]ec <**޷90๮g2yA*#!0\Ӱ!NScJ)fwG-0L()2^-R_ki~2]EZ$T ;4C/療S6ܑdG'n5 D$ CxI7cXDA3lxHpiv-:\~J;{GoL_3sQD'cRZY:Y;ɒfDRWZ+Ls8@y `Y^H,iWk[B ;aSSy!Cgd]_L._fEd_eWuH%^E7v`Q,C_1ڟ?HOe:% бÒzѺ̇5d$iFSC sҝEJІܱ /XpJӟ٩3հoYJn>җ.0Qѿb2rq{֔pGnYDž1ME9qӝw`]OKZ S;Z[V[gM-j3YLƨcs'+ǽݓ+n,g/,3+g(?l"G߃$lk\Y~G'Hrg}Gl|ė986;C)vf[o=|I 9jJԟZqPf[j\42o[m)_Xư!g" C[gj&=;,&_le /ò4 lpvЕI@jsCWT [g;65`(aH2[Fby?mT%˟4}>1#5J 0"J{ڵ+D" RvIc|ahIj ڰvK(ǘQۺ0pmeՀ 엦!*hh0Pa4_mIp#elL`j )uG ME.(ȇӞ#ςڅ=:V9 zlNlS<얜uL 6]`%kzM:?=}zݓX>A]%ڗ8rҠFdd-)s..]_ZodQČhߕb>Pi:fd %c$ypS|Ofv=< ۚEs/ UA{0Pƚ{7eTm7N}48I'Pc.MsJLmgFofޥ> \e JKĽ_ q$ƞF FoOE̐tmG=z"J+u{*nlOד t7@zak jؠI>qZ\n8cN2B&% 41407^pzp)vH_m'|*b54lފă8ɮxg " :ځty۝f&!rʸ06h|%Uk{CLU>U%P=8f PtOL&jsO/&EBECtpc3;sӓL7kgM͍+t.߈N\6'މs+HD?k: endstream endobj 346 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-IeffR.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 354 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 355 0 R>> /ExtGState << /GS1 356 0 R /GS257 357 0 R >>/ColorSpace << /sRGB 358 0 R >>>> /Length 5313 /Filter /FlateDecode >> stream xM%qf&HH{BPƶihs&p,xakvXu!'_~wo,^h~wy 4՟-4yG9Ss>pp_?Ool3OG>``n÷o!_Mm>ޭyGMۻg4\r_^-cR|,5?|~y?zӼz}oyb2ϫ;Բ/%O_W={klWC3(.!_+1m=nZg/;5؎d`&7ct3 qzI4G7w' jGJޫ1MMG^Y-?#]Ը6p+Vfh|hDc%Szֱ ;3Wm< vڹnw_uM=+޷+O 5'O2sF{}[7F=ly%g̭,ݓnsVwe^ܗmW3.GxMfvLdMfW36=٧9=ß+7-K7?-N?[ i?[6iٖ9jlߏgs)gn?_͗ptU_.3R-T?{돹qja+}k>?@ܟ~6pgkv6qϖT;me-s5o\ /F01ߨ߶1?y"^䞕{g}oYGM;9_(ϦKlˈCܥ|bd 9&X ϩ"9ßͭg1u\񭘿?v ln+Cgد>lk6gk60g x΄x]lܟmvwQ\g6edbhf)fJ$hr'I壂Owe3yo1=7e0757<Qv2/}7;-eb>j>)beXtCM>\|&ݼ|{ts =`iŲ9%z̥ ]/<Ӛ Z4ǵ~TF$H6Fd7`mZl,IYbn.f39#$^ (5=izk1|,[[[nGaWm' f#Ր'TfՔ/ YT[ ~՘=XVTwQy@PA5#Dbf56ϐncV>ٌ0]QnwTQMZxPϨ&Q{4GhAF7Mm6 8"y Z!rxRy$/L>pqp%[v7z6lCu<{7|7Q_.*izL[DMN'Rh .E tۍ˯췳#j#$Im,.?a n{pH \M$\>j<#/jK^.j.v \~;%(vp9j1(yF(>d" %mɒh =n_(P&J~>@ da)&p{{ay}n} z\} >yid/C9AG@Jn~)^ $ik_nGDZNܣ}3K]=)@ݢlnW/ɮ%ʢ[EqkW$ -EvA_c|((l_L@L@L@2"$ $ڋ(((/`E DYye<&_LQ(Q_D1,Q^DY((ә]SeK,Q6ؾD٠((l_(:V(%%ۗ(k<(%*_WJ(cQD$X-QƢh2EK(ZEep-QD%XISe~`; hQZvI8L/QFD9DB%Ŗ(뺤LQؾDY%j2r%*e뜋9D%.TR2,QVtHQs%O(l_,}|*Q" 4I+.Q6߾K endstream endobj 360 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 366 0 obj << /Length 2801 /Filter /FlateDecode >> stream xZKsWD&"NUˎDVUk ( W+ߞ`HqQpD_g_\@ʲ8^EIEU\w2竅c#n$Zewc["*,-$ Ly==NrJ0iZb%_fs'<2r\(ܻ(2h 3NS0JwP2W= Z0q+Esqg < UgfQ4ٻ`%}Da6H",}쟳+2+WaInQ{m zgͫl?ale9 5&JkW8dmG&E)66 Tpg yPf-T~aZq#eJHGj]&53>^(:RT>+`o&506V 'wJ4Wt2=83F AY5r@n7<RZ· ?iVD'9n2 #zgeVIY|ul"!Phat,OtJFrEgDBZ(Cw}7 yH^1\"3K%H+zf:%l،RB>krBF﹦2VS<6Df{=qHW$DmK a:@j&yQG`"?NFPP_@6X'F 5K.w4)ihrRƭ.kyLE1t+.>ᣲ3nhK%ȏ` ,kdӰQ1a3"V w#ϒ("BTI] 1ݍf5Jπ XQE(?u86<)&ktJ5<S%$:``yGFtSPkCSVp,8ruۺ6j,HmjWyj ff:v_;MgbN)QmZh "ڔ&Cq]Xijj_Qh^pݕV@˅-hǁ _r1]q\{uQ*~SRlN7uaҲ20' iLDmP-"55ցUUiٲ^~ct-x;G`ed5m}y&gEI{\0u:G7+xͿEnnYOטj6OlA^o+F-Ndɒ²ԔqD@0ЖJw|~ nqTer#a:dž=* ]" n&[mu rҖ[r.׿q{f!_ތ+C- eޜ[sqس><^da dM59mm2슩۩* +0k8"wO:0<Y[*,lsaʗ{4%ABd3CUj2b:c'J^~qi*oc ĜrpBn,/ߢ3Q+|4ekv+6iGbssUvPac) 8ERy5xHnkǝ5\g5-m)0c҆O μɾ86yD/eX8eSykIJA@.YxIC6zCciyݹM{q?F`tRi[ttfUő7ӡ:.ky`Ŭs@GA0Iomyʋ/,/(yA, QhMkyw+OW׳t _ endstream endobj 375 0 obj << /Length 2571 /Filter /FlateDecode >> stream x]s]iRkZgMrrL۹'6{G$|~o/X 受v"E.ߋ2IG;zSsH.*guV$UհɒXLvë7"du]ɩ,s<-(,Y-{|); D,5MEtv.'Z^VZk1f[P3,\YǛI-DT)^iLjJ5uʲRT|Vdl軳#ypiɹC2<ˊU\:eQMY]Jci|Lv^>_ 3Iz2-Dǿǩ~DQ>75-R 7?X^jRAjo@.oJBfUך?O$q|j\$?HũHB"`zNC2hť^zAѨi'0!U5#TsFG&&>#B_3qegRM.a+Jf^L0k޸>}D a!>yB$+%phHG`>S"QRFhaȷա;!#*8.2H̜]ioD)%sz|NGE@w߂cb9/L@?ED.[zԬv[Mlʜ+X ީ$Y7OK n|8k(wK6d׾1Z'lmVBHHl61bp\wByJn)R&+[R-}Bqp|ܹ]ڭ=""gYn'4@+3ۯ%gߣxĴ-Ӥ]7|X..UcI{ș'9b}Z$9] 3)zm3 ֽ4^RqU|_R2#~dPtjdQ6h{&J݀ߢD@:CIQh+Rk?3ԓv}/ӭ'Mwo v)Uy#X5>Y8|{d_= G]nڒ<|=%bf./(=ȫ~vb&v@.|rUKe.xxcC{&"S"~,=U/pE"iv==ɐ rf= h\`ۭLdVWEѮ#MRySMalK#}H}nk1]Hn9"\\6e,pt}C+f)Pk/H=O 0}iP)jO%8q7]ZZCO:7Fbv?zxAQύq\&*b|Σ&o݀#.j '<%a`&XoN[-tP72],g/.qfdc{e$ꓘro6 }yw8yNo_϶_E/[9y{&K0wN~5ȱ NWd.lɩ;t`/̃Wdok {LW3@_^ 4!*3cs7{ڒhouf1 W+Jx~XqZ9$(#z@7NOv%yYt? V$P$%/n5v׸]n2/'vv&`DF_nq*wc9Sv۝䲶Yg7r|\ {Kz~:0X;&/X(>S+> stream xڽXKs6 Wh2=SCLɶۙu}؊ֶ~$/i+ãiģ_;󏂧HS "\  'usՋe֝Dß%i/V2F0ߘŵd;* ?B[Yh70B\*eR:W946R$x=#k/r^N*&y4@r.[L2m '0F B@˧-5p (3?:m:or&)KyM`SęPo%fZџ/N%Ο8"k&߷˳Lz3gDEs7<ÔR8 ?SSr ՚'u\UZfﲗ0TB.lIµn C)hVm/rTsi5GJ&ەQC֋.ǒ6-Ko{,(c$!&٣1i L.*i߰'ԓLc0xneNJVf{sR.718o 5ʚݻBTN rц5aITZW: nbsɴg*;%]a:7rW  _|aRLb.%I ?Ȅ[=[h7/ X{fYVS{5=2` G@Lf_P%woweCn HqL Vk; ڈѴEL Jɚ3-n_dPب 螛1# wb4`nc0;:֡Ā'VE @¢ 73 'āӍ;ҚBHM`+Eġ|=yo =7WD08/H2&GOIKg ah8]ܽAe ^d/K ?@zMbj\Pٷf夎sjmDQ}&-!= Q(H0>&m18 8SWIɘd4ĤN¤NƤ0e!$Lɘ͜v24Ak S[e^Gx댎ϼqo6z|ҫ^HuUaI͹ڄÂю^^#Z,Oj3{K[{^uw50m$? {3?ڰ endstream endobj 370 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-dur-int.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 384 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 385 0 R>> /ExtGState << /GS1 386 0 R /GS257 387 0 R >>/ColorSpace << /sRGB 388 0 R >>>> /Length 60243 /Filter /FlateDecode >> stream xˮvK*flgM `ko@06M[|'ǘpZkEo~s2O/?%I)|{~?%~_OJ:˟R,ǒ_tlU\Ɵ<-?i:/^~8?W?Ocy?/ϵ=?c??|͹i9wrO^;~/{=@R4LZ|x;H-ӳkl1g{/P[H3=$?K%gij iI-$=w|׳ <ҚvGEG!7OI;g|j4KHI''ǑC/Ҍoy|JM!xfyai'͢gZGUJ!xGi5D=G:nuO'Yaߍ]%Z7}e)9$=:)w>#!Tvv\Ts]\nw#=o ޴#'Hǻ9?i+#Hwϭhg >RI5Hm>j"#5|cqd2G_XbͭUӱя𬈤xr{x"g##piq8'zĦ?;C/skr>k:eq bUWG!yGW:8ı>w;n<PWw[x{9Wu*w[,x7C,YG}2̄x~HBzqE}lXQϪc!&+|.X3é%6rliq %bqrm-U=,Wiq:U.\g|#j=<I>J=~"tv#$2!>B692?^lW8VZ rQϹXQL]b{:X|vRM6Em>#sUZmE|B| ##F' [|L#7## 9RHJs}y*1d=BΟ{f3νF+9 m X}!X]9{bC!dMZ6v BEL\Gi#'vMru *EMX("Um/_#˴uʸvr)땭pBƕ;ȵ )}!˵똫]ˌb3,uUume_oa :g'pÃik>/=;k\]-Bhtyڕz|Ї!m4[ʵC?#N͝YC?G?mc}?\G.9}yGGdOb[˵xIZ>Թ8,G-l[\GZ=z1#e9wq63ѿCޖOǣO#CGUh#o?<1ÑSZzE=zܡxKLx ff]\cſGBDnA[ryv|ROBG^zߏҵ~,OS+?[I޺>=^ޓKz?~Á+o Uyٵ>^j~< `>Nms _IE|gIEDNwG?G#7vJ8c[>.S~B%bZ>ВCY+r&c;4MB9qP?!;<ϻ&{;C>.x̩P¥8LK1no,^?cwW#|߇~>Ek;}>r*[m7glYOڶz[wh=.;5Q}{;)KGV^mx?Ft6?eϽ}}żYdnFMoGJȄ@Yr6G֧ߴթYX_O$5i}?ϲ|0"'Qp_{ gÑ?nta֏رaeoGd{=Sx~dkGK"5^sf#<#荟_$tlD:#R'uk[=r?J]ߓ? o)uߗ?/v eM_}z7gnrmqp 9R+X͇3 Omߏ2b98>P>P<Ȋo44%+,x5\4H+SH%:zF[GOksx:lbƁ)G?W+gx7RߣGΟC}ԡxN}upx*(#G!s jO)G 3G{x=ʐ>(c?((cz?s1(Qzv>ymܣ!b {l }(F(ɖNzؖ%~r\)$ۜp%~٤]ml4ry&F|lfئv'Pkܻumv<鏪ʹĐ :1}N>EwF>IX|r<Ξ}0Bz3jOx|GO>|޴麏Bg|_>y!˧O>|G^K׷T>q$Y1}G^s ,>{=cO> &7fPҗ 1J|8iC`' 9b9tp ]) y\#Kr(d~bH6ߎTQ rQt^tNλ}M9oXˣb}?bG>:<:0pNlȱG+' y:4|l*WO#.b+>/Bi6`XGz睖Æ?5o!Wd2E!채qQ2 $[,o]ߥ|C/yqi?>k[vy=^ETƴ_TK1s!OW=ǩ;yt?#d4'lwWKgrѢ[&vYeL_ZE>Vg}]~VC__$O;?U PJQ *}ܖyѿ1O(,_uT!Kl^-;UKٶ|lkw}_l{'Pz >O!so- 諐^mwyJ'Eէ![}kv!׬mI߇? ܼ**{M_٣^:kώwvc= YemP-b{rp^,!{nGem}aab #G69w+{g6=6T_?Ƕ=G?ׯ}KVgnܾgBk^n _^K9f鵔s^D#._#gn#k=:^X.%X/GVv,M;C>9^Z_S (U-㵅xnx|;^\Ǔ+eěxt%3ǫ4:R6OK\~=S<=_g)o<>ɡ;^T7rL#0;gD XV _|D\~39#YrF2}H7_޽7rK9#眑ds|"|q>h>/hOB?:tE'\ gUG Gڜ_I͊t^ش<_h61lRDLlUcsSQ6ʎQ쁍V;ߧ%%Ϛv>bML%Or>YBeSc['yG9uGޖçN+)al|0ytDg1Y6aU>|Եֹc*yd)z#>G'Yb}-!=zwc󊅛r|T *("%HtאϹY{ˇNG>Oȅ":rgOļ-@!O}K'fNUFz;,Y5É y#o}~B=tX^E| |bcCAjݖ=I|G{d^]f}6T&"Qkv>䳾Ad>-//sqgm'skV'9Ɂ0o\rټ~y?+\y;~ru|Z {?a=>e?d=f=8uU>>;rNX?/+ɿe?6 D`?N دQs?ߧ0㌏'}7}X͢*`Ϧwv͏>B_t};>C_?n0}n tb/F=rأY׏n:Þч'{uQc/mOj9Gq[8{}& c-ȱGNH_ydhdN#?Gȩٟj0P9%ck.ꔎiqen?۟l l_js?l#hqa\>Ol8Z'uxR!G3!+gx !+UH#|FR2g:#φ3l8#)Id_j*|FBg$%sf|MqX=P A;_9I䟔ojԔ83|2(r\Ç?tmYmVOb5G6ͽ`؆oҋbdl*uR܆Oaܖ}V6Idӛ뼰ΔOjaC3EI9ZQ^69GO*1|l353Sj6>Y\ڰOc]Q>_t C&f \Oن >}쳶A #6r!RO1|G-n\[|>sMY>c1GxbБwG>:5-@,zttsN-5WZ yM1^ѵMonlyG4Ԟ݋ܟ۳E{ڇEЀρyzgOrecjuDŽ*;>Ӵ<y ׷o L|o$@FT3,mu|,崢`eYmThɇs]_ax\ B;lbq6Rq1lZ]}XYOlsr<< ږc}WyPu_,se˧ýuVy% ԁ$˧N${`Yu1Z1ā|,ٗ`)cC?` Jo.aZa H>r4:*9^>߷N1 oHmKi@'ڟ8SCy|,]%)J1|3s}:>յTc 0G;u$ڏq=||ƺLc~SGT\͵uWp1tG+ :p 9b?ɝvH?i9u%cl}O+q1޺Ou5uoÄ|r-%ӷ䢜GKU9Um-WPs>B-/ ={p{'ty=+̂rPz=*W0KZz_!}fMM^PPyzٽ-̴c=z|zsMVȾj"tܔpk?C8hv+%}n{T_2/kl79k2mǰ{o0Rc?9}֯յ.׽.qxٟ^_Je?:>⁅=t8s#ɲ g~7Hg$3tH gD=#3_p$s&3L؝ϙ|=JVy9/oڋ3B+>W\v9 ~/a~KX r.a]3'Qt '1a=i e63a n6a >>2a݇&ӄu'vMXr MXJj^Q n .5a]\>].]fºS&{ǹ Nnn5lº)QNP Grp'pɭÉ nG98 H8p(pL :8x6aipֽMXw ބu t .0aބMfº]vu *0aݮ V&3aA .;1aݰ3֝~0a aH|(*Y5a @LXf2t| A@p;G 4tarIa<U MPI㷘VN_^C*COlv`ǽ隸 Aj3P2vv3%wvHT5;[Heq}je*JwKlt蟒 +քPQQu`&WzEX.6aQ+g+r}aa2gza z1ĄKDa݅y D)̈K,/ XbKKӋ%/Q`I^,Ib$ L$3`(:KRZKXЏ’ KRhQ1Тb,I_ƜKR:NXK$SVt$-L] #3LXk a=[/AXgAX;XAݏ L &g@Xa=zӆݎa=Ӳc ayCX aݡ%;&-KڄR/'d=o` 4!ºS :H.7a=cτu]zro ik-BX_vwMXw!u_:Huֳ]^ǫvu/anhH.'j;>(>0!º-@X'1a}AX7ºa}S[Wu uݴap]aN'u;ֽ ~ֽ3IH!̌4DGH;O)Wh{YT+(~bݤԉbkx_QqjźWy8'Zq[,}G/_ Nufϙ] u=즮{B"]y&NtSC]we>P -C)dxg0s5gleꦮW:TE띁"B]'9>hwc9׏7u@m7uĞK]dOr.u=PoL]/u=P] r&\zg|&\zgzu݉K]C:kKI7u?PסJB]uK]u'qnK]g@KE7uƔ!$PKzYTe0EC;gcJug/uե^L]u8^K]wRqwCe^f6ԗ(|PסC]w"Rm8.u=NG2uʦ7u^A]: uK]gu:SWg^(/uTK]>zoPI:@]}B]7qRXuuvNRNuw_t 7^꺩TA]RM}unb᥮X̌Hw=ږH?C5NQ0!!yā /Rיu' ,K]M]:P!A]wBRnS S!n@]%L]u릘^:%l!jr۠C(ngRS!8B]uubu-Pore%,& E!L#&hEx~E(L`( r\/[%D(b*"w"{Z/s.Q$A9DLD(EU E.Q," "흊p" "o"P!0HnC/QNiWHKe> ©݀k}8gV0};o:Ku7|xS~l;.uK]PM]u(Po{֙l{׷@L/=tvǝak荩)bOtҧP׉g^lv,@]^/PS=0Ro3Zi{m1%G`cʕ0Y7}T_:loP>t9u_: n{ uS=)HsRu[PיR#GL]?~7 O+#+F|{\ (oT3S׫#K7u݈^ _f=NY]xdY1@7xlb&g xYdo4cfWZ~r>~|E3a|F UN!)*q1OQML]>9Vh84p|x1_Ny_S@R36הt'fmfۦxG6d́Mm6*96@Ef0uߘut$1u}ySљP/Pחm #6KT_p쳅*?O7Ի O8.@>Wyk5N ;>|bg&`SLL${d(Gb(}Бn~by(f b1RK-P壛8<)R;1㥰OMJC]FSѡC>A]2u}B97uݓg.u}B4u}A4uI]P!zA]ww˥;gxLLR]pƸ :3 jnsM肺)覮ߟg~>C~ux\#uuns뮞E{  ۠C-/CYnʥ/S9C酺7u PיDu}ѡoz;~:ߖOD2 Rח PסdC]gA] u}AD0u1륮CĀ>nK]''u9K]L]guuǀ>S>Vd>zP{ΥC`7D:BP[R'xSקurPיu /u\꺻W!PQ#2Q[EsnEsE v"P&>Rכu"_zize!/t~Gwl‡"L((b% "k" ܩCЀIZ(r &dK>(L uL]gA]w ХC}?P;;u@]gurPmr Α\B'~7PסC]_~Pי uR/u]߿w] ujK]!}7/u]9^i_F]_zlBK]}ϯR׵~^K]7RMI7uDu]㥮}uOyL9PקeS=GR^꺯unR}a:R_Gww3S'3k2 %R}F2ީS%3=Y3A<3՜@dp373 gH:g(>#a g$3S3&ɴ{2'ɴ7u}1uɴ)oLkL[Gx2=@Qi7_@L[ ɴ0s&|Ƣ3ܭ5|ra5 |Z+=Lq 7‡Ŕ*tY&:v>y|Ugd_8MK/u3y6*6+KǦͲ͛bZ1L|47F0u}yĴg^>et}Pa 3̤*Nϑ21|"%eo1Q:>O/>ST8T%&اKL޳ϗQ )>gL.JV|΄O|NJ->m1|d ĉ>s"Os''Ong֏l}y$$2+SPGuyߘ$ח^6>bQ)Ps. #eP呺8(: JdƇ1ELf&MBm)N 5ߔ;;-ޔ;Llf&&73I] Ϩ[A^Ĥ4soJ(u/PDӃ2cSHf7B1hL9P#MA}eQRCYr}P\/Ô׼!Ӂ"Kټ~Sh +Jm4z(9(yB %IL4mL4n 1yBUz=OpNuث>ۧC>:A!>C,p~vE=':RF n• d@c@v] „ Aܦ>/BdL 222!rd2– Z BlM~1\b B REPMj‹ @PMPMLe%xd&|d&dP&dDrbzbȆnȆrnLqt"j"o" " "*z=uߏ : u=L]O^PסCQdA0QdA4QdB17QDE BrQQwE.D7u;/QD#( J_ OG C7q }4 hZ_RC wuz:K]uN0uB1B5g zzn,QId:їz>o|qΉ^:BW뎩/uuP]wB]@]SlL]OKgچ~C]grK]IDRRsSיRMqޗ_K]_U榮3z> ڟ6u}NrßRKY:S_2 ~'Ú>dd丠ÂNuuinw(>#&37>{rLɸ>#iP}F6{FRܺ!nD|F}HLi ٚJ0g$35@dS g$ g$pF2}Fr38HHHgo'wRmi >uo_m*-mc.*s*0uA&ԙz|S_냾&Yu=T^b4ϤOMPl:vl['Ƒl&6Z6n&&IL#]Kdk._.'3Ğ,\=ORgwr| >O'OT=~|*ӿ>WeR}Fe|:L%OZG ZSdۦ'V(ipnIսRSW|*} >{bnz1Au!1Cuo&C:AP>RסA]/PM]uݽ^K]PM]g=C]wR[qzo:YP"7Rm/u:zrnznzwu}B u uRGhur Pס C]Cᄺ鵗:K]guA]kY u0U@1 j6zs 6M]T}Sۄ+z#2uA4u+E]eQu{#^S|)EקlzsNzsm4L]|덜}~; u]Pכ}VmBUu16C1u?S9?S1렛7r6C1uSTzS2uA)6uCޘDfzc JwNo =3uaM]oKS9KSכcZgPיuztlQ eʇ^A]/~^P׋)PAA]S SfL]/L3u0iu싺^O:B]Lzf?#԰ RE]ϕ)zBlz*kzf*91%A(W@z2E z¿0u=9OSgu=aL]OL0u=u=aM]g738뜹B]O'%]pX_ e]t},h}oכ:}O`7>/{+/{coTڣ j{={@=䐕c=]t]Ŕ T#;>N}Vc2c?++C%?Gs=f^j \P͉?%푥M& Qśs?y)7gN]3ɢw!H"Z,*uoĔ"h0ߧטx /PO<urդG+'^̅kq+CjA덗~S3[xLU6ώ u<8: ǓdNǣWS\ώ>?̓h/ǶSx:Zb5#sx}0;L.v>`0O {dUS╏L}=Iu< g4&3PH83}H`H6gzyDu&:𗡮ߩy~cL]/g?痺~TK]w%7uCtM]bV,0 R׭M]z, pd5u"5uݨ Shj꺏OL]w"u0u=%MVu=/QgE]/䘺fS׽L]5uSޘnpN$ucuSם01u.b7uS`%lL]7uoS=uSsM]7u՚>tB*'?P 8&a@ȣ8,rp+:$QBGr*!cnE)MJ`Y#r + RBd[Qp]7؞"Wq9CSpSׁ`+E]ԓ {Hb z4 2Iul4t(V1cXױM-D,oWAO;/z- `f˭"usܘc۷N r0OS^*`7c<,cоA3J 톛]IdF4of ńD6ͣ죻,jEno$>;hI0ٍ%q*C], >>Kb@y} /㥮]L39’x`Œ$륮 +UqzzwlL祮wnKϲyƆ~G\1g(𗺮>jP׍l.\ }/u}2vu \:`w榮3[ΚC[ x1`l/6u4u0PzA]O|Ď3hzPE].?ud]S]}T쭩.uL`^ՂuaFM]uݑǥW+^/uPi9q5L]+ u u u=y=A]O u=dM]OJiyQ5'|.;1~ sesusb꺫.uՎ>N%;cFbc:T0wwם1uRM]o 1uݕ#u(PסC]gK]v릸uɛ!#J:?Pנ7~<}?>Sכ;&Z\:uw_zM{!C{D5uBX < EuwBI 52EC,^*)yAi1,}(yDyPRM|)He2/P%SK}6(tA& A؇IwMˠpqy♡y)ԇ)ٕPD:PF4RM){ i ZPR]} e5 kx|J35wWn lܔ8`(g Sf~36[R/AP;ȔLLĔ\Uҭe7C40C7ѐ+)`=_j:īC>gόs}6RM̻u(P]| bX KMa m"O фtCHk# i&nl5i@! "@0BD qMH6 "]JZ * 80BH 8cFHaGr(O{"$wAa<D]^ {E6_v'/QSo.Q"DDo\/QR'"<}">WoHhi.Q "`K]7URx_CP[]xRb~sv 9?uM-z3% znY߅|wjLb熺>~R׉wM> z j뤣LAr>WjM]gA{L]g8tOC]_NC]'~JT 9R)PCPI! u#&fο ܉ PN΄I*RI+Ē=#2pPשO2Tl奢˧JCu>Q4*f48"O58򄺞g|LS3>J뙘uۜu>R#^/ KQ}K]›IQۓcyS׹^pj>3uPyPסB]꺏/u0u藺~cS׋P鰇^L]P*M]^A]u.uݧ~\M]7u~ ubJʻPOCчn"ƥC5K]w󾠮4R TUS USYPיu@7uݜS׳hP׳cD:PP]rP'_{rӥӡnzMʩ@]2L]PM]/znzHfzgJPשN uh@]PM]΀B]nޙ`zw7Nhz!@ޛ׃̿^zazPE]=L]%M]b›9E=bzwu3UnDP{E8DHLʼn$ޠVޠ暺}u-7y Qu_i}lzmzhzQ$}(R&B)L0Q$ސ~B K(RB)"A8Q34QT"{dH)Eb2x1K]l} )2&0HTw=Ec\"CE2bEPtx[WE8C(HnPE: zjzAn٥_B"s .XK]_HBߚ(|Q$_S4KIO3N:Tp3u1C͇K]/RL]/ثK]W>u;z}BV?QC]S[L]g u@]guPסC]w7즮}K] u?u,R&]ˎ/uݓ/uIw7_Oo;/vw3Μqȟ/0_o<g6SOl'=#~S7g:ooxL]Gg$ S8#a g$3'g$a9#Y337H 6qF”H$d>Dw|3g$~9#1QR;gs u?0uIP;gw@M]sS'M]g,ߩn:Ærcw>"&ɧl9߲3gk|ͮ{L]'guы)4]:ggr.uɱWYLnE]?[C]6uS/uu5u8Cك~)趩|skku5u#\/XPL]OPL]'B]OC]gĤ&SׯgzfPá'&9~'񘺞ӰlcS3Ժ<1fc 1v 1ʆe&AeMBqeCseB1v;1fzc=)F61ʆ"e31++FٓMQ6ODBIɪONe^(R>?Q,j9}H&G flMAҁn31lD}'z"PF)B>:I|>)(!/51ƔdJ,)PVSX U:(ɓVDǷ)@Ee69&B`R*tQl697A030] R|E4L b;ԓst'NiB@T|A&Oi?nƫ?-O,@EH1/uRM]uPm/u9K]u(P hS u(P+K]_a9R!@] uB uOu.P׻ P!A]DSKau A!ccC&[XeJ/2X&ve?DJ﷾<]z^g[yֻ^c[_dnȔ>DPjPCg=۟jn"TjDǽ!~hnuþzr!z?mva?h?K$~#pKɷ>`"'˓7B>ZPVz.}67Xi}8T 9 H5D{=&@ȴ<K=C]pk{3\='۳z{&{82Tvˑ)&CPޱRɁB]:9x饮{_rPK]u:栮wL]o|:gP~kuğK]Oi^7SD]UbS+9ZSC_GXuꔡM]w^^:9X)UDpFaz!1uuCNzus(ڜ-Q=i33{3(,8#d2g$)b>#q=#BdZ&!2v@U7uCM7usfz'7uޠɴd}'gC:u×NK]_&\z(꺩n7痺P׆(S/u}2uu.ueP_:IP1JKDQ#jb1MA#F֕1i1 T[b6>(m,ԿmA4u: :RSϝ$v (=ӈ3FQQCiJ(ccڙI9Șl-L3eC5ÚR=m%P.;T~S0u0>d١١F١I E۔N~vBvOnB=MJi'biPUE97~)zv@YvvXP\ޡ|]kEOvbdSh̋Rۡhb{'-rrQpeJz)>nn7Z ow>;(?`i"sCL0uc?L] *LP׻Xw[A]P_M];/SQ]'u+S{~)g}C4u3$/S{-zBmzwNiP׻τ.u} uK]w/ʥSB]gur@Pי u{PיDu}ZB]gB]~uK]wRvS׽.uuAn*e~>o_{qU{3)7ooOə?/rHi&g/֯ӨFsD]9Sק O(_격QׇE] SAeB]PaK5uXuX_{bzgn_HWU2O8Rh}[齲>BY_͹EσwA]^[/ N9gٛpuG6En޷Yޅ)&>2N= 7NEric{~|}"TK k$gM`*DXejkTv;-O4* }**R[;cgjYє=s~#x)c󱿹/]f=*$v?ݜ۟3wzǷx }e~?/S(&Z7V=vGMnCG:8tV/(w~UCO|V5oRHevx{<oud0~~@j-E\t:pH\ Ac Lp[ +-:\JY!k,O\\^˸퇈ٸu #vn].mar ?trN]p@!/wsWeU9 Is7y*lnI7X >@t8 Al am=4ˆH* \ %\=+ϾP=@Dcavqy9kMɼ@\ƽY`S2׸Dq)UnIhjS.mb-upuYSS& /NM;UQ_r*9|LLJD~O~47?6 <  3l3H~xCHZ_~w/&/N[~8lٸ_/uztk/+Xw_baqߗ8o_\_/6x/x_|_4ח7B/z/N(~E+18/tK`njLc T;لX, JwLͿ og?%hįώ)A;8껀rG`Ayhbz)8r 1BՎ)vLc9vLiܵcⱵώSXZ>)c DDrWvL+P;JvLc2!jbcʂS(혲 jwǔm S-w ݳj/;¨v "O! U{jH*BQ-D0̄jZ_ J1K,|wM1Kp §Oa &@UWBzBbS TՕR!XU&\U!`1BVu)ʬ rZ b ]Y%^b _q6&Uh.&5[&1L8%OO%P/bY3YShq4fuCPcV71U;&5φ LkMk QB5֦5ܘĩ 4 f_lcǘLwYЃ}쑺{-*qDQwt5ˠ1`wAh;Cs#>tL7;݃“ ;@};tw7v/~nLuGJ'{SݕAQewUݙݚhݝA4Ч*wv唄,ݧNw GݫTJUݯ}AQwlwNl_t˪۾?? ~VeG,?kGag gDcxZ`T^~gcgjw yς??1f2M`jks~~Vk~~VcFj~gYYl~+~+~P.?kd5?kςw?2j0_ܟY`_3͠dDeLv Uv̼1Z]ygJsO 跟7?k:g@~ 7<[0߇y>ys`^~LB /k0/a\\[>0| ~=LAo(鞖C]̛X xjGD'#/"nyq]5<ϊxg}`ZhꊟU0?+ԶjmZ?k㆟:=nY7s&Y`]YXgEǧ7>SP-YEY˧g-zZ*@z?ޅjډ^v.}y7gE~.b;:Y6m({MM @oz˽0M ۛnMܛMzy{k}қpo:'z/ʽ+{=^Do{=R Ks8'/;4Vu :@o1L; Cw.sR՝+444i a9̗0=ܡ;LuMsrKs@c@s@c@s@c@st೭KsC5A[BIJ+ə7ٕ,t;B{t;8>Çۨ{|.1I:;&<=}ǎaH ;&ClrwSWʗ,нYowMtECs(L{,;qYf=;-CpZ>1oS++q]W@rw^qNNO9+X*uW]X-o8ҽXL8'Oca##9,r}Y,&.ѽYuw*GY6ݥ-T{PRrtVGS+^>zi@U;C{z][vTrŝR94*S꭬QJu-\|yPrp锪tNN)*)Ee)RTn)eZSjMԦʝRʥWeSՕOQЦWeTL[9NtUƕYCFjjsU~5 kkT:)=N)*锢2N)W$NPNN;:wJ h!)5wӌN)P?RΩS RB2 n-V>%jrzMz/msXeEj 3nYwhԢRYeKcu1NwLv;Ox1}RK'+R;bcnwLX혾h/E;/%1};;Ď۽12C\+IwknjV=[;~Uvp,;6;&clv@3OΎT;f31Cc~fv̸w1PS-ʵƒZ1^åZTy Oc˧>kЃZAku[k=t-X5vXԖ{лZp|lj[8ǸplӤp±[8ͫp[8podpһSdz ɉ[8p-pҫi;3{p <NMP-[Hu6Nzy[8 2Nz[8ropVzE[8$pNz[8-PSNz gE>{ #p+BrNj[H ˽-Nz[8[8wo4cI/{ ' -\NotNA~[8SpҫIo{ yN" N{ ')Nat +j\ݳ]s +'\aq o x2awkM 5g 5԰5]ְ_5:o îap +n {԰{Ωk]vag)vwx>jؗ8a_Kjؗ a_i Wհ/st}v̻k؝u Ǯa7%5YO5aw%kسraw5u ;ea/.p {q}k؋Q\Nk؝EQ45̚s ;aodv {,]5ݭ]԰SvSs~KطI`ߔ}SݨuiR}rM7UR֥뛺GUzoT=&e)Z"5X>.`?oMjon]z7vo m](5wzץ2QtK3.URuƜQΘ3JAť69 DmrTM1d*tm*Msm.+qmJmbT oA:Rx oSUхj,F _Ux\Bm*MFRxєiy6D oeI.Im.3rmTmHm2~-U Gvr EBlS*֡N (֎>UPuṠn)zaST]#vɈ`: W#(4T]QT U U'|Pu6_#/Tݿ_TpbQuD/G@EwEY.)nدU6C߆ߎ0PuNߢ~.0b: ߎXb|FŽn0##vt@GL7(ATuaUo[AA Uh' UPjPuAs/TBA U)nBշ?z>OQuDOÜA Z+TMw'QUDq UyGTcB UBT.BQu}눪)zT;@ȉSM߃҃UHT}#,TP6'J˂; ZQu[7D]TBn3:B;3Q}šE;3QMTYP7pE!n:Oۣ@؀+ @*x{N x{}jד0\= }K7s=o1 x1a1}oǴ3 * x{"x{x{1/DUAՕ#*T}]Ug^V"TTPui'Bի T}oF$žⅪHygLD'O FeOGe;&#*T<#1iGLc3b'#2#沽sm11@XFyF̵93bM>#梜vG|FEԑ#R͈s3ka\1+GU$1jF1W5d\F3b<p\Q^DjhDAqP': BEsE9f.T] EUUU'PucyDi-TUG1Tzߠ U7TTXQ!P(v`FSSUFO F$L0YÖ}B0닪 ' &M+:3aɢꆡ8׈YEh3A4GTR piΌbEc4,a⠖6wG$afNM9:u4T lUoc(lUo6kB݃7@CWx6\^a}3%5GQΩzwmUJA׃wAջ͘?S3AA僪w@ջ3 5AQQTAջ\Ao z?@eއAGA+TvPa+!DEkE<>DD]NcJ-E?Eo7GTV!;o >5$l7?ap>5qW x{M;]TPN+zUJDAՕȋJꇠ-!*n )~.鞠 MAW NQ :PːPuCD/vPi`zO@ F*TU@T]r&Y|['W 掘y(qfU跌Z7-4 8>#&;kĜ"5b:ֈaEQ#f%ʈOFh#Ge #113bD1~aL#1ψ0b8éE͈)-pF̹)Έ9}1b8bM<#eĜj]w~G̹sSĈXF)ˈ9 ψ9Eo1#FG+} bp}T Ωƚc=9!Vcpr*XcpB׉1N+tbpJM N cp|"oس$٘Pa(M|Pa @+>DA͈>DAիT}UFbohA>6P!Z >@Շ;PJ(>U%x[EN P%./ΩdMT|jEթ9^=z7ThPQuǻvQucweYP慪Pubr@/ftQu U灨RTXPu Uy߬AխYOӘPpqs>m}UW->4Dg[gPxUPA'ܙ4f T}Pu< UUPu\VP \[EBչD)XÔUTP[,T}E߿Pw(T]8=WNP)P_ UGE{PIWխ/Pu/SUN:q ܕ󁪣?U'VTg#GUi@@ApT]AչAՑ3Ug^UN T"T@TT}|uI cOi:T}2^Oˠ'iP:=TsꓑT}R>yU72 8xW_e}ݠV>y,+ UUɟãoG?N'0N! G ^|{kNѷ5R3J~xtjţS+щ%*ɓãS)ytǧ<:"ѯձxy;#FUkvʣ3GO/yrxG?U7yɣ- PbGw)nx G'ãoxtTţ_`|}~Ut^zKщh-:xt;vщ8.]Uu:;R:]tUW:=R_\OuN{x/yt:PGg]<ãaW<:Bewoxtţ7iVxti4yt}ytvţ7Goxty_ytEmN'G]QOWtoNy.>ŧQG~xyV>S,<<|KmnD1ɣGr)_}:}:}{s,ف͡<us6vr=Guz :}^ҮQOBVU?ts =ҵﲦq=Pǹ >:Gb3bށrSѝaotʣ7ţѝ~xtQţ^pãvp|T}5bţc)=K͎x戃GE'< Ms ~YʣsQCȣww;U:}S}:;: IuzSu::~vNwO::^ (u:uzH :=4RfZD~x/*xEЍeK}K۾";#>U#f<gE/шA E.=ã> ZwG̸cѱ<8bNzTkͰF+t4yyFLw2b|b:b1ӎyYGj_G 3zѧ7;bԈgFkwTUN7TGѯ]zxSHy<y W}G>uȣ?ٗG퀃Gqȣ߬Ho9o ov<75wyq<}ȇGGq>ȣ߃]JI&K^x{G}G{.d'ã? W^]>ã? Yx?y \£? ۼ^g! .l?qEE8âΰ:,h_{p>9E C9,/҅E7}(V>tE<`%zfâ>${âeџF yE¢_4â ~QEEEXâ_,gW~qn ,ujQv/R `џα1tJ ~{󆾽.`E^u z{IAvv;7alЭ2[AnRөr<픶o;$q lk Dj[/i; kA[;Hl' ` ,l#Q b;5pâ ¢oo'vqtO EEwtâ9S Oa^] k `z$CT{o{~W}?Akү4M0- KmΛJXڭX۰'!زuQYڍsYڭkkKq;oIYX픝 Ky(KҺj7-,vݦ,nXMvv4'KۭKﲼai'>,. K7հl>,n, Kɰ;';24F KC,ι,n, K9,9,H&Kdai&KvbX&[ K빐d2ۆ LcmX$evC6L}fdz$i IKnm lX%Y ϔ2a .萁d`r"w!d`oA 2nas 9d`qِ]2]@#$d % ɐ]3"d`؍ .搁],#Kq/KuXZ=n!K:dG22|ȩb!2 << %.xH@P$lfskCd*dQ&ې{s42 <5BT-$bCFCe xr*x)@je <ْHTy$OMŐd2𔽆 |j!K8+x> < 86ɾ^"L)2p $8?8}!78$! bqBBAYyAۨdlC>^A6ds*2/d~!ǭ2dpC^\Rk2*mK^SmِdEVdWr!H9/dI2mC(x |%ߟ>$KN![%"d mE:IҫUdBӟل ٌ>Pl s'oc^y'Zs̷ummv-5OghoKs=NX?סګ|3Quӣһz_K\?T҆H@ûx2<~ ߁nC:N'Su}3>~ϓ?oѰy#g~n>Zp}>|>e͝~y |\o_{{>lKn[溟m ߟmw[4xe1m\vk<-nﶮly=?yn<|c;ky\y_(g<]yRKnk>xt~x,=5G9W&U9Zn:ue|Kg>av>|/}ns X/ܛ''Yj#Sk>Įw+C-%;]OMXoM]MXznBޛvZY/Z-+uQXoZz=ncv}5TYк}j}Mr_Y;oEZ3\cdpafp?qmOZVsSgeMxZV'礕CY_~#zVkv|jg?}q}~S dy*pX u@T/W]muLoʹsR6N}KkzJӟS}k9eO=փ'oԛ<_u`N}tș1vYcyzܸ_2xPu֨v ;};X"H]z+;3]U;!%:1{tտ]tGzmۛ}vBŽRnRO6g]]Wzw^H=\7ϱPZooKvZOy@yA3)yDs^a.=GϏ%yK/S8~r:d nHm&0yzs%n梒ܻ7KT2/<䄉dgMM|&'8MO$ J(y%MR~M%~o?A;d+Щ;*?uc6>ʭ{x?I7Z$uc?m?D=LAN4iяaүgijm=OHHѳKQcK_2i?S3~jS~TmSvcfuЯU@sOD?>7KN*d;)vvM ϶ϥn7~t ҏv+/3vfk/4J!x,p?L^4ꛕ3c$i=f+y%3nfl7fxivvsl4,S[l엔!S0ϣ̖& {Fl>kmel鿤6P mM_SRÖ*򙍳 װ+YFaAPhnBO}O2+ :NWngMĆLGk/#PH&+0ݸD3Lƛ$&͈)BLK[g{Yy&ߖxܜj~%f.8Fyix1i򟜼G0O^ xr\`e F:V04iĆq\Sxw.0ftwoy|qA> riy"OqƠ؄Nhtٙ` I{ E' Tyc6:9\H=ǩBj= ͬ J}5e 6><[p!ABSÅD.$O `q! \Hp!QyŅ 8.$Bֱ&-sgvNs;q~gBADž ".$,Z>.$ոZُ]B:~/Ņs.$Ha\H_\H$i^$;0)wJ3t>Oǃ;+O\ ; U\HY{ąH Ѹz \HG=ƅt .$Rp!Q9Ϭxbόi-IOfړgsf҆.$$Յdѳ^t!up!B:'Ņb&.O IDҥ]K'ѻx2f7xaY8hх i[A;~1.$Eq!fօ %.$x]H(t!Un\HDBR ɭ.$Sp!V).*[Uz7Kn7.&6#5lU.%]H%p!Y@… zJyÅQ.njo\Hndp!q! \1]ɷ i3 ɸB\HO.w;'k}wӓ%.$?I\H~Lą[h8H>Rs[*\H p!Uho8tJ~'q!yOB:.Ņ~V\HJp!JTR*7v[[jKYA\$C 4HFA2P K5H]nY jn"5H'ed5H&cA+ PDk5H%4Hڥ77#p)Kn[ܪZM :5HAR+g5HR4HMA@5H egxKdK 5Hj [~QvL}Fv,[Yl٭ ,4H`i3P 2 STZ%4Hj  A4HFުAR# 9թA2] PKɲ$ij8XzlrctتhXKl4Hbji3 lj<VARq̯I REAB^_$ * 4H/ 5HmA2lE ҭ mm{jlc?cQVh >μ_4Hޯj Sd[$d eA:yA~T4HaRhaJU gjn0 qLYm6j8 mjmh RTZ#4H5BD@wi&{O$jϕɶT5Hj QO* ]in÷h+ޖhKxOx@C\${jԌAj=A}( Z  azjN6<5HA?4Hmhʗ N vmq_A-O Z 9> zgilVI-$֓A:4Aj Bh8+ ҥV mj%4HA] hm8* ^\g=I-GhlUTShИ@S3 4Gh, R4#jA* ϯ4H A|- ҍ {SR[MɫA՘i9y5H F RQa|iA( G͌- EiM* RTjK4HS V4HS ΫA ҥlw>|jx~4H lM-PiAh =Btd j Ec4H R4Aj)  z~)( ҽAc/ (@i[ mKA⼧4HX ;ߧZ / REL P5HmS{ Rۖh&| \ڣWt9 ( R4Hx|]g>]٫Aj u5chZAPAwo4H5HAAbW ҵ4q3ڤy^>'k4HJSc$OJ~4H'Aj?ڼ,0|s7ofGd5HݫAڿm_ qjJA>Y$5jh8( 5H$5&jv5JYOzv h4H!4Hj UtB4< TZZARI] e֓8{֛-4HZάW4HA,Ar?iGD=4HjZ hd VՎAr?I'k؏\hݯ\#4H7$5H M5DhJT$4HMBtA:gA:ܯA:|hA) R S̗ARS~v쬏W < YSDlSiڟF3 4HAEA?$ojߩAr$j_ARyS-/s$5jnhȨAj ^ivHj{4H<9_$4CA:h, 9|cIhWAmA EB?X$5+KA ̏)IM o X@5H_sAV4HAڌEK.ݽ&k$ MCh+Kd$4٥ARVz`iARcɦ 5Hv_AB+_ 5HӨA⼮4HܩAI N~4HԗKzbocV+el}\ji)Bt]P^K'A4FD|iN& >+ 5Hj _Z#4HwAj>$ꛥAjj QDGi~!5Hۯi'aw+ sA-O qiJt3_M-ҫAEP    R: Q_- M }uh'3^i K4Hi]M-ۯZw q 5Hzr3|iJ{ ${y)ӥA G&4Hy. R X|KV4H?iAAJK }zJ_ ҧ }:R~[k4Hf- Aw4Hy^, Ҵ R:DӉ\Y҃4?m<>MAʽW#m ?[$Hz菎i[T_E=Hٖimăt^ABa#tA8L &n"&ֱX$ǃa7x(AbQ# #YABHAʳP 3G S4} z){nח}˦;m, AbXݲki|R6 eϯɲ m'6>4HV?/j,- -{2;$K4Hjy)z5H9S Z*m:AuA"- Dɇ$K2$Kh JĪASt~QW4Hzy}% !w5HNj,A³ ?$Ac/M<XA@  a45H` R4 jo:iAPD4H&h$15H'O $ VW$15HAAPgirɱp=Fαq/ Ҧv RARVE  qP$5HFKA\$0i A: & $5j>IM$0ߏ L"qs4H8ߗ4)4HviPAjgAUAb hM:O{4H˫A"4Hô14HT>hg M q UB4HAR4H ]X+^JO+ 4H bSAj?$1APt-* RAI7 ``Kq)Kl3jJ K4X%f4Hy, R75HSmRir?ARK4H؟i]Kwi2 Z Y [$J4HWK4 A}jh ( $5yj%4HοKt5HF4HA}hAjbhh( RGPchiLTti~Siĺ iAbh ) #XFۑƉ[iv0C5H;E R3m @5Hj uVj6 >C']R$??5HN:4G`oj bhLWhKSd[ A A߶04H׏A:iXGTѥA4Wtv]AMA/ Rf qL Aj?m#ƍT/ R~)mS4HǿhSGTm5A4HC-, aP )m3K5H6ϥAJmM5BhX4H<M5 Rژ UUihBDG!5HjlZj3G_ihDDVi4 Q$A\Q m mPD:mŧmǧ$痢ABiW+TAh eAB ^$0)mhjN۸KK Ry /  A4HZ$4HmhN [|Kpi2Ar_?5H Rjw. %4HO)߯si ? Ri_ m R~jAxRF{i)cz yiZ, ҩ RA4H?wc>AJjiRZ)AB4Hzo'A- RAzYF4HV{)$aKt=?$HA:$K R>/5HiA:AR4H 4Ih|A<4H$h^ 5jAکAs|yO>yP0ABZ$UAoA*m&ABV$5jjJIhNG , AtoA^$5jدIC mjMQ4Hjn qW$ RtyIC siStyA:L |  ]j 1?iABs ?Qt}QI m$yAI V4HAAK{)ڍA)ci6HGAڿ<ޣ=:FD ^eiڏqi1A 4HA -Hh |_w5Hj)$5KH ЏGȥA?$]j- &?;c ?R4mKԿa?5H4HT`i2 jJV  XML iץAj_^hj 'AUDG$cߖ)Gi}ҏ4HGDllit , AjJ  ~4H>4Hg R: uMhԲ, #4HMQiAAmliΥiScTF~v߳4H7AB# oAAt4HlAD 04HGD,xi(A:| UN 5H<>j ]- hZ$4H۷HA"F>Hm{i?_5Hjs ~Qd ^ MSiy4H/S_. 1Koi?zGt P RSTK\EW GAAJ[ u _ni2ޗ)qKoiH, R3_h͐hݐ[O4H)qj4H~- &4Hڡ * }3)oKA`i}. KOQiHj>o?͵AStٶ)ir)jp&2|Ze4HJhJ acI\ip( R1$PĥAAD> ]{to6?=?nA~5Hhnӣh \ =SUijpDT5Hc5H%0x4H~ABt `i%YnA"4HLAK0Jt7 _6`£'&-AzG;# GĥAz\#$}Ke4Hh vQA!@Ć4Hג\8 i.njhh+ R A4HD Rƿ4H4!4HJI+j##qXPAR $5H)Eđ$rhKaN4HA[wB2  ݈f$ * ;yATIAw[  -VA($c4H J. QAD,$ ?@JG 켇<$868nw<7{ȘR98|V[2 {/(r<^ɴlٹ44<{={bO|ȽoɆ>cA#ufܝ+'vד%cdIq~{' y>$yv $ϪAYcv8@y6yng`3Z=E  Zyy?yb1^擁#s;гOk5G _r涁6Pbҙ/ug.P>egXe~|fkLw,0?EŹ"KmX-,GSXd)sBDeu,d uY,ΜY]zR9~I -Ki% k4]Φm]N YΏ7伐%<d= dy=ung=9;fi>kY.',`E[i&b]=)2e1'{lE[lTl1{Hk0$#l%'{nUٚݚ6sƤwc^ntJk-"eSy)=,ǖfczpφXYdHf|?Dl$o3U!Y % n,44"[(dQB6fA %󠅔M/]*B6cAz =- A. EioSb$#1;鶰D! ]̑U#߷ e",)JW!p u-uhBࡈBxCHk"S܇2-,tj!t0i*"B4-"F^#^StsP`!We^7 YS~ -D7_oT!ygb& T0?BSvX Ne-;Zw #9*FrU\V1b$[:o=qRhxhi:A+LU^IA4 `* K}]Ca"| H%FB|Ub0G1 }+rP QQ$m\SPPA JA* qp[b%j4vADHOaAAӃczSSl\b[ٛݛb"yAkB)V/([i^ ̛RW1b$@#MGnMnWAMbA8rH(]@x>O );(O7AAH#TDlnDeد(ӵ@JZKb/*39$@Or4(z"F:+!FRdb$^[K1E$K1yg(-9p[`С([WHNjHd7Td^b$*%Fr}I1b[01ҍQ1- (n 9kDtQK1=sDt_#i*@Xb;L6l╈P%╈R6#E*]E+qX)z"=eJFm~#1Tv~#.E9lll7"D8)D9;tvֻvvDxvC,D>;+E?/" _ 4.+"!PdhW̅iI's!IT}QQ"Q$ I\A$WE$WE$q;HOI-IW!")%D"ުLIW!&$oI""s"IdP""vB$%H1DE$u"iBH$=H:yQDR!x">!v.%"9#EI'WڻIԙHzKIoH2PM"/u."]A$AAB$PD;B$J$H>B$ {Qi/"i~6sj !^I&x戴Bd~H^ozJ"in/{~WHܻB$]H @ 4%C$UDR~UK#DegD$IJ"iru!vΒ!ؚK$yr TR$ i!B$a HB"dDҹr5mR,d"DQDRd *DR%W%͎"U!h _" Dnfw$|I $6I])DRHH:U!U${p NU$C!4K$ÒHB$U7Q$$l`H22X6;ӈe4&m.x__G*~ ڊc{y$䑺eHdPyA#<0 ?G rGUAmGPDPG}Hi jkG#5e Gj4##!.#!,i/)x}(D$NE/$x|H|xG)) GXUPDZ/\Q- >yX %y$G_Y{y 6J̮XZq;>#Am'#q>]G2xC*(ɠ.y$.yxkG/D'H#VApGl=K#9 :GGG=H.#(ġWH$)AWH#)<#L/#)֗G{!呜ooʤS<F.\A//RGT GÈ#,H'T8G[8Rő8Hg8‘G"Wp$aɅ#u_IJuHBő.H‘/{lHG. G?z$c 8#Ѯr#i^8R_qX0wp$p!psG/t3#m^89H‘/>6\8RSGp#+`GBP8Լ~q$e| G~pG‘:\=)dΏ8Gq80p#T8q$ő̅Z8Rp8&nfH9nG}HG,y G8튅#y,dΙ8ҹry^i# _p$^‘h,i+Gꊂ#8SpGj?z#E#OG}?H#ӈ#usD8ǫ)W#?z$#E!#_G̙G:շ#n#mrn$^p(H `H+\p$tIHxSHy}q-S }GaH9n_8R‘pD[Hg,‘ GWZ8RpG:G,)p G:z Gi) ]QH"tCG:ē^I#Ct,< i8>2~H|p鑺88O<\zUZzGH< z^鑦z$#Yz;H".=R0q|H䘂#-=Rr!TDp$*#5'p$qSq$q5q'DdH8Gd8m7#U8zBqWJNH@q$O+\GRG( $+'$+$%q8#U18{m(Q00a\esD:uD-Yv1ݧ%#N^q#q=,D8p~ 4̟HH̿#=~p$p$rNXwq$nq$N4Gp$qp$i#5 g*$T9$8uJőNoÑ‘ G6Gv8sHrGϔGzxHo#G3GؿHmuÑ6$8n׆#)t oκőv^qđ#8y%8H889i GG4G"?8O͑xp$rH#}eHƋ###LpSSHyҥ*TIy.s$r#HZH]#)^e endstream endobj 390 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 393 0 obj << /Length 722 /Filter /FlateDecode >> stream xڕTv0Z9AJ۴%YmN14Fnr0vB]yjV%"XSD`#L=!h—2Y\K(Zk$9V@Rjt5OYFS=.o׬Y@50C)s,UX17l<f4a4fzbk2ia ,/pb1ڳơVK)uwa KL^,zJ)甊duպ1Zpy<'J v#A5@)zqĒtgrjGZa*8v`-9/`ⵠX|ii/n0:q;Mz`).c}6 ~$|VBL|R}&H:Tf E5^U5x N;ng9*]nvmzSuv0ƙܵ}C2'4P)6.f4:26_XYa}O3ƽE^`BwpLMqy9Er?%ߏA;.  A=Um?Fֹ넶oM[󉣅Ds>S`G++1A4Bj[W?M =Xj^MSmKr˕Vѱ_k,9H>xq!__Z%+my E-`ØÍvl^e^ f0nX endstream endobj 379 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-dur-int-RR.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 395 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 396 0 R>> /ExtGState << /GS1 397 0 R /GS257 398 0 R >>/ColorSpace << /sRGB 399 0 R >>>> /Length 35521 /Filter /FlateDecode >> stream x-[r?OEylMUD"(%[;#f ԨS'ο.2%b̈/?ߟo/>ߎq|_}Ͽ|?VX?G=>VQ͟gYm[㯥?ʱl(e|ގGr???7n?k}?C8~Sy~>ǟ}/ȏo)G7?k'G_܎c/S<Ǐ1^oqQj|T#cg_|n{om]:?2ͥO~U.?aww?ݭ{I>~ǥox?7g_zʬ?|?oc|~?}?ӿO;_1?߃ez/U>{y8{9>U˼%'}gEd16 1g!~4_?V mv(6>6WS;nsEkj?VyރȏZϜa ͩVyGnK:lQ^,E׏2ҋ\9/W'_ˏW{))zqFk填:/qq9bk-myi\kO(S2ϕfjo]ܜufy3t/:fMe9ҜixUmɼwy74KO儹H39~fKL2fs)5<֝=Ӝifޫ<{%{ݷ0sKs\- v4W\U/Z0{\\Ցq<㪊f5rf=vٌ{#j-W#v#6k{qiƈ7<4Qr9dǠ=~@.W1b$Ⱦkymya_quvrpoeiV:1e >mFHzXuW}rߴ|J~uu]wp"z~_uǴ}/qeLߞ[xE߷҇~͇>ϻA}T@.~\(}6o;cדGx_o^OǯG]oؚ?==~]srwǻg>y]<=4_=x|vx5kx[_!/o_93>3bjݘ+~H=Y lZOzv}G/*gawuaz*vZކzvy5azr[]A#\-AMv=5_U{? {1#`}Oai?[Suz:vn{.aO{ƻq_m=3~nvC~qyF֟ǿ{=Z=~{Ov%k:r'oS0홆+flG5tƆ~1.pA+:(WwW9{ ~B{q , .}9MC 5O\c90%e|1#!ΰc(M~#E;xb9A_kzqXv=_-F63qwҞ;hC22*Uz_ a{TwǽP|X?;/VP~TP2g1SHPˉj{BK-3Km^!b:1=o-o:>[0*i$-wA/[tHؖdbX-5M vJZieY j.,.JvϿg;Ғ-y; ގp]/!0i;DbbDcb;EdbEeb;FfbQppКp'p7PpGpWЛpgpwPppМppPpǐpНppPppўp'p7QpGpWџpgpwQppѠppQpǑpѡppQТ'2.vju"ǣGES#HH9NڒTQG}4xDR*UYq֥"+#L}G807Tc|#NEڣN{S7<~f}SᗎG_Xϗ߰ϙTp+_c 9/Me?u/M?AyGO[#;Snz}^ع~ yISv/ 8ߛ~_+zgMk>;ޞQgBnL9<;3^Ro!?j<3^\[%_h>ܤ^%Oa| Ic؞9_%h=Hy]SYS:򑧴>۔g=~)׏Aׁ_Uk&>_uLOxۅ%S^/x ,ǔZ7}ڲ>e'.>}2y|e#'/oxx= L1b31CFLb$N i1UoGK{ 47*FwJlYƧ&hM3I/i`kQXFfUagXњ)sĊW#5/,1=q2Mp RSǔh1k^Xb|Ĥ;4|5ώsXz\#Ž544|}Kq6\s7ibv1L~ VL?geZϧĎe߿2 >U!vۄϽQDJͽhד\oj =ݚGj _U羟)w|G~B<Þya{<-W/1l'}-ǘ5^sZg ڳfZ/R3(z57g=>UYcdzޅ뫊iR2l'ZOÖ&6.C/j<<ў>lOak=~vy'3_M؟#Y?6g? [Oe;cZzۨ8lyۯg?O߇F@Z// cy[?23N®om~h~Oas/q?h^ώ?)9ƃ^/z ;Ɨwg怿?|N<E1aO [{:OWg㝱qrRH돝mWi^Mx xnxR͟;XE42I4`yp<:rN:}fIh]_А/5vN<o;o z %z<`=!40G}FB9g$˚g$߳H/g$ ;Hиlzָlzָmzָ'=G5.U[qQs=m {ŘuzOM^=_^gvn =ٓ[O=;㵧Wuz'>}|XYNi@Ig1|er.m)^/L>U*>|b#٧+c/4!p 1}ƂOkHRYi|(a+OKg>1|*ܡa\5 b* xGe^Nb" b\d+8shc-}a\FqؗrCy9>a(z|{b04^n{Is5fwvCy9>4 dg&=XSy9}_2/MF3m0T瓟]Uy9.s ;r})/g^]y9>mG^}y9bG^ټ7:r6V{Tfs Z*cS Kn;4|`vhm*i-d3!#oȏ8˴^|> [Uv]oz~OAVUJyWU̾U$~4ey^ay]OƻClϗ?/63޲lxc歭gI睷zCMK5.o֞kgs楝|2aj7FYIZ?ބ}֣p>hJ>Y晵g xW62^Um摱>GL;}zy=ztRL3'~iI xtkg Wߧ,lWSr4߯2O>dzߦ|J~\Uf/u<}}e.Ŵ'2O%Q㟜LMWE^ϋ(iZ7Sv^_MG$/J9ww^ dwiԄ?, WzjPzQڴf'?5ぴ\*ZRėݤy5P5+cZCs<קxdPl}$Q<w<6uA<7o{y9 [E_{y}|x8>şWu#2g$g$3a3}x?3uFrqyR`="֛^1]׀1wLy!Ky[Y}Ezu=sЃ.ԭ]'Ų93<K|i\pѸ4j'C{v]z=_{bPמ1n4{nx9ʞݶO=9π=y3a>E\|Z |aV|4i }(OG\Eħ,c^=OZgײӖc<>sK#]}A(SO_\_ {R7\⸴'sIkTYg*zU5֛jm&صfޥ 6T}xC(3x N>9{OPNIeRC+Z8 T3=f|cv\k쐦sA燄;3\GI# 1jY] &V-}ֲGPVz ?߰GDԔϴϱvl=GfJ{Hwa}D{XeG&"N~M3"^2뙶YZi%M,ϲR, gYU˸hY1/[akвS%ґŔҎgL)m>jJiYv3t9e -Ѯײ%׳qzkHimf|-ntz?nٍU__%}ߧW )*?wرÒl–є.ž_ M6ђª98:R5G B1)l0Ja$qطiqZ $;T ѓtN[pXvJ=9,as_;+lV= }]ata?R\dX~hU}QTB.B(dq4RT_޲j(ٲ Nds8 sUޟPH($N0,Զ a٩v[ϓv/)!XD?>d>|+~@N`ߧS |2?,rgŚ7ǚKL&V - M5fyl"ZqeyiQTv|6M8֬x؊Vst#7-D/Er>M;\{d\H$E&E&^l.Z(y1iwvM;5КwB M ۄْe:mav`H2^"W֙Jx.G^&Eμ f%.6Ia(bWQ֙@p (A,ͤ?fޖͥ4"Gf%̤fQ'̫22YfZ~T a:.uʿ.Qhq4Q6 H D>0E3lU *Q [3B3i ۀLOULrE!t64lOef\}*̀&AJÎL2~Ζ5\7n<~6]vGG ]ߩ~B3L2 kW ȶ6} |_2 |_⢀*7jQmj|_ |7w23b.h.Hc|H"iDGg.;D*dvmAayΞ7},n |> #G(;84G/(8| |O߶ eš`ݙ;3߻Sw wnwB/f"&r۫?3E P p"t9D$)pQ"MD( Q LADϳ^/"J8(&fn"(Q8(⡉(QEDMr@D@DĕMDQL0%N g>h"CheLDA턈 H&l(d=%2cg=KMD!S"ʀi"`2e@L5Sg(cO6AWфay&0nq~7i?}-<>_!|X{ |{=C82} |v]w26Z wߝk~y=~¿Ti||w29 }G7d"N>o;Sl{hA볁{Ӯ |F>`a!] 2Ql |G1}N xߧOs |r}v019ԘKR*qÔA >8F}wx*EiUBe harmn'o~pk|QearҐ58̴n'?JrBc8t^Nr`N\Q/*d?Lj=~7Ne[*2 $$D,`{IM!N KQ0.Sa,o\Ųď˹F.kN.U]"7J8xG,N5`*9)JZ {T`;5,IF,lx}/J*@x̓YoჁ>a츧O_svݜۭ\NA?*S } |'  |bXo;|hiw03HmOv'6  4w1ٞNS\ ?IeRRRo>|7d}i$1}t4}[Abo8o;@t74p{*YY*Jaƻς1} ݰ |ll/R| FazOw')n |7 B | |:mo3 3NBf2;LaL8]f23f2}L&mI}T(̤̄*lfLIqa&'/ߡppNL*L<dH 31~оa&vsaG^0dE󁗜%f 10 P̄l>`& `&c7̄B`&33fo/q` |8yw`Y߁|YH2~%|>h|{?04i߁|aw߻w`4 w~x { _' |w?|'F 6e? l7}рwglI%O>Ǔr 4hxa:uٮAC:._7%Ox~orx>ޘ/x 8xxo\ ⸃"_gIA~l' ϶lW=lu ϖH?G?[/li@?ۋ_z zYS} }*|)#o"@7{B?rCԃ2 }|x# 5W͋Yajo{bw'Es2<=,jG~_{&{0{3Kɝ# ݀IiW4zghMB3^1JZsgi4eOӜWWO՜qX5|`lXǧk|Uۧlh >kU l^_Mpz+oc]'>gç)U:& `bB1b P1GKLRyhN^ rn)؞cG=tngQ 3 mqPnP2~0=R)/ǩ竸>R : |w'녁& ~B9(.hIS?Or~v7\aZz@[W nWK*6UQS}5g'eiZ}`Fyb} |n >}oa&k3z>.:3Vw/o8e͸0 |?3/ƃpM }~'7}2 ||K<0ٙ_M4FL4PL& Z 3 @`&p00`&N#0^ bZ;1ܤ9% 3憙ୂa 3 B.5l713 0_|>3n"wmX|?WR4O|wo? |w߁|w:|Xw6'@y߁7|3 ߭!m;@rIC ߧ;| e2@g@|%eop;w7}Rg  N|q<@,q *}Fx }FIuF3}F7K Pdr3g$HtXg$9#aH.|FM+mW4c4=< Ni^ul:spS\ vS4)ǃ9(4ťi%Mq)^!3NAw>;gK :`Xo9sdǜ.&J`CϹ&MS kάl(rg vVz(O%Uy'h |W|lB̤=I43{s {n"&*\skOd.SbOŞ 'h˚}4&|iz%5'ٚ}iZ#fm >S9 >U>|'{>O>[M5Z |KvGO6^>guV|Ҋlۧ}޺h uP 4"ԕu+{}:W`٧`|옠sPwLbTX]6v 8ދZu41@VnjLV43?O,+y\Vq{Y , ،<<^N<t4<*gƀ2 EO7(xH ̀b8Ry *A*Xc:zPo+MP` = {3`j=8P{@u1&/$X~9N/7~5S |8i㳫 : ~iM%|?;w7率|? @fZM_Tl(jk|_.Cxw}q |eS'yiJ ;wOk>O [b,,N w|iwbZ l.G7LV𝦊߇(' )'ba:r)'? 0;('᠜M99r 'Ц~@9Yߔ7D('zC9PM\桜k5u?(')'覜x~lxͷ{8xݰ?ŔmPN)BL7)rሦl )'Jd,PKD9 SNм iPS |?WD{ K}8OL3i6]_<: |2Aм~K"eRX2K߁f/l@a8(pٚww>ic&`9wmhXѸl9w|w |z.&w4^4Tp4;gOcO0?|Ʒ^xa7s<ߎ7&Mikn[)n隸.g$qFB|IOSיѦf3A`L 3 hg$:#pFb>#99#99Pt ϓ3Hx\y:sqCX^rL4/s#2b)"!193I*d:M*e}nzs}\qXϹYeo]]E/(uFҨWI ggA|K> |V>$MJ;ƞir=AYMRF =,ړ $G {>+|c7apxMħ8Ӥ*|'9\rOst9H>1h#NL$4v>wд>!SMs1ʵ>)Fv:a\^sQZ4aRrMQ|(j(xHEYEF,׎i\ĐQ.i\1Ȍwr؎$;-ȏRlBG EpY ק25y@|83 ~:I=O|NB ~|'9)Y;d.{j{jY ~>||ߝ w>6<˚:ew@ߩM  /{) CVߧ'E9w>R>1|R|itSQ= |qz |w|Rd:N#m4~> 5} }|n ӄNd{9>n'24$.S&kGJbF#_l;SE~iL"G Ƴ¯(rxdq<)'vԢxak|l^`|)3a$RvhդY#~NzO5/#b`5|_s?OCH$yH}E40 w&G~f^zw.|w$D$N7M3/aT/|IM$Z\H&}&wC=Rq8 7m@o7 D$"7 7AoF;Ao>#$z 7YP!7H&'|sm $$6 H&7) Lo: BDoh&7_MMMowk FIIAb1 hPd|n|"7AI͵gí!|"7: |t}:C2 o]$$VDo ߪIH$I𻡋I RIz<he|k4H ~??[x5 |o_&7[੫:xLo41 $e>#g${}^O|FҜGI;!$rBg$ g$&>#H58Hz~3^tF+gT:#댤WΘtFi23Ng ǫ.gnx3NYӝd;io;g&,pDb|wHI􂎦n=_iJo1XIxA0zMCKxSY0-a>#1g$t䴿agXnjrh2$`ӛcE3p$xG-RB ޒ8$xgCwQ&$xMH ! cݱ LSd/5%Ӵۊ})X_/w_B8M[`0 iٜ {hfH"3+!Lj SR!bTR>@_M! QƄ'b1wyoL}Sn ;zcH.Yo$M!{Y A$C  [2 t"IY&G6L?)7 WOA$s@ tY$MJ7 E?SO7 qCZ]L.5 eC /&/@_.{@<=!oRI I$2>H˘GHORxNQA Ov v ƋIs| i7$ j$K)?@?ʃbhLr ;|w $Hr?$M>7 |o"DRHݍ w1C$2"H ҴI=!CowLoԣH'$-H ,Ij!W@Ltr0 >eB<&_ڨmT 1@yRzQ)gT ͇s?>+S~~fO{.s{M$x17 x=8|I Ψq1J!T emRumR8!C )`2$$e ^$V3 ~dX/M_.&MH8L_勲d/C?,"?̤ss9^;smN#Mwcbo n|:@^Huܔ;^4x\I6 S/!8!c$$xk&W>$xCǟOg Hid!>f=yC$)$ ~77 FS߆r(z90 Ys^Me|$iUUR:ߑ!_>Ukq}&ۡZ <{\GIǞHL|S3nwwhto٤5௧LSF4}3aOsO!gGΐ/b 7 Ho$E a|w1.j$խ*33>x$BM%IIc/[O]g$&3 R,$xwo$A c|n}MM  |sU5$ Әɍ&[8$x੊g7y\E,Ĕ&WeqE0Șe=E,ȚJɛz9 q;&ɋY*#gL J$xw,z\9E= 2CN 6pc@b0 r`?7Y 5ym2q}S>Uq [םh2lizS"f*NE\bmVMԧ7Q[N(g&\I)YOwOȻ"Gư/iJ$e<)k9 'ov,w*TF L_৩,炔,tJ$9?;G'Ia/Uo$xbH I$xHBip8$8!ߡ\/<)\+F Bot1 $ $$a$m LE D$|4 _;tk"Wk+  SNfA9L/IG32_|('D97_?QN[tkPN:$oSNt;SNP435% EʽI wSr2Da8wIC3dr2WL9!`|r2aIog>}cSOD9 C9t4d@4d43QN&ˋr26DH|g;Ur2M9tZ3VcSLD&on&6 ~w61 <$qH!Cفn"Aw IK}4MwM?/Cw&Bu mn泧9$$xALzlIio$xAw&&@\>M}J!D$T!M>W~Ey|ZU:`',׷XN|R}XZuIKg-<_-'>._}&hZ|"GQ6% hh1ێc 1E-2cRKDv̚D# dHz"K5<KH"Sz &e9M%3rSL [>șϫ{So^nF[16\LM7 ~A3 ~5"/kTI /&/(&jJI0!/S&/C|&A_H8!*~acr  ~Y ~ZS??/H"Ow.Eּ oʙI𑰎}&W?O>O$8G}Q69$xo_$xS"6 ~A]2 E$ ~BE4 ~@0 y̛sM eqZbblz(dt4aoR}&&m=~4[jA~ƴD;o9-U=XL/ؽcҀjGg~\ lgR{X6=rƲzB5 ;}J('PН ?6 ԮM&o$xS6 TM&{}$xx!WH&m|{H$A1G g$33Xwv<4v+K[v<5?omؠ۸5: rE;'n}FrAN 9&əohp!{$x!sF Hn&Ӎ-w}x~nn'g &s CG_O$x3?g$gn|' H{&_g$ BCWw _LoĻ&wzԠKϺq\YI7I$0w/T=MgkR 9{f1{*+&e|e6 -F{AwQ?>y;$4;ݣ6 ~}<[HntL ~=d$&C ~IRI&ӭ|&S.߱I"2ȁ;B<^dLx,H"lx@38Ûx<z>Ȯ&/Ę&3t10f L~|ۧƫI"G>'}"O>#2y,/q>$̪| L<grA kIrɜk3 w^s {F9@<& M= <;Lz@48I>Iu~H _$0,ۧm^/:;;)$y~Ab5 & 7 vO:@?][ ]$$RI'gw7?O9@? C_t2 ~ѩ$e:$5)6W$$UڟZtβ폭%mYcß[R}gp5>Obٟ\,/sGE?;AޚI`zV;9$~:Eߟw&ㅉfxbv}#z+ѹB9_g2)pfRWxr+g6K-<݄wG}[^ hS4fYy&+ uFį&zpF^: VWǍSu@bu}Na\d&b杸ut2ծ;55yyZiz4 2k;r4ܜS3/CviTk|=4@i&6{%lΩ29L0#xykP%6Dy#0)ͪ ͉Q?6w7 -1fG6b,,;ٜd*%S̬lMlcͻlMl.!3+90Igf3NĘٌ 49|?8oA>ohOdhO<ևTyڨ7>Wjx Jy9_]x ^ xz~³30·3޶+mm]gǭ1ύQV߭|{(x9u:Wx:O<(IP=xusϱb/`~@uL_>[m' q9oA8Zssssϱ6ϱc0\71c18P<(f .3ipŌbF1cA18R<)f 3_3ŌbN1c18T<*f .3vC*f n3cŌbZ1c18W+f 3 ""<,FX "dAL˂q ? "&<-NZ BlAۂ(q  "Īqh=.e"LZ2qk{\&rmĮq=.e"L b2ql{\&mIJqh=.϶e"LLj2qm{\&mĶq=.߶e"Lr2qn{\&mĺqh=.e"LB2]h{\ mtq.=.Wmnr5\jG\MTmW|ƫ*AWUUWVgJQ-X7!UՄP-jZS5b-ЎTXMn¥O̥wdՔz-T՘ALWk5D5gq_=nmLTh):դe/UmE5jYSUZ<.y>1}3b5cAfL?֌,8*z@1mט1h4̘6xƄǰ^31b @n l9eЗc!wuns#1}P1}ztjHwJ]I0)Wcf1x9%>V)ӻ )񆪐?:%~qJ xzR p&%lXR⍆"%{`}x oj)ox;'%6;%>SxwOJ?))ħ_KJjH7ux;ēx H7x3R]jGJ;H͟xgo))&KЋx+;}xI/HOEJjěHJhL:%_<#9%)8{R'sWZ&:%׌){Wc\H ANIvO)NRuX7IC<-[Ww%yUgVV2H\uKH9MPII2$I|$|{|+QZ$J : :$|ߥwu}$ Mp<~[A ƭ|+HՑ߿|k /x|ؤm X//IЋ2őڮ9[h#{oqc2|d|#0H[9o!K[>#B7K{{C8$~H!oHydbn6W+f9DY4bZ1W?CYNLR1g+f2Ɋqs̊ R1T+>3%x$$ij$r($!x`x&$@';:*f0pЊU*fph T`X3>*fpdŌبPj*fĢbO,*f3gh rQ~>X1Fp+f8pBo$$>Cj+yIsh1$$~I`HI%)I|QH|w$xKmwG&C;Dߛ#J=@mʔĿ+΋+v3Avc* Ø FI==^7$$K%926"x[ $HmSpMoo|8Ǟfߖ#+N |=͸qbeos܀l!p<#ǿUA-Ǒ#.ǿT$>I:$ޑxvL߼o7!ؔ %#vI7GF|+-r:W$VGx|k[q To |k[[G|k!GCGV@ /E} BCwaGŬ$Q19dYES!ʾA|K,AwH[1SbhV8$ڊtt6s $ !p6)!Ġbr8382bf({T'VpH-3Q1BbFdqsy60ܦ;!6e9}> Qsp2i\ihB6Ao$~0N?hF$_Ip#$]!?ܓctO.Vl.!YC=9<'%]M ]w2CWHA=C;Z@6qJiڌ7$;t&ym4mF=B{6Ǘ ĿMAԃ l )4Jwf'$]!ܓ @osB zH|EGh“ķć++I|s@MmM2|aWVmu|e | |mڂ!5J&6V,$=ex$ap\*I<1 I/.-_0I<{I>{rðX2IK?~ojI|Cs` $> =$=$8pޚẏ2ZV8#o%_,V+/;:*M?GM+ *fI)bȟ kŌ&d>*;R>Q1}8B4*NtAP1gaH'eS dTLG4ʩ۸]mۊykקbwӺM/.7θ9i5e~*9΃i٤Qm'ӌb>#.h*?M$߰b3gWm3s穘?O\qϊ1~܊YmS1뷉Z_%ސj\9$ަ]Imے:_W>CKqА*WDZ@k8@+%I!ʈvI|%F$Fj7'EgCZ1n_Ç,H|,Cn /ƱC b\=$$q_ė V"$/CD._Ii$'!=`ؔ{ĿC79:Gye|W<c|CFxɶ$~:oS$q!AK%+;VYqH⛄OMaJ!x?$ޑq.xSHĞ$Ii,g4I$D&_xH$K''IM{:~'H"IX?(Iy/i9$~2KfKCn gq$'rs'~HLw -zIw 71`Sq׍$~x$I<x;I>)!%) FhH8w!nI@;cēaJ+o$?Iw$^&2T̤ފ3 w$$?H|yHmE$_&)>$~~Hd%B!hYwS]o$QOlgNl~ىfTL$~ϼLLY'%S9^I/'$2%_{J9>K?$~$6YxcxbOo$ߓ(7W/g$ƖK!LbH[l7\%s} "oK$͑$p$TwHC٬NOqxɲ$~5I-x?n <$$YIoS$$rIs^$N$eI|xS[}|zKV62;o%%%%%%o%g!I0 JFx[$ o<%;HӴ$^%'D[+oy|KfTuY[ˌńAoa$-_4) | s$$C J,$:7Ij$ڻO%#SރěR,>b^WPM$Obns{GI*b.פTes$˦2I͚To؊YUbMXT̲醊Y\_IEŬbG,2ijC$޶jID2/xH%y/pHm"'B60I|C%T̻X*fV.DL /3%T+P+fI=$^)JoI9$7Wsܜ$gI`ZxVDI)˦x"HY&Gϊ5IއH p:$>>x38?$>{n0<$>~xHx$$$[i*$7Y/iĔR"5IxS%)9SM)7%̓ᅲ))_~Ri_|ÜxR3%HA?H|3U~7I7w{);AlrHiÌ;eSr}}q}{Ǜ}vT})Q|q=^|q|qc$&ׇD:ۦ77/B@oﰨ۔fI7F\4=&b%!I }33WS+S[n/!9 _oȐz /Ļ I$dJ 7.$>'A2~gHDW)x@Ŀ_4)K@3_f6C35I|oƨ)L^9)LJI<{I P'$qD r~x3*%]r$>!񤸏 $L !|bM/_C/H< |oS5kp.ju4& Ya |t*u2C } |OD9{>m2ۙ) hMɀnS~wAfΞ%'@Lcj=N500y͊N;t~B*֊YIX1% iq*d xě"-oߦhb@'q񩘜@djo[1/bMTLblJb|Y1E"OФM1MRbO< V A)Y1[1&*FmmbLŷbhˊV(3slߊ$bV$֔x )iSMA6%<o)˯GJ!FI|Llڄ6cEo A T 9:a=Cِ;K?@s$>xV%iJ&w$$~deJ0u!&%IělJ1$gJ`)E3%~IJ_b0Lהx'Bu ^V=Hdĭז paSr :)9Zn\HʌQ}I >$~7A"ڦ 92$;";{ۖ z*vEϦmH?kMQ?Au|MdK?yF~7>$~`H;ן$;C$~_KʲSޗGutqן~\_?o endstream endobj 401 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 414 0 obj << /Length 2326 /Filter /FlateDecode >> stream xr`\9H%S$f琚쁖h3x]oh ~#ݪ(nt7G(j<"Ye"-,*-$ZEo/\ՌO[k'llz};"C+ﯾ((x\,-$ /j~@.J2&Y`_Y2}W/{F$2gE#4&b<_H7Q?p@,3VpAj_.wXr;y}طQxtQ6z3$TxSdi F:)n%cEZM*ȶia`Dq4X.P6ߢ8; 1JrLIK%2BX-$,QF580w-6Xނ)2Q@"&`9>}՚0(0k},pk^aƒ5'CI ݮBg`e*&ȗ|!$f/ /H@[};e-bUnʛX+y]KBPrZcX lKKa_3dF0W"5|*/kըT512tQ&.wnF)'5Ȟ1*g(/(/` 0,x4*×yV(x"AdYr7\SÕهq=NAVSZ'θ;^:i|;D|7 h^)Վb篖JWI޾el\#մKr|g*yD=C3Kb{i]\n _ye_<I-y{Vf`0oű[V<gswC'hG' bÆf iO=Va^K8+ Z7`L.i=r|5s݆Q t&L) dc F׸xKt($ޮ~lQVEF1̅y̗$vXx4#FS_v(ӅϴA'V(7FGب. X57j!42xsݯ_ E#cmث˻L/#TA|iW˞XLMIT.\"qoGt4Dtg@o|jk̤[Szװ36QaSR帪]4y|At|BhR-d&Q'F5(u jjċvOA37Kv ;8LabІ|vLZ^6jrۃ;i@s4@t EgY=5&@jK+ pHsm:A$cm9}d'H}o8`9#7-aUR{[f׃*l XUm9s'xVG{WKhvNlxޗ'pl>lIkNEܐaNMϭ?Bozs*Uޠ,5{Y9dpc4m> stream xXKs6W`z& "Azdڦ8N@J$K{IYJM3bǷln_jŤi)6ezʓ0bZrt^N礿LP;X<%Ҫz2<˜J0y &"+`9{lrƚkiPZ+OI%y,b&KI6P"U%{ڀWG9TcѤxBpWA Z[!|e, XUr>כuY]"eeI$lޕMmcξ@٢ |gFDj 39PqPg= u6_ IޑnY%)O(H][ KfQ7uИW2Dμ37t0DGu(4oOQH`SshhnpW}]C%mQ agfwf0VpD>bG+FY#q-Z9 %@*PXSni!'5 =̄2>qwŎX= L`` `/sꌫ(.= q 7 ) {mP $6P°yj=^}fv$6)hWkT8.kdA`(= M"T|L#Csm)nݱQ!AM[xhc ^Kk%/)(ז}Q\#+" V7DžK^ѭŃ=?ZSae~9zĵQŠ}(Ȗsmtѳ!wUkQBLAؿlܫTg~!s̍ >hVV*?1}:9ʣy5uņ)hB sjwxq۫ÚOu`Td~+1S2[d,9W6U- blu_hpgBý:>ܶK{N}mOؤ"i>oq%<'ON]#(NEoS*4/[W G_p Ō endstream endobj 304 0 obj << /Type /ObjStm /N 100 /First 878 /Length 1967 /Filter /FlateDecode >> stream xZ[o~ׯcBrxgH: Kh1YmeɕVAjx:XK{rY\-L˜'! KFXAxx&ȈH"W/F7YlX"&A:;4 1Z,6ah`^rɣ%ғy>|2(X%%n`5Yx,d#40:lL,zMN܃jޢh?Ѱ4!cCMxl1,6a /hJhL}v)!=XY% Rמ ğ#<w >`фﰺ NhF4R1-eX;bWlVшX'1؞Ѣn2!92&1qOD XbH)]d\,0'Ƙf P510{-Tȴv>w;[ h⠪ m=|W`h@ټ5M>7TB};/z~5Qj&|U>//e5/Sz^a!zTA85]4jղx_\7*eUTSϦ.b-+,y5X+%fZ]%Ve5gbz~U,׳bݨb^ʂ[evąJ__R}uِdy,SfJO|1oӧBX|v~HI΍dCpnBtwr +oP,ގ\.UcgB>4bkcU5Q3Z-K65skP| .^_r$S~ F-[bjlg2|V{ꩱo3@NV!j$F2Q=98=1$N!8]VES/gES'g_mH#QK;F'eqk]OfݜjɣViOuWc^5+wDX\pKk3]5{_5uYLv[NӇ3AВ\f ךbּo[v.j~S//`  0 HqY"]E=kPo䲾Z/+Y7|2p&db%YٖaaV9/a Y^r}h9i2iL8.=:S|(ZIg Ik\ wXpƐXػL[wC=w!dmNxoX.tȅ ?:o.|h.D<MTPѹ!Fυ[,]*< usaOv{"!; 2j.s#$2=&sH&sW,LFFh6 <:l@09^粞lW,GeO$)#)tV0ӎZ(ul1&A˿XlJB1K)+'+\!")l(}P{K8xtGB^ǞWBgs2{ӌM0$!z.H[ 9scoUJMqQ^e/ǎ:KmH 젨!=ȖgGݵbbwM7By)B]݋ cQ@58D3fjG0 '}x!\ш S >;(K- NC=&lc|Nkg gq?ڑ: Y#<`{o0->> g>>GZ endstream endobj 404 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-splint.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 423 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 424 0 R>> /ExtGState << /GS1 425 0 R /GS257 426 0 R /GS258 427 0 R >>/ColorSpace << /sRGB 428 0 R >>>> /Length 41142 /Filter /FlateDecode >> stream xK,r7~EɁ6VyM[aP%Gyȵ-巿O~ooƧ%}~(~yYVj.GNeg6kZ?zN垫^?ܜ?rɿ WQק}~?iO?O?_ۜV^|1<_?.uhT~\˞ux?CGUgQ~T/z^y~\ϟ|2Kqym>׫n~ykG4~~߭KG}n1-_kŢ#_SW]?_G}xRw?%”׊+lg'Ͽ??o ~}ƿy}V݃# U~M?_/s'/-hG;?~w߯&qq}~v͘9s\}o?syߛumOzc#6I|{[,?rw4Y}rX51oō9mkѸ۽ ןduO{{k kg߫o#dyT'zZ)"-46J[ĪO׻+r?4dWvsXu;y[q-cݽz܉9ƾ}އÊy*S~W(G`[k_˵Y߱m+j5SXcv~2p[u?O^`cȺF{\쿾{L蹭{{߾ҏ6šqrϴwOCuUl +}ոakk-TX|Uzo_#`\g{L%g1.YZfޣOðqtry?yg76Za~`N#m}sO=Xügz4]Ɗdks(O{\Ruc{\xox}hy_@ګZ?d^1o6p/8_Nٴy?X#L] S9z!z/Fs\ݦ\rm2{_j/=|vĶ||k@==Hœ6׾Ws6av59a?ߕcΥ)+ ywmW=ܥ&}{o?5| ߷o,~ggt {l=?gdg?{Va s<"l-4TW{\؞{FaMZ5.,3~ObmYjnhBW׽ҳm z=dV8ZCU{V`@m}o/q5^dz9m;cm=mLqzKzx r]c|ߏag x,Dƻ6x,;wy9u?:l׸m*lOyXag}v1Y待 n_@q ܫ=FlMyߌ9a7mn_uۼ>8o'ox=ޮs=rq5?y{+"ط[~i( 87W!žb6c(ߏj a'!%{\f,1l'QwE;aPh/%C œR^ï=LnaѠ.>j=!!ܗ}u{As\3{wc=5ժA[mìOܻ[(bMb}'ˇ@<~ucqQ`X/R|KJ^ӇAӊwNa/C!v(/{Lj-\ e9ۿH9%{qG3+q^܋23{6?l}h;N݄k^UyjSb{y4+g-Vqa{vCAo}Bow ]Ȅv'+=ƽkU9D ܻ;[qb-w$?[%rn[Zغ~syܽ4pqÖ{+w2lr7-CvWK{bwݽif\+wZqSXw=+ Q<~,^2^cKF^Bd ?Һ5-s% Kw|%{uo{/}+6 ^=Nw܋QҖӷ_/ea|hf~}c/ק{]L{vܲ}X7sOCov=|GJŸ϶ܗ#u"SM4콛u{4ޛnxSק6vR§1^n{];m+\mZgƽ o3 [K {|My>nR|Ӽ4U?4ol{NϷ=-k4n0i}[ Ne|ʸ 'n_7Zk)w^jrG|[͞3^u3v}c%m=YTyrY߉))[p#wvNz}5V1ےvf>=_e;vpQw;ab;#Ea>e'Î*_]W)wٽ_o!߲rw&9osRpn~4ˎLy6|_ܦz}=x=?#/_0u?cj籆<;粏^0^Vyk<Ӯx[N0#zO{9s05&KDo5&=ϷIn1"p^6y3DV_Žlk=zr۹֛~h8am+]nUalS^!]}`z<&^^zߧOE~t#G0؟b-I-~W?~۝0`?Cگo7Jyw^a\^?m[ǟ3{oĹOȅ?g߹.?/Cׅ%麼?ٟl['m,kr{.tŋ''N7 ?)\Ջp߽÷mu=/+۷-Exxc_>1V>T>rr|=tl|iW8@kp|\?O>Op%N_Q>欧|ohYyAEz Igv)V{]v{KϞdOZ޳&G"iߐ1 Ffϼ&V칉מK;F9zO?/lqg1EN>m>Iz|i=>E>Qd~LqQb%1.r~ɮg|dO|<| g|0O|Y>cg {}6>c^ F !1HzWb=0Vm-*w0k0rgYU1@skU߿a˧,4l`sE';۵c|{ Fa_1ׄ(=Oٕ=sK9ɖ~};߯{|lO]SFy[zdk^JWݯk~$S g{M{~z^m=˽5ԺsbuЩCzQvn#.Nߖ4ttXJVNuo oK^}K>rL·/͗p~rnc=U㶷6{YZeWxﶇ!|X_Ac=JM{I>tv'|lO}!"^$^/B6%II9:ݶϤ3vlI|4aoκ҇|U1C_{|WL%H6Ž랖(\Ž!yHU%L|N[)'xy @]9ot%Ԩ:YٶU;FˎR-2V_߷IJeT~OA[~r_ze~61c^Q9i#K[98KO(2ɹ;2g ,r,$ 99gߦ~KZvgU}O#ŞgωzI̞u@=/(FY,_1j1m;PrCQul( 1\Ι8FB1YcL(s)F9kc9>^31J/h_oi C)FYM1"gۯQuw(xw/Q1ʲeYN|(c֞er; F򩷭 ]1%FY [1be]1JW؊QY19YΡtNGWק57;]|{qk>ݯ{qKC͝k}]m/_>I,vy#5[w^oi35#A=MKgў(7Hk\y[TVRλ{syk$kbێ5t j ߿嶻Dui ܸhٶ>khkhxC{c,/kir=_MI{إu>H Eo4aOݿ+:{Kև=jNE,ua_ݛ֑8֙V [72lM[Dwjv`b&z} nuIvE/`c:R)^Ua o{U_ HgadHaO1>Wף*v3쥿1ua*ݐ@yk=1b[ޯj]a{>hna者D&mw[0cfq$>kݎsHn{bGE=acm:w |?d:0JNJ뇮'a~]=1wFG#U[2=3X|G,oz^h|y3~c+5ӲbP# 5u،i]a:G|)1&p8K+ s- &_{k֓g)$zn>_Y ;r6[uF~j=-u^omYY#L#R}HE RO~Q(~&{TH-i=~ԟ,RIi=]g?CPtFjHHak~SC1cDaRB?ɟTKa+g#HNqH)G%fb|tVUR{'O^V?_NFO{*ҙ9.7 Ts9;$+̙ݝ/3];G.*LUSSaχ-QV<ㅗm_ol[g:#PpFrg$u dsF=_9#Ƀ3dr^>#.+$smztF6g"C'g$|FH2923H g$猄7g$'g$xg$39匤}>#h=g$3ԯ|@ؚTkP8# 3Fg$8#rFg$3x3q7"3rޜtg$ֽqFuFRgEel**:ugWU46g5"ŞwϞs9ĞTc*ĞF{^|'&Lj왩iOM>kO܅=;V=Ssf 5/!ҿ:|ԴFⓄ'G>˯ŵh'F(Cc(1$p2cL(qM2d(C1QىQk؉Q81NڀL NZ,b5%'b(:bG<1J.ZQX3Qrs%_>(9b鵃ݭc{m,l!Jvf."XcM;}d;ji w}5JT$1{[zأ*G;[}?-ǫvJN#nD'vܺl{ Dtۇޟ'\׊7Tt{>GNĵtUd_C<=GeaC>s h1uZ4 C>qbٴ~ єr,Z,ϴ>jX;g@+ΉidrnSw)'<~fWNкrZ TO弉Rλx?s}=J_!Jr#uڿNEɌUU|Br=:Ϻƾuv{v 6%%aoj>Ǎ.N߷w->oB!i? 8K(ި*9gSrf,x>ZKUM-j}lsRe߷ozrǦ~O 1~0msϊT;1?=bk*7og<6[5{ۮW͗mg>Ŷ[  ypc|7(3]h=nY{֋p2G(֛p+/i= T֦֫g={rZ­7^/Íz:=pwj?zsYw=T:Je]9bx?a^rm!2n.'itL~;~<~Zg?GB/`  ԞOܷU9V1/8ʰf'gP;}?Fm(Zg۟CWa쮽_'/7(Yu~s×Y W?}u Z9;ř@sNxL<ѦǷeF|x9G<Ӭ"iWřxw<՜S!j3cxZ36xq}լ;%lox.0?cG<[ %ޭ;Α/WΘOWmoWĈ9P^xo:ޯ'_|}$Pg.7+Q'gWuqf|G;R]@ZG>ZGG%~^W>B|Nܿיt|>#1蜑H8p:gG̙U#q|f`gA;n `3B@;8ly+5y O]%r1@h˸,QPR|̶, 0BL|V6~PqG`mkɗ?D[ޘ[]l@[>eN6L.2Ze7UGIeO.KTDGb.;../B"pY0(82GՔVq9*rRT@uiIqN q ᄤh rA ץ"+\]یؒ@'KD\.2N/oN]."a.8fCs9(`sE}3,:7sHs H[? 5†"1UyuCG*wa%i[*,Ѿ 񉦺|fH,VnQ\v9 έ8˱|gժ,g ]lZ/ Q:} pA S#!>_0A׮/ʬUھwK`-/Z_d/ g vQ>1\|L _ m|K}BMXVi5IQ'&bpusV 1 ,,bƷ hhX>7aA]A`#e.\hdFo/K@ag: Xc1͈Po.oWޘ1hSI@Y&qAVM%Eds8IxI2(I ;uF$u1τ&9+4I]FuMB8NGI(MRAMR54Iew!w&F^_kh/~uz@^?+5y:-.;u+WǐMVg"/6M^C^l6y,UkCH^Qju !W .7yXbz7ya:l!V^mNRN*n%u {}y Oy}ko6yG3׳M`pVVB^w$u!>ЄD!{랜].y)-n ] yu!y"Wɴxם'yN륜VjCP׋+M^jzq{#׋~&v@I|`׋CA׋!Q^)j$'UN u~򺻢9m37y}$ꋼ~'m'P?yHIZq xkսZ-pBcC^(k;iuqv~y@9doZ_Z^;xAV[Lrw ݡyܥpoL^_M^w6fL^?g:~8]lNgQ/{ᐡyuz}Kקy} 홼gw=+Ȩ=pQT_Hէ(!!F~KhlhqLZ ue;g XxX=e!=VyۘY3E$+qIF-&QV' !U>Ho{ߛy>ߤ&i^Y9S$JII5CҦHRI5CI41i4O=u}&VH&d2IQI՝k j I5B3_חu; zyyNc:(9 | EuKrE[ӐdNSu67y݊C^'yC3y?d*wߤf;TyM^uH/&CNE j됅!4iyݝEy<8te"bC9B`j(@I%;P$J~eApQZL(2(TAQ\%2!Ag("eGITC>A)Ɋx:)PE8TTPE*TSEL8T?UJTUQˡd("2"&Oq@Qx<ps19.ƉOcYOcY>ޘOcu4Ƶ~q¸77^$|E@%Agj;kzy=Hu:9rη\1/#sNZ{iA={|9_/*ԭf$4P OHg U\x*5^{ԐC^؃ Z{msgNzl={Fwtbw>A}->E'fI٧NuSA!ɧI>WgMO֡XgPu|Z|ʔ}>cigW왘G>ii;яO3>i'ճ!Cf!ɋn!O ݣy;yd +&/ 2RM^<&C^]% yT y~ yBR7y2(uwu]1w>e;uH׹?!B^wE!C^"@^yA^75׫cb! $T]yE!:9ޓyb|e!|}&C^!wgfR߮e{3(fvr v7>EU@9 : C澇>ut>C9 uoJ`:TO!;ITË^9 S M5on^P P "B7aL8zަ^zM5$D*QL5 \T jGB5Bj>gDP /曩׋cTSS /}Cz"P MItV1U$A%4U$-GT4=$ ĠDTTt('$05STTD SEsPE+栊"BU$UƯ"z7U$"Hb=5U$A.7U$!ݦ̧k:1l/SERrJ|z\azdM'7֣u:IhZ<euĔzh l)2ȎU$lwzg=_$U k}~Vjt~`Yܽ-0ޯճA=d8p>gx ʒC]~|(ޯOK~^My/L:؟c.:nr2'cI9!4oOߢؤy:ȟ7 SsAot::]?{T Q3TR yҩ yuzS:03qF39#)tz sFRg>3B7sFڄIg$P!u:@^igIA^Oī&'L^gqFKi3CH83dq3rp,>#1U,M t8?iANAH!Nq&H3!C^i+3M$_3/:)3/q- Nw؋6_JC^W(u=gqf&׽Ƽ;T!}&_{ަtI[nt8~N2Ee/{O''O->C"OAw+tk!OhC}ŔݓL^C^gM67y:n(1<1ʴ΃e.xL|b(َQ&݊LȆQ|EM&+FtwB1$src8F{c9|<O1َQ!N莡z.hφ=חcn:$|M^_iA^_}@^_ tܝʐcE^_C^_&B^eerU\EyݺC^w됹!WS D]"E^mM^yL^ yL^?U&P [7vP HY1"UvU8Pv7ԆKݓȔݍ {*xa"L\єڸ4̈oD21TC00A0u jL׳)|3 ס@^/}׭;;b uy>$vhL-=jAKṞ;sQw@~v((JG9yuǬqi>csF27Uuf;zWsF28  3g93y^"?bzM^OM^y=iC}LLg#CO}gI>Mnd'1|COŚŚOv}<ا'FGw|oS |^t}Y ߷7Iٞ㉙LMY\wO"i?Hak$d6$ KCf&"}v '2HaG3ɼPiy9!o@1;zl&^cB^߂N< YyuP=ˀl.:hB^/^ +^I?"XM^/!aczE^9B^ϗn&sC^=@^_L^O%zb?5y=VVizrlm!'D ' !?A^OL^OtSz+I' wk@Vzg*^9j, I#'?c: ΨM^_8#5g$|ߘN'U7g _&_/~[o^how_?[" +|R03šYA_xZHc=l=" Fzfh*kӲE%ϴԾXlɞIm97}.N/wA3˅9.1ݠgsi:1s-39>7ݛ9햯nA9&iA9viwB˜v:iwplNcwӾ4iwRŜvӾiroN8iDҜvi7̜v227s݊ŜvKi9活ʹ9iwNsڝR4}!2Xbs=iRlN7zs]bN活<ܜvڛ>!>!ԜvU5œvikLqߊ~>YOi?,N-/N;,>s)7P9.8>!8y9n}>ۺl87+N;4as76vX{/H/H8hi_f\gimNfᴃp0}APBmQ+ N @V} AJ`߄~LR(BB:k wR(C*&@PQ0`v!h$WBHWLH t$&x bJ ` !Y7"Cza$9j@:DCJ7B0I>%p|JQςFt%b0#|bJs:L 0&L m0/)x4U1Ќih8N3fzTU ͫ s̘̘jz 7T3 =cjYf ZfL9S׌ ƉfLSA{D㥨|3_jgkΌЌ4fL HͬxffLe{sG3ZQ:`ܘQ F`Q FQ:`Q:`Q:CgQt45Qs(0J$5-~0JajF) ! 0`(fU+V-}b^5cj0j fZt0ڋIZ>7D0ӫ&_-3Ja)Ḻ<#LN0˚ `5SP}tXWȏKTƣMTo0 0ĬT `XY p !CP@] ajZ 3+!8!!,=9mKjfTw5}FjwUJgXjI<FD5:!\~߮F? WAvUCR5?O5,Oyb&Z|Ug]!SLjS}wj }PjjCw5Y\>&F UDFSWT}Pj1X{=Wzwa3~C=:odBŘWf̮xbc̐F  kE~͘]o agHn3GZ"!+.uSޢp=5`&QQ`^ރz)As@I`Po L= 3az~?̯ ֞;f̶3c0v§Y 3VN{W&QoA\i>gT"cj£6s5ЧpnI({1_3dO3zΌ&3>yۻ ugLa󌡙*3@9S2#^3<͘3oDT׌)01Ԍ){P-)ј1:34#1QR_3bF?ՃI8'2SMSSMx j+~ϘSC'>fL5Ué0Z7~l)y8u}+j^+jo+`+jJ[nn։nӭnTX*tVw7}n+oeo=.oZ>oV7ǤVEtvAҊzT7J]eR_f1{9Z^ܗblć,fϖY1,,fO^;)2bvnp1y7%G9p5ps{Ȓ[w}и'݄Yl.}\a^qtr0&{$us/,Һǽ[H%%ws?#Y([T{ soҼAh{%IgHq{s?A ޟ|i. FсҾ߭FHdQ$S)0{Lsfi3&,[B7cU|;litaK'!|c%Yo)|j)-|~I |cMpQrÖN7-@~79V}_X.N%ߢGB1ÖIG2 $}߫lؒuHZYa[+9k[+J_!}|Y]0C 鳅=ư΍fvfٛ C%Lf˕ifeᖅ$vy sk+i(oH%ᰄ-ϮBo|4_7{Cffj^,47SboFjo6Do6oLـfd?@]Љ7ER B+odjRb#xIM0cŘ1"׌hUsʌih@{4r;RBqG*_39ÌiH/;H>RykG*K(=RyH)A*O5RyG*j#?ӎӦG*jgNCXRyHV#(K%=Ry'!TVH!GTpK]xnEqkU1䡘$i惤7cʷT_RF Gm|H9K[O!oݲvRycT@*c#GT#GʎTޭTBk|=N|w{{܎T/| HK ?RyKT^i7o$@(kC#wuTTZ(9CX-m6[߭h$mvF{_[H%}6߶m!5Vf$ޑӆ|5=A*O !F&[*C#>G*Ҙ#GhT#GTa3RycՏT֠HY{Z _e?R^Ry<H}0Ɍz̋Ԛ1i{fgFiƄ49f A*oaΑW1Y*O#3f 3fy[8TH峅DH峥HiևT/RH叔Rl!RyH!?,1ё_Ry#w3#Gq4D*_|[q4CD*<&J-o)1]-`,f 4T>vW/ya$c ZR(퐔~P bac T>ͷT~ 8͚%α r!4vT~LWK*?hi05?T~٧0R1{-"']sKzII<-L/p|\[n渖<8Kt/)T~Y*?h\HڍhN6JmhFH%nfiܖ"w`K)6C*O1RB+BK勯A[*T>R.]\(z7p>:Q̙3iuxf[Nڟ!VXhL̘Egێ_33|O̘~3~͘ X! RyGʻuё'{H<Ñ[yG*O{\VRyH)@*ljT<#xZ[-vZ oH-7RFkBKiTbR|"ʻuґo3!ΌAʌ1@@Ό9'3i*3ÌA*ʌhxӿAյӸ3f 4TP3Ry{G*T#+pKRK*ߜD*z򀨑|Q4B*bɗTR#=Ry79RyI|E*4E*icn;G*o(R6K*̑E*(T <HOKQgg@STRեH孢8RyH K~Kc:Ru!T9#RyJʻŎcRF]_f"htF||C*\<#xC*o\‘%H4>ITŮ/R <;>Ry 4<H)@*Os\4gE*?i3i`) i#FRAgK9A*?wA閥a}冲ә݁IEjiuVJzFJլBw0@ҹOA$sn-F"yi} $0F)g ~~ۧI>,}3iۧ5O_H>=$lJ>oY;&[fݝ7݊bDw@&g"{莸DwI͇DwE 6 DftQ(莄D^DwD&5v݇&45O+P3hpAhp%hpkY[ Vp\W ۊŠFۊZJQH Ea EaÊhEae6\( OȮUK Y[QX;@) ߊŠ؊Bo( +UHVN[:MRF~+ 1ÊS#bEad뤰.YQ5o\5MBAXUs`ŢV+ (ln(TQF(EGQPYQ@YQ*p]) (l(lv7Qm=(v}RsGQPYQHEas Ee!x}+  mMhs).(l+ kdP6wBQxDE\[QxO#Hz(2(EeEUnRnb0 T:Q^^(|AJQ7|>/PV&Vڿ;Bj( _EZQlQ>EQXAsZQ"EaGQ>+ z%+ Q(Q5?GQh( Q(.pߝ:4Bߕ ݣ_:B)HEaǞsy(E!!o( A(dBQUf-Kh+$wBK~;AUJ+J/}TZ {PYF,}n0loEF/'}Tm!4T¶kI< BTHH<鍶>*B-}T [Ep?KQ-̶c] [QaK&}TG!}Ts`:>*VJQV4K z*GV风^?ܧG=Q[/ta} G%XHpOjA=RA "G:P='P{E8jz=H#5}#]MH?P{˧V{W8 j8;=R#&̣L#jcy===AJNY֣t;i~룠=PRP{d@uV{}豤Z#Ӗj\QB=21=ri.=2V{dȃR{>Kj<)J푽wȮ9E`G=j|(noڣD GqM&j#V3ڣR{}iG|fQ[YA GGaZA QWYqUV{ujG (3( Тe u iGu+jڣz?FQGq{V{TV{Vڣڣڣ(jyR{TW=9GQ=*H=\=˨=*j=kQ{T3QP{4 p  p oQ{@LLnh>8DъfڣU/G;@= G=~=0uRzh?=?,p'R{4P{QjziGGQhP{A: GqǨ=.W [-vn[.;49[=٥;:mz҆ DXw ;wk 0\vm8,{j[nmy/O^4v_l?yylr@MB>ßlq~lolG9l߲maMpi}e'Q]jϴHl&o5VSv_B~'!ڞOFl,uL_e*KO3SZM}qp!cUn{Gs}특i;}{s?"P_k2?}?iV|C|@||+1AwE+EwI7u;e=OU7Ìww{= ݭFXoǨ91tkנ\+^vu}ROw3i~y~z~{8ٟ+n/_&?ppN?q5h\دL@_7?sY_?t_2jڋVߺ<޵]|*x?x 32-.|} \mE1_ r:^_;sgC҄Ê_~tck_<7r.{df͗hT+YgNh#v:Y.y-Ӈ\:uVۚAzס{28ɠS{ЋsN g<Nor~'p:qk)S<ߖG%U?^-5:k.4a> */byKd7Ie7/G^e<^y]y~Af7Gfg<~I^g/~-=ݎv';3y(+y$Jv[3_w7; ڼ/T!oW~+y(ZOk_{Wlw#/fl A̴yǖ6;?ȳmKMy~wV>y&Fnmklfn~E<6hIpc~myčUg;nCnHܘwv[wܸǔG2mv$Ϲ|gscjt8?ɓn1̛n+y ü궚Mu[מ ىB^vCa-QÖ(Z(ڭ)RB/Q-UqmZV Mʖ3-Ze Lp1˼5-^vX=Z?m sE4/M_>;|r4x%-/S`/--mmql]V-pUK-pd˜g[4RR-vcmZ~"r,TF2E3)Es\?czHe8w3Gd4KyF. J$6l7Eoƕ@F'HsҜurvQ݈xs$=i:#rωq'0h_G&4x4hh*EB4XvhPy`f N!a6AfDJa$Kehx2}g2]T|Wqh^kw X -Ӓ -Ӓ -heBi8Z&p{L[.vhPSeB 2Z=#Z&21`D-he:s -7hBp/L܊䈽)|H/, 2S T7hqeE Z&dh, ebĆLL[n2!B˄-h\2qS{heb8KTLK2GtWD-BkL,Oez2 y~."\k ? {%w J-'Lzw-7ChCDM-FL>He󁖉K-npLJ26G-(Z&jN]J2Rtz;-6L LhnoMeĀ)L2=2SFCD{&s=TɴȁIJo?CªdrDkA)Td.%5*P*i %#Ld:T2>2dL>d:EtddL(.K(d]Ed J&G*Xr)%V2N##[%%dL*T2Rɤ«L9Cd>eDJ*P&ɃY%GJ&Fdb_JbbLKE%EӭdBvLЭd񡒉3t)@&%SwLHU2YJ&FNYsDjMl+6GnOEɤL(P2 %5d]%Iɔ㷕LQdWɴ;,%SޏJ&n*xL#WL9ߩdR2-ndzբnd1F;#yL[td+%2ȷ=#mkQ7GdDL -#Kɴ~)X``R4dJ*uDɔU%ߤdbL9_ViPv"Γz)jIL(JthBĒS)X*%S_+XBd x+(,%S>V2QZJKɔLJ) V2QJϬd >%SIɔ%V2d)KdU0dLd~J&J[ɤI%S^+Pj%dt)DJV2Q YJ|dJdU2eLYrn%(4~)x LU}R2.d bJB?ZtBJPJ&R2k%:#'BITd J&R2| ģL )d*%G)[ɔ%V2Yh%S>V2EJ)ȔJGT)vL(dbbR2Yh%S_+ވ IT(BTrJ 3d"K((,%SO*V2xh%#R)LU2]Vʕ)V2i%SV2"e(% %LCLAZdLZTv(/%SV2/%S?dL8)Ha+(}RR2eLy}dYTɔߏ鶔L*JѼf+VU2eL ۔dJıLU)S+»V2%J[ɴ})Hq)}CySTJ&OdJodo%R2*P2%2`L(Jt"J& J-%SadB UJ\[ɔL9)ﯕL{L =s JɄbL*JɄbL[>dT4dBTJ&>d:gEiUф)o+(zP2aLQv) L{+P2*%R2'%dLZɴ})/%ST*LٟT2`Lc^äd~JtR2E,*JɔU%~)YdŤdb(%O)r) 'LOJ*MJ(T2L%ٟ[%J&bdbL &LR2*<pc!J&)J*L'%=+}e|j!dL1(Η bR2]T?qUIXJ)SdB9XJ?)dp%_LQdLl%6_NJ&ϥd¡LTtpn%ӫ0IɔyC+rJ&di%S[ɔyNdܰഔL)V2,%R2|m%R2 i%dh+(RJoL(UKx)P.)V2BDdyLydy+xyfRJd_K﷒)L>)dB UJ&dดL(yK%Q+xFtP*%S5dU0dLQiR2eSɴ wV2TdʼLk^zKɔV2.%3+yL뗒R2_JWJ<|*%ʧR2|BtX^J& KɄL̷JTpL(MJ̫Jɴ9BɔR2]ldL{dr>)IɔWJ5}R29_DɔsR2e^J)Ly=b[%YL+(rn%SV2Ly=d|L*2?o%*JlUQћL8OGa1)/%ʨR2yV2ej%R2+T)d^T:NJd:Q2ePtZQJKEJiuAV2k%SV2-dze+J&G(6Ndzk+X*%Jg)J+P2QRJ7dK_)Ti%SV2h%ӦiٺdR2h%S[t)AT뭥db=LQdcV2h%:dBJϬdzUäd~JJi^ϮIɔV2)d?^JR2 U2d\o%<D)g+?)L+J4LC<1d J)|H+PcR2O*%dT4}L;W%})h%y*LG&%d"?UJ|*PNJKt|)1hR2] J(T2=R2?+%+϶=P2tm%LR2Q2d|d׏ R2l%dZ_JCJ&'%SodZo'db~:)[)J&5d|e)m%ӦiK|+J&xIɔLOdw.%ۥdR9JKɴJupu7)*)gL*lT2j%+ﻒ)%|b)PnOJ=R2Fbj%ӡ %SLfU2畒|SJ&ֻKɄL*ZDhL>T2|*\L>ZɄ" %\)6IdJ޳L(n*l$߼&9T2yUDd牒Ky{V2bLٿ[Ʉ%MLU23)폒yt)<.%g+PNd"N%ӕӕJ&խdlT21RDJ&VU2"iio﻽g%ӑJ%V2- C%|*2Zɴ`(dP#d"i haR%'JL'[ɴ`hZc]}L(U2mn%G!Ҕ7BhGă$:&J1U2:&n1cb A>;>:&qtLx91)A`tLgn 1qaFttLKttL,cRӞa-:&011FEǴ":tL<`ct:52XHAǴ沁!:&"a_dLg?+;LWyE&jN6.xyYdϧ'0ηp#o{ɷ07%cp͞0^^d>{ÃKć? (ٻ꽎ajSGTeZ9Br>a9?zPpƍ3 e>9ai͹k0ΉmRS5KcR9My3` * x 'VI =~\QD.7:ֺPi7rF'`esq7dSZlfx{"R >b9RSr Sxs9T'}Цz$ru}Y>l&isqVxg@sT'.,/˩3sS.].[FEu+ sy]w.oӃwBo}&mi܂ WyuzNèE,9sڞ%ԩ>gysjtssUH>g>WJ.SS1x]Wa|^/6+oӥ*oU mU=mrI&6= 6i!ۤZVoP]^I`Qjβp|;Yto9jhxmrNIuަu$ru(FS:>s.:F:j3KuTnֽ>뤮ZjPNuuH:$׳Zmzmz6 Cx&x yPO}y8qTFnͰSҏNwfDRi.  riq*%`Nuvv1 v;avbv ؉%{`0  OYNb; DoG? 馱.ӓ؉lK`6g,ytHC7rvZzA[Nܡ;7;` ē5`'rv N:;Z;vˆ\ 0I]`'`'2NWNۂD6 ؉+4c\`'Bбcݰ57=t,d :-č_N tBVSRNJ: &:Uf?ff܂NFv < :`/ A[Nt~NdN{@'hq)ɎtA'AۀS0\Ht P:ٝ'd0kA7:UPǠ x+ia]i<t2 Ӡ  E: F : F5DSu:mz t#iw tBh0NY(t2$tb:Hi)A%<:tttށkN,N7:=TN`:ТnXGAoi0@' t "d!\ :Q W O*_iЉ t^я(X@$ :t: L:L:20CЉA:-0rtBXJNTĠh t :"QPg`A\otF !:zӠrtb;Ntt|t*@\otFi7\S7 :oЉ@55MN:Q;NT5wA9`7N t"`^ PNPR7/Щ 7_S:@7ߠS~N+ۀN56 :l :}ig[)SN`UN/!ti)RNn:EӠS&tA' tztZg|N tA':!( FNۀN"@ii=t:^:m, :0AKAte*˼ :i JN tھ@ tz^AwA FN:=NE&)gN< tףpGPA~Vp :EҠS6CNY:j) :]/`cNwtQWSy:]N'@'O:  p@C )A :]ON tڿ@[A֝o :j)N7tN& !WNU: t ՠS>rtR֠Kx{y= :!h+?4t*`t۠.$W@'k :rB:e@Q :lt Pn*5贱-ߠSx:$l P@' t XԠOat*!:_t Ӡv:ek)(+ 0 bt >:ei)WN9to)ONt۠ן"6Da^N`SWt٠StB:eaAN+ :J2@':eA'N; :i @'@(+)@Nl tyNw t@|NA,7|N /蔅Pܠ QN蔿7NttvNnmAl7vzt:t XԠS*5/APAmAQ :l : t7t-WRNۀN'f{DԠ`-$@:@"؞@6S>LS~@tBX_S@R6A4t_:_:_:m_S_ ,k)n'@t Ӡ|t@'N')A' :l) tߠ VNX:i)NstA' t ӠS>(()v 52MRNK:.pIi@\t@ :tbz(D))۠S :QR.Q/Љ6&@' ,Pl/i?N}t>fANN?ji>:|ѠwN TNP:BD\N)tb:N)hk)N :m tp Q: t` Љ t@' t ӠSA¹:A' ttt 8ԠS5D!.:D:Q?N`Sv&@*8UAZN@'$x֠:=:Y`ؠS (\@y :tBx endstream endobj 431 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 438 0 obj << /Length 1357 /Filter /FlateDecode >> stream xXoF _!{7rwmWÐAlGe9,HOC,?xq9d*%(b&HMLY. {]|{Ly-0v063?Бb[{SO5x [(=BDDa&_QƟe]A$"jGj 2:"&`$'իܶѢ=c >;\Gx,-M!spntHD2ssQtP=Un' }ٺڧէ M"}HXF V /*ܟkPbjՔ>SٟU*6?n`P2Uh0 Ǫb--A(,(ګf84HλY^kے5,_Asyd]o!ᤷެ}w۬XC\8P!C1X^M* ]]Ym ˹'I]ЀF HB/k=]g<˗ Q27Ж Ǯ`$ F/r4AJA Hy'1 !z%34m2MH団ԣl # h6c1T[vO(OWY*TM|#j/o8OB`1<}e޴]afI4Q^ [5~kوn&XTDq_H` tQyT$*(ݸHW(h\Z ~co\1n射z>zѓL+.k5XV9H3yy˶Ɋ]3̪S$M'[:V{[28wL657,6`퓣1PiE`\ m3쁟Sn}rIP` ?&p6ldWa!f6X4M ~d4nzaB`m܎nx/-ϞΖbtNg3]ov,26q,Lkk7y3M y{>wn:`4r)nSS'ز^qJ+É.IhVsDJ%KHteC~0 kdX8>GCS"7=Gw,Rs@Ytcؓ\~ L!ntb)whM}ڷWf(|m;&M챧'^B xA%69--=g{ܾEw)ȓV5cAw$_讳VMOӷby endstream endobj 409 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-RR-int.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 440 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 441 0 R>> /ExtGState << /GS1 442 0 R /GS257 443 0 R >>/ColorSpace << /sRGB 444 0 R >>>> /Length 24407 /Filter /FlateDecode >> stream xM4IrE. vnH! b50 B4C)-0~#+Vy332?̏=>IO?u]ٿhs}ݏ>G__9O/*=|}l,_<|^ϵ~^^su2_/\79OE}_~A#]_e}r^~~oJכoy_ÛsY_}7\/{7YiZG%+}Q}YPj6_s}.y=y6x^^m^/*2_vן?0`>#}oR m;]-ƍޞ~ha7>Wn~o+9_~{yZ_ehCt#|k'oy L/k"o~sן?{U,_|_??>|~0mW=ǿW/kOk~{9׺{3}$$y 5:WyM[CfF 3}ym/?zJ6mz')'׽CJ2}U)b{GWu2d0{i;bQLS昷Y_9k_6bC_t߆l^n3d{1KqU%޳͙9'{l\t7)>+8œ@\Ɗ_4W95cK'pP=#ѷ0c[qK7v?Mfܫy)󒹒=fߟdK߻_mCümOCWmv]վsumޟ1{;`N2Ye+~oRE[wϘ=5̥ڷ}ORW=ܲU2՞G16us5b=b茶/r0b3o{<"s6F쾚m Y*݃m#ݿty3.#N1۶_._~˶}mMzk2a/ga\ذ}}GV/ƃnv=bc=g"Z^l._ma?Sݰ{o:u7ӽ9{랶a :eþ->8=db1{,kŞa`W4hG?p=RŽe+tvvlǐ'={v ۾d=.{X˳c\﫱&-a)l{m{l)v}sf۽o{N)Ϙ@mOH=G¾+6tbz^etysڞie}IuMTraba-XvZw[lvtn;2S˱ =nێݒkٛxUee;յ1o;wز߷Tߕy1댕?uzj;m[s}a`>LK3vlϲmk\_ ]ۮzmq_{fغR;C]>/z/ezz [Q'la_9ܯ{ ~;WUΞg~yݯg3î`Y/'akzvkzWa_Yrczak>j ;g=|g >'Og=9i^bxa#u_M޿~ޯ*lg5î]4a{?߿){yX''>w@hoCw*6!|x{MWX%Fà/=Hb;'ܦ6lqgîT$6"9.W/oS߫{v`ݽ9>*(߻%mW@׼c8y8R2 ߿dW|ߣ=9H{ EI<:Eq8q=޸GN~s`NܳKW'GRZJ$]ʽ易LJ۾ sJzFJRAmצP>Y[g; vlym'a;GCj\ʨ{|pxf,vϼv\Nv}{^< N wྫྷ>^N w{mvGn{‹| -vgsx w'^Ο]m.w*݊qz]^ý0Kq}fp?c;mw3aTr^Ŷqe]{q=ܶÅ>("52a{9({}^[ڶ 5u{|}vo}M&hS"N}w'Ƿ_Ooڵwt{|ʷ7⎰w2/=>y=3LZ_"ח>D\7]S`Τr&|7XcÎU^l5^*"O5cH̷{߉%M?{g '~vGpޘbbYby__[mVHGkz8J o;wcyߩx|vۋWK)Bi{ DzGak~k97ߗ3a&o/5m^E~X]̧j,V:kHv8u&Zon{)pcׯs ֎aԾ~{흡䝢^W'G8J/8KϛJSw8DheG|rm;)U]{\uQ:!읬vg%aNW'vqcwv)3gy[~s͇h7ͷo^k>Fcװ>k>Q{zඕNzAV'7Ozԗ_^",Zﺟ'IzVmk=t%U+N:}k?^O/ϲO72~nI~W]Yk|퇊2ܢO#zﷷ~qگ#}wk'?Om?!77"t?Ҏ?!qe!CΓ%yğj/{5Ms <`1l]u~G_m gomOf?#a3_|_/oko8^x8F[ώGn{qζN>x#x ҟos9n8ƉF9NF'~E%xc8~x w8^_9螯o7O7:#>h^9 ^xt7~78|xxFv3+Fs>c _w|8@r|X/ۑo KW>f]ۚOYsA%ܘfo/W>DmzBObln4>a3VS3ߧOzI>|ziMħ>|z'>vN̽Z}vyK;m+Ƨ}V/do؊i#T}V'"y|߲m|y;#8'kۺyk"笘/ﳦu֪:q}rʶ}klekp| {缝#ns's1l5;rzKSNpy]9_r޳)1'yO*'rVs߇휓Oh9)m:%r",sFiqI}}%cGD(;a^j}0'Bه9-)IrX}'"cO#:Ąf'$mؽlɜr|cks"4Y)Ir\6Itck"tzpۑiщ`sYJ9%k>f~>ly;g'l7]o|L ۟~s~Nzw|ͺ=+lwz2xؗOqYʑi˞xGۿd|Oڏ4e<_??/=qۯz[4g=9Z/z֛Q|z*D AwMANm~} p~ˏ}C|ݗ8C~8qy) MqG#%K+(H(AD<eK1/73x 紉Fxv<( ԯ'^>#y^Wyѳ8^4"n:I$$qF3ϏsF8I"?3sF?g$9{H*g>#霡3_HsFCsc:!2-#_2Oh"o [僔 U"vsgDQEKB樂I%;TJrEU#s>J%{ 9.U4]4w,$;˜ȹ{f3*{n=1Jc]}Lu<1IQNk}ʞhSL "S'>gAi*1}aZj%ƐEY>90|y|DL!B>ct=)#mǞ\&>|iȖzrie'.K}R|s$>yaM~rE̢D![CL}\y:&99vb^i9u[ܛY=|idت5g 8ÐqahMU3bn]9٤˙35)!Bz;g1lxEwB߿E>)[o=cO0#X{3V>lJPL/Iz>J3|V.ao]ΰOt9{1)ݐJs8H i]}r$:vq-˵/U۾lz' M_Had{>ޛftP%S׶[ ;|vؒkk}nYI ;|98 鲨9.|J.=}?#GK)q;jە+ׯd]N JUlƫ=ƫ)'38p9䤜ua؜wN:``vW{mb"趋b=}Ͼyo.c|H&){: }9Яe Fl0~nَ< LKt}{aض/'xd9ϋKc+ަY8Sa03bi~ۊwϷ霢:/ΙΙ㑞|Ι^3r< : )Ɖ봈Bz H\Gxnx0t:SR!Fo3ǣPx83†.n}sfx'jw뢈 $Q9\Uʹ?g$>3 9DH* 4%>#ad|? >#!9#pF8U>fpff~99vgp>hthP>)Qg Q-+_T{|qbϙ`O=V{Vum{Z!󞗝cO>{jy;ə={m?1kN2XpbQ|.zbS2,|&(>'F>b|u/>_1JwbgzbL(:1cXwqb'Fg"Fq^((ރN҈9qb8FzQL:1k5OM<(gWr?ƋR- ٺ|q-KZ"AYXt91_-x(:?$*s4ՖN-?ErukZػ{@SkZ[Zw-*9195?No{F頔h;Y_^ 9Ρșa2P-ua]֓6tok>E̤}ܸ_E%qZT*8aZTdJ/E:w(!vݕZTbTx]{9΄j)5_P npr/>{c/9i{)gKX)л'GX$xrzڬxMCv8)2vB.N1q>oq\,#8^~56..LɆJ{a_m\evَZZT܂V?FZ R|VT#7Qd6S('%`3*s$te][wV?k'CRBs"-i׿`9$Zfm ~>)kE'AY[߈(vQht/Y6aa߼Wٹ{z^;:mkӎ(yo‰67`Rr\0`:]!fⷬ|W܋|)^JٵJDwm(ĚR̍y=71nrݶs_FP燸ת8I eKNָx(NN`vc|;.X D%N|Ʌܳ?Nr'k'&N6*p bqһ8eS Au :hAI3 E_Ot(i?z(YAXHĵAHfIEH|t%Ȥ` ` U6E rcr0ij YB›!~p} [%W-Ivf Q + 艃`%1NIz$HO4+IODIx$Y!9I6<ġ$B'@9FNR#W)4]J( NRE+F%|o疝qު~ճU*]e{yo8Qk""G+"J\[si6y-/˖]soj[L}bݦ Ͼc0-.,,IsQwqt[3a 5.;YeF8s8+5/7=23M.1/[m`v$`V`.o?g0;^20ۓ60;maaav%f#y291{ 3W1[OiṪɘ]bbc?lcrWL{̎̂ )E#2YA 52;62tl,ٗ9kԟ]c&Ye9LhQ$ @.\h7N2QrHsvJ8d Sbdp q q ~q|pjb{>{MـMvŦc;u; Gn\m@ہ7f-ypkw^n]ϸa&3^g߷^֥ux3^g:u_ոs_p=pex P;os!x˒-^_.^9>^>>) _RwPClW=B~ߧuAD~GQ|GGI߮wſQqGIGIRG>Q`IGry~GqzQ>|棄N5^vVo;x<(wQ.>J[GGi4Ɨ(m[>J噯Gi֩Ginzhoz>vyW> K7ַûzjo;(M>w6߻߻kq ^Q#9_/ {w-wƿ߶ƿwc!?Á܍7g>; gn0w';T.wO]>wߗ;/[]ӗ׸9n;K~2wg: .u0ӷP[BUv]RƿwW wf.PB 麅pE8@ahwfAjws0݁]/~$y}.{A03}c}^^ (4t"aX4R$ĠRcj:1ܣ鍱EJ~@rf3xOKwӐ{{->yO![*|]i;;ˊ;}]i;ޮnZ*p B V}Q}vG*ݕܙJ2;p*%PRSܟݭ䎕^|z;W+ece,F{,w3;[ǏpiO%4Aɝ.nH]nPxWgwT/ɝ/qc*ġ;\%DqI5wXXoX)YI" 4$Kx4nC5dU ~z3m8̒~ai(86cN7A^&}7Nw%gI7ݧPKܫp-pHD"ךgkvYW$z`3qHD }9}twN}ނ;q ܮ tt3ZVL>` bThd4hD7$x_');ԟ2Ńg>@$Lހ'\(wKznGB}Y(˧Sj(+:"dE-wdRVe(D߽?{ww8[U @ '*| 4_ 43}jZ>cXN%eV<1&t&2MA mݾIIk(~B]hM:BM:Mzޏ>?s2y޻ ?a#@2 ZEh^]6bIȔ cILh~P,e2Z<AhĶ5_Цo\Ǩ&iiW|pʞ{׃n5Eϴwz߽;=w#O'wPi>$;w4' zP&C/P*oQ[|-݃s~ؖ/ƿ{>wW1[]{$\ /4w>i'cMN{(jS'r;jnoz%w_ /_=2ϧd"<4ph{=· Η~]|p'z|ͼ+3 78 _s8N3:1¿'ڽ|Vq/B{T|H ;i{Gb쉕*g6^RZ|>-ּL'f Ny||?1iy}wp)ވwLz'0iXA7GGQp21wX?:fO1b1*戜X(6gxPb9޶J{,pe"$ c&[P,Đ߻QRo[p{i{. 8υica;(7c..CW-!g;͔J Ը,_8 N VnW/7910wt wKqɒp 4 >}ƿ[bu9UZ-_w_~7*Yoͥ=h_|?><N7 .F\Bh!hT•% Q B-\72Z&8mߗϸBA# @Y iv[2@Y?-OO.tN;gm( >ih,Ѕbigigm|Fڤ5ڤАBPAڤI{|4䱅6y#qsFr|F9#?g$ơ3gv{t7g$iqF}FBN3' 5=Ӟg7r&j{#?bm82hy|ɘOto 7ƿ_O&5|(u=sr|rd598ΙPExD!ιEm\drzi92gⵧW==/m|ƃ9wbߙ߫Tm^{f{'3=n<'ƿ_b'plpnH3:w;1'Be{ ¹yH7d\|jK}|ZJgϴuO{ϝA1A&'6O ˩?1>=rNh4202-Y&p'̃7~wWL< ﴈniaI߉#MF +M3=-;j‡1.>pYƭǚhc\kT ۣ<9p)Mgl .्M>7{pђWg@+w\n N7nrOp>0htZ19LU{$W']ԉ>UumT_>'jT_ J/C8gSL ZT jeP PtdME&xjQx ¡ؘ 6\P Lu!>\*I(N\]F jzqub\!jFr~uPr\x\j` Ww.sC uJPCNSE:r5뢒\zSK UET˺\~[ \oYg(O_,P܏Nu[nr?~]cC9\yσx2c<ݶǗ,3,'x<3|U=_Oұh3e:@+z>A;Aj=az2By֣0Zw!-X/PO)Hk|('|&z^;OPW$w(\+8uߝ=wϼn;hSޯ w3/pƿ3^_a?'G¿kΙww{=ߕsxI`?|i;)9WߕC|:s? n;g]rH߉2;8|I{=ֈ?o4ZsF:sFiy35qF䴫 9iH_H9sF2|tz=H&qFB<9*x32=3߯ pj}nr3?gL;N/͝OJ!~^W>u~}w Z`'j3X]rZE|%A™Iƃ7]dLM`Msl;mp_wgrjIu9niƞXIx3 >TW칥jO.0ڳ -b

    |^/}r/؎ x} _xQ NDȌryX.??A,$J#YЂz:+rej|Y\ \.87.uɝeɞyB 3Ӣd<iO}|'FRc<NL +Q+X+dY!W ;xsL9;1ɲ  /QCf;9oCVNn2/mv!]dߔ!{Zxb;|dݦ;GÂDܕRZGVo|ÿZCwNd_OIw΢a/r>>춗Q]z%d]2Avj s1_zljΑ  ܢ"cY}2/{>vN˟/rm4ZhyH¿O~q\+y:97:K߷Vӄ*rz"bq!oTV2{Lraodq=t\{}n!Ç>M"'{COnQ >yh`|"gd|܏pô?\ MOM7L?9`/&_HQKC Mxfwgn|TH-MO56I~ǝ(hL&;s}Z/qdY!z\[zt뵞-Zzmzqy7^z;{`=I^Od~0y/&~'2Tդe3 ޵rX~ vLǃn!|}~?GH$xڧ@ r5$ <$hHi"?Mz?$xͧo!~Hi {<@'g <-C!CO< } I;$xH3L?g&[AvR=(u<}Bx&R-?l8I HR3 u>jGWl[g$ 3IH ~rcޮZC?g|&@̯vhT_~4:@g CEp1o z@|EIS&G$?_~Տaן~_ݏ %KaŇ[S +ꗲg b/|7\t>eYfõuw74;51@yW|j"^Ƽb.iz5fWܘW|xcN_ٍ)~y3&24E,vie`q!uK4,Vux<ôcf)Z>XЛÈ \@oq+x݂ \{/p.+oo \Ż}*\]@.grb=38s?ѩ͎qznEs/x<.9׃./xx?8So\ߍS.{7pãsp3.m.Z{ .^7b-R)/7e9&jsDϑcĤ>?1()W?4 mF ;vT;.~Qo\_v?8x. OQ|79'| ?˵!qÛHqa!>5A_q'| |c\>0k\o\w<տ=F/r9GH'/վ]l/L5Ő# J\40qr!R3fMfŒ vbf̘g̀r!XztAof ݧB *PP! B@0PY!@Ct:kT1AS3\3y]31 gLgLSO͘zffLS5cњ13BQ%Cc-,b{U3xTƃg!zʌҌgT+ 1J=D53D,L4T˘xT3J "&AπTi`RM\Ϡ"c/&:U惉OTb@wb!(Up "UZĪSjVī| L*Uh`bVaG2 Įb1DrZ"~ʄ`&bX!be@qCHVC,+41,@exVR ;ie<$zI&"[a32[oDM31DB f&A'XWhGd]X]tx Єc7q/l}[hY[l]z}=+>ڎ@jvhCTf Q1`Ɯ71vfLa|=~x&Wƛ~g5͖6۰vm92@Oϡnx(vj.6㰶y9i |+k׋kжK;_\zjY{<"i3ll>.dȇgڂ\Mxs]]KDBچڇZ̘3 36ل%yS"LUn8}Vna+D, j3CL䂸{՘&5&|Xg8|wq Qq5#j,P Du Bn=D5 -WsRYPFx=Zt5iA j.kT7ZvYKUZܵjREZu5mA jy gϟ,Ds9F*ʢIJrht %MZJjJJ{>hS`+}jN(_$a=DJn%rNPB5*Rʴ !ۡKXR+(hcҋ#(bG)+KIwU|hejl.`ĒJJxoT*Q zPV cV*4BDޟP*NQ2N V:N+~y]1i3쁼{4۞s(1ޱΌ1c*RB"ZajShx}kʢvrWgLgLY4c}1eoЌ) fLAS~3igLy͠,P:,,v~k'=Pf R/fL9ZI͘rffLi_4c <Ϙњ1̘%341Q4cshט1d1ŧV8sj1eq=UDO"3dT1A;\C[\CA{;ƾ^kkv 6W3>WlFjj7zf׆z /j$=:ЮK[^ǣ5ʩhZNuR)m{Wa{=Ɵ>i!Qim~*F ~} hF@Kڄ.4vD6DjZsmDK\_G!mk+R{>ɭwFKn%j]Tqϵ!];̀>"' kSysԮ4SڗFkck]0 {z}vU xi5cݵn-ߺOkw9N͇Džr>y$;`z$U$(If_Ž$~XeI|t_#8K߫"mKK_ +{E_"yޒ2k$h(Ÿ~%yvOn'/X墅]ݓNRނ߼~y=i|z%[zKD8~@_0C|fJ4,nOL <KZ@Wߌߌ-f$fZ Z]7;ل7[7=l8_{fLfJ@,fa[[ { |9D) t5lWov2o@%ߎKhhjC!fxIw:1^D!1~K M,-!igLw#hIISfL;w͘yfL͘FHϘFѐg z1"!/̘i4i&1'@(aAŒi1cE?1̘ͅ hs.ЌiE/HT#7HiB$0#gECO In!'H{wIE$ɜ#dI%GDIdGOx|IG#oH-wpv$ƖxH :xWW%bɵ%HuWWG#E$I|5LI|(ҒymIY‹$(#hfI$/H Òݒr$pv$KėAN v$Y</9DZZ[rڭI[B{- |KXho% % %w$TGIY$>2.Z,O7JĻHH7xGoyʑij>"=HGzI%/$H -#FhX %4COg$(Œx $4 peV ,# inI|G2oI&]D(R@oő$TIĻKr${dI=#? 2Moޑ H}s$/wFu2~7P`*$}$ = e|a4$~> = ߡ`|O37,t3n0vZI<%_MVFq_oo͖[+G[d]_" H%q-𭕆K[[{LU_r|K[iN`oloe|Z[;>2HKĆ3RaZ[//4_z$RRNy\{I|,,{$$ь Q}͘^j4IxƴJ͘>"$ 3Qv$n7 _fL򯂯gƜ@gƸϙ1ӥ%kXr{d1|E3tJ, lE#Y6cq̘ )H=cx^̘BgLArC;fLh3RS].̘JZ|2c(b43s3!ufLxf ;1 $9#$-x$UHӮ'Y"mW$Ԧmv=.|E?^K3>>H-)$#WI ܒxJ#F"#gCO W*u}/%>I+xjK/I|%gE$Y_'q$I|$NWK+xrKuqH+--?%u"ɟ-'C6Sn{WuI+T,$hćϓ$DX6I|%hbI|%է/IޒxG,Dݒx!DOxJ< I##_H-_$~ك@<^bI<ăGNJ$3$ BOE;K9#q$~!Q$qȒKJ,$3J%ƒz,{=?$I| I|u<$a#Ve=!ۅdf]O_~u@ endstream endobj 446 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 450 0 obj << /Length 664 /Filter /FlateDecode >> stream xڕTKS0W7{zZ2:4-L9Qi$#`єId i%}%Voɗir1Q QK).Xs*.9.S3yz{1a *c0TR"Tc8iխ֝d9gEڀe9H wXԟ3)%$ hZeL7G.m3JRjy*o?:M^ }$D&yz&hw` Q(ROaYP:KN$MC~w8DAcl|`;~g^ɉ`k*΄H+P:JjDO$YZPU Yk,w.ﮠ쬮I(0:Kpٛ M8m:w0uK vv c{6l{篭rOBם[(Jm۫\6A>V R_s ۪hķcaq3;cH_[!?Z#t> }ؓѓ~8hN>տMtn endstream endobj 434 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-sep-mort.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 452 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 453 0 R>> /ExtGState << /GS1 454 0 R /GS257 455 0 R >>/ColorSpace << /sRGB 456 0 R >>>> /Length 22253 /Filter /FlateDecode >> stream xM5Y9_qcؔJ)! JE]$Ŀo7[~nPB=|}lYw_OW/q]_~7?~~*=\WGWF|5Z\?ڏ޿K|^Q?~N?o/Y?/Y}VG}hc}O_w?KϿ[JǗ9~\?o{/?o{/}|y/%cUIjF+cgzn{֏[{?]?/{kGyoz7}1J.l-![JZ~/Nj-}e=q.uۿ۽ۿo7|{V΍ovߊ?}ǯg~ǿ?}}'~tU{>(I?bEſ><5矿׿z~~/SSj1O\BUm{|evQ~i\ ˓Һf{򣯯(RQXf##=3FGf<|BcJZ>'S=<%߾BzTKI)og⓷ڏT*qWHVKGZqMmxcHHz#gEҝ|+Jɑ׼:Og}FjGzgiVIk|TsySzWJH5z=kPCj[ҸsS".Iśk>CG'|o3O\5.MIc.83}~) +v#w?)Y}%~ڐ4[Hn'C5-ճkJң;yJZ+w\=tg4󓹂{\ڃ=DK)sXՔbx<敛pkUrncn8ѱwr-7N;,)=.)5MckyWm[\yW10q̻k-[•λBKx[|x,qn(ԥZ8:Ź]I,";#qӲ3Dbl&ęsr+7Q 1vwY^#>6i_Kzئjj)qjˍ:BH\yj7j5GJ'm3UrRG8>,c1LwXGGݜ'6|lSX|ͯ`7Gx7gzīX|^Gn1iGK4#G̻if{|Vd]8gz{:4y L)#xD,*G^?<P,BhcJ瑪 m5ƫB.UTFyXVUR5W #%TE:4~Ula4pWtuwׇzid|ڎ1MK?22L,V٬??z!(?z!k?ʤ=N]^Tu|LKvմZRgp[QUpb"c%zJ1K&D7P(I)3ʍ0b BTlX+˨. 3-&,o_dyPfg ⴘh+zM1jϖ@Ľ!TPy;оk;z o~B؄͢wBP<)iJ<2]T1+4"aNnipƇ9zgV`Ҝ1w{CY\ʘӰ2ܖ1ms^oj܁⭈_܉ au'{!wKӊ+~5*o2}͐MGl4]io'n^N_Ԓ~|O{{>r>\NqG=8#6]H<4w9Uz,k +srMx_s9}/ê܏#_c?=jG\vc?.ٯ~[+Q?0#Cjf:B= !W[EtS 3CX=}%>a"|"=7Qlhj=SLڻȎ0ܞa/He{Uk~㛢?=t7Gnxq;Q?J_g؟<+C7jKKSʟu?zV5#+?Ig_|vOv]7}?_َ?i?#K؟~ݏ~[?7Gɟ<O^2|a,ob}x5+rU|7:#;W/Ӻ/'s?zȟ~QQW|@~w>w!EW>77WhY9(WCb?S|I|J#FGyUmOy z|X]_>m6ӧUry*8yܤe߳~;ħt>gLp;LpLLq;%截zcS-̦)-Cǎgm=d3uOrpq$)M-@C>O|Ɛ>*jϣ3|>MZ|ޚP|<9ob{#{)f)L,O_S }OK,~˂Mg<זA]?k!| R1^ p#O=c#CݖCﭴ%@W~͜MYKM}c{akʙH=(xK\Qꇼ<#y6PUL"}72چXo~u~C (4!OScc8f閇bwt߷k,ud0SyqZ^>F<8+K1 nC߷!;5px;ev%;~ȣb$Df:KG0S8B.PO!#Ƌm9,G ؝3r)69iY?E1'e_rۈ+kRMR~R~C<|7Ըޗ# 3 w>}Uj~i}ٺfM92헐~ -dӌw\w?VRRy-}f)̾g+ϻ&ZY<{C}>HC_2^}IpsG!ӳ&Wl.*ԇvW_[&/}_}riCM3b8|!_k/͔){M77j=e*۫dEJZpׇLy4k6lqȭ|kA^{Ƕ{cl܍u@ɟ'6f wY&mi;fğIomË65 ken r5q@5}Mc~>a#}\?'l/6d |7z ˟de>">sO,㍵\q<,/3V~\#Y>oH&k$sd5j$ND ɴ~F 5A5ƗY#Ը\#qHn+j$_j$k$O/#-Y#Y{W"x5;yf9r',07,rPG,0W,0 g<0w<ʇ,jΗȧ<5[ؿc|59L={jBf|QKio*ߔLQQHU"]C6E1͹]7&uc Y dv|$ۼhX*1mvLTAlq&w|ll6uc/>eo|(1ʞ8Qa(!(eOt(u&lblSl|\(wxQ[Q6>cKl궎QٔU eb}e}QFʇVG9b}+FƱ-Grlc}|v(!bO9t}(!|c~+u{?+u+gו:S^SCNr<nݽCYns}eRޖ| o )|~ @Asgr/Uy^@|G't]-*tpggDtя,o(D-fr!gڧS>1%jg[>ֲOÇmlWv3>3]%gY:?,|"Θ=$bLsShWGܐwS̠ +)op+FC!ϒr\G 9mt{1Q+,$^tkLNe VRaܙo6v<-ɍM!V5^Ѭ[-\c9c6.?ru-ΏγZ?m0C,$7 1 *܎O}6BMǠ,r@Nx6xŘkpd CH8TŰƞ \7Pr`^ g1n8G=V>?co^GXQk#~0e|(ƗaF}b#&;DX%[JaOτ 2̓Rׇ?EDoE*qzE<C^ ٟT#{\ nbʟ gnH%hqjĸʹȟTrwCp實r+}ICzԢ_z#(W~~|]sx!SG2i9S݊YHB晴4jH[3 9Xj$^k$F~S#^j$ևF2U#D5I=j$^#STHs0HeFO5ڨFfFRH*9[H*5hDTwR#75 H*k$uPU5JM5;_RG8RSK>'kqsZ'?|O)^+_ԉלOM_DD[M=gd.r\ؔ):6g$8Yi}cznfC65llnMnU{wގo3Tb 9uccwr~>M#s>QgjbSNL$+!C'‡ Ȳ|u5|>cxQT^zcfVbfb՞G_Q:>cn,41 g屑>bވ9tj(9-b~b(`QxciVcCm=P M>ʒC!D-@5ez6ϣ':dS,˱29|G}`pyk?jytQb谻:vR 7΍9s!"&N#{8LUY;UR:i"*8Æj#>~OPqʹ>Ԯ=yLYOcޯy} .y}XIX^zWyyЂ }ܖc1Wrwʁ}6o?@!AXμP?lx޴ِ̦f`*6b,Z7)VcK11&ȌI.)MI1&<y+C~T/cb9MNiF뵆c>>OohZKZqb('^M/1sqjJ懾Wr J3,W߅Ϙ0~믾lOEpC7Xcp{dߤ-׫ӭZ=7L["ܶlm8g-{n>=/:^)O,V_ٻpkm,D2fôvp#{ny >-a" #F.'˔sԡGR ׇ?oEjP_X氛=\dOEOU`_Ij}c\nnwu65oKrqp._,j.W jܯU?;^YƵ,-,rqhK$SeIZϚ4xoxpo5LQxr6G434Ŀq<{Ww!%/cRcQ<=a >qhѨq*0QCT>aP#th~BJ>c|GI//S`M%5 kQ>gSB'XtS#Frs'(ߴQ+_iR3)ү>K?#12$bdHKޜj5GXuV b;ea &zTyvc(ϖ`Ň ҀCIm9(2L@lEEfeo[NmO޷%R8('HiE'l5]Hb[U:Q)Md-f,ڼ{Iol|?Ur'?V ˛\GV܁D,\2Q]S+2e!e>N .CőZ˰jVsQ/.˸ .i#pW1:$Ee6n46>).e.E.*3lYn"2I`$S?1[.4rC{dV"$[暾fyl.+P`\!lL쥙{\tܡkHԢḳmCǞYziM~[|T%IləOrCT&d 'fX|Ծܛ-:VQDm؟D3iWlG>0[D FAΠmW|lr|RAqʕW|}jC%k6)o}7wj;~ sgΕ3D_9.f|C-V& ؇97؆E5 [&,z,s=153&Y†O\ {x SʷMxaÞ\9O憛_$wk}:bCh"3Lgp*/z_<E4bn a޸=q]\[Lf.. f3\sUSI.H\r 'Kx]pɘal)R9 )-d.7&zhUDO[\ :saCT垎`p^T. SE2 TjsS/P:܊&H:I\%8L^Y\'ŅRܧJpeK}qTB:Ku}\ s0WL\2ᚩ|J߈OL5'.ubMNL]Љ\>1 'ƉˉqbH7WPl#}^\BjPq~Um2jQ+~_B:\I`Rjɘkc.f\M .^s9fGpC(LJpE5%L T3\T .$sUeָ<-jKH3l#q+W).WepE}=\cg<~p5淘ˬfs5Ø+n3q=jZ\l .s2s5γ\p1!k%\[\_>=iקi^vW3 }`ms}G>~ >>>rEߝܺuFOܣp}Շj&әJ>מ{O;;ϰs>N{/Q}~s>P ώTM_X;<sۇ1Z` Gۍ;^Q( t:vFu&Fٰl#<81 =^v"6sLYC3+o atg–k웕NVsVn3`tEba%"]|}e󇽴nkv 2*pbfaGLP>1?a_ՉNkqb&>1|3{BJN̬ܟN̬܏N<'^'f30#L#*81|33;:1]*dWgt돬wg}v?sҝ;wO#̟Nhѹ?hwO@ 0]ч9`kfN9u3Lأ\0UtBQ0AYaN~O }33s=vjO-_3Y9b¼bf J3)T0W ӕ-f0__1cL̜1a1ւ)LX fZ30a-̄Ä.ń (]1a-w!„`*3ւLXLX e&e} :L%bZ.n1a-#`Z ]LXk`"ItHÄ*(muJGW΄<.evUWŭ.HKV9 tv|,uô@9%Wʋغe|.s .t/e2$P2_t=|.uWU.st4.EW]02_uu/G8t/G8t<.5PaOw2.sC~>80f2Fr(~NLe>r‚T0TVOL7Z<*x1pW "ueB#•uчb.-:o:<_py]rpWd_AM9\c)p>R)'LPJP)/zgA}F>0!Jߑ11í>b}PZO󹏪D}a4 }+*p߸ϋ>d 1 ]#c~ }fŘg  \yc>`rW}pOcF]|^}v4Fx(4}|c淦Oz^,}.QV܇XGSDcX?IV,(1YGEf'}Mg5/ }0}~ϴ]`]oj#>VuP+9M`yy ('/CG=O c7FM>/ Ky}/'^߻NN ln{N591|'f|$wǸY'fk=1퓹ω0Ġ191fottws}b.QNL+'191tqb1sbusk0N Js'usb*L#>1hN ]G'lΠv]]F2 ‚fcU<-Qǃ.V']F-OPF5Z,8jz-TDu= B=y~A = =su N+%H..AKp%9P-{t .OģK]t ."%ܙN lt %NWF 7vt E#?,^%djA"s]@w n%a&r]].mx ]UN7֕%\sgj]1K]3]z]pFFW\5㮺Zu O{FW^5]{ 设S߹/x 3ρY_֯φTkѫF댯ΆiA]ͧ& z cbMDo9# z3 TDoQy6ZD@]4}:{m  N>?όs1[uЀ_4ш9;3 tg̙gg,d3sƕ3s悳3g3NkϜ Ь̜i^Of8 pftc>fsv{ 3a9>g̙3#f073p3sf3sƜ`",A4bm:3mL~?6QytmlE7Mg悱MWgFMjc.`73_e!5H#5^h? 5‚8B#5ZBj 2x&myzf'Rܟ\/ R͗y_Fj4 >j#56H!5:|Fj ~f!5:Fjt 5+1 5z|k Rw7|BjRG#5Ϲ3CH "#5:b#5:Fj>gs> 96z s>g>gs>g[3/ >?H9Ç3>g+s^|Λyw!5"^A#~yO9<ssy|XhG >qȍ-$@j$KH 9ΧXR9<<@yh>y$t> |gOW|γ~M7[M4_|$isY_s!>iIsH 9%>i7|ΔsroLҒ|,Q]ĩuG"^H3?'L EH{iٯL$lX r2 9^+Tn!^>BuruIFy?i> yu!_A"v/6|r3zau;^%͐rz;m^S1'r<=,WaK^^T 9`d뵉/3BN>YS6eC|CMLɇ]P9گui&Xۥn'3ߌ-!2|H| ­nߐ~y#dGW壽nѵ!_] B<3#̘!{s4 cx[ȵ1gwF$}rޘШgDX{m>o\؈}^#L~y^y?3 " !_$?MȺ_{uW&~9Y^}3я9#h iZ6}cF̫3^~=a/أ j7 Ȟ<ٻ]g {?&^=.ma߶o2YEk[ ~ycsCֆWg im6E4oNGNggc>3CO/Æ?=9=饳>?^,<N/1AN+;^ xetgxgYxhAD}xj;L(oN'yvl}Lb3CDAo|YJsޜ趷;B>:_ҙ|Jgb󹘩ao_e>Hx:<_X3|2]ԛɇ^QW>1ow^q'?|]>;kown|翹|1Õqgr9:3gxw1NXf0=ϭ'|/3<W9_\ч<3=?=_pFfϮ7w{osJl$+yW|~e?;ngf-<S_Xo޻PO}A,3wMBrzU/9R\O)tR/Q9!Ϯ:C])FS*׋|&ԣW\?]1XRv$\o* lfڰ}h v"W1v#fl~4;XO`_Q\d6&7?P;;7vo_6"65*z, ˜y:e~lv0<΄]xgvwO'xBPx7GAn וwɼO7S)ofoy2|ysSg z6if<**v?v\ƻ9o5u>V1n;g>\\s>|W>^z; _#>` |f9|p'//~B[^_ TEDSPlKߤ~J-οӯE~.*oVhby y p-2Aj3yQy0IPaĵy#<2^yעcbo hIG'L=#L1L6gτD:4o2y$J.Z?=b2\GC*=/g [`<)k< {$ T>mdp-Ø֨9֘'<̹шɇ {>ew4?*Rs^wFb 5Na[kWLqUK!_isaF 0>bCz0^xƝgϴ8uE{sGe;<&VYRgS} eP{ @v/W_cPZ=#wtSz `?hw31|4vzH9Wd<߯Hy<2Ńf(K4sKY ?myF$sm餤(%2CnӀLQQLOLM4(,K(iسh1A̘6 y$Hi.`!QtLC1D1hc-ڏ&Qb s'*ƫ 4i)j/tuhlgQA9㤿ۧP{63y;Jg~DGgIй ?=-ݨz[s,+to7JP7~M8,AJz9"Dۥ?DNqVYQ$t#{]zs\2ҩ1t1@pvKJL]&$`ܸ0ɓl d;CF^6j8m!5͛m``MM{9 -&ᓝXȴ0[!ʥgmɈ=ya-8;r&RAr8&޼ܑ ;+ӹ,21C7EAةH'ivfs$5!5ow{P:vs|s &v v5PNnNN+[A3^Gvs{b'x.rC|/c횯 Q: ֯N8+|D/a;bԖ2Y71@*'VJ,-hP - "{ޡ=rJ#m'A>"T@jᢛ &H{net vS52ׄ5Ɔ7Ik(wM]򩞿;h܋h:0 vϴGR$mN{8"&Psuit8iH{:Ő`eoFJס^R"-eUVֺS g$Kh3 A  Y F6hHZZ҆ҐV#=iIH[M4=i"-|,I6KҪ{HSҲe.ҶtZ > uh 4(iBd CD$&CIɰC iuȞGG=do]&:iJZexC)+_گiT*kTR 4N 1344HX 1 ^Mi64IA$i{)K] itʰSSr c=]6spjL(٨mΘP:Sٯ* Fd Qfȡixh$hXAiASdMieY ٵ:4H ,)R椬K/eR l̈'"Pvn atYفS6 w/-vYet yh| #yAS{h74H 4H<4H' 4BMa c؂k`EX"l>Ult`4۸F Ai 4( AK Lh(C2A =4 fa3n= cr;f#& ؐi I/Fj5,J+C ;eH0Tgl zFi3t$y`3  i|i 52DvU`C4-WFPR`gaJM3ܰ Ű1A $T  1$S L4H ɅCm4HXaׯ`&>ްydoګۇX{.6:s[ʇfinLA2eA  h&#LD4H@Y2 v4Hai a m#WN 46Tm+gZ*4Dn{i r[ ^hiN[ m7@m4H  6 e$nA$h5A:Lh2 m wHBImUij$۴ܖiۂ.ڀi-CӤ3me-mg hLzh 94HBաA:mzA:m|A:m~A:mAڦm -폁DJ`} h淶C\9m m30Jm+=2 f Ҡ4HOh$AD4H ,eBimԴL)mh[=z(i픶NiO$4HY 9<4HCk #A 2 h;fmɴӶL!m?O[t}ۤڒM;5- s`4H܄iȟ?4H6o Ar A i VN[ŀ';q;z9mg 'hn۟?n6z`> /hmAV eY mgh&@4_.@-C>2m 6wO.X!CAQD;`iZ5m2Z5 s0 Ғ=4Hw$h|ݸ:_AڣEhvH4H,hvI4H4Hm m  Ck"$P mA mA˴4ARm;rڗ/z mUe32~m|+6WvG7РBs9 m:˥\Drڞ \ ϵa-Pmh-iJ1miۜ-6\Ac QO<ũ endstream endobj 458 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 435 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-sep-HR.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 459 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 460 0 R>> /ExtGState << /GS1 461 0 R /GS257 462 0 R >>/ColorSpace << /sRGB 463 0 R >>>> /Length 13472 /Filter /FlateDecode >> stream x}KϵIrԾY,x]%n2ccAOEFD=7aZ,fyKUV^"3_~?:_/H_)! C_i~Z*UocJuOi.+~|N\yM+(>?}?IßrV8{SX~~~Oq\Zyq5FK|>G?kK|}ǹ?OaX1xns;6ׯҕذ6:}~V*yaW0NG0oo?g~/owu9g_+ן/??'o>ouRپǿ>my^;צ--kQys~Wrax|F+)EI8bjUS9^gučF(ؿʈ,Gl_9.5B Z|:y4(TYSpǛ8G AL!fYn=!6(:>p };Gmê@8J!j9[1ŗ.&!rM!S|%ء9ǚb":ĉ bl1yׯ qUz5S\x WnG 5;"4Fghs|Bc[1{mIϼCc89PG9Ղ kM)ry:|Q) d#elX,qsTGk\bZ9-([>ivɳx ۓkpkP>k˂&C0H r|y?W rB񚔏ʥ<.G;B#G>Gv e>rys^ syB˔xɸmXhPa i-J}^;8Ze=bP볌W^eܠ]Þc@6s6c MϙQƝZ)PcXߣg Xs›AmZGˎVnmGW>sRd9$ϱrqC %#xHXH.ùH*aIgF=l3B2oN"qU\t]y_tߪ-C?C2 wHR&lz}2ג{zxȽ=OZ⋔'䑞e\ֳJk!qbi<;TRSS| /PѨ|Pkyt rz^9gKq!s==46(1-2a)UCc yǘB14Ɛu0֐~4i i.3L@gCgAg[.9Vgڹ2]q\Y<gن\g ~?S20TR0z2%9:?C bofb}~C_ f"X+VGKA~ +`/ lĊű #Iu3 ("Q!b'YbAqNg)nTcbXQ0B0ꆸ%VPAFcE`2ڇev@q<><b<bEZ& b_JU hV*RɌ122o*3̹ Qdd2kOWZ3(r|LcfM8DŽ 4P'?1-H"ȋa5cm(^㾑qθTdY"4wn(sr8 2"-@ Hb 4 DC%$JqֻLŨD6y=YȐ%N̤@⾁"vxИ BDrќ,`X\ճa' ^??_wq|G2y 3pjs;s#ww:#ce~.Ք;Mv`1>t9H0W/.sD8^u7n@fnppsa+y3+ @`> m6 P{b8µ|zsA;b8Vȍ09↛G8 0Ufds]t 3̇BV4dn?7p8u7Ox>C !d t8t2a,.n:<2)gHLҗq \$ֿc\ 8\s92L~ܾDžpyd<#l0PV4yx}G8d00p_ctBqa0=dy7 W;R*Ùj,Cec5"2WEb|2U9p!(//閞(ZuF}z9 p-XXӻ-0 dwc#Q0c]2y"߇5XMߑ^.~:cu@i&G\c8[Cd1LOxխ&s=S;<2hNM`uY-O t՝,#DU+=8 X2X+:dCr`uIrW+)>J<ڽsd44{ ," ^/ (j1ZZ.D)YԲ7, a`'{?oDy~5KŰ1nX ;/4փa_"kɰ2 ^?.؟W`U\}b#r*|2%9`ZPnĴ!΃wUV12n#;PC*FzT Mb4+W1b8pqb _OU ]1Ϯb,W1nbl鯫T@Ig9R*02WfWXhB]82U1\wپњ b4b]` W1пaݍ/*Fb ˰qp }]q U C]b MQKO˴,3 Y. Yns&ߗPEA9`a*UoY/DK#3u/Z#T>fA'/u\!vP>''ggZO6^>+\|峑؇aЍ:k1 S'b*V1Y+i+7y Ɉj0fa̔(B© t^/b2c:C+2/=Hww1#^2]_I4QxY1,RMbc$p~n 5xԐM~T!b_I%s|sܜjbNY9D#WI 3ˁ9"RN;rfjZ|JJ$M99?U9x-WT~jO( ÇD Pa@*!b’iV~T{Kb6.Bq&B8O-lJ"ǂ9_~_R.J͹]UɃUpGq!=ZQ;ڽ AϗW:j# [tAcE``xy^J ^ %1"k nSmdg/( Y4<aD^O+"g蟢*&ykZ&TW:8aj:ZMg‹C<^+&۰tbd_Wy<|RtZ|_rzr*E|}k-=;~60?_MvF)ڍc]&=F-ec]f>F1ڥc4!Ҩ}hto{rohGl2]FFrSv2;JvBծ&@N{VqjD&9E4tLǩ^JN78e#vSlI2T1( fLTt7%C )h@B AAKϠ)WPNAW'SrϠ) Q}0HUS@K\ *Hl1(#>O%Pd?FQ@q3bq bTP \ TU8Xf>-9o&3鈤"W"YL~UU" B[*'Q* >8fBHBHWBH*xG)BTBϟ !N\YB< !MJ. !q!mrXiҵNʻۉz!^*L? O7vap@]5n?@$ PȠL Tn2eR@Uj1TQ*xJjKSJaȯJHsR s0}N]6B>iw ,}Zqy< T /S]͎哳ZQ ''NJDZН]L=Dd;qP">P^N-Չr1Qz%"k:? [1抭f VC֜mT^CfŘ@ m:cB!\/ƌ:ELcƜQ#z$.+fpdL `BG̛ *&03fSce<-D͒ObL$e)feNI}e(Q#Yp-o*GDPHQ^YL)* 35Fxf$CQc$F#! Q~] B 1Պ` E  4md2oF}8QE̘LT; 3fAf=r$ >mGU>;8$~%X 1W4ys@ 1 +j}ȍ?jS#ghyAU$I%j$|]M#5E=!^,p^H y `2m|9ۃUO`9'dEpd|(2##F +#|j/oL=wSZs5tqK #6$ˊ*g_b36ָ%xȑsT&1)$o~?W-=d+C*9z#WeyOVbZl{jr{vڃZ=Tg[ jFLbR_v 2`0䔞sx?穞O¬p>a0[c=`knT 3ڳ0<܏ ~'~-hBFZ{%ѧW؏-ˈWP_&KVo)y(9y(rh[?FDPSa4_Ņh[?oϣPDsNăb>1>gwLva䌇LA͟O+;Rx-W<++?ޑPŋύ'cD"Kţ1^ L0^n)5b.X0u`{!xz)S<ZW,6u䮷j$E뮑FR\W5ĻFf;H犛Ȃk$vPIk$eW U ,k$5H e~Iuj$p[{H-FRIm`FR5jD5fLHkN4H1aHZ~FҦk}[U#juaʪ\)x,x˸ 񘳌]#! ϙ1޳ ăÉ̖7U^5<ģ*vX ^5/c71 s7G1w.K7]Gmˆ5oLs1gn2oһHwSYoG&[|]$Oa#{pZF.f4Ҽ/&I}QL&!#F̃slI^8^#C1 vgXb0Lb ͦ٩ ؁QR͚Y .αgcCSyq` | ̏#'i> .Ȫ30 /bF3x ̦IX x4< Euipru(8d`I~=8HW4gq}8-!)\qVr1@}Ѝ֣5|UңehCx*"4zV m8}^!#G"onO<@\>zd᳃s><Xb||}yDny9"ybH$1DĘ)bdLg̃>1e?c&S!>2Bz+b`c̆1?c:WFŠ 2'd-' Q࢔ùF/cPmGez{B&Ϙ7zN>NȘ9)N$S1f`2Zes3qe2SΡoI˪β 748$gDFu{AjW8ĬuR5:HՀ UC[a>RܘRuf́Y)98 Bu 尪N:HiU)M1 E .:H5 !|v45{W s2&"]R?g䮇 uC֮eul U>ݎTnwg~~ITn#wLi]9s}(g4wX'w0a39O1u?q s} ߯{HO/"uI,@Es^E"X-QL@E",Mqhì_EqhCMD1_`ĿاG~u/NN.~_̿gK~jb /vOY5bo#ſ/|ȿK,_lgYdcHXPa,1uD.c6KOKcX=E7/Z-YxNL911&91EP>TP&87A г^L#45IIK$_uR@j QZ2z%,6nɪ4%{D_ RvD2`I&5MRki'&FZechF-& pQ{}c؋lvهه9j4Sϳb"γCng=KgI7ϳ7uI$87uǍ<;gC4^Gϳd/γm#γ3<1"ϳkJyv/ٛꨞgޚgo;+ŷ@+8^Ggp5^@GG/:;K2;WT [&:ǝpD@?zbyIjbCլ#H]O,pYX:.+Y%z*Je,RbJ>ȸ\DǍ4£_HΞDIĘ'N'445ђL d DI{ֱ=aÉL/OϫP`''ftbYtbԉٚ;V7x8>N6UN֏iĬC'fJ'f#,ub -c"DX2f!d̂.e e &cfXtdXfTJf R \3rfO1@t̉;2@bI ԗbb 54 YbW1!11m1 ߓb 4s2@ b%M?jby] K,|f0 VdXUXbX RM w[UKʝTtrw><]zjAUwB]Ut0qOWbFNW;1骭v 2;W5]骭3t#D@܉vNWmOk1_U{yU{?g=NSu%wB-yzCnI?N8glKDV']c]w'^/Sϝ6K"g'`ī; <`iwUcb U'cFbc>x{H#+h?GE+޲yacsbwQku^H6=^ĘCσĴCecK'X'6>1qOL3e{^'F=11O.FBx~'Ɯ=>1Q'󈻙[w "H#nOh}<qtD[{dG<ⶅ<1#[#m#nRĘ'S>1ɽ:1iQ0eE=N"_wolI9{S{q~ɽOܛlԻ%-zg<;قt9{p41xv!uϳ 4}HdlDZUDf+4{)9<ߥٍ lGڞGylHlfG5[̹ow6%9J,ͦ@aGfn BoY89OAy]8^yQ2lOAc60j(Q#ͣ1[x4{yF!/b\Oa>6̷lcrX%>?W?F(~ endstream endobj 465 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 471 0 obj << /Length 2008 /Filter /FlateDecode >> stream xڝr6`3=Hӈ%NәqGh4EEX,%ə(﷒:J?~>?bU*ͯ"eGEQ*TLf_v:KU6IKs:8m|ZߨwJX<Өz!bUz 'c1 !%W|Oi$D\$вeQ;)-ޒA2߈Jڵ136&;סּi\ѬzyevCO7jrO\yFZJ sG[MZxYe=˓DܡܚFpKotxldV,K|In5X ,pwd`1;s! -޸kUPhG$$_9i$I;Rroc$\G%ِW^ È#ԁ=$뽵So&&("D #Ҡ]}3E;?| ϫP( Td"{e%q%1p9:zb8JĢ@P*.R \MgLQ(FNzWX̲!CҔ%:ɧ$O<څ8z6 SgrIG$Oc6V*ʙէw D:M [(.ߡ4ON'auK(u+g7 Kx=U!Ke\9aǻn522غ:Á!uvBjɑqQ^ޚBgA~d25w o6t.QVf[=d%dhh(َcœyEx;Fxg5vY }Pd ,Cquݖ#1kD_ x*x2MbR(ûh{Q}Ew$`̕Y|N!:(і 2S"" _aɤBӢP PùcgnIR|Ş?kI,+rc olvpl]nYš#A~;g<{ Хmfn]]ƾsx{3jcaoxk+X:!K"^&WXSY9PS?{"\r@$0ܦ6-B`!*b:4{B^*'@54}iZ4pcwr (O K wnlm̻uS"*N,$7$a9ʑZ~;om~YFa45QGv) %Y6 (r;^M%U>h#/l9e)>?ƤvCZK5. 6&acFʣ|,2d{>  'GCj> stream xڵXKs6Wp<=Hƃ$Lv:NI!AXKtD9r]D=P"Ňo(L~4?:QJTyUb3Q<eeIaআzN`X);Dl,7͖%U-"HԱn~Zc,efݖNS=xҌsvxärR͵eu; VzϏ~#̆|/(,:q͋Z3߿bGlpl„h&"~ig{7Wu"g>-KƸIXĉ8& nU)sz 4 e6]ΩQHl:\-oQclm';c)eKex]ɠ}g=5cz'awZQ" sxTpfd-} ڸrf-D&uoh#KF :1N0M,D}&%?4;VJJ6*:N y+8W e>ԗWqxߣ)+3o46QۥIqj\PϬxѿC,oBUpT/OV!<&x^65EnL UD߫MuɣybR0gPwı?tG:QeL$V7boҦGV3būzneXaEY{c Hs3ў{֏Lj"P h 5RbW/>}|(!,AoXNEZf E HGf\%eUQRQi8٢Bf?Bw/p?2\s_?(7{hPY)w?'eݗ}}+(5jݹeAKSW*cM9Iq ?8Otn!$^˷*.r ݽ?~w {; ?`~7e߄odfV*oRşWwp{">;NB UtlU1v6 & endstream endobj 468 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-box4.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 478 0 R /BBox [0 0 504 360] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 479 0 R>> /ExtGState << >>/ColorSpace << /sRGB 480 0 R >>>> /Length 1092 /Filter /FlateDecode >> stream xKo7 )tL"$m)zouE#Я_^v_JC3}pݸOuﮖCջߖ)?t}Y%qi>2H.R >竻ZW ω9~sU_]#9໕䎷f/&T]jS֋r>1(jk/"ӵkXZ<~7կ?!:*>^\Pv/}a |[5w__vʷ.ѥʻR`k:Ol{Kek_0$_"+^8@,޺l꾳^v9/WX>ؓ-" m0\ mxĐpX|$m0,}<`54l*Z`̄C|7u6a?LTEӛ5K}U :6X^ai+ y2M6X0:t I2'>m0?X! ,'szUО`;5_A!GNвXz늜~z[F=Xo}̪=I;{V22sd& EnS*|SzYI~*L,LիLRV)S6) =NM? I[zALf$=>#9ua=>_2a+=J! ̪LNvf(5ad]jxW] e!!H$$<"Aza@g!kWo>* YKVOr:Y\fv\ (P+qzJDEO͎CLJ7p("8 78TEDq$6p$v\mYJ8K~'*?85ٻ)UƕbeцƬ3.m\]> 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 491 0 obj << /Length 2586 /Filter /FlateDecode >> stream xZ[6~(Fƪx(e7 ;I&ٴ@4~ICPoZIs>*+e2{/"{~|?|eXޔ%&יy-L&M͈ٛ -FcaShGo'?} WUZa_zb Y׼qs_+73nm>xm)ԅU<"< ~Xe,ȥˢfE6c?i[gRbJ߯׃_IM0M/фlr)Ѹ e,@+F[dxe96Θ^v]+*,=oN@׽]­^7v)6@׬,q57u"˼MIZ[Ȝ7K_ KSgD(.K=dd3L>֭-Lc]/Ȭ7c? E6&\X[k h,You;>ѭ (g} ^h8tkM֘XJwȕ2L\h+W|ny0~_UϿESlO.=0JRxmɹ2V&5Y "̔[(p&96{$Ǖ*ܬ{b]ZBe8Y%+ 6c9Б-8v811VNd^ l8M+ 4+L&Hn|Fxbd\+ qs +\rT*"<8t[Aحz+ׄV_rS9osecb@A\@|+!y;ƽ%cײQg/˹M\8ݕiTC-9;ѕ4I %+MiK,βS%פ%Wz=I$M6C訴~$ئ{W 'ȷLʗN"Hv_kuW|[7[S8-skG Ɉ'Oǜt2-Hi[}v +#1=r⯝Qt"`ZHtU%Ӏ'}=Ǽ˚k5 M-ĘTql; {EWZrM$potx%5Z-ch)j Q; 0{>#d֋V 1t]P6\Tfyb C$ xP&L}r $iם%Nh4fh%Y7A}$T5ade+R:":E .h` ndזBmnlدL[- SyB-,_|~. T_F= w?D_wK^?۳ש̥D K4}_c 6Ƶ `=\f7Vfmf]r#e][R&%%'ec&RADTX4H؄]Kg:kQg.^,E'Xs~qئH駽o》^M0s8xOos?w@QBO!OC\?svCŽ#Ĵet*ԮY> stream xmTr +X!̴4,2.9VG2$G-^`_pދ(zCLl9b)9Zl%ڐhA8OVa6) T'Q9Ų܌#k= !4˹K~lq&dDZt`ۨMCf**Sʂ\3z"yORyDRMJ%  4FRW| B{OF$[㱸00[x:لwe>#!Ƥ,@<S*S>e[ۆߕ ;Ǜ hWTRII.bjfv|l#mͩQoIB8c#<˅!Hwv}y`|6f)K;' u*@(I!T\)hajWvg]Xv6]l;y6t{!GYd9ZՆpk`֪}ˮw$Rxq3їIg bW.q]7O?4Ygӿv54 endstream endobj 484 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-mbox.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 500 0 R /BBox [0 0 720 720] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 501 0 R>> /ExtGState << >>/ColorSpace << /sRGB 502 0 R >>>> /Length 2822 /Filter /FlateDecode >> stream xϏݶ+tBr8qlH7'"IF~;#=%CmFgE!)~oo^Bns{y_.q{#_"vؾ产Qj{n[׾mu{{8??%9nGiϼQ{(w߿_xGwڹmĴtSO^)m]pr/ENY?~.KÐioI{?$W;\S=W[^߽i;$8V]\[NJc=-}G~:Q^"ռŽ-S?>.mh&tqAeRߊM]s^9ݍ8f_fMC]н9-ܶM[~&K7ׄVڕJ[uM#i$C媗:3',!o.6E~5YM3uЊYԔ?1n &RACqOmM44\L+fV3lmŔ$uoqfJyI{ fjq_r1ߗ䘢fl3)wL8ϲqr ?zOͪf^1L>oE!~S$-86Q.a9Y,SI+&47\̲roR3L#%,X9.f~>S`,Iv8"+_F_:D öGI+cda&1F~Sb3'FqbJ`JYȔ!IfSz22SF09NL 90p3Ĕ ,qfrdʔfssorv.ifrr(̴brWm#_ydfg8RS Ŭ$f 55IW `r (gig:F#C! SyDI:DmJE<ߏrj#>*Lpq=/D)/3|l){ nrgLٸplȓ1gL<iؤfOm06MM7eB6m̜LM&w5t>@6mdfȦ cOm77l06yhv$'7%PMfjvz<53xk՝ĔfqݼȦ cS]w2 6L- 2}xa@EW Me`]׼qMwy3[()-smA>~5l:8NJ3P/'Bs(͈n.o=ڃ*N61ˡuqO^dc7ӐR`c~}jR'\T,$3Â)mbvRϓL[yb c33&&`d渍lZccf?cvI쯻>l~̇L,ϯga>zL2qdր;&ۈ]=d3# b3M]>R3Onf=?FԑemDEc0f6_/}9Kb,<ݻS_Znx`xSYx<=.i_x"E}Z- cbaBq 9,I֤jf^0;9;OIj&afCSӆa0̤fk f3ČLi؇uṁ'fT921_aqiP/df-b׳Lt.2nf]ӆmjاlf9b>3 51>LJCSӆӷ&%i8)z~nkgG#Lw߾L&W}_Uߗ|}%ԾڗPj_B=pL endstream endobj 504 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 507 0 obj << /Length 593 /Filter /FlateDecode >> stream xmTKs0+t"KBcu!Sc:`qb_aJ"F^ #e4s*%rCy16#˒<Nj6q4: q}|EvCM!h9ͅkه}v{sjRt,ڽ{;lJ@T[q2z83ϼ(%&z~aG(' 5܀^?SzOpIETKpWY8n&?Zu|V_w)ͨ_A|':OO-̾O="loa*}jbg^aipհ#DT?)Y/OwfA?ςSNqe|3~=bKQ@R[z[rmwX@R/Ss&q+c"^9׉vUmQʺ!D{#ջ?{T\UIeoB{%S>u O!<#ix-V E&OzK7 endstream endobj 486 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./flup-mboxr.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 509 0 R /BBox [0 0 720 720] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 510 0 R>> /ExtGState << >>/ColorSpace << /sRGB 511 0 R >>>> /Length 2439 /Filter /FlateDecode >> stream xϏ5 ȱ!- *p@-*83<]BR䳓 |^{y%,ٻ/?{w } r K. ,_7/o󯱟݅a3C%eW|];[w%7$poz sʈz!Oi'.6 %_З`xv'z1s=/!; -_*}E}/ՙ) 8)STNQ~I~ nmpN\F_[Xz߻>6DSsJi p y)nO'3}eܻN7٧wK7;nMR(qԼ.;\zi' ^12K`fԙ~cgBg&ގӧf/lf&6M&p4f\kxYFgx;3Atf0>O!3/ <Ȭf_Bf|PKLN̶Li@vfAb`fz 3Xv&$ff} ,34fF}쉮>Ƽ'Z3F@ 1O+:OI ]?||wx2#@O 3k`\+gwN&b}+[O.Z5Eaeb>IeQO)"sxFvf>ۙCԧ6-Mh>5ng:cǍLFRU&.[@>pLm< s9 _d0S9,1\gng¸P} ng nerfung1^#20hl oGsfI` [d ;sُƸQXOӫL#xcd[mR\KF&$?LhIAi˄Ŭ4I]vt&*[}$% I3;tf^LIAIa43SrRPҙu0S:5*%fvf0H3++ERPҙ|ٙ3=8ifgV6k&۔tfNY\)U=3Lbe1vHL4H3; ͬLIAIgs3;p%if$@̝#Z&rԑ0$Y\)'nc検t${}cbn?IdgR;I:\N:LNIL I9Τwt&۹tdr &+Vev'$;H3ާhac卵3>I'I9YLn$IQN3IRGҘd検tlNIvfO½*=&G9ـG9T2k|AIk`h[`dSN SNDre1H3<7*LQs8| SnklLR3[ʴɒ( sTufS3q3SʴTuf S2YreYg>i;3ʲu*v&ʲd43=LeYgLeSMB<ۘ3Kʴ) x}>7fk,LEYؙ֙O@cr "Ttf^+Qt&ꃝ 0av&+IbYـ:sSLV5O0E% vc޳~4AD+Qt&}f l!#3Wi'D+W8kP𠳅w4/M=}i?Ӯ<:OpK endstream endobj 513 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 516 0 obj << /Length 1811 /Filter /FlateDecode >> stream xYYoF~ϯ$ՖKAOM(R@܇) F-5RlݙDʇ}Dvgp6e_d7?| KG#-XYȑR3bՄnov2-_?:>bJ.7|:ڝ^LC;lnt /F9҉,){b xnLpGLJLۼ1*7z W[+>׫a?L=5.Rh4&7 Bȼ_m;77e!"g,ϼ]"ٮHF<b%REy2:c(:*tP c|  y{4@]{msƂiO6-^k uѴ,`΁ s܅ݞprl2E1)pxHL:]+y"U\\x ݏ'֎DbIj9@ kbO\'Ύ$BhF@8+4^wDA"}iY;kL -["#/"x9I8ձ˒Xa~I '8`MMk1d,uh' )i8ePeƱx!`C(ƍhW.9(Wޚ^FӨ&8F;%d߈ 1+>0>J!䳒 SӝҩdPAƎ 7dPA^YAVLj4nYsdA<@fH J&)`S1hlO.`'T`9r˒?ܩ!n#<0i .[:WusK۹:eˆ粐+_&ŦUؤB eqrmm8`"KH[N%O 8R?QPc:j=Pu/(<-4Rl)NVn0S(~Z5}- 6TƋGY7%:Q.\U{I` >_.:PTuٯI cͭQxjH_@X bg%L?oєҗtwxi۵m 4V*:ԭ׬T*UxhHzq T:6F&l'0)H=ƣ Z`{A3mp/s_Bgc>{^Cͺ~D QsdCMQ!3 QyETx1PoKdK-`n(tgW}5tO۵0Xm}WsrM>.ϢX;!I;M u;BTm(VS_o+Wt;;uIn pd$ӔHc<+XpG;o̹sThzI`?UOJVBr#~/ z2U@=3*%Ӆ@og4,Dʨ KB6Bn`'=?, qO;qڋ> NҦ5*j7oܔo}D+ʣi>& sʭ5Йm/zdpMqg)Ya~Ιڭ];DuGj7vYd? wA Cλ w.|C J1ytjSGBoqӟȘ(q}|G0#JVpRp0dLf endstream endobj 520 0 obj << /Length 2155 /Filter /FlateDecode >> stream xZKsF+tUavI*VľA`T~|fZc6N`,~ +p軛ѻЂTqNE!K/Xq3/>"ZR?n>'1dQR^_>2ٶ$=mmqAlq\> [H?o#lűR\"AJF:!-D;5o{'_{):rQ>񊪱c__AK&De)]1wvМ#LЋ3la>!,]u<POb3_͂+0ڸ {֝m"&73]ZKС{Vo:M=$کbe9H0H^M8Yώ V !"ϜEb@#ן0)ulY7ijw;\~6P[tf4dUK02345}83^Wʡ1ᚏU ^4$36]Lki{ݧὊffcu{vܖ ]H%dz. \}{6[*`0P?i dtJ|#S(sw3~}C/Spt|y8,3m?sIYd4eYbjQaq)Ge6 IaaF?d 5ְ-odrbK}{iuHv޽}EohF%QJb!`DWUnD<] 0s5dH3Jq︶v<&kۍ+T+$*H3Ѻ6MmF`pZh Gs,uJ#mT"}@LulZ1*rˮ hqq~ԢSڀaZ}-AA&jTO7Y_dqQ_Νڤ;i-kO4/O, SNW|,S)m\2aP^9?_Җk pX~7|F1ZK@Ԝ3sT Gά"GϦK5Dq5¨=<e*@䑽LV!Ψ< SC^^EPcbs+.6Ƙ~QPv))b>s G~ݕt5.%c,]qѷ'T]6 ?;ΦiGvkI !T=mlC=5n! tǑU`ku㼾=\r8'~vt fc׼ь0lZP[2pڸ}{HiwHuc+u2r+ &3xcVJDp "T({lv5W`3{xukyJi!L倲1a.7Rnn#::/R?1me}#";#a&! @ي6[1$57ġ\ƐA_B<3i| Y-\J7E¶s=3౻^xFj@(?=1,C`gy os"(ad6h9!QaޛC=/w.#6c뒒p1p\t}!I*ruB1Mwv"M@^+\zjwdAb7m*ԁ,npk4)PB%ݪ6O=S]KOvϣ)UU+`zKqT 跳ePwԽǬ-WFg6&2W1R_#>8;7o:}Q-I18\Qfѻ$'qtO}UAςpPL@'ɽ.sa٘b{6 K Cgxi5Q^:s]f/ endstream endobj 524 0 obj << /Length 496 /Filter /FlateDecode >> stream xڽSMo0 W(OKm) wz\;E GJruG|ςl "UX"p$eK^[wdC6T7`졼yɲ\+M䅵 S¬pp"f|AW*^aq UBpgK+t> stream xZ[o7~ׯc@7i6Hlw ?(VҨ%3-%k0^sQp^\PEI9+uVgrQIyUFywSF=*&r`QD)X, 3B!@(0 4 e(̓2Fr9Q<[r2} "V'E`># #6ʥ0eL3a顢2D1!*-Z AsK`ČES>(PɋnK(Z,c%qcCì .O"BeK<%,Qd Wd&"aE>%E YfEɠ+&2dbqXӓIGAXYǘF!ہ(#lN4I&qJGCPV;av/KAj"H\"(0C^ 19̜LpRy!hɊ @ J&HM?Kbė tI܊ŞHb©(DnXT,42|9^/a3NM;3<Ȳ/}&=h~Y5W]jT/kf4|}YjUϚAq)UioKsUTOh8~QSyXvhۚBpZ{ZXcI+KmYsedjtLE=Ku.'Re7>o ϡrR],pjj4YVKL㺺YyQCQ=kK,'J͸>Xt:6] pT|˫> Zfd;/TL`ΪwS[*C=jԩ%֌鄐Dj (!j@^/UQUo:QߝO.VZW✰ ^6율U?V@\5[Mg҆5-'mq1 Bͨ7NX@Sص+.ȖupSÌٗV~D9ڻKLv"vFkhNUO /e qmp s/ᐩT[7a/2iI,Fh`f{?f'@0|Pb/N8DS G"5:w͍uA1`vuphP^š6u!^-`B(2;!O(>> QzN( o;kE©x" ݙV.6%-#!s.y!5bk; 呒_A\ʎ8\|@JWZzR2p?Zd^z::Oɼ1|Þ+< =7Џ􀸢~ wXɻkڨʅ7@0"rFB":&x{3 GZr`ؚzqus8l|;Ќ%Cr"\g-;iqooy_'罵;ml{ W񞽊^%_bv*Zw>*?B(^qJ:;v'fw%5x;:Ytȗپѥ7/HC6v'ϑoɇGh?wi`NGY- gvՑUG~){zBi>u2Ž2;R;hݏCj> gSF:hת (Z$GZNCшXfHЇ&f`ϚN g\{ he0_;͏{=]d d?x< MĈVD[{})@ :UIqE+̝$V1ڝIzۿm=k ɭ!rX)ݨX/ɌȼN,ߞ|RkL < Gy &E{#f'XiKM],I)sv[\"X*P㺍J1bqP`w"Y0|#_l_\}@WR_^ bR)QzB [4ksܔچ R՗[uߵx 7}kvKl_F endstream endobj 546 0 obj << /Length1 2251 /Length2 16044 /Length3 0 /Length 17369 /Filter /FlateDecode >> stream xڌT%z ɶkg۶ɮm&۶mLk2&dNodbF.vW3+ C{')@ cot%wt4p*j377'a[@hjob tT|..< F NtwK 4E`d 75Xrf.FN@hjg t|dJv20307ܿ di9PcppٙehdlofdicdawF aes6qtpqfp#_a>,ng*jok sq>1K'G==\k;{w; 3K;Sh:0~ttJCGft311qrp_ <+pvw}Z?z;.N@_*23L-M\@sK;??@;Yzt>֏}lG̨$*OoU{Y,ffVn';aT1(mgfۿ7gC  PY]&v&G+ߊ$\mlSGodkio}vu y I}\h,a4Ut1g m,JΖ=8zf&9GcV')LM=v',ǂ?n]>\|fNM(_(qE . `/d0JAF?(G>"JG?#`T/b}Tm}Tm_xkL f|e~tGNabQşr?e`PY~Th ^~4Pc ggQq(̏PF? r:l>?#|<7.N?>x~?d,=?:NJ?'ksqv@&!V !]ux iߝ]k7ũֈ޼ڛ;;_|^ U:aWg1g΄`Մ}}A{e] %=*'Ök9d^+c>G.g/a@@Ӡ^y -/μǰ{k|}ZڬRcq!&C9NZ.+ *1#_nF2rd'W11;}b(Z?kG.2vbۃY:lPsU,8lr-0J88ec`xo)_(~8Ětέօ,8q./Ep 껵(^ydL73`5}'!xGאU  +~O/,u:IgC"ƨUA! eFFE)m淥J(uVUb$J-I(By>RA{{Bs v& }Hx}\XmH]z}.Λ|ӧO]~kS_3@yAC)S^M4RFpʸ@ǟUtB: > ~x%sBK$%!ظnVsj_gmўyCաtap!m{hvJɾ'iצפ/jɦ84,hkSs}(ZV>٘P29db87868hjWAX/I'5噵4XNz}ga8T#{ShygoIꊼ!LNi/DQ}aZrK4[b34 5 <_~(gZ?-?OX)!3ᐩ,]qO NCڕ?'gNq)iAŔn2ʾpt'=q[hR {ƅ)9t{bt]Z &PBf3[Ut4`OщU&rO&¦$na/j)ԬTl{HF #:¨tHXfd q؜hkX4j 8ql-f^er\@pMQqN'<NOBHU,0^OZud0F/ӝ4gL0]^xm{Un;(pQ^ ^.)]B&w>v,,dMJVv_{|m 7 >kdYdc.CFl1Ν5IzJ`WO1]&Un+嘮l'[RW]vdn:Z3MG?Tӫq5_( 9M~n&0jzbBT)zS 2ig:|OƵ " )%ȽTݓ:@p )iNl{#j?^Pcɭʚ) m>7߻s]U*=լm0:(w.෸蓨z_\a\imL~5y9'b>@@TM㾆F jD(Ô.K\\pS~ջoS"tRT+8g24-HI7;cR*[sDkG:/;LG)`+`C]^Q-VY&mB? %[mF'Fy{5HE: @a8lTL-"ReZ'L=Ue'Hu fM"՘UnR,N/cz-yZ[֐3: FVZޗFj {#||!Cwa>t \ex8+8[^܇Xw#\Us8 0,/{nA<;g<2@ɖ1G=J載M>Ԗۑ-g ;=\dϽ$@Y~%k8_f[f!)ѹp5AMJxܥw3d !k|oe_H4!:5pWOkγ^Iḭi3A? Gό {p }7"O:7H˾4 ۈ[m1:?%<S۵)sYCCMhhޓ4l`2 y|/SGr ڈHpmc;4`_2w9Zg8ߦy{dǼzY JWFY4(aϯ?xo0!%}U|vWZ])/3jS=A$NB5'Jl5ax f(Bt%0̫_=K0vOnIOVY'Py}ـNoGi]5M0 \Ĩ}{pE.|6hvVm>&3r)57Z8x+@wul5Wz0F7T`e0A X{ t;ŨG";Âg%jdOs޿/_+jZt%>k%1oZD+F[ IHзmD MD=Knע$.Y?xw}QFd)]HV+:I\1RqB}Kd ¦g{PsEmbLpY&"#nI8fT O_,8/ fNay'w~:e*~%EHȃ67x,6 YV\w;Î4"mv,˷tztouߩ-w.3Lо"W~V. '㺆c\Q p/9ȥVX0e[~^rގº *dQ<^ 2rV9I# ͠qj~JLA2J~T~{ߊI!z5ُ-惌Wc! 7891ψ4+ܾ[)u1|?(juɗ>lJS`خ]'|nttH $W x"4"}RWief888S,Uw$+/WgtHB=APﴽbn1`_pMPh4O"uj,V} /W+ZUA2ڈ{>(@di`it:΢F`E әT૩s:kyG5=yZ#RNMɊçP:$-o`2/""#n霎UBppvX3HXGPVM$jIxVagsâQ ۜj;: bF`FCYsܠ2R6yp}kЈ6]:}TwiUqYM L.'UqfWwK7ɐ_m24|zۮܱYH;y|&f8Wؤ~I-]VQkL7Q;*Ԛ/GL:cX,)Ikp֣B*CX}E/Rlf)`&ubV]PZYEIBd]n 94(gM /q=G7;,k؏q^Kʷ7Onw/ "Gog"Ʉ?ᄊkg]5P; sml8 -B$pY_o)cn)COcoG}Τ) E)o)N[Zˬ5-(mn->oU)/owꔪ?sNYX{.=`_Âz'LG f#u=p\g;kqYzVڙBwl:{avQw܎+>"#HD/URaműyͥ^m;=B(eK7=[< ⹀SB\ϔ٢ᒁ~O̧ W*>$>sDJ]CɄKp0okmDi摧G2f`'T4|w5ĔƶѺU!.bn]Qb@G=Ksԅk?ě' ١a2ls{!YՋi:ŪN/M^ R .}}h9( m>}MkHiVڥr8]B,lu8=Մ))Hg֥LCB0n$a{$ O1=l^ܟ%%l25=s{(DP BtE-A.X;[7oXZR"ɴyw-^rr٥3OE:,YcO=bGN96Eh:wMmmtc+ [dvZg ۹ʖQAY"i.I{a%{EQvV*T(o:lWвX2rR9~ W(|cP/8`5!;H3bQ]#/y7ڤtV(-aʸ2~Ze\)A%;#C X̗pHVmwm77a942Օ4Z~D͓ӊdp)NE>鸂v&1%~*6 x=7DqGXƩG>! :/r=u&@Vl3MJL~  BQREcgJ(mfIHiIZYL%5*dP':<;fnKXTZQw @(S3;&Ga,#iXPN0Gfja#-HD1#XfcUŕ)+[c !%~rs6)̳Z}h{QhOX' 'B@U3Nno3$tj*P5{'f0EQNj=zD)d f0=ycG@.yh)~/x+' !bq!{&8󱫧<~.]'?g*;c-Cɳ+npq*(]!B_l'WokYBV$aO6'VѮvƎTZזP4>'5D'V;shx IyTzu#%d÷ PK>὎tlp4'*Q^*jkC4]Cӗi8Mbg'B:kENk0LݪZsIo'\g_si )#xQv0!üt^t?57NzZ` "BFkܓ)L¾WFűP:y։pY:KwܻFCqӱ*wŎQu)6Ÿ뇐۸Jd*VR )?ʛ6zeqNlmU’SUsb?nr*%=A?n@"WS,Žx ?z-Tk)/X >g1Zt,)/BwfCA4m[sM84{{49zI!hiTM’{_idpD3>EDϛB2TmW̻tD('ˍIҧ/rA$k0 ۏ\Ln08m.az:[Fe$K"ϮÊA^U-:1|1ZC[x+/E# ug-BT hp (gm嚝50 ;E@sFdKs \g$j/e@Qys7(JECqq9$dWa쇕mqs*H7'k'HxRzƣF"?\7''i_$XIxTLorJfd~_oo6ܬ5U&'C22ZRdEk-K<㻞gVnN3,yW]+,x'lc(EW-^Js0)ӷݙ]Rn]HaJF4=An>R2-<҆S ש}nc +)N10BXWe@ >,a!>%"ĝ C}f$<.m6Gk:sR)-JqT$dWfAXnck 58 uרE5SMB%F]̠#i+8! @2 ċD'QffSVJgRlXcDބ~J2/AMn,x2"P}T4 4t)gZ_`?hafX iiWTC$P_cceŒ-ujˣ~ZgTPSW8?끖Yb-Rp1,]O.k ph)ј0T\D#cvJpraC2XbѸυ%F󝧍%ȠgYn.0JϬ0#2(/7\߲HN uR(.> cӭ.p=:4`rRw'2>ERϦ~T.YCaHNe>Vx my!| \ypm<&Kk|R ewr |W 6ZۖE~bĜv,m[ Yh>PނW_3o JOV jmu?VKԶs]Uo]/ tq~(GMB7;jF+NpoGHU-ӝ_8h̲KÍaݺ?%OdM.?cv;ZA7c{]oXp?S7 L _v4 x:F0d$*L.T"6&ouMr|VECJy=&|)]r2kU-+ٰt/>Hx߀e;j.1%h͇,t2f`Cf }LˎC(rj:mFYcעШ28>׭W7 ?˔׮Pe!Ӊ7Y~cHL0];ӕe:&n k).JK%{WJVΩh}n7,xEG7Գ~R%AfJ'K mECrl.]dsANNj2p^=>0ȀKh“t> .ZurB⽑kO0c7l!Eʈ:ST09j2ZL_Z5[Oʬ̓5 T]0y;gn=O)8ϺiP<6סg}*T E[]YӠ 8 e*+ܧQ{^tKB>V} -Y>wE(U KcԼ8ܶ g,sRCATo+*.MuNI@1h4x -$ nlB { p'O ZZ8mLϕJnʠzj:!y!SpdH~=)]?jސ+(/YOuo [{RFt*Q\[dn5%A.:p3ۦ`E,E-'qXuNK7s ~^]mmџa]o8]!ҾErG?/D |J?Sg'~Rce*X{grI?1\-W[,b]\T'㜄Ɲ#VD-܁&l`"gL5=ܜ]k3-G-|^=Ea\D+¡"D>4u*r9CLAТ' _RSј7I֮ %RоЛ )muiFqC ~,@M],R>P0Ht= iY\.i]=:SB_V8߬i9krhիb.:eU~XQ]陝&PCP[ϻXP@4 !;,3fRe% SJ]d 2^2ə }F uȨ5,E!E٫X2>Nйe :A1J$^77QJq X -s4EKwN.,H*Cտ2'k[ I4ʣ}߅,?f&.H9O -xkA4+(?`F@&2ӧ՗ͼNUXaRꈱ1 u_j}?/&ku(N?ݦaOIʢ, eih;>>tCOX]=ɿ] g{Gf ׾K.O $ ƕB:x \yU |>D+{*\ +fBX,2 PqE,^\6<Ńu@o"xys,Oj7OW%TS?~`{H%M R̮MfYttZk.9I bCi7 igwAրyyg(CuB8:8OM jKR&sJvOCPet+;g P>rqs?@F7 eZMƾҩ[6J.m%'6mBDcyeң/ Q<)(՜.Blukm`bLQz_-Qƥ,|+. Fd_bZ PVd-р=LUDismB)kGn;$k*55<&MT'/ad!{JB99適 XC4Oe!!hĆQ_@dE{2ȦS^XۣܳBOuO t5;C*y>$j'\"'fiY|n}ھ/.?xù9X&s6%Bq4sw- = 2A[eAf|$6Z,x~bg6!uQ5T:^!' dU|#Os>; +Z^N]8_%`(/j\&x+ FG7KO=3Q7h-,Z/T;&OJ~6 {9ek|$OV#bMX0cyo}ON|sZj͋N82v!9V(\,Z2`N){rģ( ol,0b8}LFg:T f"> jfݬ{T);smѺ@؜xȨN0I'l磛f3c9:>rJ.*v9/5p*KeCeHmkhw&8><(Y (JkXJ~x|&J=*F]V8@PDZ\IKa0&#Ҳ[O] K Co;0]j/C~p/sf Aow~W&2EsD :4S`-3ߦXV! $YMaѺnsҹNG<|e׿-*y͙{^ih6MPg|ۼ6QY/zM.kΣ9c'Xq >}W؏ÖbEDuxSF{\/G(O}"0@i+#EJ jLArk`H D@,Tk\~U^&-/imvB+AK5g/zfRC(:6ie()BCUM $GWK196ml*3Ǐb#۰@rS?OKav.;(A+R8n%}jhu Tpj]_?1dU5›q}=$PtuA2,&ViRymhEhi@!DS(o3z3IS]E{}}WX@$ƾ*fk]b %l4rqog}H` -Q C ;hh8Y>%Qt'j;mí{:'{l4X.(('PAtqRO}3B_#1u̖ ~rPNc>%sc;q[MU*vJC\z%P#ߣ (9}wOH9K3۟7w ?dkDM뚸[mA$7V{} ÆՃaݛo]wL)swt{G.xw"JWbQi"Dcc3)GGBeͤ$ȩjf;I򈃸7:rRgyt9 o֣b|w܅Rm(|({dr:Nq 85x8 n ]7m,H (H3D{lw}4;XFl~Cb)|R$}@[՞f ?ڃo0 W2%$Xo/#$Dpx "8 |?Rp1 +vAparwQ q.]4 4+X@sNQVA qyqm&6NVkPbbEi-~17b$ Eg"i!0"e5o3ٵRI|kkM:e :W5H2v2LYL[az?bWLB1)مvLwٍ_RL4V%}f)[~}Wg6(+X{#ȇ}q IAi׎ϲ9a endstream endobj 548 0 obj << /Length1 1429 /Length2 6074 /Length3 0 /Length 7040 /Filter /FlateDecode >> stream xڍuT]6) 5tݝJw0 0 C"t ҭt >>>}^k{ϰ+9 p( $ PQ3 D ٍHwvBvS IC!6UMԁ}@P\(!-$GHTAPG>&dW{ .Ht?\`nPJJ;@A0@gFp0 G.Y$SZPO-G8sH!8~I<  ]Fp' P0v9Btv6@p@  X pCzH$sE{ _&:d F@=P_AQ! O n0 st%ShM9C1!)a qq J` QpOZ$AQ _8BH #wt]`%n? @/t9a.}s5}?*+(~aQ(*& 3пo GH- Okpn?3 pĄy ~W{G>qa8zD`M55:GZHzH`:H:E]ꣿA_w($_zn{]=UL8@G( zN! (#.`ABAOs8!οv #3Ƒ׿o&\e\:&޲oes]>?I2r#> N2Fɖ7ԸN1_ښbt\]=2 \~S4Hotd݆sGToPÿi-:D3I&Eys<GgONRa0x?I e&|>Rm,KwΒ4Js; ՒYd' SpO.>uJVyT9c_.>A!^կ`ZEv 1ͷcyKML]#C1oPYSD<i"Mrkߋ~.qX1Hq,U?z#Qft$|)̙c>WLlhlȜ~L "\t &H/v-`+}Ѩ=soг/XsB?=82{M lٻ ov 'jngH HJ;l5nt߰:"C=.kvgLFPAfu=_ºclpsN-=/W}Jȕ2x'̭6KZnmZav6Y0Sٟ?("\f5gLu\$&BC'[O>C˜r;[ 4Jp$Nwos1*ɓZߚ>C3y}{\f% I2wnKНշdظDCK;Ջc{>];ғ{r6sLO/^4=N/?JQ|suJ7b%x{KpBձNL:)8 *,2.s/R0+wb(ea%pR s_̛)ar׾x? Gs/L],ns^jXC/w~E368$EҾ{>SMSp݉=^8:0H HJjҠhŸG s,~BȲBYZD8uKif@-8 )Ӌwd^ޯMUƃу%"#Q؄Ǝ6S2 Q1zlup^uzdˉJ6}R̗a4HS)X' +8cZS#/l;^͎Td]("ڟK#J;Ff@ tHP}y#VK$;&ߡj'\>8yȬ Ų%#I7)\BB/*T j3W8cB5>'zSP_UŞ'%4vECsfhѾɞA XRǠd&]Z-_|ɻmEn d~#92Uoi٨.fWUrD=rktkL'&}\Tͧ#V՝|  |GW[mE^W]\7S53T-EpQ o'~୴?bfvHft'awp€LF#kP.M >㵇NU9O|?V_[^չ*7DQ  \_cŠYJ/dQ QA0L|ė> <mS-O|<6U9ZHjިchTjS$wq@4;㡚Ҁ\iä,hx|j h-6mB\*2f3.2ΞiMXs$B{x!Ӽ&oyb@)M; o!1(/,%'dÈS#ֵzjø kbe]=F* RBaqdxdg;[E=RB"6mSf{a4fBtW2aM Iw^F] ܡ_>4=AAI5 %\ {Քy4"laf4-[hտ,ZLw Q4 =2zt7N:CbUTW&(3K #`+9ky1ꖟҎ=/X m: ucu8D(2z7R1vz-CĂY>?1iokm!WKL#2|7;&xaFl9d&`>b)wN 'C:ɼ1I:Djck-С}"WR3c ҠNW2P^5CKU b#v#փby ݆k'eL!]8e^k;$6/zjvjw/{_Ni`џ/̾moحy*gc!A<4,B T:c9H1o4w3$c;|Qnǹ !#>UEG[ȞPf --oj.(P4ddPyV`y@[5Nǝʻ{=XLUb.y֘tj%QԎC~XKЖbabZV]B{Z0DY QZ/>F&zE,AT+rbwЗѼ|GltFkz)6O_igrCHYiCp<UtdAmM][^S;O =Y+A&~?[ݢ7\kSpJ߆GZyF#RdԮ&ڎq-|;C< 5u&w -kἌ0qS9[چ!#ˣвr*P`|Gw~jH+l6‚^'p`)nw;͎=O%]{ qH\LxLJ%k;t t߄F7qT-<&>ӵ:h6 ) yoNz.iQrm9l!e\qi k١(ދ4< y=IޠzZ!Cꖑzk{2BDdJŧDTK.e)?g3Sb^"YR`bY֭?3XhR~\.o%,~waۑy^E/1Oiybqz s+)^Z4ˋ+h{<\41E>|f- x):%ohO.6jcO]:бjeummznaix98bK.5a:9ta:D୘0)S5 epDT-{?'izF -U PJ|uŽ`HNYzh~)njCOZ7^Ѐ4Yt:0?cKa p1r৤@#0zP>6?mb-DTk*aoSVFCϠ]9K/W{b$!Osb%]_aW٘6F OrMY R!5\-$p>WX$0O.O`"U/+Z4}fTʬO_؟X&wd6eF8Op.σRgHZWRnܝ*lK ʹN NBao,P&E3s[©ҏ)# LU,>o+71n b&JzᐌR]^5Giu׼[?Ln<}#x?[jT9VPWK l>J<|!>jJ1{J@Y" Yu]$t)D5~IhwÖ nb;R;y4 ]l@&_%Hjn[Z[dHx =R]XʼG6'mnN-Ow :p1ж*CV 1h JomOb :DC>0麾PI{7 W/ϋ6:FL Zc)1*Oecv}1ELظx[_ܾxɪH &VeYPX쪄hΗ5: 6[UщSKGW>ʦ?A z[eOa,}D~(e9]٩ҮL Ū`lxԥrY֍tHZpޤ `Sv9r 7_1 [PUjW[vru3[ hXpq ꭍ̞ph|ÁW[HIyd|1PVU%SyHqV0tJyV1[:u|) tQSOT^ԙFӫB#4cuAO*+ÜŲӯ& bK{kX >UaHp4ٳ)H1<5Ti򵱶%[{Jt&&j㍥NF攐')}SkV/oɺ=2s،koҧRz`wEX<1{7RKMtZnQiA01.vEك\F8@[!M#B\mjiГa-ߌMq,^!oGr#L<~| d;wm }V'Im"E󥆯PL敜{2e endstream endobj 550 0 obj << /Length1 1417 /Length2 1364 /Length3 0 /Length 2258 /Filter /FlateDecode >> stream xڍT TYm |I%`)` @eH ( U!@"QivAAA4͢ (Ρ]F[EEѮe朙s*߻P"<1‘A'0 A,1)T%xB G2Ǹ@L1o <r1`ep!0!3ĥ\ "Cd.QJ$4 l8hD a `" I!' a1Ņ(B(?ka0 $\:===h4DAd4  i ch*$L(@R1*D0Y#DA2$A=1ۍVk  )Q,$b. H2`T Ǔa8$Q22 kH5msD^xJ 2fިo2c%hz?Q|%"p ŅT(ItRh Mdʐ@AThBQ2dpQe||Ea0 ID1dIY  dH%E&1#\{>QcdzdS,`9am`6ʇ}Kgyxc`9 俩_-b-f8+G!iNPyʗY?&mK$pAN#qT*%IZ9BbOYA_H ϋ3m !XL4&d:,J DL tQh%4 '@RT\J, 螚Ȋ>gCrtVZ#R:qkꜺ7'[;>hg5^͉'ֹGӽh\aTjA~7%ɭ*FaOKz2dz6xi5 S\5Ŭ@?-ynM{75hGK*vrLf? Z* N|ZAːиhEGEOC577,-*\oEEqኅhaSħ5[JԵra4EiНV^tx.bQΚ+{kY/p*rz>qC{͎#2k7VEFUN(%R|BntyiJ<}vyauˁs&Z;+h롇YO=o|8qiϙQ[0"98k7?%d TZ6ߡr-9De/Tw^HdRR nlP/Ȯ>厭!XGN 4M5Jpފܵ%;e҃u_yմ/s{h~`wq)T]xW}H~Ҹd߉ww=eo_ĹvA>zuYwg vl}*p:$rrյ]wh[<},Tw=R$M8^h8, 7-)5J=Y>,+`dX/I,fk{k1k&Es ]/ܕ*(]PM;>{:q=lIs (h:eY4tˤ0w+C&SKg n\t<;ѢgS}&U::cKK:ƶijr.a ɢY'{ܘ^G/7 ޔ&>okCx|ʽXKTW%H:kCYeuQ[]bv&ɯy=4DV/V3<-wǮWuJ[\fyN> stream xڍT. (0ݠtw7R 1!H tJw#<|Z.*̢S cfga+*ʲs8Y8ii5@0[ztZ-# #0=9*B9'[;'GW #Q a 2( ` Vb=@gF`e# jt&0+SE3[: W :!+^Ņq|Gpj@(h db  :-@ Ӡ8O [ } qO e{ Og? O'613ٛ@`KPR`˜&`ߎ&PS MR'ლ9aP(7Fi, 60($@@\0d[adϪ 98e%yRl||<jf=#o/{=  d|5q`N@/40@KOjşA}'~e0s_?V̪$$+bbW3'; }O a |:Cl1}<GG7'Jݿ``jd> _.?"Sv{ r<535Wd{D4U'XOipii@+ }nb&h]FąysD8H*Wr8̌y2/RF֝Jbg=6)>qdڱ0~ =㊔j .W;I\رN, MܲWM]lk)^6 WZkjfM 7kv1aJiTBq.ثC8_>G9op$H%P0ﲋp=L_+R%4QXgYţbmZA|9SX{ -Iv4τ M\!m>kˠ(9*aRe̢bY=Y5,#H@41/HdgXuA} ֦?RsS!\`ʟ@vj(cuJkkBm{ec[acb bu:1XwXpT\KP.-?欂 !4!\h -En,S6_|F. +L|g)W.Q jm\<_#LyrLcҳbÿ͕3K{ {D Pt ܳTVS( 3\fF.Ĩ P$OTv"yI֮c\dns$|ÇKOMk|Ye:lQ(B!D*g4%c|&s8'HbK}̬ 1XzֵQZ^!ze/:!nuZo#  `\ x3+w;lǢ,8{6mq@ύ@vU8;` {D)7]􁶣Qy>)WD.";7Z9GF~3*R\k`l /NcZ# 'gUyvuV mQZj.%)IY /FfaTёHj }1L;61}SFxw4)Yf%l;D.ru@:1s!w_Ppt@CʉHT~<?J頨}u2G|1Ƌec yUCPqati|^4@z0]OrͲfj%49Ɛ+l l{ם EuR K|g.B-'QHGf;r=7WeBkINм4vZ\Q5ҽ=ZO7y!"dѣ W& q,~LHkg;dRtT: 0*#&C(hhU! F7!Up8F4OKה6$[zGYrI^ݕRC>1?'I2g !e .$.]MA'1lP.l G"mK V4Q =\@ЗT<+F'JgrruL$.[Y׵ WVwQr `t=QuDe5Ž{.׸>[R㺻 4֍A`YCz`?ev5)׆dF _[+ު`̛cn#B%q͉fHTq$0'VM^֣ ~.Cs tÉmz#&o6%v6JWʰ:E[f&nNꋈޥBaf] MnK QEw7b9E,:|,']晄1}p xxmNPA?;3oرHx}Stmjnո#nCm#xʘSK+WʇpWo{*i|L8IO7X1$DChU^8eaxdrwUoĚŨgI>cBCݯeccIogT`9\ CeS0-MK\-HqޝX jji2 !>|EY^/?= aOu,+J|?A߇ouJ54#/zj Iq])- }Ajg6o=ĞQ۟iJ F ]\YÑ)$> nvܬmX¨dWַx[]Ok(~s ohw%!Ww7~y'|}Z{F!z~}n!9m晐}jښ ݢJrbc 1p*?PgElz0n4;NN~#"ܧKQX^33,b}.PQC'*BVⵃQϣeX.]Z_xFBI %/"Ctv5{u ~ D6T[\_3sD΅g Sd3]!i[Q߰uJ@+x’96nr%pU'}VQH;L.ȥ9mYag=fJBY(֩lq : Ң;jLaq(jބ-N$5C!N#OPd00EWALi"#-#nfN*~Z\Ȝd(+\Gu9_V=cjqNƋ _q/FSĢ/ۏ:CܧBjsF#$@-ċ"rxWF`:dd=e36MpRAݚ7f,qƉg;Icdžv^'V+[^'|cOtAQmI@ļ؛K!ȇil 5h g9t~Wdіv"BnG跂`q!5I3Iv×EܜqIF[Y;~ԡbHO5etηJ|vbߑl,MJOn{$D"1󅪑W![]351#ܘdǎI,t/yc^|פ@r*}zqd kxi(G-~]-}gYKͬ9Lv,LJE~תsd^V1 hn3aMF]Ndosv]*R3_HrxًHr9Ux ru^MHH.`Jcg@Tφ(LiEC4*-PǘYG#8ƨ`W*iPЅI!hk {ssKWFoɕ ϵN;(Ck=etӝ5ID+Jm%$?I;%$Z *+"pY<*J rܿݏ*͔ݏLW~b||b8|93 O עe;fgAΤw1XAVsq{9?U 9鷝EvKg#/pUqq[T8:Z>mԗMk"P@yTs; %2~ ܲڜoްbVUhWQ3d=|x@L&0a_Tq`l=yce]ɛAkWbr6N)P 4ymRE@SRA[fI(sEl= ;\K(b *h$n9ǒ&+/_z& k-8]Gkڽ<~fC]Rlj{ˆW_ci}iIA"Ґx' w bS#a 5$A|kCBѩxά΋]Ÿ_mgd}v(aJ^f`DK,U{ɘy5I #I gLpZ}n~mo5za+Vq#"y⍡8ZY09G)=evN*wui0Wczm`HHa6ѽ43Y{Wd9ףMڞ-ybq3\.M $D׼ݯnvR^6 j͌fZz=1aLAm?/'#BƞΚۈ7/g_KOμV*Uؠ5륞L˜ޒte}᢮u̺ aj6c6P;^> c ;Nq|$so"^{4]VtZN696=Y|PB_LCK"tQ}ҮD{<"v͉nZ ѡDxG/ 6|i k e K˜DBr8s'g\ z[^w?ܬ4&B2NLEo'OTsqVVGfM"^H1|鶆:gFT;TN:m ڧlV-cПl'9;N:XF> yNhu`kkU|F"hϽv]I 4)0oYk r%RƱlGDo2*ωc.j$ x\K3 )*_UU&&B~:IC}{]ܤ=mv^Y˱&TŪxMثmi*&? }'ڜǬ`&8r @.!Jn~BYQ{[߂@#n 98z,}K!ӮMCA{VCp_>!)>(#OO;yhp$ܛĦE1X}Sau$.q x&YBcq2a5\I rF5wƉW_7:E1ed,F.OokxuȘPOzx% 67:s߮ 6:F_u;p$&,B:ڟz?L;c$f˞IKX} <#Vb1;O3ĺ̊4ybm狊JM[paG4hg]>?PG{Bx |%)1Ӭ (zTS'--}T պܧOb*14O}1/Ui;SLP^I6擙@NnF._T p5oEG>e!6/ߓ3ǶxeւT֑{$s㖣e~ p~q&ͽHcg6$wcEf"Np *~fMd}~_= sRA!nk.s ibq_3lzvِIb0Vݧml0HkzF,MH3ʞ vA7S^1n79u8rlِ9ID6Š'Xx ]ƷO %T" N+0DJ+s/cHq<}(E;iel}L< i1Vh̕MBƜ ^4 endstream endobj 554 0 obj << /Length1 1748 /Length2 12856 /Length3 0 /Length 13967 /Filter /FlateDecode >> stream xڍp$ Ƕm۶t411'3mN&X7g}{=/wZUMA b` twe`ad)0Y((ԭ]m(4.2s~M\?n6 '/ /33?μqwks#@G!lmi?G Ow`jhfb Ps0z5#/ = t:$ P4#@/3!6ڻ|xٛj2%G_  `am (I3zL04uq7q7510&IGblbmGL|TY\hĭfeb<}$aȤaoC_%:fVLЫ{9T!`b:}}_06s-!Z?l c=Ne`o_?ˤ*!GWDE<> VfCq_ *X}1[8xxﱠ{ehAc>36BnMm6e7׏PpXkknvW+j"Ehljf @e?Gc>}<(.Sا )ao`rpLM>Z8>,jsL.|pt$/`/0xLJ nvIbb`1s?l>AloX>V / `d0Y ~[ ~\_#0 ~r///Q=T?z~Oܜ??w죽@' ny/Ħ6F߃aB`b_+gٹ ::3hN$iemWVx紥:gJopKSX"u _>k~o픥ƍ'Y_:rP)R6Xe5Z5ʾr$@^& #gR%V(tlGmw6)+<3u9DӀnzM#ݾZBB,Vzk)e`]Z@ $HP~+'<ff]n^1_?_V6\*vl͡.zs*v\^ZIgQfHt݈R61]nUb1zp,] H/V Gy<3ҬhʑBw0~8$sg~sW^.jyxY!:C5 E)MJ$ ~w֔\]ԝĮ)YK]iwŃLFpY_?xa/nM0֗ۦvjLX̃Up2&ͫ7δf_g97ct 1HtziY;/7?3" M?ؕI2e~\U`E1o_+>*0WŹpn$.?sIpgtpNi鱥F|L"tEV"zYg5S8em*pNQx0rccin~ }8ni8i[i{˧y:'J6hpF'/-s\+)Jwc'~?Cz'7Wk(XQ[.b$>v"7w8cd霄9['q~0szc{cwPe*$c5v+jK  f)tȋ>ke@(X#oϡvAYp:[S-Ps#0DG=&bT೧@Jew7Än("U8;nҚ)[3`^N}2N?ML`ͲmP`%Qg:/Ł^&-yeW3OMsI^*& $$Gu!OzHT_lvD=w΀? M\aXNs@$ټv͐u_*zOFKCٖ= V!4ED |5iB Z^n_a5cJ +g1CLx>@MhkFbV^~8BoԜu5$ژrH OzS}WcӨ&gc@lo0:Nn1 gl 6R HSo)m ΋Zgκ+[eY${G""NJ@|v4oQMgG pCj|( h%Y~8H }ݯeҧAKzi 8C̩.A ChZ,R6ovb<5nVPH ȼpRݯþ-0:|!Ǵocys-3&/>%W}/d.6P ~)Z&ok4e-(7i= ܥA*QL8T8j}S%aBAog5؟k;4[۽2"ϙn O8(n%#bbِ`b0E0B!z(%+Z7zz{>RQȸV/$:SWY؈D}|Iڲ5ku#CEQqpAzO9j:մ3=Œ!~s'oۏ%¨%ppyg7oїr]T *2[{ə]z%4\}/߭&~Pͭ4^Qi;m1'bP' ~JlP$l\4acun,_ojR s! =7K*?/$k{MpڴVK Sao^ 0$bbQ>f0ZgD[.ʩ wshȶ[2깏,&J܃jEFs~ ϵ@ܴ.jp%Xz,@:.W$'g0?5EJ&!o>*4ыxPdZ륞oUhEM7ö>lKDڹO +lM FKߥ*HzU; R.́Ī<Ov^U4 6=wZ%Q}&uFuxk9!6~b\DBǶV"7<3n/n':"*[Pn!,>Ds)lg\!^,wNF1}fء* h"iehj5cLT3u^"'q k^# 'xd۩- <+1뱡)Z wB gy]5OU'OT-(|_]mXx)pNf YYz`jl +#!IW 0D?*Lvr\Z4K&ɕ[-n1}K04$:Ig' $s20s:%9rGfgDc2jP,ٟVHcz*aVe: A~jo^&e)>"ilPaijZ}%PnRQ&ovlZ@} TLj8ecj̝'W$/=#g>yPթ&GKVJ~e:>jÐbe ']^h1Y4՝*`Ўj\mGul++AvAZʍH*aٕ)zm+flnJgqA_G(2K+r§~P G%Ù);>rV=g 6 MTk鋳4gcB;޸s"hBu@+*)CWz &e?v&yaqxqCPJM<,v< dlP8d|?[uAטѪCZ;qq7YПy` 5v{ QqFqT>`‰)k2h1Rz"xcL";̄!Z$fpX9?r߷B:m>%6ٞVH&*i-JؑA~r(BX`\_BcksإLh뀡x̅WESPնlRؘb 6qدnߧ{ѵ֛*h,مY zHe,^vO9j3S5o 㧸h nҤf,"=Sgbu}U_GFwE~i43rYq26IT/)R׊Q5 *"!̲ȑ,]ADgK+ mb>9{U*w_B TwgR tX.Ro[LͥNwVD!⥮l@#%aA~-+=żwmֹ生?}Ŝ#ԇD-p^R} #Igf&oB?{7K'K|  Bv|WJRa2$k%f!V-1E=_hv$8+Ys#ӠMf" 6áE0wJ^ ݺ4RJ̵).!us% Cwxh5u4V[Z P-MVqKu`4j DSbucT! =swlm3pKoo:qؒ~F1ٟC5P8eB_x5xhe}fI}0a.4V$3-ǖ Bo7KFh$Fp#hf>yT]ZGb:nېTaFXA; f8 2ɁKqV~V ;({^{| WC, (k+a[TgWg޴"VETIpevjԵÆez C-k wLֽ^3(u}dׯp/*!zkڼA+Bftw[?`[D8x@cʲI{2,ԏ MKaVkiPG4 $Ε:ޅa)|"2bLp 6PNoQkL9v<@9uB}*2)>'캩1 ֥)ienjs=aZa4 oC_vr@ X)UZv vjV}̋=CAO`x5|G}9 nvϱ4TU U# ^8+ISD Ě(\B[ 蚵LD?Eđi2*ojћ =XgYU^,`IcAf@\֬w5\piUϴN(EII [k<0ɼK3u 0iV~n:jy{ 8}u,WkMM]A_јFi.o=%Ww^"\2u-sJDSfxQR4%qMm/IS8(LBr[tL[A" y6 "%QC'׈{3ЖElb [X!DJ;Ar#G `}gUz;9Z~!ް$ *i݃@.)}HirײvsGްO=!$_q> kvȩ:ܫ~_T\P O=ᴆI˔G5R2Dm+ [Ϗw?1I_BkM@;JݲO [p<0U~$h9(%H+˫F=ïV`"'wݥAuMkepd++i1tb^:sop :tm()_( ,+ IIoR\bf^WP|ۼ"uМ*KքU%9ֹJʤ`skI[(r bz0")ݶ4~ҹ+Q[W@2/Qlt>|̱~׸ Vǫߗ(yvN|XŔ?ݔ5MJEK<xױѧN.ns0 9i(pa֩޽[mi{]z|{H376k ;wq?]/I:GHN"m Ku?P+Ǖǯt:FG"s4sW4 )94y;I Xrۊ'LV#Uz{U~Ԟ|C:Up͹wA*eW:̀!xT{_gqnhIK@.!Αb8P[,ۋסAXr}݃IĞ6՝o9 3TA$[69y7N=V}m1ݵnrNboLD⿑e~iAh_r|yۧ&Ãvz4qںY,Hg ?Y_/|K".gtYDƹlGB ~Uag~*ZuBdŒ ;m`)bQƤZث[ʊ]@ިQVeb~~5jt8/ KFdg_B,me 2|YTJfpj2rѢ欄+UGٗ/ylLui +kdQA.z$TpJzH_5 #Bm!$il@"&L:\>DNDoO.p}xM^ ǨPe2# Hy#ڣon牝p!EϯuRm|V%5Mov$]-yR|;OlOJmiO`za|N2H1!o~֧bu'6Æ#x46Yx.`_E'oGFsUלo6 QsҨ3gk<4aSSh [{D ꬐Ff~.=*PM82}Vb ZJg%ݚ)~F"AJ/n蒰&?*MsElu3 kvwoAJDNﰿt̵A'XTŨ%~}vrGN!0-̝FilU)^qz8‘OW/cTt$و@ijeڑfcM-mgbc349$PT1)Ԩɷg߸o9rGJ(C߆M6eHCt`Z^?jGn. 39PwuA U<펿[:>͠DZ.a.R5rft0C1s7iCwon0eF@¥՗eV^pI\ċ>4X y#G #T98F: )Û&W lBZq,kVGՑ|2ASݷU k$g\uicR#I71}D#K16z&z/c*I *?[wʂ[ߞyhZ/J6A_`:C~3ql$e0`(<2 єzLT8> #\ ' 6y)NIo!N})^/ڥAV_mP7ӃF/g#iAXѱg(>575^G~b-OwsJcR:[R+0ms{&o߶ܫKSJ2KC'c*9QRLpClgm v]Yv#sV>;!v5 BPcd$J~u]f}#ze栓l|X0][{ϙg% fC}iYTU)[l) hY=NuOFҁqW=uW'AӁ&L z96=({<݉N\xUhA9H<#k(ikC@%E9CeY YhG/FtDqۜE.LawU@=7,.;+,4JVL9Vz^ZQZ~0" `MJF<_1Ycȕ] %X x9ik;FBݱݽ m80h_԰A{z֭P_zhqL᠖}y;[Hc҂vH( I(3Mg(n.md`/3Z%k5K!o"WҠj v3S nH Cokp jԪf2g?<5H)SItM\'O E%跗#AâC. օE8-a=043siNq2ՀaLR4J>ou7!%>t+Fi$DugCmaÑ'MrBor`ӯzzjK|Lۛ:CzWyzq3fz@#üݞ}Jڧ7@] hSaQo4\Q\\"ftoyoo!кYGqc:l8٪q븭H!~nrǛ~؊)܂Nvy?/tA_|HA/l2}֌B,ʋ3nF~ŴJ5(gv FCrleNw1"kmM/>zd).&8B투 K2Jv B41iw"-._⊌I7r4(]*dOaGDXcS aѠ|M2my{/ 4 <>VM_Pcj HP7ф'Ƈ torN,V07?Z k;ib9҃B XF_iʺ pߢ|<P|"{$gF஼X .q]iB-^c-E"8"o_\< FG72OT%@;VI=>1xվMYC]4-6_G^="],vxџ*D&4Nf-v3CZm܏_eP*kemOadwIC A` sZ5`E9cDWd瀞%׭ D¸%gl}?])ma։M7$;7][1isw77ƽ*>bH/עrMڵ:FD6сx:I >EkD;kw<{-5WdRlOPBYfuBt^xY{m%&u\[$9Mi ԂH.yLgE7oq 2ȕꀿR׎Dxd!uh7SQ15NKBI(>bOA?]$_rvKE(IJ\{i^"A47OKaR+91 d2q2Y vэ${7bjk_. kIepsnGWT;D\Ԟ>aH8E0XѭmDT3HVzq_;" ;~)omar r!ٮFԮB]Cϗb7PEiJCZ>b]gĭsWЮ9r',yod;Zm^ƌ5T_`-辷dۦ C^lQxONO1|ʿ"W"wˋefA$X6>5 s7L0r#5M7{]rj@[SI*bs;*wb@}liYvWd10|}`L$x  LcGޞ#"7$DQǓJk \:dGv t,6 endstream endobj 556 0 obj << /Length1 2726 /Length2 20183 /Length3 0 /Length 21713 /Filter /FlateDecode >> stream xڌT  Hw׀twwt*]C3ttwKttHtHKwZ,ւ|\EI(mrabcfH(XY9YY4\lNV ? $.` NwqظxYY쬬|3wHY 3" t6>>ƿbv@'+Sc@hf45ۛZ]<VŁݝΙBnb P:܀f_WƌHаr[nonV@3dtr e oc olljjo` Y̭leifF1엡=lWi1U1s6urpqfvU"˯0.K$ g_IZ9Mmd{6 {w? df3WM+PNbee@SK_5<)~z;;E}́?n@+O"`!;YytY`'}zكl=5_1%M%+W'.nf0sxy<\FTX.ܻVs1t2(كWz\_l/k+߄]mmRQYzcdWU(ڃoM_"j\!VV@3+S˿WSU읭~=kLlG7SԿ"Xd~#vo`8,878oE7/~#0of욿]7kF`w">7gf;adljp]~9}*ME\`7ᯥa1)#hgfl xq >I8~yno1rVЀo N7/s{W?@p sg` a <9? ۶@( ߑ n;b~/cwIi{ʜF8غ:,q=_sb%wW_j4saw.\`'g7 p8| \oZۃ G[Xֺٚ@0A#yC [_i5qfTNzQRCyȭڇũ{KfRO #̭F c17huHEV{ǐ칼t-ٕi1g3;@\I$(lV"X˜)Yy*Hu;Ht~laiUWfa"7CmLnKamʇ -Ԯ<*\f.dp:EdЇM=ω4b`w_`)̿l^q ѱ OÚ 0Nu'۾cv+aOak(\څ=RuH߸A2K3Vo~~vpsǣ8!\_CB ZG8PG 1*S u" tas4Pt,ߠj9=)L|dVJR" ]n>q{V-&ZpyskM1Ɇ2 \KRb#JJ9V5;%Z:|̳9bg%KsZOxәo'DV_ ~韥KY@aOǽ W`̻C#5EAז{f("%ƞMbuSeFpq|\V) Aѝ=wW&NMX 𽯞'^,.gCyn? ͈>gX|k\ۖ ,AOX4LuX)S.r/b)7W,Ԡe!z 57Dmc+-C4y'DZ$^j`|)0EATNDY!..XL# ,|1Z/Gd;뷙=m 8OJyݶ]ŇNk[y6 &u1^|l`Cu鰞~>j1 9_xn >>cG']1)o]v;GІ3|@JϠ,Kf4%Y\3p;8}W*"v"Pԑ'uɩ+aw(|n5:&lj6_8ԼUE6kQ\pXhG2+kYj0Fyy|;kABi\y628$~埍,FA{33;88Ü- QCjdq,XqT .|geE]b߆F o9URВrKi[.VfUj~R:CFm•!7%M*$NJ rmU~N7nT员<93?,^QdXeCR JSv ea3Yª]aԭDU;^]6jS#?800XX9Zōp,/zRI 8|fVA/c=$VcSgOU5MGy/D 40ʺYc; : #wg6׫v [>{t_ #G`]ypKV ''I a ^ڀre yvaL>ܙxOz"x9;*~3קifv|m/xzgJLϟsgcf^P b*L;vIXւzx)m?Մ k^Y +VS`֭3!,(DfƗCtQX%GDe.FmsyY3cx*މ$g !Vc%}H9n;bDU1\$}.l^tM+ &ơgl, h@r& QLd+~KpCGJRE-H-w|dZ6FzW&s_`z]ǡoe,yӥ1dܐ >oT]dŘ4-zϰД)z 9`U;ҬzsMH=t@DVG2~e{MA|vdYϾ<Z F.A|m!"Đ_WtY o׵'IS (VA,"NYD"4I/bjx!$`жQVw9TnH):>6r`:O"%Lu:>!Uo-^&t1@fid%!G[kQzРH< ;*u)$5~̣#OY7o&Y(3I񹛨C9{og 57f[A?asBX37u@zMȆ'Fz[0z3GY WItSςKXcl#e)GʏgɅW)j^.Vkpr⇈".xa5X }_&i쮁E) ,!;5+A^'c\rR#ճq! _PP7KYҵMPvؒr=xXڶKKZ. } ^ ƶ3=O%{o}JڍX ,3:ͻ/W:X1$>|YkNC+t#~^:.JzSOO_.Bk3"|u4̢Vޭ92BK&`3}j)g 6#rj'w8ؿ6lώlIwr1Jq#u5w0Jx 6;X\e_N(YH,X 9HbeAWA8DnbsQ!aw`M'4}/>1jP68M -EWFS>2nl̞8 p}]8CVR&cT~` :c6:+;&L;1S哩1ڰ%UmN1~tj@0-Kk̍ɽ~Gm!.2-P*Ld P^<$ D {[u%mdvDNo?B:ưEh}2"vq54ӲU*kNf󍼢df{ G0d$" |KSX]%[u:uՌ~+d/+VULojq-AP> 8/%yV<M) 2¸{_d6$.FsY7]M{%Xv1/[qk~[W؈+2(zxytvTD0[y]z0b]=<yJ0[Yo03{DpSN%SOVgO׺ok.f=Sxx>7d̷I4pnRzo5 xV^n0F Sm A_vX[Co B|{iצXX~ qq8f)vsy\!ŰqƿWnr$lj~cS;e7 Stӧ@K@nt(R^zVqB虾6,>ӊjLFDȥܻ>}/o\tkm/h_f,mЎܓ[z̖bIu%.ȑAj%5aWVD}[R[~*&RLSɇLD N "xc?UI*qnZreMVTOAMdgya܏韻#8/`bw_&z; Ռy )Y;9R)($!8T5JUhа0bmBTzvv} jB)uO5ud(%zt`,C, 2 -#it4m쥖2ﲑK1l2KߡhԍMC:39GÕH9#ByMf$jD(IDջGfч ͞0t3a Ϟsp`c'Ntߑ'_#T0=aDD$'%0^i):q#QbXܖW s*cio.P\χso@l;42P-{5n{Mb({+ idv ^G o~sWAp Cxh zS&JkE8}'qq3R1 N5$;G0B!fk7Az&Ih.4 4$֭Y/İZlhWBG8pg |9 9![ UJ6m,o8sOHYȼً#t{V*pZ;wΛ_ssw}caakڐi9ie!M-COZQ\IP#1 *c˧&^ϱڍ'BgVdN,(@4^VtA0E6k.Xc|lKgҽӏji[M\8>\>#pBo)ɱe~0Bр>!}4V`~T/o?ϨsM#j8t/dkP┡_J$bGXB:Q}TPiؐ3BVC1Ə Y߲FK,N'u??[=}qiXl |s )Z$¢^']!omU? 0 @ʌY:Z~NyMxU:ky+hEbJǺA7[*CJ_o#2]C T/O"KUȧj|`6O3Z}srFp2h&Z`A }Ҝfь[m/u 2; AV4 Iq1d^"Ff/ S>Fc("3@8 ίSI^M#bNQJwbUVX>nM *tvZ,,&7fNuE K=z4KL]E>@Cc?v ~sT0a !DFlogY\ޏl/'׻s;M.ƎAA>~uEW'Ted%Fc}ȷdES d#"U>~oY}HFL<>RF{u3飰tPaxN+2N/'m$}BUK85>}, b$ J]6eʰڈ})Vt'RCA+TI7u'[ɕd-VDN$_sI3;?j]d?ѼHv.A.-+{iMS*ޠi+گjl -}̎_t=px9wxfvR:T6I(MC}߾>1̚^ G; 8Ņ }¦ M~3zQI.I6*Ve|(gjg^:D[Q?O/nUx?I+n W2AقacC`+"RhGg* &VO3Y+b<]2.id>ø٪^gO" uXngx򵈳]vL RVC.t{ ӊEOӎXĈZN2"d\h-5b9 :MPDX.0,?''?23Mf WQd ~ ?l/۵F_d/i:i8Ɠ[Uz/XujA+蓦(yٔϡB c@B% B7EKt25;Ł*(d??ptԉq_~V%ӳ1lKOv :V3| JFGISߣmVѳ1z{Lz3}qwm^1ȳe&Wk }*+ht@-Zb"-FhAC>R9YG:;xlVv8WY\+%Je(> {H> N8yh 2K,TLwQh6wX܅DVkFjkATD404ԣ Y$i}3sπZʸ+A9߳M ,[˺WXX_pz]:b)Ӝ\"U!+lG?/̰V34}Lm6,צzdВ~'GKM#:17zWפm=tCqH67Slk"hkCQ:E6?3qsŦL۾\5䝝P8aFȼ}&v–i&"G%[4һ/if=뇡G="W,oݨBi> sDV+|~!C|/=HۇV:z#$~hAk>kMbt8PAhMw=3Fq#7'ON1U) IQ+hf"X:V>hM{&CB_ hժhKkat͉7(;٘L77}yDE`WuN (q5QT6҅7#TYaB8,՝fq/j'Cz[/Eoݹ1OX_ͳS`$/NGDCHR@1%C`="`T:cNki&꣈unKԙJĆQfP^$-VD./Wuwԉ*"DlmqKqͧS~3Za$Õ'V ?y6vLE!6l(p;mpu{ΚzBVz. `}4-ɐlvsL/UE;nܓH;{/{Jzv^F\l[d7|Qq­pBW]ﰵiR;&w6ƃII|•8nS )4|%o pp&}rsF|m3U;\df1>Fڶt`LZLv;t6yUT\֟ T̝'ࣣ#k}^Q,bj|'bXpS/h,`thZw-I-Stcۜ .b8ʹ;٪|)(t)us)5D%Az/??svKg 6Ć뼷[F}D5 (ɜމ,vRn0ƱF;me>܂9,7m+%e+v WCanSCy8 Esio %9>[Ϧ7"AkzCk­W?:ݻ52WeǩS1m \ k>Tؕ8AZJ? P|x7cT$tlIcdHJ|@eq{I#QTft&K6#v!w/V[,oH^xJ}ʃGdSG2> 1hKC bjP=I/A.fܦHy-)V;j.vޓM@X56coxY?( -oA@ hhv&%і1W-%O{5POjRۀҭa,)t?~A18k yw(\96vp p^V9а\an4|3o `_':6OňK8H ׬`[Gg9D[cW'E01[6hN+bS.u?⽸#}SŤItf-7PxkZCb,;Khxo)o Q'q AejޭJu=qgCw]ɳ8I O_Bb@+y/M1b=؂O9APGcH.nK#p U*?g{cܤ*OK__m\v T!/ gX: z Jy?˙g4h3lUv&9gRhqDF[n9?`t@^q4ÿ[= >JQJ^J9ݜjVX.=x QɾyP:DY}xgz#!xPW$lVm0*J3e}Mr mx8m f ](_I N Nk'!oH-jKxIPCdcDT[VL]wy&JYHfj-ψ`,n2U#lIH)_XZi31 {rI|6ݑ^JVjj0 Qt G?~WqXv4s[L9A?G|Qk@6:Z@>Gik8o!_6' ._.&D\qcꃋ3lqY'{=A$H@e,>vkLI|nT+Diדut l,81-R/#C;[G Ӊ^[,~zPcIgdèIzQMF&A96M[ŏ gknp^Fo:As8VJp;uIkiAzq4מ?mwSe]{AB;W՜9Ed)+;:{s6&M~&+x\3:cMW# x^~V`᪽v[tpmވ.CLa8l}˔nhѻ.|CŶ>y_//ys=uv ,*ɪĴ$x5]Ļ`-uXqٖ}q6Rٮβwۗq?[+5Fd,^5l`ir7ػ](hOxDxN:}Pm[aۢwfK(ULTR -sQ2Qa? uwXV @rƴMt2G7^Agи !&-)XjF8,\^');wb!bE9@6(-= q7> #/d<.a[\M⬻"[`Yui[9h { AɔL<,BG\l?['_ 5hjBA93p=Pp7*TE*x(NHK1Eqetv|U&ÓcN;Xp BLYZ{ַQGL͗0i@AlPX˵j]iU_]:D"W[d.%'ug(GbŌ[1ˇAY |;U#|Q Tuk `k( RTj%7Jv@9HݹJ7ڠqZ>b]ݤmV*h]u5r}aP9\ģ2ڰԖǡJyuV*ٲJ\5εqLv|E%zgvZvz] )_2݅JjVs1٢bƓ+vŵp㳷{ֲ7.&tڊZ> 3WՐ k.)2n\kJ,HL|amײ8~H-h3|7T#8\A$Y@֞My4{&.yѧ{$^j _Hhɑ30;le=V>j8*jiA͒i@+}naz~m1=᠛B7r2?™25bߍGۃm9ܗ\$&w4* lq^S+|]OC=.Rx_HyãRIc%v+P(5x❅&k_w fs,g7)go{&߶[Ĝ!ĵ vWؿ)sC#, }t_ IfN`u'(,뱷{Ԏ—⹫xl.Vc|U}tVVKV)Z-685dCeH"s #"cۘ˥!!S8S*n}Ć:S+^o2fIif*Vz$]d3~n/<6M[6g.kfA\T#8W} 'mťKA#SiQtꇘ\tɫM 37Ut֟ko$pC`idzBE pM.Džf!{w讝mƴrQ'$})U,C*/u"= G$ +>/ų nD_>o RwUDC;phraq73Y2! dA(6a d;7g0Ԋזd jBiy݈ߥs+=uKOTɜ(2G`TQƈ7EY@"Jo6#oxK{a`1f4+&m:=4K4hkY[bʣ@\nW *(S%`$湇(+ϠlD[M} Đlt!;W~ ˪po6W -KolhAg3zQ+:F`Z&`i0z7mT=`Uf`6/CrZ6)M.=#[.jLlzYRl2]ޚ+kkm[E_ի}w~>q;v%)1g팕*u;2T-,b-JSE IMpbM5ҡiA8YgX<ȃ[w~rW9byϏ?fN:qJ36(nT!泷'yIpM}`^Qt'{9{K;EFEoϡ,IHjhh rHySd{5\,5Vm(QߢJ=y^טvIuퟋ>$Xv[ J^6@}޼sŇzJc>~z{]xvfpM-AT%h zc]H 5# DSsd(bV$8X -Fz󧩃Y JB%B:IUmZphbgcǩہjNľ\6ѥ o6u .36qs6j/vYpuN@A8v^\։8z;$%LԺuq笾s2؊煶V< qO4'&ᶅT|Ԫ3R'<$YQGr>AG!bhp|b4_1DgI1)y^k9%ͫ4et"0~R|u $6Ebrt*dZݓY?4XC{pǼwv|JS)&b(LuSPM]54S|YMm,j|Wam27LiT).s]uLq< ,<у)9/)VZf 7mA%QҀ^ BO tkFgJe S&SOH&jV|ғHV}ԻZżSp!Gjă<u?$U& %Մo|i D#.Lu{S ZՎdl idTL^w Zݽ~ ʠ~<VLXl1۔7a<ߺА'C&fySXF$u\t_.ڼvFTIJ}&^{+o 2r%2pW8R #QdKs/Ǣ*l*9:]:.T.U=k\F 5}1LJ1yTX!j(]ׁ|=(nEaRo%'Qn9Lg%LE$Zp햾lmUrTSJk%zFC-e ;3FN"*¬Yg4][U4 Trfrs D9T4Um!ppY4X qw79PM "/EJk KSKj~1B*MZIz#tN"FuA4=z_6N,Dյ+xb1oSPٙ"ai'&t4p# <{C s/j)$ /bb7wӷ^A뉬{`3.BS`;+ %wgpj2b9ҡ}5IM5r^\]c-"wo٢wb+iNebcvRSүTߕDJ[ R!kzaf/́T)Dԯ'qOf56e 1: ݍߙ5I 'O^!2Jև{yh"A*VX?pۺjn٣m  "OC skn/%ikoP/A6ށƔ9d(/E,G`>zT,P1O>"IX^ FڒFD+yYHChH^t#$Y4)4ku$ªh+4.SV:+Hvnp6Ff(#0mo" J#[ l`KA뽸th*-HAoeִ揝) :ืRDkaW6Sr$_<1yXF.{1o68 tX)B^PtDٛo -?;er\0i*?c> 79W/uA~ls9YXH3-C#\2?RI-JĀh܀1x~WA UI!TTMXaK .Tcve #q^%5rZ#vFR:X#J2$߯?g5 Zbu )/h۶^%ǩ瀿(Jhb FJR\OV#OO9у}FSKQ6YyԚb>2 Єzf{畆$."D)0 7Xsa?5OQ9@M@-҂z4$=s"k1'"i9Gz}|JL.G6>.׀vL$~ӈ ^8|dh}_bov,,VP@{6yI,U#GKyfp邰"{XX( A[VjдnUJ%8'2BYga <ҷkI2# }Gu<sۣKq?ZXbg_UdY/-:`R]cE==qGP4Ӫ*#`&Kn$SSˁ\ӹLaf -.&@i<4@:Ή%T=RM Zwbu*jE+x0 A|<\0|Cv>RDÒkC4^=0t߼$ _r`%~J=dۡy(Oh;(k ǰ&7ߌ}'6P񗘅S)Zauv/h6V3W endstream endobj 558 0 obj << /Length1 1393 /Length2 6120 /Length3 0 /Length 7065 /Filter /FlateDecode >> stream xڍt4kׯޢ(A޻> c{DDtQBK=A$z&9{ZY?~Y `8 (j< &bg7?Z"v0 $]:% 4<}PL(.)$(;?[՛2?w7 Ͽ8׺p]A1[ ١?oqW(\!Ph{ G],6Vu0G?A@z=tz(փ#!?PHl]sA?%H~UwIe @ȇ=x$ A_ ~@1 2vz~=vDp;OOׇ's"ZS|q{Ưb0meh廮cpi>"EO'MԨZ̒'Yc[x-O7r &:pIoAIm~K I@Qz{jDz'х: 9j w^ų CqHE4<6lTZ;]7CGGoLztr9%X)Ryc=2׎U[WֈAv&sxTqf)$VD92}J 7T2M5S$\&mSvU֙|E-6Q'Y;䉺%BOZ& I+0^!y)w@MCDTC)ͬ#VqI+wʋ3GZPTog[,sv'OWi{.MB4IVLF4=֮h u 'Dj$d]{0׻zC"ULQYzE£PcV&|74?cS0B4t MbSFS2/Ec.6ob`1K-"+7Ssź?\)'}dkAj ,C[mFOo?`J;-ZWօq;]4Q*[:\ѫInFYf9m]rVӣ%6FLfְ˷^=TvG[c+z٤c?O{clv6Ʒ8we3( (5n$oz9LNjݔcጉE L!@gSkR:QV_z-4vxeY|.O{ϥ0䎒 'qiώufoNf^v>ߡ*㷽 (T+ gf{@Jwj;>WFn֗"%_AbȒ䈯,xY{Xe7[ 7hd^cУ|o`ҁ5Y#kFټi} 5 =L[kIԩ9}-3j dWPr]"t{k)Jca\TmI: Y#GZbiM&c!ְ*w#]LK-7yUw&/k)`]W;Ӊl47ff|`pY!"3Gݪxg7Z*sQVD;ѾzvcnGg1a7jהR|\OE~drS9~tNR. Yo'ΟTsew+Nݰ '+jY|~GO .|#=c|3'VVno&x.ZvN'pMw&jqm'>1Z\qVWv{Uj;Zo֣22zd\eɭG1Ops !_GUdH [$~=~ Y]-}A*lRR&&cNܓ{sW5o{/f*߼DEHm9A1&835ui ІfxBTǓU/tgN;'KOI8K'7wh#q&90n?lɔM%4H$QphjzHt ǟkD^6f}0 )jc-IΪHA&97׃E$",>fG>lɫ_~ީ Lxdu ih]e4: ō "oPr<27l/M5}Y >t'Q^(>WZEx^LB&uD\-|] x蛼8Y>7cE[R-K J>Z;2D |"vE[DwH#IqץϿVQ yj _a5G_XY=:171 (i \L융KZ; R!T砱oLE?hV:%\99̍Og裟7fq&/ޗI lǝ*d@&Vt%d&_xϯQ\L܎JyrbX $Pn`?N )yng~dq{>Zs{q:r0īEQZ6wҡYnIH-9+3:Ww$cUl&2h{[.b ߨ/VwoerT`'1 %6=$7yxe:1fIh,1!H5%6r0i`ƅ/հw& Vku]Q!OR\OdfH.8B*_yiؔV x|ǝ` g{{Qq̀{P'eVr0c/Ü?EgGs :QH9i|*L 9>bއE{ݪ9XMDr|h QQ `~]VoΘ쐸6;\9t"Ѵ/'PtXÂյe .Cܳw׸<ظ{8\V/Ez@H?ukj9Ţ@K[ũt<,9唧ql?Tdm-/:KCc8=õIO;s-sI H.W]c: qr6㆙G?FbhR -zaćј-{L9L|Qǂk/E"U.3٥>-w5119n&EØ8k<Ԕ{Z6Xyf?vL;~k\ن<) }Yc@Z{|捫} ل, zO4:77;RQEgQOQ8"P?^Ze[WI5"$/~\OpQ|XgӝVc+8M3y)Y麧w%3]󄡳;q#I(bl|@dw5cE-7g¼eSZTf㫷} 7QK"U.jfWh((lfu+ʉ{M׼wDER}. 0ŧ"xGK[zV/f6;/4rBTu~<_?QI{b?D"n~)%D[l#}6יDK{BgBR 1bdW-ste}nNAaZSՄ?$(gYB9nHǟ&P7>qE52hOB+}MK]LnnDHҷNY'Sم ϼzk9=vWt5n4[M6>CD/9juPRyקU:jg$Dtv|YB;%਽eO\FwsQ_nA2֓t񛇢9<wC3ҧ\ny[ņ@"[@Hs'CA./E/K8/}U\3,+?uK$Nߡw8O\Tj5dfzgSs.^+XY`a0LAW:&Z[F겏6=\Ę{ˎ%g(w3ҕײ_EAΪ70LeT]>/mMJم)0RFn% >9miTqc\  !rT#"fphh]JP׹*GVLb[:8g`ETqGҡA6 ?&ە X SD+WV#TnlV%#c(HVx?:!9c qj2jIe$c.7tL @w)Ϟ}M‚2]v-&|-颋|V?dݽP XU(SG˲RTr1.㢮m$m7h@kSD$> CG2{` v,h'6ayiOJ?ʲL~qb4Gʶ[:ꋕ9"-GZZ$f6kJJYX4E,vboƓ_> stream xڍP҆ -Hpaww 6Bp܂e9{-y{z{UCM,jbguf@l dCVpǎL qtW#j;ȹX@ sH]-LYrv'djq;{G 3s}@gLr3 jq0ރ!6;jvgIA'`lqbs4gY8T!NGW `ߥ S-rٙ:!W1u ;@MVd+X&߇$s1laak0Xݝ`[?Nv` kk)Q¿s2vwvbqF?Ҽ }s`rllC&abϪak;Մ ܼnl??̯5xL_ˀXB^!{9]!gG׿K `1E'b޿;#@a&vyŬbZrrҌ_; @@67'y{O2ou2ښx*SߝAwE~i] 'y\W~` k#^u6۽N Ղ5!&.6+ ~Q[>gel$e1Qp66s[X[B,xv ^'iqz?]m%mL@;:=m  9.0sD^8"nx;Ux_ׁ!? `5/Q1ɿ` _4_B"k]o?6!__*__R^u+222\2\2AW4v7q#/[֊1oq G^"jmI ]D-vDݭa4YiW3pÙm2yO` 8)wu}0d51=iVv)2Mp=/-@\}Se~@xȂ 3Î !Q-EtzS\d(Dj.sc` b=o4{B{\i^Ix:#5fU8$?v.psd-bcݾJ,ok%\ vV3ܪ'LlbKbb ~(,ur<":ЦfC-o~ ` YyEARjT}x(sW(a0Ew"&/sM{T=wr3vdT b::$S~֌pϒQ7ށ/)5y7|Q|t(wxLc'98Fh(@&G0~R֒`; MWASD=sL2oG- N$c!UxT"T_-Cr>L2<17ov )R1U{u)J'Q ;1]mjk#RE[q׶Z_U>jDvDq;86 MYN/JLYt#r( bܑ"tkf}W{N`8sDŽz$Q]NE$G<)BC6z<49=]G_1KYfHz~ΔI =\gfpA%x!$uv`@e/Mτw ݼHCꛧ3G˫?{+#S]MgeHc&W- =><U}-mCr7bc],j?]acat&8?ڈ;q,\DM EGefFBݱx!,w-#/ËID-X'tۡu9CǴ'k؉vrϴA~śe3htf: PQJpt}3P_Ll"ow=n{̽f])bqݷ5w/:QJ5u1)3]Q 8Y>`Ԝ7|i>!yO8۹^heӽݙ5=MT+ߗ3wSͺ4 @7^x.+HN6ffMc< m Q .j)9|r!]5+06 & Nz[!W uHn".jLD5ZOm0x[|>Ԣ#M`+w .B ~DdfcLVNڨUU4xPd2LjB[Ĥ!-phʗ/PؿTjB]ytRCp'|T.w”P "HJ__/HFGt~YN\hנ!NKI:c[b vJϹV+%p"I`ӈXb #kjEp*e5k5|#t P=;!$}T~Y׳GQҵ+.-yDЍEXCwYr$UD=mz_vG~z,n k8Jc51T \qw 1U??hY[gӀqhJHd ;;kiݖʪy!R?> "+ruh  +xJ2Uj2䡠,ct@-x)cʽ- TFL!jnE.G0b32μoOhkL~{e ޒb,NpL(ˑ臇{LF,{8WeY;ǴݥJpW3Fz^S~\;\t1M7Z;Hv2ȫ_DYwJ," Y%Uyq5!ۺ7 \"z,_A-w<:$iY o6Sql<)PjOS $XY{r!hW,LO_euvp;S@&A#CF& fwze|nh9)ە7\8&=9fo݌<3sN7ǥcpQFl)@ik;׷Wocm$,Vu7K^WLAK000˙+<5t9GMS¦ n-I,~[ 0A$PŽxǍz 6GDqלprF|fCZ?5 'rW0NZz1Qu{|2?Q燝:֏Lc_䥏 ։JoWC4L.V}` y,BKU-txJO;e3>xsG7DR#⠜e 4vc+?hcWWdT\=m>:L t>MOs t@|/q -W SOo;;""kM&-\1ա¾ &}de@])_00kld1e9p~bK!GXkF*b\V6n*g<ƨ[Y } BLA/zL>oGL6qG2]]+Rh*K+ m";bg6]@}n:Λ.)GW? !Ln^no5Vf~ND֟6]:|m7o>9Sf+}=YJ/i(ttߢ{1aP?Hl_% mRa:ջh|-N\6eqf'Q^ [;||; ?|{/G˩@u{n/t]5%i\BF9)Mi>߼˵I/_ e _=sa50b0! 1n3H9Eywmᕞא&TΡdcyMHH=Ǘ^$ JH(>ZXT>\эetvz#уYMՍkʮ;Cǻ~C~˳i%ٕ }59LRI%Q}L:_ i.%Wh5]Ӫ3WY21其mrYjb*8F_EdJ*XE /=1t]NjLE`1uQ' &A*C9ZjM&ډ[\gڭ6.Iai0Lٚ[j+{KB(t"13cߎ-HYQ-\ JZ=.6FfR p=0c`,75OIsҮ1~jQ‚5rBY[{˼r.t[lyY@իM6Cko"i^;£i#CHH|#=э88p I>pL*sm(m<^ЉFB@eeKbdVJrEm/, Lط@,13JXFfIbYb=֜qY=Vܖ/ܮ&0\SU77b2 $"[̊Whg },F?uJˍh:¨Dϼ(Xv2%dZ5t/ 7lZ8~hRzڒ;+׿ A[j' }~|r NE F~4 RlE9 c[/򾘩(hg(=2 Xz:=c[N܇Hf:vqu9cƧh͔{CcE))4P# 3fp%>N`jd1(vIb,A7w~8K(ﶀM%2gYFXnB$ O4rb:Tv_ԓ =_U{)6% [,=T^<ÿR% ?aϒ|) 0YFvs!°s4cY+M ]TFiXd2:*WꈌC3^]-Tnv;t,\C06XDCney [ƄTǤ(rh.^Dɇ=]QȺ(!ϴW m.1LjBP:3 DՏ1-e$|M-po7xs%NS0i46X }ZMSިIgsڛRĄE$i_)V[Agb _fnCzo2Eb(l+Ӟ19ivDMc6j`&Kl -Vy`ͅ]SwN?N^9e XX!bDj ;+C(~%%$9+doV7TIP2SG.~Tu^Ng J%[784 {12L%YT;p,1Xi kTIwH-:]+ ]~;WW_|xpgM<62Gֶ]([^]'S;m3tS;nZ*N-tJ5Oڑ؄-n>̺23 ra!L;dvnnVl!եrrh]<%HA× F: 6׉P"i]?fϜJK\ģ)S7嬡qm$V]_?\ȁ {k+axI[/hUN#s/mr6DÈi-ZR MO .>!*qv;e:S^}l}$o@U7Ό+:5;+cGe[e}1|za@5UWvE'q~SS]hlsւ uL dOOs6Ϲ?vo,}5:GZ@G"pẂnu5aˁr] ٻRM#t/X?#voү)պA8Ȅ g\be!=CYT0A))EP$OKvwjIk&m?l c(K~s '6Vt(Knŧ*dΜ)#φoceja;|bLGA L~!! I0[0;*ſ_yP>$p;.mSi2+7XڂrQ@\ ӷ|W7>{gDp#h:|[Ɗ,2,}dyl,#nz!:IB"՞96Vݺe4;];d/Y;N4\Zƣp%:u;壬R[Kig4ƴ: (fj6ܺ⻄aֺE0?.#;;7G.|td5x7s΀K`/ՐKQ_̡~O A*>5A+ua*O[߄fjeLsڱVSbEYnAJ<MQ#+, @8|ۿK*N+kERF{>ŔS룺D٣$+R9XiVBFp<8kx!Y}ٍbOr⹞vTKL=y[rIr"4ٓ'Lj=V1x'$?dKwP*_/aY GGǛ@,cȠK=󥺵}+$up (˯'1]z+&+G̘ X:blNFKyFv7WN*?Y?"x*9Df3h&w8]A? fnDH4TZ 9 E/{o̡bsNGLnIn2tzˊ~tgڷ4sVj+tGbZG|wxjFp}-1|8; 'lͨ9қ9 㗟䧔ۓ2{HɢasoЗXb*. ›G$".*ش߯š(Ji7Hɾ"MZ<;myG=|8-){nZIҩ .fp)m8[7~'3w%8e !bwx>H;:l2'I܎hX$\k>#zCN (+#t"l%R4ú;g)c8tfSbמbb]h>3rcMT395aw4:49,STu:RX%7 rܗ@J˒BG`ܤ%hh?;)Ai\DGZֲku>pwqO Rb_a(]O6|.@ $n"Z} Jcfo0O$)XO-*@l/:Hu0L8e`mK0R7e|}^3x0M|ksP}T)ZJB˥ Wo%dEz$gRV"RܙuX~{8 `꬈{Y֐YV2!(@ɏdEmBox37g p$uhd$5';qk!ɭT%]7m~K@cpԲWZՀCEVYgRG`S϶;p/stZW3ck&R2jO+P$ځ,pzk֙a'5q;'P;Vi[](Eo{Jw.N)u\ :[Dz+E}n*#z+?:9:X/k6i~K)=_Iىx.ԚU.Qn3 IB /:>bO&&Tv6n$p(S&|6/A{+kcitb˦%Eu 9¤RAb2_5ovQ}?Y'Smz1A"u/"/Yx䛌W{B%똌qF3bD`r<_ph:q_P. >jǦw6";,_:>. wH ?b\=ؘJ}ɂj1UF^6i!њo؅poomt#P^@]K?`՚=^<ʶmJR4<%U_ԅ a>bF3~k.j&Ӊs]?U6q|H ~Cj)Nf1Ӕ;n-J vg:&(taЩg޳w>?ItI5ka XTh\2 s .ەci (F`}(ahpn q([%!~#8G\/BMn`N7#ZN^^4n$sks.;Nh= ?hh޵ѡ~ 2X+Il͌ x+FF=G6)R@ȋYoO8+"%˻ΒC`eWn%fZݣRfX%NM<Co6wuE0nB[3&˩ }[(A>ŤzCbvp&(1HbDxF??$ endstream endobj 562 0 obj << /Length1 2652 /Length2 17540 /Length3 0 /Length 19072 /Filter /FlateDecode >> stream xڌuX].LwwFMF[$KB;lx=ǹ.53Z? U 1K'sȝ] `gbegDѴuw h]l@H2I3w p r 8k*4(@@7$ 'gW[kwp `p18@jka(-N@wqAYˋэZenP]=ߴfȱ"4mlpr2s[ |d t4*@пm OyߎlA:lfalYliEVwowf򷡙9_ɛf`afjf%o7BK,% w7Iں-a '/le MÙM dXGf t𰳳 t-l~qK[ `|gkAs3]=V/BXŹֶ ?bտ1x \m!?#Y:|lʚrbLG-. cdprqx9wfI/r +'Y_&l#(;<_ϻ#+9I{88˂& 3G[؀$JNUߦ:ʹE d xVnmݤm6Tur}X8۔t _2nK/FY8YDN^;x8yx~zkl 'w;+~xlMIA6;MA\6?AGP p?8#hA6?Ot p<4stRN037 [p,ȹ9cdf!؅Ff@ eG?<4-qtib,8WK'3׿,YIerb\Ih%hȈ$bx>/{NVx,p,(hƷʂ(_dJ|=գ҈p $?pQ#&,FT9g{ "&7;%n,<@'|r]݉e:7/8!pnNW'5hө \ndnI:9ZȕO =їZ*)=:v#b%<1&8ih|\b#37x(wF,kvzԔj&_9-^DuĢN̄lؗWҼM>"=ϥ~w@C Ҕ׮<2#úBHΘ*3Mg(lHIkwp|1Nݦ[*4?ګhP`z_{29s(DZ(ChrrpbFXMk{մU e`F^ Qzd*$&it8D1tC3M'u˗0o㳖\֏Yޟ,>+B@Ekb%ߛF963G] ^4!UA$h1H/҈t{< IϺ\A;Xa-]+9h5rFGNBi=Z7lF34n3_(*GnJ#Xv7|=x:($k%~ m ͨ+!@i9y`Hק|T3PDQ!ٶ m ξUA辷Q]xnݻ(iVYs㫘[Y涱W&$ L4ޯ!ϴ)^_Vй,!u:=H #&'*@ۂm#U~e6uz=&}r( kTޕjX|lwZVz$G4*΍*UЪq&`lru>}Y=>L4X^,H(cʍF0%V-rȩ%b~S(73#T|Lz!泲z*fsՁzA>ɒ#d,am.ì)T|efr"Z>B0h2:הƅepTG"q@2.絮eBo73UVڳʼ rYFY}p =.zZ$>bik%LyjUoȩ^ūZ,j#/}Yq fx'o)]_n_wJ.Xo6F|%m2rzНU>Գ\wp"J&QЛ틙)2ba'M6𰒅 l`Bg|bܜDρEc^kD2HST &gФv%nXTp ^SGJv+m BEUHBP$Y/ke^TCI'&"zNN7P *cnӲbS=cޯJuZ" bvt%0bw3 'l~xs㌡!2eEHp'Z\C=(F ^+ 'CO,t%TY"~Ʊxa/2x1=f@ܶI]פD ÃlR_\U糹o{sL-]0c篝m=soH~P<똝۫DN*)3O=*̖z:b9Ϙ5yb7Q(L[g^?3E G/Im6`b~ !+LZnʉ9Z5c)TZ'@c6"Р$6FḒi @[=qb~@cHÝٲk1is["堧ƻNfd'U;}@eJaj#ܰ'lė5W:/xjf/9O~3mę $XEjRr(0\9"U#CǯCq~Z75 }A_)cg)h D> Y9&i|BBTcdg*NFF|q$׻Sn9?e04=UW _NpxGZ~'43L?,Αs_yrAv)5ϱY(rzd/u(1&<^Xk}hs7 y:.*ր0:>vmz!Vj#k$R'OkD yLΠym^_ؒR QLܬk-<$`G|*~' m\^LX_ I#OWH" ([fj0㢜sPsOx @]2+HYH',A _0zvOwd=k٢1,7o{#8$I tdο#!;W~׼:&Elw[j)Jmqj]8mY9r7 HAVLacP2wu-u\qJ!Őrbf+s r(3K3|UþA- \uVcTGꓗDa T 4ᷚ/g?;KH3v;*_vDt (r%U\IVB1xr^@ddKPeSd KjrZFLũQ,-*qS,Kķ_ME7PcZ ^ !?puO4c Ɠ7IA݂&a8lI>RB`i*POe,Ӂ˘mi\b>U5(UZY,Ѿg89>v"eBJ(83 )l.~}w~ؼ'zo{, I6q(:7Ky[r&bǑWX?mq xϜ!cZoir\ |5ʵ_bTg)|${Nc "p!O9#۔_W""F]g΀? Ws?4]EK@{%=5Kea^5Wh%;(Tpv|1W>s͗.S/0Ӌ)GDs{HcbiZdEkzڊ[2 BY祲L&0g'gz 4DZ:()3'}8?t0 *}w'd䂥Ǎ'Yѵ4$(fdv{}8ңӡ2"_R$z}2u0${<>v8~瓬X8 tJxkȂ}? U[ =[5$q`'_A6Fz2 ?vGNkw5KQܖ e볩^r:sCz',/$(o;ұ&E\o_rqBuF4K14Jb {8e&H߼BLj\)/J* GP-ESj#vȰiyXMȩEھXVzn7| 0QH3g~ʚ8ZNѷ^j}ayM lWfJ^e';m?7"# sZ-Q?nQjmDQ'+C[z4jwdn(73}<ѥ紺^YZ͂<܃VFc)mM1(Cy>,6+ yXE_h,\.)" z7B#T*o;upEY)=AoR!ř$tH*K2t$޻5:!2INw>Ĭ.ae2/Ӽ|5GL'g[}X4DS3dlB{gp~ 'љoWyTyqlmƥVxYG-O.13in4$F~6.^< Ozfs; g1$|[gJz?KԶz4S,JCb sRFWқ3 Zߗ| [=ੲ(V{^nKT쥞$g"cņ&^)ŮyDWB}`ITnTrU5,- HqTW {LFM[|[Y z,ìCdEXaFY1Icx %Z*3LeW;?vl! ]n'?"6$r|QpqeȟḷB#"w% <ޜ嘽FtD7`%Uljsxdt +mEO<!~>þ&d)׋C0JoT+w$%a*:3RN!.|0=Ǹ.>>Z$bxOk @ 6~?|pk`M>p=!2@&{ɶf޻U~-9L&y(@0T ^h~p=̖qC禸hF6 Ð[^ݔl84m$x\o|-j(B5bWyP]'Rvzy{t XTW{g~"[Ӵ'o4'W tU{O;4x2]TP*k$@zi' L%]n?y }=}ŐT1;Ɋ4:~ Z7p6H-}Oh6fJ\S687>}yEH {B}:ņJ$&:݆ǰHPMVRidf2;)iX{k* i :P,\FQC]>F}w%} *]Dt.2JfTȳK?qh 7`XHqA^r"$)K<#=o/ȋ qg{At0^Aze[ui<iQ2$BF17ZCJUOce.J4+TZq˖2uoR'Ҽ1RJӪsp-{ 9|P%?Ɖʹމׁ̮–l{Zz8\7鴡QG }Ju'[h~nmsi8ͲQjr(僨7Cb*ƪxF&C7 [ P)@2m ,eI;7ʘ߶<PH&`?S-r 72,ֱL}34]i:o$Mϡ%l3rDRuZCb|a^ʈ"reoP0ɑz`p1?1 ^ Dz#p;aRD(5$6Sh7WzjȲp*a_ (w{* e`QZLqsh%t$+49gkbI,D+^kōyx%y&@Y,$ Eqg+J)պ4ȶ:Yy{P"r!hl@0@*{?.J8sw‡̤ }MCox/u/!Ŗn6ێn>J3-F*3N7Ji#{o<͔J#qu_ך6ŅnT}fDѩ _ԡHTq {ủ,̱ekIͼM{Bi.a#=7'(|HT({UlE/ jTNJ⩚.&H×Ħ5ЍMW?~HBcnVA#8NuS`OoMZo&X50`$[-3Lu)_0^'NMGu@Bw7nw WA/7.|3*xwYY=4t͓ѿ1+}ءKHCTtq~/F3ΞNΨOflpCY7˩qح$_x3w^tT/51S{?WFY(ktKQN`q[GO>\`m0X wKC$s3taSn澇k)܃l$πEŗߒyK*j \B]H^]< UIFi:6 qY΋pOԆ"m V Vj4r2o!>=wKd~95ysӻZpiZ% $dzGMp0Ǣ =()Y 02S`FchL1ˡ,u@Ex%tL?ᓟS cdk0Y J YY 7HDkpC%vX{F[K#b^.Ѧ@w22aSz хNτ]Z*iG#91:ttx2Ƚdzo֣+SKn5*88Bq ja/sŬ B]h_mY)Yg`m- ڛN!߲#7`GdTWDCn> !{\c5ZO.0o4qcFgrJ8h}{c_=}a_Vsϓ鞪zDs~RP^ߓx#T|gw=%SC?je'M9>_'{b?ٯٴ_&̑vޔq.hn{|h7Gl vqr(4x43 gx22~R wxJv&WD)Yq !pا>]Sw}YR:v@r/g3h6bTگ"ܟ*Z#Ki>&JDCy?<]@Li=K6Xq·"~[9YNhPr}S glBsX[- 'N!7+>gvVf Dpwϣߗ ɝ8*k*A c!qY9'qvhpn3K;cϧM7o~)ܵ9y 1Y[/PwFSПPvLlIKU?,XMRI[mB:Z6@ GmU4'5t>+-vsοWP<'/7Kb7c{1h~pT񈥙WS16.vSymMK.ɳ-D=p=DT[s2,5Y-obbܝ`q$4,4^׍HfJ'7HmWwq= zxzE-=ްSa{' 56םMW7EbϊwC,Zt3F'O9PC78 *x*o!odq—Q}J{ϧ"5 ї|I"'fÏ{H/"*Z\/=piY,{f.,9yѤ0(F箃 Ѐ}M$$$U b(& hd)'we;tLݡQҐ|N3,|e|(X ˏiq9, 7x1] _ /|_*1slPGY9:w?36?n\ - j+LNSxA$%bjccqR|>2SH"T.KqcnB+6C@,|Fۨp:m:@+1(0QFSԞ< fYy$z:Î(MjS +4M,t]oDְ G%n?{Ý;?F-UWW ,'1L)Td]q_$bґO` !6}sL/`pEh2P~Pi6+wsD_Z:YYSe϶WLT*U܌'qH\%A:P1 X! u<{OY^gZ-1l$+biU14!TDǃ׈ ڤy|{OwÎwvm<#mUF;`~@TQngܼ V[`3jݫv~8l,լ[;ڈ4/nK].G &YHNܑ.gڷ ߬ a>l9>ymvdhڄzW|;҈Ił0gglRF%S!\Iemf*&,Y!Y]xy#9b#lN5 eS 봎}nIɐ$gweӲHl^_ ڈbŗT7Pܞq\ 秦TBI& (*$YW[$t9JCM69%oU#S'5d5z_-H:x6Ha]ml5:Js37Pprn Zk|t0dQt>qd0W#*F.ՄL9C657Q`o)вLK*@"eXV,1M4Yjsr~q8x~`&EMw8$crqFycT~*]*-ᑃŹM,?Lzѭ7a;4~sɆqhxXB~TF&qiՋoyLjv9d,#=7#u\bGP4h4ꥷAeh'7oH/ k= yzp$vg8"r^%ݫDa[ISbP̛Pm#=JQd8¿S(ǫORq@!ui`k\q ¸5X'̔nI}fGW^ğYӽJ_-eu GC`[hO5ss]{e+M5q- *-άyG>-*͈mDMS=wuNUpCgؓm=![<V t]2#=$XEW\:{pw,pxC;WA_D[*B{[0c QB.]`-. /Et9ʋdd8u %=yi+\4Ҟ{! L v_ެ 2yٺ {01p(7A_QOY\ =ܿȊf錥t–|v}P ~"@g7#/1H{Cg SgEyoUqQШ**}x_yA#gGx&^P'K=ǀYJ08Io|8}BQ=] LCÌ4s;^際Dfc?4~)"MS(J: wD %rw{cTi1Ɯd8s&6;[j5' [XC%R):ۻӭ_T"O%#8nP >%OU aB{ Oz,vØw?smɊDTKH)&qC{tBE+:OQO 70)9c)NE0X,]2Fge)t7ӐD%kqP5]!. ԭ`|GUp擲1[d&ۺ!kX0@ҔˡR^ixlmIi4 I:S͓~&K>diM'ѷ&vʬ$"m^ <,x T0RHk*&<9C ]'tOV, sl'l VfugP##&]sdt?{bÉ6nkov헯[Mf,>í[ۧ};t՞d/s=b2)C'`V0;dP<~r<_XD6B4ӳF2rp|#nvC~'Zv7YxNd؈K\)q ySrYxf|%3qk3;Gb1<Ŭak~kZ# EN:|)T.e&kŠ*.z'}hĘ']3nv"akB-`,.E[ $]o$y0<^Ӎ`@Y2A:4t%igq45Bm: F7J˧FOEx:+yWB;ScƎRZqJ2:ynʒZtxh(P EVI&~6?Ryc̭FF;/3dMվߡzd=e''BZ:~JisC]6^9QY3md0`kQׂi"]^U{<58}i\. vbh&3 0~ !FLaTJƲLk˲@4T'["ӂ-r "J%HZ9ݔvpv1(yCzOz_ܔtFq9h_wGEW^U,\j=~5npbۊj'ӟThׄ?$k07| S?5/(MՌ?,jH4l[ j$\}xiIYsz!dHd/ewW+ZDNŰ*Ji`Hۊ{V+BS*Ii[56͸Q@ClVϽXr_@ ]IQZVOaLx㜱2h æjô;MMTfc8b1/HImPd'Z=h;"ă3W7&mˁMتEb_|~SP1@hF܊:`Jb2 |⿐̓-+fkR^TLyM'%,)/]Cp ` !p @z^1ptai/ "+s}d?d9pLgm$ݢQe$=᭱v (*v+d7Z6kd6Խ$hu#$}.tD0p {M?JJ58M1TrD}oKu@0bo#mJSR[٢Z, `/b|6D#1:683Q5U#ӕoV0t˝)Po)7*@3PνNgݬm!F_t_j+gɼo0PXO\gi&m,hϪGkFo=A1YCkWHpCvU!HWS_SA8QeC=-0@kTGG~tMμTkO"+W/?Ԅ 2H|%{v1shƐҷkϪ_"uxgP`껝`[z`Wۚ6OMIꫠxͅVDL_C|m2L> Rb1r\,;lchqۗYR]:'u6^!q^~! a`3Ш\|,Ү[߲aR~gl=N!SzqZN/N)ܫ~GaB:;/+p& a:F XOe)~\"Ldl`A:ayJ-n[YŘ&P=ttw) {[-ݑ=D=*c4QnFcbԩ63N8IJpS'ZX53nGL^֔\d|ǐwGז:rjs O4U &Y 'r`=N'oVz^-kYJr3Fdٝwjhg| Sőr+G PҌ| va~2xir<3&ƭJ1bm4g&R30v%3®(je V> stream xڍwTk-H&]JH"B EHtT.7M"E@?߽kݻVgf̳gfYag3䗇 l*8_H(P64"@0; Nn E`B(" 4ƦBc8@ $@@R A "bWDz#ahL!IIqy( S r"0(_)dhW)AAOOO JP~Q\ `;' ` 00„!P$S`uki@H@t%`+ `P ! gA遲*~(0F `ο8 Ji2pq(_S!`L߽ }!vh@]anPu??6{( %P7 +S Ѐ젘"_ @#ݡ~P{?1f_g0/9~B?,1A=bA%:Z(TP@x|ń¢BIq ii[@?':y\T wflPƼ kwmenH/ 0HCY W HDnO#a(CڢI C(د'_/Ft`'SoT_H7a¢_!J!P #И$5S a/ѿ҂ݑH~SoC^P0,XpV!Oɿ6k&uкMRJӗ7U:2glˢ%-KZKcEa?zO _{Hfckxxzܫ&ԺBΜHOoںi̶5 A4Ov7R4tu#T!{EJ|wZgGaf[Xi(-sz_\i5(,ذO%HK3gێ7I\ߣ7#,K25(iTD55 H&_Q{/X⤸*E}? moS%ǽVD-)0&O1 C`ɴ#AM\Ouo`?S?Kefs&PnRQj\!+t1+D({.q/w+ޭ~^څ^.*TF}_fz/VF{99w^al%߲Wn Htӊ> }-V$l'}_`=ZR17.Cbއ;,ϣ[ LlNUtPVN QZ7τ@׫/&5,mӗ"^%InD[Wf_S9I_rob;ykU B&Ur %)*㔷Ompng$h01&I 1! V|^b,Q 74d|3yxG%6lT ^mJDh 6Yf [b 3PʘKj"9yZr`@6TI?AcX+OJ/ϛ+7 kRi;.㯞e7C%:Z5e,Gm|[2?H ;*ˑʙN_7/Q>ʃY^R2/JJ:rF`ܣ), z|'4X|qoLA!e!qO^q?p^C01'Yi2݊ŇIM6UOLu?Iw<^+ukETDOHA+_L{ Q#Nt*SylWvhO@T#ΟLX :mo;+c}޿gLI['PH~NG^u@CF`;օ/f{-?(J.Zz͝ f\(u1A\ N l@C`f߯]Ia&yV f"O' $b 6 }\b9jcO{dn?Slܴ ~ץ#"P7l*3qI;8,o(;.or3 ٴ`KfL.|QZ${;4Vd͙G19Xn*X\ zI>'eVr&g/9*ϗeԸ&]<ͫpyt8uT^}Xw A_3||%]id\^|)z5&muMKU"Gjd14ѻ}wNE;X,؇0fu=B`S/lSIQ%?s*⧡R+t:99}pL^PQzT)Fl:,0v"~eS KF8$dK%g .oa5=Fj׫.:fT?5;6 nf<n\|'.ɯCgu)~Un|;Aŭ;Y[tB9 V4?OTg?D9=lT,?ON8F@Af،Θ8^1//&tS=kHڷr,eMhLȿ۽Ϲ龚}ANU{dSȍV* E Adq]o+Vёz˖ECukWT=Bu0_$?.7VD|_ #g)5"&Ffʔ,%5[qhoq$ل3e`j>Fj`՛n-HhQc\)`7k.d^CnIJ!Bxfn8NL6% ."$Tf]%b|:FSCPT mY:䨩;bj-&)H7^>lLv82;{iIQ\Sgn4Cga!W"%[*sdŊ2EMe(/7.׍yX_,8 q9&-YL,I-ngpK/%)ViN\d*1XZ\4 ~1;IhlNyiE֪o汑 r9Ux^朘́gKT:qrt 9ǵ =Nqwa gIS&m@K' <: ~j~hb]V]w/!@Z17A IvtȃѥYEFsϤ-8MCtdR48<]-;%}1q$=ϦyF񱱙ڱs%%U3hF[4I' Fu;`jrG9 :T>͂Tؼ'lAZ]Vg?;3D]m6G}9#FNt}i[il#iͧSk݌ag6u]ؽK9:;cڝ'ȅXoU k<?)8Nk]{HC i J+8e¿#SĥlI 0=_ t}<Ǒ,>0"1" i;롑+{9Jw:sxoXIbUGvӒ-)fYj{gZ)8?[cGny=5]I˹*J&J xâBx}U9d]i#e#:2vsw׵AUyҶBSe.ﰄ>MWs~3.0En]C(_`CΘ} J"$ke(e(D)=6' &R6t:Œ)HvFDos?z;Ӆ-֗C7ky:Fo5[0U铯CI7Wzo^4~Rout*T}|_?V^A %o4‹ ޛq(Оki)CX|g,C ~;ر0Bh(^IPG\Y+xN*VA.lYrQSxz6:\ХKT). (j[gh{*y/iRz6Fg]6Iy7G/mmdTť?_F{ \Y{xL'?B)r~U8a|.gf Cђ/5mibT'=]]ю9:NK9z a&)̉|E'XGUEm HLַ[cȻv=:/d~-+H7QJb c[èy#IIYxAJcnop^-[]цNqBvgZz$̂i&8>mzj[c ^vx# 5;4Il_Qf^^j?܈Sy^ DwlX"2\Ř}1cN; 6=}vm-6 FM{F3R}o>-|/}=%"VɇQ@j?lsBS T vrņӻ6l0uA!yFu6&dZjp[ O rGoгl.L#Ɣ<)Ѝs !ОE~ҼX3b9H8|V>vt{4yŏgKnzF'ޑ*)em@϶+<Y6~gy)(dú$W=q06 ~w BЅ<7ZS37x,TO5 OaUk1$?D˹,PmApŖ:V|}*<;)\7XQk«W꺽r*t"Dq7y2fp{%&nȝXn~ *&v$VJZ?sul4!zaZ+CWa*hOO1D4ȸ ;[]M3uo{8I׺5x΄U]Moz ßSS]Y-NI,mvr16n`/ i,ˢu]s=2rB>HtN}b:u!hwt;-=^)}B-mȞ%[ KM$UGR[$[*L3 dg!ڍ)?yYĩ~0%+B CJl=20*t>=?(7%8Z\9y@7ʃ0jJNGY(=6Vv묭 |x,d!K<*?{0ϊRZ ?տn~X*כMEJl(0Z]NdMaѭ7~Lf˜c4gՇ ?;Z R:7?kߊ7$m{e+> stream xڍxT}?""@%  )% %HIR ݈yy߳ssu}v΢oįF8@Tp4?P@Hcd  C08)"أ1=4=`(&  I@J=`@ؕ>H3GmPp {8@ qDF .ig4]RPK %@:rhg!AzB_%t J `;CQ h/{$`P˜x$` sRK9_Xr6np( Azho4hC!0PFwU=?@H;%~( *p G~ EB@+p4Cy@4` cN4@THBLL<@A΂C~ ØGL#AHH y"`( p8A!1GBVBB^z0 |{ĂJJPQ K @@\\O?FpG@"0?6܀FE` pD@7y ~JH-KۻAa>40|@cvCAZhR =fGN  T> rKC({c%$_2\1w 3"fWB!0s1 x8@P@cL$޿X!0o_sAc#;Y4¤mxC@ST˛ֳ*/!ťHQ4K?gm Gvr3%cS ٨XϿjGmXJ', X,lKqH4c +иS>+Vq?y.rU)VNAGɒ=GGـP=Q*II`+p Xi'p1ے'Q礫|GzLv!jA"Ƥ(gl`".jfnMܵBS} PQ3،Du AߗWb0fAGO) zv },.KꁖMo6o8@3Q'eto'6h|$3QCWkM#:l' sq[դ,%fFYMEHrɦ7to[H>Q %p/aZKFABFn(ƓV1q&y (onlW˩IT>ZQihKQacE㺯9 5g+>0Y1jLV;?9pPc +Nj6+}2n=nGv~p?A:nY2s扄JNai2Du!Sp,gzU'+d5j'])5|A7 BT\x4{amA9D 7bQx#YEٜ$YԳjyYޕe?S2h ny*d(;OeQfS:864mKkҽf3( 꾮\SP]}G?!!=]w#VM3̍z; q='zjYMtkv䖒y=id􁨀5d|$Q(㵚zˆ&=ZBOn'8:r!Sv?^KO_VLܞ 8;vT:YX1?HӋ? [yyUOfg xYtfc:8VXpwOg6'"ZBl8b֎RWPMaam3X׺쉎^ώ,QJo\z`E()ʐyҍWGZYPX EL>è߸*Vj'L閄`}ufG(:`5M/S6:a_a})7Gw΅%9%^Ezvn}H0c1p?. )vN2uwsY•Ї,N=]^zB<0 ~9WMI=e:uH,vPmI#w[ʽ0뮵zX =oq 134nO*-/= Ս (g_Ggj|l֚?>N(wzd3RyVC̕| )qHI ڨ?,ڜ +"IY=Mŀ-ך.E=O#63B Wna-X1$[0PݒtkTa>/(?y%8!?J(ٛI:;ӂ'L;'7/!J[jbDx9u\1x7VL'-Fh92Q. sld.X8K :hRÿ kwY7E)`OcIHeϽ>Ho)5~d%FgMаa\+,`o԰N(ڗHI|ca;Z3u 8~q<5vkڲ.S9h9yƃY𵋏qFlpW[%GEμmθ!{e8Ri!P9'-VgDL/rdRi.¥dO%Y6j7.LW˛"pqaE".(xF#ã"z98[>".ZTM۾N,<X\?^  #hy8}uPLEGܩ&6z|̍f?LdN+ZhRb[ae _u{Tm18w s-+9,.KSVtQTC}o曦|NPw+{Q=VB| IrwT)+^7䓍td5޾!ך!3=K%a"G"q{BSWvV'i=Oܷ'#wj&[u'i/k|=ܲQ_YH_7 w|\08JC4lq$z~p帿uLL~&*C[s\Z2B_;2aQ2I_S+0 l 307 奢 X tA/!SnZkۃm@eEfl*y .2Oe/nUڒ;MtP\F ŷ c#Fo>2;^i_dֺX@S5ܦ;5̏?UUg$ЖsdqgTWp ;A3 _"Pc|.ϯdY޻@ èͮYM7^$7=~&/$EL{/8ܓy~z{<^:.J:d+XŶȠUBLگKd{޺XגÏDe5s}fdtϞhs1=qe}ȵG }5:R_$WZn:"lcHSI(z]+'B?!fW}_njc]a_]咅:0nEϯ+b,%jTuCSz9C[Y8z.6.IާAd˺®yGMq۵KǁZsf~Y: "r%:?$(<&2<+J7{չ0”ˣOgrwBs9h5_)-b2c( Z FhZ/M|,4;3(JvgS!u UIћiݹjX4B014y JWE@w?0ƭ`ݝo-qT`zO'?z!)YU_!hG]I$Y39%+Fߏ;R1+IxG&raQx:V#4v!Tk:5lw}Uu7IwWoZG:tܾj.;J!E3vVYdUGi,ѓgIY"BxↆO>otX:1UuX6uL (iu#ˮs]J Yj׏r&s,ȩjgT?'={=DygKjFs.d)6Jˍoaو̒<&-gCL꼗ڋ{XdۙjWhP4ւH G?%UzYe~82]P{J;+ѷ~|۱#/rOJk\,QJպR)Ul~#[qQb#w/LOT2oq=f [UI !!`?j4k5ͪ܄%v 7'=)6H|c fM.}N/zVSpEiݻL.'y/kBN;1@[6$ "o-ezW2 $$=_3n\8Lp$UH$zuR9Pa׎牼_-3َU &s)tKR}K`,K">~M̵yn?^gM <bj}e3Y{2߯A/Jo\԰Hc/E+LRXTSuC[ܑŮ: /ER`]Qhnv=MAwþٷui*$3*T!'=>euS/o`9.=':z_#骥w刾8N O;](%is z%jpzh "[¾3gt\<7=Uox,2ɉZQ3)~[ml MEll~{Hju*Y0l7ܺN^wN#ؗSz!\iÛުPA ܝɱꯟb>flIoRǵ 缿+H^;/W-ԫٱ b@% 2di)#*w'"-u'!e ļs5チZ-5b/|#ǏAg6k8!kvJ$Tس>Q{ ,uI5Ab{ A*x4AT{m.k6H75\kn\kMiiUtaY|G1µˁ3*e"9 u~%;_,IWU2KȃW 3}Kq$gf&薷]= K4PH# z+Ÿ/* - Z&pz櫷q_)8¼CrCCf=ZP̚-req]H]ӓIu @1 j)OZ4xk_2udb7 ¶Vs0/MfUgT$TNJ,q endstream endobj 568 0 obj << /Length1 2322 /Length2 17983 /Length3 0 /Length 19343 /Filter /FlateDecode >> stream xڌP xpww'hpFw஁$;d{*`LSEE(jfg;32eY,,L,,lTT gTN ;0?,o2 c7CE;0@`ccaΑ a 2(2@'D*q;{G[ `J `f j tΖ@۷65;SB|tvcfvssc2ubse-@'+ e-Ԙ )̝݌7 vzsqoj @ewsL o;=@` 9(0ehldoj 16y3tc 9:읝@6qd+[%fv@_Io}`pvn` s/f.` PV6o"?2 3tM-Ja[=d|d 8;}_ 0:L 0obA]c6l3˨ɋbbv/Fv.#'+8-U6:?evx{3>lhAm_#uoER.66?Gol >8݆ۅ&_4_ۍ-_rh r6.go9l@`Λ ѽ۷mdoy%vf 'm89^ojt{L`;7G#_0%0Af?,%YRۦAf?,S)TbAo1["7dq08qLl _[?M Ϳv]K\ވo)A]/?½Xlp-=-X@o5['a"sv7rvys?`oOh:O_rߞr-c>o7?[w;ַV8>'-w-$ogf[%.o s|y|:o8 42)$n˰G'-otVq_ Ncx$L(\fXA|n xPH'U|ˬԼ&f34}.zh!u+4FXs9O` WJtqY/|)0s06 9Ģ ַ#0e+Ԧ-Ӝӿ$Y/#թ˴}5c+BV3_.@K*%Nh*;Y#)J"߇ޔĥdQ.[+dՂd_ƞhǖ fgLWXIr[ݡZdy8dV3Vܥ }Ԅ_,Z[&4J4\<v(ⳃWo !|gU+-]^i ^3}[tQؽ%Rt6Iu)u(o֢aIV} 6\kb\ GǂJ8 Xp;] ۟(.hu (5?h~&hfU0p0Ln oQ8<fp{b^ӵc#]4X OȦUKO&Res$PPU3H1E|A=Ԍ+$ggh0zg½U:sm<%!XYSB-'` r~td/Ŷ>BQ#nGB~٥UgKCF|izӀEA|6ŖrQQF"a@MMRξIT)"IJ4`y "ht(,*% ֯эNk(XݑEX%oap&@'q?On^#gjQ΃;:>p~g-bO>gDbt`C*n|~_OP,}Hg ogH?:T;d!9← eJ/IQ8Bխ ^IDXk/ϰ T~9 Q,S;Aq((_:}k1 #]<'RbQݺptVkU0@l9^tIܦr ;7L|n0\HP8-l_O3aQKBCy9 iNLeJ; &0 M~A֪ nE'!?p-[`~HҐe`AH"L ώ70)^EW8 ~j9,{]W Y($C.c.%eצ/#{-㇪64nUoSd'jbnaDr%~G WÉl_yvY<$TWZtNhĠ=~=.A0yoaz); /i0D=7 *Fm[IfYP vo32w5Yf$ȑR}iyK/RERhJwx}wC?PQ`ŃH'wBkOI4IƯQ]FZʠcha{Jh,p-->J)wOt/Xm z̟9i㎱u\g?2x̭xqZ~ߚ^~ !-/{L,,>9zF-3rcXW֟JG˴R‘}B[)Ѽԍ`7=HL^,y'ؠ[vaVڳ1 Ց)gq3tPҙmzOt88V5͗sxЮBao/۞K6P9`CH+BVh$GƲvKen |5S=VbbKm.RJ6ɠN36>y2 v?<~>Sw7 r".ΉBRBm(kE}?Z4J4)rϺܖz=bǿQl+J$|"cz^s"Icd/z@h "imE.ut 7:Rs^$SywiHDo<&913| Q*bZYe,L[p]7T 7243sR[N%WnzPfgtOubC&֪'\͖Y  P(+W Z꿺,@ԋO'=dKϡeׅЀwZn5_,(ߥ7}Rk7,sl-t/m]sRU;wPJ9s ,#glC4V` jvr hC׸0WZ1UO]YA+\ԯ*2\s8wFvj(@䩏׳  _37*Py}j&~ֶ;LxrV3.cɛLyDYgDcg8aK`9e7$tMGhֱ@HSq -ZYbO^vjqW%pi=Od\'z~6򟦝C Bx4UJN_-0抧 > AL2쎅[FL<3s=x0k Кug!MMsRRST^1&ծ0 yW=E=+5obϬ 01R; YI4ğXs TjBf@00IǾ [Oc#ljآ aߵ-'lC`a'jSq`o&rRs :_̎51xF\OaIЍEXMΪg6Qm0K,4%*mـraN@\qFAX\(| W$ /)O@ Oˈs!j"UPqY7zޙq1μzi;^ ]3\hm׷+"A,/&"j$Q džG;LE>/PV8?eE~P}3$82{i.Фilߗ+DdEҀ;sIW覑rljzgڬ;3ٶu SCbnvSO3z_۶ ǣ/ς?B^Iĵ)' s!ty,8d,[\ HgyĜ$-j\Uc2QxfWh.ܹZoۻ%MTY{=&n,I{6ղx-̚H-dZ}+6@%AĭYY,tT7mZ%l42У|zWRPDBwsaQdaArBtry8!I932'(.#1[>xyZtKZ1[eQeS65R !Jt"޽;wQx?MװVߓ a_iDmz/EZxDAl6Je'tgVF(՛i1yrQk2Pg)#-ϗx.<}6ߠrq"ph~I8ȴ(٪B|>V#iТ(Rl:‘f9)1שa}c2 tMA"ZrtC7kL]Ǘ~86Xlf23)e;Vf Q]dʇȡHAmiPkXܶ]O!SaV7SlCMEe" #{ђ޼m 7Y&WZ|(1Ći$Qѽk3Zn>L"UlSfR9ɣ]{Amm9;>ityRlzIc/lr|l]Zk@~KZ&h@0j#ugWjo*Rw *H,1,'TX+̱PE# tm<Q{mڃ>LB px1{*>曇FFXTQ55t bpefXb늌[cír۩m<<FM0v *7;9q]K ) & n.>}Ri# 5&3Ǥz5d2`J K"#O-$B$GLrFK5 !3<lߊO'nnmh |4`w[ݱ=وB_Km~7 ,y~lܐ(G` $Ig9_\XSy9{l+t38jCf+BZXz1fj$~ל :s‚̪HJ^ [Dgwhou>E͵^6G%3Jf3ᱡpO },'hp @wq 㱠/0fw; blLM,9U|u[UL쇍 6S#Lbo yss˥`ƶzߟ1g?Ep1ߊ+S%PVQSڜ*\Sjc@`Ag _Y%(C΢Od9qJˬi"Go xr&Ǹّl]*t'jzFuЊmWNIO? `'!LM4ˋ#c{Tpz3l/ !7J?e%a}gt1䅱B[qMbkWN#[:'y=:~KM|DZG'6ZI )͵4W#YB= {2cHN6uEdP"6fx cY߾VbK_IFhPs<ڟCatjw}{EFmEiW+;L]x.ڰRm3.^߈]q8&J[\y([+`[Cx0p\av4<'&_yOBX7s4ÜisTݼ?ضX*_ PԸP4B:$SwKD fwUH? @,)G{)L'dހc>L|W1mi]:7mюY,7jko{6z9-ȝ \A'dR ׅ.Eo |Q(&.MvYhsZR4 XPjHъOȁX(Qq?KS1*?H F:)(72Ŭ#=HaI>}k ۪0sH2NUXNexG]cv\+wױAyѩt2mICԲG#\sCb+ߺ>s>:{Ts ;/_1 p{U@ݢWL<}[1<`?K.gN!&Dö= İ"y뭔~^4Ÿ/>۩BD}òE ̤ Դ0b3.EK\k.KIf}V>P\Iջ&**6qubos$̣w킸tLG5oisDMj~J;qλDJbNX8B3['i^9/DKXgVAI-A_u>d" "lKN]\!g%v,XQ NR].uEH>`X.4 .RK&`n⅟^_`za" 9.5Nt5!@JDԌ:z]zk=ML}f좹NJl')Bz)E{!揵R7ёu1r|i&}\_9SgAƣ3j]ꑏI.b1餈SqqޭeF.U6cgxû0wAkɰJ~G*1Or})r3j]2kMLU>cC9u=B[?uE;]6gr*emJ|(* 9,92>5'6k7sۘ*0"bFHmCqGA;I~#.*I9~p vͺ2QaE_l'Ē v-nQGrبJy)X#uHp 1c]R7$a?lGy%TyѲ UM&<1 o^,Hl?Ǔ2A֘2Lyԟe&D'PkV̜tlRsΎa┪XњNӬ'x' Cʚ̆įtٽ?Æ`8n[Hi7]q|x$袣'Z|pMMh5wPheaN9T3!ja&1bJ£JE8&*=XźHƺu$<0̚ #EA㋍7}yn#ClAi>Xܑ *B|#* j>ШuDHwQ%|2h?J eF3n~^) uE2҉B[=t}N_ !Î](kYcnڄ4~,ZH@a ysgA gEW$ͻtӻ;&A?!Dh{tzXc aJ{NgK~_w{~Wn6Hāuɇ?S=c7U\~=傒.E\ǯJL- m'O-〥ΛeYߔ:) %Vl3J%7R9pr]A!BK3fiL`k'鏈_>43'z~ Gv-UoL5Rƾ 1YXǟ!|P&PR»{&FuXYvP`Xd+Dx-`R Vk2W#,dc5䕺k?k\~L $f8_(oᮄgo ?rL+%ppL:nKUڤ`wsGE'^{Aڶ+- 쑌,\ꝩ}q(o8C5Ą┡j0sxq^,+1D :]لJ∺ugԮ'NwIy9t'A?J2k%|<YJ_>`ǥ30 +SP %<_múAW3@:=DŽTj5tRp]ƣGڲoɏ~-v][twtUTLV])Ŵrce #1Ǔb~n -NwPD58d^+k"M5E9uRBUUYnpG.60Ś܋ptA1JՖ_}3S-Ð^C?kr6^9甼X5TcOzc ԇ=~RsL΁kCo0z-ue,*%[Ęp)ێSqr5dВ5/+1l8_K˕m3|+-Af ;<^Tz0ܝ@q}LjHym =֎C|w ?E7EdqN7'ɻL=WXؐ}vR*)O~_4fkt "ᛂʒ g$=׍ʛ"*of d[f9>Ea(ɾ k ذe~]g˽,b ZX()c+lH&煼? >7m/rOp^1Eyℵ $& >l(& tֳ5ժ Hx77 Q(2$i {ǥcE0'N*1ZL5k%sCPu3'm_&'`ʥ" ȻA{S5SD})G>W9Y03iUD+̤MQ1ULRPd߳CL.<4+X4|IQLy]Om| (vHկP"x˜{}~@7w=a..ܸRYKa$=i罎n;xu5@'dFI)~BܟRձS妦QOe,QJM/so(!n7LYj+J๻+l _q tB o1[,`,l×6YI,eZqT!ށqD/%xB oi&Z JtUKfj?mus0T±LlYG8zj0ljrh!B7wv#jE*ГUn?MǽC!;u݋~M^s揧ټ@wUL,XmX$;]UV7Nč %CWl,Y oJ2LnXϤOY *M!)?pkDXF TL`4,^%k3QL 'd!QWI0TB0 C\I҅k4/,vlHsG& " qNƲY)vYNN mu YJS2 +no[A%jR.JOP(!csЏyKtwzS~RksǍ# ٻx';1J0b7G#;ߧZVĚ[ŝ;` v ,ޒ-,)^ωwX:6DZkfO}2w P46WW qT ~%ݰX>^AV?d$o2?cbsXPO]nTf=lb {m-]*C:W4p(wTZ|\\?;nVCiKNmWmv_ݒI9GYNv`c/p\ʕP0Y0qs@16_QG @fil0M}&u aPqz?j[3jM<1AF2J30KAS}S '=HvM#FAw{z5lBT?C%T` ?':MpD`ۢWuR9?d@`x7AoSY!>sA{y_’Eb2iНj7kg~3_^uNl`X/L/: ~!TzO^՞8~0e)}zn?^|$17'Ȣ Y=>MX8'Ls"G"6 Ýr;(lR0$ GฐeUP )Qg:8E2!O?7bz|9A^3h{*3S߹bj :reng!|V"]O}REOL[g6ed@8d%t4Ԗl-7*ј=]q#)_N渡 cz|j" [>45X(P6݁$CX!ʐM=>limBn|q87Y%l1"ck3dSJ9|YbWC#t@R0ɋSW"e OHkAyUK}u3ԣ(ewwv;z'&،]R>{^q*G9K]υ2uO 0w'Os61`mt拚8ݥaaj4(nHD߱i0>z'-rDÊ^,Uzb=vj!g &S)x?.Rn|;ʄc2/kFdR LHW>d,VjQQMjYQ%T5+n~{c6cߒda5A-r/$ĺnJ<0 in$*|2)U|R | (j"%VYmN (غz6Awߖ\vLwb_`tWn[_` 7YW b?C-t/l3 䈵~k[i~G"Vb)~0hI{tؐ90g-adgE.^Cm'k :zG֜qSa`#*em˜FcLOQE7swF6h0C U/LbOa4b$JCVʿVikpaԽ'3yR\.!@@A/"tQ BБ?g̊x4W55JH45M5ﭥH^eخnc;]DΊ #̟ŽC-ruh34EVIs. eJn`(qF tb=\y_319+"Z"+\θ2:>;\vnVܸ`S)o w[GtI?yF _ѧ">W3UR!ѽpg:)RHAKc'=6 {'j~X _)SbܱeDaGVU7`atP웎OFc*,FV1SS.CMHw blxTspԹ9|å b19aa o'9|?Q!hj4I&OqKR6Z%BDfX* K;?-`q sr{%@E#7pP÷Heͩvw\ߤri0ؼ?0"aG<5}tf$cEX8yީdm8\a}55JaB}(jj6yțF?*[![Tzhڹ:C̐!Ůn##FikE\\>>٭,]FieHt}//KwݸNP? z>U[usX^Kw'^0_.kPdH?kvHfFC?[2* ]߁Y=^0ȭ^I2!Z[x 3_XԀ#4MĒ ln ur8 媰T=JQK͔ȿFC "{ͣ-i"}h08=_%(\drޑWPVYp׺E-]lBEvzlfwV'/w7sqU T\~PԄ[b?K*-F˿ ̱?5u_^H5i{0ŐO-j'åw-pI=OG*2"\o$6AR7D4_HD2uo Kb+oNys?S'`O %cٛH&"o\TpNKPU-k{:"|G}*) D6B3B}d郸 ^Z8sv3cJćoa\W!2\Xuh5~%P,`+Pj;PH&Bٱ#6gs }rf`j!˸]uAlIoqT0qC5}g]{Tt۔hɿj'@ yO/#7]suA]뱄w}4aeSSWkU\wn<^W=B)oY#ʥSd՟q=!< 杯k|g)q/1K<t)RSaҰ?l]\#Eݘ^R:2yF'/2.~^I|A9qКRXCȾOUq[fGhc9 0K\'@k&9G~~Si8Er ;#]$ۧf!W+V#'㺍Do_ oGMԍ̎hkQ{hlNx9sWľh 6}0yt &>cڛ#BO^LF[YJm>f9hwyɕw xl_ ,q3ٞ7aQ8[ endstream endobj 570 0 obj << /Length1 2632 /Length2 18408 /Length3 0 /Length 19921 /Filter /FlateDecode >> stream xڌP c6  .!;.ݝ 9ܓ+`Vw^{dJ ¦@ {;gFf^ 3B_9dio(h 9 2.66 '/ /33翆 ^)@ cotBwY[8y@mB`8@419[m&F6U{Kpvvebrssc4ub ,-*@' h +e-(jNQڛ9h>bg Ui9?r1S #˿9#K:yXڙ,mE 9Fgwgz_F6NFF6F`C7H+ ىr.- ,A@p=i_i80Y:~́fffn6Vt7`@/18/{8 p}T/B`aZ8v@`pA]f>xLl<~b&iIYqa-RW)"bb`08ظ<oo?Oo?KC_{4Կ_ }uoD.66c7<.͐5g偦.W+la;s i$a4Ut6{bwK;_ +gb S[o2ۙ؛z#<_/m3WK99L8L"I70F<&3I7bOof rA73(F`7A7b0)F&̮~#p,O__ Srvֿt}`Nc#o58Zc59+Ϛn/{7OȿA%#\0  NaxXC5}>Rۻ617iw&Xx8X,H6Y1' 6o=!dMe^?"|~t|39ASοe; rtw|G?loN&? nkvz3ؓ'4q{MMMjU 1}LaZ<%TenVũHB[[>ƩL",L 1 y?;zkXC7CvP|qtFQy+^W<2W)T:P4Ck5G@uf#gT&$Kg5~s\թ=15$A WqalfF>RS^]9i \f"{:$]UCZcy<:377 ɯ { Bo@t1p ^{0ײǧ㺞Cf[[+M"bϡ>XDW{ܝV%kzOU 'a7rQ ]`WCu/I/3:^콰r>z5x$Jsc4Zĝ`C'p ޽Y6l8ݿXhΜCӁq8̌NV߷Mpkp)mm~оHB1/Q҈7ȑ;ɨxfMa 8"OCU݂*i%uGcUuƔ|.!IXԯ~:3ݥ1>PYZ#@RL7n"ae5Xާ=ngzΊXԗa)҆U(~iiZwo8{ڕ)X#'+Ȍ]X3/fNoN,>#v ƻ"ajhLJ܈^$M_ϟm%z VʈS:fb%d}qB pԸWPWc#,Cj|jﲱ]HqhuX^ y*l)63~{֓]ybjp(y)/>S*-q "1{`ϼh_.JhK'K#pa0fLS|(ݏ1Wűk : >dذĄcʄaml3KxTW!ɯ,=y* YIY݅8ApdP,nL_rumUsy.yM|nbH;!M2Pz{&aΪumv ֍)n8GZ?43[-o\nQDEc EC#" 5WIl0[ً*0[bxpu|sχV_d~:%SWOXW؊HEI=Fw|J3t_4i`HQOT1Mk@(K*5L%)@+&ɪ"ĩ!p>kE|p'hV0&ШmdQRaȰj+]v#V wހ!D NhA^MG2}?\׃Hn n$52;@Ưmѷ=_ 1VoRoWT$a(`ʴYn>Q,/f:Q|x@aHyBD'(zb9*]uKi#In̗Ŗ^"-*aUGdFbBw&ݭN8GQ5sPW]揇3LPpm-C@,>'g^NĆta|4oL b"%yHaX2 _9>SfhX, - qPznKԬEJ|ڒS$,{ѓ'HÝ'lH2fx'_m:b,  4cK -3ǟ-5UA ?Ib6P{yuټ9@п^֓4SھG{b% %z!Kʼz25eHQ ?ӯ6 kݫJa VczhSI}@+hګۥ#^37#Yγ$ah>{⾕iC:_.ةu2 n&i,fO [ "gm-cл;mVNOLF{ B)NDj/j *.sGxHROv# wwWxm+vL.7y!$Ԥ/L~!dtO%4 N| >9P\s1GYHJCAq͐ØEBחu(nv:'^\WĠk ƃ<"c$s2*Ԑ jdQT ЈoN1˔EoS^(U{#Bp ]ZpS`3}IN mak8wFkblcY1@jrs};{ _"K:|`̻z‡A~z[uhx1*e'ӻ_CҰ|Jm 8*/IOI-Y 7"9cO+˒kgz|-RHv&aUZcX_Xy77ћwpߑlR4O&vu=s>u $h+A'Aמ.BƟ#-MW A}"d#XoYTTM\AjlH]q=ً7&gG> tyqT[Fj^L" |ǎ+rCOw%/Q}P}eSHCuZTڊ< Ioq+@=Ƿ&0{9T>O(ΦN_q2D!*J7sg3yxz0FܑsFH0d'.;oUJr=𛏍 M@, 0tznKOW!}R~$ˁDVx*,wW]ڏ'yx7^ PmfZ6]|\>mSo aJ GPHv^a~KV磏!8qlo:Gp?N4o ؇ȤDkvQv`7{kPMH 텎q* 9jF]WTf:RВzoY(HI爲]EeKߑ#12W|($% #~ fndQ2OpݓM %+&9Ye`'ZhQ]O7(tD>!ىFk4fHH4ΦL܋Ē+HCqk[X3ROLi ꬂ?ʰ9 hKѷO ()Y[jA&"o9)+یܨy1!P ,~QT+91E>Qyi^,HvW(}>aV޴4+qߵ%+fBdAթlY+%}f6?}OJW?SʻB5& znhwf庖>m0p[|ʉswAVD[-v G-W(u,,0,l ;cv|f:XSs1pA% uKpѪ"a(8}.1W$Vk 'D(Ϝ-w=o 襑\Ҡη]_vkmkCA;Xl8[{,A&.ux}L-:`7׵oD{P a,5r3:>q|0O`ɞ莌wc֛$OS|lq7p DRC2Eه4XEƺ节=}|9*n?+8ɳ5wf+9FA%jAQ陆_9F{) Ӹ9imDc[D`Ae8r{?>vr i(r?2QA\Aw@b_pGJCOz7<*1_y+9kS[d-rq da%A)HUpYA8Y"2VPF?<Jdk93@Q=9 a^p\I }PDZ)rvcxАK jj޻ Abd-VyxcXcXb|"XAUe~MM9#7B~WTk)rP:SƘhԇ)!Gݙ~2Brk /8?!XBMebL~W3^o4mA+^д3 WvI3Vn pM7h.o͡ckCTSiK/dBh}ڗmsA}(qn&AԜC0&C"CVVKaxj&^mo>u}#5r7z87O>k| (q8F"dAA!'[l?ø#P^?^6CznR=۬9%[|lwJ# yC Ü^/ܲ圚@Du'V!Dy/UT napt⼮CAߦKJ6 qƵ lnkQgg%N:vC=l{ݑBOT^s^VTPAoX"(7𲉊) | 5zxn o۳s*+`_٠c1MY,c܏.ɧ*2~ דەo8#sWy<# 5L@ƴs'}dmflk?R|&MZbp#cCYܖ]ՠ[ρogq2hqIVx 4U%"إbpnb}cͱn.p[KJB&׍ KQkEtZ!?flќODI?"W mnYi/6eBRzJi Ԩ)_jVC?#HϤ]myXT\ [y{%ٷ˸}樿xPQOzuo,n8}|Z.Gc7_dLOcHk,{dVM}&l(æ]q# Ww(4[@DsU!RqFR KSIR3W]9o>fȀT8 `Kx:h| $V+$.ƞ| 20ǤQnd-!0d/[4{d[sSjLyޖwJ+:XX ݊!e_;턎/o<La ̌.P ʉtY)wةSD5mKF7.ieckALڅͲh&py,a#aR~0N*+~kT2Vfo 0~','U N2; d%6(KyzebͯǬ92ӡGK1vU<ͱ};>'Bf-dK69 b#{e*!i4{%* ~ƢCK><W9hKzZeW!Ruj0,WlwC]bf)q4@!a%ulh⎭?͜("{5mW="xP3zpu܅?iԷ=%3(tQJ|M@6aotICg# CIOj]Z4*̓-u_kS])e, 0WM[SuYhb 0Vl75=ʋfQmom\ /Z_2g>*s#M 9W/ ᨳ8s *:"ڨQ$DM=ƤN9?#ƚ$Ր!0Qx -Q(Pޝ"N%Gr ]mFYQⵆ96Ii<$6KxV*T@Ï(0Muxt_8tZoADzݭ{)V(Slutf䩅hDE=my.U$𞏌ItME̛ZdܷVTl 'hs`fi| 561^_}O#Y1+ECC$a `0Q9IG]pH l(Ʌ欬eYT w9\}NTS?ե;AhLU ?I97|}O,еMΊ=IT.Ưؼ؁ I/3qǁl_QR>94,ۮʹYL9S6~7PF#MwI3(e`%q(`rLBy!o!P5viSxa*Y#>s,[`0E v RU=G^b"lє^qqG _# 3c\V+Q4,.M8AGy>#'+B0F(W)PUGV ogyqp>\M˄>`'TL;xm- ~u>/(Ү)QØB6y`l(BJCFJiWhj1xv`w []~}Gf' {XC&!eHl58."GͶp_^kUk F2g /nbh^~NCd(O˙/P]F3oPŽO SV3X=NǓEEcjhzg>u5̟$ݾg n+3̶^<mKf"r"Ctq.ԔQYYa(+:UNFnj`ICqe<Ȓ<)8gHJc8\A̬֡Ŭ.[/3yo[K}v4uhc?#Fw mOa(h>H' s欳tp1Q6g!G8c=!"3;`}WtDXwvOPnd IeZm7_~v:.# h5 m%"eOtֆNBd>݀SΉViooM&@?P;T][/ aFwgEw{XR* [A"Z&.,}F]ǟƹK#aя!Yp͸RH Xި,K;\+·qCBpEBPY+1l0C.&*tvB),<95U 8✢/^ɏnuG*<@D%ζ9L!^nt4\Z|z E:y" 1 0|57 / ;jkV{1S.Sxtmbl_f=w)Ĩb~?!s J)8r6)뢈%e_ [Wr}x1k> Wසhf* >EmC|a^-'Js Iv$d;k7]/dԡR&*f}\'֐qMNNqσ8cy꿢JH1RՍEB6R䰏_H+$3zwd~> O.QW;H*:w_ChY5NS"BcU1~Qsg]m- NG0KL7ov(Wx1L8v?PW-|X4i;?aPmfWڦYķB-6&emI+莚xagSPmǀIΙzq[nkĤT,k5B73XPxTC 1j{ȢO'G ZǘU;O5[{-5B>Y&IU$h2h7c,ͬCrk3Vɪ뾽9,o)v>yz9;Ne}1G^Z4Xd IF %u|^+?o PG{rk %y#}ǂ4WYV-/G/YHt&26Q4(S(bam$|Z5%$5-oGThWTw |=p!_Wɔ.ర&SY@SZS)ϋ~ލLo:1Fѯ=@UP#eY%Bᖱ*Ԛ`Y_kEB.n'QQQ" ESR%ZeVǰ`WٔM\dٻ3fgPa68e1*irGlkA(C_ɗ:ILK;8>)SJzG]0Pj31}qOGυIJ=fk$/EϪ?9 #v҉*g`GR%7 O%Qy Ucُoc@սޖL_kǧ?5:/UY[,6)MBzher˜h}8ێ)+ie'J;{R!QpQJ`bY;'"}Jp+ar\Q>.w^9u~,rͧ s:6ǙbNNLO X0bچȣźAwqE1y }7a',2e(Ehn` gD"x[Ό5 ɞa|XAJ4*)FixtO ͰxΧc68`(,b~!SaȹsQP[fQۮ8ë<ލ5Z7ӖCo8t.\NTU4)9@-u%8g=>wP2N7gñjcHӽx~H(= 6ttwXߓ]ejQǿk{Ad]{c%G{$Y3'<6wVI1C0ې7f|+F*NG d۳}Oؑ%c>oA+al^u8qVV۸U O"#U kИ9\ Z.6˦4pD,[PWd)=z{͓Qc#@vKURQh>bã̤xdn9ל_VL ]/onQl=X2~ \~ƃ"s&EAI,|t"xfȺO[J{6!PCx`rцA*\1&(NW佭US KC'\C~`ˡ74 |GG Y:)G:5X6 (Qb.9a/oi zGU dx '=k`I9=(w(MpdwYBoKgxUdҜZgQ8D1)]Fˍ*Ϙu+R2$$~+uYwzσ[f?a/P3E`xNo:g34co|~ (5jQ`NYW<|PO5|)D `Sr ʯ1E_B)Zz8TfCj28;h~ِ@H'dv\Re d,]BjSkF8ɱ<$a-} " vv)ώx,R|gY8d~Ṓ |Uby05 5oՐQ>z}ZW.9n4raa y&]*Pu>ZR#5㥰o@X#CR,nV_y)!k;YzQ>USϓ&x= =&? rǍ'׳V|0ƀIVa<mTEx%Ly̤ݏyts0dJs4 Z*78@oD;rw/R$^i+%-?XϰV=Yi(0GfyRB?g#Ro8ŽY z>Ǩ(3lb}ߢ`7).bEpލ>|DP2΋7$Xh)Q4*6-\ӗaW8Kq9<,"Ʋ:@86MNm92{hFEA$:"$q3L_QwqWrf"2X 1WgO:⍐bwOCQ߲zBCQ5]"iaL 3պw$)Z/5&[Q=Ll*x%!n*Q 1G]ذh,8zU?P{7CgǥO0xH 9P EYbg.–B- 2{.rSvG#=3UfR!·s*1oDxSB\"+ WpTwa>XH7ZS/v5iyNPR ~5=>c)(-s;Y3H_pӿkuk˦Mm~?$9` Sօn4>> dv}Pԋ"@::[M~(sϝxSxg(\%ˍ"P-8]uauS#ۼbt hc1DK+xWәUWD›3rm 5/@VFaHO<*G/QK^xvZmƷ&*~rHkxöp'x(!`[xQ^35Y-FO2q(@ܻ36౉]~$*8r&_<Ǔ2A~ux4@98aց]8R{m[G 6I2s¶Ahwn//|;B[1=U.\kCZx{nQ[\*AD\WB^~܉9(f!Q<7XO~Ψ\1Q&ژz棾ؘĪj_4O y)6s- :Px<&x,P0߹@9X^m^2ם#WOɻ5{3ѩq&A*.(;4;x7%mbSs YY`n.MZ6]m%2ɭ"iӥ Mq?< $׍ i߯!u?]'\)Lh #ۙBiJdYMg@~5IKt,I 6ﷺW"B-(n&V*8t4)sp,/0}H\ 5v)*t*ǘi~(tGn; s{kbÔ Ż&45;9Lֈ- , RNU*$ ;iAˁ M:֥:[ Rt(&"ܽgOx쥨9.$+x).kZiK(ИˬйM^>WwKDN".xDUTVp;M:yGA~pbT9u 8"UUW}y8d:^w/b&n~#&he4XĆ˴+&nc ֏?^ss/*njk]Hr/JrRJz9[W[˹7ۧS$Рքe 8hvOex\N=gyŠd171aeYTq X C2U>^zJ~+mΖSY^y'C42$1s[cγ>JtqJKȺm{5Rg]۔lE U(ihl$xv&r ^r.Iu洭`Mu:[OK L=6q87r)ƃ↻ sew'µuc7i_YPqsΉo?(,^0OVmij/~2(2y#g 4zX< Zʠ1[aLdz9/fvf {-uͳ" YTBVmDp5 7vfEcs/]  ~|ЧGx%H?NRAyIѳ!G(ԟE17TURE|ñ8g*1H *z6Mmw6o'XDtp|>CHMNtWiM@{wOlk)vA9voҹ@*$aj &H9Ѐ#B' D=o_GԌ@#1o7EnOl~jMѳ Cp \3h="-m۷a橛L2=*@@f^$>o:Ul[_7ܬ|=rdàXh4U @z Le$n ,(Se}VF~E֩F1)OSEn>#9o  =!mF'= %"ujSL3wWeqJ;t Ϸydz@ -̛ӷs>k+y쬴*ŵٵ@qgԾ@& -ʸ4OJeblƞgwʰ[nX:f:a :j!i,r ?js, /H!%0j.o? caeHu.֥/{۪ߞW5[}:Q8gY*[ |~@uSuޘ kJe@s~-SYl2 x<38~zܱѓ,Y|F0Jz5 Oč\lwk~@Q­2(>u$FJNdq FSָ*uM^_'>oI?ꁮADqxԯ};]!-ֆ,²ӖyzWG+uX;8,W gזrxFQWߡR93-۞,竫+FcQA C#ݏ/&vn,;\`)( On};n&:tSgtt l9Ou]ivo vȁzpLu|f+pG7d˼cBiB,:V+XGcV`z̭|k3\ endstream endobj 572 0 obj << /Length1 2336 /Length2 9370 /Length3 0 /Length 10720 /Filter /FlateDecode >> stream xڍT\. "RR!1tKwJ P34ݍ4HJH74qG]~RUE$mJ @մ؀j,XH8 0fdCmvv^ ch(4r4( '4Z ;{7GKs ,? &v~~^1[d24L,A`@\\\XlX_02\,!ud Eld +-@/ l,M@`' l r4* _Ɗ0np{ d ldbbgkov,m@iEV+`6ehdd7r612. -01=ĉG_a`mJڂ'_IZ:L`}wcpv.`% S= &B{ n  9@&lhك~+a<f0 /K33qԯa^#ꎾ1Dc>E󼼹\6=—㗁BO\vL3$RT\#UA=p$FxhkduMhHtn 2Eͯ "-c@rlQ=u].h2z v@cd.{C7-U+M|S/9%{Cw|e4NKsTB!*l]+9=kb]$qm-ft]S$>o}ʥMVw¿hf0Xcgo.ٟY̷VNks(VT_C?x֧ OUP9gTO-iIr-0CyH;.tdp$/)軁!^77E9}$}J:IA"w+̀3w;w5ߧ8|Djhi&x DŽ5 _f] SQ%v5PQ(+ TW$mIF}6W~O)'f=fNoK+XH5eN. O{e 5)e+^Ki Y|d.c]#K3]\׾!9LuQь(^(zipɚi~6HF#t*.X&gS\2wwY51{!ؤID$`b!F# Wڥǥ6_3pՔ'FЭ'[ǃ Scwh:4uGX4eu%}ߴ=A~~Ȉƙ{=3.#w~VL=TlOAuT cop s3< vsPcfQpدχP89swm>MY)B6n]Ot *?vF:lU;_` #h0:_Qo}y_S=H{rsv*X\kKx$f<X.GLR]j%SAr+:q[wpV+x{%Oѧ<+)p9**8 "SrtCNB۔DQsھŦu:iϞXh?i8(D*ҟ9VM1ƱDxOvr]ͭC{⓻}_ Yma-(6^_\:s -:~1d7B5~|/ Gg?vlU r2IgYMUai0>`SqhvĨ6}&cG`qDuS۲pKQ⛻U$kP}Z0Nrx@$QP2XUvOeYW,8߿5=aƻX&?cL% -֜J!9/6ϊJ bߴ֝815(k~ ^}z߁FIjTD\9fLt'!QXHYΐ2ʫRh6uQ ]P3A">)E+ay%ssr-  G{Z Hg6 f}]=]B \Jzeqw~ֱ 'ᄓ~{뉬1C(*&*)ZB?w 9nʆcHk9O nO(÷Pn]^5_N? wbOxGcDyE?BQ a#~ J{̦f6^Neysi_6bϬݕnfZ+hR vy\쑬%p5\ICėqb]ā{:/c; ǟXoj;W%BIމ=%eV'Cx zBх&R8y" `"Zp&٭gD > u:60iI((r,]ȶdP8OJ*F2D".GcOwYQA WBx}=̀PE,68S; Ɵ?la'i2T[s%rQ͔&Ny`6sM#ۓd 6ݤDxhERi϶58A{8%G݋ j}ry抵he1QV%gb8h>h`8Osk97>(x V\zsUozVXrܚgWl2xҢ+^Z· ƬE0uL4]MK&UPr27\FAOiss0p+|^}~={Xfm(ETPxemq?HN`2,?"kҾU|.:@&#X *,^ATH鴓]E>Z7_>|5 UXx#ʂ}UǙoUg s?W?~۠Xu6FBޫ$|=}ZIkj39jg1f-k N;ҙi>}:[_c~"ȼ'غ{sOd7 \77S)fhC HЕcq$=ˢތibvlto7ܐz %|EkRH9!sYa|.eܬ:5!foҲq[4rVyYЗhh(BłdIl Wi4w)Ly|[wY%K/!#3AY] ٷAVuchg0't2>bK = f-EԠnMAW g 1΃: cߡgjqZM,_CĜә wV9lGʬB^zp%HNTUeW ;ݳEF߫F{4:Ri8AaB p*QI%ifc.S='K8Z)nM1]|y1 o$QU.[d.+:x*){F5Y?`j>+ltc I#QDiƜ2N:ubGeir%ؗL ϧ&7iˎ3 /Z娩'!x 2D=>]nH$1%N:ߙ'~Tw1s~meH0-t҂Y•+d][: 8 ŇS%|+w Ƿ\o*EN\plהsDp#;zIPg"bOThڼ\8tq)Pa^&nX҄qa)l,#@M=*.#8FOB,< $q[e=lzW"NA2I5*ٱhl";V֟Mo+ 7RyOqq??e%vO/l{\׋+<4xVM.'!]PĪ卥D($ymtɳ M t%"JiY9}8' )l Υj zOwlmٛVJ+5l [H:gs8m~|f&oJX<9TIX&@e>a$K]–m`#g"^:Z6[|)o{WX:-m#x;4Y7n%'{)Hβ7[zq;oQzoF} 0=C"g2KXo8=h4 ]4-BvhMvڲƽ@C8:TgMi ǧثdpXam/7NCnӵɞ@$i , ʝ^ī$^;t>|{h-1a͑nْ'@uwe}uC'zL39><Ҥ+wH^/kwJ%GhϭF3kđntٵDh{teKqFkC,z{g+up'N3^SN;{X4DsIpf߯C~j-A0ZK=)I}NߞWVpJ3&mq'Q̴Akjx'`VhwQo|.$g[@<QCahvB NE?og2&&Dcϫ-ۧxGd&ZY{xt7U%>/HWT~P/=} }cSV-|%f&mH :1QIx]bY$VJiEKTg0_:l;횈\:_tqB6SAzJj  Dĉ9Fu@jcEZd9 _:zZ5djEu/E=x"BO "^ GkÛcۦ椺(ۇ i'Y7{ \xj"ubΨs4DAfWk&;NC{K  .>Α0_Ry-#'m_Zh)@\/`Lz/gCܪwBS: SV5zTZZLFėFBͼg2N?uid<,O7徴(SPfna װϵ3)"ߟ2|~  ^zRz^pS#u"X u[U39,ETz܃b%mm T-o{FoEէyl 3%r6vԦ@Ә~j]_, ҁ 3Z{1 s'E-[ TO!ff*EKw~ijjdy۬A'O7 3br [B_gD2^Qg1!mJIcbb%H=O?moG9 V''Ec tm/98y"['8;[ثRMMC*ۦ:C7bAD:o;y[.(9nuJ`omi~5Кþս·yeX2-@|[^)+Vx}ǔT뼾ҼVX gO_g[vf4V}){.n2Z?}4Ɇp<0yY{Et83nŢ#9y7<-%䤩(,ʘҗ77)OҘzmQÐ*p̔fٔ$e aOįLzŻ}5&J>:M9V!"NGoM]+S]y05i(rR ;DV~O{pfW.W zT5&vρISPƹX;r8wꩅ!/vs=q#88=Jl|\?5xBr-[ߤrS?AǻS;B] JZFú ^/^zJ#%IWV<#gn!{䈖h>շd 3I\ǏxsA9vmr%a3kуV~BϏ$ʏqנ|*#k*FeWgjwdh=ק_4jT iMHx$F0NXG2, d%ǀwh!SzS";eM7U7 #N[YsόI-]ijh%2F 0v; f #T$GԽ2/'L.V1hၺؙG߈Xg.Z%lbW+UsADRZs05-L }Zzd WGk:;/T\].a[8nuRre:cn; άg mߞ/_qnLqsb׮h\66`<[xƦ!V  ĈLPҧ}:TղlgB45!zq; endstream endobj 574 0 obj << /Length1 1384 /Length2 1126 /Length3 0 /Length 1972 /Filter /FlateDecode >> stream xڍSkTSWaPR* p\ 0򊀉 croH.!|U`P+*(jBD+2 JScE_VpnpGW:;gexLܹl\ 'A<..pJǟ1\Z+P QƂP&H(p^|H R b0K JSIrF?s\/)+PPJ+I TڄL_9ENjj*Ujؤ:on,Sr 5PR`VJ8NVqJRFjh@ca)]X**H iಹFpbTDN$ \ dS:PBj$ IǣZW4T> Uh`j\Ei\a1[LHIa/WC}gC#T"}<" (GDxr c K!\"OarUi*h:aZ>]E t R@}; 8FD4 e{zԸHz1F&% Eqpldh8٣RCx,F; &T#UJH5,[AڑIaX LaI81K!<6)OYݪ) #U⊴ y[ j\ixzz5".Rj_W+y7Bm$$sνwHuߴӇύBì :崮+-${mV)W{ jeN{i&[{u'\kv#`eٳۈv"3=njϺCT-B/oܔY"%-~==ɿus-(1˟a,oe]/t4֘˻/E 75ů% zc#u!梘.c#2- ϐYF%oMɥy?[_\[tә8XVo` ?-_@0o}xi[֗ٚg+]#\Z>knqI baPS!mݪ8ڕYziV-4u/wlߣ&{ѶBҤ"Uc!Ѳe6Y63 os9*r>&oÛcw񘹁\~x ̞|g;kFo{0zV#vCo1s\Y%Gk-zdm7HNHTnuȌ<V?3?3^u6aәñ`n8lցAw㖗*vG`LkUu0luJ犧z<#K ?]%X2앃dl}x^ՙ/k }-;e{ゖ i"uݧl@︵즅0 Gy[Vmq}*oI |OX>2>Xކd֌)k*_.Hrbfoc7wU/ٓ'{[6?؞ 7qX\:nOɯ5.5a^lvIVyz3g +s~b*H?9P# O=BNTYT" rc5S=9t%~{cȯ{<2% {/^e?l>)rͲ_eu?P {u9|S7 gCI';YͲv_rs9KGmMp8ޞfx֙]_ce$t-{²߹XxTqJS8* endstream endobj 576 0 obj << /Length1 721 /Length2 5243 /Length3 0 /Length 5832 /Filter /FlateDecode >> stream xmrPZ5P*P+ł-RBBHRJqw(NZ] ]9{vs^Da\<ym5^>?3# G!e0Q> Ёx^f neZNPB\ր...R.N\\M:0m X0UA]CMgnP[N0 @,PH(/MN\ @,Qv59: ' #Uv$I pk:?0ACUA\( H|SBZ9{@algB`A;a5h̑/Jh{V;`PM8jKsĽEa wvBQH>y?r@-e9 GZt^;BK]4=wn7<\__d,+ D?r-aH߆o"`n0 )XM|͇BoѢou٧x1 5!wZCTD#~Ej(`8}E.cwVeEo=J; uCt{MA䴝Re|q2m-D?A*MX'VKZfH^,Oce/3SYgٯbYytdWzg}.VbC}DJ/aUֲR+}ծP[yW6JQ G8[am0 ]VoIYk 6}|nz#M H} j]AtLKHd_,~Rɍ?&gf N,1 Gbtwk#kuCWKU*1Ohh.;/v~Fpl`JԤ0 rĀ8;.,W4 \vuŽ8}l0r|5U͗|>yΓ䫗Sj\]W(/hǁ@x* (bA,n ңJcoN:VWRش@$tl=m0e]󌭉Nt) o&ƴ|n!3i4m] |)xZBfF?aov1 PH?/B3<S^56яt.;.zl1 Y?6?NGYB4d&d"kXkH ]SFh6co)糈j&%[SPn2^h9>g&<

    =7op܉(ʎT/( Qv l(y .Ewr9_gR.U2.#Ot7)sZC˩/A3S¯PԶL/!ư T/TƐ-r[!+ԇe6>o;VBM)ii]f2t;}"4ږզey)XΒ`l+ɷwNyů\6+7 q 5m}:鍷w\x(g͔u20F+ o} I3(XmDYbD&#CL=61`uN6?NA[mԺإD-W.]%#,n{@vݣfh:ҍI^ŝZ\E.Y;qAzCfDlK*_.T_|'YiW0<cdlTr- ;qP%Ó =dpfeK;J̩<|p7':BjUݶ^/I$G6L֤?XaH?O__rH1*1) Ny~Ў9Gr`nYʨ(~7og/q.0C1wIqW-:|cgdy X`}JE wfp``egtB@Jg'*DCԭTNGni7>y=}0tx3sL|tڝ7#ke0˽` .1`A8hAR$1o'=Z3dT)?0}rUc %sjõ>wV"-8<>jPY,V!}zj.>CbN /\c, I2&iO\-b @U:u+?>8W61YNECHC'VPrȖBgq_$cFeO14Q@TU0}0վO}~/sN5)zJ c-I6cx?ek+\Xy`<Ϥ>'q$Մ͙H֖ܡii(3?tOP!cƮBGUQ~?_DOAfkK+$YW7D6uwNr4qͽD4u2A]ijOvWm#@@{P/^ Ips74`!mdX0lөiqX[9m鋋=jVzC8:e(DO1k|1k sRh<4`4)7LhHdR/wR+uK6 Cc fk4äe֨$)R0arإs{m+A=Qrb{+V?%i5+p}ߟbF(2I /_kL,ڻ^L$L/'G`2&|ln=B=" 2?,M^qS4}߼gW8D Ty>t T{0J(@Sd̒4k}`d-?̉O3XPg{eh/ Sy-ǔT2!@SJ=1 WŬIx.ɾܩ'%77\Ej2i\->] o>haHL586uϋbo>4 SDH>%j-Y |uQ8'-HmwjlJIա\xpuLBeچK4De&r<&'&]c3<.{0]0gBYRNJd?m"NH?E8,'fM?J%3iya7[֠J5& %m, kjPBC)d-]?w_-aw1aZ-qG fϝ"qظRSc6uf)A $Ya{pmsa3𕱲(^|m\C~-rݛ&e D.Om@ҼO[>2WGHQp%/=F$P_Yc GIf}xl}Q;=\[!z?ߒUrCwZ뗻St14<~;*S,> \'H:;ND1OL1ЎRvJOon69IP>h!M0@śd #SPb|1)b#0qP?݌JZz{&2ʐ"-rjg#&tQAf!Kh@ȚjbOpgNh;?°y~Z{vJ1nIȡzrKte]'@_Am~0{Ƅ̪++; ೎ْFh g߻g\ue4q0-l2H^QjSڊ@d0Z4@ce$Nh'T #OvqG*hFD%OU)f?u%U,@="l_=UtUP-tU)[땴=.3wB@:t:ufgpBpC.5 Y”D!ݓ Vǃy7iaԥZd~S}rBȼDh@|J)vn$Z˙h![,NvQ~&!dQqWNr1nBf?eDAqB EFj|^mٶvԥy^јA\R"CprgDfg&ZuqYqn 5r&n2rCͫVyL)U:{}|Kô8?^ħ DQ*(61dzo!q_=tXR'|bL -;dQhd0SʪiZO6.F]>sc&wBCciZI<iLu E|I IFy QidCKy25?צ:7|KR 5Mx{~HFɶs༧S9zz^y⣽Ժҽ8ela6ʃZnJl'/ 1'@IKǩ@LL-IWx6!uOp"ǝF䊯A3ʓt%9Y3 N.Ѳ+?;F<%1};XAGZa2' O"s1v~oN9Mѯ+S &.^|AkBn "K'%1d{a3(s͑cqhb,'Xl@2k?Xz %ΰ\c|4ś'/4ZDL40*DFyifoÒƌ9~%<`1)|mˀa֒N~JhѽHY#B -xǔXeT@\3^ {K/ X{b(yK8Iۗ5k@"6U gJVS]fA%(R$cR$!ѐULB#i۝|-6 [xL}y;uzK8Rlt{T_5ethv557K.Rɳ@P6#'QpJxhJ G_LjEZQv ;gsGF'U߸*UTƁPcHy1>zNH(׬oڵzn)u&QG@ T>\`[as{|BJq/bBK'ƥ*`_j/blvY2%}35K[joR% l CmNe2&^PkEQc!#5%(S?# #@$EV;gE`\lYԥCmhR~`K!ĄE b){Y4(k^C\ѡ b&t߱m"i )Zz ^k옐W+㪥iHE7& o~Gg?)D) %ȊgF ɘ zlTц&8Fj1qfVzhoiPgdQ3TI z1H3kȏs*o),PxBbwv_8`@!1mR4g)U6w VfIvnՓOxFeab^zޚv".&}#_Q|0<2*1!z-k#nG睨`b6CAqz9qfiJb5>R`_$clS#%F%u.S~v_GS,=4GA=a8/Yɵ#e9a.OXNpJ|Y9hnV=&2=ejcE?*KE9l7ȟ qJ:#ĦDrmF6%wwDkY5&oZb ]3PYmXztQT oZPn [cE0;pY`0[d ?aXۮ"jtI'TL@I nFP(˹^Y=^CªӶivGE >ur5;M#)ʽ=SZ3[<RhyctoXl X-!-ᥢzіcIB; 8cNnNk>rT +SfX@{6ͭTtC,OhP=$=߷_OI̩A\*=YurHFV`84{lI{)^:`ږ,:ʳ>x=\v bMpPGJtjLK`I='[vU>2W:5Lip^1d/UJN Ab_H\hCm> i^)K!O5 TkFKjr'i?}&}}2-*ztQNq V$<6+{gnA>꼫XY2藜qa* L[bj@b$O_diEZl7lꔎ?|;e _]ggJ*_po񒝯1^esVh:FQzzR8z) *waCm/ʗpBګ)'qt2>y-HJ%uEHX|픫Om%5ܗ| 5sdkMz wĥr`2l҈,jK @.Ïu4Og'Y*jnmvɫӶJp  @ϼիU0Uvof] dlFrEm&_1Yٔ`Wyks\(:TItt|O7}tu@ \p=+w2ݯ xp]pDAxs?x7]tr>"FfF՞\$ 'M4jѕz&G4KZ ҖqY;Eb1W٪{fqKVn7`O?KӢUwjFft _e[f?Doxxv1b.0{oICmpt@D஧Bc U ~8FT-Ϣ DJ{w0g]~JՊjR,O JH Ė]&:6'y=χ,AcHjA_b1hFiFLO6 /p^E1ZLrڐwR&obt„ʮի_)Ha۸hT=5X6٩{h90DH vgrI()^AOXǔSWRUt:vHK^u߻DGiL\6Gy3x'K7N4֝ pf2l* `x0k^J8)E >U#:C+6NXƞoZAGTD{qH LPnjȄw9Ÿ57$|h |%S/c}ΞW[%OǝX6#.-w{FRdHISۆ ~׭Qx&RD+p[Sd3_ˣٽ\(~Z5Uq"\ ԙuM_u?r[$IH뤮Z K1+M|;n!` ~Y\K󹐷}SXq㵞ݷʍtF}ȋāmOsnO7 T[inGq,yk}} %jG2b>.yoA}X nE7ۨP0UN%f%3+O8|N RgM?D "<"F7 lH~`P"is7ʭ:IZ3{>C eȇ{Ch/fs]]QDtX_D)`Z?Rb`j}EYNVdVf[f4Uy㼓\nVDx5zb\F HETY7%B-=63Ǚ[ay<ڿE&b1`U10᥺+J@*CeUᏢPK:"|\)tj'ӑ º ~rҵ5o~ xw2{Z_q aj%υ)uAf+rDNjx7ӫQD9bWB=\4i}PnOf];-^P/?[y5 B,53fq3!d|64D˲-`QOiJ2|WsI'N)mq΁:|#2f>&g6ʦv(ߢ\[h! 2_i5[yy Ne뫽y/b8P #m,+ g!uhw&azz~rej_mODK.V OxL_qāBozCqpOT' E r&kB<$# ƣQ+;#QLV_cx6Aq^ @RR ߱lUWD/uctsnPt#kkzTgX) ryZȠI{OU@,C k]c+UJD>B9edEG$ puTmB;vđ8OGZ/vG¡{KԖ렶GRA-6i-xՈY{oqre3H5zbOT~ ] !Gf=€ИBG*eօٴ+ OGl{ly󎇝2BP/)W 0iEb5-Ŏ:yϝe2O25/54KWp9M&!7 jP~p ow6~T Au6y#17x:SU^P HOO/EO4/i[_2flHB_b $2P{S^(p[3FG8nkz~<Ϋ^pnbru1HE;`60&zO 3#`I83]ͫѻXa1]=OFerF.zb{dNierWzX2$ Tjwgτ3"M w̃KSޠ!=ST[MʐދY+Ӑ կ[ MQs!>ѯ,kÉ .fWh28av-Ԡ.[QO* ;oCW7iF eOy .G15jG1fbڸ5"KW^{{N-) zj! !o}7ƥƽ;$>`7ۅ5/Gy.ʡbtwX(^dAÌp1,:d/2MQk(bXOCtȥs2XLDT.V1sM~(9'`mb u3aU߹$asZF_lqXtTkx0ӱrr&.hkh1ؓ@-+r-#%y_UN| \mZNrr6nA-֧Pa_ɧՄ;gkVY<*zZ~Mk G6 #Nz㲅'2gU~Rf?`W34Ak,$f0v8=kpv *rH?֑(XaV>(254fQuZn=Wu]"*1_]mͱ:dR: G_MЅ/X{ _u-niC"Ѱ}[Ҥ>€iy裆Ke: ZaN:Q*Qy_+OufNrI,[@<v;יNudC #zo#Pq|D6[giޖ]':&c9 2o0B01at3&O3(t*Y~ @z9:R'}83ݩYj\f]3ƁS%r RŻO!F9 FׯF+hՏOHlr"!JSO$>p~(?)ȽbXIy^ DdS[AI;0Y{ yY06פ>Cd􀅴lJluE(m&qO,)ҷ}`bՂ_K[b!4m?cיb}yS2hBEȧlv1eE0+7xI?-V[8^1³:(RjjW9rjdBMAUw!]ylBzQ_IlYtP~.%6/UQ?yw!BlCˁEqQRIDCQ+DBFu*Ontߛf Kٵ#2tC穚m7qJCdse2CZE^L, rtm,k'&&pē"4 }"1Ӫ?u"G >  ʓ.w3rQH.s۽x$M 6M'!UYC湃I`dm.fC ЛSd8#ϥيNd;PD_ s E"Ḅ\P+gxq'V.&B\V^GL{D̈́$H;fJ JZo.vgFubeY5cF7sBp Sx4]2I"If9 Pɻ ppX:K ]?Y/OfE P8eC/G: ԩ;*!zKF5EZLğlErl.ߚ(5 q"% {:҅R@uqN3T[f۵$Ө!ۅ{ľSʃ9DQqs'~WƀH&j}.Ie9JU+<E/Xh]y-b1-:,HeG A7("},Dw$3s(L~ ?ЊkP~Uf)6~MPiH #mL<,sRQS`msTTUAM=Bhb⌰EBN=EQXtH6m*LZ`Hɯ;p& i/`UF,,itiV* y*մMCdxy`"iwze[٠ŵR r$~^di|, ܥ`~k2]f)O48#ֿ*OhgShMAiQP% Kn9d\ V:ZvJT͞G;亅IV {. {J)gP_&sFT1%%xa+bM 7# VBdUWyO3 %hO[Mu\ (dMˊy׏9Aٯ6 Jn7ZvV.,1(>Q~w1-]h!Ok:cQwIvҧ4@&a3YS-&9o]Xgrf;{"YnvAxQw˹ԍȨ=xXG|L.r\<ם?Da^VeɟfA{Q)˻ki<vz<2|V:'++UǢyj3*ئ3]f9qtK>w U.@&G9&'C~Æg)\3DGBj/e9]a1X~PxwPkJ)[Ҕ[h.o"$[l^~VBvgY0kX);Ga zN19Z8JQjTw^ZTڥ`#YͰ5<8H0]1, sg}8 Gq|4rzbc Aף3l-g81t- SIq]^.ΈXϣCGKKhҭG͹5\vo C`vt s-+5^$3 LˑQq:*1klyZf5!LwbgUڀ:$V-tyT"Іf%w)9{LxDAbƣjʷ֐7z=LI/ex7Gf de@YP)*O ( _Z},i3+خDlM`҆(Bݪ;.Acu&ryd_ƊEuPJ{ '&S۩xG(sй.>wm$ߣm吗W? (v>IP5I-Klb%d)r)RhJE7Hʑ}X?<~ ,k8TTgpOk/Vnt=HMs-09|7} s^$n58T$QL.?v_ d2MΪ DІTM9J';"ޯMW#hu/pU߷6QU%R6ǁ^8h]:ѸpiDQ:VNr_XH(V?",0}݆pK$wQ6>:iW`'TuNl+ݻh((b'Ӽ a\E\0O(HXܐ E.Gڢ,>:ˊ) CMԤcrJɅ+XSOycҐ5/D8 d{끧2kvHɤwaaoldݹj7Hv+LӋoshS%d<dbUd5ݷ#\ G#F0zC\z^u,jYe(qQJqѽ@mEM(ߎvR17lԲ;K; pu]gR ڲ,?Ղmc!#9\QnIY rĒ~, zK4'g,p+k d^w4A ljpьw<i[ endstream endobj 580 0 obj << /Length1 725 /Length2 16161 /Length3 0 /Length 16663 /Filter /FlateDecode >> stream xlc.]-\ze۶m۶mۮe۶˶97g2XcȘ3V&)#-#@YLE@ CF&djbio'bbP75(:L 0da{O'Ks 1տ5CK[K'Mٕɕ$eSS) ,))'Sڙ:\l,2ƦvΦT3{'09?̜m*br*Qaza @Ft;gM]\_l W2_N`&.#SsK;&igf`\r&fDښ(m\]L&NvqdB m-m<O?dڙCLb& .jF?pϩxʿףQ"[N&k[??XW5tqh3D=iXlFfVF35vur2s71ƪ1wUzkXh|8**#L6尅5΃ N;\ɇbxSUR*s; z7`jضr`.A ,yyc *:v֗ĩt)P~Lhj-Bn7@ nɰ-*µ 5%0Evwݪㆷ!2Wt G!oywe syTwyY|#^fu(\f)twEa`l6W\d'9&Q+-O1ۣo΋>ym )e@l]ځmڝAK%U2=1['",ݚκpv8R [2g5 y &\5_Ү#K\TEzW<2ҷJ5< UxKʠzS!O,>8c;Oz^W/MrBFN*A81u_oݭ2̽췸ڪDP0 !e 3-GK^eGqsGx^䀍^R\D K$}u󾃬?FDsuVw(BVŏbqz6+?1w~*eM^n@wתJ.ޖD:cqtzgz -U<8#)-{íAi\y-!wY}ɖX7nkK Fvg(KI N94ġBFhvvyRC8EWW2?c}aagQxb]c~E990RFD4>:+=(s qwtUm[<8"\cX`FyCrPܪsmgSiTB'vk?q';-4^ܑ&l dr1CwDwPڋ.hutJ9Ro,eE Em\9͕Z%W OIo=2=Qg9'>cn G `1L7~&96zv3CCHl ȊFg-N"}РQDU*eԢB~Jmp!%+NIiAnWO%iwI0[9^<91N/ʏ,[<,gScjEj=Z9]= Ͳcsg呇Vz 9ۋoضUK(j0p0%$9uyV |ė֙2P)M:bswmc=N̩@^t{#2FF,8$Y;(>.A>I#ūN9_L}T(qGMhѧYu۷k^م|:u,RNoXXgQdt8|cAt${ A]c -(*n&@rwaP[O+o2\7:^uaBߘR2ͭt ܪ 5ߚ#S?j7L$IK3;SAsaɃ!fES%p3iid6aKu0U˙Yg*.MR?g&O'2sʻ!A]icԸ!Ʊ${r:\i_@torڏ&cf"쑫~5']>oF(G #C+_o&װ-9n ]LͫJ^]:$4{+]^$ +ug!guCK6I3(hցAzk~jp{G*TvJ@olR'תyN&x41q@L8 4\ڠ}C$`agY$ p{lr>֫-ҩbPL;&,^Up$cu K0JMȓig4ÚoR W?hY/[Ь&UOxOkh!=P7GeûQt.>ԕgd!P\ -@?' OP_v@HH:eY,P+{P?aM|}P+jo e[ BW3f!83Ecs^ʊ,RMr?%ˠiQw'X7zwMStBufNH6G[.(fVAng*~afɦ !ƨ;EuKoUH BCp,eZoy DODeAcCCf&T= @L>`';ͩ^7n45߹&.gt@[O ق&(DSDIP*:LB}eJܕdƯ*Hehq՚[pPe(=hejP'/ [XR@0'd}>,-BΉ{p3_tc.L[=ڣx!q :U >mx&܂EC)tk2U[-zaZ(k2nT 4^w%3K3̉{4!kjJ"nۦp2qo`k/?zH.T"*=2c4q&x2SOCb^Bq$t&ʃAZ̻N_,V/ty4~>2L+/{sRJ&/MK%/۳GBfKq)*XϪkGK8][LY/W~M>T^1gޟ!ø s$Ï22g"v|˔H 瘡܂YB$\ZXAs× pec(D g"Rmg۵J3 8+{KԒ~ O^FǓ::%*{bJw܂!.)O2~k{14f܋qy\'Zj*N:jnNelZ&VdC)tRޚh{fNLjܷ/B&a68={UXY q@F\ys\qa]sޞWihvP?9r@8K#=s?U3a3uA4<+dډB>'c8XTOPŀ14"c캱o kG@,K/t[*, W b͏KkvL-%DHqRe[]&sQr> thO&)U޸Fnsm4#GT.Ljkܑ/w%&"]#:F~$ o1 Uٓ_'`- AJl}~V|x.8슴vh/@Lq{E\V|HA[tsMf%0e65VxW P ^]g3!3źt r;NNjNFV[`Q Z,o1n0b>a?PtRձ%H坫}] ϫH.(9&o@K Sj<_$q_g!sI8nⅣRcf2+DT @*O"ѿFo!p6ST^”J:Ϙ4M88 ~M9|<1A F'h&r\S#K #޸jz^cY9ҝ,|=OB^0T!eq_"S4]ίSNdk8 !EBth㯎 ۪?0Gד-1t`,x្d;<$?65l\k<ۂ.c,L¿_?˱eӼSk/Rzs@Ҥ*H{u^2Е=m\Noµ--$R}ǒYxNHdRrlЃ]uaе!8&MQ,[ߜ3/}3)M65H"RvE$71IΟ6;7u][H} z!Mփ;H]_WQ@+OrjPU 1Re\Èe]qTдϟ*8WkaoM|DsDE8,{SPq=+:ÅmĚ~ö'ttMh,@_~ud[p *Ga3wP887;S޿FR`> LF헣正e!=.e_ yVRdxoqV}7P4P^vmt!ƥsMQL.6rYb[9^=xǪmeAqJP@CcXI`VqMv1΁;KZ52a$U[9G׆qN`F^䎥Th?:;n<9Ļ a& j$!d2jԇaZ,G)EL c kpIb(&{2":$<Ņ/ `r&_Q-l|tu{hf۪=.|pԶ*|U.# 0u臜bI>9G@'2;xˢd2z|*QabSUgM^Ò{Tp]1@AުiuXpٟ'?M-lwK!+gB1?LcJ,hƙ+B#^^.Iv]LO֟|Wa]}_H 7㖲5܏XV^P^ C{xt'ܳYb] m-Zrn7c]{Dj`O/X/~[-m'.s Gl]z(SriЮA̚Ź21\,fg~ⶤxb~6N*PY0'uU%|O QpϘ`=3h'Gj9ރ#6&H^Rݘ]t> æb`6  'nYL^55ӈQ:]ҍ֢L=r2,mf\ҷOړ,Ncyb"CHnpԛpqnaoUrsK+,-R Z-gohG=Bv!-ߔ/FZ>yo:ird,mO]Q&ri?1I bRI\Iłx5Ʒ)n.6j}%&4s6Bf'~UoCyLtR9lՠQ 12^˸,߈g SbJcv/)w 7pmA÷f&A.Ye#.'0&MBа,ƑkIne_Bˠy%W^q7 |L%*{meu RERxIfLsû块e[VxޗTOtk RtuY ATBj18O^S"9L__[)jYbM}V˹`W}X-f{aϺ\jͶbْnjϬTӚ|6o|cO%x!|ǹR$[tH*_~@e*"`;I KT>B`5IwlRz7dRDM8ږ17]fA!AĄ#NEH C#F/f`t ^>?ɓ\N"v x."r]U6vG;ԘmbaMY0(Nks9iE;^I(y)[ % q줦 e\yT]{xҊz]ن=_yB~܄e%Wj#$;"ߋs-jӽ@lLbl挵8h e?{_I |s^x/4rf;vEO_|_P]MH'3ZT@0K3';KyBNWtwC<;HXih/A)yc: gBT_&/#jxJMEw/F(h Rf#yYIrZvV^*+PivLǣIx y= ,r[Co3M#&F-}T*KM^45QjRЌE<;O'r[FpO{؄qfIHPDV&ErwQ<s#3cBuz9=s-7D~Q!V%m%s=N]4h52zxOĔ)S jK_8rFqZ_t[-%F݉dy˝>1 лUƷav$zjoĺn$"1h}95 #R]<32"%c#׵P~>4+k^-WY(gjNB%^oZ+?'鳯AB@t`cz.4;,>TT=x|;nl g$lY/1e{=xr_İ%9<}&%{lre1<7i4ʎUďs]Y.6\zD8̄ yn:'!͖EGѻX5:El.'KJ1j"Kc.a[uMk,G Yb^b7Gm8Ub f 9Ԏ|; w<~$ [V%ȑ~hnQ.A $yݱjeMkM?/xۻH~8кH,V808~>:A]R)78WNWBh4r7X }AM?:Ug-3vb@zv5XDPT'|K{kZIlGr&v1K⅞%!pVq3(xT[gu~G! <̨ys6uF2$ ȗk!3fpjUE_vTPԊ>~AW> ā;돉c[ǹr>1%lc:k dN@B8NpT@eq'x%sfw-G#P'q!ZfA  :d9w)K_s!-++,2{s3 Ԇ8lm=+}B>{ZoV`DKA#L9&%[V/5muC@-&]%%bgc1Yfc?ي+,)3(e7}.ʳqQN{kr}j.6GլҏGݟuDŽr!'S ٯqx,q͂=)ioyA<اxۂC]aU+˖}HJ&Ø\4u_w߿\v0uiwZ0zm85u\l2mَiđ58ȩ9R{ySTm+Z^9Ow򴥉2f+һb]obͦ>%] 2R5X3%z󙮴0)^\M]@S3=,Cro3tá٘ߐA3t<ȁh")gxB0~Or:,R*bD{srF͵ڍ&[I ,P\HWե֝]x/G} Zm|j r"'rQbⲄTA̜hq1OeYr^5Vط#Gd.tk׸tw">,Z,9'#d, cddGVOYJ˅Ey٣ptK 5m3}C-#Mi)EK³{ L,PӶI =D- ``Xx6>!LF]YQ23<`l ga:e`}3+o"}/FtR6vZ 8WGY:S6-07,%Ke2au?,V؞:i\K{Np&awN}sG$][8*8#yif\ji>WN/_g?ҁ3<aio?XMİDrc)@ zl}Ob؎ [؂SцͷN)=%h$]m=a,M]DK*E:! [yMKԸFd$F\ 1 0aYu6߁"W+zs &ۃUᴍ&5zٯKcuq+AuͩdDJ#A<:6'ZW 8705gnHN>4x[ yN-_d Gk&Q.|[K$l${"*5!qSNKOeKk׭1>cll!2 d398)-e-9x[Yz5(@_ɜL} 7Q`syl-wJw 6"/hGA/@Òάo=4Wt c?~;}ت뤍=3EAlq%~ ˡ2hA:S=$9d\`>\IUf}X(ŵA13eA0%Kcu5]Q}\{ث6ș1 WkXKjm__ޡ$fkD?m 7e. >`.}U8Fai!apww8h’ާK sRyXlu%fr~!.U-qIr] ro񻮊 #MX,1^  ʺg45WcFQ-JXܐ7z Fᚢ ƁzlV=x҄X/[!Skrw~N]8UDCcg\kr"z)[Ml{M]%iTxFL@r괛j5 W֫{y c[=g#m %;ۥWsF-T(t\Ae/A<s$QO IGQQ'H+Ri8aM]>):wvVE#GKڎ&&dH@V{"qù@Cw ;N"1= Dm֮{kavzY ~JDlCiK* ?ـ" }%Yto=$ ^o]7U9|2oZƒ >˚_X))ˠ h0$P}:/7w-!i/IbTV!)?@DLlrنb@G<CSU v(FbQ tmPGE^'?/fރy+?^+Q*zw]4h-~t+9ݮ[ zpn3j"5Y(S,kvmu9#X ä9À \#HYd5HDbԿԣhL`y"*iH34e)<Δ Zn(}?E;7_U{w]>[-Μ~c~)Lz>3> 6?/P}pMv\ hu,'%Be_$nJ' 'mer 5:FH@fOIhYHy)lM\-$LCi0:=s`+4ӈCz%v΀oJLMn:rpkP,}~͸eeWPv5c{D&[7硼fs刀~q~c}}*y-7-jv8⢜LyOvUKF+h>wyShQPeP}m?ҟ\AIAv[B$=#Cfׅ\gH{=:&Fӄ?X[_L8RU."`kF#'Da&[|U 4ץkdM}AM 4+"%[j;c;5 jQXlS(nfwZցgw aYL6ZU̢Upܱ/Ęc}b&Dqy{ 粖?m7?ඹe^ҿ9D(.j竼T9o6-,}H2SL((eMU+qQ6TGp4CPEp MA!YAEW#:PMg ] :OCnV:W=L ~9DnSt4hVU/& pE?˝i4#[K j=4> stream x[S8_!fvv[ e[hN6$4 vIeIYw.Mh,.ŘHVטZ RQo"0*l`4UV?zs隠l ݱJU :ҵ =( Gu*cܷjVi}pli-U# qu@p!b[i_'y#Wh R Pa)İ0h51_ + t_tݧ *C <U_PW0+Ch*@!SC`@ Eh/84EY~ZZz%i$T0&sgr  ~8IPxuPyugk| * 5ޥVd8q+PZի(>Tށw55E&<' mA+u/'}i } gE}8PѤ¯> _% ~ae1x?Tvš^ul;^F\ G*N@uC ~h@p<j~j(|"Ae]~ )|~Wkc"gYq 28G >:+*eBp({5\ͼ—h}@NX-/%<75> >Q0 ,gطtXy 53d5IH-R_nqum ^J0/!UB[<{ygdN7!͇1alvdτ<$ySI?V||-h;>Knx8<'nx[mR|<ʯÛp3E2[hױ`ޫ= | HbQx[9davF5caW&# "%Hj4gʀki>S .fdl^ǁɋ>NV]ɧX$܁y,[~ ;&ܧ: r>mxyQ ׀ kMQ3?ktp5c}fi[`Da+h[~0K<y&w0Q5/ptBIWkwv؎EfKΠ[리UwΎ_);8PjJk߅pN7P¬z~pԣѹmq2f^~F}W%q0Cf-Th4VQ#W nAm,ㇻ Plx3~ PՄƙ4o&^ktvc+3a(KN ]7䓺%kaǻGhΘvx*S 7;ɵ#pd~nB |x?z}n6X WU5pb<>\dYӺ% gTJoz=sFgMҞPRvzzWsU**%"~,ʥT贬>h_N00km{_l0HJ(3vaV o[|}3Msw GUŵ]:Zk{dowOv_u(? M嫮]o+lO.(Ekm}v 3#ʶ~y@B$Uj\<Mn>9[N:a օo\!.[ӽC5[h ~c# -%n|9R8!s/YY : " ,Ǚ75P#b8р Aqlx5opcʦxOSlח&!!\D:nx櫿tєkSY|}7nM)]ؚ%[_zMWScQb}W*M 1籮T7߂4k4q)ڡB хxm_=68nӦt$&Mnj+qx6j7 'd7H晼)^<">k6gS50@`a`twa+kxk%*t#tBţZC#VHU4z;gpD<`xï<կWpb܇h xX.\ Nodu36yn&#26ڌ(KGY!wˈ w 2D~50q< XzӚ gL8baU&E.V#TY*2""k+YtLVgk"<qχh8u>ɳ(s\9)?MRXN i%Vei=T*5x*WG^e5ujWٌVjĎPIe-G9-ޔX"<+u%MQr-faGWZZnKneV(`K-_b4MA4٦G ECXYp|mJfSlKx{S^D.ֺ[Jb1] 0z$'5ZL%vT)`Ud+EUbh7LMa*t0E:I. DlOKde%&dlD h`@; 4A&Ӂ( -@ײZD2㣸ƎKGFO-8/Y:8"1m+Ed\YDԼS^IvFo D&ZxTlP>S }4M.N9jџ>{@,8O.o|?\ƴkp"wyCvKSrt05^`!P]St8@=qS0otNUX>=ݡv@m OYazx0 h8>pζρu8g[Te}M@V LkqjC)Є34EŅY pَ<ja`lOAю{I S 㣾x. 4, mŬ/\F0KG|taq)F+K%Ub อje8QHq%j+v8IbSM@?p#t 3טȺU1ZRu(qUéH00S1qj GTSpzU^kcj"\ Eh|iHa \uxT<Մ<l:@_%W#4%enDQR"M# q#\mp$B{6/}%`VЉ)݂j$L\3a? G?4a^n5=j^(gF endstream endobj 609 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.14)/Keywords() /CreationDate (D:20210125163748+01'00') /ModDate (D:20210125163748+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian) kpathsea version 6.1.1) >> endobj 600 0 obj << /Type /ObjStm /N 9 /First 70 /Length 402 /Filter /FlateDecode >> stream xڍSn0 >Ip BۺvZSm -UZ g$5B<~K@Fb HƠ&#奩fT|̦.c ȧ"R+}R>{2>pjc[viq(ꁓ앗e/lnȮm:Er4")DUC)9hrXxf1il$G#dSאMmʡMumR &Gaԡ_Ekjsw&8PUKCt븯*@}WZ$Z;l"hrSQ}Tޑ_?'5}ZƛV_}qllFְt 9f_)]2ÂL4I? \/4/ endstream endobj 610 0 obj << /Type /XRef /Index [0 611] /Size 611 /W [1 3 1] /Root 608 0 R /Info 609 0 R /ID [<2E3F7A00440BD46C70C7E12FFB94EAFE> <2E3F7A00440BD46C70C7E12FFB94EAFE>] /Length 1516 /Filter /FlateDecode >> stream x%[lTU83g7z/PZ3@Zh()E$$B4cQY & X &DN")m40-BN-F%I 6*ѶA m i>(@F!-Eh=hä`Z/i (EGLZ6VJMhUmm#L0 m ٠m;P;4~:0-m=<0mmZ"P4u%mh֐VhI,%`ne t9Xւt/+A'.4z^ׂP;Yԁ2DR]] jj52\"W2(ʻ2ܾ  L}`?`IE$ۧМVkƱ YP06鰼KZPqPw.MiP`A1+0hWlA}̠0` Zp fwkw+`( 7SWm4+;և`U/Uj͵KTT ,z[Z#s[,*c(Z N;YxZZ©Y6 nOh0ͭJ1âc:Vfng] 6s-|H R*`B6 iiwZx4-U,T"(Tr&U%EE`E^QABޔf0h@;2PoKUXt hl]Gl;X,~ZU6l7&i ,qS`ayI ,5W Xփ~06] ,Gh;#` QK]Ӹ3jї?+K`%[@;} ?h#F"L`Z|太fV|l,_rԢIsy1/[' x3F-)M7y,nKi_`|R"{S<~6.Cĉy}aY<R7飉<O~cU|Ň`B =8Z0F0hKgUC~7*b.6/>+m`p{x]57 :cV*U@@GN1uxJZ|q NYຢe*J[恢>Ron**7E -{",EQeA ˜QTbwZϊ,}r? ?qUQCQPQ5XVv ƁhH3m:[кT*ѺѺѺ%❩+?w endstream endobj startxref 924398 %%EOF Epi/inst/doc/simLexis.R0000644000176200001440000004201314003563040014424 0ustar liggesusers### R code from vignette source 'simLexis' ### Encoding: UTF-8 ################################################### ### code chunk number 1: simLexis.rnw:23-26 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) ################################################### ### code chunk number 2: start ################################################### options( width=90 ) library( Epi ) print( sessionInfo(), l=F ) ################################################### ### code chunk number 3: Lexis ################################################### data(DMlate) dml <- Lexis( entry = list(Per=dodm, Age=dodm-dobth, DMdur=0 ), exit = list(Per=dox), exit.status = factor(!is.na(dodth),labels=c("DM","Dead")), data = DMlate ) ################################################### ### code chunk number 4: cut ################################################### dmi <- cutLexis( dml, cut = dml$doins, pre = "DM", new.state = "Ins", new.scale = "t.Ins", split.states = TRUE ) summary( dmi, timeScales=T ) ################################################### ### code chunk number 5: boxes ################################################### boxes( dmi, boxpos = list(x=c(20,20,80,80), y=c(80,20,80,20)), scale.R = 1000, show.BE = TRUE ) ################################################### ### code chunk number 6: split ################################################### Si <- splitLexis( dmi, seq(0,20,1/4), "DMdur" ) summary( Si ) print( subset( Si, lex.id==97 )[,1:10], digits=6 ) ################################################### ### code chunk number 7: knots ################################################### nk <- 5 ( ai.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( ad.kn <- with( subset(Si,lex.Xst=="Dead"), quantile( Age+lex.dur , probs=(1:nk-0.5)/nk ) ) ) ( di.kn <- with( subset(Si,lex.Xst=="Ins" & lex.Cst!=lex.Xst ), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( dd.kn <- with( subset(Si,lex.Xst=="Dead"), c(0,quantile( DMdur+lex.dur, probs=(1:(nk-1))/nk ) )) ) ( ti.kn <- with( subset(Si,lex.Xst=="Dead(Ins)"), c(0,quantile( t.Ins+lex.dur, probs=(1:(nk-1))/nk ) )) ) ################################################### ### code chunk number 8: Poisson ################################################### library( splines ) DM.Ins <- glm( (lex.Xst=="Ins") ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex, family=poisson, offset=log(lex.dur), data = subset(Si,lex.Cst=="DM") ) ci.exp( DM.Ins ) class( DM.Ins ) ################################################### ### code chunk number 9: simLexis.rnw:282-288 ################################################### DM.Ins <- glm.Lexis( Si, from = "DM", to = "Ins", formula = ~ Ns( Age , knots=ai.kn ) + Ns( DMdur, knots=di.kn ) + I(Per-2000) + sex ) ci.exp( DM.Ins ) class( DM.Ins ) ################################################### ### code chunk number 10: simLexis.rnw:293-302 ################################################### DM.Dead <- glm.Lexis( Si, from = "DM", to = "Dead", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + I(Per-2000) + sex ) Ins.Dead <- glm.Lexis( Si, from = "Ins", formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + Ns( t.Ins, knots=ti.kn ) + I(Per-2000) + sex ) ################################################### ### code chunk number 11: prop-haz ################################################### All.Dead <- glm.Lexis( Si, to = c("Dead(Ins)","Dead"), formula = ~ Ns( Age , knots=ad.kn ) + Ns( DMdur, knots=dd.kn ) + lex.Cst + I(Per-2000) + sex ) round( ci.exp( All.Dead ), 3 ) ################################################### ### code chunk number 12: get-dev ################################################### what <- c("null.deviance","df.null","deviance","df.residual") ( rD <- unlist( DM.Dead[what] ) ) ( rI <- unlist( Ins.Dead[what] ) ) ( rA <- unlist( All.Dead[what] ) ) round( c( dd <- rA-(rI+rD), "pVal"=1-pchisq(dd[3],dd[4]+1) ), 3 ) ################################################### ### code chunk number 13: pr-array ################################################### pr.rates <- NArray( list( DMdur = seq(0,12,0.1), DMage = 4:7*10, r.Ins = c(NA,0,2,5), model = c("DM/Ins","All"), what = c("rate","lo","hi") ) ) str( pr.rates ) ################################################### ### code chunk number 14: mknd ################################################### nd <- data.frame( DMdur = as.numeric( dimnames(pr.rates)[[1]] ), lex.Cst = factor( 1, levels=1:4, labels=levels(Si$lex.Cst) ), sex = factor( 1, levels=1:2, labels=c("M","F")) ) ################################################### ### code chunk number 15: make-pred ################################################### for( ia in dimnames(pr.rates)[[2]] ) { dnew <- transform( nd, Age = as.numeric(ia)+DMdur, Per = 1998+DMdur ) pr.rates[,ia,1,"DM/Ins",] <- ci.pred( DM.Dead, newdata = dnew ) pr.rates[,ia,1,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) for( ii in dimnames(pr.rates)[[3]][-1] ) { dnew = transform( dnew, lex.Cst = factor( 2, levels=1:4, labels=levels(Si$lex.Cst) ), t.Ins = ifelse( (DMdur-as.numeric(ii)) >= 0, DMdur-as.numeric(ii), NA ) ) pr.rates[,ia, ii ,"DM/Ins",] <- ci.pred( Ins.Dead, newdata = dnew ) pr.rates[,ia, ii ,"All" ,] <- ci.pred( All.Dead, newdata = dnew ) } } ################################################### ### code chunk number 16: mort-int ################################################### par( mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, las=1 ) plot( NA, xlim=c(40,82), ylim=c(5,300), bty="n", log="y", xlab="Age", ylab="Mortality rate per 1000 PY" ) abline( v=seq(40,80,5), h=outer(1:9,10^(0:2),"*"), col=gray(0.8) ) for( aa in 4:7*10 ) for( ii in 1:4 ) matshade( aa+as.numeric(dimnames(pr.rates)[[1]]), cbind( pr.rates[,paste(aa),ii,"DM/Ins",], pr.rates[,paste(aa),ii,"All" ,] )*1000, type="l", lty=1, lwd=2, col=c("red","limegreen") ) ################################################### ### code chunk number 17: Tr ################################################### Tr <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = DM.Dead ), "Ins" = list( "Dead(Ins)" = Ins.Dead ) ) ################################################### ### code chunk number 18: make-ini ################################################### str( ini <- Si[NULL,1:9] ) ################################################### ### code chunk number 19: ini-fill ################################################### ini[1:2,"lex.id"] <- 1:2 ini[1:2,"lex.Cst"] <- "DM" ini[1:2,"Per"] <- 1995 ini[1:2,"Age"] <- 60 ini[1:2,"DMdur"] <- 5 ini[1:2,"sex"] <- c("M","F") ini ################################################### ### code chunk number 20: simL ################################################### set.seed( 52381764 ) Nsim <- 5000 system.time( simL <- simLexis( Tr, ini, t.range = 12, N = Nsim ) ) ################################################### ### code chunk number 21: sum-simL ################################################### summary( simL, by="sex" ) ################################################### ### code chunk number 22: Tr.p-simP ################################################### Tr.p <- list( "DM" = list( "Ins" = DM.Ins, "Dead" = All.Dead ), "Ins" = list( "Dead(Ins)" = All.Dead ) ) system.time( simP <- simLexis( Tr.p, ini, t.range = 12, N = Nsim ) ) summary( simP, by="sex" ) ################################################### ### code chunk number 23: Cox-dur ################################################### library( survival ) Cox.Dead <- coxph( Surv( DMdur, DMdur+lex.dur, lex.Xst %in% c("Dead(Ins)","Dead")) ~ Ns( Age-DMdur, knots=ad.kn ) + I(lex.Cst=="Ins") + I(Per-2000) + sex, data = Si ) round( ci.exp( Cox.Dead ), 3 ) ################################################### ### code chunk number 24: TR.c ################################################### Tr.c <- list( "DM" = list( "Ins" = Tr$DM$Ins, "Dead" = Cox.Dead ), "Ins" = list( "Dead(Ins)" = Cox.Dead ) ) system.time( simC <- simLexis( Tr.c, ini, t.range = 12, N = Nsim ) ) summary( simC, by="sex" ) ################################################### ### code chunk number 25: nState ################################################### system.time( nSt <- nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=1995, time.scale="Per" ) ) nSt[1:10,] ################################################### ### code chunk number 26: pstate0 ################################################### pM <- pState( nSt, perm=c(1,2,4,3) ) head( pM ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM ) plot( pM, border="black", col="transparent", lwd=3 ) text( rep(as.numeric(rownames(pM)[nrow(pM)-1]),ncol(pM)), pM[nrow(pM),]-diff(c(0,pM[nrow(pM),]))/5, colnames( pM ), adj=1 ) box( col="white", lwd=3 ) box() ################################################### ### code chunk number 27: pstatex ################################################### clr <- c("limegreen","orange") # expand with a lighter version of the two chosen colors clx <- c( clr, rgb( t( col2rgb( clr[2:1] )*2 + rep(255,3) ) / 3, max=255 ) ) par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men plot( pM, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=1995, time.scale="Per" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Date of FU" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) ################################################### ### code chunk number 28: pstatey ################################################### par( mfrow=c(1,2), las=1, mar=c(3,3,4,2), mgp=c(3,1,0)/1.6 ) # Men pM <- pState( nState( subset(simL,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pM, col=clx, xlab="Age" ) lines( as.numeric(rownames(pM)), pM[,2], lwd=3 ) mtext( "60 year old male, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:19/20, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) # Women pF <- pState( nState( subset(simL,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) plot( pF, col=clx, xlab="Age" ) lines( as.numeric(rownames(pF)), pF[,2], lwd=3 ) mtext( "60 year old female, diagnosed 1990, aged 55", side=3, line=2.5, adj=0, col=gray(0.6) ) mtext( "Survival curve", side=3, line=1.5, adj=0 ) mtext( "DM, no insulin DM, Insulin", side=3, line=0.5, adj=0, col=clr[2] ) mtext( "DM, no insulin", side=3, line=0.5, adj=0, col=clr[1] ) axis( side=4 ) axis( side=4, at=1:9/10, labels=FALSE ) axis( side=4, at=1:19/20, labels=FALSE, tcl=-0.4 ) axis( side=4, at=1:99/100, labels=FALSE, tcl=-0.3 ) ################################################### ### code chunk number 29: comp-0 ################################################### PrM <- pState( nState( subset(simP,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) PrF <- pState( nState( subset(simP,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxM <- pState( nState( subset(simC,sex=="M"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) CoxF <- pState( nState( subset(simC,sex=="F"), at=seq(0,11,0.2), from=60, time.scale="Age" ), perm=c(1,2,4,3) ) par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6 ) plot( pM, border="black", col="transparent", lwd=3 ) lines( PrM, border="blue" , col="transparent", lwd=3 ) lines( CoxM, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "M" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) plot( pF, border="black", col="transparent", lwd=3 ) lines( PrF, border="blue" , col="transparent", lwd=3 ) lines( CoxF, border="red" , col="transparent", lwd=3 ) text( 60.5, 0.05, "F" ) box( lwd=5, col="white" ) ; box( lwd=2, col="black" ) ################################################### ### code chunk number 30: CHANGE1 (eval = FALSE) ################################################### ## source( "../R/simLexis.R", keep.source=TRUE ) ################################################### ### code chunk number 31: CHANGE2 ################################################### simX <- Epi:::simX sim1 <- Epi:::sim1 lint <- Epi:::lint get.next <- Epi:::get.next chop.lex <- Epi:::chop.lex ################################################### ### code chunk number 32: simLexis.rnw:972-975 ################################################### cbind( attr( ini, "time.scales" ), attr( ini, "time.since" ) ) ################################################### ### code chunk number 33: simLexis.rnw:1000-1001 ################################################### simLexis ################################################### ### code chunk number 34: simLexis.rnw:1018-1019 ################################################### simX ################################################### ### code chunk number 35: simLexis.rnw:1031-1032 ################################################### sim1 ################################################### ### code chunk number 36: simLexis.rnw:1044-1045 ################################################### lint ################################################### ### code chunk number 37: simLexis.rnw:1055-1056 ################################################### get.next ################################################### ### code chunk number 38: simLexis.rnw:1065-1066 ################################################### chop.lex ################################################### ### code chunk number 39: simLexis.rnw:1083-1084 ################################################### nState ################################################### ### code chunk number 40: simLexis.rnw:1093-1094 ################################################### pState ################################################### ### code chunk number 41: simLexis.rnw:1098-1100 ################################################### plot.pState lines.pState Epi/inst/doc/crisk.R0000644000176200001440000002347414003562633013763 0ustar liggesusers### R code from vignette source 'crisk' ### Encoding: UTF-8 ################################################### ### code chunk number 1: crisk.rnw:24-27 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) ################################################### ### code chunk number 2: crisk.rnw:83-100 ################################################### library(Epi) library(popEpi) data(DMlate) Ldm <- Lexis(entry = list( per = dodm, age = dodm-dobth, tfd = 0 ), exit = list( per = dox ), exit.status = factor( !is.na(dodth), labels = c("DM","Dead") ), data = DMlate ) summary(Ldm, t = T) Mdm <- mcutLexis( Ldm, wh = c('dooad','doins'), new.states = c('OAD','Ins'), precursor = 'DM', seq.states = FALSE, ties = TRUE ) summary( Mdm ) ################################################### ### code chunk number 3: crisk.rnw:105-107 ################################################### Sdm <- splitMulti(factorize(subset(Mdm, lex.Cst == "DM")), tfd = seq(0, 20, 1/12)) ################################################### ### code chunk number 4: boxes5 ################################################### boxes(Mdm, boxpos = list(x = c(15, 50, 15, 85, 85), y = c(85, 50, 15, 85, 15)), scale.R = 100, show.BE = TRUE) ################################################### ### code chunk number 5: boxes4 ################################################### boxes( Relevel(Sdm, c(1, 4, 2, 3)), boxpos = list(x = c(15, 85, 80, 15), y = c(85, 85, 20, 15)), scale.R = 100, show.BE = TRUE ) ################################################### ### code chunk number 6: crisk.rnw:139-142 ################################################### mD <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Dead') mO <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'OAD' ) mI <- gam.Lexis(Sdm, ~ s(tfd, k = 5), to = 'Ins' ) ################################################### ### code chunk number 7: crisk.rnw:155-160 ################################################### int <- 1/100 nd <- data.frame( tfd = seq(int,10,int)-int/2 ) # not the same as the split, # and totally unrelated to it rownames(nd) <- nd$tfd str(nd) ################################################### ### code chunk number 8: rates ################################################### matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.02,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) ################################################### ### code chunk number 9: crisk.rnw:194-209 ################################################### # rates at midpoints lD <- ci.pred( mD, nd )[,1] lI <- ci.pred( mI, nd )[,1] lO <- ci.pred( mO, nd )[,1] # cumulative rates and survival fuction at right border of the intervals LD <- cumsum(lD) * int LI <- cumsum(lI) * int LO <- cumsum(lO) * int Sv <- exp( -LD - LI - LO ) # but when integrating to get the cumulative risks we use the average # of the survival function at the two endpoints (adding 1 as the first) mp <- function(x) x - diff(c(1, x)) / 2 rD <- cumsum(lD * mp(Sv)) * int rI <- cumsum(lI * mp(Sv)) * int rO <- cumsum(lO * mp(Sv)) * int ################################################### ### code chunk number 10: crisk.rnw:214-218 ################################################### summary(rD + rI +rO + Sv) oo <- options(digits = 20) cbind(summary(Sv + rD + rI + rO)) options(oo) ################################################### ### code chunk number 11: stack ################################################### zz <- mat2pol(cbind(rD,rI,rO,Sv), x = nd$tfd, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen") ) mm <- t(apply(zz,1,mid<-function(x) x[-1]-diff(x)/2)) text( 9, mm[900,], c("Dead","Ins","OAD","DM"), col = "white" ) box(col = "white",lwd = 3) ################################################### ### code chunk number 12: crisk.rnw:278-280 ################################################### head(cbind(ci.pred(mI,nd), ci.exp(mI,nd) )) head(cbind(ci.pred(mI,nd), exp(ci.lin(mI,nd)[,c(1,5:6)]))) ################################################### ### code chunk number 13: crisk.rnw:285-287 ################################################### str(ci.lin(mI, nd, sample = 4)) head(cbind(ci.pred(mI,nd), exp(ci.lin(mI, nd, sample = 4)))) ################################################### ### code chunk number 14: crisk.rnw:319-321 (eval = FALSE) ################################################### ## setwd("/home/bendix/stat/R/examples") ## source('ci.Crisk.R', echo=TRUE, max=10000) ################################################### ### code chunk number 15: crisk.rnw:326-334 ################################################### system.time( res <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = (1:1000-0.5)/100), nB = 1000, perm = 4:1)) str(res) ################################################### ### code chunk number 16: crisk.rnw:364-372 ################################################### system.time( rsm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = (1:1000-0.5)/100), nB = 2000, sim.res = 'rates')) str(rsm) ################################################### ### code chunk number 17: crisk.rnw:379-387 ################################################### system.time( csm <- ci.Crisk(list(OAD = mO, Ins = mI, Dead = mD), nd = data.frame(tfd = (1:1000-0.5)/100), nB = 2000, sim.res = 'crisk')) str(csm) ################################################### ### code chunk number 18: crisk.rnw:406-408 ################################################### Brates <- aperm(apply(rsm, 1:2, Epi:::mnqt), c(2,3,1)) str(Brates) ################################################### ### code chunk number 19: rates-ci ################################################### matshade(nd$tfd, cbind(ci.pred(mD, nd), ci.pred(mI, nd), ci.pred(mO, nd))*1000, ylim = c(0.1,500), yaxt = "n", ylab = "Rates per 1000 PY", xlab = "Time since DM diagnosis (years)", col = c("black","red","blue"), log = "y", lwd = 3, plot = TRUE) matlines(nd$tfd, cbind(Brates[,"Dead",], Brates[,"Ins" ,], Brates[,"OAD" ,])*1000, col = c("white","black","black"), lty = 3, lwd=c(3,1,1)) axis(side = 2, at = ll<-outer(c(1,2,5),-2:3,function(x,y) x*10^y), labels = formatC(ll,digits = 4), las = 1) axis(side = 2, at = ll<-outer(c(1.5,2:9),-2:3,function(x,y) x*10^y), labels = NA, tcl = -0.3) text(0, 0.5*0.6^c(1,2,0), c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) ################################################### ### code chunk number 20: crates ################################################### matshade(c(0,nd$tfd+1/200), cbind(res$Crisk[,"Dead",], res$Crisk[,"Ins" ,], res$Crisk[,"OAD" ,]), plot = TRUE, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Cumulative probability", col = c("black","red","blue")) text(8, 0.3 + c(1,0,2)/25, c("Dead","Ins","OAD"), col = c("black","red","blue"), adj = 0) ################################################### ### code chunk number 21: crisk.rnw:467-469 ################################################### str(res$Crisk) str(res$Srisk) ################################################### ### code chunk number 22: stack-ci ################################################### zz <- mat2pol(res$Crisk[,c("Dead","Ins","OAD","Surv"),1], x = as.numeric(dimnames(res$Crisk)[[1]])/100, xlim = c(0,10), xaxs = "i", yaxs = "i", las = 1, xlab = "Time since DM diagnosis (years)", ylab = "Probability", col = c("black","red","blue","forestgreen") ) mm <- t(apply(zz, 1, mid<-function(x) x[-1] - diff(x) / 2)) text( 9, mm[900,], c("Dead","Ins","OAD","DM"), col = "white" ) matshade(as.numeric(dimnames(res$Srisk)[[1]])/100, cbind(res$Srisk[,1,], res$Srisk[,2,], res$Srisk[,3,]), col = 'transparent', col.shade = "white", alpha = 0.3) ################################################### ### code chunk number 23: crisk.rnw:503-504 ################################################### str(res$Stime) ################################################### ### code chunk number 24: crisk.rnw:507-510 ################################################### s510 <- res$Stime[1:2*500,,] dimnames(s510)[[1]] <- c(" 5 yr","10 yr") round(ftable(s510, row.vars=1:2), 2) Epi/inst/doc/yll.R0000644000176200001440000001611014003563064013434 0ustar liggesusers### R code from vignette source 'yll' ### Encoding: UTF-8 ################################################### ### code chunk number 1: yll.rnw:21-24 ################################################### options( width=90, SweaveHooks=list( fig=function() par(mar=c(3,3,1,1),mgp=c(3,1,0)/1.6,las=1,bty="n") ) ) ################################################### ### code chunk number 2: states ################################################### library( Epi ) TM <- matrix(NA,4,4) rownames(TM) <- colnames(TM) <- c("Well","DM","Dead","Dead(DM)") TM[1,2:3] <- TM[2,4] <- 1 zz <- boxes( TM, boxpos=list(x=c(20,80,20,80),y=c(80,80,20,20)), wm=1.5, hm=4 ) ################################################### ### code chunk number 3: states ################################################### zz$Arrowtext <- c( expression(lambda), expression(mu[W]), expression(mu[D][M]) ) boxes( zz ) ################################################### ### code chunk number 4: yll.rnw:265-266 ################################################### data( DMepi ) ################################################### ### code chunk number 5: yll.rnw:271-273 ################################################### str( DMepi ) head( DMepi ) ################################################### ### code chunk number 6: yll.rnw:293-297 ################################################### DMepi <- transform( subset( DMepi, A>30 ), D.T = D.nD + D.DM, Y.T = Y.nD + Y.DM ) head(DMepi) ################################################### ### code chunk number 7: yll.rnw:303-329 ################################################### # Knots used in all models ( a.kn <- seq(40,95,,6) ) ( p.kn <- seq(1997,2015,,4) ) ( c.kn <- seq(1910,1976,,6) ) # Check the number of events between knots ae <- xtabs( cbind(D.nD,D.DM,X) ~ cut(A,c(30,a.kn,Inf)) + sex, data=DMepi ) ftable( addmargins(ae,1), col.vars=3:2 ) pe <- xtabs( cbind(D.nD,D.DM,X) ~ cut(P,c(1990,p.kn,Inf)) + sex, data=DMepi ) ftable( addmargins(pe,1), col.vars=3:2 ) ce <- xtabs( cbind(D.nD,D.DM,X) ~ cut(P-A,c(-Inf,c.kn,Inf)) + sex, data=DMepi ) ftable( addmargins(ce,1), col.vars=3:2 ) # Fit an APC-model for all transitions, seperately for men and women mW.m <- glm( D.nD ~ -1 + Ns(A ,knots=a.kn,int=TRUE) + Ns( P,knots=p.kn,ref=2005) + Ns(P-A,knots=c.kn,ref=1950), offset = log(Y.nD), family = poisson, data = subset( DMepi, sex=="M" ) ) mD.m <- update( mW.m, D.DM ~ . , offset=log(Y.DM) ) mT.m <- update( mW.m, D.T ~ . , offset=log(Y.T ) ) lW.m <- update( mW.m, X ~ . ) # Model for women mW.f <- update( mW.m, data = subset( DMepi, sex=="F" ) ) mD.f <- update( mD.m, data = subset( DMepi, sex=="F" ) ) mT.f <- update( mT.m, data = subset( DMepi, sex=="F" ) ) lW.f <- update( lW.m, data = subset( DMepi, sex=="F" ) ) ################################################### ### code chunk number 8: yll.rnw:336-373 ################################################### a.ref <- 30:90 p.ref <- 1996:2016 aYLL <- NArray( list( type = c("Imm","Tot","Sus"), sex = levels( DMepi$sex ), age = a.ref, date = p.ref ) ) str( aYLL ) system.time( for( ip in p.ref ) { nd <- data.frame( A = seq(30,90,0.2)+0.1, P = ip, Y.nD = 1, Y.DM = 1, Y.T = 1 ) muW.m <- ci.pred( mW.m, nd )[,1] muD.m <- ci.pred( mD.m, nd )[,1] muT.m <- ci.pred( mT.m, nd )[,1] lam.m <- ci.pred( lW.m, nd )[,1] muW.f <- ci.pred( mW.f, nd )[,1] muD.f <- ci.pred( mD.f, nd )[,1] muT.f <- ci.pred( mT.f, nd )[,1] lam.f <- ci.pred( lW.f, nd )[,1] aYLL["Imm","M",,paste(ip)] <- yll( int=0.2, muW.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Imm","F",,paste(ip)] <- yll( int=0.2, muW.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Tot","M",,paste(ip)] <- yll( int=0.2, muT.m, muD.m, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Tot","F",,paste(ip)] <- yll( int=0.2, muT.f, muD.f, lam=NULL, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Sus","M",,paste(ip)] <- yll( int=0.2, muW.m, muD.m, lam=lam.m, A=a.ref, age.in=30, note=FALSE )[-1] aYLL["Sus","F",,paste(ip)] <- yll( int=0.2, muW.f, muD.f, lam=lam.f, A=a.ref, age.in=30, note=FALSE )[-1] } ) round( ftable( aYLL[,,seq(1,61,10),], col.vars=c(3,2) ), 1 ) ################################################### ### code chunk number 9: imm ################################################### plyll <- function(wh){ par( mfrow=c(1,2), mar=c(3,3,1,1), mgp=c(3,1,0)/1.6, bty="n", las=1 ) matplot( a.ref, aYLL[wh,"M",,], type="l", lty=1, col="blue", lwd=1:2, ylim=c(0,12), xlab="Age", ylab="Years lost to DM", yaxs="i" ) abline(v=50,h=1:10,col=gray(0.7)) text( 90, 11, "Men", col="blue", adj=1 ) text( 40, aYLL[wh,"M","40","1996"], "1996", adj=c(0,0), col="blue" ) text( 43, aYLL[wh,"M","44","2016"], "2016", adj=c(1,1), col="blue" ) matplot( a.ref, aYLL[wh,"F",,], type="l", lty=1, col="red", lwd=1:2, ylim=c(0,12), xlab="Age", ylab="Years lost to DM", yaxs="i" ) abline(v=50,h=1:10,col=gray(0.7)) text( 90, 11, "Women", col="red", adj=1 ) text( 40, aYLL[wh,"F","40","1996"], "1996", adj=c(0,0), col="red" ) text( 43, aYLL[wh,"F","44","2016"], "2016", adj=c(1,1), col="red" ) } plyll("Imm") ################################################### ### code chunk number 10: tot ################################################### plyll("Tot") ################################################### ### code chunk number 11: sus ################################################### plyll("Sus") ################################################### ### code chunk number 12: CHANGE1 (eval = FALSE) ################################################### ## source( "../R/erl.R", keep.source=TRUE ) ################################################### ### code chunk number 13: CHANGE2 ################################################### surv1 <- Epi::surv1 surv2 <- Epi::surv2 erl1 <- Epi::erl1 erl <- Epi::erl yll <- Epi::yll ################################################### ### code chunk number 14: yll.rnw:484-485 ################################################### surv1 ################################################### ### code chunk number 15: yll.rnw:489-490 ################################################### erl1 ################################################### ### code chunk number 16: yll.rnw:497-498 ################################################### surv2 ################################################### ### code chunk number 17: yll.rnw:502-503 ################################################### erl ################################################### ### code chunk number 18: yll.rnw:507-508 ################################################### yll Epi/inst/doc/yll.pdf0000644000176200001440000107322114003563064014013 0ustar liggesusers%PDF-1.5 % 79 0 obj << /Length 789 /Filter /FlateDecode >> stream xڅTn0+x*$ E$Sa; j}qI,,o dsVˬf +:Z3&Tjmmp~EfT|/:|CUKfOSUI[cYv޾W\+:ιc?" np6vK+fil7g/o.a'DXIgS36pVXyPfٷSdBs\SZw6wLō5#,U) i) 'BQ%6Hx{vH:Bi. ? n?5MSN|A6ӆOP󭯑)Q} p2oߘcU uUŸ㺦7U,Y_ ` S|#2/*В:[RTrTv!" GrW#|#B=;!܊H $CPR\KFEǏ:%ڽ|?Q 2#9 /> stream xXn0+tR:m]R/A҃ȱ/A0Џ e1C '␢H͛!YtSCwtH,PQ2+udL2DWq,<^UU'?_ǜg?fQjLyQ#*7QYtk/J2Z<%S!yR2LX3 9c"L,LUkX0!0q) *L3_~*`T)%c Baq  :%i}]чE&Pd/<|`?2#p&n':(V}4ޡ? ؏ׁ܈ǭJ$n<NʦKJ{(J12z|W.'֨7/r;@`^6DV7Ev^)s'^I75Oo|BN6D(RFW Nyh VAhsl$"0mCeA |N)fcR86-Ыf{HPø@xma r7<͋B6X=0bc uav&v<Ԃ- x끠{KJ(rV WaױlZzvRf26{REz0Pg+HFf^174424+tu=)EU{C}+W=GyΟ+Zaμ~9x^)vuJ))UAKsDJΡ|UmKCwq.cvFrĊx[6ѹ5yÆaEҚvt zp\~~)r+^0& d7 _66i] endstream endobj 113 0 obj << /Length 2079 /Filter /FlateDecode >> stream xn#wװ$nHdȜdTWWwWH$ΣI$MHWoW2QjM\Ye#,I>-]ź}/WY/W?UވZjȰXp1x[fkNIG{)ESJs\RCSGt4M \k_s$R՜L C"&ƍR"˔{8-CT˲q<5<=˵@FA{ׄDZ'́D1!{@cOH;z<8\ڪ+)! sR=WeYAkb%6NsϷVQvTZCo_[˥=¨DJ Y~[. )J L)qC8?H'S*uZj6(Af[w=-k>YJ~C8\~4(oA[izkvGV-)cm@K DVB"\"m*r%MFBQ B@ciO,"f&oSap ++$5 |@@x~ 2!H0i0=y}~9qZZ^+.O0xbGO܏†%6,Zp?ciGEdW'RdggԁtZUvt4Ϣ,Ef-9,"E +d) Ve:[;L:rcr-adz1 XG;,n'`B"gW!E ^fx-TVG‘ćuV~G}Lù;/\Hv"f3m]K)RaZ kI._Tidڜ2h|}}yMRа4:68L =z!eH{5X7-Lke(ϥXOys43ݮ폷vi{ֵXZ|Qˊ|b1XTO mlPmPEr0kݝٟL\wc|?.̱:q 0Nz7^7g8ޯ*vC)Bv6킦PPص̽?e}\MPʵOi==Y2٭X0w<6#M4!҈BJҶLgB61]_͈VcZf/VǦ-ݠU QfNɛîb6XA:ر 7Τ2-:4&+Ͻ}J[HZ|FJx9ѺHGQ+K6vw ۨHz.5˩c`hDžѕֺ?.zGfL1y5RakgO?ƻK(iw2. Kb~H>!Lf*wn|?\́bw endstream endobj 127 0 obj << /Length 1857 /Filter /FlateDecode >> stream xڕXmo6_! ԊWk0lͺkl 0 i?( %WR؏ߑwGR2fdSґ{x/)eU.{ĕF/?5frYA"Jr =Ԏ>'F(4"H: [.RWP,;0"C*DrTnO׽N%;gSL&LPƗdGGk79z46hAܓoV3* Jfa9y OSnf< J%ɬ(sF(u.*:J9 Y(=.h]Yl筻xs>yNꂈ).yU牰Bps'B0;7xEpPQ>]r8R/9V9i ҙɼr^$A7Nc%*("I5Tx=x}eDPAk<1 OS=$JR2Qk4]3YøT ^ofT1i;zy3Zں*]͡rN+WxEPdQ&umrTs?$bf N2eFRmDmH@"Ju)r'E5aq7OQ?N%Ie qNˊG"wHNgjBt='YP̸҆O%MKIR(R)gˤE{I-k<,Y؜JZ/]щ7~]qlOlfDG5qYqU[9X*u^ثr_n3X@9ZmC Ӡv.A|!an40{ÔX~l,gNX3'AC>t~4M ǎ޼#ӧt9jieV荲YwwS~){RGG0n!Xgp&vJְVfI辐^T(bˌ։צ^΂0~qXҏe;2Q  `jc :٠b[Ckma` x-^mpAVњD?jqJw ^oi_,#wW n)Y5;`Am>X5E:ۯ~S{rc=;Zj,} Wv ,*Z~T6k⩔&8Ezi endstream endobj 124 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./yll-states.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 131 0 R /BBox [0 0 360 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 132 0 R/F6 133 0 R>> /ExtGState << >>/ColorSpace << /sRGB 134 0 R >>>> /Length 897 /Filter /FlateDecode >> stream xKO@F$aޏ-VBM$EtJ-{={Lm&IVpv>nlY7=~3\C;#8pE4ps!C7;i5\f&KL`W0"&PI٭ab(4K01]b:b 6iT7PI7q z~IyĺX4?ϴPJ/017 ta90*f&mݛC7qTKĹ0atȐ<8g{'fܵ84lbFk0xV1@%ę^W?`r`aw<++-CȃAPՂfOy/!Jӂy=<ƕX,,!j7ffqKȃ3QSȃQ)Y0*B 90Qgu[B,C4z#N" jgvokc73zӛSTof0Mǃ'NxVɏn?5Tc endstream endobj 136 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 140 0 obj << /Length 2752 /Filter /FlateDecode >> stream xZKϯ rnC؁Fz4E+4ӏjxaFݬG38ݟw88gUhIE*|5哶y:KD6wzaf*Z~6FWWl^>RĂeY"EOr ;(AGx4K'G-FmDo_Κ-e Z[L@'i 5X3_;.wXWQ8Z~bƣ'=ny ^Mw152gYRɕ+&tZJG'eQ]zj5|w^kk.ͣH2AIF0SKvC_zNr1f1k[gare8Bz@3O}`~9ߓZvɀͥ6CӒd q(cv4mtT}ژаZ+VjȱԂ[Kx"EjʅeO Fh&} AMc\$5&rIFE:ypT^L{|&`< ub+6DJ9/Ǎ҃?8F׹@`j9E@G7V2#=gnC#2T&c Tu+G[z&P8 ޓߏI_yt$2grA}>ȏɥgCBpޖ꛵h6`^;&O1a4\~o-k^{/MF_DqFߋIf:3pML4 ;.ЏuDO(m 6Q+g$iA>B(l(L(L6A$(t~TS#X=4.CyRF[?NG[aZXBtّfT⏺z*LRL$F'A jK7g&PO QCs$[@X8MA@EY"I!l : Ũ%U aHgIk58F>@_*19֗Xu3.XoH4z|΋CF, ?5;@v&Ry"ϧү,y#l]>`ߟ,A#eDSZkyqN$l=נ_mh@/$4j^lfi1BGgnH|v }-_avŮ[ :ݷzߎMvD.clrdl$=*h}$g-mLԮ!3&)vcv0][a$أ~]dY3Q1g~7͵xxXM6V@5.K '>TRK肕<%kҌk:%J"cgl7f rk\R: M-bɃLg O5kIt-BjeF@HSmbEoDM4a{}K bɖi/CPʼnӍ~\ < }Uj uJ'zT{HK rgF|q]`#"72uY"YVf~E7\ecE$"9RbG`&eY ΜEtd܏70CkKQq(`W Gȥe޾RA2TJ*8)pLu)a44鵦w FY3 ya,+X-'6KmxfNK0fۿ6T7o{M~}m,ƾ kw(:~y@ fo> stream x[[s~ׯ=FM6Φiu'8)rE9\ @.Yy7<ȢMĹ};qU,O7^ \`Iq3/CBɆ7wmɮ|KBB0pCP\p,Hƍ} ᳅Yo.VWSJx9W3^ X5|~]ީK3\?N(]PFTVqDA)v~NwFUAu)f훪{I[H`׫䟓*CՑ5XŁAV]fT⬯(h^BF7J.'_UL A3+IFQ֝5Dww?^v5F:k=8?bqkߌ#wή]}/}~i{'.߂5L$ ܡxk3@Js`-j>= jC!^(֚R}0iD_ݾD?V_۝2ƃ虾XauBjpW Xtn^b5;qE"xp:ɇ^mf:ԅ榩f4X,4_$"5usr_IPj@d:N<0_yYk w\֯Aʿ& 9;*|)UN)&2W*0 MVA77)P;<5S\$47)j10H}I0Wgɮ;u0h֫uIFl7%EK쳬#{1ڹE/"9LL_ v]|#2&\Z)}[~*XJij=\KixT~-*gWA2c׃JF:'QKǯڳXކ SqBݫT,tY_ZqCvD 9u/L+ dc%_c69\Bg$ERa@ 0+la(#q0هQDفE"B2.iN9C* d /7(@.-5.MQH6|B\6iU\B(_yn a f[d!xhUfK`5+ ! Ha# MÀ҃$ Wa}|̛iHyĥft]$d{>Ehn:`rBGr+W6ABuJ҇y+R)]H'7ӻ03˅.P *\;3DH$˷cĉH379f ^Y%A{|1LNpiFi4}a$T9JDGA}Z' +kjmHHr1LwOPl*{/6eJtuՓ9J`18Pxc/edA6q5)\5n>V>;gKSnÍp7S&ج<$:,Mݡ/5j3A=뼫5IB@Rׯ$h6`*ފX|VQ8&j"TD{=PgAm9`bwX1EqG/K.xa'd )?wJ?D +ϊORzYbKUsavy~z1{b -UmuFU IW-ч!t;"]^mD 8\.Gmt'b|iz :=rLn1a9gxe{tԜ雒y9-*Q VV\9ƞ(D]i7`f*5X={:ںgzڨvgaN!~22z;Jڽ?k+-V]XyjZw>֟ @?% k|{[_cҳMbp5}Nq;=2c?t3[@}>}8\bYf8ڒzOUkܟ*hH7 s۝i"e2|H`пʟ IV@LPX^ĦE\ip\7E^A3 4jH ] ^a=F_'7? [b o&i9Jd9ݘ,ϙZ HRz7tL|MWt> stream xXKF WQFɐTZ$)@4nR,ɘ, $H --껮zdYwìNjfm]+Yfó.Ӣ>KXj_}/v/@D\kI5 AN?e/,N ׇdBzImws OqHz/`£HpvxM}O_._]P۰)0U܀w3`HZl޼lM^2} r;,US%I8T-W4[(S]GkkUJ2F賲5*{|SbuY6DnY:%`I]$np3jVmJ-wZ%nKY~Z qHB˒Ar7f͟wqj;mVIJNkB[Zb9[RhV#X)5(y 0$* H_m;LY.<`|]!fTN1"WE7܄ 94WqWA+dIPi9=źPk<2)?p3*JzPH< 6VW*^޷B_&5{"ɾCtܢ/~Y_ (26wnfN= k謥>S6r#u}|or5n.u%ѻQVWHj.reޓTm8)՗Y=.ȓ~?謹 endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 789 /Length 2277 /Filter /FlateDecode >> stream xڽYn9}W10l/c= q;mKjId˲|[FbTȖL0˴d"I?k0$Ɉ¿dّRLCRAha:"ӐԂIϴa&3 :0k Gacǜ @Awxcֳ6Ʋ(=i,b α#sK<-Fc"X(I 1,ڱJ#(@B(HZg>H = h BX\  1" ET@E* j|SP*3@;P 0L Eyp~$Q30"]`Kc 2K8 Zq<30bD#"Z Jh1мX5Z`) ImXW`b8D("2pbmQ\4`ڝ$Ռ$Vhz%` _b_n5<-w#ah0yYv̲5ˎثTu-{_F{%/.5\?_by5f]*.'eW #Tte]q%M36)mǾm5¶kzV笻H| 8zu1ӺF-E^=sxسZ h('*OwX8MTN*NثqI-Btsʝ6z90M-;v;J4ok@Ŗ^C_VE9NUȻ|9O-=pߕ4Ű^ X9)6].8pms8U<,Vz[+`XNHx}L,Q,s$8B7E9hhe r!sw Qy>RNFkRM݌S3'ٻ/'W- N L`4\(?3{_Vg cv;uu?gi(`R,M/iexC|\m#ȑ\I`okW/F^I y+XO&'w^7D [Ho3A z΀4?LnMafh>6uq@ ->M;)Mǣ*)ǥRQr-.gKBcLKih?iJ/ p~zn`d^ < =*_@]ETaܬ+9< Asg=@ k5(f *Ec _c %AtZ1kwA_D<8}Ǽ!9~ZKx NQ'k4&:F`EUnR^sE}d\ΉyNo4ZA On/AD<}yf\pdD.g{(]j2*Rbdў7,@ n2jz3˲D]u-K?}l]+V'յt5FQ l3Qס^*n]gy$^&iJv7= kQ+BR*l3t ѣy]nDo'εmYVY!;KZL'^ endstream endobj 158 0 obj << /Length 1835 /Filter /FlateDecode >> stream xYn6}W, IQiSh( AE{E앻Zߗ^$^'Aᙙj' pɋBLbEiޗIX+Vdw317ZgPS9G#b*V ^ }0Op5mXO_6е]0IL?X/Υ<+WLV5f԰Ʈdo^.|oWڡmXMJ6ZfkO;.ܙgmgosKoifP엸jyw\^\ف l-yp~$-bJblhF;:-kqsovC̍DW5 XY!ֵ>sYS5އ[|"w~YQ4HXSblYX?b d6f{s!8a;dמʃzY65:ڟ2,gp@.[\#I;Ҩ;~;;,U_g8'K 6zΆw[`RN4ֺ>F2[#sA hjR#A`7Xa~"u:B(i]&Cjpܮp܋hЀhLC^txB/^Ud~Q4Qb vnw'sC{ކn >BQ0)rE)G KJ3B酵g[c@p8!0ZPfX E Oj%%fe/-`$%efNMy{"qј?|F)c;d`B`lpMY-㬐N9*a93|0ud.EŠ2[< VdZl HZ p RΙ !e)3.JnI7km޲p/޵o0( b )%PR5mj$Ebڄ^,;X"-k'o` c'ϢDP-+,'B)ޯWpt>M\vnãrL?#oUbB%6kl[wDVU1-.a\HQ-MvK_K|lAC6;ėWH5;tJ=cszVy1rñotMf%9@~yWhe*]師r.rO#,z_w0w}. (Ma]%̜ys~QRWYjS|#3>H+BN QS|xFQ+ pY*(JyE}Ry-Y!@WA/kBM!s3$a >&J^6#QCNØ!g"ˆH!<]b f2?.&d4M*IR H6;Hc.@B)Z$Q@V #$vNDnتBFiK[<$%}y56:j16f3z˔ODn3e?n(IB,Y*`@b 5+>G,QQ5U" QTg/4/-9Q]6/mFzWY>XݹBDW9m X|Nd @Nzj_UećRP]8@.kR#Pʒq]`$+0s0W{,A/%__c mV49NIKr)_ K endstream endobj 164 0 obj << /Length 2570 /Filter /FlateDecode >> stream xZݏ_h_$X,4:.E?pIt9̐>.Ǐ%WeQlKQBպ.. J+uaL[Vg|LL_0[Ⱥ^lޏ+7I~i?׳g|1±Nݾ=xuK{_og wnGm8j;v,50:X@ Xsj؋@.V(ỵjQ,vI&m%@J,1`ֲ٭[4L&Z'9b᧴ݢ,">+*򩐇CFJeUJz9cbRy'a"z'~K7"1GZX&\ՖJ d y}痗'*xöuv\-c OSZ%aPNᆾWܮOMXZgp[ܮa 1$5j_ %YB43soGXb&JVKDɥ ~b ZǠ+ZfK L|J*7'Tzô`&h>)V9O |ƌL,qibF-)4Rr+/Ftwl`"@_o0}Lޞm0w+r^)kφ%3L$ =mlfop ^ )o°[#~,RuksFKyƿ/|6/O**o"NBFJ FGO$*4+$J[jcϟfgF:9tQ;aH&nz}'+6X /u4+h%Ɖ9 qCJKŢ;@X`oe\(^2O ϑ ]'f&%bTZpmuqZֿҬ`N ?眰1>gLkRQOK _1yfM6!#'$If;/ƨ,1 H_`D6Os6kƞ/h)n~*/M Md󝅐 ? ?`)20D/yP)t8 t;nd‰"Wg8W endstream endobj 169 0 obj << /Length 2117 /Filter /FlateDecode >> stream xYs7_q|H:ti:C)_C` Nl vb$/۫& LdVVݟ$f$۰wPҌҼei&y^"ΫȆm=>d$e1"lsU+V;Jn׍l>7M]V'KU~]Yy768PA7O-{8}Qd4GɼdcQ }2r2TYWWՁ2E|P/%yMjj\9\\缠V06@u⠬(AsVW@UeX2 nb7.yi ̧6;"{= T @?uj;O+B@i5?}ipi T/UCǮNDSPzy@N 0hO#om97xiMA}-PWStJ13R\ٸBz2o_N2hKp9)\NEƴ)U2 /|m<kTA,&8#R30#ASO&Ey 1il[~DgfcuglQ=d*UJM י"zSa!Uhe"Ekzk: ٷ9{ (樅;.*oU&e (ehQXU]\s E4,]*l0L)Y%8S(9a?wz~lZ@S9L-pdK( , pKԱ]Zc^yujU5wй`q 5*ONHh]OŴfulƖ79 rs9[?oumӭ$Qu&<(Kp*;m ȫ{[ }{'V  Z\]ebb8]Jޟ;U22:RߣhRu`]Y!wZQbYY[^V2$Vf1 ytb LگOf\F#Ԝm@ǺbQl7|NJNnt]W/W qjXMwsKk@O+_W̧X^߭Ys ʛ.RweϿ6\O{~dn̯efqs(;[؁v,}΁2V-:pO Ip;vk7VHâIB{+iS%N#_z"rIEs" [p܊"OJh"I)Wp/yy1lԠsPo Fh9iz>AXoh'cZg\N;mkS/? ZkWKW+bzڬ{[{mi endstream endobj 173 0 obj << /Length 1624 /Filter /FlateDecode >> stream xXmoD~B|;w_ފ"A=T! j.M}'K~ξ<̬3,cy)3~L:cl²Wn׋ɃϭR"[T)JclqN_k^?g{s)z+W}}p݋v_3ܟ{GH\8­]q-ґy)lԵwz΢f7 {m`8(w{MH& r6 U ShɓȜ+UN#M<+[f6 ӵRq[fץԹ]hBP7WB ^EH0ߣxܵiũ\W\;C?$ۡZc;XMY} ޾ }Žhj锡Jz5Aܧl)zuGX*^#6Ef wOeuGUzi\݋ؽ+*m|ȕs$?Kם~ Vp16.x3YgM&tkyX6J#rxOku d lndօܥv߰MQKȽ/ei' irqԲsW9 '</b0AZ-h[lfțI mμ yVgxVgxVgx̼V>#~0|-hyy7 z6§yѽi:p`3:k?'H w^2.-yywI K\{ pIϣU==ZGWErGO1zR==)FW @{W[d7o_DugɱWo&煅ʔWԤ8UP`.S/AX]#8rW w2x s%hdN%獫s*7\w!]SvNi\%Un%k(kqI`'9'sxt g@Ro6XCZXKn3\Whz}u7IL8,5C<߃ˁ IV@l+=m(E܆1ބTSElSkjA.A6h5 ײYyDlz"+qeJ%mٿGZ$ȔhO(4_Y.lH02F%rA aA `@0#18p0d4 [5ɵQ1I eΓє6|It7@AxI,6D qN#MC>kz$Iqd>b݄F55|7# "5A1 AU|) !`Ľ`!bb, endstream endobj 177 0 obj << /Length 1877 /Filter /FlateDecode >> stream xݚ[o6)C62~¢ȭ5XLbDY3.mnMo7~;tt ;> N'. gP(}W܏NyY qEYbxa;ټEO}xπaH皹x6e'[ϗgw,S x`ľ>r̘̕oQ.W7BhWrhp̰bV`k l D%OW6mVlOߓ:d]P<1]k˗1!p ՗" ]vա[[6]tPiGn#Y"c"a֐ЈFVA$ HH9#h;)iCk HA 1$ȶē!5r![viM E l GV.[k$a+%#V*PϺ!F=`8rX@  Ȏ=n8"i ; < lADAs~4t6_B3~Xl`_YIp K8숷jWBNJ 4~a-Æ`0 6coy&yX aj[k"@":;gY0~JEsbL/Z#|xwO`R B5쪟 b͉~j2 Up7Lq}}k&p,wNJ:(}_tmg n7g-Nj>>u׳ ^7-TiWu8NTg%9uzEMvxWg1۷#aBz80dnOBv" ATԉާu(~$gX\ܝC$d|uH:?,b:n.S/MzL*W(i݅_VIpQ㪢y\& ƒU͑qSW髹n|nrgƪyL9nnΣ~4Crd\ܯ0]FccںtDU0V5VCxjW[+T=o> stream xXKoFW>IE-u9PDIE)y-uay|;PvXʎ<~;=e͠[wvkimǾXzvVvhb],@Y@ٖIu iGfg@.nsԱzqfGٞr-耜 audGNld ʺṿ4MٳJ荰r{S)y*AX:5qc;h4~h,,݀۾q޻VXikCrf^ ZZŶjvw\ +/WCMA9*SWO84McAYn.-D/G;lQt^oT w)WP6P$@NZuc)x9ظl|?L _r#hy--FwE+4h0݉>ڋ5dVD Ot5IEi7]t9dKw̅ϸ߄[SMb|)O]Kx׫h %l9dF Tc&{*HmjT4b]qe%(-O\r F8:Ғ# 8Yv^{A1I& SD7/ruM"EeVmE9sWeˢjۤ %7=q"[=anJC}X'k`x,v!f!@FPTBCfELq`GXөvN4^SoZEW<]2 ̄ygwcr|y6v##6 _0ٺHP$tk $MkGmXZ6'.S!y}zt/.D'd<:Why|K1`< 1C&Ge4L>q Irf1 LFlVR<>EN=NY6cy :@jRz&j|էYԊ=̾?~uzͬXfl`.Vw2 jP> /ExtGState << >>/ColorSpace << /sRGB 191 0 R >>>> /Length 12137 /Filter /FlateDecode >> stream xˮ%ug8yZ @6 BCn $wD_biTQٹwUboo忽[%R{Ko5߼¦қ3og_o}o^ljy=ku޴\뺞<ڎu=iܮuҺޏcy=es<~>?ٸ_>_7|hԗoX_,̿k3RcO=g>f>0{8mlٱ}-__͛_-\aoɾ{|wv7|wl˃0[rmY7+ݚx unw"Aѵoeos/7Lo??闷?~翼~~_FaK-S*PCG#fCj4fF(Av@RɌ(2@j4~g[P 5'5Q_R u&5GM&}]?E56^%F]u(5MEz-\WQ<W?F j[j5ZL˻-G5RgT/5z6F)+W'+5Z}GT-&5Q|->iQwb5jҴԨ`h%5:㹩ў65ZMkSmjt G.+5KM e\n a0}n_,l!̺r Ǣ- <>7G*} 20iC,OW,Mʱ@gDƃ !Gx:5"mku!0^SD8wf!m:‡!g_lH;‡=OGxl9"|tl  |ںfwA.^A^G8 #lԃp![e!\'Xn/v!l“e:pZw^|r։?mBC΍̽n7KD7b Pc 7 d_w U%%;+CmBz>֝%E$!Xp݄6 $ D#s΄!AVx"򄰄#|apzAxs6 aV,*aVB8E[h†P 6/>t!0FYoB;gra T #<)g:r/ ,Հp̶.Ax|gq'!<w@xHFDpA DŽ.XK dA qCx K;7;B\k‡2gq֝r VO !CXD au wYM!4w! "0*.!| Q.$!|Ph߷]nD,'w{"8f;"ز8|aH!Pw#C\11s ?23"6_ xf A[ は$t8Os7x^\FK ?lhnTp+Tg bs`tY<H\p[ |_DxFj(P\uB0:_Y&B&h6lq[dpgsiYPEtIn\ 8:pBj FpBT `pVNd 7uPE$So%lBko+~I_\ %'~:*Rhv ~ wc H -GrЍK<[ͅ ] YN-:6~gtt=+~oV-Ί ߋl ~ K x(d6 ߆/~i`ϢE'X%~& b2)钓 7m`=[dpx *'*R.~˲ DoBAR ~) ߼{Fb?eg<ʻeoQ6^!2zUXVX[*y Þ{Ӟ5~W&'߹,a~l%T bMO*fْceIw]@{=ߪ0-;m;t7SdާbZoUPMD8[T-5cTEvRU@3p|S*Td| 6|h~mo~>i€1<] z-݃$o sj3+kcxsj!N^SJM,Ox1R]Yۉ@ _ˆo#ֽr;⫈DUmU |f7|+5ᛸ~{ _% [v71zg5U?OZ{ڊŔh|EDoBCIzU>y+㘵V7jI3H&ӕX0J-.޴[ [ы̓ެB wGĚ1P=+TVЫj.WeSOZK?2('SPѥP&jwUqg :M0&e^kUb-ߝ,zqDo͂^.7#7^rzۋ{o.z=D^0Bok+e֘7K#[^U z*Eo y';eׇ٣m=ڇlzVEo>+_zICWvh&us}_蝋 "LC][-IA LJєgt}*H!\(IMћ69<>R;^i^叡tz)Xwzm!zvzwz=#8И+-zjdK2Z /QH{m㹕pR2(x=\pޱ^3޺ÛnzsweiMp33RD[tγ68[7[9Q@.x% ~gnR"xk+6ofւ´^Bo 'T w޲ǝOq}M1\ivx7Ǹsfk=^.of'xU<[" #:%,Z|m޾ÛC;t 6潉^/SG:CY"[bd/V4b1x?݄4igmv;/>1f~%`/x)7 W,#'xB+K'x) 4ZS ^Q7+xୡpk0xC7?/x7{A o+-;[йʒxcF;~VY}[CRVTGrFސ޶û[zNxN û98O& û[^S{_w<jZBƨ-j%}!77{ୡ(xצ}J6o o x Q/ͻ{esCN"Kl?R?k%l.q$M}i?Tl:B?X{\ӛ4!ctkvexJ&=ݫ`3[T`9RS6Gxճ ds= T%#x [*S  y6)D)XoXMٜ)'{dsuCSc|-bU^1|`K^^\t"V P+^V~{+}>mWUbsg,mZP] ^"x+V\{b+oὢ-[T=[RdX5xV[蔓+xj53[?~֪,j"Gt=j›vx]{oe%|{> '. !`unVr 7Ӆ/"jB9m+QM6%\bsSr 7_/j\V1͛='\cQVn 7ps} 7[퍿#&y1bu}=BJ[ 7{ V3ڍC:+:E{%NpsYm#V$z{7No 72sG>PiaE&9f[-WHWHORߡYaE6z ;':^y7)4bOVY{~-W_vz'|jf^eELUj(u V^XITo-WZ.YH s=zF8{ZvzбzN56 z&9dc=Wk¡ï'qusvW펛|?~|5.5r|<}yg.&_BhZYC3Bj_OIqw0ff 1})q\ GԖchui?=}T֟N`qk OkQG1D4*f!^Mܖ'mdч"z(@^t P]/z}z+@r4 V7>h8DhM7Le--2=̷BO1JWxVh&3Z-2WzZ'ehnok3p15<Hf ZXzcSs>RHXB詙0l)'.R۝Хۍ%$n,!있 1g:rjyXuk1_2He-!Z~,Z5u׵;UuӸnCk7"&s`/g(^ vj-R?o-?oy3x7%\2Ys wNоl':-D<}2YDk @Aۤ>v=hzDttL+{ωfgэ"gQTDS~$+,"1hBf"IJ3":8MENhƖC$8ݑfNtRbKѪ('Kɉf>q/4Ӊf2Mt'{\M1D4mN4|hB}S,=);_@/[x&$m4MHI@[ʁni&\5h %M`4g4#Z_Ęq/2۞n4UczLYv]r], V4S8t;*qtb>ͨ3&(= pGi%]8S~h 9trǁl@.]GQ@S%)+O.L3t!3chDNԉ9Ьw}1[ CƔ KڀF<hʹ}XfJOr9ж|B}P@ P ΛtEIaa[1́f:>O{@:^5waЙلzE/zV)WZ4SzG-Ol@_ҁn2d>\w y%b` fv"5ہfVͿ2]H@7ip:Ӊ@S @S@wirF U]@x]lšUۀf̫n2:@kzݴ}CM,)΂px,oZК@S"+Y@]N@WYdoB$.ZAμŁw^ZlD槴8H-0@1=nKT9R_oYdEqa*n /ui(UA4@^@\@g,&@3J@'-'܀3"<_^ `9L{x&)O['I^˸3QyNg87#P8#DŽsq]¹\\.ypg~,w~™YSsbwfmnL?h ڭYzvi|4af|f `C3\4fA{URp3΅wBS4cZs欒ihX6영t4Ys&s'phNќhpqY2}b9l*bY5i]2C܈ >,{O漼2p,'IyaXNPƲz9MşQOjDr% ɉ H>MjdM\NrUH6ɗz-D(e$o0ʫ )f(L '֬d$0phX/u>""0W,}RVkA$ke2Wn$de]ErB$kd9d^#' 䂯)G:ɼbIVL$>0'Yz[$g/OUvU7)'ٳPIuwiIUYeHV$33I$+iHn[Ŭh !H潆"c>BkhuKd[λr }'RRN2u yCȪ(ګ^"B{+ uD*K"YH/$+&eEՋLFrƊ|2$/p_sD5I/$i[|1=Hnɧ*CؕYG䲑l@^$Hrb ̼@r V}& qȼy [q{try !/f> hhB΃%K XJ%'{o̶;K?y7yE9 &ml!ei@N15A&@>Bffȶȡsu$M\gn: ȱwjm$O&L2`r~r9BΏ@L )KNފ [&Z 0A6 o^rU6K2]T@1հr%@V\BF SZ T&lcPA=Sy{Ud// Q wU9-ZEk o4W޴ l/ш9ƮOT>yq1A[Vs.|x%fO {c캶/Q[䦒o3c -r,I`u4Cץl;\|Vk͇P^{Ev"טPfrjLA ZZy|XE^An!  ʫ_bfV@~狴Na`^u@ '9EUFy+Z/ɰ*:`Y^]`(r֍'_]sKBi"@|^^bh=R|*-#A!썞EλEe^_wiCue>#H EZZ oqk9 "r~ͬr 5'BEh+ oYRmqk|!|o.eC:HM-Ev?]'˯j2_'_Oe}:cPxf Ώg/=#z^g~߼ \~?}b6&0׾땇s?p endstream endobj 193 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 197 0 obj << /Length 657 /Filter /FlateDecode >> stream xuTMo0 W"Ylw밢=tezPc%`[m"7%ZD>>|8YN%WdvS"<%%)2VʜEJyMN緳4=eTc(YV#̶ O;4#-+I>dIZR7"sXupaBװYL 5<0:ONaD9yE]I [™ H V?<& S %=[Jr-ChLNk 0O#;h~wDb,8Ug/AQ*ř,'rNg.ѶMPׯl(,z%:l<`њ?腿 &mzyytkw^ ^>4662]U9} ЉlmQƭqಃMHdi ~(?%EcDi/=;{Œm b?^c3A!^/&f)_gt۸+A稼 IZ;>iμvЮqW\E`cA+JEZvs_}IEE7Űy 3I+91[9pzq endstream endobj 180 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./yll-sus.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 199 0 R /BBox [0 0 576 360] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 200 0 R>> /ExtGState << >>/ColorSpace << /sRGB 201 0 R >>>> /Length 12148 /Filter /FlateDecode >> stream xˎ%u5$.=3|Ѐ!_bw5UݴTbWoo忿[)oὄϿ?׿}| !o[_?o/q_j|˜~R{zs.0~Ci6+×;-heq{|}Ө=< 4(8iCw\g8-4O%Vq3O&{<~|=y:}O'si^|㢎KURĻ_u|=_~>_k~q>Ju~vz|b?{8qyq/wq>z߻q>gw:>~zϿB]<~[8p 2\Oq5u6)5X)pbs _ZJ)5|8k[[=#eq3iu᪯s %\¥,V%4/ԇ~}oe6oOuW~<2WG7?M[|yחVۯ؇~C2C:ܯ{Ρ{8ܯcmnװM;lsGiG~4glsyg{?;>{gHCaVùD]hWk(tynw"AѹOE1g<~ٿ2w_?Oo׿Ƿ~ת8c`Ѵj_)F1Rqbg.;GFF|Mc45/h?ɺhg/j4/ !5RCRh Sai]S^F,kP_j4>ϰZNԲh@ILvu85%Ry-WрEʛ ^^AgFRFYF+[j߆z5ځ^济LMu= ɩѵy;5:} цD|j܇ͧMP9t"FgM?djt^FJRSDZ^ p^6ƒYp\/C8 cy \ \+ZBpwOop2_-May0p#Bf]Dpρ!qA]k4պ•fW !,䄰D!Bxȕ#\pp UG !|owį=}čp1st఼M'y]Xk^W\W DGlF ;|e9:.'#@p#R# ǹ&Gp^;)E\4"mVo;X+!Dp_1O絙 |^SAp\:*;Op"8y  _R/ZDf"߆FZ"sq-Y|UFuho6˺Cp^aMNӧmMp 07肺c4Gp^.c#CFwdgQǵd!˴etW\`X"eGu6x,̵b!&mSF]2x6'@VYKvD+AR#r}DpFkmFpFc@<\yKw~?CFv0#IfCp\W_kA0Q[m3 o6#8ԃx`^[~| )ܗKspWh@phs`F>BpEp!eNdB83"8.!xxV T.8P>fυcD mfOpZFH>/@p%Kŋİn;/ #t9Zg'8wZ<"MmMJ[ G2i$wVk:ྎЗfCpҦ~x\.<TY^px #Cx -6`|P up>KVxx `oQ!7/~/DK~IkJKpz=UK{<՛FT>@l~՜~3~*0~.~}\o'ԗ&|9~#2K ~jᗰw$_7>_}à.o8qaߗLRSUT~',-,ob~o8},oƃRLMDE~!~~;`L~|tRG8eb$7·(וl\W%૝|Q·(ջ kUihV_X'6Bx7 #8BX#?Hc;;TsM N?\|-o š֝Fzq޸5&oZj;𽤏o$M\mX ߈>zEz|##+GEwj3' 9+Vg^?sU Q _zN\*;ޘnp;74^&z5ަ7Co#s I[FzEoe;ЂިEo$K@;$K!wwϲGGYAo;{_jBo8N<7VV027$;@o F/;xFo2J*i #WЛ.z*zUF"z17<ICop@oFC/\z3vza!&A|69z7C-\BdFWaKw8qi0&zU/zY-z,϶GQLK{S]4x-Eo@o]߂e /}\>veu7V勰_F;A\yыTpMDoEo@/z]M="7lZvi+FE, ފtĭG ކg 7`Wgiom#x{$3^ oxl킷__gWP{wFTA^w$ٝUTf`Qދj5mZ܂w ^ e*ULQZ2w:o6S M_ʵ-y2= ^V7"U ތi{r[׮-vu령oJ]L,$bBWu%8(v+(n"ȼحn1guJ)j'{|̊vHI om=b#v9`ܑn[g}G1q";wȡN;`mafQg7Sݦ#vj%a7-%v ݦQݰԙ{Y4nTmdP5ֳj8ɱLW4nVBT"9|ո,n+&'vYyeXbذ{q9aaCU v)a7)B5o?_su59ċ,vF[Td%v+"2 c7z)+v}hUzƛI\Lp֝>ο$v˺Ib7-vGn:x=b؍nIi'|ǚ*;_4A{vL#vi6voî:Į2aHݦf>/vD2^b؍K8vO`m|դ+6"EƮحn GqCwՈT >U4*Rv2abFzWI(Ѝ$t ]nuUibCF*~͡{MGazݴ`jL9t.r@d3.nVQ]/mZlt*?ΗK΂aVnVE-J{HfՖ8SEɛ]kqF{ vt/?Ţk>*/f7TQP1d.J%3qnzaץyݨn9i8v]>G`4r>'P~lv%6DÃvܮap{ywni^nV֓ǹ3Z6Bo|"$s},nv j ]5CbW,]y}$IdswavΣיM_.Ί{g#Vۖ7+ŒݣPrĦ\vU봻$uhPr5lwwQ,+w7"v9׳Ѩ6M2F#d>?"ew}g9Fkv8s|+qٻte]đإ`i7 w`ęU(vCU; U(%Yַ  }/5vv_Rbq㢶9gʼnw:U U]GHCUJ>vg5.TUGDEf7v795M`~B=4o W v/ow6snw*w*Jo>TuP[R)vU/ v42a042PZrDAm6\rK9z]Q}_9|dxp9t]*\([-D[_%Gtw^ v2*M.XJ1dA* c*U6Omvo+m{+c7~H UlV\qڪnO2grꌙʎJ7f\4_}>>TEإ:hθ4vKuF:|>RL;[ܐusrf(yvݬ|3]bWl:#R "voR^bW9bWl4v vnSXvbwͬ);[]{R;O]\v3rnw~3@f/"[MU-gfߍ8Pg(޿#wZy^:zF/5.ks;1vaR"oX̹t9`(+'=,&iyY6&$j Z3,9$ycݒʬk9/?;-МƑYt\E'8 \:7t1!׹sysmnsSeukmnUv_ƼP#o:{`޼6|ӜG4?4k{ʏ͍ؾJCo%Z^[֣7ic.%ѤW,&=KQZrUt JLJY3&zi3VsR)KMid^og~㓗X.IUz.e77ECx/Yn))B}v@,`9հr6rqiXbjq.~h4eK"uW\ɍrs!+O^5t[*R\y)ʣj>_=/M&/s@b\ס{}-R{}"~'CA 9\BmG5YɅ7.^^ߺ;{zMz[]cs?c%̇lp_1LOs03?F:< _(,z-ض|eWI6FJj״&_(Z)Ŕ|FMJ^֖~'_ 1I$_3Sv"d$_Ӄ1ʌ כкW|%l/zblwCQRd)JWJLIVY+-&_iN4JWkW"&_eQ&_ۺ&_*e|E5HUK%_kz-_X|먖?t|]UTDYnT5hUqkDttODB戮S3_DRR""6I?LK #53i[DوIڈ+" M֐=LTO4!7J吉hfYz!&p}0#Atcn]4+ĉ /͈N  `Dgl}sa4V5#e%1-,DV5&cs<^%*O@P:@艜}i 0R!+6z].4M/4@肉j{6ITLөΌ!2 j@3cN@':&4If=4u 4с~&q&zDւyT/&bJM|߀f\n"P@W_ 9&BGM۷δДtЕmie]pDe@Sd@'h!Df|{M[@33i6С:a@t=@K0B9 BY_4F13/t^ytFTB"DiБ~dtZ%!=,.3\Z!hNa@36ƀf$.׆%z|ȸhrzlMMnT@ Mݬ}Йat]<N h|o7lMq-tì4=7u!SrSY)/i6aet: t*s@%zl]Q r6_rZ Й~E##It  N hZ%4-:P!G!zUz%4'})K} 6bؠ h hYTc hv\4rES[7ͳ#GfP+o)xʹ!拡 j:fEshΈGpn*:$tBs\qf9әo4iYv7̐ Y}F"îfb!oOsUba()s'B Gfl`@W,zLw`^SLxW0_s0>iÜTa6OF,\$ay$ :œ]H.eU2rsAmaY0 hGl8(ߧYfЍPN, (/n(,_ f1eᆲ4P*)Ҵ̂fM@E(L7li(,A%% 勇eq3 %"Bm_(R(7&ΚJ\y6v3P9E(B4WM31IF2Q32k$yyz.rY@9r8؍(>2@f,*)7)3f 3\ gȍ4,OW bj 3@&%i {!-Yr2K L[# d*G9ȉ^ _22ϑhnzH 2O/9 ӷA l/_Yz6?\A."d)/dYdL\ċ Ȁ@nt@'UYٟd@Ed{A rFd Kk diu @] _좏_':ѻɑ Y d)DA08n\gIű iXqp;Ujr|) gb͈c*FűZ%uP8>5C6sk06 7; r9PQO5i(UD)y8AC) 7YƱ1 w9 2qQq|"Ψq@uUE c_]9vrQU؛CYmדx(_<8qf {\]Ѧ=}BǏCWgU}.=~TMN?G+}A{(d?=./1±t^HW}̙gH9>&lT5ks|pL:8,-],o'e8^oq\=+`9ză껚"Lqqrw%!Enm>.rWmO}X {<Ӗ~lyid u?/7Sˡt7W|mB.е?wrCg8fquizc5u&ǗḜqQ38湶1~|uEFViGW8;uL Ll#bN{c_7+fWhU>m5㢲Mq4dzC6ӴG79Zo߮k>?59F=ŹŹҮy<uс:N8&2Ogr8_+cb3eM fqcI9e8~P3ΕDxhq^tuVNr8'Eev9p6Q 曢&~& >\j4/չȏO!g 2]1Hc u] _'ك䴁BhrqׅEX+3YLkI~$?X n?Yw!˯j2pc__ ԠecZ~(w쉂g}b]3y'-˷O?66?t9}0u3 endstream endobj 203 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 206 0 obj << /Length 716 /Filter /FlateDecode >> stream xmTMo0 Whv]a[.C׃;0Jci(QNlQO$(-akt.n9sZ )3ZɜeMZUC!᱂}vLR)xc`wv߀ys8]=IWwB|ь (3 =W(cU6-VfU u>=UJH-zX?KXSUs󋾬?mvNsVu=<2aIV%}Xh<哼.KD+.:|0o}Fn O4N?g%ꂲBa˷;{{,/&/Rx ~%e !ז<N:"=\m[3.۽k?plv u3Ezeϙ%N'Ig4 F2~bub5 3ZjhN,NBvI:JQNAt üiD|g}|:yӽ7ƩbK=O.N4a&nt~nf@7 T<ՁaNq+dz &bZnL5DnE~ܜ55 ;tIj .s .p^L±Z܄TXHK_wS_OY\QHܙdf"r>^߁ endstream endobj 181 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./yll-tot.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 209 0 R /BBox [0 0 576 360] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 210 0 R>> /ExtGState << >>/ColorSpace << /sRGB 211 0 R >>>> /Length 12158 /Filter /FlateDecode >> stream xK-qW!9q3kh l@ e`(kEF{_g_~o퟾_KKﳾռ_奄K_p?[9؇d9|{~+yor8{.}2Jy>9reŔϮ)QF/O(a;ћ}8i|UNGk﫟~N>O;Iyr*Җr9sN!K9g߶qN'K~~y^zg֨xg?ZO;,M'k9r>yy߲}>y{tw_}"y_ri|Xzr>yu߶}>y_t_t95Ys;xiyېzz8#Kuslss>%}uPr>zt94߳s>.W.>(Ogt>Kx/*'[Y«r1~䗖z8n0 sx>>}?!|T^U6WA_ơ{]Wu]qнKvb{m5?_/~?۾G[>7~x|ˇ/ .-[>WG}܇?uߛ9.p{iWeKe zx_?美CoubD.۷\uL||G. lnS[?+qϮoޖE$^-|̋jpo/k{8d_A4_r_XϿӿo?۰(F?N1>M/^GP656'F{N&U\['=N&Wn93=kѮlbbth~oՉѭ)Gb4C,Bs-raݗpU/F|Ѽ/bo^(Fupbthx*MntLfK-}bbt3>-ꂘ]ez1ZcWJ1 !FeUqK1:1L^f_So/>ҕD1ZP&qż=W6]z](F%hRѣ %єMA#1& w9j$U=!,<;.-{gu@^fgw@E*\E MrGo=Oq{M\ 8%w$=\t?#{e zIvuG!M{#8B0?<|;3vP$`G%uG)GP#x_ QI0.F0vX#x4Y@2#`܌ Rgkw|o `<"iU*:.&X\L'WQ=zx6H06!,Fv8aF>PݎWGx p!"8dJ3MEH`lXX?]p pc'|&8S4+cj0qp#=y,D Y]%x6DAjDWl@x_F~kv0\`T8iupfx ^ *9ѓ6zG _N/IXbશ 3,1jp- wl3f p)VMQ^C l)#u"YW `Aj4 z/Ǧ\-:C 7_ oopwgq9U%A `!_o ;N;`!pbXJsl*+b3Px_86T"}xp ߍ< 8'7\5mIe 8å  d0R/ RoՈe|-*#pT.ٹO;2Ư_]` 8Bsݻ)Doэn|6;KϜJDž93\<+V=&"7m"??CZoUaA~EOo zB _Y&[ಃ_ x<7~^編%§o/*f[ 0oa"b&_:~[߄Ȱ //w(p+gsvYKʔ߭M͌:++=`o4oe7G>o^ti}_bߤ:W^\vW+߽Bg3 ~=@Q߼7_ O{K>5F[a_^ֺ`CiRJ1e ]x~e3A m 2+5_wWgKn^i*p =~%$tƊ#T!~-w߆`M`Nv' ÈoE"2H|÷"2|v;^|aojV/;bai2|R|W/COə߽.߽*4 [ 0/e:9+׃'KKU2Z_[x[|'#Dkb⋒;)o/nዘ m9[ԩ!}ǷײŠԈ//7E|e%@'qKyO|S|U$ZDfcwq^h7; _zQ) ziq=2[OYmW 7*~ѧo+!<Vr@oE B[bAqAVflA^^|k`k^x5xJ o)[O›U-yނ-/i(kw% \›TxusG]=&{3s5Znx%<_1jo|j0 x ó3xͪogMx|{=oE- ofAx 7L^x=_$U*lc vgBz]0dweeE֙N( ))Pv;:eX(#l(]}([l>mOr7 o2R4^YݱPv?eW&%V.H;),.;iɹN"Z'H!)v%< V/حV]zd@f/ܐΤ-1m$ioxŰvnA^]ٕ 5ڬvWx0D t'ХtEWT 8O`]t+;eW]:݁?t+cCFtXj2Cw~J>6ቔ.[8ZftQnDtEt3\ܤQ=^ѹj7ˢhwfw!Ot-=5tsxD!cKtP} J&*3eJkʺeˌ,Fk.3Dff ]`XLt&nBN]nFt]]]8D@+?BrhE7x!ffݎ]<)E`vhC7\V ]N#G@7Ո竭)b%(,'Di]$ݓut5%=J5 Jy ݻT; ݬ(עY!f]D7A]4%+sODw53tP#}rʇ[d@!Gt3*EN r{U=) qf &Kg䲻2rOUg': U!2r#W 3KaTu$An&=[02Yu|WR+ePCr?%\H5G,oJP=" nTo C7#ƴFfBg) F>h1rS.>KZ! X')yV$k-̪0Cr X滒Ugk@DO&eX x$m@n3rY3 r&_rk3ZLŀ\dHncF&'E gCYH{E n=\!cy>Jմˑa6w_dbsK rCYԒ܂HqS!E<>|m2},PC̃r9rS4/JX] vzFnQ*kvݧU|9c4r0rtuEK{ɭJnK=\_]Kn6# rKm^)\.j@nF-rcG,+32rkէvY|ɍ#.]ɭ&*lg6~?E)ͺ܅HnpMwڌ=c].WfJՓ+@!w|j"lȝA-6x>O fs/m8de\u*_~&u~b%wDr]MBV͑;#.;@t51Kr*(t64"Hm-$ljEr^r "tW!䖛:osq.3$e9nM!קu\WYm u"ɭ>3+B]3C'񢖋/ʨB`%ݼPsm./Йȍ6r\]5"|YJO 2*z\Jon<U9 2ZDr'7s"ۍP`s-BU8Posk(ȝ1B\!adv"Fp}rv}|Z>PE?}Fn~IܢW&H.*I.An#*KnuBt]YW5.j. 1̕|>1{.\|#`g%w>0_Bd\K"Tl#-(qc=\ _Ŗ}'l\_I m\L!3eYh[~.}.\cjFr@\#y>KR=#Qqn)qnOp9txAtr8`Rը`"ޠ̲f0ojL$q<<q"GgG|)cpN2L?:qg|yRSfmIrώ]_M@k= bJ0S5mHG)AYYl2\9 ۧ8[ؓљ:~x}:сUOՉz]/QP\x+ml< j<[E7^0{_kCQkF'/Ժuh@ާ t 6m#ڴvv7QPyn%ba:}tzW-hu%tA|@+C ^gYnȍ"[ s tBK@Шq&ҷU Й$O,hfF.Z?BIzhQP>41؀PmYz3d@#b@Cq@`@@WԴИtG <tUF37Xy-YMt 5@ѓGQB sg46玙#0vy>GHOhty(9&ʐgN1+)I< a<#yc]OeEv Vރ(6e' o<#_d< xF3'yx-x*O=NyHg;tsЬ][}G熉s_"b|:9mgD<Ϙ CEȬ}x׃,c%veG2+XF_3X IA,(3k(YF2Y.4g'1\arfUU2g;CeR%rŒ,*脈Xڒi㵺*h}cya Y^˨30&sK59Idy n,dQt,xD"c9mK˘B̳\!e'UЅQ/L\r^d,w2rBYMM,S]1m>(/L B?aYQF=QF9 QN$ee"KQF᢬7CG\Y?lYD%KD9a| QN(11PN!} ΜJ3d(Wu?Nc(1T]Cisz,=etWenDY">=0R($'|IC(fe庨2=vi(x qxD9c̊PNxܱe`EY!t)tm$#L+CJ2ZI2H dQhdG\Th$[I͑C᩹$y0vM5}IZt2Hx@1,69of2B~$gEԷ&g5gGb>}^`DYI&k v#lg<7+Ifj$w"AFN@0a01@PY’à 2sL9G@nQ]؉91 6@lw`kpX/1MM9Ψ^U'Sr MEr=Nl<ǘK($x9y0疡/-r}u/CiA>#AxcpP+rjXFf19%518NMcN"0Qdc2qY;0\cx/9ǔ䘵PXrHpr\&11%cs3;^.8Trcsd&1z/9Q\199sqC[cGaM^9,g'KQRF3R*@r~xrrgp^֍-rܼQ(\7xۗ'O]v/ㅞtqcs1FDž-p[I Xj'㌴8ǘmcq\bcKڒcFqe[ Xc]$5VI)py1қ1X 1na ×cPv^ 0^c1fc1 =00m=KxyB11e1f%0f0.^V3XnjqyE:OsOD@o1f %`y1{1 c ,&,&Lc 14" d/1,4_4ca\_1$1HuøSøzpq? \Z#]F1{qca ̉q cǐc<i86+ٜQ/ŘR0.NUs<Ÿ@ '1J4qvE!B`D?b2qT3+OEWՋ֏caø4ѡc'Zg`BYouqY^cƸVq'qE!WEƺ.P%=V{w\Nj/:bօ_ cԙO[#x`<|fJ'5Ht1^sY5IGnC\͹ yk{EqDxxka<5.qr_K:Mfq8F>b<#Շп9"#-Z@iS}qL9}X s#W0F(0V_b}a9kk1bGÔ_q2);ǁ|:zG*np@wܡʯ;>g&r~18/ ˵:IIm¾4 endstream endobj 213 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 216 0 obj << /Length 1692 /Filter /FlateDecode >> stream xڥX[D~_aL=B(EH[$o.93gfNx|\su:";;{Al(,JI0[—Է{54)0,i%Jj_`W|/.WH]!5l& a?~6٫8UŨ HRWvRa` ex?@wYn.DnvO>{jvHt߭Q2VuK(BUK4>ۃR~" ,%xvY2u#T)U bKY6 wPQ0 n kES[4`&N,Tzxt֖P^9+fμl55 $5c0:ye6 5UoO{8 SvT).5}jS++AY/C L$?tU"G,vpYܪ@`vi# MOaff~IB ޻O^FyTr|Db4Lݱu}d,yHXT0%m"yRm/AħYMYqwuQA,GC)19XJk wk$z% ۔׫c/ATOJN}V~?;Y^ endstream endobj 220 0 obj << /Length 2085 /Filter /FlateDecode >> stream xr6]_8J4JΤuܙizpHTFKvQ]rbmB04E|G0$0Fl;;9I7n$Y$geK/ hd(E#"0!q&1T=S3W5pv ZJRBf.k WZX*:S%xLĆG`Vگ mAXAAi+ntaSVKmO0sk(1[3qF8VzH~E-?l/ rLr_#B=B&B ^$̨QB0f DLdS, C>Tq|,1%E)1M0"* $D).̫~*7#(aȝz!W/XԷT ZbEwkH%De Wy9+X<ӱ|Ew DoҸ 9ַqNv [3\X K"CS@YJ  $}ե a_r+dK rB-%Kޠ?p6fJIKQ׵cң$E](5Fe׍HSh6WV$Y۲!fW D5NOBbTmWMm <KuӮHĞ՛bkJ졍<<R騸&9n88tr;{\ ^iQ V* GM‰ /pٷlrȘVf3]xEn>6$db*!т&/vҩzevJŴ`uoCbbԉZ6ȠÛ,{Sm;˹J>gڕJ^{s5RW5R;Q+~$g/AslE˽N֭Ǹu(^6-ׯP1*sA\SM2e^%&"tҘ1vKI熢l쾄EM! ggt zK_QXaMg5G<H*+;1#FwsU*5ͧ*p&l?빧G%^_OQ:`=R}Po^F6y1I I$ITjfqntcz{8ūQ'Vk"~XC6Cg{c0k-`L0X'*;Or2OWn /4d%3 @9w.2w#݂O{Wms񻶔qka7GDwN|.J4$ݖ 5w|^4 UmoˍB`Y-ԃiBԖ:ȽtjqoQV endstream endobj 224 0 obj << /Length 1636 /Filter /FlateDecode >> stream xZ[o6~P=8ieI2C]2l`HϒH @, d Vv`;F:ZA*qyU&{j!=~+?H0soѪܚG 3ς~TR<͙h^- x;١ɻjü3pz=&ؚMW5B#%|$M+Z 7H88fdǞ9lJ~!kہ[7MR9l&8a%AR4e͔drS%vqL6k#G}?+yF=ҿ2j-&sM`gPGM9 /\zd+#Τ uߋM"CiY\̛>wJ\\Pα[#ǹPj[[Xs)KQg%aֱ(Q_\XW endstream endobj 228 0 obj << /Length 1650 /Filter /FlateDecode >> stream xYms7ί3i,#qc$10f[f2I+i[>BADj?kgc1N3P{ Zؾ}"ʧ=TXՕG.]|! H>u G ~樏l? +|eO,Gն1Crԫ)@}$!Hx=Ls`c[ S`<  :r2RGD;B{W.(> ܜR tP&f6*bhxf6 Q7pj0 3`{!֝3[e&ΐ{(\;QՅU0]bL9^ ă팧*Nmz+iCmAgcP|S9JFi=y}/<K$/P]>`{BZ aZhpi*qCw..%8$A  SiiPjХ=>4'GPUə vKb}{ H$ΐև@V*h4]V/3zԕ1q.5Nt{5;ȄB;"$Q5NJJ[u?d\'qBxi񱁀/W&x0| X@D@l#?ο  ]ٲČW˓ [;9,Z0;9~Ss[nr)kV }V1H2n,~rI]Z$pʎQ? 73w|@VjWJeXŝidN f ';}ƏM`.X*,X VT:`kuy5 }=Es8StI:Whn9TfuYy#sk=yv 8#a yVkr^uR 's߹8/ Fol꺝FQ8wkI ͺ(`^;"5m`Dž.hm/_ J(SoTt Й39ӀNpG#k.2c<1 hْlДsn o|N> stream xڭUmk0_!ɆYI%6X3`(i>wK:J}OcRWw=U;},Y\L: kKJ#ǐ@Iuy6Һօt"UI ((ǂN(q:,P"5:gxodC M+^y`tQE"@-2*2OR( 1"+ lķK}FPf PxPcͨΩ?q*o$EU"w?k93$59FD`vFBc'o!7y^oytޫ~6C0%EaReS}¶+*J6Z.Ism0Y*!jgqtxXO 8!5i3Gs=ldXwrE>[ A>1ߒ~t(;|0C;oaI5L!+'!v@:dG.mDZ>-12a ^A]Hn> stream xڥTn0+x%: 8m9(b@p 9@r(<Λy';ɗ 뼚̖ Rz&f2$J+Rm:"O[vL5}D7}VRJ"+ 52Pk0Țꢄ{Yrxǹ9 RTiCKgajS [(v!aMr nsk֝<7>l|"_B]fh2ϾD3<'~s{j> stream xڍtk Ƕm$ضѠqҰݨIc۶jN~os֬53׍~n=*2u&QS{c 3+?@\QLʎ@EabJlio q']&ty7Tȹ8ll<vVV;$nEfJ=hMl||<DmAN&@;"dhP7x? ;3֙\nbP9@R(mAN aa/; xX]\LANuY_ 2`86f/"K&&@;OK;s ,ڙeq-mU3w~&N.Ζ6{%LmmAv.O d^wO7?4L]X>Y:d%m.B#3XYYy GĂlsvw4 x;@'W?&.cw1_N=c7 3cwY$bbo&.; _V?-UZte|JzIߓAﵡo%yh>+%:DR66ieZx}]]wC}C_ -focu. 3o-,=@*.&tblׅ`bce?3~T{ RRcf{_RS߳ `awyw' 0wB\ѿDBX ^+EA;Ωs*sA?= `,:E|{?zX@dWkdk t1a,ppA&!sWnc.|O=_m@PqڽO?w~'sxـR{5O3?1 g!?n~qx'bGOn*|7;;矤m@N"4quz/|<@&K&!VCZjD ݙ?Pi1y/9>&Ugm8݉&uHފ,z4Æ$|y1W8?Qp"ZG OĤ!h !Gʋ+QW26_-R6c~`,Uq9 1=ƅ F\</޺1s^kΝxĐSb)r %EraQEfĆMBm@GZ%#@2ԝXm*#v<:W6|gWL`~kSaÔE>>i7Ev\.oi;åĄ7 S!I0! 0Y̧oZUoB_ Fk7:Pz / ? Al.8j칆,遦bҭF#)jNČ1G+CT)y4?oUJ?#V&LɖMVD*QHHesh%wF0N^w1p/T j+"o q£ůP L!Ԥkug7{K=enx!>QN[tYQ+#4R02O3uϒMO|1w*ۃq5JNt \-Jc悦%Ɨr[Tf }~Bwv"2{}[!8ۑ)t S凘I25Ɯ4mR6=CPW0{1K~e6|]-I"1k$G 4GVs.z~/G9C!ZW7>$6.p(HV6L ,.-x.UL) jq*5Pnym4&R^>D_FЧ06?D6{ AMwJȳzic٦&iVϊ컟Fbv 6+6`,(~/ٌ$33R9*(^OLnL݃Ll%A|c;~ķFGb2,(T퇎GŇ"̈́e0156rq< ̩6MnDﶊ.a -HBf*3w a|#_ N#m~ϸ0TXZ>\Syum2\dH05$rw1MhڹXx-)$U/K6?fG ux(<,~}iV00'c@h[:pǡ hOVb3"]иF&@ Ȱ_~<-W/z vo49KFYc6ϠmK)h#Fz̩"na/a)ԠZh>Y xRO23KE g` Hz!" dvE#@19k^Օc=6경F)xw&r:BU yz-VɈj(!&Dck]؋RQBJy;ΐEY KʅB3_nfNrJ:.mI񆻭1cma$.ޢ&֫|3FQU 7#}E2gd# RnXзG>̀[ܘeH@`֖ٓ^.RZEi=MKWPaUX1lgUAuًњx e!4sq§ŀvro3g?vx=QWWq>9nH%ˆ8r)ZSל{$pnΨE$vk 7– |WGWYP:dv#]lL䆭3QO}#^hHTgלVHKD7u-ЅE #psÿ󇪼7҇1P-VSe d&J›qO49wR /cl0{߷S:*\Ey3evԵMlǸjz[v+Zyg P wu $ǎgZNW,z]Ά^& 8r0zn/ZJQ-5JЖg ffR,ˆ`IhF1Umc[ 6 $54'΂ŧ9)wsMn xBcSJ0du\! a,jCڷP&}97֮bP"v:g&)TzCF\\*aKSW7,s`z{ {&~|t;XE %ֵP~8erjYrq1c<4r?2*MTdmrTgKT~zUj+2741pV <ߥtU~g:P ߴK!k$e=R֘GͣN U|<-FZ$E'Yz{Э)F: Aq/,:gdMP^nkc:D f|01S9nƜ51"ٺYHnJltbFiP=;d_ϐeגV?!_%e)7c (?1 (́ѹrMA$ybq(yȵ78KtG*@F^TӇv18"{ {Lh'K 9&5:~Icu򇔰_L]ְ/խk2zUR@u7|ˣFiOW704* }HcÌm2@x su;4goG:{w\>g>Rt˴f9QYpOg1LgL'80Ҿ$@-{FkWs ꯞ`Rǩ!=$X͉bBFCЭ_1^k%r4 B5/XM-F8 G+hzW~0 GL焱k_F-0#3:$fxZ^N:n1G+.\S]\)ȖE?ThR޲YШ,^h*V)c6Sޓ{zJZ.%)2sF})ۏ;lѺ-߶Nn*71B 9pW?w(F,+K BRa6;Q-7\[q;"=w3L%߾4Cq1ۈeEbql|%b*xNw\sX\nּ.|zW>ڴ%]š'ޤ~"iIIy]HQ'V 9?Z!?mum7r`vpmJA@%T_ؠ`V݄8xeqN~_7(ݼvYm+sa-4wɕگۻ>vWcЍKsм%xckǸah'i&dX&M\^;A)$-K-Р@WI8@;fAκ[Pe%qZ}`ؖ]+}Uz.o$Fq:[#)=4@ɐU1m<W2³?~)=PV,0WĴ[]o/=7!xH#4]cF@*sSdq;Z's®򢆕e3KƗ-Nh)?,H{v%L-lL-NGݚE.DjTX]L*d;xGHSp">KxK( Li%Rh3$wFl((//@IIUN"A _hŖkvFbwHcQd;xĪN)2FB>LF`|]GGO8xXQ5g(>Wz?1#|nVNUɊиLzy2fV#84۹kd)tE=mLD!䎇x?}F&[s8ek g.dC$c mof/*#=ʂtBER7p:iH9F?i3QHjDJ"דϳln@x;L}Wn7$Mm1;nQisVkp!K`3=^ifF$l@[uD,eT,6Y[644t0FҾ$$0AJ.c6Eڶκ*8ZpTwde4je:XImOa2BrF|G! ̫˶qiA-пiLsrn^E3.0ۀ,O a?i: gޜ,~L o۵MS! xnz(.UMpy')S􌊂+[~E|R4=8=QmOnV;οF1Bmp"Am=,m|@TMD~a31}Ρ DOKyTK'q96'tw39&'4xNr;q% B-Rlf?X 9U ݢI|wc`n-~¯l.8XnQs e74~={1Ya–V3A}60rsh⊸n#l9RlhEk#7Y&ZEdߣZkM!>Pt}mΆH=(DC[>ЊEhL,gU5%bEOJ?l9-AE.&32jNנ6!_2KNj<t"T{ZUg{gB)JiKYtK\?MsL<#=\*´JQ$lV o͠ԅYZ;4@LmC/>B{ oHɞȻ\ez<#Ck:5EEʈt]]] BoK>:r~Eb2JZ6_  N.͙Ϫt)}_ܶh` ~R(ҟJFVa-ZZBpE7 ?MΚj }# rcl! O1{Ї=N<X`>Ka`a!vd|Bmɞ| 86DbS+-/_Eyl$4c1dsƒ)QϏGt, kh$&kv3K{;շEKgrsX#>Xv2β'A=sёE [4nŃQջjeCɝX'QS0X6J@{yٰkZ2_Arڶ~ʋ~2s VMn5sl-YOв`CfijRUT/.E iODuU.-m[q^AB<|JWlFi9_s"f |_"f$ZBjx4%pk.,6Q{:WUW¾c/^"?A: J1w׳p$‹ _x4L6JT8-JLF"w NAoP嘜;sD2/tN{d"{ Ka6rI4V8x˕N(r%3 ۩*%!i͒?O1?w8 hk%GKN1KURـhp??O^)n6au1`F.DĖ{kM\o[&nx`5Y Д6EclճPC)n+wx藑Lj"O'Rp"߲cl 6G|ϮS&R+\zkIr;^*x%a-P (sQO㤳{9’?(gf]j]m/~ů;X Rnh>j]Ū&bZN}SRhoxWt4>]KYOtb{&DD9O`j U@q۾ZHO{n2 X͙GEVƲ>oL&G7qeIUۂ-5|X>3-fBC:h+ pa}5LU^~6yvd9X[juz~d=T޴6*0Lѩz E|9MAs!B)Co㐏;C2l+u2y##i_jƍCᡃ.:H7hm2|YhriF2"\sU=$O3F+BvyJI="Z Es*:Rbk ^CH2s_1p:xܶ:ZBB`:/Ĵr3PZdn0D( ~=> (kVxQ #KB[`٨~PӴRp, P0*[`Hf}?N+%ymh+'~Emc5ߛ :пv?g9Wby'|gߑoѳN-(6TܘikCЋ(x{y7O[MHh颗@5%l98M'>T9j$kc2d)+SL*1j* W>BRXڂtBwXLNݮaߋBr{WO!eyxW>묜cv6)tz\"8WJ[wpJ s$DQۏT*Cez}#FIخp$DJ]8 ;dd(*NF-FyIemj/t/yV!RM2bs 5z" ̱MCFBEzظ5$Jxf`C睟&6nJ~9񵓘H]oG"6Bݥܑpg{2E"XډYVU~+KV7q݁TʃN&Ԩ:?#D۴~Y*T(ᆬJ>a㢀 k07ۆvt*HRla Hר17͛pF:|xp)ʨ|8hc^|՗7{Hp<)v: -;:ү1Ȭkc23!AQtڢ!~T]5Xc#|lQ_^X3i&_ eE$h1NuxBQNYmѮ "n"6? =GcxǍ0 n\)- g{` 'jbXmh V$"yVs8_̲32 @MG=Q5 ݬlBOVU*!L% n f_~xb+=H@B Љ-1^WE1쒂*NjMP^ug”jHp"m,m`(fڟ4VVe-֌ +ү-`2!y)0 J$PTȿq&dvey-pG{,sdɱ]c$MbG !E|o(q0-}ZzV-?4dsuj̯VSZ JU ^DKT]?+l>_Xh2X*IBpg̠28@u#8%6wX~Ad> 낾?B%ʺ{fر<ʉԴ+s]ה雡Zxh~_ 1ܸMhTTgpUA{wj~ 2ao0B nHO^Mp.igSP FJʴD;,*ZUǭBvGy+"ñ- g5^ rDx-TgUV(\*(Ej>P N=ۡU"Ȁդp鷁# „NSXӉMn+iL+qJ~ǘr Q] E4+r$N;E8gg]9eyf簢 n,D_7LȑWeX'}w-ԞQvG!K^??:_t) 2oMscM_CLJ[/ )]Lu/ALs`}Ȼ>c7\}/Uh\0Y)vbp:z"g7B꨿A4ڥ}{vjd#(*k"uhn}JT0PLX[ӎBGQV6a &#ߒ!!.*oxFd;_N,|[Ȣi7M@KMO1~jܭASEtk͂ Z?F5f& 3QUDGu6{T85X BhxxC V|!+j1Ѷԟ3 9"x-f\!PQS+!KsbLb'ˑrNheX4m&V~R_nuJT&< )/R4[K-sͰfmBX >cc gt&}T>6ImP) ק_fyzbno)ud>275$ z$ZqUqHU?TJ$ۉEu)٣C &VcB؀wBXD\G^Cc\hըQ3/#T4?I^>3txVp:.rBGP'>5YTQ}97`ɕIcᗒfZt{-vb4Wsr zY7*#?*ukBGb: Qӭ+>o`ԿWC:6lX'8n#ĺuUKg Beri jGUC#q>{G^mS7vsvg]-32, 'Bp1܋a&((˼?^ \u28) F=;0^z[)(gU).JT/rDB) ee5AX6;oS#&/# #B _\U+sTe|4=)3 /Q1xPۊ4Mk4V(wOB?gUG%2*/جpS8(gR09m@ oo'ץˋ8Ž4CEߗ-mInN*WTpa*Sh<93b(i #F֧p禶P2'G 15FZċZ|հq 5= LwUf4L!SBXIDEګ6ٻIie~׷_?!k>/^`WkOƙG6uL]mmVyo;$ Mua3R9ݠ43P*9 f(QHgZ),}HYuBʳ|(468UB]eAr1+m{ͤ +>RWdb벬7~3:p-bR ǠvpfMK~;tڊ)xbG[M31 r\U|'X*j$HgR^\ $<.w!AS$4'5*xdq뫮/CV*{efڂ&_6r]r("OX_bL%JIJV >0Z$~0-)uF&-6z *FbR1ߒ ADk{ Pߞn yShh L:|e ڨK^˜λ#kEK*]+Nl/܈TV+أ<|ol jBqYGx';( 3{jΔy!Ns[_hA8uW D `z걅Z[HjePCɏ3::# PdeuyL}<7>A$;}{/qD{'^Z1/GB@vNü4i j]ggY 'YLgF!w|=u_6Oy8ooJ K978(-nfO)Ȫkt!rr6m~+cr1JDGs.$ 0~2XFѐ+8A[<$l=Dut4"m(Lt/E"!$_ܳѯ#{6tBԃJ02Y(ְF7! ީw`Ow=(fUoV83RMD%n%<'ESD svsL+Lt?liNH_m Z&fǡ[S n&\65׹Q[Pǘ x^OS'2SIVɚT)N.\?1>䔲K}7sitN@ԙN]ǣu#ؕk|<^&< 8 UF{f޵1KgB=l:5Q$'E^΍ZwǤ2vq$oɕ԰:wX[dìN4RH,~0jk ycZVbF_uxWk> stream xڍuTk6)!(1H)- C0--R (ҍ -)!-( H}sgy{_=,F|p{ JuT́AAa~AA!Bvvc( 򷝐aRh &an0(& JM#* @x+=P'g$:ߟN0())A@ @t3An#8 A+3!% r#xP3A@$tA? P##7(Bx :;HSE s8 ?p~;`9n6? ~An^p?u٣ )@hyPF_aǬ sPC`H/_S" ` )+ Crp0A=!*8hlN$@TPRH\L @{@~_f  :B/B@"!A {E`$': qk?D apK,`gG? I ""qq!@пsmAlԄ9@J|矹;.ZPTOo[ޑo/ܡnFCS Mߨ&E? RAH_}wݠ0>  C}x)Ua`ï?!(Dϩw{ap$p#TR .= rszy~c@ 怹AP' 4{{@ `¹i8X:ҥ>V/ƨG ,.>' ^:WMn2T1}-š*<j/AEcv1% } | Waح] =%H)|{?0جӺ}Y>h`b>oЏt#EyKQ+BISB^o[1bPRx@;*+]z6ɒq.oujt#XW+ *)FߛեÞ}-ؽ{R㠅ǀ}SI>踥**ަ\D.lW- ܗG#u[Fiv[NϱX04Ip]-= x-^jKb.t|Jbid>~3vDB &MRy:^zJF"(45Ⳑ-9_pSw|}*?L\Sv{w510!pIR'.[ =r _13_ #(DD[40Cz|?gEKX]ג3rq<'; ,c#K[Z& =:L) .V Q:.#z!Klγ-jc._GX>z Ww,-ĕכC.r$j5~hDY|Kxw_eDB8 \DܝNR>||p]?Sfl*hd\oF)7IPgJm]Y7)pƘ'UO/f|:% P5~wd(F/A뮼2ˈ3)"uPWIK72 y2󘱉9wycs`t_.i87olB4/bp"a_J̱>"owm|b-)><e<\үH~f \ť p,-V1JqMPfGqO\}|RuHvˬ^vXF.F)O UwY|V+-d:wܸ=U8+9=tlԣ*1EZXkKpk DnkTLEseY#bwBdVi~_=g㠴p(Bق5E(BǮ.Bq.>е6nv5M훗wFVw9(WP$:Z)sE.El{̡A2%zIF-rqÏF*VqfSgiɤnUX(}`H /l@cGch?#^6td^qzpe1H7(hih|8,DU(Y#FH_p2ŴJV3g-h8'(?j-io{ )h yO|{G|곎Kh-̐ ~宜S[4@fxI i OB?TKTl9,;ttUfģ +XOX6 64ЋEUoybPӝ(hh?SQSYXjRճ@랯yVİi(H Ʒ\0mr߽م'&s6Uei*HB^*`uo $?cj8sjJא'+`'vOJ;m疻]XJLQyhRzg)|aAZx'BDt};6vu4/-txLۣǾY\a 쒅s"B&僢x-|x<"ar:L\A+yֳ&Y5ȿu!5 ?"t#ktTQ'\/RG 1"Ǩ)OW@,Qd7%tK9~_$)+ROZ3pmyFZݳi `syۣS7gZy̸Tv+vLN{"y3-Cb0<%%2rVJ-OG)nLo ēPtۚΎExs(.{xC(yYyF̾w9|ڒ,눦BAsvr3׸xpmL[|V?3)Iy)r2A)9|+c*zu:S,,&~c߂I!.&*uZϗS{Kn_x挪H-jW;;nB"׸~63q{i;7@Yğ,祦{'>}v #a@\$<ǚz~ ג;Bֺr=M 9i0xd=Qحl8 6%a+" $k-#%ws,?#T8_:?P,y-̰n?B|]lNͷs.>1q Sے-iqwŧ)-O-Noan$6^)eiI2R=lS$qK/5O 119CC>r)Asm.|AGUVK.+cԊw Kbcu]R%pɁtkAdM3 oфIԠ/~OOfͧj ²3(Q5SQg7$3\ޮ2K 9 ]6ʵQ- vח$UL^CpJ< S;D#ϻshʚ[ˮ*#٭Æu,Z"K_\c崬w1ia#Uw&ՙ![6XL8alߨX@:Ts&Lk%;wc~hFeS 㙥 "i)V|iCYU./Q\1k5ܳ-v KŸ;~BA#ChfjJYo Kzv-7%w'xK^z=ίoWo&82!=Zpszc׍t,!|8UȜe]1lH'h?7H8L~ƹSuuڇ򵷘ICGnk&~PJRoRzÿd/L1uCGOzf 1BmG{=j>AM -b;4[AfȊǧs&*qKOÞOC*rIl[\Ŵt ci@ $;trԦͭ$~{qp{$i@m/\؝_ wD p1h\Pl p -,]Jw֧1Hn0+ɪӎ ;" w΋fL c(16j2N;>W!Β'l̯.#^\=[N($>k`YоBSQo 31;̢Էwwֽ8^zH==t$KRG""oC6jTK7Aӹ^qb\m&Wm >ը~/k޼)qXV"MYUc/a!3@F631E."'yylN*Ԥ`\IyS*P1m dXoy;"įev&J:K2,*PJb2'_Ȱ%7 ȦIDF͗.dh%pҰ9_/|3e+[3pa}26QsY8RAǶhY8w~X&`9JFtKDTf135y֮dIJuj#z;?nXk >:}mՏKS~Qs6SCDY#=`Yk_$Q``^uu5FmGWVrXL&_ׅobp~eSI.ռUas9^ma ݭ=9#^6슅%3>2^χXCJ>w*ϜWD*VA_ rZ3~aɕ+>`Gy$ZQeѬ ۽u|HU{CK6 4HtJRM;ObJUJQ.@S(SXJP䚰=Z.B)5̐K$a(g1he! vs ӽqA^/L +|GD2!'s#Sͭ%^m2psoXXx ҃1]?{ endstream endobj 260 0 obj << /Length1 1604 /Length2 9397 /Length3 0 /Length 10455 /Filter /FlateDecode >> stream xڍTm6"J#K!.t7Hw4!< %]HH|S|s~{535q3ШkIa9 )VQQr89990zLG8f'iG!*0; 89\aB3 Pa( pLi##%(( i q* %!3BnIpqqaab/Y.P%@8:C_ [_1ږP-9<(lf;xRPC+ `UOvlAvnP; 9PSfG"X ;/ {96 遲rÿ8;j#ǯ0eKlm!v8@!fuwv0;%s = Ar s  %ǯnF//{= jy􀃜!? -a0 0X@0)? 0|? Äav6n㕢>_1JI\l@/'8xw*7ZuqQO_޼w U@CLο'/]Wll~ۙ [_vB<, aE sU `Z%xt6 ;'ϟz(\ Cfxa_σ'vq?O%CV!kgI.^>0/`p.^s#F8$~K?7CIGp<<j~#r6 [S/r`NF>n[JWM̜{ т@\!fS03@*IraÔK=.7n1oqZsJ%rro>J9\f-MzRtF-mAm3uy"もv )G7IJȱI28آ[EML #abPj[{Uq2UMDiɋU耵d4Z%+8Jܕށϔ~G Ǖro=L Trh4I0sInYeYcmX|y;'hC,yE4}Cƈ/fVm43eyZxJj[T뾇L|gv1|z(Lq?Ii ҁ ӷQEZ{1:p0Ām{1-t6$ 7'$&D{r|cNz{}&嶵[>6eiP"ٻmk(p2U _\2Ǽrӏ1+ht$d^)P>GrS!Iɍ@F~b'wu2LiO(}97R?hZFf^/6\=ѫؤycY|oqëo"cO݄*TtAz֛am6m0 lp!71YUk?PI}p_!Y4$g|wW!{SPCT(l'KP&`Yl}~"e7`<$ȃ鰽c1H'@׫INϼ"8q/kW;;`>X#PڴI_ib_:m*MjUa |ooK!RnVTCNu>Rߚ!O V,H9BY$ar`炕 !m8n"XƧf̫1<9ᨓ?* Yɲ7:wz~$jlSPEm<ۅ'̦Qa ƭmglIlaŜ'K%JEIgT />YF*_vfc + =q_#מh*N<=G' +gY:y¹rpzqΌCu䀺LzS652$ov0 [f>X7ᗳ`׊9#?3/.,x b- |&a0c+瘝?Y=&{u] 'Kݝc9ɴ Fk0ò0f-XXsXcR7\ҵOAP=ug3m8:2,cg7)jDSU \ޙ;\{p/\3O@,cZ4fy#H)XHx?mPE1"ʝF nDkkѝ[ 9|C 1v̗SWW:Oqn13!}/ǬA'*R{6ѹj(!õ%KBDɿv`myȭ,&u_ S"sAϺ9mDzIj53s*Df8d&$~eL慷1~Kիm9RƓBeT4; b.63ƫݎ5~ zg|Zxt uM ֪Pֱ k\ IYy9fgڎ(88fuDO T)cy= qX},i;KoU kYO%Ĩd\BR>RV=70Uxdc1٠Ѩ1 bB{`- t~OQge2іo^!>64/ >ٽ]Bw)N9ɿLO~^ɚC$GpdNzAf4;׸+?m?=kv#{-\/鴤 *O.g629:|>߫=|K1s.Gp-uBdN &t8C5e޸̆ JL8jqX|NOXѷg}m549%zV%LȫlR6>$ސj-e-9Vda8ᄈ4sz˿rg~.}MxaQ4vh #~#_X8 ;fTl's̭lX#GQѷw9V -'>%=4ύaTM]S-lFom6M |{ly F|ޱQw4q`ƂQ'^>lA/@pG?MhPBRDF H>k9Yw՟7BvGz^xQ>[jeO}K.AC+AYG7o9Dc1Anx~?n=_6]Uc|i, <&c+nFBq%;'_%&OW,BW*~29DdDn7ѯEHk.Ζ1 ,~2z?0s׶Ͽ%k_" 3G00}~RXc}gf Ɇ-LQ&Ķyl`NȂφg]QEVٛJ󊚁XyW ]_3DN+`QX/JchΥ}Rk@nT[~sZoٓ ?QڽgSNnnT:vު>NJHbHlpK&YX%|%<6r /X / ;z~fv\[c۷e5\' tmm־!jh!]sKWwⷴjHn1J#RY?P5'Giͬxt 3╬)4xynu=w&_nbn6*v2:)H)xqNZ+ԧ`[V}p5;BpF ˱abB " P'M DQhbO!63B&Dr:El?)+`leye Mnk5bRFI4کdq. Ƽ7rtLï_1B$m"HP dI$ǍoE'!3g\!LC I|~±T %irrnowUNeYyc/Y3)Df[X w牲{2cf|Y7רg.T^D3:zH:lxꖦQп.upRMUoJ7#x[g^A Ƕu4?֚,max]QoX^sa%lTL:\k1o:6Iq'ͣXK~Kvoi l8y!/w\қf`ʽ~˜]dwEWz}[>1Q@:͍} ѵ|WCD=vH%:.3 l]xZ*zб;鋔ya9 Zl? 3Ju`\%NOAгOSx,eqŸ}+.I|'V{㧂TG͆g7/T WmP?%lѺܙOܱP~w\MϫB9 ne#ţAF(|3)uo$' M6xHͼ\ȝ;JFPt5w)M͌ $:HlL=h^_,i}<5 |>$ޚ/f5- V|:nDL} O/@58I*km8d'>'x\֦чo8i01%~KT*4wZXMsշ;%Ry6闑mI=NF&&8w{,1?(ѢJUtFyf]&'Zkux//Tr %§ ^nHGrpdt5X_#ZY)w$m˪dfLS.vwYsCY 3X:{ 1Ҷ \__'٢ -8r>>`x^ Fdʫ uRZ018WCe?ށAZXm48LcL F 2.~?`̵E:^K#7EjZowۜ/BHp.hOWk$*76?X wpN/8{ߒ%>`:JTNOu貂Uoh >/k+=lE9?d_MEU%wv`KX+9H=#rE<i{#o*t+{{Νlh]<8 Pַ~H}]'fV bKH(cWSFCJ촄cO{Q%vco<ia'kٵ/NYrn/Hzlp_BHKO{t!qT~w%춪~B&[ uNYrkƷ9>޴>P~]Z]nG.;畖ڨE #ӄZH#AͥuD)+Gr1SGl'8ޝRʙ'Bqfa0.Ke/#uן~0IV5&CL꫓ZBng2EJ7i(vWٟDo-°SL(,l^,Z`p-q}rk_Y_8f̓"2SK2ݻjs|Wjf܋]T[^jz"'iuc\e$oY²BFC7Oיcʵ?)4W!DU lye[H18, hl3 =dH,W[mr{)2 \uLbQښU-" am#L7Uޫrjhش\:Dj|A7ÃuN6I1N[j7ΗחOЭdY@Dd.Rih]ttG&)Ok f˩Гsz nk쒔”|5Oڬ]d!X(:fQSW_-X˒0 !Zp2i9jo2!չ0Z"DvU9&"8LB@ONA,ٿ~8%uG$-`8)d^C?~mo$̋F9P 7wA2oL좴̼!H >;j^=`0~x<Y,XQېqTʭu$ފ W:ϴI P]*%>>Q.Y |&PCRc΍wVC]9"jUjlyu,qΗYY ,#bG뷡 yLY>z D(T*FϟQV8x˩sJrQQ}yA5/{#OIx Pv:NgYpzA,5KZ+2M99D8δb3_rL{42,ˍsArzO(xZDb7y>Mt9!@n_LmG>D0+SI;,cuXBpv&(װǯ&_CZVdg>`-;HHV`n ËBFVTuY}Gf^M'X-4_g-@mH'w}P} ?ͤ:U0%֍'8ڜLNό6o'~OmhJ;]]p\(axU ] qߕ2IKTPR@֦%SE>sc}fzYf;Z_bii)SolB[=OF > rӦGriv @7Qr5-P+ʰAC&`8? i+k~2/NT003DN2RTs_G({z{:A x k{}2AҨgQ)a&ZG^MT E,Klɍ'vgo[*'uOTzh u;WoZD<.pQMVP/h5 g&$[EEo Tc1?BHY`H]ZB-rAsXqQ5.^(_Vo>a. h ZHFT¼(ʑ8pbC%!{A_Bߝ2g"F|f+1V2;$ⶠ d !2i` 7>;,6c%A^]]’|ԕ3k֙]g[p DvRVJ3 Fg콯s ' +y.Y#d#έ 3O6҉>MhzuCzDIzƆ:}-B f蜨 4Ff&R>䤚M*QD1i fď)@*aw>M\NfYMz4dQhm<{2Y"o5ҩ'M<˧U6!XyM;GCFi\"dƽG v2Mi v_%?d^K] \BN(Zp%}i-ގ$-oYH=M(<3A#_\вѨ)I9TxIJf6y⹻mמKQoz<É!56=׳P.E#rGWrSH-KO0q>)m_J\שiҔ@S9~8Û-e$P[7W{"Rӏikf\+N YG6*+$2"j[ՀR0E?-.rv);;$"FafKn% */]K]NR`U(.o" -/$bɳNK>nە̒)ԮZxpWnwJ攒⼣lg˽贽K]D-56 m/;uQ""=I-륍O?E_$El(ӕsX!EԆ٭>L}nuឝKEepla(Mߖ T{2u,r0-)b<9;gfyP9eX? Yc(o[Rn>㭙?~r endstream endobj 262 0 obj << /Length1 1464 /Length2 6986 /Length3 0 /Length 7979 /Filter /FlateDecode >> stream xڍt4kۮ5DI;3{f0G-J j BDDAD ?I߿s:gYkw}빯a㖱[C0$7( P<@ 3#pDWD!HTPt AQ(EN{!^ *E1|=cٰ@""B\2PG A:@]Q'@\zpG(_-H7Q^^ooo+a/vD:t 0@ ׃!!Ph!P0[u8@OEIVn ?bcwu|a;G(@KQ@`!.8qtX~O( (Cx8!<G_yAݲV !xwڠݗfapo_#[O7^'TE ?>{( nA/7 A ` p# ^P@ ` w; cx DqE/[8?˫dg`?1YYO@  w.oǿ @u u{li#4(2Cl AF_]_=]\~~0=(]hQw5UABP٣8  ;"}ڎH?L{3\aPm8ד+3YA6'A4_6ϡ#XJP߄HT 9`fA0W% c,?*D65j4B B}6x3pp*o|_Z {&,WS^,+w-5esg}N鬓fnOL=?f!|V`.K+ZуMGԁ+ekߣL3oeB-m5e9"tMyka_b24.RVi:BTB73E"  _zf[+=#(%+Lm: 7f6vʉqxKNZq țb_R nk ;\\w1̖ġ((pHF/)Ɣ(:󠠛xI !(-Bp&,s%qkEM]HMI,י:Y ]FcGKԏrژ/, 32lQ e՚Ɂ=S'i!K(Ҹ[I}!1 CfN^EDj ʂҖL)0wKJNuA"pj"\rGC ,= %>J6%[j4oYP4u+4|5`H4'ia0r3r͸m;EswӜ7Oܦy*$KShH^H^8,{)(*'.e;I&Ng/#jK~ɩq`"dJW&a`oh'~6|vΘhc Ydu6&!|7RSv!lޔ8d v{kX C5@4o4J姖̼R3lw|T/1GToSX.p5آ\U-Y8[oABi8ETܮsWh5>}rSՙ(voǸ|c$6,Sɫ6#o_,4%ʡ `> zEJ85AlHHJҔ`㗫eFe0 kBuqD}_5)cMMQr;[(] מtSLq!j%/%f eR4l^5ɓB@,r1yc@ <|aa9dqS?Kua>]ܽ%!< or)9dKra}F)=<{k6ԈrY*䍱3sX-$ГOuW:< g}r$}]d`;KLʡ|v;y'rq S֡1aVJET&΀#6mr5մOo2ߥ"? Z|Ş FBC*]ݒT &=IY{_V O9&Y<FQd6 D7'oځ~Z0w^m%WDMnޭ1+<<fFs6-S P7h)B:J[t^CqFӱț>?>9>ˮ5#.EAlp0hDS3%O{RK"0-K)TtȾk؋Z3\!IWWPb'v5w >0 i bt8|&4Os&W 4ҽIF,sZD|V"cT.î}_E܋?hIPw]b uY'$1E'mP(gݹGƨ$xWw+Vus7gOJxb*al*n a SDF&~֎[J#Nm^dlo?YMa o+u6mfe큥jD9FSKab.B/m21u7abh=CRZψ:cnX?-κaъ l;S麞}o|ONq|B~(OhO_n旺 oF ԗ >ny%xD`{ &惒s#1@L7H6%۲o% 2hg~ y6iHu{ ([248l& lW6pyJ~l&YCg~Km/˜S霴?8]D ^}Z%Hp,l'aWw (^\Kgy3֫dc [̍ha!i3áoSa~7:J _ L̉O0_&3rYAf``q,0})BˎEq"r]t/VO׊A*m/i󃓦i9yc_ڞ5> u'H݅4☥Zq̀@:ɠ KI~)W,aRO]˯lأSl{iPzјƗ|+fѼZ W;EC^:4 ,zA v.@\~>~1&F?L/T~9\'4=(<4Q@mEg)54t XB܈Q#d0dTtO<9+V0#CI3+ * =b?:K׮YDTPjI"H:{mVz[qJ*;qf~]p qEc"k}Cq|U =7#hU\oI#"%F?k"nG7OeJc R ryb1ܳwF|{IǸbikFnmх1фU!z6{fMMOg;5§cSs"Aoә'*Z*B%\ o'K*fVV2*A8oӔwѿ<\݅_ Iڊ?4%Xev{"Sy=尷8w("_:(L!z4q{g,:7DAŌr4-Lx B_n9Fe@IOo Fr$>q`.Z ưpQ޽0ah{x3jS˥ je\- iBN$N|/cg̨!6*P}~_)C؋6:'CVs@?LU=~FYtot"|hlC䄘<џbDi-Y(`nGpV" kCA͝I7Z=GmFd#ŊR2aOIx wx;Yfԭm|vj?A"%g:+gSpItis6Wˉg/U_ք¿ZHqmǵʼn`I7U 1d,-:zG/N&Sa;.W(Ǿ8pmD#[% d0d^䕵dHOcb $;P\^z Rl95nFp4&|3q-u50B>8S=/En:'j-ioCυsc>Ylңk1Lɵ{Ga+lפhk#^O P`/MopXvHG=şN*ȀhsQ0ۏ\}'Kca!{H3-Z+D:_v:9j:Zx:x0˅ihvir$Lń7{JZ飳[asFnEjSx4&wG={ з~]S[ 4nc=L7|#Rd<Ri>BG綏CfuZG&4QXi zfqvKsy5ru::&|4F3{͙o7Ϟ^VMTs42.2O8|=t4?|FIQ/+˙Vɲ <]IgnV|s81_U|XV|p_RsJ`HKޙiEu1уI?ݩۢnPhʏLw& U9KmS}9itY|7jH(}KgЊ"z$~S5ƪ:cڡe~Fk\i {~.|bwH0H9ƿq1Ia8u [_ө>QX ˉ"ƦnPsYR>`8ƍ!n'w¹im-1-б8$Z.;Y5[ZD߼[y{ScԸXcXhq,o%pj!NgAm zg[|7/o^%|߷fqvk{ZcvVeщĐ3 -qޞOȮTju.}g;TF)q?I+[ГJ8Jd۳anƮ|5EwR*rܜ>L'H`7ӏ^:m)qh"G3"9e|g%z}T>hN!ua+}#Cb|o]KWrW0^FW%))"*G8^GV4? HO5^_z^%\sWXFrC>(0(E~$CC4qvs]fͲbZ-m*Ww0Z4(yx9KW{+͋)u^ܖ)z6 HNj:M`WFr[]F6H =iض U%އ[2>fo KU8u}7.^÷^eqJB庘TfI#M 8O21|HM=[nvm S&հJja;}Wav<~*Hym6`MJB}#ClLN jMɶs$2SÏeo%JKK qZ6aV@&UYjFp{raYH|ZfW5c=ƥsz$eQ,%lr,&bˋW_%3AN]c:hIS); BnyDߢ|x endstream endobj 264 0 obj << /Length1 1705 /Length2 12258 /Length3 0 /Length 13354 /Filter /FlateDecode >> stream xڍP k݂www'8 'hpww n#szjfݻmW %* PfdebɫXXؙXXؐ()լH@'g+{߿bN@cLƓd\lV.>Vn> N|qcW+3<@tFwp@cJ `f bt25@ƶU{S+ \X|nnnLvLNinV`K  40@WfLH5K+`7c' M`ke 9ỲNUi9Y/XXq@9<@s+[ @QB f :ۿ[1@BD`9:Y9lH7oU2HO hVv:kwy ̭@f$artJMy!Wf8YXXy@GԒj?2rw%2 y9`'׿XYfV` _ob_NV]c6^f [/_wx1r8Y S$Tˣ4WoO+C  o wX8YL߾X?/&/o/$bkOo(Bm9@ kfV.vW+ 6~[?err)YM-tͽdlc`|kѽ-ۃ֫?U}ߐ@f,'of@?G;!Q..7Y쿈,0xߘ 7Xpx̦ 7b}sf _l/fo/vXvok | d/_ͳӿg Ru/d{'89W.[|@w)¬)u]p]7Ɲ1)TZFvIkN7"Ih[hIZ}d2ӊ4?HQMx[# e {<;^Ij.Y䧲Ih(i\<280#ƹ;FWxz$hB/uϕ 56N| |<"k */d9yBleF4}j+HPSOBvN C?&,C'2EVHLp- h\tF:pw0myqep64`VfP+'K݈%t2(T&P a5 8D+BuEr3"Ƨ\c}} C?5KGy%'PO]sWc Ae8L$r Ғ=;sUzLqʤǑ ?EBzyo7oE 5+Ec6Ըs?wgw:+IDBn 5Ţj >lv=1ISR.y/ϋ |ngkWxCMn>ؤqB AU.sgnrttxb˶RmOE:jM&*N._ `|WMLxϾS9}ˡJnx+=款 4eR^^>[b$Ջk /qV8_:1SmR[iYpWrH8\LGT2c},uh"˔FJCE3uNi`EIgح~|[/KBZN4V"nWc%kB8xÿn7-TB[1z?ԎڿQ)5-*.ds'q$3`ͪSTP )KBv=?eo叉Al 6}5@᳐0~ݩ._{d3ҟ\" `<9U)TMu] !Om6'Ko^ۊr3vذV ET?z4gB+ *M(YRa~Yl~ݓiN-XCVUTyW L,K$6Ӗk,H. !""Ke>W fPDO^sv*E}0c[~˿<֠E z˜ !qAALe*/?7.٧ mWW"m}9Y* ̼h(Ϟm̲%+|ܳ3 fVvLv9 ;"`2h"^XOF!y탽_$ {7'Ѓ(&nxxuy *Q5 :O]$6Ù0 \ bp(Dޥf<ìs[ ?V5y!S,졓_a.2(RE LSN AWlso13̗7 *UTW.[@6{TSDV;O0v^;L7Ҙ㫗)٠T(꺆:c `NZ^1PZm%F j-'4f!( ZF.&Yn/gx+ReDҹMj7H:_aɸ@=)uLnmnǗ߬~Nv"IXW 5hV!st,axYdR11H/\S&M?3]\CRMt:fT[w-x{<=J\H6 D=²C N!A^]υhA!%/Y-#!qH j {^dCUڋT|A$It%eoH |pZiX7L6Nd0 ]FG̞Aq)<-gl'@d]չlRm{\h'%<ӍM!U^aNa ̀L@B-2+JR-)z,S|s@_/7}גӏ$K+'I4՟}n{ (GH:"^GcH #.7e]s/#Q,.QY p = t]Dj\͟+M4"^uWgZI]t(.T$4:^p>V2Jo\zeKQƪwB{nF{P+m67 Ui a$0NYmI / ziVa:J~vc UoYx"NzVZ҅P2a5=y񹖵n(~׼̂ג衤R_Lh`ERmf[L\$pMʥ¿{e}xC H/6zь^zE,vqYw_.{x jZn_t7#?8{H$YqIw6x[wR{obskՎo;UЗoaN{v9|~EYFE?Q"t"Ќ&;F>ewtxku)gc=T7(玺{  sIeѽz_m+Sy4yāQng#GѷnӕeB][ >%`>+m(/ugٓ!F/#yN\YZoĹ|șHzXi.zkiq!ŦQ"u4/}A׸о.#UmaB8c4)P\Jn/Pf6|{"G^i Л1>'d: !YR~߹M\@{fBD5 /|7GK+"uBk*6g%*W=t_7Ƿ=~fr {8/ͥz`o -P+u+new5fCswK1(PPcZF*(wI_JM'R;8SxEWZam\ל h0oo]bW5P`$<3 (4]} l잾9goCjhopJwEAgyGRk%4 K ϢqI#둤-||0|8SK'3ՠG5pƮ1-a=PrV2D).5I03bqo̚z;q0E8IZ;v[y< jas+7M3߼lƮ[,v\W?~Vެi˓Lr=q%%"=70Úu?]d%sDƵA[ȯ$ո ԧto˫]Z|0KB7뵈' ˢwA]eYd=jm+&}pK4ut(7}Z숨/[!X N=ڞTN)"fb|\zö#ts+;JU"eA8#ǥpO5$1>)y3BR@eww`x`/|qˬm"˨s؇KUJPp'sMYAPAE8VѾYSɬ@to.e_Ā wOjY<2 J߬oKP/jKnĬT﷦`"X@oNjYm{6#j:wR1Dxƭ^Vb4s%CxT1$h5\]@;̓ 8% 58GP;W`WhLVt 齃؜ Eb{ 7Q/ÈBjeQ|? [VL`bxJKj}e\M-<lN>>Km$"Y ApI[(n7H_hF ^,6Ar'T?0van3`9_pVyـ\۩= ۢbdB1eh N^|C0&.%~_IzjmJ ~H]喒b,H3S,b,/Hڷtwmh*\)r)f\-b+|RMc'p|p<"NԴ1+JU%XWK$rhZTv!N Խ߳;b")]gRkED'Ԩ=2 W]Hvz/~pK(u˃yϼe*^C/61_Q#rax )Dts\x$S#%87OBPZ^p) FfMAL{"$3Ag{HRߒ8dHuN{Xr;*0Q:5}3 F J̺_*(\cOLf9PݩEvXWo5t`[՘Ҟu}Mb_2FoWy)`mY ['$ND0jrs_! ( WTSGdu9@'U0Eokwb׳6I'uZVyW>'lm]uk.|6H1QWƪ Yޯ- npN׽|zjݸP'uzvɣxF>$ >f|NSƔAabE'8`Yv飦S#"C%Jo0w :3 $+OaJ#D؅ںҺ{.>xA[a?Mjϰ?)qsN1Ʊ.Ҍ^QzV&+d ?Uoď# ̳f&q_y}[+U 0PpA)_!AՈ/3G;wQ5%I#1W 0pciJR5~59aQ!룟UTLqDB)xf6}rr&.6 Ѧ~*xfy?acJ[Fh`dQjy;#l1ȓ|Xbfę?W{ 9KG6tI]+q}ll+o,Fa_꾄{wŤZakƁo/sc4+ h:˖Q0Zǁ<^L$Y$NDB7^ݎbsN2o*-?|#w-Оߥ&CfQH,yx2}2ixI; >kgB:v=_'x 5d$/G33! K?-E{M'_aRTã&vCm$[cHPvy֤Q0b d\mJU>„JZ ĥB|Ryv"]CMkԴV: !N=Ǧw1xij 17yL*xĝHPHls!-󓟹DVՐBℝY1;_[_daqclC/l}n.H˼MtPBX:}a0ʤCbJvX~)Fhfwqm?GaZ\Tis|x(oߝy F{v=iL #W4(ZyŷZO,rMI6&zR ‡=, ,Ė#KQkiսTnH]mqK._VHBc̅-qP{[ v@nL}deNW XLj`XB! mfhSIh>2E_ ?C] zie G9Haχ~ &$`p2K. %\j]Ϙ }-f*Ě7Rz(ِb$eV~1$qjEZ)[WiۻZwr^AD2:]7 ZQkvOI³e~kN/aj2j{AV+1~IGPu~3v?"6Ԑ>/κZ?_~{ڗY?^tMv '< =Av)g@>a!Zɒva@=Qï7.ywLL^ EcFLwFxp &H2cӵ`9ĜZuŦ>awKvi´ѵ4f^&z ^o7wiܷf#w_BaL"k]DIm`qԝI]ǹkgq"D>S/:afpЊ Y?|G_(L]Yr>m4* nI% UۣRUh] }49w}TG70 v Svwɼf( TRP؎W ۦy%g$O&̸U;nn2 !BHfz&4 8VEz(otcm/!rα(lݑgإ);cǣ;<#7#x{ʁM܌qx%AŸwwL( |fku)Ys~_crCyR!|Uk~9G^TPszjI BC^<,^Xr6DL I;)f*N#]ZI/8𮘆_SڝR;@>luՕw}HVg~ZĝwEB2`뜻kg[l5CUxsaZnk Dj!ڑ C<|7m,N.1ۘgc ^Q/{\E$s=$'WpQUVNtSl^|dFc\8CbkKm#u2_1593=Z hc^%6ȹ0W[( R,!9)n_3'ɠ"@n >vO\MX'UrTӇ^ꕼkRF^"(q| eEyҐhۋA#;s ǽ#O`lr:xywy-:G˺Io<]#>F>\=fzyG !gIHN#2x.m-s#H//C@ibZ+O"ktNؗ֯ߩblM=t)cj-jӔ6g4.7ZNshyبkYwS)ͳQR ^`ֆg ljU1Y\ XfY,n^wI v4 ڡާ0uq?&g,^i53kNLtTu>Bs8R6THdhm}n7eof`(fV50%WrzߎS$ GҪg2_dەhKOM$B4>`/4s4e&&O:׿W@R+&X1v?vyZ4.D.wX)d R򾺟Z g[߂C+>hNS0`sJg%&yؓ  $Z~.7¥o)bB}0A|uY3t0LoOh:y(/$)O \-0:jƾ^V9:]ձ lh6 &3+Z'rO!yJ?$=-sht|PG9x6f)#Il°;yCR1;z!OIXj!߫lG]僣ޜ{wߐ* UÀ%{̙ }mpIT H³2^GBCqQFbepMz~cj0-^>RҬ}4yz/Rg0WTJ3>؇u3njL&Jcj71Kٕ_'%g>߻K`O9޴}б5"zu`:Jsd5f` kJ|nX\(6 .t9y &6zU6GB@M2sʝ| CD=^ -D4-~8U.!>V"fCF V*L۸'4?W׫^F2Jv$nCc/Cݲ$%deI\q8ȑԄEFfQ)ށj9b;F֔ <,CγO;nFrרķyy,'V\9KJ:*:ӊsePEzgXz}tOU}Yy0,i_9B!yB#EN9C5T܌ u`هMu@hޖ\r6[`)QA `'q,<06ޣuu>U%k'xL3ߤais#<⓱ Pv$zF$ȨWVD؟R|\O8|TpXcO_>)9f`V'fRيp?XO%@Q͚|ƒ;ZUM/ endstream endobj 266 0 obj << /Length1 2620 /Length2 19235 /Length3 0 /Length 20723 /Filter /FlateDecode >> stream xڌT ! CJ H !)]ҥ -!tx][}k<{>TQg37Iۃ]X E56vjX؂jH8] 2Ic= j `qv NIc7+3" @ rFwttG)_bv '+Sc0@dhjl P7x^ŁݝΙBr9(ہΌai\ lLA`g W qPS(;+m Oml,lsƦv`O+PV`qpy024u7v3561@ZL` IM\YlRe)+>I+')재wl[%a rtIcY\\@ r];i3q~hSٖK o>k^1\?N@Qk1C?li H+EV{Lj왼t6-iP޸!t mSS~m{J$*ɻ d|m$1)YymM*o wP2k;Qn#5Tfa!"޵o\ ߒ}+ЮxqbP d)PDSMQW8ɏ"1k{/yC%(w$`9<|^Q΃c' p50(^uNwN+"Q"OQ+V?WkB Y/70Z,x !̱M J9B &% ~1 ȡ>Ej]#5O@$t[%[s[astV@:CGQ lwI a+-?ܞTf,䨕:u HXoaiv3)1=Nv;%f$#bܓbń~byVF4t)ՇOzcӽeH{.b"Sxǽ(ǃP`̻R2 fBXx5pl@ o]d8ѢسDCNKBߋ .5h{'o|վMX Lj{Q wya4ظ/@dy탾/G *_ oD72|I@F ӌzmUռi=ǥvLe,Mr)8VHEjAK(EZ!֫]s3XCR ^O}D?HlF^ W̜+yJStd ҞEK>E?Mǫ7 1FKmg-3ٗ6&s)t74/3v2h b؝/Tdu||q)p>=gZPA @cΧ48kb@t4cZ,Z1']1)oC~'GІF gX53MmYcLf+iRqX(c]H `%uI=J*xxA;Za -'7/F"Ęd2dflj؟В4.\{K̿%|qR2zz*~Luį:ft#m&w&v 5B#DMZY|d 9d u7܈2K;.1:a[qrU:n)x|m+j^/W@Spc#$b1eo&\ƿxJt4ɱjdèL_]fӏͥȬK/Uu,&Ob+8\-C}.rnTk4,?caYF 9Vk#I=kctGH֚;j3/<s;F#2;0\[X9[}g/vY:[#~O.xHqCEqÛlK C 7Iq}I>mhw.8!^fL|i]ˢ uNOWλ;U7-c36KeHPuUKi8]xnhϬNNVj/_þ^>;? P~)lX;HRΥuL$-0YadX#2ьK :9?",!{o/@zP f8ф^l8%ג .4 [%WJf1mAEX&J0%Cejc(O9HZ-M-=u6J) jVEXѸGBM0%I*4ruZ=r*a%wVo1^BPiv؝7+dz4}"}#έ}QDA⽊IHt3(!.р8rւntTVje;Ũ,^ayOfAnhA"3c iU1ysYA]CaS ؁j^7b/#3PЈkpg>Ebc k_2|~˹D&yaCuwC8@)!W#OxD Vװ 2ECL.83PH&KWFRp{Ojذc\6z]סxRӖKS ʷlΙ3zG3WIӢL ]Q+^mW`loڱfuhWts$CU;l 8;M=gd@qPy< Tƅ){rl"./GyYrds>5qG  3ח9]ncՓrF'%(lE1&6hxJmOC(@jn jD^;NH >l)6~֞mq=;ƶZG92LD0z/& yb\!Jeơ<t@fP27)>wuvAqDFʦ vSG .چc?sk{]x |r/b%?$'GvWdStS¬PB7Ku$,IiಏةY "s0~>$78EE2U'z9@Ik{mS@]E\Vy횒˥l,FCi_b j4fTb~?D$i7R!EE,Do b/urqc"#}p1͝x0T;-HUzQ0]zIAjG] b/k5&P[vitD?E ȥ\=%sJ 9"B>2r६!n0+|IwL8$jX:EGDxh[G{⧨\&*UZ/RM(hW|yn5Ocnv; Ww xB*!oWgmp鎆`P@u2< r]@U^k W$Ix0~u| MJؒKw%+jaf ⮭#t9yFُ̓1@} !b+עJGx75;kwE}VNRe7ܕ-@U!`}V+w_H]M F˴&D]ͮ'nߺ,=/ƄO sUB`? hN콘 A. v~G?16/ (eQǀހ L7Q>/ej$itZ &?5~2K)|:{j$%BiSX5KiAF 1r&+"-A;l-{0FWb/Lm-9sƍ>|1oˆiYj\nՌqwlAZЬEv C󈲏> ZyR7rZ҇BX u~d]8 =$|{RUdt0o23+-)#3AD>ޱ [9Y5~gf18k"6/e1 e z[bM-DlJ%x> ㆄi8b Y8T7*T490ƠfRdY.Aأ0 }Oޫ]WȽKoÅ2EPy t=v$pyc݈pbݽc<y %8mkL5BUn*_pejwUi1 h]v m;ln5Q6Fh _vGB@mFS>hۑf[_8agiY/|[I6k}s-n\l;~"Zה9vA*íZKpq3bW3nsv uu0#}0Bc|:dz+j[bLJfGT_ݠNX0*)Im}$ď.9}Mk {a&İ`&9RuIzo(Z;+ɘS"(K}ʮԴhcn*ܫAĹU1iYX]zPF#rlL H-{3|g\ Fʨ4|aaVl/_l#o-h6Y˂`@ Q:̮)l|b%|DN۸5p d Z⾄Y*PT>ױl& v--.$zQ8C>o`U9)F$uA?wv%C/y'd+W>)^ʦ}'߁4t^#tg(nhV+w@_s3wcaakіg'IsďZ︒`> 0Mhիݾ[>~f_\y'‰> R+^7R^}>"9\q7)-]ZKc7xC||Ǥ;9C?jEi]-\>\6|?"PMSU8<1~gYFޛl GJq||Dߎ l8V8eWibbhّopOdT>* Akm(_AUP;sP h@)Yp ?5x`0 <$2Hl9J$ܢABn "R|+( HƌE:N[%$ GDtҧWiɱ": ˈè9U,G\jo"3]HC T_]*#AZ6LOHg2K3Y-zT2 9u9G^QN-Īf9vR5\ 4(v`{XEk݋FsJ1s@~1 #e%dA~/[a7}q_2VZ]~L7fkı>S?TZqaT~7c&  9F}/]>L7@,*E3橌:1Wz%"oHOL Zuć,| w Nyzم6`=4scROW+A+~-k* {2HpYTH il H;}*侈8v@^^'_2X5>QI2۞SfVsxD-l[1kABޯ'0I( >D߀ETkt_XLp'"RqY::vIqs5m \+b/ t%70wTMXyR*i`X0|ws 4٘)|y{W#S /c~%mO-(Gc68ỔpRsui--.a>So@otKHzSIqs3VF_UV7^V=OQ,k4mƆUbtӹQ(tw2刄Be4tѥ])1\"&%s6um_~-) zsG\db|\_t}Q_6.ᚐJO&{;%) \#R#ӆ&)JӀCz&z(-p83ѹV۫)S\YRuЉO8'}.)Vz IJYk׮!ӂd3s6B%*:5^jgM{;]NrϒYуo`GS24 Jӓ-_xr}s`~hK 'b'! b 7Nڳ<>?<-Ue<4C^U9NzY zv37{i7́p|2NpQȍ۵s kZ;urнf2Ǽc+bn3bB؄SR_%=ZCgK̊|tlϒ=BFIdC$ dG4?y'^l'z]uz#( bx 2ۯ =y5r5i\>UE/L69SU|Ć (kYGpCVMX jSӥDV=[GnwrT =cdӻPNtom"ů)1I$VntGK}Uڗ Hւu8p$^B}Yh tPzPNZfLj]J;PDA~݈VLb do^a}܆IxI{8)=DS>TA8Y[ROEz70?KuF:-8X.UΈuYal~Ιfh/FfvD>gp0ny uu&gP4' [K Q=Y ځfB.*6rysGm5gꔍ%nԈҹᤛyM$&>3 D-| ,2G!drЕ]]7˜b} T6"لƜЧښ.m/^vu(vq\!Q֊xQXz*?sE?Tx.^v߹3RV,+JXz"40}$.~( eS8|A'V\ iϷnZᚫ1K\.MSr({%Td&V/Hd"_Q}կ%LBrWvfS0To+>'7 4ci#$|hаf5jt #N)ȡKnk:-*7;6.MǤg,<;vE!;)ю\Az R̒ t(aa!Qʁ@pl|% O!@NNMT?$_n+4("ĽpPj E$p;m~4CSr6BO@bdvL##.q@CyL}r}HEk_i=~ |I"]%NxeyE︛*Tzt VRHP'6 U0n~ x&/΁:\{ĕ V_^!;+|`. Ĺ4^֣ysy&bt/*yεɭBV [MƉAx }GI]R,>R"WԱu]bTe)wJюFD3~-Iz=u[6?n>RtK券 TTլ'lbDF6MQn]b-"JN$'L5쌒P! 'Q sd/P2yܐd!%3W',ҋ陵j~s 5vg %UOnS(iyш]v!g i3'IPacQze6*{{]/Y/ؤ:)C2(gLKn#áC_Ϝ8R+ҧ[*lY|!&d 褓HR1CO/j20ߩ(idɾyEKߒxMHu78dAolV/V]5Q}죀:JnlTbU4lBMp\Y}]x%|yqJeӪK0"2 1TQ ;B9ngJ!ܹ=Kh,`JNjփWa/)eѓr <ևJTӟS&DO Ib}Xv+ڷ#%X~hi%Qj;JS/whȭ鶋->ND( r.ϳPCssi՛\YKlhWI?~(;[)~il;QP3*ů$)Z. ^EdwH>I/SDx e?!kyE÷[o6[[!i;T _휐rL߶珕bg9at@/c)7:VجYGS} "P?LUBpzvm+F=.Z*t&72p]o伴YK;m蚡84ޱ94CrT sNo/h;ƟбܰH0$/e>44 NK+f?z)^d}o>Q$vuj <<|lkr|B$ZFrfOD ܻ@o*jG[A̯zO?Ln$&?'1Et֏(:_p:?TDFU`, 合_H&1} ',:~5C3gV x3, gF2JߡH;Wh+ldUG/RggxZ): cU;^:1H %6ZM e3Z:Ӓta}ge[Npj؛3k X5k(2eEykRobߕ2?S|IP<qصW]o*[ck|U9Tۘ30cNeA} N>qOuly *6xc3((1MByMNYu?KOJB6 s \~V@s@fJ.`oVw B=x+ 9*uv Ok4R 2)oYt޻P\p-|[b}×ոӇ.[篸< C*id)!G %%$sBnDG#j'ǯU_hl`yt6k{=>#Wyn1 UPpT`+VjDц5'?o'~b3X췙Ӷd x3#E B3:ueil*\ԶRޒ5Ifo8Ca˛ꉌlO-I 9n+%J:ǫ[#"' @++J"*BhTGktZI"h4#rɸ~SvJ/e=)|gpo1>%L Q0\(|& mŜg \nIG䌔~O/%gO]x;M˯[9?BQm~,`"܀t/~JY%fE0۱ȑLU0? BJZ(ރ?ӗkG;|w -[=bw}̕[i%O}=!_ pCGJ' ( .r)֨F4-8a0i#jhTuh%c5Fw@Q0ZWCez(j:ޗD ^//7(a/tD9kCgξR'J9/
    GM(ItW?[Xi"yvk=y n|$IVPysg"޻T#0)2Wq2er{CBF3eU  ~JCP_q}*܄cV?{qQ&IE`z_pizֺ p \=L8Z*?b,~™z{MTiC7y2}Y6u wWy0閣P;"Ֆj8%{O)+vVx)Qᒖ._+:h(o&CF'p)Ԝ35U!UσRLwhDG,zρjd8;yb)w4kH+X\z#BeP";Pe/H8N+{7Z$-8b<*J^k!Z-KC,j[B"~M>\ذ \I:B{)ۦ`D޲|BJ\ 4/ ̎ІVu}/d3.=6+_IňCh8́ifI! ZrzI5Z](V};}Hێ*Y8Ȟ "q^JL1т2I*{b840U/;<}~_cNuD*K0)_ťR6@πT&37e x2rT\ѥ`^ۆL"ڿ>|aE^h`mNn& 8 FUvj23‚n\4BOE"{!Cf~\("7cpo;AC]n3tyG,.zV5ߍ^ګ0ܵtU#hB&0CfL,foi諦 joY|7u[Gɷ-F9!]lpqsS:ٽK8*hM( `LaO$78e,IZׁScv6Dcܴ=-[䝋̖- uhϜ\y'=;suu .V떫*0< % YXYQb'V%TuVگXL!?zPMPUbg $ϯ^$AcXG\`t )w`2W./ݟZEt+fUAY΅\2=N )1(315dM"._k(=") g.f8on0[ w3}/Lhvz=@g:`$,{V/GZTN¦; wpK9o{E&EY5&Hl5񯼝z>w|N 0mX|#Ǝ9!̚\ҫOޝ/~.z[lנ* %oZSp5 zq&pįʍG;:UӼ_v?ؙz ojQ*dm+vYm:L)y.GwJ3HE/.R 읩4 P~߀̩JC>`OMx6h{Rc,AĒ-ad5 `ExoӚ`ETj=_Nt:5 `*Iti9pxh#*Вv񲶪c ofpoL*-| :M2xI-WqxN+XLw[=&%ミ 2FɊ.NVPZOƯ7x~qhTqM{- ̲ItB7Pʥ H ĜBEl(Iuz9.hv\{=PCVm-lrƥS~b\XYX'9T֚C~i)葱 \UuO˸,rHF#;:aFRE/_X\B6U}KULpq&mb?b@-JfE|^SټK1B3qah>1O Y艤D nۀB\~أg@:y*ܛ E fH]>_x8=_I71LoJZ;voÐ^{KDD/іõ>Mb%l37at"E3{7t/9ݤ<Ȼg5u} f} [71΋d89D^m楅V'^UGH5 .V$/GtBPR:qn@5JK !!&_ϩ2%so0M"ε%R G!8{L;q0%k62*/,_ݦT,z!&\}R=*.IdEVp0@ 711^jBjp-h[ ebdM2.z~.uoP>³?S( M=)-Z=zce'Tlx ?, 2>&F ^hWsPB}1[>h.$]G2%hW_ jl gUu啌*c`&\',^[!R`OЭElgp>E# ;Ź!$c;Mt|؆dU~82'?dd#|y2FfcCzf>ֿ Q- sPS#!Nݘ4roc/Smf)jfz!J 4' =gsB˹OղQFҍv;]iM!;'g@".uP#c"=Uug) c]C˙ߟBjtB ;1BDP'5'G帲: M&rڄ,p10,ys![S|Rt{ޥ~VZA= fkxMDʄ~sւ Yl/B!EcQ82D%0[c\N(4M} J=?3BNq?f^GaSRh< ==+LO!r ?jVzw1B^ꓔO0š6{:=_B!ϡ=#آN68 ~u){xԹj\@ė,yR C.-';'7iR è]*8uCĭx:lA?Gp| D1/al}Բ.dԱCDzQ( lrVh8L\ś5{ʅa?x`#4hP]E| pp~zf /JC5Us9MS7ZNkʓ˴aC@5&ѠXh:GW)ǟ/b#.#kh@O #\U֌`sЧ #A(k1dS !@">"\v0(Q/G?-WR*5q$h0:ejMec-L?ǃ#7~ɧ@D碑ͭ =t3~<6Z!nSaj27Fx> exC[$ `? p,Y:Ay IuNA;߹os7Q9d7$dr~ca~-])ޏP%U'uX!o)D΢l)cH`*uXZ`7_˦n%Ck>]ekAAK[fu3 C,d Q̴|3]~1e@O'(d],*nv`|1MA,:RRC5*\qe`t2=A߿fODőj;_J҆{Ejt5Т_,$Nw*b5#UrѷwyL-lCHZm-Rw cЅ*̥DM.* {.(Zkgvg 6#=JmPWp*>)۵iPMӦd)l OEL6,}kt7NOitjw4h)3E8To(4TrlWV k0 X[at6>-ɿ4B i0xC2(̛4#4?cc#џ`2Cau2DėPlsÐH]&S8I1&Dбn&%I>`mD>hi,&RtS,"L=B+* pΏ,^TkJ(fNn>]42-*ͧN+: w'[1,VTGV-q0eW+D5*69 O_gR󊄠@>Do6 @ʴaHaUsEL J*'+?:=M I~T=m[!]&CYzOS,*J\@:Z@>!Aىf?޸T]JFXt@&y[K&Ρ᨜؉R#&O|!p*yjHZ { m)9͔J{RkU ^k0\=S@Xs5p I ͓o7ߗ͔D1q,@$匇*ЬXwꜽ k{޻Q!ks"8NvՁ(GG}G>浙jZ0U(U|2)M\o lƛ6=&n-&AGå)2~b7Ȑ*؏ɤ_ aV[, q endstream endobj 268 0 obj << /Length1 1410 /Length2 6285 /Length3 0 /Length 7240 /Filter /FlateDecode >> stream xڍtTk/]%)=Hw " !HHt H(ߨ;kݻf<ٿ1@0(/( P"`c3#!?Z6#A%]DtH Pw$P\RP $((# . Pt0(As쑨*\8p, 'TEkKf !==,) oqH{>l-@ ?j-5@Bm@p6@M q j@~? lim srzv[0QGz yP_ of XZ~7n PXa ;#0B_iPQ99Hp5=~ sz9ۂ6 ظ: <]\AjyTفQAAAq yX Jn mF sآ | 7 @]Ao؀+J(5<0Dd hkkiI^ qY7Z]K_ 'uwp a(5&eQv@~[9bW$j#`П%ـ]۪Dm%`.im@tag/j׬QO 5&j]R j sBbK8ғ5x$ ~( lap_ @1Q@ V+߼@5{A 54ZCJ9zwa ')\|޳ b$K_֔8e瘮56&5]\Ym4|yMPv(M-n.ř{GMw`fƝqQlo2hXp|x$'#L<B1S^ eBvZVZcFc1vowgS-C+N-N m3OsvINZLJȨFB̃/Kj?: [x5EסXMJ BLj3nr@frm}/ܣ]M=BZR3_JRf!Rn5SEq fq|t0uߕ WWup+x`_LmGp.EJ9}+jF K vt9<hΤD^e"s.kyAQΒt kq%H "{Bx)A<6fAL],默ؤq:B8(>35-?f| 7_{;e=(jeX rÒi8Ҥ;]qRHb#}QrFs,0aTArg4Ph5+dhC.ਐxNKXER__3$͌ )s lbL O-߲Wӈ/:%}]WЄAД(&rVݓEhwqe-,4 ⹤|;Ɯd0kw_rӆ5Q\;gy*ePqv ֤=7o}l]' ǯWҶ4@XLra6H5jQ k/>=U0Df ?kIh[-N1-kY]%qK(g#J_76M&~ۼZ7o*e>!H/x|5qCB2i4&MRͯFI9y}f:T2 2Q.;JUOQ.rJN[wc 7tvV 6OeJ':`Myc 9ZH})Q!J 4{DТ,/ % =M V(XDӁ/DhuU,3Y[¿vPmv\bV6sRk9HSreĂ. ̅lTѮw 歳xNbnd z^Գ9}F?Z >L4:c͹<a.-tdՓ=|SµdǮu,`rwwpWeto{iwL,VE1~l X}͢ѥx~۝?-7|KrW"=Ha!.̘qWq@u#(Z\w-ޛ+,v͊Yif#Q;ptKF|YHet @#>}ڀY4x1RM/;r"HU`QSE^9]a j4ݴ$;ӈ$H2T(`{D]Z%4X^EђA6.Wqv-ꙥT.GYo^9{V),jZ~x#x+J3.h[(n쀳} dQrp7HSIEhz>YWĒt{\p2i"Skֻ&}&:g'](f0JMyZu``>7B1*t +@dLݔũnc> nL0+,\ht=OElYLA$qnvf2hv*2!-ٝ%\AQR>n!Z4gY'YxJyĚ-밮1,hviQǠ?*CF"뒬3-YwzG-,7E^ڜYÝ%8pJ^?RHr+-gQZ!/O\ZO2&j`.6+yOHjkP{xdKփCyw'4҉FyKt> OV_%4v߻G?{Mw:nOG(}+e8[:,|σ \4nыYDޥ޶E޸(S>C:#-EMvn{{Hr&4Jq_n.MM=#֛ORj/~^=Q&A:Waic I`|&IJaؽ1ȅCo:f\~m"v.T'COq6!p(mXY) JM@Hp:o5o= xnmLT^y3 %;f4*]q^y(;%_|q2ya 2OWA~햁i'q46]F{С{7KXU Z<]Y=9TMa=rT$7C0hga=#'M"0aѰv̳ ZWG1]QP|j9W- ׯ"~*ӯCMV^[=#鿵cADޅ.c ;+tcr8Z>2rFCQ68b_L'@~Xqһe*tTIgq+G?x<"ku:is-" >=-$=jCfZ>ބ0fN,0Ccum>~HZzU2L(ΣolPw 5fzU[EYFP$:RѰRM9> xҒ,r0H\ G_mib秄?{(w<9NxQDx~VM0wXw59R3$_ݴYiFU*ثg!VL%Yy׏ŷ?Fo . .IۨVoߘ%V>3X@]YH;TiڠIf_-g97/ >%y +զ2$+g+%M./ua0/k B囮TJub[f|M6?'ˀ8~jU >Fw*P͢D4ҫҺ٫{u[ 9uZu~ 'F#tw]WX19(H40<OS "(HKd$3w;)^M y_=,l{lǚU͕&YX]BoW õ&ձE)loԺ=Go5c2뭢u]wWcko6}9${;D6!iX6D˂=pY  T݊E& endstream endobj 270 0 obj << /Length1 1841 /Length2 12396 /Length3 0 /Length 13548 /Filter /FlateDecode >> stream xڍPҀ;w ]A[KNp--}-{UCC"ffosaag $9@ '+ȁBCbF **]mvv^ I rXv`g {O'k|Л2ytق ;ldP7]<';+֙BqNn`3-A[cE|8P7wq9) xPS82VˀYo?At:>N4̎JN9jw' ҇i[˥А4#t#ԃ^"I Nc,}U{Pwuf5Vv%Xϖ(ZD? MRʱm,w6㺯WN]=GDE#(]dyuOZ!ܮaT9RթZoD_P Q:`x2f\[FM]!&h}rL!, 'ΑS(ك,*3gidI$I5BYI\> Qpirr Õp0'mO^SXKT"g5 9^8S"u hL2 ݲt@5Sz9J&䲶qWӮ]i\ZXd;IнHjD*NίJ3gpѭf$!Ǽv=*_ǮY;۸E9ه_R/<m0KVҼD]ɑX0'Gl݅_Ybep1""oGsi7J"6Q @3[*i"8By  yNƊrunFrKkr M읟2 >$&*vhgj8fhCT,gďeL=ꅨUl:RjrpcXm <{Ɣ!IN`T 5$ck4P߻>?$AYUPMݻ#9R "mg";VNѮ 0O`Mx1s"%%a`,^J8;_N{ i)˰"M#|tc~{tž|"JUJVt"\Ut&sDy.Sny oYWVvgŚRώyJvo6ɞ1|%a#p…OYoYXpImuQ[tvGb'|)Bh+.(u, @Fn?Z VO¤>Ym >(FdiAу [4c;ʿtw"ݜmR:9-~cH#qv3{ySka*{3V$Z3W]&N@']O E+.GTeD+ЊA@`G UpB[GB7;917!h_0vN'3XkatPKп4yn hHa+ClrpݼDG旣3Oo8w'}'ٻ򾜴17}IW"-SQl"ӡ׎.PNR]Y9)۾_о1Cn&mxBi㻶3xqu$N+C~Pf&|㱈"Z:'6-ƿv1KK6IRmp')l}?/.V(Eұ[(WArօ5xۉW;)qo,~6SiPzI0Gn12RiL/2:*8R>jcQ\S͏9[=bW]6ԃc8ܞQjಔ:7=}w;3cmqFG  5T)qAe?Ѝ;F8=CD+=h׶1.<&0:udq/ƍn`MFr_Ѩ#"KDQ{#BXB(A-djYx&SFxRk@NH򷸈x MhXH1I㚝 mEjq7r}i^veuF VwV><Ѷfrs^+&b#@Nظ"eu%c5C|6ɱ+#;Tf@Z4Iow55P8kxn .B[ñ4%? PߋRA3nCV V*]ymeGrtSޯAK>e Iq""+~V-5x ,EQјV#lIh.l?S`}͢YX> ͮܟES \+ Qse̝DT|!n*P rnϐ'͞x$!i3(3d#庴$>G8oXvP_@I?/Fw;*2z#ģ pN%u-mIl%eGGjZowEr&(4J|?o#` ۡe`BPh%T}f3fTTtWw(^,gS(fzJzpG:4]Ԍ`"t%R-ۮz"2ӈ앐)# uJ_n)E4o45~Fx;"ΖE4ԁhwŇAAU|'+[#-׌/n@?U`ōX/Q4 $'ӟi)}VvN" %˫Ж)hn!H"W-9'B: #s5K#s\6 m1qHa7xIKa0 OV]|HUT> Â܏Ӗ=o;S6\6 b~Sf7U/]Ă"lBWV9$L~ v۞k̒3ū]8͹5Ҟ[<7$pYOC; V U(-o91kcN ٷhe7EHL|>V2g]\7X2|(6en6HWd*EcRC`MOZ']_|ggXLt7Znr:=vtsNQ̇7?+ ) 4ۄ=#޼BOu=:w$yu|kY@M FtUP0,ЌHPs%=4&'pD޽9Emf>mXCo!xw .1t&{[V4v~ GљBHZvmYoZw,6yǎ. ޵y$><(&ɥ6Ku%gxz=sZjVxTs׬̭ND6}{xIP2}fOW߇M,G' HuEjWWy,ެyd#5 h+=~a=*RKү@3ACiuF1=6&q (ⵇZ3~e~*KʚI\)[ܩpWa*Y4Պ{\.@֢GY$P!G{!ɨ^K$T͹@dz  dE|x}U_ ظ+堰gۣUBGc:sψ|H:)~EӱMoFCT#4#~YKs"At$FM )$Q8g2}~nk Ybn$^2y f> %U0bbo{oo- vmw^/g\Ҥ&!Hv x28["kPCX+ŎHBq6B ƻ;h/`&Z$5;}DAѧF+zDg_)~}fi,  ~sԝSg<nL1=?E1a3[?[ j17 pgjLb0N9M\3S-rE{ϰ_Ċnd~J?8McFɅrZU ghs(S/'zr-A !Nn3$GBIJ9V|="1|TR១,\ýR)A*3D{`<8T̄T3*`P-3ք.w}'tg.Ow$~2PK6?tP$9Uf?ؓcNk6S$(mRw\S'ʘwnH8vIQ5оR}6OCEWQr-֩r`hl}RVPғ*7ˉL:Aۨ$A; \P>Tƶ۩Q>`kZ498#%KAzt[%8c|ZO{%wpa}RM>WCGQִ50ޝ]I,_5X17_2$rLT1(fn%. X%89ZG~l-%]\i4nJ 칲Ǻw({ۢo.#Q^ WP:Jsihjg+ >_lrE vIr/dGI8WxB+*-a6<=6bܻhM߭^>-4lV%&sKMe{hsjvbzf.G:'wAMW$FP|?L*2_?`cAȎZJM{9m]-h,8U{cŅ*-TGfB۵AvXc8KǾѥM?'5=j²kE4fAd8(ݪG)UIT.@$ yoܡm*a !4ÝGsa=7q*bjgbFg4ZjR l& q zg ۍ=fhށq #LړdѶXwQ/},=n͆/PF\06[[=z:h +R㦽*;zVwV#Ruj P)W +v_M]6UVY]@Ip`oдi u;{^5?7ӧZlY:Qzq4"ݐ##a^B;Հkc}h8@~ FV6΢.y#pD Cd^LN–ɘll~vqe|GsL^OUNpt=769q($>-+i p+g;$YxᏫ.p֝Q #~o7x-}]q ZG0VZf5Dd熓IV`GY,iVOwK FzxTbkա.ԑ2 wY#2#/ eDgRW(?aSX[Q3l }ɨ8^|KR7"@ ~(XpU+U`oÇA#xqE `Y(NDO+P?_&vcrG5 +"#fӳo5{3‹b, 1r7T~,piICS*| J5)F~;_z7iiPNYPtO9Q;F:8W65`5rzβu#m,s\4gܸ${%P9w);G!LD#(1As+'CbHEZ\t@l_f.zlh?b|t.qj헾AN- ⧥F_tj~b#A,'9 ZNI* U”3)b[rRb YBYJqV946ԟDyH#Q>N.bS>ACwC%m qB?;<=hcz@T xqRk0Du{0VD=v{t8)?Uӱ8wYɣ>ۜ?WW9izNOqSӂNl(MZfmO묥+4*(+.B֥f VyE MWҴlDsLQOYryk`| 7YgNRn?w𲛰yTS:JZ81z&іfd3 rg8f,)"GmYŔRQv; ; K7aBHi{Km'rAAŋɴ5gGɠ#vLiDYsCn"(*h¯1#tYz`YYq0 !ogKPN> )qxt/gҟI\WJmoWqxݜnM,7[YnW(.Tpgym&lTi*ݸH%%>w;%wnCz̚1=lDzݶ"LJsW9ʊ\G] lP=w7hDSMȧ~_\ ; qLީ&彅 豖^E vC4Q- +*3v,y'N}ԫkPd{<U3*s$& %BW64 A0⣘;_Q>h=aj2š\`׭ҥVSHjKPT]z8CPd^ x1aƸ /lĒnQ'g6ހ = -0`n6K@h)&D _a60L\/1h #0F˿>@BI\z)Qwy3Dn#\W`H÷G02_Yns&{YVwZvxjSFn,/%x|dcnZ^Odsֶ28Ys Բ} SMuT@soGfޟ^*\amys_4= ]*M;T#k$fDKwiԲU/Ɋd)*XO뿥'UfVM"C!ܓa9ђ/b/h ȴB ]XPeh4cV_].RR<Q$H^։5$|9 DDZ;e5?I2`*bfؑ`?`5袤7/, Б6Y>{Slp[ Xg4^HJ; XEOP왌vl\3'q@~"m"d9ʲY]\,'@4a$'@"^e:"K'YgսScP[Rr'ҼES&hs>?-=pί;'QtVF whXOVPTJ& nNm;u|en0ej`Dk8Cw xCYޱ * 1Kt3 7 ߩuiSrfd͎_8a{Ѫ~q֕X cmFQк&8C9|g2$ݡu-Jy"sP5_GmDNrD|aPd$X,w] 6ĮYO7&|>^|Rc#α!TS !=!eWN+_>K8YZqXFwFF-v{x|P qwٛ q (`[ *zmmmЮ[K; KXϟ5kjQ=B` =5 dQ,}܋7ӀrljQT*p+jsh=5Õq[&*;Iedf?K$O*2o3Ԏ25_ܱ - U3M%iM KrBeEϼ9ip"lCҽW/L >՟;is֞1D4Q7K`hCLD@` C=o !8 w2 R̀!T)];Vٮҭ9Lpgu;N2G}eS柳ҳ1suRT-ptڳG+>]!oM?P~}^mьgI,yoN׵o\78J6Qj SKsϜY-&s|qLs̖OҜ^y5΂^,4.>@~8sU &6}r%qM7PlYyL-8^7nF/ 0z 3]?c/II=zRmYҖ\RIs"Ymmei.yLv@T%+slwf=6ѲqP3U ibb8Wl.qBPܻA&ohc=b>!uq (7ulz%31]/;rPQ&C2{/cs:|)86MfD<2?sgϦ.ũ%F J@^성BMFqXxI6m;# ׍>@q m aj]-3ȣNZ\Gk~ƮY-ݞDYlW684*^W$SxQ;+5owϛVHg}y6AGL#!Mcs%Wmdy[Fxwyz<~ QAy  nQt3M i*8&i:}lӥP7!}%'GBHLdk;a}+A6IҼod~"Z=Ekʾ/b|u6mrd9E)єG;$*`?S9ge53c5­zw -d$MYn`VRQ[iUN3yĘTE '1F~>V\g_*IіK5~_Z yx'rA mp `Xenl}>ŋ QL k]Y0RmP9hED@o'^PPjf~.8ca'G3 ϙ!*8\A*^iᨢ6JrIES4}I.ZL'(lxᩔyϦ/V M>-6S}Qu$F`]S7-jڬVfCoom¾,*^D1#}l$LWw fZ.d3xx"L5ifqsb~9|g03/gW*7ÊA\x.#iCYs* uuwPl{{Ga + mBN7H; wu+`q=vgN6V'`$"G{O)3ÉňOO,H+e'1AcvխIVra* "kM<Be>o/[SwsY>%*)X+ LbB_AZڳOd M4h5K08Wl]*Jk(}Y\ݤH_{.liUrӷ`ҋW\g9ŇPfs/؎ (O`r;4쾽P^G>4g}>oJEL,0T/Q<1 g(ڈk풩}vKWI6oGZ k 3|_®+q ^3Q"tn^IruA'*cݪ\kԅYK⾟/86]~s[cA9x!",-I6zBÕU.OAuW| I*sMk!]O[ו9?&F1JHm۫~K8X*|2lcg:+qTc`0(zPS{:IѶXO)v 7j j?32!X#eG(՞[QKLFITa0 4q *>O޿:[*PbhPhɒvd>77p?K(IৱFoX$T-)Wz+fX`P~r~f+o*IVOש fBwCvoV?0 3(dyb~T %=a'`~'&dȟ*(qPޠgkTp3T(:Fjtb1ΦE$ɍli^,4A7+-qyJuqU YWGV~Y2? ȅ"۾PMs*^u(۞>Ciw߇7ǞSo؛vj|P)v,?2{idW}Y[3Žl/z3X'pcs6Ft3X[#d%J[-vH=z{l ;cpTh.ǹݙj endstream endobj 272 0 obj << /Length1 2565 /Length2 16679 /Length3 0 /Length 18168 /Filter /FlateDecode >> stream xڌuXkJ7HKCtw7H ҍ (%!-]g߷ǹaܫzwUԙEMAR`f ?@\Q]AC`c`accGְہ~Pk\\L BUttȹ 7? _ ?@stP;:yX[Z!@gF0X8MV {G3;5?&ZN,&,.BLk@ rqJdb79j?G`"69BA.@ Y?Y_V613sw2qvXXہR ,`O0/#DB;x*2t5svZ%_f t0w9]QOd-upp--J͉U $+D[f x!9@fV9r}K `IgmCq5q.n ??sk30di:D CB B7F++(K2bbfv63;KX'? :X8Rf׃#dA[`fޅUV/+?$fg7?`!KYKۊ sk7{* 6,%dX8[JY{UfV`gRqt0۔ hf d\!MY*`h&sqL\\LP BVXY$C? _%X#^o`X~#o)qX~#A_ X~#߈AiFڿăoA_a@M\ͬ!ݰ3fA,bbbYsG Gl _QDh/6s %I25BHvv&.0 QN/ٹH-~{ga[cG?-B(-B-z<@"7>V^NV ?? #l^>7܏]qAl9@w M, rw:b- c'CZ  X U":ٹ䵃w :9A Qf $B ?B5:~ YV.?Ć? jlD1;7s@j~KwA~.~k VmKa/BT:٩9*rB-\\%2ƕ2E5~=㫡H P>&02b9@|$Wj&kk/D,gjD9@#a˭%W)Xqe~Xzͫ6f iqXe&SJR k{ Fꨃ;K3Vj_R/"D@R|zCvxMzSԜYIMyip\[h&& ~LW f(w ;'űk*gtcU,Ʉn,[IqVh9^a}TϚ}|3vۛOQ,~AouFkNG\/Kl;g4jX^25̠Z05b,#|f)ɗ{7^f\KY)J,/y娨Yh'Des>점O[0&ߒl9 =t;GS8dKjs&p5\B}zsO5Dz߇l^</ Jb1OpI0sP㑒xݤ}lA'ib֕(,U xF¿b=d$yb.rkN{vX;9ipN_ZݛLE%Y4|69UlݫGWWzg(_0AQCe Cء$fx5^i3Amw&\x^#M-JG7I4*q5Y. / ^{ NKqs Xފʦ8Ƒ!K l`F&YVʙSa?i t߬;rC| 9y^'ʽ_7;Dz-#׌:( oI6UH|Ɨ]hGY4j+(.3UZq<91 nqB)2L4$( #[S2M%ܵI:Wm15U2j~_rU7Q0{s91Y)vB9`0SJ*lGbᨡ ^AXu"xe: PgLT/&4i~Ϊ9z N#մj,KR*箝^5׳9#\Y!0 nGX>tdEef2oKXrOȢs\Zޔ#-P3C4O,5 :4v6<be}#}Aф/ mW'K5 *k2jw'cPC1d8KZa{=%M_[32p5-)hOkJ\&NLC&G_pUiM*XcIGGFdNe},`8+M+s:f`\XDKbvmD 6ݢC(IAIL1Ψ n+ TAdF#U'MVa$A|%Ďxp vuO|{fzߔLDs̛L_KXDZ2 hNytN\!f>&+ ;-:Jǘ%OGW "UyݘIP{m~4lFMM "#mr_x ,(FvsiKv5zqe#,oҳ+6*&1;@zC'5/|oZvcO|fS ,T0gpL.khd(FL;^O &G_avՃe?3[Q׺/ T6B ߰F ^leGgv&S)wTRJ3ΡCD?a5Z 槟}cj];VUp6V$,r3Gonkx f&W-Hjb<5 |8`r2Cn<}JgYR9aMN9*%KT']%مi+6"%B qIyڤÞCgy*=m13}b֬+ `+Ld jrgA]b̛1=IqE1b)<'+QY2|Bvgr2* EWY vTz}sL*0x`i >&j몚+ qu?F ESHHgV}r2LqH1Onb yuȡb|Tr{oJX$֐䚄]Ƥ\Iw2tj[ȑ'CRI~6*PBI!WC_/Hq@Ŧ-3x죃ܷhP3LÎppŸP2(%meD~kn^31 zi<%]ۣҎAR#FXP9QfVv^ii{L;TmWuxtӢ`D(=w󸸙|5yǍ:mM s!x%))0c'v_|w c-5wo#$@]74㋺ky [1Xdy2A_|'\::\騝Iܓ%w9:0 e_0 ;E=Z%q9t: tX:Rw"|xryр\{65r o%!;ÂI3ncO}nHg27Q E4_V)u}( 6@NZy+c1.y<#ͫBI K+*fS8tXk0ݴZ 鋾7U>=Ziaj  +nZj_*B,v8@oGK0-OdY{Ў؜q+!鉵h "616\4)Ѳ2AKB5eT):fskvSl"pvۄhI!Bm-G7-(\cT lX >wE|bn靤;t$ CXS e"ltDz?\HxnTŅ+_2 oR #Gj0iL|(kؽ27҅1XXE>%G}{a㨾-1Y ^) cTqn-[!hcU#m@|j"-Ҭn܇?CǴeUe͌iʚ CdSM3Gm66V6~u aovGu]LVthLq֙Ғsm =;y@ mLNaUH;}InAldx- 7npqL?3+.1<#b@*>;զrHjÁL߷E:3 -#HSLZ~H\ll'Us>L2<#s~Cz5[ K#mD kw"HuKpFHYpli,5s+]dFq7C賘I]JyL(5 ۴)h?kDk #*_}msx$Eby"e%{Yx C>ieŅ?f5l$,\?ˣ*(-?t4Y9%`^u K=iWr F- ^5Ad>2ǽZ‚%$|p?MbL`qAI9*,Uӷ~ Fz=3йgN>uyεL1d,iyni yJrEѓN.'i<5?Aܬbݞuhaw){kty :nDo ǵ.bk)m P<ް/0 LOyle4Q/*6Bn7F$\ IU<ԫ&umos:4vg856y.Z1HR\ݡ@W̧>)5߼ڸ+ߖ'i=|{4ț_FlIժ&N :#2L}ŝ'»Km߼ѷ>tӊ?rK Ec+wO vZ|bXTWwk|esS \9MQ?l9'Wa9 /O+uza|Hj4[*Ʃ-9.'2dx@ٛoZݯ[(;LP'K|ZaXQt"ddR؊䭚XNz׀Tgr^3f1КA]7ؒ\E2m50pEQt3LfA%zxI_MH=MbݍZ;z۴FȧBnRasmtRlw|L`\ojPH#`! 6-_kfoc" MB[mI}jdiL5+lyw;;\2_^3l;g6+ DP$;ɋf3[~dezM.%VG3K&^[P &mC"w]O{k?R-<{9i<H߭✋( uAږ.x,2KYO;[4y f yRuE> 7klt \n<>Ӌs2>lF+7HwG0uvΗ4ȆkS}=[IA?yFV2uURG"^LɸfG4Ҩ,`Sku4 2> K|GN_eI7k*UeiLtlv?ӷw?3Ԗ;VWi_Kٵa/ZdL|-geݫH䗍tPm.|}ud_Iéf5T ONUj5%@M,Xcmn'yk "ƙ(E.1Ϩu&NPS(ޯ,'.M;xޚ9E0a\ˤ3W@l>us?R'h^UY& |<l*qK<,M&t15g"KLn#S-b)q.Ļ_\X$lɨBVXSNbօ:^fot7C+W'~۳0U%,}zmvdR`?<FD>SLLI"0&z>{2zRN%5;W7L3gAF ~CDM_lN?RV )t ޲Q*{}F$?8[8׵"+OY?/+9ڤ'#P-4VfejS* l`P(2f};v6 XpCYR-R5#@{zO3VGJ~AJ萃 iEP%08J6 [ޙMީ&n7v}J WAf[L&0mErnR3,h:xLљ4wBŒp jso*p]"V/R.)-Ý6ڶ#JCOAHZ2yX6 Vw]/R5ghUi /(}(E7m+ip]2^j֎Tb? R^5Dįݰ=I=wӯhER{3Vc87X.4/LÃҢfjBl;_bx>lyN>I8˯Ͼu_-fJw({K:=U,86P=kMJp>|%_׆NJ8] TnlNbAsR4,B~)._?GQ3 ٷV ģB64ͤp{W'Icj} ah\~47R#V@k!Tkz4F3UK64D X:zk1Խ @&4[ntz8kz4e6k<Ӑ8Cޕ> |]sնXbhIFH$]XԢM=w;g>Ʀp3qD,D̡+Β죳ZʠV+O+()#U:ٵSۦk3=BBi+e7Z2 ;vck0R,G KKUp<7hg01?]HQ콅 vZv"/ҩvECJyDPVc "@>eL&CSkёo j`/i\7P~CHkmO -D*솜rZ |PvZ?(hNmm My(|3XdVT;+A Q {raۚTCnWeMO}yO'VP?qJ'=: T^>~- %_z]=rgQ0y0TbYMޕ`  hm&j0cW)A۷]ppam}m ?;1tG@&(m X ti &mp9leceC!x*ˑѝāM0C㗟;y4Ӯϝ?̔GB02JD\̖p=i K5$9Yq]5v:SH(%y$`tPsG`}93jw(ö/MiĶZݶ3|O%잵o`م$]7g.*"&&3F$lNfPƣfdgGB3YNi^{=)ץya2z!n%Cay/I yIP%Oؙ OLW,۝~gu@`+W>0,_LVϿciFsΆF w3&qZ;2R~zAJD`\k𻻫+B *7T]eK"Id\۾OoPq=k$Һ|t*:ǒF9{*;n8)s8`2V֌գhPe0Gouͯl;\NrYY! *߾owk6Yl__&2?s`fwVmBjhFexPK8?l"0lwAUIFWWdi \s6Vҷ9!ˁIȀ %a8<(Eh|)'u[RLCd] ZOi\PW{ p4Է;(Fb>R '3֮q|xI<)R6\8vL'5ֹ}3;-n4fFfu%ׇj<+SZ`PU0#D~zDq; FD Mid o63ѰQK9hJ}kN-}+&>+ ȑy~Sv$'kmo){J JBdN?-}Fݡ:NsSFfMe"E/q(N^2P 8n$s.rJ-Ie2^h)]wjTSp[4B moμuk $w畳p^;(B^+1K*OƔR]Po`$R=:O=K7y0,ߞ,WJ8nSvYIcI.]r)n!%Ly:'_%V% C16}wD& ChI=wW3# Ȇ}r'%ʼXµ<=m8yqUl Z膑%VΝ0jd1◲#ӬٲyN_\h46\W=vOX#֥ҡ?pcb]ÔvT)k0VyQGDxu_-Ro9:?GKQrA=診N kF?y%~i{k(.L  _ZlpahDHV=Jk+X$ {~l &Bm>i, L%CY_hׅo;AA|>d~!7nYbrѯ29=;K1*kzCG?)zҹ;fHAH(] @"L"/=Зfl>X2FQMɣ,K=Xh?!.&?AվNSaj;lU.(´̣iYz41@~GF)* #;/ ĚѬN~ B3OyXZ-_yB6HqT3VDd;VM{MoPa"Zw;cX`pܙHw0x{b^U'S_1=G,795Zqqጎȕ(}Oζi7z1'm`/7pXt- <󹀊+8~ۀBQR{lC r pL]j'ZXKbu|*>S-4zmSv ~;^o%HJxؚ,:3B-mGۏkjw*hOEײm,aN 1J{O6zs$jG1~ަl?w*2%G~yZ 0Hn0`pw[du1g:P-6Z yIĝ"n<Z~9?4J#y9G'i,3S@(a ȥv!PEY:\H5bg;˟le'Icnf͠j*]gd:]JUuSw~ә\* w]Txkڷ*IlcpO5jzQ&"b0¾莨^@ZWN:^=B78Hhs@$wSI3.dEA/uiI!Uڨֳį>5gaV*m^C^US^o jU-}YzR`hvU]U{WF dӦ2͟-+ZIbGiDqms~ _%cǖ Bol}piq/5unZtL<˚ժ_*hH$o?OBNYkťC2OH} &͉\ot 3<6 O&ːؽhUH"{ݐriw #?mXՃlB{ _hZnѱ${F/ϲ* )GȉX݊ %䟣pj9eg9Ed4p1v6%{8?PNDՙ@8hoinNw i :(.竮!! R8ZzuZ}=#}ʵ]` 3Y2I\T8 8bR錭4Aۙdػ?TqI 6ʹL*oqo'?ĝ/Mz~YavwRL۠@{bUFx Kڻ].l+r=)DžV1~M4] fR`pO-QFO}WU)"V&-G4XqlMGsz]U7=&I=|V Ѳkcv'_gl 5y6kY/-cLQ韨Z֤VڗlSNUliQ5|ĐCf~DzDf8+tlN[fQwZ$W>I8Lzqҥ#TT{Ȣz)x 5o. |O˹<&v\fP u:7Z3Íj?'f!fͬջ̓YAPU倻Pq cLhUD @խԪ򾑱Pum 8}}oq%JGizP^4 v)eF'ΨTʮ :9a2cs/G|q4]4YÜo[S[^5MH ,GlP?pҁ3iO%^ jn'[Msj60J,QZtD՗-s: .Yи)#3 Թvc('ar4qzU~IpN!U]rfLmE\29u.ApE|-t ߳ܺQDyN([dQ$ݪ`{()?|x.Ker51[&l )Xpgνo5Wϟ3dxju|v.D6l݄x^qNϛ f7qaa : 7|Q>86X3ߌf0~f華p=/a: f)i h>l+rPTW@aW`[͖&^sfHWM>5WI̸2Ozeߘʴ>Ūbp|tj&Q%Xr0o)(Dž"]HEiP~ꑯ 3hJکN2lJn܋XC \&cwf։ pa5ҀVwa ?Х!eM8 t-"`=VVR` 2yJ$td6Gs-PJ(vJ t(PҥDH0Q?"Wn`ATCC `/JF`o >Ӡ 2R<ߟMpH^$KҁL./!mKqNF-$YP&o4mM}b endstream endobj 274 0 obj << /Length1 1507 /Length2 6814 /Length3 0 /Length 7828 /Filter /FlateDecode >> stream xڍx8m۾U{5jS+vQ4"Ħ*(jjժU{+~i>>w8}^>+-D` %J:fB@(" pp0p8 !ᡄ1XL: M78@H $&)$. @(I2f h"P4  w`$$(1PglE0DB`P?RpK;`0.`ge/aP4 ;CP 9 v0 p@cCP[` s"rˁpBBJ'W"w0A:^0=T0~a G#`w0 ::cᇆ`.QW1 lPMk0=w/?uB =>`[_4l\0W7,Do%DPW 7tai@`vP`PnP?4sE"$A0= AXj`Oד%VaH[,k򿌊HO=a = 1 @HHH .. g 0# &GƆ HP wO9?v3 g7 v6t A)ցܜ۪cgDa=0*j a if`ka(wQ@ٰq-hl~g]ikE` EUv% Ϊ-$r!Q$+ڀQ?0@!P8 pnbAg o7,\ Žoa }@P"&Rr[dYw(s6QڸcA3acSÞ:2SԳ18*ݫrtCYl ##W)[[p%N]wlwՆ08 (YS1vp/cQP,R݌4Gpb[zZĤ/,~.rU!VFCOɚ5KOYT=S*Ncw\{,}"9Wĭ^W)ޓ:jLV1ZWA 9*lqS*D]7Yms?u&Efڸ뢉X}}Yze AWb 8ˀKd  HOqm.Wݰ҇w [;tq[wmk}2UTiM#ۭybb' AmjR3l&"9FTF8$C&(i_,|) dnn,e ίVq6CAab+6sDž\qMECl4EOe=e Bu9<2} syO SݮV Oog46jl!ҺX&Hcvi1sЮ+Ź@Z%j P rN |e/AS:5Ǜ;Ou1-4U1 jzCT|w|'K^dgԕQ9H0RIXUY`Cʡpbz-qzھm7zf$7S;*I{i9VSwT|Mk E5樠|ď/Nta (ȟ&arDٍٻSwc.F[},q[+ *aոf_ ~Xc&LR{`x i&n]E,ZKn;y_H7IP7U(,_fh8L6Y|ν)k7A:TRf,Hjai#үu  g3H'zodR:Q|fcPиYTy̦j{;qCE=DZD4| Cf-9{#9gX9rwԃA\1'{k uNw]xBɧó~jy V"ɑF ^z=3y ]6 '#HYܲ mMZ'uY<_\ f^CHhuߓ&R^1rfTc (lp;w55{:#WT=EdqrJxpyҌ=LuFN-ODW71'qy,Tj!1%L 1̄]CfAJ5[ljb~dDYB9 F'nTr5L-EŃMiQ{2|J=pJ ;2mTseʞK]᷆23 kIx[հUQ'zX'9[ --+hp~B]G(l <#DNM}۷=_QZϗ] Of6_&h^7PZ|yߝFPd{.݃xt0:tiO8tg#T9戴K#}o'x^@rI.B ^GgF}n~IT*ez۞u4 g1={CCZ \2yhȃ"^ wTjD>9}™&`+x\lZϰ;+%08i|5g\=3[!\(\bFVk;;bS-ۚog1v`4^ O܍H|WCPK*oiїTބ0Bq#jN"q䗶 ޖtIޡEmf;ܡgt] G)>ff`uя ]Zہ:qL긼gO?\G쟍ܨ4jIJ^"98޲R]YJ_7w.IKU$dn8jw~9+3:{STEN8*d[[O%awQu,R 2IpRQ|_`KPq1\n`c:0з^Bצ]5Ñ5U+)?E WYLNJ6݌s!yj)(|APaM!*ro?^}bZƮBQ)r뛑;KoEō pʰ;[t%*"~'Җڪn{f i1T_tk~Mu(- RY$sÎֵ;%" 4q>M&4wrj8?Zx%s2_~~'۸ŋnMH{]d꺑Z zp15"o(4,yn\P~i2ezFH;Yku ǡX}Y+4ܝeal _|7T%r\Dv*{4^X2ؾQIz8KF%Ng{3xF>:Ө, 0>c})걛rXfb$ gջWS6 >v>9>тNF(ꆤ\'&i&XoC(lTO\6S~nq+ 773): L=F:ΡE(eI22a&IWF?ݏ"Ўrƍ1A;-HOs]WϒVբZ] !s(h.6z;Ǚq9u,9ްm~y`xd$h-ģz4RŪ(9:f>N[ʅMGdZ I 74u]c~BT" [J)ZWJx/iJ ?2}{p3PՆ N'l!k*CauR)Iݿs\Xad"<F=7fp|TJuqtՏfeMȖ- F^ 7JZ,zDvv&iOvTnXQ(]]p`NJmݨapvY5 oIv|PٜӤs[ݡ>q2^k+6?wl4^F/.u^Oʡx13@8A2=VG8CRϹ}XeDkjye5:6d=zJo”E57wDwz(ڏƯ\^5geM3lϼR5&Lt lGtH ;o_$»#1q0l ^,ξ-a-\FM{7[.4?b j,i&B a!:۱ GMNCCF.mNTMm"U8-$ @MHɧlM/$i8q$q^.̌nS'N9xͯ XRJ̔J[&jt(M6cn_=6 9foQmJ5 Y OquYܴ)kKRk dĈ&%u~'z*cET㳅>)7?Pow6 >-n-ggַd3 Y^D%6٪NC $l7|iX4݉\{#YCd Qqd g(Ūn^Zn\|:ؖ۷鼣;bSm#%h,Q3!2aV:'I"OijD֟W۔;__1X?}WL攞J~6RCIPDǏ+dyxxdpf&g}:lw^Und.?0{WqmVl a**:]v )@#猀hyMSΥH.Q"UY"st#@h7.uS啢TtS sTd*,ԗ`4թ{K޽"r[bEb̷p{҄jSh O=ESx@xcS45$_w3)5Lq;25, :۳,]*((^zũyR{b#c&"r#HG`Ӟsˆ~N#B憷/R#mZ,Pc.S#۲9z pncK|tq8[u7z2\=1f0%ZyNJ)52L+/WCyT cL=BC݃j?ggˣC1< endstream endobj 276 0 obj << /Length1 1397 /Length2 6024 /Length3 0 /Length 6975 /Filter /FlateDecode >> stream xڍuT6RiPF0F49¹ 6;DD  DAB;x~9{vf70R#Q8!Xgl) @`(sA1,_Aq8=4 HʊHɂ@Q0X@4FDz 6Un>#G ("##%+ aPPsD; .@c4 #&+,bAh s!' x 8"h{ .Hgx h wC~ P$rB~%Ca0D9.]'?.X4> E@~ lan8,t QgQpU+~O AcYg `D{ -?!xHJ@7Qgy7/O3A h@#??,a<~@DGp$ Oua_> ~dr'~UUnF '$ HHED%RR2jEZ({4P7|$wh<@o _"*/xrn+O8,xq;[z8Z8(^(<ŅDA`v$7@`*=\(gë` BE(S}@($ųO/S8 O1ϵ9 Dᕃ:k >:ፀ'0p*e/oI?}nI쎖L>sԽ1r^~} `y?ѐu{N\zʖP^n&0,@=1YTrRy+vJf ,:bOc=Pm]#d뷴J@2 79=b;:呴LtɽLs<*S8FA;!2WqP6iNiꮙտB#ҼK>^'hL+Lhޝ7c}ЫJIF,aѻɨE$T*cBv r硧w>)emd$2=t2lͩzܾw 4(]y7wW}WJ'؇KLI R~8غC!a빋HAqY{rJ ӯo{o7z:e?Kh؆;Ol \M#U~E:DoStN] \td', h<5,'B2n`j e(>Ҝ85 {@/o%x6{BʂbIBD7 E|:Pώp6kߴ]g6:ax>P}9c ,c6M(#CpII̓5vI*gn{;%^a V q{e͛gEm`R\:3L7bnfS63ö lk/+-]$b| e?0RH GJB7U$[ ǣΦCO?S&~v v;p~ 4}:vNxYJ;'Jg&sT 74cs8crÿ'ܔvY&j['0sIK$ = Qx֢>cYwnPOq=b*߅0-7i,\ @]-p C]ec[z=(}DGS6dr^)[Ad%Cd8xsL`Xl$j1w`ͷĤs]>JFe*f3;U#\LqI]aW4D ۓ0_ϣyC?ٶHN  ҬSX[n[)>ibJ󒩿ߟQ__!$` ڜu2e]+}WLaR;B.9_ q]vZꮢ䝊9}56;"sajA].u6Dʖь?gߋUugh۹xEqAؾn=4<mO x}gD _#u1.#EO\փkY&aM4e-As:=~7h[K2,0,}!ʦ5y5iGIAG1S#?l$zS g$Rfi*އdc}zj>UWCQj @9ZWΝݬ^LsUƈ`UiBcF!l[\xkjzl֢Pa{a$xIr|z6Yqp .:~B37SƠ5mtl+tBdF(㩺[IW^%́G\3gZX ni:]\ca|W-Ht9BLSz[pF'݇e6[A7WޏG4K "KW"*VQà (:y^@]AZ SKR63mh֛N {+"+,Hsl9eI֝bDf$!u'/'Of,##X*i F\"s?j+;3M xGĄ!ۄ3G.kmCYҢ-+xu)dqcbs;uG89(uzϷCHzQf1÷YӔ.h~lYb7ZnUO0$N-#v%s"=/k5t'VckaR)>S̴SIPV4'|7.(,R0m@C=2fWK7Vt,FnK"'c a~4gF{B7H>J{6IyǒKXW"*-BӸh|bD{9 o^TK:<+N]iw ԕt97I9 ^c6:뇛U~Q:ޠa& q,jx` &rXCپUZFݝ]&1Hk9evnY@x W9|GNyY:,4CI郷zy̙혺״G  92]4'n+JݦB coR'o=Vr̡fz`<+:Yrۙ衡 e6IKM.H;$F'jfVO^c6qo'X/=z@Y^cqr5::08/&oˡpͶ*Qym/LyA V4Tez\L;SOQNKn((O%UhQy/7)lMxr ~hUȈ~v# rk`zٖ|3_7?vʥt+E| )jX*v~nA+cv!ߢ($Ym[>r^Grmg2H7u,F}JjuHX퀒DJC<>. 7g +M7P 7?X)9+g cX>Mvw1 Ac}$ԨGuO*̭4nj8B\e|M+UL[Z?LP@>]_| ([t9W[2 'Ȍ)ƚsx.~Ӻ^4]fs9IJM4jjk_e=bkZ b܇O-~a5 B6%5>O6gIU[tIǩXue J[tY{-~QĥHPIS8!-#'R内N& 3~0ZX`&V9oO9[%sh$Qp .}UL1`؊J݁BwG]h++ znBՠҮ52 weA{^ÛyUuɡsiyIbMh:gSNam }KC.BҏՏ+86{WkijOoM0+$nmxi>-~ЉaJ_saZstoN^cϾR`Gy 90f iʔҳ-&|:³"& QIj6XP]q</:1-q=2aIέo~/f@IF(^ۢ !~AoJfܔ@{%%ko "H,=Ki:GRq2ZB=.g]\&/Ì8g=*] W=8tIL$7lUNGxoA޶c>foUsR+HR՗5f%s)ٝŮ3q\Ym$UY] 7#$_H1Oyt9]n}nHǡȶA[ڲ 8z|t蛺d1jU?DEgQMүG$_}8ڌSiDO\xuQ.g?ކ%[$7B4=/r>/> ڬ3K;/Ǔvb`Md_AX'v7cͧ͜  $4 4ݻ^&8&ur1}B HF8E(BحXv6Q-Jn \wEq,hq9{5]6 IANF6K-ltbG 0&BK헪-y2Jpe ;~YwYW yͻŤW,Z8~u5O{Č e̜:f {APז'^-.MG-qrG,9pԖ7Zk]>gG ީ8S& BeGm +xþb8 8*_ȿ|Z?3oKxRՐ/1L\"`)U$'޽ eisGꫬ:uMOȋWdoq5ݽFM_׿UҏIXмrSb+V .ԇ%b-L endstream endobj 278 0 obj << /Length1 2096 /Length2 14270 /Length3 0 /Length 15545 /Filter /FlateDecode >> stream xڍP\wwNӸ;$8<w'e9{{tOj*Lf& ){ +3 A 3lTT\lA#Ri|w$] 9W[+;1wHYr`3"[<hM܌D@NV`%--@ ?!h,]\XXݙ휙,V.53 d2@75fD*K+.N v~sqo e/c p{ 1 l0]<\`? m݌lM <1@JT`o~ΦNV.Vpd#[%fvv 3瓰rݓڀAV`3?h:h]AۼY\@ r🈲`s{_$ު"nOkC Jo 3z@N%u\mme7m]]vCmC#诅VY_ێ-有Ydbbj,o9l {g?7/ Vnq~kٟ*fo^I+0vr2D''mW@8lx 0wB\?D!.?"_`qXxt ˇ/Efi_3}+$Hb,f?dgfl/6?_mqX,V+KOK_o2Z q|#ho'[eo=pdsoޮz-)ҿc:j_?{K ߆p8]b8'̲KF_:no9ռ7f{c7W/_g!L]ysm/(d0gob]vW-Jδ3Ɓuq[mO5H\=?hn:[k.`'#w dgSYmWSLjlf{]mJd|gˁ S8cfdȱh8|vdȐv/b53"cH3F87!62Q䯾 pM{$?]Қ8TϬoz-)A!f/Os^g]Tَ%;hbRQ6pS–RS-?ȴ+irD-{Oۉ//Jy( %W݂݇Ҁ/Ll %Ǭ{gJZHG8f@փvBY=P'ORu&tT;W0>|g*|]l.k db,́>dy沇T$;X_7s~HRU? k2Ir w0u9cI=eBtK$<r?nKL= s,p-zг9/2a rX`$/uOe"./ɱdt@t D"?GG7;`eWcaFhL^yJf9di![ըV<1Q}HpDt`cnB~op CHg zT;d!9*C E2-uB+Ubi^χ2:}?3ݕ%3B002ēD6Z0._?n-.)/3Tܻ/vl0S4JMVr㍼RN =(KPj)4ҷ^f{^AjKw8C7%T̂| UI!MVw7|sn0\H8-l?a áEj5-'Ȫ@;g'xZI` !_cy1ej#ʤg7!=g ֒BB.q jL\j j"\oH9U*!iP7 5ȭh ӹ$=C?DF*/6\/SJJ#M^=nҾvEd,=Ov!ǰV;ZŞ0ތ") ɷmns֏aX1B=QHOkN2?fFg 5+UxFdHx†\*,mYߘNH.:-ioҼyd YFvdb@Pɸ j@\Y*Ҍap(KqoN^cS~, Ŋy7OFўu{Xkg gL&h˙Ğ+s ;7]J ?R01  [[iyz(#*cҀf"Mzn@VHnx(B$m^3d#0dGX-U0֖ ]V\nrrHYmҐ.xLvҙe9`KT ,ӳ.7+Y; 憬U~o~Y4n3ovfNdQ~)kSvB] R| pl6ޏN|;ޤ}eH FQs|Qp9&wuY88Րx@jqwHɖKn )1ޱ;JYpk^g>/'p:uiBQJ|v 6sq'g(~FZ#٢i!빥ј*0qW!h4=5+\Ԭ$L!4.]ZJG+GJ~Bى9_6+Py"|#jLJ{ ȝK~?LbiX9,8.w(aK`)u/J!*Ȭc# P O-dXE"(x]JXi!PXMڎB+NċMC$Д/dy\g~6_ڍBx4UJYœ;Iֆz%cC禸P~g>8QXL1aC hl;sА9vO٭A^^1*ծ0 }W=DBf?lbO 21S?w9,QeH0 nsk|)ȷR~R;4#/z-VUQLGnXȸ8';$٥ ~mH׃ vq#{0HJ[((':o]Fjh>q$ѿC7ѓ Fx|.Qr*pHGi,HҔ<ˁwi+;9i^+R߄ ~f0D%E)h陟\FEM *.GN]V#ͫ]o'hrFΔtE;}y3_Q_MH+GD8|<~$l:dWBo([AoN`:7It>cdװ[ IEۮ3/WBҀ;sɈW覑rlj2Vk֝ l[V>MP -Ƃn h?䥘[#}Dbc|Ssgӳ/|I_\p?a.#/./咂搌RD{)cG!:K}-U &3WNEBVv}[ڀJ`Yb˂Oa'v+#&o_\d窥iUPS&(]O67Ix¸ b@{8.U[IgN -ίȦ&0e*u}ǫ3})/7T"3MHf?H;1Moq,V(٩kTubrX[J&kD8p/3㦐oC d/3z*m]V򻘡ǜzf3VyQެS@ d-!W#QKe{rwR#nTQ8r& Fy/G劃F4ZMJn0A/oX)eLtDrV335j_^*yX%y'I6FW{٠_d?z:|gvƂpmaSMX)HP¬Me+#An3;rwWzyH2fh5s҅cJGf4zds.fyX"H}hPE{ez -nȕq ]hۙPuL$+:¤xO^.g )R6./qUlhۆ9vV-W*oeW$蟸?,mszK/^8:w|݁v˷JSA{W-sHx}΍U$1x~=5}D-\Nn"b1Oy>'0!gz#a}i$Hp`&qԎ~1A;UҼ΢prVE-heɔML :'Mg0ɇKD"֦[Ade0mM&!Tb-:DQ\SqFaGS㺝'*y#QK F ]嘱.ڙȢ})-vWeImNļYo^:Z6{b3-zo"`jRV[lvyrUoyp;* *WgB'<,89yAnL"ѭCIGk%[!4,*Vj-=lboqח)= Rʬ~ sWֆ9!{Nߧ<(І:pf'`f^ RVcY=}F`M_|rj-R`.k@)t:К榗bkmP{QXI^60hnl+-&2sCnetZVډ^$YYm|;*gyf[[.~O|(c?269)&u#~xK^67و"BRo(Hopݙ3"/0FJazD/Ԩ4=*#.<ZN`,1,n6ƣ!OGdۦ=,-ʄi_|B ^L-{-}o r8zMܓ"cHIԶ^?M0 g#*7;֜9n%l wvjc⟭U۪)I_Cn":3{LjH^CnN!Bx ?VW*[i\In<3Y>xj"pVjҔ8qjpkC2A #MAjB,U ZZ]xdcF9~:++.qU_~}i/t3?jCf+BZX v1akD ՜A :s܂̺DF^[D$ݳ";|ۛ8k&3$ 'C_.0% ʗ.߆FCiAO\ϑvZ4߂~l(C>-&P gg9L^gW_/u:2O bb?l 0v ,?nOv(3Ɋ}HR])K*m)-C͛~wL43~VV Ep܊DP%PTQSڞ*\Sjc,C`FptmXU98CԧGAr&[xx*}%"/Tj LvYQtoa >VCj@s2{_#,T3|H_dG>3L uM;UVN]Ix9KlBA҆b9tNʯ!ڀYW,Dt!جXPmn\+`3?1Aȏ9<"%GTa6F~0|FPl4d "?*]ٺB MPi'@`Uҷڔĸmgj|kA$ۃfyÊ$qG!  vSKԛ&4J[a8Ӡ߁[O1\ G_DAjR?g28k5ڠ16pF0a3\MZN% XB,KǜX7Jn>XI6~8sgin-^n^ /٫l 3!,x"U VkvBaiSjEy*aj vk$,n1}^}L˒!uAL@''e 郐0dkTb#M@Ah,UnT3 ;-1`awݺ+A;_'b 2Cq-Nψt3]T ё%e -ƨ [?8KDj#9ڒ1v%{`]1 ~1Fo/+&CnQթ{4ʠm~+mG0F@. (ɁEJZVvj5VF\`jgN[RgcSPT& ' /j~%EV .d}eXY|eo(ww _0 ]c/ BDXd?`\[r o`(P6&RecU7 v=sK]1ߩ*Å֚mT!!.~.nNDc_kZڻOm[YC97x4| P1"8>oŃT*9Sw+G3p-~s-3P b[7`/^ vOvG==~O(O@tEѵmVQ/jKIO*XNH8?s!8nK%8nF} d" W$ 78P E`bMo_ WLX9699E1Vj1yhdLyL̇ϊ)DngBQA=OiPWlFޡ1`r aOHt]-v}ZMd}HcS2YحJj[2O.G=[lE_IeXTYVA*5JgYդx.%>?%;CUe9UI/1q(J>ieO0(Q؝U3OQ~y߭H"!<֦wSwڮ"zbD C% _μ]-f;%-ftlK1pL~XLHi%B>~ Xıɰodctyu*3BŐϼ[EOށ.9ۺX*ru(#)`YcC/:-ZTPh _6H%F4G]OFnՓlTV7@6>Y4b4X6 f[mM 2lvJ_nܭ^a/9L|m~>Ca`m:^EFQ&,>YpceGŦOu%f x1{GY&$`3DI{&_(bD9TwWB U;4b0Ȉu M2reqHr3,KEF|mB!t1S7[ǧpv!ZFM>)71qk#냤*4 ]8\* 跿?@r'hTs^B'cMe6yDL6VyE--Sp"&EG7"+ЙR` j֙>H@lWp5>''4&2't7?Ǘ#g0[tv'֡&Nч< Cʬ'|; R*nY(I -qǞ|șJy3KѷU ѵ=jf@ }! 3nd tΨ}J5Z/xs Fk^Qɰ1TJ7ʪ/A#a9uWY7LnHR9A&1IߙhXv,W@ ]KÍd A2BLs4P'sO"Um8;.}.Ja(<3eVQ\-$C˩!ozqʮV 0]C;rFAtۻiWEeOE67 nK*_`ls!kk9&'a/9Ω{%/FWaYָNl|EQ*.$n+F3LJ7FRtfNBO؊m)\ tX̖D`)2g `7Z R@nSrVTXӏP2I"G؞̊3!y)}AQwŋ;O,/kN=$KF*R/vdm`["t.x(yH*՛>S6"=Z#4D* pvԱ͚sU%Wbc˺PjrVPm[zoJQ\wE`y\܀\#B3[g;y]BGh&%=@͈ךr˱!ׂD_ 董|RԚ7_?=M`_K8]o+Bd!L DKŔ}49!ʏ YUdeMbZ_.\tAE"H[KN7߳ɃNu&s<9<˷ڪvZyX _prD5z5&8MtoɊ̥ 2![ |8%50Tf7_ȂB>X,f:x jtZŊS}zzz^֏۩Bl K {NY9 u,$D\vU@S3L/24/:tn^_WQSњnd$UbĖ8O1:ll!P^tM7ճs@RW v}=J>8QW/p7tpTL~Oe_';llv^~حc eIL'#F=,7B^kLDT 0~ &fc"ﴕa`6%}|'jUbyO2)~`h \0rc4N>Tu9y4 eGWɅ2:E:AO:r-KҼ~~ﰜSl[,#׾+ꀲ4/ -, D Xh-Ob&3pN4KHM'=yWV"ݏDCRUR7;H_*:':/e9c,qPPa*}VZ>̍K/cIa ubu:陞QdĤ-AMmXcGU[m^CG/Hرo`zQ7RfO-Ni0/AK @RyFՎ+GMoi,]rD83P@+bFuޣps),_ABe%c>ZہACmfgà $"y; h nҩLw A=c%h;i }!w۷' ]6 k>Z=O !X†/EZMl*ch3\4| '5"-XJ)Jcx?,+E=3z>,J qcUw :R\3#0*}:>~O 1cq牃Eup;f;Y 8k,W[s=v# eN)͍Eҩn٠X˭uAyuGtX8[ O UN|B ;38Iz;9Ϫ~YU{l &^ys3ƞAO"JAf"}N,yXIۛ狁I|yڹ<1/9z]O>d)f0j5/U ڝ6!H};%;46+t^@Up[\Q&;…+0FW3{#1\iM^8fZe)I oyg"(Raʧ؛{@ fCܞJo-LxB.c~STu~.-_we|t5FM??ec&G]ȃ &Ҿst.&@OD~2*RM֕+GJ1)MOMxe%tU|ywP72P̡n@G@b)P _3[Mo&!Wv\RV&օY<<L>˲ѱDzlmyx>>CYjVg 77F#`W-/*F T #QV[-״ѱ8mN+Ae2}FzؾU,fNi}sr'!πMyEp#`Ћ6Q fFEx70~pb*CB̝G_1U_Ly؈)= ClĠ )﫾y͒LOP7TYa5'GWߠHov֪3/ ! [J1{떎 i1x{<qW#\#h5;f|l_sj{]QH]-2HY%4ظJE?ug; Q  :_Ue{/ +=7fkPFw#rcNÀO!ы; AȺm۱T0#$nP;Ed¡!&g4n#iN'~ˉWsO3^ͪ|<t 2N2,.?A|>_(# 2Z^s #vqSZƷr}Q|aDw\3_f(Wg0`sD?v>(64DL7]Ήg?;%P4+LDQD|kqG d\t, VTe]JV^Kl:Zm~F7m#G$~t:s k I;ȜTTxY  ;ajgj$G_ k%▙),lP su# ;OCJ駆iȒeQ!(" d;ͭȬy$YW ';EmB9 >x/<@Ӫ;W1%5Sѐf6nMZQR>pYeFѣ=U65_sr-*OQa =݇aO1e8LJƘ}_O*0wC3vC7fW>G#D :?HNlm6|kjxh?#31Nݙw=-aa``aP>FJP~lh}(V {)K% ?X'Lp)H^s,5 D~jqQ}3^cyǵk6Zg"sT͇"e68j}0g7A/1@#I g>lj#]Z1'hm3<65>ooIf=R%2ː{cڏ_H `C,h̬.3p✀0{uc rLK4v"U4;k"M#EKQ RݭagWIŨRp8^Z endstream endobj 280 0 obj << /Length1 2720 /Length2 19139 /Length3 0 /Length 20700 /Filter /FlateDecode >> stream xڌP--Xn6kpw =h  33w{z^>{Pj09]ؘYJlVVfVVvD**M+W[To@.VXH8L\2IW=@`gge inePb;؃\$,,]y@ 09[MJ& ;pF-@hr,,&v.t+WK:2 P6C iiB l {АS86VۀOsllW +M@;G{/+{ -"07ehb7q751U @ZL `f? /,€,eo&`gwuAU3?kcadneof#HN bee` O%˯^l`~>s0 9puvo0LAV 1<cxm~u,JZjb PW). a0sp8x|/pKjbOmē7wMܻpg.hY:gPvO3@{߲rW/:[_zڿ ?z;+[, %~6uVYV!b6Edj kbs V U_ tڀa73J~;7 <_\\6<m +f0wpFu\_E7HF|+E7FS7T1UE;E7g8,o7gu~#pv_4sOK_p^f<4V.6!L# _);/0QSg d oT6 W?`D-xeKbgw 85sfulܿNn7 >Tښ!QVvp3-wד Lw9MraY[Ca7 npcl-o=0,SqcكwL]~5X~ o58#idGߧ fi+ n$_uX~@.]QVK 23,l`zri{ܸ~ـ8.po}ΰY~TX\-AL %8cWǦ=^z_1n׿J-"D\^t XׇtՉz0M Qig1,;w=§m8߈H^9nmoKVk}2JTkG\*:k F b&K*ɍUΣ_Ƴax~-S,SVy|r8W&Wh7syS/ ~'>zq kU.zט3>l}yJ 1>@;Evʯ(j'3NӇaH_xCZPSIp8m3{<2̵i66jp'?l%8}n"rʏ>}S'sRgnEhXEYuW ]Wl%/Qכ[8M-8wMٴ׶ @Gw9qozњdlʘ,iӚ~ݠGȜRݧ}ݚtqUf=GsVn_nʃ\#ϖSwb0#u v97ګxkC>$-?_}$mL"\YHVx'V##,#;`_}{}]k/n&ulDipy:c9Y n'(}iYr;]gGFV>4X^eF}2z_& @4,6"fG_ŕj|,?1ǃĒl*rC7K-@\tfCul%5AG911ZkuZmB+[TlZ(LaA߇ziCu4'x(z6 NO]oxxͰE0of ҥi=⊐ [f\[bK`C}`'g?n|||(:yK˱QTƧ<~~ գYc_M+r16C>5ٽGr+] P0ۖxeܓ~WtBP 3#g=x7%Sj'6?̐˨臤l .i81&*b;"뺺D[u b Z|Wb[ "CǔCtGI42LIa V0h!6eRn˺߅1f I iSh2hPh0r6UDipȰra:_0Չ _2V06Ȥc|YFqԸj;K#ܮŬv:xKl Dd7i`G{˷r^MKC^dMxJ{Hns!FDem_1N`F͗5Mc*L.[MedVLUˉ&"1 O-?ĉՄ_a<I^|rSTV?Rm[.15'4fJr7ށ-ee[~KXx' J)Pz,XNwan}Fa;ލ5!9(@Ц}{=Cl,@~4Gy Yf8RJ垧$f@G unɲǏ1_20whU4CcmyxgRtr\'R^T{c>WLh!%1Y:%~y gw: hP+|301H:Ƀڬ{ qpq~#U;IRq#gԸ;y#K7KK7Yz!KJEEqzqEy6|j1nQaan}]9t(zn{qiw{ᓪ[rK[4v p<Ts;-^#7ǜKH۰chc7^B<+ 'FHCJ€Y|Ta7]'<ME'qR!_FuC,EjX7`-i>!w4EZuYɟN*ӂ ZH.8X&O-PsPB5r CΏg:(mh%>I(N ɭϤII; aLUVŠyb&9Q 96Y:Is1AbQX?7 %/8 yMZ2^kDӹ+z@4+w'%7%Nc6OϜAu r=FM7okB~MRce;c]qltHf?F&T 0;G.Zq!SA3d&옊MM?}]*3~}[6YdD-8 {F'$v>&Fk:+I&UmEHFH;+4ݰKG8(:w7WQ诃Q1*\\ q% YA\2&z?أ*0!v L]iL+29Bpmɓh^>T'F@nšyqˬIk?NagC*9u[xo}F^q"IJ[9z"Byz.8)˓6=GO]f̗Gjbݕfce^zaڥ\iMz4]]FڏM 7cټ'l=?(pEEMKzPn5L97v" Zؾȥ[0%wapl(Q`ϵ x3xr=nhmb?gA mtʞ}mF+AO!'9aA8&]ȗFׄ>ǦMs@UW!Y >ݕLxUhVc,& *;a&QtH-Ӑ9us™ϘiUkJZ2euRJ,o}F&/1-!0OҠml-7lO@YӴIc]Gԛ3|FBNCxbܢ馣-TTr08.V_m=iYEI3!Na&x]IɕH2l[)˽䊵\XCczuHb:XkbOË34\Q]CZj>F9 3OCDo`{@T6WusO^0i9+FF8i`v @s]6 hX&8ECL7R(d,R܇ĊW°W piyA,u3sZ"gj~r An2«X jkB%%lGND$fَhпeD _WGeMIw$x9}VjTtEJ\W=nfIdDPD^9NE^INk [;"F`2oUzt/{fʧxKX#PnFDF]v}B,6.̯ /ha ۷EF+.2G㎳7aO;nsSNH-98cw~n\1olxWzg>O׳*9L~)[ļ$}%k5Igl[S6f(ȗ]Ed@*W|ʮI|AnV}]Dos6,İ Uy0,-cAb[7KD[޽`S唚wa] {oIUs}! P#} E,{ k#Wx8+uL(l'DS_wI<b~yuUYiI/:H q.x-b )eS_ƕdJrFEI?Ҳ^xxG;l!GWIp"ZB4D&X+;. ;HAm-~OAԉ03)l `@ C)h'e'\HNvXr4Y%׌1".0~ T@nnK[mu{xމ 1#ѐ}q=|X7.fT5dg.{pCe(ـ00qYйF !{vk\v`,o$^IbY:tqŋL&0|95DEߥt[5 ۴+DI A![n~F+ǂ%GRBog'bJr}HE7oX-jZ Gm5X|xN*-Q@SgwA%4W+٤W`J9θ (rrSM+'az}e1qK%8!ժ<my~uGI9;rR?D ;?pP|IÃX{T ⾽[n?~1׼7 ̅FGe7 lG~#Cs=ZJAlOދWHi ƝsL\3G3(+ ޜ {g?BǸ'U-OjѦ'֓̎Rypp`4k2ɏ'2 2SO6='9x0 ]gDZWH30wH; v6L1$*֓x(@1b[Bh7x)MgQ3.ׄ4wP'v{~j|9.EKȢa0ӥm?0]ɧO*y{jwfM|UpEA+G_/z;)e3 ?Jwۼ̌s8 DPͱ]D.1II䷾7K~QBG`b.=)~g< IVAYQ^?0 7ybe/z4 soW>w*9_*G}hDJ7 L"f<8zxٿJ|q(0EJb -oHW1앱g;P DF+07+O.Cz>D% (s)z=$LGM2ךPr}a6SͽneP#@[!_?]6iN >Pf xs-ΜZعYݺJN_Rxe"Gt_&V#Y PӣT6iֈ WHB?!w2;*M]mmr]Jio ]B|Uq_LE |R@5`?1T.j &!)0>&akQ!Zvm&##V֤v2ĩ% ;sg. (qP}@|EN&zOBrF;3!4{2 댞UP 1EOQ"sP~'wn"d=% @Q%!Zlg%啥CmɼJnr ^hgOɱ)/rΙHPLA[[M +FoG1gIoQ0P8E G-::*9./h~R6={-[_f"ӂ@7+NJ706Z5(/3էƯ`ZzՏ˂X21JeCp^9g$Ÿztͯ-M߅I])>|zԐB oD\遂LU⦹~x SG[ַxpU ]} Cͥ; 4-EwO)*iV?asS:aN=عrlS!mm_NF_@EfZWϪݜɥBjU#9eV34+QBAӦu9b5&[ڢS"-au2t-ymQ"Nj~_dl2YL[/>g}*Rm1}zg:sw {UųnqpLEgbD2|}T (]P7jc%$zFs]1)頻J;glӂ9g*!t%&b<Ɯ}˥0-)i:5nY^0ba!h"0E <5P).^]u5$i9QDa,#o*l;"=ҧ.Sg(܇猠{ SO\^ڇ= !zHo}, T*Hk4\펢8KGZ&NL]xFE7nn9Л46Rb;_,_K|[A! ݲׂD_𣳸rEVyKtJP^*U1mfk)|1cF4|pyݗ+<&Y[?0 kd p>Xd% pGH2Ыe(Y偩?GgX ?b(SdtD#9BN^-MDp>[H+N+KybU"Y̳He(aWW6-_za4*ЅhZ0^LYPo.='h nz՚ {T/F +^YJR Eg_rj¶JAMaug0/܁0ڪ|we ' LlM#Qe23 q8pJ@e'U7˚5(B`,W&qd H}٭LحYD6~_B&ݰȈ%:Be w{CٓPݝԊ|sHf^_.I6ZxqY 혫[f35,)>utS9:^J5,9l/2˜ʊ(~zuQ'eVz ,8:S"AjʽBBdv, j70F*!Xf#ϪS?kФ,qS:;|grqيuPm_cz2{=qAqT2DMA$e+Dy2&-rnVhoH#պ Q`Vp.9VcNC+/ZGkndo=&{ɽ>F! {Ji3jY&՗iUFM0ש} D s\4w@Q԰h Ռ?P(u9uk$UmO\SI/TK,x<PrɩC8#DqlF'517wsvwm+r"Bi.b p<܉K-o %V_eJupjS^y|Ay-+/a=+pj mv~]eh.q%Nź#ō\͡YUzE{❋lI: LtoQ[Kӌ@?m=(JN·d !? <6&W]Pl3zTBi~]dnO>Չ+#a;;KȲj,T &oC"]֤zCZsű\v?C't}f 0W( g]ܑ2hWe)vvq{BHp(< Hф͖9x3 1" SHSn7kH ~~wr|p@Gw_1Sd]M\OGcNCџSsm@2V>-^S˩-ӛqZæprxKbwqZTY,vAX#R+򱢱:> FYչaؽQ-MҏrwM:"l5?@+&7ig݊hw ot>^JYa.@ xt ZdGS%켪7<@NCx>񭔺mgL<+9keb~@D:@SbdtUnq=9>W$2FO u *,j8A8`7U=Wl) RhWJ@ǡL*{ :H$׭3hqGve^rP$ XXGl~'Yu"h-05~C_ΧN`ZXN e" '|gq=nat-F2e{[*dBLL~d`Z22)y,*I48y1a0+ìkE'(3b SNPٔKOL,'z μ&c,y6 9]8Ne*sG3H$5dn?Ԋ( W~D|MD\MV!sQ\żk$v-{oo2'>z;ɣOW}&} D;bqt*hMsFꅆ΍Tž̃;+Jhб:95|T}pl^q`例8 +;P3M3:EmYAoХN?DIy!d7OO];A)ȗ3)E/aӳ&DV!>!yQU5{v9A'>I7 q*8:nWmi}aj}X!A+hyduV w2suk4Z?9тgNhIP6x:4j<Z=o[&C7lO|M216kRڍd Jcsu}TUڵ,mw0FZ$2aTA/T wi1\27cG/YZCh)p7)dsg T3c, N:%T-tmeqK߀tP o/xȶw'(ꥡa,OþIADzYz^v]aRxW#,˺V ukU;tE邟f]e(9⑟= 7qI/@dEZ^*6?Tq_1Ԓ23B9':~/jzMCG ѳ.v-?otiu)5*W\G,^-!CYHC {N i$! '_9yG6FN{}YG%'34˧N5vr gu_~t1}7"]b_yCHXw7pao&S'`+KvcR8)nO;xk VBR\;7B2Tyn3ubKcs)fPN8K̨߸Fd=AeSf`mB| ~tƆ{jޗrf8FßUhx8A9aiEfUw_FW·Í}#[ a {; w4|N27&3C<-3x^ԩ}w[`Ii\=IZ潭=1~W9yNa mdop:ȅh U[$j:ާ'4~*m̏ćqWY N63;8񓓵+u8!ԑxS/pLK%0 J+E688,#lѸμ N~_ێE'ۈa(.%w4} % #Q(sB;++w!}ŧp=c?zplGˮ',,$&?n7LQq)A6fB.ksIf~0&r˰D}IWZf8"v ]mrN FFlq5}bYZC_.O,o@{nY]B=^NxFpC͔Z"qvY9F40mrx O_V'J;Cm=OcL X"o R[~ h /wPZB>ߥ ysS4rbeP'츔II}54V'{[EJ_&@OD YpWG6k%P[jO)i+M3SL$(m{ w֞߄# |ĶV銗xnd)y,8f!}jڋ}Hv*zqc"Hb9v3\f6n˒%54pNºﻴ|3EAТz\T B{%#.Ռ-DBU%q;1ݼ1j\|.?3dV N~P+~lU)ֿ9\OPI싉`@{g~颠SIzdڤa'~**pJ { …簝2I(!^2zi]r烜羞Jޝa~_rzNg/s% g*|L[9C?SV)ݥ}piȌG/饒E:sv+zao_$e/K8%w8qɻKrY)뚹#o\2(d>|n6} 7ĆŃU E$zv"-|9B~!\trn;O(Qu #@!{ӻ ͹Mb`Y-ZO!G§_iM_9wCT$_>4ӹ$9n+yNu)zU| $5"sn΁A>|Z{%V;d]8^Ӕ mWr;'K$a3m_Z])0m9p1 p Vz]Ҽl1~(J*'9 R+#QAYyl@a~i9cVjCnd;8^(3+ +nN<4 lwO9+4@d<e-"I5|RS'V 3"+ULl%Z f/ieY@c%%"2e[n`!b\Yr)d~MYRX 8ǭo# qzDָ~4TFUFVJ nqI!4iad=ųVoN9{fI@ '*v %ua2 |7;<儐X13X${U&Mߞ $F#]h "&3~>D. V"O{Q|݋lM8Bk7;Zq*il砅yJ6:U{w`)0aTϹA. ܞ/dHx$ X ;K? >_ =-&2޷ъN`߼?̉ ?͌ f-z0Ԡ#<@ ȨZ8/A>f}RYDsvkVfQYͻСLVcSDKޯļW1$Url|YGL67w07Q:NJOi4\`d)V-jݏ`Z5s=} !NL+3΅rW S*dC4q:~uF+r߭G1!yꨪgjNd 4&_t4ji6ne7Uł :9DhY#7z0{.uwv統TXvq 0*XEeMbtgz,bT<!>f$Utb0fcx*)߱ db|<1nG[';*9w¢C9F4`_m, +Gč N5ѻm(4lqv(J"6O{u,(/[[֔\;jԖZ^|`VȞQl>0$BũNLFK9$c<ۅ ]&gĄ 𨆧Mq',+1VcBҰ|gܩ(W }Ma#":m@ WI6$I0šHN̔ѕXafNpJ^n1cj(7H彑gt!b5 O-bzWA+Kd'-riw =h=ĿZk8IΉg]Cѿ̫aB1\蓁nm&X/ ĪMo=5ЄU?ue-҅w]>ɖ’yhyuEW?A;6ٺ~*Q lIܫxtt>fv6 ND+b+iJ#X%yǚ) s/ i^i zm<G!_ ې<:8I*n3p~_zS^N !:$|$c!X ze %)f2}+U3ɵUX-u6ȫ^NF%Y*bD}+;d$/IX^;^NR]j)a[sn hMUdo{D‰jQ0ޕwX_ 5,Nrg\ɨ5jV.W͗go@vc-v4SMC4;@{7--fs=!!t-`WC^qxΐ VgbHn1ٔKPhYm_eկd 'lL7!d0 \^l ר-!(e2-C,a$ð0s>39qw)mG:¹Qkz+81|&mG Z~.j|ԏá9Wn׏JTX .+oL [vi$ pjH%BzVBXR*hѺB33+zn5vtqiB2]ܯNRXy{\Nŷ VOO{e1 lv,b:r\>*,3/n㓌'5ki[~ztǔӳkH&{ !>sEuv2 ͅ,40I.!ھ4yw㲶_R!^j+PDX2otD-F\^|M o_] ^Tw[jЗRe$I_O\ѹ2*ĈZ ?]NRfr(q'^Mt"J1BCmU/,&DcCYwQ_V`3W9ZsKIQs=C|sici KGkS1'qLH#hI*, CH=8@rW.Scq.{0V\ٗ=ag\@&oRNCw(dKzSz6$~?cJF'm uY|~|V1QU@  }?Rb*#[W?_4Dp284[S9!>.&M82-="#ܢDaRgA+#<Gܖ] }d;&WM^j A݄^Lp#[!tϴԽì_ M'_3Hj.eDC3Q>YN>)Y6Z4G"@ee}RslXDV{Uy?6,a+;;lӡ;rH-9)޸)ُzP鑟o 448TswyC e<%5SR\rذ#m!:QV̂IA]TWaJǯP6.CG\Pz>=S j'Cȑ9A _j>ȏ㜽q@ Ep2o盳l+>bixQcȵ[д YCRk|!8Bk+F?<~>>>O0Ajeu>(3:{5 bd+_ ӚO-77;gܾ眘4Ѓh8ض4n&n-=P@8/5( endstream endobj 282 0 obj << /Length1 1902 /Length2 6241 /Length3 0 /Length 7388 /Filter /FlateDecode >> stream xڍTTm6,%-(  nC B$$F iQBB@)EK:Fy[g9ڽ}{8Y o*;"`HF,뙘EHT!4ca8`(4: d PXKȀ%e@ @T!pG@OF"`h2HO?'Ғ?e  =7P8 p ` CP0GGˀ>5!2NGq`Nh C -]Xpw_??!P(#'; 0Pb!C!pwg@]:{bBhY xC`d?S`P9N?pz "^X/A (`P L "b=;1{$ծx/^;-}v15ҳf7 n\~a^%5.VdQ +{Q^=Q^z텱 9J-bu! Xb))Q YϫTjG߶jqw7w|$KgZ]ZUH[`ԱF9?w1|M {7L(ct2i^+Z6>k)Q31^ sN\U!z %D`LRP-j(PŹjHP67h8Fmx /H̯!;sIRF}k]ݶzYODi -{yV|5 6rc|s9fz |Tӂ5t|TIM3hٝxDݖ#8=P곛iY1RItA=u2)"(P@یu$cc=֨-V݋M'ٟj2-"0LzEweZDkS[o0?Bc"${'DgS栔ƽ`B 2S s"Fߘ^:|\2zatUogt ?%g͕0Urţu5x˞@C>!&7o Li~PkP=rEс&W -Z׫vE}2mi g&9(=ݟذ\PN zךԉ냌xams4띫yѴmOggBX_d7vyuCZI^ Qr'ee2og';%g]n{hHnf` w%0V 6-٧v`RܓbJn\gعk|1\@^n!`k-|]֧"{K,&tK- Mn\%qJh~/J9цƷFKRD$= U"9(Vogdzn^H͔T뿘!N(ZgBoaI\#27x+ ; #O(2ͼ2 t"@BTK%:|)1-o6S&KI845^?vgutRI O1͊;̏zx֟1v`IPi&T` i_^0tWG,bVn䝡anhȜڷS@ \7S#|Hڨ\1="uQk dy!<% Pi\>tV5"=~˻* }8Lo1HSyEt\Cy ]O,TBOƎu"YJHuxkQ=ˆGC nc<_8}r8Rڰ?tzvCj10ȕڍ/ na %R6jVZ* nǟlb_! (K1[cU%䦄/ܴWzTQ {ovm m^fFVnWKn GCG7$;k!vn`m]3;YuF}f=_О6;}Ilv~Cв^ltf#2eᕖ/MmT=[y%`*,`%JGZ0Gs6s/|)@PBssŸ +TNӚi`vj5jCV1_ʬ0U4R 5|2NzDQ.LDSZP] cO ~^3uL?Qu2JW(!VTﶽ:&7{}*!m3أm'.  !Y kpA$oeBvϧEQu3nYyd7~3TqOZյ{nMgկ̫3sj\W@+oz&gq*Eڿ\N 5LYR)0soޮSW&/ֹ#o1lyNyS,Iw*?O]O.?}BQw/DF?x"їN<,"H4?rKaԚ9Fk1={ȕ9P}oeD;h@8yL _Itx58Ά͞Q(["O|##\@Q46~gղFuaAw@,YtM^LluXxxY3PǗDh̷DZQjMMD^'K= 6F gދ=vhԈo ]7'[s1;{s[]~O {,t~:ϳ x*,dRd9VjՌg~2Ыob.:ISWfͳff˨KwgsP8? |&>]6fLgO 6u~mNR:}}-L@шO(fV'9+xnzbI ^eͯRpEadJ%dfDU=z}ɀpKwMo֫En|Ig"8fcIazJ1VAk.qyq,{nWc^tw8s4z'r IO#`#;<' ^ mYmAT-pűX?5LՅ8%|wtAfRB]agŏ߲McZBXXjiqbD'_ݭR>39XRHv8#P|xR.@-7zAZk3;'׃oe2.7F6[wH\/Vɮ" yGR;)襣3! z>޻i3qkW,R85U9fOT,!wYP +ţm6tZ"ڎW%;]ge o U#$MGQ'5DWwygH_+:'c]0KټNBow2mjRIZchPuTj^,L}Urgӣ2+̥po% sLI*N16c2\covZQܠ)F0>xq;[N!TY`ZuIjI/Y-oE*eyҬnI{%7ŎK}xfEM.I}htݐA[$45B=zcӳE +cKO :D/҃8l.۪~ŷip|WW.v^tWDCG㞴/حdeSmtSB&e/D|bOH}gRds{㕻aWx11k.]x4x!ܚ9k@5WRR[r*DK [H?I)ǿ{"Vn+(VUԗ'?LĻ(S H!GW||?g:)h~WC?+wHQ}_ߵbv' aUkVxݵmK%&{o]J֞BD\ 5xI qO Vʠ6W&ZG|I85ԄjaVws؋^}X.$OL'lcռ>u$<',F#_Tn鴟KOo?PV31a{,אM+cݨ/YC>_,M #KR8H`lE̤@;nGzg<teW,\%ԽRL*C1SZ {MtOIm qJ<'VۮpWϛ/O~PNE74 iI|9^fC]d+8 vgaZ8Zf~w)+Jzt!M)Mz/pԑgE\Olj nYf0Z'd=|FՇ0 4 Ŝoȍʐ&*s^aH߉-hHvZ|!;PŢ"ut7S)N*F ډvūmXJ'∡d[Yd*dXvkҁj35QdD;ܑ{6_:>;2"Pd[x`Mx}$ =4&xxrszcy= kNkqƯZ&'dQx?#Z<$Ivwhʼx}nuuk?Dg]C~Ə}E]ҝMnr+/>O?_\8tbzzRy~ Ol8qSci` Aƌ^lsْd<:ƷK昪N]DC(pSiI2wu37nvP,>~`fP Cs_cnS!`굅_s&K|tbmml0 ?M+Gj<ӇI5|%9}sy[ D 9- ŦI7b}G@) 飇W#F+WqKXUm#trL5v6nA,Wra7Hz9 `ȘKBc,i0Ճf <6u;&,g93N*>>-?/^▰=n\ȶH1ϪI㓖DgBM7x:S;<}+Y!07%lߗ(pY,ƄQ#+X_GǮH Q{aޚ B*yr/7J윟n]&5Z@8dX$@cX;+ endstream endobj 284 0 obj << /Length1 721 /Length2 5243 /Length3 0 /Length 5832 /Filter /FlateDecode >> stream xmrPZ5P*P+ł-RBBHRJqw(NZ] ]9{vs^Da\<ym5^>?3# G!e0Q> Ёx^f neZNPB\ր...R.N\\M:0m X0UA]CMgnP[N0 @,PH(/MN\ @,Qv59: ' #Uv$I pk:?0ACUA\( H|SBZ9{@algB`A;a5h̑/Jh{V;`PM8jKsĽEa wvBQH>y?r@-e9 GZt^;BK]4=wn7<\__d,+ D?r-aH߆o"`n0 )XM|͇BoѢou٧x1 5!wZCTD#~Ej(`8}E.cwVeEo=J; uCt{MA䴝Re|q2m-D?A*MX'VKZfH^,Oce/3SYgٯbYytdWzg}.VbC}DJ/aUֲR+}ծP[yW6JQ G8[am0 ]VoIYk 6}|nz#M H} j]AtLKHd_,~Rɍ?&gf N,1 Gbtwk#kuCWKU*1Ohh.;/v~Fpl`JԤ0 rĀ8;.,W4 \vuŽ8}l0r|5U͗|>yΓ䫗Sj\]W(/hǁ@x* (bA,n ңJcoN:VWRش@$tl=m0e]󌭉Nt) o&ƴ|n!3i4m] |)xZBfF?aov1 PH?/B3<S^56яt.;.zl1 Y?6?NGYB4d&d"kXkH ]SFh6co)糈j&%[SPn2^h9>g&<

    =7op܉(ʎT/( Qv l(y .Ewr9_gR.U2.#Ot7)sZC˩/A3S¯PԶL/!ư T/TƐ-r[!+ԇe6>o;VBM)ii]f2t;}"4ږզey)XΒ`l+ɷwNyů\6+7 q 5m}:鍷w\x(g͔u20F+ o} I3(XmDYbD&#CL=61`uN6?NA[mԺإD-W.]%#,n{@vݣfh:ҍI^ŝZ\E.Y;qAzCfDlK*_.T_|'YiW0<cdlTr- ;qP%Ó =dpfeK;J̩<|p7':BjUݶ^/I$G6L֤?XaH?O__rH1*1) Ny~Ў9Gr`nYʨ(~7og/q.0C1wIqW-:|cgdy X`}JE wfp``egtB@Jg'*DCԭTNGni7>y=}0tx3sL|tڝ7#ke0˽` .1`A8hAR$1o'=Z3dT)?0}rUc %sjõ>wV"-8<>jPY,V!}zj.>CbN /\c, I2&iO\-b @U:u+?>8W61YNECHC'VPrȖBgq_$cFeO14Q@TU0}0վO}~/sN5)zJ c-I6cx?ek+\Xy`<Ϥ>'q$Մ͙H֖ܡii(3?tOP!cƮBGUQ~?_DOAfkK+$YW7D6uwNr4qͽD4u2A]ijOvWm#@@{P/^ Ips74`!mdX0lөiqX[9m鋋=jVzC8:e(DO1k|1k sRh<4`4)7LhHdR/wR+uK6 Cc fk4äe֨$)R0arإs{m+A=Qrb{+V?%i5+p}ߟbF(2I /_kL,ڻ^L$L/'G`2&|ln=B=" 2?,M^qS4}߼gW8D Ty>t T{0J(@Sd̒4k}`d-?̉O3XPg{eh/ Sy-ǔT2!@SJ=1 WŬIx.ɾܩ'%77\Ej2i\->] o>haHL586uϋbo>4 SDH>%j-Y |uQ8'-HmwjlJIա\xpLF#A%ƒzgMѫ[dq\7N4lUB?L{0菋,ā"$ys[ƫ)97XL{%7XH'ոx[xY}=|]vS#0i8Fɰ[epau^O[%;V1ș*JX%Zi꘸ +nc56u]M`дv ax0[ⴥ+s8Y#vj+w'T=u TܩOaZi2XA<)ēAaЭUgwC@j ̛ocw%0Ҳ–@^GIfC_R-T0KH%RA ܇eݶMo>%وo:{ê׃~94OI)92Z=J}/q=œayz2~OՐzMw̃f5=XdnXjT;yyE}޶U,SXn#ɩn#QzZf:"O8/^GQ=ޯ/.* HWu2*LW])?rX~Dٝ+ѭE$uWew8苳a )]GXbTD9.k.땳e9\X .4VVo ikB_H[kZV^lN˶_6IÓ_h5x:fuӃ╖ӉVW5'C"Zn~z[JղmPhNQM}“Ó N>u-8'޸,=(ͷ?Aݛ߸Ft7 eoH+7a{-gq_Ʒz#;h]2XI[U*g^Qŏ.~F^ؘ:~ekK7 2N?ޣHM;#hymNaĸ\6s۔k̞-<u.H4K+"H~C-, ƀ"%L{< 觗fGt̵c˵LkԺi]4k1RHz]z@Й@SE#=Ь~e~gsw!缙{:jݼn~JgdTr$hE7CJ+!+ΰݨS҄sƤ\Z,ɶUSJʟ0'Ueʤ 2S0Z/ekyw@A`0AhTfIֱC]*}dzP).;O$]1mnї'Mhr1/f|v\Y@RA%+TKIr'cwSFrFպ䵚+Qd22(˥JDf)Cv_gIG.f-!>ʈRlMr;ROg]U,^$HyTQF=@6B-Y/Yړgk7X^Nr@ 俨r;Xas\gU0 Hvj6/gYB,aoِkl0SOYMv8+0*dmǒP@u}!h~衡,P`QFWCjYy^<"C_<ހd%b2vخS2rcIN ZeaȒȇ|*kf_%K:%?A0gp@INҖ&}spm ;9i.8Y%Y>OeĆ5痌>B}( 0H 1#,UYׂd-6g/)ߤX_q<]+$q[u/ݚݳOe8qA[=#)rzI*d ib$AK ROTx܌6[Gˉ㜊2Bޔ%Y+=]cux0oKGG;=UrTL/:S<P*>nDN#r/6APCEOe>_Bquq B9ޗCzx$vŞE<x!ʼnx)ވR8:/GŅP\U_+_΋>ɵ!Ov] cR;1#1>bQI_1'Ydjp{Xv;:~w*y;_|+^ި6u\]y=՗-v ?7*}3x}3wCe|{GP(VwpuUBzy)k"q5!葊dk/7ɓO^2A(k0=ZIo/{xZ9L4S_Vr+T^Ge" n}B͎`'È?/o7ͫg2fǙb:ߥpOgh@_Aى j.g'HpVǤmy-d${aӛ<";:xuAB_aOu>ȯ"W x\g#w|sle/V)Xwq3-ϚvkddɤFn㧌˗+C2y5z-8ZngphWqW{43l͹u:-u-ems?z听~j᭬꒾3xgӾvmdav= `'oV:AN2=wtsa)m[!3 ,yIo\_nFk>3ʓAuwkH?/~=FN_S˹/3_+4w}Xe)07熡F<̇/XFpկ{fVQnq:> stream xlc.]-\ze۶m۶mۮe۶˶97g2XcȘ3V&)#-#@YLE@ CF&djbio'bbP75(:L 0da{O'Ks 1տ5CK[K'Mٕɕ$eSS) ,))'Sڙ:\l,2ƦvΦT3{'09?̜m*br*Qaza @Ft;gM]\_l W2_N`&.#SsK;&igf`\r&fDښ(m\]L&NvqdB m-m<O?dڙCLb& .jF?pϩxʿףQ"[N&k[??XW5tqh3D=iXlFfVF35vur2s71ƪ1wUzkXh|8**#L6尅5΃ N;\ɇbxSUR*s; z7`jضr`.A ,yyc *:v֗ĩt)P~Lhj-Bn7@ nɰ-*µ 5%0Evwݪㆷ!2Wt G!oywe syTwyY|#^fu(\f)twEa`l6W\d'9&Q+-O1ۣo΋>ym )e@l]ځmڝAK%U2=1['",ݚκpv8R [2g5 y &\5_Ү#K\TEzW<2ҷJ5< UxKʠzS!O,>8c;Oz^W/MrBFN*A81u_oݭ2̽췸ڪDP0 !e 3-GK^eGqsGx^䀍^R\D K$}u󾃬?FDsuVw(BVŏbqz6+?1w~*eM^n@wתJ.ޖD:cqtzgz -U<8#)-{íAi\y-!wY}ɖX7nkK Fvg(KI N94ġBFhvvyRC8EWW2?c}aagQxb]c~E990RFD4>:+=(s qwtUm[<8"\cX`FyCrPܪsmgSiTB'vk?q';-4^ܑ&l dr1CwDwPڋ.hutJ9Ro,eE Em\9͕Z%W OIo=2=Qg9'>cn G `1L7~&96zv3CCHl ȊFg-N"}РQDU*eԢB~Jmp!%+NIiAnWO%iwI0[9^<91N/ʏ,[<,gScjEj=Z9]= Ͳcsg呇Vz 9ۋoضUK(j0p0%$9uyV |ė֙2P)M:bswmc=N̩@^t{#2FF,8$Y;(>.A>I#ūN9_L}T(qGMhѧYu۷k^م|:u,RNoXXgQdt8|cAt${ A]c -(*n&@rwaP[O+o2\7:^uaBߘR2ͭt ܪ 5ߚ#S?j7L$IK3;SAsaɃ!fES%p3iid6aKu0U˙Yg*.MR?g&O'2sʻ!A]icԸ!Ʊ${r:\i_@torڏ&cf"쑫~5']>oF(G #C+_o&װ-9n ]LͫJ^]:$4{+]^$ +ug!guCK6I3(hցAzk~jp{G*TvJ@olR'תyN&x41q@L8 4\ڠ}C$`agY$ p{lr>֫-ҩbPL;&,^Up$cu K0JMȓig4ÚoR W?hY/[Ь&UOxOkh!=P7GeûQt.>ԕgd!P\ -@?' OP_v@HH:eY,P+{P?aM|}P+jo e[ BW3f!83Ecs^ʊ,RMr?%ˠiQw'X7zwMStBufNH6G[.(fVAng*~afɦ !ƨ;EuKoUH BCp,eZoy DODeAcCCf&T= @L>`';ͩ^7n45߹&.gt@[O ق&(DSDIP*:LB}eJܕdƯ*Hehq՚[pPe(=hejP'/ [XR@0'd}>,-BΉ{p3_tc.L[=ڣx!q :U >mx&܂EC)tk2U[-zaZ(k2nT 4^w%3K3̉{4!kjJ"nۦp2qo`k/?zH.T"*=2c4q&x2SOCb^Bq$t&ʃAZ̻N_,V/ty4~>2L+/{sRJ&/MK%/۳GBfKq)*XϪkGK8][LY/W~M>T^1gޟ!ø s$Ï22g"v|˔H 瘡܂YB$\ZXAs× pec(D g"Rmg۵J3 8+{KԒ~ O^FǓ::%*{bJw܂!.)O2~k{14f܋qy\'Zj*N:jnNelZ&VdC)tRޚh{fNLjܷ/B&a68={UXY q@F\ys\qa]sޞWihvP?9r@8K#=s?U3a3uA4<+dډB>'c8XTOPŀ14"c캱o kG@,K/t[*, W b͏KkvL-%DHqRe[]&sQr> thO&)U޸Fnsm4#GT.Ljkܑ/w%&"]#:F~$ o1 Uٓ_'`- AJl}~V|x.8슴vh/@Lq{E\V|HA[tsMf%0e65VxW P ^]g3!3źt r;NNjNFV[`Q Z,o1n0b>a?PtRձ%H坫}] ϫH.(9&o@K Sj<_$q_g!sI8nⅣRcf2+DT @*O"ѿFo!p6ST^”J:Ϙ4M88 ~M9|<1A F'h&r\S#K #޸jz^cY9ҝ,|=OB^0T!eq_"S4]ίSNdk8 !EBth㯎 ۪?0Gד-1t`,x្d;<$?65l\k<ۂ.c,L¿_?˱eӼSk/Rzs@Ҥ*H{u^2Е=m\Noµ--$R}ǒYxNHdRrlЃ]uaе!8&MQ,[ߜ3/}3)M65H"RvE$71IΟ6;7u][H} z!Mփ;H]_WQ@+OrjPU 1Re\Èe]qTдϟ*8WkaoM|DsDE8,{SPq=+:ÅmĚ~ö'ttMh,@_~ud[p *Ga3wP887;S޿FR`> LF헣正e!=.e_ yVRdxoqV}7P4P^vmt!ƥsMQL.6rYb[9^=xǪmeAqJP@CcXI`VqMv1΁;KZ52a$U[9G׆qN`F^䎥Th?:;n<9Ļ a& j$!d2jԇaZ,G)EL c kpIb(&{2":$<Ņ/ `r&_Q-l|tu{hf۪=.|pԶ*|U.# 0u臜bI>9G@'2;xˢd2z|*QabSUgM^Ò{Tp]1@AުiuXpٟ'?M-lwK!+gB1?LcJ,hƙ+B#^^.Iv]LO֟|Wa]}_H 7㖲5܏XV^P^ C{xt'ܳYb] m-Zrn7c]{Dj`O/X/~[-m'.s Gl]z(SriЮA̚Ź21\,fg~ⶤxb~6N*PY0'uU%|O QpϘ`=3h'Gj9ރ#6&H^Rݘ]t> æb`6  'nYL^55ӈQ:]ҍ֢L=r2,mf\ҷOړ,Ncyb"CHnpԛpqnaoUrsK+,-R Z-gohG=Bv!-ߔ/FZ>yo:ird,mO]Q&ri?1I bRI\Iłx5Ʒ)n.6j}%&4s6Bf'~UoCyLtR9lՠQ 12^˸,߈g SbJcv/)w 7pmA÷f&A.Ye#.'0&MBа,ƑkIne_Bˠy%W^q7 |L%*{meu RERxIfLsû块e[VxޗTOtk RtuY ATBj18O^S"9L__[)jYbM}V˹`W}X-f{aϺ\jͶbْnjϬTӚ|6o|cO%x!|ǹR$[tH*_~@e*"`;I KT>B`5IwlRz7dRDM8ږ17]fA!AĄ#NEH C#F/f`t ^>?ɓ\N"v x."r]U6vG;ԘmbaMY0(Nks9iE;^I(y)[ % q줦 e\yT]{xҊz]ن=_yB~܄e%Wj#$;"ߋs-jӽ@lLbl挵8h e?{_I |s^x/4rf;vEO_|_P]MH'3ZT@0K3';KyBNWtwC<;HXih/A)yc: gBT_&/#jxJMEw/F(h Rf#yYIrZvV^*+PivLǣIx y= ,r[Co3M#&F-}T*KM^45QjRЌE<;O'r[FpO{؄qfIHPDV&ErwQ<s#3cBuz9=s-7D~Q!V%m%s=N]4h52zxOĔ)S jK_8rFqZ_t[-%F݉dy˝>1 лUƷav$zjoĺn$"1h}95 #R]<32"%c#׵P~>4+k^-WY(gjNB%^oZ+?'鳯AB@t`cz.4;,>TT=x|;nl g$lY/1e{=xr_İ%9<}&%{lre1<7i4ʎUďs]Y.6\zD8̄ yn:'!͖EGѻX5:El.'KJ1j"Kc.a[uMk,G Yb^b7Gm8Ub f 9Ԏ|; w<~$ [V%ȑ~hnQ.A $yݱjeMkM?/xۻH~8кH,V808~>:A]R)78WNWBh4r7X }AM?:Ug-3vb@zv5XDPT'|K{kZIlGr&v1K⅞%!pVq3(xT[gu~G! <̨ys6uF2$ ȗk!3fpjUE_vTPԊ>~AW> ā;돉c[ǹr>1%lc:k dN@B8NpT@eq'x%sfw-G#P'q!ZfA  :d9w)K_s!-++,2{s3 Ԇ8lm=+}B>{ZoV`DKA#L9&%[V/5muC@-&]%%bgc1Yfc?ي+,)3(e7}.ʳqQN{kr}j.6GլҏGݟuDŽr!'S ٯqx,q͂=)ioyA<اxۂC]aU+˖}HJ&Ø\4u_w߿\v0uiwZ0zm85u\l2mَiđ58ȩ9R{ySTm+Z^9Ow򴥉2f+һb]obͦ>%] 2R5X3%z󙮴0)^\M]@S3=,Cro3tá٘ߐA3t<ȁh")gxB0~Or:,R*bD{srF͵ڍ&[I ,P\HWե֝]x/G} Zm|j r"'rQbⲄTA̜hq1OeYr^5Vط#Gd.tk׸tw">,Z,9'#d, cddGVOYJ˅Ey٣ptK 5m3}C-#Mi)EK³{ L,PӶI =D- ``Xx6>!LF]YQ23<`l ga:e`}3+o"}/FtR6vZ 8WGY:S6-07,%Ke2au?,V؞:i\K{Np&awN}sG$][8*8#yif\ji>WN/_g?ҁ3<aio?XMİDrc)@ zl}Ob؎ [؂SцͷN)=%h$]m=a,M]DK*E:! [yMKԸFd$F\ 1 0aYu6߁"W+zs &ۃUᴍ&5zٯKcuq+AuͩdDJ#A<:6'ZW 8705gnHN>4x[ yN-_d Gk&Q.|[K$l${"*5!qSNKOeKk׭1>cll!2 d398)-e-9x[Yz5(@_ɜL} 7Q`syl-wJw 6"/hGA/@Òάo=4Wt c?~;}ت뤍=3EAlq%~ ˡ2hA:S=$9d\`>\IUf}X(ŵA13eA0%Kcu5]Q}\{ث6ș1 WkXKjm__ޡ$fkD?m 7e. >`.}U8Fai!apww8h’ާK sRyXlu%fr~!.U-qIr] ro񻮊 #MX,1^  ʺg45WcFQ-JXܐ7z Fᚢ ƁzlV=x҄X/[!Skrw~N]8UDCcg\kr"z)[Ml{M]%iTxFL@r괛j5 W֫{y c[=g#m %;ۥWsF-T(t\Ae/A<s$QO IGQQ'H+Ri8aM]>):wvVE#GKڎ&&dH@V{"qù@Cw ;N"1= Dm֮{kavzY ~JDlCiK* ?ـ" }%Yto=$ ^o]7U9|2oZƒ >˚_X))ˠ h0$P}:/7w-!i/IbTV!)?@DLlrنb@G<CSU v(FbQ tmPGE^'?/fރy+?^+Q*zw]4h-~t+9ݮ[ zpn3j"5Y(S,kvmu9#X ä9À \#HYd5HDbԿԣhL`y"*iH34e)<Δ Zn(}?E;7_U{w]>[-Μ~c~)Lz>3> 6?/P}pMv\ hu,'%Be_$nJ' 'mer 5:FH@fOIhYHy)lM\-$LCi0:=s`+4ӈCz%v΀oJLMn:rpkP,}~͸eeWPv5c{D&[7硼fs刀~q~c}}*y-7-jv8⢜LyOvUKF+h>wyShQPeP}m?ҟ\AIAv[B$=#Cfׅ\gH{=:&Fӄ?X[_L8RU."`kF#'Da&[|U 4ץkdM}AM 4+"%[j;c;5 jQXlS(nfwZցgw aYL6ZU̢Upܱ/Ęc}b&Dqy{ 粖?m7?ඹe^ҿ9D(.j竼T9o6-,}H2SL((eMU+qQ6TGp4CPEp MA!YAEW#:PMg ] :OCnV:W=L ~9DnSt4hVU/& pE?˝i4#[K j=4> endobj 288 0 obj << /Type /ObjStm /N 55 /First 459 /Length 1775 /Filter /FlateDecode >> stream xڝX[S:~ϯ#i4BJ@;9\{~ʼVuta+g^l{a|؛m'GßgJ|d%t=p=' {2/>>9q' h4^F?{x |N}t=zw|3@Md7ۃ\_Ep1߷n;_~"|yBT?G#6N747Nyp {n)"}C4.%uN~C !0:>k,_9lIr F 7#p5nt֍&4V:ͩbtqp.oaps]ncWy>h%' tu;d\p;,vCb)B*?vɖ!Ѻ4hJc'?4;+q}S1q1+n,.RWf4 ,6%n_N'VU,Yf^V3/ee5O>Zn̵,s-2Bdy{B7qe D֋U"~ pyu^z1s%e 8߰z96L5A7ne+ۉk *k jPe Xwd#='B`Q|Ų,y_v't9WX"jB&jv*mjFMt~tN${u$zSHJXNj=Иi4M޽砇{cGĝ=;U7d@urC@\uU$Ag´MH ڽ@@TLj_EMw4o0u ~=C8gDD GzJ\JlaZZe# >-9VYqOU>K x X&9PG$ |y x%qW"Mf jnƪ!fQՅȠfqRu!U{-ulGŸI#.0 `&#'TPdcjri.+ȯϑ.vGU=қPQ ~w.SW!ɛn7v㫬7MC}'~bW~ʎc!.:.3.;/ g[aƕF?P endstream endobj 305 0 obj << /Type /XRef /Index [0 306] /Size 306 /W [1 3 1] /Root 303 0 R /Info 304 0 R /ID [<44A31D4CE96A407D6EC397D3390D26B9> <44A31D4CE96A407D6EC397D3390D26B9>] /Length 748 /Filter /FlateDecode >> stream x%KlLaP2CUNﭢUkVK{D,JXJ$6+\ⲵHy Vignettes for the Epi package</a>

    Vignettes for the Epi package

    Other Epi package related stuff

    • \pkg{Epi} has grown out of the course 'Statistical Practise in Epidemiology with R', abbreviated SPE.
    • The website for the Epi package.
    • A list of reports and published papers using the Lexis machinery is here.
    Epi/inst/doc/simLexis.pdf0000644000176200001440000131120714003563040015001 0ustar liggesusers%PDF-1.5 % 131 0 obj << /Length 892 /Filter /FlateDecode >> stream xڭUKs0WԱgba:43izhJ{@(8)#J=`Yw]iUMVfF.[Q41RRnNKS|Y?=lЬaX0*_O[R2f$) ~v咤7#s&f?3|IPDsKdp]jC 3DRg&N8'LR!5$U%QSd $w`1 *ND1} QJ7 ÷ QHQ0σqR0U 6h[^ BE> stream xZnH+xa81rb 3٢lM$Ӑh3_?R$ՔD[H H񽮪WՄm_.߿^y/H)Rd8Is8^PZJK}!&B Sr7H֍Smkmzt7ry2.P|MS&$\ Yoc\QJ({lP Gw!N`i|Q 2ӱ>|ԟy< kÌ*uv:1/{3kb d(M6ՌD:fUF7zS d\A*EUtao&oJОn{\9ͱ sgf%ʹvQ >.]ցhq)>t;_`C@ρ\Lb]&PE:BXd+32[HKN"LܝVdsX<*tɢ@|.M"-͟dq7)VO+xe,-&no VH\cql@l,.Zu3@Оp;z2fwDUȸ|U ) xƥLN}o D }EH:6^;_q\N1ȅq,SIZ+b_aqPuh]̱K|@Qlum$jXjU\K3j\j@KQ-^4K2g+?q>&١>`"ejv;?Y,8ТpBF>6 [y/^ħ.䰔G#r q>~=^Ed+_:T-kJ34E''tY+A:>ZIXs?ג˫le ".eohr@l $ fU+7a+Q`UJjga-fV# SoJW]ἅUr1ZO-u1ޜLDufSȂu9vԳzҔʼZek4F#4pٷ@UY ?Ad*&~!'Wom `=]Ep+U{J<**ۡ򕪗S%KNmX6%)@pzB /Wzzѣ:׽ Ǖ^xG$}{YC7J2[tuJWd`@Aex$Ij`G-Dvy&]18)RsIp'!!rQ;HD$ޞ)vMKΌ{7]@ @UXa-Ś0{f v7T?`J&3X (ntf>U;&!!Xq&v@KIiH endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 807 /Length 1918 /Filter /FlateDecode >> stream xڵXmo_1]Ka^+9dՓIp>CLڵD+.gfyvg$92:l6. }x{N<1ԔbR㢾_nŲ{4=-e%j _L#5#M#CzqC N95)ղj'e3ʇiLz-VáG]ϯ8&eNmKxrbNV]r's֝h[?мZSn^nJ߱S+w>Sa^٬}]Ri*mKΊ6u ߱ zBѻD풮fmeR/~^U5,~^fOtr},ʦ3- \1jcJ4ZxHhk eu [8B^\|ovx_VżMYzY6X/nFG)d Ǎ8˿hEDsNMh\juW]C|& q]yĽ!TnuF/vl]=\v~(>/𜏸s܏ٞ\=le{.sٞ|=lg{>ٞG^v|FG#Z\Ov+*BGD|>HQȤ_w?.j|eF2DKޗe /3Z1MDŜI;R&AnTћ @$.J@*O)xb#hl"4C:q2nChlDG?- znq:()ځ35hN"&ǚ$T9 'p™Y#鰄$IJaPB}wc.@)$Sq߀"⌓S'CP~4IqIs+!GРtu;6|UB0PbjT *aW }T9*4NAMD&,Q}U@ERFP0`՚Q)hkt)d RQ }|UlNpjCW[=N$”mQ C a1M ao+4ƩנǯFhDco7 endstream endobj 181 0 obj << /Length 2411 /Filter /FlateDecode >> stream xڭZK6ϯѮN.S=0 f N&>ztK-!<3$~}uJV?%Wߗ**j_y\e|UX<=ެݰ~ĿvDYgDozܟb؉?|,Vq*1I Ÿ,ڊ?o#VCy.gE0-*X\m"||&ciW [?^ݮWԲib,re2^owX5]-Sħ;_=R̺٤Hƶr/z&4(rӳ~WN0J˧F˽^O~#SzU G≮Tk'XW>su%ۄ% GF#Vo?:_Sw ~"cl`ԢMx_v$}P2nz) "4JgzZ=VʟYA$qz(B ն1cT# Ӥt= .&_r΍ql1OR6+4Pc|慌57Q>LrC&g\]]|kI7K2{k(;VSt+!zJޱyESoG]h[1ߔ y?Mac}4; $QWmj7rz԰vV)ϳ i໸ <|1O^ҶaeCe;L"&+ DJ7ƷO'pLrW;?u$H[,JwŞd[+ +U]NY "nIoꍜvV5^rz֙z[޹1^-ȼ)w|2;K4_tx[jt.$ ^YfG'ndW`{py%t(OCo=3 xq*&d\ N\X]R\$ z%3F^ \H9 $,/u֘ll(Z3DOVr=@ͲdﮆCGbm pu=,5=AL>wFtۄ""l*(GRyb}i^$yd35c.?zB>\ / <.DIG duԘMzԒ>HJq<$"dU#iFd#c_]İpz,Fa x^MFq!SL|VFtrU\B} Q׿.ҷv|m)y6{fKEӡhݯ9i \Ag@N엩X{q,&HbSj0lB1~> G;~)'X^u8]&{=G ȍWJSIN۸HLl0ea=<*-3ӊzAi9_7m6*Y3]ְ=,gغYǔ%xhWP :æ]͑v ǣ!,&Z$mSϪ>>m(HD;AEHgI>X;il(-!K GwT8ד4كJ8k!kIKcJ"Pgg+ ?&,<_Jv=:Bz"J{KĽ> stream xڭ[Yo#~ׯ hr{UR.7rΝڝek{‘I {6 XUꏫ-b\ Sw?/@5nȊRq}!OXĔꬽHPOqN#I0}(GrBiUa4=S&=-t"i!YsW Ej #-dWMf7Kǵ~B 5ܘm#/d{тrv̗=Qn $o,]oՒwOqh7*K1  ll qG`vq@)XKJzΡ $̼2f螊.5*5I_È$[~B}>I19`G@D`b FC𘭁hDThRJ^svdh;`f^}04<:"u>h\xX9[W=1NGTC,s VT듎A>C3Xcѻzk/lжpӑ(=Z ɏHN>TH> =|\XNBCofFr[Ćl@hH6ıigs30V;OlW@$8ڦY@Nn4}dNw'H>֭++,B%ÓxT"&4f32ٱn͗8!@d)둇~ًR\3$hV$ 4qpc8~߾0{aas2^#^BΣ˸qHEImpi\>YAXe`Ouvktx~\ԍF*X̦3{!{g:?o\E8?:XUW&d~ceE &,'S6Ha/ i遶i'R{QTN|4 pIf eBBLj]y˴ri4O6XH"z{w{چx{Pj endstream endobj 198 0 obj << /Length 2560 /Filter /FlateDecode >> stream xڭZs۸_I gt&W;7kҫ>-Q҉TtX R|=ФHO,DwQ0zLHJQy]/2ʣEUz-A_wgsdTTEѝgƯ7}:;?MPT5͗zЗBZ!U^{GXt16lʒ:ꀼʅfl۳8WӏKŇgJdEEA׉HzskJ$o?F#[GYQRfW0*D,ZdJZ b#d[ 8mvf̛W~(2 )Bu(1j5*QUX(}YZȆs;<{#ldvA(NK%YED7rڶ07+5@gqRkj@%fsg9N[$}äaFvgѫkEE:%J9oD͡kgCm ﳥHe(V:#uKfӫ5 e6ݛSܞB&*Y<$'E7U&:lB?"-j;uG>6)[_c˒8bWΜ7qoWxQ99#tMVVU:@:.l [$<3@|:˵* ?ZKo>c 1 橤,ΧE]}1DڻMxBԍiº1D_=~Z ,U|> a}W< 㨆"zn_vFe򁌴#=ȩeÜB9py\dIDkS߲P$I@h>E~`_&2י>M8HYGTt<&JĎ4>w SN_髶6bN^UpK_:Iknq J]}VZx_;%-=ce#䛐WZ+4?A F^ F%22\U?#.Zp5/bM_1kkǟaR3ɡB&n!-X}^1]Ragr3^xŬgEA {f'ȋD&"9I"R 92/en=ԣ1u+QKXC楜|4q[D)c:h\J?\[ko\8F}y,DJCc|!cLߞ-r -!nNdN:`:d+0$+֎OȘsJQg$5#{,C Q l=]hlHK2+ u 1s¡:! F͚q9o`57P\޲:'%xg h2Y[ \F2SNTq,Me ǖKc412bdw7L.Sc?p:-䦝*QQhŽ6F' WB6,RW' ,:x KF=y')/*BSNfzBuUw,fqUЭ(ݜ#~Գ<.eXS1rHv2w蚥:a+TN7@n,+H{1?^sRf1Oжe܍/hzSV?sxW S޵ zK9)jf!,9yb6xKVӃ4wty3Y7v<d[p ŰރV=b%}s"8o#3\.w1. {moIO+*%׆C2iT|8lzֶi~ shKnݭb=5bY!:6,fnY ĜA 廳R ɾnHX.$7W|˰ df؞?0^Y tzCeEA*Ϙ=éXB_) =nkk 7Ņ\7uvqnۺ@e}ٽ!NpG!JYAYwevN^}4ٳv6M1w۵o)$1DL3Pș);=g.;c`Q%_mA{=n}\UMm =b |Ǝ~\iwãEhz!c[q]^>3 ~h΍^!Ǹ5F5uazl=yCx=* }>0۬pbgNᎩaȊe}SaCm$ ?غhB^pA];mr,yhF GA[P> X-޽w,^,ۄ]sa2͉VMfۯ'B}f<%˄z`K0fZ}9~q=/f0v endstream endobj 204 0 obj << /Length 1764 /Filter /FlateDecode >> stream xڭˎ6l4bHJ)`7EH."Akkc5kkci_HdyCp3J_9{=yFR"3Fˋ LY,y|>B% Z:kqhǍEd~ +75I)JaӴ%ƑqǔI ;|hoj4S2D큷NKOMr(H-̫Esm6-1+^d*owQr}@6YFPy}"5 =-m8IE.هdKa@̐q-8(A7\Ž&q&H~mEpLC`z͊zN?K#4LJqktEV5Á:!8u*- YO> 0=@f2EFN[NuKOCɯ$1fkFA6Kȡ6%@> )jH QPQ0Hg XE9=K].]9Ci + idQs϶͕&VvX" ̤BUC-3*cQ< U!z{<| S0ގ}ߦRz= lGzh2_10Rb a*qvƩ2#Gf= '*Q#| LJsøqIZQ ]){#%(IҎbeYXhCv8Sh(\pGZDd}9s]+Kq~Ճhn']ty F21ad?(]~u̺ӆm׾ O?ʼ.O $Pnh}4qs xrjТ-#FL<"cQɽ6Z.#M}wRO/?@UP]p79r^pjOf3]T"#a]NCE#гsoFto FuW>= u)jn{}-)G_g| {5n7M|-wK WWxZ5 _T_V:D-_mZ7yS0ἥv.<(Yu" O`P\:;@.#N7ͦ`+ /wM'^&v %>}gD9 Յ'ׅOf!"<9g endstream endobj 201 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./simLexis-boxes.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 207 0 R /BBox [0 0 504 360] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 208 0 R>> /ExtGState << >>/ColorSpace << /sRGB 209 0 R >>>> /Length 1050 /Filter /FlateDecode >> stream xM6 <&@k4@ ;lEK̆UNz,0 x8|LFx ey}^,`YQAqI蓊U׏p?KMVŦMQ%9G<?jiǿ>K(Ktdjj%V(ջR귕ޗ?\ac!U˕ =`;Ft*yD#ҕˀ4kia[r'dڸf-.g̮ťL]fi -.gum$4c-.gYs=1H-.d\Uskw s˙n qL\F#3f&RfRiRm˙[_x>} /Obns_KQe_sl2縜,eq9Ӯk3c ۶W&QP9ZGP=vY[SŪxa` fimJ=&լ2718-8ʘ2mcz6*6`\ ]änYn7V̺t0181}*UfJ0ib\MqȤx2LtYY*9211CeӔ:C1 Yrbe]fLw 4Ù{˙.OXa+^2ponqbkf%N| 3E![j[QoMĀ2418P1uu\B sf:;0/`V9sq3`瀉?NLw?ő3g =N8Rr&L;"0g)G;SNܧ8nL;]"0QgIGySr䝐Oq$LřEß?pOOA"=GEz/r/vsz endstream endobj 211 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 214 0 obj << /Length 2883 /Filter /FlateDecode >> stream xZ_۶OMAMg8m3i|vNuEr~ Aug}E.>xՌ"]ng2OJ.fRVIYfnz捺>,_~0A,)\M ԝ7ju:3>˂,K(xuV+2,KJ]{uwn%ϊy z ./9 ;$./~`Y:ctQル ,/d"Tۋ]fL2&rr^%9gD|d,˕` =H㥒bު[-ǂeV$4ӿi ~j1X*Db'zĚR7kT=ۡE&(Gu{?q<ޠn{UQ.gmxWEV07J?7-MƮ[̖Eϖ,O\Py\i,jdJJ%FA5Nϩr4G/֋tB}+ Cp0d5uZ30К;L++ znzcp+и&;$Ƭ50IwB@DevdT$<f *߷-\ kf!eYkAZ׺1gޛĝJSa4@k$BýO珑k;+N4`1CXj֫=&կR ڡXRvd-vi\ruAr!$0$V< +DƈRt_@fJUUY(8>F|)Z=Lc XYuoa~܎1%rf;ؠM$?YB6O-S=1?3u`y 6f((e V8>osY[cYI 2 dV]^z+K,\sP,+Q2(k\!![2![D U2oi $Yr=RqM@C 5(0 ~Oyr?wc9BȬzmM%WyW0b2e.PYZ 7$pU$z}/6zI*RerG"yTyQH6# 5ÓNdLDz+s:s~+BRBD#i4 J7N3{eDiAD,.iPih{k!>$u^(ކvO"sS~Wet1ߑרD',>Mt և%Wǹ8q&E`"O O/HvVQ=C`8!U.xmN$zZi^*]˜Ulf@d80f!0VBe^V>*"X''{~ZhQeϧ.#6/Γ^L]>}.z;|]';9w{yZjT|ZWz/ݬw"gw896M+?;O~gbCCӐLEuW';AHd!1g}|zx1l:jfQ!S'b=y#O[xG[O$K.ϳU󸓼ssbBͥ&+_gOݸxW0Fbt " ?o}fpjƑ&xUOWk#[CqzAYbMI0, J, jIV:x8,ms *QǵsZ)me [!ZL%_Ʀ8qţ=V~DY[Q֪UF6HGNSuHiGXpVÚ]e5Y֠[W";Z%UzrxZ[IZ^_ub3plPuC!S-z{D]k V5SDUIظJ >^N#`:efXM@ uAIA'%aeܺr;\ I9W|KRmpJ$3h{EqkÖk7IUgO;ڱM`,&>iXSr+CX<$`mdșh9mA:ڪdž0UiE}7( ʿރ6cU#nQfE\H>?*XTb9d [/37$ݘDړԚӵKV6{olѻ#Jwveҩ$ڣ\][¥mڏT]vg1n-.Ϋ7vY[Լ[a40M&id۽-[`:P`8'"u}hؗ).3ZL͑Td¬,u4ȇwRˑ'wkEElĊtL lkGUf!Y"J~rX3{DCk"g7 ȧYݙ*5|0fr#0t[Jb4(n#/{ht:]fՃgI~-eKzΦ+5v]> stream xZY7~ׯB-W:@9l$ A4ce,i2Ҭˣ,[s$Vu̚1gswz|nիF||}v2zUc!X4r|r:n5ml'ˉ:3)L1.E館e?:޸Yk?)i&So&^~wL_*;@UTqϻL;l&okvR뻀*7M==2 φ5.(+>^߾tAn3֦ehwoGN/ˣ^6i>k)ia}J,rw}ZMTnv[vqϤe[kmB >{5^\  b2A!"P~ "3m2ki,ءOeﭲ,d|7L?|,swmY||  To=n|Jٗf b|(U ]x'p=p׿AzՉg|8uv&)BF Ե˖r:\Ex}}~ }T3'8`SkCUx 0swJc"iǟ{A*`AՑdsZBI@T>C/ZD?@^rހE ⎠&ŮȘt`[d],w6Uۖ:}zڨ1¯OTpi*D5p>̀ tQjEQ˽a/0a ɻ@Lqʘ"2MծT aN^@1I@E[\cڼN57οM ̹|-Wڼ,9Y˼y+e>QcWT[Y`Ys el{#|5Rj OQ*b5gnbwBO/H[-vPÜwQ%A~M`@!cWD~Ʃ׫aiDid`M~8PF}ZWGimWӶQj6AIXFGedG݋L 8 aHH[Ҏ!n̥a d_C~ZF.C6ZZL[/ICZ<`igv \h*j^eX[!3ݴeVPJhR\*@vkBrfJtc$5Msѓwd$Vh}WA;;$ 2Om4?rp/bmO"UCLIH2hPD>|uZo*4PJunJ ppz-kU7h=mU }|>m\Qb 5ۧkeQY tVT+)-8ky)*OH.e$ux u/4rT.E=ìX_K7Zpip>=,"Ѧ+oay7leyQ ZQ0VY59Xm>}Br7O$v#Ay$X$8G kvP{Q[hAr\ ޛk4SlT{V0,ytiO)xyT<]EN뵵MqWܢ&!h589 yZ'X4m>Gtd6t/1H$"ltc=G<i+:qC!뱪<$# i#%`ŒV챮$ɼ%yè0p{Z q-oYqu}b^wCƪ|Pu"!ǔ u5-MsCp>XꃫrZX@VU&ND--+t̍q]zBGmעcC^,m=DNkNvBy u~uΚrGyf?;l)4yx,) H,&!I+W =ǘc,]!XR1=( iɂxɯ t׽λ<%Zbٮ'X(1ҁ&t6__~96j'9< endstream endobj 223 0 obj << /Length 2404 /Filter /FlateDecode >> stream xM۶_Lg %2m3LIqAF񥿽@Bv&!H$?@Vy5ٟU;眵Z(H=7eM+_\qy[kF ʢ9gz!rV=q=p{5 WR;qccM3,>8 Wia炉:7f|ӌ۹jΓ|4Ӗ~M5g+n?Wa{{VS"gߡFx*V-Q-S'?qiB.^XBͮp/T;~k H|W~j\`jo++Ui]"n&` psK;y\ "ҚU\ *9n~5RˆoUNGifZ1xN؄ x w),Dt[J.Z{myeڍwќ:$dF1XHjn@(AT%m 2%#G;Dυ%o F [G6$a#u{R@qȱ81oڔ9D( cCHш$Z{4+j *4PiZo  &[M@,U~"Ǝ[ JN+Eᨣ]֟$'(U ){u5 TaTpeø[mέI2Q'(00G2u5F$U׽O@+o|\,x^Л)P% vCw[VҼNw/qpqo ]r=C1PJ[+\1, jl\ѼsA&.UE홅_MvdԬ12S@}GCeÂWc8 F,}ϼ28 ek bg^Nkʛ{Wrt ^tdpDdd'iUL0 BM*<1Q/&l|+eNgnQ%RfN>+ئKRi| ͈b3,Q_JZ"LIc+:@ u(!wY;b[٘,'h&4 c,; n#=lp6Vp||.+.,qC|eF-iwfWv:qymmR %W Ph*mľKIƾC͎\}L%GDEH3Vh#PɷVKPW5:e^`BZ[$*N+wC`E%Z-3%* d8J6U_bTZh ّ=TPiGH C8Is 6ɬ6՚6kCEQq&~,~Z/|"ixː?Nu л3" % 32nܹ~< Rހ0t'iSK_ kZypf<ׂF-hL%ʰZ#B'YEӒU::^ ~(¶-=*[orjs?%(};U -yp8 N`,N`\S*kp|nBqN9>F'.;ƲYHv UÞ|}ipJj`T.F@յ-Q YgNuQ1L w ɏ^xJwHvJ.E Rt40 endstream endobj 227 0 obj << /Length 2623 /Filter /FlateDecode >> stream xZo6_!8`"E꣨.Iz]4V^{:n#CrHqvȃlpf,+ozzի[)yvj7͛NٛY3{W8Yըi,W4h)-k򆷖"拒WKuQV];uukx3$aLs䕴p8iy`3k.x=[95hܞw-b"Q;| } <=)ފy\*GoR.Sn2U׬V짣\vJdFF^3##Qހ vB*GŒ>ݕ~x9rގ+k*2fF\Luf=(2LB`ߌBmdi\ઽyS){`ּE6^Y115XaBp˶ȫ }|!y9{Y@ږu0gHyNBgu6 Gh]ߞ%g'ݫר!񞯞xc6Ry4FlEB%q Qgc"s`R^ 脰fh8g)6Ÿxh"zԻ|Gg b3\7=4v ;fQl,v /xXGT|^ww?h2M2Sq Cۮ 52sm1$6Ͽ܃-R^0e4P6~ >! @F*/dDp GsbId#rL|K -&ilOwYU5ó!% 㸥oP& <‹EY 8^:o%%Y~k^Q6@< EZxo"-Kݍ%ACO%WD2ͣ#+4e4^lO⿌x9=O&#"ky3KqWBR\ᬦ\ZD݃8A<ۇdr :S:m‹1]"t+HTJ}XV" J(Fq%'YVqeEA!1x3u$92׶oIli޿I}AA¥͚ ?Q\R=R™;1$YyYrK3W`- .j=>zaj57_W!)UGt3}h1r,?L݅WJfIE1&$V$k @I #hOjJE c^򺛔jMyêPW 29[P\l vCػ%&pJDPR[ jwR~GOD5Xd z(Hέج0CWA{F˻gd`,+s;Ӏu@{H|OT$0;ae6+XCasZNJXJĚ"BARJS p)٨֛eXZEc82N(ԅɕ$ w܎`Gbu7^١w'?X.]0^RMұ/TAW? j<#;2v}8` mm80Y,J&w!sZ%S"]- IQ;n2{Y(3^|c="w\7X'-@;dDdݣuxA>_|paUrSP"/e~dh{:^_c]fNl"Mn(Myd*`^iFJ*(BHvV 0hx&ɘ#6 # :-WkUB^% r}[ףHE^=BfuxZ*r^T:"hsp?Edn}9;.cfM͵fR3!RT΄WGwuWnU/K˼gd^IU9{=RY?n70 'wkzBdڨИux`&{}Mjoӹ2ݖmBqTld4Iezo1N0mzY-pg#]z7g8>.@(ga36̷vԁ":۽Dxܴ\1ݧ̹um: Yv3d*|D#&mΝkoA]DOB۸)﷖i714oma]l)WbV[eSFJWfMs,cskH ?M Յ"|@?weP *fc\ƃӹi | <d~ّZ-e%brO$8_Eb\vGw?-?bz-vj`(s8A/}~, KIX8m/2-fU{Pc" t/}7OLPLµ` |^#c0!^u endstream endobj 233 0 obj << /Length 2883 /Filter /FlateDecode >> stream xڽZ[s~d 4q;udcvA#Iвg㻗g/(D˹~Ȧ)?~d[7iL)% lXMBӪjHrꟇ^u;{Y̡B,F89~+'xvYSL Ga/>Z5fNm0Yĵ(v3V_}zʷ=RV9fj10RBV>pAY{MBtmEYV~3};$\#t̆ECZKG%PpFwBZϘpRt#WSrF^+4AAJzP7s3$5 _vp|5*fn5.VZԞ(JN(tB`0KͳYh]"?!>bRRq7{`8[cr"kt̒dy>x&VLbVYGjrtHys^VS_; Dk&^n!`1#;Pŵj-Θ#ز~i>BL_cGR{dJJ/.efm $D,w`kkmm^Q{ v5 92y~0"kU[mvK;m !_=\r)w7)`|ZFg i /z2~p.SsRY{mEHSbЪ>r>Z6Nj`5DAl'yP);lDjJ6HXn\wMJE% *jyg\aqrhqv4'˔My|ԍ ):~MOKBkKsĒf94S4p) [mθIu&"sѕǻ{JER8\U g6t̨p HIs4:ܽ1ȝR\քW֔km.q@ۨѲ6 zۑ@Y*Z&;bÌe-?lc0 ڂIl6pf7b)E!;YqڼY1`j,\H'ꂭmfv_qQ?3f j?(_|*:ZͶ@g!HtY2Y6.~ *L{?=)e|)W3:|@ba]L2R*OU`4zL<2 LVgs.OKV䐿Nu}&Bxqot3BBK$}RZVW?τ"iQ]m*Ad'X6֬58Ckv#kčᄟ `3'vJ6oMVë}>r.lJM^ˏQPӽS19LAprt,Ks~;Y-ݫFmpcv'c>>Icpvcr;wHYE&8f O;@cQmm.>po3> stream x[Y~ׯyЬGfR1I֋FK8@(+jlXEG<X`UGbGs1O?ޫGx-~jeyV2fi>.y4DI|/7Nh6+%),WxۊY4KF6ϧiRLvA^GyU[glrR_6I,SA_d-SZ ^Ԛt"ڶ ->\Txp5z?GDh}ORGbp#}ԯ~o=§s أ0.hq~?!BK"g^P'u3Ee>9QxzivAO|oC;u/\^fPaw,ZĔlA DYiG8H 0)Y{`P|i#&p*46ii)^D.@\:F&[npDBGg@h']w$/+W<սԐ*}#ޠÚvGqЀ˄4#^CA9?rrS#j n9%i_Tj,_ǵ5jiݗhH 1ޏ4$e?rA) TgXߊ{ 3Xy{9_Usz~Z(D7tg^tLCmEUKOw2lpj砷Cpb5K!V|eLw?oq@C ?줭#h9D-j P1Bv0(QTl/6ak)Nqb6ބzAy $}@1^ Ŕч)6R*iVmv:0%[@䰜yÆޑu L[^Nˇ2).-E G,Ln`e)=1e,pT5/͸6r\tՏ5/Xx<Klb+Sk {]OJK{ȸf:>U;6pYs|} 1 _Cx0W՞s4R psȔӭV՜~mYHն,2ue/SR [ZVQ1?)];(!SP#9Ln.7\ A5<x8 a 4> stream xڕ˒6Э̊w{$i72NIZ^#K)vJVݤY$xt<q͛2)Ee*;E*$ ewSi2y~42i%<  ? 3DOT)$w<95OTýE\Q2xɰenG+šy.%KE,GvS`)dFL|}%mmn$@NDNO_`>;i^Bn?671;׽ 잦 FI\~pD xs{R|7bƑɬN)NIlvE۲8~ϏoR.МAop Oefxm^ _n5M}zD: yj#\ۦ#8I_hk`&XH,D2m*Q =.<E׳3!io, ~};@ ǐOxдHc&"<^Qby5A%Ҩ\j(`,nvӟpÑrӭ&\$?bz~> w sȠ:І~RSy)B'= L@/H21">OftZnv6ѦEF~Ut&UUJg msў = }[=Z8JbŘfwQƷ64eekƪ_ZA˄L6#&EbvTVxX .ecsh㙊$*@+cbnH3Q(ɕrۮ"SXs^Za߰]l%ʖ]h"w:,D$|e~?sm$oU>EWn(cۥ u: ){\(c)F2b9jr.g2B~̞h䆘e\]D1y\|2ZLJ!%0f7HJ3)&K#WQ%<\6 3kRLGi6PF &F WD׶mU#/V4J6P(^ݕpٵxBGgvRH2r@nz {3EqqmY/Z4BF3ubF.r?D(縴'c2qm endstream endobj 235 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./simLexis-mort-int.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 247 0 R /BBox [0 0 576 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 248 0 R>> /ExtGState << /GS1 249 0 R /GS257 250 0 R >>/ColorSpace << /sRGB 251 0 R >>>> /Length 38615 /Filter /FlateDecode >> stream xO5K݇SCrìCKa^@0 Mt6IweEF-Mtg?{UbE|~_ϯ/??RJ|h?o_OϯS?r_Yo/۪3}ZJky_}uԏ_S?zz֭1ʯ?׿_?37Y()o.kVx;û6oe.jg?û1wvabû c c ۫ޝO>ưw]û4ޝ\w<ޝ]Ν<ޝ^ly]ޝNͳy~q]c:f/1X8߰?>.^ S31u{cny.'c 10 |<ưa{]g:םwrcx,1k!c &iBZuûnc sֱ{iؖd.&#|޻N5\uGivǜon݊lwj{v#E>fcxʣoOiJ!n3}{mL`;+sf!{m hkoK)mKXGm;ca:8/ϻ3mOruilF^]/ɮt}'ck6$~`v?ykG:f7Qg^xO$'Ԟ.oٗ^雽meFf/ht_km;Vcwb|q 7wqbG^;2(u[ڞAp-`Ox0G}뙽$E Fve?jzޏUyϪB{m⤽(¨(km[v,FA٧p'(<׳oK2J|{mSx>|,6=w^\=ڽ>DEgRO-cTp#1I#*a<]#tZ$ڙx@;ߵ额Xv7k E;_''ڹiRpw?+{}D;_'_ITD;7m wG]O4bɟv>nZcP*p!}WzOu {`ú[nŊv>ٍFlZUnldvkN@7<+Qu~l\m8hg"mr D;;`ш#i;ڙH#vn\i֊3|E;4YsӲ< L{ŭ6%S;h#AsE;z?B;N2΢,|bzάH ~v>&hXNh9ZL}IofD͞Px},v{%^Bܷ Kۨ԰HhY4{Pu)d0vsS,jק[pyx$nh9QD' V޿8\{`}hjF_vtqVtQx33Um&=̝W9ˉfɋff"hf- |l+f>d5<縨Ao @9thtXΝ;i>zI箓>~EC(PY*F=9{]yV{]pg+pZK٬^Yͬ 8aB8ֵK:.vϻZ7.#M 9fwf\6߅:IE\ĮKz{y|vt2kzq9[V"V.qfE 1߸%.ç s}53{7 +9H&uLK%&#V2Rf!ACbvPW/*%rƋeĥW)q@:W8Rҫ^ ]%%H:I *YW)qU0^mFH/謅[R:勾vtz}{h5{h4q&mSo7Nr)N:Eۉ{h|G1~u#:W['\tMV(rL/vE-D62PX^ɡ #TDz-X|boyJ/yPivj5'@hm&B!>Cw Cw 5|p8Z ,otePna<@7R6VmaHN+?xn04>F! C4ah~;1"_wGt]j;pO:,EjC,Cw6n] }3q0chbcäz+ -b-$n0c2ļO DPb]&4C+fD,Z>!BvCjHNɆwi_RVДmJY~QJNJL=feahV[ZTy)*}0Je ڔ6Y0+hN^GQ >ң"oP}z)jm๷ss-?V`.8I{ 5„VFuĮ:pJuG'0tg#LUgRLLmm`ADt#[ONOLg6pj}T4R 遅έ(8HDK 5Үp>r}Qs?++ݏv~Pz0 ̈g`cO[56w[F *f)asɼRxnvs 2VPuҞXjw-nj%/oԎExKB<閐>'yG c+R!5{qoWզE<,3a BVEťo޵/[ *mJHB&dQ w wZh`6ߛ4 j(kz]?|nzMwPf+[x,WJwɻ/n,{'KY.C[>h(1c.d{e?[0n>0`ZaCLk3 &( goߵ寇" ~lZ^p]P ًgg{(C}93+ m8PkᢧDFwA|H@ ޿Hߌy__ O5;UmÀɠ€N2 À0?NtZl]du:=1vFMeLuSkV<7{6 Q^?af#Kcʗh6BO,,\t9M!|mZׁBHS`td%59q۬xס'Fj^RyE8|<(ZS9> Z䯫QLp(M+8Vd9"KceĀ(1\Y0Xo(N[P/ px$m-I *m YQn}VYI&KZzP,LDsA" u];=dvft7v'nG2 oUyB*|[>ڴ𴥟bTX"}{$-~pP7{~#EQ%?_AWy2Ə'#th|=BV?QzBs$%o =U_ r'#+qCbGx]( ϋef-w=1ި VWQ$_F)?Y %^揺jU ࿈࿨ZTUoVLޯ>)~~3~n6#\Ajw&{zW*ߵ39= Vb>7>^Qz Ú_U72jzUӟ:Rn'}RQLV^Aتy*u Ȟp<dGzbMX8Vz_p܊GSoyGLxVMp\BZ\R0!)㢞N1Ow@;9/9q.SpEnHqC+8n# ɯxȌ,Xpǰ.Bott#t^ pR#@@ )*8h>E ;vq'w 8q/ߦ`Mp ;qG+8s`MpI == 8h;o}|xnY6 ulu;# ฯg 8LQ0! aũF8;=у;xDJzФǃ;\U/w㩀n'O(IPh|ɝk4L,L _W\,K.,BxzvkBZ3p=2;G]H |՛V|:NV#/|v|oЁe,:_JJ}%j0x:_>_]+mJotGU·,$:ηvf|:ESqFv(%*OԥeLB_|FXXRFLu35q3 $ ` g3Q@ϦO HکjhahG稁Ob`)(hJ OǷѝށfo TߪUT䜻vr=}^^=\O^:K& `&s? `D޻ڹ=+^.{UNM>Rj R%UN*'anƬvp-|׳4Fz9tmGturhcrf?RRLnnew2 sm;jONtcKrR٨DF4rtGG]ѮhW??vvG]ߠvU9m榚d[C 8u$N"t5=c3N $Lz̙Ykp:WCAER(offn?pt`>p:qt8-tdtSBJ]_e=g:H!tUַRWxp9qVaA۟#t#b_t]NgN.GHKtO+_ I圎R)8{>p:87+ zp:\ ǜĄ+u,11w8q$NcӥD@NLC8NeetXc Lm;Ss:7 sOxp:Qt~eC>NGNN1QN";y1?z=GGd'=X_=oOH٥{f/Aȉ"Ҥiw {q0!׶Ëm `o2s=4}_)C@2IRyw=M9ToKq\!Ur )ѰiRY~\!SRb;YR>[7G\WGH )˥nq=\Bj$$S/T8D G_ &v8Gz;gÏ({GvoDEBD<p*T#?pKz7)MFRTAIчJ)TP*TD")Ap>цOj ]3`-/ f%EQPA>#aRQ$hT~ O^F!ŋ)$%H~=s(ӱ^T ⁽- ^?'n] @lHx%lK\ׯ׏G}~t_~~t_??׏/8s>5Zi-6;zP$`*Y|E1CJrhqчr./n^Cl"^M$߇$*pFc jBUQeX/@„51g Hͫ:̫؟vFy[W?9=b}] فdK,@ %+V%.hmo%3#r>C7@w D@NfI?V%c m^[U^?Cַ*> @O?FUO?s W9.# ~DB?"P"!ǜ/St'"c֮Xbsw w<=D8Q ֹ~2BIL"  T}d(Rk8T9~!D3<>T xOuDH/ь{&'"`n '!W ;ǃ_5["w~:Ϗ r:u.? H9'Bf7^D`rٻvɹ#9;dWD=*r PrIt}y޹"+d{]4]4sO۵s^޵s yjN0{/SPŒ+bq?nPJƇ_EV<U(a->U9H|QZܢ!{›ퟄ^"A @甔{DERޏ"23XSЯ{Jւ{4=wn2gEinurFqd "TI ȚC/n~ġ3sš}-M'3+KtCCOq8d66UsšUwG¡| ZER:&~|sOO YGM էq 8C^CksOm>͇oZ*ݲΡ|Z3Cks fU)`VQ9498NbfꃙU3ԪI9`rplM2`84>á/8f*;Ly -M @c*8av98sh6wm1UvyQb8Ρ}>áAY1 :?b68t/0b"8RΡőCKZ949 84 L>W]y5γcȡ77Uo˫.}֭DNgCkNy w x88cSN4ιs65Y4m: dp]1N1z o=*7΀ߗF3~,܏<ϗ1?_pNH9cx:)G VbwW0(m= 5aoqg5*.c̐0!(Z)E.U%s98q 'gF9tE,?伺πWgF 6㕿R;x &G94C#l^ӱn;8498TΡ1hN-gk%"wrh9\mrh{^Crh/Cf:ǚ@.1j./\m7phFrCrhA_|84 Ri8psNXs-s 'O.‹jv}Ҕ3uCg1|8tW< V9t$Kq";:Ùš55949&v1TDpJw =+rګΡozDQo>}|u9tٷ U= 2UNe3OEJqxgu;6.rЊb;#:eQhG6ɩ:޷g3Xj:iq:wNA@+~j]Y G`E ,Tc֩/.dUȠc ;h;/"ᑪtxZhقǫD ge1+U2#;4z*)x <>66!Y JK:x4hXuHxu~q˝J@LV4@&#D,c3" 1bhd4oYYtsF]A"DS!#v2BO1"DO*Stzju"SD߹xHs`ܿ}Gz}yժ޷d&&zʥ+U'V**XRFLOzA>ZB 7y{Jx9:ou1Řu97xNbkT3BF3 %Y]~f+:ZzJU@9f mɓkTrf4-ET5mdYUMG5FFe8^w"l/*/^?1gVoke kZ*5׍P.޺nD֍35]7DXAy*5 nVg]7^cƻ.2Jc\;>Fz[m9ƀ-ޖcqUjiZ^xmҀ5fNt' vF3w^o]yxM;w>7]>Y{;1uĞdQ{ sq{gzok 뻓.4 §a'](.dYNxì4l5 ]Uu- q,{`ӈ uWWb[}5vSF:ot v D75#bNu] ΖbM="0#b{BŜ-@A= d' ģ '9L!6bO"$> s_a^˜ɠ2:zf/ix}”z|cF}kQ4m'챵KnԠ^rfm++a }m{]B~KFwnfZAs;L4xoS찲vKW7*dWe^,ap}%Ԩ:14{B-?h,iU)deT10\ asP<*f/Oݹ#hvml/:?ԨXFT ){t񹳟B_6tLK&Ch&7Xe2D|v1)nK.U:ﳕ{Х}tcN?<}gMy/ЋFL/iSCU>f@>qc3rN*Bg>Gz1a8ld+E:GpU.dS^ʊC^~Ckšy/zġ*qaBpE8CAZw: ZCP,r ݒ|zJl'M/"Ӄ}ZNż$zIz]>R:*QI9"0/&&AфI`n ag`zҀy0] ':' iF$M'%HMfVBv|_GUS1y 'AŸ8b=b6at|1bw{*C1?9U4{y+f}7}Q Ǥ'#J®1J{mdlr gȪ)9tTpY2 q^'3e™W#SڣӍc 7w{C^+#32dICu$FY1zYӟ༯: '168zy큃ð=o]n.zsp?ꄓ+f_u+4oG*^n^vs#g UYphprDNCt>84 >:֍#i?rb,r`{Z|reNu=>9џ;3kAΡo/K7.>psh8t O *,My G D]P DxUJ|8|P}?m& ^š]Z*ГCz;?mN2B^KE'Nݩ d8{PFw f¡U3quۿϝ0/mZȡ/w1B0geoЮ,c 5NAy7phzP4}Ш::948t':SЉġtNC'Ɵ]T6>EN c5s? 5~˿0 Q|O_mLmL5>{{kỵ;Ug55{T/_#Ltǒt0bЋ ĠWa\<_7Uz>w90}۠ʗ|Y3SA`L7A?d}ΊUAkD) ztb1,+Ƽ*)6zS YSuI.M vwcgz3M'v,eAuW]c^tU/y!`0 6 ,$ n MeQ7=Lfa [ 1$ zax0hXҤ*QWē4uЇ)QUA':ŠXa)  v]w"B硶͍XS@a%+<+)ݔE@8M<O۟Ny;!~?{y*UGKΏ^^c}}9i BxMЪT}O#E) (З?^iH2biOϝt HJ+&*z'iFSaعa;^3:N;;zgDôVuWQQGL_^GNR1=02ά1YtS_9'~EXb>Ԥ;Q'ZN=vDqS^#WFF)oJNy_̚Ny1K:ah_3GE|jX;WU}^cE'-lLA35݈r^cUD5{"Nj_oU,d^cA}ĭN!â+55jt$B"BjV2_k0/j̆ƊΒ++j]7\:ߧJkܰ\$j0@j:k_jDXрQc%#tu75;^ƚ許5Vk=[cMQ| }*)qz4>kc~d>ݿ[cQ3 jvkv[cG#R8O1ɡ"p3:j ]szNz#L9 2fP6TDnMXC Z2deTa*̷W(Tcmh'wv[Ҁ 2?:Gglt?:k?:lttv9zh=m')NbJE.׍.:)|0@0@ Ojj+dKVFx~ym1` g jЉFVGIԵq6#0@ub3@?u+:l3m~t'[a]HؙmjoEY? Sa3_0w|`]P вX~a~e!Ay0Geχf~uVsvc*-:Ǎ4'eUf (Fd[wd `v0\iF " pN)ayujC@Ch0uo;Ch茄(SԄ8L !C䡆ً3a aps3J ¯ϼ)hs.GCu#ҏGtG;>6'˽, e;}ѹ莻Eg;i4)Rw|y 9؁CnZvQg~\w|?iR{_oOtsex̓+ґ<7 ~jzjz]%}~hCl'g鸒rY:.JK;ppv}qN$xE;J5=XK'kz6/^4TqQ.f"8;׷T׀MS*۱'̟;a^wE-QC4hs+-ߔy4a{MϞGoM|5exMs'pbgxM&ja<+^ӳùW3`_ 07 iޚ#P!u1 AkZ]g"*p.蹾rdY:Z9E9=1؃rprtDLT_3Qa0adFքʼ#uT! 1+EyJW4W12I:JUJVWrN}|A}59ʇU1yx59U1a~ثjsS Y}as5ߧ\Z>ӄow}r܏xrϦx\yky2=5唱*=VK^rvOP*r7 _љwM %v/'Ee͎?zauuiW`ik>1)GF9uq]|>өg`xovM?m,Y ʠSp{t˻[vާF_CO>#|zː-)gAws8l!dpw]Mu!S絹3949)8t+ΡbD84]siC^mrh~S*h/V<8&á5 9tlΡ*&GGCNU~W-P,9U N}~zw^^8έzݪq[6UowphUC:p[ϿUoߪ7sؑfaYXnkV#'Ușw;r-U5rU׷u<}jf8sYpZOUGsja~t\wj1sSu|ם+r];5:=c ]Nם ¡8CKG]5r'r \]#^kㄗCuvˡ{ xY x;9LN5ZӯCk:sh?Z}Ρ7:z845 84xaáAWЁϠ%8>Ps8j8zvG*3|:S eRŷzȞMt@CK*C /CgW</Nz9?qmr98Aosh㸗Cfw9%VaTgC~cNphpC̕x}845,89:n2QaXrqrʭmT7{ ՜8tzG; 2Zb{lV t|Jrb"lo:©A>S% $ ru?GFU9Zyisv}Z|8eH:47&tA0Je݌ ;zgjW]$dY!ђJXŧCX 4)|xUiϸ#(n/aaL:r7,Π=a)"NҴg<j7!{U~A?eՌU'~>_k@t:!AG;D(bBz"Ug޺wF ?\7nwn|*4 vU\\U]v Z蝂aMסbsE%2UUUS"V:h]'7k qTQeY6A-G;>yx*M1DD-x1 u5NݒRtJfeͫTU͍J%ݛ3BWMCq&ݺ3LUNU1* T8kjNnAk.F4fW`̯[9y;^<xdtW>ʅsk?tI$T3GEktGՇSȨqʟ|{^ \>_Zߎ~ 1㽨]^Q5ƴ&"?2֕u}G#5ULPqˀ׍.V\7nTz q5UyФ*(q;:5֫Yq\7"}PEp9^sKxM\7"3"sxgkwݸ]n\׿}^-:[=dc;kXkeTGxon_nΨ.~׮5i<׍^#^wT^WF<߻T:YWQG5>3lwy A>2op:WQv:?4FS6*>GػΕu'g*F>-Ԩ# {s;1Ls .U". .7 bW-%"kMBJQ]e +B|F!6@J RؕJ bIRz"w5qwݢλQb7E ߯e!6:Ki~+ݤS9ndgFF b7ju5,ZE'iE-BNN>z5nb7rBFaBFD.ľOWc0mJ ؟BFbQb7tsB B&" 9n vl6]حPt{4^w-,a7Wk~ O2̪A{vVӵo˿6{zaؓY] j|v%Ώ¹={ذkVvBF< 'py&Cytz{m7{0h #h6Wp`u\{ܰۂλV@ a[zD:'Vs~4%;<̴x0ӴldU36{yo_G{mijEWf/kf/4,cD/?-29d ,&4{3ϼOP9[gxlIT6ňg#3'(U9X(e+T_Y6{˞=5UuC x}Ii>k$b'zc^:*H/>#O˗CurON !^WobOkV[ywށiݒ0S&̮L &䃉ф)oxr0:%#Ӌf2dW̲z޵74T6DC:jqAp聮yreSCALi1&VCӇc}u8@"=8X^U-=COxГ!='{gjIQ^f!y"TišyctA:\$bNMCO=/8t98T =5=COU+}uD<+-V ypg0{9#DpENA:'8q/,Ocw8njzκmCCC?RI¡c )C?C'8tǂC'844{|8i% ¡Sgf~<:sN84:.eCK50+A0:ơ¡¡U:q$C?\d/"W3kRǙOsk-Ƒ)lg Q¡[CgfT8498t,]{Й^gqhp謜r84:a84ph"xΡQ-*^i}s}UxD6ΡushШA9rk*,ģΡűCT3uuΡ /ЏˡW앞‹Wu n|q9pf3Cgjr=-|v<9C^+݉ħ2Ccڨ̶{F|p?O㟲դ~b:8tb޳8ƛgՍ+;Ԫ)kZ߬ގqA7EӳqN:owD:O:7A ZxAAW:UOV Щˣ߫JDQ\ZB,Vu{I Z҅`0h :{:Ed{uރi)=ԧ =r #<+C'ioBbA00h:`T}a  0OV]d`daTI`:v\~tc|>  Zu{rE@bГ g/ = :icNnlre5vJ4ˠs4=BFut& ]$]c`Ѝ"ً3VDn[g ΠSv^:9j";wo8mlN{`{mtgҫ3#֏ΛoyDx)R)C&xgN4m:^3mKx=v^wןNF vU_dk: |D#;}N^P-2F !Sg]"U.O"Hs"c4x='x#:s{+/32Fx= : 9l^^X'2-AW.tUX'cj[x=ӗAO^ON^O&}zgPc`;ì'p׳~UcisIIxoxX漢fOx=Ju6 zJ${_ze M Qx!^qUD½6uz Th(M2ڨqRŚ2VW&rPuDFqh}QЦLF\ E)UL!& r_*2I| ubjvUTd9y q7ڈ  W^ceĭj>j^s 5fib4g7e許2/Xק0ɠnS!SNLJ td̨J̈́2a M)暽[ :hM2Ny~n|Z롆5V 5V4uXgRcbXGjL& Rcht{1NxSzq :e4P|F.X%nU<-&Sͨ[h/z [B7_\c"Q/gŻ^V<//2o/bvUv Lb=!/w 2 geXӊPX58 "ŠnS;u'~7 S]6?ӊoyvxW<ӈN u8<9ӊ8u;0@cP# 0_6ӡmstB3@`U5\Q)cNG'xщщDщV QC"A 5$?z-2~18GG"#utHۓG:i֙/kQG#M]#DG\tEGH*:B?cv&Ɯig5XC;ﴓBGH#:Bt9z40"]`#2t:Bg519sMGH'y #jFj {m !51gHV23"ΐAP>8sT b15Pu=haF! a4CqאйQC޹$KyUorGJ!#k{MYʢ pt i!u4%iHץ! )ҐLiHRIğp]CzӔAאAIC !39u 3.m 1yd)NAz.  _3Ң-j?JCZwwҐ`ywO i45  3ѐ8!牏NX0ﴣw44C; y <^3z^=Y3{5ރt{ktb}q|\5h#&) '6(DK'zi(_9|fi~3}>g>3|f|f|f}X/Uv^- Ќ;~5שlk5 fG,!by_)DcsxHZ]}G$")D燪-G@ٙ7Umi2p(D f|:B ^5 "( C0`@0/ aa`V&U9t0UŇ!"g a)!,}yuk>9K>B5exbs1[F[{dK* 3]t]tZƝ)WE<{wnU}=㼺;yud$;|H!}>χ>[C88'@[Ow|<ܑoA0?ϢS{kZZu!/Ԯ:ח Jc!C'\._O޼}U4>)Xh0oߧ(Z=^@Jơk̓#C.wtBy^AV;ךѼF\}kt4Zׁ|uA M޿=hPVmEV X;Uܗc;/&^de +|39lJgܕHYc5= `<<4?͌BE wb>5[5L?/c?7wn E >oz|1M` ܿA&QWY3`Ua̳#RoalDqnfs5os9Ui۩ a,1&OK~XI5z=e/£u_Mkt&*k7si#͵1H1H>ǖq&ֲ414Znhg @iv=]3_h*{LNJt}+tH+_ԉ4|S1U݊2i>L|Yg}3:Մ4[hHu]5?x)s-:a H~U?EE5SG/~, z]?qp:)qdz,cf1|{_4oYDcVڧb~:!D}SVExP۽˜c!ZoMU&>lkީDcdR&_ U?Q$|sk{u@{|wW,a9x[o孰X>|~{C :y3|5|D#cMNC{UTkޙ95׼d7Vjd|^R,8pl)}{5̘Ч <>~ |HA8rL~x85{[šoygZϬ'LDeF0z1SgCjUѩyphU CW84Ѓ=+ͩ?phf*=-*9t)Fph8y¡U-%<߳իϽǛW[EBLRYC#6pfy]\ZUsC58|Ρ[p= LVG9s{1$f"pCzCgph06hMoϱ\ZVΡN9C骷lqIorczW-+y}1'Zo۳UwrVgSozsxš|p\oNu&zs}#=k Y9#z?ȡs3'r,):k :-j, _Q5^/8t/ j,5F 䢁CۅC'V>/ 1 4M 9gد:+U9^8tC:N8|Ρջ3xfwjnڕ7ks,A]zE7^U'wkxFCKvBΡZFY:)C'?:M (?BC+949ˡu8ΡUwrh{9tágˡW̗ ȷU_ ϛq!XU.rh }zDΡ{w'.Cy98t];V>񹶘=á84rhΡ5A\-Ρ?Г>.C M+EWP{],phk8/VjWo>L5]ku\r>CL8Cen]tջσ NwkO2KN RJ32o=eOq^XNJ{uҪ{1)'G24"byUv kaƈ9v-_3ht0%f~UGSj: 0u2v ęT! 6YBt!B"y{BI)Q;A~؏x;IҋA/NpL~ވm3"LgDRT}EV^>2*d\t摑AU "ɨu Zތ ȠOhRq!*T=C5yk [Γ TZ2rJoFuBJ._= U}Vx<) rwi4gUxo^x=` Gk^vx2D*^J o{Ƌ ^2Ng5Ƽ ^Kxm]cB#^WGpx`pz5^k?:^0BzJDGZلᔨy^WvHo3x-ߦ㵫IzE:^#FR{݈gz;CTR+y#^?rkLƨӼ}w-skL:^'K+=},ӝRkJx4ޏw"6 .CMMhri_8Y_;Y3Ȩp0﬌GSb"05"5=f5.uށ*֜&{#@Dl uyOY g@ybO| { T}6A󠺆/gGȰa{4(&7gL=h{P=)L A>">S35۷ޝ1A+i|YbhШO4 y~[|exީ/2A|Rg5Dy|Ȱx7|^>A>?Q?<[g>/2ܚIf &ÁaAaSy5}b ]C{}!6R/<+:'[;b4J h sb݈-AsїhVBTsn]Ьؚ]䈝X"cSbb|I;; =+}ι/b~yhVϋد-pA Zfm}rbgA}a4ܾp~0+c3=9y MRyQaynyC`YCɬ4tmh&qi¨/A>Ia? 헾Šoۓ~auod >(AT,^0?xbE72~[/՞?]B<-;(`N>m[/f(vfsW>-TPvú4n[/A\U<$߫gN [/UOצY>Z|u_P9uy~{^/k_O VA||A;Bn_zxpV-NmkNyWWmnkAkovjz zm]ؽ?y Q+;^ ƟgMIѥmrnۮNr\;>oWrΚnvLww 7TPݓL0*cwzUeh@eLOJ>^| W'TL~YP"15\*հ'홴C{.jOBuԞΚ_̞!ńoB1#ӫ*-׻Up(|޹zޘkgUy]D]ߊ٥(Nz QQeA^ 9eKdnY'L۷۩pп;F;ubf>12J9tU {Vʅ ST0]9G4āf0oc }08 fRt\-=`Ti[/M1Y9_uCR1UkaBS/rRrr֝Ä^X+L6*6*Rʹ&rꭜ&CNt$9C'h mx''MstNp\Cp}N4^_qwUO^k?Nݛ3rUs|ޅp9Byk{9FUypڮ> 8owZGg*;5]m||J>K.^^}11n,sӷ}1p5{޿kqf[S2+}vItEZ34ڰkNC" 柂'C}  z ^=3>$oKBxWiG/#qJ_>5 xۃ `_?Qs}wΉf+CO*5>(sƴ-勍o响|Gf|)~6\kg5廍+ʇ["VͅOph4 84}ep艋EC\N{nPш{);lVw>[+w=r2ƒOj@[kA߯icpfYbi4g׬,\ ⛝|W|t_ }O}j'k>߭v]o}99|c9wk*!F ;V}XI)dyާ~7CTUF:hz*VދADJ_b +2锫Š0fCΫ|އXJLWЎM0YRg#!7v:R(,8bTy|4D4:x/2\`ZQήU!PDΈLBgϙN3"55 FO M_ h^ qN!f3I[)VKwmA]#ѽ!/T|:͔12eKѕ|h~ח ]b:Ut6eTtUB@[/ؾn1#,T W\dyuB;4$UkBEuWo[?7VU)c/_D%z0c(0(1"WFMEg֋St1CjSz_QKuዱՇig I)0ƪb`_gMo} 9X.v2m=g 9 n>+R񄥓Ŋwu_'C~Rb>жRO}+c>5S̓Y'< qi`> (^.7>u KŊwq,*vcbDO*-kUG*~xw\x.q+WŻm]\.N%A. \>)U:..U g.q&+\>$\$).uW;&q/k0IBx=P]2+Nz ׍lzt u5EKH GTq!IwRx+(Uܘ Tzzt+$!x=4ri ׻bY_y q8@V%x;c}Eӹ;gѼ;ѧ|ʫRsY7W'E;׺5}̍N:NgaW!Y-t%)Ojx砏͝%t~!ɫ&| 'N'!Ir8۽s~5_(Iϭ&:8p8鞥V@DDǧrV r̼n|,:t΢3[&̓N8I Nr4>Yxl(33{|Mg#Y0+}B 4~5=92ޡ 63O2`ԏkX9"Ht_/8>~4yw~{ƅ>4>֕aߙO={y_>@ rz'C,ăIzG 5_ ƛf&OpuRvf#KC |!qàa +~y0皭x<arľ81|{ק\#C%پN|px=&S\Ǿ IEc}="daPD}0`!sF4 z~р)Sf~9kBayhnif~]$k(jxJNn4~v=YZ[Z8K~hOZٴ"MqF۳?,h=4N?1ټ'=7v!+`n|wn?=ן~wn?g~>V~UV^8'Px0|(MO׼o47̩0@|0@T:|z.d: 0]'k:bQU]  XX_eӋ >` Hr) _/ *V|hb4`o7ژvU (QbFAᾥrFA(|LO7aȅ{>KQ}<u|L;Ӌ ('e~1 SBME7ʩF .| XaA%7.>oE!Mk}P TT+eQW!UZL1cD&PjWZ*vK|ތ]oG8 fNifdTU7ʃoTC7Z-O?|o~7`ߨ"~sF$yWhH|32ʆĚS~n )ѹP5b9S+ƃp55s_ip a۩BDJ鄯p ¿|R挫'FS@WHW w tߗ/_}αs{dODJ1xgki_+_!B_r^BhHFCѐ!qnnn&jHy۝À[fS`&'ȡa+|f|>g>3 >3{3|fŻg>?uq)^ڑ}L/Ruv<݊蚕sϠQG |@W"V 9ؗ!؎!bCCwCh7]꧜PiQ׬~ʏBvk3Z ƕĬTq5sGDQfK5(R *t}BP"+p_rD>|H{*K!!C* ~*LUUu[%cƇT܇T-iT1,|Htg_/_'_*yͯk7Cs+\ :_ƀI>@!1RG쿣|>χ>C|H}HB endstream endobj 253 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 256 0 obj << /Length 2257 /Filter /FlateDecode >> stream xko6PͬH=vkmm6+0VovYNǗD'.>В8ޛwG,Ͼ<9<:UE9kyJV2SauSdgՔT^TpX]+1h&kV&vm?BƒO h2UUL҂a 3\çP_DE,]Q,j zkΊm\/\#~iuGg(.5bkGWt}w)Ю_v<==[q/E$оL^γ%g8obk '9)F &6eW6Ѩs lXYpègs) 3_ܼ 27#[hϡ=0]_{goUB }YAت ڟ漨D:Hy^*!aJ*4C '$pSpӺfdh@P 6j6{=3 M`6KZg-v='V鮥]o@D4ݝ6@j&.>vmezx.U)+rNDqW5o@| G\VH%+LDD~yIvB&oY;ԥU(K p]z(FAY?fĐ[Tc$2gr V>b4P &>cPD4Wghf$[Dr'i.,FL*ւ5Kl.%+ gE݀gȃ?)%f"F}-*rBB'@ک%ȔB[ eEc* S0FSx%8`'AwƨB[͍6b =u6x?0JjcqϺP<؆ VS |q?"$B}R;/`/0K5+n~4.=ħasUqoO+rrkےvSWpzjdN)d, #VFKz IjQeB۬ğN/7֜vt&"6mYG|U4 =p?{a|0{ Ҭgrt'hĉ=IJ?L"G2O@PV\@)'vRdU,''CW#M{I!|V'Kyç$-)]9zOx^K$rJq6Ч@QBp> i^m*ZVwxW-i8 $Fzl`2MS󂺷>ѾG浌ὧ[Rp'1F#AVȊ8RQ 8IJ O?E0rT`"b{ \_QR‚kmzWx޶FDAJBuo 1_74jtkGa,HabTy 0c?LܪفϜh2|*ckxZ턦V%D󂳪oOKZJFc*r0C:%r[e4UMN* 렔AuKy1%ja&ٜF1k}]=NwT֥vr@zzKQ[+]5%rPgCT{jNyj婡 L>$ŌeBa0"OG##vCCt6i#n:qt;,|uSmkJu{fc1 :to^oJoY9=-9ݯNr恋|Y͜/R鱄^ Z,No[ c Kсwo`Žy~T֎-QS7 <>`,y0V m^ oӾQǗ 4/ɰϔeDrM0ߗ ,_qH@loSh?k(TbeTڲʊ/EdSFDBْ:z!XQY`a}T_5 endstream endobj 261 0 obj << /Length 2399 /Filter /FlateDecode >> stream xZK#W4$dD7f۰nm82r}JX.dE͎ z"MUW||R}%Q⺲贩Ej~{/`4|Vk O0%<x~__mmz 8=PO~ȏ2@B?qY)4j精N2BNӡ~ 6Ի8kUZ|o^C.hMlP{ -L~pAX Q[ y<Z,ްy.6YaUuR&6L ޖDS7bt. fnەkRp:y<`sm򌜃E˩a06RB~4^<&EQ VIUן '=fvL%;WSn!ZzzKA~Hd7"Hp,BmjF 5? Mq3̚³Z#Ȟ:֫RvG.B<$]>cůEa,x0n /!.!1U${wG5-^9ctsQU3<,$Cz|U8\ws~}Ţkx!BMigG$]쮕/9xe9%*~'b1XL~[4- endstream endobj 265 0 obj << /Length 2011 /Filter /FlateDecode >> stream xYKo6E,F@E&H-P aۍmmGzo/93$Z-IpGeq%?*R4e'ERB2FF%Y~(GrX>_>>sΜWBڈl\5ʬR 7|y83\kKmu1JU^>Võy<1_-M;y=1U63J: ^UפjT 75gvU˻‘Sw8NޒA{ؐVӉ]Y]ǃV,!(df^& 'EUZZ%52 Y|J6H0R4̌(Qߍ2WñQ"DҷxH<0o?뵹 i9/ pSUUNYWSZkT(Q+20H,FOYF TfEmwU+U鿳]a4G*Rݲ XE>3 男9у+6v#CO4y"ȉ3펰y/HVR6%h.Hfc2?ZwJ57ќ7dڷס2Pk7й(r%ʺāq'/®ZFr-J-㠍b7|@yf{)/f;dּYh<7wAӸ]m@N[_Ⱦ2< _Bc J" WQrwVD4dCPrMѰRl`i,\,'}!j_F<13Uxd4C_^ܫ}k.'I֯ e=W۩K^/] 8$H}mMLʈ3ۡsJ"|Jz XT v2 V|̼h݂j_Fx 'h:ezܫ}kezx*xv l({^ TKU] O& lgHf`^C;Zq^1fd1+ߌ]D/}(>dҶy~HdSQYm8x5֌XQ\޹wο!{ᰎyFѺН2%S氣MqNY|, 67P >00<'TuYg="p|Sqtu~Ǜ?b endstream endobj 269 0 obj << /Length 2282 /Filter /FlateDecode >> stream x]s񝿂5pwK̸IxR[>8~GC2y_`w,@Hv2[N:E5Vo'?嵬o5=ZtӋٿwr=Z-JY8g37Z~v!VʟDz?v sx<Rlo_VYMnu!vblpbMv&''ҮWSوJPM/崙֭FkRq(^Z"-*B [ٕqE"mļG;KZ(xqa~ےMu-ZB# .!N9q qRS}'d Yn ЂO/pQU \9Z2q>pKqJTέXu"C.0Ev[xeθɱ-Sm; tWQ%fF\\_c gwR2VF4}0K*gs#B4BWMf?&㦆խl$ T6RHt{_1ƨ Lg!{7J8j*Po\*O9[:B`Y҆:[zE w_ ,V6\_kQy`]n(6 f@?:WVޡ* lӵ#-z4$?L?w!crܟOMnH{K7!rJ*)1aB:ca_}\٬z!,?}O2m=,f-;]JܷB/㧋o$V4)zԞ[nBYA5H?]d%־\dsy%\)z(хu_KPc+lAroҳs"*uaoΧu FGt%{ mkF E$FIס(_[ F%urqRjMNZF$ g舅gxw /EvQ9(swف<9s<=aV>ӈ3 ӣӬzӺ(d@uz]@( OBӝ14vfc[T| r̲р pTjͩ ˙q8P*Xv72[RؗF[c xJ}ˎX"k.,y~qk@:t2s?g2k"B'lT`2E$Rȗf'v](¼a$,EKy~ *GWNFbާ5C!j ƅ$ cO~VEaRi}TH٘UO]iKa-F&1> ﮈ5߅ eZ%"&>h' >aLۆIQcڞ{wquͳplXSIV^`?)VZLы!#5 Lފ4)YIq̢bM@E۔UVk4"$GTk0BɦB;PkOڰ;gZ[w%ݸ@q5c=aA]Au[]bDմBk \YV|Nxthש "1?k@zdք~6x7줃~޷j޾SfC[o`3[5&wc ȔdATܜ䣡mD-ZlR~DmUɀ5̌hvU~g;6;ñ.Hi&a7/D]:8&N/wr_P9ߡfw3D|3Ƣ oO锵N?;Nw:0s}d+"%9a$@$BUM5+Y{`2zOm7pXѐb|A*~|Xc͡Ͼ'K~M_|Ԟu>hU endstream endobj 276 0 obj << /Length 2218 /Filter /FlateDecode >> stream xYKs6Wp܋H43ugIIZ-Ѳj=\I_% & ##:2:HV f]u=%g[=i=8''qೄtjլ#<߲Dya:m%T*O5"(V *wJڏ-ezB}g3⤀ZѮ!U|So*4K>ة?Q^εZxUɔt+ǣ|YN=ң"g*CrV˭ )ep0SCV{ {գ]qɜe!co]]L# KgJiM` T/;/K1kta|Sc ;tnT\Ǝ'8>1\#6`M0Qk-շAbR)} #.܏=pzS>m, qfU?LX[hP3r $B~j3^$XbA9& A6%IIs Xd ͦY Xr`5mb.JmsMי.Y_XFO ,UMzcENRf㖰^s5I>e)(Q3Smp_ N5ukm*8X_aJH]h֐ i7}VP'jK EGWJ ZV_r䞶Q8cM$CTA"*_ 5הi X@`772:%(LEy$ɼ#k0ޑd!~H2&JWuDtY|J_C~'&d:TVϺKr br7<΄ѺA~&dցM .y8O+4՛ӮxPE6"RD F#c>jvu@} s&' _†9}NX $5ƴۺ9uNNy(va*,X6Gؑ|УS~M5Lg >!Kw`1Sw8p<]O}3P<㦨kF{\laR£r[S;;2c>!ӳ6j R,/,o̬Dz. 7Untzx4Ia&9sx7qrn[kzf%\+ ҙ8dOfg6r u?(TܸO=~Tz0aKB|$NIǂθkd&"-9,s 覢ڳ*B՝w8; sUI[- |.2B-(x' = endstream endobj 284 0 obj << /Length 1421 /Filter /FlateDecode >> stream xXKs6Wpҋ4aougұqR4rr}$RCHY/v @Je;·.K"e)]ѹUtOk߈CwSsgv8NYpb_T>-E_? <'tB$RW)Z.=ULv 炎}> /ExtGState << >>/ColorSpace << /sRGB 289 0 R >>>> /Length 4077 /Filter /FlateDecode >> stream x[ˮ%Gܟ8K]%##,AB=YUxν01}Iz͟oa !׽}-?~go%KRpn-0|'ʭگXez+[:v=ŴY3t[be:z+߼er|&W|a1q-[)mz}U<߼1knO4n?-oOeߎ^l[j:usdŽ/^_\Nےo1[82CwLv=^>^ghs:C79\=Vf*c;15te7ǘ}XU8VuޝZj9K9 BߝE59c}?}{ǗH_M~~o6zw˯ݓhܙ"BO˯_~jm+={_:DO+~!{kڧc>-ο|>-F<7#XyLoGvdgZ!:^c}rr]mBgHJ*}3tjJLq4Ou>hDL_HCzn}K4s%|n1} ,:{cڽmy1v~zQtuh nJj1-1"zcM0>sMOauXNXh#/-qDc9ű:n[8'}y8VaZ{g/D]hbi!OLا }#,ӎ}Ks>:ww׶:;%?O38^fpE%  &t :lp¹D * lp¹= ݣpn.N48v@ǾW8qjCep9HtBUחÁ- k PpF*#)Zà% F3*W Ί_%>T"h #&!AnG|\1Y[@@zjF<>ažoĂaLF[oQỲʠ̀)i'3cd?a'#0RH9VD  ]\Y33 H-D!Ӵ H c@b0kFb?1Bpx&ctÌiT80#T].c[02/qL3^qeLd+##c##"@ŀ*T,hP"Bń *2TlP]!*FT8QbEE1*拢ō;*zT`ƀd@ :AIXAz[p_hV!an9|q XLr6p%7.烡]W]uw= 2`cl7}^Qh_QS~IG%FGg>Z5N\~:?~/#@uh_ mtvy~&] |s@ӟ·|#[Aʱd l L@.&X-i);{3w9GLP HlS ӪwXۓGvmBB›%.$Dy,T%r!!=gNB޼.\b~v,xy!bz;S.xh>%̋_Ih@ Ń />T8QIQS7j?QIhH W'/K%3W\R;W\񇥂*%"xTϲ*>_|j|qs)^5ʀ|qQ_6/5HxREk̾m_f C VӤ/d+WWKp[ x F\`\ jԭi0p{ɷ1|9ٷ,ZWy f- k 6‘`m#B0h0____o0&ѯPw'౧E({R. NMxibʗs*&ƪ0lb k+&0lb IJ-&0l i-&0lb)N7AMuItc<25gTM>ZEZTEZ$T586iуCE8iфU8.jхæe8jцu٤![Bѵh_JZtbТl\E/*-1itȄȔȤȴW%J* T"TPɠA%J *-TbPɡC%J$*͋EJ.*aTʨQiGJ%L3 40L3t0dJIafj1LLjtX]V2";ʈl*#62"Bb*# &2"ȲCd)&2"زC ;|_ʈl-&02*3ˆb #J@QˆRDF"0!H!(E aD)r#JD(C"(EaD)#JFQ8ˆR[X@H E$f-21hFT@Zb"3H&.  @A@  *T@PAB *1$2(2,2024280<*B *T0pPBB *4TpPBD (*ԋE 2*hTبQGf 2 @0C 3̀ C aafp"#.cN^zITd4օrRU/?CB9}VeoוQ endstream endobj 291 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 295 0 obj << /Length 1188 /Filter /FlateDecode >> stream xXKo6WEF-^Ԣ)bbm ؊-'d}áDyci@~RcsR\&a"q__ |!X$^YTY3Gp';?Heʔ@Tc-T Ŕ-wWPr5 ƤF2 S1Z-zR7(4. QZPY[Yk5u$)]-^[}jBcavF|StLh҆@kG=E[wa|&#a Dsι?J"ni21OOTli%ڮ=I]e"ѻE]O_ IpHŪ9f@a]A 4oJ-~c)WR(iJ ïd(5JßE,J-dK}5* n%R%J^V!8ղ2o3+d0lS6 bF?簈Y7Ԯ  dPB kgDZBԷֆiI"0mѼ47fm >FA/H @ @a[ż}F?yA(IP.9SE,nS{\0"FH%P,h68}mv,`Wh ڼ x2j^%iՁkO>@| cDr<t]J#n+XTǪֲ(7ב8GÐ/x¬hZ38C$xNuˬ墓ȥ0hz$q+y[PQ8jv6[!X&ZBĠ7AF]Z_ừoBy,_rRlԾ06˦vc ) qHǿݫn*֨k E}n'O*X > /ExtGState << >>/ColorSpace << /sRGB 299 0 R >>>> /Length 6430 /Filter /FlateDecode >> stream x]Mqݿ_1Kck'bA(E!>]5{B޹=uNMۥ,,//ۺK7},?.CY~ |P0`öJYzuv?0|| /Rl6,0x]ml x?oqa<ޮݽLΗ?ܙ|Tɗ_/dx۾/޶cyY9~I6..pӏ\oΗ׏,ˏr;r9~^m_Om*y݆}78CRڸ@oq+ |6wOfv450JuJT.W?յՏX aC~jw+E0ķ9c_/{~%(}s/^~{!\yDPG՟޼}W@t}k[ʹV[}Pvlr>aiN(Ŀ}ۀ>䒏a`!Նg$',l&mGX,viA.v&9B酻k~k+XhlQ[s!SnPOF ΀:5n;~;:խN:$Ɏ1v\aR+2V uuflC*qp*\~aM,!u o<4۠B5kX`v\))VD2jhozk9N#>p*?O-4BWBt7V%&ou'd)=rl&/Ca ia֭aE,~뭞Kn7ϋ<|KM9R;eaWCZTy9%i0U[y;AhpH!\R2ȅaVRT5XE\} QiVuuCT~@B!bELA}"lA9'1XT"i m)A1a/ںtmcTǀy bwnc<6 >1XxYOy g?u#åyzv4-$OIuVr&<ȩra+HGVa統}VW-Z4XglM5m=^rtK"L}`V~^(IaH5h+<x y <<<O_y qPo _hp}yHD>r =_|?MNΐ~dQA8BC4;2? WG?w{v_f>|8uYdEo$=J3Yd=RSYo%=EewуI/f=f֣Yf=nY/g=}Ig|B'RԪF&9 [@*5_5Klgau%  W(? t<1 e *)7D>/< v`X1a7ǜ9_ K>;|7,1òz3,1Wòzw 3sgX1a?L8`޳4<`&p|0c检3|<}Y/d=qIdL;YeT[IevsY]`ҋYOfh֫YfpYO_vYg=~rnf$*ImNn)5PJWjRv~ G9}OI?&g}MOlaSdQX>5 g_}|Wo_Xa}՛W~Zy/ 3O: ߿X~k鳿|˗wW!'+~ͻͻeY/Q8kqL?Y's(O| '}oG8 q;$~U9qD8e8"t#NOJ7T[tJ~(򧞂ҟcPzsP-dF2 P+[HaX&l2ұ9LgA7)8F}p> {w8 w*8F&hN?j"opcTp8Ə[#{^Ý oqɿN-FnwN 8g*qq|CqwQ{a b ;' |` ,P 9&'Aa~ o'OT>NNKT'n>8)OC |HYĥH&i"xذ sJS)My{".ږVb*Y`[q[x)f)bAx8`j5X-|GOh=Ȧe qNWh(^IGwޣkpKU\h}<˞Rlڃlpo |v1xli:?iڧ=Ǿ4=H|R N[ƍ%VT3LF{U{eIP(h $qI{Ep;3ƭh3^(GHY%{e;3){})GׅQLkţzǢħ=ʱ%nmbU_'Y v#0h5v9 Pb692`~q7=: 0`1<=!{$V.}_'E6qOuq<)ֆOg `~q_19v3/(gGohhϸc=c H|V^aHd=c3 "Iž;v\Q4eh[uXET~-2M[$;"*Qy;,"*F-5 r:l"*yG"rF,I%ZDeA;"*aQ)&{J)r8ET )GJ4UaQ[tJvآOTS`pfQ%E'_ @p5D OV5=;Sxnep[S /a8TaoaySU)-0Td:դ 20\SSpҬkJauwC}9,.Ve)aEYxj+>T̈\'~x!5yÕRV~0<Ō3@:ټ> $fP.xV0~)/>F/M/nX+{crp;walascV;S[`S>_Q2#&̌733gϊ +(ȊXɊ'+ʊ++زˊgŘEqfEkVYfEsVYqgE~QIgş;1"w#KhrsRǔ;q,wl8IÌ̌Yƌ02!wxȌrۘyOcƕޘQN@rxyZcCSqƌ83*)36D4xR4Ȝ529g2<2/yMz?<ϼGfr _nZƌƌr=1flC*0ck|V(3v1#>3VaFc^aƺq~(3VYYʌP{h,p2 3Beg0c9JoeƢ/hLL $XIpAUva"d50V":.LL.l"͙m$#~)3&L:3J!+4J%+IJ(+J,+J0+ŋfVlVY gtVYgEN w ȝFDr;N(wJN*uZ˝Z2a2\iߤX𘌦Kj3Xg1MuTm2v<&éf1N5 K&:>&éf#JpOS]Ip+ pT d8Jx ZoT+1NR:T+ۜd8JmX*}2*8'é2m2*3:Tq ʌ;Sf&ML81uf g%BVYid%JV2PVJYIeXVjYe`V%9+ͬD/J5+٬tJ9+鬴J=+O@r';܉N%w2IPTr';}3>}맗^^DVTd ?_T+S~JoIl9/燕r:+cW]i?vǮ$"29(Ǯ$"#oK@c'R˟xK.a,O<=%LMum;WכMu&:UF|N'PgFׇ9i44&]A`uh;G>zSB#)Pw(h:4$FIx'|K m:.T7[&Rem:.T7[eٖ*jKqRul:.T7[.@ʸR/ ͶT[-UՖ*nKqRu\l:nKh-UŖfKqR)-"ĖjfKlTp[E-"̖j jPlklɖjbKjR5m1T[E-Z[ZR-l!T0[:GZR-lWhɖjKZR-lqT(jR$֒-"ĖjfKjR-bT[E-J-R-BlaT[E-5yl!T0[[jR5m!T0[ES~[IjR%[E-"̖jKZĘ#R-BlaԫiɖjbKZR-l&ʔjbK^VKTP[F-"ĖjfKc[F-*ZZR-lBlTs~-"ĖjfKϖl!T0[E-"̖jLl!T0[UdKjR-BlaT8TbK^xKT[E-U#ԖnK>GZR-lצ%[E-"̖jbKZcQT[E-ڜdKjR-BlaTp[xD>^ endstream endobj 175 0 obj << /Type /ObjStm /N 100 /First 863 /Length 1885 /Filter /FlateDecode >> stream xZ[oF~_1ܯB @*mufz~ǹ^g:ATH,̜9sw.sf Lˬeňwf*JA3DȼM,D:MbcI$<Ĕ$ Zy<-^Za9ANT°$QN{%[9 ^Mtx)D?(_~*xD7tVV?Ӭ,UYPH^hEk`gM Oba xj$Ǫ{pѠ D]+#3ɁybVJ vVZk"6Y#-0ٰM`l 6>%U0a=0+9L=mafNDmsta@~s;ZB: <`&.x;%Rz 0Kb3x ,r-:ad d=e>IH\5hQ>F!@`D:c(Hxe BŲy!4|0 QmD+R  m^0U2@ Nѥ8yh"؉4fݟAyH=tݴ+n0Z#W=z1)u(uެ 50KMѰ&^3ܰ[o,0qżY [q&uu^,LvVLiHFḆDxLX-\?+p* E0E9_.PUS̊3hV(y}*D/Be//fgєi!.}]S> 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 306 0 obj << /Length 1419 /Filter /FlateDecode >> stream xWYs6~ׯZ0 c&MNcڝ>$y%%Rww @IVO bo%,DT2JdLeZM?^<;2I!֯ {,R!R2u'KQә*G:KUפwV/U7U#ET(t@EjWH7y}1#,&?&@8dtGt(+R6:$O F8 "U"KU,W)YC!I;Xxm4k)%y%nNq%kφ̙Ig,ZZǀJJEch4[9[Fj1a E DYTCT(* r8y\m=!'F˄x,1*%Ɉ]E}=7^DGT+:٣8} j,2UY4 KT cW)5-ѬYDC0|ɥ}I3d PĂ>(~mch@t9< yji)d:ݙ gA86A=3lR`rVZI;m$: ̩0lV5)Úu=Zɒ88yG?PɌμ`*`CԻ3-uCYVT}_]Tc_9PL㻵ԤT /O]tv"Pmst7 @ ~6'b&:&LKhHt;* UܰRZ dlnxsfpP6,F)p ! A5 ,Hp!vr[ϯ). UAV$!}ymeǾFXAZ&?iV8ffpI /%R,~]q48,̂j?0jD:b<&,']@Ij+$l?7Ya#NkZFry{]A7-ثlT::/J5Cn;_)+4=0"BC&Au –*,O> /ExtGState << >>/ColorSpace << /sRGB 310 0 R >>>> /Length 6554 /Filter /FlateDecode >> stream x\ɮבݿ% ;l7M0%J@Rhc{EYpaYȪ9GL?L__f틇24O>, ~Tr)Ӌ_W<W2[eKmٲϗ:C_/eύaX'ky)Wn͇o?_ ǗMK1|Tu^>{-?v)eY orsR)vm\a@-ecLDT15dav(cHpS ^+gk#!t.a6#ܥ7mPQ|[[+DÉFqW>ᗲ]f;3?^_ W+o\S appp@A VscxH 1xZ }_{z _ e_/[#|,CFAv χCK8օY,Jx[yQr҃σEPD`O~?hNa鐽t~XH0XJ 9/30-t>8dCG䐞(pHc!BIM9R; rvCTy9-iwCy;lAhpD\R2ȅ!9\RT5XEQkiVuuCT1"PDbXFSoo<} bNy H18AcNPy Nl9AP\1Ly :A~X_xzc?xAi+nóN!y*N[VAi`g&xB7Ѫ統}Zf-4uٱ؞p{uY2>!) u!ǔ+A=nv=^xl|cЪK,p-ꂽx -A%m` L:a]ත7VuR*+cY]; xo1Oӊfu*̓'^Ky1f̻3og^ϼuI7$]uG%Yd]uOEY7%]uIevuIe]uc֕Ywf]ukֵYf]|IWgݝuyYgݟ6"!IJnfV'5BMJMTjR6og=ÕO>1:6UXG.Po-A9U.8@ (Ut?G?3?n?K?}ʐg/3[OΟPF84`a-kȯ%ҹH=A~.w\p̡^!nɚչz|VzܿX_#]dQYACC40?n:9 a:&|6qz!뉓Hz$땬gz(륬Jz,뵓z^z2ͬG^z6ݬ^zz=s?Ov#5#UILjsr4HJUjRk+ dq%  W(g/ r MU( ?4,1aǜO%s>:|5,ݰǼ_ ~rͰGǼ_ ~v1R/3)VsgX1a?3z0〩^;z0{_848f> 1Y}،g>L|4mי3g=B'H+YdPKYOeXk'=I&d֛YflֻYgIo'=zY~ HFjFR&hlRګ|,5nW'5&k_5  Vq!Ȣ< ~;{ ֳo߼^;-15^~-3w5H<^ӯ`/=뛿 ׿z;}忽_}G}5}5qz_޾y?MYe5<7nJ G|h&MaMM:aI&8"8gÐ}3t95$G;9$;~~uJWChHU Jn&(GJPq+A9Vrĭ #n%(GJPq+A)frĭ[ k\j}øN׹ ^Q:ø:uWw Rk j [b_'7 |`~W6 #z_'֡8aW|;mR dT "_'uC)C"VT/!"e"M[HCĊx $!&?DV5\[F1D"C!=t&FyXĉ<ւ&<q(&D"1?UP&{k$f'hX(DP@gLc>!bWD!52Ո.~$f!b!@eCDǗ?!5R^_B ":}t(Z#_qeWq!p CDCc?"_9q9ۄ<|;qхߪ#U58zzY`X'l: ^vl{;λx?L0C27mdp,LAy-N{Sɕ}=Gz^<~y{_'+Pn:PF|E rJ$[# ƿW8%\(lLcPx xj;჆@c f'|QYh^{h:f:VV`(2 *M:&iTC6Šp v" N0`/|5`QßYqF9?fn,N0t1t68{YqDB 8X@Sku[A̳B\3}J#P`(\_zپG}DϯM0Y`A0Zg];M`pq/4/ x4ӻՇu/hBf]};m٢aY> 9GiWb/aeMk4,MvآaY ˃>pe%%hXuXaYae5fMpeْhX Dò5-l "=GòA\%XFϲTh5;lѷ,`B=h^{ ǿK`850<9ڱp< +pL;*íU13ܪc\a:c WSUYj`84c pMxpMT 2t8::o!p Jf4N8#HUv_X*2>}vuY8C *fD8C^FH^elW(T t=Rp+*f$HoA|a)^]QarřC6upmml+{erp# 30ܱ2+g>-WŲpʟf̈13&͌|b"Ȋ!+8"9)hɊ(+ʊ,+;)Q1fEyRYfŚmVYgŜuVY{RY w GHrǒ:;1*w\#䆯)̸HexS*3rfΌQLƌ+WzcF{'nc]SqiacN/rɔddfk!9KdcdxKt#3 (3=~8]Eflb QffVfy:ژQ2ӘQv2c9cڥ3ʌUGQ~0fġ=0cf4f,+2cw.30#Tvv 3.PB@̸ 3S3S +=3 VҝiTD]{Ld䂉ȴT C23ibĉ3>+J#+T9)RJ*+IJRJ.+R<)Qif%zRYfpVYIgxVYɟ~r;iN$w*ɝNrtR;ܩN.fx(3ʑML W gN9i~'xg4Òx?Np gI;qϺT `JxZY+>؟R:Y+`JmX*m?+82u?+3:Yqʌ;Sf&ML81ufg%BVYid%JV2'PVJYIeXVjYe`V'%9*ͬDOJ5+٬tJ9+鬴J=+O@r';܉N%w2IPΝTr';=? 뗗_^^Lh3Z_i+~/Է,&wSaӋS⼕ۼy+y+y+]0oerP$"[go^AcMrSXzSXrSXzwNaW䁩CM~na{|H#lT#A6>j8/$>zS醷+ٓuHK^PFOZ2j4}YڒW#ԇC:?Lp91Z2jL4}&iԫU%SF@#GpNLcy)ԳksG}WԫfSWԫf=m:ze]M^]SWԫf (^YwSiԫbu3ʺzeM.^]7SW{*u4꺘zuL.^]7S2$@0Zz-L"UW#ԫn1Zz-R!zW#{.5z-BLa^PSF"kb3vM^SE"kf_^SEL5z5BM^SE"1?k%^pSj2Zz-L^pSE1?kb3ɴ&SE"kb3!kb3I&SFW#kb3Z>G0tSF,.j2Zz-L^pSE!?"kf=L!^0SE"kBi#z-BLa޳تԫj7Zz-L^tb7E_M^SEW#km7Zz-LgY"kf1ZzM.C~SE"{5z5BM^SE"!?פz5Mg1^"kf5jz- L!^0S)kb3Zz-LX,C~SE"{nNj2jz5M!^0SElc~wy<"z endstream endobj 312 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 317 0 obj << /Length 1439 /Filter /FlateDecode >> stream xr6DMMmә֭:MɁic>d#__bAb+9@Z{ 27-&b|Z&W3f_g?]gq&A ++ (J8̺ŜlBYnGq'V%&.X$of'ם| YOvnaE) b=5kkU^4^GDvJd;wm4淥-jJ.:bv3PY|FқjvY{)Cɭ;ī,?܈C J}K8;FA$;r9hB>!OA{ۑxB9Ҥϊ<]8GL;;,OȉsRR+"$-93}z{ L!>'g@˥;}J\kȡ%9)',5|yNh{2ZqAgya02 O28VחB_B(nvfi1=f9! O & 5O01Ogv1ϙ13AdTZؕQ^{Mp"_yit"%rwcV%$#VQ.{-'ad-8  4xZ> /ExtGState << >>/ColorSpace << /sRGB 322 0 R >>>> /Length 8883 /Filter /FlateDecode >> stream xKmUW&4YZn")% AuDYYccGD:8g֪Q]z7zGϾyٞ۶=?󋿧z˿>ǿǯ߼ǯ_z{!QlOGܻ?*UW׏yۯKs[Z{-?Ɠ<{~\G~O>Qғ^5^Z+;mǥ~uǵ[ϣZO'?^|qO稏v>k^z3n|r)yiKl[gNcϮ{ ֤_w/hNN߻U+qhKj3?/5_֚߿S&}Fn&~5rۯO Yxx׶ҩЀMFO/rۘ]eϣQ͖_x} T΍zV/NeC,4xҫ^hNr㢞?F)EJ%}kw~t?],A:}~R%{ucxR*I]Ejc}/R;+4=iZ5}ht{b4N2_σF=r|E}l}PݸSw\/M:UN{CIM؟m_cOG6OorVA+]ύFJztz6|(J#޵_%׿҈No=kEG\&tVt>2srFn w:,J}p/_S7P+ҍ,!WA/5k_BnyQz/:RfnZ# ? 7Rh:x))y^-rA/3RGx)+lVjÎr{/3NzR:Uy)]2ceW(h﯎5QΡK2EYQ2ʒ ^%n٫ ^|gEX%:UI>zlFtxW9Gt\שǗ&6G5$~F-n u֣ш3G0"*`4o4z0%;*`% ر^1&IH D@i]CԒlɽAk{oۻ tIӮmFhPNOܺHZ lѾ(ZQA^ǘFLCPcg2bj咛@c|kBFm*ulm0#Ffe)g.So1Wj?}E8=z(Tjɩ,`{(l*Xu?gm<Ļ` `# 0 P p !0!P!p!݀h0^ p9!w B8p+!C֩SgkxA]|@ܨȍA,| . -5s hGOnhhCPP](!+5oҎGPZυS󑞄 tDqU@_rcM)ل:M28ے\:  d[(Y{. *|$̵$#aޒzP@P'! ?R3IhXQ!g$ʾ_+]_v*PޅAAAAAAAAAA A A A A @A7FGPGGG#F !RÀ8+]SETw>rd|j+;y)J5^+R-⧭4qիG-VkuQKQK൦ QKd^k$^k#^k|+^kd3^kt ~\k>oSr-z_n^QKeQ-}E-IE-9F=o!ՖAF}-.PޅAAAAAAAAAA A A A A @A7FGPGGG#F !RÀ8+]噽{o r0{M>m|O1'*kz:p2ו̰kwpC?xA^40@FVU@ahsgÍBi(Mh2Xߪ"6ЅIyۖ='sVh敷@RQpP 1|(^x\'^r$Vܖ8O1^[C~ږ5ί~+ ZK G׿$9)>G} ȉ-WE[ +|`/|`,ñ!å|[q`9cz7[sy3$`HGY,r=xZz8c|cKNf4S଩`XipesYp@͈YE0X^AYpx& 3xeUP @@@@@@@v:>BFJNRVZ0#P#p####!~xp*c xw+ץ+m]G*?}]yoc7ƛ5z.&K !BiƿiB )fT. F,XI%*||:lM[pb+&*|Iaӎf%σH,5R35ְ@iͨX0@h7Y貎,|.:dںr[q]s=;eÃCZ6XX $%  Kjv=9$PޅAAAAAAAAAA A A A A @A7FGPGGG#F !RÀys S87Lue ]3x>f>f_BBzZbjrz  !%)-159"("H"h"""""#(@@AAAA4`4K#Nw+L+{CW5]Bٟn-S&e%'˖|kqEAW3v$w(u=7ɗjB# h+Qmɳv%s'(דJ$G#a+,P;]2~ꌟRMV &M!5[n۩3x =Fi@p=(s[t@-y<Ь =,ccc履+V؃}k9Ȭ2jdOy B/=46=``ۺ;40od-56~dE < 6,b߆`cWꌁ!LAfWy`ZْS=7[SuO/H98=Qي>r-+miYp5-(ރ/m u?H'jL_R0n| [p^kXj .N  ]0APQpQQQQޚ3@@ A`AAA B`BB C`!#%')+A3579;=?0 'm>=x[?o&|f5akP,|~wʾ4bM.;-EІ`·/A&_k1=xg*`ޙ c[6tsM?wg:=%[gK),ka_6ZG=Z˵~S(QHB BBBB  wAEIMQUY]aHh####@Fp)aw 7/X111S!(w!FF!GG@P@@@APAAABPBBBCPCл "$&(*,3x7FGP{ޕl@Fp)aw 7བmބO ̣1aOu>s}~y[|iPYtǵCJ3LS+N:k92=oPg-꼽T:qX!X1u޷ֱί7&Nm=YOg;opE| xF'1{y <dL3;du1f2c~캪L1Ue~](s|=,u^t93%ݟ92s\er(;^x8j3hEiޟQ/Ϲ<} aYjz$0xv' 0eoix4Ɯ}MUJ0iBsC?m3]1gv{s.ck![~t?e57Tծ;~]xp wYymg1ۯDmzNNBze*L+"fX}k{*lxEg^楼Y=/KX;e z喗%=rNF z,yq(˲1kewOclT]S' ^=c>;+gO_7v/ 3z62tm+)͖ۖҚ]S]kUS6hfݔΘ:af L\UlR֔.~ln2e4MXqH^<)3&Zb|Eo>fs'( D26n)CC:p3::.rT6yJdAӰ}Ę809Md#Oi'z;pg{0LJ5ۃO0H"ZTx.JȉW@H HHH"H*H2H:HBHJHRHZHbHjHrHzHH@H7EREEEFRFFFGRGGҿ9p $iAN:SB'N :5P/SsU3BRÓ";xɈ㊨Cz+hW*#aʦ*)isL"U$SD,i-RZ 7G WK&]u"QpWDbgjX~Ka|GɊ;l\u`kÏa=^'Uyksz#6+Ւ"%h[cM]qUq`hckVDz=y9r&EL +oi'ԡШHwB@@ABAAABBBBBCBCCCDBDDEB,.02468:<>:t7:t0pCBusXСlE|H7u˒]_]{mBV}5kpok;s֑H½w,ýzn٪̡2׳<k%ղ!$n~?ʳ%!=mrͳS޲!l>Xf YkKbٍ[> 벭Y*ݯ#g[׬JǍ=qòadW.lԟkSlԳ<;SlM_β7^閲T>(1.+6^-,;YD٣,e],.ycrr4ƧM9r9@N>f ?f ?f ̳}D+uEb݅!=sWn/<ֿ̗iI٘P=ci{Rk33++Qm-p";q#6'fJćDKP,3e܉[D xH,:t7:t0pCBusXoꤒ`M+\m4Bvk'dL.{ f=ɽн݋> ~~WɲCe UW CƲ/훒>lE.{ )_-,{ٔl+{KH-̂rY6U|[}~KSW%s˶6]mNQW 9{Y*З׋5euyulP$; rW]M`zҭp+=,ˎ Fݫ~%ܥ~~g ru7 vNe:}vR±YSaWF'{so8+ywU񍈌x%M|ݕ*y+ug]3 i)'?hDf$vrg(]?e,*i !oJ]g> 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 327 0 obj << /Length 999 /Filter /FlateDecode >> stream xڕWIw0+8 E,_-) M}%͌LD3ٔ{~`g,Zy/7~EeEE/k&3܉.m4y&L*i.|'$Փ$KI HrceT& &d5L<vWRGiŪ<핖NqHO" v"䘔/g<u~-]ql^D+ľ{_؎Q2@ `FWXKh$)(4rU ˽&o܋TW(Bpo@ibӌ2WHàxjJ~aDZP)#"beQ́>f.QN** Z# b,0K iACaUpoB)zf"bRi7Hٮ J7tÚ1jYPXkJ.r9`?Pv)J[wöhm`VnPh"5^٪N0Qz<Śgw jcy+>5դJİ b+&[FƟIg[R)WkS{'`i҅[-%̚;+26> $ E!0~6mЅӬLOYӛ9: RmTG#31Cem=5uC9ޝ+uV!  :'UVD2X&I=hqeztSȣ *s级 JF@cmԗ T(eGm4Ke|0q2> stream xZIo#7QZLqg%!!@SlJdҝyܗbI% KU|[aqkCRI<[$C- <\nXRd?0ŒHaf~iAg=wv~_M{a*SR?as']) ` o:DswcFR1^,1&lz*@Bfs)Н-둇ó^ۈOFJx~g6kvb_YY>}OiFnn3M2-ڭhcOu +5'}ᆵD?/of1aeqKi0Fx鸕rf`D3B bfiwTl&Q+c):lQ㚖 (Tk%T^͐*$,Z$YeViUk4n[G|2`[UMQ9Cnihe5~*sD7:6@E*mn#,„OOlͳsW{hߝ~:,`7M }Ob1!C=h-@trs>4 ̕tظ[&eG-H#o/ޭhoe~=No^z!d`>•7}c9OKH8$(h}Kֲ.WТ1m(p>\{rk>>G(5:&8CAVGD]T&bH?8c;I Hkq;g(x J5)%G PJ/̢Uq)1Oo)!Okdǫ7H& 9Bn9 . PN1Tdxr0m?+cXcPa<|h |9n?i\ iPJ0SMt @dfr/I#e0(InLEr1pYC}*\*v`>6bw90x}n!6SCnW liWl YbDR~wm,\*R/Auysp,JaggD8Q֦lMxpJrŔuMaIܾАKՁuj㎆|>mohSń n[\}P P~AQ }+%"" ~|{&$s">(scJY{$* tgN8`t2L6SjԨ-|/>HP&l^Mbއ\M79Uznԙ/OyڨJ~Zl;ګY^%uZkH:̓3a]I/mδ'rڕBNW{vZU6LH(0He=!wwF endstream endobj 347 0 obj << /Length 3125 /Filter /FlateDecode >> stream x\IsWv]);JJ Tp?ʯW㝽_K•1S{ґ䧯\ 51b`nCCe4MuVK7n&b%"JJ#d%֑ρ2b!bD9if;?G ɛ$u,'O=w5R!E\_N^ǥ\ ,5 agO7,$n6͌k=G@Ky~Ä1]tOoWM{wLU|kK\~H\M-ܖxGo\=h|락dnL(FJɌpĹ,/I">TT.Ғ])AZmRt1M6 ݆%@2 )B`%o,X#łJO.DlbT6O>/g,zb Pє?xc"*Om-n]kTMq@q۠G>x^9w{^2$=0@Lɰ˜ [0цfL]8pъ  3PO`8܏Aٺ gbe" XEn,CC--GT}[DfA˭ã6 !"h@!=u2{`{{"Ӥ'd}jSx$D]M^wf@W&" F2? 8c_VL^e~LvNvXQ7P@J* u@:Q =W+>fpPT1]‘xHf5GjϖR2Q=kˎ 5?}[1ϯ 9j-\VP8Fř.xĒDqw$c,H~S%?]!,z_ތ1Ʋß) `o/2,> <ϓxRhv~[Ù!T%EkpJ"YRV9Td1 /+3/|˸ ͠96UO[U# z'W#&hLY6u[ t針e BւK*tSL4 >/=0}HprFl/3yUcMaUmz\]hyo+\7xCMgtuqAa yyw`Բn&-K yi},J¦[KǬ"Fq po OW=Ѕ D%g.;/6+agߍ!X  ^}/'uZDړv;ьe58Qi^X8OBTjd59 Nfm9A]Q0t.tZ姁B.wB"ީvc<ϸ '<.!XQI BU4y{m;mZT[es~ pp:YKHr + ~ZD:E4՗bcسcb&[CCQAg K:cіXPx4~v`X:mHhbmf(c6 }ငP 3퇜7dރMۘйݳ4tH64/vk44I (]5;>xխu@``%=OZ6nVJ\qO6\P7e>UyQ}b J"5KG?Q^j"1ҹQΝ0.]])Ih3 Hǃ>ʻG|T0 ~*m܋/X_Y &cfH~HF 3X LDnnի\vrd;Kh~ʱ1aS$"H&8F]fq2J{^uj7?kEE6.j.b\h8$ngs7\ƃ _|QZnF"qx+jݲ<s{D^>.6 0 "JD@#N\Z`Cs$ ]*\4օ.E 4Hlrrae׊*2j5KkUqYkqN4mD2)re(ʟMZR&UseMQֈX] FXlu/+}gGCNHn,fgm)eӱHX},ؐԻ xIJX1|[\nRq}T.5%3n [ q`q.2d- ֽ"-q꿊O2I1eMkSpMl*ֲHBJlNh'*"/u6 endstream endobj 357 0 obj << /Length 2601 /Filter /FlateDecode >> stream xZY~篠<%4RCJّ7N‡T0"K\5$r4@@-z8i2sj!|5.sVeb\5l<_&O7/ߤ)ݜJInc<^^*?tr짳t;4&tbҭRZE*pc|]ߞƭ!Q fCQ$do0kCo/(lH-zce':F |R25P hB* (#Hmv!3M~iVbEl3uθ< ,FTkyFPA?H *ըr 1fҒ\B"]Qz [1y0<> wSRC쇆r2=v~ÆDSfw^Ⱥ6́jdE46v_(X iT3EHuN.u*9|-C>=4 =k25/z{(_UXVQP}: k!ԞYaey?79#r;ٔWu;/ig|YWø%\Fs@2ٽ݃':4,N2%!LC+ta+Ah86> EtdJX) \ȤL!FyngP m=W6XQHe˝+ fb }L9-}A7)X y "՛i[[哻@aKsu/\/ַԎFxix3)bnQ s5F,+.Xyxj,wɿȍ*L`b8%eN{ifۣ@|٘8gv1񶢨ԁ~E?MnG~1 Q+smns4v MaoJ`9zKiUL~uRJ5' diP^P*#EfiN:Ek (tИrŶ~'yZ"uI;wJ;/l6S5Y@Ԕ9SWI£%&{C'W8"&psvxJKV6 CX^gfLL6 N|`'h0Eyl#|y?w2Npk{=Yg4o6J1 +vCmsCXXVYB$U#BY9lK+bE/lLe]?Yyy\5M _ЃI6(YlpIJ^@xA C̞RLG4Zs&JӿXTXjW&B+~s\BxT^Ooְ4 Masi-Llnkd*#ܫe 3Ǘ+tZ|AsTbZPK{ vFhs!}+XzQs1zf80chqHŎ>45Ž^̷hG3:ŗQ:!afSێTl- ApE&8FYsO~u9&?Gm endstream endobj 361 0 obj << /Length 1598 /Filter /FlateDecode >> stream xYYo6~P]bE,K }h)vX HrGj)^Zh@s~Qy7A:KO1H8.lL) ˊ0/`:Ά'dxMj7·wtcFGÞnX8m 6 :25]\8=} r d>*`ٜ=\Χ[$LHA-m)]HGi I汤=ڴ֒m+gn3=M .I1< d"8ud <,'IH+2aaAJÔQgQ0>ྥ[If$ep2mu‚Á9fƓ ,qBRD1IbH!stħN`qOQ"̘>&TZ\ۇ8W$oirpnG tбn"⁓̀Twh2r Zdjp ,0czbnyWaKK9o} 2f0Wdkiw*֟0&=ݒ-@ֽv tpf/ A_g !n7maV|IEK//qkd2yA%4$ [5+I:=7@ 4c.PV;DŠto #ysbMG|ř+ZiiK6+wk^ ,KX~emM3PRP'C)~ PT*YGw;e;4- OT_|6iySd5QBG[}2͒s杧-7LENעEEk0Q7~wLJ J' "jg׈Bfgz#oѲ!ڊ,ݟw n \ڪkx}X|kz*j܃LwqK2kʩwXw^Fl7RFI*;FpRgk ꀷjUe{,_Q7{A k7 Mh`sU";AidZD}+OXvޠ.yAۖDЫתhL I+:q>oQ!4q9&4jz JE%gKyDWv#{]G,3q쾽Diw&pNufָ۝n;X㦡1>?^,@Ҩ6.J}9Dw$YGLp:Щ;ЙkkgTO?٤ endstream endobj 365 0 obj << /Length 2511 /Filter /FlateDecode >> stream xڵZYo#~ wznbwd= 9C+qHsFF{h~4GuWM#V&S.ioD{?7 EfZb`6-+tYOog5w޼c<8YYb);_hŒz/p=پq9ygV^B+ub{Ϻ<Y |L|h2{Af1Oja洅yf_j>6ݺ2o.%euLsEZN(OOjn+ߓҹCJ&XAhH,M̕%\KTkżfNTBEYOLgq2)ʸZBݵ Lň.7r9ba)%U3!.q[Dz$"l =DjiJRvM.{Kܠqp/Y;Y.4Kqiڙw!;8̻XH ?km=pnyg38V*nJ+[9մ~eCFp% 3x;o#045˫ u&*VH!{ <^Ð.6>wa8X bom"C٢(hJx㤼 %FI31nw _?X%GUr3Cc%i2f,Q]xHQxN%;9 1Ya4[%39gqV |oId ,^Y0Fk^G)n|hMŒff[#H{ԳqSu9OcV!.XѮ{6)ZΊv;Υ}y$otQkRn +O>zBdT)1$8JxwGp wrt&%4?< plc3*H-j=/Yztd&K)BK YKe塲!g5l"b1O&٭^E 6+c=ع(= " Je#Q<+Zl Qu!B+3%  =Y"hnգ-\ t0!DMCQ$7͘uQ$LOI ћ`ΖNB%)n00ɕI,}jֽFv.V:Wz ւU<?Ű"hy8F-'$q{ *LKypޣ3Mh k |k/Ql98,ɦFNjB /B Iy+($x(- =VzO2/ "E˸4pu6 rQ?ErV|fEN";z'!;L:&9XG4苄=miꇹǕn y|#r T? pez8 &,> stream xYY6~P7}kFԭ[ -"IѢ Akkji/1$e;iP4Zk)r83c~  vt% ˀRRiLAi%)8΃s:nس>-{YbOGٜO( ;6Ou@Egrbc[TO- { n(’D%%1-B#\GlZ"s ix'nO`ׂ DSLIgRUG%\xyZOQ~!$er֣wa0g^#,'9*x;q4 i\LòH؆%Ib*3OyQF=$b8X:^{Sz fQ4v!39Sy/Sdw8s={&6~\Ӥ Y/}*7fZfMi2߃$Wq%~w0Ǿr=?-^iIOjl82;>U@Uhsy柰mFʨ3fA-%,ÿ‰<* oj  |վ` [żPiLقYF-ܡ(LUpQk{s@5yk]OPY[2(Wd̮Y4tmԈܞqu8͍ >3c5iچNj}X0Я5<&e?Pz2AUFDU3Kx>lT`9AJ)& {|.jMέ5 ܊ڡ*ni735M_˵1_ cjhtB'F4+ .'4)ɴBz2OCM.B0y*Y}b,X)p69%2hLg>GJ_}g Q3|$}?tVtzWIXzlc|HJ{E"vMߨHnjD$zұ[*0c̐UȘie6 Ћ#Pؤud`LfE^AHJqA„QCoFpb.)xҤ$L2%p=| һEL2U 9`کU^@7Ro-Uڡkjmd;/n,OzY@ aᶻq@lǽ}pո ?0$y+%-ʰ m@foڮ}Br =ACHm6FHhN7a] @Ws0hjv A๫Âu}e&Dq ~ChU 59jK<{r^4Dul8UQ7h{tcp߼  r16!`x3؇.] u=Aؗv zt8 A̮(:%YL /ums{{{JН N_ ԺLfZZf}ʏ^ mp=ff.tGнĞ14tbb:]N endstream endobj 373 0 obj << /Length 2229 /Filter /FlateDecode >> stream xZo6_u`1+C[`+ZlhHrձRN}#GHQ>DS #V&C.aDo_ XeыBs6Ͳxxؘ bi2<Fӗ^1, Alc<ҽde<{5b\'q>j8.Gv,R; gu֫ѭjcB.^Bd [\ gȦÉp,3dwTfkq@OsH >lL☕yQ# rqf R-L #wHHo> : E)wK ǃ_0ءf> ,@dں XD,pXAwOTQ5חx#/Mz `AWĭ 1dUMʒ4'QcQE5NVٍKvLĔ%Kʩjn4}MbVL 3TѾ8 щ՝n%rCߪg^2M,W]kܹ-ٰņ;Ev?q9-i].N]Qu5>C!OT"ͥɆSqyiN3 xILi,1JQ >aFڤ1 +Om5X(&kE<ښpEN:*!g% b0iU:s$;xD>t=DkZ,%:x9>3;1%aLjΈ"'ձI^ p$üzN_ڳx^Nl=s܃ԟ]imّ/UV$r_rg6EqRg>4#l\[^72(AlNe"``FB_'q-Ⱦ x(]ó4S!Uo `\2zxU@ͭ=x8kU'>vQ:tZ!ڝᷔد9Α͸~4̚6ƭ<ћE?y1DM`"kiPtb\-w9t e TF$$As;"먅Lu۲$M515DTS byfG|}bAs=f#z! %,O%y+r2Pvq9psőԳ 2׺Z^uo_VoxPCN=vM7;6H'v[Xk6\=-2C1G?1{VjMT6+:ؒE8"@r}Cx݋d2M @5sgn#]Aq?GҳwO5l=?*lw{afS2yqA/"=Lg{b+-WJj_SGasvܬcMՍm[Й@lH]U( ͦk7!8#,}gJ/˿'~_o=&9(J[pyy84~ B> stream xڽYm_jkF"f W^md[^|{A{Jڋ4 [>CQ.'ċ(I"xFEJEE`BDMvz;K \/pfs3uۓ${VuEà<!oM%j=axn#wϿZc"K\BNJV \I+dF-JS?ʌ6+9c“lQFdx ؋SLL)bDBT7&r<e p :Y>JIvILsJMHs/KAPӒNR#G?">isYRzޥR>p{J%* ԥV+'d6`>4HJkIseW2?Ylm/%#&R JҦUw29 .XۼgYi_tFJ 45apVkӯH9@;|-[E1%)ihN<"#d ~>π yT,q̸ɛ gE eʑn]ՎƼ+cgw4ڻ EYg']ʻKV<4]SB^.G*Б}Zla1+ѳb Rh0/ 0,Q 1?C#BmJ*<)LTiC,d-t:N.52+{n$uk[Dj}CS( -؟Csʿ+\oS~$uC U8jD5E}6T.<N8FSjhe|Ư*ϋP76AYٴ ^|PqЅ,L q+p}py>31@CNx0zg )N8?獳erƽ}1g}^pl*+,D'dG6.6+W-}䥊5h@|| /`w+xvQ)OOyP?qݼZΠMk5t$%P~\8/؅⿹AnYN]A4gwAC0}DJHݏi{Zt&p`/@ۯm꒛a$? 3eѾ_ƒz0\a>vX9f>rd( hGY]$ |7ZIz9T`_kە1xr;+;%/+ QcEY!B;S5'Mڭ˧2xM(il~"kB0wʲ7N)Seu2QYCY+(69Xz7/P\P.ޚ!rtXڒs>FA sMR C*+\H8u/ċyxXYv/ȼK-rGhԼASI9p+OXȢoQlw!5r"(ʞldߗ>;޶t~Į>xA3D rK=;!~N\?xT'!RXf/ &󳬀Fdk6/4Z__h%l<!kG0<3F=}Eb A A)lH4Ͽ9=X+ˑ9Z ެ`h|ԍ5%u ]]8,"/-/ЇWBpp Ny/>E#?9@af7 >Wxr#f9/s endstream endobj 382 0 obj << /Length 1999 /Filter /FlateDecode >> stream xn6_!`1+nÊfXY[؎'ɋb>^#5 [&Izޝ^`K[L.j*5,:WH59bCC(9&SZڊ92+7YRV]Uc@+ 1-^j/,BbF1pI.f+v'?C'A܀v@7` -8F:R: 2N^ h/Gl3%2- r0szr9I< 0E(d-K.[>&O^xց LهTF w(zWvh*Rke;KMޱR;oomDgHD]ȽoFYqF`+xMM eDR5FԏG2"IxdW;U4i ؅>rgV{R, s^BԴ5i}< -<љ'9<}>e+0@ߪ*߹ C|wIYݡdBbmU$<i of+UMpO2c5V4{#MTaNiFhU8T/Q"U/EwI劫&P9 KHj0딐cĘa#c%>u|@ؒF68|W-$yU2:=Y9 >8Fzr0E xKs Bd)9NJt|]5{k ?/`]D(1u'G4%hv p&`S((%:У ng)ܢcP\kEQRs ɒ-tɌa![DpcJHzߍr"H%݃< 2OGrdb|z>Ŵ4ٯ`gFM#$r棔D$צiGQg[7`odQ7sC\* k2Ee)t4ŕ !ɾATr-Jٶ,VUP!DGu+X6 eO1CSv! Ŗ0Lz)~JtJ OiejsEC6c˨S+svR[ txUݜ:"`NRyHΈ K;4|J }a;dAdhOw() bJ5Y*2EDK?燦DiڨT`es$ U~\@mœ``~_:ིƤ+7#rcrOvt2uKSBI{) b6l n-`/Ls7Am;b¾+Ĉțk ^@jף*+gbvm뜱57,?Z|@CBmuSe[ yO9헞d~kS:(߻kʟNY!3wOlNb<2Ͷc7o,(A=ȇ5oTU\1l&3M[~=ЧY6-o!M;D zpv8x endstream endobj 386 0 obj << /Length 925 /Filter /FlateDecode >> stream xڽV[o0~ϯ॓Vv:A$ZJ^FJ]>$Mxp8a<%&E~^%09 BJA 2DEJ32]D{X`L` i j;-G+V6ҫGN/&1 kc\Sمa& Z$!@Hl-m\NѾo0.9fЩ|Lv s9rZ{OֈSI!_Te>JCprRɇa3 R_R d4fd.=<5*`"ɗu22MׇтWgE|b3 Kh3$}&r*sޔlJN(eFu < lu2p0:ۨs)q~-XUWK~]q.03Po}Z%ʽz)A07_[͋NvO wF:{F҆lvQĹSv&S7njk99sb!R*l` ag!7\7mH[h[XBCM: VК&:"Oxd:3aܖKFs0*SATKγsQ5+< ezPor endstream endobj 390 0 obj << /Length 643 /Filter /FlateDecode >> stream xڽUK01jgoe[Tz{ȆǦ Z=a kؓy}$l.!9 FfʈeM,3i4a:gh˨z^\ôTؾZF)`R* 0nPyBMx87.<\4zcxUXg8x  6 G9^1:(w?&Vgl sȂ4Gc28'* ,`$w^3cPwz-j^9i7Uæ8Jh1E$:5P{C8Wb) X{ le KL k.7<@"$, ȲXS+bI$hiSx:灊ƗmiOͻj_5x7耛tH<y&r ѱyƊ M`(+L~"XĸNcEn[C2>!K=!Z+̉[CijVm_u0ʏmQk=ؒkCW rxTg9VąK_k)8cwy_sG~ x>'[>Dg*Ȗ;#nB endstream endobj 300 0 obj << /Type /ObjStm /N 100 /First 879 /Length 2525 /Filter /FlateDecode >> stream xZ[o~篘Gew.gn@@S+Dr]QJHv83gefksRZٜUrivhlV6f"N'ߤBb1RC=GeE+cmˆeāx,+cR q 6ctBţ"AY49C^$Y$FE:d9J$)VT€( @(͡p}:B \ L%JFG\EQXAIz?n}h6FHeB}7j&+ xp"ߤ~߬mɌ[ .3.ᳯ,B3R>jSBX\ժnQ^"*m~ˋ>*{jl~n>o7ϋnY⨫BZPC**ܼdžʐ lUDCkjCa5 ~L܉A ðBfB.V?& Xn3 E:j<je$Ԭ/ԬBհع拟ruѬm̔} {f$U}#N)W02?U2t/WPwˏK|v9ڮj6Lsy/@M6p9 c7}RmHّ35vz hpuE뽮pE+l8hVChGъϕqadn+9p j '*UTG<ۣ;[c'iX׺slj 44!C]Ѯ2驏z8a˜1n6TicahN10h- Q.*;<  8c# .~$-n8Y ${` Jf,nO9Nr*o?Cө#({hQ>J8Ke{+7**c=W_X] "܈ % #he'g+SnKlTcە~JUP>*ueU$mKoh[x1Z'f"іY7|O4e;,('v%62>!_/S*k(w;5ʊm ƔZ`_Ok7ZۺG[SurܴLKqomOG^R˯6 +YREUKCʞj1'DXx55ãI䒅{ -t1$,2C%%,DN+K"ESX VAZ:bȤF!@X" e/'@. ZSY[^~ǩA_L{O7|r'(;~4Eׯ3'QkIE;W<h! ֐Ü$tI%]]">,<0mޖD3&>NbMHIְ/K(5!򢌟J1ŦbU趂cN@M9P[ hJ+>@uyb~ޖm##dwe3f#~RT-^2Ӗmww@3w Kxþ k-WRӾfs xQ~{v ۱Vܶ^<4y /^{I9gn$s)yB#vDvެ={< > stream xڍP nwwww`pw n!=+9aV޽zw$UR67I۹330DEYLL LL,j.6(5@NΖv<`:.61;Q j`f0s0s01XCw,M {;39 60sss9Y@ &@%RPY8023mh.3 d K2@h 4Jf.@'`cis~q39OJ@v"@ws MY 41uyZڙ,m@E 9:/"=.V[3_Jfq;SQ{[[3_Y:L˵w235K+HZߜw9 9@&]] 8|_ 04q-d7>~M}LlJ@W'=_"޻!n  OPg130^C_Y_V$jc_?ߌyvuy y TMпZ]"lgn6Z:KXzL,]L,5D6v %{g˿=3~W@+Gۙ؛{,}XKj { v.!wq>3{'n(_(qE8YR+Q 3Uw`TOW/~?q nieW7M?ޕ"6fR1Y#_l{WĿS+S߻R O ?6߻a.(]v?ż]{!i1VҝC;]OF '?.\KvY]99+,f+yLMxj wg(w5Sh轗]Q`i*37nVwĩoI^`Z[>?ƫL",NbO ҫ }~q` )Cʅq+QW2:W!\:MP4Kc9KBO uv=kD&$[g%akO< <\"ѩ"I28 Ņ2fD@Gj%ґCRԝXmJCլ\Z΢f<gl ~kS%Ԟ67Ԃ0aI x}ܾTu_Ys\tȧ}&&$^i M-HxaNkWY DOAZVotz(|?6 \6{B\pTu ^4-MŤYtA>EV~;1F!h\YY 'R7_)MLA<41yJt,DZG' }pXu\PmX]귣Sl<&=39t'yĶ7_嵱ӘT{$]fAό&Ab)/x\AÏ*z-PKӝi dDWܵQ*~NK8}c/Pn0<>m=}ǧlK4t+*Rg5e+rr|\ .k>?rCGNwЎjHV pY!ZBشb mvo~ v\ReLZ`ͧZ>ɳ2ewU?Y1j o_Ajm(tT'_r[.ؐ ǖFP=~'@'[aP6.P}ݗ'I20vb6 &-6ra<̩:O@lt]p"fk[I $t=V wOC-~ϸPXjn}Syu-RVv $-t*qbۘF4Y}Lܖ$⺊%OM<ڄCMr-Ou:D}klnn~D20<I0W}sPi/`Y56ǒ Ȝ`$[{eea&3thتi ؓtcUt(,ESI~?) c|s0z` E-=KT yfuRa|8Do (JC'Z$.ښu2E\ sN? OӓѲRL7Wd?iBW@˴@4& ˻1(KP8-]w؉u,l_R,ʚ9. ,{!Cg0NB(ā;m3oM0mXp{ W*lM,|b&O{]LP]j߷KgS>z= R1ˌaǑ[l-='ppKI w`#8mM2>‘c-'!W9Ŷq~c1߳g5@iA>ЈjH^Eu>rFIde;f![/qy*"//?gw3,%R$aXjҒל{2pZ7gT ՐGMaXN(=>rK-^(Ge:]K<뱳%,ahO`cR-0 kN-z D7xM^KD4paDX-֤,M?)f*j:ZIwXJķ  )}{3S6EDIkd0K'd-GnQLu"`{@0[WI_zkwˊtER)kRhڬ:AZ FZӕӦ[aWsX .q琽(ApHyO-U ЖgrfWfEy`G c٫"G.7^z8?ֿ0:c?'aρ/H ةb/t~*; ,,4:U *P! &L>FޱJS-$4ΞʦOo__pWTsIQ&h{  hW[hfPpޘyD Z\ \ۺ ÿ?M^&ʜDE4qRTS7 O]0+Im1d+ς[ IPZe+!0z UTk67ё2V>&q2rvPGm%ʈ4 큿q3v[TRGrA3rmщv+fs8 i2NG#m[c *1 Aao; ,*{dONn0z`"sfck>ⱓ 7ɏ>gMHl,8')6*k$Iɝ@fB5x/ t3䋼xeI3'3\tRpua$:AV;I9 :߀W_v1^\ p"s6$;kWRJwz%zF[;sN4cqw1|"hGK %;" ;*Ҁn )G"{E?SBO:mѕmkRi$-nBy Ӟ/io#hz}eK KKwHdw8}=ɖikm9|Fg1g7W0>Hw[H ֮Th/ɞ`G)=u,Ę >ҟpDD'< ؒџy55.d%L-'xoYfl?R{"ֿӃdGLG-is" ӿd]=-O:6S]J=dG~̕Y\)d0rr5{g,L`q`/a8jb}>yObg趀5GÒ)2Ô9svEۍ&by,io(,*ׯ65瞨-$4v s`h~CW:%$ҹ!Y#j x{F\0"r P5u)M}[wd5gˎճB/os#2Cso3K}-Пд6"S^!w{و X&N!8Q~tz?\T~Rbsu5Me9k{Ց!yKx) Ldőv3ķpMQP(ld|GC?|99)[RYéʋ!FEo?jo#Vt^,ú+F9&qt2:C[|wP2P}4}mXK>6m?oRVe|%e`r9Qfvq37{řc3e&ᆱŗy>budzCUo_`0intݺi[h!B)Nr8?IXGx 9Ec}h R:T% kG"wԑ3o p݀^6SREp\=uZXQ@y5gv9b Gܢb8K2}8d3R!{zӬPlI_CreX$yT,&YK:4$djxec\ci_U6u6Yum[{]}w-(;xyO5?5wHquD,߹J3Kk@Wm}qqA%qǩU9i9|YhG)k>N.i(sVj(JFW?J#:rvA3x7.4Y]?n6Z$8)&Gp 9"(Q iݶO6?l-pm6^Gr|hr:OjvB*,޲[Kze-8Wyݷ ў A!T6.y }S>?.ի#PகsB[:!gޜK-&ڧ)e}VGȷj䈿y6|4m#, $]w،K۱s&jS8ɛnqvDܭh=O,r)㦏)?wAkq8qg񽯃NOzSN'3tꋾqo{uvWlAˡ⯌f[c,GjZE"ԅkt}̧pgH(pT9c4y]&!=_P$0y>{+Z8C6;d">ЈT\/ 4mK ! qȚ=r_~ԝLdqSe;I=X2l\|TByw+I#f0N9B@ѴV1қjdA` V6e|YcO*1~!f-Ҹ~ڧ>jIhd1mRC|'bYa!LdG}XIFI!@O{+R I'5[OY,P"efC.p{F1qGtjACnTz(PFtUb}drۢpH^Y8b\7)u S-2VLAl]QZ dIR  a,0TϛEd#CwF4sG m^"?4vT.FCXoU_y}tV,@)ODzѹp~uő[ݪŁՒ\ѝ\#= "1gH01}FLE&;(>\mu0՚k=X/u3⮌ۆ!e .T[cZ`,,gDk!Y z^`qŔvES EJkP2@$ڎaK ^кU"D jh1TJ/{an`\7Syb o؝)*!NyӺ*ɋZ#N\x(*LJ6{/*fZ}yH'_c?S݊,"Bꕟ-80 +vFUD|D\ڒ 3>M AFWKEh؃ I.cH2]kjӁ%oO(gqN̦ ]޼;WP"9>ۤS"H_*Cސ60՜?M ດ?qv1q[61,۠nݢPǭ Tz!;'Bzђ!&\ $^{Z>'4j)ZT}ݼ-çLNjYAPj@ρvkV('mHSW;ߗcnx-zVn9uid޲㪰JEf/-x(};)d7 $yp?{'ޝrerR93UȤc Pv=;be)^4~*+- 5V#%J9% }U$+]1u;fQjtZFf}jR"1/ʪBIih4)C3wJ('Vi!$M4XϐZYtXKWH>!ܢ kutB/-mbq .ئad5/5҄S:8HogCF褢V.ཿmp1gyUx#?,ɱ~8[k4QJ=6%y ^B0D^D6/5mdfs+.=`#c&P9L U 숔2$8.[\~w!ΓޑE`Ȓ~/&z]{)u!+`Ar8Tτ+^8/sW)ͬQGSd>ͦ:aB.ty/|XVjTEieapN8 e$'oLQl]Zɷ`.^bAޥKl: ˨Y޾"wE\Uή"S^RIY%6fQag&8pSf(QmBng1*?D+Yl&t:''GV1DZU}46Eܠ44:tpv~|=[Ff_LNW|, #t#!"p ]QGT"6cYn٥\dQ*uwyM9\T~"JVQ0?~('9 IvP jlJw f?}Zu^1iH.ciWd+Xx)qeGP}ȝ( %_(҈F, /C{lu1X0d>i`N4Vzuݷv=<UjѽZS.ӭ -€Z6@WFSIxjs"X52Y.sV1-4E n }Lj//!Ml;\\h7<|&L ~ʩ{|F5 ->ש+,WJ5GG˔jxHS4H'k31h;OJ>4 9f]X"}-\+˖ d bXr1a!UKETh"Q-K#+1!$cvh5-L7tT@ vEzj; B䔮DM,@/WsX$w, h }¸.@ӜwuDXgc3 H#W+ "M˔c6WCubho dd BLd3i>Õ 9^f"_? u;D<$ᕒҬuZb֬ plʔ/B ,ݫ(A X5vEɁ;j` uV!ĹICAl+|j˻Еi-9.{`xc]ڌ]8ncqc.4~O\߉CjAZCw/Osd<[Ցtp}Cn@T0Ą7UUn+1s &Cg;!V.fL[R@ /0J {wU>q"RfKCNj+ v%1!CߏS3S'4myDP1pMס |}yř#|@8w _"~=6*6oa`hE0ԪPQiN tOn(1]O=Mc8󠣭3:o*f}m?^ 5bSG([yL|9zk`-At~mf#3r`Md=[ߞxn^PKj2/'6q?aZ8ǜ1ʪx)'Yֹ0^K ]Kk3T'IURjeWßcW- VuR_r= 3ך @Eb 5* 8HvIK.9❲mq hv%4ڿD%f@M*tq;R3KoI5^⮛3^"}ߙ1On)PU=D V^@s?y6ptC۽q*=w੘Zњ-74?GTfcˊ̡T J ltosSLQ=#)FBQx{$fR>Xg< E*`?J! V$Pbr}AD`r\D3t ''W/^\VEL RN7j@Y!PO^{^VfJO",W |?= K6I)W)WJ6-\oG0J_;$k;&R:eE>YA ޺7'Yzռh笢}ЅxK>?J6Jc㷤G"J`Y$ܞ򣗥;Ш(^R#eQyD?gRXhF7V!e5T.Vs@^ujk4{c @'P콰L5;RەUȧɯZYng H癩>. Jː0vMIk /fnTdnSj3`{Q)QӪS7jy Mq6bM-F6֣rq( VㄡntB(GTa[RLLO6Y|1.#&qk!;?}2zn=#H`E-zرX kpvnډJ)뀅7]Z3AM*<Ah ހxb:[eQGWlRa}qz/PO1CQqu]6]6gi'Db?.jmO]&s00/A`RVWTyMNbgB]HG PJ[ 4|,L/_6)egxdR4gx@3:!y~rXio"Hu/I/2s9QP+ID_FtLi# Iu|?B  b .`){'9dc {|T;5h {^3:)^nKi#CD8?di_ɀ.Jխ'>Q p9 =K`u.t@Gq=n,r6&*VK.DT#bGiES:9ޙMR8 3C.Ub ck1si#bd4hM*Z MN >9w$KyZbM0l8hi,+e'*B{vvO̗fgoQ] Xzi/^e0+PF{]3L,= s֡h:Bu`?Wl}[ex/2lz?_kmWG-HL{ _2] *8H^ġP_dA:}ɠQnpvOܦxŦ l^3xzC ' Xzm16-w];3}l6:]& P@Q>-iYdqV?yJC!4Ɓ?[ʹAc BC݅ZXZ.OJ,¶6;a 8~F(K&G>)Al§?2tVJSW4&,3Tq@=_3ETރH]*Yv %!e-(̊rZ\d?#Z|l$?:qcпcA]+"$^P1'~'!)#:^#n:*%)[7~Ğ-!:3_mnE(Q@nJH7:l'Ǖ^-iP uL (&Jom\e%eEsG< */f4@y;$U2b#0hWUS՞0CGyl҅,+Rj)b$0_= %e&f .Dn$4gcȀZr|9T{m't:K +ӫjǀ3,KϤQ9= u+7+4Ɍh躆tsYLӴpBp1  jI):CUEp|C&~U/9)14z4 ө6VNZzڻڼʏC)3 3md{ J {wnsT45pR!+KS{'59Vyxghᥓ? 1d߅NzV|i7Xҵ.Akn~Ϊ5v=YWG=ͭ kk(й~F#`!yx~uƠ{`ܟ89μBIsWYuB rdA̭*W0 +-Qdˆiw]sȈ׏{+N'JOXn+30g^t2%+hb;@qIklz^a"($-10D?Wyx'N6hەXCueWUW&%ۚrCGX}iBGρNgN~}w endstream endobj 411 0 obj << /Length1 1455 /Length2 6217 /Length3 0 /Length 7201 /Filter /FlateDecode >> stream xڍwT}?t(1@:Gwҝ` " "% (H7ҡ;繟=;g}sDPpj"(A,@MO(%4ܡˉ9͡Ho.5$A( Pq@IY@TDDo ) P =!]M̩ @œ]P8?xos =ꁉL`<.([tVP.c7 ~Q< sL]`)LN(? a`(c@Lt. @8_Xr6O<w8ܡM]!?JC~A=s9bS4U ?H'[/72k!j(M+?u =@Os?8 qE)ly@u`0"˜($]0 V1ўO4AP  F'b QG3 No13H?F3~@ȯϿ0A baMUmm?TUEЂAQIP\B %% o ؟å |33<@C<[ 0 ނ&H/y 0,"Z@h=(Z$*pg B a(_sw0ap!EDKY;^t ٪Ԁ_'*! !bL1' Sx pB T 쉹P'#GXxxx'QPo?r 1sI `(חQ*WpZ m>? 3ykD, U2?tQ.k)O^c<4j9`O% H 6BժT3U"d7Ÿ}+غ}TGȄeke$h%АzPH!fSX*I'NGNu.xk],rMa|7k^5n+IX=~GT:s5XivKï^eRҳ0Zϲü7f/G\MxR@YEYxԖ7CS4+ܐo~}+^m`azܵtE䆗B3#UOght_ϳ'G;$oqi`9KATFfE0CW7[vx'gUQyg*ÄΈmN#xj*aM(]kRmlj6WQZ헣z鮎%!#k<밥'6DZża x{ɋk*䶚uO_.'m=%$\: -KAx4xk̉_y/LM14y1~-qP<9f!nKڐRpc~4}!vXablt&U~c>l᛫r72{%yz^߻6(>Fj#`{+LC*?{;?7x̰c,(׋:KbcYez1T\0Τ94S,.R}޵ekt0hM9_CgVfywa5g+7mm<я؁N%EkTZ(=="?#:-_s6]`SMV폁s觳$H qj=}%=,U8gNgUΦSD[TDSݛsV_|U}|6yJUī 8i"q?U}|I]'qBݒHskX,]nr_DCgf[׹RG2L^Q{EW@ŭ-q^%F4޽0swZ9\G2UJq!d|@qV9@ˍ{RIKx9i7';M)׮oWۈb%"'ǍP19i,?]98޿ύN05R* c6=OS)($b,8cР 3=*)^h{2..d髉p ؃7x֎'AU[D-&|ȍmy-Ew%tF@VDU9iGa+6Sy#ED^;1؄Tg3&q+tZjA !&/M=KN~VoPfY 'gz&#z,`.G]zh3{սwӆ > _T_R빓c>[Q]`pX]+քѝ0OcQNkC7:4tQ:4=Ldrk:[kzW؞'sNC} >YfsE|N9mNK|'V&\Y_ָ諾, x ;>'@%ÎE-w{c®") xxYgU 2DFrPN2'͔^PoYn,#^*MKƭ޻!1aAEIrfT?6RjWp~~O<yWC[nP(wsG9f_sCLuB]qKk\dPKg%Dz Rw5e\xEpNS9 Eb 5!1h=6?[c!RP}Non5-wrTْsl1WGL+H;ANi|9M@P! &`My|r k}c!ˆ)V{_O طrW'{ְP~Ɲk$|17f ~@@>+78"l >Ug%zmRҪ4CmZqw+2,m]Z2fjX-^FU2ڬk"d/2m) x]mˏة3%yHaK 1ckah "̶ȔMs~# 1sGi[?W>>͌MB0T%6FWg$B, \ĞQg1;JZ\@d(/hDkg+gf߹ڳMjvf.z$di{'uSt8u =*?ƭɋôp8nM~jڬz`g%E$eit`09*?v^ɰbΔd1qA,bC?M(24FI΀j؏<'.@mlE{B)g(,F'+i*BtV/ŝ7ZWfT7ߜYovҲTDKD!bn2j<{E OWޕ3k|(#<%e`W$s{a ` 6dbqi5hYjآoHEFyy@|$tgc=¹{ӓB?qX6ԾutLZd(h]t!q|2Z? 0*sb:t4]zX W{9bv35yK:FOOqe(5Mh;%^|bH+{o iEV/p"9f'-ʂ-+BEwKVI^I5E:Y]9*uOLO>FwO\涁h \*di"AKxidC܈lL+F܉u9/&܄*) {{Ε#q7;./hI\ulk=\sNULUWu%ݧo[4XOˎ%w?Hi?~ g(0Kz3|WUEZz8PA<7A}Ob|Ԕ3)@:ox[2@&%Gi23LLc-) m'h6f~Avm,7clt-m"JM$0mlʨNX˾-5Nm}fuL\ɠs\VUMi.Nluv YCƂ,u9;i>C*l .*c5L79G u3"db3mѻQU׭.2G(:93ULȟמ=%3[M[͟5 s4*ְhRx8,!dJ0K=3ۨ=6sxbkQMԭxYbP]Ik EJIϾdUX)\\e1Z^,Åp0yftKW8ygJ ķ[#uN 7Sh[g!y(?炝k<*} D{*?b-B@R"<6c5?_j6", 'uF` !q ZoŊh7;[> BՅٟH~8uɉxhlz-C$=bX!uC#kDRl>Rg7mBQ5_ՠRIRYn9uP4&=ܫ(ZvП8k)E2׷.MË^ÙIʻG> stream xڍT6 JK#]K) KtHt,Kt HwtK !J7"!//?7// Ǐ슀abs>yT@~PH (, wȃܡ6un F\v9|X@QQa?'+ G. FzW V , rBp]$8P$F]6ߔ 'ԸqXz(⯀.rPk0 qO*4j87ٿ AaAp'g BME5n'|;:( 3Dp#9.sf C"p~O u=`XPo6n<0XYo̽ >;0 +"/"y9|{`_-7 ]o @+n_]{ev08?#Qז7򿂲pO7?' ?|ο:?^-2~_/`{o}^`o+k}ނ?)]8_Ouq/h7rWP_9oT _ݽйܼE'F %q#ւ#,^ジ_!~߯Cf |B+ ^ x6`?p=g_-E<],AQ;~+) q8l]x^׼G A<0+1}7^#0l3? iY-C1&~Ӑk ٫0i5N73cATq#PܾSCgz}.zm;z3w?P?{_04$҉hѾ&–e!yZ3qJhFGWuIo:f 3ߜbޘF&k1Jt\yT ,}:P=h9 I >@#/Yb)&}/JDLW=Ag@./ >#GAОU$_ v$gf {m#<>4I~1:k5R^r7,>ژ +qi~_3?DgTvHFMٹT09ς2:^gYz &V}CHYnH,q}Zp  ,!]YDwf1(\AoKWE%&u=rXkkA:1W0yUy^#bzQ,C< %{nj >M!}:)s'Nvi^M?/ YJ:<MuLla[Eٌ!(?\neb]MOEOrR|(R8`eB4t3Q\R F;UàC rSyyuw?cfqI5-mBDj)Z)Ӹ5뎛Ķ' pFI2gsb=L_nG`-Ǥ֝/8F$XP zcI)wg5piϻ!!`1@: G1ӧC 2쳮v矧-u.:|o5:&xQ'銈jT#ذ,6[DvY*&W_Uܳ4F{UJw] 丞f]ǁɲuqA5 8Y$X v(x4:k8 i16t&<8izfs 4=Re.)yݝ`N&v?<\kZ< ]%LL|e0cDi92ZV;ʟFXjzM{{񭖷W-5RSc#L>SĽs`7 N~S^u~Au)Dѽa"-˷@A#qh 91t~&){W"{-/ddК)doуjFM/|~+%&OG +_a{~xόy^ȶnKI/h0iĢ H5hqy5a_,7݉N!vZ (d!PdFUׂeC~R,f^˜}PCv.0_|JZy- HO/L 38_iM)R.Nl9N/ kH"3dEĩ09%>V\jd+'8[ݳWJSSUt?[4 PV12>:v>ԯ [3? >rٌ>VO %l`3 61v)YS+klz]:AY'+g^гt7lN}'m^oVzՎ-3ouvb GޙU8=A|JywF}G«Vb~l\6ݮW[oq>O<1l('"W {;)dG6=dP?' *e(=kNа̕K *}3@j;jіi1tD ]c*QsL烪eA[l긝g@F0$'JL@CѼGh3b*Li=_@gUt 0_CK_ C{LtE޹<Սj` dJu o69$AG"9f<-!V~H31PH@GQCLminVh„Z1'-hcGG90V NXSMÙWS4U(fy"7_#mݹF tIե>vL[D j!"چWWoFp ar'lx4p -f~+@;/JGȤ<;Dm]!sx i0cɴ^|Q_׮:Єj4et:'f )]n'{?z/DlĈ{^tQ1_fL3*ZFPԨ1}/? xh@%Styt 2#Y4gvA$X"n9EhJ|.-W}rT<2E4&=}}tUm$%tHtյ/0[&j~y썜Η_,!;ܷSm-Vds#*/L(ϞzI(x̭`؞:y;SO>qj\=\pRwUA5,%ZyN$ahfV=8d1^w%`:[i)g8u`t댕7: A>q+|.yhRSxt5t6# q%sŴ(=s}]H}l>-d!VPcL3w!*Jp,< cB @d&/Y@Z[&J+k i\ᷨ.[(ݍ$N{98S)Fr0aLגݝ}ch!LZ:q̠O~]D0ܐ ÿ:4?d(D]ӟl.@fCxXm]$814Rn4xL!׳DtNdIz9o)yLTqVZ]d Gn5E^dlaAH?Ά[~$;NHDž䂵s|&/A@#"͠rB˯T6|;JwC4DHB⑃z(N\'?QeEf}P3˟O }8ݧܺy~[E`*$Ej uJbYfS\vŰuFEX/3j-ѧDLJU >|.b'(f;[%#5Kd;>X GN~ ZM@w,Nj]ѷRw{\{L,;EUeŘЧGz:PbͪK:]w|8vq&:k;L'\t),l9Ly( gdy*ZA]i OU߹GQZ>r߈עjyS%7;FNױ1biG5j**gϒ0uV6[^s #9TP M+1:%ˣsOwDE}q!vpV餼eN\@{WWmKKx-bk鴼ש4hX[4/ &S ¨U%mJEpL>} & r$zCjfRHԳOu T } %l7e=厅83jqZJB=7@ PgHVGjq"a:nEs}UՄ/;X~)kd-Ӂ;*ޭ:chgEtds7ݍtA$_ ͢A (’jgS6Yz1NmQe!: K9 ; Ѝ+AD>=!Z5% M9d<}%)ha2I6l2KJ]S\*;iUf2#ayeWLH6[Yīw&ʓL2;1GnEo>c8ݥ_)4 K4ϗ\2`Zov*Tnj ֠% ~gsbAZ}d=DfR$. } wl^P-^KEɬ3J7U'+{sK6 69E ,Cv$,Y^jX#@B%eW\cA Kn:SHrSI2F<<'M_cn";~Yu~Vwhқt 6ќәpb񍤈#61R-ry]TMIa^ le1jֹX S8_XͪbmC˧\&c7>+c! ϊ7E6I Y3tl6/=\bEm&~C}EY)4'^\a ;_\%9= /oRb.˧xN:Jz טe;s8'@aFX=4L{ݪJҗұ78VNH>C7i–;)(eNw-F, HxX~E YgD k!lOM0nt[j W?>rf?p_ڠgn'|Ȉn0 80lGVpDꭲqW)aMpy"ں0uɟQ tՂ9ҏ-6E Fb[dL~2[)}hwCCB%usdW8(f`'ų(Cor6D*F髱NdTLbnypﲓtӍTJOJU W-!}vN4䕾V0L<܇;bbo7h8Kxۚ،x|==BklBL 7MӸɩ13oPZt{f:ȯ%b|7 ߅e>$6@T0\=.ODA8 sVyl9f{_-4;rӄ0ͺƥiL4wX1OʡN(e8VJzRQaٟZ*łVku4YXr D<~xerŜK1RbPw`!Pd-QPyI0⨶ .y23-~j p)tȪ0wOi-\01|]i`[7NF*:[(߸ݰ`}MKև[g {bWjj /ޒo<ڥr %-sүƭMLRIw}6N@W}z]C$;±'9R›y1"[H21Y( (GNSճa/Iy\'ouytp^ӊҹ f3/+5r3nX?<(-,NlPQ2u~ɪV|Ăd8qzOM}eEYN7hQg[.+WoY4aZOD.\& n yor/B .<ԗ=sI)"hLD Zyx#"gnX7(=dG(k+9Qss 5}z _~{ 4; -V[W*\Z[vɿ| Flbb5 G<<2{ga!%*+\N2U@֨Ix7zVfJ& RAY')rq2!fž9DoZ-qpzO20Qn)|JL=msMšDUUUpft-YӴҀ:It5ɆRۅ,Lfn!ekr%\(,(-fx Kr^~o0Ga TDej WmśqӔ8eS]tK'5UQpM3{T۠ &SY[}촗ul +L3Rkߤ'LJdY%5gH&7'e72_9Cwx}ˑAf׫T]x=ܠГOkrKzkf9S]Ա+_pa3H(ng72eWXP;wz v'zcf٫xmoio,MMe; N9=¶l'Dg\ Tjdt]p؅T>i3u)|ֈwR+#Qh[mwW7g&?-?[/<G*F<.mJt03 ݭ^617 +=n#r}ƒ @ޒ +XѮf [[ASq8ԾFڊ!txQ|fuNد!_OuFO7FmgB)A Wr? ; –D,k:<4?*$'t8_w_hhK̲ܕjf!NSVM ^OI|λ5._B98HO$/Hks:eWg؇5LIny|5yIYj endstream endobj 415 0 obj << /Length1 1453 /Length2 6790 /Length3 0 /Length 7772 /Filter /FlateDecode >> stream xڍtTk.HJ9Ctww 00]R%- % %J#{9kfw;zztmP$dՕ 7KĤCá n(!dݠ4'Acԑ;EB ;& xl$"dExИc~ڰ""BP7 PΘm p.E{" qFq#%80@y@m4 ?ȸ z0. q08@a*P7p@'W#w1Ax; TPF{9DC< 08{r@AZ  Fq`_y~ܲa>q^; uA0 ~0;(nP?Ela6h5 ; cc0@~y3{{<:F*'&#rx@0 a^?7^-@tTF!.A`no /Ͱ}Cf(@6[KoHf?g ]#1@w!ա0w*!}H#1sa(V qäw9C@(دO Fv6N ?! A{y y777!K n)`0n  x`|e x1!l0Sf¿( jCi i#X|Z#Mɵ6$~j5Th\J}5Z`ت!z0}Zޛ†#넩|O2L3L-qҢ!m#e"yRa'R!f,5"ߖuo{S,;LJĚEid0&yV.~#m R^g Gɋ<ǫ6˿sSⱝAkxWBW=^G6?%1+6E3>ᴜ h_[y}c'pVDm#MY'Һ1U6&\܆Щy6 4q0Q}c ACo+:χIhܕɤ=rtcayZ b_^FN5B-,?2%Z!<[[u{G%=G;mi]}` ݠO1 &*>4͸q"a/6P,A̸FGMXdT/?cKO{jJ,O/pv3lRE+ڄg`*, ,R}#?g%7Cm/SEjzs)qdq塃մ2xGxjSY1xKmMi槛Yrj ~1 eg}"m ,{YlO+KސQ% bs1HY H52m L# 3PMHh'A1ٻ{˸␤ZR@,Sʕ9JzC*Y| EwP)[_0=) =d5q&)C7OZ/-gk䛗hvCI6}h׶Fw cM$?pO >WUW/Bꏝ׶ }io>{2>T$ Jv[ԵIwG61pxYx6DZ( xI Mi*omt\V)|u_&]Ua{Zsi@^χbKWa[ 2|ڴZP:'η1tՑ_Sr,b)> jԃLȻQ^Zvnɩ9פLسK,e {I!\c+懗h@c[:oLl]O tRS:dJ>Yզ685nnRXKMdH80Kt l:hŝw)N뤾ǽ(.Ϋ''xԢJW[%TI=_(i9]}?PK2gwj52 y,O, /TLJ2+O ꀏ.ffJer&YgQλˆ|4L2rPꊮPYfҳq1Pjc2bI8NuD:V}VM*{5stO$?Y|śs Fb#V lW $s{bb^?wIx(JԺ="R1T~]xW'-&Rpd}a+YNUF>f0vEL1\9=mJ9mRמtqM4w,I߿(@/ FD֝_#COr[2T\r }QY٧q|Ԥ,g^9GVZq5>'pM]9D2hlwf2ɥ0bZի f︥V~>[$nvŒ,.nc?t-PAk[nYb/T [jsNR5ڵp7շ|\;|mDʣc D%n0|,Wqkj _!yxn#jWx)ԺƋ$aL^!P}YWXY aaȃC 3 EMMgucȆ. -@ m^ˢ^YJ;7^ 4S[ZJ>-&}acMMvכorBM;7 'X^Ŕ2 tdJ@B+פҊ`秛;YF>(T>f?rry mJ"$GQE b|~ X;d)mGt]<5uV IeR4 C%f/ͳl)\oŏe헲1uRnx)ȼS&[ ~?]VW/LQ=vB$J1I5S02a#<ޗlZχ9on^۷ 䘹{ٕ#xl{ږ 2\ )r6nY*'{H6_Dt'Žt rXó ݇Յe*5o7{1-1.{xA*Ro糝WipnGYQXnEwT iK`0f"rG⬝'>6E=FBԾ0Q _okrZŢ[;cx#u)I(,%s&D[}H$ Ps4ֻTVʗ I&}%mD=dHJ,D%7Na/ᩜX|ٶ># g+IJ&x˳ /lM_*{ATofc y>e"/=x'63} H؆#c\% ĀHEӓ= 35{CXvE<$dɉQ!z+"O.5p?Z%;Vn~rDFda-X5 \V%;+GeaTѮ_N '~OJKWb3*kg,y?J.]Rn;z=#߭93~g$d!nNlrf Cx]qEh?"{{ 1Q.O>_)%p伋oؠ$%7 %8ΡAAv>:,p|M}&u%sYէ ơ"}S*E/bs6ȨeeF_w?N$CYIϔP2+f(]) @Dui YI+/ٲɻ2%B$4'>ֆZ4zJcN)%Rڒ)!u̪c_ngrWsjBeΏŽy=1ߌmʝ>>+._R)cc8sL6}3<DuP40+-7. ;m5caCe`'Mt# ( ' \PeI/?vG̲+>J:QZNн-(jΡT%@y#~AY}P^e@X-ڏC=R!ZcSnJx\_ |)v'XSj/ߌ(wagKtsX<2ahH&f+xcH$3[=skUz;plkJK 6jqUE8VY58™LEbSF TY0F[ހ81YQU{߁ Vg8hEޕuIGr,ޝGz(0ayJ6fQvE_+Fk}&j\0W{D~#{}A`$]sꩀN5xjPΫׄGVb, DG<\QYS )_LrKne3~"W: FahuDޜ yhR2ߒ\2hTk 7"K~S+XYHp͠'搠#tMm}Q5Auҡ$"eGOm=a㴖+&B$eyv ٵdS0gޫ"P8k1` .*T!'|24k*Ț2;nʍm2q7VQ5l6g!{߭͞P?J3+e-e]껞Vw+}| F#EH{!YGYIZLﵼĕŢ^ko_/4z*xghΎ sDCqY"4.-xj:cD)Gz;IɗOЌ0ѫ8Mw][bT҆t[H>Tv>IrNӔN)4m- ex ^4<"apDbR=%/Ig؝fQvW>8QycIF)&՛4!O):[m(FYռr*7niʼnϤI3O ٫acD^11Ѥ)}\0yկUu1U N2s\_k&9iBx5 0v +},Qٻv82ʦ#ӺSvso/cP /V'šwyrE5Ϧėݨ>U } -˕3AbiOh= ټ*"r8`=Q~1_$Mb15hz}[VkTD:#??[Kxa} endstream endobj 417 0 obj << /Length1 1705 /Length2 12258 /Length3 0 /Length 13354 /Filter /FlateDecode >> stream xڍP k݂www'8 'hpww n#szjfݻmW %* PfdebɫXXؙXXؐ()լH@'g+{߿bN@cLƓd\lV.>Vn> N|qcW+3<@tFwp@cJ `f bt25@ƶU{S+ \X|nnnLvLNinV`K  40@WfLH5K+`7c' M`ke 9ỲNUi9Y/XXq@9<@s+[ @QB f :ۿ[1@BD`9:Y9lH7oU2HO hVv:kwy ̭@f$artJMy!Wf8YXXy@GԒj?2rw%2 y9`'׿XYfV` _ob_NV]c6^f [/_wx1r8Y S$Tˣ4WoO+C  o wX8YL߾X?/&/o/$bkOo(Bm9@ kfV.vW+ 6~[?err)YM-tͽdlc`|kѽ-ۃ֫?U}ߐ@f,'of@?G;!Q..7Y쿈,0xߘ 7Xpx̦ 7b}sf _l/fo/vXvok | d/_ͳӿg Ru/d{'89W.[|@w)¬)u]p]7Ɲ1)TZFvIkN7"Ih[hIZ}d2ӊ4?HQMx[# e {<;^Ij.Y䧲Ih(i\<280#ƹ;FWxz$hB/uϕ 56N| |<"k */d9yBleF4}j+HPSOBvN C?&,C'2EVHLp- h\tF:pw0myqep64`VfP+'K݈%t2(T&P a5 8D+BuEr3"Ƨ\c}} C?5KGy%'PO]sWc Ae8L$r Ғ=;sUzLqʤǑ ?EBzyo7oE 5+Ec6Ըs?wgw:+IDBn 5Ţj >lv=1ISR.y/ϋ |ngkWxCMn>ؤqB AU.sgnrttxb˶RmOE:jM&*N._ `|WMLxϾS9}ˡJnx+=款 4eR^^>[b$Ջk /qV8_:1SmR[iYpWrH8\LGT2c},uh"˔FJCE3uNi`EIgح~|[/KBZN4V"nWc%kB8xÿn7-TB[1z?ԎڿQ)5-*.ds'q$3`ͪSTP )KBv=?eo叉Al 6}5@᳐0~ݩ._{d3ҟ\" `<9U)TMu] !Om6'Ko^ۊr3vذV ET?z4gB+ *M(YRa~Yl~ݓiN-XCVUTyW L,K$6Ӗk,H. !""Ke>W fPDO^sv*E}0c[~˿<֠E z˜ !qAALe*/?7.٧ mWW"m}9Y* ̼h(Ϟm̲%+|ܳ3 fVvLv9 ;"`2h"^XOF!y탽_$ {7'Ѓ(&nxxuy *Q5 :O]$6Ù0 \ bp(Dޥf<ìs[ ?V5y!S,졓_a.2(RE LSN AWlso13̗7 *UTW.[@6{TSDV;O0v^;L7Ҙ㫗)٠T(꺆:c `NZ^1PZm%F j-'4f!( ZF.&Yn/gx+ReDҹMj7H:_aɸ@=)uLnmnǗ߬~Nv"IXW 5hV!st,axYdR11H/\S&M?3]\CRMt:fT[w-x{<=J\H6 D=²C N!A^]υhA!%/Y-#!qH j {^dCUڋT|A$It%eoH |pZiX7L6Nd0 ]FG̞Aq)<-gl'@d]չlRm{\h'%<ӍM!U^aNa ̀L@B-2+JR-)z,S|s@_/7}גӏ$K+'I4՟}n{ (GH:"^GcH #.7e]s/#Q,.QY p = t]Dj\͟+M4"^uWgZI]t(.T$4:^p>V2Jo\zeKQƪwB{nF{P+m67 Ui a$0NYmI / ziVa:J~vc UoYx"NzVZ҅P2a5=y񹖵n(~׼̂ג衤R_Lh`ERmf[L\$pMʥ¿{e}xC H/6zь^zE,vqYw_.{x jZn_t7#?8{H$YqIw6x[wR{obskՎo;UЗoaN{v9|~EYFE?Q"t"Ќ&;F>ewtxku)gc=T7(玺{  sIeѽz_m+Sy4yāQng#GѷnӕeB][ >%`>+m(/ugٓ!F/#yN\YZoĹ|șHzXi.zkiq!ŦQ"u4/}A׸о.#UmaB8c4)P\Jn/Pf6|{"G^i Л1>'d: !YR~߹M\@{fBD5 /|7GK+"uBk*6g%*W=t_7Ƿ=~fr {8/ͥz`o -P+u+new5fCswK1(PPcZF*(wI_JM'R;8SxEWZam\ל h0oo]bW5P`$<3 (4]} l잾9goCjhopJwEAgyGRk%4 K ϢqI#둤-||0|8SK'3ՠG5pƮ1-a=PrV2D).5I03bqo̚z;q0E8IZ;v[y< jas+7M3߼lƮ[,v\W?~Vެi˓Lr=q%%"=70Úu?]d%sDƵA[ȯ$ո ԧto˫]Z|0KB7뵈' ˢwA]eYd=jm+&}pK4ut(7}Z숨/[!X N=ڞTN)"fb|\zö#ts+;JU"eA8#ǥpO5$1>)y3BR@eww`x`/|qˬm"˨s؇KUJPp'sMYAPAE8VѾYSɬ@to.e_Ā wOjY<2 J߬oKP/jKnĬT﷦`"X@oNjYm{6#j:wR1Dxƭ^Vb4s%CxT1$h5\]@;̓ 8% 58GP;W`WhLVt 齃؜ Eb{ 7Q/ÈBjeQ|? [VL`bxJKj}e\M-<lN>>Km$"Y ApI[(n7H_hF ^,6Ar'T?0van3`9_pVyـ\۩= ۢbdB1eh N^|C0&.%~_IzjmJ ~H]喒b,H3S,b,/Hڷtwmh*\)r)f\-b+|RMc'p|p<"NԴ1+JU%XWK$rhZTv!N Խ߳;b")]gRkED'Ԩ=2 W]Hvz/~pK(u˃yϼe*^C/61_Q#rax )Dts\x$S#%87OBPZ^p) FfMAL{"$3Ag{HRߒ8dHuN{Xr;*0Q:5}3 F J̺_*(\cOLf9PݩEvXWo5t`[՘Ҟu}Mb_2FoWy)`mY ['$ND0jrs_! ( WTSGdu9@'U0Eokwb׳6I'uZVyW>'lm]uk.|6H1QWƪ Yޯ- npN׽|zjݸP'uzvɣxF>$ >f|NSƔAabE'8`Yv飦S#"C%Jo0w :3 $+OaJ#D؅ںҺ{.>xA[a?Mjϰ?)qsN1Ʊ.Ҍ^QzV&+d ?Uoď# ̳f&q_y}[+U 0PpA)_!AՈ/3G;wQ5%I#1W 0pciJR5~59aQ!룟UTLqDB)xf6}rr&.6 Ѧ~*xfy?acJ[Fh`dQjy;#l1ȓ|Xbfę?W{ 9KG6tI]+q}ll+o,Fa_꾄{wŤZakƁo/sc4+ h:˖Q0Zǁ<^L$Y$NDB7^ݎbsN2o*-?|#w-Оߥ&CfQH,yx2}2ixI; >kgB:v=_'x 5d$/G33! K?-E{M'_aRTã&vCm$[cHPvy֤Q0b d\mJU>„JZ ĥB|Ryv"]CMkԴV: !N=Ǧw1xij 17yL*xĝHPHls!-󓟹DVՐBℝY1;_[_daqclC/l}n.H˼MtPBX:}a0ʤCbJvX~)Fhfwqm?GaZ\Tis|x(oߝy F{v=iL #W4(ZyŷZO,rMI6&zR ‡=, ,Ė#KQkiսTnH]mqK._VHBc̅-qP{[ v@nL}deNW XLj`XB! mfhSIh>2E_ ?C] zie G9Haχ~ &$`p2K. %\j]Ϙ }-f*Ě7Rz(ِb$eV~1$qjEZ)[WiۻZwr^AD2:]7 ZQkvOI³e~kN/aj2j{AV+1~IGPu~3v?"6Ԑ>/κZ?_~{ڗY?^tMv '< =Av)g@>a!Zɒva@=Qï7.ywLL^ EcFLwFxp &H2cӵ`9ĜZuŦ>awKvi´ѵ4f^&z ^o7wiܷf#w_BaL"k]DIm`qԝI]ǹkgq"D>S/:afpЊ Y?|G_(L]Yr>m4* nI% UۣRUh] }49w}TG70 v Svwɼf( TRP؎W ۦy%g$O&̸U;nn2 !BHfz&4 8VEz(otcm/!rα(lݑgإ);cǣ;<#7#x{ʁM܌qx%AŸwwL( |fku)Ys~_crCyR!|Uk~9G^TPszjI BC^<,^Xr6DL I;)f*N#]ZI/8𮘆_SڝR;@>luՕw}HVg~ZĝwEB2`뜻kg[l5CUxsaZnk Dj!ڑ C<|7m,N.1ۘgc ^Q/{\E$s=$'WpQUVNtSl^|dFc\8CbkKm#u2_1593=Z hc^%6ȹ0W[( R,!9)n_3'ɠ"@n >vO\MX'UrTӇ^ꕼkRF^"(q| eEyҐhۋA#;s ǽ#O`lr:xywy-:G˺Io<]#>F>\=fzyG !gIHN#2x.m-s#H//C@ibZ+O"ktNؗ֯ߩblM=t)cj-jӔ6g4.7ZNshyبkYwS)ͳQR ^`ֆg ljU1Y\ XfY,n^wI v4 ڡާ0uq?&g,^i53kNLtTu>Bs8R6THdhm}n7eof`(fV50%WrzߎS$ GҪg2_dەhKOM$B4>`/4s4e&&O:׿W@R+&X1v?vyZ4.D.wX)d R򾺟Z g[߂C+>hNS0`sJg%&yؓ  $Z~.7¥o)bB}0A|uY3t0LoOh:y(/$)O \-0:jƾ^V9:]ձ lh6 &3+Z'rO!yJ?$=-sht|PG9x6f)#Il°;yCR1;z!OIXj!߫lG]僣ޜ{wߐ* UÀ%{̙ }mpIT H³2^GBCqQFbepMz~cj0-^>RҬ}4yz/Rg0WTJ3>؇u3njL&Jcj71Kٕ_'%g>߻K`O9޴}б5"zu`:Jsd5f` kJ|nX\(6 .t9y &6zU6GB@M2sʝ| CD=^ -D4-~8U.!>V"fCF V*L۸'4?W׫^F2Jv$nCc/Cݲ$%deI\q8ȑԄEFfQ)ށj9b;F֔ <,CγO;nFrרķyy,'V\9KJ:*:ӊsePEzgXz}tOU}Yy0,i_9B!yB#EN9C5T܌ u`هMu@hޖ\r6[`)QA `'q,<06ޣuu>U%k'xL3ߤais#<⓱ Pv$zF$ȨWVD؟R|\O8|TpXcO_>)9f`V'fRيp?XO%@Q͚|ƒ;ZUM/ endstream endobj 419 0 obj << /Length1 2606 /Length2 19238 /Length3 0 /Length 20727 /Filter /FlateDecode >> stream xڌP wݝepw=ܝ@n{;{svrt/*bf@iG3; @BQƁHMafZ j#@hIA9w{;'GW @G@ "RK8:yXY'ΜqP4u:3mnCA'h$bb%Lq].@ _LTƂH аqǮhi 6@+;'* `7vs/"߇MLA6 +=,0Yhj>oajcoj[)@ZL` .?幚8U"_4.K,$ 7WĿIڸmff@ K_EX;jl݁ ۬nn666^~.2f^ /3_'G'%%j}t/BdgXؘ̀V6 `3 |/>xl}e/ G@7F`Xoή/Z~#pf.v@k_?[,_ &3wO-\\Y~'kTX- `:XZaԟ6xk=` ƿ!7_2 ɹ wtw#8 |=N@`d}w4pO3s;\o1Î &soA3\pU; '{w?N~REu#ܞC@/btL ~)+ WvivV7k3`? *<`eLw80Tp4wwx#.; m#d&4Cwɥ*|}mN˭XX?-)egߣ&G'$NÓ%GbC$~~ZAv=r|*EX2^C+;JEO%<3CM5Qؖ'-{kЕGqKlz`:K$g&%W=&E>|Ep5Ye:R]RxuspTʽn` \kJr#JJ%_'yk('t8g IN%+ ziTF"uVaghF =zs8k޵]bьuuc%Ӧ36&*0^LAÊL ]:q[>-͟"8WX4ySxNЋCJY/H25ڴt#Q7 e)Nc%H͒W}Աrـi,X}dz?=46TFP;*sI01hLp\?7$gz, 6}Hൕ#‹AhTFA I琋.E0Af7mMT51 3!3ω!I"lԒ\8@u &-H0F˶P7!72_navZ!w|/hTvI1_W넯}V;5+Cm~'@f&ib !XUѦd;NQ!Jiaw5'6*[ݿiP\{pZB(kaa9Esƽg| 5ᐮ u4D<;b_%{#t,]`i }1ɜ"mn*e,}jV:% PeqؓU0+l~4Kdaѓ*](@޽cIdQ/pfPIRAL!esi԰ <m?݌kAY ;^SG'1=,8Dv :8]b<\ײʣVLS7s M>*]1!ڃHv,$zdZ/ ) SghڇCZ\K$u k-慍״bx1٤ݘFlne|nG">q nQ>G(IW ʱQhIB羰ȎgHFD[s..J/1;kf¥9y)eZҐq%;Zbͧ svY#KD3|@DVg@8\c{x]$&vdyEN&F<$iqڵ,{9Ȭ+]lLa2<ėf(! \n9^yA_"j;{v|d?|nq((9EsiJ$cV؋cũZw2]L&a$rt$ N7FJ *?HuYb%c$dd Zcׯ1u0r %b2B?c;4Dj8HvWfvȁ%YYO<҇Eᥘ(c}]Oe!q7<=`;38OeOLuH'qc>k9d ʄ˕$mBv1uN{3d'W()HOYWIӆ?Љ8WPrTi]߲RlQ=Yd=AcPk-=CIKRXj6]8MqFI-7Ga;shq|!jV_Q*P5fdj#찧,r{'5"wiulՖ]/\3IQ Ʒ2=O'txo{FڃXk@%Ȃo@[t;G9﷋O=f‹ PR9aՏ&O TVs= N"@UZd\ryo`řO㜀%90}AS3I+hm¡ѣo?Yu||r(}ghP*ׄtlőQɸc֎[G2< G|q @NĈ;viYKb1e+jF -bKwE[ۋ:1_L ZtaPY=~=K'xcU_sGy@LJ:@[g#Ez¦hI軘(I/YvfԲ$$"Dlˉ[}~GeDY@d5 3|aX=q6S.FbFNJu}əldO mvNrcV2W)gƹ2[݈.w([2¯'`2> ]Z`ZђPPԋҊk!Gfj-$ByU+x즻;4cx!- XrY`NkDn ݊??{I7[҇A;wبk:בbHmS5XR'($l[vob m4FO6l~Ʀ+|X;XG5ȱkcI<̄P`Мq?0h*# !Cs͎"[{W] 0UC'R +y3!K߄ X܌h?/_}/sasZ*@"%am) "dž:/d!(9oEY|-\y@=3Aqz7$g-<_+/^f3Ў=SZCc-u$uɰdI8(;Q u/v ):fN!\wZPv?tf?;JJKmҵ;[Omh=+*aȴ]C`l~=Xt]~T+t*U.dգݽkzpKIXRi':*5mch2i AS"PoaV>E[@tASR77PAXCڬxxi8NF !`H$j^n ||L.+zS@abr 5yI=OY1 hg6#Q!ܡ>ϲSɄb0lc!-CCb԰O3%duNoe+Ba&b!XUj44C6P1㰈$GT XSϪ5%8CƹKQ)bBA&YیR$V5>Nl0t 7/aFFN9r5sdm]7U$&OiQIIe~nԴ]x,0l*=kq't,&,(n)&yM kgj3఍\Π4rjeU<_ߙcdB\uQKz(( Zwtaoz!yZ)[eB}*sQJ2 ~_EcgXFx"i{sZ_zQ l| 8(#tK}) Zߚz@ZunSd]}V+~Gʹ^Nh_bR% T)nW$뮣Bx9y&}?Q!uW>*,jMTwFje;3ϊB* :;r&S3:`8o'PG,uآeJV#-;_#G`CݚE&/ nDbo/y3 vj$k4,XidO!~,(uQ>Oc(|pZ KCqXhXM38M(V}bCkb"}^5CCVפxuzMQN6[D+i!mUzzTR`tU1Mj/uaЪҋ~|>6ƽF{Ra,RZ% y!ʕ|@\h,;B)o1ͱlA^Si98D2"*}˽0_^ j~H2o #޿}O[ ]y-̙(3U@:JC-zI2$xTPLG"W,H.:[ .*MNHU^ o( HJbTDnkeEYkӄ fMrHST$/!*c+ [Xk ^TvS|[:SACBBdYqݯ㧵=K 0"ek@M8&뽥sxE! W>ܺ+ b A4<؈Ha8S/lX~)^@D65VQ/bI4ɢWnjag,:{8z:n'uTtbGQe ◤8@0cYwp'XЈKZ )<(֓<ɐ&bOxj^ZdPbCH+tڌ$ .;קclYǺpINWxl\SEqi] %3x?{7x1KﵸV22 T#OE*፟K>aav,Ub]"2EhsBk-;#H V+d -w]VXp!joD]>|;iV(! /V '7>ʞy~%EvnÔ> X6z܏%K|j:gDܧJNE=Yd)& @[u})Mn2MT rtususW$EXiekvhl3v aٽ< 7K@duhz/+t@az6QY5-dqv_糒{>k:zCU&C4(sϥԐABO_ăTtYL*1h8q­x:#9TDLrg0Ű>_P_64?Ve酾\m\tޭvqi;%A!.xHdtÿ5pbLǘS-aQjLbc2>9W+I]r|I||OIHvM?c\}K>rhWvo섵qh`I! 1MT!~[$N|7vVpx6+cUs7o1(@ %i +e?G*hjB:AlM8;7cu*BE/ijGnfվ!ꈴzcULk MU[cV} d4m{4:;/*ޢk}?y}їv63Ű"Ke"ڤZDs _kw=FUKc Zr~W/Tn:v*L1z[E 9r$-\ K/d#/tޙn݅V_Ct U2~gi6zCؙLZڝIn[yܔ.є=!eܨ^.0nJ(BZǐX]%G௣›$.8eqWdm oSLCԩ|@*_F^[69&LWR%:ǡcv6' n`,Ahe-zin Vޮj+Bf^ 7a ]JNVڱGˣky+2,Sw|1; [Ѯh "r&'He?.N'iL/FڨX}Zēs8' c2DPu\bciևl>Y/9,y]Wբ2h{GpnM4TX ́cR!pHݜ%iO73i\Ζ/yQLF4nJƗތi &|K-%Q|TPI6<<ͻ/#Phm_7-D((@R#i"oTҠ#ʾ{ CcQx%XFv'>Y1)-.0hp"5:Pf r"y)J%+ eOD:}%Qf9KYABhby DLZ)_/iK]w]mK޲t.\" VLRz6ekbBwl-.t[q̕%ȩZxҷQE~=O֝gz CwEN[ԏ5#أ)vtάR < ^ȶՄY7«p?d|YT #`EZl)8HU1g̛@^9瓀QTt4#|AuV`' ;bOÌ JA8bV?jtE(6g9{jԝ Ñ}cdk6Z I b:iţ#c[[BRqQA7^)hqmoYXlJo;܄<b9f?RG'tHj3 _2:FHeބE1]9y v<ُNd?m *tAQq >0*WL6hb+uGdcJ`!ݩ{$^dLjFT9|7Y1݃oYwҞ~Tdxt Kz4~_ž6X&JH[oe'Sg;~!a[/Olr]Q: QDT v+.}Nz% BBt/yCyf.6_ׇ1W{`m0Շ+3۫5ӀY-$ʦKK/mNo d+\BXKbF%QtwUH&H,}+*!k'J YBH0lM(Ӏ;ڄ3M칩]ܮկOiUn'M G>խ;XVl-+7&(:g'>!TjWq 쀤PnEZ XXƙTZgO ){,5x0ݠ<| -15J7ɶ!RQ*]0tFKk8֓A EJ^Hv|{߸: D}ɑRCԆ\ȝ@hYħ>8Ţt\TKOSt&ڥFj0ڇJ2p~6}u7{Cqh)c)?BL.J]k#j#됝柀2^%VH0nժux O_ E6>D ,s;|%bJ_10.FB"ho}+FXx}J(\OZʎ"ß**69Ci8'sCG{Fc&ur+*V[:6P \~qS ^+'U/h~Ւ4(u6.PB_)&h 'rv(g1k]?۪c4HEߊ 6"& RIɤwm>xB!yd5Մ>"'ܓ6d$Ŷ>Rn=n86{\zuek!O;#QD."g6WfqC]wgpD:`[hmtś?LuѹejC8Zj'dtX)ԌA$Lk\B8+ǁb6gj&l$TlO[ed3h#nU1^4yXh4zۊSQW7*/{ٜ'ŞZK} 픫@-WTᨰt6^Hh/BGz K&ܶKaZ9wg/ ܩ%yDzu9^` Ѭ2[>@Tb |n5O48[J̚y!*,[ O Q%|)~ęLّb _ڮ^)y\^~-Kη|T| bR2+ec6Bz+b_(5\֫[1. & ~EoM!NZhAKZ?V0i$! nT+6KRb;]7*B0jhZ. 3BZ-R!@'bF4hfYP B~9X%b 1JYeAGˈwxQ>"9{+)?--Y"K#,N 3j„Kك |/qKSYYaqbq>F&-"x$/BCo,юpw,GqBXfyu,J[)T 0V ALo(ܵM?VYbqv}PC+&|'N-C#$nVk 댱qi59UV6m2#j#GdS#2rP=W9.lfbG)ɕỹdAfiϊIX/3A^b)Y?~ʹW=#]U4=AD`Qtg( TovW^5Sx+aq(x7+ZޝLQ9fqGXTTJøe޾@UG1ė !x;:2`(2Sim0Gs3JnUUcJyM(:;{iR_lw_\}ÂLF+2b3hn1OgD-xjw܂"A~ZYBO%6~5E704H'.Zf3+-Dimljk3`!E&/r }Ȣ~k<6J*=}{20F;6mTed $R•aV {+/wp."6fӓ4R}Ҡ >sr;-!&T?:@1ċ%wR\-IL%ͳ=C ɻ7W1ƅ%򯿒-s?XPPjSzyEw*tzK\#%=hT v^ vY [OS8o Van+ˊ!NitZ2TznV-@Gn.^Um:TatcrK76qӬ?K](nQ_^EHژZ{ r}eDM<14p.f33Nΐ4DiՏ}3lEĻ!X>ױ3My+6Ռx/b/^S(n#II|-̫ӯdȻyqXY@yc+gk ȭ: !zdf.Lӱ,B7¼% _y[wF/ϕ J(tFB{ArISKf̩џtX2鯆`;[4 ;Cig@~ێ}ot (oBW.]%'DrɨELmEv {ՃfuӈtII.=^)ߖ2Uj@|l=O8M#g\dm))9:TxsRބ)ś {51FvsMƜ ,PoײȮ{laN|o}x m॥"H{9W.2Dɵ/'}q \ 3@蚿|ߒNb: [T!}v&œ[4L'<HCqh/5gI~F7OKPJ5Hѵ\ڄ945CéרW\ɋ6hMGDΈ~B[O(d|aj'Cj_Ϋ7gIƸj#/O<~U ;9- }~=nZ F} 6umzf74VNJ6#߂I4)eA&?]gTт,9Cܬ67P']YܬG~eo?#}j',=lZHb>CT9JoWWUB=!II*mK@~r)z,Ը&R5G%~nDwiAW46J?Ahv;e钾%}"䔝^}'EĨGJNU}`׬GP0[,u&3CIaRذ]riUzd7?AȃATpbt%;-;f#ei(:;SXO"CBxc*Y]9JZ10s1> e%'XXK96Y@iyj= F7it<\67H7oP@$ C-8ǼM:# @4.().j$%^*9JQ°%!&#`]̀fw[>_&ZGh\({Tj`Ori%ڭ5?ϫ/C \]+wY.,p0g]2.$~Wj''2@L~O"^^EBkb{#_aU}T1 1*F8=gi8NbB` #ծbK7֑ӳX:Gib7o` RX8]3_4.?,jyz3 kLz sȁi K7~@X Fϩij7!k-G*mno1Y2Xׅş/s(39aiWCb)w9V+MupuiZ~%mA>R12>:VN<8h2Am'Xk(p ̷}7:ٓfEO{3AA:)j~*_wmmXj ?qt}a# :-I.rmm3#s[/f[N*Nb5|o(~<fDsjmc33A:13w33̬K[z>:'`M50rj'xuÍn{]y;QHXTq>KK`j%0UƉ+Rh0^93oRS/jfs_kJRrdm3KgυV_=feD_;*<:,#a$\K8${e"*0pc z9+Q&$0S&2{}1NJ_D ?-\HPl ; օ5\S'+UrQh11 /^xx DŽM&,@QW_[9$_b7[?-ߦ]_=+`MQӧElD*imG/ϵ\,2I3dp "oA/ "SۑO]L,Vɤ]\}}Ɯ{%>b' (OlU9h7BX\ ]jK@o(Rӓ ӣNWk\ j'jm~NfCM>ȟÒc+)-'=]]JrF'*-b(`ys*yYSsfS7; I* # =d˯+s0ʨ_a6=XC"CC$=٘h4zSq|bsԑd@E$!qn+wr!aEŏXZ(rN cES[ N";ƕ /†۰x6N,<[O8 /SAV? ]UUW i& 8vdWo3X|&EL6ny` \٧Vmnɛ EHqN~~DqoU@pIz#bW w&ZesnWIc!)˘sB*ܡ#,lAvT&^$PX~jpU5,-Sv %̚y5?ƊwCeK^Ò 2eM U^@!*`sVƭ`OX9өkVoN}2*=>l-"1eA;$d@/2  ?۾\_NHC=O*f=T&6_- YXޕ^|iX[QBLiPz@N.۝GlR(Tm)٫)\qkO2}<%>[d~2r2o=<}]"Y \:? jM sqBx0 JpDc|*U)ig e e'}OK?/!2FkfTwAox[- < .*CPrt4VVxL՛9[/n})iKwl }=Em̵Eh&5ϚwDP&űsx-v![D?m|Nq=_C.B]83u}1FmON ~l7\&5kq)b=Lܦ}_fӝRyJ^?%:HnٻOr3c< jdeI0ZE@]ۭy!r|^M P1vɶT]ɻDv!,,f]>۳bD8?'"m;I'tȦgpiD'K;< u.I04]'Ub*Mm6;.vY7'GuL?T7dG< ;V%Ոg$0Ur?`ƪPUt!psVy _ -P0cQTƴ1_[cUG0o9P5ͪ96ޝF[b=Bh7sx& :4CboD=VTF-P1,Kj4qHlxoP35r!)Rh7G>\gh4{(5B]eI '{ &8GEƟ 8>v "|~١(EֆѰxĆW-M|q˨B1VOژR`qa&ESz'niU6:)f+oYTy E^{&»vU {]H4)iE1ꧽV6P6kU@04uNOgh:vDT*؏.[,c-"*ld@W/}_#z8fjoFd(ݬ >;CfgxuɤޢPQ2y&o2sAgc ,w%?ldmfGE:k i`:Pa_å%)@.L4'Ż\g>H`m%vx]PY4;qc>ܮfA2 dFBbbY9'G(]-r>_*%LG&4ۚQag%,񷇗0-nڢ(|9CD}ޘ &cM bvպ7 &Pd>Z^"[)zAgΤ|@!Qvk1俚Aoƿ`2%4X-C!3dbqHfK^{$iSַWy|1TSH~0|[<" B> stream xڍuT\tHHJʀ9H#ݩ 00--Ht7H7tѷ]{3:6+ H5 YY ((/! A%wPhDjP!(" p( 6M>F#<] v(.-֜(t,  =#!`JpU F@pO` J|("|Y~Pdv8|HC_eЗG``8 I| 5=p{mlQqu7C] F](8v=7tvB8l[0 rP.`_m5 ` vmѝwxL~}^eC= \~yeg:ܿ !<޼E@wWlTT"P@_4ǟ Zdo* ,`;_Uy\(/AA0ObWz"4蹀wC UEГ! }lAY!z.:$3 5kGSDw7FҿT[#l~͜$D7m {5@Shz[ ~|~~?&PB?`?oj~ 4 ~;/֮..24ſ&DXKpxBޝwmPjuI2'K9 ^"gycĞw(r0]y Otsi70uP7٪F^u+g@G:f5,gW1lSve5rۗEцQo2&hXpQ\Gcon }w6^9+1D>5a:"aLR;]nuᵦwӜuHR52j^%,%PW՟uVH헐m{FzgkK}Q<-nj۟-6Ix!uׯ#S Fʲ TR@#^_ՍF ϮhSUv<)?>:XNZTeGGrF+m,yCdI4z+<-HNnHح\w77jEc:Wƥ6nKlIY$6<(ݯ?Ё_!j痂8n>%!ft;*`Uo3g9~’s'N[LkzVtu< ]LzM怀̓z\̞մZaA#k[JPTgr-^R/뜊S`0cV{A崡M_.Չ_ն~zĩY] ٿWhf?Hqd; T1^ɘ׳i'8 _V:J%>DV(LȨ!jϊLc? 7nbxs<~]cѯo8&CLni.aBL`N v3ڰ ;CzWN wT<ȭ5O Fک j481";Ғ 29rZ %MOb b,8Nٴ~g 8&ߎbLPm=#}?DOxlk4Y:q~*QWD9Q0i7v?N?cL aCӋ#}j_#,shUݒ͊4vY gw?IR!>s`<wP߁H+rzBn7EGA`l:nqn^uONE1}3g$d߼&rj]z^8.jcX\& lDF/C7qǵ!SQLe\Ĺ *0%se=]slLv8PUBQ |MP1B-Qɵ Ln/Y67YeMFVo0 .fm;1o5'DFC1vt(➹B):*L]4B} `kVvKmF(! 3EJxNxxy~߶ V:xrNX! Y9Zę7&)ێؙ`W'A=ң烪~kSr]ѵ銽nF)){ǼَQ?z[Xr—-TjHp}&9,#FVJf^w=bO؄RVi?k7+8E+locJ%>xaz2hk2-P_1 չ&}@hqAuӔ`Lۭ8aWsv+3&^Q>QE]Ƴi]EW[Vϛ0| V.Ϝi]1Uo:f%dJTjMR`4LLG2(2bW]Vr٪y߻V͞XsXP-8z@d2ĸ1C؈]M1F r96i%R /A)%M"~pʕN8Ux~9&?bJb ?G]uHѲs 8l܇2>?+tYu%4$=: gKwϞ@2WKuy,q9>&v-ՙVr{{GqR"qM^ƭN$˘ 'o9}ڗ/.?S3euӭyyVGpƅv7).O1Y athjT.!+Szie_.H/|+`p04o峽XiKh7mEAQl>n!$4x-mǙ$9$}MLh6K;QG!#Cԯ?&ZA3ow#00X (982.R,R9p?:$=x I-XP%ψçB]:`Z~t 6Q0=rYyw|'+3[h57o^G3F<}Grs\`(&vC4v*Xű|ޝz/FYJiy Wɧu:[Cp_)IWa8~ zw9UFL/bKevcQCO+i[J?\uhBLZ${7,{ll\r1M[D$I?.eݫm l>:{OۼGxX2Eds]/>*!s965iN+?m̝YuZ<'s]xUm|JTV&otW.`CeGL {Lv :M-:"^15Y*ȅ\C28vڱݳQӺ Wy"}˟¨p9i,=抓ݠ*ZmhIXZUvw9G(Qo_uMBK#Y7Cd%UG>h+NMF5ȥxQDW|ـVrʒ܃[f8؛ͥ&URWM{Utce0/ |W;^q%+d~;{ʞͣGI|w4҄]O73>IKt/0hs) Z `zSAGPuE^ֻ,xF %1iT!ua|L5g._0M7hkqΣS{ 9lh}b\|_3C$Ϯmue>v@jY"L0Ρr _^~p;0>{T.vUNU;e^a~PyRXO;T=,@'YIރ=QDq0X̓(<:U9?$ċ*H`kSߨfm%E)i:"0m@/oIvR=/ jPvhBU vtN"f:u{-o{810Ts-D{ \M%{Y/suh:T M&o丌s޴ MiչvL^tJ Ѥm%0+ f`ʋ'Dqn=_SiíΰۦO H<{]w,+L |joPĞ2m/Awqyדn܇'o=Ҭ\0a" [z;ak9rsknUխa^ZURd -K2EYC^n]yrGӖ-I%jdd* QΥX+C|D,X5<ݦ(HUH׫1EB#7TJ9<&-S@_S CXІ0mibv]7w<+(Ffq5'%?po׈}Q[!F3`/Yia$t(ФNoh|~ϬOV }J/] .)8n{s{ϵ!!$RJ d)||=l$gIxWt1"3uf*ƦiU?[U57<y9+g)c N/Oz 568rg ,v{02L 6NZWNFLGۥkk$qQ<np}IR~Dg-(b"ĵWZQ/Ǔ4˻sy) P"E2`% uVsbj4i Ą"xo'>lxC2$O4VVdB:': ((;#nV{f@ȅ J`qN>QRs:?de]_q~ǧW6AOͥ㝵Ӳ/ endstream endobj 423 0 obj << /Length1 1826 /Length2 12147 /Length3 0 /Length 13291 /Filter /FlateDecode >> stream xڍPҀ[pC 0 {pww ]Bp ,&-}bնWAM,nfg83 $59ll,llHZ`gH: G'D_ L jl(9<ll669 `32 @rBp[X:O)=q[#(-AM6M;S0\ Y:; mX-Dn`gK 2Q2@h 4$j%/x؀MA#.3#5:@S^ jeY8C< 45B< 9PQbqvwf!fm^]`ɫ2kdwvbqQ#n^, 1AO 2}ߗk sx3?0sgՆ\@RۼYlllnjG-{ПJ?į5x{_yA_H^N@Wo;; l 0Y!Hxw^Ǐ翿 _'bW̪wUJHعyvv6/7Owvlx*{)ɠ{mAuA߀%ߌd\lleڂmrB,pZ4]19\:i:0H~Tq5ܫ¬YT%p` 1/Wu K׮ [;('W_\ p7ʩq)V1{o|G2'o =%e/ט8,Uч`'n=ӥ"߄ʪrrG( ؋$3ް[JʚBb $LJN䄘ʥ Mn{&2Kky8]*YZ)i=5l]?g,yjĬı; BTL6 G9iXMr y2d[DCqp#.шwj6ac/g3D"j$-C*=|lD4?"&&TddfDON G(*"^tF-kp(7@/΅3{?"˂0Il7 AϋytĜz"LYN r-gt"\]|錞 `K9zL HWZMwТƍ-)Z_}YK}Kp4m~d}?L LI?Hkv ˨8.W%0H([cDZ^<[iL堕 7|5t`1/e9Nv\s);Agbx~L{ +l5Iȅk#wCmX|VQICy%p|e3EZo҄?7Zkr%} o(~K\ʣm nFjU#/>2qKmlE8Yqu޷`wѶn(_3w<IS[V=KB - WQai=Ya!G#| LυT)XLb,ldw5aw½zlr)4a K!3O6᪳ %$O2;ra =RKVT L8ߵY.` ٕ95ET#VЇ3os, P^d.+X^{Mq,8؀pl@s{+`&aPD0"CCQWu<>BC0xx@lQ'18E,hF(#tS:]4%Կڇ~} YߏR~zO뙦UBn7uÀF)a BzmLCNOU*N8f|^T\ !!cDb#?#\[k]"ĕπrKMf$ L{Ij鑞O %A ?öjoQlcz/ `oμ;mbmŠ6 hZ58]">/)D3tYPv9=bK{g䨏[ ib?uKBL{ mn;-Š1fH/6n&@/5 ?gYsi %j(R$rlyT ə|"&m7bZK5鲴(6Ow0kuz&Pʗb nI׆h^9,M I\eJ\'ړJ- O}ǜyM/$je>3"y(9 Gh!$%e/Yi|}]yX3y()9)ҹ=.V p>*QM2>'?jӰ̤'| BhA*|!hB=r9:&:')5SQ@O혚iZiJmn6J􀋆3*ƚM0 oJp# g/']'#߂'aHg0]dɍztA̗$,7˗a)uNn")۳О)h-6eMd {Wo<517B&^Vz'bպ8b@&Y&AMul'X-epw{qaע->\57;fTpǏmP(E\pA+^A\,r"/gYSQ#rw^?"Ksۇ PIY{i7v6pN4%m/]ߍ%ݾ ҁ(?If1 IS# O=6hwFZ(w0M2-d)?+LLܛ 6XIgT鑤f2uyKkLl?w>7l=0<݇pyT_&z]~l*1an$6 /1{̬9-0bFlK[L:ĻA]Wy޽L99-r<{L4EQpFvwrpR=1l-^,|}{ A!D!h| $vsW`nQr@  O܀2]W-sVrhm~i- 78`\{ 8$Y?AN3 C9 irFl1M#,{z3w&y_gL^_|4Ĵ$mo~ Nʙ"ky ?78MכUpy*L5H II ?d^r|t)jR0A(!A@9C>A6M-[]PF%wt?W~@ťGaajO gg2ٿ@ەF80zlĤ>! tRPj-KRwk+oxpbz-X߹xfd7L4+1! \@ ~]K7F1OT@;=e!SIFO040Ý#43r=nmHMS̡&VPdxW*TH+<=nDT?%|mc=1iC9n5j}&j0|Ehp1 *S7;-5pZZM6:EFk|_뷪/^,CyҢQjAX:jDž/(36S7NFN-ʎtqGYmnaVúLtMYShL4D~߳$ N 4|p;3qY Gzih+Уc_rCE g2 \œq#(BaԻ cŀMCb'!:=Yu웼jz(I5ٯ}_KjxF  cߚ!^~đ=[^(unW aW"b6'+ɏ$d9 fRYo4:>F x9E+Hs:*NP \K/;T> mz@X;=;MZ$~j}@ Z>E1GlB͹JMdCp91s\kܞiNhVm+ڣᾳs,D.vM7U3|i8YT1L?#o4?LM;&!?3LC<뇉+e̾| [2nrvyuE#.EjIWAqyԌ>8ߏåÍ?*r+2cn :En+gVt8ӓ/0S-]%Ep@*OҩU|g+ZCÿ-ij`ÿc'#`bw"߿mkmJmLIR53ݾ%$ugzYX\0CG c'ct%a_0ͩCdQOuo@ԉ|'rL>H~}ї6ʇ1Vr%߁kg1/}6T9%-[߷jnt~~mjfw cӋ 5ف1ԃp.ZfXaYՇW5Kv+Cj+FP O%xPƹY%m Ц{q"T%/O?:iݭCo'OY5cA2,'sW6֒qJ+ϫ渴M =ތqn)s Ԩ5=!J$aQ;ƗQwq~FTWsWO\Q`[!;H0JnN(C2m4la+~$-¶,(76>*o ?bbJ3}v) !wKX9}]? s;{>}$˓FK^_\rO9s%%(V`q KrepJg> |zJ\CO}yWJw*"xB~ Ҵ>2(!| 0Yq9,<$խFq8WA< YdZ,*P"%]fI">NHŒ7$QLӒB7SQS 82/wC;>/z{3R\TS}5aWJX>9Hw~Л.X(V_C|U->u/K.XSyJ1Eau}BjrQ@iF?5Gݨ :=ofb  J8ȹE5^l6f gA\kp Mi㿻xXUA*VzeOdZ!שʑ6(+E[Ո"0y @iv|b`:*lyOm`j ):٤v;)NTJ'T[EV 2`[O;՝6H*$WDm;zy(m/Mmjc>Luq@oXx.A!솇KEF?Imt*'-JS!AZYʰ&oހ^XHl>F pgRz9m)5ÍzQ5=]W㻂_ҟxu|CԝEK{]jUe'zeU?t ;N?/r |Mcf}n TH- {Z0ԗ cuOM(>Wj2qHSD9e Myj"-Ľq4V$Z\nb.ɛ|գ a&n'"{qӾy{I/18_&F3-g_Ф)@#eE'"t>t9NA+9΅KCޫL;3In;d<#/kzͅA9֑rWh2TL#mKn[ݑ"r "f?)J5'@G7q-!5SVze0C?Hjnpr{x]VYB 4z/Hcs3Q9VrD%7"ZމOPΚn*Id*1l3s;k*&IcZ#chXUܻDi-m屷Z3G r6S](V>4}бR\QXʎ[_f;p *Kߣq8=C+Ii7pQ}F舾Ƙ;"b^jE$p9\+4ZKzIc_Sj\VI0Vخ`Kt5Ey=k ,atkʕX1NϜ&/ߎЌ 0|m[ÑeNRBw(~ A|xR|2ܞ$aV^Zqoi`U.J꼧5ec<`׫eefin,I r,l_Fi-X='{떈X$k.| (T~%/O(%с4!F0U|Sy{9/_X}C܄6~S4c@W^c4b+f(l4dƮAb %+sW {SQ:*GM =񻤇 '~rBkM3Y,[(-r>TZ:t ^Nj3R8dg[ұtQ9m43 &L4YI'cv7Kh'O?Vtsg5+gZJZdJu8ȩyZ"#q&B|ѧ l wM  ã%x Y!:er vr%օ G);tѩ1OOPb^fvi0_{8+0G,N*Ӛ21",X.T;p~2o m0nrAeQa|VYޘߵm)2]@W7cRRi2l0Ϗ^Z|g≮,6_QXdnyl]ew6rd+{(zӤN7xdSHM4yV^eq%Q5Me5в]CG4(_dVu!4+׬ 9`.fmn2"GW%b0LN\H߉'u-88-?] Z5n\ f-e}ӅQtb7<2x h-nmQe1H;)aʃ%Ǯ?#},PVu@}5o,#^';*=L&>AJ?UW]::zD`}p\Z٢ D>=kiGij:vk*O^e,mXgvu1+50AC䉌!΁C'rX~m$ ª endstream endobj 425 0 obj << /Length1 2725 /Length2 17930 /Length3 0 /Length 19485 /Filter /FlateDecode >> stream xڌct]vv&m4mضݠqll6mvFgӾ9?Ik9׺)) \x"r*L&&V&&JJUK :ގ/' H&j2HY<̜QK' lfigj+PJ?V 9:X#ab;_Jb_o{ l8}V/B`fZv@c8Yzt@C `z93cfS?jaa{7=  oZ_*YJٙԾ2qxPg{>7=h?[d{؂[Ϳ,k0 h]]@K"gZknM-]mV,Bv栁f`Yhhbbq2X-_@z?:X.gСK-f37,#''#O&ШA+k ה]@.C_`0 q N?(d0AF?SŔ@1A\( QTʧiA|?dibY:& (?rf(\,mLX~Ael'(_ fNF&@_bI83[l t{nDmboJd-C2 fjocc?,A' >4&PwDYY ?I@zߏ2o?@MteYA[AS` Pcl~o=1ʌRbفO@\mߣz1 i335(igcOThAO_Y9c6Pcl\"btUGW{_6 _ghky8JUlclW`P=&.Nw@1\Ct *sk@APx?Հ\N?.z#A񿾇@ Ҽ oUmHC;8kݛ+)B yb ,1p%(r 3-}{ _M{50I`+E"!uJI qňi*Vgťo7-DepE_su:lG->8͘-=F`ի2ńpќJ+9\.A8Sj%)\O݁7u1\Xo)dzu3 iܭWBMb|^{sh*Ō{m i(Ԣ(&jqm A3xHBPMē?Z; DBY'~^1> 3. n4azYu㡿~j[Z~Z&}2)/!9,\L41b'HTu_lJ)]mP( .lYH֫C9"*ݢg 7d,5ys 9c lxlݱgypPU(_arFqcI)ם&:bb%NJ8R'DxҸe@4XmAawLJAOv4Ht8?o˾Vp'1;?4)Qw_6T nojG#3fr2ox|qb$еKS :`ަhB,Al>J7ط%P^BΠ &3yHۂQ05L^ׁS)QS:–5 m<1Gbr7ٔs6 sMlPc1/:ZY!41'VUK`¿~؞5T;u-[4ʼI\n 64 ̤^3P /B}э;}}ӈn=;!JC)UHi6Ez.oFr ֥Ulέ2!W꩸Йv.~^uA6&mn>sb7[cG:WeQ)4!wBWx;d2Ўkw:ŇDv+䲀Gw6mv CKRAl io\,ɹdeGċ1~Y( lctx#bF8ot, t RZē~~`. +y٩t\1͸T6$94{)7jnM9\6 bWHxsBNVN x/L{ŧב3bilI3}F0'B- %ɽү} AmZ3G7 ';SiNmT1obFg4z5+v!nBD 6 YS#~|JmQ1Oq(dnlOp'dm7W)hf100"8j؇Q#wUiym$'wBxK|]7Vc%erكMiM96YhoE?vE=B&K>.1B}S׉yI]0n?Zjם_qH;_'27gZ N W2BbcqȤcTV72vF8齦F|[$6h8v~!@)d1I٠ %0_ki%~ ۣCj1+q0( Q&= uXp84{]ާ3+&GY\ .1/CQк–ce%Lnym!AdžqRG";iURᗱkŏ^6(-f#yW, 1*Z.OV5aqfltqDi7%{;H6-t ǰ{X8֚דe L~벘n]lLlȉ1}S{ a_“Oؐe81oL~8}0A~6=̧wu\P$;M'Nzo!"uZ H-fXoF0vusO96#xՙ=M D̼=.uFd{B}޺4W܎7ኴ}B ĺcضUo4dz'дVBv#/:. 8|N,z|\39 lϺО XΝ K޺ N"5n\(Wrwn217B6ie $5 1NrJ`G]lmpzXy4kC=5끞**4ߴ~dQl>\h {蚻szMHK׌L$0 -!G٨&sݫ>ZfNLH% .ըP%vʙ^l;&p6i-~r3A poO˧Kv xvuSO L׷{Y'q3_9vncudq'icOuӏ8YMSݤHC𗰛Gc5iD_v?仲zg.bjB|V)@VRU?AX[UG7A1;2y[87W_}qkHACn۲j٠`1,"K%J.LHNC?/O9PqMqH[ ʉܱ7 ; j~.1XOAÊ>H* #w /J~xՓƬGz~ʖ@Dgj$KUN$tۺF cy8*@B6ʞº8%ggˡB3zNCxhG͜r Y6%6u4R-wG[gt(@w[ gķO!'SVӛQ^œ_ą}q q_no}Se=Y\T鎅.+nv'ϔZ#Tұj`, Tt/U_8fzNuUifOrddN+Dh3w% icx޽ ^`# y ~F[CQEJeSJ`77+WBpT*r_|= )"3h6p/J$\plQ1B%k^ 1FZư"Plэ?M;.f A!ar (2b9nN$+k_ϹALO@_ɵoh^Bщςo {Qܒaxsy"wQ a}=NK~ )i؍FSOywHFyI漊I1[}Qm`^IU ! 0%.n\G`U]#w=?HݔI &,XaL$p&R?ZQ?'d&rwñY7kFi-IJgr"vw G-b( TapHNROk43l4 X>)'Dpj^oGQXi ɯ1Mky)G &jB Yˎ#^p̻"Cwtf_ADpިj]6j^|p}M)"F -<0xDqY3:<8d "D,-wiFd|zT'6iGM嘛O~۫!HB$&b+1O{ V όX]",e|k(|S/"M0/C8L l(psՌWP+ ׬bQ1;y[F{faBU^- uE&c WxKÞu9 u'7w(g'yU.o{Cz|hE|ѣ1me.ꌓE`2A2;P/llxӫ"!TFyOQX~l}ʏ6ڔoҏL$ e}9j_woCM!R^H,Ġw3%#Sv?k5 eA_aT:u?OC;j|KsVh5a0pXPe9ԛp3\89Vur~K g[?{K/F wuLV@ҧ~Ҷ*/nPUx"~@j 5y*M[G"]%"ޫ<ތe_LvV"FLطh؁0}-1^ uT>D;E¼ >RΠ=0B X]fUǻ9X%3##xxKX^c(Km"Dpa2\]͝k<:Hg\ztU Bg ,Qa@k!YQn,6Y5u+BY;v/ilTLNYˁhdiklԛq%<,Zs#̽!Q5#çQ"7n[aE{붉gR-N8G,4|F7x#"ٮ=u4mK E:ތ`<ƁixUs6br!'b5ϏBQ.FֻG9EW 7|V8o[Ci($I\G_$CGP hDȚs6&> "F}&RLeh}'V :c rhcuH'R+Mev(>9Dq[E2"i*W8k[e`<es*W95 TZĹ@Z8^nַFKzTcGC.9qδȧT{~IgI. g0l"{e s¤%;-E}~S̹s7]Txi'5Dxk4GκGKk Je͠Lˆ@()%p\6o1UyX2ѕ^z6^xu1 lW8xS #sLu+o- \z(ռŮ⹵8MqҜF%)_E!zp Y|0 msUâ%?TʸjmT4V ̖.HV/̝.+D7qO]D#׍yjnphv;a!<7'ݚKd])9Ѽ wz$p6. %x0'~(fut.B3}CGx|N泐I֚i`oJ{x0qBFBťԲt`;SX"<\I>] aODtm/8`tH?^<+,rЌ7l0"- 9⺐Ww!α uuo72 M? t!9X5̙6 t>Mi+MOƮB]+q>5ەDe[5]WA/@GTpElyG+υRy<'Y[ɂEj^*^ g CCe ۰;k#>qpu:xn `v 3X Sw'2"K$Djd"c ͔̆Y'>WԟRvt0~X*|##mp>ʺİ!v LpW,lxOd<F}2JN\ C8IK/GխJ(10p@\9|=͋> 1kʣ,e4rh "6:yY)q}@\|,mGEN9X3Vwγa逬C#~3656G"{V{kĘM|pF3Y^K=caCUywõէvRFk@hSUTLQ4D=c*Di+DB.\N;UAײKW=kII~?E@*ػ %/bh|\-.cq]JGN ]avO F x>=6ޚWi*+1IxW1%&(Q,:`?rTQJtʞpY]/Y؛͔1D\nZB+jtcBN̗ܵIi[a \zWfL~u1󷍁cAiɧuu#u-kܲFw q+wj2'"EjX)W'lfGVrfOW8@ύjCAwr-% 5Bjp9Ei^o79٤7HV(4V4`]q1aTs]c6ӽ7bU~~)~zl ywkfbItd?`n&ӟA(_?$93lF譢pjҍoq?mQ{?;}Mέ(Dծ_*kR:Ʋ=:bXz?[UHs^~}1&EW&UT=SeOo52ȋ/[_pKadvϩپօ>FMJ3Sx]2d'EHa:MQehՋ{I&Aɖ|ROcwoO29|n=&RrQ +2&:32-e o~ Kfj1xQ~*!)R(+jR3f(L8u<XݕOc1AvB hIifڣ=hõ̜V&;z A|RTޛʥ /<#t)@=؋qj+*a±N;ͱ,,qipJʨP\OAQtLW|'U6ER92otVi,xK?ky֫?/d5q `qɣS*!SCp/ 앒Bk`:1&0-?&Gm0~X$q!O 7֚tci\cj֭us0{$yks}!-|@A/R<|\~TnOvQXQ΂OȆuwKV4[Yl} Q'CT.JȧCk1~R,:.eV 'ޞʄqn2E<@ {h)z;uHCb6*Nݘt;_Y~S0UG@_LQ*uِ\~s-HQ[ 'DKaZ1*}bCQymFٯ+714gQw lL'EA{1TiH18_ (󻸛}:0ǣW{.lO/)PO|(6R/$$cd>댎F蕵"X q\dzYJU^kb2qe5GhX0.bj>Vsfehoo=J꣇k]{l3hP]EY'^R¦-"o2zKK;DdZ%%fɷ ?B0 F$^CY1R:+op !{Zm.k dURG9L[ T/ߚ[R8D+5e籣٬1tXB2nBPCynvzǝ GsĻC谀Xw9gaP&ݕpy/w=G1OjC՚SA-]:D5nr T Ihg?CoPDcJRX1_oތ:B҄TU& (YKEn䙰zsnED}#GPm:\b! WUk|8x~$av>#5-ƪƜSo-..*{&7 e'<*|C%̅2;zMVg(@`4.^fyԮ^0'i;x}k`2I{Z9až#ɐZ$/7tsU.߳1`> Oy{Xo:Uf/epf$:6n:"|rva"[MHU2˻G=C1H}SۛzOLdD֜J1/p\oﵢ`ؾ58 dx?)WW(4u`bRc~S%> x:5؂O~OzTz:Ш:mF\ٵh au4U}lN8-0ۡSTr8tFA;i.'(tjkg% RI-soK^\@\hՉR_)~K$-f6e!OߩrY O(wЙ0[-P\[C6C*wvt¦J& "vcI;RN}vXEG8"xzN(ܑjs׿3,R5o+]GP@/,3X$RlGrO:lzցO[Jĕ!kU^怚ێr6,pnCAǡ6OŭcԱDƍ/x[^ f5[4/ svLs%+\=+|uty].gs]om#CUX {:J2NNdS{ >E*bSvcSY9RO{*G EA܅0zֳ&ٷY<-C7T6ײ$/I&<΢Aab흹B%黦;('O9 f o=ŐT1oO@R.@ԺN.r?{bѶH=#nV ]}yOOHZ7巘Zr+X*8׸q?JpV\b֟or%LRֿj>:_-sֺ_-04¾ W)W}^Ptq׹, olZв=BחFp~2PXπ ݯi1W7OP1uDDKLL^ |zQ,*p)E(d`A_[փo,ÓN2y 9qtSXKп:] #jxC;UƮ'Y+}J0=T |T0 j״Ngvp>wFdX#^3::jgmUKZ?TWfA#]8gգD D kU`Hg{mTt@' CXt0 8ۥ6[7f-+#sBrnLs^# 7U>JvozP[>#&3,)g(H/Z2 r5.֪|uJh2sHo츧{[('_gsmb姞S$j Ǣ3ұfx {"eeEp u֍>?J풰ֈ-;Ei`JO8b*{{+ !յ۠m3_;U++\SV¿`FĞ@ާb]zU)օ~ld*QU=0HjUs$D2 h P%!D}f?]6T)o'HkH"Ԡթ G׀ce+)V?˘)ZAWf+=DǓ/Z4.4(ߍVkbEȨ/,P//\nnk2)^05/[:4 ntalLlR%"[?( *oL ?^H.)#M7ʪe阨}6.Lj&~xnvK Z nnK7HUotHUk{WFy7n>9#FwR #^ʫ/q=!%^DG? Z^:dxsT "5S9L5]7UA'8:3oMj/\7f-h B2{#1OAt*~yR )Ky=q"ӗEKDAKwvNAnc^Ͽ],AyV#}$jB*;} GG Q{~1Bdm;ɟ>;uEg&C _qNt$)a3%*DlyA;%C2b Ζ{YKyP>j'^&1Kϩ1N endstream endobj 427 0 obj << /Length1 1392 /Length2 5960 /Length3 0 /Length 6904 /Filter /FlateDecode >> stream xڍwTk-H&]JH"B EHtT.7M"E@?߽kݻVgf̳gfYag3䗇 l*8_H(P64"@0; Nn E`B(" 4ƦBc8@ $@@R A "bWDz#ahL!IIqy( S r"0(_)dhW)AAOOO JP~Q\ `;' ` 00„!P$S`uki@H@t%`+ `P ! gA遲*~(0F `ο8 Ji2pq(_S!`L߽ }!vh@]anPu??6{( %P7 +S Ѐ젘"_ @#ݡ~P{?1f_g0/9~B?,1A=bA%:Z(TP@x|ń¢BIq ii[@?':y\T wflPƼ kwmenH/ 0HCY W HDnO#a(CڢI C(د'_/Ft`'SoT_H7a¢_!J!P #И$5S a/ѿ҂ݑH~SoC^P0,XpV!Oɿ6k&uкMRJӗ7U:2glˢ%-KZKcEa?zO _{Hfckxxzܫ&ԺBΜHOoںi̶5 A4Ov7R4tu#T!{EJ|wZgGaf[Xi(-sz_\i5(,ذO%HK3gێ7I\ߣ7#,K25(iTD55 H&_Q{/X⤸*E}? moS%ǽVD-)0&O1 C`ɴ#AM\Ouo`?S?Kefs&PnRQj\!+t1+D({.q/w+ޭ~^څ^.*TF}_fz/VF{99w^al%߲Wn Htӊ> }-V$l'}_`=ZR17.Cbއ;,ϣ[ LlNUtPVN QZ7τ@׫/&5,mӗ"^%InD[Wf_S9I_rob;ykU B&Ur %)*㔷Ompng$h01&I 1! V|^b,Q 74d|3yxG%6lT ^mJDh 6Yf [b 3PʘKj"9yZr`@6TI?AcX+OJ/ϛ+7 kRi;.㯞e7C%:Z5e,Gm|[2?H ;*ˑʙN_7/Q>ʃY^R2/JJ:rF`ܣ), z|'4X|qoLA!e!qO^q?p^C01'Yi2݊ŇIM6UOLu?Iw<^+ukETDOHA+_L{ Q#Nt*SylWvhO@T#ΟLX :mo;+c}޿gLI['PH~NG^u@CF`;օ/f{-?(J.Zz͝ f\(u1A\ N l@C`f߯]Ia&yV f"O' $b 6 }\b9jcO{dn?Slܴ ~ץ#"P7l*3qI;8,o(;.or3 ٴ`KfL.|QZ${;4Vd͙G19Xn*X\ zI>'eVr&g/9*ϗeԸ&]<ͫpyt8uT^}Xw A_3||%]id\^|)z5&muMKU"Gjd14ѻ}wNE;X,؇0fu=B`S/lSIQ%?s*⧡R+t:99}pL^PQzT)Fl:,0v"~eS KF8$dK%g .oa5=Fj׫.:fT?5;6 nf<n\|'.ɯCgu)~Un|;Aŭ;Y[tB9 V4?OTg?D9=lT,?ON8F@Af،Θ8^1//&tS=kHڷr,eMhLȿ۽Ϲ龚}ANU{dSȍV* E Adq]o+Vёz˖ECukWT=Bu0_$?.7VD|_ #g)5"&Ffʔ,%5[qhoq$ل3e`j>Fj`՛n-HhQc\)`7k.d^CnIJ!Bxfn8NL6% ."$Tf]%b|:FSCPT mY:䨩;bj-&)H7^>lLv82;{iIQ\Sgn4Cga!W"%[*sdŊ2EMe(/7.׍yX_,8 q9&-YL,I-ngpK/%)ViN\d*1XZ\4 ~1;IhlNyiE֪o汑 r9Ux^朘́gKT:qrt 9ǵ =Nqwa gIS&m@K' <: ~j~hb]V]w/!@Z17A IvtȃѥYEFsϤ-8MCtdR48<]-;%}1q$=ϦyF񱱙ڱs%%U3hF[4I' Fu;`jrG9 :T>͂Tؼ'lAZ]Vg?;3D]m6G}9#FNt}i[il#iͧSk݌ag6u]ؽK9:;cڝ'ȅXoU k<?)8Nk]{HC i J+8e¿#SĥlI 0=_ t}<Ǒ,>0"1" i;롑+{9Jw:sxoXIbUGvӒ-)fYj{gZ)8?[cGny=5]I˹*J&J xâBx}U9d]i#e#:2vsw׵AUyҶBSe.ﰄ>MWs~3.0En]C(_`CΘ} J"$ke(e(D)=6' &R6t:Œ)HvFDos?z;Ӆ-֗C7ky:Fo5[0U铯CI7Wzo^4~Rout*T}|_?V^A %o4‹ ޛq(Оki)CX|g,C ~;ر0Bh(^IPG\Y+xN*VA.lYrQSxz6:\ХKT). (j[gh{*y/iRz6Fg]6Iy7G/mmdTť?_F{ \Y{xL'?B)r~U8a|.gf Cђ/5mibT'=]]ю9:NK9z a&)̉|E'XGUEm HLַ[cȻv=:/d~-+H7QJb c[èy#IIYxAJcnop^-[]цNqBvgZz$̂i&8>mzj[c ^vx# 5;4Il_Qf^^j?܈Sy^ DwlX"2\Ř}1cN; 6=}vm-6 FM{F3R}o>-|/}=%"VɇQ@j?lsBS T vrņӻ6l0uA!yFu6&dZjp[ O rGoгl.L#Ɣ<)Ѝs !ОE~ҼX3b9H8|V>vt{4yŏgKnzF'ޑ*)em@϶+<Y6~gy)(dú$W=q06 ~w BЅ<7ZS37x,TO5 OaUk1$?D˹,PmApŖ:V|}*<;)\7XQk«W꺽r*t"Dq7y2fp{%&nȝXn~ *&v$VJZ?sul4!zaZ+CWa*hOO1D4ȸ ;[]M3uo{8I׺5x΄U]Moz ßSS]Y-NI,mvr16n`/ i,ˢu]s=2rB>HtN}b:u!hwt;-=^)}B-mȞ%[ KM$UGR[$[*L3 dg!ڍ)?yYĩ~0%+B CJl=20*t>=?(7%8Z\9y@7ʃ0jJNGY(=6Vv묭 |x,d!K<*?{0ϊRZ ?տn~X*כMEJl(0Z]NdMaѭ7~Lf˜c4gՇ ?;Z R:7?kߊ7$m{e+> stream xڍXm64HJI:Nn  hNiFZ@EAJZR@B}ǎcUy_uoؘ;(Y E ،(oↄ"И vAa! @XPPoG4@tpMupDq$x] nP!. `A!(|BJ xzz]79.^'0 !n0e.?!`Gy 4 p$:F=W/gx /O?ѿAῃ P͏Bp/G @=P{@fuE!P/ҠYVF@($@ { i3 {e O!*|0 &(%..&<@@ {B~hW=jA"߆`(8@Ɏ!wz,zdVyw 4yPǨ KBBB 1sv_5_$Ч7?36\WE pGA7!_Y`9@(Z(l _W3_C]תgD9(_8(_Z0(@B;(AG䌾[6AГﺪpk@777!ZW=`o:Gj(@E[vn@G, =?rݑ.0_ؿѿ%xA@3LӛjEzOaܥH1K_GmL'Jwϕs;zܙP]U:qa#F%G'0Zb[r$\ItlT~-nGn<NɘQ9;,YQYk^c>Ɲ)^}v_s|*>siEb+*&/bJ,^N$;*{!6#ӵx`eCncR#osV%*0`~, [۾p3(.94DsD!aTYdWJ0&!{WRtlXNCyꅖKl6o8@~cJ0oN|)v:Enʭ*њEtpO`뷴Tg -7ċ5+2j4u}o8A$dy&#jYzYDIpc.LJdN /6Qi w;`8?}L^#u%h u׃n5 }@gXj"뉿VDt|{ae^%X 7Bt8<"~CpMT_B! ZʁmVwZ酙=FLՔI̓Kt=䘆BLj9vEGy"`V….NPiDl{g0yb$˷_\ȦšZezq̚cLܸݐ jL&az2b&/}V7Rۏ%+ &PIf%]Wdj?.$Vn 1E>_hMM']#;I7o1KLq=CԹBlGBZIޜ~l6;Աv Es}k̲ L"怆3'L$2)z hhD_WktIFmآ5oO`ף3~2rQM/Oa'C#$<΃E}<yXXMuOjw䗓]gB%(|#ƬU?^\鯜T1I&$p~y%'K\aT Yl3T7,ˏ̸goG6'#ZgY߲ǬYKR"CC;VV2{ǘjڌXd7Sܭ1Ŏ2ĕd= ƫ3kF[YJ)p}#r'x1dBIn]#պ/Ӿeĺle[9e ӏk#!LMi^"̽#;T,9ݑL7p{3Nn)ͺEHa!ږOO)5=Ihi)ʨd,Ɯ 3"$Y׬ݞ܃M%ڴ-څn%=ΏӣsldW׻.-1#[0?RQZfסy/(?zܻ4 'E7f+IogV)#j. J>\mE]ܟh^nUP"M»jε&åh D=Ϣ[͞:/GPnwjM>چy G~MQ*DH, 6D=2h8-Ƒʋ=͉8FR1}nӚNU&{Z^Nycܯ8NS|A{ÅïGZc])Hg#_tiF==ysuBL [Q&T2Э;cC&ayc1L Wr~e7(: i;vPO)Sd\$m`'t7Mst]"(MoWؓz-0W NruR./^7 KoO`KpWKoߐo͔^fJb&90RFp}TLr2\0mtA#i%;G[*Вkˢi)M".03 ݱ7~v5'{=%ߍ̔:,f_[O&dqpU s*#W>MVU|,K@~iH0? e !r | Yqq=0QP]tcs8 Rb@աdz@J5:I<|'N Y7ɎZJkY%w۞="nq\/) aP)c\VnŖ;=l\Ҝtx҇n5hpF &31XN{f[q6<. $_v#J ۮ;X8 Z0֙\-9!mF+CIq/!,|E'T^AT9E<|.qA$[$.֩ZeHyIbuuPr޲UܫAvXOPn5y0ޢԫ[Or0wB%P(RSwu-яL2oݹXje.>uy \}W~Z+0E IE܄ZPn瓖d -dN!rkq/ jy畸g~g91|ӕZ ·]1JDך 3+gJ7{scŮVLp{>G ǵH;yJqڣBBMqwITj5KVCR􋘑yoq'2Jz"?:nԆ[X.ilB~NKg}d'Ee SS ̑؞D븆e]dwApղ]n-`|8lUVm9]I0gBNf1~7$|1]xՠ溰}[yOÉ*9ϩ,ۏɷKIh\8;T\s1 g4cVx ^{9ԴW"po7=»8hgN< ûoeK>yꮿʤXĖB=mƢTEƆX8<)%Xc)"s4˟嬎ܛV Z&qc{g5)ݷqDSF9MZK %^A)JKqeFjtO/EajY8OYBTdlI{<.}2ZC0Yԟ9.zG<m(Y^lt[p{Q&Pbã팰tP/2x#cɚTQģE/cAźqŐgJY,|GY!B ba 8frkrU _{oL/Э!M;xd'Q cfo>Q(Oa/m?ʒpmЏYnAR.te] >߷zMz3d%]u^7wEx*9%^]d̖N}dj5tmG8UU肰{)B}ac p5?_WrWޝ0]$v3_,~tAOYT=ˆ]j#؝\S@--bS6~ -ǺyѡWgԪxS rY%_CP :yF,f/C'r\6@)WKF)wew$Xͨ;=ͫ(\RNȖLlDro1nK% 73M}atY0U8zVvYtUY|EeSҵA8}@n˳5o&W24`/W|mL^s~ʢ*[475~3[IKYr@-wtnAg5ʁ&-R1' puX~ekϱkL8 5;cʲ=xbKg~{Լ6SDXem.$tw͍_|~^W`9X%!W7eeoK4|r;Fy}p0cFW8V}Y9,.mgC|gwXp1BjeQ}[GӺXm[.F},i5zY9|!TAuno8KT&aԱ&9{"@3}&$)xՋx٭JW A3]^B"bi9~q3c^~_]e [eU\^q̇ώ}A+0_6AHlg^292}j8VAKg?={thIUXyk}+{H~uMgqΆ?ŌN\O)[ъI*(x "l[<~ܾ<мmJQ6fԄb&%w?Ȉu5mGl9V% 3 ־,sԍM2pRrGx(3{SbzN4{0qfIK~(W/[SD , #Q Uk*ZPϙw[`[Çw$hbsIl,kJ_s_Ƞ'_pkBǿ"Qȋ}Yc 9s5A\ۛ:]M@Q=\X?E{v>F)T1ԲػKX"caG8e|J f% >qG{ͣk6G̼g/C!,qόgwUvQ 'vH$rp Egnű OP$>۸ڻ fjyRJua0wߩsbǽv"/ߣJ踄g Q{<=nmm6|\\fbh`{H[L1ϫT89ť.Qwq 2buߎR&WH:yE +:qu%ԀzJ"I/J endstream endobj 431 0 obj << /Length1 2112 /Length2 15424 /Length3 0 /Length 16698 /Filter /FlateDecode >> stream xڍp%Z 6vm۶m۶9q&'35ys΋9U֮OӽY{ )3 -='@HFY@ODKOMJllm;4-?B&Ο6aO-@``d`㤧0sh 6p0$lMI=-̝?O%p-@sE#k6wv礣sss5qs4㥤Y8ML]MIؘ[-4)@_%;Sg7G3:@IB gob/ԀoW" ۿ l l=,l&9QiZgwgj_Dk'xW kOߥD ى/tf[c!;[g'p41w_2]Tl-\L$4A8X9&w#sP7S=S 럎E c #g-fwph|vGL'(ߒsx0hY L6zGVyWG'_">w?B\J k&?MBo"Qk" l,=gِKU3@˘[_ؚ}9 3-=N&F&vN;Q9zFVw2]Wdda8:x@# sVMnqgSee eb A:"6F >AYdtN̢}_i}2?|E6$? S4Y>+4pCgmO?aDƧS?6Oq6S?RUݟ>?ܟq& kDkf4?6S?3|p1!e;}j>s:~ w)d,?L&ژ#OdebnbhglYX+F? 7ty 'z(tT,3|XlNoʼnnjK=|$x ݭdkl~Ѣ8v?GApu,MRPe~ItF 2 )Y-X'07%At?; O)}peghW: m ﷣>Vl)i^Ky%QYLR9rkΆx@2DA "u |pU<0GRׁ"@fVnٛ 0zXbJM)D;_ Fa>b_#'*ho"jSp2{+ߕ;Hb;HU溻hp߻Ɏyî4,y:+ o `=eFZ&tRҜj]hN((̎''s"3=4'Fb PcmRQ X6 `9j{S(4)%yHobӕ=U7,IbkJD͓; @ RB0V1yi]'m.#:z_" U}$*AbK16DYaD\D21s[EA_,>2JuKpy~愊.}dΗg֥eaanv(*-֩iԊTq a[23ᒛJ|iȴMC. p& c3pT~m3rCoB+ !-OSzBAǥ_$OPXp@}7C4`?Vzb2p̡[з %ks <'RA?K5!3qF wWY҅٣tN̨0Vpgsڻ,{%*1Jw4以FKV>Zg8j%Dds먘,H``*Zia+ TxbEݗFrypF$?7WX>ݿr,_|€pD>M? N\eOUu qrHcWO2m~́tY)^AY.6Τ,0deE J9t]O&VCg'|)G6V qҏı aIv,3k%# czCXKXPstfe$ `ܮ6c vS2瓹L!x+zE:+h_K0j]͒ ^}z;׻7!|9-YM}i?x?kMBNS}d jo;lmj6^;ܤm7kYs5lf2. |Jx8}~rV6ژ 䲺Ú`6Qɰ#0d|lIM͓ &'VbSkn^'qnr96ů3$(Z(%X,srP/$#- "ҏt3jɻI7t_@K:fvn zzu d6*wk<%Vΰl`K@t_]9(/0CЮͣhTKKnRf(j%Ձ.íBȔLM&5\૜NL» Y,xN ɂ;J|dS^Q;rK,qO"{j'r_4ֽXjwg7roB+?0C6rIaѾ~P̽5*/OnT- }Z>rb!Ѵ {73HJ{)LѲnKEni#J0›(sڄNH XP%Cz_LJyFrhOjhw=!UŊ_pk:!bMv {?=.:aS0r/E#wE7B@7|ՠ c꼮G &\ߌaXUڐmG7 FONeN-M%`1hʽD#v_ۂt*X!=h66;ڳA\tz$;j.SW3쮋ц .ɄRo+ݔ;~Z24%?_<h~IeYzKM"4ypL`!ʗBB3#A9q|y{pvI@`O$P%@M$otkMvc|<#@8&Ѝ1j߃H=Y3[_xCL}tCAdw:=(;4]G11F[V:Mkl Ii+Y9}ULح'q J{1–oʥ(5Ta^?Rtg%=U&)ps36%>!ϻukS h,_#慨wPP Õӄ.$*Z"{n D@tZRmiCv D5*4:ka 밄h٨{D7F){ ibdPUjh8 r^o0`j bgsyCH|{12R ԺoJXi_S:&"!暷6O`,&ԹMMnQ|r$JWΗՂv7-`pTL2&yfSHB6p0 k\\{ .U4]X LB|Dc5N򃂮!(Wk[&qw驹&kOc~]ZqT5|S "9?F5eE~0I^\ݲDYƖ.M7 ƙ*-JDBr;SPqәf%ʴ옴e/AQ%Blsݷ'2A0?6 (zB7ZY틪z~^~)Y DkN\m͕a %Q#oB~5dґ0*P .P*֬Μm:=Z3c^ y%(P}d@vk2>%on{ HkWrg ,o<˘3k˸;Bq7Pג77I0)%%IQsܑ#f.u:dZb*WW!XUDס}ta]aVj)qo?^,a{*L9Ͼ-֊7'])dVu t;qԣ(6Z@4C hI[EXu>ɩD߃:{> k{o@*;`,|a}J6/1 Cи;yv;_ nr;{-FEdUqbaOktArf^#?0Uq0ۇځlbaׅw8'W]m浏*YyJ(ØZ쭍nv? =dfs;sQ,8$!up{fo쑱krNA6b)ȱz$=S1ܜuz†i5A#Uܴh|A^!pc͈C@,;M}$ɛnGO*ƪWh?eI ̽en)0J^Rur]u@1H^粗/ r .^c ül79b) 4YG >;f"V(VLTYq h:sl3qoqq+:ɬ=<"a/Wto91ۺ0f%|ٯ){T訡$#>ނr3~h"=?x>>k8 2goTmï ?41^֪Ҙh0; X9eJV6Ep@0-`G0 vH˅̆)GYRn}i% -Q8L^:ՆȆ6ڑ@CV]!ԙ7o,cuLaH T pkf\ |eK)3r.&:bSD4h&Ay6/%4tyL.<$tpY=t8F|_!X}yඹD{#eSEn35cY)EVC1Xpz\뽞+;j|vGF}sO݅ɽRb95&fxۧ6VQ[/B=_ -׳DZo VyG?4-4sOנOf(?k,jhmY["Ts^yyy+Bقz7ߞT;N+1hy͠9OYWHơYb\^@?7:Cova]#QV[+nbtN"|CZ"[ :! ߤQzl5/[0nEG4Ϯ:20\e* G8'Cqe}{Dܐ;M)V*js_8^_I[bh2տF̍Ǭw4vqvgV`A#ց_G\*9}2x^!* *}uHr N5m5 = }+qtG&"ghar}H_gh5U.|٨'F *v;VRf}ˇ7T5/",ބv*>~^VƴYoaQ/w $6&ytmOL G%)93I3&9WݬL3dJ-+%7AgZ*]|O[Tiqim3N2%SbH}xG28dnVFU8ohihK&OIInVX- iv,0]W{!numB hcnWFIJb-}1#{b)Eqíj=:4c `EkZM܈L HKiWLbsż~S[렲zbuqTC%-IWvPIe,HQZ#q8yVAoeWMcV6[mm*i^FY_lvu yYqk/H2{5ŏ*y"+6}v_[r "uwxxxWq_c+{4U 20{ guXd"VzJ_c^Yc'M]Uj\ Ȫ@s ]|;޼8f6РphH&۱u6y v۶L]=w>12]T*_9dT˵]w1/[~B%O+eϟ2 lY8RZ1uMD@>su!das[-vGYINv$Yvj~1]hBX:w*[Fe,}Ha}!&W7#N&:}6MOK<\Cu Mm6sp(ˡWXmFDpл q6#%o:& F,j #CԂF(A+Zbӗ&a}QehE- Tvgg T6iz@*)ߢCR@?()/m$ߑ 9,-,U vhlIB}ޞc/M s{l<jڪ: 7"gVo1n2^J~EKR6X,BdPD5{Y_ƁYHZU"XZfM;? e>$ ѵy ʌ%]/;vVC:U7`waTt 6GM>)M|,ix^"-JY ?,Ҡiړ>.IO^lMiŒ tpgv8SSdr̻{!xb;x\xZ<{:_[n@~2jqၦ]߼mI/b^І7_ᣜFBB{kV:J7V#`Q+KO+uw'=Ri%X ==ބ⢅ps ~<ܓڱⲞA iMM-Kē!RbWރupobduU7S8Yy/KTy WTUc|Tղ@_O j1gj$W8Z` >*3~:‘+j9 X0g2-ٯ}lL?46&^Gf9O$Ōhˆ=U[wWj/{7\rrϋl=|*~0gO0WWq": '#vGoqY[ |; s vTR`Ni^ N LU.gpREAH]z#TQÎ(+]Euq/@? mfmEu6fgKM@Aːe#,ؕ9F̔Z*%# (!kC%\Ih@>4>ze~%Khi޴ʷSJA nٗ@|`z6*E)zv!ɕj7_uDH\,) ߺi ~+V0/Y|ӅPX9wuHw$~%.8IQJf=<~:*|y*&q0Ƌ^SMS h%ai<'.xBm6K!!O gfÈA h˪ƋCp;+g9:zHɪu)Bzbve1m^v] ~cȏ ̨6KW>_1 S&ْ݄H֦Õo7m,tg9*= rݸFxlH=H{k"0Eh4gJ2짿|'HPꕜF:췘c_0FCBG@nn1U)nsFO1[B@MAZF}JKƎ}FIs(D leGJZ Z_v/cyʌk)0LѮMzzㆪ,?6Gj0A _ EaI?]$\K5\AP],ngX`i7L:Qv&pssmBf\1;7l"М@S]~sNr@αV`hkLv%A:Po U̶' 0Y%zZs ~׏zwlbgNh%!DYnA " vCb a=B偅=βxk4hndSVʏ[+g0h9a6=ᚗ9\ο/WhZR_u_8 )J?cqxMjj[\ML)0rH-H~@ OݩYp|VN.4;a DA,Sx .BwL!=oH{)i".ϫ0b+˃HuPF~r UǕTYk n*dWy@hޜlWf$Re˫ N"'lyŁCP0n1rZbܒhh8{/5&#N~ P&scrSJ o.Xi! ZJJ9!͞K=,ti~%`L{ jg\Y"^KiWK3϶eE 﫜AJ;#N?V6d~jd_OGА.u$v&2dJWڝ&k UK,+G-T"W"()aVWXSc|/Zb2d& J>\3=*KZkNбY?KTrYA!jlFz&ԞT&' MPa+Οl^#P;MvHќf婅TGR6T\,@R 0UٌTCͭedƋRAm;UM+x~U}W_>/dO:aW.B!sM[4a )IטCޒ t}om;L( s.|˯6pZ'_n695uwdWb̮ 춀1MIA+&?!-Wb!`K!ZQրX/^`mѝ=NYT>y3}KϬp8n}jB[əBp_(k+4㉇YU+`c1Zz͑.Ok+xy0<#rɅG7G5τ`?o9Wq!MG!gq:k0p 5ɴCZ7J{q5-4%6Q<+n[ +^FuxIeN8jNq1췷5^ }%H__ڐen#O8)ٓBoI#IaXk v4)͢ꅺњc*>*I~{L-A$pɧQn٠7TGcJ+aNx=qa*…X+>%!w9*oqW-#m:%{0 <`eeU6ϗl5:fN44A>c|'&wO$ fe!=A!.P2o."3ٳ*v>8jq.7vVǵM7D _\E`4粃"SbgzLq]hRf:QCZoL1ؤ)#G`/I!hD}RmL1DWK`QB9Љ,zHR5H\ H'ӓW15o|_*Fp'< UoC^&dwݯn1~w"?7À @[b4x +,3w$!.RL*.C:_{t1')'ܑTe S1Ilh_tl(U9Ht2GI*Ecf|t?V7B )updMԁWcQ\B^~lM w`!d/_$Nx+WZe!cL G*Tx;LqW VO%iՄ8 >2HLIzFJpؑ]8q Ytd4sp@JNC[֧J 5Ri֑S㠧y'PU{BQ po4%D̚y3dS1 o,ucO$|/rUcTLC͊+95*+lm=K\N"?%:&ϒ x$pB-`+rw!gh3Nu*N]i+3;R{;DJGCZbˠr endstream endobj 433 0 obj << /Length1 2770 /Length2 19461 /Length3 0 /Length 21031 /Filter /FlateDecode >> stream xڌPY c`Npwwww{p5;wk@~Ofd ޽Z~B^QN(noBD SUeb02322ÑZ'#S:9[qa!4rD\@rviW ?C{'n)@ mot#wt4pO ![@h b41؛X]<をŁݝ֙ɜnbP:܀_)lFGPt[bon6&@;gW;SP(86ۀOqLL/Gv621u03Y ..#;_F6FnF6F B7 )@3ͯ~YTh +>QK' 4W jv@)l@"2s t=L,~z:R2rvwZA༝܀'W"8&& hni;H 4daϿ&_-fT'o:V3 _I,RvfSi3,  i(.# +ב߈]mlSm74ͮ.͐5r@SKWr1mͿt*ZX51kȻP}cbd?:ʙXgPRA_F1;{_0rr2c3 @F@og:e 0wRv6/߈ qD~#No`q0#o `@|2O7F >ħ/)FĮU#obW@|".P,F"4IYAFΠQt}djLLm-21;!mdd!fGo5?\,PLElMm@#o&$35 SeϘAS?􎮠 (>,T!^@fnwdb74ڬ"Zx:X,[A;06VT?2 @@ j;W[_! A|q o5LH};])_2K?TX?}08v w5@01\'&P)~ӱB@?2w=FJl7app1?Bqw οM6n@P>%ȩuw O^@#mj_+^ ,ڛ[Y+N?7GFE&&+pPh*ѳi[#LX{RǣϓA~ tP ,>ϳz5dx4Y+; kJ52O_բtJ]R^z C͝~%=f)f_ڨTev!&E%>JZ.-[aۚ$~έ#+h%1Aُb@]pn ]\@x@`$ .܉T-F ԭyט,zs/4gOUfiwÜǁJP7wp0Hhduh5\`T:8jkW/i2^M6IRlƨ-DV&#h9r GeJV vOʅ??F@kg}hmIEdbXծ*<*L,"ϋc=Zm`m.SE)4:v]#'`.S֠q2WeN1)|Gg?qE/mB{W{sc&>n8@\T'~,i} #D޷+~vъy*:ou\i Z{\mVu*:">Ze7h`aq6 CM e!ZyH,Xބ-϶ٍx ,q2~REBr "yb6$h,C5rx|~X jiފ-V}6',k~ ,A3\2}~U ]?%#g?̗ѱOQY7Y__W HL #H!!ʨb|f/N̰+D ]~"ϛUffM~G/٩k* l*،c8q]\StA,&O)t}Ŏ0Y {Yr[Y+vtk9֌Nf>o_~Ԣh);a 7ggżӹh~΄s8WJ/,+׳;fbl1l$2q!H»,v~{ŋʁ 0Sj|oyzN_x~.=M*7vq.4+Er\U;pYF_35FNmd* ͏/ym}J4$ 6dW}G[[{RwY.R$_Er#tF`Xp}D0R2 ExP)aB5?4yS )X:TqUNJC?ʬ!!X#erm ".Jض<-ܑw ;Avm}Lh iormK'V&K nv2 ХͿIE<0% J8p[ˡ|Dף2((>m }>UX ;ɏ@Ʉ똻Tґ}5ߕ/AXx)$#}bwM &#fd1)IE=,Ѧ6Le䧣v)H$¹S#OK>k9<pvC_M÷j<4 poc|EiKGt!! kK6Pxe'B|c[TgVt!on\ `#a-=M6 PɝzI@Į @dR9Q1}sE-Đvv{Md=ʨz3RժV9o)zw.*f R o1?T{yЮz'L9eW6lVH&?:`f{4wd<IM~XkN# M+Q#v(G4Yi!\ U%19K`ڵL{? }6YFAGC2Ȝ2Wz,]1C׍Wp<6ا>'Pyi<*z7] Vݩ[40@܅2Hi){aʥԯ39zzMIe0GЈ3K&z_t:5vE_ƳiL_靚 -H:o>ޮc 0\GNXo}HzΏ\Kj4,pm. ])WK FF'~0kN(BYqFڒNC|?0q0eJ!EKW5xN[H5ٓ,I*ľںH7Lwqƒڞ!rwx黀`woY k#AABbMVLCadΛw̿\jи$13S -*ykT_QH4^oJMth#kf5Vj0XϸRdmpAfB VcG`Ѫ* n,4c&9_ux`Ʃ`\r&IkO?S=w{2kifM s ch}ymD⟭If-[(m {G,OY;4!@[\\] cdtW$ݷ`p\.(8 !\&Γ{p&>ͽoHEFtf -#A_뷻xpY|ĿjЀYVKZsLNUbӍ 5ȃ6,VI8GcǟgZ[4D&iđ/s; v %k2* j#[C1coH@n:n#2!7U'Dcwc|)a;8y8m넜Iq֘I)_es u؀ү#@Nc6-ɴL2j|ϱxȫnjAn}kV-Ӝ\ 8U)Ռ2*,0v<"[`zFN E"#0|T:eXzh(m \MhQ2xuƉgzzz[Vr0Ӹ;XN'^&SnV-ؾ}%w!'^ˑ@岂 \a^jQ]wfMrQ|$2Z`K*K[aM)<;\8 [\q0d\EهFFyR!"Ӣ['i5xMe.JT!6 4 9 O,Shm$BH=-DO;d Y,zKnG 7~ͭmf$B&bnt6<^' opN6ӝGsS[g!&8g7w]xW5HN4`Y|兞g.bF;z_gg'X(M~J8-ym9kރ7939.n9VZӤ IFA^VZ' ;ޑ4\L/ T|Q p$ɻt.Cj>NSY ,?(lTh w-1 Ms⨷rTZ9D vso"f srVI>Wdo0Z-VN'KoxdTI~:oAj9Ҭ Qcղxߎ\fKPlǢy/[1#Gp4`&ug65bXhNwmY|- xyy dR=&]b^E~u<&Nޕmڇ"_葿"]Ei,qWnByOC5ݹ֤B#Y[ 3-́Y9P4.zRH4xӝ;7cdn"l)Uƶk.N]ONSG]nU_Un+ tNP`"WB:cv._1q:yޑ:T" ,9XVA%>.xq%8e)]&l`0-Kd5@P)Ƣ 9L%o%T<%S\鹰X;[0 ҳ0kKc|g\x {DK1Q48E #h"tA : r%L5´]< G&AY*4`䱙Xo~Cxox)Z,] "zK2KD shp' ף q7I*#gBAFNSzG7K 98P5U;()PZhQ[Yno>FLjLU##2~`0YECSt?|(EIS ,JU3&xx=9IzQ>j<JFr|jgVN =U~ցY[-|:ka+Y6D /qF2cyz]Fy$wğ^OK rnoZcݜﴞ/2 BYh[ v!*1w[Zd:;e61)_ѦH+Csv׷2)'oIޙXҟD|()(x! UF] ux|H*('JL4Cn \ieEE?Je6NZnͧ6B!ŁDJBӒXQB'Zh7-l<0kM<.#01\w76ᨁD%:C9 9afڇ:`+k'nLceE^s/g2I̍{jK)}jɂ AB;6t]7T& #X{/6Z->>qC"UeHXR9(WeWУ^γNG7rRWZ+sy g6oz[41b.!KBsɲ(Z?AS@TgznmшҵJD44ÚƖGW#p.ǁ*{m;%̱F/ၳ$%@q5%z9Yd92prA '~p.T,0RE. ߉*2%Juқىʙ)2Sc#7ا߅+޻&3m~+A:w'օBg|/X,Ң;4`,Ol\崕5%V{aDehz i-)KHGA<ĔTxQQO<*Ĩj ?G2TsiK[vw=4 [@Z$ s5DVJ6!bMYEOj Z"̇]MgJ #nDp9Fyua;OKZ$;ӊuz?Tpb%ҟH1qPm'F(kmsjӒVdb7(!`,G ZھVaѳVg-|k 7O vPAze9Sy'8Ak=S5G-/Jaz);w#~UwenO@M*1KiRzPnۣSӐyP%A!2&ƒY7^E2ȭijWH=²e8xJQ6lxp'}OCex^_ƥt'n鬌mTЅ$6{0ip M>#י\U86jxBY"jͯ?Т:7-\A*i!QH-6e(E:|.2̡U֦%͸̱GU>,hv,2y9m)P{^Ɣ W$eۈ(%RttP+v_##INU&xo0>Fy79``0P?T FZ'pvzC)09Avt7{෋y_хٺۍ hޛ9yӓ\>Cy5Ab4*=͐N6q jcV}j֜0D^>Q nZ5Qu!NX|$m9wBUUxW hxQ0J m)sM:f Zo#^(g }lYg.XGOV(M 6eMłEXmٖ&OQV $+B+zVd{==VHrqA:i\C+ K5Y#HWcU˿[+]l4 x|7\36~{.qn~lC_[=1 :nXXyõoĬH~ K-d &,+{H~Ƹ- R6YIPPUX 0b_'ԅno. 6vk{Xɲ`ؙӷC9_ifx Ҥ)yNn'fTIN[#{cD*S6ދR[A7,G!^μdgn A FnCu8.kAEqO 쫴yB{ژ#!:#x)8pQ¬OH/Eg\c!%cVQk*`&I~-0j)E7%|g^X#`?%L>[&b1*I@sы z6ں&T?,{>R_]1_!Ls&)f =l>whH dXD2"O5= wR;ӝ|~@֛,E^c3??G=0@ iX 1P }DM}Ӂviߒ|M.v,̐1-G?:&H C#'NƉ~u$NG9j-M}#좦 _ΧGU-7KE^f#u+S̶.df1g͜\ |:Af\$)tDa8ʒl<[:}vpM+?ak{t°S)jMBmM !dπ? мffgdꙍVR| _M~EÈIpNU$ @j(4)%/}{ o乶K󾂒rY2+.Uofc=7iѵRlEWLk~XL :鴍e"M !+BxޭK+J2\ފPPn9.{Y{Ɓk`( 8L9 _Z9ǯWm|tC3*,B`,Tf+)Л_`uNJNi$p ^ٶ|C#҈HVa^x0;~T9 Bl3t\N"g:lM=dzu eqHD%i5(y)=a%)urJ=]\jL*wk]LÌWYr.1$ͪp8 ;An˝ݬĎ{yKϯ~5.`?5]-|qNa&kUMG<%\fi?w IŢgtH.̤6L#Dspl锎S{bJl ȅlqw)m8c?Q^*ܘy*es0z=w7nu2ҵ>d+1ٝ ':j1}Qv?\x+k,Qlʝ$=2$nr%Oe\T#$1i jқۛm!}61)$]Uh>њS}rKEzӡШK1e-ljv\9ooț;5!p`61Ն~P~qE'}O:`U@fX"3:΀p{p(GY/I3+NVyQF:Ceӄb0}kc_~rO5 XY `;"5kok%Gph`[g1Gf%3-H󍸓F,;da p{\컔ohBIn$[΢x/'>}ACZ3?K "p{g cɛՐJ\ͰQyz,|\bBc@Ms5mBU0fٚ~+͊P:f/(~Q,푭1dB8 *R1þi65i':Mzztx@և@OF|.Uu ܓ*2ϏU'~9>\{}{lpuX|$]a\f>is3E|W^zV }MN>ʂV@)ٸgCC /e G?$Z#Q>ZDzﯽ/._ͯA.~VHb%uqfj3O !'ݨE vSFB7#}y:)%x._Aʶ aEswXɉBO { S< ݠlrOa_NZPgϻ8Ɨ`b핋 @KwQ#c\"+DoJUHцZ>~jL[k+s\"tfc9kMkz' :,~A!!c 1P+,/G[Zأ!7µϩ,>f.qRrHDL#?*wT&$gU4 ~ xo|J7*'8L9'UX|Œ8DC5*wfFe[DF lK}a-nbI?( D}rA,'͓\=٠g+ѾMsclLp9Ua֠̂j04fOAs_z8'ha}&zy@R؊s)*O&bV'=,.oC5@ЇjR=ՙZ'w̴Tf훪"㱍W^2T!)AS]Ԗu8%=Q'i @,S汢ߒ:Mi4pj'UY t*ܹiyQ"sge돃41%7MF]2x7ߍ"YϡfqdXtܯ 5'm_#_^8y=qS,"*ǻS ;&/v' WVP:D_ ̃]`Cb\AأUT1q*$Bi-Ų\5QRvk,-Bcs{9&OJ,C f- r1r#oC2n58E|f+H+ɣ o㛦QU}]ճ(߲$E2VJ~SIz$ D36r4;#2NPG!̓㧘0hEg3}T0sw2/~cKwY[ &cl芯TȘp4{0[j׳LJ1?ZNa \ BpHwJ]9I9ĝ13Q571'8)K*Ѹ]"UtGgұL;Di,9V,Ww+=ߏ7I3eCz^ufҭQYŠ3?\y}T^3.G\w>N1Ii86Xi\b)JF`r׼n=,+(?+ F 5@sSu[GU%azp'@0ų?CP}\I.aFsqǟ|}z@:FDe*N>fX<AbL6!,ёs!B̏=.\ybExQn30[}Eiʹx@s͵DsXؙP/+qԉ+Bн<͸n)H⤉cHh>!\OڼgN^ JOP:TL^A(؆0m2K 'zO+yVTq ͧ䆗omǣ Π]wM# ,X] p^8M_g[Up[) x{mRMuH6r/nN |o?Ӟ>\O"Yu$^BpMPvgL>q<jYNWȔv~ѧᅕȊ~nEײ,QTO^:0.t'j9\䱉AQ;E.g$x_D+̈́'tO r ^ K(5\XcWdפyi2M ~@Ӄy<13}u\V*J%kZ vV @b]%v [ʢ5Cc8 >+ܯ֢{'׭}4+ˉw>+sӗ 8xA~Q;`&5q 籕OdsU^`WeWM>j\Q˓;ìyRPbkNŧ }ZlsSJ/%n ͳG!p?,axk{pNh) Nvl%%3Q.c۔RzA^XLdOGNE?#gFO}*Jv7a6)bH wI.]o09z\ȣg0vwk-(T^SWQI=/{cSdރ$e[Ca]pKֹjO8r~pD\lDyލH&ѫܯbEv> ϊ)2(2gt{{m!z.0By.f Ptv(;mHR8MLPTWb妬$1xT1FdI*OX:E~Jm63^.cVY͝~7_-#" %"~ .% $mX(.FDs;e*seB9kgq9YcrT^{BBCDRmB q=d[ocL?yfgND`hF2kKA!OC=$J-HD /O{ h;K"|Ø=l׆:oVl &3[\f{]j.(7rt, zn ؝~n(Ч^4Av*Uq)Gr93[~/C\,oa:=&}18cc58q-iMgjF^Ե讃 T愉Yvl:rB/fAC^u;"گ[zEty r%TEp)h^Qk|% !K69jTj %8,n`@[$ۏUN'Fp ĪTEY :zj{ +EэMo s%)~Z!-~ל$ RI86|ē5$tP8q? k``иB/a,gʀoF;2L4BɸEf`2I'UO!(WȨ/#dfعM[a$#~Dz SxwfKUE¯ ^ȃV(*%=y`12%sY~恗o^u 'H !+'j4]b+ߒ*q m@@oݯwZ6h| k甏ĉa.mBVwH?hҩu>fI^aJK&ikXeHak.'6K?_o5@,97<c^ ؚ8*'W^aL?|:!e4s,KA8PNER?'iM0  ȃedjE-W .>ې1%)$c$Ě;]c`SCcYh+)\(gى 5L`6@;\{5jbDZ=T(>WTJ3p>yxĭ[r0G;ճ5qn}u`u7RQpoyGz6.۾ZTb-+$: sw*ՇcbQar8ԭdJ*'Y"Y6utZD롗q(3H{jb@BʕruΞ^r;y}-/E$Qۂ۫ qp5 ,FB9q441d =}FvYD>y![fA:'"Wx'8yX{=ErC7.XRR[ Ƚ@pi68>T𧜿9#B5^ $-:6{ˈ;ԣV0zWگ!s -~ OXpf~ŰlrLM㠥`. lk؛ fm]"a֠<ȹ]{In&.dķw,}ztʱŤ(榖vGnDvp5y4Z*K€Ӛ}3H΋;Qm9ES+cRlV=[^h0b0wjX7-LV/}_Y55PdEiXm4n!vW8'hT9iNXd-lk<CCzдN`MFTPɼL}v/JFVtc ̜@* $hMܹ1 c6n<,S *BHtr- =ie^<ƷT&e/ہT˴[e$ KLlsXJW "R#Lo/,[URqF&2:V*|IۍON endstream endobj 435 0 obj << /Length1 2227 /Length2 8438 /Length3 0 /Length 9735 /Filter /FlateDecode >> stream xڍT6-%=D6S)1` H#H7ݩtK#7}g]w_s C=95Ds Z ~( 㱰Cݜ X $BrCPZp@ A"@ (Zy@mZu8 cQx#vn<9 11?rlhYCQVN=8 qOvI{77q>>OOO^+g$/a' t!HbEm / @KuB@( !Q.0S@`ke 9/p{ lÝ]`P(kyq`6 pegVeG+ÿ! uőWT`6 pgg >E(Fݛu=a [( w0;DMoVfq@QJS %FqulQ4 P[ i!!+@ AaxQb_u 5~ _f Üo]mE Eu){|y@~A @XL(҇VпkSbQ@Kom8j!7 ?oEV/jPGM !Z57+Ԇm$ < <#j;:?UF7 zB+/~!!/6?G \(v[8ב ~B>[$SE>[$Sn*-BEѺE("Q~,"T[$ӿE:"T*me(?+[%Pav߬5*P<"!T00 uXHIo:E>6p''+o* BU ̜A_{LoUm{C`Yd AS BQ-&C٢Ԩb]n(_[ mCQD]ܑBQuuAl , i*oeD8xQ{ `w۟'jquuxZZ!Gɳ2/HqpYcQ١@Nܗȳw oj(~)_?cZ/q ݕ:Bjj45X l(wkuȮ|pp>w"RUC|z ,d^̱x-bZ'mwc~fgdpVl}0= $}uOyn&!}"Uq3YS*BE.9 _uϳ|BQBb_R=cK楣,eu>3 GwܾD¢OpK}i7`:j%FSYyDl&iybEQ9mi\׈D{WIqڼY%dbkJ(ޝZݑT-q } WP=[waȹj귲-Hŕb>lB⁽QLs$fڝ(InrtJ ]Ԁ;G{B*}b2*MSȟ&(UbLjNf-_BC"g0JB#!>~ˁp!3^@9ț'eEʆ}lRo#W6e>|zaUڐ(C3ɺo%ӆ}l)i7f>0[g }E) (7̩8LTjUĤ8bou_/:#9 X7 ܳJfv{ L̄^]K t}}B.XNTٞ96e~⎕V`q)Z =m,ڐ^'$b߽Fb$=hA. %ch*AoWd̳f+3IB"wkIq~rb&tZrZmtt%8ľ~ūf82"WL>ԣ]Gte`x!CRe žpjɪilU\ʙ1G}03bUǓ0] }*>$ .I+$FKз[S"> z*hHbjEt~C48u6yEْo?͜Y-Da) wtlf]9MC42V[彜vte&W'D]V=TQ|Ԧw!1+nnQݼ[_yc@Bw3fjP'dW .!-?!_GU-34{14MKh<g2.ĬӨ?$e+J!hy> LEc/ȗ VT6X#E\:! ʃ kPEf#SSϘp{i Q!pNd ji׏24,RU?~Hb;C L &nH>T}FB/׈9[ *6SB7ĉ,[gQ1"|]ԙ7nآ;UPHEzh%WtdCTfmNgnj;Z[d$E1a47t9i$'35 {bTjrkW#Q?]: 5 fohջ2MǁN_0'ѭwBm;sX*Ufu,7:mx#.J -EW$ֆ8C\4Vlk|RPM,+Lu&(,fmFEۛDi:fyƣf>,-cQ;1rb>_nr|*;2vv1bvRw!h\GH[D=V hvXW;ŸTݷM[qJcjL{ rD) ܙ9_\і]< Q?'7hw*o;ZUP(Lp2NFaL6)KF^{$`wOҍ̭Lc2 ]ZdR-)ճ5IsWq7̜VuR%"7~d&zʲCL RIr|y򕸨 hcӢ4m!٪=NpׂK';o?lfܝ&u^UG.V]/]7H*S[DlnuaPfRx'>^B5+N{NBpNvgBr7p1e?(͓,pҕ[S.G 외ꐪe-!n?6M'o3+ˉOj ܩgzNeNB/XpB֙*giNZqņrz.Tvef\F<_nr/'5P HRq"KK}1ya}-߫˫ rx]C6 _3.9[ʼnEشrc_Y"+ƚ_^O)u ^pVzF9Oѥ=?-=֯2Yn~O:Zue.~\ QR\]Rs,ǯ\*0&vD1 'r_ML0{2(=c;U+#V/9Ly=CeÆ)ֶӨO˧b?$2) c2a%-e+i}ӣ(%]"Gܮ^l]vhouČA훕%F_G|pŧr{c_4y ϊs$^6 8 &3ΉKOlo(ᯩ־bHHD95s*dD'_%UU(度e?v%6rw@jl-5xTUsn.7)m (.s\.T)M1E ي|&3m~tR r^mfŞ4O1n#*$_T)A#wڟL48#fLi QI3"#:iKqbt_\fqZxx]3Nf:w,󪗙<}:fHZd]5g;{!_^NoH_k'Aǽ Ψ60Sɺ^?|P1KbfNtnJa !5*$)dM?HubKt>-n,8"/BWZᓖzOx>5i*G`C`vVI Љ~зS| P;"rc0 Y9qz}@1>ӊ79$yTUM n{;ZruO$EXsQa/ܳd~Iw:4 Bw8:q$t֊}`ݦekc~>7"2VA70Q2 POOTHHmx`'c [*+uIj5T#`xS?ky KO:Sa]?.T-mbgqUHU8'6ܠ&`uxa]Uq w7h:&rJ>u 1DZS쬨/I @ =I{BNG+r3t2jrMZdN lک ӖobvI񶆤Ue1!ky#z _G=ګ{nq:ٵk>~qѶaomf@)78HOjϼӫ"[9*_M Ӯ=~';zi@;cws> *Lњ1\ h8Ԋ^.|orqXRJM嚎%+ xǔ%-ss{Q{,/TM݅;E/RmÏlu;B1 Cj9U"̐Z|5eio4hh86CV-Fw1vFױLIsT.,{G4pD?NHھiiE;o 8>osRiejSk-*O_T?.M\ d1b Xڲ?g| ]tre?݊&j 榓Rjv$Dyw+cnj|}5FVxe%~%^F}a?BSl le{n#Ɋ]JQFX[@XI#{Ft?XV@[f_Ex\yʿkrNȝ#X;GVGqÅͲZ>7axbTGMƅ&nԑ٣Q5$O©a)A; IĎ(`;G(0R,݈lk*;L`oJo`m ym_Lh_E2˒[ !H3):_P@p,Ur@%nぷtp=L):%F_{Q=Ӌ٨[2LU쾳@Sظj2l'L)zO1WYIPn\p00: ,>syASR~Fd*FxG"3b/( uD1(fi*? 9Xn N(.;{& O}]6F9OWԊ tt{ןrbFH3Չ1P,pmRsfo.;гqEo:{>Ds]}3[-KJB/M !SvhLbW:=oTp$9[){e931>? 85Gxyh~^>Qlՠ'']'8r{4lI/sqUt6Wd9eV֌om|`JJ?PBU;k]6g\?ADQ]ڔR5sZ6c jjSb`>|Rɥ4|?hmtTK8ފC](*ᯎ)n1%.D*vPMqMF\){`(t$L<6M%: H :0e)1{FEOw:qƤ9yD^ ~cv,T. 7bι6s3pM֝FX-σ}k&pn!rk>˘d lW5%gA䀋]Q4yݵ6r]ǨrfKF8FN+g 2LcR]U$G[TCCu3ЭϩyMO*䘫a;fd΋t#wY4k.Oe1|k}}z95-D , 8767SWu绣f2/8_5E{rq8H[ 7%엁DҵQS?XR6Xj73ӞN. S"IYA#{h3v])_:&ƒ4!xDP@rE=Y[Eޑ@^Kb2CWZIp>e~u>yPaB4% q)]HmA?Š0^ݧV0g<$୰ǎ4m`$m.:QOF*Ծ \&/'] 0sȎ   SMCU9\\ao?=O'Z19ތ9OԘq30U%-x8}Vz'F_gɯύ(]Rwe|P 0 N_͐WVnspM|Da@}+Un|\2+qݞZA&ɫޫA26 ~l]젵Wi.C6Dɀ,!y1t ꄢK-W[ӼϢv`M(}-Ǭ@֝NίS",}i7C)흙dVwq+,=z;nF1.J~$0I\> stream xlc.]-\ze۶m۶mۮe۶˶97g2XcȘ3V&)#-#@YLE@ CF&djbio'bbP75(:L 0da{O'Ks 1տ5CK[K'Mٕɕ$eSS) ,))'Sڙ:\l,2ƦvΦT3{'09?̜m*br*Qaza @Ft;gM]\_l W2_N`&.#SsK;&igf`\r&fDښ(m\]L&NvqdB m-m<O?dڙCLb& .jF?pϩxʿףQ"[N&k[??XW5tqh3D=iXlFfVF35vur2s71ƪ1wUzkXh|8**#L6尅5΃ N;\ɇbxSUR*s; z7`jضr`.A ,yyc *:v֗ĩt)P~Lhj-Bn7@ nɰ-*µ 5%0Evwݪㆷ!2Wt G!oywe syTwyY|#^fu(\f)twEa`l6W\d'9&Q+-O1ۣo΋>ym )e@l]ځmڝAK%U2=1['",ݚκpv8R [2g5 y &\5_Ү#K\TEzW<2ҷJ5< UxKʠzS!O,>8c;Oz^W/MrBFN*A81u_oݭ2̽췸ڪDP0 !e 3-GK^eGqsGx^䀍^R\D K$}u󾃬?FDsuVw(BVŏbqz6+?1w~*eM^n@wתJ.ޖD:cqtzgz -U<8#)-{íAi\y-!wY}ɖX7nkK Fvg(KI N94ġBFhvvyRC8EWW2?c}aagQxb]c~E990RFD4>:+=(s qwtUm[<8"\cX`FyCrPܪsmgSiTB'vk?q';-4^ܑ&l dr1CwDwPڋ.hutJ9Ro,eE Em\9͕Z%W OIo=2=Qg9'>cn G `1L7~&96zv3CCHl ȊFg-N"}РQDU*eԢB~Jmp!%+NIiAnWO%iwI0[9^<91N/ʏ,[<,gScjEj=Z9]= Ͳcsg呇Vz 9ۋoضUK(j0p0%$9uyV |ė֙2P)M:bswmc=N̩@^t{#2FF,8$Y;(>.A>I#ūN9_L}T(qGMhѧYu۷k^م|:u,RNoXXgQdt8|cAt${ A]c -(*n&@rwaP[O+o2\7:^uaBߘR2ͭt ܪ 5ߚ#S?j7L$IK3;SAsaɃ!fES%p3iid6aKu0U˙Yg*.MR?g&O'2sʻ!A]icԸ!Ʊ${r:\i_@torڏ&cf"쑫~5']>oF(G #C+_o&װ-9n ]LͫJ^]:$4{+]^$ +ug!guCK6I3(hցAzk~jp{G*TvJ@olR'תyN&x41q@L8 4\ڠ}C$`agY$ p{lr>֫-ҩbPL;&,^Up$cu K0JMȓig4ÚoR W?hY/[Ь&UOxOkh!=P7GeûQt.>ԕgd!P\ -@?' OP_v@HH:eY,P+{P?aM|}P+jo e[ BW3f!83Ecs^ʊ,RMr?%ˠiQw'X7zwMStBufNH6G[.(fVAng*~afɦ !ƨ;EuKoUH BCp,eZoy DODeAcCCf&T= @L>`';ͩ^7n45߹&.gt@[O ق&(DSDIP*:LB}eJܕdƯ*Hehq՚[pPe(=hejP'/ [XR@0'd}>,-BΉ{p3_tc.L[=ڣx!q :U >mx&܂EC)tk2U[-zaZ(k2nT 4^w%3K3̉{4!kjJ"nۦp2qo`k/?zH.T"*=2c4q&x2SOCb^Bq$t&ʃAZ̻N_,V/ty4~>2L+/{sRJ&/MK%/۳GBfKq)*XϪkGK8][LY/W~M>T^1gޟ!ø s$Ï22g"v|˔H 瘡܂YB$\ZXAs× pec(D g"Rmg۵J3 8+{KԒ~ O^FǓ::%*{bJw܂!.)O2~k{14f܋qy\'Zj*N:jnNelZ&VdC)tRޚh{fNLjܷ/B&a68={UXY q@F\ys\qa]sޞWihvP?9r@8K#=s?U3a3uA4<+dډB>'c8XTOPŀ14"c캱o kG@,K/t[*, W b͏KkvL-%DHqRe[]&sQr> thO&)U޸Fnsm4#GT.Ljkܑ/w%&"]#:F~$ o1 Uٓ_'`- AJl}~V|x.8슴vh/@Lq{E\V|HA[tsMf%0e65VxW P ^]g3!3źt r;NNjNFV[`Q Z,o1n0b>a?PtRձ%H坫}] ϫH.(9&o@K Sj<_$q_g!sI8nⅣRcf2+DT @*O"ѿFo!p6ST^”J:Ϙ4M88 ~M9|<1A F'h&r\S#K #޸jz^cY9ҝ,|=OB^0T!eq_"S4]ίSNdk8 !EBth㯎 ۪?0Gד-1t`,x្d;<$?65l\k<ۂ.c,L¿_?˱eӼSk/Rzs@Ҥ*H{u^2Е=m\Noµ--$R}ǒYxNHdRrlЃ]uaе!8&MQ,[ߜ3/}3)M65H"RvE$71IΟ6;7u][H} z!Mփ;H]_WQ@+OrjPU 1Re\Èe]qTдϟ*8WkaoM|DsDE8,{SPq=+:ÅmĚ~ö'ttMh,@_~ud[p *Ga3wP887;S޿FR`> LF헣正e!=.e_ yVRdxoqV}7P4P^vmt!ƥsMQL.6rYb[9^=xǪmeAqJP@CcXI`VqMv1΁;KZ52a$U[9G׆qN`F^䎥Th?:;n<9Ļ a& j$!d2jԇaZ,G)EL c kpIb(&{2":$<Ņ/ `r&_Q-l|tu{hf۪=.|pԶ*|U.# 0u臜bI>9G@'2;xˢd2z|*QabSUgM^Ò{Tp]1@AުiuXpٟ'?M-lwK!+gB1?LcJ,hƙ+B#^^.Iv]LO֟|Wa]}_H 7㖲5܏XV^P^ C{xt'ܳYb] m-Zrn7c]{Dj`O/X/~[-m'.s Gl]z(SriЮA̚Ź21\,fg~ⶤxb~6N*PY0'uU%|O QpϘ`=3h'Gj9ރ#6&H^Rݘ]t> æb`6  'nYL^55ӈQ:]ҍ֢L=r2,mf\ҷOړ,Ncyb"CHnpԛpqnaoUrsK+,-R Z-gohG=Bv!-ߔ/FZ>yo:ird,mO]Q&ri?1I bRI\Iłx5Ʒ)n.6j}%&4s6Bf'~UoCyLtR9lՠQ 12^˸,߈g SbJcv/)w 7pmA÷f&A.Ye#.'0&MBа,ƑkIne_Bˠy%W^q7 |L%*{meu RERxIfLsû块e[VxޗTOtk RtuY ATBj18O^S"9L__[)jYbM}V˹`W}X-f{aϺ\jͶbْnjϬTӚ|6o|cO%x!|ǹR$[tH*_~@e*"`;I KT>B`5IwlRz7dRDM8ږ17]fA!AĄ#NEH C#F/f`t ^>?ɓ\N"v x."r]U6vG;ԘmbaMY0(Nks9iE;^I(y)[ % q줦 e\yT]{xҊz]ن=_yB~܄e%Wj#$;"ߋs-jӽ@lLbl挵8h e?{_I |s^x/4rf;vEO_|_P]MH'3ZT@0K3';KyBNWtwC<;HXih/A)yc: gBT_&/#jxJMEw/F(h Rf#yYIrZvV^*+PivLǣIx y= ,r[Co3M#&F-}T*KM^45QjRЌE<;O'r[FpO{؄qfIHPDV&ErwQ<s#3cBuz9=s-7D~Q!V%m%s=N]4h52zxOĔ)S jK_8rFqZ_t[-%F݉dy˝>1 лUƷav$zjoĺn$"1h}95 #R]<32"%c#׵P~>4+k^-WY(gjNB%^oZ+?'鳯AB@t`cz.4;,>TT=x|;nl g$lY/1e{=xr_İ%9<}&%{lre1<7i4ʎUďs]Y.6\zD8̄ yn:'!͖EGѻX5:El.'KJ1j"Kc.a[uMk,G Yb^b7Gm8Ub f 9Ԏ|; w<~$ [V%ȑ~hnQ.A $yݱjeMkM?/xۻH~8кH,V808~>:A]R)78WNWBh4r7X }AM?:Ug-3vb@zv5XDPT'|K{kZIlGr&v1K⅞%!pVq3(xT[gu~G! <̨ys6uF2$ ȗk!3fpjUE_vTPԊ>~AW> ā;돉c[ǹr>1%lc:k dN@B8NpT@eq'x%sfw-G#P'q!ZfA  :d9w)K_s!-++,2{s3 Ԇ8lm=+}B>{ZoV`DKA#L9&%[V/5muC@-&]%%bgc1Yfc?ي+,)3(e7}.ʳqQN{kr}j.6GլҏGݟuDŽr!'S ٯqx,q͂=)ioyA<اxۂC]aU+˖}HJ&Ø\4u_w߿\v0uiwZ0zm85u\l2mَiđ58ȩ9R{ySTm+Z^9Ow򴥉2f+һb]obͦ>%] 2R5X3%z󙮴0)^\M]@S3=,Cro3tá٘ߐA3t<ȁh")gxB0~Or:,R*bD{srF͵ڍ&[I ,P\HWե֝]x/G} Zm|j r"'rQbⲄTA̜hq1OeYr^5Vط#Gd.tk׸tw">,Z,9'#d, cddGVOYJ˅Ey٣ptK 5m3}C-#Mi)EK³{ L,PӶI =D- ``Xx6>!LF]YQ23<`l ga:e`}3+o"}/FtR6vZ 8WGY:S6-07,%Ke2au?,V؞:i\K{Np&awN}sG$][8*8#yif\ji>WN/_g?ҁ3<aio?XMİDrc)@ zl}Ob؎ [؂SцͷN)=%h$]m=a,M]DK*E:! [yMKԸFd$F\ 1 0aYu6߁"W+zs &ۃUᴍ&5zٯKcuq+AuͩdDJ#A<:6'ZW 8705gnHN>4x[ yN-_d Gk&Q.|[K$l${"*5!qSNKOeKk׭1>cll!2 d398)-e-9x[Yz5(@_ɜL} 7Q`syl-wJw 6"/hGA/@Òάo=4Wt c?~;}ت뤍=3EAlq%~ ˡ2hA:S=$9d\`>\IUf}X(ŵA13eA0%Kcu5]Q}\{ث6ș1 WkXKjm__ޡ$fkD?m 7e. >`.}U8Fai!apww8h’ާK sRyXlu%fr~!.U-qIr] ro񻮊 #MX,1^  ʺg45WcFQ-JXܐ7z Fᚢ ƁzlV=x҄X/[!Skrw~N]8UDCcg\kr"z)[Ml{M]%iTxFL@r괛j5 W֫{y c[=g#m %;ۥWsF-T(t\Ae/A<s$QO IGQQ'H+Ri8aM]>):wvVE#GKڎ&&dH@V{"qù@Cw ;N"1= Dm֮{kavzY ~JDlCiK* ?ـ" }%Yto=$ ^o]7U9|2oZƒ >˚_X))ˠ h0$P}:/7w-!i/IbTV!)?@DLlrنb@G<CSU v(FbQ tmPGE^'?/fރy+?^+Q*zw]4h-~t+9ݮ[ zpn3j"5Y(S,kvmu9#X ä9À \#HYd5HDbԿԣhL`y"*iH34e)<Δ Zn(}?E;7_U{w]>[-Μ~c~)Lz>3> 6?/P}pMv\ hu,'%Be_$nJ' 'mer 5:FH@fOIhYHy)lM\-$LCi0:=s`+4ӈCz%v΀oJLMn:rpkP,}~͸eeWPv5c{D&[7硼fs刀~q~c}}*y-7-jv8⢜LyOvUKF+h>wyShQPeP}m?ҟ\AIAv[B$=#Cfׅ\gH{=:&Fӄ?X[_L8RU."`kF#'Da&[|U 4ץkdM}AM 4+"%[j;c;5 jQXlS(nfwZցgw aYL6ZU̢Upܱ/Ęc}b&Dqy{ 粖?m7?ඹe^ҿ9D(.j竼T9o6-,}H2SL((eMU+qQ6TGp4CPEp MA!YAEW#:PMg ] :OCnV:W=L ~9DnSt4hVU/& pE?˝i4#[K j=4> endobj 404 0 obj << /Type /ObjStm /N 97 /First 897 /Length 4169 /Filter /FlateDecode >> stream x[Ys7~篘xLWUUŇ|^(j,͆q 9hSVY3` iIEA I9Ӆ`!*e Ynp "-z$9-}8is )PB Z(/38d ]h`ᎍQL@.BF*]a, ڸиB)O*Ԉ?foh{@7Dȓ8sDalC#C`@+8(x1bcExC}Ρc,6tP _X+@0wm(m?sK} p {|k E5xHa`)}Pi c h%@4+!D_XןfoNMn>(g3nܱnD޵p!=~Ej'al|UQPi`__H)Er7{~ ;xrb ߣ+i .MՔ@+M`)wuWMF6 *l3{;oOހ/|7y,doYh)Xt9.{,jVA{0]@nk_ Щ>++(|&crϽC!,C=t=I'rN~U !_UR&!Ry~+g` -ט 2~M籮~u~DKMRg{7m OBr\gZ?fvTi>kt@ ]GtsÀ^bof?x+0or1u) @>iM'5o3v[˃sTC|yYćDe$V:r®[q0>\ǜoy8x2k+Kl$v=ةd/7/9bʺM-Tȟ~ZV OJ@lVn¥|j쮶#!O7%t_eHZouw1?`Z]oo7W>8$-Dpme[8lg&ozҖ;S5(/ƣ-޶ 9%WKoohI睰p@>{ nĜt:~k?wNsNj>O+~hiΧ/xВ.衂g{^`ޖΏH-^~*ž}jZ% tk^1?%O7ޔFy!o7 3,-w?M=4=*? DMߦv9=]yױ띁a]5ن w6=BEH;}u>\C-S(>tzwWxx)nYQ_dʘR`QQt:x=߃Nf_]' :R7"7uI)kfOApn@a0!G=zWw_j ͥ endstream endobj 464 0 obj << /Type /XRef /Index [0 465] /Size 465 /W [1 3 1] /Root 462 0 R /Info 463 0 R /ID [<68364C7D7E1DF602FDAF0EE30B02264E> <68364C7D7E1DF602FDAF0EE30B02264E>] /Length 1131 /Filter /FlateDecode >> stream x%O]UシЏHj jp?S (jЃS *^@Bkś5粄k})pu)ʕ$*ep UpunMplmp ;{.,d\u`fԈvj$*isuok,| n**irETAWD=g;;Ɣfs#n%Q ADA/4E)n4*#Qh1.(SQ!v{3y$64N$z܃]5HbwG M2[0HoE2HY Mff3IN7{MW$9qlJ$'-O#Rqކ$Ad(m>c-f#H-vyUE^1{{u( ҾH]<`$i<ț}3^|-IhBHg|@[}(2g4V+dG_jP*@%ș/4MaCIZ7{:5ՃFHyA_˨h< Oھ:7}um@`/ ;΁CC{6!GOڴFOLӾ/ʛs`jip̛w?ח_KUV̿U.ol[= 2.8.0 passes package metadata to citation(). if(!exists("meta") || is.null(meta)) meta <- packageDescription("Epi") year <- sub("-.*", "", meta$Date) note <- sprintf("R package version %s", meta$Version) citEntry(entry = "Manual", title = "{Epi}: A Package for Statistical Analysis in Epidemiology", author = personList(as.person("Bendix Carstensen"), as.person("Martyn Plummer"), as.person("Esa Laara"), as.person("Michael Hills")), year = year, note = note, url = "https://CRAN.R-project.org/package=Epi", textVersion = paste("Bendix Carstensen, Martyn Plummer, Esa Laara, Michael Hills", sprintf("(%s).", year), "Epi: A Package for Statistical Analysis in Epidemiology.", paste(note, ".", sep = ""), "URL https://CRAN.R-project.org/package=Epi") ) citEntry(entry = "Article", title = "{Lexis}: An {R} Class for Epidemiological Studies with Long-Term Follow-Up", author = personList(as.person("Martyn Plummer"), as.person("Bendix Carstensen")), journal = "Journal of Statistical Software", year = "2011", volume = "38", number = "5", pages = "1--12", url = "https://www.jstatsoft.org/v38/i05/", textVersion = paste("Martyn Plummer, Bendix Carstensen (2011).", "Lexis: An R Class for Epidemiological Studies with Long-Term Follow-Up.", "Journal of Statistical Software, 38(5), 1-12.", "URL https://www.jstatsoft.org/v38/i05/."), header = "If you use Lexis objects/diagrams, please also cite:" ) citEntry(entry = "Article", title = "Using {Lexis} Objects for Multi-State Models in {R}", author = personList(as.person("Bendix Carstensen"), as.person("Martyn Plummer")), journal = "Journal of Statistical Software", year = "2011", volume = "38", number = "6", pages = "1--18", url = "https://www.jstatsoft.org/v38/i06/", textVersion = paste("Bendix Carstensen, Martyn Plummer (2011).", "Using Lexis Objects for Multi-State Models in R.", "Journal of Statistical Software, 38(6), 1-18.", "URL https://www.jstatsoft.org/v38/i06/."), header = "For use of Lexis objects in multi-state models, please also cite:" ) Epi/CHANGES0000644000176200001440000011427514016476407012005 0ustar liggesusersChanges in 2.44 o addCov.Lexis now always return a data.frame o New function: addDrug.Lexis adding drug exposure variables from files with drug exposure information to a Lexis object. Changes in 2.43 o a bug in addCov.Lexis ignored clinical mesurements prior to start of follow-up. This lead to a major redesign of addCov.Lexis by taing advatage of rcutLexis. It lost the add.scales argument, but time since clinical measurement is returned as a timescale by default. o ci.Crisk added. Computes simulation-based confidence intervals for cumulative risks in a competing risks situation. o sortLexis, orderLexis and order.Lexis added; order/sort of a Lexis object by (lex.id,time). o precursor.states now defaults to transient(Lx) for cutLexis, mcutLexis and rcutLexis, so precursor.states is no longer a required argument. o mcutLexis reported wrong number of ties resolved; fixed o Bug in mcutLexis accidentally omitting new states as precursor states o Bug in boxes.Lexis causing text in boxes always to be printed in bold font is fixed. Default font is changed to 1 instead of 2 o factorize.Lexis now only turns lex.Cst and lex.Xst into factors with the same set of levels. o Relevel.Lexis now behaves like Relevel, specifically: a character vector as second argument (ref=) will cause a reordering of levels of lex.Cst and lex.Xst, earlier it would merely cause a renaming of states, which could cause undetected rubbish. Changes in 2.42 o Extra line feed in output from coxph.Lexis to make output nicer o function 'rcutLexis' added allowing multiple transitions per person to be specified for cuts, including recurrences. Only keeps track of most recently occupied state, not history. Changes in 2.41 o A bug in addCov.Lexis messing up states due to unexpected sort order of a merge, has been rectified. o the ccwc function could select invalid controls when there was only one eligible non-case, due to the documented behaviour of sample for vectors of length 1. Changes in 2.40 o plotCIF and stackedCIF have been modified to comply with changes in survival (Esa Laara) Changes in 2.39 o mat2pol added: function that takes a set of curves represented as columns in a matrix (mat) and plots then as stacked polygons (pol) o the argument formula for glm.Lexis, gam.Lexis and coxph.Lexis is moved up to be the second argument, making simple specification of models for two-state (survival) models easier o addCov.Lexis was not exported as a proper method for Lexis, due to a mis-named argument in the definition. o addCov.Lexis produced erroneous results because of mistaken sorting order variables o A new function harm generating a basis of harmonic functions o Cleanup of documentation for Relevel o ci.lin argument ctr.mat now allows a list of 4 data frames to compute differences of differences of predictions. Useful for some interaction models o Bug in notes from ccwc corrected (MP) o Minor editorial changes in annotation of output from coxph.Lexis o The by= argument to summary.Lexis crashed the function if the Lexis object was a data.table. Now fixed. o Documentation of boxes.MS slightly amended. Changes in 2.38 o Minor editorial changes in urls in documentation files o The poisreg family now works with anova o Superfluous 'names' attributes on all variables in data sets bdendo and bdendo11 have been removed. Documentation for both now in the same file. bdendo11.Rd removed. Changes in 2.37 o ci.surv added to facilitate calculation of survival function from a smooth parametric model o Bug in apc.LCa - wrong labeling of resulting list element has been rectified. Changes in 2.36 o Lexis gains a 'notes' argument allowing to silence notes o Documentation of bootLexis upadated and groomed o Description of units of measurement in diet dataset corrected o Problems with default reference period/cohort in apc.fit fixed o apc.lines gains an argument shade= enabling shaded confidence limits of estimated curves. o Scaling of the trend internally in projection.ip to avoid numerical problems in solve() o Default vertical scaling of the box size in boxes.MS increased a bit Changes in 2.35 o Major re-write of vignette of follow-up data o glm.Lexis example updated o Lexis now gives a note and not a warning when dropping persons with no follow-up time o Epi.Rd included as man page, allowing easy access to the index via ?Epi. o simLexis updated to cope with poisreg family in modeling input o timeSince function added to tell which time scales are defined as time since entry to a state. Allows for a slightly more compact output from summary.Lexis, when timeScales=TRUE. o such timescales are NA before entry. In modeling we may want these to be 0, hence the model tsNA20 (timescale NAs to zero), that does this for such time scales. And optionally for all. o improved readbility of error message from ci.lin Changes in 2.34 o cleanup of ci.lin to exploit the (post 3.5.0) behaviour of coef/vcov which are now in sync o apc.fit nomenclature for drift extraction has been changed from "weighted" to "Y" in concert with BxCs recent paper. Changes in 2.33 o Fixed bug in gen.exp causing a crash when purchase dates were indestinguishable from FU-dates by match() but not by %in%. o Previously, apc.fit with dist="bin" returned odds in the Age component. Now returns probabilities. o Argument names and -order have been changed for glm.Lexis, gam.Lexis and coxph.Lexis, they are now x, from, to and formula. o Utility functions to describe state characteristics and relationships have been added: absorbing(), transient(), preceding(), succeeding(), before() and after() Changes in 2.32 o gen.exp: time since drug cessation was only computed for latest cessation, not for intermittent ones. Rectified and expanded set of result variables that keep track of patients' status are added. gen.exp also gains an argument, rm.dose, indicating whether doses purchased should be counted if time-allocation of purchases are limited by the push.max argument. Several disjoint FU-periods for persons are now allowed. o The changed functionality of vcov() returning 0s for aliased parameters (instead of omitting them) is now used and hence ci.lin is simplified. o A small utility in.span(A,x) checks if the vector x is in the column span of the matrix A. At the same time thinCol to remove linearly dependent columns from a matrix is now a function of its own. It was previously buried inside detrend, but the functions decurve and detrend needed it. Changes in 2.31 o A new link function, poisreg, added for (event,time) response data, courtesy of Martyn Plummer o Functions glm.Lexis, gam.Lexis and coxph.Lexis fitting models using Lexis objects have been added. The two former use the poisreg family. Slightly experimental still. o Bug in LCa.fit rectified, non-needed elements of npar can now be omitted, previously all 5 named items of the list were required. o matshade now allow NAs in x or y coordinates, causing separate shaded areas to be drawn. Changes in 2.30 o A function decurve added; it removes not only a linear trend but also a quadratic term from a designmatrix. Belongs in the realm of APC models. o Small changes in pc.lines, and addition of pc.matshade to make shaded confidence limits in APC plots Changes in 2.29 o ci.lin with a list of two prediction frames as argument to ctr.mat now also honors the vcov and sample arguments. Also expanded to accept a single data frame to mimick ci.pred and extending this to honor arguments vcov and sample. This facility ignores the offset, though. o matshade gains an argument plot that starts a new plot. Defauts to is.null(dev.list()), so if no plot frame is open one will be made. Changes in 2.28 o Added function matshade() that plots shaded confidence bands. o Epi:::ci.dfr (called from ci.lin) redesigned so that it actually works in most cases. Changes in 2.27 o Documentation of LCa.fit improved - really disturbing typos rectified. o Ns groomed to have knots= have precedence over df=, o Code of ci.dfr groomed, gam objects are now also accommodated when using the list(dfrx,dfrr) version of the ctr.mat argument. Bug causing a crash with splines fixed, however not elegantly. Changes in 2.26 o ci.lin did not honour a reference data frame of 1 row as promised. Fixed. Changes in 2.25 o N2Y now also completes the Lexis triangles in the last age-category by fitting the sum to the average of the two prevalent numbers. o ci.lin(vcov=TRUE) now returns a list whose first element is named 'coef' (previously 'est') and which is a vector (previously a 1-column matrix). Old performance was illogical. ci.lin also now accepts a list of two prediction dataframes as the ctr.mat argument. On the basis of these it computes the row-wise difference (RR for ci.exp). o bootLexis for bootstrapping persons from a Lexis object added. nid.Lexis (and nid.default) counting the number of persons in a Lexis object added as utility. o Dataset BrCa used for illustration of the Crowther and Lambert paper added together with a vignette using the data to illustrate a subset of the analyses as in the paper, plus some extra. o Relevel had a minor bug producing warnings where none were needed. Changes in 2.24 o Bug in Relevel functionality when using a 2-column structure for grouping levels fixed. Now also transfers ungrouped levels to the result as new levels. o Substantial update of the vignette on follow-up data with Epi. o Documentation groomed. Changes in 2.22 o vcov() use in ci.lin() updated to work with the new definition of vcov. o Relevel now also accepts a two-column structure as input --- basically a list of what each factor level should be mapped to. o A few changes and groomings of the vignettes Changes in 2.21 o minor changes in documentation of LCa.fit o the addScales argument to addCov.Lexis now implemented, along with small changes in the naming of the examination types in the absence of given ones. Changes in 2.20 o Vignettes now pre-build on order to keep source o Enhanced options for seq.states= argument to mcutLexis() allowing the last seen event determine the state. Inspired by a vigette in the survival package describing the feature. Changes in 2.19 o Typos in documentation of LCa.fit fixed o Bug in knot calculation in LCa.fit fixed. Meaningless models emerged if explicit knots were supplied for cohort effects. Prior to 2.19 only supplying *number* of knots for effects would give meaningful models if a cohort effect were included (with or without age-interaction). WISH: gen.exp has now got a wrapper, genExp.Lexis, explicitly using the Lexis structure. Changes in 2.18 o addCov.Lexis was fundamentally flawed, re-written, argument names and order changed too. o Documentation links between addCov.Lexis and gen.exp are introduced. Changes in 2.16 o Function addCov.Lexis added. Allows addition of covariates (clinical mesurements) taken at a particular time to be added to a Lexis object. Changes in 2.15 o typo in stackedCIF code corrected (caused a crash with ony one group) Changes in 2.14 o plotCIF, stackedCIF plotting Nelson-Aalen-Johansen estimators of cumulative risks added, courtesy Esa Lr o Convenice wrappers for grep to select elements: fgrep, ngrep, lgrep1. o A bug in Ns has been fixed, thanks to Lars J Diaz (DK) and Stephen Wade (AUS). o surv1, surv2, yll, erl: NAs in input rates are now changed to 0 (with a warning) instead of crashing the function. o documentation of ci.cum groomed. Changes in 2.12 o New function ci.ratio to compute RR with CIs from independent estimates of rates Changes in 2.11 o Small errors in calculation of knots in the simLexis macro corrected o A severe bug in mcutLexis which caused omission of certain cuts has been fixed. Changes in 2.10 o Bug in lls() caused a crash when objects had funny names (such as '[.Lexis'). Fixed. Changes in 2.9 o Grooming of code and documentation for mcutLexis. Changes in 2.8 o A function, mcutLexis, to cut at several different event times, preserving intermediat event histories has been added. o Errors in the erl.Rd corrected: Description of the argument "immune" was wrong, as were the description of the timepoints where rates were supposed given. o Inaccuracies in the vignette for simLexis patched. o lls() now also lists the size of objects o For illustrative purposes the DMepi dataset has been included Changes in 2.7 o '[.Lexis' redefined to comply with data.table as used from popEpi Changes in 2.6 o Added function erl computing Expected Residual Lifetime in an illness-death model added, together with companions surv1, surv2, erl1 and yll (Years of Life Lost). Changes in 2.5 o Argument "timeScales" added to summary.Lexis, printing names of timescales and which of them (if any) are defined as time since enty into a state. o rm.tr added; removes transitions from a Lexis object o boxes.MS no longer isssues a warning when show.BE is set to TRUE. o LCa.fit rewritten and expanded to encompass both age-period and age-cohort multiplicative interactions. o APC.LCa added, fits all possible Lee-Carter type models and APC-models. boxes.APC.LCa plots the relationship between models including the residual deviances, and optionally places boxes to provide overview of best fitting models. Changes in 2.4 o Ns updated with the possibility of clamping effects to have 0 slope beyond the outer knots, see argument "fixsl". Changes in 2.3 o Cplot (usually called from rateplot) now checks if age- and period-groupings are of the same length, and tells you if they are not, instead of just plotting (almost) nothing. o Grooming of LCa functions, and in particular the documentation. o Update of apc.fit so that also Y^2/D (the observed information about the rate) and Y (person-time) is allowed as weight when defining the inner product inducing orthogonality between linear and non-linear effects. Changes in 2.2 o LCa.fit added: Fits Lee-Carter models with smooth age and time effects to rate-data. print, summary, plot and predict methods also supplied. Changes in 2.1 o The show.BE="nz" feature in boxes.Lexis is now documented o "[.Lexis" is now exported and works... Changes in 2.0 o cbind, rbind and "[" methods for Lexis objects have been added o Consequential fixes in simLexis Changes in 1.1.72 o Improved man page for N2Y Changes in 1.1.71 o Bug from calling lme4::vcov from within ci.lin fixed Changes in 1.1.70 o Bug in calling lme4::fixef from within ci.lin fixed o ci.lin with sample=TRUE now samples from the posterior of the parameter vector and then transforms this by the contrast matrix (earlier the sampling was from the posterior of the ctr.mat transformed parameters). Changes in 1.1.69 o ci.cum now has an argument ci.Exp (defaults to FALSE) that computes the ci of the cum.haz on the log-scale. This is useful if you want to transform c.i.s to the survival scale and want the c.i.s for the survival function to stay inside [0,1]. o ci.pred updated to automatically use the inverse link for transformation of results. Also now only accepts glm objects. o Ns now have arguents ref= and detrend=. ref= allows a reference value to be specified (where the Ns is 0); this is independent of the supplied data. detrend= projects the columns of Ns() on the orthogonal of the variable supplied; this is strongly dependent on the data. Changes in 1.1.68 o ci.lin has been groomed to use internally (newly, from 1.1.68) defined methods COEF and VCOV to extract coefficients and variance-covariances of these from different types of objects. Changes in 1.1.67 o The simLexis vignette has been groomed a bit o The function ci.pred (a wrapper for predict.glm) added Changes in 1.1.66 o A crr.Lexis method has been added to simplify the use of the Fine-Gray model when data are set up in a Lexis object. o ci.lin and ci.exp now recognises crr objects. o A wrapper, ci.pred, for predict.glm has been added, it returns predictions with confidence intervals. Changes in 1.1.65 o Despite the note, dropped rows from construction of a Lexis objects were not put in the "dropped" attribute. Changes in 1.1.64 o Fixed the sim-Lexis vignette Changes in 1.1.64 o Added function ZArray, which generates an array of 0s just as NArray generates an array of NAs. o Updated code to avoid "::" and ":::" as far as possible, as well as "<<-". Hence excluded records from construction of a Lexis object is now put in an attribute "dropped" of the Lexis object. Changes in 1.1.62 o Bug fix in the example code for boxes.Lexis Changes in 1.1.61 o ci.lin updated to recognize objects of class "lmerMod" from lmer. Changes in 1.1.60 o Documentation for DMlate updated. Changes in 1.1.59 o boxes.Lexis updated so that also no. of beginners and enders are properly formatted if larger than 999 Changes in 1.1.57 o boxes.Lexis updated with arguments show.BE and BE.pre, allowing annotation of boxes by the *number* of persons strating and ending in different states. Changes in 1.1.57 o simLexis substantially updated and groomed to accept Cox-models for transitions too. Example in the documentation and vignette is expanded accordingly. Changes in 1.1.56 o Typos in documentation corrected. o When records with too short follow-up are encountered by Lexis, they are dropped from the resulting object, but they will be availabe in the object drop.sh in the global environment. o The col and border arguments to plot.pState were not repeated automatically, so needed fixing. o More elaborate warning and error-messages if initiators in absorbing states are handed to simLexis. Changes in 1.1.55 o Documentation of clogistic is clarified w.r.t. likelihood contributions of matched sets. Changes in 1.1.54 o apc.fit updated to use the Ns wrapper, and automatically use knots located so that the marginal number of events is the same between knots. o plot.apc and lines.apc defined as methods for apc objects. They are just wrappers for apc.plot and apc.lines. o gen.exp example slightly modified to give better output. Changes in 1.1.53 o Population figures in N.dk, M.dk and Y.dk updated Changes in 1.1.52 o col.txt argument to plotEst was not working properly. Fixed o txt argument to plotEst can now be an expression vector allowing sub- and superscripts and mathematical expressions. o Relevel did not issue warning or error when a given level was being specified as member of more than one new level. It now stops with an error. o The convenience wrappers Ns (for ns) and NArray (for array) have been added Changes in 1.1.51 o boxes.Lexis fixed so that rates could be computed from matrix input to. Changes in 1.1.50 o Calculation of p-values in ci.lin has been modified, thyanks to Krista Fischer. Changes in 1.1.49 o Default of "border" argument to plot.pState changed to "transparent" Changes in 1.1.48 o Slight tidying of code in apc.fit. Automatic determination of reference points for period and cohort fixed to produce median correctly. Changes in 1.1.47 o Bug in simLexis (specifically in Epi:::simX) where factor levels were wrongly used, is now corrected. Versions earlier are likely to produce wrong state allocation in simulated dataset and not crash. Changes in 1.1.46 o lex.id handling in simLexis changed, allows for easier simulation in chunks which may be necessary to avoid memory problems. Changes in 1.1.45 o simLexis introduced. Allows simulation from multiple timescale mulitste models. Accompanying utilities supplied too: pr.Lexis, prev and plot.prev. Changes in 1.1.44 o A number of dead links in the documentation have been resurrected. o attach() purged from Lexis.diagram, Lexis.lines and ccwc. o Bug in computing AUC in ROC fixed, thanks to Karl Ove Hufthammer. Documentation clarified with respect to definition of test. o Bug fix to remove warning when more than one variable name was supplied in the by= argument of summary.Lexis. Changes in 1.1.43 o N2Y fixed so that local variable bindings are recognized (M. Plummer) o summary.Lexis expanded with the argument by=, allowing a summary by a factor. Also, the default behaviour is now to return only the transition summary, and only optionally the transition rates; giverned by the Rates= argument Changes in 1.1.42 o Bug that caused a crash of ROC when vaiables in the "form" argument were only in the "data" argument data frame and not in the global environmant. Now fixed thanks to Ben Barnes of the Robert Koch Institute, German Center for Cancer Registry Data Changes in 1.1.41 o boxes.Lexis now returns an object of class MS, which easily allows plotting of slightly modified multistate displays using the new command boxes.MS. The facility in boxes.Lexis to produce weedy code for the same purpose has been removed. o boxes.Lexis now allows to show *both* number of transitions *and* rates between the states. o stack.Lexis now takes the Lexis attributes "time.scales" and "breaks" across from the Lexis object to the stacked.Lexis object. Changes in 1.1.40 o subset, transform and Relevel methods have been added for objects of type stacked.Lexis. Changes in 1.1.39 o effx has been expanded with an extra argument eff=, which defaults to NULL, allows "RR" for relative risk for binary data, and "RD" for rate differences for failure data. Also logical response is admitted for binomial and failure responses. o factorize and Relevel are now synonyms. Methods for Relevel are Relevel.default, Relevel.factor, Relevel.Lexis, for factorise only the factorize.default and factorize.Lexis exist. o A mistake in estimating sequential residuals in apc.fit() has been corrected. The wrong model (adc instead of rc, in the case parm == "AD-C-P") was used for the basis of residuals. Thanks to Shih-Yung Su from Taiwan. o as.Date.cal.yr is added, even though it was removed earlier: cal.yr is a class for date variables and the conversion function should be around. o A bug in ci.pd causing calculations to go wrong if vectors were supplied as input. Correction thanks to Patrick Rymer. o A bug in factorize.Lexis is fixed. Now appropriately groups factor levels in the state factors lex.Cst and lex.Xst. Relevel.Lexis is defined as an alias for factorize.Lexis. Thus the functins Relevel() and factorize() are now identical. Changes in 1.1.36 o A bug in boxes.Lexis causing arrow-coloring to go out of sync fixed o Array problems in stat.table fixed Changes in 1.1.35 o none. Just compiled for the archive with R 2.15.0 Changes in 1.1.34 o plotEst now has an arguments col.txt and font.txt which allows the use of different colors and fonts for the annotation of the estimates. Models likely to be multiplicative incurs a logarithmic x-axis in the plot. o ci.exp introduced - a wrapper for ci.lin, getting the exponentiated parameters with CIs. o A bug causing unintended reordering of levels using boxes.Lexis is fixed. o Method etm for Lexis objects included. This just takes a Lexis object, and fishes out the relevant information to be able to call the function etm from the etm package (empirical transition matrix). This function is now physically defined in the file(s) foreign.Lexis.R(d). Changes in 1.1.32 o gen.exp was re-written and simplified. o Small cosmetic changes to the code for N2Y Changes in 1.1.31 o The extractor functions entry, exit, status and dur have now an argument by.id=FALSE. If set to TRUE, only one record per lex.id is returned and the resulting object has lex.id as (row)names attribute. Changes in 1.1.30 o DMlate expanded with the column dooad o Documentation for as.Date.cal.yr fixed o Bug in gen.exp fixed (It was assuming a data frame called dfr existed was wrong, but not spotted by the example because in the example one actually did exist!) Changes in 1.1.29 o New function gen.exp for generating time-varying exposure variables from drug purchase records. Changes in 1.1.28 o splitLexis now allows NAs in the timescale on which you split. Records with NAs are simply left untouched, but a warning is printed. o A bug in boxes.Lexis preventing rates to be printed was issued. Changes in 1.1.27 o A few typos corrected o Functions a.lines, a.points, cp.lines and cp.points added to facilitate plotting points and curves from APC-models. o apc.fit did not return the reference cohort/period if it was not supplied in a model with explicit drift. Changes in 1.1.26 o A new function N2Y added which computes person-years in Lexis triangles from population prevalence data. o Demographic example data from Denmark added: N.dk - population size at 1 Jan Y.dk - risk time in Lexis triangles M.dk - mortality data B.dk - births in Denmark 1902 ff. Changes in 1.1.25 o Added sd() function to stat.table() o tmat.Lexis has an argument Y=FALSE which if set to TRUE will return the person-years in the diagonal. o boxes() now explicitly defined with methods boxes.Lexis and boxes.matrix that explicitly call boxes.default (which is the function doing the work (almost identical to the former boxes.Lexis). Changes in 1.1.24 o countLexis did not take the "timescales" and "breaks" attribute across to the resulting Lexis object. Changes in 1.1.23 o A missing defualt value for new.scale in doCutLexis caused a crash o A missing default value for new.scale in doCutLexis caused a crash when using the count=TRUE argument to cutLexis. Changes in 1.1.23 o ci.lin and ci.cum now have a sample= argument that causes return of a sample from the normal distribution with mean equal to the estimates and variance equal to the estimated variance of the estimates. To be used to do "parametric bootstrap" of complicated functions of the parameters, such as state occupancy probabilities from multistate models. o ci.lin now supports objects of class mipo (Multiple Imputation Pooled Objects --- see the mice package). o tabplot removed --- it was a proper subset of the mosaicplot from the graphics package Changes in 1.1.22 o A bug in boxes.Lexis prevented the use of ht= and wd= arguments to set boxes to a prespecified size. The scaling of these is now also clarified in the man file for boxes.Lexis. Changes in 1.1.21 o Specifying period of cohort effects with only two parameters caused apc.fit to crash. Fixed by adding a few ",drop=FALSE" in subsetting of matrices. o Since as.Date.cal.yr was not used anywhere, it has been removed from the package. o A function Wald added to do Wald test of several parameters or linear combinations of them. It is a small extension on top of ci.lin. Changes in 1.1.20 o CITATION file added. Changes in 1.1.19 o ci.lin amended by an argument subint= allowing to select subsets of parameters matching several strings. Changes in 1.1.18 o boxes.Lexis has been made a bit more versatile for production of box-diagrams from multistate models. Changes in 1.1.17 o A comma was missing in the code-output from boxes.Lexis o mstate.Lexis function changed name to msdata.Lexis, according to the change in convention in the mstate package. Code simplified as it is now using the functionality in stack.Lexis. o A factorize.Lexis function has been added, it basically changes the variables lex.Cst and lex.Xst to factors with same set of levels. A useful facility when we want boxes.Lexis to work. Changes in 1.1.16 o boxes.Lexis now resets the graphical parameters (par()) on exit. o plot.Lexis now has a default Lexis object as argument, allowing use of the function to plot empty Lexis diagrams without setting up a Lexis object first. The bogus object has timescales c("Date","Age") but 0 follow-up time. Changes in 1.1.14 o ci.lin now has an argument df to allow for t-quantiles in ci calculations. o lls() function revised to give nicer (left justified) output. Changes in 1.1.13 o ci.lin now supports objects of class clogistic. o utility function ci.mat() added --- earlier defined inside ci.lin and ci.cum, but also useful on its own. o lls() and clear() added, to ease overview and clearing of workspace (and attachments!) o apc.frame now sets the option "apc.frame.par" with the offset and scaling of calendar time part of the apc frame. This is recognised now by apc.lines automatically. o Function pc.points, pc.lines, pc.matlines, pc.matpoints added to ease plotting the calendar time region of an apc frame; live off the option "apc.frame.par". Changes in 1.1.12 o Added function clogistic for conditional logistic regression. Changes in 1.1.9 o A function PY.ann.Lexis is added. It writes the length of (pieces of) lifelines in a Lexis digram produced by plot.Lexis. o plot.Lexis now sets an option "Lexis.time.scale" which is queried by lines.Lexis and points.Lexis, so that time.scale is only needed in plot.Lexis. Changes in 1.1.8 o apc.fit had a bug in the specification of knots when using the argument model="bs". Fixed. Changes in 1.1.7 o boxes.Lexis has been further enhanced with the facility to plot rates instead of no. transitions on the arrows if required. The code has been tidied a bit too. o The man file for boxes.Lexis and subsidiaries have been renamed to MS.boxes.Rd Changes in 1.1.5 o boxes.Lexis have been enhanced to accommodate two-way transitions between states. Annotation by number of transitions has been improved to accommodate this too by always putting the number on the left side of the arrow. Changes in 1.1.3 o ci.lin() and ci.cum() have been expanded to accept objects of class "MIresult" from the mitools package (Esa Lr). o The boxes.Lexis() now gives a more versatile piece of code, which computes the text widths and heights. Changes in 1.1.2 o cutLexis crashed if new.state=TRUE and new.scale=FALSE were specified. Fixed. Changes in 1.1.1 o Functions stack.Lexis, tmat.Lexis and mstate.Lexis have been added to facilitate practical multistate modeling. The two latter provides an interface to the mstate package. o Functions tbox, dbox, fillarr, boxarr and boxes.Lexis added to facilitate drawing of multistate box diagrams. Changes in 1.1.0 o Two new datasets DMrand and DMlate with random samples from the Danish National diabetes register. The examples from these illustrate most of the recently added multistate stuff. o Minor bug in check.time.scale was fixed (misplaced parentheses in the argument to any(), causing a warning). o cutLexis introduces a new timescale "time since event", which has missing values for any follow-up time prior to event. Hence requires that the Lexis plotting functions explicitly discards the units with missing on timescales in use. Accomplished by the new function valid.times. o cutLexis now places the new states after the precursor states and before the other ones in the factors lex.Cst and lex.Xst. o splitLexis uses the first timescale by default. Which in particular means that in the case of only one time scale it is not necessary to specify it, so this has become acceptable now. o Vignettes has been updated. o Example for ci.cum has been fixed to be compatible with the new survival package as of 2.9.0 as announced. o apc.fit fitted the wrong model when using parm="AC-P". Fixed o The axis scaling of apc.plot has been improved. o apc.frame now by default plots a reference line for RR=1, this may be switched off by the (newly introduced) parameter "ref.line=FALSE". Changes in 1.0.10 o Fixed parse errors in documentation. Changes in 1.0.9 o Thanks to Mike Murphy, Professor of Demography, Department of Social Policy, London School of Economics, a bug causing a crash of apc.fit if only one row in the model matrix corresponds to the reference level was fixed. o Also thanks to Mike Murphy, a much more efficient calculation of median period and cohort is now used. o apc.fit expanded with an argument allowing logistic regression model instead of a Poisson model only. Changes in 1.0.8 o tab.Lexis removed and replaced by summary.Lexis which gives a better summary of the transitions and transition rates. o A bug in ci.pd (confidence interval for probability difference) has been fixed. Changes in 1.0.7 o Stat.table data= argument fixed. Changes in 1.0.6 o Lexis now converts character values of entry/exit.status to factors for lex.Cst and lex.Xst. And produces a warning if the entry.state is defaulted to the first level of exit.state (i.e. when exit.state is given as charcter or factor). o splitLexis gave wrong results for factor states. cutLexis gave wrong results for character states. Fixed by letting Lexis coerce character mode entry.status and exit.status to factors for lex.Cst and lex.Xst. In split.lexis.1D was the problem with the factor states, they were coerced to numeric when stuffed into the new.Xst matrix. Now states are turned to numeric before the call to split.lexis.1D and the factor attributes re-instituted after the split. o Added transform method for Lexis objects. Changes in 1.0.5 o Typos in documentation of APC functions corrected. o cutLexis updated to handle various instances by MP. A few BxC additions to MP's code: - cutLexis2 is renamed cutLexis. BxC's old cutLexis killed. - count=FALSE as argument to cutLexis, just calls countLexis if TRUE. - cutLexis no longer returns the working column lex.cut - cutLexis was missing the attributes "time.scales" and "breaks". Added. - cut= is allowed, simplifying cut of split Lexis objects. - documentation accordingly altered. o splitLexis amended so that lex.Xst is returned as a factor if lex.Cst is a factor. splitLexis crashed if lex.Cst and lex.Xst were factors. o Lexis now allows omission of entry.status --- if exit.status is numeric/logical/factor, entry.status (and hence lex.Cst) will be set to 0/FALSE/first level. o Lexis made sure that lex.Cst and lex.Xst have the same class. If they are factors, the set of levels is taken to be the union. Changes in 1.0.1 o cutLexis now works properly - no it did not! o cutLexis now accepts a (smaller) dataframe with cutpoints and states as input. Changes in 0.9.6 o Bugfix in timeBand, crashed when type="factor" was chosen. levels was given as 0:(lengh(breaks)+1), changed to 0:lengh(breaks) Changes in 0.9.5 o The Lexis definition now assumes that entry is 0 if only one of exit or duration are given as a one-component list. o tab.Lexis is now properly working as a method for Lexis objects. Changes in 0.9.4 o The lex.-variables in Lexis objects are now called lex.dur, lex.Cst, lex.Xst, lex.id (duration, Current state, eXit state and identification) o An extra option states= added to Lexis. If used the state variables are returned as factors. o The utility function deltat.Lexis() has been renamed to dur(). o state() now returns a dataframe of both (entry,exit) states a default. The reason for this is that lex.Cst and lex.Xst may be factors (which actually would be the logical thing to have by default, but it is not enforced only allowed). o entry() and exit() now by default returns matrices with entry and exit times on all timescales. If only one timescale is requested, they return a 1-column matrix. o A minor typo in stat.table corrected: in the definition of the quantile function prob=probs changed to probs=probs. o cutLexis() bugs corrected. Now works with split data too, but requires specification of censoring states --- i.e. states that will be replaced by the new state obtained at the cut date. Changes in 0.9.3 (since 0.9.0) o New function cutLexis() to allow cutting of follow-up time at a specific date for each person, where a new state is assumed. o New function tab.Lexis() which tabulates records as well as events and person-years from a Lexis object. o splitLexis got state information wrong if breaks were not unique. Fixed. Changes in 0.9.0 o effx and effx.match updated following Tartu 2007 to avoid attaching the data, and to correct the parsing of the list of control variables. Changes in 0.8.0 o A new function Lexis() to define follow-up on multiple timescales has been added. An object of class Lexis is defined and a number of utilities for the class are available. Time-splititng is now done by splitLexis(). o The old Lexis function for time-splitting has been renamed to W.Lexis for backward compatibility. o The function epi.eff() has been replaced by effx() and effx.match(). Changes 0.7.2 to 0.7.3 o Icens is now able to handle a constant underlying rate. (A bug in expand.data was fixed). Changes 0.7.0 to 0.7.2 o Bugs in ROC fixed, and the functionality of the grid option slightly chnaged. Changes 0.6.1 to 0.7.0 o Function Icens() for estimation of rates from intervalcensored follow-up data by Martyn Plummer added. o Function epi.eff by Michael Hills is added. Estimates effects in various epidemiological study types. Changes 0.6.0 to 0.6.1 o Coding errors in thoro dataset corrected. Only concerning dates and status for livercancer diagnosis. o Lexis.lines now allows col.life, lwd.life, pch.fail, col.fail and cex.fail to have the same length as the data, i.e. to produce individualized lines and points. As Lexis.diagram calls Lexis.lines, this facility is also available through Lexis.diagram. Changes from 0.4 to 0.6 o ci.pd() amended to support the Agresti-Caffo method for confidence intervals for difference between proportions. Newcombes method 10 is still used in twoby2. o apc.fit() added. Fits age-period-cohort models with a range of possibilities for parametrizations. o Functions for time-splitting at arbitrary times and at recurrent failures have been added: isec(), icut(), fcut1(), fcut() and ex1(). Eventually they will be superseded by new facilities in Lexis. o Function apc.plot() to make a plot of an apc fit is added. It is just a wrapper for apc.frame() and apc.lines(), with suitable computation of the paramters supplied to apc.frame. o Lexis.lines(): pch.fail and col.fail expandS to vectors of length two if only one value is given. o ci.cum() aimed at computing cumulative hazard functions from parametric functions for hazards. o Problem in print.floated() with printing of objects of class "floated" fixed. o Problem in ci.lin when subset did not match any factor names and diff=T was given the function crashed. Fixed, and documentation updated. o cal.yr produces objects of class c("cal.yr","numeric"). Functions as.Date.numeric and as.Date.cal.yr added.

    o(8;~fUosycĆۜpwOk}y𱁩M}fK2k/?}oެ(~GBç7z^=иϡ>o~yDtU!ϣ</4sTwMey͋y?Gx癊);x_o̟3~al囧V~m>Fh<׮t-t?ۉUc~z_xys= 1Gœ?uvK<>/|MZo#2ﻩl~}&'k>et̷3|MKKxJ?x~vu87 +{}z^/Z/zrYoGskk,qwg==묗g=&.8q׉g=OOI&'A%ޟ.&v7O~x|+~xߧ@y@_uGy%/ԯNb߶R>-=' k~.yPB}σEI5Yϛ:y<[wy7pW=˅29o[LBh||Z0/#ֺ}L<5/T 70ZOpe\;uǃ7eqă;Wgdz}_A% oL<,58m>x P&|:|/ǃ_2͟x}>O [qa\|oL~߸|wccGx!@>Aoԯx%q|+_r)w |]|]}^O)3~Ϻ=O ?ߑϻ!_+»O3ƻ= x|qy|r8.>o. *_ DPb}xy|~W(OP/Py\OP|?gGz>`}Ϩ9)}z{?'׸M9z{eI}z{שW)K=e\ra`>R/S i 讷|8^Pz/1_C"6q_~ܕzsQzbZ󫞩tNzC$K%tПpUcP%ٛO=WA^]U5z^Ŋ!'+W,w=Z'SZ RX)5\/WA=]Pw{y~zB} ,]OX?|^kGD| s;ZY}#Tǫd1UG=fi?5 ^,ԇ޳4 -S?[O=i!z~*QW-hAzׂa-yGm ^Zo>wJ#{z`4UI=pC+[X̡,8^zzS [KׯRO]׺޺z뵋k|)|uUr++⟨7oĪGo> >w'𥳐"Tss}=B/XPʕA<`TW".0Z/ۨ5S?A?BJ'~+{]KH'!~ 8wVHq$|I~|EOӇy>q$$vKѸ/se I~|'80:cH}I ?Wڪq?Π~a^gϔ${#*WT{=/J׺s%~YMTwP_r?Y~ުz;_Y~^[_VT/~~GhZϕT ;S^Y_q['S۩O0-퐻0.'JRY:Ez^;&v~S_5~;W^qyLfg6p׸s>$yM=~4Sgԯ!vLjxyS_R?l ~ ;~ 99'qW/z«'߯kl=#[m!XOq-^9ӱzOzQ^~'uU跾zV<]g KozY_=c=.O\=ZחWk[?腝mt7zM둝zeW=3[bζ\i=gGmEmYeDon>b Я^L}Uѳҋ?1\z1??뭏5vpq}'n?Wz!o\F_ K~%==;k =;{=H zw~'y?z7>У^뛭gy˳wayzzz^ɭyAz^z=>Gz??h}_z}Az=n륢zGWի }o뵢t`K\gzU\=ZW{^~60+.ezWo㵞h~[hZ/z^q ϳ^=_ϳ{tCxΗ~ݏE;kG}U5zW돟¸6Z|}m o<` iݯqk/B}^}m<~,w>x}Mp}\k#^|w ~5wI?Ao >!|v/σ@o_>7O_k~~ɏ0zmW+_0tX~KHGYךOhW@?ZV?___//"t]>i?Eu ^>_tz@><@yy7X?_P߀_I'p /\~y>\~/&Pv7"?y |޴_|޴|뇳?CYogo>oO>o?%gO>o>0Z?ڬ#,m硿v6~H$l'}~L>ۯk9m'eE|i? :YY/~W>oUUV?~[ڏ؟Qu盵^J8"<'?m?R7f?P3s~gbVVVu.rfm^Gcum RMgBu˅v"!J׆9]A:`lW wx˼BCv{.[amy]#6,6k7L JX@^e\SӹExIa\=l 2o^P, & ;EbjE]QcGT[@RHkHmI%Ym=)Ym[I ڦ$mCL[e>&v[m'|t'x(V Jm 6ћĤrµrQrrRul%lev")mFemeEжr?"/n崏Un #J.݊&%]ޘޕs6濵T5pE#•DL+'^,+\ 0#kjq%[rŌ :>V\d CdڰX̕%q|G}ssJϕD+=FWJW*豜4 `H]:YW[N<v]:+c]9a]NXl%bʀ=wEn5w JM_?s^Q\8?nSƇY ^dёcFKX]+-h)X^,y}M*QZ'|]|Ĥ 3&`-e VD:`&`m!vH&|Apu!^zf-u#Srg1ixRӐd!jdԽLy,qi{#(+Bu+^\LN+>ȑDa+k3Mgrcsmab:+߃̺y^E" E E "mEhaJƓhꐩBV6I G~ӐSGs[=L~7Q;9 "t4ʊX^5_]Q3VG[~sQۙ3V(A1RT *2o:Ff$G 򿣊|Qt8Frm Nmu#1z8 樿뜱#Б;&GvX:kDa>JgHI6R^DaX2&Dݗz5]1 75Y]OF*./QҤK.TQ41+̍EQOQPו*7j'C]Ǣ6'W(U tы˜Bu :$F21Py3jB6-5J6 ݶ>w}y =^zyw]n]nVw(Qרy %xo>K$7){v;B܍߳=Rx0Rx80p®}D :7!H1ws+9)dV";Ur7)[qn"%܈H$)PD႒;ʔ"E)DS MEʱzH)DVr_e:!n,Rx\E}qkSV[ЎDl;1no^q{j__'^;ϛb{0Wc|~>L>#r̅!R*3ŭfʤ.)F<忟m0) =LA xh~G@qˑ(9(Me7*n;(xt }~qA ;a惸5z^qg{7n>xnkk@~ `"r 1med!9m7xxq. s&xg#lyrʝDJyu'²۹Xvĭ+wS\Ln'AZˤA\vrGz+d ROD)  yxIvb;I95[zr;տ93r6#awn.'PoZLrkގRN^2{(=~c>S,mfAwwʡnSJn3kkw+[ZngwNrx {gx9rPTyum3*(J&)W|قR)itA󒯟uJOfY 0_] LWJ WkU†,D: 3e c!Uz4O49tﶧY\|lНY1lUw Sc]6dldȀd, 5KP2§e@FQ23UM̀dfбLEYp3ڏz8R@jd}kT 4KThI]D(3<*(=yKx\ĔENSj%ٔHugTAiogUwzNYճ.SqWwuՕb-G8VaYOU֗(U=UT׏Ns}ޮ#B9^jYb~i2JU v&($N3Ӷ๹RӦIxi:-a@B<=k|l^7?7k;tc^ݕ Ivܨ+. Pi'sDUjGN5IJ^O4Q0{_o_wnXRJIxu/*UoWw/_*9'4Uf}sSrrt|0WU@w@Lyu?FbCgXVjӢ*7MU7> !)+|Su>|WQ~cJ?/A^rz~t7/d1Vtyo w2$M0"` '5 2;n`L'5聥GaZ蝄W_ 0-O<ʦ7c4RW%eƏ>3|NmdW]%Mj:֬POʴĆZVB2m(I~924s( 8ֈjՙv"Tt#}&)WW{z/w髋h=4hكZ=H˖jQZv* n[ز+4:iԱmm j{뤸݈-;apIv{0z֑FLnkۆSm+p彌&$6g$z 2:CcHǏ;ExA:QOoA3%ƦqڊӪtѸh?Q=ƆzR=Y-i{?ZnO|&k&z=c]&={7<@ ١QqճɻtpXi.!z3SLkS]QGuF l'=g4<{8<ϗwΤsKS#0m1#5G<Gͥ c`M Js$xb{YIðǯ4O+ޤtŝYCe҄J\~J%nZo˚0/K3g[܂fhޠAPgujZ) K4K&H&4OP=ȷko=a}y;]|p) >&K3ZYS^W60*1uinlu0G#=i[=|yXM_W370)ƕn^#Qi#xtg4q}]u5 WQRfZ,u5H#{g`LʤY)x]eW9}ac5.i>WI_M/jJWEv󫼮&uοՁSMx@3:*fL4ݫg|W__tG<4ո&}f4$_G5,Mk5T)h~P(LF?{G[?84ܳg@?:8|E_xd SkX_ zsZOҴgCFq;j>Ob <#5<9_y0ȓkij"ZikŻoy?P:Z/9X$Opߋs>O~coyse-')sϛɺ<)'(6T<^O5?y%󀃿˞=;=/O$&I_}S).\ʚ>ۣtd\>ߟJi> 3v7jy_|^gʱ89$Or=VZ[)qIG#>\Olyuzkl9W1']c1]w=5d+wg^ytSϒIXY G ciw?_ryg~0>ٜ;O<@`5j|eT+=촽qcڀIi.-(< ӠQo7./=w\v;6 آUlݲ'5$ao\l-]hziS<3' Rl6!/MAQvnrc:?dX;i0cH5vmz#H`ګBUU ǯN~>bߺ8:m,ιoXh?[V;Dac]>ׄ$6t&[\S`n_qލq5,x˱mrnͷe[}*/k#`;$\s+žK9 {z$l1.cj}0@6U )ɶBa~OǦЩ&h-B'd]]CP:7ұga(Uu Y;ɼ2N KGC8|Ee~H}=u$;"yc}yo;O|E*.9|{6xcej͒˞'/̱@85C2(037>?y'::?e[e"`EW "3'p<CɼT?BƙQSRw{ܵ"_DzV~,wy00R?hi atSZLTS7L-qY^y:+Hְe{5Φ<ֵAn|L=ܳv}ɼ;o[27 ?6fJ=]s¶xLeM<̐k <JeYLȵӑq&PXp1Tq' :䙎qłG9f)?_GL@O@ovo͇΢\%+pxgx?JڰSj2T!=0y2L2A@Cvp&/?S"ot9 Tm.75uI2F^W]\"2du\ުZ./]+?/IZCg`t9d//AN?_j.I~im&;r5yr6Q:4r.O%O"n|dPr 8ȉI^DdM!}9Rc'yX /ɛ4V{o71΃h%5q Ƀhbx~yI.e 2]-ɩUԸi~ʚ7yʚxh><6k"߲GgM$9 kGr;?MQæxydDu\;wj~7}$/r?0IGM[Ɂy{9` ''N^D/p*z蜇IWd`Jtu*2$g$o$wb:H D:y4ᲒKP+4l`NrjP|XN)ud_ntr,m'"y6srmp_sml6+9mMލIE< K$+98w'DZA4Lr>dgD)9zy!>INO3dvq?%I1C%'g۳8w jCh%ϧ$ק[$ߧ4J~V'ܟw%'.øx`V L]|0̥8a"YS?)Pr-Rr?1x~Y?:񀻞W3=R3S4rtE#st6I`/MRxsӴQ)ŢjiV (ޚC_ӆTyrp eÆN .N64xm~ .~.68빋[(0.tMxo⾱T^F S<8 U\8lxIp3 ʼnwpq2ō8r؀f+ )6L83}*.şnwq]<:lLq@]ŧuq|x5^L>űx{~Q\ۏ U|۷ S'S9/>?;>8xw>7wlRIqto.Vt~Lqu?q?ѿM/.nMwGO4<y:7}l..fxhGgO٠V9i\t? 3xh@)ޏYU|gYGjb?5׈+di L>o >뫚%Ϲ=jqӿϳAϳϳoTs h68y* &8EP8ќ(Mܕ}lBsXXza|Vm DsZ407ٰo5qC1|i;cY/h;b{r n<ق}<*v^inڧq]9u-Cs8} ;Ł8g1njnƏx6ȥy>BswͭR)<(9wt a-H7 5'_e~y)R͔RTC1l0!f<5d1D,>%P,͍D'^%Kŗ$J6XjڐȪE/HxhWC"͆HD Y$/?Fd~o[UiI}# ):K-xGe8GZZ-x(yX$QR#jty-ov3'ŖB|AOR0RI/r7H&71N>/p5NO)~[!';u?NE:];k!u{7d汪NPP{"Z'VbR)I(%z$!ei<*װLH%RbŤ*Jn\C91qX /U+/r 'k(Ki+3Ulp U*6Gê\OI\ 2J{!qNc6\ޱ'I&,ki%K됶DPIoř?\$%v,%c9UUr,+ c< Eg[,ɻ%ǗtV;we;VdihJXVroCbp6@*"CH %,cJ ${D{sJ.(xX0:{ w<*ѽS>};uP$=5S0ᦅly97oLZNV`(?#)Ly|?H:W rKv _e1W&JR~< :Me%y8R#y?FI$U=ҥaq?7=.=oiN4;U'vll*,0lBJO0XMD%z+!Y%z cclӛµJFJV=&$q(%{CNXI^I\Rxے- jɛ< p`- )|ߢ*}a% qʉ=]ɋu[tӎ2X'Grc eVr#K>F~I> $JQʑ!8xOɶc,blY[:e'D/ϋF/w@9 alz(kI,-+xH z1l6VA=oL7Ŷ,TV-nPXH>o}V} y1lnC)4>dnȗ9ڕ7Z2ZE>}ai϶@>@,6vA ['gnlkl$t7(t/,mKc1l|,k]$_&ulX*Q÷s. 9l(`kCls1 8a-6vl6"tn k6'l1mGİM*m2Hȼb͊'6%J6&fweulRQYӖbֵl :y1l?6/#l`BT#m7ۮaޟÖb6e06ͱ9ޯ9/9dlls-Ű+cs,Mϱ\76>6? HY^][Q5Vye3ĄlRQܘ!b~(~P6I7ㄍRS~d܅UeDlRc}@6P)ϡ_UY:f*+5^$smdSUacU}ΝdUCpѪtըƁ)ܻݓȭՠ k+֘&x5}pМup:*xu5p:"u]Z~8C_H6C-I g76h΅xl G d n0W݄myy\싿ނm}oq7B׿EOoc ?mO@ nɋpTI9c#psq#C}ێiQ%j93 F_puT\:2,ްx~`C 3-XR~cP3 Nxkqb`NųxmlP,Y(lȝRhôajiҽ6~S]{cgU6 9ÕlP8vv$,Kb gvpƅvPGM`;ӷqx޸:>sdWwV,Q/s^דw!~4+scz/a28Amq(?m,wͮ&3rtlMCʛ {.cnGfxw?ܹSa{-yd0΁j;3`Ncx ֍##x3/M|q,_AW/kS¬!`:QfL`" &ꆑbo%6Y#] %|6ZCf 'D`nz {GPod  FQ,&e٬,Do7FM؆as1 ঞqCxnYZ7»aY0-cKMWlbqa+Yq,"Ԣ-lA7-x n o6E0BWMy!͖/ek_\tfBQ!ק6sy:bz/2~:4[\Mv&7l]/ʵ9N):VbzOf*K[LI{A(Pg<(Fkn2:FS̀49-u_c54=czH6t/ }u X89wQ^\_5!;q/)RWK H@Vzz>./0MPdm5I4ECczK^rtcF{0︺ř$#Tzuy e^vqg\%Ls']fSywBmnnFݍu-9y)ѥuwh׬ysA_u8D%\Vк>qDߗD5E6њx.*oK W\yu v-4WǑ{W r;whS+wGzlg$t'8VR2@n&nvBovO4❜[o[x3XrOA*hQn 䮲|&p9IQ|;wnQ"u_?qWߥL 6K; <;x(0k;M_ڟT ܝh`; g;wgbD^'8Gg62 ~8x?R-GS񵄎x(9sӁqCqrۭ\g}ݥOx.g<ʭӴ۹Z/&f\r~CڀjJjy3iMpا6!jk߮}H2P'YM tGmE`H"޷j3StIGF&2~ IRtUjK+7ғ݅*j•ŕ+ɲ::_*&0,Y4ڑ ܲJnڭ6UEN * f=O0:yO@qb [(g-M]j(~Bf)q꘲8q}G<<P:vV+Z٤UXʻkQW6*nSc,pjYeʺD[\&^qYj?qGO%.q?UkܦjWP^`{h|"[:x%7p H&*L\P>3^4RtS]9)q{\..-݌E=S:ojMߗE;xyWlb gEm< pYPSϫ}o<mī}=p߸ϗy^1qj RuVyP$nrp۫]+9ux鼅gҭn<oʗ2k0|[r4?vnx<[_[/ϻԽ>n8_M'> yn=r7bXYg:wwϋW7h`u[އ& ,5 uict6ך[[XC{_ᆵ)^-;}~yj!W7nsm6ݺy)cn༟Vp|cWҍܬJr+&UhޟSkp.T7u }|uc'q﫰,ϋ+_|^nV~7/]sugߓkɟLp^Ս| Kcu7͗@;_kq/>\uyP;Tj սʴڃl x~94+Юeϻj]5G^/;|޲5|޲zPAZE{Imu 2Hj%)o?tK$ $?{]\>ilq_Rkɪ0DO5!j=ɿ?ଃjWm.5 xCjBw[]hڬV$>6{k=*5v󥖔C@R[|G<\kR5S;ԞkK *EJVJM9-8)>ZFjV^, \԰2'>ǡXԶLQBպAQjEP LM)O5Vm+f5o!ljQ;.'>z?Z/̟uԸOp+%jqQOK5V:l->.[Wϫ6] vo RkBM/ǷR_VpU}I 0=3iuqU[K0q/URCLqJ|_ƘjxjսT3!5}fe2>*>n[;?7)>< &xV|B]+K]t<W"5{CmW5<Ukc{]5ΧPj5p篭@g:j5mM| n>0u>{M7KZpj@-y?[`kXcװW"7{_-]+s)'CN j}CއyZ|޶U6|޶Eay*x>Gn >o}cop䦑==q>$v|ݻ|jUߡ1N >o 71⯰C俌F#p[I.ϓ\ڵ~y܏qz|r>> Sori姛M}yvKNn9 Kn;70z~' >J~#'P^nCT>@ߗ܊n nFVUf-ঔ>y$^t;51EO|u3GǞ|]0ܤ2qknBiiVw*ŀV:z ܶn?.?yԸ}tu[Xkq#gu8\Yp؍7^&u?ni[㚿m87k-l -l-u>G-z_%&wN}~Fwǽ.J<ݱ{nx[ڧtӻҸح >T4Jx T@gM 7cW_ ͕q3fϛJg%J}}Pnyq i17r{ h&Y?r ,w&Qf/g7Y.xZt=OnIp_wl EWnٹ~nsrLfC;bMnuh6wphSX7Һi0 +7zr; ZJn/rC &T3l$pc&m֤68-֏jfJG<^nm60ϛIVpăEp lT HjkDYZMv'MpÉǜoXe16rYEݲWIVvChv+xfE8i6_yǩwס,|}\zx{ݏl{>|9YA?/'A|Ƈ?|bw̸u'ԿYx׳u}ٌ-ۿ{~^d;fz~Ø~޿珇~}S/~b۳Gy_gVgwV87c?{?o/tN}U~c?ucaGyfUg?Ϋ~t_]mO~6|JS3O2|:__^_H6.>>?v+qs^>gv?睮(硕7<1zA7<ϵ\>O2>753_漹U,㕿9M> _9 y~^r޶q^ߏ9|a'~(@>W#s5co~&!Us??|MuN>h!j~#I3_|,=iU ^|VC|W3B>fI;f>_f~86O{#zm0xg I󑻞Bl}z;C7`>5eoNL n֧61䃛kOn7|(n/1n{Û3庝OT&B>>7kuǽ^z莝zCzD Rhg4xPMwx!mfzI3?H=Qo<z zH5}9Ӎ&?nzP/_R/oIS۸/=G=Om/h=Www|O=׷>vzg:tN=^w}0~ZϿ>C~~y~N?0~~N?4~gҏ_ӭ'wNt_ߺuGRk~~wg|wQtWJ?UG0~N=~vZ{nb{u'O鿲߬owK=,~n#nxOÎO}|O~o܏EܔJ?{?7Ŵ~yCy/7}~L'5}}߳~xH?:}^ӏx_5*o?k!f[v=i|pymnnw@u| s>7e?puS̗3z|Ar'O?sG~.I?v3_L?utpY?_}OO?x/'ީ˯CuVx[&|Lyuz_|ϓE; OܚGn+7ݒᙛz_C7ҍIyj֍ʯR7'Rם~lGyU3 Uw^9T4z+_=*_^K?Fϥ'RуLuCozz4S"qyz6>|^mU'W#S/uN>ʃS/U=Dvgu|ݻA|F伈k@\?':7OyUgT?zG~b%Uy}*x^]1UikR/E=YοO>oϫ;zQU\MUѣqUU[ta i?z\K^^yUޗ{^oWSzd'W6QzgW[m^Po =6zkC6굱znmb ./ޜ իgGֻT/o]ѪGqSi}|^~$z^ z/ozo}-cyר~z=G$[/`I՛;T=JnիԺX=ˁ~z߶&VK[/sP92~t|9>GSoH>Uth^zn=`FշR~#JջRϴݏzXR|/FoT/ׇ苢Zz赞i|^&WKydRo7m֪^mS2F^;wcyE}j|0/CpP/x_AOpU=b+v?YWlCOK1\@oFY-RzDROUou^2zT9zџ2zU?~qWuWxM>}}_zo?ie7z絬Sz巟y^9[]n?zNz=wgm=xKœ/TOmW_ugFU1a[+{o1^acA,o~ˣ_~78G4\ ;A_SAL>/7~ װ0s~q{ѯ&n/<*ԗςx&~o? ?m < Ʒ~yt}(OՌHzǏoo?g?~'~(]Rz|^w}]_$\G՗W!dNkA_v\Wsgid'PO~:ԿΣ~<q`G w #:OW)~F?C:C/P?C=jc:;|~N~OVoA(Iro+?Z~UԟB?_֭~Zm={=~]rk}v ;; >k'=ΪWy~fg,~gg =u|ީ_~j'z+okp׬ 7+h荵D8o4;qBa m>r5zӱ*h]ivh{dxTC=î 3 dF~ l.RuN/g[TE{ ,]ք5.D][|qY"9&kxne YFqdhiHgmiO)%QzQ)o"ZTIbyW|*cycn͛f8oBm:;xBziydq=(ꢵ(E G/Q%eӴYKSl5<_];TR}JFc;\G%i)u)죰~P:clg-1kYmN[ÚҭU.@].YE//mRMĴLl,  z쌷rm $/0JJQ`r }վ>~fhm5XiRo]5NY.×FذMd׬C5܇:,t1^GCӕp}gt ? cUQG]_PG xCC⍶+ wJbcka KQA#j*̳ 7aV{rRJw1F6OolKﻮJ5#AkƉ= c gm۳;yGL\P9[2kTPT;q*"#0VUe,>3]e<8V;Kv6,|J&nم+g/VzgƚQ٩T}Yo*}F2VUTYR\U4FF]A+{ WyPVߊ<kw^[zԞU_=AלCP݆iO"S,{c*=UrfKg* Lв*[*'vf*m"l[UIV@ziػJ[){J;Qا#gk =̰_r@b\b\?[WNWk=ٵW&7*׍]_{k55bF{2K*Z@XON%a_#9YQ]֚8Y6g ’ }Y q,gł!gT+`gA3l ,r.L~ {ЅR y/`"ˣ!v}D$ c ̊&m5 &( &03Q,8m@T G1^o.,Sن$p #&x0TL)Ha\>$0 8IPM ' 0VM [L> c 1\I+&IC$ ӭ @ LξI c9~I@Äjۀf@g|'Zhx5AZ$3 7InC7 mG`&[,X. ކv$K; @kwU2N! mH0#A I@|i~'A_> zoH'_P8Y P0BMA  JZ(0JR d@ bHnT'R,L1I >F'.zSJ| Kv:+y8SZF׊-pݹi d{(a l[PTfx x+ڰ!&-%߿&-D[[\_'`lmX ]q %c$(θ +ο43 *)؂pu +#B|G0+@1W'\YKo Gr)/5 ,z+b WMŹ?P? +}N ,^׋b0KDtdҶZ#XjC,V' 53?"LNJ? Km޼6NZ~oˉ`6^FΌL\&LCKKAf @@rgx@pw~o4x\/wO#c\3F -@r`WlKAo̬i܏gJ'F|c|㦠_׻anj߿3v|~:vx+> 7 bCa_>4G0J}?Ӡi4w|xOw|0x_w|Pxow|?DH">KfcG@cŝ+/bCFiw TVX|dZaYG?Yq[~X ^ G~ xgfg@8x__`~ez ?6[qymOtHpފ_lml*0 3 =]gԵO5pL'o?~+?4<WGk q (n6~w{+6@-|l@s (p}>]`?@mN!u^6kx54o&Py CsK}Cu~+~{oyx^s;|1:{x b?9cx>?U)>h!tb/ j+0v 6!Nb/>o oAm_/ό +_ӈO>{:ue< ;S1"0I'U">_UA*wd< F#c,x_Fxܟ8"9v>/<!0 * b`@5Z*'*`a_J0(d`DxP:my_--'EC1rgZyt!'-;#k?ېw?VAaVAb(VAc8.> <ʟW YlP`YR pVD \ D+x( L."P]+wVA24N#g h.P;3-~? (mg39H@xр qi/ NBe(8~)P ?}{ wwڟW Ppg(^5@mP |`5۠3~ϴ)"& ը~ Gr>U_8jA@ESos?0A`250P`I7F0M# jA@7B|7@9F1Q1uAO|s}xPACOx'PUCOxᅥ O;4w}py^`1kCAc'1kGG & /k5|^CKk`ZK 0ԷA6|_d>Ӡz65./5E[Cj"i@zkX_K[׾ALʞ/|5p> ^dhac,h6%_ j'm[ {y-1;_0]u w>Cޝzwby|; ay10B W|K#?GcM>z +͛C W|\oO~o wi$A;_Au/@Xbd@oƀ{ǟmнy# wylAm F /j#Ќ#`N #$ˆ?,`o 07czqQˆ !0/ )QrٌE; #~#~a> #~?9aO^dh)0'0'$AF` ?Q0GCb>{03wJ 05q\`;(ie7.TƟ͈7rٌxbF #NȈӍ"#NqCFqHG&#8\,yA#^R/4È[/ #^4HLagDg6=ÈRZˆ7'0~BYw PSmˆϪzsˆϢ2톨#>Kˈj## Y。g%1Y^,,fNEEYz\-'[0##> _m vj$na0g0C$8֍agJC~j6 2li4>2Uhu nz(5v6*(Oig#>۪z)zUKi-g9i-&l wQ;l[0M0⫙d|ޕCgꈨ[zJgaWfN#o6ZSdg+k0u&}1="jȵo,ٚ%xLf*z0iaī=0u3N #F|#Rrгu[lq_=05?Kڏ(b']c^'F|0+PF|Ot#L@<.F|*aÈ/!>.ӽrAq&F+D{oT|?ˆ/ "+]}VDbbF|W6҉n]F|`xX0 E] FGF|t2Ǽ^(  ##P‹׫JNTq3Da]9J/z0ϫtO0 ms<]SZfV9r0F|.jB #^iq"#jv5)D3ˆO:cnݘϘqߏxմ F|5ίE{xh2pa+jr6q0q^99P4y-bF|rckakݢūteLˆ3Ldװ.ϼ|9mɃj׺uX x$a41=9zƇYag&6\2J0sY SF|atÈe0sܢwYq0C vTC:[Ň]\qqʚqJ/Djpt  y KZ*|n߮&&ٚ~T>RS~KfG+Nq R?D?T}J1?U|Wf3@ ?Wh|nrao~ XI }]/o9l0VzMFW"o3 {&퇰ɷ4bhfV`\p_lwxA2¸}dRi?BCL?V󰚪 we]xꉄGp|Ԣoݷaov_Z7t}{żKPwK ݗ!z4Yr 8zTh焵>}UX8(r }q_./wٚ0ʄ]H`]>xe. /=o_/5ףʧ\,ʄ]ʄ]ZUܾfxf }9ھ(m_lpپ:6]:ؾk_W/hhb2BV'12ǀYO!Goe3U:  7u7:u7||xFo얡ořgߊ; }$2+v}U˾7E֋[@[&VB#H}j:8odcߗxܞ$BcGV{&,[P^y# [ 3|8k8~|g1mK=ݏZ͚Zaa9' ylyMg|66uz;s~ W\?w_[iW`Q +6z߆RHޫWoޥqh;ʑB@փ)2 փnXo~5|6VlW#^ǜj1Bxu*A1'`uAgf?heOlv]JEۃVtVi3z9Kz։@RyG]e*J=󈂯}%f&kÞxRs1huUj *}Z=vAVWAgzAWlm߯=&_ij()hu3 Z=7^J< BۋvG*1굩E*qAg|^%AW+QP:I}jmO ,M4 J Zlq֋g;R*VmdǠsD5Aަk(J=*ϠkA60AW2mu+zmEgO k'JݩZG*?bk[Ć huӜzƠבJl]TsT:RgZ='Vm(瓠k8G7mzYqPk[ypqZVϸia]hZ=㴺^H%8V&oTAOh ZϑJ<Zz}ՎEx8\I7ߧkH%?R_wA?AWJ7h+}O}A_aZ?A+hz5(cV7OADOhx/zFxmTQAVىx HW:=׫#"Gz3Tb Z淠ikbAױV|:DkH'!z=C~s>吝nŀVThZyJރVigZK굞ZYo^q#ot-hZ+'=SAWnzAV a} tW5h\zAgV4E3Em鍠mK~#Z uZ=ϟt5GVZݔnZӀV7@{|h Z=_LZ=AVUkt+hj5&|R۠3)3_5huM_h*╿ Z=3T0h]3`eZK3O)Z8V3~&h*3g#ḩ=3_0QCz @}c@|ei_z+>q>ZAϻMԼ/Ag58s|zNf;CYc '8k}88klqq>{28k$q>ɇ7:ʝ'OEgYur穓,~+JuG;ڳGu}~Y@Igc;eYigm{:k:G}l;ڇN8k:}셳b-U YYgm:kO$AGgG!胳A:EgcSq>P2Yċvg>t[, EM, #vY묊v g~IiGSSv;NY:kg;kw};cY7(wvکt۩:ڽJ!GW(wɘ8kw@uo g&v{tvY=/U}:Ts v@g/ 0%ڪmyCg_gv;Nt6YvYgvKgmuxtn:ݺTq;ۦWdjz8aG!͏#5=g\xh?{jzCM*h~_;v켝SECMϸIQ/eDvSq@MSqPӳ*)t= jzYoM_N*RvS]NP ?3K73^OCD)4cB=c3:WP3zƙQϘ >I}SNQg =ܥSlSJ9I@T.`QMַFٹT=ܟPճ④Zyg.`8\QvI zuqHS;TvQv>Uv>>V [z+Yo{[yzuTqJKI"F}ęj<˅rip^ pS?v^];*]/ g*WЇ^Jmʡ׽K^o%P+ʛ8|sʝ2g>' ZQe‰GB'H(쭤 3ᰗRAfɮ //b;qN\/~OF3ӽ;|^Krg[aPRg-Ჷ`4{;%f$[?NLٽ/]ƉG'S':SAxNAl;~ GPo<[iVLe|u1T;Fƙj8S=TSg*px_N<<5 CǃA cv.n 8 ?vGu_({<\ĎA|d[QN]1JM`%ṷs@vJ ۹ {+u.X%ǩ {r%Ge_ǣsʼn-b@΍ﵞWӄJ@[{g78uģV:SXwη6J8e:S|ۙۙ"ƙ}RLvȭD+%ecU {;E|3Fx;cx:oo4y$~'Op[{w+^߽WxNUqÊxeʼn}ϫ['Wqi8/gGy pt$W^穋x_|p󼆳tyЉ'8N<s՝'ĭ{ݸ8N~ȷݶ4ClgY/qn]'Z/O>p:k7tn:PXY96^|^s>Y:O'׎yN<9vpnxsyY~vөg\>vS=>Cvw=Y⭳vwvwYz9ڝvm;:kw8kwp ڽ'Jg;kw:kg8kw8kwu烳v'/5u#7ގv.n'{㭏ݻyxq~g77>qϏ7~%=罿7~YuTu~u֞q^y3~ݑ3YKg~Mgt!]ވ:k;>tvY񧳶SgmǯK;:kwqa;#:kog펔ݾr{O>㬭\Η:k;|v3wWBgׇzݫtu}8Ľk֏~;I]tvY#vxty D]gg8ʁq-] gmEtn <Ɠsru:k7;q֞A|d?U\N>/tY \YQY?Y숳vөg?YYݿ.gm:k7 qֶGgs=gsqn8ku޾ڍ~78kOY5??_ g~ +_"]sgVp6?v+qn'tn>NWWqUڃƱqvY{lM>[|^pcꬽqwuZYfY6}M>~}ytYp־~8kogmY⬽qe1ڧ8kvtn]#p֞xiY98+w)Yz[ggRgYo߫>u4}ۏvuY{;:ogm_ggm6E'O:k鬭ӱڏN8k:k+N:k:c㬭sngm`u־=8k_:k8k/_ڧ6mgmT'YWgzv~ݽ8k{~Y|un8k73:kW;ng*΍vR^UoV.DgmSR<|ucV>o3z{^Ƕg$/Ie&OyL=<3i=쏂s1ޫ=Gc->庆r=g,wo6 U18uz{q)O4gSktq4NsM93+:rWeg= =c#8 n˜mq9 g9>Ϙ&S)=E͸(7=/gd|y?BG 3-< #lg9>I_2X=Ŧ# >&~z3 VϢg$ys|woҦ3D1ieZ<ѣ\R}xxp+m*=~3ͺO3:pJ^!?Ҽs<<̷3>{">>]ai[Kʟv[o{o 5^'츶x OqadRW㍥van;;Îz;ި 7Mq-`-9Î7"FBvfqOGf!v\vSg㞛`k ;^GVE'(zÎW`+;{;^W(G~xZ7;^iyG vRo6z6\5x&; ruMŽWT`+ZŽWrcB:Nv| @7 +MCn2{MӋ]vi1>; kMfYb״;^t Sx,v`.;n/xaZ/e;Z^/;^/7gr~^BܟO8xtOn *;>}zawo<츹݋;Y͚k- ;Y*;^6Kdx:urkZv;>/MYDrv ;nCv:z/,yzMK%7fKŽ/HɎ^q!dKOn;>gr)x$KvP[/M䦕֔/%dfkZ,vrEVv4-haK/jU*˝^SdNjJɎrd "{ ;^/ˎ֧״wrE6vzMtZX 9v5MkM";^tf7%;^dÎ7`w v|Ųw ;z1gWs&7Ŏ7%`W&ЉYxuX;6/xGv|Ų+7V^˒_+'K>Cذ3̺&7MWˎ8T6.oc+7ZL#<ϰ+aW\3?_-,^q#>sV{+"Ό,yÎ8zMV>+.#7s_qMxJWYְ+7aWag=s}۸ag#e\k<Ȳ_YY3כ,ߛ'jY:\^aŽÎ-7i@aWCƃlIn0VsM:oZjŽ8=wn:^ҵW_䦏;rH{Ž6xӚ v|'FGf+ă=vX3ACް+=3_q^Î~-Ov%%#;>?Î"~vd< 0;B:rx:v|ŝxp=84nj?_qXJ+PZdW\^c54W;bYW!o}X[ŽS2Ha7a?qrmv|aW^L~׌O]v}a!+_qxu߰vav|Ų䌇x ;װbCwW;?d{Lg2a|ϻaQXIxv|͏3>lc54cp<=a;wbÐ-g<;+v|uBv|k}!v|7ԶaWaW|}wƃVai9_Y !;k?T\ǂ|dŽ/xv|Źd/eK*;h%^S{dK/ۺ<3_و;$UzzM 3!;^6;^S{dͷʎ8/s҉ʎߕ*JvTYpzM酕/U6^ӪU65*ʎ9eK՚^S~?s?` Ze &Eqy?ŽYM" ;^xxݒ/ɶk* ;n}Cv4vkJDvNŽY:";nxARvhm;n}Gv`);^jCzs֗dK͎/Vj{?Ždeˁ6xQ+vޏ-CV-vޏ!+ƃZ E+dyJv/dNjZ3-orB/hʎ+ f[v\vw]/BRv\m;qd)+~} vZjj=h}/ov߇Fd:Zag|ټdgq{ezWMv\7q'eNjgkAb V:츽jeʎK6Tnxe/jeۏ ;^nYn oтeÎ[-H[+v|Ktb/2[Kv`!;^W Uv_W;Uv';`ZtEB/~/;xq?;^n K;XK.]ֺOf  ;^_6xy|>CyjɎYExV~6;^EvvcY*K~:|_vWdxYFU!ă{hAڻ;^^/Vv\-Aqe %xhAj;^h/vۚ&;^6/F rȲOgjʎIq;dǷux%;vxAFv тZvh]wg^Ǻ >Ž~X8Z`m`ǫVj9ʎWaǫlxZv/;nۡxVak{kAFo-ȼk[ پx<*;x-**_vŽaтԚv\C 4uakG Ⱥi ;=7~ovтģ|c k~q 7F rxf>ׯhA'];3Uxc![aǿ1anj͊3aC?y_`ǿ1l7qYEqW8x8ͮ{<Ȗ;w<ʎbCŎq qmU;^~YP㛽w'_,;|);|*;+;,;e g=/Ck6ˎ vl{Av|_v|3M>veÎ!N>|cag|_xG>,98fDZ.We\.;~Kv|[a7,2~eLJMm/xW Fv>'7daݟʎw+;Y),:U:<ϲeˎ?eˎ]!;wfJ mZ";V8͎km.;fǩlvњ|y-B|Cģ?}>_GYߛ}y^v|Oe ^&71*[~ayv|v|kÎ51ay!&S_`]_NWfֻzd_Ȓ/2_< EW"[NV?ó];G+.hgzYŽ?O던|#+N>/?g`W~M6|^֓y,w>v|{ &+ylxu/;?_iAl8^Q,2_Ip=]Ƈe[/F_"+lv|aǷw 6_q{y˒wϟ͎ox26;e범<ϻ;. ;^Y`+S6-=?aq}dvvw6Fvߙ͎+-;n/{^xqY;~(;f;ٲoNoxח%Pˎw}aǻv\Xv\Xvޜ͎8xuo/+ 6>lvS;^adǫ5>ƲUvv}`ǫ>nv͎ʎxܻ;^>㲽[~!+Yټ?aWÎntN^K ;r_wi*Nml߽㫗՘^Coo,_aW/l'qJ?/ ve_c5cu6.x{aW@XezM ;{aWA*+{Ȓ_ ;uaW C +^v\vTv\TqΊTv|Y'OpXCpȖ?6c?츬8:o?doٜC>,}-mŒ?x?dǷv). ;xv͎wO. ;f;x͒w߾ݰ;fǻv^͎ww&;daW Cv͎ӛqzW7;oxyʎ㣵7x݆o~vxˎ|Xea xշvfǷo9x=lv\-6xUv^͎W}a+]v͎WƿxŽWx񊶀[7x7vU$;^G7qEv\-"; ;8>HW{Dv\x";;6xGvÎ]rw~oƇqjǛ/ÎzqjֻqQdNj>Blv ;veV`kDovHvl}~Ч<7v\YڱC6@v>蚪5;S&;PkctMvÎÎk|?/75v??~;Ɨ:9v>Ž?Cx}y`z d;/~Žv|x vBv3=/v"/Î;Ȏ$;NofNj>C7qϋΗd6;*;Nof8y/\Î㻳{fq3q}WeM,xnu/Îc-;^daNj,5>ײl ʎ";.&;fed?lvK;N>bqʎ츬xg [ ;f,>c6;^y^w/98͎Ɏopq|a6;.';^]U_-[? k,;.';.';^u߾~6;yb6ʎʎʎ7Xz ;fm׷Qv/7v|^'a[Je?A>5s^u<;e}|}jk]P,jd=]^W}YVW$G5v|kŽn=K%پ5Î%硶%{ޞ%' N>O2Urn-HXY>&}S$' v|v|>ϻeKWQ[v|$a[?m:^nϋ|ޭv^HU('$8"p{OQש>ϵ}?=ץ>/:>ExϓE)R§Hmk;7>ECv-RdǪIZVM>oZWwW[$&7^6sÎz]'zSO7|ڽ ?+ /f Y{|/_G~9_ F[~ۅu۵Okyw_e=ʎSqϧE6s8͎sq/̧! k~YoƗvԛ!7_8Vf?S?ÎW}5dǫv\* Mie+;N`U^* ;^eaǩWlv=q 6;Nddǩlv~͎{ޓ<qnv\qσeJeǛ?Y-d[*H@jDorܟid]ui'ǵ={vxgY;nvk] ZhƎ3OmrkYv3 yt3Zx9\qWxx*hIԎ߹{]ҿO.t~lt~ltkՎ ?yiǙ/vzviR+igmY/vmgq?5g$mǙvc8ێ/se}7vw|LJ|^_l!V ;~ߝ?=8>kלy?bǎ/v|zPs>ľbǿ5C^`ǏS~z>_A?׷}opi9v}qa|y=ǩs|8_;~` v|`Ǐۋ__ݜ|i|Ԏ3/q?~kՎr_/gdžޟ|ӎwwx7G|x~L;-ǎ+7U;́ǎ^Ǝw-iג?}sgyƎxx7G|Ǝ7- K|< r/-9k>k#xovi kǛk|^#'y-vcǛy\eƎe8ێ3ߵa.8vO8V}cwx;|ֶoo;vYrq櫶w{ih C;^q0wܽ*wo$sݫq0w|M~5wܽwosw5 ~{3O-L2糹WN?Ͻy;j繗q20wղsr;>ݛq_6wܽ?m{i;nf[;m{;SOv;>^0is]0w|>掛meV掻^bܖ>s[O4wܽ'wsӽo8{zOOO,h_sͶ2w|sƛ{V5mzԆY/q_~ pY 1A͇ o~6y ʏ msq4A?MrSg8qLgS~& &Ig;&k8+&e8q $ N ɛ @-{u Pxqn~< xx:GwZM(lNW`VZx.ii;3=(-# 7釣;(Nwz@ޙGwFP]Q(m j QɧTgJhS5[N Ï D8TI G8*p>T*pU'+Tl{G ΅q&Ll84 N> x ΄ wLg>q.#&Ld8AH& < ή&e89&òP Ջws9&25A 4Lg7y7AnX @7QGmxcxPF/Ky%!W(EM|k>2G7VTJxc TxJToxk*pUo*xS{R~I8ww+Q*pw |TNWV<m>U{Okv /;E)KBᎽQ.*W :? KVHWu+s gLūy \:P?(pvTtUpG4h*&̫߽A}x޿*=U NL7;\b&ADZć.3;Tqv &K 7 ⷊrDM7A6q_M7qvm9]fw0ADVM7Aϝ @;A\UlqOMLh'A{U&+ &F ~q ~IP'&_&l.sLxժpV]P^uQy u{^D-^s UUԬ؇.[ ? | ԬBn%>?]sxu/jVǿ(𽪏Zͪ< pU~2\\'|w]n@)yy_E픊_X.s·kw_tz]$*PU2> |wQեE*]f2g·'qн(#C3ġfB7]歐[wIj&twrݻ<=.!y}r.s>߉](ݵFv5Ib (ݵFW $]fAuv8t7Sropj! []fa"VLnML#AHE9˼7t[}HwQ35 D )ѭ 귉t*? |+ ˱FUӄu8m.4cO|S{gXl+pr~Wk(iSuNT ȼفy'3eWe~;Eks0AU ̇S]?NQ)j8]Q}0ASWywz$Nߛ r3AU׿we'򪼏ߚU]?'A|U&߇O}kV].4A|$4A|'A|`GP G6AUi q߿&6AqWM**$t2&{~ <=U(??ǿ`+pPgA]p>_UA*pVAG%lΎ[T&Pl}|Vef+]U*? |} UPϟ ! *p |8 WKV산jB>M`GQQWU7e bc ꛚ] ʢ]2PaB7S кʻ,7Q࿄ƮИU7F]QߘUC?OeO\ڳTTߨC~/ѶMUAW Pӄ(~ H>|^HটT}^#~j]z5GWQ?/UJVݙU5ۄXˇg r)K*@?[\y pm>SU@TL7CmbRӿhoF:u﹧FISG |gP{j;(=!w ^*I够j _bwb8߻wQ#|<{T߃~*~^~157ʋ~VLިCM5AFq ~ ~M?F Ύ;AVcǝ ΔN7Qo۹ n wP&?;!Qqմ C}M*7!m0ѻK7 ⏪~SC;AQ ~cb'Kl5DŽ˄j&?&&pN?IX 5A=w[tqqvމC(8 MT5AUyġwNQ&`*qov8/;A9 >M,?MqvL:? |'^r&p|0AaU&{k*qv3AD5Mp3A9ěP n" & ޼$AK MKxs'avw{}g9;ě$ MeKxSՒ $7&7wU"A M%Kxk&'qy?Gxc?'A5} qQ5w(pT  ]P=xN gb|*^P* x~޼C7P=x;M'H]P4< >d ܀xC%Q;oQШ=lNPy 8*# lxx;Y%7xcWfxs"x*5{7>BGQ%3~ro= yo3 ]*(Ƽ yoBoB_Q]Lq *vͨݍbBۄ(U'GTX=UGQ6;vW7UV̤T7 5xcrxG[ț La.R[e *(F ݪ(v^Q6; &`)>ƣ6xp&oloGMR7Px*(pCTN/ m(6PI(f |Ճz1?[7UD9x?}r\ot u&ę <qM*kL3A܄=ćqFIwqv &5 & r0AAqRv8S;A|LL(?5fޙ NjNԜ9?L3U&3M`4A 9^îIu>M5 ߓ $$$J NN5 ߓ 9s ? #AIߏq2M}̧~i>NU&ﺙ}=Lu~z|&z q>MW% =Tބq7qO?52A]vIM (?8 _Ľ~ >T·$` |}?xσ[T_((}}G^y~E?N~9@xyz8Ja׃?QM|n;򤾎k·[@"y| |ޣ |_//TvߞWap!|$?O (}?_Aoqx&lޟ_W2oUmOOoFLEҾ<(UwjT|# ݪ? q yv_׾ ? y-GW}P! yq`wb8kɃyyzymy^Cm_QXRKTDS (< 5A?~Nxc=L~^&A|$7RM= n nL$$tccg'>_Է\/H_Am"{x>zA|v _4U8|5C3R(G&;&1A|qE&gl 3Afxc}v`y(p[w%N ö/6;M/;a_Fޱ/7v]P[aǟ;La ;>ŽYv1v|0$MaoF7 ;~^;~vF`oo'A";~E;~Ǝ_,C`/'C5N-vD aO v;_|}\l*gN;ͯ^R;~u֎čcYю{ 5 ~&$2Ak'A q4f;z"v|-RW;~|ǎAv\in?eN3Ty̍YC4_fTYÉ;hRVLۮĎeRD%"2"wkD_quƎ>cbc}ǎʆ,_3Itke5okuʙGc*'Agu0;z;V3z; ^t˾LChkglk~;\v_^,Ǝ! ,ǎHv&kӿ_VrOYc0ؠ\CQ9PcǻyĎz#>(,ǎ/35 vݱ{9J'qh-=? kDu[5{@^5{};FpIV4v|_#˱ [#ϗ﻽~:ݍo&^`HoYj{N|՛^#5UvHA~-0?v||"5kHť%qm|xX: !L-3`cf׬i{=Ď/rsid=vHKkY"N/H=υ6ŽChNjxuko$ܧ)ن.v|4~޺\{7^$kmK~& ǎo"V!VzӋ Ŏ[;^DR[qJJY_C%l7'՛^d4wx|5]d]FĎ/2KBy͚.r۵wEx':Nf߰5xYǹbqՍ_Dz|"ֱ}d|UZu>gg5k ;~Lˎ;^e&ǎ?ө?qbcۄ5|_oػf;\Ǝ7g ͭVuZ:!u]6r>Ǝ7gm;^zNj_QΫ7\be5]G+ޟy=ʎ|pG`xsVxs}xs;>&cbac[NEW\ijp;>l|^3σ2-/1>OT=Ovŋ͠{9vy6C_ekjD>_eOƏt#Hg_w͖muu_7s ᯙ9@< Xv:ߗPޏn], @QGsxڇ?UD?l_%y/X]`բXgCV%oϽtK^m2sqbQL_4 ܁"aec }c|Þ-ߏ{#~!a4T͉>nQCt*94z$!ߏ9Ø܀a pp{py+42Ƀ$BYwg߷p@l 셊<ITnA{!Q=^n»wlW'lۓt~eu~_:}W)>秪NؠhM`=xFt^ ?|Rut^G̲ct>{(M#@VqfGGq@܏I1܏A!܏9g}{?l" ']R 'lӤ {tFn?~n?/Umb¶3LGm?-Cpd9} z'`!0N ~讣0y jIԵfum0f~yx3i?/L ~q,B%@~~# ~ڹ:a#'a;.ʿo4 6͠h69 {p!{1`O'#2l򌀿ryԴdHTF5h]]'M3viW^07%]osݾ{=露붍ouۆ6msݶ!n&`sILAu^;1ݚ_6u>sfcsV`~\mZh6^65b}^>'b61m/W?fus skwvs.郵GC\3վMibsvRz^u1z'isǺYT\AXsW4vsZiBv\W_^=[0վ>ة񊹮MOcW!" \s];}f·$j|8M^u.}1Pz}N``9N`]C]3^ z74|ةs]}-xPz=n^uZzº<·=Bbc1c)>}cY==~_14:=z|xX\GsG0 [uw1=45ټ\CG݇nj[c}NA~تsvsjLt#Aޟ1׵nu:r^ënӘUsuݱcssn÷>ΪIYn6y>f^R;;;{(6nbZ`$ snr\^M';cW}kp,^Y]Sxp2z^Y|$I{\mM}c·1 :{(uF=r:N船^]$f9{(s]iu>~\:׃Usq-k5cr{<sjLy-muxs\gp'Tu1Oss]Ľ·$̘UǤ\:3i$T=pds]3P+ǧp8ꏹ\b'1C4ubd ];{(^ƻpڧuD=?3C4g$\里>G3uPb:n}=ous]A}5ou= j·˜z?k9b|coc\P]| χCc4=mu&uXU_s]·C[Sg&_׍ªcb_z]__ :W]zU'y.溮:G]'V}>XЬpDsjȮ:n?s]o7^\G\:">5|8wx57>/u>z`19p=cWkz M㻳z%I&{\~R>OcW7U_u{_^o=_WO?e_tf )0L"\ީ;u41׫GI.s]1=&\g1׫_:5֫7eՏ%Y;)1׫~uԫ7\~1?6;w;ϻ_>bk:k}֐\W^ z󟏹^_3O15Vz\ wj/fnT[y=bk=Dcݳ~W'v11ZL@k_Z:4k4Z/:5|8M9e5g~jzckNyR$s s]㸚1׌\:F?ckN^Cߦn"Ikfbk|0s]k}-4m\\{7YuU?=bhk~^q֛{:\pL y{bkcz/1k߯05g|Pߙ3Au3 s]sZ_;Fym'\޹ד^^3zM ?;/`d]k=Թxy)OU"?dGe^28wK\F_Os?zIyߚ6:?ywmZ ac`Ú.dղ{BjNA{bאjG8Vh<~ WqǩK85!frjOpjsp)f95KrI9u,8` N=2zL@éyk˩iS^S?&^N͎rj ȩiȩpSߏS.f*HNCX/8Ʉ|-6kNKfT95Crj~jnrj!9E4.95pj?dԍ}nk%fI95˩S8wpj `95qʩ}M8Cc6\<;g+鄻pS_yʩzS1Ss_Sp7e959u@é^OMé_puS8x9Q]<(&NHz]x08%&]NMZoFo7U©oUw˩ٕAN}N}1XS{é׹?ۜچ0bYN}ǀS$ggo_~9I|z GN}0'Ѥp vNvY8j}19ũWp~m~Zp匑(F=é_Sl$~/9sH_e5ZNfe?^nFgaw 9sEN.~S?_8@˩+9FiS2;c_9`v90N}_9q8yvH쌑FéoY޴1ԗpKwHaTx8uzuMNͩ&E22K8fwDOkHԧ# c_N.u8u;#m(팑OtUKyFOȩސS;z]<·cȇ3Fj[N}p;)EU|ЖS/+^z)yymk8h>\Wy*T#' 9 CQS\zD<FQO32ŇP<ԯ&}ӯ4|=UmL(ve:r~!2~yM e^PӏJ-jy5Z~ӭyq{W~ƇPӏgcA~9~y j!P~܇#j:jzs1RuyBQӛJFMw0,ۨ1Fu9hWi7CMQ]4$!L+jz8ꠌ]p*jz<KIG\w1Ǩ.iQ~͖K} ߷EʿoTM5}w-w ]c75۫qMk5mK5}{Qӷgh5FTr G?]k2>Y FMPӗ|7j[sgz~. F׹P}{_)AM_N/?壦/4d!us+jr\1@5IƾAԞQĢ/6BM_n5}^hǢ/fCM_\^{DM_>EM_U/63EMjx]/N[] BW\ʋmw}^jWRD}7@7j)+jrkoݺ 5./Enj+j(jFM_n,5QףmcNꓫuռܶ#jzQӗ7Qv;QӗQ; /?/w=0^}H٫u{#5ۏiu7ms5gK vwap5nS~&i/:`׼XK~jqŽ@闹_{ɴXV{I1b[񵪕Kʥ277oN_plqWSkvkrtjiM"fYqW?kL46(zmo=لJ3{g=z-Zs;Jɡ#Gߧu-8vM}>ؒ\}~atX;}ȏϟ>xzGn¡c >V32ݼɫ n;R9-M ^CrƭܹXrsЫ}P_9[ ɡ>V]Cw&e.yʡO#HЧ|}v9xX'rhǥ'|AƱsZ/I=FQ|CgЧ}i ^S:֔C_pqC9e;árh׎O/mC_ q\fGq7^O]Μ{sp[>ovJC&ph7M 9[F¡r=xC.f|y80=$C=O. ;2= z9TC?=Џp>q{8cD* v;9cD;phZC'gC#l8p꡵SY':z=z^u~pz3\>׻pnN}gpv8O'?2NL$k]0?8yO/xu!/iFg|rkphȡד]x6ák<|Ravo'F؆C:pW5ApUrgk]{8q']ȐCy̺38p|{{#8pc>;f #v S9A$zow>|?vClj)>6>ys8􎰇Cy8!CpcAwd:y? n9߃C&7^3 W!::j 8hCI]0.62Fm)9t#UܮcC7Ѝq|9t~hˡ]&9Z>g8Rkmáۍphp QFáZpn3[.7<+{pը_? 6rκ`9t?}ápv?p#á浙/CK/9sFgCp#ágs#á-gu>۟71Hu>t#9}s~srp=l(F|p~ˡ8tg"Jmnz+p&8#7h]>,ɡBН9tLfɾ~phCws>ʡ{79ɡ;xr?ԃCCwg6r~ȿá}ޖC͙(nLʡkd41l#nЍz]/u>͓áw&8􎔃C9&޼.8t;n_/zsO8ȡݾP݄p&7C7b64;zGܸ8p<\Їpm->xЇs9AP}0">@pɉá}l.~dN ]%"lO.][~<$u?Ŕ?Qo'=d8t-Y<|=ϛlO..ڨ 尋<:p ..n7]{ggC;Iwؾ?y9ph֙ȡ+f~O?m8t b?ЫoE~ޠ? ~ƇCW ܹn%8=82X9!u9\:O8v!p=ЫuP?s}C_~yyFC_я83G8ɡݞH}SЫ+^I?X}m8iD(9R99 >.-]yC%Н49Frph~ź71)n/8t phcd"zz=?7u>{Лg¡C#>9ӐCh79=Y~DCWl]ғhs9ׇܒ$dgx d=AOR!P/S !u˄藸 Bϯ]?[{W_ncvʵb}&OsȞiԳmc9!1Zvc\s5ϧTWni6 >||uc@:ߏZv9olb"fr|DQ~qf͎Y8}Q9N6_DlÓ&Y>'%=MA uN4vdHk"}(K5)MCU}kyj!텠;QD5Y<~ZplX1WxgJW\[7zBl6 40͹B|77(ZB:nlwf[VߡGFz~0,3=Y7m/g=+%+ jfʠYt7eYbfN"5,!oP3,+f֤ jf Y|fDYT3ˡ,9 jYfP3%b_YBaBe1y5)A|!O&"LYAffd5Yi. {߹Kw3t jdPc$׫,vS^dqcYōG1 f j^!BūYݽDdP3bѠfNœud$YY<Y<@Ozd5.mP3)5sC,v;odl%,v` Y6fP3yZ5a^dsp,~MW! Y gP3W3d`C&d/  Wdzx۲xd`ɠf/XR,E߬k"o@1f1d bY|1,_Y|, ,ZzY|҄,>YHD~#4>C_1{?#["כY|#;,Rdq7YܝGwS]VBPs ̠f/[5wg jn7;]C&' | jnl`,^؀Ͱ5aTd"4 :O6GR?ϛos+YZ/ ([ wG#__/dk1aQYJLd@1d#v@OHLd9um(gP8RY($}dM"*ǖc+Yǭ|\AFz^tpYz{u>4Sڪt`q;AஏF]8U境#; ~=^;x~/y#| >&W}?/BkUgtT\UՐ| L^;P\Dn˳6&. 478yilpd<?>JqNӌ9#ʃ'&G N? N?8yKTn5r/Ēd1n N!OLT}G*=A^*>r=`jV{IV{uOmE,WUh_t\X_=vݳ;4/ݙTIShE_ٝT_ U[dQW[vzl|qHS1m1{jbV܃z=C`]S{i [Sءh}P_yfWBy|(U @wC# vJ Lݙ4C;. ${g(vD0hCR >3COU)!'KF@*/BOC>U@aϼ@oHS0O!CwH!&geH*!S@/B/ 6Nz!Зq@_Cf!;|LI^zvw>t$ﭤ3%yz IE=o#R=[I氃~U7=mH3M=yP04aH*yfzle4= z CŇz*[Z,c.Omg7V=ZJD=?ܟ:[o7a暒 <=69=g+LI>;=g~eVY/ճ=_C=!V /K5"e\>'yOm*zʁzgǶ6٘V콭yPs~C5VgUPIdjSUnz W=߬qowC=>/秠LnΪC=>OoP7 Izz,owA=~^o?<ܥKtԳé-ybz^+ :Fzzrz޻.`V'o=9'pkz 4@=˟Dmz_<;r*z<Q?QϣG39y"zway}Uymz^烻$05űK·]?WI Y~z>T-& +Q:QWb<ҿxzNwv \~ ӟ/3ss| NT=e91е Iצ߄@OvI3z ;:N #ߋy] τ@@܄@^/~_Cߟ~!qvk6!1v{q !z@vv1|= ~@@!ϔ8ggS@?N{4iq%g@?C ~<'q(B@? ~|tMoBոKaHyZ'[bߩ0&4]~ nfk6Q?1 y?DN.&֛N_O򩞾>}?&J?7ckדA&/B}c|5D-EQi}רgGs{W4u*=u6~ުBS}􄪮z:\bD7?Ak^~_RttzI=~{I[ٶ$~''nyb<>'Oox\{C {짍1sn(- Y'\xn7s;a' =sOxn+e,v)w?>M̋^ϑƮkz{t^WUYϽܧyzy^?=9^ u}C{ɂ.8S0zSxU֕?{=/կ}^e2ƌ^oAVLmsyӼxF{$oWot-}^;祧^-C)js]sϽܫɿUs)pr>ṫWMjў48yVsW7P3xWcxܫϽS߽·׏>xU sג~x[]#;Ϗ^5W7^#"^ssܫ7Jߏz|8~j{ݚFku:U?#LJ{~/,_fMWݕW];՛^^ʮ4!<M:f=suxMY!j`V}^?"k颞9/j~B"U3y]#Nu>C}|81߫;'D}ou>R;"z~r$am)ܶQgCɳ籣d;܏&|MVAk-CgxJ:ԽT}R?ϿOm=u>MW'8xՃx4fU77oxq"x;O**M3G~n+w5BëVӀi}~9.ܷYFܷO+nձA{ū~z/+z`,ū~b1=}l+b{fbƫ~Gy,jAF+ׇl:^ulw I|P_>68;=ýBbǫ4\bii"vOp?4v;^ǎczީ|~4-Gex}>|y-ϧЊRPh}}x}O0Q2v>??v>oҿ;^fcShfc^K~3ǎTĮFޡm|5zR@" w;p? ooY_1xݯN?i?cz&`~s ~K vGojOcbW;;ΈxƢ1v?v;DZ㧉;^z>v|cϝz~~^GICIҩyx=6v3DZ=k㧉Ez?v|=ŎĎ[K}yY&~Ď6? ;^ϗk?Mz^ͿO?;^ϻ7IN?cx=?kÿ́ gDvljy^30vF:ƎW?ࢮ%hLsy㧳i?_b:-x?տ ;^&?wbbx_:LH~M;?Y>xu>WO?aWE?ǎW?렞_ V~Uc5ϐƎWSW?M?O ;^QϛZ繗K\.y~{;deձyv9?bWMty5:"[u^㵞a]ӄxXYYUX~^wZ_[bk=楮bWMvM;jkִփO#AzV~f}"7;jk2S녱&ǎkh|U&'&Nw2!/ 9Z<+Tۉ9VYo+v|bϓ3x;^Co9jɯ:_z㧖;^u7m;^$:|9PuŎ:Uu>ZK>8RϤ|zo]?xՍzז?.;۱ˎo~~?5~~G :|^N,1vz~)vI?ob~yLOvEYq·&ǎ+vx|58-|HY>?Ŏ;^ǎ`P3e_d=v|_w}ÎP+~r<|pv?vMCBXx]oj?b;ϓ;MS9;?P<Ųwjb9|Юd!zx`U{|}xݏ#S$ק?5Pbr?/v|a~Orjɯ_>Z7DZSlҍ|Ӧ%s[;^;uu%&Aڃ:lx=GL<Ax,Nx=?iů|^^Mč=m8k$8M ˏY+>r<%z~>GjZz^;MN?o}9=ƞkbO>>vfyfBjO`ǫ oo :O?k#cǫҩo;^`ǫ-a:UyϛZny7v_;~Oy;^%ky5<#yǎ~ v=e2!vx;YW?Ͻ.yD7HßuO?q,uycvձv1;3t]v|ӱNJ_9Nvyͽgb??~^ak}CKN_4{#X]v|a,3юzР9: bkc6'o]O?D#$XY_coExߧ!v2x_Bw9l"wx=F|z^㫎Տǒ_u_뱆z Ե|A;>:v|?cW]x=i^ 5ccǻ2; _׎Kx=f>g0x=ԕv9{d/9{6㫾k/c\5<{Az0/mwU c^ rg/ȩ-G;ĎwSfx'Z~#vKa;wzx7;'6#v|$u_5 r ݩPb;{;K+·)v|^NI·~?v|v|ۖǞ'q~;|%tI~NK'v^?cWϓj#~j3ŝ _ŎW[RK^!;^U^ F/]GoUlly|{;jlybŎ^烬;X ~`ώſx ?ǎ׫|T;CC;>юsǩqv֎ag];6q4jyююg 85a_/bo c_;׎3'@;Jvg8qE(.8qٵ8Qh9!,8;jǹYюY;~ӎ) vYŎ?;h':@rKgEU;fq׎3gY8Wqqcűv?7%/;vܔ8q6ӎMˎԎMˎ>g17%r`V;RvNvJ)yq͵LkǍǎs Ҏyiǯqv.r8q۩F;ʣvN8lwIM;~wG8k@;%H;n8v|䂬7Ǝ9Shqnsp?q֔,)j+h7 6ώ߬g',8;hӛv~bɊNoY\;>mwsqmv|gcyvvYq+'d˟;ñv;Ԏf}cǵqfAfcǙEviѱZ0Eǎrv>Wq׎l,Zi'v|ގ_2fcn;vYycLJq-vcǷƎԎko??vbiO_٬q7fikǷǎvgmǵlqvV;ÎwrCEiw2v3_KfYPxײa6t[Ő}V3ێ3˶VH;]Վ_d]YqZ~qvĎO׎o{ͬ)my6vܨsϚk5=%FdՊY{ +<_xzoٙ5m/+qc юۧov=vi]Mf?^|ӎ3۸8;l;Ҏ߾[~Vvc/޿ Ǝ8n;Nض~iǽ~i͢׎xrc;{Ch;xӲcݛB;άlC8qێvYme?ß޴qAՎҴ㇟1&ǎձ9]?^m6i{`Ǐ̚jZ,QmcwfM9׎V/v|6xn8'm;>|='O;>Zǎk Z8m;}Վk5jyvm?aobbqzێv2tf&qͶ^?찶{h/?qbЎ&c<ԎZo#8ێqBҎ{73i5vٺmO㧖;۶{h;U;Z̶m;knzd7;律2녬eǁ  dad8¸yCYHB=Ӝ[_;nVv,qV5Ҏv\c8miǽЎ;J;nqjҎ{H;I;^Mmǎܭܿiǫ;^ۣj+7cuz2|vY_c.Vӎn8%iǫqq{h{iI;7s=qjӎĜvvxվ/]+ox5W?Y;^ vWzuax7l:viӱkǩM;޴qo/fJ:viDZMiv=ǎӼ18}ӎ'w:x7g;hqsP\m8iYJ;޵}Ǝ>8 Dӎw9vkjiՎw<K;nvL=?A;Ί`]=@BXvK;9^ /vㇿڋBqsձrюohewv|Z)9ᱞ {gq{hǷ5Zӳ@c=oZXXҎkߦ+ wv<{ `7-v|XµvF>Fo3Y";6-,v|3;nmv<{`ǷZӍ\㛹qs*Wv^ߧ{ƎkԞ/Zpxx/Zxxc /cǵOEǎ@;?8OiǵEǎk G; ю7Oqӎcg=+9qsHM\^츹qs-ܿZm8i͹׎S vՎxWx;^9豞cxi4Gadz v\v}ǎuǎG;NYbn7vƎA;>|m$A;>wz;S|v;$!S;>Յ`Di'*D7v|x+~短3>1];>&_`H;>3~#sÎe;>?Ǝwv|P_/hMqv|x>Ďax-|?b|iÎW ;>aGZ%;>ŽÎ_QnKb~ӊyv|l戇<ҎJANvXZY cvv`L[U:߇~ _P:??ӵx oܻ?שWGӴF>F̦lj8N H})p*|TU"i8O8T=<&SKfa$(4Au iU,U WK\TFU "8y3*p H8a?*p*p*pCT/8*p6 JL[F_ ԭ ^32Jj>hlvy-oݲT+WF_ |8w*pUGF_ *p TuBn* a|)d&q3A=| YUߨP(E QEE/*YxQ53PgWxqGbwT *RTծ(/T]K1W̗/T!MTMŽl*DPn*J <Qم^6wTW2RMU>8kR_&hT/6 ܮ*e5 DT %Rn½  |{&ĪvTTm_|T^Ϫʥ_l_]T>Gp*p*_U3w yJ |!G*pHΚr*p$'R]@ЬϮ5(pե l&jy_(pfTLx>bW_BD U8燡 _*dxaqM~rWj9FRփT?UVKA١ (b c p?z@^LCgB4 `/,T %*RM(R}c-eD 'x11 ^TN(pT<]2A*?PexS r2A\dxW oz5`x7qMV&Ӆ'Ļ*VP0&>$8mvU&yU& < t9f&LMW W* H2ULU*K *T*}TS5:UT T**_>>9ߦW9__*sFTr} TUfwy}W2/*Dz+o^g O둢 `Qy?2hOފ*9xS*EW[oR7U- m&x n" <e"9 gRu n <qe8z"ĹqdJq v 1A|.!L? &Z NW&M?T$eCz QusbUߍ\*qv'xU١*7UEn2x.Q5U=H@g=O%s=/y*ZMg=p*2w}Q^J"*:xJ|Tu3<ẍ́LiY]"^x1钘 &q913#$Ovvu<p SՑ*BEeQ>QDP0Cy ^v4)-*Bċj ċqo nWUċsjxi&SgKb=z,KU]"Y_$>c=H/va!Ax~$A<Iz 7L/K&|G31)-KENR- 0ALWɚ n"}(𫋄{z^P=/歾IiG(y PmJܔx}m~D]RF4Uqp c/*𫫄]$2Q|<~E])-݄Xϳ; 9P8DMRZ/Q_  |-Uy(e k <_Pį&ޣ#Q|{]P/x|IX_T/U0<bTE *__(z |[ |uΧ(El*p Pij&_Vg(k |Uu(U_~K;VnW y \._Ee |E |O|LϿ~8/o_?Q>vS~`:o =,EΞf_1_99vʜ=_cmy>u-1篵 ҿ9|=y?ę?ַޢqjRǷ޾N>?}~yUcї(ޯ?Ք׿}׏׏k5^Mll~q$ïn^&p4^^:'_x~:|]g uw6Fhsfq>es>:czQ~{uγ}E@9]OqyqCoCw{ʊ1|#ycoyʝ/ۯ~2zyjr>pwꡉ7K| s{ũo|>׾~q85^99| ;u1nSr>zpz=\>)J̃Q&G?ۿy~u=N<?}\|o|7/ݿ|uW~}S_" endstream endobj 192 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 196 0 obj << /Length 1121 /Filter /FlateDecode >> stream xڵWߓ6~_aҩ$I3&N4F&_ߕ22\4jiwf aa0pN4d8%2*N9UyL2 yIzvp)o,2(c&4)WTܙ\3 R(Y83B^Y}?M&sZM5ZӰ֖Ÿ/dx7zRixfPE[3'7N9L(> _Vt8^-}vS`tF9y0vI2I%יcrE'&0׀2I2cM͒ۆ*#9B6tfq"mZ.1/5W@?;r$RE8i96 ׳rm'ͭYa~Bڭ?ܳZuy_.H>̚[ii~1*2ڢ6k866 Iۓ!*aONfh,&Ac}[Lʚڄp.HNLdoyB%Dnkg yzHS6GaT+hn.ܑ#ջ@{T%5?Q"Yz"G;}n1sG`},?%FLщF !n끼­v 6@ȟ_9`upG=^aw˩TT ;x:EOl&mװg^.{|/ PPV&Y=(n1D{{9s4Io9:cEi5xk4zo l} zގ1|dž<gKǀn;ojr:lrb`)qO-:iPJލBNp'=AonUȭzK> /ExtGState << /GS1 201 0 R /GS257 202 0 R /GS258 203 0 R >>/ColorSpace << /sRGB 204 0 R >>>> /Length 45751 /Filter /FlateDecode >> stream xM6˖6vS%0h 6l]""-UYYV??}WJs?I'?dV?5 u`(~]~9e_ ~^[5=W?nο_??~9e_su9uu5gV_ksL\kF}Y.[F׿2I>/?&Oӄg?|?Ͽ_?_</_?\tbM/?e_?//?˿_=ylyWϿx@Ϩc~~iWn@ bϸ+u'ց~qW@#ƯU7AЈr3>Ǹ|K W{= 5oؿgmtWz4;g\; oqD{ z֪~%_<@τ{P\5g\+Q@qwƵ<3.j =wU?sWgHNsW"_e4[p=L}|37~ƜϿȿ ?OgkF == 稸"_W'@#P g g\Ut=1g3kZ|\l>‡|wAϜz3 W~oM{o{,D[!ѿ|8CoL = |>Uhg +{3=|3*΃>O'zԓq&'=;>/z W=A=F?_W9Ĭ%рȷrexгv2Xg߷/I<e|>( sA{DA_u3P@+orf3>||u||Dϛx5w ^Lk;ytsA߃o<M>ÎJ!z5A1XQ¿AXgO>/zz}+ط_7*34૜zvZY_qMV Osܟ9V~>ײ/g',kw#~攂pN8s\Y/rNy tra|VΩ2 8clڜ*^NB.|c Z.1cw:vRUv |pX]Č|f`./g|֛TsZ}3.^F,[l^τ~`8(`3 .猥f.#-zFna:Db௪X3k~ xقyy>l9JpXcVɽ/ x6ϴǺŸ&g/͜>;| ޥc|!^ U >0{@j"@NˉT|l1vZ\e 83p|+V BHT2H v݅g͂?vR?hԎck,XKA]&p-Q5߇cm:M߻_D~ ~65we; Jo{ہX"`Yw;Ʌ|>cs ̩9! 3sIA]Ǿxs?g(zk`~'J\<9m݀;ǯ&S`>'k p&ߋ:ߋG<0RQi!6·3M_!."<93mꁀ^;0WDw ȃ,I7s㹞E~o8? y) ~E XȀ[=q'W`.ԣ?sG%Ϡ+㹾!x?32ҟMKPbh=G sA\o$z#O8^ l/DsC=}@|fl> x^u 0_>,W<[`;f%c 8Yt?4s<#x^]ugvw}s OIa>s=FЋ5~ > د~ ρ=@H|?&> O9?S@s~ s^SU?Hq}E*H p]Dg85ȿ|5 z>Ov`>Dt30Z?sX|E,񌅐,ȁwޱ1^߳?a0g; g )%g2X` OCCE83-503D&90ߟw|A#/ )nOsH@"zB  # v|))>d? xez 6)p>|MF؁zJ䯾%p_`o^_qUC8z;qlF1%x';WJg8;s\%E.a n#^(Zo 7"F s??FPzb <O/W_0!C` 6wc^a &`,<-p5FP6y?D݅;~86^%=|J~EQ7W0_$ ʃ<xoz_Ms=+╪sX\?x`| 50`  _Vȯr< _Qz"qJF_~rNˆWW+J`+R`]ψxz}m^_x]"WY_GPM鱰Dڪ XcVX.x+8#^[=-pˆW0͌7zZ+U\o{L\"6ߒ5po^oQLsEǍzC0ⅦgY ޡ`}{0=pħC?qF]zX8Ғ[83VUI>sHsP9_Ff$& e#pC> ҤKƒxs<xޝ*p9_f%q0)0ח>Hsʯ#^iC9?4?f$V|Ǐ&x =+8 xwʌ9 8u 8>⯲>U+8>9-` ]ۊ|E \0Ⅾ=񝿿F'9_ȿߩL1x/0lˈgDҵL\sı7"z[ woƋ9a<8~*ſ/ ϵp6F2C`ńxp|'n?χ/ wAb?pWϳDU6x?z&F0L<}+Q1cԄ_ߊ|E 2DMZ+1HOc/|~W`WFZ+#p#^ǫj~(5Wͯ 2Gl9 8UoPk,$=nߍ+8'a CXI`^/7~q,Wp|ķ6b+0Xi=K{_zzw^O#''{ۻ1Ⅱ*lxel_|{`M%xrHya!11jƈPOOe|GbE>h: ?}qPi4{3#O(; |ц_`_#L #^*Nchu,+~#U@<8uFc p7n?^ƈus6+37y*8lWiF"xzlM+\f7_( E~z5~(2,,~~V"Ѐ/LՓg j]e&IxphnyW5Ļfe?T8WbQhv{"e0Mz 2_`]4?_ ۊ?fM~[w'+xa~L&v#Qws9_v!SuNjx z#zq|1Q>#_hqPw{_'x bGCfq8USw$/񱾴ԩ!px'lw_CX1ZB;=E~RRe'5YeT]xr|v;Ƿ-8) ˢ k6a +y4̿?ɯ|0╕~ȟ=F/} W~lW` Kז }F ҐȁBE/ߓCx #^XO3H$",qeoSX 27vC(#2 _|eL~_t'M{}~_g=]{o=[ϗ}m/G.; KSm~e|^~1ǽԳ-)~,^ɽ^lS^O-7{r?hOky=;׻=^ntz=)[k=ުz^OoG{?̧{U{G{-Rnܝ뇿}o=̯=+yOvH=~c7qo+g=l{?.~i{]]/i?Vws-vE]/~qW?{?R>b-;Xt>c-X>Q>dF)?ʷ,;|R?9=K#烖-8To|_G5|r{]qʇ-:_T|zoòsk-9߷KW(_|2߸΋tKgZʗ$[](_T|/?/^ZWeͫ:||r糽v{/X'y:yr>S++uޫ}xޱ!K>/asT|xkVyΒ:{|ϧu$Sx\ϣV~CU< #t6U~V=5\o1V=\1}~zs~z)׃L߸d&(S\W97g7Pt=a%\/3_V=9R̮a=̮az^g&=5 Mwh&=M']4U?zj3C ^/UO6ߧwkZczzI{ U6~֋ _UO6Xo6Xm0jc{zݬ\zsz9lpjr 7oL7^o sohz1Tz1Tzz]7CGʇ^qt՗qt]mr(z]ozљrP?1M5紆=cTz׋+t4;/GQspYGu1]zءPˎWC\ێzlZ|w;N}oV}mYRU/7c?Vz~Osu'߫K`b=W?YW}NѺ}ܯֳ/~p]H?t߮'=ou+ݯO_c_]I_Ms7l[GlҶtbS~mzߧ~&} K6MllW?gS=m7WQ?izoڴs?jވU9ڼߕ2UO?lmMmCOu; /^~^ 7תu߸uOYAMDgnwnV?tyvrtfݏt~vݔ/twkf?xkz/ޤ~voެ~V_U㳟)u{S<~&}$7'߾]_RX/ߤ~ZQ?Z|@y(G4[yA;z;h^вВВЎ;^CKIϡz?A"Z~Wzu# >zU֫[,WzYzˆW(QW!?qԣwAxzUD^RUez8'R^F4?HӬWRgR:wRub=:5R_d=*}=a=cI|Kz(`[ԡXz2uXOz3k>HvǥWSuo=}=Ի^)xz?(=*UTǿ9z :OUz?Yz@YzAЗˆj3?GTKVKQϨZRzGUC!UTTT/'=5A߃d=գD=j;EUIOIoSZOzUU%ֳwU[^Vo=-Xo,C|?UiV˨VUe=jWU#zn++[]3+zp;+VZޣҬc=5J~C[2S[9zk{+DzW,-=zse~PX[zue}&G"Y?zyeZzzE%+:/_KʔJW X,_.2KOhhzm'Hbg;YzCKmjֳԻ͖^nzGRzYx_f盕oVzS/8[\zG/SzY#6+҇q%zy~S/JO9;So9z~4/=aiAa}jEgXO:{t%=>K:wwS:K/zvn^vV?cǝ>fX;KzY'So?K>۴BzYֳω襗ң󆣷Om=~Za=m.zw B Ce5Es@:(vr6۟lz1@nАu14Ѳ~hJZ+hhV !mXJA K"Y4miѿi)?Ӗ{=K@m'Ȁm3+:zPT[^ڪפy3oN蕵37}P5>:CN7,۵U IOo#/[(0b!mS=|4KY&-Y^gk呦IC !ͳ)hCOa-mف.oGK'[ҋjSscIɊ^uK[Rǝkg75z-#m[ݠ*ŷ2[Ra{4QQT=A^ nT[>ZQ,j!{uK;/QʨRΟ|%jϨY F+0qJ~St>}$t:CT)'[9LUk)бҕœۦOT+=4zl9~gxoޏSݝII?O}7\>BG:ޢcE/wT$UJ#/SsL?E靪IsU\ctXA3*}\NX2g(p z'Ǝ==e]uZSmH>rjoog|q#L~׮A+U y*: L'p^I~Uv1}>AhIڡѻ 5rߑ䇼2u%ewcY5_։W۬ot=rnhv^ҿ|e?]r˺NW';U˻9ɡae3*vY|:C>9WQw1gÔgʔ:gT|f>kpfN}y88ۧjR&Xoy4ߠ]ᛷ,ķrM7]N|b@K~\;nMz, peYr⪳XZygƕlU\wq+;?nYnp5ځpPsߺK\Nח_mjlGeʯ͖F1Dͯ/V n[w_=Wq_oO|M4uï\v;[b^g>q~$'rZܹ8>%q;-_>Wv쑶Rn/`m“N9t#do"~w`9I߄{Ӏqnp6c1;=ofIG>fl~75ha[S`Pp2É'&ƧH@,]ɍq߄Uf8 Q36TF0c7ˌNZow,957> c#x27<#,exN%Fapq0~s3o Fǡw D-FGJ1d3X>tYJ#,|2R:bh8sYm^ɇ493"_[T&L;"jHnIJ\+ɝ., oMGZ϶̀0g.oZٷI]x3h1&_8ҖL++xaҖ>&qZrMi݃o5iv=XJӞI+gY2&VZ7N_x-.ʍ7k-.l~ƭur>xƏ߅Ǿ<7^5^V~e >uv>xo<^zleC-!eC}m v1l~l` ÿ[yc<~xm}/ m}l/ l?e-c}8ƽ~ kl/ /lc`_x7m/ {y7lurl |?7^l?e}7l/_?YtʞnW7ʮn֍˺~xƳ=zgڍ,{es_<oe}_,/~ů/f_*{LEeP*l7߸7^e7~,o~ϲ/?xAxg,_e7Vp_ee*xxo<+^n?;^9??ㅃoxͿV|;^ VY/ox:^8N9^?㕃m_<╃krrp_o_ㅃo~w[Znl~oxA~c x>xpp8^a[ږnx`mQ7VPv+^8ů}m__ㅃ[}c ox2j~/^㕃{?/xP?X6)8~c m7V"\|F~c+^Pi?ƊW6?Z㕃O<xAm/  +^yX V|c+^`ږox`SEm7slW,~x[+^ oxw/Vm7V [yWo+jk߇Hw[l~eJ6)k!ف+-H*&Oxee KvƊW(;"نT*Y+^82g۰d#xܲɶH*lō/["Iβ:%xE8-xE2gd?RH5WeC/W$|mle${´LPG+7V¶xɶXloSVD17dpH拳ol~ }.Xʲ oY$A$tIƊ$l/PvEBئ{8^9XIW6-{ddY$%l~c /d 2j[f6%˖I։jz, ,#٨J%Zv*IVײTJDUZ֫mJj[,V dm%6njor*v%|H+YM_2HKٕlXleǒڰ,Km)[܄dϒeI$W&M^KV-IزkIeK=l[ dݒm%deY$~%ɄZV.Y=Υjf~fS.]vIΖK),^eʜ,#GYdy%dI/UCOYTI60UgL`Md ӑ%l~,k,%äN"j[h&jj*j[j~eLlcdSL%elB- ԆaH.9^L-,ed+l-k6)^fYe~LͶ|$[35˄&SVXn۲g:ՔMͶAh:օ-K61˖fYj~ɬR45DK5CI[I2s]M2eMͲ٦kj?י%:O ʦcӽO_&ۚH6ֲI2M,njlnmduS4ewm$>&K7uR7ٶOIL Nݶ֔N]mN,qdvhY$'H9uRS696PɲԒ]N6mN+m%TiYdlFnpJ'۪Kv:uPS: ۲ɶ:N*u͡dSm4emz$e)l YUv'HmNQ,xMdÓm%+l/dEɒ'I/Rÿ7ee;l"[4~ʶ|Hj E-mNc[ >6Hm|eŴg IC6@9X#ih}-ɍO[ٚ$٦䋋eL۔lWnl.jz%[4l/6~v&٦U4i{lmҰ-4lae([/ۜdWXv;iږ<7LA`$X76d/\Ĵ5~76?1mnG2e"[uy[}^~JT70mn<źqo,~~ducrrk|=ƭ"f7EKmڍ1mҴm<;x~~-cvƽik$fۻ/-ލo<5>lnl~n5NV΅kpmk_X,}l8~UjȹM76?rsܸ!uq7 /_6/4ߕmQӔlSo<k|9ƣܸW΅jع_-;go~u<~o_;kk~uG~ ?e;|cq|G~n\7?տs7w.<տs7w.WOl:_w8zo\_~~?7|/~5o|n 8u޸~Q޸Ʒo^~_o~_~s===qo_q]o^~~/?_/n߸7Nܸs?qc^~%OSq*7N߸㵟q/olM/e̓qy<7l46d?ǣqy~qr|_xWnl;Soyx~cW4n<gIddd'e7c|Rv||Sv||Tv<|Uv|֍cn\+vCXeϻ/d>w~q76.gg&>/泔)_O>?|_2_O~Po\5l]ɷ2UM㋰yFǎO>2ηg珕bg磕_< ;߭:o'_|:/yF-;9(KS }ޒH6Sx^K2gxޓ}e<)esTu5ί|K:yXq^my|<>/8? ,@7f<28?3|ޙ]yyj>ǖ繹}yo><6ytίη;}ywqAWv1?s x6?r~KY67]#dI^!wW3nm~OCSo̯z SSz|9e z `o?#s<ɧ"ԧt~_-Gɧ?,k>%wۆ&7V^&^G4YMd^'^H6ϣz,1RS6ݬ7UGήWrvmz|lYmz\Uzzx[g˫;^ήWwv? T/ݏz՛g?=BgP{vET/z~gè?F8Qv/o~~$d/!I PgRCv!l~.Sd"LjS?Gv=ݿ~?d6-G_TJvYn\4~dw&_T6rxs'W@7n|^W?QvՏttZƙϋ귺q8#ٟ~X\o_~\l~,*e郹-ngǵƙϋ=귻q~@z7T~0K7loxcӶ^_<.7Wd?O~,=D8k<5ozcG`u8╃m;~gw?o…l[u~'q߄#^8~W~g4o…~lsf?o9YXW?X7.|qol76?1z76Ɖkz7.z 76?1nsK$x[5~z_<lίݶnJƲu5z 9Zz!75>!\7=^z+7nSf~cS}q7߸76ҳq-7n߸7ί۹qko4>/6꿰t>߸o3 W7ko7VBuYX|~7V@, "x`Ǎolx~y:^8Xln8ɍOsXrc+4m_+ˍg y/prP&˛~77/Ɗh띦e=/,8ύOa}q?Mq7tca+[Qn,~x8^rvv@5}qr"Cd~*ˤLvQ9xDfR9CVSYg2ʙgʙG22GUrVN<=g1Ijڑw:;\91-.Kd~Ixi˥n*J,'YzK:rהIY͜,$2mYhY֕NSNWk|)[NܱȲ-'~ee,7vq36 'e3\yiέƜ_v9ɢNm9rŕ]NrSSN⤖q^ݴlGr2ˉN|9q^ٰo˰Ov~[./o7u6 | ܼ6ܼ ܼ6(ܲzT2o[n.:6F4/ݶ-P[.5x\4kUt~8ҁR67:m Hoj^6xX o{gM3ۆ;͸ }qw }YĿlW7#.'S:S]|s[T[ך]')[uE[*Va{si uYl]anu8x]e{tzZ`󼟈G VTg725 '箪IZ 1!a" t IF!9Fb;U32r$k=gnǽjUF+};е7WbhoPş0r3ԟӐ<]cq=ЗmȽ\߽ScfN):N k ^,u40@x@_< B_ / yx} 50 r`EKTA'ȷȯ w<ù耙0y`f`]\>`Zx@}Z[830@ou@ ­.xx%>~oշ>}?0O ϟ,c0_,P(NΨ_8sc0 $w~@hjPTFA 8 u~}*)KF}gI56al T}W 0X`x^2;.A_& la07 t㣀>Zw, @ y3% K,PcSqH'`XU|H~*`]@8' ov|cWf*d0,Q>.`^W[ gaoh@^t.d^)_zc|2 W D!‹yY>|(Fux>{X`>{‹=`.$^rFF@8puC'k nF/ψQ40? cs+[g*a60,~{X: {bc r`=.P/u`>ɽ kr |X  .*zЕ ;gbU_PmjH5T O |cB B7 64SDl QmХ?5XTvF4 Qm`=Rmxj"5Tχ (Ն8jP6Q vKlau4TV 6jf#Qa/xw6K4|AX K@-s`>yӠ L˿F2mpk`:4'OlCf|N0Fy:7s 1 LC?V,S fj5Aw ج©.R[uASjfl(e]= l z6#z, t5#C`6 S9JX l L6HV x^ l`ef0ifC>8 L6 Ղ`j .?L)T`TK`N wjpSld%@[-[` d |l ,ipqo}e00'6φm6 nW- 1S at肱A; 9_؀ ZTHn`5`Gw ak ܮr` [$HB? ) +-ADfTq` ! Щ_u(-`%L3IEfE~> p5FP=@0s Χq P< jP'tD x%,J~{$0:R:\(PTPz:O AW+Hq^L28&zB XG!T5 (`G" :قRW &xYVЭ!w&U& ) c&WxsP ;%`(0` |uK Rcd 4KL:¿-p ʴo zB@ XcjQgcoO]o? "xYf%Hɿ,L2._6qn(p]B6WE#ϴo U'KX_N5"k t[ XР 0(@X(PI8-G.o{ $nwS@U#Јx_ CiE-3ޅ/2.9GHJ`)P: ~ ]._'%:E8%.%/NnN+}Z sY3fbKwƈAu"o /Coa9^ס{ R@$ jS5t/c+#K@\7lN~ &I`ey|ſ/b%`[GmTWKPL _蕏@r"mY <7s > wʏK#^`m0pAɕÂΑ/i@Ke` 3|#q x 1q/ >Ap5~g$@ </ o ˣ*|4KO6mt( \?L{) L}xP+bk8^!P>_ s>SsRK`}X=Bd 䯾p4Çe#^͆݋M3 o`;i@ 1$6@>  mN}`@8P14`F~@@>:$|u~ۀX60 ipP]o!ˆWA"dPY= |4h& .՞ :U'` t@"|c09^؅ۆhאE"ua${dF]k9~eJxo>ȯx] 286``X&a@Q[/ `I]* D*2Z%P&6uIZ.d 0' `@ b^@X2riCߖ ;-XO` @X%,ÙA~Р>\icC_ eho Lډe`; qx~i>ją64??4hH|dpq mE)`~Oi0pƈW2^ƃiCˆWe!$o+›ipC.a<8<4^|A|hN+Y4( ̀,|C4`~h>Cy تudx {D9?iW]ߣ ܢ&F? [vuMwpx}@^H{pK@}\h8hSqǀ:p}tנ|^cp \čA6pϣP(p@pϧG_@/p5z Wu{ C6v~u 5u? 3u ,< %> 55_ 5 5ߚ 5| |fCfB}inl8PPcAzߛ ֋f>'wNy^ᱳY;ൾafO c>1_ ]^<;`̇63_b>̯n]_NWrZhZ|0sÊρ;`fw`fi|;n^|2y̧03b>^݁2WX8?gz=>z#UkZoZt6wd=mz T׭ax?kvf=XuX/v;rbYW][|,XSX1z9\^ֿ&Wx:yG/oyny}|޻y_g}9\b<lC&'۟&mG__mN?n_|נ|7|t׫}tG~qw/Oӏ~qՏ?0M0oF?p):[< ¼`=```w7#c ݍ otb.~J -龸nC`߁޹lO%v`*<֍?ygçy,`w1%^6Ov7G;|Z7 43uNr}?O2ow4ח gB~}?اI}s[v6ؙgï'~!;%;)mxzg?%7n\mxyvy<4?/ h'؏@ A`.? ?/5~)4[hڏ]'_C~ ~Ds;~-I7G_E?~ /]4 ~pm\㸶5qmokۿC~ ׶B.dgz?~%1L.;& P|Z\o_~,_rw?_e?d s\;溙sy_t.ߏ\㹺su'.toۑeg. ]+GuW|~H+KtU[*y1]PƯr#~N{HEb&I]o*wU$J~Vu]U;U__~Y~iK~[uU__~]~iyחW_.~`ªŻ_?j^ʴM3~o;*_~jDZZo[~(U{m`m/TߓTߓJnK!=itK"{nܧ9~yw4?O/4~܏_?~}鯔W~~g+?V(~'`A]G_ankaMq?1:zzݏSmno1&:;PX~lϱD=6?_dhO9jV?e_egZ.c[]0s^~yc6ǦZL }zʯ_?WkX8 ?~ Bs[B_^mjKih+m+44M5]?Rx%զX_~y;1~|n6?'ʏ6/նbQن߸n[̓ݯrpcRMĊ7^Qwշ?~nO/8'1Ǐ#cqs~ ~ǡ{rկ_X3[N͊J)NӖs\{Oz~ozo^엽'kvoʯ?M_7=vn=-?mi7]+?~o?;7`?t/}sc?u[7/b?moͳ|ޏ_1~Umɛ ?㷌_~OjE/Oy߾ǿ_y9m/+;/`-(O@A8?'o`-(+X &`Mp+`g+,27y"sXly%s9?Dy&w2{^y)sy2='oe+e>w^hGy0>v^ɻ Of6ʛ'Ey49/Fy5')gЯ4O(5 R I r.UԾaɴ!WCtVQi !Gd[gK['^SO?Eo Fv1sV5BκD8Fv6]0D5 kxD8'ahK`_8 9.Fg/ W*1$db$b㟀‹\ /f7+!D0bųxR++TN@\L` d +_Jq&{Ժ6ٛؒ~zǎsNbtV1y*2sxm ޼%m{Y(T. u̝pɍ9^_ s7Q婠&tBHvf"D.͈]`uš1lNوL:y:Y~:jAVױNDlBDsxq%|v&PFXWFM16\$0OKngGخOˉ|vsҪKȯO:,:N= l H?P =>'͡Ǝ&1@|䊝aʕ4+G-L昢718;YlL8T*fh~%I/mE3 )\ lT^G֓&lRsa2HҦymp}spҹk$}տן+[ǿOç|w??@p: \Xo?0'vGcdO#qw)U8S_S'J_agG_wtgqTA?_nvC/3Jov[ndθ趉>=nۙy71Tv3}|ӽwX#ήb;ꩁGνCyƫQ\r0d_iGe1rt\d:54.{5hK4x= #t#w45 X|z @iHٱ3/zz>_= zO<4+|G2LS5i1Lĝo&}xL*4WIǟFv͛&&UOw\[s5wk",o␢)LI7&k,'$I']3Z/R*p^xnjU-iɽq{8J~įe◥=)6)݃cxڔ0s3KXl.<˵Kb6mM+x)^r9Wemi;نZkWNiM=}r/j_h_lm/vI?nv6vWݽ;}>W>96)Kv a \QE[~pn WS3vvW1rdovGo9ў=ϝ'PBt;Wړ˯[{q©mxf}WG{V<;}OynoVM-s9|rA3TsٜC>tswy=wAB9Ihu%uz%_3&4{V9Qhr§_힪O_6POvoBsՓCszruNVϹ6!9[hsL\Rx¹c\>93V!C[V]}~cVHpΙs9i=}:G%5:G9mb:9n=}!:1Y7ΉCkT9rh΁9)CǸ!_ԡ97s=ιC9xun!䌳?>Gz:gρcFվ,rrs>S@zH{>4!TҧcWߓ B뉢>|<(}yA}>?iӧ>CW&z'=# Uxч}K>|IVUhƊ]}XվkiV}q>|TRS}d,UчVGZhʺ;]}n7>jA} mO՟n,}|9p}Y0CkR0Cy>zt HC_;mô}iO5ծ|Tkgv٬N}5B>ΩՇ[O7[G>8 4M39sw)xy>Kk>i?iMnv684RwsP}jK>КjɜPQgiCMNx}fciF/]ߧC>>}?ߧC?sZ,"9 WAuN&ALn?U#4]9BKk'z>8<W8O՟!O:w#zl } u|đ}LBos'Y \XBX\QUe'OBGz>8] wTʅEhr'GT/s.*9\k3ܺ-XTۜpJY7&+Az\WZ58IsBõn:NYh8hg^.,C+7N\mp pr䒊 -Z]=\8p39 @aYw8pC_apy*N1|pL93ܪonZdhD ]z%s8\f,^ܟ1e8@cY̅f}Hk45]c =khroׇs\nt^֓*7z 8-7xplB58;q±L.Vqơk`-qʹн|CZ>bsY 8SƏ} BA=Az$dɍ^^5!zroZ|BCn'" ᛰзW!jmLHVC> cߊXtQu=֛tF|8bF|:Bs]UJG=9 }C>#/IW:S|Jb[H߇|LBIAmB}>a>9C㻒Wl3&ܖZXt|`BKOLn[ut/|fBOz OMlc.?ZA|P ƹ-viߝɥNڧs'OhrCOPn5t| %Bz(t稺z')>Jlg0&;'l)>r3tOTԿ9'*4iPorоT^ŧ*|*cۈ"'+zzVhr{OWu?>^Jz{)ωDfy >c,ˇ,|Ƈ+}rs96hEg vz=ÖۦeMw>n5[=T Z>rlg. -!<-K=.6u}mGg}7鳗ۺ}z|ҧ/4So!Fl(卟 MV}˧04>EMya}Z\'14~Km'R,58Vr:ߜ;CuGXwA]Ov`ƶS Mx6^o>]pqQ>k#jіhhrsWMo|JCCٹM_?4|f}G54]Okr&~%@>վ|`} ͆9>s+<6CZ9 s8sZ9 Mv}ZG7!cs|zCohr7>7^_yL>G9|$ sbZq9>ϡ^|C`"~c9>ա.|:h];ޏ|CSvyvhrZt1 ;{w=ow~qyltO|Cyh˧y?9&9G>r3Z9!ԇV6B+U>q FNwuovԟ5~&gcWl䨳|sIOq̦\ GN@I:4g~uA6O䱞/G9 qG.A(> YXdC vWCzzQո\_>ʑcCrs 9/X/LʱcȆu~2&'#4v}z[zt~OǠ =uC匄^'7$sJXsR'ԉo29)oOnvVWeM}=R}M Ǵ?΁ MLW᜖DLWVrhBX/c_[ٶPNNh<)Gc>9]X'5~+'o]SEu89A#G(5>(g(tS&9Goɑ5#urB8?T'P8f:=+'*m=t=9KSsD&uӹ3ʱct+.cxiA}K.*\ c{}o=ֱ^Xo+', >U-Rr6.7r⼌l78sn||^A9 Թub|৞+.R}.hSYw]W󤜻l{͹{ CדDILt,49nO?9ɽcss@C\[ 0fƍ$Y9r0֓kj_r o][zay/ OʑL|E<7:{=j_r.gr1ڗͺ>PfTtd'8zR_WW ֓S|#ZGfLA7]@9վ<䘆xӺȆ&"X9E*6|ڄwWNrp͇n[ǐP}7e"749yzNp9&+p1ې\'&CWqh}98:Yyr-"i՘\۫溋s듫k99Сsjrwէb(\$s Nu{tOןM~xg9?KR/7vtER;B$MHjޗHj;gNz+z,Ny'M?ԓUԓc:0Iml^$\I=&I8I*9}]"W;NJpcVKF$ Y aaER/xԋٱHEHjo"7BF$͡'g&_K7vIm;QoS鉤ޤO`6%zIyzޜ骱aERP$^CDRo:DRoDRoFSԛR$L$1a-R`V-IӒ3&!ÓBv(xJhT>KM6 #uE9&:A/X]^11*9 v[ה&'xb%$ٺt։CbfCb@uQ_DcfeRJuB_:/i]m*PTbC"Pu2UY(ז)ǸuVc޺ڸUu/E\MfZU_ث|>t)>殫 e^'U>&k!AuZ 5_ZNƦnUx =h1CMMa;' ;eN9?k1D$X)2.X씀4A؄c^Vn뮯Yn_LvJ/%2DeKΉЭb؀v!ՔcD}bSC)eSb:N-8d}/uzjWg\3=tB9 6փhnS_<}_QKSO<O]?z`_bDoWgow-Cwꁾ[P|ƽ[N}=8&Z~'B8KԷ]_z~hח^uM}~i׷\/VֳO}~G ֮oηSSz߿Շ~W},3lC4lCݯa][}S{}kחzu~b~mv{ykחu~b[}_=~/ov?Bƕv}iO=v?uo=v?]zaV_lS~jןhOfKyz]]Vyp~ԯOk_aY۩o[Էfp땣+[[d zV{r>lwfpKW/W[[m]{{rzw[Av?5v֬Ȱ+4t}ׇ~W}~Շ녣+dݧ5땣]_z֬Էfrzw z{p~7Ulwu7שozN}k G땣+o GW3_^9z֬^aU v}녣{{k ,w]oze<^oz~xr2a]ߚ zuzhןh }[^9z?~j7O]_zhh+ f5o f"6+GSѬv}ܬvfާ5ivvf5녣7zh׷ b_` >Y9>N}k+G^@SY/O]_lzh׷X#Ѭ`z}>lѮolSѮ/zhh+vav|֬_h+u[^YO~jˋ/V >WWmh׷flS^ ]3ԮovS~\+mLbZlwuO(68]_2VSvba ֳf ^ofa/ׯOWޓН~z6lgvelSS]lw!glwkl8vz vi6]lw]2]1LXݡot>uu}݅ 5]7]̦vz!v>θ5]Y]&݅^݅^Kl,lwlwlwfv2vz7v;6lw̷`d]&b/boݲ2VW .Fwng.LczbYbbb/n{Ś.. ,b`q` f` f2.}vfBFbo3*.i. ]]4]5]U]]Yeq?v2Hvev۬7a˻lwwlw!lwYfv] lvzvGem.;Bw}굇7h՛]av۫lw1q݅LŬ&lwlwfv Vî.f4Nm,7v/Remev݅L.e]YballXBBb lXbf ^fY(͖߮#lw1;]ce{.fiaY+f/+ ]]7]*4]jvf+[fk4 ۩cf+fY0Z``k1K.Yn귁N\İ6Bݵ ]͢vWȰavWhvWmݕ^լ3lw-f돎5nxKfk5dʛf/`@d[anlK;fEdVbk5.6\lwlw[lw0]:2]+l&lwlw5{]>6]]ak~fa+f+ufk5;-{hVŚvW,=lw5[ ]3]ݎJ M}ݯ7]x)5]rvWvjwZ"~j Wv}bk5\Ǔ~zk<~K lSaǩOlwZlwwlSo}z^v?zԷ\Ѯ/O}뻿Ԯ/-ʦV_O=^ltѮoSSx}[5r|^]3Ԯ/]5rx]9^zW?`ūlS5RrgάogM։o_=ur4Y'ԗ:9Ez}?άkάmݮ\]"yVn3%E}Gsqն5Sq P'_nku6C1Uc'< 4k"mV>04f8 *€/ }nam10kc8&,a* 171oN_a7-0h19@ս~FFbbŀG7bb0G(1BĀ_>ΟU]'\ xt@Q+Mw2uâXGM xhyhy\39/d/JU3l1ߘ`g+YEbc_î U~i'Zߗoŀgk,<[ xZ4#<[t}2ߪV8Ā~{E xh}bh? i x5tz^xǂdƮDUtgo <z1#O<b[<4|ke&=ڧO<4 x-iZc<4UiկNo0Ѻ@ x x`M`C+Y x x:ߝuh=ŀgkdZ߷Sfof`{a{a{a{a{a{a{a{aC _{{= <[7:o/4yK7߿oU xsO" x~#=0ࡧĀG븾OL&4V V}aռZg=0୓.VO xOtf \T߿1䧋 1(Lv.Cw3Y1Dz3]кĀnO1'Z#}LJY3U̥D~O x09q -f[ xhOj*<@Xܬ`]c xhݿb]?@zMO6 xٟ xh`m(i xn;73ɀ'YL~?ɀ>xĀ':`C73߱^mʎ7 ͣ.ꟼ鄝ɗDz嶇s+[Oyn<zRxg _-FJ x1YI@g}`C/w>gsk4Y"DkXw>`׃ xh}^By\6: ?pМ3o&2Зugo>߇c0_oK}9 }oZy0ࡗXl3bmY2ɛ.ӌbtŀ)106t6i0࡟ޡm f>LtR4?fCW3YD|ߺ(Mw6o'MwL7BhތQ7ӚŀP xs xhoŀ'im#1ࡻuD޶=Āï0yPzOSu6ꅮֿꇾ=@C̀߭HQ'(ŀ+NνNζO=>m<ޟÀ5UR}2aC+] x9 xN[ KhdI}  Q   ?~wק~??r(Yd}oǿo~"#{ ?˟}ͱ|8x__<# endstream endobj 206 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 209 0 obj << /Length 1278 /Filter /FlateDecode >> stream xڕn6_! 1Ë(J6`[֡ݰ=dyP-9QkK$\HY{EsxZF~]Z\)\(jTF"/L.Qq oRTjs@H nGc9~%7v=6]{*llvڴkؗm74@7cRȘ?0F`%WlR' id撯t*S4C/L'̄·ғ4-<*ax5ٖͮ;Ҡ[_%\1dY㿼wJ?N5qUBAI!~ģDtK}F 昍t6] G!" 8,Ǚq2. D #BQNGo'gUBַ .gv.:?um?pJS \`NDz#ʞ]9gH$PԬx@c>8)f1+|!22f 9C!_iG9ԧg%c!OZؔ :*DbBNJP5B?JRѧz_-Ν#Z-@PS@Nge6(Ʒ0 3¾(9Xj:څIk2C)MJ?R Op6Ks"l ^w~:?aKZm(> /ExtGState << /GS257 214 0 R >>/ColorSpace << /sRGB 215 0 R >>>> /Length 62456 /Filter /FlateDecode >> stream xK4M~E/W*3/5Fƀ"#XM2e м_:쪮"'/ۿ_/ן>?=s|>/OR|_zS2>,m*\}}?~^gs?~?__ݿۿC}_OpϽ>>JRݱqֻ;?=ۖ;v۟;j7wly/o7ï@Z19sZ9sZ9v~_s]6҃Ki GwWp_?'O>u 4=A.ȡy}sMhog/!/Z!st|l푋7?x=rq{g{Q M/!{6|,|呏7\#Yq+[h!Zb=W\E.ރ\\#Yq={^#oxݲ9?Ǜ;n#oG>3{hxxW~VA{ᑏ/Y_G>ސۋWxO+?Wdv{֗mh]>ރ\/#A=h|翷G>^nx<wx⎛.3M2^B% C>SG.޾|鑋z=h㪏B5I_Cgex=G>޳|)%ʋV/#ox|@}BYcZw pc+0}+YvW* qǟ6;}`95Y+]1CX>-q%G;%}K|=}! Cg)r?hc5 qwV`xnOztu%}@䖧tqj!nZugCRv3Ɲ1Io+]>nh qSm>}V|+}˷K!n>.Ÿ]\ZqO'CۧC;Ɲ>N\qK19@_!]Z,'}^}*.Ǖf?X`|~\8>#/R{ 0ĽcۧCe!wHu|n/$qBv?-~J<tiY`}.0>Y/R-C!3"%s Cv!qOR:}H%@O)]F].`}/017uOT-qw HI}rz>T5@./RX}T<մ+ŵ?ŸͧCl?0!ٖ"{$!|){! ɶw>ɗjC\)[>~+5Ǖ Ǖb㶐lK=ɶTW>ɗ{$_*+wd[p IC|)k>Od}$_ql I}\(d[rlɶw>ɗ¼|)w{dC|K! I5@>eK]_H3폭>@lק qO'C*Ez 0Ľ}-0Ľ}_2<ĝ>. tv"%}ܧ wI@{_XBR}\)!nI$_`;bm!|!*E]>.lק qOOU|>=@l q2%}\)-m>ɯRC*EKO']-0]>.ק*qO-@.ٮR]-}: qO->vק*qO5tv"m!Iw$_`C\)[>]]H5}`[-m>v qO'U`{dJ>+]>wd[+Ez}KSRck@.ٮR]/0> tɶɶI~"pcWb*Ez %}\)G>W>m>]/$_^!nI@lW)k.>N qg|-0]>ٮR]_2}KR]-Ǖ"6 qOW!nɶ-@?ex{$_tqgHHǮlK!ɗ"}|)ү}\)ݏ"Ez 'OJ q[Hm)=$ qGHH$)C;ƽC-Ez 'R$_tI1qHqHRck+E'R_d[OHǎK> ql?0ĝ!ٖ" qWHqw}ݤH$_۞2Vl qO'M; qG;|ݤHod[`;}/0ĝ>o׊qW}-0>oR]/}:tv"m!nI$=Uycm!v"8J!IwŸ'C|!I~"%M+@WtJW!nIǸ'Cm!I~"}xcg;c&Ez %C|!I~{rl qH/\J^ q[|ݤH/d[`;|/0>oqwd[`;}/w$_`}/%M+@l qHy'C&Ez pC|!>N qO=>nl7)K.Jq2Ǖ"}0 t&Ez pcG;boq_`xCm!n qI^tI~{p#]0 %C0 0 Ca!nhRoqH@l{Ÿa*@`3Lqg h3 qghR_!nqÔ7  qä7 a\=Uy=@?]ah@OWh+ qW0;Vq[1n hR}7 c0G 0 C0KФHa0O 'R}@w>1n n1n,ق&Ez';}ǸaI^I0d 0]1n3+Ltq$KW d_- #C0t 0 c sC0yП< ]`+ C0 -aA[ B/%-a0 %2r!nAm!nA!nAwƸ "b`*} {"<?{UR\Q {OB\Tܾk~P\7< {*]P\{}))vOqX<8>w5wPܿkbw%R\ `X2 KE2,~W`k}h~+v˻՟(A>|w(nW౿obR\-[OgcYY@y_}*.2kňso{8?Mttg}\Aqbi^&"S(R1r$Hq9'J~dX b>Mq])77TRGE?2˂eM<_Հ|՞7Um?ÛsM (^oF-3nq?#]W\?o6/xsM[ }~b+>_[.|Z>o ĩDR y ,_]y&+7zPPM:25 OWJ5yGA1.b|>,Xq!Q\{WsLnbCF0z;q?33u? kbDI77qsXJOkGLq'8~猏6'Č:~)+NFq|ϟM>h3t"~bCS}?t@7}~xhxksV0?nWwnbmexO =kVo-^z_. tōxtR܈^n>زR-᥸_p>○~aMq?a/Nq#zbÝ<Ņ9 mBŝx莵`^jy}4S,>`B'f|^V`\+R\ z ?P|_88q}@AP >hL(. ;B0 OP܈^o`f(R/`xOi"n@Q/_>D1)#c+WtXoQ܈Fq!z\oQ|KpUh>/|@* 4H0Pc=Iq#89KT1zqwQy= ףX|A*1VAh]qKr]x~S|}^J8+/!Mq|5z=HgS\>/MISY=m*nJ' % T5O1e $@{ {#!po$3dڍDƽŭ'/q3Q&qoɉ{c ro,d[nbn|{c@< Q/t/< dSSNt[ ?Y{9 u/<d. {! !v/nd_<̈́, N{?xO`{=4y'VF7W7VrIJH*ɇƳDNO.xi'O<=y`i =Q-od?w;YocXy(9F.>FN6fϞ\yL~COfIfIsm'#?xJ\99nl69un$l9ύi=scbܘ(9GPrb'46;vُݑ p2?67; 5Nn v:;O*n4<}̺l9 ;Os2 #hvݎt8"s6ٝ͜w;f{6[˜ٍw;vcjh̙"yn\14n\1˴~e\F;?6C}LXmfL9 ~lkW>vc*lW>lrLEMѬßi4y.ªqM8~".^m0'6(XŸ_vS˹>gv3N_˻<.1m }"n`9(=ovL97;f wcBRE1] }^Bq&3wᯏ]cs_<}|>>&Bey1Y`%|bXH}ǜcu)'`śH~~lzv_vqcv[fmv"6!cks^>f>'gc{->c|YYei&ײn-;}B_N_ ei&ؗyo_a}Yx{sk񽏩Lbے]K/6-9&\h D:P15b}MP(x VBl3ɕJMVBJUž$5ےTdXJRaY5Ş$4{-RuYĺ,@cb\ _dwPbݼ".(_,vn> PX;RScHōEV8gݿb)@|+UXdXPdYNԲ$"kY|vYN_IְWeI M,ڄ ~A͔5UQe ;qYxղHybG:/ E5bvy_E6eVGGQQF`5"Q7Νq9`UY/x)TYYu|VGV@ՐPh5B!+jX LaWhQHU>!5VR@EՐQ/i4@5%сZWkiEH%xiZ$Pi5>4VCj @}ŜQ9!sB*OjT[N2.O_VӯyqyWŸ95թXɏ٭>gZx[T[> KUЊ1 r*-&[lQoro=*n<_ NSspn/ Bpn;_]1 1ùA qn;ʸ<_|ύs#xSqnToW2ooBjg4.4%'8@/(Br2ͣdGnu0'yTɜQCs.$6T؜ My0Y1M9.|AsNˠ :'^ 3c;NF:Qt23uN*s 9H㩯:Q}u2s6dʭ:NnSu|YCv۩;oԓLը6;QvިڨT;oб7(N1.OPyvs *lޱPם.SLƨ;ّʩ;W`(GzՄ- @:-OIq,"|ɞ'ɢTOܫ ˓LP2O6٨ tΨ3.HePPΨ1.HK7d*Փ԰ 3'fԿ#A[`!|xAY{QFɍSr c= PQyi=H5Y@+|Z%qyWw$*(@|V7v qy qCW]RnB[tw;WNK]> ς*Pܡ{%|YPS~P?١~,n?Hi.u'}T՟QsDEyC^|ADy@'yw5d ߛlE{[o{w=ےP> :½ ½րýwsS^kNk^cqsێ movO܋o:ś͝8^Ӿ2ji_R8/S/쎛mzucN䕄=y%r!dŒ}-7n7fKnn侱<& v( V)7'L`rl'MnY-7߆ti8 6nv`!s{[s(Mn[ 6877`s5ht|+vfK]nX=p:AZhxͭ,aUtWhYonĖrc ۹A%,:en hj6҃`܉5$lG KQ=uaT$"5Χp{QqpE`88xpWV-rq ¾qp+֎@KHn.&ZIAInYтO)DſIj|rh* m4BM>ߜ݄:vXhiS`J+P yKXt$FZ$"$Jln%dKΔYZvǯ ѻi8O36Y|_ǂ1v^;CFk{M;{IUx{وM|g?ُB\3zך5ʯ_qm ^\үqk_WH~O|7V|d~k|r|g{<|swĜ$+>yN΁|~sWŜ+c>Wy\|sØ7Ɯ2>yja]~sߔǜ9>׎yx}sǚ uFA|}kXĚ'CVuT|kPŚ|-\C2֞.5kg}\#9ֹ5yc-;}sЫH_ Z$G%WR%fRh넦Oj  NJͦԊJ\v4B,5R-5掶o꥖ LLԈ<ڔZG4GS4VShˆmj NJN ԩ}4};5s<5֏{hʧ F±6!ű7GI'ǶJtI[2džMI=q+(mHa)mATa*mn1vlMvlȅFM6'eLǶ4M[k؎Mi+7ma8m!a9mN봱}l{Me~lFH"p< 25!ZC =$JAtDHTD8h( A$G$QO1堭RK@IdHIDH̞hЙ$(:Я9nbw}'Rx@7OdH">j~ 'Z _8A68F BcHCiiil# uc $ac$ 14ĒF\?gњ0xrN9~8P:F QCJCJip Oi8 Ui* ec+{acT1{Fڬn{Fuܬu{ՁzpVç:qT/ƧqTGɧrP_̇zsVw>՟:tV>եtVYTY=T׎Y;wguS;gS]gu^OOuzV?;@v] dw^ N莐Nw辐{Cvw8;Dv8%Dvt=tٝpGt!Ht$ٽ$'%*}%drDwsDNk/7':}'dsDwt EN݋~ݑ{ݗ;SvoNSpQKENݫ~ݱ{ݷ;Wv^WtaXtdٽ,g-j}-mtp=tsٝ.ew.e]/ewޗNOw> {av70#f]1/fwޘO#Ow>)On/;fv<5fv<;gvL=w>IOnO;jvO=Ujvg=[kv=tٝt<?8fo\[v3N;q>1_̿z]q}n{~(0ۭ/_pv+3Ypq;6DCgwٞٞN=o}IQ絓js}wt^tdm=lz73[:)^u'uzIs˾s*z㾐zݗ],[evN/|t$>/l%@cNի|vΗsާ}a޷c;7}I `{3>2>}tGd|ϯƟvi >MR֛S}Z~-mK>֧c>׹ h^?#i3a٭|s>YO1O|Ȯ;G-_Y>o9hx^=~~n6 q'me}_Ym}.N~\%~[9->/YkVlM>mg>bdVp!.8>l/A Y/w6$8猏z猿}^b)`~8G?o?ay*Gn+DWcw?swt`?~%{SzW/.~N\׋Nzb?w^_y_mn;wu?~Yo֭~d[}~\)_mn_vc[~bo#?V/%{;{a?SWr}c?Up!8~޽k;'m?nwe[n{~t~6cb?[?^y}w?eu /Gߋߏmw?[sO7o8~s?MS~ K:IY#ۏEzs[Y~P~QgbISڶԭ?z:խnjuClF~5s?QڶC5sm;6m'm1F-ۯl~f#;f>ж|_HFoms?QkmF"7lYF7_ݖ/c?Y~qNoOsM~:nwfe׷m<&[42,%_h|1e{4Wi1H Iue|4nK䳴a|]ڈ|6x?/l|fmƗ#B||6X?0>B5qo4>R7,?$Y~HS#sP$_qT[5jW!_Y|fjckƟ!_u;?ɚ7kϑ6Z㰠ٚw5;?Z59nߌWq|5 !k5#ۓبRa|||F$#6 _UglT3cOU/vR/@T\>/S0 k \Nz*/EOcj|/f*v,Tp$UrX->`*6F,cYEvZ|̉}m]ګxZJЌ ްb{-X ֱ*FffNc< t ъK J}m^O\KΖznޯr+6_AL^6+\0WUő;` .z#x^66`V]ظ}ߛx08͏ Ҧ PÂ* 6Wb@,~^|i <:وO) NSJ [Y ŅxNLķ1 z(.Čc"bD1{ƌbo6#^^6k}1=CQl87J =* *H{ljH0T܈r#IU~lI0GtI1f&3?ⴔ`?7(VAZcZMn1>s^1,Cdm9ݥ#h*pTjKPA|_s:NmBW0~l)pnDQA7c|[L chP1cP1߈O), ^nQwT=07 K ,F-ۜl86Jm6oY->1#ӚsSGLc ~^p~U0?*qWjXx0;fi+ۂ2sw-8ٔ/c S6^?f lX1uE:nOby 3 zZah6:-B%_Ԋ%1V|m }3> l]׍Ql_:kW|k|lF\qBORxxYHȰ(c=b1kQ9On)/ꂶ֏(6qy=ЍŸooPmף mC.v=TGq%p5?>ēbī:UR|}^Gy)ϫ>}^q?H*J[|D*_)q^a,f)\ ;TO9>(/13)MPR\? ^bz L jcG]WnaSR_g[P:S>BhʟݟW'󂌚qUY{aS>/^(z\5JqAN 1>E6&suL9;6bӪk8v/wʿWO!d:T &;q#/_z& 5 yj*޴ %C盲I6Ňddu`'@ "|5ua7[*8<s|! G*.͔))WbCRC61!I5ST\ Ox m棔T\/+ӏz,],>*6|B_'->2:4曠/ wމbI VŅrUpE\9WČⱊŇb(gul3>U!\[._b_<2Zq~˔p /-_{!2 GR v? r*.t'^*V\54zԗoğ]|#4iiM |'utW·4mK`?ЊMYBZoI\Axi)k]. z4u&;Lm:O<w>j:܉'_R/ؼ4uOtz7̓ cڍxx<8hPyN|a'u>}7wwޝ:S]1 w'u>_oltbƧ|cW|3>z{7gKo_6bUߧc~Ք^T|_8 O@$*k=~@+ S q_rY~zh|^G#8;~PMx~z#}a,z$Q|uz׊Wb _i_$c~q0SJx>0z4CVk$f[U?|=&D@| qO%f||_ *۲ l Ѹe:k̔`)Im 0F&D+h_EdńO6yl{>$h ˜g۫=DE 69Q%<6f?dd&ۃoѾ_'jp1 I'ia/(m{˴g9miZymeyN9M~Uo!xYmsґ kS]YZ4ݬṵi6MV69ڜǗ:B?ys`ۜtf7&7D.I[Ỹq#r<9jy\;!\zWrUT&\Q^(X+<.I4[ xc.J7s OɹFmNs.$T|\s%O3x/:k_$^st_{.ߏ^qg*?oYi~.5#'~P^׶5X/Zټ9q]k~~wE|wwS|owZ~wa|Owwo|/wv~w}1yGIrsG1wyU̹r>s17yc)ssј1Myq̙s>s혇1y rkXg'vuMyr=kXG_6 u[zׂN5/cXz׺5cmn_z==W=؏ Er4PB{%5_Rk&5nNh0 lJԨ:XɕZ`G,Rs-rg܅^Y̝ܙ<;;gg4vNsg5w^sgn9ΝyΝs;۹}vCΝswVKޙ9wnN9wQYJ;OygꗝwΝsw[ޙ;w^;waY;ygܹ;y;yg5s6_vqY;ygܹ;y;yg=s>Yp2"!3NfD`Ndf̌q2C"s$3K2$3SNJddɌ̛̙̬9;ٓ?'3(22(123Rd6eɌ̩̬̫:[ٕ_'3,22,323dEf[f̸Ȝ̺̼̼} 3023dFfbf.ffcf>Ȝʓyy2C#s43KOidfjffɌ ̬y{2#s83Oqd&grf6gɌ̬>בۙٝ'3<23dfzf|?9'>23s?33 y< yr!O6ɇs2"NNɊs"Nfɍ8ّ'?~ #y<)yr%Oɗs2&Nɚs&Nɝ<ٓ'ɠ89'ɣ8'dS|:'Te*Nfɭ<ٕ'ɰ89'ɳ8'd[|;'\;'d^˓}y y< yrl̓dd̓e̓y3O~qr4Oq25OʨY95+ʫQ5+ʮQ5+fج,{*eڬ\mTʸY97+ʻQ7+ʾQ7+g,|*Ge\|*G㬌r2OLOe|rvV>2wV>wVYYTYT6YTNYyPf{T~r|TY>+ןQ>+QY?+ge*G p:Dg< s/ ;# Y!;/dgp:;D q:GDg<)sl/35FvGp 8DgȧsrtV˧3stn9;CY:;O/xk_fߧ5a}\|\R|}wﯿyނgZƯ²c[ޏ{ޯ ->Wߵpyql` #_C~|~7m\?b78c;˅V \]_AmCϛ/ \>ٌ|S0=G[4G0X0Gn_eM|Z0/ۊyiӢ| ۼo!u.8`䃨gmlqR3~V_zKc^|U1/=Z n;f|,֛/?_zU0/f|1ֻzWePOk@=ތ/z]p1z^~@3~' ~)~!7{"Hq)g!|~n kE?G0i{^D?0?/jge?Im7 ^V~`~`/$';G F?UZ+Mg}f/im6Ʒ6Quߥvxl>B+XEoG nR0O읪r?ThG5_Om6/L0O ~*w5Qh`Kr?fol-x~+6Oi&~xHĔ҈5/دoe/; L|zo7/zـgvK0>^J1+7a j|>.5oF|)wĿƑ`}8kOBf|/#*AO#+6uo>ǩ&BҴ`\oz/&#dށo&j|㱞ϦEm|8I\_߮x_Oi|Jf=F>`/G j|WФI|DoHZgL>@|ȇLfG|JީZ0c ߷"[ET)_A|T/o*;U _},/Jsu|W?g?V/VC~D|f]$yy;@|_X0W#߸˻+|f >/Y,֯q}^`~_-k35/䣃-wK1iLFf|v-o >&1'g8p2˗L'm o/ .|~ˈOy47~7 qb^A/{'uAp '`ΟFL6p<_k϶?ym>D/wy ' ̛ƼQg*93|)c^0m}ۼ̳pm3_<6n^G0rHoM$*9RZ0O9T6y& oKmƼܖ0%F|{1ϥu!8|k|{aLo{}%6Yr^-k`}L+JLcct >:8!Bˮ/ĿlQ7^s񛝏x|tWpwm\ܼ.~:.S޿'\_yu<,><0(Oll Fy|'0/2u_Am> z q?`ޯ.ܲ/#zaz gPaP[0lkaO=Ml5_? wzaPz?BB_3XO'!z = XoгxwQMzR g`<_ۨ qkyFG|7M?D_W=k ym"_V+ &ڽ;F`ܟsO^F_g?z2uz_G#z07Wгz7#~e Sy=H=z*dLG0EF^jAR/ 7T{@H2=" U/QH0_A/?zJ/_zbc`]BoKӪyCOz]=j|X}URza }>USLp7= BϬ_&񯩗izj5c4zmSI =8Ћ[]0q}Gizuy}u#ڼ4i#|Czz1'86/B=?IKګ+N| SP 5߻BPy %ͅ~3 (oKx 'zlc4'5߫okzz =IMtKlAR0IWi=Y /.S?S0SoT#4k3Uwm ^XLN߼ }j`_8uz~.DLtğߩj+6oJ=SMsWC/UˌE,J3c hA*B\,Rؼ1`SoWbc}``g .yU=[-sg?zZ uUHP0 =^){}.BcD=_~ղi_8*t$5􄵬zRF=b>g,S!WW^eXyC- =jzk zkR/4[/0(Q-8ߠG]MσzZicM>qFo51^`-__qA c=B/_U~gRFğ|_@o>ȫcW.qYd)COAzq@O]0 W?{5)lz =wԻWwԓߞgg?zZ7bo/S!>WcRxC0WW~52 hmx˰Ư_gjW1@_p7/GjtCBB,̯~;< KP/[p7+G e<&vALXQM/~Z ^񧝟U^=,(HXbCeHُ~ Iޏ#_|C0~6h 6}ÏD0CT~&|CW0ozK6W?i_x}PE0o  !ri; ?L5>c}`~Ϣp`F`#m ˰˩pѶv#xMV=[?fm R\V&Hp5_K!mk,bO}=Z kO}@ׯF.QA5ݓh$sx/I[HsS}n@đT+@:?)y\3Җt84M6<<1?fpU6ytp*F56;cHoSZ!v\es^].06~ɆX)ǡ]gbfixI .f& }꬘|fS&iҺgj5դQ<׊0`ƶ nҔ 38mQsl11BKu 4#;kq]Laz']=}L.NKO njm,IG;ӞI*04[@i@̏ >g/~*Cϓ&x01~|PY#Ddވerq@}UQp]>a(E^g1j 趗'GaIzL%M #ܱ".U$;)&0V88V u^x]J 00gQЪ@)5a)%p R?r 3RiO)ToաZnJ2*! *4 S rM/Uk7& j184e(U4,ãU \UK1d0@ZWM|aUTO ~s[fU~̋VBnjjK?\lVՃĭ$s_s2$o^>f]EaRJϨC9 Ȱ~v u_tsśw3܌uNǛ}V_o1-npO^6A32 ,ȼ8kfcy% Г5ܡo}s7p gQdfܶk555~*#u:h1v^;CFk{M;{IUt#yx#x_x4Ӄ{s?22SdDAf"dBf2LȄLIq2="$3EN&I`d&TL0)s2i"&3q2S'3yNOde$LDLd:N R'*22+12Wde$LDLd;n r'.22/32dE&`f L4LTLƓ) 22-3djF&gfzf&hfL4Lԓ隙){2i#63qOndfofg$LD̙霙Й)}2#:3Ovdrgwfg$LD?ɞ '>23d&fyR$yT y!OBIs"NZIsR#NrI< 'EI8i'QI8ɒ']$Lm&NIsR'NI< 'I8i'I8ɔ'$T:'U:'$Wʓ`yR$ fyI8ɖ'$\;'];'$_˓yR$yTy1OBIs2NZIsR3LrIc4Oq4Oq5OI<){NI<{NI<'9I'$9'sΓҿLRI<}NjI<'9I'$9'{ϓ$}ϓ~ϓY +JAi +T AVBJ BTZJ RCTrJY "+EJQi"+QJQ"+]d%q*iDq*u%HT J"Yi$+J%Q$+J(Q)%+dr*D%r*D$fͩTlͩrΡxN䓕~N%PV":QV::RRVRJKYTjJNYTJQYI*)Me%_UV:RVVJ[YTJ^YTJaYI,+e%S,*eS -*e%N䖕~QJqYI.+e%S.*eS /*e%N䗕N%`V"< aV:<RbVR<"dVJReTJfTJYi3+qJQ3+}JQ)4+FѬDRiT2JjTJJYi5+JQ5+JQ)6+f٬D{*F%۬t{*Fܬv|/JQ)8+ gD|*G%t|*!G䬤tVJԧRuTJקvPJڇvV>wV>RxVJYT*JYTBJYI=+g%S=*gS >*g%Si>(gC>+ݟJQ)?+JQ?+g%:D$p: D'T SCrrN8AD$q:MD'T,28SGvNHt N"Ht"N%$;N()%;XSKvrN/LtN2LtN5&;ݜN8)';N;щ';d's:E$t: 'Tt8e ):%e'i):1e䔝N'NDUv:SVv:WvJN^'NDʲYv:;ТSZvR;֢[vjNntNqItNt٩.;e /8e'__vN~tNItN٩0;f 1:%f'i1:1f䘝O'$OD*'ty:aFy:mF'ԙ<B4HSiv2NjtJNjtbN5;b4hSmvNntNntNotN)8; Nщ8;N8;!'rtbNͧstzN):;INщ:;UN:;ag}:mG'}:y?X3+v}.xx=|z93`??b{woy?/,s|F q|C|Lqtx6=)Owz(=o|ãG\sZ*XI{ZXl;c}noxJlQo^o|ÝEh"x3>f޴/f_>|/%8~~ /~PO-"._]_o|íxO x>o|}D|-|/7S/W_p_~C?8`owcE\W~^˿ tŝxXůX?koNgWK+o|ìۏqzw=~P'l/b+B|gloW/^)vmqwW^l~{o8ƯV/7b /_g*^ČO|Yb~j^ڀ.n~A⿸y wWw_ 8ƯV/x7ڊ8_V/c#`+x~C/f߳Lz1mJw|[8~X|n ~x |Zbo 6b/^_Vs/>W x_ |*x < ^xbӯ}Kɾf[|oÿOwszoӽ|ߓz#^pwV)H[/. %7~|Lp_z ^i|Հq>/=_iof7~|ހ|b[Gv^1<  on՟_ob/~}^i?o+nj8ƿzpx%/A3+z(P/q%øp m-+ "+8ƿzp;敾c)`_/q{0/ޘrxzXo|7p++onoԈq 7Y+?v egk[eebVEߘ =D#Nĉ9{BN:s7s4z=<G= KOx}w~% ;_ץg\[:~qKo?|ƞ]+?|Eƽ~wGt+ƯxW}I~+//aw}~~|4wzp/,1pٯȿo~~ᾞ_}|' v}' ?]?O [|4cZ__\^?~ޯ<`X~//W}~}' E~~ɸw ~a׻_1v}r+ |'׿<7-p/k~u ~U_~/\׋_?^^~/z?[߸7N+>o,?n$_7~/\+:?G=W_>q{__[߸><}~W}𫾄//!<~8=oKxI~8?sx8wW6u|_aH_WW]~)}; x_S?D+. cwxpB2ǩK+1|E:kkڑ(j~Jp8-ooJo7@o4{ų" ? xN$_3īWqW^@q>w7@=j,f(j|6'tWfli|E6|Vi|6RO}5<Ǽ~d~M^WX>~GiOSz5oWNcv( k֡5iWHc+ѫmG_5Q/woT9Wkj)C/0?mW6ck'cǭ>ΰ~x<ڞ1|nN8c>W)c DZ'_;}{B_O&Qoowo1ҍ?7K__?/?wwiD&>ſ~P*B=?*~X6N LN8g"aɮSYo}Ծg86!pm ,tU;ܔ#T'.VG\Fqc"=A`݃n-Upƕܱvi%:,+b];B{=ɚB7[ݶҢ{zǢR7;zTtbX3!1Fg IгYj1S}$v̌EVz:hEOڎýʔD^Ec@ "G'+^낎 #!(:ZnZkިޞQ8-qz9?S-z3ʩw!ZV]su" i-u:^vwB|Cw -;:Zxv*չ% OYgA濋QM+3Jdi?\Z`);5Z|cME}xV+NlI:MHh]FNF[NX'}nKǨR;-=&:r0}U/쉴h6IF6Zۻn<ϑ*$C!wm)Gz7GzlF TG5mCV5iwNSwmpϣ6X<Л@Fw.:{Ɵsa  G~tΐVOr XjAB:& ρ71MFt  kVu8Z؁51IT'w`Kw8]}ALmbEӡdv& =12.{V{Lv^ q=cWsY6އ>՚Y`!c1̓/*R3m$b8O 01qZӒ5L]ab~Mjv0x,s4  iJ46"M21AMk:X8@ӌ5;+}I]'uuj6u r\o&b5(3ECLrgZqfA5t ˙Lx9fia|"R5jIڍǠvN3qgq,xySס JgznPP…,|~I"YH}VNB g%gSsIczT#e%R\V 8 J)Wf&:t3RYJLGMJ1c>=@Ę͹Ә8uu4;'N/P'zO`RIcA9 5j⚃+δt(bA61`6ow6W5_AnYܷq$Lsĺ9Ż[9ڛB^7#c94Q=/oRxE`+pMen~NGo꒜LID饋xNh',镌H1s.>(DO?TsW\5@^u: ]esn&^$*HbvN̓(BN: =dQzцG=.JN J$F"Br *u++|ozBԅ&v0㗗[/vSW>Wd)eNqW_̭@y ScB6; +[zP{+;QW>$c%XYMdTGDK5i4Va%# r8< i! w#+7KWn,ZhS=HWN([R,MJ 9^ܘ;f 9T5^U0&gGjjp}(z:?]J\B2YjpKV%QZu񝒇PFXeٺҞŌrm9S¶Je|zײ1ATw3[$o&Dnxtc l~nr9\F4~ZE)" r {tƊoJ*ꈾ$\ ru"%\Qh.JRdk]4ͮ M\ .zP(rZ`w I]ãWHwA Џ‹ |k4.%rP7Q:5yᢏ zٔA"u5ࡡ^X/Y(uk:RWqw/KCC;&RH|9Yyn}9]59"Ϗ5kY2+ }#zxrzs 2XlTy,GJ`-t46߆sjS;/.amg\GbrBd|gX4ٰoX, qwX0_?͍Qk;:;8 }%(kKC7ST\-vm8Owcv 7vI,xvFr~Y IrىFvF!MzyhdW<&dr8o# Vv+;{|l{̹!Rd sP37 lz}N46\kvvhs.y W,qvqs,6I u6Iv6Ixvqv,6aB Ym'#)@hVl'3 zR.Eۘۈ&" MI:0; v%VJ:966ܙv.* o]&jW2ڕ%|n̬lvҐ+vLvfTvut~8b ܏vSݜ=Ff]l#^@ lE(l7x/ZnZB2)Ё0ۍ,~!ံ7FmO7:6B׶W2gPme;_o۸-n%f;l6/S٫<G?m{(CW^1ě,% J^V~{8;Z`%pt.11Iq0. H =gwMē?\MMw=1|qO y3nG˺q{=)g7BɍQA\%Md:A$O  UG /707I27H4ɉ熅U~wqޛ^ CpmB7MnFkYX9tt;P{F=^N)^\u/gSi5z ׹uüuW!-!k!DfJ%/ڽcMCz;ܽn$f{;:v&OV$NA2ݛ>S#}Op`[`?ׇחKYP?guEOr`N}'Y?ׇחWΩ|k>9^دC?$s}~=Co:'J:^oIdJ`+7C>݁#>\\||qg<8ܶG}~3.~䓞s-Xz˾tu>:Xס|˧r#X7WN|uN- L׷W|GI9`85pԯ§`ݲxWnregW9;L}]1ԟ~}oλrW9 :X﷩~su<BGُs$$ׇ7OP\5ULL':@9zL*G#>olK\tLqr}=;qoz '_"9E;߯rLQ9';xxIɩs50__%^>WL`ÃKX 7ܚSH-<~}x}9\Aɉ=9;4?8_sW>yz=99GU9B9'g(S_ߧr&`)(p(G)k㜥Rp~t09u>+-pS_r&8>t9ڸ(.}).pSiOnuhW9{sCC9|V```LnT}Z `WNa`:sE9c\vbv}r+iTsW ʉ iW/dX lr8w07mE9+X9bx}n1Vl`ȩ7sl͹=XF[rtssv4+ܜރ%ԉx~nossC|~V{~nq( gnNr9K\mڃsssst}r%ϯz/|x̟Qc>ϒW'ZGIε.߳]su>/>_ 4O||+ɿGr<_ CυO|e^z'z;v 7߷3O}}߾Wt?~}=sb|gh=9K#~}ʮ~LޯY/ͽ~>c׫׳'׻72BSG2`Wdzwz(,z)O%zS\<^]9>xg3zy~{'sXo~hfj^_vn^6WÞrXOyxx^Okw=ZW=w쇲엲ROHo΅y\ޮONݹpp>O\ߟܿ_:^+~GGy>0/ r!#'<""#F<#gW3/(_=<%g[22 c2* k2" sr|D=ʞ2/@ |7># |i2|wC`?u^O'[L-?scaj>/zoM^Y1у4'p]b_>{}-"w$M ~3igk^Dur}=oԨBӅ:qL?}}b'2{)k>>a?.QhU/x>^Xȉ9YS&b`^5m~5i>h:xߨK >Oq}_E \? \>|})K褁EMݚ("s\ǁ|L&?A 7\p?A >\;A|(SW߭&t犯l>\s`ˮ_Ҧf5!'28w7|>3;~.]-kvkıAYNhZ$eV 8P9e,rE6BHnXPPn1wY-dU녰oo[.,Q඘XmBd wws7MH$BM rCC"y2Pn %܍[MinuƐy sDDy@n %ݖKNO-MafkUwvQll:hUW+ d7P۫1kn$dZ]-/ xWSG,Ƭ-n+8$Db5ɔw獥L]-&"ѻ-۰A]xEW}(.VfKwm}C38߯R y!يXl{|i 1Iw-mV8Y~e3ׯJ 6&A1 vc7ذ0?ɦ ap2NɆ 1:].hcK ÆXaC bUQĆ2ĆNy}в A0((jlmn! +1 0 f6 Dī/,F€Iټ曭M*mQqiʲy,UP\pXlYrb /ưb Ll!|3/s뚉69lo`gڹG9_L ulVݎӬ0wUI&6ۑϴLz:uqϰ;CӆIS¸jmdȦX"1ǶaǗҰ̖nX1WKa4l=[kRQ,lRR m=5NØjmx1B/k+Դ6IJ/vYmǒWE-/&6b`ln_.TxՌ5;0}زɱK5l쑃it4g}'޳ٟkv`\+LE E E Zs8a`,ha;aJXaYg% Ve]*#VurX-zf-Zf-:fM Uɗ+Q-e-X.f._ . A0?$\_P vppWxbmQⲓl}^e ׯ,|I KdMOKJ&a by0JMFtVdR.dU.re`l0\Ɛ]\뚩:cegbcϹJüsNX֞+4+5v+$5(J '+ptAĎt%Y 鲛NV.ؠ.☤P]Xb)~u%veκ ۺus m_YnvsbkE eȈ,-#-?6$7mKw|זX󲠲q/Lt/,[//0 /n /NQhQ]B1^D|"Y /' y~͕wL,se^+*̎hƶɣM(BOgO94*[Mۢ#j$Zkbqulm[̳]e=-m;cdЦ^`=d=2u+`n`2xG yGIyW¼;WW?#2^`^vIM;X ؽ;3fwY7g-H lW7&jW@̏ '8'grq喭Dyd%BY_œfQ5QJIb&V Y*=Y9ӫLH`qNfg#L/0m Pɠ DwO DfA\,,VդBĄ2EL\!3TĴ9MV_nW/6b׿_kif$n&dw&ghvu !c:AXL v&2?UHL\eO A Ng(%۩ 6q'ۉ" Ea$+< VP :e!A\#S!0$^%ĬSȸNHaLC 5iѓV"I6lIaBG:$@]'U.;ƃI=HI"IH!d 6m&Qp҆%q+ FEH7b[KXR064%$-11  Ml3Iob[IR  0iQ8֒$Ů) HK:i$WU2jUƒMҰ7`%eܥq`S&LU\RF"h96nJ sLZ :Z | X6ص(lK󶔂6)!m\jiR]Z=pcq9O$7Ap$9pIcNOlFH:n0-~p;ܬHƣ{HjK_ɓ]%M]+A#tړTA钑&8xJdH !W8 tH/E!ǤbL""=-$E,FHYdG xgJnJO#$1I$ jLR$+R$s0YnIC2%R+ !Z.;$k%av,Y$(AeWfǞiA"i H$}CةJ],P.ݯI$R6u$VA).$B$MNqJUExDꠞXqI +B! t4oĘN3ƕJ,26+hx*̭{_bO];7zQ>U9>qH&41M2.Pp76EVea˜;ܸZ@HXg`8d 405uV~QJ恠Ngpm\፮GW`+ki/]qEN(dZb;9Zzm+kif;7sLDGL,t7Hܩ&|fͣ$OwF7%tל$:Yn;!N<"KOndl;dz*8DO 4q24+gRbtZ̡rhlNyNГt#SvAx9{7 J 1=>=O!^Z),֙ZE,~i0VӯՇ)Z,H3Z,&ZѬ;V; 'lUWZA-ZO._,sZ]9k;q׊-VkSSA+Xub^+҅Aյ+YOz=c e2n3^ej5k)Vkkݧ"[GPG;G\; lȓK1_BΦf&Z"=cڴ0ڌ*2D0SC۬h{Y64e67h7M$7j2mfݩ s5HZv6Ny.z3{#{3|׮}#Ԏ*Nn|Y`iu6BYu6+u%̂ey0vD3дJj6YMX9h6K}8|olLk5qmi:mLhImwհڃYvbٵ1X.Fim7d31vtjߙKso;M?ii n'm=PSq;M-G;"ӐHhWl\{1NRs8hnYIr2v5j3 ڳg =7v[L$m.{R31 Ơ&ӬޛVZjto $`O=lOiY~nw?'O6f1(|xz@}pWT#{b b b b r}$A1 A<BlI4D,(IQ$)'i=s40bb^r] 3kˈ,8X!f#v> %&.g}UF㊑)VbxL6CS,P󊩘yē5ebxb.W86dz+&{z-Uj l1Έ튧҈Јy51]##a_1Ge0 W3t>+&,`|?ćli;`1y59 SV0bKߢ<-,`kT">E<c&ԇBR%ffT&XjŪf ffXZarb!z!j(5AfgB`̦d;"WkVj\s+t<  $̳T]3[Db3.GVa1}$o 0[0 6TڙiM,0'~듅m6av%Dԗ T6eV Q_j5]H&h+gfqbk6V! *gbEBz-Jx}+,LO}iϕظ shad6},J$u[VclPZ*IK—lVC»Vl!ۋK\U5kDfM5D2EaÜoJns}br듓lGb1˴2c2qlmR㲙}RjB1D2]*J1\RYJ}R5|6Y ٪IcKZdVzam` |N!ˍ~YO|/$p8p%lTɑ.j0wٹB[2ݖ/VoZ(5Ftc&CknalC0k`K(:=k!}s2.V'/%dU5FL}B%q5@` Tl?@e|E^v-oG!ҋR%3x88~L <@v"7ZoɌ$6'>Yatr̪dx~`> mֿooWyLpXֿﮯ+h01:X?'8{}){ar0K/N`͟?\uˡ'>a^x/6y/G17 ß{X>bL1-CeVTd̨tOmvT:i̐J9̒}G0S*%l83&M~YSz3ҹaT YTq.fRͦxQ6*mfUJˢkUeUoL Vi32f]A̼ r0*,83fce:WfdstƯ63+2;+N 8fje/ˌL|~D6{+ L,跙\;eb&z0+mvWlM^Y|^ 0+6lأ 3f}W`aW쏅`f 6,9ٌlgˬl̰쯹az~aXgYb2Sl83Ʋ9X6{,S :< zf5|Sf5afe/fGYVg6lY.YfY1famքy)fp"uV'cY3f}VbZ5eZ?Da1 mFZ۬f&i95falsZV6[6ƌ0k̵ bh3Zl>+Z&,3Z,Z0ƌlj3rl\1l[?rkYt}b[moe}epV|1l\Y_,lCk&\m6p=ffWcf\mvqel3Z,`f-WW6c2k6̹6O6S :,l,3l<]32Ŭu,f׵9 z>2ˮ̓m]l:3j3\̺ 0v :JfƫK1#lV^Yo̼7yuX)fÊ\fu\fᤘWb^{el0H1l&_/lˌ:\09]0ï,D1ۯ2:3PC 6&,ڜ0ptxtBw} 3!: 0ʼa ur Lڬp"Ëk49̡2vCe0!,./$ØFQJXEE_0XvQEF]PXFuaTms8r8:rxFw}QQ}8 sXHua"fTFR@VRBfRÖvRÖRIXJu'a*ង0> kRf@KVL)Oxd:zIXM_0;n*r4yӼ%L90)a=-9|Ya>a4w7:,90\_ˆE53ju=?:,wRC-簥00žZvؔ-;JaQ_¤ZvUs}®FP99<01aWyðXj 9LUభ j/ռ~&̫ѿtW0aa _56֊}F֊}V֘;̬*쬡qZVXּ'l90V9an8\Yao8l> k"L L]+WavyZa}C^+SX^c0V6>a| /5Tkט; pX`߄ 6lFتKaWn3a %6Sl [la:lYa [uX[ pXd0Va9|Ya9Wa9Wa9Sa 2|ilau6ٚshkUXhc0P6:WpXiwa~N:p6 9L5^[m$tXj0a `ճŶ_^u1a h[wlv}~fۺ~f0v[]0\6Tw;uXo#a;Wa;ܷ> nX:L?sU7FܺÈV܆Ö}^O/ُvcyzGMi_g}wH{tzGq߇·||߷ηcoڛÁu>0t9,}>au={Oho_ot=wP{sX}̩Oys}{l+A~֫Øu{C^}Wt'ݏ{K^}o= _W/WMw#ϣW:g<{<϶ǢyTq*~s;ky߫Æ_^d=ѽ>bљ7{=eҋZtSYBrQw߽:~דog=zt>ZvLͼ^wdGf/Xz$^v^a$YOwI%^=ˮz]O-#W%~;\P?RTVO~{~'֗jWŞOvMd?=Oby?ݞ}W?rO~'ﯳ'cIÁ`yB?7l#Áq?c3rcs?t?}lGslcV~Ns~OsX=sI;MmQm9,Y}dP->/k֖q귵ܮ~]sI?MM?7שORچ7mOk#(7Onߏ m~uA6o_7pJۛ7G7O7Lo{μy~Y{׻̃ϋ[[,od݊È5n^2n9R~-e^ߊÇ>yk>@˞w/в? ߠe^ZWh+pד!9K4qS|.<]?=-!>GCgG?m>ȝia⓴d~&-O">Jzʝgi^wiXӒ u§'mg^>wxe>zA/z@39Á#mi5]?PR/T0V^yZ3\Ϛ_>3_ 3'|3jMg2VWbi>toWq3:#Uui~tb`?_>ax|CGW4_|JX_Y߿ա)0Q|ˊ+揘Y|=dAk7T|ъ5_ g>9p^aek |!mqkwذqy}w26 /\f>_\_:>suP#|j~=|—ķ +|ZǮ8]G]{WG47_|Z_V7[|^ ߽:>|u8#|Zg|CG4:,h-KZ^|J ñpzDPAP:Du#z@FՉ1j~Dz/:G> =H֯H/RĈ:Y>(5[?#J`=KMHR9T0zijަd=NMD^: =OMNE.O,@59Yz!'I(ɤWW;7qPs^z?G]cYOhs9z/`[3?z273z4W3?z6/WfpwZ/gtɮ?^Ww^I.#Z_a=Ⲿ3ZkCZk!SZ?b%cZb)sZb-փZb1I~נGe{g-sw-{-􋬗-CXO[Zo{Eqn|~eh..s'.ף7.#MONg.;e顋K_}zb)إSOlܥ[]\}+ɋñћcG/^oW/g/@^x^Ol= Ko__=>S_쇁޿4')4g(7Pُ-+zL @;(C(/o?b?k1PwC\=Q*~~+IMǓ>\aYa]b a(^Qo8c?m:S(-׳HaiwO)^GR_[gR?B~9At׃GrSɍ_t?ϧ$Th ]#*Wd?o~G~bCߘ~J%ُi״s-i;?_OYQ?~VߕxIe9_~Zr3~\_e<}-d]_ɷ[r^~d\2~;C{МMi4OmePcm6Uύ{I`i8iOn_>k9~u6wo~y7o KL?~y}m`?g<,?<<\g_~_b&A~yp৘qɟI~sw& {N2wI/2wMx( ~Us>~ô_2sߦ4sq.s)? ~١yfphn_hv7~~ϳ>_~N:C~SV3Ofxךk?2~/U~~dzl3~j?`f֗쇛Ӥ+?pvf7??lm_"~¹O~~ox'9?7qo^?f?~/֧_oa_ήO5~߿L^t3y^_9o~# g@L C_%Пy ݼ]7ś׀?sr1Apyw;Ϋg]?t0痌'/\?wۅ{JNު8%y7r@~ ?72 L}OZo?~_G}aģ|pիOga40u}+%T?.߼D$68{HoEq7&xRy7Ba:O1gp,tDޅ;8Oh~qܐ;7oC1@DZUTB{l0ٯⴟ:`"Qo}K&HlG1.:(&wna"8ՙ)&Fu•10-~T MQFUٔn V|_X0ÎMj-9pMB镬 IG% 1󓖉 ISR60o IՆNz8zu$~O! J D(1F)}tP2♫R'w*tU"qPI SB>v0Boh.fJ^]pHʺgJl]g(uW+\HR`S#!*Kei:}DZ濤ՒG-Y>ܲ"9Mgs'^N&LJܝ۔;H7%N7HݺKM>pI aDazHfuJ1^Y[9cjJ7|`S dăO5F3X)o/3aW[f.uǯ} ˩qlB:t9Rgu:Pgs,=cbQEu{yEOakFŒYW %}źޯ=nw;53m$fcruB)޺b\}-h2.Hwke潗^ʟnѸX.| E7]܃aJq6!QzS!I!qp!vW7p?46lc^=l);'@J!^?CS@*0'B۩ D;1tK,1ZvKbBk$S:-uí֨IfˍThHvˍzT`> /c 0Fk5]rrWO uw8-?ZhZ?/ZF5_n4ZFݩ_ntZFi4p3J8*BqrGMG18QFo`OUQIV4F+Qd^~4aFh\*F/aծDshQ`F)2cWct}0h]b4~?΋ҌX߇F]Uk=FUTT QZԁۃZp0Tơ&{L?D}(@F}P'/UԋH٪o*`#E*A: C%UjqtvPSPp$Xu`^A-+^zV5`hM8jZ{b~/Q능P7U{~ j_4_, Q[/u0nbA]'7KU~YJ)!mAz/G,9zL(ZҚDnNWs a.Ҟ"ǯ+9[FQѳ&ҥKgҶKS7VFNLV[":V(EӒvn)_#UHB: 燴xp,ђƻjR_P[k"+=^,ޖE+_Kwp/GoiRCZx$=%KK8,ٯiVGHߨK|0oF,k I&:0Q4샑VWՇB`I3%.}R_Q]?_,tCET7ͯH8/:FFm:CzwI%:K"qGg[Cy'끢mӏ *:HO>8X7Y#a)&:GX/L4uX3Gn8Fmh27:xzPT}Ke=QmeMq0?RS8DK:/kp?lEӃΪokY{}Q}[Q9?Eg2_bMrpú$q&ׇI8T/UJf)ڦغn+zYk2>:`crp/LX,鴬k,kP7X4QqYu:^חycRO/oes_1k:(t|W}dX\mEm 뢃,kp1;QDO\Iųqp|ߡi*[9E?VPQ(ՁK>A Z?:i][ UU:ȁZ?p+_Q]G`u?(|lm$kp(_w bRfez=/]F+sۊ,ӎZک߯ʚG߯^kƏmw+sƚ.}eLsk}%k c]w0V{M}`#:kćW[F;ޖMէ_M[⇏Q9z;cLpXmwcTeY+kă~exoVVgUc f9X7L4vpz>tN!&۲<+ɮ<}FdmYL2֛a?_l-֛ pԿQ[\`Pֲ4R4g&:;cTb-kۃeu/ۃݪhcYLtsR}y=uok8} yUeAwX/LPչ;JVY\oTٯl[`~,$#b2#buv\Q_˺W݃ϧsbk˚Y^qXyljs.scs08X.hY,{YD`d~0a~~oYsue~0GlmF׃ TQdMq㉮.XWտ=X?XHޯF 4gu78#Pu<C[-p?E4"`_% nuoy|mwg LvR}wD/hE3C +JK|T4D舸:]Wjy]Q-'" uPI(UuDl+ETn9SUQ~j8蘃y?]OWh T[] -|ߊ9X,93UѲ9Py.QKݦ螃*ߪ__Q5;U@X~-/&:yݿ]TmC˂Gh E#(yE'ŲA?@&Zj~hj OQ4T5訃ž =M,[/zVUX1Xup3n:/OXll:xah8;Hb?DU[]vwEU[}˲}v3:-OlQlVjk7&lU: :赭щ#.]Wr^(n軃YF*ByOzDQtDV@|O1O HѤU?:x-jkYO&34:'*ZXx~n4Hj~.ѮF6)d?ѱu[U;ѳVD,)kcە>7ڶ%U4nѹQm}Ln52Ѽ矪O?h߃m:,y [*XF&oǖI 3oDԿ1?j}窅[ߍ;>=FMwcϏmYȽǨ珪7j8?psMt6&ZF ?WwM7&5uGmݜF}Dǜ?awU;TyU6<~?*Ƽ߷j}j{@}h}k]@7}n?vUs}ziM|FMUck|߹^F1/@U U1OTxi=~ޯZY~8V~ڸ{mx?nw_7GRyogԮ:jzHymļUSޢ:zLkSSzIAYOIZzScd=^[ϪϓzayR/UP۪Vqw?DNuJ^zyE끵NXURo+Xʻzj 롪([M=UՄʼJ~zmd=>>Rﭏԃ͛Z/֧'֛zw?czM==zzaz{H=0f'-;C=+e{O ~'+c^GʵrK S y+-eN?~y跃xɻyף.oU߼?g~y9~ +|̇w"y?yo{g^3O-~;4~o?|qK>[ؿ~~mhhq(hugyg}ߜ_߼3 |7:_5f~;NM2P|F3Ի_wü7r8Ayolp<2rz ky'd߼K^ݨ1q|ϼrٮy7ᘗcycyy輞cK*"D/b^y³g\vUkg^̬gtyG絜<2G"‰6Q<2 ΃u^|o3O7UGy̫Sgy\~r?{9ydOߪYߪW}l@^]|ug{"OaU+lUw ObwتSlU-v'_@c߼G[:yn\Av߼VId4ojQy5*Ne2ry27@f^5o#<ξju6O cyb7ozy=(;n|%yc:Km9yדN{}G@_ͫOw٧?yi<%TUN&?gy7o /`j'K#'Zg0;!#~|Wfz^ O^_;~|̻ʃrxOb71: od>|?䑘Wr<nxQ O|ͪG{wgne~r_Vu oW. gPU/;0_v/5P>S|U1EQ⋨>/IQUGq*gἜ F-|e4*yf}>z_G}~?>|G_>_y٪~G}=31_|>K)c[)c)>?\K!OW<>hG|5>~Mi|^|8唫O\u|;媫)Sw~Ti* G?@_}Fw>σ/ >,/9 ~ew;q=e|CƧ'z(1j4"𷏦|rvFixV΋&6LY_q#HWrWl]5?J/u}0k60Dc̒!;ΐ:( Aggf[GvܢN*X͙ kG[lNXl;\`-{;KҬpDr.ցUQBB}v (݉o/mh-f%FogA  pA+hwɣ`*!(i2C$'aM\J$#U\*?t+cq1r|5 œ7"<ϪJjKm/'LL(5'vlqNp:' Tb7V (v%*QC0:[`-$Kb`$)xL%`PUEfvU*"ko#"T KKsTQӶB\kFmQQA*Q >_':o׵0_H~+*)T(湫>1y…?̴bJOy ->wOW7zKofyayOͧ^m4`GHHG *n ͬi觩K3m(Bw=F4;l (QGmVvRj?V"` endstream endobj 217 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 220 0 obj << /Length 1243 /Filter /FlateDecode >> stream xڕWYoF~ׯ h'tmIP,QZrDծ}gggYNp87RRTP߅wY|/'篽*s, oעM1WC5Rrt=y֜YT@|tɺWײû*o] r@> **E-kLJK ka WY3<΀ ll]G3zuu~4d'cWՁɲoTf}hzIBs EN~9U2Y,㫧=JMn#=WW5,:^<[1ڟ*PAƎ@/vX9SlJHW &V (*5-nϣբ*!k,!mH};x3em޶ x\Q+i}Gtf*ɺb-}($ X3ʕ 7Lr6sLn~# \P}(<";26VʃpP'aI@X7VD LwaXYnX D˕LFVhpt ^ɣ͜?=R8lvy !ܽh MC7Od֮ѱiS-f54VԞ=o" #%u hql696Uo)[9tK ǣ}ʦoֺ(.m<eY5EQ]D ݶZV4}̍mP>jaM|n/]My6(]@dszmqx)4ެ`/陰~&Պ.HH1*fU9rqI cͽbn<_Q)隓j6Ml_/JTK&løTfKv5}c#js@5$)J;v ܲ˯풙bQn(h)ERlpD&z_3?* ;bmpT7 endstream endobj 240 0 obj << /Length1 2007 /Length2 13125 /Length3 0 /Length 14346 /Filter /FlateDecode >> stream xڍP Nwww`A Bpwwww#sz{ZJ5MqK's+ +@RYBΉBKvVq;9 ! ]_ϤDe'G= +'dg "-ʬ'G {/5~-|@ t9f4, W A/d^Ãa`x]m d C2@[+ -@A^ GW7GK)P}rws :-,+=* :ZAڻ8݁`{+ҁquU\, ..`?4ҎN GW?C@}br<}VȰt{ϦvvKy=B agg O ?hyiU{W _ B@>6/BX-\ k#?_AV=`_Ưfh+f3TP3`[N. '8y]?x= 383@[?HO;_;l7u\_wCuC/UBK8[_+uCF dvks 5'^wQqy?MוߔҎN'/P_񺤖 ?gx rq|6?B6">n?蕩_i2w6k?Y r@j?N?tW?NnR_ m_e |xO!/RBWg1Vk!_w_x-_8^Kw'Wtׇט4u1\m Uӿ^5 w|Uy'++G@ O򂓅`$,{³{) ,>ːv Dꌠikg:O{(KSdȤ,Zb?6Cw*8Pý/[ [S߯UD}*adX/qv=я;`}''e EH#6قfYCU8/v"$0c5:1^zU-EWL`6B, A1i ݎpԜy_ gJ㈎U(C9|. "4[_ߪ LM|DiY-aô|IGe̪I)Gf9nB~We+bPUHB%h?+ m;:]&o)EGSMnԶі d!Όѩ>iN{O6腽)KwrZmjGWB&x*n%a7Ҙ!ܖn(b_& 9] omUrB`=uaV q/-eDeoӂp "yxWjges١! xy襹|: {9/}d,BkTS;F!f7"~RBK--%!ǤWvaB BЏЭS&w[?Z&K >y7, i̓[L{y@9EEv_I gp[gt %A4LA~P}kfKuRwUbj\?-³Z @R?`[>O?f:[Ftd-G92?Fo?wDL۫jQD8-6L϶[/>K>*s@b/vk 6+;6[,*!lFRZ񛊨E)(_OMlHACNh#{ FbR :'&Fa2)c'Lf3 a GHksHOdr@AjKE O6D'cm@;CvI]M|m!r_.l#eG?rHВgA(oC 2 MO24MLyG#Ҝ^.QKy]UӲ=c>i=a&Ǻ%AIAHVTq5%3 Jot."?#Q=~PaR˙ik}F._y֖ 25l@jIGW?OaMGJ;#8N{.oHP!fÑm tnh{o 6,ȭ%@Sy2][Sszc1k$v-Q۲Ufid*&ZBa*".LtD+0BATsKسRoQ}"*ǥywb]`2eU mD.gfsJ2tA()09LP*?,8S!̤f ?lx=|1-7}0ՠ$ #0F~p_L>R` .Nt/7f 3&˪7Q+3FGS^7`Y^`#4÷0w!,ouv_i7|nJm~'O ϒABqr{XHIri %ͬfJnjD$h7Y s>yI)ak-GgBdMxxw C'w5 MHS+=2{Djʦ5GTtYݤð,<+f)k rp SLҋy쇊TJjz߽1 ,fn}_h T91׫7*suq,uv 74fOZv"-tg6X0w>ՠt1Y^rl.Pr O R@0pxIT7B.J R>+C,;ʜWzAyhEĔN -?9,ʅӵɗtKMC=:8VHeĖ]v vkTjdf3Os`c+zs#+p5tHaGCZ["ҡyKa_|Xb(v`]ݶ.gxZ+mtl8~L{= âun 59]AػrN㮭f/d!}ȵxw!2izݖqX8&-d|"zrm,ryH ICv儶`Fwꑎ\%+%d}o'9^sB/4([rT+3  m5g3 Pu` ݌rA=chUKoME8AT 6G[wyܓH nv_]P|A2h1m-UmF*+Kz5Ƀ9!cu.y[n9҅4x㷴IY =wJ-ߩ8SyɄ9הmUfi|t-b:טAcpoiȭ[B䒍Z?t%gq#((oMu/R[/Hf `cEnwoP!w0UFso/#pYpRWzV&+i[0_+hv͕دݻ>{snd9Ϲ yK t<j,Y6\e>F;P’LEH ʲ~BEq.!d=6Z -6J8\~wMc{>WmfE&]N'CEa%_"BcǞPaλܦ "NSmr_ ~!P1Wsi=ieA[CXb)R%. QBq>X?=& j]q>WH K:Jm@W滄_RCD~n&Fzf#oܒjg ]4l33QenB,jmvFWyP"iR$:YO&84tj#^TYF6 \mZ u ^ҕ?IH%Jj?&dͯW[)< 'MYZ?c;|BH\͡KJʓA^E+ncvc -ڨgʶP\݂ݔ=MiQPOeomne˃CVuSԣo(36_?m(x=Z6_+R~%WxϜ\OWˈ,o7/DrW2jYD˴uIM]G3d98]xLU }0y`Ӵ`~MInd0ccƊ֤"Tw5A.LN`Yݬ`.>[؉lG MnE&GOf' } 9UU4&8s#+YqpQ4L68 o#Tu饦H# ujM!ov <ٍӪ; ϞtH^\ ]cAm )TVwn +HB%}Wtz*稯A'ŖG#?mOwzqN=k49!8GQ`(yko?CU2"?E'%H P'k5ImM6=[`;',e}2yƐ<2"uZA,&'馟"^TTS,GxM$lEGP]^ujϬUfA)X^rHҞ`0Т>#*ELa*<v|DS5^Ǔ}KS`gL/{eNcDL|D]:J_"ŝ~ 7ы ׫F8`b!eOcgw,i'o'$zUVe bLVѷZ7"6+  /I/k݂j73M2ȣE쇺[N4VMYBOS~F:?@ќN Zzaӭ]d /+p9rA17~v[qz}0` Cuڏ y(6I6ɊzՄ`=j'R(6c(eVb0,/֜aH=d)JWryq)w-$,<2'Ά]Uܾ_Mփbӄ;arkIwVU>K/h/.~3ч1]-?.[˯*~)LJNxBe_E f-9x%SOWV9I*kG¦0B!Tv&Iԣ.I5`d.f5.J?ʘUj8'ȋɢͣ`$v;=QRTϻu"|LaB4kt%wwF5C hBբK[)DQ62cLM1Nuj3PV5co9d꛻sZǯ1|>/ diiQoja>_աȪ#9fo~(.n^S1.`Ec^Q''퍓qqDFaMZ0*GvGYB 1LmU:2)"aJotO%CD.[Ud\ c,Yrι/+nkOݛavՖ?J[Y[Xߜ9CȎ4yƦ僒q (;ʍ yg G.Quܒ !G= :mK=9pC~D pP!a;lS, O},V5"f5/[`g+(\c T$=+n:?QU8ː߈!'ul؀q4z,jҢxc@$3%FtEgGd ݅UpF!`˪QآqM|sŬjSZ3ԭsU\Y1|?&σ}ΤVGχN=\J@V#.lM L-ߋW ʎed!NX7m'<rO{ }$dߜp>&ȬfNPg1=f`r/I)D˔)^w6Ώ6_m7eO;yP%U:#Z3КROP5^S+-*jVWNJn)ͫG|/ cHYuy^:m7^"`P[I6@Q=_ZMQ@46Ui)3q m9.\K' \wXmM#%t 8d&ߚ&5k_>R9[.yW%a}C7Q3