mixtools/0000755000175100001440000000000013060455274012154 5ustar hornikusersmixtools/inst/0000755000175100001440000000000013060400571013117 5ustar hornikusersmixtools/inst/CITATION0000755000175100001440000000155011665556372014304 0ustar hornikuserscitHeader("To cite mixtools in publications use:") citEntry(entry = "Article", title = "{mixtools}: An {R} Package for Analyzing Finite Mixture Models", author = personList(as.person("Tatiana Benaglia"), as.person("Didier Chauveau"), as.person("David R. Hunter"), as.person("Derek Young")), journal = "Journal of Statistical Software", year = "2009", volume = "32", number = "6", pages = "1--29", url = "http://www.jstatsoft.org/v32/i06/", textVersion = paste("Tatiana Benaglia, Didier Chauveau, David R. Hunter, Derek Young (2009).", "mixtools: An R Package for Analyzing Finite Mixture Models.", "Journal of Statistical Software, 32(6), 1-29.", "URL http://www.jstatsoft.org/v32/i06/.") ) mixtools/inst/doc/0000755000175100001440000000000013060400571013664 5ustar hornikusersmixtools/inst/doc/mixtools.R0000644000175100001440000003543313060400571015675 0ustar hornikusers### R code from vignette source 'mixtools.Rnw' ################################################### ### code chunk number 1: faithful ################################################### library(mixtools) data(faithful) attach(faithful) ################################################### ### code chunk number 2: geyser ################################################### hist(waiting, main="Time between Old Faithful eruptions", xlab="Minutes", ylab="", cex.main=1.5, cex.lab=1.5, cex.axis=1.4) ################################################### ### code chunk number 3: normmixEM ################################################### wait1 <- normalmixEM(waiting, lambda = .5, mu = c(55, 80), sigma = 5) ################################################### ### code chunk number 4: geyserEM (eval = FALSE) ################################################### ## plot(wait1, density=TRUE, cex.axis=1.4, cex.lab=1.4, cex.main=1.8, ## main2="Time between Old Faithful eruptions", xlab2="Minutes") ################################################### ### code chunk number 5: geyserEM ################################################### for(i in 1:2){ file=paste("geyserEM", i, ".pdf", sep="") pdf(file=file, paper="special", width=6, height=6) plot(wait1, whichplots=i, cex.axis = 1.4, cex.lab = 1.4, cex.main = 1.8, main2 = "Time between Old Faithful eruptions", xlab2 = "Minutes") dev.off() cat("\\includegraphics{", file, "}\n", sep="") } ################################################### ### code chunk number 6: geyserestimates ################################################### wait1[c("lambda", "mu", "sigma")] ################################################### ### code chunk number 7: geysersummary ################################################### summary(wait1) ################################################### ### code chunk number 8: cutpoint ################################################### data("Waterdata") cutpts <- 10.5*(-6:6) watermult <- makemultdata(Waterdata, cuts = cutpts) ################################################### ### code chunk number 9: multmixEM ################################################### set.seed(15) theta4 <- matrix(runif(56), ncol = 14) theta3 <- theta4[1:3,] mult3 <- multmixEM(watermult, lambda = rep(1, 3)/3, theta = theta3) mult4 <- multmixEM (watermult, lambda = rep (1, 4) / 4, theta = theta4) ################################################### ### code chunk number 10: mixtools.Rnw:575-581 (eval = FALSE) ################################################### ## cdf3 <- compCDF(Waterdata, mult3$posterior, lwd=2, lab=c(7, 5, 7), ## xlab="Angle in degrees", ylab="Component CDFs", ## main="Three-Component Solution") ## cdf4 <- compCDF(Waterdata, mult4$posterior, lwd=2, lab=c(7, 5, 7), ## xlab="Angle in degrees", ylab="Component CDFs", ## main="Four-Component Solution") ################################################### ### code chunk number 11: cutpointplots ################################################### pdf(file="WDcutpoint3comp.pdf", paper="special", width=8, height=8) cdf3 <- compCDF(Waterdata, mult3$posterior, lwd=3, xlab="Angle in degrees", lab=c(7, 5, 7), ylab="Component CDFs", main="Three-Component Solution", cex.axis=1.4, cex.lab=1.5, cex.main=1.5) ltext <- paste(round(mult3$lam*100, 1), "%", sep="") legend("bottomright", legend=ltext, pch=15:17, cex=1.5, pt.cex=1.35) y <- compCDF(Waterdata, mult3$posterior, x=cutpts, makeplot=F) for(i in 1:3) points(cutpts, y[i,], pch=14+i, cex=1.35) dev.off() pdf(file="WDcutpoint4comp.pdf", paper="special", width=8, height=8) cdf4 <- compCDF(Waterdata, mult4$posterior, lwd=3, xlab="Angle in degrees", lab=c(7, 5, 7), ylab="Component CDFs", main="Four-Component Solution", cex.axis=1.4, cex.lab=1.5, cex.main=1.5) ltext <- paste(round(mult4$lam*100,1), "%", sep="") legend("bottomright", legend=ltext, pch=15:18, cex=1.5, pt.cex=1.35) y <- compCDF(Waterdata, mult4$posterior, x=cutpts, makeplot=F) for(i in 1:4) points(cutpts, y[i,], pch=14+i, cex=1.35) dev.off() ################################################### ### code chunk number 12: summarymult4 ################################################### summary(mult4) ################################################### ### code chunk number 13: spsymmplots ################################################### pdf(file="spsymmfig1.pdf", paper="special", width=8, height=8) par(mar=0.1+c(5,4.2,4,1.8)) plot(wait1, which = 2, cex.axis = 1.4, cex.lab = 1.5, cex.main = 1.5, main2 = "Time between Old Faithful eruptions", xlab2 = "Minutes") wait2 <- spEMsymloc(waiting, mu0 = c(55, 80)) plot(wait2, lty = 2, newplot = FALSE, addlegend = FALSE) dev.off() pdf(file="spsymmfig2.pdf", paper="special", width=8, height=8) par(mar=0.1+c(5,4.2,4,1.8)) wait2a <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 1) wait2b <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 6) plot(wait2a, lty = 1, addlegend = FALSE, cex.axis = 1.4, cex.lab = 1.5, cex.main = 1.5, title = "Time between Old Faithful eruptions", xlab = "Minutes") plot(wait2b, lty = 2, newplot = FALSE, addlegend = FALSE) dev.off() ################################################### ### code chunk number 14: plotspsymm (eval = FALSE) ################################################### ## plot(wait1, which = 2, cex.axis = 1.4, cex.lab = 1.4, cex.main = 1.8, ## main2 = "Time between Old Faithful eruptions", xlab2 = "Minutes") ## wait2 <- spEMsymloc(waiting, mu0 = c(55, 80)) ## plot(wait2, lty = 2, newplot = FALSE, addlegend = FALSE) ################################################### ### code chunk number 15: bandwidth ################################################### bw.nrd0(waiting) ################################################### ### code chunk number 16: plotbweffect (eval = FALSE) ################################################### ## wait2a <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 1) ## wait2b <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 6) ## plot(wait2a, lty = 1, addlegend = FALSE, cex.axis = 1.4, ## cex.lab = 1.4, cex.main = 1.8, xlab = "Minutes", ## title = "Time between Old Faithful eruptions") ## plot(wait2b, lty = 2, newplot = FALSE, addlegend = FALSE) ################################################### ### code chunk number 17: gaussexample ################################################### m <- 2; r <- 3; n <- 300; S <- 100 lambda <- c(0.4, 0.6) mu <- matrix(c(0, 0, 0, 3, 4, 5), m, r, byrow = TRUE) sigma <- matrix(rep(1, 6), m, r, byrow = TRUE) ################################################### ### code chunk number 18: gaussinitial ################################################### centers <- matrix(c(0, 0, 0, 4, 4, 4), 2, 3, byrow = TRUE) ISE <- matrix(0, m, r, dimnames = list(Components = 1:m, Blocks = 1:r)) nblabsw <- 0 ################################################### ### code chunk number 19: sqMISE ################################################### set.seed(1000) for (mc in 1:S) { x <- rmvnormmix(n, lambda, mu, sigma) a <- npEM(x, centers, verb = FALSE, samebw = FALSE) if (a$lambda[1] > a$lambda[2]) nblabsw <- nblabsw + 1 for (j in 1:m) { for (k in 1:r) { ISE[j, k] <- ISE[j, k] + ise.npEM(a, j, k, dnorm, lower = mu[j, k] - 5, upper = mu[j, k] + 5, plots = FALSE, mean = mu[j, k], sd = sigma[j, k])$value #$ } } } MISE <- ISE/S print(sqMISE <- sqrt(MISE)) ################################################### ### code chunk number 20: summarygauss ################################################### summary(a) ################################################### ### code chunk number 21: plotgauss3rm (eval = FALSE) ################################################### ## plot(a) ################################################### ### code chunk number 22: gauss3rm ################################################### pdf("gauss3rm.pdf", paper="special", width=10, height=5) par(mfrow=c(1,3), ask=F) plot(a) dev.off() ################################################### ### code chunk number 23: true5rm ################################################### pdf("truepdf5rm_block1.pdf") par(mar=0.1+c(5,4.2,4,1.5)) x <- seq(-10, 25, len=250) plot(x, .4* dt(x, 2, 0) + .6 * dt(x, 10, 8), type="l", lwd=3, col=2, cex.axis=1.4, cex.lab=1.5, cex.main=1.5, main="Block 1", xlab="", ylab="Density") lines (x, .4*dt(x, 2, 0), lwd=4, lty=2) lines (x, .6*dt(x, 10, 8), lwd=4, lty=2) dev.off() pdf("truepdf5rm_block2.pdf") par(mar=0.1+c(5,4.2,4,1.5)) x <- seq(0, 1, len=250) plot(x, .4 + .6 * dbeta(x, 1, 5), type="l", lwd=3, col=2, cex.axis=1.4, cex.lab=1.5, cex.main=1.5, main="Block 2", xlab="", ylab="Density", ylim= c(0, 3.4)) lines (x, rep(.4, 250), lwd=4, lty=2) lines (x, .6*dbeta(x, 1, 5), lwd=4, lty=2) dev.off() ################################################### ### code chunk number 24: parameters5rm ################################################### m <- 2; r <- 5 lambda <- c(0.4, 0.6) df <- c(2, 10); ncp <- c(0, 8) sh1 <- c(1, 1) ; sh2 <- c(1, 5) ################################################### ### code chunk number 25: generate5rm ################################################### n <- 300; z <- sample(m, n, rep = TRUE, prob = lambda) r1 <- 3; z2 <- rep(z, r1) x1 <- matrix(rt(n * r1, df[z2], ncp[z2]), n, r1) r2 <- 2; z2 <- rep(z, r2) x2 <- matrix(rbeta(n * r2, sh1[z2], sh2[z2]), n, r2) x <- cbind(x1, x2) ################################################### ### code chunk number 26: npEM5rm ################################################### id <- c(rep(1, r1), rep(2, r2)) centers <- matrix(c(0, 0, 0, 1/2, 1/2, 4, 4, 4, 1/2, 1/2), m, r, byrow = TRUE) b <- npEM(x, centers, id, eps = 1e-8, verb = FALSE, samebw = FALSE) ################################################### ### code chunk number 27: plot5rm (eval = FALSE) ################################################### ## plot(b, breaks = 15) ################################################### ### code chunk number 28: plot5rmcommands ################################################### pdf("npEM5rm.pdf", width=8, height=5) par(mfrow=c(1,2)) plot(b, breaks = 15) dev.off() ################################################### ### code chunk number 29: ISEnpEM5rm (eval = FALSE) ################################################### ## par(mfrow=c(2,2)) ## for (j in 1:2){ ## ise.npEM(b, j, 1, truepdf = dt, lower = ncp[j] - 10, ## upper = ncp[j] + 10, df = df[j], ncp = ncp[j]) ## ise.npEM(b, j, 2, truepdf = dbeta, lower = -0.5, ## upper = 1.5, shape1 = sh1[j], shape2 = sh2[j]) ## } ################################################### ### code chunk number 30: plotISEnpEM5rm ################################################### options(warn=-1) pdf("ISEnpEM5rm.pdf", width=8, height=8) par(mfrow = c(2, 2)) for (j in 1:2){ ise.npEM(b, j, 1, truepdf = dt, lower = ncp[j] - 10, upper = ncp[j] + 10, df = df[j], ncp = ncp[j]) ise.npEM(b, j, 2, truepdf = dbeta, lower = -0.5, upper = 1.5, shape1 = sh1[j], shape2 = sh2[j]) } dev.off() ################################################### ### code chunk number 31: gnpdata ################################################### data("CO2data") attach(CO2data) pdf("gnpdata.pdf") par(mar=0.1+c(5,4.2,4,1.5)) plot(GNP, CO2, xlab="Gross National Product", ylab=expression(paste(CO[2]," per Capita")), cex.lab=1.5, cex.main=1.5, cex.axis=1.4, main="1996 GNP and Emissions Data") text(GNP, CO2, country, adj=c(.5,-.5)) dev.off() ################################################### ### code chunk number 32: mixtools.Rnw:1282-1284 ################################################### data("CO2data") attach(CO2data) ################################################### ### code chunk number 33: CO2reg ################################################### CO2reg <- regmixEM(CO2, GNP, lambda = c(1, 3) / 4, beta = matrix(c(8, -1, 1, 1), 2, 2), sigma = c(2, 1)) ################################################### ### code chunk number 34: summaryCO2reg ################################################### summary(CO2reg) ################################################### ### code chunk number 35: plotCO2reg (eval = FALSE) ################################################### ## plot(CO2reg, density = TRUE, alpha = 0.01, cex.main = 1.5, cex.lab = 1.5, ## cex.axis = 1.4) ################################################### ### code chunk number 36: trueplotCO2reg ################################################### for(i in 1:2){ file=paste("CO2reg", i, ".pdf", sep="") pdf(file=file, paper="special", width=6, height=6) plot(CO2reg, whichplots=i, alpha = 0.01, cex.main = 1.5, cex.lab = 1.5, cex.axis = 1.4) dev.off() cat("\\includegraphics{", file, "}\n", sep="") } ################################################### ### code chunk number 37: CO2igle ################################################### CO2igle <- regmixEM.loc(CO2, GNP, beta = CO2reg$beta, sigma = CO2reg$sigma, lambda = CO2reg$posterior, kern.l = "Beta", kernl.h = 20, kernl.g = 3) ################################################### ### code chunk number 38: CO2iglesummary ################################################### summary(CO2igle) ################################################### ### code chunk number 39: lamplot (eval = FALSE) ################################################### ## plot(GNP, CO2igle$post[,1], xlab = "GNP", cex.axis = 1.4, cex.lab = 1.5, ## ylab = "Final posterior probabilities") ## lines(sort(GNP), CO2igle$lambda[order(GNP), 1], col=2) ## abline(h = CO2igle$lambda[1], lty = 2) ################################################### ### code chunk number 40: truelamplot ################################################### pdf("lamplot.pdf") plot(GNP, CO2igle$post[,1], xlab = "GNP", cex.axis = 1.4, cex.lab = 1.5, ylab = "Final posterior probabilities") lines(sort(GNP), CO2igle$lambda[order(GNP), 1], col=2, lwd=2) abline(h = CO2igle$lambda[1], lty = 2, lwd=2) dev.off() ################################################### ### code chunk number 41: CO2boot ################################################### set.seed(123) CO2boot <- boot.se(CO2reg, B = 100) ################################################### ### code chunk number 42: bootresults ################################################### rbind(range(CO2boot$beta[1,]), range(CO2boot$beta[2,])) ################################################### ### code chunk number 43: CO2bootse ################################################### CO2boot[c("lambda.se", "beta.se", "sigma.se")] ################################################### ### code chunk number 44: modelsel ################################################### data("Waterdata") cutpts <- 10.5*(-6:6) watermult <- makemultdata(Waterdata, cuts = cutpts) set.seed(10) multmixmodel.sel(watermult, comps = 1:4, epsilon = 0.001) mixtools/inst/doc/mixtools.Rnw0000755000175100001440000021573513060400571016252 0ustar hornikusers\documentclass[nojss]{jss} \usepackage{amsmath} \usepackage{amssymb} %% need no \usepackage{Sweave.sty} %\VignetteIndexEntry{mixtools for mixture models} %% macros (Didier) \newcommand{\CF}{{\mathcal F}} \newcommand{\CN}{{\mathcal N}} \def\Bg{\mathbf{g}} \def\Bh{\mathbf{h}} \def\Bk{\mathbf{k}} \def\Bx{\mathbf{x}} \def\By{\mathbf{y}} \def\Bc{\mathbf{c}} \def\BC{\mathbf{C}} \def\Bz{\mathbf{z}} \newcommand{\argmax}{\mathop{\mbox{argmax}}} \def\bP{\mathbb{P}} % Probability \def\I{\mathbb I} % indicator function \def\bE{\mathbb{E}} % expectation \def\bR{\mathbb{R}} % real line \newcommand{\f}{{\vec\theta}} \newcommand{\lb}{{\lambda}} \def\post{{p}} \def\defn{{\stackrel{\rm def}{=}}} \def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle\bf#1$}} {\mbox{\boldmath$\textstyle\bf#1$}} {\mbox{\boldmath$\scriptstyle\bf#1$}} {\mbox{\boldmath$\scriptscriptstyle\bf#1$}}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% declarations for jss.cls %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% almost as usual \author{Tatiana Benaglia \\ Pennsylvania State University \And Didier Chauveau \\ Universit\'e d'Orl\'eans \AND David R.~Hunter \\ Pennsylvania State University \And Derek S. Young \\ Pennsylvania State University} \title{\pkg{mixtools}: An \proglang{R} Package for Analyzing Finite Mixture Models} %% for pretty printing and a nice hypersummary also set: \Plainauthor{Tatiana Benaglia, Didier Chauveau, David R.~Hunter, Derek Young} %% comma-separated \Plaintitle{mixtools: An R Package for Analyzing Mixture Models} %% without formatting \Shorttitle{mixtools for Mixture Models} %% a short title (if necessary) %% an abstract and keywords \Abstract{ The \pkg{mixtools} package for \proglang{R} provides a set of functions for analyzing a variety of finite mixture models. These functions include both traditional methods, such as EM algorithms for univariate and multivariate normal mixtures, and newer methods that reflect some recent research in finite mixture models. In the latter category, \pkg{mixtools} provides algorithms for estimating parameters in a wide range of different mixture-of-regression contexts, in multinomial mixtures such as those arising from discretizing continuous multivariate data, in nonparametric situations where the multivariate component densities are completely unspecified, and in semiparametric situations such as a univariate location mixture of symmetric but otherwise unspecified densities. Many of the algorithms of the \pkg{mixtools} package are EM algorithms or are based on EM-like ideas, so this article includes an overview of EM algorithms for finite mixture models. } \Keywords{cutpoint, EM algorithm, mixture of regressions, model-based clustering, nonparametric mixture, semiparametric mixture, unsupervised clustering} %, keywords, comma-separated, not capitalized, \proglang{Java}} \Plainkeywords{keywords, comma-separated, not capitalized, Java} %% without formatting %% at least one keyword must be supplied %% publication information %% NOTE: Typically, this can be left commented and will be filled out by the technical editor %% \Volume{13} %% \Issue{9} %% \Month{September} %% \Year{2004} %% \Submitdate{2004-09-29} %% \Acceptdate{2004-09-29} %% The address of (at least) one author should be given %% in the following format: \Address{ Didier Chauveau\\ Laboratoire MAPMO - UMR 7349 - F\'ed\'eration Denis Poisson\\ Universit\'e d'Orl\'eans\\ BP 6759, 45067 Orl\'eans cedex 2, FRANCE.\\ E-mail: \email{didier.chauveau@univ-orleans.fr} \\ URL: \url{http://www.univ-orleans.fr/mapmo/membres/chauveau/}\\ \\ David R.~Hunter\\ Department of Statistics\\ 326 Thomas Building\\ Pennsylvania State University\\ University Park, PA 16802\\ Telephone: +1/814-863-0979\\ Fax: +1/814-863-7114\\ E-mail: \email{dhunter@stat.psu.edu} \\ URL: \url{http://www.stat.psu.edu/~dhunter/}\\ \\ Tatiana Benaglia\\ Department of Statistics, Penn State (see above)\\ E-mail: \email{tab321@stat.psu.edu} \\ \\ Derek Young\\ Department of Statistics, Penn State (see above)\\ E-mail: \email{dsy109@psu.edu} } %% It is also possible to add a telephone and fax number %% before the e-mail in the following format: %% Telephone: +43/1/31336-5053 %% Fax: +43/1/31336-734 %% for those who use Sweave please include the following line (with % symbols): %% need no \usepackage{Sweave.sty} %% end of declarations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \SweaveOpts{concordance=FALSE} %% include your article here, just as usual %% Note that you should use the \pkg{}, \proglang{} and \code{} commands. \section[Introduction to finite mixtures and mixtools]{Introduction to finite mixtures and \pkg{mixtools}} %% Note: If there is markup in \(sub)section, then it has to be escape %% as above. \label{s:intro} Authors' note: The original version of this vignette was produced using an article that appears in the {\it Journal of Statistical Software} (URL: \url{http://www.jstatsoft.org/}); see \citet{Benaglia+Chauveau+Hunter+Young:2009}. Populations of individuals may often be divided into subgroups. Yet even when we observe characteristics of these individuals that provide information about their subgroup memberships, we may not actually observe these memberships {\em per se}. The basic goal of the tools in the \pkg{mixtools} package (version 0.4.3, as of this writing) for \proglang{R} \citep{r2009} is to examine a sample of measurements to discern and describe subgroups of individuals, even when there is no observable variable that readily indexes into which subgroup an individual properly belongs. This task is sometimes referred to as ``unsupervised clustering'' in the literature, and in fact mixture models may be generally thought of as comprising the subset of clustering methods known as ``model-based clustering''. The \pkg{mixtools} package is available from the Comprehensive \proglang{R} Archive Network at \url{http://CRAN.R-project.org/package=mixtools}. Finite mixture models may also be used in situations beyond those for which clustering of individuals is of interest. For one thing, finite mixture models give descriptions of entire subgroups, rather than assignments of individuals to those subgroups (though the latter may be accomplished using mixture models). Indeed, even the subgroups may not necessarily be of interest; sometimes finite mixture models merely provide a means for adequately describing a particular distribution, such as the distribution of residuals in a linear regression model where outliers are present. Whatever the goal of the modeler when employing mixture models, much of the theory of these models involves the assumption that the subgroups are distributed according to a particular parametric form --- and quite often this form is univariate or multivariate normal. While \pkg{mixtools} does provide tools for traditional fitting of finite mixtures of univariate and multivariate normal distributions, it goes well beyond this well-studied realm. Arising from recent research whose goal is to relax or modify the assumption of multivariate normality, \pkg{mixtools} provides computational techniques for finite mixture model analysis in which components are regressions, multinomial vectors arising from discretization of multivariate data, or even distributions that are almost completely unspecified. This is the main feature that distinguishes \pkg{mixtools} from other mixture-related \proglang{R} packages, also available from the Comprehensive \proglang{R} Archive Network at \url{http://CRAN.R-project.org/}, such as \pkg{mclust} \citep{Fraley+Raftery:2009} and \pkg{flexmix} \citep{jss:Leisch:2004, Grun+Leisch:2008}. We briefly mention these two packages in Sections~\ref{section:EMexample} and \ref{section:pdmp}, respectively. To make the mixture model framework more concrete, suppose the possibly vector-valued random variables $\vec X_1, \ldots, \vec X_n$ are a simple random sample from a finite mixture of $m>1$ arbitrary distributions, which we will call {\em components} throughout this article. The density of each $\vec X_i$ may be written \begin{equation} \label{mvmixture} g_{\f}(\vec x_i) = \sum_{j=1}^m\lambda_j\phi_j(\vec x_i), \quad \vec x_i\in\bR^r, \end{equation} where $\f=(\vec\lambda, \vec \phi) = (\lambda_1, \ldots, \lambda_m, \phi_1, \ldots, \phi_m)$ denotes the parameter and the $\lambda_m$ are positive and sum to unity. We assume that the $\phi_j$ are drawn from some family $\cal F$ of multivariate density functions absolutely continuous with respect to, say, Lebesgue measure. The representation \eqref{mvmixture} is not identifiable if no restrictions are placed on $\cal F$, where by ``identifiable'' we mean that $g_{\f}$ has a {\em unique} representation of the form \eqref{mvmixture} and we do not consider that ``label-switching'' --- i.e., reordering the $m$ pairs $(\lambda_1, \phi_1), \ldots, (\lambda_m, \phi_m)$ --- produces a distinct representation. In the next sections we will sometimes have to distinguish between {\em parametric} and more general {\em nonparametric} situations. This distinction is related to the structure of the family $\CF$ of distributions to which the component densities $\phi_j$ in model \eqref{mvmixture} belong. We say that the mixture is {\em parametric} if $\CF$ is a parametric family, $\CF = \{\phi(\cdot|\vec\xi), \vec\xi\in\bR^d\}$, indexed by a ($d$-dimensional) Euclidean parameter $\vec\xi$. A parametric family often used is the univariate Gaussian family $\CF = \{\phi(\cdot|\mu,\sigma^2)=\mbox{density of }\CN(\mu,\sigma^2), (\mu,\sigma^2)\in\bR\times\bR^+_*\}$, in which case the model parameter reduces to $\f = (\vec \lambda, (\mu_1,\sigma^2_1),\ldots,(\mu_m,\sigma^2_m))$. For the multivariate case, a possible parametric model is the {\em conditionally i.i.d.\ normal model}, for which $\CF=\{\phi(\vec x_i) = \prod_{k=1}^r f(x_{ik}), \mbox{$f(t)$ density of $\CN(\mu,\sigma^2)$}\}$ (this model is included in \pkg{mixtools}; see Section~\ref{ss:nbcomp}). An example of a (multivariate) nonparametric situation is $\CF=\{\phi(\vec x_i) = \prod_{k=1}^r f(x_{ik}), \mbox{$f(t)$ a univariate density on $\bR$}\}$, in which case $\vec\f$ consists in a Euclidean part ($\vec\lb$) and a nonparametric part $(f_1,\ldots,f_m)$. As a simple example of a dataset to which mixture models may be applied, consider the sample depicted in Figure \ref{geyser}. In the Old Faithful dataset, measurements give time in minutes between eruptions of the Old Faithful geyser in Yellowstone National Park, USA. These data are included as part of the \pkg{datasets} package in \proglang{R} \citep{r2009}; type \code{help("faithful")} in \proglang{R} for more details. <>= library(mixtools) data(faithful) attach(faithful) @ \setkeys{Gin}{width=0.6\textwidth} \begin{figure}[h] \centering <>= hist(waiting, main="Time between Old Faithful eruptions", xlab="Minutes", ylab="", cex.main=1.5, cex.lab=1.5, cex.axis=1.4) @ \caption{The Old Faithful dataset is clearly suggestive of a two-component mixture of symmetric components.} \label{geyser} \end{figure} For the Old Faithful eruption data, a two-component mixture model is clearly a reasonable model based on the bimodality evident in the histogram. This example is analyzed by \citet{hunter2007ims}, who compare a standard normal-mixture method for fitting it with a novel semiparametric approach. Both approaches are included in \pkg{mixtools}; see Sections \ref{section:EMexample} and \ref{section:SPexample} of this article. In Section~\ref{section:EM} of the current article we review the well-known class of EM algorithms for finite mixture models, a common thread that runs throughout much of the rest of the article. The remaining sections discuss various categories of functions found in the \pkg{mixtools} package, from cutpoint methods that relax distributional assumptions for multivariate data by discretizing the data (Section~\ref{section:cut}), to semi- and non-parametric methods that eliminate distributional assumptions almost entirely depending on what the identifiability of the model allows (Section~\ref{section:np}), to methods that handle various mixtures of regressions (Section~\ref{section:reg}). Finally, Section \ref{section:misc} describes several miscellaneous features of the \pkg{mixtools} package. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{EM algorithms for finite mixtures} \label{section:EM} \subsection{Missing data setup} Much of the general methodology used in \pkg{mixtools} involves the representation of the mixture problem as a particular case of maximum likelihood estimation (MLE) when the observations can be viewed as incomplete data. This setup implies consideration of two sample spaces, the sample space of the (incomplete) observations, and a sample space of some ``complete'' observations, the characterization of which being that the estimation can be performed explicitly at this level. For instance, in parametric situations, the MLE based on the complete data may exist in closed form. Among the numerous reference papers and monographs on this subject are, e.g., the original EM algorithm paper by \citet{dempster1977mli} and the finite mixture model book by \citet{mclachlan2000fmm} and references therein. We now give a brief description of this setup as it applies to finite mixture models in general. The (observed) data consist of $n$ i.i.d. observations $\vec x = (\vec x_1,\ldots,\vec x_n)$ from a density $g_\f$ given by \eqref{mvmixture}. It is common to denote the density of the sample by $\Bg_\f$, the $n$-fold product of $g_\f$, so that we write simply $\Bx\sim \Bg_\f$. In the missing data setup, $\Bg_\f$ is called the incomplete-data density, and the associated log-likelihood is $L_{\Bx}(\f) = \sum_{i=1}^n \log g_\f(\vec x_i)$. The (parametric) ML estimation problem consists in finding $\hat\f_{\Bx} = \argmax_{\f\in\Phi} L_{\Bx}(\f)$, or at least finding a local maximum --- there are certain well-known cases in which a finite mixture model likelihood is unbounded \citep{mclachlan2000fmm}, but we ignore these technical details for now. Calculating $\hat\f_{\Bx}$ even for a parametric finite mixture model is known to be a difficult problem, and considering $\Bx$ as incomplete data resulting from non-observed complete data helps. The associated complete data is denoted by $\Bc = (\vec c_1,\ldots, \vec c_n)$, with density $\Bh_\f(\Bc)=\prod_{i=1}^n h_\f(\vec c_i)$ (there exists a many-to-one mapping from $\Bc$ to $\Bx$, representing the loss of information). In the model for complete data associated with model~\eqref{mvmixture}, each random vector $\vec C_i = (\vec X_i,\vec Z_i)$, where $\vec Z_i = (Z_{ij},j=1,\ldots m)$, and $Z_{ij}\in\{0,1\}$ is a Bernoulli random variable indicating that individual $i$ comes from component $j$. Since each individual comes from exactly one component, this implies $\sum_{j=1}^m Z_{ij}=1$, and $$ \Prob(Z_{ij} = 1) = \lambda_{j},\quad (\vec X_i|Z_{ij}=1) \sim \phi_j, \quad j=1,\ldots,m. $$ The complete-data density for one observation is thus $$ h_\f(\vec c_i) = h_\f(\vec x_i,\vec z_i) = \sum_{j=1}^m \I_{z_{ij}}\lb_j \phi_j (\vec x_i), $$ In the parametric situation, i.e.\ when $\CF$ is a parametric family, it is easy to check that the complete-data MLE $\hat\f_{\Bc}$ based on maximizing $\log \Bh_\f(\Bc)$ is easy to find, provided that this is the case for the family $\CF$. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{EM algorithms} \label{sec:EM} An EM algorithm iteratively maximizes, instead of the observed log-likelihood $L_{\Bx}(\f)$, the operator $$ Q(\f | \f^{(t)}) = \E \left[\log \Bh_\f(\BC)|\Bx,\f^{(t)} \right], $$ where $\f^{(t)}$ is the current value at iteration~$t$, and the expectation is with respect to the distribution $\Bk_\f(\Bc|\Bx)$ of $\Bc$ given $\Bx$, for the value $\f^{(t)}$ of the parameter. The iteration $\f^{(t)} \to \f^{(t+1)}$ is defined in the above general setup by \begin{enumerate} \item E-step: compute $Q(\f | \f^{(t)})$ \item M-step: set $\f^{(t+1)} = \argmax_{\f\in\Phi}Q(\f | \f^{(t)})$ \end{enumerate} For finite mixture models, the E-step does not depend on the structure of $\CF$, since the missing data part is only related to the $\Bz$'s: $$ \Bk_\f(\Bc|\Bx) = \prod_{i=1}^n k_\f(\vec z_i|\vec x_i). $$ The $\Bz$ are discrete, and their distribution is given via Bayes' theorem. The M-step itself can be split in two parts, the maximization related to $\vec\lb$, which does not depend on $\CF$, and the maximization related to $\vec \phi$, which has to be handled specifically (say, parametrically, semi- or non-parametrically) for each model. Hence the EM algorithms for the models handled by the \pkg{mixtools} package share the following common features: \begin{enumerate} \item{\bf E-step:\ } Calculate the ``posterior'' probabilities (conditional on the data and $\vec\theta^{(t)}$) of component inclusion, \begin{equation}\label{posteriors} \post_{ij}^{(t)} \, \defn \, \Prob_{\vec\theta^{(t)}}(Z_{ij}=1| \vec x_i) = \frac{\lambda_j^{(t)} \phi_{j}^{(t)}(\vec x_{i})} {\sum_{j'=1}^m\lambda_{j'}^{(t)} \phi_{j'}^{(t)}(\vec x_{i})} \end{equation} for all $i=1,\ldots, n$ and $j=1, \ldots, m$. Numerically, it can be dangerous to implement equation (\ref{posteriors}) exactly as written due to the possibility of the indeterminant form $0/0$ in cases where $\vec x_i$ is so far from any of the components that all $\phi_{j'}^{(t)}(\vec x_i)$ values result in a numerical underflow to zero. Thus, many of the routines in \pkg{mixtools} actually use the equivalent expression \begin{equation}\label{altposteriors} \post_{ij}^{(t)} = \left[ 1 + \sum_{j'\ne j} \frac{ \lambda_{j'}^{(t)} \phi_{j'}^{(t)}(\vec x_{i})} {\lambda_j^{(t)} \phi_{j}^{(t)}(\vec x_{i})} \right]^{-1} \end{equation} or some variant thereof. \item{\bf M-step for $\vec\lb$:\ } Set \begin{equation}\label{lambda} \lambda_j^{(t+1)} = \frac1n\sum_{i=1}^n \post_{ij}^{(t)} , \quad\mbox{for $j=1, \ldots, m$.} \end{equation} \end{enumerate} \subsection{An EM algorithm example} \label{section:EMexample} As an example, we consider the univariate normal mixture analysis of the Old Faithful waiting data depicted in Figure \ref{geyser}. This fully parametric situation corresponds to a mixture from the univariate Gaussian family described in Section~\ref{s:intro}, where the $j$th component density $\phi_j(x)$ in \eqref{mvmixture} is normal with mean $\mu_j$ and variance $\sigma_j^2$. This is a special case of the general mixture-of-normal model that is well-studied in the literature and for which other software, such as the \pkg{mclust} \citep{Fraley+Raftery:2009} package for \proglang{R}, may also be used for parameter estimation. The M-step for the parameters $(\mu_j,\sigma^2_j)$, $j=1,\ldots,m$ of this EM algorithm for such mixtures of univariate normals is straightforward, and can be found, e.g., in \citet{mclachlan2000fmm}. The function \code{normalmixEM} implements the algorithm in \pkg{mixtools}. Code for the Old Faithful example, using most of the default values (e.g., stopping criterion, maximum number of iterations), is simply <>= wait1 <- normalmixEM(waiting, lambda = .5, mu = c(55, 80), sigma = 5) @ The code above will fit a 2-component mixture (because \code{mu} is a vector of length two) in which the standard deviations are assumed equal (because \code{sigma} is a scalar instead of a vector). See \code{help("normalmixEM")} for details about specifying starting values for this EM algorithm. <>= plot(wait1, density=TRUE, cex.axis=1.4, cex.lab=1.4, cex.main=1.8, main2="Time between Old Faithful eruptions", xlab2="Minutes") @ \setkeys{Gin}{width=0.49\textwidth} \begin{figure}[!h] \centering <>= for(i in 1:2){ file=paste("geyserEM", i, ".pdf", sep="") pdf(file=file, paper="special", width=6, height=6) plot(wait1, whichplots=i, cex.axis = 1.4, cex.lab = 1.4, cex.main = 1.8, main2 = "Time between Old Faithful eruptions", xlab2 = "Minutes") dev.off() cat("\\includegraphics{", file, "}\n", sep="") } @ \caption{The Old Faithful waiting data fitted with a parametric EM algorithm in \pkg{mixtools}. Left: the sequence of log-likelihood values; Right: the fitted Gaussian components.} \label{geyserEM} \end{figure} The \code{normalmixEM} function returns an object of class \code{"mixEM"}, and the \code{plot} method for these objects delivers the two plots given in Figure \ref{geyserEM}: the sequence $t\mapsto L_{\Bx}(\f^{(t)})$ of observed log-likelihood values and the histogram of the data with the $m$ ($m=2$ here) fitted Gaussian component densities of $\CN(\hat\mu_j,\hat\sigma^2_j)$, $j=1,\ldots,m$, each scaled by the corresponding $\hat\lambda_j$, superimposed. The estimator $\hat{\vec\theta}$ can be displayed by typing, e.g., <>= wait1[c("lambda", "mu", "sigma")] @ Alternatively, the same output may be obtained using the \code{summary} method: <>= summary(wait1) @ \section{Cutpoint methods} \label{section:cut} Traditionally, most literature on finite mixture models has assumed that the density functions $\phi_j(\vec x)$ of equation (\ref{mvmixture}) come from a known parametric family. However, some authors have recently considered the problem in which $\phi_j(\vec x)$ is unspecified except for some conditions necessary to ensure the identifiability of the parameters in the model. One such set of conditions is as follows: \citet{hettmansperger2000ani}; \citet{cruzmedina2004smm}; and \citet{elmore2004ecc} treat the case in which $\phi_j(\vec x)$ equals the product $f_j(x_i)\cdots f_j(x_r)$ for some univariate density function $f_j$. Thus, conditional on knowing that $\vec X$ comes from the $j$th mixture component, the coordinates of $\vec X$ are independent and identically distributed. For this reason, this case is called the conditionally i.i.d.\ model. The authors named above have developed an estimation method for the conditionally i.i.d.\ model. This method, the {\em cutpoint approach}, discretizes the continuous measurements by replacing each $r$-dimensional observation, say $\vec X_i= (x_{i1}, \ldots, x_{ir})$, by the $p$-dimensional multinomial vector $(n_1, \ldots, n_p)$, where $p\ge2$ is chosen by the experimenter along with a set of cutpoints $-\infty = c_0 < c_1 < \cdots < c_p=\infty$, so that for $a=1, \ldots, p$, \[ n_a = \sum_{k=1}^r I\{c_{a-1} < x_{ik} \le c_a\}. \] Note that the multinomial distribution is guaranteed by the conditional i.i.d.\ assumption, and the multinomial probability of the $a$th category is equal to $\theta_a \equiv P_{}(c_{a-1}>= data("Waterdata") cutpts <- 10.5*(-6:6) watermult <- makemultdata(Waterdata, cuts = cutpts) @ Once the multinomial data have been created, we may apply the \code{multmixEM} function to estimate the multinomial parameters via an EM algorithm. <>= set.seed(15) theta4 <- matrix(runif(56), ncol = 14) theta3 <- theta4[1:3,] mult3 <- multmixEM(watermult, lambda = rep(1, 3)/3, theta = theta3) mult4 <- multmixEM (watermult, lambda = rep (1, 4) / 4, theta = theta4) @ Finally, \code{compCDF} calculates and plots the estimated distribution functions of equation (\ref{ecdf}). Figure \ref{WDcutpoint} gives plots for both a 3-component and a 4-component solution; these plots are very similar to the corresponding plots in Figures 1 and 2 of \citet{elmore2004ecc}. <>= cdf3 <- compCDF(Waterdata, mult3$posterior, lwd=2, lab=c(7, 5, 7), xlab="Angle in degrees", ylab="Component CDFs", main="Three-Component Solution") cdf4 <- compCDF(Waterdata, mult4$posterior, lwd=2, lab=c(7, 5, 7), xlab="Angle in degrees", ylab="Component CDFs", main="Four-Component Solution") @ <>= pdf(file="WDcutpoint3comp.pdf", paper="special", width=8, height=8) cdf3 <- compCDF(Waterdata, mult3$posterior, lwd=3, xlab="Angle in degrees", lab=c(7, 5, 7), ylab="Component CDFs", main="Three-Component Solution", cex.axis=1.4, cex.lab=1.5, cex.main=1.5) ltext <- paste(round(mult3$lam*100, 1), "%", sep="") legend("bottomright", legend=ltext, pch=15:17, cex=1.5, pt.cex=1.35) y <- compCDF(Waterdata, mult3$posterior, x=cutpts, makeplot=F) for(i in 1:3) points(cutpts, y[i,], pch=14+i, cex=1.35) dev.off() pdf(file="WDcutpoint4comp.pdf", paper="special", width=8, height=8) cdf4 <- compCDF(Waterdata, mult4$posterior, lwd=3, xlab="Angle in degrees", lab=c(7, 5, 7), ylab="Component CDFs", main="Four-Component Solution", cex.axis=1.4, cex.lab=1.5, cex.main=1.5) ltext <- paste(round(mult4$lam*100,1), "%", sep="") legend("bottomright", legend=ltext, pch=15:18, cex=1.5, pt.cex=1.35) y <- compCDF(Waterdata, mult4$posterior, x=cutpts, makeplot=F) for(i in 1:4) points(cutpts, y[i,], pch=14+i, cex=1.35) dev.off() @ \begin{figure}[!h] \centering \includegraphics[width=0.49\textwidth]{WDcutpoint3comp} \includegraphics[width=0.49\textwidth]{WDcutpoint4comp} \caption{Empirical cumulative distribution function (CDF) estimates for the three- and four-component multinomial cutpoint models for the water-level data; compare Figures 1 and 2 of \citet{elmore2004ecc}. The 13 cutpoints used are indicated by the points in the plots, and the estimated mixing proportions for the various components are given by the legend. } \label{WDcutpoint} \end{figure} As with the output of \code{normalmixEM} in Section~\ref{section:EM}, it is possible to summarize the output of the \code{multmixEM} function using the \code{summary} method for \code{mixEM} objects: <>= summary(mult4) @ \section{Nonparametric and semiparametric methods} \label{section:np} In this section, we consider nonparametric multivariate finite mixture models. The first algorithm presented here was introduced by \citet{benaglia2009} as a generalization of the stochastic semiparametric EM algorithm of \citet{bordes2007sas}. Both algorithms are implemented in \pkg{mixtools}. \subsection{EM-like algorithms for mixtures of unspecified densities} \label{section:EMlike} Consider the mixture model described by equation \eqref{mvmixture}. If we assume that the coordinates of the $\vec X_i$ vector are {\em conditionally independent}, i.e. they are independent conditional on the subpopulation or component ($\phi_1$ through $\phi_m$) from which $\vec X_i$ is drawn, the density in \eqref{mvmixture} can be rewritten as: \begin{equation} \label{mvmixture2} g_{\vec\theta}(\vec x_i) = \sum_{j=1}^m\lambda_j\prod_{k=1}^rf_{jk}(x_{ik}), \end{equation} where the function $f(\cdot)$, with or without subscripts, will always denote a univariate density function. Here we do not assume that $f_{jk}(\cdot)$ comes from a family of densities that may be indexed by a finite-dimensional parameter vector, and we estimate these densities using nonparametric density techniques. That is why we say that this algorithm is a fully nonparametric approach. The density in equation \eqref{mvmixture2} allows for a different distribution for each component and each coordinate of $\vec X_i$. Notice that if the density $f_{jk}(\cdot)$ does not depend on $k$, we have the case in which the $\vec X_i$ are not only conditionally independent but identically distributed as well. These are the two extreme cases. In order to encompass both the conditionally i.i.d. case and the more general case \eqref{mvmixture2} simultaneously in one model, we allow that the coordinates of $\vec X_i$ are conditionally independent and there exist {\em blocks} of coordinates that are also identically distributed. If we let $b_k$ denote the block to which the $k$th coordinate belongs, where $1\le b_k\le B$ and $B$ is the total number of such blocks, then equation \eqref{mvmixture2} is replaced by \begin{equation}\label{rmgeneral} g_{\vec\theta} (\vec x_i) = \sum_{j=1}^m \lambda_j \prod_{k=1}^r f_{j{b_k}} (x_{ik}). \end{equation} The indices $i$, $j$, $k$, and $\ell$ will always denote a generic individual, component (subpopulation), coordinate (repeated measurement), and block, respectively. Therefore, we will always have $1\le i\le n$, $1\le j\le m$, $1\le k\le r$, and $1\le\ell\le B$. The EM algorithm to estimate model \eqref{rmgeneral} has the E-step and M-step described in Section~\ref{sec:EM}. In equation (\ref{posteriors}), we have $\phi_j^{(t)}(\vec x_i) = \prod_{k=1}^r f_{jb_k}^{(t)}(x_{ik})$, where $f_{j\ell}^{(t)}(\cdot)$ is obtained by a weighted nonparametric (kernel) density estimate, given by: \begin{enumerate} \addtocounter{enumi}{2} \item{\bf Nonparametric (Kernel) density estimation step:\ } For any real $u$, define for each component $j\in\{1, \ldots, m\}$ and each block $\ell\in\{1, \ldots, B\}$ \begin{equation} \label{densest} f_{j\ell}^{t+1}(u) = \frac {1}{nh_{j\ell} C_\ell\lambda_{j}^{t+1}} \sum_{k=1}^r \sum_{i=1}^n \post_{ij}^{(t)} I\{b_k=\ell\} K\left(\frac{u-x_{ik}}{h_{j\ell}}\right), \end{equation} where $K(\cdot)$ is a kernel density function, $h_{j\ell}$ is the bandwidth for the $j$th component and $\ell$th block density estimate, and $C_\ell$ is the number of coordinates in the $\ell$th block. \end{enumerate} The function \code{npEM} implements this algorithm in \pkg{mixtools}. This function has an argument \code{samebw} which, when set to \code{TRUE} (the default), takes $h_{j\ell} = h$, for all $1 \le j \le m$ and $1\le\ell\le B$, that is, the same bandwidth for all components and blocks, while \code{samebw = FALSE} allows a different bandwidth for each component and each block, as detailed in \citet{bch:festchrift2009}. This function will, if called using \code{stochastic = TRUE}, replace the deterministic density estimation step (\ref{densest}) by a {\em stochastic} density estimation step of the type proposed by \citet{bordes2007sas}: First, generate $\vec Z^{(t)}_{i} = (Z^{(t)}_{i1}, \ldots, Z^{(t)}_{im})$ as a multivariate random vector with a single trial and success probability vector $\vec p_i^{(t)} = (p_{i1}^{(t)}, \ldots, p_{1m}^{(t)})$, then in the M-step for $\lambda_{j}^{t+1}$ in equation~(\ref{lambda}), replace $p^{(t)}_{ij}$ by $Z^{(t)}_{ij}$ and let \[ f_{j\ell}^{t+1}(u) = \frac {1}{nh_{j\ell} C_\ell\lambda_{j}^{t+1}} \sum_{k=1}^r \sum_{i=1}^n Z_{ij}^{(t)} I\{b_k=\ell\} K\left(\frac{u-x_{ik}}{h_{j\ell}}\right). \] In other words, the stochastic versions of these algorithms re-assign each observation randomly at each iteration, according to the $p_{ij}^{(t)}$ values at that iteration, to one of the $m$ components, then the density estimate for each component is based only on those observations that have been assigned to it. Because the stochastic algorithms do not converge the way a deterministic algorithm often does, the output of \code{npEM} is slightly different when \code{stochastic = TRUE} than when \code{stochastic = FALSE}, the default. See the corresponding help file for details. \citet{benaglia2009} also discuss specific cases of model (\ref{rmgeneral}) in which some of the $f_{jb_k}(\cdot)$ densities are assumed to be the same except for a location and scale change. They refer to such cases as semiparametric since estimating each $f_{jb_k}(\cdot)$ involves estimating an unknown density as well as multiple location and scale parameters. For instance, equation (17) of \citet{benaglia2009} sets \begin{equation} \label{spEM} f_{j\ell}(x) = \frac{1}{\sigma_{j\ell}}f \left( \frac{x-\mu_{j\ell}}{\sigma_{j\ell}} \right), \end{equation} where $\ell=b_k$ for a generic $k$. The \pkg{mixtools} package implements an algorithm for fitting model (\ref{spEM}) in a function called \code{spEM}. Details on the use of this function may be obtained by typing \code{help("spEM")}. Implementation of this algorithm and of that of the \code{npEM} function requires updating the values of $f_{jb_k}(x_{ik})$ for all $i$, $j$, and $k$ for use in the E-step (\ref{posteriors}). To do this, the \code{spEM} algorithm keeps track of an $n\times m$ matrix, called $\Phi$ here, where \[ \Phi_{ij} \equiv \phi_j(\vec x_i) = \prod_{k=1}^r f_{jb_k}(x_{ik}). \] The density estimation step of equation (\ref{densest}) updates the $\Phi$ matrix for the $(t+1)$th iteration based on the most recent values of all of the parameters. For instance, in the case of model (\ref{spEM}), we obtain \begin{eqnarray*} \Phi_{ij}^{t+1} &=& \prod_{\ell=1}^B\prod_{k:b_k=\ell} \frac{1}{\sigma_{j\ell}^{t+1}} f^{t+1} \left( \frac{x-\mu_{j\ell}^{t+1}}{\sigma_{j\ell}^{t+1}} \right) \\ &=& \prod_{\ell=1}^B \prod_{k:b_k=\ell} \frac{1}{\sigma_{j\ell}^{t+1}} \sum_{i'=1}^n \frac{p_{ij}^{t+1}}{hrn\lambda_j^{t+1}} \sum_{k'=1}^r K\left[ \frac{\left(\frac{x_{ik}-\mu_{j\ell}^{t+1}}{\sigma_{j\ell}^{t+1}} \right) - (x_{i'k'} - \mu_{j\ell}^{t+1})} {h\sigma_{j\ell}^{t+1}} \right]. \end{eqnarray*} \subsection{A univariate symmetric, location-shifted semiparametric example} \label{section:SPexample} Both \citet{hunter2007ims} and \citet{bordes2006set} study a particular case of model ({\ref{mvmixture}) in which $x$ is univariate and \begin{equation} \label{spmodel} g_{\vec \theta}(x) = \sum_{j=1}^m\lambda_j \phi(x-\mu_j), \end{equation} where $\phi(\cdot)$ is a density that is assumed to be completely unspecified except that it is symmetric about zero. Because each component distribution has both a nonparametric part $\phi(\cdot)$ and a parametric part $\mu_j$, we refer to this model as semiparametric. Under the additional assumption that $\phi(\cdot)$ is absolutely continuous with respect to Lebesgue measure, \citet{bordes2007sas} propose a stochastic algorithm for estimating the model parameters, namely, $(\vec\lambda, \vec\mu, \phi)$. This algorithm is implemented by the \pkg{mixtools} function \code{spEMsymloc}. This function also implements a nonstochastic version of the algorithm, which is the default and which is a special case of the general algorithm described in Section~\ref{section:EMlike}. <>= pdf(file="spsymmfig1.pdf", paper="special", width=8, height=8) par(mar=0.1+c(5,4.2,4,1.8)) plot(wait1, which = 2, cex.axis = 1.4, cex.lab = 1.5, cex.main = 1.5, main2 = "Time between Old Faithful eruptions", xlab2 = "Minutes") wait2 <- spEMsymloc(waiting, mu0 = c(55, 80)) plot(wait2, lty = 2, newplot = FALSE, addlegend = FALSE) dev.off() pdf(file="spsymmfig2.pdf", paper="special", width=8, height=8) par(mar=0.1+c(5,4.2,4,1.8)) wait2a <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 1) wait2b <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 6) plot(wait2a, lty = 1, addlegend = FALSE, cex.axis = 1.4, cex.lab = 1.5, cex.main = 1.5, title = "Time between Old Faithful eruptions", xlab = "Minutes") plot(wait2b, lty = 2, newplot = FALSE, addlegend = FALSE) dev.off() @ \begin{figure}[h] \centering \includegraphics[height=3in,width=3in]{spsymmfig1} \includegraphics[height=3in,width=3in]{spsymmfig2} \caption{The Old Faithful dataset, fit using different algorithms in \pkg{mixtools}. Left: the fitted Gaussian components (solid) and a semiparametric fit assuming model (\ref{spmodel}) with the default bandwidth of $4.0$ (dashed); Right: the same model (\ref{spmodel}) using bandwidths of $1.0$ (solid) and $6.0$ (dashed).} \label{spsymmfig} \end{figure} As noted in Figure \ref{geyser}, model (\ref{spmodel}) appears to be an appropriate model for the Old Faithful waiting times dataset. Here, we provide code that applies the \code{spEMsymloc} function to these data. First, we display the normal mixture solution of Figure \ref{geyserEM} with a semiparametric solution superimposed, in Figure \ref{spsymmfig}(a): <>= plot(wait1, which = 2, cex.axis = 1.4, cex.lab = 1.4, cex.main = 1.8, main2 = "Time between Old Faithful eruptions", xlab2 = "Minutes") wait2 <- spEMsymloc(waiting, mu0 = c(55, 80)) plot(wait2, lty = 2, newplot = FALSE, addlegend = FALSE) @ Because the semiparametric version relies on a kernel density estimation step (\ref{densest}), it is necessary to select a bandwidth for this step. By default, \code{spEMsymloc} uses a fairly simplistic approach: It applies ``Silverman's rule of thumb'' \citep{silverman1986des} to the entire dataset using the \code{bw.nrd0} function in \proglang{R}. For the Old Faithful waiting time dataset, this bandwidth is about~$4$: <>= bw.nrd0(waiting) @ But the choice of bandwidth can make a big difference, as seen in Figure \ref{spsymmfig}(b). <>= wait2a <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 1) wait2b <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 6) plot(wait2a, lty = 1, addlegend = FALSE, cex.axis = 1.4, cex.lab = 1.4, cex.main = 1.8, xlab = "Minutes", title = "Time between Old Faithful eruptions") plot(wait2b, lty = 2, newplot = FALSE, addlegend = FALSE) @ We find that with a bandwidth near $2$, the semiparametric solution looks quite close to the normal mixture solution of Figure \ref{geyserEM}. Reducing the bandwidth further results in the ``bumpiness'' exhibited by the solid line in Figure \ref{spsymmfig}(b). On the other hand, with a bandwidth of 8, the semiparametric solution completely breaks down in the sense that algorithm tries to make each component look similar to the whole mixture distribution. We encourage the reader to experiment by changing the bandwidth in the above code. \subsection{A trivariate Gaussian example} \label{ss:trigauss} As a first simple, nonparametric example, we simulate a Gaussian trivariate mixture with independent repeated measures and a shift of location between the two components in each coordinate, i.e., $m=2$, $r=3$, and $b_k=k$, $k=1,2,3$. The individual densities $f_{jk}$ are the densities of $\CN(\mu_{jk},1)$, with component means $\vec\mu_1 = (0,0,0)$ and $\vec\mu_2=(3,4,5)$. This example was introduced by \citet{hall2005nim} then later reused by \citet{benaglia2009} for comparison purposes. Note that the parameters in this model are identifiable, since \citet{hall2003nec} showed that for two components ($m=2$), identifiability holds in model~\eqref{mvmixture} is under mild assumptions as long as $r\ge3$, even in the most general case in which $b_k=k$ for all $k$. A function \code{ise.npEM} has been included in \pkg{mixtools} for numerically computing the integrated squared error (ISE) relative to a user-specified true density for a selected estimated density $\hat f_{jk}$ from \code{npEM} output. Each density $\hat f_{jk}$ is computed using equation~(\ref{densest}) together with the posterior probabilities after convergence of the algorithm, i.e., the final values of the $\post_{ij}^t$ (when \code{stochastic = FALSE}). We illustrate the usage of \code{ise.npEM} in this example by running a Monte Carlo simulation for $S$ replications, then computing the square root of the mean integrated squared error (MISE) for each density, where \[ {\rm MISE} = \frac{1}{S}\sum_{s=1}^S \int \left(\hat f_{jk}^{(s)}(u)-f_{jk}(u)\right)^2\,du,\quad j=1,2 \mbox{ and } k=1,2,3. \] For this example, we first set up the model true parameters with $S=100$ replications of $n=300$ observations each: <>= m <- 2; r <- 3; n <- 300; S <- 100 lambda <- c(0.4, 0.6) mu <- matrix(c(0, 0, 0, 3, 4, 5), m, r, byrow = TRUE) sigma <- matrix(rep(1, 6), m, r, byrow = TRUE) @ Next, we set up ``arbitrary'' initial centers, a matrix for storing sums of integrated squared errors, and an integer storing the number of suspected instances of label switching that may occur during the replications: <>= centers <- matrix(c(0, 0, 0, 4, 4, 4), 2, 3, byrow = TRUE) ISE <- matrix(0, m, r, dimnames = list(Components = 1:m, Blocks = 1:r)) nblabsw <- 0 @ Finally, we run the Monte Carlo simulation, using the \code{samebw = FALSE} option since it is more appropriate for this location-shift model: <>= set.seed(1000) for (mc in 1:S) { x <- rmvnormmix(n, lambda, mu, sigma) a <- npEM(x, centers, verb = FALSE, samebw = FALSE) if (a$lambda[1] > a$lambda[2]) nblabsw <- nblabsw + 1 for (j in 1:m) { for (k in 1:r) { ISE[j, k] <- ISE[j, k] + ise.npEM(a, j, k, dnorm, lower = mu[j, k] - 5, upper = mu[j, k] + 5, plots = FALSE, mean = mu[j, k], sd = sigma[j, k])$value #$ } } } MISE <- ISE/S print(sqMISE <- sqrt(MISE)) @ We can examine the \code{npEM} output from the last replication above using <>= summary(a) @ We can also get plots of the estimated component densities for each block (recall that in this example, block $\ell$ consists only of coordinate $\ell$) using the \code{plot} function. The resulting plots are given in Figure~\ref{fig:gausstrivariate}. <>= plot(a) @ <>= pdf("gauss3rm.pdf", paper="special", width=10, height=5) par(mfrow=c(1,3), ask=F) plot(a) dev.off() @ \begin{figure}[h] \centering \includegraphics[width=.99\textwidth]{gauss3rm} \caption{Output of the \code{npEM} algorithm for the trivariate Gaussian model with independent repeated measures.} \label{fig:gausstrivariate} \end{figure} \subsection{A more general multivariate nonparametric example} \label{sec:generalmv} In this section, we fit a more difficult example, with non-multimodal mixture densities (in block \#2), heavy-tailed distributions, and different scales among the coordinates. The model is multivariate with $r=5$ repeated measures and $m=2$ components (hence identifiability holds; cf.\ \citet{hall2003nec} as cited in Section~\ref{ss:trigauss}). The $5$ repeated measures are grouped into $B=2$ blocks, with $b_1=b_2=b_3=1$ and $b_4=b_5=2$. Block $1$ corresponds to a mixture of two noncentral Student $t$ distributions, $t'(2,0)$ and $t'(10,8)$, where the first parameter is the number of degrees of freedom, and the second is the non-centrality. Block~2 corresponds to a mixture of Beta distributions, ${\cal B}(1,1)$ (which is actually the uniform distribution over $[0,1]$) and ${\cal B}(1,5)$. The first component weight is $\lambda_1 = 0.4$. The true mixtures are depicted in Figure~\ref{fig:true5rm}. <>= pdf("truepdf5rm_block1.pdf") par(mar=0.1+c(5,4.2,4,1.5)) x <- seq(-10, 25, len=250) plot(x, .4* dt(x, 2, 0) + .6 * dt(x, 10, 8), type="l", lwd=3, col=2, cex.axis=1.4, cex.lab=1.5, cex.main=1.5, main="Block 1", xlab="", ylab="Density") lines (x, .4*dt(x, 2, 0), lwd=4, lty=2) lines (x, .6*dt(x, 10, 8), lwd=4, lty=2) dev.off() pdf("truepdf5rm_block2.pdf") par(mar=0.1+c(5,4.2,4,1.5)) x <- seq(0, 1, len=250) plot(x, .4 + .6 * dbeta(x, 1, 5), type="l", lwd=3, col=2, cex.axis=1.4, cex.lab=1.5, cex.main=1.5, main="Block 2", xlab="", ylab="Density", ylim= c(0, 3.4)) lines (x, rep(.4, 250), lwd=4, lty=2) lines (x, .6*dbeta(x, 1, 5), lwd=4, lty=2) dev.off() @ \begin{figure}[h] \centering \includegraphics[height=2.5in,width=2.5in]{truepdf5rm_block1} \includegraphics[height=2.5in,width=2.5in]{truepdf5rm_block2} \caption{True densities for the mixture of Section~\ref{sec:generalmv}, with individual component densities (scaled by $\lambda_j$) in dotted lines and mixture densities in solid lines. The noncentral $t$ mixture of coordinates 1 through 3 is on the left, the beta mixture of coordinates 4 and 5 on the right.} \label{fig:true5rm} \end{figure} To fit this model in \pkg{mixtools}, we first set up the model parameters: <>= m <- 2; r <- 5 lambda <- c(0.4, 0.6) df <- c(2, 10); ncp <- c(0, 8) sh1 <- c(1, 1) ; sh2 <- c(1, 5) @ Then we generate a pseudo-random sample of size $n=300$ from this model: <>= n <- 300; z <- sample(m, n, rep = TRUE, prob = lambda) r1 <- 3; z2 <- rep(z, r1) x1 <- matrix(rt(n * r1, df[z2], ncp[z2]), n, r1) r2 <- 2; z2 <- rep(z, r2) x2 <- matrix(rbeta(n * r2, sh1[z2], sh2[z2]), n, r2) x <- cbind(x1, x2) @ For this example in which the coordinate densities are on different scales, it is obvious that the bandwidth in \code{npEM} should depend on the blocks and components. We set up the block structure and some initial centers, then run the algorithm with the option \code{samebw = FALSE}: <>= id <- c(rep(1, r1), rep(2, r2)) centers <- matrix(c(0, 0, 0, 1/2, 1/2, 4, 4, 4, 1/2, 1/2), m, r, byrow = TRUE) b <- npEM(x, centers, id, eps = 1e-8, verb = FALSE, samebw = FALSE) @ Figure~\ref{fig:npEM5rm} shows the resulting density estimates, which may be obtained using the plotting function included in \pkg{mixtools}: <>= plot(b, breaks = 15) @ % plot(b, breaks = 15, cex.main = 1.5, cex.lab = 1.5, cex.axis = 1.4, % cex.legend = 1.5) <>= pdf("npEM5rm.pdf", width=8, height=5) par(mfrow=c(1,2)) plot(b, breaks = 15) dev.off() @ \begin{figure}[h] \centering \includegraphics[width=.95\textwidth]{npEM5rm} \caption{Result of plotting \code{npEM} output for the example of Section~\ref{sec:generalmv}. Since $n=300$, the histogram on the left includes 900 observations and the one on the right includes 600.} \label{fig:npEM5rm} \end{figure} Finally, we can compute the ISE of the estimated density relative to the truth for each block and component. The corresponding output is depicted in Figure \ref{fig:ISEnpEM5rm}. <>= par(mfrow=c(2,2)) for (j in 1:2){ ise.npEM(b, j, 1, truepdf = dt, lower = ncp[j] - 10, upper = ncp[j] + 10, df = df[j], ncp = ncp[j]) ise.npEM(b, j, 2, truepdf = dbeta, lower = -0.5, upper = 1.5, shape1 = sh1[j], shape2 = sh2[j]) } @ <>= options(warn=-1) pdf("ISEnpEM5rm.pdf", width=8, height=8) par(mfrow = c(2, 2)) for (j in 1:2){ ise.npEM(b, j, 1, truepdf = dt, lower = ncp[j] - 10, upper = ncp[j] + 10, df = df[j], ncp = ncp[j]) ise.npEM(b, j, 2, truepdf = dbeta, lower = -0.5, upper = 1.5, shape1 = sh1[j], shape2 = sh2[j]) } dev.off() @ \begin{figure}[h] \centering \includegraphics[height=5in,width=6in]{ISEnpEM5rm} \caption{\code{ise.npEM} output for the 5-repeated measures example; the true densities are $f_{11}\equiv t'(2,0)$, $f_{21}\equiv t'(10,8)$, $f_{12}\equiv {\cal U}_{(0,1)}$, $f_{22}\equiv {\cal B}(1,5)$.} \label{fig:ISEnpEM5rm} \end{figure} \section{Mixtures of regressions} \label{section:reg} \subsection{Mixtures of linear regressions} Consider a mixture setting where we now assume $\textbf{X}_{i}$ is a vector of covariates observed with a response $Y_{i}$. The goal of mixtures of regressions is to describe the conditional distribution of $Y_{i}|\textbf{X}_{i}$. Mixtures of regressions have been extensively studied in the econometrics literature and were first introduced by \citet{quandt1972sr} as the \textit{switching regimes} (or \textit{switching regressions}) problem. A switching regimes system is often compared to \textit{structural change} in a system \citep{quandtram1978sr}. A structural change assumes the system depends deterministically on some observable variables, but switching regimes implies one is unaware of what causes the switch between regimes. In the case where it is assumed there are two heterogeneous classes, \citet{quandt1972sr} characterized the switching regimes problem ``by assuming that nature chooses between regimes with probabilities $\lambda$ and $1-\lambda$''. Suppose we have $n$ independent univariate observations, $y_{1},\ldots,y_{n}$, each with a corresponding vector of predictors, $\textbf{x}_{1},\ldots,\textbf{x}_{n}$, with $\textbf{x}_{i}=(x_{i,1},\ldots,x_{i,p})^\top$ for $i=1,\ldots,n$. We often set $x_{i,1}=1$ to allow for an intercept term. Let $\textbf{y}=(y_{1},\ldots,y_{n})^\top$ and let $\underline{\textbf{X}}$ be the $n\times p$ matrix consisting of the predictor vectors. Suppose further that each observation $(y_{i}, \vec x_i)$ belongs to one of $m$ classes. Conditional on membership in the $j$th component, the relationship between $y_{i}$ and $\textbf{x}_{i}$ is the normal regression model \begin{equation}\label{regmodel} y_{i}=\textbf{x}_{i}^\top\vec{\beta}_{j}+\epsilon_{i}, \end{equation} where $\epsilon_{i}\thicksim \CN(0,\sigma^{2}_{j})$ and $\vec{\beta}_{j}$ and $\sigma_{j}^{2}$ are the $p$-dimensional vector of regression coefficients and the error variance for component $j$, respectively. Accounting for the mixture structure, the conditional density of $y_{i}|\vec x_i$ is \begin{equation}\label{mor} g_{\vec\theta}(y_{i}|\textbf{x}_{i})=\sum_{j=1}^{m}\lambda_{j} \phi(y_{i} | \textbf{x}_{i}^\top\vec{\beta}_{j},\sigma^{2}_{j}), \end{equation} where $\phi(\cdot|\textbf{x}^\top\vec{\beta}_{j},\sigma^{2}_{j})$ is the normal density with mean $\textbf{x}^\top\vec\beta$ and variance $\sigma^2$. Notice that the model parameter for this setting is $\vec\theta=(\vec\lambda,(\vec{\beta}_{1},\sigma^2_{1}),\ldots,(\vec{\beta}_{m},\sigma^2_{m}))$. The mixture of regressions model (\ref{mor}) differs from the well-known mixture of multivariate normals model $(Y_{i},\textbf{X}_{i}^\top)^\top\thicksim \sum_{j=1}^{m}\lambda_{j}\CN_{p+1}(\vec{\mu}_{j},\Sigma_{j})$ because model (\ref{mor}) makes no assertion about the marginal distribution of $\textbf{X}_{i}$, whereas the mixture of multivariate normals specifies that $\textbf{X}_{i}$ itself has a mixture of multivariate normals distribution. <>= data("CO2data") attach(CO2data) pdf("gnpdata.pdf") par(mar=0.1+c(5,4.2,4,1.5)) plot(GNP, CO2, xlab="Gross National Product", ylab=expression(paste(CO[2]," per Capita")), cex.lab=1.5, cex.main=1.5, cex.axis=1.4, main="1996 GNP and Emissions Data") text(GNP, CO2, country, adj=c(.5,-.5)) dev.off() @ \begin{figure}[h] \centering \includegraphics[height=3in,width=3in]{gnpdata.pdf} \caption{1996 data on gross national product (GNP) per capita and estimated carbon dioxide ($\textrm{CO}_{2}$) emissions per capita. Note that ``CH'' stands for Switzerland, not China.} \label{gnpdata} \end{figure} As a simple example of a dataset to which a mixture of regressions models may be applied, consider the sample depicted in Figure \ref{gnpdata}. In this dataset, the measurements of carbon dioxide ($\textrm{CO}_{2}$) emissions are plotted versus the gross national product (GNP) for $n=28$ countries. These data are included \pkg{mixtools}; type \code{help("CO2data")} in \proglang{R} for more details. \citet{hurn} analyzed these data using a mixture of regressions from the Bayesian perspective, pointing out that ``there do seem to be several groups for which a linear model would be a reasonable approximation.'' They further point out that identification of such groups could clarify potential development paths of lower GNP countries. \subsection{EM algorithms for mixtures of regressions} A standard EM algorithm, as described in Section~\ref{section:EM}, may be used to find a local maximum of the likelihood surface. \citet{deveaux1989} describes EM algorithms for mixtures of regressions in more detail, including proposing a method for choosing a starting point in the parameter space. The E-step is the same as for any finite mixture model EM algorithm; i.e., the $p_{ij}^{(t)}$ values are updated according to equation (\ref{posteriors})---or, in reality, equation (\ref{altposteriors})---where each $\phi_j^{(t)}(\vec x_i)$ is replaced in the regression context by $\phi(y_i | \vec x_i^\top\vec\beta_j, \sigma_j^2)$: \begin{equation}\label{regposteriors} \post_{ij}^{(t)} = \left[ 1 + \sum_{j'\ne j} \frac{ \lambda_{j'}^{(t)} \phi(y_i | \vec x_i^\top\vec\beta_{j'}, \sigma_{j'}^2)}{\lambda_j^{(t)} \phi(y_i | \vec x_i^\top\vec\beta_j, \sigma_j^2)} \right]^{-1} \end{equation} The update to the $\lambda$ parameters in the M-step, equation (\ref{lambda}), is also the same. Letting $\textbf{W}_{j}^{(t)}=\textrm{diag}(\post_{1j}^{(t)},\ldots,\post_{nj}^{(t)})$, the additional M-step updates to the $\vec\beta$ and $\sigma$ parameters are given by \begin{eqnarray}\label{betaEM} \vec{\beta}_{j}^{(t+1)} &=& (\underline{\textbf{X}}^\top\textbf{W}_{j}^{(t)}\underline{\textbf{X}})^{-1}\underline{\textbf{X}}^\top \textbf{W}_{j}^{(t)}\textbf{y} \quad \mbox{and} \\ \label{sigma} \sigma_{j}^{2(t+1)} &=& \frac{\biggl\|\textbf{W}_{j}^{1/2(t)}(\textbf{y}-\underline{\textbf{X}}^\top\vec{\beta}_{j}^{(t+1)})\biggr\|^{2}}{\mbox{tr}(\textbf{W}_{j}^{(t)})}, \end{eqnarray} where $\|\textbf{A}\|^{2}=\textbf{A}^\top\textbf{A}$ and $\mbox{tr}(\textbf{A})$ means the trace of the matrix $\textbf{A}$. Notice that equation (\ref{betaEM}) is a weighted least squares (WLS) estimate of $\vec{\beta}_{j}$ and equation (\ref{sigma}) resembles the variance estimate used in WLS. Allowing each component to have its own error variance $\sigma_j^2$ results in the likelihood surface having no maximizer, since the likelihood may be driven to infinity if one component gives a regression surface passing through one or more points exactly and the variance for that component is allowed to go to zero. A similar phenomenon is well-known in the finite mixture-of-normals model where the component variances are allowed to be distinct \citep{mclachlan2000fmm}. However, in practice we observe this behavior infrequently, and the \pkg{mixtools} functions automatically force their EM algorithms to restart at randomly chosen parameter values when it occurs. A local maximum of the likelihood function, a consistent version of which is guaranteed to exist by the asymptotic theory as long as the model is correct and all $\lambda_j$ are positive, usually results without any restarts. The function \code{regmixEM} implements the EM algorithm for mixtures of regressions in \pkg{mixtools}. This function has arguments that control options such as adding an intercept term, \code{addintercept = TRUE}; forcing all $\vec\beta_j$ estimates to be the same, \code{arbmean = FALSE} (for instance, to model outlying observations as having a separate error variance from the non-outliers); and forcing all $\sigma_j^2$ estimates to be the same, \code{arbvar = FALSE}. For additional details, type \code{help("regmixEM")}. As an example, we fit a 2-component model to the GNP data shown in Figure \ref{gnpdata}. \citet{hurn} and \citet{youngphd} selected 2 components for this dataset using model selection criteria, Bayesian approaches to selecting the number of components, and a bootstrapping approach. The function \code{regmixEM} will be used for fitting a 2-component mixture of regressions by an EM algorithm: <>= data("CO2data") attach(CO2data) @ <>= CO2reg <- regmixEM(CO2, GNP, lambda = c(1, 3) / 4, beta = matrix(c(8, -1, 1, 1), 2, 2), sigma = c(2, 1)) @ We can then pull out the final observed log-likelihood as well as estimates for the 2-component fit, which include $\hat{\lambda}$, $\hat{\vec{\beta}}_{1}$, $\hat{\vec{\beta}}_{2}$, $\hat{\sigma}_{1}$, and $\hat{\sigma}_{2}$: <>= summary(CO2reg) @ The reader is encouraged to alter the starting values or let the internal algorithm generate random starting values. However, this fit seems appropriate and the solution is displayed in Figure \ref{co2EM} along with 99\% Working-Hotelling Confidence Bands, which are constructed automatically by the \code{plot} method in this case by assigning each point to its most probable component and then fitting two separate linear regressions: <>= plot(CO2reg, density = TRUE, alpha = 0.01, cex.main = 1.5, cex.lab = 1.5, cex.axis = 1.4) @ \setkeys{Gin}{width=0.49\textwidth} \begin{figure}[!h] \centering <>= for(i in 1:2){ file=paste("CO2reg", i, ".pdf", sep="") pdf(file=file, paper="special", width=6, height=6) plot(CO2reg, whichplots=i, alpha = 0.01, cex.main = 1.5, cex.lab = 1.5, cex.axis = 1.4) dev.off() cat("\\includegraphics{", file, "}\n", sep="") } @ \caption{The GNP data fitted with a 2-component parametric EM algorithm in \pkg{mixtools}. Left: the sequence of log-likelihood values, $L_{\Bx}(\f^{(t)})$; Right: the fitted regression lines with 99\% Working-Hotelling Confidence Bands.} \label{co2EM} \end{figure} \subsection{Predictor-dependent mixing proportions} \label{section:pdmp} Suppose that in model (\ref{mor}), we replace $\lambda_j$ by $\lambda_{j}(\textbf{x}_{i})$ and assume that the mixing proportions vary as a function of the predictors $\textbf{x}_{i}$. Allowing this type of flexibility in the model might be useful for a number of reasons. For instance, sometimes it is the proportions $\lambda_j$ that are of primary scientific interest, and in a regression setting it may be helpful to know whether these proportions appear to vary with the predictors. As another example, consider a \code{regmixEM} model using \code{arbmean = FALSE} in which the mixture structure only concerns the error variance: In this case, $\lambda_j(\vec x)$ would give some sense of the proportion of outliers in various regions of the predictor space. One may assume that $\lambda_{j}(\textbf{x})$ has a particular parametric form, such as a logistic function, which introduces new parameters requiring estimation. This is the idea of the \textit{hierarchical mixtures of experts} (HME) procedure \citep{jacobsall}, which is commonly used in neural networks and which is implemented, for example, in the \pkg{flexmix} package for \proglang{R} \citep{jss:Leisch:2004, Grun+Leisch:2008}. However, a parametric form of $\lambda_{j}(\textbf{x})$ may be too restrictive; in particular, the logistic function is monotone, which may not realistically capture the pattern of change of $\lambda_j$ as a function of $\vec x$. As an alternative, \citet{young2009mor} propose a nonparametric estimate of $\lambda_{j}(\textbf{x}_{i})$ that uses ideas from kernel density estimation. The intuition behind the approach of \citet{young2009mor} is as follows: The M-step estimate (\ref{lambda}) of $\lambda_j$ at each iteration of a finite mixture model EM algorithm is simply an average of the ``posterior'' probabilities $p_{ij}=\E(Z_{ij}|\mbox{data})$. As a substitute, the nonparametric approach uses local linear regression to approximate the $\lambda_j(\textbf{x})$ function. Considering the case of univariate $x$ for simplicity, we set $\lambda_j(x) = \hat\alpha_{0j}(x)$, where \begin{equation}\label{lambdax} (\hat\alpha_{0j}(x), \hat\alpha_{1j}(x))= \arg\min_{(\alpha_0, \alpha_1)} \sum_{i=1}^n K_h(x-x_i) \left[ p_{ij} - \alpha_0 - \alpha_1(x-x_i) \right]^2 \end{equation} and $K_h(\cdot)$ is a kernel density function with scale parameter (i.e., bandwidth) $h$. It is straightforward to generalize equation (\ref{lambdax}) to the case of vector-valued $\vec x$ by using a multivariate kernel function. \citet{young2009mor} give an iterative algorithm for estimating mixture of regression parameters that replaces the standard $\lambda_j$ updates (\ref{lambda}) by the kernel-weighted version (\ref{lambdax}). The algorithm is otherwise similar to a standard EM; thus, like the algorithm in Section~\ref{section:EMlike} of this article, the resulting algorithm is an EM-like algorithm. Because only the $\lambda_j$ parameters depend on $\vec x$ (and are thus ``locally estimated''), whereas the other parameters (the $\vec\beta_j$ and $\sigma_j$) can be considered to be globally estimated, \citet{young2009mor} call this algorithm an iterative global/local estimation (IGLE) algorithm. Naturally, it replaces the usual E-step (\ref{regposteriors}) by a modified version in which each $\lambda_j$ is replaced by $\lambda_j(x_i)$. The function \code{regmixEM.loc} implements the IGLE algorithm in \pkg{mixtools}. Like the \code{regmixEM} function, \code{regmixEM.loc} has the flexibility to include an intercept term by using \code{addintercept = TRUE}. Moreover, this function has the argument \code{kern.l} to specify the kernel used in the local estimation of the $\lambda_{j}(\textbf{x}_{i})$. Kernels the user may specify include \code{"Gaussian"}, \code{"Beta"}, \code{"Triangle"}, \code{"Cosinus"}, and \code{"Optcosinus"}. Further numeric arguments relating to the chosen kernel include \code{kernl.g} to specify the shape parameter for when \code{kern.l = "Beta"} and \code{kernl.h} to specify the bandwidth which controls the size of the window used in the local estimation of the mixing proportions. See the corresponding help file for additional details. For the GNP and emissions dataset, Figure \ref{co2EM} indicates that the assumption of constant weights for the component regressions across all values of the covariate space may not be appropriate. The countries with higher GNP values appear to have a greater probability of belonging to the first component (i.e., the red line in Figure \ref{co2EM}). We will therefore apply the IGLE algorithm to this dataset. We will use the triweight kernel in equation (\ref{lambdax}), which is given by setting $\gamma=3$ in \begin{equation}\label{beta} K_{h}(x)=\frac{1}{hB(1/2,\gamma+1)}\left(1-\frac{x^2}{h^2}\right)^{\gamma}_{+}, \end{equation} where $B(x,y)=\Gamma(x)\Gamma(y)/\Gamma(x+y)$ is the beta function. For the triweight, $B(1/2, 4)$ is exactly $32/35$. This kernel may be specified in \code{regmixEM.loc} with \code{kern.l = "Beta"} and \code{kernl.g = 3}. The bandwidth we selected was $h=20$, which we specify with \code{kernl.h = 20}. For this implementation of the IGLE algorithm, we set the parameter estimates and posterior probability estimates obtained from the mixture of regressions EM algorithm as starting values for $\hat{\vec{\beta}}_{1}$, $\hat{\vec{\beta}}_{2}$, $\hat{\sigma}_{1}$, $\hat{\sigma}_{2}$, and $\lambda(x_{i})$. <>= CO2igle <- regmixEM.loc(CO2, GNP, beta = CO2reg$beta, sigma = CO2reg$sigma, lambda = CO2reg$posterior, kern.l = "Beta", kernl.h = 20, kernl.g = 3) @ We can view the estimates for $\hat{\vec{\beta}}_{1}$, $\hat{\vec{\beta}}_{2}$, $\hat{\sigma}_{1}$, and $\hat{\sigma}_{2}$. Notice that the estimates are comparable to those obtained for the mixture of regressions EM output and the log-likelihood value is slightly higher. <>= summary(CO2igle) @ Next, we can plot the estimates of $\lambda(x_{i})$ from the IGLE algorithm. <>= plot(GNP, CO2igle$post[,1], xlab = "GNP", cex.axis = 1.4, cex.lab = 1.5, ylab = "Final posterior probabilities") lines(sort(GNP), CO2igle$lambda[order(GNP), 1], col=2) abline(h = CO2igle$lambda[1], lty = 2) @ <>= pdf("lamplot.pdf") plot(GNP, CO2igle$post[,1], xlab = "GNP", cex.axis = 1.4, cex.lab = 1.5, ylab = "Final posterior probabilities") lines(sort(GNP), CO2igle$lambda[order(GNP), 1], col=2, lwd=2) abline(h = CO2igle$lambda[1], lty = 2, lwd=2) dev.off() @ This plot is given in Figure \ref{lamplot}. Notice the curvature provided by the estimates from the IGLE fit. These fits indicate an upward trend in the posteriors. The predictor-dependent mixing proportions model provides a viable way to reveal this trend since the regular mixture of regressions fit simply provides the same estimate of $\lambda$ for all $x_{i}$. \begin{figure}[h] \centering \includegraphics[height=3in,width=3in]{lamplot.pdf} \caption{Posterior membership probabilities $p_{i1}$ for component one versus the predictor GNP along with estimates of $\lambda_1(x)$ from the IGLE algorithm (the solid red curve) and $\lambda_1$ from the mixture of linear regressions EM algorithm (the dashed black line).} \label{lamplot} \end{figure} \subsection{Parametric bootstrapping for standard errors} With likelihood methods for estimation in mixture models, it is possible to obtain standard error estimates by using the inverse of the observed information matrix when implementing a Newton-type method. However, this may be computationally burdensome. An alternative way to report standard errors in the likelihood setting is by implementing a parametric bootstrap. \citet{eftib} claim that the parametric bootstrap should provide similar standard error estimates to the traditional method involving the information matrix. In a mixture-of-regressions context, a parametric bootstrap scheme may be outlined as follows: \begin{enumerate} \item Use \code{regmixEM} to find a local maximizer $\hat{\vec\theta}$ of the likelihood. \item For each $\textbf{x}_{i}$, simulate a response value $y_{i}^{*}$ from the mixture density $g_{\hat{\vec\theta}}(\cdot|\textbf{x}_{i})$. \item Find a parameter estimate $\tilde{\vec{\theta}}$ for the bootstrap sample using \code{regmixEM}. \item Use some type of check to determine whether label-switching appears to have occurred, and if so, correct it. \item Repeat steps 2 through 4 $B$ times to simulate the bootstrap sampling distribution of $\hat{\vec\theta}$. \item Use the sample covariance matrix of the bootstrap sample as an approximation to the covariance matrix of $\hat{\vec\theta}$. \end{enumerate} Note that step 3, which is not part of a standard parametric bootstrap, can be especially important in a mixture setting. The \pkg{mixtools} package implements a parametric bootstrap algorithm in the \code{boot.se} function. We may apply it to the regression example of this section, which assumes the same estimate of $\lambda$ for all $x_{i}$, as follows: <>= set.seed(123) CO2boot <- boot.se(CO2reg, B = 100) @ This output consists of both the standard error estimates and the parameter estimates obtained at each bootstrap replicate. An examination of the slope and intercept parameter estimates of the 500 bootstrap replicates reveals that no label-switching is likely to have occurred. For instance, the intercept terms of component one range from 4 to 11, whereas the intercept terms of component two are all tightly clumped around 0: <>= rbind(range(CO2boot$beta[1,]), range(CO2boot$beta[2,])) @ We may examine the bootstrap standard error estimates by themselves as follows: <>= CO2boot[c("lambda.se", "beta.se", "sigma.se")] @ \section[Additional capabilities of mixtools]{Additional capabilities of \pkg{mixtools}} \label{section:misc} \subsection{Selecting the number of components} \label{ss:nbcomp} Determining the number of components $k$ is still a major contemporary issue in mixture modeling. Two commonly employed techniques are information criterion and parametric bootstrapping of the likelihood ratio test statistic values for testing \begin{eqnarray}\label{mixturetest} \nonumber H_{0}&:& k = k_{0} \\ H_{1}&:& k = k_{0}+1 \end{eqnarray} for some positive integer $k_{0}$ \citep{mclach}. The \pkg{mixtools} package has functions to employ each of these methods using EM output from various mixture models. The information criterion functions calculate An Information Criterion (AIC) of \citet{aic}, the Bayesian Information Criterion (BIC) of \citet{schw}, the Integrated Completed Likelihood (ICL) of \citet{biern}, and the consistent AIC (CAIC) of \citet{boz}. The functions for performing parametric bootstrapping of the likelihood ratio test statistics sequentially test $k=k_{0}$ versus $k=k_{0}+1$ for $k_0=1, 2, \ldots$, terminating after the bootstrapped $p$-value for one of these tests exceeds a specified significance level. Currently, \pkg{mixtools} has functions for calculating information criteria for mixtures of multinomials (\code{multmixmodel.sel}), mixtures of multivariate normals under the conditionally i.i.d.\ assumption (\code{repnormmixmodel.sel}), and mixtures of regressions (\code{regmixmodel.sel}). Output from various mixture model fits available in \pkg{mixtools} can also be passed to the function \code{boot.comp} for the parametric bootstrapping approach. The parameter estimates from these EM fits are used to simulate data from the null distribution for the test given in (\ref{mixturetest}). For example, the following application of the \code{multmixmodel.sel} function to the water-level multinomial data from Section~\ref{section:cut} indicates that either 3 or 4 components seems like the best option (no more than 4 are allowed here since there are only 8 multinomial trials per observation and the mixture of multinomials requires $2m \le r+1$ for identifiability): <>= <> set.seed(10) multmixmodel.sel(watermult, comps = 1:4, epsilon = 0.001) @ \citet{youngphd} gives more applications of these functions to real datasets. \subsection{Bayesian methods} Currently, there are only two \pkg{mixtools} functions relating to Bayesian methodology and they both pertain to analyzing mixtures of regressions as described in \citet{hurn}. The \code{regmixMH} function performs a Metropolis-Hastings algorithm for fitting a mixture of regressions model where a proper prior has been assumed. The sampler output from \code{regmixMH} can then be passed to \code{regcr} in order to construct credible regions of the regression lines. Type \code{help("regmixMH")} and \code{help("regcr")} for details and an illustrative example. \section*{Acknowledgments} This research is partially supported by NSF Award SES-0518772. DRH received additional funding from Le Studium, an agency of the Centre National de la Recherche Scientifique of France. \bibliography{mixtools} \end{document} mixtools/inst/doc/mixtools.pdf0000644000175100001440000204636013060400571016250 0ustar hornikusers%PDF-1.5 %ÐÔÅØ 87 0 obj << /Length 3263 /Filter /FlateDecode >> stream xÚÅZKwÛÆÞëWðtòs fðHOŽã4që´u”EN’DB+P ÒŠûë{Ÿƒ Év6]Èæqç¾æ»8™mfÉì¯W‰ü~}}õå·>¥…±©w³ëÛYš:Sf~VØÔ$e:»^Ï~™ï·‹tþ;ü»ÅÒónÏýâ·ë7°ÝÇÛsgR›qÚ÷Õbé“dþV·²ºŒW;oàYünŠ^ZïÂ’.²t^µ>Ü/òŒÞ6ð×,–Yáç·ðØðÙÍ_¶8‰¬~ø/ ÐnxÍ·ð¼mqäØà™³eš˜4ñ³%È\¥%Ÿõ–d>Â?§CÃß‚ôpîºA²‘ø°Ë{‹ì.‹Üd(e•É’‚)]/*æ‰mñ#‚_#ã­Š°Ãk&›ÙÄTI•YkM’åÀhê¨T¶„ÝH®GQÐ÷ ŸÏë–ÏYfY6ÿQέ¢$û‰Ðr$q@c’:ðõÔ\`SÌâÓ¿Á ë-ªâÀj}w(Ëé=Z§Y°©NSoÁÀHfŠ9B¢½ðHLýšØlá ËØù&¾ø¶U´‚ÄŸ¶NZsÛ Ì“›´°"I½Šïñ¸5Kòΰy¾Cö[æJš´KjÊÊþ?íR&Ï,CêkîY†E–ŸÑ ;h3-Š7ÖŸ% Y˜¥ù|Q®^__ýç ¯v2Kg¾HLaílµ¿úå·d¶†ñ7³ÄdU9{¤Uû™#(ØÍ~¼úWÀ°–åù¬2U„Ê)*ã«bæ]iœ ÙËr`YªWGbåœ)g ´L=\ë~P)ns}GÒ²QÒøØÄX ð9èâ`[î¸[À†{Ò÷õš¦Šo´½pÑvžXœcéèPÆ€ÌHÿÐ!ý÷b(¼RMϧÔüÓ7d1zînñ7™ßžÐVŠfÈNÛxc hÿš°þøˆ³¶ † qŒè¬îtê(tÀAGÕ6zhnŠ ÍAá\Ï„Øì‰Î•ó=ëÄÛ‰ñáNUÀ ˆ…‡÷²ö–/<Ä—‘pÎ0pxG€F!€6Üí|Þáê;9 (ÕëíHG  ¢³'aÑw¾ú0WäóþD¡ F…XÝóïk+CȦ[’*’± ™H~VÉóÁ*ðL¶Û†K¬ëëcÃódµ5?ïÑ §]$Dd±pÕaaKìÙÞ¼õÒ¨õŒDñ!-jã%nˆEúaeýˆ:Zùý ~>â¶Ø„Fún¯¹AÉ[V yPFBE1ì5¤U?n ¯åUèŠmˆHä¤×ÑĹ×Ëyÿ¾åyG–ïH¡G‘éÀƒ+1 Úû@7©Ì@‰—ˆ“%p·}úG §,ªB]ºÌ'ÆecíŠ/ô~ªÛ9 ¡n‡ÏtÅÔ‹öµ>! à4aÝ¡&K1>Öüó8ãwºlíFÞ:\Iº}`´Œƒadsœ›MW,;dzIVÜ·èùþ޼+gùW0lÙ–Rûœ¥Yð¤Â›TÐ)t™¶‚h1AW†Ö€N.8êyr„ 8PË)½ëÅp‚n'¥N-e•ŒÙ‚Iph)§_é)j¥aM$ÛVµ‡lt§>H%ø0‰EÏ€†³œÀÑ{ØçÜ`høé÷ºŽõ^9$+^Ñë5<Õ²¾ø#ݬÃpZtÛðulQCâ°|E òÀw©¥”UC¼P5Ðö6l½oçJ©…' ÁG¨îb¯ßA´eÅ8݇C ßÄ¡¾¬_ 2@)Òâ#9y_-Ö£F&Ñ#-ÜFǪT=ÒtìwÈW-5ÿœÚgu‡KvÈW±©&t3 ¥™çl ËI*L&ö.«nN’«àŽ£v$C€Ñ 1b¹ °Ýà ØJ’ѬyÁšíùØV‘ Üy;[·š«îü\ޤgÅE¥Âq$Íà’—xþ¤f>‚çPt–‰{.…´ï ’UÐX„äÊ4rŒsˆâ6¯†}˜B×”®eE\j%{Ï¥ÍlrQjÄG[ZˆÌr¥ÂÉT¸©Þ©"Ø/Ò)X7J ¤2}Â3BxI H 8‘?«Ä c‹Œ*2éEüMXF÷„ÓÁ ×ýTçrã†Dà+„ÿ|¾¢«Á>ßm‡PÈYZÍ_¿å…“~‹kl2 `S!ÉzΡDÂfeÏ| R8K‰–#?BR!½îC Ñr#D(r¶¬qìYŠÜ£âu&Ô­Ž‚ÕÔ9Ê <’×—‡±k¨ˆÄ<É®¼EÜ€w—ûOÌWã«‘e hï†3I)†~yR¥[ÛT £ W!ã=9¥b§Ivò*Ó0!…f~¼á–©¶R¼ÂD§Õ(~Ž ²†"¦óœ\@UÖžú('Æõµ; ‡ÊC´êa”+Ц!;!¨¨I–/ÏãÏ‚2glR¨}ÞPÚ'p![XδáWZ?šwᦗçô!âföÓ©³0ƒÜ¡êöq›Ëújþª;ˆ¯¡êýÙ'ânB8?CssqoŠäì#žêÙ»àe>ãæX½WÄhxAÍ?=Í=È5”92ìÜsÍb±ˆrR6œäŸ¶½&W‡–„6 <Î÷+u‚”•ÓŽ‚4ÊÐÇâÐ ®•ÆBbÏr QÁûáni½c¢J|l;þ^›Ý°>n´Ý Ú ä ÔAÒ#PÜ“ÓZ ƒ¿7ÃÙ£zQøx¼c¸ï»ã‘‹èÈÃu ±G ‚ïeÄã6tTC)—Ôy Qj*µÀ¾à/9ª1é*Ôý=¿Dã}·;žûFÆI﷪܃öƒ„RÇñZsù_ÓÌqIDU{}´ù¹‚öOH,¾1$C ©à¾™‚Ôdä£ëQ·˜Ò:l†¯ùAIÃã­DV„ô0-4>PEÙÊÞð-¹Îoé›$<> stream xÚí<ÛŽãFvïóÂ>©‹fÝXd0Yx/2ÀÖyàHl<-©Wj¹=üúžK]É’Zݶ³û‡n‘ÅbÕ©Sç~N±ž­gõìO¯þõý«/ß 3uÕÕ˜½¿µbf­:efïW³¿ÌåÍ¿ÿ·/ßÚ&í$ G#ƒúl77bþ3ü=Àßþf!í|—Ç›…Rj~‹­¾þw¸N{ŸðoˆÏøí6ò0û«Ú;†uááX(SµMÃÐà𻕛ç'üÅ›üõw‘6 =q—ûÛØ´»‘-A5TGcu³h…ž¿½i5­ƒ^Û1Üx}>òûb¾þ[;ÿ¡›6n×w[Z<=˜¬œš×¼€Ëõ[ øp ÿøèÞ µ!€FkxM–{à+4 йª2ºcœ=üÃþä†=ÂJ”óCO d´,T ÃáM¿Ã›vÞ#šŽ8úAØ‹Gî€Ðà¯ÇÐ*ì Þð¾ÄÞŽ„TÝÍý´ûãÀó2”k\Åþtßù¡6µÃõ?­?&€Ü ç •<$+ÙöˆžÏ%”|€ý@ÂÿzÞ/ãû-NzÇÔs!~WÜáä‘°[sÃ6qC™nºÑ½`*Ó¢›C(‘ìòvÖóÁ‘b†[·fpÿŽn2·>ê„#ïøÁÇZ-ûƒÛ ÇõÍV;X@Ð&¥®WÃáÝk·_„³ÁSßvà-“)±6çìá±Ö逵Áé†Ù†y=ìÐxï(}ÀýDTgè“ûÆK(œ©§9þzòä2„‘õ˜ù>¸…ÑžÓØ šœüD`úƒGÁòä@íq6k²4aГïO\4Ð26OK¤ƒünäߦÅ+Ç£nÈ“øä\.#ñÑÆ›eœÙ†àöL<øÐë0Î1%'ujzô|s(Ê!"ÞÏdÔ”ˆ„ |qpOŽQÒTa¬¦ê´â±¾Ç©zOœÌ@(½Eä‚ µö ~¨•Ħ)oáí6ª%"4‚Š…Õìø~À¾÷wžö>'ôáGšÈœy"P‰("tØs‚a¬ÃžgðîLªn1ü†®$R•ž,îÈÍAþtã•y@ÔŤXÂ7ú#Ñ'! ¥6|æ»ÂfÄ{÷½Åš'ë8d° ]{ñâåÕO- *ù dÍ%¡arwïzq s&ü[œÃÔ„cµjæ÷ôNO$0Ù’ŸÝÒÔ[¾ù,êIÒØDR%µ*kO¢;~ÁcË)ù¸6m?yúÓ ¨{–ã}:¶ƒy‹»èòL#cæAö§¯íx:RËU 9ß{‹çÎ_¾5"5Í”¬DÛM ÄÌ:¤÷r“N몱á½U ÎiÂÖÌý,ؽ1ð“‚í ­·dxºÇ´q«M‚’¯ÈÿØuÒCòÐSe¶ó]vùb3¯/p5 Czâ_<í"Öq§R”ãó,VDôÂ6`ɶ9º§Û—ìw:PÓ±’÷Û--s©„À7C¶žµn]ôÚ:A<Ü>" $œÜ°ÎBøŒba¿[qc Ýì-|éŽÍ1ðɳóàÞ#”½mÁ2FÌßx`éVÀo‰¶UKƒ ðŠaUÜ@øZ"Dù‰ïýÑ‹ú&è‚è!ˆÆå-þgn M*FñÍ[/‡›\™4ALÞçDȃÝúÁPêXuL4Ø‘÷zK$Ì;/~F7å‹OŽ˜øYLijé™’Ì«œ=Á Ò—T€—Ì}\$Ñ£Qó‡!nƒ_uœã #\,El.:Rô 7:pÆ~׳ç¨ÉÍâ,¼|ôד-…µÃÂá Ãà=±À~—ùY¤¼l¢¼,“³‘ŽG6í”j N[Kk$´)õïòÁ³x˜Êsø&(<ø„n‚ X~Sþ§ÏUµey¿E,¨ œnú/Šîbk¼ f½¢Ã¶klß#w}p¶Ühg B+ ŒýÑ -hq^ÚÓ¨©ýŽI_É¿]8X–8•£1ò¸@þ4µ˜¿b¬5^HÜÚávÛoâ‚n™@ ììd`KÑ[G6ÓJ|ÜèÊÂÕKt«A·Þ#}€¹Ï\|«Jìµ®V0ªW.8¤³àèþVY?Ï»(BT"‚B–qÞ'tëÁóî6­gÏpö,v°Ó†äð‡`„ÐóHôVg[· ¼,ªtÓLü4ZÛóÇ@õD'…eYuÍ«¬+ ºÜuysHå^28øŽÍü»Á pÒ™ÄߟøÓΫº20T=;¬gþòÆÄÚ ¬ÎTÖâøèvðÁÅtþþ¾t„¿wð÷þ¾#Âçû'ZÌtÛ½ 1n?´ÁÑ.Eé„î*!• ·µV#oWY¤u ;TG;ré¶ûÄLSÀ¹B溊"C \MXCä¹K@Þì/‚Ãz‡Þ‹ŒÏš'ïPaSS™qî»þ6†’GÎM¶P˺î²Þ ¦´tm2ï„Ù“… ƒ“#‹:^-!£«êÖ>ßAQ0¡>gYz¼¬×g£õþ‰ÈÑÜÖ•6z¶€Ÿ–áý_F?0Q§g±ùänÄ];xÉùÐÛ⎰2ýüýM«HŒ@ï^n>s{ø µk;Ä^ÄŸïhäpÞçpxI*RÄkèóŸÞä}H4æe¤Ã[X–LO"ù]Á”F`kFF‹;Ѳ¹Èóñ:@k1vóŸ Ñ­PÅ’(dQ©“ð^G=k­7¤,nP¥áͬ#[c´èt#.`¥4‹Œá‹XQ@M™ìacIÚvþUaT f9 • Ñuë²Ü±®„£N«©ó[jiA‚Ãæuû± GUÕF’ÿª(C"ÑüA“ÌãØ£š\þXÊĨ¦8œ) 6ò X>»­ê7ÚV1ÙÖâ2“ ‹ºE€Ëcì‹`’Ù@`æ‹ ŽÔX3rü²élÕÚn†£™,.Ì ½›t{]Tx ’¹G#æÂ£ ¤årzüªxL ¹ùè5²Ìêp)B§¯8wÉ"Œ7•8®U.à”hG[™£«VwqOÏc9imŠÁ M ©_ $Ó@#ÖS×ÙCêz{ˆÏ0»ª«¦n²)·eÜum[˜2aút!àa(Ýýæ–[IQÎÀJ¬–¥•Œ·¯ßg"ÐUc£v¦x§²:ÞŽp²jšè úW†¢n€}S?úJ¼=Æê€§Ö(½Mâÿ´Þ T-®fSö«ÒåF·x­8ºm§h‹ú`?š9µE'US4IjW”s⢠~ßGPÃM# Y°W1å²V±´JSµ(ac/„7û@Σ+5:øhû­C™ŽC|Øoc¥JA„“´ŒÒáí™]S1,G¥€“ƒe]Ò¤*v\e‡X@„YeX°Í7¦ìßrØn 0{ïfë³)1¨@W'2†üôqªžèž pØ?už&µ“ÃI> NLI"jùvp¦%.i}ø.9ž|XÓrª‹¶´Ÿî>æ×¨iVaš¦»" %ÎÈÀO!s_èPÌDm«AOŠÝÐqËâÂS>·ÉxéjX2Wi9.«Ã7o MÁ™;*7 &±ß•èQï¹H-X¬: ›)pšðƒsDÛÎJo|™Ødͧ5ÿ»w> KPnªÛƒ«W‘QX!V™q€êœß ®òºJX‘ú 4½Ï`•IÙV˜;e¹ÂáLè·5áÂ]ˆê3TI{5IeJRt~ѪD5)wÚW{n Ä mË}pOW^»yÈH~ AàÒĹ”\?>zEþjÈ›ÿÁU€Yªu¾§¿°;¹qAý¡ò9IÉhÛ>‚¦©º½²ìfëŒ]|‡Ä"g9]ÄÛͽçËéZ9e|d3»8¡  ¿‚ŒU ”Otf)DjÎj·>‡îb)ök^…n‚¨³YÔéªiGµ5Ùù¤áúb S]"»ýîžÀ:ˆ9p$òJÄ%ƒWzÜ$•—}¢Ý1ÉÓ iã‹~ÆÑS}©I@ööÆu=x›­÷¥ˆ:Ö±ûKÊÀu(w8yŠIcÇuÇE@IxÓ½wÛû€ó]Ñî]ä8+r$¿=#{1Ñ–˜¿Z˜+ÃÅÔ5D™iÝŒJžBM;C»¼+™FhøpÕ9› h¨iT¬`.ÂÓØ°úÅ*Ù%(Ü©('D`¾¯½ñs Ÿù> Åì=Ÿ·|]Å$P ,¯¥}ÁÐ853*WÁôxÌþDZÈSAƒáҕƤÇñ‚®Ä>…ši_ÁUƒ[íkr\\!TÆZMe%=É"|–¬òZô|ô¨–UÛ=)#Œ—e„®êX ÷w‘ùl#!›h¼«’¯ÓVµ¶)÷És®ŽÌ¸©Õ ÆãÏ™t+Xæû¢®°0˜ÄùÝ™¬„1Ý5žü¿Zñ•Y«ñX­nÿ—ÑäQ›Ö<%ÉÛx^ãÝ9ý•;Ðhy &Àd 1ɪ%@ÿ“ëdÓ|ílÑT Îd­ŠdVÕ°.PB}†Ú0uÌD‹›kñŽNÍÇ‘Su±ìýƒ®‰Ϻñ‰_j*KqzDá˜Õ)œÚÄVï–Ä|ÛURvO¦ødƒ'9>cäù_[Yݼ$É÷BÊOCM1Òc¬úU‘UŽô€ ™0"*è s§ç#@†ª]± A=KFün Y@ãÈa²úWe ŸÆÑÜ„T™1í…¤a±ˆTüÛ\‡äpþ˜Ë.¥u¢A¡0{iFîs°(:I^lOq”JíÅ’?zG·Å×:WŠžM¸?øƒQG ºQ`\š´Ü„+¬v|®-µ1µ7ÀL­æ›Ê­W7ºs~î ¶ð9&#¼ó[˜@Íòˆ bô§c!î$\5Õ²n¯ WèJE“àœOÖÕöw²·^^Õd¯ªj²©é„2ý«R¹’4Y9k+áeÏ”¢®\šš]˜´ôÕb ®­HŸ ìªÓ"“óL ­ )› Õ, ó,¹TÆ£T&Ë,m>•9 ãGõhWÇÛoϦ‡õ³ôSù$BjÐİösMbcÓZó&ñ?¼-™al}nÂŽ*Â×U(@®&‚³QAp6:†jïü1Sr2]§]é`žW’æ%ç©ÀÚS&3u°LQ8l¤7èü@—”ì»`ò“g$”Ùâ -æoÜqŠfôií3ÎIéÍŽJšñÖaöšŠ‘œMÙQX‚mÔ©RÃå;=JB9Y( – ˜œ‹ŠHàe +íο¿×é1ÕªmË:`¡Áæ«A¦, °¼X ÈßJ ˜ÿWy¹zY è©p™ËKp@•P¬5be±+»ã5h qÑçÐjý„ãkOv"|¦­sÇZD0Ž N£e7 ~ª:ÄèhÐÆ Ÿ.;ò<2¿ñçk>Fè>Cò¾w`Þ»tsÖ§q­l¡pì~$NmRz«šÊ6¶\Á—l3ÕwìÆÞ}8 ç½È—Š „ªSóÿ¶ÀÅ ´ø}ÊXoK5÷X-¤^Xùérï¶•Qyêý …5Gܹr“Ù1šT”Óy¡U¹/ …7Ý õ#ë,êᓘáðøÊÎäãþC=F•¿Ò¦ãA ìj÷^o’OzéV—ê|<\ËßhËŽ+)áÞ»÷TeÓCJPàW¾]ŸBVþ‚Å! ÆFņù†Œ_Âë?ßù9kôÂæ7É·ØnOîÐ<ÍwÁ<2Y¥!>ÚN>§€_iJ¿ƒ§DÌJoÚ6|–,ÔSGGAù÷ë÷¯þŽÅ endstream endobj 154 0 obj << /Length 2174 /Filter /FlateDecode >> stream xÚXYÛÈ~ׯüD!!Í>xe‘ñ®g½ry7”Ä‘󘈒ÇÞ_Ÿºšlj¨™µ1‘ì»¾îx¹_ÆËoÖ‹×wYºTqTÄ…Z®ï—ÊQÛe–dQa’åz·ü¬W¹ ÊóJGø/[üY…ƘàMEûçÊßã ~…;|Vðsâñïå¾>­tTôê”+Ÿ˜ŒßGü|wi‘w¯NSú®>òÀPȹ¶ûÕ×y}§_3“ëH)(N:\³ˆÅËÐZµ MåiÊ 6«P§AuÆÍQ8ÔÔ MœÓû ÷z€2L‡†èy¶»ç'NŠ?ÿ¯µ(Ÿw«ÜåQîáçRãTì«/ÄT¤Å¸¬åIR´ª…Y‡¢=öÈ‚D½þ6¸«kKáú\Z¢Í>Š• þõ3¼ÿ9âë*Ö ô±)ÑV`§P™(±Û‡ÁJ«@:Üy‹â Mv+‰3eÏÏZ~æ´>Gû¿5Ä$JríüÅ”d“3gÆÇÖDVG‚¾)·¨ôÇU’B”ŽÒmf}Ú$‰TZ8Ú÷s않Òxè—8‰%ˆà/J–'Œ%~}ÿãâš¿´Ñ_Ážœs]Ý¡6MEa‘%³àûî$JQŽâtÙL"{^¸å"Òq\Ló€ÔRÀæ;`›¢Ç@€/è!åÉO4ƒ<ɧÑÁnåEÉÉX*xÿ÷Qœ.î%tjYCB̘¨H¢¸°ÎDœ3¾TŠØ ¾Œ£tt7î߸¦5ô^qU¡X¦8Ö’’³+Љ ”Ê#›i0†Ž +5äO«0ц´BY7T Y{|~ ÓȒϲ]'ÿnSg—…Édƒ0=ËS˜¾dék¦ÎyÂÕqt\·Ââ+¹ÁÛhÌ2;Ùæ ™õããíz¡¨8AýO‹HAfFZ§Ëm³øß"J•N ­ð^iÊÑÉÀ럵ü¡[üþÜTèx†SB>Ó‚«¥‰¡n(‰Î;}‘Fg þ©?¬)@£tcÓ¶K¤­O¦橱¡ö‹4zà¬Ð„5qܳþ Ðx—ýžÀ…™4¢"¸­?GÄÒ…˜µ]3”oF‚§ˆ¦ñ‹Ž¯)3Íis ³&œ äÆåÔéH‚j&ìø@à©k¥_ÁvC圖¡õÙÞ`7ªÁ™æ¤«øÝ·/|z°ib_˜rr’-OîØò{rM¶¢}F[¡ñŸHNÖdJ u–„t†Ê¤]uwÜðˆ±s*¼.ªØ£dL-™ú$ISöä›rS;<ôÄÔ² Î×($'#‡Ò4éªSåOÞ¸z8²(k®mÔ݉°ÆÛ‡ÁÁžÈéŠñPº©eí©·5’RDl@Ì?ÓÔƒØ@Ƚ%¢TŽ´_=…6,àm”@Éß]Fw ç„#þ›‚§ÝcÉBtÚ"L…pxWy½®)Û^R&e^{øÂ$¢z.?(DXÙ „E2ÁãRæ¨Zs Z@v®9¢Ä²@Do ®PY¯1ßÇŒör®Æpåa>O±Å/±²Î*có…¨M¤/« ÇIß%¯hé\2ÂWžì+‡søwnٞ܎ü:‹ƒ]°[LB>ý=ð[Ž·?WÓy¡,ÚüI÷p„IŒÜÐîÔiÑÎÁª]m8€ hÀ¾ù·Lß8…=°Ð3ƒÁ§øQ¹‹Æ%3®S|êàwœ¤&¾÷·Šß¯`<•µw‘ËC“ gÀÙoœ$†Ãö3“ “¨›Ž&žã x¡*æš*LKŽ]Sª0*3dxR7ØóLïWLœü¶\Âä†ÊØDŠl8Ûsr¤@&ƒØ¯Úî*rÓ9$E¾¦#Y@ç S?9”q’¢çî!T€üAf¯â{êÝ“c©ÌLðۭ梡¹X¥¾¡¹ØH§ùíæ]]BóóízñûX,â endstream endobj 142 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./mixtools-geyser.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 158 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 159 0 R/F3 160 0 R>> /ExtGState << >>/ColorSpace << /sRGB 161 0 R >>>> /Length 603 /Filter /FlateDecode >> stream xœ­•Mo1†ïû+æ‡Nìñ÷5Q©„”V)+õåÐ&´  üýŽ×öR„ºU»ÒððÚž¿+aVð«¹ãçºm®vŸ?\Ãã®(„€ú½{Ü6W3ÅÿoŸAzÌ ½Rì *Xíî'írÓÁ·nÿÚu[ø´~‚ÙHÀäërÿýù°†îåðs¿ü±ÝM 7ïÛþ3º´‹ ƒË»Ü.·S¼ìaß••bJ)Ÿ›Å™|7ùWg൹O„9?«Fö›Ý6N¢Sàj P> p9\Ãâ§ÈZ¤D%i´tÄ9¬¸shdá),œ”@-Ž<‡÷ )žÂ•²(}9} +^§s̮𿆷6¹“6õ±%$šÓê»4Ñb íêŸÕJiPºJlƈ-‰­Äv„˜H`0•Øs5½®Ä~„X‘TÄaŒØiô¡KqTÑ(ntŠâ8XÓ7ú˘AŠ •Jc°GœÃŠ{ƒÊžÂÂIôòÈsXqÏsW¶Ïaáù¸o¼:}]šªïª2i¾™\ˆ[ÆÒœ-ëE­$/gªëx5ÛbP½šÆ«‰ÇB™^­þAíx¨ü…ûwQ­È!»õð²­æ!JÞ¡4E#¦âì½tð¶ÿÃwÓ rö¼_J¶^{Ѱù³ÕP²ŽëÛÓl³ÌžÆÎ™0ϻܓŒ_«„“ ר 4!Q*N}M ›rÖfƒ,=×dll¹X9)GѲNö=ÄUNK‰pZ’h‘üL8™û@md¦ìÄ'51±}=¼k~~Ö¡p endstream endobj 163 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 181 0 obj << /Length 4336 /Filter /FlateDecode >> stream xÚÅYo¹ù=¿Âè“ X³¼Éi°=’b‹ضZ´ÛcI¶åX’!É9Šþø~9CŽ(YÙ&]±f†×wñ;Iqq{!.þðâ·ï^|÷ZÚ )šV´òâÝÍEÞú¦ÕöâÝüâsùÏwüîµwy' =œt0õY-/åäüßÃÿÍåTùÉæw—S­õä¿nùù-<罟¶ðg1´ñè9~ä`õ"‚ûÝk °šF§Œ©sWöbªmœc` k.§VˆÉ«·0±7“§ºÝÀŸí2®{·Úq[<ÿ$¤Y/÷"o3ÄΡMk-CÑŠ&]`Dã´Ê (oq¦Ý.b¿¾åùç]§ãwl_Yy¥’7âbªd#lÄéõ4»TarÃ…™lnø—ŒXÀëíb/ˆP>éÉj‘ú ß"f(Døi†¿Ìo Ófõ˜È76Ï 6 jòî.âï‰kÃl<Ï’æˆ=5qa³NÛmŽ-Û‚B8™¿{$5A»‰ëtp<ÎôØÍXÈÉUN$,™¨áiHœ‡¾¸ÉŽ$eßhuø ‹l;N§ÄIšã€a8”v]è>|™s÷.BÖ­„ÞQÈv›U’ 5ùIjCTM(±ì-~U#m™Ý®ž'îËloãF!MF;©›%\Iaÿ»ÜÚ!ðÖ&QŽ 3dß7^Ó.Yäº=®sïqužúnbà$’’ž{qÇ—G~A¨o6øwµ`‚§I?Mkê…'&“ƒì@õkƒh"¢üã;qŒÕ#€]bÀj½¾ †Mt!Œ“bèÖ$±WØd£HQ¯G¦ò*qqËPÛ.ôTêÔÈ8°½éŒN*†ž¯YÛÍùm³ÎÌ6ƒ2£+š§åIjðYü_Äd‘Ô'°Œ>DäŒ(òŒáûuÎÅ ' ïf—¼5—™/DZÆlb×Bê‘AkÄ@…™ÌŸ“Ù]²Ñ§1¾ÁGŒ¸£úˆÆeC-7«Á×&åaIJQ'¯Œ]•ÒU‰^®iÑwFz½K²©Cr¢±Åqlæ½ µz´ã!¥_´Ûs 9êJ¾i©ú o]sæáQi—;󨇖 É ©[có~åw¯]^†ÐݦY?Õnotêñ=* ×Ëúx: Ñ¡O§ ÎmZ/¨‡kœR@hˆß<÷’5Š˜ÆC|—õzy Ìñ“_ããŸ~^Ö@Q¦QFA1#PdJ•ð–Ú³^‰á¬Ý,,±6òdnM{R=cô(“`»å­Î`³!5Þ‡´ªRuöÈáâÐ1íë€jƒ.b-½,ÕAÔ‹Ðxž’¯ê-6óÚM~@ùn] !të£ë±"Ñú~C·Qe“:JÛ9¶ß-x–CÒgÒ2©ë02ºÿ×ëŒð¥Th!cÂ)Ò»FùóHo#³ŽW1ʹKžÖ˜ï õ‹9¹Ï°¨‡oJþÔC´ €‡É½áCÍ7Û÷Ô9"iƒfùßD­‚/Ë—ÆÙBá_í×V”±¼LŸ·#sßvC I^zMÉ€8û¥¥\¹+Z×÷øI躶’MÐæ9YPLÿ Ø>°ÖŒC[à °1ƒúcÅ8ÂÞ°ó½L[º£B£¬JrhâUB¿«¾—Ug¦sª¥âäÀ£ªgdññLõåÏU_~LòrO!Éõ™žƒ+èP.¨Æ<–˜¥6vð.{S}j³ã„qR³ÈMèFÁÜAèÝ ˜Æù8û‰,¥qŠM9±)Ãjf½ú=GÃwü9ùNöqÙ|PVƒlUc¬Gnû¸…ÿU“ß) ÄÊú jK×Ðgr¬ºs@2…6¹Cö=ªZÔ¶·¨Y»O)b„ÂI;†Bù¼'XèÞ^ªŠxÃÎ5vØkRTÍ.¸Õê"[혪°Ï#<¨ ÿ•T…ÏUÅSÓZÈn4ÔøKú»Ûí!ˆìÏä€äªãŸ‡^•¢¥ˆz€¶¾Ôóõ|<ú6ÿywÛÁ¡ë²çYj#‹’¢ºãÚ¤Úñÿô=¶pÀ»f‰2‹;Š0£«šFä6[Jáb[Â<÷Sà3ÙðQuƒ†Óðé¬BÃaŠ*¥ãÁú=¥êKÌpÐû<ÚbCõ´g=ø·ˆ>%8<Ñ7å8Lf]ñùG‚’"çÂç?š=ÁAG3”p²¢\?qÈÐ&'GRÆŒ‚í‚[£«D‘6uI漘bFýçÉK"ax¨– ŽøœJEyëGÓ ¹õî¼T”þŠ©¨YÅ¡<åh*ÊSQ˜Ð7hýâ–¾cJWã©Úv€p@÷tº«Æ­ÿyù³ìY}*ëmÐ ³« !hþT hD£1P8ÐèÓ4£8ehÜ)Jªà¾~¬ò…¢õL¬’g9czÇÑV*Tp̈÷¶:ŒàŠŠ!Û‰`IAAÛª[³$‚ƒF†bJñÇ"µ>^r•o('»>ËZU¸zJ”ZŽ^i°qªæQšÐ†“V£>ѧútøpÌc¯í„Ý~„@Qÿfwp³‹táòºÅ£?yõ4;^%Z…Â|¢Ñ¨ Cµ¦IëÈÃÄà-ÀsÍŒÁçÁŒÁK·Ëó*W_s“ý¯¸à¨ð½~nr™(¬ÈuÙA’Ö‘óKæ3$KÉ©P¯–øõ¬_¯ç~WÙ)àl¹çƒz{Øæ.Ù÷˜þ:a‡@lt/6«®k‚­-\ª˜ƒlÂ˺>È 0¯¬æçÜy¹ 5Î]ôù^ 6Ñ• ác³Õè¯ë¾` æ½Ñßè6£ÿH3ûƪÓëSºâËûÚDÀxgKú“É¿¯zà5 YÙbÝr*u‰ç}‹Um!5Žç­N>rMLƒ§:IJÙV,³~Š1½©Ò8!{¨2 ÌÞp`ñeõL#ÈwOWYª˜ãöˆ{/M^IÅxQµ”ÉÐbòÛdÏÖ›>,±¨ûHUÖ=Ø™«¬)èè®ÓQ/˜n™‚tŽV÷ãÀOB Øû¾~¸1©n¦ù°Œë?q’å@HÁYSjÀ­º²\1L‰àR7Û³rP¶aY¶šc`1$ÅïëþŒ”½òSæšü¥¨¼â¢KGlOã Í…¥Sˆ£ˆ ßñlo‹¾pÖèn0ùº %ù£YäÜ̺°éWµC:æ²¢)]f‡—Gn*’Éž—xw…Ÿºªø©÷?U×ïÏù©Ïì_îÿÃ8¹µ£T,úé2’*WB¨µ³T‰³ç 0Á’VÈé1v»Ú<_)ê1Zæ™F«`äFæ…0JAˆïƒR©á&¸õ¶Z7Ю¬ Ý×±ÙÞª&¤7RæD|ðeÞ‡;é}Ü×}”Áÿ†l¨À§FÉo]w¸ª5ôrU.Ùóx¤ÇÞÀQw@ix4£ÌE}ƒæâ~:Ó@W¿®­7Õ»Âø@“žŸmó>Þa¢{!C¡Æm»eVPÌR@W|Û‚}.8„Ý9ä^W#³`A¬z˜_9„!ŒÅA¶Q!=VG‚¶B`ÉŽu<¥!ÜsåŽT^ø<bËôż9ýï3Juûìep×e ®³j«îúC¬XPzª4dALÞ¾yÅgøæ›–ñŽÔ-ÚÒY¸æJ4æÑ|˧¨}qUîâä§Ã‹þˆÌ(Á¤À\ïé þ·L;fðÝèHR½˜Á#0øÌ¸'É „aD«ÜZ÷µiò2›åPëšÆ s0…¦†ÃÖûª—&lyl²ê%x¼r^.W:œej£ôå_ÕœÍÐh¬)«FжPÛY3‹¼Íú3Å9É#6Àµg—q͹e\5ª¨œ_qòÀêø4÷ÕâA&Ÿj¢Ì·JJm,YÞø’«RX®|ã„=[EÓIÀËÑ©,þ}õîÅtêMÇ endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 824 /Length 2928 /Filter /FlateDecode >> stream xÚÍZÛrÜ6}Ÿ¯À£U^ƒ¸_RÞTÉò%®Š—ì­MÖ«šÃ‘Ï^ûï÷4‡œ›5’Oä­²tt7%̲¨˜cRG™’žIÁ”ÕxÁ´´L¦5ª=ÓQ0˜͘ñn¢³B¡5³Ö0å˜õš©ÈœµL æb@_ P\dÚ³P ÄB†dR*?1 ¥Ì@rxOp ßD”Ò¡ØÉ•ñA™´¿Ö ÔCžCct•^ˉƒ<ï1*È Î1ü“ò€@FŒÂc„BFh€y€—èï=S à ¥0*ƒ(ë'í †$ÆŠÆï½,`ìQ`h0•€Ð[)ú!jØ3`üòFn14³!N"lé >8”cP¨ ‡³@G !FFÀVxÐdT©ƒ}ÈRÂà CpJÔ~"E„©BÂâVi².Í÷f†$=hfR8Öú¾1 UÁR‚l¿:QNi=‘ÆU0‹„ œE½„Í×ô€ª€?ð L®„/à ?xAÎCôxå1 Ñ`‘F3oM˜HøÐ»Ho ì®)àÈð0½Ä°i†Ïajr²Ñt¤(€q­Â( ,xªBì…¨ìD"ºBt*ŠEÛHø1Ò$,5ÙA ÜŽ°aCÅÜëáK‰¸‹‘¦á‚bŽ %ääñc–¼aÉ‹êmÅ’§ìÁ›äg;|«ýíÊf™gŬÈ{¨Ó¼lŠ¶È·|ÔKܪu4W3¶%‚­ûßUòÓ•öâcZé*˜›Ï‹ÕxÿA¿æU–RëGÍU1kó–Üw>Ûˆdyl_ؾÉ6jµB[¨_¤fDZ^‹fÓ”íî¨K¯t-ªº×r™—yÎûWݼÝPî‡Ý(H$°íîl§ïíSÅ =ìGP_âwƒêu<¿ÚŠŽ­êGlûܳ/|^”yZï«Q_ªY5üÚnL°‹G©åÚÅ_·â¯ë|ZdmU?šæË¼Ä$jC&^ÖÕ²ªÛmí×ôa«l«õ-ª5½9﫪mÚ:].Ń=šI)­û9˜×uUo`l¢g§so±[õ9W–ŸN§=®B U¬¡b3Å#ˆé ›GÐÿ ÔS¶X’—éå¼Hž]¥ÝÇ<íþÐÁsõÃ_«®¼üNöö!q”A ¶JVrÚá)å9vrÊn¬þ?ÁˆÝ §Ý뤓ú>ú>ú>úpÃY埧ØA™ èó/ä0Ý/¿ÖÐG{N»!¯OóŲAf—Ñûż8þĈh¼€øvˆhŸm oåÀ†i¢ØœBäûÈÙ<Í®æi‰åOÌ‹ãž&ùà62k¼gHûÙVðþÛOoúìBß1®îqÔßzH°wlkAU„Dª \ ú:Óõ¶AÎã"Æoá."‘>„ ¤ )üuHÿaÕž endstream endobj 200 0 obj << /Length 3720 /Filter /FlateDecode >> stream xÚí[[“5~Ÿ_áÝz ,Z·V *À&lQ•ÝæaYàÁ±=—0¶{& ùõ{.’ZjËfC’¢x˜q»û´.ç~>·“‹I;ùòä󳓟¸n"[á[/'g穽p­™8ë„×vr¶˜|ßœöº™ÝžÊæ þfküw:ÕZ7Ÿ/éËÅ5>›}„7Uó@¸ÀÏ%üÛòý/.gwðíÅ©ê›%]f/ÌN•k^ðktóÁŸÿ¼[ã 8ûr[¾Cß—?ñïp‘u}qúãÙW?‘6ß™î•P¾ƒÓž,Òœ´“©1r2ÕVô]Ç//Ó <\ïŠá´h;Gû¡UŠ©”œç\KD0ÎMŒ0p7ÐÙ6ЙŒNÃÊÒX·•`2Û“YYÛaä°‰l:dçîtjœ%þÑŽð«iæÈ¨-í.°—n¿8µ]3CiÞÂYx‚C%$]جÃbu¡D¶oh$áM$‘ÚÖƒb-x®b­¶Azus:U]³œ‡eð `ú´¸_¾Œ ½ä—Y€ð8@ûÑÍí&›‹$<™*%…îíd*µ°ÆóâH‹waÐ-Žþ Ù3æ@W˜‘õ`=I`?1 ˆ8W¤4•†Œt¨ä”XUF%*'5BçœÁ”ËÖ% x^-ÉíUm5¼î\§`YÍæ¼6ò³ëGK*ÇwcÅÅUòU¶*/ÚVÞ}è+¼iÎQN[^h7]gÚ~ÈÌh²éÞ+3òÎfÌöÆvƒ_ofd««enºàU­WÍYFwÜ´K~HŒ æùa~?J¥v©’«­|jt+ðº°î·*Ñå!™Êl×Ö|7FYtAËZi0¸-cˆÔD²æè—Ô®gÏÀÕ¹fC•Œ‰ï_P°f)_ó­Ýò6hÿ ßx†/ý2ŠX¬q Ø¢/OŠ’èû©ñ¾y<ÅU“2ÝÀ¿OÀÇÝÌ7+œá.êY-fxd¹œúºß:•©^H)æÂ fÒíJ'â-ýà(¼ƒ”ï•Ùká¼*4$Ræ’‚ ¢ˆ &Õ†éTUTOAS 'ˆjÇÎ¢æ ¥è­{',9b7NtF\y„Êß7äû.V³W•Øk:á{à‘è¤ÙÛŽË …÷6®¢¶_ ÓgÑA¶5Õî…Ñj’Íöû´[?ŒvßC’ý[UnYUnÌÊZá¤+ÝÏ“ÓÞPLW]ßDטß^á÷WáÞÝ6{°!In£ÿòշɉ"ÍãÒ<øæ‚_\²kÆ;ëÍ-^À`‘Œc*‹Ï1CÅÏ,4ãWWt7¯¬/&S¥X5¨mç“`Ÿ(TžV«WÊ}=3øñrˆS»DxÁŒ×Ö†$u”SŽ*@N2n9zd1kƒ±æú¾¿œ¦7—‹!fm˜zXO%ë“’ß.Ùáëz’l]¢ø—ñIm(d¶ƒ)ÐOÎÕ½“sý^%çªLÎÑ>ªØ-Ù÷Pï‹N‡Š7Ör¾L›„i±4ÊÛû®2\+¤ì)웘}g D?Ô…dµxÙ@œ…µ½;,"PMHþ¸úéue“,!˜3±ìªj¨PDÊIFu_a“¥q<ÙØsB ŸO–¥Éúàî>© ºòÁìAsœaðç ]*¨Ž¥ºMS΂ƒÓòWróà)]b­ ¡K &K^á*€HFÞ£'²è‰à2•Á1óÍ̯ªù|Æy/%Ëðæ£lh+®Ÿ 8ÐT?ÁËœIÅØs3,¿SB…®ïœïÏgëà]!ŸjUé\Ÿ1F”®%¿}s}‡šj˜6füäÂa±/O)Ñ'zL¸ƒ3æ¦]ww0{…£àÕÕëQÁG41¹žÅè·ˆ3¢¿®¤ +¢k³ ¯l½pÕ²ÏKsX¡l8ûwrÉ-80 Äv|‡Â¬Æ¼fñy¡F`¦íÞ(b⢒⦓úƒÈ¼7çK™aŠÉ[ (úºäg+kÁ¯•‡™)e'\–Sê®ÎKçt¾ìÖ^ÎQ/.y’ËÙ.Ÿ .U¦cD@[½ÎÝfXn#$WsÂIðï&"/ ´Ár  ËÃ[^•d¤å:'%ã ¶MyP°3â´TFX­KN¯‰©XaSl£e+”1úA¡sNi"\,goÚ½$ áf*’çK~%•Õðf„Où6Ít±ÙX#lcÇd ljÛÂú*Sîx´šZ¬Ä{æu;N ÂfªÐŽô1e½<Û†gªè/? sä>È "XìbÉ©º¡Ë伋\¾Ò~‰ó8¼’HzŒ‚߬V›€Sœ/£!p»#” ,b5, ™ó}]…öRD-üP¯g¹ûMoó^Ø>½ñI”@ñÁR<´YQà›¤6ì|6»4#sßþŸ°Þn0*ÍðßÕàÂù“|  ˆ´^äD”;Dã »_øøu‘’pøVõ˜¢ª½’<´þí{åt2ìö<ºÚŽóÎ\µŽÄXçg±ø ‡Ý]bäGÕ,³…äñm…ö}4Z…o M¶“þ!œ)™vBƒmOå¹êÕóÊXR ßIH¯ðЊ«²åy*{±"r¦ 8p™Bàªå‡( k]¿§G ˜ãD¬„—(Ø…Úã–Íè0Íôcn©’Àþºõ°‘V8ÕíM¦‚&ÿ«ðÝ#§Ú#¶Ø ¶ûËèØTÅ¥!Ž{÷¦õÜ¡ÀÝ«p‡*¿‚ òä ZÖÉqÆ6r º3ïN÷Ÿ× WH&ÌiÝ8E-Þ¾ó¥ï©„¬XúáJô¡4CîiÒÇg'?Ÿ`Xh'‚8AÛM ¸„3æ«“ïl' xø˜Òò%‘®&½ (ðõäÛ“¯¹ƒ  Ò`-†ï©[€¹,¬¼Š´AH+òýÏôÀ"]*AŸy°|ðhJ¨°«¶Š4tx’;@`zØÈdð"ï‘-hÕ߃ ʪz¿x ‚RÜ¿wöò›¶7†¼LXlïÙÔĨ‘Ԫܾe£0[{e¿£¼Ãɰäá|ÚAÚw]õÙÀØ!H_( ûÄúG\½ÖuÞQ<”ŸžNeçð¨Nv¸øñ)ß\Wù`Eîd h9™’íéQÃDr8DyÐ…¯ª ÅZ ìë ý×Ý*OæóZ²×X®(Ã"bB‡.†rºïGV\ÐH›»ÅòH(¸ ƒ/W I)ÇÆ„G­`‡!í ¦¸ü9Ñ–È‚ÑIÕOÐ7ƒÚM¶“xù ôI>´ÊŽþbªm·ÕPÑw›Uöð€@þå6+Jn9Ý&‚EèÂë¸5£‡bn3‚°Ùí"B‡Ÿ×vÁ.Â/ñIÞ. ÃÞ­‹º..7v àë¸VÐøRÙÌn?,r›VvÒÁÛXãgê?€ëãê|MгÔrF ³Ñ¾øi¬Ÿ/R =ÔÎ+¹õŠš&M KÊî5>Á'w±d=Š? A?s’:m|s†ËŽÐGÔ"–Üp/õ´ÍVËÔKDMôxw•ñsøI .sNÜßf?ýã&‹0Y„-á2ìœâ ù„f \Z‚Ò«¡ô1ó.6¡‡O?Š­$Ò6_â*ïR‘O²ìhã3R´sË‚H-’Wf^ðÃèÀå·Ë(¨78&»/˜9ŽI„·—‡~¬ƒù뻣®ÊBœqƒ'¦dâ¨óÍ*Ê£èàÀ=:BPâªÏ/™ÿò6%Ý£¹@תK4•ÞÙ_ï 8Ðy­´ý,D›°ªÄïø Áÿì‚° endstream endobj 216 0 obj << /Length 2796 /Filter /FlateDecode >> stream xÚ­ZYs¹~ׯ`üDVDxpÍ±Îæ!‰íÚ”ÃQžìMÕ˜QöŠ¢¬!mùß§/ €áPÒ&[[2g0  ÑÇ×¶˜mfÅìõÙŸ.Ξ¿Ò~¦ Õž]\Îj=«|¥ëgëÙûy¹øùâ¯Ï_UeJ¤¢Ô%¬A4ÛO =¿‡¿=üíKSÍw×ðØ/–ÖÚù%ŽÞñó[xN©wðO¿ñì5ò °ûY!ìŽy]>–Ö«º,™›…/dü§üìgóã»×g³÷z®³eyŽ&Œ%æoãæ7Ä÷þm¯yärl_1ñ¶Ã7,"c3éZÕ•"úP‘¤q3oUU©|å઴Âýg¦Ê t5K¨ZämÍL}]ørÞÞ‰`Û›It‚¥ÒªJ7‘#k…Jg•ÆÏ¬j|Ãtf‚íe¡,¬¹¬T¡Ý|{¥« /Ö¤KçŠùÅrÛI¼åŸþ¬ œw«p&?¾·}ÇÓv—<Èê`#‚× ªäÿ¹ãi67Ï~ÁÏËÚåÙž-MQ+ç hÂ*ïää#ýÛz¾óÄù2DÛ·{~ GÇo $Æ¿e¶_Ë™ºuœrƒMvx½JîP½mÂ?Ímod‘èa°ñNZ-LMV 톅…¤§£ï‘„Ø$ãéΙº?ðôЧÃ.ý˜=Ҵש¦‹\tÛ•üÀŸ° pY£m´ÆGöÕ¢v¤TdAÏ¿#W.ÈÀÍßµ—©°¾g.~jUšiŠ¢9ðõ¶%Yþ²ð~Þn:34ºÌïk<×ï¦Ý¹°U 8ç·-Š<аo‡/~þ‘¿<;9ò%ëxDë Ùv{‘ÏÏÆÇ~/¦´mÃÓ[‰ñ›J9@ÏLƒÁuMÀ¼ì÷<È›ëŠíB(™‘}&2Òó· â#¤ôN¹(±Ò2RVâä‹9ek3K¨^,–º¬N¡ÖÊþîêGàÎ< îÁ] Eú|òÌ…ªÊŠ'«•vu øq§æ¸u´V©š¸–œ÷ü)ù§ ?/xp;鎕2Í®\u=ø|6zù–ÉF7»»¥®¶bŽàíõ0  lÃ/v†PÈ}dÄÕÁÞ ÎL¢]ËFß3¬&^]=à1ù’‹ààæ ½ ‡„W á\ÒÏЂsWåéù#EÙ•&kë4­$›W¸‡’uâ7Zì-nó¦èeø »¬ü%ÙqüÉ kÀOÀS€½bö4…ißEðlÇG= ”W „Õ9þÐÍC"½ˆäI;r°m’¾„¿·S6YB2R !‚ìVæw”zÝ-öÌä>a8µÏ`ÆhŸ®Ž G1mر:Îk³¤v‚SWPnVÄ,tõç$™åÇñúw9ÕšÁz­ŠQ2Bѯ<Ô)ˆ©añ{BþA4`v¦1ä2=¤ í8Ë!ßÂß$ïÀWÊn.Ûƒ,'ÄìwÒ;8Ž’™ÁL¶wöÜ›¼m‡ÝŽ8@#¿ËÒš!ÉÜm{ª÷Àzù7hü‡ð!x"ŠmäaÖ°ò9Ì‚_/¶~.d±^A}B½½‰ÄóWM3Jw hÚJpþèè–ʃ6ÁCÍà<“Ÿî:Èv¼h”§ Že¤U>’á;}ú‘P5>NØR"™¬â†>§­á±à¯:ŽöÂÉf8HºšôDç#@Þ%uÁUvÏô8LñD;²$û7S>:ÒYHpLÕÌW™§šº˜·œuíÐоæò8U€œÕÓ̈“À[Ë?f¹Úm9SBÔ@æ:²]!›*Hd5Ò@´ì¹aßM Ò”CŠÀ:8·†ôªv)Šö‘[8`± ¿2T\‚În¤èÅÁX7ì8KÆA)cðñ[H$’ql¯!ÓjF˜–+<ƒW¶‡y˜´ò5”‚ч1°€‰w<ôTºP`©øøå Ò €C>ýˆt}©jÈElÇö>•CAê¸Kùh倔H\ÃሒY( »vÍ£”ñÄ9¹vtŒÐ"Ö¸´¹Xÿ…ËMJתqÙ®D»×dªƒÿ?z*N=Ëœ}d{`×zØ1Ä?ÓXVë>$d’´á‡–ÍŸòª=õƒ3‘Ú>IÞö¹ ±Éö¡Ú¾|¥êíZÜ­“RvF™.a¦‹)dCðEA¨©°j€ÄÞƒ™§ÊÂgÑ!Äç,sß]÷t $ß é4ågïàïߢóˆå(IÉê÷ÃÑxª–oîô´U>>}Ê69ËÍhZMÓ’@-Òù=–ÎÍ52ÿ™ô“¬ßñÖ!VìE„Ý +ú3*z}5ò•X'9DBËA¼a*¼<‹G¿I(e÷mrŒC¹ú‘· ™÷Ë‹3Mé¹žÕ 0&ã´jl=[mϾœ)°ÂÉ#} ÓdàùO[3ûËîìŸð_ødt£*ãÃŒ_µ˜/¶´…U[® ‡ÓmdhãLÒWÁÏØðusó¶ËØk€±Dqøz"íÅ4 ¶,-Úð¤u-÷@† -ªµ³n.,(ÔãfÊÝÎhÕ¿H=… Lr²¾° $ Îþõ…õ¿³Ø¢¨sðÓ…6 ׯ:’ܾû J9æT™óÈÝf¿Pè oW±·/ÉÍ×/xÉw¡Ê†¤'e$vû'•bæ¯9&÷C;›©iv[î ïnòÚOU€¾Ui²žŒØÓ&†Ý­Ø•ô˜SÉ=î=êÿæ;CÅ»Uy¤›Ø òð¦‰×GǯËÂ3_rƒ §†T¬8•;öÒ 'ɹùç.È]ñÃ]wФïâ×ý`‘ušØòÕ»d­¬Q…P“uðkF¹MÐm÷pÏ'˜q}N‘²ÕSìôõŽ«7Õ A¼)Gç¡»Qýn²›èTô‰7’ä¤-Ó @ÝeØûé^h‰Ø©bû·®òŽ­qÉ5€1“—R®ª€Ò™ñZYŸÖ*HÛÆç×AáëäÊa2gµªÂB%ÛM‹][ëC÷‚-*4nªFYc²üæaP!ªÓv¢Óâtâ‰:B:>ËMšÜ½n°÷Nã„#Ú5•Í-¿|‹‹6¹wn¦ÊÁG=QgÍÑ…ÎqƒÞXóè:µM:ßÈ­a&¯‚Ø;VŠÓ†IEü5Â$¹à³V+[ºCúapéÓ%;~]‡˜Ù§ GGÊñ(ì gÓ r(~þ6yXÀƒÌ$‹Åjèÿœ]æ)\“”Oº&)õÁ¤»ØÉdi ì×þ7»RþUw,þ±;KÙïXU:“Yš?qÇ‚štÿ÷‹…b=‰°NîçBÏŸ,Mšƒ1;(/øf0÷RbvÚt¥Ý‡ühb´~]AÎ*0ª®š‡µé@¬Ë„ÌÌOš;Ó#ÿß‘™3×2^–õñ¿2ö…·ârëÉ7K^$‰dÐz¶í~¸š$—™$åQQ‡¤ù#¾ç¹{&࢓•&-é´«>ÙlðhOn²Ù0ÕUxOELÖç™îg…nH"ÇÃÇM±¤¾ÕóŸGWðC­û_&·S endstream endobj 211 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./geyserEM1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 219 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 220 0 R/F3 221 0 R>> /ExtGState << >>/ColorSpace << /sRGB 222 0 R >>>> /Length 529 /Filter /FlateDecode >> stream xœ•TMoA ½Ï¯ð¸cÏç^“~¨(m•²RQ4Ð A ¨ýûõî »" Xôö­í÷<öŒ` OêžÀU¨-ƒÖ‚±Œ« Ãó¾Á£z³ýúá ®'J£ÖÊçäú³"tþª»{Ð0Scù-5À'ƒhÑXË[UFjR€•"©ÇŒ'ô±Á! £G'˜Iô„„›ïÙFÔ¦ÀÑ W=6ѹ;ƒ‘ Ål‘oÒtà5ƒƒ{Ù`¶”ú·†\!ÁLŽù ½GÎ|²Üñ ö|¶¼ç3ìùl¹«Ÿ`Á—‚:}=UgÿÛþ·rþïYÆ¥þ!Ú0é‘0i9Ã64#S¯aÀC¨—ê]ݦ~%6ÈùVE¬=?–­A£‹X~¬!™ .b㱡BOE,é}pZ¥¶!,½NÐX‡>´½>æe ;Xð2Ô&ô|‚=ÏÞ6¥÷|†=Ÿ îù¢~i®p4*ŒZÙW!¢q­¹i§O5ç¿ñ$JäVÈ ¬»8[¾S`/W`XÌw Œ;<¢¼ Êêd7më™ÊÊ Îý<„ûÓÝqÎú˜¤—ùpœö±ªJ16rï_¾oçÏCñ¤aðg>ƒ·ÓÝn6?G7‹ßóÕâ×f3ÞC=>sÅä.—+T®…À)ÿÇ]“¾É>Ý-6's½Ð[j;AÞ5m²¬k,ùŽÕݪpWOð endstream endobj 224 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 212 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./geyserEM2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 225 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 226 0 R/F3 227 0 R>> /ExtGState << >>/ColorSpace << /sRGB 228 0 R >>>> /Length 1366 /Filter /FlateDecode >> stream xœåšKo7 €ïó+t´UDê}MZ0©È!È¡M6¨ {ÛÆ6‚þû’¢vGkoì™õìúу×þ†KÍH¤(’cPÇ Ô™ú§{G?¯gÝ«Ëß~~­>]vFcTûyùiѽ:²ôýÙ…¨«@>„ÑÞ*›öIÍ.Ô‡ƒÙéÅ\ý1¿ú6Ÿ/Ô¯çŸÕÑ¡B£~?½úóËõ¹š½þûêô¯ÅåáG5;î~š•‡8B¹ Äõ»£1:Òs$Qîòötq¨€†½¾šo©Qÿ¡Pç €8êàÇùâòôêßC5;ã!xUdIÞœlX’“7¿ÐÕèÕ·îÃGeÔçÔ1ýœuP†ÛEàGV;§.”MY›Xñ\Ü … Q¤€N\‰+6òµ‡^.ØËÑíÌJ^±‘'«1÷rÁ^nmÐú§läítV³ëåCüéNKÔ˜”£iC8³4Ìý^à5ÄFÙQI›Ð(‡ʈFgß(Ç1Ê´šÉ5Êi„²ÅÀÔ+ç1Ê‘vAn”Á¬´=YÖ©äx{_(!k³Î¦ú†xB½\Ò6­Ä{9Ò^D\É+6òØ$+¹`/¯³”7O7 8ÚyA…¨s.Sç‹›VîNu°tg»Ô‡ñúÙë–ú8Zi!ªé読oÑj–ú®‰Õâ²Ñ­C¼˜ËݾÎÕ{µ˜"HŠÃÓ=8¶'û¤Ë‰ƒÎšÐPœŠ"­1qMìÎPÅä ’ÖÄäX!T±DÌV´·9 à¬-'–'?‹ƒï3 gönäÇλ`ë5ò´uS0å„äôH—-î…=‡¤ËŸKbŽy'8h#E„„ÛpvTDÚ6fS¤°B§À6˹Ž9šíƒKˆŠivÁ)ñÆOñ/lÃÙrÄnL9ãN:P|${nÁõP²úAœ9ç°ÊéÚm†rÌ€íÊøÿȱ2PEβ{Fmͬg(Ŷ8=jd‡E^\:Né¨,S¢Sžön*ßÙ)Ò^öÍÔ¸Ì>2ì)õ€’·D÷¨Ù ÃóA \QrÑüB1qºÏžö‰¸ß/&n’1ºçŠt4¥øÜ0kXÖt/­q\á=9l Øi¼6¸DÃ9ÝwÑsU¼ ¤Ä&åÁØ”þÓ¢®¼{ \H¯P êïbäªw…ÜIë—®ï %Òé»Ògo]¬5zÎï¤Ú#˜S;Ëq(­ƒ¡˜Ûz¶=¯‡bn 5%J`w„RâïKíÎèû¦e˜KñϘG£4ƒ€¥ê'Œq4JO˜wÒýõ¼¹¦E)òS™×X”‚ŸS­!XªûÌ]ݱX+ýìj|ֲ߰?màe Öd_ÚÜF(F­…?¿"1aKq.ê[q©©ù½´9ÊÒZ¬ØTîI£ÝK=Ï—¥­29y‹æ¤­´w–‚Ý”¶óãs)Æ93ËÏ’¥Ö¶Îéäÿ\ªxÎ;áI²Tû–ŽÅ…K©n}ùõXÊxëJÉð¹í³¼vyi\Ëk‚¼&zz\š˜ø?3vÁÒJàc¶Ø{r–f¢•üà6—–dÊÙó.XºœACÄ¥·ÀõÂ.Xš`mõ?éVp¥œ K8MÝÌ¥aÁ¯­°<¯t,(Ý+/—NºwÝ™øº endstream endobj 230 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 242 0 obj << /Length 3162 /Filter /FlateDecode >> stream xÚÕZ[o#·~ß_á‡>H@Ä^†œÙt 4i¶i´Eà‡IÆ’l+kI®FÊfóë{näpÆ”­&iÑb¡Õˆ»~õú]ðWºRmÕê«ëÛ+m[*wê Z[_]¯®¾™]Ï;ëŽs=ÛÀ§Ûáó…µvöÙš~Ü=à\÷ šÙ„p…ßkøïÀãŸßw'øõÃÜ4³5=f/tsf?ðk4øµâï/O;|w_ÆïÐïõ{ør«îîæß]ÿùõ;]çœÙÆ(Óz`œx HóªI¼~׸œx᜾ZØZ5Þ3ýo`á:§žmás# v¸¬±ÐVÕ®eâo`BÃç»ù¢6vVÁ£‚…‡þnàãàÓÒóˆÌ i+«ÔòЉ[™ ª¶Î…ç9å程Ǩe˸‡ÎŽä˜¤‘­”|·òm‰üÌö½èûNŽr‰HjÙ¤‘ýÛL,í%$ ãÑ¥CàêJf³KöËö‡“ç‹ö„³÷k~î»­<íO8þHòÅÅhpK¶ú‘ÜÌA³H~ƒäî‚~±S>‘„v$"rÚ ˜±í™¦R®ÑP{Ù|›¤‹…‡/ˆÀYå]_Ý®E÷{:%Úë~­mGænSºªA€µ2å×Çz8=û¶ªQ%dx#ûižÒ%ö&Z:¿:m¾‡Ç[~Dùíe6R>È3nü#|¾€ÏWÛè¤ß“œõl)g#\ÕZ9Æ&º” ¶¤rZDϺº4ÅÞ¸(-TƉ…®\8‹õdþ)<õoöû…ñºýÕœ;çã©c³4Îyf+<œŸ/lò ¢½uâ†ïùÀû>®g¢G8ŠvßÈÖ a=òå2~†¾~ÔNYç =ç•©Z@ýVY#†iéÍE]U³ÏQÎGл壂+[FƒàÀÉ¢‡Áت/yå"m`€qÝdQ¹£@9ÛSD}ÈñÉ4†Þ÷GÔv›ä”ÐÀíDá=½ÂUˆòÛJ£v‰š‡·ä0Gñ½ì=Ú†ÁÅúÐ3ý}']O»tÃ!b¿;f?†å3Jz> ïG&¼Åepf90.Â3v‚¹¹|[Y/d¥¨6TD倗VÞŠö¾/¢£‚$à*£"ø"BïÇ„ÆÙˆ¢?––òÊ)ê®jgû[ü†ðòOmwÒpÜòøG>`úÁ_ÿñÕÕ7âˆ)/ÉofËý–%‹;¡ü0@3½GMï18} 1ru‡ŽÞ;Ц7†i‘ŽlAÌÍ¢É{pñ/y™9Ŷ3%ýr0Øï·kÙûu¾?“ÒÊ÷)¥£7+VÁù±>Éö–l&˜æñA¦ Ào²œUÊöV<Ã5>?âÄöaMУ͌ƒ0=bxºg¶áD÷%+Óm8hþ¯ZYd­çGÊw{ŽJ¢«å†¢/ù=‹«¡qŒËõ#c*ÊíF=…¶5“R¨Û­"Â$H’ wQ_‹¨Ó²Áz—Öx ¾;DUzRמvÖÃdÄ øIú^“öLH€/ u7›,N%3mM®—V“¥ØüÉÈ×1Rúa›]ñÛ![¢4\¶ÿ_Á%ì½ ¬£\}:ÉyI è³Ã®ç´ñvÿ ¼²3öožÃ\Ï«ÐHtù’>ÆP9±‘ÃÔeÆz.èÐPl=»¾'éú áðeªª*"˜ž}úì« ´4Ÿ0Ž…g\Åd«KS×À˜ðu,2†™D*$˜óÀÊr[b®¾9w–9b@v{AM™Ú1a}  {XË¡!8fÊ£{dÐ3²æ„0qWÛgTW»_Ä­£Çš"½ ŸÁó²ëÅ}`«èX0þ!¢nSF],;šÖý .ð5ÄôCÌ¡~>RTNðqâü¦ÀùrO(ÕÆÆp[`¾†°¤ûã‘}3a"mð†Ñ†›b;¥°¡Ô{Æ¥YùA˜VT>¤'ÏO¥ˆì@0éÍs¢¹L2ö?$™CyÃË‹‰dÀ$jÊ·(èÂsOX´æ§˜£ÿ0¯=‡¬MLë…„Cb?D>N¥eUZ`™…™’DC«jk^éϱ6 ‘Æ!ÀÎIz*[ÎÇ@ð!8»ã:xx/(Ï‘nÃ]<š‰ÖKÞ¬¢NÍ’¿Ë/ˆÞPvsI¦Ñ¡Èº¥3ǦžvgÆB µÒ:uXŠÒAŠt"^Œ6ÙÆ.Å1/º`CÒ–1~¿¥>(Æv 3ñB™ý!Êv×Å §g¢ýmQ`-AcŸ˜6ªnI—4c2Æ!êîVCϼv»?”³¹eVãrÙå´ã!±«þÃFº)§Èç ­ÎÙÙ;,“÷‡¬—%S!îz²»OÆ ¸ŒŽÔ¯ùG7ÛbÛyy«k”Õ&kMìwé éâ¨ÚH'bÅ%î2-¶i&æ†Y.w-ª·-ñ”zzRnáèŽs\<`[A’̶‘Õ_D5-ÊhT7ôD÷’j¬d»/¹NÍ—mÄ¥Í^æ¸Íx?0ïF°C’cÆÁd% «Qj-Ï*¡R«‘l2)$ëMhg×™¸ÐÌRœµBÁjí¦îÆ®`j†|a;Áó¸ w‹w-w£¡ÅñymfÝ’Ö-¸WS+74iåQý’+#‘ÌORÈCø“å˜{ýÀãÑ5H䜭ÿ—Ý®Ó}ŠPÜp,‘r®Q¦Õ…ý1^€,:7`Ýùì.Tª²©¤>”¡Ò˜”þ-¢ ¶CËh°Õø=eÁ'—#œ¬ è䊰|N«FOpoüZåš 2O@•Q½E‹jÎæºV¡n~VÊiè@†8à¶.g0ÁŽÂò§œl½áLëMö+ðœ/žÇVÊ…0>PQ}A9ÛLSQÅM¬ÍAqÏFTg•©ce3qMs±™l£Ä  ô*¬k•æy%™ñužÈXHmI„/:§Úà@PÉÂw¥yò"’¤¿HsþbÍíÊš ãíËù[ð:ßNô欃šm²“ÒIeÝN´5Îøá±ÒYeêb’aUU¥4É  ëwQæÒ«Ã®7§D XE9Âõ¸$zÅ|a;Ê<¤çïv{¹ÃW?Äü½ÌòpÏAƒ†8›Ñ6 €Þ㛣”%‡Ûd[ ª Y¯1U@c H‰t|[ÄNlStzj€ j£GQ¶d°›[ÄoÔJKjÄ+ÿ²QÖ,Yˈ…«BD`M49°{þÀe8 íÈ ß¾|à¢æø1‹ðt«¼çžÝ1¶ù%î|¥¬IõoWL$à¼a°â¿,)¯ZŸÎs¶ÅcZ@)=pUjkè”â¼Qb7ÆIS‡¼hö+J*é7(ëkD”ienÆ×ܵÂñ&Øói@¥4X^Õ-«½/:–7©–~[;È õx.[ˆ*YT­|ý¤,·“X?qs÷¬›‹8Az9•k›wÊ«ñϦç°âDzj¥6!^øoÞŸqªÊ⢉↻ò.“ŤØ¢rª»%ÿ¦Ø^€ÂX5u­U®=ÿeŸÝ¶æ?½$ÅËØ”¯ ‰|ž” M*ò[¼›Ó¨ìdÊx9w'¾üþ€Šïl›!9óÍÐÈ…7 µY¬h‰v“ 2©¿©é=Ü ?Žn±åêzhŠO‹·L\O·± -¹ÃzSº jb½0…?³™b"XºvÏ,b™Ÿtr¸'@Ò¼ÛÆE¾´òNqêìËÆ\A*¹¤1Å®œ¨ÉÓñ¢A#Vúq6nôË.ô·r(¬+“õÀÏvLí…žþ{¨F¨T‚xSAþo–š a©ùa)|_ÞI‚ ã»lü¾t"å*ý»*yšîž¨Ay`D0é¶Çg7BžÿhŒË³u6™0ЊϦM;Y#ý9ÝpZ<Ì&¶ü†Å°ã€›œžˆL“Òœ L‘‡þPRun‹´vYsHÝŸV|)Ú“?p ;àŠÜÐáM¤³âÎgÎJs|ºš—C§µ;®ãzªºw;Rã·ø— ZÙ Ú0u–®:×ξ?q¸¡ðJ¿©Cˆ½,ì×X0Ñévc¯j! Ô‡ÆdõáK±y[ô_£|žbËd+ðÝáR‹ºÑehüþâúÕ¿9S| endstream endobj 265 0 obj << /Length 3698 /Filter /FlateDecode >> stream xÚµioä¶õ»Å _:.ÖZ‘”()íhŠÝ@P´5›‘çðÌîÞÑL¼ýí}'EÊÛIS,¼Òäã»å“ÛI>ùòâ‹ë‹—oL91yÖä™\/'µ™Te•5®œ\Ï'o§õå×ß¼|SùÈ„7ö ˜íúÒL?Âßþö—W¶šî7ðÚ]^9ç¦K=ðû·ðCŸðߢŸãÕsäàô‹\Ðâz¥x\¹2«½glfû¬Ä-ÖG9 F®¬kèÄüµGþ}{jñüvwikš\,m[ä´ ³ëïsS ü þØÈæGœþÄ~Ÿ—¹  ÿ²rr@ÌùõŸ_^LÞšékX²ÙI¼¨e|éý»Ëº€ÛäÞç6£6Ï] $4LvyU;ýj ½G?ÑÿxãpZYÃM­ wÙ ¯ÌtÛFăíaë+ã²²h˜Êk&Ta›éfßèí¯Dí¿;lF ×½ŽO!ÀŽØw€cQº@œ\¢…­e%báòéAÖµnµî±º+úéb¶GÂ/ï9K=¢uB¶4ðzÏû<§®$ò‡Fœ¡Î¢ù^RÒ©4cÉO½Â‚jw„$I¯ÊM å]p¸*ýôÍeí¦ˆþAfWH†ƒŠ1»ðNÙ/—}q—Á¤EÜ;Üp{—p'B~Fcó  ÕnÎÉ /øŠ‹]¯Z@zTÿªP^ºªDq<r'QOÄ|wq !ñ~¡…Ày,¾†âˆ×À£ðzä@Åñf-ªöæÂ8–’ʃ\óæ$û-æ¼Í¬7{¥É®UA–;m 5€IF¬,ÒaFÉ–*«ƇéÌD·ÆŸ3ÅãŽÏf9e¹ÁùíBB­*/ó6xÅ өɃ©û•ˆG8m­yì†Ô:¾ÍS$¶¶+ÿˆÄè„ÄfšŠù¬ªk&Ù_QŸr²ôÄet«S̯ԾI0<ª{ðþ!é¤Ón·ogÈÂU<Žç®…sÙœÉUäJ#>æŠKÛ)WP-­aYD:fl`U–Ùíª“E ¨G«.Mì#S9ë=uâ¦i]ê[‹2kl©^ªK¶³¬ÿeH¿ÂüB|ÝîÕüýBÜ©{ m·w!<¨ñ’hº}ÔcàkÞöÐß²J°µE“ùªVtbù›Š-{4Œp&Ë]¡kŸáÂÁåc.—Nºª›fz­ÒWÀzºÑº'|]$A³>ó®JMèwd=ÄìˆlÏ£±vŒ‡E¥CÓYy2^[ËYPµ¨2ë딼Ðà.ÔÉÅlsMÉ'<ŠCÂQ9_Qÿ/ÜŒƒ2ÉÅÀVÂ;–¶{/ðL=ûHŠ‘¾wšÔ-I†e”L‰^~ëâ8Ö=šD6:iÓÞ§ÒÅúœm~.æ\rЃwŽ;•ÿ >ÐÝH,5N<2¨¸kÖ-Ý}-†éNPeÜ«à-?¬ÕHB¡Ó†‡h…{¬lhŒ|\ ã©1±È¬‰E­¦Z4•K {FcË(>ÇÀ¾”¸ŒßgB±(…0`¸%ƒ82D’Ãxæ½¥€cÇ qhƒ›Ìå<~° º¼'‹¤þ'ÙF4Æ:r S…ä#%Sõœ€š1W"l×s¯‹Â‚3GUJ¶þxì1Lý„<àcŸ{äY‘W¿GìÉ2YG<ØJr‚C!µƒw)¤9Eãˆé'ZÒ0›‰/Íx|›ÔfhHqë‘( æšòµ·1·/8úÛªEgݤ×:…Üuê£r²œ ®„ +žGΦ§§3ðãX|’ª\Íc³¹âNbH¡;ÍÕ÷²ŠÌŸ©‡e Š8–dÛ|èœ_h]Xg R‰áûuŒU-ÉäžGØ«ºDþšshdgÈKlÖ4çõü x4.­-jµ'Æ &@¢'´kEI nD¥·YnÙ„³Nn×h[ÁÒòwÑh¼f¶ŽëŸEµq.˜ß5y;¨É&·"N܈ٴ•\–ÃvqÀ‘dz »© ¥ñ‡"67™/‹”›l\}TîÚj´Ì¦¶ì¢ÜŸ¦BM’õ$íïkNž‰ÓNcÜ$LuU(.#d_ÅòS.õIB?(©=çhަ o9ý Ñt Ù½‡Îô<ºXãn£z7¿lôPáUá¦ÆùÌ5 l]C&TðÞÿU4KY<ª²b¸7WLª¬©r±4˜²@n)…òw£y?˜;‰ T‚‡Ç™-B4þql+ŸY+‚aÅ~E÷{í X9©çPzvñúúâÃ…!1[ú¬6p¥Y"7Û^¼ý!ŸÌaˆž+&÷¹@Ê\W¨°›É¿.þÁ}]Ý«l²Ê©1Ú}ª:B+ $m˜VUD+4TUîqº*½Vîxy“°¤ÌœŸ”Y@ŠÀþ=rŠC|sY¹®Db fbd²ºO{^™±D¨àÒw8ƒäFO¡•jB«2rûGЬý¬\š±e®ªèQ Zw#畱5‰`®ßm‡©PKæ×cib V*XîåØ>p^Y 7Aˆåª*¹ÿúDZ£93‰À@šŠQBàO9<ÒŸÕ•ÛshˆÏÆÝ¨Ëro×c¦¥–>À#£oBÖ‚áÈ×hzj°ÓšŽµ}¥†Ÿá¿Ê3¥0¬75}wãH~s’Œ‡ö£<2X~lêþ*£j Ò»‡jú°$às6iu>h±&®1ô.µÖ>–AtjCse6¢&8g¨I“åy’+„Ìè#w’¾.6³“¶½Üh»ÐÁ¦_DNK(FPÇ`³½?"ÔT“Êß”XÁÌ#^­`µ.T Ð×tn©½^­ï¶‡ŽÇ—ÁW(rQBŽoðýV¿Ï ÿ †ÁK å %NÊ—I¶Içï"(q 0›±ã‰°YÿÇ4&Ä/éë¸Òf4pS‘ú@2ú¶˜‚l`ĉ?ʤè,5dÊ »òœ°º=Ž÷}òÌÚæWõ}¼cya÷ÛýZ+úѧê6Ü®Æ;T…EDtÄM=xú†“o#Ñ@ZÞ;SøÁpÁÌÆ4©Çe¸R&PGè¾#PM—T¥Ý‘†jqk^ôá—²Þ‹ïÞªm—}žì,W›¯Ükеa¤ø¯ Â0BÍz¶<ˆTk›ìñù’qHVÕQC§êB·ëÝÃ]^]} Ž?kÛøëÄ–»¨AÑIzÕ4ƒ:¿-3[K8ÿ90úÍæÿ¡7=Ô*9a&Ì9J“IÄ §þBA)½bHK径¿?õ¸\Á~ãö™<Ÿ8ï~íT@†gÿ:q x=‡>/Ò@îþê1êœoø¸øwUêm§_åU^v«D`FDׯô+/ùØŽ%¬ÐOï`M¬!s¹¦±ý·@xt«}.ühƒì·6i*ŸæmCewØ é=üÛè\¬„;úíˆÏ|ÿíÈhQ3 ²—Ï"jˆä†Ýê±/!Yñb3êÜHJƒäŠlDÈg²šûi-ßþ9þ& Ç^+a8îy˦BÝfÏWò.´YÁô÷B$VÚˆî=¡`ýÅ{9/Î*UüåáÇþ,ýìj'SË~ªŒõ<¨q˜Ev:R!Cçÿ&´Ý´Ç/g¦o…>ŸÑ*ÄÊL)ŸÞß>7JŸÇ¥:äi‹¨´Э´ØÅÔÒïŒïR¾Ëz×Óýe¸éÂÄ»Ž76c©Š£œÖ”ù…ïGOÚ|KÚyÏBàëz@ƒ6D–P´§ ^›sJ~†eÅo`ý¹1.(ýzÙþföÅ*}ÊÏÏ××ÿÒ'ˆª endstream endobj 280 0 obj << /Length 1811 /Filter /FlateDecode >> stream xÚíX[oÛ6~ϯŠ=ØØ¤ðªK·è-Ýìam€aèöàØŠã.¶;;ée¿~çFŠR'²> bŠ<<<—‡¥²e¦²WGÏNŽOª2ÓªhT£³ÓóLÛ¦¨”Ë*_õÙé"{;9Öv2»šêÉ žÙÿMskíäYK/ËK›}ƒfòBøÛ¿÷?¿˜]ÃÛ‡©©'-5“ ³©©&xu¾.ø÷‡ë NÀÕÛ]½·rÇohäµn–Ó?N:>Ñ>õÌÖ¦0M Ž“O Ê)‰ÄñIíRáÜ9åÖuY²<ú‰Ê×ðœá²ì—7°(4Ϲ‰ö_ÅQôŠß±ÅPËž',®¡©àñc«,7ãØ€Q³™a°ñù<­„ƒ¦öÍwªð*º:—ÅÑô÷ð<‡Ãw2¶ªs§Òb¨à„v?Íi n¼{¶Wä]î¬"§/(ôŠñ؇@¬YÌ^H/ cÌVgê+ŠÚ†ÅαÃ7ñÜtËmÏYªýKæ2ZÃäß•W’oø+|¶Ã´sóõ«£ì­¤ â\‡9˜žû³¼ö…Qu–k[x×ô3²¼&\ ·ÊMì` ê\®xOT¤)uRHC<±Ýßâ>RàÀàh_ðèŒlN©^¿âÓâ@öŠ'ÒÎ]ô¦¸|¾e\Nhe¿Ñ”ý3{Ý‹ù·0¤-§˜ln£Ð2»–Ew„\ ªâpJ‘Ù¯¢+BšÔŒ+Â.ÕYºçÛ¨j÷Á[ôm%{lÉSÞ÷̱¼?7¬‚²·¼Žj¸W³aß ¿¾gd^Šûëm„T×~ R¾ð&nÌ–ª”™jBû¬Ô¤þ΄bP{æÞÒF)wÕÇ'MÓ+zàEa« êŽ/T)(ÿžKÕ\ :Ñr×wÐÌ»Ññ£ÙR=ù5)‡‹¤oƵµ­e_Ê…ç+Ѽ• šª ÕuשÀ©e…'ð˜þÐLªø©nbcÕIù®Y±€¦ž¸¡|=ÍëFU“Obrªüß²ÀóAôÃIÓÊïOO“Òi>àÐZÖ »*¬w*Å=55¿¿odè2ÔùÁù(Ä{Ä´4º/ŒF÷?¿ýýÀx"K„Jþ1Ñ—§Gš*­Îj°J§žXWž¯þ:‚ê¡n£@Ò¤¡0M:Ž\»ìÅöèø CFý6>ÌøWÊüPž»…Õ%öh!qþþÁRƒ ȱ±ã¼Ž×jb•Òjò’bºJ°Ž‘Dˆ&®‘I‚k âÓÃbÀ{Ë¿ÒÆ‘2†2¿o%L†(-‡×èæ3×*;C5Ÿ¹`_,ˆíȤŽãÕÙ$×€ž0]sÊ‘kÎØ¾vLPþŠr ݈˜­°ò]˜K5UHöù6a÷Ò˜zÈ.•ÚtÂØ»Í`‹E‰WP²\E°ox4†— a±VŽ>8}ÁXôAEwoW4ÖpžâRu5ùH÷û ~Iã\×l4AâZÐ 2¼'†×s íZW¥›„0„Sî2\†$À¸_~»¯—U¡#Þ `å7í z¾¿€f¸ .jÊŠ|)'+ ‚äQ±ü²‹C¸±AsO¹Dyý»/u¿à+ü RõXA·7â[UiCP†üí^aõpŠågü4BD]ïCY_&—ÔÛ쪛¢ñ>hÝ'_”BÚãåøÆg[”."fÝŠ/áxˆûjdY_Öº4wºoè8e{|ÉMÞEHíÞM㋦±r¬{Œývo#ß#Ú~ } Çü]±~¡» qû”‰¹ˆ“ãY­ ešèqNù¼5P7cCpfÕø±!> /ExtGState << >>/ColorSpace << /sRGB 287 0 R >>>> /Length 4916 /Filter /FlateDecode >> stream xœµ›M%G±†÷ý+jƒ •_U•K0p%¤{%˜‘X Vfø°ºÇ`sÅß'Þ÷ÌŒcÛÝBFóô9Y'*«"#ž¬sÒöë-m_núý÷Óo~û??ß>÷tìÇqlñÿß}þö׫mÿ|úý¶cûãSÚ~mÿ}ù”ð†íŸúµ—¼]e¯u{ÙÚ‘÷šŸ·wßzYtž{Ö«©^{?çËŽáõ~ﭯׅëõ\ûžË|Ý1¼Þû~_ëuáz½´coÇ|Ýq½^´§:_w ¯·´_÷z]¸^˜Ž9;ëõŸ¿÷Éÿâ›OLþ7_||ú鯲]©÷ÚÒµû ú?ñ÷ž6›¶–·÷/Û?»Ÿlï¿|úå{û»§RöVãèó5£ïº§;Ž®¯KÝïGç׌î b~ÅØRÓ~´0ö5\zÚÏ¿æœkÍ{)aðk¦»öŒÜXƒ×•n}?êvóÞ¶›ŒÔ»•‹nÂÇ—Ó~Z¯¦+ãCÆËŽëõÜìb—ùºãz½»§×á×ë5Ý{]Çw\¯{¸ãõ}œ™0Ÿ…Y² zÙ"rã²òfØ?9¯ß9:ÇžºϯžqiýVÜ뫇—\÷:‚?_=¼'ÖE ¿_?ü¾÷KÁ§ý[w•/]O­6N²ö-¸)ŸÇU|Äñæw¬2?d­+ž÷·2àž Ž}Hµ¿)Ú÷ùúÇÏ>ÿêåo_}üðñÛ»¯žÿÿýêã'³ê“Çä2t|~öñÏ϶¿~ÜþøáÏvðoþódÞšÌuØÄ͹`YıV`ŸÿâWóH6[œŸzŸøðZ 2ûëÛï¶ßW’óž¿£$_v¯‘ðO–÷=þé>°~Mʨw“ê^Ò¢sOy‘U沨ï×\DžlMlmQÙ˹Èêk‘Ý+«æ×Š%YΟG@ÖÊ…uÏ9à¹%àV5þŸSBv-,{>¶5]À3ÎW² &,å#ÎXÊ9NY²4s–r‹“–òg-å§-•ç µ9L\²û4Ì\²õ5N]¹¦Î2$N­Mqêj}˜:Ëä8uV`ΕuT5DeËsQµ²!*« wˆªY!ªfÍ[ˆÊÜ¢:3*ʲ÷ÕÙЄ.´*¢:û^BTWB.´¼ Q]dˆê:÷3DeÙRCT–.9Deùr„¨î²ß!ª»ígˆÊR¦†¨ì9DeIs„¨PÝCT½îWˆÊò¦…¨,qÊŠ*[â¤0í½,X©¶½]­#¿vTÁ‰–8Ç0ïw X÷3<÷¢²ÄÉ!*Kœ#D•ÖÝ…e?CT–85De‰“CT–8)DUôÀ 3–Ó…ÄÂs/!*Kœ¢*KøD”ÇVè•%N QYâä•%΢2³¸Uæý,[g%VT܈'Ö÷…VcNàyyLCù´ŽôhE¥oÓ ´ ÍÖä̲ÄI xóÈç½÷¼ð2Õ³¨>˜¡K ÐÊC hõÁ*çÁ[|áܰN§Jîp!®Ì7øNèQ´€Én¢ÊÀ-{ìt“݃±ô±É luÌúƒr!dċuªÙ ÎXäÓÍî\±Ê>±Ìã.½5žävá&~¦*ÚB?¹Ø‰ÙJ_R×ùË#›Éb³Ð*¹a*«%_iä¾1™Ÿ‡Ù,V![ùÆZÎxcàŠù¬…… Ü0ŸÕÖrÎW±¶Íæ³Ö î˜ÏÅ6QŽq«+–R6ŸPRžo±œ²ù |b>k˺øÅ±ù¬­éž,–V6Ÿõd9gÌgàŠù¬X]õþ†@+æ›Ç³ SZÜ1ŸUëž±%—•ÎÚ¹”ƒ jgµµ­äŠâøDõ¬v™çÇNÔÊ'8s¾-Ã,°À&¡ó±Zeœùùv¢va_¨¡;ŠèbË3Ë¡À*pæâ|¢‚ ã·\³JºØ’-_‘3jià‚b:Lȸ¡š¾PNwÔÓÅ6ñ©DΨ¨+Jjà"0oÌÅ–o鎜x êjà†ÂøBe ̽šÉØ[ ÞjœQ\W¬O,oÔ×Åè†{ä„)pÁ¸¡Æ¾PdwÚÇd+h=Æg­àã³^°Åø,ßJŒÏò-Åø »÷À ‰¸`a ÜPn_¨·;¾ÅXHb|Öž1>Ë·ã³|Ë1>Ë·ã³×c|ØûŠñY¾µŸå[‰ñY¾¥_ãµØúÃ+Æg b‹ñY¾•vÕb|–oGŒÏšÄ;Æg]âã“nXH_(‹oTÜÅ0«Ÿå[ñÁ®b|ð«ß͸£~,†eÅøàY1>˜VŒ¯Ÿó Û ñòwäü0Ÿ ÂuD>泡çÈýa>¤«F.óÙR{˜OìÄùl¯Ÿå[œÏõŠñÁ½b|¯ì+Ä÷nJôvb!´ps“OÿwýÅ|ù3hù3iú3iú3iú3iú3 NðgáôgáôgáôgáôgáôgâògáôgáðgÖéåώß;ªòògÇáÏŽôç~¨…tî,”ÓŸÒŸ'ÊŸ÷6ýy!ýy!»Ø…ôgÂ[ÃýÙ°žÛôç…ôg`ðçÎóšþ¼þÜù eú3z ¼M6ôWéÏ éÏ][±ÃŸ{Vàþ¼þŒ&˜S'^Hî\ò§?/¤?Cx(ùóBvØ éφ:Aù³Šÿôç‰òç…ôçÎÓŸ O)^HFh,ý]Q}$—Lþ¼þléÂ^Õýê"¤?tVnM¶v¥Ó;äÏ6;ýy!ý™¨CџѳÒIäÏ Ùk÷®tFÞ²£uNà ܠK¡a\¼äîÐHtž¥Kt`Z42¿Òp¤ÑH}fèéÀ4édTåÄH¥‘þ'gF.˜2Ò5ÆÓ¦™ò.ÖHJ„›u`ªu:yÓ­‘[ç'¹N²èi׋õdå%¿Æ¶öÍãK°˰ûáë†ÝyËMÃÎv½™nØiØÙ®§ÎO†ízѸܰÓ°q›eÆ+ÃÎ0T^6.{âù˰˰ëé÷Ã0ìÓw†a;»aãcx>ð­žp~ݰ!²g0ìÀ4ìb×ߘ† Ñ2ìÀ4l0×+7l4î5öbvµ´Ò‰ ›=Ç«Œ‚Y?ܰÓ°Ñø§`ؓݰÓ°Á¥nÓ°Ó°±CsˆiØ‹eØiØiØiØä¶MÃs}qîú’È4ìÀ4ìÀ4ìÀ4ìÀ4l0;57ìÀ4ìÀ4ìÀ4ìÀ4lîXÛ4ìÅ2lˆóÁ ;0 ›ÌãɰÓ°)jŒ_†]ÕæOÃLÃæŽ/ÃLÃLÃ^,ÃLÃLÃLÃLóŸpÃ^,ìç‹iØiØiØdÎRpÓ°ÁܱuÃLÃLÃLÃ^,ÃÌ…70 ;ð9æÓùóIvÜÇ|:×1ŸÎç˜O®çnØà.îc>Å2ìÀÓ°i5Á°§ag½¶x¶ó4lçiØÎ?ذ™x–-Gìκ:»{••`ãk6¸Ç$ØXQñ‰ìIìžUm%ؽj­–`Û¢wH°'Q°û¥}r 6šì¼žP/d®¡¥æ&¶;v²N…-œKv`Zv`j6ø¢Óȳñ6.Q.Ú‹eÚéh: WíÀtm&ÙÌÞ-|–AÓCÁlÜ·S¸Ñâ³EuãF²,)wJ>ÉîÜ‹%Ý|ˆÃ½Y7Âd‹æÚ˜Þ˜âÔiMóNhyx¾RïÀtïd+}–‹S¾“­ìlÑݾS¿=¬éß +8*•ð;0<‡0îੵ,.áiá³…ÇØ3G˜ML̵.U/®â8 }¾\<0e§Õô~öÞ8-¦ˆë8N‹-¤ûx` y²Ê‘Ãmœv ´³rZx¿HÊÁw°òd•G{CÒòÀôrN[x° Öý 3Ÿìjåb~¸›sš©˜’ó„J%w§¦+¥s(ˆüÌx]ÐÓГU6=>uE¿’æg(ºU2–À¡è“]Ñí2Üü³kd‹Í×¶wß÷~Ü~øÎºÐnf­Ûãü<ÙÒú2Þ?ø/ÛŸôEûä_´ßÞm²Š”Ãÿô/ ªz eK¾gÿŒ¯ÖóÍø~=’Á£ÙÒöÂ{¸ðQhVŠp‰8?ò;&€û”–øû.þîÇî€ýðߌ¤cü8À–ÔüúX=jo+s›ãéÕy»¹l¿H““ãó@<²¥¤êÍ1ðT»æx›B»`s¼pŽ×›ÆëËs<êÿ½Æ çx½9ާW]s<úo|gÙÇ;Žþæ‡ñÖ7áÛÅc<Ú ºÆ çx½ùaüÉ}û“­Æ/lë{q|ˆ;ªÊ"|ׯ™Gèü0t¢<Z`;¼óóä쿉ïŒc -eµëÈÞvŸ¸áÅÏ“­ÛôPzÿ`ÃÞÌMF6^v {‘+È鶸ܘxïŸÌc`ùÖ˜iŒv]šøy0G°ÒôÕJgK;×1ª­Œþ°áVgÓõõ>ãïa s0Çt¶ÝzTÖ£›ß±n»iÛòæ¶Þ`.à™N†Ñ–Xƒ¸U€ÖCUG¿O¬²Ãíaî*ªîð±v-õ›l§õÅc½sÆ–PÑä‹ ”³ÿ®[RÖ«MVqѶ×íóVlu¶Òíó„müôðó†­ ÜÐåÐ8‹¶ê±CÒÇV ¶bs ¶Ã¡ïYôÂí€Þ´}À…úS«Xðñ9% nAâ¾|‚ƒL@1«8œ¼S w _¨¥IšÌ’\õ§Éƒ­ÎÎbx^,·lŠõô4s+k²ö½h;[æâ_©Ç¸/¨Ø~<cÌožþRÔÑ endstream endobj 289 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 272 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./WDcutpoint4comp.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 290 0 R /BBox [0 0 576 576] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 291 0 R/F2 292 0 R/F3 293 0 R>> /ExtGState << >>/ColorSpace << /sRGB 294 0 R >>>> /Length 6057 /Filter /FlateDecode >> stream xœíœM-·q†÷ó+Î&@²P»ùÑìîe¬D $€s/àE•}íX˜¹J$ùû©÷}‹¬Y‘4ÈÂ0lëQöáa³ÈzHö”ǯåñõ㿞~mÿýÅwÿúO¿||ùáißö}äÿýðå¿Ø¿=Ç?ýÛ¿?öÇïžÊãWö߯Ÿ >ðøç§ûÜZ}œmëýñò8öºõâøüøð½Ë¢1¶ª«¥ŸÛ=ÖeÇtý¾¶ãŽë¸^û½Õ¶®;¦ë÷½]g\ÆõvìÛ±¯ëŽq½ïe+}]wLײW\ÆõWͱZ'®ÿò£7þo¿ûÆÿî·ŸŸ~ñUµ'õñ÷rn~Aÿ#¾êv—‡5ÛQ_ûŵÿÝãã×Oÿø‘÷þñÂ¥µíè¹ôxKé«oåÊ¥ûJ×Ö·«æÒõ-¥ï"J¿¡lëeÛTö-_Üî²;~Ëoî½n­¥Âoiî~WÄFŽ'}ÜÛÞû¶u2Ò±[Wnꄯ/—íšWËYñ%ó²c\¯‡=ì¶®;ÆõÖ¬OÇíãz/×ÖãþŽqÝ«;¯§Úç–IÍñEj%{ § "+;Ãöƒíú£¥ËØ·r{ñúæâÖ»âÖß\¼Õ¾õYùñæâ}Uüz{ñëÚNU¾lßëU>t=ý`#k`Ÿx”Nù<ŸâkœþÀYæçŒuÍ#àú^\úßkÇãèöïTÛ¯¾ùó·_|ùÍË~óùÓç?=>|óüç?ýñ›Ï?T?xKŽBà¿ÿï?ÿáùÓ㟿ûô‡o?}úîoËKm·-ŒÏZFEÜ+*öå?|µîdMñÈÍÓ¯/ï½!°¿ýôøÍãóOÍÈu«?2#Ÿö|ÏïO×5ãýéÚ1|-ª˜îõ­• ±•ds º·s!O6$GPÛÚ²qú ²îu±ÉüŒº ù±'äTØ·ZŽmo Ï4¨ÞÛHX ‚+°mu$<¢¹€#·W±œ¬Ô=·X©57Y±(NmVê‘­Ô3·Z©wn¶ÒJn7LÍ©áŠõÓÔrņ×ÜtízÕt ¹élhÊM×û«¦³@ÎMgóËHµ²„ª§ZÙè\S­Ž¶í©V6)\©V‡U2Õê°Ü-ÕÊÆÛ–j5*&”À¶Ý©Vã@h“`ªÕ¸·–juD` ÅeªÕi•Lµ:Ç6R­,Zzª•…KMµ²xÙS­®¶]©V×±T+ ™žjeÿPS­,höT+Lî©VwßÎT+‹›#ÕʧE­ªNé Ëv êÀc;΄–_ oL‚ -pö=aÝ®’°o£&[Oµ²À©©V8{ªU-wÛ6R­,pzª•NMµ²À)©VmG X1œv$ck©V8%ÕªÝÂbvLµÂjeÓR­,pjª•Ξjebq±VÅÀºö¸9‘;fÃ*ßmŽÀ¡²¼§¡uÃQðïmR¹Ö»­’ûÃÆäʲ8¥/áµÝ5ð4Ó³Z1µVØÆlÞʧ m~°™FÄZÚ¬sŸŽÓüÅç *û…v0¾ R”Ä `Q'[-6‰ÄøDã$¶yÌÒƒÆ,Ïía‰ª Aú~‹ ä‹}MäŽQ>ñÀ0^jcøÄ¯®Çéßojhýâf?ÌFúVnŒ<à†–lÖ ý$hÊnÁWy -_hÌnßw¢q›ÍÎp­z¡/ƒ+š3qGE{;½àíÙm,¿ ùÄzL¼ŸP1kÏ`k¨Ÿ à†öt#hÏÄíÙ­':_hÏ~LüŸš…•µg·þÔ:¹â‡%îhÏŽÑ•íe·öìÖÞ|¾­¥àíÙ5î[pÙÔÙoå`>ÈncûW³iÊ&Ïijg·ÇÄçÝì‡Úô ®l/‹0›?WL  ÆX³Žb±V{Ûµ)4ñ‰94ñI4ØâÌÂ1qÃ4š¸OqqLVëo±f3i°[=3WÌ¥‰:ê!ã³iâÓiâói0:~Ë\1£&îèØ‰Dâ “j°Å[¹2L«‰æÕÄ&ÖÄ'fÖÄ\ªYŒ¥•¤­ÆŸ¸cvM<ˆ‰/ŒqÁȆïÌ7L±‰̱‰OL²‰o ‹Á6¡Ý¹~– ž¹~– ¹~o-×Ïâ­äú5fï‰ ?qÃÀ”øÀt›øÄ|›øÆ@Œ$×ϲ‘ëgñÖsý,Þj®ŸÅ[Éõ³ îÎõÃÀ’ëgñväúY¼µ\?‹·’ëg³Üëgùá™ëg â‘ëgñÖrý°¨–ë78Ñ$¾1[–8rýdc‰ $‰Ỏ/LÃÁççÄqâŽÀN<0$>1&¾1òrýàY¹~˜¶sýîñº=a[©¾ü‡+s}Õž&ò=óxÕž”«f¾_µçéê™Û«ö< ]#óxÕžÄ+×Ïâ-·çõÊõƒ{åúA¾rý`_©~–D?B«n=äÓÿ?ý“tø3iù3(ù³pù³pù³pù³pù³pù31üY¸üY¸üù~¼ògáôç­þì8ýÙ‘þŒ™¦<–?#ÒŸéÏ åÏôç@ús ý9þ|Sö–?6þ@ùs ý9þlØU–þHF®šüÉ:¯ÊŸ±¤œü9þŒyV¦?ßUVàþH¾ÄËŸéφ£?–?ÒŸ­ã1Sv¤?ÒŸ ûñXþlx&^(¤?[f^öÇòç»+"ÝŸéφ7+)¶xà’¢ûóMQ\þH¶pÑó•?߬êòç‰îÏ7óáåÏ–®œôùó}©ÎîÏôgCI„üÙPÎ"¤?[âÃJº?ß·–LÝŸÆ…‚"–AS¸x7)4âœÂá˜ÀgÂîÈo*O†lytbŠt·ˆù`ýƒå¥Ò‰éÒEž²d?’MCè:ë'NLŸFÐ,/¡.uÖGF,¥FÜSÐÜ©‹ò¢%ÕæÊG%«NL­.}h´q¯FLêñH¬Ó¬‹ýk=/©u±¼CB*·.h>/Éu°ìº`v‘mS¯±‹¦ß+¿N,ÁÆ\!á–`[ÇÜ¥çìºûà‚˜‚]íyê~ìjÏKz/ÁNLÁ®–ç^I°Ñm\˜)صqá vb 6òF µ öQ; ¶³ vËS°‹??lz¬œ‚˜‚ Oå÷»`7ë†ï/ÁNLÁnèVh 6¼°HÀÙqÛ˜õ‘`K°›=fŽš.Øð6öìÄPàeÎìvw`S°máà8;X‚ ¯@K°½+;X‚m³•(\°‘·óû\°Ÿ|¦`K°íùpdŸ‚}\Zwš‚LÁæ‚€„™‚<üH‚Í<< vb 6òpŽg.ØÈÃÛK‚˜‚<¼±¾läÝM×)ØXp`¼¹`'¦`w º»_>g¸`'¦`coÌ…œ‚ÝïÝX$ØØ–Õ‡;1Ì1läíú~ v°¬ç)ÁF^¯ 6ø`{I°S°‘÷s|pÁ&㺠vb 6‡¦`'¦`Ó#ôy v°;1;1;1Û½d 6€8»`“Ñ~.؉)؉)؉)؉)ØàF–`'¦`'¦`'æ@”˜‚M>K°ƒ%Øà[LÁNLÁî3upÁNÌ}ž‚ ¾x]‚˜‚ͱë±;1;1;X‚˜‚˜‚˜‚˜‚ îI°ƒ%؉µÝLÁNLÁNLÁ–`ƒ9þº`“Ù^ìÄœØS°S°ƒ%؉)؉)؉ÇlOçk¶'Ù;qíéÜg{:ÙžÌg’`sWôB³ E–¢§¢[˜]Rx)z-¦¢/vE·çÔ{*z½ô<§¢KÑÛî{ü®è˜fÈRt˜nÞOÌŠÃL{RtžÐ:=1&©3Rô¦CÜKÑaŠgRôÄTtš¢ÊSÑaŠº.EOLEǒŦ¨=X):LQg¤è‰¥è–æìi¼ã±kO[Š,EG>ÃïsEß}«`*ºÌ0=XŠ^<_šŠnñ5=XŠ^}þŠ^«ŸpE·þpIÁ¥èÁRô`)º2ÙPôÅ®èÖMtfÁ]fŠÞvÏSу¥èèolWôæK Sу¥èÆC .EoUK SÑ›ÇëTôÅ®èÖ-9ÞLE·ñd¤=ðÄRtë¶·ÊKÑû®ç9ÝÆ›’=XŠ,Eト:=XŠÞ}És*ºM3Œ©è¿¨¼®èÁRô~i i*úáùÂTôÅ®è8c.å–¢Egl¦¢ž?LE–¢Û4Åñh*ºÒÂPô`)úؽý]чŸSÑGñú¹¢/vEG˜ñy¸¢®%º©èÁRtû¿®ÏKÑmÚãø2}\Þ?\у¥èÁRô`)z°ÝÂxdE?‹×ÇÝÂúL{à‰¥èøZþ^WtûZõWôÅ®èÁRtLÃ|®èç¥%Ý©èÁRôÉSу¥èÁRô`)úU4ž»¢ãgžºNE–¢cIñ¨¥èXRäøíŠžxhÉc×xäŠÎ7?’¢wì‰ñóRôÄ]KžOº¢sɆ÷ûŠ®Ýð¿õá’õ]ó‰Ëú$Éú$Éú¤á»-6Ãݾ­Ûb3|QóM]mx¾§›6Ã]¾£›7ëïèæÍðÀá;ºy3<’¾PŽHE<¼¹‡·—ãå &”žVo2Çî Wró@m†/ÔføDß _¨Íð…Ú _¨Íð…Ú ÷mˆéä…O7œÏ±/'/¯¶Í§“Ÿ·oûÉÉñBlÓÉÁW:—ž˜N,''''OL''ë;œœ¶ÍÁr.9y°œ?óHÛæäää‰éäh†–·Íql…æN^º¯ ¸“ËÉË1]N®¯ '–“WÏñ¦“ã%C9·œ¬mt9y°œ¼ï¾fàN–sËɃåä`m£ËÉû®ñe:y÷þ;<˜NŽj95Lgp'ŎAµuìBNNNÛæÁròÄtòvÌç''oP 9:<1*¬cîä–'é÷»“?Æ2.È|‘©Ç牷ç¡þá‰hAôëÊ«¼µ±ev«¼p•ׇ_•×K«¼Í´x/{–®òúp.Oµ;Wy˜ÞdžçK…³€øUyKÝðÎñ,L¬Gyá*¯¿*?´òÃâ…f¡˜ªÍA"Vš$~Ãs8ó7¿¬YÝ,J^˜¬#9?/®~†r~~2îÑjÕ"87e^˜s››4·o:ÏÏOæ=`‹:«7ðSÍkòóäco:lïŸ_Ì{XÌÞ*sa iw1Ÿ'c|.ó<%_¸tfLÛ`~Œ¸w†Ž¸‡ó*ãŸ}êçç=ÚÐ9½yqÜ£ú‹{ùH²[º’æšî!Ž{èó¯îñ“ƒ""ª±¿Úüñ—câO—·ÌB/òÛs~Oy+yð•Ë'ßQ…H®ß½§¼erX©«< ðžXDá8^!¾ÞuIl½Æ;›±ÙÄŽñ®týõ#íà¼çEH¯±Ê÷®Ÿ€Â{àzaç=7¨\YÇ ®÷ÕöŃÊã‡#—~gQü)® cEXâ‚™‰'Òkjâ©b,&›Ü¿pU«z÷¹ê»÷`–¹™ùcÁ—ã9V6ñ‚È1´ûÏ?/Tƒ9€[vWtÂf¿9qµ«‹¾©¿Z0YÓW¨yŠåä¼S¸|×¹bÇé‹Yæä_hÀb"EVm9a±R«RƒÖ»X“‹VÞðW$'—Ε,hÍ4°’8Y“É`‡nœ0™p£ ÕÓO\Tfó‹Y+òØÕoˆã®HÜOh×Ö‚5Yܲ ²ùB«‡uÕ¹ rvY®³&¾®!¬ø=0cìfµ¢çÇn×d–iÜjÃ_1¸ON'Ot?¡ƒ­{¼41Yƒ?U"vò{p\ìÒ.­ °ó”ÂdöeG¾Ëñ²ú,†È#’©´ ¢ë–§_Ñg›^¢¿¬>|V?§„*í<èºõ×>ÛÕ³¤¸‡÷éu%Ui5õùuÏ”|Eü%úø9W¸µ‚+æ~Ýÿ²AJ­|•õeõyÈJä*­Bëz÷—Rz÷ðX÷P‚•VruýÕ=”0ùjèËŠ‰«éš'Xkµt^Gn2Ó> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 308 0 obj << /Length 3443 /Filter /FlateDecode >> stream xÚÍZ[o#·~ß_¡G ]1¼s&E^6HÒH £h‘èX’meuq4ví¯ï¹3䈲½›´ Y#Í!y.ß¹Žäìv&gß¼ywõ泯•›))ZÙªÙÕͬQ³à‚h›]­g?Ì•\üãêÏŸ}|N¥¼2ÀD³ß.Ôüx=Àë¸Xê0?îà²_,1óüöÄ×ßÁuNýx‚›ñ¯^ã—¼þFFv?ûº±9ËÈÆÒ8ÑxÏÌà®w´)ŸÐÁË-–Ê57p-à%áÕÂËÆwé—ðR ¤[:mˆ,‘{x…l)¾4mqFjãŽ!^Kz-•´vq;½`ŽL¤MHâ¡—ÊgÛË¢ù(ZÚ8DT¼v“uɯŠçûxÉ›AÜ3ÑÒî:’¨qG•‘M_¹nù»WJ¢t.nn³³]|/ÕV°¬3K$mbœ)"®Íôç£áÂÄÀ 6úL¿¯­™`2ñׯwý²h*Ëe¢±ÏDKFk2ø6Q4éL†_Es—%k'T™Ôë%“-3ëg’ù  ïXx›Ì¶±U^i4•¹rÂd“10¼¬G—“ñÝÖãΈńÑR¼yDÒÔ'‹§>ÅÏØNîì$ÖÎHÇ6JÁe ó€m² m>ÕëT¶¹¨/d®6õl^M$IüWÄ3”GŒžãÓOâT.^û1â¥ÍÛÌId¹T¶y{žä$‹%aþ«â5™ULŸMЛЇ¨Wï-_Àç.cSf¶ÍXª8j›…Ïf\^ÏAÅx;ªuÔü^»X½çó;’˜.7T±bñø<²²œà,!;)¼át«¬0Ök¬žœ^ªÙÒ6B{ÃlY±XÚ¶ìîñ,,Ð:DNÂ'‡4¢+Ã'}µæ£Á7’“\M XHrpüÀ×øõÏ)„'?Æ;/¢’«•*"—>˜ù·7¼Ñàºë{ ïܵ缵Îr(Qq=±NÉß ÏÈ=Þ§”ŠáÌÙ@£êLi>ÂÅ5ûšC>•05”d¨^|_÷Ì™¢ÝJØóšB+Ö+í˜!d*C%TMÁÒä !©L@InïjçC¸k¬®oŸ9~_‡`Û4ùñœµQxœ2žŽ{þðtÇ lÍ'¼Á„—|¾ì^xWè#–¦‚ó:Uψ§çO#ýàïÈé:•GB¹¨¢;ÛCiÕgòd=$1\CD` õˆR%¯éœÉuŸN´˜?ΨýçUx9+šÆÃ¶-”;±Î¹eJ¨ËF:¡%é4„̧uM­NØÕš&h—†´BÈú¥ +¯5Û1NC¼2 ®†°î/èxžnÑ&i¯œnÁWÔ þÂ@ ÅIhš=õ¼çð³¸îF.ã€ÁlÒ sh½pÚ úAKב唪ˆ,ß·HŠ¢›(b#¹mÒ¢sœõèÈåà,MgngMGZ»ß ‹UŸ&HK/Ûù÷Çd·1x*@1«aDÞ0ƒyÒ‡ÓØG诖—^4cßô;Ì “´€²‡APÏßÏ=Ä»Óf?°Zó(òQÊûzÕ#Ǻç¥2KÍMÃI$ŒŽæˆ&[u}Ì$Æi0t%‘à®.ö¸c¤/‹™Ã]¦¡_5jÈlU§"TpXiA‡1Îá‡9Ûz[<«é²`ˆKY¸˜Š/M`p·ëXÔ¥EëbnK:™îM~šFí§mœº<>Œé©pôOº]DÈì†Ç³eæPmiޱ=‹¯Á|IºÉú|ºîhÛ#nÒpóYØGJ?²°|á×C´ÁìžvÏö:pýC©¤ï™„ “4X¹}f”5¦)XF´4F[sŠÌ­º\tv gUÓ`l<ÊÇ+ôÍ,úxÿW¤ÏSøÉ)(Q³{àI­AŸJAOõJà%FÇÇ_†8O|J®‹ÓÎݘØÊ±…]¯§ÂÉ#!> x‰¢ž=@ÝBûJ÷}nÖ±´&OH†RUéÒ‡1EoÍk»‹a4. K‹” [uYT4‘En°žsמ âX$ Q÷z¨%bß_zÊb”pr˜cê[¿Qœ˜ K… QŠŒcòþÈ*Ñg5øOìì´³¢mŠ â¥h„ ’&?KÈžfÃõŽËä é ƒAQç±Â7ºÈÎò²3.ÏËCù˜ºÞ2×ÐÇÑ0ñáfÀ_4 Ë1R‘$w1c52Öt´(…—‘qc¨ã”sñIJÌ"Ca°#tßÒ³O ùúnËË(šªÕ$8öÔmV•h[Ÿ˜Ò$d2uýã”çBpeÍT?œ;À¼«?.Ö $cüžn¥•P­y«!:mÇ_ÿæá/~$Q°7šóúc Ñq}â{ä³ðN“‹¡†‡/®Ï€ÆäíäÌ8¸¾ÐØå¯È.ñÉpŸMÎï£ tÃ%àÎøC‰©Z¡ ð¾¬„Vêw;7ÿ¨Vä·Ÿ›ë×ÍÍÕÿ~pî/ Îõ+çú•ƒóðÿœ§P倢 Ásà$>ðVúgB3ô #¨¶1¿ëñúçõñº·œL×Ceºm}ÂÌÕP[[Î7ëT¤ßE”\¸ Ôh¾ \ö@»² êfØã§º” ¯ßãU­n ý¨–.¼fÇÿ¬7~È:Oi»cµÕçîx§œ»-¾9h!ðÆ&ûy¢~:0Läù~ÆFGX%ìǧïåõÆ&«cjyœ>¥G–»¢<Ž?y[$ŒôþÕÕ›ÿÿÛ endstream endobj 189 0 obj << /Type /ObjStm /N 100 /First 890 /Length 2555 /Filter /FlateDecode >> stream xÚíZkÛ6ýî_Á KñyIA$³ÓØÝI€v;ÈEÖL¼µå©,Éþú=W’=²g °ŒN€ŒÂ‘lkE››3 §,:Ô}9-œpcqáØNÖG-:+\|‰a¢¦WÁŽ\øöÅ[îÂYá½Bœ:‚ã¹=§„'®MNøh¹R¤0¤ÆbÌØ|Æá `d`4rpã• b‹  H1˜”4g”GF!´Õ½Á:.ãEpì(ÈÄvD7!ñ€‡„ñ3p«¨Ð†¡ˆ ¶.ðÃeØúI [Odt"Œeð&‘ü.Âë ;FcD´ÙNp½¤R;T"µÃ çKCe0n‰Ý•o’ãê·ÔÚ^‘;9¡zd¯!TO-û®nýU†ÍoÒÊah {¿òlÇÏP”×ldx1®PÏ*.—رxúhÍ£Ä>« £çÏGÙû/—¥È^TÕ¼eï–›öþï“ê×Qör^ËúLazªÙÙëìÕ™noFÙÛ²hÄ™µ$ÙÇáÌR³Ë9+ÙlH>‹r/Äóç"{'²ïçïç";ß”¿-óf2¯¤–ú™øî»þɉ8Ó‘ûz+²Ÿÿõ Æ£§dL¢ZN§vÓ+æË¡ÊQŠ’àLJ*6“®÷¨r§óªimxŠ™ Wj+œ²'˜Õ à N{U—-ÜäM)¾9ùZ9(ËššÆ=¢ùxgÞûI3EÎ[ñ}_~š ñã²¹\6ÏZ»Œ—EYs®•ôÕ÷5çGÏ6 ÄŽ2`~¨GÙ?óçI¾([gÊ~(§¿—ͤÈGÙߪb>žT­žfkÜ¿I{c“}9ŸŽon÷,{ýêWãikჾV5ºV×õ³Ÿ&Õ‹j1¹Ê>™œŸ—Aò30@6›TË…H”ý¶œ7å´<ÇØ:—ç°ëb1É.êü÷2Ë‹eSfŤ.–³óiù9k&Óq™Íò¢žWÙǺDTÉ‹Α'èb1Yd¾1.ϳ}gk:Í×?-«‹¼^Φù²Éæóªü5+rnoq™åÿ—¤¯äé&ÿèxæâûi,ÀP¥u u ‘ElàìƒÂ‡‡â@H?TD:IÇ(ѵ–CKå¤rþF$Ť)åiOË/y›Ÿ7eý3@¥Ã¡YK‡ÕrÊɱåÓ¢rP‰«+‘“¡Ý ¼Á@¤³i7¨Y1Í‹OÓ¼u>›QïEä•ä9Â8 ´’âqðl)[C2pÀDFFg Þ`ä­-™è6ym¶„-ï+ÝCØnÓ&Êà"oë@µ><œÜÐZ›*l¨Ïv©(‰] ÆêŒ7Ìè!á$KªŸüøo¶#Ã|=3<»‚¯g¼¡eöÒ^Î\Ó^N=D{ç¶´—éßÊôñ­éßÅôò“ƒœ.¥> +uðî—`bÙŠù©Œp ÓÁÐY+åÚ`…wÆ H&àM!i÷DüT6Í,¯—e}QÖ<ójr@5Nj¶Ï –ãYèŸï p9"¯»qõò?3øj•“[’I]ÐXõ&ž>!¦•Wi’‡SS§š$Éé݈Êél^—Œ¦,ŠŽÁ{’YÃÁÒÌûõ‡Ãôíô½X~£oÞsŸöqåî›ïbòá†ãîÕbcÇqÈýÕéÆÇNâc¹žü5®'»/×ǞûM>¾èÒþÞwøù좻ï×߯ ¾_|¿6ø~mèˇ]÷[#¶¼6‚^ më£ä‘Û”ö¦ÛÚÃM!Ë;Eö K„Psú‰°Xj%5Y+#t†S Æ â½1•ŽN/NcêCN­ñ@:R|B<‘dÒ|°g%Oí•Ú÷ÿQÑÑñô‹·ð_ íf1FË{„k䎎Fk×2ëRçŸ%,ÛWpÖƒuœe•_L'ùaÅ>,óÆËö˜Ѭ‡.etXŽÆèÀjÔ#²ç³Or ouHt|G6ÑK>ß_ááÓ ôñlEPxžýA<–—kÓXýxÇÇ;¶bPó²8±³ ã• ¬Dó±YLXÂñçÂi^!Öx¼‘ÊÒxX¢‘»—âÓèÏ 1‡¤BûàcâaÀ>`C™·y‚²{#`C¨ %Ü@'>VµÅk'»&Ä=U›ïÕ­ÔY¯Ê¨We¡Wa¡Wa!ü¯’èá–õ/ùåùɤºø˜7‹ƒî¤ÇøuvÒ¯Úî¤ÇôçIËÏǺÄÃûØU»CëhðÏÓšûh¯°&>€v2¬]¼ Ž?ɃWéôUE–ZðV m Ðÿ‘×)þîÁâE™ìm[ì‡ ]@Ô5`µt|jäÚ“z‚Ø1HB¬¶†ƒuÑ™§ÃÓÇj&˦ö;H©ÓñCYíøŒo€§ß7?žëß?%¸‹i•·Ãdz ˜0›ô­@];' ÷új£äœ$Þ¹äÏÑÌ^»ƒC9¹¥7sð¶a}˜ãù›ç}¤¢Uq[*ZE{JÅÕ‡2ýË™þ3'Û}rƒT÷©éSÛ§®OýA7î’–í7Ø+ÄÔK{ ŽñØ!4ækÛSM"IÞ>Í!-Û endstream endobj 333 0 obj << /Length 5003 /Filter /FlateDecode >> stream xÚí\Y“7’~ׯ`ì;V¬)ܨqøaåïzgg#ÆÖDÌ®5Ãf³»9âÑnvKö¿ß<PDñdÉŠ‹U( ‘Hd~y€íänÒNþýÅ«×/~÷­³Ñ6]Û‰ÉëÛ‰P]ãZ=qÆ52“×7“§¯¯¼šÎŸ®Ätó-þw5SJM_-éËÝŸÍ_âM9ýChxƒŸKøï‘ïs?†oﮤŸ.é2{a~%Ýô¿F7¿oøó?ž·ø޾|,ß¡ïË·|ãÈöº½»úûëÿüÝ·Âä3S^6²³0qš“ØèEX1™i-&3eo-·Xì®f@Óî1N»&.,aDÛNß´¦¥ÙÁhkaVôg`ºéf9ßÃ×gj°ÁÿÒLàUæbsô†;½†Ë5¼ÀÖoûfÔöø@‘³‹¸(ÌT\†_®¼žï Ðóú>q þni*KêÍNß_Q4è{ìbMô}Ž×Ô€–åø¶ç'÷i©øuà!ðo&Tct8ËÜ—…\ùF{yÿ¦•:4R…ð‰ÆˆÔjUëÇ6Îw—õ³­Iƒz}lDªJ¸0 ì‰ËFügB»ËúÙÔ(ïãº_‹ò·µŽº¦5ê²~k”›FJ3 |¾½92e¥.›Ô:rÀ4{Y?¯jSð—2¶hHúgRú¦36ÅvAeÞ=ÑŠéáòÏx‰ëŽ6!î7ܺ÷¾×;nM;ü  Ê˜?-¹Å†u*¢åšo‘þa%ÿ3yD]Ɨ߃JûQL]©ä~dÅCoÓNÞó˜DJIðlÿÔÆßLJªÅÙ`ƒ0‡åwxƒ÷ ÔˆHý5kÄ~HÊ“_þßY„—W»íÑ)Ð˲–r8•&)Óh#˜ïßá %Âz&vï“3¸&«\#=¬…DÅè‰U+ô¡g}x V”£Ò½ô)š ËεQ!Áq&6b"¡‘Î)°`©£§J/ ¶ªïG2¢ÒÉ 6•‘“lëÖ «”u¸Zá˜Æ ©²ÅîÒÔiWü\Ò6¶ÍL4VÙB¹Lt£¼˜d­‚´‚Aû:ôÚåí¥h`Ь^ò © /¨Vmo„1™zBÑñ09Yª¾œšèûZTWºU¹$Cç·õÕg®¯úèõe´ÀúJ'ãúÎŒ‡É‘Î>dÅØZ\ÝÚ‚CÕÝB_ºé¤?˜€ºP$htй U«·uMÛ¢eÍp¶´™Üª¬î6­`¨HÀov)þQÝp¢QEÉHy@Ûø†{Ó¶¢¾›ZUÐGêoµçÏÝuÐÀsRÍË ÜáÉ5C>¸6óA˱ÆÃ†w÷ø4š†¶€ªu÷®„[Ò¹8Z¼ùfùÀ2ö³`ÿ!@è·Ôÿ#ÙÁ06P È€ìÊvŸ¬f žÁ‰ú}ÃØ;àŠ»oùÎuD²¿/µ;Ь€™`¬@-YSMÑf¨ïà•N‰ÈÛÿ&ÛͤótçöŸh®8QIÓiÿD`|8CÉÞ9R{ž¡4CÙx s[¥Qè2¾Ë‡8áÚK§ß&,ó-ú<AthÈ-¿àÏ>ÀýÊN2]cÛ´•žë(ZêÑIßñdÞ´B³XÑ(·<6º}äÔܹgÓšÜ,v›äâì¶™×T#¶±çÃnÈ©î>T iCWu=âŒd~¿ºÀç€ýðaùÃůøæ¦Šiaedž»:Äo}¢9á.Ø.(ðÈAÄ,ÔkŽì-ºdÄ ²çËž?3—^p©µzÀ¥rœ™è€•¬€‚g…Ê×*_7Æ»3õù¿Vµ9¨]%4qZ™›Æ(Ee®.0™§·« \ ÂDhð¼Æ‰(Ÿ-Ê‹?¾~ñÓ AÈVL¤,'
  • S Böñ‚ÁMf8é"ର¶„p…g\Ù™Vb7 ·¹Ùß*ÃßQYB§NØKAk±0 Á÷Àâu¾+‚$d)q’,Ñ´’ÉJ^تBƒW'±´EK ìôaá*=7ìÏ„àˆÂYZý³J;zK2÷–¾«é5Oáé¸ú¼®ëëe±F4~ï}ý¡ØÚUÄŪ  ãa£NT>A[)kT†ñgÿe¡‡fÝÚ,¶Õ¶#k‚™ðFJõ©[Lñ3Ô'ZwaéO â­Á0˜Ò…íw_§Í›#ڳ䰇íš„C'{#UðÖ,_Œ¯ª>_ט.÷ ©û¸O@-tÐl š·6 ú>‹8×3\Z3•ƒ°C«m1ì§ó€¤Wä,ìñR¢{ƒo¯B8ý1ºBk~pàz0n†'·Ïñ/úøÒ˪ jP 2¡¹±…¶ã }ÀžNª|cgó¡8Þ’¯¯)Uƒhœ¢û7ãcâ‘ÜÇ앱傌ºÀ†„p½šMƒŒâxæü6º°NI×X¥Ø+0…f*GFÍd#×A1û‘/‹“üȃ«ÈãÓÕUõª’ž€*îÈ$ywy˜#¬&¢ý<* _‰}Ïüÿ:%€ùÙî–É=’³Ús‹ˆ-ú¯ÍЉF¶CÓpÎ(Îa ×@Äx¹‚žÑ¿aÛ–ñrŒ¯¢x>öïu‹A8…êÓ<ì~s´½êÚS}v Vû!ºÜÐF¡=Óù³êoÄïIfà‘ Œ¥q0²¢A(’¬l°áÏø~X«5u_coK‘Дm˜Y/˜Q«=ÂX å±tº}?ä†óÇ;l™Ï²ÂOŒ4Îëbçí)ÀÍ;cIa}Ì Ö”­k¤H~íûûè‘%§ð@ Ä“vº_étÍ) Y]ÛÈÞf¼†fßÃß_i©kËlH5–f+)Fˆ”ú-åŸ×áQßG)*Æ!©}Õ€JAÒè%¬8®Ñ=ˆGÖø ¨v?â'ö~þKŽöpè¦=ù] žw5Ù†bzi²íWÍt‚ÿ¨;9ŒƒŒÒi8+~«É—¬ü´B)ñeÈ+jPÔ¦<+JÓƒ’Žîï9ŽÊ_Fì»2Ž×/âšcûQ{ÌöZ¤HSè}X†À$é~o¯{ãQnY…pÔ&¨ë™‘ D>¾…;ÿÿuÅùÁêÎövíãbëde€È÷qÍ-¸›­.ÙLñM+T‚¨‘(+?‘ï±ÝMÒðô4B&¼.£pu<Üp Èn›)Y.¦HÕ¢¦!«µž3³6„†S˜~«K ÛÕ©Ä)´)Êsð*ôþ IÛsÈYâåËZ%G¤\{;(Ã)ó£ÐÀœÎ«NeÛv׃W“îóÖµšÔû}4¸0l Г¬f…¸f¤ž®n¯ˆ–EŽe ÿ9â>ìë®&³ü1'»\fŸBÌ}÷ç•H÷C#“á“–©spyÑ ª‡˜ÚùbÉw h† t[ëÅy™Ê¢6qr«<)²à[÷cðI%…’’åð¸(€ïg$ÏýHÉU}f ®çÌ!WÚn ޶(–`weÂÌëU´ÔZJË7öϘ1%Vú²Îõ0Ü Ý±6µq‘0ç"ƒg­cVWöqTÃ>dÙ´¦töqt c»W¤xnÁWX&ZѨÞE €J“òf±€ #Vbèh+‹h[7Rñ{§V’Gf>Æ¥B!·ÝôŽ–‚ä4ÐUªÐÙÔ2’þ·±Ç¬Êçü+ZÀ2+ë)ðg#|ƒI‹Ñx¿Ï°Ö¦é)ýçKQ£#[™æxô¶¼õ ØÛŒ gd~jsWúÜœûæHÐ%›+5Ü äkiŠ%áÇuÜó:³ﮌåøª~Ðé ° †×A€:“ÓX›É.–E°<å㡳ké,űàvoàÖK~ð«±æëÐëíðbq±ˆ%¥{îÕA!üoµ†¾àÍwWyñéî±¶—U«`/'müP­ÃèÜ âW—s_EÅÓלiÝÊH¿;6Ë/«ø ­ ž¼Í¹pÆV®Í]vÿ•&Ÿ¦ ®†ÓålÊt‰ì‹ï6õ\çQ ©‹R#â`ö·,ù)ăÁo_¡Ãî¥v>(£„›·Ùžp]6"/³KX*JXúO•°4ÇJA©‹\²è!UX":/!”’ç@ ]Ã!äz€ˆ«Þ·nœ>µñü—O(e ía`E·}&¸ÏU4š™ÊãSá4…öÈ XÖì³T«9¼†/|C·gUsø/QÍ!¿|5Ѝ e-ø¨jŽØ—1’îT5‡jŽUs¸H‘Vsø²ôK(Ç¢šÃ’jª9Üñjqn5Ç©b޶ûÜÕ†«9ÜoÏÙ9UÍÿç«æpçTs¸ÿ¯æøÈjÕ PçhÏ3Š9ZÌ’‚ßkPùø³rüî¢byq1Gµ x† Ï`(ݧ𰠀ãé.Wô/ÁLÓÑ?N"ïC^̨>‰¦tM)^>P”E±Ý»TÙ½‘}MÅ‘5üLƒï:ã=ŠßÞí‹ï¶Lô2ÅäñÛîzCN쀧 )>}  m>4Ãßp ÆïÁ£ÏböðmñücŽ{9n¯ æ`î̺>Ü T:ã¥OeÞA0;©Ë^å¸E›éLf<ò÷yÒLZ%¾Y/-SN½®rÎ&öIʱðÅí9üô\4{<Õ¨%’n9–* y<ZD«µ<902ËÝ©±€´‰Õ'8ÝM¥wRÒÉ K¿ Õ×ÄŒS‘Ê‚GtÆ>¯)dÎÇ‘‘k,éá wIÆØ4?Û7!M¨ÙJ9½œf‘ÂA@r¢M;%šÂÆ ñpizebú⊋,EÀ— Ê×#‘ØGæhã ûBù2UÀƒŽéxv†¥+O|o±#~öÚënÙ“™LcÂiº1ç› $žbU§g¹™ŒY&Kj†“¬¾DÉd=jž-߸٥* ÊÌ­$pØö„~ô3縓Zê k}Ìùu4¶Ñ}’&Ö+Açû-ì E‰“]*GÂl:’žò¤Ðà=›—TE3 Q¶v¿bvN´m^Ö‘¤<|´èÈÒ¢‹YªéÄœK—Ó{VF\`š»ž©Žv:ž*‹]p[ÎüaÙGª+¶_ƒŸ PØ4hy¿ ?Äó\tîgÝ÷•t˜R•dö¾9(^ *ã£Õ^½"É’Úµ´˜@Ô×\Ŭ˜%ÇcVZ¸ËcÝ|$íÙ…!÷h»:ÏD®.H¡íùîàWÂ>Ñ!ƒ ¬ÊCs²{ÐóðP8ÜúˆCáOñ=Ì1܇ò-†>È•Ÿd$<Ú]¥0ÄpS8Fá¯n â±“ªî¼“ª¨^}¢ bqy'ŽAæã3 ÏÒIKæBh®÷ûTŽw÷"ºq.ÚËþþ}¸îËàËòç J(TúÄ7Ófs”ÂÞò:Ì Vq“mO‰ä|ÝÙcúíÝ’Õ†q:j¢Nwà‚v‰u¨.+âØ5Î6ô¢ÛމÙ/ceeËi4x@÷ÈZg)ãÑÑEh…×T²ä#Yýí]x¡SEN¥‘”Áý„rzö‰êO)§eHyÊ»9â˜Ý:ÕûžŸ`UÂ'Õß`mÒ–K­ú,ˆtôsw|0ÒÕ¦ã5ÆŸ›¡ b¨MËPqs‘<}‰­ÖC9ŽÕ@Y‘^¢Œ7†‡—±DdÚKÓÅQV±T† ×â¡bÝÁçOM ÊL… Ì7j©áF>ϦéÆö"Ø´Tæw¦¹Æñ‰làŠP¹›*—µàšÂ`¶6&Õ.ÙW#•òƒò±¼ĉBðj4/5¹ÍÇCð€—ó„œ;{,†$4lts4û²"sè• pésCðà°+‡8[.@WFÞ˜]ʃU(pÃ@ž¹0ãÙz–Ç©±C1ƒ€¦áÛsC©¦£°õèb(i`“ÉsC]Òëºé}UÏ´ˆ™$TA]†R`Ó·žÎYÄ1Oϲ=zæ£(Ž># ýQ1o¬“ÊZå¾Dø:‚&GxL>õ +AÙÁO\ ,Æàw„‚÷ºêÏ:UNyH¬õpȬ€Ï eb”ç-_(ìà‚Næp3¬ÞÆ&h­¥kÇBø(ü C}‹§hhƒG‡ÝKI¬cë“Ö¢«[ |{é 4”GV‚ Å‘\¦Ã.û³aƒºrÝÁ’ØÜ«>ªÍÚiŽ”àÿáÐ5E>x¦Îºì‰›>ÇHµe?(=_õïݨPžÎÁ–›/²ا¾úßdÙ†À· ÅWÖ祧 ¬U£ì±®?- g^ ºâ_‚+Úóïõ‘àÁ.ñéòIZŠéw|ŠŠ`{/”óòèæ|8“qœHo†'­ðV5bÑoÆy}ð:E$‡÷—õˆѹàìXk3W¶V”Ž#’f(qÅ?R”¦ôœœü›œC·óY,ùkž?G’çUÓ·£Ðüç÷_Æüì“hìÓý"T¡wâ' ƒÿüR± endstream endobj 365 0 obj << /Length 4189 /Filter /FlateDecode >> stream xÚå[ûo#·þÝ…Ú_*#Ñvùæ¦MK_AÑÄ-Zä d-ɶKrõÈÝõ¯ïÌp¸K®¸².uZÅÁ§}ð1¿ùfÈ­'÷“zòÅÕ«›«Ÿ¿f"ꪩ1¹¹›x1qÆU2“›Å䛩×»ùíÏ_;›–VUµƒ6¨Ìzu-¦ïàïÛë™tÓí#\î¯gJ©é>Ý…ë/á:-}ÜÁËþ]¨½À‡¡èüªfq‡²ÎXŒ™2•·6Óõ¦ëi‹m<†H•VU¢jœŽX…"yëªrÆÇ—±P¢SÂßKm˜J×·BÉi»¡¥ö¤¯jÕ õ]©Á¦rªk0êqÏŠ„kTð&\¢Žøñçp=Û¨œ˜>…‡ojS³’á_e&;Ôu¸üê‹«É7b*³I€~¡Ž€ªë™¶vzsíζ¶Ø&Ý®hE7=£Îi\^gÕøJÔÝØ÷$  ‘¿,éAÚʸ&§y¾ß¢-­b7ë Éw×`O8Þå[$‹·kç×ÒÃ{z²½c‹Ù”&f¦à¦¶`pª2º Æ’ÙÂð`V2Šõ¦®e©¹pÙ­žÒø #)DW¤%‰“µóqX2s¸ F¾$£¢‡ojQ‡+R÷Ž'œ«¼ ÍÑDL„¬+¡'°ìªÆú(¸¨Yp=ç®&¡\åAç3QY°Á°pþ^R\ʆӗ{SKQÔ„¨ ¼Ó—²…naª³N‹+MWÊ˼KÃc°6/(µŠ=¾+vg¥ÈGY†X™w(½üôÓB«RWË+¨ÀHµãbMfjºj´‹«¤S¡Ü_ ÍÍjÀRJ ›ß—Ó0˜Î?-Ï‘”Lå´GS4Vœë¦afüô–‹(Ð8ðd'QYTº¶g°Ìv Уðj8e¹„L™T&nUìðµF#éŠÑœ=×ã'¥¦fÒkÀb3UWJ0&ÜÉ™l\È/Vg÷E% f#‡¸un‡¯®]9KŒ²¶›ÅózE»o Jˆ~Œ|«û¹‡˜æ|Œ3Ço±UªùgÌy†MQ¬ÝmØí¾ãÌæŸ|êZ„„úþÂñÙññQ~Së‹÷<àkj8djcjy~¤¼.XÄ.ä˜=ÄùZçyÔy»ï÷³)ûªä ûJ.YŒ¤íUŸýÅݼ‡(*é¡LÝ0ßbj¸­ì­ïwû­{óïCÎ;&þ[Z—êì^6ø3\ùÀq£–¾•²VÙÖMOí†ÛEºÑƒÍ›Q‡,Ï7xäú¢};@p™ïÛ­Göí¸÷4ï["ïÊ–¸»6"Ûθïõ3ÛvÀ¬ÁŸÚ÷š3E第š6ïR•wPíp;v¨=óƒ8Ñšã+ olƒØ~ÀÞß/ÊÄÃëO• ¶Ž-‚1Hè'ZÁoÍìäm²_ÚÛ¨ýé^ø%Ê·£öªåíëZ V€qéK< ž”w1e<ã6ßè>­»G<’³^ô¥·¡É[Út\†çómð®Ñ;,e¹“#u¶)—s†Ÿ7µÐ|ÞËŸ¦]º'E5A´–oVñ—…ë¹Dïñ @ÃÌöû†mx{<„­Ç.™6lñŒ·ÓWø`Þ"XîyûsÙ2 Ó2œŒÚ’÷§·‹xP¦ã5¸vLö4©ØCË»³,N²Úâ§ÍBj~¸ÇÈR¨ý\˜è¨è€ÝÊJ5ú…¬P}¸¢ˆìUÂ5OKmî\>1a(mÏ #yÏô4>F‡i$ór¨¢RT)l‡Æ8wÁnè/‡x½8»Ýc É‡ß=S×8‹0Éé–ü¼êÈ H9öøSDZP)³­c¸m±¿Å*áL8§_&˜ðáTa'£!óe|…ÇË@ÇàzmÄF\ÛT09îǯÖáU<‰×¥c6hÐ÷¡ŸÄú±ô`ÍEYy‘ÍxÂj ®†8žíÜÖn£Eýü}|íux,»ΖB’„P:ñý²u»J ?`&y;ºòÚmÐŒë÷ž~q áF×$DóJ§)0>OªéMÂÔ†Gm ÏWü~qƒN*®“35Ì ÌmdN O‹–e§E! þôüqvø¸×0m}dŒÆBcžŸNí!'?—*z.Á¬e‰ÄIðâÀ}u+AZ+ô7¶q“ú<]UÞPùž†ÏC­"ývé…}B,S„}vV›™ ‚Nì†Òt³i¯bÇáLšIÎ{™ÒüóÉßæ$H¥ ɳãfá8ڇݣXê(B!îbdö¦mø‰, ®¢_ƒ’óp\ ®BÀ®2yàöžŒ•ÔëŒ –^D0oo;ÇÀwñ»œ~½<5¿q¬Çgѵê4”xûÏpô Ïx\eªÅoÂïkìôþÈx¼|¦ghé¤_˜^-NÛ¾$¿Q$8 §ö‰ý)éÏdc;‡ —Q©Ô]»Ië±{‰iÄÏ$¼_÷_,ù”^cûcôMnŠpû^׋pû¡¼ífüŽ Dv¤Ž½À6%S›ûþpåj¬¤;(JR‚!ø\½wÓ_/{0SF`“>¬ß»ÑƒýyÍy2!ÉÎöÀ”ú‰QìqÅp±ž=¡/›&=%ñƒ‘ÐÖ˜> ÁÈÛ\û(žð¬+-é·^“¨CÁ6ñ+&­îT)Yý«} B[T(Ÿ™1`AZI»5CèO¿Œ¨(óã1§ÒT1KDÉî¬>¬(OrŸÐÊÛÎC«mßý’„ÎÈY€[b£¼ cë”Á-ú“ Ivòƒ‰t0·ÒòaSÞfhša^Tà4˯®gÊSbˆJPKo9§ÇGX±ÆÛ$›âãOÃì ÎyÙ¼£ÅÚ{×{í¤’àz¼ò#7pû¡×ÉH6ÅÊ>FÃéüÙ¿Vƒ&ðKŸ´™ŸÂ“›8ÙÁ¶ññ-Ëq`m.ùeH o_ôýÀÛ17©HL§Ù^;SŒçŸáï§½ÞeJ+ ýe2¤.ÀKêòtµüª·ƒTdîà—øùT¸¼ üFm®DºA­YÔ:LÒ†á?.𤋮ˆ‡°ŸÑ…k!1ñG~ô~l lX§o£/éšO+à쿇¿¯YaÜ@{’‹ ®¼d…,Y9‹g긧{r  ³sÎg^n9§2Lœ%X‰¥ÞÅT(ù)x¼‹ÙƒUtéð0¼$+¹â=i dÖµþZ‹a û}óÐ.¾oÃ;úƒæ—|×¢÷_ºn:*†×ƒ¼>ê?Žÿn!J|Å»kãÝ!ß ‰q¢’ú÷I ¦÷»OT‚ií³qÞÅÏv!@ïö«n79ì§ŸÁV æ±NÏjÛ.VûÖ8ÛßЬ!ó‹pÅ„N9}#”þzÅ/zû]Óü,N´›îŽÝ"¤{ „\ü¶3`kì÷–ð3´ü¼ÉtœÚá8€ÎEãG6mqÀ‘W³›ö¡ï*hzš’ìhì.Ìܬ@ß;Ând s æñ»êÓ6· ‡¯óÛw=’‰ð}B`„›È¦BN/ëTˆîØÙW¥>\U+Ûç¨= aÂF2ù.If¡ŽQÃP—×1~Ø$‡Ñ gÕ°^‡ZÜlÐ{K+äcw’ô6Š‘Ë‘ß®bJ¦I몦äüØ& †ÉŸ ,-ü~~sõ/(Dú endstream endobj 383 0 obj << /Length 2161 /Filter /FlateDecode >> stream xÚÕYY7~Ÿ_ÑÈS ±è&Ùgˆ“Œwƒ,q,vZGR,©'jÉcÿûÔÅ&¥éñLŽ—Àèb±øÕI:KVI–¼ºz9»z~]•‰ÎT“5:™Ý$Ú6ªÊò¤**ÕØ"™-“7élRÛ´=Ntº¯ÝãŸÉÔZ›¾tÔYmq®}†ƒ&ýN—øëàÏÇ¿]·'轟˜:uÔŒ´S¥ïy ¾Vüû¯Óàîîp¾†úîü…ìë~5ùeöÃók]Ä'³µQ¦)áàt&m‘è*(üï÷³+ ,ÑImUYçI¡+•™&Yì®~»R¶*hzhа_"Ïÿ½+“ﺫŸàŸŸ2ºQ¥5~Å“U—Œ¦6³Êê2™F’‘&ÏÏ[ë$o¬">ðµheu"Ô&SÓ4iþÅdšð3ZËØ¡½e=`÷zRçi»Aü×ðÝÀwÚò*˜Ì¢íQÍGÑNV¦o3ÓÑ¡RzÜe…|@iY4²Ð¢:m·«î D´ù¹0ÃÍž5\è3  mí5¼Ã•pu«ª´ÛƒÓÈ3PÍ``w9ØÓîFvŒ<“?âQd_"gÐNiTa«dªû¼a–¯£Sïa“-Ò´»Ý-ð+Ón@EŠ·Y‘QO³ø›%AVhœµì—ÒÀŸ’èâ´¹Åm¾vçŽä‚ŒäÂóõúÁ^K’¡–³ýЇ‘C·tdA$vø§Šä°J|óõ««äNuvæ[@ùnÐ'³‹PÅ.ítCÁaK„jÆhJ4š‚ñZzf€xÿ9kÙØXË•Qu5hù‹Ñ¡2ë 2dUy ©÷$è ~ 4e¾&¿Zû0…öÒÈ! Ô³&¸³P‘Ù–‡þ ¨°üžƒà—0!šk±¬*=8¨jòúObÅÖê7 RRâðnR5ª†èzæ&å˜,…Ê‹âIyéa­©3Ÿ_7MÌjZ«¼.@<«L!óëÉ´0–ð¼ƒO ÌáŸ1ãL¦Û(d $<œ:ÚlÛÔÊ@<§ÍÞ)ZÖ/¼©• øjø*ø ùš1,<;ñ•—'ïå&Ø#´g—Ž‚‚cÔÈ&`ö!Ã…»LºkßQçž”óØ´)Àctõž·’n1ìÐbJNønä÷2]}Ê9ˆ[>⨔ypWň«+ ¡gÚ¾T¥áš§¾‚æ”›héi¿‡ï?bù1ŒJøê(â>É>ž1G\y"«¢î þ‰xxí },P‡Q¶Õ˜ƒŽLÐÇSïvŸ8òü|äòñ#ßFBÚH_¶ÚÊðÇ{ A+¡a)ìØÉá—g ÑÒ¿ïGø~dŸœT1J„ø ‚õ÷vGŠœßOšŸƒWéü>Ç­p‚Û¨(»£ýèâ:,þðàNŸ‰y»8 ¶NLë³Ëóx ú#=1Ö—ìgB± ³sÙá(Êvƒrh:ª€½‚bsÊ`.ŠÄIB8‰wx©:9–?ÊßgóÇìÑ‚½ïN¤ [<ÑÿºA‡ôw?_EÑ÷xÙpX?e¾FÅ»y¸pLóº‘BrÍ–iæ\bÜùJYNP¹¡s5CJD‚'ÕÎDH•¸7ÔM·gžÛ¡ZîÞõ<ôÛ)Ršl³ ºÞ…Cuc•Åy ÐUh×n±›EW”äè.dCî{žÁÜŽ¿(¯âs™Wá~TPôÒ¥·ZD•g^™KÙ¨&ð7'—*SwàQ¬WŠuÈIb 6EsTKjeË‹Jò­¶9î{ÚÝFÁÅõì‡S]—©û bâì|Ð^¨4X7¹=NÚ+ß?SÀ€ïî…@d´:†OùX k+aèfZPx’-âÛ0è±·ö5Ëg,Ïï^@Ð2ñš !´²â T"6„ežÂ1ªãÈ4o½ûÈ~õlòp—=Å&ŠëÝÎG'ò;·å †ss†˜¢sáȲÃöN°Æ›ÐŒa‘-©úìÝù<ÆäÕâN«îGø] ¥qç_Æ\ßVU\Cϵ ì­¹·7}‡n‹4‡é}ÎÚøÌyà‰h³£?!´ïÖU8Aeyëe~¡ ÌÞÓH}0¦³ ¸ô^AÌÚ• ò¬} ¹D†¶m—Þ$åÒqõOþLj8awº†"‡ I†º oöüùÀŽ^zýåÅ‚‚D‹Ú9ë…^ ‡K —<Ñû‡ÜÀ´VMQÉ_6S6çc¾RVÌ2È‚Øïý¤äLJ¨cãH ü<„ZèûðÆJ3¾âj11ÝnÝC)4Sµ¾Á` ‡hùÕ ³(nß¹O;071jôäSÌ^ʃö@ۅܷॎ%|TÞ d¸©p‡ÖiëÝ™<¯èm‡Чô/kÞÞOŠ‚³ïæ‚åæÁ¤9Ðò(¬Ý/|7\B±5ë‚©•†-UÚð¢GsÅÚÞ§*×ó°MnóOïÓÉ ±å¤‹ÁÁíYÔ+ÑÊiW:4D“nÃeô†T¢ïÀ M£•ö±çCXâ št¹ö¸êBâÕ •Œ&º¢,ëò%ù½¶ZÙfx4ÚÙ*l™ëÊ“¼Àw!ƒÕØ7( ³ð({ãÖ¨¬´̬ˆ‹Q`„k^ªJÏIs!É“J5Uƪ¬ U%@ïÆö®!ÔIDõbl;m”5ƒˆ£ŒJ•Šq\•)êOòhT]ê Föt¼¾} W5…P˜‡^äò§ó°”NÊtå«Á+Ùå¥\GÃ×ç)ÎÙñÓëGOes°„ÁVnF´ wŒ\ŸiõWª‡¬Të&VneÐPzŽýïÑïj÷;@ endstream endobj 350 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./spsymmfig1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 387 0 R /BBox [0 0 576 576] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 388 0 R/F3 389 0 R>> /ExtGState << >>/ColorSpace << /sRGB 390 0 R >>>> /Length 4082 /Filter /FlateDecode >> stream xœå›ÍÅÅïûWÌÑ>d˜þî¾BB$$[â€8$°(F¶“`#”ÿ>õÞ«ž™] Þ5»Æv¶õÜ;_ÝÕUõ«® ËgKX¾_þsñ…ýùøñÅG/þöç—o^\lë¶mËùïß<¿øèÓd?ÿø»%ôÕô—tÈci)Ùþ/.Ÿ-_=xüäÙåòË—?]^>_þúôÛåÓ‡KÜ–òòŸßýøt¹üáÇ¿|ò¯ç/~½<þìâOùŸÆ_{Llií¢ùS>òüáì¶?¾¼|õN—ÿát×PÖž—XËnõà—Ï_|Ž»<ÆÌ츽ËcÜ_gŽŸÞîç~ ÉÓóZ3 9%~:þóU3÷«—‡Úà—üúpëëc˜¿>ÞúúT*ܯ_Ÿn}}.Sê×ç“ô×FϽr‚s‚¡üp¹|¹<¿ ')ƒIf~ÕVíîmNÐÞÓ¼Îy4”ˆ×Ѱœâ•‹ã€ÓðˆðW®6eÛ“Ãî2Ïã­ÉïmAwKÖhk uwzåÖ½­µûpŽˆ-çáÔÊšªËÙ^îqM~ól_}mNB1á7wW|åj3{¿wéúœTÜM3òÊ ¸Ý±@›Yb_B´É³-;× ú㧯ױ`óÛƒ½Ü…N¶ðEéM42Û`!bŽn¢í{ŠÔºÖtZF«Y[¸ mž¢´%ö°¶{Ñ„¶nlÀ¡Ý…¶ùK i ùmèn ÅR‹âfÆï€–J105ºs73 ‹‰þåMtcÙ,–›h»0˜}[$ãM4KeÞ­÷¿o-7Í%oå>t&@„‘×±½‰¶€Ö˜-À†›hsÑü£¥:o¨ØBê87Ð ·ú«´E. ð!dD(ÓÞgËÌfkÔv¿f:¸½]ÓJzÓ­%œöXl*Kû­ÒökÚ–Á´,$,Ãbc¿_™ r›4zË»”JBLæøV¥eæ)·Éï)™‘¤Ãï4§•˜’ŽòaÊá% Ã;$||¼]Ùúç|/å(+üï‡Ì[O_'U*¸©ªÁ›IUn*Ûy–~“<—¿~£Tà>¤Êw#Iú3ôÜ£ÂCŽßSîõKf)w(½Yo/Y@ÊZ^/ÿƒz[)7YîYŠèȶ|ÇR¬?’ÈèvRÜo©K¯—‚ü1Ö\n/ü[Æ Â ´Btà¿®½ 3aö‚@ØÌG t\¯kgüЊ×o ö1$XâhUbîkeÖ.€–÷ò6´°>ÅuZøžZPÁü­kq{¶ißâ;¡ÉäȹX0{ï´;ãÀ)ÿ?hÁ<¾Jyµ Ÿùpú]4‰=[¬¨íCТùÜ›Þ;íìžKR<üà´ª9øî»§YKH¶)Þ‡VE!¥¶ÆrZ5 t½Z«²Eö÷¡YŒˆa¬5ÞDëÂÐ; îA«fîÔúªh,͈§2EˆU‰õÏ´ê8Àâ½.‚ý‘½®mbÉl”³¿Ô@ÁÆ@Yž™¨,–®¡BD¼¶eî ‚YlÁyŠÖûSê๟©®n¬µÑ܆{˜I›‹7I ö˜•™V[úZxžÅ±Ê”?)ʼn·)ЀM5º«o;2HÁwÃ!CÉÀõfh› GX£(ÌåŒó÷Qu Ÿ+ñÄþ¦K €Ñd@žÅîÒ‘µ›Êkê€^Wج‚¹ß0÷…-78+ x¢-ñ†•‰¸I®XØ’îkœ‚ƒUãžÕA Ùª¾²±ÁÇ’<‰hE…° }u³äÉn‚râ®f©‰F4hÂAÇ(®¦›ÙìsÞÕøÐ6ˆçw`^êQ»°è­-QòØ=Xò6Ð ›ôÇ¥¨×À‡£ù&ù4âÛ`«6ñM¦ÁÆÆ€þ+éÞô dÌ*Øë~öfYÁ¦•,æŸêlN°oÈØ;Å›Kì#̾BÝ«d +l¶ššs*&´1u‡•¡¡¯ó}Í–lNøŸ÷3k2 Ããña¶()wX[´Ïê|_³)³·|dz*³µªöI0»2›‹fêº>Ón¢½VÕöà‡G{ úœz›@3§aÐí1Aãlz“šÝŠé!®fbö h±MÍA•§ÚÑRnÝÏ&ÊLD­íiVf6Í%i>4q±V¸$šÌ #š›¤YrŠË† qãh·‰³™Å»žõýÝ[ä\,ê:¬ÍD{Lä8êÎæ0Ø\‡ûÓ±©òùjFP,öY<ÄÂäÁ÷oúù¿mZÇÛ~£M›ëÄæˆÒ´ž(騇ŒeÏ1ÐÓEC.:AôÚvÌw•C‹‘/ŠõázÄH‡õt\fožÇö × вÛä ¢Ùš?bœõ˜ {„ýt9Å{„}Ñ^ð Ú£;‰˜“ì1Ìæú?L£¾?ÓbÚ ¾Ðb™ÔÜ€Å~Øä¡¢Ù[³ýÕ<6G³7³G6ÕLS ÁØìÀÄš=bË–êN]=ˆh‚Ô|7yD„\Ž7¹D|†´|¢…pÍ?6n¥¡ËD­&Áÿ$Ÿ¯Î.¸'}o§¡cÛ3÷F-Ž1¦Y»‘gDèáüÝ5fý¼|£Í¿"à&ç’÷(lò޶Üo¨å$¹eÂ]ÃÅw­o ì2„Sçû£ëkƒ“/ò7èj‚ÜöZŽü£=&©ùBþÑÖ—û%EùG”8UÛ¡´häÃ9‚…*µª$[vŸ¨eÄf­0äy¦ÂMFÅÑÎ"c‘¥¥LψØÉk3#+ß+Ó‡o“”é’) ½"â5ØŒÌvçH²Q´þ–qt®˜‰~zøTÙ×7Ü¡¤J‡8f­Cý°c–b*Ý!R‘,½!òNN£3ar7}!ò©V~ƒ"7Zmg ’-ªèM™'ßު¹Rå}lJVÒ 4©Et‚Øs:rV¯î&—šUžF÷I]D#uPJî<“Iç¦j¾ÙfêÎÿGĹDX¤@ÎR?Lß7ÜTr¤ëƒäs#=dZ”´7ÞŠq5›!%~''§m¶}蔑5ßY4Ï©ÐÌ6íÉœèóÆæY—b׌°hÅ®<Èa@ÀoDëùE™þR§}\»Yʲ ð¹ð2êÕàs ƒ@*ûæüŒÄ%=$ߪÒÑ’~nž7dÕú ™±·ìm.+Þçcž®ñ‹ÌüH’ýê‡l0³yr“;ýÛ.ÝÛ!³·}¸l󸚉èFßvÈ+çXÅ )¤“l0³]ÚÌ!#Ìì³ Æ%Ú.#}Ú!¹¯YŽ&vÈŽ¶»]š!µ|’ fvÈ3;$½Ù.3÷æ!éÍYçY”dw3“,t ‡Lð߇¬o‡ìnf’5¸™¹Ìnf.ë<Š“nf’-¸™¹Ìnf.ë\Á_;rÞŽr@›WÐö»aOÁ´e?ˆdÒrœŸ›Kh»" M%@ÛmW´]Ðöך»V*ͪzn_ M%@ۃˮh»" ŠìôXz„cAÎâ³¹e„g»b*²+&"»"?L%4›[Zd¶+‚ÙT}®=…°lWeSÂåʦ“Mï$$Ûs·é×dÓ:Mé86ý§ÓØô®cÓ÷:‹)cÚQl'#‘Øìüs›>ß9 ’†Í©H6ƒ‹CØ =Î`309‚Ͱå6ƒšØ yÎ_ÃKŽ_—'úšÁÔákö}:{Aj#(Óð*´“$ï,ðBˆ?qט$쓪D]Ã!Å¡ ’·s‰tB®™–8qͤÅk/µˆ·öZ‹pkx6ê´eR *Ø2ë {cg¢%´"jè_$ÒÑMZ–³yÓ>9 GLû…Y&•õ‹²,Z ÒY^'Æ~üáˆeR'œXö2~¦®jR“Å:^Y~+Z]YöËUp¸Âhê|gªäÙs lŠ st&(À(ù\a—èi‚+”`ª¼W–ìû¸àÊ` «3^p¼Ø1á .Vð%¸’“=àÊÜ츊{ç»àÊ`Qßçp÷ª™àÊ¢¦àÔáÊœªÖá€+&ü;\u¥Ë® åÄWx-UÝWµ8ì:\5¯nM¸jήì2}ÃŒWZp…å;Á`VÈ!¸Š!{-¸Áó,³ª{‚«˜N®°,âÁU´p®û ®PÌà÷8\aZXœq¸Âg ÞWqV®Òæpëx•Bu„_á²z,œ_‹¡DXÉœT:!V²ùwMÏ—ê„A~Ë6éà›¾/µ‰w¬dN Ÿ8 4­堕Ɯ‘ƒ× µú~±0Âk©tà1‘h+G‡yÇ­löZXô‚Ù¼½:Ú\ÙìWÝâ".êråYjtæÂýú+òÕ‹O}Ž{ñ)Ê¿9•áwbiOŽe(>éþâ2rͯÀ aŸöíd†$!ÏÑŒÅ&¬ÍàOvÝ‹OÁiTt†ô…é…ãüµæoxñ)¨Xä€Ì^éoœÐP\J'DC¼'Fcqéi¬ù—e§4 ÄeÇ4—¤ÓÏX–pPC¼cäuRCq‰i™£â%c¾³ÚðüÔYͬ_ç¬f2h”¬6³ÉYmø/‘:« /“:«á`Y£ª> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 351 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./spsymmfig2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 393 0 R /BBox [0 0 576 576] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 394 0 R/F3 395 0 R>> /ExtGState << >>/ColorSpace << /sRGB 396 0 R >>>> /Length 5736 /Filter /FlateDecode >> stream xœ­[ËÇqÝ߯˜%µÈu¿[;qNàˆ€†‰M#(&1)ùûÔ9§zº¯Â!’…DçNOw=Ï©jÆëÛ+^ß_ÿñø­ý÷Ë·_|ú§¿ÿåõÇOð !\çÿ?ýñãã¿Nöû·¾âxúýOrêù9„ž®·?\¿ó›÷¿¹b¸Þüøùݧoþp½ýöñwoù¡µÒñúß«ÆúåJ­>ãÄRoþöÝÇOï?ÿç7×Ûï±ö«Íþê»/lö»_ýƒým¯×_¿ÿî?=âõ­ý÷ý#rùß<ú|ÎzÙ†K¹~¸jÏ]üp}÷“Ç’Z{&=µ>C»»¸Ÿ'[.öû¹‹ûyõ™ÆýÜÅãùÏ<÷s‰ûy±Öp?wq?9Î}ºýük,ÝbiÊ=<˼JVúM Ë0§m¿ün,»Ù/ׯx9¥çÚ/·¯yyšWåãåþ/g;ó,ÇËã+^.¥=C=^ž_ñr vÜ/Çp¿Ýâs¦kÌçèfhIe ¸# ýú¸èNÒ~í/Jº»¸Ÿ'[n¶û¹‹ûy¶¿¨ñ~îâ~îÛYÏÝý÷<Е¶Jy¶GΙGÇ_~Is?ûzì Gö÷ãW¿Ÿìý’Öûé«ßÏÝq?õûÅÞ¯÷÷Ë‘Ýâ ô2\2~ý—w×ï®ÿIR“Íýš…2•­mIÐöiYç|m;!ûc%Å——‹£úã™^Þî–º{Ê|yÌ þíÔúve=6¤ §žO_^žýÙ|g¹$—óq¶ÌüÓžmÏÇÅ>]§;öO”Ûxf?—çâ—ÅÛ³ùÎÊÌ?UJæä*ù¢…"–»-O,cõèçœãëõáÑÛ3&Hæ2&u„éœ( `É Y}þð‘a¬, ˆŠ!êÍQ±%¨»SìÏíg†ýÃöW TØ‡Ç Ðe vF|VÅRƒ¥æ1 \1ó#>mÏlKÅ„dhâ€Éb´áÇØO°µLÁæãsØb)>‹äÌ•,—Ê•ÚÏQLj¡?‹­—]ø¬íõƲ‡É1âÅXÍü“rbþk ïtX³Ci¸hžÕôûåÇ>žƒû±Zdê#!ˆ ' šþ¿—¨²8h-ÈF@‚z¿Ó ¦Â$yÒ3Bá&ÛÁ`Óiäz9ÓæCT}Ì•¦0%îß ¶0ïúý€bRXë—k¤Pp,È æHí™ú·lcöH¦ÿÌï£hYö³mžÏ*Ù#eû™äÉ‚`ù&S?52ÊM¿•߯öH– ×·ÐHuÌ*;ì‘LŸû«CõÆÌJý›a:RNrh OæÅço g;ÏÜ`Öú–flfMÜ>lá»ÛÇÒªÙ#›å/0´­gþÖù}ËGflfÕ~:c2ã$ZP™= k?#(¤èúÌ39RM ì‘Ͳ~ß`ìGû³Ê˜±¿Æú cÊ™û3E„BYû3Gƒïw¾oI ØÖg´Á~ì|þþ„=°¿ û&‹¯T¸ÆW²ø :o” ë»ÉYrƒ=ð~L”ìóñüp¤¢ýÅB9ÑöGæïͰGðxHòaK4IÏ;ì‘,KD~ÏFõµx¡¾ù‹©•ñŸ,¾lá¤,¹ÂÉÜ ðý$ÔgnæÏIEñ䄃øÈ“€ÄäÄøÈLC ãúÊ”›âÚú²øB| íp¶âÃΣýZ¹C¾²4W%g•¢ŠŸA®ÌW¿ç·øB¾šKÿ_Aù@úªùjù ùjÌ%3°áFÌ_©7ÂÍ׳øb¾*ø¬É_ÌWÑÏ 02Ü”SËÌW|™/ÁƯ,ì¤?%ÊhŸ™Zo2_Ù¶å/‰,–èçµøB¾RÚ‚\˜¯Ì,“úµ£x˜Y;õe‰ÕÃÜ ò|(Ì(žÿá¬Ù¿gcýXçT4Ê€üq4°Lð<¦8⊦ü“LѰG(Šï„D[XùdO3ìÕïíaaõ|ÐÈ·3ê+‹.Ý~ŽÚÍ$qo_ªÞ}=Uùîë©êwSåÉ‘¥z6bŽ,àÓë\Ž,਽bÇþì0»B¸ÆËœŒFCv"ÏÄä6/¸\¥X°y“~Ü ŠÉW ¼eb…>3§B¤{e+_æ7HbbFššžl³yAåR´eÎ<)DžÈB)dM>5 „dLìpæ1y^«[X‘a™­l Yê€îEx›´ JóY\Ç”‹f+Y³b…·ء'P&N8Ò-Zøä|ˆy#Xˆjßbƒ·8 ö[´«ÇRe‹jß"¹å;޶еߢ{=–ô;–²ˆIÇR0áXj W»Dä¡c©ÐC,KíÛR»Ä±Ô.q.µC,~ñó©öb°ïP{±H9Ô^íÇRHÇRV‹µ«H‡Ú *ï±” õ-¦pª½¤tª½XÖ:Ô^¬j/VŠê¹Ô<Õ^,Rµ‹”CíÅÊСöbUèP{È;–2Œw¨½X¤j/)‡Ú‹ SíÀwçRóEí†îNµ×ü¢v‹”Sí€vÇRVyNµ[á9ÕÞÒ‹Ú­¾œjª;–²H9ÕÞæ‹Ú­äœj·Šsª€îXÊ"åT»EÊ©v«6§Úò¥€åŽ¥¬Æžj·H9ÕŽ¤w,5ã‹Ú㎥,ŸjŸýEí)‡Ú«jÏó©ö d\±j¯ßµWЀc©˜NµW‹”CíýÙc)AÐ-ÎSíUn‹ùT{µH9Ô^­Äj¯Vbµ{'s‰»«1¬âoÎ,–ìm/gÉë±ä[b™½%VÙ%‰%ßkì-±ÄÞ)ò-‘!/Iù–Èo‰ôø–ÈŽo‰äxIηHLµÅ|tö1Þ"yñI‹oQ¬x‹i· oN¼ERâ-Ž­è›o1ªv:¼Åz*ÛÉðç©n§Â[̧ÂQn±*w|‹bÁ[L§Öo±½¨] x‹óEíâ¿[Ì/jûÝbQ»¸ï-Šún1½¨]Äw‹íEí¢½[œ/jéÝb~Q»(ïû‹ÚExoQ|w‹éEíb»[l/j×½EQÝ-¦µ‹èn±¾¨]4w‹óT»“Ü-æSíNq·ØNµ;Á½EñÛ-¦¥v²±Û-Ö¥v‰}©ÔCÔv8Fuf;Á:±…HÞ#^;î:­Sý8gµÃ[lNj¤ÅYÉi!ê))í ÎXÄhgp‚,B ¯w¹yE‡Dggð]‰ÍZ-ù™Ñ¹¦¸ìLNEEeÍŽìD8“D<ˆ, 7)kfU@4,Z¬V,6¬:‹5;³kµXlHÎÅšáÙUY,Ö,ŸÅjÅbCUWk±ØÐœå9‹ Þ[,6ŒÅRÅbå›ÅÆ´~ï,¶,Öy³Ø.ÙYìk\,6$l‹2),›VWaˆÅæäné,]P~ßY,Hõå,]Pª×Y¬¥íÏY¬“]Mg±ˆ_Úi,ÂL¬O<6©nÜDN+ú)& W£9•…¿ˆT‰Ë&Ë–l ;™…™³È-KmjI¬Þél²xòYt}Ø%qB›ÚþѦî]§´˜éˆjŠÓŒڟH-Ì–V›¬þwɤµPs&ݯͫ àÄdz͵堶>„¸¹m®«/ r›-³«æì6 GÜô,ÈÉ0ù-Ù e\ˆ&ÒJ†‹ dã%ÅBo’Éq‰«ù=‘\€cG,€—³§¹±Œ?繄­ÜŸˆn™Ã¿/¦[ÃÚŸ¨.dvÍœëØVÉ$»À½êuˆíb}µQDwšÙÕq¾Ëýè}ÞbaÑù¾/dù“(/dÆ—s^¼_¹?‘^¬/ÿë-h¶PíÅùd_ñ^ì_ý_œOûóåsêCÔïËÅ}Ëô®¼“_ìñåì·Œ¬.•Óßbj™åºùoioN€Kõ©€3`L_NK¦›ÜÜ—]q'ÁyqJá,8£‹ÈõDƒ9—Lœ«ç'Â93ÜL8Û_7ýžT˜]úqÝ\i‡ñædiöu6Ì4Éýˆ§î]]çü{B†$BŒ´]ø}1b¤uéS”iŸåÔ91òGÔs’bäú“³b”öÀœ£«Ìæ›óâdhÿ"Æ(M2™q²cè{¢Æ)y}pnœL¬ONŽãjî9;ºb¼;=FW–]bçÇÑÂTöAŽ–ª~OÌœKèá ™ñé™S´ƒ$K_bÉÑÒ¦ô#šŒúÄxvž *À)eÔ·ÈõŔѥ•¿ˆ*ƒv0Ÿ9WŽ·?ˆ,£¾fÉ,„¨¿Œ§Ë¨×òñeÈÌçN˜QßYÿœ1£þ§ƒ2³‹[®›3?0Ÿ9i¶·XNœ4‹Ý¤ÙŒCgwÒŒÎk½nÒ<‹L礙ŠïŠ4ϤÀsÒ¼ºûNš1üãS‘æ•õ4£Õ:®›4Ï ŸsÒ<=Å:i†"ù®H30 Hóÿö²Wþ¹Ë^ ?öÍZزåm¯·ïxwýË»Ï}÷îãõþtýúóëëÍ?¿ÿü¯þñÃõî/?þûç÷ÿöñË7Áþowʾî2ÄÏÚ/vÎq»áË×"ø‡ÙÜÜô{ÉÀ2®08PÓ伯3›ÜÖÞ…u›R3-⃓Hèb~›5ÖCá @ÔeS€|Œ¯ÛpOíjû3ÎCÐ'2ëÜšÃ5C!sÒë9ë*ôvˆSIR“ì1Õ‚>¨©AãÐ\ÒEÎ×XÄÃtú \8Ì·$´• ›’Kt"ІrAUÀtZXê¬ÄÕJdÌÈìÌHH ~TÝ`ÜF\vÔ=€ÌŒØ|.‰ ¹‘»<¡ysýÞ ÉœãÅÕ£Îh@XA|.‡2þÌBD -ñÞ]+`ÎT4fI®¼˜Ë¿i‚ *¤%?}¥È*šYU÷:gM)º‡à VÊ@z»ÜŸëd†NŽëZ¼wÐü{É.áîßïDP){EæÁ1Ç]÷:þ¼§Àý¢K¨ÀÕï5 m&2zÑ)W=oD$«B²£ £ µŒ\OLí¶J9mT|'ûœ¦aš³ q‘©“‘¡་ÑáŽãäù“†·âú`Î ¢£þ31—OD0ë^ 6n)ÛÐÜ>3`nM„ ¡Z#CD_st0lî·Å{._Yúy/…Ï úeÍ5—5G·è†ô~ òשð#ç=š57ƒŠÎÔbàðWChC š0bËkNÌ 6è‘Ißææ¯pCŸkînÄGúdP(Xšó":ÞC¥>PdRæ€?æéMäéÊô ÆTŸ²×õ­£Ù3¯Q.R÷!ªÐHMb,‘0së>y;yE¹{ŸàßS·Ä*V+Ôa?‡$«o Žu—A”¡£AΧc¯« 5’yLG¸ÍÓÝ ìWG–6ªºŒµº¹ÀùE­_Áþá—K‰ÚjfÏbøµˆš‹·«§`ÿš¨0k¨kúG篅ιZεðRÙ'JÎêOW4 Ç!ÖÕ5ç&Ѻê[l쬭Îwm÷=`‰UãÕ]Ýâ=~‘ØÎ Ãÿ4î ëGsáñµSâñ%t@L]&õ¥¤¼®Œ Àç–â„Ç—V…ÇïæûšaÍÇ—íîë/A·RÜÛTBº;›·d˜ðÜ_„ÅáL Ú¾<&¦B¢¦³ûsŸpøògÁðåìBá‹. „O' ÂàÓ‹ ø jF O¿',¾"Uøa¼á÷ô/ô=£ ¨À7’N$ì½2‰ ÷ŒŠ`!ïé‘x¯™‚ãîéq‡Ý+Ù9êF*$èè6Q˜N˜Wëé¹§÷ÔqÏì€Y€{úÄÀñ6²9ßÜžÞr´=‹_êØžÅï k£çN_ÔžÕ©ž6æYܤ€öê4:Î6± VfϾnËeÏuYY ´Q"1ö~Aì9ýæ´öœp°QuQZ›-]\%À†¬} `sÄ"¹‹f¿H-€Í í(€ û¹L€ Bé¿'Àaíq€  `ƒS  `Ãâ]€š›¬òØ •Œ/ØP>A#ÀÀRÜ `“YJn¹dÐØp `lKíOìr›cih"e¸†æ]Øœ°°K]YE»†W€]‹´`›¤u‘»9ÎØm]œ]Û/J/€=q€mQÛ¨°grý8Àž÷ELbLKu±W;-Vïj–=°Ap4ÂÀaÒ÷°y‘œO›j öÀNÕ  l´pÓ°±maDlŒlîášU:ÀÆEr\ØXvÇ5ÂÀÆÏtïQ;¯‹«°1ù96p´¿6p³¾'€IŒ²6G@ñ`kÄ&€ `¬õ°ñÏŠ¤lNJ4‚ !5eqعÙÇ6À2 ­ClÈ:0vººA6ÞŸÊÆäE#ÁlŒ¬d?álLrD´3üQ#"mLŠ˜jc²$B%¬kS<:ØÆdKQh“±©‘á6FMàœ‰-[˜ € pçäÝ7&‰jA rç¼%/ÌI§@¨@wZ\ÀQwÍ[Ú‚Ý“¹Fð×ÖH‚À#Ì¡‘Ëy’oèÊZOØi$®‘F9:°úFÚÒ÷¿&7DÂß)h"δºFIÏê#ApþË¿ƒÇ?ÂÑpÒ÷…ÂIØ…Qè(¸‡¢÷…ÃÑàâM`â(`q ‰ƒ Ë‚â¼]ÃçÂâh¸‘€:gCNx[ÿ'û?”p8Bž<ó‚ëä äY}y"rŒ4šž3‘¡8&GãQHZ ‚ösTŽú2XÈ!Ä/\BÎ|ïÀõK¿2Ë>ÍQï„ò„ÍQõ}sÔÏ!ìNtŽúJDâðõWû>gw—ï  Ç5Òs„Î+üž :ÿ=˜$1útXës®&Œ>}¾ç}z£õ»ÇoÿÚn< endstream endobj 398 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 402 0 obj << /Length 3284 /Filter /FlateDecode >> stream xÚµk·ñûý ¡Í‡=Øb–}Åu$°SµÑæ®h'Vº½;ÅzœW'Ÿƒ¢ÿ½3Ã!—\Q–ÎI`¬Å%‡Ã™á¼÷òÉÍ$Ÿ|wöÍåÙ—/e1‘¹hòFN.¯'µœTE%]L.¯&o3iκüë—/«2„’¥y8fµ8—ÙGxîáÙœOU•m–0ÜžOµÖÙ5ÎövüÆ!ô®‡ÿºaÍî¾ÂI‹?Ë™Ü1­S&cª Q—¥%†ö®qï‚ÏÀßiQ:Û\[vTÄNQŠP3;o,H| ‹¢v ?æEΈte„2zR%™ ˆ´Ê Ϊ4Ð.ªª²€?ŸO‹:{—B؈<7“öYŠ8#jãi“@œ|ŠìÙƒ“Á­e¾YÁ˽¢µ•”ª‚VWÌ´ë­=¢®"þU#êJ&x“o•¨”BÞJÍ×!SôX lPÏ‘¢šÄ𔫒BIå?.ƒ$’B˜¢x”# Æ€L@0W)±h#4èÒc¥¢+ý[HÅüR)P*â|jLž]Þ¢u±e¡î|lI½–dÓ€ -³~ 0¯Ea‹ãáÔ¯Å}¦!ë\ãªi¹€Ý]Y¸*ê/ìàŸ(&=º;üþ»³É[‚ûK‹Çãƒ6PèìM‡¤­èyêïDÀ;˜ø±¶xì‚ÖÜ5ø‚Ѭ6½ãÇ{">˹ƒe*Ï‹ÑÎŒõÊÔÖ2;áÃãZœìz;A'ïЙu¤NÕqIÔÙ7äÛ›%ûÀ–=yt¹y|5ù‹©*÷‰O:`Uˆ²lÆNñ UÅÑ´iy(¸)p ®ê‰î™ú-ø+Z¸Û±¢°ÛZ÷Ž´NMÞdo6÷6¦(ÅnaíŽp·äõî;FºÅ5§•î…[ªAÂESm?`]\nÕ’þc.M;cuêžZË`ÙEÒßÚce6ïŽ\¯6^ÑéÅj- ~@7»=m…¥ÓîGPW@°%ܨ}dÁéÄŠbÆ÷!Þãš…®Ñ¬µ.G NŠƒ±U5¤%Æ'É(­Di|BÿYSÄ5~ e|Õ…^ÇÝò0[ð=ÙÈI>‡¶ÝRJs5ÐiïÊz¹¼† ^ØËäÄi¤&ZÊÜ…< |É6€CíXK®¬Òœ²9Ø’¼·Û-‚‘ 97ë­[´¿Kš¼ñ“)©«R4CNÓ§Ò§Z¨!„@ ,’W#ÃKãeÈ’üÍR&ö‚@ÈbÞ³¹‡dé÷öå†|[G¼´S,Úm·‡ã¢Ô¯ò6ÅáT™RTRǦ8KdnF”µŠ2·w)NkïÐóÔ©±8’x rb “h6üV-E-å'±–"Wþ:…Õß ¶AÒù´¨cZúÔ·)éܹ¤A‹82Q¡A8>²Ê*éVk+j"ÆÔ×É£ßMÎdkÏŸ‘uÖQÀ Û^örljŽa½E~ù²‘$!w5Å~¹Õ*)ª4Õ£+À£ÈiíVNãÜ'¿X¤Ñ±“ÊáW«(yÚÙv7½Ï®8\€’ê¢Å‹÷ˆÜEIòÇ•Ê\(ëI_*ö;2{u7À¥²0O9Ök27Àµ[û³Û:v§[ïÃñ°¹s .Iáí=SÇÇ•ûVXñÊ]Iw%<ËÎ)žå½#wÕ†KÖ§o×ÍIÒD Èš@p¹(Ù"ÿ“öNAÓ¸ßw@ÉÃåÛÈéiaª¨~»¦‹Y¥LôäTÊ2»£òg–HCà·ã ´„Êåš';Þ8ßë°æ‹Hlxœwvysm÷….Ñ þ›Mœr»²y’ªsšCßÝ ž«<„ ~Íñß?œ%¼ì¸Û2\bÙ XM)TåãÑ]RL]O´hŠÚÝ“|¡p©ÀÚòó¦¬po^”A"mNÐ%¨‘„<³‰’¹­onIÒFŠP㜢ÍA»¡~n^ÂÌ×ðü ò»iúÀ†P’ë#³×¯Ê›Î,]ÈÛ:ßÚr¡ƒÁÝâ+Áµ7Eåº^1§Â[Uן³ l‰Épû:¦Å™°QûÝ¢‹+Y÷.ÑX‡&m”-['3…Ò£,íµ5pÎã+DÖo).mü2M¹˜°B@”Ì2ö°‡#P*Q3y˜©](;ª!¿ ¸zçìwî,•;[°¤BWQép]´  sÓxP#+o'{ÎcîñÕZ‰3 |]u-—+’5UÆ’ŒÚ0H×MßÎÓέ÷­>ÛÐÊú›>ÈNÙÄ^3ÄyÜ烾%ƒèÿS‹óÁI«·Îµ„@H;{€×¯.^Ø~åÛcDÞTàGtt"Ï^\ž½?“äù!E¬¡¤„‹+”ÈWM櫳·?å“+X# äĺB<Me9¹8û‡mœôÄá©6.ˆ]$ü™‡Õ†‚`+›¬‰Q!ò(ÜU¥,Ü¿èP;Á:4Ðç²ÂD h’>‘}.SçÝ´ÒŠ:g™þ`óÐnEñ¾2¾ÆËÓ•O]‚…6`¨Ÿ—?ȸOØ Q{=wq¦?޲Nº¸dZƒšXÊ+}?õ=À7hwérL™"A]•e5¥{äv8+¿2#Ã/QBvÒ7GñØì‹ E›7^ËäA½@m”uÔMÉ‚ÅöZ#4¾Ó—¡Ý³ó©”ù$“üˆ¤ê°w¾D&%]B±Úí™{Åe{ða”åBÕúH3 /ô©ÄU§÷óÕoðM@ÅñU Tm¥§5Õ¥¨4»–—èõ1F-£Ö+¾w©a볈pw#-÷ñzîáÔ¶Æ;[¸zä¼kÔ¬sËAk Hù~ô~Ï—1H-lÐMÝ1”wføfz(ƒÚ<ÇüGgÌ(ê;Ǹm79Œ§Áߌ=®Ö5äj£¿NëYQ@#¨ÁT›8{›íÇEÕëì–/¼‰#šEN­ï†½ÊŸmº¼²?Âæ‚*>³Ã~oQ‹ëäbÎ]ìIÄÅDí3MKNòQßfÜjj÷ÍÏ}ƒ%çÌÙØ‚ WÝTi¡dxš»/T¶1úáÔÑõ®øÈÑéÁ©ûC=  G™ŸY Ã~Ψ±å>ÑA •;—0ó=<ÿä‚á¯.#¿añ¶å»çÔôn˜ 8(WžÆ&“Çý¦sÜ€îIÖöóºQžg;jŸÙR›¶Ÿ5xO.Éú‚T¾qè[Xq#Žyô£ë¹€ãc[RV„׊Èp‰8‘äjÛ>èPâN\ çÖR]‘ËQ©µ*‰¬mP$¸ˆ·÷1¨lQ¤¡(â ãÇô»_˜ÐÇQXI®uTø ÜÚ•}Tÿͨãp O×nÔՌʟÒÖ¤T{·Ü\áOA–eK®ÂaX2nß%²¾ñµöóY™­Ú¡u9’šRó¹ýÃ_8íú bD? @Ær(v$½užtÔsƵv-¨!þ~žËÆV®’Îî×y®8&¼òíœG²›óEW¾Ia…ë"O7÷ù—Aó‰Oø–Ù[±[Ü0¢ð¶bD(¹¯xSñïœØzwpS?Hÿˆ³_sütñtÆ´?ìÉ0?Á½¾tº|n±lZºTû›ÜQ²È ï¹×4Âɨi¤ÊcM#ß%ݹžÚžo²vÉþ~Y³*†Z5¾äÙžjžÔC¬•hŒ¯o7þ{/ý¹DYy>ÖóÙŽ•Êbè)å‚ébuŸŒo³EÔ¶E}ç‰ë@Ææ§¢Ä×–þïzFí0ú’D×üqW«Q6.³G¸'×À¼ç¼Ë½wœ¿¹Bqúø VÓŠýóA¥^¤ÔZšC6óî êþtÔ¯‚Ë|Kôzx7ÜB ©Ó6<h;üD†:Á8Fè‚€>¶Ý§iÃðƇÝo ¡";Ã=Lþt¨çxqÇ”ß}&Æ'{ï‚ô`?ŸH[jú"‰eg·í §ÙÿU´/åÐààäå v³-³Æý„ü#-§éW¥l²ÿEŒÝï‹Ë³ÿü¸« endstream endobj 419 0 obj << /Length 2558 /Filter /FlateDecode >> stream xÚ½Z[ÛÆ~÷¯Ð ­è¹qHÚu€nj')—x"q”–¸»‚uÙJ«MüÐÿÞs›áPi7~0 šgæÜÏwÎ WMn'jòÝ‹«ë/ßÕ~¢UÙªVO®o&Ú¶e­Ü¤®ê²µÕäz1ùP\OS],áê6øßtf­-®zúq»Â±îoøÒÿ”‰ ¼÷ðߎß{×à×ãÔ4EOÉ‚njêâ‘—ÑËŸJ¾ØàäÞïÆkèwÿ‰_üŒBn‘êævúÛõ¿^¾ÓUª™mLiZŠ“NºÂI/”˜âå»¶MgϜӓ™­ÊÆ{^ð×éLWµ.þ‡ë`ÍLÛ²rm¬ŒÍ}Ãc?‚d?Àõ®·üêïð8ãÇaD/éù<¥{2)ÛͦùUU n{¸þ ×efaÖn¼x¼ˆ^ëp#ƒ6.5Dˆöv23Ué”f ¯`>ÆÂ®9\ŸH&Te¦£BWßÊÌ5\÷òŒ õ‰b{¹-´ÜÜ-Q­té\=¶Ï,P£.¼×r¸œç„§gtËÝ:D^Ïy‡Nºës¢•* ·'¿¥HËÈb|éÚ&L§LFÚ÷ü@¼n0b·k‡S´ÐO »n/wE÷+‘vák+Út§3ã!æw’ø=²Û‡Ô$9 ¢Öª«™$¿rë 1½&\ã<û<äYw!©ÔØV)~Æù(iÞ áG¡õÑ÷Œ•¸Ìòm.£[Y¹H0$PèÇ+ÍxååD«:y½±ÿ˜Å \IS—ª•tùQ¨wQ¢‘X0a°D^-dýc(Zg,D~ 7Ñ2ô30ŸS”=Û ¯H YeíN¡‘ˆþE2û”åꈉ—DKõÀËŒyÍ$lJ!ÞÐ=µ`m„`[P‘³  ØìÂ6A¥Ì DF˜ Š›/SÜœU DÓ D8sÒÆÅ}©u6…Þ ï “ ˜ÈSô¤.ÛZIKãìÇKo}8kÊH t=If½É&Lð’ùºìì3Ù‘ 4»à Ä8p¬­Ÿb¯GìÝ×Õ¶ú3ÚL&ßW™ƒÓÁs*?±ÃLr!ØèŒ$o\ãä$)öˆˆ{¾4ÍÑy'µðMÍI Rklªj“¬£kÅ Þ‹²sÆ4-<Ç*ôß{èÚ„Toîcw¶Ȱòu V=âdêÄo’ÿ«âŽ?·€­”‡dB¶É–àÒ·1._ç72‹")ÙÉ€y¥XdhÚª¬‡ÝÑ-lû…jh•uì+ó|ET[R¥‹ßïâÇV-=Z…ŸRw¼1§ØÁ]E·£½l/Ÿfèý°÷…ÊÐB°í‘F‡¶-Ç%—ŸÈ)+g0‡¢“JLZÛÆÑ›Ð(ö êBêÕÐW”#ž{ªªÛdÂr òg6²C²gÔ@ý#,0Y,2†%¢&i¤ÝsµÝnç œªió·|ë¯<Ù'\oÈ‚Eºû*ÇŸk V}±Cª™Cùåù¡Zs~¡ôÒ3RpÒ>ÚôŽ5^îùÞ͆ñéÌg~x)ÑGA$q|°= TlßáÁNŽÛªtc}ȦeCÛègg¥þMðÅ·I%õãï˜à™ê«y&ŠV¡dxPÁ¶‰OZB†] 2ب«d3€á=ÚÂÁÙaËùÇ]2‘ãÙ¼/›:ÑÇT™zîKë×óúBoþàMf½áìÌcj]zqüUö«r9FwlŠªC8åPEøt6.í{Œ§Gð¼à~\â~hÈWk»5Ÿé¬—kž<\òÙÃ%‚#_VOþ`Ë,†£‘ø0B¨M-z9 Â㯜4éQ ‚Ût æàdó¾bâ(2x0®“? §7‰ˆ±dÁ0á¾<îÙ‡S»ñÍÈ:÷WùOƒÖ—X³3që“ïðøùã5?îN«ÌJ(­ÂQ˜Ö‚!ÿˆÀ|8ì günøF^ùôóFþï „œÈ›løð"[NÑn#_FîŸR¨4O µÏéK$õX°ácßë1óL"U"W̘p{ýâÿ‡»í² endstream endobj 313 0 obj << /Type /ObjStm /N 100 /First 903 /Length 2907 /Filter /FlateDecode >> stream xÚå[ÛnÇ}߯èGë!=}©¾‚IŒl‰-HâDÐÃh9¤6^îÊ{1”¿Ï93³Ü‹É%%ŽVì¹ôåLuUõ©ê¦+EåQVPL«éB½@[„oÑŸ…JÚ%­E”Dµ±´؃´6á‚=~<ªÞüçc£ª'³Ù|5ª^¯ß¯Úû¿Mf¿ª§óÅy³xk`«æ]õSõ¢z†‹›Qõª¯Ô[WD;¨…dѶU¼ aR¢.¾ Úõø±ª^«êÇù›¹ªÎÔwãɪÑïÙóÆ––õò‘úá‡~GŠÅ¸öN°A'Šædxl{³ÁSÖÀ‘͉Ivø¼ÓRäF<Íïëz5™Ï´Õv8$”LkŸÅé[R !hJÐ0–qÆk¸`øPM_ï¬Ñ ~®T;ç‡b! ãƒ'ÂÈ0"H$"JÚ¸xB$íœ@pѺ]Z€¤ÀÜmŠ®á³œ¡;ø£^©ê×þ ~Ôh8ÏÙz:}wk5ØŠ-°•¡ê fÞuˆj6BI,`Ý=ZYRÐk—Íøl¸ã½ÊÏç³U+ËçXýam«çtÎnsC—Ÿûk¨C±›Jtø›çpõ¦¿†'DzÓ]cá·.mn<Çæ†Þ7ô7…oÊæ  úMg¨oýfDªDîÚ~õr1¿n /ªzyö\UošO+õn__֗ͨz†¯lf«%ØAûUT´å|½7Ë–B´þÞœOê§óOªUÍP‚vC eʽ¬è¤Gºê­r/18y!‘6ueêËNjäLÝ}÷…dL]iûÒõ¥ïKé˾ß^f¾$™RWvý½ÈEX†Œ9é ’á’ÓF—ŒÑ1ßiþi8óp@&Øk$ÁÒüÃQ$Ëõû% ¼Ø€NQ<L¯@h´-´Ár=9ÚëÕ¬äÎéÓ‰D÷…Ô&; d%øþ¢Y®Æ“‹Vô2(xú&!bõ†p|Ö䱋våÛ@²†ì¼_„EžÓ¡imȺÈv L4-Á $lÌÞeZyHéxð-hÿC@‚õ^“ ·OOOé(¢ƒk8¾`Á'Äs0Q>a‚ÚJ ”È Ù g¬”ï2wܲ(®6À™€¿;”ñ¨µ7³úr:©6*p’Lrº÷‡êdhè!¨q([á F„yÎP+Õ³R¢˜… `X qK†O¶§Ÿ¥w’·prÔÆúÓÁ9˜¦\t&¬TmÈ_<0¤ãÆTrÈâ½»‹ß«;g{¼žÏSVÑGDïr¼²³ˆ¥33cNgoãÓ{z—\ïSÚ[9ñuÞãÔ{üxK‰˜ú#ß2õ/¥Í1ü‰6Gÿ@ÚÜót]ÙÓaéé°ôtXz:,=–žKO‡¥§ÃÒÓëпýûпýûØûñ¢”FÃ9YËÌŒP]Êš¹Ûäñ\üWeŒ‡H²f%j®eð á} Wí×%û@²hç™2mVL¼d0jÏtÃç¹úGƒh¹žb©¦áEÐUÛÙYÅ>¬a ’ÉÕ€äÇ&¯™,½†ÿh]#8n:ËV:÷Œ¿Î5‹Ëf5`¼câ¼…û¸è“Á9ˆÁ-Ú\±€ %.õ`ªð(00¬ö«æ ÔÆ!˜`’ ÒîÔ´f? ‡#'çðPYpx‡œ¾Ý±8žƒÄ®ƒÛ#à Ü ŽÈM3e»Ü•=!s»LX‚¥bMšè™¿àÖ ýæhâbr¹^4ƒæ—[×C e–vîv;Îךé`L:Eî"ÆâÖ Þ×Ñ’Š;&!ó9à°WÂëD±`M°ÜÝä"ŽUNƒû·V ÈRér™L¹¥æ<³JÁo9:ØKá¦ÚŽÞïr2ý£Y\Õ34ÂŒ„EåfïnØ}~$rø(÷Šöªa5.äoÕ£  û¡u?;¿-ì²ýý˜â~‘Ã^°±F8î]'í%¿¹i 掽€½d~fsCLÂ=ܰi’¸«ü %ÿ9¯Ÿ?+¯ïs< PBx„>ðH}Àú%ùýÀáÙ¢iMô¬^5껳ï±ÉxS(#€d~~ë»7“Õo^©õÇ“ñRý²^}\¯µò8_›ß‚2ÂöcÍùèѾ`¨E;VLJvTý\_ñƒÖ˦մê§ö²šŒëQõ×Ùx~>™]¶G(…ûwéoìò/OçÓó›û}[½xöŒMι÷ʧïvÆÚ´èz½n_ýc2{2[N¶¯Ï& fŽSýVI¨®&³õZXý¾ž¯šis±‚•ê|¹.—“êrQÿÑTõx½jªñd1^_]L›OÕj2=oª«z¼˜Ïª÷‹uФ¡ÕùC,'ËJC'Λ‹j±«1j:­¯‚_Ö‹õÕ´^¯ªùå|ÖüVkö·üX›ûéG8¢áH?ÒWÒt£~äÿ'ýx(ï%ïNÀ9ÇùÜm2dfGÝI©BœR»E8v†‰<”OŠ?%†Ìüxf=x.RaÒN\»“>‡P?ñPbðs™É ÜÒñ|Ë!ṯ·Òð°^—Ì£{¶;à!e{oYÕäû%cw«Y~<¦ ²71¯ŒÅÛ‚%sóå‹êÝ#»ËFöˆÕ5¹íôÃÉ"gùõ—÷ÿ¦9ä‹+¦ë»~qÅŽö!äFŒ;$7<îö0r“zr“6ä¦û`žÆëîûìiê³§©Ïžæ>{Zxøà0ƒà¹HOÑž ã ¨d·zŽ$ÃêéÔf“«CÄe….7hh¾Ð‚oƒFÒæøC‡f³ó'š¯³ËÔïyÅb±ÌðÀfÀÌ•‘pò=/ᘰ…Ã=ÁôíÐÀ“bø˜>Ĭ(%ÁÂïT?kÆ¢É`ƒi‹A"ê|24™5=YŒ<ŠZè”uæ‘jð•"é”G?a@ˆ~#&Ë0£ìxΑ'¹á4ƒû¬ìËÕöÎ¥ð>¡ýí»‚»áü^<½Âï†à·mî%v–¹/]˜ºm{ SwøíË&é3<²Ý–Öô¥íËA·ë¸ “ϼÃF¸e7bxÎnÄ%faØ”>÷6\ˆ:ЉAZ<­íbÑþ˜û*njÙ‚q¬±œÌ!gÍš;¹4ÞM> f/™ït`¼q*O”åØåHù6'íýÑPâúDò— êý endstream endobj 432 0 obj << /Length 1574 /Filter /FlateDecode >> stream xÚ¥XKÛ6¾ûWè(·‘VÔ[i E³A‚ES=$9ȶüh,Ë•äÝMúç;3Ф­×(ZSäpÞœù¨ÀY;ózòólrs+G~™­œ\8Y’ùE”8³¥óÁéôÓìíÍm–šT"ü DSo§Â}€§‡§™zaæ6;vS/Š"w…³­¿ƒ±I}lá_¥×äî%NJ |°ºê÷Õl"`8ÂÉ#? b'±ŸE΢žü3ñÓ rZ7†´¤vñÄÍ›:w~i&¿ÃŸZò˜£§YŽ{).„Š\zà–ÍZöÄ©›<Ÿzq¸¿¡hìd8­7+ù‹KÚFžÎcËÓ"÷ãbpõžÙ¼‚礷5 S?cE^¢× *µUbj)uE!‰)¾Òª´lËÝ4IÜR½•½6ì5¾;Œ-íåtmxßo9ÎI‚¯{"8mêVh½ï§a”`‘ã‰8ñE ±‘ŸÄ…4¥5vIe–˜6¡[W¨Cwdիη’þy‘ðãŒùÌ6Rí½Ÿ‚œ~k䳯˜MÙW’¤”«èô®:²ºG4dJSKŠ®Dçv*¡C`\A~Õ#+b1ž¥HGx$ª…Ÿ€þLñÝœ»QèóÕŠ¿·êü…'qîs)¡(L ^˜„~š„0ˆüLåõË©—„èD??ÂfO#üü §¾ž¡ÝäNZéá~ ’€§Ÿ)ðe¢ƒ|}!f0óž?9÷™ø L‡gnmزçµRÊ”e^/µt1jí`¥pÃ3­ô`ÝWÛ$1";±D?ŒŠ®Yoód>h)-/ñ+ê;[.«.À\ùÀÚ…ð|²c°`NIHóÇ¢%žæÖs¯…ÿß­áeÙ£¬Ÿà×9KïuêŒû8Ô:u\dÅã~V$áµ~~’­§v.ت¼|Ø;=NDœÖ À. ·Ó<–m=Íí’ï2+k}èa¶`ˆà~Ã:-°o .š|¡ÑD»T& }è¹qpꙤbÊ–Éš½&ß~ žæª5š­bXÔ/«N:%Ê2wËíó ·™ãÆ;ä×µÕ¤ÙqÓ2(Ýó¡yPƒ\ªÉ÷c@ Ïü8 ¯ÁEž+ò…“ª»¥”sÞ„I3ò,(¼ÂA1ûÌvÃj90€µ¦–\›½ö0:Ô‡,Ú¿0m˜+NW½Üw”%§Ÿ"[â€hqh„Nhd¸èyЪf¾gÐÐ5µžäs3…ʤZ$@‰=ׂVå†ê³˜ ©<@ e¦±aÀÂÂG¸m£µj†FÍhND€ÔÅ€ Ìv[ñ±¿·š"ÂÔŸàùž?({F2'ü ˜Žƒ…8Êü£`a+“a¤µõ¤ª‹G:Ê*ö„TÇ‹ErÁ¼öì_ùºk›„aS •¢^7¶Ö#Sñ¥á6¶ÓjÛCÏÆ|òýÔ+ ú˜,_ 4uÿMøõm$3?s¤]®¬ôìRP’-·/~UéÐYš ÞëÁ“kâ;ƒåü™°:õµêŠþi_åþüÄi׎¾‡Ì8o‰›Ù×9I`¢Á u~ˆ£x¨<8nQkºa êXOiï’üݱ=Vê/r…¶©ÒS˖ˈÓà¼y£¬ºÄ—/òeNµšµhæ„ ”t¼·¡£j܆J¦òt“jz£î×c¼’e—«=Kª¦[šÝq s—FÅ—AJ„uÑÊý"MÏ?lX_5F‚~%ß.š"*ü4€k-ôæ(̬#sšœ…çç:çFåĤü<šúÉ…DÉ©€{êO;:ÿЛ±¹…t3Ω btùlîü £’SC£º7òИî¾'ëciÅ1ÕS4'ÓWZus-ûáÛ„ÖŽ?:©áƘV8 ßHeä7Tå9l$)!Œ^ä /ìÒ6`œHÖ* s,Œ('Ž#þÈ`P·­:C™I ‹o9û©ã9úõ•“˜oñ Ø`ÇB•Èåæô{UEAyùIEqý±¼ F»üÓ°µïó+«…HM«MʶuM³^1³V¾2Ÿ¿uGØëänsþ÷±‡ÿ-±Ì endstream endobj 408 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./gauss3rm.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 434 0 R /BBox [0 0 720 360] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 435 0 R/F3 436 0 R>> /ExtGState << >>/ColorSpace << /sRGB 437 0 R >>>> /Length 9539 /Filter /FlateDecode >> stream xœµ}KÏ%¹uä¾~Å]J‹¾N¾É­dÏlÀ£fax1°5€…’ [Æóï}"â0ó°ª­®ªn-Ô­h^æƒyxÈù¥×o^éõû׿}øû׿½®÷ué¹ò_¥ó_ÿþ»×ÿ~ýñï¾ÿðWú_ÿóW¯úÓüwývÿóOÿôÇõ?²]îûÿûš÷•ø”ۻá_ïÒ_ßÿáõ‹ÿüÏ_¾¾ÿý‡¿ùžWÞUŸ ßÍpÖ^i¤wͬú׿ûãŸþå?þÿ®oïöëßþÀ£ýö×gÿu´×ÿûðÿøº^ÿü!½~cÿûý‡Ä«ÿí‡^ßåzÕù®ãõ‡WNå]ªÃ¯ß~R쨼GfiºÒ»õ»xç¼Ì÷ÌO¹Ã§|ô÷5Ÿr‡wùñ8ÏÓÝå?ñ»´õõUÒþ,ßåú,?Ts-<ÈSóúÒŠ©ôw[¡æß2òž-Ô¬_Z3§ôN)Ô컦}5^Íb Í+”Çx_…ÍûIq}çäè)MöMÒ¼‹†ò>ÞózÊŸòœ3B{—; åzœ»üyºí:y ›ÅÿÔG²ÿøÅýN•ÓÕÞõÚµÛ×ÖFÉ^;}í½sªï^ví¯½wîë›×ÎWÈþÕ©ÒLèrydTòt÷“Jmテ&M¼•¬Œkït {z¯K…3¿W9kÖü¾’J=¹Å–Sñâl´>¹oC_S±RO,Î-½sõâ6ÞµÅÖSûôb%¦X¼*^S¥öÿG:o=¬*ýÁ6Lî6, Aí hÞíƒGm>ˆhåwªDKh±^O@åÝÙö8†*¾6¯Òðæ†G?ÔŽ(5„Ž 4Xo±lྖ(/Þo¾K*üåz§ ¤»/|HC Èz5žÅÃ/­¥­uíS§”ßY×lŸ¸g¯WÐ[;ûº¡ŠOÞ-¢X¯!éZ±g0Ô‘Ôå]h®†IÖxOK˜ƒeéõeŸOmO˜ók°Ù}­ \ÓžwŒ×¬jk{B{ç@0d£w~-F™!Ks6 °Å‰æ|- 7´™=}o¯5ñ^†,ƒ ¯wáE;Óà•ßý´VHWÕ§°—È:ݟǾl58_­á‘b­m«Áaá´ f<&áD>®jsk ûUJÝ!ójJ+Ö6öè4üè‘«³ýW<䨸?¦-ƒ7â‹¥<ýFlÉdã C Ù^¡4D¡ Sèoª{wäÉ/|¡da•q£ya´HW\öúöùn„Ïb¯`-_)–šF~ºYÞyqXlhûj—½>ìœV×þ¥Y Ù+Ì…Ð3h¯`u—Gˆ}c{ï´†žÙàj¯l 'á&ûI¾ì#óÇ -š-¹,üØ""[½†BoYG]ë)EÐÞílc½Ëî_¦Jy©ŠÈx7hwä´ðª[yåþ®K¥¼Ô@Gx}Dê2Ø g&äû.öÙlÄ®äÁ ¼.â„€yCIŽíyù!½CóŠR‰ PŸáœo·T¿!¿ñÅ.ǯÒwyG>ËVÍ’¬1 ^&#…O乌ÇÌŽ­"¾×Tù“µ¦­ÐCjççåL‰™>-öàŒXMø°—ckµ4»:&1Lå—®h¨d˜….œ,˜çt¼0C¸ 0‡ŽdÝ(«œ£K—¿†‡ÂHNºÞB®@ ¯éx [Lź)¦–ù­SfÃ'¤cÖ·ISB¯*ê‚ÀÖ0© è×Q©d —À1å®xGGÏèàûû^‹¹£°=ðC¤–´ï?ÈJì³éý-3؇AXxýÅìè}é±rfgCñÅüx)Ç!X@[ŸS¬ÙCZ‚´¦O—CkËÙcÇô@°I¡%HËO kä »ˆe„ªw$HK„új­#‰ªî@‚´o on ËÏòñ¥§ZH½*óZÒ±<Ï ˜*¾sÒȆ±ñ‚IÉΤÁ‹¯Ï±PÁY9ÇÔW®œåÙ8Ôuå†oŽ!V?îHSs¸8ü+N*Fn=ÆD*İ®º ²ùà‘lH¾X—ÉpÖ{~lˆîùž< #—uÏ,yiÜÓÀÕäèµ§(©‘í>°£Àä ­ÑR?à uÑþ¡.†`A<°"AF8Ã+tÎØñ9Èñ)Âë2«5¼¾Ò9p…º6hðú‹Iàùä ™*Â^Áí뤾ÎÀ° W¬ËÁ{C †­ȱú©/Â뤾23?°=LJp97}à@ê{à|àzx“à u1‘ ¯8{`fê p…W°!zĺÕSŸÃæ©Ïa÷ÔwÃ^ßFç^Áçë®ú6\áld©/çSÄŒú² ÃW;`H}Ùå붘ú² Á!õ®XwÄÔ—m<©/çS_¶ñ7¤>Àú² Ç!õeCê{$i—xè,(ë¾ÆHYŸK<”•(ǤÊú¼3(ës¯ZceM…®Qe w8Ò†ÄkDâ”õ¹ƒ‡¡ùm8 ßPHø­ÄDÛj̳6†üf#áuEÒŠƒ-<ËŒ½¹½¨ÈÆÀ¼6†Øµ0ÄLÏ1dl8 £Tßò€P‹ƒ¦D)¢“ûˆ¹°Ï˜ mà )ÈPÈ@ãèù íϳؠ:œ¡õ< (ýó,6â…¡Õ¼0²ŽG´Ñã€6FHÆŒãÈX1c†ÿ<˼bÚœGºšG¶‚”õ<Ë,1I€U<Ïbc\è›6ą逡ù<Ë”³Ñ¸ÑŠƒß\qÐYWsVŠ¹Þ†¶ê×b1­[w†%ª;³‘^6Ðêæ³EÕ®g*iHsJMkø†“Ð5}ê0xÍå3‡é#öòy±o±—ôPÐÊirôÌ*CLÏ/ç{6¾Ù¼¸_>™½88ô$. öiYú“È/§ü=oîڑʺ“}PQ{cë¢)—u1 Ð,›a˜Z:³P-Àø6À?IJ1¾U°'‰$:ˆÚÍA-¥a^&XÓÆ~}Œo™4Hu9¾ÍÍ÷4¾Y`éÐÞeî‡Äøv`9YÈè[ ×´k®ÍN9»E‰èH¦Žg17ñ´é›ÅÂ%ž—Ѥ«I ´y“}ñ´Y§MXì³ê}m|k…kDâ}à.J_jxÒ à@ÐØ NÊÒY@:{¢‚uݤsR³Z7é„ðtíG_ÈÒàu—èßE‘@Œê£x'Huõ8(Y¤¼n"Z´ìR½ÍA=% ˆš‰{bþ7ùÄt©©>5cL6Òpl?ÄÈ-ÑüS2óº (Ö»‹… ú4CêmÓÊ‹zÐ(š•ì=[’Òïml…ca ÑEê@^ÙƒËhËp÷ç­[ËEUñ#™¨åÅ‚©£êwdÆ©rcËÓCÕ'Ÿ.ÐrØ^•ê°ú(äâIÜ7¶†–ÈÐ8•V{C4^º¾Ê©¾ üRyAC°~v–r.<ßÎHA‰ßC,Û"DJý¾!¯d,DèzÙ/£ë&ÇHÙ ‰6–¥,¡fp*ã¥SHÌ3»,)«G;Åö¥õ·Ž¬õ‘ÌÕ’*âM¿·¼Ö—÷—ÁÉnîÃãS™û­°~iÏ¥ƒïc "¤}‰l– !úµËå »±åÖlaØ6¶äš1ÕÔõ)òçr_Ÿ2?ú—¾—½ “¯V¯)“÷›ÔpòÝÞ“"sx}¨}Õ_m»D¾'òÅôöœœ¿# ÖЖ(ÆÂ lt;‰¦“ê'Ò†¾§%hˆ†PÙUÎ #å*Þ&µ\jÙ1EºËû/5­XJ…²@ð|«|º¨J­áÕmx·t‹ìÕZ·Y[áDT%®vèÚ$#s z–3,ÕÎî™Ï ]».5‘hÝh¢Ágñf]x´Ö'‹5̬q+0Im Vk/u½Dc¡ï¹¬ŒOg]Õ <úm0©.` ¥_äeË3£kŠksc‹¹ërhÏ3ŠrX­ÝÑ"º r­T& ÑX (9¬›(åu_xÄÖЉx³)rïŠzÐXKWXÒâ+Ø0Qf¼!$Ê¢.í+À˜šð£{ÖGñ‘¥ï¶2¸8険)!TG=äÄè W‹hlæJ^ß4öâRž~ V»î¹Y-§bì`µš0O•Ÿ1ÏË¡¦ÌüÜdµšò©róI³6wŸ5ëõó–7».5ö T7š{ ªK-Ÿƒþ·¬60b°ÚgJü…+Ûƒkg%S£³~k¡øÂWvoëÉçK¼°ž AØ×+öM¡Ë! ¾ãºšUþÕðèXŠÌõY_}ÿMî£Eé¯hYI†€ÒÇûNT=/N¯T½— ?ƒ{ªèÒu>°Ý#caµ'ø‡_üú_ÿõßi¹ûõ‹þ—?þŸÿøÝ+ýò_ßÿf?P?fqà¯ê_ÖöUú·Û¾2´ü¿¨ñ >noUÅ‹/E,AÊvÛ>‡p*T-³J©xaÖ½!–#œç©o±DÿÀã 'ðYÓ1ìšC£`÷äQë‚âɉ4D_22EH@‹$«P^ÛGÞþ’eÁƒ¾Ð(•6ò—Œ‡¤Å°9´AÊ ,Y H^”^ ¼ª”‚c:\4 ròÞ5è© úP.ªAXßÈ„$ªxÁAHí¥—ÃÉUý˜ÊIO"P\ o´:!)!Ü—ÃÉ7Zú1Uˆ‹"C¯z_ŠG lŽmhÁ!†?Nr‰ ¹€Šì3}Ê$SõtNý˜òÌ*É¡e Ke¤Q%‘!Ž}ßD>>?•l¨îÜЂa¸Ù«$ññ´/uóq=†ø¸« %+O9“ígë’†*dÁ°ŠB¥dy"›"¶d’Ù5%Î.‚¯”«\¹.X•L:‹!‚^L"ÌÂ4[ñµ2Ç\ÀS·ã*'Tç®Gç2'tcº¢ a¡ ¬ëš¡ã²Û# #S•!ý F1tU†z)´A°Qžýú•®ªºÄÇK‘Ó³%©à+ù¢À¬çAfìÞ˜vc¸,‘;„©ÔA'¤[ •Iè€úè•è~zßzI€òÕ‡RÙuè0áóVæzèrêQö" 0QŽ!áï[ùa “©ŸT*sU)ó`X‚@>‹’[©ƒÍBǡr\K¥’êÒóÒyJ!Þä_]n³F¼VÜ6L¡[1}”Æ.š¶FUdJbùÆ«²þÔïiÞÖûAi\¼¿¾?”õÎçS<6*—ÐÝ[ð>IX#ÛPKã&ZZxýÎYg!Õ1âÅÆ=/ĦѠ åÈÄ®„‡ÒÅï©þÓeÊíÅßf´*W ¿_çJ]*§ÑÊuw`6âWíÓiµB¼«}:u¬{(;MgXgQ¾²@B¼äÝþƒó,'©=à0ž\ Q|Âb WàÐOÁJú{ñþb'2ÏA ÐÂe5 †&ãúZ®V˜Œò2LƳîKÓdl-MùªÈdlÿ¤òZu¬á /&c¹Á«C “á^Æ2éÚëNzûÐh_`2¦zGãdÉ8¿ô!-Búþ“R5\º2§t}?$∂œ†­ÇäêG±7íä–n´¸L»4»)ëòåNo—\ù¬»’ÛUwe÷ÂP€,–­eBÑ3cñ®Ý‚ œêókßÔEÖ6¾)ƒ`i¯Þ³*À•œÑêUÖŠV¯z]ÑcÞ¨Á ÙÓÇ ö¢¿«Íhðª V¡/(÷>0Á~nÔó –óc0`ÃR¸Q?|¬€ã‡N8ë Œ.Å1_žq!„ÀYËFOßL1üÀY£Wtž¶ÄY¢ëˆ6<Æl‡¥ñ4,Žø§9tÎÇ8Wl%Àh,…#%¼ïJ±…ƒŒ6ºA×ñu@aƒw0:I×ÑÍAak|Œ#Ù®øÇ ú&(lp²zÑG2Ú`I£ &8PØà8$£]ÖèŸ#£ #¯m„3>ƈ½ ÈÑôÀÃÿ‚Œ6!mB0ÚŠCmªy`AF‚0!m‹1¢½Œö*ñF+!mB. Á Œ6a‘õè5!émx s>àŠqxImãc¬„€!Ákã¼KûixØ)ƒwœ6a©GÚƒrxŒÒ£t6¡€©0a9R1¨l Âs@ c:xm Âz̬Àb¯Gùô äTYn’¶'´µ{v1à·È*ÅÄg›ï°+÷öî™#›¥Añj7·äB`Õ¤BÖ¶öã{`¯‡Èi{*¥Ú“ÓÆÖ\½“ ÐèÚrHí(·›t¦ìûN¡Vi:´ ìÕ‰ž‡jÖØ|¶Ê¹ H5Q."AØ æ&“Üç±=஄cSù^‚‰unôí!²vÍá»ÕÀc+]sÓX˜M²v€‘ÅÒ]â$—Ì&7¾`_nT‘š [@*¥“i‹ìÚ„x° Ws¹np¡V ÿ#ék"]‹Ôñ Ü)LûØ­cÚË`¿ñ‹Óþ6œ6¡û¾ÖÃhÛ }ÇIëÔæÞìj“l-ðÎåjDjξ'¥_x=ÅŸmŒ‡Z”|"ˆìU©–é‹ƞ´öï‹6õ^›­r§,Ù¾(ç0pmæìxH]“Ú49—„º–E`yc¸"%ºNÎéáZ,zò¸ ¥ŽLr+¨emsZØ›šû†ãÂŦ YäéP¯æf¹Pfñx\RO`U޹{Ö•ê"ŸV;œ4S­ƒ·EýwQ}„Qdlê‹=¯59A_²ÏiÛÜG²ÝšhgS¨É‘±eûr »ìsÜ:Ñ<î b¼öK· ‚òÂî¶\M¦½ÒÕ*pàžå QyE´–½ï´×íŒ^Þt\Èå\]‹Òn_óå&—¾¨ï5eW,Žgáõ“ž—Zµtn÷OÜŒ‹Y Õ2²a¬ÕMå`‹W.s›:Þ—íBœaOt» (ð¥öÑýÝÌ\ªá$Úß&þy;¶@Šó ýÐï?¯yg/àc0ÜØ ^ŒmÛ͵›ªŽà> a‹W|北dw,Þߪ6Ç„¤ç‘÷ñ“–c,%'·ƒ-s»ö؇3ðÃÁÑÆøAf¼Vÿ>ØsÛ¨>fýž)Ûéø}òZؤ6‚$C-ïS)xI=Vüdz»¸7“Ø:ªï¼gQNR»é^RÇ/•ÓüFW¶0©3òíÏäÎEç½tÇSùNñ^´ã~÷?ÐgeשêTÃÐI»ÃÉ=Á—AŸeY×·R™Í›¶R8žnܬÒÁgò†©”õ÷ðú\xÞƒ×Õ2‹['MøêD•‹]8 A—âzÝp‡,èóEß3 Ê<ÁUí;Âð¤KMÄ'vŽ2|êrå&AÀÁe%½`£‰³g9(AŸ3W¨˜ŠÈ¦×K»]Ŧµ»A§p4n¾ß¶S²ég£Ùô¸7“Ms£fo{W(¥B°é¬ φÚÅÒõã¹OQér¯OÖ¯½f:ôy¦`:HßÏôïËçkúIv³ä%Ïä'æ}nÉ«Üé¡âþ™%/3’µ†5Ï eŽFƒV¸Úe®;\b:B‹!Ý7ø6m¾‡ªžW2²øP+<ÊjT)d€ÖJ£û Úkt[ªô³íyIbh…g+Ìâ-Y¸t0›࢓ŒT}Ó>ÖÚ÷­ôó-ß<Ú*ÍpkIi•N2îã^Ž\êÌ@X•d=É*o“Òn‘Ú%fùL Âîàv$¯À8+YåSdÝ÷£ŠB« Ë °ÅVÏ׸n1«m q°î6odrHò A­xÂú¥3× ÓWªëŽií꫺`…ê¾Õ­µ±­C$nMº.ı"L¶É LÉñÌ´"‘«6m‡ÕKѧ Å–Hnâj’“‘¿Ù]{¡§‹=ÀSXíßµ÷qúÞëÖeíkcZ"Óð „À‡@Öà·Y²¦©œIÖ5ŠM².· òûk‹z¿q‹…cˇ¬SêŠÅu ¤”¶¡¦ xðàt̃›Ä¹†Æ­VŠ|4l£x©ç<”.{½ï˜Úë¹<}Á¦®Ûô½O¦„Ñ& –gT>¹°v‹5mR¼M†ØS‡Kh:aÖDÅ“|ÇÀÊj’N¯|ÞÙu`œï;l¾ÞaîD¼/Õ§x±Hib.é›I6Š^ÜËJk0 ËR06%/ö7ÇYÖM?œ²É£Äó'Ù:ab“ú󒸔ú.ç4ý_í»¨ó8ýž Åsu}nù€¥±gñÈ´µ¼y5É×áL8R… «È'‰Á=·—<Ô€ÌàÓÀÉf¦®£•f•ÊÚ/b3‹ò)øg¦Tåu¹zŽ¥ü áù~4èÅs‰FSZï÷Ÿ?µëhÇáoÔµ ÓËᤫMÏœ¸)¼»›®'Ê/{OjO”λ+‹=ѧ§£zercWm—î:#°ûY ]Þ$ˆ?ÓáÒÑwlă?öðÙ±2;ï£ïz¾|è¥]°çäC¯Ú*'ç'º²Ó²…Lý¸¸Ãù¡çêë‰CG·îuÌÞº®ÅgÎûø ö…žï“xø¾ù>hE÷]ÑxªsÅ%à^R4«p¦ÎÇ‘¿8Âáq¨^/-ú¸zéqõ¼KM0Øoz9N¤ëeÅEí^¯¸˜Þk:ŽíÁÚk„Çqn½–hëµFsHÇZÏ8àŒ°GIóÜppR¯‡W¤×OðŒg µãˆ›®ã†˜ãŒZ‰6'Àáá¬è­ÅÅôÞz<Ï©Ë1a0ÎÓ§Æq~[×á̬ÇAR£Å#ûèчü}ìS0ÎèécŃ’ú¼¢-0ö_m’x`ŽÖ‘>ËÑqFé ƒ½§Ï}ö£ÿÎ÷ֱßℱÿÊ¡~ÃÓÍ'ößu˜pºÖCXŽþ»Îs¿Ö±Åª¯~ôßÕã^] ¢œGÿ]ë8뺢½pF˜bÿWŽþÀq®›q'wôÀvœ,fCjððŽë0mþwÆš]<6ÂØìš~?°Í^ûÑì:êãhvmúxàqh%`lövÍ~—à®±Ù[>š½çn‚ÈÆfoÇ| ­±Ù?9ñ°5’ÃÆK­£ÙÛñG@`c³÷Èú›=jd"¯±Ù{=šÝ†ËØìýð¼¸Æfïãhö>fïóhö~¤qpÖØìã”ÒF:š}Wðרì£Í>û1Ék¼Ôá uÍ>8`ða‚·#1hkÛ<¬ø€ñxÍyÌa@YK¼Ô1˜Îx©­†MGÛ=ðØÓ眇GÔ5 .ÍwÖf)à­aNÚâ<&’Öë€#^ªí¹„è}*6 LýÅäp>;’AWÕìb÷ky³qÌË›}n¨f_¢Ü¸õMÐÕ³|š`ñ¿á±6Ô¦$À^;­†i³×zÝ'v¡ÔonKÃT¯ò—‘½Nš u)mœûÊ|ž¾¤.n~¥|öjµFq6§¿;0ºö¥½BBwaìKITpè,DÑUœè{$Á^í"Ëÿ Ø«5ûª’‘§ŽÈRé½ÒSuc?æÞƒ¥ÅÏ-kÀ~b!U8Ú.Ëž>EæºO÷ÓÌÜ`šÝ •#Í€©%à Â"²IÅ*‹SSz “(çµ™ªŽÞ=ëψ,‰ÙR…ô-w ¶Üpxíçc“¦}‚È-T¥á'–ÝBeË#­èÏ*Ì.U ü*á*/…«]3…J4Þâý é",y ŠBÔª†…,»ª Ò‹Å«¼üûÀqœiÑRØîþ€q`nŒ?¾±U0ßÅ¿ûà ª`¾8A¯uz*WOsÏ~=mÄÉûŽü€Ç÷©´Dåý·d@aœ[9©dØØ ­D)ëÏ|ˆ¸æ¾Åîmߘ'$ºOœxèì¿åXö”½\Üv¾ñZå¼xȨölÜ(' {PažHØ]ܰÁ',ú‰À<1ry<¶&K_õçk%°ÍCß»QuÇv“k8Æ÷Õû‹²_#^ú®*vm¨…EOß³Ó¾‹õ{©N8ê+ óÐ’ÇçëEÆ${²ë´þøqçI”»þ싞ÏÿTÏrKawÕZc‘0-z¾¡¼k—(,yTÁ–«6\S5ïZ‚IÝ-·ÀP½ûNdƒ‹ÜàÍçÓ‰Šü+Â\#æ†qÖÜwU…C5¯¾ÞIt’Åí£Xt¢J+ÝKç¤âªuwKrîþ—ŠWÕ’ƒûH& U;Õý<ÜéÎ3p«c¬¢\~>È4þ2ÖðϯՃ•]¿œ> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 451 0 obj << /Length 2982 /Filter /FlateDecode >> stream xÚ­Z[ÛÆ~ß_AôI‹DcÎCÆHĉÓ̓íÚÀöƒVË•”ê²¥¬] ÿ½ç2’Yë8XhIÎõ̹~çe±(Êâ§«ïo®ž½tU!KÑ”,nî ©áJS8ëD£mqsW¼Ü\×z2;\ËÉ ~³-þ»žj­'ß·ô°XcßìklT“üÀ;¼¶ðoÏí/–³#<ý~­êIK·½ ³kå&¿ó4j|-øú·ã'àîí~8‡žÛsïHäWÝ.®ßßüýÙKiû'Óµª©ààt&épÐUéY®?Þ\I¸) YHÙˆªV…µZ”ª*曫ÿ\ m¬‹#z·Ôæù†g?ošâ‡ÝÕ+ø‹KÖZTÚ„Ÿµ˜,Ç«Mu©…–U1í‘H2ž¼–…U°ÒðÑ_zù,ŽÄ?`Ÿµ“ê›ë©©ËÛ©I‚îpZЃ¶ãÞ{¸ß¡ˆ­¡¾eË÷ô'Iâr»{ðuc–Ûm½@àOØb¿(ÂíëŸ®Š·4Ã3ÕÁ6“Ç@Ù’÷ÀG¤ønEç ™­y÷ùnóp=UnLÇ#%£®;$lÛá¬ÞaacØt*µ°¦aN¾+m‰l™óº0쎷¿EmþÈj¨t_V¤tÐÂw¥²~Øœh\Iƒ*¡+ [²T<ð·œJ¡kX<zdÿü,½ÝÁó&P·ö‡Úâ9IŠ[µïgɼDÉUaå7DÆíÖ«´Þp?°k+Õäf™ÖݲüAÚhì{æi†…àx„´6ððcµRaDÒD<Ÿ¥95`@ÎTC¡¢zªºž Pwpë@»ïÂ È z¶á ‰—Æk½;.–Ü©ù²JÃát v‚÷k¿âý½8©Aÿ-ii{`¯‹-¹óðòŸCºaÒƒà±Éž§rœÆU{ÄÀŸ½lš¾ÀR@LZùòÕõT‚‡ó¼`:„·Ñøý¿_àç-ê–Ya•Í·2Ý 9úµ|¼¹çîoùrçyä'­‰-ròè'íƒIÿüRoᇿç®iÚ¿¤å2¾NX)p G¿ÄÃçnòÕx“x„ÓCݦÇÁiõË{Jöù“|¹¬Ô‘Õ­ÁºþD¹M=ÃDûeÒ‘ƒe¦²4Ž8°ôô„Yr0+Œy¡äPÙÔÓ„ÓþÇŽ<¡„H`*ENÕ‚)NÎ)ž`Á皦™ü’û>ø~g‰·“™ìÛr¥õ¢ï82wi')ki§iÜJ;DÞБu‚ù8µeù„-×f(B'y´Dâ‡äŒ«æ(xrݼØÅuÇ‘bЬÚF®“‚VÐ;Šj¸Ä‚;—í¾<¢ô÷Û><ú-ˆRÔ°MË„Vl­ŒÒ… ô¯LÜo„©9ì;´ÊÇ6eëb0ʇqÌÊcì¯vû>ð²>< Þ¾ÆÈ¿'TèEò"qdWò±¼´(„*LÊz¨ H…i¼øÊêBÜ=DŽÃù¯y<¨ù"c ÞÖí"µ×€i=*š;€†ƒ%¶dT¢ãž0bï­vÑ×Ç­g:ô¯Òí#¯¶%kއØyK!¹M#‚Çù.ÂÕ„ˆ©wÁÒR@ë:ÓJ Å‚°Êdø-•åE~ñ§ç·ªòü¢Ôj4ªÔòiZ_=I¸U®6‰ò, K®ìQöA"Ñ­Qç2¦Ÿ¬ëÐhêj=ކamØ!!`ž€áé#éu䆎UZ§/x؈¬”„¿Û´!Tâð¹'/ ç˜ÏÆ0ü¯“rd‚Ö8…÷XäO©á])ß©;`SH<´ÛGüˆç8ÎýApê-ùã§S5÷Ê»B¦ã0JÛhKŸZBjãÔ8ãã$÷˜uL»Ç©¤4n 4 |Kåê }(v`x¤åŠ‹ScÙ*àü[x~o"\ÎhcÝÕ¨”Æ?›¡AÖ¢*Õg“àŸØî§^ЕÖ©¡¤»è²”*#jÓ#yg!‘=ùyÊ?6`Mµ¬'ßaoÝ£’°#(²q[ÔŠƒ¹?š÷18*Z”W©wŸlˆÈ€,aÑlTÌ:ïC3œÔ%8Z÷YITMGâºLãð.gÛE :#‚T¢ôÖ‰Î|f¨¤0N8}r:Y=E‹É¼Aâdš î_Ï6p?ŽjRçìKZ´Œ:k„¼*ˆzßñÚ]„ßó¾‡$>I›„ ¼j=eä"Çt<*d‚´ ¹;É .P°ãH߆ƒv¾« <±ѣmB¹fÖ%H%•à]%ç¥Z$ßm¼ÿÄÆÛ.,Ãpæv:=À •ËÛkwX6RåäöÈ¡U3 ïÉB(({8`µ 1F²zo<¥«^–Ò ß|ô‹Î:¿پe8^6ù þ¸dŸ BOޤ)?öëm9›¥Av`8oŽ!°YsbʄܫÉÏÛ^M/À_téhk÷©aåù ÛFTj2ÞÄToÕÞäYï>‘ºã|8§J´Ìnц*ÓîØq%•~Ííÿé*c©{¡‹ÍuºpÕ/ ]ªé›ã<šrí¿oÇJ¯ðÀã9%]p÷©WÆÖbNòõÙ‚‡|'µñÑœFõ„´ŠUôœÉF}Ô\[˜ÅJaË¥øHš¯Au!ñÓ:U³N4QëœÁr|ä%?¤¸5ë>:J…Ú1äU•uéNˮàЈ&½!ˆQ… üU(Mk–emÓí¥±â£ô_®% ác¾¸nÝU´xƒç:sØkH¥‘©u¸ï#[—O¾j@Ô6Âómž+àÆ¡2çíc]Ujr Îü$ÃdÂz &²éýgV_gyéª~õ<Øe/™°²©A6!s+á´êgÏÁ(*7ù/_\¸<çÆ™Üß«4r°_–‡–ú{£°Ðë€}³9²mdç_9,™3nžïö¡Ñ%™Æ{TÆÊ¹nFÙ8g)!úc1ÀNðúà¡—¹~H’À0™“%¤s)Yÿ‘@%*)Éú ¸§H [OÊè1)fDÊ€’³²q}J¾F©úÒÈ¥µ°»”—v——«µ0fPÎù¶¯LŒ1§F \c>½±Òv¸ñó¬©(Þ‡þ 2¢ÆAº0íF=œóÀY„(¬èz+¢èU¡Ec½’ÿ5·V+‘½q÷½<턯uã’ŸËŠªVQ÷½˜²Œ“R¸yײРls1r*s®žüóº6èEÙ„Ã+-7tí!G äNhk‡ná 5ÇŽ4g\£läH§UC…smd¬’ÌCÖ¡ùÈ-ñ}²)1S›¯Nô>˜·j°”H`Q¸úÀˆ‘÷j@k7Šc tuÝ“1’}Ö-Üš'†#÷'Ú¥p䞎.›™&3«?ef%€+ofõ<:³òÐNÈT¡Ú ~‘>0ÒˆR‚C0R¨š>pxû¾,î  ©0pˆGºá*bY¬‹7W¯r_AåÀaƒ£5JÔRó–&­\ž+Rk-\BhÛlú…N€ƒê¬¢žñ*.³™õK‚ÂkëFÈfhÍóôÚ£¿ÅK…P€Ï1aD(üÔå!C"&—Q¨äñ>|9à7¤w;ØAϘ=¬}Fôƒ]'™üÁÚiìYl@2êÄÍȳ摈…®G˜0£³XN«/„}%ŸVÏV§o #R¾&©.ºÄ»ÞºX[ ¾e«üM%\R£¬Ù¢mEü4G3õ‰rç«HÞ^$œ9èT?*«øîA« ùyRºAßî t)$­”@ÄÒ8Ý~!wt0ö”¦ü–÷i2½]‹ ZŸùЇ?µp.}äPùüsr•ðŽÇ—ixÌ'ª)9í¤B±üCÚ9ÎÕ ð6‡‹Wæ©Èô–›£¸¦P ªBø¸ žbƒŠyyòÊåÜGwÿŠ(R¬ endstream endobj 413 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./truepdf5rm_block1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 454 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 455 0 R/F3 456 0 R>> /ExtGState << >>/ColorSpace << /sRGB 457 0 R >>>> /Length 4198 /Filter /FlateDecode >> stream xœíZMÏ&·q¼¿¿bŽÒÁãáÇðã*Ç1 À-ƒ¡“âQ$Ž þ÷®®ê&çY,d¿‡Üö ÕÖrÈáÕMV=ޝt|üùíß?-3½œµ5ÍóªGéé¼óñ<þóøéí×?ÿÇï¾:~óÍ[:¯ë:®ÇŸßüæßÞò™ïã¯oøö¸ŽÿzKÇ×øïû·d¿ëÝÆÝÞñã[Ÿö¯†ÚñÃ۸λcØ¿å3%¢ÛP9['š†î3C©jgŸ†2û³ÜDì7ÏÉQJšé¬|C†ÊyeCÕžœõ¼‡!|)P³±š9ûÙ/"ö›gæ(½¥ë:_1a> g:Ë91U|¨¾Ï: ¦IØíó9½tñ}€œQ¢¥fðæÃ)=ìj-gg&¬ç¨ÇD—‹°õ2X±Æ·Á[cÌdPCådÓÃê\œFÎg+ó ¬6[@M#ßÖk&oîöŠ™ãa®`ãÃå:k>°Ò©¢×0Øø¢RÎsÆøœF¹m{5«ÒΆaÅô0¶snñð´õœ|oMgÁœñ™üޚϡ° •°íl«ǪÍH–.ðóªÝ¨g{7…±A¸ÚBß—m}ºÚyso|®7Œy†‹ýÅv¨pr÷m±=ÉjoFCÛ…ÎéÝ ]?lÝŸoÜÄÚ„ m¹ôþVŒŽ©tŸ_«6Pª·}´áf”Lwµp5ÜÏùã1«M£|ê$p¿l h#z6ZfÐ1³¯ÆËŒùÜœO¿íÁ\‡o+Â8õ##Khþ QŽ‚õd´&„2èP°û£`$#g¹§m¡áb)ˆÜJjáR¯©ˆNhQk*Xà÷£b=ã ¬ÇÂTpOœAÑŠõÖ~‚èX@´ªv.DÁ²h?@ªÑ1?ýÞ`"ïÏê?ŒVÓÎ6ÿ 
ÛÊõÈ Â,—lÛd ÑŽœ²m«a$(¬?^ÃhÌ ÈÊe)ÄÃ6ζéÖøÓèj4¶>DÂÄŒ–Ì8±ŽÐ4Î3è2>ÔøŠøáþgD»ñëÑÕŸ-§ð$_Óðñ3rø“nñ#ãÁ‚ñ0ò7çB¾Ú´ø~ļñõòðÊx‘ñŸÅõΈzl„e·Ûö/c㥆 ç‹ë‰XóÁįOëU*ùj O¸‘¯øÌÄ÷ñmþÓ× q_Œ—N\I߇mà.Â<¬ ò‹æs3©—Ä0Fü_ ÃÆp&_kñýi$zÁk“0v‚ßIñ“X•|gúψÑÎq擌ø_KõEüƒ¯a®ïE`ca­]߇†b÷€íÍøZšÇOîüKi<¥AtðµÜHC|„)X¶‹ï<ì{´_ˆÿfùâv>a#Àׂýœ?®øK±ü9‰§ñµ\~Zg$2lLÆÉÌûAFüW‹ßéñ‰øÇÄ9-áÛøêË`¸ÛBrÙ9Ä?øš-Í[{Aüc!²­ÿ NöaFÛ®v6X¾d>³_sñ|3¾fð›ëcGb4~eµƒØ–/šm0âßø:HsÙ|µeKÄÃx8f¸~%ó"`ÇÔä|ÿX˜tûyXÿà«åŸ¤öÛøšðýŽ›}¸å#}/â/¶ø#ßKžÆ×T²Î#rµóm*?4€¯¿\ÿ‚…DbM–v8>âjçcU{·-þõýx±åW¤=ž‡¥^ÆWÞø}ˆÿR™Ï¦p±…°ó™ñVÿµ1¿1ÿ|¨åWÛ7Œ˜–ßxÿ+ˆÿT˜¿Ä,T›¼\ü~b¾yœ?ÁH¼_ õo̯טà9ãñitS7_ cãà /‰ÁYØuòºªtÁÛ¨j×"õeJš·>‹Pô×:ð…7,^©,Ø­°(«D=èf‡&geÙ ä¢ æÁQ»Ùñ½y䎸÷\å{å­#àíVèù¦à2?xg,‚œÀôÛB¤á r"Øï»ªZÔv“e_»³èžË9ÛxeÖb¶WæÎiL@Fü"¬Òà•Y¬Å ›™Jrë?u7·¡*6ïæÝœ›R¯âz„'bµ«a_" ‚)R$äs½ºK’[pÇÐÂV¤y-RíÖ U¥겄© "´¥K˜é+";•%„jâÌ F\ƒ‡&¨ø"ÄI“®¨¬/“&]JÅnW&MºîÕ’×0¨/BH_Tj]#OJ¿ØM̤I*âÙ¤IW¸W„sæP·¾„õp7äȸ„MΙŒ­å›sfäWDòÅ9×JXŒ„£‹Àqœø¢¢¾ÍöÝ ?¡rI ò½¸ÔΙDª–ì8SfE®Ÿ|‘v|sμ0VðÅ9“*õæ‡ä$u¯5ÈYšåP¼ìUÄoá‹´¡8$çÌTT¿RļÙ~c|Kìë“›²íHl ø_ð‡ã›š…[kµ”œÍí¢éjÜívD⤊v‡vˆ¼Úw»eN&Úîv‹dêõu‚öç箯ßí_}ðÅýîçO,îÏßýôöëÅÁr|øoœ¦§7èáFÓ ’¼~<¾øUº¾<>|ÿöÛû—;Û¾>zßïèIè2uCªÔ kP¶ {ð¡P-­ROH Æñåút,ùIy:ü'OW§qÝvq kÓ1u‰piŠ[I•ô¤25U¡V Ó;J°B˜N=¬ -eÀG…ÖåÒÅ+´’“Q¡•ý'â¨ÐBÜ÷‡:](Q¡ÕîxÞ+´BUJ Úî·‡Bµ…¡^¡•ÝVˆ ­ËÕ°WhµîZ2*´ªWE…Öã{…Ö­ËyThaE›*°¼Bëú¨B+ÞçZ–$8ÿ¨Ðª®)½B ÿ˹Êk®*®¼B+{ÅZThåxÞ+´¼.bUhµ¨øò ­/*´šo¯WhÕéjQ¡•vQ¡UeI¯ ­[fÿªÐj®¾£BË%ǪЊ ¨Њ 2¯Ðê^nZmºªŽ ­ë£ ­äú'*´²k¸¨Ð*ª×XZ^!¸*´z`UhEÅãªÐÊ. £B뎊,¯Ð^ÑZYë±*´š—ÚD…ÖBxUh•*´$†v…–úG…Öå=*´šKç¨ÐÊ®¬£Bk¸ÂßZ^áµ*´$sv…Ö%áº*´¤äv…–äö®ÐR OThy> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 414 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./truepdf5rm_block2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 460 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 461 0 R/F3 462 0 R>> /ExtGState << >>/ColorSpace << /sRGB 463 0 R >>>> /Length 4469 /Filter /FlateDecode >> stream xœå›MÏ'µÄïϧ˜#2ŒßÆöò"!%Ù•r@œ‘B"²‘¢|ûTWµÇ6Z-»\sö·þόǮ¶]=M8¾<ÂñýñÓËWÇOÇΚΜúyå#Õp–xüë»ã/Ç/Ÿ½ýó>?¾xõÎ뺎kù÷«/þôÏXŽÿ¼|ýÍq} Ç—øçû—`?8þøR+ï›Â¯ã‡—Úí¯s¼ÏTŽ7/í:Ë ö`ƒ `·êõ¬0ž7[ûq«Û®ëlxÒÏÈñL|©“ÓÙÓ‘Ê}æH.gîàx–‹\Ï Ïí¼Àãr¶Û‚1’xý”ƒýÌ8œ}OõLü}HgDçë&ãBô>]zó€Ñ̸†<«½žϋѺeÜÏ‚þã?jÇd\è?.»Ø_üK˜]ˆù èÿÕ5v!–³â~×m3k\­!a*ûÛÙî#bØ Ã@D ²ÆÒÀFLI¬ädóûeŠ1.çÕØêÔ~Ÿw£ÿÔÎÀÁÔaÜÏZX›ˆµøûåx6ܯŽ÷Á@C¡ñîÖMc¾H¼ñ<¾®&Îhó+îÖ6•¿/×y£ÿ¥›hŒ¸æ[ï[’é4–,q…RL¨±ŸüJ¸­æ«@Xè?ºQ8>7'2¢›<bx­ÆçÝɧÑ8›\#ô¡ñ¸oÓkLùì?¼XCÿÓ˜¼xÂý0-…íõ2aDL›Þ½F YÞ¿fb„ ¢Ú‹ÅE„L4•㥨 ˜ˆŠû…æíˆyè5B_º¾ñE"d+=!ê¡×½éù˜èŽþ‡KkD@ÜcmŠokÜL¯úë‹q<a&½ ô¡×ˆ0Ìü}ç‹Ç+øõ~¼XD+¾z9[=‚-$ì ÝWk€^íg|»z ÐïɈë°Ç\jg`†îãkË[7½ý6½è›ño/½Úkr¾# zµa¨¦‡ˆøÏåà0r2a¬ì¿ $ʆ¹²?hè5`åÍâjzµi¡^#z Xíûƒ‰kè¿M+Û1± ÷ôsübL¦×€ #òyˆèÕd¢÷AüC¯”‘®o&d“Yãó!´€þcýTÿÿ÷ƒ,õ<Ä?ôj²¥þM¸¸0ÜEñÿЫɼè÷ÕdaàíÝ+ÜÑÇ[ §…æ's·°ºy„ — ãb°0Ôx þc's}‹X¨îWª½ñ¡X3>,°¡W óÌû#þ¡×€ø¿y?4` lYè¼.Ä‹Ž/í~Ñ^Ó¸›^n«ñÁ‹àA¶ìt¾^Ôô ŽbN”-S \Gÿ­Û|¿›û§qd11¦W[æØŽ‰3½býé|?L¬éœx?L<!Ø0‰‹53Þ£ Éž—m3nÔ+øâï!LÓkNZÿláÆƒmYæ>Â8³?gËxßÔ+8ë÷•z;yG–é5_þþe|q>˜¸Ð¶ î—QGc®—mzŶ"½vN´±â ñozsLˆl\!¹~––ÈÜÏâßôš¸ÌgêÌõÌ6NÓkòõ0!þ/ôÛ^ëänÂ5æü$Ä¿éy=JÓ«­ï…œ©Wð­öB½‚©§„øÏ.r³µm—ûIBü›^mæï#Û˜ûiBü›^ÁÏ„ø7½b?i|>6Šz“o ñŸ"™ã—b§^Á×#þM¯v GêÕ–q¶À6¦ž*2×3;™^í„ÉþÛDFòÅñÂÄ›^±ì0Þ„ezsÿK™hÌõ&exLQ{¥^ÁI×7êÕ–1ÞgzµóŸoŠþÇîó]¸Pë} vÆ\ì`hzk~±°˜^£ŸÇâßô)k0â2Öü#þ10Æêâ?èy\â¿êy\¿ÒMaÚ±LýÃBlzµcû_yp5æùƼ@/d®—©2pÉÔâßôj˼~S¯Æ|^åÆo¬ñÄFT3™ç?;u'ÝëKj’qT;Öd^C{Wÿ¹?&ÄQÿ¹þØÿRÿ¹ž&Äÿ­çI¯ˆÿ¨ç]ü=6îªþ+žÿ¦WlcÒcçÆHæøÚÁ ‹Ù_lM¯±j=ΈÓ+˜ñ›ÿ¦WãJÎæjÈ…|ÛÂCÎäjB!ë~z\æÀB6¦žÌ™^9Û‹or±@&óyˆÿ çqýΡI¯U硌øeå ½Ví×ñŸÔÿÈÙ΋ ßÒ+]“q“^îÒk•žÌ†{åhZ8Ûy‘Ì÷³…1­\¥×‡›ô:Ø6‚°r´…ÌùÈIz}¸H¯ßÒëÃMz}˜Æará´p”^ÎÒë÷ôúp5³p·z2.u½â?­ÏÃA¨­ýGüç¥ÿ¯ÌôOO½ÓÓsmüO¯ŒÁ‡?@øæxõ³fÑÍMÛZí`tÍfÇÙnÆäží޳=¡q¶;.íô´ gûÖݧ÷³ýó×>8ß¾}Çà¼ýöÇ—Ï~á>^ÿ gÜÓô/1n=Ùq*¯8>AÓ§Çëï_~÷š÷~ÿÅv,ŠûÕñïæÙ}¿:ÄÕ¶²¥íêûï¶uÿÚŸÝ>üê\Ò>jaŽšT˜GË yº*›«œ°½ÑUÍV;aµÍŽK»eÚlÎöh‹Êý´;.íÙ§]8ÛíòÓc“Âjû´ g»¿îh_Þ~Úe<³ ³Ä!øb¯ôA¾÷jËò`Óååã/¯<íþlb?øró”8Óèòz¬Üëìòø+žÎlòË?þévÂIË.O¿âé¶_â ¥Ë˾ˆ½dx*èÑ—à93sòæÑІãÇÚ>dÕKÀígL6Û [o£ÐÛ¯?ùüÍ?¿ýô@~ò#~úÍñúËw¿xÓ‹ÏÛšc±IïæìÅûÝoÿþïÿŽ—ÿ¸¬õ»w¸dÂwtâu½o³óís$°ŸÝT ì‰qœõ„iõ„eœô„÷8è ™ÀžHÿð ØÓ8ä ó8ã ™ÀžÈ£×D:‡=½p<ç4xÎÌl,ÌöÂí9à‘•À^8< ì‡ë¦×'=x$°ŽÛyñI`?\v½ŽöÃm×ëH`?¶óâ“À~¸ìz ì‡Û–|؃Gûá¸ëu$°.»^GûᾟöÃq×ëH`?\v½Î¶sÛ΋K›¼$°Ó¦×%í|o¶fI`;÷M¯KÛ9nz]ØÎe;/. lç¶éuI`;‡M¯KÛ9oçÅ%íÜ6½® lò’ÀÇÍ߬ lqÙôº&°ÅmÓëšÀÿ¿'°eÉGÎÌ-¹…?ØË’³˜Ë¾È’[Póó™,¹­ üº KnK ?Ê’ÛŠÄZ¯)³OÿDÕ”ÙyÈnå5eÙ?¼yM™Õm±âL5eã3´×”%¯ðš2ûÊVÕ”EШ)³“*kZ¼¦ 'Ý®2Õ”!2øÍwÔ”!’TCä5e—5eˆ\~c5eרù‘%·š,Õ@É’[M¿Ñº%gZSí´ä±}#sK[5f´ävrR»,¹´T%Kn'3ÕèÈ’G­ä%·“_Ó’ÛI1²ÇkÊŠã5e8™j|¼¦ Êmª!SM¦J5?^S†È¸Uƒ¦š2D¿aš2Ûyù>^S†Hõ1Õ”Ù7w^ï5ei¼×”Ù7[µ«¦,ò1³¦ÌæW¬š2 ¿yŽš2[ÙTc¦š2«ÉãûzM¦Iãã5e˜F¯!SMÙåßdGMÙu{M›×”AF¯)ÃÊŸØ·ä½ë›ö°äýöñpKnWMš,yóã–ʃaÉ[õ÷uKފװ¹%Gpª&Í-y >nÉéš/·äÕ¿9K^‹_ï–;½ôä–\'iɫׄ KýE՘ɒã5Yƒ2,¹†aZrè‘ÕaÉ1ŒºÞ-9ôYT3&Kn'#՜ɒš¡aÉ-»Ï·äVÄ·äv2S»,yññ–ÜjHÕ.K™©&Ç-¹9CÕ¨õQ£“T&Kn58ª “%ÏAý–<_^óå–\;Õ´äiX ·ä+Õ̸%O^“7,9Â’ã7,¹íœª!“%Oã}£,¹…¹®wKÞUFüXr¯X,¹ž7,¹ëÿ±äÅkÖ†%ÏÚKžF»[òèã=,yðù–|Ô`¹%^#;,y5DnÉCUüKŽaõ1Yòàñ1,¹¥©y·äæ”Ts&K¼ÆqXr«Ùåøº%Ç4wý^–\NlZòà5/Ã’_]ñ4,9Xãã–üòÉaÉ/¯)–¬ñrK~Ý^³å–ü*^“æ–Üd,–%·“&k¶Ü’ƒU#ç–a š5·ä`®Ã’_¾KV Ÿ[ò+Œ4Yòë©!“%¿F ™[r«•…¦%ïÝK åÈ{×n醼{ûñÞ\«²ãÝËGܹ3ºï.\÷â¶/³ÖEV˜UjF'Þo¯l‘ᄎªNJ6ÜÊVUöŹGW«ªÂhÂYHÞ³×hÉ‚÷ä%CràVñÊ p  ”ä¿;]Ãc¿1DM­tßÝ‹éÝ|w/vtï ª%£õÆj«R9ï´Š¹ñîüêóøî®O£ÃvÛJÍNÊuÛÄñÎ2ÝýRѧ{nsZªñ¢å2œÜq÷K»›nÛÜø ùm;ª•vØt-Ý6;‡›íö{ñ Ô„Êj›Úxg9íÖån´[÷”Ïn~Ær› TÙ \6PUg2Ù†*£Çn¾_¸Åj$å°[ó^éXf‡áÅ_·QŸ¥MÕ×Ê]·Q%sÝFñ•¼µ¡jÇh­íXÀ¡“³n^IåÆºyá”ûêæuQn«›—=¹«n^µä¦ÚŠªUDFOݪ×DÊRªä‹ŽÚ.QÅ u!)?ݪŽì´!GRn˜3m¨â.zéVƒn¥ Y %' ¤øÝH²pK>ÚP·¢nþ¿}¸‹6äe¢ Y„%ݪæÈ-´¡JÄè ›W¨º6äsåŸ'Ò>²rφüÔ,ó<‘+|óÿ÷À­óD:gCöYÆyb¥BÚfC¾‘\óDšæ‰<‰<(Ë<‘ŽÙ‹B†ažX\„Ž·‹Ð±¹i–”Wž]„ŽÙEèx»é“'2Ì”Kž]„ŽÉEèX\„ÄW/_½üûlƒ‘ endstream endobj 465 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 481 0 obj << /Length 2936 /Filter /FlateDecode >> stream xÚÍÛ’#µõ}¾ÂÅ“]¬…n-©¡–ªÀªXÈ2¤ =¶çÆcÇödwóõ9çè¨[jËžY jk¶ÛÒiéÜo’œÜLääÕÅ—Ÿ|¥š‰’¢•­š\^O‚šøÆ‹Ö4“Ëåä§© ³\~óÉWÞåPÊ!=¬A0ë»™š¾ƒ¿ümfsí§›{xÝÏæÆ˜é5Žîâû·ðžC?îà¿Õ0¿^â`\6¿Œnz~yy¡àENÔ¤ÕBj7±^ Üd±¾ø×…ðÚKÙ+M¥Ïxà“¯×JMþ²¹øüKss^sž-Zg”µ^8o#¾bÊnz’šfê?ÍmðÓ7«={OTÃŒn®#Ćpxs8ð¸Hdz°ÓÁêÄu„ï¿„¿o#|‰¡vÂÛ½ydŽoÍ @çníK¨[oï1Ê?àÐ"¡»y`Á?ÑLv7“ôúæÕÅä'úÒ [ð³y#Ûé‰âÅ*’ MA‚òB:;\!³m0 â% ¨š©‘ò¼9É"àÓÉÜ´R8ÝNæÊˆÆ¶ñ#œ¿Û'ý½ÙukTH¤‘bkÐÏÈ5½>D0"aÁr|$ÝÝÇ™VÊøÉæ —_¡fü{Ö¸iGÜÛ< FÒáû2~Ö‹‚pXEf—Ôîv†“c„L=ÂÈI)JQH` H˶åÂ+"QÁˆ¶1%ß3¤€ëð’a,2Z8ã#Ô]M|NX°Á êe„r¥ÃQ¢ïXÊïx;Ÿm焃u¬h$ä眀X/4¾gøŸï š‰®e|~–ÊV–ò¢q¡ ïŸuò‚t9yW™J¯‰<ØÑWv+Ò¡ÆÐr-#LÐùŽŸÕðR|W¾e#AäJÁ‹Š¦b5¬~Prƒ÷ö6éqÕ^ xLܳépæH1" µçµÎ(Æë*© ÞMÈ)•5Ü[¹L<›‡Ø†U°©׊†À +tÎ¥0­F :£"P“MÓ£¨À\¥J^¡¢¦:ãuÆé'tÔA4Á¹œÓù¶#‡,!e®²LQ7ÏâŽzš;AXÈ42ît)¾JUz÷#etB÷¨n뜷¡7ù’]ézE~™ƒá7“à¹uàÀGA†($Âs‡ñà†Ûï‡ÀH8.ú´fbr ž†M`¹Ã>.0p|2×€a^väöÉwYbÃJŠÅ£Õ8ÿÒÓÅf½\Å ˆCÕ#9”R%æœR\Õ[Ì‹¸AäAÜcµà˜zY‡!òý,Ø©ˆ„*ׯPAÊJð§1ì‘Qãœè昔a’ðeØTݵzÈ…ŸÈ?~æ>Á[õ Þm]½ö!¥=ŪZ‹VC 4C0_3X[ eÎÜ(w"ܵìG42͵¶Q±…û6"„>å~©ªÞÁ€¼|È0´©2Æ8[ Aci¦¤¥gŒqõ|ª)r–?¤füAòÒbø³2žŒŒóOOË™Œ§ ¥QOвžÇB•k­籺’ÇÐû6D˜u:…ÓsXÒGܱÐìzÉï†Ѝ½~>î£bŽ—³òYÙëßëµ±ÕìÕœÍ^?«Å¶ÂÓüX‰l­€yK½¦óÙ«tíù¢rœ½ö&ï‹Þ RH͸£§T™ëìku7±Éè_AŸ 0?*eë$± tc~s©d°¥µ{²R2Õ´ÌMË^WÖ À˜²ÝV°f»Þ?~\uÕÀ£ÚQÅú?ª]Õz­Ÿ—yšŠêž ’²¾aðíÓ ÐJõIe¹k§WC'«{ÜG«×îÈÙáÐopv¢Äºû…ºdû¸Ú· ‡nߟe§nÕ]ÅãV>ÔáÌ¢”JÝÜq'36Þš*?:ÃYæ§`äå®Ð;æ;‚ãé›]¥ñJ7ö#vìGž< œ–ϺŠM^®uûˆÇзkNúsœ£-Á<ß#à±?ÇѼ¥É!É®†é,ï³F‡W¨¿ž9àCa¾€ŠÄ쩳zùr›Ôq­pA•²^×Ïà5sË ·,P1n‹ ó£ÑòY„ô gŒøúèCî­ïãö,¼ñ6] ³%õ§³¬ãRlPÓvËh°ÍÐÃÖ>2«[Ój¤ŽW|¤1lsGùÞ;&zÙ_¨%ajúçï*ÑQ±ØPÉ™êø(xï#îÄ€áPh§úS,x߯ Ì’Þð›<×¾°À#k‘/<~Mj¸Ùóº‰ÇwÃÙn‘Ž‹¢^òiíÃܲ~ßóUÅG¨’ð÷üiVߎµ£ãù!—ºp ‡ÁòñvÔÖP¦'üÍ ʶ_)u^½ëMÆë%™rwÇdìÅy¿au3ý+ö›«¦ß°›Ý'çtÿ‚B[H_ªB߃¤é͆ÝhLŽJDÏÈÊ´”æDê Cx ˜†‚ýÏjØ™}.E_ÈÒBâõ˜aÍûmÖ'¶1Öó‰í‹h´Q§7wáqv2 9êæ‘âëà:LG­þ¬Œí=VrzðÁrŸ Vëø£Î1ñö ˜ì>¢´K^ öºÙQâ»ÝÇŸ×t4ì°Àgˆí-Åv/ûû@É$°\c´ÇãÐK}…MJ‰P íëc8þèâ#e©tv|Åð dË–¾+âӺ˲lȉ>šÍØÉeR1ìYCFwM±9c&òy>K†î€áp* lÊ•;þÑÄ(Ç”Ì"·r4â"×oŠÆÌÌŠ"Åô¸R¿èãï‡;mt­Ï¯ùäœq?¬ä9¹ÌÝ£à)Hnól .AžñvØ:¦°:Þª¤®™ßx£é2$Ë@D&'N];ý/[ŽêÙ endstream endobj 426 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./npEM5rm.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 486 0 R /BBox [0 0 576 360] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 487 0 R/F3 488 0 R>> /ExtGState << >>/ColorSpace << /sRGB 489 0 R >>>> /Length 6764 /Filter /FlateDecode >> stream xœµ\K&Çq¼Ï¯øŽ"@~ª÷ãJù°› ø è`H2 bIA¢ËÿÞÙÝÙ£]jgE8³1Õ쬬̌¬,æÇ/ùñíã/ÿñøã#=SÒ²~ÕAô§ß=þëñýË×ï^~þÃþë×ßüð‚¿ëÚãç¿ùþåçÿRìqïþç‘Ëù(þν<›ýZÏYï¾{üì/ùâñîÛ—~Çg7‡;¾ ²îñÈc>KâÝÿô»ïøýŸÿïx„}Ë÷‹o> ß7¿øwûëìÿ}ùÕ¯éñÛ—üø¥ý÷íKæãÿíe•çhYŸ­=¾{”Öž{;|ÿøæÕ°ÐϢќösìsØa¯/?ÇÃø¨Ï•¯qÁ0¾ÓsÍk\ð/y>w½¤ ãñsί»ÆÿîÉý¹Ò£Íg×Ü~Õ?4·1Œ4žu„›Óî­öI%Üû–÷öùÌ-Ü›ßòâÕ`‰áæ7¼¹äü,ñ‹ËÞ\êzÖøÉå|sßÏÔ+Ã8¾{•5Ÿus–_ Ûï]£¢ÕsØaoéÙ÷5.ÆÇ~î~ †ñ½Ÿ5_ã‚×x)ë9.ñ†ñn¾é’Ïa×çžã×ׂ“iù9Çc¦gÞ2Dûã|”nÏ&òÎÇýíí÷›È£÷¯7ß_š-§î÷ç¤[„¼@ÞtĥЎÜÉÿ]Ô܉ùw”ým™°ø{ô7/Óüv¹ñÇmúý>[˜~£Ii¾ ÖöìS£îhïÃó¹üæ\>î6<`o­ùYÛm´-øM¶òÌã~oÛÏÒ}Ø¢Ù~õæRð< ˃Çᑟ{ùèlˆq´Ú\£«?ÛýÍý9¡·9íõ‘Á’Lqù•šÂÏñá9À:›ýcwÖýìë#wæZJ~ötYÊè—e|;ÉÇ«Þ-éqMWŒIjÈ<ÝB°M¼rÃ* UG0Œ¢+mÍ›è “6”PÌC T¨”¯I´:ÐH@¿1Ö€ ‚“c¨?Óæ3§ÐâÛ7䜃±Œ†cφd|悼ëB0„¢ï›¦Ég"­xY wâ˜}5ÖAÕ M¾}•go@_k¿ ß×ûbò&JVŠÐœ§ÎìË:%3S64vÎûæ3e<³W¡I½d>ea×”ÎÖF¢`?W2Ëß…ÉË¥"³>vƒ® åg[Ý%ç¦L†êÚ(á™»Âlí¾Î±“·Ÿœ»Æb«ýÜSÈBˆŠÎ÷ ¬øœ:Ä58éÌrÃÊ|waË(—†)'4ó€Ç¨”n#˜dË~¨€œ’‡Ü›TS†ž°v9ÀæÉ3L&[Ú×ÍAg0pUF»¡à†„¢Øcù‰ÀfÛÅ„óë;b©>ýL|–ŰŽÜxBûerš„ÍÆ‘Ž/É»`ÑÅéònh¶ØtÊgk3'Ƽ²›­›ÔÄï±`n^`Ä”/Óa3Q*/çŠ ‹-­T›ÍC¾¢ûéy‘€l½kª”|šä€ÍÈÌâô9&G3ïþõ9mØdhr ÚWì춇Z§^µá*ìb.“lî+£À‹šØ“¹ø˜°6ªß[éJlqè«Í|´:ddw,ÒlÝÖ‡]<5jßZñ¨"8°>Lª|@›¹EµN¬›®Æé±y0=­q¼w3 v&d„›®S÷Z"hkü=F¶\¤Ò}u¬ xÁ.:°*Xa ðY4{[ŸužA 7ú¤#B®q†lÙÎÈN$?\X^9ï âyßìæŽk€«!ÂU,X ¬°Q@ί¹”D!wsh¹ŽÙ·eëŸ/8°^¡=j2M¯Š€s1Hèâ…5ŸO#´”ÎæAŠºƒõ€“áFÓm)H§Ç/Tì(X÷143s{‰Ñho‡“Á0óFƒñã½zrÇCpqv¸)¤¾×‚º™.æ”YT7ãÇ£$†ùб†Ã=‚̫Ѵ1)†EöF]iÉZhÏÔ•ÌlRÃŠŽ€árUW2] Ƀ¬+ÏKHƒ›ºÚ|¯øA1:gÁœpËáQ“IK7…”r̃zÚ¢{7?»£°0Ÿƒ]\Á®ì#Ø•ò› Ö+£ŒÆ¿0/ØoÆo+7íŒÆo˼G1ÖÍøáæ FãGÄ b˜?©AHx¹~ƒ+¹é.Øhü'ìLfœAHsÅ=Š1iü'\LhœQÈÍ”Æ!‚té7¸w€™Æ‚´æ‚\Aî }ïC68hüî(ƤñŸp!S¸à¦ñ¸ƒíGÒ¢b bX¬ÏówÃ"ýBZ oA ‹ó!c\A ‹ò#©è|ÁpE1v4þb¾1,¾ã\A ‹îÁø‹÷Ä(-?à bXdÆ_aD1f4~ÀÅXÑø‹EöİPŒp1,²ã/ÙKÃBy0~ÀÄï BZd/A åÁø‹*Œœ7ã·È^Ú Fã¯ÌgOh‘=¿EöRn0¿EöİÈ¿±ha4~‹ì#ˆa‘=¿Eö¼n0cè‚ûfüÙó¸Á`üWµcYܽ8lÙ±ÖÍÚ"iXM ö×ã-¬¿ca´¶Û¢‘Ž×bè%3Bè%£EÐЊ&‡t}G¢ xñ%§EËP‰d±2Ø­¡+P®¸ä´@t ²ÐŒV8gôü$C¶…yɉ9# 6µrÔ'bý%çº-zd5¢ O‹Á+[, úϽäD=jGô¹vÔ§…Á Ï£>ïAp—¨Ï]£>Á}/ÉÈt[Õ†‚>-ú}îõiÁ.èÓPÐ'øM Œë‚FArƒJAŽbò‚X"ð=ÖYµ:ñºà¼å# i!¶§Û · º• Êå‹)†Á˜ÚXp ú f­ Â~Ër¿e+Ü"E¸7ØCL›Ëf?ý Úƒ¬4ÇÜòšqÝÐ?Ì ‰Œ&èf¦*Çd¦3UiÆ>öoöº ûGŠ(nË% ûöñ&ûï`fb¨´ÿê´z²@ G"}[(†ý›Û‘>¦Êm™;¯Qÿ)ù÷`Ÿc>T²?5õïáõ4”§UõJ«mC£‹®'»è—Áô·×.6Ëkky]us®c\,nK¬Íz¸Á¬‹+]üôB‡ Wem%2ÁNX\AÇ‹T¿µ ¿Ü?àK ¥§ñ!ºxÓÅ/mo€ÂÅO9qÒJ™YÙ!…‹*Ý‚‘u-R0A/ bAªü2E¼°ªm:Á¢ÙÔƒéhç6 iõö1ÐRÎâ hbX¢ý†ªWQõyUTà6¼HÒb Jïwv¨PªÏ7U(õÑî¡”•0P…Ò­M/62¤û^EfVÔ€rTÀ@JéóÈ@)3'¾N¡”š T‘•ï-·ry›çQQuùàœ‰¤9. 94:\ÏM/š®ç¢‹—뙌!=§*e¡µÃ_+e‘1Ôìz¦SåtµFúÊIe;R]ÜcÊŽ™Û5G(&+ƒ¡Tæö”jRêr=§ƒcJÏšó™é*ëJÏš Ìc]“ÒŠëY“bñËõÌIiÍíY“bPzÖ¤€c¶kRÀ1ë5)mºž»Þ»\Ïš”¶Üž5)^=>&Õã}MŠE ·çáÐí™ê'Gä‹z½é¹ßX"ö_òFæÛGLÁ?që»éQ÷+Ÿ_5î+pS÷lúëÝ]4Áߘþ°ñZ ~5ýæ¯?À¦ã=SóÕ=_¿û¼¾£¢=wli•£ç¡Õú†n€Åþu< »&~‚Ƹê"´W"´c¿Éòøj¡Q„_ýìøÃŸ¾°Lêñ³ßþþûÿþóï~xä/Ë—õ‹_?Þýò«¶ù7º9p•‹üìëk¨}v_Ÿ›à?°±¯v3Þ·Ž]­:û^;¼zã*’Œ0.x·B­ãÃø Í9ǯñn¡}ùÃxø”ÿ'ìݫ۶¡ÿîù†v´ ?|¿»|úÝ àûÝì˜úÈÝHÝïw7Ü½ë½ Ï\Ö§ßÝAãÝùÒš/M/+®¯ºM½º î{/ž#5ÏùºÀq¼¢±wòºB8^½©®Wµ œW8ŽW4fö×Âñ }ÛuÅõ­Ÿâ +%“­(?b?~;{BæáÃ?ã~[Y靿ò ÷OÖ¨tÿg¼²«q°|Îû‘­Íî÷ÎûÍ'ùàz½ÿÓBÍOá¡eþÞ•{YÞãWG½öy8Š`qŽÎ°»¨ÑJî¢Q±8Šj˜·ø¹+£`P[ƒ-¥WB-ÖÄ}p¿’ }¨Ç`^¯DRE@ƒ ¬ó•@©ŸÛx­%–*5Øû+Ў⽊r ¢48Û+ ›÷4¸ê+lŒãÎ]^ ”ç™Az‹w²aLƒÎ ?(P/éµ@×§ô²_ 4PíùäVD6G 绤DqCî¾Ï]v¾m"îÛÞ|A?l_ís¿I<5S€ó¨g žý– È‚|çO0{áœ,¥¦â»•d¿5M$Z5»Hä?5©qÁ‰Gß' «IÍEÍCeuQåN˜vA¾7³ cy‡SEº:ÏFÚÅ‹JÛÀålj©ùèh‚Ú(* ×rtuwU”ëYe¨åèDÉ‚»¤Þ ‚)6°{Ä‹Uz”ÕkcAÞˆŸ€‚nbc™îeoÍ®"–ðÅFuv=žÌ~ Ý\fÔˆ3ºÁXb¯êa2SdŶí´ì`OW»ÑN£a0E>ÊܰØÞ*/W”{·Êùºšœµ°yË{œSõ±)’ªü”Y†ªƒSˆÒ².´Hwb‰>Øç…r¢lDýäØ&ªº~ª|8ýËÑ7ÔYŽd¯"üVž½‘1O/Wîc¼ —X÷OÖ©QÞÔ󕲓ý×Éê›(uý„‰që‰òMöó4XWR+jvX*_óû;ƳÎ~S1ÄÔ×ê*×zs^E¿ŽÊ¯Zº‹½l—<‹¦ Ì’hÝü0»KÝXÎM¾^7}9¿Ÿúƾ£ô15Þ•EmÕ6«™I’>¹ËT±Ã¨òïÖõ¬pßïGÀ\ƒ˜ý‚-Ñ€ù=-Umy±´¥¦NÞ©"fK*gc¾'1 M±xÁÐ`ôˆÁKågÊß01êöä|7ûqº˜»®ÀÜÎhæÎ¶î§½´Ìí ØãÖóXä¥}R¾ÌŽNf™/IÛY]ÅÐVÜÞ»üïǦŽî×|㬾‡Áéè”ÿÑüâLBô?›ÝêÀZÿ{þKúÞÜw£ÿÞÒÀüþî§à†„3 •þOØí}É^{jò_¾]Ö±pëå?{ò_Kþ¸CpùcÊßÕÝÆ3$Í£F¬Ó çõØAÑ÷0Aé¹É-Å×nùÚ”>¦îw{÷í©ž—ü×’¿ìØ‘>¸þ‘—/Ù×äóбP.{êE§!ŽõÖK“ÿÊzéŠ×î_z™Š×]ö×Ë’ÿjÚžEªÏxímýrŸÓ]ù/ߌê•ÌÈO–°Û{ö÷a»b¨ÚªqÙ[Ëu54Ý/õ¤÷ªS.SµÿÞÅa2|VcÇñvWÜ·ðq|…škLq¶7e÷F¸‹â^·Îæö}°®3gÛ³ˆÞ¹Ûn¶ÎEÝ;Ô¬í6‡}n0ʤºŽþ¬ãÞÎ>\_ ½ëÒ‹èw ÿ@sg™¹/WW7oÖòyª[ò6ØîÍØÐ‡¶‰šO¥¹²¢Þp¾wè”Qu©†Ú”¼“º‡ªÚÛ騾çþ ³Àî'·Š¿hf§ LIûÔ® ï’usaÞ Nm`/á:Ö'-k©îcm} ûêë«b—1«:½y21ì­‹‰ÕäüP)j\›<µRì“\Á ÷Ŧp2ƒÂ;Cè<¸P<[«ì"Á‡3Y­ÓU*P鄎óm`­ÓvQ÷y¦­âìEç¶C¡U,ÑT Xò‘u6îþïæ\«±Ç`“4åp¾K ò‘ÓcÁ>SärîL¢Á¹ËV‹‚Ÿhªè¼,,ÑèyjG§ [@Pàcz’ Wµ¨ s$é~–¸PRNßyø1kSIœ>çhùgÏÜé @tÞܘ×óyª æâ ƒG©°ë-&jËÀ|(¶®%ïàV7¢Åq*l[ÌMœ¥Á'aÙ¯çÑ)l2Oa–íé ª¶=€«8—2î¯zÿÆ‹°Á-ùmµ¤ÉeâwÈ*[pzr¼Ñ‚t<rW”]æÔïäᥢ.>q 5xbMú›Lv¡Ÿ.Åä ]âÞ–# >­g²”N„œluå<àDÈ)O+G *¥[1œ9ýÑòS·ÐÑùâãìÕB§Œô ÿ´Yi•¹Ê›Á´\ÕɉNŸ)NÅV ¶ñûx†úÚì;…}5q"µ„uÏiªl¡нàPl ò#›àPI'Øò‘Óõäö·I&ØÉ¥÷ æÍ[¬À±#µ¡1p,äxÍO$‚cÁÞQobï:Õ”ƒŒ«åÍ9 ,¨d+'Oüð\½E œ«ë@$c,8r(u³ }ÊÜÙ¨ç39@‹’rNä(…-Jüž²©%qýïТ¤œ<³e­’9 üÇòPhYRŽŒæÌÁ–¥-Î6˜³äæœ3Ó°ÑBØÎŽ”=B°+Îíã›9ûÁ™Áá–r(qŠ’,NXÔ˜–jMÆ—9gi'98]ßS–¡œØ[qÀé˜Ó7ϱÕ}‰œF9rÙÊ1ËÁÙ’rä¬ÐÚtd9Œæ»ålÞ¢ØPÁâYY§l,ƒV`|fíÛ * |–YmoßK<»+ÕTV´wól»Ò„'¸Y…r.ÇŽúíªSKå ­ÌTÎGíæi_:(«Ò>Ò~žQÎeO?cë£Ëk¹ýŸU–{v°Wï’bž²w:‰+¥ây¶‹7ý{جº³ºàÑÉÖ‡wI) G®Á±ÚÉ]‘"{îb£ÇÁIp\ug%QÔäÎh³o’ˆPæãlÑ?=άm]Üü(™>0'¼D~ò8öyô(à#éõm=Àí[(̘A|öOGã~ ðv† ,8­ GöÀÃIºná!ÇÝΧrƒ;¾ˆuìây 0dzràÊá[¿Ÿ,S-d½öx¼yÄÍxì´¹Çíx¤·Û °èV,ñ4Xth{ëj¯¿àí¼Hu‰/šñ$Fo·S‡ùWxQOW÷…8vJ7Nsr‡Ãb½³{û‚·s…`àá¸øŒ/ºîì}ÅC— äá$;y8`BÞËF9 X°Æ³ràçáü&øy8Vùi›ôôµŸß"/øÖÁ㞟¶ENåïj<ð#-‚?I—Ý6 ’iÔ¿Ñ$ؾìW‹àËÿÚf®f endstream endobj 491 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 497 0 obj << /Length 2230 /Filter /FlateDecode >> stream xÚÍYo7úÝ¿bG؈á9$tÍ6éîbóÐÖÝI&’,+µ,W²RØßï ç)ˆ±) i8äG~÷EYVËJVß¼:=yþÆ7•’"ʨªÓ³J™(¼´•w^DãªÓyõ®>S·×U¯àÓ^â×djŒ©_-èeykí3œÔõ· pŽÏ|myþ¯çíÞ>Mt¨4lh'ÚןxMþ øù·ý%n@ì‹íx½/~á‰ÿ"‘<õr9ùùôÏß(7äÌ-tl€qâIE:‘IùùúôDÁ@Vª N8©*ã:V³õɯ'Â;ZæÍæiâùß×JWßnN¾‡¿¼6MÇMç‘üÇT@h£pÊ3™o’,—{âX•¾/˜Á`‡[­:èÌnÚÑU  |®àó>oKò¬2¨¼‰2¿âàmê³Í–¸pžˆqSÔð‚ŽŸê4Kªš3äzÑ"‰z$‰6-nPåk$Mgñ¦•ãs{>¯Év`wzGƒ"ƒÛ­uø\ìU D_ÚŒô®‚ÊfÆÎŒªÀÀ½$'ŒÍ(ј&Y‡J`cçP"F_ àÞK­JH§ÖhP¢ƒCp62ôuõÜÜ,â·K@²¤-|„Ã`肋º„:ŠhLܾ,jZ (AH8H=+¤aœzœÜôÊ Qjò)äÕÜ’—’EœN¨žÏû%žTbJ?BbSíCýSá\°qcu5…§{~3»vé…Ó‡æ1:J¦‹’ÈkI"b˜«ztEy4¢qî‘t\MY¯Jä)fª‹…¤û'ð‡Ò£¼ñü pˆä9§Éñµ–@ÑWƒPÉöÆ`Mx Z©_¿…ˆåmÝbì[nR”[Qô[ïxíl“§wõWoRÈÛos…:ã!EØeŽÅ»]ŠŽ›Ë]‰/ ”‚8uç_@–v]çü>o·œŠqšs É=½ðY?õXC¤'˜9eU϶‰ˆ¨*ŠÿéÄe$þˆÓ³ëŽÜ$^ø®Ú.«<üồêíÐ# ñþu.#>óÉ8ñË~—²¾ ¶ ßKe/{ÂZ~\$_Ï€cš¢ÓoÆ5Ö#û5OoÈ®QžãHß'2çè8ÜùË$‰&Î;$ü)ÓÙz‡w{†èfœ½ï”ˆ“±ž/xë¿°âÒêæ@H´ŽŽpçi ê¢åKA€¹Kµ;IÆ‚èÚ‹d)ÉtÉXòGåÀ­WD0í“/PN‡•ÍC³qo3ö]2D:¾ëK0.¨£êõ&—MN2ñd᫤‚gŒe•ê£Î! ó<³äWxÊ†ë› !¿\2‚–Ö‹Ì_¯JXå‚ 34™ó¤lrÍÁééŒ]’R»ÍÎ0¤€·ò,•Ãtnf F&'©Ö#n™6®Ã³°0¬±°vWC›6ÖÔ§ùp©×XÜQTX\ñÌ*i†ŒV2ý€Œ×ÚÈ£ {&¾d§#ÃH;ÆAŽãX·¤Ê®Ã”%3C\)&Ì *J¨Á–¿ Á궪Ð]H VCRjºUÌZ6øö®O/…Lk Ý°‡¥ŒH9J™bI‰ò™L-Áêc) ·RçI¹Ú†ý4q ËgŸ\T;®”i°OU;—Ö]á®ÁãÚÙl³ÍM\2DÜ’C§§ÿ5iªDoz@œÑÅ £êÿm¶Î}Ÿ#à–.¶†8tsÈšóJƒàð]k cª„–ƒzh“€f›þNá&õ·0ý «TÙ‡(|£nëwÌ*XÞÒ®9*ÇÏ9bMG5ñªT£Õ°"þXÒØŠ9Tš¿¥´A›ôçE0<”ÓvD û¬G–Ù·²åî£ #æ>–…”¤ÉµùT5ånJÝÖÛ!ºäR˜¨G¼}ÚAmǼ8õ¢Øå+ 7L×Aí×Ü2â×óýrÊ€’Iù‘ó“Ž‹…žÚ…¨Ã@¼THÄÞ‘m ‡§\„})¾SK ñTëúOETQXÀ3¦I*úOY“°<ÕFx¯Çf„y9zß°°T9€º_Œ<@‹&X"0C•"·Ì2ÿ¦ù\èî?–áC¥ñV¢k_]1A ßh&êÿi'&ëõQR<àPB%ŒŒO"Í}!2”RÍí9J5_"Ã…Èæa!2ó¥Z €»ØGÒpO Uȱɿ<†ÄÃz@‘’” ckÅ«øþj]hY0á¹òñx{þîgYÍañ÷®+LÕXw_T?ž|Ïwìc©èà…Š@Dm£Ì½i¾^­_Œ&¥¢íálêAΦâm>³öÞfÇ":êmqÄÝ=‰°™!wûÑýÉa®JéÓ>]-l.]L)Q»‚Ü9O«FDÕùaw¬Ž%»âÕ°RZà€RËÁí;ÔÙÊ ªýtÿ-9™¼0ß=Øà‹Í)¯¤4Ï‹|ôAYvïCbEãCßíã¥I»ÎEÔîSê1lèþÂé·0žæ«êN )uÚéŽqËúR{¤/Mg¯z²¨+Þ ¥ÑËiÇœˆÉ4JWÿ“Xêî––%ÿœ*ÓïVP²æ*äß%%7´nb•׳Së#ßa´Ëc!ÐxúMI~¥ò½Ä^I ©½³Ìt8òŸ¢Ô |4üðùñ’'KìjÈ ¦¿šr/ßUèÃ8ˆwzÁŒ,ß™ºç[ÜÞùð"ß:<6߉^ñ†=_îö‘fÇó9Ô¤a5ãd£%Dr=HµªØ )üI¸“ÿÌRR#ô NÆÁ]ƒ9¹œW÷F.Æ6_v–þÝáwÙL¯’ endstream endobj 442 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./ISEnpEM5rm.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 502 0 R /BBox [0 0 576 576] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 503 0 R>> /ExtGState << >>/ColorSpace << /sRGB 504 0 R >>>> /Length 40168 /Filter /FlateDecode >> stream xœÜ½OÏÇqݽç§x–ÔBÌôÿ®E6œ à}E à Ö‚¦Sòõs«Î95Ó#Fm#‹,$òÇ;wî<3=çtWwW•¯¿ú*_ÿðõOßü_ÿôÕí»ëúj}gó«–ö]_eíï®þõ㯿þÛ×o¿ùw¿ûÿÿÓ_|ý‡_}s}޼¾žÿÿ«ÿð_?ÿu¯ÿõÍ_ÿÍ×õõ÷ß”¯¿úüï¾)~À×ùfÌï¬}µ1¾ãë‡oÆúîªÂt,'ÖÛ‰ýÄqâ°œXOl'öljóÄuâ>ÑžX¿»ÖåÄzb;±Ÿ8Nœ'®÷‰öÄöÝ5,'ÖÛ‰ýÄqâÑž8¾»N,ýÀzb;±Ÿ8Nœ'®÷‰öÄéjýÄÒ¬'¶û‰ãÄyâ:qŸhOüHý‰åħÔÏSêç)õó”úyJý<¥~žR?O©Ÿû0 –ŸR?O©Ÿ§ÔÏSêç)õó”úyJý<¥~Úa@,'>¥~žR?O©Ÿ§ÔÏSêç)õó”úyJý:¥þƒå…v`=±ØO'Î׉ûħԯrÐˉO©_§Ô¯Sê×)õë”úuJý:¥~R¿êa@,'>¥~R¿N©_§Ô¯Sê×)õë”úuJýj‡}°œø”úuJý:¥~R¿N©_§Ô¯Sê×)õë”ú–ŸR¿N©_§Ô¯Sê×)õë”úuJý:¥~RÿÁrb=ñ)õë”úuJý:¥~R¿N©_§Ô¯Sê?XN¬'>¥~R¿N©_§Ô¯Sê×)õë–úéxK=±œXO”Ôû‰ãÄyâ:QR¿€öÄ[ê‰åÄz¢®j%õÄqâØ‰µ'f¯^XNd¯Wµ4ÖÀ5/5ð-5ð÷.5p7²W{•½zÜÉìÕ[<²ìÕã)d¯ψR?áVF©ŸþÀNìÀAœÀYM…R?ù:SêÕÌ(õj„”z5QJý¤PPê#؈؉üî(7Å`@z(õÓ_ãÀ ìü!#ú•‹Z?ý}—ë~¡+8:$Î<ȼÉãºÕÃy’;™Wã†`»µÈy“u}FÆõQö©lμ ¹’;¹‘õýN6ò›¾?ɼÐ7}“õûFÆùÒ®B¦\L ¸:ùéÎ2E¦7]›Lsºô{áì·:ïÛº-§\´‚—×·÷ãüôƒÏõ¼>:B^?-!ÿ>zBþý4…¼?t…¼´…¼¿ôöêi |>é ¦óÓ°Lç£c™ÎGs`ûHw`ûI{`ûJ`ûKƒ`û¤CLtbœ9Faû¤°ýYß!ïšú½°‰|¿èùþÑ(òý¤Sphæ\Á]Ç·~;¶s'Wò7#Oò$/r#‡aLtœ­Ý6^.Z}ܹ´ÛÈ+¸¹‘'¹·[dG»5Øy¶[¢W»Ü™×wéûVoC/×mF–{Lr}X3£BVÉ VÙEf´jë| WíE¦³íA¦µmŸ±¡ógpˆí-£CËÈ ±ýe|h-2ÃVÔSSÜŠíÓ¸ZÌÈÛ«)tµt=ŒK†‰¢—î\^Ì@Ú{ÉHQrñxñ|ñzñ~³lö¼žŒ%{þ=3JV(«‘Ëêd³YѬIV8k“u}FfèÏ·ä4žÉy´R5}}*5ƒZ›Üq+çñ\9+®¥ï+°¥ïïGìÊ™#‹ _-ð¾•[”J®€•3Gx¿K/j#GÊy>¢TÎ÷DïÆ™Ÿ®Ï9Æ€¾•dŒFæ(c™ÃŒ9Èg°=¤Ÿ,~²u¼ü¤’å':ÿáwå ,•rG–™¡¥VÈŒ-õ‹Ìàúg%£KÐÿB?Y§93ê…÷¿ …½¶˜q/Çõm=OúÉÖó¢Ÿlê{¡Ÿl ñœýÅB?Ùô¯B?Ùz?è'[×C?1úy™ð;S{šð;£ú‰©=ÐO"ð ®àÙÈ Ì÷‘~bÔç?ñE+•<ÁEÇ/pÕñÜu~?™—ô~â‹S¹‚yÿá'¾¥;˜/ü+RÀWü^ ¿s6±ãùTøÉì_Uø‰¯8éäæõÂOœõýÆûRá'¾¥’YÇo°éüîw¾,× ?Á2p}^ÉÜÈ›ÜÁµ’y’'ÙÈ Ütü&ë÷ŒçÝt}|¾ð_SÈ•\ÉÜÈÜÉãÅ“<ÈëÅûu¼ÜÃïî߃ŸÜ×?¹¯~â|‘û|þ}ð“ûÜ÷~â¬ßÛdßæó~ð»ûyÀO°ð\É…ÜÀEßïd}Œg{€Ÿ8ëû ¿¨ð“»}ÁOœqýÑqx´Gø‰·×M®äAnd}¿“õýÑŸí~2;ûC~âÜÉ›¬óO <ƒ/2¯ý³ ?yr#orñx?_¼Úùû»=ßoúI^L«/riÏûA?ÉûE?éô—J?Ò7úÉ`ÿ¤ÒOÇW•~2¤wô“Áñ\¥Ÿd{¥Ÿäûað»ÁþW¥Ÿp ڹѮôõg+ýDã±J?Qÿ²ÒO4¾¬ôõ+ýDý½F?Q<éà ½üp\ßb{oôNæ9w0Æ×~¢þU£ŸpvÄy«Žßà¡Ï ÌïÓOŒñ0ÞÿWðL¶`»ŸøZ«Aî`ôüÄ—H²û‰¯‚šäŽyç Æýoð_„ãkø/2d÷;_8$v?ñÅ@â6}ßýÄíy€Ñþü«iÀ ŒþTƒŸ,ÅüÄתàûð“¥øÓ‡ ý•?Y[÷~âË9Ùýdß—?ñ…b÷“}ÝŸ/p~ßýÄ&èüæïÃO°D\Àè|دÏgçÙýSì`÷“­þHƒŸøì¶Žw?Ùz_üdk|Ùà'>;<Ȇž4øÉæÜ˜s³=„Ñ´÷ ~â››ÜÁSŸ»Ÿøœâ"O0úg ~âówú|ƒ·>w?±J¿lðŸðªd÷;kìoµXüÐ|®©ÝO0av?1ùYƒŸW½8»ŸØÔý…Ÿ§ÒœÝOŒsÿΆ¿4ø‰O3lrózc Aóÿ$^ôް<¸ƒÑ_lá'ý*º¿á'ÎSç[ÎUï_\ˆ3úã-ü¤{˜LJŸt„iÁÅYýÙWðÖñq}Òû~â ÿmá'ý┟óSŸÂOº‡ñôý 6}ßœ7ûó-^¼~åû~âÌöfþ‡t; róù†Ÿtó,òSÃOzÉ÷/üÄ™~~Ò=Ì!60>ïá'Ýà âÆù{øI/ò×70®¯‡Ÿô¢xJ?qÆß×ÃOzQ¼»‡Ÿ8wýÞ›ÎoΛïk?q†Þ÷ð“îøM®à­ã?~×ëÅþå‡;þÔÃOºcy€§Î7+ý³‡Ÿ8ó~…Ÿtïæësóï ?q†÷ð“^5žúpãýúps–¾õðgÄozøI¯ò‡~â‹‘œ—³æzø‰s×ïïk?éÞ­šäF±Ç@µ{7gï_?éÞíèäú|:Ë/zøI‡ƒ7Øt~s®|ßzø‰3ú‡=ü¤»­uroßœõ¾÷ðgô_{eoyÃOœ¡=ü¤·y¾Áù}sV<«‡Ÿ8³½…Ÿô&}ìá'ÎЋ7gÅs>ì×ç¯Ý"üÄ~ØC¸{—ôðç­óoçÊþW?齩}Ä‹è ½ëá'ÝoÃE®Îê÷0NgÓñÝYñÄ~Ò»âw=ü¤w®Ëq^`ogÓý ?éãb GCí£Ð/zøIUÏ7ü¤¦÷3:®}túA#ïcH¯à'šðvv?Á.<°ûÉØ7»Ÿ »w?ñx®~âñ«Nv?ñ­K•ì~âñ›Bv?ñøˆ>w¿›\Fìì~âÛLŒì~â[8ô¹ûÉ”?tøÉºô|à'«°Ùá'«JŸá'¾]Ÿ»Ÿ,O;üdi~êÃîw‹Ë÷œýú|½ï »ŸøZÚIv?ÙòŸ?Á¢O°û‰/¨ ð_¬¸Èî'[ñþ?Ùòƒ?ñõl“ì~·ñÙ»ßÙE}ðS¼pÀOLú<à'¾®G¿ç~bï×€ŸØ¸ÙýÄ&ûw~bŠGø‰¯«0²û‰)^ûáÏ‹5|™AÛ‡ ã#üÄz5ÂO†O‹òvn¿ŒðgèÇ?—ú{#üd\ŠoŒðgô?GøÉ¸4?ùá^:_\ßbá'#Ç[#üÄ™í+üÄõŒ÷'üd`Yx‚‡Î¿À]¿ÿFç*60ük†ŸŒKó?3üÄú9ÃO–M[yèï ãp}Æxw†Ÿ8wñC¯|¢«„¾/oCïóxÃ'ýd³½Oú H;ÓOð~Lú ç:wøôh†Ÿt¬yOøî¯O„qÿ&Æ'¦xñÄøÄ—›^dŸ˜žÿÄøÄ—ÐŠ}|âþy‘}|âñŠInàªÏ}üdŠÍx°î×üûb î\ô¹O¶æW'Æ'[ó»ã“?Æ'[ã‰ñÉÖû‹‰4ï_ =MŒO¶ú?3ü¤c¯x€ñ~ûÄÚŽþLÓïÅõ]Ø âìã“eŒGLŒO|®ã“%=Ÿ,õ7'Æ'Kë&Æ'Kz3ÃOúêô‡~âý7ôŸftœ¢gd?­Âþ#&:6‚}|25ÿ;1>ñÝ·âÆûЉï±O2þ<1>Áûø)çÿftœ¼ÿË÷/RÞ?žbŸx³ìdŸøkÆøÄ_sqó}Åø2 öñI®/˜Ÿäz­~âã.öñÓÞÎX¸æã >OŒO¼›#6ŒG0^šŸ\jŸ(>:1>éêß °îãè×Äø¤k¼8ÆO\¾êã§A½ ã'Å[æÂø©±ÿ<1>éŠOOŒO|<ØÉ>>éy½ŸtÅß&Æ'Mñ̉ñIÛjŸá'>ž­ú¾Ÿ|iò d|üÎöñ‰‡é ÙÇ'>ͰÈ>>ñiFöñ‰OÛè|>>©©Ÿñbzüƒï_øI¯\;í¼Á—~ÏÇ'µsýÜÂø¤JÿÆ'UëÆ'UëÆ'˜–Gw?¹4¿¶à'Þ)d÷“ìO,øIÆoüä*|~ ~âË +ÙýÄ—iw²Ïïø’ñMöùÛìßøvpð¥óûü‰û+žæOLñŒ…ùS{Yá'Í4?³ÂO"¾®ïûüŽ5]oø‰sïó;¾»EŸûüŽo«Ñ÷7¸éxŸ?ñù\?æOLñ´Åùãû³8¢ø Œ£¥Ÿ®ðŸÏ€_¯¸pgøÛê˜ß™|ŸVÇüŽô~uÌï(¶:æwäW‹ó'Ч-ΟäóæüI¶×¡ù¶·ùªû=0¿SÕþæw*×o¬ùÂù±50¿Sôþ Ìïhþoaþdk~ÆëŒøÔÂüÉ2êû ?q†ß®ðg¾?á'>–ÇOðÐï-pûüÎR|Õ÷ƒ1Y˜?ñ-á›\Àlï˜?YÜåÜÀ?¬ðgøÇ ?‰ùB#ûüÎÒzÇ~ó‹â :ÞÀˆW-ÌÇçüäÂ|üR|m…Ÿø|&üz…Ÿ8/}ÞÁÔðgøï ?qf{ ?‰ùÒ‹¼ÁUl`¶Ãõiþka>~)>²ÂOœXá' ¯!¸“õýž:~‚yÂO‚;yƒ»Îgäø§ÎhïóñKñêùxç‹ÜÀx¿vøIp!0Úï? n䆟ïð“`ýž¯pÄõ”X/àÜÉ>¿*ã5óñÎÜÀ¿íð“àBà©óMðÐñ Üõû›¬ïý·=ç*æõA7çã+û‡;ü$æóÅ ¿ÚëÔ_Þ늮¯j½@×ù¹^€Ï§j½Æ»b½@aûÛ ë.êíæ|¼ÖGnøÉ’mø‰w#¹ƒ«Ž`þ}ð“©x׆Ÿx·Gßß`´Gß~FÍ÷Ÿƒñþlø‰wÓÄÌç ?Éõ~‚¼@à†^!°Û¦ônÃO¦âI~2¹ÜÙÀð£=°þl©=ÃO¦æWa<±¾¥“~¸á'Sñ£ ?™Ü–æ<ÁèÿÂØb=Ž~ŸëϦÎÇõg¼ŸSëÏø÷O­ƒ?ì©õgNñž ?ña­¸§¸ƒ‡¾?À]çŸ`¶WøÉLý‚ŸLŃ6üdjþio¬?kjëÏRŸà'3õ ~2SŸà'Îúþo’y‘uüS¿à'Sã§ ?qnäB.äŠõÄ|~ð“\¼á'³2~±á'HOž/^/Þ/¶'Û¥õÌ8¿]Xöàú¼»´ž׋‰’ûï±Kë™ñ~Ú¥õÌx¿ìÒzf܃Ÿäý3ø Â8Îð“¼ßV´Þï—ŠÈëÏôü ~2å??Éçmð“©õ0?ÉöaðgÏ®G{2ø‰··Bæzkè«oa'O±7¹‹¾ßÉúþ°G{7ø ÂTà®úþ&w²‘ñ}ø‰³‘ ziMׇþ„ÁOòý4ø‰¿¿yyîÇûmôõgŒ~Ò¨ÿF?‘>ý¤Ñ?}—;ÙÈŒøŠÑOÔ¿2úISû¥Ÿ¨?fô“¦öH?ijô“¦öF?‘Þý¤©} ø]c<ÌüNëã~Ò81úIcÿÙè'êoýDñv£ŸtÆ~¢õõF?Q¼Þè'Òs£Ÿ¨¿k~§x¿¥ŸTO?YúIÓñôŒ/,ý¤ëxú Ÿú Ÿ?ý¤Ó¯~Òé·¶àwŠ·ÚÒõÁOli=3úÿ¶´ž™z´´ž™Ïwi=óÒïk=s!k=3~çzæMÖzëJÖzëIÖzk#‡Ÿhý¶ÑO†Þú‰Æ;F?ìïýDþoôí'0ú‰Ö£ýDëÕ}cçþ˜ðŸzí ÿªWÕþ˜µÈåºÛ·s½î÷Á¹]÷ûãÜÁ]ßçþ˜fdîi:÷ÇÔBæþ˜hÎÜsé÷è'N?ÙbúÉÓOf%ÓïF!ËOÄô^_úIÙdúɵÈá'U÷—~Ru?é'U×C?ázaç îFn`¶ÇŽë«j/ôŽ'øÒùÃO¸_Ìyƒ÷E6ðÄùé'/:pŸä f{ð;Æ‹;¸4røIÑõÐO¯w^à-Þà%60Ÿý„óoÎÜÅÜ:¹ë wp™äð®ržä‹û-M× ?¦ç ?Ñ~ÄzÁO× :r%W0ßøÉàx¶bamô2x`¿dÓù'ù"¯Ç~Jgí·Ôù¸ß’Ï~2L/üDóOÎÜjúœûAMŸs?èÖçÜÊû?[í ~¢ý¢Î›\ÈL>6ÑÞLÙÇf'3ýؼÈÌ?6&™ ÈØLÈøþò lø¿3sñþš’5Ï,dMÇ3 YøQ-Wæ!3²‘ ²2‘éøöÈyæÌ\dh¾Ð™¬ã™ìÒñLGvéxæ#»t|äàzþZà'΃\È•\Áx~~2¸Ϲ“ y€—ŽŸHýçE¾ÈŒçYà'cÑ üdp½•s!r%2Ó“Á?JU~²®ó1AYÓùx}Mçcв¦ó1GYÕù˜¤¬ê|ÌR†÷ ÇÛà~"gæ)+™‰Êø|š2•ñù4嫱EV¾šFžØŸ¿Ì|5|Mû÷ù<šòÕÀKWnJøIéJN ý)]Ù)ç 3=%ü¦ÀOÓƒU,|ÏýöÎÜ¿ßu>î߇”~ìßwf~øη1õjé'·ôŒ§ZúÉÒõhü„ë1ùÆk-ýñ³–~‚øhK?Áx°¥Ÿ`¼ØÒO¶Î?Y›×#O³3ýÄt>úƳý’ßa¼Û¯#³³Ò1W²ò1w²2ëûÊȬï3%sÑ÷Yßßd}Ÿù>cþ°úþxr#+/ó$+1³‘™™ñ‡^”šñ‰^27ó&393æzQÎèÞÉLøT/Ê=p}Ui£OñýðäIV~f#3?3Þ‡^•Ÿí»×ÌϼÉÌÏŒöÙ«ò3£ýõªôÑho½*4Ú—ï‡'72óG£=õ–ù™7™ù™MßoÏxV¿ã]úþxÆ¿zËüÌFf<óS½)wé|ŒÇ±=uÅãoë=ó3/²ò3o²ò3™ù™ê]ù™1Ö»ò3'³zÛgWù€d;x(try±ò3‹Ÿù™û‹Ÿù™Ÿù™™?šïPþhÞ¡üÑžÇTþhÞÏ©üÑ|瑟ٹÍç󚙟y‘•ŸYçægv~ægvf憟ô­üÑ🾕?šïëV~føaßÊÏ ¿í[ù™áß}+?3ú+}+?óÐù™Ÿyèüû‘ÚYù£ñ{¦üш×úF?óG;3?3õË”Ÿ9y¼x¾x½x¿Øž<.åÆïûþø34®w¤Ÿàïé'øûGú îÏH?ÞŽôÜß‘~ýé'x>#ýz< üNñrßOndú ôy¤Ÿ ¿1ÒO¦ÎG?Y:ýdé|ô´ß‘~‚ö=ÒO ß#ýýƒQåwxFú Þ¯‘~‚÷o¤Ÿàýé'±ÞÌ™~‚ùì‘~bºÎï`¾t4Íï@OFÓüôÆ÷Ã_ýMó;ЯqÏŸ™¥^ ‡£©MÑùçs~f¤Ÿ`}ÄH?)ú=Íïà~¤Ÿ`¾Ç÷Ç“Ìùô7FúI2ýëFúIò|1ýó#ý$Ùü+¯àýoRŸå¿øÒ/€ÿñëW‘È?WNy|îâ}„8к€¼ ñ}Äq]ëÌ#þâ{Þˆ¿ûÝO܈ßýÝo¿ùwÿ±~•¯ïó…¿ýþ?pIàVcÉÖ÷?|}ûËrýâëûøæ/¿“ÿéoì¡~~}üŒo$B½¿ý3~Z«bî/ÿŒ_®HyòøòýW÷gòX)~LÖnùûóö ~ÝŸû&–y¼?ï(¢¡Ï‰ÏkìÍÏÏ{¬&ÈÏÏ}·D½?>>·Ø›ŸïÏùëóÇßÿ¼»[úËÇf‚¾´x®ŸÿúSOçOß×Ù~ÿ§[åŸü~lp]ü~ý|Ç€ßoïöÁwò›ŠeÊÒñ¨TÞÎóèÐ2ühÝûÿñ㯿þÛ×oÖk^_ ¾ò5÷,þ¶Ç_ô×ßþçßþþ×ÿýÇ_|þú¯oÿö÷¿þû¯_ýÓþöÇÏ?ÿòÇÿç_¿ùÅ×ǃ¾ýüÛ/þæëû¿ú£×ê'…+õîŸùö7?u×÷ù]ü½W¬F=±ñF–Ÿ|Ÿú‡K¬…~üð׿ÿú_¯aͯû‡Å~¾”]±FÚÏð}ÙðñÔc½Âç+ÈÏÉ'ü¯²³£ù2·úõË“2Ÿ³¬è'O‹"ó”H–?Jä8ùákÅÜ<Ñßú?ç²x,7ÌsÿMÌj#qޝÇhÅ¿ÿ´à_~z5ßþá×?ÝNÿÄy Dλ@$Ñž˜À„ ë‰ ßÄðrEo„ãÄyâ:‘‘›™Î,ü̺_B†E„õÄgQ­9³¦qœ8O\'2^ãá™RÌj_Ârb­Rêc(=Sê…ãÄyâ:QQÚ· HXN¤Ô UŠñöljóDJ} ÞgJ½Ðž˜"…åDJ}ŒëgJ½°Ÿ8N¤ÔÇÇL©îí+¥^HŠåâ+¥^XOl'RêciæJ©Î׉”ú˜–Y)õÀ, ),'RêcÉîJ©ölj”úX^ºRê…ûD{b–}©£•eß…Z¸Jl'Rêc™þJ©Î׉”úX²¼RêwÙwb9‘RÓ[+¥^ØO¤ÔÇ^¥•R/\'îU 8ÚÆY xݵ€‰”z!¥>æÜVJ½pœH© +¥^¸O´'¦ÔÇæ­•µ…õDJ}Ìü­”zá8Qe ¸NÜ'ÚSêcËêÊ Âz¢âóØO'*8_ëÄ}¢"óñ@Sê…åÄz"¥>fAWJ½pœH©-+¥^¸O¤ÔÇúò•R/,'Ò€brae-`a/Rêc¦a¥Ô 5¯kÀ}¢=1¥>&%VJ½°žHŠ‹•R/'Rêc:c¥Ô ÷‰”ú˜ëØ)õBJ}Ì$í»0±½’Ó$;¥^8N¤ÔÇÊN©Rêc†k§ÔSê…”ú˜~ÙYýWH©É˜R/'Rêcæm§Ô ÷cßÃN©¦Ô µ‰¢ë‰ÚBÑ€”z!¥>&wJ½pH©Ù£RL©¹ÇR/TÙ÷l'Rê…”ú˜ÖÜ)õBJ}LRí”z!¥>¦HwJ½RZ;ë1 Uޱû8pœ¨¹Ù\'îÇLîN©¦ÔǾ†R/TUß l'êªR/¤ÔÇ ÜN©RêcÿÅN©¦ÔÇlÝN©Rêc.{g)_! (fövJ½Róâ;¥^H©]y;¥>&wJ½R[PvJ½ˆ;ë÷ )õ±2ª^—|€®KW‡ 25_/о*Ê\TýÍ 3e_ù.ê>w°—‹Â¿™Aè¢ò+C÷EéßÌ v±"ûf†¡‹Ù•‘ï¢ú+cöEùW†ç‹ú¯ + `3ƒÍEP…ì‹°™¡è¢pG¿s'7ò wò$ë÷”ÿ¢0ƒ€³‘ç¢0ã€s!7r%wr#Or'/ò y‚»~/œ7Y¿gdÜOšÂfÆø‹®°™Qé¢-¨ÜE_P†Å‹Æ Šƒa3ãÖÅŠìÌðàÌë:˜ÃfF¦««â92l_´‡Í MýAÌ/ÄfƦ‹¡ -b3ÃÜEPÆÈ‹Ù73è]¬È®ŠèmBó/úÄfƧ++²#£×•Ù‘AîÊŠìÈ weEvd„º²";2æ^Y‘¿®¬ÈN½`EvU亦2p˜ÎÇ Ôƒ¥ |ÿ³";ßÿ¬ÈÎ÷?+²ó}ÏŠì|ßéÊÀ~Ñ8”¡óBݬ¡‚îPFâ‹ÞaÌ vÑ +²_ô—?Q¡RX‘ýb{,¬È~±=Vd¿è…Ù/¶¿ÂŠìʰ_X‘ý¢ÞVd¿ØÞ +²_ÔóŠìÛWŸ8ã8orC +²_è^:7²Žïà©ã¹“'y‘xéøMÖñÌè„ ‡¥+£ô°tet‚þ•®ŒN[Ç3£ÛCWF'Óñƒ¼É“¨tü"ò&ëøÈ¨Œü~2Ua °"{ÑófEvUÔ,¬È®ŠÌ…Ù•a¹ÀOœ;y’7y»~;—3¯úPà'¾Æ¡‘K¿3x9W0Ÿ+²½ï¬È®Œó…ÙUÁ¤°"»*VdWÅŠ쪘SX‘½èùÀO¦*^øÉTEê²”þQ–2âòy,eÄåóXʈ ?(Kq«>gF\Þÿ¥Œ¸M×ÃŒ¸È X¶2ÎB¯ËVÆÙ®Ï™qvèsfÄ…þ–­Œ¸ÐÛ²3#®>WF\}ÎŒ¸KŸ3#îÒç̈Ëöoº>ê¡)ã,ï'+²7Ä‘œYŸw0úÏ…Ù•Áµ°"»2¶VdoÒ'VdWFÖŠìíµ²"»2Â×KgÑ>륌³Ð—ÊŠìªÀUY‘]_*+²+ƒseEve´¯¬È®Š •ÙÛ[eEöF?¨¬ÈÎŒÁÌ hä ƒƒ\™°’y“•ÁPÇ3ƒ!2ŽÖ¢ †]Ç3ƒ!ÚK-Ê`8u¼‘q<ýDQ*ýDœ+ý¤³=Tú‰2€Vú‰2~VúÉ ŸUúÉàûSé'ª€Pé'ÊÀYQQÄ—¾àû¨(2û+•~2ô|é'ÜÑëÜÀKßïäM`èG¥Ÿ êy¥Ÿp5žóÏȸ¨(’jW†u>¯® ël¯=3¬W23¬óùteXçõweX_ú½F†ÖJ?™j¨È>`-EæR{£Ÿ0ôç\ÁMÜÀUú ƒEÎÌûM?QFúJ?Yj?ôÅ*ýDãùŠŠ"™ñ¾ÒO4Þ­ôG+ýD«+ýDã¹J?Q…ÕJ?Ñø¨ÒO4ž©ôf t?QÅH”znXP.`¶Wú‰é~ÑOTQ¦ÒOTQ ÒOTñ®ÒOÔ߬ð“¬PPá'¾tFç30Û+Š\z_XQDã*üd©âq…Ÿø‚™Mî`>øÉR¥ÂOVaü¢ÂO–*ºUøÉ*ô¯ ?Y…þTá'¾¦‘ ˜÷~²ªÚüÄ—¿LrÃO+üdÉ/+üd©"P…Ÿ,eX¯ð_Ö¢ïGÅe$oð“•îïŠ"‹ÌŠ"¬ ?YþÚà'K±üÄW¨è|\tü7¿¯G—?YÊèÜà'(ŽŠCìYQ„|ƒ g ¹Ù£" JƒGÅo€¡ç ~’õüdq1óýžñþ·ŠŠª0ØXQDxüd©BEƒŸ,U°hð“Å€«óCŸüd)ÞÖà'Kñ¨?YŠß4øÉRü£ÁO–â ET1¶ÁO|ÝÄ$70Ÿ7üd©¢mƒŸlÏüdk¼Ôà'¾ˆ¡‘7˜Ï~²Õÿoð_‹0É h¬P¥÷§ÁOv½¿Ï Pè/µ® PèrÐÖûÐà'[õüd+ƒ}ƒŸlU´lY¡ ý¿–ªÐ_i¬P¥  ~²•a¼ÁOö`Æö?ÙƒzÞà'{èùÃO¶*Ž7øÉÎö?Ùª8ÖX¡jª=³BÕÒõ¡¢ÈVæ?Ùò§?ÙŠ¯6ø‰Ïñ.òóþÁO¶â= ~²í>¿Ù~á'v1þÓà'¦ñmCE+º¿ðËö?1éiƒŸ˜*z5ø æÁ ¼õ}÷S…„?1U,iðKý‚Ÿ˜*¨4T1Uäm¨(b©?ðSÅ—?±)½…ŸØÔõÁOlê~ÂOLý‘?1Κ”?1ÅÇüĘÑ×ÙýÎßk¨(’íZø‰W¼c{ ?é—â Ù/ç*²_7Td¿4¾l¨xèaú8_GÅìÐÛQñðR…ˆŽŠ‡YA¸£â᥊=ü¤#Q6x " ƃÙ/nâp^`¼ot/Nƒ;+âü¨xx©¢ZGÅì€ÝQñ0+ˆwT<Ì à=+b¼ÕÃO¼"â¥ï0ú=üÄ+(Vñoït‹*dtT<,/uT<,ªøÜQñ°(#GÅà1Î^ñ°¨¢[Á+Dâýïá'½ÈOzø‰W”Dÿ¡£‚®suü›~Ï+èV½¯t}ØÖÈ^A·ª‚VGݪñwGÝ*}íá'^1ã£~âŒñJ“ú&Õ©óy…ÚÊe¤Î^A·raƒ³yQA·j~¢£‚nU¼¸£‚nS¿Ž ºÞ ™d¯PëÝ€Aö µMñˆÎ ¡ª˜ÒÃO¼biÑñl:¿WÐmÌ [:*è6®vsö º“âÎ^A·i¾ª£‚nS¼¾£‚.^;ðÇOœù÷‡yWÞÿð¯ðš¿çtý¶ëü^A·³b@騠ÛUA¢£‚nW¬Ž º}©½¢‚nßÔïŽ º}Ó_úD…ZUpîá'^ñ–ï_øIG¢0+èNtU¦³‚®ÆûtUñ¶£‚®¼:{]­_pö º>_·É^¡Öçt¼W¨ûk=ü¤g|±‡ŸxEâªï{ݬ¸ÓQAÛoÀ^A7+vtTÐÜ1àìtçºÙ+èNé}?é(l ö µëºÙ+Ô®r³W¨]õf¯ ›ýýŽ º«ßìt½?-ö ºkÞìt׺Ù+è®}³_ßÒüP‡Ÿìëf÷“­ ß~‚Â{`÷“ì ø Ö=‚ÝO²ÿ4à'›ÛœœÝOöRÅxTÐÝ›ã… º[ók~âý?*ž+Þ=X‘½°ÿ6X‘]ª+²«ÂÐ`EöÎ÷k°"ûàxa°";—v;wVh×ñƒÝ/±=*Àø‰ýu„ŸDÅy}¾-*ÒO]YT¸çï…ŸøÖY´¿7~\Š×ðgÄ/FøÉ¸4~Q*c\êŽÄŽ+ïwø‰3Æ#nÔ¸4=ÂOÆ¥xÂ?q†^ð“Q4~Ñ|c.Ÿø‰3ïøÉ(êï0ÒQT‘}DE‘QÚ}¾é»‘UQi„Ÿ8óï ?ñíÉè?Œ¦ÝËè?øâ(êðç®Ï+þ5ÂOFá‚0çFÿ`DEO‚Àö~2ŠÖŒð“Q4Ÿ>¸QYz:ÂOFÑ|í?Cƒ xŠ+˜Ï'üÄ™í?üdÔ‹zŽTŠÎUßÿøI°>_`è%RãësÃoGøÉãóð“Ç÷ÃOç?yü~ùãúb•üãúc ôøûÂOøÉãþ„Ÿ<î_øÉãþ†Ÿ<îøÉãù„Ÿ<ž_øÉãùƲ²Çó]ö~òh?á'ö~òhI3²}†Ÿ<ÚoøÉ£}‡Ÿ<ÚøÉãýˆ…!÷':J÷+üäñþ…Ÿ<ÞϸQ÷7üäñ~‡Ÿ<Þÿð“‡>„Ÿ<ô#üä¡/á'ý‰Š"}ŠŠ"ý ?yè[øÉ­3üäÖÇ~rë'&’o}ð“Ôß ?I}ÆÄî­ß˜¸½õ³·þOú‰üaÒOä“~"™ôùϤŸÈŸÐ¹ýkÂOÒß&ü$ýo¢"{ú#&"oÿœŸ¤¿NŒOÒ1‘xûóÄø$ý{b|’þ>1>IÿŸŸdÿ¥—îþ&öîþ&òîþJCÞý”v¼û/ã“ìß ÔâÝÿA)©»41>Éþ&ÚîþJÞý¯~r÷ÏPjðî¿aâìîßMŒO²ÿ‡‰²»ˆÒ~wÿ¥ûîþ%JóÝýωñIöOQêëî¿Îð“»;£¢ÈÝÿEi±»<1>Éþ3&¶îþ5J›Ýýï‰ñIöÏQJíî¿£TÛÝ¿ŸŸHOgøÉ=>˜‘:ö?ÌHÝz/&Ç'Ì×ødr|¢ñËäøDã›Éñ‰Æ?“ã&Ç'?¡ôï=¾šá'÷økÆ—{|61>ÉñÛÄø$Çwã“ÿMŒOr|ˆ‰¨{üˆ‰¨{|91>Éñç ?¹Ç§3üä¿ÎXš{og¬‘½Ç¿ã“OŒOrü<1>Éñ5&¢îñ7&¢îñùÄø$Çï3üäßÏøá{ü?c!ߘQQäŽLŒO2¾01>ÉøÃÄø$ãxQïø&¦îøÆÄø$ã㓌Ìð“;~2ÃOîøÊŒŠ"wüUw|fa|’ñ›…ñIÆwü$ã? ~’ñ¡?ÉøÑ‚Ÿd|iÁO2þ´à'ŸZâqŠ_­ ñ8Å·ã]Š-Æ»[Œw)~¶ïR|mÁO2þ¶à'Ÿ[ð“Œß-øIÆ÷VA^ëK6ü$ןløI®OÙð“\¿²á'¹¾eÃOrýˆŸäú˜ ?Éõ3ªr}ÍFE‘\³á'¹>gÃOrýÎfEv­ï٬Ȯõ?›tµ>h³‚®ÖmVÐÕú¢Í ºŠ'lVÐÕú¤Í ºZ¿´á'¹¾iÃOrýÓfEv­Ú¬È®õS~’ë«6+èjýÕf]­ÏÚ¬ «õ[›tµ¾kO­?3q™õa{jýÙ·çú²=Ïõg{jýYÏçúµ=µþ¬Š¹þŒÏÙµ>n³"»ÖÏmVd×úº ?Éõw~’ëó6+²kýÞfEv­ï۬Ȯõ›Ùµ>p³"»ÖnVd×úÂÍŠìZ¸Y‘]ë÷VÅsèóÞªxN=ÉŠì|²"ûÒùX‘}ê|¬ÈÎö™Ù±þrgEv¾/Y‘íõ®È>ȬxŽñÑ6U+²ó}bEv­/ݬȮñÖfEvÅ¿6+²kýêfEv­o5Vd×úWcEv÷Ùµ~Öà'¹¾ÖX‘]ëoÙÕ_1VdWüÅX‘]ã[cEv—ŒÙ¯³¢õÌhÆŠìZ_lEë­O°¢õÌxžV´žyé|ã¹¾ÙŠÖ3Oo=×G[ÑzfŒ·¬h=3Ú«±"»Ö_[Õzkôù ëóI¾È ÿ²¬ÈÞõ9+²³ýdEvø©eEvŒ-+²³=ÑO´ÿÀè'ê¯ZVdG<ÓîŠì¬ŠìFfEvÓõ°";Û[Vd‡~XVdÇûfY‘í~¢ø’ÑO´¿Ã†*²Oûc¦~ûc0¾±¡ý1Ð{£Ÿhÿ‰ÑO46ú‰ö¯+²k‹Mí?Ø<÷ÇØÔþ˜ªóÍçþ›ÚSôûû¹?Çæ¹Ç–öïðy,íßaû^Ú¿ƒx›¡¢Hî2ú‰öýDñn£Ÿh|aôí_2ú‰ö7ýDñI£Ÿh”ÑO´ÊPQ$÷W*Šäþ+£Ÿh–ÑO´Ëè'ÚßeôÅ'Œ~¢ýaF?Ñþ1£Ÿh™ÑO4^2T¨Êýi†Š"¹Íè'ÚßfôõçŒ~¢ýqF?Q|Þè'Ú_gôŽÏêE?¹Táž~Âý{ÎŒŠ8*ŠhÿŸsø ÷Vnrÿ 3÷[š¾Ïý–¨q]Úo‰ ×¥ý ¨°qíE…ç«h?(*Ú\EûAQÑæ*ÚŠŠWÑ~Ð¥ïk¿¥¾¯ý–úþzìßtÞýÎÚŠï×ÜZÈÜŠ (WÕ~PTL¹ªöƒ¢BÍUµX.ø‰ö¯:»÷·ª–ö¿:/»÷Ç:s?h¿ÈÜŠŠ\WÓ~Ð6ÉÜÚ:™ûAQñýjÚŠ `üDûǾ÷;Ï}ïv^ûÞ_ì¼÷½ÿØÙö½?Ù“»_ûÞ¿ì\ö½¿Ù¹î{ÿ³sÛ÷þèH¿ïýÓαŸû«çº÷_;¯uïÏvf~¶ß®ül¿CùP±éÊ/€ŠM×P~¶ç¡ülÏCù¶ÎÇýû[çãþýÝÉÜ¿ 5×P~T°¹†ò °½Oå`{ŸÊ/€Šå×T~¶ÿ©ülÿSùPqçšÚ¿?uþùØÿï¼ùœ÷#€ó3¿@½–ò ðýXÊ/€ B×R~¾/Kùø¾,å@…¢kiÿþÐù¹®¥ýû]çg~¾OKùø>måèÌü|¿¶ò ðýÚÊ/ÐŒÌüm‘y}|ßà'Ê?á¼Èú=æhú=æhø=S~¾¬x¸õ>²â!ógÔ‹ª_uîäFäJŽýûœw^à¢ßÛäM6rü^a]ÆÛœ ¹‘+¹’¹;ù"0ÞïB?aþçEÖïor'¿O?áxÞ¹ ™‰jðþ—¢L5¨ØTŠRÕ@JQ®Ôô(%óÁ ²òÁè÷÷#ÿŒ³òÕà÷k櫹Èå‘ÞÆ¹>²ß83_ ü±T嫞”ª|5ГRu}ðÏR•¢ úRªr”m]“”m]³”AoJSš2TH,MyÊ ?¥)Qô§d…*T”+Y¡ zT²B*Ì•¦deЧҔ­ çJSº2èUiÊW½*] ËPQ¬dÅCèWÉŠ‡¨@V²Bô¬d…*èYÉ U¨XWºÒ–AßJWÞ2T°+]‰Ë w¥+sô® ¥.CE»2”» úW²â!*°•¬x=,YñzX²â!ú%+BËP3ècJa†þFÊa½,SIÌ’™Å úY²âaŸdæ1ƒž–©Df¨øY¦2™A_ËT‚5èk™Êe†Š¡e*™ô¶Ì#›Y-KéÌ ¿e)Ÿú;e)¡ô¸,e4ƒ—¥”f¨`Z–rš%+ÕZ'3«ôº,¥5ƒ^—¥¼fè?•­ÄfÉÌl=/[©Í çe+·YÝd&7ƒ¾—­ìfÉLo½/[ùÍÐ+[ Πÿe+ÃÙ”â ~PL9ÎàÅ”ä ý·bÊr–Ì4gð‹bÊs¿(¦Dgð‹bº¾d¦:Cÿ¯˜rÁOê¥dgð“z)ÛY2Ó¡‚]½”ï ~S/%‚ɾ‹#Ïrq¿ï‰ÅªÁ¿Ø¥Âd¶q?–a1&ƒ­¾k†‹éñû;Vúeá~ïø—Ø,‚ã6#]ü½Ý±ù§#øé»–Üœ6Où®§df<ÿB²°¢óoläd¼±#Uˆ¹ïëHþÔÀÉžô÷ûbX$;Šà¡ïZëØì;ðyGrž¦ï$Ã)ü=‹(‚oÎæ÷cÐ7‡GðßwñÅfxn~ó]¾YpssïôÍÞXÓé\"YÇÅÅ~¾+Ñ“cøš n‘Œâ2|×c$¨hO¾K²!9Cg}¥'7(œ,÷]—Ÿ†5´yÕoÜG¬樜cÕT&Ëð] žì¤rñïä"ÜüÄ]¥‘ŒÜ"yFád…ïRdƒ 0É Î£OØ%[âï+ø|ƒ9¹»n¯H¶Álߥ[\&ÞßÅëÉZ|M_œ¯Æª]O–ï·ï öÍãÆ`zìqÿ£½ø.cßmÜìã»}3²qñoìR®H~Ï£FÃs3ð†Uü {¾+:’p±‘ï¢öd›‹]|—µo¾ß\,â»°}³»sœßƒmÇÇï{p«ã|ñ{-\6’-àø˜5sž8_¬ñë‹à‹ï*¿Ì¿«#¹C\oU°þ÷â~ùàwÅýÀóòÁæ Æßq'“ð]ñ¾ùÜ×,ãó›½}Í18†ßÿ‚ß‹U$ÎhÏntHN“5±‹ß"¹®×ýd#ÙE|>b—“óÇ‹æŒßs?Á1ÙäY|3ºqñŒg! £}˜eræùãÅqýñ,É7ð<‡!™»y–„ÅdIàX¥íŒö=£83þÞÅxœcr©c…·_ÜÔ”ö ŽYœ¡ÍÇ»v<™þ~T07ÓvÔw}í¨Ú=.n益íﮕª]opý¨íŒëCufñ{¨‹ìÉS ¾³ãâⓎZÀÎxQ…w\ÜÌØQÿö>•gÇÅÉÓŽš¯þûh¨¶ê׋÷uNýïG{D…Ѹßqý¨íéíÏU5£½Çý@=KÿGÅçɹ*õ`ǃò? zm’…0ùŸ(’s4“;v5G²‹¸^ÔêófƒóŽ*y‘ "þ^Ô§ó×z€Êp½r2´£&›Ë^ôW:ª¡¹ì¢=“iL^ÿ2úñ`±-ÔtF²_ìarFrÝÍÍ‹ƒÅ›PÙÉc}5ÉZ±ߙɶ7ú_ƒÅw&ãÊâáƒÅe&7/s™úƒÅS´Øx”,~ú>JÖ Üø~Vÿ ?å.±Ú‚ï:Öø<ËŠV|ž=c°2X¼ÀeÁ‚Y|†í09ÿ¼^&Ó‹ƒÉç“U &{wŽëgruõ7Ge±%öGGeq#öWGe1!1“cߌͯêÿ&¾ÉnÆæü›±þfl>¿›½oÆæê›‘ 6YLŒäÙO¶çõ!™gr Žþm†42ýð¥Ÿÿãׯþèˆä80Ž@·ï>BœGÐøòˆäû–éÌ#ÄyÄye+Í#þâ{Þ‹¿ûÝOÜ‹ßýÝgô÷ëWùúþ7_øóïÿcÕ'>ߋپÿáëÛ_~ö_ßÿÃ7ù}œþŸùþŽUvïþóŸÿõÎáëóë?ã×;{ÿ÷×ËÏùõÎÑñõüu¬9òÕH{`µj4‚?:¢<ÛþãˆKeî#À#ØÍ#ÈÏ#z(Þ}øyÜG0ÁÁ}¯=xü-Ï›õ¸C¿|ܸæë¢f´ÆTý‰GýÏ|Ex߯?ÿû1˜ü~ÿ|¿Çö|þ ¾¿Âªðýýó¿?PnðÕXÏ8Îß $ñ”(‰Ý"H¤'úâ<A¤º#‡ÕOþƒÑ¡Ÿ£ õõaÝD‹y”Ñc ûù³þúÛÿüÛßÿú¿ÿø‹Ï=øúöoÿë¿ÿúÕ?ýáoüüó/üñþøõ›_|},þÛÏ¿ýâo¾¾ÿ«?zWòg: mß?óío~êÞïó»[™ê¿ùñß–•úƒ¾ü%x´´I$~ÙbIÜçô¿ú¦üä9£û—çl˜’Š{6ã*É®?Εé,ØïuŸüoc‡«"wi予ÆüûOCþå§‹öí~ýÓÍõOˆã¸h®ÿã÷ŸWAOîÏ»kÿïÆ^Áwì|Ç^ƒ±Wð{g앜±WrÆ^É{%g앜±W2c¯ÉŒ½Š{Mfì5™±×dÆ^“{Mfì5±×›{½±×›{MfìõæòbÄ^oFìõfÄ^oFìõfô¾n^˜øJÞ˜hJ6Lìˆ{}pÁDxrÅÄsrÃDorG"[ôb{}pÄ^±×‡&?8b¯ÉŒ½>±×›{½±×›3öJfì5™±×dÆ^“{½±×dÆ^ofì5™±×dÆ^“{Mfì5™±×dÄ^oÞ/Fì5™±×›{½¹"1urC"è䈽>x ÑqòDbá䈽>8b¯ŽØë͈½>¸ ±wrE"íä†ÄÕÉ{}ð@bæäùìe+öúà2>Øž# Å^oFìõÁ®š\‘h;9†œîH$<¸99b¯Ž Üƒ7\;9b¯7#öúà‚DåÉ4×䈽>¸#ñuòxñDâéä…DÏÉ”zpÄ^oFìõÁ{}pE¢õä†ÄæÉˆ½ÞŒØë͈½ÞŒØë͈½ÞŒØk2c¯7#öz3b¯7#öz3b¯7#öz3b¯7#öz3b¯7#öšÌØë͈½ÞŒØë͈½ÞÜ‘=y ñxòT¢orÄ^±×GçêfÄ^\”hŸ\_Üè>¹~ÃØëƒYh=™…Í“YH<™…»Ëbìõf¦NFìõfÄ^oFìõfªOfaødbOfáód«°w2 i'3öšÌØk2c¯ÉŒ½&3öšÌØk2c¯ÉŒ½ŠïØ+9c¯äŒ½’3öJÎØ+9c¯ä;ö ¾c¯à;ö ¾c¯ˆu^/þ0öúÕäæõ'—¥ü³ý«†¤#vÂÍ…aöNî&Æ.ÈÕƒÚAý qÐÈ„gpS9¨ÔêƒæAë }Ý4¯çµÌèw=¨TjõƒÆAó uÐ>È}¾•ƒêAí ~Ð8h´ÚÙƒ¢¿ù rP=¨Ô̓ÖAû {PôuTªµƒúAã yÐ:hdêǵĨàAõ vP?h4ZíƒìA‘uöAÇxP=¨Ô̓ÖAû {PL¢>¨´'ÕƒÚAý qÐaͧ#¬C…סÂëPáu¨ð:Tx*¼^‡ ¯C…×z:Â:Tx*¼^‡ ¯C…סÂëPáu¨ð:Tµ”Ôz¨ð:Tx*¼^‡ ¯C…סÂëPaÔyzP;è¡ÂëPáu¨ð:Tx*¼Þ‡ ïC…÷õt„}=a*¼Þ‡ ïC…÷¡ÂûPá}¨ð>Tx*¼ËÓö¡ÂûPá}¨ð>Tx*¼Þ‡ ïC…÷¡Â»>u"ôPá}¨ð>Tx*¼Þ‡ ïC…÷¡Â»=a·§#ìC…÷¡ÂûPá}¨ð>Tx*¼Þ‡ ïþt„ÝŸŽ°Þ‡ ïC…÷¡ÂûPá}¨ð>Tx*¼Þãé{×r¨ð>Tx*¼Þ‡ ïC…÷¡ÂûPaÔMyP?è¡ÂûPá}¨ð>Tx*¼Þ‡ ïC…÷z:Â^OG؇ ïC…÷¡ÂûPá}¨ð>Tx*¼Þ‡ ïýt„}¨ð>Tx*¼Þ‡ ïC…÷¡ÂûPá}¨ð¶§#l;®åPá}¨ð>Tx*l‡ Û¡Âv¨°*l×Óìz:‚*l‡ Û¡Âv¨°*l‡ Û¡Âv¨°•§#Xy:‚*l‡ Û¡Âv¨°*l‡ Û¡Âv¨°*ŒHûƒ*l‡ Û¡Âv¨°*l‡ Û¡Âv¨°*Œ(ÿƒÆA¶C…íPa;TضC…íPa;T3 =TضC…íPa;TضC…íPa;TØÆÓìPa;TضC…íPa;TØR…'¨Ô̓¨Â¤}=(U˜TªµƒúAã yU˜´¢ û²mK&•ƒêAí ~Ð8hD&Q…7È”*L*ÕƒÚATaƒæATaÒ>*ŒZF—d8±œXO„#¯ý%)N'ÂP4åºxM7ÚÐcT»$ÈD)2òë_’äDh2ªõ\åD¨2j+\…‘@&ÿKœeF”KÒŒ²—´9⌢—Ô5.És"ô}®J³@’«Ò-Pà’D£|Ë%Fµ¢K"â—Tµ'.É4J}\ÒiT>¸$Ô»¡Ô¨cqIªQfðjô TQ¸$Ö(‚qI­·.r$—ôÚ.".)6ê=^’l”߸¤Ù¨vsI´Q âŠbèSµb¯Ø§š¥•.è637;§‚rskŸc DÙ¬žÌ2]0Ù;Uôí‚zoÖ¹ ß*ù|EíÆ¬|EtG}×|³>Î 玶rAÃU=ü‚ˆ3ù·c DíL9O¦wìÀICO Î¼€:³kùÖû 1W¬ j¾ÕÚ!ç[-z¾Õê è[ Š®z[$]å±µln=ßx ¦ŠS_Ñü¦é‘AÖ¥q.èº*³_vf¾ ìª‹é÷iº±ÐvUÁ½ î*xAÝ5V®¨q>U’òŠ?mšdoºPxÕ—¿ ñ*~AãUí‹Ö¥*¿.5ÂùÅÝØŽ3•X®(1ááajv]Æçu[*+‚ÙÛuQÌKüĺ¨W%¤c` ܈—®„Ô/p)qÎ¥ú/%ι Ë{–¨³‚"±DûÒþ4G „”ú,…Wâœ-îĈ¦RBê—êú”úUY¦¤„Ô{ŒX§š]ß]x %j˜/îªwüü¥«²"g‰ŸX•‚JH½Gƒ±¢|J ©÷p!ö@ó,!õKµÜKH}–6,QºÜ#½útù#õÝÅï†Ô{x׈%/,‡,+!õÅÕÁ©GeUàÌ3Ï@¶œææ²¸EØq¢=—úÅl)¥„Ô/;/!õ‹¹ü –¨,•‚+!õ‹™]?OgqO…ã¬Âˆ27%¤~©sR¢JùZ÷©>R¿¶îdHýRÉãR¿¶®*¤~qÏpAeçµõôCê=„¹ˆ#Í;¤~™îUHý’”Ø×ºTšºDÚ%W(%¤õ8%—RŸeRKHýfbÇØtð:ó äөצYLj@%2{¬R¿«îdH½Çà:±òϩߞRBê=€¦ï~ôswµzŒâ ä«R¿³ÅF`½Ý!õ{èï ©ßCO?¤~g› ©ßSoh<è=%A!õ›ùfg éàìlu!õ›ù;-}³K|v6³ú-gǪ½õ†Ô£\ ðóÜ·¼¬DÚ¬ªã8§¾»M¿û‘zTæZ DµÆB#SÏRïqI¬¸“5¤Þ¤ÀÈ,a*vVãœV©í5¤>KC×zãæuÇÏs7ª«±gÊ£ñ÷ÖXîäCþ*4GþPH½Þ/b „¸Õzëú‹BêQˆ 8Qðª†ÔgýìRoÌøáø‘zcö@G „Ñ×zãöä‚%mÆTïŽ5ºQCêMÝø·ÅÔù¬!õƲ+Ž3p W  ?R¯mñŽˆ™5Vª¡ðð#õEIœ+¸‹­´†ÚÇ8j¸‰'­†àÇ€g‘·såK_£cQRRcá\ E ù#ú1Úhä †JÔ}ŽÀݹSkHBtõuþ æßÒvoƒñ’Ö(Y´é¾ÔXÈ]éJþÈô–¹‚ټ¢“«ã;8`ô–j45v?Á ŒÎF ˆ^c!›3“”æ}?#þ°èÏuò§±F—MŸ7ðÐçŒñU 3ˆî’Î?Á°Ýv½œEÞÎê+Õ0„èà|±Ð‘p£f OˆŽA!7ç|žá ôsð›¾?U!µ†1%ÉqÞÎÌçl`ÊP,¼ [gV´pþ¼Va?âæ¼õ÷„?„Mèûœç›ÎòüAMfQ’góù„K„Nrq.ìÊÔð‰P¦JnÎUÏ/œ‚ ÎM¿^¯µÎ¿œU!¾†[Äk¦óí¥…_°Ùƒ ϳ]¸>UàmaÑŒ¹;³B‡óCOZ¸F©Ljá¼ÀSçßΪØÜ¢!ÇŸ‰ß çˆËœäF¥EEñ8¬‹-¢ÞâF_ÿ+îàü|8·ûó :ßrV?¦……8çõ™³ú*Xhì }laŸ¥IZ؈3ª…”Æ &ÎŒöÕÂIJcÅ-ç ^:~9«"v 3q†¾¶p“ÒUÁ Ÿa‰-*Š—®AYƒŸx"]}ÞÀ|^ð“Þ80ið“® » ~Ò;ß—?ùßí;Ï&»q­sýŠ/Ü „Ó¼“2`§Ú™á@°%ÃÆÈ†·¤ÿ>ÖZ»{{,kûr’3É̬éëÛÍ®"‹ÅzjuºÈŸì«ÙzIk|©DìT;ï7F@©â†KÕýl+ò'•~W‘?©ôà‹üI… ^äOš‹Bm=¤5,ò' ¢z‘?iÉý%†§]è±Z'iu!KÅÓ.œ˜­·?Ù…“u•ÖˆªÈŸ´ÆýËŸ4º³Eþ¤¹ÂûÖÛŸ@xÙzI»=ÉŸ´Ó^¢ôìÖêÕ”(½œ kÅÜÌöíO1þ*²&÷+²°çUþdÑ«ò'‹¨K àa]/ü‰ÁÁÒikÆC5üI€}§u‘Öଆ? Ð.û7éÁþ}kˆî5üI€k«õܺòûßXV÷þ$À°Ù:mM°£Æƒpë°.[»"{8Riÿ¾ð'ù2±kë.­þ_ àRÎ7·ž<Ïð'ÕùŸ4['i·Çð'îlÖŸ*@œÝºJûy…?É Rßt)=¶Îî¿Öð'¢ä~–´úË5üI€!ÑIÚö"üI€ÑEº¢«ôDú¬õØÒ]úœolݱoáOL˜¬—´¿Ÿð'\ÖIÚß{ø“ý ë²õ¤½ÅüŽA|ÒŸNN„Žjø“çq¾!­þ_ `;Ž_Ò¶·áOòŸÔxÑ–ËÖYZãþ$@pźJÎפÛ?fVCzHWÎ?¥5ÅYߌö©ÕQ ÐY²NÒŠo´ð'*kÖEZþµE„5@cœ¯I/ôgà PzH7ŽŸÒzž*”³‹*îŽá%­ßÓŸ˜kYgi=ßþ$ÀZɺJ+~Ñ¢# ,¶¾¨c5ë¾õrÿ´…?É&JOiµ×þ$@Vºßð'®B'éŒÎÒþ=ñbs¡?Ø‚( ªiݤÇ>è\èµ0”šjÖSZí¥…? °”® %ÀRÕ:I«}´ð'–êÖEz¡ëÖ™ßDñKqþO’ QÍþ$@SœJ+@ÞäO ýý&Rèï6ù“Bûoò'SI—éú£ý›õ´Þþ¤àošüÉÖÉzJË7ù“â…Ô{àpIk¼ÔäO ã¹&Rˆÿ4ù“’ìšüIa¼£j†÷!R\Ôtë!]8~Jg¶/i__þ¤\î‘ “‘Mþ¤0uÙäOÊÅï—?).ò¹õöw™)ÖëhÿÕzû“Ì\o“?ÉôÏšüI¦¿+f>ñ ¡@|W¬³´Û—üI&ChÚ‡=áïòà{ˆÜ• ëíO² YI(å.ëíOvXQÛåO2o¡°ܸ¬³´¿Wù“†MÖÛŸdâuBŸ‡=fÿíï„–²çê¿7û“ó=ÙŸàšýI²¿iö'¿×þäâû’?IËþWÓÃ6ëðwd´%GRD[òwƒ÷'’ƽ}û“„ýÖ@7'«¶Þþ$¹üÖYZý¡.’ªíO—?I<Ï.¢iSé.8ßöwÉE×·ÞþäôoºüÉžÀÖýÈŸ$¦þºüIâyuùÔ¥‹tâøíO.&žºüÉEÒLŽÖÖ²?=ˆâ»ÿ89ÿö'— B[or¹ÈþÖKZã.r៻üÉEûêò'Wá|ò'gþ ËŸP$xë&]ÐÛß]ø›.rú÷Ýãâ…ÝãrJºÇ'ô§ºÇ'Ìâõ3>‘½ìŸ0)Ô‹ÆOÍýó^4~"^Ý ã'ùë^?%tŒOŠíYW¼k1_ÒïZØ÷®x×ÎÎÖYÚ÷þ$Æ‹è=~šô¿{ø“­ezÅ÷øÔÏ/ˆâ[û}(Þ5IÇëŠwM‚wàeÇ»¦‰„[ïx×^¬³´¿§0L{<îë…?ÙZö ‡?‰ñ<çëÒ‰í;7]ä|ëïšøó®x×$^ÙïÚ«i†u’ö÷¤x×X¼¿ð'iàzø“ˆw,ë&-ÜßD¼„óé‚Þñ®ÁüCW¼ktÚ¯â]ƒøUW¼kÿìŠw æCzø“ˆÿ ë*íï-üÉŽÉ+rë‹ëíxÜ^õÈù¦tbûR¼ÊöLñ®A¿Ÿx—Ÿ‡ã]—ãÝñ.úÊ?Ûñ²ÎñMÚöq*G¼Myc©3¾ï“xÜ…Þñ®“Úïêƒö£xW7¡8)ã+^ã°.Òò·=üI4+ŽoÒ…ý»´¯†5>›n=¥ Ûw¼K«ä?õP¼«3µ=ï’Y‘Þñ®NáO„°ø0–âë?¤ý>‚(Ýâi½ýIc¾yÈŸ4]ß:I«ÿ3äOómCþ¤aÿ†üIc~nÈŸ´b{9äOóyCþ¤~OîbXÄù¶?ÙÃ(Ý¿üÉv%ë$-{9äOÚioò'Jo¢a¤t“îè.]ÑCúœoJ'tÜßÅóòü‰‹Ê§áùüÙðü ‰Cþ¤r†Só9²÷£1¿£ùø!¢°ƒôxÎÿŒxñÖhÖKZñ%³%Õ[“NÒ²Cþ¤º¨~zéÂñUZöoÈŸTÆ Cþ¤Ò_ò'•ù¾†-ÂP쿤}~ù“:8¿üIÅ_ù“Úyò'•ùÚ!R;íKþ¤’ 5äO*92Cþ¤2ò'ª_'½¤Õ¿ò'•þâ?©ïAþd‡1/ë"íïKþD Gé&­ñÁ?©Õý‡!²Ã²ÙzJ«ÿ3‚(a^]oéþ˜Ïò'aJgiÛOù“ZÜÑDH„­³u“Öüø?©Ì_ ù“zì¿üIÍ´×è˜D>~ߌlàÛëíO*ýÃ)²§šõö'•þ³2 cZó5iù)ræ{§üÉžæ`ÿ)¸þ’–½šAi–b½ýÉž–éÖYZöaÊŸT+]¥}ÿò'…ïyÊŸ2¨§üI¡1åOö4Vµ^Òzþ3+_€ïyfå ð=OÏÇOÛŸ)R¦íÏ”?)Œ¦üIa¾GU1mÈõºôàzCZñÕ)Roͬ|r gQ¾‰¯Sþ¤0›åä  ‹tEWés¾Èh´ù“bHÆÖCZíyÊŸúC{ɳ´obc¼ZoR˜¯ò'{š=Yi}ßSþ¤Ïò'…ü¯)R˜/™ò'…ïkÊŸ´.½ýIÉ<ÿHŒ4ˆj½ýÉN›HÖYZãù)Rȇò'å|/ò'J ‘îÒ…ý‡tbÿíO ýå)RÎ÷èÊt⩳ëþÈžò'™ìÎ)’—ãaSþ$³8aÊŸd²§üÉŽs¾!=8ß”nœoI+~¨^¤Qeëíï2‹Š¦ü‰Ò¶¤‹´Ÿ§ü‰ÒĤ·?ɧýÊŸdò9”>ilÉzJ_\oû“LÖ¥ü³ËñåG&pµŽü³ËþkÉŸ¤åç±äOÉÉKþ$Ñ¿Zò'‰ñß’?I´Ï%²ç³t¼üIbeÒŠ$wgqKgiõ'—üIbyÙ’?9ù}Kþd'£sþ.9ÿöó‘?I†&n½¤Õ^–üÉ™ß[ò' {»"ðù‰G/å/.ë"ÝÐUº ›tBwés¾íOóñKþ$Õûþ–´ïOþdÇ'³u’öï-º¿âù %’ ïSþD‹D¤›´¾÷%’ ïCþ$ÑÞ•Xù£œI«¿¹äOó+Ec!M²ÎÒ²'Kþ$1?±äOã‘%’˜?Zò' {½äOÎ|ó’?Iä§,ù“oÕþò'‰ùˆ½¨[ZöO4ÈX$5¬·?I¤ã/ù“D¾â’?Ñ‚,é.­øË’?¹X^¶äO.ú7Kþä"ßaÉŸœxï’?¹¯®|ëÉû•?¹X½·äO.Æ/KþäbUáêä3Ë?ˆÆxç7/ù“O^ò'kC—üÉE~Þ’?¹ï(ßšù‘5È·öï“?¹†û‡Kþä¼/ù“‹x›¹‘¿ÍþSº³ÿ’VtÉŸ\ö!r±hiEâ\ä‹_ÖÛß]ÍöxÉŸ\†Ömݤ՟\ò'ùYKþää§/ù“‹|Û%r‘o°äOv~{²Þþäb<´‚^ùðݺHû{“?¹*¿_þääÓ/ù“«z<¹äO®jÿ¡…‘߬—´ˆÑ—üÉeh\â¥Ã>m¥Ãßm]¤Ãßl½ýÉU4ܺI‡ÿq¢N¬àüCZ„÷Kþä*²[oreµ‡Hì‘Ã:I‡}Û:K·f]¤k±®Ò%[orÙ>mÝ¥E„¿äO˜¿ØzJO®¿¤‡®/²OÓ¬“t«ÖYÚ÷šX¯‘­«´ïGþäJÜü ʘh‘öýÈŸìÇÊýLés?KÚ÷#Âú’­“´ïGþD夋´ˆö¢YîV4-›V³ ËÒ7Îdyî6&‘´†KkaLÕ•«Æ”Ë2…LË2‡ø^íY¡˜® 9›ågë\ŽñlÙÇY®³åٸРY¸Ð ™õ‹Â,¯ß2…ßý ï±OŒºÖàÛ #±ŸN¸Ž5ørÂs¬Á‡ŽCõ3$gH7‹pÛë&Ãkl[=,SÈY-sÈ‘-KÈ~YÖuZ~~9ËñÕH< ™‹åé¯5¼Åj¼ýp˱×HR éÇ65®žbûÓiYBúºñ¶7ΖŸíu5~ox‰UyÝá$–cHYÎj÷ ¸Ð éç/K€É²$Ë2±s y±óçQ,l‹Y؃?}Ã*4ïho»ƒuYÎ…WH?Øð «ðÃ-¬Ì ¯°œ·e é†óÝÓ¬–-d½,?ÛùrB‰g–—ç÷·ü<çJ¼ÁpË«²÷´ô2:[¦²­ê­¤®iÌa‡Ô…R ‰w?[~:ª…ÝJá–ÃL‘?ò\Hk ·¡5ú$SòÈÜ,SHYȦ“ Ó-KÈ™,ë½örK­ÌllýlœL®n9Bf¶Î1”ÝòÓôO/óó”ÿ_˲³5‡¬l-! [kÈÄÖòbë¾+OQ†\ÓK·!ÈÊÖRæ+E›ƒ—Ö~b74 ˜+mYBv¶Ö­-d™–Ÿ­qb(R˜úaë§©ŸŽ*GÝúC[ÃÔOç`f-.Û‘›e™çY¼e ™ØZC^lýt@ÓËŸ¶ü¼ùéìŽHóÙ“å Y»å é—¦~b R˜úIG)…©ŸŽ+oYBŽjYCÊÖíáaH_(²Õw¨ }šzE%g?«²·ü4;®¨S…©Ÿ^—»e éG¦^AMÉRF5…©ß!ÑlÙBúŪépeçχÆ:óȰ ÙÙy…´)S¿ƒ¿Ù2…ÌË2‡Lݲ„ô S?=ƒ©³!Ý6b¥Ç¼ø`ÃÔO×"/è^fi¶!}ÝéEø~ƒÓ‹ð¯fùiêÅÌ”,!m(ÂÔïp?§j!§ê!ýBÃÔE S?ßB˜ú±øèÂÔån SO‚–9¤~˜ú=+2,kȆl!}‘:&¯;’æÇÄN†©t]R˜úA×%‡©†ƒg-xöE~qÈ,!;²†lȲ"{HÝUŽ©Áaê÷–»²ÉpÛÈÑ †—ì<³OS?0P9L=É‘…2b1‘Ô,yYÖt RlÙBªåäX1;:7™¢Þ Ýž¦~xUä–+¤lNS?<†Œd¹2×9L½*K–êå0õÓ—ÃÔoÉ©zH}Î9–éSB¶œ!åDr˜ú-9v­Sé#R²Cú9‡©ßÓ±Ó2K&ËÒ!L½æv%›äeÙCNv!;«²É`çÒM%Lý¨ ÷n™$“e©>pS¿§°—e§HÊ–-¤ßQLÑÆ"ƒ\VºåŒ")~eÕõVd rs½}’9Lýžz¯–9¤¾PåžÂÏ×1 0LýÀä0õ£ØŒä˜GÝ’ëîÊ&¸‰¦ž‚2‘$*™,SH¿ý0õ[ËÒÏ*Lý(´ç0õ[rªÞO]›ÈV•¬–º+ ùr˜úá¡;Õõ’¬–Iò²Ì!/v.’ì\%³å®·ââ;‘T/Ù-‡$ÇNIŽýü¥slvLß%S=U~"_²XÉdY%/ËÒ_¨L=ͼŒìEŽ@Üȼn™z¯ŽØiÈW9µ‡"+Y2Yæ·,’—e é–#Sÿý-‡ä´œo¹M=²ÈÔsl‘©Èü–%ßw¥‰®§lùþ E¦žß[dêræûáì5ù~tE¦žŽM‘©ç±+áü¼”"SÏ++2õ¼Pe¯Ÿ×]dê³?Ø"SŸm÷Ô $g^!eëŠL=­®ÈÔÓ&•–Z¬V çV{QÀ ”Udê½}Ë.Ù,Çu8E¦žÏªÄý g‡\!u¬L=_¨&SÏ÷[dêi™úb¿Pdê϶e[·¡(2õDïŠL}ñø¨„I<6g¯õ©N æ„‘ÀR]ZKãýR]ZK£ãR]ZKÞ¹Ôgi­-UZ«-K•Öê\hÌÛ¨î%Þ’Ãr©,—.$S_h„˜z·:L½›Ù1õɲ>,ÁÔOŽí7Q0õ‹cçç”8BËÁÔË™z'…n™%‹eé·ó*2õžß²õÛÓ™úJË‘©÷òÚ-§$§ZýT%ËE¦¾ºÛSdê¿en·Ã-2õÕN¤ÈÔWš™L}up ÈÔWZL½‹ l9C*ôW¢^ä D³—pKfËmê2×»“Pdê+ X¦þ!Û[vÉf9Þr¾åzÊè!·©È\’©ÈZ÷,Sÿ½<~ Lýy2õçYÅpæ<ɽ\»ÜϹÊÔÓeª2õ¼#%ñœ7Xeêy¿U¦ž·_eêiU¦ž–SeêiWU¦¾*©"טΡßr›zp•©¯šaÛ²HVËšîO£ÊÔóáT™z>«*SïÅ÷[NÉËr…TŸ¡Æšëóuï¬tûU¦ËPe꽬qK™úÁÎ2õeê;g–©ïì,S߸ ™zYÂîãØÉaI¨˜z™ÜŠ©WL¦bêÕÌ*¦¾p*™úÌ©dê3§’©OœJ¦>qW2õ Wît»uû²Š©—ã«2õxÉ*Sï[Öy÷ܪL=¾»ÊÔã÷«L=]ˆ*SO_EY…äÆçÚ\ÛQ½ëcŸÁÌP•©Ï¶k™ÂÙ.yo]î\ýÞþ—ßûÇýýï¿òã~ÿ÷ÿò³ÿóWù#}|ÿÛýžû׆^½²ª¿ÿÝÇw×Ï?¾ÿçŸýòû8óŸ>4r!ûãØöŽâJŸcÓO¸pV¾ÇÁçÊõàý‘È1Ü^ñ¸~´¹<˜AgkÔýžg³åc{‹(ÉÙ.ùؾÂIí’÷vßÛw÷üåŸû‹ÇSP3áãu}þç×ÜŸ<|'G4ÿêKû“‡G)§åã¿þÞþôñ3ú>þ§_?‚ßÝÇçëG¯^_ÊÏr— uyËŒm#«xIvtû¾lžóñ—iÚ?åËË?jÅ¡wŸe~äu¯>Ìß~÷×ÿò‡ßüã?ÿüáßýú¿ù‡_ýÛýÃçß¿üá‡ýáã·?ÿø4ìß}þëç÷ñýßü»oå«WqÔ}™ï~ûµ>ßÇê÷^nÏ-– ïCsúêGúõ §]<.üñ?áð‰Ã÷Æôõøº‰iª˜¨³}‚?rìÿ>-ýÕ¼öJùüñ‹!ýϳZý¯ž2ÎÎ)[,4Éʯÿ݇Ö[ncñçÜ–Ï‘";æœCòÄ{L%ÉÊ‹6ü‡Ïöû‹ÏîàwüÍ×[éŸ:OŠGôŸþðùðÂþ¬çõ P«o€zÔ7@=ê õ Pú¨G}Ô£¾êQßõ¨o€zÔ7@=ê õ Pú¨G}Ô£¾꥾êoõ Pú¨G}Ô£þ¿Ô[•—ª/Õ^ª¿Ôà ¯—^/+¼^Vx½¬ðzYáõ²Âëe…o@½U©‡^/+¼^Vx½¬ðzYáõ²Âëe…×Ë ß€z«þR+¼^Vx½¬ðzYáõ²Âëe…×Ë ¯—^/+|ê­Vx½¬ðzYáPdzËü–å-ë[¶·ìo9~$×Kη\Où²È7 þÈü–å-ë[¶·ìoiÃÜ-ç[®§<¶™Þ2¿eyËú–í-û[ÚD#ç[®§By©zŠä¡¿2MÐà«ð) |¹5„þrbýóp¾%-·fýDÛú=f˜ÖQqð{ ¾èôBMîg¨h# CèÔýu_oJ(}@è¡O¼uCèñK@èO‹2„ÿ„ÈúÊó2„¾q†Ðý5„>uš· * l}¢lýv.Ó:«hoaÿ"íÉz ‘@èÏz @è3÷ký±k†Ð ݆Ðc»n½!ã†Ð7[¾Bohù ¡gCèÏù ¡7”ÛúekxCè =4xŸ&ž/z~/ú´Ùz .@è½’ò@è~¡?pC莡ï@å ¡Ç2¡@° ¡Ÿ7Dþ’žè(z¿< 0„¾^@Ú¡¯^ü„¾& ë‚W ¬†ÐW g†Ðï5 ÅzÞK5«u@è]kæ@èiCè0¡§h>zŠ@¡?oCènAƒPKCèÛu_Ï’s=CTüü Qá{5„¾53„~¯O*Ö)i\Oz±¿};¿Ïúq_/ ôŒRÐO ݆Ð/¾AT:CCèwöj±ÞE€;]Cè;PICè{*.}/7ä~îõ†Îï"À(€!ôý©ßþ¤1„¾è¸ *ª!ô}ÞÐú€Ðý3„þ@¦ ¡ß™bЫtCì ½òûê@¯d ¡§4z–Ÿ¡@F ¡ß9@—u@¯:ß—üÉBeýÎIÖÛŸŒyï?¤m¿äO”3òå@è'Cè§”¡ß¹Ãzû» „Ñzо¡Ÿ@¿ ¡Ÿ@O ¡ŸÇþÈŸL v†ÐÏÓ~åOö ¸~üÉbaý$ªdý$daýô¢@ ôsñ=ÈŸì¹Ut—~AènCèyCè5{øå@èWZ.²è9B¿;mÙzû»EÑuCèýCè5gõå@èwO-Yo²\EýâyB¿€B¿B¿gQ†u@/ ï†<^@· yL@ÅEC´ ¾h‚ÐG-`Ž‚2ªýWC)_ ydhQä±£“ j¯ÕÇæï¹òxžWø“|Šr Bõ_—u—nœ/ È´ Á;*ÊþKÚÐqAƒ/ ~‚ÐGíR¶ohpÂß BEE³õ†ò¦Äï ëP¦õ†§Ìû4x‡Ï8~J".hprÁ, ôé…ßÐàäš@èo(¹ Á;l”­7”71z3„>ö©qÉ%å€Ð'†Ð'ü!ô‚`}ÂBŸˆ]B¿ûݺHú-hpš÷þ­ÅúLÙCèwÿrXéÎõ¦ôâ|œÏû4ø†– œ±†Ðg‚U†Ðï‘x³®Ò¾?Aè3Ð$Cè3PeCèwÿ•ý§ôØ4¸ÜøKÚß¿¡Á Ü ¡Ï@¥ ¡×õËÐç $~Ê ÔÁú=ò,ÖCú@ë§ Àç74ø@ß v{54H—!ôh…!ô™¢÷†Ðçó= B .†Ðg Œ†Ðçó½ ô}Çþûú@èó ­¯Ò†ºù»Œý2„>ñ=ÚŸ$û' ôÉþ =ñ@ ôÄÐ3^B¹ÿ„Èú‹÷+}¢¿f}Z7Ä~¼ ðò'iñ½ÈŸ¤cïäOÓž†Ð¨”!ô§?„ÿ„þ|/†Ð_Bß=g„Þ•…„¾cÿ„ÞvCèÐÞzC¯ÿ=ã“Boè¸!ôŒg€Ð5BO|}"n}²l=P' ôÄ· ¡OZ.rCíåO¤ÉúÄt¡!ô‰¹FCèÓ”Zþ$:„>%Bô=ã' ô@’€ÐO·O ôøc ô@Ðc_Р㟌{ÿ©ñÍÙIûüŸ¯íŸ¹-:øÓºH(}ŒŸ*¿WþäbÒAú¯]ÖqÄs¡K²^Ò~þò'Ð`Aèƒ=Ãö,í÷+ÄÆú`é°}û“*W­»´ÛwÖ`ëï „~ï2„~ç#6ëïZøwCèÅfúr ô‹ïÛúEâŽ!ôÀS€ÐÃGBýÂ?B¿ˆB¿ˆB¿ÎûS¼kUÞ‡ \«‰”kggë[…ç+(×*nýr‰< ô;—šë-i·7Å»ÎôWW¼ 2úD¼ ò¸È#è‚r-Æc=üI°9¾Kûú‚rÍu_ßßtÑz ôè˜!ô-€ÐO¼ ¡‡R„~96„~ǧ’u“öó”k¶z?¤ çÛñ¸½‚…ó-ÇÇt?ŽwUÞ¿ã]LøB? ߯ã]Ä ¡Ÿ.t „~¯Nâ|ÃB?‰?B/¶î—¡?ñACèç¼+Þ5I81„~0Þ6„~5cý ÿoý ¿kýÀ>B?È@3„~Oùs¾%­÷iýèîïB?˜`6„~ç&Lër=⯆о'C臱@èON…!ôTýBOA` ô4BOÉg ô#9×üÉÈoýÉh1„~4„~\@¬墪úÁü„!ôû5sü”>×ßó'Ý„ ô'5Ëú“@f}g@èó׆Ð7 ¦†ÐïaÁe½ýI‚h};Pwù“Ößú=ŒZÖCº°}û»†=4„¾U¾_ù“æ*Â@è[áyÈŸ´Âó?i®)„¾á¿ ¡odÅBßÈÏ0„¾%žŸüIKØ'AOCèwؤY'iùCèÛÅó6„Þ¥#„žù ôø3 ôÄ€ÐÓŸB?ïýBÏ|úÁþ†ÐÓŸBO=óÝ@è;÷o=óã@è¿×z ³@èH¡g¾}Jl}rm½K=ï=©v@蟡?Pî¡_œoþZo½¡Ï†Ð9¾!ôê¿> ô—µ!ô†DËŸìi¥im½!ÛBŸÐCyC¥ ¡Ç?¡'=ñ ôdÆ¡'ž „ „žù% ô@ˆÐ³w ôÍö}³}B߀†B_TBO|½+Œ=ó@è]Ýú@è]Êÿ@èÛzÒÜ€Ðg ë†Ðg ñ†Ð3ß„žø=úDÛzæo€Ð_\Ïzæ€ÐcÏÐ_´'ù“L²¯!ô™ñ¥!ôy¥4øÄO ¡äËÐgü³!ô'¾l}Æ>BŸYûcýŽÏMë!íç#¢´ª/Bâñ†ÐïøZ²Žûc¾=©¢@èñç@è›ý?úŠ=0„þ´Cè顯´WCèÉÿB_x?†ÐÚŸ!ôÅù0@è3ÏËúŒ=’?Éä§¡Ï7d> ôé>~JŸã—´7„žùV ôô¿Ð3¾Bqÿ†Ðû#’ð7†ÐŸx—!ôiÝú)} õ‘FÂútÚ› Á‰ñ•!ô‰þ…!ôéØ'ù“ÄøØúQ7„^éÕ_„>‘j}b~ÇúÔfËŸœùHCèùM†Ð§U–?IÄsÐ7 ՆГ„žø-ú ”ÙúA6„ÞØƒ¡¯@» ¡?tCè?¡/Ü!ôä·¡Ï@£ ¡'?=ùq@è³Û zú¯@èÉ/B è†Ð“„žx-zÚ/ú=7„ÞEȄޕĄžñ zòs ¡¿hφÐ_ËöÀzqH¿ýEzª!ô׺!õÛŸ\ô¯ ¡¿h߆Ð_ä—B‘ ký5Ÿ6„þ"Ðú‹%b†Ðïµ`Ã:Kgôö';_aZor1^2„þ"þkýE<Âú«ó~åON~„!ôù6†Ð_Íß“!ôñaCè¯ó=ÈŸ\øwCèw>m±=Éà@èÉçB_¤BÏø ½ùBoŒÆÐ~q ôôÿÐÞ¿!ôôÐcßÐ3>Bo¬ÃÐ3^BŸOBÏø}¦=BO¾*zú@èM¯<zâ×@èÓ}þ!}ÎùÌ×}þ%íû7„že;@è鯡?ß›!ôÏ'ü‰Ðì_`ÐCÑ6‚~¹<½ ôkñ- 3¼Üõ~)~~Í›6ŸBú;f˜ii±ç£X‘¹‘終ý àù’w~?˜d9C¶®&p 3ìÏÓÌù5@ 3<@2 3A+Q>óQ>ñœ«W²,N¥•,ÂZ˜(ïµå/Þ¯ˆòAL”‡wk¢›Û"ÊO/g6Qž„Wåç m3ìUó&ÊÏÁÃfxðŽÂØï! ²„ÌÈ2![HßU˜úÙ¹«0õ‡Ï­þÓŒ!W9˸L”ŸðnE”ŸðnÕ7S=¬/å5NüQ~:l¢¼F™_ ÊÏÆ S?í9Lýa{‹(?ÛMv¿$/ËÒüõ0õ³‘S?!ÚŠ(?…o¢ülðŒÃÔÏæ›Ôbž ÂVDùYm½E”ßR·¦~z¾ÝDy¦‡ ÊWhô"Ê©5Q“k¢<Ä5å½8¢<ØDùÃQ¾@àQ¾ ‰òÈL”‡kh¢ß€y-¥ì»-æ›7?BVŽ! Ç.I+¢ü!‹(Ÿi*"ÊãL”÷ì7Dù\Dy¨Z&ʧ]?$“åg­(Dy¸Y&Ê{5Dy@Y&Ê{’ ¢üa¨‹(ŸøE"Ê'~Qó]å.SŸL]2QÞÓõå/¾™ú ð¹L=8+寛û^$Ù¹†lìÜúYf QþÐÙeꯛF?Cfv^’ú2õ×ÍŒO!œ3Qþâà ¬”ˆòŽ”ˆòp”ˆòcÝ€ù(÷Áug=ËŠM”ßx]W˜á~^ìIÇ o¢¼/Dyÿ^ˆòN/¢üÄ‹(/§yˆòfÆC”÷GQÞ-V˜áÉûýˆòþ!Ê ”uˆòþùåýó!Êw.$¢|k–"ÊW.$¢üá¾_!edL”Ç;›(?AP H6¡w H6o*|“L–]èz¶I¶j}º¬è!Ê^žXŸÞ,“$[szpîÅžP–Åž<Ø{±']¥¢üð·`¢¼ç€ Ê›7¿B×-Ìð°;6QÞùšå|n±'ÇM£¯’ͲI^–=äÅÖ!ÉVqî[7å±{èa¢|]/Ìp›-öd¿¹ïY2[–­U²X¶ÆÀ‹=ÙytbOvˆòŒÚL”ï`ï…î6›&Ê3¦3Q¾ßø"™-kH}t&ÊwÐæbO:K¢|çIŠ(ßiu"ÊÓ)2Q¾A+f˜Á£‰òíFÈÉ˲†ÔˆÀDùƃ{²Áö{²ñ`E”o´Iå]¢<Ý-åÛ›(ßÞDùö&Ê7ž³Ø“ iM”o6æ&ÊÓU3Q¾½‰ò¯[˜agëB”o˜áÉu…6~è;tÝi ï½ 3ì·fØo̰-˜ayÉ fXÝ€ f¸±³0Ãêd0ÕôõKYúºñÌð°Ìrp>˜avfXÐÇ f8³³0Ù…Nì,Ìpbg}cgå+ðòëY ¢¼WGC”÷âˆòŒ-S£×Dy½&Ê·Ø“‡Ï-öä¡w'}õM”/Ðèeê œ{™z/‘ƒ(_üY0Ãòƒ̰^h3¬ZÀ ë++`† >—©?Xô Ð7[ 3l¤:˜a×Á › fØìg0òu‡(o 7˜áÌ…L”çB&ÊëB‡(_,…öë3lâ8˜aóÈÁ k k¢|m.SŸyû2õÄ‚L”‡ l¢|©^ ô5p½è«ï·€vc3ìÆfxpl{€„ËÁ _– wŽ5f¸Y3¬c›¾nÍ@_¹¶r0ÃÍR˜áƱõ!.`†+Çö“¸€®;ˆâfXÝ-å!›(Ÿ!Žƒ6D\¦>Ã_—©ÏÀÚeê3 I¦ž±•‰òÙvÃDù B^˜aF^&Ê?6Q>Ó®dêa!›(ŸÝÍ3Q4²‰òÎ!€()¹€v33¼¸ ÕÂÒ¯€v«›®…%g]À »Õ¶ 3¬˜Œ‰ò@—M”g´h¢|¢ÊÔ{YDù„Z®Ðå6)SŸh“2õ›M”gài¢<üfåMT¦>ÑDeê“f[ Ê'¬™0Ãö,Ì0cXåûY¦>AÑ–©wDù­\¦ÞYzåðr™z†Ã&Êq5Q>Ùš(ŸÜžM”gìl¢|‚Ï-S Ó2õ ì½L=måš Q>ó–©?Dj™zFå&Ê'PßÙweì½L}‚¡.SðÕ2õ^BQ>Á—©O¶±&Ê3Þ7Qþ°®eê/ &ʃÌ4Qžà€‰ò—;®&Ê_ÀÚeê/ˆã2õDL”?Øl™úË_Љòdw™zÂ&Ê_ÐÊE”?Œm™z‚ä&Ê_°Ìeꯛ _%³e› ·Lýu3ã‡ä°œóT؃(O4ÞDùË–ßDùó–©¿nÞ| ©¯ÌDùƒú–©¿ìL”'b¢üÅG'SïüFˆò‡ .¢™·¥¶'^ Ôþ¬ð_êxÙ/u>«Û—ºžÀÒ®'s£´ôÄ^”–Ÿä‰ÒÊþPZ}òJkOBiýI!(m¹#ÕE¸ezâCЇ·,OpEõÉŽ(£=ñ eGEw5Æ“^Pv´ýqWc=á.e^Êï!r…Ì.Xßµµ¸R|XâÍî {Ù³°%J<ë̱:çW4½-Ðá–3ú£¤–¹(Šº¿Ã²¢/2mЋÒ&‚áPCLj6ŠH§ÐEùÇp—Wcý@ÊŠd,Û×þ±ð:Qɺ¬Áú¶°¯eEbl¤Ikÿ¨i¨û§Õ+z0N»Ü:ʈFZ§¶Ç¨9ÒjGèùcÓõxêÎ ©ZŸWB7Õs µî|ˆü‘pwõŠÉÿXF»BÏÈ/mΗ¬WÌ EÙ…Ø?ÅœX¬g‰ûIIõò\­¦™G%éH´s™®­#á'ʺÅïKQ(&òñãz)^[”u¬¡‡ê/z}lMSÚõjŠBŠ){T[sC£qŸc8ù¾q|ŽÑäÇÆñ¹(Ðn©æª|½îߟ›òãŠz’5ÇÂNc<¶°÷ry–šch¹ZhÍË)P2«%æ—g kINúÑ«+ÙÙ6§®%¦±§ —ÔÔ¦?®ZbÛô²ªºC*åLüW-ç˜^¤VKÌ?MA« ðÌAn¹‡7Îp­5–.¤•1²[fGí£#Rkq¸\·Q«ãÔ10®µQ«Z[»c IÇFÞlik”„.lUër¸MßE»çŠÏ¬nw ˆRü„–Ù Y[d÷Õ­»ñÖŒ«­Y.ÉXêD\¯Š£~îJ(ósW¢‰¬©z¨bj3º«ÂZÓu®&K»P wv¡ªj¾²«èV#ާ?+±(µ_ úþhÌÚu͉jÜ­KúTg=QZ }uêd5wÕùúÕèS§3WÓG4¨ªguœj ƒ©Oû(£KWodì|óãÌ71~ï›JXß`ÀúfóÕ7¯¾ uõ ‰«óEˬ묬ëÅŒ¬o`X}3»ê›Ußäªú†GÕ7¿©¾JõM1jo†P{Ã{ÚMÍ‘|qÅÚ͉‘|ѵÚõ\µëŘj‡bù"-µôµô" µô¯µôbŸµôµô"€µô‚pµôâ`µôBQµô¢Aµü¢1µü µü‚õüâ³µüB¤µü¢”µü…µübuµüÂeµü"V5Õ¾ez¤šªäÞ²¶ûûe»ä½ýuCçþîíù½ÿßÿþ+¿ÿ÷ÿ9˜ú«Ï¾ËÇ÷¿ýÐO¾ÿ.z•;^?¾ÿÝÇw¿ø´‰?ÿøþŸöËïãìÿÉá326îÃ?ÿ÷Ï?ºj(ø<ú'\»ªÏ}~ʵ›ú'ϣϵ¢j ɈÕó‰ñÚ¼Cz4ñ{{¬iÈ÷ÖÏ=4ýwï!ýÜ£GÌñÞCú¹ÇŠžñ½‡ôcßùÙãñKžêñt~ñxh%G¯Eejâ-}í)ÿ郵&$óO?8*”§8:ÿŽV= }tù/­Õ7ûèúÓŽ4Gÿ»Æ¥OúgMå mr¹8[í¼Á·fw^òœçÊþ·ÿrD姘‰ü£¯%ËLDÖOîÑ øü=ûÝ_ÿË~ó?üüóÇ|÷ë?üæ>~õoüõŸÿò‡þõ‡ßþüãÓ3÷ù¯ŸÿÝÇ÷óï>ʯ^¦ u{_æ»ß~í¡Ï÷±!£cÔ>r "U´•¯6–¯_8ú3õyá¿øø ‡§€5<ß!ó6‚1«IUÕw7rŸàûÿ"föjd»~XþøE‰Ü¨ÏÓÿêgé«çŒIÍs΢i–,:ŧ©éEe9CoSóçÜgI‘ÏtŸEúÆã)#"rìššò>›ñ/>»Yßýñ7_o¬òD)D4ÖúÃç‡À‹ûóžÚ·hå·hå­”Lo™ŸãÑ;ZiYŸãQ¢•GöçxÔÑÊ[ÎçxÔÑÊ#­¼ez@¬¼ey@Ý=¦ûA¨2ò.¡ÊSêÒ¡J¯|8¡ÊXqU…*c `DUº”Ö UzõØ Uº4û U:s¨rÇ’Št¨Ò¥«N¨Ò¥GN¨Òy4'TéÒ³'TéL8B•ÕsJ'TIìêU*>C¨’ ˪TðƒPe"´éPåtƒP¥K‡Pe&TªPeòÜÚ Uº”ç U=#TéåPeUhÓ¡Ê¡iݪti•ªÌ„F#TKÊT¬ÒÉ÷Ä*¹Ç*›nŽUG«tZ’c•ËÓíÄ*'[‹ÐâBŽUvMl«tb•®éXåtB›c•¬Zq¬r–C¬Ò šX¥CñÄ*^O¬ÒÙçÄ*M¡#Védeb•¦"«ô"ub•ŠѱJâœ'V³¤w¬Ò‘Ìâô/½Ç*‰(:Vétb•Îù Vy)Ñ™X¥ç׫dرJæ#«ÜåœÌ†Yª­;Vé*Ä*'Mb•N«TÈüÄ*õ$O¬ROãÄ*“‚„Ä*¯g¬Ò¬Vb•ÃűJ×&#Vé•ÛÄ*M¸c•]ÁIb•Š ŸX¥ÚÕ«Œ3ŸX¥Ò«Œ§qÇ*º<±JÉ«T$óÄ*%¿Å*¿Å*¿Å*ÿ×c•?û¿™Í. endstream endobj 506 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 519 0 obj << /Length 3062 /Filter /FlateDecode >> stream xÚÝZëoÜÆÿ®¿‚ȧ;Ô·Þ' ÀMã$…“¦± °óº£¥Kî¡Üì¨}çµä’ZINmaÈ$—ÃÙٙ߈zjÓR饪Áb Æœ"Àsêú,ÃdDðQViÃ3(Qÿx"‚¼RƒÞ@ß—0.Ù8­ ÞŽ(`.(ªõ4jÝñ ¸} “9 áªV׎¡:ø˜€T*¨a ¯­ ±ÎøËvÞMÅI# I“D{«? 2ϲ†uÊéií°L< d°qv"ç˜yª6ÙaãmG?ÜôÍ{Än¸?´KÙ@éþmB4 ó^úÐ÷>rZ üûÃÅÃíkSÉö¹.£LWÜ= ‡îì±ŒÛ ,RÔÒÀ~q¸,âíXaÙ5)Êz½©qÍh£¿–q]bsÁÕÕì=îQQ{ëË+ܻƎ’`{§ky_MÇ^Vò á$îõ þ^¼›À02=NZüLIa‚£/Í`Ü>ù;ù+íFü”÷‹2íEô D¹hcmÇU<¢íÕ6}. 1Øì^`s!ÑQŠ6Ðú»y(Y‰kî2†šb5 ¤†Í楠˵}¸aÖ8v²:x¦~·^½x ªï÷`5"8x¶ù¨7D}‘Ý%|UÁYWü„‚í·×Ü0DªŽøÃB¢lb?ÑU¼¾_q„Ä–Ë‘y¾L%w  0µ°NØa2éÀV2GØC`dlFñsœ«´rÀtQ Éö§¼[*Ot¬û{sßlÆ Œú¯Æ7b¾Ÿ£ÇÑÀÕЕ¾*cãXí2b£ÑTÉŒ°1¨ç6³KÆÜnÏWì¾µÔÿ£>\ßü–WÓÐTôårðÐ\Ëß zžÜö¢‡ zÓñÃ*~è’ÁhD̳ÞQrÇq9@(¬Ö¤  »A¶Bi|ÇqŒ>JšrÇ´ñ•QЃ«pªÍ(jÅ6%¼3wMA£×mßÏ•ûØ$D£_BD%ÚýN>BœãuK]Éȉ;¶ëÁ±Løªû•¦DE Æoy43¼O …óçã Q¾“ÇOÚS¦¼Ü£l9m–7¦(Øfí8‚0VL€êR®'¹öØÛcr45$Q'=:7œ]ˆÑõ €¦¸Ãmí‘}þÚà— é®—*!߉ ƒ¾ðqŒµ~˜$éÏ?О1Ïh¨XДr´ užõl;:'¡¡´¬„‘õðñ~åã×™à(mî˜å>od] ¨Ç„q:&èsõNN-ðÍdE<Z¾¬±aéX¾k4UÚ÷ä –ñÑQ~†…‡ZÈÊfüNòÅ·¨ Œ},WØ bœ¯5bÏgÚeZ“áÁÝï/ŽÑPï’áh­õ‘Ÿù¨¥Ç_ò²0(ò-Y&ÖMÑ ` Ûyíg"YŒ¦¼Û¨t¤![•þî‘Þ艉ÂΚ~Saíì’7mó.–¦ÖöÑn;î:n.¬‰§etŸF §\{‹Z»>ñ]”‚©‰”%ß·G¾nö±b.óŽï§Qz¼ª-Êå (y+ݰ;dJÔ ¾Þh2Õg)Nùè^²Ôh7“œÈKõp\' èú„77TÂŒœk‚ú ž†3Óþ˜”Pw#§¡lÓ[&Éù)9•©;õxÇq«”ò‘‡w„~Ô×®Tåû.N_£ÅRA0ôåsPFoA«²éÃ%yßuÜ–m»i¹¼àˆed®4Wª–­¬„ýÿ¾¢¯ŽL…NŽD‡´ÄÄÄ€‹Dœ02aßi£ôptÚÏÄåTQ z²_|4%X«ª*íT”¡a ü½¾ÇNôs‰«öÈ7í\þ®:á]Tˆ$&Pý·ááýõÀZ>#HÆøBsˆ8íJÎê×±âÆA‘hT>Sê¦Ú÷šÝ–ĉÛÍí“Ø¢’Éö€g\%¥ÑIdŽ9×0M°Áñr#?Àßß ¡Ùög­†nǧ £Õ’P—é'qfÜ3)µªŒÿð–Iõ`˜i*W$T¹¦Ã‘å”PîmRHÆñèD–SäÞ¬¾ÓÊÚ^­hôB¼›zœÊ­âoxžaŸ þ^Þ§YØ$»ô‡ºSñ‡ Þ–Œ¤KÃcËsdëël̪ͰîPO3ѦOŠ»a4"8×þ‚:5\Tb¹1>|ÞÊõJš(ÂâRÞ2›c„dÙS W5#þÐן5ÎÒ`_êÖ\’î·ü“!Þïö»é6G¢÷°²uDÿ1þŒÉ xm] ¿SU†‰ðÅý9Ó˜ *ûûµu,·uü#™ÕR['<y[ú~W[†XøóCº£²c»e¼ä g ƒ»¦'p?üv¸×ZiÛ$¡ÅxŽ» Ä>pà\ÊDúż#üÖ×’O¤ìPÚr’X¸ˆ»Ô.·LëUŽG®0Á­øã'²øû3:Ó gB'7Ê—vXõ=?BüÀ{R endstream endobj 470 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./gnpdata.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 523 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 524 0 R/F2 525 0 R/F3 526 0 R>> /ExtGState << >>/ColorSpace << /sRGB 527 0 R >>>> /Length 1146 /Filter /FlateDecode >> stream xœ¥XÉr7½ÏWà(ÝXG‰¢6Ç-’åT\>°$§J*-6éT~?¯à"™VˆÉAC¶zxè~hЪKeÕ½úÞ|TßU°:‘ЬSÎ&mœâhµ'µøª>©§æÝòúìX &ÑÆµýœ FøoôêŸæóeÔmcÕ%þî+/¨Íñ´ywjnú—<*j×âM“¿µÚ" %¢š>ªƒ‡C5½‡{ºh†Óÿ‚·A[VÖÀ°õh¶¬MTs¦îØèÄŠŒÓìêáÖÁÙd…òj8qÛmGÍmè)êwŒ:rêH&´I=à”‚Ž »µõõp  w øhvI¢“n{À)`Ò’¹¬¹"ݪâ±y?£q|þ¿ÓÑ:¨p(‡ï#N"/Õ™Í5yí/f¢½â'‡Zˆk17~F„ví/æÆÿ"à:þÆ/ôtë»YîXßòÍÁ)ö¢.Žüȶ…FCí0ï"vÖƒkêߨH[`ª3ô™x Ì`g½Žn ìÖàÜ.Y9û-(˦³A`BÙ+¿w²„bnü¦“[û‹¹ñ3×þbnü%àÊ¿{q[+úmk¡µ5 hJêVçw1ó&˜Ð¥7vôM4[»Î‡úØÎ„•ˆÒ«m)‰Ü¸|­êæae:àññ°âð¥¹zyÒ•õ>™Ï%…ÚW)ÔÙÖYÍ â«,5!ÚÙh¬æO·jøx·\Þ=?-ÕÉüÇ|gfîrˆ^FÌ£ž-ž—K5šÿÀ`ó5^<ßþ}óãפ¶™ÔÍàèä,L­ôÂ2â LØÏ"W¿sóìe)’û%2ÕG†¢QÎCõíëB æßî6tîu½©Ñ8zµ%M˜•s]gæ ƒG£;ºQºIY‹¦(ßa> ÿØ͆uDe°—sNà³ÉÑþp•4y©+©Ï—‡hSÔÁÑøð‹š^î7ŒÅÁƒãY.© óþPy su]1ŒÜ!sŒÂ¤6s”‡™MjfƒNÏç®'dýYÃ(îh£ÛÜf^M¦ûÃ©í ”Øi“ôãáïûÃå6ˆA¤SËèAÍÔ9 Œð3údô¾bêÁäžÉhÊðÓ‹ŠD¦67©¸×ºLÜéuE*²Aý„mâN†³ýáÒa¿lnÓ;e¼Þ©d»áèÏYq+]=ŸU,Ò.kÞ”ÑÁðâzXA(Ça!·ñr-»˜V$ aör–ßArøó«8Î(0ÏÞKwØÕ Êvc9á¶‚k‚[¹Õ¡AΖsr\ÜF¯[0ç»›iÇüd\Ãç-ß}ò©B=}ËàVÖ Î÷G‡T ¾÷tV±îòÙôaYqf•|§úòëMÈ:‹Ðî¥Î~lþßa&¿ endstream endobj 529 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 544 0 obj << /Length 2881 /Filter /FlateDecode >> stream xÚµkoÛÈñ{~…p@ µî’ËÇ¡W ¹^.-ú8ä\EÒ4E˺H¦@Jqòï;Ïå’¦ãp…As¹¯™÷Ì*^lñâǯ¯_¼|“g Ge\šÅõíÂ$e”Çé"wyT&nq½Y¼_^¯ŠdYVf¹ƒ§ºÇ«u’$Ë× }l÷8V]a§]þI&nðÝÀ¿Žû¿¿«Îðõie‹eCÍ`Aµ²ùò/£Îw¿ßžïqBoºñún>rÇ¿Éw½ß®þsý——oŒ O–6²e§3Yƒ“^ÄBŠÅ:MÍb¸¨È2žñª‡MŽç…7  [®ðÿˆÇmk–t"žõ!6)Œœd-wÚu }íá¸ZÛlÙÞãÚ{<°L;´0ÁphÏ«ðÈíм£Qúüšÿ‰×â¢êTñGGk`¯ÁzG hððe{&ºÉùá/r‹ÉÀÍw@÷´¶“èý2zzMšÀ.b8%&ä#&¤&±J• P*ñBšF#€S®uõÚ$‘KKÞãCìâ'Ñ2KÇÉô(°Ì 7,ðwóô±p’HJûv²Œ'ÏÄ"¿ŒEߨPÕ$êî¶+Ú¾d½Fô<|‹\︭¢²ëy‡ )nÕãºw{‘ÐZÊß^ðá6ü«‰I°`ÓPÝÉr¯“d®ðpp°w^“^a|Å€€Æ–ËêxYi«§‘„÷<¨ÂŸÆSTX¢‘4ª¬#µB<`ㆈÖt<ÖÞòû¢2‚W¼+¹àÉ]¼Sª¥¹'AŸ¢ ŽFç*½hŽ:׊x‘/oÉtyb#Š¢BEjA–E6÷Ô‰Ðléļî3ÐF2:ÐôEä*òNÕâ/ü|"ž›‘XJðš:°ÝŽD‘ܰ;µÿˆæy£!Ú¢È"cÌÂFE.þ—Yd“QtG©ƒØ(˜÷!¶nŽ›Y”d‰ºV²<ÊQä#&Š]>‡ct ìRæ1ÍÌ#—8132ÑÌz£(O¬Ÿ5`cž‡Möë°±ÏĆÖ,½³(sÞ ˆ“d.z% W£,ɾJ…`–ä8™^FÀæQáÌ30HF\Ë* ɧ`½ºiÔUù%+ÑK;ÇËÏšÀ•ì:q›½$žã-cÙDÒ®¦“-1ðØLCv"üÉåvì¯ç˜EÁÎý†¼ôj‚Ïíeà#ðGެóÔ-ßr)…‚‡OšÃv`Ó &:ãNœAóyœ{ ƒ¡#¥º”RÌÈ󸤛ØV"Ò­¢$…4²“7ŠÁQÄRn œfˆ#5¡Ô™ &„h}¥&”ºxiâiù·!굘â׃gÙŠÖ”åïx€âFbêG/Cë·”LKp6$”8ÿ{ÚUâ§M#Kê†G_{cÖŽ)ÁƒUƒ†ËüZÒHI ξÖ2¥“¨W¥to¾øYWŠ'¦ .HG]¦œ›ñd&N¢4vꬕW-˜Qt›Eù¥ÔÌÝùàÁiiOCêA±«æ’Ïc,+Ω·÷aöîX\*ÂD‰nwRmòGly¾2YàÚ^ªy¸”D-tu³÷: ÄÁN xu+nƒ÷°¼Ä@Ðð!ø=Ï!H}lÁÙ–;ú樚¯*‡Ý^Ö¥N8P ¢ïEã y±\Øc‰„ÆÜýjôs5š %Sò~¥×ÐóžJ4s58 =Q‘‰4Î9Co$ªµ@ü,ÃêªD®‚ Ô5»Ë‹5¨¹ybá|6Ÿ˜ôñv•´E g¶LG#è¬1Q霾¤ðU _z”°YwqL5‹®Ù>ŸKÝšŒË‘Û€Œ%,Ëy:”«v$bÐsìZ?›¬ÙI+T|viÁ¸üŒöü8¼*i<8” Ç9ú(zOª³ØõŒr³±³ÅfÎA¯ÆI½©›¹tÃE”¥A¾¡¹¥MGùF’3ž_æˆ ^:ÊxÄ@ÍÁM!½{ÔäëPÓ()FYŽ’ñå›,O´€žÀü< 0ƒ5¸›½s€fÐ0É}Û(=¥6DÁN0æš0 ƒ~ /ÈhwA¼€Dæ¹2k D?[G°4¶”ÒHIÕ\|MêÒt PfT«Åa_̶–ó JȽ’†ôsd6YÖý?atd–¯ö{!Ë–Â7> ¡ê¦œJO  I£f ½Ûnï-5;Xœ(öÓSGêFå#MF:’uÙÞIy{n8{ÌHd&,ãÂü­D†hòØ—«°]ñëâ]H&w!0‡ó†žÅí#ÄÂo$L£ J6ŽŸ%þb+Wßúà„²ŠþeÕ‰!iL½'MX Í$*®£·Ÿ³`xî·±à´íÈþ£*ÁXƒFDèDŒHŠ2ÊÆlð‘üÁ«O­×Þ>»Ù‘«¢ ¶ÆIÉ$ùáÐ[H „µ@~Š{p?ôø®xe†'^!.ña’ž¬O8Hf@þ¢gÜ5>ÜrÍ–¦H¨‡>Þ{-⎇;ÎêDº;Yq§ùÓlN6Ïq1Pë4Ö4I䟣2ìLÒ8[+åqjÎÊ$´g í¯8ÒW±6©{p뙆ƒ\b§9w#“f‚ÿ¤t‘ÍÊ_}e·Ö ÂädùÏzÁêo©Ýš(Ͻ3ÕúÙ ÒHÜ5Žý0C|Ï_áù™ÐœÓ§tÓ—”51Éç*ݹ]Ùœñ} +Íó¬çzz[ËHp4ƒÙuëSw¯6'™£áÎÛJ«µ£K1¶¹Î€›Ë®¾oͦ\þY,<èéIØó·¤]Ws& "(›g¿M…±Œ}n,“L\ìô: ³A\G¿H(œäPtƒ³á³mwþç;ÜAÖŸ[+©2õÒA^Sé#}þº_bßnR××ámÑPhºÂ»ø器%3ØFîÂÐÇÄ ¡ÅÄ€óïì]Aû8k-hˆJ, Øø‡*úþáúÅÿn endstream endobj 424 0 obj << /Type /ObjStm /N 100 /First 890 /Length 2478 /Filter /FlateDecode >> stream xÚíZÛr7}çWà1zX ·¶\©²¥UâªÝ$e»*•FäHↅ—”ó÷{zf(‘IÑ&%ïzý `€ºÑçt¼5Ê(ï”ËÊ[RŒ‚X¡t¤lb”¾~æ]PÁ£î¢ŠV~³b (“b:Þ•#a˜¬ÈdipЬ•-*1á‰QäÈ)PñO‚W­T‚"Æ?¢¢ää äÈ6v¤e•FYb‹ D³#G«¬KòÄ)ëK‰•Œ EeÿhÊP“OÙ&Œ(/‹“ÌcU„::K‹YfV1b«ƒ ¨ÈR \ÌFæ Š‡Ž±CL²¼Àš÷ +½øìc2Tð„ô‡˜YäUœ`p:àTÏ``q²b˜ g¨%PR‰V‹ýLNLÎz•Dϳ`yxËF•"¹NÀB錷æ *ÙË"²ÊFöˆŒÊc!ö¯©HFFS¬EFMìC›Ž  g2†DÛ0b#k$Ϻ‚õQ‡ŒGFô`rdЬd 2ÈI0Ýáp‘ã΋âL]ÀLpߨâ—_SØkf£a£ù`ð¾óí·›»Áð\ÐbSŸÔï|<š©/Tq56º~ãKÈ‹:4D0Ûæ¬'·Ãž[9Ó‹(4Ó¢Ð?ptá6ÚQýâì°©ë¦øi2î¾­fêB?«â]õa¦îä|÷×m…†òºê§¹ͦ8NV^ïoªéx>éVÓÚ­ÔþUõúå«ñu!BÚb…ɶô=f+'‡66Ý_ŽFcŒx¡|+¸¸.)ï$8Tå¬?•³J}söwkˆ3Ù›‰O0㸷µí]6@Ëõݤ¼½éw§êÇùìv>;©×Ý›w«‰´:í´=içË£“Õ uuŠ·óËYýSR§ø¡J›í¯ÊiU«´ø¾üYÍúݲSücÔ÷ú£ëÚ=Ëj÷Òmòo¯ÆƒÞæq/Š×§§òJOë|¿4×âfÔ»÷‹Ÿû£—£iÿ¾ù¬uUAC¢Rè$Ãþh>Å-þ˜gÕ ºš4|Ñc_§Ó~q=)ÿ¬Š²;ŸUE·?é·WƒêC1ëzU1,»“ñ¨¸œTèƒWÊnÊ/z}L1íO Ý÷ª«b‚¹‹. g0(ïÞÌG×åd>”óY1¾ªß‹n)ãMoËnµf¡µ-mç?û£ß±Úñ¤WMjK4ï‹ï‹×ÅéÕ?Äv»0z¢ ÅÿZ²š©K!pW€‚~/ëcúVßßø7Wýëù¤Ò|"çç(R¸l0+N¯Ãìð†.' \“­ÖÑÓ.)Ò²â}Çüg¶ÜlÖ$hj¼fßOµìœV¼ÖVç´âÂVÝÎ/?^þ[Ö.#¿ªL:È%zà’|>Ð%Q#º°—¦ômÙº*¿hç¶L_žë OäºÂF×þ¯\×—`Ñ?}Ü»l1|…¶½AŲ68PàêÚ✸H€â’6i3´Mç—S¼ ›Ô^ûC¼{IkF<¤lXE0I#6@tÈšòf€ëög•þc^Žz3Êl§“#Š“f@Ö8Ùêˆpå3‰C–´üXÇÚ"v“ÝbÄ:6m¶%q&奣nlÆ. $‚ þý|[h[Ž`D ¾f´„~Öd <~vm̉ïÅqÅŸ.ŽP²`öbnËÝ„¹Iä„Y¸Ì%eÈùxý0oÚgÞMýöˆWؤE¤oy#µ\ ‚cTycØË’{$R~ÈL%×JózH’SòñÔô§ò¡<Õ6¼SrVMÙ„Ð’±jJÛ”©å­ì>‚§¦<$ý÷ð&´8>¹w™‡4Öö•‡ìÃC¼øD$|ÒVò°6hWç1[‚ÛãñµpŸŽd@Op!)êÀ‚´YgŠe©à³kI‚&{Ę_@.Í:Ò’ôtÎkñIÖ' ݳŠÒР¤ˆ#PMh\ŽdISÒ1¦]é‡|ýQËJ² ^Bèä»æÍ¨ÞBº=¢§Ìˆ½xÒ DÚ:dp•a‘w F[[Î?ðîˆa¡·ý4Ò˜ølÒ¬Á:‚8 ¸„Ê)A1å£=Å»ù…ÕG¤^ȼÄSÒNîì'ˆ;"åbãÏ‘ä@Á%«I`ÀÂß8û˜$~Záä#кÜlÒ$ÇE ØãîÎ8›p¤~¬×ÿ,y±îÆ·£ïJ8½¥+_¡—Az[̾‚Ñ+x‹0×Þ²†=dåu•;lh¿jÉ]ˆº¤f1r¢ùMÿkàJËàú[y{uº,gÓ£´}šÏNKã.¿ýúÅ|o' î¤S”Ï ˆQ¼ÜÒáKC1|4lõÇüjî4Cu´0yo€¶N’^"’§e-v…g•›G’W;Pmèj£D“;¶awPvoåÈc®†Ã£Ç±p÷áåÖ”NØ*ë#(ÁgˆêËáN"¡\ò;H"\ØïòÖJ7ª¹j„Wf€pØÝÞ['w.A[àà?6d]ÁÆUpÛ+f]Ú<Ü|©k§7à¤\<èöWh®A¬à¤·â$-ðе¥oËЖÍ„vñÁ­¥°d¨!èè“ܧÔ9°\eÕr}–G‰Ï•“46`!Å‹ì’â)2`$1Ê%SÄ2â:’6^îÃÅeÿl)0¸‰‚x'FìÈ×ÇÄøk ¼½éóÛ£©Ó¢w¢d)ó󈲖¿FÌà ÓÏ8„€3°¯“Çq§’9¢Ø€ y±„.Ö¬\K>ªq•ùãR×âoÛ VÛ|ø¼©7. endstream endobj 563 0 obj << /Length 3354 /Filter /FlateDecode >> stream xÚÕZ[ܶ~ß_1P@x^%±FšÖ‰sqÚ¦z‰S@;«Ýxgf3š‰í¾ô¯÷\H‰Òrfwc§Ma¬GÉÃÃï\I9»šÉÙçgŸ¾<ûø3åfJ /½š½¼œÕjV¹Jxãf//fßZÏ¿ùåÇŸUeJ¥J#dcÍz5WÅ[øÛÃßv¾ÐU±½Çn¾0Æ—øuÇÏ/à9¥>ìà¿vhãÞø‘G€ÉÏd`7þ>{y¦àAÎÔ¬6ÂKN•Àr9[®Ï~<NJÍÉ#5ÅnáÃÇ_¬•ýa{ögøÛ´ò¢Ò.vyÜhn:ÚÂH#Œ*g‹„Ǽܭ7ÂjË2ý,ꪗS…’¿/l-‹—×ÃÇÏ¿ù? Ôjƒïºx%• bÆ¿ö‚ÉÞàÈøášßþÑ‹%Ê} ;PÛM o›9lÆÛeqÛ #ͺ Ãí»%÷}/Âh¸mWÛÝ0‰*ÖÜ´Ú0”œJn|%Œ5w±4uKÌJQû $™-¬ìVõl¡ÖsÛ×íe`ÄçjG× >+MÑá‚~D(ÒŠ—,X+m±½d ä`{µ¸ ;ò…‚´ôáz€|€.õùiîJÅGëà¿'¼mÒh¥Dé}\Â×Lm¸I$!bt€¢z›“…%Ju z%dº Mh«ã„¯dÔnÎY ´0³š¼ tFhßïÛ>3ØW“9•c݈ ãéÔS£ñÅ·(â«ë¹®m_9!|®Xþ¶Ø…׫þßᬶ›a?q# âÓ¿Y„\3Ž´u$Ì޼ÿ [ª¿Îk[Æ_Ï ×0Ñâù6òpÓÏ€ Üå÷[|AnɸáË’ìž.>mðíy#{ÿl-OÿGæy¡µ/Ö ¢ð¾ÔEÓu´uh‹j×ìs S``Å \foKaJ3ÂÝY¦ÖyÜ•åw=V².E©Ô, m$/¤ã…5üé?íöAÆËCPE°ODuÇP!á’ÛØ­I!¬ ý°D|]óà“¹X÷W.ؼ8Ô¶1rB;Æ}sÙÃ}  RÚ )ÍT«ÁÎ2¯ƒ <,Ù|,Œª­oðÙ ð*#èvŽOö,p°K‘ÉEž×ÍÀ½@«Ù·¬Âh«àÆUÝk]ü|ÑWc¢©ìiˆ!Æšn5˜»¸Å×«Èø|¬Æ¡°_Ò·Ôšbc†0@S(:’)±J×_r‹ƒ·A¾û¼7ñÂ9ŸàOés Iž1¬HîÃ-Û‹ æ]Ëíýgèû¥p³ÝÕ,>~ úü*¾D¡-·ç¸€'(4MŸ¶;òÞAøõ›-‚â !{¾±¡À¹êây }»™DJùù©§ò^íLP¸~î)ziq 0Âr‹{²&Àß¼ ž—8Ú”MGqÄ,Ì/=b¿–G{\yF÷žVŒKÚî^‡Ù€ºÙ„Þ ðl…a»áq{tÓ²9L4‹ö —çõBŸö-©Ñm0"m I˜`z½X°™©GUIqÐÉä\^-jß;FRfZÑk ®Zž÷Xd-²igh+EmÇ‚þ67 DN›¤Ocóë6ºÁjÝ)« x”ÒN!õôälÐMŸÓ gµ•u³…¶ffÿ͘’a€§ê?xWpƨ øøfü1L×GôLaYŽm"!àû G'òí¤DÓ‡£‹‹±-"`|»” 1™òÕz󖦈î¼ Ó€Á ’B'z¦€³‰`ׇ)ô ÿBŸes;ÎQbr¬ÖÉÊŒc÷ÓôéÜ.˜(h ì3ƒ¤Wmß” 1Ç•îá;ÖB£‰¨0†Bvfáò‘ä‘ 27FfU‹RÞ M­†ÔrkWü.Î'ï£×ß4c˜=9mL©‹¿ÏkSl‰ù«8ô?/“Éy̯G$ú‘»ŸdŸæ­¼é)²òUËÚ=Z@êW' ‘ŠàY!°jà*1 ŽGGK³R(àiQ‰Ê—?K¥QÊUU†ðà”<‰$E‡‰=ÑÓ#ÃU|t—PªÜ`8—à%¤‡G€Z“š)£DüN#ˆŠ4Ö‘bòÝ¢¬ cqµ¼§ §qªjc`)D «^‰o ݹ‘‹¥¨\o!ý=~à { Ž%BÓðØôõhO…=ü鯜ìb½Iûp»éúŒ(Ô£¡%_qÅ‘’{ôÞq]ºå·i²Ôîx¼°+²eqiÎYât£è"|,0ZƒMθͺLêºxÎòÅž™èÅbúÚþ®¡+RýýE> /ExtGState << >>/ColorSpace << /sRGB 569 0 R >>>> /Length 512 /Filter /FlateDecode >> stream xœTKsA¾Ï¯è#h»ç=×ÄGIE­ÈVyH倄P ”þ}çÅ2AŒèa·öÛ¯û›~Öð ®áL@Òàj JKtdh$<ÎáÜ‹Ûo.àr"‰Ú÷äò½`4?ÅÍ-ÌÃ8>KÁÉÞ ÇèxFÁ:þÇ8P–“þJ°2()cg¶ƒÊØ›„ƒG[콋X*BM ¶Y58¨ôÑc% ÚÆ^‡ª±W>&ߨOREþ–0¡3N¸¦X깆zb+˜óƼeåK z¾À_K°ç+løR‚ž/ðÀ? ¨ïÀ_t5ÿ»í‰ü·wq^Ë8>Ý`‡•(¯‚cËœíR‡»5 亥xÕeåç]9¶Srã«Ï÷•©Õ®ñµÿàÇ€Û˜ýù¾*zyßø2íËf1iT>–º@wl.õ1‡°‡ 4Jyà <ðUpÏ7úmðMÄ£&ÏÎÁØJþYv„ÊTúi5†A@{5­…¦l[Wi•“ÒÝQŒàÞ¸,ö9³­j³ýQ³3¹Ë*X¤Üì›Á‡ÏÛùã0¦D0ø1ŸÁËén W›¯£«Å÷ùjñm³™ o¡ÿ6L'õ9\®ê¿Ý%ù¤>Ý-6÷'µQ£Ë¹i§L(b5®!Ä;wpݵø6Ö?g endstream endobj 571 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 532 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./CO2reg2.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 572 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 573 0 R/F2 574 0 R/F3 575 0 R>> /ExtGState << >>/ColorSpace << /sRGB 576 0 R >>>> /Length 2798 /Filter /FlateDecode >> stream xœ™MG†ïý+ê‡-gFäçÕÈ»–mFÚƒåƒÁ³2vÉßøÈ®ñvæê¬ÊŠŒ|Ÿˆì¼=ßòövûïéGüûæá§}»={yJ{Ji‹?_>ûíuûãôó/[Ú~;åí9þ½=eùÀöâ”iî¹m÷R¶÷×¶çêòÝöòËë.[ÛÉ®S*ûàóu—áúH{™Çu“ÇõÏx~þqýÛ¿×¼ßÃë§oþIÆÍ¶Üw¿`?Lç<÷ž·Ò÷JÛÍûíINO·›·§ïnôÞ3xÖ{L ¦ž÷TÂ`¾`0—¶÷—óà:å¶ú^!3Éeî-kȾ¼ž÷q–áúl;ÏãºÉã:aI0uÝåqݸ®‡çÇ— oôð¢%ï½aNuOUß®>™¯mŸü•ýêhj¼W{t¾üÙ\’ì‚ÏÂÂâ‰|*I?éiIî´Ïí1ü\®¿Ômýÿd>{ /RHuÃΟca“¦ÐÏO^Ü=|Ú~¸Šmº=¹{õë«§[Æoïn·gwï?Þ}¸ýði{qûþÕ->‚]øäá÷7Ÿþ²Ý<ÿSÎ>úÀ<‹äD·œýáþö·7¯?ÝÝÿu„‡Eø¸_ÖäA{z“Ÿn0µ‡ÛuÄf‹ñâBò<šS¶ÊýíöïíÃá‰ù OÔYfÓíæ~ë{ød²_eIޱ—®S|'sÃå›ûóKþõðÌiˆAë{/W oSÿ«Ý—õ²á’ø„´©¼ÏzÅðšö:Õ-F»|8öl1¦¶öýeŸXp¬4öR¹f8Áâ9Üûâòáp8ÎJÀrźQûWG.sß©bÝHBpyàY8–©ˆW_þðávx]ÆSJº§‘;ãªÀ#d¸Ü«$ÏÅÃ{Ѹ_9:þ“UOR‘\>N•³îùyMä ‰uò¸|8c¿åtý²Ï¡¥’']1y$<*Â~IüÈh/C°.c ŒpBJÀ`üRG |êpªÙ÷:æ$ëXT2’ÈÅleKÇÇO#ï\UJáxEð.åj?È®÷†Ì¨NSWCpÕªÈ"™åÎò³‰†‚T€å™NSµúGž$BÄtR ŒÀ0ûõÌ’y¢m|nR)eLÂîÊl˜ÖÇgbqö<¦Í.öÈtÖñb@ˆËh*‹jÒë\mÕ7ÏSÜVtÑûƒ—d:éó‘cÅꩪãËØ›i{žxϨ2MÑ–“ÐZ­äŠÕöþ-›gŸ_C˜§ê¢Ïø†iû<ÖY’YÖMõYè¢Ïï¨M“ÎfÔI+­äÂ4mÏËeV]u¾,›f}>²ÕoI!ÑYˆ(zÊ/¢‡|ž°ÞÙt몑¦º6ÕS~]ô:*˜ÞUKA ]Õ€D³ê)›Y´®YÕ­÷£ªˆ]U™Èqë\Õu§l÷Ϫ‡:–hýåШÏTTca­‚Ë:ëM¦uãRO(ÑE¯£Œk¦›ŽïMA´æ›´ŒÉôÔçK"LÍ»¿¦YãÒ-Ÿl}°1§åO×ëXïlzêx¬7“æ£æ;'’BRó5«®êCÐUihNÄ 5¸è‹‰®]uW?Ð÷©jDâêOŒÒPüZó‡¥Ò4mïõV?BtþM«2õ'½?š÷ƪ‹Îë0Ý5ÒIõ;õÆz‹Ak>s×¢-^’MõÐ÷—À5õÓ¬óÁÅ u½Îà@©„<8ƒr–ÕÓÇÁQÙv‡ƒRÍ×Á!!8°#r:ÀɺP нpÔâÆåà€ŸæÀÍ5€Úîçà€Ö@.p@ëB,pÔ&ñ8ÀMÀQµ >À])€ºµŽêˆ]à€žõ ´Fg£v‹ôGífl ÕuCt à¨Ýçëà¨ÝAâà8´ãüyÇù~Ñ)€CæÁ!ó­Õ7ÖGÕƒ‡Õ7â‡Ä¯p@—YÀ±Ök£VKôh-8ªúË k‡ä[àÿŽàì-’Ü)€C¶B à€Vc[à°}u€ÚÀãਠŽº@ãà€¶û98Äj4åô]½pH–80 5²ŽâƵÀ¿#€ÚÀìàöbp”æ×Hs»îà€æ K à€ÖõYà(,a;ÀQØÝÁ!ç5€C¶YGq/p”e|Ž’ Ü Љ8xh8°Ì“8 ¹pàÏ&‡tž%€ƒ›B ¬a9ÀÁîW ì~·ÀÁÅâ»ÀÁl _à€¶ç98˜Ì8Ø íöüZà^+pp²Âk6ØK‡iWÇ:&xÌqXô·]R‘ÇRÓúøòöt¨i|åq^–Ñ5ÑU9ÉZѨëÈî²áXjd !óŠá]+n©#kNýŒü‹Òòº˜‡í¡<:Ÿ!I¡9„+ÙœñÉ+g¼l?>ºj?ãŒGïY⌧jpÆ#g¸Æ3ÛžXŒÇž™±9,«ùpÆEy`|²=O%2~Z1´ß¼ YŒG¯M)0¾Óbº1^¬±Æ#"ÆäÕVo–Vs8A‹ñ…ƒñsøçñ’GvcñÔ»å–3ž¤¹*ãeÃéû8ãI¦ÑÆËŽÒšË/¨ÑõuÆ3Ûè`¼ EÓÓ/h)¡9d¤Õ Í¡ì&ŒgÜÖš;c<³¯‡3^ÐÑBsÈHmžñ ¦isáŒgvf<×5c¼|Í7ËÁx–´Hã¹Ucª3ž{ZÍ£2ž‘6_c¼X¿5ËÆx–fÆ3š•ÏÓ™âŒç¹ÖË/‡QVs㋜XƒñÛXóÃ_䛬Ð,£1É_È›Mg|Á²iMÆY‹“ekçæehϰl “ÖÕ0[“óë|vµéo榆ùéFpS“}L-gK7µÜ¼qSK¶ˆËÔÄóJ05šn*njØ„sSc©ejØ„V(»©­ÂëljÙ94.LÑÔ’7njm™¢›Z›Vˆ.SC°rl\®ö™©±Ê篾LÏM-{cæË\¦±L--“3SÃÚÛ‰››Zòw™Z.ÞH¸©I=N¼H^;S“£fަ–ýynj(´¨GSK¶)—©•u禆BÙNЖ©±²ËÔì5‚©Ñ:á2Sô­±X¦–ËÔäè–¢©%7)75IÉLMN Bã"_çp05BÚ¦\¦F’‡©É4z4µä›ÜM-Wo¤ÜÔðX]¿ejˆw¯ÁÔÈO<ΦF~B榆x[ã±LÍOp—©IQ0µâ…å25ÜÆæã¦†x[cᦆxëF^¦&ñæhjˤÝÔo[75˜ž`¹©!Þ1=Í751=-2ÜÔÄôˆƒ©%‡Ô2µäèÙÔ’åó2µ\–‰™©É¿¦µqÓÓ÷÷Æ¥ ¿­Ñ°Æ¥°Ÿ¨ }8Á<ýhŽô endstream endobj 578 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 586 0 obj << /Length 3740 /Filter /FlateDecode >> stream xÚµksã¶ñ»…&ÓÒÄÂ’IÓ—Þ]Û<š&ît:I:#Ë´¬žޤ;çúë»/€ Yr“ñ‰$€Ýžw£Å¨½¹xyuñâuåGºPMÑèÑÕíHÛFUE9ª\¥ëFW7£ïÇW“ÚŽg‡‰/áo¶Á&SkíøeK/‹ŽÍ.ñ£ÿY&Þào ÿìøûçw³wðö~bêqKÉ‚ÙÄTã÷¼Œ>~«ø÷/ï6¸±·»þzoßò‡#‘[„ºYL~¼úÛ‹×Ú¥;³µQ¦ñ°qÚ“±8é¢V¼xml:{Z–z4µNÕÞó‚ k®ö¨¦*h¢WÆ–£©VÞÊÄÿæ°— ð’Y?Ná°³9󔞯'S`CÛ l7{äâMÜ­09²Í¬!Il¯ä ?ðg\¶\“( Ò¥0þSn´C^ðã·o.FßÓRá+ÊyÀV!¢/”£²öY<‰DMQ4ƒ¥‘=Õx>Ã}¬dÏðx‡ÛØó;-¶;ÙÙÇÖ $R(¯=üZåʆ™Žl6MÅsK£b³bò á#ÁAÏÄe$Æý¸psI²âµ´e=þëøçËWðo‡†ôâvÖðèz :ü5ÁBÞÉ®Q‚uIJ_”²†Ø¡üîq õ¤Ý3‚À ÙÆ;ÔžwèWÓ í=1©è³ç Yi{DR@ý5šð~ÿ°Žœ»Y#t‰ØÅÄßOHqÑA]…¸Ÿ7<éä=GÙÜñ`Ë›†µwb=ÓÕM¥tìü‡Â¸¬ÙZ/f[=a¶µ*ðC7 Û3;æ#Ki6– #×Hì‡m¾Qº¨Ï Íž¦­s)U_|C¤¥2¥ 8>âÃ\á2ëA¡ ÔŠ­ÍNj¯êª”¸!šhµߢ"¢ã˜'æBHê²Ç¡Ryˆ?Bmpy ²k^÷3ü¡U}EvÃìß"àÍ•VMÔ2× ±vÝ’’6š=“™Ø¾†—"o´\"Šæ±¾~§{ÊèkPÆ(ñuØÀ­b»"Ô9é+dù?þ—¿7Õ'7ÃʲQ5D±³X™¡`j©oú>"+GŒÊ9JUu{ÿ-d©;ÕÀmÏÐëÙ¢çõà܌÷ŸËõR@³äÈ8§"ÙAܬYÒžVâ~oZž@~—©ªPÔ˜ë?¨àÇÖ ï: çw$dÍ89Nç•+LØÛL²§›IP-‰W‚c.ÏŒŸ °2ª,ʾ°>›L±¿éñ·ð÷OâvβÁEt‚ÂÄ«jH&[ 3[ÊÍHíBÖˆîóo)÷š ©Ñ›×E>§¯3¸À•ëV2‰{4än{Þ&¬ØDÍÉæ|ªì\ŸHÑîïA2ÅçBéíÞÀº·qψ¦]ñ$'Űª‰‘*,nY¦.USÚ¾8yDi Æmá×:¦"È6ÛÞâ¯ù ÚéRéÊœRNe©v¥JHñ~RÌÓ!ÅkÝCx"¤ø4¤L+]Ž¿¦&¼'Eëóƒ^)ljijõL’|‰R&s6Œ+‚I¥æžÑ:Ý4ªŒVñÌ{C…ŠŽ½%‘ü(·G¨¤´J˜u”•ªk—"z)~à¶Ú,`ˆ(“º¯‡ˆáJì'%Bã¯ØJ å£M·ò¹¸ô}âËÿòH4mÕ!V„š#ƒÐjålOJž‘=å³°C¼vMw릿ƜÒò¨{¨oµá Àî ‡—„Flγ±×’:®ÒÚjV£;Ñ1¥'FIaÁžSPî}–$Õ%¹w¶Ö0Ôóµ+ñ·Ù¾/›¿EÜ9‹ÄöLÙ‘Tîf2—gÜgÄ^‰±ôýv+T´Ù\ÒVÕÓQƒ¤Äɳ-oj¤Fα<\,.¨¨)TÕ©è1ŽÞe9j•®ëG DßGMÓO…`u6˜G*ñ C²°€;¢ç˜/C?&ÞÓf™ŸTš‡( [ÅÄ»´ãï¸ö1¼9ͧ$IBËn–Ñ£†;2Ã{^#EðJ@"SÉ|Vv;Á4ǨÿC*RÙ½ŠÝ@Bºö…zTÒÀØ‘ÜA!àû£­ÌöÔÔ@ÂïS™ã¥LÎK«cÖ¥•Ã~ÇCp•ËÅ]ê¡mEÙñÑöz*øJ!e¤‘T¢‘k_ì¸%¹ºçÁÙ|Gî:¼®Vüð~â<——ïÚŽÚ Œ†È9Ç%p„y4Ž8ï¹#ĺ„ !S¶¸/›áË -âžH½Q‘€9¸²ê {qÏ5G!§À†?tÕ2½SŰ!¿ÕÄgØ•F$0˜isjŒ¬ô9ä󾆠ѕ(²†X³®x¢AÞùÆlmˆs€û kÄÇ ÓÈAm©•é‘ÇÀ#M~Ç: ŸôZ„£ÒB\Jhh•”]ýìAïB?ÍtÛØ´üjx$«e“ •ÄSmߌÕr£OZ•Íø_èi„†»´I \bJ‘b–flNšC]ì:0àGóíÓè•·<ë›4êRG&«²Î3n Ö<µÌaKà'×@{Qqò(´:›“ úœíO¢õ³CÅÌY=YDT—¡ƒ*Q>vPæ,ºÎ÷&¶qÙ`tâÎ!ÉŸ¹:ÔºFÕ.©CµËå32]¥óšt=¶)/2 §Š¨!í‚J±1¼ø‹LÕ Ð=52+(y¤K”«0”…ñdÖs:§ƒrZ§Ez¦ƒ[úŒôË(Í Ï M‚zuuñÓ…&)ꑚʙjTz¨ÑK7š¯/¾ÿ±ÝÀ (¨¯=z ©kl×%&æ«ÑwÿàÓ»>½˜óJ‡Ó»»—9µSºË‘:Ç^uòÊ2³t‘&gĶݧ°¹ê¨~ é›ˆðcì­/"Æ2䦷_«¼£jïbÿÃiäcÿÃQϼ“ôƒB¼JŽЬVh«M¤úúѱ $­®I8Ó½uµ*ϼ֪ÐõS‚P=±ç©ª=P¥îË«éË«è†l.p5wö‰LÕ`žªðfhö=¼àhM …Œ bÍpµ†'úP`ŸfdX¤2¢@©« "#( ÁK`­`°ZŽ*ºx”õ^ØmZü2¯Aµ1=´'†èú‡ì> ð›óðS±îMõQD}Aý<ׄ0ÁCËèú6ò†^•=zìßœï.ž¤”Þë;¬»VÍÇy÷¥K÷¼]M Ô MRz೤Ü /GŽC0IÒUWާ»Z€ÏâqÊð`³PÚèçié¯ðêåI¯î:¯ží&'*Zf™KG43â'„|–Q—ÊÕýîŠÍÁç+œuXÁT|$Ò^øl§ßužt÷,`þ^*’Ð]NO¶aî2ÛÒ]]ývbFE`I•=_Ï_ÿ°ýPÀ-0ðɾ>«©¼€…µÏžeÙ¬3­ÀΛô°´´]‘J'òÙ6eÇ‘*<ïÛÐþ&• ÷hÊlŸU@Çnº;”Ìæ¼VûAÎkŠËôzCÒ…ëÓd£¦q‘eP‚«Š]CâlŠ3:©ì |)Îi³­6¥òÕ‘.”©u¯3µÂsóVÜ^WúàJê+Ö‰ã¬ñ@kA|JkÁx)­GáⓆ!%}Fºçfµ—“¹0%{4B%ü>Xr½›©e¹ÑÈm‡P2÷¤ëG‹VÓp›€›ÐD…·uÍ/1ZÁüèSâ¥"Ù:ºåùÔº\psßµ=y;"šwäî‘ËlêÆÎvŠE:O:\ܨɰç¶cte«$ö¡DûèwÕ« !Gpf uWÊ#~œB]î&ú~ú?ŒX•…z"N¢0<ÂâSŸG‹ÿE´˜óh¸èîÁµ"å]’ÅÄ‹Š:Q±:É‚dÖ)¼î ¼ýÛLG·k‡x±+¾¹Éæ¿P©¹Ç‡ÞÃü/y‘²›ßõvÔ‹×MÓ׫)ª€WE#Êò'ö¾ŸË¦ möx&KÄÇ)?>/}ˆ=ÅÁ%C¢,ü}Ó}ºîÿ4<¤ëSþ0уUØ>ÙËúY¯”Üxè;>†bÉM×ñdöµ\¡9ß}r\œ^¸YÊ÷]·©_šDÚÀs‚ôQbº„*]dÃ]ÔLª€%:TK!„‡sòu"ÕCÙRß'¨g]ÓÔÉ=‹Ã`øps#œò²6è2Ã-nøá}8sxà÷^ƒ¶~"–ãäÛrÊ|-ûùæÌ˜ÓœéçusNÐ ³bÔaüžÔ˜3©¡Û^GüÕe¶§ý¿?Á…ÞÕ£K^¼l~Œˆ??öù“{Ofa%áªñ×Û =ó¶¯a³CFãªÜ­®VÔm¶ë¦Í·ë.½^Å#Ș j­·vÂuŠB²¼­Ià‡íu<©!~ާ˜EÝ;Å„×î&*Zú.uË¿ÉA&%‡½ãaõþVü¿\îÅ_x01?FL!i1¥ÜW®²‚ÃXÊ$¹ËWÆyAïp”¾,Ã¥Ù¡݇Œºë¤¬äBú]!o” ÌE6"ïWbÐŽ*°lL].Rr¸âØŽc:ÝçÅý¸½øCu+rÿ„)øV×ànXsõ‰@4D(WéÜaµÍÊÄ~]”±JI£.üUÂB¼¼[3äB¦áP% …çÜm?ÞjAW \g^ ˇ=ò4'ÃV¦8¢,£qC|†áLeWa‡Vvæ´¶¿C/Té„B—Cd»H®ß2,°ôØ&YÌ2Ñ©ý>ÆLãî:F÷ÿðûêêâÿëWw endstream endobj 595 0 obj << /Length 2388 /Filter /FlateDecode >> stream xÚµY[oãÆ~÷¯}Ðp–3Þ¤@/»Û-šmZ¸ÈÃ&hI–Õˆ¢BJ^»¿¾ç6Ò´wƒ´0d 9gΜ9×ïŒÒÅn‘.Þ]ýáúêõ[/tªê´Ö‹ëÛE¥e^ª:Ë×›ÅÇ¥±«¯ÿòúmYÄTºÈTZ¢i÷+½|€Ï>Ý*1å²;ÀpX%Y–-oñmÏãoaS_zø· s¼zƒ/™l~•ЏSY#ÉrU óaëx…lÍòÓ 8ny¼nŽ<8!÷îÌH|'ÛAVï[ø×àh+çènY&«¢T^‰.~HMÎdcY •6åé/«Œ5ŽèA(ìÌQ¦ÂÅ€a­ŠLŽ»ŸÛ,SØ1¢‚ u0FßµOþþÝ_ßð¨AÝì:´Ìž(àÓ*Þ§®Ç¨Je-H”¥ªÊ-oö»U’›ly‚e¤eQ(Z/ßÁç|¾c !åaø7øqެÜÂç7ð9 gš´T/5|~ ldYŸ~õ ½šìû*,ZË>¸XÉâ‘c1ÑBaŸ_<¿»[˜ÓBP#X8Ñ™ÊmÍ ûí*Ñy©—/à­HuŠCPs¬”§ÒŽÆž¬—W7~&;È÷Y¾·Âî[MÏÉ,F>DB¹ebèÁ ð¬ý‰ù»SM+¢oäùc´Ñ&ÒÀg7œøÏZøà>߈Óãç£Ó;%Nµ ;ßløkŽ7‘ô *}mË;Íé8D¯ï‚‹Û¬±zÆç|¹ø{‡4÷œ@ñx<)ßÎ!w’Ä9UßÊ=flþãÝÕâ#í¢õ(ƒj•”9˜§;##'"uyG×®Tܯò‚³²«N|vnôÅ"?ذœ7+S¡ªpì2Ž·ƒsø¶9{ÿ%†·Ža‰³‹ƒ÷è^˜9­.@ûÚž)Ú“¢¶¬e*(ÛñüÀä2‘a-2Ð –)ü¾œPvª` »7½FÊ~Ë«§0ç4§KPMbŠe7øÔ°çj BŒ¤äŧžõ&"mBúd^[ôò ûÈužÓŠG$ØÖUU°Ò‰!B¥œî8 Q¹lG€^Ѻ`ZåsmøËM5[^ÉŠÃüÂX@'½Gõn›C˜¥À³W3¾\¯·Ñ åîBaÜËaf ÎŒ¶XPáeô@¯ÙwÇ€¢Ðwˆ‘’$˜)È< ¨Ç€3“0ˆ‡¦ D6†@)´Ò þg@O­êºpD1 $ˆq˜ãœiÐåË Pùd•åž7×Wš2À¤L±Èl¥Ò¢^¬Û«Ÿ¯”5U^Ò|4¤)·J^¼~ßêbñ§îêïðçæf™D<ç‘vf,”pšN!ñT2¿†(Í-T/ *ò¾Â£6mn¶mÑo(rhéîöˆ½›ÆýQÅf­ %¬å¬qš±F®lUÏR£#*£ªÊ³Ñóž’ƒ#6Î[Púu×J£{ÄÞyŠßðØ×)Ên—Íëq1©$ÉatÄIã21`1cô8< @|kÓ‚·ÃŒfSÌ/"Óìl±@ýLÿ` •ææi(4ÈíC¬çY5ZUffüŸí4²I˜M“Å ‹æCŒ*cZŽt à.ÂkJºñ´»–§ùZ ¯†îàs;½è]‡ñú"›rºvÂP™Ä³ Ê(SÖÿ­"P¦¨€R«ZgÁCg;)Îú”òEîK‰€ŽJŽÛô’ùña×;¸0pI ¹û ¿RçS½r‰z »ŽîDŸ¸•ÈfÊüI$òèU²š4Þ|ñì98*£I«UjMbc£,ãžNïè†*£˜‰¼ç^öê‰×hl:}ÔÚ¶>ÿòqáØE„xLRÿrqð÷ؘŸ‡¯Ç~ªÉ¬‘Û5©”ZMÃÊÖõòŸÃ–¡IeGª…æÈÿ”âô¹“öÞ)›àâ¯Ãz$ïò«Ü% <¤X£§\mÜE ™ö?ìâhym2e­Åö­ëÿKŽPŽð1d MSD€Û̉ CíÛ{‡‡cð|˜IÞáW%…‰zÚ•ÊÔ¶oèù‡«Y#¼]AAs·xÒFœ†d-F?råн›ü廈Ïý‹Žùjt‰û»Ôß¼ˆÅ|S ·fG†?Äà~•ç\–/înéI{™ie*ß= M9êáK 2Ö¹·]šÍ¬œÕàé¥Ïzá´•*óø¥.>Ó(aN¥D¥Sž;8hšúÃífZ¼\åµxeYŽ\üe|¶Š> /ExtGState << >>/ColorSpace << /sRGB 604 0 R >>>> /Length 862 /Filter /FlateDecode >> stream xœ¥WMo1½ï¯ð±=`<öøëZD‘*QQ‰CÕC[Š”*¥ ñ÷y³öfMUŠÖ9d³og_ìyž¯:S¤ÔÏáBýT>kÃ*:ͬ˜XG«\$í­ÚÞ«/êûðv÷ùÉzw9mŒQíõòÝ9žF¯~W×ʨ¯©3|’ÔÇád5¼=%,·ú&—­ŠšÞ4åÆZ'+%ÖÖGu´9V«XWÛáýêìduŽ*ymÍr²3Qû8.ÝÁfËÚZ|¥.:q¿­øa9Ý:§]·l”Á6Ý{w&È‘÷Òm&Í¡›ž­Ž±ïì´Mý{VSÿÞmÊ: <9ûéä¹»ïŠ9ì`õ^¹ëãú•s¤]>@ø ÓÇŽêSo©ˆIçþt!¶š8ô„ú|HÄò!éÆˆi+ôè%YEöžˆÃ¢©?âÐ_Û9:ça‘P‰R®}÷7I7*p£.ŸÛ+ AÛb·Òú½½ÂÙîlÔ†öö gû_ îןí"ÏèßÝîÿvw˜ NmU/êj(—‚Éñ¨`”F'’÷Ò¿J¶6È×L¶ È_>4d·€ÌhÉd2ïÉeRJQÆÇ:71  (öÌL:Mh¶’ýšÌÎv‹±"Íö ;ZwhìÎvÆj1Ù+œíu»“½Ù}«L#Ç›F%&)%HJ—Feðð%]_e³¦\év1ÝF¾iu^NO$…¼ÐÃbºóFû‰žÓ™ò$égQUóp`i5aªd¨–p=Å¿áôòåX•–$nz–#¶˜MóbÉ€çŸþík*¾Î¿$'„sF€y'ô«£Óõ÷›úñ´ûu¿=Æ»^­Ÿ¶êÇöéöæv½YÿZßÕê¬ÖIèÅÊ‹WÍ¿+o䱡ÖLО­WÙ‰6 @2íóbÀ‹Œ4%/5a3`ø4S ×A)ºùeb¤ËÙªà\z(Z‰ìQ ÂXa’Ð)9qmægTß8ck09ä£(Êld~ÄóØšQpoqÛg,«É®©YÍÆqŒ‡Ù{¸i‘Yµ©ƒ…ï)´26?çàUl”sP `СñÍñØiö˜ÑŸ(5اæ”$¶_n²ÓQ+–øbÊ¡—*R¡»•4ªÊ¡Ú] B„z endstream endobj 606 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 610 0 obj << /Length 2045 /Filter /FlateDecode >> stream xÚ­ÛŠÛFô}¿B„<ذV4ÝJ[è¦Ù–B[.¥lRÐÚZÛĶŒe'›—~{Ïm4#¯ìlJÆÒÌœ9÷ÛÈI´ˆ’è§«›éÕ«Û<‹T—I©¢éC¤Lç‰ò4K“FÓyt7šŽ 3ªc5ZÁ¨¶ø3žcF75MkÜ«®qQ~À9>køÙóúëeu„ÙDZ.F5½ª±ÎGù-¾ùùóq‹z½ïŸ¡yýþB&ĺ]ŒßOyu«ÒP2SèX—N2é®Q…{F«ó8K‹hbÒ¸È2†6q:º›Ø²Ý¢€[ϲ(eW!_ÕE¶i»nqEÜàþ¡Fœ‘²i¬Š,Òq‘—Líæ¿ÈCþ'Iœ*M¸w‰ÖC¢Â«RNРÕì™3äf‰ñô~<ÑÙ¨ß|Ôà^{ ks;†hIü®ý1Ôq» ]Øõ4‰“Ü:úd# ‘>Âxã×!îA¹éØ?QŽBhžtÐdvG’𑿩éSt/–¼jÙw´é§¯,¶ëÝ ‡Ž•ÑÄ%µMÝzb ¿¶ª Ï£X­:8SgdzÿB !® }·rÛ/SŠlE•{ܹ‡qt\5[ïDëé"«,ÂTñ÷ÙT¡ž•*@]y~.Ö¬¶qf²¾1³ ±–&½Ó¶Ÿ=`eְϦ{õŠüo&»œ÷]ž E Χ¸9¢B­;E’Öm9@½B3§TÄ¢ÚíÄRÄÖ#™¼êé_7õÙ`z"Ì™OžŒ<BLì«öÕϳ¯~¶}‹ž}‘_dÜèªïýÖˆo[vŠÆÈ'ÈÜñÄ@^°6‡\‡Bpöâc+NR´mä莲—LÐø¬žÐrú!eÍåÈIý¤¸˜ñ‘‹‘F͵å?´°?!‚!ÊVÒÎŒœo-þñ™t“ô­IÞÀàÍ^˜¥^„¬Æ)›¬*•ŸêÛ£°Mù·–dêd9¸–awóX+é3¦ìÞdÈT…†Ô*.Ó.³m\=ˆ*Ö¤ú¡jjâBu]YC*ºèøÓ¥¤ÀÝZòï¦îZ®–÷+|h1&'tãC]Hƒ$;G~¶ñ,lùÕÇØio¡‹2.ó®9¸§¸äÁňiÖg4¡J¶EGʪ_ËC—‚ØžJz*ÀqC\P^Gu¶ß0¢²ì¥ä âÌä“‹8NÙ÷ãIªx䩇J_ã]’&ðP04 ÃKjHÍ‚ñ5€ü.àý ío±Áä×óÒÑ ‘…Íú5c¸áÇwü@&ŽÉS¥&}-LCW-Jèâ.G Ò5…@{ø)9Ÿ½žV:w…wç Õvî²Óœw¨Cß“3‘ºíz=¹}u„ð¨Ç+ñÓÁ‹"vŒúnÁa+¡[¹'õXؤÉ}‰ ßDÎÄASP ÌšƒÁg!p©Œ¢ãc¸@‡ó}-ß`|kk‚FTêVçëKynúýGD=tͣϡ¾<ãl ¦¶Ž‚ãGûµ¡.fÝ}Onÿcã– ¶l—üöŽ2~çâ/Ü·!é,î% «“në…˜ž´u™Åõ.à(ę[ZÜ—ÏbøŒ«*獵î§ÄMD ¿¨Ôyœ”¥çõ¼¦ð@¦ã¢xÊgL–åCàÌIÕF°nåi$]מõAt¥€¸xä}^HNȪ ý8ÒùSÐT¸+%ü+êœr/ûÖóÀ¹ÏŠ8ÅSôèÄa¾‡þŒy3½ú ² endstream endobj 635 0 obj << /Length 3065 /Filter /FlateDecode >> stream xÚÕZ[ÛÆ~÷¯ò¤m-šså°m ØÛ8qá¢@½@’>p%ºl$­ç×÷Üf8¤(­ãØ@‹…–çÌ̹Ÿï UNn'åäÛg¯®ž½x­ÜD•E]Öjru3 jR¹ª¨›\-&?Lµ¿ø÷Õß_¼®|N¥¼)Ê Ö šõòBMÏ>Û‹™®¦ÛÜî/fƘé >Ýñý?à>§~ÜÁ¿¶ãÙ |È+ÀæÏJa÷Åk¼ÚÂX¯‘‹YU¦R“™qEðž™ñ0­¸˜¹²œ¾„ÛÅb‰û,·ðoÓ¬`§ÊNç |{À×K܆IZa¹rS¤¾aÁÊ·Ô¥.”·Ç’÷Äæ‰À«*jç˜W][`Ò³Uá€éŽYÕqüޤnçÄÏæ–¹=ܵ|³¹0 ±5þ¿†'@¸ãíÈ…|¯hŒniÊA8ê[ºžTQÑÛßpãYCMwkb@Œ…ŒX_‘ÁîØ^øus¡²ÿ¯IzšÉcÈ‘õ8Bv´Ÿn78 SxáH›œ#]?VEåÞq *UªŽ$K6î¸?·+úÐî ^Â…[ç¦ÿÙî"_Ä=É9DWlðß^‘ߣ“¶< B×õˆ«¨OôŽÉL™ÂIü¬Mú„Ï-X<„zzõ3ªˆlP¨-äu»Y ¡$öX¨-R~¸E/x I0GY~b–Y3A³L-“Óöà*MTÚv#ìä­»Œ6›3õ@k6kÜ婿¤„’Å·5Ëͺåè ËÈK`öÃCæ_˜Èf?kùžtvòá^«¥¸ ,(º¥Ù´f’‡Ÿ‘{‡V£ÍQr™9S¿¿pà3«L}Ãôã#Í$SŽù²ªªB›>á Dß %䨢®J"¬‹Ò™*¼©˜ªõ{[øžtdÝVumÎFlèÅ×£‹¨ÂÁœþ"=¦]1ÎsV‰Ò¡…gê·è@ýÿê ¿SU(çs–ÿ>«5 ˜*ÛäБ­ÔôÇÒ•àR*ÀÍ€d¦mU˜Z\J<*wNôóíZŠ©ä´}Œe¼¾ç0¢qvÞ˜o!ÔG5 Ö…'´PÕ¬F ¡0ž-'T$(Ë…›ìPL¾ý*D˜¿mæ˜ñî$6›žRNM&Uª–§¤V,·”¯•±…-5ÜxHôê.&t.þY}Ò…ÕUûûÂ[[è| ³ uOùæ–,b§wÍžoЦ˜XæYv–td#Æ2ÆAi@“•"hÓúwü€ÓªíÊ÷>b.;]·‡^F]È.¸a—àh»o.Ð&¼$ŽP’ǘ\™ïÝvͪõ¾¨Êº_ 8¿R¹ p¯ZSy^¦rŠ‹ sµ:ª{¨™^—`!!ȪÙ:%v,V8xº”á¦g” £sªs¤YÅ…[z)Ë¿9UF‘è2n7«‰Ç Y#ÿå›KòQxæÐrçB„h^‚¹iƒKI™$–´øùhSueNDËsä¦Îá®ùŠPUIÈa‘ç͆0ôˆm€é¤ŸC+h ‰^ýV=¼c„¼¤"?ûõÓ•N*ã„E#2VeO™5Á’±“²ÓËmBt o/xÞÛΊ+Ž€¤-½¹„oYQ¸öSŠBšWËè~›†tv[-Äð%¡,ü÷ø [Ÿ2îƒ¹ßÆ\áL«†:FÂб.Ëò´ÃYH8͆T“éÛ«Û(óâ}û¨Qé4`¼Ä˜bBÑÚe 2}Rg0}}û+&¢íí  ÅG9Õ™z4«Lˆ¥‡¼y”ì›%¨=s|C] ÜfY-8¾§ÅyÆXòœRHÇ00'\R‡½ç-–¢yË5Tžâ៹xèQ¨ËkÏíO;mýX*+u6vJËÛM6ˆP¹™K´’Œô>‚›UjÊ~¿pù(Yr×;áâL,†a+átáKõI­D¨S¸b¹ ®¡f¨E%c;¾Жà^Àícl©z.㣨:Û2Ö ¼5Ç»Œ’ /dx¤ óÃUÖ 2ZžÕUaëþ1Ú†z[Îñ"•ªRÑ}ñ:Ø–ÊÐiW4wZggÐtÜFŽ¡2+s ð÷±¬ª ëÓòHVu&vt [‰¿ÃuÒ;ë‹R§„i.’Àž;–EŒvå{˜2'3-¢}R[Ó¬’GÒ´e!$x]¤nØAé~$5|JfÏl8©~¯¡ì¤Â´U>H ÛŠ^֟ê Ũ)œfÔŠ|ž° ´4d Ø%¨Þ’¼ nSÙröPÌÛÏ!VpEeÝ@,‰z˦®;Œ-ä£Aq¥îüÀ ÔÍŽâ‡;3q7’1¶áÖiIzm¸´P”2Ýì¦ë è•Js{¯ä¼iìPŘB{ÿI©Ðª4oÞHÿجörB»2¤9š=W®Ö§³[ ›Û›£T:âÀ_Uø ‡0𠾕Ʌœ$lÅÆë¨œ’|)åQ«§‡Ä•‘âá5Œ×z$’Z//t0É[#€Ü‚»À;t¯JËá n6èZa¨wþÍGN:1ãY]'/{ÊŠgJÁ’OE‡‚¯ñ­… ŽO£¢Ý` }¯Ôòq>Í‹™ÌZÄï ï¸ ¶goÛ¤Z´âñEÞ{Ä‚wý˜emÊ‚²,ëxÕ^[÷Ý)솟pXˆüOwátÿèêzúñêasGªI†ísŒ •Т¶|~Gá¶Úò)Jç1+ºÑj)ÝéàtÌ¥xít0–3k]˜`¾\i¶…2yñ%·,Vf2á³£¼g¤¬÷ÒÑ…Éüm[tðÐK™Ó¸e¦õä^©·‘Wâà;~›×•î³'8cxfGÉ«¢ÏSˆâPÒ÷6¾þ¾“çE鲕¯–/§ßåÒ0Ù…Ž¤åÁ*;“ìö–{ÉÌònŽv{ègÛ¡Ëá C(y†=‹m)žŒE¿X¼à›Olr·F†LpíÜò÷Xû)ó˳L9éY“ÝÀZ}à?ëå¤C ¤Î"ûÑâDé[vL²½¦Ä·K1óã ÉyYzSy×ý¶¢Æã»ÑòrÀŒ€ñÍ–¢1ÁO ¦‡Ž^–9‚=þ>ºÓýLDhüàe/C‡t´=yJá;¨5zþàmZ'½dã7¸ü†L“X‹îÔ(kþšëøÓ~cÃh”Ò«tìuݯþÆï5¶ Ð'‹ þ ™XŽrQfs‘N¿‚Ï÷ÙPl †ä_ŽG¬,;Ì3øÐa1ú å$ºEîKIœ>èx™ÁÇ“p|}b¿ŸGØî§ïáÞk™q/3†Éþ„Ž>F?Ïu ²}N;ÇBºžŒ±´¥¦âÛYQêû}Å-íö´â{úè`æP'JŒm» m"ì~;³eH’MŒTÊGe² <¨Â”…Šoû7Â(rt Uù7Vt»ˆ×ä0Kr>²(üh¸­ÇÿÅvó#>óE63XCp3i{òá‹J9`‰¯F®–'Ÿý(e“ö$l2¶þ<î ¾ÁƒÚÚQBbâ>•˜ÝÈÇñ.3ùª…¤ÎÈÔ1™’ôb…¬NŸ#2›­æäS¸ÔeÇìýê„JØ3kž$ëí™r²p,¨ÍôQ&ÁÈ\&—û ˜1 ðý]få*u$E\0œ–ÂÊPN6"…Ϥp§¥™:'…D3¯¦oŸt¦¸jÜßr9Ëô}Ô aàHæœÞJ4Þf à¾[7FEÈüøLT¸L˜3Q‘«æDTÄP´ç¢"û5 _¿¹zö_oý endstream endobj 647 0 obj << /Length 3211 /Filter /FlateDecode >> stream xÚZKsÛȾûW°rHÀª%ŒÌðMÖÊ–7²Ë%)©Jys€I˜bL‚ AZëèϧ_3hP¶÷@a0ïéùºû놲Ér’M^?{yûìù+ï&*KˬT“ÛO•—©ÏÌÄ[Ÿ–¹Ü.&’Ûi‘'Õ~ª’üªÿLgyž'/kzY®±­ú+uò«t\ೆ?;®?¿«ðöeª‹¤¦bo@5Õ>ùÂèò:åçå¡Á¸z½Ž¡÷ú3Wü 7¹ÅY›åôß·¿=¥lÿdy¡S]:88I{ìô,Qdð7Kíd‡¯\¼~ýl23FMf¹M çxÜñ2q†É’Èï™Í¤~tÆ*ÑYæ†â0ÅçX®¢ŒZò*¶tT~¯î¡|¿)ÏãÅl›–§Ø~âçþµÝÈOP<àÍ»1ðGÖÁº-iµjÍÓà=Ò"U[ï©»JR±«´´V£ˆ3U–º‚%å°›¦¾3›eÉKºe˜ïë4ÇÁD'%,äm²ÁÊýî!KíØ-ÂÞJÏkœ^ð«iÀîeóuZ‹áº»¬3Iµ“‰€GÐûeÿ€Småj !&O3çŽ6x†?pß°m³& lݘ4/m÷ÄUËòÇmÅËÅÆ%7†{‚½¾$µùÊhå¤ÄLŽÍ;[ÐÖ¶K9&©ñ":Ö$Øød¦ Ÿ§¡§Ö”¼ã0‹K¶<éÌh“ÜS •àÁû„¦ˆ%ìU5KW%ÿë›:á¡4¡[nDãTT½Ü(·êØXÉsAçˆlç½Ö näUŸRJêvI;høîüÐxX•ær¹<Â)Ìm²¤Z§]>¾u öÔš0ðǬC>jH‘¼r`Žé¶h›…é/6Ë •ªÌ /.Èu ¿À …þ~—£H-SkÝ“H›˜Ñýû¤üD6jÓr:Ëk±mË€Ù®WbEf—U;xË£0Kšo%è¸Û𼸠`¶™(³—Æ›ãþÂcТv2ŽðìÃjư—s“ðÄõµÍÌ|²eÂqk®z˜¨À-dErß?vu¸'ÛJÅYW&Ø­Å.â|- ë@æqÁ80¹MnïÂ’I³ÚÜ‹%«eZòS(€{.P%Þçn»ÃáÔ:nþÏ'+"pæU#rÕ&uÆQm2Ò:¶§ã8C¢ãS£c ”‘=EZflËd F©€N;x‹ÑÂ5¶»E^\‘ŠsF@Àña.ÒĦo’¥óq-W-ä’–cvlÒÂÔw¡Û¨yã6òñMhB?š— þ`í¿ŠíµJ+³Êû.¸„üÈ©ä/r¦Ó÷Ì}ÈȲ´iVFñ‹SÙlIuìë73—÷§6ਚ[%¥³¶‡Óº#:Ñõq™HNè‚¿J{¿ ´§#d<¤þƒ”-°ºÇ…ÀÅ£ß$SìÒÒY4É© DúŒÎìçs³E&ô@ã$wЃœ•u”=Ì0r :¤s èBFɬä`^'Euµ£¥4šhô"å"§MŒaÝ£?бESq/–:¸vÒB~•è•ßÝ@Ã+.Ÿ_¢I¥çÍ”ofðî­ð^#z]F¼ýú²·Ýy=± ¯‹žñ_‘þÁNÑœd½Ó¢Ï’\ͼÉUÍÏò¡76H½g@jI!Íé¼hlÙY+îu^Ç d'Uïz<œ˜3Ô-ºk š`®ëzŽƒ‰píB‘·‡+¯Ø(Êô+‚¾2ÿ•ýÖ<ì«'‹ ã¯ón›ùId*„¼Ë‡È¼®?E'ÖÌë€Â^|4NofÝl.µ—gŸ§Ö±Ú}ž«^$—¼wQvUú¼#6FÛäw•›7MG%ªဠnIfÔø•犪ŒW×pÝEÏóÓeölj)7Z o´$[Wý±" ¢?l¸úJÎP°¹Z u Ôó½Ø*²×L(XNÃ+¢ë~:%ã6óà–ß sv9…Iï°h`J\7²'Š96¥EÕƒMÎÛê3‰‰ÞP¶DØa¨@cµªG¨¢ñ¾©§VƒÑ€?Û©³w°«½Øã©à¾86ß|%38µmå²H«°Ä§ãÅ{íM$ñ†ld )¡¹¸›]M¾ñäyª;ç/©û{†–µóH1¿ .)X ‚%“þ÷Û@ݦ£ÐÇdø°œLp.HI4M AÅur‹[q*9'bwˆ)ªüU²P&7bë5Ï"ŠAYõ4%3¤)g ÷ºO=ëc•Z΄FGÍ7ƒMÑOB­NM~Æ[¨šÞm›ÓH&tV»jÓ§ø«9èDaiS‘ÚY..ì‰[?¬{Dþ Ýmºbðq¿¡!Ë4n æÍë§ÿ†«‡lh•³1€ç9"uÃ,¹xjf(“¼¦ ’Õý%_¨Ì~iVì»§›}E޶ œŸLä©êX©è«$ç\êºPÑPŒM¤@—ô±NØÌ>ZíN!ÛƒA¶-OB[CÀ{ËèÕÀDè¦"×ÿÚu¹<ôó2…>×;Š8YUŽ¡o‡$S[‹*‚¨OÅ ¬„˜s·‚׈qxkÀ¸t]ý Æ3pë>w};õèkɈƒ„š>BI‡®ÑP×Ñb3»£–;¢3¼‡,·¹.=^`Y’à ~{¤Å£|,d aJÚgÉåÙUÊZ’—@ØÕQné×WŒÌÔR>Ó"R¼FÒqK€"8Ý%B"-ÿ ø=—ß$×â +9É\ÚØÞ„´ú홱䶽–È‚còS1½Yg0 É~9ü¬<1ZÂÏ?/²è c~lEÿ÷Òo+Ò^Ê<_zÿ\®™NFïOi¿*@pñ<¥ý ´Çšb¨ý«QS` Ážÿ"Ïv©¤rTùZ_wa¿‚šèÑizÖ)ºÎ f¤œ±‹i,´8™ƒs£ ŽÚáε”é¥-¯¥?ögèè--Óv§˜ë›ÎÊ-c–‡3†Ìävs8E¿©G°ƒý&<­¦^¥¾Ë”½~01„r丙W6-ßž¨'§KÃá+t}OûÝ·$µgSŸ;Ô²ŠÓÀ!C··Ut|M-¡—l«ÏopoÍ^®Âfö.E YŒQÃ`Mšiõ] -‡~Ò.äGvÁwv­Wå£×ö”Š«eÅ£Ýî$ƒNŸV!~½’ìϘoÄöªA—ÒGð&LÀ0Ø `¬hÄ^0ò=êôÅ÷"8#úÂ}nöDœ ªÚ^84çNåQñìÄ×X•¿Ž@¡’©)´[f$ä²98ÅàOù(íG”Ž6üÜ»ˆ·ÉúEß$öG…<ËOLЦ“¿rúw=}d1ˆ|—ÈÆ6fCGy©^šªóZÈÛÔ{-¥:x"7¶F—Ö@Tw ¹CÛ}Äàµy^ õ"i¿ÅÏž[n‚«Ìû­£¥‡(vÏtu}îæ¢]n f!ʉ8a|âdOüVm\¬â×[þ¾~:¹pÎaËÚô2¢¤û£ž„_çž"MFÃ]÷"'ù Çf[ÚTL¼¨Š¿º1öt mʦHý¸-D¾`~ØæC[¨ |T:×'ŧ¿F À†Tu±]RhŒ1?bz¶è™,­=­—/ 8ä‰(Z){¢]Ié7Ó€ÿ±nc§“y_l<ïÛºHB«løì͹ì÷ׇï£X~rÁ4Z26cÀãA1ÅœkIþ@á;û„$„_þ¯!ªð/3£ùç§ByUªT«Èâß·259lR†:|”Z}&>:‚W¦9ÐÂÎ!ÙŸ"æG Ë}Ì}6¹‹ÛgÿXHã endstream endobj 548 0 obj << /Type /ObjStm /N 100 /First 892 /Length 2710 /Filter /FlateDecode >> stream xÚíZ[o7~ׯàcŒE8¼’Q ‰7i€v[$Yl·FÆ£±­TÖ¸šQ’î¯ßïŒFò(¶äÛTA± Ä!E’Ïã“PBÛ$œÞQ†¸$á5—A (£†'EáƒÑpi„VÞ|°Bë¨Ñâ„6.¡â1¹5¨Ðއ€ /fAC¼„MT\Mr• ŒJL…1–F•0Þ2V XÙc5Fyt%<^ «`x#,†¡b…µiœ°^c/Þ K¤FÞ“°!qK6‹'f0± ÂiíÐâQñØiM %¢Å1x¬çˆ™€nç\Òà3B‹@©#ˆy–™±žã cä à¿èú* Þ@ RíAH{þ…n ®û˜pD &-È[ž'æ ŠŒ›¤ˆ%ÿ"/Œu)1v ¤D+m²¨8ô«„3¼žÁb¤Îð qÄ'‚o¡xTC†¤0‡0~”"$éáámiH‘Ád†Dë0³Ñ": È!OFÆ °€[œd¦ñ")’!‘´÷#2A`Øv’œaYE 1ä6155ǃm¢R”ÏF§@\±"±€¤Dó&Hµ6Ì/ÜeZ*ŒU\"ÛÊ<Ä…ÀQ­KƒD«Èûç´V-¸A"ˆ)j‘áqM›0:<eGâ˜]‰·"ûåß¿  3VIسÅtúaôÝw÷¢{UÍqx(²W|ãL7☙Vu`‚L,ë8YHÁ²)Ð~Õ‘Ú¬©ßâUx€SXþÀ5‚Äu|éC÷w’ÌuË~žWÅ»²Ç"ûùè•ÈÞ—_±ÆüþËùY9Ê^9kjÜ£vÁQö¶¬«Å¼(ëöúµM?–ãIþ¢ú"Ž|òÒ`·ÑiÓ¬–Ï1._Gþ|6«0ãq«sŸÛ²¤® ]»2-K§ºRwe×î»vßµCÑ,KÛ•Ý:¾[§c+ë.×;9/ófRÍŽò¦OŽžYµ*e’ŽØi5ÞÚ÷~ÒLÑóV¼žç—ç“¢?-šËEsÐò{¼(Ê9÷Zi¥9èÖª¸é`“ñ,2£ìÝâ¤ir£eÿÈ/¸ÏŒ²y]¶b•}_N?•ͤÈGÙßgE5žÌÎZ+À\¾û”öÆ)Ÿ¾¨¦ã›ç=ÎÞ¼|ÉCÆhm9þ¡·ÖjÄrÖõøì_“ÙóY=¹ê>šœž– ¥cá|v1™-jÜ…ì÷EÕ”Óò´aÓ”+ðµ®'ÙÙ<ÿTfy±hʬ˜Ì‹ÅÅé´ü’5“é¸Ì.òb^Ͳ“y  É‹B—'X¢žÔ™„ÌËÓl޵³;æëÆóÅì,Ÿ/.¦ù¢Éª³jVþ–9ÏW_æEù’Ý?Ì_óËÓ#ì÷$oêae,üI2n”±ø¿$c˶:²ÇÎ&³ß°Ûj>.ç­–U²ï³7ÙKüÀüÀz¹€B7FK6ù0D2²w•HF8*N;IÞ€îykŽÞ‰ìuõ¾0dOŠISÊyQÔùtzÀb,6E ?cÅZ‚üP`’ü;œ4ð»`%Pac”¸J]?û¡œÔÅ9î³rÃÒ&ɧeÈ[É®Ë7Dä“Ô=g$t×íˆ^ϳ¿]AŠÃA2’(kH¥‡÷ !Ùd„ÿh]š‹Q"ž°ßÏÓvDT¸þ€’.ªùph\r2q0Õ¡AX#â¥oÇI„)ˆö«…H)ønžŒÞ7KŠÇ\Á‰IÜØ½ÁÑíþ•‡ßo••ZsN’c@«IÚp³:,_´þ†4Ò ¼D0 *—p©>%#LîÆá¥¦á(* œ0 Ú B52R…°oqa†¤¤×p *2cög󔬅¹D”§-‡SZX›$â!í MÜ£¸@8 òÖ8¼†-uæn@+/_# 8 Ž„ É2!vÖÖI·å Õ‹“ƒŒ“º…Cx2½^‰$ðz¤ß'ãÅXÇzE2·›Ø’“^[a ꬠ·ä6Òý<Ú¤nJ°œFwk>`K`3é€M¤õææ:ƒ`p Ö\P«Ö)„_~:ùÈ‡Âøß\pVn5 ¿8gh•mˆt-Û°Üî#² ¾Ë&ø.k@]Ö vYƒØe ¢ÝÌ <Ò ©(9C`…bä¤f„¾O"à~kg÷î2(øRVpœ<Îî Îæ•Ž@cIPR2Ä(à]i(98“nÕ-v@u«8{ÇÉe„ßÄf¸òœ;—ÉݬýO'g‹y)µ\\»Ôl`5\- ®¡‡Ò‰jo( ¢Fïˆç’¯¢UI:x½çb£»ŸÎgýôlŸÌE‹5#Ö„‡íÓ½ÓªêrCö“¬}Û×=m÷µRìë× ÍÛKØ>Tí-õð†ÚKö‘j/vê®K óKÄ_,é¹—¤?Þ\O>ÑÒþý?ùt'µa\ ! ?ô‹+lÚ§ ¹ÅS\)/= ¯9ß„h"H~‚3ÚHK¸š‰]°n<Žcr2`0 kxÝÜT‚ƒ5ãJ1Ý¢@ûdÚÉ‚ÖFÚMÌïWA·ŒŠN;„wZßN‡€Â:}oßx»‚ß|9Ûö>Ö7z|ÃpÇêGâÓu£pƒ?Lгê1¦€´úÚð3î=Lna?KÎóëñ¤h“Œß™-<Øx;\&~»ŽàRÁÁ¹fð÷PÝ8Ìþ)oHÌFhµEzzvöš'krvWfœ_ì?Ø/Ë%³ø¹~Yê®4]i»Òu¥ïJêÊn>‡ŒvŒŽ’_Ô=áR‚áœNào( „våÜ.Ši^œ¨~YÈ8]á°Ëøý,ÁG \yo[ýϾ5»ôÊï’OŠQ°GOv‚MµåsÙ+ ç¼tú …‹^¦6[p Šº8ÿ> stream xÚÕZIsÛ8¾çW¸æÐ%UY ±‘`WÍÁvœ8.Û’Ýݳd´E[šhqiéÄãÃüõy¸H¤­¤æ0s à}ï{ <ÄÞß¼yû^¹GYœ©ƒ›û¯R—F™q7£ƒ¿÷´ïÿãæüíû4©÷R‰‰âÆ >³I_õ¾Áo ¿E ÓÞb ÅU`ŒéÝcí’Ë—P®÷Þ,á¯¨ÚøéVòðò7±Lwûº=÷Lk`\ä“„'w‚oØÀï_|A1’ÌóþÀ:Ýû8<Ä‚êk™Ô ~ù|ÿ4JËúçgn>õ½íÉs7cœ÷,_qÛ_>Ç.†zÇŠ ŠQ¤¶÷Y{™ÉDsœa>+äíK¬¼ãQº¶+´Év p›d'`LälÆ«—]Xë`I#. \WÒ+ò5 §zÔÐx›¯pÖX\ý ÓN2^eQuÃÓuØKÚ,åS~ÅɆfLÝ?õµï-¸ÌvÍ=Z¤ÁïO·†`΢Øú€·s|”fHrÄW&Ps׸·\öa—OÐŽ»3ƒ4öçzãD'+ÙàÉ>„C—ô®}‡²àU’€ž¸å„§ÙÄ_æ"—³<ä.ICq’(q.ôp0 iHéÈiº ”ŒàèµE÷lbžmj£V Ej˜LæZƒ.ˆ2DÙR×û­ï `C࢚á;¼Úð:•ù¬B®µŒÜv@®x”Žp1™ -eìâa)U«>¿À«NkXXâuØÂêÊ_š¯ySæPˆTCBdíaòÉô&KzïèAüc8hàŠ45M8õµ#4çÓ'p²j“É"ïÔ«¢¶¡‡o$‰t¢«1H¬Z§ÏÚº.±Â¤ b–ªå'ß6y (.§â¬wTòTì{9nÍrÄwW—R=DܲvRÅ»c¾–8HSÄ€Àäß3Tè è…XùõïÆbDÕièû% ”žùˆû}ÇâŇе0 ´m ­á~#Úa ‚=Çoäé%_ṗ¾qBí8ÛNà)G^¥ÝLc®EõZDN"Y,ž„±y~›%Áp‡Šc‚xâÆãVjÈ(§û#ÏÀ€Y'ÉØ-’QM’QÏÆwAÑØ¶J5±xŠ[³d§Že¤\û-îÂx"û™Ï'Ü6dé•€ËLI‘ÝqÄbM’Z’”[÷Í%‘ªÞOä¨{'„ü‘]^ÏO¼º³8 ›jzD~#šQçæÆ&Òi“½qo§3r¦ÈÈ`ã€Äoxd¼¯¹09¬ØyÜí"è„ý?ჇÕý˜Ô\0œgÜÐî•"àdVÁþÏòÒxàgO3~÷b^Ô ¿óì0qLƒzã£mtêù;é¶Z |P›`·I¸0À{d<¬ßÕšØ@³ðøгr^&Â9Ø…L\iߨ*„Æ ‘è ÌâÜw-ØŒæV §·azÎQcó³eÔ Û3wŸ ½œå“X5ymcëØ܃·R†§F­¦-‰# ™ý½ó]^LÖ$§îYÇ>éR„,Ž´7»$S)‚ñAùæw„@ŽH4Y K•˜MÍ«ñžÀüqT)£âs¬,¢“,c°ek„蛳Óà§¥f%¢ ÐD ”ˆ›;ÍõA‘´íEÔò5Œ2ÞÑ! òÓ§A ðÅ‹t.:)‡/`ÅIéêÎq¥D…/˜Jo*} ›~š2qñ|ÇÖ‘;^PPå( ¤[b3€›Ø¶‚(Î"›n{IŸú–ÍÅÌ\Ë*óµ˜ÿ_ç§,ƒ+'òxtÁM[±¯nâ8…,Ö´óC€s‰Á·ÍïCµ|âª#¼¤5ÌeMƒ¦bÝX#Ä«®Ô¸îßt|†ÖxúûòŸ«¨Œ­±né1“ºÄˆwæd*¼FÃ!â$}1JÈú]‘ˆf9áŸj.Kn‚™-ø¡­wËx-âÔIy£+ãÉ«³0Þj°ðÉÿÛÑApF{ÄåÞ!4¾ôÁ¦ç’XØBApM B›þ”Xæ_‡psÁЈàâƒ% CŠCÌ8xÛ”œ‰Œ-u`,(\ÊHFõÞÊ5 ‡?‚ß•èÞÐ*Ror›à÷OAS0`‘Ô“—Ñh©Òç‹”ä¹? Ý s5 Ô™<Ñ«J;o)ÅR×49"!)ÚGhSÛ¿Ù.‹gàk–ÕaÅ݇˜èÞEAæý…5æ¦÷|©ôÈ׸ ¸ûýT–ý­¢QzŠ#\œÚJòF ãbÛÎÇI-IUz!È…ÆíÒ=1(9œY³Èþ®‹æA9žI~+")V¼-j×Ï)튲áѧšs…Õ¬¢P8×£ fl®§ŒKH+•äDlÞN噲ŠPª¨gL…9º7Y›cX[˜î[Í—L÷mJ >Š~ÕðYéahÑïÂØš‡¡<†0á¢À& ¿G·Ñ4E&V “ú’†­ý"Ñã‘çr]‰.ß¿ Û ÖiÉ|{L £û—tXy%&{M‡!¼ù¦‡0…dâ,_”_ ¨nC€xþ…ìa@Æs–ií‹§øÙ"ø4ÔNa Sé¶“,ö@ž"pÑ-óYH ÏÿŽ;Ròà¾ÙJÒCyKp¼à%—™Fk8¦,[wäÑAŽ‘³‘K¿÷8Ï,8ßËIIÚ-˜vDèöw¿3BË&“$}NÒÎ_™4RÚus»œ`Âò߯Ìtó—3¼¦í~7:}"b–oÅT ù&âYï„™ÄäÐLœ×Z¸Yy¯ÜôJÜXF_еDLB %ô©p]>v QðÔ²§Î;:¡“™È*S¹Ô’΂¡9Í1'olÅU´xÌR·GŠmP.Š÷W#y¤~4y¤cõ¬ug†ZˆÌ6¸ö;„óQÂèÌA(\f0°íŒ/øâ |ZÀwÄ!$à‚FØÂ"'J,âh5®aAKÁMሠËÈ~Í–¿á’2âÝg5«†«8Gu7#ÑzhV06^ ÙÒ(Íüÿv³„pò]ìg›õJ={Ý™k7@äi¶ žmꙂp&˜¥Ä3t” Ùtj¼–BóÕc›®€Ó À>æÜÇù=çúk`´50â‹;Ïk°#˜ÁõúIôm›‚;8ïµTîP·³™ÚH§Ùÿǹ×9®<Ÿ±Ïý”RSÕ‚™%¯8Ó¹x‚³5§v Ò‘…ÃÅmÅ{r˜ŠŸøÚjWŸ¾˜œ@º´;ı²é49µÃMßçÔÎdq”VÁ}Ë1m¼_>‘M³Èë­#¸—ÎúÐĆ\懂ÈÇ»·»Çº]pñàä{»?\Ô‹ŒóŠItîÖ܉4‚jbçœr‹[Îûé4î !:Éx—r”€î9¶¢`?J‡«òÔ×ih†ªësž –Ï&u*[HÜ×S«:Q5ó©øðh”?6> stream xÚ½YYsÛÈ~÷¯`å!+4€žV—×Ù’l‡’“JÅy€DJb–Yù•;þ†›œ£Ôênø«_Þé´­™ÍMb Š“N¦ÀIo”˜bû9ˆÓƒØ¦Iî=¯ø3ˆÞò¨ØzÜå?¿¨TA¯.2M MؾN]ôE[wuûĉ6:ƒæ*˜ò¡6ê¼b9ó[ž†ýõ*}B딨nù€]³YAOçeÝ‚¯ç(w:5¼ÏÉk…kÚ¼|")š üÀë?Bûš>š<ÉQÙUl:ˆµMRWB¾âç°T¾DI Üë’ôCR‹[ që«þüŽÝ”uܤu–dyÜô nº$ Í@TîX]x®ïQ6øýhhÒè¾Sñ37ÃÔ TiÞåº\OƒžÍ¨H;ZÉÐ|˜âÀ|-fêÁ’1:Éu¥·<Çw")M Ÿ…De}’´IRãÂ4A‘µ¹€è-:¡ˆ¬òß-¬ê…, Ô‰RWãU¸]põÂU„B»Dƒ­ÐbO܃Æ>æfƒç¼Á³ÑŠð|ð2} Ca‹ñAk/ÐpßdÊf)^Yñ ¹žæK €¿ΠÐXÊË5®o"D$ˆNÔF¨}ʧnƒ÷¯»Á:ÂíÜ-iS!öAÒû$W~7"mÊjÙÔ"ðØÞJ\‚{߉Kœp$#«9ö.ÙÖ»@™&™7{AéŸÖ±•!Ôv‚ÒnƒÒ»”H¸™Uß3›÷ƒlèÚ"ck }›1*‰eÔ÷õ"I‹ðmbyN˜bæ‹@ úzÍlu2_¦tœ«&D”Ü!Û7J5’ù«Zu”N]Û|£>$d‰²5‚èex¤Ñ9rG ¨ÈRJ”-ÁPYyêYõ(è\¢GçUGµæ ·¨ã’Û{áNp2JXpŒô§=˜Ù²§¨¾åg@1¿%ý¾)òï†HÅ›@156‰²nY‚õ¨ù´fŽ›@ç™Míh¯î¥rý…*ˆŠbºLt´Ù&Šk§¢?áÇŽ?°TJÇc•ÅЭdõçÑ9#6Á@Pƒ%Vš#ÄmÞ±-4ÄBíó{Ù>þp¿‡D2±S0k›f`_[?ä˜üâaìR’°¤¼££ nDz"ýKâU”Ô³g«]’›´ãæžD¡‘"¬ë&ŠË†:!ξ֕ƿÀ¦™~ÆGJaÔÍ4h²¥öíl€ë©’™°Ó3¨l¬ë"…é%?.H}ðc4F«`ð'½äl —@:š_…¯¿ø¡ªœ­°K¾CXà^Z‘…ØìãBíkÝ^VÍãL“ê{¤øÄ4Ô©¦SÆ`u ä¼þî¼ÛéNInmJEoNgu™ÍIlìàíø¯ü¬“{î»”˜=S½ªÓ@V+‰ºõƒ`Á­Î5Œ†ó.·h`ÊF‡1lj N†J~¯XÎB¥:íu”˜@NY1$(8sàÒEc…"ú=ÛÛ¦@fÊv þ¾œ ÚNF '/²½DRç[“6—ØÌZy(Ûgô¼H\^CåyÍ‚åPèø ßøŒ€½â*µ6”R¤ÐjÏq?ü¹ãÄÊ11¦”V}ÐÇÔa[¹0šÃQ" Ùé”iu“—^I`tŽ´È|õ$†~B©TVS9TÂDÉ|7r•qi¢µéºê3J™>¡Ë•è¶'LMÄQ†'.6ROÎÂi¿ãßî^§”¸—´Å×÷®Lòp>«'¸ÙW‹Ä)¨Œ<Úqg]9qäM”Щ]%ßrÁ f˜)ŸiѧP{‰âÖ‹}B(/ˆaÉ'cfe:iÓ⺊ßQM ß –óIøºÙÕÞŠº(ÎÎ2F(Â}µu@+„q¿©_¡UPjï¯bU–…n˜tµ‚BÊ x,m×'tNÍ/Ó}®ØªðPµì+ËíT’gnw¡w– ¡b*[…ÁBú7E€Î4Vÿ®#)Í6"{Yû½).Ö"kás¨"ýV Ð:)ÒÔP™Aå® ƒA!íULêµç ¢'æÕaŸÇì>K¼vM™ôÖ÷HV8]®’¾ð†VP]õÏËkÁ%±É|Z›€ä`À!~/>ò‰&æþϱ؆j©à– ¾B ù¢ŒºÌˆ)¥¶z–kú¶ªâÜEÃù”wUßæ÷ð[çs$nüù(êͺ[,«PÛlâø¯öYZȡΥÊg¬)‰ë—ESo&ÄßøÍˆ€wh»£'g54U‡/°?~(§Âþ‡¯ªÅ_u<Û·Œ5@8>näö¬ì?ÊxxÿIž•¬}¤’¼‰‰Yk~%ñroi|_œÄ²É®+Gç¯ÑÓ‰oNY¯áŠç:á1ãeZ±Ä_H{ÞêŸÈóºÅ$+ÿoßÏ.±¨ãA´È›ðç[áÚÓ„Ëæb¸¹îïùis)V|hòœÜ¸¢Ø&´¯¢(­zplçut¹;(%*Ž7Úãæ Ô³­VB>µJ!¦Êç›ÚúÜx¸NQ51<½’J°Tj‰LôëÛЃw£üMíseúD××-3Ê+÷á6mrˆÅ—þˆçŒƒ\»8÷6VEVôI¡›„ò¡›ŽÍ2hàÊ N¸}+ÿ§trß ¡u‹R~zQÖ­tûbŠHÿÏ ñ:5XÆ¿å}—y~Cl¿ô?J?, ås«Äå—Ûñ&E;®™Hº¥ºÿßA섨œÿ‘ø N»¦K[8C`„ü8l’³Úß÷¯¶gç§³«7ÿ>Æxp endstream endobj 676 0 obj << /Length 287 /Filter /FlateDecode >> stream xÚ]QANÃ0¼ç>Úv½qÄœ¢EBBB4·Â!!‘¦J¿g»Pz˜ÍÊžÙq4{cšÝ&×e²X“e¤•ÓŽXÙ²‚XnsåŒeeͶÜhñ\Þ-ÖyvÊ¢Ì(cÆÌéÞñ/àôB¦9ï?ÐŽBcxëO‡Ðߣ?eOJówÔµ? °<ÑÑî¹WmHcU‘eÁÌ×îQª!îèšH ´Ø’ò¾ Û6ñ¶:DKã±yQ.ëÁ+¡'¾ òͯ&º~ÒVÏNqÒNõÞ@ |Î@"1$e—.˜]A%»Êoõq/C\eÁÓl@êØ>úðÅò4¼qÊj:þ‚:Zøð–pìãݨÙ8ÍüéßãžWeò<;{+ endstream endobj 703 0 obj << /Length1 1559 /Length2 8279 /Length3 0 /Length 9303 /Filter /FlateDecode >> stream xÚ¶Tê6,Ò" 2tÇÐÝ-H‡4  3tˆt·t7"ÝJJ7H#ÒÝÒ ê¹çœ{ÿ­ï[³ÖÌûìÞû}ö»†ŽJM“MÒn–ƒÃœÙ€ìœBi) '€““›““ ƒŽN â ÿ%Æ Ó;:Aà0¡H;‚Íœd2fÎv*p@É r€|B@~!NN'§à áŽB3Wˆ@… ‡0è¤áöŽ+kç‡4ÿ9AL   ?ëow€¤Ø2ƒTÌœ­ÁvAfP€&;{üWFkgg{!777v3;'v¸£•+À âl Ð;]Á€_ ^šÙÿtÆŽAв†8ý‘kÂ-ÝÌÁ€Ü<\``GÀCr€¦¢2@Õ ûc¬üÇ€ð×l@vàßáþòþûílÁíìÍ`˜ÀTå”ÙÝYf0‹_†fP'øƒ¿™«jfþ`ð»r3€œ¤:Àì¡Á¿Ús9BìØ Ð_-rü ó0eY˜…4ÜÎ svÂøUŸ Ä z»ÇŸ›µ…ÁÝ`žKÌÂòW.öÚ0ˆƒ XQæ/“Æ?2+°3€—“““Ÿ;Àî kŽ_áµ<ìÁ¿•¿Åx{ÚÃí–M€½!–à‡ O'3W0ÀÙÑìíùoÅ# `9ÌÁVÆ?ÑÄ`Ë?øáò!îÎ>ŸŒèe‡A=þ1ÿ}¿JrúÚ/¥Yþtü·NJ îðdãã°qñr€œéùÞÿFÍ òWÿòU„Y‚ª}Ó*vý‹Œ-à¿c½„?° `ü‡ä†œ¼œ ‡/àÿ3Õ»üÿ1üW”ÿÉÿ· 9(ô·šñ·þÿ£6³ƒ@=þ2x ­‹óèÀÖö¿¦ºà?K+‡Zü¯NÑÙìa $aVп‡q’ƒ¸ƒ-Ô Î ë?\ù#×þµcP ¬w‚üzTl@NÎÿÑ=,Èöáápz äoøaoþ;¥, ·øµ`\¼|3GG3Œ‡+~@¼OàÃ&Z€ÝSÀÁƒ;?¸šóXÂ1~ݧ ?€Ãì—èp€þF¿êá°ø8Àÿ@n‡%ôoÈà à°ö°·~x+þqxAþÐÁ‡dvÿÀRrÀÿ|þùÎÿ‚e»ü¹ uÿ ÿk8 GLJ×á7y&÷üû)ƒÝÁ ŒÙ)8H8À¦* å²B’Ìm}Xt‚n]7™‰ÍsÖñ“Ë5jÓÇt¿%ÇsÉ„¾¼…UYÆ3‰9Ê;ÏÝÆÔà¦xõæ¯[“X±õfŒ™QÂî‘ü]Éê/èälZ^w^:¾¶ˆ­JtÙ.8j¹ø—n]òîÕ_ÞÏM­«o|ä{yû~œ-R;Âзh’.Ç<ã+15Š3óÓ#wÜɳó‰§Y#÷”J±,Þ{‘Üžúß¹¢®¾¾^,Óârj#¡%Ñ'¦@<{:8Fï)µ•¨D4íY\±$:ÉÝ;Ð÷õ… õ5bÇ€6Ñ´·Ê­ø´mYn 4G¨hä%€ž²Í3®XÞ2¾œ¦¯Ø$ƒâsuGC¡§‡`Áò©ýyÛÞv+ î•œä¨æ)V=^¤¾ÖÛv™‚‘ÌLËëEÒ»YáA¤1g¡,|USÊîz.´ï%÷¦‚î…“— ƒ•·þéÊ.»xe\^AéXf&›Ð& ©Fn ¤uÄå@S¢Žƒ0ƒ¥‚çÇFoøE¦Ç`A O¯Kt|Zå‘Ч·ú+vÚ½Á?ú?7¸ûãü€Œ”Ú6ô»kjˆ£/¥á9²ñ`cÝúF¨Î޽‰\sÑ…».î7ƒ¯±›’óì.Ù§&Wí´Š §x¥[‡Ð“ùËä/£Ê}É“x™°[bxÅ^÷]Ä)©“Ú6ŠýòÑ5kèNæÐw‹ißûW¾ÞTÔËßJpÆÁ!%³]<º1Árh¬ù´ûäƒIoú•d‹ý×õY?ê©éOUÇñ)<Éqå,Q=JÂÝ¢Óm3Ž,bÍ‘O}ÿŽ€½gÁ¦¾| …¥h¶íµÝ:ió01_cb‰Wð!ðź#nëGõÛ¨DŽŠë_a¹õ]>Û®éßÀÔÞs¹Ýš ¡ú ‡H§×•hPTžÏGeí¦¡Æ!çüØUm¬Çø‘›‡žt8‰§Ã¯|©íÕ,dM´šP—Ô9õ:ÂÁžù ÈaDÊØ¹&æ ±RÏå ‹U±õ«Š ÝÉ E…€,I®7¡ÛôêfÈ0qÎâ–bÌÏHÔ\¸‡æštSR<Çj9W5é½O¡‹h0uº®ß#6è¡Ìl»hpÆN¼Ï±;ß®›‡^¡èTU¥›ß‡Åå€TÒŽçÙÈ;÷u쥒9—Ò®Þyo;M !1ß¡:šÐ¥ûÙùtY.£Su¶IÁ­7ŧJ†U(™ÌÑ)¹ŸÈ"øÑýFÎGtˆIùS—2ä½47j媹~лò{µBtƒºò¶Éö@öS~cž©áÅÌË1W'Ê-ùݯb„‘ÉL´–²9ë'>l ^CZýMaíñÀ>„¸‰2œæòzjÜ•)'dâù¹E$2Á1eNáNªPò òоuf£>ß(qà#;ÖocÖ&i^ç§”‚Aô8wÁIÃÚÅ~èZVë.” º„FÇö¨?‰¶,^!dÎ÷X°Æd¹X;ÜàhT òy )…ìB?Õ—J?ΰ퓯9š¦$ï¡Y{ÑÚmÕe:“· i° ;dÌ¢A8w?~3@šÂûƒRó»mäͧz¸Qâ$7_¼2]z£Nä$’“P—tÃŽl]V<åË‘êãF™âBI¤“Å:ä€^UhØõ$m]¡jö& 2¨‡Nص„¹~Jxð~Ó¶%ñ÷ÊÅ÷µLþLž‡°²£õ>‘ÖøfO2ðŒåü7ÑÝËËuŸè^Í©~‹7ŸJ((c©§¾;Æã“ñ,B—[Ûª¨ì[¦»r˜[Zß ‹“†W1Ý=ªq(œÃ')­ÕæGäk£­ûâ%d6vlóÔ@ò|_JÌæfü˜?¹ÃÒh–,Jw¼a85ÿÝK[³åç9r(?ß~dó{âwÖë-<~§8 I“%ˆ¦´›œêävÅÛåõôÃ"ëžo‰™-«À"í Ÿ*½Í_”8¹)!6$¡"³MÏ×çÛ]$2–ÕärØpc^œIÜJR/Ü;­b'ZÛÝí4\Úó˜Fñ¾@^è£ÐÍp¬Y ŸÐÔáŠâDª9ySã»sIÈ#. ÷ ÜÄÍëWY£líO|6ã6ß´‹6pô‡¦6ûÐ#¤¤ÄÑ2OÏ­ ÒˆáIèëòcx»8è@'FY_ Vú·® QÍLçΔk|—®åcý±ŒÃìèÅ»Í]½`GCgÎ*Vˆ­I0§½·%«ò,6y{6‰†7ÉëêÎÅ÷cÓŠÁ|Χ#(¹+FëœjHq!¡óµ”²Ò“áXÜÇ!£f«p¨Y@ÏAùáXTý\®ÈSq…Ùá5q—Ećèûýä³”ð‰/ý›>¡`u%¿ žòQm‹<$„›¿$tâ’ꔪ·«Á÷‚ ë§ø/ÜÄ‚Ž 8×Þt«¥³ÛÚ;ÏåyãFÒž¤H†µ}£±ë¨QK4}‡zGªA¤h©¬ynÐÔÓV‡…£²„””ÐÌ>Ôr\T(ƒ¤5ÖaãóéhÞjÀ#E ˆmœ0p{f¿‘X˜Þ¦‡zŠáÎËŒhL%Õx&T‘º|/±ª|F¹D¼ãdI6ì;h¿¨³Kô NÐÙiihnÄËûˆ"O]®éuèþv"Š(ø>%ä;‰mÀ »;[WŽéXO]ÒϘ–3TÊr2tÂ×ý ”þ'_b÷v\IË6“·ëeò¤:¡Ëq@GûL[£Ù8äÊ{´©Mî £«šanªÊÝYS?/–k¿72äZÚ-wF¡g:9‰‹wV±ï(4SÉÄßÊœ2“SÙî¼gƒ?«'£Xc®t@³ÁîCi7Z´’˾'/çÚPÔ…c-¿Xíý0ñüàô3À‚¦÷Ź2(”¸Ïr‘{¬öÖr8ù)ûå·x.Äìð>'Õ×\Û3¼«Œ£‚Þg†U¸ߎ8‚èOjJ RQÙ43ŒUÜV¶¨¯¬æ£ %rSZçT8´g(…t_µM}((ªe‹¿Õ“á‹Ð#… Ž–çƒ>ô³}î¹èî’æk„ ›s¹wZ‡FΈ>ÖÚ{‰—ðjqX&Íÿá×íèô,¡¾'éB;Ÿñó=dùèGÑëÚ)nI6 ðünF=õ(‰½ç¦ëù;N7ùcÔåôÒ{ ±iT‹ï¦Û(7á;êlstý N¸²ÓòfÂØ‡à8xælÌt#T±5V>sþª‚„Ɔ¡0_[­“ ÿ¢ÇÝø(m c§¹àÓv³ßÝ‘5•%7ñø¬¨]Ø”wu)bôy²É!YÎ<Æñ)s 1Ñ‚Z –w›"¢'üoŸÜÍ÷Ù:Ÿ2ùÙx úbì™ÏÔcÛ=:¢’/%¼ÄÚ]T4sKòK#“sÏS‰-¨q'^0á’ɆÐa#‡MkâW"-yëº/zWiR¸#?ß •Èçì%v¶‘ˆ*Þ³ßîëPM…žÈ 3?÷um¶• ‹CbÆ.ßêFÓsèi*Ì¡ÀûQ>v$¢ziù“åHš/¡ ¤tCz†AUº”·ëŽŽ}'«±Pè…6™‡x4KöÌ>ZÆaWÞY|-½ þÂp/êÀHˆ;Ž®J(“3Pð ´Hã½E•®Ø<ú˜6·þ›ŸjzÛ©âÂßrèö¸_ÑþÌoå ôÀ Æú n{ÞBF×ê¹þíbg¶òºE~-?û„)”eQý´ð:&ПŸ@ñû—Rn¶b£“%¥`K6ô«Ÿi­°©e¦|ÁÄ„=3V>rñ#E2=±ª`3d;UÿBK„´¨ÈÇ!U ï±eèÛæZWôfù_â¯>F¯}éæ÷hã}¡(<¡êèð$޼E+¶ñšd]‹O°_°Ø/—Ý™1äÑ5þIWÌËç{¼^QbV³Ã~nïLUö/´ìµq—õOç,  ;@C!ðÒÉF—{«‡„˜’{b (&øŽ§|KNI½ùq¼^NZðo¨vó• =™ G™\ÊÖ) ,ú3ÁnÕ5è2´iÞWñ©Àœä!:M MëT=Ý!)Å¥èmïµLoé;3f·8í’»Ä@=lRŸ†úõ gzuϧí‘T ÔƒóÄåß y­KX¦þÁþŸ'íï5-2*î=#z¡—ØÈöo7‚e ºz‹üD¶i·7?÷ÙÓHo&&!‰™ ž½‹+)‘;}´èu“ß0´)òô %vS÷DsþQ”lB9›<ëV'­¥"Å=ëÊaÌ‘äG]÷¥béúrÍé:ÒØZm«aÐ W RFZõK§¦ä1öÀD±ƒ¡¶Z£ “ ÄÛ·óg ¿‹ÏëÉÀ¢Qüºv™Öô¸Û»•X½áðЕt«<ä;J¦ñ(]Èàs¬Áø«Þá1|¨ÄsÊ—K5éq´¸‹ˆê ¯êñÚä–8¦°J0Ý% 9QÍ¢iˆÅ;¥ú–lÒrN`#&yOÐ S³ID½d›ói%}¾|a ‰-8/ÍkNƒ^)3ù¿– Ú‰ñ,ÄØI?¾8ç:;3Ëðè׿BÉ‹dûô6ô$áæ °ì(¸~Ó­ÕmOPåÀ`µ.•¡’š;™éô•Ø,‡Ô=U÷b¢,æì|ËU@µ€ð’im·©XŽ÷×¼Ñæ‚îç¤nü뙬_48Æ7÷°b®Ÿ•xDÏ “yòouÐheÅÙÚ$e…¶Áw…ûÉü`êìl?WƒîË}CuÞ:ÝúÎÅN ¸ò-t“òQ¡`¶Æ[DñÚ¢7Œ¬gÕA|íýËý?ߓǛYh‹\¿^ÈÔBÔlqûòúò :zã%ù•^íI/|ʶ(E|Í0|¥±ëvšªÑ:§k‘ó€à@îNñµ†Ù%]”i8- {›N•wøV{rÁìUD§ŒÍFôW…ƳÕwu°ãéOsû—Tbõ ½/!i³ûQ†÷¬ŽéKèfêc@–ŸdÉt Çì "IÓRsöÇ¿&µ&ŠK™Q(l×\pÏq[Ǩã‡|¸% A%³mÐðjÁ•̱q;USO¥Qö[CÂçpè$‡à¬NÄpV¨;á3iû=%ÝÃeÐÓ›‰Í`e©«7QlTœ¥çØS¢ÔJgç-(Çß^…H÷!ÀûÑó¤ou .{_ÐFO‡š˜R[Olœ„Ý="üüq%†LÇEN?è=¯7ÁáãÁ±°lw•1¢ÁX ù–!OsªÙÎd —­œ»…àÄBeô´Êïø}Wl8ôެ›Á˜U…£i§|ƒÌ]ÕFÎHˆ…XÀdÕ'“Ûaá W6žm^”ê8…õè¹×çO‡. Ú×öNÀqrÒ³·C•w{ªczåH®èé^í×”ñ—HìDé™ ·H{’¼)¢bý™MLÛ3ñ`iurñO{$è±ì·b&Ö¸òj®,éßÖ&´WOæ Ñò*zÆÖØ%š¡›péÐàêP ¯êôO¦©Ì:ïòdµ¢‰é3 &Å]ÜžnÊmî$áiß2$ϳËÉ1®šä’¦k¨}HÖ›vÌxÒ.¨"p6FKôŒâ1ßá³/d¨JL<¬Ü \ÄòlËRlÌf­Ù3)AöúµX>þ†´1f™ á~¡ª~—°dHÓ°k¼Ôr­„¾hpÞÖÿVw³sÛM9²ðM¯•œP¿Ž¦ýOîêClû13Ù¾g¹Ï‡~b½ÅY‰ *#½Ëâï¦×!æˆ.fYH³ón‰wc ¯ýqŽÃœ#Å¢¤‘§ÅóUWB—ñ±Ý- VVÃÉFðöTÇ xµ^vw?Ö{ÐpÚó 0ƒ519;·Y|!·S ròN¾¾Ff!:PþsÓ¹÷fº«÷Œ¼Õ¹qƒhë–­¥3Ëådn‰—H_¤ ¨¤cANKÙ©+¥®gÏ÷à*Yßø–Y¦-°¹éØæhßùî”ex ¯úÀòM'«!s°§®ŒquƒÇøm ¶{Ký2a;Á+ßËÊzj“š„ïqžRߎmŠ–^ñ›[~ Ãä²ÚDH®x„ÀU^íü&ôê$¿,ãQ Þ3ÍœYm©7ñRLwøIÖ¹ÛÌ*ì£î×¶$?’ÚÕk°ˆ6#Ñ5€øNÏ^/( =î/CÛò®Ý=ÿ“ÞªÇ÷Ev36AÛMIW¢]>Ý=œN#š k[cUÖ°FÜ¡´~U}Ebâºq4QŒÒ^õ‰Z°7Ÿ[î¯7öˆÔy¦÷±ù›–­îÓÂ,’tŠ€A#9--ôf»jî´da>}¬ÉoÀÞoõÌTƒMQ¾ö‰Ÿ4YËc:…éñz‡û­*ÇȳÉ"[ŠúÀNç\sÕ>™Å¨·Ù@Øu‡W£ ‰qo•‚,[zG5Ò ‡‘¤m€ N…9Í´´ÆVª:Ô4Jê¥Ó0Úð$q®gyVì ·¼„:(l¸+zÝ«2DBBÕÞᾉ=«7D¬ÍÕåî•Í&y–‹S|²ÑMp¾Œ­#;Ï~èmîY;8G1þ(½õj|‘ ëÊ ß´–è042:Î/@!ÜìUÙ]Ö'ŒžÑqz]_ØžM¾Ãu‚ì`ë?82Ž5öZÔ-œ¯ý$"¤ž€¦,g(F Qe¥:dðsph¡¼©Ý»¬R&ªž+ìiÉòíĨS¹e‘ÕǤإ•ür*îôœöÑ< ½±MŠá¼Ô¹}*Œþg1ʪ(‡”AZ¬ú­²NÚC¯×ðLùŽëÜs_ñlºMÐ\™Qæ åvY×D¢}fñ@x1¾3Îu²œV.; *Î’èlX”'ôÚ´JQ”Ü.˜^úÙäå9„®{ÿb¯V‡RùD&”ú©Æý¢¤}·âµ’('£|”H³“–ñŸªä»Ü’Iw6Òñ]š@!¼Žr¬Ðɹ¾úŠSž0Òër…Ï!ß—m£€&¹?zMu¯è(KjLd;AHàƒQsoR{Æ‘&ŽÛ%RikSQhIŒèlGž nó}ëv»'ˆ$Yà‡üþc«j÷óI‡¯r¦‘®¼ö?ÌKÓ­5[Hß%àžžÚá ×¼”xïdžc—•b/²!–1Ë2>°ø ¾t|;ïºÓýA!¸²•–‡Ó&òÐä>ŒE µÍ#ÝFÕÀ¤mè '^T8;Õ©u;oJ䌉¯»>;ìo ôdNµ ?GÀÄSûr†U,.¡á]^‘Œ¾'“a*°( ôyNÃíå²ÉŠhzÞ•¥·;ƒHmÛ% cÇ-ËàQä¹£R\©Ts fÉÌzGR—Ì]×¾‚–³¦hx¢¤û\ b£S%ï–d·¤qÔ3ˆ ‹˜zá¿-}£U}lŠáݲlù­ªHÙ÷Œÿ¸oñå×"‹ŸË ”¼oH½?Šì‰%HïW Œyb,Ü·ëh.|fã”îg!ÀÖîd¹³»û{œõ¢—iOÍ|œ&Ì=þÙ_„øq8ÅØ ƒxظ0Œ¸~÷u÷ÁŽ.›/É„µ§‘¤˜ ÍÒêö€ÂÐþõ,‰#wApÞ§¡Äí-&ÓQF÷•p¾`,qDUß#þª ¿†*¼ £²û ¹­Þy@Ä}…¹9™C<ŽeȾ*^ÑÙ¨Zð5r š1Çࣆ|5’Z ÷ó/‡Ï½—>yy(ï|RJDhÐŽY˜S΢٨£”m€R\ï<rqø‰÷$š |ÂÄDs‚ Á8˜Hà[î¥bˆHTÇT!gŸ7›#»%„8W$`X†o“ *Òf'ÚŸC¹×Ưs|Âé>yÐD8h†„Z½ðØÒñbžË7³@hŒM+ºM;{¹2ñS]›-åø±¿áÐ)ã-·© ”!”Æ*Ò®sM7¢*œÁw¸ÒtDâo«Ìä}ËcKž·qi‘Ö< êÑ«ýÂ/Rú~Gïµ2Ä‹½f-MfÔ]*6sùžÊ×Ò©^×Õ´ƒð;©06§·Ïòl“™ò{Šú&L/îÖ#_CP# ¹OºNSZ?bÙEŸß××¸Ž°Î —ÕâIXU㕼Ï÷Wã0ã{au¨§šõ¡Í,½©K\MûšÐj”GÞt{}ªƒ…;oìIá›7Å|ëj2kÆ3·æIEE¹êlæÏ³y&–nª2™•S&–c3¿z $ ³Jæ+êÇòÞˆŽûø (.{ÇkˆUäãÈ\8M‹=n ™Çd ¯q®AÇ9ÔRHl\'ÌÜÝéÿžJ›Âڢܶ­wɯ‰€!ÉÌßuˆD–3UwA/›©KÑþêxé v#rªH¾þv4·;)62¼£±ýÇyv–nKqIŸG€†I«­Íz‰}÷ÁÈ,-¦›‰„õz”þ}ìžþ#‚œè }º¯C}¢^ÔjEâ:T™¨qfbóÉ*Ë Q×=¦ïR Ê:T[²—~O{5`S÷szÑxàmÓë‰Þ÷Úƒ:÷X¶¿1Çö> ¶¡»È„~ž™HqNzƒ²þÎ)MŒÿ˜¸ÙWƒ ƒ©#¡>ºÅÙÈ¢p™Rt5¬¦FF“8ïÙÄõš§Ì]/Áù•¼3ž5:}4ÚOÍlÐâ©¡ eÜ&6I6¦ãÓáUnƒOm·Î¥æÑXf/}œ¶ï‹½á|…cë}:B¢æŽZb-µ;;æ1Ê\v)zä†ÁfÐb‰N†Æ(±%A4*Ù á T±¤!iÌf̰92*xà€Ã«6þ¨Æ¢qt÷X7mÙ…^w&à˜ðQšŽ! ^¡'É…!^ Wǵô1Õ(‘ý[rh–å÷Œ¡qÇé/ÀõŸú.–H•”¼QÂ^sBRÆýÈ´íü.{8™‡,¶ÂÌ,VNAK=uøŽ˜'Åï÷-ÃÌf_º¤ç`žÃqJÞ—réÝÇœÈöaïî(KE)B³/ÑøY±jH_\1-ûäæžS!Ò.‰$+N&©Yqˆà2)¼Ø*ñi^Ðx»¶•U'cÀP·2Aþf"Öº¤Ô8ŒÊ€ýd¿oµ?ùðãë[D¦®ì} ‹Íry(–ÖÞå1ß.ßq‹Æ=”—“GO {QÃê7•AÖöÃr&'ÚÈÏ7ß¿Ÿ…uå™_·ivÍf*·åà?)Œc·ãvI#Ó¸ ºx“m­ck¢Ìž¸x‰“,mU®w’T1šÚ‘–&ï–J“§%UÞµNï£é¢ŽÙ¦¿r§/a2€·zç?Ñf[×yš¾)Eúý"×»NT¯Š{v]‘ƒ|íç êk… þü3“Ojöâ”9wýVænGd6a!uµJ­.$œæü¥ß3*« 0x­‘0Iáþ^ĉuÝë‹ÍØPZΜ­Z‰qb“ïÄ Q© v1Šý&Wi!V× <ø¸¯(/7 ‹U’]6ƒ‰08•¤’À” £…Ké—d,;‘}qTteŸÀPþô¤ÛÉZ2egw2 u_öز{NKfh×ç¿¢úœ`KÔj$Kê¾ü˜~°DÓÒM§*kéE+ÿù— Céc\Ïn>Ó¦Ý> stream xÚŒ÷TœÛÒŠâîî4ÜÝÝÝ]hÜÝ!Xp'@p îî‚»{p’à\ö>’}þ÷ƸÆ€žU³jÕ¬Uõu7%™Š:£¨¹£)HÊÑÁ‘•‰… ®(¦ÃÊ`aagbaaC ¤Ô°v³ýÇŽ@©rqµvtàûCÜt{·IÝÞ‰ŠŽ9w;+;€•‹•›…ÀÆÂÂû¢£ @èamPdÈ9:€\(ż]¬-­ÜÞÏùÏK-€•——›áïp€¨=ÈÅÚ èPºYìßO4ÚÔͬAnÞÿ“‚FÀÊÍ͉™ÙÓÓ“ hïÊäèb)DËð´v³¨\A. sÀ_’J@{п¥1!P4¬¬]ÿåPw´póº€ï;k3ƒë{ˆ»ƒ9Èð~:@]V ìrøYá_À¿›`ebýoºGÿ•ÈÚáï` ™™£½ÐÁÛÚÁ`am(K)0¹y¹1€æv®Žïñ@ µÐôðwé@€”¨*ø®ðßú\Í\¬Ü\™\­íþÒÈüWš÷6K:˜‹;ÚÛƒÜ\þªOÂÚdöÞwoæ_®­ƒ£§ƒï…µƒ¹Å_2Ìݘ5¬ÝA²ÿæ¼›þØ,AnNn.Èò2³bþë o'ÐßNÖ¿Ìïü}ï2@þÖ ÷¾®@ÀÍÅäïûOÇÿ"VV€¹µ™Àdií€ð'û»dñ/ü~ÿ.Ö^}–÷ñc°üõûßW†ïfîè`çý‡þ÷3K+‰©H«Óÿ[òbbŽ^_FN.#' €••‹ÀýþÂÿó¨­ÿ]Ç?be,¼ÿ*÷½Oÿ)Ùãß3@óï¡üo.%Ç÷Éhþ º '‹ÙûÖÿÏãþwÈÿ¿)ÿ+Ëÿë ÿߊ¤ÜíìþöÓü‹ðÿãÚ[Ûyÿ›ñ>¹înï[ èø¾ ÿ—ª ú×êŠ9Ú™ÿ_Ÿ¬ð}D,íþÛFkW)k/¹Šµ›™Õ¿Æå_vÍ¿ÍÎÚ¤âèjý×£ÀÈÊÂò|ïÛefûþøp}ŸÉ¿] ÷åùß#%ÌÍÿÚ2¶÷º¸½Þ/ùq|Yß×Ñäõ÷˜™ÝÞCïâüŽ.Ý('€Yô/Ó¿7€Yüâ0Kþq¿3åÿ w¦âÄ`Vú/ây÷iÿAï>ÿ"^³ÞôÎþAïLÓ?èýt³ÿ"ÎwŸ™£Ý{›þcù«[Ìæÿ€¬fÐ>×;úû¢þØÌìïÈÚã¹Ý]þðN±üä0[ýr¼·ÃÊÛÉ ôÏŠÞmÖÿ€ïêlÿß%Øý¾ë³ÿßW–ùO*Î÷P‡÷ø‡ÿ]žãŸÓ߃ÿÇý^½Ó÷{2§÷G»ƒÈâO8Xÿmuù߯°¾ û‡lÖw®*ù <þ!“óîúþtúðÞë?éÞwœÙÍÊôξWãæù§xV¶wÃ?âÙÞ#¼ÿߥøü ÿgÒÍÜ]ÞKwûûYô¾ÿÁ¿¹€@^ 3„•EG3þP›úÐÎûZQBOƃIÁ9ÊítZFß—.÷GØTÚš¬à-—_¢©£ýhë{’4w"«¤/¾§m°ŸÚ“U;žüžÕf:–§q†¦ŠNE‰á‰5Dý^œý´>ÚB¶÷ÈQæ9»ó ¨`Þ{H{5 –¯M„/¨ÖpÉ#>—Ï2ÆjÆ|,™§Ì7Í^À#‡qc$†£Ã¸òB¿û5‡‘;õF*—HàËþÕWo›-îaÁg£RƒÍµÿ¾1äÆÄ •¯ØÑg9Ü%ßÒâ˜-Á¥îÈø‘ÕФy-|ò<—Ð2FÁÌ …̽¹žf™.vZfSJ*jÒ8ß0ÊRi‹äjŠÑRãl"ëÀ‡ bõ$psú®>’Þ³ Í:¿¤x<>ÖØ“ö$¿1w»³¸ž`˜+€3Ò Ð©`›«JÊ8³ßÕóý%ÕF]c‹|õßò™Š3Ú@Ú|ò+v³7Øä@ôâÁU™|2UiÏEŸã1_‹&{‘D²ž¾}†ó°iný0p‘# ®Éî–c$içÀMA €ŠTûKX¥§×C®ÏÙjG5èËdN¯Gõ mØ¥¡k³ùËtÍpÅs袗¸%õáZO>PEæ*ÑE*Sà·¤\AýÓ~Âí&¥€Ó² ­¹Zg89zã8›¹Æ]·W]ù•Ò.;\†Â•ªsœ€V’¬èbÁÉ/°Öx“šêDJ¢…WšB«ã냈‡mÔ¨[+“$‘ŸOE^u&ŽR’²<)3Ï#>ùÜ Z™Œè*w÷¢°yENa6®ÛÙçQO~º™ƒ;NÄD))d1íýGÖ0u²×Aˆ"6º¦3B˜ùï&„1<|: í¯í4+`[Ce n…õ=+ v'Ìà©ô~˜”àÏ”åvoÖ"¹šË€¤ŠÓ¨qZé\g§?j˜ó΋·‹¢Ñ‚ÃVõã&€‰>[Ö³v<[ Â¥Â²ÃsŸ“Õ¦ŒÐi¾<+àÚ SŒ“Ù{n²uPt8Œ»ì|ð‹~›ÑÀ8W€MI6œö­Ð)1y{äd’NõÄl®Ü_óS¹g;±\oô¼1µí•ªÍADü¨TYbaÃg.L‘`GNÏuVAÜo qïûp‡N÷°yqž†?ƒˆÉ ®ºÂVÜQðTIE]êP…o`Ro¨Âw„²»ÑÖÏe‡ïÀbÊnoØyõ“á”yµô«î.}úš’QC­1ŠùÊg4ÈSõLÏ; 5»åxwt;"÷>ìÔ%ÅTÓ©\Å¡Wlië0Q=”Ðô4©·_lƒLêñ$¶^™ëG Rmi0F“ââmÓÑœjPÜL~‹}{ü„·»Pg ó1àDÓøWÙxRã+6ܦe/j Ù*‚œÇ’+ ªú0¯ó¢çáô¶ï^W8Fõ¤ëd2ºbhü=•*ã7§àÔ‘TQŠTõÜèmèŸÝô¶ž  \ˆý8SKZ9É‚éºkP{ˆÏVOjc&S%âb:n,lèSÏÆº»zÆÁæŽf“{±ôÿ¶¢€¬Ør×Yõß9Z!_ A5—M”¤ƒgØôz0õ¹yµÁa—Á_&ÙJöéÚÔû›bbÉ!þh¾OH… ,$-“ßÃi’@¶q¨‘%÷ÆÒùDˆ´.ÑìwOÕ™ñíÎVèÈ:»³å Ó«6æÔ´Í½_˜°8|¦.iÀq©ÕæšíÓ›ú| j†Ø,M2‡T0$`fW6t9ÕLâ£..ÓbY§[Ê•ýyÂm°—ÔbÝpZ'oÄÎrr¬Ë6ÉP—vÊe嚇ú²]hk›[&7¯Ã| ¶3z ™Ý¡}·y6®!Wzt±âk¤^@¦ø4„hM&(dÉhñŽö\hÿÅ÷÷åÏ%»’˜‰•dÅŸõ½&¾{U;ô‹;S4QhX·3¡ÝZßk/1ÿ´>  –7YÍÉ@[y!|ó?¶äŸìI¬G­L)êŠZ”© ªì;}z¸,[³wà`Íxdüôû ï »L- ¼ò|ùÒ7nD8öAÅ ï]ŸâÐC†a½«‘ÃG5,1k¡›ýéÓ¯—gkZR ¢V¶uŽéÍÕÐÛhYo‘K¿í?¢xh‰%²O¶L ‡Wr`ß.¿kÒXÜ-?lÒ™(³¥E·½á­ù˜²C³ì!Žß1âihÕúvÖÀßË\&D}ÒïaÚ‰ ïî"§Å?sÄ(ý ì÷>Fà´ õ‚rKØU“§¿P³xÏl—áåÆQÜÉÁiXà¶6"¹ žÂ0Ü®8«×ñÙcSIã¾Mvâ/·Cá–¢ö/úé«}Ù©âü(‹ZžíÒr‡ä…fUmåM¶g«5®>RÍýIñ^Ãj¨‘|‡µáx:úñwhM5’¶¹«¦ì½à¥áã\š¢ßô—Ds¹{Ýr5” iï Ôs´-¥ø=¢V_r»ƒ(€¡íH5BÆ=øå•襠àÔ½Ë@kß(ðݽ× èw%ѵ ÁÐX-ÙÃkÞ7±æSž é¶äŠŲڮƘ*Œå’] k§¸íôhÚa—Ë2¤¼€ý Ö›/ˆýKñ_`øÍjŒæ¸¾Xd3¨ô:M–ú]UÛvªñ´s7Ý’Y#FÀD4×F=¡ YÙJ³D"µVGÙ&5úbRŸº7(çí5‰²:0Å@AtjI½vØåhwý7Zºõ ôûb^ÂÒ-4ùñ9^£cësðUalÚn’C£`,;>‘Z¦m9n®#“Qk`õvZE~-ëX§™Ï°Ýµ-å6ôÔ…”0v·3º”ñô§#’& „ã´ÝÆF˜ùÛb‘šÈÕˆªì7ú«s3i«•aeJƸŒh³"õÍÍ$9¦|ÆóÞ[Œ\¡›ˆº2èYµüx3%'ltv^I ½åá0ZœÛE홑Èm&>ór#íµöNûV–dbTè‘5›0º¬Ú­ÄÓ]v8ƒgâåì­´/Gå»!A)ˆƒ[Î"ð9˜ÊÁG<*´8Ǥ »ü°á4à…,WRÓjCýQÅ ÂÞ¾Np¨§<Û™ªÅÔJuq[ üL²Ë1Ô½'àL®í&fÀŸ/Zzmø\XMRGh7êéíí'ƒ•ï{®€#`×3|UüI ŽÖ„~ẶԶ¼j<Ó9ð4¹ $5=呤úiÔ5÷"é±:› ›2Ç,’¢h8 )1-j\ù1™ø‰¸¢Îúåz ô pØ/…èŽìjdMŽw|æÝè™ÀÒ/~õ5)`Wm(ɤ“ðņ<„~e¤RÞ6Y•72kL6¤ÜfüY2ü§©íj jylxƒP“çñ†ÇSÃŽß\&Ž“d:‘9Wá5ëûˆ)'°FÓÁ]øX^ÑŠoÛzôåc05 âû©“ô¥Äk<ñXŸ‰¼£™¼ÄgW†r©‚{4KSýW d"\H³ÇÇpå, ‘²{wø×$„ñÊÆI°4™×è}LŸÏˆ9cuÔL˜×»J}ayMªy¶±Qã£wV¥0$¨‚'üŒ^™F+ó’<€'ÛêiüÜš”¶ü{ Hbb&n¶Eþð’ý¨MA2jÈCßÉ¥2NÎuÐj?ù­{O]º¨¢[UØöxphÁÎåccÈk·Ofóü,M ìgÇŒB_Ð}6ZNdϱÿj0­,gÿHZÕ{Lc•ûZ@rír÷µ×9R;@¼±àÁ^ÿFðhÉœòéEè­˜ ³'¾¥åÃþO£Iˆø$õ÷EAÙ+|SPÚãýíyÚЇ~.ÑÂL‘j>ÓJ0 _[äíÌ®±àPûÅV~7£ÓÖ6 çIA‚j¬æC§7áNë¼³í xÄü…rÇnµ§~¶•ùC{]bl0É †–nîl.™r1­ÿ AÕP`Þq`Âb::`Ñ"SÐ9««Kn ¢R‚Lo­{A^‚ptÖ¬ï÷ Í@ÞpSöé´Ìq2» NÄ0XX™\ü]?¤ ÷}R*Å8I¼}«™æN±†Æ8M-i󳤼‘ùec/ùõ«z4“ü`y.•·ó'ÏéüåÌÇœÛZ‘3JùÝ˯vö³\Îl²áÛi1íë`ß{ΊÈ#D€ì´yˆàJÜGrÜ ¤Pó;¬Üe‹ò>t’üx[cßñÐM)]I0GÕ„©(qp½ûp#Êu´ÓµVjýÅ˾?~϶ì9*³ b1X^¼¼Ù0`8 ZkÔ)À®æJrœºø¶#müº”÷¼h•Lü«®ãLÉŽŒfn%ûó¥ÚÓ¼ÄBgŽ!ã'ðßû*7´ÔgÏQS}’rZ“ú¼=ö_ù!"Î\P\ ÈbAgßÏø½Œf/BÖ•BÒ'2Ž+m¸µ‹O(2f“`æ`S–ÆF‡ÛÅ´¤i·­÷qõ÷eK´EDZö2k¹~ ×`[‚¡Ç|@Ö“.;ÅÈÿÈ¢äªÀy·6yœ¨@zãÅεhiìñ pèøU²¦u¨ @–¶QžŒ]çç¤g"˜‚êï ßß}én“ &Â_fCŒp%¢¹¢é}Ô`슨£˜~õ{ ¢2§Û:WlL#yÖô'o:Kæ”ËÒUîÊu’€5–¾ÍHŠÙÀ‹¶‡üWxü‘µ*/! YÇ0îhĸÞ_ëè ;ˆ¥rf»|£ôê$=!04€´#'`ÉùÙˆ«!UZÍÚ®a–íÍy¿z£Â¥÷Ù¦ñ«ÍýxºÚR³Àåàz¢mÎ…¹¥¢7Ó¶oÝ›xoS¾;¡ß‹S]™B>WŸ i©ïðÖl)úš_ Ó¼ ê[ýÖîè õ1=ˆ··ªú©ûúeÊ”ŽÏkŽýñ »×Òm¤µjÀõÛá9b•çú—Â¥´¥“È1¯¡,q‘Ž×˜dE§IýøX–)áÒÐ0?„žÆÉm<}X™š~í½åàTIìvÈ n :¬‡¼ÜŨÎtñª¶{kežnï9ÿõÌå÷ÙÊO¿j>¾4-h¥1å>M”ÑuÓ+ t„ JÍù®n Mh5r¦àM²J²xâ‹YÎM@&ù t†¡*$¡ ñ$o»T8nê{‹dDªFÇ1ÖÁ2¾°Cë×Ù°2ôwâzdû¾ ÒTxn„+?@Lìé ûÂ_&—P“½\È"rΤüÖÞóÉr¹²~»Ç0Ù_ÎÙqGné|q»r¹Ï±¿¡%.&ö±LáÇ“×wVWã²J|¶±=½ýn=¦¹uiáß»„O@Ù1îÍÍ<ÇȨìÛNŸŸyÐ%œ’‡º©î7PõÙ‘nw\aÜ™1§ÊûZ5ø\$=5£Šóc§JHÔ¹³l@À"-©>ë ú½Ž}Uɧ“×tN²ÍK Ù£˜ÂþaÛV‹ˆL«ÿóüIšH¤vX[™”\M—ûªDûµc}lîdq¨ö4ò2c…^d²aAcCIcXø7¦híâ#°C®ÂË; ÄÝ©©À¹]˜ó²ÿíƒ>­ë‹’¹@6E\Íôö±f…â< Ï42I†©dê© Æ šS¿×‚³ÅüošX›ìåø‚ÀB£öÀ4<ñ=×›ýÒ R¶Y\r8pñÒ=ãˆ=)9ž™—o/£l¾·=Åúfhè¬!1ØÃðà:£‘m`©;¾=UG²«aR#ðc¥,ÒÙY½;GÊ…uJˆ|­¦ í¡!MRøìë9Å9Æ4<9||&^ÞZzsŸ` 6¢,¥æ›¬gÿ4•Qկš.#ùIVï´‘‰HFÃaÿ›íæ@HjM28Lûˆêønž™$Ç¢*ÇO@àó¯b:ë0û=Øñ£_°¾ùj *,fWÑ… ±"3~·¨ä‚>fák8=™´PGZîa,TýŠ í²˜æ&kÏ" ¡Œ,㟴\ÿ®äú@žìb[·=—ýíBõœ:—5Ñe/ˆƒ¨|8]þV¢Ò¨â±ëG¹TI Ø®·ˆ$!q¸c~Zžæ‘yõ¯®˜‹p«º&ÏzsX~c¸aÀ.JI>z‘¸¬Òö‘Súö—Y“˜ƒ 2Ú7½çò– ¯Ò<ïðÛdêA³@}Û`‡þ~RœØä.ôÂPWÝ^×I‚jÚï€#á>Lah­Øúî€ÅBë]x´€‹CJq 9o,”$/…o!ckü2 »ôÅ¨Ý pºfýÔ¿¿9=,RXɸ|/FãÛo†“6?ÞuMm£ì¦9r,_>ÐT$òª•êÛŒ¡ƒË½soôýà+þÈY"â1_)Æv Œ&bkTC ß–"ÕØÆqhÌzwÍ’êñPÙ8áƒÍV¤wÿ°KbijuQ6ê=³rÒ> ©•—ž~Ìš_Ò‰i.U»ø+PdDr9¨J\t‰OW»ýÛîU:ÊUúú†’è%³ßål¿š x"pוÑø¦ã®¤Â˜‰Œ9+„©\°ýÈÜì‚ÓðxzD›IÍᑜ!Í©JQöK’4ï³ã *1bC\ðwß3a§m&tn¿±œä¼?ÄYqxŸ¬Â«+Ή¾crµv °›¾æ¢TwÇ* V=×òN rìoK1Þ4uÚ,Ç£d•!ªsØì˜Szø²(ÖÂÓÞn {‹vüÁòa³ÅÍ‘émìJË- ‡æ«Ðﺊ·v¡Ò0<¸GÐ,‘Ì8×Ë/˜V›òCò<.ŒZ¬+÷IĤм}öÑy¾Ìóœk‡AÎÓZüb.%Z ªªy"›ÈÇ´œ±`V1jÞÞÁh¹ð]ðxe7‡ÎG-WÅu1U® ”¡à`ý¬ó—ñŠx¢KŒT/ÝNµ’¯7+U–žÅ2/m<Ž@«Ô«°¯‘?ß”7†ah!Œ±¿^9&Èû¤»cÎôÅ‘¸ºö7`§t÷hP.(¤`(è—~h?ìz‘RæO°ÝÏ!g¿„ßù¤=cƒ}4+S|Ë;8‰‰•[årNczT]rõŒðöùá@¯–ú†ˆsºþ`“ Û#\}ç JÍ ÑºrâõœÜ MñÁrMcÇx‹ñ¸ÄàEÖ1ªâëÚÛÇÙ´¥ ¦ÄËçÛ‘F«P*Æ–QEä|\h •„8-–hO”ÌÕU55Мӕ®bƒÕ¶ÇPyJ[õãâÎ85÷fmV¦Öã”M74½ªnmãmËþfb›ÆX}}Ãtªá*w²š—VèvÕ%bòYˆ¥Ìu ÅöT±†¹3[Vkác'•€4—ð`ÍùžŠµÙ®` .¾«=¯žzë†\~ñH²rɬÔâOèø|I¶v ÍžÃΣÂ/Í2–‘Cª ’Ã’+;xÕ—ï?ç®DÔu.7§™’y¾ ÏŒ)Éðõ¦}M_ ôhWþ’ôbþvå'„v¾dœÂÿ“.‘!|Ün¡c+(–ŸJ¥öG•T^„iÓ:M|êæýõišâW0ùOsO=!ÚóëБv‡PŸî-¡yÁEU‰Ø,Ô k·ö4e\ èšð9‡nóºÐu"r³{­Á³ML7p (-‡=˜8Rþ^lËfr`­`¸CÝ,q7©ßG-!L+U>ãÓÙ~ŠSÙ¶7¼ Γ¶7´ºõÖ“Ëþ­d»b"u{;ÊEØ!è'²´Æ´å³Ho Azú@E˜RPm„-\ =±‡[÷üÁå07²¼]MkåorW4{n¦‹FœQr9O†ûbú9]¤¹/ý¦SŠ?%Ñ3›WÛ'äÈl"l­È8.¾¾ª *¦#YkݯøçDAi€ð¸WE™ : Ûý0 ¡£z ü¥ÇŒkÛïá¨G»lRºpÇ—â´Wµ˜÷ʳÌĽÙñUÈyíWqO‰÷ó¹OÝ'tpËJîØrQ°Ó¤çD¢Ìe¹Ìá(!Wée¿É(i¬gÚùz¤ rƒ#(D&4ÌêS|mìG–Àÿ¼è<\|wà%rºädkx|7©öÜeN÷¨j“³X2–ô"Íks%ÙË$H$ú"¥¹yÀ3U°F½El_¯õEÒ“Éñ%——ið.;žF?C-ƒh=˜?‰·#ÑàsßÙ£Ÿ º›^Fz …=2é*B2%ejxKǃjõÊYaµè:M‰XÑSW‚¢Â|纜VÌùc“OBØv¥a6ì4|E×n¥Ó«‘`ßSœV·á,Ùí¶¡SZ¢ê¯ezщU˜;ÚÑætèÓÙ‘Íëwkå€CÃ+ûD«<‡RCR5ú¨!Ä¥Äã ÷ oÝ“´ƒ“‚ô$¡N·ÃpÀã÷çØ5­óeíU†~0¦7ºø.qÎõpqÇüJf«¤:¢\4„m¿½&~æhWã+ˤØå¤ÏZdÁDöf„™îJ¾ú¡BM–ÄÉçê:®‚¤ îËZ0&gçx„Çý• ìÖ šì>b‰êkªT‹ð>`l?±ÀBƒ*„bP£ãôOœÚ|¸F,éþ#ã§i„F²«öŠ–ùœ²B9â~UãÛ§Ô¯ƒÝÜ™|Ì&yx^Ì&‰ˆüîYˆò1óY¨¡b”'XZeÛ©q›ƒÙ0OËY“æú>ÖÉe£ÎÈÁK¡aâÆØñ±¼_t`ÛK©‹9,šSÁ\ÜõíO×çă·ô¥d´¡)'çÕwõ†Nz1-IµÓ ‰ñÃ"ÚÇev££™°¥íÎÔ)Üuï’„‰uzœ†Ó§/è?°‹}'ìjO‚×4O¾¤Z :$?XeÄI7ª×ÞÐá÷äTu°4?÷Å]ðX ˤ®}ËžV¦¾×~©~®dµÈ¨ˆfìû|¾9žH¨u_ׯUÇgØÐ@+¢µR1=ZPšW¦OøÔâÓK“ŒÅ¾ô\Z Æé“ÝGüû#ü7rL¹“xkÖ]çãvü„ÈO7ö1ß×QIg*¬x⡬"l±e¯˜Ý¿Lß`@/å÷ÕÙKw™w ^’vpà,™THÃwÀÍAíûƒ’ Cû†ø÷SºËZ8õãО@a?ÞÑ+Õm–ó÷Ëeë8hmàqd&å\d=ÂÿP|‹~q–Ïvç‘¢ùIMDdЧùå¨qèN=.P{sÑ€£rKÏ"7D|aù¾]†vpùuR¿=j`3ÞûÑpCG}Uè%>ÌOÑÁ_¸¬NðŠàTã“×ü®ý—¶ü&wÊk½¹{ügÈü¢vD/XMÁèVúFÙ=)&GѺ¥kÍÏZYôÙÙ l2G¯ gç@YF$v‘5¡i=ŒØ»ëbÔ{~'ѶšwH®#gû#â’uŠŠw&Ÿó[¾Í$LžM.-¸-Yò‡…¢uàƒeXRòÞÙù̂}O˜òè[ÄkžŠ$$©®ì¸“ñ0Y ës˜{,KÆÐÒœqÀ÷©ä¨k¼9 ðÛø@%ƒ| yÅ–SÎ:Y6¡ØKF%ŠÑ]a¬v|1é•’ê¹Ìô9Ñ™ C çÎØ>{ocÞ¿ø¿4eˆîØ„F|p(|Ü®“¾ƒŒ]×ç ¦‹±„u5š#þ bÛ$V«¬Ÿ¥}’#M€ Ô“å´âÆÕ‹D³ð‚éòÐ oÜG%›N¤!ƒåÔ I 0 ù¦&·¸;A<ËBIÄ pöøHÔE-…%¡W]äÒì=ÇÒ¡™÷óÛà¡×íF†c;·dü‚¹Ô¯`MWE@ùµzÞ$@ÌùJBfÂÐÄ>BÁº$Z©’nXìßw&ËýÚøF«Ð?øð(=0!U¬~vY l^õœ0-ÒÈÌzó”ªGàYlìîïcûÚ²o'¥ÿaPDnЇ#5Ydÿç|Û’O^B±È7ÁÑYÀòóW,?KAÅÞ_¯Ê¥W,MÚ”X¼¯õ' ŒCq)öòÚ,èdJ¡‚ÚÈgŒ¤Ûn[ݪ~ƒ•n4Ås)ý¤î;{`Äñ¡CÆÖ}ÆìæAõs7™Ýk$=Ò—AGÞ4wè®gSmÜyOޏÇ<¤{‡”ùʾнéì™ÒÕ“×h2‡äÁ†¼ÝX&f/;ÎNÝÐâ¿e$žhÀ,Ü;ÄÕ:h c|o|õØó¡kºki*AFö@Éo7Û®,÷ûȾ?º¿X—fÏäñþ°%d¦±~«ü ÕÏ™hP½ 7à#M–ödÏ~`½Ûq`¸šj)èBþVrc¸˜ö¡õ Æ]ð1: éjr\ÐÌŽ(‰k¿$m>¢¹ûóœ¹n‚wÆ™ÔåtëV<¢KÅ#?[6å™ÏCá}¯ù"HÔ‹QÌú„ÜxNVì¬8œ.h…wmSÔEø%*ö‡NšfÿžqãùCr¹*”—$õK TÙºWè¥Î›²EïÔ±â6œÉ¤‰½;ÒK‘ƒ,ÇÖhû‚o\k÷ÔX}T Òéz]‹Ø/•j:Ý® î_¹MõÏfTQ^*‡>€!\!0þÓç§“·ßvSr‘ªw^²ø9*… í­ßLùF«ILVbS˜Ž@7Üq7þt"ƒb¦QoxÞu$ý{¸ áÃ,‡ô ­êçA¥Ä‹ôi8eõòÝDŠ(c˜‹7A¢¡u/yùNhîåÑ0`¾Y‚L7pÙÜõ@[‘2žo´ŒspfÁÎ6Oúâ1Í z»Ü9;¾q!²‹4Ÿ¨1asMÔlŸ /5ß›µj˜ÄK†ï® “ÀI5$¢‹~È©íoE/kùïîv[š—)G‰Ûo‹ñVI”è“`”çëE0ð 1¢y´¿Xî ý%ðÃ/|kD¨pUÎý˃i8¯HàÚQœéòÔ¡\àD{oÖz6䫪:ðYI£§£‘¼kjç͈B¿øñ§^QåݪXôwq™nqÛŒ‰Ô^(¨éñ•äÉÏÑÕõHk¨…›)¯p,•¯²>±>-õêjLåj¦6Ù$$°*k’F•X ˜ç¡I<{¡te”˜É$êtcˆÛrÁ&+têê{ÊÊ—}¢Ü |Ìg·¬~U(Á„Óq¼úxaýÊ\D5ןN:ÖÃGÒl4žMa`žD0‰Ã›rfÖ)ÄP…¹ŠÅËg½×5)…¤}2BSoíV‘g›áÛ~,Ià†TOK° «coåY’Ì?™wWÃÖq—™íé{Ñ-Œ‰S)ÜŸã(ªP{‚3¶êÖÒ1ÿ8©=÷?žnò.!¤óCq²ŽEK6®ÎÒðÉ6xè…Í"N®eŠp ªù’#ÕZðx!J¹œyC¨±ýráHØö-ļ=F­ýYê<¹Mí ó”ú”i"_L3U*AøZ/ðœü ¯ÍEš J€Ye«N$4Ç^,~.Õ>ú9AóÇ>T¤ –׋H­œ ÃhXÔ¾óÀ|îŠ 9õÑRCzyöYað)¶ÚŠVÒ»ÙÒ\ûÂd–%-™žé=ó*…b "µjmh€r>Ao/úæ«ÜÈ©;V‡Öë>$~À=ñE’¦‹?ÈËõ9IHGo™Wµ{kPÛ¡î++_îáW¬ÛLšS`…pK,†ä@ìýˆÑ˜ó ƒ[&lFÑ; Sp~Çžª»¸¬›ƒ¡¦Y*ü`Í,½žJ%¤)ëU"®1¶e¸ŽøûçÙPýæ™ëÇkß[ 0ºñ@gÁã¦MÁª=û·F".65诔–Ýྠ*d¬øK޼«Ÿ+F¹Í†Ñ"] xñ¾¿iJ8z–û¾q5¡¤ºe‹s£péë¤iOƒPî¨/~3oÆÅ©•88õ8¶yBé YÔð!ÁÞBGýÑR,}Ø»“¬“ @øö’³2ùYa4³7aÁä±X¿ =XæœdMpáé[Éz3i+™´küI”"vQm³ø÷†0DÏiÜg›Åå¤ñµac!2fgE—{PÇikVYGor–ëœ4Jp°žƒ ó¾}|}Mݰ§z¶¼Yn“!ÐBíÀô ÉñÚ5™]Èô"ËPC3.2EXÝyšÈCs÷ò>4ë@‚ƒóûí» ×Yó¦Ÿõ;½¶{á¹hN„¨°Þ·`QËÐ%#²@¹µ­z­ÕbY£©ïpÛa2l ô»O? µN¤Úlo‹š'ý6*v¦¦SŠ,L$Gé`ßw)-“üºGœñTìur>NkiÇÛ:§›À‹sZeouE“CMMŒ—(UÉ®üº`¼Ñö»,<1¹Ê A/ÐÞ°¢š=<ôÐÔælEW:ÎGšQnsK²a÷ó qÜŸ–HžM<úÕéseÄãôôér€¯jÙš zò7jáâGm½r§é,#b Ácò¶º«»'Må Â"ç¸5Ü­"‡ŒÁ*ñ#÷ºUwóF_l/ç ¦6àÓ"UÑwî7ÈŠT“ ¿§y~ý£ÇÆoª8H%§ÌdgÉB½60yKWÂô¿¤H€p»¢Æc´õé0üËI±œJ\9> ]XØT ûÏú“ÝV5°Ï/u#«ârÒÔ™“h|zá@|jÇÃi/Þü¬$uÓ¬*/c§áeÜʧj÷kóÔŠË˽jKÈuÕåô¹U¡Ö°b3÷Z”¼ wZÏ/¹«Ë ßÉÜ‚ý ½š´ïÒ"Ñ+WkÙŒeÜ´½'ìž¿‘×tÂ¥0ïmëãó"´|Û=b„ùûùŽÓÛrÓÙæ¾¾¾ ‹tÖ!iÎ|rîÜ]/={ám NȬã;¨ŸÎñVfg±ÎyôA:I msªz"œÿÌI•Ú]n­í²ºÖÀ„\ŸS6j PÈ €>Å’p¨¹o'÷1'= ŠM‡3R´ï„­ b\ÈdÛ߈îÏC¾²2XŸÈÚÉíÖÇ4÷ËPK^Œú$'0¤Fv‹r´qßBÇÆè–Êm¹[¼kpßUH¤µ×`¨¡þ¼ÅïDÙŽ€?^Õ”Á²Ó è©ì[Â4Ùqòâ£Y•l&>ÈÍ“¿ËM` Çš,«µN“9QÛÎ[äþÉ ¯—œÎá…ìâÖ–ŸnHWdlz‹¥J"Û*›Ž Îð˜¤-æˆãkô12mïÓFÈÚyê½-w¿ äVÁr$”O2!”K&¸?Ì1êXjw÷sEƒ„/ÿW<ý(s«Ö ákª\ÁðÈðk¯W@ÖÚü›]Z·.“”Èç0‡þ6ƒ¥_•²¬Ó»5éü#ˆ“»ðÑ&­J©Xu([˜5‹ÜÔ ôþsxU·'°æ Tç?^›CÍYÒõ\ýÌ1áÏÁhC‡mó]2›ãnÕz…‡å–_ ¤¦vÜ/•³cÌz©Ã·ê¨o€ Üû¶ÈûöɸÝBzÜæÄW½¾i2Ð’±ù´I&Ž.]ˆX0Ê[V*MKN‹OÀ®ª×Ïibãë}Ž˜œ=n®óóØÑDøåEn[ ×Ícú¢Çu-< އ®:žÚë^sÉ¡.ײä#U+èä˜JÓZW þîcs÷cæ0Aa|ÛD°éŠÔ@s¸8ö Ù}&²ÖÞ/zÂòÙ,22'ñçÊ„.R£›Ò~(v…鞀àú%·;üË/މ3¢×î _‰&™¶˜QnݳcR#ÔöëŸYLJ›oˆY½ä:êÄ=j¬-%÷ç(¸}Ÿ¦ÂIBÍüh¹ËáˆLÓ49Î’ˆ³§ðü›·HÚzËsHÈŒ·¯÷zjU¹ü_|õqb EKU¶yêGl™$Ä[±ÝDDüÖº1ÆwD~Š&± ævi‡!¼ž©¡)QÈßoAîãä?ÿ‚[AV&åw§ÅíäÂŒ`öƒg«'#‡á;ÀVìÍ(+(q̻뢂rg {=ßÓVÙkÅ#l GòÀðÛ‘Ÿ/înðÝ‚œ© _M‹HÓIî÷ŠlÌÑQ‹éiC+£úÙ³‡¾{žØ›5bµFœR÷®Æ×Vºd¬ÿWt&,YLQôPÄSºù "x4ò’°úÑÕG^T~îx_ž4ºµçðòØ|O “eV-"ƒbp«`Ó®Íq»ù=ÂæDå\ø863Å'È øÔØLh o-´,]ŠÓ÷“ò—V»Ï…®}ò[]8gåÍ«»¶~oë>a‘}D·;®â`g¤F‹p¾³üZ„tÑ”?;ƒ_‹àæ£Æž¸zuW:ÖÙ;ñTÚ»æ–cYÈ…%ªœG_:<&6#äµ)xm¼\¢j¸ëx¨æF_ÚùFRxÑ“ßH2g^W‘(îz1ìl`].<‰˜Ô\žøÓ2dÕ„¾kJ1'S[PÏCõ̱z  #‡HÐ/3„±3aãØ’kKcæöþù2zY²pTD¯^7®ª#èU§%#ã%å¯;¿¿±dG¿·p{`ƒà&ë=rF²©>]ZJó4 1*x—E[}ù í1# Òv`h¦Y"§<3h„â_-§@MQÓùM;ÂÕ2àÉÍW’›#ÿ’Å`P ¸õý`7'¿Ú£(Q?Z¡%#Z*~û m sPiÅyâp\ v‡¹Ó«yËö%ÝdœZò\¹U+ÌèŽÓ´âúr¼xÿT›Wt#……a\z>d–ïÒ^þ퇧.ÛÄè&ƒ:;© jøwÆæIŸæ×sB#ð¼CzŒ\ *j‚®]ÔˆºOnž—\K.#òA z–Ôíþ"jkÏ=Dtæ.;¶¤õ›Ø<šJ „lŒ9³è*;)µæxÂ{¡j_†ÿæëÁl2K'–@0̺SA ª‘}»¯¡×"ÎE˜íŸ¾-s×!à€Ød„‡µxÔm$?Ç7¸Ö;gèpÛ­Ñ%U?¸~¸Õp­§è]‰lrÞz õ_Rèâèû,ºŽøàòxILúÆä(&;²V8…26Àê§ñrÔKšÙ³›¼YVÍКÁ[\_Axæçä…>ËÖØš¹m¦h °¢–0#Ák_S”þýÌ{ˆÑø@yGÂAñxÑ6§ø²Pˆì’’R•A3åŒEÙ{Ž:î80¡š0|é3E‡ùÌ@ûb13´Â…i-¦ã#¦ñ´ó<·ßú•k në€h>ø—ß6±Ò°6öÀV3UÀ@4{+ ® XÐþ1?½ï[ÈŒÅBµÝÎQK«¼ñ±EŸ§H¦¨˜ŸOÓ…nø’ñ…zq+”Rô}b8 )­NG>ì‰Å'wXÙÕ;¹ãT98Csôæç Æw±–^Jèìü§o™ˆÇË­ø]TØñë%¦.qV^n@”teÒ:¸Ø tå,‚1Ú eÔOÔMˆñ+9”¤—þ,¶Nth+*þé¨ö3~h!b½£Ý£÷0fí„J¬‘×y5C¢ØÔµ7W_?Í̱dFN©_|ÑGŘæj7Ñã“^Þg(?àîPÿlÛÄroÍ#!è¡ v8´Êëãñ×ÉkÞnp.ô_ûð;õÑ6 Ôð«+ø •5t@õgÿÂèÿ´KÿooÎà”õ¸»é϶;#•*—ØV ‹m©Ò‹âí´ûX,öq§ÎášË’Ò­ƒõµˆZ41E«gÃgºáu¨ßK;ÌvþRjjWx£¥0³0‹46)ŠjpÑl^ûð®_¦ØRõ0»1ÓèÀóDÂ߰Z¹B[ïpçb‰ì:Úûß%i9±YÐaEÎ]šÅч\ºßU2š9§F6<¨f×Ü&„ÚØžøPŸêÜ%ÇÒÞÕ;×= endstream endobj 707 0 obj << /Length1 2141 /Length2 15262 /Length3 0 /Length 16542 /Filter /FlateDecode >> stream xÚõP\ÛÖ ãqî‚»;o qwwÜÝÝÝ%܃w îö8çJÎýþ¿ê½êªîsLk͹7%©¢ ƒ±­!HÜÖÆ‰…‘™ "'¬É `ffcdffE ¤T5w²ýÇŽ@©rp4·µáý‡‡ˆèôn:½;ÊÙÚ¤­,lN^.^ff+33Ïmx¢@sc€#@ÚÖäˆ@)bkçî`njæô^ç?4F´.ú¿ÃBÖ s#  @èd²~¯h´¨Ø™ƒœÜÿ' Ÿ™““/“««+#ÐÚ‘ÑÖÁ”Ÿ–àjîdP9‚\@Æ€¿$äÖ KcD ¨š™;þ‹P±5qr:€ï+s#ã{ˆ³1Èð^ "% P°ÙüËYö_ô€€…‘å¿éþýW"s›¿ƒFF¶Öv@wsS€‰¹  .ËèäæDÚÿå´r´}ºÍ­€†ï·ˆ )€ï ÿ­ÏÑÈÁÜÎÉ‘ÑÑÜê/L¥y?f1c[kk“#Â_ý‰š;€ŒÞÏÝéß—kicëjãùdbnclò— cg;&5s{g”è¿}ÞMl¦ '333'd¹™1ýU@ÕÝô7Éò—ù]ƒ·§­Àä]ÈÛÜôþƒàétœœAÞžÿ$þ!°°ŒÍœ† Ss„?ÙßÍ “á÷ûw0wh3¿ €ù¯Ïÿé¾O˜±­•û÷¿¯˜I]F틊<Ý¿%ÿ—¶ux2p°X9X,,l<.f€÷ÿæQšÿ»æ?±R6&¶žµû~NÿiÙåß3@óï¡üo.yÛ÷Éhþ º3³ÑûËÿçqÿ;äÿß”ÿ•åÿuÐÿoGâÎVVó4ÿrøÿáÖæVîÿöxŸ\g§÷-³}ß›ÿëªú×ê ÛZÿ_NÊ ø¾ B6¦Vÿ=FsGqs7±¢¹“‘Ù¿Æå_vµ¿ÍÊܤhëhþ×£ÀÀÂÌü¸÷í2²||8¾Ïäßè}yþ·¤˜‘­ñ_[ÆÊÁ :8ݘßG‰•ƒàÉò¾ŽÆ ·¿§ÀÄhcëôxç 0±u@øëF99LB™þ…8L€Iäâ0‰þA<&±ÿ".f“øÄ`’øƒXL’€Iêz¯ ÷½Wÿ/â~Ï©ø½gQþƒÞ³¨üAì&Õ?è½³/ÿE<ï€Ð{Ã?èÝÓ迈ã3²µz¿ˆÿXØÙÿ²X[ÿ‰ÿ놘Œÿß•‚þß›4ùßÃMLÌÿà¿Ø?ð}!ߡ˟pŽ¿x[g‡ä{w1ý|Ohö§»÷›3s·3ÙüÃãÝö‚Ìïâ-ÿßZý¾Ë·þYÞ¥ý#ÕûSŠÉöO±wß÷÷Ø?è÷fíþÐïsc÷¾Ì¶ÿ8›¿äÿC Ë{kŽ´¾“ŽïO¸?ô{§?ô{q'3Ð?ç½;'WÛ¼ksþ|׿òøÞ¯ë?Nþ=úÅXßÓ»ÿ¾kñøþÏj9;8¼¿`þ~ø½ïÝðßo3È d„°4okô)È¢.¨ã¾FˆÐ•awâóOÊ]ZÏ%‡NçGØDÚꌀu‡[¡Äáïh+Ûb47‚Ë$/žÇ­ °_Ûâ•ÚŸ¼žõc•§wÛ§p& Ž…êÃ1¨ îy½Ø{©û[B¶‚wKSæØ;s£(æaÞ»öK¸Õÿ(û52¿«´WÍ)ƒø\6ÃðM-RÇ¿x–2×0s Ɖî#ƹêìÍíOŒìÉ7éX:ï“ol…žZ¬Qs«ª¬Ž=øøZxÄ7cÓTžÂIÒ¸ ž%EÑÒ!E&ÄzóÍü¨@{öZÒî%¾²ÑÉÍQ¼C}‘2Ôíéh#¥-JááC+•ì.<Œœz®â™ý|G¥®ýˆÊÙ ‡@K§SEÖ¯©}qV‚nh`º¾$-p.âç üàñ™¡nˆ{óŒ]d5ÌuÒîõº!ŸvApÝ_xONJØÀei_«~9åW#&ް˜‘f‚18ÍÒ¨Âx³ä',ý6 !c1V».ÝíòÖ'Ÿul(°¬Ç·÷ ˆ±±`¯ºë´h\¦ šŽJ³à•y 'gUÉ«ÑN8þ‘)lˆ!0V!`TÇU]$…åQ´|5½.¾S$æh˜. E<4®6Žóš–*›ú,©ç*‡ZU> "=cÉ,gÓˆÏï c›ºê–fÄá\¨š%æKQÅ—>!kärÀ£Á¯ÄÎJBÚ $OçoÖ²è½5Ën¤KQ{u­~»ØFxn ˆÙé›ÚÒÙÔg)¤QŸÑ9“ßÛ#ÊéüÞ†Ž=+$pi¥æØ[*¢Ø|W†Øån¢â^²9ßm¸>ÞgÀãLl5p«¸5S#ïì0O+ûÙÙ¬4j.`fHtb)·­Wq6B¯Ø¯¹…º§ga‡¡dÂCíãø¯lû>·Û’…®¸»J¼sðí$(ó›ãŒ ÓØFnme8ù.xÉe4i|Z|ᜋi2¿fÓêÁÒy<£Ktæ2ƒÓöø:|©ˆç]¨Æ6ÊÇF.Íå’RŸóžßÍÑxkMWÖEnÌàé‡ÖÒJ'¶ö2µ úZã? ¥c"âc“šp´{Št›ƒÏ¬ƒÿb"‹”îµ8•Øá¯Ðÿæ·¼:~•^Ùƒ ù <ˆf„zyÄ?¹×¤6ù™©ÐH#9P4eð¿„Rð™KëÒ»4c%F—îØŒ§«:OcÝÈÐõq}»gƒ½‹b)A]T‹¡:©·*uVcY&É®±éw^KS®ªó]áù¼Âq= vléƒ?‘0Š‹½ p:òpe¦û,ýç6ºÑ2uq\£=¶l5£øƒÜ–?ÍNô¡Oa¬Ú±÷…làbÖi»Í·ò=ƒÈ³Ý¼ç¹ÅÚ©ãÙÆ¼SæFØó©/"Or¬;cU²ÑW¼ùx;õC•]ã>¯F9 rð%a˜¤&<úüŠGÕÞp⥷•üЋ{)˜‰M)°»pìñÄÜ 58:i¼Sè|Kt|$>~zIŸ*½ò!p5þjtŒ5Z(Ü$‰l,ý ºÉÙ¯0ɬ÷1Öiæ{™,`µ‰¥'×?øµÊ­ LFso)j[ÄÀ[ƒD¯§ÓJB9ÛcxŠ\>›‰õèkÒ ¸Ç„Èß§ÀÒðïãsÌóå­i²—A·s`’FŸ#iФÃÔˆ}¾*ïjFÓYœÕÕÌÅÂkKúÐP•þ¼dõ±evŒ÷ Q#?‘Ý0×mb‹lÛSÃà¢VÖ ˆOý ÕÍÃME8F»q*KÁ8/“ÿ#À””k¡sÅû[.ŠÒÝ9,›º' +Qé›Õü±DUcÓ2é'pw{ºÍ½ò äé†D_¡chø=—; &‡©¹åŒ@-bE4Zö“y:;MýP'G’v´²ŸYŽÈškJ'ÉÅ»¢f‚«™a·¯ä›¹˜wP@£6j¡õ‰Ç]¢2ö=ñÏgHm±vOÌà~;e&‡Cøvÿ ¾ô^c¼µY|Èä’º£Åo_Û>½¹Ž1s^„Ù™H-ïŽø¤“ªl÷½Ð4¼+{=ÅZ!ÿLkAÊgò* ÌG ˆ±°j'(ýaé΄ADCâ‰ü¯ùWZÆÑç¥f_“bê"¢ûùÝäOKóÖì¶£!‹2[%dý– Íø¯²Ú~»þyœS’Iж,ýé\šNÇa‚„Hÿ‰oä»%>fÔ¼µ?Œ<À@t¦W»óp`Æéê)„jÄ÷y­ÊÅ;} UL¤pnæc¸—£ÐBò‰‰ÌÝu% ©å·âx›‡‚Û>äß|õÑ?†èg5ꘟ“b?H›gŒØ¦XKdê&9¡îUÀQ¼oÃÌ%Ô9]ÍปÖu!.|hZJ„z²sûÌòGÊöi·¤¿>r ;Ë*tL|6ô÷ùý¬¿* ÿ" %ÀÇqQ¨ŠäáXÜpêí,k$·èWÖEÆ•%Óõò÷Ý~ûåNÈ*·» Âóò2¦À+ÇÅ€öÃwFÑ""¶Ü¥½DŠD|¬üøÔ=›o]ZÒ̪c_¦(nûÆOå·°øÂïªÈM~cFµ°å¬'±”þÏî¢:r è*<’‹çJß:æ2L®%Šõžu88¾&’o/¹`k™l ÅÞÇ‘ÙQ)Ô#jð±iM­”#Ð|¢ç¦Êç"S¼&¯&"ê91i`ø/ºOvûv÷ãÃ]U°·(ÉxÒ.} Öí0æo·%-k¥Û-%˜1€Pãdß £½*nÉí É8»e¾¡È’(jŽ®{¢ek…ÍÜy¿ùŸÒRâÊ.ʘ(°¢®VùomhägÔbª@o¾Ù‘—ÎHÊå­î‘ª–V8ümÔu’§?‘Öx¦hºŸœkzœé°¬ŒovØ[ËT,€˜6–`‹61¦'ÍYAÞ>rÒ½ñÐéÄM‡®XKPfJu`/8>8Æ‘{,I™K_wõ:qPGé^ú6hõ(ްZXh*r¨RŒ £NÈÆS3@þ@˜4ÂF/‹X¹c“ð.TÇß§N[ζé!Ò㇈žÉ™§ÎaHoò[ó[¿ïr•SP©u”NU"lkxì ô„…òïT]ëj¾f­RÇ­’w\Ÿ‰zºDõí¢\6‹¼üEA´@¿yÅŸ½÷•àÊöP&y™L2s²e5ÐRÎ:!ŒV¢6ÎE-]KÓtÖN<˜>}YiÄ¢(µ³yÇh•£4 n1,Ni‘]¢Ø€Àò»ÝÃu¸ªVÃoMŽÎZ¦9¨u`Єžl…‰Í'¿¿úÓÓmWWoåçQ[†}eJ¿ð½ ›$"iá&"A›=ð7N!æÃïf=XÊâ<5ÙªóHž14yT)çëÁ1¾¼£×fÝwo7Ñro=û°%ÙH‹„'”1â¸êAoË¡[C.Í0*¼Ç¼Ò ;屦aÔ{ß-žôr°ÈœÑU¾/wÚ6CÉM•׃kQÇpX?7º6ç¹(»ÉÉ@pSŸ1æ,‰‰/LÖL‚r“¢#³G«0J] ÅyŠo&)äÛƒ–ùò^JÞBÉ,4¡Û5!_äĪN2çdŸÉHO>šàÑ¥“‚« …ÅNŽ@ Ñ °aôl»q%]p’v¿I¯Â?‡n“a>½ ';âFæµ0ůKtׯ$ïtJu 7·ç(n>wÑŽ Ä0ÜñDñ¥Ûb «¡/qU1æp”nã 7m+KRë y€dxꤘÛTÄnè,¦{ÅÇö)–‰Ÿ“BN"Z,!ߪ;V%µÏªÒvÄm*.‚3ùæ‡M®û3îä/ÆioßGÏBÐ(GÖ}Òu Aa÷?ui¢Î–xw/¬mÓ˜++žÁ9»ÛÙóYp‚u¼¹V?{ÜK]m3êá&í×Òè¹+]Ç…cRà|­¿£~ßè~b¸:Æ‘ðV¡øôBºÛ´EZh²t¦>sMG{©Nv÷?J Z³ëk`ý€Õßï-õq­WXd’ß] MAºƒ=ã™w+±ÖPl?G]7ˆ¥iFýüÁ>쫌­8³±a  íÿm,{Í„]Bo¬Â2ŽÆs¿oœw.µñuM—$ݼhH8jä?'€]›ý°æz’uZYÉÓäXIä»Üx¤nháÖgqÛ¡þ´’½ý%{:æ¦=ÒD1ß¶ùÔ¯[î'5} ÊoN}¦_žf‹ãÃgÃLaÓiGcûõ*Þ3¯§Ò_=§CÂçšvÂ7ç-páKÖê}<Òe=í…tÀ”gÌ(h#x=äU¤eW݉,ô²úãˆÁcˆ>ÐΨNùLÉhA a?*2CGÀH+âøÐðûðlQõ®¹ôn齑ÁBwÑv~ÕäØ'ül)?”G[¬+¥üƽ5ïòbê"°ïÇÎYÏå/y‹sLúzÕ(ýÒk‘·¥ÀN\Ò‰µÔe¸ú¶[Ðú Ü)WüÒýr¯~÷æ‚êÌóÊUI›N+\:.Ͼ®uSñlÛÚ†~ÝBÎFÌD ɱDY‚¸Z ª²á J5÷÷´{ù`Ü’ü·L´p^BÝþaÒ²¸ò~ÒØágûÔ BŒ·–=ž|ŠCß“v)˜ ó¶)”üC6m:H¡>n_¦åò`aq‡“¬È£:ë«f¥±4!‘Pýþ *×£*v–òºy¢{›g.m$CäE1ÆU=¯,ÿÎY¥æz£@&¶ðäKÒÔÙ§Ý7Æpû@Fc¶üX-Ç#äü6/bD>3$ï–^ 0úm¿aÅßô¼_¹i´ÒMÇd%œ3íƒé|ǰ—ƒØ%¡©aÔî=…y†)àû]ÞØ\‡âSQ…‘ªr%–w¯è‰oË”l¶ãÏ0ÑrvÄû@QO`©ŽÅ§f ›B4ã‘lêñq1¤$j»ø]$àÏ·+ú"è¸à,óÆ((Ï#Ï@11”v²î">í£á oh.?.ÊŶÔ}?K&V©&Ë0êÊbWHC¾1áDŒ[¯ÁO_¶b«º­zÄ=Ëè±o3ö y0©éù­Ž‰òµìík pÂð°D"j~Ó£pâ/{]ªáÔi³–zÞ·Œíîy^ë×…¿·Uf‡vÍMÊŠXÅvpLUƒ )#³Ó!mEa šÉùÍÜìW"L”Õ´Mšœë®&_¢×0r÷}nËùš++yû¯×èTçZî»äCMᬥÅT˜XT¡õõìEšKeXµ!ýwí4·²ÿÍ!´/Á‚Í)D²¸Í=Ô$l£¼…B\"Ñ>štú{)]Êä;BêýNºá¢kÆÈ] ¤ðóÌ~[ýסy\îàÖ¤Ô—;|™>-ª“¯Én¢¼šÆ7…»"PÓ¤2åŒYTèÚ¿zܘ՘`­Õ[Æ»Gñ¨>}˜ËçÌL”¿¼¸›t꫼‘-ñ?1šÜsJì#¼  '~x2ÖüÓˆuÕª)æ V›q¼ÒÀh×?ȶ²R*Åä|1·- òç«!`›M}Ö‚|]Ý’§ÄYS‚ÑsÀ[ ŒèóL§«Œäͳü @ ;$¼H#.©m–ò*LDÈö™[N¯6‘)5·t+Dÿöèµnl þd{\ª÷±>µDPÎg(ômÞvh—¬=vLZ[~Ö*Þ­(c„Ò}íÕÅÍã#mÂ6£ôy¥›hKb—Y­„°ýòÑ^ÿê1€òƒ S|øå¥¸=‰þÀxú«ÎU7§í·”ÓêÙÅžƒV±ïÜ`sÚh3˜(& Åî‚~\šÚ9Hhà°‡ÆÔœíÒB%O7ÒLgˆ>"ÄQ¤ [Þ9ÈÛ~Pr2õˆBÍZ¼·9ø]½È±±¶ÞXcUâJ¹k¼*‘8ñÍŠf*°8{Ë.­/ijùæõàÜåxËg œºzw çRc}ñΨÁÓ”ùz×/·šÈÎx!}&Rïá¨*ŸB–UáÀd åyê%|>Ó':¹L !í4 oÝ#?ßxÊÌZ&‡öˆ·òm:g(e|øVFÝR¶œÝòäJF¸ÜS6IÚúEß+Û^]CÂÔ´{åŒ÷O•ºR_×LÂ`§]yWWÉGQ¨täÚ>¥l挽yÞÒ“û>ãþ$aÜz#KTÌIZGùAfÍn#–>mÛÆ®烬†(—㈱†gU; ¬a9¬&;´ŒDayÿo®é}¶94´Xv2ä ¡$é«% B˜ÄMìOŒ>àÑ¢2sà£+¶ZESŸò] Ý®:ŽqIŸƒ¾k0Y'~é LÛè`q:ÃÁÁuÑE`‹›;§Óã¼[œ¼3ËúÑEÚ â+µ!«ÚR„ðÈêÀ`‡ [6[ÍXªkXåâð©s“#ìºv«Í#:†°íPa'£±Õ­cê˜-Ûž†N˜±ä:2(uášö8]ë)Ì9)‚# •VÖÐÊ?MNOÛ »Åo<.¸¸ƒÓE“ßïÍ´÷KvØõÁj›‰L8¬Ê‘&¡IÅÅi/ñò‡žºuÙp—²êL·º•AW>xkþ¬)YƒÇδO×Z6‡ê¥¢á¬pÚïÈ _/›K:S$Ìî«„¿Ï݃™/ËÑèæÏs*e/2ÈO½o{^Ó$ÅÎ$ýöXA°Z•BòþÅ3ø¢Ø1Ç”×KoZêº+…¹$š9”Ir&!:Lixq•ë•£|ƒ‰œMÚüq¤ðÌÂ}ƒ¾œžE{«f‘°4ÑÊ,(2"óËaYO§8¸Auà]lÕÞ=ôyRžŸ8ë㇠ÙÕÍAi£!4v`säû°³ðÛ­Ÿ+-žŒmU'R©u7ºá¤µ‡^kVµü»©ÈŹͷáõxÒ›øâ#Áƒ\§aAt¹ ÅV͹Æé.˜gü;Â¥°1¬v›´Épq®ð,€Õ)uË“ GËÀWvfÌJÔëJƒ…Û¬|ŒéXY½9PX*z¢BàÔ°zÐtBzVéJÊQÛêú&Ô]* ”ÄãyrÍ­I±BA g[^ì ®óƒ)ŒÐ3Lä†S².ÑÜ>2ñ^&v×ä«W_9è¨í ëÙî˜<òiA_!ºÅÓ)8&ç9$lVŸR;WiïßzÏÍ·´—ó%[÷Qüxç?Kï<ÜœKâFš&ö ¹¼ Mç3náX®54’ÁžAË¿••=›æÃø—)FâŽ4°LŽß½¹ÊTÁÓÄzö'Í—•¹¦ÛO¶úa†®í*ØÌ ðÞ5¹“ù󗉾ÒÉ%NªX Tt$_f¬&ª\Ç¢–çã‰D-çíÛÒÐãmd{±£§PoØ¿®D'µÜµÇå3+ßH— `“2œàc–}ÝÓj0óž¹ñ›Ü2«GæfŽãî•ù5<Y_Êa;BŒu…p†§I¹3öa¦ z:wWKrC½'3³ÕHI_‰^—ÁQ`ùÂ8èUF¿’;Úå<Ñ ©­EÇØC(œ%Ä|ê­Š¼·–¸ÔUFÍ •”&ùpíÔÎ\I•K‹[F{|`ûøÜEhCdF_9âÃ¥åm’ð Y¯Š–´!öÓ-öçĬªæäÛan ;øßÑ̯Y!:Ÿ¨n꼄¯s¾¤´’¯/ô ZøÛzìüéÛ²Â}Ì[/ê}!‹³«wZË ®pqø žÈ×\AËé‡êðA}‡g7•â¼;´Õh¥û¤©x@dkƒµ¶eGöiÕRãi"uÜ:_»|,&’(̦ÍÝ@gM8ö`»IÕ‹_^7j·êtu5€+ ;Ãê ™Èš¾0×$3~óçA_úÑÃZ¥•u²µ¡ÃÝG[”TÉ-Œ á®ä—N)ÿé‘ãå} ¦×AEnÙ³°!hOÿç]û´qü¼VC\ãɤ»yðâ-QÞa¨µ/†$¨Þçq1µ©&Ð{I~VÓ̈ èd1nuììÎrß n¸DŠ0áÁo‘x6a9"ÒkcïÄ…2Ê~Úf›TVœ§Gª’Õ®¼å±S DÄþ”Ú¯ËTsð®W—ž‹´›¬ÿ¨ÒC áuñ†o5Âb¯fÊc+ý²tÒ½Ș Ë­u¯i1ÚvjDdxh¥ß FjÔZÚ€ÀšD¥÷] =0¿%?Yðl'Bóø1NGÂkËF•FùìhO£åÀ ~ó«pÓAG“ñvᯑŠÞg$Ó¸,Û_¨ÔçèõŸ­;”¡dÜ¿d#áãÜûÞ]i!ÿÜ '©/öX×pXÉuXyÍöñýÄ:‰{¡1räë”IÂNÁ>¼Ìn áô-{ÈêV 6•ŽL¢ÞËÜi':Þæ”°èªh }Ò+ß·Ìi]3ЬZ C%¸Tò„Û yp1žßgEöœBDÙÞš••]žë•¾Kºîþ’,AÀ"ð @Ñ=òís–ÝñÕÈaKz}èžÚŒróaòVÔçûþTck¿0güm®àĘìOp:õ” „ÿÍ;TÐç!I‹ïØšÂì\0 qö^1lî_ZøS‹üÛÐyð÷E÷3Ðóâ5ZeÅ,zL„Uð„¼ãM¾æ1§¨â~¾âz¹ñžpš2&«yœÞÊ0³¿Œ|eA9GcÏbh †¯Òg¼Ã4"!‡N^ ?‰ŸðHÖV¨pp ®ô¤,sàd§ï¾Ä=“©1 u \Ï{•긼 Ø$<<Ëqç*©g|Ú[aË ä¼Ù„Ü9ôT<ÉaèÒÜrKÍäâ&9«µìÆáá ³q2%_Ù¨ÃñAðÉ‚ÃÄ9EãpYw„!r÷ÉØV 1ƒmw‘jÞ¿Âþùáô©44CÃôቛjÅ Ýqè[–Õr ÓŒ2`·¾•Ï–¯0õŠ+ôÓ6,h±¯Ac,‘TôY™j‚­àU¬r,0¡˜¸fé'mRFbuæ”ö6ø¼ Ît2&ØœVút'­ëŒ6¤øÅ$ *L¡<ø‰`2­ºBåÏn55^]³ÖµI{NeÔÉ¡RÏž¸ÛOt`F½sû'¬BÓ‹Ñ÷ …Õ |ùŠ>2È^xŠû6(õó7¦TF¸þxŽ`Y™ýÅPç?Ð`«'~J’Cd·MÁõVðR¥ö@A(P=¿‘§ŽwGP╳¦\‰´´Þˆ'1úâ»wámû™5uñoÞ ŒF4‡ŒÅ–ô«óß#oµ²Îµw%^XÔô¿uë.z¹#? v¥=A‰WŒ$ÙŽÓh;G gQi[5rV–ûo AôÛ/]TmO˯¢Èöè-)¶"鳎ÜìtEÀOêY±ýÁÅý]$êˡ㒕25 Òx#°óÔ”•ó\hw5eÖÌU‡ßÖÏ+)…þ5GÞW3#ïÄc²zlÓFî,Ìeÿ-¾3µÞßà7’=ðs¯Í“®Ÿã-ø8¶’»#t 2VXB¡ö}=˜Ž¾ÜçŠÑ³œRÌëÆ"À†¾Öèºu-ß„1v” 3K°Éjd&{Yéͧê̇Žì:UèAÕJ±k«/¤Žéý?ЬĨôfÙûäîRO#2šs?(™ÓdÒ$oï$Ý'úEÈÔ¿ÍÓëSž[=ªÎâÉ8#™ƒZÉ¢jsŠônÏ–Ô¿À²56ªÕô%ìcö4H£uc#û»~Ýð6!­ìÄ{šº¾ÞtV܉9z@°ÍÉÝuP¦KSñôÜãš,ƒ×éqS;.¤÷`Èó{‹{eañ×½²d/1€ØƒuØ·dŸxmê®“Ó I¥ðw7ÅÅZü¾‹Çóæ£š¬{VP¢™8ZcرšâáfgÃ׸/uÅ¿ÝE;ížÛ«Q_–ÿ^ƒä\ÙICeÅ "M÷”¬MØÒ>Ž+¡·Éåp‚—Y¬52ö F_)°ÔŽÅ2D~§¹+î|ðLTø}ÕéÖmív kMÚ—#‹… k²õa}"þH×—«Pu²Ž?¶üh; 9 ¹ºüÎ:µ¼ÂjÛâS-ñú^ƒ´ÿƒá•lüäh3¹ýþîŠ{µ»d/Òˆ—Ø´F£ Áqœ0¹V>d¥§6´©] GÍXT(E\ûbðƒÛ¸õò-ƒÐòz@n:ŸppŸÄS~ë° ^w-ó™ã°C2花‹Š'‘õaÃQJà\«±Q½34áKj (€æ`™=1›™’Á£*ü¡¨Ò~NFõ[›…eL·n]Åβ –_Ì&•ë¸Ù:˜4´h™3Û0aj¶C+N¶äd{§£yY&˜L– ðÄ<òXŠn“U»%!7§©ä(¯H¾„ÚÌèÔtxÃXš…âá:Û–þÔËgQ3s¦ºJ/?êzÿùõãTÏÃw¥¼¡Ãa?uE©F‡w…ÄG/º(j†¯ìcâ[øSˆS·¯+Œ÷¸©éZR ºqÛå3S‚(š¨ú8ÞäœÑ–X®™{«å‘ K'佪A÷먷—µ¯‘Ž:ÂÖ” ¨['éÞVØŸ~®Ep„¾¥Þ7¹~÷Ïv¦ÑÞ-ÓM2'Ü8„Æ Èг`C>È6 &â“ /9Üè·tÐ5 ²&ó& åôô¬³\•-×Iò‹L8?‘Z·û’*•àÃè…·. Eצ•³f4î_¨_óÂ\‘Uc—ê¨´ÃØ7aY„æxM6 ôð›#'ËÑÑ^Ó[­w­¥ÌúuÕÛAò%¿J:ˆCñVJšyp%ðó[ÛƒÁ[{9ùž_upüšúÑúûš:aKÖNõ_¸åaCy+ =ñvOîó}ÄLŸee¤ÂÐCž&×D ›2B=hòŸÃTdT誘"•«•Wk+IO³îøc€÷ËUH9D,ON¶4É YÀ‚_€V,’qˆ(üb<Ìîɹ î¹5¤~ÓMýà‘º< ÕK:]dIoŒÉ%÷^;ÌÍÉD‡z"Ħ1ÚiVo3ÌÎß2L¦õGãt[¾¥´¾^uqð+´f¨s{¹VZ-è¿×Ò„øsðªÔ¿œ°ã¹ª*ak~³YöD¸¹Åiâù4F»Î -oEÌ£UaÔsèy¦Ë[7»ÚËÕmÖ¶A+"©>]¥v·{äÆrw‹ÿVì^}òr ^ÎGž/&”×*#>9‚Ò;—Èß36¼|Ô;úkÍ 'ñ|QÈæä!27@œàÿ¤Ä?_…âU‡g¼öÕô弆±¾=åØgÊ*ï %)CèSÍL{Í—_”*iƒå¨í-‘ŽÇWŒÚÚùúÍÎ,rI”(îeæeGfáQ"Q é÷É›cC¥YZ¨áÛ°Ý÷‰T§2‘”–¬ª+u>—ù‰W³që˜YR¿žÛÇ ¤÷âöŒòåö³Þô8ð}äA&$¹^È5žtÞÕEaš*ær¢^o#§$&‹¾XÙßœxÌÔ½“Œ•Œ?Ô¸O(9Òq4AÝÖ™«øª¼’5«YŽç>©q—K¬žÓýÓø²­nݬ'ÿMtÙ‡#÷!Ï úØ®» “ühxó›ÒϨ¹[RÅcMS5Š¥(‘3{ v6…òJi^»=œvâÅŸP©÷Y‹Ù ÒAžt9SzQ¥âˆIHõ¼¸f˜kŒÀo ‘†x‰Ï‹ѨÑgÐs¡b,ÐüpäcQA=VÀ06â4SŽ÷yë6~R\nc§dFó¶táþØoÒ+’æ }IZ®špjæ%Þ¸^Lópýœb+¿I0CÍÌ÷ôVsYj@J †ÅSÍ‘ñ™wmÅÛ=ÉYt1ÇQ›|ëà\HÑ÷è2Fm¯cìŽå6ŸÅTª•ðɯø6ûÔ˜NЈ®s<úÊE×ú gP£!rqüˆí~»Éš?¹–Q]Ì/½€Ä¡ÑW8K?žO×Ï¿iü³yý1ôr»tüK¸wl¤ôú~Ùtû"imû¸_fÿÑ3Z5ÈŠ× Ä~¢DPþuCËf‰VdP™Åý¨dÐæŽ¶¬^†÷dš’KYQ¨ /P¸Á¾­ð–m½š‡9gRp¤zy•3÷£.qÔæ1t¿rÉâ ‹aë{R-Ñ‹]èòÁ>'ûØ’(ç¬×C½šUÇ´7¨ÆG÷T0dN‹ðxzjl*’e‰EIÄÆo€_6A-œÚ¥KáÎGãȉJv¥H)¡LJb§e®” æ“éÖ$«Àë¸wWƒvg•ÔltÌó`'ɌϷ_ˆîáNúo6µEÙRS‹Í×Þþ⑙秓8DãŠÖýA;$–s.t;&éÿ‘¡"FVݯòä”6ä8䀠ÔJ¼`‚ œÚâv§Mãq«ë›o””´ˆgo"óŽPß=i^®¥ÕE®¢,>¯‰5!Jˇ“íвvµ…z{Q‚^AÙ<`Ï–ãKêœçØÏÚÖu}ê¸]ÍO"i×&þöã­üו¬Íx6hNH¼¼!™¶ºHã=ÜæŽÜ¿|»f4ÚÍà‰vB„Ê7ÏÎ m[ÓcpòiâraCa 8ÌÖA/Ìí:=‘ø%E†‡c8LÇ‚ô ó Zr}œ|*¥]¿Q>c[“jlc=nŠþvG›EÒ9`{"äô§¯õËÃ-j‰tÞ¾ëžmGJPÌ@:ÃíÅðA‹ô2m—JI4 %0ÄíúmOaQ´²C¶,6¬«R£c@d—ª¿íá\Ï­uví18®¸Ê¼Í6²æ]±ùÝ.šÙ#±{æÎ mG¡ceÔäKS¨è§x Blè×Ï]À ƒDê“ÿù›Ç1¸¶õluñ¤p¹ö=_K¹”š °)Žï Ò=5®Á˜ªqåî˜g1—÷ñ ú÷à«}z¬o°Î­qT¤:#Lªœ"ŽÐaûz/±Êð:Ö¾Öœç¯zpMŸIZ'J}Á³i³IBåöй&“º ŠxÎfÎ/cCo(~¡/ôP®´$yŸ ÿȤ_Í—§ .zH;ãù[›Ün( ©¦À:ùOªè,ó=±œð0äZn[íuBëvºœç™,úHkÉøä¤¿>ÃIi†ëãu.”Þšî‰èîÔWÀZ§`Oró! òúΗmC"°P™Ä##œQýH”gM°Œ±_}Ç*Ùe]àh§^¥M¤ßä ªØèrvk. Ð,Ôh¯÷¤$ð„K«È>iÉÅ-À ëaSâ#ØÂ¯•S“hð¸º×FÄÇœÜöãVâÀXUÑÀQ6’+WQ  V”Œ@›ˆmF¡F~¶FNÛŽ½EŰ'7~J·µÉJ"Å]š[ÓY›þ6M9ûò41àlw$å½·fu5%åÑAp#ƒ¿Eqøf#\rj<0FR_ Å é“ öœž«d¯eæ)ChpzòÂIU÷mßR!ÙœmŠðŸéW"wþª‡=q&ãvâIÊQ͹ᤴÑ:féRæe7ð¸{ÃaÇH]¿o=S¶!ÂØódOèŽ÷è]™ É:Á™ð*Ħ\6c]x·7±}bwØR  RØdå¶ö”˜ýu˾®iáÒpñð^ãØ|?¤…„js]ê•(Ý«‰CÂå׿úÕkvš0ÅF—· á;vÔ¯}åETå» Bç¯tŸ0ž] Â,õ(ñ¨-ñÄ»8òûŠY+#yÃ\,àætHMVÃ%1wWñÙ§Æ_ S‰u©EnVáÈÀDÙ;Z÷”Ô*ûóÍ•æÂ¬}Z‰ 9™É¤6¸·£dÎbfêê.9Ù°F¤4Å0Hr¦>vßßX{ñ=4Û|AËÇÓ9Öýü½Úx½æ³L?Ôìiæ2HyºYÏ s7Ú–m¦FCØø) 7åT+ v= ¡Ô4} Ä¾7sh–Ò0cª¤Ñ½ó˜3»ÿŒLœa‘ü>–ÄYR‹D¬™×~Ãyÿ2³u$Å“­ómhãþEÅ1zlŽx=\˜õ14§\=¥æÄfhÁ³ ˆN”ƒnU üݦ,¨ì+*x‡(„]W9ÂÏ4sä¡€.5ý·O^¸óÛ”ø­MêÝ8ª–˯Æì[žY{µFÏEÉlýaTI‚~Ix¡_‘žy°„¥ ÎvŸ>Æ…duCâËé¸ç ì·ÁˆD±í+6p…åö¢xRr˜Ý•*¼v¬.ç­#[©¯Û6{jkÀX¨ø–LäÅd°ë2J€£?›Žd<›ƒë úÒ¥åFÇP‰”.$å" A¨ð¶Þr3)êPWêþ±. ÄHÖRÕ# -1_: ù©I†eâÆ©*¡T 9+RÞîãô"‚Q֯ﲅ÷ž7XuÇ…^º®Ÿ˜è<ÅÁÌ >´ÏÆÝºq»ÐÀrŒ³bO¿d}5Ù@6NÕ(JOêDÈ…¤•!ÃŒòv6îú⸳ålGè…F°ÎÕHó\¢€ ¥q&YÆ;p“Ÿ¢Bù%àÀW?ÎÝÄ?n~ÝQ´o&¡Ï·€¦ÍNþöƒúüþ‘înͧµ¦Ì^‰Zû Ú‘Cu†‡x„½-îè†sïY4}X Ê)ùz¨^$Y·,ÃÙ(!‡ƒå…š ©Œg;xÚ¾¹ßª.·Ä,r|roÔýQ2…–×RR•Žn+€·»b—æÔTi†F½ì;ì%©òXm_ÿWÙ¯†DoÆCWá‚dÎ0®W„L$Ç«ÍfU+ø¦leóü"ÕŸqB+—ñ¶›ZΤZ˜áB²äa{hÛ'ª+PÝS½Š}þyUźúÕ Y§$Rr~àÂu°óØ©õî|øSC@„_™9eÔÚÂ.cÎþ’fã5 ?°§.ÝAÔêmÒO€æwYµî07ÛgŠ{BììÒø§i!è|Lšo©„•@Bï£#qò”—¢¶ÐÑÜù0°vª½j$œÇ+^¾bˆ&´«Ë¸Ÿ‰^eâ|“•<ÜqBƒuÑ åW LÃãUp’²\rûXÍéEun왺G™åFK±3ÄO¬¼¼šð5¿¿v{“èÃl(Âq“‹Œ§|ƒÊ ñÍ3’QB‚Ïk—È8#•ÔD_“Ä?»Chåk›"š\¬eîÑ…ã(¯±[?Hð_›}ýâ}\á÷;Ä,];mj´þBŠvbÇã›Þ·á ’ôÛ»dŒMN-ó"š{ÊAD‹˜êïN ÁwÊÇÞöðfÅÑæèÛ6z ³¨ÜV€ìéÍ™µ0çSµu`2¯ùŽ©3žr†Ÿæ®:pÎ,¼¬Ž?oΙ§Z:wû¯‘«|/ÈVºÝÔòƒÊ eªa c›ó§îs³rÁ¾sHè`š®Õ\ Ê2K|°¯R¼Xª¯[ëÅ—ašžØk´™¡’ ñ’<˜/÷cMßA°Ícègaªh#(ž­'ü›}þo(îr-§þ¸‰8ø¦ ›~JÅ›\Ú|Ï”¯¨bå½qS” Ñƒ7¥&/µ,wIÚÄ_=Ëz¨\¡ÑZ¿\1ýË´lhé¥ÃNEô‚xåó×€ÇTMËË-ϸn÷C¤é$Ž»¤jxÌü+û'qÂ%–Í݉áhÓ‘P.›©jV`J*Œ©îˆo AÇncU@«¼ŠÿÀíñ>0b£/ßÌÝVä:­þrÑ@yUáŒìâ£F][74²iãWÂ7"€õŒ¿Ó‰“˜å¯p¸å[¥#9¸…ÍS Ø~Ø6­1‘•çàîðÕúùrT¶+£ÜbV–G‚Ó̦yÇö$„§ŽìÒŠÛôÅ* +Áš£)UØíÅt$EÛ”uÁªÌ=~><5ÖF†ç$[®:çØjð'6v¼4ÊÝLÀQ>¿„¹f‘H¶Ê9éEöš_ôEõßBuÈR8çµJãîž5ßx¤25€9è®ô´8»Ä1O¢Ž0†Iþ•Ñ”aòÂvno—[ô8˜j[íò½LT®0¨ýrÅð¡ óòÈØPú´Ã‰ú£R›Ã%êŠ)„NT~»MÃØª ²íw8³Åt( çMKö[*>Ý))ê8ŸjÇã4ø&±Ÿr’‚ª ¿YüX‚ØIx^C‡”·àx=—íš)€‹œ -Àb/Á”ÐPqù19$ŠvÁúñóBͳ½›Š)JVu,4.g-°fªö òÛf>>[þØlæ3|zdúY1~šmìÕÝA€ì&Âο¾ˆûfï¶*å26ýDK'ÎÅùz¿˜õ˜bëÀâ^F¾p©¥7ò$aѼîËj|¿Á¨YøÏÐxš7Ær!U·cIT§_¤áa3ÁR¼Ecw«õºÍ¦Á7&=Á¾…‚í\Æla¾%p©§9_Š_ŽŸ§«!,§Ç2;Ø•á?ZÂ~Ý+Âf!2A”cPœêÍyDÍ6B« í<>£NÀas…¤LtèSKAƒož ü‘Ì-’§TÓ ˜Ñ´xˆ.ŸèS'¡óãté9D< \ Ï­A'1£°¥Ÿ¢$ضì/žaCÓ ð@ó^F¬õvw8ï)©BÈvm÷lAˆ8óÛ»º1"³õ¯\¸ç«0_sÛ` WŠNŽ‘/-ŒÍK ¾eo€ëW½âZ£ÛDÓºã]Z?&•Vß#NŸ‹~Ü€TÔšªQ;@Ñ'ôSø­k%ŠÔ©¾Ä÷à®2áàQÎ@yÓcQ©h‚kÐþ·VÚûУÔÍmIÕ‡‚å«jx 7Ä~ÕY‘kQǴ놹 ïÎÌßÞdˆõhù½£‡ä÷Á޲SïÕˆ¸íD:=Ñê kNÜR™+àš¸’&rêͼ(…¯Lg÷6ÒxÚ—t‚ Ó4¨ûrMùfUZdM7†Ãƒîüg›tÚ†Œn…ˆlK¨,m˜Ë§B&3à™ë„±Ð¦ì¢ëßšWãäð“œ"Š«™x>‹ýp¡BžD²h䢉’«ýê³eè!õõùŸ{±&mip¢³µ3†É µV_¢ïõû™ ÂÉ÷¢–éOƒªTHòbÄ"©*(ÏèªàôD¦Ù2ÖãÆÿª> "<¼ßcÖ^§{‘Š£lgó•è²ê>Gºæ·…7G=GãèíØÔH<¸š>ä¦Å‹;aå–ßSg¶NÞ#4Óì¼ÙœKJþŽ8 hǼéü¦~qâŸèÇÍŸô¼Á:ý(ˆ'A²]ž”‡|°2ÆÄñ°.º°ô ¦=qÄê¹#X°â˜®7)ýDh­§ü1œ`@>'{Ç[<|^¨&‚c¶ÜÅÐÄ>#¿f÷ÿSS- endstream endobj 709 0 obj << /Length1 1376 /Length2 6255 /Length3 0 /Length 7204 /Filter /FlateDecode >> stream xÚwTÔßÖ6’Ò¡t % Cƒ´”tƒ43À3034HwƒJ‡tH‚„Ò]RJˆÒ¼cÜ{ßÿý¾µ¾oÍZ3gïýì}ö>çy~ë7,z†üŠ`¸DCñ ï”´<’"@ 0‡å ùë&à0 P8ìþÿ(! Ú§ B¡qÚp@ÃÓ $¿/$qRÿÂ÷Ê /( -Ѐà H%¸»/êè„Boó¯%€Ëž $%%Á÷; èA@íA0€6åqCïhrÂí¡”ï?JpÉ8¡Pî÷½½½@nH8ÂQŽ›à E9 H ü rƒü™L€€`äEþñÂPÞ €v¸Bí!0$:Æ è͆êZ]wìXë€ð÷lBBÿ.÷7ûW!(ìw2ÈÞîæ‚ùBaލ+ «ª%€òAñ@0ð/ È G烼@PWð»s@UQBøw<¤=êŽB ¡®¿FüU}Ê*0°ÜÍ C! ~õ§ E@ìÑÇî+øçf]`po˜ÿ_à ;üìé.h ƒzxBÔ•ÿBÐ.‚ÿø!(€”@<{'Á_å|Ý!¿ƒB¿Üè ýÝáîô@¨ýCàyA(„'$Ðÿþi ÀP{Àâ…ü§:Ú qøc£/õXÑÜ}þ½²BÓ ‡¹úþþû~uLõŒ4õxÿLüïØƒp€?¿˜€_X H ÿ,£‚þmøŸ\u˜ õ§[ô1ý«c¯¿àú+nÀ?kéÀѬ…¸þCrK Ðý%ôÿMõß)ÿ7†ÿªòÿ"ù7¤êéêú;Ìõ;þ„AnPWß¿4i=QhhÃÑ2€ý7ÔòG´à®àÿŽ©£@h(Â]ÿ}ˆP¤*ÔÖƒ¢ìþpåßø—Æ\¡0ˆ ýõPð ÿC ËÞýà@¢ ù;AëæŸ[ªÀìáà_€/úŠÑ–À_­D0Äç7…‚08 @p€#~ݧ”@Ðþ—ë·%$ úü6ÿ±‹½'–Ùo [ø—ý[ӈĞ`~n/æ\Ö~Z«HïÍ¿9";ɱiú”›ßñÆóœ/»&çÉ âD1ýC7Ù⺠ױÂó•ÿîëWx‘­©úm—6Éã›mscT}£E»Š ½Œø üF Ÿ®<LB\°^ßêÔàÈóð”$Ñ+¸sêÝ£æÓÐ[þq(bfSÿs¸&áeù¼qœeHéG¾ÝóiV\?ãmŠï>¤SÇ'“¹£7Ìɼ_ãEŠýÍW…Φý–*„‘oiÙiÍi±Ž)†Æïù?ØÊРžõ/+‰~•?5]úÐw¿mãp³¬ÜJ+Gï–W6ÂH2‹HÇØ›ðŸôO½„™æ›Å\WPc3÷R3™eYÛK?N á,MÍYƒ °¿ÚÒ^í äèÒ}÷“esÄî%)û¢ÛŒ%«¨*ÛŽ6!ÝŒgo ˆõbéý­™ Üû·Â1_ Å ·¥38õfH£#øKúôÓ¬¯¿[h±ÑöSôNF)„ö(=yĦÅFxë”A8²eÔ¾zmÉá•Qá•".|b)ö]9æìnØ‘ñ> kn ü€pKja„ƒòt,åædL^;U€ªç!V²½N8#齂hs&ÄfŸ€B¼tzXmia)PFuзÑ¢A¯,9öEýbbN;3ÇXÌ ±?c4xU««ùT K½šg™Ž‡7mGPÔÖ¿æÛbï»?›ýªY1ó\ó®ú’ {[N%]ŒJ–„²m÷º(÷•Êyo®á3ÍÍø'eUX‡K…ñà7 3iqÉ ¯‹õìŠEÈß//ôÃHhœ¯Z÷œ­²GÏ^ÜŒˆ‚ccB*l"U3q CïøÖ²g¬¦šâgr¯š…¸Ë—Dô“ëÒŠ»âØèVvNÞ{sWª®}|Lù'µ¥*sqCƒAf‹$âg ]¼€ÄÚ¶†&a†Þº¶RÒ5pF[€º»\ÓÀ=\º7«ËÖ ‡°Ú.h€V¡;E²÷ë«YcÝF\s Yh8æÅå-£ÄškƒåÚ} ¼!j[.Q¶’¬[ã{)8Q´_¹ ¾¯HÛ‡H§ª¥sá!ÅËëÌœ8ïrÕ|ÝØø„q*s‰µcsOÚÒ °4½Ð01{&Œ'õï-/Á O­TÌ„³Ä+´ŠðŠÿbÃéJOG 鵈¢­ä{T’ypE2gufHÞ;N/ŒÆÛ}X¼å,Ûk”ä©@Q 6ƒ-h­ùTh÷zêóDg\· ¹»×]¶fî—³šÁwÝlFÕÝ'JoŠõ(ÈT}o >©pÿ$Ê!ï5 à‘õ“yØI#,]$]E y6¥U²Æ}£wT—ªÝ¹%‘$û‘³ÏmJ}~)šŽ‘€}‚º tÚ“VXpÚG›©c¹¹6wéNyä]û¬>úÀ›*Îö€Bq¿~l§±läBY1q›¨ §wH€@N«Â:œ¤ œ;%£¸;=—›-ø’®«‡v9ÅÜKÒ£þáÍ"ãA( ëí ZˆH)ò@´aÓ$ƒ+{œÃJe÷ìåeÆ DË£î”)Jˆö3!F ~žS^/O?È,Jï3GàÔ‡lëG#ŸºÙºÞ)=–ùùs)ä–LÂ6kUHRëæ§c*4œ>¦hª²ÿôH8 —v*€Íë’ó¶ö±ÿ(‚êp8VÞ}•ŒÚ埨ž“N¼â?n¥ß^o?÷¥ãn]Í7c;$;vŸn[óѰ1N’¶ @¸pŸê}Þé…¦ììÌ#\ûõaF5ÏüzTÄ}’„ô§&,*ùÆì¯±ß0bŠóy?û8Ý$‡ßÍó38ö#…wÒûV‡ÀP·ìTkÍv¯ÂÔžV·Sè¹k R Jà7«ÊÔUSMÓŠûÐÔœv™’QT ñQ.š'™wÍMc"LÁ©MXOÜ™]8³îÕž…4.¦: ? iî»#_fí –))pëM1…fçN4K=}¦¼Q9¾4”µèÀþÔ³½›»a¤¾b á’ªïCb±zÅ÷Pr÷⪹Q×*1 4 ÊŸÝB°C—YÌ#¸Z3#veáÇë—wRÚ¦Ã&<ðÁòYë^Wcã [-»’=>Ü×+ÕµÏG±¨°ß €¹$ß-åòMÚWj5OõmN0? 0ª¡Ãu®åà¶™}Ñ|:fçe3…bW • ƒͶk0Kwý¸OBXJ¬XϾ+–„¿· ÍÄ×ÃÉ~÷z!$ïuÉû)ê¾áÕkχóJn?*… Ê1I¨¯êÌÙŽNL)ÜØj®§‰—?yM§$ÜõrF•Ô,õ$MÆo&l†Š5WUɽ~?v˜÷6ùdFyÖºáIºÍù}-ÛºácuµRȶœ(âXèñˆgÈYì~Ä€˜‹üh³å¶a²ÄxÃÊ|E:¾‹ËeöºÝQvÀƒ¼ZLF»/Ä ÚÍzLÊ–Z‡òÉ 6²XÌa“+.\†]É<Ã݈¡‹ÌËĪ<€ÚSé@‚ÌƒΠ¡h¿UEmWPöÈY¹Œ\DRå&A/.º.L‡–4àÀã‰òÑHµ—‘}¡¯leVVÚY_³š¼’4‘ᾯm€ÈÔ¼fýFMðèmÈÁ³×q’¥'ô‰œ†ï|I—ŸÁL:Z›š3å]/`JÚÁŽ´0/眈fÓ~£{_±8ÿmJ‹Ë퉾Û12-ÏÛ(š£§:]|…Œf‰$è³,£’¼mÔøéFº)Î;¶Ç3ïáÊ‘Ckk¯¿dxü`j¡\vMëVtZýû!oÎ]’y×ÎzfùAÊÅèâ_Iß›¯äýÏ£Dׯ‰/4x_fWµ{ôÛ6ûUU™xc…,÷Rj–p¿îå.ƒÎXë‰h®t<5˺$X.tŠdv'«ìáöüwÌÈ”˜p? BºšÃð äZ¦´çÁî6y}|g†›ÑÓ·€©W‚QŠ–Ó&ÂÔ*™ŸÌØd2Åà4¹‡ñô„N!·nîÄê‡Ó¾M"ξ´8[󇔅EÕU°€¦…¯ ¬î§Í/Û«BOU|ŸÚ¿YÔ×X-ö$Šë|ÕO3ï=Ùä Ý7ì°—ÁµúæßHCìŽùú eÁö]íûÀ-Àlvx°=Ï¡˜a²zJJž±Ètoà¹Ñ›Ä {H×h\æ¥úÛtÕ™öÞ’õÑŒ4ºw²L+Ÿ"Õ$ÎÙglp¤›:–Df6–d¨H~+œä;]ÙŽa™ùÌðÙómÝì¹ì:Ì4βsŸ¡QâD˰>öcBÑ£{C‹mŠçyç‹§¦Â/%¬xû^ Óˆeý¸´–¢S][®˜›Ò3ð‡(ö¬¼ÓaÔØ$wC/#\„<’!$,i_: ^®-”v¸áûÍú½¨à9d;ª}d˜ LQâ›x¤Êµ?Ƭ·8±7(eíãW!OŒ°kܽŠViVgÉ ¢¼i’0¦m½¬•©¿ª/ýýŽÙfßzÚœ®ØÉ^»"S±¹e¾ óá+EZ¼ö$+’Ð\DRM÷†ŽrÕyzâ©x~;x*ý9Þ£e^pë-´øT$ÙÜ‘êKãüdýzF>{Ùrü‚&º­Aõç±§ÌY|¬V”b˜—*&§­.[©^~ß·syü–<ó”]E·ÅÙ…«¥ùãb_f~H‰ªDÂpë‰úÿ«)(YXõþí\$W“mRˆhâ;…µjèšöåõÉѲóãP@uÆÁ[|ß[aíÁÂl³Ô Ýñ8¿hÎ÷]ÞÄí”Ä®µ”mT´AþÏĹû{‰mõ8Íh@ı‘fÃÉB!*ý§Ïžç}ÝÕ׌+¥Úñh šq”èŽ(¸s~“yVùnõu$«s¸Ç­s¬•™ô7ź1ä`Ù¶´¦ø‰ˆTƒ~‰EFn®}ôÆt–„UR+ ¿•Û“ü­6Þ·Žgæ÷1}ŠÓŒì¥:Ç$'5Ì7×û{Ͻ«¤r&"?»{»^s|ëY2‹ÄN c)¦ÝÆÛ‘RRŠ¼ç¹œP¿gÃ-UUÞp¸º¤RrŒÐ ³Q¤08––øFì½ìý¼[¥p²QU—j›ï¢+Ôõ½ˆ?£(ÍV'-ucò³^ýE ©…‰l)²r}:ŠŸ«9sôxò^J‹VÔÁëâ‚••ʪS¯:1%ܗΔ$›'µ‚k¼°ÇºÖÈsou¨¦øµ¹'»£f´NZB—ôåLsš®#–òð3¾²í‘¤Äc ¿/9®åõOöTØEkW­\^ô95»XÚ‡±|dÚ´«­k—t>Ýc— ÝÚJ,ÒïÄÐÑNåÇ&Ì´³ pq"Excúëjv{(Ì~0ÊLœvy«¥ßâìÅ~ÒîD¾‘uG*˜ú:¿ƒ¾ZýíÍܙɧ¤z1ÃO„æ‰ø¬‡âÐ>“Q¼­0€Ñ¬äÜêôä9c&×L”{Ñý¨Þl[ÒY™L_ $ûh±G8üÃè\XUzÐFá»6c²–>ßoø3³}̰`WŸ•Ï®™þÒiOZ"JC’dA>F„z-††FɤLc¡–æ(½Š¸•— &®Â¼$, }ù–TØâçyúòZV21xYïgÌžÛ¶X%,Ñ,ãâÅ {®VT—Õ›iuëÖô)·;0÷›·³Ðê(Ð+ò׊Iî5¹ZX)UJ4pÍϦ¹ÃÞø|N¤Ôa¾(‰í¹b”Ÿ-›Ù™Åª»mâZÏðcÇØó±îZäZURc¦q@‘‚Þ£òEåŸVÆíÚ°Ú¿îŠKß%KÜdÀm®ÁËòÃùð!®(Ã`e£ÁEäI¹II—Ù9RI˜µIÄíž2aO(u"c?"©X;r_+ »…$rqjÉ8#x¾®ŒÐ·œã¯Ñ˪ååÅèíÒ¡æÈÌ ÛñɳùAêÆ@¡à˜òVZG¼¸¤›™,mÑ@üâpïåÔð·¬’èˆñìOu Õ{Jð;Û Ýò™Õ´>s#¬£©n‚XR‹PÙï‘[ù L û×á| çh:‚úp ß§Jåÿ"F†Õ‚-‹¢/Ëž¼>õ’¼·Óz[ìéñî2ñEŽa09öê+¨ßÖYH?×s;.КSÝUý:Ðg^Móÿ~GebŠKi‡ÒévcOÆáA˜k¶ÂIBp:m–ËÔfA>Öúc4«ÕÐ)­ºC»$‡ø‹¡„³ u¢T¾º¨!œ¸_ C¡>P¥uÚPQý¤<ìñ¶µÞ6Öñ±#­¨ǸFQŠAXüüªáX½žé&ßé%q_#ðŠèmågoÑ“¡-w^ÞÇd³ä1J iÌ'ù†ÕÈ_­†”h–pçœäùf k—÷“0J»xj²D:KØ"БéèÀ0Ûu™[½-²•ÍñA'ðã)9ºHdÁN"µVR•›ÛØÀÕ¼ºÔ™,¼7¸çå 9ÜD·©ƒÅ'÷å‘pÛW<Ž­|[6˜à̧[,´<7‚2ØÙXÇ×ÑÔ™¨QƒŠ…ê(V‡ -å«KßȪŠÔ‰±õ™Cjž_áX3#@ŽUÈR:ýÄG„ìbƒ¢“W¶#þ3/É># ÕDξU¹ÑtiBH™u;E›ì€÷8 ÔE3De0ÿ ÆÅîµuê»]ëݤTKøØ‰²+uÛÏu£Hø—Z¥Ã@ ‹½Ä|^&δvÄÇWXú\KÂT˜’a[óû'Ù‚·S`Yg<ýbbáC=Èø4vä½­l})˜àÙƒz§NB’y…ò¬cµ4f«Yî©–Þm…Û ‰?'Úª“¼”ÎöÖ©‚6BQ‰Y\"s/^X.,³™¤7¹þ<%§?l XËP˜dœƒb¬~ *Že¥OdoÒH‘l[ÿ˜U´6™u %âáÍÀlÌ·õ2ÀˆÏp¬¶º½›ÿƒXÂ/¤àk‹¶­l‹‰óê3º{Ì/cÞ?~9¦ì4°íJ»vàXŽwûv½¾v|(ç/q0JÎ’úLGm8áÂïéú¨áX¿±’ù]ðuÕdƒ¤· ûM%ÁÓ§Ür΋†äóºGL5=%Ô|ß{ÀÞ—„ýeLÑþ ƒÅ"Ìú¾LA±Ë`êé‰S˦1ž¡þ [aS¸÷jªwÏÜR²añej&?¿3ºtŽd\ê59¿À’³6UúHM¶•Þ¤¡”tÄe ™R·…ºwÛ–ÆÁ°<)sÔø€ÅÉâ yçÀÕ7F×®_\ ÉIït/Õ­‹Ùí ¤6q‚‹×V¯}¬¯²q=çö™÷¶¿b¢dð[@(ÏÓÙ×¢o´¬fÜ7¥sB.—íi¯£w’õÍŒJFi‹ýf x Ȩ«yÜSUWì7Yw{¼íÏ6ç÷5M€,æ;?³ž’­€˜ ,¤ŠüÊël‡—)Õñë„·z= wæ2ÀPR7/Í÷«7Ë+Ý^Œ0oÑM¾s¾DR©Q[?ö(¬GR¢1¯A—^ˆÛÌÈ"‡tÿ 5¯õ 7F‡¬)›‡’o»ÆeÅLóÅÐ9m‰•¸»f>5í‡Pâ)ÞòöDz|—BÇ×—šJ‰ÊS¢,û&æO¸$ãSßDåÍHf…Š#;Ä1> stream xÚWw4œÝ·Ö…è]£EF¯u½ 1 c†1:¢!"J%Ht‰Þ{I¢Gï½EKˆz'ù¾ßW~÷þq×»Ö¼ïÞûÙûì}Î󜵆‡CϨl²…QH PT$P½§bf¤) €@â )ƒ€ý!å1¡=à(¤Ü?0ªhƒõ©A1Xè=ñDDÅ¢Rr¢Òr @ ’ý…–¨A½àö€{ ó åQE¹ù¢áŽNìJÿùðÙñDee¥…~§”]ah¸ ¸Å8Á\±+ÚAC”†ñýW >' ÆMNDÄÛÛ[êê!ŒB;*ò ¼á'€Ì†ö‚Ù~ кÂþN˜”`ä÷ø#dˆrÀxCÑ0Ö€ÛÁØ$O¤= À®0ÔÔèºÁ€µÿþÜ€¨°è_åþÌþUŽü µ³C¹ºA‘¾p¤#ÀŽ€tÁÚÂŒŠ´ÿ„"0{=8ÆÎéæüá7þ¥; ÓCyÀÝ5Ø,è¿bX±Ù¹`ï,=‡`X-ý{]u¤Êþ—èÄ$¥P4êKŠ=m¬% ðŪÓæó›Ða$ ƒM`' 8 Ð¤¿ŽVV b÷ËõÛÉDÿ0±Q׿MQI€ˆÇ?L)€æ¦4@Äó·ù¯í<Ñh¬l“ Ûþìßw æ³#CÙɇ:—‡ÖŸ”*³xW>‹Iw<9ºfº¬Î쵦¢ªðóP<;z\¹yd5úç<Í–XþU•‹ÈÅz.àE´ÃDe=¡ƒí’PÀÍíÓ-mO±U­¦& q¤½#÷jƒnï#¥a~F!÷ý•Ñô» ·ª‹‹œ¾ó~Ü&ÃûMÌ$##N†Ú œÞP¬R¦<<Ò¨Éíq ôy'ñ&xã狎>1ÉÅÎÉB!\øÂ –ÍMr7­£ôMÅÔõV©Z6€ažåVu¦³x¾£úÐ`>[~½çEZëiãg]¾ ã/ ýw?¼ |ޑյ¥ÕY“Gk~Dрə' ÒÈêÜ­ÂÈÏËX=>Wlœ&fñœ„éqÆ/k°$›`ؤ/ƒmÛ.¥Œ_ó‹Ñ¥J5Üvߜƌö\ô–-©Ç·ú­*\œpÉíÈ+<d*à~\âÔ`浸՗<ó]|·‚úÜÿUƒ?­ w :'Œ† ¹h ËMOx™ç#«Õj-uü”`¥ Ãsë~ÁëòJñŽZC¤ì Þ¸ƒÆ:Ï´ú'ÎÁc¯ï G7¿Ä…Gn~+&ïf"ó½xO»ùÝ"âÑ @b}¢7]\7£ÍÄqæÃÑ+&4Л½ò“ÒÞÏÃ’5Úõ€ùñë,¤äuO#67_–МÇçt»4$9¯oGӎż}4¦µIŸ[¥ç¶(äüà)Û[·•òȯžºq°øhh(å‘ÄMöÚ~ÃÖ 'ô~k›ÔeþZÿ7FUð4ùq(‹‡åC)ÕþêYÿYÖâ›bä ; œª‡ r'¹@Xî.`ôy~NLP¿•]¡.ú]aýÜOÕ-pÓõtÓ¢™Ìñ6‚®Òû ȼ¥P7Íøà#¦ö§á¥íÃr¿X{šPõk’mižŸ˜?|SúJ’^±/»…—Bm!øLv_àã025¹.S§+¿6lQóÅoæàzÙæ§2è+MQ"°ZË1‡Ö™ÛËk½H:œIË‚É×’Ô"y˜rvLò`Zf’·¯{+‹Äg?g€”flv+ΰôx; ÖYå'Ç6­ud¾UO,ƒN9Ëø²jj|îÉD ÎVr+Ø XmeÊ«}çýœÈÿJ)Þ‹¯ qúÒÄYvÔa8e%‚{µ©Ÿ2/ÆÙ¦ó†j÷ðÊ—?H€Ïd§(‹Â©ÛÚ&tó÷ûvQߌÏËå+bœZCïlÕm¤1o–YºÑ3ï½iéžë”Ï߉߯nJ®0ªzëé=úuìÊŒ2¤É†Lë»<œä+"Bv#7ãô]„Õã üº&¥áý]vÿÇqÏ3ìj?ÅkA’Š8¯Uà„Û¥›½¸x ú+ïͰrZ>¹Ê\Ú4ÙtÊËb&Ü 0Î:™ÅQI‹ôÇךìÂG‰LòˆVÓ”ž3žEßSØ ëvž|_æÆï£›IÑåòæâõ€á<(>鮤¦4­Ð*û# øQ¤uOª…jŒ"£" ·Éx=8¥XH½*nh§‡eîpêÖÉ;öþeêiX¸ÿÙÜbA˜WÝîn¥Ò‹]be%+ØH$§ŠÑÓe}]}~1BbÚ:9ôv³ÒË9iÐÒJ&oA?©5, €sKr}‹cpY<²¾ÚÍïó8öö®@ Iz¸Ÿ[·OnhŸu±À7ªŠW8ƒhÔÎ|1Óf¡íþSý: én>N]ù'¹w‹C¯îo‹¼“xÃ=̇ö¤ð/Ùqf8P' äé0ÿ”‰¡eæ5zÌ¢ˆyB# sj1Œ~Vˆ_v¥Ól×Ài%ˆO_ó ç Ѩ´t©}rõ•·T0ßL… ­G5H’KÁΙ2AÕ:½ZôYüAž¨¥µIoêCCÂ(!¶¬Ú*9F×Þ˜H*t-Iä´Úüñ)½ AF’òãË–D§-ãþ™ä/‡þ8A·ª.ìXhÌìWu'G:-©}Í”Š•êõi'ý´gn ö³Ûù¼–5&ªQ¯Þõ1föÑ»Î&NSu¥(Å2v·šo¼‰{~Gì¥Ù=³í/í¡PXÕ$íOËñ=qG/&ü+O­ «Î,У/ž:YÐ/:ŸîŒ{èÞÜñƒ¤ÝDw‹þy-I)-.9¨ÙcH-—ÿ[×FY¶³23MÕÂá“‚^>t´_¥%ï.íÅ뎸É9NÑv ÜÀ¾›¦1Çûl*èð$j½0&/z°I*ººŒc¥òüõÑÌÕ¦²Ô|¼r!Òiâ-•©]Þ æ"âçuo7…ÕÓ–M4º9çéðø«íǜڤb£qNvOǶ9ê»îsdóžÜl®fVÔªô¥†¸‚€O¡Aì²£Fñ”Úzºüè¡RX/c^)zÄùf 2pIpÁ»©"DIÎM‹5"Á06Ö´ÉäºéSÊÂ-þ{ì#vâIÖo²Ä‡ÂIÇ"•ú¡Ú÷Õ9ˆŒ9—RR‚iÆ|߾ߢââRÛò,9îA 7÷ÆŠgʃ&éÝV“dsäÓT¨ê€—å1n@éŸ®ÕÆÝÏ×¢ŸJi‘&ëÁ½¼æêuK+®‘LžìVWŠÚj­Ý߃¹†øl¿k¡˜¸t™U öÿ* ût°ÅR^6V¼TˆŠÏ ‘xi!*&^бöÕ"¼ÅƒªmU­Ä,ìAÁ›@ið4ïVDFØ€^ya÷•TnÖG5±?w0­¤¨—3 šÉí+ݶ1O§Àm²=ý%£wƒ¹¿tj¹‡M¶¤puíyÃggµe2‹ç¸I&Ù͈éìç{çA¦Ãz;F ªµËSËq¦›—, ó¢ü×ðOÚzÖĵñ=(î7ëUú¼­_vRx.HOn[þËWÔG E{ ÊwF–e‘éâSÝ«·sö#,bgøŠXc¸pkD2ÓS˲v-­³Í?zÒ üÈ"l+È%xK]¯ÏËÍázZÁ,KLLZmFØÊHæ•þd G)‘à«oñ‰ ¶\±Ü‘AòÓÓùãgv Së²ã´îºS«¬Ö³•àsÄ7”¯RMXópÞϳB«nì€ïÒoåê„Ò3RÞíÔãð¥RNßÉaÛ5à¬ýâ-’)®Aq¦½ãÙä›r½Æ¤®ÊH4.é‡î t9³ìuù9pâI°4X64ånÜ¥ŠB„¥ݪ’f Ï?›V¨.ûÀ¡Îi|øÞÝ—ž7VKç™\Á½«Rç›ÆÁ.¬Ì"›B2¶½4„JJŒTuÛ©› ÷`ÞïÒì»<<‘krïÛ‰tDgõÈ…;ãFžô~÷.ÜÍi;ç=ãR Ü»+è a¸áØ\ Ú%bªöÞhÂ_«o4(ùéW#‡m¬çH´™‡,G d$·uucörè[Äå 40[Á¶ˆ×°®- V30SI3çRüû2¢ 5åüî]$†4CÓ듘4ùßSÚ¸{_F!‘‡^ L6‰íŠhý`¢ì~/èø$!RäÖS«•X,•ÒÙúEv9g·lýLW¤;^VµK{mj?«‰"Ðf¸W]mOÀaàn›ŸÂŒ'‰×¬½ÑÀãÞKËÚYª“*ý’SóZ–}ú³·Ð;_x ïõˆ„›©ŸâÒùŸzúü×õUñsÝz¹-œf>ä'ûÝ:äg5˜jâ›LÀ1YñÊ¿/æÀ²6j%ì¨ œ$µ\û†Ÿ@G¥?ÐÀ˜óÒvõ˵¡¤ÒBªÙøDcïú•‹¶&›øè®ûãá¦$£³žkÛ£&uŠ—R¬ÏÞ^3Kz¦Çqۆ꺜śÔëÓ*u†æ““¢ÌªšGýS ‰ üŽñ `ƈ€‡&]ãÙç´"O– ¤³tÙsL-ÈRÚ/ýíþG|¢ûËL‹ÅÒ›G•~‘½³yê~O +wʶkÜë³~&tSjp6’äpÈ,·=@wD=^¨«|7ìóà…jU. ÕÎàË|ÒŠ™Uœ¦¹Ãù²ãú]Ù¨9(>†iòk•fV?p~kKwÐ}âFA/Ø’“ÉÓØÚ®ÖWî{¨’²¥r$nY ‡ƒS§|_ÕO¦•ZÛ…5_S˜KÃH› [J6¸™ï–×É@}ÒòØÏ‚ÑjëÖŒô w>»½òæú@å‘”Ós"*úqÜOUÞÀW{ããЄYûàÁù§• Tˆáâ‡ÚFm~aÞbŒ‘€÷þœ0Òz+Á\w šc“G™ °XÅhÍ×3\1.;<|­·Peï£t¼ØÓã§^8öå÷‚=Žï¾Àþs¾X%ॠ«[I‚Ììà .ÿ°¤7IŠ\Þ˜ÿd®+_•ôêŽXõ½‡Àƒ-+ŸÎM¹Ë‹X4M^}ªÅëk=*^Ý ‰ÜZ§a8?# óúeÜâ÷D™=õð†Å}^7Cg?)ÆüÐ Š3û"Å,Újü+½€ê­• QåGÊC\í9OUý„o‡0òUÓë•i(ÝrjßÕ’5SÈá¹ ®qíÊ{Ÿ'ÊÞ8Ò¾š^ž§Z>ð¡Ì~zÜü½›VYIâ`’Èl¼7¬¥¼’ò¥ž¡÷ó,ZDØñ-½ÇÏ͈tx–œÞÈ@Ç‘}„@;ñÀã9í¼^©¨È£wøòçô½†âž7šº³-×v¾/Ö¸Ó•¸ìð’°w¾9áG|8•$ç^aùxAŸAé¢G>øCúˆb=9ÐûZÎËËÖęԋ»onÎM&<ßã7ŠNßáU–šM9‰Ò¬Å²Ö^/º¦.Õ×—¡\pßûçP–’Œ)þš5¥ÀdŠv‚~ù=>9pŸÝ»q’aÓ\v`!"ãa˜m?d©ŽDeV”±žÞûÐ =Sq~wÅ+Mƒ6Ê–F)KHGØÙ—{á™Z±dyV*ãú³ÄQ…ÅííÞüsnœ"~ººA—ÇÇ·?×tn©x%·S‹mISGtr½7˜œëç×øbÿœ"Ü…[ÏŒsO’8_–<ì{¼~ùÍlÒa&Þ݆ëY—ƒ…#-”xkjêv8ý£ÖÒOvø¬S·ñal>ÜT‡¼Œñö¦9´ˆÖÛhÆZËuؘOõÐV­1n.š€F^ ,:q}_-’2šñøÙ0™`$Â'ƒádn0.ßw«!¬-©²Šl1:?m®UøTÙjñT>ÏùxH×Ìì@‹ÌÙShbЦ™n qÜ™ä÷5~èR5[MÓ6Ç¢Ö«^„ÜÍãÄ;y#2NÊ©!¼€óð¼z”gïô6Ô¶¨~—QkzmfÆýëcª›—ífç&òù–ë#Ï&ðâ?Ÿ ú¹?? (Ç‚Mœwõ¦³}÷§.Ž=X4„_$";£¥©\Oh·ŒkϾ.½m!/-@%ßXŒ¾“ Ž*ãÅ/t6zä}² Hñ ×S¯»‡~Kßz‡/tð”ÆèUdtwxÛa€±¸Ÿá:o³eþID´L€ÖYt+f×®’9©«Xï[ÉÜ‚øwh(7ÊÒ¤,vE6m”LƒÊ8ž§¦Â¯“Vp†—¨˜µA©Ò™²ž”,éÕ”Ö”ÝWo·Ž8fr3Q$ڀЕ\ï}øÚËø-~k¾õÂ\u¹ùüí+ü¸Ú³“QwÉ+-ËNgÉ…b¥#ähɦ0>uuRí‡OÒg)ë\kýiâpµ¹»"Ÿ]¨'”fÕëôßz[¦±ò¼Ê£¸YŽŽ¡°a“¶îM¶?0¥åøxÝg5Äï}â*ÝLˆ³Œÿa~XÐ×ç´Àû~Ñ…uÆÑŸïÆï©á-ž©Sšz$ ò÷:Ý„V'fê×i«ÏÊÀU’Y%næ¹uúg5̱êi)ݲ£šÞ8U!Tmè4J"¢šˆÀ#aTíO«Û ´ñ•aY¾zšł»¦~(áK¬U!\Hy×êöª’‡s¾¹®â½6­•yŸ¹Â4:§'%öM·»<Ë+?ñª¨™7|ô(Ï’™¢½˜ÇJëÍ…Wê{åcç³û¼° /­œò2ï.RÆ"îkun}J‰Ë7•Îæ}H7ÖZ„h¥Лz|IL†¹ \y là'»Sê,ªÛbÁÊÄr_‡kYw&#T‹«³2­Þæ‹Óo¾g]ˆts@Éóá‰þ¢£}MØPÎA}6%É.2x3_ç¶éw~0µÙIþ› ßi,XÐR§µò`_çûI ~ÒƒÜ_zÕáä¥J wç^‰¨{’÷¤AcB:%ƈUÈ·\&ãØÒó)ÙjŠÕrTC…rªÄu©¨˜g¹Ù/Þ†[m‡:(2K ¹µÑ/ÌóÜOWBµ#šß­.¬‡"&¿º½¹AÄ«3)7ó1îsæòüT[–¹G§$M'™êܾqõw²ØRÆ¢ÆÜf“×õ_÷Ñ„ŠqS‚[¹@åÑçɵmeoÿà)ËáYTG½g¾öŽú‰L¿³ô2G¬"VL£¾ûC×nmÊÏÞï¯ßMßoÊ%¸LýÙÀQXð@:†ç'9ß˵ ë ܦÓ͉wÓý7uÈÊÞ,ðj¡é2HË6|—÷áëš‚!?‹ù³¥]N—/ª žÅ &Ì/2™é³pw¯’”i{w¸qêÜ—-Þëz]Yœ>bÿaˆ*¾ìؽ7κÎáÂuòȬb‹¾?Ä—ã˜vdž‘)f/<ÿΣê§@jÚjלVþ¨†˜áÆ5½#*‚¾ÛB› ®’ ©<&8•üÚÛü0?´¶ |ErGô} kx·Êéq;é‘Uöæ­ïìíu›éiÅiŒÁbÙ»‹ud]‚θ˜®Š®‚3ÈlÉñ‡]c<¡¸à­,cÎÀœwW“¤yM—»e½j³b÷â£*?/N2ZÔÜ9*£Ýk£ê} M¦ Èp”ꉬ'^l Z§Ë¸WÅ[)ã¼Ñrc7œïø«¬•èÚ{K°^ µR½y}ì‚ù•6 r”¯üUqSã[q§‚.3^Ò!Ä$8=là ßzиˆTî>h ø4a˜ØIÆ»jÊÞjè)Ãí#:¾Uméx–7î[qÌ lÆshI„lè<¼;~ç˜bc½èìR ˜ §zGÁ„²é)ó%×V…qq\(ÞápL̼tÙ§}ÒU 2V–åàuø,ÄÝÉ"\”ÿŒöœE³~ÌR£ùfhæ ¶Á.†¢‰„Ûó ®‘…?¶“x¨@i‹sâëGЦ’/c¢îˆ}“ŒÚj|û¹ ®å#ú}­ÏÂuëyï¨&äȈÒYˆúÀîÁúúN:á+iõ™&ÚUÇÔ¨Û…áGY?η'¼ŸE]@™ {EÚDw¢€çàr¹ŠÝóëžTp§”ýýB›C©”d>¾Dû/z¦÷¹¨UC²*‡oÕªüˆ&&Šfˆ†cÅ=lÝEÈyíq b̼ÏœöÅŸ–øU .s¼Y'}Ϭ£Ä>*ƒlE7Z?Ñ.â4ü²õ"0ú•Ò)|äêŠÜý•³žf­RÆbÈǪqÕ³)Q ×Jvú5¤1 Ž/\Ž,Çö}ÖžUê;ÍÕG\ŸúÚ2£L~>g™2hŠ*ùº"» ãW™VŸ%OçpŠ75âî Se±ãÆóŒ4$¤‘ ‚sÄ,¦œíØj븪û2®KŽÇWü=,‚š+]S³N "î\Ÿ6yåæääÑ~p~£Ô¿¼³cæÛ )£½rb¾*ÅŽ×C«•툻ãÌÖ[ÞSe*í‰)ÑÏgc炳«øO‚$¬å©8DZ¢¼Kͼ3ý=oð‹å,ô¼.ô,N÷ “b÷t´P¶ˆ9•nÍGúÙ/¼LP;ïáÞ“TKw€ôñ_0Pds¥‡ gI4çžÿð^'|Í96õ`ÞŠI¹¸bT»§ó¨lZ‡‚a…7̧ɟäžù\Ÿôèaõ•^YäÃLd×ý›\„Ou1a§ê´¬:¾Oè 8bç'514>”‚óºÄ°,ñ6£8Ý£>aóGáŠÁ‘n¼U÷õü§Až£'æ&º½MÚt0®+Òå*ܶ"U:ùo&)ö;˜kjTö‰-_ä(ž:µ2h‘²‘@ç![~€ãǯB:áƒÜ_³ºéb–Y?EФÅ|‘$ßJÛØ¿ãÝhó?ÊØ2 endstream endobj 713 0 obj << /Length1 1891 /Length2 8330 /Length3 0 /Length 9464 /Filter /FlateDecode >> stream xÚ·T”ë÷J—t "0€HÇÐÝ)t0À30 ÝÝ!Jwwˆ4ˆ€€ Ò‚´ÔÅsÎïœãùßµî]³ÖÌ÷îg÷ûìý­a¤Ó|Î!m ³+À  '·@VMÞÈ àææåäææÁadÔ Áÿ“ã0êá®Tä_²p0q/“!îÕ`PÀ37G Špsx¸¹…ÿ§ƒ‹ä@îk€'à vÅa”…9{Á!¶vˆû8ÿ{0[±€Â‚오Àpˆ P!ìÀN÷­@Ž€ç0+áõ› f1;ÂY„‹ËÃÃääÊ ƒÛJ°°< ;€6Ø w[~• P9ÿ*‡ cqýx³Ax€à`À½Àb†ºÞ›¸A­ÁpÀ}tÀseU€†3ú§²êŸ 쀿šrÿv÷—õ/GèÆ ++˜“3êÚl Ž`€†‚*'ÂÁA­)‚]a÷ö wÄdy¯ðGê €‚´t_á_õ¹ZÁ!ÎWNWˆã¯¹~¹¹o³<ÔZæä†"\q~å'ƒ­îûîÅõ×å:@aPŸÿl Pk›_eX»9séB!.n`e¹¿tîE8ÿÈlÁ?·0 €ì{ZÙqý  ãå þþß×àçã sØÜ—öƒØ€ïp|\Aî`îöóù7ðû XC¬K°-Šó÷{1ØæÏóýýÃ!žcî{úÜ¿>?™Þ3ÌuôúGý+æ’UVVU0`û«ä¿A˜'À‡ƒ‡ÀÁ#,À òñóy~¿;ÒAþJä_ÆÊP@øÏ|ïõ¿œÝÿ"ó_ÂøÝ—:잺`ó?L7áæç¶ºÿþÿæû&ÿo4ÿååÿ“éÿÍHÁÍÑñœùO…ÿƒƒœ Ž^iÜS× q?j°ûa€þWUüç쪭!nNÿE• ûq†Ú:þÝHˆ«Äl­ AXÙýɘ?庿fÍkÂ\!¿¶ €ÈÍýì~À¬î7ˆë=-ÿ€À÷óó{Hy¨Ìú× ñð @p8È çþšïOüàýDZƒ=ÿ 2€‹ CÜ›îËóØÀà8¿îÈÍ಄ƒ¬À÷kÐ!±ý¥ðÆÏód‰øùÝè>Äß÷oÂùoÈÍÿ7ô-~ Åû;öïXÿ1ûw0àïп¢ ßçqOi°-äh quvyý“‰€Ëù~÷Aÿ[0/ÏïÀ?Pè_ˆåoˆà_Èÿ©‰—÷?È¿Œ„ÿ ýæOè‡Y»Y!þ›·ðoè¾ ÿtHè>9W7'§?^RÿLjû_àof÷/°ûYöDÜsÊæök ÿB~c—•ü>IÄà^íç?v:ì ¶Â™†Y‰†Úׇ¶_ÔJSyplŒŠfÜÐÅÂá3 ïpû‰™ÂR“¼ ?“N|G¸°&Ï|*5G{ã³ÛÒˆÑúR«íÊ÷Úü…öøFÎÌyÿ§Â]é†>jìÇ:R›¾7.¾zA¨-È]Ïs]Ü„ð5óI.<Þ+z6ô•Ï ŸÞÐÚ¬Pyp]>Á§kT2ɘg™5EAà Æb%>ô$˜<=ûLœóéŽöÙ 6¿½8Þ"£žøË)ïÅJ×nÊ'”FÔ¨§ÄÇŸúÈl¥>{øÅ§´h©`’.ÞÆùNQÒøL'áà–ÉÄO®« þ1欖”IÙ“q'à}Ôƒa*ŠüðÈÙ¥:­”U³VÁ|ŒþÔÄPLJÁ½ÏiÐŽ!Ï/ت远‡ËÌkÜW–.ËÛ—E.òÔM=ÏTfû˜èAáè­ûÕ;f⯑(‚Ï”ñ4¸ÐŒXdQŠ‚^zW¼f,2ps÷H[2~aût:¦R÷ú€”M®J_º¨oey²fŸz}`J3ËS´€ÑžE$U¸‚ŒyŸC”§ˆ™R½¸¿áoóó_è®ÐÌ¥{²‚ÚIþEÀÅ×fú ÿÊoèI;éî•_&#nÉ€M»·ïw•‘pž8<Âv@‹'Úîã’ÉeÇE.QôëÜ×̘÷¿‹’Mx¯Šéßh,b—’;¦B1æÉ=ò¾¬J½DµJ+cR&ßOþÙEœïÕT×Dzdá¦\@$2Ži ÛcÄ<…¦n$00^S°¨jÖTóG¾µ,1ߣ0Mƒê±Oþ<'yÒaoVö>W +«õz’–ÿŽŽÛH5ËÉUçi?"Ä›Aˆy:°*â-ñh³ƒ@ø\}<Ócî‡{Á ˵ŽN+u›²ª_Ηǵ_Kç-=¿HœŸQ»áûu$V?ÝÝw4¢Ù{=innŒØ)”S™/Ù7N6Kýts†9`œÆE°!¯="úáH{;N4Ÿ¾_€¹¯¬A…JR–nDBÔÖŽ¥s WÔò[ªUF»Ø-,õpó0<‹™„Vl92.ƒÊ—-œÅoJ³8‚”çiY5Mª‹“Õõ2Ú2¾]ý›­Þ …3°òGäó4êìYÜPZèú·¾>EV´‘6^îq|ÜÕWïvMÝ5"$cŒˆ?E ©3(T3!›/x ^õ†iV£:'ߢ·Zìt@ªöИ×y†ÕÑ)‘½mŠòÔÄJ·½0–|p9tç—ðYP}ž¥qÊRhV!¯Ìl¶¤fL° ˜èx»«cSjܹÛE5콸퓻ðN(;ÍSÝexlõU¶¯p½¨¯’¦ åÒfãæá¥û0´JçÀVGÆvÖ̦5Tƒ´P¿òAa'¯Ê¢í·ˆÛáÖÌK°ÕÙ¥zKXâ—” âÊbÚs—RàÌsÎáé|¶„vîQb«ç%¦o>ºgWO;aåâfÔÐ^‰wèëÙ<Õ¾õ©¢ã ˜_hßbÚU‡ PÖ%XÆå:š‡PÌ•¯am×Þ’ç<ì.{4²ºËÔ-I ì'[åmòÁ?TSYL 4?»2Ÿ}¯ZÔé’FµDŠá6*•ñY/ÌóžÞèÀàyv–Z½.qÔþŒ5ªR)»ŠöêKB"ÖøÌÃBѵ[{UlÆ|‰2ǬHSº°\øüEsäü¨aú’(ÏÏÛž~áM)_:2VÝØ¿¬8;4cò‰½ÖdÑûØèŸ'Þä62¥Ö¹Š›’å!‹ŠK}\‚þ¬Àñ¥Ì9¢Y`—' ÊmúÌ6ÔÆXslŽ/ƒ7Ú*ÈÌò ü*Ì“LEàuòµË»^­›CÇE‘‡ÕØÅƒ.û“^ß!9Çæh‚Û¤_ÕTèºøk™]w(lĆ乱ڔ<–Œv%lKÞ(a‘kiÕc„é6D…HÍ-¿ üTùt‡#Y.„›»ù°ôÐÆA–“Ô8(§:uÁ“2v‘IÜ3¼G?@éGÙˆ?Ž+~I41ÙM¥GÄe\\AƒFaG ÞNud$còY¸ê Å矌I)”>S^‹¯P(¯éEpªg€Æ ·½ß³Œñ Ó®aàìUS¹ ÎÔ¯2­OÍSeûžd¯e)›Êͼê¯(gÊO}1úýLN1â9Æ{­'ÎÈTåS¡]˜bwß.jý1éå¶»l§²¤+ä°I4.6¡ãê U‰ìŽ`”G™lÕŸÆvj«Î&Â:£:{DlV©õ,ìáç3—ø#0ü=cßoX•²•[(Y½Xw'¥ÏdC¥Û´]‹G¥v$¤etØmÁcŽMwߣÇ~Ë8¯VöM:I`:\Ý' ìckŠi…ÜU½…覄òn{ÃfAÿ†íºÌ<Ùç­™ÞW0›±ۇюn"0Þ\¯TjÝÃÅü/‡& tòQô=¦—+Q6R«¯Ýg¾VFßÝÔØ?P—©7 )"=äôz 9Õçí½Âæ÷‰Œýð„‰D”jû‹áµiE¼E.xäs]_gZ %ð=Fª Õ{Îî^#°Ð÷•säôÄw‘tVb|âë>‹N€l×·ÔIú‚¼´¤k°z)VmÝ/ìñÓ‘ëbT |ïø°,b=åúß#ÃDä§ó4>j¡ "iáÕé¦ß–²O3d¥Ë³S˜ìMóį®Tø"ÑO¨ä¥{Å ëFE†Õ4&AýlzƒÆkÅ–ì‹ÔN YÖ–hФá4£èZӡ¶öÈß š¡O’¤ä1÷#…­|™Q8Kÿ5mÍ4×:Ǫ†{?jQ”W@YL°0À´•aìùËø‡ËcdOÿp¤ïtØÃÞƒbFH§°xN„倌Më£C­7+þÙCïòk'*µ#}Mpe *¬êŒ‡þ»Ôø>æO-g³màb×á(ÁO¨@6Ú‰/Þÿ¬ŸÃ‰ÆÈËîà<` ÛrsÔß $ooÕç¦D¿ ¬½ÊnTŠSØì³2°¿‰jG•Ó¯œ¶Ààiü¾åÕðòá,Ö“;8ɲX#‚2#b€ êÍÝÿDŠÁ“#vÓš˜O‰JP^Ç+[ùB»aŠA=GQÛÃŽªp|.R«”7“4íhˆ§ªô<à€ òøÃ‹GÑÝ”")Ф†k'7¡­?½÷‘¢|ôž×ß¿Á6 /% Õ™"kú)bÝõ¶ŽÜ¢–üe¿f¨Æ]MçA1%qJ— Ñz`"¥ÒöÂñŽžË4LßÛÈê«?¿ÝÖkòÖ–õ&l,ù¤òø©zίwGŽO8Ö±W‡sS"â¨ÖÊG4NÆV 'N‘×iq¯ÅÓû±såÓ'×é/Œ9Z¶ãæÛhS e QêÅJ’騙ˆêš÷l¨¦ôí=°7…͆ÙR翇c|š`-ô½èj·ÇN·MÆ Ͱ1{Ù¬ØÉ!á"Zµ¤¶rÒïo¶áºdY³¿pÕœ+µa±=ŠFQÔPñ>MÁ \ßìnÁ~žov˜|:‘ÄN«=e“¸÷æVþIFõ]¹–Þ½L7mXTdã»±Ö‘öç á™ÇHÖá—Ý)C¦ß $Ó”_5;nê¬_©[Ï5 wKV ÔÊø¦]ï¤~Ÿ öh—vsû á£Ó'g*Øz·;xh½ºçóò² k‚rMAö#DÍ™$<2ÄL’wÎfÂþÏÙÈT¨¹«7¿¥ÊÃÊÑ\þÑÞÌu÷ÛÑ@EªË/“ŸëzÞ½!Þ©J75$fÍŒŸ†‡hÝèôµ>‡ÂûNËÏl‘W¬Õ„iº?C±¶iÖ;Ç£d®D[.ó†VlË´z¢€ qϤ€ÚvöèaäXa—&ç¯Fd¼¬<ð_y“gá÷ÙÁMMŸ?+}‘LìÛ&nÄNÑMÁò'uÞþ(ü˜`k½˜Œ³Ò!`@ùeõŠŸ­ØôvÛÃõy™ÖK£]“.2šŠ0~»à,ø›pJù‚ÜP2k3’>òwÑ(³¦f'@¾(æ).½dߎ©…yy™€SH“Ùd{ôÄãU&KÐãaFá\¢‡ÇÖ¡Ï&) â$ýÂcÙÖ²U KŸ}2ó’^máÓv™í|të]ë)*öÙ¸¬×_QGORÓ+ >’|g›©ç|–ʃ³éˆ£Ñèhɬ`(4¢Hôs¹nŸ¯–³ü ©Þ´T¬®>‰ÔRÊçã`¡4-2çóH¼A‰XX÷™jAž@×â·®äÞ> ¥j°ôjaÚÀÉ(¡ˆýÁN£àƒ¢n&‚džëÝcfÚîÔðÆmIôƇêÓzÊã³ÞÀ¦bO³,MéíÑ©»eÿÊÍ‹l•,Zt7DÒó»F!+ŠÚ4:)¶¼{J=|«Y_˜ÆÁ*Úxå AYlÍK”«K„Dö¾«-‚ °•6%uM â¨D¢g¶c|ûÛ+>—ô±ßPÔ±Ž0Ÿ}Ÿ›áÜ>:FG=Y£U„Ÿy‘¸×½àTÎzÞΖ8 LHf?ªÛ¨jÍÙôÒÆ-¹}¸è½¿“V^ M¯«â‘Ú¨åËŽ¶!Ïê{‰j/ë(q´·!£”mº)GhyàýÝ™ë-HBáR¬b¬’Më›t§ ‰œ{^9¦švñÕ§Ç*Æ$]{¿o IlêkÕâµ¾rÅàïôàœ˜ ÎŒ®·uîÂݘ¤—ÝÀ$lÃ, 1%\Âú? Û¬¿Gžw&áu‘Wàƒñ27H"î°‚“O~fê´\äî7{goñ9Îd -„z‘iˆh¬ßNJêÆ'—”$vòz‹*ÀA«å„h%~‰\æx+cr9L°zºÇëZL1Cuª£gR¯pËf8ét=Ç~ø€µíÅuÅG‹ä\6ëTŠ—“žf» o_¡¸dŒÊ‰‰,šjbˆVU-;8yÛîB­ÖoÑçÝ0üZ7¶eªø€¥ÏN£9I SÍúýaËfRÀí4î.ï´‘Ëà*ªÙTKÁM€&]±[Ù4p †¿^}“ä*£N ÏÊ_¬5üæ÷ޱ‹é“ܱ²›ÍN¥ûJk…Cjˆö-6L#–°cþ§U!ñ邟 A'?zNZªÉ›Ÿ©Ì­^Stä 7Åf_gwQ™UKÞ<òóÎÚ»GxŸØEO<žÚÞnN®ŽÞL£œ&1:•5<Ã@Þˆklù¨Ñ³R.ÂNלt£K&û„uÎÎX1è#2_Ü–FøI'[¡×ËTú1 mm"†AUÆ.Ãl²üÄA¹(ëŠ*vã%ŒëÊêê…|Ü HÛa«à±º®‘BJ˜ð@DЉÏAhÕá]»£»ð)‚sQ—F†´¨±H«/åiÈO…;ç¾É¢ùIv!ý˜Ý´7g» -Ÿr‚^½ìæÐ*”×o““¯÷çwÍfàÔÁjs‡.FWÖ‰\=Yôc ³nWé'dgœ¡.UëZveš˜Ê—º»búöJª:Àê ã5ª 'o! qQÑž)#ÌBQÞÀÕK2ëÞŸB˜ØœY-é3kU°Ì üa½Â=²¾ç¦ÔϾ­£<äËsFØ÷E÷¾M~õ!"9(fç}Õ£IEZðVÔ=€-ˆá)ö²ˆL6Üò‡|÷QUOʦ®d `ÕÒ°ðsÇnĹrH¡ÓPÚ)'ñ€…'å¶’à—<.F"hökuÅÛ}5ŠŽZ•rÑ~¡šþbéL\×½§.×&0—ÒÖx={t-#¤š×!( é ôôø”‚‰´WÔ9ΩiQ¯Ï=2ÎÄsν9½€4ê~åáÈi Žq|=°O}¹HÝGWm˜–æ1M?|¢°ì =òúÍÔè{Uº…Ã*cÌ+e7KÐ5ÔäV{.šr oD± Ù\»gXü<þçU—¾#¹Æv~µiO©}"NwMZJ¤y”³oòÆŽ¸‘FÆów¶ò‹]%lœV~<ÿôÌqšAk;¬(]Ó¦zóÀÆ©ÉнLž|¢19æQ}ã^.R„"Ž> ™¹ oÏ;7Gå­f:n«‡¨œ×ˆ.†Zâ$^µ$fYÿ _¡D´:Ø#Ÿ{iݪ«a‹Z:µ6y!xodA•È*¨M$ºV‹+Ÿyn††ÿ­ gaÄnшõžèU¸p¡ÉÞ›wå$›&Qr[bÄÝF9~0mË)ÚZŠ;R~¸Òx¼‰í1ä-𠦲_l`†3æÿõi‚¡Ò%×Àcš ºÛèÛ~7…O{åkï êŒiGúX(Ç}’Ià@‘~jï#ãÚ͹¾°¤ÑûÎG)kɋǟ°}ê ¤êSÏçô¥sbç›;ä³O\/ß¿{ÅC 1çÊÉöìõ*ÈǸø6õƒ^Ä4 êîœa“o5 úé#*6nKâNÎf}u増^OøCü]+Nš2¢„@¦kþÍ"O³"Ú¼ÛÙ&Áä ut’[4[ÖWxjSÉDUÖý›òV¼CøA§gç^4̔⠾:4GvÚÉ—I•é›*‹K ÒjÇ·¥+¢ì…GüZm³èH)šì}ʽä¹v¤Æýsˆ`ÄáW*ä(`i*àJî1EËëˆÆ˜œH„èÜqø’ÕÇd¥1þª¦Àëö! Ú»O|`-$Æìo/óÖ-fÆÚúô$9Ÿkí¾¡ A*ÝL®U°J³ ßy6õµJ~‘0>ajw>·ºŒXvÕä=‡Y”Ü,ñ& sl”wà]4ÐrwÌ E, òµ«Þª}O[¡²J°É)6ñ*L<íw}û‚ÂãëÑEZ^Ò»áuQªuWæª8M™ÙN€LÁý,¡­»—Âmé ‰Säúè$5r>$ïî)xmÕƵF¾°ƒô1…õõ­æN†{2k‘ƒ)ÿ’Ü•Àfœd¥ç&ïŠÏñ~Ý#oø9¤N®I>AŦ>u®jÏ4dÎ×Ï3Ða£rrñT¬zµàZùEeŠÙh©–TÞÖE™}Í1ÆD¨Ž¨ÃRh¯´wÕ@´µ¨ôdŒñâxvU ˆˆžMšàñÁbÄÀ +2¾*ž ”—ûEw„Iñý“ZÛ“r»¹LS^ØŒ‰pD2&,ZIõÀ–/©åý½’%ŠoÏuÓ¾AZohãÏÔŽªÝuFTX…@fšžá•kKþ2»ÆÍ1Í‘#¡’¤¢²z8Õ·[Zâ2’UzõÂ-tHŸ^-²=‰Ñ±˜Á;êòä'ÍÈĦ„h²E~Y™õåŽþ É!ŠŠ‰–ÜýÃŽ; ÌNj-tÌS7“T‚ÄA,ô>³¥Ðäö;îÞÿ¶,’O- z¾¶u,Üw:Yö>ª6EÓ!¬K‹ÒÐâñøë؇ý`›ŸFö™ÝQõîNGvÒebÍÀuÎ!ÍÆ\1W†ˆëøiÛ;èV©ª»|;åSþêÝkRý™–½$³n¿ä`> Âó‰Ûq”Oã"'1ûªw‡6j™‘›™‚Íg‘õr6õFTñØ]³|Á«$«"²|QGN¶Œ­J‘—bW[Ã)b¯V/1¦ ‚.h/&‰€BÖ2ß?¶j>°è¼IŒþ¼÷éõþɦÖÍ"2Aͱ Ô^9-- ýõÏÈ*~±œôk ñ 1DÝÇtzÀMsêWð›kÔ×i®'êqBHjý42RJéwo’40Ž®ž©-Z •©N%iS|.K`—¹!Í;tå'h«0šý\»öªûö&BÛÛeiÚù¡.?‡FÑû© k·ìÈ#dELÖ¡¿hÒc?(.ùÑcÚûᥳïµïÌ]]¢eIRŒµ`JO7’i´€»Ž^þ$îèCÙWH{lž,µ2Ô.¦\"ŠïSíI¶{ñ7A„Çìs ˹ÆA8ŸÎåd¨Ì;ŠrË©è‰>ÐR¨âñCÓï–ç/;öųVå÷]>:žz„0r‘‹ÌÐ-½fûH¿ÓÍN–°–@ÝèˆvpÈ>5öÙu@ØI+ýi .—cÞjØSÝý*ò…=ÛZÈ`Sz¶¹U«H)£•a° æiúg>Ì×­9³šE/È ^é?â Ìtqtm_Ç"Š´Jtö"h{öÖ·‡Ð¤eL¾[!š£4Ú€YãÏâkÈtƒ/õ!×gø€/ⵄ¦Oì§¢Œ\Á=!ªÀ„o&¾QîH[ýÏM½uлëœKžÖ‚£0G*¯Oìmç~ˆ†#4Fü¤­ÿ”\ ¦>ÉîgŒJ ÑýÁd޼ÂBócO°s/ŠŸâ‹ª¨ì ~–~Ú˜6\ç½åÄE0e´òžÇlXU}oÐiÏ+/ÃK£or%åqÉäÚöüŠ`PÑúóâs°¾Ú3,Îpmi9äùM”E£Q˜¬$½EàšuùÜþF>»Lq„àYÃÔ(xT^s r Ç\ÀDÓ°@‹ß>Ï­ž ²¯¯VÚâ›ÀÍùËÞ—‡ŒDž‹ob­iu»‚S† ÚY4Î7=ˬj>Çn=>êZZŠ©¾}Hh/½ÄCnt\þCU’€ˆ¡5s˜Ù0P‹Èå{:÷L{&NKي󴉌³øiå×Ò‘U±Äœ·TD7’f~É5;)FQÑát³²Dª¬(ÃÜÐä»&,go·¤ç½~b…l“¢¾â½çÜÔ³u¼ý ¸»þ„7×ð›wnÁjeðx:ª2o¼“;`$AÓTÊ­qw²<^~~›òœ™(á'uèáx€ö÷)ûqVÍ3Ñy9JéÉ›Îä¼®=®ÐL1lm”úõÉISô¦~Ý€St RçiÁ/ŽgfBoÔ¬¸‰T§ÌXt/”˜% õ¡qÀ`ûãGâË6ÎÚ iÝ­ÒÃ2mU¼šD3”X†¢E¶EÉ,¤äo’Jˆ“.È( ã´M±UÅA·o›ª?êA.×ÊG“½û«çžOìƒ_F¦ÅwnÇÉ}ļ1º°~Úi@þE|ëŠ XjI8¹%ýªU,gs‰Õ\»\ø@íä§­õ„r+¨²#7ØIÁ °ú•xä–µnÔb`OŒõ"¯ŠY–2‹Ÿô#u î½$J„†»œ,Æ3¼ò}ó‹øˆìíÍ$Gºä,BDYíø`$jd©Î'ü8\îm&)¹æPÏ!h-*¶;óîY•¬ÑL6á)=‚—³ "ÜñcÝÁ)ÅCµjNKÖM;™8sܸü2¶Þy>¢¸Ë.Ù;y­åôI&ûý¥õd’î^—Q‹ãöcÌõ£ m²4Y€tæ¼[—ˆŠ[7þþ•šrû‘?úê¥j×î#l=fÀšÞÁ»Ö)u{ÄqyZ“nUií£®É7ñÝgá‡ÝùýÀU¬/Ÿf“úØ@7;0ÜoR²¡ÃÎί›ß­¿¡Ï9‘“qíZoe°Œˆ,ÕÊŽÁpR|°6,fU厂&&•®C{OZÈTOK²¹,=hÛüÚ5-Ñv6ð>ÓR2ÏRK(«Žèæ¯NÅñbU{(Tš¡ï4=½º†ËÅšh"E(µ‚,=ð]]f"M“¼íÁägÑÅ?´wz»™,Ž’Ä…Ùhõÿ¥¹«: endstream endobj 715 0 obj << /Length1 2083 /Length2 15074 /Length3 0 /Length 16352 /Filter /FlateDecode >> stream xÚ÷PÜÛò Ü=¸ îîîîÁepgpw'¸»œ ÁÝ!xp'Hp þ8rï9÷ÿ}UïÕTÍüVïîµ{õîÞ3CA¢¬Æ bæ`”t°1°02óÄdX˜ÌÌlŒÌ̬ðêV [àìðš@g+{Þyˆ9Aï6qcл£‚ƒ=@ÖÕÀÂ`áäeáâef°23óüÇÑÁ™ nìfeP`È:Ø]à)Ä=­,,Aïûüç@mJ`ááá¢ÿ3 bt¶25¶(ƒ,vï;šÛÔL­€ Ïÿ¡ æ·y™˜ÜÝÝí\œ-ièîV K€*Ðèì4ü! hlü[#<@ÝÒÊå¯5s»±3ðn°µ2Ú»¼‡¸Ú›ï»ÔdäJŽ@û¿œåÿr ü] #ËéþŽþƒÈÊþÏ`cSS;Gc{O+{ €¹•- $)ÏòÑŒíÍþp4¶uqx7v3¶²56ywø3uc€¤ˆ Àø]áßú\L­A.Œ.V¶hdúƒæ½Ìöfbvv@{ üù‰[9MßëîÉô÷áÚØ;¸Û{ÿ™[Ù›™ÿ!ÃÌÕ‘IÃÞÊÉ(#þ·Ï» þ›à`ææbãæ@SK¦?6P÷tþ¹Èò‡ù]ƒ¯·£ƒ#Àü]Ð×Êøþïíb쀜]¾Þÿ^ø_ÏÂ0³2L€Vöðÿ°¿›æá÷ów¶òè2¿· €ùןôß;ÌÌÁÞÖó÷?˜INEQD]„îoÉÿ]uðx3°±X9˜,ÌìÜ®÷ßÿåQ6¶ú;ÅÊØ›;þ û#ß÷Bý'g·¿›€úï ¡ü/™¢Ã{ëÔÿtº3³éûËÿç~ÿ3äÿ_›ÿÁòÿÚéÿ7#IW[Û?שÿrøÿY7¶³²õüÛã½u]Aïc àð> öÿ×U ø×ì*ͬ\íþïª Èø}Dì-Þ[š…‘™ý/»•‹¤•ÐLÙ djùWÛüe×øcàl­ìÊ.V\1ïQÌÌÿgí}ÊLmÞ¯—÷ÞükÉØå}ä@äø>Tÿ›‡„½©ƒÙÓÇÊÁ 0vv6ö„?üwÄðfyS3 ÇŸÝ `b´w½‡Þ5ûÌœáÿ8hNN“覿€I쿈‹À$ùb0IÿƒØL2ÿ Ž÷¶ü½sÊÿq¿³(ÿƒXL*ÿ wµ7€IûÄ`Òù/âygùôzÏÓø¿è}ИŒm-ÿ±ð¼3™üƒÞ™Lÿ‹8þ@ïwÊ¿âßÏÉìø.èø~9سüËç]¾ù¿à{æÿÀ?ñ¿99ßÝ-þøŽxo¯‚ØL–ÿ‚ïYý ¾—Íú_ð]£Í!ë»F[c;³mñžµí½ò_ï¶]¤ÿ¢y—k÷Í{Zv®ÿªÜ;‡ý¿àû²ã?•z¯¢ãûä:üS¶wGË%Íò.é…¬ï9»XYü»ïy»Ø»üK6Ë{šÿJð}“÷Kôïã|gùWެï{zü ¾3zþ ÿgL]ß'åÏì}JþƒÿüN=€¦ðË‹¦|!Ö !¿ëDðÝö§ø¡ÎÓk³2LÀ‚%f ·Õr²Wä¾H.°HXw+Š:ýÎÝXºöÞûJÜèÉ~Ç@,yhAl¿øv÷a>Éûž€t¥¬@+U”ˆ·ÌyL™0µNÈÌbPŇª¡ÿG’;%f¹$—lh‡bWO]y¶<æ¯UP›Éˆú>Ç UÞŽÝçàݽÈ4ÅLR9þ®øD÷Zԭ᱑5´ÂÞè@Y· ý ò0šß8;L­æZ!òs^™ÛI&º·‰†ð‰Ù`å&MêïÅ+˽«}êä.K£dó–_^„hŽk˜¢éÎùEQf«¹áÄ-ÂI÷.šýVÒ}Õ;„6²á¡rž+óý3[Ï®ri2ºÓC!Ôô ‰¯U{¿|›(:cÝÌÃÀ¿QÕ¥¢íIÐaeÓûš‘Ûæ¬ÝQ‡Îk±êr§[v¨ –®ñ„| ÐFccCr³J¯Ñ@fjú9 S¢sçíÅþZxÝÕ%J¹âTm‹ãµõuÍ'³¸àñœ…i´Ñ4£>FÌËÝnûΧÖc[_~ØÎ¡Ä·Ú«ÃŽãtk -.Æ@œ[qÜ‹Ãø-’´zuw â–¨ <Þ ¬\1¿òñ&krÈ¡Œ Þ­<0æñÄëå< ïØèõEù#Ÿæl·çpá ¸à2ýÛ¥à·4¥Yv;æ‰U¶æÅ6ZÌï.ºB¬o{èÅßkÎÉêÛ2¾:rø$颔@’\LqnÆzÕæ£Ø^='-x+î{{»š“0¨“‚ÜqÚXÏbý©&Ø¢º›Å¤«-[ö‹±Q—el™‰?M¯»Nð¹©.%³uòEƒ6—ço xŒtK\µ–ÐBJ(_tÇW†ÙcóE€ñÓ¢!ü ¾-»—æÑõ¡½êõV7¡a,P¸ö+-¸—OjBŠ–c ÏMÜpF–h˜Zܦ ÛôçÏ6ùô1&‰™^ãm°Æã¡ì†¢Ð»ÇPèkOCS,çt3+hsP~i55°Ž9:d‹?eWFBtyŽ™/I}Ô%ÖW—¸ëµÎT‰òc¢{BØÛÃ:d¦£®Ûrïyi¯%:6ÜäeåH“hÞ¯š5“4𙱩— ,sðÒï>ºa’™Ê}¦][ä£óšþ£S‹î…dÀ.V™Ût4v2áÜg‰•yl›’C¥ ~_¸Oˆ86okæ¿°–{Ž›#·iµ½Û 0¼±#×GÍàÙeÎßǶ1–÷Ç[{HWŸVfñþˆ‡iŸ·+¹âm¢Þ9Ña¶sš_í)?{BÑÓ?¦Ã³;VºõxÖ´)(ˆ±²×¨žÿcÄáLÕ=sn›>œ( ØvÏtùí Ëóé´Ù7$?t°¢]ü”+àÊ ²eþèÛƒ~0“LSÆ ©¦:§â‰ÎŸíÒÈj¢dбü •¢ñ³FηÐ-oÁùX¦üªÚ 1;‡Í}æ)Š*ßÇUl³ŸÞ–Xì‚QèQ0îâ¥Â@•3äˆcc+3ƒ-áî&!XGD+6>‚†@ÑÁ6BàÓÑðÍ-"Ä iµœéÑ!<üàó賺Ì@1-Fëèø£gqÀ2™#4y†Æqi@C@‡ ë'6^œœü~©o–ßo¦š2¸uœÔ†Î ¤¿#A¡fÁë_OÂXõM­Œ·ïدßÎ '3ÚÝOKz%“—vhü`’‡°]2çôpÚÊ'„ó„op÷­’–fúJKñ¸j’b“Tû¬Sïéàñ½Ùºæ,Í£¨A­3Bϳ‰Æ[è[®æal3.Ñ4ñ¾qh¾.–×Ú„yz}zÚ’¹ íº®9®¸:Û EÇeE j’Ó—šf%j¨n=†O$1¸D¹'²ýðÒ4Î*wñM„*wEþê8&ò¾L‚S6è¿pîTÜ •^¹°8ž#ÈðyS–è 5 ±ä•…š†Ç°ÅjÔî¬ÎVSц¦ï#ö÷/Ùh—¬É´úsĹ£É¯æ|®rIZ$£6Ç&¢Z_ñŽV䓸 ýáÍTReeÈ›¿¥öëŒPÿÀÁ²Su:ĸ/’ÕÅIô3_D…à¡O­äüºƒmÈòX4çç@h?© P£‡bù, ‹p½(2?¸éiK´+ÿ¡mÔžO q®~öë®·ÒNx–ë)^“'~U¢ ¼DKÉ‚a%u±7¥NúÈñÙXšˆVÏ«ø¥•ivŽ(DÂZÊ;‡%òše"X½>ESþe–ÃSKÎÇ+`öz7íÂg¥Sl-jvª)PãµÌ¶Ò£¾(ë×q ÛÐÕôºÀfôâ–ÿêhﬨ ©õ%ëŽñ'†è0#ý¨®ºÕ+gá2!¤,ž_ÄÒd;°nÔn’y–÷ Læk†Ð&çSÆõ¼!UY „T¢aÊñkRl[8:ÈauØC^|²[$=ªÙÿeP±”ð»*,@>ú4Û|Èã€Uœ:5hÂ>¿ae1{Õj-öËôLEŒ RÿrGlðÎ#£ólѵ„nDÕK˯[äÃàò@¯ÎÔýÏÎ5P(Ç[³ä%¢_äÁ™¢âò¶ŠbÝ7–(¤ðsg§X\9™õ]ŒáoR|2¿%Q×c±çm–Q]ˆ6¼0 Ùt´·å¥Ú”lß<µËÕØE¯ o‹P,õ|ú6׃KO® „³›×…¨Ží‰uô¿¨¹ˆD€Ö^Kyá¶ñZ¾ý™ iÖ¥ÈGº—á‡=“XÞå¸Ùq—ö±WLª9 Iñ{^]ÜÀ¦@挵Gdó~~ØÈh¯Ëš— ìÓ×Ïo¯¥´œøz?®›E¶“VøÇŽ÷•cÈ!¬«z†ŽÜûA¡tVåV5Ų_æs[žç%ƒã.‡:ßr¬C} áõú@ÒbÇ0çcDLðâÛû€ö18o+àÀ.bDA-~×ñô‹O£wši]¸ío渢ê2¬1Øtº³I‚V‚åO­¯ŽäÊKTã2”Fr‰/‰’Ò±v`4›ØÅlPU MÕ}«,[rf ’± Þž£Ÿ†S í¾6~ò3Â?O«úÆ¥ *-ÓØÔfµYÁq›Ì%üv1Àþí!õƘ‹r‚£t–ù)ú̺vWS}­ã;=¹ñy0žêjÝ£‹yrcQñ=»S‡zºØð‰ƒMÈ€^‰ãp“óhz±§ë~ʰmŒ™¢¬¡ùtHçN½Õæ¾ Ñ·'U ƒ‘[âö7g3lG¡_Óó5µÙæ bS¡ë+Û´ îÃæ¯m  ƒ§FDò‰Q©—õöp—ÐPàP1ïÖâ «g”Rêm×§¿{ Ü”xqHÄâz‘¿›žn0Û¨E9~î¹·,svAíŒ0‚’Lzµ‰îh›’°œ§<ú (ÂØªÁ7JÉÙæ‰&IwЖO2VOÓW!üBñꮥ£í½×à c˜ÁÛMrhW7ÙYïæØ«mé~îdMî¬ü%çáÄÖ_²5j*#¬Î:Šÿî3£µDÁ\4!p ‘ \û-™ñœÕ`Ëùk o5¡´`ðpEybýë<_íý᥂_;­ì#†Ë&…m‘)/#ßøÜ˜å—~—VaLÃ$—&ð´Ü]Ɉî¥D‰¾Ê4Û³è K=)#“wÆDÜÅ™-äÔW#lµN™ó·ç»×bP¤•onÝÑ­·Ö¯h`±Béykã"„s-Œå.¼]úÃø|Ò¬5¡ B¶Ý ¦˜è{¯`Ê%÷7$@Ø¢ÕcKÜ&<¦áþ°”¤µ›'¦}ïM裙d‡¬©|ŒÏ“C»¿J¸¥(Ð"§:FO†Z.yçRí_úÈMÕNð9H¾$æ~cN‰ÚY%ImöÛ‡›#ãæCô/¸j|»v$Ì38®°»(Lh \z8ºÝes²5`¶åÑ+c)!0\Q¢Ÿ¨ï POìñEúv&ôtšÅºŽ[C†T™ñz<¨ W—¿hêúâÙ¦¡h³ÿþ‹¤i,¿r2°;,ħC[y>_³súÈkcæØÎÛ­3®_D›7q™iŠ &žQ?—ˆ`Ȳ™ß`ÈÊ9f'¤(+k†’,8ÏÀEü½~Ú€÷BD)º&ÌeÔ¼ž‚zíÉqJ|Uš”•*Á1 Aîܯ.Òd÷†DÀUâZå(9 –úDœŸï«uÝÀXËãæ²Ìþ« &aaóæ“H£E˜TÒ¤¢Úp”éëüó·%gtưõ]®±81ÑüíèÃ:Luçø£Ô+Ìl[§jjVýõî E ~ŽÜa2óWÂ_Be³Ž,©÷—±éWȘÑŒ”ýÔÞˆäÖß„$äð³²(¿Ò]G9둳‘ë.Å0y,:²uìèhT9C5Ñ‚å;*îEª“4¸‡†âi] $JîlmÊL„íUè®'øTbìs#Y=§Ãj±B–›}‰ÚåŽ~Èiª“UrãmÇä¦8Jðv¹åäÎ`I˜¢#$åõWõ ÈÜE–É]Œ&kÓ¨zœo$ÅC xÀqÌ0®X–“Á~—Æ=Î[f7mòëmÃ’-AÜ k=,áu‚ıô”[o|•äã×yËûúì×ïsUÙ² 7†q£ÎäÜýRJ\{.2`rÜ1\Ôø´g[EaëuÜiìçò3I\YL‘]N¯yýê@H‚ìRÕ~ö>…ôxÛ†l=ï&QX-ÿÑGæíFZÓ—>yÖMCHœŸ&`<õ\¿8ë¥ø,¥ý"±jgãHêû0ZoXK¦:ù¡ŒÂݶg4X&7;“¡O]K7Yž€'Þ8T cŠÛfŒÈªðšßä!%;¯íünNŸR¤Ôª¿¿7*—š³#eXy¤ÍíÞ¤ð.lSiz´±B@D_*6&ÙXÐç)ýƤv‡($Î=SÏœ6á3=wÜ¥DD³éô}U2—ª”^$àÑPòm*zéG©áÁ À[ê ]Zí¬Ï~˜ˆïN¶§ ½€‡aLo¥TûçžÍN%ØpkÑ•]n¡P¡ŸûâPí±` ºq7žâÉËÝ0vZ¥†d‰&ÑÆo©>î4h2F[(ÕýVÆÆ>ÆC. Œ²9ꎤl#"”žÂ§X;sALÐСà=©LwŸA3x)×·tX´\ÍçÒÓ†¿UøopXÜ\”Ú‚Õ?|]µYàH3ÓvyL•Ž«6³ÑräÚwòTå&Úö@¸aÈv‹€|–šÆô­Ói;ó2͘¿©f ±¿´Ó\ܤ®’ÏLÝÕ²ˆ®øðê<%ÀTÒMÉ"©î+¡ÙÁV°Y¦FA@©Ðê[¤#Vœ gò°ÛZK'âþQ®þ¾@P W$Á¹Gh«åÎÍþú[aÌO_="Ã*Ý­–ðIHÅÞz+ô{nñv²/BºC©<*dÈM£:$ZÞ™—ßxö¾ü#^×|Iµݧžñ<јúͨîcVXZʉ@u®Jn?ÿðx²ôÙ­¡nÛ”>nâÍÄ ƒ­–²O-¥½ù…ÔÖ±o&û´X> |zÓÙ$fôAfÛ–óºÆI~Íoî`UÃ,³É÷Ä´ÄŸ%qƒ¯ÒÊûW¿> ù{9p”¬U~5«‚@•ðOz£ìÇ ú=TVüÛ_¾Qˆ¹qaawEÍH ,ˆË ¨žYŒUÆoR‚àèjhÙ˜­©k)…Ì^°3*y{$züD»Œû­ÝŠ›_5nÁ-'…ixÆü•$pÑáÆ«T+øbbÜŠwZ«ƒî 2MîkG÷ó¢:¤ûÏ §põª.Ë Nç•ã+ù$J^-¨ŽŒÀ®Å—â&y3Á˜Èpp9˜,$á'¶½35E^î‚",* È£ÒMX ¡ š½yUŠ™§‡˜–€ôCÁ(N¤Ýa?št8¥DøÊŠamwŽI&Òñm›Œrj .9Άle—BëVÑðmo.³Â­™¥ãŒúÅÀÕþÕ|jÁÚ©G¸Ùò_#¬–‡çß|d9\{T”‹îƒhŒ.+ÒTT†›¨ŸaîÙ“8pR¾”o„a*lÖ:DÂrHÑ MªJ*”#mõ¼.LXìÆ;ö˜¯l‚ÛC¼‚uq ± ˜U·%œÊ œ ëÊÃ{¶:Á5Šö4“÷ SáFŒq‘hlÁOÅ?J|l’i;çüMÿ$£ÞKû:噵~–ôA:ÕѪíàMÓÔ2WÇ–ru³@²·­U©øˆœl$ –Dœ·, ,”‚Óg7KÁ#éed˜ÔP>íQˆ Ï ö‘7|‘ùœUŸËƒú×7vG„eîZFH7Â\—qþÛ¸¯úò*aÌç´¿›åNS–èZ„Œ +_æ>¾ŠáÖà¢@¦ ØŽ¡žÍèùáªÒ}$wëwH/ÉX±Û„}õ |8Î?4ÆXõ±ÏK¢dI-¨#ª(‚1|ð±t‹çh ý¨ "£º Ûïj‹dü U(q«&;­5ž2ñOIòÓÎŒsèÃÎ.ɨÃi+Ö¯bÒ¼`íÉÙ~†ßW4ùä:ÈÛõ>VŸªC"ohJÇ“böÆÜ^´U¬ÓÀWÎâ5ýù ¢lÇkS*5=€OýÒœÓìG{yH$ÿßÑ5Òê^ÜøÜQÝÏá‹ØZNMc.ii„…àŒã½‡‡'±ú ìżžïBôb “…§ƒèø‰©×ô¿ß¸£¹…Œ®ÄS“¿Y¦xŠ®ê.%–SeÎfS2¡¸T܈nadàÜ.c Êœ³\þ+ckѸÎBÛ†ÄáÓïÆK*¢h6C:ã3øY±ô€Ù¥Ø[Üõ6nC%ÆÜݵKlvù$}Ä¿aÌOëheuYH³-,Ú~¾×`‡‰Ãxáž«#ù]K ’ÿtéÃæF¤ÒÒúoéÑjg®ƒßàÚ{\nI¯R°0l²uÏCbaTeð2…?F¥¨ßP¬Õ}_–£8âéq4½™(öäËÀØ•†–²do°dqߌ<š9957"?•ñâHéŒ92ŽVŽºLUºÜä›cÖÜ•}ñIs"¹-¿™¸ûÇ~ÃÎäÝ{>… Ç0€NCxcááºYµl¤)[®Uµ¯ÚÇÈ[¤4_ÉØ\jq¿@~xlŽŠV)Ðm}¡ î1Ýb)puEvQíª ±…‡™å â7Ãyä9ÏÅ^§ýEÑ—W @4 qï‡Ýôù9Êá@aŸÌoï ðYÞ)ì19ÿúCá5¼ä@PþµüZJü”…ƒŸºV¸tö¼ñýáCO1þ#Í({BÍã›tKKÀè`föµJ“óüË`YîÍõ蕆b%Ý4K@»Þ!ŽÆ-¤|5…_Jú–Ûâ42}ÆOó§UÙ 2~Ö­äP^uÁ«}¨0í·ž/µ‡áÉ3#ÕUI40½ø¥×Õ=É;”0‘}Å }ºk1pNëϨ¯zCyQœj­2ä̳þT²Ùq÷ –nNeš8÷ÓÝœŒ^Š‚ÏÉÜŸ+ºsIÈÆY×NÇ¥ÊÎ ~AÐSAj³É?Þœ‹Ý'v -†WÑž£>Ã0]3ØIhú`NÐg¥ÆÛgˆüú¼Ù×ÛÑÏ~qçõÅÝ òZ·W5Qº0ϳçT¥‹ßk½D€R$õ„ƒ¬Ò¼·ÑŠ÷¾høJ‡~¸Kÿš²nà·-ü£±y¶ÎUµ@ÛáV cÀ&^Û¤+d(l«Î  Œ7SOÓ ìB·¡7…ÔnŸU² cÒÔ#dIØ&ÙŸ÷Qa*Ô‘ &Î\OJ¥(—Wµ"ÓîÏUêÊÚÀ®Ê%Œé@Ýág{2ï«¿˜yÍH“…Håõ’ƒc5/ƒÈ«‰ìmgù­BÜ]¼*LPµ.Ք߹ÒU]~J„‡*½-a(*™œy}8(r(:^ «Úh¿ˆÎ¾:×ð°RØ88öјœï%ßáw á:óX?¹-Ú!ÜÓŽ°Öpž³!vÓþ~g!º7âbp¬%Y³Ûd±I°¦=㆜ܫ]qNâ â‘·ÈáR£Ú=âË ‹RËÙ·{óþ@E1Á£ƒ=‹–ÐüÞ©™Ç£R³K—a(D„ºµEY¨&Kêk ’º¨…)dÌÞóÏêD.[ÌózFúÎÅvô"û†a‰N¤Aì6ÉÜëÒÍ/ÚüâIì*8£4Â$_®ØÄC–³­¦Üµò/ÌüOá߈ٞ*†M–µä±”Œqs?º6-/7i­ f(­§gfE*ûÚ”yNî"aŸ Œö]ÇÖØ-ÎÇ%Õ¡àãöc\N§ Aæ;ñ\=íûBƒ°žTÁ1Íè¹GÔ>ªÐ4¦ùÞ:«ÛLµžÊü¤ç‰28iϪeßWÄ ?¸Ê¬‹÷Ó³Ðûÿ,«ÞÁþ zØ€"¤T!mbÃlx]Ø íLm©F‚:íŸNsC×};¦îuv¦¨az,þ8µ~õØ>á6ư êÜÍþN—MI”ƒÐ”0_®qúqˆTzŠT$‰_þõè„ô$Ü,^¾™QoKNë[²k޼|1y€"b.ÞèÇj„[ !~°.u}£i¼`kÓYÔîñõ†œ+iטe÷Ñ78ö¤Ÿ¯ Êp*Ù•­–>#µšgòR "¾AcÅv¼µ÷ê"¿h›QÄ@†Õí¨q`  5BYB÷-ÌÃA:y1“í q9tf]`UíO°‰Åâ •·SF£•ùT´?&Í.ü* ¨W>–3WnûŒQ0ʨÏSL(ƒ™«Í°fës@ó¸í>— +“A`a"júÜŠ§»| b÷Ã0’° „ߎrºLŠâ3.G4£??[ÆšÊGãefº‰EÔ¶_®ñýÄ—q·&O3IT¤UXi[~ݯ¡‹1žƒ»åhkæ¶è»YÃ,=~ ù'kÁ9|øe†|£w£û‘¦ô’"0z4'µˆª(«ÌYnÆå‚–™§ ¥jÆPcÛö;¯9Ö¡¥5­i.ñ¢ 8⾩J]öùà>ã‚·a°2}ר“ý(jnz¶Ö9“LUp#(_CY}å¤}àsä ¯ kÇÂ$ ÚåäÞ‚é~3„CQÆðXCÇÉ|ʳ+z—ë†*~,vU·µ§yLîä¹—¶3z~¥ª §…+å'>iºÈ±º1umýE·ôd)jî^A^”ß<ôùŸ[Ï9ÜìMMÇÃHëƒ>‚¸Ð^ÖÜ û†ÇÃâ€ö-ëÚvÕà ±åºI7N¨ÃûKl3i ŸçIxY;dìá¡c¾êD¾ÅL6òe¢î­¹N’I‹iÒaƒ ΢Ç(¾ÑYaâcœV©û}Hn=6¤Ø›/Ãîß¡!@×l è‰ðuÃDuA`P™¯Ä¦Œø‘t³hÁôºj€ÛÌ ñVIª^¦®xˆ‡à䱓Q[mGÙÖ œ”±KZ®müK< »Å6bŸá4,ø _úáÛgµDÉZŽŠ/Û‰YóÙÊäpåsñôkèõÐË·›-×|šÑó¨ï€a†Ú#F˯§J+Õ6ƾžé¾®¤¶gIQ=ÄWäN¹ûmçJqžLi–5¶ˆ8? ‡ úpY*ÊTx0R–Ç.‡!]TÍ•J”¸OµO” àë˳Ù~LÍ%±Ý7b5):|˜’úàØ§»ç`_Eê)j8l¯nÅAX0øÌÍÍ £›>û<ïc¡B©ÂÅp¤´·Ï˜>Mœœ‰†#•iWWæádßÖQüª[âçÛdóf¿š³œl03¾ØJ¯0y\CÙSâ!‹ÊÊeEx#‹K“ÚXvè°Çê>*סÐÛ6“§b ¿O& ßr–ÉGã@Û!ÄŸ£8ýRºaÛä¨Ýþ-n„<##UoÓ, rKòb‰,q?¿ÇŽ>$ü¾‡Ë>tEÖÜ3²·ÃÌ}³‚7ÄKsˆE.Á{äTÞŠi¸š•ö lCW7.w·Ø2ãì2¶ä$9‹ÀMäe Ìg™{øä17s®?óq»~“­?†mcG=E¦æ0Þïv¶tJtà•ý²«üʇ¯7ß[wnV3™‹Ëd37»±2ÈŒð0-ÕùÑô»÷a?û©q#Ñ(þršòç«–R Øçþ¯ÑœËP$°;õ´ÁÑÕçûž_§ ž2tØØ&sW«Ú.5Ž%“ÉR×qêœãEØw?Fú¶2¢ÈH7´Ê`§ò%Ä{œÑsƒWqÃÛEØË´.nF šSŒ½øŸ¼¶š o_¸,Üàkì%To¯2)’çw¿õ(ˆöû§‡šF/\ôeõMÊSÎÿ”H™ 8)4T/ŽÝwõâ°!Th¾o(Ú6Ò/DÙÉÍSúÍÇxxLÐé±É±Ò˜.« ÖcžŽxlqüB5´‰ÃÜJñèQò’Þ7“Y~/Q¥0e S¾*,í0d.-N{éñy( §pŸ%“@V¸2@Ú½ÄÙ¹ÞBÊT\æÂÃ#ÛöO%´ªE-ÆyÃs¾xÎ{Èe2ÊM`£f’}¡¿Cs0DjÝ€A2. ·W¸à±ƒaHÁC°¶Ä-·Ó,Jo‡€oï"Ž_ü ùÉÅ„ØóE=-*½Øqï®^1g®ž7YCÛðÓˆ“Û~ît%ÆÌå¼ D|6¦·~»‹œŠ¾aèâiŽÃ¾<§ ²ª²al"í ôÒ¦±C>j—T®³»>•kA2<‰éõ§oúF5:™_ÑQâ¨Ý½ÃÁ·÷ªg8¯¼Å'Êæ_yz–OkW%—e¤û^sÑûàis:j`¼!e{iûfW¬’¿' ­E=»Ü®ÄÓˆx*ï0'{,M"jÏ3ÔC ¤ìáU†ô_0:ÈÄÞ%ùÉ>—ìvƘ­ŠësƒÔÃ[ÞmaeXÝEÌ¡Ñjq^üÑ3„Ù>ý“÷."Bó¡ Ôÿ«¬d¸í[F¯p“&‰Ñà'–Pç5êž±ô(n?pÂm;Ù©·g¡3óª40çëtÝ3¾ÂmZXV°ù-qZÂQ@©Ö¨²_ù‘Qî” Š ^êc©r\)’V[(œÏŸ•æFƒ1 ˜#î#ÈVFJ|=–¯ ïÁ¿‹D ¨Õ”Ž©•‡raöh©=îÁ”ï=O!Ò n õd㎱k«´­½”·îgÓÄ ú.gQ#ÎÀ)q ™.D%í“sÇâÄ]–úx{"ΈÊÉ•²Z ~ì4IÁåV3ú2Ï‹jø£$k\?ñÇñµl-ã§f¬ÂþÀ´1ÉE 5QÝ0c7ëüJ 4p]ŒXnSÆ$:ÝÔ O%¤c¹‚C04ø™o+yô,Œrùg2¾47–‹ ãkè§Ê¹‚ÇÀÇ(z9Oc̦0‚ W#ncÑ ™7Úðy·êÎUÒëO@Ç!¬ÍÚ5¶N¾ß¨nÍf/ô ‹û*YúÑ…§ÐåSsº{©ÑÒÇH°|L,.ÝyCûÆå2[OMÒ.›™\3.“‚Ï"íÚ ¶ë¤nÃU ãçÚ†5ƒð·h«¾m_”p¬;ÕžyÇVyN5šè桶I±}ì0žŒlp:fphJ$_QÂ&ªù7YNTËÌmØOôÆYg[bYѪ"ê`ðIˆ_gLs ;"ß.T’GÔ]Z•\nVÃî–ˆðVí§Â‘æÏ¿§5í?C±­Þ7I/ë®6]ÜñÕ»Ãm=Æ×9)HX+ÕãÚÔÕÐr:Ù’k)’!_ƈpXä`¶-ž‰V`&6@¾!ñ·çJTYßò,¹3s¡†us› ¾JÏßÚšo® ÀÔuâáR_˜µ•mºB8¬Àû³ ‹½Ã ó’@s"}â5–:Ë=dnÇšÕH¼÷™ /(Û|:jÚDð€«ÚHÂèé7i›uZ¨ÿÚ]Ý 6ʼyq…,‹Dï ÖÀPñŽPù:\“üj”þä€êu¬•“1Þ³\9)¨– V´´\¦ýÉÃt‹¶³Yµâ ÂV$IJÑ9W³Pû|•Hò’\#[Ÿä=Ë ‚z4ëâ?9ëOcû×^bîp~wüFVrþ%O¥ Ÿc¸S´¸õ#ŽYl™Ö@Ó·VB–àØ>ñ:KøÅÂÚü¹2-‡Ï1¥4Æ–ó6JìxúÀÆdP,É^FL±~9üK79¤öUQÚ«³ †âŠ~¨­þBX·­'s»¯*¡ZÓ4çV‹>êuWéK»ËOk¤^CXæ÷±fv+¯ËEð¦ùâ%z™jÏ +ø7¥G¨£rïy’è´°ÛÀi¾¿rªŒÝèAÒNNtK“J¸½ÕÆ÷ò±¾o Q·xÓpútY°w¦Ì•›¢ HžÌèVPœw§˜(O{àÐSœíê ˜ˆŠ‹ks¿k¦uó ´NèLtç­Ø;>xþxtÅ.µ·¹ÉDýݶË[Úá²Áq‰3Xõöì3é'(‘5¹-(fÐF•ìªÿ]ËÈb’š8 Îâ0$,§M\ë’!LçY±áÍ8*…\Á_--챇•uÒ“êɨI-üktŽ€ÃyèC "ÃÙõ>ÙÖV^N=*îuÆà#PÁ.Üm öyÍ}E8ü)ÔÎQm ŠÂT3Þ=Lç⇿/a®Â®µíp»^µTŽ^;Ú]1<¨5±K§µ|~t)é£`†kSÏŠ‚ p÷0cZÇõÌdlä’›8ˆõ©/† ãW1òÊ µ)Ç£´ºÓ¯ô_ðCdõÜŠU˜ÛIÅôúLuvCÎQÆ4Ï ÐCˆ…Ìy’y½ºúÊLríòЇ²'_™cèJ×k†¦2OËŠ(ûJÁ+ ³sŸªÉ¡e™L¶útæAAÑìM9ð`=Ãü«qhŒw‡ë¨•u)%"ö­AQ w»Ü°w^SW¬ÌZí$½n£¹’ùj{@[s·`WÈ™sƒ#R•ÌÍW3ÝøxÎý•%T,*­`4×û7‚Ôû|ÿ-X4Òê4„Ï6ç(Ú h-Öµ÷á½ÙÝšß‚ ôåz¥á‚L0&íÈð}Kö-xÛàŒB«>„œùuTólV…™&t݆®teêôÂîĘ“~@éA?,ç|ý|unÎJñ¯7»Ÿçô•<­ß#µßa'å¢!Ô3\NŒ¸-`û™LèÐ/g3‚mb{^Ù w¡‹r¯fIvÍF[&‘Ĩ͹†´M=šhgÞÖi:#‰ËhwDìrP攳U÷ûœy\EHf¾ÚÄ<\¦fOïXéåd[h×—9ãôJY³a˯2¾&›ªZ¨ œqÇëÕbIÆL`§+O¶ãS0ô7gÆ«ù›1Jï¦9]ôœ…0üePy¾5ŽÕ?¤‹X[Þr|{O¬ûã2$ÅÃd蜑RI+O©šœQúMÉ2¬â+4}“½NvúPlzãU¤Ø>Á¢„Ÿ?lï·¥9“¡ÖÅh ¦pJ¬cfðKŽ4á¥0ØÖá˜ñPM3fp)¦ZÈ©çúO&÷0ÒÊ€³ è Jä%Õì€mb÷µVÖ“æ!¾£Q’6÷h' Í`mÂâ 0ò%ò&ØÄkk‡IN”„ÖÔÓh5Œß|Ä5ÿ‘CGö*–…ÿG&X¨z§OÓ¦˜[^DAc{Ö"„þ¡VPŠ–DUGÅ ÙN¹ZAU M•"Iáú¶§üg Œöf<¢U™RÀÏW|0Â2V 7aS‚Vb;[Á‡ 3^O+:Ç»vëꀊץ7 {V4'ñ(,{¹\µóªPr9ÿŠ’<ÙÝFWBTº[™Qîö’{Ö¡¤4ˆÉmaîK˜‰qî‡ve˜¡3hˆ+ÆO½?S¹µmµ‡ZC&É·aUÉÿ¼ÀŸ)áÍ^ßL%Ôh”;úävØØ:¶^ÅJ2£ðmF¶U x¨–:2øñ$ò²{]Û^v†U°|½ z·äD óš3‡ÒÎé²§- FöÒER±¦ÜGNJ»”µr_%ì‰E)Ô€,¦©QH£2„+™ºX=4êØ‚2‚š¯Û´ýÝ]=,Ì'ã6äÛNEÉsVü܈ß%-C^‹£ÀpÎp^½ý«Š U™/Lëº`g©_КCuD¯^ õw1ÍõØãÍì?Vàä‡ß¹ž&ô*Uä*änQ”…mÍL¾•¼$KÁ`Ù@§Í‰–ïÄ¿K†Ðܺlsc†kÞ8æéï£u —n>6?Kô—Õyr<(iÀè²w=Ø ]Ýõfƒ X«§)ä›·Î61‹ÄT ;YÂF(àxþ-ü»/ôg´FG)~ã€0sÀwzƒ…ÉZÔôm¸¸\Ý6f'rÓ2ŽÇ6Jfº—Cùt%Ú§´–ŽW÷ÊæßVÚ61k~ ~%¥lg2Aûâ³É §‘Ð PÕ<“£V·cÐE|øw[QDaÃ|ïÉÔ˜æp¦‚ó¦v hRc~ÉMlÍ•y<áÂ7턼¡ˆH•Å¡áÌß)Í#2™‚\Š¥ÄHâ¦4TÅb&(Ø)[«ã•ˆŸˆn)@òÍ >²ð]«=¡…:,ÈU³&;k'´ŽL{æ§üŽ ÏK®Äš*˜ÒQŒØÚ’gá,jôy´>jÃöŽêÞ ¥«¾-O ±bÃø­í7Å)µ›Z‡ºàsï~½4×ÞØ¡,¶ã¢ˆKÙa¯[÷é˨“â¡8Š&Èvh-#bÅ}ÐÚYñJ;57,¿¢55î2"”.ð~D>.¨j÷r Œù}Ê“‰K ¬ªO'û˜õ™ÑÓÄÜHöd¥—S‘ë,“Óbr08Η²‘–mT­ús® ûQá牾™1דּ1^NûÈ@\¿Ýt'=cúl˨]͘DóS»®ÐYÙF@z—°©Wñ±-†è®ƒ½&ñˆ(—øÑš)ÐÔm´:EwET†ÉЫ)°þŠä¯ö‘ÂÄïŠÿ!]å,]_!¤yÁ¯q§yRn}¥°dÀ1:Î/mÜžNÁ)é¹Ò @lÇ ò+ðËÔÓ<Æ(ý>ôÓ!—Q£Iß2!€ä !(ò¬–i%5tà…Z3'âHêqAs;Žò 7ù‚däÈ›vAhò£m¢ZY–E+`Ô3áaÿ‹ÎôöqãÝ£÷¸ òâ]Z`,–`0ÆÌ"Ÿ¨ ,c/Þ›ï5}Þ•ðE©ßÕõ¹(Ía£°>Ä•a"R&A¤Ô×\y¥aDXzDã°ÝòÃÍu¾ucêf“×\ªZ ¦SÃôÏuÊ%ÚÐC‚+ª[\gábѾ~玖ÜO€ÒCß.<"1Tæ4rh¾¸EF¿5ncÝ·>uØÃ0½õš5ûî~ešq9çã~zî)Žþ…áªOd€ØþkpÕÖyaçâ‹¥Ió|Ó=CS²5‘ð*wçžðuÂf¬½é« (nŽ ‡K7©zÔÌ› É|NF''PrñÐes!¦¾Mrûw)ªv˜E“ùUÝZBìeŒü¹©¸ûÇo¨N/#3Iâ JÕE =|Ù´k¤¡â€ÉŒG ~ÈeŽ…nº„3ß{Q5k ™96èË-7ö ñÌm…pòS?òü¼^tä©P~…³ÙÄȇ¦æ®e»-@ÐÕZ-gé©8½Ñ€´@!Í7-;ê+¬_ß+>ëHûy€ lš t‘Ävûê+ãØKdemx×±EbáÁ¨ë’+Á_#.¹òÀ0꽘&&ºÀÕ¥a!!æ'"ÞAd˜öØ¢ƒªˆ©+u±ÏdbÛúôb^tªo¹ÎÊ ì³W­ê•~Ø¢&$ÇdYÖçµ0O¥ˆÍþä ÿa Bœöºï|¨Bé=ðúÆÆèW±àp3.®ðt0!MýˆÀ¿*š'¹ý­ »Rµqª¿>í\ÛÏgÙHªY‘r‡D ï«Äü+º q^®¢Xh‰ór«­-Šæ¶ ö/n÷‡´A9Îe}æ&ðSŒ)Àˆ³ ôi tÏ2Q—•‡x!ÒȘüY©Dç4¤vÓÛGNwbš³ê3N˜u Ê6aۉ܂ü¶ZÎñƒc–RKVÚÉJÒy›áðPj) QNéei1Ïn¼Quñ <î=÷Ç’µågUŸZ åũёˆCãY”’R8Ý…°4wAL?jǶS;cH&cjú]dÝUf¶Î’Ä‚â‹)ƒxÜPX$½Lg7ºa3½2ÙÇežA¼¹ÌvNB§³€Ø 䎱Ôg2@J°N½‰é” úð®Õ‰Ü È>]w°yx܉%üp®Š#ºNª\—’…ùÛÊÕ„C¯„zç˜+Cõy‡ Ò¿Û¾Â‰ÂÍ (Ú!ŧª5v‘ÇMaZC¬FaŒëµ@.-ŒÙû4³5E Ó&<ý­ÐÎdÐ ñõî!¶‰x÷ÔrÔÇ® d¼`‚hR.ÄÕo.Ë/èú$ŠJ ,9#²ü¬2Ë»Û':Å.Þ¤×4k› ¿3ü›Cj2C¸geJ¦âI {§Ã7.I9r?Ñ(/ (œ"­¬Äò¬Ž—'¥{çu3ÊHòþæäÕØÿt eX*Ö]½Oj­zü¡û²g“㥉uÍp±ÿþ äyv…‘Á¹·~>z²œÖ=$í+©î«öË‹…R€Ô®ËšRÛ¢ÑþãÜõ¶Œóûg—:jî¶ûò-ÚfF¨Xÿ$NGŒ³6ÞÙ˜»4IL¥råƒ5•oP_äÍ#Õ½Ô‰ti¥‡‚oÏ EZÿücÉÄ endstream endobj 717 0 obj << /Length1 1450 /Length2 6957 /Length3 0 /Length 7939 /Filter /FlateDecode >> stream xÚt4ÜÝÖ¾–è$z7¢G½G!ˆNB0f£Ì(£G'zï]ÔèQ¢—è"J‚½ !zo’¼÷¾÷½ÿÿZß·f­ßœ½÷³÷Ùûœç9ì,Úz| P¤% „D øùR%MM51(Ì °³ëÃQö°¿Üì†0g8!õ%g…ö)ƒQhœ&Pwµ ŤÅ¥€@€(ù/ ÒY   vƒCšüu$æBÀ®„tôt†[Û ÐÛük à‚p%%Åy§`ÎpУl`è!`{€‡¡<ÿQ‚KÆ…r”pwwç;¸ð#­póÜá(€.Ìæìƒ~ Ð;ÀþLÆOÀз»üñë!­Pî`gí°‡C`t†+ s 7è©i;ÂÀ¼€¿Î È/øïreÿ*GüNC HG0ÂްXÁía€Ç ~”ŠF@Áö.Ht>Ø ·[¢¿;@ :0zÀ¿Æs8ÃQ.ü.pû_# ü*ƒ>eT éàC \~õ§ w†AÐÇî)ðçfíHw„÷_†µú5ÔÕQÀwr…©)ÿA»þöYÃPQ „¸°„ æ€y@l~•×÷t„ýþv£'ðñvD:¬ÐCÀ|àV0ô· Ø @9»Â|¼ÿ3ðO‹@P…CPK˜5Aðwu´fõÇF_¾3Ü`DsOüõû÷êš^P$ÂÞóoøïûÐTÑSP6äù3ñ¿cŠŠH€7zO>!Q @PHD Ž^øü³Š6þWÀ¿SÕVH€ ðO·ècúWÇn€ë/qpþYL ‰f- Àõ7ÉM¢@ú#ø¦úï”ÿÃUùßHþß \í퇹~ÇÿŸ0ØnïùMZWZšH´ ÿ 5‚ý­& wuøï¨ Œ‚ÂMf>A~ È?Ü÷€Aµá(ˆÍÊüñü’š=ÓFºÀ½-è, ð¿bh}AìÐï‡ š—B`´ØP¿¯ñ— CËéŸ}¨ Hè/Ý ‰ŠÀÎÎ`OôÕ£-Q4Ð…Â<~3 À@¢Ð)ôÌ>+¤3Á¯kŠà¿|™bÛÿ0Åvÿ6%ÑAû?ý"ˆvþ1ÿÑÄÕÙÝùo>¡»þ—ýûu€Á<`‚Ùi$D:ض6¸íüµ½;ßú¨Ì­ƒ´sc!¾ÑB3Ÿä*·Äm7ƒÌÛR•\‰JOó%‹. Á R~Róé+®±mV¸M"Á. i{~Æf‘ Ò?õBX´;H"5÷ã½Pëo¨ÌH׿£ùSèÐõÙì­¥¡5{·Z¹²XŸÛT¼:òó}¯ i›VyÊÇo”›&ÙKvß$Þ¹ZÆ’7 ä›!¯ÞÃq2¬=?¦ü±uÙÏÄÔ~j,'z…so'üºM¯_àºÓ#aÓÝY'ó§$¾D?ðs;‡¶szá¬Ã“b/A‘±‰ñ¬–GÌšwLàáû¼ –;V퀵7Wy£q ¦‚‡ìõ1\‘¹á?æ×Í"\˜éªÜœkx£¶·ÈŸ}¤E€;J²,ƒÉrd4L’È;úéU¤¶«îÔ=ýL‹ö¡—ÁzÝ8Û?î Êþ^ôf¨Òpˆ"Ñ1ÄË ùˆ} kXÉýUº%Ž+ÍYs'ï6õ2ruЬý¨8„dÉÔ°^耋ÝSƒþ•–šxáÚƒ£iê Ôæ‰íFÚ‹ŸªãDÜWsèìE‰z3(Ev·Å^–Y[iÿ¤nk:ù¡“©œ !Õu NpÎ]§Ïû¡ÄÉpïªÈªïáÌ`ýkÌ|™êPJkB¸Ä›ØùÈ3úŸ_ùõã‹×yµ]px·éXHúñãÚƒë*KbQGyši“ŒUGN>ÅÚçìPîÕÛ;àlI“‚¾‘´*.³ì÷FN˜<íoßš°5¥®xx¶¬Q}wÉØíoÅ>˜ŠÃZÅÊ}@F]¦³gSE†=(+¹5Áœ®pM÷µ™ÞÕ¯"´áJ6cp³KûÒîÑÑp¡®Ä#,e˜˜©u1Âk´Œ(v5%ªŽÄlH¦Ëd3¿8þJW4nTs¤ù4Àæ{­ª|~’†¯€ªÐ»,?h‹µh݉–+Â!8@ÎBKlq•º«%(Ûl~˜}Ç,+4·ß®Eò[íøŸ âf6!ùAw»Ÿ!8ÐZåC²\MX•'äGàü­€}ÿ…½â‰0hÞdÚÇ%¹qÎ±Ô ‚«®7‹1Œ}£sgùƒã×âìô—6*Á¶Ô"ýK¬­´÷ ®9¡ïZ‡¬é3NëBrjó÷™mX —ZL3…Mœ´HdÄ€,?³ß •?ðµb6 Ä:ä3™ÉìÔÙ‹r·[rLu‘l|9¥¤Ò; émY?sÔë)&íb«r.&±Æ¹ëÍšÅd•gÙ´ñ™öc‰¯q”²Z2{…”£ÃR·³¦ÀŒÚ’íè6 òmL[dÒP©ç¥Æ‘øڇ78qÆÛ‡7…Ú'Û–8®Yª¿½¡åî½6•ðùNÔµl—°É}ZfCv±R~U²¾Ô£}œ¦zl£óœ–îG<ŽnÍKqWŠýM×(¢ªå>§=>(z½£K}‡oëÚGbçjûá<Ç3½Ó±T%/ÃÉ.éuà ù>®`É0ÊZ‰_ŸŠ=  \¦7Fó¦œ0s¥ ÞP½ôå~o všÍ\»ç0o\›îwòµ7kËE %ÖÐÉŠ:ýÏÒS­ ÝÞÏÊøÓÕŽOF×Jêî­VOYöIYQ—ßÕìê§¾?âzjÊøwiú| IÞ§Ë9Äsm¤”Ä Å±Êq…QÊ(NµŒŽžµ«)ÞŠ³‰Á¡ ¥}ºÎ¤uÊÂŒ•WÁÞ[|“±ÛŒ˜Ï•®»XË&ÈÊ xš†DM^2â`4'õðM™b˜­Oê®? 2™Î0z¿yû(WýJðj$žÑ‘Ú0`ƒÙR³0ƒ§táu±YK=GG7ùñkQ#³¿€\ô„ïJ¤!ÊË5§vmScXõ€÷–LÜO¸Á«W“x3ìi¢zþ‡C>2Ý¡” ý¯B“.˜s¸{‰9Û;Œjê—¾Âj‹¨®gÒ d=ÝZ'Õb>ÒZѨâ³jîÁ|“K[ŸTn+NtQÚ}x2TŸd—+g羓ì<ÙÛ‹;Eñc°Ê¶øžõÒ#Rœ‚]®f^¶ìlŠ×â!Áf¼ÇìkÄnw®þh“FÕÃL˜t.Ýx{½B_tÉÆ¡ˆmh®ž©wQÎÇÙS0g³t°”ºø$1XÜ)âklünܺ¦õeeʱÀ\øÄ¬Œ‚[Vñé`{²Z òH ‹‡šwÇCy8ÇüÁo½•4/H×=–¿¾åþ4æÍZx>©“Ùçï4yQÑÙ±ë–æÕÄ2žÁŸ3:ÒAÍvïâ&¯Gakœ¼8Óh˜ç6 d-iç’;+ Uœâ hQí¿óöB2a‚•ÆaÙSDg”Ÿá_d@Ïžfàè·Qª”Idy­ê(³!€ÇM‚óLàoP&P[ÀŽby·FÊC=”œi™) ›øÚ;òn¢ác*–„}¸õs®Ð%xÓë§·&óNÆs"8ÓÕ±Œ/"¹ K-t¾Ü.Ci;öF\Í'ÉÛÛ ¹Îô 0”~ê·žc0}.͉æm0ÏÖЇ]f<ÃÔ¶©Äá÷nuJŸ¼kE¿ÍÛeRñ­Rƒ-ƳJÏËíŠþü{ôÍKÞ?ÃÕ.53¦^‰-§ªÊ"ˆÃ¨ž0é¬ÌŸ]`FÕÕ33šÄ=ÞŤ((0²ñG©~iŠ÷ìfÏ ”cÕ‡kƒð´ãî’ÁŸö@Çšõº?žx ²+ªŽ“PèZŒÝåR›V9Ò©8·æÇEô´*É[³”ú}rù©®BáÒXÉ´ RÍAŽŽóHLæç’¾x±[–ü®Vä5nUE yâ+:)ä|Nžà!ypçÑÝQ¯+!¬X“AÚtÙö²Š=½Ò­%)CÔ”É*Ó.õª³^ÜçÇ×Ál~hY¹å]y‹a_îz‹Hé ¿ƒùgÏÏ=u”WR = ú¯ãày”Aä ÉÂRázil‹Äü/~PjÎJ¾90×`eÄ û"ús¢Î¢Èv±±¾ÝKÑÇÚÌHØzwTÕ³èÌ\ºliþJ`EOžt)Ø_Óyì~ ·hPyÐLJ¯)t á÷÷ú MyüV»^6±†{‹ÒÞRÙj÷ß8"ðÒÛo†BÂøç¹ªÅ8qëÃÆÚ~:'6ëÐ=5+V…ؽ±¦ýæ["U}λRôä,ˆˆî;ùFerơŇK¡.‹”ŒÕE 6Ìó6£æMMv‡ØM<5YDáè§ï#ázÔ˜9ß–½æ«¢ÂwÔ]:•ŒY]nëjóoô¿—ðÑyËÿÁè^æ5iŠ•A&oÁ*Ó(ßÛƒƒün=9Í8òçÉZô²Ø›þlÙ§ð J?›©]šˆúÃ|YJ=¾8q/󇶴ŽO¬XJôäûE6Æc=E9›ŽBge&ôÍ“ív¾¡É›5OîŽÞ®$lû6;¡ Qs6üyÂ4–3x;Ÿ5ÁCîèõ·§Ñ*y‹¡ž ¤ç»žo0£Œ#›¡J‹ð™æ«\U…x,}Ì¾àƒ«øMŸ÷ÓæJÍHû°šhøÌ§/‡”ÂæÁÁzù»ˆ2Ù³c½†.) Ð —÷(ÕÙþ¬µöŽcÞhôÛîþ«øI<ƒ,—èº+Œ®¯ã F‚ðˆþq²‹jÌ;ÑAõÉ$UEµ“ý»„ðG‘"×S„#Õi9 Éß²`7bAƒý”0Y×ÀJ/u®HËŽPœ¤üñ¼39 û¦¾ñvïÔ‡ø-µ'A¾rÁì²”¯Rgmagã€ócš_$ÿ– ÕȨørMØôý32Oï­OFw%3¾Óyî&Ÿçi¦cÈHœþd‡³}&þY´JóôCGªÖñEƒ×&»l„£X·!^âõ>é1Æs·¢~±”2ÙÉ:¬‡GüÃÎ-/Šìí]Œ—M7ZÃY·ù^\%16+ª7œ‘—{wˆoFJ".ê륩۠¹s?žÂóu5Ȥ(ó ¯„vå×x=}ægüH¯}äJÒkäF¥Ñf £¶Äç.%ýŽEY+¼Zæ02©î¬,2XèÞÊ»×I—éáÀõ{Oì%ƒ¥D¿Ïºõ•š½3œÈVëeȘM“sL¼˜Øb‰jù0£9. “Xô§@œA—…V'‰:Õ7å˜i×?&nµõ ti´mJ®¤ÛEÚïÚ0¬êe=ÚŸéKÎ ¼¸@4‚z@1{+"Ž»ZÛw©žq3˜Å´é,(„¼z^šw8—ùñ²iÀD¨Ê»ojÞÚU:ø™–ºÎ¶DŒ·÷¤l½Ôd«eQb™`¦W.™‡÷¼Tñ3þ WªžzN¾‰ó~Ñ[ñwl9ô­iò‹×5mšB Da«å:SºÙ㬺ùWjÙ¼ç7 ãÎÜ4á»#‚n±ÃD«˜Úk{O醨ž¥(5¹Áp*Íp—hÔ?䘌G\¸D#YÍ˱`†{>™6xö½ø­K›Ža¢OŒ  ~žæS2γê¶'ÏãÛÉtN *ÄÂã¬çºŽ»Î13SzoYêb7¾T½ñI†šf(Ð ~˜²̃¿'fZNr x¤p“WòÚ»ÄÚŠÉ•ô´©7ú¢Ø¤aëé_x}ýALWî´mœñ©^ëörxúÈ´ùuR®·ÉÑÌPÅùIô,†éKºa©šO ܺÓb “ëgG°@ªkmï‰ 0yj%Màö'¨T_ÜÜvIªJ^²œ‰z¤»–gcÞbÒ¯í–n©¨Å&­íìÈŽ†mÇMeçV®§µÀØÒ6;6$ùIUéù‹Núâ< ˜íIÇ\ “óh ÆÖMHÅÂð OèãûúoŠ˜±,'òC U3û­¿Ï †ŸqºXDó†m+<ÕP¾ÕùŒ|OÄD¬ºè«EFŸî‘ŸöóV nW‹ÌÅD8p±uýhE¯ålC¢zWßoÇæo^¥¸ t×;^Ô.W²ã â¶ÌuN>Ž!ÕO1™â»ÑÄ$¨‰²»õd.ß¡å98 ‚dÇ]¤‰þŒçÖ+A>–ó0Bv·Þ-Ÿµ]=]Ó)5ódâÁÀˆø™ê³ö•ór~‡­«!«iØò†j7ée« µçÌÕ7‹›Ò2ªêÌþÛ3õz@öNeà;_Xv­vå!'#^¯<˜:›é?o½ÖØM\Ø] ‚77ãQ îÑ=ƒâ’yàøJp=ç‹/fÇ~•:?â–K¬Â«NÍ/-#‰v·ˆ±-5š†¿n É ¹âËÚ6cV;÷YŽ•Z­/ŠÊÕÿΚ‘fû¼6nùú]£Ik`í4­fQXdà:róUú­— ªì&—AÐr½ÚòŠl¯vˆLž~½KKë´âq©yQÖt:`£F½—&‚æ¾nµ‰•óÇkåôçœf³Áí'“jkü߈ñ(Ÿv bwšÛ;z‘[µWô/™G”1Ùí`Á/ä­®¹‡5ñ•iÙõ>ތϷǀérD\ Ô ½*FáIz¤YÇO$Ó²éç~)ñŠ-˜ØúÜ%÷r‹FB‹u˜ ñ¤%øLj‡5úަEFÙïÌf%;ÅbÔm]í§×¨°04É÷t$Bí_«(Ÿ±K W6)ˆ(‘P¬Í.¤²æ7eßþ~2öø’KL$ÍÏ ÃžÁ4’ik¬{›+‹)¢]Rœ¤Ïâï«n®ãWÍûø‚[YŠÉÞ<ä£ _!Ä8<ï ©XËz*K0êž0MUYº 8³=×|ôt÷^룼Øw²* ¤ß” ;?îßÃÊï~úä–'2¿<úÞʽWÆ8¤ÝîéÌêŒóÕYq¸3#r·èù’}£ƒqµ>,—ÃÇœ5zU9|sê¢õ\aAζ‚Rž––H›`‹4žª4ÎPÎh½‚Y!v‘W딵o?>d¥‰+p.~"å&^Æb–E­ 'óýðÞÄõÒCþâ÷ŸJ•õ™@U£uiȺÈxŸ®&}—éAÌñÊDÜPâŠëù@?ˆ÷ —¥Lã#QeÍœéc뇷ÑÕà"ÌTbògÆ¢_41hšSõ¦D»Uå3àS#ù¸ ‚Â"ÞLl\ýýçšò¿\лP+uâ(›4¹{ÙfEça&}o‡‘¨ñ?ÆÀâÆiÅ9¥p%¹ÊYƒç·–Ï/ËfJŒµ>{·x[ù)0wâL¬ÎûÉù[Ê#¾wl²>äÛUîµú©,BëÏ—{O»‚"¯oZ²?_ÍbɈîy´QÊ-¿10Á6û„G½õ.½êœ;1¿ç5òKõ}ו±¾ÓÉqÛæå7éúß*¾tdõ—Ü%òW³mß)æÒ‰&æNÓ¯÷…Î@]¹k6tþRM/Gacñí9B­|퉖xûÛ·ná"t/:ÚÙåÚíØ”áÂ[TÙœ_‹F¯åÐóŒ¥P¿ â#¡ª¿Œ\Ïù ¬{M£ŸZ—3IZP(~OŸ6˜‰ÏdObuF<ñÚ£ËÆ_ôÁ¸VR]õ¾óËÏêtl‹òTi¬ªªÇC FÝáøk›'Ž~Äž”´‡lɱYOm5…µq„'¸¨~(ˆ”6 ZèÜìï´–œy›_96¥qV,¶|ñ˜åNH&Ú]8 ésþÂCW¬¸¼¢p7€nU.ÿñùÄ1*8ãná[Î2Îauó£»äúêý¢aÑ9²ló=àåÎàú‰5Õ2Š‚`þeÑ8uH–Ž»tz]'M~^«î¥ÎOè§ÝvCý*¤¸x~Г÷{ñór T–æÜËÑ]êÔ43äaá#JÉ`+’Í{íÑ“mQ&±÷ ƒ.ù>;øJª£jEÌ—3Io)MµHwy{9{ƒM›Ë‹ÎÌh«¨%¿†–E?›©|m]º1˜^b6Úïx—Ômê<±žŠÄ±üά!§ÂáKþû”‰œË@åÄÉiÍÌï”—¾áFÏ®]îÎÊıǂ™FÖhtpäÄ:k²H¾”J¼lÿ²SÅyß„…µj)¼íÄjݸŸ¥Úÿ®ÒyƒÊàÚ@ò{’«W´­¿ñØ­êõɱrj4:RŠÓÉÄ™¶cUjk*ów{¼—·ú÷ÅŽÄ}­Nú-ÕS‰‰›û’Œ0¬.M~ÌB•–d¥Ž×£êq¸<ªP–‚;†ŸñkøÕº¤Š^ eÖp¿ol#E3Ã#F4ã ÿÁj­ endstream endobj 719 0 obj << /Length1 1747 /Length2 10708 /Length3 0 /Length 11832 /Filter /FlateDecode >> stream xÚ´Pœ[Ó-ŒIp÷ÁÝÝÝÝ=èà 2¸»»ww‚w®×Á-ÀåÈ÷žó~ÿ_uoQ5<«{uïÕ»»7%©Š:£¨¹ƒ)PÊäÂÈÊÄÂWT”å°°°3±°°!RRjX»Øÿ6#RjÁÖ ¾Ä&.o6 —7ž¢ çj`e°rñ±ró±°ØXXxÿ‡èàÌ0q³6(2ä@@0"¥¸ƒ£§³µ¥•ËÛ1ÿó  1£°òòr3üµ:[›™€Š&.V@û·ÍLìêfÖ@ÏÿJA#`åââÈÇÌìîîÎdbfrp¶¢e¸[»XÔ€` ³ÐðGÁ%{à_•1!R4¬¬ÁÙÕ,\ÜMœ€7ƒµ~‹p™o‡ÔeÊŽ@Ð_d…¿ €¿ïÀÊÄúŸtGÿ‘Èôg°‰™™ƒ½£ ÈÓd °°¶”¥˜\<\& ó?ˆ&v`‡·x7k;Ó7ŸÊMR¢ª“·ÿ.lælíèf[ÛýQ"óiÞnYd.î`o¹€ÿÐ'aí 4{»vOæ¿:k rpyÿ ,¬AæaîêȬ ²vrÊJüMy3!þc³º8Yx¸ÙyØ@'ÐÃÌŠùôžŽÀ?¬˜ß*ðõvtpX¼ôµ¶¾ýCô›¸.ή@_ï;þ!²²Ì­Í\¦@Kkâ?ÙßÌ@‹¿ð[ó­=ú,o³Ç `ùãï?_†oãeî²óü‡þg™å$ÔµUTèÿªø?>11€7#€‘“ÀÊÊÊà~ûðýï4*&ÖË`ù'Vdáxãÿ)÷ížþG²Ûß@ó÷vÐþ;™’ÃÛØ4ÿL¹ '‹ÙÛëÿó¬ÿòÿ7âdù¿Mùÿ$åjg÷§›æOÿÿÇmbomçù7ámj]]Þ6@Ñám@ÿ›ª ükkæÖ®öÿÛ+ëbò¶ ¢ Ë·ifdå`báøËn –²öš«X»˜Yý53Ù5ÿØ5;kPÅlýÇãòÅÂò¿|o ffûö€€ßó/— ømÛ\þlãø¶Oÿ­Cdæ`þÇâ±qrLœM<ßZÿ†8Þ¬ojôøs´ÌL —·À[; gÄ?ÚÌÅ`ûÃô'zÛfõÿ ^n³ÉÐÛ,3›Ø9Zýcáå0›þqò˜ßÞûE¼ÕÇlþ|Kniòß³Õ¿ '€Ùú_ðM›Í¿à›ÛsÚýõ`ü‹ò¦Áþ?í ¹þ«€79 Á7·ã¿à›çÁ7-àR½ ¶¶ü—v®·ëÛ™€ÿ%ŸõMҿݽçñ/øvœ×Ÿð¿hæêìüÖá?÷î­»ÿƒÿ|F@ âê’ƒˆMcHç}½(;ãÞWØóŒ{6ƯÅá]†$猶’Ôs²×ä+¥VY¥>Úô(‰9Ýç~_¾òÞm"ùìÉqËH"uhIbš°ôz ¹ì}GH¶„ÒQ &FÌWæ<¡BÚ‹ ln9¤N‰âCÝ8°’ìN…Y.Å-Ú©ÔÝ[_ž­€MÈ«õs[Í¥ÝtTcó—:oÛ>>x'Æ 2])“L^ û1ɽusd|tm¨/:PÎ-hïE˜ š$ÿ(¡\Öz!òï¼2·“LtoSi qluÅR5\ÄQñ”ös\ƒßäp:6Ù‘VɈ'¸(]…™%VéìœýÁ<éy dá–QÞæRjÝíËáãs8w«°›ã»vï{g:h²É}¬ªË/ýý&DÕ£m2jÍô™´óKƒètîf,ïïÚ¥YÓ,ÀÝÔcò’€‘er͉œ¼M·EHvÐuò &ɛɒðñ÷$t^ EÆêŽgFTy©ÒrhÎa$8‚ú, V‡çªƒ ÷ú÷7¨úÆ[ö/émÌ==Æ âh ìÜ×ZvdãkG ·¦°•‹8J@"ù8-³\µ +ÞÊ“§›Â|G¯üL…ó,©ÃÅÝŒÎN{}Ýß·‡‹Ÿ RîW·QF—VZÆË²¬§r·»ÏS«•¥tƒŽyÞnÂw ;¤{Ò ïŽ²…$x.Sï5KÉ_Îy¦p‚jמ€]…‡ÒŒÚ%VñWòCÞíÅ1¿ôÊ”C‰hYSø—›wFï¹âù×£f”nd³mŒ~»i9@ìQŽ¢Y”ªZCÚ³8u¾WVÛ%³d*‡ "LÜ¢}ù~ž„¹ +`’Ôþ¤Â—õùÉT$Êž‚úgçjÝbúst p÷†“”öÒ# _Ž/û»;êw¢Çdpxêþþñ2¥OqÀuîló§ÅJÊW¤,eT²ºŸîZî,rŸ^r àÖê%;·ZÎ,.C†QTÐŽÈÇU]œz[]…ÌXè)ÆÍòøN9È'ÙÕè­ü =!Ù9jŸ·9ØäC*Z‚?ßÚïoh{1Zî‘ÚÄŠÂàøÌO»Åñ¦Ñ`œn'6†=¥ôúWQ†ûÓ¡ìlBn÷Ê ’³÷ ãimæ>•‚¡…ìÊê ÊÓØ+-f3`5ö{Dà™½õ;LÏäY•´sŸ»ˆ?.»`H”Q|»äߌa`x­9nÓUådÏxçÛ«ÊÝ VtLøp™ ¶G?×Eò,W°¦æëž}P_òÛ-±“9ÊGâgAÏâ›;`DÆ؈¼ûT†…—ÖmÆŸc›Qå]5)¡Ö°Êý;8EŒ¦ÅL2èÎa¼5“:㳂ÑGÚ6 ¤ êXû"95{¥XŽžæB„ŽÕp>@.£Ì°Òš;åÞ™0,‘¨¥¥Îõ‹•éú¯4¦å·¶/ܳòjUŒic=ÒêT?! ßÁ“AÈëµE‡A؈¨òP¿w¸lët4¶ ¬c#¯<|9IµÝGõ¾3êAåØ;9…:Ê¢Ûo,8A¸0óšä…)aF¿³4Ó;Ç^ ·¨%’ð±+?VHÐ}è³¹³¬y ­Ï*ó5®û´“]oE“¹O‘¯!3ĈN-0`i$¥ãÅg¿{7y÷ÔC¯ŸƒÇ×ê‡(hP.y»{3_e:‹w²Z¹åŽ·ñ9Îóªà™ræ©·E¥_ ;¾¦¯âp×ox 1’O,Pk…§'Cßë© &ëÅX$!Ü!pª=dâŒp)™…[—¢Í8aÆ<.å¡g§dg4žùýRø©Ð ißy­ÛªÓD@>´EÉͲ~Ô´Ù5=s±Ñ×ñ ·]!Õ²S½î2þ’ìÒ¹dÖï|.rëËòj‘¿èޱ ?îxö‡»^§K%ðOú²”Ë«æÕàö¬ê¡fNŠûrPÞ|ûñŠJ¸)…úú$]3‹ªô›í_3*0‰7H6aAì €ˆ“ë’|ç©ú;¹ÞwN*2ê°Ûµ:_´Ð>Ëjýƒ?äÀ­¦ŽmhZßSõùà¥ÓÓOºÂa€@ŸúØÌ(¡­qÀô–ÎÊÃØnãíåç<&ß>fo|Ãâ„%;ÜÚœÙ242l U7ɹy­.ÂÍaÝ<‘‰Ó~¨_BzJÞ‡ùgM4–K¼áß_Ͷ;BºX?>×}XF[0¯"ÔÅõ¡N~®ø}­‹–‡-‰ª\, ÊHÓ˜@=¶Ó‡ªl€]þÐ-&+³ä_ïãóդ™5ß›U¬&Ò Â$–ç[SÃUÄ6^¤¢\>ôB„×zd¸Ÿ¤¥4"ºK%»0ɦÆzõ´ò>vmC¤¼nB,lù§x’QP6Žeþ†«xðˆv’Ž•ÌPTµÓé6¥†™³!xT_¤’ÜÏ m“:†z!¡Ó¿îº b0s;IUH»§íbYY¼¥ú\Ž©uŽ‹s;ä¡%¡—yæ¶ö\n–&"h~C䩲“Øê•¿GȈøžu\Àј7cmÄ‹=MLåY·]Og§‹Ø†ñ°eòñèÝ]gÎYO[¦U^ íÇCÓ¹ÖZÔŠá ³3´éç°S³EDñtJÈ-68zFµ£_V&è|–JÑí…2Ñž:“±Î9.h4°Ë]Bà2« {’J–û Xü®Ï‡”vCæÂ0€ ŸAîÓä9!ëÌ™!¶g½ñ79dy¶úŒmµ]¤‡Ê>/LàÜü91 —ïp4 ÔæŽ>õ1Ú6»“ã‡4Ò“€º:¹Œ{×âÄ\ã—ÏÖpøÀ÷1ç±Òï/€äSA' Y’~£ÉÄ—Ó:®>XÜ!âgíe(¤ÜnÓPù¬ì]ÛªÇëàkòðÐftÄ'H—‡­ÉóýM㦕ç;âG p\K™SdU?è§•YõÄky!èJ’3V#žœî·/;uoikÍ â×ÎR¿°Ë"(Ë…[³œ ÕÃòÏGúL[ |LdxÕ!M%ˆ„Q¶zÝ× ›+””FRŽre*‚•Ðí£vU(áë›'ÔkÃxæ‰hô?ô›BËž+ƒùø¯ †&„•¿xqîcÞ¡*ÏЂep‡?¨Î8bï½{ùx7Ø úªÐD QR`ŽÛçE(ÂNÒ·bÆü«û€Q\]?òbµ „'q‚pýÄÆ½BÅVMæ¥ÁëcÓ 0Ñràˆmø¨¶Ö0[ ­ð½)šgÆ^/ù—Ñs¸h«/£×ú%Rüšù9?¿ÇÛÊrL¹äø-eÌMÿ¤ìÙsö`Zéæ-¥ßЬz-ÿYºæ-: ÁwçK›g–jR⦰¡äûÍn.\áÀ¸œ+ #ñä!Óu-‘½Âÿ˜¹¿o%˜YJ½ïPT]´Aî ƵaŠK{̾ÉNMôUýõ2BoŸ'E»(±X0Qñ«v)Ö¶°›´bmOW½é9 ¤]²³¿FÎêNÁÄõYÖ# zÒ”$`’oBble6¤B°ó˜úUûôg˜ü†‘­?Û—ãú5`=¥¿LH1™g"p•…!‘sV» éŽiâêAs2ç1>;\ Ö¹TžãphLöRË I³ÖϯJ' çõ‚‡´ï–=v°¸÷®¦(šWÜ•²ßO)``´…FõÌ‹ôÑbëv»¤ ì/Ñ+Û7— ï*I½`F«\Ÿ×+/Š#šcÝ·?xÌçáWœÙéNf æoM¦÷C°ý€êYçµ§<øåë7·–V‹½EF©#•Mù’È1y€H…fÿ;év9Ò\EèÞ»ØýÅÈe8›e7®Ô_¾ÚW>AîYBé~&d:r+RÄw#Ò‹)ýYb1I¥ô´>"Ýtï %r´.,ñt¡åW”ƒGéPçT|–Æÿþi^5íqoFÄ­{$šÂ‘t¡G=ˆÇáq.•ò3›°É›yÆ¥-(?>«”O™¬S­òET®ßˆ¶áR¡ðÔ£t7Q7Q¬¼—sC§){.= ƒÝéR€šâN"C1TG;âLOÔ íâ`üK-!œ'r‚\¤ˆž(¼3_CßAnj­´.E¨E`…¯‡ÅOâàœX#mòÁÃænkå´îžq²ÕÍ*o¸Së¹ÂŽ]VŸL[Ðdþ&©N0^¼¾ÃéL‘ûo£3Y•Èæî,†á,J¾G~øñœ³ºdÃÔzˆZ†ft–´)ÞêÒ4 í©F²°pñ×)ëõ}ý…tèS?žÀü[·„ÜJ¦( Í& ¤÷=½í šŒÃâ¢IÈõ¾í1L]<«>½¨5æ×L¯µÀ #ED Ôr(‰CÔGÍNY¶:¤ ÷™Öæ÷ù¿ Þ¥×óÜ‚=OzZ¨¯ô QE=šÆÝõ–Žm¤›s•e‡Ã¸£J&9÷öo+~ô4ô ÌÙŠ”R‚e ŒEeýá¤SeN v0M«·N@³<,èÝ%”ßTÛc?:fMº SšÔ9²˜›pVã]{Ä᎚®8è£ßÅ`ªë8ýr4ž­Å+úe'Q»™2÷‰…ƒQÍ}‚%•ï}å¸kî…|ÚëW_®´Â”<¼;Ü﹂LùKJ3q¯•¦©´›=ñ‡ª©ãœ×;šþ9ÜAû;¯¨tÓ¢Òåý¬Î öqG¯H§SÙ‚Æ3ß‚e®Pé´ji&x ïÉéïé÷<¹„AÂ3”¢àéšïüì¹X[/œÐélF³eN4£Xá @ÄC̨õîPMÆê-YI–•"&ÕÔà9B·NÉýε´©_ƒ`æâ篲•ÓR<¦7 áé¹H‰}Q@–Nçqc«ê!7áÔA<˜áX ɽæ½7WaÏ2àÕvÉϬ[ÒP¸CóÿEÉwº‹=—…»R4³ Í{ƒÆhïMeô°ÏŠoÊíëEVEÎah9†ÏISo'PñáÝb¯£!F=dþ<C¢òP†×ewòôuú±˜CQR 8-ŽÉ’ƒ¹£QßëÒÑÈ<½i[}d—mI—Jœ­—‰o˜ÿÚAH†­ôùŠŸDgÏ炃”ˆ¡¨l·½Ñ\Kr5Âùàa]q¥\q}ÃϨ0cIö­ÓaÄÑÝÑŽçprÚ"íµ“”Cé¹¶˜®a»ëó±°7!Öëª$™G?GµíÝÔrØ€ö"T{\»V”¥~ ‘s¡©hŠB’é¬gµM>E¬3‹}|裎IAQGÍ¡àœËô}ß8,NaßùÜaÑ·ä̰´kA¼{9¹NÖrrîÔuOŸþ-üT\ŽÞå3ú ‘„–¡Sw‰à•$¾ ¨ÉŽ~ÚNŠ‹ñ,—œx¹ûQ¸2ãQ5W—)¾Ë"-»<üM3C”º!´½f 6¼ûÊCdÌŸ…þn¡[ B°m#Þʶ14'9^NîþVG.•gòãª×‰ðS,zãl¨$m¥Zê‡Òt.˜!÷–‹‚Ðí ‚¬ö4´.jj.2ðX·ýQ0‘¬± ‹¥åŒÇc°Å/œD6KÖSÔØ}U*,r´—LÇ嘖+h7]‘|¼×ÓDÿ§Åiý»sŠÙLÎñÂ4̯kO‹ˆ%PÌý(\hÊ··ž)‰³‘Á;“¼>±O†ÊK°#Æ)65G«M¬¨ôá™ÚXÁÔæ¥J™;«41ev?†X+kÅÆÖ$p?nuzÁ_Ò÷)pÔ³¦‡¢«~ÒDwBŒ!®¼Á”ÎLÃ%î|EZOÖ¥.8S¿)ûí4–úÁÆmï¾/˜6» ã¬þyy&ºï=Ðg‘Ðz¨‡ÀÎØ-˜9z?Ö¡ÃUÈh¥IŠö£:ì,#q(ÈÝ÷™á}„žR›$ÖŒ8äuÝÝ{Ý÷±j°Àf¯þ…Û_ì÷à"Ç€™Ç!ŠgÏl¡Sj2Â8L€ÇÐÒ<ò>z%Ô~œôÇ  Êe‘3î·+ÙQJOÜ“ˆ cU}Iíà¶:GÃjË‚wë×¥ØÝ_ú¸8ÊgV!%’?¬còŽ ÐðèÐÅ<"¡Ä—f>‘WLÒøÍ‘ ÷áO'"Ý$ ë”.ynª~má<úYiôìH¥ÆÙ©.·ôùuw¡Õù:U§gßu/ª0î;RvÒNN!m.úp k5ƒX÷ŠtHƒò¢ÄŠ$`ï«m÷× ƒ¦IåÐѲK]¼‘{+PF*ÝEÙþç(UáÌÔàfI\‰õ+ƒºèÇŠcÀÆJþn^I}HxîãUè•¢•ªjrÞœ‡âtú' ·㘎üåÛÇÚ¹Òª-¹JºvíBòu²«9«o¡ËÖÚFœãŸRñqMä§4Ê+ñ¯(–ÉÃ!ÂÛ™`ÏÃé¿ÞëB›ÀÚ B%L[\jo“bcĹ ÛPyÙ…Ênêˆà¹dýhÛlIñǬ§{½ÌªœuõO"S¥rG>0cÕfã5fÞþD”Lö ÓÍB‡»;/§XÙëÚ(íÝŠ/,Í?ͽ:ó¯ ;gMá|ÅÍ6Â*¿µª'ßg•šŒ5È5­±…Q¶i“ÙN[á£Wÿ ÑÊgH/S¢1ĉƒÙm•h Ïg0nYsÃ2z^[± H‘ktñEøì 1`‹r ~¢_Ã&”XyæYäüá›j·s¤Î r^hÀÔw«“ÿ}cô˜ïhš="³eêýw_r¯t~saÁÃ#g1”¬Âa×Ì÷lƒ›øæ$Cù{ÛµƒE…Íðý°[fuWå_IËŠÓ)М1ZUk½h‹ü¾† &½ B§m~9£11`æäÓ@93ÞfÛ.Ô[t÷=ÝFqf“wíïG$¥âìÂÒå˜7¿—‰”<óååð«´%_öùl”$Õ4ÝãˆiŒš¥ÉæŠUD´‹×C}“]ob®¶GBÊI µÍL*Ø ¦CöÆžO ¡Õ]Õö_È¡@ÒÀ>gJöƒv‘fÛ¹ú½Ï¤HÛÜwO«—š¯UdÕÄŽŸ)+©ÎͤþDRw-ðI>.Þ$ã¸INnýƒ†é+ª¯ö ”ŽÇЇH½ë‚«\PIÈBÑÂ}¤¼ëŒi4BùkB4“ÿ¢ír'ÑåÐèõ-Ú 9·U›2’*Äò3pYú¸x·µNý‡®Vïi’Ú>@Ó/ä öåAØHt\`ó-7ïù ÿ¨@ ¿}å²!ëJgéUû¨Í‘ÎP¥#ޯ⠟ßapÍÓVY^Èlä`0üXñ1«·8mÃí½ÛÄ€Gîqúcs»5ªÉ˜_J<@üœÌÓÿäélmHp³ Ç­¥F°ÓešÁ¿'FRn&‡rÆA ú®JÁëÛ•Ÿ;]óRÑöíJã@]¼†TXaúJ¡Ô£¤“íKĶ XQ åÅ£ì:Û}žzÁF‹_0gË›ÐÀ¬;׳ çó‚žÉŠêHmÿfå<ñ4Ê–Œ=äŠÊq‘-‚Hk2J–Na¦ZHº$”ð1Eí¼<ÒÐõ kŲEu…Š¨Ì«­e™!˜_ÁùeãR£«Þ‹kKˆrÐ֋؉¬t±ðí…ìÊUl–ÈI‘žž­i+?tZlJÕ=ÓŒ[/Ó ±†•{=ùq°-­ì*‰žegT3´äqËÔ½ UŸï…àQ°è¼=¤‰±{Ž(X`”w¦¼7Í—"µ,/žÕqo>œäë³dµyÚ1†ÂbÁ‹ð¬½ˆöy¥¥}x¬ZBáðNHUªTݨcüˆçð(ë𨄬2¸pî~Í úm¢fT¥!Ÿ¦öt*‘„x5å.Ž©ÇDjGLh_V©ñ«ÞOVÒ¥›‘qE±èÚ…!"¦êZ/Ù÷!§É§?¸4¿˜ƒs–Ö??eÙŒC$õÁÙ©ì/cŸ(œ ‹E÷E~Óü´‹cÌÜü Y] Ò½ÏäÍÛê¾”ãž1m[Q­žˆq‘V(p²éÌ{„q^"Õlõ)Tl¬Îa³C{ŽÌ²,£^ŒÍ+ëxÝNÃÂß,ꔑYz[z¨fø–[ v!–çô Ù i^^°Ó>ëv”`TuáWOh·ÀÌqœÎëè£4òq¬N)œAahe8ľ£Ì³j÷ÁUöþ.Ç윅©§ÁoR±-Ú‡êö¥UÙ”Ækì®KäøÒwjW ©¾ ñM¥èå•îÝ׸@)ûÆÚ…×O/àÄ…Ügú×äéÈ Ì°`ð>”]ÕS§@ÈH–p r~±§ZÃ448˜ä²‚á8>§Úæ!”7zþ'c";AÃ'­üæüv·¢²A@¯^ØŒ‰ÞN¾Ånî` Ò—>–¶ø%]ÿÅO Ê_¬<(Æ€Œ·Þ6ç’Œòìó2f,-ýrÔÅîR&C±{Yž´ç•…Ò»A]›£oÏq:ÅÑë…!K¦"¶´TáʆôúÀ!%¿¹˜{i¸$û‡{žã:¼í.b4U¥Ÿl×h7!Uîr‚ûE|‡Ï-ÔÎfVÍØ™Í0Ø- ÖXÞf©éaÄáV$V×2d~»];?iàM±¿7ú²}÷Gi÷ ÙEd¢ó׋´2õSG‘µ wº¼žT;Š]ì ÄÊgþ=§ò~‘)$ê'r{O¹eŽ[JÓÑ–ßvüGääw­à¾\œ’‚æW18ïÑ ò¨ß•Ñ—ƒøQJ/´|OCÀÈd*r‡m´]ÖsiIÃæ§u¢§›`kÒ•ç] hÊa± Â^‡úÆnãëÔ=[&ZµqžÉÌRjcq°HÄ«h…Ç0ô)›A¥§Žébh¿_cém†-‡göi+×aeX ¨+ñIø¿ºÝãÊ Z2Ù¿×Po®­uË’‰.«r‘|z°ø Ãè1¢Àk¿$Òݳi?kª~‚:êHîÜ%ñ¦\hÍÔ×Q¿¿Ï`ï{òZÎNƒÏíǬy„­Ï‚³?³w艂¯žUi2½u‘«ÑœiEËSÛÌ}“a¦f±V“¸V³Ý˜³³äbAÏz’LìðmÈVÅD­÷^Nw°‰#RHã¶÷é²´¦J-Ñ¿wE)«ƒBcëiÄÛ›„§O¹%gáý¯? ší©G<Cv‘™^Áá:ï¯âLÒ†gÈ'{y8ðN»Zò¿o½(Âi<ÈÚCnRÅ©ÿYÖF‚y›Šg´ïqX0&ñ4vìw´öë61–)»¨¡* ÄdìÐX!ì@Ó¶`ÆWžÂôRè“#,üðžWŒˆ+U5…°Ì†'¢+{I_ýÊV%\7,1Ü;0ª»+Š)œÐ>ýN264½p‘<Á¿¥q6÷É&‚—ë™UBKjýn5};¯›¥‰Bn²Ú(›×¯7 ɧðü€nÀ VfxFL§?ƒ¤z‰­‹ÔÏ`*­”Ü¡SòŠûqïsÆ«º!Ä)-sâúék¹tvŸÂ`;ô‡5WxЗâ ZüØÏùiÈiÄ2õŽ\Á£w¢Sæƒ'ùJh‰BÃ𣤠•K=ÖÁ¹õüÉ>ä–\¦Â¡˜Vü|Kw Þ:n¶6fåÎ@º1˽دó¦ad åžy™]‡;ö=6¬$Ot6Ä,y%Cɺídò{ U_­+¿š}0Çof‡@-È;X%c¯pecA‡$B´Í“²7y‰áµ膀q a™VÚgÓ4{WFÃxÉš~£Ôu¢î7mF”q9 "Û©œ^STd=W¥/4ëÞˆ¢|Ý!­•ÑõF2¬PcÁéÿÈÆx~ýð;¨b#ëpÎ/$IgtdV]*ÕJå9F¥Åóä¾&raw[C8I‘g†žwŸ•¹ìL~öš@XâY,\ÍKÔa:,<´"â„§•­yy°”G²0èà™Ì›©ªþTÊBI¹¢—m°G Q¥ÿØ®”cð„¯JÃn€ñÄÆëWï™%U~ä™êˆöE¹ø¾îÄŽÆågôƒ¤‚ž¤1’ª<÷ä C«Ü(ÜO(Ú‚¦äÞpêKu–­4¼ô÷»qÈú¼By¿بj÷¢aN(!Þ ¶.ô@|¹É\š*óª ôîþh1‰”È´®±Ôë4žÙ¦¢nƒc~ºêòœÃéæURxâÂÙÛÛU!&”FvÇ 6?éEµŸ…{Å#-O+ô=]­NÖ‚¯½±ýk¸Z6»ã™õÌ ä·jßaqŒKš…pã ”'"£a“ÚÓ;?‡ÿNÑOiš|zµ .;~ ou >ËÞ—=úóØðúB†ݲÓ1bÒV¾­Žªc\nùADÇDîÝÌt7[‡þ*É:´ëˆ9hd¹¿ÅNY”ÀÍ·¾:wœÓøˆÜ&-öët H¤ž6¹…HçÓì·;3¼UÙŽoe¤Z; ¥Bî&é¾&Þ&é½O‰wb'4\#6áö$æ¤ØFdm¨÷«:ëSÔšÍ+£."ñZ¤#ø íœs\ð5Š«©ÖfêÓŠ›Ãüõ¾dÚêJ‰ ?Wüë­½££2ª›è)Š1ꊄ(úH؇üa\¡ël©dî6ña˜¹–Í« |]UFJÜKú¤çfFÜ€DPlö%¥>YMPÖm0ƒoXË[M³^ó ‚ÌîìW7–Ô3mfeô;æ´¯Bõ’¯«›Z<’É…›¡RB ±·D4ïx°|bá‚hNM`ˆ´ˆ‡|š/ Š­„O%áºMîâĬ„Âà}öé¡kˆ)|Áy%µùáøì@õ`] í¾âçgù›;W(×…âÚHìøÚC^f¬øè‘”‰>/yÚ˜ònYˆboSTm¨4ë®¶‡P$Úãkµ8&åC¹u¾Ý5ù)¨ù5'T²½YgE± n/¡ž‰dhZîI¨KáâÝ)7ì°ê"qFˆÖÌpè­ÁûŒÀ)#§M‹w›ôÀ+zÇ–Èæ†Tø½`íï%%9å¢ð¥ë¿µ?BÛÞ³2 7{¬Y+VPY¼án˜€š©&9.–âdݺ1&›Äð›·‡e,üü=I"Dº|3]°¿t·1U5V¬çøV}#ØmÀbd ¯1—b$á”×['ö üéð¼®Í«¨CÊ턉Ímg@zòÊzÀÌÑ?džgÅC*½Äòü+Úìí¬ØÜÿÑËtXK© srYsN 2ÿæ×‚—E]ô½}ý›Ó:J¯ÓÖ©™¿ÖyΦ“ÃB#(Œ—·€ãež‡¯è28Ÿ¬A(ev:Ds–e¤p˜’;»>a·YhA ’> ŽC‹6OôCP¥HØ_æjÏêáhÝâ`±wÐwhÑh}”SC.ÈÞ%®^˜¤]‹¤µZüV>"Ø*s±¾ØäœpüìØùÙXU¹¹9´ ñnpœ˜ âÜ:É/¼0SékÑX¨\ÚÏ|Úéã:žåÕNHQmî›xßQ“JH5£Rc £}´ ­êa s‘9úÞ§K † ÷ˆ¡4¢%d%‡W5OÃMÖ"=“qÄ•0.Ëtjíy°DÛ–KpbáòUåS:;wPeÞ7‰ ˆ»^ð%+' ]¤:y$F¨µ9Cöéí"©X͇¹ªÑ²«´Ú¯¶Dëf’¹¿s”¬™ 1ÑH»‹³ÁXR¡k—v‹­‘]¯Þõä%^¸tØÇ+šu5áÿ,|.°vέ܄´ÈÔ…¨÷:Íïµ¹FžxgGwMû’á>/ìwÄën¯|~[½ ÑŸHyɯ -"\ìM@Árƒ:ß6Á ©1Üö3Uó0qe§»L¼$&úÔ8áˆÙçªÿ³ ¦–oH»Ó7cÙ«´+-s[Ú÷“1,ÂÍôò)ÛR¦¾´çÖŸS§?0ºÚ¬iÜ‘+“2ΨH0ˆ&±^'=áæJCËê:ò]¤{c „Í‚s;ZDük(3âæ à÷ ˆÔ‰ÆÆÈͰ®·!×<)ƒAÛÓðªûš§Ò6\èñ?‘MÂ1H磹„ok/„ñ½”Ò9©Žp™)X_.?3É8g­ÙHÙZfï‘QòÎÇ5R‘â­ù¿†0¹ØΈ¡£Ú˜ U;õÑĨ?HC⻬¯>1çQ%¹8ž_Ê~'>B¹|@T«c³È^Ò§‰fO ½^ ëxœª3KòH†úA<½QqDŸ¡õ+&n¨ÂÐ2ªEX¯öIâW-²Tê͘¡­1gŸìåÓd'%³|–æŽ-Q »Ñ Øçju¾D–‡zž<ócMiB¤íMÓROèC⣖Àâ®v zû^Z=¥ÓA+v—’ðy6 kCŒ»&åÇÂû^ÜÓuuñ‡#Ö¯?¢¿˜ªã ¥µhCaöpá±|ƒ˜bÊfUéÌã¸oAñΤ½ÑåÀ£aâa˜È &WèÇÿâDØiÕqY<;ÿ„^? 0¬£håUÈØžx m›¸+â¤ù^þÎnʉ"ñ%!•ßè3Ê—÷GáféŠ_¸ÐÒ¥ŸðТ<~HTl68ÍðçnÀA £+QSà/XެbK¹^u…Ç?~›¯03:`îÿñaP6UŸÃ÷÷äñÈŠ€ÌÖûúb*ËõSÆ2 û´Ÿ¥‡•ßI­–dD-0ì;^Ãq;øêëâ3‡|Óœh»Yß Þ«O5éÔàK°ÖÕŠsÉÐ1²Û“¦.zÁMk{ÇØ—„F(¿™ Â0ïFïíÅ3*%OZ¦+dJ‘†ñ{Jø'د,%†bµ„Ôs©t3¼ýþú©Ëvqî-ŸÜt¦óO*ë­\¢½O|·ï(Õ§ ©R‰Dþ@c i endstream endobj 721 0 obj << /Length1 1429 /Length2 7132 /Length3 0 /Length 8101 /Filter /FlateDecode >> stream xÚwT”]×6)!Ò ÍM‡ÀÌÐ !©H‡¤€Ã0à Ò ‚RbÐ) RÒ -!% ÒúÄû<ïÿ¯õ}kÖš9ûÚ×Þgïs®=k.6}AkŒ\ƒv„¥%MM5EƒE„À`ab..¤+ þ·ƒ˜Ëîì‚Ä ¥ÿAQr†C]¯0e¨ëSƒˆ—†HHƒÁ€0,õã, (Cݑր¦pƒ†»s)a½œ‘6¶®Wýµxa|DJJBàw8 àwF h@êj w¸ÚEúîêõ¯¼2¶®®ŽÒ ‡‡‡ÔÁEãl#Ç'x ]m=¸ ÜÙn üjЂ:ÀÿêMˆ˜ 0°EºüáÑÇ \= Îpà @!ap´ËUŒÚî \mè«iÚŽpôd?ÀŸ§@„ §û3úW"$úw0Ã88BÑ^H´ €@¢à€¶ª†«§«E[ÿ"BQ.˜«x¨;‰‚Z]~×TtèU‹6èsF:ºº¹ Q¿šýJsuÎ*hk%ŒƒíêBü«>e¤3vuð^ ¿î×ñ@{ÿm"hkįF¬ÝAÐH'7¸šòŸ¤+ˆø?˜ ÜKJˆH p'î ³ýÚÂÀËþÛ ù_uáëíˆqWÀ}‘øÕ±· Ô¸:»Á}½ÿéø·E ÖH˜+`·A¢‰ÿ“ý †#þ°¯$àŒôÌÀW „à_Ÿ¿WæW"³Æ Q^ÿ¡ÿ¾eÐUSEÓ[õü·WQã x BÄAa10†ˆW ß'Ò"ÿ,ä±jhü£Þ«ƒú«f÷?eÀûçðÿÎ¥…¹R/àýØ‚ÅÀ°«/ÈÿYò¿CþJÿ•åû—¤ê†Bý&ðþÉøP$ÊëOÊ•|Ý\¯FAs5èÿ¦Áÿ`E Êú¿}j®Ð«P@Û\‰Z"*ýGº¨"=áÖ:HW˜í²ù‡º\Mëï ùeïæãß UÐ0Œõ¯A ÎÎP/â«K¼²ÄoÈÕÄYÃ=Ë ¡1®W!ÀUé¾ãLüëÆ ÂÈ î ý…þ„!u°²þtÅqpûÛ G[äß6D]ÝÏ?sˆ Ï?ÿ*ææì|ÕÍo¹\uò—ýû/÷„È'¾``·CìÊBê¾W`ô\ê½Ñ¾µOh´¨Bï¾¢¤$süCäÝ“q…¦‘å'Çs”ë¹—ÕöÆ´`{‹YŸä'Ò´õø«o>ƒ”²'ë.nÂËê¦DÐÖ6´Û5zûw>óÝpÚ]Mû~W†»¦ø¨Èv›€§jCˆ§?ú ¤¤ NHƒBZC±b©Âç‘jœ.{wú7_0«~?Nnë[hŸÌÀFÎ'3®­ÝpTßO[“{¹Ú"ΠþhøÌµØ¢BwË´_ÈkåÒ«“P¤¾š2~ÚáE»7ž¬LC·ÂôTå¦2Øß®Ð ê¦XuFd8iî¼æ+b¤ØñF}¿jÏ["òÜ?_Íäç¸ß²OOïf¤t°£ÇµÈÊËoR¼ÿ~LcÌsêùÐ8TËjä£5M‡MXãF¤é0˜5øR.PZn÷>ñM†ny üYáûÁÜx9†ž’]yÛëxÒ7qobOÒ©+/;X¤˜dp jç¼ùrOsB¥jmR· ›.^œló|×6MýóëSŸI2xP5’Zþ“ÁôÇá.™Éâ"îv7í°¡¯_2øæîKSR®w/SuGÒ½t?4®¦û­/kÄÇŒØÅzãÏjˆß’²<·¤ÈÄÙŠ†åj(%@Ãúƒ áL¯…X±摇/ƒW,{ -\pF^u[9± :&ž«>­™Ô”4™SQ<Ûoù¶éU;x‡Zq'TzrKa‡Ü mÓ*ÞòŸhô“Í—oâc ˜ÔºG"«^ç}½RxÝ}üëÎÄŽöü¥gó½ˆø5„Ro5 פàwüì›·/þŠ.Ž·V>K=¼_l`æ|“êg8O¿Ò¨©Æ–Æ®Oaã7Cm· ­GŠÎT–tkÇu_´–¾Ç/)Ž3­4-Wô.l½™©^È•I{_Ô%ÐT;ճǒg=0³²G¿”ÈëÌ$éï,’uN}eÆå/Í):±Í0˵)¹ ÈWÖα}‰Q¢9ù¸›¹"å‘È›sŸG§Î+©úÞp÷F³ 75’؆K´ÃdëRêcþM0=/gdÔÐÁ=³QX¹õ*“7ÖzNwÖ~u¿Ÿ#´-åû-ÐZU ÇínA¢ÿíS¾3ËÂN»Ôv¶oj‚¡Å‹5’ë€ÏvÙó‘ Ü#wr³ï-’X¶Ÿ•®á™kEõá…£©æX´éœ¿ [€po^“øx›NM•çCØzÚô³ë–^ÀHbéÇ&¾‘?,¦˜ãëóWLË@´{TÊMñ4Ù_r”b„ô"ä¬ 9–èñE^½Ðã\šà6u¶6$õçËñ3ŽŽ. š›Ká{?>Ú ÛË4 ­:’ kÞ+Ê›†´ç76½“ Mp@ežŽó©|ÒhÑVKoÀfÁ¼KYiYAð!Öû϶¢äÉ.¼!¹¢=*†ñ’Îs¶›u)7f1eΈÛúŠxÕ; ÆÁÚGÇh‘ë!\ë±Ûó‰#¡¶Ÿâ$&šÓL!aô0®2èàÓgæû÷*¸JCŸ=Òh-æ¢æ_ ÝùÝ›5,–4ú)ûþ3îfÛ[ŠÔ¥j`šcZšrk²Ý4VÛ+ÃȨýÂD¤¶^¾–1¡Z E[Äòž¡¢Öb>ZŸÒ@rbù(æ<=â¢_nޏ6y¬pZ Tƒ&×¾†Ý.¨óällÓ¶º[¯ðzÓåd½‰­ÞgÃ2êð’¶s?r²I>§ºð#øŒD·t(ûxž+ö¦|LóÙ¡Ô~R"ñq[S¯9dÜÿâö<Úü„ÀÄàš*=ñÁÔãt¾•1Uoª¶ªî}‰yù†¥®ÛxGÆ}¢åç¤&–çݽ±gS®+ª”ZÚT"[ïθVAQÏ[guÔ?†ÜÀÖ- Ã×– pÏY!ö¸©PŸâ§ƒAšñ´7cœä+þX½‹Êâëð‘¾oòØ ½éô8)Â1sûÉ|ÕËÌ]«ô§M°‰‡û|òò ®¸%ù¦éÆoà°!¢‹t Æ×ˆ8¹k ›jeTd$wYˆã½_m©[ƨ…CKVß\ð6&r k®ÆÌtÜ·ÅçNmgZãMN÷ ''Ÿ`ÂOg~¦x~¡\ï1õìÓf>0§Ì°8/ñA.DÿB…2¤_—ýÑ?IÓ&¦VÇ\¯y`¡mñé1ù†Ôà¸Ü¤lûé0óÍ JV]AÅ;[„ mˆvgXÐb»Ó\Ãæ ‘j!7êyöjŸ×àFêû{7£Àœd:ã3³Óàå(ù©Z/³azI;éü3fŽqζbâËì?ÆdM辯 bLüw«>3eúÙx³çÆÂy79ôj·Ðd7én¬Sl¶v ´~YßK»Ë Õ>Ó/ŠÞö²XØ"àNŸl7ÊiÙ×µ;£ïæ.úM\¸-ïX¼@7;=QP°Ë‘e+y{›#ÇêÒ€úMj¦DžÞǬ÷MÄ+cSì}õ7C¢-ÆÔ4’»5ß_æôÛÕÈy”Þ6äåg —¢n¨z0§eOÛÂc],ŠH"¶=WKÿö®ð:‰lî÷T(ƒ¥]+kö¨qÃŒêõõRž;= §£q ×s´ ôªf—Å>·šà¥t²§¤_xµVM  ˆ9½®ÙÂQßÏ•’e,Ëy•|†v¾ÖÔ0%ò§ƒ^üñÏ@8wFäóa\ ·+Þ×Zá’ZôBöS®‘íôªÒM!n™Qš„rD¾¯ëO;ëeYº·‹Ö…®±·v¼Á -}ÊýÄb\¥e ̬D„w~÷ôÔñmx,Pêb:Z£MóŽò‹s°_ý·¶÷‘ 3½I¶3"f¢ Uë)0¦UùnÙ]e?êJ_Öp"žŸ¹œRȇ±Y‡ðßá­M4Üæ¤ÅpVÇŸöiùfo[:™)ª‚kTͦ\mÁ¶µuÏFk-Q6IGDÔ‹ÙXªžÑâ«Z…ÙZ)°Üë±Õ±!ä2ÒžSCO_íðà¥ç¤®|™¥qõnôàŸÄøÛ©^¾Šìy_Ïb0}Ñó€X×K¥/vGLJnsuP¤û³z§`7£Ì ßJÞÙlºô÷µ®ÂÝökùýÀK±Õ ü·´ã­Z‹ÌŸb.mø¦‹4K;ý[c/Ÿ˜¤‘Ž­‘n߸¤ˆÒùøÖͽÚiµÞÍ;ɶ]Á3úÚӱ؞©òa§]¸Ë{‹MPÏ×ôÇmøè2ruŸóiÊÐÇ£Ál’-š¸^‹=×­Ê?‰RXs˜Ù½<ÑíV—ºT^l ÈIô"ùžËêìg]›M}±|Ì"SQ/néç¼ZkåÖÔmPŒ1=¬ÿ’¤œTNf;a$àw+¼Ž#D–¦³!„aþ5NÜà°ßmÞ06RË¥dšq]ù˜Ëî(Y÷x7ÄǬ$Wf ùiTðAÊ=y)) áàÜu ç¾ùÛC}“ªU›(™˜Çã$Ùr_âÍèÙa¬Zq­gµ³÷€‚CAâuRº¨í‘re²Ë³;Ë--6"oøM>‡òx~`CŠg•L¹¼~ÝV8ùÍtá$câ&>Å_Ì“ûÍéáõ¡>Š¥2¦}Â@£ñ¶ÏËJ?h߯Ü‹OÊPœÂQƒ±£Õ¬ÇO%n‡_u¢Yêã®RaH—ŸceQ_b¢)²8a­ÿ ÌÝØéÝëd„¾ ¨˜%0$B‰&°² ‰76;N8êN; ˜D’q:KæŽdÈ&¨‚º´ddAnÍóRdtÆqd-[åè*Aïlޏçg®å"x9ô*J朄/3¼Åš¥'ÙìšÏäåõ–³°9“û -q’ä" ™f¤¬—ª×¨y=±ÝF šÕ™‡i©³© È,< â£mX”ÑWà©Ä.ÞŠ§S>}&fÅR墳ñv©zùtØšy5nA{·bFÿaÛ›gzk?•¶à#rìµlI€ìŒˆixÊ›YÁÞUœ|2Ópů~þ{¤Ž ½ï"+po¡ª °k´§Ý¯9IB´íòœ×ŽDÅ ß…´Õ»Œt†/«›GꆇQúê(r«$äBª™H½ó?˜Õ“{V•^¶ØY t‡G_ŸRJcœ¶FM¯ábÇ|~¤‘ ›."ž¼Ÿ/udK,ƒO¸¶hå1)c°Y&D¨th-‰`Ó(æºÇ&T‡“j\_~PŠÃbž·ªzRngV`@µi¥×ý=F“«Y[òáµ;ÕkƒX韈¦6•¬ßô¯á 3ƒ<Õ5—ŽÇ^³Ã#ܲ-¤ª>8§%Æ5ÞÈÌVÖë¹§ÏB±¸QÍ«“—/(i“Ãï-MA;§û"ùNW6ÅG.¯}0k•ãô7ñCš7ð–´ã¬xÏj.åI­ÕX•¡uc@¯*AÆ Ñ+s^^"•,=í׿%³°²¯{ÞšXK€"¨'5ôŸs{‰÷d*kú5³‹ï_,‚\’Ï?5_žg Ãntå°Q­–Þ*w„Ýþ®ßA1ÙÖD6…U¸›j¿”÷â±òó¹`û½ÖO?›xú?†Ë†’— &T} Ù L…›­–­Ïº-ª3ñò)m_\ĽÃT9ãR† ÓxQ<•óŒ¿L–à‚Ÿ,Ÿ”@_‚!oTvì3¯—áaQ¹²yü kKÆ».ás{]Îl½ôàæÁøJŠ¡âk¬ Ï׬z§,ÜeWØ¿K6Ù ¯èö'Íû§…î¬úÎÒÈøÛÀÜ:çèòüêõܪ}Yv›ä²iˆTï²­VŒë©ÏüòêNÏüXÒgûÙÒ·ã2*çꃈµ]Å/¹çB‚°<EªLäï§Ø5TZ’̦šÕõ&„©v7\—µ¬¼8ÕÍ$C雺F¾ lYäÿú,*[©»<ƒ§hk+ÚC»m +Ÿ´ŸBa(J/ïðt¾vÀÔ²5»7ÊÎhüñêê-)ëoy-eø]ì^´·> ¼Ã2Öÿï£ÏöÔ¨ÄfÆO^2Щ~þGGÙäâð=‚ÈBL6g_NK‰ÅW¦¹Ü á©`¿{ºù¸&T„S ½ž„ BHŒëÜ.rfû¼„Šçõn¿Ru3Æl-ÞɈlnAP‡ÆmSJi‡ÿkn3û·nÔìÇôõ9b¹ì‹^¬÷L•ßÊ*ìx²wNŒú$žçÉ …¯Y¿–PyY;4Þ±Å7uWß›§r·«2¬zMHÁÈ7/öÛÉŽFF ávî¨i,Y´?„S1w‰½› l£Pèëü GÇðèÞ*YÿvWÜrÿ—"™ëQã‘¶Ö{cg|áèå¡‚Øá$ß#•èô¶šÍ¥ì"néHŒßÛ =DÏkæ'­£~\zwͬqXw²2}@ò'ÉöÕ.u!ŠgÇåÆWʘh&ö'úãë_“G>Ü˼SÊ‘µQ7ˆe q»3)VU÷n©‹¦jßýÙ…©2RáIŒ¼(X›4løN’[éÕT#ËOÏ“ÜNü­±“Eƒ-<è†Eû®~ðÅøV—åÓ'ÆÖ™és »öhœ+E§ù@Ÿ:vT5F“æól7•çxMê`îá¤èŸ€ˆ¬z²ú±HÔ£–²À™KLXhµ'qéÚÈê†8‡‚ÆYÃgÇã–k´2Ÿ]ÔÒØÿJÐYBBâ>]Ì˸=Dëø'Òš˜˜ŒsŸGX&ǺeïàѽØí.OæêG_È;jžæ+\_8üHpĉpD€øi–Ë×á!±ã´Üš7èrUÏÝC®Q꾿Î} ˜~Ô‡h+N!y[ÙÛ̓›¥E1ÍáS%î|·ñOMžºû/ §ãtÿþnIï¼ F*Æ{KA&”.£æØTÙë½ÁÞEí+,§‰%o¨"G GCÓGOp^µpOïôš~ÁJÁše«¯RåÐÚ(†ïþ,)cõ'çáyCÏ…±;Ôîa«¸‡Fq[¶Ò×}Å'É-öÄò;×ÖÊ4¦óÁX&;cE pd’€ê „L±ïýte"—ÍuŠfÌ–…[oÜ%é%^$?OݯxêË+üN9Z¯ˆY5ë:ÿGR.|ŠU©ªÖ{e^ä#tð%žh÷JÑæ§Õ†CÉIÔ€…ȼ*N—÷>M·Àµ¨W YQÛ‰¼óˆÏîòJø´ô7žÓóËê^}URKã*VÐ6ë¾%V%Ýd5^s¬2a6€©Åß½dÛ9½9nœ“$~{š¢k‚¼®!ÎÊ4^®i„>,e¥6v{B§ÄÄbDDàÃ]Ìâ3¤¬¿MŒ‹·ëÑ+çGßñjbJK÷§™:ùláŽÁ±oÆK¥pNMÕëà¸Þé‚ÓÉ]K02–I¾ý¥[1krÍ—~ï›oÛkÄ• b[mû*Úš=!>)×¢.Zè§æ¨*/Ö‚³˜éE£VöÔûøÝµÍÜÇM¬j™€ƒRU FNùÍW+[¸ö$^CUù©oJéâÅ!²,Rä…ŒÂV^Ø&o;½øŠÌ²É‡b?º!\=ût€¶©Ø=ìµàÀZ Ñr4ç Nó÷"tà¬M“ú|ñeŽ790ï$Ý·é.*LYÝí­nJöÇ Qø ÇSA |²ýS‹äÇ«ï¢G¾j¤–Ë$ÝÄiÓ’Ñ:(ΠVÑ}Inس–~âìÙaÍ5ûôº¢ I/?Þ`ì(Ô(ºÛy"bÛ]¦kNÛ`ÜëUßáq3™“¡Za».©êx— ÿB5zvi¬ì5cÒzm·&§@Bj‚ŽòªË6#ÌÊá¿BñÆßOcnÍ*ø‚…$\~: ݕɔ¢€ÃqJúÒ­øÚ›Fг›_™…кäu‹ƒ¸± Å÷Yrq?(µíÕ§œøRÜoÇÊ¡Ï$3r¿9¶´/ûˆña̲ڤá‰Èo8þ‘øúÒžÉ^ÍÞÌLP†°[?{“ÛJC[¥q›qz¨²]ø‚i!ÎKJl—ÇlŸÌ:ªU\˜ùÅT4¯›#á0>'ìó&¢x ×SÖ+ϳuä%Ô¯o!Öd¦lr3l ÂßUèêá9*w¼ÍñðÌÄ›yÝüGS‰ŠÛcª'ƒ—¤•_óÖ[»nMÕ%ÉÙ;Œo/q‹ìBŒ{H1É!§Ž*cŒn>ñdòQ#3eI™ŸÔ%Í«ÕÙ^áÍâ*>ذëZ+ÐÖu¾EÙ9çx±£?3D¦æSFGl¿iž¡ÌÓHÿãX³fÝ//.yU‡^d¾0_á¦À)™rmÔ˜ÃòU6?hëÝgýB2cû>mLpS!AB«“šÿý>_w×pea¢ ±r­,UéçËÆ­O-%£½-OŸˆ6¹]{—ÈNhY£šU"ûéDìf<²¶˜Ið‚¶Ñ,B"ê…Í’‰Ò…ö`™øjV²]K6jÎìIÊÈN94¼µKÕmxåQoéC‡Ëîôòé=6=©;«y‹Uúa<Ö۳˳*”„Ò†öÈe±ëñÝ“=o°Øc‘Nï-WõÄ-}mÖX½Òªž_Ÿ¾fkœ1ÊFKJAŸÖ—¶NP±öN®ô¤þ¨joó>•hЗ•ëRY…g̳&Ϲ†ÄÕ‰ï3;ú2œªxÊëãc,x´ü.=¾54ƒ¹õÇ)$pºÑücöêéÕ•Ÿïx@)ž‰¸zøÒ+q‡ÍÎ Å\ÿæãgMDˆˆ‡µy{tn½+ÕÅ€O;øB’©s^ ²™´ŒcJS«"Sà†]Ïs•÷õhjð³Q¡xís²CuŸ~Ò>c«ËéL{Þ’sꩤ/DuKVž„óp7j,A9©Gèk³jLžô³0×Éöˆä|µœóÇ,'¥Üu5¾kÌ0žTSz‘œÙv„8[1 ]dÍÈ~]•q˜–/@ŒW=ÚXɺ·ïöW  &£9£êèÕ(ù[NùÕ¼&N–ê–DöãÞŽô;7ótó4eÕqÆhhZ졬r Qǵ,qøÙðÒ›]ðæ£5Þ%™fºC‚øÐYÐë•7´eTE±åôÔ¶EÆ(¶öx` i´Ó¦£“¹ÿ<–³º endstream endobj 723 0 obj << /Length1 1396 /Length2 5916 /Length3 0 /Length 6872 /Filter /FlateDecode >> stream xÚT8›ý»FQ›Új¥F+µ›¢1k«Q+"ˆ‘ ±i)Jí½Wk—ªU[©Ö*Z³V©Ú£¨­jœt|ÿï|ß9×uΕëzóþžç~Öï¹ï—÷š® ¢-ÚE£°‚`! @éÎuˆDÈxy ‘XgÄ_v2Þ»w ’ùo%w ‹³)ð8à4  áá ‹À2`I IÿD»Ë”ažH[À!€…Àñ*¡]}Ü‘öX\¿^|p ,--)ð+ è‚pGÂa(ÀÖá‚«‡9 Ðp$ëó|²X¬«Œ°°———Ì#„v·— ¼X€>ƒp÷DØ~Ž Ð†¹ þŒ&DÆ 0t@b~; ÐvX/˜;€38#áâ²E¸pÕêZWê7Xë7@ðçr`!ðÒý‰þ™‰ú ƒÃÑ.®0”e°C:#:P-!¬7VCÙþœ1h\<̆t†Ùà¿Z‡ ŠznÂ?óaàîHW,Fƒtþ9£ðÏ4¸kVAÙ*¡]\(,†ìgÊHwwï>–ë„B{¡üþ:Ù!Q¶v?ǰõp6B!Ý<êÊ08Ùß6{ ’’•n„7ÜAøgCWÄ/'ø§7C€Ÿ+Ú`‡€´CàþÈü00OëîðûÈÀ`€-ŽØ ì‘(²¿³ãÌ»ßgÜþݑހ{ ýÀÐÏßÞ,p ³E£œ}þ†ÿZ±°²–ž†á]þ?#ÿÇ  ½~‚`q€ ˆ8‘$q/ÿÌ£ Cþéôw¬:Ê ƒ~÷‹»¨¿zöüC¾? þ™L£.À÷7ÓÍAâ 8îþóýWÈÿFóŸYþO¦ÿ»#¨‡³ó/?ßoÀÿðÃ\Î>8êz`q2¸ƒÆ‰õo¨1â·v!hgÛûÔ±0œQö8B ‚Å„@¢â¿H é°ÕEbá¿YóÛnôSoÎHBAþüÂàÂ@ ùp"ƒ;á¾"5»`œâ°¿öøóŒÀi꟨ àhÛŸâ—ÀÜÝa>d¸ÝãNâ?0N¥¶ï_ä ¡ÐX\7rÀíNösÏ`)€0n%XØO3Ù?RÃ=ÜÝqµQW÷¯ó/‘#Þ8ÙäG4üVˆcuHËq¥"«—àÒ{1ʮ݈}ãEϽ‡J²ß÷Dó#'ÛG—#¿ÏÑnˆ”\Ô;™0‚œ,?û§GÊ0NÖ¶ÙÙ,øÒÊl`´:ò2³””(AH«bVk¤Jqdô•:fWáýf";tí{zgŸˆø|×Ô3|ä—tÖõuJWÍý¬uù´Õ‰«šÖƒ€ÞÅR²¹2uk´z¨ãÁ §èç̪˜·È›®3}îU%{Ÿ–Ãòoz%™‡å=Œù 0›"‡ðI}|ç I/«ÃM WkïÇd 2º ‰Þ÷Üåù-šwãsDdÇf÷s èÄôBÞnJ$ÅË$䘜?¡ öo |:I4|:.á]Ö5L×–áÓ/pkš/ÑβQ²£÷{Ù³Ýr„¨îúðKa¹ùè°Ù ÓWªûŒK+ª)ãWŽ‹ùsvÍõ²Jf­/ œúèﻵS‰ ±ñ)º£vëùzð<¢žµ÷ßs™Ü~©ôé*“N‡Å‚¡B[Ój­¼ 9DìKèNOú™._«ä“úÐîýÀ «55Ò†'Qðž¶ÛµÔ¥Yœ<<²]Ù™”^Ze鿬ïQ ¹„Ê1R¢ºÂ¨òísBª_âåÒ‰[&9”Kv š¶$ ø§6Æê ‰ûDyÐQyâÍP¸ÕžüE3Õ°˜`…yXýG?6A‡Ä#¸Ô.±Ð.;¢é@0r‚˜ç ¢ÒVÞåñk]hÇÊ­æÒƒ÷á‹êb6ËߵВ?†½öd’èØ8;S¨ž¢ßév>5€—ÌLP«$¦{‡h3E.è¾rÈ(™ï3§ë4d¨èF ü¸=ãïvö!jø|mÁ“Jýz-[À¬+KŸí±"oXÚÆ--—m²ú³¤uù6݉o~øÍŽf¯¥ºq#c·©æ·²½éZnQ²ÆŒOjç7êC ؤN\·ïfžËÄl¼;ÙIòî8 lT{Z­Þž*À'TéTBå|Ö¿äì%b“”õ ÿÀ o̳×Ìú ô¡4Ñã Ðï; •q à˜g轎ۺφì ;äÖé-êÄËžm’í0c^PK%ÛwùyQ$²äú:R¥Zgybn—¯HøŽ)ø;l_´î‹ç5»·%Rm%fë“SiïN× ­ÀžÒ5•Ïxš ­ º¦–|Ò ³ëÑ]3ÛÄÎ÷ð=­K/3|1Q·(ZŽs8âsZó6âT`‡W(¡14ž»AŸÖ¸Hû¥ùq \ú†ÝøâÂþ['ý´B>¹¢˜ Ü62]7öiö…·tsvßÄÏá;¡!:Û8CÞV¯ð¦´V²ùnò›UÞËgTrØ´…H™Å~÷ÔÒÔ†§–ÞP׃à…µÁhžhiB^Y©Î—q:†Á/ôkUš*¸Uó\’…OKRQÔ0³÷Õôqüó ,-ýµŸ8m‡&ís¦Yßôs­¢’äØ\ð›Å‹uÙÈ# èø3õ­Ÿ{" Ÿ|»ãh ˆÛëî83«Åd—9\*¯1õio/C"2Ø]ÍïûÜ}i¼—0Bpç°äæi_lÏScq‘˜OƒUšZôäêÃo.WD§vÄч|m¡ò ì Í•ëçÊ6oÓ¨è­R!UÔÉ6Í] (§Ë•IQkSÈ;3 ”8‡ÖÀ’,9¼eÉïèÕ´qí.nuÜý´ªAÁðù@•# á\¢Á²–ŒoÄFôªÂ;b×f6s]£³U/ö6¿GªqÝX áBñÅÑpª-§:¯HòŒcXø`\.©‡©ZжØ{i6¯-×¥òû=Ñš|O(ŸE<µ_°‰¹¼ÑôÙ0‘¥Èƒû=Æ%I†‹½•¾ç¹}£‡Ánj©&ÑÖÏ3{¹Ó® =åH)röÞV#³*®[lÛNnv%óg-ñÛº|/Ö8z£‘ßê+£²íã$ê:ÖK‡ V¯¹sPG‹J¿k2úo«ê€¨&û ›W²=q/G·½|9*å¾nåÜ5]€²·³>^®Ø£‡¥ê”tV»Xa:½rÎ4ªØ"Zµ¹@—Å–\zx"ÀÏöA¸Yj¸x¾þÄ6±Á|ï=Mº©s‚ú$°y¹qBžnøøáä«¥ˉ‡îïl’ÚoI¡öZUˆmj߸lÆU­Ý¡åu“t±é·¨³-†Çî‘)ó§†&NÖ#ÞŽ0hÆ;[ªáz§,Ý›Ò1p§£Õ0Šøøh2Õà‰‰Fuû»«¬îzX^¹9ÚŠvuàôf>íjhEÍ}Éòx¦Hí±^_ZCž•’ÙÕ~„DQ ó}!Q¾ëSfœ7CÝÁ^:—ŠeçvÂ-ÞúJÙ%[¯q…JíPÒ)x 1ʬÛ+§c_%é&Ð?(k†tª—Xúw7‹Bã,$<ãÔëÈmÏ„Ü>ŠbÔLy/)Õô¾Âÿøƒ½díØõyütêk*iví¬¥,ÑZM%+µ$TüupÈ`-$Â~jNêph:œ!·½ÐО'2’-Æm»áN¨“ê{ƒ-Ð%¬[f¨)­Bé¾D!_ÝPû±:­jþDÒåZažœ 7+E¹=û‚î(‰ ¼‹ëä œDz·ec^—Ÿiß*/ÒowCÜE“¦êÙÆãésåo–‰Ê·‹øá­¡ÉøEÅ{µó_!âoÛo9\$Ìz¿Tµª~±A墜o÷¡þhÇí:ÉËÁƒ½U¹I:PI]õöIc»ßj´£âñçð£Äèfƒ°ko>’Å¿}ö¢û ñ$—¤‰ÝR««E5‰“üüÇí –W¼k äß>½f:º“€ý>Û­¸ÕÐX§ê•µ¯“¹ïøâ)áÝdÊœø¦쌅îz§fiÉÖ­±üe2µqÖv&‰R±Àv»•ÆÅ•Ó‹1é/0wý~îÛ§ßÕ—•¾­¤.ºê}!†×âòLNODÔ= #ŠÜåMÏÍë¶žBmêçÞ;³Û(YÐÞxß÷ñÜi3øä•…KzO»ç\¤P8©è¨y*TŸ/WÕ³‰ ¦“9¡5äŽZu_ ¸Ï’åxLL)9A×?Q—2Žz²iÎê#6ŒT3Ñ-Oìj60r˜t¤±ÐÂ$úc8å={ÏÈûÏG©É4 !¾½B²q»ôÓ­5ã@³YÃwe…M9¼–Xž*°t Ÿ ‡ÄŸ´s7óÐlK¥|Ûä9÷£çU)f“*:·º^¯½¶·û2¥}ÙIÄfœïÓ+ø@ªcðè¥|¹jÇoB—Ì´ÈÄ®P.Slœ°Ž%÷lÓÀèID+3¶kÌô×B2Ô}ec£ WY‘˜¬q/#V…ëÃMêEÛ^¾ ‹ˆÊE•sCŸÄ|óõÛ… йś¡ÕÛ’ Ò5—í¯¿PŽúÛѳÌ$ßHíº¥e»d¶n,AþC÷ Ý<ÛÚ=–ʬøÓî[™*Ä/5ì2l S;ãÚknü•C 4Âw·k†EYŽõžÐj ÏϹ‡¬›‘ŠÌC¼,÷¨c™îoJõB`FýÂäzeøéØš=#Îóô9éVXÏ£a’\7æò®«I£×8?{¾ž·¼à" &j›ÀVy\c>"{}3m}™†;-Qv®}cCÏ#{¨¸H„hp0}•B°D㊕Ä%@8VÆþò+: &¿ý‹þÚâž±ÔÝ3&vCr^Qcñ™ìèÃ[Uô ;jvŽw¥óÆR•·²nvJåù ¼©yk*´î@æï^lºª–8ïÛõˆ¹A®'žêPä¯oø„<[áÑšI[ {ŽÞ }­ûL&þáx nÆQLñ@ÃèË£ Qy©—ê1b%ã÷Ø¢*ÛÔ˜£›>Ò d0<ê™Ä-4¿Ýx”wºc¥F/pÎ:s•)}á첬€ 6”´Ê†}68ø)^rÜ=_3¥¶›}GXÃKG# ~M<{z¯òw%ìFüÞCùF¿xq¾ª)»Mž4­©žâ@Nà²ñgAùÇ—ZIH^õí{ óÍT8òÚ‹½‹‰>Ùæ'ëZ{bGÓË«¼ÿÁúIÞ3 ñ±P½9¥0•˜6“²ƒnWÖu^¿ø¡ýöó›;½JÚ3ÝblÁsÌ û"šãO/×–Ü–bëŒã1Ð0yKÑXV•å¹z%ÊãøÔzªÜŽþô&,Ø2Ù)2YzÍû^†ë€áóz‘ê†äØpÙ>#±§±ïÛ3©¹ü§­’ÝràQý®¨Y‘‚g‚gÆlúëÀçÎûôÚ{4ËÒ䦵¶l"8æ$âŽ9ÞÞ&ƒCŸÊÏêR uÙˆ_¼Ï.Çðv ®/ë^*·zMk¨£¦O=`qùu†nO›À2Ê¡J—x3–jmTˆr©µÁ8áf'sÎÆ7!é’jBA°ÿ¢•Vÿ‹Taa'³’ÁvWã„6­Çþ戱Í3Á¨S¾±·Lî=ç€Ï{ï-í^˜`Yn%_5zÐî©æ7Õæ®N}J3í-¾°Ñ:k×#¼*•Ô"móƒåU/Ðèú¸Ûéì³ ùà!ŸEq£Šæ!))m§ XÒQ7‡"o&˜âЛM^º•íÂÌF·áœ«r&›ñMÉõ bûo[b=÷\MäìÀ:º$:ü1³.%Fδšy>ÍÝrÁVBÎã´‡„µ¦¤ßúpì(û$;Ìcg}ip²‡Ðß{æ+—ûÛNˈþ–Kg] :ÕcxZfekZe“m!8DŒÇ9wëf°×™9»•X¨{ʵ^^^#4T=Yã´Œ¯3b¾cÙZs5%³§#ªuÝÁB ÉÀ<ø ž˜ô©ƒe½­“ñ³Œ^aˤÃk' CÇ©¨H"QNÝl(:)åªPèœ` í:ËgOës²ñlÝþo·ËÏ€Z¤N…©˜Û„4²îXí¿{ Îé³ÖÍÿ$¶)¹9Ð/ööëôQ9ý)t£¡ œ3é!Ýt.MÊvÏýdüÐ<ÅâY]%â%áLþA— #óa|‚vZ j¯!ž= ñ<i`ÜŽÆÊ·†xlÿ~û¬ÕÕÚºã¸ódX­#ÙâeU„.ÒLV¼©=Wû&ã—Üít`äõ‰9°=¨j€J3)n‰W·!s5#(=j+gøêJa²%;ìÓÉ À¼^uÙé@(£ÉY' ÊÌ”mö‹çˆT¸œÞ¬9ž<ç aÞÐ ¸å§Ï3ªME«¹ˆ£TÞÑL}”ˆ„¸nÙ›ð6“….’t˜3e²‰ÕYÙx×&)'~[K]£Ï$ѯåH ÊZÑïܬ/ÙŠ«L VS‰LÉA¤ž}ËËÏ'®(ß(܉ûÎHé‡19ŒJg+Öó'§ÐPÊégÞdL·Tˆ#Ç”I=Z–Y¼d|hÚâ^ PÑÁhï‘Ö©R«ß0†+G–ÈwQ¯¿S“°–æÝ&0‘Íü¦¥ì:¦ÜLXÓ/»85g6—÷î§¶tP¸¾#ÞDp**;Aó’šK¡·ï®¦­wê¬=ÿ ²éü2ÍÉG€p’³QS–HµÉF§A~¬–_!B ;E›;Å çDˆ³¾Àƒžs*nhL$<>‘ÿ„q~B<ŸwÅì‚B0^,‡ åyt¬ÇÜ’ÏQr`”’P/âgŸ‡»ÇßJú~OnT8žûvq«Å‡¯ŸÊ%µ:c ô”s¸¢iꆨ(çGfí=û0â­3ÆðºéÃàv!‘@(¿NÔ™`÷öõ”ÓæSWQµHõ-ÝÒ¯[ú î61rmii|¨Ði³)9ÙÅE‡k*ohv²?*@Ã-PwOMâ뇪"×›n©‘Gú›äx9Ì•d¿Üád·ÏB’ x¬µƒLmÞT1Á¸V¶×e E‹Ã¥‘Õû cNµâ:ñ>8ÑtÝR›€ [,Ÿ¼ 7‘­ðŒZÇbéƒâ*w>8VŸ>S›ß4‘U–ÀÉ<ìÒû2¨r>&?ù©X¦))Íý/YolS®ŠšÇˈ‘jÃ{åU /”F^Æèá¯Î{ñÞZ3äök1±½uQø×3„yÌK¼ÑŠØ¾‚‹ç‰ýÿÚCv endstream endobj 725 0 obj << /Length1 2884 /Length2 25091 /Length3 0 /Length 26702 /Filter /FlateDecode >> stream xÚŒöP]iÓ c!hàzp îîîîwwwI‚×à‚»ÜÝÝîÉ̼Cæûÿª{+Uä¬î~ºW÷³zïMF¤ L+hbg³³u¦e¤càË*12˜é˜àÈÈT,œ­ÿ˜áÈÔ€ŽNv¶\; A6CgPœ¬-@ÊÅÀÈ `dãbdçb`010pþ/ÐΑ bèja¥HÙÙàÈ„íì=-ÌÌAeþ÷@iL`ääd§ùë8@Ðèhalh 5t6Ú€*Z”íŒ-€ÎÿIAÉcîìlÏEOïææFghãDgçhÆGEp³p6(€Ž®@Àï†r†6À¿;£ƒ#¨˜[8ýmW¶3uv3t@k c ­è„‹­ Ð*P–”ÈÛmÿ–ù;€ðÏlŒtŒÿ¦ûçôïD¶646¶³±7´õ°°5˜ZXòb2tÎîÎ4C[“߆ÖNv ó†®†Ö†F €¿˜Ä† ÿiÏÉØÑÂÞÙ‰ÎÉÂúw‹ô¿Ó€¦,jk"lgc´uv‚ûÍOÄÂh »ýß7kekçfëõ0µ°51ýÝ„‰‹=½ª­…ƒ PRäŸ îÕft°200°s2€ »±9ýïô*öÀ¿œŒ¿Í |¼ìí즠&€>¦@Ðp^N†®@€³£ ÐÇëOÇ##ÀÄÂØ`4³°…{Í2MÿÆ Ëw´ph3€´Ç`øýïß_º y™ØÙZ{¼†ÿu¿ô’Ê‚ Zþîø_Ÿ;À‹–…@ËÄÊ`ü-2vПÿ¦Q0´ø‡Æg%mM휳éŒ]ÿå?ËAøo.9;jÊW‘ë0°2ƒþ0þ–ú_Gþÿ)üw–ÿ7‘ÿ_Bb.ÖÖ¹)ÿòÿÿ¸ m,¬=þ ‰ÖÅ´²v 5°ý¿¡êÀ¿—Vhbábó½’Ά E´5³þwŒNbî@ gcó¿Õò·]õ÷–Y[Øìœ,~?V´ «ù?>Ðj[N Iþå‚6ç¿%EmíL~¯+ÀÐÑÑÐtÉ Ä ðbí¢ Ðý/èélíœAG ö|¦vŽp¿o”@/øÛô7bÐ ½"v½ð+âЋ¼"N½è¿ˆ@/öŠôâÿ"KÜÐÆÆðÕÍ’ê+bÐK¾"½Ô+‘“~E r2¯DNöÈɽ"9ùˆÂ+s‹WâªøŠ@Ô”^ˆšòkÇ `aöG ®*¯ÄUõ¢Õ^ˆ«ú+QÐxE ®šÿ"NW­W:÷Zih Òæ¿fP&C{Ð6þ~¢þ{ d5zE  ­€ ×›©ó«ù_ûß+ú¯TÆøš4¶p4v±1µ)éfVP c;kjÿgaùh÷ç=ÿ–3ý+-F&P7&@G èÙÿâ÷ÚHÃôÀÿÐad%Ú˜:™ÿa‘­ÂŸ6¶ßy\@×Ô Û4}… Ó? ËohñGN~…¬Ì¿¡ë+3Æß†×䬿Ãí\ÿ¨ 0û‚ò¿²c©ÃÜÃÞhûGÈöG}Pë–@д¬þ€ ÿÙè’lþh 4é×̬ £¶ §Ç«N@•l]lŒ~?¶Íþ`ð{$v¯A9íþ8Åø{$ö¯nP {з‚ídÄÂøõ¿"bQéôMðG(Û_6 »WM°€ffoíò‡~ÙáU} .vÎ@#ëÿ”efyuüŸÊœÿxþkfü}ßÜ#h$¯eYA‡œ€6ÿ•4ëï ëwÆ Jâdñº, 6¬ÿ#MFP—¯eA/,­ŠÀ¶÷“ƒ·Z€dx«Y¶ƒ Ç;…¯ïoݺÄÝt—, …No)nW²IÃ?–ü¢QÖ (œ$Ë1ʘÂ"†v¦Å‡¡F=uGš¼ºž@Í}!”ŠýçsÜ掠ÊôñnÊs©L…É© ›[ ò uhœÜKh7Q sÆ«(±gÖ½'Ÿ0 ‘&i‘™n—)­ÒB)ʶ®³Êuh®…q3û ˜·çýf|Uqš¾#±© áùì¨Q}†ZTî[°À¦É9 X.Þãìsp´Ák/˜ âÍôg}SL6f‰C×qOlÕatýoYÃh=Z¥ŒÔ%›½1¨•Ÿd?ôÙû‡r{-• Á”+2c쪩qÏæ4‡O¼CD­§“Ï\µ iæà(&:ì 1ËâÕá] [½—»UÉ1zHŽmQ øhMimVÑž1oô«oÌß_ðqŸÒøyöW“ÁÙ5U®d»Cö1$;¢L÷a£ª3йOî&­ÌžmbcjÜÕ<®jæQÆ3ˆuI<}±’ í]ÏÛ3ðCcS®g»‹è…8#HÑmë5…Ë…ﻜKLHnŠ8ÀƬäÂ&£¤¿gOpç¶íOÆ[ˆÝSBÃÏFË]D€s¯®å›<—u<Ç•#?®P7Gòôä|Ùè~ü¾Ò©­€“§Fü¢°¨AˆÚÞWóÕŸý]dèŠñ#bùv ?»ÖÇQ‚üHK>ÿ$gfn¾Qàœá<ÔŠqâ §0Ø('@íŠuŽáxq§îú.B%RN]64òð{ *‹ìH×þ=ËŽkõ¢(™.%!=|%!CëÖ÷úÙ3š\ßYe +¡V¶ÐN"ß¾ÿØTŽTƒëWô@o™²Ú=—Cä³lp| B®ŽçßW²9­¨Ñ@ -±R¸ƒ4ä,™WÞ ë×7E7§‰w&0k‹^ꘈ¬yh»ÐƒØ"ÿ¸á,(÷†VÑ61*‰ÿþ2†ž~È‚Z\o&FÏ'î‚ocGEÒBa˧lÀ®ÚöEÂÊØz8¾„]ëVEûØPœÒ¯~Tm¡µw5ùçô1Üo•±)ô®¸6¡¤ª,öÑÜK‰R2ˆp4¢/(:@|,îM°R¡h8ÍDæÎäùì€k;»éàl-#̯Ñ`ÆI‚sˆérø•À¿5æÉ(¬ü¡ /W±Ó—Ø¡Ì4 Ï\*•(;?üÅšòl¢†† د¸Eoc/Ç*Í®þŒô¦ê\˜]6Œ”H,_Õj˜¨dq‰QõiíîÚé¼,‚FSŒ &j~9Ü»#š—„™ÔÜ*šÈ–&Û5έ¬?$xHãš’ÔÅõW†f¼\L4¢˜¿ÒV •1/Ñ¤Ý ôUv|ö0dÈ*hŠOqpBÅàéBcj‚aD…°úÇ-­ŒSâÀݦÇòÁgtÕõ‹HX†}EÞpBwDt_L„Û¦ëà››®¬ÌµJª˜·îâ&O¬$áÙ™OývüLe:¾)æ™fP×[ÇÿuCÒL@Y‚<‘çåMsÜ1ÐÕŒã}@†X žÎ†ZU s÷…a¹ ‘‡Gó×ÙÄ´Lc¢\÷Ó7‰F£²ÏÓkô¦>Ì+‰iƒ½Äâʼn(å;¦²Não' 5ÔUŸ|¯kêê5»jbôàý'gÈ,‡{‰$ZN¢ä%^`ú‡?êßÕFqï†}9÷‹]—ªwÍy÷=@w‘Žtîm Ò…°9k O°2Ö~ÓÑà·ö3ør¬ ØTòjZ´A?ãÈÐ=k;uðjYÊóOÐŽ`u…$ 3c¶š^– ÌÞÖ®ø’ÖÙO~«UD[Õ9W ‡^ _¡E+“OxGì wõàfÍä­ 2êŽÓ6ìoïÊ9\<IÏ—.¾¸À™ú;t~`m÷ð%zZÒʸǽm;|§JSÞâœMµmÁ%qžÝ"Òµ@Y¡”ØÃSkyvƒÆà+sÙ]í¢ç _;ëò Ê I“ÐÒ!û¤zä:ÛF€8湡‡µ:(ãAæ/§²^_ËÌ‹U¡q°Êßlƒ&w‹A;Á|ƒo±1#!°ø9Àt4èɪ^‰î íêɕ¿׆•bXy£C¤ihÎÚã‘‹=ã+‚æÕ´ðòn›½½ÚJqV}ñ´··5sŒHÎôÑ“ðÏ«1Cë§p«,UŒå¶áú"|>öжMKÌ8ÍIñÁuNdï fõ~5ˆK_s³–Bç¹õ4AmJ::œ1› ®h¢X¸”ùw,mvžÿ?9ü…ªéˆ¼‡/ruÍõ)fÞ„à­R>ä ^Ðံä3 Õz£aI^£ùú(§öd¡Ë Œò§tv0J—Št±¡馛Y|­|ö:„{®CoP®”$eâK³%2«La‰d›q·9Ai¬§Èú{ÕÑŽÏnMš1~>•iqœìtæu§3¶ž×XûÍÛp{Á \n p¼¡Ê ѧÃw«S{ôæÙpé3=Æ OsP ú#µ+G"‘ ~µ ‰fæv¸á´¿94$ÀEÈñܶ8—1 ÆDõ±ø¶Ó/ð¹åÓí玴}¢^ûæmÊ–m˜ÓÇd[êw^ï*­ùµŠ=/¢¾  FñÕïpÚÓÊŒ“÷å>@žH𠪋È: ¿/µö;•ð7º6õè鼟+Ð=,LDî£Û_#jë$¦–ZPf×6¯IP ƒ·ûæÄrŸüלஇÒíðÖ†&ÔyTÞ«D¹œ-R6×ïÊ8*š($ X2I/,#…Ç;üi`£ׇ7w~b˜&jâ2Ó4v0œÐËÄŸóVõè닪;¡ú¯ÁÍ£»‘Êîî´Ê<ƒEŠ˜o€¨©iY»²³|–T<êæ›²Íá|/3_û_|×€«Gj"RSÞIH>ã…ÂŽ‘}˜=*}‚}»ð¦XOɹq >Üo"‰'š¥¯'HFbU²ëÞ‰ÝÜëìà<ÝèMÆCâã@Âs§À¶yï+Dtº%\&Ù^»ŸÆ’)2™ûŒ¸ÝIê?2_*q•X¡-Õ;Kž¥çÈ‘9NÇwT[èÀv×ýÖÝÌGµ~’Õ^£ëoqÉjׂ¬½“3&ÆL#G^DñÞ¢8R§JN±]ò\brørŒ°_…ëH`VìsGîþ­²FûCOU“ùªú4tÀOÓ1‘:óO t³?T ¨ô”ߌÓ„غù<ÑÀ‡kÉÕ‹¢ ƒ_VÞÀkÂÇ(½ÖxvL^Ÿ27ÿÒ«u>z~Ö\c5ø„)櫟æÞ©šéE¡WÓ,.€¤:Ì& ¯C˜¼³xÍ÷ÈÕ¯¦ÿÑÏ7UÀI-Éàƒ1Q£Cì5‹s¬:ïÙsÖï²)–n 94—r¥°R4@%ú9œ)ðQ5?ýÞªâÔì}ä ºÃ$ת‰%I~Cå"z¸ù[‡^øüôf';DÚ88iHqöOÄåÞŠcaÛ%÷[­sO'ï@ŸÜ.™©jå÷‘ù\þ¦%S6Í…‚Ì'Ÿ¦O•ᙺx±c§µ˜ÔÍÆ?J¥ë,þÀ (Ç;Ç0>œÇò¼Cò†tn±dïIÜq|ŽD¯h¯xÆ’rí ‘&ô‡=¯ý¢¶üùs:\òcšbpµöâ2j»Tàü¿ñ‡k²Õ*Ø#¹¦E!eVÎÐÛ öà1%™ÄÓ]é?ÌvUöš—6õŒŠÕ»a (¿S“¢Ý Ënw©Ð#£ã7BôÐäˆË;5=óyòCÉ1“¸M$…q èÃ|àh-àlž:ƒÖçHCO‘éÒ,8ÔÃÒ´Ø3KêùÊ[ QÂ%âA]]‹÷˜?Æ~ ‰ž0ÍŽI(°·cVinª÷Ó~ëG•ÑMíŠXÏ"EÓ=c"ãQlØ^÷݆4×[#ØØ:üæ—ÛK2ßëeR`ï6Œfqo±OhÃé?¬êeë9èæ¬{Á« ¿q„Q£hVT±WÌ—SÒ.Œ¼‘·Ë{R—g+¡3éY+Ç Ú™IÚÔéÀÜ‘†¯X®ã&s^ši¢³­ü¡^½Q»þ}ñÁjDBˆÄh‚ŽÐWü^”ûc A_ ”\Ò/±fô¶ËM»Û;ón‘Ypá: fEÛõ-¸!ÿMš¡wæÚÂ䈰µÝY`YÞÏÏÀ½jç• Ú(’Šð5‚Êðõ’i¡ýãt©¦øá]üÄhR< Ë“¯§Ç5SCã×HóЉ¸Q*–õy´ÖŠÑ ê­øÐ‚½®ÑuÉZ?¨‡~þ¬)`Júvü¾¢gGXÈ 5¾›¡Õô|I:§^Cî†BX Û¼öNªîÊ£E@ú«-+MkF6ù¢ç$@z¨1 ñæú.¦xxsIHÈþÔ)†ï A“!ñ‹ÊhFëPb ºŽKòô Ú¸áS®²*7D¸O¯[pâx!2bj¬.õ§}O&–bã›ë^Ò3¦±*èÒ7žYƒõ¢Uvªwe¥ús Ùh’c'³ZAMÖ¦ É•K¬-'«:»GÎǾj¼ˆÍ䋸ŸrŸÑÖ¿3«¥½ OkBDm¸Šnsï±»¯<€¾lOv<âWªù|2»ê€?£v•ïO/ÚžÞײx5îÝ…äâhŽOd£ìCÜÌFý´Èe£žÎ1nU{±ä`4œBê/ï×þ‹µ¢ˆ¢ Ò¸ŸYW§ÀõýÁÎϾ(-ßȸ W²…o¹˜8Y¸)cÌ}Jhu1ššNoÊ;Ç0X-Ö ÆÏ‹ú4ŒL t“®‚<Õ@„¼'/(³öý̼Ÿtƒ61YcZ€#^•‘`µŽVÞŠ6(ÒÜ*‚†çHEЄ᳓Z{@to£8Pn¯±¿F|ŸJ-:ZT]¥«£©Þ¬c…ç.ÔIs$©ˆø}DëQru)A‘7ÅN%³š%صÙvl-æP-ðZ –ÇúâÆÏL¢–ÁF™5…˜ì^BHØZ3¨šx¢x”ØC)®&T¨x&Ã6?ì‰:­È²a&v›/šªìÀÐ~PÆÝq¨û˜oÕE‡˜´’R]¨yéü\°”Ü{ΰ^ö׎Zº¯ô¿ê­®LÊ6¨Ž´J½©ôù_Lµ¹Õ7c.Þçz…éQkY3s){¬¹yA-µn½D]isøH(÷Œ¹=7ݘ¤ž—¾ ò?ô)F-Ãt¡ŽÛg¦£‡|``Œw¬Ý($}ÛúôCX`Ø«ãKF Nnòȯø–ùžéÓZð³Ÿ×÷äB‹± d—‰¦`ð™Ž8R€HuÌÄ6ú€¤öc*d×ÄÎ3f¦ï×­­9šß|§ú…•·`âÝGÇ£u™4—Ùo¶tÛåz7¢ÛêÙ©Í’YÍÒd$! ŸÚ± Ž•Õð´†Õ‡Øw³öSv¥Çg­s‰u?…ÊyؤÀŽ3Ü=ÓsÇc<ò›=w« K4BFíãž‘UÃl±ðÔî4p;Éàð)K·%¼úE&Í@j^uÂ6~Ãñ&ýme™‚XSNôMk¢ZKñ^ÈŽ  í%¡ …‚+ù`öbp<•øò[Jò}D‚Êè7ÏœsªÏ‚EñB®¥rÕµMÈ‹è‘ñýq¢5ÙÕÆsµóHŽÞœ¢¾I3ÙíõRúd@áý³Ä¹QïC)¹‡îÌ—‚vHÿŽØÉsƒ-ºdúyïÌÇE»æçeÉ—"q ¼šξ,]Ç †5‰×àØÇü2lÀ寗O‹Å5ËþXŸ#Òu]Œï›¾¼}Já ܵ¬Ï“‡+Ï:Y#õF½Ù0TFF˜×—Ïò+2xˆ‘ xr+~ØÊYM³:[ŽÊVç*…Ò/ç|#ÐOFÆò3ÉBV´j çK ¦ØžUH®"¥ëÄÕŽí¯º'ò»fÏÉ=ÖÁ«yc¨·O'OPߤ~ˆe(¬*Ò³c}Õ„›ý’ãÓºxl’O%‘=©5Z&,êźèœì™æë³YKhˆ ½2µo³n¶RP‰§ôâOPX‹T—ð~y¶Õ¶ô®R ª|åegýŒ­ž’­ŸïùhÅÃÍyúɪ]r×ây¯eT¯²Ëµçw@ó°”qL;îÑÿ+Äø!¾{_:¼zeS'îSÉâ:ö$}e íêb.¹@Nüº=†*ëjfjÉúm€¿vï"ô7–±ÍÞnÂCú¨‡…°i•rziŠjÈ:V]P0/­²¿ÐÒa qµÌ_ÜÔ«p´¯ ºRn%Úó\‡ùµtN8$ê¬]Šd ~ŽÊé`wÙð‚Üç5F$VÑòd¨IwŸÅbâ·vºrˆ$J,áƒwÄ#f¿œ¸cÞT¿m­Jq¶˜áó„&¦.è“™[¥ÍÞ;«Ž´¸¸ yNî_3<ä(—±î¾>ñ\‡ÊÌýu཮Î1zÒ|`·µSð1}°—!0t¿,;Ö…ž8ÔŒ1ÍÈèÆÄYìüq^]/ÎÊ´aøØÍ îêÝ(”¿†!ÒS¸›¬òqŸwr]¬èf7i½%_Pß#uáÏ7;¨¢:”ïáM a&Á¤ñx›hJ¡Ë"LŸ‹íôö‘™EL7ÞæôHPï‚õæF÷-GB½é¡½˜‘W‰¦õkÜ,ã™dyZcJ3É*™8sÿu’ÒHe2—ØßaNe,fÌræo(èí@óÞ Æî¹ôã;­$ggJ#‰šLtöR— RŒ3G/ýwKC¨ü`ü2¡—KÓ{}¹­x6x_¶ ü.WÞÒK§2TFcþœñYÛæòñ7€Oз3Œ®ŽÔ#Ö¥šT.mûê<å;>»]ƒO‰žÑÎrtT.î"T›•ž¼¡Â…›éXŒë¢]%Yf×r¦ˆ+ðU\ÏtPÇÊgÔó¶ ä*åJßí4‰Û³LC4–n}ߦ’ÃèD<Ìl,â#:µmRÔIm¯¹»2œÃg›kEß+­¬Ù“8Yߨ¥_f-™øf€ŒalI¿Fd¼pŒ¤gÓØJò`mùÞ°G¦hs;\ûù" ·/îM‰ˆeÄâ/GòàèÓ÷p×ò/G>•?Ø)v ‚øA£ø_½1Á«äNt»ÄY†*N…–¤ˆuÛlá¥ÀãUj­¥TsS§}øš+½GýF‹<' –ôk½¦?íò6Îñ](1Õ©w¼G'#Ië˜P[ÿ¢®nN q:)+õ+RÜ™¡uÉÔãNõwq£È…ùÊpN\«‡Qã韫8?QmB)kº¢™´xä=*F.|Ûd[5™°0gd FbÐk4L£§rɉ çÚä'¨w0£Sm‹ý¥Ñ€eŽl9 ݪle°‚¬¼;5 €•áB—zÔÈOGóbâÐË¢ÙKé1“ªÕçÑVµÑp¢kú'h¶}ÊÇ•ÇS•F~¬î¸ƒÍø¹7îoâ¡™é°ôg#cÇ;7u3ý]Ÿ|k{í¯âÞq„éÙžÛ—„QlEÓ z¥aÙ¹Ã4}œ³Ýûd<ägþb«àtÆ;}??5ìx+Û奒Ø6ȃ˜x›³%èH&äXÊ¢Hóm þ~`cYñ]y…ËÉú™ˆ ­Ý»]¾+@‡·k0#’NQýA¿é¦ÂCð&ˆl¡‰\³¹¼1ä;ÚéDù‘ƒ,ƒléúäf1˜2yâ¬Ûtþ5Š’ÅSœ$¸»Eúí;j#»FúVU>8Žh×ÜŒ¹3Ùðkš*ÆñŸˆÏ× .wÅ7çû§‹µÛÊY,+0ŠüdÅç³kŸQ7ƒ½—Ò…„: O´ו̥t¤f…–‘Ã(ž¼ÁGä¸ÛŸ-e¿þbü"ß ,ÊÚŽ®iêÕ“=xý`[+êĦÒóšµ6ú‡p=¤Ôs†Â×ZÅÅ3mJ+ ­Ÿmié/)Q(ØWTU>Úúå³;‘ ÑLÐ;e5Û¹™ 5>n·—Ú¼Gž üvEý8vðö0,ìèÃÅ“Ž$Î\cÒŒ`+²ÛíüHfÂæ­Tâæ=É4¯W¾ m¨bjªÐ$1!Ω Z¨Ü8Ø_d3êÎwø#s žL7¨¸ùÌØŠ¬†·õ0*’ ?•Æz ë¾_fæäª=É8»^•ÍT‡©Q/•rU뫹=Èîœþ¾,¯žÉ}Öÿc,=S\gE‚¤ú%g¤ˆ3¯ZX"upyA¦¢Ôò´.¬ýyTLBëh ¨cšÃ •.ì`ŸD°Ñäf [äù@f`¤g°ñ~ˆIÆ»¢k²¶ï0X!(HÌû€kw_ÂyChìà<Ï ÇªV»T¡¶¯â≊çMËߨinzqO(™¶Ã>UåMázñýLÁ»JÔ¿jÍW²b˜×˜E¾ˆÕ¼‹õ“ŠÛ;êš*Ü©ÎXM̺ÎÖDÿxhqæïU—ôYćdèïkÌð™ÚÅÊð¤ªm ˆºpØäÒÊ?pÝt÷Š"Ýp°ó­¶¦cO' WÆz„@by]ÈÄå'¦ÂbÇ Ÿâ–O²É^ó²¹Jt44ùZ÷Ú¬Êà{n!ìè¥o´ ¨„Íù)‹?Ù)úÅ»gÛÖóMú­'GΊ52 àí×”æuÛHÝòöî|gjà§W ×ÜÅC~[Ñ›¥KÒdCïÓø=8'i R]ä¶©œ_È«­¹+Omí×[ ¡vp×v[BóÐÍ0Ú{ òW¦RQTÙ3v sÊW…Ì™L«|Ì`‰ÁºéãÖÜìw<¼TúËwçúy›òãÉÓƒ±¿‡ùB?ô·§áULÚ9¦ÅfÚð<Ó˜{T<Ã- †@k*/À ­½¿qÐ =Àìížv§–y¿Ù¢È€ÙÐ1˜ŸP&^mªîÌ“Ï((aÀŸVþÚmê£üÞÍñþn,c¦ŽÓñV—~¥ë*Mòù£FkM¹°¨ÿ ÊûáŒéÆ1î¦Q,-ÊîƒòëMûBÑ”8tµ¦ˆÅÒûÔ;lÙM˜¢7œ³Cß5Tx›4Ú(9ð%Y dž:Ï”#³â €5&T6{.òN‰Ë’?lÐ…Q·á€Sº$òuíe^*6äm‹ª^²Ò_)·Ä2Ùœ|Ét&`7˜IùnÐ&÷F«óÏ ãb$ÅÉ ¾E¤}ߢúòS'ö`×{{ûÚ Ep%óéýÀ¾WâX‘â•Çr1¤¾DƒúGDbñiÄÛƒsÅÇÀJð{=¡P\œ©O]ï5¤<"ìR.öBþÃZÙÝ6--acpü¹ïÄ6 œUjw&®r3zL£¿ÿ‚šÔ0šOmøˆ0ä¾:%TdÂ¥¥L“Pá¿iR3>ïy6¦æP¬z¤àlPµ~׉¡$Ì ûËdžyõï©*ÔæMÕ䙀Ljø·tÚ«ÕÛäf“µn°î6ÜL‹­È {‚æ×n6’©ý5u‚‡¦YoJÍZOYí§X¹¤0&I#~’KÃ᥎VÍ_œ(yïîH‰ÌYŸE9öuok’qd Ðy·'Jót5öÕßÌ/ºâ¢»öC _€‘ÕTÇW¬}ßwLŸ“9NÅ•ÁײÜ$ˆ`ù}¬ú0JK§qÄònbtäBëQP=D?ÅóÕ‡{L&;&ʇxa?£ &õkíϹ{»6:Æ^5¼–ªfvÒàÑDs9@q'&ïˆx£¿¦ìuõCf4;7[RræþØÍ‚—fEcM‹‚ R&볓p^5´°€±·r±†2¿8Ž_É]z:]u’ØÅJdÚx±A‡i'¾´%Æ¥—ÕMkÜ[5ìè.ý ›hoâþ¬=ñbr6"ôm1¤ÁÖ ¯¶£1†¡Ø.ŸdªÏ‰Ñ»¨¤ç¯èGÐ:õ$)Á”H$ºÌà%³Ü fÞF¤ÁxË)ÞF;@ˆ_~ׇ®ù…¾Z¦ñe™É?×Ô•üúÒ±x­Kó'Ñ¢¸Á¦–7 \Bi^±‹ñȵ>G<ÉÖ¯`fääTRÔV”üøE,*h–g X졬LýµÎ) Ú÷òËÀwüR¸#~ÍC„Z¢À\½$ÜÓîÈÊtí›âa‚2}L¯¢z©ú¯“ã¨åõ´]—wë{rAº¢M iø¥#_+ŒÊê4ä­ñûÜ!\ñ”t(zF©Ø?¶pB Á2(]ÚðUï„Å“p¢u<=ÿؤâ¢(s‘û‚û†-†okˆÔ Ú¡sеu¢û–Hˆh.q{™Hsµ‹Ï›d¿¥Ë7V*ÏÆN z‘[¥CTád sd ˜å"-DMsáô†WŸ·+­íÁ"3T>˜Ù˜}^߯ SÔ“×^¢«u?PíWëíè v,ƒ¦å^¥épÔÖWP‚I¨c™¥a‰‡‘‚†Ý½ÙƒWÊ… ¿×ÇéM âHLqÄ…¨>XfÅJp]Vû/Ëod½–Ÿãé…ð6k´ ÌìõÑqór P`± qˆ˜Îªx×–Ek `!Âu=Îà½ê t÷hy4ˆqOûS1¦­Ñæ2xÛì_‰tÝ„Ÿ÷W‚Õè!À=ç¯?›’Ét­ê8»èª' 3;ÆTÆÌJ%sƇIƒÉyªÓ·*LüèZLR……çØ8ª(pªµ8;è`Ëè–áÓRFpè,c€æf‡Š;þ¨ÜO6ˆÌ‰Ý¯÷Púèšk(µ£ØízàúõóÕÕ|p#½Û˜ëëŸ+‚´´š0÷»&òÉ:@¥£f'Ó¦³í‹ ÁaAçLeÇNiΣѷöûvðô]~~܃~{Cb²¦;ÆPz4šl«ßwäu;èÉ!JG ‰AS¢éLfL“Ô]ÒNLI× ~9ª«B¬‰¤û2<Å\K!¹£¬ä:ûŒx‰A!~¸¤|ƒ\zsö#í˜î‹÷÷óò;wÀø¨|ÿØÜ¸n)嬜}W½ îWÊÓô.í¾Ü'öõæ¨ñ¶Ém/™&ÝÇ6{qþĽééÄm6ö‚íðߌÐ-£½ÄÌÅ!±-,Ç]Õ¤±ÌÃRªjø›™RøØFKÅÂE¢ï™¼£ £è³Ä»8göñ¡”!y/1•mEºì¦²¾ÖnPw7”ÌR¦XßXÇ/(dÄÂÔUF£ï€’IŸo²|ÏbZñ{Ïé৪PHz­¿)˜¨ÈÎL¡Rwaˆ"$kò&Ä—Áõ·Hý¤™ÕVç×¥ÜxRïÇL®Ý+©9e&‡ÍT²´”^‰Hïã-’ÒsÄsÖ)Õ{j!Ûzt<dÑLЂ=¦åG;I –u „³ímÿëÁe9¼(ÑETñœJ]c¸Î± oEÅ8B[â!€˜ú.c†ÈwFìº ‹œÒ|Ɉdý…2â<ÖštQÕÍÒXšÍSËKÈ:|Qq¾£RÅF²Ÿ{᱕Að-X$ØBà*^#€íT•dÞ/xžÞhçþá|}‚Êdv¼Ü£]Ÿ6…õñI&(übËük³mL†+»C6¾ì aê³½×vðƒõå\À9Î6ÇžuãU£”•9nõèþÔͱ\Oy&¹»ëžVoO£S›cYÅ–€¶ösÒŸiÀ§Ù ³$/ú ùîö¥RÞýX¶`ó8ñ´ ’Œ*žÖ¼¼G(÷ùŒ²˜>Í(BS4ù»jÕŠ3ž¬Gï‡Ùå¯Þhßáb—P$k ßÚ¥TËž˜_§Y{äû9zµœð{Ä  s©üm—9¢Õ}Ž¥ KÈ uÏöF1˜ ^>rޤ‘ ›¬[©Ë{&ÌQùåß"ÂÓ2ä@©y%ó¡a牒Ÿ’C£ý`W}ü®%^¢˜ò®ÓxÓ’ÑÜqX{Û„D–9'àAL£A=Þ/lcɱntÃo‡$Ó7œ0ž“RŸ¯6ƒô­c2=*5í©£]Jg†Öœ}Ü3Ѳ¤).é~SDQÇà3þ[„°‚#¥,«VXËÛP¬¥õqÜjñwÜe3èÅ¥NVó-·äž¨ø·Qþ9qJèìÄÕv¡Áð¤HU‰–Üéš7ºhä™]¿`à^ˆÇ,4G¶éxsø £7ÊÅI£¸:½¢ ›E»uŠ^¬¢É+Ÿ‚ÂÃ=ý ÜÁ•+&Éi%?íXdyoà%­çÜr*‡ÖdrŠñˆO3(†:Ö´WTAŒ¿r?îˇÂâ ˆ{òFvÓ´fj‡À â¥î@°/àL+!…üá¼®f$›šd3kø>>»Úô?ÃÄD‘;Ëèì˜ú¨4Àïö^º*|Þ)ÙÊð?J÷o'ÆLS†Pð÷;n 6Ø.~»šaZÂ,^>ŒR›9Ï~éÁ®Ò ^}}e•˜L×+ê–_£á¤€­ê•·³ƒ€_+I@vYq”O;‰Ð¯¬^~EèºNëHNñÅÍŒ=öÖÒ˜ÎSc:A*iRtKµÅíÅÔ´ƒ+UÁSí Î0%ãWq|øœ™ÏËcnQçt+i,Å+b*¤äªÛÛÅp…e£àVl®¶[ɤc¢÷ŠÞÓEnYÇ©|»{öÏ4_Þ1!ÜK÷‘Qi¿àemÁVμlæÍC›'y qÝì¤ÆŽbÈ:"pÌ·ñÜLÕ)â†Þyk]²ô—*j“K ý‚œsÒáÝüüI®{-jÊÙº„×ül »s¯eÎv_öè>GãZgHI`§_øåJ˜¼ýùh÷Pºój§­—˜ LN™H‰â5¬¾¹I… –긟6Þ<<Ñ”Áæk¾Ñ®ÚÊ™'z¼Â¥{ÇŒ ­ð4×\±,öỆoáÍB“^Ô2üw cžÉ nÖy<¾Úð`)tqï´ï¥Í«:|"Ç9€ûjѲ¸)Z¶Ô8î$g„Gÿ šG«…´óXÎé4ñ4Á Y—ÏŒ–dmýÉŸLùhWXKèÖI}Á`é»Ër‹€OjöÎä°Ý;Ζ’F|Ûõ6w!È0G€Éœ»–UÀKóað›îcßáüäPþ•ßLÿ`¶z KÀM8F(P3Ã÷ˆÀ¨$…™ZXÅ&Ö0ài㣪ƒyvQfì ½X‚8û#hß#E^I¥·‹ V3[ç`çAøSö¥öøµE߆ ±'d¢|—éçÊDqÕº¦ºÚÖÚ¥‰¡i¯ûÂ|·@jO6çw8ì0døíïT?¨qËì3[ÂÊBF|´èt•ýðòŒ­ÏD¹+Šwj:ÖTCëØJV+N6M6‰ï+í¤¡hôÂ]p¯û*ë!þ§ï»™LR˜t^:žÚÛ sw;ÊÚ å;°¼GMŸ­WÝÊgÚ’B’IV櫾í pRul IÅGîÍG9‰ xøõEx(F3l¹®V¤ûŠ…L}]Œ›ýæOIJñ±™qEg›\SG½ ©¾ §Y=dPá"›RɡŤuš.ÇÝ›cz«ÚÚ;4ªÆ£©˜9ž£ƒØø <¨ß»Çù9¿‰iLÿfl Ô¤œÝpil"Ûuž3Z;—ìQ7ýÇJ,£™'=%”l¢ÇŸÓl3×y¢=WÈœ±Ó&o]fæ:ì™¶S”ŒµÂcV2þþJiÑúGSm‹¼6¤ÛΪ½4¤,é„<_†÷%•›0ƒ¾KsMQa‡L{$Ÿ ')Á¯rDŸûõ–bݱèEñ*nc¢îÃZ–•Z°ÓeË=]+ì}GÂH©; Sw9 :ŒqøT½!3Q´P ·×:(²~tK§øÀ&s19è á`²dÛukHgy.Iâ‹Ù ·šRþäP2tð„ ÔÇQÞ…Ìɪnÿ*öÐ »aЍ~aôØC¸yîPÈRœsûHv &3ÆgS«µ%šE^›¥ Û:òŒŽf]ìkqZú4±ƒòŒ6šâ¡<›Î”øƒWÎzSgÀ6ß›Û†Íø ,‚ìåX%E‚V¹”®‰ÉTÑÚµ¾­/“ó+,}7Ÿ»²<©±Þ^dÔÐÓ ¥²”P[—Æ•;-<¡ù¶êäÚçN†š>ª,é…«‹Â o–T~j³t:3ÛØ–}¨wn#ƒí÷,©PU'†ß+ ò…©—õ1éA‰}`IhøZH*@zqmáWF5¶Ì]ï‘ônº{[žs•b¨D>;Ňñ׳»Ç³—½›¿­´kC»­óÌj”•‘@õ·xÖ76ødARŒ\_<Æ >¸Ån—ǧ¶@ÿ?Q&®Ùvë× '¯¸Õ$,AXP~wžh×[Mw¼S²Ñ¢vs"2ßmZ¤ìˆõ)ˆz6ü…‘_†—Ä«öq¸Â5*O²F‹À71}XlÀ÷‚'€¥¬µj8ÙÎÑ;U™¢§ß½¡—߯{sÎûI\‘5?u D2_‡)ÞÓ/W߉þ@‹äÔ£mÁ)U,…Ö&×è3VˆXGMý@3pˆõÆ?júX¤®@u Ù€“h Ï!ÿðfæl8Bû畈¯ ËíÔøŒ‰“Á.Ðpù=¹±Ï .òd«*ÉŽéX?Ô¯€@^@X–&Á[Õ³æ.Ø…_=^šÏw³ýD+!¦B9z#ÿ*认çžê™ËìÌò›Tk(Ä4?~™ ^ÍbA :(qKëô0oÍð"b_¤hÄ} žæÝf£½‡°ž<øP†˜²§CÕ RA«œ 4²±4(&oâk‰·Å3ìT6éË^zâÁœSÙÃÒ¯“Á΀7©R»ÜY.“(¦Žº0JÉ gìÊ/Žw@ t95ÃíÙ¼øX2[ñ91±…•ntt+°Œ|WÍæü°ƒIÿó¥–-b£¥Ë›íB¶”Ä3—™¡å÷x1üÇXÐ%æß-ôîšjð/&õ Ø6®<¥ž"KH6€†›¤¶žeöLpá:‿դÓË[®}¤ HÇô·–Yw8õñfŒÒ;2­”¯¢}±pô™„G@¬xÙ¨ä¥yzx[¥ì µ+Vl·qè ]¬ ˆªÕ Z‡~µË»åêLÆXx—­9êq®–Ñnà8<¨Èé£ ‘,Êù„‡d¬°g™É…î²™ÓCIÉ,k­B†¯!¯}©ˆº¯¬³lcTU R3þ¿—ý¸¸÷/—]’Ts0šµ×$§±4šÓ¢pqqÔ:¿²jãÿÆdªI¼3LtM‰ÀFƒßóá%5€RèËè­x;þV É[ý2XzŠSØÖª½f9Ù ZŠ ¼kYÊ ¸9S~|E@.>Z§Ëô%CßU[½° ”',×ßSÄèÐ<ô úž$ ÕC“DŠ^R¯}N›TÕÅFá/ua5@o•Iü2L[{œæî]‰ºmyw¯eP"˜rÅkk2ö8E\]ÜÑõ¤VÉ)$a÷€E™2¯ï&ÿù\Qr]t3õÿ,ãyqc*V”ò@Ïãœqb_ 1Ì1 ‰^ù6_3tøÛ \+p¡žKÕI_ø›¶Ê zSÈ8µM "©;µjÝDh„¬fõ)å̆VçˆÚ™wÛÒ·n|BæØÀÝŒ'r®~+J}x ¤ÕT4iót·çŸÁôÜ%¦_"|Æ\ÛJ¿åñA»4«2è*™eßÊuÞ£Þ_h×þ§õn‰h=‘иۜÑÄv °Â=Q:ZºAñí\÷]àx‡ØÜÁÒÙK·aWM™~ióãy‰º‚¡…Q`š%Ì2ŠÄµ Ä1zc`Zú!ÔÒÄMQ70b#8 OJ•cëpçr$DÒH¾Ê«‹ŽÞ–¾Lt¤ô;ýDÊ[ªY:D äú¨­r\üÈJöÓ…“Û«5u±ªøÿi)j  §þ{ªµŠ©„Y ùÎëZ{$†åî˹j¾œñÎ é@ÁF¤g]¼áu\¯P”E•w©á`ÒråîwÛQx3‰é5ÒÁ¾¤XϰÑjµ|×}%æ•ÄȞѬÊ[CsX0…Ù'yòøþßñ¸íE”6ûÏ]Ûy„6‚…R;öq QÑk#‹õ¨k«.*Cñ‚ºã6©Nºx§iWŸNàèÈà G½ž)ö¶å¬ rµÙã­šv0×]$¢Â~hk8 ­û.”ÿÍŸ×aG@ؾS^²ú›äËù‹,¥y+¥¯kWŸ«qͳD¦òQ¡PÙwôv_ñèͬ¯¢áЇ€ªmžCIx™‚ÇeŸ±žœ§„kôG¢"±DK' š!ÞÐ=ÀI¾ÐÈ7šMâH¶AýulÃíG°öE¤“ÐÚÌÝmTg½R6F&½3“ñÎÀâùÝ–EcÇÒíï`ð—ÄilTšÆËìlý ÏßîÅ+WLú¨­çUÕ;ùbË<è©Ô?]°xHf³;Ôóy4Î^RÏ9УÂMñVf5ŒmY™C ¢Þc+UÉ,iù]7º³ä<ÀX-®Â'ÎG>¢p¸ ˜ñÊHõL#:*‰ƒç£Îòö³_dž6+yâXs’Ÿ²¤0hJÈìðl›ü®Ù¡56‰ÒÓnS€¥ƒ&é"þÑ“|©b¿fJ¾A¦ Yµë"mCGn­8îÔ4µ—ÕE4ºCÖh(ð¨8¨ö%©ß…N4]Ÿ:„Éy¹òNk[̸žœì(njTfÏ@ÒØ·žyœ=ìKzÙL¿Žjˆä…gëyç”;ñg]pÊ‹(KvvH¶`Ø€â‹?-„; þå±ÉAÉG9Íý…ÄAÀסÑÕ`)EätH°TžþA$ˆÇÉX#ŽÒòš×àn- £‚ •ùßRŠ.C¯–É-â˜ÚÏÿ¿WD¬ÝÒf@Iìßu/2„%û¾;´­wüo¿î/£ò¬]È$ôgÄ6¥¸£ž¨mÇ£€¦å=ÓWÅ;¶¯ Œð\é­Ù¯¢ 4—VÚ˜ÝSIê÷ÉïyµzÚ³þïT07ÑÚ,B¨¢>ŽŒ»vw{.öìyRæÒl%wHF™{ ¿ÏŸÃRA¡ü(fé{T4Š¢äýg$y)™mt(>…Š@Ñ™÷Fìd£ÕÏ ÄÈLé'õ€4«˜iñ¬¹ëÕcD0åÇDéz@™÷§60õrïÓ©Owî þ2íÞÂ/µ$XfÇsرôl&Üûm5>Ï|™ÝïUuÀ¡Ûdw[{M¹@,ÕëñnˆRl «$ô”Š• ôd \ H磠nè36ŽLylà±H›óùE€c…6ÊãƒûÍß !õÀ|£Ä¦þ5Ã#zªv¯óz´ÕßK’Lô šKu‚…ºß3Vé´³Æ ïF¦²~ô‰éÚ¬]d‚” Ôœ½#¥B³}ü¬© [7=¥ë.ùõ  ážA4Þ¿ZŽÈ(#Z FîÁ–l w!;X^]Ã/éŽÛóv#å5Ý©Q¡9»)’ ¨C©lY€cìþ»@Wê‘9œ‹rjˆ€ …’ƒÂ”ÓEÅ_€õ³Û¢ø=kJ‘W%¶FŠ“WÉ¿dºRMàñªõ3)ÄæëGiS¾ß,ð™"Ç"¦#ARêŦƒæÕGÉBnõy%æ?.îßG鯼˜ V¬=®Vˆ´qÄÔ(JìWOÚ.‰™¾·ìtÓ€‘E§ãwòZüi¡S:6ý V>ã„ûŠqõG—j÷zŠä—[o3Oï`G°ÃCÎ k>¨d7ÐfJŒD7ó=Ž@ÀoÁ“ú¡ë9“wäXÇd̳‹â=KÙzªjŸ††‰ƒú-¬j%Ë}bn–\C4hÌ í†‡}R—´aˆDµ/r£¼$ˆ„¯^Œ“š:';Âðº+  ¾AOMé×âÕCIæÕgËj²z©6ÖhÓx')î„Ü…D$…`|=qlgÕËÍx)[—¬%G›-ù:ürDÁùœb0R]ÆJÔ§¥½K2ªô±ÊÂ.¯„¹eîÿ|âØÆ÷%KAøRWævk’ÎÁ¡9g‰Õ”(1Àj<Ü>“)“rñ¡pÆ®±"º_HL戥3úÁx¨œÝ·Z„rN m* A¡-kƒÃJ‚ •&ðÊ0¬²ÞìônÖõ±l§/Êôè-4^Á ι3{Ï;ÔÞÍjMÑßÛ;ÇwD‡Ú³vL€1nÉ?´G-‰!µÇPbÑ}\4Ï…ÜPt+!o¼í¶·º‡ñ¶™Ûíô††ÐekàÓ¸>*”þw#tï”\ëìzÒLã/¤oÒÍHÈb¢©ªóëýŸ$­Y8óØuçà%Ð}1{ÔQ.þokÿ6ˆEÚ²c 5$À =Wým³³ßW]u½5Î(2£ âñ3«N’&(:ÙßJÉe*Ÿb­‚T¼"ø¯ Ð0ºìWä„&­_&q2\ÍÝÑ4Û ó[•ÑZTÝ2Ôºý¥Ø£ÕëRk™ug`‰‰`auMö´+(jÇÊR^}ÖòSǶêOÅÆ |ë¹ÝRÁFÂ=ƒx$±ÈjbòÞ•ÎL¾KûHá†tÞ•»H—4o=E‡õr¬«†‚è2ÿý†»—$'»Ìà8þìËå8Ò2‹çoJ|)$@xÈ;f?IVÄ·¡^g— |÷s÷d¡‰™6W?CŸ|TaÄÄKßAÙíÍÀ}B4ùgá÷‹f¥Ì\\Šì’>F‡#ù泉—‰õ¨X¥ëk€:ÈG¦æ{Œ—;{~V@9¤û_7Mˆ€äІu³•ðÞØ$þòjêLÖlš= b—æ¦p£j<.§øœÎÍÿZWH~$½EGL7Û£uxj÷ ^-KVXÔ™"óa¡²2ÿi7— £)§‘k^}éT‘Oúf(%ÿbÈD»¾•-»áìúȧ‹m½0Aºó7:rߨ¨—"€ïìÞ&šc„¢t[©6æò^Áðv#àBSž•;ˆø‹çs&A3ÚÝšŽ£ŠðçeP•WÔH0þXW–…ªph&HöîÈr¼Œƒ‘l\eaÓ{»`†mO4‹‰lîÐ×¢cž„€‡¹`.æí½k™Õí¾$™¿»™ý–*Gšš¸\Â3ãçzqrÌÌ£.€œJh–}Ë…À2¶®ºÓ˜N’ã€@®Œn@Èsú—ælrÙè¤Çx^;ö=ìÊ^ýS½Ý6€3|I)C§É/€ oYvÎpÅÅi†-ãf½¿|×›ó¾=Ïg]¶;nI(ìrïhŠmSŸÀ¢Ì'©- Ø§Dƒ³ni*E€J1_Ÿmi(Y¹õ uþ#·ú¯Éƒq0eŠêï¡ 7‡aѦÓYEáuØ{huÁ£5|üå;˱õ^p>i9ÊW4Él› äÕû..Dȃ÷Ld)×ÈX¬òèÌÏ€üE£ÅÖà\c.SÛL"ú`P2¬øC½#^§^j=z´¸7JÉ’·”Ù¢X`ƒ;D+-–Rl…Þ¸²¸âÃCÔV‹:sCZ³~íCÇé3`¸rgßë.átÚÜpM2‚®#K ÖôÐÉXöÆç£vm/ALW¼‘MŽˆaJ»ÀÃԬϲY=Y¿¬ #çHðžÖ=I­# F :º…‚9›Ù‰å¬B>æœ&Õ/—¾%4„ŠÇ pšG؇1ð 1+÷gTFÖ'6âZÆ>W’‹˜Ó6ÄKŒ{Z¶xøÈºŽ8g|n×´»·û’”1žÅT8{ÞOBÕ¶ ƒ`_ÙÀ“©`>ËL"¦µ>V¢«¤f<¢M”QÊõj>5ñ3dOßâMiÜb0"jJôû½Ï¹ñ˜®ƒ\ÎÎο{­`Ö“e¼'\$Æ}{ƒÞ"Îmèd·—_ðXsºtÚJ?L’¸ÉA…i(•q*n]¹ãW õªùtpc îÂ2Åai‘×’Ñ=Ú×åó€®ýO¯.ÍN鉵sð$<*•À^òÕÝl*$m•Zx@¦ùjC7‘KQ&±4 Ù´x÷áµ£(UfØDn¦8Kê‹k{÷;ÃdsF´þe,õÙ„Õœ[½Óà-å½ÌÅAB³Œ²Áöõ ØJHW‡0N&1vtr·TÁÞîôc8ÝE®LÜ\[TÚ¯Ú¦ÉÈÏÂê ãuš «äc\¬–Ðø½,~Kx1‰EãvYGÕ4<ªå†!ì$/…³yévè€E‡IÒeH¾tcæjTêó_̤¯5ï¢(CÊ:üüö—ÜÈ€-(é8[Z@9¦Ÿ^N÷¶l—çQÚY\ gµp+u]UçT—ñ“v§ÎEN¼ß5(ŠœåƒsÝýt6ÖXžÝ©!Õ¶´IÿlîjÛ}X|ö#-”ÑçüûS,70 çI–£:^Tžú{0ç58pkœÀå¨I=Xу?–¼KºòûuŠإÆMfíàòGðÈ;í—ŸÙá&ßxÃö«É:ê"{qø»­Â érW2»|ÃyëÃ>ˆ.à¯ÕcsžÝôãï("Íü¤B¬‰Þµ¦k‡XÓžF/î †ATFÃXÔsr× \Ýkm¤…îÖ×|D‡X4Ë>Mü”ï‘ï Ô@éVšI~›Þy&OnÚš‚£zÕ¦Ùiäá_®j€öS™ÞEª—NaÇmdWh×Mþ9Ú("[HšMF“e¸$¬¬¤Ÿ$‡D/œ#?ì}èÍïv·—Fx9 ʰds '8óTËD5Ñoq@ ²ò¿¥©QÓ…¡mªí{ïþL¨‡!íó®0^M—f;JR|¹àȰŠc"þI÷S ¤IÀ¢gÉ¢ˆ ¿»8«Ø4æ¡o¿ùåiòÑ»ÝKdÞ$N:‘ožØß –jxÕán[˜ª¿TUÖ+·]u, ûkØÀ«¤úB<¸$ÁìÁz·âð)«úoñ„½¹2òð"óV“™¹p€È,–xd)]¸Õºð©ËCÀG©s§Ÿù˜牞gz†ÿ~uHâá§µ‘”*<õÃŒ4äíDGžt31ÀÓõ4Z ôÆ Ãp“Y‡úÛD#£TÿÑ J&¶ ÑÑÁ<º8pä!ƒëî^³¦uWŸÈþ»Œeã×ízd›h™‚=¦Eíµ'}µx ÏœzÈ É€ó=ôO ºçþÓ°ó”›À+¤¿EGa¯4‡Ž¦>j ÅõŽÈ‡Òû 3÷9ç'\j‘%Q«ÚµÕMk¬ANº6p‚ì gº5Æúûý8J üUÝžj$$b_7=5NÚXÍ ÉŠüÒ}Vü…˜À%Ná%*œ3IÚÆú_-t4¬¦ö'Þj1ô‘R‘ù0>>FG4º®öĆiPû`=j œ+õ䛺0Ïé,)ƒ„Q†y1¯Ã2¸Œ xIšµê…î?ÊC@O^9g2bã2d·oé[^üÛËiÑVn éù&K¼>7dn Ÿ-”Wó“FôƒóÐÿ­¼FÙÙ‰B«ü—à€|û\lÖ…µnݹ‘bJ®ãã!< &O÷½°ˆÞóúø~Ï´A½ˆ÷·.¢ž¤'O.=Áìåß½'þ›Â5ÿŽd+‡"„ª÷ݬ¥âyÃë±Gwz—PCÉY°5¼á°' >JkÕÇáѶtí1)Å!PböT·²h‚/Û'%·ô.ìÓÕK·Äím`šõcù×·BLäÜÛ3g>)ÃÍ—¥ˆeßo ˆ¥¨leÇ'tܸ ÚV3Ûj"P°°wPm^æ&¢24Ðl <€3lÀK }Ã|¤ÎVIÿkxº± N‡L P7F%¯ÁßZ²*Í;”%8“;½Ê@Œ˜aóðBÉÝÒnÛú9õ½w ¶™pÖËø—–+fìà®û,$l«P`±<ƒ‘óÁ3T ²$|iÔÐÄ-… “ó"ë8äõÞ*¾ šÓGyBåÊeE©;f¨  ƒõñä#e”vöÍ.tI «ìÈ>Æ}ÿ·â™…8'U˜?ÉLc¸kÓC ÷'^r;²pˆì_ÍTñ~Iy!d¥0p°‚ÁäëRw´.%áŸýæ%W皌Wóu‡6_úÆä'ÏþÁ‚lD» ô“dC_Ÿ=&%U9Ï^Œò†3”é\ƒV@ˆË—uó¹o–1zã{•RYþ¤^AGw•:2öwäÝ’ ­ÝÒž”9Y“h+ïáyˆ?\J½ÏFìµ¢´í>¯J¡IezÇ“ŠÆÃ—ú­Š–H‡Ô±R 0m;® jq{ÇuxL@•eïë(äi‰`LRã©)J.ºÑ‘ûY˜m²DŒÇNŒ\3þ¦ÛìL¦ò«øƒ"*…–µå©ä£|¶=;:€(UÃê›=¤ïVpJ켚vÙf¿)ñûп9_ Ù¸oij¸Þ& §J<º®ÑկĺšiÕR‚’¯ÅÑ8w±žáð#2w†ºfÎíøò\p( ó6A’òÿ3;[šüõ§9CP¦[ ¥Ò‰ïöwÑŸ€–û×U'a\B02®¡¸/ˆÏÞëÍ3—÷XÛdV‹ô hBÁÑÜåTÞ÷A7Pjá2,œpê:¼'?;ÄØ–6«%0Š”õKÒúbX”Ÿe®_AF¬Í1DwŸÜ:RåK¶j×UÔ734øI<®“L¢È0¨ìr%ÓÅžÑåi`îð ìêÃÄf¸Bú[9Hr™±[š½,Z¡«8‡þ»H<¤ð;|©ƒGÝ7h&=qÏG´W$å% é1oMó876€„¥o"Â(âT­—ÆqÕ ª%ÕƒJ~ˆbÚ338ª#õÎÙë’ÇŒS¡‡ð[8OèJ°Lá±½ÚÍx_\¨‚6)u+2µ(\zÉÎÈ?Ýa)«åiÔÀ`†*H3Ã*3h”šoÏíAÏ‚4Ã.Þñ¦MTTDØ-aó^)´6]gj%ûÌ:7ô¡¢>úh4mA}3íô-9q"ðZÞÁ(‘ÂcK¸>ª‚%h.³I¸Ýs&zcø¤£õЈ×8J¬îr¶´\<úáÔ¹öÄá`wÌa§òN•ðŠ{Ûð. ÷Á^lyÿØ ÔjÉ s…rGR4cáªÞb]!‰³ÔAQ9¡g9Tü H?GTTW§ã‘wè‚"^m­—Xµ3a[;**‰Œó+¯$à=ÏýbîZ„¸$ýCP#Éc«úab‹F×dS&T^`íü}ÂC’âùµa×ÓZŠÝ lpB Ý%Í„Ýò¿Û/TSÉj|²äµ $y¸d¦X¸×U‘»0÷]¬Ó8Ó*5û–-ÝÁXQê粜 ž-u O<23£3Üvþ'B¤rFâãìIW–cŒ¥ Y(¨‹§)Kux€Þj;šëÝð;.zÝäy9ÐÞ<¹§â” ¶& 9âÓM§3ß¡²¢B—îR’ÄþLJ: 1=qÄšý?“ùij¨³,ÊÔ‡ñæôFOh::ÁÂÞj‰$¾+ü?Ð^½ÕøÉozQ\,4Ú=ßÇâ^äÆ[[ãß@ÞX[ä a݃C1ººyyZkú’³6+$lO.\GD%×öFH5% P_¤ž`fú«Ú® ü¸úcìG7 ¯=]]£€^¬J¨Ä$E<‰È™(ü(°¶jÀŒ"éõ㳌°ÄK´ËÝNEðØúBÕÊcŽz¼UxÆ3ü+’³@9Ìr§@œG|£×;+û-hð^Q™ôG;øuMú†&¹íÊJî¹Ü¬›,€–> stream xÚwTlû7’ Œ£»»¤„&°±Ñ]Ò%!HKH§”H„H·¤Ò¡ ‚Äêó>Ïÿy¿ïœï;;g»ïß÷¿ë:g@V#Seg¸#DC  ‚dªú&HT!Í (È”hAzCá0™ÿ%WEBÀ( ¦FaÔôá0€Ú , ––”" ôáH€Øê ÐèÀao *ᄺº¡0¯üçàvâKKKòÿ6({BP'0  F¹A<1/:=¦p'(åÿ/Ürn(BFHÈ××Wìé-Gº*ðð|¡(7€ Ä‚ô8~¥ 0{B~'&H˜¹A½ÿÀ¦p”/ `¨æ1@Ü!Hæm€©¶ÀýQÖû£Àø«4aAá¿ÝýeýËöÛìä÷D€aþP˜+Àêjè ¢üPü0Ìù—"ØÃޱû€¡`GŒÂïÀÁ ec“ß_Ùy;!¡”· 7ÔãW†B¿Ü`ЬsV…{zB`(o’_ñ©A‘'LÕý…~·Õ÷…þ9»@aÎ.¿RpF#„ÌaP/4D[í/ Dòæ AÄA ¤”4â€ø9¹ ýrnæ€ü ÿ‚1ñ"à€ &H0Ô‚ù! ôû@($ø¿ÿ¾‘ œ¡N(€#Ä #ùÇ;†¸ü¹c:„úl@â @¿>Ÿì0Ür†Ã<üÿQÿÝ\!ScUkU+¾ß ÿ-RQûD@q@XXZ ‰9ÿÛ‹úW lµa.p€ôŸ`1UúOÀ>uŸû¯ÁàüÛ—ÃX€û‚Û‚ÄAN˜/áÿošÿ6ù¿±û——ÿÁÿ; ´‡Ço)÷/ñÿ!{B=üÿ’cøŠFa¸¯ÇLì¿U-!ÆUâ E{þ·TÆÌ€2ÌÕãï"B½5 ~g#(ÊÉíUþàæ¿Ì ƒÁ½¡¿ @@ú/fªœÜ1KÃÃÇß"fhþý¤:Ì îükºDÄ%`$ìO‚i1æ&ÆŒ¡3Äï7ƒB‚08 cÀ¤ p#I~õSL „YK¿À?w@Y0ˆ êTø/ôO/ÿ†E1°Úû@ AÂÿŠÓ Ę£~ó“Äî¿Wâq"Y˜…;ÉFÝoŠêúÑ |ÛW`}T~ ¸nùˆG pù}NN˜ÉSŸ±Šü®œ9ôòæÒ'uî¥÷,—;-„:?ÿtaŸf2±þœd~œ®¬tG¹ù ñ3¥ K¯ ‹pwÜì`‘ZŠÜ¨„ú‡ïkM¿æ7U‹ïbf×7ê%tI/ª&’ÌmÃ+¦ÅŽù3ôl(&"^ªC?Šé“ïST…c×,:i|$Á»I¢eÖk"Ég3Ë5f"Þ½  ÖôL¸'Tï&8U6³tnÍ>-[E¾Ëž¡{1òÁ3CØc“;`ÝÀärëë=Nà˜ 7½.vBâj§Vºgk:Xþá’ΪŸöWÉGo~Ãt赡‡d^ÍT9ë†#Í}º{;«-£Ûê ä¢(YMÂD¹uY#™WÄ?Ê M3o–|0å5T|%ÝU4¶ºða-û¸ªðG"ËÄ«ø?+ ~øü]饰ô¼­P³íê¤^Z P©Âðòu’M~¯µíÅøŽ ¯Ô†âOJk5;É·†îšö˶M‡©ü5óNô Ž/3rcR ¥Î]ïŠËl½*½¹t®*t]TTØòŽñçôPšÇ‰‡¯“T—EzÃ’õТ#ËkÏéÔFñ‰x)fT*Å™_Lä¬{OOèEš3¸Ó{jUßÐðZ4sykͱy|X;”³´Ñ.òÎÏã}áôœ_wº«æ¦P6Ì.§,ôCgHÝxãÀÿâËJ¤Øõ·i…J„?×gfÑG‘×÷¡Ë‚‹SŒåwñ†¥Câ?Ž8‚HÑù޲URÜFV8As4j¦Àtù«W«q¸uÖƒñG U†Ð§±1ß7jŸ¦jñÇ|K:œd%mØ[ËQ»æY÷\PµT=‚¬††ÎFxeÆ …Üç²Q^&¾=äëÊ?¨[–qL÷œUЗj‘m@VâUïÒà2µ2§>° t§¥qŠª9Þ6QšdYò8rÄR ê ˆhÐ-f¶Ç«ªÃòsÍ åHÞ{(Ú©Þñcªê`74Iš·×ú+õŒ³¿Š9y³ˆR¾>7÷­B"5nðÝ$ø¦ð Û}nÅ':Auæ€KîXö}ƒwi­ïCxçÔeg{®ÇUûJêÁ÷„OýÅ+–{¸Ü:ü]H½)o¾” k¯ëu‚Rjrˆ»‚tÍ<®psJ v ×.p,'¿D-J§hZìd¬ÕÀJo† ÊÛáoY§:$R–ì?ŒáÝÀ ‘$Ýd+ ("JyŸè´1êËj/Æ©ˆ¿4´Ê‡ ¾µ÷Óî1*ª­°*7¶ctx–V‰×¯oÀ:Nðî¤ïÃ]ß-™ÃfÙTmî<}ÞC>;×´†mjëiš¡è+²K¸·oÕÃMcópž¼6©„ºApüGå{à¿þ¤×ÃZ]ö°· !Xá9 Á ,×K¡ ¦¨Ü·šùñ’57&u»è%cEº]òkU æ¡ MZOa´bDä­±8Î,»/ïÕ;\k„-!<·© ÛÍ©ê)ÜÚ‹¦š û8|Ëlëuœ ¥øzM‹Ôå+zïÆ]ÃÚ†-Ò€S‹Š“õ³…šomÄ"_©ñ,îM¦¤oGÊ%=ãÙ"®SÕ€^H÷ ø×¨»ÜœiÝ­Nxñ´©r÷¦; #e5´qK‹ÛLTs¾èž ผÜï:ÙÏ^ %|ÞV<1μÈÛÙ½pû”èÍ·ÆûÁ\ ¯že•Âöõ%÷>y5g¥‹ *ì$‹‡ýéBzœþB¶²ü™¸ÇSzaãl÷Z ·ê×TAwêC_ðX:,ÑÎu%ȧfŽIôÞÃyç[ÊAO»àkÕ“!Xý{ Ù¼YÏfMŸ"æ›| °ˆ³ý¥2C¾s DÓÑØïyN«I ´Ç"·†šÝ|-Ñö}Ÿf$^Úе¦Ë·’$[ ØÝ±ªnQv‘Ôv¾Ùæ‰Ò5Éè ‚Èï/ŽàWáÇ9bÛG]·‚L7£Þf‰wÆG‹ Ï÷xùm(dݘyÔb˜NIÛÐË|—ÕæSÄÂ|^²ÃÙžË× à&ç©Äbl t!<”hÚ=Ÿ«êæÕ9ݶ Ï,ew 'uAµ7$žsÌ–Ul$¤Ö¹+¾ñî+ÝI-‡ÿ}yåp8ÝK^U“px+«]Éy¡¯¿-äÛ²°±T„²@Ðjœ£°C@mã},@KjÖbù…µíÍÁäAå¢ÏÞ=9lÏ·oÙ™øçääp"Õ@7ÝôrMgx¶k$ô7ä?fS_±qunf]õcêO(—Éqsê8¸Anníyú×·–ߛΦ_ 7És¦æñÏ.»U¾úéÞŸ²°£ê¢ž.~®a?žàŸs ºóΙè!Á¸wOçÕ—^£†2égª×~a‰Ò$g+ÛÄ)@ú§üÒ…„Ø”c†Dº»S{zô–ð|îÐhñ'Ò(L&G'Þá—hÉÀaãSëoÿ†tÓ“³#Tæ“ØÐy©óLúËúbOê>m¨Èé}9V!‘ê'Ù/?o÷ˆ3ög6öº^[`§ßZç%¦YÉ“Ò.Ðs²=ÎÛ5d¹È¯ˆ™J 6ËÚ>¥]þI-Gm’{kØ gJú ø‘7dŽ!:ßwÏä”ä2kÓh<Í;½ƒÞ•q#D¥Ä ÔˆåGß¡Ö]×ÁBv•fà(-sšÔYLi&ôcaFGÆîñ…kÙ"™fFFšD†äÕMál9¶Ù$.X­€Hž„§m`㉲eP¸¨Ü©Af뙚ã¥o]\èX˜H4èÚbiØh]—K*ÏÄXs¥==Pì~®z±w Õ¡¤`Ìì­Qlƒ·Mý­2࢈Óô¯y só|ó¬ä°ƒÉ„¶üLóžO†=˼-ó¢e~å©ÊZçI£=õ ñÖŠ70›œ£UίæÛ—­w¡µ‡Ó ž×;¡G{‡>TÚÙvÚOWëblM÷÷Ù´“ë6|ÈC ½‰ Ò½¬ycFv×âA׸AHÃ÷qØaØNN[* ÚoIºAsE;1b§+ Uð}ÄÇòï!)åþÍçùÙ_È?l?».¶ÂØÚÑkYÿr£y¤þõ!”ô`y_â1Øï‡{[ßþFm¯Ã¸žá+óÝo$º=µšo‡˜¼ƒB«Gwç |sl“N W9ÕxÊO¯™, Þ¿ÕgA`5»”þsu‡ì%nìwýP':Kö§¢5 /;H}ŽZ0ñ5™6§Ïãñ¯ç†ÛÝlOùI¨#e¸‹€ª;+•úÐ6¥ƒÛ“|›F‚c’¥“¤8Tæä­üf’¹þÌFÅžvP$Ë7‰\ †~¤¨7ÉO«fiNóî*qÚ¯‹AœÉîÙš)Á4å§LÆäwߨú'†8e'Ž7ðÖXüL`¢ElÃkåŸÝ Z‡Ô‚ÀŽø—·$+‡üg»ã>ÌîfïßÍ™™ðßHbí_±4-±Æ5¾§wùÑ¢ApÕ\YÃÊ7êMQ4Rµ:>]]f—ìp¢úeèÕ ßZéèèà_—¦['?¬ÚºVÑ`Å ñïšd@̼‹Ÿ¬ÁþT»6[ï¼GF ´]z¾*ZºvŸ6­”·—›IÛèñ®úÒZåÏf?ZÛnWù±µ¾9v|$"fw—|¦s#½û”é‘t´™Ü‹é·u·qŸDJÓÙh>2:WˆdŒ'7A;qrïWÑ}Ÿ-UùäS6Ên‰^úá?· vã9B,‹ö)«JD ¦~»jØRÌOªoÃws6?.>ïÝjÛÌ &"èñ…ñ[ÑÔ<ÆÉJÌ“å3‰EE[ŒÜ=ú$?Bj;‰.ïTÉ$|³÷Íœ[Õ§×WQkŽø>ê:K­°”Þµw>Ùy¯n”n3èGU=%”ÔU,ÒÁS7Á·ÖÒ–CQH>ñ¶qÈ/úXjÛi%yª„¶–k\}–ëAÉ<¬Éqãök[ÚwzénN8;ŽBäUºÁîÛ¹W+jÄè"r v¾Å-zi8!~ÍþËh3·«¿¸‡iÂуöŸÝ„¤Ö/FYŒãÈÛ@ùÏœO –®z©Že…ˆÓŸ þ¶‹Ü®&DkƒÑÞݤgWš·Êå¥ÍE–+6>DÒ5w¨6\–3KÑ"ýØG$#¹ÎÞãi˜î ñ‘™¿^âøÑ:0ÚIÍ@Úá&»@<®]B>šU!à Wû1hþ¢–^½úL£Ý. zÆt¨¸²8¹èi4®ÀÈ6Ì>ÙÞ@F“l&®ÃÊËø#týÖ™é-¥ ý Iv)ÎÙ]òг"ÿpØùkéÇ+Çg'ÅÛ4£ÍVf¦‡¢,B ©HN«³÷ø,±Mm ·=EiÓŒ<ã¶ø)«ù2LÃÆéû.+ŽÌv‹cÜøŸÜ4‘ã ¥ù¼FüAäLÄ9ù½®0|^¾LuºèûAÃQ2i:ÉVöª¦!oûõNNò–Ì{[Th¿Î™LŒt•Ó4TWÎÙQQ{'T™íO)EåGk ¬L¤õ{ÂÖj׿…­óˆR¤æîëw}',Óª- ô»ýòÚ‚‹0½L{Ê»á\vm8hÕžÀЬp¦€ðîΤ´³&~Ô #Ë…RˆÕAäÑℼ‹:pºÔ‘!á¬V¶ìy0ˆ_9ûÚîCmLÓ³Ù2ü€Þº|x~Ú´î$¾„2ÇÇú„EžsbÃUVÝìÅg;Ûs;ô/JíÊð”Ì=‘þD‹‡:£gGz¾ÿÈ¥>!‡sŒæ–Td.OòHÁ„äa÷'šé &¸k ç^sóÓå–†‹ø’nÉIkÀœŠ„Yו;n[Œ›Ü>§}­ó|{¾‰Ï̽~KºîÑ¢ Åê¥íY¬OªàMÿ0eqÚŒþ—®_±\ìïKð\÷û=®ò_d5H/Ip埒ÉOÈÝ×Hê¢~AϨ;ì×íaM©lú…úžq/×Åär¶ßËý6‘A“`P~b1¶Ù¸XP:¦<¨BæÎljóRiˆklâQŒ÷ËȘÎ{ÙNœš6šx¯nûÊËö|™½.Ážý:f› bFE<Ç+ÔAƒÃr‚ Þi£Ïþà—½B±èú5vIe6óêW<­Qf¶sÖ~;ZdHx0\dñnáÄëa°Ð™ÏÑ‹p5QwóÌc›ÞÉ9>Fþê¦ÙWÌôôüøD†¤{bÀÕøÔZ\oU (…¨Z®ZÒðn$^”ôÍñ—øÈwoÅ䱨ÆVååù;HX‘ñ¶o§à>D®ôJiábN†¦G*­¬ÎÊ„D;µv–@×^§u³¢¯y+…­•Îx× ú±"}÷ î‡î“÷ÙÌ(eñZ?ûδ!Ëîæ¶¤+ù…]D¶^u¹µ$âg£™¯*UJ}rÛK¿M‹¿ZµÎ ?ûˆcèË8ë¨X ^I€åê#Ýϲ ÉãþÃ>a™ÒÚ<ÚlĬi¯g„žž=“ê>§s•ø›l÷µPFš›>q §c9£a dˆÏ×,ïƒtñEDnp«F4£•^zá1Œ{lš9¡m²HdÞŸ•OQÏ%8š)dù¡*þÖZÓ@+ÂçŒ4Þ+¡’íK+J}Ÿv¬úûO¨RhÐ5§SÔ›žƒ$áŸÚƒ8w ƒ;±Å?ìs’E°Ê!õí6y¨N,<þBÆ8„O;g@Á^>šÜ,Fž¡àÃϧ¿r$¼ý¥ˆ³ÿTŸ¼[ :„…]df$FtÕ=Hmw-ë¶ŽM‘ ‹Ù€r§{$Æ’w÷ª×× ö S|Λ_á’‘å™]±c9äß‘¸…ösú¢· ÜŽ\¸ÇZy¬GŽÕ—ÎV„¦+`yü‘d(/D¾lLu\4ʦ (,u‰½t_ûìÜÌpÞ˜ŒÄ8òš–¥ Ã‰»L–·÷§BO ×êƒÕHñX2f7²Ð(‹°ìeþͤ¨S²ÙTàêõ QZÃîÅ˃|ûÖ¤d¹Ñ¨)µ]>âŠkì7ÚƸ&Qfê·ÔrÖ¡‚Û‡¾ZŒ2 S£]D"jÜám—åòÕµûÕS̺ðš|wŽüAªŠ^Ù8ƒñ‘‡vK RNÆÊSöÉŸÍ›”ô¸bIäÁ%HkÅ¡[CìߨŽNЍޯ³ ÖñÁë鉈ÓÏÜ〴g»ºÜMôêc`ŒË‚麯ó™OP¶Nw~øJȃ‡Ô†pÕ—aü cT*‹#1x6‚-ˆÍõµácí:¡Ær9MêFU¼,s«œnO(ÚrÕºtb—iS¿¿tb`T°>úHÕqm ½9ºÝxºúð[îÏ"9f³~HS ê}’Ï([8¾òö‹ù–¼škA(R‹=[f»Â'™ùØÝeŠÏóõï¬což0ÿ@¯¿3DG×IÇ1¼/ú¼µuQýõjSjb[/„+éþâ÷Å’ý«~¼Ç ¥ÓËЛìûÐ2 /\ÆÈÙìUòá° V_ƒîlÒ1!Uñ'cHGÅ÷X)’?G•ž(òE[ˆ'Ì0íÜž¯«-&QIŒ–è|û}nõêÈ+ôõ½Zñ k  É¿¤’~ëÞG\ƒ7:x4½-Ê®Aß$•ÇâW+i3ÁêbECʵ›+ä–)ÈwŸ³Z ëÎS„üP`!<ô•`oàv®ª“f´>åf²YãÚ×W™oðl"\¿i¾rÖS6Hï%vĽÙÒP$Sn·sDçÏú õ…W—z-?Lµ•ÓW1+¥E€ÛÖ/ljAÑ«†aÔb¶‹¥8›õ1*ðþöwŸr5jHSžâ`å_.*¤s½!t®ƒùud§²Co¹Û+¯ET¼r¿Ì½àk~„‚CøBë*Ì•ÎöÌŒuùƒúE xwrÜÖ¦zÒXZݤ!@aðšlYÂMïb¾–"ÁÃñ#‰G®¨’„EÈ› ,ým!³l±ï{±¯XjÕÑ4ù7Ê>‰™Ê–ˆq_”ù'GÍæÓ ¢A }L#´á·4:¡¥\ª¨ù\uà“%’§&ƒkKëÕ …<ô¸5õ㨵b ~°õêWÚØ¼´hÔ|¢éPlëf…WÛªËÍõVú…Q‘‹#ž'ãOOk—]nNc>° ´çd œ‚v “tžÒö\«ro߸Y…÷3¸4GÿŒ¡ûv)ºtI©]+\À|VtùPuã@’£µÀèœS?ñ@L°Ì\OüuòÁÅšúÕƒ/#–ÐÕÖÂg`­‘öÈ^zÈ¡(î•î)Ñ(Ú¼øiÖùaQŒbsÏC±ÃyÍdz±èŽªÝr4)(!‡:Ls )”pOæeã\M¬~BEf˜L”›Èqa^­´¿¢«˜#wJyÓáõjrâ`‚;¾w>Ï:äHž4P‹ºêü¥bZF@Y’ˆI󊓸¤¹Ñ­Q6ô}™ª"ü¶ÇŸ +> stream xÚ·Pú7 Ò(H7²H7KJI§tI÷ Ë.ÝHwKw— ÒÝ Ý)ÒJ½«çÜ{î½ß7ó¾³3ìÿù=³ÐQ«j°‰[ÀÌ@20¨3S ©¤þ ÀÉÉÍÎÉÉ…IG§ v†€þB1é´AŽN`Tð?ø’Ž Sg8&eê S‚A .äò rr¸89þ%sH™º‚-Jìä„I' ³÷p[Y;ýüë `4gøYÿ¨Äí@Ž`sS(@ÉÔÙd÷hn hÀÌÁ gÿ2Á(líìl/ÈÁáææÆnjçÄs´zÍÄ p;[ÔAN GWàwºeS;ÐŸÄØ1éšÖ`§¿` ˜¥³›©# `sÔ ®àµ9à¾òŠ{ô/aÅ¿X—dþÛÜßÚ¿ ¡”MÍÍavö¦P0Ô ` †€*2ŠìÎîάS¨ÅoASˆ ®oêj †˜šÁþn W˜Âóû;;'sG°½³»ò;CŽßfàE–†ZHÂìì@Pg'ÌßñIAæðª{püi«-æõúëm †ZXþNÁÂÅžC vpÉKý-‡0ÿÁ¬@Î^NNN~ ä¹›[sü6®éaúÃüÃã÷ñ²‡Ù,á)€|À– ø¦—“©+àìèòñúOÆS˜@ Àlî 0Y¡˜ÿX‡Ã Ë¿hxçÁî}Nøàœ¿?ÿ~ÂgË…xü#þ§¹: âoYþ$üo–„ÌàÅÆÍ`ãâå9ù9üð‡Ï[Q5ÿç?ºòPK@à¯`áUúWÀ®wŸñïÅ`ü·-e|bAÆÜ€“—Óþøÿ<æTþÿ¦û·•ÿË€ÿo<2.È.ãoöÿ‡kj†xü͇ϫ‹3|ö•`ð €þ¯è[Ð_몲»Øý/WÞÙ¾âP+È¿‹v’»ƒ,TÁÎæÖÊ_¸Ö¡ U˜ø÷A°99ÿ‡ß*s[øÑp‚Ïã¾4ÿíRj³ø½]\¼|SGGSLx‹á/À _C ûŸ p°CaÎp<=€%Ìów?_8T­Á¿±?¤€Ãìhîbg +þ æ…‹™Ã ð ÿ…üŽ•Ãâ?H €ôo’ï7åàïå?\Ë rÃ)°ë?¼¿Ù0Ç<ø½ü‡†û³‡_)(déü üýkÈþ ÃÍÛC\œþ1—s¶vý‡C¸=g7Ø?*ð=AŽÿUbsG¸ç?+¯ÿ¿è?× r™c.ÌÁÌ…mj[oªÅÉÝØ¶ÇD¦é¶ß¦0±y-8¶¹üÂFKbªÊx¿êx%ž4øçÛ¦4ã¥Ø"Õ½×aSZHs‚ZË­÷qœúäv æ× ¢¾ñ‚CñÚ^J 6M±ï{om[¤&ĺ—Wتyø7n=²îµ½eK#ÁsÛj;U|ožÞ•M±EiEøÏÐåšeÎ’¼Duf£DgÆ;u>sy5—=þH¥Ç‚ésÅ]襷ÆýsÖs¹B“Ë©“”–T„éod’ÞKbïƒñ¼WIáªãHò,QÛèº]"²Çè¹­¬~ã¸fDO7.ÈHJÂD ¹Ú,oWLÊ“yúMaÕ]þŒ¿É̉U%ü¨á¯Á6î9·š¬MisâÚIú¢šì—™\×XéãŒç^ÇÚ)ïªÎÝ£‹u4Tnˆz†y+òíø]Y=U*án¦Ü†#DHCp„Ñ=N•Cuð6ñQ1•ü¬4JãFžÁÉl…¼%þo29ª·j’}‘²¹ aãÇJñÑâËËOÕÚ}›Ý/™4­ãŠÆ$qŸ»?ù@¨¾é‘ÄÚéÄÄ"·!´i‡ð…™Xt÷µ\FÛË:娡W fç‹è²¨øQzÝI fýkXFà#ÚÊÆÓæ‹X0™)è*Ñ)§¡ge=@† "èóⱊ{K3‹RÉõ©„NVù´}¾—˜uª¨ãÉDØõËô#$œX.îW‹±`T@$›¡¼ì{ó­6Kþ­¿¢‘3®ùQ²¸Å|MöÃnVi·Ø9½;!%Ñj-Þ+kÌ@Â/+Ó:^ŠUE¿þY7†wÈ"*MŠ$æV7ªŸ\ã>É §{þ"¤Ãy_vƒò¾UIæ˜6; ¨" iÿz{p Qîÿk#Þ¨©±'øÕLH‹0“RegPdð¦0ú»U䨡‘ÝqñÏ+}T,€†zc»/ìT,Gyªgš™(S|”ÂÒU‹÷¬¸&j @«¨‘ ™Ë±ý4ìï+yöXÉÚ >g‘^õÅÂú¸„¼`ݲף³¼Hx:áxzí~´GW+@ÞøïüˆkïšHÐöô²žP”.&=/`Ó ’êš´}Â=VwTÈ€~ô“4´=¿i£_gœE}ÜWöÞ>ËCŠ˜BnÜÕÝËÞÏ\‘9ïèÖº÷¥}y ¬‡0 £Qf_IÙŠQ1|":Ä|Ô,*Ô*¦„?’,¡¼Z!Û®s#~~ÃB‚>ÃRý¸ ÑúECgI Eßöð*2ƪ_ÿÄ9£«ûÿ“–©hÜéÐà¤%WxcÖðþë«0?÷c-„½î6»æè¶K›BóAÛ:ZÁFTõ2‚… p°ô®V3NËlîN¶ðQëFý,»‘.ý§”¥`ŠXØ ¹€Ó묟ÃÝ-íqÍÛ˜U¯lÚ=Iå§—ö%“é`-ÓwåÑi*ÐWägêV4„¤Z? “gMàpÅ1*° Ÿ{/Lv¡Ëf$ïÍg¬Ù ,ÖÌœƒ<òÈpïK8XXÙ̸ݚÞÆÞð?ñÉœ?X`ãzήç7Q4>ŒN—’iyÜkÚÿêtž¿mŒûa|—ÄÅS²kÊ7åT²KD:£’ ÏGÒ®Ô¬‰ŸÛ;ÒÆºñ&–<¶‡„æ„êB.öú'ÃÇÛ.jˆúÑ–ë™_O¤±{^ëžñ Z2Tmýï·¨ rz÷Y×oªn Ü.s[ã}]èNŒkÒd°Œž6#‰äo!Äí$ÍdK[¶¥Ð±Í/5tÔª¿nÝWCz2öÜYìb¸¿G¸)DÒ±îŽdíÄ3g+Aj2(…ÿ äSu H‚.=Ž *íÔ~iEôL÷¼kqÒìŠóeÐDµƒ¦ ¢¡"ª_;&øHúÍdêTÒhÂ¥RtR¬œ*Û]±¹="lêËà ÀãÉÉÅ],D öÁ2±é†iäý°ľ,yZrý¼oº¬rÁáx…í½ò‹¯¹Òž1æÜ5—~$î(¬ë}çáÉ×Qäk—D„¦s%£žx%)­â®ü ÓFÆ®(К‰Tg° )—bv"$âU}@?eÄâþ¯M´n¬ˆ ó|æm¡’aè¢Ùöj?D»âÁûz W¬ g’ 7ÂæPÜrCàs»öÙEn-Þ«'š·K56$<ÔûÚ­Í)[ šKÇp=×=VvÑT0²('¦Þ“åã·½²¨?]— uøïöOúB«õyC|Ð5O]íl$ç¶ËÍ”zð­²Ö»ºC®0z´U Àc;» ‹eÏ_TÒxOzØ]³ñŒ²±ÿÈxj$såþövT[yÛç({§Fê(>¶˜@¥ç 'ø÷¹½1‹«/ý}¬çÍNå5ò“‘Ó{2nð´_ÛðosgH¹j£¦¦2"çi¼¹b˳ü1ø=m:ž}]È‹ivÝ]š…§b/ÆE ã)sMùÞ“uÁ_v …B”tNï?Q³an ¾ÒIe±§ç¹²I%Ü"­¿R1j~*Ô´w’ 2JŽ%èéA£ŠL[ºp§Mù|Ìb ¹Ør#ÍÝáïªÙ jð½&?u$ü¥Dâ àY[å4|ÄJÎÕI ’,ZþF…Ð…ÁEê‹Ò×lìôÈë"Uaô‹AtsãÞä@t³‡Öõë²åYu+#>1zÛÏé„5iK:÷/{Œv/Ñ%ž2š9:è:º Ž•ËQZõ/ô Øóç$äU ~R^P'´@l=žÕMúáÿ]Í–Ñ›pâ‹ñµ¯F>ÇÀðõ+ÓíŸt °E×—Z\ÑÔGŶ”Ö¼j¢1ç¹eL;áIVô ¹´'TŸ~3ìkýK6†„ôCÀ#‡‰ææ¥A4æèp$äLÃR9?ÙËA£ŠI¬Íù ¡lôºù¦Gê"ñ±7 cŽÇyIS7æ9±@Ú£Ž5Hí¤Ë˜_,WB«§´£Pܼ™y¡T¼Ë€‡RHyÚ«•Šçñ8÷™÷²b«S±ªkA„Z›—ýi{¦#â›õ[J¢B‡÷[©HÌ ê¿D²°ýÛe}üU´ÙHNHýpîÓdâD~lDS 1ëe·D®tå„ãÈÂ"AטÒÑóR¬â´G€ñ󔙟ÇÏá­éî%Ýxþ¥; ;]ÞOà› UN•ÌxX «Qy-8ëgGcmà ˆ¬ôr>º¼›ÿKoc6›õÈØY!³œÐ¡?µ Má"+7ÑÖe@£††¥¬º(w¤hzh6¤ HÜKMûp¹Ý÷ô­Uµ!“Zî¼%-fØÞÚgÛ¹2UhÌ ö[äÕ+ÁV¯Ðš‘{$…çÒ\úo?J5{Iõòk¡èº"gPð[ɺžØ¾¥^Œm’'¡,—(²y¬ó½ã¬I„Ûø¾§îÖå÷2òšrk1rA&ñWi®íI‡¥Û"tÓì¦;ˆo‚cÂ*=”$~B©Û4\l=\_ò~Z’òÄœ+þFÎÀC6x½:†¨æE?WÒ<Ð9ÝЬNbÎmK?ݺ “óŒÇn ë\ÿk§~€µ÷˜!e>ïÖꦀBý@TÓ‹ËÙ¹iLÎJìÙÍl«³-Ò.cL 7èz‡×~«šx ©¸´IÖ*A^îC¤!š4ÖÏjìó8˜o¯væcö_+ cú°Á¦f.š“pGmNãÚ‡nå&Ñ5L¥ìgÇXû ÕCÆõlišôÈv’®öë”7e¼õU©Æs¤òX¸ì.âÊÃÄ_bx>N:‹Ýíº¤åí˜è®Î ´ ‰?®ûCó{Ö+:c>ÊŽ|/àg­°«y²)]|ÐÈ'ð:iú®„_.˜LqØ¡Ø(Û"¿v« êGÝ ÍÞœpÝ1z{¬%®ÍÿÑ]íˆæDZaÄ’ƒQ«ø™MúJ?vÝ Tì‰Ìó™4yzB ïæ$øA33 lV.aÌÔ,Úâ^¦í|%ž'  ÀªðkNT8Lr à4ůp‹ÎÇô¥½ë@C™ÃÇ/ wŠ­Îì‰ÑðõÑÎàg‰¿Åþuîï:Žþj+dÙvý[éê’ì¡cw€¿Þ™O^FÝ~–¡ù‡¢Cê9›weQ¢>ô8f:)ó`énb$|÷8»û±˜Ÿ·z|³EÒüyµ’Û,‚oâfÂ>­ÿ\~'c¬lUD—kÞ¡»BŠG÷/Iü|´4¾²Õ»ôب%^ÙF-'ñwk“„ ï”U|ÊqÊt©Yæ‘×z["’ ’¾ˆ}iMߥz²¸ÍØJQo™F!M‰« 1ò.ÈækHpF(Q13HÝz›íyû k‚¡(kT¥BXß× óª˜çãW½î¿©NÁ$ánO *4ºl$}źz¡yr‰+R‚ØÌgÐNMy( ­A<Õ§ˆ·ŒÝ;ž;úðKLßiÎÁ÷šÇV¡åTŒã£†JÙ8TWÁà¥ÝÙö‰§0·…<*ñóJÆ63J¨ÂÝ›“…xodÆö” y0*3fuß–!¥šœ¤1⢶”MÙ|x-ž d–L+Y•ÇËŒE'0s¾u ±ybžüÖ¡ýÚÙOT_L%ì`±>¯ëvr…“VW÷ØÀ"V¶`âS4e±íiÂ8š~“Ž5ÁrçÔìÄÂx‹(]™4d VJ8~WM·Í+a÷êSÇbž¢“ª$e«m×:ØÂ[Píë !/²AM”©]޵$CÆÐ·ýîeðvøn¾y‹œÏ”~<‚˜hßÒùÁõ¥ ‘ê«ïÞñ,Hžï”ýÛ—XD$|Ôˆp¯Ý,/Ю_óÞ®?„DòQ®–ûŠ/¦É+D0Äx±‰Cjh­…¾ÛÑTª5¾à¥²°à$sáf)£š“4÷/»Ô›ÆžŒ˜ñvHô í<¯_ÏÁÒ }QÝ<éÓ±ìßzpîÅ|›]O¦b4È»%TÔÉ·Ú7Ó#?™jÇÖç.vþdzi(ÆiJ¿ƒ ¡5 #R™"FrÁìC K>xÇ·%=e0ò¦|Šëâ³–™ùñ4òÄÒJ˜(õYdÐ) Ý'l¡é30œ[tC tБwê´*AXÃã³™Ö >ÒXµ½O¯S•Ï3ºA#gJn×±ÚVÀyáþÑ;Vóª‡tšfl`)rAmˆ¢JÔà¢P´)yVÔÈgwjrÆë< Šù…oCN]ßQ}ÝúpÑŠ¡ðHHª© Ýî1+W¨ÂŸXfúj ²±åç'ƒ|Çá÷☠|:A‘”€Íø¦*<×ÝÉ«¼ˆx©±weÄõÆ-Äu槸üÊÔ‚H}`7Ùl‰Ï|ÏFÀ‘é”â‡qz<Ѹ€a6çgJ[÷쨕)y€.ˆ¥7ÖñFêºm&“!Jò^G¥~meÛžïë-ƒ¡ÂOÁˆya«\<ƒ/¿ËЬ¼É¨T|”f–Ø·+¥øæö4oÙœu°Úš5[˜Æ²ÅîåŪ"/ON’Çí~‡:zMtò¹†SctËÚ…M][ßÀúÜíü^·£Ãv¶Bu¦GlÍûêç]þ[ØCפÛh×rGÉýM¾¡âjx']2˜Róë_ÍéÑû±K¸¾àñz7ZÅ H Ùº*Z]þ)!ðŒÏêK8Tã9½ÏñˆŒb:¯#ÐGg/³ETh\®¿j•RU…Yš‡ÎxzÙ_Í# ŸàÏlC 8òYñ¿3ÐH¼‘«¢#Fí-P{9ƒ¶µr~L§-u^VÝœN<µÓäqL*ÄITlcÂ^JÕtÀøS æÛÆuq"§PLÌ}Äžˆó×4° ‹hÃL•ר"žlLååõ”7EVo!ÞP?tÅÙŒ›21ÒrSéï äØSñÃMë?¾mǺÜnòi•‚Šzï|Od?J´Cb¾¼Q ˼S¡¼L]Ü-£dùMûÇvk‹ZÃÔy=E—S]szõÄêNX:í¼#¥­Sv ˆÌy¸A«~z³x ;ìêÐe){Ó·”î.ÓÝëäÙÃÑà©nëçûÓГ5 Ò-Àý…¾î©Qô³r‚¨GÛúÆ ÌÜ:W–|WüæCI®_Hòs°Pße_Y¤Æ;‰Ü¼d´ßVk-¾Êy©®Ö¹_¬át)bÝÝZ†ê˾o7t§§MÂõµÍNi敾+axvç-c—ü+Õ°2ìô›f·×ø{ëT o^x\ cß‹*¼{× g•N²‚¹¶y$¤é<¾0ÒÓ.ÕÇw3yÏÊ÷>eC„6"®—k—†&µòbiáÑÔ–§ ŠÁÅÒ|ùó¸Âc,Ë›n9iÆþ…,:ÊçÁÚcŠûšò¢º;¤.¶|T}ŽkV%ͦ‰!DÎ"?qv•DªD¹ìò¼³æ7µ‘},uCœû\0œ?›Z}oöê«7ÿ~·ïÞ1~^¢øYÿg.§×bÇŽ_m£éi¡Û3c!äÐÊ…“[‚ˆñV‹7RÊ–A9TU[¾|œ}~<4-ô| —µ<«G¦.G×ð6ud?ªh=jTi”f1¤ÑËDÒœj¯‹iG^´u9"ÿ)3­8§ 锎à\du xQš­G]î@k)3§ûÖG–¨¼I×%TÌîÆÎñíiËî7C¹"p}`NDù„ŽûÁƒ û§ÛD…=Üþ¡Í™4ê…×5eŸÅ2ÑÖ‰º¥pŸ¾µ—±5®Uœ`£Ž58ºcC{ÕÛPº‰&øÖÉç“Æt®Aèùþ¼w‘BÞqŸGÙs¿Uì%AVwËÁëÎw:¾œ*OÅŠ2RîkÝÍ-{rTmøMKR®Ò¸Å1æÎË}Þ©f”jÒè½=½LíD‡4 D¹hˆK‰ôÇE r¶´"”¹;†ü•Þ+o iô†'yq°N§_ÛÊêÑnÊVÉÎôެê¯tKxi|Ñ'_!¨ÈÓÖŠß‚³Œ®£‡!¯Ÿœ P¨üª”äéä]˜kÚÐvøY¡›&ÖíE+Ð []òËÌGç«Rùz@ÿaFpµ8¸&À f}ˆ‹OµÔCD •‹)Ük+ªN'"J&øX”L«ß×áä@Æý\~m àHz’øõ%´W-/ˆZ©ex2¾×3OV'o¤ÙYySŒæÐÜ„C´©pYl–m†Üñr9ÿ¶Óµ›£IÍ:“ƒÜpHpñÚºe$þ€ð …XéëŒé%J•=úë6õÀBžb”p›CešlÓ6ñÔRÆ,Úç ìüT½9Ú!HÇ’ô\YÁ9š\xúÀ×ï¾F©ÉË}UvTxß’Ëv,í„æBéW‰¢ß åX_mVEÙ­uB5k—X+[]L¦ž>õ³]ó·/ ‰iF„ÿSZD%Jà®Ò=€åîÔ±‘Ê.³‚†ZI{#ræýßÀrgäÎpKÖf^õ^Üä¹ÿbÓ‹} ìPMâ´Œ2]³ùÛM•gñË ¤þ¥¢ÌFNˆ‹Â{G*¯MQæ×sزo¥ë¼ Ô{O#X=9¿Ëæ9Ä;[ óH.ô­ ‘¦2¥ÅÚ aµ–+ t­Q a Xpv!$…ç?yçæì:Dyév† .qp)Š­k:5c(˜¨>Qß1 V®ó,þ(åºëêe»'q¹yÿ*¤ »×ûÔÞ«å<úÖs.ßìÂy!b):fº˜]-[§,¿Vq‚¶_à’3Ü@ [³§ÆRÀ=yi߃:{އÆçîrógESÄ­C¢îs=²ç\p*›“YcÞÞ5†ÍGtã´î“„_Nöö©÷g‰¸ÙãoeÕäýRv3·tÊ¥Dˆ®Üû®ýDË¢iò³J;›š·{f-,å:>&Ÿ?ÝTóbè”îÖÍâ*ö Ã¤'È ‘çtúÚYúpwQ†ø’ñ\Ïù=dË ªÎ°F$Ì!%š¥òd¨=œ3gŽÏ¸î^ÄUº%ên ¡½÷¤zãühç Zi•‘ê”Ú°ìaxT£jÊOd˜<šíV–º¨ÐZÖÜÊŒ?Ÿ]Çe®üMµ«Ï¼?Ää}%­Ÿùm»øÚ\—Ò7Î…w¤ÌTÅJ8‘K£$Z؆)yiJÉç)ùE -ÛËáX,Â#ÿï#6j­·@V‡ÒùãbÿJ]†\«Fº€‡<-]¯^Ì èÜë4ÝH­³³ƒÌ£Òèq°…˜3³¨ã`›Â¡tñ_;™ÞI2¾¾Fgö%D&¾=1T‘ÚŸJš7~Mdšr\LcqÊx«ùïW¹¹-–®Ÿ½Œs_%­§…jÙ$ߎH¥+¯¨_]ra˵áºä¥åìeëf¢qô§P­ÅC+NDn:Y(Ö¡Jòá´ÁFJ’±ÀÈÜu¼‘X %¯Í{×ìÖV }­&¦ü:·²äóx|Á¬• íâuõðÌ}ÄÚçàÛ>ÀñËü³Cݯ+eIIî&'ª 4`BÐâa´¼6iú.aOçØ;ûÓá°¥zVˆƒgš•ø*zòèÓ-ö?#™bê=Vô¨ Œ±ÅÆèí+¯v1šÊmé‘îPýþÞµæé^zeH¶bµ—£‡¦&Ë P0­5=¹DU{ᢤGdŠB5êO{³ÿÞœq}–ÍÃÝb 84Bªñgä}ÂÔ0Ùz7ŃYKçy落í—­9쎳¬½{T‘Û«i† (11jºÂh3q”òœ§k¢0©ÏûVÝS©qÏú/g‘à Ï…†£ô¥B쨽ÿD•Òø’Ž|:DAìÅ0 Jò\?ý˜ÿ د%óÇç^Š‘Dw–ਸ¾þFéÜÁ÷gnUÓ*Ót:ü£±>:öìÉC É©v>)äË¥ÅÛ¯n¶þ…|¾ÉÔE%ö®éaM‹¯Ù™–³µ„ÞµMÚïw/ĤªïÒñiYVÜù¯– œKâ®r‡ã Ì7)ìƒ-(R®}<²w,(ž+Å Kaïô‹èÄÜÀ\Ž“ ñxEÎû+;yr´Š4G…¬#´KŽ›Q|õëw?I#‹¤$Ù?ß ma®\ª[±ÜHsúF@ù¿ÜY·ðºe] ‡IÅÎîºùâÌ0¨.Œø¢Y±&Žçª¿Mi®…µÅmJ^½V"uxk@òžtàƒc ‰ é‹ÂØ<^°Ü¤;è žx#üG&oˆZÓ2KžLå 9ÿ&ôÃêi²¶Ï„°^¬zMáÑÛL\/óÌàïj§»gŽ{j¨œ3¹™ÒY§ÖûÑgbÏL…>’ä‹kÅR²íÐèùT×wÓ„õµeö„vÚmÄKߦƒ°*¨j…v!ãm•„µÐɦK$Q%³Ó õÜ+Q€cîcw YT…¸ÉÁ–tx"ÞÑidt &nTÐÅ=â ‰Sµ€]õn¤âøyêþÚÒò¸Õ¹¨F~íÂ~Ũ.áí!PL/Y#Ùø×TE,ÃRý²¢óƧ).MôiW½>¦ë^×ÚáÆ~yÝ´œ”8ÅqDEŽÊ•cû&…™,Î*WgLwƒ[/jJDÿ˜‹áóEàN¡ëq®õÓ–¬â•1š5-ö b7ú‚µYI»C¦"ty‰M Ä%'ï´Q‰‰ºÚWË?ˆ&Âk:j±sÝóc‡’©M1SÅQº Æ„‚XSÏË25‚µýEC1Eó÷š-ó9Ü3±(HYƒì H¯|^å§Çy‡ÑdŽ’6†å O”vcÇ›¼OU®4ôÊ7’’€ô”²Ç m½Ô`iÔC?—f¡ é-üªìvye™©/ðkÎŒh6Mޏ¨Vs$˨Ÿ/éy?/††uü™DT0E(2x—j/no¤]Qùm¢¸hÅ]ùµ·>rû3ÆØWUfá2¿{Á£Bð#Gêr;èã×·l™)Ùêì+yýÄÐeÜ E¶)Iò;¤ckBCyJ¿™ŸA A}> stream xÚ÷P\ÛÖ€‹\ƒk‚»»Kp÷àÐ@#ݸK°@p— ÁÝ5¸»'hpw.—-çì}þ÷ªî­®¢×7|Ì9ƪ†Š\EIÌb ”†€™Ø˜YùŠê l¬VVfVVvd** ³-ð?rd*- £æÿ—…„#ÐÄùU&iâüj¨ä\ll6n~6~VV;++ß !ŽüIW9@‘ ©$ öŽ K+ç×<ÿyКÑØøøxÿtˆÙAf&`€¢‰³Ðî5£™‰-@b:{üOZA+gg{~777f;'fˆ£¥0#À älP:]æ€?Z(™Øÿn™  arúK¡±pv3q^¶ 3 ØéÕÅlt¼f¨Ë*”í࿌þ2`ü}86f¶ÿ†ûÛû@ ðŸÎ&ff;{°l °ÙÊÒ ÌÎîÎŒ°ù†&¶NWW­‰é«ÁŸ¥›¤ÅT&¯þÝŸ“™#ÈÞÙ‰Ù dûG,„y=f)°¹ÄÎvvBþ£>I#ÐìõÜ=Xþ¾\0Ä ìõ²Í-þhÃÜÅžE rpÊJþmó*BþGf tp±²²òðñ€ »™Ë 4<ì*Ùþ¿öàãe±X¼¶ôY_¿½œL\gG ×¿ÿKÈlls™3Àh #ÿýU ´ø‹_ïßäøÈú:~lÖ?>ÿ}2x0sØÖãó?¯˜EGJIRAšáï–ÿ«‡¸¼˜¸ÙLì\¬66vÏëƒÏÿÆQ1ý]Ç¿|eÁß_從ÓJvý{hÿ^:ÀÿÆR‚¼N.@ûÏ ë³r±š½þaûÿ<îºüÿ›ò?¢ü¿úÿ­HÚÅÖöO=í_ÿ?z;­Ç߯“ëâüºŠ×]ÿ_Smà_««4¹Øý_­¬³Éë6ˆ-_'š‰™“û/1ÈIä4W9›Yý54É5ÿX7[¨qýñ‚0±±²þÝ뎙ټ¾Dœ^'óOðu…þ7­Ø bþÇ®±sqLM<_¯ú•¸^l¯Kitÿs–,Ì`ˆó« àµE€Äù{åæ°ˆÿ!ú‹x,ÿ/€Eò¿ÄÃ`‘ù‡^-ÿK¼¯:µˆÀ¢ññXtÿK|¯~&ÿ%ÎWË××…Ý?’?΀Åü_È`þ _Yü 9,–ÿÂ×pVÿB. è_øšÚæ_øÚí¿ðµL»ðuXÀÿÂ×2 ÿ”ýzhö¯ ùW¡l¯¹ÿ…¯¹þ…¯ÎÿÂ×R\þ…¯¥¸þƒì¯¹ÝÿÄÿ¹j3GÇ××ÞŸ+ù:ÿá?ß±@ ;Ð yab&d]Ôz[%öÎi{œ­ÿ"ì Q{KŠÐuW5@Bðî’#7ü§XçÌNøÝÖ!{ÑK£«á/ïÔp~¼…ºV8 ÓMFï ,¡ûC'öùŽ=c°¹%ÞéwµA·+Ñi:|F‡óíÙôý‚Ôß+nÊ­NhŽ˜Q¡Ç#Ãxy9P¡ƒÚÄÒÛ*īŦgÚeß;]ˆŽÇ“Hïߥö°smô/–0¾­§¾;8@³—¿J?NÙëæ&’7žLSmuK<ÄÐ\µùÓš:ª‹P dÈnM\È\œdèÔa¼LF‡Ü)0b ÔñÑ‚çZt”åq:9¶ûbmÂOopd8›ìÔŒga•¯5u›#DWø­÷C/ a¼9†PN›{Eðõ4+Ùh´¦–ÊTƧÆÅË‹@Éa,s,D0hÁ…l?ÓuˇŠõ›À˜Šk@[õ{Þ3#’—.Û/ʘˆ~h ¢<´ÔB¥†ÄÏh˜ÐïÍ"¤û¯,èd‚É»F5>gç<j :P™~}³ÄNê×5“ÁS„º£aõöû¶5N:Î%¸@lYúÅzA5¦UÍorÖ–¬Õ^ºÑŠ6ûÚ úüunº.¾Ýׄj–îQ.·'Ët#…›#—Z3–Ç@±l‹í@tñîôlå›’v^Å]ž°¯j*þͶ‡áª¥¦~œ¢SÍöh\þ<öùæþüœê6¶õNS™>~ü‚OŽbS§Dt²ä#·Ñ%0¢å65_¿b"ä¬Ã®~&oÌl{†^þÍxÿÁ<ßQÊâƒÆoáíÚ=r„=ŽÐÙáå¥UÔ] ¹ 6g×4¯òÝ>z„K’HþiÏ•ãòÒ'óZ¯J>¼iéˆG}G‘´ôßÀ@£÷ËXôuÁ»1=Ü+tÝŒ•TiÑ(i,ÓÉ{QOjV»íÅJ=Ú/¦Áî' Qn!1'GU{:¦Æ=Ńol’¢w‘Öë¢ØáÎ^–? 7¯¼ã{ˆ.r£¥)©†;Ç KÚÂ|~iÅ‚—k'ÚòÏÜV{±ó%Èð”ÆqC­x1\øj/¶¸ÓZ,G¢D Æ´þEˆý‘Ó M׃Û4SI®_Y#ÔûI=‹7Ë?/Z#¼t9XØÉ>I»„)þp"†÷23ãÔ /ìz^d?¢WÊ ÚMéɺߩ‘å£DììK0ÊòV>¸FÂ<ÎÝ¢¶bÖB²  ‘vB5|w:ZNÎû%³^dpE/uÄê8«‘ñÓ|6q U:ãD&ï0´HzéÜI` 7Ùe¢*³ßº1ŠˆºÊõL+EqšJÖÝØ±9XoΙ\ *Ñ] „tɆœ|ùº‹’•[Mڡ̹+ò e5~j¾çÇÙ' f~íµù´ö»çZq³ÔÓ4b”’É•s¦(nžÝ™© oí»…À£[lÛ:ô¶Ó% Ý\ x*ÊcãúÎûcû©0”»òÍäÒš…rCCŽZyàMËÉ-ÌVY±-ã/©s=iùÓDµJ¬U!ÈþèL÷Æ{÷#ø(!yv=ºI„æ–Q‰s‰ËÏH\ä~1GÚ_' ;7â}q V/?/¦©>ýz›©‹.6QC€¢8bØ›ÙDÊjÏÿ0öžýÅßSëg+æ÷Ó½ùfq„ÆN\–šgš‹›è÷¿ÔÏØì~»ì‡r‰¾»4˜-"H±Š¿õA‰ñFà á²h·XSJCðË2aB/ƃùÚBÚ‹§Ø(±á©Ñ+³äf¦¯>X8·0Ä’ä¶O×bŸ›U`w=–yˆh¹ÔB‹°å«Ñ:ëéË~Ž|ð³¦%˜Ùž„shÖð–3¨k­ÕžæÂНwå©×Ût¯…+à{×Då£Ú‡éÄ-ïV›üàd!Iø€ô€r¦ø!BÌŠ`Ûœ¢Q;×½§VÞð [ë'c¯ÌK¼`G¬x í«*®)óùù“[¬n”±Ù%7^÷Øènê‡Vûͤ_M¼'ß„ çׇIý‡IBÝœãRò 49!í·OÎN»$GÂ0Õ%ú˜VCŠ;+|á³zê3½ã±Icµ)þÄíN·…t«ó &ãôy¦ÉOíc£Š8*6#¤Ë‚/0¾ÕxÐ¥‘d&Õ Öãù‘þaneD¢ÍLS¶·‹e¦Õ4f7w ó'nî1:g׌Óç}^‚ðó%“S@I²N{âôT•‘€2†\µbÌÒC%˜aú8?Ý"±ÝõˆðßYo Abô³b?|ñžÍòÓßI·µ­ï&+¡2-SìZÊGb´~/LF¸§¬½[¥'t<æ)9,Ò¸=a3z1=Dm’â~ÇÀ0¡á 7¡[‹ëÈë¡:é Ê×ÿ¶ux òçÝOÁfå:û1š‘h³_¿˜nÞí;ÍÓ=/¥%±!x#ËžÙj 0¿•Œ±ëŽGZ6Hóê“,%Ôgˆ åpPMÏë?‹H³ElÙ¤‹J¡ÄùRØëÝÍê~Hös²RA?Öô‹¶ˆ‘K/ÿME@¡†7]~zþ{Æ6}Í «JwÞÂlÁº+Á6Ë… Š‘h‹¨qägwXŒ ÿ¹$û-Ìqðõ®»ÊO€»E×/¿…Fõxj ¯f›r¬Ãðï·t¿kE#8J=|äTÉ„LC+€¢Dêµð*’û ä\¼Ú;ÇDí<0I$égÝï%(.}O¹Û&|½JúAÚ¸Ž xN(ÄR"f»F«Ò»ï†lt}’–²oQÔ r÷µã´1 »Õ¼_óm{æ[² ZŸTß­zQ”µ¨G]¨Ëúõu±s|îü«YcÃi·jÃV<Ž9p"ó3Æ|“VÚþ ms¨7_Bî䯔PªUdÇNt Ü¾N»"á0©$x€Ïlj§b›°©I·—ÞøhõGÇ÷ä÷·ƒ|¨• VÓ³MTMÄ”®Õ<ý’xÇG×™GÊAÜ Ö­5?Éç%‹‡Ÿ’ÆnÏ}kÄ&׉£tûý¶áT²`ÚÑ2êêÖÖÌ ­¢Îå³Áé¯ìukÞ*=àË~@äÎ@ÂÇåô0vûcN>öì-ÁöûìAs4Q‰ÚžuÿRsC«”Än°?&Ç‘Gž_Jñ1ò0*ÈånÛÇ(-ŸÀçèm‹Ç¹‡GÌèç_}Ìšs ¸¹~QŠa EgP$˜Ã¦äž ;";4„vwž «|7Ÿè5g5­f!^åŒGû½z£Ñng*pr²+£¥³Ô<Ú„MÉ×(ÀõüÈ·ƒX¸ÞŸ¯Ãß2Ô-èá°8ïSÖç„ jCk‡ÛoOZ&Qÿ®ôØñÖjšÛD0ÓÀݺC¤êÝ"‚…¦t@ª•á©l.Â|&É ²LµT•_Ô5i¢Hc/?u͆l‰Hû¥xæÄ€}jT£Â»8iH_g˜ó…*KÄš´ªAÅÊÎsÍ [Lߦ°›ê`¾Y¾þbeõé­Ì;€ÒÇGÅ€Ù;Ü™”ô;&ç+‹vìËVâ¸O:3„,HÅ”ÙkV®O;Þ……Ñ)ñDÌ5YËoz÷c÷¼lu­+]€HC5,|þRàþ8»Ëž‰¶<¢˜VSpļ:‰|Ê£Ú‡E–= ÿj¯\Üþt¤\&ø^WÎó0a†¢‹Td G`—ƒÔ ‡[lÁ%EØÈ*î€K5±ÒÛ{a† Ö¥a7€=®õäâël±‰ŸÎ¢?<ã§“®‹?—w×^>:±šà*v±Rq!µþИàf㦬%ÁuC?ƒ^ïwÞÈ™ýF•Q.H‚Ôì˜Õo0˜&ëg£Êëù3wM\Þ˜w·$;ç{ˆ\’LºÐ´éhª0íäÝÞOz1lz=J¯YÈe/¸2ôS•ýFÚ‘¦Yòêf¦Q™|ÃûØ”<+ÍT-˜¼¡Gu^Ä{á‹ÆÄs'Þ¦àÓî ´›„{æD¬xïÎ-ÈCø·ûWÁ´qatk’—0Ó“eŸ÷W$&RÄ&õÀÇgR¡ÉоxŽZ˜¤æ¸\öÌdŒã޹_õ•´‘ù:RÑÜ;ìЙ~nÝRè Ùý2y•„u?(8>†ú¬™Ë¹GÂÆ‘p²Ù\COÚ(]Ó'ƒ…{ÄtIÙEt À6ãG2el nêÍ‹Þ=4ƒ—G ³²‰fe‡ûéD3<á<Øpâ'v14úOF”PåîÇ9‚—Ô]š-jQ…_gÃ5 ]|Ê.îù¹Ÿ­™wñ|.+¼ 6‹™ë—G®ç®]‚„©¥à€rü˜§´átçº|ö½©‚OU«ˆö5¹ãcùsP×2R\×[¿°)Éu/©ú9>:)/àPÆ ¼—ñd åßÔqO{ý×=™¿dÓ·žÌ>z—Õ#¢]¿mmZã@f#> eÁî6ÜäÜô”ƒöt0’€06" äg0yú®gÙNTV÷q,M-Ë»+“ü°ºI,È<(Cáä‰)ýÞàb6W¾.fóøX–^hê*bYè"²rØ"¿o®.¦‡ˆ L/±.ˆ«!âç›-¹ðìAzq<œg›N)äôvÂ=­—EXÿ‘œa B…ó!aЛÈ+±eúÙñI²{I¾Jà€Tçú!$;–ârÛ¬º½T.µ­yxš*žÍ{àn¢þéI¿s½Í5|ú„¤•\„玣ŸX)¶H7egEoɸd×9lC–»aÀà2ha¼£M ØÏo0þFj×êRÁžê+K^±ÀäÔÝO‡5^=Fðµ{´u7~V>Ê;߀MV¾ËÄŠ>…aÚ‡ÛëÑy5MtÎ&äùÚâTe@êî0®âRÜ‚š;¡…¶Aù¸ „ i¯äüDMvP4”ª\vNDF-U¨“¸ûz½y`{ʨÔ¶åÑNË®·é½™â5jÍkâ]+cŽÿ® §l[.ñ ÿk×ÚÉÍ–Vž VÆð—bþOdoý±ÇËÅDØ•²òNáOÓ;#(–|¤WcÜøvNµþØ‘^"Œ—bîÀ—íÂÖIï’>m1mi¿y»KVL­÷¹oWšmè×c, ýíq†a:ö¨23^FŤŒÕV€[޲Osh˜Œ]XÛð.CG.TŽ«ãVC<‹ÅÉ_ù÷¤>ÛPU$¨‘kÍzÉ?Ô¦æ_vr-ÈõI,Ê羉¢9s€9IÈÐY°¬-P‡[àc+Ë •d+K2Ê7ÐVó‡‚<³b'KÌ4‰x,˜ÕŸÔÇq¬C9œpÍSqN‰×}Û‹ñIŠß¦÷ÚÂöÏÕÝE1?íô!-kl"ɼé¬ùÒT (pÈ|J[ëö€ñ=œËúö@( yiƒkeâ«EC kNÊÁH ÿ"8¹YO^ Ív¤ÛóE:¦ô1—¡ÜŒ¥\5%B pfW£Ùn#5ÝÜJ{KÈèàÏ·žñ] 螺hã)”çÎ…?eæ°ÍDrhÌÖî1Õ€:2Ä)S–rP£H— æPözÊG™˜ûn¯­¦YHXÖÉÞ#Ý‹ëåu“kaÒXÂÔ°Ä['v$¼8~m÷ãò“ÝØ;%$w8Å 5¯ýºõ—W•¤ô4Á'3ãÇ­–‚wöÏÅSÍ÷[Æ~åЍE:|i´Çš}±gøÏ’A‹WX¥©Z?œDÜtÇjÏ$*É`a3ndºÞ‡©XRÍ~ÂyÄÂd3@BoÿÈñ"ØþÐèYeà– žuÈDèw>ƒ-Q>µ¸™¿>þ–àÁ†“f{/ØuÅŠ³ç÷C)ˆ½êÅb-ÐxôÌ?ú=ÊPmec3 ÿC¬¯õ7jœ/êîoFõ'£‚.w_ö.–s·:Ô•;>m¸ 8´ ʱ"$¬ùû"ö[zߟÏmõ/$NÚ¹y×=:1LK?Ïœš(”R~ `$=´™ºpZ~kDÌ·‡BZuß™€ýž£joÈa¡üÎãs"9… .M£úêJ‹ŒkxåçX'«Ï¶n1åÏÎÓõÚ ìUÞ©¼¾Ä¶—óF6ž±S<æ¡O=¬/iÖ®a=­¾R‘gIšg3€â, ­±(ÝÌ;Ø/íl°²åcȇ‹b§3ËçŠ7EwöœN-ã¼èÎlsÈ“ÅGTÜßfÏã§ðlÎàCa³rRëN<ÅóètxbI¸˜›‚F¸ü­Öƒ¿"ƒüÛ“§}Èøç1¾l<Ö¼°[¶BJ†Â=/ïµ QŸíj!Ñê¼½Ÿ@\‚Q0 µg+ ÜÎ…¨6£­ØjäZËÖ·Neû®^ÝZã3gBc'P·ô‘ýÒú/†Wزµ ñ%¡±K.M¬´0œK„Èýòl¥#¹1Þ Ý ¬òÀ7y—éF6B{w3ÏçD’N*Nښɦ~ïs;IÆ-Ó²Á_È,áÝôdVØ£ÆgÑ„‹pÁfN’°Šc0løg$þ°}|–ô°G¼ÎïÚ÷ǧÀQ—;Du’{ã±ä ãûln€xWõ;œÕÈûŒÓÎXŸhÌ©ØÊsX³Ë“Ïå¥þ#*eàáÙaû›¸;…‚|VO6El”“—ЫâA؅-fçbÄ|åP¨BÊÚI2-»øýˆW¸Ùn¡œ¶îI!+'*<ÂÍËÑ ˆtâ_ 'ìÏí•x%çõ‰ÇáÒáB޲ÈýL%MA¨©Ïèsûßv·/ÙDVDE ÍÃÅÙ *Å®cƒQxîŒdó0ã“Ô9 í¼|s¾Cºf£»Gfü°¤*¨»EZ6Y6³C}ØWòu¦?Úox5xQŠS°â¡*̲õ|DVŠÖßîò]Â?Lq`yAbp4Ï‚ioш„‘Ó/dùŽh®¯gRñ?U¬—$Á~Y‡ ®<óu·ÄvÙóëŠg~.Ј…Î 31)î‹©•´&Ã{8vVïù=È€ ¿ˆÉ4ÎSÁ»Ý¾µNf¹äší[(êé½3ô„Ó¼ûÖ—Ïxèô°(€ Æ"ðmv9 Ú˜{`»Ü8rÚ*É«nW„‹C8äpNŽ‘—Za„PKÿž¢¹[™>쵈sÇ>ìÃÌ[MjWQ˜„éô"ì?£IÂ'“jYGÑ»²6« }ÒkûvWk~o¶iNÒ òÖÿ"‡!$×&Œ¢tR£àf¨V1ÿ>W)N_çJ}6)ÛUßÜr7ú–åMôd™v“²”lÁ#‘ÁUe¡ŽßÅläžØŠ4\+V\ æþ+s…kqœ’³i§ ÷MyÜ*_å ÐÝîvçGÔôƒ¼cû͵pÇ4?c÷šô¾™ØrðªHÁpêÏyô¤~èÛ5Ôó“VsW%Ç_ÅË,{k•r)Iy¢„˜°g)w·ÈÏo/8°jã'?ÚÓCÑ^˜‹Wèg':U˜v%²;-u"ãž”È×B4š.;ë"LÁ¾ï’2ø”!5éô;šLo Ïb2~úµx(Eí°Ñù#;Ç~–ÝGq½k·ó[Bµ© oé&1`²zëAz6"¡º¯Æ¼¾O·ˆóÓ–üô·¢hú¸ÍV5ðÒŒ²| ¨¹ï¤óÍ_|™xCuŠ»ÈSW¬.TE‘4kòKóy@bJ0÷Ì7œ>eø4Ñ9K¤£µù\¥ F§¥ÇÇ#œNçì^Ð0áë[Fdèé 6Ð[´£T ²"Qܾ7ËU÷ÍޝQ"ˆ~ZÄÐ|ü{1–geFzOU½#&' ¥ÕŒw ®¼Pç@½÷¡Æ`\_Ì™ÓOõ£™)šR oÚ©&¦Ñ’(R¹Úc×rM"œªj ¡f•¹ —"¤¸ms©ÿP$#*<¿yÑ‚ü¨E×Ïz£e\è)Äè!'TªÁºšH€@ÅÂäzõdC*ydÂÎ$ Ðj—ÛôU’þ;½êm¥ú"ri·JjTï,S+l¯ìïx¸°/?üImª ÛðàHä…¢E*ŸãX}Á÷S3ÛÁX"H8xoß}Í !èØêØô“áxÇÇÐŠÎØã÷k9—1²ï6ôµ Þ‰ÔOA¯‰wÀBqNâöfÆ!„—‹9”­)UÙ°ô±Æ ¥]4itâ’¨‹IöØxs6Hú~<âX€¿UóÔ‡ÝoFŸ.`«Á“ŒPi°vJ©7¼úœ)`¸[¦ª¸¯ãË"5ºtþæ>[FFZF¬òC jØÅLž4#Ạù×é9,wä¬k¾üXg˜ŠµŽþ² ¿wuŠu¡+”Ö—™q?_âÒÒÂOÃó—àr“˜Eèþb)cÍÈutdLùXªŒÓ±“A ½¸¼Ý6zkµä{Q¯Ö—#"¸ËºÍ>ã&ö^Ñz¢7*Ò×lAƒ óÞÔTl¹šK¨¯åò¤NÂù>T´—ÉV±¦ÖýÀ—ú£$‹²K{'Ø›ÄHmÜ÷šå«˜¢†f¾…õ¨–JèŒë ~kˆ-äNGà-ÛŽQÎMàâ—ù¨·³™¥‚/j*øLdÊùJU Må>s‰p½80XFQ«³ùäöìn§êbäm¼ N”Mâ÷Ùäúܹ#Ûizmú'/f§ò:ðÞmˆ°‹‚Aìdî…%$¬'0L/Ò+GÝÑ$¡ ³)]ÖwæÊAƒ§HÊ¿nù7Ñ=‚j¨J›»c~‹#‹t(bÊÖïÀhT¹îiëœ}HP>ݪbtb¢.ª ¨åîÿ¯#+Ô%Ù ­\Ö2ïo=Ýxßé v)DûtA·RƒV|3DP]+?¶k‘dWƒmÖKÑ£äbÑÆ•a³tQðùñ鄞°üìé{;Lkìí»Ø|‡T#Àoæõ[÷#ϯÑ|sö/ÉDÅDÓePImLÊÙ…Ûoßmñ=¢aÊY¿ëæ—ž"âÐ¥ÙŒTe²ÔµúÙ»ø-IRgE‰ÇÕƒ!‰HiôR1Äýì½€(Zèo‚Í8âÆUMWëÔY‘ªP—í›$¬â/ÞˆPO½'º­YïÍâé{ Xš¨Ô-Ñ ŒslÇ=D:šOÝl8®‰´¸„ÎÅoÍ¿™1ÆAŇwü{ CÕ‰ñc ´Ôa±j®?oQ9 ¤yHq$0-P|åLÿ¶¿Ù`…9S 53MÁFÞ©ì )å˜WŽTíû¿mçF\ˆYþ uaä3:ô€vÓ›a,®Ì­§OÀ“VŠ{<9Í%ûe½$¾³†#Šºó¥'‘õyv)+6ó–oÜDاâj16î¢ÿA¼vW¾+Áú&}`û[.AK<à2¯lM"Æ,J7ã·ÎÁi”ü¨“ZíVܯ ·Î7."xŸd\òô©GJ*¯’Fu‰š9 ƒï¤Œž¢‹°–Û Ì´èߌLÃDŒU*ìv²9"9ZuìÚ;#¾°Öy„ÝpJ]ÔN" ¸\wßKåëV88½yc4iÓFÛš‚NÛ*.¶òÄv?-H„Ÿ Èjïae“+f]zNñÍ$FÔñßfüî³– ž³óyѨhç$·à’©6˹Öαý4èœD}D«¤ðümgÍg{ãG°=Dž¬`©·ÖDz£ËLR,΢§äh~9øjÜG :Î8Ý‘~¤¶¶Æhòý3ÏÀ›€ÄÓû¨·óù@¤ÉþxËKàÇdÇjkO6ùç~ãC®—Ï’ Y´Ïê©‘YF%jÄvÔ†A ñûÇ›tEmcÔߌ%,â<­6ë)ë\Õ΄#duŸ r4s]ë˜ï‚B¤2ïki!¡œ„O÷‡ß.Pi߀¨4ßшKl!‰êøªåM剛—z|ržÐ]glpDkšFµä«+b‚i‰p›ùÙ°í‹ÞäYPÜ—‘˜§z@bÒHÃÉÛ2©vö??­úpKÃV:9½KH’%Ÿ,bÖŽközÿÓEÃ^bés·ËÜbÌ` J“Þ%YtEY”ÁÎF“†Øs31%e^UM„ø0ͦÅÀ“CJµñP.þæä]ÖàÞÍmšÀ,⦡ð§Š,a†Ju¿YöJ„øá>v,LjV?&%õ¢¥_¥:Ž6†ŒÓÊÏ%”åMGï<´]¦æ…ʊ룭aï^mؘ®ÑÜÉ'Û½šÜÓñýÀ\¥4ØD[÷*¼œ±Óp>bu¹d;áKZ9½Ž–,Á7¿S¾&ÆÆœšåãïAÞL߯ü6ØŠ¥ÙT&¦lÎj:4 øñ å o=É£LS«8‚‘?!ŒkBÿ 5< ZXçºunß¼6DÝ?4ŒvåÇÈ*›,9¬1ëï£Ü¡ˆI6ý¬f³Þ±ÅÏz/Ö\Pê˜Wøv»óg©žÝÆ¿:‘) bïM®ÄªÕüÅG·Åá/œã™‘7uå‰WA?{¢sÕÌ­Úýœm¿ Öám6”Ó(ZŒñ܈0,ÜlŽ×Ö‘ À˜mxn÷;é%ìæ¿×Ç%™üªMÐ%{ir‡ËmÞœïçÔþÊ¥ÍNLNü{Ê|96úíÐ^ÁjçPܰî`}­o2‰4å$þ¼goåÞÔë'ƒçÖ¼ˆúÖ ØO ™œþm„µ*½’?CÊgúýÈ! ~D#%‹â€—jÝŸ®ûÂ3ä‚? Úîí½‹N¸n§u¾ý˜Ä_Ãß\©µÞL¡^±øaŸ±›¿àÊ]Kׯ4ˆÞ~ÊE‡œß±X/ò^_m§ŽŸaytCûaIAø‘ìgüSÑá;Ó¤ø»“µú€H"Òp'Ô!Zמ(uQEÁÜÔÍY˜.ƒÁ&¸üã¿›lñA¥_R¡6 U¶# ÓxÞëÄ0ót¨rœÇØ Ù¾†ßÆ'÷Ny¬Ð‰uaLØ’=yÜ*£ ­L¤HAU½Œ’"nr§åXK ïïn€¥Þ0BÙ¾ýP³Aýã½÷ÏÚP¢“̉¿ÉªÞø¯¼s‡¤LFƒÀÆ{JJäKó'†Öïqë‚ Ë9†ÄT|‚ÍòäœÄ1iÎÁ¾ùTy–\Ï[8DÀŠ„|+•¨¾z† ëkæ‹¡.z8H¨§2]ÿ’†u²=^nãѵêî~äÞV¨.‰aGƒ ½Ùr×¶ ¶M¹Ãhwé/(ú\Æmj-gUÐ4;½„ñ¶o¾£åÒì©tó1bê~^1òu¸œ¶ÓxOL,’êº!<Ý_‰ªîϽò¤Ÿ4m^v|óqWÅ^X›4ÇÉ;¡Wê—”_vÙ{a=¿Ÿ[@ƒô¡P à•iÓ[ ñiæÎ”ب |SQ~ß;úÚÑOòû—’Á•ˆÇ†JhžU f‰Ž^)ZéâÍ|mBÅ Îg.¥Mj\Øiû[ 7Òj,=/(¥5Íc ºãÆïÑ£¥-ž‘#µÄ'«¥V™Hj6BÖØ¦Ê5@¡nô.¿¢]14è„°)§*OŠrŒ%ß¿è8ùŽ–;s‹×7NµD‘c«ºñ š(÷œéàØ)¥[ûóLéœ5ŒÌmã v¶ˆ(‘0EûzBRyl*5¥T§Ü§$L?Vìí“Rê’½>„¸Œ+‡xðÑ]‡*w‘#æFŽ^ñè„ËõR£À#o¤'å S#7 ׋XxV¸P64`YLäAÆ6KþÃÎñ”ì qIÈÆÌ¢O2ÏÅL¤°OÁ^¦.>Ôt¦X|s‰;^ÌWôhVQ§ BÏ€nC.‰Û)÷%ãçe¸Çr>#éf· %¹Ø”ØÆÐc•tò †à½FÿEƒÆÏs“u>ÔÀï<²ýçìÞõœQ„q b]+ÖÈM¨±òFÄ{¥2Æ•J¨E=ºù˜Ú’ÄQ„ìëÃ…{•BLŠç²ÍÛDtycªTƒ–¹FF?دçß{‹ \€{ ʪ¶Î›˜áœ†xÇ£ çz‰mˆ>e·MçíºÇEð0Hg{Žáç»ÚW£pš=5`ÌöâÕÚ4^¿ƒ^pL«‘¯Ù±œxGçD6²»ÓQñþiÐèDIÁµÃöÅ;&¤™Ém\ݾl» ±„“U°î0ª¤@dã¼N÷jÖü¾;8ÙÀÆtÜ œ2ö¡h[Ô÷‚Œ@HžŠGç§`Ìú|„0ž¬}(Ü|ÇòS::JOö/¶ ä²J2ßÖÍmž—.&™ÈÄÓaêòô sâwR7>¿}t‹!%ƒ\ªt/iX¨_™úIJµœ§ b øZ—m7Ù紉ÚGÊ+iÉàYiú&Î¥”—ÕÍ‘ÎD—döx _`°•Pǽß$fÎÒ¥ðWÏ÷);÷¾ã¦ìeqŠ$ªÍqD ŽØÕÂ꙼§lÅë¡:’ñ>[)Âc‰‹²õª&`ZbWôÛ^œjŠ5}L^)Öö ¡Ù¸ŸŽ€jÂ.4¥Æe>¸/¨°he;¸Ï£Z‚"SPº oEq\&S×e û%Z¶–”™&ä’[{èºR›§RŸZ}tk¼ñé¥ÎúR.8iè=t=”2½a"K¤$wÍ„Çh±cÙ>Íhúº»¼jJíD=T>yG’’0êTä‰÷»kêCwIE»¯˜²ÕíIèŽ!iÉyΊ|Ã`†:®bZ’_0¤ ›%|ÒnC>å&ÐÕb|$[=çEIs)œ»yËÐÒ~ñt\¶ËÄFm$.6(ï¦/kç H¨þuÊãeI²ìár(º2³{ÆT³Ó•Æ9ò;-êš335¦ÅÅJ±Gÿë>K.©ÂÀ,¯w»Ä°ZÎ)C´eEY„äÆ>} æ¤ìP Öš ~¦=Cöyüޏþ¯éýæÈ û1Œ¹áÅýbD*À 4± |uãìÙÌ…Å×k6§Æ#‰X–•ýejpðï©ÈpÖ8^™õůÐ÷Ã'걺 þÞ6nÌ1ŽÑ–1˜1¡ØÉ(Ò-púSgÔï˜+•½ídÕúâí%“ý Êý@äÙò’yˆÛ‹'/]6š ƒ \q‡>þ!F§²s¡ÖËRwÇVŨçÒ<ÍÅÖ­8ÏEä@‡(º'rXŽj%+h·GÝÔqïaá$c#…•¾$\Q,ˆt ÙްFÈ4çØT}°3'}žuæÊ±y˜°u‹Ò\x77,Ž–ÅÊÑó‡Wê‰àVï<#$ú~ã}÷«Õärð—Ó“àÒ{T„ÓëÖQœf«{÷ÉÔN²Føg±MÊæËì~Ë,,ra.ò´ª¿}3{"Ž˜£Èú´,04¢Å_ýÝš±û‚æóµàí¤ö @éDž¬ô—0Bëw––AêØð¶Ì”¢9¹UÛ¼U.q)¢…“†ø•—2¡©«6sã·˜8Åq?œröX|ÝãÁ_ˆ’ÎkùΪ²§ ”ú¨ª eØ€cÙ 1q¬:ç3·¥·WçÉ&$(¾F<ÖcÜ”»N~I¿ iã¾DPƒ‘z鯭XøÑùôK endstream endobj 733 0 obj << /Length1 2578 /Length2 16968 /Length3 0 /Length 18455 /Filter /FlateDecode >> stream xÚŒ·eT\ÝÒˆ»»Ó¸»Cpwî4îîîÜ„àî œàÜÝ=l:WÞä~3?fõZt?¥OÕ®Úç@E¦¢Î$jîh ”rtpcbcfåˆ+ª+hh°±XY9˜YYÙ¨¨4¬Ýì€4Tï.®ÖŽüÙˆ»MÜ@2 7©¢£@ÎÝÀÆ`ãægãáge°³²òý×ÐÑ… aâamPdÈ9:]¨Ä¼]¬-­Ü@™þû@kF`ãããaü—;@ÔèbmfâP4q³Úƒ2š™ØÔͬnÞÿ‚ö•››? ‹§§'³‰½+³£‹¥#ÀÓÚÍ  tºxÍ¿Ë(™Øÿ)Ž  aeíúo•º£…›§‰ ØY›\ANîæ@(?@]V ìtø·±Â¿ ÿi€™íŸpÿñþÈÚá_Î&ffŽöN&ÞÖ– k; @YJÙÍË`â`þÛÐÄÎÕäoâabmgb 2øy€”¨*ÀTã*t5s±vrsevµ¶û]%Ëï0 FK:˜‹;ÚÛÜ\~ó“°vš:ïÍòÏÛ:8z:øþÁÖæ¿K1wwbÑt°vvÊJüÇ $Bø#³º¸XYYyA t½Ì¬X~'ÑðvþKÉö[ ªÃß×ÉÑ `*èom}!øºšxn.î@ß¿ÿ‹ØØæÖfnS ¥µŸè 1Ðâß4.Ö^=VвXþùeš3sG;ï?æÿ:hEQ%m Q†ŠþG-&æèðebg0±sp¸ÙxÜ|Üÿÿ ¤bbý"¹Ê:X8øþÍÔ¨ÿröøÏ ÐþgOèÿKÉ4À@íŸy×gåb5ýaûÿ=õÿrùÿößQþÌûÿå$ång÷/ Úÿšü¿,Lì­í¼ÿcaw7Ð:(:‚–Âáÿšjÿ½ÅŠ@skwûÿ«•u3­…¨ƒ%h´™ø˜9¹ÿ-¶v•²öš«X»™YýkLþ-Öü½vvÖ@GWëßW €‰•õÿè@»ff ºN\AÓù/´Jÿ›UÒÁÌÑü÷αsqL\\L¼XACÅÎÅðe-§9Ðë_ó `avpt¹@ú,]~-7€Eô·è߈À"öñXÄÿ ^‹ÄÄ`‘üñ°X¤þ 6‹ôÄ`‘ýƒ@þ PÅ?”AéePþñ‚2¨üAìµ?”Aýâ°hüA ú4ÿ P>­™üƒ8A1M\A‡oíjûÇDÉôÄÆÊdêbb´Z¸ý%æúøßSÿ3ۿŶ@·ÿ±çãøGþ@%›ýƒ¸@¹Íí@“ñEÎß{û?¤ ‹ù?Ô]sG;;—¿,@,€‚‚,€ÿ“”û·ÞÙ´‚\@­°øã¢kaíñWŒßjG÷¿s€L,ÿDé-?›€¸[ý©Ô1+o'+ Ã_ ™õ_ÄÔæ/:,Û¿ ¨9sƒº`÷{MþèA­´ÿA#ËŸT Lîö¦¿ï3Ë¿€îhÇ?A!@Ïò¿Ô ºœþ¨A!@S‡ÿ9[N¶ÿHÿ÷dA—‹h<ÿœ'¨gNvîq½^°8ÿ! j˜³»£ÐÜô¯£aIÿê*¨’?¸@Œ]öÖÿ;5\¿m€µš Äô¤ù‡ ¨·®v&®VþCt³¸Y¹ÿšPõnžŽ9€b¸ÿAçãñ1óüka@Þ^APxï¿ ¨Ï>È"ù]þêî>3wP£Ýþõ˜]ŒÿÅÿzù½€fK Žfa6 au¢„žL{߸5ïßÜI9>Øï0Cô)áÙ–r~¾ãMË•P³ªÑƒT„H$”üÀãiË'ÖÉ ‹Ž!MpÊÜøN‰éŽvêŠõAR^Ƨ#qïA™ ²Ê{*!ñq õGì@â݃CgeB’ÊÂjxåÃ:>œ_!çÊ2vªü0s#]¬6!‘ˆrÝ_¦iät¿œþĬîÄ0ž_èCæ œ‹Fpk¸4%Ô)çáïïfÿeÕ)/ÒÞÃX“OspÃX<òsI29€‚RÐ…Gçk À½/µDBjálœ½ýNöƒ²“§Ðä}ÿR¦ ¼…gðI±•Ìy¼OOùÉH÷¬ íÅ'Œ™në™ïÆ{PŸ”bßáD|–¥Œ_ÔŠ™´<’ mk9Å¿³KÚ“âN24j‡×yžOrÛDAÒ{_y€~dD„vT–è5–7Ñ+$:óc˜¢Í;”ßZÀ ”ÒÐãí`k3ñJÝ¡Y*œç7ëŸñ0нì­Ú¯ñŽhœTœfcH*×ö9n $ñ˜ä0­ÆýJ)˜Œ&j0µ~€?W@òëjVŽXÝM†‚†m}Õ¼ýMƒíäìi`VÜ¿M·ì­Bô;­w”P ¢YFƒðþã ”ù µÙ¢–>ùÚKôšvh¯ñÄ$«6aù2ë<úý‡¬%Oçf ?š¤³ðb©Zȋϓ8UpÈ(ÍÌxаû3˜ÈÞÇ~duU^úƒM¤¡LôÅdÍ4D+Q~M{h|h½((#*üSýў㘱8n,Ì[19qbO„13­™ qï$‡©|Sae¢ ® %Œ‹}ÙÏ Ë³bžþ|±ú£Ûc1XÊöC-]«SÐïosTPkd ŽÓÐÌz4ïX f熙ñ©ðÔ™Íçì\‡(3»º²9QX_/xÈH*Çè¢îJ"˜0ö6},1Ý9¸.:È-9 œ’5“ ]¾™Ý7ÜîeÔÀ”úBráÁ×´œ>ƒ±H¤ñëêÒhüR5WdGÉ÷…ÉÉ(†Rþ˜Ããdý9±Âu ޶ƶU”€„N‘Åà¡·QMÇp–Úfëã§AúÓœ’øOlŽo¢zb®¥ý!?¾µÐw Ýá“ ÖÞÜ2°35N‚Ò¸¿…X<Ò¦¹}˜ECç“dÊÌëÁ?Dkáuz4ãGÅNÍ”ï+ï?l²~ˆ8”ó¯üÆ(dìø*eÞ¯}†Iãó\ d[)ë ‹š‰kTêJe¶N(EÌR¾ØÿbsVZþv£ÔÙÖA”#üåµ¢— ®$*Ε"ÓEå3¸¾E§ýw«X½ñYóµϨߣ0o›4X?„ñ1ÒŸ…“Ê©˜8] f,ÀáA¸Ri3ÂX¥Ü«†]O߃—8¶„t3_Øn©äÁú$ô²g³œ‰ëÜî6Ä4)©¢¦²¡W=Çߚ˲¡ÆÆYzêB-©ˆª¶ Šf ½ç°è<ʪJ¡xâùPºa"K)¬)î-‰ÚûêZ7…ÏLZMë–ܰ öžâXU 7HBÛå´Þuz½¬=€Ï÷ºñ0Ø´•©¼ú5«Ô ?+‡’©p™“nlZçç ³(=Á<ÄgˆÀÄÁ_‹fÚ‡ *ï5ã'™I<4ôzö/*>lʪ\mÐ~P±$^~)Û^³’“âE±gC ¡w#0›ãc>âé/[ ÷œ\¹^¼z4gµ}•ë÷OPõ¬®H7}ç~vN]DQÉxÞJ!+é½Ù>èi(¯cf6R¤ô,c «YpRÏzz!4úÁ‡Î†_iÙ0¨LK^Æ$ÒëÅÉ=DT1î²½‡JîW3iFeÉXù÷a¯¨›aÕÐU½Å«dö<Ó6ÈYp?Whè™u ™'i˜ÅY„ÄE’|òa®Ì+‘…2œnè2úZæÖLÀY/ÝÉîJÚñ¼ªð*ŽZÅ—r|ÂÉ|VZ}~hV$ÚKÉ7ýI-É#&iM²³×nX#8´çSaKŠÕ,÷;âÑ“mVçq£püf¡Çgˆ?'Qö*}‡,Õ)š-ÎD®¯*f4Øx·`ŸH~ä(Dïc1¯ÔøòƒU/é”^Gá ‡“ t_­ôò„ ]„P²/¾×<Ÿ)‰GÓÎÚÍ>~ëË®gõ¹¾(š¶O™îÕ³®FÐ(bnhýÊmT,|øÁóã£L鑤bO\ëMUÓÅü ˜Ý>sFïŠÊ¦úö˜œ(ÆQõ¡« ,¬n&âmês£Œ”3µ­"³k˜Ò Ï?ÅkèMüÜ8vä×óÍÆÇ¼xÝ"Èÿµe~G{Vן÷BSS0…'ßÀ¯}ÝkQ,¤qÜ~“—QŽ´ð¾˜Òq5Zùº„½Îœìñ :µC¬×c°äÍØdou Bv£\iÁ_pU4kÑürs¿Ë•ªÁ¾v³Ï´OÎgðEå)¼LÒú¼ñ®œÜø!òÔ  ÁöîCS>MÆEÉ`²­åJµ+C"¾ÕÃdÌ–Žyºá’Àk2×vé|?=Ög†t–WÁúè¥cÉ­/¨ŸÑ´ÑË‚ÆH R,Ö¢!rbŽ(ó„ã´¸?rÌ–}ø|¦Ød -‡r˜ÿ€‡Âh€§NŽ˜\Ö 3)ÄÌÑDqC¸³…z!â×vn¼1*ðŘ ELh6ËüšEïvòB#²ÑÿE?áô¥ ôN#Õ¾õì‚h,I®úV%ç¡•Ñí½8¸õG¸1«j[`~•Å­­1¹níÔ‘ièe×@ÝѼk1qÕcG<ñ#ù°‡œ¥åèí†Õ¦žÖŽ\Þq‘€ú$Çã·/ú´°-AæÉ‘þ³Uúb»Øas— ¾hƼ»“Tæ^×Áì~Œ$Ò§½tÛí82ËB^嚈=œÌÍ~º\”zÆÖ|/¤ÂvÌØˆÐ3¾¸˜¹2óÝij(ˆctN¦˜rïìíCÛwQ’eŒ8Ç+;!‡­ñǼ$MpÞbõ¬ ôiL+‹ºÓÛ¤Ro×wG&9Ñå`¥É—]Êw+U²LËÕØïBNr+{[sà9Ió–>Ç̯顳E°àÙü¬Tq@e(Üþ5³¨ªm¦è†˜‘)œdIÈÎÃÁƒ Å‘‘Éj¹7zPzŠüpm>+(iT™%Æ:;Á¬;`s!Ô±K[b¸QœÚ+ÏF”ø‚¯õàjúƒ™k]š4ä«Îì7&ÓäÏ©.–ôÝnt%úBåS9; Ì;AèžWÌ(jæ`³‘WÓûR7â¶D¤þ†P“pùu†Dþ ©ãÓU¢dð]>›`•¸wú±¦ÙtPÜÍ%Ó©9iï{ Œò¼!À]Hä9ÒtÑú€woî²B0­qä­’æë`DvôpfÆ3u£ñß!êÉVk³2 üçd†$¾VÊD¦œÄb¥í0† ”ù» ±l¬ú Ÿp•ñ ‡W@rúLë¤ãÉj¶äk²N¿oÞÁsµÉÑÈ@†×zc+éCÛ•ˆ §ð:À*Ü ƒš 1-ƒ^“Ìúé ôs{ø Š?"<}RÚ½i3êA5×·ÖÖ°îB£|þŠ£JÚiBüª4™óttè»9ÛÝþL˜ ;CG„Q¨j*É(‹ÅÁáç”Ãȹ#¬Qõ+¢ql„óäp$nÒwM“ø®ÆE¾ 9lõ9-Àë%eü ýB(Eå·ðŸê‹_{ »¯S¬´µ[ ó||¿wŸN K«Õ¡>~Ÿ?‹{oùv%ß^‹¬%¨;ØèކxÇ1\©•§9ª{÷ä£qB‘§@î¯WBÔzå´>Õÿ j…«\lI)æ +$üÚª¡´©Òi-G?Âñš¼b€E*z³%€Ž än\^L‘üѰ¬>B9›FNµOš®r•ZE˜9þ¢{ º(âSh‡bÞÕf1VqUÎ>ü¾sÓÿ\Ù{ñƒ: ËžYùf©°ÌÛ V$æaT<8Ç¿ÍN†É ”ŽMÒÙ^a@̘$ÿ½{°Ô¢ÅBM:K4šùxàhýã}¯e;‡x0Ç ø@O^&ö‚?éû™ùºðŸ_ÖvQ'¬á¿º\aŒ¯Ý´&ßP·8¶?¸[/OÖ¶`ñp|Ü謜çŽÑ9ÿ¾—ÌÁ$‚îïŒ ©L&Ú´Ò+džÿÆÎ½Öºž:¡°p¡cöÇ|[ɤÏn¾u5»]ꙹIlj㞴ÊôŒ¯§fôú…Ûk!ï¦á@¯=éæ)oÃ6¿°:‚'è%0Ë”¼¡ϬubTØq™ ̧<}J2C&Cñ˜}§ñš;×d÷:!^~(ÞÃJß ð¨;8Èö¼ï/\¤Mà˜^kTÓ2vÐÚÃ_vAq¿#?Ù!]^BxG»Y!YfôcC Öj#MxT?â¾¹ ŸÞ*Þ¦zzuæÈóÃþ¦câ«#.mòF7dð*µOáB°}´|_}zí+>ç›H†lÏc gÑÄú9‹ÞãØöµoô äŸOzß³ˆA3Û…¹L|èå%y)…àðy°Àšð]Þ?[8Ï+``K&êC{s+c¹v%Ÿn.úê;_ÎM$»ˆ3éÖ{äñ¢\¥0*ÞCxÈx°¾µsϪØH®$©oþàâL«¨Ú6|ØÌã‡Úv›ùIÏ$¯¤S†œe Ud µG±ft=ô­í­–hþGh&“ÄâôƬ²ôwÁ,M ¨Å ¨¨3 s¾ÖÆ„wߌEÜt·òcZºuâŽðö_yÒ À†?¶ptž…O³ŠÅä@5âb¨ìöº …M} PqråÊ›"#þæfFû86ЬVZS°tz„`éW§ŸÞè½PêQ³¶E«¹m½|BáËø©ÕMÆ·´ S•{$äé+ŽÝ²„‘ ]v¨ï9 Âvq‡‰¸¤¼}¶tvt—T¿.`Ü+â 7lÁƒ÷D ÞË-Ë÷ÃQò¦Õ]}Q»S©€ }¾nSÉwKÎdì"ï*sÙ6çKÀ+oæü,qoú\K³cäj8ÿ›A®í“¹Î'¦Î _+QYÁÚ±E™K*=>&!»+9bY™æOuÅ¢,ø`ûP*CZóz¬°~y&/_êPxÙÝ!ib®ZŠùr“´">,騚+ qõ²e¯ó½™F#.ÙÀE¹¤‡³/¬Çr-§~sÀåxÞf¬iëâúr¦ÔöYjf‘¬µâ$eã˜À¡nzæRroáû¨A´ó„PŠ(‘pÕšž²¾êš · W+cÒy­¤3¶ ³Gjräø,ñŒGŠsóVO¸uç>)PýFøÄI.´ÁW AW•]Õw´|è%¨Û±s&w›Êuð^,¯Å—GjI]`Œwä…‚þ„@šIÎ$™Â`#F&{OÀUñ]¤‡xðh¢xÜÄw¼%ö—‘Q ß“èef£.¢j×zÓANwLš9åÍ®زX¹ÐA÷M×·ôä©Ìê÷Ù›”v” –ªŸ0¤ŸLfFä\BX~¿¾ªi§‘&Næ9—àˆƒ'Ó°WwÔë³>À›Ç–‘A©Pýú JŸ,ÇÅݤÌXûåÞ-~Ú•×QælûCð\ëø1g0üÄå¾w²Bà4Б"þ>ÚyR?ËÙ•ÁÖM­k -K5°•(a`÷Ö7Q/q³P-~~cul™ Óq'+ß¼“%êÖ %|Ý\'·å禒åÅt/)ÒòHü%ìæ‘pÕäx½£V‘'„ó`æ®Tl€Q¡;‡Oÿ»×Ÿ9‹X!¸Úžc‰êEˆÕ%hêÅQº}¬RÁIb$È÷žˆ•ñµ0dÚßô“µY‚»z£Óö—«#ù|y¥òý ¬&¬ñP!±…pŽD{ o+;k~Ͻ]V†ªî æy^ª‚mÔ0tcâEÃv¹ó4xñÒ½PŸRpq£Dâšã·‘U“{boŠ2Bv×ÊÖß.¿ß%b%±†$†•²ÌxWUCtìz±Ø¦†/I{x”P0¬fS1 ýu½ðÙÆžêÚ¾L³Ähn¢@„U‹N¤˜zäß¾T]/Éðµ±sy¾4Ê }€“æó €Š›*]W÷ë8W:ÇJ|Êtfäm—wž“˜Û¡r+z¼ëá+—¢íN×Á‚S”8xxgçÝÂë8žÝ¼Z• ñ›žëY¹ƒªÜËâ°.þ¼÷8ÜÖ6mœàŒ7 •Ÿj_ç׷⇗ÑDtv(ÀPožÚ[ Î OTuQ¬s‘`èKXï dÞ´•Íwé™Í Ÿ¨.1ž.Ò|$)Ñêj˜‚1÷[ˆŸÅd{Ëž›Ú¬/kžiR ´Læª÷쌹 s;æ¬üx¶"Pv{ø{HÇÉ·¡B¹Z„_2lÆÐ},V}&_žS¶_1áXPÄ»2Y? ]Ǫ$Ú0Ÿê"«÷ Ç\EfKÑ îu ÍÒžz|’WàK®…;®(ȡŲÕåìøÖ9ƒtH#…„]3Ä3oñW‘½ À^[ÀaqqÁ# ‰úŒ÷À?£ ͯ!ߨï"ð&GC\0p4ª&sŽã[šÖûB$Tª/\1Š"¸NýzôT.þ³jùz RéqEbŸØDsè§Ô*‘Òrͳӱ=wMêÇqÍ_çÑíµq9O¼S—ùí§(ãÜÁ;vC‘Ч&NºØpÊÔD¬;¤Y4Ýë¹O-û¦´dU#d¬_ÍŒ+¨}Üý«¿ê¿†Êy˧™2>eM™Ûlooo{Q¦Õèšïü¸áø - °ºœa~çЛrÝj³ :ʾ•JZ±m¦#›¢õ%*wö>diõ½ïü˜´Ö ré;;äö”Fݸ©FM‹õMò*#­ìSŒ¬íuÞ¸jYR°kCXlóÉœüñ®&ºìŸqD–žÓêz ®æÈŠ©¨yw¶>çÑa¶ÒêªMk^íXiˆºDéËùAõa ù¼%|8k‡ƒm¼Q—S/ ˆuYôÄÊ¥ îRŸ¦ ,$£åÈ•|ì£`5fuS~×ù<ØÁeN8îÊ£à§tWø3º|5ø®¾:Bz•놻ᾠãTI³AK–²1™¡ëõ²› ,å—ŸÚOvî1[ýÑ Ôüp€ôËXjNk6>¶\Yü-´º4 =M?øa[Wά¶³vôþVö%±ŒàCþᢱ W%¬ƒ¼cx¹¢)Æy²…ÉrR†]e댯¼¥OŽ.H‡xjΧ,sXaJ–ư7è$þŒÀ!bÍ¿g¶Åco×: cEÀ¬Ê”GŸk¥S„UècÀ—§=äªÜÝdû0"Þu¼CHü©Vr¼¸òS3]ù§ æB—d$+Úò½G*„Gƒ4mR)|jÔŒT[%µ„õàdðûÛ»òîG3Ÿ7­oh[­÷+¦½ÊÈÇE~ y1é…œ¾fSòÈñ}á¥RPCþ¡QRŠLõ ÿÛ—Ý›-³§ÉYfÀá7T £+­%ì7jÁ©Æu»ä#-ÍòÏ+è¢C®;³á?ayû›¦Wín—ˆè"6[K¬¹œ•°Ë¬Kç?mp ؽ_ÖÚdNlµG{ÐV);Ä„†é1 h=‰ÅÄ<(‹‚ý¼Ò)¬ªòË ÷\:ؾ¬O);9f\ÎL¶Ìq[#ŽLû Óbl†=Bí ·éèJP–§3xu‰°r7¹2*«˜†–IÛj£­@þ¤6­;MÞTvfK¶‹»ó#çT#&yÀ‰¸Ûs—´C4å½Ä…BìÉ©õHóö¤¨ç,Õg‹¿sÀÝ}ãjÔ£ñ»aÌd±¢SËç¾É¯˜ø\š…ØÈ¥‡Ù_`mëí¹Ë•£œ–«gúllkOÿŒ|úO°(ŠUÞ˜*F"?Äœ¤¯˜GBƒ¬#•ÕA*ó=“)Ž’ÁqæÛ߉–Gëm)ðKÙ8iRøF®Y"›Qu,貂œš,RœgÕŸ 4]yªà_ i¯›Å*"ΉNºXn¡±ê™¡Ó"àý¿fvžíñçr=?:†ªùB§“¢¥µ%R`DˆqâgyßP:]Xë8¬«è}¬¢{Wðã _ãXܹúðP©4^RC|Ö*ž6÷ÊD·ø¸u†¯gˆXÛðãEaÓÈ!'»Îß\—6”kmÂ:»sëõAÓj3¶$KH"P¸ü„ßé+vY2›I{‹çg„/~›Ð^ÃÅ"(¦®N–a¤'˜Ö^’ðÕ«bGŒåµ]kGµ~'Œe®Cdï£Å¨ \¢¡ÜEq²ûšš…‰Œ®æÖwôx´8 ÷2oÞU'è„ûõÏï?êLãoµ'8Ò÷™èkÞQ‰P!sLœpóãùþŽZÒÜ5iR6Æ´ýrð±/òá=Ò¼Þƒà ”êã‰Aø–#òÄ*j“»ï1¢§Í¶¦¦±å.û§IÃ>µ¸5rph—¼åêšõî¢ ”ì>½ì¸&ºÚæ¡|4z8có§šk.r'ù .Û§ƒâ`³)MˆŒÌ øîoU«6ú,°Øñw²‹Pªh+‰0GSùˆœÆVkSì¡Ð2²’Ôº=ÀöÁÞQXMÚE¥wt9´ÅåøI¼éu¯Uîºé§v¶|v$È+ÅeûÈ?]·®µIæèð1ÐŒÔ}b’¥Aë{ÆsËj­æ¥ƒ §Ûèƒ;ÖäMÅ«ó}·Ò†1æµ`V—¢‘öå ðÅÒû©KB¯auÊ—Å­É'gù~Ìö6Ï?m9÷ðU5¢—£)íþ’S­ºU.f+îÓ|ÆÃÒ¯åŒvÑÊOÒxE?°‰ãÓ `0B^ ÎT4³ì]˜Uh;£IñÁ2O˜p7]‚ÔX‹oñA5!0ówýŠ‘*Ó?@ÂM£Wä@µsÀ³ïŸgöÆ?øìæˆbÁPW#‘P°ÞiMºå¶Ì»:›¥¯ú`.—bêœ °écC‡¡Ø.¦Ÿ´Z3Bâ’Ÿ˜ìˆ;´mcj åÑÞ…%)é™™Á¥X%Ç!jÐ&•ýq!EDê(àïI3hß7ºôCŸª~=U¦Û 3vÆLØ$!ÕüJP„±…}ë[7¹5+Ý~âÁò€gè'ܸÞzÃÉaÛÓû%Çß4Ðåž‹"È;ý—%šPýJ-}]Ÿ«¤xt8h6:ô:ú¢ÙÖGYPw%ÙUqŠy²z¸ÊndtwPÇïV`íù¿nš|]ÖJÛèwlßN”ß ÿ8ô68ô‘‘öÍSw’ÖÊ]â’d¸·e0szì\3=éå¤}r¹~^Íjöa4#aÖí»^K§X£k¯5¥×"1¼¾\9=j¢âôR–°QfâÛ£<¥úÓCuǙᵑ-ŽÎ|‚ût™æ>–›˜՜ʑI$Û£_txÚÊé\‰&hÄ¥s-Ù{Ÿí\,p.©>l¹x•5 5ÛÜ¿ä¿J{8Q*@H©SÜÜïù¥-ÉØÜ‘Àº}rнCù6 5€(º¦š/Q€Û ‘–„Y°lÿ<† M…¯$µ»H…j‚JêBžÌhD¥ó!<@ Ø 9–ÿ- OÕ…?Íå ~g£¶ò(૽§uðJΚ¶È¦Þ{Üœl:&†¯W€w#ÑÈ¬Ø ¾Tøs5µkõ\˜Em¿(Žìl`˜ÞÃiut o&UóÈs¨«r|÷S ;ÙTx)‰ÊnwWeŠ´˜0Úo×öÿTÿø½.üÇèè%ð&¨·´Ë´ÊþÚÄÈ1)¨êx‘§ËŒ˜@ìY튔47ƒâFÒÕ˜Ðáq(”â™èfX(ÞUAUµ –8¢æÒ%Ù¨D" ò—äUIç´°!ÙÀ‚_èúññ±šÁ<‚–Óê0ùöÆ·º¥õ®K%ÍÂWì…¦‹k/Ï·;^|™ Úοª>Jt~^ɕݞ à‡AÿQE¤ A‹,ª).ÌCh:gs‡o.Jx`çϨ«Eˆ»ïhî½)~AqÂ_dû¾HÇú!¬ÕÇVç%]~øš3OÂw—Ü3J¦¡äËþä|óÞtÂËÑ”Ä:¥®æ\s1æš%±lО l«ÌUUC_ùESÕ!d€µEŒA²¹ääë?e`»ŸŸh ¼éR…N €°é佋 DJyîܸªdtv{ÄtéôÜö¬ë˜c—+EFUåáü4®yãõÕùb9”m8)Žç#ñ³Í‚éǶhdìgç4:ŽúÃ?W“nz»ù Wiÿrjåäèé¹ù×uËaï_±9á¬ÜÜóàµÎ™pÂ4 ßK¡Ã×UL®ã&™ë)?¸ìVóŒ—>rʘ"ع„¢®\ÈÊgúD ~¼â ]UØzvð@zñ2iX. f'RˆÎº¦kõ}?ƒt6}>ÄësaiÐd‚ÌNò‰ŒZ¦'%+<8Nå4n2ýÄb¾vyC`xyw·ß°fÄÚµ¨†Âyxé™eíe3<™Ð@.Òj8h“ŽÔepÁдtt6Ù¼ŸY&€¢ôÏâo°}6}D=¶#Æf’´ bzè¬.ñ½Q?D‘ɶÈÕ—~f ¦Ö·)ž¨—hÂsþEÙìc†Áq -{ÉÑnפ´X­o‘&¬vè8!´¯û¶}ÂKÍ­ÃYþb5¨©ølé¬|E.ý8¬íl¼:wêDD+PU}ÿ$L#£²lÚÄ2J(#]qÏûzJu ÿßzmYçÎê ᢅ%¯OnEü^° K|¨º]Έ0¶ÖVë¯\Ì>#&ÏßTPfQ!øìòX~žî]àì˜'(©ÍêÉ ^Zïm@oðÑŽÉ(b>K{ZNð#$ÑŒLJr´ñílóÙû¢FMÃÐïˆóÐb¨Äí(oC0ILF³ÁCgw€)ÂfA™Qæ°:Ñ$~HTX,Ã|+C>“ÙI-xØã¡Ã;šUý²ßK[£v¾bÅJ«:wŠêR]Â\£\Õwz¸Ì@êIÆz‹D3;ÂôuK³ËÅ÷æ]ä¼ÜjRCàAj’–‚ƒá¹=;”ÌuŠ÷üD©x|øæÏÛcj̈Ѕãoã¾Lïûc|*3†?rzú%yá}Ë ññ ½¯ÓŸ•R/=9vM©ýüe_úN5$qTBkáÉÊe.I[dŽ>Žå]jx°ffÞŠ?ËfwÀˆ¨#a ñ;|Mp/ÈD]sa¸1}Ý‘±„ŸçÖ7ˆ;ù =S»Ø:±û´Å_l0¸-mwÛ– O’4?ÌVBº O+¨íÁÞ½÷½ÐŠ=¸Âʪ–îÅ+b­­#rbØŽ+{;`e`)Ï™¤¾„Y¾ÎVv–ö•ƒì,H¨ËÏZ…œ²G[KC@® î$ææ{}çd ¡®z«ÍhtËF* ü*Ù0'‘ùËC ¶®c£É£×%â´p”%ô9!ô-žhyéð E´ÍcI2õ¯üÄH wcJŽÎI/ïJ;|HN–8Á¼PÑ1ï{×Zi‰8ÇL^Q'ÑÙ~iƒ‚ã2(Øm+@ ëØí­ÿ ¸ C\1öë„ _~L˜¾–ý/H*F|µéÅð |'˜¤šgôÜG6Vb!²$h¢N„wû»úìiáwåt!‹]þ}¤I}æ1}})fl)å2à»CÙÒ̤9“(›êˆ˜Ò©4±·JÓæ I¾æÛéÂRФڬkéù —‹š^Ô׋¯­Œ!νÏZK_êÞé¢^¹Jˆ{{+»-i48j ³°Œ®ÉNýdûÛ"ø…¤›·K×h¬©a‡ƒëâÍ!ÛSY\Voc›@gxÞ£„hôívZ]âmÒ>ÿ×&PÃØÎB4+‘M‡€»8=ù8²^óK»Ä¹=L 7MLt]¢§Ìê¸$ZŠ7û^åI‹åÖ¾ïwDÙùUSüÌâÇØfÇB]Áæ ëküƒ{8|Ú†t<ý.Á¦ý.¼‹áþLmKmí#®| ˜ü(ö¦±5ïµÛРPrSh·H@Rç÷¯wƒ2æ6k n¬jÍVžiª™, ¦Ã*jˆO?$p¦Â+àHJkšyP•ÉGÓ’"Jḿ ïf;%Ò¼<åAüªÅÌUyP_„ÂVAª”Ÿ‚ü!©¬«RÑæQ¨_7X_ïjÝ‡Š©ï}Œ¤)uÝE¡³½ ''õ¡Wî¼Â"Ë@[)ƒQÿ‚€8_)¾„3Â7 âqKayÕÇÔïa#üp— £øZ©Mà,ë Ö!sûˆ3$ÀÊú¾¡xXQ|$ Ðä2WHmÌ&€èƒìÿÖ¸k*xôâ€_]@¤Á(왿sÞ“3)–Xxot87¬Û †W}!—j!šÝ<0ÛJbjíöK‘WÝxÀaê“$rýQ2Q¯æ#GÂa#ê ©À|ɲ áe5äÊF6uý2vÓ!ÆC¤e€|F{  ¹Yºá6 ϶þ¤è6 õ¹Ao³§$Nº G·Š¬¤&£Ô†zU±âO¹Ê膳ñ)ânb-èÀ(EDÎ܈Ð|…·ïGHh—{B1ßHP-Oïb× ÝŸ(IÃð¡¯àz°eEz“°ÞåPãøb”[Ý.…Ñ€xjg;&Ðø¦&‹ p\f5i×s8ËýÊýÌ[¬0•*­ª.vtì“»k„å}ÊìŽ%^|Rø¾e†Šñ³LæÝóÄ I†‹ ¥~¡ëþ'/48‚4-æ~œw(‰_ö–Nïþ"|2¼»}—|õ>ºž#íðB‡4¶Ë\ºƒ‘ 0´Áœ k­–y¼ÅmŒ^/tÙþ-I’µÖZ 3ÙçALËõ ­:GO½2tdé¢k?™cS×ÉY#é ÄÀàW«‰Eopñ»¹ÃnbÈ/_`EÅ| B„(޽C¥%÷ìºîp§ Ý™¼?S&Í]!N­ êŠõž§)à—ÃÂ|Íîφ€‰wÁöâæàÅ8ï0Šìñ³¨Óô¨‚£‹2Û=¨3~‰Ê{çÉ †s¥?Ñ|Q(VÃLKB£+É-í¿{‚ #—¢Œu.¥ˆ–ÉZ~»›‡¹O‚.–¾ˆž)Dö«Ð£äÈo±³«î?fÃ0ªÓ8µwá}ÀÄÆ],êµûj7½ûŒfû^x†8u*‡¨ýc¦ F|”ÂsÛU+½T°cD ¤®š A:r1æüi¡ùÑš›ðG玈O©èÏŸÂ Í2ßí¹HÛÙEq ߯/.˜ t¬U=~”²‡.Ç© ӺĽMs·ñ†Ôô*´œã¬#‰­îW}'¶CÜῌO¿³ÞÇýëXr9(eŸ4PiøÈU¹!z¨d¡‘ókŸ8V•DjÜ{Ë2þV'˜ÖQsˆ|¥º:¦ú™0ÇYnD±hÆ^rËîâThX£:Ïkj}¤B)Ë4žvv¯ëႎͫ]|ehÊÃïSH'yR~ŽÔC-¾³¾³L¿ÃI ŽÛJ —¡× BHe¯¦ÊP®0—âõ¿nqñÌŽQ0Ñ'KÎ V¼ÈˆY„ˆÆy¿v:ÛP#¢I/Þ/Æ»j–b™á„_€¹_ëò¼âûlònÛ©yà]Õi¤H¾—8}=Gû¿‡J¬ö!P6Ý‚8_Ö;Ñ»_ jºDN–¿Ãb;yø²“*ÓÓ ÉI¤ð}˜|z¾ºz9su¼Í¿5´^ÎuT*Ng4Ë¢!êdábyýâ‰Ë 7« ·ß‚ðÕEˆÙùtºͺáã½l0V …ëöÕ »¬Ù–«Rá¶‹Žêtÿ†äð£P&Qq&Æâ„éw'AÈŽî1M½«ã¡¢¡ýhÀHv¤9§çø“ƒ¸8x3•¶t“ÁÚÏšŽöáÖ*C{¡ ¯2®NÛ®#ÉÁtôV"Èz0þtN‘rü()‹Û‡>—£˜£§ÂÃ…´Œò0ßg»ßźXé~ô”Æ8[N‚SJÅÑ[‰-=J­/¯9ÂF—½!&{ _R)V:ó›( <–Hj°#ÇÇt⸻&h cjÓ±~AFZN¸¶ ³<"Ôð³tî,q ™°ëÓïÁêÁçZÙ¬=yÚîŸ?Ȇ鋜ÅËLϹ$KŸÌ™¯™ðRæ°}?Å;Ž˜1Ú}»×l?µqlŠÿ™Åì~:/äŽóTwP=Ø’@67+l×<¨>ÅÜ[øEaªî¦Çc˜›ZÀÕÏK°šò*€–^· “m _D")ƒH[¶‡Zì “Jÿ0Ñ¡²1U(†Hu§V UDŽ’á}?árܯ/Âþ°ÅÉøÀtÇj¨aŠI7D×·øÜÏåÛÐhd{å×€6ŒeÒðãÙu+j%hu[±ðžfޤoåØº*Tröa¬Ö¤F¶oÐDÕc™¤l%+Ž1¸ö°\o×cPOqò?Y,eµÂRk!|Zùf?Ddæ6û©µ6­î@'¿HÁ„Jƒ²RxiF§‹ ©9E.=ÇÚT ºJˆ@Éÿ,í¶g9|³‘ÎM×烄`S}‰‚ÄCK`©ŒªVk2ïZµ=ˆD°º4Ð*5}fÆ·Ýxçû’ÍZÙÊóMÃu /\® ÷brZJâ *5|ç’½:Ÿ¿Fd öËŸvC2´¦Ò2—ݽÚÔÓHñ'Ùr¦9ÕXÓœ7[¸¶:“R&|uþugÑx7êA»òÅ·o¼>ŸÛ¢™-¿-N¥;QÒï÷âêÝ_ގǵs²Q Ø^%¬¨‡V¹EjÆU’­µLG5§Z8G‰%|—„‡í°KÐ6ÃUÐ|}Ü8Ûqš{\ꨅÈß &# óeð¡­~b!]3úXákè=¿YÉ@¸ì öï»;Ý^½2ï½ÎÀ~Dº®‚yù>ñ aóÊMüdduM,*‡¼‡ùizç§Ì±”†™5Sÿµåø2·8ápï~·Þz· ÔEP‘Ûšè…Q%YÖ•7iMðù.òLuB¥¦)ãõa"ùT…ݦcºêè%±ê§ÚxlÂ|:6»Hÿâm!Ò-ºûÁ7JöÏÌÙ åÈP¡SØJ™ Võä|° _îª5çÅkŽÊ8V÷Ÿ¤èÅirã Çu8÷f: ÓV_³,äÍqí!oG“dÞŸ S@ÃRÀ6ù®-q¢‘ƯwÚ…éRø|1Ñ §ÈŠqt@"/W‘³Û·fêäî[”ÿ\Ö¾IªÏð0¹ª’'Ú³xðŽìBÀBs~LнKÀƒ åìá-L”6"ñ+š"EnWt¤ò¥‡GïŠw¢ýæ&Jo(˦8ÿcfû¼—ý@ì’¾–ù̈“w-…c4D–áü,3ìú9+ç{ºxÊñLübrKþÈÍ_Zƨ6X»9k†Å–Ö¸{~·B?€É”Æ Ç֦ǻòëÌÄ£–üTÆÌüc´‰þDVœcú³LcPƒW4··‹3>ù½y¤ 4‘‚²Íש8´ÏÛˆ<›{`wÌoÈêhæ‡È¦ˆït Ž¢Gƒ[â”w¦·¨uëÌUU^Ö~¾¼ÕX,óÈÀÍû§.ÕÐÓEòºî%pc^~‚楃dÇ•KÖ ŠGô‚.Vx-íꪩî É\/j†%x¯¨¡ |Âc(™( Ž«Ìq °Ÿr²N'nh¬ŽQÿù…±àÊùø L$**o-ÇFxŽÒ(Œƒ‘Vv’2ç\š¯1%§=~'z2îýÉÂø­Bsè¸M¾­†Q#* Þs¡Õú¨ÑFÐð£ LOÅÄy8­)¢…ñýš.ËŠÌIãÕ*½ý臠ŸkMe«¯ô#_×xo[.›šV£å¾þ‚ß­Ÿ…üôLØé¾³¾\´°P*ñI'å@)P Ã4q~%®ŠOà†tæ;²}Ùµû7ëÚÜåÌ O9T‘ŸŸÀF¿Žh\rŒÅ›ûNX2¶×"Þ–S”„(ê¸úþÕæª¶ÑK-ŽýŒ¨­‰œ±ˆ:ðx9⨫÷£ôÇ$¿½TS·&.&„L‰ÅÑÄÁ„{â‘/÷©Ù.)~¡7Ã*o£dIß)ë_½ Ìîa”Dûç6Em¹7à…ž·!ñx%¬S¢D´ü"áÙ¨p4JKÒ)~žL¤8¢ï¼0‚ð–ˆÊ. Ô¾1}”ൡW:_ ãvØâ )´=±]öfú1e¨ÓÅ>§9\ /&©š\ÂÍøÙ>³íGRÉG/R„Và|aý¡…{¬[|t<:¢‘åùdºÈYa2³Hÿ+oiò¬!"˜#'2Ǩ»±§’sl›T*Ãì¨úÒ-½¹@:AF¯•\Wø|ã¾_™ɤpT†ÈS×$9M00¼ ¯}ÿc>>I¼~¼h;è0àùÀqÛóŒ°f»ŠéËWÍè^,’Á˜XSj³¹¸$‘RÀÜ¥NÎ'q°K¯/¦W"÷5L+X³™3;º' rA.ÿ.»d¶ÂÙ„»Bþb#ËåħÂ…º|#|è ۀ܃!U¥YƒîϰmYÇË2¶Í=±|*Ëûnàç*¶(Y»²AœúŽî#éR“àË3¼yÓ瘔™.õ‡P$ Þ:|ÏÍLíàÊl–GÅ›+wUê½U{N f q |ngÙäÄ탼sUFšWG“Eì{‰ÚÜW=£…2!S\-](ÓróC[—sÌÏËî¯ÀP,±Év=:jôXë®LsB#’éÎóC0Reâ ´YÂT>õ¤÷Ik¬¶0ïõrMÑKé¶Ê«…„ýGÄ7²u“â¬}Åb™ÒÁóĆî+zZº5gªu¼FÊù—Qü—²€Bªçà3/ÕåCyºF²ÌíZøÑC×xšyJmðä—÷jêÇÈ,c/êúNž>ÆoËVlÙ³^“¹Ë|À­´7Œ]õù´hO¬Û]8ü†ÅY:J— º}‡ˆ;Í'çå·.U&ëEöp9™e%é(Qþk¹ì郪ÚöæÜ6AÔ»u1èmïÏ5ë+Åõ~/7ÊÆãcÊï»Û®ßëø‘(„\xO>žõgOð,0ŒDö»$…ä.´”.§0°8ñ?–4âÈÎTrÅk×U2ñ^ar?Žì?s}Wznúh;5ÏIu9*fÏ®Á]ŸÍ0(øŒ„£‰aÜŒ iIWQqËA{® ÈÝ=Ùƒ( úÈP¸îÖ"‹¹¢oCÑéùKEÍèD~Ó»û^ÿiý•ŽQ֛͠djoºJ[éf¡<Èj2…k(¹üñÍÚÉÆsz5QšTþ̃òè‚2+{À„w·#¶Cšñ¨ûû’Fµã¤—s1®Ü÷ec¼–J]p êtBë#„0© “ËŸé£(dAP¹ØaO‰mJÆ3´už¼.á¯ZiãÍît€ø´ÿkYž³‹Z]˜GÆwÊI…eNªwÆÒGe¬µdâ‚$ëŠè´Ùž÷DåLÑÊ×|æ¬7\5^¢—YVÚ•Qa6AŸßÖù‰¥©¹ ½Ô¼ƒ1÷€²å ´\QꞬ?:›8 Ü ?¸ Üïa±”]Ç¡RœfÈ®*°áòÆøà–Tå­)Òõ‰:Gs.~ÑÚ¹=¹°‘¨1œÅy ™k1wNÊË/¨è>oxºo m$“xG‚HÕs; ¦§à›ì¾ïÇÃ]wÆÿAÄlßL”ýN|@»|»$TcÓ;µžï¼V½’úúkªáSª¨±¢ªÇøýúvPó¯f2D†>ͺ¢w‡é'%*†(£«Éê3ªw(ù6eÒ«?ß©o¶ˆæŠ±©Ä6¹Ÿ1ÙÖç½ µð ?0½—¢§œ ÿaiüîÒAÌæ‡öèF4bY…©{bÛÞ¯"ë»{†GÂ’,Ÿ;°:×7 jx¥‹£Zú8#¦Ú’hÐú§Â²b6ç7I Fb;ÍBý:Mº­‚€×¾Óâ["åø´C÷ƒZ9ú“bâÒ“ÙÇÏ"Ÿ>6JC€!ÇKÅ«Æ<±m$>àùšÙ¼ÄDVÍÀ¯^uÞ¶!îžI³¬Í=îñûXwº]+ˆ¼?PpDÒú¿®gs‰K™´ÒLÑÄ,QÀÃ5'™ K % ùé03…ã+…¡k0™’Ù€ÜJÆ­U®$‹% ÑQ?ÍL‡“Ú°ÞL{z°kuÊš¹!›² EKžî9kú\õmxû0¥ôá•[r±`Î|;'zª€pK8bº2ä©’Þ¥y t‹O«Ëš¤;bÿÁ}Ì®–˜09Ô.“g8í49 ùÛ¯Õ‹$ÍgD2èç;m̽?-)‚§´>Œ>_ðÕÄ)9­£Ç‰Àê})¢ Ã5Õñ˜n‘8×rƒMi„§œ¼ŽŽÄÍ'Z'˜<¤¾è8QpPk­ª9fq3z¤Ôõzì‰Oa×|à®}šEÃõÍa~Þ 7?wz‡1@«>Vjp†Å‹Vw¶æM]šÛÚ³+HÎ&%Ù7×4ÅdÔ@yqH4N¡böq<âµteâ,ý´¤‹¯•ÖGvA< 9ò›‘>}z^öÝ–¹|PŸôû9j'z£¸œÃE Ä’µu‡zŽlqºÎúJü“ÌÙ¢MÁ®Ùßs§å-ˆF<ò8Ád¦ÕýPöŠÛTܤŠiÖf²ÉŒ‹µd¸Ää¯a¶½²9.Q?cÉ97©$y¾ ƒw;*…ÎÌûž¢CÛŠR[ïüFw#þ'ÇЊ% Q‘ç[zu¢ŽÞ¿T·ˆ9ÍVôŸ§§1Þ](Iõ/²V'%”.FãzœRèt]qÅÈ*y(W­S*S¯<†mD QçÿʵN&Ë¿©lCÉ4B3¨ÍqñçœÄ¤S^#AŠž¸³»Ó»vóËâ4bÆV—Cu¬“]#u‘,¤c.X¥ÒTúYÑ8„LËŸ{#ïËõ%D¾´Òš¯ Ü&EˆúDŽ­uQQºB¸À­QLèVœêW,ÇQ÷{mt±E³þz¥Ô®NÚ3aÿM²ùbF:­Y91qþßМ5ü7ªê°r•G8f¨’Ê6ÆÐnN¼ 9ä¨RÙÏ,B£N ø.¬‹ˆyX q:Œ“ œ¹Þ©9nvíÇDeMs÷ð€![j mŒ[·C=ÿ ã0¸!$òaûMe:AýêC‘[ìI’?£P ­=G'd¤S§s\—õVî»GYvÀÔùNWGqÿÿÄþL•™ì5“´ ¡N@ÓjÆަd›ÏÙÜ"¡M¦¬|‡«ºa« &ǤX¯, ¬Ðâ9ä?a—ï¦sóà0)þØýÏ:žQâ]g²¶+šŽJà‘§X Ð ?¹u¹»B/#Gí Î!¢±ã®[žù×?U\’Ë2ïš”€:3ÜãÀÓƒË\£?.ä!£<º<â#»yk+ý\Ç(e„ÙœTJ)G5å\QbBpghq¹6Ô3c`l—‹–sqÊN¤o{2 <Ûñö’WQÚ " óB@13›÷aVŠ©’%œÓZ=‰¤dÁå¯5GNÊD©ˆDÃlù÷ŒOúcųtœ;AtÛŒ6,¸u<ñT¶9ÂcVL.jûóX¿`îÖ_·Õ“É,Æ;áuŒÄ‡÷9Ÿ¸û­Y†f_"!ÕÉ4¶^­Žy…?Q=úGèžuUâ=ë”eÞ¤¾[¦ßqPÍó3Â:£ÀõI?Äm‘†[©)ÉœëvDxE„¿n¸[ú²ï8tü»Ü.ÿôàS´,•0UU*UA°É+nêµ’0TÏ‹ãrrk= ô¨ÄæCJæ°9L ;#â½s}Ò åÓUºûÌþÿâ´Òÿ–Èt¹€î'ïaþž•>ÝåLM?¡¨!„⣚‡­ýà±µƒ¤ç­Ö[d@ÊyZæ‘Ù‰ Ø“ªk'öµ|^»Å¹QdŠ8[©"ˆ”zs—3ù·6÷3Š2èfÂg2ÉS.ï œêÍJ³«BfIµÀMÁÉÈü“݈üusx"¨ÒØ`–ÆeqûzeÃÉlóeßùœ¥²;U”òËa,¿M¶Þ_Ö¦îÅs˜AÂ\,Æ,E¢

    lkÇü³þ”Ê.ŽQv®Fo0˜ ‡rašV¿òC*qå£Û]^Î[‰;³::rTÂûü\²Ò;tNú/p>ûØf°ªAMî}BQÒÊV&Aì¡{¦ ç”/Yuètçs$ÅÙ‹œ)[|üñ=åT[0°þ ­ºa7Hå±o®­«§ù M ¢þUÞ”þÒ®&Ø•ËVÆ{pÇ“ÿkõV½"ºN~ú"\ß-34ß`ÙÈöB#›¶8]@ã/t@"J«º)Ï„¡uvд;^÷ê7Äu¶kœÎ²$™â%» [äãvþNãlµÏ“›Ë}Eî «ƒ A¶Ž¥[˹Ðé³®îOé‚©ÍŒ(ô‚ %îaÿû´d±+/v5É ØöMëwûçwGÞ7ÿ»Æ%‘ÃëêO_ÚÄÑtBߥáÇ¡Xι†>ó`!”ÜÖ¤…\¤î5…L”óà(US"“§7òåÝ)ýô’^fˆò`ÇÝñ ‰PTöd¡Â¹ 7.¼êûR€Ø¬F=“5¹¼¹ÃP³ ³ðá¢ÈÛìªË-¶ëÝ×ÙeXµo Öæ£ôþÂÞÚç¢Q?äûâ¢ÑZLûs4ÏÞ_ˆHZeóZ"œ\Ót 4  FŸc …?A»ûE.¸H§9ÊKÐ3I¥›¢N-ïáíl¥Îz«eNá`"BgS›|KføSÚëßu^Öè!«VíŸÙ1pdƒƒFµ ã—Ã2£élÇp=t7€öõÎ+{ÔˆÖ£óÖQ^‡)Ÿ¦ ]j‹ª‡ãìµP·ç¹·þqìiY&&ĤúkU§ì÷ÁÜm)$ÙS²¹,”®ê< endstream endobj 735 0 obj << /Length1 1398 /Length2 6146 /Length3 0 /Length 7097 /Filter /FlateDecode >> stream xÚw4œíÖ¶¢$ZD ½3z QFô½ †e†™Ñ¢E'DÑ;Q-„¢Bˆ^£DôÞk䓼yÏ9ïùÿµ¾oÍZ3ÏÞûÚí¾¯ëYkؘtôùäí6Pe$Ã'È’5õõA$Ì ²±À1Îпý„l†PŽDHýB…`®|JÌP‰ÔÜAa@PLJP\ „@ É¿H” ñ€Ûšü€E²)"]½QpæªÏß§- ())Îû;w¢à¶  ÁÀ .Wm!΀>ÒÅxÿ£§ ƒq•ðôô䇸 ù‘(Y.^ÀŽzP4åµ~­ hA\ Vã'd `pô_}¤=Æ‚‚Wg¸-¾JqGØAQÀUw@_UÐv…"þküàþ È/ø¯r²‚#~'Clm‘.®„7áØÃ¡€¶²?Æ Ã @v¿€g4ò*â;Cl®¿G‡ÊòºäjÃ?û¡mQpW š wþµ£À¯2WÇ FØ)"]\  šð×|JpÔöêܽþ\®é‰ðùÛ²‡#ìì­açî*ðws‡ª*ýÁ\¹ÿís€bQ$ nÔË&ð«·+ôwPð—ûj?W¤+`µÔn½ú!ôAC< åõóùÏÀ?-BAAÀn‹l pá¿«_¹¡öÙW÷‚{f +ú  _Ÿ=Y\1̉pöþ7ü÷ héÕŒxþ¬ü¯ ‚Ò ðáø„DA€¤¤$ .* øý³ŒþgŒÿHUEØ#É¿¦½:¦¿'öøCÎ?úàþYK yE\(Àùož›ƒDA¶W_‚ÿg¶ÿNùÿ‘üW•ÿ•çÿ=‘²»³óï8ç_€ÿ'q;{ÿA\×s%Mä•ÿ 5‚þ¥\M¨ÜÝå¿£ªÈ•äÎÿ:H8ZîµÓclañå/ÿÃ_Js†# :H4ü×»àþ+v%/[§«÷úŠ”¿CÐ+õü³%a‹´û%3!Q1‚BA¼ AW\|¯ôhõúMc@€Ä\¥WëùöHá¯;“À¿\¿-   óoKÐûmý£¥­; u¥¼ß´¸šçoû·Ì¡P/¨-áÄ(ÒV:ı2¤á¤BžÎ“oñ3Þì|cd¬IG„(†},Û¦q#õÁ ›‚µ])uO’ÎxqØÀ¨/÷ÖIŸ—yKzàL¢J ܱ °Ã—Ó}ºßâe°CÒ:ô‹'E.mÇéÒ“X›á˜qÄ^„Š· /—-åÿhD/›J®.@Á)S"æ©|fã:v” ë<擉9i 9Ê,ÙÝ@õaÿì(x̱BC4Í©÷‚YLʧ¯_»Ò;;’„÷rÕÛÊÅJÃnÓP‰›Ë™IòïeDê#îxû{SͧÅe|Z<ÅüDÅÏ.Íy ¬!AI‡eÁIí–5ÙW$>‚#ƒÅ՚شk¢º×ÐD5òØ }£ ãh"rlãnçQX°X2}å‹›w©”î®4Il­çxI€s0×}Ö Ý}o¸JÑ ÖÍØÖœäÕ/Šc«¾^ß|)ÙuðiJÓòU]ÿ]üËÈjׂ›´ÁGÚÚ/¤ä ª¹×ÍF§¾ ŒðïñÅjO;tÖ%8&ÊÄÛ<—\éDé‚‹(A&ßn1ÊN®Êƒõ.^'Áýèz7tæõ,–“Z÷š-é ÿö ý; ¹/(ûú(_UÉ'XR¤ñ3¹%¼r’Ò¹ hvxÙsÖHÇAh ­+ÌôÜt*psT4‘{fY½§mb,ŸÀûÉEãd+y7®p20!K:[Ý!>ù@Òaë§h¾¬\ûPbPÆÒáð¸W ê–ÜBHF”óݪU…'¿ZMöš ñ>´™ãtš¶fnÿ!^ÆJ|´/O%b¤^·é&ŸªJNyYƒ é·˜j–”Õ ¥Nδk*¤yýV¡GÍ)uŒ÷G¾¿Ë<¶¼0ÅÉbóŒâä0ã`‹~í͈grMÿçñš” dx7b}iT‚c_æÃ¢, ¨VÙA=ò°²WÊWˆ2Ü{-wãî ˘ýXÊ:-pÙß•a¦Jö€¢À­©MÑû®ó[ñÔëG™UZ·&޶ý-NÂ>ïSù9ç3ˆ£o®`ªVÝ6­».~þxƒn 4ͤÀ…¯:[Fôbjâ)á-gëÃ#Z[uéLdÖ2!…¦ÂÄÒ(Ã,§ù÷z‹â£ü×HZcä‰ÂïĉÀ&Åxšßõ5zhЊ÷.÷g²%,%ut¯r°iMĸrèo·ßVŠ’)åŸ<]!w¿Ð# Ö:æA¾¼ÕNŠ#Óò.ÿ´'’Fmd&ÖÎpû¼gcgíúÁñíŸ ¡Ïã^ÞAuÇ(~†>q±Fɾ<” 3Ôï}¼/á#~÷uŸßuà ¾ÞlËãÀT?}ìF«D̵™w¬(Z_ç¾ázg@®ª™ ·ÞÖÜJpʬ9õo›­rÆOq·—ŸFÄ¢éL•L^Ýz;$_±ÚÃÚQù)kÚ¯ÒŽ¯qª™O`©R£ƒ-–<âZ˜¯ówoFž1E ï˜Pßì,þì«PD\ñ¦øáEµÁF)#Ø@îǘÉZÆV7‹×¼xç­^*I¾÷ðæµ/ÜÖ˜†ö™›&sÁ÷­².`ìæmǬ³F)eVXßݲE¤û 7'Ó¨‡+Äê~¦Tªc½ïè–~/JNÌò9‰‚Ð1Erïõâ®äõÒD¡½ã¡.Oa]²W£·ŠO 2b”võwªnÑöfµ¥Ú8ØRç·«6ûö+ó@ïÒ‹|>ŸÀ,¯y“öœù͘ë·{ÇÖ£‚<Œ¬A.‘|-‹}¦Š’ŸºÔMò¦°†|Y$M‘¿vmâÖz¼@K qY_$úNôš?wXd«}YÁûØË[Q‹”’ŸØ‡WO»¶Y4œWO|S^¯ÊèNÒ7ëyª(¬¹ÔÅ8gQ?]›W+«g]Æ%=ø–imÉ|û¦)ƒ˜9{ ò%ë¼@û‘$9Úè{)=ȤÖ*sñtì ó]=û°.^X—ºž• âòOšX‡™ת— ëd‹“ãÆ”Ècp·r¢ >­‚þwÅWænÊ2§Ä5G| ¾ÆŸŸº[c‰9ÒýÄŒëæºã[0XEÁðªêÃS<³/5Ròrª-H‹µÁ š6ɾ˜eMcæµ\ã­™b—”ë!_ަ ëoú•І/>&t—¢ñƒ… á6·¿àBÕ x·î‘0Fu_$Š2î 9wá hÙ)¸|V(ôqÖû®‡B¿gc'µoîÁU$ +,` 5V–L‚<Ök.È&Úêbº¦÷uu-ÑŸ&18.ÛâÜ´Qw©OM©°@õ «u?UÍvà óƒÞèñ€H3â ~&Ù¸=Eç õDóQiVñ Óñ}7jQU6±©L™…å)>é­ ØfŽ“@(ë62€æ¤4'U©„ZŠ2vñ¢Ñ¾` .øL¹Šv+6ÐW{¼Ïzn–eÎŒÇÂodÑ÷‹lóöRØS›’uF¤oMºjêW‘Ô‚•å°ÛÒ‚fqeh% ‹¦øKáïM­ßè§vÌ AúÜ8*\}ƒ¼›Þa™ð¨2µ=ç²!rÌŽèÄc•HREC’H¦ç´ ÷økÎ èož§`/Q¹Ðè‹hf=ÈgqAÁ>É·SÅ›œN;“µ<"„»Ïs7êtÈs•¾&k›ï9g«G/ò:ÆŸð~Ñé†`³á·¼©ÕqÞxÐK²^Û~›‚³ÌG›ž®äAõ¸µó5¢¬=ÅmÔŽL¢EœäÒÍ¿Bð­ìëÖÀ{‘£ÌŽá¬„]Wnb—Žh/~ðí¶ìc ;ó O]yîïøj6›áu7¸úuoõ§§Ïœ$ÕKÊÅçÑ4úȉ±‰¦1/¼yIf°VøýAýk©-Ç,ÄøeC¼bs Æx@˜<¹êmßaáL†tG ¿+Ó›ìE¡Ô¸íƒÙ;#÷xN@ ݪھ`wbL2iÇâUFpø-²’Ó2Îç×¶©Ö»'ª¾‘ž9îÏÈ6Š×?7hbsz1VT@q`êlåÃImT± Ï1ê½)7_{×Ôd1¹,« 4b!×½.™$4£áP•dC~ûÖ¼sg·áÓMYÆ(œ§.r[&€ròkÝ‹²ÝqaéAZô÷”|ÚÕÒŠd –„ñ^#Ù·±òe…u±VÞ¶'ŸÚïª y¾r7yßýøP”×M¦î`ë=â–"i`¨¹ï‡?@ZcðY•d?¾˜¸Ê|½§xÿÂC½Ë´ö,Ïàë›äï¢.Öe(Ç'6-"Šuö'ŽË®qrѨ¯/¥t¹²´R4í£‘»žª.ä|®ØoÑ¢2´…ñ,ÑM0T8‡î­a¹:ÍŽæÊ=]QÆ@;|¾òO&¦S¹ï¡7Eiç9Ho7=éß;ç2›áo©—]O*IwÈPå}­üN€Û0Ph zÉ(íhŠ5;²¨øÍKæHUjœÂã_31¡:hîp*½ßªwbÿ𡿮Ýhwkä}}çÛÌiϹŒÍ]ÆûægÞAk>H7Šàž¤VcÙ!ÿnÎ僖„•8âž#6lZ$w¦dÉ“Áª¾ŽF'Õté'‘÷Ãh˜ñõI FÆpd>}ö#eœîns3Æu‚>((s„ ëN›1£ceô"cÖ`Nƒ7®’Op"Çe-5C\ NG>-#_=¬VMäå"ÊZ"2 +U oý@åIwÊ÷ ¸˜iT áÙ3lä—ŸÜšv_Së$—¹ìïl<ŠS Ô÷J¢u¢?£µ÷×+f·ô ›Œœ¬¤ -ó¥ð8ÈˑՈ?ó)F>±%?9' ñ<ñ_UA©e„᜵ÏÝÑ“ZÈ4KGùû  º=X ì²¡¥ã PtÔ»õ܆I¶ƒ¹Sk¸\ÞrF£y™ªŸO•O–0))>TÞJÈZ9ιXZ?ç¹eoYìVÎ(°žö”ÿn­Ø3:¤ØÖΪw·™çàZ–E sÌ{¥€æA¥’x¯'‹78!J”ŽaÚ³{‰ î”¤IãÉùH¶Ÿ+UZlE¹õÌÕ¥âQ×8ö –øt¹FΧæfÇ‹!ES/êd•PE‚qKä.jáš,ûX 7AÑœgJ|+‚_¨@M ëUúGË#7^þdQáÐP“V'4¡LÊ`#)‡Øõ5)ô›ÿòý!â¤Ob’Ã[å]Ä;Ÿ%‡ª›o·Là¬øE ¼ü8¥!µÜ¡±p«’¸©0 ½Áy‰Ù€™·Ê·»2À„ò9Û‘©Akå„ë'$ùäÕæOCjc!O”.‘áì<æm >¸Àn~Wø“QA¸MÝKÆ>Nk{vt]ĽÚ¯Nª:Sô5óBÃw×»îpLç‹0«îî]ùéÖýíWåôX1TcÃŒŽ[è6–î:¶Ò4búg/n»÷²½cßÅ·í1V?ep_$Áoï+¸µWñjçÉë°8-Ë®ï 0MÊ7pŸ‘ða%\¦DêvH«Zuøæì¹³‚‚‹ªÌAíŽ)Î|ËÛ³ÏU­•ýÇóè:cìŸåsXñâHáXì¹¼ ?|lW "¦ÏFxJ_ñªHl+u#‹ˆ Gò+› {ïI5ù»Ÿ„ÎJŠºG¶m¿K¼¹xV]þù´«lIÛ¨9b\^}C¬µÙS*­²É®¶ˆèmê!,­â<è¿ÇÞÈÊšÒªk—îvžŸÞÈBL[9ž½õYWQǯƮ;ÎFm`)ò¹›AYeŽÊä¦Ù@MĨ~±ØI˧¹»ÖkŠ~|,U΂O{‹ð2„+&¤$ØÏØïžäå>ÜÔØþºÎuÍŽÐÓQØÈÂ]:¸ú‡m‘jJ?áàìõ¨M>ºrÂfcž¶ºx |ч¨„¤ìjáKøÑ÷F¹ûg9tâEMUv”[ivü˜x7Š7¶V²{cªó¥ÊžWVQÀ—iõSZ1¯7áŒRðME·Ù±/Û¤Ôß8ÓB’v’ß4ÿ€ë…FÌŠŸP³M÷âö;»?N°,¤xF5Âñ˜‹a@ÿ¶œöªù”^ :šÒ›ªQpQÚX²h©ƒ£“9Ï0.dL ;»UnÚJ°i)Œ“™ü©Sæ½Õs·‡eVI0Þò­ži¡v¹¤…i?泤ñæÁŽÔCášl2§' Éá|Mß:ψ>‡™†4X˜Û Oæç¼„ÙÖe\ç|Tò©ïþ|B÷£K͹]”¬,ø^K. jS÷òÅÅwXºGé ßòF$Å*ù¾@À³ ˜yÚëVÿœïž#¹oaÇ_ÈJýšý[{KÎ;¬î®ïÔë_Z”‹ß5m_9³ìQe'~0%Ü"]prªÙ2ÏjÀi&Õ˜tò4!Y6nǨ"i‚î»]wØÕìÔˆëWÌíÀrh|F± °³Ý‘˜(žûŽgY/ʨ‰Éœ‚ù_÷•ùdyë…¬çŽØ „øMpØæ[^êÆ{n¼Ù)˜­F(¬µª;é†m¨£éë<¹‡ÉTç×¾èµyϦGÝeþ"«§ËX温}y‡ÿ‰Ô¼½dÁ(5©7Álõx×`úÎac2Ž»¨¥A—ˆïãSYTñ™…d27¶Éfª/Ô¹gJúwe À¡¾*qJÌæ¶mp™²ÅT…u°C;׌µ=8u²# .+ô”'ù¶„ÿ`?TyT‚Øæ škSŽZF‰JÕ¯×Xù™oÏâËõæ¬;¥8D÷0‡¥5šs`+ª‹“~Êñ’UÔKÍR£aë›MXcÛ™kɹÆ8§òs§7ÁŽ<°â€›½ôçË‹_°\†û¿žÆTFÑ¢/ÖY²ÇÌÓ·q¬æžQ 'RX?Çvnÿ~wn.囕Is67Ó“vò!ê7sÙä*{“Òªø"ËõÜ©I²¥\-6ÕÏ(F?é| éàSœ#äØi¯úZ•Õ‰»#¹)´<É^-ߤÓ酪ݦÍåzŠØÕØõ¼ï½`bã®”ÐaG“m?ÜAm0Möž.³?JP®éFìÅùçjØŒ"Z ÷s,G ‘™ÍÕ•­¼Œ\ëýÙjgŠ|šHÈ)ïðk£3ä­áÓò‚gï]B’~ˆ¡¨¼Ax¼_Ã+ È5(çíÿ >½ÿ endstream endobj 737 0 obj << /Length1 1385 /Length2 5961 /Length3 0 /Length 6893 /Filter /FlateDecode >> stream xÚTuX“íÛÔI‡HO$¥6º»»‘fŒñÁ9BZAº;iDDAIIAJé‘nùз~ïïûþøŽdz纮óªû>Ï‡í®ž!¯¼=ʦ‚BbxÁ|  ¢¶¡¡Â0 ò@66#8û'`3¡Ýá(¤Ä`Ñ0æÊ§Á\AµQH †‚E$À¢ Pÿ ˆBK• žp{ 6P…„¹ØQ®>h¸£æªÓ_¯@N(,..Êó;(ïCá$P‚q‚¹\u„B@CÃøü«§”ã*ÁÏïååÅqqçC¡e¸x€^pŒÐæC{Âì¿Öê@\`/Ç`9ÁÝÿ¢0^4 xå@À¡0¤ûU’Ò†^õªku]aÈ?ÀZx€Ìþ»ÜŸÙ¿ Á‘¿“!P(ÊÅ‚ô#p ¨«¢Å‡ñÆð!Hû_@Âu•ñ„À»+Àïá!@y} äjÇ?7t‡¢á®w>w8â×–ü¿Ê\´2Ò^åâCbÜ¿æS‚£aЫ“÷áÿûŠ"Q^Hì?¶iïðk{W~c$Üͦ®ô'êÊøÇçÃ…A Hs¼¡Nü¿šù¸Â~Á¿ÜW{øc]Q®@‡«U`þpØÕëñ„1h˜?ö?ÿ¶`0ÐÅí`Žp$àŸêWn˜Ãö Ðpo 芄` è×ïï7«+žÙ£Ÿà¿/š_GÁP[S‘ûï¥ÿ+( ¼X^Q0W@ƒÄÅ¢b  ÿ¿+éAàNò¹êHPü¯Nꯡ=ÿdçŸBáþ»–êŠÁ0 ç?„· ƒ Wðÿ›ö¿Sþ/¶ÿªòÿ üϤâ@üFpþù_ˆ áó'æŠÃ˜+=h£®Tüo¨)ì+ öÿSÇ@®T!tDü}”pw¸7Ì^Ž:ýAš?üÆ¿$‡€#az(wø¯Ï  ýWìJgЇWŸ÷+fþÁ®dôï–ÊH(Êþ—Þ„E€4⸺è+Kˆ_ Óæý›Ë@~>$ s•¼ZÎè€B~ݪ˜ßà— ð¯²P4úJf¿/ÿªç_öoMÃ`Þ0(`r• u® m<®’§÷â]"ØN=~ À;Ph}Ó©jñC·p´ iâEÿ#4Rº;g •„ü Q(h]™gÿ0~ô6B Æ'ô@å&kní;~†Ñžâž7¦\í±/ƒCФyšM‡õ3UÖ¨â¾2oLn ]_:ò‰eë8R5ÙLGâ`…öÚ9c%Ì1?¿ѵ ˜'¤÷¼8SåÕ9µuô³÷ Çä†û}6YwWqš×„i³“ŸÞìµ£RT?mïéO¯Ÿ?¸c»ñ5ÝÒ~;’ú3Yù ·Îè,Ÿ/×+tŠ<-y¦ºÉÙT‚(ú¤›ÀÇibùÓÝK¯Õ Œxú²WýûÅšeÅ-’òløð«â¥xÙ¢ meq¾Í¹upu–} ÷ÎÍô t};¾d÷Z[ã0¾áN¯åØmÚéÝÛµRÂзqÛNëÍO^ÅÓ2ÓPJmJÔ§×Èޯק’{¿‰3];l{-éË<$aæÕOÃ@gÿ6Âjàz.Y‘A ¹PbÓÊæÎÛ•!]hWWêÕå˜.Éë•DŸ`«´¾Se ƒ"&B-Y´7Ž Ë¬:|É,?~•‰[Óbq¶ÒA'ld y”ǹëi;ˆB”nV<“1 bmp“ XDg¥Ô_4ÅX\?)ÏxTM@Ó!&>ŒS Ð U2­¿TK”x.'Á°<àA†C½˜×øÃm–Å^HÔLKá;ØÆgs=µ§@È´BùîmßéàÏ •L7:˜³¿kæ^ï*8ñçÈ q¤Ëìnœñ*.jºD‡HœU–TƒŒÝ1ö¹í=²yz”ïm][Ö¾Æ_Æc=ý.þ»4$ž¢«y ‡¤'ôòçßÀ³ÇáR·UHâjNÜ™ƒ¾Jêðï§Yã&öý›¶¬-·P@!iÇ4ïÀAA¼¼'Ú=âpÚÀ±aVhµzãJË”¶öxWT±¢tFò6åÕw×rl¸þ|†°#q÷¡Lîhƒ’ÆîÇËëÑóÔnRٜ躰½I½·›Ìyqé -Y®[\ ! u%–Çd®z˽]† "b̧Ï^û„÷…ÂÎMèžÓ¸ ÝKþ!Htqgw3%KÛû3‚ÅÀ”´ÿÀ’L@zSYPMBÖ^Dé˜ìÊós«GäpLö¸–×YCÅ:Ó4¦·#D¨·ðe‚¬×ÑúJEÝ÷%KOTq ýÀ7:¦ƒw†Ôxø^2]|¹$Þ‰’’Lr×qzÖn° ±Yð«ˆq¼Bå͆± έ7£…Riž©¸õg.³ÔÚ\ÅÞcØPÚ]HÃb(× WŠó4ï5¢{>˜¦Ln‡‘!“Ä;Næ© y³l÷9î¶•Õ'¥¦ýœËº5Å™L²ø —&ž1î†åÐXgWqc“õ¾3œ,xgOïë– ¾!3ô•ž[ ññÃN´E àó¸ðbDOÆù¦ùiè–aƤ)~r~+v{°zk„L„À¡¿×ñöé˜NfJ“%v…ýBÞSÄßßÉûˆÎuÉÕ%uœ0šÐ±¡•chd ì\¬`vÖPòrÊÝ}°ù”»÷ÞÛ')¯©Ì~ÙÖ‘e6öL«è¢‚ ±W F•ä›#ešuð|•±`¸¼'"¼xøtzP‡p“½"3©ýl¤TÆŽž™d^Úv¥ }Ÿ¿ÖtbÚ{Àb_cŒÛ–/˜ógÜѱ±!~Åh´T@úÅzo>¬ÂáTW‡Q8¹¦ußç•õC2Ž%ÚTôlE–ëIè­^õ“‡–R<6‡Ñ咎–‹Ïýº?ž.]Ô L,‹Ü“,~dþî’§eG´¶SÃ2Ikg NaÉ׈ƒuÕÈ"oHỌ¯8Ñù3­Z£±þëìX‘9Ck½´Ýnß'~ `Ùê,²¿g¼0#&Y9st{óûüŪDÓÄQBvõ”˜½LŸeÄkxénÞ>ð<äJö¶×QPÀg}úÖVnYBÊ”t£ça¡DDü¡L¹éÒùñI»:©Î—„¯¹(û­øumÞ¨9W(ቛþh®|uCçªG ‘ÎÌÚô.°ŸIA»_ÊËW!-ÜÉy‘ö%=Xé0!G€"/¿ÀJãÓÝÏŒ1u™Y“t˵DUÀs¯ ëîÛÞýDš²ŠÚò^¡í¦*‡Ä’“å…&Ãmd?-™mö^ ý©Y9;ahªyi»ýÖ é¸^bwªÀ+aû“˪ø lpÀvj#s"OŒË8_m .f¨\ ©7¶ŸŸžc‹459>ÎVÑ3€]8樃À÷iZè€è}s©ý ˜£9›ËmK3ÍhSSÓï'nüäÜRoÜP<º§¹>ö4Û½gƒ¯E¹±=kQÐbŒ+cCÐv½ £¿>IOJá’Zje¶ Сs·àöïä™qo £Y4ú®=H´_º­Ò.`[F¹ÌkáE|ÍÀ“²×™Ç8\\˜1@´tay`’۹Ṣ{œ!ÓhR-›8‹òÖoÅZa£|‚Ç£õ§:QæwÆÅÜŠÓ:æXL+&‰ìy†óG™¤²ÍµR3…l Ïá^[+¶7¢çêÞŒKMVâéæ,þ¡ÕûØ# §*½Ôáž½›¼qv:­ ‡Ø³-ëÔýã„o&†ÖŒ:;‡ß¯s ®UýàÐWñÚÝ6ͦ\©h£fH€À‚/òû“´©¤Ëç]D&-zmÏŽ(r$¢Øqi§ÏùKC‘à$ñ±§Ð.tšÎòXì+_MâÝ^’®É…vEÛñ}â­œüV3ãk±ÆvbÇ̺½.ê›6d$ãÞ9f;²w—áæñ‰µî¡Foáœ}†ÒEG¶fJ›,?$‰xVZH.¤/Õ„."N$‚à6žhØ$®³Ü…Ÿ68áãcµMÛ* þÒ.¿”gmÍULÄùÙèZ -rù8¿³µà›‡%M)=®ô¦z¥ìkÒ`c©Ï¾²ú€çí=P½ÏL¥eãŽæ]ýnßMtáãV¼îY®-‚U®É­šÈc†³ò6–\׆V“×/žVØÖ.Ïfgñœ9Ù:¼÷¯yŒ6øF<ßù_@CNý¤)&»žCØÐCi‡umrÓå¢$~ûªú lâÁ‡§SAŒµ˜~ ‡©"éúb6¢[©‹Æ2N©™4#¡ïkM™O~'e€E:Óµ§ÆÊlınÁuõ]—;Íÿbl( ^IJ\KíÞg¿›H‹^×É*;°¨£îu艊Xxws/ùYG [<ÕÍgè™Ö’@<Ó˜4P„›_?Ý;‰yB:D©Á—Ö{Ïô©…¾8¤ù?(Ã>aöÞëå£ó'3þ=Ƨ´ü©'_¶³^÷yÏ&uò£× ýØðg‚H;Ÿé1Ý} "î’Eÿ®aÒC/‰79m•—[23Ýušeaô€ÛxBZõ…Ϩ‚/ܧn÷Ô•ÑX’[¬ ø:B-3 º3hÿÎoŸ‘ý)ÓSíOi£ÇéE_öÍÀÙ^¾«Ò|(Žò-\ºn3ºb_Ö'>äw—ÛM¯Ð÷tÄ©¬À‰pl\kæLÓeÞSèù*z>… °Øâ!!"KÈ5MÞ¢2ˆxDc¡Ì°y›æ…¯&€Œñ'y¸¢ñ‘OúTòÔWŠ,/”š0uöic^/W 4FA’3Êëõ+ftÂ$–o=Qéj ÔOœçð™Ò°&Ô\S;Öæ]Ž›ñZ ‡ÎwÖ`e®P›·YícÏWU“ Áœ{46CVU¢Ã¥.?†T¬˜ lñÁÑô„åÌLͨs½œŠrx;²ï< I>z]ÏB¿ÈÅôw;4³º1)Ølœî°‚—¼îòí_çs¾xöá(­$XmöDõ ¨‡aMê³1.ïg¼|aúsn'D•|½Ne¬«±§Â›_S»”•Š0ÌÒüýé>QÆ{Wë&«ª¨OÅ«ïÔ°²çx?Gš¥¯mÇÍI4wŒ.8äxPë>?%.Œ ?ÐRÄ÷&Û"âÎ(|ÆSEF²ÞÖQ˜k®“øF¯œµ—ª™¯ejôÅG«ÿppkï&õ±à–Šôïì”2[ÿѰööÍqéåˆå”¯ ¯"TjØ­ 5¸rdÒ þ|Ý> stream xÚwX“íÛ>!Cé Ò0J¤;G+1Æ€ŒQÒˆ„€”¤¤ˆ Š Ò’ÒÝ]ÒùMßú½¿ÿÿ8¾ïØq<{îë:¯ºïó|¶‡EÌ'o‹´© h>A~$PQ VA a~HÀÎnG;ÃþvØa(w8!ùE ‚ÆØ” h R‰jx8…‚÷%Å$A  $ñ‰’*A<á¶@m~ s°+"]}Pp{4¦Ð_·@N(PPBBŒ÷w8PÞ†‚C! 6ísÁT„Bœ`$Cûü+§´í*) àååÅqqçG¢ìe¹x^p´ÐæCyÂl¿†ê@\`ÍÆ`:ÀÝÿð€‘vh/ ÄœáPÂã°…¡€˜ò@°ºP׆ø¬õ€øçîùÿN÷gô¯DpÄï`Štq… |à{ ÜÔUÑâG{£y„í/ ÄÙ‰‰‡xBàÎ àwï Š¼>‚ñÏÝ¡(¸+ÚßîükH_i0û¬Œ°UDº¸ÀhwÀ¯þ”à(³ñ>¯é…ðý{iGØÚýÄÖÃUÀwó€©+ý ˜ÿØìah (ÇDÁÜ€0o¨ƒÀ¯†>®°ßNÁ_fÌþ¾®HW f˜?܆ùøºCe ecmECž¿fþÛ« €ôúòIˆù„DA@A˜PLTèÿïDzøŸüG¬: ”ø£_ÌFýÕ³çŸ4àüS$\ÀçÒAbØ rþCöG Qsü?SþwÈÿ鿲üïdÿï–T<œ8ÿDü?ˆ ÜÙçO†¾hŒ´‘A þjûCÀÚ0[¸‡Ë{ÕÑŒ$äöZó ýa„»«À½a¶zp4ÔáÖüa7ú¥8g8¦‡t‡ÿzÈ`B@ ÿòaduÂ1—ûˆñ1«¬Ù3ÛÄ\a%ú3°ŽTcåš$+0I Ú°ô£H›ålíÛÀì$~e-c‰^÷( UÄ4žÖé44•fhQ3Ho- kl: —Eîpd/¸Ä>YŒ~™¢“Ϊ)Ýp Hð*!ûÚÕ1EÖÊØ¬á²¼{7 M¦,ÕÁ $r³ÄxêñEvçf:¹¯*ŃMÛ¶wcªÏ/ ê_®¾sÄ…Î’Åò|®ñ©5S5KmûuþÔ~òÆŒ=Æt„`À M͉äÊ4Dï¶ zT³s8a.GÄO¦ÐëõÅ!tëã³å¶<™±—zzýáè®Æ0íÒÃ:¨Æ(WVµõ¯>ÉHïxÓd˜)B3gÔNOç•kÊÒJijHý·µ³'&‹Íâl©ÆF ¼†šõãå«¡–œ /Ò™×-X­±-?@@á 0$ é~LïJ»Ë€_XêãN)·Á\JþBí›—,°Ý¥y%ÕZ÷Æ›b`6ñ _èK T@%׳÷YËFF½Áôf^9àõa?EsâÔõ·4Rârëõ¬J]î|Ï0ä‹,~Ñgy›DpLµ ÅXÀmgüvéÛW5j¨Q:í&^•QòPÈÄ—O鄲wÞmÈN~£³¨Ô§ò)ö,‘úxϤˬ>ŠJ«¥­éÛ¨šGÃZ­M¬ÅÁTx½ôØ·WEÅ¢7kæÙh¦"Ljp_=Þx˜x¼ÁI Ȫø]&e.¨‰~@—ieÿµ«I^§´·²8MÆ”¦&LŠëàˆ¸K>a+SµIiÀ¿hÊe¹GÏOéüè›àjAívMOM1Q¯£Ó7Ûâaÿͬr×8#œoêË 5¾8)®¢Š´Žb²°¯Ýî83¹[] b$ôʶ­ îy9ÎËu¦Î}iµÜ·y]þ3´ðPa)$·JÏßeÅX–Ø·œqw±dPò‘¦‹èÏõåì£'[Mž2/ßàª+KüB«)L©ø»^§ÌÒPÑ"Ã,euP·¸ZOÁº^ôç…©¶OÁwÇayîzê§Iäv…ôb`ïoq_½à¶uâߨOZ¹$(Ü$–¡eJíyjÿ8žä¡%ž3pQìXc6ôæÑë~ý½vÏ ©Ù¼ù·Eh6¥ ã½&ú¹³ZÉòsžE)5µÜ_ÉL•¨ÞG}“*³ä4>/Z§ ˜îä7¡ZdÉpÐuze1MÙw“'‰oœ¢˜àåU˜‘nç>ö).ÓZ™ÂEв“,%ãümïá=I@HÏÏŠ÷ò¾7 ±Í…Yˆd«(¤§ÜO(ªw ¶QOM€–O[Acú]é7Ñ=|Âü™àÝÁ}<(–džD<ó¨ÅVZÖDºöçC¼0 õêÁª©ÝNE[³¸è~É@‡vCíÙ0b ÿZ¯Õi™àÊ ý[ßÙâ½sÞ¿ŽÍÁå’o±ê£¿ÎØz÷‰ù˜úSˆÁRá•c ëÉq$yÖmeéˆ|y3£ÒÏå»Oǰ=…ÎÌýV"¾xת…mÆO0Ò‰¨ˆ*}xècqô*{›#œš`¼'ë£ÿ“9ü^Öuq”xnÎÚkøÒ eãéXïñ‹ø9òè±ÌLåÝàg¤¢Ar௕çéÏo£Sš€”{ÄSk™Žfﳚ¾lÆ4¸‘4¶öòdKç+z×1êO—D¨E|憢¾äãMÁ¾4Æ÷æÏj!¨‡ÖTM”´9v´Ì»ïX^U)Ë¿ç|Ýý‚=ªªqO=Éœ¦Øç‡\m8ïfX|_÷ºJª&$–ÓTÍN‡o¥?W]~·mOâŠçýšéÇÄ›ú#â X<;"…O`éÓÙû&¯ßâ_qļzçc"û3 fëü»|d†àø½±U%²1"se.O êºóºÛVô¹Þh}äðÒYZ.[EÃk"À@Å’bnlü'~DaØ-,å^åWiè„Ñ®Ín5½:ëüÑïÄ„·?ÅŠñšx°Ýr-,Ç—vóÑ=ßYbSõ–P7WU™JÉ1@hÓ7]$z¼T÷ÀÒ#wiÌT/M›ÙØçpj¾ÜÞ¶¹oúyó#wT™D¸iTš$åÂ?¡úº–¶Lœ «ó¢‚šÒÎyÜ]¿a=¿¬˜2;ѧJíÅâ”Ô®¯ÍU¼9§Õ•é+˜—L…[@b„øy gÃÍÙ¿Ó1àV€€¦Ù@#Ƀï™Öû±2S%J±o, áYŽõ‘—gÚ­R½ï§rßóÕjvLE¿µ÷ÕýÁ(Ž•¢©ÐÓaû†§KL…Å]7=[íßF÷§l.ö‘œ’ñDÀ4”œqÉ!ñP–2–Qv¼³MîçV´¤gº ~2ÖýyÓÌËñˆl=ŽWÜÂá=CH¸¤ÚúKkßT‡ú­¹‹Ô`Z*Íak¿ŒguüºÃÏDibAÌ‹F-£Ï_83òœXÚÓùå¶ÆXNüHÉo˜„6ß­Y|¯W®îýÐdýi¶œ°.‰â‘’RDc³ãÉQ*ŽüPk÷×ID»U¹•6ãâ z5·íS¤Ä³ñ.z£jji¼_ñ¡¢s~{qgÓ~Åó*ÿqÇaAœè\½>mÓÀsŽyãµ  ¿èæÔ0áš„ˆ‰Ä·eclè8ʃW(UÓ2,Ø8”ì¢> XïKˆ'1~Ü8ùsȸC©RE꣠àµWc ·¼ÓÈ@O"1À¼”ŠSsý1ˆjþc5½“<Êk}@Ö;0¹˜czé£å|ÕóT½ûn>a Rû ‹ŸÓO³¥+æ–£ËI +ß.àŽm21)J}uÒ{]ò4¹¯¸´+ŠñÜí‚fKn‹p}6(ÈaÛæ”N¾…ÛEéí,w2FSàšÁàNvׂûŽà/¶ˆsÒ×ö¯rŸX9UÕf­_h’nÝ0]ü|™ï;íqQõ=]9}à{Ÿ·ÿ]iÇâžj¯ÊAºÇÓÜÇã5Åys-Ík0¼¼qö®§Å93àÅÈç©‚ñÐíÙ,ÃëA¹/–8<³VdÄ´ˆæª2Á`Õ5ßÙ~-Þ§JË?X>¤«dP$D ûq+M--Lš¼”hY2°¯)H°¬Ê- ¤ù:±ó“¢°WîõµÞ[ë9b Ó’ ¡”ðÚ¹ž{\l~:°sd~+£Â£‚O^‘A’“uH˜ÝAF‡#yóá=“$±¹· f¯zØ”s2lõWõQo64“.=ŒUn‚èä…&3‘«øGoU¶Üh¡Í, V.ñ’Û·]dÛxŸmÔedü€4iO<Ü©«Aí®„Mýz+^^ ˜|€Ñª„™4ƒW7e·uÓ1ñç;­¶<2ô<&ÝŒà9|÷ÊÖÅŸpÎî 3U{æV•â·Œ'R¶ïxIåký³xfZ<Ã56Á=ÚI!*kà }84¼'¦—=U’cX"ÚL<ò"ô¥-n› ŸY[õË#3˜ö±ˆñ¡É—¸zÆÂ3' ÕçhA–ɳ¨ÊänÐØ÷$•/k4ÊeΪÂ6.IgEŒõƒé@ÔºTKš~~8¯ç °0¿E-2¯‹X?ÀNyw[‹heøaøõ%3©nçtp¸Õ¸§ÎÕm\¾P»E)kŸwlÖxºïÄWMEóî¤ÑP‘½íE•9ƒSBÕq+±Ž'°êãóàF à'T}ȳdH.ñ·²kqÓ^å§Y¦s Å÷vçBý›y«ÃŒï6”%®qdùÝ>iÌm·ÜµB»Ø½Î¯VR¾GÅ ’,4Ÿwó(ÐKd1$вŠT¸v|ì#cpR7Êúµ',dŸþ,¸r àó'ÝÆgªï†—LOò4€Û\ßx³–žLy†ZÊ©Iñe ž ¢½nGb·å&¨jˆ!.z}­Æ›U„(,¸h_-ïâÙ-¼$ùçè0²…fŒÐDf§Þoc»fµaýY°ô)ö±kÔËÁ™¸º£MQ>JÒ»”àÖO¹‚AÉšŒ:/&iTÐGd·®æ®Sˆè‡U»‡n§Ó (ß6ØËH•‹àVi>ž©EkD {$U›pYõéúø¥LgÓ„ú¨üìMæÈ¥^ž;ÒcÓc:üþôÛÙpËtðA”ØæK°èîwŸ/dùÊݲ4ÃC*èYÍ“àŠ Î󪓱T’ÌFz3ûš V26m*‹¯·ê¯ôî§c—0½Oâž’@¹£Rïøá‘'OôóH1} ÆEÞøëâî–ïVv_©§€>ƒÈnÃÃÌ!È,­–bî¸U«¶ñÜm¥õµÍ ™0ä!Ò¾öSÉËksKSi<áæoO.P*ŸŠÓ,¼Q° pX€¿Î´&Ÿtã+¾:© 8*úôYßÙ;Ñ:•mQ0óD<¡îA¦š}|þ‚¤„æŽ)$á°9–KÎØP*£À <¯wË%ûè^8o¡ÉF[ÞÝMØMØíb¯ýºab·Û™4“¦ørë‘)7¤…¨4äyµð´y@Îó{49¶I¿uà( ‹Þ;k8JÁb×»Ùç(„OöiK—JcòqãO k3fg²cÈÅÎJWìv»¹@txH[w`þ}¤½’Ò‰¤ œ„ ñtp=ƒ³NL7ëTZºïµ¢Í´9ûÎÏ'RÜÍÏ8‡ÊÕߨçóŒéTF¿6GŒ&œt߸3 v­¸¬C°§K“Ãí$ØšDW>GðÛ”ÐRÂÛ€ì¶/f d¦Ð¾ð5EFh@m¹7Ñó¬¾Î¿;þíŰñݼ¼B„_œ¹fÇIÑOŸ‡À™²Ïò¥ÌÓëAZç÷Œ# |·÷žÌˆ¯ÍfˆÔY|à$‘J€<äß™‡a‡`ïÕÛÄɸ÷­6™­HV$ešlÁÕs|2³|„êg›)m£¼üv–‰äMVÝË‹ Ùáë2(AîRIÇŸ£ ÅÏŠš^*ep€þm.·Å;§dB?_Xö¼^?㪠ÍêÇQЦϹÒfJ¨m ý` áF±ôДMž÷º½ô#ë«On>ëÛ¢s‰ûµ?ˆ«Ü8¥ÒRnÄñíg/Ð'W‹ªôI‹…/×I cvÂ7;?7™° Š/üÞ°8F$Yõñ˜‚nž=¡ÛͲ)=éÍ"14\xt¸}ON~š)?Sm&úu§e‡yñÍîR ‡Ùí©œÌR› Ç!\ñ¯WßÌÉ4jÖZ97ã¾_•‘¿‘IíƒEN[²ö ä’J~‰ -‡i¿|ÔöÂonïQLƒYŠgCÙ×I½¥æÍ|âѳÉôBcŸ7îµX©)9…ã;V¶ÊthÓÑávÊUfnU«oÏhM¥‡G°Šû…Ue5#/WmßOró2 ó㟅õûhú $Ëéi Þ'x¦;!ZK.lê(ΰÖ­L\wNŒ²WÅÊïi6òξ£[!G´ÊæàS<ûôÑd›®Œ†G‘¿|åE¬²,[%¬îQ:ˆ;GÎxjK]t±·Ñ…¾Ï'¾Ãw}Ä6RY?/Rxê‚úÓ~8™øÇ¢9âJ¥•œA´¿dfÝÎú’Ýv,Ù½Ÿkü@*¢«'µ­¸k40ؘ  * ôï«å&Àã»o6¿½EÙŒjôîÉLû¶Ù¶Àò#”1ÜhóÛéZµÍaÜ£‚éãbj—»cÓ/‰ö°ÄªÞ 7±T‹Œ»3ö¥Ëv5«}LÌ…BRèéÀÄ x2`0RPv%ë÷$öÉ,c×k[BRºàÚN Eýh|Y•‚B@[xñ¾BÞÕHýÎH{] yl¡.w2á*mz\¢òùKþ£—&·Ï­­EÐàÇÆÌÄß? =ÎeBU“êPz9ÈuÀ;D'Óðßm¡ú:/Óõ‘o¶-gbZÓë-ã»íò8®»ñÕrÛ¨ñbïbþ?M<Ôš¾_Æ–J?ªZ¸‘ÚgðÀ«Æ >:ÿ†DøñÛå°¢höS‘ÔÁ`—½‹„»GbD—‘M°Ab·&*õ–è’æK‰Ë“4T KtªÌÄÄ*]]¾¢Ñ’±–ÝdXÑ„À5n¶ß§ú›"ô¯ËÆRÌñø:ZZX¨œÍDÍýûªCZÜ”©‰kß}fŠkWJƒÍÚ¼‡ìžá1_ÊŽiž”=S¯$ÌæÍAúÍJK±õ7‹ /íO¾ÏoÜP˜ÁÎÈ'›näýpÝâ—›ãîz!_Òu¸kÈ÷zöÃ7¿_¶Øãõ©ô!ï‡ Õž,Y´,Í„Á!o½(fyèÁ³t®wt O_¤Š•2Q } Žç.ú -J–Y 5µKfQº“‰&¹Lwa!qÕe$¿.hlêb7ŒvÙ¦';öIòçjÕüø°Yàw)Ë?·$ÆeâÌÛã3)v³N“KÓõV¡w{è›ÏR³‰Ó—®fSË[œO…¼B—-ÖF&§'_ŠÆ2ä‡ú?o¤¦4¹72ÒÍp8*rîÐãðªèˆ Kº¡:†·ŸåØ–0Gè`2%¸¼itq÷`««ýæ „‡FÓÏ:q‘ßE¯÷}§N³Äþ!~£çÑíoŸZÕ,ßušmœ—úоºæë‚µÈ ¨{Sï×¾ª $H@drÉ™ª"¿¨—fÚK¯Ñ2H…NÎWS± »SHEUÅK¿JÒé¿€Ðfë}uÖrDvçæ´»«:V”9‡¸ §rÜn±ÏÑyíœ.[¯gþäD]| endstream endobj 741 0 obj << /Length1 1739 /Length2 8850 /Length3 0 /Length 9994 /Filter /FlateDecode >> stream xÚ¸T›]-Lñâ׊»kqw§PІ ÁKq-î+CñÅ)§xbEnúÊ÷~ï÷ÿkÝ»²VòÌž=3gÎÙs’F:m=Nk˜H…sòrñˆä4ôŒyy<<ü\<<|XŒŒú`8ô7ŽÅhrqàbÿÅsY˜¼%AÔ€Aªn/?€WHŒWXŒ‡ÀÇÃ#ú7æ"·t[4¸ª0(È‹Qæäå¶µƒ#êüý`²xEE…9þÈ8‚\À@K(@ÃnrDTZBz0 ÷úW –çvp¸“7·‡‡—¥£+ÌÅV’•à†ÛtA® w5àwËMKGÐ_­qa1ôíÀ®:ô`6pK@À@Ôâµ¹Õz*ê-'ôO²úŸÀ_›àåâýOº¿¢'Cÿ¶aŽN–P/0Ô`†€ZŠê\pO8Àjý›h q…!â-Ý-ÁK+á¥[et–ˆÿêÏèv‚»r¹‚!¿{äþ±Í Pk9˜£# wÅú½>y° ˆØw/î¿× ó€úümÙ€¡Ö6¿Û°vsâ6€‚Ý@*òqÖ?˜-ä䀜 O ÷ïú^N ?œÀˆ|}œ`ND _° ñåãjéÀ]Ü@¾>ÿíø·…ÅË °á+-ŠõOv ²ùÓFœ¿ Ø`ƒ/€ç÷ë?O¦…Yà¯è1·®¶Ž¼¾û_-ÿÇ)+ óøpò‰8E…x¼¼¼BaaA€ï¿óh[‚ÿZÇŪ@m`Ñ?—‹Ø§¿—ìþ—XþVÀ¿siÂÊXþú+A â÷ÿYî„üÿ©üw–ÿ«ÐÿwEŠnÈ~–? ÿ¿¥#âõ¡\78b 4`ˆY€þ/õèÏÑÕYƒÝÿ׫·DLƒ Ô¡hN^.?q°«"Ød­ †íþTÍŸ¸Áïyƒ€¡ m˜+ø÷ ƒˆâáùbÈ€ˆ[Ä!Í?\ Ä ý»®³þ=l|‚BKK/,ÄY#,A€/b*­AžˆÀÍ…Á!D¾˜ ÖïƒpËþ†þ°„yÜŠÿX"nÍÿX"‚nƒÿXüünD5˜ÇŸÇü7Ì˃Ègeéò_€ð€µä¿0>æb A@6ÿËÿüֹÌß3ÿ‘äìv·„€ Åýóñ¸mßÄ „ÛòŸš¢n0q€ û‘‚ØÝS;Çíhéä ‡ýBðÁP7×"€v‚ü“ QÚ ±t˜5âNü]ßú¶€ÛŒÚ_󯺹¸ þ5Äñþmÿqw‚@ž ÖÂ, (lÿ1¸íªZ†Êƒsk }u­#"θ?\Î4÷ÞÇNãÒ”³¬…u%ùHªö|ièäìk*¶£«qÏWÝ™+)Ê9p$…þ ÙÎÜ¡ë³n[­5ŒÒvB85bƒð8^‡ßÂÕ„9ñÅìmˆpÿ·킻×—¢ûG@Ñ] ᜾úRšæcc±ÿi<"‡£Rš‹B£ï%›$’EüyÞ,}>y$¯sKP³­ÓsfgårÂ͇i¦–ÓñÒ΢X“Y.nػݕ5ž 8ž]É‘½7ð3'*yó*Ç&úWÌÏóúã#™Ú𗈤Î)¿ óüQšö—1Ôi]ŸzÛ™“w<•ëo.POˆ¬†•Äéƒ !å ±‚-r_H" L,ÕÛΛ0]zFmίqxM.Å6œÌvë5~•9ËÊžà3χˆòoTjø3‰ú â„úÉãþy‚kù¹>oÊ…dgÓ€µ ‘R[$ÍÛ7axÛIX{£ätrÑKý•¨¥†š[uÐx‰R¨(òË]›ù·‘–Ð'/XgÍÑ›ýÓÎTòÍèáÆ«Åg¡M„yƱ3£yFÚ 'êw|æ|ÍØ•Í¥0åd,^2Ï) â¡=æÎ67Š×­0Ü«‹›šOitß)$¦7ÇN#ŸÿbJÚHƒ¯7~þÔñµäßR, $wœ‰x¢VPaLÁ”_È”ôT®‹×Ò-®|¾Ç•k&2„Õ¦.¹·d$HõÔ&=Oʬ‘Y–äØ(.ïxE_~ÝüŽlR÷Í]W.y¾5SGÞ‹oZÚœ#{t$¿Ýá i´• dGFåJÛ ¹¬6ÝcáQ‘µÊ²· ð’?ÈóWmäPÀÞ°¶J­Úxé˜+eÎјqU[î!÷{wì„Inó¯yÚ&uF­\éýtå ÐÄ'ÏW´™cTóG–üÜãg8êèí Š5¤Îk÷¥ÖØfƒ…ÝñæÈ$–´y]}7”ð¥ 4ÍNø“#ô·jElZB”^:EaAÍZ¬Áu¸<ÂÓÛSŒx!ƒ•p nt½ó‰ÎÎl¾û„}6#”·[>¾™ç“ž¾.›<²7ë{Ó5°íÊgÃ,wæµ²^m>øaúƒ´)V$±J)ìÌD±ýH-üVÀAK‚ìð¾\zÖP² áøª Sx»B¶í€ü% OÓÅd‘ýàò¦q|~wú¬5ÐlŽ¡‘)jëìÔ”P’»ÙèÚÌÜÍ·¾nÆúŽN«Ïß÷ y­âhásíi@»}®xìnò­›’^–Œàiº¬áRž;t)]³2=¶f¢>dò²”È”}ŒÓÏ×'|r`H:g:…ý-õ;0Þ£»R å¸thi£núÛŒO®fi Ò±£ëuÙ÷“lRóÜšfiàæV…áâæø`P§eé;Óó]©äÃS+x.$1ÍŽ@(þA+ܽǼ]÷ûh­hœÀ EûNÇéòqwÕe³‹Ðe[·xaíË”ÝÎM÷yZQ/ÂÒzå/'qJù¡¹ @¢=Å!oæg±Ý`ÓŠ¯VÞJrRôŒ¯A_ =èvkRÆ„¢G uµw¶›ÅÚ¿°µÇ(<›ß-´f®èÝê¤âlnÀùćÄMÕ`üã¶ÐI5¿L†ã8Rõò–²/OOd¢ë|!8rV?#^@®ˆÌPW.üÒ¢¶|~ÖÍšöÃ9›}n hì•Ü?ÖZ˜“ñ‹È\c4ê΂Sºƒç‰!úóyæDÍç‹R¸^ÉP¾µÔ×#T"– ã ¾KÍõÆ]‡ŠóÏwe}kS¾;Ô.õb¬ê²,ÎL˜ñÍ3ð ËÜÞ8·"Eㇼv ‚M:( ÐÙj!© ÎõÊ"z»èþôÉ1û›¸‚Ú¾$…z`Ì— ( ûsÜ•4¤ûðù”[eлÐm¹ºïîšG;ôJB¾8E¸G9Ù¦õ¼¹2dq]QIì¯wªY6› g~¬F*•T@„Õl¨^{¯¸ä˜JüR¢÷a. 5Ò±t’÷&ׄSxs/×6,xO©÷¾ ~Ý!ÿˆv@€ÿzGáЩ!’ò¥ÞMÓ™ÌàZXfxí§5Šù&™Í¤æîv8¤£f\ù.×I?ÀÓu\#&D;‚­î=T[dSÔäá°FN{¥ÌË*ŒY ¦þÜ{ÈÀC3PWÞk(î|ò$ÂûlGd ÿug¡¤õƒ½—þ»è€ÞzCÇÁíÔ5 çâQ[¹aŠø³øãù®–wD½ÑZ·ôÃåVü¸ûàoZâûÓBÑŠa4l‡©¢Q.3*osaöU‡jDžö¹-\9ÐǮحx«g?þÀéUɀȫë¼Dá¸lÐæ„ÂÎÛNÛ™Ÿ6n_Eqðr_áEåD±)>KµûQ‹Iñ1•+“d¸GQ|ìmK÷9œ-Ö‚4fù…SóWÀáXáX%ìT$¶_ÍCÇök´S&¯^ ×ldxÖxÏ~ ŽºaÄ›óO·WޏÄËq\SFâ.ú"‹¸ÖRó:`j?ÊM§®‹þÚa ×dA/.£ Xꩱ¬?¶©óôs‘Š.¬yÕròÊËG#í¿ú•çaRAy¼ÉÊ”>Ь=uŽhŒÝ·,}¡óÑ;xš\õcó¼Qe^?\Å‹§¯#Ÿ uúYD¿IⳚ ùg _œœªÙÊK~Ö¬¤¹»hM[C…¡Ø„S(6¢AlUTFb?;v$ÛÞ‰±­¨ÓØ E“ôŠ&0Y&Ø‹³Óø´ò„=fý¼(“`Û[­Æ¶`¤Öƒ¼dØÀì½ðòlT†f‘õ1ôèb»vF¿-‰°7=nI}|Ouÿøô»™<¸äΤèDÌõyÖr_Ý⃰›×H)ÏЯ ƒ÷m& "÷œµ|/o§^KAB¹¡@ጟ38 Ç)Uõ©óÔ~\ß¹K¨¨†šGxòRນk-‘È\ôÔ ;JŠNhUæø‚ü—…ŠG¶ÓµY²é»›2%åOÖÚ?NœŒà?]íZ™¨Çˆ¤ +ˆû|ÄûAÛ†üËãŠ3ŽY½þ¡ó64ê÷.Å&ñ_»Ý-¾á´Õ×üŠ&;ïôó¼TbxÈ¡ .Ü›àòÍmÇMj,![žèPKOV×¼‹” ¯ì¶¡#{ô”m¤½Œ {ǽ/BW¤…Ezaáí;o\`S»t¯&“Šcjö×|I#ºOŽÉ ÃÒãR¼ôS†rÊ»WY"_ÈfâÑž{]ejºáZ&aì–´÷s #Ã5ë ûÂ!| šdTLÃXÉ4®ðýôò¶ŒS õ”Ñèèé±3L%lf14ƒñÌ·@i$üuò[¦Æ¡×ÏWÇû R/;h')«Ÿ<ì-”±'ñ*ýžç¾ñbv¹h«¥F­“ÏpÃðQ‚˜ò[à\¦Ôžµ4?•À”¿Œ2oo†z‰‘MÃW™º—2ý{a¶¸œuþZÚ‹S;E5/±ý]Ž"!%Ag80Ä•ž|¨Ä|¹.÷*¥Å‰µ’õý>Óüé;Â<Öš–曌Âzl ¬úÚ`\çw¦†ªáK¹Õ-~M¤õ—®µúÚn>ñ¤®m-ÕWÚÙoÙ9³*Ks Þ¦Ö(þ4¸Ò¦oU e/o›2î Iñ”³$_`‚­©¨Þ©×‰Û:`ˆv?a1Vጋ‚X|øy$n1C²³-óSY¬îÃû5ce+ÞÄúõVåAŸ& A]3ãÉwxXïK¾¤(Ë/œRJ9bxM¦6k¯0*J´ö Ȇ¡_,\ä*©ÍkÛվѬ3iBU6ß ÷—Ã<Ñ'õ^™²y¼óøùtJRÔmÀ# Ä·²ï¬*sÛÝÚW _ÝÇèø‹~¯Jü ×5ùlò,Ï`nªÂüY~{u§îk{ç~jK/|25¦Wø¥æb£K5NM¯Å^Pˆº? !HC3ZG –}šð8¢Øˆ(–K{ME\*‡N¿ À…ÝèJz€ra`ºù!(AbÒ(òû.A°®+ÒßÅ_.é%Qʶ`%‡ÒñÆ ·ÞO%ãR“ an¸ê/J¾={ôêür>gˆZ=y?(W;‘IÇG¾pSòW³X<›Œ¦otc¥ÿ^+~³¬—œÒãÞ>rrûSîM­T§jP+w‚"½W5ä:ò9û²šÎt0ýðtù¤Ä~À×ï+‡Až0UÓµ¹2ºQ[!­¯\¾o³ýáû#~‚„'y†ë#¥µì„…•]·4‘µ®ï>Ì–xíl ÷%bèçDÉ Þ*¹Ø® ÷Ž2Ć¥F1½®Ž­ïŒÄ|“üU©ls^$;u7· ]Ã}k•Åž ^´± Àý1‘ýq˜a:nÚ¯ƒ<ú‚ž2Ü+*?¦òä±®IÙç4˜æsûgÛ˜÷Ì;}m¼•Dóx]â¾OñOB^iøegYÄæA±5R!¡D/ÓhÕÂmÃPKûw zJwð‰¤£2õ+’3Ì–ôŒj¯-tÔ|¿å}Ú8u“ÍLŒÀó=cò¿ë庛-nݱ¢t—²û)t²Ká …3ADÏšµ%?CmÏ«(îˆIõÀ“æãÐõ ´Æxö|rŽ&…ßʵ„%^Ü8æ•¶#U1}<¢)"ÍÄ'éynPüqNsIDfm¿ä:‡ÇO&‰“þŒŠòGÊ$œÙ(ÙšD”]A¸æDs3Ý:Jħßô4ʱ9‹;Œ{àAvë\ I¡5¥;Å[cäPt㔋û§0'¢óïété }ÚYŠR0ò‰>{m|ÑõÓJúŒnÛDÙȬ¨ñþí£˜sqY3X­ÒDþëN6YlþÚ 7h+ CãªÊÞÞC޹:èÞâ ÖÓ4†®U‹@_NQî¾Â-Z¶Ô|÷àÐÞTuý#Z‚»MÓÈ"«“ÎÇwß[÷ÊÍ÷øžO^¥ °£À©{ʪM&2kÂ)TsïKµ¤ 5âUW¾ã‹êçÝуBg^Q6s[mLöžj*’ ó>Œ³;¨lñ½•´Iñ-m|¾êk8燇5”?´äÚ—…õ¾¦/®Û>?Š›ÅÊ2!™V´ËAŽ1~BRË:v Y½O|Æè‡¡œð ‰£Âsüõ¹k•«ça¡rösE5ÂͰy´±C»bìæ—BŸÉC9V&íô8_¼|‹‡2®JÎÜX}9,Q²¹ì¡¹•Uk )‹`¸Ò\ÕÞ öè5ÿ¡ÀI§¶Âñy„ÞlkòÚÖù^”§ÆFa€E܉^â~Ø8Ç•á äz8#7²°ùXëúǾœaÌb§„4Ÿ¦Õ!2¹µ;9nê,GbŒòåa½/ t~ÑNÊ©ŸçÅ7‘z¦y<þÖQD¢Ø´’Æ„û†>xS!Qr,ôuƒ¸*~?Žû/Æ«§‹Uú&‡ÀYtÓã@r$½Rª¥}ôj9z°Wä ÜÝsFÌÍZ'žÔí¥—9ñG}kúIJ|+ön­PÓyH•ç7f!Ó !£ròj´ZÝa6,¶Ò¦6E†é#=&{~oö£x¯¿ÓšáËð»W<\×ÊpŸª¢nà{䎃å}³¥ß´r3³ð•ØêÙEÆ#“ o¯‰„ToÅ’ÃŒ`ªµ®ÌKˆ´Oœš× ÉΓðMÉ›øª/éíþ‡fƒµÌ?þRèUú¤œ<÷’µ.…Ð1yƶœ I—†}9NÆä´ÎE]jwÛÜ{…Ô3†¼MŸæwÉìv4üš„Nr‰ÿO]4Yo[¾Ù̇$rÖ™tNŸF­Øæj­Ù>Ý’ž:|ÏO»û˜OÃuú1Ï=dm?ǯ·ÝéݵfgÐÏ•A2¬N.¼Å›kÒT¼f^)Ì¡uìE8¹”8hà4J£K÷€˜ºÞó'§Az‡#àz—Û}Œ4‡¬»ÜNºƒW+ ]eôä|õnXi  Á+ö¾…j×â—§Ì”˜Ä5ÍÅ?Ó¾íX…ë|¤Hëîçd¼›–÷¯.`Ó™=0©Ü˜évuy~~‚(ö`Ob_øI’1yzÝÅÕ§“=Aè°Êªbd2w¦Ôíhdú®©¥+W&÷½ÜL+2œlùN9DIÇÓDc%Š™ªGÁtYù=€gË¥ã[¹j1­²)ý¤‹¾÷ÊŽ/áÊ¢FäeMwÀ¢Åª‡ê¸Tr¤ÿ 1ýÓw#þÓ·ç¿~îOF™ì´ó¢, ½ÍòsÆïò5º¨¬Uhõð·sÆ8xÎ6ïc¹†¯Ó½’íUê­§›ö&z´ÄVpCt¸ò„Ò÷S‚¬‘SlŠsè¾É&gåÃeÙhm‡Ù…8µ¦W]ÜJ%Ñ«V§&‰ Ž×7E ÌÆ ±Å˜ºêŠn´ü±úW_±ô>¹ Ù(.û¤9ônE)é–)ˆ8Rœ*’µ–‡g<,ò&Î7çH¹ñzŠBRó²rZ-ä¬(q⨂·óWá‘&ôuxn‡‘ºQûí®È~tÄJ§ç•zŽ$ì(mÓ§H”.an¹²/¿É1qw¬*àé¿[Ä"µOß`îV —ÃYi¤ìõ¸V•ZF=ÃãlÊ·c_{çóñ×"'¥VŸÊF9•Ž8ȶh®rXç; Qž[®!”/'¹á,ÉÌøÖí+èQôMê±ÎÔCüûð¸/,­'eƒ³ó† nfȧúuíªž¡Lưp°%þÓc…$Ž=€ mÞ×½¿Ôxõ‚“pQÄØrÔêfá=É1k¯F²XR Z DPãŽyÒS-ùá#m¬ˆWŠB§>‚#“0$Æ>ÞxYs× £>91–pºw ÉÖ@zt¢ŠºÐ>Ý#c%ù é±Õ¤T,pÊÒYGÞ2š'[rÈ´Ý5y&Ù]馒î:—7ñÐV³vOÆC‘½×í¨Œ­"Î_¦ßJÒj\É™YWq¯tñsöšzç£,6žM^íÝÒ°¬9)£–µ’µC÷ÃIÓ±÷R$_Ï_p^IÖóQTy¹ ¹ÖÌ/5=cx ]+;.9•y ƒ•o´æê˽ú¤¦‘(yeõÓñÿ@RõSÅä9–úÞúÈørß#”‹y6.-޹ ;hÖ¼k¬•ä;¥+/Èï ªxˆQº#‹ŽLVÒV{1«–Ýcá;IopMFÇÎù+É ¾ê¼$Ôë_|Éç±7hÇ…¨-ªm5£oòIƒ Ï«MŽÛp ÓÚvOh§CéT?*EÄê–NU,$ ˜rýðÏŸÛÝ‹÷•Sæ KÖ¦õ…ØXäp€vòqwêMŸ°·ŒsL‚%£Ä¶Å‡.Üe3û3 %ƒXâ÷Êuª¢lªøÕ ’‚_‹òkÈZãL®Ëôg—–_»¦•}£<ô±¢á¨b„q¥[§+§2,>¹;íö¿¢.69?+;æn‰É0OsÒÊ Rí ?q,ˆ ‘“ðTœïWšØ_|~£‚Q+1Ñþ&¬c¶^ZÉtMPRå8o·¯ÖAî•·VÊ#NðúHÌ(@=XÆŽ!¡I{1²°•®³Ð¼ï¦ûÑ\Vj†ôí çk¥›|¸¡Û¶ôÛ>4ÃIâhÔÛó'!)_»"V¿Þ?•–ÈqüT;ÍØ8Ä<ïš2<›þê^î+¬ý•ߢ~pxw;ûMi+ϸ<ñôf.¸ÓôÍŠù¦òãçŠG¨Ø–Ž&{òü,6Njwó‚”Õj‘EAçåàºó³ŒMï“¥—²EOâüS¯gŸí8/ïgS t¸°¯© âÊÐÇ)Xëâê茺L¯#ñQk6OS´^´˜sS¿œîîñç< úàåZdgó”…¤;e¨£­øë‘†Ù×·y*2 R{o»/7TLÔrŸøËâµßLô“Ÿ†ÝžÚ‰w´ô¯˜¬É(A•´Œ¹\bê¢[ s@¦”OóöôDvÑ$Ü×S]?Ÿ MÌÈtØäÐ(õ™èatJ¬ 8ªÞð9&MSñÑUà'«1)`Z:éKè¶xôÍ©'ô‡ ý‡ïiWšúÖ¹Q½K}|: Ð]L æÞè°â£e-<(㈲Þ!eÉ ¿ë¦õdfãb¯UWæUYÛö'14RŒš=ÈävKá¡8ùUõÞáÏÍvñ‘…û7û{tñ‰òiæ‰!M›_5Nó21-+~M%ëë>æñEcã1¶Ù·û_-¾Ý³Å ™¾³ÓG^MÄO7‘̾>:Å"‘øb¿;¥sñeÎ1ÒyÎ6ÝÆ’ÕozçB ʯªK‹š]L1è=ˆÍZÑ1•CÖéëœ0:K5 bœ3×ÛÓ) ŒÜó”Õ}`ÓT±/¾ày µD÷p‹¢–Ž'á™=ØÎ­úr…ù¹¹¨Í½—åp…qÔ}51Ng_ç ùÐíÓrÝlïæœï]‘8°]R¦ºdXÈ3yƒ?´Ï DÔåTø;º?‹ÝÉߊ>^©6§ÔÒ&)ðÝúÄŒtÄiÄ1â»"Ñ‘ ôê° æ/õñÒü¯MßG3 &©-¬¡K†hÞ›<ÂýúDí0M+µ…ƒÙYM¬:¸¥ªèþ†Ë—@!æŒ+!¥‘&Ó<iŦôãhp¯-Gس‹©®v]~íe%*沌ó6¾Àr‚2Ÿ‡Õ$[äóùÓ̬· Ù7·c8k¡öŒLÞ‰`,ÒôuQ¦[á©7\tlu\¿ÎNv¨h¬v?(J/íìÊ…7£*î#1_c†&}&QrëT%³‚iròPÑIðße¼[»þö4¬òs:ÕrPüXj†'å«‹"&弉tMó0¶2ùÛ´å{Še>Å1ˆ“~ȯ˩cÛÒų°j ªnàÛ»zæØ¢Ç¢þÁûTÊüÔ:oUwAHË÷¬=‘ÜA1S’•dÈÜ›ýŠÏÝHˆ½mî¨è9„xŸKåû÷-ÅßTM; fñŸ¡ `\våvnyï ÷Ži|³'´SâvÃ~ls*V·¸èç1¸tt£ºÎÞõaá#EV›»3ò=¡i>ïðÈ1×Ú{>Â$ŒV“öÆ×yÈÕìÏàS55*.º#±“óïLUÎÀÅôªbWuô0 ×½wüß:VbA<££ê˜oÄ»ÃqèW| ×;Ñ%í@‘åmÔøÕè³$û¨–½ÊmaßÔbYLŽY´ŒW£â:/~´Úý(2OØJ;.¡cf¼"þµŠ¬ –"fs²¢ª É#·™ëóRüDÈi¿Ý4:÷,Q{Hð;|±™Ì_9¦Ëkèùûíóëcõáç+õÒ“M.W†èŽ_ß¾ýì£_¯É”+þìC¿ÐÅú®,r }áp)p,¾!YGäí¶¢ôÛ)e¤ Ôdž½+£ ¼5öæ,¾¨¸uàÓ1ˆ+僷•Rð3~(n|#&S^Ø,!áôXzt²T·º™â×¼h6|'ù˜ùÆa(Ìæ, å0G`ô3;' ¸Üpjd€ég-žW™ƒOƒ’ß*ã7[O~`|z qžàsjs§¨:[f_äàuË~}KK|z³¾ò —N}+kQ™J0_Î\0^WŠ4S·ç¯¼x#ÿ††4AÁeH™¨Ë»n°\Šmˆ¹ª5Ø4}¼--Òñþ‚eÑ®!iæ7ûô˜øÈ#pi³É†KÔ§,R‹¼¡móQœÕûܱ¾±i`º-ywÉËìK‰bªË‘ä±Éï}“Ï¥±oµD§à…Þ_ÉnSÐÒ’Õdá“éÞ$ãZÇÔ/µ1Åg- ±m ÅDf ýâ7¹¾aÆqËÓ+|Þ.¨%§_`œA'þ+g—pçe-o„NÃð³i§X^ÆÔÞ-©¥áØ@ÅÚ¹ñ¥~¢•S”× J”ýäô.Ë»S‡'tã¿…¸J{§öýj'˜ endstream endobj 743 0 obj << /Length1 1371 /Length2 5926 /Length3 0 /Length 6873 /Filter /FlateDecode >> stream xÚvPÓßÖ-Ò«4‚Ô¡£Ò{ïE!$"$:J¯Ò‹tP©R¤W¥é JSé H)_,÷Þïß›yo2“üÎÚkï³×9kÿ&¼\Æ"ŠpŒ=B ƒÆ‰€ Y€²®±¥$‚@b¼¼&Hœ â/LÁk†pÇ"1hÙÿEPvG@qxLŠÃót1h€–‡ ,KÊ‚¥dA €$ó/"Æ] õDº@€ÀRð*c\}Ü‘ŽN8ü6ÿzðÃ`)áßéE ƒ¢ºPœ…ßuc`HÎç%øåp8WYQQ/// …bÜo ¼8'€‹p÷DÀ¿ô (Äe@ ^€‰û7Æ8༠îpAÂh,>à G¸ð›Œ5uú®ô²Î‚0àïÙÀ@ð¿ËýÍþU‰þ …Á0(W(Ú‰v8 ]}5 Î' €¢á¿ˆP,Ÿõ„"] öxÂïΡ5EC/ð¯<,ÌéŠÃ±H—_E•ÁŸ²*®ŒA¡h–âW*Hw ì>¢nÖñBûý]8 Ñp‡_"஢¦h¤›BSå/QüsDàŒ¤¤„á@xÜD•7ñqEü‚Áx~®W€^"é€ÀÿPøa¡žÎÝà÷¿ÿ\Q€Á8†Ø#‘hŠÿTÇÇ?küå»#½Ö ¼÷ÀЯϿŸîâíÇ ]|þCÿ}¿¢ZÚÆ¦¦ªBÿ;¦¤„ñø‰HDd$¤ñv“HIKþYÅŠüÛè?©šh @æO³øSúWÞïŸÿïlþYKƒ7-ÀÿÛ€ þ üÿíôß)ÿ7ƒÿªòÿòø7¤æáâò;Ìÿ;þ„¡(¤‹Ï_Þ³8¼ÿu1ø)@ÿ7Õñgfup¤ê¿£š8(~ÑŽx/‹€%€ ‰?8«†ôFÀ 8˜ÓÇüÁMMš 0À`‘¿^-ø,è¿bøñ‚9ã_X¼-‡øéù羪hþkÌÄ ’¨»;Ô‡„w“ðãçŽðþmd€(ÁáSxŒ;ůkÅÛBÔÕ‰—‡)þQæá°ßÀïû¯õïqF ¼0Š™i L.ä~uHËq•"›—Èò0ÉÂR[d¼ewÇ÷.ÏÏI‡ô‰ú¸›’¼üê`šÁûçacÓþl‚_G¼m:³ΧjäâT»?+íˆä÷ÿØëtD\‡c®9¾•J‹üLÿ-ÁƒÖΚØúf’ùôi¨T—øjÅÊÓ³6쪕Ì&(>¤ãJeÃÅ*æ´mF[rÝX XÚÐÅ]q·N÷0Ñ4}{FŒ;Rj‰aýáóÙ:.c`n®/«§;M|·@ûu¥dy+£¯WÎ`b/+SB–V=–€O r¨ü<%ž›µÆ7O„ªž³³ßˆ{à BJØï*"#.%ºkä)\ߺ_¡Ð"Ÿ0„š~¶ï›²¾>ší²Àùz6#Ô vVäåw—AßzŸpÀ¬ÜqÛš,}ŒÅɬVÉóýØ·<Ðõ • s¬›îb“®ú‚/7sOÆÉ?®Ô'ñõhÓ ¯î$!×ÎZu²];4»Ø¿Ù4ëFâ°Ì—éõLÐ]³³zS1}%³açÕSBIž ©-F¥y+¨cõ¥äv`>T—:%º¾É¿×fžˆŸ|Ý <7å|p¹dO%fDãP÷2'¦KÚ•ù4Xùœµšæk—Ã>Á•”-Ý>al8|ÿj{)Ô”ýƼŸÎÖ’mÇ´üÕˆ~¨ØÏ n9–miáI^YÈ˯Ez_¨6ÑÖfÓôõJ‘q_ˆZoK0‰sÖ:«—±µ¯pt¹l캣†º6†wwWZd~¦ó–Ÿ%ååZÈ/ÚëûJTT™ Fö´\/SçðmWç¶ËZd¶pOxl%»> xxó …â‚ý{ꥌpqB"Xül¼¶ê‚"»cÛd5 Mù+ÕÓôEðæ^ó?•tù ]ã¹ÌâàXKUÉôM0{ÑÇë`Q¥åA~¶NðÐÓ»/ËM\/Eù¤÷%Ú§œ- òÕ“4è¾ÐG€Ÿl’3XÛ:1ð_bxmtéêÇÀµCeªÅ¬²fI¶|1ʯáÞËÆÖ2¡}`DZ(—ÍèºÑÊ).Yþü2Cãw…^ç±Nsfšm B§o«nc.8 w²¥Æš5m·ûÔþ?íQÅ?rÃNQ¨[ù;½Ù”rIéa] ³òXÃOͯªá*Ù¹!\çc]¸YeF}þ:U“ö4N‰+àÛQˆBâÉJg´§­Ä“jviEª´liýò(!ë„nˆ½¸- ¢Ë<Æò!’Šîz-Ò|ags7ím¾çÑžußùÖ(¼%¿ñþõ£LJ$Ýu‹Ÿæ¸{©Ÿ T㡸 ±™D10êUØKçÜàOÎU™­ïƒ©=p`lYýŒ&îFï]Jíã[ëKQ«ÇÒö..³¯ïW|Œ’Ô­ÜbåÓÎ7Åc)âžHΨ>&™Js+xÜÁ ˆY5ZK»±ïÀƒ¾lï '!¡Ú úÜ©ô›-Žë*µ0¢Gc*üYdé®AÂ![§ƒXÞŒt|¬e Ï—<²y%ÿ`Á/欟BR!Ù)¼è?ÌÞÝŸ¬ÎøQç"q©BReÃûÔùA`BåT,í—0Džw‚ÝÆÉ„`•o÷_?øÙ<9Kmé}‡–­ª“B¬0åªÐP.¿½ye,wô ÏòÆÏ.·r©ÁDýïžú¡”ùÆ_)®@âîä² ‘~_O¾­þtlDÚ2 醒ÝUìWçQdß§h¹Ö5”=þM¥z0÷£´DÀUî[;/”¢ä×àÇ;ç@˰í—B 8zR[z¬¸1¿{)¸=kY¢H¡f”|kÚ!.HBÀYš2eâ4åŠ^Ü ;©Ÿ¯ÒÒïÑ&1è8\ä¿;‘MŽN³{áRr…òÍ#C¸ÂU®Þ–[W·éQÞ焇õYä36lÑk4µì2ô~ϸõÇ!~2½ ÒeÇ Â^ê|¬&—Š1+Ýšš÷’H–ø™ÙŽÖ5™¨>oÆ“ïê9Ù ¼_¼snïHtI=ÑÖƒ¬i÷À?WÑûÓC¯tLƒ)X¤½þj–_ì§ö#ߨ‘ŒF—^毮jèLzN6†öv›Ýb³i;XÛ€ˆË©EåÇ}4¶ü%JîøedŸ½‰‘kdÙ¾ôÉOšO€ž Qܸ×]Ý‘1%8!¨µ{£ÁV:{·ˆçèº8y#²$”®»‘™c)Ñ$E6EY.\f©ªÕÌ'µÀÕyT0S*UfÐZ½uI¡‰Çl”à*ÙA¸"/Óð¼Mn'{¼ÛüàÏö=yPÑ]_ŒPËæÑét}kèp|Í£ÿBÖú¼¼à2{C]‚æ¢î—=%¢ŠÊ—I ¯_¥Î©v ¬Í©nްœ†š×E¸ùkO¿’:\W#+ã:Ý;ýÂ!×1ÌÇPv14B¦YbÕÿ”q—®3–%—z°ýjXbLû½¡jké^7{ys±ÌBá@xý-_ì‘•ÍÞ oFFWúç€VíVŽÚëXù¯þs:"/ÏZ|”Ø<ŸL;5ïg¿å<øÞc4ý³Ùîâ©´9¦¨mJÚ<Õ¹f0Þ#á+±ó~—¸a…æKY¡h*s²ö… 2)’דHhfœHh(žiCƒ#¬­šÜú“ÝHÕÂa×y5Þ罂ê$› o \#ê­ ýÀµã}4ßS¿QkrŸÇ¥ o´ÖÄ.¼$6á)gÝn)?ã°ùÝ],|Ÿ‘ÒV[ï'ۜ簪ԕ:rû*>®Â ˆ¤/P²U°‡Î%ßúDîv¡ƒôB1¢Î"»^ ÷ãÆ±c—]Çžà:VõÙ€‰±;7röo‡<’vXßÝÎ\$c¬ÙsrlfœŠ]èJ Ž´¬åв{xD"Jiò gÎÿQtï ±Ì|51ˆ§½ð>å›Yýƒè×|õz™ÝuTÜÏÊü“Å–ðiYg‡Ý'š«°/ºÏüX©»FÀ9kÞCd¥¥ဥì8xÈÕ»òˆæ6v1N/?s”£½fæ$°™pئj´cL1Ìð-(‰ù9„ÖÀ¼‘¾FŒùR1gQdz4Côý°£F~Α“Éjñ^Û^¸n=qç—Šä£Ò5Þ³Ÿks÷ ÖÝîvÇà*µs ß g ¸›é™×,ƒ—”#LøŸ‡ÈÑ=.ˆj ðzÒu2âõnØ"bÈF(QEòâF]вyY`åenå*“ýÏ};8y‰ƒ›íïH“\à·¿S¼/‰bYSãj¬ÒRÉߊmšüž¿=rÅ—÷@E'mÖh‚šžV*ŒÒ›¨[b•@Ì5Îì¾)ˆêOu´t£`އ@x±Z’×ã¡F¯wºUN´ñí.h¢ÿ`T¤–+ÆÁ#64£BÑvùþ=o•ñSÍã·(=¿“uy’¨rž^{ëRÐ9å oÔáºæTlõ…>ûBr¯\Áã«}VSœ³i_Ž„Qóõ.¤»À).¦ÒH¾ê„e–i«ý„ŒZc±2µ ïò¡—-Uõذċt#ðŒ¸%¿÷¤Ð¸ª6)§|Qt¿ôH(9ÛªŸ $˜È3%Œ¥q Txêß _ŸSçqŽ/žµÛÙØÔŒ…exn,4öÖMZº€Ü6A¶>×^7¡Žp¯/Œ#E¾ÕÅ-Þ{Þù^T•_ÔŸMfŒè¥2ó#eÐŽy ù"½¤€µV²‰B1ŒÎÍÙY}æÀÄ…»>2‰Ù,–o›ƒåÔgü3“DcˆNœ-ÌmÆ¡fèº Y©ÅCÊmŒ:ƒß¨º¹<ï <%5gÝa· ðÕS¦ó³IçmömFÆøGÔÕøì Q›œß•¨éT&¦ÅfVÖ×ò¦S2©Agg_¢µÔŒÒSœ'³"[N³.…›%†÷ôÜ80 Œ¾Z¶ö²ß»üÔfÐÙϨ+-UÀ¾AÕÖ>er#µÄ—쓇'rËÏ’[¢ŒØH¦¹$)Ã#£ˆEêJOëö—Ëî‡ZC"¹>%Qµ<-üš'þz#Û;f>Úò¬ì8ßIÓÓ‹ÁÕ qÌ•‰ôuÄ€öǼ(süS¦¹ ¨²‚ž”››Ô¿ÐJòrãc}Ò#œëª‘çóéVnLIëdïÌu¬ù– |ébm»1žzîÊŸ>g.­•(M5(î ý`/þ>?aqý¨|U›%âù'5kÒrMÉ›ÌÇɫޭL$£o¿õyÞ?s %k7´8·4PGçÎmè´}©ËCQ§¼H1¡ ßÕœt )à-¿÷ÉeÈ–âÊBjA€öº#¢Oò[WJ鋳Ìñó/¾»)ä’Gf®/]7ên.Díñ¼Y…ŒÍ‡ÕØÜœ{w"%ÖrO‹T"÷Æîe Å|ìÜk—òQÍKù8i/PÓÎ% ¤ó8ÞÛW !ϦéîÍR+׿sÅÚÝxgÌì3×1M*ÈœD\Yúè—š‚%èµ:2q™9ÈëË[áþ!‚›~Ýô ‘I[½QýÍ?æó5_>T|w{®]ê)M{vË2e~Üè(£fŧ”ÖqeOþ¿T廄·ù»r×â‘§èlÙ^c*ŽüòÓÑö •Š,oÃÇEÈ›¾E´¯³×¸èΊ@›éºV˵–°®ª¯zw{e”rlae샫§&K³>,ÞÑŠÜ"4ÞÄ*Â%~žo•_tZ˜¤2 ùö¯ðþ˜ý>]¨wEÒ.™4ƒ7ñM‹.ÐyÒEš[Á²s¢Mã°,ªûv5/i(y”ïrÛCãÞ/z ï‡v…Édæ*¦¿H6:Ê«fÉ\m´ Dx~ñ)¥=>øžmõR }È”ˆ6ûat=²¬HŽßpùé®6 bË,Ý;H-¸Ñi—/²ÇW(™ìÜmdUþa¸©² +e+¸øÅ}j0)Õ×=O6ðüžOIm”t†ócô½Ï,MSú…Z—¾y9m^éÚŽ7û‰o®= <Ò&¨ƒÀ4yï[K±ýmþ~R§Zö]â`÷@•וÜÝI¿´bBû6'>‚ãë#ñÐøÄ¨ïIÞñpÁäÌÙ¼ ÇjKžà” ZÇ×Î6-sdÿÚ’¡Vi¢–àoý¦ía:ÙÈ|GšrðCJ&x]v#zU¾\Ï4µÒ'0D/3yuÚÔG‰b€éô˜gƒ\&íÞÎë$nµÍÌá\3…2ƒî~ÃR­½kq¶šOXE~ÀK¥ÈÞv‚ͪÀF¼¨IÂ$h³[+™qzE!‡ðs!ýc“+«]‹ ·.PÌæ‡D‰=ùBºr†˜GM fIÁw×=æøÌÛåß/¾±:O´ ZEø!G%µ&¯O¼É’üÒ"bæ<üòÐqí© #¡ì»&²4¹‚>ºÜ“†7Ì´Žo#1 ù…ïg' Vaˆ¶FU±Áw$q»4Ù~v²Ÿpã-b¥<"{ÅpJ¶€¸§á1½z¥L#€†û‡oB»ÖªZI ¥3<Ó1çÛœT Iªn‚_ö¨ŒO‰“Î3ðf7òPmß:ù®¼¾>t‹Ø%3‹Û™ ¶ºàÞñ}0Ò ¤:šj3$íeÎïDHÝ´|¯—žŸ@3èÃbù˜œC(H_H ÚMœ /¦±˜C¾ÑÓ˜~ÖÍÿA.–€:ÈQ´TšÔ3f¿yLõÙ&š^¸¡Qó™Õ°Ê}2Yät¼ÿ­ßïá‡k+[AjÕ¸øäÕ NÇ“D¦m£~ûåûð>´ó£‡¨XÛŸ¹š×nFf1N LN®°øöµ€W•9ÓÞ5ó¤®Ëî0Þó¬‹aÉt ùFRýü…«óíä7ñ#LÓïéG|O¯2¾] ÝZì©-ÌôQ†Ú®ÐGÜú°‘ܵeÆ}0ª(D2©aô¼xâ)îíõøå@4ÂEE+UÛ r®ÞfÀNS§,`sütc™¯Àà}Ü[ZZµ}G_­ðªÃÇeßcè?œKy˜ ¼È¡+Š›ÕañåQ„dâF2›XjðƽTÒ×}yKFLS©Ç5„Ð.»†}Jø¬“d §°’Ì µ½ù^»õé^Y¢ì¦bF;åÇf݆«‡ô„‚ºáeî êªqYü_ ­|Fj˜'˜=ÈÄ|ê]ÐH–â’bKnu1B!à+£“š™s ubIv7H¤e€l$ºàG“ÉÁM)—O«j¯t›EÿP¤Œ!#}Jœ‚ç2Y{”•Óu4ÍK ÃtQk‘Ûb€OIÜ;%_õ_:.·!ìj(Yb‰á‹/KKÞ ®¹o]c B×á´ÂkÞÊ9Õ.dKW~|4Gò¾(R¡/wdÇåõ|84Gü¦ÞÏÝjǵL„0¿J¦kþî‰þ×BÜ{ë1AšÁ®þ£9_súçµÛLǵ‡wà%&¾JÛ{›ý&îóZÛFfG9úòª“+‡^è çóÄõ$^‰lT/kÉÔAÄk±¡®Í)‹ Vßì¢øÏcî›Æ‹:y¸Ø@æŸw=ʨ϶IQáç‡Þ””.—Sa¢×ªÆél6à«…:äo‰vn™’×¶~ZÍ\£´óÝú|ÛÍ£ãÙÛbò€ÖÁ¹×2övµê'œ·O¨–ÜX3¢˜çd?Ú.{ôùkDCÛÜ º²Œ¦Î{βڎb²ë$ºCjp…±‡ÑÆO];6ãÕXw^Ôîõµ-3µŒÍ•ì˜Vo_H•µ¨Û±´Às^°‹©.®ä™¼²î¼ëO"8ưx/éÁ°3ÃÒdý]±™fÞ¯²#µáÖg‘ý?§ø]^БtMÛŠi¶~°h_ ¦ì‘3–Å“ sªür–<ú0bœ«xG3«íòM2Tåsˆ_S£€“t¹8¢§ÍYaoÍç–Cq¥>Üt=DkººÁÚ+©ßŠvž[ÝøÁÖ] ‘eã¿»î“å**Ƚpp=’*Á'Ì×/Þè.;n({¬]£ô¨.¨‡ïëwþ½C7ÎÚ§Ø4GÙ}äNxcDSßYXG=ÉÀ‰à޹ù“¨[Îæ¦UõßíØ¶\½?—Ú7K³†7L¾—ð”ŇܔN¹ ~²Æ"ܱ=á'(¬(rJè 3B°;©Wíã|øyYþüƒÂº$9ÇúX}'ôîÍØælEñp`èTøå£ŠÜçcµ¡NùùˆþÞtÞžU O—ÛÛbwugdæªÂârBlRšõîôôi01²9>xÒ™ïVÂ?Ìß&;Ò€P =»ž§âVÌq> stream xÚí\YsIŽ~ׯ¨Ç™ØpUÞÇ„w¢eÙòøÒÚ–Üí#ú–h‰Ý”¨&)ó°¿}?I2)‰2i)¶ç¡£ÍdV2 @€d©MTj¬ÍsVºI© N7ÚšÆj ÅÐØcÆMc‚÷o¬÷˜ñ­ŸüVð¦‰>àÚ6Yg|G,™lc\h´6¦ñ #:à*¡c4Ö¤ãh¨“ñ¤ñtÂ*54 ® %GfôÈm,ñÇ–— q2?´±×°=Z…l<9ÈÉ÷Ròjëþý­îaóìE5¯›îí»÷؉6ì°Ò­“gÃá¯[ÿüçM´ÖëVAkÑ*ÕØù:´Æ«VCœuháNø¶ëÑÓ&lÊZ´Æ·Y]¢ÝM›û÷›nj×x*ÏÚÕ°¶YÖS(}ÝdUúp§\ž² €Ö¤ï‚ÕŒ{îãyÝËñèp¿?m>4ݡ»MwÐÿ:mæ¬|;ïãF︿Õ퀭þÙtÒl`úV÷º?]Œû4ädèEÿhÐ{0úÚ| –|ö-Ù6²MùW<­7ÆMÐe…í³³VüÀ°K,‘OÈ·ˆz‰¦ßêŒÆGý1?BýÚý«{Òíà>õ+1uiŒum6 ¶U@?V«€:.ùVùºý‹S¬Ù=œýÞmß¿ÏOè¶§ƒÑY·ß½yý„>;™NÏÿÑu;¯·÷Ú×÷Îǣ߰~;wç½Ãß¡˜ÿ>=^L¦Ÿ?ÆjVmÖ@-c[ò8€që œ§ÙmÌé—/_Úß&ÓÞt2ú$Œ~6©(×ý8‹¨–Q¡%œs:µÚ3 ´QÅ»àQkð˜jÉe¼_¸ @?F;ºêY5Yñ¬õÖ¢EˆhÃuht­Ë­Ø­E«f=~}Êmn=Z§Z¥ÖãÁ+Û¸¯C‹`Þj@ÈZ´:¶F¯Çƒ%3ÉëéÑ®µi=¬‚9Æõx0‘"Îzz0°íÖãAçÔF«×£Ed°kÚ$RÌÖz¿*2ÔÁ`)JÔ F}ÊÏå¯Ä€:Nüh<@’{9jo²ÄXâAPåÚ–ë/ÂìþlÜ•o«øá²iâG0Á¤1-å\8ÿ!¼[·PYk°Á>@Y·I­ñúOå …LËé{œ"mžéÌÅHã?ĉö|rÑö.ºqÿ|4žNn¯<”ppª­ Šj×"÷þOàPë –PoaC52FCø¢¨Ã>«¼>‹§½Áp:úÇÑàhз‡'½‹ÏýÞÅOgƒÏ÷Fãa¿w6i?oÁ¨Ê-UR@EAÃf€q&Æ¡ËðCª¼Ä[wÚ;?u§ýÓãþ¤›‰pÊÕ°c }BMd”A0K›+÷ä8þ©¶ÛkTGøªR*f¬ÎTMµ¨Nooÿ[ø½ · jcQDI•Úºh6Öà´÷ѽJCZ+¬É¾—^CÈz¯K}®£ Øk֣Şj»¿)ŠËa=ZkÛä×ãk¶Få‹ÌU©Dx 0„Nu«é;¥šzyiJ+ã&a!†Ï+evµÂlKåwhsCù}0ªõxšE²½}pTö6ÒMó2Ü×ðéOBµAëK_îV-ñŒ‚”Ž9Qô£:B¤l¼Ïtß™–Î35ТÆ/ŽùÇ ]:ó©T Ã:KD!·RÂùÙ2‘–ð1ÓC’#vÔ¬2e ¬"°bg³yÜ¢h³³qZ_F`FФb¢z‚y$Ut¤iið8·t7(}bÃP¢ú×çÿé'C;b€?º‘¾·ûuµ¿N«U`;ãi›N^kéòµúNýìå;KS—ÇèLÄ–ö†IyŒ™ E•@--á†/­à99†´B! űŒ´¼$v…"9eV\nöÐó¬@¸? Õ¤ä7„¢X5’“ûÎh“!ßÒŒ0ÉÓ]ñKKÞÉ/ ­ î(BãHwÃ÷"?¿Œ3:I_Æ=£¥ÐJnµ¢Åª!AÎGO2Ö’8ËWj¶˜¥AUþ«S3ç›äÁÂЕÖð\®‡Àå~E»~Ñ[§eA}ù¬?mEE…׎Ξ·©ˆ×uH¹–ÔD_(YÒʦH«æ»Ro´¿´·5“ÅD2.φhÒ#eè3%Â7…µÄîá¹ ²N Ÿ°ÈüµQ¿ÅT,H˜Ll$Ž› “³‡À"`’óIdò(2-¤ägÆÍ…\ÙV*»Úδ/†%­™™Å+Q˜ŒH‹4Ü”6Z’CZQGiÅï´‘~àª>Z1å+fÊ?¤­g‰]mkëj«E€ò•XþÒÂFèó½]1›ÛB_Öž?£Ò~ˆÐ²qeH{ùºéJñÁ1YBV]ÕjÙࢅåÇÝ𕯙ŞVìåʈðÂ-ÙK6œ+ V{*k8ÛC~T‡ð&·ò“4•G˜—)ϳ‘èÈÖ)!ˌ鹕ã)ËÔAÓlò Í"ÿ–Ì ç[–3DŽ3!³ûJ]æ< Ù-½h`æ+ˆ:@¼>–/ɤ­ÃîmÚzÍUùˆgIb&HŠÀ&zÒaŠì!‘ 'DÃ1–¢dŠ„ŽeöÈ=1N?>C{A’W 86 ÅŠŽ–œÅ’ê`ÉpzJ8&ž$øËOÁèK{Ž•ŠÞ ¨Úe½9 I[‡ç$<(¶vÐ:â³VŒ>¾dÔH»W†sOkZTlTc°=8Â;gñ«$mëc{ʤ5›,£Õ$^K œðɳ½9¶S²/¬¤¾ˆó ìåÎF^50ïãÖÛ’˜*)–%·P£ô •äˆ€Ç ÿ d¹öMŒçüî Ù«á¹!ð]ÍûÈ<Ò;ôÛ4ýZ;Ë<.5¦ ÷¾ŠŸë|ÌwRo)F :SЋš´.6mbC±„ø)0þÖ4I!•ö9I–ÉÕOfOôÛïCâ÷y"{dôLÇ–CešãÜn7‚H#ü> YH"K®c”´ ­Hõé 0ÙvÚòŠoù¸y'qêb,ûh9P;Î'‰NNrÉÚ×¢”©²Õ)Ë4°=kä–ËHy/™2jÎJ™{,¥g‹\¸äÅ‚puÍºÒ 2XŽï7#‰àC 'Uö]#IöÄ©VœF×¥P jòàº_SÖn^CUa” õ® ²æm "ùhBÚ¢J>Ò¯3±%[cÐ Ù–°ë ¥eòÎs­ã9ß¶l¦Gjee^¡ô–RæHi#ÏåV+zÙ§úªVÆÕþ’ªxᲃUŸw¶#ž*%Åæ_{{íóUÄž¥»äñRíIïÅ÷<ùQûöjfõÚÎ  [“Ùÿxã¹euÉ¥ì‘õçùŸ™?ÞÏrü… —{• x±:%‘¾•zNQ(£f±†¤H%¹S …åÔf^OŠÉên©áŒÔ^±üG:‘n«8P‰yŸª»ÖËþspÐb¸?Þ–5«VžUÓÈHäl+*v͆ï©&äc q(ÎÁ„Î&±/ ”œ˜JR®V’„ç—'JK|`w’'%·9ó9A5¸xœiB|eÁ{-“Œ eãÏâªè{>VÏ¡Q㥜ee¾j½ðzFÏwÌÊ‘³Í’.2ð8ÖGµ§\XpBÅÉX9)aÀ2¤öYït)Ç ¤1üHÉXúåÝ9.$¸õT¶‰ÏkNø8‘>Ý[÷SfK LK…'ËÅG%I,I¢·´€F– ±†’/IŽMŠbk¦ôF ”gf.£E :ÝIbÕQf¦K?ÉÉ_©•U9‰–k-¬pÁmTd—Ây¨ú—¥BqR•-}9Ðe†ŒÎôÀ«0¡´dVØ/¨…±g8Ï-ïM}Wt%}igBaHp½„ \ªyµ|¾s¥_ªó¡º˜^Š#ׄZZq R¯N×™µ©U3/´潚ªÎx}uÞõWn🛔vaKgr¶ÆW —õÄu¤´–e²Îr•ÊU슖j./«FÇ']<g÷avTHiílŸ­Í qÒå‰B-ýU©„+Šj…yïf×iËŠg,Aý3KœÉsæs=æ†Þ×ãÚÔñ/†Qލ¹ÖÓ™%L‰'ˆžkFz…²Љmæ¨ëK?YþQ’b1a¥à˜.³ƒ)]iCZì=§ÖF-|d^”ö‰¿%WûK£K»Ž&•Ùž7§•ûÎóù‡ãþ‚Šï‰†¤_ÚêLw3x«]*/~© NÎõâ7Œ¥E¥¤ÿANøX r|w^AšYÆ%¿ˆwsh’H6"Ò–ã (°j~Ъ#o9Ôâµ;¢DÜr˜*Êð%Mä1»¤Šâ¸wI —ȹv%ý½=عy vrZ±ªZ¼§A¯;<ìOǃóéh,¯?ìõNqçéîû7{;ÿµóâVöŽ'‚üžÈ=x×=ÃЯ5)î×­n{rȯ‰dPîôÎÿÕŸLéï„¶:z Ý»§éæ“io88Ü>;ö,¿?íŸþL ¶Õ½-“ $¬qÒÓËëzÝawÔõ»OÃîäÛùIÿ¬tÃî´u“nÚ]t_ÿ.¼í°"2y~Meé•”Õ¢>Þ{ðòñ>‰úv•¬>Yé/ÉîDVíVʺÝítºgÝ‹n¯û¥{Û½‡ô!ÿáh8:c-ð´îS÷ið*]Œ»ãîd¡˜ßY5gÝÙଠОwçô ϰÿi*½1/1†ú&ýϘ5|…"§'ã~¿›~u_»oÝ¿—•ê7QêÏÏÞ¼ÛߥšJµ¤Tú-Ãæ;2 |ƒR@­¡ØÝî1¿ŠDê}Ù½îö»ƒîÝ’ŠG§§=1·îÓ§AÇÿnÔô\Éýñ`t$j½¤Ð‹îs÷å:µÆMÔº÷Ë˃g/Y­i…Vs1UcýÝhÕ˜•Z=¼ìxyaÞ¾}üê—w,ÌÁ“U®gæòDr=÷£òÜ#›ÙI¼A"ÚQ•%É´ÞD²'Ožï¾…dVBŠq+úeÎC0~Õ³æT-—ª¤BÜZ±K®ÉêZ¤ãÞáïý)ùþƒÁq}ùqZ_õ¿ÖWÓóÙCE5“¯Sùr1—/1yp6í{ãÁä|Øû¶ÀZ©¾¨®>ίæÏ\ºª/…v<:º8œÎŸ!—àfÚM.àÄô’àìæ|€oFÓ?;:]|ö—wz£àñìÕÞöÁ6vúÅJ ¶ó@éÒw<Ò®iÁѬÜm‚¹]¸gÝsÜ+Ü[E‘ÞðüdtâÎ'@žÒwÇ=<÷{ôNó ðí7B¸ÞéÇ£^7ìO&ÝPT9½ìÍïüd@ 78Æüɰ79aèëO{š»oËúÝ(޼x´¿ýðgÖo¸V½pÌ‚Nß‘v“_©Ý¢’¢†é²`!ùÓ‡û¿¼|É‚¥‚“­îÊnÒ v³_[H±1‰“KrÏ·_]½ë_/…7½QDxón÷ýƒ÷¬”•y'ì§l¸· pu@Ðve@øHV\|R“¥‹e, j6 Ÿ¿zz fý }OΤïJN·:Ab¡–%Úÿõdû%mÝëUçÔ U¾=Ïc^È+­y9Ý{ÌVL˜ø”Q‘R¿ÿ6¾Äf¾âpŸø {ÓýÌ9wÁËËi¿ëå&½³#øE —Aê`|xqúiˆP¸œFÒß õ'ƒÉ{Dû»,ÍFо÷`ÿų–fõ©[œ¥öŠJêÖi[£žOµD—¤Ù,—ôó‹–fe˜ãÁãmvç§•h¥VîÏ%i6BÛ×/_= ÎÓo 2tÚ;ŸLGÝéà î~z1œÎ‡ß ÿ˜z??€–Ôë6Bð§Ïöß¼yÄê]‘Ö îËŽþØð+w \¿ú¼à|<8]>qs\ú?§ ¨Ü endstream endobj 745 0 obj << /Length1 1482 /Length2 6533 /Length3 0 /Length 7545 /Filter /FlateDecode >> stream xÚuT”[Û6RâÒ ¡ÝCÝ]Ò ©ÃÌCÌÀÌР݈„H(!%"‡’AZBéN¿1Î{¾óþÿZÿ¿žµæyöu×¾ö}Ý{8X Œ”`(;¸: ‰ IUôŒ-$BB¢ !!‡ ëÿ8Ìàh …”þ_*h8‹ÃT!XœŸ Ôöp ‹…ÁÒÂÒBB@!!©¿Qhi *Äê€Ú($àPA¹ù ŽX\™¿?ÜP °””ÿ¯p ’+€B@=Ö…¸QPëó¯ܲŽX¬›´  ——⊡Ðò<ü@/ÖhÇÀÑžpð'aà]ˆ+ü73€hâˆÀüÆQöX/Ä.(‰ÁEx ap4Wh¬¥ Ôwƒ#;ëþvàþ9 0Hø?éþDÿL„@þ †@¡(W7ÒtÚ#\à@}u]ÖË„ a?!..â A¸@ìp¿vª+!8‚èa h„ \~Rü™wÊjH˜ ÊÕŽÄb?÷§Š@á¸c÷üÝYg$Ê é÷ga@Âì’€y¸ š"îp-Õ?.8ðæÇÅ…¤À`1) Ü÷†: þLoâãÿeþ ãø¹¡Ü€ö8ð„=÷øa žp íðû߆¯ÂÂ@ŠÚÁHÀ?Ùq0Üþ÷×|4Âh%„Óž0PèçóŸ/œ¼`(¤‹Ï?î¿ú+¨×XßL—ï7ãÿØ”•QÞ@?Q! €”¸8PXXR(!! øwâÏ6„þ‰ÕBÚ£€R¿w‹;¦¿wìùG܆ƒøï\wQ8ÕÂÜÿˆÜZH\Šûþÿ–ú¯ÿ›Âfù‰ü¿7¤îáâòËÌýËþ˜!®Ÿ?8Ñz`q ‡Âò¿]ÍῇVCx¸þ·U Á ‚Ò'fa1ØoQGxÃa,Ôñ·d~ã¦?GÍ„ 0ˆŸw .JHè¿l¸ù‚:ãî N—¿LpÜøü»®Š‚ýœ3q0‚FC|B89‰àúí'ŒHÜû—’‚ $ ‹ â8íQhÀ϶Š!gÆ×ÇŸÆ_8®ž ÜþsÆþƒE€‚.ìÏcqúÿÆyº"˜bÅ€‚H¸Ã¯ãÁü“UL(è†Fàû'ò/"P4Wì—Þp,ÿ^ÿº=àpo80=‚Ê„9U‡5W*1y |}OüùKKt¢EW”8–sò…Ÿ£îÕg£îÊ`e7ûÓ ¦Š#F&ü™x7½­Û2ƒçR5ŸcñÔº•·rúNöÚà·a(F‡!‰´èEʭdž·ÈXZq=1Ÿ8—h])_οhÁ¬XJ­]‡,©LØGJÙ-ëø±,ì_°ï,¬)â©ÐVO=L´L‡.ðcñGÊMq '>‹Vñéïfg{3»»ÒDwsu:*ÀeÔ 4¾Ú,ÙýI= ´3µë1xœÊâ‡*Å)‰¬ /]#8ç ]ÓVR o×°†Ì«¶ï«×«³*2YµLj Àì¶»ªgõ¯9S 7mDå@“Ng·´×¸ëˆ¿*ZÀñþ}bzùñM{óböfÌå{TÈIÈre>4x7¶95+9À¢ØK¤_õ•}ŠÏˆföUê8òô®: &¯¤ŽˆU0º7‰¨È¥ädjü™L+nuª` ¾á#s` º»ï]÷Š2Õ,RWÖÍÝ•ùê·Ú7$ôa]ˆî8í]Ÿ¹ƒ·O¨ Žd3²n¦‹ß.vQuêg=,,mKê^mæ|ñõ}w¡µ\\ƒç¬SÆËøú˜ódÿfÿõT¹nÁ/c¬–µ<¹)â—it·?6tÐÛ¾ŸOTøæ;Ü1u=ìÉ.Ú·b}ËýÊ}AAèŒ,YÃä1ßÜË8ò÷÷=!—бóEø×LßuTù:´+Q¶Dr+gÞÅú>¯~\x˜ß-4ô]ËÕlw|Ï!~‡ss§;¸40†(Ä1Q¤K^VrS¿Lä`ôÝ_š/öTú«>÷Ý¿Ss´ÆTñµpôδpY8Ζ¥ŒŸ>Y¤MÀW[§*¶òØF¾ÌAîš ;jãK‰e’\D৸%q&ipwY–Èœ&² qe±•KŽ“_‡ÖÆXCäX¯üàÖT>µ¢yûüB­´}˜›rߪ‚¡¹•2=TÕ7£ÍÑl¼azǦ6IiÆÏEcéË ÝqLÊﵑit¬ñ:¸L¸[m~tâúL<Ú·0ÊÙ`‚1_LúK2=å¡ÄPøD²¥ n¦5b<Ÿ& –=sÿÂÜFÃDýÅ5°:ÈEÂGȽæ[°Œ¦i/èÄ¥’—#UHl”/CØŠKÙË_ÒA”ÔÆöÁ8é`eÐ;F7MvŸÐšCƒ NÑ;ç0tvØ÷DƒÛÒàgz?žµ^• ÿ Òiv'På³e`¼È}ÓIKœå¢ô<µ—–ÈH~ò¤ÓuüÙ’.}i”ÄZ¯;Ä϶u<Ò?Bj` µl&…¯AO ü÷¬R f÷BWÍ4»¯P…äj¤¬’õZ ÞAJeò:éa­doܼÙicƒ]Ãääzœøei”r®õÏ_ÖÀ#4Lé6¨ ZûxQÙ©Æ$Õj›@Þ¼Ú0ò4v^î‡?ǬåσyhGt¾ÿSíÕfžû.^‘ìVw¾nå˜=6¡¬8ߊ²§¼é’ûô<‹ðœ`q‘7aá+)­LW è4RYrOöÄ6o?J¾Ž6¾qôÌd-´q’ªô¤Yh)e€ñÂ!¿VÏæ+‡ß-ê–¢§Ï>D”@D2¨Í3ßô÷|ÞU}Q<ÉÏYíÈÒ=Z75̸áþÃXE`ªÓ9#SZ|IôP¬|¼+U9Åûˆ$d´POU<Â|¶”ÏèS‰J#>ÈGɪº”¡veÛÝ{Ö΅טn® ·öÁpÞv°, TÒØ[Œ¥opút¼ô}i>"Íè0øNEùö×m΄êên›õȤyhÈÍhÞÒKqΦ`Ö‹“×U'ËÏ„ ަFª,vžS±wOõÍ”gïªÒÉ{M÷YFBþʦù*Ù¹Øf€)š‘æ9Žc}¡~f{ãÕ^äÐôð8›=`|®…a*"sí’4y«ÖÉNÌ“4?ÚÊ}yÝb›ÈKq¡£EÔѪÓ4¹»¡ù[Dë~Ø!i¢4½ÀÓš¿ÕȸúaÄ<¼þÁ—rè q_šÒ\{;W¡ÂÍÍÊh:%f@ûiqi‚ {YKòäÓgêÉ„ðLÍ®CCŠ›NRÖí^î“ÏŸÏR>>\:t‡{%…3/CÒ·â”AÓT·YIyŒ:Ø…ßf/Š}‰~^þ²±-¼<Õ }ĵ›{«º1MÞ”eƒ•Ì\f1e\‹jƒ TèüÏBÑD NâÍŽ®"C’úÃu°W®žU÷ÓvŠèç„»_×@ÔÒ«iì&¯Waø« É>SŒÔSG‰é{ó-†©úϹoÇö_’çxÆ:·¹Ã˜ %N ž;€¢Çôû$6M~o’Êd—‡Èüo9¬2¬ëܾ*r ߘŒÉ« ‡úfLûQu˜“ZI¿ 1*dIÑÎÝêÆwƒ çB³”;ÍtÌX2HLÊÚ—]B;Ã-^PháSžÅF¹¼þæÃ-rmìõˆvð'x¬i¬2<ÇTnytúEWjì¾"%ƒ…»ü‹@ïNÂ[‚Ù)«¹iúŸ$3+Jn³Ê?[8Ý*-1¶¨Ö⢾ɩGo‘atþf~^^sÀ”ý}XñPp“Š% ÿa·ûC¶¢{]-Y F±ŸŸo!vùÛœx¨{µR;|yŒµð¡a0.'qìîìÆ7±ÎðAxŠfÝÂ16£wþ{lRëšMa¡LÅЃ™e¥jЖ³4ŠÒÏÁ”ëÓ‡ïiõØÊs$Ó™·¡k[ßR;xÐy¨¨Á:†Ê7M¸‡åÕžž‚ÀKëŽWãéæDgKuQlV\ 4‹mväV¯Ë—¸M…¨-æÇܦKú8ÞtŸ×J&kae[ó=xöÜ¡ì¼Àä4ÿvÀÒÈF¤Ï@’Ë<3*öeR¢ìBl}3žÖ|ÞŒ\º!jp0²ØV¤vÚþ+n‘7©ÔÆáA€â !¢„ “Ы¤)eE’‰øÒÀƒøá¥º‰jÕY‰Ü“Ñ÷øUÓ:\7X¾M<Ø j=ÑK‹´^©Ï“D­…=bl»l²×8pœ\l‰J¬Ê6 ʉ'£J ¤½üä›/Þÿz0L³5éYþ¡2„øI#yMáLYÞCŒ h4]±Òô´©JÏ™zàß ‡½Ï‘‡N5ˆx*xunHË™HëÏE¾•¶(ü¡zñYÓ–ú‘²ÙÛdF¶¹¦¸?¼‹~Ä^™ŽÆI]ò;¿´(Ö5«aµƒŒd[G|þs-x^' ’ž=øbÏLÞÆk»åª-kÙ"gG®ªonÌ”KÉÄ{8 ÊÞÉïþ\ Ñð±P’s*¾G’-¡c¥ð…Çvú•¿þ÷’˜ÈIä=g)·µj9}ļ`8ŸäJ&XÇÜ6 ìY²­„YXfœN|ÕÑÐ[ø´–ÉÈ»/ÜÀYqSUúá"æû@p¶n|:z<Ü,GÙ·]7ªØ=@Ã4&ÍaÙ{øR¶zðYÍdCv«ßóLNù9rj]À ÀX6%ùk.ýËQ¦‡BØlßí¡Mÿj]Æ›òfä—¨¯ô·^Æ\aú<ÙÕU²Og¢ì6ö ŒÂøIˆ3¨RŽèèKž–slèYÛuÏ­6}ìjáV _½Îâáù “êWB9º“[>mq¯»­˜Oc9/ÏÒQ5m£®FI/é‰ë>¡[u4™×[NÂäÓó'IŒV–dɽF›žû³zöà]˜l .¤Q»^6^¥W¿šö¼á}C…&ÓùÄQFÍ#*UÕO5] ožÖ¾ðd¿Ó¸HÐI`U8µôYsÔb˜ÑÚ×àGQšÄ]Ÿr’5ž8iz&ASu¯ëûÂgÑg¢U9”¨L& 7*l}Ò¤íQ>¦|^ïdFÈ– ®G´¡#LB¬NÓÅh¨™ïÓ³!N/<-”oÝ“™ø~×)۳˙T:Üdq¦?ÿƺiCë^ÿ²Å¨¦¡¢¹†ˆ+þdóÚQ¹‹jZ=uü9‡‚ðO+%ǺàÞòWÕ/†,‰®ÕÊw¥zäÜi¿qà¿¶ØÐ gêÖÕÏ(PúXîš'éšW})"%}Ùô«* Ü÷Ú²ÐÌ©œ¯M ™KÍIeoÔ CÑ8›²™ÇA©“i›Cõ³ã£ŸªÊªhí`sÛêø^ž¦]B¤ZQc!©9ã›ú!fñôã—€˜µ­Â•YûÔ¸5²#'¶ÇÉ.^~)ÅCÔæ¨:ßÌœP‚,8çb7kûáE4)ÕzÀû ­…ÖiüÊܽ#*x6ø¸ÈŠs±YTô”€S­;µ²é¡åeq(Ø.ø{CÕ†"@<î-,WÇzž“”44à/%)föWÇ®î«GÑù‰îäwÂ=NÎêî‹]ž÷?@4ÎÈçÏ„Û޹…x;‡£ ÖZs_žÆ„]ZcÌÅlCMßIOÞH IW „ÆDtT¦®ÉVb|H®C˜t—È>¨¿¥É ±âU|ºZÊ3Pëië÷ì&! ¯«½5;«þdÄ{…\·_ÏŒ ókãÐ7S;ZŒH\u;àGÑ!ÁQýò-7¶)ˆ_ÑÚî¹·Pº™½¾0e¦Põ\‹ïé5Vî¿‚~K²ùÍUN@!þL»kŸçJ*±Î±Dl‚”–@w¯Ëy'{®IqÜ%¤fˆë̶³OÁ±'£œN9M*C¹ÒÌÖd~”÷¤œ èdmÛWì(ô5{*CóÞXõ /Y.D­3*"K`y/Õw:Ï™ÄðZR&³¥vHŽå£)7å*/Ÿ}wϽ“7П´YÞ(~%Á›«:ã¬×dvZuésˆ¯F8F´N mðiKƒÈflŽbyaj%óQ!½µI¢”‚™*‡~Œ ÎØãÒdzI±[Ä_±mûOš>²ƒß|<²ÜŠUn–²@ŒOî _×¼áœ{[Ѳ$é3þ.Ά™á­Å®k½To=Ýô¯±¬!>¯>nôج>Q.H“Q¾`P^<¬lùë¾ù‡˜\1[öõ¹›Å¬UeÊMÊF,cP2ú§ Еi ÷þœ#ϼPú«6ãk:ŸhòHR[mzˆU¢»&rÒ>Ý/6t²úpÓ9Øù!m)K² +ÑÚxÒñá(7&Ò¸¸‹ýè¬í>3Ž+»”¯'“-÷õE‰—&…4yU“,î¿É}Ùˆ1N¼Ã3,ܽ£eqAMlšMgžñ!{¾ñDTcy•šY)fï÷/ƒVðNˆ°]·ÞðƒXø\¦2Fz?A(AÉ ´µHÃgpy_+ë'ž.J:›¨$}·}øÔÙT“søý¨ ª„F²¯¦D/jåpôžgM9](uÄ=3ÝNidÏcQä0b &/÷k¥õãwî×íi¬ÝÒ>4Ó3!"»¢½¤”`ïKº@«“J™v€÷æ‘F†(‡Aut–ŸàŽõCÐn°Ô¤ê‹ «Nj†Tèkö·ÌD|¼'{œÀ‡^¼$÷Aº–o+®Œjñ猪öЕÐf~oŠ “„NfÔµe Fïä /GV´ ÚœÌ÷ûOb6êyQÉéK9ú|Ÿ¼l(êé©§¯{T”¾(ªÌÈ*ã[–öÎn()m©¿¯À`ïä¯( Ðõ~kI–Ê—>ž#û›+©8Å Mû…Ùîä–¢—´4úÚLǘɛòÞ iUݵa€nã¯ÎiÚÏAh6ž½C}ØÒyúÎñ-ý1ÿiø®É:)øªí{•¿úö¹Wàá=évlØ‚wÛkÅ \®¹Á\p¬ ‘š¨WW«îÓX ÑP˜n«Ž3—GâÞþ­çN˜¤hÿT׿J-A²³ÔCÖ€&¦J À•ŠC)%ˆÃÈ1AÞTH€Ü™¹\é¼ï§Ä·s')OØV2gè9[=²0EZ˜¨„öÀGâhnãM6A¨Émb•Ų™×w†úä$Û®TêßJ³ðó¤Of/$Ý ðPŠ<_“(ê*‡ t[Ý9ËÜ»ûZuò…¶Ý¥AkOù¢(.I"ªHø‰üó_Éó,· Ú™µÿUûMK·ÓCã»t{’(WLž0qIÝõ! #Ï·n³Iw[î’$fÓ+™4È`vkíªRÓ^]!1^úuÅÐ{ͬ(¿ªÚê·gÝ¢ÆæóSRfNí³VójûÌOkÈË!’o-N;ž<¹^pS’†°>P[vǯýôf·hÎíy“ VñïaPŠ©m¥oÔö7Ìë:¯b |r“ Ûìf)‡óÆ”xÈ™“tA!ÒZ+#6†qå2\¡_1£¬yl•åÎÛÞ¯d_¿¨›™Ô¿ÿñï¬çkXíÆò»Í÷=ùkÁ =›Ñ ¼ìÂBwÔœ(ã)²ƒ'ÌÇÞ„½^XÞA«ËX~•6R£,»í ~• õÆ ‚ÄÛ¿7×áëZݾÖÐÕcdúÉômÝ[O.IAÅíxޏ¥ò“›öø»dÍ}‘S¨oudìl:³°kÊønqñ5uƒ±Ô-³7Â0—7²Ý'¡d²« sOs•]eèÄ'‘õ÷Žü£SQ³‹éΧûÐU ZC—+·š¹ÍBwƒê†¹> SÑÔ¥ 8°Vb$÷xµH"+c¾-qîË+‹ò­$)Ó âñöþ˜ý8ÎÔªƒŸÖ'6x8¬œ‰Ëªùlɵ«¿a¦’ Êÿó=µH?»B”¡·hèÛ¤žY‹C•[ǹ+»¤»r`ׯnvcizš!9Þá•þ»ÚeN ÆVw¯´f—¯‘­ZUœ”’zì½b~h;šÏ²BžðYšì®Ðþ¥“%Ŷà­ÞëBzO'­Ý0Üòk4VóÃÆåêM‡VJIú­b{?¼ÙÍczKêÇ % “W÷xbR㼆J îÐðr4’ŒÙtmIjŠðzfŽ©‹]E½¤KÇñ¸Zw •º9˜´ln®`¦-÷ÔàåŸ*^Ýt‘܉¨yU ÕSQ¬~«fÖ¸n1¯ò­ö€á±ãÒuå6÷G£Y$Nb|?ŠT @­½¢®9°ùˆâúsӲЮ«Dd'Fv颞H¥V+eW¿A["2파êÎûofF Þ«ÄPSê³Wó1Ðñ„Ñ”reÙö¯˜xÝ¢Ù¨a©ÙJ[LJH¯”Ép½¦±0>lu³G‚ô&6}‡ìCËWƒN#ª Ç–w6Ù£ ®óÇ¡õÉ™{kàbór㺠Ռ›‰&鱈¨ÝšØÒ©FÖ&+PöçÞ¡Óu!!Lª^ô :ÊöQRzÃ’ŽÇB^8¡D¯‡KÓ‹Ì#áwU_nìåí8QɹW2»=ž¬ ÛCßcß¶—~iÿÙ I_³e Š}´ÕLư«ðŠT¯ñt)$N§Æ£áåu›í/€©,ýI|Ogðc×›Ä%ry×(óèzž&ùZ„”—›tÓW?ó|¤w`è^@­z©¾<U¹K•û¹ú#¡¨6fâ$ò"®z8Õ­–žTÂ&ÉüáF…¡÷­¯k2zê·À!7ùF÷<Ù×ÖÂPÍ’˜ûLƒ{¯æÕÍì9Ì'(òª¬Þ“rJHýBOnƒaÇ{mú¯ýúøDäë7}ÄzoÉÐ?:¡DjdÌîêsµƒ¼ñ»/²JÍU•̇_ø›`5µ_ü9ÂdèÕ¸Œ¶À‡Ÿ¦Eù?ž5)ue­ù\pë­ŒЧš¢ÊLu[¤’Ë ²*\nûpÉ„8uÑó÷34=&!ºK'47Å)ÏÛç¹—sØ´ÃÏ‹%oÏ_©d0iô0:)»öbDÓK>n*°-?B‚Îßõdyu-X™°[Mê‘Qc&jWé 0éÊ}ÍE1ÓNV[ô-…ךµüZYÁ-èSçáãSm9Ïžâ° †ÐÎÕaù›À¬ê·Í JÐùgÑ äm/5Aæ…Ž…MT¡¬ƒ{æ2S¥»fŒÂ„Û‚¬Ù› ë1Ÿen¼¾9l}iN( á“Pèlð¯®â}QÇj»b;þ`b„ù«p‰\Ø7çä~¡!u/ï{ŸÖIá«ÜÅ1¬ÿçž| endstream endobj 748 0 obj << /Length1 2209 /Length2 18293 /Length3 0 /Length 19619 /Filter /FlateDecode >> stream xÚŒ÷Pœ[Ö £ÁÝ Ò¸wwwww—Æ!\î®Á îîîîî—3gfræûÿª{‹ªæ}–?{­µßn2"å/‚&öF¦bövÀ/Œt \aYIF3,™Š%ÐÆô?rX25S'gK{;®X;™?d"†ÀCY{;€”‹ €‘ÀÈÆÅÈÎÅÀ`b`àü¡½@ÄÐÕÒ K²·3u†%¶wðp²4·~äùÏ#€Ò˜ ÀÈÉÉNû/w€ ­©“¥±¡@Öhajû‘ÑØÐ loli ôøŸ”<@ =½››¡­3½“9-ÀÍhP2u6ur55üE ghkúojt°d Kç¿Êöf@7C'SÀ‡ÀÆÒØÔÎùÃÅÅÎÄÔ ð‘ ,)w0µûÛXæoZÀ¿ÀHÇøßpÿöþ+¥Ý¿œ ím í<,íÌf–6¦y1: ;`hgò—¡¡³ý‡¿¡«¡¥¡Ñ‡Á¿J7ˆ * ?þ›Ÿ³±“¥ЙÎÙÒæ/Žô…ù8fQ;a{[[S; 3ì_õ‰X:™œ»ý¿›kmgïfçõdfigbö zU;KGSI‘Û|ˆ`ÿÈÌMV&€©#ÀÔÝØ‚þ¯*¦ÿR2þ%þààãå`ï0û aêcifúñÖËÙÐÕtr1õñú§â,##ÀÄÒ025·´ƒýýCljö7þè¿“¥;@›ácü ýý÷I÷cÂLìíl<þ˜ÿ«Åôb*Ê‚4ÿ¦ü_¥½;Àë 3+à +€‘‘‰Àþñàó¿q -ÿ]Ç?|%íÌ윗ûqNÿ)Ùõß3@ùï¡üo,9ûÉ5PþtVãÆÿÏãþ/—ÿSþW”ÿ×Aÿ¿‰¹ØØüKOù·ÁÿÞÐÖÒÆãß“ëüØYû]°û¿¦ê¦¯®¬©‰¥‹íÿÕJ ?¶AÐÎüc¢¿0²Ð1°ü-·t³t75Q°[ü=5ËUÿÚ7K;S{gË¿n˜/†ÿ£ûX2cë[Äùc4ÿ¥2ýØ¡ÿÍ+jgloòײ1±² œ =`?zýX^Œ[ibêþ¯aÐÓÙÙ?\}föN°5–@/ø—èoÄ úƒØô€^äâЋþ±3èÅþ F½øÄ  —üƒXôRÐGvé?è#»Ìô‘]öúÈ.÷_Äñ‘OábÐ+ýAù”ÿ |*ÿEœ1 ÿ‹˜?bÚ:|Ìô_WÓm>¤FÐOãÿ"Ö±½ÍG³þ#aaùKbkû'ê_]¤7ùü8 Ó?飼.:[üÃ䃀ٟ$f–®|XÿRÛ»8ýÃáÃÄüð£ˆ?áX>ÕÂÃÁÂÔî2ËÀs°þü eóøÁÙöü¸Sèÿ„býpµûÍè?ÚÿÉþálÿ?êêþ¨?züqâ–öÿ8¡·)½ã?à›peü(ÝùOú¿©ë?¹1~„þ1ø¨hádúãû¨èfÿ‡ .ÿ€ì]ÿ?¸ý£_Þîÿ€á=þ°ùpõ4uú;öÿ쥱‹“ÓÇKê_èG»ÿƒÿõF45u75†]œ³7æ´ªly¨üìöewŒ‰¡ï*üZ}GÇu_Ñ_˜çñš97bA°cf/âqõ˜©è½ÁZ“ÁZoÝ;9‚ s±¶ÒÌh›Ö{•÷éØYÆ…iOº½]Ë€ÙÎÄó¼QiÀíF`š ‹Öñrw6íPœ‡¼±â¾Ü⊢þ„l,2 ›ƒƒ,°U0­µBè—àôL›$©ó•ÀØi¾Øácrï0ëVßR -¨åfòç£#é›´#¾Ÿ]l¸Ò€i².Qìç”þ7-ß(œG”ùI¸Ó%w&®$®v"%•Ì%ú7À{“À…7~_lÀfºQléqS·‹ý_LPÉ÷df¥(é*-GãƒëY€›< ¬¦ËD‘ö–ù58«§âœ>œO;œŠV¯ |í5Ï8i 3àeI+ÔŠ¿í«’ e5o£¿ê?ü¥š×Ò$GF„~ùLpL⯖‡çÍ6~6"Îi™‘4òLßBAß4€K òë §¿Ûä)Ë~Žñº¯G}8B_<´g¶+,ã—!¼« ±ƒ!¸òSâ—¢BìóýúàUó¦€yBñ„æômºA˜$l€÷rŽ3ʤ¥ÙôkÓ6Þpˆî{` X(¶ç˯Ë÷ÔD›ô õ¤÷ |Õ_#f1áp¥>ãÙŽ‘zÆ´Ae ^¡5Ãl]_Ï×ùÃ¥”Û«Kzj\oIãkn,kˆI/«å¿Ãæ¤fª-*Æðƒ¬@3\•–1³•¸ä ø V»|Í­nÙ"(ßÎMä¼mßíþE2*Ë[eFg„z5=PºëÛŒ N0 ßp\|²ó-{†Xš0÷3êÒSfI2ÀP2YG®†ºíàB1kù”»Gœ÷2:*ƒ%éØá¬†+.µúwçÈcˆ·E»  7UnÜ|º^CBvþ)V0¯¯P²Éžû}pí*›H ·V ü~X=Ïø›)Ÿô`ge,Ê+ ž%˜>Èø¦“PÛèämû´‚ õHJ·'r<?NÙÍí‰ýa3äpEwbcžïqKë_å,ÊÃÉÎ –BDÊw7hB¢Ï.—ìà¹cè/ï4겊ÒdA~ƒÀ»i™TY2Ÿw©E$ïÓR²Î"zÓÅ+ÝŸE,ˆk—b¸/àÉr:“×÷³c;’ASóÎ×ߎf"A{ÆæJ1‹ ’ ü°ÎŠš"ܸž2¡÷+ÕÍ0¿îùæÏ4|×_À£óF¶g7®N€Îê"‰¹N>µf’+ “g¦^Õ,ÕMzÔ…l;bf"¼3º:,΀TC«›Tþê'[\Q‡p@oðzh±¡á,.H\³M¶Ó7šDó[Ié•9gÙGÖØÇ ë*1&ïõ[²xq¥½Å¤“îœ{ ' hº%–•OÌD/écæNBûIñ„Ú¦nE}q®fßuá÷X–±T°a .óÏŠæ)yû†P@¹ÄNâ&’|PêKÒþ’–4Ô-l@§¯–xÄó—T.?9—‚;‹b+XXñ ¤ñf^ós Õò6û¬õ÷(,KR¼)‰Z¬üî&Àköµ#r8Ëõ±lnÿnã(A‘ËÆôt‹˜Ø]½$(?nÈT ¨Ì#‰{ú¯Ýüy8ŹƒÐ>ä÷³ðêùÐpGßoÌ7‰Ëg¹•“^vQ×ì´ù“Æ¢ÙUî—'±1ï@·&Nñ ;X±/©Šžé Œq˜²Û\|D¯—4m¢&­m8ˆ’'åYÓ(Ïí’¾ƒá÷kB¹aÙþ;½¦…9+úPÉ!—N•¿R¦f¼“x+QB“€ó׬S·¨qúA­a¹gIź=ÎøORP]¸œ²L¥ýzÑ…›ÚKu‹Ú…ÑVO]1d É…ìvÏ嚃=™1obaÑ*7¡½´ÞÖüà † fr‡k× E.—~éŸn­74vÂ3_]Ûïæ€ö 5þ\I†5´þ„:P8šØg­2çÝê΋ññJ̯X&Ãh-1]¼vCüŸD(/ácvxù:|'mÃü@=³åX_BaPqóà§®i‡I™è‰OAЯÍ| 3Ù² ɨ”ȆŒV9­Š³Ø b mÏ1R롇E¿"Œ:'J7̼‹|+¿ªÓ)óçUbÆÄx2á#Ò\‹:æl– U¬þ4–@¯6kR³Y ½ÚEó&´¿†Qù¨ŽC yyî¿‚'yë.x[ˆfAÝT è¦U‡¬ê>@ù|u§”W…¢j]¤Î4'N¾ ´. ±Pã!-ÖW1/”9^¨wy…¸1öää?׫öxùEÉ]–ÍôkåôèfäËÂÃWör¬^]äÛo£GNå…äŠ ó Úm©“‚²ºf³{üõMÉ{vª|OçßrVȆ_)';Tøcp’GéÐ e èjÝêG, ƒƒÖ$ÊKßïI„#¿˜óâbAU˜­RÁªÄU‹Šû>‡`™¦Jºˆ¢Øó‹}6‡›fMîtæ,‰‰®E$ò»™×têö'ËÞœg^Ëìtô> ·rÄYp[á[¤‰ìã…pXãÑ=œÙœVv!yÛx£ ÄÀ×З>¬¤pS$S2)èòÀlÚÝOÿšy€µÑé~YðÛàÊMØüžFáýeÚÙß#cŽÔt{X¤0žÐåY4l|´šy) 1¿ /ᡇ!‡5ÁŽðw±Ÿk9_45‘ áè‹C= ØÈ×óñv§A*n)ÉÐ )¦º£)]:ÆGèm Óœï ûû :EG¨²­@.¼èoæë}}b4¶þGNñÌs˜ÕÅÔè@ †ôg%pÂ,È9äcÿá¢ü^¡Ð]ˆ¨[äô‹0S›·vír#ΡƵG9¥b§Àfh2iÜó~ºí–¨#Ž•œda¯pZ —SN82bض¾TFÔÑž…ß(7zþÒª(’ËžME™‹;f›ÕÎû˜ íÅÉb–nâäLCFù8"<ÑH·c÷íà®3ÓþWp|I,ÁWØŸ{gÈ7‰º®mªÌWƒŽÙM]?L­7´b˜}/šl%¬Â}_›Kõ˜0½W 9Nò¿†XW+lÞ±Ø?èï‡ Ÿàmñòî¢`DÂ\'绦ÎÄ„\G"_—®/r<¨²j7éO#ÁuNRÞ˜~âµÚ|òçzmdœ‰D6jC)à|Åò3Ÿk/g¸7ÞoرËQZ è¼ u¨õ°Tæñdu4«Q6q¼z7½± GPL—Rc‹ÚÌKæ³¾°’3]^ç`¶4h©“¾µË*r)Œ·ŒtèœuŒ¹Ü5Ó_» X5ò޽oèË$çß—¸uËM5~ ô[1Ñà†nŠ ?s‹èß;#ûm([dÜå{LŸs†widDà+Mƒ‘šÊä¸Vjf†¢èˆÜi A kw€.ƒ4oOLá¹]¦G­Ž–oX]”Ÿf_ù¾‰˜dsÆ„CUKnŠö„@³Ptßfþ–› ÷úxÔFTm^‹àGaÖÍïXãÖœO“ÎÑš}Þß’CN‚eÑò€¼Rmiþ¤õüùØë1Ñ µWPIÆH”ÒŸU_U¬Nìà2þˆ·½1Trb,Zßvzy©B¡„ÓKo@Öo¾+é1GŒJQϽfÛ‘Ì…jž‰g× ïÏË6Öy½#b‹çaÁ·¹^.ã(Ûa´Ã»¿‰£D:»Xù&ÅY—*À™ãmÓ_`×ð~šCº¾û¡¯« BUß™àyD¯rNKªV<ɉb5z¶¬µ^wýŽŒÿî‹ÆºÕ¶ÞP œVt©8]Lž·6»Û<óÊK‡ñ.Túýö*Š w€Õ§‹î*,hq@Ú‡DÉšíÁÉÇq,ÈÁa„Ä8ü‡XU2–­<$?/èÊÏ‘ŸµÞ< ¶Ý£fíÌkãj´6ž Æ1è]=ЭӪOæu1UTÃGNî‰' …‘v[…¨þ¤Öªüd©*y®–K³ 2K: â ßr+~ûrnÊk&ãÔ 9¥Ú°GŽH×5¸k(i8\‘tEÝù|Æ~îg†"ÝRCãÜœ-â™Åä|Ù YôVÄBÓyèÛÖ¶ËÅ'hçëð¤B?·ØH®ñ53˜¿š½¬E+ ÄíV ÷v_<ƒ“yVUâ9Ð2]¸9~äi:{ ¾jkÌëÙqk¸ó(a0k@Š•xÇÒƒò„;±*±(®—FO„VWzÙsÁc¥6ê‡Âæ|‘Û¬%Ÿ©ôYj I§†^c æÝ¡÷~ªÎ×`Jó›VÇì rL:ùl=0H¡"Ë# <éYÑj­Àa†SÚÄÇ_zp]4ØUaò“¦¯ÛÜo—n×Aà[Ç$MšY Ÿ_8ý%£,‡ÀÚ%Æ»FÖGD2Ïjê=¸07cþ+ᓾ\Åœ"X#Úí nvQz!dZÜ²ŽªàK{¤ €>ÖPíjÅì¦Z ·lÖÚ«'ð LÖö<±Î²ï­U*t~á—î±›¥mçA·ÌpaöݦqlÃd–5_¬„d9¼ÐO¿ò—þó‘æ}úŠÄ™Ä8´YXœ®¯>*½vð¶ÙB;0½HŽ tæ Ž‹ÒŸ[w< îÇ&»/* !Ù”î¯ÎN9«ÆC“ͨŠUãOóÞ!³Hó-É£G¦òóþ‰m¼übÛD© ì°Joù z_7žÞ ÎZžMeØÏÑ›¯„Ë ÙºùH1±smÝ'Ͼ‚d‡',Àï,Æ(ü¢þ›U®ö'ÉÝ6ÔÓYc}‘ÇJöa‘•/’È–Lµ]K—ëÕAÓal_Å cUö‰r> v:J BT.íÐÚÝŽjÉÍ>Å)ñÞßéÛ¸Uï–ÄÔ@žfWýÚZ~«ß ©tN1`p¶"Zæ"Ñ—#q.Ó7nò¹Piµ7í¶ÿ}våtíûÛ€æÐ^˾ ûˆ¸³'i÷øRLįQ•§59Ïwìd½Ñ~HÍPsR¾'(dÁã¡ OåPË£•¤ ÛHUy­ž,qþt[ðÉ2™þ³÷ýùËO6 ¶•ßPê?/—8ØÑzøvá±ÌaŽ:‚qõºË¥Ö¥cHk2‘<ÁBG»Ý(ë_Éì!½hÕµÛ#ùó[ˆ|Í}KÁh´bkv׺fú¯zÜrˆª±ô«$ÄT³ïÀÆOçtÅÃ~ÅDã©–naîñ8ø^¾GðÂ7«ðÂFÞmØåpÈ ÍÉÜ¿¶ØÑ¬;ãâóvÒߥ•¯ZîHrÖy®ªw8çÇ›ˆTABkH<¡¦é˜,§ÇZµùR1»¯Ù½RØ@Ú0|¥å Ÿ*m•ÐuV%Y,1俲òM˜ h.³î$ÐàNvq¾n5Î7Ä1 ÖÖ@Xs ¾„UÂÝUÑ":& vÅ­€‰‡5²È •¸@_ul{‘&a¦Š%ó#ZEñ>O)Xuå […éòábÓoIÌš¾à‘ºŽ[ßYƒ­ ÜH‹ŸÌæÍvø«Ö¬æ¤Ì²üeAÞ½‡T™b^‡(8)F‹…0Œ#~ÿjɲXù {øµ›-y©¢‹û¼»š·ýH§¤™ið0®à~ë¦7&þl•dˆ3Ú'ÅÍ}ɦçÃÀ!ÑCH©6r§-#Ì¡*yå>ŽbœÆ$¥ÆÆI8¿ç’ÛLdúóŒú‡ÛQ"RÖ,zµæ/ª•Ð¥ û|Ô3â%pbÑ‹8Û^ܦ6’ƶڴ…¶œ¹dò­QÛ¤k;ˆH:%ñí÷QÁ`Óê’@þÞ¼C¦du|oXiî¤_PÅ“€ >p÷µÏD9Qýðp²£‚·É3Ü•÷ ýá>ˆFïÛÌm9ôLËÑ¡ÎTTzhE+w–wʼnkiŒJ½ ·ÊqìÞľŠ~¼è˜ÆBsÂÉjúÎ^ %pš oI3£@¯l‹1xÑìP]Öm;ÚTo]‚Já,Z¬¡YPµAbj9ÿ|­™†þÁ$óøÊ5jƒZþ—åPéù ÁáÂpÂÍW×T2³¢"KÈ]+Sç¸ÊÊc ö¸@y£0˜(^úÅç›g?çÉÞÛÞˆ»z`)¿pA‚™Vá]Ê0Ì ái"¥0ÑÂ:¨ˆQç-4ÞHê'ÑbwÜE+²ÓÆIÍÓÞ®siõ×XÆ«ÔȵÄýlzMk @[§/ëÕ£O·"2¸¯÷[²¿'ÚŠÞ‹;hdÌdÝmgés7ãî¸àcÑõÉÛáZª+t¶ý“²ÒùÒÞÛ°SãÞÌJÜ>éòy¼¿à¥Œ Š9ï‹ß׋,ͤ{íxNda¶ð8DÏ~æºðeÅš´7ÖÃuøÞJ¸q·U‡a%k`´å€ÿÑgpɬ¾×¡„ñÌwó&š…hd†8¨CåeÐ\§b†Ú»ê{÷Ò"*(c<  „qÆ_sÔ/Ô>Å“õbÝüôôƒ]6¹`™ÇÀïœ<¶dúέۘ ɨ;©?ðu)ç XmÅ(¿ÎØÒÝl–ÈþÆ2×ÁmµÏë1l É—¦’_\Äd¼1>W¶$ýäË3ZîJ.BäH Î:¯;”üv«ûƘ… þå¨ÃA½ %ò…wì¼¹ÌÞ3ÜvZuŒäÞëa!Øéw»Ë(ç“ìžßwò_Q¶$*WLÁ”Ó,QªC<ðÚ%Ð ”Y‘»^0¢LK/¤«¼Õ”yƒ1e.HÊ´ÜöpEå¯O_¢à®â4:^up  NÆï…Rùãe»KñÓÍd„©X”›´ÄZ¦¿Ðƒx²ÛñTª£Yc:«´ÆyÅh$£ó8ÉŒSÏ¥!pçÈ1kÝFÞä¥úž†nƒQ¦^1I¨œ%øi—:m²ÌJ%óø4OèT€1|~· $#›-÷˜î.)´3çNX•#%’Š'>1pQó0ÞJàm}0¼Šv9›Æã%ˆ)¡¹_9”mühw^·Ÿì·¸õ÷E½üíV”UŽ>K¾zåŸÖl€“a¦½r¹wD‹6 ¸z‡co†õûðš«wcÝ/üSܬ--Gc»ónöyF‹x&ιⷙ$-Ò´lUÔz îm8LUPq­JbùFëŠH®¡£Ïœ¾…düøAø9Å.[«¤q_|¾j%Ï™hRjÖF¬É­aèÚ¬ Kt„“´CP…@å®èøºýƒsE0†éÐVÓ°ÇxƒZT­DØ«Ü.yÕå&¥Òp©£Tëd‘ÝÈÛ|t.ÅIV`JÀ¤DYŠúµóªEû,“ÈušP,¬†Î®êâDxE4n[Ò”ˆn·w°¡‹oƒ~2­ Ê34ÇèãWic… Ž˜OòFiöñ¬»#jž4$,‚›z^‹wè­Cý¶†d0óÍäg×ͤòwqsöÚaý•ûíˆG. î‹¢âŸ|‡-^Š£õ÷‰|ÕØnX"9”ÀÉD†í÷­Ìx5£ž¤¢ÞNço³›z9Ê$¸McÂV ]"åöÁoìšè‘2|S]å:"ƒq‡´ã,R×´bK8æIùüÔµÙtL¢8—¨ë€þK£fú|LQ¥ p[†¸© +R÷ŠÖ¸›ç‹ÄÈ´(—dåF´ÁëÑß.o³‰úØ7ï´³Å|¹=ïlµó$lËsˆâ`aI™¼¬>#›hk3ÈÊ‹howQh6–W™€`؃; ðô­(é³ï‡ãËÓjz«$Z­²Ä:hS+~^V9%4¬ vOŽÐß`Ý}ÜRI›¿—ÀÝsù©Ýˆ_ª¢¥ûÑÙ]ÞÄáo4ô£Nd4·–¡QÅçX·B¤2-y‰kè(…I=gw$OûŒ×˜Œüœ‡Rå*†üÑ6ýhc=xg^y¢‰ß°ã²k^3v´tê>dek*Ë&Çê¼ëÆÃlòãÛ¸£ž±Xøú9œ$̾¯›eE(óÌÂVT¯‹^]„@k©æ¶-Ææ+5!T fûù`sÞ`¹Ç-œ3`çžò8”B¤ìèSÈÈOqMcä3]šú"9?lFŠ‘nøNÉ_Þ© Ä?, x“›Pâˆß›ŒVãì:¤Œ§K¸À:õ!f@o—_·—™‘%Lû2"m¹S\i•§w ŠyS¼K ¶¤æO ©êøµRöµ ]=-zÈ/Ìsè  /$ši4ÌÄþæ;ÒïH”î ƒízB Ì5iü¼œ£sÒƒ£B¢–Š›ÒÎy¥êª+]uZaI*þ}^¢í$Ëû¤2y:"ÃÀ~U¿;ǽéÇ›ûI^¼3l³Ûî¤beD"QI Õ .®)ªûÉNV­\Hm§ŽŒTÛ?ù»|㑪Ik̆ä±ëCtL;šƒË¼Z ÖÞ}DD;?ï[‡35(ßDtÖ§ qæ¸åµx ;ŒAxjÁ Ð$¢Ít\²P­?b Wm=Á\’z¨h ;bî~KZ†³ÿ=¬àkÝâ¶nÜ0ë¢6,ö Õ½Xã.Ö9˜N!)·#?H^1H}†«Â•¨–OAóe²P‘(³çšQËi>”g¯rmÃV)ÿ³ˆé§ù‰ ±½m·AO‚2k¨IÂ× %ˆ5áÈÚöÀ2b0’V˜½E2Ц1î£$ªÍbú)cÍ(¦dÑRBćûç¡ÉÈ›WŸj:kVÄÞ):±’yïï¡8Æ¡|Õ©aÑ2BÄ{';+K¸Ý‹^±ÙLböžARSl¯ásMÚˆE4AùŽø*øÉ›í@÷ÂÙë][f 2P³a.ÄÝ€ö¤¼/íßé¢u«ᜯ¥/c)ÑŒ¤)™6HBœ®9¹B-s~E ²} µ²”IÚº‰òçƒÐÆì­aI}î`Â#…œx£«^ùŒÅ&eßA¬¨°]¶K`bwe„TÉs2ýr±¯[Ø*w» J~¡úVø3ô¦³öFí:)ùði¿‘MÏôÕ¶ã,7Ó»9%|Ö„¿‡u‘6˺Žy¥$dù•x†bÍZ·hÀæ0Ãáû,m⪤™.ÒޥݭÈÍ*ü]´¿:ÞÈJ³¤UMH ¦~v6p·®XOW;ÅÐÅ…-/º¿ ]©³¯Z{䢀Χ3ý§$vKô-…iYóøÆ×*ˆ9²€{©OpsS`›Vèšïo›\»ÃÏ;¸Éá Í]å“ê«ÖÜBtÜjJeæTó8i4[ŽØÕñýj6DµÑŽëïaQc‹:q†„qñ’”E5| ”“õ¬ÍGútö˜ÐÆÇ\ãX¢ypí^•Qò$IÓÀÐÔ…DØãçVMAÛVþHîÇN«1Ux¾“ÎXk‰,š0Ö™oß\ô†&Lý¢j;‹žÅ^X}eL´+*wK[Á=ø/^ÿˈ@§drPž²æÇžB–´>¸%¤«8l˜+Qâörã̓úA£T³5ðãÛnyŒ?„8<Ál V¯«ƒ˜ÜRÀb%ï5F@bC¡l±½" >äèü¶ô 8ªÛz\±ÁðáW¤¥44Q¾q/ú<+=uðA¹Íà€½´ØOG­—'Ž °â%¹ ³µè¼-oMÁÂAKû „¡ùsÒú%"貸I½6Ó®¡4mAIo ì1kBú¬ÈX“¶Ñ¾hºÄ¾iñonø|œÏ…mw?Ú kUwï¼öꩪ>ícz¥–fË\Ýj±Koìj¿%O“Rlª¹pù´6P.JÝ.ùW¿k%½‚øƒdaü¤Nú夆 ¿J™Åžýtc&$äœç–\ÚX£Iýbq]15´"Ö—ýîLNåFçz­DóMÂÚh¥¿GxÅû0£†Â~DKù{­æ{J[·#}ÒIûrHS;ScHTf¨‘aƒJ&CËo ØZ¡#ß…Aƒ¹*“n,ó˜ˆ HpÖ a­“Ù±ð¹¤ìY½ëWª·1.Æ)¸þÝඉè¿9¬ÐêÏÅJ³óáË cUbôQ<íC™š^«[^“õu¨…­¦Áø ˜üä²°pdCeRú“áÑšz œ÷žj<»ÅoFÈýåüQŠÙˆÏ7þú§l!Gâ×L©Ñü,å)Ô©à4_†N9g4K§]€°Ö«ÌpŸÒ•|[ o«°ÒB‚ ¢U‰b&×Áéó ü8øè_ãòhÀåÍ'^`@#ïnXÐYȆmÍ¢fVŒ‹°e}~ HýAϾ‡8A0œâL»©g´t°Ùµ 5b· iö‚c˜Úñh4ùz)‚ëò`­7R3ÆþšJô»åº¥ÓÈ ŠÙÅ¿\‘‹”^N:ŸüµDM§vÿ³w°»—Eö…ç¯VÉlË&3ñߨ*a‚+·²~?û«’ÎÍšËËZåNÖFˆ o.c.ô’q¸‹wÌ+‚ýÜMTHÇ/€Jß}‹Ò5»oÑ$Õb“!¶ìÐõ\ûô.èU*tÖ}9€¦‰YçQÖ}a)pIîŽjž €ý˜`GÙ„Ó_ö7TIjî¼å…ÇéJ_÷×uÌÏ&é9-Ó§>S@¸w»ƒd[»µ'÷j5]6“÷:–w³š˜^JZú^éÿC.{ØÐOŒŽ9\€Ø5qÏõ*;ì– çÅnk'ò‹jJ­âv˜´Ïö\««Ü|ú:û.­ •KÓ]Ñ÷ÀyÛ¸nôì€öú6eÉÍðìk¯q‹H·šÐ¬Ç« õ¦eÞ’ôîó…éûÒz?KFÈ,hÛ‚ìå….A-TžEÏXYÓ×vgxBƒ< ¨&ÚùuåÏ2Q®žï+„¸ Ž9 Êèd Éûä,ÁäU§L_™«t¸½vË`1èi¬V«ñIÎ_tзõdûð‘|I[¾zu:¤¶<ÇÒ˜$Xî‰UMey9wGÌåÄÉ„>½Bú Ȉ=D[ÙQàë œö²Ö Ì•5¡'w|Ö w÷4ÌE:i˜ˆ¿“ ¸ç¦ñÉí#aîÞþæf¡¶.ú9@ÔÚ@Yç¶b‡¡_~íBY|KLÈØi^ljf'ø½ôⓘv,œ‹‡¿—ð’ ç–“ªÐ”“€W¬{‘aÊý¨Û _1xª0v>/Órº òä?¤ð9–XU7-îŸwåîŠÖT‡¿/0ÖÞhïT†ôxª<ýøíÏÔÀÉe‡ù³ ÍÂä uËx9Óë-·Ürª.ÍÀ_vã&—›Ón™ZôÊ•àYÿ"#•>¦¡Rs ó7g ½ÍkS±XS=¼Û”sL÷Êì'ØÜ”‡8a¾´uá¤aÙ«94‰eU$Ps ^ê¤m¬>œ†ˆÅ"æR)ÍUR±êf>,8n¶ëffïU”f5~ö¹à@n½Ïi\oÓG«ý=¡·*\ ~!ÈU–p7Xˆç{@›‡f>Xë39À+ÄAC Lá=—Åo Ã.S¹§¢Nb‚¼YLZñ>o‚SÄtZŒüâ{Á’‚ÍÓÇõCŠd£Åœ­¹â#€rsÔú3uÑœ´Ë-xh‚õ°¨ïlfƒ`oÁ2ýÂü0þzþeµëÅ¢0Ï«o ™"Îí<..L¯ŒBe©¤ü¿D úheš¶ }]—a½1è\^µœ€ÑU1•o¦Ê-ȨjK\µ&Öƒcqè‰éóøTŸ¯§ÇëorM˜=†L®Ú´•2ôí˜1`·ß‰}ø“µñé‘.g"¹ŠóC_ôœ\ÕkK—x®êçCÑ´OØ£aG÷4Z )fpiO›¯¿‚ÔDÔ'yF>A…ÅLf‰v…«®¤¿·FI‘º£-£†—= $ò¯1è{žêÛài¯)R,‘wWÜsu%½i#ûü°gŒ[óC1ÙÓ-ˤ=àIÂ1«Ã¯>ÒE¥ÆVš"q›ŠÈØp`­ío’((ùÖ¥}gʰ‡0Ïc²öã~¡áG˜!ñĘŽð7u2& #ø»ßÓ®ê ˆºÂ¼å±Pž¯CþHI1ÇÁ6{ï©Å³ø¨ûN¸æÕE„FäåR^,€’Ûíóúצ¨´Ð•Y"ûcÛ^†k쟗¬fŒ¸Ûà_23~èaÕ1‰LC¡•ÜÑîwjf3¦À‘g0ïÄ;ه£ Òi¾Ø*jBØÝ QÆ“G a·óUÛ^¯Ÿ8=ÚdSñ¹ ‘õ°Ù’I'Ëgöç½ß. ä€–ºr’÷¿@µ×D¡,ø xa颤”ÓZµ8ö8zP^µ7¦„éå àYqmë=BÿlKQ •`){:ŠzNÎDî{c/¨~±µ·ïñ8þ}j÷.ð˜+ÝüNŽÙ©Áƒ7ÅA±'m4•NŠ’Ý¿¼Ò‹™2ÖÏ…ùV–Ê“–²ÐÊ+ù6{@opœZ)îΠ!{¤‡ÇÀY€¤Õò˜¹j}ß)p´$'üuoÙî6溭[QîxGnžüÙ¢ŠUˆ÷K0Qô«´jƯ±:V6m÷K ½‹^ƒ²/n‰:¤Û«ù"Nî!˜›w¦´H_y–T`Û,#CHØŸ<Ù‚ýÉêâ_1$úe…ã˜ü5€Né‡)z{,0¶4öþDrv·ôL¾»Ê An©-Í©Ûm9Aöa~»&5—lðQ¡¥e¦§½ÐÍ=ዺµ/*(Ú{à~ Ç](ÄSÄlŸåù`¹Ïöugsu!OT¬¸ƒÂÅãÎ# ={K%peš’[“lvÎÁ7'h#ýœ³Tè×S,ýÙcú;YȰah¢pKY¤ë‚Œ(§\æ ÚyùÒÅŸÍÂÊêÁõý…dõd>–'ZàãJÚ}<%g¬ÊBå5q|nhDžø¹Ãwg'™\‚Då¯È‰š,K…x“qD×(A³mëM1šZzܹ¬ÛtÕ©tòò å¨WÕ\¶®.ú$/ì7K•-Ö”þ^`mx#4Þï¤øD‰;-^b¶Ži˜¾ õ•…ãRóm¸KdÉêwv‹OÆëÅ^îútQ5{9¢ It6™GÊ¡ò—¨IÛr<ò°âRô#„ÉMRÒŽp,ãaxe]áH óÙ0ÈHêoˆÚ]}‰Ã›…´%X¼WcÍã'ÅN˜ñ¶JùÌ’÷ªœ-4o/QŽ„ÃÇ +(æöþÄ .®ë£áì öuÐÖ›·jÂïÀ*¾IŸèå¸îå L7 ᙣߠäV¥œ¬« ÔÏXÜ­J˜ÉLœC«¢c¼Ÿô¢b­ˆe®Î É9”@°—í°ñy¢!¨Dˆ·¨¼ýI‰ŠHëEè½-|Yu÷q &³‹­¡Ý4pLl¹ü‹Ê¯¢¹Sy²à³ç‚ºGhºk‡ÖhÜ Äù¶ü \!(JG _‡ºïú¯põäŠSâ:1]N•¡âh ßî>--„ÍR+O#O;b°Eøb8÷dÉmÑã]Šóàª}û~ÌÿØÆž)#`‰=ûVsA©ss@Jpb>¦ßJbÀœÎùÓ Ö¬«‚æ’`ƒÝãGAÄ#«ž#4Òœ•€gÜ–²îÏVÉW¦Ð%®/lóäg¡SÍsMûÜÕ”d{?¶à‚¼Ž#EŸížîµ/ò¯jƒsPù„¶w´ÕËì«KîÔ±9&´­96…rwÙ;ó\ è½ú„ªùêÌàæ[§[;²ÙD¾žÅïÎY¤w…ÂÏp&Ë_AT*‘ãXÛ@µ3ý=b÷I<ÐøéÛü`ćVì(Ò‚çÒ¾7.®ˆƒ'g!Á:+ßP-žÆ+&éN~á=Q¥ LC ]Šorô´¹h#Pè³ë™GŒÐ´rá5þ‚ß(x©ÝgÂv¡Grgüå#iÛÒ¬ùÈGÿA3›¿×j¬®¡ùÉÆX»¶çNa;‹iQR<1t®Íç8KK“2Ül^— žÅËiBØïË #wæc˜^5 ýí5ä°þ‰äVêq—a\aBY-wÿPTß%]Âz²Òhd[/ÌØKAÍ(ù“´k¸fŒ­IZ|ÕJ)õÕqYùëÍŠž~rºçú‘’žsÉ|¨•kÜ΃˜kf[´±öÏðVMyêßìÏp})8Īœ0•¿µdRÑ °q=˜òçÄN>z“¿ï*©ÔÄÑOOæ—|3\T˜šP<…)F¿ŒŒö4$ Èšb®Û‡™ïQ'r¾M½ÉÐV^;‹©Sæt:•ªOçñ9;PÚ+7‡cF‡I!“¯ÒîNݬbwp÷¸F ‘H$Þ¤øtàϹ¹dÌÍQn^y¸ß5í²Q$&LRÍa5G‚Oxͬ±Û(²¸Ò0÷ ¶ÁøpªõÙs #_é8 דZwbwènn°®áñæCN ÅÅY‹÷˵ã4.˜7WN§é‰±]¹Ä¨ïFûû¬¾‰Gšÿ¸™•Z ´(Û›*y°lâ¾aGêoÄ]í –óÇ'gû”Š$¿'á·‹bÝã¢juü™éwâþ3;M—«6’þÙö2›®©‘–äl`®dž ž6|2sêÒ†È!Et ã ÷ü Á«Õ!ªoÅPŒ>÷‡„~y£ÆÅlRÂú÷š.Y’¹{#C½²ââuZ¡_4µHUÅTgø3A@—w‡ú«"¦ µœ\11E¥\–5=MœòÚwu Ô² oÍiñXüÍAH™¹ç“¢¯‚»Ëè^GËþg„~3ß7ävx "¦o06±ñß–;ÐqBW †K¯.ßfoÙK†¸j~`MoÅÿÊsñ¯¿*=•'°¤^¶Í ù|Íìp“™„Ùpxm.Àr¢ù › ›îmJd󘶟úZëÓYhÐ:‰n®sÀsx30r:dE¶rJÜZŒ9§ã ‘â¾~âœ@ê¥óÜýít´èû0µB,H)žxÆÅ:*ô5{œ\rœu„vÊŸ.WVÉä« £èwl);(¶MR¶Ù˜tf¶Ö|Néð)¥RÚËBXY_ûqúê»:«”GûK…ånp÷Ð)Á—iÍÆ ªd͵Ƕ&\ðïJˆ/ÈDlšçXR}¼;ÄK Qª”ÃÍ!ôÌ2·¤› dßéÚÎ&ij·ìLozA· ƒ@zÉ¥uaTå’ À£YùO’B˜˜}?¯ñ¼¸6Þž4ˆ´ïL~-lUsè3ÁÞP•8ÏÇ1à"Áñ¶¢Ñ<âW„™ç’ÆEt²ýrÇ*‚î´§æŠy×8©N¬;ß±žà2=0p³Õ¤xòÕ# ír?€[,´š}õ<‚¥L”b-çRí®“ +ݾ 2ŠöÉ& ÝäD{:¨U‹À{Rû™¿ãT€ª8ÝÇöèÍÑ&Ðí¹.— "ài…^æÏ[èµJMt‹ñç)G…¸ŸyòêŠU“rn†²H­^¤µ™þõz-6‰uDù8<+ºY‰`I§©›æÕË)nÆQc.ÃOb‡Ó(Às#Ðî^½ »½’b5OßX]SCpÖÇLLQ5U¥Ðë¥o«ñžUȲû!ªX8ð¢ó’ÃÃà9÷i=¯H`Ñøø'>ëéõëúºl@ ª|Ñëx£‡„­È±d×!Ì·b·/Aœu»DïÞ[õ´aøË:¹ý)†8%(9*·³ü ˜É‘<à–ר<ôs3´`ü"ÃÒœ‹ð5è²E{›xågv<@½ÌgI¼ÑN?I_tÎ eä¦(Y~”í²*]Ú$}’d˜hì½KÔ!ôgGÌæCL¶õý†ÔÁiÔ“¡N´×ýåR×]ßèTt”5YhKá _}Ä%× ¡'&–‡Ì5ÏDY—ë/òýՑƃˉ%Öjõ\;_k}mß3'ƒ‡³ XæjZ?ë©= ÚƒÝÀÓ»œ)í ɺ߽¶’:Ð i õÎYumÐé–³ÉU){wDA< ¡ô}OWAŸ¥âÓÉHZNÉ9õ~0QXKQΕ:ÇÑÅñð©Í›iõl9Ý::zRl‰´þÚÛL¨Š@˜@µ7ÎÀÄ~£øyúžÜ¡?È”‰ü;y–9(ªŸ~bj&ì'/uË&}TºÉ«‡Üò(ß•}Yp㔑~w¯êxÌʺ¸.8~oÁW‚q/Éœg[âY`lALK{za ªAo82yÇA1»‚l÷R\ã«Î±¾µåÖ/­DÌsû¢"'«ºô¡Ý×–×1ñG7*ï©ГI1ˆlÄla¢•çWXS-ê ’IAíoøiä/<)]ø7Ÿ‰M8óÖ ÷ª–\_ŸOòa$Ô¿dü² a •™YŸ  ìç€Òüöd*Iÿ_â*6/ØܠG=éÔ£ýKj´°0]¬5W;80„Gܬè¤E%º²Ïçõ·Â"«sÕ©:Ò*›Pb¡–ÊÏ¿9©Á)y'9¾¤«)MbìV-Y×îððVUjqÜté‚DMyk+ÆOÎÄ E—hë0¤í¨áö\…Óz!™=$ß+Œ]š®ïÁE¾¹vrT:dfO&˜±|‘ l•µ´×*ªºÈû êô!‡¥¯Uú˜uaõýfp;ñ!­s„ÚŒ!®ÞJÎ¥m˜ÙÔEŒÑ˜XYàÄZ¤ðõ…`í'K{Ct矾 eÆû:dHfð: @¾ÛHgKÚ]sÏ ÇÈ}.ÔÌä¦Ñwý6¡@XT3ªÎî:XÃñ,¯IQSiæ‹náXß òó‹"hØÀ—%¹/¶U앦òó/Í‘š ZÔ+“ô®ÜÀ‘µY«Äaú2ÂÁ!’éꦀnû¾Ûh,™á‡=WM×K7A+±ó¬nl䮾úÚ?«g`€sÌS3¬B‘ }ñ MÜèÈ¥ (¶jim¬–XN@º:¿¢Ê°„ÿÜÿÒîÛ‚],Ù ǘº½ä…ËR³ç˜ýÊ9ų輚pé] Yù½Ú.¦3928!p…×ÔßÃ6×èUšÿ;ÄÈS9æÂ³ï0kM¬¥ªul;¢_2¹\a³7 ú ¤³N»+Iyia»`HJL§ÁWxÕ@2ɱú‚ơà ‹L,gü”|ßúE^Òž;‰×¢•G![ìÀb<ÏÄ¿á¸ö Ç.ínæÝ8ß´ ™Õh àïH!ÝýöÙzÿc;ÀL>úV6‹«¸³¥y]4³¿OïÌL~ \*¶ÍGãŽX«§P?¤¶Ê¯@ .ZÒ¥Ÿ±­ÓÜ•jlOq²ä§¥Àå‚@Ý6ýiÅOv;4ÎŒPŽM`4b§|‡e]jË{ÕÀú,«“»˜‡´Í-$äî3Ëi“miJÀ–âê¼5£ðmÊíØ¢ZPFôкÞá>âlk™&V&°èòFé×ú-p>ÿ¿§•D±¢÷ªiÓ3äëèE.}gWqÜ(j3ä+^S ÏBeDßW–4Ädtÿ£F±‡C“÷ó´–ü\Šs0Ç{DÈÔÈ;<Ì1>>Û;ç|²·æ]Û±ePΜò/ã³Þ¥€h©ÄóL ûÎ`öŠyü)†D qloãuíLnì@ÉQ†üyW¦ôuvVŸ©mÖˆ²gjIö¨eƒ‰C µbýŸïÆæ•wø“ˆG<ŽsKSÜ©bÖ°"!Aõ¸Æá+²ëŽÚæ["Ë-FÖºKµ€qj˜ŠxkÆ»ïå{“‘|QÁ m™ãsˆöøªpJArŽä=C½¬,û°&—>C Ô”AM/*`Œ±•[AÅz7¥n‘^ ·ë\À®I~JЪz—Ãp‰ÂùózÄÍ·Cd‚˜Œö¦Gmx2r«[¿=ΛôÏú™€ÀÜ^ãb·,y#‚$ E >ît[«½“ô+\z˜òç@•ŠÒ‡Ù1Ò ¤ßø{äö©[]w\brDþ îïáÌ]zÉáÖ“Åü"_3‘bàó°XT3ídÍúDã¡þÄñжssuù„ï@¥ù&¡Á”ÅBi(ž{=Üz†}¿ ÎöÏžAk%Aš«ž:ô/»\4$7‹Ôh?C-›.lÄ@î˶SÈŠXÜ"‹1jñ¹Z~ÑÐÒ™XƒÃlèÛC퇠>ÚáÆô`¹xH%1zÞ4P[v‹p4X‡¡aÙ&”†ë¨±rª ö=ýxwäM+I ‡n¶âu~|YÉL[+›{j… çîÔÑÖߛθYÕu'µŸG¥X¡zl%XCA©eàCŸŸxäf4Õw6}ä•°wXœ‹¾ý+ÜÑ/Q$Þ?H’¥Æ%i¾¾Õt ÌÑp Yù‰:5G¨‹1ß–¬’ í8%¶Šãez ÐgبL™6’±j…n½º2KCBѼ æ@™äõVr(ÓÅ©7ì<­§_°ãî\À{¬ºšú&<ÿ{ëµÑ3 ,úÑ“T3 ¦ úJL–À2ÐëͶ4ÍhrŒ:Ž¿˜vE±’Þ:­ È?¸f\ÕY‘ÿSg“R+î?.+޼¦úBwyÑWÍ ÆÍ§ ½G†^ÃgyFižûC¸2H¿.2SæÃfø ÏtÑx¶Ý ©•XRX׸Y<êj>>QÔ±@î°}ÞÅ‹ãŸ]&QXX¶øô*aTæ¾Å‚냊eö¢œH­å8SÊu»V†\€bP°b‚Ý7Úü5Q<ûÿï I'i«‘|V[ÄóAðáÔk©tZ—ð±o«Æqä·ÃŠ*KWþÒ¥g¹¢ù>Ûg½½ÚK»n–d+9¹ÌbæZìñ_šŽ%¤øÒ`üåHÇj`yÑçg—t"=¥®iüÈl´F‡åÂ[hthaY"¦íý! :× €9 É'! vö³îm¶ß”Ýâ皣é¤r¬ˆQ%bqqñlz<ëÁw—¿cá ï‚¿ {Þ뙲u{×j³Ut¢°K*Vz1Ç“\DVÞC¿;ê2Ãc wéÍîŸu¤°'IçlM3@á Ô?q´³r¨z¶aW’_Ði¢¤Ù07ØÇã³:£.Ú;[5 ¾`0„E™4×C¢}e¼0”d¹Eɶ Â¼v@NkøÕ$ÖΦTÕ:9G²Ý¬Ü#¼z¤yMNR'‰R˜µû :ùÉǶ:„Ðßn7Ö:$qåÁμdPÛ³Ãü¼uƒc$Š.)";#ÈLZªÿ%aC˜Þ>ã³éUÝ= ËàÛÑÞÞ¡[ýb9nÅ9z˜òƒ»·¤b_€ñ+¯±Ùô—êd³-û- AY)ú gE&¯{ø) ¨N=µÏ‘®oýÙaªNìØ_;#õά”¡Õò<ÅöéDwéeN%Ôžè\¯F.“³ ^]Òµ ¼MÞHzÍã|ìêÉ G³Sc9ÜLµË*žE­ÔÆmßZŠ¢íõñ•Yˆ=Nr§È>š·S8DÞ„FÈ4‹ˆÚÇ©G·ÛT¤ˆ|á2_\éßC?ñ­Ù…¨7·3#÷  É íd¦¨}\fgÈ6À1Â|›ÌœUœË$!74ë_– fƒyføC›…u×ñªÝK}ÚE\®Võ ì´˜:– ¦"WŸPChY"! b½áðTV%‡%ø/ÿðóáVŸ°G°6¾ÿˆ6HAoNÜ»ÀÜ8N»16î „ñÙö¬dDg€Ã ¡o¡¯dL䮿;²Ø8͆›T 3­¯Âçl›íå¸cãhü @’¾ËhûÄ‚Ã;½C_×€T~g6b?‚¦ 6]ð`%ï¬MýÁœS ´Ùó‰ ¾tñzÎ’q9xJ"P–ëj Ðf>l͸ÂÅ.ük”ºô|iÈQû§Ø*6€*acŽ%wànD¤½XúvŽ>È39a‡»WVS)Ô•/½’Ŭš¨7¨Ž,‰¿Ø%Ù„²äHùŽ)¡°¨`Ãbûm¢«|÷aÐq·xUDòŽ{+—_êÍÆ‹~V endstream endobj 750 0 obj << /Length1 2456 /Length2 17587 /Length3 0 /Length 19033 /Filter /FlateDecode >> stream xÚŒ÷PœÛÒ ãîN°ÁÝÝ‚»» îînà.AÁÝ-¸»»k`AôÎÞgŸœïÿ«î-ª†yZŸîÕ½Þw(I•ÕEÍMRŽnŒ¬L,|quuV ; %¥ºµ›ð¿rJM ‹«µ£ßâ.@7LÂÄ d¨àèu·°²X¹øX¹ùXXl,,¼ÿ5ttáH˜xX›˜²Ž@WJqG'okK+7Pžÿ~ИÑXyy¹þvˆÚ]¬ÍL &nV@{PF3;€š£™5ÐÍûBÐX¹¹9ñ13{zz2™Ø»29ºX Ñ2<­Ý¬ª@W ‹ÐðWÉE{à?¥1!PÔ­¬]ÿ£Ps´pó4q@;k3 ƒ+ÈÅÝÁèe¨ÉÈ”œ€ÿ1–ÿàŸæX™Xÿ ÷÷_¬þv613s´w2qð¶v°XXÛJRòLn^n ó¿ Mì\Aþ&&Öv&¦ ƒ¿©›¤DU&  ÿ©ÏÕÌÅÚÉÍ•ÉÕÚÿ j³¤ƒ¹¸£½=ÐÁÍá/~Ö.@3Pß½™ÿ9\[GOßÿ" ks‹¿Ê0wwbÖp°vvÊHüc!ü–YÝœ,,,<ìl 3èefÅüWuo'àßJÖ¿Ä ü} 2€þÖ@Ð?_W ÀÍÅèïû§â++ÀÜÚÌ ` ´´v@ø$ZüƒÎßÅÚ  Ç?VË_ÿ~3M˜¹£ƒ÷oó¿˜YU^^UJþŸ’ÿUЉ9z|9ŒlììNvn/Àÿ£(›XÿÃâO GïÈ‚ºô_ÂÿLÍ?ëA øßXŠŽ ¹h~¹> '‹èƒõÿó°ÿíòÿoÆÿŠòÿ:æÿ—‘”»ÝßzšÿüÿèMì­í¼ÿ±Í­»hA›àðMµ€ÿY\ ¹µ»ýÿÕʸ™€vAÔÁÒîßFZ»JY{Í•­Ý̬þžÿˆ5þÚ3;k ²£«õ_7 €‘•…åÿè@Ëef º=\A#ù· ÚÿÍ(é`æhþ×’±qrL\\L¼X@“ÄÆÉ ðem£9Ðëï!0398º\ êüŽ.)'€Yô/Ñ€Yì7â0‹ÿF<f‰ßˆÀ,ù/âf0KýF¬fé߈ Àüþ7b0ËüF |ò¿(ŸÂoʧøò)ý‹x@1U#PLµßˆÀ¬þêÓø@´þE¼ dò/be‘1q5³†9ðw¥ x&n¿@´L#P©¦.&f¶@ÐÄâ+öåÿÙ€ :ÌþEœ `fŽv Ãÿ¯„ƒã/‰½ý¼@SÁlþ/d±4w´³3qùÃÄâ7aÐ0ÿ')×_zgwÐvývuÐâ· ˆ®…µÇ1þR;ºÿ™dbùñ´úÍÔe+o'+ Ã ™õÄÊæê½íÔˆ?Ùºdÿ‚n3æß‘9A® åøÝP&w{Ó¿®%Ë?€îYfÇßA1ÿðbeÕèô[ Êáz:üÏ9r°þ#ýßSä㺽Ÿ ¨?NvY:äìîè47ý£2Vô®²‚¨ÿváü =þè"'ÈÜô ø7 ¨vW;W«?B€¸üfºb™Ý¬\€%¨07OÇ?@1Üÿ€ Ö{üAmòüc)@Þ^@Pxïßl@®>@—ÿÄþŸkÉÌÝÔ4·¿Ÿ ;ë¿øï Ð h†°ºähÆfSÖù³V”À“ñpJpžòP+ƒ–ÑwÕå«û# l*mMNȶ˽hêhÚÆ¾$ÍÈÉ‹ïY[#ld{²JǓ߳Q¢êìaÂÊ ÎÐtÑ™hà =y \;—U^é ÿŽæ`í~$øœC5c'ºz§3”e5®Î 6ãõNccFê¤î!¡5ÅMr:d®eó³òìç \VüþÂz)CUá4ÆO©ŸnúŠqÂ` sHŸ>BбZz>³õp0ççµ²w‹Tìé×rû¬›øœÎ²žÐ~haÚɼú#é¢CÝ>RþpÊ%e(è`ÓŶ÷ufÉ ë[‚'+RìóωoìA¦y2‘9ѽޭõ|qÈKe§1ɇ§×ÅO¥–ç”ÝNOÖ×$JÄ4Ô¾eñ‹õã(ž¯jGjÀlj‰·ëñY‚½¶é©ž#⩪ ±ÅRÇùØöÄP¡½éºÅy0ˆg«oÔ© U(àJ¾³RúMv³µF‚Ÿ~Nósnæ)Û‹.ŒÐçk.ùlŽ&e›áD⳪£ ä){ P½«­Ýï=­L4xPUÍ.ÿ"eXÃùÂK~+ú}—^xXìŒâxc˜öT$©ž¯„F‹úˆ2ìUlPº ŸÑ%iB½ "uGÇ: 5LŒÁödé1ZàT…$Y¶ûuǪÎÎc™ñ¥ú¬¡11X#MjÕ<5Œ}æ#¢5ªÜÞ<2µPzŽä޲"ŸÂ7ßh5vi6U.ý¼aÆ«ECíXê õowR8LÎVýÐ:y7Ov!&奞«ŠÕN“%ÆUU·{Y ¼u0FX²–s¦ž¤{éH®Ácês)`U=¦!£|ZΤÖCžÉÆoߊʠ`?RöïXÂô!©«ÇËT8¼ÿ´;hþŒþu2é&î¡?ßcó~i?8#è~y@]JìµB#U¡ÃÚvt_ñ!_£{¶²”ù\éZÒ˜êœÐ7ŒOnIüÜzRŽ÷s·×ûAFL=Éç/#Nâ¨ÃøüÕöç謆ÛÜó=;NjÓqÓMg†´÷÷L¥äÚo<ƒ»ðŠŠºÒ7аÎî“Ä-ÃuK )]·½–O' æÌL°Žß辦aì¶w¡Žu±œ~Ž7!°^Ôû;¢ÉÓ¤]úо›qUØ'2 #å6ûã£ùaÜä`€a”έ•Ð<­±v{ä)€k?¯ˆÚ$jBýµå<¢ÊÖ)8·&^õü1î‡[Š÷)ÂC¼&Fè³/U·{b,º' «DÚSñê3T0Ü_(ÉDËS(šãfLŸ>åxºzšW]…êƒe|Dê÷XeBW=i~¬˜KËä&Ch圸üELÇ™ï|Ô^T#t¦ˆ=¬?È>D2¿Ã:Ä«äÖ¬Çî{ÅéÂù£Íihåõi…v;U+ƒÐYB~ðkgœïÆwãz¬äsÏ¿å0diÙ7æ–œoï©»t)Â>¬‚e®(LñÄíÄÅé¢MDÅÁ poûÖÈ;m¡÷?hÒRbbì~³Û` ;ÏTw,zwðçjÑ}s©õípÁíÕÐ}ã•,Ï[Z®ÞuOäà]Ú1vÄwîšd)Ú 8AñÚK‹W ÷˱à%Y®îѾfró²6•|fòÔâ ÏtdèÇý"&ok+×ä ËkgiùÌnwâWAÕI4‡‡¢0bBW¸@qÿ¨Ûƒ|£Yèœ[ãÜì$p²¿¶Œº+Ò¡Uu&sŠõcÖq±ÖÖPÅ+léê›æRY†¢; =ïÛ*7zŒ·4*Ílßëö6ri0r_O4Y•ÏØŠ£RŸQŠ_¥™î+¡XÑQ¨H‹n(Éfׯ“B WÚ!©p±Ùv*øÛ(¬NOøåEÎî‡õbK±F;(ÌÕX^©SÙa2 ='ƒ>Ä5è1§)«+½ùS=I¥×Ç[]ò AɸÏ|Är1üÕwZo”Ú)awP+‘|¸¦£¼NûR†æYbSÄK²ª4à\zŒêtß9Hsbg½uÀŒ©š^h «àj¾)`V(‹’Y$©“Y~$ƒ>¤¿j—P%©v HŸ!”²ÉF €qA!] [ÑòPM`3‹™ Y„Þ§%“â¶³D5]¹¡µ( Æ@j³€û|eݦà¢Ànñ ÖØfµ9´Þãæ:~¡è⨂×66ŽËä<¦ ÔÝU¾9¶ñmÞ^û5I6Ž—Òì«O²0%w×ınÑ"š?áÄ„’ÿ“™äïR6ÀÅø:Út݆£ Þýšúü-µ]’!…lD8ûSrðý¾©XÞôÔÈó2߯ºôtîÖæ¥>û{$‡¡]3¶¨í/í)¬|VRa¾ì]ô¶´C47râþaʶهT˰hµn žOVp,Ü0¶mE›þ(qŽiÃø6p®Æåqçã^” b 3oíÕh6´i첎AåÒsLˆŒ"s~ ƒ¿Öf$„ŒÌªvªf} †w¨CqnL[ÔWu7;€·ÌsÑŠn€øSÃ`FJ¦ZÝÖë*ÛÆÒ4÷}²9 BïÞeE!ÓLjtÊ"'çîò[!œÀJ!Ã/†5_äI3—ì=.Çê–ˆ¦¶»‚‘­J·÷Éêâ/ÓË€T%þç½`ž_XÞ­-bQŽò.ÈA¾‚=͕ԩŸƒþtw¡”¿èbP0ËÝÌ]?ãd‹ƒ+ú˜5wd•<…pJL®ôµæ§l1D æ„àÑû¦®>ÔÝ#|‡Ó&Z¢å™Bxô/ÅœîÛ‚²Äê7UÉÁyJuv[pZ1g¦}ŸëƒQ;>Â庽Íù+?Ÿ§¸ `.‘õjHåY™W%\ßeÂÕ÷3vß|ÓÃŽ" i*¹¥û2óU¤aÈê¡­1ªåó _ˆCJÏ™ó¿‰ïSIfÀðô6d?+À{j<äœs¤¯¬ 0äìXGêo·ÑW tèco‹èZ>´ôøl´ lyk‰ÏˆD¤ëFäI´oÛ»Š˜âzòW:Á—dR7mÒE_l ÈB7bÖüÜxŸÓHÀ¡zBO„ST?Ótzµ‹‚‚\æ!›§ÕKÕÝæ§¥Kó+ìtæ½<ü¨ÈQä·¹RáÑX˜³VL„Iâ ~ÍFn.Ÿ+.%¬1™‚À q†÷Éòž ¯¢Œ>tÆg¬Õâ&*£~rô¯ybÓì^†K%jìÑç‘òªjRÜw’ ÔüD¯á¬8€Èýˆœ±@jü&ºC»cÂÒùÊ{î_dS¦Aês"id*)žNS6ÙØÉ‹VÚ¬ üÔw¥3ІÅΨÓ4—?{9¥{À&(k_²ªFþtÀ ç½_•Zr_m]d €ün¤¶»äêç8QcÉáqmOÇj¹Ý1Ê]=Á¯Ì}ÀÈCéM˜ ίè£+`ÑEo7);xœ˜Žº%ZÌL?ŽzºIÆTTHT^Å4„vö‚e^qÇÂë•v±½[ k­èŠïvéÏË}³ÐåÚüÄŠRe:•ñ²tµeÕCs:’c;Åï¸+ñ¦˜6£‘eXž_ÝK ñY¶ñØ¿uÛ÷ B2ÛT¹¾mp·¸ÝûŒpM-¯õ¹cOxÓÙ¦ü:“a,î,k¾ž>·¹@cx–hÆåó^GÕû™qÞ%{h¿~n—zŒÒ¿(ù"od]^›¶h*,¥ ûj¼”O` ƒäö¶ðq{wtuÂ%Æ“É~¶¦P` [´p§¯emû£·%i8~‹:fΡޣWúqßäyýä•êJZ‚K¤b¹#L\f¤XïÃY!ð*º¡ã%…ó†t¸[›¹NÈy"˜éú5÷bASˆèÍ[G/¯BçÈÀžêwº†øß±û‰&úHíêpÜkÁ®¨¾ËÝ-É=¡ xâÌ)1ÕëFWî¿äÇÎSõŒÜn–¬â,&ËÕ:ô â_¬–Ẉ…Hц Ö7þ&÷ëÖÕŸí#¾¯Š(­ç;ÙS7Xí8lkv÷ªìêÙΜ‰¦~ÄgI'lO=Üø¦¢þáÁy™ï¾Èk/(q?1£QCó‘L/\…hìnL,%nǾæ±ü(Nq'Íú6¡`ìí/}Zœƒ;&Lk–´½õ#-ë{W‘”Glìkœø(Ó„ãñ4NÓ¢{”‚\K˜šð$‹®@9Qç‚a®£$ÄîÒe ²€v”¹ PÙ0`x§%ˆž¥kGÀ^ºÍ#ÖÛ’…W¨¤‘Œ˜õ¤ø»~pªR¦IÍ}TLF½åãâ‚Ç Æ*ð[S ¼j‡­‡…_•õÃ9‹³ÓÕW/°YÇý÷*Q ™>×ÇÙƒ¡WÀ¨ÕkŽxãÒá `™éCF»p…&u‰×61RÝî$üpxG@ŒÂ¡¸øíçÕ)w,sd.Y®ÙSjâÕG‚}sÞcHOz O †¤ŒÅ¬µœò)[ èè2ŒB¯8‹)2`¬‘æä9²¼T™2ñáäu€éA˸íf3º1tpúÒ*ì )-óÿiU÷LSeÈ–*¬c3a#K[N]ÇÇM¬ÂÒ¼†Ð9‹üÈÜíïÒ}B Ï+Mg“Q yhù•û–¶£’<˜-Ây+Æ&QŠÌÆN0%¨ÇS{'llÖ¥nãð4Ìz"û~üâÅÛ`&.\û‹ÚwÈaZ­ â1Ñ``J8÷TÎ?è—ˉÕì[•,8_Ÿ`ò ‘ò2ÝLtÓ tË+ d.ú] ‰r‘XR‹‘®øèPv´Rî©ZpüKÃIТI€M•\¦ÜãÕÚH%ƒ—•ùvVo-Hƒ:žžÿ͇/DÏEqú(´5kÐXp,cçQí­|»úlþq^2Ä ½ÝgÖó€Ö Ìì oZ͉6’Ï9†ï§D”ÅO:•²¶Ø®mWÔ.ôÙnY/‘GÜ´a´ÛöT1òZ* ÈûòÜÉ´U –÷A-ÁË?'›É˜¢z:ß,Qh’Ù/t{¨µ¸ c÷!|Ü„5w6ïì³3 ‘ÊI›¨‹¡º±ØÛ¼°ô\PòñÏ6 3]ÛGùò Ó|ûy%“[°f !&xf7ÅöÝÖ´ÈÏ´\×áÙ“üûЂ ¦E_f.ãFž¤:zlßfg'Ø£(çY|[®Â7èM‡*Rø-ùm¹æÉšµJ¤ J“cž?CÑRé¾0¦8Lõ¼Ä3Èj›•u`Â`< ×H?*Ê+Òé‡ÒX ý ”&ø&‹ðq¦—^㜴m•Z2A¦'kY—zq^sk­ë«‚Ìg“£Û ÚuÛÊæÓ;툞ÜjZç-ì»hôÛ«…é5ÔŸ&Ð=ËšêvßCÏû]š¸ÔC»µ’ƒy\Jß.Í;4{Ëu$<ýèiûô³ª³@õn£¢rÜÍ|‘S̓“&›,˜´I2zŸG¢~ø35ÃTTÀ»+ßž_²,é#(ß7›Ï4-ù‘E[•gu5:$"&Ö¬Rq\—¶QqÔ[h ¿ãû·Ø×A¢Ö£ÌD[ÌX‹>iÑždµÉSãà¾W1´Hæ'ÍIêÛ·»<­¿þ(öåø|°Z8Ðà†1>c„Kv·4ÿ:ø¶+öÜ«}o~™ú .×f§7éõ@r°D™üköĘ̈H Oœ”Œ R »OвY²6Û|`ž†îë”Åõ$ -Ïaìã¢âjÖ?]ö9zçû|} ƉZš×›Ü„?iÒñhɨ{ª…&“[6e­Q¯qpL­pà*4æñÞo;¹f¾t.¼KèÇ´˜-+õ‡¹M'è“êOX‡SUйLt«e/çð0ÕýH%Áê)¼0¿òå2;õTÖÏ|-oV!I"e•Dê8ü.~`zRðK«*Ó¯‡#i £ÿÚU´D›Žn?J‰˜½¿†f×+¿ÀÃÇØ6CRÔ»*ÄFƒz™GÍód| f±ŒR à:™K)òJ²°M³6H$iËîBãÿl\(mÅѸ¹ù-îM'!>±v¤ÊBmµ<õSµ¢Î|ÄÃàWMKc.j…fµË\t·©¸::RI-ÑhlšvkcV_vÉ`èaþºeû€$Δr›+÷&¢Êyç' Ç_[ûPŒ£~"~±ì)1Ú’¶Êª„œ‚6ij#)-•Á´±(‰³ãÕÛ‚ihz0éÙƒ‡b¼êéDÒOW:fþÞTºÃv0Wÿ-Ž©´4´W#¡Eˆ”ðo ©¯‡ àÍÙLË™â“ÂÖ]ÍÓ›ù<öd=øï¢RS2‰à (ÐË>½œìEËH¼èÍ»,ÐÆP›ÒßÜMè s,\"eŸ‰ceí(+’^Úɽ Û`â{Y'T-ܹ*ûHÞB¹ÖŸK }¿ ®KÐÇwë7PŽz;}­ë²Õ.p÷‹ç­ü7ý‡§Jx 7éÂXgõ^Ô ?›rqŠ_)6ߣ«"Y;v¸þw² òý…¦ªx!u=Ý™„åcSg%)[eKhku@@ÁpïVÅpÏUóJ )–aD~–?úí6WãKcJò±S–NÀØÜ$õ¥ˆ÷2xG7+Nü½'wwÐÒæXa4ô‘ ?ê‡ã ŠbÌ^4Ì´.'öh-‘}þ¥¯7"‡…Ó›_JH Ѿ›è–W­…±Ú ®Oˆ¹ñ¿$ÔÀná ½%j”B›ˆØ~U7ó¸ôSÙŸ•ü±ptƒ½=bÑ¢8´D^ˆŒò¤_é‡~ܪxŽ'%õ~€¹ã¬‰ãƦ_Kdص¯æXDhâƒFO …ÅQÍn7½ˆèGFI?nÛvJ>¼ËÊÙê©o”Á­ÀahÛQÊXÔ& Âw0Jà;ƒ` Ù#žt/ÂD >ñ£#P{ƒ:¬ÉuV‡{ÉwS¬BÐ%Çd‹ a:—¦Û úÀ˜ûnqÞ—A°ËË íæ¥‰|ÔKh–[üÜ÷´5‚Û”î6Ñ*ºñ­/æË–õ×ïbƒ±jU»xmH{³…Içûû%˜p…W~Ã$ãÊÁ5‚«Îë™X­1ó°lv… aŸ¾#àI)d6XáÍyPÉ+gà I÷²éóêEîÖ ª†§p…Ü(žÍèäÞ‰¨×2Eýº€Œ¾ù©‘x­¦åoàbù~W­^}ô3³Ùú×Je—,µ„* ðØz%M¿í¼ŸþOƒÜ330ˆÁ’[èA¯@3.5ÏZCÀSüš¶È`ð>îC¯D®’Ô®IYjg¡ªÚÌé£0 V Ü•¾KgR²Êïžp¸}5§6íH¬•¥;Ðm,N×-{9]óÜ‹p |v_Š0Ù[œ`ï53W¶j ò™é陳ºU6›YCÂÔF¾5”—м2»=Åç“1ïx t›ÏÈ­ž÷´³u!ê¥pº¬–R¥°@v¡’&ÖÛJˆñLô¥(mR#yWE°’/§e徫.éØŸFŸP™a.ÈÌiÓEíIÇ5^˜¿“}¯Æ¦«óCX,¿«¦‰Èˆ€œÆ •Yâuì0–Ò; K±‡ÖRy¥pž×Þ³Y׳ôRFÂ[ƒÉŽÍBYŒ×Ý3«óý¥Ö9)9RŸyïê`NŽ7oœ <“Åè~‘°ÇÀ®G¾Ãð iBå—cÖrÉž$âA[ŽuhÞ>Öêñáäñ|n*pðž>†$f{8ª$ 2ÅbüÏÕ +pG.g¢ê}ÆÁD\CnQÒ7-|3´~©ÚÆ?ûÒY¡×ð&Tƒ³X©r~R?T6B3L~HÝõZ?q~NÜçâhÕ8WЬQˆ¹øCë!K¿†jG@Q™á#ˆ³ÖcÞ_ýÌnWðþº/»Y@ª覄³]ÉGêv,/Ž›×lï±IIg8¯ò©™ÈÓ§%wÿŽ~¨bœ›Ýp•ô^r:~-êükçu¢¦j¡.2KÂ~+·D<ó‚€€SUìg¡Û1XlÎCvxÿ‰²î œ·Q—Ô°_!V¢ù·³ßèžT ¤)(äÝ —¼^§U}QÀyÛ­°ˆœ¿ x:à ÂÁŶMÏl¼|³ü¥ ýK7ú]´‘;ûܼ*6¦Xƒ¶bO/ÔOƒ¸ó.þ2bò)S¯LŽä‹I<¡­¢=Q0ñ=õþÜŽ ‰iESÝ% 3'QhÄdPÛÅø£’Ó™“ZJ{µy]R§^:…2ÜÕò²ÅgŠ~Òš9fg_¸Vn60.ø‰G½+ãjÑÀÈ—cÝ©¡ë¹Œ7iñ'püŠúŽâÅû“ã2¬åüoÝ—õá‘*0Ã=©;kå§jdûë¹b8ÏF¿I¿Æf“¬*&CÎ5 €Ç2YwáaŠV2³ôÍTO/È.›aá( ½cŸ¿Kµµ&n™ÈÙõlR¿Ðdt<…²þJï òTP¯@¼÷'³ ½`Qõ®¬–sã‰Áœ]ØýhÀD3\Tã\ƒâs.=pDïFL-QöÑßïîù1Úèp+øû ´â˜jbk¤Ë0Ïò{mj¢ð]5C¨ÿ~Ö„–:>‚>…/Ïs§´ÜP·Ö€ÃAا¬ØéèLÉ£ñ[·iÞdP¬ÁÚD^6»/¿sEAc¢ÍËcd¿ÐªÄA­·ÏÉ솴Qvþ¼£C……Ù)Œ¡ g×á¨Lôµ„ Ê0«CiÓ×,@—áiãéš®´ÅK[ïÆyLðìŠÒ@5†l4Æ{/ÑÑ~ùŸ™xÅEV®ØBîåz2°ª*«"…ºœ‘K……{Fâæäë„…e3îáù¬Uºª{ÃGú‡´þòö!t8u…»¸c?\ðÝ‹¥§èé/s×Tü²å—!Þ‘iÑ]ÕlQ‰”ËD„ïè€æönbG@:T­€ÂðI÷l¹fuæ‚ÓàuUªIHl,#*$FošnÞT ³ SÝTQ8lr>/¯A¾PäÓ™ -³ðçG}›asáŒÄëmT\Ñ;½pó"ýír³µÜº‡<&ËLF‚÷Yпf Ü`„nZJZï®”ùQ#(d%7a®ä@Ê)°V4òèÄVÁXžHMÝÁV)å·q¥?ùJPjðÚ]„F*»Ã¸L±2>Ì|IÁîԻ¢nŸ¯}Ú½z$MElÄgqW ßÈ/ÙÞ£OŽU»žj‹Ìü‘Ç+´v¶È+¿aèØƒ›0ÚùÙ®Áö`¿^_ „OrÌÚ35ì“Õ‘#²zêOø7mA ¨ö둾¡CðBÅ|{ †Â+ÕÃ}¼åË¤ÏQ‚fïšæ¹rÈRùá£àƒ™ž„-FÖ¬ÇÌ€uÙUo‘õt²ŒBJlÇBr 5©ODxܺ…aW“¾ïCÊüã 7Ú,¬[¼zÿ[· ?ü—Ðb¸‘oçç˜óÀ¹.hVšr³ód©JŽ/žÍ&™lÒ»òÙ//B;Iv˜Š{„"ù•Ø×(Ê¢¤ÉÛ“ B1çBmwľ·BË8Î×’9ìž1¢mòúBûˆ»€~ô„¬I;Šaìôþ¢Ù7Ý&£µ.8b Éê*ºÓ½ÉìG>Ù»7’”\H™Ay‰'¥¼]3Ñý•àœ2+GŒOøB³œ\m¥p;޳`fæÌ%+¬Yñu“ÛÞÝv#’½ròr x´:]­px9)ÈË¿}*å„sìLËØÁúéB3ÝH•|å>…¹Žÿ #![çÿƒ~}]Yë‘D•¡êÓûðbdŒzïåçÏ…ì²6W·ßž\¤ u³·¤0ÎÜc9^r2Øv Á9e%œ0Aš]5•è&Xȕݡê•;õ©57HËÀÖGVžàUÆý Bø´F¡žRX€-9hgëN¥ƒœÿ43ÑÎ×=k 7]ï\q0³•°º·àÜíÓ‡WÜnfÈLœDÊÐDNå’®ܬ,Â…éZÖk¯ F=ZeÖÖyPÿh2 LŽë˜®£þ›ÕŒj38v‹DÄ£Ò#‡÷Fç#Î{ äœäŒ ‡MG—ˆõ¼›°:ÓT`nª,¾M»‰”ÆÉ”T…þ•˜þ«‘HãPt¢ì5¾cÿ¨ËÖP·ë÷ˆ‰´Së€'7[EÓ††±«¤ ´‘‚kÚ]ƒ÷œ¼oýVœ—VÐû¼©_ÉJ |ÂÒáñ•DÒ#2§h ¨c#—?Vñ5­·Òäú.nhü€v¶Q>ñ׉sMk7^œÂÂó[ߙғPféë]…üÝ,RläZ½ª¬ò5ëGDD74KÀ¡qî)ò¢ B”ovX=°Ð¾¼>8§êiÖ\¢¹ÃiRÒùFÌk”½2´Ú°pŸJŽ¿Rç%‡Á=çòGJ†~º SdOœ…ÑÖŠ@þLÜÙM5MúàÓ4™$Ó5œqñÉÉò`ëÉ Þh½ë)7€Þñ®ç-¨ª],º«d޲$T‰Whu[CÃëà-í†åràѧë)^Ë==PlWðT|ÃŽ ¨vÀz{‘ÑšòÝð"µÊ‘øY/;¿ Èd±o¼üq¿™Ò‡À'¾e*¿{“GçÇøuDŽsìkPLð0‹øÂ ìáÑ3ïYÐK“ŸÂ*‚¾¢èœýœ W·œŽ‹{ªÄÊåƒLç!…‹á}mKéNq|¾_3Ò@„Ø,ÀøP~·¼Ƹ4ä9-°7øx›æMCl¼2¸<+Z¨þÂì#jTTG¤XøÃðOÃ^Á=æxÀZ[Mr[­ñ”DèË‘l¨$‡²KwÃI0Üw¿ f âÂZ¢Â!†ÀØõóHó( t+n‡÷ðÎpè>/ì*ž¿€'ø=K{Ìg¤ïÀ M D±ÚÆTR€)|¸zf~ºsWä¸ÊîäOÎûný\KQ ÷ñWÊ*jÚ×+}>Ë_m&Sôõ…bÑ õ±î³= ¨È‚åQ`vÅ:‰.»œÓ€Ža8…»=\¥šzd¶™ŽY.h»Ãg2ÿ§Piz‰õ^m¿8=¡ˆŸ àÕÐî>?m/67õ¾º‹yÇ´`jOΡÔýÈ©-jÛKó&6…»Ü‡Z盄… SÇÎlæ› Òóß%GRç!æMò?„]G*óûè®ç»Ìîåñ­Û£ ÑM3™ƒ}KÛÌkÃÄз)p,s82‘„µ‰ÆñdCÁÑ®>Ó~ª“²Âqsó¬ÇÆì昅4º›ßZÔVÁ31Õ£SÏHN  Øiœ›~ÒÛÐY“œµ0ùáêﺄ/ž¹Õµøå‡þiZsJx¸â)g𩃮xz]ž‚fߤb}{Óüø8|ì§‘PyµÝŽ6¯Ï¡Jîi|a0ã˸r¬Êãv“VÙŠ„ƒ“cš¬AïðmÔz;0h^6Ôëö *ÑpL’øÌ¢m_ÿâÜ£ÅE»Žéw‚ÍÇ]æà<Ð eM7n6ÛýH.ŒöÓRÓ”-]îÈÐSP°œôA;l¼þPguîÿhu×|¹åVÙ³ªÌšÓËÒ‚ U Zó“ââq…¥*-]¨VCÉ}Š Oè”d¾<^ßæ+;Ý–‚"&ì`;±˜í%Œç»9©U§HÓ¯qòQ”KY8ý×b†6Ëío¤ÝYŸÆºõø£„»NŸ}hhRƒ2æXâØ™[-bƒWÜ Fîà„.¤d8i4¯ë3õõñµí½âaƒU¨÷ §ôøkøU6§âh› nòyçõð"%¢»yßÕSV5O:(„v~äj{²Q.¹9^ 𠯧D‹3mÄ¥åºó>_D_0ÌÛ~K‹‹Á¬˜éVN²¥¶A™Ð¿iº„˜Zöj™fŸ&úXL%¢°õ”¶¯• /`2qÌܪyˆºE“¢~Z̤a|‡ž>¾ñëkEàÉ¢Yôæ¤`Á§ïg¦Ú÷’Gx6ÕôIäŠQ¼³ä¦ÞÅ#³o¤U0©‰/jVÈÉŸ‡pŽà¦- Âpçè»ãó¾'˜;ŽèÏUz“uÅáw”äJºIL[Ðc; ÝÜÕù*û‹PÄ*« æ<3’@¹ìV¿`—¹PÁÈ"êni)½–%ÑU7§Çƒa¦;gÕôH‘Ãò^ÁÜ3ÂdÏbÅ.Èë\Û*§ ׬\h¬ØÛRóz•.¤Ìk©ü¶½ÎŽÍÔì»ç6€Ó×0ÖÍ ÖÌ7«ÆλeÒ³ã,S¾¨-n6B8{è"‘Ḧ 's_ª+xeº–Ãþö{»"ØKs!ˇ;Ó‡¥$yó]÷«—«¯G³·þoþÑV¼§2sâAGÙ/.p$¶›A¡±¢4ŽTÝ#Ý%3t ½ôÒ¢(£`—®ÜYo‹l×o2. “®1§Ô9íï¾ëm&tÞBbÖ«W~ <Ñ{¿Ä´olXÅ~Ð3˜Ó§QMT`k«µžEÄÛÓtÖ7׆BŒoynkiåPo×ö€ÃiÃ;[Z×Â;¨—ܱ08îë*îìÔoð‘¡ãiUå%Üë ¹c8&oþ’²WwÆqĜ׽›ˆ‹©R{ÒÛíkUÝc0×m;b¥ð)ÀÇÖTé„ÀRëóÂc»©îÎâ³øwš¨¼«îЀV—0ɪØ¢&‰¶WÆ(¨êœKæzB¨ÐyÆz!ôÜáÆáò+ÏÔî¼µ§÷k1Ä3[UÚ7¿”¸Úåñj²%<9™à>ö;™\ _\•ì”i×M%§¶c) ªß•¡žb¤µ÷©ß.Ú«#5Å1áS|¤y”ÙW ôY†¶ü >=»²ðô.Q„Zò¬Ï6p£¬æ iÊë}ËÇ–† ¹H©•3›Iÿ:kì§lÝnãÍQBPKP‰ø,ãâ„ĬvB'cX‰;è7²_³@ éßPÁ_gÝ]A…³¢ÔÀKÿ‘Wá•íVÊM1Ž¿î†)çÈqõTø|hÄW­KNÁMåûãdRÐÚ\6ÏVØ• £ƒÕE üó’IpšÑ¡,'iÁÇ¡¯ a–+‹8Jg©¸1ïÎp«9Hâ…áÁ½{èø¦£ŸÓ¹@%¯" áž2£Û½Âk9õâ3uˆP~,‚¯*õØ` Ï’êNžAV-[eÂÄ“e}•×:¦ÍJAº@=3Kï„^Õ¢+^ÞÄ5ùt\éÚ£ÍR¶¯Ã^h AV›xà I0—0 Áä‹ak¹ò5ÁߋƞVÿÅ?9±8øÅ[ﱊè¼ñÈèNnAMøA„[ÿ†±vRóÝ]øD²Û²}¹I&ÍZm¬ƒìQâL@nµ—ýÀþÇ‘èG+v r˜…jØi6a¯M• ]À‡Á<©tÆN*Göª˜pqêðKœØOv埫Oð9õîÔteF³sµ¸­r¾Ø>ñŽÛ0G.vÇû„Ïa+];Œ®¨Òª„Ð ­ýÇ‚×PÛ¼c¬>ö©>Ñ¿µ}¬´¹'V°’2–†ˆG”Lò©–ãäøpà‚`ª•¡ã¼²GÀ±­1pŸ[Ò;„ëõ®ß¢zm\÷ôK÷H²–'òPÂtÏ(¥9ô=”ÑÀÔíp; ~NgL“›™<Ë´öÖ2ÐOØW¨#ƒÑ$"‹ï„§H*CÀbëúß÷¬Òqz¯G=|ys:É`/¾ 6/f-ui~‡ìÝ'ˆ»2®ŸÆ4’s¦'ÎtW]‰~nW˜Gcq˜Ž8|½¥N¯žóøfa7–üaŒ7Rªt—S|‚°n¶ ²¢h‡54„=Ú]g­.¡óK’ FÔióh^a>3/qÑÚSb¿|ïÕ“ßU‘¾Íc(×t2Õ1½»ÑÓN èÕÈZ\k×|ݯ!žiA“ÿžaëÞ2VrOÜ1H^4|{kÔiH6³SØiÎöm=~‹£¹Z!àÜ]«„øëÛì¦xÊÝM‰ §O\ñèõÿ _÷€ºÂ³±v´- ”Æ" z~9ðqU©xÜ¥x ˜Ÿ<ζæ_yWlO·×(ß}º› {Þ]‘ɰÁŸ¡îô2n}ΤDnÙ䥓y(±6—dš»Ù·Dפxà ˜Ìηm{ç\ºpÉîânžêè"8œú‚2£m¿.Éo¿< dÞ>¨4Íò¢¬Êèw Ôi'Gõ²g7›zž0ÉáŠ^|ÉK8Kn:+lÑ]’,ȱÉ9å *^V*ÏìN{?c/«™¬Î´<%yR—åÌV°¿7ĨA3ªz¦ãefêÕ¿ÎÂ%¬¬Ê²êV?Ûýb2|ÊŽv“Ý&Þkë ¡àâ/ì'‡Ç‚g¡sÑ‘Óëì\ ¾ <\%Û=íãwÂS[“õ «ýÄ(¢¢¡W 2;/G|½HÑìB Œ[8N&8ÅÑ&Æ*÷&=çgׯ°3svŸaç?â˜Ïó¯¤ ›ð¢ö¶âiÎýsj˶<êÏí[¶î·¶6 ð*”oYŸ*Y¿=g åq*ªŒ“š³½ø1,Á¸ %¦¸Fc‘;Ÿ¡ÓbK»ÿŠo,¸ßÉ’Ó'ß(W[¡Ù¥ÆÎúZŠ^䆶(Y‡«²Þþ\ áv꯯™áxîŽb“ J[š1ÁÑË=ÙÖc=ê{ tORkS*›lˆk¯p™§:¯¤*|IñfÛ-¾þö‡øÍ5´?SøvQ%`Ìdtçpé¡D®O¨`p_`͡ѺÓf†aÎÛƒ‚°\Bá[l|TK^ÉQç³ÒËjÜ©Éj¹ mZŠÉð‹Åcí6Êgø<ìy‡½_ø„£[Ë=€Ô‘ æf/¤9e›5üO5(dL^[ $¶0]Û7öb(¹}<ýšTµ*ÎNv’,õ Šúl€“Ï+TeWˆÕ±$×ï õ\=˜¤í¢¢ñÔBp‡7Ÿ'ó’k‚M[éé¥Âa´-·Kf@U«n ‡Ïë¶kÎ÷¸ÁÁ2~büþ.w)ê¾5Iûò¡¤äÕþçì+¥ðH.O¼Û¾pYt¼¹ÛÍ?ù~¨e¬Ò~WÌ]ëæ¾ëø *ç¢Kífñƒöñ›…evúOp€AÚÊ_[Ò"ÅûÞ´.q{U¸–ú:u!ÌA ô ª…R',o™ï! lQÚf5™Nü+aWÆØ;3é³zÖJðïIb͉LôÊÀäg§í©‚ÌÈ´Ù««O|<5–täã–±¸ +§{Wc‘q×Åîut~ &I³“2æZÔ๎ZëÝè‹GQ@¯¾ ™9Wak\éÜJŸ 'µÂÝÙqæmzuù$7‹»ùâgÉz]ehÿê)Mf[ø YÍ@ ÑµcR¬Æ¥¥i#~.Å´±ÏT½oÇ¥·þ½Ùè×yJ‚ávu¬¾ûaµcÄÍ’AC«»zø£ìBõžù3-Š-£@ÞµÏË£–5HçÏÍ*C;—2w*‡.‚UF\pÆ­;& Èö»?E:1_«à¬Êþœíˆ“KÀÈ®aYßZ3§äJEÛYw5fíkÚ@ÆÉ%€gÏË¢$ä’N¤’ß»¯û™T ût°¼ Ðs}ƒÌ¿q§øTŸ Š›Ù.B#I’¬Aê(qåìþá@íIJ¡•µpHiE˜ŽìYT«MX;@‡cclñ¢ª¦:hœ êm(Ž…]Ã9+ãÁG¬8FÖ‹á ÓŽà#RÒ³‡ÀÙ ´ QÄxoñûóy7LrÂâbÎ6°òf@â•Ó}Ç…J-´ù‡¦é˜ÆgÂßYüKUûňºúvý®}ºm™5ãX‡¤^ùX+J®%9"üUg»X\M ;Fmr˜òî Šô°—ƒöÛc10àNÄLjQ£7Wý΢Øz$Q‰”%º÷øB½±¥Ã•Þøq?Ϊœ‹ô]ZåD¢ú*«›Š ŠâàÎ+}nQh™Ä4*øb9úJÞÍÚ›K Cøg-óµ\»o €OLEoâðdSÍ´¦›4×HÁy˜Zl­Ù‘˜’iš4¯k¦ÐJ½¾|­Ê dÒüàÈrˆHŸ¨È¥’8– ”3ÖT3^“âZ¯bQØÛQ8æŒìJ€ÄÂ,qXœÑ¯}ú´ÚÏ–ÄéÜfñUvÉZ^sC|ÝRö#§QhÒø“Þüvz¾³ýýËøn%™ ž-šÃãGÎi*IV²†Þ*%z€ñëLƒP @G´­Ô†sòˆ«?Ês’²ì8*Ò—©@¡ endstream endobj 752 0 obj << /Length1 1341 /Length2 1640 /Length3 0 /Length 2508 /Filter /FlateDecode >> stream xÚS 8”ùo96MiÛ’ÄÆ_ËF1Wã:Éu„!¡Pi}f¾1ãûÌÌ7Æ$Šƒ#ªe•Í¥ËJX]¤l”Ënj5.QëRZ‰Ú²±Ä99ß Úöœç9ç™çùæÿ¾ïï}ÿïïÿþ^#o_3³17£‘©6ÀÓ×Ñ“FT*ƒL¥ÒIFF~.„ßùIFÛa±ÁP›?!œÄ0„>gW1¸K…€Æ4 𥠕 èTªõ; &¶ÎPždàŽ¡°„dä„EÊÅH¨·ïÀ˜khÖÖ–¦³éÀ!#\ž.€#ˆ¹øb\Æå•0f p<Ò†B‘Édd(BBÆÄ¡v&¦@†ààK`qÌJÊÀ Š€ç©‘IFÀO€Hæ¾—Ab!Â…Q ‘"Ey°·_7Ø £s`ÎÀÌ? ‘iïËÍg+ !èl2Äåb‘*GÐPÀG„0ØÂæñhÜ@(O „„ŒÈ‡¢ D…€ÙÖ!ÀvØ ‚á,çÚ%Þé]ËQó0ž_ðq-/ŒP. Œ?}•IåÚÿ-÷Ù”ÿ¦re•ÿ)ô¿vÄ– …³qã9ÀÄ¡D(ŸC¸H…°ø¯xna=a"økÔ ‡ˆp@C…°‘h˜çà\ÁœLfý0¡þs]P.ÆS® i ±’“¨„èÄÀbhÄ>ñàèY Åp"DJñXÀÇÄ$åH,€â¦tÍZ„j)>ï- („ ‰gÝÌ•ŠÅÄÍ—hë=»­0 sI]¿`\ÛİK‰Õ“tefÍts†ßSÇÔýŸ¸¬Žzº5Á‰õæ5#?­Ó¡öÞ`Ú›Þå#ô¢™«áZÔðÝ¿îÍN³Ñêº\­Æé7ÝÛº|ãÔˆ„#¥zÔÔìf ¼P­—•>·ecöí&«LE£÷óž¹²¾ª,›ø^ðráº+ÏÉKTš¥-Ô¶²b,QI¼îw½Ìñ¢Cû½n†’ßí›_d®a?{“}óù¸¡»Øô¤/[wxX#Òc,oØîØP½…ŽGp+h7zRï¢=nœ0Vo"QøntýMT^3ôc—ôþT{¼¨?¤«à­vBáx »Æ÷^z^µì¢öðuæ ì Ë,îhÓT\nÞe¾äÜC×ନŽÃûV8a‰äð'ÚÕìÜÒ\AQF9{æÓÓé›Ô³ÉiLuï‹d6ËE¡Ãpï Kíkýy’¿æÈQëW졞‡þ¯oãuT-=Éœ—ÌE_·ª’êÃ7wí¿,?Pÿúú¹¾k·º~ú9Sïâ:¶âNA"nòíà–¸ÍÝ¿þᬊc«k'wÞ ÂêC¶Å{ZZ4??-ºM‹;Ý9“ÀÖöÉ*éƒ.üá¶Î©ì+£ÌéÒg•êä¸úãÉã{Ïú5:íoè)x¥Çì¿êƒOÉlÈÓ¶Ç|›×Mï¿ë°fvæúRCfûu+ëÒäæƒyQ§¢¿«:Ì °BæuAÖÛ žK'*¤ &ŒçK½óTm§~ð^¶ÖíLÕOaÁ *©w{‚5b÷YÏ>°ÕmOþZ78«1ç<÷éJrÉàÌäréS·¢>©‘Õ–ôâFÿ…í©R R]µ³¦ÁKß|ôuÙãÁ/®ÝðtC¿²ußhZÚ’3UG|nê+ ª”ô)dòû[Ë×~™s`ó'£mvtµµ>+?:}cô Ò-~Ë"ïÌÜätîúò5ªGeŸX–}ím×±÷…ÜÔ±®'<óIåNŸÂGÌÃ;C©¬Û{vÝ!^®~OžZa9°0®[ßÏ×Û¸úX #ȾUQyèùÛK’˜¸Á„”šÊ™®W9+ÈÓksnú)Â)±%mÎS}+Ýßþó—îm tÿbWÆ¥ô+¥šÛF*Ç¡”6;)µ¾jçyùÊp¿R™®Õé¿ÇéÅ{<}û„¡w•ÇYvV=ç~«wýÏwšruÏq´ô“†cíÛ|—ñè`äD\ZuKkÍÊ–¸§ SŽZBÛÙ—>Ë,È(/¾ Ò¨=trS긟šØðG¯Uñz6xx Èûüåìîq^K7oF®jÅ™ü8ØÂòñ°ÌÑû‰£)æ*Úíg¿Ýï§7âq\_:miûÒw©f-Éy{ØŽ Ýƒèʾ–šYÌõ}y֥ѯ¦TtÎŒhõ4$æåú9%c!X6nÜlF¹´É]Y™ƒt(ÆŽœŠyž“:ÅÕ|ÑÔ»O®÷ÖQG.+äÏ’5ê¿ô/­àØ Ï¥žh)´÷>»gKîñ’å¡ÛíW× ìEZBýÊw·¦ÉSL|î }^=R·ØÃ„4~!¥FÂ)vâ•dv¦lZÿ5ëSí‹AûMm=[í³o/?JóÃj&N=(°ÛÕû¨ixkË“tCιbãò¨½Ùi2ÚêŽÜM­m‡êò//2Îñ 6ün`Ã~V“õ®o»^wK–~Z> endobj 747 0 obj << /Type /ObjStm /N 86 /First 759 /Length 3740 /Filter /FlateDecode >> stream xÚ­[Ûwœ8Òï¿‚ÇñÉÚB$سgÏñ5qb;ŽÛ¹Íî<ànÙÍ =@g’ùë¿* ÚÔ¤¿}°R©.¿ºH[ „IÀ$\#HÕ4Lh„å!\E@ShÁC ?2î(†‡P![@.'”É€…ÄQÀ(J€‰ŒS <<`B0 €¾H&A™D8!`1C^xHHg<à¡é‘ 8M¢ °qÎD°€‹( ¤¢pp¸Q!JQá‰rð&&2aIf¬dà0JÃ0BÒ Øˆ|ç1ðJ¸‰À_¡àF‚É"6°Obn"æ*P®ŠbAD#€£0EX=A1€Op˜|Qˆâà tCŠƒqA¤Ð|à‹Cp øb C ¢èà® E8ah Ç$Z.ƒJÆã † à\¬V NŠ̃p%à@óU,FËÁ˜Ç%i ÀFIÄÊ q8¨PQ•Œ ô†±„€* I€¥ ­Ã¹¸C3”‚†Bñ‰‚ØPHÑЈW&©Àe¥ &¿”ŠàŽAJ(€”Rƒ™ âY†£ ƒªg€H1I 1& Ò2 <*Æ”bh^Ì1sàYa†2< èVà‚Ã]¬&ÿúׄÜ[é€\”Es¦ëY•­š²š˜ç›t #oo¦o?\½8½ž~Žž§Ou ,ÃÉIù5øÏ!¤üa¡¨Z%¿MÈq=ÓEp‡rš®^éìiÑ@zð A-8vHsÙ¤y6;.žr  L½ü8!ŸÚY‚S²H«©n‚_HZ7ºÊê?–i³ :×KFò´i²™nÊYfź&…~J›¬,ê<­dUeK}`¾È@•ÔûÝäßÿþ! ^]Ü¿š÷—4ÜB2†ý~A¢Ÿû€ÁÝÂ19!§äŒœ“ ò’\’×ä ¹"×ä†Ü’;2%÷$%ér¥«:-æäÌȬÌË~/—)™Mt1GdÉcöE“Çr]‘'² ‹o«….HFþ 9Y’‚Y¡IIJø½" 0+çäOR‘šÔú p6¤YTZ“毒¬ÉòùJ¾‘¿uUöñŽﻫ«»‹{Äû~Þà†>A’‰tЦ´‡6>nÐfŒõÑ7X'?ˆõ+@Û"ý¶Eú=ùˆh׳,k²|®IÚâU:ûC7¹~lºû ¥B1/ó<­0"fXÿ¹Nóíaù½˜b½|€ gOÅsŒÒJF­¹³JÛÀ­r(?×e£ç¹Ä:ûJl¥ü`8!Ñ"œg7¯o®_\OO®·…ÚÇ!,M°@ è¾Ì)!å“<4ÜMX*ž£)¹ÍKˆZ-3À¼ïó{"×yD"dÆIZk Èë‹_ßßœBšž·zþ*F"¹ÈªºA`Ù«´{`0çc6o5ðî¡ýåÍÉíË)jÿäU/‡êG=Û¨—Iüóê?¼yÿyzcÕ3úxä=Û¢^ÁšýÓêo>ÞÞ¿¹5êã±vµ'Éì¡ÿ¼öOŸ^¾ûøÙho—„¡l·T=‹úOpzyyuñ 8÷Ÿ~'÷ÂÈñõoÞÝßã‚xí÷~”{؆ø©“{{¤þõùôøìƒQ/=ÚG©—ÈöÒq~Ÿ²?›~¼½5Ú=©ÇÂïøîÖ݉ÿþóů'¿íÞ¶ÃØÎÂãnæËŸWvõîõ½…þÄçý8ñb×ûØq>üyí¯.§Ç·èü×õQÚõ;žSsÉI?}wúë)ý'éX¼³ÝŠÄ}¨ŸL?½>þˆº= óQÊõ0݌ۧÙßœ]]à àʇ:%œÛzm"ö(öã›O¦×L¯ÚíàЀQÎñ¾n³ÛÀ›»ó7'ˆýtêU?Ê:é¶úØE_í¡ýdzýæÔh÷/ô|”y1óëWá%÷úüÃõé½Ñïíõ"üQõRí±Í¸»}wvÿÒ?½ÚÙÎ’’÷ÐþúÍôýûs£ÝSób”xÂ-<á4»xä'ï¡òÍN:°ÇÑvpâ*OF%×k9Œ;I¿Ç*3<ÔGô;ï¬ðÉÞ,Cõ|¨^õvWÔm8ž’¿MŸt ‡’rÖ ö.fÔã,Ý MÅö‰.ØÌ6Ý€MCŸ3ѧþ¹wìj®vwK¶1ÌÝÌ[ ù ü6ú5é=dñÝ&´ð_ÎÊÙá´I«æ °¯R‚_.½<¢ ’¹„ðzŽp))‘Ca8‰;Ž„vÕ"WÙ2k:;¶ß†vºÀé®UѤ¾«QÀ²èr(°©]–,!F#]G$ð¡M¾ŽgdÐTÏð“ÌQxtY4U9_›Çÿ†"lJüý˜Y£ñn™}mÖ•®ñ>-æ©,óamñéäÑ£ókÙ?•UÖ,–fÞcYù…¢Õ—ÀŽN×ͪ̊Æ0êfQÎ ¨âG7e±J+𨩲™c_­—YÀ3Ð'Ž®ËGü]é'x®ñ›Nƒ)ÑÑñ|žámš#û,]¥YWˆ‹’TÃýϰ¿Uã¤X?Ô›(„€ @P<á¬yÚ¤Ùf½Â ´…Ä2¾a<¬ìèØ8;˜€úkº\åÚLMFSv~}˜gè­y¶t]Ô+=Ë3mð›ë¢6¸ N=Jèѱ—}I«,µ‘¨¿-mJýŸòrf>kÖ‹ì±Ñ[2Ïñ†GEÌ*vGÑËt ЧÅP@2Ê¢ØÞjw¥‰€*4‚–eeD<éBW6ÿ–ë¼q¥Ãju<|Mdü÷Úi5¬QQ„Ýh¹³ìQdäÉŽ`›g38|ÎõJKM+®…~U•«²j6b~tÛÃâ¡,›º©ÒÕªÒY7Pòie’KWUY‘r —¸¦:Ç'+ YXÔÍWÉggårU`³¤èŽŒú_÷ÿmæ® ”ä“ô›îò¶ëôè\¿4Ò£]¤Oy–¾8]¤ë/:]¿x[]½ø [§²0„•”¶G=;å|Õß^Ü¥PÝÕ·Ž…»R_VëâÅ•ÎêÙÇcWÎxšÍ0Z‰CzÖG]7³Emà å;+{‡‹[EŽ ³Œ-V+S¡kW¦«Œ.e5×5°Kè#`g{® ª:­±ŠÞàß(Œ9¤Yµþ{ µS ~Q/—`‚CÇ=†n›îwr®—+ü»š(µÌ3Iì†d®1ú_iƒä(t‡ôc“=àŽ«GÌ1ýA%îþdâz6C_Üi‹4ÏqR¡aH„~7G¦Žçú}l9¢"[¢t7%ºi–)®wÕ“®€ 6 Z×c2¹¡Ë–:*EoA$Ü¡ýžÎʇ´fÊá÷ºþçs,¿¯=“ýsý¾.gy:[`¹Ég©yZ ‡˜K4vÇÿ\CãlXVWøWt£1èV0Ûa7tU× Üä#ÿ„½Îu6:¼~gê,ÿ¢+ˆ䟄ê9À?tÔ|Ãn„ú!µðð†c«Åèíû®_ð/TÚ}7l)‹df1шlŽ2±×—±‰ý‰#ÇœQ<âÐp ãA‡É¡mÂÂx½C—ØL般ÌFäûç(çúFõù·{ ŽL7š™Ó¡ˆù˜Ž›—XŒé›K8¦ƒ1£c:ýd´Õ cØ`Âv7`Xaö ý€•Ýõ˜=ÁÈdN×õ;RˆI6`£¸—éÓ0»h¼ÕjkÇ3óÈâv³±}5Ý‘¦FÒ#A Öç’Hâ=("ì‘b$v:ϺŸù¶˜`?lU¯Ò'ƒY‡®}ÆTî÷–‚‡ãöýtKÁ-|׈,”óXl± #Þ± ³»?w%B—‚ñBõ¼A„âÅx<ŠìFë†ËožÝ˜+aBõìb˜NÝ¢d)¸Y–.b «¨[½-ë'‘^»ØÁ3Ó³"|[B]yëÁ Ãw.Â-Ú‰zVà[åzÃñœùÍŠ6L~³8¾ŒR®\G{ñÀº†K¬Mì7ÝçÏÄÝWYç›ÉQw+€ÿºœkò¾ÖÏŸpß®tql,žÿ>æÿY§’² endstream endobj 788 0 obj << /Type /XRef /Index [0 789] /Size 789 /W [1 3 1] /Root 786 0 R /Info 787 0 R /ID [<9A40CE5FFA24986404FF7B117F8BE44F> <9A40CE5FFA24986404FF7B117F8BE44F>] /Length 1935 /Filter /FlateDecode >> stream xÚ—Kl]W†÷:çúÞë$v^vb'q^ݱãı“ØyÜ<ìıó°Ä؉ß/`)B‚I; HhOÚªD¡Pµª´ÕN‰I¥] *U•ÚIÚ*@F1‚Jæ~ÿ|Z{ݳÏ>gýÿ~çl÷Væ\æÌ9¢s™ËŠ‹D²:RFîÍ”È•È Ðlererý4+ J®•Üyš`¹ äÎÑÜvÔ‡¯UÉ¥ÙšÉm#×Gs'ØE®F®—æn°‡ÜCrghî-õ\4r=4[Á>r/;Ms?h#w‚Ü)šíà¹;äºi‡êMïȤÙ“Ó³tÑ<Ž’›!×Ió8Nn–Ü š/Onœ§©?ÔC·Ò\OªWлé¥û͹Ju9Ë]$…j¯bï  àºóDz™SDõWȪÝ^ÒJóË ®€«à¸Á¸n‚ap ÜÀm0`®é°žt„!÷]"Ú $ír£DÍ ìT¼hí<ä^p´`Ÿ}Ô}ý7X0wê™z¦À4˜À,ÐÅÁ°î˜C¡z4Ïh²Ï$¸ î10&Ìõ¾„ΩQ¡Ä„Hi6âI«!—Á Xk`l€Mº1nb’dKæjj2é’Ä«æG" ¨:̲7tæ‘þ¥ˆ _%Ü”pSÂM 7%ŒžÍÍu«s+5fTÚ¤Ç.ÐF¡…H-æ¾7T_^ìR_Œ™ðdj3÷MU-áÓÄìIÌž„×6K‡@‡¹§oêºÃ€I’ަF:nîåOõ/öNØ;aêÄ*XëFbAIx2©â—@¹WfÕw€g6œ0M`eHx7áÝ„w¶MØ6aÛ„m¶M#``Û„AIó`àƒtÙÜ/œ†¼˜ é.£íõ2ý¶«Žg#Î9Û³UÇ+kÂfi àˆ„Ò˜¹÷>Ò­0H ‡¥ ÀX7÷Ÿçº¸¶-ÈMf¯|.·«›ßÝ@Kî^Ð XYkûfE;`­‡@8 Ž€NàÁN³¦²? Žã€%¼Ærô ]à$è§ÀiÐ΀^ÐΚ]™vfsH±Ž¿Úâ»à8΃~0.ÍäKà8avô¯z¾Ëà*¤ú= Òc`L€ðÌ‚Çà ˜ ` \7;÷ªî|Lâbg à&6]ß#`Üw̾ó¥þ]Ë`Úì+Ê-9—Í!H­U³·[õïX`Óì/õÒýïÛ”î}ªµ#Ê>+f?þÝ¢€¯b8n¹ÿP¹m–ùàø©/ŠX*²ŸÇ’ÙÏ©ëpX¤’'F¬« Ñì“wu RÄÛ–Í|¡&nЏ)⦈›"‹8'bXwÓ}º#El±mĶÛFl[̾’ªG 0pԠݲæKò=[eÀf_ų–WŸ©ö‰Ø'✈Zµ"jÅa€P±NZÖö{uÃasEܱ^ÄÏ?G „ŸãËn «Çž€Ñ<âµxŲ±Ïô/ˆ˜:ÞÃ>*ÄU€wãu0hÙ¿^FL,±hœ$bš¸V¶ˆ˜5Ž[öuÐhX9â∳#nx7>Á$˜²¼ùmõX·üÚ]gùX‡šìlcžÍƳíxÖNÏöî9«x,êµ½Ë\‹–·÷¨ï&¯ÐÇÇ,ïoäYï}àà ^ç5Ž8^§´#€cžï]€¥Åç–÷þI·ÒÉMG5ÎRžý×s òl½¾jùÐ뺎Šçèâ·ƒ€Ç7[>·¡:óc™? ºFòg€·|ퟺÕiÐ,ÿá‹Êq.öÁuÐkùwÿ¨?87ùËà `ò×€J¢Ñ8·{Žy¾ßríØYP9}ùAËòÝjÜ7Á0¸…}ŽÝ=[›ÇW~ Œƒ p°þyŽÝž•ËO°–À2ÀÀ~ÔòW·4ø4xÌ£I#©J]BTñ°JSµŸ·üÍ{ê»6¬²"õR¤Ht¨ õ»ý‹2ŸiÒÎf|ðA@£Ð¨_8bùvèèVàÄ@]‚¶"ä ç-ÿ´Y—pò¨' Oà‹  QÐ^F-à  öÚj¨} öဂΠ@@€€áåŸÉ4á¡åÿº¯hÒJý_)š²Ò÷+Ц­ôÚ;Šf¬ôëgŠYéùME³Ö°ï EsÖp±UÑckøÆÇŠžXÃËS4o oõ+Z°rõ¿Š­Ü9ªhÉÊã?S´lå—ž+Z±ò'ßR´jå¿ÿTÑš•·¾V´n•ƒÓŠê‚©hÓ*O'õ•å¬zaÖYå5=daVùó²¢ÌªÝ}ŠðKª…¾éô]…>É @€ ( @€ ( ùõ‰¢/(ôˆ…VV( @€ f@¡OíÝÌ€{ú|f­Úÿ´þ2#ëîÿ³Í! endstream endobj startxref 541793 %%EOF mixtools/src/0000755000175100001440000000000013060400571012731 5ustar hornikusersmixtools/src/KDElocscale.c0000755000175100001440000000634613060400571015222 0ustar hornikusers#include #include /* Implement kernel density-estimation step for location-scale mixture model (17) in Benaglia et al (2008) where each component and block has the same shape but may differ from others by a location and scale, implementing equation (18) */ void KDElocscale( int *nn, /* Sample size */ int *mm, /* Number of components */ int *rr, /* Number of coordinates */ int *blockid, /* r-vector of block numbers */ double *mu, /* m by max(blockid) matrix of current mean estimates */ double *sigma, /* m by max(blockid) matrix of current stdev estimates */ double *x, /* n by r data matrix */ double *hh, /* scalar bandwidth */ double *z, /* n by m vector of normalized posteriors (or indicators in stochastic case), normalized by "column" */ double *f /* n by m matrix of KDE products */ ) { int n=*nn, m=*mm, r=*rr; int i, j, k, ii, kk, ell, ell2; double sum1, sum2, tmp, h=*hh, u; double const1 = -0.5 / (h * h); double const2; for(j=0; j #include /* Implement symmetric kernel density-estimation step for location mixture model with 1 component known , as in Bordes Delmas & Vandekerkhove (2006) normalization before symmetrization must be 1/(n\lambda_2)h */ void KDEsymloc1comp( int *n, /* Sample size */ double *mean, /* component 2 mean estimate, scalar */ double *lambda, /* component 2 weigtht, scalar */ double *x, /* data: vector of length n */ double *h, /* bandwidth */ double *z, /* nn*mm vector of normalized posteriors (or indicators in stochastic case), normalized by "column" */ double *f /* KDE evaluated at n vector of points, namely, x_i - mu for 1<=i<=n */ ) { int nn=*n, i, j, a; double sum, u1, u2, tmp1, tmp2, hh=*h, mu=*mean, lbd=*lambda; double const1 = -1.0 / (2.0 * hh * hh); double const2 = 0.39894228040143267794/(2.0*hh*(double)nn*lbd); /* .3989...=1/(sqrt(2*pi)) */ /* loop over each f entry evaluated at x_a - mu */ for(a=0; a /* in order to make the sqrt function work */ /* First, create the function prototype (global declaration that there exists a function called new_svalues returning void and taking these arguments) */ void new_svalues (double *z, double *y, double *x, double *beta, int *k, int *n, int *p, double *out, double *sz, double *runsum); /* Next comes the function itself: */ void new_svalues (double *z, double *y, double *x, double *beta, int *k, int *n, int *p, double *out, double *sz, double *runsum) { int i, j, l; double sum; double xbeta; double diff; double diff2; double zdiff; double zdiff2; double zdiff3; /* Create the sz (column sum of z) vector */ for(j=0; j < *k ; j=j+1) { sum=0.0; for(i=0; i < *n; i=i+1) { sum += z[j * (*n) + i]; } sz[j]=sum; } for(j=0; j < *k ; j=j+1) { zdiff=0.0; for(i=0; i < *n; i=i+1) { xbeta=0.0; /* Calculate i,j component of x %*% beta */ for(l=0; l < *p; l++){ xbeta += x[l * (*n) + i] * beta[j * (*p) + l]; } /* Subtract it from the i component of y */ diff = y[i] - xbeta; /* square the difference */ diff2 = pow(diff,2); /* multiply by the i,j component of z */ zdiff += z[j * (*n) + i] * diff2; } /* keep track of running sum */ runsum[j] = zdiff; /* divide dot product by sz[j] */ zdiff2 = runsum[j] / sz[j]; /* take the square root */ zdiff3 = sqrt(zdiff2); /* put result in out[j] */ out[j] = zdiff3; } } mixtools/src/z.c0000755000175100001440000000072413060400571013354 0ustar hornikusers#include #include #include void newz (int *n, int *k, double *V, double *W, double *z) { int i, j, l, ind1, ind2, nn=*n, kk=*k; double sum; for(i=0; i< nn; i++) { for(j=0; j< kk; j++) { sum=1.0; ind1 = i + nn * j; for(l = 0; l < kk; l++) { if (l != j) { ind2 = i + nn * l; sum += V[ind2]/V[ind1]*exp(W[ind1]-W[ind2]); } } z[ind1] = 1.0/sum; } } } mixtools/src/KDEsymloc2.c0000755000175100001440000000306713060400571015022 0ustar hornikusers#include #include /* Slightly modified version of KDEsymloc.c that can handle an nxm matrix of current mean estimates (instead of merely an m-vector). This is useful for the regression case, where the (i,j) mean depends not only on the jth component but also on the ith predictor value */ void KDEsymloc2( int *n, /* Sample size */ int *m, /* Number of components */ double *mu, /* nn*mm vector of current mean estimates */ double *x, /* data: vector of length n */ double *h, /* bandwidth */ double *z, /* nn*mm vector of normalized posteriors (or indicators in stochastic case), normalized by "column" */ double *f /* KDE evaluated at n*m matrix of points, namely, x_i - mu_ij for 1<=i<=n and 1<=j<=m */ ) { int nn=*n, mm=*m, i, j, a, b; double sum, u1, u2, tmp1, tmp2, hh=*h; double const1 = -1.0 / (2.0 * hh * hh); double const2 = 0.39894228040143267794/(2.0*hh*(double)nn); /* .3989...=1/(sqrt(2*pi)) */ /* Must loop n^2*m^2 times; each f entry requires n*m calculations */ for(a=0; a #include #include #include /* simultaneously calculate m different products of KDEs, 1 for each component, as in equation (8) of Benaglia et al for a fixed value of \ell. If r is the number of coordinates in block \ell, then each final value is the r-fold product of KDEs */ void KDErepeated( int *nn, /* Sample size */ int *mm, /* Number of components */ int *rr, /* size of current block */ double *x, /* data: vector of length nn*rr */ double *hh, /* scalar bandwidth (compare to KDErepeatedbw) */ double *z, /* nn*mm vector of normalized posteriors (or indicators in stochastic case), normalized by "column" */ double *f /* nxm matrix of KDE products */ ) { int n=*nn, i, ii; int rn = *rr*n, mn=*mm*n, jn, kn, kkn; double sum1, sum2, tmp, h=*hh, xik; double const1 = -0.5 / (h * h); double const2 = 0.39894228040143267794/(h*(double)(*rr)); /* .3989...=1/(sqrt(2*pi)) */ for(jn=0; jn /* Translated from FORTRAN code written by Fengjuan Xuan */ void mudepth (int *nn, int *tt, int *dd, double *mpt, double *x, int *count, double *sdep) { int n=*nn, t=*tt, d=*dd; int i, j, k, l; double d1, d2, d3, d5, xik, xjk, mptlk; for (l=0; l #include #include #include /* Simultaneously calculate m different multivariate weighted KDEs (mvwkde) 1 for each component, for a fixed value of block index l, and same bandwidth for all components (option samebw=TRUE) final value is a (n,m) matrix f where f[i,j]=\hat f_{jl}(u_i) */ void mvwkde_samebw ( int *nn, /* Sample size */ int *dd, /* Number of coordinates in l-th block */ int *mm, /* Number of components */ double *h, /* bandwidth d-vector */ double *x, /* data: vector of length nn*rr */ double *u, /* data: vector of length nn*rr (u=xfor now, ToDo for any u!) */ double *z, /* nn*mm vector of normalized posteriors */ double *f /* nxm matrix of weighted KDE - multidim */ ) { int n=*nn, d=*dd, dn=*dd*n, mn=*mm*n, iu, ix; int kn, jn, id; double tmp1, tmp2, sum1, sum2, xik, uik, hk; double c2, det_h; /*const float const1 = -0.5;*/ double const2 = 0.39894228040143267794; /* =1/(sqrt(2*pi)) */ /* computing the constant from bandwidth matrix and d */ det_h = 1.0; for (id=0; id #include /* Just like KDEsymloc2.c except that we do not symmetrize. This works because the assumption of symmetry is not necessary in the case of regression, where the (i,j) mean depends not only on the jth component but also on the ith predictor value */ void KDEloc2( int *n, /* Sample size */ int *m, /* Number of components */ double *mu, /* nn*mm vector of current mean estimates */ double *x, /* data: vector of length n */ double *h, /* bandwidth */ double *z, /* nn*mm vector of normalized posteriors (or indicators in stochastic case), normalized by "column" */ double *f /* KDE evaluated at n*m matrix of points, namely, x_i - mu_ij for 1<=i<=n and 1<=j<=m */ ) { int nn=*n, mm=*m, i, j, a, b; double sum, u1, u2, tmp1, hh=*h; double const1 = -1.0 / (2.0 * hh * hh); double const2 = 0.39894228040143267794/(hh*(double)nn); /* .3989...=1/(sqrt(2*pi)) */ /* Must loop n^2*m^2 times; each f entry requires n*m calculations */ for(a=0; a #include /* Implement symmetric kernel density-estimation step for location mixture model, equation (20) in Benaglia et al (2008) */ void KDEsymloc( int *n, /* Sample size */ int *m, /* Number of components */ double *mu, /* m-vector of current mean estimates */ double *x, /* data: vector of length n */ double *h, /* bandwidth */ double *z, /* nn*mm vector of normalized posteriors (or indicators in stochastic case), normalized by "column" */ double *f /* KDE evaluated at n*m matrix of points, namely, x_i - mu_j for 1<=i<=n and 1<=j<=m */ ) { int nn=*n, mm=*m, i, j, a, b; double sum, u1, u2, tmp1, tmp2, hh=*h; double const1 = -1.0 / (2.0 * hh * hh); double const2 = 0.39894228040143267794/(2.0*hh*(double)nn); /* .3989...=1/(sqrt(2*pi)) */ /* Must loop n^2*m^2 times; each f entry requires n*m calculations */ for(a=0; a #include /* Compute the matrix of "posterior" probabilities in a finite mixture of multinomial distributions. The algorithm used is fairly safe from a numerical perspective; it avoids over- or under-flow as long as the values of sigma are not too large or small. */ void multinompost( int *nn, /* sample size */ int *mm, /* number of components */ double *loglamcd, /* n by m matrix of log(lambda * component density) values */ double *post, /* n by m matrix of posterior probabilities */ double *loglik /* scalar loglikelihood value (input value is a constant, which is modified before return). */ ) { int n=*nn, m=*mm, i, j, maxj; double sum, max, *loglamcolumnptr; for (loglamcolumnptr=loglamcd, i=0; i max) { max = loglamcolumnptr[j]; maxj = j; } } sum = 1.0; for(j = 0; j #include #define MAX(a,b) ((a) > (b) ? (a) : (b)) /* In the npMSL algorithm (formerly NEMS), it is necessary to store the values of each f_{jk} density on a univariate grid of points, since the E-step involves a convolution (which means that it no longer suffices to store f_{jk} only at the data points x_{ik}, as it did for the original npEM algorithm of Benaglia et al). In the M-step, we must set each f_{jk}(u_a) equal to the sum (over i) of p_{ij} * phi((u_a - x_{ik}) / h) / h, where phi is the std. normal density which gives the normal kernel with bandwidth h. Thus, the M-step involves four nested loops, one each for i, j, k, and a. In the E-step, we must set each p_{ij} equal to K * lambda_j * N(f_j)(x_i), where: -- K is a normalizing constant ensuring that sum_j p_{ij} = 1 for all i. -- N(f_j)(x_i) is the product prod_j N(f_jk)(x_{ik}) -- N(f_{jk})(x_{ik}) = exp{integral of (1/h)*phi((u-x_{ik})/h)*log(f_{jk}(u))du} -- that last integral is approximated by the sum (over a) of (normalizing constant)*exp((u_a-x_{ik})^2/h^2)*log(f_{jk}(u_a)) Current version: with underflow handling in the E-step and block structure, */ /* ********************************************************** Version allowing blocks of conditionaly iid coordinates: f is now a ngrid by m by B array of f_{j ell} values on the grid note: *BB is not used here, but remains in the parameter list for consistency with the npMSL_Estep_bw() version which needs it */ void npMSL_Estep( int *nngrid, /* size of grid */ int *nn, /* sample size */ int *mm, /* number of components */ int *rr, /* number of repeated measurements */ int *BB, /* total nb of blocks (not used in samebw version) */ int *blockid, /* r-vector (b_k) block to which belongs coord k */ double *hh, /* bandwidth */ double *data, /* n by r vector of observations */ double *grid, /* grid points */ double *f, /* ngrid by m by B array of density values on grid */ double *lambda, /* current vector of mixing parameters */ double *post, /* n by m matrix of posterior probabilities */ double *loglik, /* scalar value of penalized loglikelihood */ int *nb_udfl, /* nb of underflows log(0) cancelled */ int *nb_nan /* nb of nonzero K()*log(0) cancelled */ ) { int n=*nn, m=*mm, r=*rr, ngrid=*nngrid; int i, j, k, ell, a; double sum, conv, xik, *fjl, two_h_squared =2*(*hh)*(*hh); double Delta = (grid[2]-grid[1]) / *hh / sqrt(2*3.14159265358979); double t1, expminus500=exp(-500); double epsi=1e-323; /* smallest number; maybe machine-dependent ? */ double epsi2=1e-100; /* assumed small enough for cancelling log(0) */ *loglik=0.0; for (i=0; i epsi) { /* no underflow pb */ conv += t1 * log(fjl[a]); } else if (t1 < epsi2) { /* assume kernel cancels log(0) part */ *nb_udfl +=1; /* count underflow replaced by 0 */ } else *nb_nan +=1; /* kernel *may* be not small enough ! */ } conv *= Delta; /* Delta is the normalizing constant */ conv = exp(conv); /* conv now = Nf_{jb_k}(xik) */ post[i + n*j] *= conv; /* numerator = lambda_j*prod_k Nf_{jb_k}(xik) */ } sum += post[i + n*j]; } *loglik += log(sum); for(j=0; j epsi) { /* no underflow pb */ conv += t1 * log(fjl[a]); } else if (t1 < epsi2) { /* assume kernel cancels log(0) part */ *nb_udfl +=1; /* count underlow replaced by 0 */ } else *nb_nan +=1; /* kernel *may* be not small enough ! */ } conv *= Delta; /* Delta is the normalizing constant */ conv = exp(conv); /* conv now = Nf_{jb_k}(xik) */ post[i + n*j] *= conv; /* numerator = lambda_j*prod_k Nf_{jb_k}(xik) */ } sum += post[i + n*j]; } *loglik += log(sum); for(j=0; j #include #include #include #include // for NULL #include /* FIXME: Check these declarations against the C/Fortran source code. */ /* .C calls */ extern void mudepth(void *, void *, void *, void *, void *, void *, void *); extern void KDEloc2(void *, void *, void *, void *, void *, void *, void *); extern void KDElocscale(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void KDErepeated(void *, void *, void *, void *, void *, void *, void *); extern void KDErepeatedbw(void *, void *, void *, void *, void *, void *, void *); extern void KDEsymloc(void *, void *, void *, void *, void *, void *, void *); extern void KDEsymloc1comp(void *, void *, void *, void *, void *, void *, void *); extern void KDEsymloc2(void *, void *, void *, void *, void *, void *, void *); extern void multinompost(void *, void *, void *, void *, void *); extern void mvwkde_adaptbw(void *, void *, void *, void *, void *, void *, void *, void *); extern void mvwkde_samebw(void *, void *, void *, void *, void *, void *, void *, void *); extern void newz(void *, void *, void *, void *, void *); extern void normpost(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void npMSL_Estep(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void npMSL_Estep_bw(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void npMSL_Mstep(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void npMSL_Mstep_bw(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); static const R_CMethodDef CEntries[] = { {"mudepth", (DL_FUNC) &mudepth, 7}, {"KDEloc2", (DL_FUNC) &KDEloc2, 7}, {"KDElocscale", (DL_FUNC) &KDElocscale, 10}, {"KDErepeated", (DL_FUNC) &KDErepeated, 7}, {"KDErepeatedbw", (DL_FUNC) &KDErepeatedbw, 7}, {"KDEsymloc", (DL_FUNC) &KDEsymloc, 7}, {"KDEsymloc1comp", (DL_FUNC) &KDEsymloc1comp, 7}, {"KDEsymloc2", (DL_FUNC) &KDEsymloc2, 7}, {"multinompost", (DL_FUNC) &multinompost, 5}, {"mvwkde_adaptbw", (DL_FUNC) &mvwkde_adaptbw, 8}, {"mvwkde_samebw", (DL_FUNC) &mvwkde_samebw, 8}, {"newz", (DL_FUNC) &newz, 5}, {"normpost", (DL_FUNC) &normpost, 10}, {"npMSL_Estep", (DL_FUNC) &npMSL_Estep, 15}, {"npMSL_Estep_bw",(DL_FUNC) &npMSL_Estep_bw, 15}, {"npMSL_Mstep", (DL_FUNC) &npMSL_Mstep, 13}, {"npMSL_Mstep_bw",(DL_FUNC) &npMSL_Mstep_bw, 13}, {NULL, NULL, 0} }; void R_init_mixtools(DllInfo *dll) { R_registerRoutines(dll, CEntries, NULL, NULL, NULL); R_useDynamicSymbols(dll, FALSE); R_forceSymbols(dll, TRUE); } mixtools/src/normpost.c0000755000175100001440000001130313060400571014757 0ustar hornikusers#include #include /* Compute the matrix of "posterior" probabilities in a finite mixture of univariate normal densities. The algorithm used is fairly safe from a numerical perspective; it avoids over- or under-flow as long as the values of sigma are not too large or small. */ void normpost( int *nn, /* sample size */ int *mm, /* number of components */ double *data, /* vector of observations */ double *mu, /* current vector of component means */ double *sigma, /* current vector of component stdevs */ double *lambda, /* current vector of mixing parameters */ double *res2, /* n by m matrix of squared residuals */ double *work, /* 3*m-vector of workspace, which will be broken into 3 parts */ double *post, /* n by m matrix of posterior probabilities */ double *loglik /* scalar loglikelihood value */ ) { int n=*nn, m=*mm, i, j, minj=0; double x, r, rowsum, min=0.0; double *LamSigRatio = work+m; /* Second 1/3 of workspace, for frequently used constants */ double *logLamSigRatio = work+2*m; /* Third 1/3 of workspace, for frequently used constants */ *loglik = -(double)n * 0.91893853320467274178; /* n/2 times log(2pi) */ for (j=0; j #include #include #include /* simultaneously calculate m different products of KDEs, 1 for each component, as in equation (8) of Benaglia et al for a fixed value of \ell. If r is the number of coordinates in block \ell, then each final value is the r-fold product of KDEs */ void KDErepeatedbw( int *nn, /* Sample size */ int *mm, /* Number of components */ int *rr, /* size of current block */ double *x, /* data: vector of length nn*rr */ double *hh, /* m-vector of bandwidths (compare to KDErepeated) */ double *z, /* nn*mm vector of normalized posteriors (or indicators in stochastic case), normalized by "column" */ double *f /* nxm matrix of KDE products */ ) { int n=*nn, i, ii; int mn = *mm*n, rn=*rr*n, jn, kn, kkn; double sum1, sum2, tmp, xik; double const2 = 0.39894228040143267794/((double)(*rr)); /* .3989...=1/(sqrt(2*pi)) */ double const1; for(jn=0; jn>sõŸ¨XH:2Ž‚0MpËI"/’ì[ý Æ÷L¹1Êɾºy#‘£+ì‰ÒŸÖÍ¿šuh-‡á°æô'"y´i´Ç\yvÊdäw~ò„]¥Ö×T½·ÔpëY+f•ÑYcæwFÇÊn¯Žç"|;?s ˜/,ª4c‰[Vÿ¯I·†D Ÿ·­ä…2ÖÔ'4Ë´+Q*‡ÇÏÃÏo:ÄM¡3éK5#ð:`BΗ)?˜Ë¢i—gP_•¾mŽL»×u¢U@,”F`5‡bë ŸÔý³'$Ül”Õe[D® uÞä³ . Žƒ%߯ës}¸}–Ô*¤i wÏ’«é'&Öß§_˜U ÷|$¼O¹n¥²Ø)WÕÑjµñ™x5HB†—V±Ô5géˆEˆ,˜­¦ñUò²ÏÏcÖ…bÌsìzó%Þ ª½%€=ÒëW/;UpÌÞQÄ÷3Ð<º³µÄä ƒ·ª2ⳕC*z‹ü¶¥VîÝ)‘Z:)Ï9Æ< “—y\ª­ ínÔobà#%Œ© ·S€I>Ñ ~p‹8ú‡Ñ¼OëÃ_„—P߇=¾@ú2¡›˜(×n2fǨôŒ]#€æÁ9¬R€Y¿É[úAŒ0•@Ó1[zü•f0¥—¥Câ%‡_M#’L[]朵–Ôê”D5 d±#YuÈö}¢RÀrÑPÌ*e稱n•óìrÂßYQ¿Ñi‰¨½V[5>½Ñˆƒ„£Žø».±£¢+º˜=}ú­®K«_l#eˆÏåבê,oKÍvå_°˜ÃHš€Z"Ën3y„Iø4óºBËògˆrkÕÎd ‹˛cùUÖ4“¸@^OéüÓ€|wÑwpþùgìIÀ‚ ©Ðý¾$AkŠzÅßa—DžŸ½ÅÓ,Vt^Ššã Û²‰‚Ký ø€ƒWÔ¶ð 7Éj#IÜÃ…#ø¹µh®V!}|F÷Äò“gÐ+ û»0ú#ïÎ,pÙšZA8œç—NBìãñ²é{I™¨ƒ RÀÓÆ³OÆW6ð›ù8þ¬KÔã|Ó&š ´2`O€ëëZÞVž@ï›GpçÞ»·ÁÅæpƒ½ãú=.>ît²s°_ D…„Ž›FbÉ"W{Ed!æ>ï>{ÃZ‚Þð?t‘Gˆ˜ëšû8Ûg‘žÙïë~Ý15Ó§E~h†Î_+$z>ÛX¦¦¥]ÐÐÎKñ›’‚šNz$ÅËH‰BàßòÕ¶˜Ér5†ÿZøÃën°U†Ž`KRïçİÃõG6øÈk_×Ë·—5­›ä­² =ËT¥Xx9³’}8~†®=¿H57§3ÙÅÒë¹KûA!ìªs$ö•ŠùDi6È‘—5>÷)£ÖPfSÚíÏŒ_] æÒNÝZ+½ñÙŒ5ާyAMåA– 4uŸ}¶(x`õM«1pvgYO á~š$x‚¿˜ŽKÛÉ“‰·Óíi–÷B*£7Ú·ÛÖsðÎÌuYÒ¼ã^æX²³½ãuò)eêç§AÞ9ÄÕ¥ë7®léx.¥6“î〮5zànF>%0îk“³‡V²Â¼¾†Že³ª^v<²,f’@ØS+°[WK°ýrÒ‰blàP^Sj…‰é¾ªúb½ƒ bWBZú˜D $˜~eEÖ>oÒg¸ÿ!ÃÐ×Q®þí-o—‰®}•~`Îež……¢ÊðŽ6ì|áuÃvÇÙB'Ê}“,ÿn¹U9=,LˆøÝ1SÔ¸6fýð5»W@[ úà $íQP}{|õ4Ý„Yöß ¤%›ÿ·#Ù¯M3ÃÊ»ùo¾9*Îèû‹Ý±yÔ®[éü§v5*ÉèFJq#"œ%·2S®‘[n¡¹š©®÷3ÍC«uGE¨ýSK8>1K”2¸sb>…9*TÕÞtbÅWq™?óÞr#›]&æ$ä(“wØßÙ¶YN­¥mEU¥æcóeÊÅK?ø>V;îh«+OQô† ±ßó¥5ÿ†æí Nò·+‚â} '«ÐÑ(-­”1bICƒú½(³[6æhkºËnnÛ›Ãæê µE4 ýM.®có¡ÅÜÂç8!iÔšŠ6ÿžzÂÉö²•èËw*:eÃ^šž5µi;Š+ô±n‡âÏœ 'N`* šÈöxã‹O¦¾H’½Ø9bµ¥‹y‰)§¦)½ól÷匴ÈTCÄjÍ TYæçÙx(BpȧN¯@·áó·¼J«ìÓyÃD•p….I*KÔ”•J’¤’ñ£|r•R¡([LÕíU*T©’Ï^8©RJ•ÉBMäíR¥IF-Øå*¥Fš¥I§WJ­@»’Õ%U—8ºS™VIæW%Џ°›MjRT1DÆÑYfbU•‹º— Mb&¥66™C-6FDÖw ±`»v‡@Ì”§˜†X4—u4u…2i… ±¦Ðíܱ!Ln£hR›m11[h#PÜŒ/P«’!F˜ˆA¡¦ÄÅÆ51ŠF¸îNíZ—zÛõ~O®íœÿâjÕ¦‰BÞ®ôÓM4Óûëצá`³Ù³fÍ›3ׯnÁÓp­Ýê!’ :tÓM4ÓÆx@(‚HË1À“èJ$‚_81Œc‡ÀB„A$À0ñ:ñ’HcÆ1ŒÃõ¢6mnR­¸Û·fÍ›2ךÎgžÝ4ÓMY¥ A@°CcÚàÇ@·V–£C—p JИ:†Ð„Õ[• ùcÀ–öe–%46ÚÀÄT‘¨ ¤Æ†„˘9xòfQˆj FÚݪ«*¡Vr:¥‹ eE3”¢ ¤RRó– è¦S?Xu ÉÈãC§Ê‘‘!ÄèW®K¸–v[…ÈïÜ’ú}½i’ÏGYºOo×®ÊÀÔEnKã~¢ø¸‰Ã’‡à`]†nY Â÷Œm´ƒŠp¿MDyRq÷š,-Yi—O I øÙD"¯•15Ô_¹ü°Œ¹¼äÇÞ'ÞeѺ­ `иn—r´Ùf[舱Ւ.çÔD´Ù›à{ !6-:w£†W¸rn›œÍG_ k2)UÁ0§Œ×(²Å©Üƒ°4Y)À¹öÌ®Wn—ÖÀæèê'$'ã)-êP£FŸóä:1!¤c…’Ô°±T[Í\{½Ãgyô¢œ CéĈ)@ÉPý#1?GÉxmb窤Zîb/žÆ¹ÎÁ#‘­PÔŸo ¯¿HëZž†r,åÂÔÅÆ(Ÿ½{bhÑQ›C;…^„XæªàO,Ta[1ìjˆ<;º`@Ó NLÊàæJb¸ Â5À‚Š2{Ô#'Pu! KàŽëytÐoÁ–¼ñ ¡÷e„Ç-G¦•‘¤Mg>·jšƒ‹m0¶(Vx$«-]4'h|é¾¹«›…¼ð`©¸ÞRUV)UA¨óúà#Aê5¶SýpX¾fYe€ƒ«sˆ!…[íZ\D&Sø4ZöÓ[Fêô¢ùþ4G?;RvÝšÒe„|’yQ¾\§NØ%à ¦ig1ý×éj%é¨`ø(æÂfµŽ‚j§™ïÞ‹ˆ‚h2±ã«RèRÂïâ&ΣQn’tù9‡0Æ0l®}–#¢JjKB¢ìéá‡,öÆ=¬M?v&jøŽIêÅUÅ$kÊÍ2ÊÎrsÁÏr$5YÆŠox‚˜÷èdplgP‰áæöÎÆè"÷·OMÐGÜSÖÀC5¯Äc•iKªd8õ˜²ÚróçÛ¥-ºzM‘K†Š‰.3ìx+VÔÓ¬˜ìoµïñª!íš/÷d©zJcF¾Þè‡U¯á ¨èÍ3r{´¼¬X³R{ØÑ-*dC›$­/¤ù˜ŠÞà9.T×}˜Ë_gfeûÊcQÆ.Sû9‡Ž&ua€€ÍY*f Ñ—À9½¬'ŒkHb¡o ie÷Ø–Ö]•·‹y*š§Æ+QŽÿÝÙóòôÞ]žjMÊ„7ù°U³ó¡O'|ÄšTš˜âXdí|_]@¿êûã×™.ø™¯f”­1»~^( e6 ·H=ϹOmŸ|ÍOÕe£éRô%ùˆ«‹á…ò>þ²› -ç9êÌp ’¥‚Æ1+¸ˆ6xõúÒq¥ÂØcbˆ¶½¶8Œn/J'°KìÕ»K&b­PÚt/TKMä^¸Ï2cÅ 3Ÿ‹¦ˆh=fµbý9^jÌ5À="´y Ø2Ö€ë¶nʯ’#ÕFå_Å«">½®æcAk.Ut˜úòpZå²D˜`Ôùï’”Èê¡\:s;wζ’ 1Ö4ˆZq3È1c<̺í[oзÝDí9²XÞª=–™À÷8 € p  yíñQ°ªú±ÀRê P Bó` Ð…(((̉@(Š ›ª( PGd¥)@>YHÕLZOÀT N.ç®b ¨)@©Úâ´¥9ÿÎjU1ÿj'DR”Y^ê'åh»^  'ÔJ «’Ò™6aòqA‹ÈAFU\eƒ:| ^B˜+ct“€ðHÌÐ),V*1ah¥˜IŒR©Š¬£æ¨t‡Ä¡aNÏ‘¡#`PŒÕLƒÄéÌ¢£qPû²»-ô×h™½…ø$ñØPáP¢ÐAAà&gàéê¯à…™Š3f( ÌP˜ 31@foI<ûï½$óï¾óÏ5ö1ŒcƤ’I&Ãk"DÎ$Åé̺8H!†a†d$’I) @Îsœç:’I%Rf3hÎÄAAd’I%²øä“˜Öµ­k\’I$5t—¢æ†µ­kZ×$’I(.l´1ŒcÆ5$’JZ×™,bÅ‹,V1$’J_3‘ ƒñšÏÉÃ+”ÉĈC:“ˆ=èD•D‰6œ›´W +2¢›¢øEePU˜×[.·]`ú²)¾,Lغ 'bBs¡J¡%`…L½J5ሔ‚œPÄU˜9Ї( ‘UªÓ"šµû®lõ#C X© `¹:±"®¬ü4Êýï<>Ç-›6b½ÓO3?²ØÏ‚×Ñë `E€%4D;øä×1FËH4ð©rÖšÃÎÃBTpɈ§+Ù ­³ k-Ziàù 8< UmÈ.-¢º.¦åÇf:e…B®uY1vS47=vÈd®LØA„˜Sr¾¥ô^m[%m`ÄO.‹ÑII  39<H’­‘’È–+“_ÄÙ+h™‘“ÖåTÂÙž[=£ †EX±)f#‡DC…¬hLèD*¡×ÁÃ$2e)™a³³4_:Œ nNqil¡ÂƒPÀâæLЬñssCÈõå7h,ø*Û\ª¥ÙNÒélÕ€AIœ2¯ŒzçQ‰L¬¦|ö¹É®µ™Öv† œˆWC&£O]<ØeŠd§šqš»*èIªBéJYp˜$s$“Nís‚PuÌö¶“E`UÔ*ÙÝT›O20%©š¸Vd\ÕÍH,žEž&" ÂêY˜ÑÌgÔ˜lLY­¨blLqVlø!ü¨4“m-µ6nÈÓK T„6B"ÀÔ£›T¦/…¦2˜µ¤©r2xI» K,!Χ>-ÛDÿñw$S… 7«°mixtools/data/WaterdataFull.RData0000644000175100001440000001623712777444063016562 0ustar hornikusers‹í_^Er‡{Hi£#… .|ñÊ9BÖkcÀüñø`þî‚í۰˥Œ\„ K”Û÷‹E9i¿@²xëùMúé9Ù$beÖÌ‘ìšîÓÝU]]]]]]}Þïÿöú ¿}¡µöL{öÙ“ÿOþµçž9ùïí¹öü üåo÷Õ·¿{üÝãÿåë¯[{öïN2¿¯ð·'¥ß›_j?UðÒ9<œÃàåsø³„WÎá9ü —Ïá9| à+çðg¯žÃsxܞÿ¼ö¿ƒ­üCíÿøÜþã Ÿôó´ôãÇ~~ìqþkƒ-ÏÓÆ—'=î?><­Ï“·óq2Ï“·§ž??îó¤Çóç .Ï“æóOž?ÿ¿çIÛÏU.ž4_þR|=£Ü>~èÎ>1—§h¾]p.xKé_<$×—{Kùïôé|GsßåH¿]ðÝ]Mô’Ïùþ'…8%ÓE=ðÒ~Ç-Ÿî:z–¢'ím ¾XùÕþÂ9³ûõz½‡¾wÕð3ôçm•3_‰ë¸'|”› o«ü¢¹¡4çð%ü¼toVûEÇ|¡ |»¾‡ÿþÇJãÇ„î7z:×´Sô,Žo!®ËrÑVêÁ‡z¿ÔxÍŸísâ×F~iúìéZ ﲩ|äz^-X„¤Õ.ã°¾>Aç¯ Ï{»žŽ©ÊѾðÏww~ôø—×ö0ã@>í2./öõÃ'ð@gÑ>´J¿¬t•ϼy¹¯GÿyR=è~辬ò­‡ÌS?é7qe<·™7Œ/rZ„F^7}yè áƒÆ›þ-â/ò‘øæý…ŽÖ—G>2.Un÷ë*þ‚¿Ðùf¥'ú[½¹Q?ßýUÚã<µ3Ÿèæ+ç{<œO¦ßÅ—ÈIëËý‡ÏŠ] ã–è­õ"éÒÇïM_ßó(ë…Æ-ërWz›ñ ¾Kjþ6•ûõžÎÈ#ú‡þ2>È›ô5Oæé7úöÈ_«¾ãn™Gè¶ü@GÚ½$ºšê ®=”O»WW誂æ¿ñNÕï̇Öç#Ï¡ë×ÚÛT¾å=ú`OhôÔå¾|æoéuæyú?‰NôP­£Ë{ªb€¾w{È<$¿©ýIøµ{~úùªöy"ç­ÇO:hyÃnØ(û~Àß=OWèËxhž¤ý+=}ÇÖÓõç—£~ÖKä=tAåÑ+ЫöM_ìÚ§_Ç蛩¯oû$õ‘;­CEOÆ‹ýÀéùø>ˆ]r±§+åÐÏ›>?óúxß~æ+ýÀîº[iì"ÛW´÷–Þc§ßÙuý ÀOyÏÜúþ¤ôUÜïANÀCú¥¾\âdWÓ/?¡ï–Ò¢wVÿxŸyrЗ÷¸ñ,’cëù¹}ÊOÛ«ÌGänª÷æ‡ç=ö|auEõ¦ž®¼ð·ä‰'ïe×'Ÿyÿh_vßÜzȳÆÏà´Ýç}û¤Ö—7ö“i[pêË£oýÌggýv9Ò‘Gѵ¨¦÷~¼>¹œå•v=ï"ì³½¯²ÝÇþ\ãý^׳>Rþ ¨÷þ¡£}ÍùÞnïW=ì|ë·”ÛõéOUÿžß‹ÎÏæ}þçñoi<¤ñ+Ñ.ô‘ÆÏò°à#•c^ÞU~Ñ}§x*]v΂¿€õ‚÷ìËHÃWèa¿Pt-Z?§=õçÓvvš}ô ŒÛû»¾ò…ƒñœ[_ÿ&ôÏU®§?ûÝŒs¿h}ý­ÚÇŸdýÞGoO{y™ûüÈõ> Ÿ¢|¬·ô_v\öÙÅï¥ä/ëÀQ½TôÀ'öÓ@Öaæv3|ºO¿ ¯ ò _˜ÐÍx2¾Åßøéú¹!((!ô.ÈÍTùßõ¾?Ù0îT}Ǽ`=A®ÐSÐ}Øßàݪ]ÖOû©d/¦ÿ¬×Ç•¦ÿ²KÃï×Ô.t±oB>é‡ìÁôûÏþüŒÿ´[iöߥ/"ЇТ{°3›ÖÃÔ£ãøÙ®o¹>ê¾ÌGücÛJ£¿ä¯ ÿ‘/ä°Ú[Ø7`_Ö¾)öúæ#Ñá÷=Ð{èžZ÷¬Ùû˵çùYí z9{CþR¹ÚDßîéÈ:d¿ÅVålg6Aä‘úì#·}:ô_R½j'ú½àr¤÷àÛô> ù­´í>Ú±?$í‘ö¾ùÑ3ò›ñó¾‚q¨ò˃¥k/rK¼Œú >ÉožrÕ‘…|ß·¥ÜG{zç‡êü·¾EÞtN5Œ;å]ßç9wÙõô¾¥~¡½NÈ?’|èg^¢‡8¯/õoßÊ>-ëúvÓ×Ï|•%õßZgBïÔÎ|'ïGÂ?äÀþêIrúörÊy2öïñܵ—}¥ü%™·àEžÐZW¼¾ ë8ûmäkRyËx±ÛÐc×õ^ú3ë3öÁ-Õ“]4œÓ•_×úp>ÚuåY?¶Ý Á=ôK|â‰þa=÷z5¯àg\XíB_0µîyÿ¼Wü!>ŸtNÌãý·ýþkçD>Wf¿>ø÷¡Cënì(ìpô$ëO5<ìÛåÿöÿéÜ6å‘§wÀþÂ?ëýp>"¿_Îé>®4ñ ÒWÐÍ3øùÁ‘v?>­3;õwéÛƒ>èeü¡ÿãý„Ÿ>O)û?þ0Ê#ŒÛ;ê|·Þ¹¯4ím¡¿è–(öM­é'tù<þ°o9*XûÅœ_Ðõ€Š·ˆ¾œ¡³ âBNDZ`S{‡*·-:ÐcÄûiý9?ÑŸ?Þ¢7ëå™—ØUSëžè³âkèGß3ÎÄg GÒßáò­x1Îý|nš8¡MO×çsUåÉgþÀgìeôýåïâø¡¿íáÇ{¸ì!ã_;ð@?ãnýE»SAü¥Ð±UûèAü/ìcá+óV~OžÈóÄøe'…?¯õù‘Oä>MJÓô°ã^ðƒ!wŒ ãV~üô?~úyŸ–?)éë}ùœûBó…õþ¡‡nôïo5ŒãJüÅ|\ý¢¿ðkV= ìº%óüÈÕk‚ÈM•`þʯ’ùÝú´÷‘<‹Ê¥}øÍ|ßtÜŒâ/<Сøƒa?1©ø(;n8^Všõ™y6õåRŸþpÂz+yìUGf~1nôyG>oä²Ú"¾¨ü&i÷@å oìaÆ ;Nû­ôßç¢W”"§÷zÏù!ó’g8/ï¡“þ(î+|GJnSÎqBð÷Ì#ô"úƒþ2ðYþ Ÿòj>BOáâ g*Èù‘Ï«_W=ì ìÇ[U¹MOð³Ÿö8nûô=ÒŸ¼O9ů,@ä<Ž'™ 2¬ûU`þ|ŸŽ}§8Ó!n®ò{ ;”þ '[ßÞÐô®ãM´.‡>äAq¾ì‡ìϾ º8—aœ§‰îÐës%õ'ç/Š#ô#t[ÞWlÿüà¥=üCS¥±×lo\Q½’ËðÑúf«òŽ?+:¿4ìG[ÿžgˆã[ñÚ2àá< ?5zµ­”—¾u¾ý)YGéì¿ÕñƒOÌÏMAâ=˜G—Ï®yöýèŸD¯öµ>ïXZÿ>å‘WìÊ£ÊÇ¿\þâ!Ž²Þ‡› r _˜Sº´÷±oFŽÑãØÍ¼GÞ±Wû÷¹?»@í±.Ô¹aæûtèCþWòÙg௙ êþCê rôºû÷9aŸu(HÜvüi»Ž¾Ðeýþc¥½_‡>úk: Oñ)Y?Ô?üô<9÷g| q´}ÜzCõ +ôîú|ÎQ.?ÀÈ'þ[ß“Q¼Ü‚ >ü†ôy°€ÎÃ>?zºdWæü<Žw„ì³ ‹¸éíà§=Æ}Š!ÞLñéɇî÷ë=ý§àeŸIûøÁ®Þï¡ÏžVù´‡^þ@ïégæAÅó$nGñNÙ':û¡Ò‘ø€ŽŸßl*ÿ¨`ÙÁǸ`ÑÛ—Mt2?å΃à[ñù<Ä÷8^b[ùÌwŸëLUŽøè%Ÿrø7so¸ ãAý¤óüàc ç9')|^‡‡û$ýëŒsÒÑ“}½è+×g¼/äžù ö÷8Îê ‡ñ ÿ>ÿ¥ÿÌ7ø‹þ(>çcÐm;oêËe¾#ô‹ýã˜Ç¾oâ} þ1÷¹¥ûå¢+rn¼²ßÃÚÝôù™àñ>¨ûbœ»çÖ:OÎ9TN~×áÜpÓ—ŸÛÙxÉ·}þ`Wa¿ ã8Ôºh¿ìp_ÿ>ô6½¿ÛçÏòSdý>·¿;íÍ*_tŸÆoí1 ç%õ>ýVü¾íúBsúþŠÒœg@—ð ín*_Ä~Š­ðûü <¯V|LÞO=~Çñ¸œóy,g<¾ÿ2Üïݨ]äWq<ŽGȹ.u}ìû¾²‡†öîìzºÐ§Ì Ç鼨ö§ã¹oWýî}W~ÆÓv¤â,±ã?e]¦}­;ƒ\l…ùð¹É¦§ÇvͰnÅ·Á­}yÖeäXzŽr™'Ù§ôø(Ç~)x×ÖaðÃwÅkd>"W›³éI{Ñ ¿ÖÎHcO6=ž¬+èCèÏ\p*hýëùÇzÊzíï¸Óõßig>öËd>(ÎpíY4¼.¥Üñž’ðç¨ÇþLõþàì÷ú§q\‰GZD÷à®–ÝcziÇ÷ÁíßüP“àŠÈüs{<ñ7È}ãû*·Û™Ïp~F¾ãÄO×…ýý²µûBÜ›!î¿°¿w3Ô+ève÷ç>û_ÎI]¯öCÃý³/”†NöïÜ˹¥r¤¡ó¨Ç{zž1÷öñbo ¢?Á ý¾†>oîÍÄþîë¬}]úÿ¹Ê).4÷[îŒß¦è+{jUŽqûXý`ÜÀƒ_“{÷{¾°g_ËüaIü<ã Ÿá;ç1SëðFŸÐâ½áû=ô+ãÊ~Ÿúøó?Uí §Éç^ û9â‚™gø;ÀOœÄ'}½Œõ…u{'ñCË> _>U}úÁþ9‚Æy ý›D/ùÐÁ½6ÎáðÇ@öÐݾ^Æ¿Ã]_Û::·½›‚Ú'¦_Œ#öüCèWëÛI»úîÑ,ûÁôeþ ÏàáÞÌ=•c¾²¯(<ÃýúKüý1öÝà…¯Ìcè— ýGŽè_Ùq<¡ßû}êkß3×9æ%t0o*î!íÓ_ÚÁŽ„Ï7”Öú>é{¶ÃáþÏ[JWc€—u‡òÄ[2ï™§ÐÏz¦û*Ãý&äþCÿ=ås=z£§sˆûÖ¾×ç^{êÚé½Xí"—:g¾çÿ}~1ÿ£«}½Ð“ïîöP÷6‡øªÖ÷g¸²-È{}O`¸Ÿäs>ÊmûtðÙ®„_þRÑm?¦íà®JŸÆOîö9ƒïŽ—Ð}Ó¬G>×….ôrl¹e<¡Oòê8§Ó{ÃÑÿÈ1óü¬/U?q´¬3ØqÞÐOóÏüŸâ`¢7à·îW§?ȇöG?ùÝ_yzïxוO<ºÏß«‚Œ»ýi^ŸoŸM/Oø3õù øä‡î׉/Ã}=òéã…Ýr³§ƒváKƉ~ÒrzCøè·Î¹æ¦rÌÛÖCËUƃzÛž÷7ãÀ9÷A×ì,ÚA}¯ˆþÍ}yð^RÚß\Ñkæ£Ç#ø7±×áƒîeÇnòw¤ÿ³Î0Nœk oø¡ùîõl¸·JZþÏÁû F.м×÷ (ŸþÑ/ÝóK9ìæMO7ïy†yôjŸN97¹ûw’?©ÉãÀ'ùË}>ýäû‹…¹ >»‡ßŽŸåœÀzàí¾Ü¿Óz˜ù÷ŽðQî¾ÊûÜŠ~\ïßó ~ËþõèO“?pàøØ×Ù õr‘9ôö´nfÿ!½Ñð1_±#°ëØça¿Á_Ö{êªöÁ­•÷蕊£IÿÁKý›‚´_Bþ ü[ð‹nïÇ€¬Ðcúõ½Ùøkh—õ€zÉßÃá;ÐÐ}ÐíïSÓãØ zz÷0ó˜~áô¾¹ÆŸàý¬Úúéñq}æŸì²!Ïö~4Ú¹«÷ð•þa¿Xþ8ÿ¿Ø¿w\Iè/Š»K{øÅGöÅÔrI{ð¿^£ŸK—ÎüÆ•ýtáEÎÙw1ï}žÏ¹xðïU¾o+]ýäÉ9ø9‡“½•ù^øfßkñ¸?*ˆNtþXÌö ë¦Ö3ïß’=SùYá³ã>—~´¾?ƒÜ(^ÂqÃw®ñí×*¼ÞWäÞþò·•_óŠÇë½ÏÛÇœõËvt#‡Ä°Žy?q(|¾__ÅíÍæ›Ï‹«|ú«ø›ôgí¼˜xzøó‰};¹ïÀúE¼v*þîkjŸþ]éó‡ïSsN ï„ÞGèÜÝû¼”;îé\}¢4ã(¹´¾?¡‹v™Š·ìeÑÏýµ!>Tñ|ÁËø@WµïïPOS}ŽðäÜÁå§#?Ö GôëÅò~8WÕ9ßéyÌžrË{ô7óuŽó¢Â3ÈûìÌš§>gæq|VâRáíx?ƒå¸ûõÀc?ÖE½oýûEr™öx¤žüM¡_çïƒ_Úøà;ûAìBûSï©Ý«x=ß9cþlz¼C\«ü“>Ÿ¾K¦þÍÊæÕÔ·ç8 ï»ýDN‰{Õ¾=ó•û¼ºÏú°›Ç¿ë”ô9õ3o7c?ĦÏw|š÷…‰?¯zþ>ì Þ}Öã“ðo+_÷Z"‡Ì;êë{n<Wú©ïhþ‚‚‹ãsàýî«ÚÄ!ßì«õûþŽàšcnÊ÷þõXëƒíÁO¤ïÊó õ=LWêm*Ÿû²øïD;3zŽ»½Ø§£ï˜Ð´N¾Ï×|¿Šò’c2ãëxOäãB_Îþõa~l[÷äþ í(~k˜çS¥=^Ö;ò«ñûBÃ9@_m¼‡j{¤õéµïRÎÐ~®¬ã؇Ä]ìaÖKÙÓnÏ~(ð2®ÿmþíï—±¿f¿<d¿£|ôûð{+õ˜¿¯(ºé_îmd˜{z•F/¢§Ø·è¾ÚQ0|r|ôA|ò}<òo RÎ÷ëŽZ÷äw¶è|uüÜÂÈÝ…¾~ö“ÚGÿAv|CްÐsú^|âuª}âûcWæÞaµÞƒþ}ÖSævø=œ“ÓoöÛ¤ç¾Ìðù÷ÍðÏLÂ?õx«Ùñ{=È=ýS?³!ìot^ùe\?=ÕôÌî7ûRöºäß÷à ÿÊ¿{˜þaoX.tî¶Ø^øás/ìþ©`µãu3|w<7í¡?¹—äœAç¨ñ'!¥g;Üçsoöô ßçEß —øEfòwÝÃïí!÷ØŠ‹rœîZ|/éá{fŒ¿öƒ…úð—yŽÿÿ¥Ù—°~)Þ*í¢Oá«ïqzO>r‰þ@ ³`äFq^Öö ÷^ˆ—ÚôíG^?óñCŸÛôjŸN>íJÎß]²7yÝÖ{íŸåñ.kñéSÁOû|Ûûà÷~×ûdŸ$õûGZ/çšøô×~ó×ß]ÑxÚ’u‘òú.kÖiô üÅîB¯ëœ}±~„.ï{^Ryú]¯(½ö{6Ô#½©4ís®¦ø£á^›÷ÛJËß;¬ÛØ©ÐËza½n¿xðÓ:N„÷¾ÿ)=`¿'Ïðý+ûG·{~È™z”ô>6zS~ÜèMäiå{0þ Çe½~³¯:W¾³<Ä1mToÝGʸÔ9UâÈ'Ž®Ú]´ówâ²~‚—}…ã–w–ypµŸò@Ûôc=È'û©/ïuöô»••Þ¬”³|»Ÿö{ ÚâÇÝ•ù;Œ¿ËƒwEoëã±íéâIÜãäþZÐ/ÿ."ã¡õtøŽpM/ʾîc‘¿QZþøÔç{:gÏ ¿ì…?5ÜŸÿý;øNêt·>°H_^)×z8ì_m/Ê?ãßµðwu†ö<ß qO§ãº÷¡€ø°‡Ñoœë!œgñý¤ýâЩ~ð±7Žê½¿m<ð‘ûØï´‡|nho××Ïþ`׿gŸû°Ò¬W‰ÿæýRíQ¯õiô=ëHÅQåþ&~÷ðAé:_Š>Öý­”眘ùŒüsï”ñįŸ}žï“C¯èÌwÅ 2¾ôÇôVõ³øw¶¢ÿ‰+ÁOÿ[ëñWù|? ø‘øý¯óÏøíªý!Ωä-󒸾[K>øáþ ÎÉðâßb\ñ§>’<ÓOúǸ¾®÷ǪOüý¤ßìóu>œ}1zxyû)üÈâ@‡ïB¿Ã|Cþˆ?ñþ€vð+²RfÊÕ±›:|O˜qV¼yò¹×ùeƾ2.[•kzOyüš—:ï¨|$9òw€sìh}_?ü¸Ý— }à§ŸŒ+ò‰>ÁŸ‹Ü3/'Ö1ø‹Ün+ ¿‘+ú±)ˆSžþ\Ryó›4rÿèoëËg>#/èWê3oèÿ,üय़7õ¾ðÅ^Ò÷]Â_æí ïèsò}¿Iöæáy6¢ùš•Ï<Ö÷²ÃgÊ!w·UŽv7¢¯ôkì3Ö7íwxûÛ,·×É÷=1ÃmëèH=ä_þçèwű…žM½o}½¡?:â„6‚M}ÈQ¥_áøŸÇfÜü}bÞë>vÞo+Ÿï—3_|¯ç /~3>Ìý^ÃpîÏ|‡.ýþXú©xÔø£¡=¨{ÃzãýÓVø9òºÂ<¥ï¿.ûÀû÷‘3ðÀŸVç|èYï‡ý°ü“ƒœ^žá\ŽüêÏàWSïö›µÎ8î%reý»¶ßçü{¸©?+þ¿Á~Ö|K>ýƒð·Î¼Fîµïr¼ƒ¿Sçþ„þ®»ý*ïø—¥ýø;CŽÛHý·”Ö÷ýã?÷¸ÝÙuøfðÚ¿ ¿ÞÓ{/ ó¸ê9>Ÿù¬¸ï¬Ð=‹Î5;ßú[öŸÇsˆ'B^|ž/úxì'ü*šÿ¿=o§þ½ãwÌçA¯àßðïxA?ó ¹S¼jÊ­œc üI‰çž9ùïí¹öü ü›~üû¯þpòÇ÷Ýy¡2Ÿ}ü_ÕŸÏýþñ×üýüµkßüý—_óå?UÆ…J_Wú>ýüµ­ ¼¦´Ü$ÝSýü·ßüëU(ÿåÉ¿g¾gâŸþôÿæî}ùõã?Ð=2_øÝãï_ý‡oO꟤þóûÿäG ޶mixtools/data/tonedata.RData0000755000175100001440000000161711736707362015617 0ustar hornikusers‹íViHTQ>ófÑ&©¨°²ˆŠ@T*"BäœÐhC*ƒiR✧…²(D""D"£ÌÌVŒ‰ˆˆöÅö"""$$¢²±Ä{»ë<²ŸA¿¼pßÌ;ïœsÏ÷ï<^A^á´`ap’ÅöŠ¿>G\ ×Aü±R-ŒMW {@-ì¹/×dæ9«+žÒ}­ÙÛ¹g‡o~‹ÜøóÚ´‹K>Ô"ÌYwìép N“@Zƒ9î¯ÎC ó“G×AŽ>‡c÷êüä5Ï}&¯Ï<÷{ÀØ&>`ž'˜øDƒç¿ã5õ àÀ;€÷ŸñÆß[±å³wÍ\xÔ ­Ü¿g1ƲˊƜIÄïowÓ¹Œäe>wã‰Î¥±GÈž÷}»0ç(òÉï7=ïûŽ|G`âë¬Ñ7òÞ®5»sdÚEoòŸ~míí"(™Õë Ä©·N}!x•Úܾ‘<Ò+»ŒœŠHÛø‡È1ö8îæö wÎÏ"ŸoÔÞèåÕä*f䯗7)à$Í¿T2ÃÅýðåˆéNÜéÊ‘ U%$˜U˜²"ÿ¸>ýzš@–õù02ž„\ÂJ=‚¼¥ãJÍÐpœ®y±qȶý|5áñ;?H0Q X“•ˆ¢… Á5Ùðë;U!‚l…@óèê%wŸd”| ,SÀɯù'¯d«h,ùu]J†óâz,ºÓÒqû4Ï®.ÿ¼·ý@&Ù-LA&Õ¹î82Óÿ^ÝGäª=EÈ?+àš‚dYØzËð•h]\QÂ"é»#M»Xàòeúfyä’°‘qÝ8]*!ÕU«,(™”_Ë=uÜ$w®,­v.m=‡Èd7&Û¹¾‡nühA'k•¯ÛÀÓä55AÇà/wÿ Õ÷¾ÿü¹Ž]Ðxâý‘ÄúÝ0ï½óEç~¸Šß·‹ß%Ö,ÜîýfÄò}ß²¸ÀO|žyÈð—ãç<”¦ /Ýý:ŒÔÞúxUÛV–Äÿ3âõÚa?¹ìë7æX’{9ûåÓE0¡Ö!“jdÓ¯>›WÚÿûLpC>0u8¾üšX _­Ÿ†+Ëe¢àm->²çSaý%r=\±ë`r½L®®Žþ…ñs§Örו¸á?\˜”Ó],‰û¦T<¬ù¨tÄšD´=—aZʵŽÅDy–}ÃÊôbláHè4P×I¥7Såz†EÔ>(v À,4D•6WX«”m˜ÍG^Û¢™{N,‚<æÙªêÊ’\T.9K¨ºƒ/ÂÝô¸X|'‹©8¡Šz^Æ8[D¹ÎbÚ éÆ•ž¬u.Ê2<%äiRŽX«¨bï]E}2ð ÈJ™wB^¦s=Œ ß°gwÈ'ìc¨ ·KÞ…"ö_]ÈqpÈ£N…Y¨¢Ž¡n¾:¿PÀ:UB=D¹öÿAç?Àþ(aÝ/bÃ}a½¬‡ñæPç1¬ïEuÿ€'åíï§ žËóñ1ÿöK ù8µ·aû=‡ze1 Æ›A}GU?Ϲ­ç ¦ïæF;^Öb2ÚÕVËÆÝO>¶7=Ð?¸½î—ÛÒÃá—ádB\ý«w q§s¶7íÚ·úÿ°.D:CC #4ÌаBà '4ÜÐXFßyYdédd™dYdÙd9d¹dC'†N :1tbèÄЉ¡C'†N ƒ1 bÄ0ˆaà †A ƒ1Lb˜Ä0‰aÃ$†I “&1Lb˜Ä°ˆaÃ"†E ‹1,bX݈aÃ&†M ›61lbØÄ°‰aÃ&†M ‡1b8ÄpˆáÃ!†C ‡1\b¸Äp‰áÃ%†K —.1\Á˜ã?È2°bº mixtools/data/CO2data.RData0000755000175100001440000000117311736707362015232 0ustar hornikusers‹]”MlAÇ—ÝBûak?(j†C­e–h „mÁêB6Ó A8a©?&ž=ëUÏ^ŒIÏz­çÞLzÖƒ—z¬Îì¼÷j˜äíüÞÌìÿ¿3ó²N©ÉBͦiº¦O‰0Žéâá1^¬²G­aKÓŒó"•óS""ÜôG÷·~¾á“Û‰ã¯o·yÎô/½£Ñ}Ϩ>åw?òÛâÊ?ṈZ¿ù¬Ì8Ÿ8í;Oç½ ¾f)ýÜÙ]ã7¥ÚÖ/>~IÐ16>ͽ:âÙßJ/óZÈãÁCåó>ÃዟÕ÷e¿(¿õEå¯í~äæ;ÙÞsÓ+Ó>ou½Æ§a©õÞ‚æ5~Þ[†< ëça<yò8¬‹A]\7ùE˜GŸøÞ@?è1Ÿƒù0æðêøa|ú„êÅ•NÊ}ÂÝΟ1e •.x%¢i~Y"dÉœ1guFÄ´©'kE:‡¡Œ.˺qEÄU—FÊ,Ðë<ëôöÀ9£FÁ­#Þ±î! 6 ^,=Äé’åÚ›€cVűpت××+6¡S@ÜpŠˆå*ù–]Z[iÐè݉mVÄûVѦQݦ¬ÖˆµS‡Ú©€C[×ëp°á’”‹;3Üzaä4ýí^k“ޏÛjûA'£ËwZ;¸Ü 3°i_â8Þî?Ý^Ž(ýçKÿ«à ú’¨à3R+«i„ B÷\&J1"“(E´B´J”&Ê‘#FŒ<y0ò`äÁȃ‘˨ó2þŽÜIHþZ—ºqrê^´“_]'™“mixtools/data/RanEffdata.RData0000755000175100001440000017427411736707362016025 0ustar hornikusersý7zXZi"Þ6!ÏXÌáßåïþ])TW"änRÊŸãXa’Øø%>Áƒ§"UÌGêQõôNìÀïÈ¥Hâã™õRˆž˜ üYrNăkG¸ánSþ‚¤Ü†Ð(€Û%ž5Û©%™µ«òœNôC¬‘‰e ÌS’Ö›US{–ð,Ç·¼þkŸ©Ó&j"‘Àº=9¾F‹1®™•Vž©jWÖíçx¸<ù$k 5Ø©@Ï\y* Éc"Ø‘’DîÈ,Ñ>é½|ñŒv­;&‰njçýJÅïáIqAŠ)¯â˜Pcg ?Ùmo·¢uý‡O4pÌFÈû‘³6@í_ûB f‚OZLLó…¥y–/ÒœwûÆÜ>t’ ˆ‡ŽÀ3 ¥3d V§Þ¿‘Çÿhý£‡àCò¬!#¶E¬@[eúžÑ$[³-„cÑe.tÁMYBž¬Q˜}Õ›`Ùõd—î Ëк͒ôɰya ß@{8Þ*šV¤[ðñ;p… Økp渌Et¨%ù2¿]ä£üä!ÿmÏÞ!FGß¼t–64Œ½+9nå{).¥(itG/rùëˆ(,?Dçm]i¾3õäY¿3Ô<úì4ØvãÁ+jåæ4 m@ر}H²+f‹vÇ7Lt7=ðój<ÐYùTÄcƒœÌçŒÙÒ·PűR`ÎÓ=;{£2³£êIv<êeœƒ6Á¦Üíš#vC·ºX*¶íâoê©Ó£–³‡ “ÁÓY·ówIû Cqg*]å@ y¡sý£‹¯*MJp4Ç¢à¾Óîà¨hÿ{€ª¦&e©t>Í œ…Ÿ­ùŒõ4o¡n¤­ÈÊ~Ô“o‚ºŠÕ‡Xõ°ù¤I<Öäb¸Jôî:nqá˜U¬övžžM›‘¾”—V¬è*Ô¢P5Xo§ŠHä© Ã2ÏoO€3:¯€ú×.ÁÔWÏU?Gäw±¼báñ·OîAOQ¹¡¼”#)ð¹7NÖKÝ£â`æn^Žiæ+3Çñž:Ë^øo ž6ذCúÚS9¡6†‹ðZ„¾Ž:¢£¿xÁ…¡+ûB=ÆNCƉÁ!z„dÕå½Už)04ɤïí„Ò ’Üšžåwû¾öô\f¨=»ËÆâûh¦> ¢¯Ü%¢Â‰I¶Ÿ´taþÕƒOù?ŸßÖJ´©LøŽHoæò ª’Ýx§QæÎ‘ß¶°QX|¦Àø°³¡¿·rÂÍuâÌûy¡›Vw{ʇŒƒKYã#ù²^Íó®+Î1JK4ì3æM jÁMÎ+ÍUøCHû޲ÞW$l¸{š>Ô{q&÷fCü±1@`ÝéÐγöl»m×…©g Á4°ØY›iZVALÕ*¦è5í!ú_Åãùäź|f.×gCuÓæW¯Ó<#ɰ#5áQ}æ$Âa½ån ’Pî!šÔ?ìªÏŽ¥yJk¤¦áÒÏçò–^“³Ù5òR§¸Šh°@\çÔRÁÝ2âu¡º—¼rf÷Ÿ‡´îÆÕÀ¯ÿ»ÙNû`E}¢&.¤ äh‚£7•îõ¶µûºÌf÷$.ñ±½“Ü@‡¤íðúì9>˜zoï“ø¦n*ôp½•4sÝܳämÕ/Ê…î>Ž´®WR ÿÃDß–½×T;L27v´R£hcws‚…Çi£‰1qé‹zP*UȼG_C×Q76îUcx/jÆB² çøÙAçÊŸYg&®™élé;¡¯:#8˜¼BQ«:± ràÜÖ’}ÅÝjYsŽ /Ôsd?±*Ö9‹t5Ä!=ÐØ.¿É}ÁáÞÝ,î’m»j#ô^†;©ÂÝT£T/r¨#‹8X‡&ÊÆöI0˜½W˜¿m2M¥jÛ'Êó%ɇZUªæ~‘ûâ\FÜrö´BÏ6ÂÄЦÞá -OrYOáJ-Zª7¯,ȃ˻–µaeÇîÈ¥rsI$exær5Þ÷]_Éð—jŽzNãÍ·nœ"põ4‰µhä¢âŽ /T²sü¬’«ûå2ŸóƒkZ§ÈôVBC¢ZMq¸p¢Äûò0“F«jnšSg ž‚ŒD–0!EH¢¼hOÝ2°wØyã@p/ÊЕžOü€¿ãÆln™M"C72ö¥~´…Î"€pÑÇŒsTûxå§§É­»Û(¿z*–“T¸ÆuǵJs3x·š£ªlÏLN¬ XiiŽ¥–›9'1yŠG¢õ`¿^„|D2IIýtÇûñÛÏÍk‘‰ŽŽXݱyfdzÖë… |Ø if[æŸõ¹ˆýóÇÑÊSòɉF,•-…Ü/ª1ótFéŠõôØÝ2Ø=¼.éøh¡½@´ý~¾Jä­Ãø¤EAp<ÍcÏéÕq턌º<&a49K5 ú6ÿ´ÄÚÇ0¢—?½p𺧹÷ ìñ¿ÜÜžœÍЍýQ7Xã;E>ðöž¨°Sh€Ñ¹Ð £@Ì£ãï‡gpuòK~‘Þ=]íj@4 ‡ï»gA„Å1ØTwZ…ß#è«ÏUì†eÅ÷ùk?Ì‹Ž‹À6Þ¢A`ýIuÔrqú·‚ÛLW}œâÝ!±S†L:†%¼Í wî«AùZ4_›ÿÀJˆürÁí1~úW@ø'ï,°4ÝëÛ–l3µP3Þ!{)‰¼…Yœk‹fó­š v‰ÿ„cdå’‰÷jyaüÃ\‡m’©]ÛðFªWÅXds –Îx¥­WFtÆ ü“<70 üdz¹Âq¥•ž9fóîËßý|šå`óó¬BBL±½¯±Î·®óQ¾È‚@È*gõ؈ϔ 4 õø‚Ý$r¿QAÂw´xür8\vy± Ã:d]4)Þ‰P©´yÀ5ß :Ï/²e´ëΦùû‰XâØÏbcõìÕ$q·ñÒ3Rý ?Lqtiï„’Ö5ÑÜÛ4gH™ä潂°DûÌKŽôJ}Ö$¸ŸàóØYÚO³Äu»«X•i°ÒÀ¤‰ó†üO¸ÒqŒµºž ¦’&9ªÐk¡ây^ 0D¼0@Mx!ïp‘ƒëŽ*ò„n¹ ¾R2‘Oε©vÏÎ,RÄÒ[tK3ù…ŠÅEqÔ±yŸˆïÛïÿ¯(×Õ6„Í•êEæï1üP¶§¥åá´Ek„’شпˇJ!¯ÀyIà”‡’~Ý×l†ýsQk­=B¤úˆl ‹»¼‰Û8(Å GèèªÔYº˜¸­ûé(GŸ05kQïLÐßøcG¢‚T4»ã3à¤ÌSJCO”=²Nô·šßÔÕR¯}¨¸ʉ÷Ћ Vä…ƒ8ã¬{]áàmæSíj‰á‘Xª{ý²þª€×d: ¢aiûäìj~&ØY¡uõŽV{àJ‡÷¦´ŠÅîíþù,cDÏ÷Z* Ò6û’!4Œy×jòú¡ð¼ - ¥Ìö'+<±#‘9»4MåÜøz¦£/÷Æf^(|ÿjuî ]ñ¸\-^¢$^\¹ S†—ä[¹G%e Nd*hÁšBNicÓ¥lÑXÉ–ÛœÀ±y\ŒˆBy]`jï`!þ¢!Çñ!(È …ó驳6oiæÇöëñúSRx³¿éìo°m~.Ì #q/§Ñ)Û¬ûo.@0?d‹Ù!çjÌuµ“µ¹ºâ›3Súèj_2 ûûS¸Œ¦ŸuÏÇnо`túMHþkW áÊ~FA£à¶nµgòl7’ÒÀ¯Û–d±|•QôÔõ½öyKÿ¥VBŒÄòRŸí5è°è–MP§‚D|òÈ ×¶º‚–ê/ãp€F2ùiû@N±ŠZåmÑP0©î…Τ4·—^¾(g¥ÈÐa~­âï„yè{2m1&’º²´íq(Æ?Ÿ/aøÐt4¿¡{üÂa.µ:w;p9É@«ˆý¢/뮬aº’H·¿z±L— ù/ˆ˜S]°÷@ÿx«€÷î›~Û†à#Qèy°:ÄãìËî›ø”Îz$ËQ^èÒ›e`‡}qÖÏÇqèF¯Õ¬gµ?ûüN دñyVœ[ÛB~Ë Éf“øŸ‰µ?¸oÀåö¦uz¥w+KNÑ·ÄÙÎÚò()ýá!M QÑk‡j… Ÿ¿¨¥yå ‘$•Æ«Ÿ&uL” kÀ)< ­kn±¡óÇ!z‹ä¶«`l8ïè|æa ®X}YJú­_žûiw¹ý e8yÝéB¿Dð(F*[mLL•¤ù–ºv0>?ÄKoNVÖ-þס„ýɹÎ š sÙJílÖ³Qè…¨õ1Okkx( ì¤·fÆ1ïµþÃãqè#ž»8k6O¡´Í§Ÿ9Þ€Xöö>•ý]Ûå,<¨‘ì33Û ÒBèYAÛ…Û‰”_¢ ¨&¡E#"±CûUnÜ._žq¡†<½ðlæìð¦ûS0Ø}yrfºC ±ŽOµSÚlÈbؼÿ¯Õ^Ü)·¦$ˆéûWƧ‡;–9?VaÐE´IÆ”ìÖ7åU;¬«}κ‚z(à$ÝÄô-4f3×½5°yr\ºî¹CïâÛý6Ä;ÚåýåtŸ·ÂôüÉ~y‹ù}(VgÛõ A´E“è„)‰^ŒO¿™†£Â‹Áˆýq|Ó©/vù­ä”×B!UÇñÃúý;R›hý?7Do1hæÃ@nl¢Kü{¨$õÄqáÜ%€©‚ªn5mï17 ¦òŠãChºá¹ù/í1h·­áCÂuõ6šŒ·@<ªL¶:Bº5 éʈ0pÏš¦ ÏÜH`/ÜûÝZOEú++Ò¦É@)’Æ…ím¹#Âk'zÈhÁ5Ç©}ΧTFb¨@«aU!šàMÒ­ú©<ÑÈ,ôbçQ ñ>I“‘ûe±™“¿`Mb_µ6õ:Ìsg3}æ»bw¸ÎÆÚ´AZùê.1ŠQÝŠI¸xNÀÁà“%·É®‚€Êú¢ó8uiÒU8 [Pk­ŽID /Ðg£‘]0ÃZݨ4Sñˆ?ÂöŠYU“ß „Âͣ׬=}¬}ÐÀoi^E©5Š9ßžI¦Úo¼XS†™ˆÓË$—ñˆTËï6“åxmöqôò€AdpÓ_†2 ¦>6Îf9&視sI(c¶rAžû¦LŠÚÎÞó~\7ç­W²Ô¸–egQ>ÁÚ”ÏëÃGè-èËYÛƒlw‚¥ež1 y fÈݦø±0.!Vžã$lr+ëz`µw‡*2€Ä nà‚¢ß¯“äJ~ aÃÏ?ø Z'…)O·jÀ¾Âݰism–׸­¶Ž?97­&z¬’j‚òèåâ²€)e,ºH‘PØ<œ³`⣹œm Ë<ÌfR* s­)²jĪátìÇjô¢¶‚¹²MU)Grƒqçɾòå<¥¶“u¦‚˜o {»YÿØÄ…‹ÿµ:>³@¡6Ý Ý˜ñnÝ[uê/d¹}¨‘ê†DLðõS†x)ÄÍÛl ÒÀ¸+]Ë˜ŠŠ¾ÖMãÍëXܺ8 tûUú–-ÐÒGbêr~6ê*µ9&IgØ«¥‹çL2-^Ž P Í€Ý”3òីóKëu¿^Á |ç­aÖš8(ò“îFT£‹R¢m ´ëuL@H¢ŠŽü0ÅæÔ":óÚ/4¸â›Ù2ÉþBþ è©~}H§ChéLÔøòw¤2ÚLý”}¬ óRSÉ¢ï>VÛ6ÿ’·È‡º1„Í—óYùtRâòR±°æ2 ¬Ðõ_\g™Œ×º¹”Ç ¯Nïn`ÀA˜® '•Aïn·#å—ºóK´¦¨•Mü^‡èŽðC?–”y¸÷ž×©ê—l•ÕÞT—AØ ü® 5J _4ú‘2Òdà@ÌÞ¹% äc® x;*ù®x½-ö2R˜á Žœýöx§c3qÀ,ÕNÑRÄog%ÂàãÞû*]Uìk[ܺ7ÖÌiîl+»FòáþT ˜Iƒµë–¤€x^ÛOÆïZÒ|jO“ jÑð°6ò»ˆ/ž™[óßzûã…r!l¬qåÒrSpmöÕ{ãò…ýœÎ2{Æí›C`DP{ê>$5íö(m#-@És[¨ðì·í7ZÛ;|›î] ‘#\¬bâ 3Rÿt…õ´¯2QÜzFÊ‹~œ. ßA!ÃÒ–{¥¶‘ÉfÊ‚ëã·Ç¿¡a°ìù wî³ó¶{1òN¶ÒxYäÉ]ó±­¸JèÕ¶ Οo^ÑÁŒ´Í«ðî„GL(Žle6çZ7 ]°‡Æím‹«¨°„oWZ;Vîóÿ—‚+kÇžyö抹œöá…XU8:0¤­+É-Ûú…šjgÿ—+JêvÕ_êžC˜ªo!?´†‰ÜpÁX6;cËÐaŒµ Búµ ‘ϲ „(ÿ¡ /„Eµ‰m ’ƒØðû%)@¤-mx®ìÕ<\4á!4}-NÎdµFþY!äÚ›ÿ§„_N¡¾ñq‚AkH ÌK¯+}eÛóvÀ§BCYõ©öÌ#‡=×8^(øÌ}ƒ3Š hÄ DྠŽüS$Ïî‚k÷K¡( !— ‡8~.Ìl kåýýÓB˜>V¸Ëå¨cEQ6¾3%GeÝÁ²¯W;gZÞxž,ßÙö.¹Sòûŵø¶Ê'Ó<õÈë²?¦¯%Mñ­ÝÛ‚ü:'Ï'Ã[nXl YžÁ´hHH¬hó¨Ë ¨vÃÀ±¦?/æ¶ Mýµ…ÃæÕïFÈnÚö+¼XW)‡MMBÌZ»Ž=KÚ.le=ÏØsŽ=wNJFyÿêÜôâ¦%{…[c"îŽáÖo%mÜøÚÉRÅk=ïÀ]FZjÀ¢uPk£Ûâ‰.°m÷Xl{–§[”e4à£P9–þHÔü’.QÄá ³·qºaíg~Á«"(RY¸ÔÕŽÞ» ¨N+nwGâa°|hG…%l¯t/äøÓÎ’Þü5ÈÅZ*_pg´¶¨ÄT>Õ€«.›p¶yÜÉÜ;aÄUx®Rk`L•ƒ¤j4y¹C)mì.õ‚Ðޙѕþ9ÿÛ‘ü(“ýu¿aŽ[)sEšé¡*¡pIõSkfÏÅé÷©kò9ãÒ Ñ Dâ·ÂH|³AJÈŸèlÂË÷iåy9¡ÒjÖ'lªf梂øWG0YÍõÔ÷Œ¾xã´Œñve ÓHúÛOg O=..À>n÷¢ØãöÈI+…‚Þ«JZŒJý‹Vwšs øã˜–o1*c²ÿ\æTb+®RŽÞh›cà‹“p+ïÆÑÉôãxÉN1xªGh´…µÔV.ëiĦ5•bÃ: üÓ3ZT5|@5muíþ«{¥Š˜ÐC¸2èHéC @KûAŽ3´}|Ï{ÑCFÊ#é[5×¾ê =é _nA"áFÅ—Tµ‡£é}¾Ã¿8ãßK²RövÇ] V‹H{dè„ÎxËìaNl½ò.x[Ø9v¹ƒ©Pùí¬#ƒUKâ}0:Žq©ñÎüÄ/«Úbô9˜Ó±Û5Tª7àú¼*´ï=UU‘ŸQ©²›DücÇQŽ¥lŠpD œ3•ÀDfE4¿Â{hu{H©hÕUîþ›Û›8y³hºð…%5ñù¿Vœ_ý76‡M^[ê¾êVÔ»R37›îÂa*(xëoCKÌu£·îú»–~Ít^ܦPvZ¹Õâ¨Ø¹ =Êa|o6Á÷‘G›|k„àiÓõ‰;zþa½Ÿ9ë@æ¦X¦¼…$Ï_yƒ—¿ó†FåÊq¾ïv­ê‰yÀÈRþ·âj§º‚Qóó@Hˆ½sr!6IEõ3s¿‰2_©u~îÂÙ©ÈŒ  ^aNE4sw"ͯsu[ª:”Ȥs€-”<Z ¹Ï4°0ŒDtki7$UÁŸ7. ›œ¬|¶Ò§Ž±Ð99Á.âTU®¯t nHG†Í9<ïí¡šU…)QÄfXróÞŽ”‚POFføñ¤•Ý9 È_í]"%vG6´êeÎb åFê¿øR:!´£¡¾ÚT :ò´J°ÿU4VRÃäVWÜ]* ¹»¼9I€û‰à `½A­gœ­µ àån¢àó­¿”$V}¿§3ìž— ªW|êãT?÷b›õ°š Û6ʬµ m›ËöRîm¾š¿àé—U$v'hfΈ¯ /ëòyWЭ5Ç8UUªGÀnñrÏ‚÷Þh¦3˜ûÍJæÄÄÝ# 4Oo Çõ7‡óÄ/hK‡ˆÙ¨Þ-E>s«ÒÙÁ>í¼½ªö9&­ð6®&¸‘gÈ£w·ù˜ÃÁ™º°2˳‹?WBöÅ”ƒ¨†b²*·jâ|´²±EÛ1pœãÁòï¾tyîW¢ йU’¢ýXEpë$éÕl¢z$ÿ«EtmžÕ`Õ>‚Œ5ã¢cdq'}Ãè‡Q ÎHº{˜>`o‰ÌP•ÈÖÖ·eúQ¼.™¸Ñ“ûƒÞ_ÅVÙð.q湋ª¤ùF„bÌ çA[a©E•ŠçÕ˜àtX¡Ôµb ÷” ïá¦ÇgÅiÂvw’õ@èë¾?žÏ/JoØôÚÚ' ÁO“ã2¬Å7÷ãค©«”œ·² ›Ð Pǘî–3®ž¹e¶i0¶žW¥"MõtèfÚ~»¯¡-ÏR¹t…0ŒÁðüJc õ]ÀooþÓ9™ˆŠf•#ž7 ù éf?ªÖ]^Íޤ—è\Ž®/âVD2»+66hsÊ9k è.F¥ø²TY0w–dµbÎ-Rä\Š:÷¹Aœwx£~7ö”À´ÖºbTc¸,•LE¼IÌ( ¡¶\¼ ÃfHkŽÚ¬“¨h‡<¢ét®N/ÿ¢çõ‰‘AJ‹É >_ò|‡?yê¨ÇXK>Y¥Ò1¹’àÇ?Wþ¨È[B±…÷÷…2¸8iIùþU°4ñÁˆB‹ˆ‘ãACÔŠnà²å~ïZ ›ƒ¤¸&(›À »ûÂ#ÑD;)ZP"4àR¿‚­Kç±ê€Ÿ†,6T¯¨)ïÀ¯ÌZJF´;•áûçv€2EЂzeµVË(&°5ÊUœà¹ÛQþ¦-¾Z ºÅ‘T”ÑÊ 0yQ*©’—Áç¡1aS‘›•b`=´N…xS @qIwX <âR‰râÿ6y°ÉDFF{Æi]Mf›@(epoŒÛå;ø;¤?é0wóÃH¢Œ`—Ÿuñ¿A¡m¼f ¾ïT´QÉF4×aªËt¨M·*Y®ú¸µ'¯®ð„Ýç›E à ÛÇ]š{öýYßš7#a¯Å¿u âºu®ÆrBRå³´XÓß¾ï’5§þ~٦æ)àóc꺣ÜïP{Wó‘üH~ð§ä_ w¸$"ëÈJ°•ò»#—5óe©T²Æ­:ò ÛúÖNmn4Ù´Á½cú/ðδ]£Ù_ç<ø‘„¯@*J6*UŽo”E~×®mW”#°aŸç)Lp•ZïE ΜM®¢Òxµ(`¶âØ[ákšTÊæÔ¤°@Eâ €#Sb5tv:ˆítÙaTÇãxËÍ”1QüHBnÚ[×iòÚåb8„ÃûJ›}Ž´&ý‘Ê!©AÁ…à`¢ºþàßPÍ“Ç Ž].±“@hl'¹§©Àþ2H)‡¨æãá¹s€²~ˆÕÙüLÏH%[؉úèΫ8Ã=nÊíR¨ éÀíºël€=Ž=±·=™ý¸v„‚DHÞo(±:”YªSnÍ—el4°Õ9x½Ýf9ËD–‰Ì×jk-&ÚNlßPað][Ÿ°.âÝ[Þ'™jaç€‡Ì ¨ú^ÒþØŠ>!6¤>5†Œ®R^d®¶ó*X%t&Ýbhð×µæÒÐI<éÜn× fù4¸BþPÐ{ÿÄ%oœn ÆoXìG÷KXè®È0RjnÃÛs‚‹Ÿçß^Hbä ì+ß°«ÊÄCªöE„HE5¶Á)²gxCŠD%=õ¶èæ\/g˜€´¡úGù]D]7­¡µZ ¯\ôO 5h¿'`ÔÇÒ¯þß”=ŸïEtd4&©§Û¢L‘>ÚKwB iÊ~0O³UÏÈ ¤=U½9“%­Û±â5}m:³E ŒYÒ±ˆó~%Pÿ‚Ž÷žVQ¼«AÄKÕ¨Xg=ʩľŽ÷©ÚVÿ”“!\‰ IÏHþ`ñâ"ô‰=&VÞ»HüqâŒ7DO.OôF\v‹Mâq\ÀÅDœæF:ZFK³|¿7µå˜›írÍC c¦ ÉÖænÎ܀ņ>ÈëåzHEe"‚‚ò|÷Pj4Çw]7Ï_§Ñß&°ÊRêdhûÍ1ÓUWÃýõÚwê³1KpÚ'?O,2Ć1Šx^¾VZ¥©KZ/ÝØ™«xâþL9ϼ%¶dWù@¯VÀºÛ| ¬“ÕGÏ%.8e †‹tS¬?!BÒ;ÄøGÄ×´àÏ^RÊšwiT·÷" 0]M^db£ïD X°[ ¸®öÜê ‰BÑÅÓ$æVð|14þ1Ö¨4; ¬UÔÿØ%ÓªNo‰ƒg2Ò5Ù‹áXÆ]•JŸŒX Ñ?äÖZeOHäÔúx)QF·Nøýæ|bñoû¯BEÑ©™\Άð]#9MQ5ßK dÅ™ëĉdÌn3SÄÇÏ ýà·¿|ÄèÐ8°³â-iOØ"2ПÉïÿEsß°qZ~–HZÇ ¶Â’®"R’y «ùÓo°nTl™Ó% Ý«éóœä*ľ“ÂKgÙäÑïù:ïÇ ¿‡µ'SÞŽÅ?ùqÝby¢iu¤®Ù÷jÖXÓªãjá2W¤ÁÒ0ÔdCiñXçò¢3äFé\[`íõ¹açêc¤‘ŸÎFé› mCÈT±›Á©”>ÕF61‚ ýJ-aÊÑlØT;¬¢ôÛ$á|]ë°óè´'¯„³í¶nÔ¯?GRÇ)÷(¿ù>¸&îå»u÷ÓUÖ;ÓÃòRI›.‘C‘ÈÍ|Ô-X"íˆÿMºþל{uõŠ’ÎÉÀÉšÉóo„K÷¦võ·í¹Â*>|?iË•ï›:í¥J¶^]ñäœáòS ’túš;2Šk°XÉÁTñ1»w]I4 ÌÛ‘4ÍZ!j›`„òvH]ô8C–Þ·»w…¯Ûüä~,,Bß: Éõ"Ç%ª´ÁM#‡»Ð¶õ‘žå‚¼Æúa$b»"Ù´2_Æ :m´´ÿÏž¶±3{Do7BÛuñ_(b!<ÃtDÄ4Jt¸nÙÓÏú9ƒ ¿ÝˆEœ§%“ÖP6Ûû ]·žÜüÉ@C¤xßpÀâuxžŸ~ ‹>/æÏßÏÁœdXØÜ\ïÜ7·M±À…ôÙ1ïˆ`h?Ïäí(šß:»'Ê íTb|ËLpLT愹TthS%²° ž,]ÿï<ti/‚û–3ˆ¦‚¡¶£Oî}Áà»Oºë~,È<Ü””¯ÕÄ¡^?GXZtñÆ–æ3F¦Â« tóH(1Ú¼ƒ¹÷ÀŸwD«ðz€d 6•Ney61P&SÈÚ’ëjá+j?§)Bh…=ÚݪÁÒÈ–ñq×]¢¨Àì=_½Bܨ0Ò;ײÒ+½Ãx*b·çQ-ÐócV\nÌ"oã’»º]^áƒcªÏd°¥%!j÷ÝŽ £)¦&% ÞjŒ7G4ÀN»jW\ÑL´R‘KÈœ*+¼ýíO}vÛ'u³0Žr®ƒ½="JÂæ°­<'Gù½r&´“€¬¡«Õ‰’S¢+®ö ~eäô¥§°n\«:Ê5óÇœEŸøõLh•¨]`zø·ŠàG$3Û]ÿÂËô_˜¿/Í&7ÿÈX>@F ¾àû3ª‡(¼S5J·#g>RÚ¶­ó' ?‡ÜYFvaûd‹ee—S Äúd^Àñ:7Ò5-¯¢ýDx£cÒuóUp¶¬:À°éò…”ÿ„wé/_vÙÓ¼äVT^þ„¦pþ•h-y– IfÐ;a¡ôÁ^õ?f"†þÚ ãAEÖ[$sŸ‘!Ñ*M(z!h&‘î;ך)qB[нV1@¿=Ó”»p(wÐ7Ÿßvc    ê<ѧˆëõ»‰„PHaØ­ÞÛ´ñîMxYËRÈUÀöQù;‡û!™ôŒV ÃpMË,‹éÚf&îÏBear5 —«Ê@S17B¢R—ñE×ù 4åÇñEö AÜVqu„5iâ‘Éùe«ƒ/©pù™h¢LC2gήz(÷ågD«Þ™lô”³ö+åCqÈuvÒÙ:• ‰/'Dœ¶z|Ÿ]S`` Ù œ4‹9\SÞþ÷“ƒSEK|°«P'ÇåÔR&ª%ÅWlÿOÐŒMÑn¶3< ; Kv›º wnU\pRˆÈ ñhÏpaþhkßv™íŠZòG‡˜_kpc˜Vv×êvÝ ®8÷’QnüQ$–uÉWÄa¨ Ê—8éá”VÓ·Ó󗋯eý½2G{¿w<é'È^û}XI€Fª×ºÑŒ»ç<ôÆ ÷™UÓ~,,|u>£rµ’PÞÆ´AS%Iߣ±~6©ñBAJ7´Ó½t{Ôâe„˜èU_ãë‘2ê³ûƒËÍU'ßQÁø_<¸v³(ŸnŽRòk=ˆW¶2©h [_[»Â²0n‡‡qm]Èà³§_ª9ÿþŒ—{˜]èïg >M’q‡OwC×åÙcAÚƒsØj_E¹PKïд dYÁû®´ ‹ëÇõ~Í-ªBh}ø|0ªŠ–Qí¨ÿ¥I†¨>=˜¡$†Gm×!1QjW>î™ÛÈ$v4*_÷ÛñÅkÎüê2Væ!Ú€ÿŧ7umÞ¸w4IÊ÷´Ñ°‘äˆiÁee%ÇÖD゙" f-òþÛ Þ€ö%^´„/ÿ0¥û'9¡-H~//.‚ëež›Äà1×õ6Z·f íÔû~œ°œýOÇ­z>ƒS'„0¿Cçk ­h1ëlªµ7GO8#·øÖ(1Q%*Í`"TA×v\È$鬽 7G»Åÿlî_6QŸË7›£ækM›Ûñk<§º€E¼%…a%IJ¥‹B{ÞC {I.t³¾–BÓ#ÃQøY{¡¬å¼‘Tà•©Ô'¬è:†¼Â.£ÏáY‹Ž#¶ý 0(»Ñ¥›'dCMIÖ÷Yض‚ýÿÊÕ«…È%H×ÏÇõ˜.1·YNm À@ Ôf"nÙYì%´ŽžÿÍVGöÔ¦æad· ±ýò €R1-zœÐñõ ò˜Â߀?c<-cJ.K´O©f‰í£Ò¯­ÒÑPñÑŽörßFúõ‡ÄhYD¿±h©âi¸s3·“í9vöøõ²Ž´_\GCLj}ÔpÛúhä ÎÓ h÷¾”hi‚y „ظݽñ(=g3K‹ìˆdÀ›„ ¢[åúߎ3>Yè»Å»“A÷†¢ÍYŒ–ªTʬ±·¶–”¡´÷&‹à@áu¯V›M›HB~‡™drqt¹Øì Ù­R…g[Ù=žÀ}ŠÒ™’J»;»ê8& Ôwˆ8 ùÂåö. D/8±jÜ: Ê­h>/Ý"l)6“ؼ¡é×Äé'°z°ËÚ_”¶~=÷ SëÈöHAtsÓ±—Wý{áÍé—D;šÉD‘uô½~v;ÆàÂá•*à›sŒŽŽI#7ÈC¬]›#žX²ÎíþÈÃêwM[ÐsŰš;Éüt9ÏJÒ˜V:1ÍÓ°v…|äû2+Î.caŠçéG”Ÿ˜& ùÍSéº{úÓ š8•g°¢s’!Í«®Ýê=ãÓhÖ—¸~°ºµ³épiÒžëÙ¬âÙö:«ÍlÑ:Ñ×FÛD‚â^“{¤Ž^¬¨=:_û‹ -WÂm—2{I FÉÔ[L«Ðq|Ð väòOý¶>Mý•­Lâóõ«E=CuLsÀ&1ãѺ…­ÛØy°Øµð °âs—*ÊJšÆÛŽ ?ˆXô­\!íè›s!,Ñ¿;`¢hÑócMˆêŸ¡¥/øZ1†ûÃÐyðPž}ž6ÃëÉ®ö³‚3áˆë#Žrøß°n­®¾ÿFµ9ûæoÏë'Äø3w<ÔÚ1¯ÿ¼Ñ¿¯Œ.y¶i#t¡8n—d3¨d}%;ïlD {éùRí¿‹2Ê/ê‚3]Ìné^PF4ëåÑê¶; B_è/8Kl=›µpâEfp>ËTðÙ­Š«=MTöËyÖßPzRÒ=uÕLS9JñLÈ‹§ÚŸÆßcþè_ñ`.ÿˆýט†®A0ª‚K5û´ÉG=cƒþû áÐÉ[8î¢`é•a¶{,ÛÕì§V¤u ¨—o58jí•haÔ¼ZîÄfž½OîÞn¹@ã÷`q³ì yXÓvýYN«ÏMçU7!½Règ »bRѧ҇íç‘J£EÜ–ÞML©díào‘*=Ml(ÍõU·jMƒ¹@™e¶ôcïók©YxrðoÿÈ›C¡æd¾›€ôcBŸü~Ù#kç Rt*°¯¼ÞIÐí‹Vo¼L¹3,÷ñä–& óN‰Tuæv±NÛ3Èü_^—µ íÞKw¿¯s/jY#¯2! Öýmï'c¢ÿ}ÕºN‹¸?}ßÇš—xï&>|íIn üçÛ› Ø“ˆ± ªÞ2©(Ž ·¢kÄUÞŸ‚ðxa“Å?bè4žƒœD{³)h® ¥`2¥þ„m.°ž["Ó²Â]cAáÄ=ò%>ªäo§ àøŸQÃsa e$ØÙg‡Ó?‘?Ð&€Š|>†CÏmè hŽ ­^“;0Û&ûîs”7ùU»Róÿìjv}Fc+Ö}Ë3ƒjºGe+íD]üç1 Ñí¤Oq#–ó²ŬFJÓ}b4Dw)}RƒK—S°2ë?ò’Vٷݰ=YÛè)óÆÊi9¯í_&„eF§…DfH£îüéÞ ¨,9s£ÉA:>”ªzB Ûa⇥O€k¶Á ôli¶þ ö‹³a–gëäᣒëxñ”ˆìkŒQiHžÀÒé~ZFêQOÇ¿ç/ÂÇœ s6Þ§˜ÒŸ æÏ ŸÚÛü×jºÐѵ)Z?oÕïëŸnrü)©‹™²‹jÈÚÉÎþd䀮Y«ù4Ô+„/dacð¤@iÉìʧ‰Õ¼Ï ž{¢î| ýÛvXØòviö%qjÆ`«Í­?›Ô¸ˆëö{>ÔùôÏýÞIõ2cà ñ:º4C¥ ØËˆV¾ŽýLsÔGNgoˆÓ5 Á²óôÍ#Ü »[0èÜÄC¨µÊkºóŒÑVE>N ߉ ­ ¼½¦nøsº$C$¦ù• è76ùŽÿû³J¼›‘;åO#nDЫËžôÀûÄX}dä‡EöjGyüLk&îç»DJgåY (ˆøØ‚€ÿÛlu˜9´0}PîLãš_„M¥¹VŠíÝÊ™D4!¾¶EÕ^ˆ BêBRHÆ‚ÝnöbDò£Ö¹61z7Ùö;óBFØ!Žã½åw2Vïõ<ÞÊ"Aqè[|ØåôDÏ•#l-ÈP¯öÇíÇŸÇ"”,ç”ß±¾ùš<í %r–f‚§õ Gšê8Iù8㟗‡'´ˆšDû\»6û“ŸÏU5T:P¡pM1ïP”=à`| ¾¯Qâ®§ZÈ*Û8ý«ç U¢kè˜c*JZRE„>Ù„CÌ>c"Ÿ"ðwv6É/Jm þÅÍV„/jÏÊ Ë™,ª!:ó;xœuʲçz¹‚ö˜û:·.;øê’¡…+ÂІ …<âÎÌMld1Ò'¡Mk`e®LÜ™ó`Ôã!äå³ê¹’Ç®]œ0â]" ß•½è}´8xÉà¶ôŠ“ø†•ú¤>a(!»¼»Õxx-D´¡#ÅL€–"R\"&¡Ñ SHP¨67FË%yÄ+@äi·é7×ÿ€\zÊ%ݥ웢ü£À£Gæ)gß=æïnü-ƒ­ª7å,3ðí•´59|ó¼ûI£Çg ©›žú‹Å’ÿ˜ßZLÔîh#x•YþóÊ%ËŸÑÛVùÁ­üß#L_ÚîAÙ]®ÖDÒ\L¦ø§_¢/¾=ÖÙ2–Ú3ÍÍŒ³i›ö>‘3ë2‘„‚R™Œ©¸*Þþû=Äf_‡¢¥ú‡à†‘/ŽÞÔ•NŒTƒ+UËÛ§îıæḬ̂Pé:”OÅêWÉÓA™tdáo­¦ªäӚnj/Ét=•¦"¾Bº£½¡ÈtÇÖö7Oal‰—{ÐÝgÍ)ošÌKO ¦¥²3'M5|“-)Æ|¢Ïf‘Ýÿ”ý”æ‡cF ž>Cƒ ðPxØNlXÓcNñÞ¯T­ô;Sšáù 9œëeÕÞšÄ3Ý9]Nj ‚ƒìo³mÙÞKnïk1ñD¯Š‹/}UóÏ‹˜]çÏØlÁˆÅžžï˜i~Яσ.hîÚxÁØ@äh#–ƒhݨûóÚË~7X6Òå© v14r¸³>1ŰJ{¥ÿ¯uâÊÐ{ÝÿwàßNBÈwõ-nz­ÎÞÝÃ>rg}¨˜þOa3Ƨ8‡}UR¿X‚q¦ì\ZÖ‘íwS IV&å‚@ÙÞÜ˯î(·Z˜?­Î{§·jTlÝÄË!°û,þ&:4=É%ãN…`‰–ì64ŒÒK;©Xc­\¯=ZÄMGŸÈŒNÇ–_•Œ ‹;µªõÝUÃG…q†úI1VÇ~vRUƒ&G[ºÞjŽÄ.xœq˜‚m_f;e$ŒñpC]ÜF™.’b+@,‹öÇc´˜s}1•§’ÿ)ý(‘µÊ令f|±Z/WEöì~•Õ~ÕéîÁ¶;Ö-[k•õ7¨’Š=³*z 1Uº\펪¾—ë¼Í’jg.:íGž{BÒ¨uÆÀ*ª¯ðìš$ SÁ„~t'“‰Vѹ>«ËžÒ‹npþáóô@&OÃíïÛí‘2Ý9ž­FžÇ€Œ®nuÿè[¤oÔ¡ÿñ}ô˜‹ñè”uµ4øñìfn.¿F*LácK‹P-’0êÇëiúEÍÈExªgÌß ‹õeHLêߢ½ê’9¡nšŒGÔ …³ñZVé4êè—¶ÛjÎÍÂJOõ> ohÒh6ù38·F|\ÅKft8šB`‘“Ô KŽ=é¸ýÓ Ÿ½|SŸ¡@f‹›@|À&½e†±ÔÏ(ßGß;K¯Ïº…2‡¦áíñZ£PW=„_ïðuë&ËaJƒbç4†Ûa§U_#úú&Áؽbl!Hô 7¤ŠE¥oÂÈ?_ÞG!=瘄W̪IÔC9Z[Zºú­î©,à·ÓÔÁy FˆŠ4›N=C6ÑqY•òϲJº ^BÆüAuäǹ0ï»êO_ì®WŽóÅ'ŒYU٤痿Ë0öѽ³’uš­„ºxÕ+Rqÿ~Š<$šmùå.63˜×ì›QðEUºü$ÅæYî$šŸRüÈÀWft2ÄÐ[YFqÉë$ïûÆVmÎ+á-|Od^õ‚òôÿÊ¥èÝTOu¢íj.úŠówG¢eÍWDX0ü§RÈÿ]Í÷èž•ZãÎm\îÙ_)ŸÀ55À„¥ýK lŒe¨†g]s•p5ÃóhóÞÁÒr0%«$x¨!Ø]‚d0+ÌÊC“ƒâªšn‚6õrµàBÌ[²¾‰Eì¦>ØÁV¦Ç’ï…NPC ã‘ÇYœÇ>vÒsPß(í3½‹³p ê¬vd‰‚”[%Öz¸CõÝÌ(m„Dß(ò½·À“5†â|c—¹%/X¡Úœˆ,ø†€Œy£¿•X”¡¿c[té§ndžÆ0à^"ÎyªÿQ‡­½™{¥Ë÷û3É]Ý@áêWhrEì)ùf´G¡’¡4«Ô¹—ô§YÞO¡…ÎìfŽn%Ç)fçÑÖg*aÇ‹þÊIî¨ËÕ¸l®|?z¯t¬äÜ`¦ŽÒ²—Ð]2 ïkS %€L¿R#¨ûô…Rhìlhƒˆa·••êc‘ÀéÔ2¯˜^ZÒøŽRk˜wµÔµ„’ϲÏß5…¯8?ò=Á_ S*Ú¤ÕsF6|QÕ»!¼`ˆVÒ—ƒS:Æ÷5FQ´ŽºÜ¬eËU ÊK‰èK6t – ÊqüîPïˆÞà«i ±P½y1 M™ò®ð>G†¦š¶l‰š¿ŵ KM‘°8¹ ØAgE¨EÉQ­]‹|iºÆhçh7+"©s¼tV Äe‘}Æ^,-î{Ëz­ïŸ)éM°¡G¤Ú9¶h´«0±Úïõé?:æwë­Ä5^ínM˹ÕeUfi»º8MjLöÖ¼1 äÁ;áîÿ„éà²ÎüTÓ$êü4''#˜¡«yÔ$ƒÏêã2K³ÝÀÖ•££¢ ¿+Ht;¶*\À m°fãšèâë&ç|]Âüú‡ŒôT,͉FaÖ@´€ð„Ò{{÷_|ÛÖýÿoýjà •›Yd؈?Çb¨³%@ÀMæÕùÕµLŠ:¸G1¸½ÓqªêÚ§Ìx×㌗µ›ü³ñ|h[ ÈeNÏÖª”r¹ç§Ös^IäÁãÏï<Ð俱+•mcÞ)(6S£«CVÇDõ•„ŽÒØÒx×”P+®.¿Ï%<48îr;q·µáDues`Ú\>G&ï Œ^‘H/=£høl ÔAçyiä·¹íÄG5%% ^“÷îúéMÂaf‚—Ý&,°á±-rmâýèÿÎ>¼àjO!#]Ä4ÀŒÀRgN 朰E³ˆtˆ[÷¼,ßÏýjëô0÷}þ¤wÌÕ¹DÊÚ/áZhqÑP²¤Ã¨ žd†éÀ\ä’'Ã>|˜±ü#,¶LÙÛ4Ä@z=õÆÒ…û‘ª3Cÿ ÆŒ`Ïq·{8•y~ä æˆêä?ZÙ‰® _èw?\J•å§ãáö3ˬÓöŸ‹Ó¼:ô÷Ƒò>Àº|‹ÿBw$g€pNÌþLáS½êï0.ÙN@C¯ÇÒ(ÇE3VÌÝºŽšÚȶü¬UêΞn¢¾¦l%$º”V·á2Î%dº¹Q¨sP?:ñV(å—0þ•i<ø¥˜©®kdÃ8ÃØØ¬r1Z¿i ÿÉR[µQ‡ô­\#Y&6„ŠÇ³”ã0+UQYóÙõÓ8€FfrÇñ­ß·Ý©x¯û'[T\³‚—:ãR?Ž"³¶gp3&£¡ß.¡ “f/ð­÷w´aŽÖ&|P•¬È‚> 6§•Äw'­¥?¼®|À™‚YKu)¶í“0Uî'.-©F)ðôÝTÏã(„ìXKûظ0\$!ødzrÖsË5¾µU%¦Ú§K8á[3‹ebî|™l™)-ø¯meúuŒš"™‚4ÁŽ}{pÝiN ¿É‘¹aï2m¯(rå·ybÙ@¸r2ŒOËâ3²£Ó3Ÿb¾€™îYËbRêåÕ¿`¤µìQÿyÞÂèéx9¥È…þ¿#2 ) K̼ÛmGp£Úh`4ÿÌÌ¥“ˆ¹g;Úø»ÆÒt11ý­c”iÁ)F“Oü€°s_û/å²bímáöd|™psM™æézO˱+ùÝ̇{¬eÎxžjÆ#×¶§ e¬¨9ôA¶}“—•'N–ÀuGÞ>mLgJöcx1Þîb”èñ%K¯•­T€^lÞ®Â>föj‹[Šz@%“åÁžGS÷›êÁy æÑi3ÍÙIç¤öO0«…}}­ÔžCõø[ƒ™HÁ0ù=?V‰ºû¨‡ïùs<§ Ò¨®¾u¿àé¬ß‚—™˜Ø±¾°ôY lÑÒw«œÊî¿YØÉÝ2¯g6G~tù&ZÈb*Ú÷:ÅÕ—2y÷RdüÀö}¤ñE˶{ÀÄÎíw­Êˆvµt¾yw‹°O €¬]•è‚ î2w«Rhº°â*¡˜`Ljµ¿Û@¨K’š­wN1Ø+-ßJ¨Äж2ÛýíJ–Aâ<(^ÉAÛ&òßÛ±ÎS£ÿÒ ÅÛÖ½”Iu8²Xø×pu¶.Ï>Ò‚dÂíu)µ”›Ô6dqEǼ ƒ92ìT!}Æï-Å&4—³<ΑF¶L¾2áÓj[/“äÂKC)ØÿòL—jMõ5ÇZ'MB§JÒ…zE^Í ÌM5wާ%Û¢×­tÍõ͘7ïŸQ0ÅÞ—‘í9Yv‚•HdòvI¤5ÖxìÎ=AÃH¥WÄ#جå .¥ômX:aÎÓ^ÙAðqQu‘ñ>\&Ó“Þk#_7Ca{€ØÉÈh›·"ñ uÄ®îþ^Æ=½òêºõÄÚfWjjÇì~8Ð˽_IŒ¿ë&@w”!{ÖXÐ׉p§™P!ŒVâ+&ÄôÎ3?‹›ïLyãWu²‚¨ Q<·«ôHÃïlXŸêÞäS+£6¤æ7^‘Û¦*)ŧò€E'cõO©ÀOÙ«¦3h@b«º*:\¾LØhjP!WÖ E\ËC9ÐØØÔ?Qù##/d¿G`è^h„pŸÀox£¨ZZ€3ž‘ˆ$”1õI)j±‘§Ú?ÓòµÆ£û­ÿƒ wr—Þï‚Â"„GQÂJ2‚?°ÊŠ !{Ï3Q‰¬z¹œ1­Ã58×gô*r‚× ™¢vÞ ?†G¸«ªTm,ÅJu{…Ùˆ;â'ŸxÚ_è ¢l"#@à_5¿ Bç²ç›à  ˜³s.¤•ïMý¯r¦C…ÆÇU#0^B]®Št5ïùdÞE4]ÖQ¤†îR·jþ.-qýªg³J¯˜ Mt†ÔõªFiñ2±Lå!]\^èX"Ffˆ½Š&Ó€~$ uõÛ:.³e¿Ý7 m(¼.¦àZ~<Ë~Ó˜ ,œ¹–Ûðkpïy„»‘䢚ËFlôÜÍ‘é“)WÄå… ÂY+°øG€>ôJæq þAP#ÁKVšhËEìˆw·sê~,Ô6ú#¢q;&)ƒá¹mÖÃæîŽ]®Öaû¾^œúµ´¸´Ø3Ç&d1†ý×r!zÀg0_«s^@=ðòý+ŠòkäœéQƒêIø¬BŽ£2þgaä­0GÆ^§¶?ËdÌ™Âæáü€+,vóù‰Ù=Ï óu¹ªd{/+g^ý¼™Ø©PëGË}ƒÖ4]®A<\U†¶.Êô ï½ëüTãÜÿe+ËO;ä¾µ0ÕdÌ Èì¬4œš™¬R'9ޤ—¨‰ó ú(¿ …4Âýt¤’ æ´Óß;K…ˆ¼; HKiÐYúøeÆ Ÿ¦3Žjê)z.ØV;0Ò*ÇšÆe)@¨º,™òLåTÎ9¡F½+Ímª@ãTÃÅ©»ºSFÏ?ÉÝcŒšÔ!DÀ£•ÇK æ’ôuVõhÈȧ–‹Ë’À%KŒ¥€SýüâÞ(#ÂdŸ1“2´@²":©è§ž_“l†å£ä:ZP†â‘þ°«A[±øÏÿÃSê ­¸ ¨˜«`ãý‰–YbZ&›Pؽ$:¾K/t¡ƒo°ì…Ý@K50jijõ“Hø&ÑÒ‚6D$ÓÔÀîÀ¥'~ð,6IžtOóN†wžà/»¨ÃâS2@ÿ2gi»‡dmA'%Š/-¸+l,˜™š»û:\]Y€¾ÓÈIc$…Üá»C–3 –'¢€ñlý…i¿ZTXiÿ,6‹…1¸ß”ÃT RrmõðÑž¸çMMiO½±äž¸£¹ýЇÑ&‘#ž‚lR> ùÌ7n[¤'çùxëS˜ºp“*oX]Åó¥ç ŽäÞ4¥Øñ!Ÿè0Ùy @Sj_IÈ•ÒJZrÐû7»ìþ¶Œ™¶ÿŦpÈj”‚–ŸÿÌ5/oä·ï1â·‰"ßåÍŽ·@XÙ[0›ÚCžT-¦ix%Ò1F?p‰„ÄéÞú/ l}ÿîÁemôI˜øšB® ®¹·…š_eMz]ºUPÁÉ3 ÝÊ¥!*-¿—Ć÷ ¦ai¨ GØÛFY5ŠÙ“ç¿ãû¾`2jbôÛz )«€ ‡)lay®½Õ—€Ýȱ"yÀTa¡4ÔúfD‘Þ턤±øon»}þ¿xëÒ…Õv½L¼  ÝYVž# )ï£e²¶ÄTÝ«‡¹ý­éÕ64l×Ö„Óœ¥Ý”ÙdŒ8[D;m€¶J}k¢Â¶!§?“¯_½°(þfµkî£îîNü[J J¹«ôóǘÓÈ‚@P¬›Q™©u¹–]lËÌhÙï€ÈÓêë.}<ô„^E Þsz_H;OÛâ$ZöÆ´åÕèüßX!­ùÛ;ÿoÂüª˜i}Œøñ´î‘ a‡Ï0  ±x•â ºáPzn'óøýy£†óB™”ðÍPiÇ¡OkÃMTPÖœƒXúºœ—ûs&çP-cõ"^„[j­®ä‡"b°¥ú :—rK¸^k&‹têòÝ=&j¬Ix>W}¸§ d.Î6:'ÐŽg5Ø ƒû] ÚÍ8–cw™3\å™Hníöt‹i®q.¦Äœ\ãýRºÿ28« 8aÌÛ¾x¢&år2‚E{Ò^¡‡KÓàXŒløå×Öº5k–6Ñ>1 Œr‡áâm@ï£]-·1Ãä{ö$V°b*&.e aâ×Y“àu³² gÕvÚƒI}tV‚gúgƒ ®·˜[ø-”$Ë-ë²bY3ÎeF|B6à€U”uZäÏrûrñf(=ª@ú«k½Õâânôê‰ÀÜû~æ—ár*¸x)CûœÑZ–éÜqh®z{‚Ÿæ%§P²6ÔÎpÌç=êp1Ä5w¦÷Ž2œÇÊÑÔ¼' pƒˆöáñȀžAÌ^•âµø5_þ­ÚÏŽÚY.ŸÁln‡Ã%§£b&b^9Ââ%иµ™Bóžp,Šà#qsŠ>I*bú¯;/0b„ »žd³Møñ¨î#eÆ ÒT³7Ë\'™XöÊt¿$˜3‘L´äU: r+DÕC8WëN¹êN3ª²á q¶³Ý°•Êkî çiU*ôqN5q ¥.dzEQX{Z¡Ðñ}‡5^Ÿ½NK°·CZ¸¨N.ã¼@‡%¸Ž‘ ¸!@]%kÀ;l·K—ÉðO¶2ÿ#ÄM«f­v£ˆÔŒ·iÖë&JrºbŒ¸g0AHQæ/#Kqà {RH¼KæP,·2²0=Úü€’<=j‘ƒ÷Vé¾/ïw²9ÉÏAû{”ýûšy‚°"°"ŠÀ««¾Ó!(–Á‹Ï ·_M#®¶zÕ|ƒû%cÔ›œÞ·NÛ.uÐ}¹(Mp#ÑÆ¼wÇþL6}ÊÈâý>#&{Ö–M9¯7#›ÓßþÀ)€ˆ£n\G râÃx4/'1sÇùõ2y í xxXš¥¬UEó+·ÿÉèpÔEÇ$ÁÜÎtŽù´4ú“8ü±†ËÐ ê$Š©ð„/àCQ1ãA ©å­§õzÕTÐ.³~”«Û 6–ø^âÌçØ`™KŠg‹lµÌ “a…h(x´M°¿{ è8uÜ"ºy(\Ð8“ô>:\£œzyAŒC)'øƒ½HÞ*õ¢yUŒ¶/Ô¾uËpÌ$8“â2\A–¨Zàªsv|þ-ßq Ñì¢M^Útfr,ˆmÈ«0Àž¬šLøÝu˜6ô„ßœf[Ùk“õpL&þÿ]U‡3¥ .䆹ܸÑ{?z–.°ã€Vš÷ÂÚ ÄlY˜`Wræ.ä.4`¤a®;oä§‹2–›¾;@’iý+C¾º!™iÒ7TÌìWgõ®SVû$‹Z¯CF(ý÷ì$˜€OõPDrø³ÌبªÃDÅ"-x4ü7aWâÁ †gv­ú®3Xqv±÷0 buOÓJŽd†ý%J Ÿ`€`õø{ ¬©3ÅÎ{˜•²P§çE†“áÍß]›f89yô³± ;ŸT¸A¿å€6§lÕ0™zT3ã^_ÿ Ü»€cíÎÑ+^cÐ5gÕSh¬£cû‹qIo½j™64·ò]¡õ~ŒScÅŒ ÿŸHL7»bÆG㓦.­1€M²³-ËÐ$ç‡zó1ôKyލ±·Ô ’´êžPÆ,€ÁÏ ~ž£‚¿õÑÏ™GÜnÚ}ô„Ísí œ1–ºãòæ*œ<ãÅÇ(­Ôåe7v$)l$S`‘»ÁÇ ÐY나cMòeKÆÆ,=jæ-a¬-Þ¬oR8 ùUsÀ¿ÑÉÃ%~1uñW‘Œ;ì„%»‡µ~Äð·%Òª¿¤+ª(ÌôÄ L ªˆ9ý)TÔê"#Ê%ôÂÉ1¤,ù I}qµuåŠ+˜.lLë)hTÍvÊ”BçrØÒƒ$©àc•¹x~G8Ä)u-vømÖ.þ›éÀ¬>ÍP²SÊBSî.ﯖÀ„?ò5¹«…˜4ó\Œª°¯ —Ñ£[ø>”È×*|£¹°ÐoG‹Ã’ý,J¶¿ÁˆPñØÆÍHqÚ¤pГ^=o˜ˆH¦>èö¿¦¹r±²³´°f gU"™Ù¸U؀٠UF쨻ßÌ¥T©‘08 fcE]GKaÏ^°uvû Rµõ®:{èd0£Å¶˜Þ1Ê…¹›5×ÍE—D¿žõu7¿3¤¹þ!#‚õ[¯Ê‰éú£¹¶&ã]<«ç{€ÙobŒÿê÷Ó±ûÒרY†}¸SY"R\é?à—šë…%ãÇί2ï(×!0DšØÏÂÑŠªm ”';-ÛþÍp寔S7–Øò) ¾NáTõ1‰Ž›\Å>ñ*Mi;RÈÑ1£Ó Ë&¹üøL‹åN’ʲ¶‹¡ÆC,x§=n!e!ŠeÖ¿³Äd¶’D¹{©è¨ëíïO¨³ñW C—ïù/­Sgs÷>Nˆå¹r{8èCkõï·ºH~Á¦©Ñi²gö'Ê]Þuã®¶»Ý§È„Š‹kS»³‰”„Ë×P«öÃsˆ G¼cô)£TÃeöÆÿè9{'<™A„´ãóòÛŸÑ«d½ºÃÓ)¸ýñVÝ‘ü‹ŒüÜD)}F ñz[ ‚Ú:ƒùø/b©…ÿgK;É„¼ì2ÕäŽÚnOFöŽüàÃ,•§Èè:1ó%9ŸÁ Î~ïÚѱ5VÅâY?d“°×i»UEOóz?)cÝ€<êþÂÕ¼õnÚW‹ÆFÔ wÔ:Öç&+óëdžé¤”ZV53‡?Ô¥W¯¢b=x‘m‚€Ëï/[¤gFcBr“йßO£'‡Šu毹€«B9Øo=›?¨³Å QˆÃíF‹gV¶^;ê)¬E. ƒÜ»¤rŸ¢½@­j";_Ê*¥ïà)Í¥FËJö¾ÐÝE¥ÌNâ9/ ÞP‰8¤%}þù½˯?x¸…óáWÞsÌàk¨—Ö 3æUÖ©8ÅË_C¿8FâÆ’T©`¯ëÃX…-ç]#– ‹ÉìH§ âæ_eò«—¦ç9õeUyâÖ[†a6~LΛ ])rÒœR‰ê@Ó.BT>õe8âþ÷Ñ ÊrÛ|5‘úõù§ãý#x Ó[T}Èæ.á }ðÞߘi]±)þ“à€NŒÕS²œÄÐÉ‚+>´‰N|;v‰žÓ@gý+ïCM{àv ŠH«3âtþ£ù6võ+’™Ù’i&«}8üÄ1·93±^$ácäW0#£kqg¸[u ¤úµc®O%ŒÞ/) ¯¼+àæ…RÙÃ㪼Ûy­œ\èÄž¢'Ê…V›ùðBŠ™¸°íF¸®h÷%iuïÒð™Õ1kÌJÁ }ø ´òù¶DìÐÆÓ„¿ß-Ìèn[“Ä>(.öåpwFH§#ê¡§¨è釸B‰Aí¦Áµœg"Vg€òWq íµýô(9ã‰)s`íGõbR?üwL‹§ŽÇµÝÖÍÊN9Öeæñ©M–ÒW] §S þ…«[Þ'b÷6[²xP1²±d‰MKϲ®Œ5ýºîÜÛÖŽ õqgÐn>ÓMÅ8ùâþصáòIFqw3"¾Ã$Nd§ù 3餮gã;#è"»éÊìÿ£PVÁ %$Z‰QkT ¾³Ñ‚U5a;˜?§KºgO]‚lxy=Õ•üãÑrN¦­ ÁýC(܇Á^ÈcâÙ]ÜÝô;3Ó»ƒ˜W*dˆ²;HXýñÈñôAr19G1ݶÒ˲s‡P¾~‡ç$øìJáøb™à:÷`-ŽˆãJ{›9X_•o#Ž9÷ÄéˆG’3^žÏÃ.Z×’ã¹`¶5“ü1¹+¤wŒ·ý“³w_¶rtc¹þf#ÔÞºl-ü¯†ðo÷ÃeB{)à‰0åÀOÙú ,:B;jž`'RW…{8 §%”î+/ $R+÷žZFÕùÑb Ÿ¿ä­WVnî‡ûÄ[zӒԣǔó9"›È"ŠÏË {~[Ï©ÏvZysy^Ó¬Åêÿ ‚òfž¹„—tûDÆÜÅùÕn–†ÑÞ^/#‰µ_IþWø³®Cý‘®<&Äר^¡Ó¤§ Ø7¡?ÞÉá-³ÉQIR&JÂi6üB{#Xá`+¬Ã|&¶ƒ.¹¢­ `¿áCÀ[mœ$ò}Ö —á‹Ââ~…­ô¯*ºØ`¤U¾Òÿäï>7†”Ë”³º¢It·&f±™e¾_“"\ãÞÌñ¥/Z¾c‚J†R®$ÉÂõb곯§ Rëû-(.·“³ã§F›RWzÈ RÕ‹åšs„¥Þ6és)åÄ7vÁœÑ–{ž†«À6$(癕ËG%öõth%¢_ï£õ"žQ‰|ú*oÚèj©ü?½²B8VD¦h©øDˆ¤²?Ôi±ýœ™qàS>…7¬%„Rmz§AãaQ @T˜€oƆKƒr’Þ“Óƒ—I©¬&LúzibjN¿éc-6¯F v?ÿ<6(Ù^še;Uj¨½(uS1Z=dJ¬ðcI£xŒC¤F›Šë¼6Å.èüì3$ü¢"(•gMc}ô òžiýåƒ#Ûƒô÷½‘FD8Jv(ÌW2)~Bý®œù¼€´]¥‡h&›ùêרõ]pô¤V–—s’sô|†QFKWÇeϵèékgËõ¯¾~Ë zÚ²dJúÍÇ÷¨ÿñ]5p"|í/c8h­ÐÅi¥ÈÕ£âµ8@é 8¦ò¸x¯÷•†,ÉÂ\~Y.Ýú%€»Ìö~ ÷ûân3R,·Açc4×höÃx.°_©¢&Š*¾]åe~OΠ…;¾YSÁ”ø–)¾YpágR][é‡Ã[£5‘, ÀòbSÙÔ³AÞšÏÞÍs'UœÇŠ-n>¨dx¤ñ¡4Ø÷v 6v5³$Äb›·;%æÝ¾ø9Æô¸Úíb«ç«5é…˜M2C*£¸Ù x‚Nž¸ãV@j¾:%tEŽ÷L6ñ÷ãŠ×yéMËskØœØÅxwË1€3øæeWÈ–(¥ònñ~d¾µ#ù£O€˜G²Ä\/áë£]^ˆB²ˆVÌØQ.î°¾Áª*2 Uo– kc³”ã±Gȵ&‡Ø\²™¿_ä×Õxšv ‡þ²@'ìËu™¯·û“© Üè¸8³nŠ"v _\2 ¹H×ouEºÑH.yÿJ˜Èâk©‹>°<Èl~y5A€þ[‡ÓÎ`\bé¨Íð¹Z] ¿mÜÓd}!Ãÿ…^FsÒ.º6³ú^¿l[‰J¤’Ô€7Æžy«³˜k{NÀÇ[Ísq׈í#KKxì±eãå±õ ùÏŒ®*`õ\~6¹²z}»eB ²§/aWêÒ±ô~¦lÝ m¹ãIÐÎñÐI0/”9ÄÈ[=¡Ý©ß{ÆC ÝqÐb¯°xêgù[Ÿ0þè ¼Ì”˜ãÔ&ÊÚ”çú¿únoÅC’—OeiÉâêš»oîóÃ-à\íü™ú ì¶870=ÁºÀk|°À"}¡ä»;á†|~„{²ä8÷“kÞhC”¨99MŠÖÿíèkàB7!¥\¬AÕª#×éÍ8U~‘ÇKé4|>òà,åâÞa¥•rï$/ˆÍ Ðj›ZM(ª$úbšÿ¬ègÍ&É|ZºN‘do­ÀÓ\–狵ÆmpWE7&€£ ȰÂÅN¾oî2Ê\”ýˆ2°œ¡,iXÉÜü¾6áȧØ}q²ñ}Ç™Æy~Qú_S—ر¸#î£gùÄ×Ï ’YVåey9½Ž3ÏwX$uÿÆå7UÁ½Ì8¯á‘ªeÒ˃n°OCü[=Ê;Š_šo”nýÝþèiâ³8Z›Ôòáí)û|åõ¬^¢Æøz`¨ìÏ`½+ÁšH”«ðju‰ 0“?öSî(ÔnUK˜T¨>Þm…~‰)nßË\õ.èÙ… ]K ¯6V…ËIŠçórhKB5hüÄGQ€µñ»ShÁOݹ-/©+U5Õ5'ˆÖ*ùÜV1•cTf$ç 話ìæ_f<Ÿ’a ¡ i\KÖÛ\ŠÃ’YEiŸ™Ò?ýkαO€…]/ÙüŠ(2­×'ó³‚ÀGË]Ž'½˜az˜ç_œ9jå]LïÇÈû‘ñ…Q=»ÝÓê„¿c`ÕÔÊï0ÂKrÝ»ù™÷É-U$c˜¸^Χ6ò°Þ;º˜Ëh´ÊÔCy²*öåmm …ÖîªÊ8u<^C-c 4¶*3üq›ŠµÒ÷mòEZñü€FAÌéõ"9XQ–~n Û}v 6s…5x¯’²=¬RU1ÁK:¦$Cp³‘jhAúߤù‚(Ä´L›>4yŸÀ¡œIÜOüK ”­m;Dóm:R†u†‡Ð*JK„ä—š‚ÿtÝÒ†0“MàH]ü´Pð^0"lÄ Ÿ-W–¤sO˜M_K§LÃÐ ¹»±rw&P)r2qjÃ…P*Zæ}̉‰I“§Üm^U1£t{0=£âC¬lhö¨Ù ý®§å°¶Nè<X¨lKE‘O‹Å_-%X8Ò§‚9dô–6¹ø=½¾û‚§¤¿TÏ^aö"–7ÛÉ/Aåõ”ÕMKQåΗíðÅL°ÏOöëD«GSj¶ ¸ÊLÕXcÖ¼r©Ú|gÃD >.Û†ˆ³Êï6TWA¥Þ=caz²+ ë9áуUÎ*à Gð¦&˜ŒLHù¡£öÌÁÓÐÞÃØ:§ (Ñ* +cþà†/]÷hÈßÿ·>»¶žú×EŸ xˆ„KùÊ?ÇÈëûÇn–{Þ³-ø›ëBü41ÁçÕMwLY‰Íì€ãÚÛ‘YÍôó}úHÃ@¨¿´qýšt-!›cSeØØì¼H öAõ|¼VÊZÅjR‹È,¢PGÿ¡ø¢X6¯¶ÍCUÈÝ6õˆîš–fÁò·ÕÙ õ„ðÐÿôej5ƒNŒ9B÷ºËè›ù†¯Ypga„@jã}TýÔÍÞo`2³,—bŸ¸°Ð‰½ÞóœÍu2V¯#ï„w׈îძZèªGk}Ó“ÎL’‚Põ je:EK-?¢úI*ªsŠÙùÚÌìD„¥¥9«@”†,mÆöMèÃéìÂcÉ FZ;„Y(h¶–xÿbì¡,Ô/­ÊžŒ€¬ƒâq©S“âp>0ì¾ñ¨B¨¬•¿ZªZ!Ko ù@—³˜¸Š.‰ùhÂu¿ï¼?$äHq’?‚žmk±Šœ-Ce^M„;àBã ¤Ú`4¹ÔT¦[µÈ|¥ˆ`^:ÑŠA\D¶sª(׋†;ÔCh?zëÒ#tÒÿ÷Ç©°Ž™m#©d>iÚÒJ³ |8| 0I‡á$¸ý5ކ5üÒö”Í÷½Žé™ÊS‰â4zËÈ«yp¯iÍBD6Ãé™Íú€ÎPÒJ€M&BÝÙ¥› ›Œ3ô\ÿµpÔ*R×’¡õ·KÁõbŽÒgY^ãq­¦ýÓ¼ûH»Æí¾×jxïµG¯Á6³¿T‡ƒàô‚Å[ˆ{?åœ"¡Œ¯\°Ôãè mÃXxa–0ÉÜô±ÎÈßÁzÊÞ‘íŽ0¬IÜêyoMª!gÿJtš¢ŒâM&Õ„sfÃðl´³ç‰4î€k¨Ãíøa1#E͸£ Ž…'šºæ°ï£xÙ$KVQ\Õ\d¹ßÄ) ÕEñC1,D^Ñ9z5OAŠ[yèìºÏ„PCâ– óšüàŒ&­9;¯ó¹Wî ,zw­ˆUyfvÌ“·Q’ÚN›òœ’VÌ6<åd¤Rôþ=sY<ã"C³nd"5Z¥\¸’$uiŸS(Û°®7_"‰íà®è'¶®•^:ÎÄD‡B6jY '¡4ˆ†zóD ÎÒÄq}ÒÎKj{ÞÔ¶yë\÷ä)»âkMÌ_^0ggÛaD„á¦Ûä¼÷ýEÁÜX|Cp:'ÏŽ?U…}aß•‰ƒÑî•çâá[ö Nã7ü&XÕ|±Vé!B¬Ê šíxLJŠeE£˜—éçÒììÂn©sßË|(Ç ú:ò•wc¥úÞµl„@$¾þÛÎ/4ÍY,Åp«ÏÖɪ‚¬ýQæS¤{BìÒ›A¡½4ÿ3 ·›†TQ Å?rä¦ýÑÔ\~^žx³m—_ŽËTÞŒ;ÅÓ¥#YÆéç!3ªÉk9Ó麯]ÃA!l!þ¿L*§~rÓz¶_a±Ïc¬M“š<ù>¸ÇúïÊo€_ɱu¬åÝëßüñ$Ò–§é—Ô›:ÊÆQqZ4xQ4ퟛvî£êÔDjèG¤s½Ý‚LÛ$3œV|-K×n­ßÚüëÚ¤lþøÿt²æ¼û yØÚH—‹øû¾,ζ„åB¥ÂÙÄ[›f·…’§‚íB^‚¬¹ë†·“JP`trÓœ°ÞPEV$å;…¿.´®î¯joPGëj—â(Ý$&[«;³YÂ$ÜÜÈ5ÉOÒÅV S…;¦'©‰áR²cÙÃjð@RJTy"#í$¡¨ hâÂ’BñµŽqÛ¥¶Ãî|Q†FÀ¦¤¢xogñ=(Ãþò„8Hˆ -´tHâ®Æ¾Z¯4º$ŸíºŽËÿÀŠm/ÂD‘afæoÊ3-:¢`¤·æ|(½…ý?d¾Ì)B^¨cK6´„3ºx^·gÝcÈK&¢¶|å»8^²´YâªMï×ÓS*ª{Xk—1Ñ‚`ÉÆ¢i`Ä.A—„.O‘аóDzÆóu×t%œ¡$„Åú¯OqnbKrdå‹}=Vs$â–úÜtìW^·%’l`k!ž‡€‡lë0dXNÕF1s­ß%ÙȆý‚‰.?ÿL$Ô¢gÞþ j¥tÖúð—B‡v.ÔñÿÚ§íxÔìã‚?£v;¢9–@êBÎòrá›Ñ }q3ŸnÈ„WXQ®®kù ªÕ"ÄÕ­C¸Ssyspè‚m…ã”ÒÇ ÅßKݬ}O3Ô0'sºäîVã¶+qL•J½ïê`K²Èfb›e¥Ë«e 0"}æÃŠÛ%çY†U¨ø Ý€6 2Œ°DùbÔÞË™™%w8Ø®ÖÂßhÒ"–ŽSC©‚ã<£ŸÂjïÃj•ï­é!úËç(Uô’êDñl% êgqÔaà`afî*4|i—¸K‰‘"xL¸â hɸ °øÀ2-CÈÎÎ=ùÿ6]oÚz™¨ó%]ï*¯Ä \:i7 ˆ˜Ýgæ‡Û™‚N„ú•·N —4˜-аª*}»u“drÕeÒàUø¢â(WÓß%Pñþ*)¹{zh_ïÿ8x#¶mgþ"|×k ª¤SŸã³Çmê¦Çg¨œ¾žQôÒQGI.æRG‡|õI„*…+4_]$hõ…$ºIsþÁ¢ûÝeM´¹_¡¨kq¡˜€AbE28NærAGÞ=A’X.»3íUgCXÚ@öÐ\ùbzµìˆ#<8@ôÚæ Ø3},`AºÀ¡ÖƱvŸuïÉb6ú V¿Áæõ7#VLHÔúÖJQ‰;™Ì-biÊS*Ic°ˆé¡)£;Ø9Ó^[su‘°·qO£œ·‡‘Ô:}€ò]<þq2x?aF¾W3\~Ï¢W%q˜×ÞE͆üèWoƒk"°E€"çÂ+ãGzË\ÁÜÃÎÍ/Óh»„ äù™ä>DÓ‚’föýOxhœx!N}»ÎÁg·HgßãË©/°D¹yqö^UQ™Æ±ènC§úîzY‹Ú‰,ûiËuéNT¾Òkªn˜îƒ¶q(fþÀÙõ°;d åÞÔÝñ‚–`=Mò»±Î”Ù!ñ,.›Í[”B… &ÜWýgÓÏÇûUl[v×®;×\,„üU žê´£”y?¸ƒÕ3}Rtä²ü‹)#ëÓäæ&é: uïéuÏ^´5e±.Cæó£øøà3Váü?Qu˾=Ú½¡tXƒ±‡ôŽ£MçˆzŒ-¯c’>3]”¹#­ÎÍU^ ®ÞÍOöBD¸šÆ†ó7õúvjQ=€ÒJˆ!ÔŸ!ÜX3³Ó‹Ì Æ?%˜¡±µ¸P|È#'×±Î6XÖ4 ù€á±í¨OÎj!1”Ô ì$;˜}Ô0ÇÚê}žŒboÙOed»}GD¨øÅß|X> ‚×\]*¹\:ó¨Í5kPL5`é4iWp¿Q¼0®8DȈr25±±xê.å<+crE§¥0Lé&Í“íÂa<íjÁ6@¨Àë”ÔrU”³ó&#¾DϤú°0¼DD§u‹…Ï(Á…Ï|̾m³š§”à\ š„:0ÁJŸN°t@—ÛGrMgèÔÞ¶ÒåX+áo¿<sîå7òxY,,ô:AâD]Œ§%?ê bÕ¤’ìÚÅ“•G³”8Žó0ÎN †x0nµ&}i­¡] yp=ܾ¸–9ºNO!¡²Qé[q0Tö•Áhb@ûŸ¸'à1àþ§myÈë¨à\¯¹…¾*`»¹–;nUÅì)á,¹Ý©4ä2ÃÎÐêõDbJ å¯ð€§9ÜF]8ja~Ì¥/ïöìXqô͸öSÔ»^ÈÏÞÓ&ÜäîtôÌ!Œ“ø7ò8ÍJSÑùN$°kfÐkY@P¤ÿ*wnS~ý¡zæîoX¶í±Š†h½î Mµ;¢ì‚ >޶@¸ ¡ !(ñÔ™Î+ŽÌ>/Z…OF¬é¦GÃï.¯¸±í±öÖd§H&´FGŒÉö+'Æ“/BèÂbm]¤VJœÆ²ãrèÎv¬ïŠ”õæN÷Œú^³[¨{î£0í©T ÛÞ|Ez°ìle‘õz ÇH 0iÔT}ÿO©­îÛ”€4îq“ÀÒ€Ýß4ÞÜÝmÊ×ÊóÜx„UW`ò×,WUº#Ó/ou4Ûï¦}4Mÿ†Ñ‡S¸LY‚´‹hèÛuÅ\牜“Ȉã"uª¤JIW™¹î§`G}Ì/V4ÝœßXÒ›ÿ×cÝ™«ê¨*Ü«\Ÿ:¬_%U~e¶X`ÅÍÃ?Þmý ‘¿ÍM&ëNtõ·Ð'`<½2Ûe uîɦ~¡—´-0¥ª Úg›7å/YW¨¹ ã–ÂŒ B:Ó¸·5UR]Ô'È·ƒ—QmE‹¯?ƒ’Æ ý®Ç³ò¶>’I[—¤>„p!=Wƒ ºã÷½²V"$E)®âú$(s,¼< b`8Dg@”ÌižÒ‡j!#¸ÇᦀÚ2U÷‹Öá+Ú@ÿû=5dåÂÝç3jF¢Në@Êé/e3KY‹Ëc„ñ2ºÉ0²6Õ„? þÍ„ŒX´³üü¤9TQ‡—Yét(Q I~1ú³‘ÙîÓbÔâøj‡­ó8¿¾°º&=džo~ÎúòR`{úS \™åQþxÜˬûùðf£Ö­mUWáÎäqt,â‚@ý%ƒóÓÆïcƵÁ÷poBg¥É|âÑÒ !‡Ë}ý/*R•¨ñ…¼‰z „"§¨a¶|M3E_öf¸xžÐ²•Tàw½€])OܩȦăvÔI/7Ù–‡ ²/*±~êÎ+(Ä„í›\ÀÄ.˜eN/jW7ý¦lô/K߃șžå0¿Äµ\>Ú±½ž· ¸³†‹OÙIè—$bV¢‘Lƒƒý>þ°*‚+õ - Ú¯&2,â.65·¸†<û’ô¦²¿¤Ì‡Å—ä+NôNSæ4‘DOoÜAÞXë‚÷n¼å3<}ìu|VOc9ÖºgmI“±Q;*ž{Œ×…¯U‰ç5ŽÅ”;F¹‹ã± þN3I#eºÚøÖÎD—/9":Ú\‹üdä Í9>÷$ÑN)‰l3íìñûóךˆÜ?Ø}ŒBï{k„ìô6ûÓ;åcÊK „‡Pì9ßË,f2нZq3®({jº§À*OG¸­«ÊâT6Ϩ®Å¬oÑÛ¨Ú?ð‘Wp8 {ŸËÂ5½}ø¿ôâŒcQž}¯·ù§Ð|©íg‰u-*TúàﱂÍÅr~;ñ3FÎ¹éø ¨Î·ó*Éj¶4sQì ÅÇLwSîÌjX«Mw›èÇu‹~U-ê>‰§Y§ËY€’ ø¡áÒ¦ ãQëZŠ"e–ñUN#qr¸¯:Ç,Ë×a·ª)­Æú‹GnM<é­™Nœîà¨öQâÜ1c²ßÜØ‹X&C£˜þ½“%´FÁoÒ3ª¦Îˆ®ºÌÏPC0™ÖÅ.aÇzÔ˜0uxYviâyêïì\·Ò䛸Ž<ó.N§žÛûŸ’ gd“û;¾–ŸúZli£GÕºi½ýz’ÏÖÉ%3ö‚ªœ?q“ûFK㌈§­{(gЩî Ë íºxêÙdú­äîÅŸñG¤Wõ¼ÓÖr)´˜×9Q-ˆgç]Ö§ƒ.¾î½öåRegñÉXê|:–ùF¬ùûxÔ Ú‹ý ŒEaËz²,ÙîóØ¢VÚ\s}g@ëÓ›ÆcT±RFúÛÜ<:þ{&YÒ§¡´àÞžNDY Ú,Á–‘qÁR—¾Gf#Il®ÐGÅê—r#ù{æ#Êå›Iòìk;€{_¢ é_ßÿSiq9<šÌÒÓR0tSæÆ¿ÛˆXG‚j(¤fì+jzôŸOâÄlkO·üŒSÐD˜±ªFÆ¸Ê õ95¾•Z9¢O³Ó]žäUXµ8ðmrBˆûo&®Ã¾cœ¤**Ü÷šë8X9×i$U0Vòîx^ó֨е]¬Ï,ÑÓ-iuªå¨ÄÒoEWS%¤ŸBÔ6Ge¡Š ;5pªVÓzÐÀ²f›s*1¨N–© ­îAÚyfmk>q3Œ0n»jØžÌ¹Æ 7œ "owc‚yõIÎí$Ø${»ôµÖ?È #½üÓ‘y­mÑÑ%vzŸW3ÄßXQwÛ³Nö-¼¥Ô¸X*¶(Þ@r‚t¶ROö×KÌÄ9©¤pÚf$„¯sîubå R8ä@¼€'–âë2]~ÏgQ¢âè®1PX­§ï2¦zn0¸ñ¦â­ÂõïSÿ˜ò.òoÂB‡£Ûkà‚¸‡ê³&ÒÆC*GÕ„ÝøYG|n›–ž?€€ŸöKyÓ(› A*H›ÂT3@¤ÛHNfˆƒ7=ù‰Õ’.±UÌé‚´¡hû×…ÜR~¤‘¯ºôhF41”#º'Ó©ˆì›M½æÓä4­r•$:ä¥c-’ 1zO´2Ðl$2<ÐNâ?97ù+•æL[óÁ"o•a9fDIÙõ­¨)È=€ Ï$[û7yÀUÕ¨°Âœÿ‰âÇwLˆ$F÷'L)7œY“>ìr·ÃƃªY6E;2#u6d©üE‡øŒ“¤¤NÒ¯êÖ’î,?ÖÎ ¢PÉ#$Ù)émE½@Vë’í„®¢¿*QÖÙ+ Tøì×K~ä‘$$ÀÃþõÐy¾ÊÆŽ³ˆS¼5Æñz €˜sN Œ<ÙIË4rl\ÃzYOiô}`ÎcXcüÍPh»0 i0<–@IÉ«'ðhéÔç_G?B9É¥£ h™×[‰;ÊcS ¼³ÅФ8'6pì=ö[<õÄ£Vf„¼@ÔÒ—|u–À2DžÐð^_ _•ëDÙ’&`B[Xæx Q }?óé¸Aó9NW–ŸÂ#‘¶š]a›)nq){WÈ{¯ ¹ŒwÊŒgL¯ý¶ÞRÙYUÄ ¨s<çÑUã¦a,x±¹ …ÑZy´7~>É‘š†+C ühÐ6®e:…Ž«?¿¢Ç ÀJìd“b“¸YKW(Óú„ è"l„Ûö–e—{ÎA:yªŽåCÇãE${bq´õ#>_íkðËÛ}‹à“ÖÝ4±=•ßJ s¶fjšWlù4•1 ìðÀ¶“H"IúŒ§~õH»êªG:ØD$g!ÒmâsžÂé—8 þNuƒ9G4ìÝ/›3\WrÛ¨C+ü¬Ðiwë´¸ªªšÒ¿¸Ä]©8ÐëùÆxJO´JØ-^ö¥`õµ3ÄÂ’šçüÁ«B©ªæwÌ tr,YhîW¢ÄªÒæ­¬‰UĦú*àõ›=ºaè¶žp¯`ü7¢3òÊ£mw¦Ù±ÿ€^ùs㈀÷˾æ“òŠGrZæÕµîÀÕô Àd§³9Õ—õ?NMò?ÂаëËž09CV ãwœ¹ß*ýÜJ-ñ¶ïÆÖÔ]?:=ðøÝ'R^ûô{Ø=€xEG³ ’É'Ééuq[æ· ø–Ie %Ã&@v~b’pQAE3aË®.'+Kgˆ<›kÙ¹j؇"a I†OÚ&c²â4yƒØ>‘hUÄ÷ä-öà¶*Ø„ÜäègÆ{¶"ѬÕv›vŠ7°mp ºôl „ëäCú¨Ìåµf )eúx§`Í!ÎÞç¸þIrÏtG…q9¸[þks¹xPÙ=’Á²[[C¿\A;ËH üˆ›³pœ¢ùèÉœê(MT$*âubuçî¿õ¬õ÷:h² Ks=¡[jzd‚ rÿ…s꽉å{Íb+·Ã6x7øÀC‹C…ðã*ÜŠ ,Q‡LfR?¼–.Mmö>-Û¤?ŒÏvQÂ㎟3ŒíP>JU¬„´Vø~¼†ë²—Ë`UÁÜš×J¹%ä€dVÊòëõÿ}_¡=o¼é7·„0^p‡ •›ˆÛ=EçT+>íø°- ¦¬Ü˜i€8;+}Ë£ÖQŠaêÑ%‘‚ä0ƒ¦Ûmd§k£f ˜®ù9Õ_¸pxfÿÊýüÉk£Z.Ÿ: ¸‹øu §7™[ÙÅ 8.uIÑç=B/¦M¨›úí\ø©^ ÕN”½#Qƒg~)—¥äÉìKôËÙÝOœb±ÑÚ´ms[¶Nq’_› hÍP9Ùöc ’AžOQNàõÒÚÝ®™«³'4j‰éj¶ª™»—ö›‚‡í Gæ0ÛB· 8¥ "P›àøØó #Îs V4ÂjÑ)•ãØþcOÜF¾úçþ:ƒ¢mJuôªaîÞI£(VHãÅñžËz þÆÅÀ”=\œ"÷n®^Xï›÷-Úd¾Âo–±_í“JzÉà¯ÿg ÜŒ1o9˜Uc¯t¦R‚u7 Œàè C¼"¤oMY°u¬øxÖ<ëg­ŸéÄzøê5F(Ñs‰hcC¼éÍ¢Büù$CýƒI„Ô"€Õì*c†“gA¿ò’øvîo DRÑबۡrâ'íPÿR«…Q{³zñ ‘—{Ià²4+½*ÊÆšF¨4Ï冶xôsõ"K´]…œð®ýÊX7…˜çm6€ábÖÃ~'¥Þ5`PŒ‰}$QV&¶ÜSâïÙ|HÂñ2}«mëàA]Ö=Ï<¨°Ü¢ü´ö-^Ýc+¥Ï¼Þ²ñ…«ÑíÈNcè0á–ÜGhÊ»÷t䮸èÚ,P.™ô½ì:Šmömx-t<¾]^•g¼X0ŸÐÒÔÍÞáÅhrh*úªyÓtœ*ÏÄ”Õì*7 +BH—áaûSõ¥ß ­_˜c[À&kÕ? ¼\«éôÍ*Ýï MH˜=X•*ø jdù'8‰¯G;ô³f²ìø-lIÜÂnçðÔê Ò¸ÉdN¡<= mß¼$Ü.‰ø~–Ês©¬ÁÁÂS7Ñ2 òCˆBjUº¯¬„ìÍhB÷˜³×5HvÈÄk.—ÄÆMénõÊ·V*•À/œÍ§·Ð3Þ%öLöNƨHžšUíª~j2êˆÆ8ÚŠo6õü±’™ØQÊ¿½˜Z¯˜sMšÂ•¤ÂK"bÅÍV4$›l9£·w_ &R9‹‚ÿ¬<ë2,FÅèF7T™1ÉFñŽó\ jz­%ŠX,%ê­˜j´ú¶ÇÈH‹Ë(ÎÃk¹|jà?+¦(f@¾V㈻O§Œ š·A°­ʼlº€—Ä÷ízµÙk8_ñLu áU³DëŠ4OÏbÑÔÁ‚§ÐwMÔ®7R¿|,9û¹›g"«pÆn'iîr†µ/4¬é9ÄAza˜â'ûø•kOMþÓ@³7Cêv/y‚À³¯Ás#Ê»·ÿKÌ—¥©¾ Þ=«| £§"|dóÚJú¯±Kjú´TA|ò-ãØ"°¡³ùX&ŽuoïxŠÞ< —™µ\·í­³÷çÏêG3äæå¨RrW–‹:ˆûÏ·Ï×mÀÝmJŒZ74Jât[‘yF†„‰ÆH‘]3ÉÅGgg0ØÂ ÞùêÐ3\¿YböÀ¸"ì‚Ù‰RYʈÖ38;Qç_j ìÜeãƒàEå,v +¢•øó&ΈÎÿx2ÜYW¥ëhEìÖc¼ñ0¨SuD¶Å–ÁnÐC¯‡æ«Xž¾?íæâyª4[s5<Ûj5!ÑäsBÌTjxOsoýkåS`gðÌÌÐÈø±¢9À£ƒäl•&(F½Z W¾ºk™VbxofÑTKñ¿9äŠj9·ÐG9‰[¥ÜÏÇÉŒ¯ëùÊßU%bOß8œî ËâZSVP© ¸—b"Ô/º×àÔf¼MÅψ«²­ßÎ)ˆQ´Å&ÓÚ/J1>™i HÄ{`@N™c;nereç±çRåÛgLÖW« GJĈμEÆ«F`¬°J«_iùӷѺßû ;’#EUÈÛ=ç x#6oˆxè‚“¿ßÝ{+nþ¶G·Úvr…ÝUÓm·ñ\[«Ë}HR3™‘ë!Sü«-QÌ…#À4ö²‹ê0 Âü›é‘¤úÿÜàö•yʈư ®ê½yxì£}‡Ã¦®/.LœÁ ðF¡,ïM©S^b‘V{!_ ókIÔŠÜjØ é›©®päí0›‰7‚ ;HÇ/ÚÕÏçXDäô¥õ«R£ÃÁ.¾•.tÈRAŸ–AƒîhÏ^(|ôW}¤ ÑjÏ»'t8ÍÑË‚VÏ o$€â'D÷÷ <MÓ>BŸ»XÆ!îE7O_®1*wQ:ä[Öͧæ! Òš£ž"÷ô¤·íSþq¨¤ â(‰: \'éRkÞÙ¹¯vAQgs8ó2H#kÍŒñÑvè D,ü=¯ýž²,-ÛíÎÌQ§Óh•Àuöi+"µo‹ø¬¡NƒÔzÁ† Hå×—ˆÈ?þyÅKÛéUèJáÓ‚Z—QÞŒÉVOOÄç¼b½3Öê2X.v:ͨŒï§{„ؼWü‡A-íù<^eoÏ®j%0]ÃÛÙðdc^f›Jmqß±Ào¨ø¬šû+—49û\qòõääZ oDìý­Öd•bÆÒ¥Yr†•ô§›(×ýìòOžÇ6s›Yb§ÅCÑ^íp“4÷\ŠZûâ§–Vpoþâck r3%t„´çíá•àÄ–:ÐèÆYÑ‚a=á¢zƒŽ€%ŠÉYdÈÚéŒÀ–á ÈÐb ÄlWJ®¨æ° IT窱d’ /5®’éÊ[úØ"UÊ¢®¬aØþ€WJIÔQ¨W,Œ;²ä“U Gë4!ú€±Çw.O<"Wfr ƒÃÚ 'À)ø+„>ÿ‡oƒÐsRêÖçŒÊOÛ¡<ÆvöÎGüƒ:µ{AH¹!å$ÿ´c¾vÎþ«Æp@9N–H^kF6LF=MïM>Pêç8Ññš2fÒÕôU£Þd,4ýñ%Ç2×rï6–Ö\ômÉøB›¦Øˆ=FRùŸm;zjfv¾;k2»N¯n‚qoÞµ˜ñhÕŽûsÚžÇZWÞá 9:kì^¿;÷‘íç3š˜;¶Dèd¿ôË¿Vœ³ÒúÁ´'é>™µ<””{‰ŒXü´ª`¡™a~eþ‡“^á¦ã^&W[ €¶ðÜ>'Wœ\/ãà(K¼›¼]8œ{ö»«Æ¨ rs©‰Ïs'¼´/„½X0ûVôµùüüˆÜdúþLpÖ~H׀ɵ¯Q†«b{@ɈŽ#Öf¾þ)Ä5¶6Öö-èP¹â0£0g©2®Œ ÒtvMÖ£þ1ƒBBý@ë0þžE¶;*ÆÊY·ˆ_X­r3¡÷cma `òØ ©Pè¾æl Í>U\LF;9—;2€2¯¤;ì¨âìTüeu º¬.h:ù¹`æ:(íõƒ ø ƒlŠ#ÃlZ)†’V¯Ç„õàìͰ‚é°qÞ²ý6C{ÅR·žâ-Á?{çÌX´ëC@ýaàâî=åì¶,'MßOÔ:'#ÙZsÝ•wÕ³LpxÖ|Þ¡.¥u_†‹^›U ³ 4û †m©ùÈWLõ2£ûM(>[§xC½v®£o‚¥zCe/çùPjeÆA2Ä_Ëkï«Tþš•*¸…zz-ñðm^·—ådvΊLÜ9Á©¯ÏØôxAéÜS]0ꆗ==2OÑиDÞäL h ðLt±E,¨´Gn ¥$fN¦„Ždì‰0½\°ZaI£ÓU=: ƒ}jçMçÈæìJ?É¢¥#»×ùR>·Âys]4„µ+Ž2)J‰LÞRtIö—¶¢¹ üÎéÀ¿µ"ò–©Ö ¬h¡dÑZ…L¶F…ÊÅ?6ˆicB×M½ºMúM¾ÈAã )i™¶åî3cîÜSË è# ®‰¬·swvb–½ª]¤¹—\LŽ-ÏMj`š›„z­^–¿HF/ù¾œXydu¼½×Èä º5h.¸ tx÷]\2+@/s¬dEa>ÍÁæ‹Q¯9LìGMÖ³t]ä@*»Î¹†XÓómÈ¥JšÚ\—ðvHÑ»o†q~×›ú*”˜(aUߨK¹‡™´EÚÊ(»~šžý°Y Qêa£”à^θMK­^“=íÿ_Å´òÖ.Kh¡‚—0e­‘HºÇí•r+fÚ¬àpÑU¾>£f)æW›ª Aп6v˜Ì{˜|_:%;¸¤ lã6LòhŸ¿:+'„Ý5@¿K…quOײRŒy'lÇ9=ø±’E cH%%ÒçëÖ«x×¹¤RÕ§U¸C3vx9Á ‡ÐhÔÌÊûú«¥¬°÷çâ¾rÀí L­Þ§u,„ˆWàd^½¢S“Óàm*ÕŒ0è༊~Éó¬Ïg¨µ Z=ü›H+º¬å »þ°†7Xç=Ó(6’-“ì§£iV &fc\;• kà®Ú‘,Wº]¹?U*RÕíݧËjÌ6’ÞñkxÆdmï)ó©Ö°u‰à³#gÿEZCç­êIÑ6¿f`u»š¦)W–ÛÁ½¸êD‡‚ އí#1_²×;B´ìîmÆåOëc®îãwÏŠöòzÇQ$þã‚úÈø)/X7øàjˆº£vxS„]Ò§'upo„ŠBó8[ðtiÊ”# ‡_/óì”UEé*†L×6 Í;w×MŸ÷»÷›±tÈQÃç¿ÀQoëÌ*Ð`V €¶{µŽ¶"§œðÜl#À,‘¦´‚æ¶êlÞ›Y¬»‰ø¦‰÷ÎÉB?øoªõ‘„í+=Ñ Ùì¾Ñ'¬ÔKì9}2¦Œ¤ Ò Ä+Íò¦ÔyXpUÏ€çD–ŒT~o¨ 2÷{¤¿O»îü§Fâê+vÕøø¸—™Ý•úÌ'…å¨Ä7H `S]nf„‚ãòZíŽ^é~IIW˜šŽÃؘeßÅ<òÓYý*«;ù£çù)…ãR@ßaAÀÆ]Î9ùhë#<×І ½)ž_¢Áu†RÛ?2mQ9yafwvn„æ}dˆ ýìw%]”;L5†×YˆRÉm̲òž+Цæ·}tîiÌ\ö-‡ ÕɳÏÖe@ñ€¿3E_ˆ¯>/z£œ«­+X$Öü‹JƬ°—PšÛŸð2¬× ü3Ye«©†i¬«'±jûÂÏxÛ.íÏaãÕ–…æÚd|K@eÿIÊé‰Kƒ¢©IáŽvG5‡qú[w+ÅŸF^¡3c#W¯»«ÜaUÿ*§]a;AËìÞó¿TqßJ¶ ¾s;ã7¸ýFBfcÎþÿz<7Ÿ8õ·aæw, ¡©Ã†ÿš™ËtL…Ñjéð9PBøAgÚ|`·ÂÍc@D/a^Wˆhü—à™ÄÖGlr²bûþ½©9?óËoµ›oØ ´\Þ€5,Jë1ú’ÃlKgx“>»Ãÿõi,ÃeÑåû˜®½àÓ{j»aeùy`/û¨§08`ïH¸g%Jü®ù39?ï FW™qh‹È+Bü.{(æ~½Ž pwå‘OX¤ êýTªü5§ûgª¸\©]òÐ)/|ÀL§!¡‚¤øWÕR#wöˆ`s£[»ÔgTN} p[aâ-Y¼Ê‹¥—ÁýÐIÀã3+;x%П–öCšc6Òûá€Ëc>9ÿx(øÍóç®}jWäþ¹Ôwc =ÒìHkîk¸Í‰åŸn 棥Wµµì6WÝ ÀgÛèXw¤ *=«ñ#ü5W|àvÓ–mP/ÖFµö íHàm¡Êþ݃þ¥\zØa-ÈU`_Ñõ¸F°®ö×ëõe—ã+(1H k¦¢ÝM’; ‰€¢,5^Ñ}Ó#Ã8nΉÞXpV¨ê'¥ ü;zª¬‹öNÃP¬î=sT¨; ªågvÞz ÏÙç^ç=wÞÓY碇žÕf!lf"6«ÎèÇMµj[¬Þ­!¿¯x/ÑÜ!…v + Êi@BÌš6ÓKL+ƒ®`9Œ­Q-aÇgý°\Ö=ÑÖý­ÛJ-i¿Üq^lÿÌɯP:¬­x>ñaù§†©'yU÷ìƒó¾{“—Úõw%œ9«–@% tÏ9Ôx´£(3Äò1ÁûP_P‡úAÔÜ/Yù³èU ¢t/ÇʃÙÎÕXþ R;¦‡vgï¶ÎDÜpŒSG`_ô²=`Œ¸]Ppdº0"±ÙÊÖqWŠ@§ÙP(Á6Ì`_–´ÐÛ¡ø¦°Á¼v_7á¿\H+öªQíýÌ`#á—Ó| &²R¹å’´: ¤-ï•B¬Í*4¥ c©ŽÀïÅOš2ý¹Üqô{³anñ MbßDœ³“Vâ_ËCÿðÎêôÐ%Ÿ¦]a˜Š_¦f5÷i8ßLËi¬‘Aµ)/3£æ:À"‚èB"—€ÿ°Upj”Á9¡µ$ˆ$–‰N”Ô=õK0Êê,.±z²ŒïÙò[(€ü±ÉÎOŒ‚ख़X"°¸ÒÃaÞSmm§~M'£Húš×Ðy î&ÛöL…–Û‘Ì!Õé´bøVkö~…Ãj3%<‘¢b`æâò¶)üîbrQ!Uº*tã›úð˜Ï•-œáKE󇞑O(æ©£h…qÞ—žSdØ©@ã¸*@ðà# Ò„O;§ŒOב]‡¼JÓ–G—1%èY=Ü71/I5"ð£RZïÓ]ì-Ø–ÈÁŽ­úÈŸú_Õ˜á»Ä¡àW…ÇI7 ÀÖ±ÌÞ¸£Ür‹‡ù¢¶?v4/…r•‡s¹z‡{Ì}­SIÎ…ílÖ·8i@æ× ï¹Ó¼oxGAºÎlñwé.¢Ø7Ñ¢©³ ®ê£ÁŒ¶Ù£ÊOÓE‚¹9ï÷BÄ&·¢s­WÉ Sˆ±fè‚Õ]Ëw{/Ó ý”#Ö¯¹t›ÔŒWê>D«X8ØiùËõ}4™.ëœk\ùP3¹©ÿ'=ª†Ý,ȽZ†’ñuÿŽñnR5˜±ŽQp©[–"˜Xµò!">xÅÓG â¾ÔWO [·¬!2Áb£)°Ù7ÊiIl„5°5×b,üb¬Òóäd¬Ðýng®£¹š-72QðDŽ¢79Fý°?®ÅtõÉÏkê÷TLõhB’-Âl~¥ wBBáÕ')ÿážEGsë5 ëò%ÒG|É ¢Û ú˜Ï“ªšv²Ëxå¦lÚ¶g¢þ§Vá*¦\>‘ÿ``æ¶ õÐFIù¬¹äÃD‡BmÆC¨¸žb)Âh$Å[(ä÷º±Öúw„¹¬x¼-ýÀÙñNÙ“;‰Œ£oÜzï1ÆZ?D§ÜDe¯¶*yâ¤õÏÈöž¸qø¯»”šÙŽ£ÿ‰{iŸÃú¤SºÜD9Óàd§‹ _¦ÑR 7ÔÝŽcËR—–«¯ýÝý0t—VŸ`Ô·xU%u££2‡a~?/Œ„« Qӑࡉgýä<+ªÆ­Y¤NßÌPï[º•ôÈ‚sè{üZËC"ÙT­yý=„Å{·´Â E¡[éŽÁH­­'ÝšÚ¾*>Ø0À*{eç³o<ÄÛmS÷‰3ˆZ<szG^Ð#ž†=¬.&¦ÉAe#%£s›;á„÷Šn. ÈlsŠ'øÙñÃÎ\ãP;«_í&êýãI‰c3‹­öFÚÌЖè‡ì¬€µÓÌÎx¬­ ;¢Nn’ntðýÛq¥,Ü‚–ùP/ê!ÄÔ[¾‚¥kÂ{¶¥äÃÝx†¶SåOÊ?d´"ØÃ‡)\ VüFSËíÿü™z‰Ýð U‡!J'OŽyÁòÎþÑ€ùšàë¼ÃÕ9"†müˆûÊi¨¨ e¶Õž“¢wòšrƒJ·Ÿ7,&í·óa&º¨dÓOÿå½í¥’÷a/N&çCôÌF’tkŒùÉt„ug­€å÷ø·L%÷6´VóÜTÐÂJ¹‘¸F ç•,XíëpüµÎ·–éèÚ …{á âi­‘øT…ÿe6ð<ÏÓÊT?kü%‚£—®‹kh/:~ê[MŸE¥ 0 .?ïácN–RC!÷ëìôÝw¡!ób³ü4‡q. Réîá^k¤¨"–í.ën^Ù'—$.AºØØýº$³1AÖ.íHgsh½<€»o)#9”Áa×  Z ?zø.Y¥· ¤Æ¥$¬Š¹¦Ù­:þ—Õz¹²=Ëȸ“æ‡`è Î˰WziÌÂ*Ú$t T0aü@ÀM¹ñÐlôbÿVï¼Äe›&¦U—³H&Ÿ³Ÿ³Wé²yòF!Qû¬ß°ë¬ 1‹ö'Õ«7Ïuÿ¸ ¤Ã«OÉaÜûBWïÓ©œ-[Êø;Æ/12 oš‘ôšžlµ ‚)©AÃ_HjÅU‡ ¡töO*!/ù½Ø¢Îk´ÚŸ3{câŒÖÆÅ™JjÉez‹®JÜÙÓªæ©LT&-HM:YWŽ @Y ;ƒ ØA› µ .½•·‚Ã$rUÑïr&rh1{F„òŸÎ¬›Æ.í?±Å#§pfZ!0¸¢`,WäºÿÓ°@mgÃÂ]Ïqœ@þQ$s0w#àÈï#r¨¹Ø„EWC{ssP^R3ýs˜ÉúÖÃphƒ™_ÿpwn¦Æz­ê²§}`ßÜç¦S˜X|©À”?\ÐxbT^ÝÇ9—RDÈpɦqïÏæ*xÝ3`dñÞV’Ç ;Fóm9Á¨4)ƒ‘€u,¢û*ƒnâç pÚð#ê©éý“¥bÑ·"ôâ‚NœdU¦ „[­û‚É•¡8lx(¥PfŽhÔ‰ ïL¨]¤ð½Êzçuù|§ JãT^[0iÛg£~‘|˜býÑËÚå›òV³BšºÁ…@äáOÃÉZˆ¬mÖ Pâ©Ò&]ä–Wè:‘+ ®Â>%¢.~PZ™›?'øjìKŠn¾§­š4ê˜ëîƒ?æÍ„<ülp’ý!C‡B„ïG`ˉK v^K@SJ³zÛhÒ¶þûåQh!¤ŠÔ´PÙ«ðpÅn¥ŸS;É‚5û+&+Y2bٜއLi`Ý¡% ›“è· g«IóMTƒFò›ùpŸÓ½xG¼WB£2ZÔìpÖq‚Ym’ì|7`BÞZ{}ÈœŽËïjü6³%’›fÿZÃ%‰ÐI»%8‹4YLHôÐeØÕ@,ŒÇ>*¸e26iIgjÔÖ›™£²j*>+—T€À «€ÖFÓ #»2ÿEq•<ó²þÿ÷Vi¾BÎ7—f¹²{ RÑäù£=»%‘ËåíDzÖ½Ôsç„?¸$…¡uèØ…·f¾Õ¤˜Ð`5Ô6`?xE<{±$Ý5ÿo³Œ\DßãZ¡¶ÜW‹ fRKù”ª ×Rw8Kô?TÚzÁJmÁÈqû …°[œ`†Ûƨ4¢q‡àœr‹MùÖˆ6”ìh"4¨Gr¶µÝ¿ÐDºå\¿©eêS¾¤¿â@3yó) ûàO·Ó^h‡Á~”¹qdRÿhÖÝ QÛøÞ§¨ÿ¡![\¤"ö*ª¾ÎðØÎe€—ß&‰ÆK!3óòÀÏœ®ß|ιbEŠáçˆÒÌ?Ûj½I›~1Æs$ ¡¸ XT.³c ,æò…°ïÙ¾öhXæñæñ úH­›É—QNÚµ{º” åaMÜ´ÜʧJéou–YiKÁ ¨Xo—˜6ˆ†U£m:šˆÂ$ 6²A9^m~{Ýœ}“iŽ ó ¬b1^Oâ¡—³YÅ–\êmd£¬Ù|žS…[KÐÞëckÁFý"–,ö<½IæzÓ}ÅÛowj|÷ç*‘³uK0l± X¥ˆèl—œ®Óßò9—cI ¿T¾üމŽáèÙN«GSáRàŸÕ\™æq[ðeh …˜Yÿ–éF”éEXÏKÆ¥«6 SÑÓùlæH<®‡tJuÔ¿-º'Ïøí¢€? AgCI J¿òÚº%‹Ž¹ßŒÏÐÌ&Èa÷_ã¿4ïÞ_@˜÷Ñ¿`®=I [‘äý@V7q(ãô7¸‘¥ÉÂW5T†ö†Ž°Üg’™Sj¢»B¸;=Ï3YFxÌDfv*ïç`—E‰ÞÕe›8ëÐÏ&á”è£èëvVQ. j6çj_*T󍡨¾Â“(ežò){z°iËÿˆùéPU|Á—oXÂðfB·å¯²)®óýzKωrSÎÃ8ìäüÚ“X$üÏJz`læëèóë{nM2.ðû¬õ”~HQ<ÖÖ yÔÁ…ö ]½ÌëaS¸>ù>Ösä@,½°¡…’IP‡îêø wÓ]ò‡qσp€Cs€rgèÂÀÍMLæ™Î+K@Eëp6‡¦BÔù¸ e§1´ß~Ê Þt—s²/d(·ð*Õ“¸©ˆ5k–8ÿ¶š›$‚ŽHç\îÄõºøy:ø• Qµ¾Ÿ.ñ³…¦ ˆuuæ”ä¨:Ž>‹{´¿<9ÓÜþA=‰/OŠÚûç±z; ic(;áî“"–Ugú?¤‚ÆYIY©ÂÑNt¼ B²¨aèî)œÊãÖê`!ÿÃ}ñ`výù¦¡5ÌàÆ‡žjMlUÌ-3iîZ›¦d¾E½…ôV>?›¶8%›ö©œFõŸHcÕnä·ì7„eÄ}°iLÖ¦a áqއlìP"ÃèW—ï:¼pV2º×mØ·eõ6ëlsÓÁ2ʳ÷ˆ· ü5âÜIe‚°¢U'n‘åÜ„áPõžWè7í­2„‚]‘ù‹ŸOInš=Të’ºÖ“Ñ´ Ñ9¬s \·2{oæHyêq¼4÷¡‘¥BˆÉ#¹JIÅÄkR]‘}³2óäÓ‡.  U¿"7%›ÎŸwuí§–ÁÆÿ[}c>Ý ÛŠÅð„tªcè¡3¬[£DàÂöq«×¡I¬¨æù£Y¯Ózjw°­­Æ¾„0~Á£_;ö |#Øòã™åÇU†%¯FYGeð¡ŽÊxó¿RN‰hÕšåß—fÝ5ËÊŠ“^  lhi³Ý ñ›ÕmÞ²LÊÿ|¯£è— ¬p R<Ýõ\$ØÁN´àf/l…ŽZ39w£Â•ŸfÑðãÙ- %w¦w±Œ÷G>¶5Üë5e7Ð?×óN7vž‡z¯xTAOCœŸzÆì´ ØŽûb 8·°–[ŽqL›†¥d|Ûšœ/U$p¾¡¬ÖhÑ ÔÇÅx†Gõ+MՊǪb¥1‚¤<}uRÄIóüf«P¾¿ì ×Svµ2I‘,v~À>Ü´o9Ü]s"ÜØ~Æ-íFéd µFîVj#Y\È»6¨F€‘££ð¯P°Wê € ÝtƾZÎòŒEK®·>W®Lvëíî#PØ­œÔ óˆü 7…Ò¨­í)ûÊdCá…”ÑDåR!9REÙtzmßï}é-d›'›äÏ^îç8è£ uHÅQÐ8€‰-/ uuf,c´-.ÎG„Ê‘v²vAdj¼&¬#ò‰òÑ“‡Û®¾¼ÁùëéΛÑGÕî1LiªÀFJ'pýâÇ5ÿŒ8Ŷӿӂ­Çä}Û¹>P¯¥…;Žû?ú[¬%”¢­:È£³`ä~©%žaɶü19Sèj^¬Áåé -]«’ ƒ»êc芠¶­Ý}7•³²/Y=ˆNjÚýŠmXHR޾ƒA€M´Ú¨pÝö+w£ØÅF»4\®ÆŒD¾™èÎÈÆÀÐzM7SŸE?éæws8Ö*’í2Ê Þ æ¹øªhÞÛË üdcÉÑüÀõ•(Möã%?þÿ‡ÉÀÝ®’z¼+ÿä«¢£`ïôî¢Ìê±£ÑõÛ¿gùçs¼ BºñŸÚHs? LÔt–J¹9Ca g~XäÎõhÕS‘ –áRÀ”ΖÈuåšÓÌ,0+!Rö°4$JI"(ãö%¢‰ëÏÉDûÊÎ:ÂÚ|‹Ó úJeuÉ× Äì†,¥ä™ÂM²¨ÕmÃ1—ùÔ@‹Ým]=VM\R6t%A޲´Òt rü)n2Q;ÒHe_Jj©ð—$ S‡¯–œ›E8gUËèÔ_UÊ»Úâv$%âÆ6få¡<ÈÚ¥OÂt°6X[!ů j x¾j׺"h‰¾ :yz‘tð7.îç)lFGýqÂÑúØP”îØaÊŠ¨«ûºŒ®ÖS ú_&Žg,`ßò`ó ¿ïû>på–©/¼¤‹Hì‡#Ú£?™ÕÂ@mSëã+ã¤_×<\õ.¹#S£+z€6B¼Š´S¬Úro(:¾–¹TáÝ›QàÕù¥íqWéVÚ¬\™=Â韼ázc•@÷” Ýõ:ŽÞdÊÑIÇ]2T«+gf&m ìm3†@‚«c´Î`†ø^’]Jáá€ëþù+ Ö/¨dð¢At&ti¼¢ÆÞó {ª'¢¹Ûƒ—d­ò}ìH[E€mèkÇ ˜¿7±L7zZ!aG–§1I³7ä:ã«Ý…`k'Á߸…mXö#£n~®ë=€ZϵÊ)v"àÝÕ–UN›ba-è…sÞ`2kX;§x$ªdg¢s†WânÁwŒóqÎTb†:ê0¿A›„2F¤ŸÖl `Ï‘€Î²@?äc“~Â_Š!©ÅÀÅBet·|ê) µ°èþ5Mpþ…bÿ:tˆÄ\Ǩ8úlv&Ô8¢ùÆNr†æ…%vê'j9d£øNí›I›ú`P˜ˆ¬ÓìÎÿ·6kUNzˆþîpB4øuë;+¡óô9¥ßAÂWŸÒJ¦òP.eŽ,Út #754¬|âVZ©|=Æ»£H²íL~¸´³–1!¬û6„úU/$Þòõœó9qŒ 9ý‡ázTôôæIŽñq$¹½·ú¾kÓf2çëÓ<)Ý„‚{üo=[[á…-f þC…×eþú Ez%'ågèæ][=ø¤ýœñy¤(¤«ãPv‹M<#yó+P ^¨àYÜÚ;GÅï Hån!ÙW³uÆ«1K"@ïí·‹˜G}^z¶2^\ÁæFGuœ×ãFë¾BÆô~ÁÄK¸ôËf¼·ù¶í“<†äYÕÆ(“wI˜ym÷ÖU™ªJ E2{&øP5·E €æ¥¶à¬1-+—Q´à­N®”_¹ÃnYÚ%}=ã‚AR¾ÚPÄ·"$ÚªÐôGöš}rÞhhÞtÒ^O1ʲæùx£%cxýcÃm¥|;§Ë•[ŠìZç$·àÜ Wö¯ÁuTŽ6Po.‡æ›"¶º|žˆ¶V²^`µæÅ#Tid¨R’P~rÄ„“¨~XŒN‡%­¼Ïø©4o@ ËÚfîi‚‰(U¤ÀæWú«IS–%%ç5î6´êkQ>­w¨#®³ªåøRàt~Øáñ…¥·ˆiÚú¸E1"Rw¢ìUýˆ\¸§ƒDÙ¦±ásrå*Á᫵¥* Ù®©ýâÕ=WQ˜ ©F¿–¦„£tô)¼~½Éi6©‰R Û#ŠŸÚõ´æüø,‡=^Qµ#¶ïa+ÁÓåŽ/ø`«‰%Ž4Þ¿*äøæL©`Þ!Ï×ÿÞu]“1`ƒ…ëˆ/Éx&ЈsÑ ³bqÝÒÉCIìYJÞÙ£"÷¾.TckÁDx\YÉ)V½ªÇìËꌺg8Ê\>c(Žù×aCú¸.‘Rë#Å 2¢!”ú¬“Âgæe{&ÇUe«²ïœ_ÐS HvôÅø§,êöep©¹å7Ïü5‰M¤dNd|ÏHToGðv³¹­Å kku‚ï)ê¾ü÷Ò~ÛñáŒ2&JãŸ+ÿ™ÓnŠ«Í·Vóq‚6*È·ŽJ>é› Ã²Í”÷‘h‘©‹†Š^16D GÛ‚Wä™Õ©° „?z¡ÍÑ3Ãé» &‡ÉµŽ§ñÓ‰í€DLûït`áÃóƒ`#Ó  áG`qmH37ÝR=lζ9œùÛ’JB±Zú´z3.·8~]㪲=©éÒùñ¦ë7ûdM Ðˆèù[f<9¿ªU+]zNÄÚùž-ÜC‡Ä1¤*ú¸µŠÌýÂÖ"Ðk—ï`ñòÇoyØY¾åͳD†½cËBÁÄg$÷@}P† WŒLSµÀ\Æ!XZ:ÎtfO+Ôk=¥¡=‡í–-yŒµr.¤jÞÚåâÐG‡Õ†–ðv€ŸåµH'ìÓÐæ`bSm™›«v»É•eªiÈò«ò…[±F9Ä"–¼NUtJ@Î%\úBç °ô¨¿»Ï€.ÔYãA&‰Äk©î!3ÁSt>$VÆê£|c7²‡NK_¨Üp† ùˆ>o¡©üu¸äQ#i3A®TPÿxÕPГûq?ªãoI3×äWó–+fÞÉFÞû:¾>4îŸKI÷ Ië“kM”ùã¸Ò_ Ó: ˜\£’ePcõ‘Ur)"ÂJ®ú\\{»§:L D%^vg žóieS¯(ˆBo…ßÕ´À±†]ÒAƒÞ¿aXÛ&aXj{‡jîùʺ<»ý9¹ì¥£½AùŽ-ÚúA“`@¯nm aݪZߨ>¼nš<ÝÇì0¼35 !iªÎç×Ö7H!"‚“_a±«Ý›æùΆ¡ª*;…+q›PLR9 6ÈàF»''ñÓfK®OåÑÿPMež¹n:Y‘l-~÷2û‚Ür|Ìc[è& |ÉŽw•GÇB Ì ‚5<#b-Bv?â]–(gHŽ«½H¹mƲ¿ó±tò8–V:öXòH· ¦­Oæ’¿Ÿ«ÏTaI%ó–Aɸ¤öðøÝÛ´«•P>¦4Ñ«šlÜsËE€;¿Éò»“é|ÍP™"6¢2»Ø¥Ï6²ª]š$ðEhq†°LFT«,Œ!˜‰{¦’^ul—g#ÍbJal; »AcÔèc¶ôbuÈSP5¬“š\~©WdˆšL¤úœ0vX/a1[Zõ«°½úRS4l›¬×¯úÐsšØ[ ¦únU;5ÑÊcÇ¥É+“ö D#œ òŠ’8g·ëóJ›Õ?ælT\Â3—z<ñ…úã»ScÐO×*ZmMÙ2Ó·ªD ³úÊÇÃÁ‚ª6ýF1)Q‰všÓ1@r·ÄùõpÚ{K¡¾õM)Å+U£|òì5x99´œ>£Üúò¬‰}b<(WúNýÚŒ“­G—¢e‘Ž~ üƒa kÝyl0ßk‘§ ”pÿÝ© >:  Qs î+×E¥¿ÆisæXy¹–79­OÖa.!1U…½º „–vóŽ[“yó“ë“ T²m ŽÔž;ÒÑÊ¿3€ö§½_{“ý)Ê ýa‹SœO'r£Ë-´½ÿ¸k>÷¬ ]/r꼫õr^ãÏÿïiÁõyD‘—%‰è|à¯H¼ŸWï×ÃÑ´"QH±ã] º*¸¶# 1IÔ3F?æeÆ•·•YšÎ/f%_¼ôè:@lÝ<Ðä ’äeh[­Ê$ŽV!¦& ElºÇõ6h‹~Ü’[ÿÊöP3uuQ.Bdìtš…¡î6íqàéîõøêx¢ÅiÞ8û4ƒ)Jã\åÂÌ0úÛSÔvöL§#CÞ!)ž¬lÁHÕ×# i¨ñ•¸ybûßé©ûêö!•Ç]µŒ5ù†ÌbÑ@zÈ­ EŒ˜AY‹n§ÏFrùÐ U‘n7‹¯‚ð°sÒC¾ïê¢g 8§0AZÞh‚Ô@°Ù¯¾Ãß½P¹˜9^ìêë)äõ Á:õíQ»”Ж•j»öUž1nÉ‘°*©è¢[ÒwARVQ›X'éеLÉÏ9uJýÿøbme~ç85ŠaýÝN>b b9X:•ó*i·ÿxÉ&°uyh}üyÙŸˆ/ôuWª4ËzèžÃœG$UºÛdÝö ¬5)I2S°90Yôô×ûÖ§Jµ·Š5ˆ(§¼„@9a ¢Û#*I‹³õ/PžïPêoÉïv¹¥T#¿Æâîd!Ë-L E×#1VòÚ‘Ô€ ád$M$?Ø,;»aŠ·‡ËZçÛó3'KÒ©ûn±ÌÁÜ0é‡)h¬CeÓ‘Š¢ü~L4§½hãdiôR*8äbIwqbñhY…h `Í/žDß ÕøìÚk ¶ZÐ,z\0ºUŒm׺:˜ôXAà £°1vãÖêK–áâ?øÇÈëN/é`^nyòàц­R17„Ù$¨ç袅ƒC–Ýz$}ð¤6ÁÉf||›—’&Äz:M*j–è§¶‡-@LeåøßW㦀\ÿ¸LÓÛËÄêšÃ>Œ5©HšŸ»aÖóº~%Šñm‹1æ0ˆH»s³dQŠ3‹nZWÄdf'(¡¯ÚÕº,ò›¦‹×Ü—@K³´B$ƒúãJŠ­Ì¨˜i–2Ù>™Y€y gÞïègx®›Ô³|è’ÛùÃË?a“xÑÔcÙŸ~ºEÃÖ쇗CL{PÂÌUõ$öt™NÑάåž3¼¿¬ƒÆ1NÞØŒèUW–|–ah1Ž®Ÿ0ݹÀ[Âænã•]:]Lí˜]ÎxœG¹ÏŸi"q÷¡æÃZk»ñúk7%ç:ßé³Ò†R ±›".¨0=ž›º¸§ßðMš©ªOÅþKÝû0T•ÅÁ\|B­`¤[jòØÑ”‚yW’hŽHtÜ ïÀ™ýhxׂ÷•t•õ"AL2ð×_ràÿ›Âó–1˜ÜŒìŒÿ^Dƒ« ÇWŒÔÒÊMÃWvã3I‘Pl×å5î6Δ¢åM}¡î%HnµxªŠÕ ´]ç¿×Ñ<^Ú5ñê…‹´wq|ŸF ž¦ïëÄs»ÍìÀ¿’œc³3(¹]Ϩ‡Êšù2Ö|¢ [ï®ÛD€š>Iû’fä9•¼Ùã¿‘¢èeäpWµð³Û)ÿvö¦l5îÀ7V ÂÏ”ªÑ?ƒ‹ZŒÇ§Oçê$ÒÍXOSO–0Ùˆ`­ÖJ m;ç[ ¶ô„xñÁæ˜\€™Wã·ö v÷^âA ƒ@†Ç¦¢œjømªK LÁE_Ëņn½ò’}LI71+)d?*Cw웎íÐà))r®|2KíSxqÙÑ¢®ƒmŒ*mˆŠc¯#sÙeE“Úôöoð\ô™o­˜?¨FRApwôÒ…vÑ"tÕ-)«üÌ_qÜ^1 ³œ`ìÚœ}ðÑ`]&t“´@Ꜯý!ó4\¤“(—(Ÿ4ìd?Ó÷(Ãöí}…œ'zXej%ÎýáÃËÔN2§_dÈk?z„œëtƶ†/Oïào *}ê5$ŸªH5å¦Ð¶SÖ’™<öé©á$óà—ïJ?îñfßm¶F…<:уù±p§^K×¢ªd‚I£ôvö% ø=;V¶îE‘FçËÍ -aÈÑ ¤ˆªj\]ðŒí½Wo¹AãÝ7ps*1…™¢«ZMS3 ·ç•Löv҇ᛙÓ1&A¿üfÈÄá&X Éó¬s1v:ÍŽ¹õ›ûŽ"Åc´ž˜°Sß32ññr¡ Ž«ñšyo—k(opk"æ‚ÓM›‡Êh3bË…èÄËrÄKwï —_ÍO¨¦žÌOaa» nN:Í õs"Ìkx’ˆTÎQ‡n]Ñ‹‰C¬Vjõ~ªÓ¨µª9ÏüÏÒù~Õ‚ÒLý0KŽÿBÎLDÓÔww`ªþ¨hMz$l˜CËûË2ª±„„1µšº*)lËÌ[ßcd¾¾‹nÉ94ÓüKö_!µîF …µawmƒ=ô<¨9Ï¥‹Ù1KJvÔ“3£ŸÓ/êÈHЏ)f@yÈÜÛU’ù–ÿÀ®}º>‡ã1»;—#²áƒ9†±Ø¶ ]*_´ ¤b'u5”’¯~õëÒ§^úuäCÆCì{úð?ÿ¿L2ƒðÿŒëͽyÃæU;²Éò½A“seôÀ0@6}½ù^¤'°‹Û¨=mÊþá*v}ƒLˆŽ‚$¹)G[yùO‘©ÈR¤%TfŸbþ^ýã Øç='Ú’z¸¯(®çnvÎpÃ5äáì’Ü”¾7ɲ#Ûk/òuÀÉV²XÆX§† ôâ1Hwxòâ°—}æ·k÷Û=AmYAVZ4£ÄÏ{Já’¤//úg#o9°ñ>q\UÀãC9 5zú{@‹|2<ã¯æKõ>óÅö Åòá¡ÑqDÊê¶´Yj)–&Ëö6y꘷Uõ™ª·P¸ÿÚŸzÀ#v%Ùx7;´ü½6íxܳõTÍ‹ æÊe—8êŠ%ò_ï²Gy­&Y[â*ðdY¼B$ÈA÷E7 cíXëôØMWèP©e6­±ìå{üè°v¹õ¯D2ÞôâþS¶Y/ÿMIàç줴/âv§åò«cͰ¡ —ú=©Ò$ÙŸYë"¹‰W ±ää|Á™¢hó^^FA”gNM¿èMuåÕ»?ÇÇÔË?’ËHë—Èþ÷¸EE“¹ë¬Ñ¿cûq< 2£Ÿ_ÎY]Å<¡½‚âûÑÖ ¤¼ÓÅYu{"µƒ ÐY5a˜îבrÅÎ¢Š–…ƒiŒ-qCF¾õaóÉ‚ÏÙxê’rÈš¸WyqÍu7>¯Á¡ò»0 K˸Ëw öZžY'Ú†w æðö¿—®EMCï3 ‘“ˆ§ÁÓýR!íÍ82|ž0õ%b=ƒRjòŽì"›H›.³<{ÿjUË›ýÒÌ €!Kü€É™”}Eþ®UΕ~ÌÙR»eÚØ epw_$øqA>óÓç!-3°^3¤éŽtzet`ÝÕå„줤…p¬ÓK£’§BBU‡¨*¼j"ªzHÆ“2âÛKcéM’pŠˆ·ø4{’>d?Ÿk€jé÷¤ùdw/Л࿨‹|OE-Ì›ü*ˆ4I#ôš†ÁÁ—ØW6X¼)Æ¥< à)bßÎ0ÛŸ+£$=ÐÛE'Íì·ÛúTe¡/®Ì[’’×sUNɰøÔî'a†on‡YbÔ‹°öÊŸ–ØCºtÊÖy”²”8½_çUSçËpômœEÕ6ów½ŠÑÓ‡‚ÐÅ3ÏpT†ä ¨ñ´¥ª'~8$Eì(q˜ŸÍý¢É#·C¡çœ,3(#\HÈÝÅìºÄã»êDç—n~œ¹µ ?A wœ Õ¸Þ©Þ B”È„ôžUw'¯ÕÿåÛÜ¡¢Ø ýÌù¶-,ÆÄç×…‰¶÷` $ `¢¬nW#NWÎŽ­LŠ>åvÖ¦âÒAõÐÉB$n}´í ŽLb·Tðíl6t˜éu(ÒäÜ{ÙÔ\ËéÍ‚s}†-²¾<@ç–?*´+£ücai©‘™Ü¢Z’°¯¸ò1m#¹˜F—Á ™¿¸9åÞeK³åÕ”.wÃ¥·œV8†`õÌ¢ èOJ ?òñòF¶õ{¡?–Øp1L缇ùÎy´ ëHV÷7û¨¶F‰èß~êB¬û3ýìËWT"óÊ!Ò;ZCÕEk »1Mú,IÝÒ<8ÇöGiLù4½Ê›ô(–&§îê¬o"ô§<âAǰèngÐÍ%K¹=ÉßÌó¥ %È6 §C+bX$ pmÅ ƒ6ÿs»¤¸ÙµÅNŒ¨vÑé_ ?&'p.J²ÈÄ›ÓÜM›ñÕ!O™~€éÐÚ¿uÝ ®‹íMáØÄNêÕ^ØK‡MAfÎuðsïàµòº%]e,S >F#*zœ¶*uò® ŽnðÍ€Ÿ=Dl<í_h?íðÍÄ{½ÓuÑV…+ǶÊ`Ú)s»A‰LŒ…gŒðªÖ÷œλ †n¯¾ç)KY°®6’-5Ü¿š”¹Šå½ëÀ•FÕ…ÆÝ#¼$ùŒŽ¼u«(£ùWD¥¨æ-²6t×Ù‹ˆO|2K¨ Z§®%aK؇Œ7@Êbg‡Ÿ|AÆë±m÷–dNkTifIV¿›É‹4^C#ÙØUa’ô•ÿK¢žÆ`ÿ¬|S¿"âˆ)ø:¨çê!¿[ÙFí(÷¼Þ\e–Y Ñ¡QÚ…~;2µþ Q$päzK:0ðµ7õï?CÄü{£[ÇX/g…cÖ³T¦‹ýšö®Ìhò¹”-?€ZiÁõ£?¹¨ç´½ƒÊ낆4üDpÿ¹‰¨n [[ßSò…j@…òÐ{øö¯û=Á]9Ç÷‹vɺ(ª@jpÕªFZê¢K§ÿÀ÷K=mzÄÏ߆0) i‡Põs®lO7ŸkÜÈ÷ŸîîªîÈ"—K'D–= WÆËSºÀº´Z‘ó¬_âYm©Jî€PO‹·›Ô:hTîÙ\úõ¹©·TÍîM<,!¥ˆM=â'ivÂÎ j¾TÄ_éÔ€ðOåf®±ÛÛ‘?æT²mÖè+ƒjRGk8gÎUs9ÄŒX”7Æø·I¡k÷ë6`J‡lïkˆ,ØJ¼*ÈMXÓ%–ò÷ôÚ° ü»)N+ºÂ2Éa¡@_$y„UTD¸g"Õ+Õž\¤‡ ¶Ûª"ö®ÛDb5sD£@Ñ¥²»?ƒ±«».Aðˆ©v멯™+öóGKSÙ³µ—Ä¿EÎ T·¨(Nœ^n¥ÙûÝpêý¡™bTšuR[ûÑ1÷­ð9Bp2ʱ»×âc >±’‰°Ä„è:~I¦Ê.qo¢–õñÙ¹I÷[öûncKþùfl#´')~;â²çS:vâ Š_C° ñ!îô¯þÃ0MZ¿‘€Ê6á-W-.Î,MyjÙ–÷x!©Å xý® åhC_­ÄkäLî’¬%™N•DÿUsØéªåYaS‚7Ö,ÊWj¹X"t$§Ý: Áç»t|+ ­§èϽ¥y.cÈ®µlu"‘`(_BDøÆ«ßÛt<š%¾"Nü"€è¤;2M)ìÃÙÚÎ _Þ^nÆbgLuu‰Nõ0y¹ó'^H½RO¸p‰í}€u_,Ö\ ؇a\ÉBmâäwiƒ\eÞK‹4óËŸSm‘QUÚÖŒrA¤Ù¬d!8ãÎ4×ÅÜ•Ÿ1ež¸)eÚÁA¢^õ·ÔÕ­o Ìk vZú‡„»D©µÅÚp¾9@N€Í "y'v8|²£(âš·*Ò{êo!Ü,xIJî̈ˆw)V1YWvè—‡ÎÐÝ+ ÁìZ Ù–Ypï`†îXóÀBUd·uóçfà+T³1ÈÁñ`eªê°²«` zó*ÿÆt¸–†É7ÝX'Ð3憀Rù@^È*-Ô¿‰8‹Þ½€Ãœæ`×^4æˆxíöupX®žƒ8ÜØ Q‰HÄP~¯ÇÒ¾jª†5/˜Z–yØcZCTÚ„±^¯r€ˆ‹ÄÉI²;Í (¡Úά ¼!mb“нÂËí'ׄjÅ#oNáñ95 Þ€›è4;+°„ÕB¥ìÌxÐY}Úõ®1p-ÛNrrB×àØ XÕâ«öã*îÁž„ªŽ;C˜”‘ÒÙÁõÍ!l yÖÿu2“uù±œßÁ3¤e}¥Ïââ²°4œ3f"#Ù>æ§Ž”’ Ë4Ã:/ävšS§4‹Yæšò+Ãü#>–æ£ø{ûÀ4_öÓÜP޹[£‹QÏ_d|íÑígTÀ ­í^sÆŠCêL™È¿_h™=n­Pl1˜µåCÆDÙ|« ˆdµc!3Å~0ׂ6TØOÕ’“ßþ¶Œõ·a*õPõéÉJãÙŠä¾ &ÌàEÔhÌÇõ5&œ—qÛ˜>.ƒ$¤Ð%^ê¾¾@>hX¶ŠHò~Îé°&ßÜÜ:0>Mg“  Ú ÀÇ©Û`Ù–pEµ lÍùWš²½"ûO×ð}óÐ$ËöÓ¼I·‰æ“r”û§Õo‡‚—ïëbó±ùß§zËÍ?t$×KÔmŽB뢊õü¢ù øJu;öܪíÎÏ]Gq»õã£M/í{1kàÆF:ð£"´ô–¥ÔiZê*ž“èpí½ç¶ÓøÕ Ñ6„g‹}{ôýÊ- Ì5ój™·u%£³;ÿRØ‹Ó>ùaMhæ÷†Äøá‡ÎÐÃP*çæ{ú ˜‚õe¢Ò^M ÅÁ$R¼jëdµIžBûG hc ¥‹ÁJÓSÖ„¿m¬zÑ‘cyzùˆæöœÌÄoO«7‡‰Þ?¼ßXfóÚX°ãU½3yýð²ð/ËVÌžCBþ¼Äl÷58BÑ\cYG¾o9ËÊfSŸãÈú\òÁhOJX¬ÇoR0ïë÷®mÃfÆXÜøãÜ?Ë«®BJÒ‹Jþ¢J¨r€:ýÃBì[õ¹HN–´èXœoqd1 žÅSü*‘/s@“Ü~%n->ÀÜô ý[dìQ£.ÞÄ}Q&M²ä•wJà‚•Z(Q&2XÃõÊ Õ» 9GYôÙÛýù<éWsäî˜ýUñåïŸtµ%¾wNŒg,Œ~œ—6uDñÆçãŽl~}ˆŸ£ë€Ì“€GjZ¬ÏÌ!ÐÚ(œoHTòù]\ þu/è†z(|0—·4™#üÆ@ÜÿÐÌ3(äO/¨K@×l”!'í߇ Í1KUÚŠ:m—Íš,óRS.²|_å³.*¯LÅ"Ýïóîˆ>¡¥j<žøÉòë+­·c‚¸x*Ĭ÷ªƒ©™V©ÙwÍabF"¶€{"m‘ļ»ôoOÄ–Ï&t_ú+a¢Ð¯Å?nާò‚K§¸ÞUÄ)YñÒ&!¬žÎò×wcPåR#ŠÄ¢Òk¨¬…³“c‚º£º–¡z'ÑÖ•%´ÙZ”qÍ;CŠnÁå9=#Ù'.†"Îÿ+ßžQŸ†¦©Dt\ÅÌíxàqÔí›vâÿÄ%ݯe½êÁsqœ ÕJ «v䈰AwOä_ü\ˆI½Ìö¨Ý}õÇ„Àxþ(ÎÅy̰•õÿ‚1§ýO'Ôl«™·nà„¨/áí<ôaÎ2ñ‘ £ÏG÷ú (’ìmßɺùH,÷½^pÈIDÝ•@7 "ÆÆÏ®[å’ª‹7ÜŸËÁGQ q#âëìHae‘Óç$ží—DžÍ²§WF^· ¯(D.1:$Bî½õ›m³¦¨€°pt[j‘¨7º’mExÏ÷¬Ðtï\m(P$9âäs"«…=²™òhÅ6fFÄñôu`|Ûëqò^´âké.Aù`ëf?áóU—糕Øz>ñ;²Ïw®8ÕyqÂiUPµÓFBS¿âÅC"¼Ú«€¼J¾äý@t‡M’IÞ£ºõfE³çÀ*_¦¥]— ܸpÕôö¯± íÍ­£9CúÑÃ5,‰jhymv÷Ñ&Ì-»±› š ’D²½x8lÀ¡xV•5SÖ+Tî”ñÍ?NÆ 6Á<¢éQàUlá%éó.l‡SG?8´zL)n­$Ñë;­Ö Y”Ëw*Äßl|‚³¦uJœV3ïºú?`„Õ†³÷E«ô4’'µ+Bµ¶–âéÏ€_µÎ`›A^ÅM­Ø,_A´•цΠ+oØ‘ƒÕ±Ï`<°v8.è{ ÁLPû©”rcVúÕÔèE‡Z?=vlwå+£Ë,€cöqCŽé³ÿweöêlÀ¹\ Ì­ é [jgÀG>bƒ#ïÇ2Œ´Ï¹ÀìÖ<®RùQÂÜ7BIÀ¿·×é>¦þ¤~Iº1.¼ajmÂõNö‚-®:dÔxtñUQM¤|þ)gŠJ牯åÊ!]Æúð' |^u¤©e%WE«3É]?í¢(*½¿ãβ½ ÚZ]°¤(ð"Ãðû—Ü¡èx[ORûP/•ØÈdHz«,‹ïYØèÕŽ<‹D81&ÒjÄý9´Ï@V>ŠI´JtúÏ Vs÷¡gÓ|Ú…+ÎìP;’ÚF¹·&"õ‹ÖôòØìLqÅUö‹Ã`Ò Š•ß|¾Ð®Ô†CŸ"Âë6ÐOç^rþ‹¥àô ß#1Íïsí õ9ÝS~{{¸º§í#÷àDHýr¢'C§dä]Õ~Êáµ:ñ%Q*7€_!—³®ÏúAô¿9mj ì1?æ l{ÙÃHoòÚ 2‰²óQ³[ÔöD>ÈÝæQ{µà59P¯,,À/é–µÀ ±dÁ’ù¦0Rêô˽’ Ún„ˆÙÕ£Ã$ˆaKa·=W‚2•èU{Ø™ÐP–^âU¥7R ¤pËä#á?VN¹¨ÌóèÀiLØÙ4_ ÇL¼W@DLÄüÖ;/Ï—ð’z&_øµøRƒÑbrxeô•žX§Øô‰œÀù’lr˜,fPí÷äf7‚Dv²M7Ý„³6”9!èܾòÚÍ)?ÝµÞ £S®‚š½Óõú¡ùÛ=‡t¶Uîvòþð•ꗥɱÔqˆÀÕÄð• ÷äŽÌ%ätoà_ Ø«;- )"!ícÿ(†¹V8š¹ÎG-ç;³ÀÙ•Þl3æ´Jc.‹JÛ"æá¥¥Õ…š/’7[^ì,‹ ͆/52KÙ7ó©MéÇ3ËÉàp¾2ìÑ{Ö¶2AÇ#^Ѳĺ•z«îÓØh-¿í¸ö'ËS>`p ¦E§Æýu Ì$‚¤~qhA”!¡Ð!%Zw œõø‹^ŸPŠö_hU5œ\#)Eyã¹Ná1E!ËN!¦“ í¦¥ºd¦Or?sà|cYHÉÏò—®ƒ$á«×„¹¼ˆ3Æ9€=z"ÉóS³G²6ƒéš‚€u@ãl+x‚»à4(GDÇS’ÁÇÜæ„ñÙ1 ]VÞ…gõºš(bk†ZÔ`Êoõy¹ÉeÄ,mC·NÜÂ8ðy#¥Zöû…í¤bJ‘à•ŠºHðöE‡þðáÆ¹Å;2×ì/—–úÇ®MF.Ã}õZþMÃHô. ‘}¶hÒòCÜ`ïaH™6…Ôsröùó&ÀYñjIWZЧìʃxFGÓh 1©åÁÚ¯añÛ;Ï*¬¦7ÒEt+dfŸ;â é¢5]síKwcá#ÒÐSì1æ á^}!‰¯àÿ÷÷‚8¥Çr*Àª‡j™…u…7@ýÝîjô%Âö—X/˜r W9to!˜%ÚÂëž‚†ç/Å'b9V7¤æ!ã~F¼KÉ›D8_ïŸ;„œ•)ijۦ¢ñ9úÜ}LcëDZޔºI×1V–jjË…Uø@þDäJ}ÌÜ#q÷qäWðÀîËíÃVJžYm1]„~j¿»¥ÿHáZÀ>³! ˜j ÜxSïäßÐû£ÇòË¿i‚IÉ„œUÆc}e°.\ÌÏbÖ´T¥ TmâQŒ[ѧ8¬ (Izé®=€a5?*ð‚Ûq¸€ùH‡á#Ã`½Š تJ~“Ùd” ®‚B¼ÛzZ†.Ê|§.Ò¸ùvQ,ÿWwÃDßF~§³”‚öAç¨Z(°Ïî–¡VÄç–H‚kz£AËü yƒ%PWX[e¶·”:YÏù±Œl¶½Î°¦M•öQÕ£(g¬¦©lì hFóPUµ»™©;¨ß-F€7¦øƒ™±¦Yaš¨6Ú`$$”mb’އžøæ÷ÚhÖ(è5­Øx‘'ÔÊ}áæ–½„1žèß$ÑhÀMŸ”X¦ìoá`¶9'æ+©"p¦MÎàÖ,\‹DaåìõŽU"S~|íß&màæ ÉèA¢¿ÆWµGÑÅb‰íÌ„Qo~£Ç.ã ¾˜î<]oúC¡~x Íô&l»ÖE kȽ”Äíqõ>ï[® õ‚d‘:L§ò¥ HD5Kѱ¸_@óµ@Eoô›éÐ^—›9ë•|íiI5%àN3pA_÷s†\™lqOõïXyE&N_$ö]gût³˜êJÜñmš×Ùý‰¬îµ³ÀéTO LŽªgøý¦ _t9?E>㊠*òÛúM:aU5K.Ë#bRÖ»GàÊ©-¥.Þÿ£-ñæÒÌÂ`ÁÜnݨj`â#‹ Ë «Q½;l1^:¿ÌG)…T³òøK¨¹¤'úEà –á³Ë6¼í…ðè÷ƒ¼D'-*×ó³Òx'?õïr‡]H†KŠ`þˆw—deÃð‡¦Œº1ÛÉÄ6¼À‹gTÁ„GéÜpÒÎU Sk·»à*{£Hê³ ç_[t;ãÔËãxŸ!+`ùdqMP¥íå\©“ÇmísO@³ö…Ã…¬/I:£Ÿ,Mby¤ Fw¨¼Œj ¿˜ígc$nk“È™mX9ŽÂ‚Ù=®úÎ Ïù®kåaýöFÈOìã|0ÖçþÙŠ0䤊¨„ÒÙEêLñDà íåØ.4|"Æ}™¨;b[3'Itû¥×‹éÑãÈ_yï[&!HϦSºU&äml+e(ýß­€ï¶à¼ ¦()üô»Öê¬%–/R«U,€±ƒE×ä Gg B¤q{Ô)á^þ#¢<£Xô–~Dß1B—†E¾.X…®‘©P K/ãûŒQ*²d xµAbt¬¯¹«Ï!Ì -!ì‡×ÑÎ(Ü6 3C’¦1Ъ¥ݸŽ9¡ ÌÙ¡açg '„Ëö¡˜Röx‘­»üŽÍ²#bDëÁÖq1¦çó%Ú|"Õ Öº“t×µÍKÜÞ¢*Ûk$ítÝWŽR‹ˆ|?†ƒ¿4° ¨{›V;>õšæºuÈ—UÃEr.†I'+`&Pö“(Òtv•Ò–ìé*êÛÈa.*rUÄ  ø,ÇÓjêTÊ‹wJüâ,LúD¸;A‚éïK•ùª•U&œÞ¦ƒøœñĶd¿n—~žgvµ€#®ƒ °Í˜{á–X­“èo÷„ ˜ÇÿPû ž‡®e·ûz3˜( »œS·«¶¿&|Ä›¹³¾úl‘jhÿ¡¨R<°Á™”Ó[Ss!—hHì÷)P‘°rÿµSeÑúàfBˆ×Ú½¦êœ¥xÄ=oÍ.ñÛÒCñÑ4;ô­+µŒ¦:hÕ|Ùt(@@^£jœuÁsk(. 0!Û£ùx É€é>öù]¤q[—¯ìzLÐè×à|{8h¦Çû”:q, Ü¢Õ¿8¸Ó##¤ªF¾e¥´‰àך»–ñ¤âñÖC>0 ‹YZmixtools/data/Waterdata.RData0000755000175100001440000001300412777444142015725 0ustar hornikusers‹í\k“]Åu홹ó”4zb!FH Û!Daºï„ÁN ;Tü›—óMEH>BvU~Iþƒ“˜TârÇ.žB6lœ`ôB½f¤yhFwævzß³V¯ž±?$©¸0§ªÕçžÓÝk÷Þ»Wwï>š¯ýÁÃ~âá çÜ Jÿ¦äjƒéŸWsã)èð·}òOë°sC;Ó+<™ÞÿÕÝŸuýk#ÿ”åŸßÈ7òÿù-ùFþ1ÎoÝÈ?QùÁ|#ÿ5ùmùo$Ÿþïåû·qý¯®»f?ÞùÆõ?»>j{}Róëÿöú¨íùiË?©×G­× {~¼®ÚnŸV¿ø¨õò›Òë¯)·Åö+1ÆÙ”æÓïÑ”FR:R+¥1{žÒåt?ò+)u‘Ï¥ô~z>žòK)ߜҵé~!¥«é~О§t!¥%k7V×jJñü¬µ•Þ §üLÊk)5SÚ‡:†yí4lÈ]cÒ³´}ò¤4 l“%š,h‹ø&ÿ²•Oy/¥“h®ƒüú½dïM>´»ú±önHi*½?þÚ5Žr[QÆ®†aBOg ³!´Ù—2|Ùz³‹þ˜Œ³”z]Î0Ê^A[=¼ïá¾¼QöRÑÖBvÇzi™úD[£Ð±]u”19† Ï…tÿ‡ð¥ö1ÝÏÀÖ¶€ï,¦ôÞ›ïm7KéwMh›v[Aý«…~Vчqèr ²¡ mÇ~Gèleí~?äX@Ãl£È‡i ”G[C”ÏýêÅgö¾ý\Eÿ¦Øž”_fÿà/5Ôµ2çð~þtíf«ÀÝ™#žíc¿`Û{ÌŽhûŽ”nOézàÒ'Oã÷ùôîfØbõ‡àKÃ…Ž—A\êa´ÐÕ$ô~eZ;×—í¡Þ~› & [:ôe•:„<w&ßêšÝºð¿È1‚r“å´«8l6¸\†~8>.@=Ø`å¯B®AÊPʉ:]”ßÇvRÚ W‹:{Q~2;ø(¯Áâ¾ß,Þ]_ؤ¯‘‡c‡Ï ½Öh7èÏd1¿°ñH~Ûï*ÿ%_­àùú¸è0·¸Êﶤgë*ÿ¼òݘÒuQÜk|z]J·¤gß1½¤üïá{Rº²M Çæ¹”mlA½ŽùÚ¦ôûïR~RòïD—ͯì¤dd¨9ñÃnØŠ|ZÃ3óÉQ~ÚD½h{6å×Bgò›MAO¯¸ÊŸÏBïw¦ìu´m:â7äÎyyl¥ìŸñ~ÞÛØ¾v#mÆûkRÚæ*îÙþÝdúAÛðl'rúñ$Þ_ƒ>]ƒöÇñnö7?|¿{N<°ÝÖ ÿʼŽr}~ƒ=žB¿8-ÿzzö]Èq-ò1ôëȳú±g ÃúgÏ~/¥?Ö8dâ<¼¹ÐÉ žóýÈm÷7£Ýë€eù<Azhßlh¾ó&ê’o†œÆìuðÕ1àí„ÎVñÞúzc9†‹>rŒFôŸë’Ò`Y¹Ï¤b¯ºj]ó}'¾‚ ®A]ÓÑAWŒ´aikaCêÆêlÇ»…îv`ìšM®Ç»; y ÷{N~÷%øC·È·ºÂWÐe!_=‹¾Å¢žÉ~ŸÓ|2ûÞYpçy6÷C–qÔqN\8P`DènzœsZ#íwŸÆCÏ»Êÿlœ(xrÚŸ@?‡¡G®?L?¯¼ÃöK}P¦qú_Ê’rûz¦ïGhÛE­•¬þþXÍUßA=Žrp…m>ÿ0®}ïûs êï6}…òGÌåON1ý›«ÆÈ!Wù.ׇÊ6Xº£¾¸o±ömž~÷ϧtœjëò‹è뉨ýÀÊ¿r3)ýCJïÆjmwulMð!ÞG”µuÑhcå¯þ&Éô eóûX­%F¡ÓëgQÏMžsè«év2­ 7œ“Qûó³‡ÐëÛ·oû¦bµÆžEný¶u¡­Çl̾Ü{à“» ‹.eDóú:=þ2d:†ç–.AÞû]Å]=èéÒún¾y*VëFÃ_… WqÏ1ÜÃïÈlûÎë3øíð~®ðå™Â_Wá×q¹ðb, ÿ÷u60Œ÷ÒíW ýÙÕ…î—`§9àΣî8l0 ß±}Ì›(»ˆçKðsëׯjÝÏuÓ|Ôžë4pM&3_ƒm]Ôº±†²sï/à½Ãïe¼ŸCy³ÍYøÄ´¹Êæø/ÅÊßL®ÑÎ\! 9ìÚä¾e m<¾š,¶^ÿQU&¯s {Nqš» ï)½å´¹‚ûméþå>în´[CÛ¯ÄjL½«ñnùKÐÏͨg6Ù›ò#®Ø·9ÅD¸/|ú(Æáɨøƒùæ/\5/üõvÀžÜKM ÿ6F&£Æ…éíÈ{2r Áñ£ø8:ÅçV!Ë›Q1òÊ™ó øïNØy¡¨»ZØÁúÁØØÚ›nú¶wÛ)#ìô å^~vÅi-³ÅMëû×EnkìQ”¿YOc¢ã~G£bTöûî÷À^[Ðîy´EÞ8˰±þ`3n¡Ë5×’›æ‘ÿú`=–5Ÿ?ý‡Ìc± AúiÔ˜‹°M‡ÅØX¡Îñ{̱¢ã+ÿtzegÌ“>͸¬É³Ï(ÿ¼[†ÿ1N·íXNñ„Ò^f£I´YrÕ©u¶‹h—{×|A1jMcϾyž,ŒÁ-òwQž{ ³¹¿éECÓ«ññ%ü~¦°ùhÁqÁ±Ã9„qj®©ò˜OÙ÷R:+î5Y.BöãE¹¦íѯʘ˜í©>çªÌ!§½ò^Øûÿýèçìr êš|ÕU~o6Ù{læ ç&']A=ûý;®Z?Yw¦ôu”A™`ã]È©7“ÉbAË… >ç¹ùMÐ™ÕÆóߎU,n3ÚÏ÷8Å•lï: ¼C¸·˜Ä\5?å}¸µƒ|(jñ4äÜ‹ºìï(dgüÎpl ÿ}¸m˜ ~ËU¼°/j•Ç—Süc›+â­Nq£‘¨yi[1¶F­QÆá++Ns5cl‹~÷ äæ¼Õ‰Æ*†2…~Õà› îD[}}Fìƒ`ÓÿíÐíêo¦Í“;`ë&å¤#°Û|¢Û†zÐy¸~÷÷Ï®šãl¬>.¢ŒGí@¿‡¡§I<Û_ðçƸ‹tŠÇí‚ìŒÛ ÃúôlaãçœÎÖºÐç.Ô‡îkßZøÅ(ä„_d<Ènûå§\5žoÄ»/8í…MwŒ Y¿XÔG¾Ç)VÚׯô1ãƒÏG­Ul.`ìm+|e/úqWÔܲJs,9ÅJkNñKò1×S®ÐÁ>`^„{ÀÛâ?dÌiÌ)vUÚd'r‡6º…ŒÝ‚‡WP†1'ÊÄuÜÞ™ÿØøÜŽ~lCyž±XÙM¨ûƒÂæSQs3ÏÃûÝ‹zÖ×ç¢æeúéŽÂ®±Ðgy^Å9•2˜l6—·]ÅÇý˜*øçP—ù"Vs}‚s ×·Œ­ìEMÐÍôÈó~›Ov£-žÂ†a±– ´7ëªX-ý€kãù¨=fÍÉÇn|ÿ²yò4êîC=Æä ã—¡Ãy'Þ¨·ƒ:†3é4Ÿĸ³¹Âb¼—¡G;£¾‚z3Nñ€y·ö,ß;ÅmMFž³•ç„ï÷@OMä·ÀW¬.÷¥íØ:y&âìÑÉ÷Ñæý±Z70VH]Z_F Æ¢±k®ð; å~cÙ)F.v:oæÚj÷wRßÁÖrö ÆÃÀ¤¾øÇíÀã8ìï±b¿šCŽã› Ü|f~Gö <÷æ9yãÎi½;µÖäz¤ÏÌyHÎ⺇,E·q½ð/(Ãó´-NëB®múþàð½KÔø_³GŠŠAmvúvfWÑWλå·9äþÙYñ¬üŠs¹qßIÚËé›ÇE9îãrÌÍ1±X­±ŠÕ™‚q½ÅXg£Æ;Ï1ßKéc5¯ÿÏÌ/í»‚¯D™ØšÑÖö Ñ ìw¼hï0ͧì\Ѿ‹ø§X‘oßÇa›w Kÿ›Q`˜í> Œ({±Ûòw!ßñ¨}ÔñÚ'ï/ÿꓟ?Ào®ƒ  “÷¥¨oAÏãžßÓ?¹F^>å=,»ÿýéB^~ãp<Š_¹fù"|ÆÎéÔ(¿Rèu‰k«Õ"ñœgà]öÕ雿ËÀ¤gøÃè ÇŽ%‹Ÿß ]ð¬c1*ÖmýâyvÿlßéŒÓlr?ìÁo?­÷CæØáéB¯\ç,Á¾œ÷ÎS—ÿ©¨X?9Žãõß¼üwœÖ 6þîEŸf! Ïv-ÙùÙéø«ÏR©ëÙÂ7.àÙ;,uVû×xÏï¸ï Ì/@ëçQÈÚŸs]Gæz€çææ»‡Ð&ϦºÐ­µuãÁ|ðYè||,Š‹žw:o½å¯%—ž+ìÀX‹ýþy¬ü€<û,êZ½Ÿ»ê;Óõ‘¨3Š|ÖÈöÏï*Èս®Æâ̶À\ÆûÓÈç 㦢Oo—Üø­ürTœ›6åI^{}.u`ã‰óû½°ëÚ·q0 ]Ó7é§ôå>DZŸNëéUôãDT'¯g¢x<êâüÉ3—ò{‚µ·é‚oÌVGÑþYèî´ÏÿoâŠ9j®jsÍþ‹Ã?úMWMêx8tøÏÅmíñÃñ~|zú‰Ï=òØü9ŒÕ×ýöë~·ÖþŸ¾m]ƺßëÚü½îÏ¢=ùÄ_,$OÛ°êÅÀ4ocøŒá3†Ï>cøŒá3†Ï>c„Œ2FÈ!c„Œ2FÈ!c„Œ2F=cÔ3F=cÔ3F=cÔ3F=cÔ3F=cÔ3F#c42F#c42F#c42F#c42F#c42F3c43F3c43F3c43F3c43F3c43F+c´2F+c´2F+c´2F+c´2F+c´2F;c´3F;c´3F;c´3F;c´3F;c´3F'ct2F'ct2F'ct2F'ct2F'ctˆ14}ÛmºÖ­×mÐm]· Ý6uÛÒm[·B›ڴЦ…6-´i¡M mZhÓB›ڴммммммммммЂЂЂЂЂЂЂЂЂЂÐêB« ­.´ºÐêB« ­.´ºÐêB« ­!´†ÐBk­!´†ÐBk­!´†ÐšBk ­)´¦ÐšBk ­)´¦ÐšBk ­%´–ÐZBk ­%´–ÐZBk ­%´–ÐÚBk ­-´¶ÐÚBk ­-´¶ÐÚBk ­#´ŽÐ:Bë­#´ŽÐ:Bë­#4q‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xq‰—xqI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI—qI]\R—ÔÅ%uqI]\RO\².¢óÈc‡¿ÉˆNØŸ?ø§O~üÑôËK½ÿç®,ƒ}^mixtools/data/RodFramedata.RData0000755000175100001440000001375711736707362016361 0ustar hornikusersBZh91AY&SYÆä”&ïñÿÿÿÿþïÿãÿÿÿÿÿïÿÿ›þïÿÀOÿÿÿà ªû7FÛ­Ø ©E'$o‘ȸؠÓ"®ø<>0o/… -µ°Ö‚KX‰ˆ@0LL“ÒmOI„Ð)â™@hi Ð‘‘êhÄÞ”ýPm h©â„SÄ Ò4Ð4@%2 4Ú€P©åR?ÇêRŸê¨ h€<„ÐM'£&¦TòŸ‰O)âjz‡¨4Р ©Ó@4†€ € @4zž¡©ê=LL††šP!  Èh !J%4Ú¦Ôz£i£G©¦@iè†@Ä4 ¤4d&€ÑM1 ™¤ 4hhÚNð!•þ0O{Äî÷€½÷öþlvûŒáÛpÁñî­3uyñQ§i—*q|»ŸÁP†Np¹ÒÂHbÁ*ÚçP× lT§Œt2¢Y_MD‚>0‡Þ†‹¨g”fÒª•t3 àãH¡Š´¯•ÄðY1—ðC‘iÙ¬‚…ÀÄõÓ×z"ÞO’ ð_øˆ[¨¦a#WzQ„:¥g‚`!ÊøºÃM‰ pcDJ•Ãÿ˜åàÅÌ` ˜ „ñvU®0 êÛ)ÎßÞ×rÛÀ=$j»ú膒 h(;úîl^cfpówM¼1“2"D"%D„ •˜ 8gÎo¯{xPéP±Ù›¨yh@v²‡5j À'*¦D0Æ ‚bÝ_øþ Ÿ'V0‹§>ÞNXÎ%0ÒoDÝÂÔVϘœ`„Mp£ÐØYÛ ~¢¬@XXËÍ2ŽæÊ+–“c,ĹÞ™šneQ¿u$8Ù=MëR8ÂáC8 \•¡bmäy¼âÁÕß—$vŽ §R/h•/f©ØÎ‚KrQ¬¹:œƒRfÖÅtÜÓðt¸Y‚ç äÕxqtêWÕ¿¹Éž]: *‘ØŽuß)Ø‹ˆ— Xõ(— Ó?îg”l™ÿ¾æèB‰ ©XºÓC@UÍÀàbÁ¦2(7ì·KìHH8J™¸­KG{‹šÒ‰ sÅ =W*­- ´îÖ5ï¶J}"ˆÑmIa°äéuìÐì8;79œÚly 9muÑ9ÝÁDôÀ)(¼‘ë9o=n9½ô$ß5­#±ø8";ã¸i*ÞmK¦i_Îv÷·[pŽÚ‘b«>æˆUÍg±D[9t¼±u»íiHtT¸ F,W“¬©­¹S)?&äÅ-ºÓã›ÜÔQ´ØS˜JjA†"YÅèY‚Åbhñ{9 ­Ï-YŒÀ´CcìîæÐpgŸáuxÓh¹”w…C»~ièÿ&C¶#€ÌÄa *è°ÂU|$Y/0M×Lسxö Þ{lÏn+{Š#µK“P’©Ô+HAËS.¼ƒ²òL<ú ö‘´`’3Óß_ÇYÞ÷|‰ð”ø§Þ¼—À€„–˜R!BtŸCJ׿Š@»nôiõú%×îD"€Î:<0ÔL¬OÅc•­’çzBý’$x±ªì¥sjàA¼!CÞ°zäÝèƒ*Ñ”ku1…D0ÙœÖo9ÏgôÊÊÆfff`JR”¥)¢0†-© :jª°±²ß±·‚kD$£Zžè—4vØî¯‘ï1h@¼Ú•úVvEW ô\jL.2¢EuRB\“À;±ªkZûùýVÄòJMô=P"5ã<À è`üDã=áíõË]T¿a¼:«-bÁÊxê8p¦04¶3(9¤I¬\ës”‚±DäHl@nß C G¨­“@W1R)m ×ÞœbyÇ­½¼;“Å:Ô®ƒw-"ÙsŒi/V¸mʳׯ¯A!¢þD¿/,Òâ ù}ðƒaMÄ^ ;¢b®x'cˆMt™ãÈH ù…ʶ½ÄÀR*IMh©I18;Î_“îˆE‘ØsÍnØ3[êæ¡Wˆ5鹨¹R%£ðH5ˆe—Y² b‹œïãèS Ðy<Hñ©xݯNV¯Þ+åàõ: ]c/,‘ʵ2&"ïï´-­!ÝæA€T%¥DÁ*jCÈ{o‡ÄDyÆ[ào‹ü.lOÛYÕ¥z-¡ZðÁæBª(ZRx(\êq0›¨,rß®EüæŽa ¬–ØÝB±(“™ëã‡[Y9¡`7PHõË*¼Œ3$®Iº; ­^iõwdÉ•áI1H6–wÅGèz‘±"=ïN±O ³ÏÛºêc¼!+ž€J[ÄcNô‘mÅ1Ï~SãÅt¿ý„_LõÂûTÉ…\1^*W¯hJNFÝ)ŰÞ3@T!¼R‡ŽР1iQ¯UÕUPŽ!ÉßZbO fH- 4dé_jtèK­Ý5±ÊŒ†FsyèñJx“3aR-„ ¬I&W5 W{JÊù½ÝÅìÁÆ ŸŒ…rEþ[pG¶ã>IDZ‰‹9)!/Éá’™µÇ™PVöFs‘ó)a…xÏvž@¥€ÂX³dݘV¡F!–Ü›rX›g`€?XØÆ è™|“CL¼­[µh¨C6;FÃã*Þ}Úϱ¡MEžQ²D"V·np:«eLnÞv¢`ÒçiBÜÚ‰µ[¹™ªŽ£rŠ âr„m@ß‚gã–„ë°“9Çr°Í­³=²WÈ ­'9%'N±Ár—¦ÿxÆøn,³åÙvW`º§»9@Ø•œD› û“•˜øT¬&o9×Âþ‹ô@²¨ÎáÆ.[_bC8bTÕ‚u¡\g\…ó !÷5ý[ÅZv‰äeéªF~IOnɘæZêÆA%0œ§%p"wÉKéùÿSêëìl¸ÚÛÜÝÞßàáâãäåæçèéêëìsÛÝßàè`PGesãåæóÓ×Êÿ_ïþy÷ÿyžWÍñzOxˆý™@Cø{m  *B@*‚DÑ|;;BÓ2²Éºc4­#)Í1ÈÌÃK3#3-+LL€ÉJX´W $¥ÈZrÈ b³0©> Bä"ÒÄ BñeQɉÖi "ª¡7!rbiJŽ€6T 4ºè首„4é&CT”¨ÒRÐÓBºB†’‰¹ †B#¨²ë †°":@vЫã@:È%'ÈÙ*9+@)¹ˆÒ @¥ SB4¨ ”¨Š"r<þyœ7ŸßøéJiJ—H'°‹Fë®»ê_ZÔ“ZäòÉ Šª©UUH"ªªAUUT’I$’lg9ÎÖµ«jÖ¤š× ð• $’I$’I$’I8R”à 0®­I5®ŒÉ$’I$’I$’I63œçkZÕvfUVgyÉUê'9ÍÝÝ™•U™Þhˆˆˆˆˆ‰CÎsœÝÝévfUVz^Aå)J.îîì̪¬ï ñŒbîîô»ÓM*«L`ð¢Æ.ûÛÛÜ-ÝÝÝí4ÓoMà<Øørœ¿ÐÀÙɉBP”%,u!ï~|#‹Èåí°¥BÒ­D´@´©CACAH%(´ RB©@#J4¥B…!H#4("´”*P!B´ÒtäµJ(”Š”!¤©’4¢Ð¡M –BR!H!Hœ^g…§Nô“›¸am×9NK§Ãû}ão'‘S›~P¤%È…±ÅS$B *€ „¥F”P¥F”J€ R€F€(R9*ä­#B”¡T…UL@•BÒ4©HÐJR¡’™(P!IdÒ…%%#@KJPPÒP THä!’d.ÐS™ ÒÐ IBD)HRHd4¥9˜Ò”‹¡ ´"ªŠvß]¼O§s—'Îv?—^c‰³­×wfÿc·gˆß6éÊQÞ]€A‚ŽQ¥{b.VY©öLn@ˆé6E‹"Á Ä)IBO«Âñž»ÎÇØ,Q†¿/Ιjðâj.¡êwWÑòæíuÏÍ/W›/tn¥±1 Ä€çv{IC¾kóZ™i'´Ë…ü~UÏÆýó[C˜Ýá7’Z.6‰BƒzmÙ,ù;*\¤q%Qæ¤æq"j²( Y|d '*Vã( ±òü³2õ!œ"LèU£*¤oNGš  2q…G¨Ásümˆ{G´PuPjç.ðCïOFi$KÞQëÛY‡Ypj,¶{æ×¶áj ¢=P¨bY¤ÖK'^˜jNÁöñ+etZîzó)(—ÔYx8ã$Šrirp¤d ¤‚ïÕÆƒ@5‚ Ñj ¢%4Ð jvšRu¨ é+ñ(dã°–ôË=ù,jÓ˜›˜ËWgV!uTÑ£gV¬+¿ǵùx%s¢Ôa5…ÉT Õ#·^Óê¶rCAøP#~@D0ê'S¯`Öúó "Œ€…éà®eùñÌÉ5 í2îR™™VˆŸèä •Ê0;®ã™[©Kš–#‘³KÒ½™%‚’{ÌÀÀKb´-b¥ª\µ7} Ü ’bµL•…uNš Ê1õÝYØ7 [ì#ñ ”D³™#x¿b IÒ¬ÛUFŘxÇ»d3bk5O¤Ô,¡kE^}f H=I]›&Ô2\ ŠD4*Üá¾µ›…Ò3 †É—¬îb@RZ/|nP—äx1’“¡ô?*[ªÎm½! å6¼ jíÐŽc¬)Þ6ØR>¾Gù¥È D6Bsäg QrU@¹õ/@šB‰*Ðu‰8drM&tDý¢‘+#®²@ćÜf>¶ßNÌŽÊë‚U_¬x£Æ}‡·§O:¬ë­€›š`j2«Ê;4SÖ½ mb‰Ä1˜M ìOz±´½'‡8ÑrSíòVœïäú† !öŸ„¶*ºI¢ÊЉÒãéb9W Lž{¸^ÝëÈ|6.wÊKëYÔSî$Ë‹}ÖŸ±{›ˆ´P*î T$WÃO–VÀEtK6*€Ì!Ô@,B&^ ‚±‹BR‡C°£‚÷y‰f¤@Ž%ZK3V ~ćEïéP[ºšXœ±} bºö$xœçF!\u6tDäË ­+VM º-0yúÙÑrZß~˜B¦ÛÔj©+ÊM]ßYËw§.èçç*å|äf{’‹æIê,FÛ–¥æŒÜ 2\éˆ1b]Þ%Ðp‹OÚ=âôÙÊ.è¸YˆaÈcÇ”ZñÙ¡Ê?÷s#ÁÛìsñWT®+'%±¹×ë²YKw1–Ùxyž2,ÛÆb#qZrRw(6 'vý6dæQ"2¹¥ ˆôŠÂ‘MtvŠÝ–¿rR8oÔXbo X]7‘Uߎ]ª! çC Ðݻ܉²Â­Do8ÚêÀSŒg™âjM•yÙNúä¬ý¥Ùk±=]ár Ž£Étv ' G²è)‘X\=Y1+lPpd¼Ëj“%qD¨má;–Ÿ8g.Ç1A´f4,²ûy:Æ.žÏ,÷z·µ÷Ú}óàp³6 ÑÑí¤X¦6æ [ œE—»Z– THØ€是tIÐH/¨Ó4+àëãÛˆµÞ—³ŒÉìN(Ðô2¤öš}IÂä€dife¢œ¶ªU¤jÕXrÛ©›Ð} yëË— ©oš8›7N”½w5˜à³áU¨Pg c'£ðƒO§"-—¨ýÛFé1­2àaŒ[ºÉcRRa˜¡bñ#¨èÇcš–t8¦Må@͇5Õàa`B–,,ÑÙ™ó­Ó¾ -¾¥)XŽ'Raˆ×fsc L(±Nn(d”ïhÜÕµÙФYmpÃ’¤Â]¶yn¥¬Ì^¶ÀÄŸiÉ€‚}ITvÃBã‹›µaÞ'qB‚šÂ-CqëÅ(ñ9 •>£Íǽ bÅ’vZtމaUA4‹±mà‰ßoa?„±¾¹  *¥à:^€-Ý{ú®”Žw—…ÎmÈë|¢´ ÌÑQ-b2»*·^†Û-j„ª™Ṽ å(牬M0¡î`36’9  ¬U)=X8H>«Ñ¡r]‰Úƒ«B“(öÛ®JÖ!M¬¢Ò´jö²çN§=«1C"r3oC-4Û%t dx9’|÷ÖD€Žâ£˜'I š~½LÙ6¼C‰KM@§‚-‹ºÌã+ÂDb5ÔÜ"iƒ3 µÝ™)nh¾y_«Æ=ìÛÚ·•ò²m ™;Q´ET\dVÄ(¶Ö®žd÷Iu=ÏRKÿÅÜ‘N$1¹%mixtools/data/Habituationdata.RData0000755000175100001440000000117411736707362017117 0ustar hornikusers‹ r‰0âŠàb```b`âbf “… H01'ó{$&e–”&–dæç¥$–$200 ƒ•30𱱃ÁÞ‚Å×¹lŒl!´ÙÄ×­r;‚Lªº¯©v°éK8(>K;(_ÊWÍ*|ã ÝÀº¿ ú”A¦,qPf×fâñÜå É£ñõP¿ƒP¶ê¡‡ƒiS?Pà°ƒûÂB“ ‹Œ öëO;ÀÁÁ"¯ýb=Ä“<}.ˆ{4q° è3Üq‡Òòœn穆›AÀAJ»5‚â ,Öt —ƒÑq¨» öR¯[”t8 Õ^V:˜AÍ7…Škƒ)y“ aM+Vˆ¸þL˜å`uŸÒÚ‰EdA®`SuиO³¨M㛃1Ôß6Ú{•Áᆈ¨5!ábP ‰' ¨{¥Ž-?w“®ƒÑˆ9V÷è@ÂM¡dOVÝÏÛFs î×€Ú«C'H<…ˆË,ºð4Á±ÓÁ¤ç œuЄ¦Ë ó¡þR^ }¨9&Ðø¶\ Wƒw+¸AÜç¤ s¨¹²“ò¦÷úßw0O†è³µ‚Ø£ ?ç©Pwj@ücº>ºÆø3”„¨S¾üýÜM±vsh|+X?Fø4¸àñæ ±_üì¥+?‡‡«:ÔÝJ þ6e‚„‡ Ô^]¨{Ì¡ákNphÙŒ5/17µÈ€f. S®!œe„®!9'±¦&ÈÊ¡ziE@³Ð”så—ëÁìà™Én Æ@ü„ó8¶ mixtools/R/0000755000175100001440000000000013060400571012343 5ustar hornikusersmixtools/R/poisregmixEM.R0000755000175100001440000000641611736346560015127 0ustar hornikuserspoisregmixEM = function (y, x, lambda = NULL, beta = NULL, k = 2, addintercept = TRUE, epsilon = 1e-08, maxit = 10000, verb=FALSE) { if (addintercept) { x = cbind(1, x) } else x = as.matrix(x) n <- length(y) p <- ncol(x) tmp <- poisregmix.init(y=y, x=x, lambda=lambda, beta=beta, k=k) lambda <- tmp$lambda beta <- tmp$beta k <- tmp$k xbeta <- x %*% beta z <- matrix(0, n, k) diff <- 1 iter <- 0 comp <- t(t(dpois(y, exp(xbeta))) * lambda) compsum <- apply(comp, 1, sum) obsloglik <- sum(log(compsum)) ll <- obsloglik restarts <- 0 while (diff > epsilon && iter < maxit) { j.star = apply(xbeta, 1, which.max) for (i in 1:n) { for (j in 1:k) { z[i, j] = lambda[j]/lambda[j.star[i]] * exp(y[i] * (xbeta[i, j] - xbeta[i, j.star[i]]) + exp(xbeta[i, j.star[i]]) - exp(xbeta[i, j])) } } z = z/apply(z, 1, sum) z[,k]=1-apply(as.matrix(z[,(1:(k-1))]),1,sum) if(sum(is.na(z))>0){ cat("Need new starting values due to underflow...","\n") restarts <- restarts + 1 if(restarts>15) stop("Too many tries!") tmp <- poisregmix.init(y=y, x=x, k=k) lambda <- tmp$lambda beta <- tmp$beta k <- tmp$k diff <- 1 iter <- 0 xbeta <- x %*% beta comp <- t(t(dpois(y, exp(xbeta))) * lambda) compsum <- apply(comp, 1, sum) obsloglik <- sum(log(compsum)) ll <- obsloglik } else{ lambda <- apply(z, 2, mean) lm.out <- lapply(1:k, function(j) try(glm.fit(x, y, weights = z[, j], family = poisson()) ,silent=TRUE)) beta = sapply(lm.out,coef) xbeta <- x %*% beta comp <- t(t(dpois(y, exp(xbeta))) * lambda) compsum <- apply(comp, 1, sum) newobsloglik <- sum(log(compsum)) if(abs(newobsloglik)==Inf || is.na(newobsloglik) || newobsloglik < obsloglik){# || sum(z)!=n){ cat("Need new starting values due to singularity...","\n") restarts <- restarts + 1 if(restarts>15) stop("Too many tries!") tmp <- poisregmix.init(y=y, x=x, k=k) lambda <- tmp$lambda beta <- tmp$beta k <- tmp$k diff <- 1 iter <- 0 xbeta <- x %*% beta comp <- t(t(dpois(y, exp(xbeta))) * lambda) compsum <- apply(comp, 1, sum) obsloglik <- sum(log(compsum)) ll <- obsloglik } else{ diff <- newobsloglik - obsloglik obsloglik <- newobsloglik ll <- c(ll, obsloglik) iter <- iter + 1 if (verb) { cat("iteration=", iter, "diff=", diff, "log-likelihood", obsloglik, "\n") } } } } if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } cat("number of iterations=", iter, "\n") beta <- matrix(beta,ncol=k) rownames(beta) <- c(paste("beta", ".", 0:(p-1), sep = "")) colnames(beta) <- c(paste("comp", ".", 1:k, sep = "")) colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=x, y=y, lambda = lambda, beta = beta, loglik = obsloglik, posterior = z, all.loglik=ll, restarts=restarts, ft="poisregmixEM") class(a) = "mixEM" a } mixtools/R/kernG.R0000755000175100001440000000011411665556372013557 0ustar hornikuserskern.G <- function (x, xi, h) { exp(-((xi-x)/h)^2/2)/sqrt(2*pi)/h } mixtools/R/perm.R0000755000175100001440000000034312112160724013434 0ustar hornikusersperm <- function (n, r, v = 1:n) { if (r == 1) matrix(v, n, 1) else if (n == 1) matrix(v, 1, r) else { X <- NULL for (i in 1:n) X <- rbind(X, cbind(v[i], perm(n - 1, r - 1, v[-i]))) X } } mixtools/R/spregmix.R0000755000175100001440000001230413060302403014322 0ustar hornikusersspregmix = function (lmformula, bw = NULL, constbw = FALSE, bwmult = 0.9, # gives Silverman's rule; or use 1.06 for Scott's z.hat = NULL, symm = TRUE, betamethod="LS", m = ifelse(is.null(z.hat), 2, ncol(z.hat)), epsilon = 1e-04, maxit = 1000, verbose = FALSE, ...) { # m, not k, is the number of components here y <- model.frame(lmformula, ...)[,1] x <- model.matrix(lmformula, ...) n <- length(y) p <- ncol(x) tt0 <- proc.time() # for total time # Now initialize z.hat, which is the only thing needed to start the iterations # as long as we use a method such as least squares to find beta if(is.null(z.hat)) { z.hat <- matrix(runif(n*m), n, m) z.hat <- sweep(z.hat, 1, rowSums(z.hat), "/") } L1norm <- function(beta, y, x, p) sum(p*abs(y - x %*% beta)) nploglik <- function(beta, y, x, p, bw, res, wts, symm) { sum(p*log(wkde(x=res, u=as.vector(y-x%*%beta), w=wts, bw=bw, sym=symm))) } lambda <- matrix(0, maxit, m) beta <- matrix(0, p, m) for (j in 1:m) { # Initialize beta to weighted LS solution wx <- sweep(x, 1, z.hat[,j], "*") beta[,j] <- solve(t(wx) %*% x, t(wx) %*% y) } iter <- 0 finished <- FALSE # j <- 0 #plot(tonedata) SPweight <- ifelse(betamethod=="transition", 0, 1) while (!finished) { # j <- j + 1; if (j>m) { #browser(); #plot(x[,2],y); # j <- 1} iter <- iter + 1 t0 <- proc.time() ## M-step lambda[iter, ] <- colMeans(z.hat) oldbeta <- beta for (j in 1:m) { #abline(beta[1,j],beta[2,j], col=1+j, lwd=3, lty=2) if (betamethod=="LS") { wx <- sweep(x, 1, z.hat[,j], "*") beta[,j] <- solve(t(wx) %*% x, t(wx) %*% y) # Weighted least squares solution } else if (betamethod=="L1") { # Weighted L1 solution beta[,j] <- optim(par=beta[,j], fn=L1norm, y=y, x=x, p=z.hat[,j])$par } else if (betamethod=="transition") { # transition from LS to NP wx <- sweep(x, 1, z.hat[,j], "*") beta[,j] <- SPweight * optim(par=beta[,j], fn=nploglik, y=y, x=x, p=z.hat[,j], bw=bw, res=as.vector(y-x%*%beta), wts=as.vector(z.hat), symm=symm, control=list(fnscale=-1))$par + # NP loglik (1-SPweight) * solve(t(wx) %*% x, t(wx) %*% y) # Weighted least squares SPweight <- min(1, SPweight + (1e-4)*2^(iter-1)) } else { # Nonparametric loglikelihood beta[,j] <- optim(par=beta[,j], fn=nploglik, y=y, x=x, p=z.hat[,j], bw=bw, res=as.vector(y-x%*%beta), wts=as.vector(z.hat), symm=symm, control=list(fnscale=-1))$par #res=as.vector(y-x%*%beta) #plot(res,wkde(x=res, u=res, w=as.vector(z.hat), bw=bw, sym=symm)) #browser() } ## Here, we might try other methods of estimating beta. } ## update the bandwidth, if necssary xbetavec <- as.double(x %*% beta) zhatvec <- as.double(z.hat) if (is.null(bw) || !constbw) { res <- y-xbetavec np.sigma <- sqrt(sum(res^2 * zhatvec)/(n-1)) bw <- bwmult / n^(1/5) * min(np.sigma, wiqr<-wIQR(wt=zhatvec, x=res)/1.34) #print(c(np.sigma, wiqr)) } ## density estimation step if (symm) { ans <- .C(C_KDEsymloc2, n=as.integer(n), m=as.integer(m), mu = xbetavec, y=as.double(y), bw=as.double(bw), z=as.double(z.hat), f=double(n*m)) } else { ans <- .C(C_KDEloc2, n=as.integer(n), m=as.integer(m), mu = xbetavec, y=as.double(y), bw=as.double(bw), z=as.double(z.hat), f=double(n*m)) } fkernel <- matrix(ans$f, ncol=m) lambda.f <- sweep(fkernel, 2, lambda[iter,], "*") ## E-step (for next iteration) z.hat <- lambda.f/rowSums(lambda.f) ## Test convergence criteria finished <- (iter > 1 && SPweight == 1 && (iter >= maxit || max(max(abs(beta-oldbeta)), max(abs(lambda[iter,]-lambda[iter-1,]))) < epsilon )) ## Print message for each iteration if (verbose) { t1 <- proc.time() cat("iteration ", iter, " lambda ", round(lambda[iter,], 4), " bandwidth ", round(bw, 3)) cat(" time", (t1 - t0)[3], "\n") } } ## Print final message after convergence if (verbose) { tt1 <- proc.time() cat("lambda ", round(lambda[iter,], 4)) cat(", total time", (tt1 - tt0)[3], "s\n") } res <- ans$y - ans$mu xx <- res yy <- ans$f if (symm) { xx <- c(xx, -res) # exploiting symmetry yy <- c(yy, yy) } ox <- order(xx) np.sigma <- sqrt(sum(res^2 * ans$z)/(n-1)) loglik <- rep(0, n) for(j in 1:m) { loglik <- loglik + z.hat[,j]*wkde(as.vector(y-x%*%beta[,j]), w=as.vector(z.hat[,j]), bw=bw, sym=symm) } loglik <- sum(log(loglik)) a <- list(x=x, y=y, lambda = lambda[1:iter,], beta = beta, posterior = z.hat, np.stdev = np.sigma, bandwidth=bw, density.x = xx[ox], density.y = yy[ox], symmetric=symm, loglik = loglik, ft="regmixEM") class(a) = "npEM" a } mixtools/R/regmixEMmixed.R0000755000175100001440000003735311665556372015274 0ustar hornikusersregmixEM.mixed = function (y, x, w = NULL, sigma = NULL, arb.sigma = TRUE, alpha = NULL, lambda = NULL, mu = NULL, rho=NULL, R = NULL, arb.R = TRUE, k = 2, ar.1 = FALSE, addintercept.fixed = FALSE, addintercept.random = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) { Omega.def <- function(rho,n){ Omega.1stcol <- NULL for(i in 1:n){ Omega.1stcol <- c(Omega.1stcol,rho^(i-1)) } A=Omega.1stcol for(i in 1:(n-1)){ A=cbind(A,c(rep(0,i),Omega.1stcol[1:(n-i)])) } B=A+t(A) diag(B)=rep(1,n) B=B/(1-rho^2) B } rho.max<-function(rho,z,sigma,y,x,w,alpha,beta,V.beta){ n.i <- length(y) Omega.ij <- Omega.def(rho=rho,n=n.i) -.5*z*(log(det(Omega.ij))+(1/sigma)*(t(y- as.vector(w %*% alpha)-x%*%beta))%*%solve(Omega.ij)%*%(y- as.vector(w %*% alpha)-x%*%beta)+sum(diag(solve(Omega.ij) %*% x %*% V.beta %*% t(x) ))) } `%L*%` = function(x, y) lapply(1:length(x), function(z) { t(x[[z]]) %*% y[[z]] }) N <- length(y) n <- sapply(y, length) if (addintercept.random) { x.1 = lapply(1:N, function(i) cbind(1, x[[i]])) x = x.1 } if (is.null(w)) { w = as.list(rep(0, N)) mixed=FALSE } else mixed=TRUE p <- ncol(x[[1]]) if (mixed == TRUE) { if (addintercept.fixed) { w.1 = lapply(1:N, function(i) cbind(1, w[[i]])) w = w.1 } tww = w %L*% w tww.inv = 0 for (i in 1:N) { tww.inv = tww.inv + tww[[i]] } tww.inv = solve(tww.inv) twx = w %L*% x twy = w %L*% y q <- ncol(w[[1]]) } tmp <- regmix.mixed.init(y = y, x = x, w = w, sigma = sigma, arb.sigma = arb.sigma, alpha = alpha, lambda = lambda, mu = mu, R = R, arb.R = arb.R, k = k, mixed = mixed, addintercept.fixed = addintercept.fixed, addintercept.random = addintercept.random) alpha <- tmp$alpha lambda <- tmp$lambda mu <- tmp$mu R <- tmp$R sigma <- tmp$sigma s.2 <- sigma^2 if(ar.1==TRUE & is.null(rho)==TRUE){ rho=matrix(runif(N*k,-1,1),nrow=N,ncol=k) } txx = x %L*% x diff <- 1 iter <- 0 obsloglik=-Inf ll <- NULL restarts <- 0 if(ar.1) Omega.k <- lapply(1:N, function(i) lapply(1:k, function(j) Omega.def(rho=rho[i,j],n=n[i]))) else Omega.k <- lapply(1:N, function(i) lapply(1:k, function(j) diag(1, n[i]))) while (diff > epsilon && iter < maxit) { txOx<-lapply(1:N, function(i) lapply(1:k, function(j) t(x[[i]]) %*% solve(Omega.k[[i]][[j]]) %*% x[[i]])) if (arb.R) { V.beta = list() for (i in 1:N) { V.beta[[i]] = list() V.beta[[i]] = lapply(1:k, function(j) { solve(txOx[[i]][[j]]/s.2[j * arb.sigma + (1 - arb.sigma)] + solve(R[[j]])) }) } beta = list() for (i in 1:N) { beta[[i]] = matrix(nrow = p, ncol = k) for (j in 1:k) { beta[[i]][, j] = V.beta[[i]][[j]] %*% (t(x[[i]])/s.2[j * arb.sigma + (1 - arb.sigma)]) %*% solve(Omega.k[[i]][[j]]) %*% (y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% mu[, j]) + mu[, j] } } z = matrix(nrow = N, ncol = k) for (i in 1:N) { for (j in 1:k) { z.denom = c() for (m in 1:k) { z.denom = c(z.denom, lambda[m]/lambda[j] * (det(x[[i]] %*% R[[j]] %*% t(x[[i]]) + s.2[j * arb.sigma + (1 - arb.sigma)] * Omega.k[[i]][[j]])/det(x[[i]] %*% R[[m]] %*% t(x[[i]]) + s.2[m * arb.sigma + (1 - arb.sigma)] * Omega.k[[i]][[m]]))^(0.5) * exp(-0.5 * (t(y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% mu[, m]) %*% solve(x[[i]] %*% R[[m]] %*% t(x[[i]]) + s.2[m * arb.sigma + (1 - arb.sigma)] * Omega.k[[i]][[m]]) %*% (y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% mu[, m]) - t(y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% mu[, j]) %*% solve(x[[i]] %*% R[[j]] %*% t(x[[i]]) + s.2[j * arb.sigma + (1 - arb.sigma)] * Omega.k[[i]][[j]]) %*% (y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% mu[, j])))) } z[i, j] = 1/sum(z.denom) } } # z[,k]=1-apply(as.matrix(z[,(1:(k-1))]),1,sum) z = z/apply(z,1,sum) sing <- sum(is.na(z)) sum.z = apply(z, 2, sum) lambda.new <- sum.z/N if (sum(lambda.new < 1e-08)>0 || is.na(sum(lambda.new))) { sing <- 1 } else { mu.new <- matrix(nrow = p, ncol = k) for (j in 1:k) { mu.2 <- matrix(sapply(1:N, function(i) { beta[[i]][, j] }), ncol = N) mu.new[, j] <- apply(t(apply(t(mu.2), 2, "*", matrix(z[, j], nrow = 1))), 1, sum) } mu.new = t(apply(t(mu.new), 2, "/", matrix(sum.z, nrow = 1))) if (mixed == TRUE) { a.vec <- c() A.mat <- 0 for (i in 1:N) { for (j in 1:k) { A.mat = A.mat + (z[i, j]/s.2[j * arb.sigma + (1 - arb.sigma)])*tww[[i]] a.vec = cbind(a.vec, (z[i, j]/s.2[j * arb.sigma + (1 - arb.sigma)]) * (twy[[i]] - twx[[i]] %*% beta[[i]][, j])) # a.vec = cbind(a.vec, z[i, j] * (twy[[i]] - # twx[[i]] %*% beta[[i]][, j])) } } # alpha.new <- tww.inv %*% apply(a.vec, 1, sum) alpha.new <- solve(A.mat) %*% apply(a.vec, 1, sum) alpha = alpha.new } s.tr <- matrix(nrow = N, ncol = k) z.n <- matrix(nrow = N, ncol = k) for (i in 1:N) { for (j in 1:k) { s.tr[i, j] = sum(diag(z[i, j] * (solve(Omega.k[[i]][[j]]) %*% (y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% beta[[i]][, j]) %*% t(y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% beta[[i]][, j]) + x[[i]] %*% V.beta[[i]][[j]] %*% t(x[[i]])))) z.n[i, j] = z[i, j] * n[i] } } if (arb.sigma) { s.2.new <- apply(s.tr, 2, sum)/apply(z.n, 2, sum) } else s.2.new <- sum(s.tr)/sum(n) R.new = list() for (j in 1:k) { r.2 <- 0 for (i in 1:N) { r <- z[i, j] * (V.beta[[i]][[j]] + t(t(beta[[i]][, j] - mu.new[, j])) %*% (beta[[i]][, j] - mu.new[, j])) r.2 <- r.2 + r } R.new[[j]] = r.2/sum(z[, j]) } lambda = lambda.new mu = mu.new s.2 = s.2.new R = R.new L = matrix(nrow = N, ncol = k) L = t(sapply(1:N, function(i) { sapply(1:k, function(j) { dmvnorm(as.vector(y[[i]]), as.vector(x[[i]] %*% mu[, j] + as.vector(w[[i]] %*% alpha)), x[[i]] %*% R[[j]] %*% t(x[[i]]) + s.2[j * arb.sigma + (1 - arb.sigma)] * Omega.k[[i]][[j]]) }) })) L.n = t(apply(t(L), 2, "*", matrix(lambda, nrow = 1))) newobsloglik = sum(log(apply(L.n, 1, sum))) } } else { R.inv = solve(R) V.beta = list() for (i in 1:N) { V.beta[[i]] = list() V.beta[[i]] = lapply(1:k, function(j) { solve(txOx[[i]][[j]]/s.2[j * arb.sigma + (1 - arb.sigma)] + R.inv) }) } beta = list() for (i in 1:N) { beta[[i]] = matrix(nrow = p, ncol = k) for (j in 1:k) { beta[[i]][, j] = V.beta[[i]][[j]] %*% (t(x[[i]])/s.2[j * arb.sigma + (1 - arb.sigma)]) %*% solve(Omega.k[[i]][[j]]) %*% (y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% mu[, j]) + mu[, j] } } z = matrix(nrow = N, ncol = k) for (i in 1:N) { for (j in 1:k) { z.denom = c() for (m in 1:k) { z.denom = c(z.denom, lambda[m]/lambda[j] * (det(x[[i]] %*% R %*% t(x[[i]]) + s.2[j * arb.sigma + (1 - arb.sigma)] * Omega.k[[i]][[j]])/det(x[[i]] %*% R %*% t(x[[i]]) + s.2[m * arb.sigma + (1 - arb.sigma)] * Omega.k[[i]][[m]]))^(0.5) * exp(-0.5 * (t(y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% mu[, m]) %*% solve(x[[i]] %*% R %*% t(x[[i]]) + s.2[m * arb.sigma + (1 - arb.sigma)] * Omega.k[[i]][[m]]) %*% (y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% mu[, m]) - t(y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% mu[, j]) %*% solve(x[[i]] %*% R %*% t(x[[i]]) + s.2[j * arb.sigma + (1 - arb.sigma)] * Omega.k[[i]][[j]]) %*% (y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% mu[, j])))) } z[i, j] = 1/sum(z.denom) } } # z[,k]=1-apply(as.matrix(z[,(1:(k-1))]),1,sum) z = z/apply(z,1,sum) sing <- sum(is.nan(z)) sum.z = apply(z, 2, sum) lambda.new <- sum.z/N if (sum(lambda.new < 1e-08)>0 || is.na(sum(lambda.new))) { sing <- 1 } else { mu.new <- matrix(nrow = p, ncol = k) for (j in 1:k) { mu.2 <- matrix(sapply(1:N, function(i) { beta[[i]][, j] }), ncol = N) mu.new[, j] <- apply(t(apply(t(mu.2), 2, "*", matrix(z[, j], nrow = 1))), 1, sum) } mu.new = t(apply(t(mu.new), 2, "/", matrix(sum.z, nrow = 1))) if (mixed == TRUE) { a.vec <- c() A.mat <- 0 for (i in 1:N) { for (j in 1:k) { A.mat = A.mat + (z[i, j]/s.2[j * arb.sigma + (1 - arb.sigma)])*tww[[i]] a.vec = cbind(a.vec, (z[i, j]/s.2[j * arb.sigma + (1 - arb.sigma)]) * (twy[[i]] - twx[[i]] %*% beta[[i]][, j])) # a.vec = cbind(a.vec, z[i, j] * (twy[[i]] - # twx[[i]] %*% beta[[i]][, j])) } } # alpha.new <- tww.inv %*% apply(a.vec, 1, sum) alpha.new <- solve(A.mat) %*% apply(a.vec, 1, sum) alpha = alpha.new } s.tr <- matrix(nrow = N, ncol = k) z.n <- matrix(nrow = N, ncol = k) for (i in 1:N) { for (j in 1:k) { s.tr[i, j] = sum(diag(z[i, j] * (solve(Omega.k[[i]][[j]]) %*% (y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% beta[[i]][, j]) %*% t(y[[i]] - as.vector(w[[i]] %*% alpha) - x[[i]] %*% beta[[i]][, j]) + x[[i]] %*% V.beta[[i]][[j]] %*% t(x[[i]])))) z.n[i, j] = z[i, j] * n[i] } } if (arb.sigma) { s.2.new <- apply(s.tr, 2, sum)/apply(z.n, 2, sum) } else s.2.new <- sum(s.tr)/sum(n) r.3 <- 0 for (j in 1:k) { r.2 <- 0 for (i in 1:N) { r <- z[i, j] * (V.beta[[i]][[j]] + t(t(beta[[i]][, j] - mu.new[, j])) %*% (beta[[i]][, j] - mu.new[, j])) r.2 <- r.2 + r } r.3 <- r.3 + r.2 } R.new = r.3/N lambda = lambda.new mu = mu.new s.2 = s.2.new R = R.new if(ar.1){ rho.new<-matrix(0,nrow=N,ncol=k) for(i in 1:N){ for(j in 1:k){ rho.new[i,j] <- optimize(rho.max,interval=c(-1,1),maximum=TRUE,tol=.Machine$double.eps,z=z[i,j],sigma=s.2[j * arb.sigma + (1 - arb.sigma)],y=y[[i]],x=x[[i]],w=w[[i]],alpha=alpha,beta=beta[[i]][,j],V.beta=V.beta[[i]][[j]])$max } } rho = rho.new Omega.k <- lapply(1:N, function(i) lapply(1:k, function(j) Omega.def(rho=rho[i,j],n=n[i] ))) } L = matrix(nrow = N, ncol = k) L = t(sapply(1:N, function(i) { sapply(1:k, function(j) { dmvnorm(as.vector(y[[i]]), as.vector(x[[i]] %*% mu[, j] + as.vector(w[[i]] %*% alpha)), x[[i]] %*% R %*% t(x[[i]]) + s.2[j * arb.sigma + (1 - arb.sigma)] * Omega.k[[i]][[j]]) }) })) L.n = t(apply(t(L), 2, "*", matrix(lambda, nrow = 1))) newobsloglik = sum(log(apply(L.n, 1, sum))) } } if (sing > 0 || is.na(newobsloglik) || abs(newobsloglik) == Inf || newobsloglik < obsloglik) {# || sum(z) != N cat("Need new starting values due to singularity...", "\n") restarts <- restarts + 1 if(restarts>15) stop("Too many tries!") tmp <- regmix.mixed.init(y = y, x = x, w = w, arb.sigma = arb.sigma, arb.R = arb.R, k = k, mixed = mixed, addintercept.fixed = addintercept.fixed, addintercept.random = addintercept.random) alpha <- tmp$alpha lambda <- tmp$lambda mu <- tmp$mu R <- tmp$R sigma <- tmp$sigma s.2 <- sigma^2 diff <- 1 iter <- 0 obsloglik=-Inf ll <- NULL } else { diff <- newobsloglik - obsloglik obsloglik <- newobsloglik ll <- c(ll, obsloglik) iter <- iter + 1 if (verb) { cat("iteration=", iter, "diff=", diff, "log-likelihood", obsloglik, "\n") } } } if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } cat("number of iterations=", iter, "\n") colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=x, y=y, w=w, lambda = lambda, mu = mu, R = R, sigma = sqrt(s.2), alpha = alpha, loglik = obsloglik, posterior.z = z, posterior.beta = beta, all.loglik = ll, restarts=restarts, ft="regmixEM.mixed") class(a) = "mixEM" a } mixtools/R/summary.npEM.R0000755000175100001440000000325411665556372015054 0ustar hornikuserssummary.npEM <- function(object, ...) { normpost <- sweep(object$post, 2, sums <- colSums(object$post), "/") n <- NROW(object$data) r <- NCOL(object$data) m <- length(object$lambdahat) B <- 1 if (r>1) B <- max(object$blockid) lambda <- sums/n means <- variances <- NULL for(i in 1:B) { if (r>1) { coords <- object$blockid == i xx <- as.vector(object$data[,coords]) } else { coords <- 1 xx <- as.vector(object$data) } sc <- sum(coords) M <- V <- NULL for (j in 1:m) { wts <- rep(normpost[,j]/sc, sc) M <- c(M, tmp <- sum(xx*wts)) V <- c(V, sum((xx-tmp)^2 *wts)) # cat(M," ") } means <- rbind(means, M) variances <- rbind(variances, V) } rownames(means) <- rownames(variances) <- paste("block", 1:B) colnames(means) <- colnames(variances) <- paste("component", 1:m) ans <- list(n=n, m=m, r=r, B=B, blockid=object$blockid, means = means, variances=variances) class(ans) <- "summary.npEM" ans } print.summary.npEM <- function(x, digits=3, ...) { if (x$r>1) cat (paste(x$n,"observations,",x$r,"coordinates,", x$m,"components, and",x$B,"blocks.\n\n")) else cat(paste(x$n,"univariate observations, and", x$m,"components.\n\n")) cat ("Means (and std. deviations) for each component:\n") for(i in 1:x$B) { coords <- 1 if (x$r>1) { coords <- x$blockid == i cat(paste(" Block #",i,": Coordinate", sep="")) cat(ifelse(sum(coords)>1, "s ", " ")) cat(which(coords)) cat("\n ") } cat(paste(signif(x$means[i,],digits), " (", signif(sqrt(x$variances[i,]),digits), ") ", sep="")) cat("\n") } } mixtools/R/bootse.R0000755000175100001440000004441212777447507014021 0ustar hornikusersboot.se <- function (em.fit, B = 100, arbmean = TRUE, arbvar = TRUE, N=NULL, ...) { mix.type <- em.fit$ft if (mix.type == "regmixEM") { #Start Here... k=length(em.fit$lambda) y=em.fit$y n=length(y) if(sum(em.fit$x[,1]==1)==n){ x=em.fit$x[,-1] } else x=em.fit$x if (arbmean == FALSE) { scale = em.fit$scale beta = matrix(rep(em.fit$beta, k), ncol = k) } else { scale = 1 beta = em.fit$beta } xbeta.new=em.fit$x%*%beta lambda = em.fit$lambda if(arbvar==FALSE){ sigma = rep(em.fit$sigma,k) } else{ sigma = scale*em.fit$sigma } j = 0 lambda.bs=NULL beta.bs=NULL sigma.bs=NULL scale.bs=NULL while (j < B) { j = j + 1 w=rmultinom(n,size=1,prob=lambda) y.sim=sapply(1:n,function(i) rnorm(1,mean=xbeta.new[i,(w[,i]==1)],sd=sigma[w[,i]==1]) ) em.bs = try(regmixEM(y = y.sim, x = x, k = k, arbmean = arbmean, arbvar = arbvar, lambda=em.fit$lambda, beta=em.fit$beta, sigma=(scale*em.fit$sigma), ...), silent = TRUE) if (class(em.bs) == "try-error" || em.bs$restarts!=0) { j = j - 1 } else { if(arbmean==FALSE){ lambda.bs = cbind(lambda.bs,em.bs$lambda) beta.bs = cbind(beta.bs,as.vector(em.bs$beta)) sigma.bs = cbind(sigma.bs,em.bs$sigma) scale.bs = cbind(scale.bs,em.bs$scale) } else { lambda.bs = cbind(lambda.bs,em.bs$lambda) beta.bs = cbind(beta.bs,as.vector(em.bs$beta)) sigma.bs = cbind(sigma.bs,em.bs$sigma) } } } if(arbmean==FALSE){ lambda.se=apply(lambda.bs,1,sd) beta.se=apply(beta.bs,1,sd) sigma.se=apply(sigma.bs,1,sd) scale.se=apply(scale.bs,1,sd) bs.list=list(lambda = lambda.bs, lambda.se = lambda.se, beta = beta.bs, beta.se = beta.se, sigma=sigma.bs, sigma.se = sigma.se, scale=scale.bs, scale.se=scale.se) } else{ lambda.se=apply(lambda.bs,1,sd) beta.se=matrix(apply(beta.bs,1,sd),ncol=k) sigma.se=apply(sigma.bs,1,sd) bs.list=list(lambda = lambda.bs, lambda.se = lambda.se, beta = beta.bs, beta.se = beta.se, sigma=sigma.bs, sigma.se = sigma.se) } } ##### if (mix.type == "regmixEM.mixed"){ #Start Here... k=length(em.fit$lambda) y=em.fit$y x=em.fit$x if (length(y) != length(x)) stop("Number of elements in lists for x and y must match!") w=em.fit$w p.z=em.fit$posterior.z p.b=em.fit$posterior.beta mu=em.fit$mu R=em.fit$R sigma=em.fit$sigma lambda=em.fit$lambda n=length(y) p=nrow(mu) n.i=sapply(y,length) alpha=em.fit$alpha w.test <- NULL for(i in 1:length(w)){ w.test <- c(w.test,as.vector(w[[i]])) } if(sum(w.test)==0){ w1=NULL} else w1=w if(length(R)==k) arb.R=TRUE else arb.R=FALSE if(length(sigma)==k) arb.sigma=TRUE else arb.sigma=FALSE j = 0 lambda.bs=NULL mu.bs=NULL sigma.bs=NULL R.bs=NULL alpha.bs=NULL while (j < B) { j = j + 1 k.bs=sapply(1:n, function(i) rmultinom(1,size=1,prob=lambda)) bs.i <- sample(1:n,n,replace=TRUE) ## if(arb.R==FALSE){ if(arb.sigma==FALSE){ y.sim <- lapply(1:n, function(i) w[[i]] %*% alpha + as.vector(rmvnorm(1, mu = x[[i]] %*% mu[, (k.bs[, i] == 1)], sigma = (x[[i]]%*%R%*%t(x[[i]]) +diag(sigma,n.i[i])) ))) } else y.sim <- lapply(1:n, function(i) w[[i]] %*% alpha + as.vector(rmvnorm(1, mu = x[[i]] %*% mu[, (k.bs[, i] == 1)], sigma = (x[[i]]%*%R%*%t(x[[i]]) +diag(sigma[(k.bs[,i] == 1)],n.i[i])) ))) } else{ if(arb.sigma==FALSE){ y.sim <- lapply(1:n, function(i) w[[i]] %*% alpha + as.vector(rmvnorm(1, mu = x[[i]] %*% mu[, (k.bs[, i] == 1)], sigma = (x[[i]]%*%R[(k.bs[, i] == 1)][[1]]%*%t(x[[i]]) +diag(sigma,n.i[i])) ))) } else y.sim <- lapply(1:n, function(i) w[[i]] %*% alpha + as.vector(rmvnorm(1, mu = x[[i]] %*% mu[, (k.bs[, i] == 1)], sigma = (x[[i]]%*%R[(k.bs[, i] == 1)][[1]]%*%t(x[[i]]) +diag(sigma[(k.bs[,i] == 1)],n.i[i])) ))) } ## em.bs = try(regmixEM.mixed(y = y.sim, x = x, w=w1, sigma=sigma, mu=mu, alpha=alpha, R=R, lambda=lambda, k = k, arb.R=arb.R, arb.sigma=arb.sigma, addintercept.fixed=FALSE, addintercept.random=FALSE, ...), silent = TRUE) if (class(em.bs) == "try-error" || em.bs$restarts!=0) { j = j - 1 } else { lambda.bs = cbind(lambda.bs,em.bs$lambda) alpha.bs = cbind(alpha.bs,em.bs$alpha) sigma.bs = cbind(sigma.bs,em.bs$sigma) mu.bs = cbind(mu.bs,as.vector(em.bs$mu)) R.bs = cbind(R.bs,as.vector(sapply(em.bs$R,c))) } lambda.se=apply(lambda.bs,1,sd) alpha.se=apply(alpha.bs,1,sd) sigma.se=apply(sigma.bs,1,sd) mu.se=matrix(apply(mu.bs,1,sd),ncol=k) R.se1=apply(R.bs,1,sd) if(arb.R==TRUE){ R.se2=matrix(R.se1,ncol=k) R.se=lapply(1:k,function(i) matrix(R.se2[,i],ncol=p)) } else R.se=matrix(R.se1,ncol=p) bs.list=list(lambda = lambda.bs, lambda.se = lambda.se, alpha=alpha.bs, alpha.se=alpha.se, mu = mu.bs, mu.se = mu.se, sigma=sigma.bs, sigma.se = sigma.se, R=R.bs, R.se=R.se) } } ##### # Commented out by DRH on 8-29-2008 due to absence of gammamixEM function # if (mix.type == "gammamixEM") { # x <- em.fit$x # n <- length(x) # k <- length(em.fit$lambda) # alpha <- em.fit$gamma.pars[1,] # beta <- em.fit$gamma.pars[2,] # lambda <- em.fit$lambda # j = 0 # lambda.bs = NULL # alpha.bs = NULL # beta.bs = NULL # while (j < B) { # j = j + 1 # comp = sample(1:k,size=n,replace=T,prob=lambda) # x.sim = sapply(1:n,function(i) rgamma(1,shape=alpha[comp[i]],scale=beta[comp[i]])) # em.bs = try(gammamixEM(x = x.sim, k = k, lambda = lambda, # alpha = alpha, beta = beta, ...), silent = TRUE) # if (class(em.bs) == "try-error") { # j = j - 1 # } # else { # lambda.bs = cbind(lambda.bs, em.bs$lambda) # alpha.bs = cbind(alpha.bs, as.vector(em.bs$gamma.pars[1,])) # beta.bs = cbind(beta.bs, as.vector(em.bs$gamma.pars[2,])) # } # } # lambda.se = apply(lambda.bs, 1, sd) # alpha.se = apply(alpha.bs, 1, sd) # beta.se = apply(beta.bs, 1, sd) # bs.list = list(lambda = lambda.bs, lambda.se = lambda.se, # alpha = alpha.bs, alpha.se = alpha.se, beta = beta.bs, beta.se = beta.se) # } ##### if (mix.type == "repnormmixEM") { #Start Here... k=length(em.fit$lambda) y=em.fit$y m=nrow(y) n=ncol(y) if (arbmean == FALSE) { scale = em.fit$scale mu = rep(em.fit$mu, k) } else { scale = 1 mu = em.fit$mu } lambda = em.fit$lambda if(arbvar==FALSE){ sigma = rep(em.fit$sigma,k) } else{ sigma = scale*em.fit$sigma } j = 0 lambda.bs=NULL mu.bs=NULL sigma.bs=NULL scale.bs=NULL while (j < B) { j = j + 1 w=rmultinom(n,size=1,prob=lambda) y.sim=sapply(1:n,function(i) rnorm(m,mean=mu[w[,i]==1],sd=sigma[w[,i]==1]) ) em.bs = try(repnormmixEM(x = y.sim,k = k, arbmean = arbmean, arbvar = arbvar, lambda=em.fit$lambda, mu=em.fit$mu, sigma=(scale*em.fit$sigma), ...), silent = TRUE) if (class(em.bs) == "try-error" || em.bs$restarts!=0) { j = j - 1 } else { if(arbmean==FALSE){ lambda.bs = cbind(lambda.bs,em.bs$lambda) mu.bs = cbind(mu.bs,as.vector(em.bs$mu)) sigma.bs = cbind(sigma.bs,em.bs$sigma) scale.bs = cbind(scale.bs,em.bs$scale) } else { lambda.bs = cbind(lambda.bs,em.bs$lambda) mu.bs = cbind(mu.bs,as.vector(mu.bs$beta)) sigma.bs = cbind(sigma.bs,em.bs$sigma) } } } if(arbmean==FALSE){ lambda.se=apply(lambda.bs,1,sd) mu.se=apply(mu.bs,1,sd) sigma.se=apply(sigma.bs,1,sd) scale.se=apply(scale.bs,1,sd) bs.list=list(lambda = lambda.bs, lambda.se = lambda.se, mu = mu.bs, mu.se = mu.se, sigma=sigma.bs, sigma.se = sigma.se, scale=scale.bs, scale.se=scale.se) } else{ lambda.se=apply(lambda.bs,1,sd) mu.se=apply(mu.bs,1,sd) sigma.se=apply(sigma.bs,1,sd) bs.list=list(lambda = lambda.bs, lambda.se = lambda.se, mu = mu.bs, mu.se = mu.se, sigma=sigma.bs, sigma.se = sigma.se) } } #### if (mix.type == "mvnormalmixEM") { #Start Here... k=length(em.fit$lambda) y=em.fit$x n=nrow(y) p=ncol(y) if (arbmean == FALSE) { mu = lapply(1:k,function(i) em.fit$mu) } else { mu = em.fit$mu } lambda = em.fit$lambda if(arbvar==FALSE){ sigma = lapply(1:k, function(i) em.fit$sigma) } else{ sigma = em.fit$sigma } j = 0 lambda.bs=NULL mu.bs=NULL sigma.bs=NULL while (j < B) { j = j + 1 w=rmultinom(n,size=1,prob=lambda) y.sim=t(sapply(1:n,function(i) rmvnorm(1,mu=mu[w[,i]==1][[1]],sigma=sigma[w[,i]==1][[1]]) )) em.bs = try(mvnormalmixEM(x = y.sim, k = k, arbmean = arbmean, arbvar = arbvar, lambda=em.fit$lambda, mu=em.fit$mu, sigma=em.fit$sigma, ...), silent = TRUE) if (class(em.bs) == "try-error" || em.bs$restarts!=0) { j = j - 1 } else { lambda.bs = cbind(lambda.bs,em.bs$lambda) mu.bs1 = as.vector(sapply(em.bs$mu,c)) mu.bs = cbind(mu.bs, mu.bs1) if(arbvar==FALSE){ sigma.bs=cbind(sigma.bs,as.vector(em.bs$sigma)) } else{ sigma.bs1 = lapply(1:k, function(i) as.vector(em.bs$sigma[[i]])) sigma.bs2 = as.vector(sapply(sigma.bs1,c)) sigma.bs = cbind(sigma.bs,sigma.bs2) } } } lambda.se=apply(lambda.bs,1,sd) mu.se1=apply(mu.bs,1,sd) if(arbmean==TRUE){ mu.se = lapply(1:k,function(i) mu.se1[((i-1)*p+1):(i*p)]) } else mu.se = mu.se1 sigma.se1=apply(sigma.bs,1,sd) if(arbvar==TRUE){ sigma.se=lapply(1:k, function(i) matrix(sigma.se1[((i-1)*(p^2)+1):(i*(p^2))], nrow=p,ncol=p)) } else sigma.se=matrix(sigma.se1,nrow=p) bs.list=list(lambda = lambda.bs, lambda.se = lambda.se, mu = mu.bs, mu.se = mu.se, sigma=sigma.bs, sigma.se = sigma.se) } #### if (mix.type == "normalmixEM") { #Start Here... k=length(em.fit$lambda) y=em.fit$x n=length(y) x=em.fit$x if (arbmean == FALSE) { scale = em.fit$scale mu = rep(em.fit$mu, k) } else { scale = 1 mu = em.fit$mu } lambda = em.fit$lambda if(arbvar==FALSE){ sigma = rep(em.fit$sigma,k) } else{ sigma = scale*em.fit$sigma } j = 0 lambda.bs=NULL mu.bs=NULL sigma.bs=NULL scale.bs=NULL while (j < B) { j = j + 1 w=rmultinom(n,size=1,prob=lambda) y.sim=sapply(1:n,function(i) rnorm(1,mean=mu[(w[,i]==1)],sd=sigma[w[,i]==1]) ) em.bs = try(normalmixEM(x = y.sim, k = k, arbmean = arbmean, arbvar = arbvar, lambda=em.fit$lambda, mu=em.fit$mu, sigma=(scale*em.fit$sigma), ...), silent = TRUE) if (class(em.bs) == "try-error" || em.bs$restarts!=0) { j = j - 1 } else { if(arbmean==FALSE){ lambda.bs = cbind(lambda.bs,em.bs$lambda) mu.bs = cbind(mu.bs,as.vector(em.bs$mu)) sigma.bs = cbind(sigma.bs,em.bs$sigma) scale.bs = cbind(scale.bs,em.bs$scale) } else { lambda.bs = cbind(lambda.bs,em.bs$lambda) mu.bs = cbind(mu.bs,as.vector(em.bs$mu)) sigma.bs = cbind(sigma.bs,em.bs$sigma) } } } if(arbmean==FALSE){ lambda.se=apply(lambda.bs,1,sd) mu.se=apply(mu.bs,1,sd) sigma.se=apply(sigma.bs,1,sd) scale.se=apply(scale.bs,1,sd) bs.list=list(lambda = lambda.bs, lambda.se = lambda.se, mu = mu.bs, mu.se = mu.se, sigma=sigma.bs, sigma.se = sigma.se, scale=scale.bs, scale.se=scale.se) } else{ lambda.se=apply(lambda.bs,1,sd) mu.se=matrix(apply(mu.bs,1,sd),ncol=k) sigma.se=apply(sigma.bs,1,sd) bs.list=list(lambda = lambda.bs, lambda.se = lambda.se, mu = mu.bs, mu.se = mu.se, sigma=sigma.bs, sigma.se = sigma.se) } } ### if (mix.type == "multmixEM") { y<-em.fit$y n<-nrow(y) n.i<-apply(y,1,sum) p<-ncol(y) k<-length(em.fit$lambda) theta<-em.fit$theta lambda<-em.fit$lambda j = 0 lambda.bs=NULL theta.bs=NULL while (j < B) { j = j + 1 w=rmultinom(n,size=1,prob=lambda) y.sim=t(sapply(1:n,function(i) rmultinom(1,size=n.i[i],prob=theta[(w[,i]==1),]) )) em.bs = try(multmixEM(y = y.sim, k = k, lambda=lambda, theta=theta, ...), silent = TRUE) if (class(em.bs) == "try-error" || em.bs$restarts!=0) { j = j - 1 } else{ lambda.bs=cbind(lambda.bs,em.bs$lambda) theta.bs=cbind(theta.bs,as.vector(em.bs$theta)) } } lambda.se=apply(lambda.bs,1,sd) theta.se=matrix(apply(theta.bs,1,sd),nrow=k) bs.list=list(lambda=lambda.bs, lambda.se=lambda.se, theta=theta.bs, theta.se=theta.se) } #### if (mix.type == "logisregmixEM") { y=em.fit$y n=length(y) if (is.null(N)) N=rep(1,n) k=length(em.fit$lambda) if(sum(em.fit$x[,1]==1)==n){ x=em.fit$x[,-1] } else x=em.fit$x lambda<-em.fit$lambda beta<-em.fit$beta xbeta.new=em.fit$x%*%beta prob=inv.logit(xbeta.new) j = 0 lambda.bs=NULL beta.bs=NULL while (j < B) { j = j + 1 w=rmultinom(n,size=1,prob=lambda) y.sim = sapply(1:n, function(i) rbinom(1, size=N[i], prob=prob[,(w[,i]==1)])) em.bs = try(logisregmixEM(y = y.sim, x=x, N=N, k = k, lambda=lambda, beta=beta,...), silent = TRUE) if (class(em.bs) == "try-error" || em.bs$restarts!=0) { j = j - 1 } else{ lambda.bs=cbind(lambda.bs,em.bs$lambda) beta.bs=cbind(beta.bs,as.vector(em.bs$beta)) } } lambda.se=apply(lambda.bs,1,sd) beta.se=matrix(apply(beta.bs,1,sd),nrow=k) bs.list=list(lambda=lambda.bs, lambda.se=lambda.se, beta=beta.bs, beta.se=beta.se) } #### if (mix.type == "poisregmixEM") { k=length(em.fit$lambda) y=em.fit$y n=length(y) if(sum(em.fit$x[,1]==1)==n){ x=em.fit$x[,-1] } else x=em.fit$x lambda<-em.fit$lambda beta<-em.fit$beta xbeta.new=em.fit$x%*%beta prob=exp(xbeta.new) j = 0 lambda.bs=NULL beta.bs=NULL while (j < B) { j = j + 1 w=rmultinom(n,size=1,prob=lambda) y.sim = sapply(1:n, function(i) rpois(1, lambda=prob[,(w[,i]==1)])) em.bs = try(poisregmixEM(y = y.sim, x=x, k = k, lambda=lambda, beta=beta, ...), silent = TRUE) if (class(em.bs) == "try-error" || em.bs$restarts!=0) { j = j - 1 } else{ lambda.bs=cbind(lambda.bs,em.bs$lambda) beta.bs=cbind(beta.bs,as.vector(em.bs$beta)) } } lambda.se=apply(lambda.bs,1,sd) beta.se=matrix(apply(beta.bs,1,sd),nrow=k) bs.list=list(lambda=lambda.bs, lambda.se=lambda.se, beta=beta.bs, beta.se=beta.se) } bs.list } mixtools/R/spEM.R0000644000175100001440000001151513060302347013337 0ustar hornikusers## EM-like algorithm for a location-scale mixture model with ## independent repeated measures -- some ID, some not -- ## where each block has its own location and scale but otherwise ## all blocks (within a component or globally, depending) have the same ## shape. ## Correction: For now, this algorithm only implements model (17) in ## Benaglia et al -- in other words, each component and block has exactly ## the same shape and they differ only by location and scale. spEM <- function(x, mu0, blockid = 1:ncol(x), bw=bw.nrd0(as.vector(as.matrix(x))), constbw = TRUE, h=bw, eps=1e-8, maxiter=500, stochastic = FALSE, verb = TRUE){ bw <- h # h is alternative bandwidth argument, for backward compatibility x <- as.matrix(x) n <- nrow(x) # number of subjects r <- ncol(x) # number of measurements in each subject u <- match(blockid, unique(blockid)) # convert blockid to integers 1, 2, ... if (is.matrix(mu0)) m <- dim(mu0)[1] # mu0=centers else m <- mu0 # mu0=number of clusters z.hat <- matrix(0, nrow = n, ncol = m) tt0 <- proc.time() # for total time ## Initial Values if(m == 1) z.hat <- matrix(1, nrow = n, ncol = m) else{ kmeans <- kmeans(x, mu0) for(j in 1:m) z.hat[kmeans$cluster==j, j] <- 1 } iter <- 0 if (stochastic) { sumpost <- matrix(0, n, m) } finished <- FALSE lambda <- matrix(0, nrow = maxiter, ncol = m) mu <- sigma <- array(0, dim=c(maxiter, m, max(u))) stackedx <- x[rep(1:n,m),] loglik <- NULL while (!finished) { iter <- iter + 1 bw.old <- bw t0 <- proc.time() ## Note: Enter loop assuming E-step is done -- i.e., z.hat is in place ## M-Step lambda[iter, ] <- colMeans(z.hat) if (stochastic) { z <- t(apply(z.hat, 1, function(prob) rmultinom(1, 1, prob))) cs <- colSums(z) z.tmp <- sweep(z, 2, cs, "/") z.tmp[, cs==0] <- 1/NROW(z.tmp) # Just in case } else { cs <- colSums(z.hat) z.tmp <- sweep(z.hat, 2, cs, "/") z.tmp[, cs==0] <- 1/NROW(z.tmp) # Just in case } h <- bw ## More M-step (means and std devs are location / scale params) for (k in 1:max(u)) { # k is the block number r2 <- sum(u == k) x2 <- x[, u==k] # Subset of data belonging to kth block (n x r2 matrix) mu[iter, , k] <- as.vector(rowMeans(t(z.tmp) %*% x2)) for (j in 1:m) sigma[iter, j, k] <- sqrt(sum(z.tmp[,j] * (x2-mu[iter, j, k])^2)/r2) } ## density estimation step if (!constbw) { wts <- rep(as.vector(z.tmp),r) scaledx <- as.vector((stackedx - mu[iter, rep(1:m, each=n), u])/ sigma[iter, rep(1:m, each=n), u]) h <- bw <- 0.9 / (n*r)^(1/5) * min(1, wiqr<-wIQR(wt=wts, x=scaledx)/1.34) } ans <- .C(C_KDElocscale, n = as.integer(n), m = as.integer(m), r = as.integer(r), blockid=as.integer(u), mu = as.double(mu[iter, , ]), sigma = as.double(sigma[iter, , ]), x = as.double(x), bw = as.double(h), z = as.double(z.tmp), f = double(n*m), PACKAGE="mixtools") lambda.f <- sweep(matrix(ans$f, ncol=m), 2, lambda[iter, ], "*") ## E-step (for next iteration) z.hat <- lambda.f/rowSums(lambda.f) loglik <- c(loglik,sum(log(rowSums(lambda.f)))) # log-likelihood finished <- iter >= maxiter if (stochastic) { sumpost <- sumpost + z.hat } else if (iter > 1) { # This convergence criterion may be too simplistic: maxchange <- max(abs(lambda[iter,] - lambda[iter-1,])) if (!constbw) maxchange <- max(maxchange, max(abs(bw.old - bw))) finished <- finished | (maxchange < eps) } if (verb) { t1 <- proc.time() cat("iteration", iter, " lambda ", round(lambda[iter, ], 4)) cat(" time", (t1 - t0)[3], "\n") } } if (verb) { tt1 <- proc.time() cat("lambda ", round(lambda[iter, ], 4)) cat(", total time", (tt1 - tt0)[3], "s\n") } if (stochastic) { return(structure(list(data = x, posteriors = sumpost/iter, lambda = lambda, bandwidth = bw, blockid = u, lambdahat = colMeans(lambda), mu = mu, muhat = colMeans(mu), sigma = sigma, sigmahat = colMeans(sigma), loglik = loglik), class="spEM")) } else { return(structure(list(data = x, posteriors = z.hat, lambda = lambda[1:iter,], bandwidth = bw, blockid = u, lambdahat = lambda[iter,], mu = mu[1:iter, , ], muhat = mu[iter, , ], sigma = sigma[1:iter, , ], sigmahat = sigma[iter, , ], loglik = loglik), class="spEM")) } } mixtools/R/npMSL.R0000644000175100001440000005136113060307260013466 0ustar hornikusers# original version, with weighted Silverman bandwidth unique option # has been improved (mid 2014) by a k-fold CV option # the original version is kept as "npMSL_old" in this file ################################################################ ################################################################ ## nonparametric algorithm for Smoothed Likelihood Maximization ## implementing block structure ## and Silverman adaptive bandwidth ## 2014 additions: loglik stores all the sequence, ## post argument for passing an init matrix of posterior ## bwiter argument for the duration of the adaptive bw stage ## can be set to 0 for keeping an initial bw matrix when samebw=FALSE ################################################################ ################################################################ npMSL_old <- function(x, mu0, blockid = 1:ncol(x), bw=bw.nrd0(as.vector(as.matrix(x))), samebw = TRUE, h=bw, eps=1e-8, maxiter=500, bwiter = maxiter, ngrid=200, post=NULL, verb = TRUE){ bw <- h # h is alternative bandwidth argument, for backward compatibility x <- as.matrix(x) n <- nrow(x) # number of subjects r <- ncol(x) # number of measurements in each subject u <- match(blockid, unique(blockid)) B <- max(u) # nb of blocks BlS <- rep(0,B) # block sizes = C_ell in JCGS paper for (ell in 1:B) { BlS[ell] <- sum(u == ell)} if (is.matrix(mu0)) # mu0=centers m <- dim(mu0)[1] else m <- mu0 # mu0=number of clusters if(!samebw && !is.matrix(bw)) { # create initial bandwidth matrix cat("create initial bandwidth matrix\n") bw <- matrix(bw, nrow=max(u), ncol=m) } z.hat <- matrix(0, nrow = n, ncol = m) tt0 <- proc.time() # for total time ## Initial Values if(m == 1) z.hat <- matrix(1, nrow = n, ncol = m) else if(is.null(post)) { kmeans <- kmeans(x, mu0) for(j in 1:m) z.hat[kmeans$cluster==j, j] <- 1 } else { z.hat <- post ## Currently no error-checking is done here } iter <- 0 finished <- FALSE lambda <- matrix(0, nrow = maxiter, ncol = m) loglik <- NULL; loglikseq <- rep(NA,maxiter) total_udfl <- 0; total_nan <- 0 # eventual NaN and underflow in C code tmp <- 1:n # is this needed? xtra <- (max(x)-min(x))/10 grid <- seq(min(x)-xtra, max(x)+xtra, length=ngrid) # f stored on a ngrid by m by B array # f_{g,j,ell} = f_{j ell}(u_g) # f <- array(1/m/diff(grid[1:2]), c(ngrid, m, B)) # this f was not normalized for being uniform over grid Delta <- diff(grid[1:2]) f <- array(1/((ngrid-1)*Delta), c(ngrid, m, B)) oldloglik <- -Inf orderx <- xx <- list() # preparation for adaptive bandwidth for(k in 1:B) { xx[[k]] <- as.vector(x[, u==k]) if (!samebw) { orderx[[k]] = order(xx[[k]]) # only needed for IQR calculation for bw } } ## CftEstep <- ifelse(samebw, "npMSL_Estep", "npMSL_Estep_bw") #Called directly below # CftEstep <- "npMSL_Estep_bw" # temporary, for testing only the M-step ## CftMstep <- ifelse(samebw, "npMSL_Mstep", "npMSL_Mstep_bw") #Called directly below while (!finished) { # Algorithm main iteration loop iter <- iter + 1 bw.old <- bw # is this needed? t0 <- proc.time() nb_udfl=0; # nb underflows, K()*log(0) ~0 cancelled in nems_Estep.c nb_nan=0; # nb nonzero K()*log(0) cancelled in nems_Estep.c ## Note: Enter loop assuming E-step is done -- i.e., z.hat in place ## M-Step lambda[iter, ] <- colMeans(z.hat) ## density estimation in M-step: WKDE-step cs <- colSums(z.hat) z.tmp <- sweep(z.hat, 2, cs, "/") z.tmp[, cs==0] <- 1/NROW(z.tmp) # Just in case ## adaptive bandwidth update IF in adaptive bw stage if (!samebw && iter <= bwiter) { for (ell in 1:B) { r2 <- BlS[ell] # block size = nb of coordinates wts <- apply(z.tmp, 2, function(z) rep(z/r2, r2)) variances <- colSums(wts*outer(xx[[ell]], colSums(wts*xx[[ell]]),'-')^2) iqr <- apply(as.matrix(wts[orderx[[ell]],]), 2, wIQR, xx[[ell]][orderx[[ell]]], already.sorted=TRUE, already.normalized=TRUE) h <- bw[ell, ] <- 0.9 * pmin(sqrt(variances), iqr/1.34) * pmax(1,r2*n*lambda[iter, ])^(-1/5) # Note: Doesn't allow "sample size" < 1. # browser() } } # end of bw adaptive stage if(samebw){ z <- .C(C_npMSL_Mstep, as.integer(ngrid), as.integer(n), as.integer(m), as.integer(r), as.integer(B), as.integer(BlS), as.integer(u), as.double(bw), as.double(x), as.double(grid), new.f=as.double(f), as.double(lambda[iter,]), as.double(z.hat), PACKAGE = "mixtools") } else{ z <- .C(C_npMSL_Mstep_bw, as.integer(ngrid), as.integer(n), as.integer(m), as.integer(r), as.integer(B), as.integer(BlS), as.integer(u), as.double(bw), as.double(x), as.double(grid), new.f=as.double(f), as.double(lambda[iter,]), as.double(z.hat), PACKAGE = "mixtools") } # z=.C(CftMstep, as.integer(ngrid), as.integer(n), # as.integer(m), as.integer(r), # as.integer(B), as.integer(BlS), as.integer(u), # as.double(bw), as.double(x), as.double(grid), # new.f=as.double(f), # as.double(lambda[iter,]), # as.double(z.hat)) f <- array(z$new.f, c(ngrid, m, B)) # check sum(f == 0) # print(apply(f,2:3,sum) * Delta) # print(max(abs(f-f2))) # browser() ## E-step (for next iteration) if(samebw){ z <- .C(C_npMSL_Estep, as.integer(ngrid), as.integer(n), as.integer(m), as.integer(r), as.integer(B), as.integer(u), as.double(bw), as.double(x), as.double(grid), f=as.double(f), as.double(lambda[iter,]), post=as.double(z.hat), loglik = double(1), nb_udfl = as.integer(nb_udfl), nb_nan = as.integer(nb_nan), PACKAGE = "mixtools") } else{ z <- .C(C_npMSL_Estep_bw, as.integer(ngrid), as.integer(n), as.integer(m), as.integer(r), as.integer(B), as.integer(u), as.double(bw), as.double(x), as.double(grid), f=as.double(f), as.double(lambda[iter,]), post=as.double(z.hat), loglik = double(1), nb_udfl = as.integer(nb_udfl), nb_nan = as.integer(nb_nan), PACKAGE = "mixtools") } # z=.C(CftEstep, as.integer(ngrid), as.integer(n), # as.integer(m), as.integer(r), # as.integer(B), as.integer(u), # as.double(bw), # as.double(x), as.double(grid), f=as.double(f), # as.double(lambda[iter,]), post=as.double(z.hat), # loglik = double(1), # nb_udfl = as.integer(nb_udfl), nb_nan = as.integer(nb_nan)) nb_udfl = z$nb_udfl; nb_nan = z$nb_nan; total_udfl <- total_udfl + nb_udfl total_nan <- total_nan + nb_nan z.hat <- matrix(z$post, n, m) if (sum(is.nan(z.hat)) > 0) cat("Error!! NaN in z.hat") # obsolete ? loglik <- loglikseq[iter] <- z$loglik loglikchange <- loglik - oldloglik oldloglik <- loglik finished <- iter >= maxiter if (iter>1 && max(abs(lambda[iter, ] - lambda[iter-1, ])) < eps) finished <- TRUE if (verb) { t1 <- proc.time() cat("iteration", iter, ": lambda ", round(lambda[iter, ], 4)) cat(" obj function", round(loglik, 4)) cat(" (change", round(loglikchange,4), ")") cat(" time", (t1 - t0)[3]) if ((nb_udfl > 0) || (nb_nan >0)) cat("\n ") if (nb_udfl > 0) cat("average underflows=", round(nb_udfl/(n*m*r),3)," ") if (nb_nan >0) cat("average NaNs=", round(nb_nan/(n*m*r),3)) # Note: these average mean nb of nan over ngrid convolution cat("\n") } } # f <- array(z$f, c(ngrid, m, r)) # obsolete in block version if (!samebw) { rownames(bw) <- paste("block", 1:max(u)) colnames(bw) <- paste("component", 1:m) } if (verb) { tt1 <- proc.time() cat("lambda ", round(lambda[iter, ], 4)) cat(", total time", (tt1 - tt0)[3], "s\n") } return(structure(list(data = x, posteriors = z.hat, lambda = lambda[1:iter,], bandwidth = bw, blockid = u, lambdahat = lambda[iter,], f=f, grid = grid, loglik = loglikseq[1:iter], meanUdfl = total_udfl/(n*m*r*iter),# average underflow meanNaN = total_nan/(n*m*r*iter)), # average NaN's class="npEM")) # define a "npMSL" class ? } ## updated late 2014 version ##################################################################### ##################################################################### ## nonparametric algorithm for Smoothed Likelihood Maximization ## implementing block structure ## 2014 latests additions: ## option for Silverman & weighted k-fold CV adaptive bandwidth: ## parameter bwmethod = "S" for Silverman's rule (the default), ## "CV" for Cross-Validation ## loglik now stores all the sequence ## post argument for passing an init matrix of posterior ## bwiter argument for the duration of the adaptive bw stage ## can be set to 0 for keeping an initial bw matrix when samebw=FALSE ###################################################################### ###################################################################### ## preliminary function for computing the weighted version of ## k-fold Cross-Validation # Splitting 1:n in nbsets subsets and return indices # n = total sample size # setsize = size of sets # nseq = explicit 1st and last indices splitsample <- function(n, nbsets=2) { k <- floor(n/nbsets) klast <- n - (nbsets-1)*k setsize <- c(rep(k, nbsets-1), klast) # n per set if (sum(setsize) != n) {cat("warning")} ni <- c(1,cumsum(setsize)+1) # indices for splitting nseq <- matrix(NA, nrow=nbsets, ncol=2) for (j in 1:nbsets) { nseq[j,1] <- ni[j] # 1st index for jth set nseq[j,2] <- ni[j+1]-1 # last index for jth set } a = list(setsize=setsize, nseq=nseq) return(a) } ## computes CV(h) in k-fold CV case # h = bandwidth (first argument for optimizing) # x = sample of data, vector # nbsets = number of folds # w = weights # lower, upper = numerical integration limits, data-driven defaults kfoldCV <- function(h, x, nbsets=2, w = rep(1, length(x)), lower=mean(x)-5*sd(x), upper=mean(x)+5*sd(x)) { n <- length(x) fold <- splitsample(n, nbsets) sumf <- 0 for (k in 1:nbsets) { Sk <- fold$nseq[k,1]:fold$nseq[k,2] # indices of set k learnset <- x[-Sk] # obs not in set k, from which f_h is "learned" evalset <- x[Sk] fk <- wkde(x = learnset, u = evalset, w = w[-Sk], bw = h) sumf <- sumf + sum(fk) } integrand <- function(u,...) {wkde(x, u, bw=h)^2} # computing ||f_h||^2 fh2 <- integrate(integrand, lower=lower, upper=upper)$value return(fh2 - 2*sumf/n) } ## Weighted bw selection by k-fold CV #### ## min search done by call to optimize # x = vector of data # w = weights, defaults to 1, unnormalized wbw.kCV <- function(x, nbfold=5, w = rep(1, length(x)), hmin=0.1*hmax, hmax=NULL) { n <- length(x) if (is.null(hmax)) hmax <- 1.144 * sqrt(var(x))*n^(-1/5) # default hmax as in bw.ucv # computing lower and upper integration limits for ||fh||^2 wm <- weighted.mean(x, w) lowerf <- wm - 5*sd(x); upperf <- wm + 5*sd(x) # maybe use a weighted.sd version as well? fucv <- function(h) kfoldCV(h, x, nbsets=nbfold, w=w, lower=lowerf, upper=upperf) hopt <- optimize(fucv, lower = hmin, upper = hmax)$minimum return(hopt) } ##################################################################### ##################################################################### ## nonparametric algorithm for Smoothed Likelihood Maximization ## implementing block structure ## 2014 latests additions: ## option for Silverman & weighted k-fold CV adaptive bandwidth: ## parameter bwmethod = "S" for Silverman's rule (the default), ## "CV" for Cross-Validation ## loglik now stores all the sequence ## post argument for passing an init matrix of posterior ## bwiter argument for the duration of the adaptive bw stage ## nbfold parameter passed to wbw.kCV, for leave-[n/nbfold]-out CV ## can be set to 0 for keeping an initial bw matrix when samebw=FALSE ###################################################################### ###################################################################### # ToDo: add a nbfold parameter passed to wbw.kCV npMSL <- function(x, mu0, blockid = 1:ncol(x), bw=bw.nrd0(as.vector(as.matrix(x))), samebw = TRUE, bwmethod = "S", h=bw, eps=1e-8, maxiter=500, bwiter = maxiter, nbfold = NULL, ngrid=200, post=NULL, verb = TRUE){ bw <- h # h is alternative bandwidth argument, for backward compatibility x <- as.matrix(x) n <- nrow(x) # number of subjects r <- ncol(x) # number of measurements in each subject u <- match(blockid, unique(blockid)) B <- max(u) # nb of blocks BlS <- rep(0,B) # block sizes = C_ell in JCGS paper for (ell in 1:B) { BlS[ell] <- sum(u == ell)} if (is.matrix(mu0)) # mu0=centers m <- dim(mu0)[1] else m <- mu0 # mu0 = number of clusters if(!samebw && !is.matrix(bw)) { # create initial bandwidth matrix h_lj bw <- matrix(bw, nrow=max(u), ncol=m)} z.hat <- matrix(0, nrow = n, ncol = m) tt0 <- proc.time() # for total time ## Initial Values if(m == 1) z.hat <- matrix(1, nrow = n, ncol = m) else if(is.null(post)) { kmeans <- kmeans(x, mu0) for(j in 1:m) z.hat[kmeans$cluster==j, j] <- 1 } else { z.hat <- post ## Currently no error-checking is done here } if (is.null(nbfold) && bwmethod == "CV") {nbfold <- 5} # default value for nbfold-CV iter <- 0 finished <- FALSE lambda <- matrix(0, nrow = maxiter, ncol = m) loglik <- NULL loglikseq <- rep(NA,maxiter) total_udfl <- 0; total_nan <- 0 # eventual NaN and underflow in C code tmp <- 1:n xtra <- (max(x)-min(x))/10 grid <- seq(min(x)-xtra, max(x)+xtra, length=ngrid) # f stored on a ngrid by m by B array # f_{g,j,ell} = f_{j ell}(u_g) # f <- array(1/m/diff(grid[1:2]), c(ngrid, m, B)) # this f was not normalized for being uniform over grid Delta <- diff(grid[1:2]) f <- array(1/((ngrid-1)*Delta), c(ngrid, m, B)) oldloglik <- -Inf orderx <- xx <- list() # preparation for Silverman adaptive bandwidth for(k in 1:B) { xx[[k]] <- as.vector(x[, u==k]) # data pooled from kth block if (!samebw && bwmethod == "S") { orderx[[k]] = order(xx[[k]]) # only needed for IQR calculation for bw } } ## CftEstep <- ifelse(samebw, "npMSL_Estep", "npMSL_Estep_bw") #Called directly below. # CftEstep <- "npMSL_Estep_bw" # temporary, for testing only the M-step ## CftMstep <- ifelse(samebw, "npMSL_Mstep", "npMSL_Mstep_bw") #Called directly below. while (!finished) { iter <- iter + 1 bw.old <- bw # is this needed? t0 <- proc.time() nb_udfl=0; # nb of underflows log(0) cancelled in nems_Estep.c nb_nan=0; # nb of nonzero K()*log(0) cancelled in nems_Estep.c ## Note: Enter loop assuming E-step is done i.e., z.hat in place ## M-Step lambda[iter, ] <- colMeans(z.hat) ## density estimation in M-step: WKDE-step cs <- colSums(z.hat) z.tmp <- sweep(z.hat, 2, cs, "/") z.tmp[, cs==0] <- 1/NROW(z.tmp) # Just in case ## adaptive bandwidth update - depends on bwmethod and adptbw stage duration in this version if (!samebw && iter <= bwiter) { # adaptive Silverman's rule if (bwmethod == "S") { for (ell in 1:B) { # for each block r2 <- BlS[ell] # block size = nb of coordinates wts <- apply(z.tmp, 2, function(z) rep(z/r2, r2)) variances <- colSums(wts*outer(xx[[ell]], colSums(wts*xx[[ell]]),'-')^2) iqr <- apply(as.matrix(wts[orderx[[ell]],]), 2, wIQR, xx[[ell]][orderx[[ell]]], already.sorted=TRUE, already.normalized=TRUE) h <- bw[ell, ] <- 0.9 * pmin(sqrt(variances), iqr/1.34) * pmax(1,r2*n*lambda[iter, ])^(-1/5) # Note: Doesn't allow "sample size" < 1. } } # adaptive nbfold CV computation, nbfold=5 by default if (bwmethod == "CV") { # k-fold CV for (ell in 1:B) { # for each block r2 <- BlS[ell] # block size = nb of coordinates wts <- apply(z.tmp, 2, function(z) rep(z, r2)) # replicate weights for (j in 1:m) bw[ell,j] <- wbw.kCV(xx[[ell]], nbfold = nbfold, w = wts[,j]) } } # end of CV version } # end of bw adaptive stage if(samebw){ z <- .C(C_npMSL_Mstep, as.integer(ngrid), as.integer(n), as.integer(m), as.integer(r), as.integer(B), as.integer(BlS), as.integer(u), as.double(bw), as.double(x), as.double(grid), new.f=as.double(f), as.double(lambda[iter,]), as.double(z.hat), PACKAGE = "mixtools") } else{ z <- .C(C_npMSL_Mstep_bw, as.integer(ngrid), as.integer(n), as.integer(m), as.integer(r), as.integer(B), as.integer(BlS), as.integer(u), as.double(bw), as.double(x), as.double(grid), new.f=as.double(f), as.double(lambda[iter,]), as.double(z.hat), PACKAGE = "mixtools") } # z=.C(CftMstep, as.integer(ngrid), as.integer(n), # as.integer(m), as.integer(r), # as.integer(B), as.integer(BlS), as.integer(u), # as.double(bw), as.double(x), as.double(grid), # new.f=as.double(f), # as.double(lambda[iter,]), # as.double(z.hat)) f <- array(z$new.f, c(ngrid, m, B)) # check sum(f == 0) # print(apply(f,2:3,sum) * Delta) # print(max(abs(f-f2))) # browser() ## E-step (for next iteration) if(samebw){ z <- .C(C_npMSL_Estep, as.integer(ngrid), as.integer(n), as.integer(m), as.integer(r), as.integer(B), as.integer(u), as.double(bw), as.double(x), as.double(grid), f=as.double(f), as.double(lambda[iter,]), post=as.double(z.hat), loglik = double(1), nb_udfl = as.integer(nb_udfl), nb_nan = as.integer(nb_nan), PACKAGE = "mixtools") } else{ z <- .C(C_npMSL_Estep_bw, as.integer(ngrid), as.integer(n), as.integer(m), as.integer(r), as.integer(B), as.integer(u), as.double(bw), as.double(x), as.double(grid), f=as.double(f), as.double(lambda[iter,]), post=as.double(z.hat), loglik = double(1), nb_udfl = as.integer(nb_udfl), nb_nan = as.integer(nb_nan), PACKAGE = "mixtools") } # z=.C(CftEstep, as.integer(ngrid), as.integer(n), # as.integer(m), as.integer(r), # as.integer(B), as.integer(u), # as.double(bw), # as.double(x), as.double(grid), f=as.double(f), # as.double(lambda[iter,]), post=as.double(z.hat), # loglik = double(1), # nb_udfl = as.integer(nb_udfl), nb_nan = as.integer(nb_nan)) nb_udfl = z$nb_udfl; nb_nan = z$nb_nan; total_udfl <- total_udfl + nb_udfl total_nan <- total_nan + nb_nan z.hat <- matrix(z$post, n, m) if (sum(is.nan(z.hat)) > 0) cat("Error!! NaN in z.hat") # obsolete ? loglik <- loglikseq[iter] <- z$loglik loglikchange <- loglik - oldloglik oldloglik <- loglik finished <- iter >= maxiter if (iter>1 && max(abs(lambda[iter, ] - lambda[iter-1, ])) < eps) finished <- TRUE if (verb) { t1 <- proc.time() cat("iteration", iter, ": lambda ", round(lambda[iter, ], 4)) cat(" obj change", round(loglikchange,4)) cat(" time", (t1 - t0)[3]) if ((nb_udfl > 0) || (nb_nan >0)) cat("\n ") if (nb_udfl > 0) cat("average underflows=", round(nb_udfl/(n*m*r),3)," ") if (nb_nan >0) cat("average NaNs=", round(nb_nan/(n*m*r),3)) # Note: average nb of nan over ngrid convolution cat("\n") } } # f <- array(z$f, c(ngrid, m, r)) # obsolete in block version if (!samebw) { rownames(bw) <- paste("block", 1:max(u)) colnames(bw) <- paste("component", 1:m) } if (verb) { tt1 <- proc.time() cat("lambda ", round(lambda[iter, ], 4)) cat(", total time", (tt1 - tt0)[3], "s\n") } return(structure(list(data = x, posteriors = z.hat, lambda = lambda[1:iter,], bandwidth = bw, blockid = u, lambdahat = lambda[iter,], f=f, grid = grid, loglik = loglikseq[1:iter], meanUdfl = total_udfl/(n*m*r*iter),# average underflow meanNaN = total_nan/(n*m*r*iter)), # average NaN's class="npEM")) # should we define a "npMSL" class ? } mixtools/R/regmixEMlambda.R0000755000175100001440000001032613060302263015350 0ustar hornikusersregmixEM.lambda = function (y, x, lambda = NULL, beta = NULL, sigma = NULL, k = 2, addintercept = TRUE, arbmean = TRUE, arbvar = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) { if (arbmean == FALSE && arbvar == FALSE) { stop(paste("Must change constraints on beta and/or sigma!", "\n")) } s = sigma if (addintercept) { x = cbind(1, x) } n <- length(y) p <- ncol(x) tmp <- regmix.lambda.init(y = y, x = x, lambda = lambda, beta = beta, s = s, k = k, addintercept = addintercept, arbmean = arbmean, arbvar = arbvar) lambda <- tmp$lambda beta <- tmp$beta s <- tmp$s k <- tmp$k diff <- 1 iter <- 0 xbeta <- x %*% beta res2 <- (y - xbeta)^2 if (arbmean == FALSE) { res2 <- sapply(1:k, function(i) res2) } comp <- t(t(lambda)/sqrt(2 * pi * s^2)) * exp(-t(t(res2)/(2 * s^2))) obsloglik <- sum(log(apply(comp, 1, sum))) ll <- obsloglik while (diff > epsilon && iter < 1) { V=as.double(sweep(lambda, 2, s+rep(0,k), "/")) W=as.double(sweep(res2, 2, 2*(s+rep(0,k))^2, "/")) z <- matrix(.C(C_newz, as.integer(n), as.integer(k), V=V, W=W, newz=double(n*k), PACKAGE = "mixtools")$newz, ncol=k) z = z/apply(z,1,sum) if (addintercept) { lm.out <- lapply(1:k, function(i) lm(y ~ x[,-1], weights = z[, i])) } else lm.out <- lapply(1:k, function(i) lm(y ~ x - 1, weights = z[, i])) beta.new <- sapply(lm.out, coef) if (arbmean == FALSE) { beta.new <- apply(t(apply(z, 2, sum) * t(beta.new)), 1, sum)/n } xbeta.new <- x %*% beta.new res2 <- (y - xbeta.new)^2 if (arbmean == FALSE) { res2 <- sapply(1:k, function(i) res2) } if (arbvar) { s.new <- sqrt(sapply(1:k, function(i) sum(z[,i] * (res2[, i]))/sum(z[, i]))) } else s.new <- sqrt(sum(z * res2)/n) beta <- beta.new xbeta <- x %*% beta s <- s.new sing <- sum(s < 1e-08) comp <- lapply(1:k, function(i) lambda[,i] * dnorm(y, xbeta[, i * arbmean + (1 - arbmean)], s[i * arbvar + (1 - arbvar)])) comp <- sapply(comp, cbind) compsum <- apply(comp, 1, sum) newobsloglik <- sum(log(compsum)) if (newobsloglik < obsloglik || sing > 0 || abs(newobsloglik) == Inf || is.nan(newobsloglik)){# || sum(z) != n) { cat("Need new starting values due to singularity...", "\n") tmp <- regmix.lambda.init(y = y, x = x, k = k, addintercept = addintercept, arbmean = arbmean, arbvar = arbvar) lambda <- tmp$lambda beta <- tmp$beta s <- tmp$s k <- tmp$k diff <- 1 iter <- 0 xbeta <- x %*% beta res2 <- (y - xbeta)^2 if (arbmean == FALSE) { res2 <- sapply(1:k, function(i) res2) } comp <- t(t(lambda)/sqrt(2 * pi * s^2)) * exp(-t(t(res2)/(2 * s^2))) obsloglik <- sum(log(apply(comp, 1, sum))) ll <- obsloglik } else { diff <- newobsloglik - obsloglik obsloglik <- newobsloglik ll <- c(ll, obsloglik) iter <- iter + 1 } } scale.order = order(s) sigma.min = min(s) if (arbmean == FALSE) { z = z[, scale.order] names(beta) <- c(paste("beta", ".", 0:(p - 1), sep = "")) colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) a = list(x = x, y = y, lambda = lambda[,scale.order], beta = beta, sigma = sigma.min, scale = s[scale.order]/sigma.min, loglik = obsloglik, posterior = z[, scale.order], all.loglik = ll, ft="regmixEM.lambda") class(a) = "mixEM" a } else { rownames(beta) <- c(paste("beta", ".", 0:(p - 1), sep = "")) colnames(beta) <- c(paste("comp", ".", 1:k, sep = "")) colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) a = list(x = x, y = y, lambda = lambda, beta = beta, sigma = s, loglik = obsloglik, posterior = z, all.loglik = ll, ft="regmixEM.lambda") class(a) = "mixEM" a } } mixtools/R/regmix.init.R0000755000175100001440000000406711665556372014761 0ustar hornikusersregmix.init<-function (y, x, lambda = NULL, beta = NULL, s = NULL, k = 2, addintercept = TRUE, arbmean = TRUE, arbvar = TRUE) { x <- as.matrix(x) n <- length(y) p <- ncol(x) if (addintercept) { x = x[, -1] } else x = x if (is.null(lambda)) { lambda = runif(k) lambda = lambda/sum(lambda) } else k = length(lambda) A = round(lambda * n) while(min(A)<4){ lambda = runif(k) lambda = lambda/sum(lambda) A = round(lambda * n) } A[k] = n - sum(A[1:(k - 1)]) B = c(0, cumsum(A)) w = cbind(y, x) w = w[order(w[, 1]), ] w.bin = list() for (j in 1:k) { w.bin[[j]] <- w[(B[j] + 1):B[j + 1], ] } if (addintercept) { lm.out <- lapply(1:k, function(i) lm(w.bin[[i]][, 1] ~ w.bin[[i]][, 2:p])) } else lm.out <- lapply(1:k, function(i) lm(w.bin[[i]][, 1] ~ w.bin[[i]][, 2:(p + 1)] - 1)) s.hyp = lapply(lm.out, anova) s.hyp = as.vector(sqrt(sapply(1:k, function(i) s.hyp[[i]]$Mean[length(s.hyp[[i]]$Mean)]))) s.hyp[(s.hyp<=0)|(is.na(s.hyp)==1)]=1 if (is.null(s)) { if (arbvar) { s = 1/rexp(k, rate = s.hyp) } else { s.hyp = mean(s.hyp) s = 1/rexp(1, rate = s.hyp) } } if (is.null(s) == FALSE && arbvar == TRUE) { k = length(s) } if (is.null(beta)) { x.x <- solve(t(x)%*%x) beta.hyp = matrix(sapply(lm.out, coef), ncol = k) beta = matrix(0, nrow = p, ncol = k) for (j in 1:k) { beta[, j] = rnorm(p, mean = as.vector(beta.hyp[, # j]), sd = (s[arbvar * j + (1 - arbvar)]*sqrt(diag(x.x))) ) j]), sd = (s.hyp[arbvar * j + (1 - arbvar)]*sqrt(diag(x.x))) ) } if (arbmean == FALSE) { beta = apply(beta, 1, mean) } } if (is.null(beta) == FALSE && arbmean == TRUE) { k = ncol(beta) } list(lambda = lambda, beta = beta, s = s, k = k) }mixtools/R/bootcomp.R0000755000175100001440000007651312777447152014353 0ustar hornikusersboot.comp <- function (y, x = NULL, N = NULL, max.comp = 2, B = 100, sig = 0.05, arbmean = TRUE, arbvar = TRUE, mix.type = c("logisregmix", "multmix", "mvnormalmix", "normalmix", "poisregmix", "regmix", "regmix.mixed", "repnormmix"), hist = TRUE, ...) { mix.type <- match.arg(mix.type) k = max.comp p = 0 sigtest = 1 Q.star = list() i = 0 if (mix.type == "regmix") { Q0 = 0 Q1 = 0 obs.Q = 0 i = 1 while (sigtest == 1 && i <= k) { Q.star[[i]] = 0 if (i == 1) { w = 1 while (w == 1) { H0.fit = lm(y ~ x) beta = coef(H0.fit) Q0[i] = as.numeric(logLik(H0.fit)) H1.fit = try(regmixEM(y = y, x = x, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(H1.fit) == "try-error") { w = 1 } else { Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) w = 1 else w = 2 beta = coef(H0.fit) xbeta = cbind(1, x) %*% beta xy.sd = sqrt(sum(H0.fit$res^2)/(length(y) - 2)) j = 0 } } while (j < B) { j = j + 1 y.sim = rnorm(length(y), mean = xbeta, sd = xy.sd) xy.simout = lm(y.sim ~ x) em.out = try(regmixEM(y = y.sim, x = x, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(em.out) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out$loglik - as.numeric(logLik(xy.simout))) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } else { w = 1 while (w == 1) { H0.fit = try(regmixEM(y = y, x = x, k = i, arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) H1.fit = try(regmixEM(y = y, x = x, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(H0.fit) == "try-error" || class(H1.fit) == "try-error") { w = 1 } else { Q0[i] = H0.fit$loglik if (arbmean == FALSE) { scale = H0.fit$scale beta = matrix(rep(H0.fit$beta, i), ncol = i) } else { scale = 1 } Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) w = 1 else w = 2 } beta.new = H0.fit$beta xbeta.new = cbind(1, x) %*% beta.new j = 0 } while (j < B) { j = j + 1 wt = rmultinom(length(y), size = 1, prob = H0.fit$lambda) if (arbmean == FALSE) { y.sim = sapply(1:length(y), function(i) rnorm(1, mean = xbeta.new, sd = ((scale * H0.fit$sigma)[wt[, i] == 1]))) } else { if (arbvar == FALSE) { y.sim = sapply(1:length(y), function(i) rnorm(1, mean = xbeta.new[i, (wt[, i] == 1)], sd = H0.fit$sigma)) } else { y.sim = sapply(1:length(y), function(i) rnorm(1, mean = xbeta.new[i, (wt[, i] == 1)], sd = H0.fit$sigma[wt[, i] == 1])) } } em.out.0 = try(regmixEM(y = y.sim, x = x, k = i, arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) em.out.1 = try(regmixEM(y = y.sim, x = x, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(em.out.0) == "try-error" || class(em.out.1) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out.1$loglik - em.out.0$loglik) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } p[i] = mean(Q.star[[i]] >= obs.Q[i]) sigtest = (p[i] < sig) i = i + 1 } } if (mix.type == "repnormmix") { Q0 = 0 Q1 = 0 obs.Q = 0 i = 1 while (sigtest == 1 && i <= k) { Q.star[[i]] = 0 if (i == 1) { w = 1 while (w == 1) { dens = dnorm(y, mean = mean(y), sd = sd(y)) Q0[i] = sum(log(dens[dens > 0])) H1.fit = try(repnormmixEM(x = y, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(H1.fit) == "try-error") { w = 1 } else { Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) { w = 1 } else { w = 2 } j = 0 } } while (j < B) { j = j + 1 y.sim = rmvnormmix(nrow(y), mu = rep(mean(y), ncol(y)), sigma = rep(sd(y), ncol(y))) dens.sim = dnorm(y.sim, mean = mean(y), sd = sd(y)) x.simout = sum(log(dens.sim[dens.sim > 0])) em.out = try(repnormmixEM(x = y.sim, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(em.out) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out$loglik - x.simout) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } else { w = 1 while (w == 1) { H0.fit = try(repnormmixEM(x = y, k = i, arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) H1.fit = try(repnormmixEM(x = y, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(H0.fit) == "try-error" || class(H1.fit) == "try-error") { w = 1 } else { Q0[i] = H0.fit$loglik if (arbmean == FALSE) scale = H0.fit$scale else scale = 1 Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) { w = 1 } else { w = 2 } } j = 0 } while (j < B) { j = j + 1 wt = rmultinom(length(y), size = 1, prob = H0.fit$lambda) if (arbmean == FALSE) { y.sim = sapply(1:ncol(y), function(i) rnorm(nrow(y), mean = H0.fit$mu, sd = ((scale * H0.fit$sigma)[wt[, i] == 1]))) } else { if (arbvar == FALSE) { y.sim = sapply(1:ncol(y), function(i) rnorm(nrow(y), mean = H0.fit$mu[wt[, i] == 1], sd = H0.fit$sigma)) } else { y.sim = sapply(1:ncol(y), function(i) rnorm(nrow(y), mean = H0.fit$mu[wt[, i] == 1], sd = H0.fit$sigma[wt[, i] == 1])) } } em.out.0 = try(repnormmixEM(x = y.sim, k = i, arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) em.out.1 = try(repnormmixEM(x = y.sim, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(em.out.0) == "try-error" || class(em.out.1) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out.1$loglik - em.out.0$loglik) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } p[i] = mean(Q.star[[i]] >= obs.Q[i]) sigtest = (p[i] < sig) i = i + 1 } } if (mix.type == "regmix.mixed") { if (is.list(y)) { if (length(y) != length(x)) stop("Number of elements in lists for x and y must match!") } tt = sapply(1:length(x), function(i) x[[i]][, 1]) beta = t(sapply(1:length(y), function(i) lm(y[[i]] ~ x[[i]])$coef)) y = beta mix.type = "mvnormalmix" } if (mix.type == "mvnormalmix") { Q0 = 0 Q1 = 0 obs.Q = 0 i = 1 while (sigtest == 1 && i <= k) { Q.star[[i]] = 0 if (i == 1) { w = 1 while (w == 1) { y.mean = apply(y, 2, mean) y.cov = cov(y) dens = dmvnorm(y, mu = y.mean, sigma = y.cov) Q0[i] = sum(log(dens[dens > 0])) H1.fit = try(mvnormalmixEM(x = y, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(H1.fit) == "try-error") { w = 1 } else { Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) w = 1 else w = 2 j = 0 } } while (j < B) { j = j + 1 y.sim = rmvnorm(nrow(y), mu = apply(y, 2, mean), sigma = y.cov) dens.sim = dmvnorm(y.sim, mu = y.mean, sigma = y.cov) y.simout = sum(log(dens.sim[dens.sim > 0])) em.out = try(mvnormalmixEM(x = y.sim, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(em.out) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out$loglik - y.simout) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } else { w = 1 while (w == 1) { H0.fit = try(mvnormalmixEM(x = y, k = i, ...), silent = TRUE) H1.fit = try(mvnormalmixEM(x = y, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(H0.fit) == "try-error" || class(H1.fit) == "try-error") { w = 1 } else { Q0[i] = H0.fit$loglik if (arbmean == FALSE) { H0.fit$mu = lapply(1:i, function(l) H0.fit$mu) } if (arbvar == FALSE) { H0.fit$sigma = lapply(1:i, function(l) H0.fit$sigma) } Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) { w = 1 } else { w = 2 } } j <- 0 } while (j < B) { j = j + 1 wt = rmultinom(nrow(y), size = 1, prob = H0.fit$lambda) if (arbmean == FALSE) { y.sim = t(sapply(1:nrow(y), function(i) rmvnorm(1, mu = H0.fit$mu, sigma = H0.fit$sigma[wt[, i] == 1][[1]]))) } else { if (arbvar == FALSE) { y.sim = t(sapply(1:nrow(y), function(i) rmvnorm(1, mu = H0.fit$mu[wt[, i] == 1][[1]], sigma = H0.fit$sigma))) } else { y.sim = t(sapply(1:nrow(y), function(i) rmvnorm(1, mu = H0.fit$mu[wt[, i] == 1][[1]], sigma = H0.fit$sigma[wt[, i] == 1][[1]]))) } } em.out.0 = try(mvnormalmixEM(x = y.sim, k = i, arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) em.out.1 = try(mvnormalmixEM(x = y.sim, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(em.out.0) == "try-error" || class(em.out.1) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out.1$loglik - em.out.0$loglik) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } p[i] = mean(Q.star[[i]] >= obs.Q[i]) sigtest = (p[i] < sig) i = i + 1 } } if (mix.type == "normalmix") { Q0 = 0 Q1 = 0 obs.Q = 0 i = 1 while (sigtest == 1 && i <= k) { Q.star[[i]] = 0 if (i == 1) { w = 1 while (w == 1) { dens = dnorm(y, mean = mean(y), sd = sd(y)) Q0[i] = sum(log(dens[dens > 0])) H1.fit = try(normalmixEM(x = y, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(H1.fit) == "try-error") { w = 1 } else { Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) { w = 1 } else { w = 2 } j = 0 } } while (j < B) { j = j + 1 y.sim = rnorm(length(y), mean = mean(y), sd = sd(y)) dens.sim = dnorm(y.sim, mean = mean(y), sd = sd(y)) x.simout = sum(log(dens.sim[dens.sim > 0])) em.out = try(normalmixEM(x = y.sim, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(em.out) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out$loglik - x.simout) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } else { w = 1 while (w == 1) { H0.fit = try(normalmixEM(x = y, k = i, arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) H1.fit = try(normalmixEM(x = y, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(H0.fit) == "try-error" || class(H1.fit) == "try-error") { w = 1 } else { Q0[i] = H0.fit$loglik if (arbmean == FALSE) scale = H0.fit$scale else scale = 1 Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) { w = 1 } else { w = 2 } } j = 0 } while (j < B) { j = j + 1 wt = rmultinom(length(y), size = 1, prob = H0.fit$lambda) if (arbmean == FALSE) { y.sim = sapply(1:length(y), function(i) rnorm(1, mean = H0.fit$mu, sd = ((scale * H0.fit$sigma)[wt[, i] == 1]))) } else { if (arbvar == FALSE) { y.sim = sapply(1:length(y), function(i) rnorm(1, mean = H0.fit$mu[(wt[, i] == 1)], sd = H0.fit$sigma)) } else { y.sim = sapply(1:length(y), function(i) rnorm(1, mean = H0.fit$mu[(wt[, i] == 1)], sd = H0.fit$sigma[wt[, i] == 1])) } } em.out.0 = try(normalmixEM(x = y.sim, k = i, arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) em.out.1 = try(normalmixEM(x = y.sim, k = (i + 1), arbmean = arbmean, arbvar = arbvar, ...), silent = TRUE) if (class(em.out.0) == "try-error" || class(em.out.1) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out.1$loglik - em.out.0$loglik) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } p[i] = mean(Q.star[[i]] >= obs.Q[i]) sigtest = (p[i] < sig) i = i + 1 } } if (mix.type == "multmix") { Q0 = 0 Q1 = 0 obs.Q = 0 i = 1 while (sigtest == 1 && i <= k) { Q.star[[i]] = 0 if (i == 1) { w = 1 while (w == 1) { m = apply(y, 1, sum) n.i = apply(y, 2, sum) theta = n.i/sum(n.i) Q0[i] = sum(log(exp(apply(y, 1, ldmult, theta = theta)))) H1.fit = try(multmixEM(y = y, k = (i + 1), ...), silent = TRUE) if (class(H1.fit) == "try-error") { w = 1 } else { Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) { w = 1 } else { w = 2 } j = 0 } } while (j < B) { j = j + 1 y.sim = matrix(0, ncol = ncol(y), nrow = nrow(y)) for (l in 1:length(m)) { y.sim[l, ] <- rmultinom(1, size = m[l], prob = theta) } theta.sim = apply(y.sim, 2, sum)/sum(apply(y.sim, 2, sum)) y.simout = sum(log(exp(apply(y.sim, 1, ldmult, theta = theta)))) em.out = try(multmixEM(y = y.sim, k = (i + 1), ...), silent = TRUE) if (class(em.out) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out$loglik - y.simout) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } else { w = 1 while (w == 1) { H0.fit = try(multmixEM(y = y, k = i, ...), silent = TRUE) H1.fit = try(multmixEM(y = y, k = (i + 1), ...), silent = TRUE) if (class(H0.fit) == "try-error" || class(H1.fit) == "try-error") { w = 1 } else { theta = H0.fit$theta Q0[i] = H0.fit$loglik Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) { w = 1 } else { w = 2 } } j = 0 } while (j < B) { j = j + 1 wt = rmultinom(nrow(y), size = 1, prob = H0.fit$lambda) # y.sim = t(sapply(1:nrow(y), function(i) rmultinom(1, # size = n.i[i], prob = H0.fit$theta[(wt[, # i] == 1), ]))) new.y.sim = t(sapply(1:nrow(y), function(i) rmultinom(1, size = n.i, prob = H0.fit$theta[(wt[, i] == 1), ]))) # new.y.sim = 0 em.out.0 = try(multmixEM(y = new.y.sim, k = i, ...), silent = TRUE) em.out.1 = try(multmixEM(y = new.y.sim, k = (i + 1), ...), silent = TRUE) if (class(em.out.0) == "try-error" || class(em.out.1) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out.1$loglik - em.out.0$loglik) Q.star[[i]][j] if (Q.star[[i]][j] < 0) { j = j - 1 } } } } p[i] = mean(Q.star[[i]] >= obs.Q[i]) sigtest = (p[i] < sig) i = i + 1 } } if (mix.type == "logisregmix") { if (is.null(N)) stop("Number of trials must be specified!") Q0 = 0 Q1 = 0 obs.Q = 0 i = 1 while (sigtest == 1 && i <= k) { Q.star[[i]] = 0 if (i == 1) { w = 1 while (w == 1) { H0.fit = glm(cbind(y, N - y) ~ x, family = binomial()) Q0[i] = logLik(H0.fit) H1.fit = try(logisregmixEM(y = y, x = x, N = N, k = (i + 1), ...), silent = TRUE) if (class(H1.fit) == "try-error") { w = 1 } else { Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) { w = 1 } else { w = 2 } beta = coef(H0.fit) xbeta = cbind(1, x) %*% beta j = 0 } } while (j < B) { j = j + 1 y.sim = rbinom(length(y), size = N, prob = inv.logit(xbeta)) xy.simout = glm(cbind(y.sim, N - y.sim) ~ x, family = binomial()) em.out = try(logisregmixEM(y = y.sim, x = x, N = N, k = (i + 1), ...), silent = TRUE) if (class(em.out) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out$loglik - logLik(xy.simout)) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } else { w = 1 while (w == 1) { H0.fit = try(logisregmixEM(y = y, x = x, N = N, k = i, ...), silent = TRUE) H1.fit = try(logisregmixEM(y = y, x = x, N = N, k = (i + 1), ...), silent = TRUE) if (class(H0.fit) == "try-error" || class(H1.fit) == "try-error") { w = 1 } else { Q0[i] = H0.fit$loglik Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) { w = 1 } else { w = 2 } beta = H0.fit$beta xbeta = cbind(1, x) %*% beta } j = 0 } while (j < B) { j = j + 1 wt = rmultinom(length(y), size = 1, prob = H0.fit$lambda) y.sim = sapply(1:length(y), function(i) rbinom(1, size = N[i], prob = inv.logit(xbeta)[, (wt[, i] == 1)])) em.out.0 = try(logisregmixEM(y = y.sim, x = x, N = N, k = i, ...), silent = TRUE) em.out.1 = try(logisregmixEM(y = y.sim, x = x, N = N, k = (i + 1), ...), silent = TRUE) if (class(em.out.0) == "try-error" || class(em.out.1) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out.1$loglik - em.out.0$loglik) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } p[i] = mean(Q.star[[i]] >= obs.Q[i]) sigtest = (p[i] < sig) i = i + 1 } } if (mix.type == "poisregmix") { Q0 = 0 Q1 = 0 obs.Q = 0 i = 1 while (sigtest == 1 && i <= k) { Q.star[[i]] = 0 if (i == 1) { w = 1 while (w == 1) { H0.fit = glm(y ~ x, family = poisson()) Q0[i] = logLik(H0.fit) H1.fit = try(poisregmixEM(y = y, x = x, k = (i + 1), ...), silent = TRUE) if (class(H1.fit) == "try-error") { w = 1 } else { Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) { w = 1 } else { w = 2 } beta = coef(H0.fit) xbeta = cbind(1, x) %*% beta j = 0 } } while (j < B) { j = j + 1 y.sim = rpois(length(y), lambda = exp(xbeta)) xy.simout = glm(y.sim ~ x, family = poisson()) em.out = try(poisregmixEM(y = y.sim, x = x, k = (i + 1), ...), silent = TRUE) if (class(em.out) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out$loglik - logLik(xy.simout)) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } else { w = 1 while (w == 1) { H0.fit = try(poisregmixEM(y = y, x = x, k = i, ...), silent = TRUE) H1.fit = try(poisregmixEM(y = y, x = x, k = (i + 1), ...), silent = TRUE) if (class(H0.fit) == "try-error" || class(H1.fit) == "try-error") { w = 1 } else { Q0[i] = H0.fit$loglik Q1[i] = H1.fit$loglik obs.Q[i] = 2 * (Q1[i] - Q0[i]) if (obs.Q[i] < 0) { w = 1 } else { w = 2 } beta = H0.fit$beta xbeta = cbind(1, x) %*% beta } j = 0 } while (j < B) { j = j + 1 wt = rmultinom(length(y), size = 1, prob = H0.fit$lambda) y.sim = sapply(1:length(y), function(i) rpois(1, lambda = exp(xbeta)[, (wt[, i] == 1)])) em.out.0 = try(poisregmixEM(y = y.sim, x = x, k = i, ...), silent = TRUE) em.out.1 = try(poisregmixEM(y = y.sim, x = x, k = (i + 1), ...), silent = TRUE) if (class(em.out.0) == "try-error" || class(em.out.1) == "try-error") { j = j - 1 } else { Q.star[[i]][j] = 2 * (em.out.1$loglik - em.out.0$loglik) if (Q.star[[i]][j] < 0) { j = j - 1 } } } } p[i] = mean(Q.star[[i]] >= obs.Q[i]) sigtest = (p[i] < sig) i = i + 1 } } if (hist) { if (length(p) == 2) { par(mfrow = c(1, 2)) for (i in 1:length(p)) { hist(Q.star[[i]], xlab = c("Bootstrap Likelihood", "Ratio Statistic"), main = paste(i, "versus", i + 1, "Components")) segments(obs.Q[i], 0, obs.Q[i], B, col = 2, lwd = 2) } } else { g = ceiling(sqrt(length(p))) par(mfrow = c(g, g)) for (i in 1:length(p)) { hist(Q.star[[i]], xlab = c("Bootstrap Likelihood", "Ratio Statistic"), main = paste(i, "versus", i + 1, "Components")) segments(obs.Q[i], 0, obs.Q[i], B, col = 2, lwd = 2) } } } if (p[length(p)] < sig) { cat("Decision: Select", length(p) + 1, "Component(s)", "\n") } else { cat("Decision: Select", length(p), "Component(s)", "\n") } list(p.values = p, log.lik = Q.star, obs.log.lik = obs.Q) }mixtools/R/augx.R0000755000175100001440000000110112112160772013431 0ustar hornikusersaug.x <- function(X,cp.locs,cp,delta = NULL){ X=as.matrix(X) if(is.null(delta)) delta=cp.locs if(length(cp.locs)!=length(delta) | length(cp.locs)!=sum(cp)){ stop(paste("You must specify a correct changepoint structure!", "\n")) } if(sum(cp)==0){ X } else{ new.x=NULL sum.cp=cumsum(cp) for(i in 1:length(cp)){ X.i=matrix(X[,i],ncol=max(1,cp[i]),nrow=length(X[,1])) if(cp[i]!=0){ CPs=cp.locs[(max(1,sum.cp[i-1]+1)):sum.cp[i]] SPs=delta[(max(1,sum.cp[i-1]+1)):sum.cp[i]] new.x=cbind(new.x,t(t(X.i)-SPs)*t(t(X.i)>CPs)) } } cbind(X,new.x) } } mixtools/R/testmixedequality.R0000755000175100001440000000520311665556372016301 0ustar hornikuserstest.equality.mixed=function (y, x = NULL, w = NULL, arb.R = TRUE, arb.sigma = FALSE, lambda = NULL, mu = NULL, sigma = NULL, R = NULL, alpha = NULL, ...) { if (arb.R == arb.sigma) stop("Change either 'arb.R' or 'arb.sigma'!") v = 1 while (v == 1) { if (arb.R) { H0 = regmixEM.mixed(y = y, x = x, w = w, arb.R = TRUE, arb.sigma = FALSE, lambda = lambda, sigma = sigma, mu = mu, R = R, alpha = alpha, ...) p = nrow(H0$posterior.beta[[1]]) k = length(H0$lambda) if (is.null(w)) alpha = NULL else alpha = H0$alpha # n.i=sapply(y,length) # N=length(y) # tmp=apply(H1$posterior.z*n.i,2,sum) # common.sig=sum(tmp/N*H1$sigma) # H1 = regmixEM.mixed(y = y, x = x, w = w, arb.R = TRUE, # arb.sigma = TRUE, lambda = H0$lambda, sigma = rep(H0$sigma,k), # mu = H0$mu, R = H0$R, alpha = alpha, ...) H1 = regmixEM.mixed(y = y, x = x, w = w, arb.R = TRUE, arb.sigma = TRUE, lambda = H0$lambda, sigma = NULL, mu = H0$mu, R = H0$R, alpha = alpha, ...) D = 2 * (H1$loglik - H0$loglik) df = k - 1 alpha = 1 - pchisq(D, df = df) } else { H0 = regmixEM.mixed(y = y, x = x, w = w, arb.R = FALSE, arb.sigma = TRUE, lambda = lambda, sigma = sigma, mu = mu, R = R, alpha = alpha, ...) p = nrow(H0$posterior.beta[[1]]) k = length(H0$lambda) if (is.null(w)) alpha = NULL else alpha = H0$alpha # N=length(y) # tmp=(apply(H1$posterior.z,2,sum))/N # common.R=matrix(0,ncol=p,nrow=p) # for(i in 1:length(H1$lambda)){ # common.R=common.R+tmp[i]*H1$R[[i]] # } # H1 = regmixEM.mixed(y = y, x = x, w = w, arb.R = TRUE, # arb.sigma = TRUE, lambda = H0$lambda, sigma = H0$sigma, # mu = H0$mu, R = lapply(1:k,function(i) H0$R), alpha = alpha, ...) H1 = regmixEM.mixed(y = y, x = x, w = w, arb.R = TRUE, arb.sigma = TRUE, lambda = H0$lambda, sigma = H0$sigma, mu = H0$mu, R = NULL, alpha = alpha, ...) D = 2 * (H1$loglik - H0$loglik) df = p * (p + 1) * (k - 1)/2 alpha = 1 - pchisq(D, df = df) } if (D < 0) { v = 1 lambda=NULL sigma=NULL mu=NULL R=NULL alpha=NULL} else v = 2 } a = list(chi.sq = D, df = df, p.value = alpha) a } mixtools/R/normalmixEM2comp.R0000755000175100001440000000331311665556372015706 0ustar hornikusers# fast function for two-component univariate normal mixture normalmixEM2comp <- function(x, lambda, mu, sigsqrd, eps=1e-8, maxit=1000, verb=FALSE) { arbvar <- (length(sigsqrd)==2) mu1 <- mu[1]; mu2 <- mu[2] sigsqrd1 <- sigsqrd[1]; sigsqrd2 <- sigsqrd[arbvar+1] mx <- mean(x) const <- length(x) * 0.918938533204673 # i.e., times log(2*pi)/2 dl <- 1 + eps iter<-0 ll <- rep(0, maxit+1) a1<-(x-mu1)^2; b1<-(lambda/sqrt(sigsqrd1))*exp(-a1/2/sigsqrd1) a2<-(x-mu2)^2; b2<-((1-lambda)/sqrt(sigsqrd2))*exp(-a2/2/sigsqrd2) l <- sum(log(b1+b2)) while (dl>eps && iter0,1,sum) if(is.null(lambda)|is.null(beta)|is.null(s)|is.null(psi.locs)){ if (is.null(psi.locs)) { psi.locs = vector("list",k) psi.locs = lapply(1:k, function(i) if(psi.counts[i]>0) vector("list",psi.counts[i]) else NULL) for(i in 1:k){ if(!is.null(psi.locs[[i]])){ temp.locs <- which(psi[i,]>0) temp.labs=NULL for(j in 1:length(temp.locs)){ psi.locs[[i]][[j]]=sort(runif(psi[i,temp.locs[j]],as.numeric(quantile(x[,temp.locs[j]],.05)),as.numeric(quantile(x[,temp.locs[j]],.95)))) temp.labs=c(temp.labs,colnames(x)[temp.locs[j]]) } names(psi.locs[[i]])=temp.labs } } } else k = length(psi.locs) xnam <- colnames(x) fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))) TEMP.lm <- lm(fmla,data=x) EM.out <- regmixEM(TEMP.lm$res,TEMP.lm$fit,k=k,epsilon=1e-2) posts = apply(EM.out$post,1,which.max) if (is.null(lambda)) { lambda = EM.out$lambda if(length(unique(posts))!=k) posts=rep(1:k,n)[1:n] } else k = length(lambda) A = round(lambda * n) while (min(A) <= 4) { lambda = runif(k) lambda = lambda/sum(lambda) A = round(lambda * n) } w = cbind(y, x) w.bin = list() for (j in 1:k) { w.bin[[j]] <- w[posts==j, ] } all.w.bin=vector("list",gamma(k+1)) all.inds=perm(k,k) all.X.aug=all.w.bin all.lm.out=all.w.bin avg.res=NULL for(j in 1:length(all.w.bin)){ all.w.bin[[j]]=w.bin[all.inds[j,]] X.aug <- lapply(1:k, function(i) cbind(1,aug.x(w.bin[[all.inds[j,i]]][,-1],unlist(psi.locs[[i]]),psi[i,],delta=NULL))) sapply(X.aug,dim) lm.out <- lapply(1:k, function(i) lm(w.bin[[all.inds[j,i]]][, 1] ~ X.aug[[i]][,-1])) all.X.aug[[j]]=X.aug all.lm.out[[j]]=lm.out avg.res=c(avg.res,mean(as.vector(unlist(lapply(1:k,function(t) lm.out[[t]]$res)))^2)) } IND=which.min(avg.res) w.bin=all.w.bin[[IND]] X.aug=all.X.aug[[IND]] lm.out=all.lm.out[[IND]] s.hyp = lapply(lm.out, anova) s.hyp = as.vector(sqrt(sapply(1:k, function(i) tail(s.hyp[[i]]$Mean,1)))) s.hyp[(s.hyp <= 0) | (is.na(s.hyp) == 1)] = 1 if (is.null(s)) { s = 1/rexp(k, rate = s.hyp) } else k = length(s) if (is.null(beta)) { x.x <- lapply(1:k,function(i) try(solve(t(X.aug[[i]]) %*% X.aug[[i]]),silent=TRUE)) test <- sum(sapply(1:k, function(i) class(x.x[[i]])[1]=="try-error")) if(test>0) stop("Lapack Routine Error") beta.hyp = lapply(lm.out,coef) # matrix(sapply(lm.out, coef), ncol = k) beta = vector("list",k) for (j in 1:k) { beta[[j]] = rnorm(length(beta.hyp[[j]]),mean=as.vector(beta.hyp[[j]]), sd = (s.hyp[j] * sqrt(diag(x.x[[j]])))) } } else k = length(beta) } else{ for(i in 1:k){ if(!is.null(psi.locs[[i]])){ temp.locs <- which(psi[i,]>0) temp.labs=NULL for(j in 1:length(temp.locs)){ temp.labs=c(temp.labs,colnames(x)[temp.locs[j]]) } names(psi.locs[[i]])=temp.labs } } } list(lambda = lambda, beta = beta, s = s, k = k, psi.locs = psi.locs) } mixtools/R/regmixmodelsel.R0000755000175100001440000001146111665556372015540 0ustar hornikusersregmixmodel.sel = function (x, y, w=NULL, k = 2, type = c("fixed", "random", "mixed"), ...) { aic <- NULL bic <- NULL caic <- NULL icl <- NULL type <- match.arg(type) AIC <- function(emout, p) { emout$loglik - (p - 1) } BIC <- function(emout, p, n) { emout$loglik - log(n) * (p - 1)/2 } CAIC <- function(emout, p, n) { emout$loglik - (log(n) + 1) * (p - 1)/2 } ICL <- function(emout, p, n) { BIC(emout, p, n) - sum(emout$lambda * log(emout$lambda)) } if (type == "fixed") { p <- function(emout) {length(emout$beta) + length(emout$sigma) + (length(emout$scale)-1)*is.null(emout$scale) +length(emout$lambda)} n <- length(y) for (i in 1:k) { if (i == 1) { a <- glm(y ~ x) beta <- matrix(a$coef, ncol = 1) loglik <- log(prod(dnorm(y, mean = beta[1, ] + as.matrix(x) %*% beta[2:nrow(beta), ], sd = sd(a$res)))) emout <- list(beta = beta, sigma = sd(a$res), lambda = 1, loglik = loglik) } else emout <- regmixEM(y, x, k = i, ...) P = p(emout) aic[i] <- AIC(emout, p=P) bic[i] <- BIC(emout, p=P, n=n) caic[i] <- CAIC(emout, p=P, n=n) icl[i] <- ICL(emout, p=P, n=n) } } else if (type == "random") { p <- function(emout) { if(is.list(emout$R)){ m<-nrow(emout$R[[1]]) v<-length(emout$R) } else { m<-nrow(emout$R) v<-1} length(emout$mu) +(v*m*(m+1)/2)+ length(emout$sigma)+ length(emout$lambda)} n <- sum(sapply(y,length)) for (j in 1:k) { if (j == 1) { a <- lapply(1:length(y), function(i) glm(y[[i]] ~ x[[i]])) aa <- sapply(1:length(a), function(i) as.vector(a[[i]]$res)) b <- sapply(1:length(a), function(i) as.matrix(a[[i]]$coef)) mu <- apply(b, 1, mean) R <- cov(t(b)) a.res <- NULL for (i in 1:length(aa)) { a.res <- c(a.res, aa[[i]]) } sd.a <- sd(a.res) loglik <- sapply(1:length(y), function(i) dmvnorm(as.vector(y[[i]]), b[1, i] + as.matrix(x[[i]]) %*% b[2:nrow(b), i], sd.a^2 * diag(length(y[[i]])))) loglik <- log(prod(loglik)) emout <- list(mu = mu, R = R, sigma = sd.a, lambda = 1, loglik = loglik) } else emout <- regmixEM.mixed(y, x, k = j, ...) P = p(emout) aic[j] <- AIC(emout, p=P) bic[j] <- BIC(emout, p=P, n=n) caic[j] <- CAIC(emout, p=P, n=n) icl[j] <- ICL(emout, p=P, n=n) } } else if (type == "mixed") { p <- function(emout) { if(is.list(emout$R)){ m<-nrow(emout$R[[1]]) v<-length(emout$R) } else { m<-nrow(emout$R) v<-1} length(emout$alpha)+ length(emout$mu) +(v*m*(m+1)/2)+ length(emout$sigma)+ length(emout$lambda)} n <- sum(sapply(y,length)) for (i in 1:k) { if (i == 1) { a <- lapply(1:length(y), function(i) glm(y[[i]] ~ x[[i]] + w[[i]])) aa <- sapply(1:length(a), function(i) as.vector(a[[i]]$res)) alpha <- sapply(1:length(a), function(i) matrix(a[[i]]$coef[(ncol(x[[i]]) + 2):(ncol(x[[i]]) + 1 + ncol(w[[i]]))])) alpha <- apply(as.matrix(alpha), 1, mean) b <- sapply(1:length(a), function(i) matrix(a[[i]]$coef[1:(ncol(x[[i]]) + 1)])) mu <- apply(b, 1, mean) R <- cov(t(b)) a.res <- NULL for (i in 1:length(aa)) { a.res <- c(a.res, aa[[i]]) } sd.a <- sd(a.res) loglik <- sapply(1:length(y), function(i) dmvnorm(as.vector(y[[i]]), b[1, i] + as.matrix(x[[i]]) %*% b[2:nrow(b), i], sd.a^2 * diag(length(y[[i]])))) loglik <- log(prod(loglik)) emout <- list(mu = mu, R = R, alpha = alpha, sigma = sd.a, lambda = 1, loglik = loglik) } else emout <- regmixEM.mixed(y, x, k = i, ...) P = p(emout) aic[i] <- AIC(emout, p=P) bic[i] <- BIC(emout, p=P, n=n) caic[i] <- CAIC(emout, p=P, n=n) icl[i] <- ICL(emout, p=P, n=n) } } out = rbind(aic, bic, caic, icl) Winner = apply(out, 1, function(x) (1:length(x))[x == max(x)]) colnames(out) = 1:k rownames(out) = c("AIC", "BIC", "CAIC", "ICL") cbind(out, Winner) }mixtools/R/rmvnorm.R0000755000175100001440000000155611665556372014224 0ustar hornikusers# Alternative version of rmvnorm to eliminate dependence of mixtools # on additional package 'mvtnorm' # Uses eigen decomposition assuming symmetric==TRUE. Don't know how efficient # this might be relative to other approaches, but some suggest this is among # the most efficient methods to find a matrix square root. rmvnorm <- function(n, mu=NULL, sigma=NULL) { if (is.null(mu)) { if (is.null(sigma)) { return(rnorm(n)) } else { mu = rep(0, nrow(sigma)) } } else if (is.null(sigma)) { sigma=diag(length(mu)) } lmu <- length(mu) if (lmu != nrow(sigma) || lmu != ncol(sigma)) stop("length of mu must equal nrow and ncol of sigma") e <- eigen(sigma, symmetric=TRUE) if (any(e$val<0)) stop("Numerically negative definite covariance matrix") t(mu + e$vec %*% (t(e$vec) * sqrt(e$val)) %*% matrix(rnorm(n*lmu), lmu, n)) } mixtools/R/regmixmixedinit.R0000755000175100001440000000720611665556372015730 0ustar hornikusersregmix.mixed.init <- function(y,x,w=NULL,sigma=NULL,arb.sigma=TRUE, alpha=NULL,lambda=NULL,mu=NULL,R=NULL,arb.R=TRUE,k=2,mixed=FALSE, addintercept.fixed=FALSE,addintercept.random=TRUE){ N <- length(y) n <- sapply(y, length) p <- ncol(x[[1]]) if (addintercept.random) { x = lapply(1:N, function(i) as.matrix(x[[i]][,-1])) } else x=x if(is.null(w)==FALSE && sum(sapply(w,sum))!=0){ q <- ncol(w[[1]]) } if (mixed == TRUE && is.null(alpha)==TRUE) { if (addintercept.fixed) { w.1 = list() w.1 = lapply(1:N,function(i) w[[i]][,-1]) lm.out = lapply(1:N,function(i) lm(y[[i]]~w.1[[i]])) alpha.hyp = apply(matrix(sapply(lm.out,coef),ncol=N),1,mean) sd.hyp = lapply(lm.out,anova) sd.hyp = mean(as.vector(sqrt(sapply(1:N,function(i) sd.hyp[[i]]$Mean[length(sd.hyp[[i]]$Mean)])))) alpha = rnorm(q, mean=alpha.hyp, sd=sd.hyp) } else { w.1 = w lm.out = lapply(1:N,function(i) lm(y[[i]]~w.1[[i]]-1)) alpha.hyp = apply(matrix(sapply(lm.out,coef),ncol=N),1,mean) sd.hyp = lapply(lm.out,anova) sd.hyp = mean(as.vector(sqrt(sapply(1:N,function(i) sd.hyp[[i]]$Mean[length(sd.hyp[[i]]$Mean)])))) alpha = rnorm(q, mean=alpha.hyp, sd=sd.hyp) } } if(mixed==FALSE) { alpha = 0 } y.x = lapply(1:N, function(i) cbind(y[[i]],x[[i]])) a = order(sapply(1:N, function(i) mean(y[[i]]))) y.x = lapply(1:N,function(i) y.x[[a[i]]]) y.x.bin.list = list() y.x.bin = list() for(j in 1:k){ y.x.bin.list[[j]] <- y.x[max(1,floor((j-1)*N/k)):ceiling(j*N/k)] y.x.2 <- NULL for(i in 1:length(y.x.bin.list[[j]])){ y.x.2 <- rbind(y.x.2,y.x.bin.list[[j]][[i]]) } y.x.bin[[j]] <- y.x.2 } if(addintercept.random){ lm.out <- lapply(1:k, function(i) lm(y.x.bin[[i]][,1]~y.x.bin[[i]][,2:p])) lm.out.beta <- lapply(1:k, function(j) lapply(1:length(y.x.bin.list[[j]]), function(i) lm(y.x.bin.list[[j]][[i]][,1]~y.x.bin.list[[j]][[i]][,2:p]))) beta <- lapply(1:k,function(j) matrix(sapply(lm.out.beta[[j]],coef),nrow=p)) } else { lm.out <- lapply(1:k, function(i) lm(y.x.bin[[i]][,1]~y.x.bin[[i]][,2:(p+1)]-1)) lm.out.beta <- lapply(1:k, function(j) lapply(1:length(y.x.bin.list[[j]]), function(i) lm(y.x.bin.list[[j]][[i]][,1]~y.x.bin.list[[j]][[i]][,2:(p+1)]-1))) beta <- lapply(1:k,function(j) matrix(sapply(lm.out.beta[[j]],coef),nrow=p)) } if(is.null(sigma)) { sigma.hyp = lapply(lm.out,anova) sigma.hyp = as.vector(sqrt(sapply(1:k,function(i) sigma.hyp[[i]]$Mean[length(sigma.hyp[[i]]$Mean)]))) if(arb.sigma) { sigma=1/rexp(k,rate=sigma.hyp) } else { sigma.hyp=mean(sigma.hyp) sigma=1/rexp(1,rate=sigma.hyp) } } if(is.null(sigma)==FALSE && arb.sigma==TRUE) { k=length(sigma) } if(is.null(R)) { if(arb.R) { R.hyp = lapply(1:k,function(i) (apply(beta[[i]],1,var))^-1) R=lapply(1:k,function(i) diag(1/rexp(p,rate=R.hyp[[i]]),p)) } else { R.hyp = apply(matrix(sapply(1:k,function(i) (apply(beta[[i]],1,var))^-1),ncol=k),2,mean) R = diag(1/rexp(p,rate=sigma.hyp),p) } } if(is.null(R)==FALSE && arb.R==TRUE) { k=length(R) } if (is.null(mu)) { mu.hyp = lapply(1:k,function(i) apply(beta[[i]],1,mean)) mu = matrix(ncol=k,nrow=p) if(arb.R==TRUE){ for(j in 1:k){ mu[,j] = rmvnorm(1,mu=as.vector(mu.hyp[[j]]),sigma=R[[j]]) } } else { for(j in 1:k){ mu[,j] = rmvnorm(1,mu=as.vector(mu.hyp[[j]]),sigma=R) } } } else k = ncol(mu) if (is.null(lambda)) { lambda = runif(k) lambda = lambda/sum(lambda) } else k = length(lambda) list(sigma=sigma,alpha=alpha,lambda=lambda,mu=mu,R=R,k=k) }mixtools/R/lambdapert.R0000755000175100001440000000021511736711332014612 0ustar hornikuserslambda.pert <- function (lambda, pert) { temp = logit(lambda) + pert temp2 = inv.logit(temp) new.lambda = temp2/sum(temp2) new.lambda } mixtools/R/regmixEM.R0000755000175100001440000001432711665556372014241 0ustar hornikusersregmixEM = function (y, x, lambda = NULL, beta = NULL, sigma = NULL, k = 2, addintercept = TRUE, arbmean = TRUE, arbvar = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) { if(arbmean == FALSE && arbvar == FALSE){ stop(paste("Must change constraints on beta and/or sigma!","\n")) } s = sigma if (addintercept) { x = cbind(1, x) } n <- length(y) p <- ncol(x) tmp <- regmix.init(y = y, x = x, lambda = lambda, beta = beta, s = s, k = k, addintercept = addintercept, arbmean = arbmean, arbvar = arbvar) lambda <- tmp$lambda beta <- tmp$beta s <- tmp$s k <- tmp$k diff <- 1 iter <- 0 xbeta <- x %*% beta res <- (y - xbeta)^2 if(arbmean == FALSE){ res <- sapply(1:k,function(i) res) } # comp <- lapply(1:k, function(i) lambda[i] * dnorm(y, xbeta[,i * arbmean + (1 - arbmean)], # s[i * arbvar + (1 - arbvar)])) # comp <- sapply(comp, cbind) # compsum <- apply(comp, 1, sum) # obsloglik <- sum(log(compsum)) comp <- t((lambda/sqrt(2 * pi * s^2)) * t(exp(-t(t(res)/(2 * s^2))))) obsloglik <- sum(log(apply(comp, 1, sum))) ll <- obsloglik z = matrix(nrow = n, ncol = k) restarts <- 0 while (diff > epsilon && iter < maxit) { for (i in 1:n) { for (j in 1:k) { z.denom = c() for (h in 1:k) { z.denom = c(z.denom, (lambda[h]/lambda[j]) * (s[j * arbvar + (1 - arbvar)]/s[h * arbvar + (1 - arbvar)]) * exp(-0.5 * ((1/s[h * arbvar + (1 - arbvar)]^2) * res[i, h] - (1/s[j * arbvar + (1 - arbvar)]^2) * res[i, j]))) } z[i, j] = 1/sum(z.denom) } } # z[,k]=1-apply(as.matrix(z[,(1:(k-1))]),1,sum) z = z/apply(z,1,sum) lambda.new <- apply(z, 2, mean) if (sum(lambda.new < 1e-08)>0 || is.na(sum(lambda.new))) { sing <- 1 } else { if (arbmean == FALSE) { if (addintercept) { beta.new <- lm(y~x[,-1],weights=apply(t(t(z)/(s^2)),1,sum))$coef } else beta.new <- lm(y~x-1,weights=apply(t(t(z)/(s^2)),1,sum))$coef # beta.new <- sapply(lm.out, coef) # beta.new1 <- apply(t(apply(z,2,sum)*t(beta.new)),1,sum)/n # beta.new2 <- lm(y~x[,-1],weights=apply(t(t(z)/(s^2)),1,sum))$coef # beta.new<-as.vector(solve(t(x) %*% sweep(x, 1, t(t(z)/(s^2)), "*")) %*% apply(t(t(z)/(s^2))*y*x,2,sum) ) } else { if (addintercept) { lm.out <- lapply(1:k, function(i) lm(y ~ x[, -1], weights = z[, i])) } else lm.out <- lapply(1:k, function(i) lm(y ~ x - 1, weights = z[, i])) beta.new <- sapply(lm.out, coef) } xbeta.new <- x %*% beta.new res <- (y - xbeta.new)^2 if(arbmean == FALSE){ res <- sapply(1:k,function(i) res) } if (arbvar) { s.new <- sqrt(sapply(1:k, function(i) sum(z[, i] * (res[, i]))/sum(z[, i]))) } else s.new <- sqrt(sum(z * res)/n) lambda <- lambda.new beta <- beta.new xbeta <- x%*%beta s <- s.new sing <- sum(s < 1e-08) comp <- lapply(1:k, function(i) lambda[i] * dnorm(y, xbeta[,i * arbmean + (1 - arbmean)], s[i * arbvar + (1 - arbvar)])) comp <- sapply(comp, cbind) compsum <- apply(comp, 1, sum) newobsloglik <- sum(log(compsum)) # comp <- t((lambda/sqrt(2 * pi * s^2)) * t(exp(-t(t(res)/(2 * # s^2))))) # newobsloglik <- sum(log(apply(comp, 1, sum))) } if (sing > 0 || is.na(newobsloglik) || newobsloglik < obsloglik || abs(newobsloglik) == Inf){# || sum(z) != n) { cat("Need new starting values due to singularity...", "\n") restarts <- restarts + 1 if(restarts>15) stop("Too many tries!") tmp <- regmix.init(y = y, x = x, k = k, addintercept = addintercept, arbmean = arbmean, arbvar = arbvar) lambda <- tmp$lambda beta <- tmp$beta s <- tmp$s k <- tmp$k diff <- 1 iter <- 0 xbeta <- x %*% beta res <- (y - xbeta)^2 if(arbmean == FALSE){ res <- sapply(1:k,function(i) res) } # comp <- lapply(1:k, function(i) lambda[i] * dnorm(y, xbeta[,i * arbmean + (1 - arbmean)], # s[i * arbvar + (1 - arbvar)])) # comp <- sapply(comp, cbind) # compsum <- apply(comp, 1, sum) # obsloglik <- sum(log(compsum)) comp <- t((lambda/sqrt(2 * pi * s^2)) * t(exp(-t(t(res)/(2 * s^2))))) obsloglik <- sum(log(apply(comp, 1, sum))) ll <- obsloglik } else { diff <- newobsloglik - obsloglik obsloglik <- newobsloglik ll <- c(ll, obsloglik) iter <- iter + 1 if (verb) { cat("iteration=", iter, "diff=", diff, "log-likelihood", obsloglik, "\n") } } } scale.order = order(s) sigma.min = min(s) if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } cat("number of iterations=", iter, "\n") if(arbmean == FALSE){ z=z[,scale.order] names(beta) <- c(paste("beta", ".", 0:(p-1), sep = "")) colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=x, y=y, lambda = lambda[scale.order], beta = beta, sigma = sigma.min, scale = s[scale.order]/sigma.min, loglik = obsloglik, posterior = z[,scale.order], all.loglik=ll, restarts = restarts, ft="regmixEM") class(a) = "mixEM" a } else { rownames(beta) <- c(paste("beta", ".", 0:(p-1), sep = "")) colnames(beta) <- c(paste("comp", ".", 1:k, sep = "")) colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=x, y=y, lambda = lambda, beta = beta, sigma = s, loglik = obsloglik, posterior = z, all.loglik=ll, restarts = restarts, ft="regmixEM") class(a) = "mixEM" a } }mixtools/R/depth.R0000755000175100001440000000243513060301775013607 0ustar hornikusers###################################################################### # the following depth function can compute the depth for # # multi points at one time # ###################################################################### #dyn.load("~fxuan/depth/spherical/sphericaldepth.so") depth <- function(pts,x,Cx=var(x)){ x=x%*%t(chol(solve(Cx))) pts=pts%*%t(chol(solve(Cx))) # y <- .Fortran("mudepth", # as.integer(nrow(x)), # as.integer(nrow(pts)), # as.integer(ncol(x)), # as.single(pts), # as.single(x), # as.integer(1:nrow(pts)), # as.single(1:nrow(pts)), # PACKAGE="mixtools") # Now rewritten in C: y <- .C(C_mudepth, as.integer(nrow(x)), as.integer(nrow(pts)), as.integer(ncol(x)), as.double(pts), as.double(x), integer(nrow(pts)), double(nrow(pts)), PACKAGE="mixtools") count <- y[[6]] n <- nrow(x) # depth <- sqrt(8)*(count-n*(n-1)/4)/sqrt((n*(n-1)))#this is to standardize the depth # depth <- (factorial(n)/(2*factorial(n-2)))^(-1)*count depth <- choose(n,2)^(-1)*count depth } mixtools/R/kernT.R0000755000175100001440000000007611665556372013603 0ustar hornikuserskern.T <- function (x, xi, h) { (1-abs((xi-x)/h))/h } mixtools/R/mvnormalmixinit.R0000755000175100001440000000322011665556372015747 0ustar hornikusersmvnormalmix.init = function (x, lambda = NULL, mu = NULL, sigma = NULL, k = 2, arbmean = TRUE, arbvar = TRUE) { n <- nrow(x) p <- ncol(x) y <- apply(x, 1, mean) x <- x[order(y), ] x.bin <- list() for (j in 1:k) { x.bin[[j]] <- x[max(1, floor((j - 1) * n/k)):ceiling(j * n/k), ] } if (is.null(sigma)) { if (arbvar) { sigma.hyp = lapply(1:k, function(i) (apply(x.bin[[i]], 2, var))^-1) sigma = lapply(1:k, function(i) diag(1/rexp(p, rate = sigma.hyp[[i]]))) } else { sigma.hyp = apply(sapply(1:k, function(i) (apply(x.bin[[i]], 2, var))^-1), 2, mean) sigma = diag(1/rexp(p, rate = sigma.hyp)) } } if (is.null(sigma) == FALSE && arbvar == TRUE) { k = length(sigma) } if (is.null(mu)) { mu.hyp <- lapply(1:k, function(i) apply(x.bin[[i]], 2, mean)) if (arbvar) { mu <- lapply(1:k, function(i) as.vector(rmvnorm(1, mu = as.vector(mu.hyp[[i]]), sigma = as.matrix(sigma[[i]])))) } else mu <- lapply(1:k, function(i) as.vector(rmvnorm(1, mu = as.vector(mu.hyp[[i]]), sigma = as.matrix(sigma)))) if (arbmean==FALSE) { mu <- apply(sapply(mu,as.vector),1,mean) # mu <- lapply(1:k, function(i) mu) } } if (is.null(mu) == FALSE && arbmean == TRUE){ k=length(mu) } if (is.null(lambda)) { lambda <- runif(k) lambda <- lambda/sum(lambda) } else k <- length(lambda) list(lambda = lambda, mu = mu, sigma = sigma, k = k) }mixtools/R/plot.mixEM.R0000644000175100001440000002142113055603106014465 0ustar hornikusersplot.mixEM <-function (x, whichplots = 1, loglik = 1 %in% whichplots, density = 2 %in% whichplots, xlab1="Iteration", ylab1="Log-Likelihood", main1="Observed Data Log-Likelihood", col1=1, lwd1=2, xlab2=NULL, ylab2=NULL, main2=NULL, col2=NULL, lwd2=2, alpha = 0.05, marginal = FALSE, ...) { def.par <- par(ask=(loglik + density > 1), "mar") # only ask and mar are changed mix.object <- x if (!inherits(mix.object, "mixEM")) stop("Use only with \"mixEM\" objects!") if (loglik) { plot(mix.object$all.loglik, xlab = xlab1, ylab = ylab1, main = main1, type="l", lwd=lwd1, col=col1, ...) } if (density) { if (mix.object$ft == "logisregmixEM") { if (ncol(mix.object$x) != 2) { stop("The predictors must have 2 columns!") } if (sum((mix.object$y == 1) + (mix.object$y == 0)) != length(mix.object$y)) { stop("The response must be binary!") } k = ncol(mix.object$beta) x = mix.object$x[, 2] if(is.null(main2)) { main2 <- "Most Probable Component Membership" } if(is.null(xlab2)) { xlab2 <- "Predictor" } if(is.null(ylab2)) { ylab2 <- "Response" } if(is.null(col2)) { col2 <- 2:(k+1) } plot(x, mix.object$y, main=main2, xlab=xlab2, ylab=ylab2, col = col2[apply(mix.object$posterior, 1, which.max)], ...) a = cbind(x, mix.object$y) a = a[order(a[, 1]), ] for (i in 1:k) { lines(a[, 1], plogis(mix.object$beta[1, i] + mix.object$beta[2, i] * a[, 1]), col = col2[i]) } } if (mix.object$ft == "normalmixEM") { k <- ncol(mix.object$posterior) x <- sort(mix.object$x) a <- hist(x, plot = FALSE) maxy <- max(max(a$density), .3989*mix.object$lambda/mix.object$sigma) if(is.null(main2)) { main2 <- "Density Curves" } if(is.null(xlab2)) { xlab2 <- "Data" } if(is.null(col2)) { col2 <- 2:(k+1) } hist(x, prob = TRUE, main = main2, xlab = xlab2, ylim = c(0,maxy), ...) if (length(mix.object$mu) == 1) { arbvar <- TRUE mix.object$sigma <- mix.object$scale * mix.object$sigma arbmean <- FALSE } if (length(mix.object$mu) == k && length(mix.object$sigma) == 1) { arbmean <- TRUE arbvar <- FALSE } if (length(mix.object$sigma) == k && length(mix.object$mu) == k) { arbmean <- TRUE arbvar <- TRUE } for (i in 1:k) { lines(x, mix.object$lambda[i] * dnorm(x, mean = mix.object$mu[i * arbmean + (1 - arbmean)], sd = mix.object$sigma[i * arbvar + (1 - arbvar)]), col = col2[i], lwd = lwd2) } } if (mix.object$ft == "repnormmixEM") { x <- as.vector(as.matrix(x)) k <- ncol(mix.object$posterior) x <- sort(mix.object$x) a <- hist(x, plot = FALSE) maxy <- max(max(a$density), .3989*mix.object$lambda/mix.object$sigma) if (is.null(main2)) { main2 <- "Density Curves" } if(is.null(xlab2)) { xlab2 <- "Data" } if(is.null(col2)) { col2 <- 2:(k+1) } hist(x, prob = TRUE, main = main2, xlab = xlab2, ylim = c(0, maxy), ...) if (length(mix.object$mu) == 1) { arbvar <- TRUE mix.object$sigma = mix.object$scale * mix.object$sigma arbmean <- FALSE } if (length(mix.object$mu) == k && length(mix.object$sigma) == 1) { arbmean <- TRUE arbvar <- FALSE } if (length(mix.object$sigma) == k && length(mix.object$mu) == k) { arbmean <- TRUE arbvar <- TRUE } for (i in 1:k) { lines(x, mix.object$lambda[i] * dnorm(x, mean = mix.object$mu[i * arbmean + (1 - arbmean)], sd = mix.object$sigma[i * arbvar + (1 - arbvar)]), col = col2[i], lwd = lwd2) } } if (mix.object$ft == "regmixEM.mixed") { x.1 = mix.object$x n = sum(sapply(x.1, nrow)) x.1.sum = sum(sapply(1:length(x.1), function(i) length(x.1[[i]][, 1]))) if (x.1.sum == n) { x = lapply(1:length(x.1), function(i) matrix(x.1[[i]][, -1], ncol = 1)) } else { x = x.1 } post.beta(x = x, y = mix.object$y, p.beta = mix.object$posterior.beta, p.z = mix.object$posterior.z) } if (mix.object$ft == "mvnormalmixEM") { x = mix.object$x if (ncol(x) != 2) { stop("The data must have 2 columns!") } post = apply(mix.object$posterior, 1, which.max) k <- ncol(mix.object$posterior) if (is.list(mix.object$sigma)) { sigma = mix.object$sigma } else { sigma = lapply(1:k, function(i) mix.object$sigma) } if (is.list(mix.object$mu)) { mu = mix.object$mu } else { mu = lapply(1:k, function(i) mix.object$mu) } if(is.null(xlab2)) { xlab2 <- "X.1" } if(is.null(ylab2)) { ylab2 <- "X.2" } if(is.null(col2)) { col2 <- 2:(k+1) } if (marginal == FALSE) { if (is.null(main2)) { main2 <- "Density Curves" } plot(x, col = col2[post], xlab = xlab2, ylab = ylab2, main = main2, ...) lapply(1:k, function(i) points(mu[[i]][1], mu[[i]][2], pch = 19)) for (i in 1:k) { for (j in 1:length(alpha)) { ellipse(mu = mu[[i]], sigma = sigma[[i]], alpha = alpha[j], col = col2[i]) } } } else { if (is.null(main2)) { main2 <- "" } # FIXME: What's the right main2 here? x <- mix.object$x[, 1] y <- mix.object$x[, 2] xhist <- hist(x, plot = FALSE) yhist <- hist(y, plot = FALSE) top <- max(c(xhist$counts, yhist$counts)) xrange <- range(x) yrange <- range(y) nf <- layout(matrix(c(2, 0, 1, 3), 2, 2, byrow = TRUE), c(4, 1), c(1, 4), TRUE) layout.show(nf) par(mar = c(3, 3, 1, 1)) plot(mix.object$x[, 1], mix.object$x[,2], col = col2[post], xlab = xlab2, ylab = ylab2, main = main2, ...) lapply(1:k, function(i) points(mu[[i]][1], mu[[i]][2], pch = 19)) for (i in 1:k) { for (j in 1:length(alpha)) { ellipse(mu = mu[[i]], sigma = sigma[[i]], alpha = alpha[j], col = (i + 1)) } } par(mar = c(0, 3, 1, 1)) barplot(xhist$counts, axes = FALSE, ylim = c(0, top), space = 0, ...) par(mar = c(3, 0, 1, 1)) barplot(yhist$counts, axes = FALSE, xlim = c(0, top), space = 0, horiz = TRUE, ...) } } if (mix.object$ft == "regmixEM") { if (ncol(mix.object$x) != 2) { stop("The predictors must have 2 columns!") } post <- apply(mix.object$posterior, 1, which.max) k <- ncol(mix.object$posterior) x <- mix.object$x[, 2] y <- mix.object$y n <- length(y) if(is.null(main2)) { main2 <- "Most Probable Component Membership" } if(is.null(xlab2)) { xlab2 <- "Predictor" } if(is.null(ylab2)) { ylab2 <- "Response" } if(is.null(col2)) { col2 <- 2:(k+1) } plot(x, y, main = main2, xlab=xlab2, ylab=ylab2, type="n", ...) a = cbind(mix.object$x[, 2], mix.object$y, post) for (i in 1:k) { xy = subset(cbind(a, mix.object$posterior[, i]), a[, 3] == i)[, -3] xy = matrix(xy, ncol=3) points(xy[, 1], xy[, 2], col = col2[i]) if (is.matrix(mix.object$beta) == FALSE) { abline(coef = mix.object$beta) beta = matrix(mix.object$beta, ncol = k, nrow = 2) } else { abline(coef = mix.object$beta[, i], col = col2[i]) beta = mix.object$beta } out = lm(y ~ x, weights = mix.object$posterior[,i]) fit = beta[1, i] + beta[2, i] * x out.aov = anova(out) MSE = out.aov$Mean[2] xy.f = cbind(x, y, fit) xy.sort = xy.f[order(xy.f[, 1]), ] x.new = seq(from=min(x),to=max(x),length.out=100) y.new = beta[1, i] + beta[2, i] * x.new s.h <- sqrt(MSE * (1/n + (x.new - mean(xy.sort[,1]))^2 / var(xy.sort[, 1])/(n - 1))) for (j in 1:length(alpha)) { W = sqrt(qf(1 - alpha[j], 2, n - 2)) upper = y.new + W * s.h lower = y.new - W * s.h lines(x.new, upper, col = (i + 1)) lines(x.new, lower, col = (i + 1)) } } } if (mix.object$ft == "expRMM_EM") {plotexpRMM(mix.object, ...)} # all default if (mix.object$ft == "weibullRMM_SEM") {plotweibullRMM(mix.object, ...)} # all default } par(def.par) # reset ask and mar to original values } mixtools/R/density.npEM.R0000755000175100001440000000266211665556372015040 0ustar hornikusers# Method for "density" generic: Takes an npEM object and returns # a corresponding KDE for the appropriate component and block, evaluated # at the given set of points. # Does not use the FFT like the density.default function does; still # quite fast, but not optimized for speed density.npEM <- function (x, u = NULL, component = 1, block = 1, scale = FALSE, ...) { if (is.null(blockid <- x$blockid)) { coords <- 1 } else { coords <- blockid == block if (!any(coords)) stop("Illegal value of block argument") } m <- NCOL(x$post) xx <- as.vector(as.matrix(x$data)[, coords]) if(is.matrix(x$bandwidth)) bw <- x$bandwidth[block, component] else bw <- x$bandwidth if (is.null(u)) { u = seq(min(xx) - 4 * bw, max(xx) + 4 * bw, len = 250) } if (component > m || component < 1) stop("Illegal value of component argument") if (!is.null(x$symmetric) && x$symmetric) { n <- length(xx) d <- wkde(x = rep(xx, m) - rep(x$muhat, each = n), u = u - x$muhat[component], w = as.vector(x$post), bw = bw, sym = TRUE) } else { n <- NROW(x$data) wts <- rep(x$post[, component], sum(coords)) d <- wkde(xx, u = u, w = wts, bw = bw) } if (scale) d <- d * x$lambdahat[component] structure(list(x = u, y = d, bw = bw, n = n, call = match.call(), data.name = deparse(substitute(x)), has.na = FALSE), class = "density") } mixtools/R/regcr.R0000755000175100001440000000537311665556372013627 0ustar hornikusers# Produce credible region for regression lines based on # sample from posterior distribution of beta parameters. # It is assumed that beta, upon entry, is an nx2 matrix, # where the first column gives the intercepts and the # second column gives the slopes. # alpha is the proportion of beta to remove from the posterior. # Thus, 1-alpha is the level of the credible region. # # If nonparametric=TRUE, then the region is based on the convex # hull of the remaining beta after trimming, which is accomplished # using a data depth technique. # # If nonparametric=FALSE, then the region is based on the # asymptotic normal approximation. regcr=function (beta, x, em.beta=NULL, em.sigma=NULL, alpha = 0.05, nonparametric = FALSE, plot = FALSE, xyaxes = TRUE, ...) { if (nonparametric) { beta.old=beta if(is.null(em.sigma) && is.null(em.beta)){ beta=t(matsqrt(solve(cov(beta)))%*%(t(beta)-apply(beta,2,mean))) } else beta=1/sqrt(length(x))*t(em.sigma^(-1)*matsqrt(t(cbind(1,x))%*%cbind(1,x))%*%(t(beta.old)-em.beta)) d = depth(beta, beta) beta = beta.old[order(d), ] d = d[order(d)] n = length(d) trimbeta = beta[-(1:round(n * alpha)), ] h = unique(trimbeta[chull(trimbeta), ]) nh = nrow(h) m = which.max(h[, 2]) h = rbind(h[m:nh, ], h[((1:nh) < m), ], h[m, ]) bound = NULL for (i in 1:nh) { bound = rbind(bound, h[i, ]) bound = rbind(bound, cbind(seq(h[i, 1], h[i + 1, 1], len = 50), seq(h[i, 2], h[i + 1, 2], len = 50))) } beta=trimbeta } else { xbar = apply(beta, 2, mean) n = nrow(beta) cbeta = t(t(beta) - xbar) S = t(cbeta) %*% cbeta/(n - 1) eS = eigen(S) B = eS$vec %*% diag(sqrt(eS$val)) theta = seq(0, 2 * pi, len = 250) v = cbind(cos(theta), sin(theta)) * sqrt(qchisq(1 - alpha, 2)) h = t(B %*% t(v) + xbar) nh = nrow(h) m = which.max(h[, 2]) h = rbind(h[m:nh, ], h[((1:nh) < m), ], h[m, ]) bound = h } z <- length(x) * 5 u <- seq(min(x), max(x), length = z) lower <- c() upper <- c() v <- c() for (j in 1:z) { for (i in 1:nrow(beta)) { v[i] <- as.matrix(beta[, 1][i] + beta[, 2][i] * u[j]) } uv <- cbind(u[j], v) lower <- rbind(lower, uv[order(v), ][1, ]) upper <- rbind(upper, uv[order(v), ][nrow(beta), ]) } if (plot) { if (xyaxes) { lines(upper, ...) lines(lower, ...) } else { lines(bound, ...) } } invisible(list(boundary = bound, upper = upper, lower = lower)) } mixtools/R/mvnormalmixEM.R0000755000175100001440000001555611665556372015324 0ustar hornikusersmvnormalmixEM = function (x, lambda = NULL, mu = NULL, sigma = NULL, k = 2, arbmean = TRUE, arbvar = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) { if(arbmean == FALSE && arbvar == FALSE){ stop(paste("Must change constraints on mu and/or sigma!","\n")) } x <- as.matrix(x) n <- nrow(x) p <- ncol(x) tmp <- mvnormalmix.init(x = x, lambda = lambda, mu = mu, sigma = sigma, k = k, arbmean=arbmean, arbvar = arbvar) lambda <- tmp$lambda mu<-tmp$mu sigma <- tmp$sigma k = tmp$k diff <- 1 iter <- 0 if (arbmean==FALSE){ comp <- lapply(1:k, function(i) lambda[i] * dmvnorm(x, mu, sigma[[i]])) } else{ if (arbvar==FALSE) { comp <- lapply(1:k, function(i) lambda[i] * dmvnorm(x, mu[[i]], sigma)) } else comp <- lapply(1:k, function(i) lambda[i] * dmvnorm(x, mu[[i]], sigma[[i]])) } comp <- sapply(comp, cbind) compsum <- apply(comp, 1, sum) obsloglik <- sum(log(compsum)) ll <- obsloglik restarts <- 0 while (diff > epsilon & iter < maxit) { if (arbvar) { z = matrix(nrow = n, ncol = k) for (i in 1:n) { for (j in 1:k) { z.denom = c() for (m in 1:k) { z.denom = c(z.denom, lambda[m]/lambda[j] * (det(sigma[[j]])/det(sigma[[m]]))^(0.5) * exp(-0.5 * ((x[i, ] - mu[[m]]) %*% solve(sigma[[m]]) %*% t(t(x[i, ] - mu[[m]])) - (x[i, ] - mu[[j]]) %*% solve(sigma[[j]]) %*% t(t(x[i, ] - mu[[j]]))))) } z[i, j] = 1/sum(z.denom) } } z = z/apply(z,1,sum) # z[,k]=1-apply(as.matrix(z[,(1:(k-1))]),1,sum) sing <- sum(is.nan(z)) lambda.new <- apply(z, 2, mean) if (sum(lambda.new < 1e-08)>0 || is.na(sum(lambda.new))) { sing <- 1 } else { if(arbmean==FALSE) { mu.new <- lapply(1:k, function(j) sapply(1:p, function(i) apply(z * x[, i], 2, sum))[j, ]) mu.new <- apply(sapply(mu.new,as.vector),1,sum)/n mu.new <- lapply(1:k, function(j) mu.new) } else{ mu.new <- lapply(1:k, function(j) sapply(1:p, function(i) apply(z * x[, i], 2, sum))[j, ]/sum(z[, j])) } sigma.new <- lapply(1:k, function(j) matrix(apply(sapply(1:n, function(i) z[i, j] * (x[i, ] - mu.new[[j]]) %*% t(x[i, ] - mu.new[[j]])), 1, sum), p, p)/sum(z[, j])) lambda <- lambda.new mu <- mu.new sigma <- sigma.new comp <- lapply(1:k, function(i) lambda[i] * dmvnorm(x, mu[[i]], sigma[[i]])) comp <- sapply(comp, cbind) compsum <- apply(comp, 1, sum) newobsloglik <- sum(log(compsum)) } } else { z = matrix(nrow = n, ncol = k) sigma.inv = solve(sigma) for (i in 1:n) { for (j in 1:k) { z.denom = c() for (m in 1:k) { z.denom = c(z.denom, lambda[m]/lambda[j] * (det(sigma.inv)/det(sigma.inv))^(0.5) * exp(-0.5 * ((x[i, ] - mu[[m]]) %*% sigma.inv %*% t(t(x[i, ] - mu[[m]])) - (x[i, ] - mu[[j]]) %*% sigma.inv %*% t(t(x[i, ] - mu[[j]]))))) } z[i, j] = 1/sum(z.denom) } } # z[,k]=1-apply(as.matrix(z[,(1:(k-1))]),1,sum) z = z/apply(z,1,sum) sing <- sum(is.nan(z)) lambda.new <- apply(z, 2, mean) if (sum(lambda.new < 1e-08)>0 || is.na(sum(lambda.new))) { sing <- 1 } else { if(arbmean==FALSE) { mu.new <- lapply(1:k, function(j) sapply(1:p, function(i) apply(z * x[, i], 2, sum))[j, ]) mu.new <- apply(sapply(mu.new,as.vector),1,sum)/n mu.new <- lapply(1:k, function(j) mu.new) } else{ mu.new <- lapply(1:k, function(j) sapply(1:p, function(i) apply(z * x[, i], 2, sum))[j, ]/sum(z[, j])) } temp.sig <- lapply(1:k, function(j) matrix(apply(sapply(1:n, function(i) z[i, j] * (x[i, ] - mu.new[[j]]) %*% t(x[i, ] - mu.new[[j]])), 1, sum), p, p)) sigma.new <- matrix(apply(sapply(temp.sig, as.vector), 1, sum), p, p)/n lambda <- lambda.new mu <- mu.new sigma <- sigma.new comp <- lapply(1:k, function(i) lambda[i] * dmvnorm(x, mu[[i]], sigma)) comp <- sapply(comp, cbind) compsum <- apply(comp, 1, sum) newobsloglik <- sum(log(compsum)) } } if (sing > 0 || is.na(newobsloglik) || abs(newobsloglik) == Inf){# || sum(z) != n) { cat("Need new starting values due to singularity...", "\n") restarts <- restarts + 1 if(restarts>15) stop("Too many tries!") tmp <- mvnormalmix.init(x = x, k = k, arbmean=arbmean, arbvar = arbvar) lambda <- tmp$lambda mu <- tmp$mu sigma <- tmp$sigma k = tmp$k diff <- 1 iter <- 0 if (arbvar) { comp <- lapply(1:k, function(i) lambda[i] * dmvnorm(x, mu[[i]], sigma[[i]])) } else comp <- lapply(1:k, function(i) lambda[i] * dmvnorm(x, mu[[i]], sigma)) comp <- sapply(comp, cbind) compsum <- apply(comp, 1, sum) obsloglik <- sum(log(compsum)) ll <- obsloglik } else { diff <- newobsloglik - obsloglik obsloglik <- newobsloglik ll <- c(ll, obsloglik) iter <- iter + 1 if (verb) { cat("iteration=", iter, "diff=", diff, "log-likelihood", obsloglik, "\n") } } } if(arbmean==FALSE) { mu = mu[[1]] } if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) cat("number of iterations=", iter, "\n") a=list(x=x, lambda = lambda, mu = mu, sigma = sigma, loglik = obsloglik, posterior = z, all.loglik=ll, restarts=restarts, ft="mvnormalmixEM") class(a) = "mixEM" a } mixtools/R/postbeta.R0000755000175100001440000000347611665556372014350 0ustar hornikuserspost.beta <- function(y, x, p.beta, p.z) { N = length(y) k = ncol(p.z) g = apply(p.z, 1, function(i) (1:length(i))[i == max(i)]) min.int=min(sapply(1:N, function(i) min(p.beta[[i]][1,]))) max.int=max(sapply(1:N, function(i) max(p.beta[[i]][1,]))) min.slp=min(sapply(1:N, function(i) min(p.beta[[i]][2,]))) max.slp=max(sapply(1:N, function(i) max(p.beta[[i]][2,]))) par(mfrow=c(2,2)) #All posterior regression lines. plot(c(min(sapply(x,min)),max(sapply(x,max))),c(min(sapply(y,min)),max(sapply(y,max))),type="n",xlab="x-values",ylab="y-values",main="Data and Posterior Regression Lines") sapply(1:length(x),function(i) points(x[[i]], y[[i]])) for(j in 1:k){ sapply(1:length(p.beta), function(i) abline(coef=p.beta[[i]][,j], col=(j+1))) } #Posterior regression lines chosen according to the membership probabilities. plot(c(min(sapply(x,min)),max(sapply(x,max))),c(min(sapply(y,min)),max(sapply(y,max))),type="n",xlab="x-values",ylab="y-values",main="Data and Most Probable Posterior Regression Lines") sapply(1:length(x),function(i) points(x[[i]], y[[i]])) sapply(1:length(p.beta), function(i) abline(coef=p.beta[[i]][,g[i]], col=(g[i]+1))) #All posterior beta values. plot(c(min.int,max.int),c(min.slp,max.slp),type="n",xlab="Posterior Intercepts",ylab="Posterior Slopes",main="All Posterior Regression Coefficients") for(j in 1:k){ sapply(1:length(p.beta), function(i) points(t(p.beta[[i]][,j]), col=(j+1))) } #Posterior beta values chosen according to the membership probabilities. min.max=c(min(sapply(p.beta,min)),max(sapply(p.beta,max))) plot(c(min.int,max.int),c(min.slp,max.slp),type="n",xlab="Posterior Intercepts",ylab="Posterior Slopes",main="Most Probable Posterior Regression Coefficients") sapply(1:length(p.beta), function(i) points(t(p.beta[[i]][,g[i]]), col=(g[i]+1))) } mixtools/R/lambda.R0000755000175100001440000000152011665556372013733 0ustar hornikuserslambda=function (z, x, xi, h = NULL, kernel = c("Gaussian", "Beta", "Triangle", "Cosinus", "Optcosinus"), g = 0) { if (is.null(h)) { cat("WARNING! BANDWIDTH MUST BE SPECIFIED!", "\n") } X.mat=cbind(1,(xi-x)) kernel <- match.arg(kernel) inwindow <- (abs((xi - x)/h) <= 1) if (kernel == "Gaussian") { W=(kern.G(x, xi, h) * inwindow) } else if (kernel == "Beta") { W=(kern.B(x, xi, h, g) * inwindow) } else if (kernel == "Triangle") { W=(kern.T(x, xi, h) * inwindow) } else if (kernel == "Cosinus") { W=(kern.C(x, xi, h) * inwindow) } else if (kernel == "Optcosinus") { W=(kern.O(x, xi, h) * inwindow) } A=try(solve(t(X.mat)%*%(W*X.mat)), silent=TRUE) if(class(A)=="try-error") { A=ginv(t(X.mat)%*%(W*X.mat)) } beta.x=A%*%t(X.mat)%*%(W*z) beta.x }mixtools/R/logisregmixinit.R0000755000175100001440000000141111665556372015727 0ustar hornikuserslogisregmix.init <- function(y, x, N, lambda = NULL, beta = NULL, k = 2){ x <- as.matrix(x) n <- length(y) p <- ncol(x) w = cbind(y, N, x) w = w[order(w[, 1]), ] w.bin = list() for(j in 1:k){ w.bin[[j]] <- w[max(1,floor((j-1)*n/k)):ceiling(j*n/k),] } if(is.null(beta)){ beta.hyp = matrix(sapply(1:k, function(j) glm.fit(w.bin[[j]][,3:(p+2)],w.bin[[j]][,1:2],family=binomial())$coef),ncol=k) sd.hyp = apply(beta.hyp,1,sd) beta = matrix(0, p, k) for(j in 1:k){ beta[,j] = rnorm(p,mean=as.vector(beta.hyp[,j]),sd=sd.hyp) } } else k=ncol(beta) if (is.null(lambda)) { lambda = runif(k) lambda = lambda/sum(lambda) } else k = length(lambda) list(lambda=lambda, beta=beta, k=k) }mixtools/R/segregmixEM.R0000755000175100001440000003010112112161112014670 0ustar hornikuserssegregmixEM=function (y, x, lambda = NULL, beta = NULL, sigma = NULL, k = 2, seg.Z, psi, psi.locs = NULL, delta = NULL, epsilon = 1e-08, maxit = 10000, verb = FALSE, max.restarts=15) { if (sum(x[,1]==1)==nrow(x)) x=x[,-1] x=data.frame(x) col.names.x <- colnames(x) xnam <- colnames(x) fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))) if(!is.null(psi.locs)){ psi.counts=apply(psi,1,sum) for(i in 1:k){ if(psi.counts[i]>0){ TEMP <- (is.list(psi.locs[[i]]))&(length(psi.locs[[i]])==sum(psi[i,]>0)) } else{ TEMP <- is.null(psi.locs[[i]]) } if(TEMP==FALSE) stop(paste("You must specify a correct changepoint structure!", "\n")) } } if (!is.null(delta)) { cat("Estimation performed assuming the changepoints are known.", "\n") if (is.null(psi.locs)) { stop(paste("You must specify the changepoints for this setting!", "\n")) } } if ((length(seg.Z) != k) | class(seg.Z) != "list") { stop(paste("You must specify a list of length k for the segmented relationships!", "\n")) } if (!identical(all.equal(dim(psi),c(k,ncol(x))),TRUE)) { stop(paste("You must specify a matrix with the correct dimension for psi!", "\n")) } if (((length(psi.locs) != k) | class(psi.locs) != "list") & !is.null(psi.locs)) { stop(paste("You must specify a list of length k for the number of changepoints per predictor in each component!", "\n")) } tot.cp <- apply(psi,1,sum) tmp.ind=1 tmp <- try(suppressWarnings(segregmix.init(y=y, x=x, lambda = lambda, beta = beta, s = sigma, k = k, seg.Z=seg.Z, psi=psi, psi.locs = psi.locs)),silent=TRUE) if(class(tmp)=="try-error"){ cat("Generating new initial values.", "\n") while(tmp.ind<=10){ tmp <- try(suppressWarnings(segregmix.init(y=y, x=x, lambda = NULL, beta = NULL, s = NULL, k = k, seg.Z=seg.Z, psi=psi, psi.locs = NULL)),silent=TRUE) tmp.ind <- tmp.ind+1 if(tmp.ind==11) stop(paste("Had to reinitialize algorithm too many times. Reconsider specified model.", "\n")) if(class(tmp)!="try-error") tmp.ind=20 } } x.old=x x = cbind(1, x) data.x=cbind(y,x) lambda <- tmp$lambda beta <- tmp$beta s <- tmp$s k <- tmp$k psi.locs <- tmp$psi.locs sing <- 0 perms=perm(k,k) perm.ind=nrow(perms) if (is.null(delta)) delta <- lapply(1:k,function(i) NULL) n <- length(y) diff <- 1 iter <- 0 X.aug <- lapply(1:k, function(i) cbind(1,aug.x(x[,-1],unlist(psi.locs[[i]]),psi[i,],delta=delta[[i]]))) X.aug.old <- X.aug psi.locs.old <- psi.locs xbeta <- lapply(1:k, function(i) X.aug[[i]] %*% matrix(beta[[i]],ncol=1)) res <- sapply(1:k, function(i) as.numeric((y - xbeta[[i]])^2)) comp <- t((lambda/sqrt(2 * pi * s^2)) * t(exp(-t(t(res)/(2 * s^2))))) obsloglik <- sum(log(apply(comp, 1, sum))) ll <- obsloglik z = matrix(nrow = n, ncol = k) restarts <- 0 while (diff > epsilon && iter < maxit) { null.beta=0 lambda.old <- lambda beta.old <- beta s.old <- s for (i in 1:n) { for (j in 1:k) { z.denom = c() for (h in 1:k) { z.denom = c(z.denom, (lambda[h]/lambda[j]) * (s[j]/s[h]) * exp(-0.5 * ((1/s[h]^2) * res[i, h] - (1/s[j]^2) * res[i, j]))) } z[i, j] = 1/sum(z.denom) } } z = z/apply(z, 1, sum) z[,k] = 1-apply(as.matrix(z[,-k]),1,sum) z<-round(z,15) z.old <- z lambda.new <- apply(z, 2, mean) if (sum(lambda.new < 1e-08) > 0 || is.na(sum(lambda.new))) { sing <- 1 } else { lm.out <- vector("list",k) psi.temp=psi.locs psi.ind=lapply(1:k,function(i) which(psi[i,]!=0)) for(i in 1:k){ if(is.null(seg.Z[[i]]) | (sum(1-sapply(delta,is.null))>0)){ temp.seg <- lm(fmla,data=data.x,weights=z[,i]) } else temp.seg <- try(suppressWarnings(segmented(lm(fmla,data=data.x,weights=z[,i]),seg.Z=seg.Z[[i]],psi=psi.temp[[i]])),silent=TRUE) if(class(temp.seg)[1]=="try-error"){ seq = 1 temp.names = names(psi.locs.old[[i]]) while(seq < 20){ psi.temp2 <- vector("list",length(psi.temp[[i]])) for(ii in 1:length(psi.temp[[i]])){ x.range <- range(data.x[,which(names(data.x)==temp.names[ii])]) psi.temp2[[ii]] <- psi.temp[[i]][[ii]]+sample(c(-1,1),length(psi.temp[[i]][[ii]]),replace=TRUE)*runif(length(psi.temp[[i]][[ii]]),0,diff(x.range)/10) if((any(psi.temp2[[ii]]<=x.range[1]))|(any(psi.temp2[[ii]]>=x.range[2]))) psi.temp2[[ii]]=psi.temp[[i]][[ii]] psi.temp2[[ii]]=sort(psi.temp2[[ii]]) } names(psi.temp2)=temp.names temp.seg <- try(suppressWarnings(segmented(lm(fmla,data=data.x,weights=z[,i]),seg.Z=seg.Z[[i]],psi=psi.temp2[[i]],control=seg.control(it.max=1))),silent=TRUE) if(class(temp.seg)[1]=="try-error"){ seq = seq+1 } else seq=40 } if(seq!=40){ temp.seg <- try(suppressWarnings(segmented(lm(fmla,data=data.x,weights=z[,i]),seg.Z=seg.Z[[i]],psi=psi.temp[[i]],control=seg.control(it.max=1))),silent=TRUE) } } lm.out[[i]]=temp.seg } lambda <- lambda.new if(sum(sapply(lm.out,class)=="try-error")>0){ newobsloglik=-Inf } else{ if(sum(1-sapply(delta,is.null))>0){ psi.new <- psi.locs.old } else { psi.new <- psi.locs for(i in 1:k){ if(class(lm.out[[i]])[1]=="segmented"){ temp.names=names(psi.locs[[i]]) temp.cumsum=cumsum(sapply(psi.locs[[i]],length)) TC.ind = length(temp.cumsum) seg.temp = lm.out[[i]]$psi[,2] psi.new[[i]] = lapply(1:length(psi.locs[[i]]), function(j) as.numeric(lm.out[[i]]$psi[,2])) psi.new[[i]] = vector("list",TC.ind) psi.new[[i]][[1]]=sort(seg.temp[1:temp.cumsum[1]]) if(TC.ind>1) for(j in 2:TC.ind) psi.new[[i]][[j]] = sort(seg.temp[(temp.cumsum[j-1]+1):temp.cumsum[j]]) names(psi.new[[i]])=temp.names } } } X.aug.new <- lapply(1:k, function(i) cbind(1,aug.x(x[,-1],unlist(psi.new[[i]]),psi[i,],delta[[i]]))) lm.out2=lapply(1:perm.ind, function(j) lapply(1:k, function(i) lm(y~X.aug.new[[i]][,-1],weights=z[,perms[j,i]]))) beta.new <- lapply(1:perm.ind, function(j) lapply(lm.out2[[j]],coef)) null.perms <- sapply(1:perm.ind,function(i) all(!is.na(lapply(beta.new,unlist)[[i]]))) null.beta=0 if(sum(null.perms)>0){ xbeta.new <- lapply(1:perm.ind, function(j) lapply(1:k, function(i) X.aug.new[[i]] %*% matrix(beta.new[[j]][[i]],ncol=1))) res <- lapply(1:perm.ind, function(j) sapply(1:k, function(i) (y - xbeta.new[[j]][[i]])^2)) s.new <- lapply(1:perm.ind, function(j) sqrt(sapply(1:k, function(i) sum(z[,perms[j,i]] * (res[[j]][, i]))/sum(z[,perms[j,i]])))) comp <- lapply(1:perm.ind, function(j) lapply(1:k, function(i) lambda.new[i] * dnorm(y, xbeta.new[[j]][[i]], s.new[[j]][i]))) comp <- lapply(1:perm.ind, function(j) sapply(comp[[j]], cbind)) compsum <- lapply(1:perm.ind, function(j) apply(comp[[j]], 1, sum)) newobsloglik <- sapply(1:perm.ind, function(j) sum(log(compsum[[j]]))) newobsloglik[c(1-null.perms)]=-Inf IND <- which.max(newobsloglik) z = z[,perms[IND,]] lambda.new <- apply(z, 2, mean) lambda <- lambda.new beta <- beta.new[[IND]] xbeta <- xbeta.new[[IND]] res <- res[[IND]] X.aug <- X.aug.old s <- s.new[[IND]] psi.locs <- psi.new sing <- sum(s < 1e-08) newobsloglik <- newobsloglik[IND] } else{ newobsloglik=Inf null.beta=1 } } if((newobsloglik0){ xbeta.new <- lapply(1:perm.ind, function(j) lapply(1:k, function(i) X.aug.old[[i]] %*% matrix(beta.new[[j]][[i]],ncol=1))) res <- lapply(1:perm.ind, function(j) sapply(1:k, function(i) (y - xbeta.new[[j]][[i]])^2)) s.new <- lapply(1:perm.ind, function(j) sqrt(sapply(1:k, function(i) sum(z[,perms[j,i]] * (res[[j]][, i]))/sum(z[,perms[j,i]])))) comp <- lapply(1:perm.ind, function(j) lapply(1:k, function(i) lambda.new[i] * dnorm(y, xbeta.new[[j]][[i]], s.new[[j]][i]))) comp <- lapply(1:perm.ind, function(j) sapply(comp[[j]], cbind)) compsum <- lapply(1:perm.ind, function(j) apply(comp[[j]], 1, sum)) newobsloglik <- sapply(1:perm.ind, function(j) sum(log(compsum[[j]]))) newobsloglik[c(1-null.perms)]=-Inf IND <- which.max(newobsloglik) z = z[,perms[IND,]] lambda.new <- apply(z, 2, mean) lambda <- lambda.new beta <- beta.new[[IND]] xbeta <- xbeta.new[[IND]] res <- res[[IND]] X.aug <- X.aug.old s <- s.new[[IND]] psi.locs <- psi.locs.old sing <- sum(s < 1e-08) newobsloglik <- newobsloglik[IND] } else{ newobsloglik=Inf sing=1 } } if(newobsloglik 0 || is.na(newobsloglik) || abs(newobsloglik) == Inf) { cat("Need new starting values due to singularity...", "\n") restarts <- restarts + 1 if (restarts > max.restarts) stop("Too many tries!") tmp.ind=1 while(tmp.ind==1){ if(sum(1-sapply(delta,is.null))>0) psi.temp=psi.locs tmp <- try(suppressWarnings(segregmix.init(y=y, x=x.old, lambda = NULL, beta = NULL, s = NULL, k = k, seg.Z=seg.Z, psi=psi, psi.locs = NULL)),silent=TRUE) if(class(tmp)!="try-error") tmp.ind=2 } lambda <- tmp$lambda beta <- tmp$beta s <- tmp$s k <- tmp$k psi.locs <- tmp$psi.locs n <- length(y) diff <- 1 iter <- 0 X.aug <- lapply(1:k, function(i) cbind(1,aug.x(x[,-1],unlist(psi.locs[[i]]),psi[i,],delta[[i]]))) xbeta <- lapply(1:k, function(i) X.aug[[i]] %*% matrix(beta[[i]],ncol=1)) res <- sapply(1:k, function(i) as.numeric((y - xbeta[[i]])^2)) comp <- t((lambda/sqrt(2 * pi * s^2)) * t(exp(-t(t(res)/(2 * s^2))))) obsloglik <- sum(log(apply(comp, 1, sum))) ll <- obsloglik } else { diff <- newobsloglik - obsloglik obsloglik <- newobsloglik ll <- c(ll, obsloglik) X.aug.old <- X.aug psi.locs.old <- psi.locs iter <- iter + 1 if (verb) { cat("iteration =", iter, "diff =", diff, "log-likelihood =", obsloglik, "\n") } } } if (iter == maxit) { warning("Maximum number of iterations reached.", call. = FALSE) } if (iter == 1) { cat("Converged in 1 iteration. Consider rerunning with different starting values or smaller stopping criterion.", "\n") } cat("number of iterations=", iter, "\n") names(delta) <- c(paste("comp", ".", 1:k, sep = "")) names(seg.Z) <- c(paste("comp", ".", 1:k, sep = "")) names(psi.locs) <- c(paste("comp", ".", 1:k, sep = "")) names(beta) <- c(paste("comp", ".", 1:k, sep = "")) for(i in 1:k){ names(beta[[i]])[1]="(Intercept)" names(beta[[i]])[2:ncol(x)]=colnames(x)[-1] if(!is.null(psi.locs[[i]])){ for(j in 1:ncol(psi)){ if(psi[i,j]>0 & j==1){ names(beta[[i]])[(ncol(x)+1):(ncol(x)+cumsum(psi[i,])[j])]=c(paste(colnames(x)[j+1], ".", 1:psi[i,j], sep = "")) } else if(psi[i,j]>0) names(beta[[i]])[(ncol(x)+cumsum(psi[i,])[j-1]+1):(ncol(x)+cumsum(psi[i,])[j])]=c(paste(colnames(x)[j+1], ".", 1:psi[i,j], sep = "")) } } } colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) a = list(x = x, y = y, lambda = lambda, beta = beta, sigma = s, seg.Z = seg.Z, psi.locs = psi.locs, delta = delta, loglik = obsloglik, posterior = z, all.loglik = ll, restarts = restarts, ft = "segregmixEM") class(a) = "mixEM" a }mixtools/R/poisregmixinit.R0000755000175100001440000000137611665556372015576 0ustar hornikuserspoisregmix.init <- function(y, x, lambda = NULL, beta = NULL, k = 2){ x <- as.matrix(x) n <- length(y) p <- ncol(x) w = cbind(y, x) w = w[order(w[, 1]), ] w.bin = list() for(j in 1:k){ w.bin[[j]] <- w[max(1,floor((j-1)*n/k)):ceiling(j*n/k),] } if(is.null(beta)){ beta.hyp = matrix(sapply(1:k, function(j) glm.fit(w.bin[[j]][,2:(p+1)],w.bin[[j]][,1],family=poisson())$coeff),ncol=k) sd.hyp = apply(beta.hyp,1,sd) beta = matrix(0, p, k) for(j in 1:k){ beta[,j] = rnorm(p,mean=as.vector(beta.hyp[,j]),sd=sd.hyp) } } else k=ncol(beta) if (is.null(lambda)) { lambda = runif(k) lambda = lambda/sum(lambda) } else k = length(lambda) list(lambda=lambda, beta=beta, k=k) }mixtools/R/dmvnorm.R0000755000175100001440000000177511665556372014211 0ustar hornikusers# Alternative version of dmvnorm to eliminate dependence of mixtools # on additional package 'mvtnorm' # Written (hopefully) to be more efficient than mvtnorm version, which uses both # a call to "eigen" and a call to "mahalanobis", by using only a single # call to the more efficient "qr" (read "Note" under ?qr) # Note: These functions assume that each ROW of y is a separate position vector. # i.e., y is assumed to be nxd, where d=dimension dmvnorm <- function(y, mu=NULL, sigma=NULL) { exp(logdmvnorm(y, mu=mu, sigma=sigma)) } logdmvnorm <- function(y, mu=NULL, sigma=NULL) { if (is.vector(y)) y <- matrix(y, nrow=1) d <- ncol(y) if (!is.null(mu)) y <- sweep(y, 2, mu, '-') if (is.null(sigma)) sigma <- diag(d) k <- d * 1.8378770664093454836 # that constant is log(2*pi) a <- qr(sigma) logdet <- sum(log(abs(diag(a$qr)))) if(nrow(y)==1) mahaldist <- as.vector(y %*% qr.solve(a,t(y))) else mahaldist <- rowSums((y %*% qr.solve(a)) * y) -0.5*(mahaldist + logdet + k) } mixtools/R/hmeEM.R0000755000175100001440000001164211665556372013514 0ustar hornikusershmeEM <- function (y, x, lambda=NULL, beta = NULL, sigma = NULL, w = NULL, k = 2, addintercept = TRUE, epsilon = 1e-08, maxit = 10000, verb=FALSE) { NR <- function (w, x, z) { A = (inv.logit(x %*% w)/(1 + exp(x %*% w)))^-1 B = z[,1]-inv.logit(x %*% w) C = matrix(c(sum(B),sum(x[,2]*B)),2,1) D = matrix(nrow=2,ncol=nrow(x)) D = solve(matrix(c(sum(A),sum(A * x[,2]),sum(A * x[,2]),sum(A * x[,2]^2)),nrow=2,ncol=2)) E = w + apply(D %*% C, 1, sum) list(w.new = E) } if (k != 2) cat("This algorithm currently only works for a 2-component mixture-of-experts model!") s=sigma if (addintercept) { x = cbind(1, x) } n <- length(y) p <- ncol(x) if (is.null(w)) { w = rep(0,p*(k-1)) } tmp <- regmix.init(y = y, x = x, beta = beta, s = s, k = k, addintercept = addintercept) beta = tmp$beta s = tmp$s k = tmp$k if(is.null(lambda)) lambda = inv.logit(x %*% w) diff <- 1 iter <- 0 nlogroot2pi = n * log(sqrt(2 * pi)) xbeta <- x %*% beta tmp <- t(-1/2/s[2]^2 * t(y - xbeta[, -1])^2) + 1/2/s[1]^2 * (y - xbeta[, 1])^2 tmp2 <- (1-lambda)/s[2] * s[1]/lambda tmp3 <- log(1 + (tmp2 * exp(tmp))) obsloglik <- sum(log(lambda)) - nlogroot2pi - n * log(s[1]) - 1/2/s[1]^2 * sum((y - xbeta[, 1])^2) + sum(tmp3) ll <- obsloglik z = matrix(nrow = n, ncol = k) restarts <- 0 while (diff > epsilon & iter < maxit) { lambda.mat <- cbind(lambda,1-lambda) res <- (y - xbeta)^2 for (i in 1:n) { for (j in 1:k) { z.denom = c() for (h in 1:k) { z.denom = c(z.denom, (lambda.mat[i,h]/lambda.mat[i,j]) * (s[j]/s[h]) * exp(-0.5 * ((1/s[h]^2) * res[i, h] - (1/s[j]^2) * res[i, j]))) } z[i, j] = 1/sum(z.denom) } } # z[, k] = 1 - apply(as.matrix(z[, (1:(k - 1))]), 1, sum) z = z/apply(z,1,sum) if (addintercept) { lm.out <- lapply(1:k, function(i) lm(y ~ x[, -1], weights = z[, i])) } else lm.out <- lapply(1:k, function(i) lm(y ~ x - 1, weights = z[, i])) beta.new <- sapply(lm.out, coef) w.diff=10 while(sum(abs(w.diff))>(p*.001)){ w.temp <- NR(w,x,z)$w.new w.diff <- w-w.temp w <- w.temp } w.new <- w lambda.new <- inv.logit(x %*% w.new) xbeta.new <- x %*% beta.new res <- (y - xbeta.new)^2 s.new <- sqrt(sapply(1:k, function(i) sum(z[,i] * (res[, i]))/sum(z[, i]))) sing <- sum(s.new < 1e-08) lambda <- lambda.new beta <- beta.new s <- s.new w <- w.new xbeta <- xbeta.new tmp <- t(-1/2/s[2]^2 * t(y - xbeta[, -1])^2) + 1/2/s[1]^2 * (y - xbeta[, 1])^2 tmp2 <- (1-lambda)/s[2] * s[1]/lambda tmp3 <- log(1 + (tmp2 * exp(tmp))) newobsloglik <- sum(log(lambda)) - nlogroot2pi - n * log(s[1]) - 1/2/s[1]^2 * sum((y - xbeta[, 1])^2) + sum(tmp3) if (sing > 0 || is.na(newobsloglik) || newobsloglik < obsloglik || abs(newobsloglik) == Inf){# || sum(z) != n) { cat("Need new starting values due to singularity...", "\n") restarts <- restarts + 1 if (restarts > 15) stop("Too many tries!") tmp <- regmix.init(y = y, x = x, k = k, addintercept = addintercept) beta = tmp$beta s = tmp$s k = tmp$k w = rep(0,p*(k-1)) lambda = inv.logit(x %*% w) diff <- 1 iter <- 0 xbeta <- x %*% beta tmp <- t(-1/2/s[2]^2 * t(y - xbeta[, -1])^2) + 1/2/s[1]^2 * (y - xbeta[, 1])^2 tmp2 <- (1-lambda)/s[2] * s[1]/lambda tmp3 <- log(1 + (tmp2 * exp(tmp))) obsloglik <- sum(log(lambda)) - nlogroot2pi - n * log(s[1]) - 1/2/s[1]^2 * sum((y - xbeta[, 1])^2) + sum(tmp3) ll <- obsloglik } else{ diff <- newobsloglik - obsloglik obsloglik <- newobsloglik ll <- c(ll, obsloglik) iter <- iter + 1 if (verb) { cat("iteration=", iter, "diff=", diff, "log-likelihood", obsloglik, "\n")} } } if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } cat("number of iterations=", iter, "\n") rownames(beta) <- c(paste("beta", ".", 0:(p - 1), sep = "")) colnames(beta) <- c(paste("comp", ".", 1:k, sep = "")) colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) a = list(x = x, y = y, w=w, lambda = cbind(lambda,1-lambda), beta = beta, sigma = s, loglik = obsloglik, posterior = z, all.loglik = ll, restarts = restarts, ft = "regmixEM") class(a) = "mixEM" a } mixtools/R/multmixEM.R0000755000175100001440000000643313060302061014413 0ustar hornikusersmultmixEM <- function (y, lambda = NULL, theta = NULL, k = 2, maxit = 10000, epsilon = 1e-08, verb = FALSE) { if (class(y)=="list" && !is.null(y$y)) { y <- y$y } n <- nrow(y) p <- ncol(y) m <- colSums(y) r <- rowSums(y) # These need not all be the same tmp <- multmix.init(y=y, lambda=lambda, theta=theta, k=k) lambda <- tmp$lambda theta <- tmp$theta k <- tmp$k restarts<-0 mustrestart <- FALSE llconstant <- sum(lgamma(r+1)) - sum(lgamma(y+1)) while (restarts < 50) { ll <- NULL iter <- 0 diff <- epsilon+1 # to ensure entering main EM loop # Normalize rows of theta matrix theta <- theta/rowSums(theta) theta <- pmax(theta, 1e-100) # ensure no zeros # preparatory E-step prior to entering main EM loop loglamcd <- log(lambda) + log(theta) %*% t(y) # kxn matrix of log(lambda * component densities) z <- .C(C_multinompost, as.integer(n), as.integer(k), as.double(loglamcd), post=double(n*k), loglik=as.double(llconstant), PACKAGE = "mixtools") post <- matrix(z$post, ncol=k) newll <- z$loglik tmp.post <- (post==0) if(any(apply(tmp.post,2,sum)==n)){ diff <- epsilon mustrestart <- TRUE } while ((iter < maxit) && diff > epsilon) { # main EM loop iter <- iter + 1 oldll <- newll ll <- c(ll, oldll) # M-step: First update theta values (proportional to sum of posteriors * data) theta <- t(post) %*% y theta <- theta/rowSums(theta) theta <- pmax(theta, 1e-100) # ensure no zeros # M-step: Update the lambdas as usual for a finite mixture lambda <- colMeans(post) # E-step: prepare to find posteriors using C function loglamcd <- log(lambda) + log(theta) %*% t(y) # kxn matrix of log(lambda * component densities) # E-step: Call C function to return nxk matrix of posteriors along with loglikelihood z <- .C(C_multinompost, as.integer(n), as.integer(k), as.double(loglamcd), post=double(n*k), loglik=as.double(llconstant), PACKAGE = "mixtools") post <- matrix(z$post, ncol=k) newll <- z$loglik diff <- newll - oldll if (diff<0 || is.na(newll) || is.infinite(newll) || is.nan(newll)) { mustrestart <- TRUE break } if (verb) { cat("iteration=", iter, "diff=", diff, "log-likelihood", ll[iter], "lambda", lambda, "\n") } } if (mustrestart) { cat("Restarting due to numerical problem.\n") mustrestart <- FALSE restarts <- restarts + 1 tmp <- multmix.init(y=y, k=k) lambda <- tmp$lambda theta <- tmp$theta k <- tmp$k } else { if (iter == maxit) { cat("Warning: Not convergent after", maxit, "iterations\n") } theta[,p] <- 1-apply(as.matrix(theta[,1:(p-1)]),1,sum) colnames(theta) <- c(paste("theta", ".", 1:p, sep = "")) rownames(theta) <- c(paste("comp", ".", 1:k, sep = "")) colnames(post) <- c(paste("comp", ".", 1:k, sep = "")) cat("number of iterations=", iter, "\n") out <-list(y=y, lambda = lambda, theta = theta, loglik = ll[length(ll)], posterior = post, all.loglik=ll, restarts=restarts, ft="multmixEM") class(out) <- "mixEM" return(out) } } stop("Too many restarts!") } mixtools/R/ellipse.R0000755000175100001440000000067111665556372014156 0ustar hornikusersellipse <- function(mu, sigma, alpha=.05, npoints=250, newplot=FALSE, draw=TRUE, ...) { es <- eigen(sigma) e1 <- es$vec%*%diag(sqrt(es$val)) r1 <- sqrt(qchisq(1-alpha,2)) theta <- seq(0,2*pi,len=npoints) v1 <- cbind(r1*cos(theta),r1*sin(theta)) pts=t(mu-(e1%*%t(v1))) if (newplot && draw) { plot(pts, ...) } else if (!newplot && draw) { lines(pts, ...) } invisible(pts) } mixtools/R/expReliabilityMixEM.R0000644000175100001440000001231213055603106016356 0ustar hornikusers# code for Reliability Mixture Models (RMM) with Censored data # D. Chauveau # ref: Bordes L. and Chauveau D. Computational Statistics (2016) # Simulate from an exponential mixture. # lambda = vector of component probabilities # rate = vector of component rates rexpmix <- function(n,lambda=1,rate=1) { m <- length(lambda) # nb of components z <- sample(m, n, replace = TRUE, prob = lambda) # component indicator rexp(n, rate = rate[z]) } # pdf of exponential mixture dexpmixt <- function(t,lam,rate){ m <- length(lam) f <- 0 for (j in 1:m) f <- f + lam[j]*dexp(t,rate=rate[j]) f } ############################################## ## EM algorithm for Reliability Mixture Models (RMM) with Censoring ## Parametric model, for ## univariate finite mixture of exponentials with right censoring # x = lifetime data, censored by random c if d is not NULL, in which case # x= min(x,c) and d = I(x <= c) # complete data may be (t,d,z) or (x,z), see option complete expRMM_EM <- function (x, d=NULL, lambda = NULL, rate = NULL, k = 2, complete="tdz", epsilon = 1e-08, maxit = 1000, verb = FALSE) { # warn <- options(warn=-1) # Turn off warnings # x <- as.vector(x) n <- length(x) if (!is.null(lambda)) k=length(lambda) if (!is.null(rate)) k=length(rate) # either should be define !!! if (is.null(d)) d <- rep(1,n) # simple EM for noncensored case xx <- matrix(x, nrow=n, ncol=k) # x repeated k times, used in E-steps dd <- matrix(d, nrow=n, ncol=k) # idem for d # init function call to do later, in case lambda = rate = NULL if (is.null(lambda)) lambda <- rep(1/k,k) if (is.null(rate)) rate <- rep(1,k) # to do : init.rate(k) # handle the 2 complete data models if (complete=="tdz") comptdz=TRUE else comptdz=FALSE # sequences for storing along iterations lambda_seq <- rate_seq <- matrix(0, nrow = maxit, ncol = k) lambda_seq[1,] <- lambda rate_seq[1,] <- rate loglik_seq <- NULL oldloglik <- -Inf # notdone <- TRUE # while(notdone) { # Initialize everything notdone <- FALSE dll <- epsilon+1 iter <- 1 post <- matrix(nrow = n, ncol = k) restarts <- 0 while (dll > epsilon && iter < maxit) { # EM iterations ### E-step ### rr <- matrix(rate, n, k, byrow=T) ll <- matrix(lambda, n, k, byrow=T) # handling censored & non-censored cases post <- ((ll*dexp(xx,rr))^dd)*((ll*(1-pexp(xx,rr)))^(1-dd)) rs <- rowSums(post) loglik <- sum(log(rs)) # loglik without the constant term # post normalized per row post <- sweep(post, 1, rs, "/") # posteriors p_{ij}^t 's ### M-step ### lambda <- colMeans(post) lambda_seq[iter+1, ] <- lambda if (comptdz) rate <- colSums(post*dd)/colSums(post*xx) # complete=(t,d,z) # rate <- colSums(post*d)/colSums(post*x) # gives same answer # cf automatic recycling if (!comptdz) { # complete data = (x,z) mean_xi <- matrix(1/rate, n, k, byrow=T) rate <- colSums(post)/colSums(post*(xx + (1-dd)*mean_xi)) # rate <- colSums(post)/colSums(post*(x + (1-d)*mean_xi)) # same answer } rate_seq[iter+1, ] <- rate dll <- loglik - oldloglik # = Inf for iter=0 1st time oldloglik <- loglik loglik_seq <- c(loglik_seq, loglik) if (verb) { cat("iteration", iter, " log-lik diff =", dll, " log-lik =", loglik, "\n") } iter <- iter + 1 } # end of EM loops over iterations if (iter == maxit) cat("WARNING! NOT CONVERGENT!", "\n") cat("number of iterations =", iter - 1, "\n") colnames(post) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=x, d=d, lambda = lambda, rate = rate, loglik = loglik, posterior = post, all.loglik=loglik_seq, all.lambda = lambda_seq[1:iter,], all.rate = rate_seq[1:iter,], # restarts=restarts, ft="expRMM_EM") class(a) = "mixEM" a } ################################################## # plot EM sequences from expRMM_EM: # color by components, one plot per parameter type # commented-out abline() usages are for true values for rate and lambda if available plotexpRMM <- function(a, title=NULL, rowstyle=TRUE, subtitle=NULL, ...) { n <- length(a$x); m <- dim(a$all.lambda)[2] pcc <- round(100*(1-mean(a$d)),2) sizes <- paste("n=",n,", ", pcc, "% censored", sep="") if (is.null(subtitle)) { subtitle <- paste("n=",n,", ", pcc, "% censored", sep="")} if (is.null(title)) { tt1 <- "Rate parameters" tt2 <- "Weight parameters" } else tt1 <- tt2 <- title lwdset <- 2 if (rowstyle) par(mfrow=c(1,2)) else par(mfrow=c(2,1)) plot(a$all.rate[,1], type="l", ylim=c(0,max(a$all.rate)), xlab="iterations", ylab="estimates", main=tt1, ...) title(sub=subtitle,cex.sub = 0.75) lgd <- expression(xi[1]); lcol <- 1 for (j in 2:m) { lines(a$all.rate[,j], col=j, ...) # abline(rate[j],0,col=j,lty=3) lgd <- c(lgd,substitute(xi[j])); lcol <- c(lcol,j) } legend("topright",lgd,col=lcol,lty=1,...) plot(a$all.lambda[,1], type="l", ylim=c(0,1), xlab="iterations", ylab="estimates", main=tt2, ...) title(sub=subtitle,cex.sub = 0.75) lgd <- expression(lambda[1]); lcol <- 1 if (m>2) { for (j in 2:m) { lines(a$all.lambda[,j], col=j, ...) lgd <- c(lgd,substitute(lambda[j])) lcol <- c(lcol,j) } } legend("topright",lgd,col=lcol,lty=1,...) } mixtools/R/rnormmix.R0000755000175100001440000000050611665556372014371 0ustar hornikusers# Simulate from a normal mixture. New version simply calls rmvnormmix. # normmix.sim is here for backwards compatibility rnormmix <- normmix.sim <- function(n,lambda=1,mu=0,sigma=1) { if (NCOL(mu)>1 || NCOL(sigma)>1) stop ("Use the rmvnormmix function instead.") as.vector(rmvnormmix(n,lambda,mu,sigma)) } mixtools/R/print.npEM.R0000755000175100001440000000077011665556372014513 0ustar hornikusersprint.npEM <- function(x, ...) { n <- NROW(x$data) r <- NCOL(x$data) m <- length(x$lambdahat) cat(paste("Observations:", n, "\n")) cat(paste("Coordinates per observation:", r, "\n")) cat(paste("Mixture components:", m, "\n")) if (r>1) { B <- max(x$blockid) cat(paste("Blocks (of conditionally iid coordinates):", B, "\n\n")) } dp = match(c("data","posteriors", "lambda", "mu"), names(x), nomatch=0) print.default(structure(x[-dp], class=class(x)), ...) invisible(x) } mixtools/R/wquantile.R0000755000175100001440000000066011665556372014530 0ustar hornikuserswquantile <- function(wt=rep(1,length(x)), x, probs, already.sorted=FALSE, already.normalized=FALSE) { if(!already.sorted) { wt <- wt[o<-order(x)] x <- x[o] } if(!already.normalized) { wt <- wt/sum(wt) } x[findInterval(probs,cumsum(wt))] } wIQR <- function(wt=rep(1,length(x)), x, already.sorted=FALSE, already.normalized=FALSE) { diff(wquantile(wt, x, c(.25,.75), already.sorted, already.normalized)) } mixtools/R/npEM.R0000644000175100001440000001265513060302143013332 0ustar hornikusers## EM-like algorithm for a nonparametric mixture model with ## independent repeated measures - some ID, some not npEMindrep <- # npEMindrep is an alias (only for backward compatibility) npEM <- function(x, mu0, blockid = 1:ncol(x), bw=bw.nrd0(as.vector(as.matrix(x))), samebw = TRUE, h=bw, eps=1e-8, maxiter=500, stochastic = FALSE, verb = TRUE){ bw <- h # h is alternative bandwidth argument, for backward compatibility x <- as.matrix(x) n <- nrow(x) # number of subjects r <- ncol(x) # number of measurements in each subject u <- match(blockid, unique(blockid)) if (is.matrix(mu0)) m <- dim(mu0)[1] # mu0=centers else m <- mu0 # mu0=number of clusters if(!samebw && !is.matrix(bw)) { bw <- matrix(bw, nrow=max(u), ncol=m) } z.hat <- matrix(0, nrow = n, ncol = m) tt0 <- proc.time() # for total time ## Initial Values if(m == 1) z.hat <- matrix(1, nrow = n, ncol = m) else{ kmeans <- kmeans(x, mu0) for(j in 1:m) z.hat[kmeans$cluster==j, j] <- 1 } iter <- 0 if (stochastic) { sumpost <- matrix(0, n, m) } finished <- FALSE lambda <- matrix(0, nrow = maxiter, ncol = m) loglik <- NULL orderx <- xx <- list() for(k in 1:max(u)) { xx[[k]] <- as.vector(x[, u==k]) if (!samebw) { orderx[[k]] = order(xx[[k]]) # only needed for IQR calculation for bw } } ### Cfunction <- ifelse(samebw, "KDErepeated", "KDErepeatedbw") while (!finished) { iter <- iter + 1 bw.old <- bw t0 <- proc.time() ## Note: Enter loop assuming E-step is done -- i.e., z.hat in place ## M-Step lambda[iter, ] <- colMeans(z.hat) ## density estimation step if (stochastic) { z <- t(apply(z.hat, 1, function(prob) rmultinom(1, 1, prob))) cs <- colSums(z) z.tmp <- sweep(z, 2, cs, "/") z.tmp[, cs==0] <- 1/NROW(z.tmp) # Just in case } else { cs <- colSums(z.hat) z.tmp <- sweep(z.hat, 2, cs, "/") z.tmp[, cs==0] <- 1/NROW(z.tmp) # Just in case } fkernel <- matrix(1, n, m) h <- bw # This is for samebw == TRUE for (k in 1:max(u)) { r2 <- sum(u == k) # block size if (!samebw) { wts <- apply(z.tmp, 2, function(z) rep(z/r2, r2)) variances <- colSums(wts * outer(xx[[k]], colSums(wts * xx[[k]]), '-')^2) iqr <- apply(as.matrix(wts[orderx[[k]],]), 2, wIQR, xx[[k]][orderx[[k]]], already.sorted=TRUE, already.normalized=TRUE) h <- bw[k, ] <- 0.9 * pmin(sqrt(variances), iqr/1.34) * pmax(1,r2*n*lambda[iter, ])^(-1/5) # Note: Doesn't allow "sample size" < 1. # browser() } if(samebw){ ans <- .C(C_KDErepeated, n = as.integer(n), m = as.integer(m), r = as.integer(r2), x = as.double(x[,u==k]), h = as.double(h), z = as.double(z.tmp), f = double(n*m), PACKAGE="mixtools") } else{ ans <- .C(C_KDErepeatedbw, n = as.integer(n), m = as.integer(m), r = as.integer(r2), x = as.double(x[,u==k]), h = as.double(h), z = as.double(z.tmp), f = double(n*m), PACKAGE="mixtools") } fkernel <- fkernel * matrix(ans$f, ncol = m) } lambda.f <- sweep(fkernel, 2, lambda[iter, ], "*") ## E-step (for next iteration) z.hat <- lambda.f/rowSums(lambda.f) loglik <- c(loglik,sum(log(rowSums(lambda.f)))) # log-likelihood finished <- iter >= maxiter if (stochastic) { sumpost <- sumpost + z.hat } else if (iter > 1) { # This convergence criterion may be too simplistic: maxchange <- max(abs(lambda[iter,] - lambda[iter-1,])) if (!samebw) maxchange <- max(maxchange, max(abs(bw.old - bw))) finished <- finished | (maxchange < eps) } if (verb) { t1 <- proc.time() cat("iteration", iter, " lambda ", round(lambda[iter, ], 4)) cat(" time", (t1 - t0)[3], "\n") } } if (!samebw) { rownames(bw) <- paste("block", 1:max(u)) colnames(bw) <- paste("component", 1:m) } if (verb) { tt1 <- proc.time() cat("lambda ", round(lambda[iter, ], 4)) cat(", total time", (tt1 - tt0)[3], "s\n") } if (stochastic) { return(structure(list(data = x, posteriors = sumpost/iter, lambda = lambda, bandwidth = bw, blockid = u, lambdahat = colMeans(lambda), loglik = loglik), class="npEM")) } else { return(structure(list(data = x, posteriors = z.hat, lambda = lambda[1:iter,], bandwidth = bw, blockid = u, lambdahat = lambda[iter,], loglik = loglik), class="npEM")) } } # Not sure whether the following function is really necessary: npEMindrepbw <- function (x, mu0, blockid = 1:ncol(x), bw = bw.nrd0(as.vector(as.matrix(x))), eps = 1e-08, maxiter = 500, stochastic = FALSE, verb = TRUE){ npEM(x=x, mu0=mu0, blockid=blockid, bw=bw, samebw=FALSE, eps=eps, maxiter=maxiter, stochastic=stochastic, verb=verb) } mixtools/R/ldmult.R0000755000175100001440000000107111665556372014015 0ustar hornikusers########################################################################### # log density function of multinomial count vector y with parameter theta # ########################################################################### ldmult<-function(y,theta){ if (any(is.nan(theta)) || any(theta==0)) { # stop ("The theta parameter cannot have a zero component.") out = -Inf } else { if (length(y)==length(theta)+1) theta=c(theta,1-sum(theta)) out=lgamma(1+sum(y)) - sum(lgamma(1+y)) + sum(y*log(theta)) } out } mixtools/R/ddirichlet.R0000755000175100001440000000053111736710154014614 0ustar hornikusersddirichlet <- function (x, alpha) { if (length(x) != length(alpha)) stop("Mismatch between dimensions of x and alpha in ddirichlet().\n") logD <- sum(lgamma(alpha)) - lgamma(sum(alpha)) s <- sum((alpha - 1) * log(x)) pd <- exp(sum(s) - logD) pd[any(x < 0 | x > 1)] <- 0 if(sum(x) != 1) pd <- 0 return(pd) }mixtools/R/regmixEMlambdainit.R0000755000175100001440000000341111665556372016256 0ustar hornikusersregmix.lambda.init = function (y, x, lambda = NULL, beta = NULL, s = NULL, k = 2, addintercept = TRUE, arbmean = TRUE, arbvar = TRUE) { x <- as.matrix(x) n <- length(y) p <- ncol(x) if (addintercept) { x = x[, -1] } else x = x w = cbind(y, x) w = w[order(w[, 1]), ] w.bin = list() for (j in 1:k) { w.bin[[j]] <- w[max(1, floor((j - 1) * n/k)):ceiling(j * n/k), ] } if (addintercept) { lm.out <- lapply(1:k, function(i) lm(w.bin[[i]][, 1] ~ w.bin[[i]][, 2:p])) } else lm.out <- lapply(1:k, function(i) lm(w.bin[[i]][, 1] ~ w.bin[[i]][, 2:(p + 1)] - 1)) if (is.null(s)) { s.hyp = lapply(lm.out, anova) s.hyp = as.vector(sqrt(sapply(1:k, function(i) s.hyp[[i]]$Mean[length(s.hyp[[i]]$Mean)]))) if (arbvar) { s = 1/rexp(k, rate = s.hyp) } else { s.hyp = mean(s.hyp) s = 1/rexp(1, rate = s.hyp) } } if (is.null(s) == FALSE && arbvar == TRUE) { k = length(s) } if (is.null(beta)) { beta.hyp = matrix(sapply(lm.out, coef), ncol = k) beta = matrix(0, nrow = p, ncol = k) for (j in 1:k) { beta[, j] = rnorm(p, mean = as.vector(beta.hyp[, j]), sd = s[arbvar * j + (1 - arbvar)]) } if (arbmean == FALSE) { beta = apply(beta, 1, mean) } } if (is.null(beta) == FALSE && arbmean == TRUE) { k = ncol(beta) } if (is.null(lambda)) { lam = runif(k) lam = lam/sum(lam) for(i in 1:n) {lambda <- rbind(lambda,lam)} } else k = ncol(lambda) list(lambda = lambda, beta = beta, s = s, k = k) }mixtools/R/spEMsymloc.R0000644000175100001440000000564413060302365014574 0ustar hornikusers## EM-like algorithm for a nonparametric univariate mixture model with ## symmetric components from a location family spEMsymloc <- function(x, mu0, bw = bw.nrd0(x), h=bw, eps = 1e-8, maxiter=100, stochastic = FALSE, verbose = FALSE){ bw <- h # h is alternative bandwidth argument, for backward compatibility n <- length(x) if (length(mu0)>1) m <- length(mu0) # mu0=centers else m <- mu0 # when mu0=number of clusters z.hat <- matrix(0, nrow=n, ncol=m) fkernel <- matrix(0, nrow=n, ncol=m) tt0 <- proc.time() lambda <- rep(1/m, m) kmeans <- kmeans(x, mu0) for(j in 1:m) { z.hat[kmeans$cluster==j, j] <- 1 } iter <- 0 if (stochastic) { sumpost <- matrix(0, n, m) } finished <- FALSE lambda <- mu <- matrix(0,maxiter,m) while (!finished) { #while (max(abs(change)) > eps & iter < maxiter) { iter <- iter + 1 t0 <- proc.time() ## M-Step lambda[iter,] <- colMeans(z.hat) mu[iter,] <- apply(sweep(z.hat, 1, x, "*"), 2, mean)/lambda[iter,] ## density estimation step if(stochastic){ z <- t(apply(z.hat, 1, function(prob) rmultinom(1, 1, prob))) ans <- .C(C_KDEsymloc, n=as.integer(n), m=as.integer(m), mu=as.double(mu[iter,]), x=as.double(x), bw=as.double(bw), z=as.double(z), f = double(n*m), PACKAGE="mixtools") } else { ans <- .C(C_KDEsymloc, n=as.integer(n), m=as.integer(m), mu=as.double(mu[iter,]), x=as.double(x), bw=as.double(bw), z=as.double(z.hat), f = double(n*m), PACKAGE="mixtools") } fkernel <- matrix(ans$f, ncol=m) lambda.f <- sweep(fkernel, 2, lambda[iter,], "*") ## E-step (for next iteration) z.hat <- lambda.f/rowSums(lambda.f) finished <- iter >= maxiter if (stochastic) { sumpost <- sumpost + z.hat } else if (iter>1) { # This convergence criterion is too simplistic: change <- c(lambda[iter,] - lambda[iter-1,], mu[iter,]-mu[iter-1,]) finished <- finished | (max(abs(change)) < eps) } if (verbose) { t1 <- proc.time() cat("iteration ", iter, " lambda ", round(lambda[iter,], 4), " mu ", round(mu[iter,], 4)) cat(" time", (t1 - t0)[3], "\n") } } if (verbose) { tt1 <- proc.time() cat("lambda ", round(lambda[iter,], 4)) cat(", total time", (tt1 - tt0)[3], "s\n") } if(stochastic) { return(structure(list(data=x, posteriors=sumpost/iter, lambda=lambda, bandwidth=bw, lambdahat=colMeans(lambda), mu = mu, muhat = colMeans(mu), symmetric=TRUE), class="npEM")) } else { return(structure(list(data=x, posteriors=z.hat, lambda=lambda[1:iter,], bandwidth=bw, lambdahat=lambda[iter,], mu = mu[1:iter,], muhat = mu[iter,], symmetric=TRUE), class="npEM")) } } mixtools/R/compcdf.R0000755000175100001440000000176411665556372014140 0ustar hornikuserscompCDF <- function(data, weights, x=seq(min(data, na.rm=TRUE), max(data, na.rm=TRUE), len=250), comp=1:NCOL(weights), makeplot=TRUE, ...) { if (NROW(weights) != NROW(data)) { stop("data and weights arguments must have same number of rows") } # First, normalize the weights so the sum of each column is 1/NCOL(data) weights <- t(t(weights) / (NCOL(data) * colSums(weights))) # Next, give a binomial count for each row of the data and for each x f <- function(row, cutpt) colSums(outer(row, cutpt, "<="), na.rm = TRUE) bc <- apply(data, 1, f, x) # bc is a length(x) by n matrix; each column should be multiplied by # the appropriate weight(s) and then the rows summed to give the # unnormalized cdf estimates. This is just a matrix product. cdfs <- bc %*% weights[,comp,drop=FALSE] if(makeplot) { plot(range(x), 0:1, type="n", ...) for (i in 1:length(comp)) { lines(x, cdfs[,comp[i]], lty=i, ...) } } t(cdfs) } mixtools/R/kernO.R0000755000175100001440000000010711665556372013571 0ustar hornikuserskern.O <- function (x, xi, h) { (pi/4)*cos(.5*pi*(xi-x)/h)/h } mixtools/R/regmixEMloc.R0000755000175100001440000000521511665556372014733 0ustar hornikusersregmixEM.loc=function (y, x, lambda = NULL, beta = NULL, sigma = NULL, k = 2, addintercept = TRUE, kern.l = c("Gaussian", "Beta", "Triangle", "Cosinus", "Optcosinus"), epsilon = 1e-08, maxit = 10000, kernl.g = 0, kernl.h = 1, verb = FALSE) { diff <- 1 iter <- 0 x.1 <- cbind(1, x) n <- length(y) kern.l <- match.arg(kern.l) out.EM <- regmixEM.lambda(y, x, lambda = lambda, beta = beta, sigma = sigma, k = k, epsilon = epsilon, maxit = maxit) ll = out.EM$loglik restarts <- 0 while (diff > epsilon && iter < maxit) { old.l.x = out.EM$lambda old.loglik = out.EM$loglik l.x = matrix(nrow = n, ncol = (k - 1)) for (i in 1:(k - 1)) { l.x[, i] <- c((cbind(rep(1,n),0)*t(apply(matrix(x, ncol = 1), 1, lambda, z = out.EM$post[, i], xi = x, kernel = kern.l, g = kernl.g, h = kernl.h)))[,1]) l.x[,i]=apply(cbind(l.x[,i]),1,max,0) l.x[,i]=apply(cbind(l.x[,i]),1,min,1) } l.x <- cbind(l.x, 1 - apply(l.x, 1, sum)) out.EM.loc <- regmixEM.lambda(y, x, beta = out.EM$beta, sigma = out.EM$sigma, lambda = l.x, k = k) loglik.loc <- out.EM.loc$loglik out.EM.old <- regmixEM.lambda(y, x, beta = out.EM$beta, sigma = out.EM$sigma, lambda = old.l.x, k = k) loglik.old <- out.EM.old$loglik if (loglik.loc > old.loglik) { out.EM <- out.EM.loc } else out.EM <- out.EM.old loglik.chosen <- out.EM$loglik ll <- c(ll, loglik.chosen) diff <- loglik.chosen - old.loglik if (diff < 0) { cat("Generating new starting values...", "\n") out.EM <- regmixEM.lambda(y, x, lambda = lambda, beta = beta, sigma = sigma, k = k, epsilon = epsilon, maxit = maxit) restarts <- restarts + 1 if (restarts > 15) stop("Too many tries!") iter <- 0 diff <- 1 } else { iter <- iter + 1 if (verb) { cat("iteration=", iter, "diff=", diff, "log-likelihood", loglik.chosen, "\n") } } } if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } cat("number of overall iterations=", iter, "\n") a = list(x = x, y = y, lambda.x = out.EM$lambda, beta = out.EM$beta, sigma = out.EM$sigma, loglik = loglik.chosen, posterior = out.EM$post, all.loglik = ll, restarts = restarts, ft = "regmixEM.loc") class(a) = "mixEM" a } mixtools/R/kernC.R0000755000175100001440000000010511665556372013553 0ustar hornikuserskern.C <- function (x, xi, h) { (1+cos(pi*(xi-x)/h))/(2*h) } mixtools/R/matsqrt.R0000755000175100001440000000032711665556372014212 0ustar hornikusersmatsqrt <- function(x) { xe <- eigen(x) xe.v <- xe$values if(all(xe.v >= 0)) { xe.v1 <- diag(sqrt(xe.v)) } xvalue <- cbind(xe$vectors) xvalue.1 <- solve(xvalue) out <- xvalue %*% xe.v1 %*% xvalue.1 out } mixtools/R/mvnpEM.R0000644000175100001440000002533213060302103013665 0ustar hornikusers### multivariate npEM with multivariate conditionnally independent blocks ### functions for mvnpEM with mvwkde code all in C ###################################################################### ## mvnpEM final (late 2015) version calling C codes for mvwkde's ## both for same and adaptive bandwidths ## adding a default bandwidth matrix passed as an argument ## bwdefault: a r-vector of fixed bandwidths per coordinates ## default to Silverman's rule per coordinates, only when samebw=TRUE ## bw returns the standard deviation of the kernel density ## init= for initialization option (June 2015) ###################################################################### mvnpEM <- function (x, mu0, blockid = 1:ncol(x), samebw = TRUE, bwdefault = apply(x,2,bw.nrd0), init=NULL, eps=1e-8, maxiter = 500, verb = TRUE){ x = as.matrix(x) n = nrow(x); r = ncol(x) bk = blockid #b_k=l indicate the kth coordinate belongs to lth block. B = max(bk) # total number of blocks # ! Caution if blocks are numbered not consecutively, use unique? loglik = NULL tt0 <- proc.time() # for total time # coordinate of X in lth block (block of dl-variate densities) # dl[l] = number of coordinates in l-th block # xx[[j]] = (n,dl[l]) -matrix of block l observations dl=c(); for (l in 1:B){dl[l] = sum(bk==l)} xx = list() for (l in 1:B){ xx[[l]] = as.matrix(x[,bk==l]) # coordinate of X in lth block } if (is.matrix(mu0)) m <- dim(mu0)[1] # mu0 = initial means else m <- mu0 # when mu0 = number of components ## NB initial means used only if kmeans used for init ## z.hat are posterior zij's, initialized using kmeans if (is.null(init)){ z.hat <- matrix(0, nrow = n, ncol = m) if (m == 1) z.hat <- matrix(1, nrow = n, ncol = m) # ?? m can never be 1 else{ kmeans <- kmeans(x, mu0) for(j in 1:m) z.hat[kmeans$cluster==j, j] <- 1} } if (! is.null(init)) {z.hat <- init} # ToDo: check consistency dim (n,m) lambda = matrix(0, maxiter, m) # storing lambda's along iterations finished = FALSE bw=matrix(0,m,r) # only used for adaptbw version if (samebw){ # bw computed once for all iterations and mvwkde calls # bw <- apply(x,2,bw.nrd0) # bw <- bwdefault^2*diag(r) # diagonal bw matrix appropriate for mvwkde bw <- bwdefault*diag(r) # diagonal bw matrix, not variances, appropriate for mvwkde } ## loop iter = 0 #start point while (!finished){ iter = iter + 1 #step "iter + 1" # t0 = proc.time() ################################################################# ## M-step for the Euclidean parameter lambda[iter,] = colMeans(z.hat) #\lambda_j^(t+1) = 1/n* \sum_i^n (p_ij)^t ################################################################# ## Weighted Kernel Density function step # wts[,j] = normalized weights for component j cs <- colSums(z.hat) # or use n*lambda[iter,] to avoid re summing over n ? wts <- sweep(z.hat, 2, cs, "/") wts [, cs==0] <- 1/NROW(wts) if (samebw){ # default samebw=TRUE lambda.f <- matrix(NA,n,m) # lambda.f[i,j] = lambda_j f_j(x_i) fkernel <- matrix(1,n,m) # Faster new version: no loop in j, all is done in C block per block for (l in 1:B) { d = dl[l] tmp=as.matrix(bw[bk==l,bk==l]) # updated here, not sqrt anymore h=as.vector(diag(tmp)); ans <- .C(C_mvwkde_samebw, n = as.integer(n),d = as.integer(d), m = as.integer(m), h = as.double(h), x=as.double(xx[[l]]), u=as.double(xx[[l]]), z=as.double(wts), f=double(n*m)) fl = matrix(ans$f,n,m) # f_jl estimate fkernel <- fkernel*fl # product over blocks } lambda.f <- sweep(fkernel, 2, lambda[iter, ], "*") } # end of samebw case # Adaptive bandwidth case - NOT YET BEST C VERSION (for all j simultaneously ?) if (!samebw) { for (k in 1:r) { # compute adaptive bw h_jk^t # use o <- order(x[,k]) to re-use it twice var <- colSums(wts*outer(x[,k], colSums(wts*x[,k]),'-')^2) iqr <- apply(as.matrix(wts[order(x[,k]),]),2,wIQR, x[,k][order(x[,k])], already.sorted=TRUE, already.normalized=TRUE) bw[,k] <- 0.9*pmin(sqrt(var), iqr/1.34)*pmax(1,n*lambda[iter, ])^(-1/5) } lambda.f <- matrix(NA,n,m) # lambda.f[i,j] = lambda_j f_j(x_i) fkernel <- matrix(1,n,m) #for (j in 1:m){ #lda.f = lambda[iter, j] for (l in 1:B){ d = dl[l]; H = as.matrix(bw[, bk==l]); ans <- .C(C_mvwkde_adaptbw, n = as.integer(n),d = as.integer(d), m = as.integer(m), H = as.double(H), x=as.double(xx[[l]]), u=as.double(xx[[l]]), z=as.double(wts), f=double(n*m)) fl = matrix(ans$f,n,m)# f_jl estimate fkernel <- fkernel*fl # product over blocks } lambda.f <- sweep(fkernel, 2, lambda[iter, ], "*") #} }# end of adaptive case ################################################################ ## E-step (for next iteration) z.hat = lambda.f/rowSums(lambda.f) #p_ij^t, Z_ij^t, update z.hat loglik <- c(loglik,sum(log(rowSums(lambda.f)))) # log-likelihood ## End finished = iter >= maxiter if (iter>1) {maxchange = max(abs(lambda[iter,] - lambda[iter-1,])) finished = finished | (maxchange < eps) } if (verb) { # t1 <- proc.time() cat("iteration", iter, ": lambda ", round(lambda[iter, ], 4),"\n") # cat(" time", (t1 - t0)[3], "\n") } }# End while ##### Output if (verb) { tt1 <- proc.time() # total time ending cat("# iter", iter) cat(", lambda ", round(lambda[iter, ], 4)) cat(", total time", (tt1 - tt0)[3], "s\n") } # final bandwidth output depending on samebw switch if (samebw) bw <- diag(bw) return(structure(list(data = x, posteriors = z.hat, lambda = lambda[1:iter,], blockid = bk, samebw=samebw, bandwidth = bw, lambdahat = lambda[iter,], loglik = loglik), class = "mvnpEM")) } # End function. ####################################################### # plot marginal (univariate) wkde's from mvnpEM output # a plot.mvnpEM method for mvnpEM class # lambda, mu, v: true parameters, for gaussian true models only # ... passed to hist first level plotting plot.mvnpEM <- function(x, truenorm=FALSE, lambda=NULL, mu=NULL, v=NULL, lgdcex =1, ...) { mix.object <- x if (!inherits(mix.object, "mvnpEM")) a <- x x <- a$data; r <- ncol(x); m <- ncol(a$posteriors) rr <- sqrt(r); frr <- floor(rr) if (frr == rr) par(mfrow=c(rr,rr)) else { if (frr*(frr+1) >= r) par(mfrow=c(frr, frr+1)) else par(mfrow=c(frr+1, frr+1))} # if ((r %% 2) == 0) par(mfrow=c(floor(r/2), floor(r/2))) else { # par(mfrow=c(floor(r/2)+1, floor(r/2)+1))} for (k in 1:r) { # for each coord (whatever its block) xx <- x[,k] uk <- seq(min(xx),max(xx),len=100) tt <- paste("block", a$blockid[k],", coord",k) hist(xx, col=8, freq=F, xlab="", main=tt, ...) for (j in 1:m) { wj <- a$post[,j] # weights for component j if (a$samebw) bw <- a$bandwidth[k] else { bw <- a$bandwidth[j,k]} f <- wkde(xx, u=uk, w=wj, bw=bw, sym=F) lines(uk, a$lambdahat[j]*f, col=j) # add true Gaussian marginal if requested/known if (truenorm) { lines(uk,lambda[j]*dnorm(uk,mean=mu[j,k], sd=sqrt(v[j,k,k])), lty=2,lwd=2, col=j)} } if (a$samebw) subt <- paste("same bw:",round(a$bandwidth[k],3)) else { subt <- "adapt bw: " for (j in 1:m) subt <- paste(subt, round(a$bandwidth[j,k],3)) } title(sub=subt) } lgd <- NULL for (j in 1:m) lgd <- c(lgd, paste("comp",j)) legend("topright", lgd, col=1:m, lty=1, cex=lgdcex) } ########################################################### print.mvnpEM <- function(x,...) { n <- NROW(x$data) r <- NCOL(x$data) m <- length(x$lambdahat) cat(paste("Observations:", n, "\n")) cat(paste("Coordinates per observation:", r, "\n")) cat(paste("Mixture components:", m, "\n")) if (r > 1) { B <- max(x$blockid) cat(paste("Blocks (of conditionally iid coordinates):",B, "\n\n")) } dp = match(c("data", "posteriors", "lambda", "mu"), names(x), nomatch = 0) print.default(structure(x[-dp], class = class(x)), ...) invisible(x) } print.summary.mvnpEM <-function (x, digits = 3, ...) { if (x$r > 1) cat(paste(x$n, "observations,", x$r, "coordinates,", x$m, "components, and", x$B, "blocks.\n\n")) else cat(paste(x$n, "univariate observations, and", x$m, "components.\n\n")) cat("Means (and std. deviations) for each component:\n") for (l in 1:x$B) { coords <- 1 if (x$r > 1) { coords <- x$blockid == l cat(paste(" Block #", l, ": Coordinate", sep = "")) cat(ifelse(sum(coords) > 1, "s ", " ")) cat(which(coords)) cat("\n") } if (sum(coords)==1) { for (j in 1:x$m){ cat(paste(" Component", j,": ")) cat(paste(signif(x$means[j,coords], digits), " (", signif(x$variances[[j]][coords,coords],digits), ") ", sep = "")) } cat("\n") } else { for (j in 1:x$m){ cat(paste(" Component", j,": ")) cat(paste(signif(x$means[j,coords ], digits), sep = "")) cat("\n") print(signif(x$variances[[j]][coords,coords], digits)) cat("\n") }} } } summary.mvnpEM <- function(object,...) { n <- NROW(object$data);n r <- NCOL(object$data);r m <- length(object$lambdahat);m B <- max(object$blockid);B mu <- matrix(0, m, r);mu v <- array(0,c(m,r,r));v[1,,];v[2,,] normpost <- sweep(object$post, 2, sums <- colSums(object$post),"/") for (l in 1:B){ coords <- object$blockid == l;coords sc <- sum(coords);sc xx <- as.matrix(object$data[, coords]);xx var<- list();mean<-list() for (j in 1:m){ wts <- normpost[, j] M<-mu[j,coords] <- colSums(wts*as.matrix(xx)) if (sc==1) v[j,coords,coords]<- colSums(wts*outer(as.matrix(xx), colSums(wts*as.matrix(xx)),'-')^2) else{ for (t1 in 1:sc){ for (t2 in 1:sc){ v[j,coords,coords][t1,t2] <- v[j,coords,coords][t2,t1] <- colSums(wts*outer(as.matrix(xx[,t1]), colSums(wts*as.matrix(xx[,t1])),'-') *outer(as.matrix(xx[,t2]), colSums(wts*as.matrix(xx[,t2])),'-'))} } } var[[j]] = v[j,,] } } rownames(mu) <- paste("component",1:m) colnames(mu) <- paste("coordinate", 1:r) names(var) <- paste("component",1:m) ans <- list(n = n, m = m, r = r, B = B, blockid = object$blockid, means = mu, variances = var) class(ans)<-"summary.mvnpEM" ans } mixtools/R/repnormmixinit.R0000755000175100001440000000212011665556372015574 0ustar hornikusersrepnormmix.init = function (x, lambda = NULL, mu = NULL, s = NULL, k = 2, arbmean = TRUE, arbvar = TRUE) { n <- ncol(x) m <- nrow(x) y <- apply(x, 2, mean) x <- x[, order(y)] x.bin = list() for (j in 1:k) { x.bin[[j]] <- x[, max(1, floor((j - 1) * n/k)):ceiling(j * n/k)] } if (is.null(s)) { s.hyp = sapply(lapply(x.bin, as.vector), sd) if (arbvar) { s = 1/rexp(k, rate = s.hyp) } else { s.hyp = mean(s.hyp) s = 1/rexp(1, rate = s.hyp) } } if (is.null(s) == FALSE && arbvar == TRUE) { k = length(s) } if (is.null(mu)) { mu.hyp <- sapply(lapply(x.bin, as.vector), mean) mu = rnorm(k, mean = mu.hyp, sd = s) if(arbmean==FALSE){ mu = mean(mu) } } if (is.null(mu)==FALSE && arbmean==TRUE){ k = length(mu) } if (is.null(lambda)) { lambda = runif(k) lambda = lambda/sum(lambda) } else k = length(lambda) list(lambda = lambda, mu = mu, s = s, k = k) }mixtools/R/normalmixEM.R0000755000175100001440000001362713060301704014730 0ustar hornikusers## Use an ECM algorithm (in the sense of Meng and Rubin, Biometrika 1993) ## to search for a local maximum of the likelihood surface for a ## univariate finite mixture of normals with possible equality ## constraints on the mean and stdev parameters. normalmixEM <- function (x, lambda = NULL, mu = NULL, sigma = NULL, k = 2, mean.constr = NULL, sd.constr = NULL, epsilon = 1e-08, maxit = 1000, maxrestarts=20, verb = FALSE, fast=FALSE, ECM = FALSE, arbmean = TRUE, arbvar = TRUE) { warn <- options(warn=-1) # Turn off warnings x <- as.vector(x) tmp <- normalmix.init(x = x, lambda = lambda, mu = mu, s = sigma, k = k, arbmean = arbmean, arbvar = arbvar) lambda <- tmp$lambda mu <- tmp$mu sigma <- tmp$s k <- tmp$k arbvar <- tmp$arbvar arbmean <- tmp$arbmean if (fast==TRUE && k==2 && arbmean==TRUE) { a <- normalmixEM2comp (x, lambda=lambda[1], mu=mu, sigsqrd=sigma^2, eps=epsilon, maxit=maxit, verb=verb) } else { z <- parse.constraints(mean.constr, k=k, allsame=!arbmean) meancat <- z$category; meanalpha <- z$alpha z <- parse.constraints(sd.constr, k=k, allsame=!arbvar) sdcat <- z$category; sdalpha <- z$alpha ECM <- ECM || any(meancat != 1:k) || any(sdcat != 1) n <- length(x) notdone <- TRUE restarts <- 0 while(notdone) { # Initialize everything notdone <- FALSE tmp <- normalmix.init(x = x, lambda = lambda, mu = mu, s = sigma, k = k, arbmean = arbmean, arbvar = arbvar) lambda <- tmp$lambda mu <- tmp$mu k <- tmp$k sigma <- tmp$s var <- sigma^2 diff <- epsilon+1 iter <- 0 postprobs <- matrix(nrow = n, ncol = k) mu <- rep(mu, k)[1:k] sigma <- rep(sigma,k)[1:k] # Initialization E-step here: z <- .C(C_normpost, as.integer(n), as.integer(k), as.double(x), as.double(mu), as.double(sigma), as.double(lambda), res2 = double(n*k), double(3*k), post = double(n*k), loglik = double(1), PACKAGE = "mixtools") postprobs <- matrix(z$post, nrow=n) res <- matrix(z$res2, nrow=n) ll <- obsloglik <- z$loglik while (diff > epsilon && iter < maxit) { # ECM loop, 1st M-step: condition on sigma, update lambda and mu lambda <- colMeans(postprobs) mu[meancat==0] <- meanalpha[meancat==0] if (max(meancat)>0) { for(i in 1:max(meancat)) { w <- which(meancat==i) if (length(w)==1) { mu[w] <- sum(postprobs[,w]*x) / (n*lambda[w]) } else { tmp <- t(postprobs[,w])*(meanalpha[w]/sigma[w]^2) mu[w] <- meanalpha[w] * sum(t(tmp)*x) / sum(tmp*meanalpha[w]) } } } if (ECM) { # If ECM==FALSE, then this is a true EM algorithm and # so we omit the E-step between the mu and sigma updates # E-step number one: z <- .C(C_normpost, as.integer(n), as.integer(k), as.double(x), as.double(mu), as.double(sigma), as.double(lambda), res2 = double(n*k), double(3*k), post = double(n*k), loglik = double(1), PACKAGE = "mixtools") postprobs <- matrix(z$post, nrow=n) res <- matrix(z$res2, nrow=n) # ECM loop, 2nd M-step: condition on mu, update lambda and sigma lambda <- colMeans(postprobs) # Redundant if ECM==FALSE } sigma[sdcat==0] <- sdalpha[sdcat==0] if (max(sdcat)>0) { for(i in 1:max(sdcat)) { w <- which(sdcat==i) if (length(w)==1) { sigma[w] <- sqrt(sum(postprobs[,w]*res[,w]) / (n*lambda[w])) } else { tmp <- t(postprobs[,w]) / sdalpha[w] sigma[w] <- sdalpha[w] * sqrt(sum(t(tmp) * res[,w])/ (n * sum(lambda[w]))) } } if(any(sigma < 1e-08)) { notdone <- TRUE cat("One of the variances is going to zero; ", "trying new starting values.\n") restarts <- restarts + 1 lambda <- mu <- sigma <- NULL if(restarts>maxrestarts) { stop("Too many tries!") } break } } # E-step number two: z <- .C(C_normpost, as.integer(n), as.integer(k), as.double(x), as.double(mu), as.double(sigma), as.double(lambda), res2 = double(n*k), double(3*k), post = double(n*k), loglik = double(1), PACKAGE = "mixtools") postprobs <- matrix(z$post, nrow=n) res <- matrix(z$res2, nrow=n) newobsloglik <- z$loglik diff <- newobsloglik - obsloglik obsloglik <- newobsloglik ll <- c(ll, obsloglik) iter <- iter + 1 if (verb) { cat("iteration =", iter, " log-lik diff =", diff, " log-lik =", obsloglik, "\n") print(rbind(lambda, mu, sigma)) } } } if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } cat("number of iterations=", iter, "\n") if(arbmean == FALSE){ scale.order = order(sigma) sigma.min = min(sigma) postprobs = postprobs[,scale.order] colnames(postprobs) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=x, lambda = lambda[scale.order], mu = mu, sigma = sigma.min, scale = sigma[scale.order]/sigma.min, loglik = obsloglik, posterior = postprobs, all.loglik=ll, restarts=restarts, ft="normalmixEM") } else { colnames(postprobs) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=x, lambda = lambda, mu = mu, sigma = sigma, loglik = obsloglik, posterior = postprobs, all.loglik=ll, restarts=restarts, ft="normalmixEM") } } class(a) = "mixEM" options(warn) # Reset warnings to original value a } mixtools/R/makemultdata.R0000755000175100001440000000227411665556372015173 0ustar hornikusersmakemultdata = function (..., cuts) { temp = sapply(list(...), length) m = max(temp) g <- length(cuts) + 1 cuts <- sort(cuts) if (sum(temp != m) > 0) { full.data <- function(x, maxm) { if (!missing(x)) { if (length(x) < maxm) { x <- c(x, NA * rep(1, maxm - length(x))) } } else { x <- numeric(0) } x } x = sapply(list(...), full.data, maxm = m) } else { if (sapply(list(...), is.matrix) == 1 | sapply(list(...), is.data.frame) == 1) { x = t(...) } else x = cbind(...) } cutfunc <- function(x, lcut, ucut) { x <- na.omit(x) sum((x <= ucut) * (x > lcut)) } n <- ncol(x) y <- matrix(0, g, n) y[1, ] <- apply(x, 2, cutfunc, ucut = cuts[1], lcut = -Inf) y[g, ] <- apply(x, 2, cutfunc, ucut = Inf, lcut = cuts[g - 1]) if (g > 2) { for (i in 2:(g - 1)) { y[i, ] <- apply(x, 2, cutfunc, ucut = cuts[i], lcut = cuts[i - 1]) } } list(x = t(x), y = t(y)) }mixtools/R/WeibullRMMSEM.R0000644000175100001440000002035013055272033015016 0ustar hornikusers# code for Reliability Mixture Models (RMM) with Censored data # D. Chauveau # ref: Bordes L. and Chauveau D. Computational Statistics (2016) # Simulate from a Weibull mixture # lambda = vector of component probabilities # shape, scale = vector of component rates rweibullmix <- function(n,lambda=1, shape=1, scale=1) { m <- length(lambda) # nb of components z <- sample(m, n, replace=TRUE, prob=lambda) # component indicator rweibull(n, shape = shape[z], scale=scale[z]) } ######################################################################## ## Stochastic EM algorithm for Reliability Mixture Models (RMM) ## with Censoring; Parametric model, for ## univariate finite mixture of Weibull with right censoring # x = lifetime data, censored by random c if d is not NULL, in which case # x= min(x,c) and d = I(x <= c) # uses parametric MLE for censored weibull data from the survival package # caution: when fitted by a survreg object, the weibull parametrization is # shape=1/fit$scale and scale=exp(fit$coeff) # averaged = TRUE if averaging of the parameters is computed at each iteration # (cf Nielsen 2000) # NB: averaging can be done in several ways; # DEPRECATED: the current theta for E & M steps is the average over the sequence, # but the theta^next not averaged is stored on the sequence # CURRENT VERSION: the average is stored and used for next step # # About calls of survreg() from the survival package: # maxit.survreg is # passed to survreg.control() for weibull MLE using survreg() weibullRMM_SEM <- function (x, d=NULL, lambda = NULL, shape = NULL, scale = NULL, # dweibull() parameters k = 2, # default nb of components maxit = 200, # maxrestarts = 20, maxit.survreg = 200, epsilon = 1e-03, averaged = TRUE, verb = FALSE) { # warn <- options(warn=-1) # Turn off warnings # x <- as.vector(x) # require(survival) n <- length(x) if (!is.null(lambda)) k=length(lambda) if (!is.null(scale)) k=length(scale) # at least one if (!is.null(shape)) k=length(shape) # should be define !!! if (is.null(d)) d <- rep(1,n) # noncensored case forced xx <- matrix(x, nrow=n, ncol=k) # x repeated k times, used in E-steps dd <- matrix(d, nrow=n, ncol=k) # idem for d # # note: d can be used instead of dd since automatic recycling gives # dd*xx = d*xx, but we keep dd to avoid eventual futur change # init function call to do later, in case lambda = rate = NULL if (is.null(lambda)) lambda <- rep(1/k,k) if (is.null(scale)) scale <- rep(1,k) # to do : init.functions(k) if (is.null(shape)) shape <- rep(1,k) # # sequences for storing along iterations lambda_seq <- scale_seq <- shape_seq <- matrix(0, nrow = maxit, ncol = k) lambda_seq[1,] <- lambda scale_seq[1,] <- scale; shape_seq[1,] <- shape loglik_seq <- NULL oldloglik <- -Inf # notdone <- TRUE # for handling restarts etc, ToDo later! # while(notdone) { # Initialize everything notdone <- FALSE # dll <- epsilon+1 iter <- 1 post <- z <- sumpost <- matrix(0, nrow = n, ncol = k) new_scale <- new_shape <- rep(0,k) ##### SEM iterations ##### while (iter < maxit) { # SEM version ### E-step ### scn <- matrix(scale, n, k, byrow=T) # for vectorized post comput. shn <- matrix(shape, n, k, byrow=T) ll <- matrix(lambda, n, k, byrow=T) # handling censored & non-censored cases post <- ((ll*dweibull(xx,shn,scn))^dd)*((ll*(1-pweibull(xx,shn,scn)))^(1-dd)) rs <- rowSums(post) loglik <- sum(log(rs)) # loglik without the constant term related to h pdf # post normalized per row post <- sweep(post, 1, rs, "/") # posteriors p_{ij}^t 's # check and solve NaN's: may cause theoretical pbs!? snans <- sum(is.na(post)) if (snans > 0) { post[is.na(post[,1]),] <- 1/k cat("warning:",snans, "NaN's in post\n") } ### S-step ### # ~ matrix of component indicators simu checked ? z <- t(apply(post, 1, function(prob) rmultinom(1, 1, prob))) nsets <- colSums(z) # subsets per component sizes # cat("it",iter,": sets=",nsets,"\n") ### M-step ### # new_parameter = SEM(lambda,shape,scale) new_lambda <- nsets/n # or colMeans(post) if EM version preferred for (j in 1:k) { # for each component; vectorize later? tj <- x[z[,j]==1] # subsample from component j dj <- d[z[,j]==1] # associated event indicator # passing maxit and epsilon parameters to survreg # and current shape & scale as init parameters fit=survreg(Surv(tj,dj)~1, dist = 'weibull', control = survreg.control(maxiter = maxit.survreg, rel.tolerance=epsilon), init.beta=log(scale), init.scale=1/shape) new_scale[j] <- exp(fit$coeff) new_shape[j] <- 1/fit$scale } # Next parameter value, depending on average strategy if (averaged) { scale <- (new_scale + iter*scale_seq[iter,])/(iter+1) shape <- (new_shape + iter*shape_seq[iter,])/(iter+1) lambda <- (new_lambda + iter*lambda_seq[iter,])/(iter+1) } else { # averaged=FALSE case, just use last update scale <- new_scale shape <- new_shape lambda <- new_lambda } # new strategy = storing sequence of averages lambda_seq[iter+1, ] <- lambda scale_seq[iter+1, ] <- scale shape_seq[iter+1, ] <- shape dll <- loglik - oldloglik # = Inf for iter=0 1st time oldloglik <- loglik loglik_seq <- c(loglik_seq, loglik) if (verb) { cat("iteration", iter, " log-lik diff =", dll, " log-lik =", loglik, "\n") # print(rbind(lambda, rate)) } iter <- iter + 1 } # end of SEM loops over iterations # } # while notdone, if restarts control implemented # final estimates depending on average strategy if (averaged) { final.lambda <- lambda final.scale <- scale final.shape <- shape } else { final.scale <- colMeans(scale_seq[1:iter,]) final.shape <- colMeans(shape_seq[1:iter,]) final.lambda <- colMeans(lambda_seq[1:iter,]) } cat("number of iterations =", iter, "\n") colnames(post) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=x, d=d, lambda = final.lambda, scale = final.scale, shape = final.shape, loglik = loglik, posterior = post, all.loglik=loglik_seq, all.lambda = lambda_seq[1:iter,], all.scale = scale_seq[1:iter,], all.shape = shape_seq[1:iter,], ft="weibullRMM_SEM") class(a) = "mixEM" a } ################################################## # plot SEM sequences from weibullRMM_SEM: # color by components, one plot per parameter type plotweibullRMM <- function(a, title=NULL, rowstyle=TRUE, subtitle=NULL,...) { n <- length(a$x); m <- dim(a$all.lambda)[2] pcc <- round(100*(1-mean(a$d)),2) if (is.null(subtitle)) { subtitle <- paste("n=",n,", ", pcc, "% censored", sep="")} if (is.null(title)) { tt1 <- "Shape parameters"; tt2 <- "Scale parameters" tt3 <- "Weight parameters" } else tt1 <- tt2 <- tt3 <- title lwdset <- 2 if (rowstyle) par(mfrow=c(3,1)) else par(mfrow=c(1,3)) plot(a$all.shape[,1], type="l", ylim=c(0,max(a$all.shape)), xlab="iterations", ylab="estimates", main=tt1, ...) # if (truevalues) abline(shape[1],0,lty=3) title(sub=subtitle, cex.sub = 0.75) lgd <- expression(sh[1]); lcol <- 1 for (j in 2:m) { lines(a$all.shape[,j], col=j, ...) # if (truevalues) abline(shape[j],0,col=j,lty=3) lgd <- c(lgd,substitute(sh[j])); lcol <- c(lcol,j) } legend("topright", lgd, col=lcol, lty=1,...) plot(a$all.scale[,1], type="l", ylim=c(0,max(a$all.scale)), xlab="iterations", ylab="estimates", main=tt2, ...) # if (truevalues) abline(scale[1],0,lty=3) title(sub=subtitle, cex.sub = 0.75) lgd <- expression(sc[1]); lcol <- 1 for (j in 2:m) { lines(a$all.scale[,j], col=j, ...) # if (truevalues) abline(scale[j],0,col=j,lty=3) lgd <- c(lgd,substitute(sc[j])); lcol <- c(lcol,j) } legend("topright", lgd, col=lcol, lty=1, ...) plot(a$all.lambda[,1], type="l", ylim=c(0,1), xlab="iterations", ylab="estimates", main=tt3, ...) # if (truevalues) abline(lambda[1],0,lty=3) title(sub=subtitle,cex.sub = 0.75) lgd <- expression(lambda[1]); lcol <- 1 for (j in 2:m) { lines(a$all.lambda[,j], col=j, ...) # if (truevalues) abline(lambda[j],0,col=j,lty=3) lgd <- c(lgd,substitute(lambda[j])) lcol <- c(lcol,j) } legend("topright", lgd, col=lcol, lty=1, ...) } mixtools/R/spRMMSEM.R0000644000175100001440000003447613055603106014052 0ustar hornikusers########################################################### # semi-parametric Reliability Mixture Models with Censored data # for 2 components # D. Chauveau # ref: Bordes L. and Chauveau D. Computational Statistics (2016) ########################################################### # Simulate from a lognormal scale mixture # like model (3) in compstat paper # lambda = vector of component probabilities # xi = scaling parameter rlnormscalemix <- function(n, lambda=1, meanlog=1, sdlog=1, scale=0.1) { m <- length(lambda) # nb of components z <- sample(m, n, replace = TRUE, prob = lambda) # component indicator x <- rlnorm(n, meanlog, sdlog) x[z==2] <- x[z==2]/scale x } ############################################## # Kaplan-Meier survival estimate # vectorized version ONLY on ** already ordered data ** # cpd = (n,2) matrix where # cpd[,1] = t = ORDERED censored life data = min(x,c) # cpd[,2] = d = censoring indicator, 1=observed 0=censored # returned value = a step function object allowing to evaluate S() # at any point, needed by SEM for computing S(xi*t_i)'s KMod <- function(cpd, already.ordered=TRUE){ # order stat of t and d ordered accordingly if (already.ordered) { n <- dim(cpd)[1] s <- cumprod(1 - cpd[,2]/(n - (1:n) +1)) stepfun(cpd[,1], c(1,s))} # starts with 1 for t<=t(1) } ############################################## ## KM estimate integration # s = a stepfun object as returned by KMod() # returned value = int_0^max(t_i) S(u)du KMintegrate <- function(s) { ks <- knots(s) n <- length(ks) # number of knots=data points ks2 <- c(0,ks[1:(n-1)]) # shifted right hs <- c(1,s(ks)[1:(n-1)]) # heights of survival sum((ks-ks2)*hs) } ################################################ ### HAZARD RATE SMOOTH KERNEL ESTIMATES ### ################################################ # WKDE with Triangular Kernel and global bandwidth, vectorized # returns vector of K_h(t_i-u_j), j=1,...,length(u) # t = vector of data # u = vector of points at which K(u) is computed # w = weights defaults to 1/n, not forced to be normalized # bw=bandwidth, can be a n-vector or a scalar # nb: this is not specific for hazard rate, just a wkde # NB: triang_wkde is the default wkde called by HRkde() for hazard rate triang_wkde <- function(t, u=t, w=rep(1/length(t),length(t)), bw=rep(bw.nrd0(t),length(t))) { n <- length(t); p <- length(u) xx <- outer(t, u, function(a,b) a-b) # K[i,j] = (t_i-u_j) xx <- abs(xx) # not necessarily for all kernels, separated from outer h <- matrix(bw,n,p) # bw repeated over p columns # works also if a scalar bw is passed! xx <- xx/h # now xx is |t_i-u_j|/h_i K <- (xx <= 1)*(1-xx)/bw # K((t-u)/h)/h mw <- matrix(w, nrow=1) # weights for matrix product as.vector(mw %*% K) } ## Hazard Rate kernel density estimate based on *ordered* censored data # weighted kernel density estimate passed as function argument, # defaults to symmetric triangle kernel # cpd = (n,2) matrix where # cpd[,1] = t = ORDERED censored life data = min(x,c) # cpd[,2] = d = censoring indicator, 1=observed 0=censored # u = vector of points at which alpha() is evaluated, # defaults to t itself # bw = bandwidth *vector* for the kernel density estimate # kernelft = kernel definition # return value = alpha(.) evaluated at u_j's # NB: ordered data are necessary from weights definitions # (n-i+1) items at risk etc HRkde <- function(cpd, u = cpd[,1], kernelft = triang_wkde, bw = rep(bw.nrd0(as.vector(cpd[,1])), length(cpd[,1]))){ # gaussian case (not recommended) # if (kernelft==gaussian) HRkdeGauss(cpd,u,bw) else { n <- length(cpd[,1]) aw <- cpd[,2]/(n - (1:n) +1) # weights d(i)/(n-i+1) kernelft(cpd[,1], u, w=aw, bw=bw) # old, non vectorized version (deprecated) # nu <- length(u) # hr <- rep(0,nu) # for (k in 1:nu) { # K <- kernelft(cpd[,1], u[k], bw) # hr[k] <- sum(K*aw) # } # } # hr } ################################################################# ################################################################# ## Stochastic EM algorithm for semiparametric Scaling ## Reliability Mixture Models (RMM) with Censoring, 2 components # t = lifetime data, censored by random c if d is not NULL, in which case # t = min(x,c) and d = I(x <= c) # rate = scaling parameter # centers = initial centers for initial call to kmeans # averaged = TRUE if averaging performed at each iteration (cf Nielsen 2000) # NB: averaging can be done in (at least) 2 ways; # here the current theta for E & M steps is the average over the sequence, # but the theta^next not averaged is stored on the sequence # batchsize = number of last iterations to use for "averaging" unscaled samples # for computing "average" final KM and HR estimates # alpha() and S() # kernelft = kernel used in HRkde for hazard rate nonparametric estimate # # NB: since the sequence of parameters is a stoch. process, the # stopping criterion is usually not satisfied until maxit spRMM_SEM <- function (t, d = NULL, lambda = NULL, scaling = NULL, centers = 2, kernelft = triang_wkde, bw = rep(bw.nrd0(t),length(t)), averaged = TRUE, epsilon = 1e-08, maxit = 100, batchsize = 1, verb = FALSE) { k = 2 # fixed number of components for this model identifiability n <- length(t) if (is.null(d)) { d <- rep(1,n) # but better use specific algo for noncensored data cat("warning: undefined censoring indicator d replaced by 1's") cat(" i.e. all data are assumed observed") cat(" better use instead a specific St-EM algorithm for uncensored data") } ##### Initializations ##### # init function call to do later, in case lambda = scaling = NULL if (is.null(lambda)) lambda <- rep(1/k,k) # not USED for init!? if (is.null(scaling)) scaling <- 1/2 # ToDo better init using centers fro kmeans! # sequences for storing along iterations lambda_seq <- matrix(0, nrow = maxit, ncol = k) lambda_seq[1,] <- lambda scaling_seq <- rep(0,maxit) scaling_seq[1] <- scaling sumNaNs <- 0 # for total nb of NaN's in iterations while computing post # dll <- epsilon+1 # not applicable for SEM versions, always run maxit post <- z <- sumpost <- posthat <- matrix(0, nrow = n, ncol = k) qt=round(maxit/10); pc <- 0 # for printing of % of iteration done if (qt == 0) qt <- 1 # initialization for batch storing if (batchsize > maxit) batchsize <- maxit batch_t <- NULL # for storing batchsize last unscaled samples batch_d <- NULL # and associated event indicators # kmeans method for initial posterior and z matrix kmeans <- kmeans(t, centers=centers) for(j in 1:k) { z[kmeans$cluster==j, j] <- 1 } # init values for Survival s() and hazard rate a() # strategy: use a M-step with z from kmeans result zt <- z*t # recycling t m times => zt[i,] holds zt[,2] <- scaling*zt[,2] # t if comp 1 and xi*t if comp 2 newt <- rowSums(zt) # redressed "unscaled" sample newo <- order(newt) new.od <- cbind(newt,d)[newo,] # ordered data with associated d s <- KMod(new.od) # stepfun object, can be evaluated by s(t) # note: <=> to use KMsurvfit(newt,d) which calls survival package functions a1 <- HRkde(new.od, t, kernelft, bw=bw) # evaluated at the original t's a2 <- HRkde(new.od, scaling*t, kernelft, bw=bw) # and at scaling*t's ####### SEM iterations ####### iter <- 1 # while (dll > epsilon && iter < maxit) { # EM-only version while (iter < maxit) { ### E-step post[,1] <- ((lambda[1]*a1*s(t))^(d))*((lambda[1]*s(t))^(1-d)) post[,2] <- (lambda[2]*scaling*a2*s(scaling*t))^d # observed post[,2] <- post[,2]*(lambda[2]*s(scaling*t))^(1-d) # censored # print(post) rs <- rowSums(post) # post normalized per row post <- sweep(post, 1, rs, "/") # posteriors p_{ij}^t 's # check and solve NaN's: may cause theoretical pbs!? snans <- sum(is.na(post)) if (snans > 0) { post[is.na(post[,1]),] <- 1/k # NaN's replaced by uniform weights sumNaNs <- sumNaNs + snans if (verb) cat(snans, "NaN's in post: ") } sumpost <- sumpost + post ### S-step # ~ matrix of component indicators simu checked OK z <- t(apply(post, 1, function(prob) rmultinom(1, 1, prob))) # cbind(post,z) # checking simulation zt <- z*t # each row of z is 0,1 hence zt holds {0,t} nsets <- colSums(z) # subsets per component sizes ### M-step for scalar parameters newlambda <- nsets/n # or colMeans(post) if EM strategy preferred! lambda_seq[iter+1, ] <- newlambda # update of the scaling (xi) parameter needs building of KM estimates # from each subsample, and integration of both # ToDo: use parallel on 2 cores to perform each subsample task! tsub1 <- t[z[,1]==1]; tsub2 <- t[z[,2]==1] # t subsamples dsub1 <- d[z[,1]==1]; dsub2 <- d[z[,2]==1] # d subsamples o1 <- order(tsub1); od1 <- cbind(tsub1,dsub1)[o1,] o2 <- order(tsub2); od2 <- cbind(tsub2,dsub2)[o2,] km1 <- KMod(od1); km2 <- KMod(od2) newscaling <- KMintegrate(km1)/KMintegrate(km2) scaling_seq[iter+1] <- newscaling # stored for final plotting if (averaged) { scaling <- mean(scaling_seq[1:(iter+1)]) lambda <- colMeans(lambda_seq[1:(iter+1),]) } else { # averaged=FALSE case, just use last update scaling <- newscaling lambda <- newlambda } ### M-step for nonparametric alpha() and s(): # unscaling the sample and order it, # keeping the associated d censoring indicator zt[,2] <- scaling*zt[,2] # unscale t's from component 2 newt <- rowSums(zt) # "unscaled" sample (sum 0 and t_i or scale*t_i ) newo <- order(newt) new.od <- cbind(newt,d)[newo,] # with associated (unchanged) d s <- KMod(new.od) # stepfun object, can be evaluated by s(t) a1 <- HRkde(new.od, t, kernelft, bw=bw) # evaluated at the original t's a2 <- HRkde(new.od, scaling*t, kernelft, bw=bw) # and at scaling*t's ### batch storage: collecting unscaled samples if (iter >= (maxit - batchsize)) { batch_t <- c(batch_t, newt) batch_d <- c(batch_d, d) cat("-- adding unscaled sample at iteration",iter,"\n") } # change <- c(lambda_seq[iter,] - lambda_seq[iter-1,], # scaling_seq[iter]- scaling_seq[iter-1]) # dll <- max(abs(change)) if (verb) { cat("iteration", iter, ": sizes=", nsets," ") cat("lambda_1=",lambda[1], "scaling=",scaling, "\n") } # printing % done b=round(iter/qt); r=iter-b*qt if (r==0) {pc <- pc+10; cat(pc,"% done\n")} iter <- iter + 1 } ###### end of SEM loops over iterations ###### colnames(post) <- colnames(posthat) <- c(paste("comp", ".", 1:k, sep = "")) lambdahat <- colMeans(lambda_seq[1:iter,]) scalinghat <- mean(scaling_seq[1:iter]) posthat <- sumpost/(iter-1) # average posteriors hazard <- HRkde(new.od, kernelft=kernelft, bw=bw) # at final unscaled sample # Would it be better to return the final unscaled sample?? cat(iter, "iterations: lambda=",lambdahat,", scaling=",scalinghat,"\n") if (sumNaNs > 0) cat("warning: ", sumNaNs,"NaN's occured in posterior computations") ###### FINISHING ###### # ToDo: average over batch set of last unscaled samples # compute average estimates via a S+M-step using posthat etc loglik <- sum(log(rs)) # "sort of" loglik with nonparam densities estimated # mimmics the parametric case, just like npEM does z <- t(apply(posthat, 1, function(prob) rmultinom(1, 1, prob))) zt <- z*t zt[,2] <- scalinghat*zt[,2] avgt <- rowSums(zt) # unscaled sample avgo <- order(avgt) avg.od <- cbind(avgt,d)[avgo,] # with associated d shat <- KMod(avg.od) # stepfun object ahat <- HRkde(avg.od, kernelft=kernelft, bw=bw) # eval at the unscaled ordered avgt a=list(t=t, d=d, lambda=lambdahat, scaling=scalinghat, posterior=post, # final posterior probabilities all.lambda=lambda_seq[1:iter,], # sequence of lambda's all.scaling=scaling_seq[1:iter], # sequence of scale loglik=loglik, # analog to parametric loglik, like npEM meanpost=posthat, # posterior proba averaged over iterations survival=s, # Kaplan-Meier last iter estimate (stepfun object) hazard=hazard, # hazard rate final estimate evaluated at final.t final.t=new.od[,1], # last unscaled sample s.hat=shat, # Kaplan-Meier average estimate t.hat= avg.od[,1], # ordered unscaled sample based on meanpost USEFUL?? avg.od=avg.od, # t.hat with associated d (for computing ahat outside) hazard.hat=ahat, # hazard rate average estimate on t.hat batch.t=batch_t, # batch sample t (not ordered) batch.d=batch_d, # associated event indicators just rep(d,batchsize) sumNaNs = sumNaNs, # total nb of NaN's in iterations while computing post ft="spRMM_SEM") class(a) = "spRMM" return(a) } ############################################## ## plot function for spRMM object : remove lognormal true pdf! # sem = spRMM_SEM object # other are true parameters, if available, for plotting references # ToDo: plot true f and S only if true param availables # pass the true pdf (like dlnorm) as well plotspRMM <- function(sem, tmax = NULL){ t <- sem$t ym <- max(sem$all.scaling) par(mfrow=c(2,2)) plot(sem$all.scaling, type="l", ylim=c(0, ym), xlab="iterations", main="scaling", ylab="") plot(sem$all.lambda[,1], ylim=c(0,1), type="l", xlab="iterations", main="weight of component 1",ylab="") # plots of Kaplan-Meier estimates # finding max time for plots if (is.null(tmax)){tmax <- max(sem$scaling*t) + 2} u <- seq(0, tmax, len=200) plot(sem$survival, xlim=c(0,tmax), ylim=c(0,1), pch=20, verticals=F, do.points=F, xlab="time", main="Survival function estimate") # plot(sem$s.hat, pch=20, verticals=F, do.points=F, col=2, add = TRUE) # pdf estimates fhat <- sem$s.hat(sem$t.hat)*sem$hazard.hat ffinal <- sem$survival(sem$final.t)*sem$hazard plot(sem$final.t, ffinal, type="l", col=1, xlim=c(0,tmax), xlab="time", ylab="density", main="Density estimate") } ## S3 method of summary for class "spRMM" summary.spRMM <- function(object, digits = 6, ...) { sem <- object if (sem$ft != "spRMM_SEM") stop("Unknown object of type ", sem$ft) cat("summary of", sem$ft, "object:\n") o <- matrix(NA, nrow = 2, ncol = 2) o[1,] <- sem$lambda o[2,2] <- sem$scaling colnames(o) <- paste("comp",1:2) rownames(o) <- c("lambda", "scaling") print(o, digits = digits, ...) cat("(pseudo) loglik at estimate: ", sem$loglik, "\n") pcc <- round(100*(1-mean(sem$d)), 2) cat(pcc, "% of the data right censored\n") } mixtools/R/regmixMH.R0000755000175100001440000000675011737456006014236 0ustar hornikusersregmixMH=function (y, x, lambda = NULL, beta = NULL, s = NULL, k = 2, addintercept = TRUE, mu = NULL, sig = NULL, lam.hyp = NULL, sampsize = 1000, omega = 0.01, thin = 1) { if (addintercept) { x = cbind(1, x) } XTX <- solve(t(x)%*%x) n <- length(y) p <- ncol(x) if (is.null(s)) { s = sqrt(1/rexp(k)) } else k = length(s) if (is.null(beta)) { beta = matrix(rnorm(p * k), p, k) } else k = ncol(beta) if (is.null(lambda)) { lambda = runif(k) lambda = lambda/sum(lambda) } else k = length(lambda) if (is.null(mu)) { mu = 0 * beta } if (is.null(sig)) { sig = rep(5 * sqrt(var(y)),k) } sig.beta = t(matrix(rep(sig,p),ncol=p)) * sqrt(matrix(rep(diag(XTX),k),ncol=k)) if(is.null(lam.hyp)) lam.hyp = rep(1,k) L.theta <- matrix(nrow = n, ncol = k) pi.beta <- matrix(nrow = p, ncol = k) pi.sigma <- c() pi.lambda <- c() new.L.theta <- matrix(nrow = length(y), ncol = k) new.pi.beta <- matrix(nrow = p, ncol = k) new.pi.sigma <- c() new.pi.lambda <- c() accepts = 0 theta <- matrix(c(beta, s, lambda), nrow = 1) thetalist <- matrix(theta, sampsize, ncol(theta), byrow=TRUE) for (i in 2:sampsize) { log.pi.beta <- dnorm(beta, mu, sig.beta, log=TRUE) log.pi.sigma <- dexp(s, 1/sig, log=TRUE) log.pi.lambda <- sum((lam.hyp-1)*log(lambda)) - lgamma(lam.hyp) + lgamma(sum(lam.hyp)) # Dirichlet log-density # log.pi.lambda <- log(ddirichlet(lambda, lam.hyp)) L.theta <- dnorm(y - x %*% beta, 0, matrix(s, n, k, byrow = TRUE) ) %*% matrix(lambda, k, 1) log.Lik.theta <- sum(log(L.theta)) log.prior <- sum(log.pi.beta) + sum(log.pi.sigma) + sum(log.pi.lambda) log.f.theta <- log.Lik.theta + log.prior new.beta <- beta + omega * matrix(rcauchy(k * p), p, k) new.sigma <- log(s) + omega * rcauchy(k) new.sigma <- exp(new.sigma) new.lambda <- lambda.pert(lambda, omega*rcauchy(k)) log.new.pi.beta <- dnorm(new.beta, mu, sig.beta, log=TRUE) log.new.pi.sigma <- dexp(new.sigma, 1/sig, log=TRUE) log.new.pi.lambda <- sum((lam.hyp-1)*log(new.lambda)) - lgamma(lam.hyp) + lgamma(sum(lam.hyp)) # Dirichlet log-density # log.new.pi.lambda <- log(ddirichlet(new.lambda, lam.hyp)) new.L.theta <- dnorm(y - x %*% new.beta, 0, matrix(new.sigma, n, k, byrow = TRUE)) %*% matrix(new.lambda, k, 1) log.new.Lik.theta <- sum(log(new.L.theta)) log.new.prior <- sum(log.new.pi.beta) + sum(log.new.pi.sigma) + sum(log.new.pi.lambda) log.new.f.theta <- log.new.Lik.theta + log.new.prior new.theta <- c(new.beta, new.sigma, new.lambda) a <- log.new.f.theta - log.f.theta r <- log(runif(1)) if (a > r & !is.na(a)) { theta <- new.theta beta <- new.beta s <- new.sigma lambda <- new.lambda accepts = accepts + 1 } if (i%%thin == 0) thetalist[i,] = theta } cat(paste("Acceptance rate: ", 100 * accepts/sampsize, "%\n", sep = "")) colnames(thetalist) <- c(paste("beta", rep(0:(p - 1), k), ".", rep(1:k, rep(p, k)), sep = ""), paste("s.", 1:k, sep = ""), paste("lambda.", 1:k, sep = "")) invisible(thetalist) a=list(x=x, y=y, theta=thetalist, components=k) class(a)="mixMCMC" a } mixtools/R/kernB.R0000755000175100001440000000012511665556372013554 0ustar hornikuserskern.B <- function (x, xi, h, g = 0) { ((1-((xi-x)/h)^2)^g)/beta(.5,g+1)/h } mixtools/R/multmixinit.R0000755000175100001440000000063711665556372015106 0ustar hornikusersmultmix.init <- function(y, lambda = NULL, theta = NULL, k = 2){ n <- nrow(y) p <- ncol(y) if (is.null(theta)) { theta = matrix(runif(p * k), k, p) theta = theta/apply(theta, 1, sum) } else k = nrow(theta) if (is.null(lambda)) { lambda = runif(k) lambda = lambda/sum(lambda) } else k = length(lambda) list(lambda=lambda, theta=theta, k=k) }mixtools/R/ise.npEM.R0000755000175100001440000000260011665556372014131 0ustar hornikusersise.npEM <- function(npEMout, component=1, block=1, truepdf, lower=-Inf, upper=Inf, plots = TRUE, ...){ # returns the Integrated Squared Error # between f_{comp,block} as estimated by npEM, # and truepdf #true2 <- function(u) truepdf(u, ...) coords <- npEMout$blockid == block bs <- sum(coords) # block size xx <- as.vector(npEMout$data[,coords]) # flatten data wts <- rep(npEMout$post[,component],bs) # duplicate weights if (is.matrix(npEMout$bandwidth)){ bw <- npEMout$bandwidth[block,component] } else bw <- npEMout$bandwidth integrand = function(u,...) { (wkde(xx,u,wts,bw) - truepdf(u,...))^2 } numint <- integrate(integrand,lower,upper, ...) if (plots) { # plot of estimated and truepdf ise <- paste(round(numint$value,4)) temp=paste(component, block, sep="") title = substitute(expression(paste("Integrated Squared Error for ", f[temp]," = ",ise,sep=""))) if (!is.finite(lower)) { lower <- min(xx) } if (!is.finite(upper)) { upper <- max(xx) } u <- seq(lower,upper, 0.01) fhat <- wkde(xx,u,wts,bw) ymax <- max(max(truepdf(u, ...)),max(fhat)) plot(u,fhat,type="l",ylim=c(0,ymax), main=eval(title),ylab="") legend("topleft",legend=c("true","fitted"),col=c(2,1),lty=c(1,1),lwd=c(2,1)) lines(u,truepdf(u, ...),lwd=2,col=2) } numint } mixtools/R/repnormmixEM.R0000755000175100001440000001176611665556372015152 0ustar hornikusersrepnormmixEM = function (x, lambda = NULL, mu = NULL, sigma = NULL, k = 2, arbmean = TRUE, arbvar = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) { if(arbmean == FALSE && arbvar == FALSE){ stop(paste("Must change constraints on mu and/or sigma!","\n")) } s = sigma n <- ncol(x) m <- nrow(x) tmp <- repnormmix.init(x = x, lambda = lambda, mu = mu, s = s, k = k, arbmean = arbmean, arbvar = arbvar) lambda <- tmp$lambda mu <- tmp$mu s <- tmp$s s.2 <- s^2 k <- tmp$k diff <- 1 iter <- 0 res <- lapply(1:k, function(i) (x - mu[i * arbmean + (1 - arbmean)])^2) comp <- lapply(1:k, function(i) lambda[i] * (2 * pi * s.2[i * arbvar + (1 - arbvar)])^(-m/2) * exp(-0.5 * apply(res[[i]], 2, sum)/s.2[i * arbvar + (1 - arbvar)])) obsloglik <- sum(log(apply(sapply(comp, rbind), 1, sum))) ll <- obsloglik restarts <- 0 while (diff > epsilon & iter < maxit) { xmu <- lapply(1:k, function(i) apply(res[[i]], 2, sum)) z = matrix(nrow = n, ncol = k) for (i in 1:n) { for (j in 1:k) { z.denom = c() for (h in 1:k) { z.denom = c(z.denom, lambda[h]/lambda[j] * (s[j * arbvar + (1 - arbvar)]/s[h * arbvar + (1 - arbvar)])^m * exp(-0.5 * ((1/s[h * arbvar + (1 - arbvar)]^2) * xmu[[h]][i] - (1/s[j * arbvar + (1 - arbvar)]^2) * xmu[[j]][i]))) } z[i, j] = 1/sum(z.denom) } } z = z/apply(z,1,sum) # z[,k]=1-apply(as.matrix(z[,(1:(k-1))]),1,sum) lambda.new <- apply(z, 2, mean) if (sum(lambda.new < 1e-08)>0 || is.na(sum(lambda.new))) { sing <- 1 } else { if(arbmean){ mu.new <- sapply(1:k, function(i) sum(t(z[, i] * t(x))))/(m * apply(z, 2, sum)) } else { mu.new <- sum(sapply(1:k, function(i) sum(t(z[, i] * t(x)))))/(m * n) } res <- lapply(1:k, function(i) (x - mu.new[i * arbmean + (1 - arbmean)])^2) if (arbvar) { s.new <- sqrt(sapply(1:k, function(i) sum(t(z[, i] * t(res[[i]]))))/(m * apply(z, 2, sum))) } else s.new <- sqrt(sum(sapply(1:k, function(i) sum(t(z[, i] * t(res[[i]])))))/(m * n)) lambda <- lambda.new mu <- mu.new s <- s.new s.2 <- s^2 sing <- sum(is.nan(z)) comp <- lapply(1:k, function(i) lambda[i] * (2 * pi * s.2[i * arbvar + (1 - arbvar)])^(-m/2) * exp(-0.5 * apply(res[[i]], 2, sum)/s.2[i * arbvar + (1 - arbvar)])) newobsloglik <- sum(log(apply(sapply(comp, rbind), 1, sum))) } if (sing > 0 || is.na(newobsloglik) || abs(newobsloglik) == Inf ){#|| sum(z) != n) { cat("Need new starting values due to singularity...", "\n") restarts <- restarts + 1 if(restarts>15) stop("Too many tries!") tmp <- repnormmix.init(x = x, k = k, arbmean = arbmean, arbvar = arbvar) lambda <- tmp$lambda mu <- tmp$mu s <- tmp$s s.2 <- s^2 k <- tmp$k diff <- 1 iter <- 0 res <- lapply(1:k, function(i) (x - mu[i * arbmean + (1 - arbmean)])^2) comp <- lapply(1:k, function(i) lambda[i] * (2 * pi * s.2[i * arbvar + (1 - arbvar)])^(-m/2) * exp(-0.5 * apply(res[[i]], 2, sum)/s.2[i * arbvar + (1 - arbvar)])) obsloglik <- sum(log(apply(sapply(comp, rbind), 1, sum))) ll <- obsloglik } else { diff <- newobsloglik - obsloglik obsloglik <- newobsloglik ll <- c(ll, obsloglik) iter <- iter + 1 if (verb) { cat("iteration=", iter, "diff=", diff, "log-likelihood", obsloglik, "\n") } } } scale.order = order(s) sigma.min = min(s) if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } cat("number of iterations=", iter, "\n") if(arbmean == FALSE){ z = z[,scale.order] colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=as.data.frame(x), lambda = lambda[scale.order], mu = mu, sigma = sigma.min, scale = s[scale.order]/sigma.min, loglik = obsloglik, posterior = z[,scale.order], all.loglik=ll, restarts = restarts, ft="repnormmixEM") class(a) = "mixEM" a } else { colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=as.data.frame(x), lambda = lambda, mu = mu, sigma = s, loglik = obsloglik, posterior = z, all.loglik=ll, restarts = restarts, ft="repnormmixEM") class(a) = "mixEM" a } } mixtools/R/normalmixMMlc.R0000644000175100001440000001767113060302617015263 0ustar hornikusers################################################################### ## "EC-MM" algorithm ## to search for a local maximum of the likelihood surface for a ## univariate finite mixture of normals with possible ## linear constraints on the mean and variance parameters. ## ## (EC-MM is ECM in the sense of Meng and Rubin, ## Biometrika 1993, where the M step is replaced by a ## Conditional MM step) ## ## version allowing for linear constraints on the mean ## mu = M beta + C, where M is matrix(k,p) and C is vector() ## C-MM step required for the linear constraint on the Variances ## var.lincstr = matrix A (k,q) s.t. iv = A g, where "i"nverse "v"ar ## iv = k-vector of 1/v_j's, and g = q-vector of unknown parameters ## no fast option, & ECM-MM algorithm forced (no ECM option available) ## init values for gparam are *required* here for the MM algorithm ## # default value for A could be diag(k) so that iv=g normalmixMMlc <- function (x, lambda = NULL, mu = NULL, sigma = NULL, k = 2, mean.constr = NULL, mean.lincstr = NULL, mean.constant = NULL, var.lincstr = NULL, gparam = NULL, epsilon = 1e-08, maxit = 1000, maxrestarts=20, verb = FALSE) { ECM <- TRUE # always required in this case A <- var.lincstr x <- as.vector(x); n <- length(x) tmp <- normalmix.init(x = x, lambda = lambda, mu = mu, s = sigma, k = k) # no arbmean & arbvar parameters lambda <- tmp$lambda; mu <- tmp$mu; sigma <- tmp$s; k <- tmp$k # arbvar <- tmp$arbvar; arbmean <- tmp$arbmean arbmean <- arbvar <- TRUE # forced for parse.constraints() warn <- options(warn=-1) # Turn off warnings (for parsing only) z <- parse.constraints(mean.constr, k=k, allsame=!arbmean) options(warn) # Reset warnings to original value meancat <- z$category; meanalpha <- z$alpha if (!is.null(mean.lincstr)) { # linear constraint on the means M <- mean.lincstr cat("linear constraint mu = M beta + C version\n") p <- dim(M)[2] # nb of columns = size of constr. mean parameter if (dim(M)[1] != k) stop("mean.lincstr and mu dimensions must agree") if (is.null(mean.constant)) C <- matrix(0,k,1) else C <- matrix(mean.constant,k,1) } notdone <- TRUE while(notdone) { # Initialize everything notdone <- FALSE tmp <- normalmix.init(x=x, lambda=lambda, mu=mu, s=sigma, k=k) lambda <- tmp$lambda; mu <- tmp$mu; k <- tmp$k; sigma <- tmp$s q <- dim(A)[2] # nb of inverse variance parameters (gamma) if(is.null(gparam)) g <- rexp(q) else g <- gparam iv <- A %*% g # inverse variances, as a one-column matrix v <- 1/iv # is it necessary to redefined sigma from g here ? sigma <- as.vector(sqrt(v)) diff <- epsilon+1 iter <- 0 postprobs <- matrix(nrow = n, ncol = k) restarts <- 0 mu <- rep(mu, k)[1:k] # is this useful? sigma <- rep(sigma,k)[1:k] # sigma still needed for post computation ## Initialization E-step here: z <- .C(C_normpost, as.integer(n), as.integer(k), as.double(x), as.double(mu), as.double(sigma), as.double(lambda), res2 = double(n*k), double(3*k), post = double(n*k), loglik = double(1), PACKAGE = "mixtools") postprobs <- matrix(z$post, nrow=n) res <- matrix(z$res2, nrow=n) # n,m matrix of squared residuals (x_i-mu_j)^2 ll <- obsloglik <- z$loglik ## EC-MM iterations while (diff > epsilon && iter < maxit) { # ECM loop, 1st M-step: condition on sigma, update lambda and mu : lambda <- colMeans(postprobs) # update for lambda # update for mu, depending on constraint type mu[meancat==0] <- meanalpha[meancat==0] if (max(meancat)>0 && is.null(mean.lincstr)) { # simple constraint for(i in 1:max(meancat)) { w <- which(meancat==i) if (length(w)==1) { mu[w] <- sum(postprobs[,w]*x) / (n*lambda[w]) } else { tmp <- t(postprobs[,w])*(meanalpha[w]/sigma[w]^2) mu[w] <- meanalpha[w] * sum(t(tmp)*x) / sum(tmp*meanalpha[w]) } } } if (!is.null(mean.lincstr)) { # linear constraint mu = M beta + C iv2 <- as.vector(iv) # A1_j = sum_i p_ij x_i/v_j A1 <- apply(postprobs*matrix(x,n,k),2,sum)*iv2 B <- diag(apply(postprobs,2,sum)*iv2) Stemp <- solve(t(M) %*% B %*% M) beta <- Stemp %*% t(M) %*% (A1 - B %*% C) mu <- as.vector(M %*% beta + C) # coerce to vector } # ECM E-step number one: z <- .C(C_normpost, as.integer(n), as.integer(k), as.double(x), as.double(mu), as.double(sigma), as.double(lambda), res2 = double(n*k), double(3*k), post = double(n*k), loglik = double(1), PACKAGE = "mixtools") postprobs <- matrix(z$post, nrow=n) res <- matrix(z$res2, nrow=n) #### ECM loop 2nd M-step: condition on mu, update lambda #### and sigma via the MM step lambda <- colMeans(postprobs) # Update variances with the MM algo on g, conditional on mu # note: code in too much steps/details for debugging # computing q-vector of denominators r0 <- postprobs*res # (i,j)th is p_{ij}*(x_i - mu_j)^2 r1 <- r0 %*% A # r1(n,q) matrix, (i,l) term =\sum_j p_{ij}A_{jl}(x_i - mu_j)^2 den <- colSums(r1) # q-vector of denominators for updating g # computing q-vector of numerators r3 <- matrix(v,nrow=k,ncol=q)*A # (k,q) matrix of v_j.A_{jl} r4 <- postprobs %*% r3 # (n,q) matrix of \sum_j p_{ij} A_{jl} v_j num <- colSums(r4) # # update of gamma parameters which gives iv, v and sigma g.new <- g*(num/den) iv <- A %*% g.new v <- 1/iv # needed for next computation of r3 sigma <- as.vector(sqrt(v)) # needed in next E-steps g <- g.new # iterates ## test for variance degeneration if(any(sigma < 1e-08)) { notdone <- TRUE cat("One of the variances is going to zero; ", "trying new starting values.\n") restarts <- restarts + 1 lambda <- mu <- sigma <- NULL # WHAT TO DO WITH g in this case? if(restarts>maxrestarts) { stop("Too many tries!") } break } # ECM E-step number two: z <- .C(C_normpost, as.integer(n), as.integer(k), as.double(x), as.double(mu), as.double(sigma), as.double(lambda), res2 = double(n*k), double(3*k), post = double(n*k), loglik = double(1), PACKAGE = "mixtools") postprobs <- matrix(z$post, nrow=n) res <- matrix(z$res2, nrow=n) newobsloglik <- z$loglik diff <- newobsloglik - obsloglik # does not increase that one? obsloglik <- newobsloglik ll <- c(ll, obsloglik) iter <- iter + 1 if (verb) { cat("iteration", iter, ": log-lik diff =", round(diff,4), " log-lik =", obsloglik, "\n") } } } # summurizing and returning structure if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } cat("number of iterations=", iter, "\n") if(arbmean == FALSE){ scale.order = order(sigma) sigma.min = min(sigma) postprobs = postprobs[,scale.order] colnames(postprobs) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=x, lambda = lambda[scale.order], mu = mu, sigma = sigma.min, scale = sigma[scale.order]/sigma.min, loglik = obsloglik, posterior = postprobs, all.loglik=ll, restarts=restarts, gamma = g, ft="normalmixMMlc") } else { colnames(postprobs) <- c(paste("comp", ".", 1:k, sep = "")) a=list(x=x, lambda = lambda, mu = mu, sigma = sigma, loglik = obsloglik, posterior = postprobs, all.loglik=ll, restarts=restarts, beta = beta, gamma = g, ft="normalmixMMlc") } class(a) = "mixEM" a } mixtools/R/logisregmixEM.R0000755000175100001440000000772012777447234015277 0ustar hornikuserslogisregmixEM=function (y, x, N = NULL, lambda = NULL, beta = NULL, k = 2, addintercept = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) { if (addintercept) { x = cbind(1, x) } else x = as.matrix(x) n <- length(y) p <- ncol(x) if (is.null(N)) { N = rep(1, n) } tmp <- logisregmix.init(y = y, x = x, N = N, lambda = lambda, beta = beta, k = k) lambda <- tmp$lambda beta <- tmp$beta k <- tmp$k xbeta <- x %*% beta z <- matrix(0, n, k) diff <- 1 iter <- 0 comp <- t(t(dbinom(y, size = N, prob = inv.logit(xbeta))) * lambda) compsum <- apply(comp, 1, sum) obsloglik <- sum(log(compsum)) ll <- obsloglik restarts <- 0 while (diff > epsilon && iter < maxit) { j.star = apply(xbeta, 1, which.max) for (i in 1:n) { for (j in 1:k) { z[i, j] = lambda[j]/lambda[j.star[i]] * (inv.logit(xbeta[i, j])/inv.logit(xbeta[i, j.star[i]]))^y[i] * ((1 - inv.logit(xbeta[i, j]))/(1 - inv.logit(xbeta[i, j.star[i]])))^(N[i] - y[i]) } } z = z/apply(z, 1, sum) z[,k]=1-apply(as.matrix(z[,(1:(k-1))]),1,sum) if (sum(is.na(z)) > 0) { cat("Need new starting values due to underflow...", "\n") restarts <- restarts + 1 if(restarts>15) stop("Too many tries!") tmp <- logisregmix.init(y = y, x = x, N = N, k = k) lambda <- tmp$lambda beta <- tmp$beta k <- tmp$k diff <- 1 iter <- 0 xbeta <- x %*% beta comp <- t(t(dbinom(y, size = N, prob = inv.logit(xbeta))) * lambda) compsum <- apply(comp, 1, sum) obsloglik <- sum(log(compsum)) ll <- obsloglik } else { lambda <- apply(z, 2, mean) lm.out = lapply(1:k, function(j) try(glm.fit(x, cbind(y, N - y), weights = z[, j], family = binomial()), silent = TRUE)) beta = sapply(lm.out, coef) xbeta <- x %*% beta comp <- t(t(dbinom(y, size = N, prob = inv.logit(xbeta))) * lambda) compsum <- apply(comp, 1, sum) newobsloglik <- sum(log(compsum)) if (abs(newobsloglik) == Inf || is.na(newobsloglik) || newobsloglik < obsloglik){# || sum(z) != n) { cat("Need new starting values due to singularity...", "\n") restarts <- restarts + 1 if(restarts>15) stop("Too many tries!") tmp <- logisregmix.init(y = y, x = x, N = N, k = k) lambda <- tmp$lambda beta <- tmp$beta k <- tmp$k diff <- 1 iter <- 0 xbeta <- x %*% beta comp <- t(t(dbinom(y, size = N, prob = inv.logit(xbeta))) * lambda) compsum <- apply(comp, 1, sum) obsloglik <- sum(log(compsum)) ll <- obsloglik } else { diff <- newobsloglik - obsloglik obsloglik <- newobsloglik ll <- c(ll, obsloglik) iter <- iter + 1 if (verb) { cat("iteration=", iter, "diff=", diff, "log-likelihood", obsloglik, "\n") } } } } if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } beta <- matrix(beta,ncol=k) rownames(beta) <- c(paste("beta", ".", 0:(p - 1), sep = "")) colnames(beta) <- c(paste("comp", ".", 1:k, sep = "")) colnames(z) <- c(paste("comp", ".", 1:k, sep = "")) cat("number of iterations=", iter, "\n") a = list(x = x, y = y, lambda = lambda, beta = beta, loglik = obsloglik, posterior = z, all.loglik = ll, restarts=restarts, ft = "logisregmixEM") class(a) = "mixEM" a } mixtools/R/FDR_spEM.R0000644000175100001440000001270113060302020014014 0ustar hornikusers################################################################# ## FUNCTIONS FOR FALSE DISCOVERY RATE (FDR) ESTIMATION ## ## USING SEMI-PARAMETRIC EM-LIKE ALGORITHMS ## ## D. CHAUVEAU ## ## mixtools 1.0 addition ## ################################################################# ################################################################# ## EM-like algorithm for a nonparametric univariate mixture model ## - Component 1 known = N(0,1) ## = the pdf of a probit transform of pvalue under H0 ## - component 2 symmetric shifted from a location parameter mu ## NB: stochastic=TRUE not implemented, parameter removed here spEMsymlocN01 <- function(x, mu0=2, bw = bw.nrd0(x), h=bw, eps = 1e-8, maxiter=100, verbose = FALSE, plotf=FALSE){ bw <- h # h is alternative bandwidth argument, for backward compatibility n <- length(x) # if (length(mu0)>1) m <- length(mu0) else m <- mu0 m <- 2 # fixed number of components in this model z.hat <- matrix(0, nrow=n, ncol=m) fkernel <- matrix(0, nrow=n, ncol=m) tt0 <- proc.time() o <- order(x) # for plotting fhat's if requested kmeans <- kmeans(x, mu0) # is this a good init for probit data? for(j in 1:m) { z.hat[kmeans$cluster==j, j] <- 1 } iter <- 0 finished <- FALSE lambda <- matrix(0,maxiter,m) mu <- rep(0,maxiter) # only component 2 mean used in this case while (!finished) { #while (max(abs(change)) > eps & iter < maxiter) { iter <- iter + 1 t0 <- proc.time() ## M-Step lambda[iter,] <- colMeans(z.hat) # mu[iter,] <- apply(sweep(z.hat, 1, x, "*"), 2, mean)/lambda[iter,] mu[iter] <- sum(x*z.hat[,2])/(n*lambda[iter,2]) # ## second component density estimation step evaluated at x_i-mu's ans <- .C(C_KDEsymloc1comp, n=as.integer(n), mu=as.double(mu[iter]), lbd2=as.double(lambda[iter,2]), x=as.double(x), bw=as.double(bw), z=as.double(z.hat), f = double(n)) #add PACKAGE="mixtools" option when integrated # successive plots of fhat's (for debugging mostly) if (plotf) { if (iter==1) plotfunc <- plot else plotfunc <- lines plotfunc(x[o],ans$f[o],type="l", col=iter) } # version lambda_j f_j(xi) specific for component one = N(0,1) # NB: this is the only place where the known component pdf is used lambda.f <- cbind(lambda[iter,1]*dnorm(x), lambda[iter,2]*ans$f) ## E-step (for next iteration) z.hat <- lambda.f/rowSums(lambda.f) finished <- iter >= maxiter if (iter>1) { # This convergence criterion is too simplistic: change <- c(lambda[iter,] - lambda[iter-1,], mu[iter]-mu[iter-1]) finished <- finished | (max(abs(change)) < eps) } if (verbose) { t1 <- proc.time() cat("iteration ", iter, " lambda ", round(lambda[iter,], 4), " mu ", round(mu[iter], 4)) cat(" time", (t1 - t0)[3], "\n") } } if (verbose) { tt1 <- proc.time() cat("lambda ", round(lambda[iter,], 4)) cat(", total time", (tt1 - tt0)[3], "s\n") } return(structure(list(data=x, posteriors=z.hat, lambda=lambda[1:iter,], bandwidth=bw, lambdahat=lambda[iter,], mu = mu[1:iter], muhat = mu[iter], symmetric=TRUE), class="spEMN01")) } ####################################################### # plot mixture pdf for the semiparametric mixture model # with component 1 pdf passed in the knownpdf parameter # uses a weighted kernel density estimate of the nonparametric component 2 # a = object of class "spEMN01" as returned by spEMsymlocNorm plot.spEMN01 <- function(x, bw=x$bandwidth, knownpdf=dnorm, add.plot=FALSE, ...) { t <- seq(min(x$data), max(x$data), len=200) f1 <- x$lambdahat[1]*knownpdf(t) f2 <- x$lambdahat[2]*wkde(x$data-x$muhat, u=t-x$muhat, w=x$post[,2], bw=bw, sym=TRUE) f <- f1+f2 if (!add.plot) plot(t,f1+f2, type="l", ...) else lines(t,f1+f2, ...) lines(t,f1, col=2); lines(t,f2, col=3) } #################################################### # plot and compare FDR for 1 or 2 EM-like strategies # for mixtools 1.0 # post NEEDS to be sorted by p plotFDR <- function(post1, post2=NULL, lg1="FDR 1", lg2=NULL, title=NULL, compH0=1, alpha=0.1, complete.data =NULL, pctfdr=0.3) { n <- dim(post1)[1] cs1 <- cumsum(post1[,compH0]) # local FDR(p_i)'s fdr1 <- cs1/(1:n) # FDR(p_i)'s if (is.null(title)) title <- paste("FDR estimate(s), n=",n) if (!is.null(post2)) { cs2 <- cumsum(post2[,compH0]) # local FDR(p_i)'s fdr2 <- cs2/(1:n) if (is.null(lg2)) lg2 <- "FDR 2" } i1 <- sum(fdr1 pctfdr # cat("index",i1) plot(fdr1[1:i1], type="l", main=title, col=1, ylim=c(0,fdr1[i1]), xlab="index", ylab="probability") if (!is.null(post2)) lines(fdr2[1:i1], col=2) abline(alpha, 0, lty=3) if (!is.null(complete.data)) { # true complete data available V <- cumsum(complete.data[,1]==1) # cumulative nb of items under H0 trueFDR <- V/(1:n) lines(trueFDR[1:i1], lty=2, col=3) if (!is.null(post2)) legend("topleft", c(lg1,lg2,"True FDR"),col=1:3, lty=c(1,1,2)) if (is.null(post2)) legend("topleft", c(lg1,"True FDR"),col=c(1,3), lty=c(1,2)) } else { if (!is.null(post2)) legend("topleft", c(lg1,lg2), col=1:2, lty=c(1,1)) if (is.null(post2)) legend("topleft", lg1, col=1, lty=1) } } mixtools/R/gammamixEM.R0000755000175100001440000000456211665556372014546 0ustar hornikusersgammamixEM <- function (x, lambda = NULL, alpha = NULL, beta = NULL, k = 2, epsilon = 1e-08, maxit = 1000, maxrestarts=20, verb = FALSE) { x <- as.vector(x) tmp <- gammamix.init(x = x, lambda = lambda, alpha=alpha, beta=beta, k=k) lambda <- tmp$lambda alpha <- tmp$alpha beta <- tmp$beta theta <- c(alpha,beta) k <- tmp$k iter <- 0 mr <- 0 diff <- epsilon+1 n <- length(x) dens <- NULL dens <- function(lambda, theta, k){ temp<-NULL alpha=theta[1:k] beta=theta[(k+1):(2*k)] for(j in 1:k){ temp=cbind(temp,dgamma(x,shape=alpha[j],scale=beta[j])) } temp=t(lambda*t(temp)) temp } old.obs.ll <- sum(log(apply(dens(lambda, theta, k),1,sum))) ll <- old.obs.ll gamma.ll <- function(theta, z,lambda, k) -sum(z*log(dens(lambda,theta,k))) while(diff > epsilon && iter < maxit){ dens1=dens(lambda,theta,k) z=dens1/apply(dens1,1,sum) lambda.hat=apply(z,2,mean) out=try(suppressWarnings(nlm(gamma.ll,p=theta,lambda=lambda.hat,k=k,z=z)), silent=TRUE) if(class(out)=="try-error"){ cat("Note: Choosing new starting values.", "\n") if(mr==maxrestarts) stop(paste("Try different number of components?","\n")) mr <- mr+1 tmp <- gammamix.init(x = x, k=k) lambda <- tmp$lambda alpha <- tmp$alpha beta <- tmp$beta theta <- c(alpha,beta) k <- tmp$k iter <- 0 diff <- epsilon+1 old.obs.ll <- sum(log(apply(dens(lambda, theta, k),1,sum))) ll <- old.obs.ll } else{ theta.hat=out$estimate alpha.hat=theta.hat[1:k] beta.hat=theta.hat[(k+1):(2*k)] new.obs.ll <- sum(log(apply(dens(lambda.hat, theta.hat, k),1,sum))) diff <- new.obs.ll-old.obs.ll old.obs.ll <- new.obs.ll ll <- c(ll,old.obs.ll) lambda=lambda.hat theta=theta.hat alpha=alpha.hat beta=beta.hat iter=iter+1 if (verb) { cat("iteration =", iter, " log-lik diff =", diff, " log-lik =", new.obs.ll, "\n") } } } if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } cat("number of iterations=", iter, "\n") theta=rbind(alpha,beta) rownames(theta)=c("alpha","beta") colnames(theta)=c(paste("comp", ".", 1:k, sep = "")) a=list(x=x, lambda = lambda, gamma.pars = theta, loglik = new.obs.ll, posterior = z, all.loglik=ll, ft="gammamixEM") class(a) = "mixEM" a } mixtools/R/tryflare.R0000755000175100001440000000672111665556372014353 0ustar hornikuserstry.flare <- function (y, x, lambda = NULL, beta = NULL, sigma = NULL, alpha = NULL, nu=1, epsilon = 1e-04, maxit = 10000, verb = FALSE, restart=50) { loglik <- function(res, sigma, lambda, alpha) { tmp <- lambda*dnorm(res,sd=sqrt(sigma)) + (1-lambda)*dexp(res,rate=alpha) sum(log(tmp)) } Q=function(res, sigma, lambda, alpha, z) { Q <- sum(z*log(lambda)) + sum((1-z)*log(1-lambda)) - log(2*pi*sigma)*sum(z)/2 - sum(z*res^2)/2/sigma + log(alpha)*sum(1-z) - alpha*sum((1-z)*res) Q } Z <- function(res, sigma, lambda, alpha) { z=rep(1, length(res)) z[res>0] = lambda / (lambda+(1-lambda)* sqrt(2*pi*sigma) * alpha * as.vector(exp(res[res>0]^2/2/sigma - alpha*res[res>0]))) z } x <- cbind(1, x) n <- length(y) p <- ncol(x) est <- flaremix.init(y=y, x=x, lambda=lambda, beta=beta, sigma=sigma, alpha=alpha) lambda <- est$lambda beta <- est$beta sigma <- est$sigma alpha <- est$alpha diff <- 1 iter <- 0 counts <- 0 ll.counts<-0 xbeta <- x %*% beta res <- y - xbeta dn <- dnorm(res,sd=sqrt(sigma)) de <- dexp(res,rate=alpha) obsloglik <- loglik(res, sigma, lambda, alpha) ll<-obsloglik Q1 <- -Inf all.Q <- NULL z=Z(res,sigma,lambda,alpha) while (sum(abs(diff) > epsilon)>0 && iter < maxit) { iter=iter+1 temp=(solve(-1/sigma*t(x) %*% sweep(x, 1, z, "*") + nu*t(x) %*% sweep(x, 1, (1-z)/(y-x%*%beta), "*"))%*%(1/sigma*(apply(sweep(x,1,z*(y-x%*%beta),"*"),2,sum)) +alpha*apply(sweep(x,1,1-z,"*"),2,sum))) m=1 while(m0) beta.new=beta else beta.new=beta.new xbeta.new <- x %*% beta.new res.new <- y-xbeta.new Q.beta <- Q(res.new,sigma,lambda,alpha,z) if(Q.beta < Q1) j=j+1 else j=101 } if(j==restart) stop(paste("Too many attempts at step-halving!","\n")) z.new=Z(res.new,sigma,lambda,alpha) lambda.new <- mean(z.new) sigma.new <- sum(z.new*(res.new^2))/sum(z.new) alpha.new <- sum(1-z.new[res.new>0])/sum((1-z.new[res.new>0])*res.new[res.new>0]) diff <- c(lambda.new,beta.new,sigma.new,alpha.new)-c(lambda,beta,sigma,alpha) z.new2=Z(res,sigma,lambda,alpha) # z.new2=z.new2/apply(z.new2,1,sum) Q.new <- Q(res.new,sigma.new,lambda.new,alpha.new,z.new2) q.diff=Q.new-Q1 if(q.diff<0) m=m+1 else m=101 } if(m==restart) stop(paste("Too many attempts at step-halving!","\n")) lambda <- lambda.new beta <- beta.new xbeta <- xbeta.new res <- res.new sigma <- sigma.new alpha <- alpha.new z<-z.new2 newobsloglik <- loglik(res.new, sigma.new, lambda.new, alpha.new) ll<-c(ll, newobsloglik) counts <- counts + (Q.newnewobsloglik) Q1 <- Q.new obsloglik <- newobsloglik if(verb==TRUE) cat("iteration=", iter, "diff=", diff, "log-likelihood", obsloglik, "\n") } if (iter == maxit) { cat("WARNING! NOT CONVERGENT!", "\n") } # par(mfrow=c(2,1)) # plot(all.Q,type="l") # plot(ll,type="l") cat("number of iterations=", iter, "\n") a=list(x=x,y=y,posterior=cbind(z,1-z),lambda=c(lambda,1-lambda),beta=beta,sigma=sigma,alpha=alpha,loglik=obsloglik,all.loglik=ll,ft="flaremixEM") class(a)="mixEM" a } mixtools/R/flaremixinit.R0000755000175100001440000000111711665556372015210 0ustar hornikusersflaremix.init <- function(y, x, lambda=NULL, beta=NULL, sigma=NULL, alpha=NULL){ n<-length(y) if(is.null(lambda)){ lambda=runif(2) lambda=lambda/sum(lambda) } lm.out=lm(y~x[,2]) if(is.null(beta)){ beta=lm.out$coef beta[1]=beta[1]+mean(sort(lm.out$residuals)[(n-10):n]) beta[2]=rnorm(1,mean=beta[2],sd=abs(beta[2]/10)) } if(is.null(sigma)){ sigma=rexp(1,rate=sqrt(1/anova(lm.out)$Mean[2])) } if(is.null(alpha)){ a=1/sum(lm.out$res[lm.out$res>0]) alpha=abs(rnorm(1,a)) } list(lambda=lambda[1], beta=matrix(beta,ncol=1), sigma=sigma, alpha=alpha) } mixtools/R/plotMCMC.R0000755000175100001440000000232211665556372014132 0ustar hornikusersplot.mixMCMC <- function(x, trace.plots = TRUE, summary.plots = FALSE, burnin = 2000, ...){ mix.object <- x if (!inherits(mix.object, "mixMCMC")) stop("Use only with \"mixMCMC\" objects!") if(trace.plots==TRUE){ k<-mix.object$components theta<-mix.object$theta p.k=ncol(theta) p=p.k/k name.theta<-colnames(theta) par(mfrow=c(p,k)) for(i in 1:p){ for(j in 1:k){ plot(theta[,(i-1)*k+j],type="l",ylab=name.theta[(i-1)*k+j]) } } } #regmixMH if(is.matrix(mix.object$x) == TRUE && is.null(mix.object$y) == FALSE && summary.plots == TRUE){ y<-mix.object$y n<-length(y) x<-mix.object$x p<-ncol(x) k<-mix.object$components theta<-mix.object$theta if(p!=2 || sum(x[,1])!=n){ stop(paste("This only works for simple linear regression!","\n")) } par(mfrow=c(1,1)) plot(x[,2],y,main="Credible Regions",xlab="Predictor",ylab="Response") #plot(theta[-c(1:burnin),seq(1,2*k-1,by=2)],theta[-c(1:burnin),seq(2,2*k,by=2)],col=0) for(i in 1:k){ #points(theta[-c(1:burnin),2*i-1],theta[-c(1:burnin),2*i],col=(i+1)) regcr(beta=cbind(theta[-c(1:burnin),2*i-1],theta[-c(1:burnin),2*i]),col=(i+1), x=x[,2], plot=TRUE,...) } } } mixtools/R/density.spEM.R0000755000175100001440000000351111665556372015037 0ustar hornikusers# Method for "density" generic: Takes an spEM object and returns # a corresponding KDE for the appropriate component and block, evaluated # at the given set of points. # Does not use the FFT like the density.default function does; still # quite fast, but not optimized for speed density.spEM <- function (x, u = NULL, component=1, block = 1, scale = FALSE, ...) { m <- NCOL(x$posteriors) r <- NCOL(x$data) n <- NROW(x$data) if (is.null(blockid <- x$blockid)) { coords <- 1 u2 <- rep(1, r) } else { u2 <- match(x$blockid, unique(x$blockid)) # convert blockid to integers 1, 2, ... coords <- blockid == block if (!any(coords)) stop("Illegal value of block argument") } stackedx <- x$data[rep(1:n,m),] cs <- colSums(x$posteriors) z.tmp <- sweep(x$posteriors, 2, cs, "/") z.tmp[, cs==0] <- 1/NROW(z.tmp) # Just in case wts <- rep(as.vector(z.tmp),r) mu <- matrix(x$muhat, nrow=m) sigma <- matrix(x$sigmahat, nrow=m) scaledx <- as.vector((stackedx - mu[rep(1:m, each=n), u2])/ sigma[rep(1:m, each=n), u2]) bw <- x$bandwidth if (is.null(u)) { xx <- as.vector(as.matrix(x$data)[, coords]) u = seq(min(xx) - 4 * bw, max(xx) + 4 * bw, len = 250) } # This part isn't used for now: if (!is.null(x$symmetric) && x$symmetric) { d <- wkde(x=scaledx, u=(u-mu[component, block])/sigma[component, block], w=wts, bw=bw, sym=TRUE) / sigma[component, block] } else { d <- wkde(x=scaledx, u=(u-mu[component, block])/sigma[component, block], w=wts, bw=bw) / sigma[component, block] } if (scale) d <- d * x$lambdahat[component] structure(list(x = u, y = d, bw = bw, n = n, call = match.call(), data.name = deparse(substitute(x)), has.na = FALSE), class = "density") } mixtools/R/plot.npEM.R0000755000175100001440000000406611665556372014337 0ustar hornikusersplot.spEM <- plot.npEM <- function(x, blocks = NULL, hist=TRUE, addlegend=TRUE, scale = TRUE, title=NULL, breaks="Sturges", ylim=NULL, dens.col, newplot=TRUE, pos.legend="topright", cex.legend=1, ...) { r <- NCOL(x$data) m <- NCOL(x$posteriors) blockid <- x$blockid if (is.null(blocks)) { if(!is.null(blockid)) { blocks <- 1:max(blockid) } else { blocks <- blockid <- 1:r } } ask <- par(ask=(length(unique(blocks))>1)) ylim.orig <- ylim out <- list(x=list(), y=list()) if (!newplot) { hist <- FALSE } for(i in 1:length(blocks)) { coords <- blockid == blocks[i] ylim <- ylim.orig if (is.null(title)) { if (r>1) { tt <- paste(which(coords), collapse=",") tt <- paste("Coordinate", ifelse(sum(coords)>1, "s ", " "), tt, sep="") } else { tt <- "Density Curves" } } else { tt <- rep(title,length(blocks))[i] } dx <- dy <- NULL for (j in 1:m) { d <- density(x, component=j, block=blocks[i], scale=scale) dx <- cbind(dx, d$x) dy <- cbind(dy, d$y) } xx <- as.vector(as.matrix(x$data)[,coords]) if (is.null(ylim)) { ylim=range(dy) if (hist) { ylim[2] <- max(ylim[2], hist(xx, breaks=breaks, plot=FALSE)$density) } } if (!hist && newplot) { pf <- plot # Use plot or hist as plotting fn the 1st time only, then lines } else { pf <- lines } if (hist) { hist(xx, breaks=breaks, prob=TRUE, ylim=ylim, main="", ...) } if (missing(dens.col)) dens.col <- 2:(m+1) dens.col <- rep(dens.col, length.out=m) for (j in 1:m) { pf(dx[,j],dy[,j], type="l", lwd=2, col=dens.col[j], ylim=ylim, ...) pf <- lines } if (addlegend) { legend(pos.legend, legend=round(x$lambdahat,3), fill=dens.col, cex=cex.legend) out$x[[i]]<-dx out$y[[i]]<-dy } if (newplot) { title(main=tt, ...) } } par(ask=ask) invisible(out) } mixtools/R/plotseq.npEM.R0000755000175100001440000000306111665556372015042 0ustar hornikusers# plots SEQuence from npEM object # function for plotting the scalar parameters sequences along iterations # if object x comes from npEM, just the x$lambda sequence # if object x comes from spEM, both x$lambda and x$mu sequences plotseq <- function(x, ...) UseMethod("plotseq") plotseq.npEM <- function(x, ...) { # ask <- par(ask=TRUE) r <- NCOL(x$data) n <- NROW(x$data) m <- length(x$lambdahat) iter <- NROW(x$lambda) xlabel <- paste("iterations") nbcol <- 1 if (!is.null(x$symmetric) && x$symmetric) nbcol <- 2 par(mfcol=c(m, nbcol)) # in all cases, plots the lambda's for (j in 1:m) { estim <- paste(round(x$lambdahat[j],3)) tt <- substitute(expression(paste("sequence of ",lambda[j], ", estimate ",widehat(lambda[j]),"=", estim, sep=""))) ylabel <- substitute(expression(paste(lambda[j],sep=""))) plot(x$lambda[,j], type="l", main=eval(tt), xlab=xlabel, ylab=eval(ylabel), ...) lines(c(0,iter),rep(x$lambdahat[j],2),col=2,lty=2) } ## for symmetric location spEM case plots mu if (!is.null(x$symmetric) && x$symmetric) { for (j in 1:m) { estim <- paste(round(x$muhat[j],3)) tt <- substitute(expression(paste("sequence of ",mu[j], ", estimate ",widehat(mu[j]),"=",estim,sep=""))) ylabel <- substitute(expression(paste(mu[j],sep=""))) plot(x$mu[,j], type="l", main=eval(tt), ylab=eval(ylabel), xlab=xlabel, ...) lines(c(0,iter),rep(x$muhat[j],2),col=2,lty=2) } # legend("topright", legend=round(x$muhat,3), fill=2:(m+1)) } # structure (list (call=match.call())) } mixtools/R/logitfns.R0000755000175100001440000000007312777447100014333 0ustar hornikuserslogit <- binomial()$linkfun inv.logit <- binomial()$linkinvmixtools/R/parse.constraints.R0000755000175100001440000000242511665556372016200 0ustar hornikusersparse.constraints <- function(constr, k=2, allsame=FALSE) { if (!is.null(constr)) { alpha <- category <- rep(NA, k) u <- sum(is.na(constr)) # Number of unconstrained means category[is.na(constr)] <- 1:u numcon <- as.numeric(constr) # All non-numbers become NA here. category[!is.na(numcon)] <- 0 # These means will remain fixed constants alpha[!is.na(numcon)] <- numcon[!is.na(numcon)] w <- which(is.na(numcon) & !is.na(constr)) # w indexes only character constraints if (length(w)>0) { # Process all the character (equality) constraints constr <- as.character(constr) alpha[w] <- constr[w] nc <- nchar(constr)[w] # nc: number of characters (in each constraint) ss <- substr(constr[w], nc, nc) # extract final character category[w] <- u + match(ss, unique(ss)) # make categories for final characters alpha[w] <- substr(alpha[w], 1, nc-1) # Now extract number before final character alpha[w][alpha[w]=="-"] <- "-1" alpha[w][alpha[w]==""] <- "1" } alpha <- as.numeric(alpha) # Entire alpha vector should be numeric or NA now. } else { alpha <- rep(1,k) if(allsame) category <- alpha else category <- 1:k } list(category=category, alpha=alpha) } mixtools/R/wkde.R0000755000175100001440000000045211665556372013450 0ustar hornikuserswkde <- function(x, u=x, w=rep(1, length(x)), bw=bw.nrd0(as.vector(x)), sym=FALSE) { if (sym) { return((wkde(x, u, w, bw) + wkde(x, -u, w, bw))/2) } Km <- exp(outer(x/bw, u/bw, function(a,b) -(a-b)^2/2)) normw <- matrix(w/sum(w), nrow=1) as.vector(normw %*% Km) / (bw * sqrt(2*pi)) } mixtools/R/summary.mixEM.R0000644000175100001440000000513213055603106015205 0ustar hornikuserssummary.mixEM <- function(object, digits=6, ...){ x <- object o <- switch(x$ft, "multmixEM" = rbind(x$lambda, t(x$theta)), "normalmixEM" = rbind(x$lambda, x$mu, x$sigma), "repnormmixEM" = rbind(x$lambda, x$mu, x$sigma), "regmixEM" = rbind(x$lambda, x$sigma, x$beta), "regmixEM.lambda" = rbind(x$lambda, x$sigma, x$beta), "regmixEM.mixed" = rbind(x$lambda, x$sigma, x$beta), "regmixEM.loc" = rbind(x$sigma, x$beta), "regmixEM.chgpt" = rbind(x$lambda, x$sigma), "logisregmixEM" = rbind(x$lambda, x$beta), "poisregmixEM" = rbind(x$lambda, x$beta), "expRMM_EM" = rbind(x$lambda, x$rate), # Reliability Mixt Model censored exp mixture "weibullRMM_SEM" = rbind(x$lambda, x$shape, x$scale), # RMM censored weibull mixture "mvnormalmixEM" = rbind(x$lambda, matrix(unlist(x$mu), byrow=TRUE, nrow=length(x$lambda))), "normalmixMMlc" = rbind(x$lambda, x$mu, x$sigma), stop("Unknown mixEM object of type ", x$ft)) colnames(o) <- paste("comp",1:ncol(o)) rownames(o) <- switch(x$ft, "multmixEM" = c("lambda", paste("theta", 1:ncol(x$theta), sep="")), "normalmixEM" = c("lambda", "mu", "sigma"), "repnormmixEM" = c("lambda", "mu", "sigma"), "regmixEM" = c("lambda", "sigma", paste("beta", 1:nrow(x$beta), sep="")), "regmixEM.lambda" = c("lambda", "sigma", paste("beta", 1:nrow(x$beta), sep="")), "regmixEM.mixed" = c("lambda", "sigma", paste("beta", 1:nrow(x$beta), sep="")), "regmixEM.loc" = c("sigma", paste("beta", 1:nrow(x$beta), sep="")), "regmixEM.chgpt" = c("lambda", "sigma"), "logisregmixEM" = c("lambda", paste("beta", 1:nrow(x$beta), sep="")), "poisregmixEM" = c("lambda", paste("beta", 1:nrow(x$beta), sep="")), "expRMM_EM" = c("lambda", "rate"), "weibullRMM_SEM" = c("lambda", "shape", "scale"), "mvnormalmixEM" = c("lambda", paste("mu", 1:length(x$mu), sep="")), "normalmixMMlc" = c("lambda", "mu", "sigma")) cat("summary of", x$ft, "object:\n") print(o, digits=digits) cat("loglik at estimate: ", x$loglik, "\n") if (x$ft == "expRMM_EM") cat(100*(1-mean(x$d)), "% of the data right censored\n") if (x$ft == "weibullRMM_SEM") cat(100*(1-mean(x$d)), "% of the data right censored\n") } mixtools/R/multmixmodelsel.R0000755000175100001440000000357012546522756015744 0ustar hornikusersmultmixmodel.sel <- function (y, comps = NULL, ...) { if (class(y)=="list" && !is.null(y$y)) { y <- y$y } n = dim(y)[1] p = dim(y)[2] m = min(apply(y, 1, sum)) # m = unique(apply(y, 1, sum)) # if (length(m) > 1) { # stop("Each row of y must have same total number of observations") # } max.allowed.comp = floor((m + 1)/2) if (is.null(comps)) comps = 1:max.allowed.comp if (max(comps) > max.allowed.comp) { stop(paste("No more than", max.allowed.comp, "components allowed", "with", m, "multinomial trials")) } aic = NULL bic = NULL caic = NULL icl = NULL ll = NULL theta = matrix(0, 0, p) lambda = NULL for (k in sort(comps)) { # cat("Testing", k, "components: ") # newrows = k - nrow(theta) tmp <- multmix.init(y, k = k) theta <- tmp$theta lambda <- tmp$lambda if (k!=1){ em = multmixEM(y, lambda = lambda, theta = theta, k = k, ...) loglik = em$loglik lambda = em$lambda theta = em$theta # cat(em$iter, "iterations.\n") } else loglik = sum(log(exp(apply(y,1,ldmult,theta=theta)))) aic = c(aic, loglik - (p * k - 1)) bic = c(bic, loglik - log(n) * (p * k - 1)/2) caic = c(caic, loglik - (log(n) + 1) * (p * k - 1)/2) if (k==1) { icl = c(icl, loglik - log(n) * (p * k - 1)/2) } else icl = c(icl, loglik - log(n) * (p * k - 1)/2 - sum(lambda * log(lambda))) ll = c(ll, loglik) } out = rbind(aic, bic, caic, icl, ll) # Winner = apply(out, 1, function(x) (1:length(x))[x == # max(x)]) win = apply(out, 1, which.max) rownames(out) = c("AIC", "BIC", "CAIC", "ICL", "Loglik") colnames(out) = sort(comps) Winner = as.numeric(colnames(out)[win]) cbind(out, Winner) } mixtools/R/zzz.R0000755000175100001440000000053111736707362013345 0ustar hornikusers.onAttach <- function(lib, pkg){ info <- packageDescription("mixtools") packageStartupMessage( paste('mixtools package, version ', info$Version, ', Released ', info$Date, '\n', 'This package is based upon work supported by the National Science ', 'Foundation under Grant No. SES-0518772.\n', sep="") ) } mixtools/R/testequality.R0000755000175100001440000000405411665556372015255 0ustar hornikuserstest.equality <- function(y, x = NULL, arbmean=TRUE, arbvar=FALSE, mu=NULL, sigma=NULL, beta=NULL, lambda=NULL,...){ if(arbmean==arbvar) stop("Change either 'arbmean' or 'arbvar'!") if(arbmean==FALSE){ w=1 while(w==1){ if(is.null(x)){ H0=normalmixEM(x=y,arbmean=FALSE,arbvar=TRUE, mu=mu, sigma=sigma, lambda=lambda,...) k=length(H0$lambda) # H1=normalmixEM(x=y,arbmean=TRUE,arbvar=TRUE,lambda=H0$lambda,mu=rep(H0$mu,k)*(1:k),sigma=(H0$scale*H0$sigma),...) H1=normalmixEM(x=y,arbmean=TRUE,arbvar=TRUE,lambda=H0$lambda,mu=NULL,sigma=(H0$scale*H0$sigma),...) D=2*(H1$loglik-H0$loglik) df=k-1 alpha=1-pchisq(D,df=df) } else{ H0=regmixEM(y=y,x=x,arbmean=FALSE,arbvar=TRUE,beta=beta, sigma=sigma, lambda=lambda,...) k=length(H0$lambda) # H1=regmixEM(y=y,x=x,arbmean=TRUE,arbvar=TRUE,lambda=H0$lambda,beta=matrix(rep(H0$beta,k),k)*(1:k),sigma=(H0$scale*H0$sigma),...) H1=regmixEM(y=y,x=x,arbmean=TRUE,arbvar=TRUE,lambda=H0$lambda,beta=NULL,sigma=(H0$scale*H0$sigma),...) p=nrow(H1$beta) D=2*(H1$loglik-H0$loglik) df=p*(k-1) alpha=1-pchisq(D,df=df) } if(D<0){ w=1 mu=NULL sigma=NULL lambda=NULL } else w=2 } } if(arbvar==FALSE){ w=1 while(w==1){ if(is.null(x)){ H0=normalmixEM(x=y,arbmean=TRUE,arbvar=FALSE,mu=mu, sigma=sigma, lambda=lambda,...) k=length(H0$lambda) # H1=normalmixEM(x=y,arbmean=TRUE,arbvar=TRUE,lambda=H0$lambda,mu=H0$mu,sigma=rep(H0$sigma,k),...) H1=normalmixEM(x=y,arbmean=TRUE,arbvar=TRUE,lambda=H0$lambda,mu=H0$mu,sigma=NULL,...) D=2*(H1$loglik-H0$loglik) df=k-1 alpha=1-pchisq(D,df=df) } else{ H0=regmixEM(y=y,x=x,arbmean=TRUE,arbvar=FALSE,beta=beta, sigma=sigma, lambda=lambda,...) k=length(H0$lambda) # H1=regmixEM(y=y,x=x,arbmean=TRUE,arbvar=TRUE,lambda=H0$lambda,beta=H0$beta,sigma=rep(H0$sigma,k),...) H1=regmixEM(y=y,x=x,arbmean=TRUE,arbvar=TRUE,lambda=H0$lambda,beta=H0$beta,sigma=NULL,...) D=2*(H1$loglik-H0$loglik) df=k-1 alpha=1-pchisq(D,df=df) } if(D<0){ w=1 mu=NULL sigma=NULL lambda=NULL } else w=2 } } a=list(chi.sq=D, df=df, p.value=alpha) a }mixtools/R/gammamixinit.R0000755000175100001440000000126111665556372015201 0ustar hornikusersgammamix.init <- function(x, lambda = NULL, alpha = NULL, beta = NULL, k = 2){ n <- length(x) if (is.null(lambda)) { lambda = runif(k) lambda = lambda/sum(lambda) } else k = length(lambda) if(k==1){ x.bar=mean(x) x2.bar=mean(x^2) } else{ x.sort=sort(x) ind=floor(n*cumsum(lambda)) x.part=list() x.part[[1]]=x.sort[1:(ind[1]+1)] for(j in 2:k){ x.part[[j]]=x.sort[ind[j-1]:ind[j]] } x.bar=sapply(x.part,mean) x2.bar=sapply(lapply(x.part,"^",2),mean) } if(is.null(alpha)){ alpha=x.bar^2/(x2.bar-x.bar^2) } if(is.null(beta)){ beta=(x2.bar-x.bar^2)/x.bar } list(lambda=lambda, alpha=alpha, beta=beta, k=k) } mixtools/R/flaremixEM.R0000755000175100001440000000103311665556372014543 0ustar hornikusersflaremixEM<-function(y, x, lambda = NULL, beta = NULL, sigma = NULL, alpha = NULL, nu=NULL, epsilon = 1e-04, maxit = 10000, verb = FALSE, restart=50){ j=1 while(j<=length(nu)){ temp=try(try.flare(y=y, x=x, lambda = lambda, beta = beta, sigma = sigma, alpha = alpha, nu=nu[j], epsilon = epsilon, maxit = maxit, verb = verb, restart=restart),silent=TRUE) if(class(temp)=="try-error") j=j+1 else j=2^100 } if(j==(length(nu)+1)) stop(paste("Too many attempts. Select a different barrier constant.","\n")) temp } mixtools/R/normalmixinit.R0000755000175100001440000000310411665560760015401 0ustar hornikusersnormalmix.init=function (x, lambda = NULL, mu = NULL, s = NULL, k = 2, arbmean = TRUE, arbvar = TRUE) { if (!is.null(s)) { arbvar <- (length(s) > 1) if (arbvar) k <- length(s) } if (!is.null(mu)) { arbmean <- (length(mu) > 1) if (arbmean) { k <- length(mu) if (!is.null(s) && length(s) > 1 && k != length(s)) { stop("mu and sigma are each of length >1 but not of the same length.") } } } if (!arbmean && !arbvar) { stop("arbmean and arbvar cannot both be FALSE") } n = length(x) x = sort(x) x.bin = list() for (j in 1:k) { x.bin[[j]] <- x[max(1, floor((j - 1) * n/k)):ceiling(j * n/k)] } if (is.null(s)) { s.hyp = as.vector(sapply(x.bin, sd)) if(any(s.hyp==0)) s.hyp[which(s.hyp==0)] = runif(sum(s.hyp==0),0,sd(x)) if (arbvar) { s = 1/rexp(k, rate = s.hyp) } else { s = 1/rexp(1, rate = mean(s.hyp)) } } if (is.null(mu)) { mu.hyp <- as.vector(sapply(x.bin, mean)) if (arbmean) { mu = rnorm(k, mean = mu.hyp, sd = s) } else { mu = rnorm(1, mean = mean(mu.hyp), sd = mean(s)) } } if (is.null(lambda)) { lambda <- runif(k) lambda <- lambda/sum(lambda) } else { lambda <- rep(lambda, length.out = k) lambda <- lambda/sum(lambda) } list(lambda = lambda, mu = mu, s = s, k = k, arbvar = arbvar, arbmean = arbmean) } mixtools/R/rmvnormmix.R0000755000175100001440000000074011736707362014730 0ustar hornikusers# Note: normmixrm.sim is here for backwards compatibility rmvnormmix <- normmixrm.sim <- function(n,lambda=1,mu=0,sigma=1) { m <- length(lambda) # nb of components mu <- matrix(mu, nrow=m) sigma <- matrix(sigma, nrow=m) if ((r <- NCOL(mu)) != NCOL(sigma)) { stop("mu and sigma must have the same number of columns", call.=FALSE) } z <- sample(m,n,replace=TRUE,prob=lambda) # component matrix(rnorm(n*r,mean=as.vector(mu[z,]),sd=as.vector(sigma[z,])),n,r) } mixtools/R/repnormmixmodelsel.R0000755000175100001440000000274311737456006016441 0ustar hornikusersrepnormmixmodel.sel <- function (x, k = 2, ...) { aic <- NULL bic <- NULL caic <- NULL icl <- NULL AIC <- function(emout) { emout$loglik - (length(emout$mu) + length(emout$stdev) + length(emout$lambda) - 1) } BIC <- function(emout) { emout$loglik - log(nrow(x)) * (length(emout$mu) + length(emout$stdev) + length(emout$lambda) - 1)/2 } CAIC <- function(emout) { emout$loglik - (log(nrow(x)) + 1) * (length(emout$mu) + length(emout$stdev) + length(emout$lambda) - 1)/2 } ICL <- function(emout) { BIC(emout) - sum(emout$lambda * log(emout$lambda)) } for (i in 1:k) { if (i == 1) { avx <- as.vector(x) mu <- mean(avx) s <- sd(avx) loglik <- sum(dnorm(avx, mean=mu, sd=s, log=TRUE)) emout <- list(mu=mu, stdev=s, lambda=1, loglik=loglik) } else emout <- repnormmixEM(x, k = i, ...) aic[i] <- AIC(emout) bic[i] <- BIC(emout) caic[i] <- CAIC(emout) icl[i] <- ICL(emout) } out = rbind(aic, bic, caic, icl) Winner = apply(out, 1, function(x) (1:length(x))[x == max(x)]) rownames(out) = c("AIC", "BIC", "CAIC", "ICL") colnames(out) = 1:k cbind(out, Winner) } mixtools/vignettes/0000755000175100001440000000000013060400571014152 5ustar hornikusersmixtools/vignettes/mixtools.Rnw0000755000175100001440000021573513057562065016555 0ustar hornikusers\documentclass[nojss]{jss} \usepackage{amsmath} \usepackage{amssymb} %% need no \usepackage{Sweave.sty} %\VignetteIndexEntry{mixtools for mixture models} %% macros (Didier) \newcommand{\CF}{{\mathcal F}} \newcommand{\CN}{{\mathcal N}} \def\Bg{\mathbf{g}} \def\Bh{\mathbf{h}} \def\Bk{\mathbf{k}} \def\Bx{\mathbf{x}} \def\By{\mathbf{y}} \def\Bc{\mathbf{c}} \def\BC{\mathbf{C}} \def\Bz{\mathbf{z}} \newcommand{\argmax}{\mathop{\mbox{argmax}}} \def\bP{\mathbb{P}} % Probability \def\I{\mathbb I} % indicator function \def\bE{\mathbb{E}} % expectation \def\bR{\mathbb{R}} % real line \newcommand{\f}{{\vec\theta}} \newcommand{\lb}{{\lambda}} \def\post{{p}} \def\defn{{\stackrel{\rm def}{=}}} \def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle\bf#1$}} {\mbox{\boldmath$\textstyle\bf#1$}} {\mbox{\boldmath$\scriptstyle\bf#1$}} {\mbox{\boldmath$\scriptscriptstyle\bf#1$}}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% declarations for jss.cls %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% almost as usual \author{Tatiana Benaglia \\ Pennsylvania State University \And Didier Chauveau \\ Universit\'e d'Orl\'eans \AND David R.~Hunter \\ Pennsylvania State University \And Derek S. Young \\ Pennsylvania State University} \title{\pkg{mixtools}: An \proglang{R} Package for Analyzing Finite Mixture Models} %% for pretty printing and a nice hypersummary also set: \Plainauthor{Tatiana Benaglia, Didier Chauveau, David R.~Hunter, Derek Young} %% comma-separated \Plaintitle{mixtools: An R Package for Analyzing Mixture Models} %% without formatting \Shorttitle{mixtools for Mixture Models} %% a short title (if necessary) %% an abstract and keywords \Abstract{ The \pkg{mixtools} package for \proglang{R} provides a set of functions for analyzing a variety of finite mixture models. These functions include both traditional methods, such as EM algorithms for univariate and multivariate normal mixtures, and newer methods that reflect some recent research in finite mixture models. In the latter category, \pkg{mixtools} provides algorithms for estimating parameters in a wide range of different mixture-of-regression contexts, in multinomial mixtures such as those arising from discretizing continuous multivariate data, in nonparametric situations where the multivariate component densities are completely unspecified, and in semiparametric situations such as a univariate location mixture of symmetric but otherwise unspecified densities. Many of the algorithms of the \pkg{mixtools} package are EM algorithms or are based on EM-like ideas, so this article includes an overview of EM algorithms for finite mixture models. } \Keywords{cutpoint, EM algorithm, mixture of regressions, model-based clustering, nonparametric mixture, semiparametric mixture, unsupervised clustering} %, keywords, comma-separated, not capitalized, \proglang{Java}} \Plainkeywords{keywords, comma-separated, not capitalized, Java} %% without formatting %% at least one keyword must be supplied %% publication information %% NOTE: Typically, this can be left commented and will be filled out by the technical editor %% \Volume{13} %% \Issue{9} %% \Month{September} %% \Year{2004} %% \Submitdate{2004-09-29} %% \Acceptdate{2004-09-29} %% The address of (at least) one author should be given %% in the following format: \Address{ Didier Chauveau\\ Laboratoire MAPMO - UMR 7349 - F\'ed\'eration Denis Poisson\\ Universit\'e d'Orl\'eans\\ BP 6759, 45067 Orl\'eans cedex 2, FRANCE.\\ E-mail: \email{didier.chauveau@univ-orleans.fr} \\ URL: \url{http://www.univ-orleans.fr/mapmo/membres/chauveau/}\\ \\ David R.~Hunter\\ Department of Statistics\\ 326 Thomas Building\\ Pennsylvania State University\\ University Park, PA 16802\\ Telephone: +1/814-863-0979\\ Fax: +1/814-863-7114\\ E-mail: \email{dhunter@stat.psu.edu} \\ URL: \url{http://www.stat.psu.edu/~dhunter/}\\ \\ Tatiana Benaglia\\ Department of Statistics, Penn State (see above)\\ E-mail: \email{tab321@stat.psu.edu} \\ \\ Derek Young\\ Department of Statistics, Penn State (see above)\\ E-mail: \email{dsy109@psu.edu} } %% It is also possible to add a telephone and fax number %% before the e-mail in the following format: %% Telephone: +43/1/31336-5053 %% Fax: +43/1/31336-734 %% for those who use Sweave please include the following line (with % symbols): %% need no \usepackage{Sweave.sty} %% end of declarations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \SweaveOpts{concordance=FALSE} %% include your article here, just as usual %% Note that you should use the \pkg{}, \proglang{} and \code{} commands. \section[Introduction to finite mixtures and mixtools]{Introduction to finite mixtures and \pkg{mixtools}} %% Note: If there is markup in \(sub)section, then it has to be escape %% as above. \label{s:intro} Authors' note: The original version of this vignette was produced using an article that appears in the {\it Journal of Statistical Software} (URL: \url{http://www.jstatsoft.org/}); see \citet{Benaglia+Chauveau+Hunter+Young:2009}. Populations of individuals may often be divided into subgroups. Yet even when we observe characteristics of these individuals that provide information about their subgroup memberships, we may not actually observe these memberships {\em per se}. The basic goal of the tools in the \pkg{mixtools} package (version 0.4.3, as of this writing) for \proglang{R} \citep{r2009} is to examine a sample of measurements to discern and describe subgroups of individuals, even when there is no observable variable that readily indexes into which subgroup an individual properly belongs. This task is sometimes referred to as ``unsupervised clustering'' in the literature, and in fact mixture models may be generally thought of as comprising the subset of clustering methods known as ``model-based clustering''. The \pkg{mixtools} package is available from the Comprehensive \proglang{R} Archive Network at \url{http://CRAN.R-project.org/package=mixtools}. Finite mixture models may also be used in situations beyond those for which clustering of individuals is of interest. For one thing, finite mixture models give descriptions of entire subgroups, rather than assignments of individuals to those subgroups (though the latter may be accomplished using mixture models). Indeed, even the subgroups may not necessarily be of interest; sometimes finite mixture models merely provide a means for adequately describing a particular distribution, such as the distribution of residuals in a linear regression model where outliers are present. Whatever the goal of the modeler when employing mixture models, much of the theory of these models involves the assumption that the subgroups are distributed according to a particular parametric form --- and quite often this form is univariate or multivariate normal. While \pkg{mixtools} does provide tools for traditional fitting of finite mixtures of univariate and multivariate normal distributions, it goes well beyond this well-studied realm. Arising from recent research whose goal is to relax or modify the assumption of multivariate normality, \pkg{mixtools} provides computational techniques for finite mixture model analysis in which components are regressions, multinomial vectors arising from discretization of multivariate data, or even distributions that are almost completely unspecified. This is the main feature that distinguishes \pkg{mixtools} from other mixture-related \proglang{R} packages, also available from the Comprehensive \proglang{R} Archive Network at \url{http://CRAN.R-project.org/}, such as \pkg{mclust} \citep{Fraley+Raftery:2009} and \pkg{flexmix} \citep{jss:Leisch:2004, Grun+Leisch:2008}. We briefly mention these two packages in Sections~\ref{section:EMexample} and \ref{section:pdmp}, respectively. To make the mixture model framework more concrete, suppose the possibly vector-valued random variables $\vec X_1, \ldots, \vec X_n$ are a simple random sample from a finite mixture of $m>1$ arbitrary distributions, which we will call {\em components} throughout this article. The density of each $\vec X_i$ may be written \begin{equation} \label{mvmixture} g_{\f}(\vec x_i) = \sum_{j=1}^m\lambda_j\phi_j(\vec x_i), \quad \vec x_i\in\bR^r, \end{equation} where $\f=(\vec\lambda, \vec \phi) = (\lambda_1, \ldots, \lambda_m, \phi_1, \ldots, \phi_m)$ denotes the parameter and the $\lambda_m$ are positive and sum to unity. We assume that the $\phi_j$ are drawn from some family $\cal F$ of multivariate density functions absolutely continuous with respect to, say, Lebesgue measure. The representation \eqref{mvmixture} is not identifiable if no restrictions are placed on $\cal F$, where by ``identifiable'' we mean that $g_{\f}$ has a {\em unique} representation of the form \eqref{mvmixture} and we do not consider that ``label-switching'' --- i.e., reordering the $m$ pairs $(\lambda_1, \phi_1), \ldots, (\lambda_m, \phi_m)$ --- produces a distinct representation. In the next sections we will sometimes have to distinguish between {\em parametric} and more general {\em nonparametric} situations. This distinction is related to the structure of the family $\CF$ of distributions to which the component densities $\phi_j$ in model \eqref{mvmixture} belong. We say that the mixture is {\em parametric} if $\CF$ is a parametric family, $\CF = \{\phi(\cdot|\vec\xi), \vec\xi\in\bR^d\}$, indexed by a ($d$-dimensional) Euclidean parameter $\vec\xi$. A parametric family often used is the univariate Gaussian family $\CF = \{\phi(\cdot|\mu,\sigma^2)=\mbox{density of }\CN(\mu,\sigma^2), (\mu,\sigma^2)\in\bR\times\bR^+_*\}$, in which case the model parameter reduces to $\f = (\vec \lambda, (\mu_1,\sigma^2_1),\ldots,(\mu_m,\sigma^2_m))$. For the multivariate case, a possible parametric model is the {\em conditionally i.i.d.\ normal model}, for which $\CF=\{\phi(\vec x_i) = \prod_{k=1}^r f(x_{ik}), \mbox{$f(t)$ density of $\CN(\mu,\sigma^2)$}\}$ (this model is included in \pkg{mixtools}; see Section~\ref{ss:nbcomp}). An example of a (multivariate) nonparametric situation is $\CF=\{\phi(\vec x_i) = \prod_{k=1}^r f(x_{ik}), \mbox{$f(t)$ a univariate density on $\bR$}\}$, in which case $\vec\f$ consists in a Euclidean part ($\vec\lb$) and a nonparametric part $(f_1,\ldots,f_m)$. As a simple example of a dataset to which mixture models may be applied, consider the sample depicted in Figure \ref{geyser}. In the Old Faithful dataset, measurements give time in minutes between eruptions of the Old Faithful geyser in Yellowstone National Park, USA. These data are included as part of the \pkg{datasets} package in \proglang{R} \citep{r2009}; type \code{help("faithful")} in \proglang{R} for more details. <>= library(mixtools) data(faithful) attach(faithful) @ \setkeys{Gin}{width=0.6\textwidth} \begin{figure}[h] \centering <>= hist(waiting, main="Time between Old Faithful eruptions", xlab="Minutes", ylab="", cex.main=1.5, cex.lab=1.5, cex.axis=1.4) @ \caption{The Old Faithful dataset is clearly suggestive of a two-component mixture of symmetric components.} \label{geyser} \end{figure} For the Old Faithful eruption data, a two-component mixture model is clearly a reasonable model based on the bimodality evident in the histogram. This example is analyzed by \citet{hunter2007ims}, who compare a standard normal-mixture method for fitting it with a novel semiparametric approach. Both approaches are included in \pkg{mixtools}; see Sections \ref{section:EMexample} and \ref{section:SPexample} of this article. In Section~\ref{section:EM} of the current article we review the well-known class of EM algorithms for finite mixture models, a common thread that runs throughout much of the rest of the article. The remaining sections discuss various categories of functions found in the \pkg{mixtools} package, from cutpoint methods that relax distributional assumptions for multivariate data by discretizing the data (Section~\ref{section:cut}), to semi- and non-parametric methods that eliminate distributional assumptions almost entirely depending on what the identifiability of the model allows (Section~\ref{section:np}), to methods that handle various mixtures of regressions (Section~\ref{section:reg}). Finally, Section \ref{section:misc} describes several miscellaneous features of the \pkg{mixtools} package. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{EM algorithms for finite mixtures} \label{section:EM} \subsection{Missing data setup} Much of the general methodology used in \pkg{mixtools} involves the representation of the mixture problem as a particular case of maximum likelihood estimation (MLE) when the observations can be viewed as incomplete data. This setup implies consideration of two sample spaces, the sample space of the (incomplete) observations, and a sample space of some ``complete'' observations, the characterization of which being that the estimation can be performed explicitly at this level. For instance, in parametric situations, the MLE based on the complete data may exist in closed form. Among the numerous reference papers and monographs on this subject are, e.g., the original EM algorithm paper by \citet{dempster1977mli} and the finite mixture model book by \citet{mclachlan2000fmm} and references therein. We now give a brief description of this setup as it applies to finite mixture models in general. The (observed) data consist of $n$ i.i.d. observations $\vec x = (\vec x_1,\ldots,\vec x_n)$ from a density $g_\f$ given by \eqref{mvmixture}. It is common to denote the density of the sample by $\Bg_\f$, the $n$-fold product of $g_\f$, so that we write simply $\Bx\sim \Bg_\f$. In the missing data setup, $\Bg_\f$ is called the incomplete-data density, and the associated log-likelihood is $L_{\Bx}(\f) = \sum_{i=1}^n \log g_\f(\vec x_i)$. The (parametric) ML estimation problem consists in finding $\hat\f_{\Bx} = \argmax_{\f\in\Phi} L_{\Bx}(\f)$, or at least finding a local maximum --- there are certain well-known cases in which a finite mixture model likelihood is unbounded \citep{mclachlan2000fmm}, but we ignore these technical details for now. Calculating $\hat\f_{\Bx}$ even for a parametric finite mixture model is known to be a difficult problem, and considering $\Bx$ as incomplete data resulting from non-observed complete data helps. The associated complete data is denoted by $\Bc = (\vec c_1,\ldots, \vec c_n)$, with density $\Bh_\f(\Bc)=\prod_{i=1}^n h_\f(\vec c_i)$ (there exists a many-to-one mapping from $\Bc$ to $\Bx$, representing the loss of information). In the model for complete data associated with model~\eqref{mvmixture}, each random vector $\vec C_i = (\vec X_i,\vec Z_i)$, where $\vec Z_i = (Z_{ij},j=1,\ldots m)$, and $Z_{ij}\in\{0,1\}$ is a Bernoulli random variable indicating that individual $i$ comes from component $j$. Since each individual comes from exactly one component, this implies $\sum_{j=1}^m Z_{ij}=1$, and $$ \Prob(Z_{ij} = 1) = \lambda_{j},\quad (\vec X_i|Z_{ij}=1) \sim \phi_j, \quad j=1,\ldots,m. $$ The complete-data density for one observation is thus $$ h_\f(\vec c_i) = h_\f(\vec x_i,\vec z_i) = \sum_{j=1}^m \I_{z_{ij}}\lb_j \phi_j (\vec x_i), $$ In the parametric situation, i.e.\ when $\CF$ is a parametric family, it is easy to check that the complete-data MLE $\hat\f_{\Bc}$ based on maximizing $\log \Bh_\f(\Bc)$ is easy to find, provided that this is the case for the family $\CF$. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{EM algorithms} \label{sec:EM} An EM algorithm iteratively maximizes, instead of the observed log-likelihood $L_{\Bx}(\f)$, the operator $$ Q(\f | \f^{(t)}) = \E \left[\log \Bh_\f(\BC)|\Bx,\f^{(t)} \right], $$ where $\f^{(t)}$ is the current value at iteration~$t$, and the expectation is with respect to the distribution $\Bk_\f(\Bc|\Bx)$ of $\Bc$ given $\Bx$, for the value $\f^{(t)}$ of the parameter. The iteration $\f^{(t)} \to \f^{(t+1)}$ is defined in the above general setup by \begin{enumerate} \item E-step: compute $Q(\f | \f^{(t)})$ \item M-step: set $\f^{(t+1)} = \argmax_{\f\in\Phi}Q(\f | \f^{(t)})$ \end{enumerate} For finite mixture models, the E-step does not depend on the structure of $\CF$, since the missing data part is only related to the $\Bz$'s: $$ \Bk_\f(\Bc|\Bx) = \prod_{i=1}^n k_\f(\vec z_i|\vec x_i). $$ The $\Bz$ are discrete, and their distribution is given via Bayes' theorem. The M-step itself can be split in two parts, the maximization related to $\vec\lb$, which does not depend on $\CF$, and the maximization related to $\vec \phi$, which has to be handled specifically (say, parametrically, semi- or non-parametrically) for each model. Hence the EM algorithms for the models handled by the \pkg{mixtools} package share the following common features: \begin{enumerate} \item{\bf E-step:\ } Calculate the ``posterior'' probabilities (conditional on the data and $\vec\theta^{(t)}$) of component inclusion, \begin{equation}\label{posteriors} \post_{ij}^{(t)} \, \defn \, \Prob_{\vec\theta^{(t)}}(Z_{ij}=1| \vec x_i) = \frac{\lambda_j^{(t)} \phi_{j}^{(t)}(\vec x_{i})} {\sum_{j'=1}^m\lambda_{j'}^{(t)} \phi_{j'}^{(t)}(\vec x_{i})} \end{equation} for all $i=1,\ldots, n$ and $j=1, \ldots, m$. Numerically, it can be dangerous to implement equation (\ref{posteriors}) exactly as written due to the possibility of the indeterminant form $0/0$ in cases where $\vec x_i$ is so far from any of the components that all $\phi_{j'}^{(t)}(\vec x_i)$ values result in a numerical underflow to zero. Thus, many of the routines in \pkg{mixtools} actually use the equivalent expression \begin{equation}\label{altposteriors} \post_{ij}^{(t)} = \left[ 1 + \sum_{j'\ne j} \frac{ \lambda_{j'}^{(t)} \phi_{j'}^{(t)}(\vec x_{i})} {\lambda_j^{(t)} \phi_{j}^{(t)}(\vec x_{i})} \right]^{-1} \end{equation} or some variant thereof. \item{\bf M-step for $\vec\lb$:\ } Set \begin{equation}\label{lambda} \lambda_j^{(t+1)} = \frac1n\sum_{i=1}^n \post_{ij}^{(t)} , \quad\mbox{for $j=1, \ldots, m$.} \end{equation} \end{enumerate} \subsection{An EM algorithm example} \label{section:EMexample} As an example, we consider the univariate normal mixture analysis of the Old Faithful waiting data depicted in Figure \ref{geyser}. This fully parametric situation corresponds to a mixture from the univariate Gaussian family described in Section~\ref{s:intro}, where the $j$th component density $\phi_j(x)$ in \eqref{mvmixture} is normal with mean $\mu_j$ and variance $\sigma_j^2$. This is a special case of the general mixture-of-normal model that is well-studied in the literature and for which other software, such as the \pkg{mclust} \citep{Fraley+Raftery:2009} package for \proglang{R}, may also be used for parameter estimation. The M-step for the parameters $(\mu_j,\sigma^2_j)$, $j=1,\ldots,m$ of this EM algorithm for such mixtures of univariate normals is straightforward, and can be found, e.g., in \citet{mclachlan2000fmm}. The function \code{normalmixEM} implements the algorithm in \pkg{mixtools}. Code for the Old Faithful example, using most of the default values (e.g., stopping criterion, maximum number of iterations), is simply <>= wait1 <- normalmixEM(waiting, lambda = .5, mu = c(55, 80), sigma = 5) @ The code above will fit a 2-component mixture (because \code{mu} is a vector of length two) in which the standard deviations are assumed equal (because \code{sigma} is a scalar instead of a vector). See \code{help("normalmixEM")} for details about specifying starting values for this EM algorithm. <>= plot(wait1, density=TRUE, cex.axis=1.4, cex.lab=1.4, cex.main=1.8, main2="Time between Old Faithful eruptions", xlab2="Minutes") @ \setkeys{Gin}{width=0.49\textwidth} \begin{figure}[!h] \centering <>= for(i in 1:2){ file=paste("geyserEM", i, ".pdf", sep="") pdf(file=file, paper="special", width=6, height=6) plot(wait1, whichplots=i, cex.axis = 1.4, cex.lab = 1.4, cex.main = 1.8, main2 = "Time between Old Faithful eruptions", xlab2 = "Minutes") dev.off() cat("\\includegraphics{", file, "}\n", sep="") } @ \caption{The Old Faithful waiting data fitted with a parametric EM algorithm in \pkg{mixtools}. Left: the sequence of log-likelihood values; Right: the fitted Gaussian components.} \label{geyserEM} \end{figure} The \code{normalmixEM} function returns an object of class \code{"mixEM"}, and the \code{plot} method for these objects delivers the two plots given in Figure \ref{geyserEM}: the sequence $t\mapsto L_{\Bx}(\f^{(t)})$ of observed log-likelihood values and the histogram of the data with the $m$ ($m=2$ here) fitted Gaussian component densities of $\CN(\hat\mu_j,\hat\sigma^2_j)$, $j=1,\ldots,m$, each scaled by the corresponding $\hat\lambda_j$, superimposed. The estimator $\hat{\vec\theta}$ can be displayed by typing, e.g., <>= wait1[c("lambda", "mu", "sigma")] @ Alternatively, the same output may be obtained using the \code{summary} method: <>= summary(wait1) @ \section{Cutpoint methods} \label{section:cut} Traditionally, most literature on finite mixture models has assumed that the density functions $\phi_j(\vec x)$ of equation (\ref{mvmixture}) come from a known parametric family. However, some authors have recently considered the problem in which $\phi_j(\vec x)$ is unspecified except for some conditions necessary to ensure the identifiability of the parameters in the model. One such set of conditions is as follows: \citet{hettmansperger2000ani}; \citet{cruzmedina2004smm}; and \citet{elmore2004ecc} treat the case in which $\phi_j(\vec x)$ equals the product $f_j(x_i)\cdots f_j(x_r)$ for some univariate density function $f_j$. Thus, conditional on knowing that $\vec X$ comes from the $j$th mixture component, the coordinates of $\vec X$ are independent and identically distributed. For this reason, this case is called the conditionally i.i.d.\ model. The authors named above have developed an estimation method for the conditionally i.i.d.\ model. This method, the {\em cutpoint approach}, discretizes the continuous measurements by replacing each $r$-dimensional observation, say $\vec X_i= (x_{i1}, \ldots, x_{ir})$, by the $p$-dimensional multinomial vector $(n_1, \ldots, n_p)$, where $p\ge2$ is chosen by the experimenter along with a set of cutpoints $-\infty = c_0 < c_1 < \cdots < c_p=\infty$, so that for $a=1, \ldots, p$, \[ n_a = \sum_{k=1}^r I\{c_{a-1} < x_{ik} \le c_a\}. \] Note that the multinomial distribution is guaranteed by the conditional i.i.d.\ assumption, and the multinomial probability of the $a$th category is equal to $\theta_a \equiv P_{}(c_{a-1}>= data("Waterdata") cutpts <- 10.5*(-6:6) watermult <- makemultdata(Waterdata, cuts = cutpts) @ Once the multinomial data have been created, we may apply the \code{multmixEM} function to estimate the multinomial parameters via an EM algorithm. <>= set.seed(15) theta4 <- matrix(runif(56), ncol = 14) theta3 <- theta4[1:3,] mult3 <- multmixEM(watermult, lambda = rep(1, 3)/3, theta = theta3) mult4 <- multmixEM (watermult, lambda = rep (1, 4) / 4, theta = theta4) @ Finally, \code{compCDF} calculates and plots the estimated distribution functions of equation (\ref{ecdf}). Figure \ref{WDcutpoint} gives plots for both a 3-component and a 4-component solution; these plots are very similar to the corresponding plots in Figures 1 and 2 of \citet{elmore2004ecc}. <>= cdf3 <- compCDF(Waterdata, mult3$posterior, lwd=2, lab=c(7, 5, 7), xlab="Angle in degrees", ylab="Component CDFs", main="Three-Component Solution") cdf4 <- compCDF(Waterdata, mult4$posterior, lwd=2, lab=c(7, 5, 7), xlab="Angle in degrees", ylab="Component CDFs", main="Four-Component Solution") @ <>= pdf(file="WDcutpoint3comp.pdf", paper="special", width=8, height=8) cdf3 <- compCDF(Waterdata, mult3$posterior, lwd=3, xlab="Angle in degrees", lab=c(7, 5, 7), ylab="Component CDFs", main="Three-Component Solution", cex.axis=1.4, cex.lab=1.5, cex.main=1.5) ltext <- paste(round(mult3$lam*100, 1), "%", sep="") legend("bottomright", legend=ltext, pch=15:17, cex=1.5, pt.cex=1.35) y <- compCDF(Waterdata, mult3$posterior, x=cutpts, makeplot=F) for(i in 1:3) points(cutpts, y[i,], pch=14+i, cex=1.35) dev.off() pdf(file="WDcutpoint4comp.pdf", paper="special", width=8, height=8) cdf4 <- compCDF(Waterdata, mult4$posterior, lwd=3, xlab="Angle in degrees", lab=c(7, 5, 7), ylab="Component CDFs", main="Four-Component Solution", cex.axis=1.4, cex.lab=1.5, cex.main=1.5) ltext <- paste(round(mult4$lam*100,1), "%", sep="") legend("bottomright", legend=ltext, pch=15:18, cex=1.5, pt.cex=1.35) y <- compCDF(Waterdata, mult4$posterior, x=cutpts, makeplot=F) for(i in 1:4) points(cutpts, y[i,], pch=14+i, cex=1.35) dev.off() @ \begin{figure}[!h] \centering \includegraphics[width=0.49\textwidth]{WDcutpoint3comp} \includegraphics[width=0.49\textwidth]{WDcutpoint4comp} \caption{Empirical cumulative distribution function (CDF) estimates for the three- and four-component multinomial cutpoint models for the water-level data; compare Figures 1 and 2 of \citet{elmore2004ecc}. The 13 cutpoints used are indicated by the points in the plots, and the estimated mixing proportions for the various components are given by the legend. } \label{WDcutpoint} \end{figure} As with the output of \code{normalmixEM} in Section~\ref{section:EM}, it is possible to summarize the output of the \code{multmixEM} function using the \code{summary} method for \code{mixEM} objects: <>= summary(mult4) @ \section{Nonparametric and semiparametric methods} \label{section:np} In this section, we consider nonparametric multivariate finite mixture models. The first algorithm presented here was introduced by \citet{benaglia2009} as a generalization of the stochastic semiparametric EM algorithm of \citet{bordes2007sas}. Both algorithms are implemented in \pkg{mixtools}. \subsection{EM-like algorithms for mixtures of unspecified densities} \label{section:EMlike} Consider the mixture model described by equation \eqref{mvmixture}. If we assume that the coordinates of the $\vec X_i$ vector are {\em conditionally independent}, i.e. they are independent conditional on the subpopulation or component ($\phi_1$ through $\phi_m$) from which $\vec X_i$ is drawn, the density in \eqref{mvmixture} can be rewritten as: \begin{equation} \label{mvmixture2} g_{\vec\theta}(\vec x_i) = \sum_{j=1}^m\lambda_j\prod_{k=1}^rf_{jk}(x_{ik}), \end{equation} where the function $f(\cdot)$, with or without subscripts, will always denote a univariate density function. Here we do not assume that $f_{jk}(\cdot)$ comes from a family of densities that may be indexed by a finite-dimensional parameter vector, and we estimate these densities using nonparametric density techniques. That is why we say that this algorithm is a fully nonparametric approach. The density in equation \eqref{mvmixture2} allows for a different distribution for each component and each coordinate of $\vec X_i$. Notice that if the density $f_{jk}(\cdot)$ does not depend on $k$, we have the case in which the $\vec X_i$ are not only conditionally independent but identically distributed as well. These are the two extreme cases. In order to encompass both the conditionally i.i.d. case and the more general case \eqref{mvmixture2} simultaneously in one model, we allow that the coordinates of $\vec X_i$ are conditionally independent and there exist {\em blocks} of coordinates that are also identically distributed. If we let $b_k$ denote the block to which the $k$th coordinate belongs, where $1\le b_k\le B$ and $B$ is the total number of such blocks, then equation \eqref{mvmixture2} is replaced by \begin{equation}\label{rmgeneral} g_{\vec\theta} (\vec x_i) = \sum_{j=1}^m \lambda_j \prod_{k=1}^r f_{j{b_k}} (x_{ik}). \end{equation} The indices $i$, $j$, $k$, and $\ell$ will always denote a generic individual, component (subpopulation), coordinate (repeated measurement), and block, respectively. Therefore, we will always have $1\le i\le n$, $1\le j\le m$, $1\le k\le r$, and $1\le\ell\le B$. The EM algorithm to estimate model \eqref{rmgeneral} has the E-step and M-step described in Section~\ref{sec:EM}. In equation (\ref{posteriors}), we have $\phi_j^{(t)}(\vec x_i) = \prod_{k=1}^r f_{jb_k}^{(t)}(x_{ik})$, where $f_{j\ell}^{(t)}(\cdot)$ is obtained by a weighted nonparametric (kernel) density estimate, given by: \begin{enumerate} \addtocounter{enumi}{2} \item{\bf Nonparametric (Kernel) density estimation step:\ } For any real $u$, define for each component $j\in\{1, \ldots, m\}$ and each block $\ell\in\{1, \ldots, B\}$ \begin{equation} \label{densest} f_{j\ell}^{t+1}(u) = \frac {1}{nh_{j\ell} C_\ell\lambda_{j}^{t+1}} \sum_{k=1}^r \sum_{i=1}^n \post_{ij}^{(t)} I\{b_k=\ell\} K\left(\frac{u-x_{ik}}{h_{j\ell}}\right), \end{equation} where $K(\cdot)$ is a kernel density function, $h_{j\ell}$ is the bandwidth for the $j$th component and $\ell$th block density estimate, and $C_\ell$ is the number of coordinates in the $\ell$th block. \end{enumerate} The function \code{npEM} implements this algorithm in \pkg{mixtools}. This function has an argument \code{samebw} which, when set to \code{TRUE} (the default), takes $h_{j\ell} = h$, for all $1 \le j \le m$ and $1\le\ell\le B$, that is, the same bandwidth for all components and blocks, while \code{samebw = FALSE} allows a different bandwidth for each component and each block, as detailed in \citet{bch:festchrift2009}. This function will, if called using \code{stochastic = TRUE}, replace the deterministic density estimation step (\ref{densest}) by a {\em stochastic} density estimation step of the type proposed by \citet{bordes2007sas}: First, generate $\vec Z^{(t)}_{i} = (Z^{(t)}_{i1}, \ldots, Z^{(t)}_{im})$ as a multivariate random vector with a single trial and success probability vector $\vec p_i^{(t)} = (p_{i1}^{(t)}, \ldots, p_{1m}^{(t)})$, then in the M-step for $\lambda_{j}^{t+1}$ in equation~(\ref{lambda}), replace $p^{(t)}_{ij}$ by $Z^{(t)}_{ij}$ and let \[ f_{j\ell}^{t+1}(u) = \frac {1}{nh_{j\ell} C_\ell\lambda_{j}^{t+1}} \sum_{k=1}^r \sum_{i=1}^n Z_{ij}^{(t)} I\{b_k=\ell\} K\left(\frac{u-x_{ik}}{h_{j\ell}}\right). \] In other words, the stochastic versions of these algorithms re-assign each observation randomly at each iteration, according to the $p_{ij}^{(t)}$ values at that iteration, to one of the $m$ components, then the density estimate for each component is based only on those observations that have been assigned to it. Because the stochastic algorithms do not converge the way a deterministic algorithm often does, the output of \code{npEM} is slightly different when \code{stochastic = TRUE} than when \code{stochastic = FALSE}, the default. See the corresponding help file for details. \citet{benaglia2009} also discuss specific cases of model (\ref{rmgeneral}) in which some of the $f_{jb_k}(\cdot)$ densities are assumed to be the same except for a location and scale change. They refer to such cases as semiparametric since estimating each $f_{jb_k}(\cdot)$ involves estimating an unknown density as well as multiple location and scale parameters. For instance, equation (17) of \citet{benaglia2009} sets \begin{equation} \label{spEM} f_{j\ell}(x) = \frac{1}{\sigma_{j\ell}}f \left( \frac{x-\mu_{j\ell}}{\sigma_{j\ell}} \right), \end{equation} where $\ell=b_k$ for a generic $k$. The \pkg{mixtools} package implements an algorithm for fitting model (\ref{spEM}) in a function called \code{spEM}. Details on the use of this function may be obtained by typing \code{help("spEM")}. Implementation of this algorithm and of that of the \code{npEM} function requires updating the values of $f_{jb_k}(x_{ik})$ for all $i$, $j$, and $k$ for use in the E-step (\ref{posteriors}). To do this, the \code{spEM} algorithm keeps track of an $n\times m$ matrix, called $\Phi$ here, where \[ \Phi_{ij} \equiv \phi_j(\vec x_i) = \prod_{k=1}^r f_{jb_k}(x_{ik}). \] The density estimation step of equation (\ref{densest}) updates the $\Phi$ matrix for the $(t+1)$th iteration based on the most recent values of all of the parameters. For instance, in the case of model (\ref{spEM}), we obtain \begin{eqnarray*} \Phi_{ij}^{t+1} &=& \prod_{\ell=1}^B\prod_{k:b_k=\ell} \frac{1}{\sigma_{j\ell}^{t+1}} f^{t+1} \left( \frac{x-\mu_{j\ell}^{t+1}}{\sigma_{j\ell}^{t+1}} \right) \\ &=& \prod_{\ell=1}^B \prod_{k:b_k=\ell} \frac{1}{\sigma_{j\ell}^{t+1}} \sum_{i'=1}^n \frac{p_{ij}^{t+1}}{hrn\lambda_j^{t+1}} \sum_{k'=1}^r K\left[ \frac{\left(\frac{x_{ik}-\mu_{j\ell}^{t+1}}{\sigma_{j\ell}^{t+1}} \right) - (x_{i'k'} - \mu_{j\ell}^{t+1})} {h\sigma_{j\ell}^{t+1}} \right]. \end{eqnarray*} \subsection{A univariate symmetric, location-shifted semiparametric example} \label{section:SPexample} Both \citet{hunter2007ims} and \citet{bordes2006set} study a particular case of model ({\ref{mvmixture}) in which $x$ is univariate and \begin{equation} \label{spmodel} g_{\vec \theta}(x) = \sum_{j=1}^m\lambda_j \phi(x-\mu_j), \end{equation} where $\phi(\cdot)$ is a density that is assumed to be completely unspecified except that it is symmetric about zero. Because each component distribution has both a nonparametric part $\phi(\cdot)$ and a parametric part $\mu_j$, we refer to this model as semiparametric. Under the additional assumption that $\phi(\cdot)$ is absolutely continuous with respect to Lebesgue measure, \citet{bordes2007sas} propose a stochastic algorithm for estimating the model parameters, namely, $(\vec\lambda, \vec\mu, \phi)$. This algorithm is implemented by the \pkg{mixtools} function \code{spEMsymloc}. This function also implements a nonstochastic version of the algorithm, which is the default and which is a special case of the general algorithm described in Section~\ref{section:EMlike}. <>= pdf(file="spsymmfig1.pdf", paper="special", width=8, height=8) par(mar=0.1+c(5,4.2,4,1.8)) plot(wait1, which = 2, cex.axis = 1.4, cex.lab = 1.5, cex.main = 1.5, main2 = "Time between Old Faithful eruptions", xlab2 = "Minutes") wait2 <- spEMsymloc(waiting, mu0 = c(55, 80)) plot(wait2, lty = 2, newplot = FALSE, addlegend = FALSE) dev.off() pdf(file="spsymmfig2.pdf", paper="special", width=8, height=8) par(mar=0.1+c(5,4.2,4,1.8)) wait2a <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 1) wait2b <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 6) plot(wait2a, lty = 1, addlegend = FALSE, cex.axis = 1.4, cex.lab = 1.5, cex.main = 1.5, title = "Time between Old Faithful eruptions", xlab = "Minutes") plot(wait2b, lty = 2, newplot = FALSE, addlegend = FALSE) dev.off() @ \begin{figure}[h] \centering \includegraphics[height=3in,width=3in]{spsymmfig1} \includegraphics[height=3in,width=3in]{spsymmfig2} \caption{The Old Faithful dataset, fit using different algorithms in \pkg{mixtools}. Left: the fitted Gaussian components (solid) and a semiparametric fit assuming model (\ref{spmodel}) with the default bandwidth of $4.0$ (dashed); Right: the same model (\ref{spmodel}) using bandwidths of $1.0$ (solid) and $6.0$ (dashed).} \label{spsymmfig} \end{figure} As noted in Figure \ref{geyser}, model (\ref{spmodel}) appears to be an appropriate model for the Old Faithful waiting times dataset. Here, we provide code that applies the \code{spEMsymloc} function to these data. First, we display the normal mixture solution of Figure \ref{geyserEM} with a semiparametric solution superimposed, in Figure \ref{spsymmfig}(a): <>= plot(wait1, which = 2, cex.axis = 1.4, cex.lab = 1.4, cex.main = 1.8, main2 = "Time between Old Faithful eruptions", xlab2 = "Minutes") wait2 <- spEMsymloc(waiting, mu0 = c(55, 80)) plot(wait2, lty = 2, newplot = FALSE, addlegend = FALSE) @ Because the semiparametric version relies on a kernel density estimation step (\ref{densest}), it is necessary to select a bandwidth for this step. By default, \code{spEMsymloc} uses a fairly simplistic approach: It applies ``Silverman's rule of thumb'' \citep{silverman1986des} to the entire dataset using the \code{bw.nrd0} function in \proglang{R}. For the Old Faithful waiting time dataset, this bandwidth is about~$4$: <>= bw.nrd0(waiting) @ But the choice of bandwidth can make a big difference, as seen in Figure \ref{spsymmfig}(b). <>= wait2a <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 1) wait2b <- spEMsymloc(waiting, mu0 = c(55, 80), bw = 6) plot(wait2a, lty = 1, addlegend = FALSE, cex.axis = 1.4, cex.lab = 1.4, cex.main = 1.8, xlab = "Minutes", title = "Time between Old Faithful eruptions") plot(wait2b, lty = 2, newplot = FALSE, addlegend = FALSE) @ We find that with a bandwidth near $2$, the semiparametric solution looks quite close to the normal mixture solution of Figure \ref{geyserEM}. Reducing the bandwidth further results in the ``bumpiness'' exhibited by the solid line in Figure \ref{spsymmfig}(b). On the other hand, with a bandwidth of 8, the semiparametric solution completely breaks down in the sense that algorithm tries to make each component look similar to the whole mixture distribution. We encourage the reader to experiment by changing the bandwidth in the above code. \subsection{A trivariate Gaussian example} \label{ss:trigauss} As a first simple, nonparametric example, we simulate a Gaussian trivariate mixture with independent repeated measures and a shift of location between the two components in each coordinate, i.e., $m=2$, $r=3$, and $b_k=k$, $k=1,2,3$. The individual densities $f_{jk}$ are the densities of $\CN(\mu_{jk},1)$, with component means $\vec\mu_1 = (0,0,0)$ and $\vec\mu_2=(3,4,5)$. This example was introduced by \citet{hall2005nim} then later reused by \citet{benaglia2009} for comparison purposes. Note that the parameters in this model are identifiable, since \citet{hall2003nec} showed that for two components ($m=2$), identifiability holds in model~\eqref{mvmixture} is under mild assumptions as long as $r\ge3$, even in the most general case in which $b_k=k$ for all $k$. A function \code{ise.npEM} has been included in \pkg{mixtools} for numerically computing the integrated squared error (ISE) relative to a user-specified true density for a selected estimated density $\hat f_{jk}$ from \code{npEM} output. Each density $\hat f_{jk}$ is computed using equation~(\ref{densest}) together with the posterior probabilities after convergence of the algorithm, i.e., the final values of the $\post_{ij}^t$ (when \code{stochastic = FALSE}). We illustrate the usage of \code{ise.npEM} in this example by running a Monte Carlo simulation for $S$ replications, then computing the square root of the mean integrated squared error (MISE) for each density, where \[ {\rm MISE} = \frac{1}{S}\sum_{s=1}^S \int \left(\hat f_{jk}^{(s)}(u)-f_{jk}(u)\right)^2\,du,\quad j=1,2 \mbox{ and } k=1,2,3. \] For this example, we first set up the model true parameters with $S=100$ replications of $n=300$ observations each: <>= m <- 2; r <- 3; n <- 300; S <- 100 lambda <- c(0.4, 0.6) mu <- matrix(c(0, 0, 0, 3, 4, 5), m, r, byrow = TRUE) sigma <- matrix(rep(1, 6), m, r, byrow = TRUE) @ Next, we set up ``arbitrary'' initial centers, a matrix for storing sums of integrated squared errors, and an integer storing the number of suspected instances of label switching that may occur during the replications: <>= centers <- matrix(c(0, 0, 0, 4, 4, 4), 2, 3, byrow = TRUE) ISE <- matrix(0, m, r, dimnames = list(Components = 1:m, Blocks = 1:r)) nblabsw <- 0 @ Finally, we run the Monte Carlo simulation, using the \code{samebw = FALSE} option since it is more appropriate for this location-shift model: <>= set.seed(1000) for (mc in 1:S) { x <- rmvnormmix(n, lambda, mu, sigma) a <- npEM(x, centers, verb = FALSE, samebw = FALSE) if (a$lambda[1] > a$lambda[2]) nblabsw <- nblabsw + 1 for (j in 1:m) { for (k in 1:r) { ISE[j, k] <- ISE[j, k] + ise.npEM(a, j, k, dnorm, lower = mu[j, k] - 5, upper = mu[j, k] + 5, plots = FALSE, mean = mu[j, k], sd = sigma[j, k])$value #$ } } } MISE <- ISE/S print(sqMISE <- sqrt(MISE)) @ We can examine the \code{npEM} output from the last replication above using <>= summary(a) @ We can also get plots of the estimated component densities for each block (recall that in this example, block $\ell$ consists only of coordinate $\ell$) using the \code{plot} function. The resulting plots are given in Figure~\ref{fig:gausstrivariate}. <>= plot(a) @ <>= pdf("gauss3rm.pdf", paper="special", width=10, height=5) par(mfrow=c(1,3), ask=F) plot(a) dev.off() @ \begin{figure}[h] \centering \includegraphics[width=.99\textwidth]{gauss3rm} \caption{Output of the \code{npEM} algorithm for the trivariate Gaussian model with independent repeated measures.} \label{fig:gausstrivariate} \end{figure} \subsection{A more general multivariate nonparametric example} \label{sec:generalmv} In this section, we fit a more difficult example, with non-multimodal mixture densities (in block \#2), heavy-tailed distributions, and different scales among the coordinates. The model is multivariate with $r=5$ repeated measures and $m=2$ components (hence identifiability holds; cf.\ \citet{hall2003nec} as cited in Section~\ref{ss:trigauss}). The $5$ repeated measures are grouped into $B=2$ blocks, with $b_1=b_2=b_3=1$ and $b_4=b_5=2$. Block $1$ corresponds to a mixture of two noncentral Student $t$ distributions, $t'(2,0)$ and $t'(10,8)$, where the first parameter is the number of degrees of freedom, and the second is the non-centrality. Block~2 corresponds to a mixture of Beta distributions, ${\cal B}(1,1)$ (which is actually the uniform distribution over $[0,1]$) and ${\cal B}(1,5)$. The first component weight is $\lambda_1 = 0.4$. The true mixtures are depicted in Figure~\ref{fig:true5rm}. <>= pdf("truepdf5rm_block1.pdf") par(mar=0.1+c(5,4.2,4,1.5)) x <- seq(-10, 25, len=250) plot(x, .4* dt(x, 2, 0) + .6 * dt(x, 10, 8), type="l", lwd=3, col=2, cex.axis=1.4, cex.lab=1.5, cex.main=1.5, main="Block 1", xlab="", ylab="Density") lines (x, .4*dt(x, 2, 0), lwd=4, lty=2) lines (x, .6*dt(x, 10, 8), lwd=4, lty=2) dev.off() pdf("truepdf5rm_block2.pdf") par(mar=0.1+c(5,4.2,4,1.5)) x <- seq(0, 1, len=250) plot(x, .4 + .6 * dbeta(x, 1, 5), type="l", lwd=3, col=2, cex.axis=1.4, cex.lab=1.5, cex.main=1.5, main="Block 2", xlab="", ylab="Density", ylim= c(0, 3.4)) lines (x, rep(.4, 250), lwd=4, lty=2) lines (x, .6*dbeta(x, 1, 5), lwd=4, lty=2) dev.off() @ \begin{figure}[h] \centering \includegraphics[height=2.5in,width=2.5in]{truepdf5rm_block1} \includegraphics[height=2.5in,width=2.5in]{truepdf5rm_block2} \caption{True densities for the mixture of Section~\ref{sec:generalmv}, with individual component densities (scaled by $\lambda_j$) in dotted lines and mixture densities in solid lines. The noncentral $t$ mixture of coordinates 1 through 3 is on the left, the beta mixture of coordinates 4 and 5 on the right.} \label{fig:true5rm} \end{figure} To fit this model in \pkg{mixtools}, we first set up the model parameters: <>= m <- 2; r <- 5 lambda <- c(0.4, 0.6) df <- c(2, 10); ncp <- c(0, 8) sh1 <- c(1, 1) ; sh2 <- c(1, 5) @ Then we generate a pseudo-random sample of size $n=300$ from this model: <>= n <- 300; z <- sample(m, n, rep = TRUE, prob = lambda) r1 <- 3; z2 <- rep(z, r1) x1 <- matrix(rt(n * r1, df[z2], ncp[z2]), n, r1) r2 <- 2; z2 <- rep(z, r2) x2 <- matrix(rbeta(n * r2, sh1[z2], sh2[z2]), n, r2) x <- cbind(x1, x2) @ For this example in which the coordinate densities are on different scales, it is obvious that the bandwidth in \code{npEM} should depend on the blocks and components. We set up the block structure and some initial centers, then run the algorithm with the option \code{samebw = FALSE}: <>= id <- c(rep(1, r1), rep(2, r2)) centers <- matrix(c(0, 0, 0, 1/2, 1/2, 4, 4, 4, 1/2, 1/2), m, r, byrow = TRUE) b <- npEM(x, centers, id, eps = 1e-8, verb = FALSE, samebw = FALSE) @ Figure~\ref{fig:npEM5rm} shows the resulting density estimates, which may be obtained using the plotting function included in \pkg{mixtools}: <>= plot(b, breaks = 15) @ % plot(b, breaks = 15, cex.main = 1.5, cex.lab = 1.5, cex.axis = 1.4, % cex.legend = 1.5) <>= pdf("npEM5rm.pdf", width=8, height=5) par(mfrow=c(1,2)) plot(b, breaks = 15) dev.off() @ \begin{figure}[h] \centering \includegraphics[width=.95\textwidth]{npEM5rm} \caption{Result of plotting \code{npEM} output for the example of Section~\ref{sec:generalmv}. Since $n=300$, the histogram on the left includes 900 observations and the one on the right includes 600.} \label{fig:npEM5rm} \end{figure} Finally, we can compute the ISE of the estimated density relative to the truth for each block and component. The corresponding output is depicted in Figure \ref{fig:ISEnpEM5rm}. <>= par(mfrow=c(2,2)) for (j in 1:2){ ise.npEM(b, j, 1, truepdf = dt, lower = ncp[j] - 10, upper = ncp[j] + 10, df = df[j], ncp = ncp[j]) ise.npEM(b, j, 2, truepdf = dbeta, lower = -0.5, upper = 1.5, shape1 = sh1[j], shape2 = sh2[j]) } @ <>= options(warn=-1) pdf("ISEnpEM5rm.pdf", width=8, height=8) par(mfrow = c(2, 2)) for (j in 1:2){ ise.npEM(b, j, 1, truepdf = dt, lower = ncp[j] - 10, upper = ncp[j] + 10, df = df[j], ncp = ncp[j]) ise.npEM(b, j, 2, truepdf = dbeta, lower = -0.5, upper = 1.5, shape1 = sh1[j], shape2 = sh2[j]) } dev.off() @ \begin{figure}[h] \centering \includegraphics[height=5in,width=6in]{ISEnpEM5rm} \caption{\code{ise.npEM} output for the 5-repeated measures example; the true densities are $f_{11}\equiv t'(2,0)$, $f_{21}\equiv t'(10,8)$, $f_{12}\equiv {\cal U}_{(0,1)}$, $f_{22}\equiv {\cal B}(1,5)$.} \label{fig:ISEnpEM5rm} \end{figure} \section{Mixtures of regressions} \label{section:reg} \subsection{Mixtures of linear regressions} Consider a mixture setting where we now assume $\textbf{X}_{i}$ is a vector of covariates observed with a response $Y_{i}$. The goal of mixtures of regressions is to describe the conditional distribution of $Y_{i}|\textbf{X}_{i}$. Mixtures of regressions have been extensively studied in the econometrics literature and were first introduced by \citet{quandt1972sr} as the \textit{switching regimes} (or \textit{switching regressions}) problem. A switching regimes system is often compared to \textit{structural change} in a system \citep{quandtram1978sr}. A structural change assumes the system depends deterministically on some observable variables, but switching regimes implies one is unaware of what causes the switch between regimes. In the case where it is assumed there are two heterogeneous classes, \citet{quandt1972sr} characterized the switching regimes problem ``by assuming that nature chooses between regimes with probabilities $\lambda$ and $1-\lambda$''. Suppose we have $n$ independent univariate observations, $y_{1},\ldots,y_{n}$, each with a corresponding vector of predictors, $\textbf{x}_{1},\ldots,\textbf{x}_{n}$, with $\textbf{x}_{i}=(x_{i,1},\ldots,x_{i,p})^\top$ for $i=1,\ldots,n$. We often set $x_{i,1}=1$ to allow for an intercept term. Let $\textbf{y}=(y_{1},\ldots,y_{n})^\top$ and let $\underline{\textbf{X}}$ be the $n\times p$ matrix consisting of the predictor vectors. Suppose further that each observation $(y_{i}, \vec x_i)$ belongs to one of $m$ classes. Conditional on membership in the $j$th component, the relationship between $y_{i}$ and $\textbf{x}_{i}$ is the normal regression model \begin{equation}\label{regmodel} y_{i}=\textbf{x}_{i}^\top\vec{\beta}_{j}+\epsilon_{i}, \end{equation} where $\epsilon_{i}\thicksim \CN(0,\sigma^{2}_{j})$ and $\vec{\beta}_{j}$ and $\sigma_{j}^{2}$ are the $p$-dimensional vector of regression coefficients and the error variance for component $j$, respectively. Accounting for the mixture structure, the conditional density of $y_{i}|\vec x_i$ is \begin{equation}\label{mor} g_{\vec\theta}(y_{i}|\textbf{x}_{i})=\sum_{j=1}^{m}\lambda_{j} \phi(y_{i} | \textbf{x}_{i}^\top\vec{\beta}_{j},\sigma^{2}_{j}), \end{equation} where $\phi(\cdot|\textbf{x}^\top\vec{\beta}_{j},\sigma^{2}_{j})$ is the normal density with mean $\textbf{x}^\top\vec\beta$ and variance $\sigma^2$. Notice that the model parameter for this setting is $\vec\theta=(\vec\lambda,(\vec{\beta}_{1},\sigma^2_{1}),\ldots,(\vec{\beta}_{m},\sigma^2_{m}))$. The mixture of regressions model (\ref{mor}) differs from the well-known mixture of multivariate normals model $(Y_{i},\textbf{X}_{i}^\top)^\top\thicksim \sum_{j=1}^{m}\lambda_{j}\CN_{p+1}(\vec{\mu}_{j},\Sigma_{j})$ because model (\ref{mor}) makes no assertion about the marginal distribution of $\textbf{X}_{i}$, whereas the mixture of multivariate normals specifies that $\textbf{X}_{i}$ itself has a mixture of multivariate normals distribution. <>= data("CO2data") attach(CO2data) pdf("gnpdata.pdf") par(mar=0.1+c(5,4.2,4,1.5)) plot(GNP, CO2, xlab="Gross National Product", ylab=expression(paste(CO[2]," per Capita")), cex.lab=1.5, cex.main=1.5, cex.axis=1.4, main="1996 GNP and Emissions Data") text(GNP, CO2, country, adj=c(.5,-.5)) dev.off() @ \begin{figure}[h] \centering \includegraphics[height=3in,width=3in]{gnpdata.pdf} \caption{1996 data on gross national product (GNP) per capita and estimated carbon dioxide ($\textrm{CO}_{2}$) emissions per capita. Note that ``CH'' stands for Switzerland, not China.} \label{gnpdata} \end{figure} As a simple example of a dataset to which a mixture of regressions models may be applied, consider the sample depicted in Figure \ref{gnpdata}. In this dataset, the measurements of carbon dioxide ($\textrm{CO}_{2}$) emissions are plotted versus the gross national product (GNP) for $n=28$ countries. These data are included \pkg{mixtools}; type \code{help("CO2data")} in \proglang{R} for more details. \citet{hurn} analyzed these data using a mixture of regressions from the Bayesian perspective, pointing out that ``there do seem to be several groups for which a linear model would be a reasonable approximation.'' They further point out that identification of such groups could clarify potential development paths of lower GNP countries. \subsection{EM algorithms for mixtures of regressions} A standard EM algorithm, as described in Section~\ref{section:EM}, may be used to find a local maximum of the likelihood surface. \citet{deveaux1989} describes EM algorithms for mixtures of regressions in more detail, including proposing a method for choosing a starting point in the parameter space. The E-step is the same as for any finite mixture model EM algorithm; i.e., the $p_{ij}^{(t)}$ values are updated according to equation (\ref{posteriors})---or, in reality, equation (\ref{altposteriors})---where each $\phi_j^{(t)}(\vec x_i)$ is replaced in the regression context by $\phi(y_i | \vec x_i^\top\vec\beta_j, \sigma_j^2)$: \begin{equation}\label{regposteriors} \post_{ij}^{(t)} = \left[ 1 + \sum_{j'\ne j} \frac{ \lambda_{j'}^{(t)} \phi(y_i | \vec x_i^\top\vec\beta_{j'}, \sigma_{j'}^2)}{\lambda_j^{(t)} \phi(y_i | \vec x_i^\top\vec\beta_j, \sigma_j^2)} \right]^{-1} \end{equation} The update to the $\lambda$ parameters in the M-step, equation (\ref{lambda}), is also the same. Letting $\textbf{W}_{j}^{(t)}=\textrm{diag}(\post_{1j}^{(t)},\ldots,\post_{nj}^{(t)})$, the additional M-step updates to the $\vec\beta$ and $\sigma$ parameters are given by \begin{eqnarray}\label{betaEM} \vec{\beta}_{j}^{(t+1)} &=& (\underline{\textbf{X}}^\top\textbf{W}_{j}^{(t)}\underline{\textbf{X}})^{-1}\underline{\textbf{X}}^\top \textbf{W}_{j}^{(t)}\textbf{y} \quad \mbox{and} \\ \label{sigma} \sigma_{j}^{2(t+1)} &=& \frac{\biggl\|\textbf{W}_{j}^{1/2(t)}(\textbf{y}-\underline{\textbf{X}}^\top\vec{\beta}_{j}^{(t+1)})\biggr\|^{2}}{\mbox{tr}(\textbf{W}_{j}^{(t)})}, \end{eqnarray} where $\|\textbf{A}\|^{2}=\textbf{A}^\top\textbf{A}$ and $\mbox{tr}(\textbf{A})$ means the trace of the matrix $\textbf{A}$. Notice that equation (\ref{betaEM}) is a weighted least squares (WLS) estimate of $\vec{\beta}_{j}$ and equation (\ref{sigma}) resembles the variance estimate used in WLS. Allowing each component to have its own error variance $\sigma_j^2$ results in the likelihood surface having no maximizer, since the likelihood may be driven to infinity if one component gives a regression surface passing through one or more points exactly and the variance for that component is allowed to go to zero. A similar phenomenon is well-known in the finite mixture-of-normals model where the component variances are allowed to be distinct \citep{mclachlan2000fmm}. However, in practice we observe this behavior infrequently, and the \pkg{mixtools} functions automatically force their EM algorithms to restart at randomly chosen parameter values when it occurs. A local maximum of the likelihood function, a consistent version of which is guaranteed to exist by the asymptotic theory as long as the model is correct and all $\lambda_j$ are positive, usually results without any restarts. The function \code{regmixEM} implements the EM algorithm for mixtures of regressions in \pkg{mixtools}. This function has arguments that control options such as adding an intercept term, \code{addintercept = TRUE}; forcing all $\vec\beta_j$ estimates to be the same, \code{arbmean = FALSE} (for instance, to model outlying observations as having a separate error variance from the non-outliers); and forcing all $\sigma_j^2$ estimates to be the same, \code{arbvar = FALSE}. For additional details, type \code{help("regmixEM")}. As an example, we fit a 2-component model to the GNP data shown in Figure \ref{gnpdata}. \citet{hurn} and \citet{youngphd} selected 2 components for this dataset using model selection criteria, Bayesian approaches to selecting the number of components, and a bootstrapping approach. The function \code{regmixEM} will be used for fitting a 2-component mixture of regressions by an EM algorithm: <>= data("CO2data") attach(CO2data) @ <>= CO2reg <- regmixEM(CO2, GNP, lambda = c(1, 3) / 4, beta = matrix(c(8, -1, 1, 1), 2, 2), sigma = c(2, 1)) @ We can then pull out the final observed log-likelihood as well as estimates for the 2-component fit, which include $\hat{\lambda}$, $\hat{\vec{\beta}}_{1}$, $\hat{\vec{\beta}}_{2}$, $\hat{\sigma}_{1}$, and $\hat{\sigma}_{2}$: <>= summary(CO2reg) @ The reader is encouraged to alter the starting values or let the internal algorithm generate random starting values. However, this fit seems appropriate and the solution is displayed in Figure \ref{co2EM} along with 99\% Working-Hotelling Confidence Bands, which are constructed automatically by the \code{plot} method in this case by assigning each point to its most probable component and then fitting two separate linear regressions: <>= plot(CO2reg, density = TRUE, alpha = 0.01, cex.main = 1.5, cex.lab = 1.5, cex.axis = 1.4) @ \setkeys{Gin}{width=0.49\textwidth} \begin{figure}[!h] \centering <>= for(i in 1:2){ file=paste("CO2reg", i, ".pdf", sep="") pdf(file=file, paper="special", width=6, height=6) plot(CO2reg, whichplots=i, alpha = 0.01, cex.main = 1.5, cex.lab = 1.5, cex.axis = 1.4) dev.off() cat("\\includegraphics{", file, "}\n", sep="") } @ \caption{The GNP data fitted with a 2-component parametric EM algorithm in \pkg{mixtools}. Left: the sequence of log-likelihood values, $L_{\Bx}(\f^{(t)})$; Right: the fitted regression lines with 99\% Working-Hotelling Confidence Bands.} \label{co2EM} \end{figure} \subsection{Predictor-dependent mixing proportions} \label{section:pdmp} Suppose that in model (\ref{mor}), we replace $\lambda_j$ by $\lambda_{j}(\textbf{x}_{i})$ and assume that the mixing proportions vary as a function of the predictors $\textbf{x}_{i}$. Allowing this type of flexibility in the model might be useful for a number of reasons. For instance, sometimes it is the proportions $\lambda_j$ that are of primary scientific interest, and in a regression setting it may be helpful to know whether these proportions appear to vary with the predictors. As another example, consider a \code{regmixEM} model using \code{arbmean = FALSE} in which the mixture structure only concerns the error variance: In this case, $\lambda_j(\vec x)$ would give some sense of the proportion of outliers in various regions of the predictor space. One may assume that $\lambda_{j}(\textbf{x})$ has a particular parametric form, such as a logistic function, which introduces new parameters requiring estimation. This is the idea of the \textit{hierarchical mixtures of experts} (HME) procedure \citep{jacobsall}, which is commonly used in neural networks and which is implemented, for example, in the \pkg{flexmix} package for \proglang{R} \citep{jss:Leisch:2004, Grun+Leisch:2008}. However, a parametric form of $\lambda_{j}(\textbf{x})$ may be too restrictive; in particular, the logistic function is monotone, which may not realistically capture the pattern of change of $\lambda_j$ as a function of $\vec x$. As an alternative, \citet{young2009mor} propose a nonparametric estimate of $\lambda_{j}(\textbf{x}_{i})$ that uses ideas from kernel density estimation. The intuition behind the approach of \citet{young2009mor} is as follows: The M-step estimate (\ref{lambda}) of $\lambda_j$ at each iteration of a finite mixture model EM algorithm is simply an average of the ``posterior'' probabilities $p_{ij}=\E(Z_{ij}|\mbox{data})$. As a substitute, the nonparametric approach uses local linear regression to approximate the $\lambda_j(\textbf{x})$ function. Considering the case of univariate $x$ for simplicity, we set $\lambda_j(x) = \hat\alpha_{0j}(x)$, where \begin{equation}\label{lambdax} (\hat\alpha_{0j}(x), \hat\alpha_{1j}(x))= \arg\min_{(\alpha_0, \alpha_1)} \sum_{i=1}^n K_h(x-x_i) \left[ p_{ij} - \alpha_0 - \alpha_1(x-x_i) \right]^2 \end{equation} and $K_h(\cdot)$ is a kernel density function with scale parameter (i.e., bandwidth) $h$. It is straightforward to generalize equation (\ref{lambdax}) to the case of vector-valued $\vec x$ by using a multivariate kernel function. \citet{young2009mor} give an iterative algorithm for estimating mixture of regression parameters that replaces the standard $\lambda_j$ updates (\ref{lambda}) by the kernel-weighted version (\ref{lambdax}). The algorithm is otherwise similar to a standard EM; thus, like the algorithm in Section~\ref{section:EMlike} of this article, the resulting algorithm is an EM-like algorithm. Because only the $\lambda_j$ parameters depend on $\vec x$ (and are thus ``locally estimated''), whereas the other parameters (the $\vec\beta_j$ and $\sigma_j$) can be considered to be globally estimated, \citet{young2009mor} call this algorithm an iterative global/local estimation (IGLE) algorithm. Naturally, it replaces the usual E-step (\ref{regposteriors}) by a modified version in which each $\lambda_j$ is replaced by $\lambda_j(x_i)$. The function \code{regmixEM.loc} implements the IGLE algorithm in \pkg{mixtools}. Like the \code{regmixEM} function, \code{regmixEM.loc} has the flexibility to include an intercept term by using \code{addintercept = TRUE}. Moreover, this function has the argument \code{kern.l} to specify the kernel used in the local estimation of the $\lambda_{j}(\textbf{x}_{i})$. Kernels the user may specify include \code{"Gaussian"}, \code{"Beta"}, \code{"Triangle"}, \code{"Cosinus"}, and \code{"Optcosinus"}. Further numeric arguments relating to the chosen kernel include \code{kernl.g} to specify the shape parameter for when \code{kern.l = "Beta"} and \code{kernl.h} to specify the bandwidth which controls the size of the window used in the local estimation of the mixing proportions. See the corresponding help file for additional details. For the GNP and emissions dataset, Figure \ref{co2EM} indicates that the assumption of constant weights for the component regressions across all values of the covariate space may not be appropriate. The countries with higher GNP values appear to have a greater probability of belonging to the first component (i.e., the red line in Figure \ref{co2EM}). We will therefore apply the IGLE algorithm to this dataset. We will use the triweight kernel in equation (\ref{lambdax}), which is given by setting $\gamma=3$ in \begin{equation}\label{beta} K_{h}(x)=\frac{1}{hB(1/2,\gamma+1)}\left(1-\frac{x^2}{h^2}\right)^{\gamma}_{+}, \end{equation} where $B(x,y)=\Gamma(x)\Gamma(y)/\Gamma(x+y)$ is the beta function. For the triweight, $B(1/2, 4)$ is exactly $32/35$. This kernel may be specified in \code{regmixEM.loc} with \code{kern.l = "Beta"} and \code{kernl.g = 3}. The bandwidth we selected was $h=20$, which we specify with \code{kernl.h = 20}. For this implementation of the IGLE algorithm, we set the parameter estimates and posterior probability estimates obtained from the mixture of regressions EM algorithm as starting values for $\hat{\vec{\beta}}_{1}$, $\hat{\vec{\beta}}_{2}$, $\hat{\sigma}_{1}$, $\hat{\sigma}_{2}$, and $\lambda(x_{i})$. <>= CO2igle <- regmixEM.loc(CO2, GNP, beta = CO2reg$beta, sigma = CO2reg$sigma, lambda = CO2reg$posterior, kern.l = "Beta", kernl.h = 20, kernl.g = 3) @ We can view the estimates for $\hat{\vec{\beta}}_{1}$, $\hat{\vec{\beta}}_{2}$, $\hat{\sigma}_{1}$, and $\hat{\sigma}_{2}$. Notice that the estimates are comparable to those obtained for the mixture of regressions EM output and the log-likelihood value is slightly higher. <>= summary(CO2igle) @ Next, we can plot the estimates of $\lambda(x_{i})$ from the IGLE algorithm. <>= plot(GNP, CO2igle$post[,1], xlab = "GNP", cex.axis = 1.4, cex.lab = 1.5, ylab = "Final posterior probabilities") lines(sort(GNP), CO2igle$lambda[order(GNP), 1], col=2) abline(h = CO2igle$lambda[1], lty = 2) @ <>= pdf("lamplot.pdf") plot(GNP, CO2igle$post[,1], xlab = "GNP", cex.axis = 1.4, cex.lab = 1.5, ylab = "Final posterior probabilities") lines(sort(GNP), CO2igle$lambda[order(GNP), 1], col=2, lwd=2) abline(h = CO2igle$lambda[1], lty = 2, lwd=2) dev.off() @ This plot is given in Figure \ref{lamplot}. Notice the curvature provided by the estimates from the IGLE fit. These fits indicate an upward trend in the posteriors. The predictor-dependent mixing proportions model provides a viable way to reveal this trend since the regular mixture of regressions fit simply provides the same estimate of $\lambda$ for all $x_{i}$. \begin{figure}[h] \centering \includegraphics[height=3in,width=3in]{lamplot.pdf} \caption{Posterior membership probabilities $p_{i1}$ for component one versus the predictor GNP along with estimates of $\lambda_1(x)$ from the IGLE algorithm (the solid red curve) and $\lambda_1$ from the mixture of linear regressions EM algorithm (the dashed black line).} \label{lamplot} \end{figure} \subsection{Parametric bootstrapping for standard errors} With likelihood methods for estimation in mixture models, it is possible to obtain standard error estimates by using the inverse of the observed information matrix when implementing a Newton-type method. However, this may be computationally burdensome. An alternative way to report standard errors in the likelihood setting is by implementing a parametric bootstrap. \citet{eftib} claim that the parametric bootstrap should provide similar standard error estimates to the traditional method involving the information matrix. In a mixture-of-regressions context, a parametric bootstrap scheme may be outlined as follows: \begin{enumerate} \item Use \code{regmixEM} to find a local maximizer $\hat{\vec\theta}$ of the likelihood. \item For each $\textbf{x}_{i}$, simulate a response value $y_{i}^{*}$ from the mixture density $g_{\hat{\vec\theta}}(\cdot|\textbf{x}_{i})$. \item Find a parameter estimate $\tilde{\vec{\theta}}$ for the bootstrap sample using \code{regmixEM}. \item Use some type of check to determine whether label-switching appears to have occurred, and if so, correct it. \item Repeat steps 2 through 4 $B$ times to simulate the bootstrap sampling distribution of $\hat{\vec\theta}$. \item Use the sample covariance matrix of the bootstrap sample as an approximation to the covariance matrix of $\hat{\vec\theta}$. \end{enumerate} Note that step 3, which is not part of a standard parametric bootstrap, can be especially important in a mixture setting. The \pkg{mixtools} package implements a parametric bootstrap algorithm in the \code{boot.se} function. We may apply it to the regression example of this section, which assumes the same estimate of $\lambda$ for all $x_{i}$, as follows: <>= set.seed(123) CO2boot <- boot.se(CO2reg, B = 100) @ This output consists of both the standard error estimates and the parameter estimates obtained at each bootstrap replicate. An examination of the slope and intercept parameter estimates of the 500 bootstrap replicates reveals that no label-switching is likely to have occurred. For instance, the intercept terms of component one range from 4 to 11, whereas the intercept terms of component two are all tightly clumped around 0: <>= rbind(range(CO2boot$beta[1,]), range(CO2boot$beta[2,])) @ We may examine the bootstrap standard error estimates by themselves as follows: <>= CO2boot[c("lambda.se", "beta.se", "sigma.se")] @ \section[Additional capabilities of mixtools]{Additional capabilities of \pkg{mixtools}} \label{section:misc} \subsection{Selecting the number of components} \label{ss:nbcomp} Determining the number of components $k$ is still a major contemporary issue in mixture modeling. Two commonly employed techniques are information criterion and parametric bootstrapping of the likelihood ratio test statistic values for testing \begin{eqnarray}\label{mixturetest} \nonumber H_{0}&:& k = k_{0} \\ H_{1}&:& k = k_{0}+1 \end{eqnarray} for some positive integer $k_{0}$ \citep{mclach}. The \pkg{mixtools} package has functions to employ each of these methods using EM output from various mixture models. The information criterion functions calculate An Information Criterion (AIC) of \citet{aic}, the Bayesian Information Criterion (BIC) of \citet{schw}, the Integrated Completed Likelihood (ICL) of \citet{biern}, and the consistent AIC (CAIC) of \citet{boz}. The functions for performing parametric bootstrapping of the likelihood ratio test statistics sequentially test $k=k_{0}$ versus $k=k_{0}+1$ for $k_0=1, 2, \ldots$, terminating after the bootstrapped $p$-value for one of these tests exceeds a specified significance level. Currently, \pkg{mixtools} has functions for calculating information criteria for mixtures of multinomials (\code{multmixmodel.sel}), mixtures of multivariate normals under the conditionally i.i.d.\ assumption (\code{repnormmixmodel.sel}), and mixtures of regressions (\code{regmixmodel.sel}). Output from various mixture model fits available in \pkg{mixtools} can also be passed to the function \code{boot.comp} for the parametric bootstrapping approach. The parameter estimates from these EM fits are used to simulate data from the null distribution for the test given in (\ref{mixturetest}). For example, the following application of the \code{multmixmodel.sel} function to the water-level multinomial data from Section~\ref{section:cut} indicates that either 3 or 4 components seems like the best option (no more than 4 are allowed here since there are only 8 multinomial trials per observation and the mixture of multinomials requires $2m \le r+1$ for identifiability): <>= <> set.seed(10) multmixmodel.sel(watermult, comps = 1:4, epsilon = 0.001) @ \citet{youngphd} gives more applications of these functions to real datasets. \subsection{Bayesian methods} Currently, there are only two \pkg{mixtools} functions relating to Bayesian methodology and they both pertain to analyzing mixtures of regressions as described in \citet{hurn}. The \code{regmixMH} function performs a Metropolis-Hastings algorithm for fitting a mixture of regressions model where a proper prior has been assumed. The sampler output from \code{regmixMH} can then be passed to \code{regcr} in order to construct credible regions of the regression lines. Type \code{help("regmixMH")} and \code{help("regcr")} for details and an illustrative example. \section*{Acknowledgments} This research is partially supported by NSF Award SES-0518772. DRH received additional funding from Le Studium, an agency of the Centre National de la Recherche Scientifique of France. \bibliography{mixtools} \end{document} mixtools/vignettes/mixtools.bib0000755000175100001440000002217312514002272016515 0ustar hornikusers @incollection{aic, author = {H. Akaike}, title = {Information Theory and an Extension of the Maximum Likelihood Principle}, booktitle = {Second International Symposium on Information Theory}, publisher = {Akademiai Kiado}, year = {1973}, editor = {B. N. Petrov and F. Csaki}, pages = {267--281}, } @Article{Benaglia+Chauveau+Hunter+Young:2009, author = {Tatiana Benaglia and Didier Chauveau and David R. Hunter and Derek Young}, title = {\pkg{mixtools}: An \proglang{R} Package for Analyzing Finite Mixture Models}, journal = {Journal of Statistical Software}, year = {2009}, volume = {32}, number = {6}, pages = {1--29}, url = {http://www.jstatsoft.org/v32/i06/} } @article{benaglia2009, title={{An {E}{M}-Like Algorithm for Semi- and Non-Parametric Estimation in Multivariate Mixtures}}, author={Tatiana Benaglia and Didier Chauveau and David R.~Hunter}, journal={Journal of Computational and Graphical Statistics}, volume={18}, pages = {505--526}, year={2009} } @TECHREPORT{bch:festchrift2009, author={Tatiana Benaglia and Didier Chauveau and David R.~Hunter}, title = {Bandwidth Selection in an {E}{M}-Like Algorithm for Nonparametric Multivariate Mixtures}, year = {2009}, url = {http://hal.archives-ouvertes.fr/hal-00353297}, institution = {HAL}, number = {hal-00353297, version 1} } @article{biern, author = {C. Biernacki and G. Celeux and G. Govaert}, title = {Assessing a Mixture Model for Clustering with the Integrated Completed Likelihood}, journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence}, year = {2000}, volume = {22}, number = {7}, pages = {719--725} } @article{bordes2007sas, title={{A Stochastic {E}{M} Algorithm for a Semiparametric Mixture Model}}, author={Laurent Bordes and Didier Chauveau and Pierre Vandekerkhove}, journal={Computational Statistics \& Data Analysis}, volume={51}, number={11}, pages={5429--5443}, year={2007}, publisher={Elsevier} } @article{bordes2006set, title={{Semiparametric Estimation of a Two-Component Mixture Model}}, author={Laurent Bordes and St\'ephane Mottelet and Pierre Vandekerkhove}, journal={The Annals of Statistics}, volume={34}, number={3}, pages={1204--1232}, year={2006}, publisher={Institute of Mathematical Statistics} } @article{boz, author = {H. Bozdogan}, title = {Model Selection and Akaike's Information Criterion ({A}{I}{C}): The General Theory and Its Analytical Extensions}, journal = {Psychometrika}, year = {1987}, volume = {52}, number = {3}, pages = {345--370} } @article{cruzmedina2004smm, title={{Semiparametric Mixture Models and Repeated Measures: The Multinomial Cut Point Model}}, author={Isidro Roberto Cruz-Medina and Thomas P.~Hettmansperger and Hoben Thomas}, journal={Journal of the Royal Statistical Society C}, volume={53}, number={3}, pages={463--474}, year={2004}, publisher={Blackwell Synergy} } @article{dempster1977mli, title={{Maximum Likelihood from Incomplete Data Via the {E}{M} Algorithm}}, author={Arthur P.~Dempster and Nan M.~Laird and Donald B.~Rubin}, journal={Journal of the Royal Statistical Society B}, volume={39}, number={1}, pages={1--38}, year={1977}, publisher={JSTOR} } @article{deveaux1989, title={Mixtures of Linear Regressions}, author={R.~D.~de~Veaux}, journal={Computational Statistics and Data Analysis}, volume={8}, pages={227--245}, year={1989} } @book{eftib, author={B. Efron and R. Tibshirani}, title={An Introduction to the Bootstrap}, publisher={Chapman \& Hall}, year={1993}, address={London} } @article{elmore2004ecc, title={{Estimating Component Cumulative Distribution Functions in Finite Mixture Models}}, author={Ryan T.~Elmore and Thomas P.~Hettmansperger and Hoben Thomas}, journal={Communications in Statistics -- Theory and Methods}, volume={33}, number={9}, pages={2075--2086}, year={2004}, publisher={Taylor \& Francis} } @techreport{elmore2003, title={{Identifiability and Estimation in Finite Mixture Models with Multinomial Coefficients}}, author={Ryan T.~Elmore and Shaoli Wang}, institution={Penn State University}, number={03-04}, year={2003} } @Manual{Fraley+Raftery:2009, title = {\pkg{mclust}: Model-Based Clustering and Normal Mixture Modeling}, author = {Chris Fraley and Adrian Raftery}, year = {2009}, note = {\proglang{R}~package version~3.3.1}, url = {http://CRAN.R-project.org/package=mclust}, } @Article{Grun+Leisch:2008, author = {Bettina Gr{\"u}n and Friedrich Leisch}, title = {FlexMix Version 2: Finite Mixtures with Concomitant Variables and Varying and Constant Parameters}, journal = {Journal of Statistical Software}, year = {2008}, volume = {28}, number = {4}, pages = {1--35}, url = {http://www.jstatsoft.org/v28/i04/} } @article{hall2005nim, title={{Nonparametric Inference in Multivariate Mixtures}}, author={Peter Hall and A.~Neeman and R.~Pakyari and Ryan T.~Elmore}, journal={Biometrika}, volume={92}, number={3}, pages={667--678}, year={2005}, publisher={Biometrika Trust} } @article{hall2003nec, title={{Nonparametric Estimation of Component Distributions in a Multivariate Mixture}}, author={Peter Hall and X.~H.~Zhou}, journal={The Annals of Statistics}, volume={31}, number={1}, pages={201--224}, year={2003}, publisher={Institute of Mathematical Statistics} } @article{hettmansperger2000ani, title={{Almost Nonparametric Inference for Repeated Measures in Mixture Models}}, author={Thomas P.~Hettmansperger and Hoben Thomas}, journal={Journal of the Royal Statistical Society B}, volume={62}, number={4}, pages={811--825}, year={2000}, publisher={Blackwell Synergy} } @article{hunter2007ims, title={{Inference for Mixtures of Symmetric Distributions}}, author={David R.~Hunter and Shaoli Wang and Thomas P.~Hettmansperger}, journal={The Annals of Statistics}, volume={35}, pages={224--251}, year={2007}, publisher={Institute of Mathematical Statistics} } @article{hurn, author={M. Hurn and A. Justel and C. P. Robert}, title={Estimating Mixtures of Regressions}, journal={Journal of Computational and Graphical Statistics}, year={2003}, volume={12}, number={1}, pages={55--79} } @article{jacobsall, title={Adaptive Mixtures of Local Experts}, author={R. A. Jacobs and M. I. Jordan and S. J. Nowlan and G. E. Hinton}, journal={Neural Computation}, volume={3}, number={1}, year={1991}, pages={79--87} } @Article{jss:Leisch:2004, author = {Friedrich Leisch}, title = {FlexMix: A General Framework for Finite Mixture}, journal = {Journal of Statistical Software}, year = {2004}, volume = {11}, number = {8}, pages = {1--18}, url = {http://www.jstatsoft.org/v11/i08/} } @article{mclach, author={G. J. McLachlan}, title={On Bootstrapping the Likelihood Ratio Test Statistic for the Number of Components in a Normal Mixture}, journal={Journal of the Royal Statistical Society C}, year={1987}, volume={36}, pages={318--324} } @book{mclachlan2000fmm, title={{Finite Mixture Models}}, author={Geoffrey J.~McLachlan and D.~Peel}, year={2000}, publisher={John Wiley \& Sons}, address={New York} } @article{quandt1972sr, title={{The Estimation of the Parameters of a Linear Regression System Obeying Two Separate Regimes}}, author={R.~E.~Quandt}, journal={Journal of the American Statistical Association}, volume={67}, number={338}, pages={306--310}, year={1972}, publisher={American Statistical Association} } @article{quandtram1978sr, title={{Estimating Mixtures of Normal Distributions and Switching Regressions}}, author={R.~E.~Quandt and J.~B.~Ramsey}, journal={Journal of the American Statistical Association}, volume={73}, number={364}, pages={730--738}, year={1978}, publisher={American Statistical Association} } @Manual{r2009, title = {\proglang{R}: {A} Language and Environment for Statistical Computing}, author = {{\proglang{R} Development Core Team}}, organization = {\proglang{R} Foundation for Statistical Computing}, address = {Vienna, Austria}, year = {2009}, note = {{ISBN} 3-900051-07-0}, url = {http://www.R-project.org/} } @article{schw, author = {G. Schwarz}, title = {Estimating the Dimension of a Model}, journal = {The Annals of Statistics}, year = {1978}, volume = {6}, number = {2}, pages = {461--464} } @book{silverman1986des, title={{Density Estimation for Statistics and Data Analysis}}, author={Bernard W.~Silverman}, year={1986}, publisher={Chapman \& Hall/CRC} } @TECHREPORT{young2009mor, author={Derek S.~Young and David R.~Hunter}, title = {Mixtures of Regressions with Predictor-Dependent Mixing Proportions}, year = {2009}, url = {http://www.stat.psu.edu/reports/}, institution = {Penn State University}, number = {09-03} } @PHDTHESIS{youngphd, AUTHOR = {D. S. Young}, TITLE = {A Study of Mixtures of Regressions}, SCHOOL = {The Pennsylvania State University}, YEAR = {2007}, note = {Unpublished} } mixtools/MD50000644000175100001440000002447313060455274012476 0ustar hornikusers53d46ee5af940f7070bc1a52ef7b2ea8 *DESCRIPTION 8eb5141cec4876b99169a18e49ec1ee5 *NAMESPACE 90f6845145a668267069c2f56391c97f *NEWS b5e2b87ba9803aa4f1f8770641aa301c *R/FDR_spEM.R 96eb008edd1ebc2806b5434abec323b8 *R/WeibullRMMSEM.R 13dd98fd3d2a18d733dc7c1bb00cbd4a *R/augx.R d9b95227c94da60371c9e0729b1ba9ca *R/bootcomp.R 61470e3bebc02d2e166e9c8c5b863867 *R/bootse.R 99dbcce1ed200436d59d035818a844da *R/compcdf.R e2442e00a19de3f3c7d1b2938e61bc2f *R/ddirichlet.R 059b14e5defb7a753aa97dad8c53606d *R/density.npEM.R dda8c96267a045f0ee6517786c06aaa2 *R/density.spEM.R c5ee44461e73caf8c367228400d7b102 *R/depth.R 7b34ff227996abf53f08d4d56935e340 *R/dmvnorm.R 5af58056044f75475f0e3f863457e04b *R/ellipse.R c6208248803f53a4da829615db3d66b4 *R/expReliabilityMixEM.R 0ddb6b4c88c3436588877ecf233e3d6e *R/flaremixEM.R 1699b871b012d5d18651764f7bba238b *R/flaremixinit.R a24d9fe8a796e82aa53ebe99afbffe4a *R/gammamixEM.R b0d05b484af82ddac4d4a253dd440858 *R/gammamixinit.R 6e2e3de7fab7712a39e4a8b119c5e3d7 *R/hmeEM.R 7d443f685764995488abbb46a0ea0b98 *R/ise.npEM.R ae96a525e363c5cf8bb2050f3804f02e *R/kernB.R 17f792c11412089cec2137163f3ad16b *R/kernC.R faadc75b1c05a357cf1a5521a552721b *R/kernG.R 80ee6842adac9ecdada0a80616145082 *R/kernO.R ed42f2f65c534b3934113cf175ed2cae *R/kernT.R fa4cb05fe13180cf050cefc814b45f2c *R/lambda.R e45fb22e39852793e902b2aaec245f49 *R/lambdapert.R 032531819ccbcbded68c198e157d0464 *R/ldmult.R 3595e4fe4208d8ab0f1ba337a2df7dd0 *R/logisregmixEM.R d215cdc5eadce96c2e29cefc7142c474 *R/logisregmixinit.R 61e764f3c76493bee0965415c85356bc *R/logitfns.R 56a2d4a1563e033194716ed2ead44308 *R/makemultdata.R 25c1dcebc2d339b6721c90f1223d4ad0 *R/matsqrt.R 5a238137238ee32d2ee4c7c17d7db61b *R/multmixEM.R d1ab4a3d41015ace82f2874b08d58e6d *R/multmixinit.R dbbabcd60bd96932aeb5986416a423e4 *R/multmixmodelsel.R 6cb9ac591955760d8cc031a1d6bacf0a *R/mvnormalmixEM.R 937dd2fa6ddb32592fe9f296bc450d58 *R/mvnormalmixinit.R d313ae47d8d9ff8c642c6dd3b7da5076 *R/mvnpEM.R 50a070a1b9af8bf763c158747b3fd346 *R/normalmixEM.R 087fc04146099dce86123509dea45fb1 *R/normalmixEM2comp.R f1e37c4001808412a10e1513bfe6666d *R/normalmixMMlc.R 09734cc4ffe8e23a34b6869b3acc7159 *R/normalmixinit.R 000879d20a17f9129a56faf28a891cee *R/npEM.R 8f642b28048d551bb24509e0d4e90f79 *R/npMSL.R 972d8b4ade9a0fdd4ce7ad4da9579e7c *R/parse.constraints.R 45082d45819fb4d9d14f870baca9579f *R/perm.R 00ec0a98fc4eb484aaf623de0a431223 *R/plot.mixEM.R 1e424fc76c439f80a975b9095797054e *R/plot.npEM.R 4e085b2843070c797f907a5f088a6b51 *R/plotMCMC.R 7fbf03a9406b6ced9e35c9e5bf8bb02d *R/plotseq.npEM.R 02faa99327eace5b409b3481032ea014 *R/poisregmixEM.R cf023dc73614d65693d6ceceac2fd1a3 *R/poisregmixinit.R 7e016ef4d058c1e94e4ddd6f881d4c1e *R/postbeta.R b2174e4aa4a36657d81e50beffb90d64 *R/print.npEM.R 462a5c8f309b2ba25707f3f66eb4a3af *R/regcr.R 8d72c639d2daf98ec0e91e2f7a7199fc *R/regmix.init.R c4d7c8180c138d466589b2addf1c9ecb *R/regmixEM.R ce39ec2a845d99c195d8b7d70176f4e9 *R/regmixEMlambda.R 7b44dde5886cebc9084378e89a256ca5 *R/regmixEMlambdainit.R 2d2112503595576da88c153608d0afcb *R/regmixEMloc.R 3b25992254faebdb30ef0f0b04e7181a *R/regmixEMmixed.R f991619a3c3286205cd7969efb3cd1e3 *R/regmixMH.R 9d88ad51b155591c16a371cc5b107597 *R/regmixmixedinit.R c6d490d169fe3b56c5edc36f3936525a *R/regmixmodelsel.R 6f785fed55c31fe9b268ed7d77f34315 *R/repnormmixEM.R 8af2d7c7f46753fafe07fe4520e18a17 *R/repnormmixinit.R 1995eae3b993f508a9807631aaa21c92 *R/repnormmixmodelsel.R dfc1778aa1914d929c52d63f1cbb6a5e *R/rmvnorm.R 80d0ffe6d790c8a7234126271d5ecdf7 *R/rmvnormmix.R fb34d52c691679b6d56d25b1057e79e0 *R/rnormmix.R 2f4177ab69ac8112f327ff4e8f3c4afa *R/segregmixEM.R 355032dae4f99792fb201ed841021458 *R/segregmixinit.R 2f0b7f0a574080f57c84a4d59e65f0e5 *R/spEM.R 718d2662e5e77f92b2c3f6f8617276ab *R/spEMsymloc.R 9337850b826fb5d15f89aee4de794252 *R/spRMMSEM.R 1c6a0b23bfa6b2dd4eaacf71b6c639c1 *R/spregmix.R a5415d1ac9cf8fce3c7778643a3b7207 *R/summary.mixEM.R ad53a43af0b057d55b7c9a72dbf432d9 *R/summary.npEM.R a875916a07049e1ff3c4c46748d7ce3b *R/tauequivnormalmixEM.R e55cc3fc2dbcd3077af3e40b5e8222ba *R/testequality.R c1846ff0b297a74949447e5345dfadcc *R/testmixedequality.R 86e22aa1856a1a0a33d069413055bdb4 *R/tryflare.R a445dc664ab054482ecf95121a835d10 *R/wkde.R 129b83daade32c300c7465773b82c8be *R/wquantile.R 27b413fb0c6c42a9c4a993059a3616ad *R/zzz.R 1cffb245ff4930689e62f1ff51885b97 *build/vignette.rds d32a6f9223d0455635e212e4df50bf69 *data/CO2data.RData 8cafacfe19c67d59d429a3569970e992 *data/Habituationdata.RData f4d36947145afcfdf9e30a29e3e1a9eb *data/NOdata.RData 2bd5741057a02ef36a5e334bf723553b *data/RTdata.RData 2a329c7bcddcdb6930eebb0600c61008 *data/RTdata2.RData 3cb04c901dfa71aef9c9f09b87a57aba *data/RanEffdata.RData 11d247e4ff8bf69d9b7a7ff18ee13943 *data/RodFramedata.RData debde669810513397d5821349847b79b *data/Waterdata.RData 3d480b157c35174ca0321ee3e989987d *data/WaterdataFull.RData 6cd786ef84b29976ad2c0aafea83129e *data/tonedata.RData 81ed8cd286158732e9ca35685af628a9 *inst/CITATION b58bf32f450e3fdcc9aa29338d7f6998 *inst/doc/mixtools.R 721406b832d61b794a5a2d3439fb0e63 *inst/doc/mixtools.Rnw 31d6194e5d8cb8d8c750b27630133a3f *inst/doc/mixtools.pdf c297fde137d94e6a31727fe8981297c9 *man/CO2data.Rd a07ffa6092f579070260a585852c0667 *man/Habituationdata.Rd 77a4dd3afd03f955b9d6d2f3ef376f7b *man/NOdata.Rd ca59ff87410ddabfdd9ffd19c934557b *man/RTdata.Rd d0ddf6728676bffac50635d69e1bb0af *man/RTdata2.Rd 3deca71edacc8c91bcfd9feeba5e597f *man/RanEffdata.Rd abdd195a5e7cf4f0d4b341309e599f5e *man/RodFramedata.Rd c487a297a1e7af8eb8b82e7c2e690f5e *man/Waterdata.Rd c16678ff4ff5c955ee6f6f68b6371747 *man/aug.x.Rd 16285a31f2a4407c3543fa90e908addb *man/boot.comp.Rd a2eaf73e3a84662ac65231c38457b170 *man/boot.se.Rd d6e746a5ddc415cab5b3bb89a972c364 *man/compCDF.Rd 5423f1bb26fc39b61d7fb52afe5aa421 *man/ddirichlet.Rd 1dff44003e07659287e1a04ecbf7f6c5 *man/density.npEM.Rd 2860ecbcf63169201eeae7f5181e1d12 *man/density.spEM.Rd d13316f4df7c11794c4da96f820068cd *man/depth.Rd 859cc432c2c0014974ff2f43c0d78bea *man/dmvnorm.Rd 896bb2e222f9c7a8f651f001e008a692 *man/ellipse.Rd c976c9278210ab895481cb109b35a4b8 *man/expRMM_EM.Rd 55e77a20fdabbd0af8e75aee50171424 *man/flaremixEM.Rd 7abdc6b9b1725f99a94d2bca7fced045 *man/gammamixEM.Rd 8def2dab5420d98f81cbc8d00ee352dc *man/hmeEM.Rd a8d92274b4c4134c57d276d48392b77c *man/initializations.Rd 75eef340021a87cb95c03bc8190f15dd *man/ise.npEM.Rd 5915b4e20695e52e1b37c9b237da30cf *man/lambda.Rd fd08fe01bc6e4156ab9f37fcd163f745 *man/lambda.pert.Rd 806f084784aaa77ba3de702a195fc1ab *man/ldmult.Rd e4fb164fbb53dacfcb340283579df48d *man/logisregmixEM.Rd 6f3a941d9400dc69d0b7b750f792bc77 *man/makemultdata.Rd 1a1a5b5c6f7c8c3a243d42a8b276a9dd *man/matsqrt.Rd e3b3cf118572f616317c87d11e70467b *man/mixtools-internal.Rd 2db6e593a73e608d83671bfe00ee0fc6 *man/multmixEM.Rd 94954f75aa38ceb4e494b271fec94692 *man/multmixmodel.sel.Rd 84e378703fa29ff9fa84cde50e1175b0 *man/mvnormalmixEM.Rd 6091b8400e8741e40c594d138bd12b92 *man/mvnpEM.Rd 7ed0f5650ce0a1811085080321cf1c2e *man/normalmixEM.Rd 554c0f83afb47f41077ede6f0478ca38 *man/normalmixEM2comp.Rd ddb06723389f6c3d2a0ce74be7434296 *man/normalmixMMlc.Rd 496b6701ec27721345bc76b79e2e542b *man/npEM.Rd 72e434f64ee18058b710cf74108320e0 *man/npMSL.Rd ae258c402a2b46b3579e7777d846d91b *man/parseconstraint.Rd caeb3e81a3967f6f24546ad91f9c0dc8 *man/perm.Rd 7fb42e765af12a7796b818e6b03fca49 *man/plot.MCMC.Rd 8a05e74457672324e42dc2fc4920b928 *man/plot.mixEM.Rd 661ee1767e1e59f633fd51dd692a6bfe *man/plot.mvnpEM.Rd a468309483c4ae6d9bc4101dfa7c3167 *man/plot.npEM.Rd b2209409d6529e0676e462c94d4bff11 *man/plot.spEMN01.Rd e87708441e3e8c61f828208e47ef5bec *man/plotFDR.Rd d8b1df51aee17a56accdd65eb49371fa *man/plotexpRMM.Rd 53be9f3a2b96df2eab8a22500e9df420 *man/plotseq.npEM.Rd 8f4c53fcf045a3bf9154f0f4917b57ab *man/plotspRMM.Rd ea5419d7416a067e64a1dac170556ecf *man/plotweibullRMM.Rd 11d7b4aabc4c0aa688900f07f8c524dd *man/poisregmixEM.Rd 3f2c65d25f9ed8b0ed9ba988691e5621 *man/post.beta.Rd 547221c68209edc9b6a94998f5d3ed94 *man/print.mvnpEM.Rd 002a8ea6ad9a392548889c4b40603408 *man/print.npEM.Rd 48f62a2a5edbc51a548ffd152c3ceb68 *man/regcr.Rd 66520d118c35bc54dc68cedee7963175 *man/regmixEM.Rd 66f380bcbc7b3acce2295bc2cc958fac *man/regmixEM.lambda.Rd 34be77565bbcea7d45aa1a12afb6466a *man/regmixEM.loc.Rd 5912a91ec4c8eae883c131f7b0c45a24 *man/regmixEM.mixed.Rd 59c53259489056358fff325dc0d5625a *man/regmixMH.Rd cac402f4d34ba2a2e72c42e63a4b2b04 *man/regmixmodel.sel.Rd e5c39657c9e6fb25a70ac513f9a94327 *man/repnormmixEM.Rd 1b28aa913a7e3f2bec0129da9f534090 *man/repnormmixmodel.sel.Rd 4ecea92b3ab4ec6fda9c61aaa83d2d9e *man/rexpmix.Rd 283ccd2e22e6bc187d3b412eb3aa1859 *man/rmvnorm.Rd 91e761f99f003c6298cec7885060a56c *man/rmvnormmix.Rd 6c10958f200a83428bb5648c3454e2ef *man/rnormmix.Rd 759629421e7b9dafeb9c4af939b27d2d *man/rweibullmix.Rd c13dd8b7b8df7f76f61ed4bd76a96f22 *man/segregmixEM.Rd 61f993cbb217ef0ba2f36c258852e83d *man/spEM.Rd 2f1f7c0458163ea6070384373ee38576 *man/spEMsymloc.Rd f53a191d7396316355de08958bf1bb87 *man/spEMsymlocN01.Rd 1e714ea420d69ecd0c55f3345e989415 *man/spRMM_SEM.Rd 8cdfd07205c82a7a7ff15dbdfa16f830 *man/spregmix.Rd d2f4f5d0a553b8dd5bb3e251a1cf91de *man/summary.mixEM.Rd 33b88c122cc1df7b4391da510315dc03 *man/summary.mvnpEM.Rd fb2df20e6f0077e279fee305e1859040 *man/summary.npEM.Rd 110288fe4f5adc938b85007eade15885 *man/summary.spRMM.Rd dc7fae07ee408ba28c53960a7ee54ff0 *man/tauequivnormalmixEM.Rd ac7659fe36cde61769fb5c8fb1a2c102 *man/test.equality.Rd bc5650d17b0df897af8568a8adbcdc08 *man/test.equality.mixed.Rd 99018278282ba70a64ac736aa1e8e5e7 *man/tonedata.Rd ec184a30d24e76b13c021e9ddbf47b9c *man/try.flare.Rd 5673c3b9009b16347fb3a3dee97d0bb5 *man/weibullRMM_SEM.Rd fb40e0bf60b0bbd717f1408dcb5791e8 *man/wkde.Rd 6c35d1136da65dbd2f2583e19a7ece69 *man/wquantile.Rd 1512fde5c77cc87a513bf0bc0c7ec7d8 *src/KDEloc2.c e9ddda60cf37bb1b91a564c31bb26b9d *src/KDElocscale.c 6141ac8718537ecc30d5d768e55c74d2 *src/KDErepeated.c 418488e632cfbf9ec0383c8e2a6b4d68 *src/KDErepeatedbw.c d998563ef2b3b533ae43bcc756bc6953 *src/KDEsymloc.c 0b31b6a360443624d117d3d0c4e8edef *src/KDEsymloc1comp.c 3031711e3958323aa555081e7819333d *src/KDEsymloc2.c 4e866de60a0ecf51dd1962ef3d6f3c00 *src/init.c f2a2b6580952c87546e89ba91d8144dd *src/multinompost.c 92c56f68808db44df1269a4d18a23ade *src/mvwkde.c 949319e5b60fd36c2ed398ee94b8bc34 *src/new_svalues.c c0841c25090c2cc258b4974369238512 *src/normpost.c b6a84b03c05c76bcc76da25eff787f11 *src/npMSL.c 98faec8e3b8a3f838f510800b2166bb0 *src/sd.c 9f56ca76cc30332bda95b27f8ece61bd *src/z.c 721406b832d61b794a5a2d3439fb0e63 *vignettes/mixtools.Rnw b509b00eda098a844800f8ade63048eb *vignettes/mixtools.bib mixtools/build/0000755000175100001440000000000013060400571013241 5ustar hornikusersmixtools/build/vignette.rds0000644000175100001440000000032113060400571015574 0ustar hornikusers‹‹àb```b`ffb`b2™… 1# 'æÉͬ(ÉÏÏ)Ö Ê+G““†É)¤å)€8¥E© ¹ù)©9Å8)HIC“ãBXt0X¢X˜T²æ%榢Íî’Zš—þ‡]?ã4-Þ©•åùE0=(jØ jXÜ2sRaö†d–À9Ì.nP&cº0ÌGq?gQ~¹Ì¼ ÐoÿÝ£É9‰ÅèåJI,IÔK+ê¹éRýn¿mixtools/DESCRIPTION0000755000175100001440000000342613060455274013672 0ustar hornikusersPackage: mixtools Version: 1.1.0 Date: 2017-03-10 Title: Tools for Analyzing Finite Mixture Models Authors@R: c(person("Derek", "Young", role = c("aut", "cre"), email = "derek.young@uky.edu"), person("Tatiana", "Benaglia", role = "aut"), person("Didier", "Chauveau", role = "aut"), person("David", "Hunter", role = "aut"), person("Ryan", "Elmore", role = "ctb"), person("Thomas", "Hettmansperger", role = "ctb"), person("Hoben", "Thomas", role = "ctb"), person("Fengjuan", "Xuan", role = "ctb")) Depends: R (>= 3.2.0) Imports: MASS, segmented, stats, survival Description: Analyzes finite mixture models for various parametric and semiparametric settings. This includes mixtures of parametric distributions (normal, multivariate normal, multinomial, gamma), various Reliability Mixture Models (RMMs), mixtures-of-regressions settings (linear regression, logistic regression, Poisson regression, linear regression with changepoints, predictor-dependent mixing proportions, random effects regressions, hierarchical mixtures-of-experts), and tools for selecting the number of components (bootstrapping the likelihood ratio test statistic and model selection criteria). Bayesian estimation of mixtures-of-linear-regressions models is available as well as a novel data depth method for obtaining credible bands. This package is based upon work supported by the National Science Foundation under Grant No. SES-0518772. License: GPL (>= 2) NeedsCompilation: yes Packaged: 2017-03-10 01:29:29 UTC; derekyoung Author: Derek Young [aut, cre], Tatiana Benaglia [aut], Didier Chauveau [aut], David Hunter [aut], Ryan Elmore [ctb], Thomas Hettmansperger [ctb], Hoben Thomas [ctb], Fengjuan Xuan [ctb] Maintainer: Derek Young Repository: CRAN Date/Publication: 2017-03-10 08:50:20 mixtools/man/0000755000175100001440000000000013060400571012715 5ustar hornikusersmixtools/man/regmixmodel.sel.Rd0000755000175100001440000000451012122214526016306 0ustar hornikusers\name{regmixmodel.sel} \title{Model Selection in Mixtures of Regressions} \alias{regmixmodel.sel} \usage{ regmixmodel.sel(x, y, w = NULL, k = 2, type = c("fixed", "random", "mixed"), ...) } \description{ Assess the number of components in a mixture of regressions model using the Akaike's information criterion (AIC), Schwartz's Bayesian information criterion (BIC), Bozdogan's consistent AIC (CAIC), and Integrated Completed Likelihood (ICL). } \arguments{ \item{x}{An nxp matrix (or list) of predictors. If an intercept is required, then \code{x} must NOT include a column of 1's! Requiring an intercept may be controlled through arguments specified in \code{...}.} \item{y}{An n-vector (or list) of response values.} \item{w}{An optional list of fixed effects predictors for type "mixed" or "random".} \item{k}{The maximum number of components to assess.} \item{type}{The type of regression mixture to use. If "fixed", then a mixture of regressions with fixed effects will be used. If "random", then a mixture of regressions where the random effects regression coefficients are assumed to come from a mixture will be used. If "mixed", the mixture structure used is the same as "random", except a coefficient of fixed effects is also assumed.} \item{...}{Additional arguments passed to the EM algorithm used for calculating the type of regression mixture specified in \code{type}.} } \value{ \code{regmixmodel.sel} returns a matrix of the AIC, BIC, CAIC, and ICL values along with the winner (i.e., the highest value given by the model selection criterion) for various types of regression mixtures. } \seealso{ \code{\link{regmixEM}}, \code{\link{regmixEM.mixed}} } \references{ Biernacki, C., Celeux, G. and Govaert, G. (2000) Assessing a Mixture Model for Clustering with the Integrated Completed Likelihood, \emph{IEEE Transactions on Pattern Analysis and Machine Intelligence} \bold{22(7)}, 719--725. Bozdogan, H. (1987) Model Selection and Akaike's Information Criterion (AIC): The General Theory and its Analytical Extensions, \emph{Psychometrika} \bold{52}, 345--370. } \examples{ ## Assessing the number of components for NOdata. data(NOdata) attach(NOdata) set.seed(100) regmixmodel.sel(x = NO, y = Equivalence, k = 3, type = "fixed") } \keyword{file} mixtools/man/tauequivnormalmixEM.Rd0000644000175100001440000002055313046171330017227 0ustar hornikusers\name{tauequivnormalmixEM} \title{Special EM Algorithm for three-component tau equivalence model} \alias{tauequivnormalmixEM} \usage{ tauequivnormalmixEM (x, lambda = NULL, mu = NULL, sigma = NULL, k = 3, mean.constr = NULL, sd.constr = NULL, gparam = NULL, epsilon = 1e-08, maxit = 10000, maxrestarts=20, verb = FALSE, fast=FALSE, ECM = TRUE, arbmean = TRUE, arbvar = TRUE) } \description{ Return ECM algorithm output for a specific case of a three-component tau equivalence model } \details{ The \code{tauequivnormalmixEM} function is merely a wrapper for the \code{\link{normalmixMMlc}} function. # This is the standard EM algorithm for normal mixtures that maximizes # the conditional expected complete-data # log-likelihood at each M-step of the algorithm. # If desired, the # EM algorithm may be replaced by an ECM algorithm (see \code{ECM} argument) # that alternates between maximizing with respect to the \code{mu} # and \code{lambda} while holding \code{sigma} fixed, and maximizing with # respect to \code{sigma} and \code{lambda} while holding \code{mu} # fixed. In the case where \code{arbmean} is \code{FALSE} # and \code{arbvar} is \code{TRUE}, there is no closed-form EM algorithm, # so the ECM option is forced in this case. } \arguments{ \item{x}{A vector of length n consisting of the data, passed directly to \code{\link{normalmixMMlc}}.} \item{lambda}{Initial value of mixing proportions, passed directly to \code{\link{normalmixMMlc}}. Automatically repeated as necessary to produce a vector of length \code{k}, then normalized to sum to 1. If \code{NULL}, then \code{lambda} is random from a uniform Dirichlet distribution (i.e., its entries are uniform random and then it is normalized to sum to 1).} \item{mu}{Starting value of vector of component means for algorithm, passed directly to \code{\link{normalmixMMlc}}. If non-NULL and a vector, \code{k} is set to \code{length(mu)}. If NULL, then the initial value is randomly generated from a normal distribution with center(s) determined by binning the data.} \item{sigma}{Starting value of vector of component standard deviations for algorithm, passed directly to \code{\link{normalmixMMlc}}. Obsolete for linear constraint on the inverse variances, use \code{gparam} instead to specify a starting value. Note: This needs more precision} \item{k}{Number of components, passed directly to \code{\link{normalmixMMlc}}. Initial value ignored unless \code{mu} and \code{sigma} are both NULL. Also, initial value is ignored if \code{mean.constr} is NULL, since in that case we presume \code{k=3}.} \item{mean.constr}{If non-NULL, this parameter is passed directly to \code{\link{normalmixMMlc}} and both \code{mean.lincstr} and \code{var.lincstr} are passed as NULL to \code{\link{normalmixMMlc}}. If NULL, then it is assumed that \code{k=3} and the means must take the form \eqn{\alpha}, \eqn{\alpha-\delta}, and \eqn{\alpha+\delta} for unknown parameters \eqn{\alpha} and \eqn{\delta}. Furthermore, the reciprocal variances are assumed to be \eqn{\gamma_1+\gamma_2}, \eqn{\gamma_1}, and \eqn{\gamma_1} for unknown positive parameters \eqn{\gamma_1} and \eqn{\gamma_2}. These constraints are passed to the \code{\link{normalmixMMlc}} function using the \code{mean.lincstr} and \code{var.lincstr} arguments as shown in the examples for the \code{\link{normalmixMMlc}} help file.} \item{sd.constr}{Deprecated.} \item{gparam}{This argument is passed directly to \code{\link{normalmixMMlc}.} } \item{epsilon}{The convergence criterion. Convergence is declared when the change in the observed data log-likelihood increases by less than epsilon.} \item{maxit}{The maximum number of iterations.} \item{maxrestarts}{The maximum number of restarts allowed in case of a problem with the particular starting values chosen due to one of the variance estimates getting too small (each restart uses randomly chosen starting values). It is well-known that when each component of a normal mixture may have its own mean and variance, the likelihood has no maximizer; in such cases, we hope to find a "nice" local maximum with this algorithm instead, but occasionally the algorithm finds a "not nice" solution and one of the variances goes to zero, driving the likelihood to infinity.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} \item{fast}{If TRUE and k==2 and arbmean==TRUE, then use \code{\link{normalmixEM2comp}}, which is a much faster version of the EM algorithm for this case. This version is less protected against certain kinds of underflow that can cause numerical problems and it does not permit any restarts. If k>2, \code{fast} is ignored.} \item{ECM}{logical: Should this algorithm be an ECM algorithm in the sense of Meng and Rubin (1993)? If FALSE, the algorithm is a true EM algorithm; if TRUE, then every half-iteration alternately updates the means conditional on the variances or the variances conditional on the means, with an extra E-step in between these updates. For \code{tauequivnormalmixEM}, it must be TRUE.} \item{arbmean}{Deprecated.} \item{arbvar}{Deprecated.} } \value{ \code{normalmixEM} returns a list of class \code{mixEM} with items: \item{x}{The raw data.} \item{lambda}{The final mixing proportions.} \item{mu}{The final mean parameters.} \item{sigma}{The final standard deviation(s)} \item{scale}{Scale factor for the component standard deviations, if applicable.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood. This vector includes both the initial and the final values; thus, the number of iterations is one less than its length.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{normalmixMMlc}}, \code{\link{normalmixEM}}, \code{\link{mvnormalmixEM}}, \code{\link{normalmixEM2comp}} } \references{ \itemize{ \item Thomas, H., Lohaus, A., and Domsch, H. (2011) Stable Unstable Reliability Theory, \emph{British Journal of Mathematical and Statistical Psychology} 65(2): 201-221. \item Meng, X.-L. and Rubin, D. B. (1993) Maximum Likelihood Estimation Via the ECM Algorithm: A General Framework, \emph{Biometrika} 80(2): 267-278. } } \examples{ ## Analyzing synthetic data as in the tau equivalent model ## From Thomas et al (2011), see also Chauveau and Hunter (2013) ## a 3-component mixture of normals with linear constraints. lbd <- c(0.6,0.3,0.1); m <- length(lbd) sigma <- sig0 <- sqrt(c(1,9,9)) # means constaints mu = M beta M <- matrix(c(1,1,1,0,1,-1), 3, 2) beta <- c(1,5) # unknown constained mean mu0 <- mu <- as.vector(M \%*\% beta) # linear constraint on the inverse variances pi = A.g A <- matrix(c(1,1,1,0,1,0), m, 2, byrow=TRUE) iv0 <- 1/(sig0^2) g0 <- c(iv0[2],iv0[1] - iv0[2]) # gamma^0 init # simulation and EM fits set.seed(40); n=100; x <- rnormmix(n,lbd,mu,sigma) s <- normalmixEM(x,mu=mu0,sigma=sig0,maxit=2000) # plain EM # EM with var and mean linear constraints sc <- normalmixMMlc(x, lambda=lbd, mu=mu0, sigma=sig0, mean.lincstr=M, var.lincstr=A, gparam=g0) # Using tauequivnormalmixEM function to call normalmixMMlc tau <- tauequivnormalmixEM (x, lambda=lbd, mu=mu0, gparam=g0) # plot and compare both estimates dnormmixt <- function(t, lam, mu, sig){ m <- length(lam); f <- 0 for (j in 1:m) f <- f + lam[j]*dnorm(t,mean=mu[j],sd=sig[j]) f} t <- seq(min(x)-2, max(x)+2, len=200) hist(x, freq=FALSE, col="lightgrey", ylim=c(0,0.3), ylab="density",main="") lines(t, dnormmixt(t, lbd, mu, sigma), col="darkgrey", lwd=2) # true lines(t, dnormmixt(t, s$lambda, s$mu, s$sigma), lty=2) lines(t, dnormmixt(t, sc$lambda, sc$mu, sc$sigma), col=1, lty=3) lines(t, dnormmixt(t, tau$lambda, tau$mu, tau$sigma), col=2, lty=4) legend("topleft", c("true","plain EM","constr EM", "Tau Equiv"), col=c("darkgrey",1,1,2), lty=c(1,2,3,4), lwd=c(2,1,1,1)) } \keyword{file} mixtools/man/multmixmodel.sel.Rd0000755000175100001440000000313012546524074016523 0ustar hornikusers\name{multmixmodel.sel} \title{Model Selection Mixtures of Multinomials} \alias{multmixmodel.sel} \usage{ multmixmodel.sel(y, comps = NULL, ...) } \description{ Assess the number of components in a mixture of multinomials model using the Akaike's information criterion (AIC), Schwartz's Bayesian information criterion (BIC), Bozdogan's consistent AIC (CAIC), and Integrated Completed Likelihood (ICL). } \arguments{ \item{y}{Either An nxp matrix of data (multinomial counts), where n is the sample size and p is the number of multinomial bins, or the output of the \code{\link{makemultdata}} function. It is not necessary that all of the rows contain the same number of multinomial trials (i.e., the row sums of \code{y} need not be identical).} \item{comps}{Vector containing the numbers of components to consider. If NULL, this is set to be 1:(max possible), where (max possible) is floor((m+1)/2) and m is the minimum row sum of y.} \item{...}{Arguments passed to \code{multmixEM} that control convergence of the underlying EM algorithm.} } \value{ \code{multmixmodel.sel} returns a table summarizing the AIC, BIC, CAIC, ICL, and log-likelihood values along with the winner (the number with the lowest aforementioned values). } \seealso{ \code{\link{compCDF}}, \code{\link{makemultdata}}, \code{\link{multmixEM}} } \examples{ ##Data generated using the multinomial cutpoint method. set.seed(100) x <- matrix(rpois(70, 6), 10, 7) x.new <- makemultdata(x, cuts = 5) multmixmodel.sel(x.new$y, comps = c(1,2), epsilon = 1e-03) } \keyword{file} mixtools/man/makemultdata.Rd0000755000175100001440000000521512122212216015656 0ustar hornikusers\name{makemultdata} \title{Produce Cutpoint Multinomial Data} \alias{makemultdata} \usage{ makemultdata(..., cuts) } \description{ Change data into a matrix of multinomial counts using the cutpoint method and generate EM algorithm starting values for a k-component mixture of multinomials. } \arguments{ \item{...}{Either vectors (possibly of different lengths) of raw data or an nxm matrix (or data frame) of data. If \code{...} are vectors of varying length, then \code{makemultdata} will create a matrix of size nxm where n is the sample size and m is the length of the vector with maximum length. Those vectors with length less than m will have \code{NA}s to make the corresponding row in the matrix of length m. If \code{...} is a matrix (or data frame), then the rows must correspond to the sample and the columns the repeated measures.} \item{cuts}{A vector of cutpoints. This vector is sorted by the algorithm.} } \value{ \code{makemultdata} returns an object which is a list with components: \item{x}{An nxm matrix of the raw data.} \item{y}{An nxp matrix of the discretized data where p is one more than the number of cutpoints. Each row is a multinomial vector of counts. In particular, each row should sum to the number of repeated measures for that sample.} } \details{ The (i, j)th entry of the matrix \code{y} (for j < p) is equal to the number of entries in the ith column of \code{x} that are less than or equal to \code{cuts}[j]. The (i, p)th entry is equal to the number of entries greater than \code{cuts}[j]. } \seealso{ \code{\link{compCDF}}, \code{\link{multmixmodel.sel}}, \code{\link{multmixEM}} } \references{ Elmore, R. T., Hettmansperger, T. P. and Xuan, F. (2004) The Sign Statistic, One-Way Layouts and Mixture Models, \emph{Statistical Science} \bold{19(4)}, 579--587. } \examples{ ## Randomly generated data. set.seed(100) y <- matrix(rpois(70, 6), 10, 7) cuts <- c(2, 5, 7) out1 <- makemultdata(y, cuts = cuts) out1 ## The sulfur content of the coal seams in Texas. A <- c(1.51, 1.92, 1.08, 2.04, 2.14, 1.76, 1.17) B <- c(1.69, 0.64, .9, 1.41, 1.01, .84, 1.28, 1.59) C <- c(1.56, 1.22, 1.32, 1.39, 1.33, 1.54, 1.04, 2.25, 1.49) D <- c(1.3, .75, 1.26, .69, .62, .9, 1.2, .32) E <- c(.73, .8, .9, 1.24, .82, .72, .57, 1.18, .54, 1.3) out2 <- makemultdata(A, B, C, D, E, cuts = median(c(A, B, C, D, E))) out2 ## The reaction time data. data(RTdata) out3 <- makemultdata(RTdata, cuts = 100*c(5, 10, 12, 14, 16, 20, 25, 30, 40, 50)) dim(out3$y) out3$y[1:10,] } \keyword{file} mixtools/man/mixtools-internal.Rd0000755000175100001440000000753513060255764016725 0ustar hornikusers\name{mixtools-internal} \alias{inv.logit} \alias{dexpmixt} \alias{HRkde} \alias{kern.B} \alias{kern.C} \alias{kern.G} \alias{kern.O} \alias{kern.T} \alias{kfoldCV} \alias{KMintegrate} \alias{KMod} \alias{logit} \alias{npMSL_old} \alias{plotseq} \alias{rlnormscalemix} \alias{splitsample} \alias{triang_wkde} \alias{wbw.kCV} \title{Internal 'mixtools' Functions} \description{ Internal kernel, semiparametric-related, and miscellaneous functions for the package \code{mixtools}. } \usage{ dexpmixt(t, lam, rate) HRkde(cpd, u = cpd[,1], kernelft = triang_wkde, bw = rep(bw.nrd0(as.vector(cpd[,1])), length(cpd[,1]))) inv.logit(eta) kern.B(x, xi, h, g = 0) kern.C(x, xi, h) kern.G(x, xi, h) kern.O(x, xi, h) kern.T(x, xi, h) kfoldCV(h, x, nbsets = 2, w = rep(1, length(x)), lower = mean(x) - 5*sd(x), upper = mean(x) + 5*sd(x)) KMintegrate(s) KMod(cpd, already.ordered=TRUE) logit(mu) npMSL_old(x, mu0, blockid = 1:ncol(x), bw=bw.nrd0(as.vector(as.matrix(x))), samebw = TRUE, h=bw, eps=1e-8, maxiter=500, bwiter = maxiter, ngrid = 200, post = NULL, verb = TRUE) plotseq(x, ...) rlnormscalemix(n, lambda=1, meanlog=1, sdlog=1, scale=0.1) splitsample(n, nbsets = 2) triang_wkde(t, u=t, w=rep(1/length(t),length(t)), bw=rep(bw.nrd0(t), length(t))) wbw.kCV(x, nbfold = 5, w = rep(1, length(x)), hmin = 0.1*hmax, hmax = NULL) } \arguments{ \item{x}{A vector of values to which local modeling techniques are applied.} \item{xi}{An n-vector of data values.} \item{h}{The bandwidth controlling the size of the window used for the local estimation around \code{x}.} \item{g}{A shape parameter required for the symmetric beta kernel. The default is \code{g} = 0 which yields the uniform kernel. Some common values are \code{g} = 1 for the Epanechnikov kernel, \code{g} = 2 for the biweight kernel, and \code{g} = 3 for the triweight kernel.} \item{mu0}{See updated arguments in the \code{npMSL} function.} \item{blockid}{See updated arguments in the \code{npMSL} function.} \item{bw}{See updated arguments in the \code{npMSL} function.} \item{samebw}{See updated arguments in the \code{npMSL} function.} \item{h}{See updated arguments in the \code{npMSL} function.} \item{eps}{See updated arguments in the \code{npMSL} function.} \item{maxiter}{See updated arguments in the \code{npMSL} function.} \item{bwiter}{See updated arguments in the \code{npMSL} function.} \item{ngrid}{See updated arguments in the \code{npMSL} function.} \item{post}{See updated arguments in the \code{npMSL} function.} \item{verb}{See updated arguments in the \code{npMSL} function.} \item{n}{See updated arguments in the \code{npMSL} function.} \item{nbsets}{See updated arguments in the \code{npMSL} function.} \item{w}{See updated arguments in the \code{npMSL} function.} \item{lower}{See updated arguments in the \code{npMSL} function.} \item{upper}{See updated arguments in the \code{npMSL} function.} \item{nbfold}{See updated arguments in the \code{npMSL} function.} \item{hmin}{See updated arguments in the \code{npMSL} function.} \item{hmax}{See updated arguments in the \code{npMSL} function.} \item{lam}{A vector of mixture proportions, should sum to one.} \item{rate}{A vector of mixture component rates.} \item{t}{Argument for \code{dexpmixt}.} \item{mu}{A proportion for which to calculate the logit function; i.e., \code{log(mu / (1 - mu))}.} \item{eta}{Any real value for which to calculate the inverse logit function; i.e., \code{1 / (1 + exp(eta))}.} \item{cpd}{Argument for \code{HRkde}.} \item{kernelft}{Argument for \code{HRkde}.} \item{s}{Argument for \code{KMintegrate}.} \item{meanlog}{Argument for \code{rlnormscalemix}.} \item{sdlog}{Argument for \code{rlnormscalemix}.} } \details{ These are usually not to be called by the user. } \seealso{ \code{\link{npMSL}} } \keyword{internal} mixtools/man/plotFDR.Rd0000644000175100001440000000457312644764141014544 0ustar hornikusers\name{plotFDR} \alias{plotFDR} \title{Plot False Discovery Rate (FDR) estimates from output by EM-like strategies} \description{Plot FDR\eqn{(p_i)} estimates against index of sorted p-values from, e.g., normalmixEM or the semiparametric mixture model posterior probabilities output by \code{\link{spEMsymlocN01}}, or any EM-algorithm like \code{\link{normalmixEM}} which returns posterior probabilities. The function can simultaneously plot FDR estimates from two strategies for comparison. Plot of the true FDR can be added if complete data are available (typically in simulation studies).} \usage{ plotFDR(post1, post2 = NULL, lg1 = "FDR 1", lg2 = NULL, title = NULL, compH0 = 1, alpha = 0.1, complete.data = NULL, pctfdr = 0.3) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{post1}{The matrix of posterior probabilities from objects such as the output from \code{\link{spEMsymlocN01}}. The rows need to be sorted by increasing pvalues.} \item{post2}{A second object like \code{post1} if comparison is desired, also sorted by increasing pvalues.} \item{lg1}{Text describing the FDR estimate in \code{post1}.} \item{lg2}{Text describing the FDR estimate in \code{post2} if provided.} \item{title}{Plot title, a default is provided if \code{NULL}.} \item{compH0}{The component indicator associated to the null hypothesis H0, normally 1 since it is defined in this way in \code{\link{spEMsymlocN01}}, but in case of label switching in other algorithms it can be set to \code{2}.} \item{alpha}{The target FDR level; the index at which the FDR estimate crosses the horizontal line for level \code{alpha} gives the maximum number of cases to reject.} \item{complete.data}{An array with \eqn{n} lines and 2 columns, with the component indicator in column 1 and the p-values in column 2, sorted by p-values.} \item{pctfdr}{The level up to which the FDR is plotted, i.e. the scale of the vertical axis.} } \value{A plot of one or two FDR estimates, with the true FDR if available} \references{ \itemize{ \item Chauveau, D., Saby, N., Orton, T. G., Lemercier B., Walter, C. and Arrouys, D. Large-scale simultaneous hypothesis testing in monitoring carbon content from French soil database -- A semi-parametric mixture approach, Geoderma 219-220 (2014), 117-124. } } \author{Didier Chauveau} \seealso{ \code{\link{spEMsymlocN01}}} % \keyword{file}mixtools/man/summary.spRMM.Rd0000644000175100001440000000317413055603106015706 0ustar hornikusers\name{summary.spRMM} \alias{summary.spRMM} \title{Summarizing fits from Stochastic EM algorithm for semiparametric scaled mixture of censored data} \usage{ \method{summary}{spRMM}(object, digits = 6, ...) } \arguments{ \item{object}{an object of class \code{spRMM} such as a result of a call to \code{\link{spRMM_SEM}}} \item{digits}{Significant digits for printing values} \item{...}{Additional parameters passed to \code{print}.} } \description{ \code{\link[base]{summary}} method for class \code{spRMM}. } \details{ \code{\link{summary.spRMM}} prints scalar parameter estimates for a fitted mixture model: each component weight and the scaling factor, see reference below. The functional (nonparametric) estimates of survival and hazard rate funcions can be obtained using \code{\link{plotspRMM}}. } \value{ The function \code{\link{summary.spRMM}} prints the final loglikelihood value at the solution as well as The estimated mixing weights and the scaling parameter. } \seealso{ Function for plotting functional (nonparametric) estimates: \code{\link{plotspRMM}}. Other models and algorithms for censored lifetime data (name convention is model_algorithm): \code{\link{expRMM_EM}}, \code{\link{weibullRMM_SEM}}. } \references{ \itemize{ \item Bordes, L., and Chauveau, D. (2016), Stochastic EM algorithms for parametric and semiparametric mixture models for right-censored lifetime data, Computational Statistics, Volume 31, Issue 4, pages 1513-1538. \url{http://link.springer.com/article/10.1007/s00180-016-0661-7} } } \author{Didier Chauveau} \examples{ # See example(spRMM_SEM) } \keyword{file} mixtools/man/rmvnorm.Rd0000755000175100001440000000141311665556372014732 0ustar hornikusers\name{rmvnorm} \alias{rmvnorm} \title{Simulate from a Multivariate Normal Distribution} \description{ Simulate from a multiviate normal distribution } \usage{ rmvnorm(n, mu=NULL, sigma=NULL) } \arguments{ \item{n}{Number of vectors to simulate} \item{mu}{mean vector} \item{sigma}{covariance matrix, assumed symmetric and nonnegative definite} } \value{ An \eqn{n \times d}{n x d} matrix in which each row is an independently generated realization from the desired multivariate normal distribution } \details{ This function uses an \code{\link{eigen}} decomposition assuming \code{sigma} is symmetric. In particular, the upper triangle of \code{sigma} is ignored. } \seealso{ \code{\link{eigen}}, \code{\link{dnorm}}, \code{\link{dmvnorm}} } \keyword{distribution} mixtools/man/normalmixEM.Rd0000755000175100001440000001623712644763557015477 0ustar hornikusers\name{normalmixEM} \title{EM Algorithm for Mixtures of Univariate Normals} \alias{normalmixEM} \usage{ normalmixEM(x, lambda = NULL, mu = NULL, sigma = NULL, k = 2, mean.constr = NULL, sd.constr = NULL, epsilon = 1e-08, maxit = 1000, maxrestarts=20, verb = FALSE, fast=FALSE, ECM = FALSE, arbmean = TRUE, arbvar = TRUE) } \description{ Return EM algorithm output for mixtures of normal distributions. } \details{ This is the standard EM algorithm for normal mixtures that maximizes the conditional expected complete-data log-likelihood at each M-step of the algorithm. If desired, the EM algorithm may be replaced by an ECM algorithm (see \code{ECM} argument) that alternates between maximizing with respect to the \code{mu} and \code{lambda} while holding \code{sigma} fixed, and maximizing with respect to \code{sigma} and \code{lambda} while holding \code{mu} fixed. In the case where \code{arbmean} is \code{FALSE} and \code{arbvar} is \code{TRUE}, there is no closed-form EM algorithm, so the ECM option is forced in this case. } \arguments{ \item{x}{A vector of length n consisting of the data.} \item{lambda}{Initial value of mixing proportions. Automatically repeated as necessary to produce a vector of length \code{k}, then normalized to sum to 1. If \code{NULL}, then \code{lambda} is random from a uniform Dirichlet distribution (i.e., its entries are uniform random and then it is normalized to sum to 1).} \item{mu}{Starting value of vector of component means. If non-NULL and a scalar, \code{arbmean} is set to \code{FALSE}. If non-NULL and a vector, \code{k} is set to \code{length(mu)}. If NULL, then the initial value is randomly generated from a normal distribution with center(s) determined by binning the data.} \item{sigma}{Starting value of vector of component standard deviations for algorithm. If non-NULL and a scalar, \code{arbvar} is set to \code{FALSE}. If non-NULL and a vector, \code{arbvar} is set to \code{TRUE} and \code{k} is set to \code{length(sigma)}. If NULL, then the initial value is the reciprocal of the square root of a vector of random exponential-distribution values whose means are determined according to a binning method done on the data.} \item{k}{Number of components. Initial value ignored unless \code{mu} and \code{sigma} are both NULL.} \item{mean.constr}{Equality constraints on the mean parameters, given as a vector of length \code{k}. Each vector entry helps specify the constraints, if any, on the corresponding mean parameter: If \code{NA}, the corresponding parameter is unconstrained. If numeric, the corresponding parameter is fixed at that value. If a character string consisting of a single character preceded by a coefficient, such as \code{"0.5a"} or \code{"-b"}, all parameters using the same single character in their constraints will fix these parameters equal to the coefficient times some the same free parameter. For instance, if \code{mean.constr = c(NA, 0, "a", "-a")}, then the first mean parameter is unconstrained, the second is fixed at zero, and the third and forth are constrained to be equal and opposite in sign.} \item{sd.constr}{Equality constraints on the standard deviation parameters. See \code{mean.constr}.} \item{epsilon}{The convergence criterion. Convergence is declared when the change in the observed data log-likelihood increases by less than epsilon.} \item{maxit}{The maximum number of iterations.} \item{maxrestarts}{The maximum number of restarts allowed in case of a problem with the particular starting values chosen due to one of the variance estimates getting too small (each restart uses randomly chosen starting values). It is well-known that when each component of a normal mixture may have its own mean and variance, the likelihood has no maximizer; in such cases, we hope to find a "nice" local maximum with this algorithm instead, but occasionally the algorithm finds a "not nice" solution and one of the variances goes to zero, driving the likelihood to infinity.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} \item{fast}{If TRUE and k==2 and arbmean==TRUE, then use \code{\link{normalmixEM2comp}}, which is a much faster version of the EM algorithm for this case. This version is less protected against certain kinds of underflow that can cause numerical problems and it does not permit any restarts. If k>2, \code{fast} is ignored.} \item{ECM}{logical: Should this algorithm be an ECM algorithm in the sense of Meng and Rubin (1993)? If FALSE, the algorithm is a true EM algorithm; if TRUE, then every half-iteration alternately updates the means conditional on the variances or the variances conditional on the means, with an extra E-step in between these updates.} \item{arbmean}{If TRUE, then the component densities are allowed to have different \code{mu}s. If FALSE, then a scale mixture will be fit. Initial value ignored unless \code{mu} is NULL.} \item{arbvar}{If TRUE, then the component densities are allowed to have different \code{sigma}s. If FALSE, then a location mixture will be fit. Initial value ignored unless \code{sigma} is NULL.} } \value{ \code{normalmixEM} returns a list of class \code{mixEM} with items: \item{x}{The raw data.} \item{lambda}{The final mixing proportions.} \item{mu}{The final mean parameters.} \item{sigma}{The final standard deviations. If \code{arbmean} = FALSE, then only the smallest standard deviation is returned. See \code{scale} below.} \item{scale}{If \code{arbmean} = FALSE, then the scale factor for the component standard deviations is returned. Otherwise, this is omitted from the output.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood. This vector includes both the initial and the final values; thus, the number of iterations is one less than its length.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{mvnormalmixEM}}, \code{\link{normalmixEM2comp}}, \code{\link{normalmixMMlc}}, \code{\link{spEMsymloc}} } \references{ \itemize{ \item McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley \& Sons, Inc. \item Meng, X.-L. and Rubin, D. B. (1993) Maximum Likelihood Estimation Via the ECM Algorithm: A General Framework, \emph{Biometrika} 80(2): 267-278. \item Benaglia, T., Chauveau, D., Hunter, D. R., and Young, D. mixtools: An R package for analyzing finite mixture models. Journal of Statistical Software, 32(6):1-29, 2009. } } \examples{ ##Analyzing the Old Faithful geyser data with a 2-component mixture of normals. data(faithful) attach(faithful) set.seed(100) system.time(out<-normalmixEM(waiting, arbvar = FALSE, epsilon = 1e-03)) out system.time(out2<-normalmixEM(waiting, arbvar = FALSE, epsilon = 1e-03, fast=TRUE)) out2 # same thing but much faster } \keyword{file} mixtools/man/regmixMH.Rd0000755000175100001440000000661012122214466014736 0ustar hornikusers\name{regmixMH} \title{Metropolis-Hastings Algorithm for Mixtures of Regressions} \alias{regmixMH} \usage{ regmixMH(y, x, lambda = NULL, beta = NULL, s = NULL, k = 2, addintercept = TRUE, mu = NULL, sig = NULL, lam.hyp = NULL, sampsize = 1000, omega = 0.01, thin = 1) } \description{ Return Metropolis-Hastings (M-H) algorithm output for mixtures of multiple regressions with arbitrarily many components. } \arguments{ \item{y}{An n-vector of response values.} \item{x}{An nxp matrix of predictors. See \code{addintercept} below.} \item{lambda}{Initial value of mixing proportions. Entries should sum to 1. This determines number of components. If NULL, then \code{lambda} is random from uniform Dirichlet and number of components is determined by \code{beta}.} \item{beta}{Initial value of \code{beta} parameters. Should be a pxk matrix, where p is the number of columns of x and k is number of components. If NULL, then \code{beta} has uniform standard normal entries. If both \code{lambda} and \code{beta} are NULL, then number of components is determined by \code{s}.} \item{s}{k-vector of standard deviations. If NULL, then \eqn{1/\code{s}^2} has random standard exponential entries. If \code{lambda}, \code{beta}, and \code{s} are NULL, then number of components determined by \code{k}.} \item{k}{Number of components. Ignored unless all of \code{lambda}, \code{beta}, and \code{s} are NULL.} \item{addintercept}{If TRUE, a column of ones is appended to the x matrix before the value of p is calculated.} \item{mu}{The prior hyperparameter of same size as \code{beta}; the means of \code{beta} components. If NULL, these are set to zero.} \item{sig}{The prior hyperparameter of same size as \code{beta}; the standard deviations of \code{beta} components. If NULL, these are all set to five times the overall standard deviation of y.} \item{lam.hyp}{The prior hyperparameter of length \code{k} for the mixing proportions (i.e., these are hyperparameters for the Dirichlet distribution). If NULL, these are generated from a standard uniform distribution and then scaled to sum to 1.} \item{sampsize}{Size of posterior sample returned.} \item{omega}{Multiplier of step size to control M-H acceptance rate. Values closer to zero result in higher acceptance rates, generally.} \item{thin}{Lag between parameter vectors that will be kept.} } \value{ \code{regmixMH} returns a list of class \code{mixMCMC} with items: \item{x}{A nxp matrix of the predictors.} \item{y}{A vector of the responses.} \item{theta}{A (\code{sampsize}/\code{thin}) x q matrix of MCMC-sampled q-vectors, where q is the total number of parameters in \code{beta}, \code{s}, and \code{lambda}.} \item{k}{The number of components.} } \seealso{ \code{\link{regcr}} } \references{ Hurn, M., Justel, A. and Robert, C. P. (2003) Estimating Mixtures of Regressions, \emph{Journal of Computational and Graphical Statistics} \bold{12(1)}, 55--79. } \examples{ ## M-H algorithm for NOdata with acceptance rate about 40\%. data(NOdata) attach(NOdata) set.seed(100) beta <- matrix(c(1.3, -0.1, 0.6, 0.1), 2, 2) sigma <- c(.02, .05) MH.out <- regmixMH(Equivalence, NO, beta = beta, s = sigma, sampsize = 2500, omega = .0013) MH.out$theta[2400:2499,] } \keyword{file} mixtools/man/plot.npEM.Rd0000755000175100001440000000730512514002272015027 0ustar hornikusers\name{plot.npEM} \title{Plot Nonparametric or Semiparametric EM Output} \alias{plot.npEM} \alias{plot.spEM} \usage{ \method{plot}{npEM}(x, blocks = NULL, hist=TRUE, addlegend = TRUE, scale=TRUE, title=NULL, breaks="Sturges", ylim=NULL, dens.col, newplot = TRUE, pos.legend = "topright", cex.legend = 1, \dots) \method{plot}{spEM}(x, blocks = NULL, hist=TRUE, addlegend = TRUE, scale=TRUE, title=NULL, breaks="Sturges", ylim=NULL, dens.col, newplot = TRUE, pos.legend = "topright", cex.legend = 1, \dots) } \description{ Takes an object of class \code{npEM} and returns a set of plots of the density estimates for each block and each component. There is one plot per block, with all the components displayed on each block so it is possible to see the mixture structure for each block. } \arguments{ \item{x}{An object of class \code{npEM} such as the output of the \code{\link{npEM}} function} \item{blocks}{Blocks (of repeated measures coordinates) to plot; not relevant for univariate case. Default is to plot all blocks.} \item{hist}{If TRUE, superimpose density estimate plots on a histogram of the data} \item{addlegend}{If TRUE, adds legend to the plot.} \item{scale}{If TRUE, scale each density estimate by its corresponding estimated mixing proportion, so that the total area under all densities equals 1 and the densities plotted may be added to produce an estimate of the mixture density. When FALSE, each density curve has area 1 in the plot.} \item{title}{Alternative vector of main titles for plots (recycled as many times as needed)} \item{breaks}{Passed directly to the \code{\link{hist}} function} \item{ylim}{\code{ylim} parameter to use for all plots, if desired. If not given, each plot uses its own ylim that ensures that no part of the plot will go past the top of the plotting area.} \item{dens.col}{Color values to use for the individual component density functions, repeated as necessary. Default value is \code{2:(m+1)}.} \item{newplot}{If TRUE, creates a new plot.} \item{pos.legend}{Single argument specifying the position of the legend. See `Details' section of \code{\link{legend}}.} \item{cex.legend}{Character expansion factor for \code{\link{legend}}.} \item{\dots}{Any remaining arguments are passed to the \code{\link{hist}} and \code{\link{lines}} functions.} } \value{ \code{plot.npEM} returns a list with two elements: % \item{means}{A \eqn{B\times m}{B x m} matrix of estimated population means, % where \eqn{B} is the number of blocks and \eqn{m} is the number of mixture components % (subpopulations)} % \item{variances}{A \eqn{B\times m}{B x m} matrix of estimated population variances} \item{x}{List of matrices. The \eqn{j}th column of the \eqn{i}th matrix is the vector of \eqn{x}-values for the \eqn{j}th density in the \eqn{i}th plot.} \item{y}{\eqn{y}-values, given in the same form as the \eqn{x}-values.} } \seealso{ \code{\link{npEM}}, \code{\link{density.npEM}}, \code{\link{spEMsymloc}}, \code{\link{plotseq.npEM}} } \examples{ ## Examine and plot water-level task data set. ## First, try a 3-component solution where no two coordinates are ## assumed i.d. data(Waterdata) set.seed(100) \dontrun{ a <- npEM(Waterdata[,3:10], 3, bw=4) par(mfrow=c(2,4)) plot(a) # This produces 8 plots, one for each coordinate } \dontrun{ ## Next, same thing but pairing clock angles that are directly opposite one ## another (1:00 with 7:00, 2:00 with 8:00, etc.) b <- npEM(Waterdata[,3:10], 3, blockid=c(4,3,2,1,3,4,1,2), bw=4) par(mfrow=c(2,2)) plot(b) # Now only 4 plots, one for each block } } \keyword{file} mixtools/man/logisregmixEM.Rd0000755000175100001440000000677612122212050015771 0ustar hornikusers\name{logisregmixEM} \title{EM Algorithm for Mixtures of Logistic Regressions} \alias{logisregmixEM} \usage{ logisregmixEM(y, x, N = NULL, lambda = NULL, beta = NULL, k = 2, addintercept = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) } \description{ Returns EM algorithm output for mixtures of logistic regressions with arbitrarily many components. } \arguments{ \item{y}{An n-vector of successes out of N trials.} \item{x}{An nxp matrix of predictors. See \code{addintercept} below.} \item{N}{An n-vector of number of trials for the logistic regression. If NULL, then \code{N} is an n-vector of 1s for binary logistic regression.} \item{lambda}{Initial value of mixing proportions. Entries should sum to 1. This determines number of components. If NULL, then \code{lambda} is random from uniform Dirichlet and number of components is determined by \code{beta}.} \item{beta}{Initial value of \code{beta} parameters. Should be a pxk matrix, where p is the number of columns of x and k is number of components. If NULL, then \code{beta} is generated by binning the data into k bins and using \code{glm} on the values in each of the bins. If both \code{lambda} and \code{beta} are NULL, then number of components is determined by \code{k}.} \item{k}{Number of components. Ignored unless \code{lambda} and \code{beta} are both NULL.} \item{addintercept}{If TRUE, a column of ones is appended to the x matrix before the value of p is calculated.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{logisregmixEM} returns a list of class \code{mixEM} with items: \item{x}{The predictor values.} \item{y}{The response values.} \item{lambda}{The final mixing proportions.} \item{beta}{The final logistic regression coefficients.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{poisregmixEM}} } \references{ McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley \& Sons, Inc. } \examples{ ## EM output for data generated from a 2-component logistic regression model. set.seed(100) beta <- matrix(c(1, .5, 2, -.8), 2, 2) x <- runif(50, 0, 10) x1 <- cbind(1, x) xbeta <- x1\%*\%beta N <- ceiling(runif(50, 50, 75)) w <- rbinom(50, 1, .3) y <- w*rbinom(50, size = N, prob = (1/(1+exp(-xbeta[, 1]))))+ (1-w)*rbinom(50, size = N, prob = (1/(1+exp(-xbeta[, 2])))) out.1 <- logisregmixEM(y, x, N, verb = TRUE, epsilon = 1e-01) out.1 ## EM output for data generated from a 2-component binary logistic regression model. beta <- matrix(c(-10, .1, 20, -.1), 2, 2) x <- runif(500, 50, 250) x1 <- cbind(1, x) xbeta <- x1\%*\%beta w <- rbinom(500, 1, .3) y <- w*rbinom(500, size = 1, prob = (1/(1+exp(-xbeta[, 1]))))+ (1-w)*rbinom(500, size = 1, prob = (1/(1+exp(-xbeta[, 2])))) out.2 <- logisregmixEM(y, x, beta = beta, lambda = c(.3, .7), verb = TRUE, epsilon = 1e-01) out.2 } \keyword{file} mixtools/man/expRMM_EM.Rd0000644000175100001440000000716313055603106014747 0ustar hornikusers\name{expRMM_EM} \title{EM algorithm for Reliability Mixture Models (RMM) with right Censoring} \alias{expRMM_EM} \usage{ expRMM_EM(x, d=NULL, lambda = NULL, rate = NULL, k = 2, complete = "tdz", epsilon = 1e-08, maxit = 1000, verb = FALSE) } \description{ Parametric EM algorithm for univariate finite mixture of exponentials distributions with randomly right censored data. } \arguments{ \item{x}{A vector of \eqn{n}{n} real positive lifetime (possibly censored) durations. If \code{d} is not \code{NULL} then a vector of random censoring times \code{c} occurred, so that \eqn{x= min(x,c)} and \eqn{d = I(x <= c)}.} \item{d}{The vector of censoring indication, where 1 means observed lifetime data, and 0 means censored lifetime data.} \item{lambda}{Initial value of mixing proportions. If \code{NULL}, then \code{lambda} is set to \code{rep(1/k,k)}.} \item{rate}{Initial value of component exponential rates, all set to 1 if \code{NULL}.} \item{k}{Number of components of the mixture.} \item{complete}{Nature of complete data involved within the EM machinery, can be "tdz" for \code{(t,d,z)} (the default), or "xz" for \code{(x,z)} (see Bordes L. and Chauveau D. (2016) reference below).} \item{epsilon}{Tolerance limit for declaring algorithm convergence based on the change between two consecutive iterations.} \item{maxit}{The maximum number of iterations allowed, convergence may be declared before \code{maxit} iterations (see \code{epsilon} above).} \item{verb}{If TRUE, print updates for every iteration of the algorithm as it runs} } \value{ \code{expRMM_EM} returns a list of class "mixEM" with the following items: \item{x}{The input data.} \item{d}{The input censoring indicator.} \item{lambda}{The estimates for the mixing proportions.} \item{rate}{The estimates for the component rates.} \item{loglik}{The log-likelihood value at convergence of the algorithm.} \item{posterior}{An \eqn{n\times k}{n x k} matrix of posterior probabilities for observation, after convergence of the algorithm.} \item{all.loglik}{The sequence of log-likelihoods over iterations.} \item{all.lambda}{The sequence of mixing proportions over iterations.} \item{all.rate}{The sequence of component rates over iterations.} \item{ft}{A character vector giving the name of the function.} } \seealso{ Related functions: \code{\link{plotexpRMM}}, \code{\link{summary.mixEM}}. Other models and algorithms for censored lifetime data: \code{\link{weibullRMM_SEM}}, \code{\link{spRMM_SEM}}. } \references{ \itemize{ \item Bordes, L., and Chauveau, D. (2016), Stochastic EM algorithms for parametric and semiparametric mixture models for right-censored lifetime data, Computational Statistics, Volume 31, Issue 4, pages 1513-1538. \url{http://link.springer.com/article/10.1007/s00180-016-0661-7} } } \author{Didier Chauveau} \examples{ n <- 300 # sample size m <- 2 # number of mixture components lambda <- c(1/3,1-1/3); rate <- c(1,1/10) # mixture parameters set.seed(1234) x <- rexpmix(n, lambda, rate) # iid ~ exponential mixture cs <- runif(n,0,max(x)) # Censoring (uniform) and incomplete data t <- apply(cbind(x,cs),1,min) # observed or censored data d <- 1*(x <= cs) # censoring indicator ###### EM for RMM, exponential lifetimes l0 <- rep(1/m,m); r0 <- c(1, 0.5) # "arbitrary" initial values a <- expRMM_EM(t, d, lambda = l0, rate = r0, k = m) summary(a) # EM estimates etc plotexpRMM(a, lwd=2) # default plot of EM sequences plot(a, which=2) # or equivalently, S3 method for "mixEM" object %%\dontrun{ %%} } \keyword{file} mixtools/man/spEM.Rd0000755000175100001440000001464212226007736014073 0ustar hornikusers\name{spEM} \title{Semiparametric EM-like Algorithm for Mixtures of Independent Repeated Measurements} \alias{spEM} \usage{ spEM(x, mu0, blockid = 1:ncol(x), bw = bw.nrd0(as.vector(as.matrix(x))), constbw = TRUE, h = bw, eps = 1e-8, maxiter = 500, stochastic = FALSE, verb = TRUE) } \description{ Returns semiparametric EM algorithm output (Benaglia et al, 2009) for mixtures of multivariate (repeated measures) data where the coordinates of a row (case) in the data matrix are assumed to be independent, conditional on the mixture component (subpopulation) from which they are drawn. For now, this algorithm only implements model (4.7) in Benaglia et al, in which each component and block has exactly the same (nonparametric) shape and they differ only by location and scale. } \arguments{ \item{x}{An \eqn{n\times r}{n x r} matrix of data. Each of the \eqn{n} rows is a case, and each case has \eqn{r} repeated measurements. These measurements are assumed to be conditionally independent, conditional on the mixture component (subpopulation) from which the case is drawn.} \item{mu0}{Either an \eqn{m\times r}{m x r} matrix specifying the initial centers for the \link{kmeans} function, or an integer \eqn{m} specifying the number of initial centers, which are then choosen randomly in \link{kmeans}} \item{blockid}{A vector of length \eqn{r} identifying coordinates (columns of \code{x}) that are assumed to be identically distributed (i.e., in the same block). For instance, the default has all distinct elements, indicating that no two coordinates are assumed identically distributed and thus a separate set of \eqn{m} density estimates is produced for each column of \eqn{x}. On the other hand, if \code{blockid=rep(1,ncol(x))}, then the coordinates in each row are assumed conditionally i.i.d.} \item{bw}{Bandwidth for density estimation, equal to the standard deviation of the kernel density. By default, a simplistic application of the default \code{\link{bw.nrd0}} bandwidth used by \code{\link{density}} to the entire dataset.} \item{constbw}{Logical: If \code{TRUE}, use the same bandwidth for each iteration and for each component and block. If \code{FALSE}, use a separate bandwidth for each component and block, and update this bandwidth at each iteration of the algorithm using a suitably modified \code{\link{bw.nrd0}} method as described in Benaglia et al (2011).} \item{h}{Alternative way to specify the bandwidth, to provide backward compatibility.} \item{eps}{Tolerance limit for declaring algorithm convergence. Convergence is declared whenever the maximum change in any coordinate of the \code{lambda} vector (of mixing proportion estimates) does not exceed \code{eps}.} \item{maxiter}{The maximum number of iterations allowed, for both stochastic and non-stochastic versions; for non-stochastic algorithms (\code{stochastic = FALSE}), convergence may be declared before \code{maxiter} iterations (see \code{eps} above).} \item{stochastic}{Flag, if FALSE (the default), runs the non-stochastic version of the npEM algorithm, as in Benaglia et al (2009). Set to TRUE to run a stochastic version which simulates the posteriors at each iteration, and runs for \code{maxiter} iterations.} \item{verb}{If TRUE, print updates for every iteration of the algorithm as it runs} } \value{ \code{spEM} returns a list of class \code{spEM} with the following items: \item{data}{The raw data (an \eqn{n\times r}{n x r} matrix).} \item{posteriors}{An \eqn{n\times m}{n x m} matrix of posterior probabilities for observation. If \code{stochastic = TRUE}, this matrix is computed from an average over the \code{maxiter} iterations.} \item{bandwidth}{If \code{constbw==TRUE}, same as the \code{bw} input argument; otherwise, value of \code{bw} matrix at final iteration (since for now this algorithm only implements model (4.7) in Benaglia et al, the bandwidth matrix is reduced to a single bandwith scalar). This information is needed by any method that produces density estimates from the output.} \item{blockid}{Same as the \code{blockid} input argument, but recoded to have positive integer values. Also needed by any method that produces density estimates from the output.} \item{lambda}{The sequence of mixing proportions over iterations.} \item{lambdahat}{The final mixing proportions if \code{stochastic = FALSE}, or the average mixing proportions if \code{stochastic = TRUE}.} \item{mu}{The sequence of location parameters over iterations.} \item{muhat}{The final location parameters if \code{stochastic = FALSE}, or the average location parameters if \code{stochastic = TRUE}.} \item{sigma}{The sequence of scale parameters over iterations.} \item{sigmahat}{The final scale parameters if \code{stochastic = FALSE}, or the average scale parameters if \code{stochastic = TRUE}.} \item{loglik}{The sequence of log-likelihoods over iterations.} } \seealso{ \code{\link{plot.spEM}}, \code{\link{normmixrm.sim}}, \code{\link{spEMsymloc}}, \code{\link{npEM}}, \code{\link{plotseq.npEM}} } \references{ \itemize{ \item Benaglia, T., Chauveau, D., and Hunter, D. R., An EM-like algorithm for semi- and non-parametric estimation in multivariate mixtures, Journal of Computational and Graphical Statistics, 18, 505-526, 2009. \item Benaglia, T., Chauveau, D. and Hunter, D.R. Bandwidth Selection in an EM-like algorithm for nonparametric multivariate mixtures. Nonparametric Statistics and Mixture Models: A Festschrift in Honor of Thomas P. Hettmansperger. World Scientific Publishing Co., pages 15-27, 2011. \item Bordes, L., Chauveau, D., and Vandekerkhove, P., An EM algorithm for a semiparametric mixture model, Computational Statistics and Data Analysis, 51: 5429-5443, 2007. } } \examples{\dontrun{ ## simulate a 2-component gaussian mixture with 3 iid repeated measures set.seed(100) mu <- matrix(c(0, 15), 2, 3) sigma <- matrix(c(1, 5), 2, 3) x <- rmvnormmix(300, lambda = c(.4,.6), mu = mu, sigma = sigma) ## apply spEM with or without an iterative bandwidth selection d <- spEM(x, mu0 = 2, blockid = rep(1,3), constbw = FALSE) d2 <- spEM(x, mu0 = 2, blockid = rep(1,3), constbw = TRUE) plot(d, xlim=c(-10, 40), ylim = c(0, .16), xlab = "", breaks = 30, cex.lab=1.5, cex.axis=1.5, addlegend=FALSE) plot(d2, newplot=FALSE, addlegend=FALSE, lty=2)} } \keyword{file} mixtools/man/boot.comp.Rd0000755000175100001440000001153012122207616015112 0ustar hornikusers\name{boot.comp} \title{Performs Parametric Bootstrap for Sequentially Testing the Number of Components in Various Mixture Models} \alias{boot.comp} \usage{ boot.comp(y, x = NULL, N = NULL, max.comp = 2, B = 100, sig = 0.05, arbmean = TRUE, arbvar = TRUE, mix.type = c("logisregmix", "multmix", "mvnormalmix", "normalmix", "poisregmix", "regmix", "regmix.mixed", "repnormmix"), hist = TRUE, ...) } \description{ Performs a parametric bootstrap by producing B bootstrap realizations of the likelihood ratio statistic for testing the null hypothesis of a k-component fit versus the alternative hypothesis of a (k+1)-component fit to various mixture models. This is performed for up to a specified number of maximum components, k. A p-value is calculated for each test and once the p-value is above a specified significance level, the testing terminates. An optional histogram showing the distribution of the likelihood ratio statistic along with the observed statistic can also be produced. } \arguments{ \item{y}{The raw data for \code{multmix}, \code{mvnormalmix}, \code{normalmix}, and \code{repnormmix} and the response values for \code{logisregmix}, \code{poisregmix}, and \code{regmix}. See the documentation concerning their respective EM algorithms for specific structure of the raw data.} \item{x}{The predictor values required only for the regression mixtures \code{logisregmix}, \code{poisregmix}, and \code{regmix}. A column of 1s for the intercept term must not be included! See the documentation concerning their respective EM algorithms for specific structure of the predictor values.} \item{N}{An n-vector of number of trials for the logistic regression type \code{logisregmix}. If NULL, then \code{N} is an n-vector of 1s for binary logistic regression.} \item{max.comp}{The maximum number of components to test for. The default is 2. This function will perform a test of k-components versus (k+1)-components sequentially until we fail to reject the null hypothesis. This decision rule is governed by the calculated p-value and \code{sig}.} \item{B}{The number of bootstrap realizations of the likelihood ratio statistic to produce. The default is 100, but ideally, values of 1000 or more would be more acceptable.} \item{sig}{The significance level for which to compare the p-value against when performing the test of k-components versus (k+1)-components.} \item{arbmean}{If FALSE, then a scale mixture analysis can be performed for \code{mvnormalmix}, \code{normalmix}, \code{regmix}, or \code{repnormmix}. The default is TRUE.} \item{arbvar}{If FALSE, then a location mixture analysis can be performed for \code{mvnormalmix}, \code{normalmix}, \code{regmix}, or \code{repnormmix}. The default is TRUE.} \item{mix.type}{The type of mixture analysis you wish to perform. The data inputted for \code{y} and \code{x} depend on which type of mixture is selected. \code{logisregmix} corresponds to a mixture of logistic regressions. \code{multmix} corresponds to a mixture of multinomials with data determined by the cut-point method. \code{mvnormalmix} corresponds to a mixture of multivariate normals. \code{normalmix} corresponds to a mixture of univariate normals. \code{poisregmix} corresponds to a mixture of Poisson regressions. \code{regmix} corresponds to a mixture of regressions with normal components. \code{regmix.mixed} corresponds to a mixture of regressions with random or mixed effects. \code{repnormmix} corresponds to a mixture of normals with repeated measurements.} \item{hist}{An argument to provide a matrix plot of histograms for the boostrapped likelihood ratio statistic.} \item{...}{Additional arguments passed to the various EM algorithms for the mixture of interest.} } \value{ \code{boot.comp} returns a list with items: \item{p.values}{The p-values for each test of k-components versus (k+1)-components.} \item{log.lik}{The B bootstrap realizations of the likelihood ratio statistic.} \item{obs.log.lik}{The observed likelihood ratio statistic for each test which is used in determining the p-values.} } \seealso{ \code{\link{logisregmixEM}}, \code{\link{multmixEM}}, \code{\link{mvnormalmixEM}}, \code{\link{normalmixEM}}, \code{\link{poisregmixEM}}, \code{\link{regmixEM}}, \code{\link{regmixEM.mixed}}, \code{\link{repnormmixEM}} } \references{ McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley \& Sons, Inc. } \examples{ ## Bootstrapping to test the number of components on the RTdata. data(RTdata) set.seed(100) x <- as.matrix(RTdata[, 1:3]) y <- makemultdata(x, cuts = quantile(x, (1:9)/10))$y a <- boot.comp(y = y, max.comp = 1, B = 5, mix.type = "multmix", epsilon = 1e-3) a$p.values } \keyword{file} mixtools/man/rweibullmix.Rd0000644000175100001440000000223613055022056015554 0ustar hornikusers\name{rweibullmix} \title{Simulate from Mixtures of Weibull distributions} \alias{rweibullmix} \usage{ rweibullmix(n, lambda = 1, shape = 1, scale = 1) } \description{ Simulate from a mixture of univariate Weibull distributions. } \arguments{ \item{n}{Number of cases to simulate.} \item{lambda}{Vector of mixture probabilities, with length equal to \eqn{m}, the desired number of components (subpopulations). This is assumed to sum to 1.} \item{shape}{Vector of component shapes.} \item{scale}{Vector of component scales.} } \value{ \code{rexpmix} returns an \eqn{n}-vector sampled from an \eqn{m}-component mixture of univariate Weibull distributions. } %%\details{This function simply calls \code{\link{sample}} and \code{\link{rexp}}.} \seealso{ \code{\link{rnormmix}} and \code{\link{rmvnormmix}} for Gaussian mixtures, \code{\link{rexpmix}} for mixture of exponentials. } \examples{ n = 500 # sample size m = 2 # nb components lambda=c(0.4, 0.6) shape <- c(0.5,5); scale <- c(1,20) # model parameters set.seed(321) x <- rweibullmix(n, lambda, shape, scale) # iid ~ weibull mixture ## histogram of the simulated data. hist(x, col=8) } \keyword{file} mixtools/man/NOdata.Rd0000755000175100001440000000151011665556372014376 0ustar hornikusers\name{NOdata} \docType{data} \alias{NOdata} \title{Ethanol Fuel Data Set} \description{ This data set gives the equivalence ratios and peak nitrogen oxide emissions in a study using pure ethanol as a spark-ignition engine fuel. } \usage{NOdata} \format{This data frame consists of: \itemize{ \item{\code{NO}}{The peak nitrogen oxide emission levels.} \item{\code{Equivalence}}{The equivalence ratios for the engine at compression ratios from 7.5 to 18.} } } \source{Brinkman, N. D. (1981) Ethanol Fuel -- A Single-Cylinder Engine Study of Efficiency and Exhaust Emissions, \emph{S.A.E. Transactions}, 68. } \references{ Hurn, M., Justel, A. and Robert, C. P. (2003) Estimating Mixtures of Regressions, \emph{Journal of Computational and Graphical Statistics} \bold{12(1)}, 55--79. } \keyword{datasets} mixtools/man/print.npEM.Rd0000755000175100001440000000171112514002272015200 0ustar hornikusers\name{print.npEM} \alias{print.npEM} \title{Printing non- and semi-parametric multivariate mixture model fits} \usage{ \method{print}{npEM}(x, \dots) } \arguments{ \item{x}{an object of class \code{npEM} such as a result of a call to \code{\link{npEM}}} \item{\dots}{Additional arguments to \code{\link{print}}} } \description{ \code{\link[base]{print}} method for class \code{npEM}. } \details{ \code{print.npEM} prints the elements of an \code{npEM} object without printing the data or the posterior probabilities. (These may still be accessed as \code{x$data} and \code{x$posteriors}.) } \value{ \code{print.npEM} returns (invisibly) the full value of \code{x} itself, including the \code{data} and \code{posteriors} elements. } \seealso{ \code{\link{npEM}}, \code{\link{plot.npEM}} \code{\link{summary.npEM}} } \examples{ data(Waterdata) set.seed(100) \dontrun{npEM(Waterdata[,3:10], 3, bw=4, verb=FALSE) # Assume indep but not iid} } \keyword{file} mixtools/man/plot.spEMN01.Rd0000755000175100001440000000250012225537500015311 0ustar hornikusers\name{plot.spEMN01} \alias{plot.spEMN01} \title{Plot mixture pdf for the semiparametric mixture model output by spEMsymlocN01} \description{Plot mixture density for the semiparametric mixture model output by spEMsymlocN01, with one component known and set to normal(0,1), and a symmetric nonparametric density with location parameter.} \usage{ \method{plot}{spEMN01}(x, bw = x$bandwidth, knownpdf = dnorm, add.plot = FALSE, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{An object of class "spEMN01" as returned by spEMsymlocN01} \item{bw}{Bandwidth for weighted kernel density estimation.} \item{knownpdf}{The known density of component 1, default to \code{dnorm}.} \item{add.plot}{Set to TRUE to add to an existing plot.} \item{...}{further arguments passed to \code{plot} if \code{add.plot = FALSE}, and to \code{lines} if \code{add.plot = TRUE}.} } \value{A plot of the density of the mixture} \references{ \itemize{ \item Chauveau, D., Saby, N., Orton, T. G., Lemercier B., Walter, C. and Arrouys, D. Large-scale simultaneous hypothesis testing in soil monitoring: A semi-parametric mixture approach, preprint (2013). } } \author{Didier Chauveau} %% ~Make other sections like Warning with \section{Warning }{....} ~ \seealso{ \code{\link{spEMsymlocN01}}} % \keyword{file}mixtools/man/plot.mvnpEM.Rd0000755000175100001440000000344613046171330015377 0ustar hornikusers\name{plot.mvnpEM} \title{Plots of Marginal Density Estimates from the mvnpEM Algorithm Output} \alias{plot.mvnpEM} \usage{ \method{plot}{mvnpEM}(x, truenorm = FALSE, lambda = NULL, mu = NULL, v = NULL, lgdcex = 1, \dots) } \description{ Takes an object of class \code{mvnpEM}, as the one returned by the \code{\link{mvnpEM}} algorithm, and returns a set of plots of the density estimates for each coordinate within each multivariate block. All the components are displayed on each plot so it is possible to see the mixture structure for each coordinate and block. The final bandwidth values are also displayed, in a format depending on the bandwidth strategy . } \arguments{ \item{x}{An object of class \code{mvnpEM} such as the output of the \code{\link{mvnpEM}} function} \item{truenorm}{Mostly for checking purpose, if the nonparametric model is to be compared with a multivariate Gaussian mixture as the true model.} \item{lambda}{true weight parameters, for Gaussian models only (see above)} \item{mu}{true mean parameters, for Gaussian models only (see above)} \item{v}{true covariance matrices, for Gaussian models only (see above)} \item{lgdcex}{Character expansion factor for \code{\link{legend}}.} \item{\dots}{Any remaining arguments are passed to \code{\link{hist}}.} } \value{ \code{plot.mvnpEM} currently just plots the figure. } \seealso{ \code{\link{mvnpEM}}, \code{\link{npEM}}, \code{\link{density.npEM}} } \examples{ # example as in Chauveau and Hoang (2015) with 6 coordinates \dontrun{ m=2; r=6; blockid <-c(1,1,2,2,3,3) # 3 bivariate blocks # generate some data x ... a <- mvnpEM(x, mu0=2, blockid, samebw=F) # adaptive bandwidth plot(a) # this S3 method produces 6 plots of univariate marginals summary(a)} } \keyword{file} mixtools/man/wkde.Rd0000755000175100001440000000355212514002272014145 0ustar hornikusers\name{wkde} \title{Weighted Univariate (Normal) Kernel Density Estimate} \alias{wkde} \alias{wkde.symm} \usage{ wkde(x, u=x, w=rep(1, length(x)), bw=bw.nrd0(as.vector(x)), sym=FALSE) } \description{ Evaluates a weighted kernel density estimate, using a Gaussian kernel, at a specified vector of points. } \arguments{ \item{x}{Data} \item{u}{Points at which density is to be estimated} \item{w}{Weights (same length as \code{x})} \item{bw}{Bandwidth} \item{sym}{Logical: Symmetrize about zero?} } \value{A vector of the same length as \code{u} } \seealso{ \code{\link{npEM}}, \code{\link{ise.npEM}} } \references{ \itemize{ \item Benaglia, T., Chauveau, D., and Hunter, D. R. (2009), An EM-like algorithm for semi- and non-parametric estimation in multivariate mixtures, Journal of Computational and Graphical Statistics, 18, 505-526. \item Benaglia, T., Chauveau, D., Hunter, D. R., and Young, D. (2009), mixtools: An R package for analyzing finite mixture models. Journal of Statistical Software, 32(6):1-29. } } \examples{ # Mixture with mv gaussian model set.seed(100) m <- 2 # no. of components r <- 3 # no. of repeated measures (coordinates) lambda <- c(0.4, 0.6) mu <- matrix(c(0, 0, 0, 4, 4, 6), m, r, byrow=TRUE) # means sigma <- matrix(rep(1, 6), m, r, byrow=TRUE) # stdevs centers <- matrix(c(0, 0, 0, 4, 4, 4), 2, 3, byrow=TRUE) # initial centers for est blockid = c(1,1,2) # block structure of coordinates n = 100 x <- rmvnormmix(n, lambda, mu, sigma) # simulated data a <- npEM(x, centers, blockid, eps=1e-8, verb=FALSE) par(mfrow=c(2,2)) u <- seq(min(x), max(x), len=200) for(j in 1:2) { for(b in 1:2) { xx <- as.vector(x[,a$blockid==b]) wts <- rep(a$post[,j], length.out=length(xx)) bw <- a$bandwidth title <- paste("j =", j, "and b =", b) plot(u, wkde(xx, u, wts, bw), type="l", main=title) } } } \keyword{file} mixtools/man/ise.npEM.Rd0000755000175100001440000001027713055645105014644 0ustar hornikusers\name{ise.npEM} \title{Integrated Squared Error for a selected density from npEM output} \alias{ise.npEM} \usage{ ise.npEM(npEMout, component=1, block=1, truepdf, lower=-Inf, upper=Inf, plots = TRUE, ...) } \description{ Computes the integrated squared error for a selected estimated density from \code{\link{npEM}} output (selected by specifying the component and block number), relative to a true pdf that must be specified by the user. The range for the numerical integration must be specified. This function also returns (by default) a plot of the true and estimated densities. } \arguments{ \item{npEMout}{An object of class \code{npEM} such as the output of the \code{\link{npEM}} function} \item{component, block}{Component and block of particular density to analyze from \code{npEMout}.} \item{truepdf}{an \R function taking a numeric first argument and returning a numeric vector of the same length. Returning a non-finite element will generate an error.} \item{lower, upper}{the limits of integration. Can be infinite.} \item{plots}{logical: Should plots be produced?} \item{...}{additional arguments to be passed to \code{truepdf} (and that may be mandatory like, e.g., the \code{df = } argument of \code{dt}). Remember to use argument names not matching those of \code{ise.npRM}.} } \value{ Just as for the \code{\link{integrate}} function, a list of class \code{"integrate"} with components \item{value}{the final estimate of the integral.} \item{abs.error}{estimate of the modulus of the absolute error.} \item{subdivisions}{the number of subintervals produced in the subdivision process.} \item{message}{\code{"OK"} or a character string giving the error message.} \item{call}{the matched call.} } \details{This function calls the \code{\link{wkde}} (weighted kernel density estimate) function. } \seealso{ \code{\link{npEM}}, \code{\link{wkde}}, \code{\link{integrate}} } \references{ \itemize{ \item Benaglia, T., Chauveau, D., and Hunter, D. R. (2009), An EM-like algorithm for semi- and non-parametric estimation in multivariate mixtures, Journal of Computational and Graphical Statistics, 18, 505-526. \item Benaglia, T., Chauveau, D., Hunter, D. R., and Young, D. (2009), mixtools: An R package for analyzing finite mixture models. Journal of Statistical Software, 32(6):1-29. } } \examples{ # Mixture with mv gaussian model set.seed(100) m <- 2 # no. of components r <- 3 # no. of repeated measures (coordinates) lambda <- c(0.4, 0.6) # Note: Need first 2 coordinates conditionally iid due to block structure mu <- matrix(c(0, 0, 0, 3, 3, 5), m, r, byrow=TRUE) # means sigma <- matrix(rep(1, 6), m, r, byrow=TRUE) # stdevs blockid = c(1,1,2) # block structure of coordinates n <- 200 x <- rmvnormmix(n, lambda, mu, sigma) # simulated data # fit the model with "arbitrary" initial centers centers <- matrix(c(0, 0, 0, 4, 4, 4), 2, 3, byrow=TRUE) a <- npEM(x, centers, blockid, eps=1e-8, verb=FALSE) # Calculate integrated squared error for j=2, b=1: j <- 2 # component b <- 1 # block coords <- a$blockid == b ise.npEM(a, j, b, dnorm, lower=0, upper=10, plots=TRUE, mean=mu[j,coords][1], sd=sigma[j, coords][1]) # The following (lengthy) example recreates the normal multivariate # mixture model simulation from Benaglia et al (2009). mu <- matrix(c(0, 0, 0, 3, 4, 5), m, r, byrow=TRUE) nbrep <- 5 # Benaglia et al use 300 replications # matrix for storing sums of Integrated Squared Errors ISE <- matrix(0,m,r,dimnames=list(Components=1:m, Blocks=1:r)) nblabsw <- 0 # no. of label switches for (mc in 1:nbrep) { print(paste("REPETITION", mc)) x <- rmvnormmix(n,lambda,mu,sigma) # simulated data a <- npEM(x, centers, verb=FALSE) #default: if (a$lambda[1] > a$lambda[2]) nblabsw <- nblabsw + 1 for (j in 1:m) { # for each component for (k in 1:r) { # for each coordinate; not assuming iid! # dnorm with correct mean, sd is the true density: ISE[j,k] <- ISE[j,k] + ise.npEM(a, j, k, dnorm, lower=mu[j,k]-5, upper=mu[j,k]+5, plots=FALSE, mean=mu[j,k], sd=sigma[j,k])$value } } MISE <- ISE/nbrep # Mean ISE sqMISE <- sqrt(MISE) # root-mean-integrated-squared error } sqMISE } \keyword{file} mixtools/man/rexpmix.Rd0000644000175100001440000000216313055022056014704 0ustar hornikusers\name{rexpmix} \title{Simulate from Mixtures of Exponentials} \alias{rexpmix} \usage{ rexpmix(n, lambda = 1, rate = 1) } \description{ Simulate from a mixture of univariate exponential distributions. } \arguments{ \item{n}{Number of cases to simulate.} \item{lambda}{Vector of mixture probabilities, with length equal to \eqn{m}, the desired number of components (subpopulations). This is assumed to sum to 1.} \item{rate}{Vector of component rates.} } \value{ \code{rexpmix} returns an \eqn{n}-vector sampled from an \eqn{m}-component mixture of univariate exponential distributions. } %%\details{This function simply calls \code{\link{sample}} and \code{\link{rexp}}.} \seealso{ \code{\link{rnormmix}}, \code{\link{rmvnormmix}} for Gaussian mixtures, \code{\link{rweibullmix}} for mixture of Weibull distributions. } \examples{ ## Generate data from a 2-component mixture of exponentials. n=300 # sample size m=2 # nb components lambda=c(1/3, 2/3); rate = c(1,1/10) # parameters set.seed(1234) x <- rexpmix(n, lambda, rate) # iid ~ exp mixture ## histogram of the simulated data. hist(x, col=8) } \keyword{file} mixtools/man/weibullRMM_SEM.Rd0000644000175100001440000001102513055603106015731 0ustar hornikusers\name{weibullRMM_SEM} \title{St-EM algorithm for Reliability Mixture Models (RMM) of Weibull with right Censoring} \alias{weibullRMM_SEM} \usage{ weibullRMM_SEM(x, d = NULL, lambda = NULL, shape = NULL, scale = NULL, k = 2, maxit = 200, maxit.survreg = 200, epsilon = 1e-03, averaged = TRUE, verb = FALSE) } \description{ Parametric Stochastic EM (St-EM) algorithm for univariate finite mixture of Weibull distributions with randomly right censored data. } \arguments{ \item{x}{A vector of \eqn{n}{n} real positive lifetime (possibly censored) durations. If \code{d} is not \code{NULL} then a vector of random censoring times \code{c} occured, so that \eqn{x= min(x,c)} and \eqn{d = I(x <= c)}.} \item{d}{The vector of censoring indication, where 1 means observed lifetime data, and 0 means censored lifetime data.} \item{lambda}{Initial value of mixing proportions. If \code{NULL}, then \code{lambda} is set to \code{rep(1/k,k)}.} \item{shape}{Initial value of Weibull component shapes, all set to 1 if \code{NULL}.} \item{scale}{Initial value of Weibull component scales, all set to 1 if \code{NULL}.} \item{k}{Number of components of the mixture.} \item{maxit}{The number of iterations allowed, since for St-EM algorithms convergence is not based on stabilization, exactly \code{maxit} iterations are performed (see Bordes L. and Chauveau D. (2016) reference below).} \item{maxit.survreg}{The number of iterations allowed in the computations of the MLE for censored weibull data from the \code{survival} package (see Bordes L. and Chauveau D. (2016) reference below).} \item{epsilon}{Tolerance parameter used in the numerical computations of the MLE for censored weibull data by \code{survreg} from the \code{survival} package (see Bordes L. and Chauveau D. (2016) reference below).} \item{averaged}{The way of updating parameters at each iteration: if \code{TRUE}, current values of the parameters are obtained by averaging the sequence (see Bordes L. and Chauveau D. (2016) reference below).} \item{verb}{If TRUE, print updates for every iteration of the algorithm as it runs} } \details{This St-EM algorithm calls functions from the \code{survival} package to compute parametric MLE for censored weibull data.} \value{ \code{weibullRMM_SEM} returns a list of class "mixEM" with the following items: \item{x}{The input data.} \item{d}{The input censoring indicator.} \item{lambda}{The estimates for the mixing proportions.} \item{scale}{The estimates for the Weibull component scales.} \item{shape}{The estimates for the Weibull component shapes.} \item{loglik}{The log-likelihood value at convergence of the algorithm.} \item{posterior}{An \eqn{n\times k}{n x k} matrix of posterior probabilities for observation, after convergence of the algorithm.} \item{all.loglik}{The sequence of log-likelihoods over iterations.} \item{all.lambda}{The sequence of mixing proportions over iterations.} \item{all.scale}{The sequence of component scales over iterations.} \item{all.shape}{The sequence of component shapes over iterations.} \item{ft}{A character vector giving the name of the function called.} } \seealso{ Related functions: \code{\link{plotweibullRMM}}, \code{\link{summary.mixEM}}. Other models and algorithms for censored lifetime data (name convention is model_algorithm): \code{\link{expRMM_EM}}, \code{\link{spRMM_SEM}}. } \references{ \itemize{ \item Bordes, L., and Chauveau, D. (2016), Stochastic EM algorithms for parametric and semiparametric mixture models for right-censored lifetime data, Computational Statistics, Volume 31, Issue 4, pages 1513-1538. \url{http://link.springer.com/article/10.1007/s00180-016-0661-7} } } \author{Didier Chauveau} \examples{ n = 500 # sample size m = 2 # nb components lambda=c(0.4, 0.6) shape <- c(0.5,5); scale <- c(1,20) # model parameters set.seed(321) x <- rweibullmix(n, lambda, shape, scale) # iid ~ weibull mixture cs=runif(n,0,max(x)+10) # iid censoring times t <- apply(cbind(x,cs),1,min) # censored observations d <- 1*(x <= cs) # censoring indicator ## set arbitrary or "reasonable" (e.g., data-driven) initial values l0 <- rep(1/m,m); sh0 <- c(1, 2); sc0 <- c(2,10) # Stochastic EM algorithm a <- weibullRMM_SEM(t, d, lambda = l0, shape = sh0, scale = sc0, maxit = 200) summary(a) # Parameters estimates etc plotweibullRMM(a) # plot of St-EM sequences plot(a, which=2) # or equivalently, S3 method for "mixEM" object %%\dontrun{ %%} } \keyword{file} mixtools/man/ellipse.Rd0000755000175100001440000000274112122210456014647 0ustar hornikusers\name{ellipse} \title{Draw Two-Dimensional Ellipse Based on Mean and Covariance} \alias{ellipse} \usage{ ellipse(mu, sigma, alpha = .05, npoints = 250, newplot = FALSE, draw = TRUE, ...) } \description{ Draw a two-dimensional ellipse that traces a bivariate normal density contour for a given mean vector, covariance matrix, and probability content. } \arguments{ \item{mu}{A 2-vector giving the mean.} \item{sigma}{A 2x2 matrix giving the covariance matrix.} \item{alpha}{Probability to be excluded from the ellipse. The default value is alpha = .05, which results in a 95\% ellipse.} \item{npoints}{Number of points comprising the border of the ellipse.} \item{newplot}{If newplot = TRUE and draw = TRUE, plot the ellipse on a new plot. If newplot = FALSE and draw = TRUE, add the ellipse to an existing plot.} \item{draw}{If TRUE, draw the ellipse.} \item{...}{Graphical parameters passed to \code{lines} or \code{plot} command.} } \value{ \code{ellipse} returns an \code{npoints}x2 matrix of the points forming the border of the ellipse. } \references{ Johnson, R. A. and Wichern, D. W. (2002) \emph{Applied Multivariate Statistical Analysis, Fifth Edition}, Prentice Hall. } \seealso{ \code{\link{regcr}} } \examples{ ## Produce a 95\% ellipse with the specified mean and covariance structure. mu <- c(1, 3) sigma <- matrix(c(1, .3, .3, 1.5), 2, 2) ellipse(mu, sigma, npoints = 200, newplot = TRUE) } \keyword{file} mixtools/man/parseconstraint.Rd0000755000175100001440000000076012112171410016423 0ustar hornikusers\name{parse.constraints} \title{Constraint Function} \alias{parse.constraints} \usage{ parse.constraints(constr, k = 2, allsame = FALSE) } \description{ Constraint function for some mixture EM algorithms. } \arguments{ \item{constr}{Vector indicating constrained/unconstrained means.} \item{k}{Number of components.} \item{allsame}{Logical indicating for processing the constraints.} } \details{ This function is not intended to be called by the user. } \keyword{internal} mixtools/man/depth.Rd0000755000175100001440000000201012122210474014303 0ustar hornikusers\name{depth} \alias{depth} \title{Elliptical and Spherical Depth} \description{ Computation of spherical or elliptical depth. } \usage{ depth(pts, x, Cx = var(x)) } \arguments{ \item{pts}{A kxd matrix containing the k points that one wants to compute the depth. Each row is a point. } \item{x}{A nxd matrix containing the reference data. Each row is an observation.} \item{Cx}{A dxd scatter matrix for the data x where the default is var(x). When Cx = I(d), it returns the sphercial depth.} } \value{ \code{depth} returns a k-vector where each entry is the elliptical depth of a point in \code{pts}. } \references{ Elmore, R. T., Hettmansperger, T. P. and Xuan, F. (2000) Spherical Data Depth and a Multivariate Median, \emph{Proceedings of Data Depth: Robust Multivariate Statistical Analysis, Computational Geometry and Applications}. } \seealso{\code{\link{regcr}} } \examples{ set.seed(100) x <- matrix(rnorm(200),nc = 2) depth(x[1:3, ], x) } \note{\code{depth} is used in \code{regcr}.} \keyword{file} mixtools/man/flaremixEM.Rd0000755000175100001440000000562012122210720015234 0ustar hornikusers\name{flaremixEM} \title{EM Algorithm for Mixtures of Regressions with Flare} \alias{flaremixEM} \usage{ flaremixEM(y, x, lambda = NULL, beta = NULL, sigma = NULL, alpha = NULL, nu = NULL, epsilon = 1e-04, maxit = 10000, verb = FALSE, restart = 50) } \description{ Returns output for 2-component mixture of regressions with flaring using an EM algorithm with one step of Newton-Raphson requiring an adaptive barrier for maximization of the objective function. A mixture of regressions with flare occurs when there appears to be a common regression relationship for the data, but the error terms have a mixture structure of one normal component and one exponential component. } \arguments{ \item{y}{An n-vector of response values.} \item{x}{An n-vector of predictor values. An intercept term will be added by default.} \item{lambda}{Initial value of mixing proportions. Entries should sum to 1.} \item{beta}{Initial value of \code{beta} parameters. Should be a 2x2 matrix where the columns correspond to the component.} \item{sigma}{A vector of standard deviations.} \item{alpha}{A scalar for the exponential component's rate.} \item{nu}{A vector specifying the barrier constants to use. The first barrier constant where the algorithm converges is used.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} \item{restart}{The number of times to restart the algorithm in case convergence is not attained. The default is 50.} } \value{ \code{flaremixEM} returns a list of class \code{mixEM} with items: \item{x}{The set of predictors (which includes a column of 1's).} \item{y}{The response values.} \item{posterior}{An nx2 matrix of posterior probabilities for observations.} \item{lambda}{The final mixing proportions.} \item{beta}{The final regression coefficients.} \item{sigma}{The final standard deviations.} \item{alpha}{The final exponential rate.} \item{loglik}{The final log-likelihood.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{regmixEM}} } \examples{ ## Simulation output. set.seed(100) j=1 while(j == 1){ x1 <- runif(30, 0, 10) x2 <- runif(20, 10, 20) x3 <- runif(30, 20, 30) y1 <- 3+4*x1+rnorm(30, sd = 1) y2 <- 3+4*x2+rexp(20, rate = .05) y3 <- 3+4*x3+rnorm(30, sd = 1) x <- c(x1, x2, x3) y <- c(y1, y2, y3) nu <- (1:30)/2 out <- try(flaremixEM(y, x, beta = c(3, 4), nu = nu, lambda = c(.75, .25), sigma = 1), silent = TRUE) if(class(out) == "try-error"){ j <- 1 } else j <- 2 } out[4:7] plot(x, y, pch = 19) abline(out$beta) } \keyword{file} mixtools/man/spRMM_SEM.Rd0000644000175100001440000001041113055603106014706 0ustar hornikusers\name{spRMM_SEM} \title{Stochastic EM algorithm for semiparametric scaled mixture of censored data} \alias{spRMM_SEM} \usage{ spRMM_SEM(t, d = NULL, lambda = NULL, scaling = NULL, centers = 2, kernelft = triang_wkde, bw = rep(bw.nrd0(t),length(t)), averaged = TRUE, epsilon = 1e-08, maxit = 100, batchsize = 1, verb = FALSE) } \description{ Stochastic EM algorithm for semiparametric scaled mixture for randomly right censored data. } \arguments{ \item{t}{A vector of \eqn{n}{n} real positive lifetime (possibly censored) durations. If \code{d} is not \code{NULL} then a vector of random censoring times \code{c} occurred, so that \eqn{x= min(x,c)} and \eqn{d = I(x <= c)}.} \item{d}{The vector of censoring indication, where 1 means observed lifetime data, and 0 means censored lifetime data.} \item{lambda}{Initial value of mixing proportions. If \code{NULL}, then \code{lambda} is set to \code{rep(1/k,k)}.} \item{scaling}{Initial value of scaling between components, set to 1 if \code{NULL}.} \item{centers}{initial centers for initial call to kmeans for initialization.} \item{kernelft}{.} \item{bw}{Bandwidth in the kernel hazard estimates.} \item{averaged}{averaged.} \item{epsilon}{Tolerance limit.} \item{maxit}{The number of iterations allowed.} \item{batchsize}{The batchsize (see reference below).} \item{verb}{If TRUE, print updates for every iteration of the algorithm as it runs} } \value{ \code{spRMM_SEM} returns a list of class \code{"spRMM"} with the following items: \item{t}{The input data.} \item{d}{The input censoring indicator.} \item{lambda}{The estimates for the mixing proportions.} \item{scaling}{The estimates for the components scaling.} \item{posterior}{An \eqn{n\times k}{n x 2} matrix of posterior probabilities for observation, after convergence of the algorithm.} \item{loglik}{The (pseudo) log-likelihood value at convergence of the algorithm.} \item{all.loglik}{The sequence of log-likelihood values over iterations.} \item{all.lambda}{The sequence of mixing proportions over iterations.} \item{all.scaling}{The sequence of scaling parameter over iterations.} \item{meanpost}{Posterior probabilities averaged over iterations.} \item{survival}{Kaplan-Meier last iteration estimate (a \code{stepfun} object).} \item{hazard}{Hazard rate last iteration estimate evaluated at \code{final.t}.} \item{final.t}{Last iteration unscaled sample (see reference).} \item{s.hat}{Kaplan-Meier average estimate.} \item{t.hat}{Ordered unscaled sample, for testing purpose.} \item{avg.od}{For testing purpose only.} \item{hazard.hat}{Hazard rate average estimate on \code{t.hat}.} \item{batch.t}{Batch sample (not ordered), see reference.} \item{batch.d}{Associated event indicators just \code{rep(d,batchsize)}, for testing purpose.} \item{sumNaNs}{Internal control of numerical stability.} \item{ft}{A character vector giving the name of the function.} } \seealso{ Related functions: \code{\link{plotspRMM}}, \code{\link{summary.spRMM}}. Other models and algorithms for censored lifetime data (name convention is model_algorithm): \code{\link{expRMM_EM}}, \code{\link{weibullRMM_SEM}}. } \references{ \itemize{ \item Bordes, L., and Chauveau, D. (2016), Stochastic EM algorithms for parametric and semiparametric mixture models for right-censored lifetime data, Computational Statistics, Volume 31, Issue 4, pages 1513-1538. \url{http://link.springer.com/article/10.1007/s00180-016-0661-7} } } \author{Didier Chauveau} \examples{ \dontrun{ n=500 # sample size m=2 # nb components lambda=c(0.4, 0.6) # parameters meanlog=3; sdlog=0.5; scale=0.1 set.seed(12) # simulate a scaled mixture of lognormals x <- rlnormscalemix(n, lambda, meanlog, sdlog, scale) cs=runif(n,20,max(x)+400) # Censoring (uniform) and incomplete data t <- apply(cbind(x,cs),1,min) d <- 1*(x <= cs) tauxc <- 100*round( 1-mean(d),3) cat(tauxc, "percents of data censored.\n") c0 <- c(25, 180) # data-driven initial centers (visible modes) sc0 <- 25/180 # and scaling s <- spRMM_SEM(t, d, scaling = sc0, centers = c0, bw = 15, maxit = 100) plotspRMM(s) # default summary(s) # S3 method for class "spRMM" } } \keyword{file} mixtools/man/summary.npEM.Rd0000644000175100001440000000367012644774124015564 0ustar hornikusers\name{summary.npEM} \alias{summary.npEM} \alias{print.summary.npEM} \title{Summarizing non- and semi-parametric multivariate mixture model fits} \usage{ \method{summary}{npEM}(object, \dots) \method{print}{summary.npEM}(x, digits=3, \dots) } \arguments{ \item{object,x}{an object of class \code{npEM} such as a result of a call to \code{\link{npEM}}} \item{digits}{Significant digits for printing values} \item{\dots}{further arguments passed to or from other methods.} } \description{ \code{\link[base]{summary}} method for class \code{npEM}. } \details{ \code{\link{summary.npEM}} prints means and variances of each block for each component. These quantities might not be part of the model, but they are estimated nonparametrically based on the posterior probabilities and the data. } \value{ The function \code{\link{summary.npEM}} returns a list of type \code{summary.npEM} with the following components: \item{n}{The number of observations} \item{m}{The number of mixture components} \item{B}{The number of blocks} \item{blockid}{The block ID (from 1 through B) for each of the coordinates of the multivariate observations. The \code{blockid} component is of length \eqn{r}, the dimension of each observation.} \item{means}{A \eqn{B\times m}{B x m} matrix giving the estimated mean of each block in each component.} \item{variances}{Same as \code{means} but giving the estimated variances instead.} } \references{ Benaglia, T., Chauveau, D., and Hunter, D. R. (2009), An EM-like algorithm for semi- and non-parametric estimation in multivariate mixtures, \emph{Journal of Computational and Graphical Statistics}, \bold{18(2)}, 505--526. } \seealso{ \code{\link{npEM}}, \code{\link{plot.npEM}} } \examples{ data(Waterdata) set.seed(100) \dontrun{ a <- npEM(Waterdata[,3:10], 3, bw=4) # Assume indep but not iid summary(a) b <- npEM(Waterdata[,3:10], 3, bw=4, blockid=rep(1,8)) # Now assume iid summary(b) } } \keyword{file} mixtools/man/test.equality.mixed.Rd0000755000175100001440000000523312122215664017137 0ustar hornikusers\name{test.equality.mixed} \title{Performs Chi-Square Test for Mixed Effects Mixtures} \alias{test.equality.mixed} \usage{ test.equality.mixed(y, x, w=NULL, arb.R = TRUE, arb.sigma = FALSE, lambda = NULL, mu = NULL, sigma = NULL, R = NULL, alpha = NULL, ...) } \description{ Performs a likelihood ratio test of either common variance terms between the response trajectories in a mixture of random (or mixed) effects regressions or for common variance-covariance matrices for the random effects mixture distribution.} \arguments{ \item{y}{The responses for \code{regmixEM.mixed}.} \item{x}{The predictors for the random effects in \code{regmixEM.mixed}.} \item{w}{The predictors for the (optional) fixed effects in \code{regmixEM.mixed}.} \item{arb.R}{If FALSE, then a test for different variance-covariance matrices for the random effects mixture is performed.} \item{arb.sigma}{If FALSE, then a test for different variance terms between the response trajectories is performed.} \item{lambda}{A vector of mixing proportions (under the null hypothesis) with same purpose as outlined in \code{regmixEM.mixed}.} \item{mu}{A matrix of the means (under the null hypothesis) with same purpose as outlined in \code{regmixEM.mixed}.} \item{sigma}{A vector of standard deviations (under the null hypothesis) with same purpose as outlined in \code{regmixEM.mixed}.} \item{R}{A list of covariance matrices (under the null hypothesis) with same purpose as outlined in \code{regmixEM.mixed}.} \item{alpha}{An optional vector of fixed effects regression coefficients (under the null hypothesis) with same purpose as outlined in \code{regmixEM.mixed}.} \item{...}{Additional arguments passed to \code{regmixEM.mixed}.} } \value{ \code{test.equality.mixed} returns a list with the following items: \item{chi.sq}{The chi-squared test statistic.} \item{df}{The degrees of freedom for the chi-squared test statistic.} \item{p.value}{The p-value corresponding to this likelihood ratio test.} } \seealso{ \code{\link{test.equality}} } \examples{ ##Test of equal variances in the simulated data set. data(RanEffdata) set.seed(100) x<-lapply(1:length(RanEffdata), function(i) matrix(RanEffdata[[i]][, 2:3], ncol = 2)) x<-x[1:15] y<-lapply(1:length(RanEffdata), function(i) matrix(RanEffdata[[i]][, 1], ncol = 1)) y<-y[1:15] out<-test.equality.mixed(y, x, arb.R = TRUE, arb.sigma = FALSE, epsilon = 1e-1, verb = TRUE, maxit = 50, addintercept.random = FALSE) out } \keyword{file} mixtools/man/rmvnormmix.Rd0000755000175100001440000000450113055645031015433 0ustar hornikusers\name{rmvnormmix} \title{Simulate from Multivariate (repeated measures) Mixtures of Normals} \alias{normmixrm.sim} \alias{rmvnormmix} \usage{ rmvnormmix(n, lambda=1, mu=0, sigma=1) } \description{ Simulate from a mixture of multivariate zero-correlation normal distributions } \arguments{ \item{n}{Number of cases to simulate.} \item{lambda}{Vector of mixture probabilities with length equal to \eqn{m}, the desired number of components. This is assumed to sum to 1; if not, it is normalized.} \item{mu}{Matrix of means of dimensions \eqn{m\times r}{m x r}, where \eqn{m} is the number of components (subpopulations) and \eqn{r} is the number of coordinates (repeated measurements) per case. Note: \code{mu} is automatically coerced to a matrix with \eqn{m} rows even if it is not given in this form, which can lead to unexpected behavior in some cases.} \item{sigma}{Matrix of standard deviations, same dimensions as \code{mu}. The coordinates within a case are independent, conditional on the mixture component. (There is marginal correlation among the coordinates, but this is due to the mixture structure only.) Note: \code{sigma} is automatically coerced to a matrix with \eqn{m} rows even if it is not given in this form, which can lead to unexpected behavior in some cases.} } \details{ It is possible to generate univariate standard normal random variables using the default values (but why bother?). The case of conditionally iid coordinates is covered by the situation in which all columns in mu and sigma are identical. } \value{ \code{rmvnormmix} returns an \eqn{n\times r}{n x r} matrix in which each row is a sample from one of the components of a mixture of zero-correlation multivariate normals. The mixture structure induces nonzero correlations among the coordinates. } \seealso{ \code{\link{rnormmix}} } \examples{ ##Generate data from a 2-component mixture of trivariate normals. set.seed(100) n <- 200 lambda <- rep(1, 2)/2 mu <- matrix(2*(1:6), 2, 3) sigma <- matrix(1,2,3) mydata<-rmvnormmix(n, lambda, mu, sigma) ## Now check to see if we can estimate mixture densities well: title <- paste("Does this resemble N(", mu[1,], ",1) and N(", mu[2,],",1)?", sep="") plot(npEM(mydata, 2), title=title) } \keyword{file} mixtools/man/RTdata.Rd0000755000175100001440000000235311665556372014415 0ustar hornikusers\name{RTdata} \docType{data} \title{Reaction Time (RT) Data Set} \alias{RTdata} \usage{RTdata} \description{ This data set involves normally developing children 9 years of age presented with two visual simuli on a computer monitor. The left image is the target stimuli and on the right is either an exact copy or a mirror image of the target stimuli. The child must press one key if it is a copy or another key if it is a mirror image. The data consists of the reaction times (RT) of the 197 children who provided correct responses for all 6 task trials. } \format{This data frame consists of 197 children (the rows) and their 6 responses (the columns) to the stimulus presented. The response (RT) is recorded in milliseconds. } \references{ Cruz-Medina, I. R., Hettmansperger, T. P. and Thomas, H. (2004) Semiparametric Mixture Models and Repeated Measures: The Multinomial Cut Point Model, \emph{Applied Statistics} \bold{53(3)}, 463--474. Miller, C. A., Kail, R., Leonard, L. B. and Tomblin, J. B. (2001) Speed of Processing in Children with Specific Language Impairment, \emph{Journal of Speech, Language, and Hearing Research} \bold{44(2)}, 416--433. } \seealso{ \code{\link{RTdata2}} } \keyword{datasets} mixtools/man/RodFramedata.Rd0000755000175100001440000000230211665556372015561 0ustar hornikusers\name{RodFramedata} \docType{data} \title{Rod and Frame Task Data Set} \alias{RodFramedata} \usage{RodFramedata} \description{ This data set involves assessing children longitudinally at 6 age points from ages 4 through 18 years for the rod and frame task. This task sits the child in a darkened room in front of a luminous square frame tilted at 28 degrees on its axis to the left or right. Centered inside the frame was a luminous rod also tilted 28 degrees to the left or right. The child's task was to adjust the rod to the vertical position and the absolute deviation from the vertical (in degrees) was the measured response. } \format{This data frame consists of 140 children (the rows). Column 1 is the subject number and column 2 is the sex (0=MALE and 1=FEMALE). Columns 3 through 26 give the 8 responses at each of the ages 4, 5, and 7. Columns 27 through 56 give the 10 responses at each of the ages 11, 14, and 18. A value of 99 denotes missing data. } \source{ Thomas, H. and Dahlin, M. P. (2005) Individual Development and Latent Groups: Analytical Tools for Interpreting Heterogeneity, \emph{Developmental Review} \bold{25(2)}, 133--154. } \keyword{datasets} mixtools/man/hmeEM.Rd0000755000175100001440000000627012122211062014200 0ustar hornikusers\name{hmeEM} \title{EM Algorithm for Mixtures-of-Experts} \alias{hmeEM} \usage{ hmeEM(y, x, lambda = NULL, beta = NULL, sigma = NULL, w = NULL, k = 2, addintercept = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) } \description{ Returns EM algorithm output for a mixture-of-experts model. Currently, this code only handles a 2-component mixture-of-experts, but will be extended to the general k-component hierarchical mixture-of-experts. } \arguments{ \item{y}{An n-vector of response values.} \item{x}{An nxp matrix of predictors. See \code{addintercept} below.} \item{lambda}{Initial value of mixing proportions, which are modeled as an inverse logit function of the predictors. Entries should sum to 1. If NULL, then \code{lambda} is taken as 1/\code{k} for each \code{x}.} \item{beta}{Initial value of \code{beta} parameters. Should be a pxk matrix, where p is the number of columns of x and k is number of components. If NULL, then \code{beta} has standard normal entries according to a binning method done on the data.} \item{sigma}{A vector of standard deviations. If NULL, then \eqn{1/\code{sigma}^2} has random standard exponential entries according to a binning method done on the data.} \item{w}{A p-vector of coefficients for the way the mixing proportions are modeled. See \code{lambda}.} \item{k}{Number of components. Currently, only \code{k}=2 is accepted.} \item{addintercept}{If TRUE, a column of ones is appended to the x matrix before the value of p is calculated.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{hmeEM} returns a list of class \code{mixEM} with items: \item{x}{The set of predictors (which includes a column of 1's if \code{addintercept} = TRUE).} \item{y}{The response values.} \item{w}{The final coefficients for the functional form of the mixing proportions.} \item{lambda}{An nxk matrix of the final mixing proportions.} \item{beta}{The final regression coefficients.} \item{sigma}{The final standard deviations. If \code{arbmean} = FALSE, then only the smallest standard deviation is returned. See \code{scale} below.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{regmixEM}} } \references{ Jacobs, R. A., Jordan, M. I., Nowlan, S. J. and Hinton, G. E. (1991) Adaptive Mixtures of Local Experts, \emph{Neural Computation} \bold{3(1)}, 79--87. McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley \& Sons, Inc. } \examples{ ## EM output for NOdata. data(NOdata) attach(NOdata) set.seed(100) em.out <- regmixEM(Equivalence, NO) hme.out <- hmeEM(Equivalence, NO, beta = em.out$beta) hme.out[3:7] } \keyword{file} mixtools/man/tonedata.Rd0000644000175100001440000000330513056055632015015 0ustar hornikusers\name{tonedata} \alias{tonedata} \docType{data} \title{Tone perception data} \author{Christian Hennig} \description{ The tone perception data stem from an experiment of Cohen (1980) and have been analyzed in de Veaux (1989) and Viele and Tong (2002). The dataset and this documentation file were copied from the fpc package by Christian Hennig. A pure fundamental tone was played to a trained musician. Electronically generated overtones were added, determined by a stretching ratio of \code{stretchratio}. \code{stretchratio=2.0} corresponds to the harmonic pattern usually heard in traditional definite pitched instruments. The musician was asked to tune an adjustable tone to the octave above the fundamental tone. \code{tuned} gives the ratio of the adjusted tone to the fundamental, i.e. \code{tuned=2.0} would be the correct tuning for all \code{stretchratio}-values. The data analyzed here belong to 150 trials with the same musician. In the original study, there were four further musicians. } \usage{data(tonedata)} \format{A data frame with 2 variables, \code{stretchratio} and \code{tuned}, and 150 cases.} \source{ Original source: Cohen, E. A. (1980), \emph{Inharmonic tone perception}. Unpublished Ph.D. dissertation, Stanford University R source: Hennig, Christian (2010), fpc: Flexible procedures for clustering, R package version 2.0-2. \url{https://cran.r-project.org/package=fpc} } \references{ de Veaux, R. D. (1989), Mixtures of Linear Regressions, \emph{Computational Statistics and Data Analysis} 8, 227-245. Viele, K. and Tong, B. (2002), Modeling with Mixtures of Linear Regressions, \emph{Statistics and Computing} 12, 315-330. } \keyword{datasets} mixtools/man/aug.x.Rd0000755000175100001440000000236312112155706014241 0ustar hornikusers\name{aug.x} \title{Augmented Predictor Function} \alias{aug.x} \usage{ aug.x(X, cp.locs, cp, delta = NULL) } \description{ Creates the augmented predictor matrix based on an appropriately defined changepoint structure. } \arguments{ \item{X}{The raw matrix of predictor values. Note that the raw data matrix should not include a columns of 1's.} \item{cp.locs}{The locations of the changepoints. The length of this vector must be equal to the sum of the entries of \code{cp}.} \item{cp}{A vector having length equal to the number of predictors.} \item{delta}{A vector to accommodate discontinuities. If NULL, then no discontinuities are included. Otherwise, this must be a vector of the same length as \code{cp.locs}.} } \value{ \code{aug.x} returns a matrix of the original matrix \code{X} with the predictor adjusted for changepoints and (optional) discontinuities. } \details{ This function is called by \code{segregmixEM} and the associated internal functions. } \seealso{ \code{\link{segregmixEM}} } \examples{ x <- matrix(1:30, nrow = 10) cp <- c(1, 3, 0) cp.locs <- c(3, 12, 14, 16) d <- rep(0, 4) x1 <- aug.x(x, cp.locs, cp, delta = NULL) x1 x2 <- aug.x(x, cp.locs, cp, delta = d) x2 } \keyword{internal} mixtools/man/repnormmixEM.Rd0000755000175100001440000000651712514002272015641 0ustar hornikusers\name{repnormmixEM} \title{EM Algorithm for Mixtures of Normals with Repeated Measurements} \alias{repnormmixEM} \usage{ repnormmixEM(x, lambda = NULL, mu = NULL, sigma = NULL, k = 2, arbmean = TRUE, arbvar = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) } \description{ Returns EM algorithm output for mixtures of normals with repeated measurements and arbitrarily many components. } \arguments{ \item{x}{An mxn matrix of data. The columns correspond to the subjects and the rows correspond to the repeated measurements.} \item{lambda}{Initial value of mixing proportions. Entries should sum to 1. This determines number of components. If NULL, then \code{lambda} is random from uniform Dirichlet and number of components is determined by \code{mu}.} \item{mu}{A k-vector of component means. If NULL, then \code{mu} is determined by a normal distribution according to a binning method done on the data. If both \code{lambda} and \code{mu} are NULL, then number of components is determined by \code{sigma}.} \item{sigma}{A vector of standard deviations. If NULL, then \eqn{1/\code{sigma}^2} has random standard exponential entries according to a binning method done on the data. If \code{lambda}, \code{mu}, and \code{sigma} are NULL, then number of components is determined by \code{k}.} \item{k}{Number of components. Ignored unless all of \code{lambda}, \code{mu}, and \code{sigma} are NULL.} \item{arbmean}{If TRUE, then the component densities are allowed to have different \code{mu}s. If FALSE, then a scale mixture will be fit.} \item{arbvar}{If TRUE, then the component densities are allowed to have different \code{sigma}s. If FALSE, then a location mixture will be fit.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{repnormmixEM} returns a list of class \code{mixEM} with items: \item{x}{The raw data.} \item{lambda}{The final mixing proportions.} \item{mu}{The final mean parameters.} \item{sigma}{The final standard deviations. If \code{arbmean} = FALSE, then only the smallest standard deviation is returned. See \code{scale} below.} \item{scale}{If \code{arbmean} = FALSE, then the scale factor for the component standard deviations is returned. Otherwise, this is omitted from the output.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{normalmixEM}} } \references{ Hettmansperger, T. P. and Thomas, H. (2000) Almost Nonparametric Inference for Repeated Measures in Mixture Models, \emph{Journal of the Royals Statistical Society, Series B} \bold{62(4)} 811--825. } \examples{ ## EM output for the water-level task data set. data(Waterdata) set.seed(100) water <- t(as.matrix(Waterdata[,3:10])) em.out <- repnormmixEM(water, k = 2, verb = TRUE, epsilon = 1e-03) em.out } \keyword{file} mixtools/man/spregmix.Rd0000755000175100001440000001321212122215550015043 0ustar hornikusers\name{spregmix} \title{EM-like Algorithm for Semiparametric Mixtures of Regressions} \alias{spregmix} \usage{ spregmix(lmformula, bw = NULL, constbw = FALSE, bwmult = 0.9, z.hat = NULL, symm = TRUE, betamethod = "LS", m = ifelse(is.null(z.hat), 2, ncol(z.hat)), epsilon = 1e-04, maxit = 1000, verbose = FALSE, \dots) } \description{ Returns parameter estimates for finite mixtures of linear regressions with unspecified error structure. Based on Hunter and Young (2012). } \arguments{ \item{lmformula}{Formula for a linear model, in the same format used by \code{\link{lm}}. Additional parameters may be passed to \code{\link{lm}} via the \code{...} argument.} \item{bw}{Initial bandwidth value. If NULL, this will be chosen automatically by the algorithm.} \item{constbw}{Logical: If TRUE, the bandwidth is held constant throughout the algorithm; if FALSE, it adapts at each iteration according to the rules given in Hunter and Young (2012).} \item{bwmult}{ Whenever it is updated automatically, the bandwidth is equal to \code{bwmult} divided by the fifth root of \eqn{n} times the smaller of s and IQR/1.34, where s and IQR are estimates of the standard deviation and interquartile range of the residuals, as explained in Hunter and Young (2012). The value of 0.9 gives the rule of Silverman (1986) and the value of 1.06 gives the rule of Scott (1992). Larger values lead to greater smoothing, whereas smaller values lead to less smoothing. } \item{z.hat}{Initial nxm matrix of posterior probabilities. If NULL, this is initialized randomly. As long as a parametric estimation method like least squares is used to estimate \code{beta} in each M-step, the \code{z.hat} values are the only values necessary to begin the EM iterations.} \item{symm}{Logical: If TRUE, the error density is assumed symmetric about zero. If FALSE, it is not. WARNING: If FALSE, the intercept parameter is not uniquely identifiable if it is included in the linear model.} \item{betamethod}{Method of calculating beta coefficients in the M-step. Current possible values are "LS" for least-squares; "L1" for least absolute deviation; "NP" for fully nonparametric; and "transition" for a transition from least squares to fully nonparametric. If something other than these four possibilities is used, then "NP" is assumed. For details of these methods, see Hunter and Young (2012).} \item{m}{Number of components in the mixture.} \item{epsilon}{Convergence is declared if the largest change in any lambda or beta coordinate is smaller than \code{epsilon}.} \item{maxit}{The maximum number of iterations; if convergence is never declared based on comparison with \code{epsilon}, then the algorithm stops after \code{maxit} iterations.} \item{verbose}{Logical: If TRUE, then various updates are printed during each iteration of the algorithm.} \item{\dots}{Additional parameters passed to the \code{\link{model.frame}} and \code{\link{model.matrix}} functions, which are used to obtain the response and predictor of the regression.} } \value{ \code{regmixEM} returns a list of class \code{npEM} with items: \item{x}{The set of predictors (which includes a column of 1's if \code{addintercept} = TRUE).} \item{y}{The response values.} \item{lambda}{The mixing proportions for every iteration in the form of a matrix with m columns and (#iterations) rows} \item{beta}{The final regression coefficients.} \item{posterior}{An nxm matrix of posterior probabilities for observations.} \item{np.stdev}{Nonparametric estimate of the standard deviation, as given in Hunter and Young (2012)} \item{bandwidth}{Final value of the bandwidth} \item{density.x}{Points at which the error density is estimated} \item{density.y}{Values of the error density at the points \code{density.x}} \item{symmetric}{Logical: Was the error density assumed symmetric?} \item{loglik}{A quantity similar to a log-likelihood, computed just like a standard loglikelihood would be, conditional on the component density functions being equal to the final density estimates.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{regmixEM}}, \code{\link{spEMsymloc}}, \code{\link{lm}} } \references{ Hunter, D. R. and Young, D. S. (2012) Semi-parametric Mixtures of Regressions, Journal of Nonparametric Statistics 24(1): 19-38. Scott, D. W. (1992) \emph{Multivariate Density Estimation}, John Wiley & Sons Inc., New York. Silverman, B. W. (1986). \emph{Density Estimation for Statistics and Data Analysis}, Chapman & Hall, London. } \examples{ data(tonedata) ## By default, the bandwidth will adapt and the error density is assumed symmetric set.seed(100) a=spregmix(tuned~stretchratio, bw=.2, data=tonedata, verb=TRUE) ## Look at the sp mixreg solution: plot(tonedata) abline(a=a$beta[1,1],b=a$beta[2,1], col=2) abline(a=a$beta[1,2],b=a$beta[2,2], col=3) ## Look at the nonparametric KD-based estimate of the error density, ## constrained to be zero-symmetric: plot(xx<-a$density.x, yy<-a$density.y, type="l") ## Compare to a normal density with mean 0 and NP-estimated stdev: z <- seq(min(xx), max(xx), len=200) lines(z, dnorm(z, sd=sqrt((a$np.stdev)^2+a$bandwidth^2)), col=2, lty=2) # Add bandwidth^2 to variance estimate to get estimated var of KDE ## Now add the sp mixreg estimate without assuming symmetric errors: b=spregmix(tuned~stretchratio, bw=.2, , symm=FALSE, data=tonedata, verb=TRUE) lines(b$density.x, b$density.y, col=3) } \keyword{file} mixtools/man/mvnpEM.Rd0000755000175100001440000001272212644775462014442 0ustar hornikusers\name{mvnpEM} \title{EM-like Algorithm for Nonparametric Mixture Models with Conditionally Independent Multivariate Component Densities} \alias{mvnpEM} \usage{ mvnpEM(x, mu0, blockid = 1:ncol(x), samebw = TRUE, bwdefault = apply(x,2,bw.nrd0), init = NULL, eps = 1e-8, maxiter = 500, verb = TRUE) } \description{ An extension of the original \code{\link{npEM}} algorithm, for mixtures of multivariate data where the coordinates of a row (case) in the data matrix are assumed to be made of independent but multivariate blocks (instead of just coordinates), conditional on the mixture component (subpopulation) from which they are drawn (Chauveau and Hoang 2015). } \arguments{ \item{x}{An \eqn{n\times r}{n x r} matrix of data. Each of the \eqn{n} rows is a case, and each case has \eqn{r} repeated measurements. These measurements are assumed to be conditionally independent, conditional on the mixture component (subpopulation) from which the case is drawn.} \item{mu0}{Either an \eqn{m\times r}{m x r} matrix specifying the initial centers for the \link{kmeans} function, or an integer \eqn{m} specifying the number of initial centers, which are then chosen randomly in \link{kmeans}} \item{blockid}{A vector of length \eqn{r} identifying coordinates (columns of \code{x}) that are in the same block. The default has all distinct elements, indicating that the model has \eqn{r} blocks of dimension 1, in which case the model is handled directly by the \code{\link{npEM}} algorithm. See example below for actual multivariate blocks example.} \item{samebw}{Logical: If \code{TRUE}, use the same bandwidth per coordinate for all iteration and all components. If \code{FALSE}, use a separate bandwidth for each component and coordinate, and update this bandwidth at each iteration of the algorithm using a suitably modified \code{\link{bw.nrd0}} method as described in Benaglia et al (2011) and Chauveau and Hoang (2015).} \item{bwdefault}{Bandwidth default for density estimation,a simplistic application of the default \code{\link{bw.nrd0}} for each coordinate (column) of the data.} \item{init}{Initialization method, based on an initial \eqn{n\times m}{n x m} matrix for the posterior probabilities. If \code{NULL}, a \code{\link{kmeans}} clustering with \code{mu0} initial centers is applied to the data and the initial matrix of posteriors is built from the result.} \item{eps}{Tolerance limit for declaring algorithm convergence. Convergence is declared whenever the maximum change in any coordinate of the \code{lambda} vector (of mixing proportion estimates) does not exceed \code{eps}.} \item{maxiter}{The maximum number of iterations allowed; convergence may be declared before \code{maxiter} iterations (see \code{eps} above).} \item{verb}{Verbose mode; if TRUE, print updates for every iteration of the algorithm as it runs} } \value{ \code{mvnpEM} returns a list of class \code{mvnpEM} with the following items: \item{data}{The raw data (an \eqn{n\times r}{n x r} matrix).} \item{posteriors}{An \eqn{n\times m}{n x m} matrix of posterior probabilities for each observation (row).} \item{lambda}{The sequence of mixing proportions over iterations.} \item{blockid}{The \code{blockid} input argument. Needed by any method that produces density estimates from the output, like \code{\link{plot.mvnpEM}}.} \item{samebw}{The \code{samebw} input argument. Needed by any method that produces density estimates from the output, like \code{\link{plot.mvnpEM}}.} \item{bandwidth}{The final bandwidth matrix after convergence of the algorithm. Its shape depends on the \code{samebw} input argument. If \code{samebw = TRUE}, a vectors with the bandwidth value for each of the \code{r} coordinates (same for all components and iterations). If \code{samebw = FALSE}, a \eqn{m\times r}{m x r} matrix, where each row is associated to one component and gives the \eqn{r} bandwidth values, one for each coordinate. Needed by any method that produces density estimates from the output, like \code{\link{plot.mvnpEM}}.} \item{lambdahat}{The final mixing proportions.} \item{loglik}{The sequence of pseudo log-likelihood values over iterations.} } \seealso{ \code{\link{plot.mvnpEM}}, \code{\link{npEM}} } \references{ \itemize{ \item Benaglia, T., Chauveau, D., and Hunter, D. R. (2009), An EM-like algorithm for semi- and non-parametric estimation in multivariate mixtures, Journal of Computational and Graphical Statistics, 18, 505-526. \item Benaglia, T., Chauveau, D. and Hunter, D.R. (2011), Bandwidth Selection in an EM-like algorithm for nonparametric multivariate mixtures. Nonparametric Statistics and Mixture Models: A Festschrift in Honor of Thomas P. Hettmansperger. World Scientific Publishing Co., pages 15-27. \item Chauveau, D., and Hoang, V. T. L. (2015), Nonparametric mixture models with conditionally independent multivariate component densities, Preprint under revision. \url{https://hal.archives-ouvertes.fr/hal-01094837} } } \examples{ # Example as in Chauveau and Hoang (2015) with 6 coordinates \dontrun{ m=2; r=6; blockid <-c(1,1,2,2,3,3) # 3 bivariate blocks # generate some data x ... a <- mvnpEM(x, mu0=2, blockid, samebw=F) # adaptive bandwidth plot(a) # this S3 method produces 6 plots of univariate marginals summary(a)} } \keyword{file} mixtools/man/wquantile.Rd0000644000175100001440000000261612644764451015243 0ustar hornikusers\name{wquantile} \alias{wIQR} \alias{wquantile} \title{Weighted quantiles} \description{ Functions to compute weighted quantiles and the weighted interquartile range. } \usage{ wquantile(wt = rep(1,length(x)), x, probs, already.sorted = FALSE, already.normalized = FALSE) wIQR(wt = rep(1,length(x)), x, already.sorted = FALSE, already.normalized = FALSE) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{wt}{ Vector of weights } \item{x}{ Vector of data, same length as \code{wt} } \item{probs}{ Numeric vector of probabilities with values in [0,1].} \item{already.sorted}{ If FALSE, sort \code{wt} and \code{x} in increasing order of \code{x}. If TRUE, it is assumed that \code{wt} and \code{x} are already sorted.} \item{already.normalized}{ If FALSE, normalize \code{wt} by diving each entry by the sum of all entries. If TRUE, it is assumed that \code{sum(wt)==1}} } \details{ \code{wquantile} uses the \code{\link{findInterval}} function. \code{wIQR} calls the \code{wquantile} function. } \value{ Returns the sample quantiles or interquartile range of a discrete distribution with support points \code{x} and corresponding probability masses \code{wt} } \seealso{ \code{\link{npEM}}} \examples{ IQR(1:10) wIQR(x=1:10) # Note: Different algorithm than IQR function wIQR(1:10,1:10) # Weighted quartiles are now 4 and 8 } \keyword{robust} mixtools/man/rnormmix.Rd0000755000175100001440000000214012122215020015046 0ustar hornikusers\name{rnormmix} \title{Simulate from Mixtures of Normals} \alias{normmix.sim} \alias{rnormmix} \usage{ rnormmix(n, lambda=1, mu=0, sigma=1) } \description{ Simulate from a mixture of univariate normal distributions. } \arguments{ \item{n}{Number of cases to simulate.} \item{lambda}{Vector of mixture probabilities, with length equal to \eqn{m}, the desired number of components (subpopulations). This is assumed to sum to 1; if not, it is normalized.} \item{mu}{Vector of means.} \item{sigma}{Vector of standard deviations.} } \value{ \code{rnormmix} returns an \eqn{n}-vector sampled from an \eqn{m}-component mixture of univariate normal distributions. } \details{This function simply calls \code{\link{rmvnormmix}}.} \seealso{ \code{\link{makemultdata}}, \code{\link{rmvnormmix}} } \examples{ ##Generate data from a 2-component mixture of normals. set.seed(100) n <- 500 lambda <- rep(1, 2)/2 mu <- c(0, 5) sigma <- rep(1, 2) mixnorm.data <- rnormmix(n, lambda, mu, sigma) ##A histogram of the simulated data. hist(mixnorm.data) } \keyword{file} mixtools/man/print.mvnpEM.Rd0000755000175100001440000000211012644777537015570 0ustar hornikusers\name{print.mvnpEM} \alias{print.mvnpEM} \title{Printing of Results from the mvnpEM Algorithm Output} \usage{ \method{print}{mvnpEM}(x, \dots) } \arguments{ \item{x}{an object of class \code{mvnpEM} such as a result of a call to \code{\link{mvnpEM}}} \item{\dots}{Additional arguments to \code{\link{print}}} } \description{ \code{\link[base]{print}} method for class \code{mvnpEM}. } \details{ \code{print.mvnpEM} prints the elements of an \code{mvnpEM} object without printing the data or the posterior probabilities. (These may still be accessed as \code{x$data} and \code{x$posteriors}.) } \value{ \code{print.mvnpEM} returns (invisibly) the full value of \code{x} itself, including the \code{data} and \code{posteriors} elements. } \seealso{ \code{\link{mvnpEM}}, \code{\link{plot.mvnpEM}} \code{\link{summary.mvnpEM}} } \examples{ # Example as in Chauveau and Hoang (2015) with 6 coordinates \dontrun{ m=2; r=6; blockid <-c(1,1,2,2,3,3) # 3 bivariate blocks # generate some data x ... a <- mvnpEM(x, mu0=2, blockid, samebw=F) # adaptive bandwidth print(a)} } \keyword{file} mixtools/man/plotspRMM.Rd0000644000175100001440000000307313055603106015107 0ustar hornikusers\name{plotspRMM} \alias{plotspRMM} %- Also NEED an '\alias' for EACH other topic documented here. \title{Plot output from Stochastic EM algorithm for semiparametric scaled mixture of censored data } \description{Function for plotting various results from an object returned by \code{\link{spRMM_SEM}}, a Stochastic EM algorithm for semiparametric scaled mixture of randomly right censored lifetime data. Four plots of sequences of estimates along iterations, survival and density estimates (see reference below). } \usage{ plotspRMM(sem, tmax = NULL) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{sem}{An object returned by \code{\link{spRMM_SEM}}.} \item{tmax}{The max time for \eqn{x} axis, set to some default value if \code{NULL}.} } \value{The four plots returned} \seealso{ Related functions: \code{\link{spRMM_SEM}}. Other models and algorithms for censored lifetime data (name convention is model_algorithm): \code{\link{expRMM_EM}}, \code{\link{weibullRMM_SEM}}. } \references{ \itemize{ \item Bordes, L., and Chauveau, D. (2016), Stochastic EM algorithms for parametric and semiparametric mixture models for right-censored lifetime data, Computational Statistics, Volume 31, Issue 4, pages 1513-1538. \url{http://link.springer.com/article/10.1007/s00180-016-0661-7} } } \author{Didier Chauveau} %% ~Make other sections like Warning with \section{Warning }{....} ~ \examples{ # See example(spRMM_SEM) } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{file} mixtools/man/lambda.Rd0000755000175100001440000000245611665556372014462 0ustar hornikusers\name{lambda} \title{Local Estimation for Lambda in Mixtures of Regressions} \alias{lambda} \usage{ lambda(z, x, xi, h = NULL, kernel = c("Gaussian", "Beta", "Triangle", "Cosinus", "Optcosinus"), g = 0) } \description{ Return local estimates of the mixing proportions from each component of a mixture of regressions model using output from an EM algorithm. } \arguments{ \item{z}{An nxk matrix of posterior probabilities obtained from the EM algorithm.} \item{x}{A vector of values for which the local estimation is calculated.} \item{xi}{An nx(p-1) matrix of the predictor values.} \item{h}{The bandwidth controlling the size of the window used for the local estimation.} \item{kernel}{The type of kernel to be used for the local estimation.} \item{g}{A shape parameter required for the symmetric beta kernel. The default is \code{g} = 0 which yields the uniform kernel. Some common values are \code{g} = 1 for the Epanechnikov kernel, \code{g} = 2 for the biweight kernel, and \code{g} = 3 for the triweight kernel.} } \value{ \code{lambda} returns local estimates of the mixing proportions for the inputted \code{x} vector. } \seealso{ \code{\link{regmixEM.loc}} } \note{\code{lambda} is for use within \code{regmixEM.loc}.} \keyword{internal} mixtools/man/try.flare.Rd0000755000175100001440000000413311665556372015142 0ustar hornikusers\name{try.flare} \title{Mixtures of Regressions with Flare MM Algorithm} \alias{try.flare} \usage{ try.flare(y, x, lambda = NULL, beta = NULL, sigma = NULL, alpha = NULL, nu = 1, epsilon = 1e-04, maxit = 10000, verb = FALSE, restart = 50) } \description{ The function which \code{flaremixEM} actually calls. This only allows one barrier constant to be inputted at a time. } \arguments{ \item{y}{An n-vector of response values.} \item{x}{An n-vector of predictor values. An intercept term will be added by default.} \item{lambda}{Initial value of mixing proportions. Entries should sum to 1.} \item{beta}{Initial value of \code{beta} parameters. Should be a 2x2 matrix where the columns corresond to the component.} \item{sigma}{A vector of standard deviations.} \item{alpha}{A scalar for the exponential component's rate.} \item{nu}{A scalar specifying the barrier constant to use.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} \item{restart}{The number of times to restart the algorithm in case convergence is not attained. The default is 50.} } \value{ \code{try.flare} returns a list of class \code{mixEM} with items: \item{x}{The set of predictors (which includes a column of 1's).} \item{y}{The response values.} \item{posterior}{An nx2 matrix of posterior probabilities for observations.} \item{lambda}{The final mixing proportions.} \item{beta}{The final regression coefficients.} \item{sigma}{The final standard deviations.} \item{alpha}{The final exponential rate.} \item{loglik}{The final log-likelihood.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{flaremixEM}} } \details{ This usually is not called by the user. The user will likely want \code{flaremixEM}, which also has an example to demonstrate this algorithm. } \keyword{internal} mixtools/man/plot.mixEM.Rd0000755000175100001440000001022512644764047015225 0ustar hornikusers\name{plot.mixEM} \title{Various Plots Pertaining to Mixture Models} \alias{plot.mixEM} \usage{ \method{plot}{mixEM}(x, whichplots = 1, loglik = 1 \%in\% whichplots, density = 2 \%in\% whichplots, xlab1="Iteration", ylab1="Log-Likelihood", main1="Observed Data Log-Likelihood", col1=1, lwd1=2, xlab2=NULL, ylab2=NULL, main2=NULL, col2=NULL, lwd2=2, alpha = 0.05, marginal = FALSE, ...) } \description{ Takes an object of class \code{mixEM} and returns various graphical output for select mixture models. } \arguments{ \item{x}{An object of class \code{mixEM}.} \item{whichplots}{vector telling which plots to produce: 1 = loglikelihood plot, 2 = density plot. Irrelevant if \code{loglik} and \code{density} are specified.} \item{loglik}{If TRUE, a plot of the log-likelihood versus the EM iterations is given.} \item{density}{Graphics pertaining to certain mixture models. The details are given below.} \item{xlab1, ylab1, main1, col1, lwd1}{Graphical parameters \code{xlab}, ..., \code{lwd} to be passed to the loglikelihood plot. Trying to change these parameters using \code{xlab}, ..., \code{lwd} will result in an error, but all other graphical parameters are passed directly to the plotting functions via ...} \item{xlab2, ylab2, main2, col2, lwd2}{Same as \code{xlab1} etc. but for the density plot} \item{alpha}{A vector of significance levels when constructing confidence ellipses and confidence bands for the mixture of multivariate normals and mixture of regressions cases, respectively. The default is 0.05.} \item{marginal}{For the mixture of bivariate normals, should optional marginal histograms be included?} \item{...}{Graphical parameters passed to \code{plot} command.} } \value{ \code{plot.mixEM} returns a plot of the log-likelihood versus the EM iterations by default for all objects of class \code{mixEM}. In addition, other plots may be produced for the following k-component mixture model functions: \item{normalmixEM}{A histogram of the raw data is produced along with k density curves determined by \code{normalmixEM}.} \item{repnormmixEM}{A histogram of the raw data produced in a similar manner as for \code{normalmixEM}.} \item{mvnormalmixEM}{A 2-dimensional plot with each point color-coded to denote its most probable component membership. In addition, the estimated component means are plotted along with (1 - \code{alpha})\% bivariate normal density contours. These ellipses are constructed by assigning each value to their component of most probable membership and then using normal theory. Optional marginal histograms may also be produced.} \item{regmixEM}{A plot of the response versus the predictor with each point color-coded to denote its most probable component membership. In addition, the estimated component regression lines are plotted along with (1 - \code{alpha})\% Working-Hotelling confidence bands. These bands are constructed by assigning each value to their component of most probable membership and then performing least squares estimation.} \item{logisregmixEM}{A plot of the binary response versus the predictor with each point color-coded to denote its most probable compopnent membership. In addition, the estimate component logistic regression lines are plotted.} \item{regmixEM.mixed}{Provides a 2x2 matrix of plots summarizing the posterior slope and posterior intercept terms from a mixture of random effects regression. See \code{post.beta} for a more detailed description.} } \seealso{ \code{\link{post.beta}} } \examples{ ##Analyzing the Old Faithful geyser data with a 2-component mixture of normals. data(faithful) attach(faithful) set.seed(100) out <- normalmixEM(waiting, arbvar = FALSE, verb = TRUE, epsilon = 1e-04) plot(out, density = TRUE, w = 1.1) ##Fitting randomly generated data with a 2-component location mixture of bivariate normals. x.1 <- rmvnorm(40, c(0, 0)) x.2 <- rmvnorm(60, c(3, 4)) X.1 <- rbind(x.1, x.2) out.1 <- mvnormalmixEM(X.1, arbvar = FALSE, verb = TRUE, epsilon = 1e-03) plot(out.1, density = TRUE, alpha = c(0.01, 0.05, 0.10), marginal = TRUE) } \keyword{file} mixtools/man/poisregmixEM.Rd0000755000175100001440000000554212122213664015630 0ustar hornikusers\name{poisregmixEM} \title{EM Algorithm for Mixtures of Poisson Regressions} \alias{poisregmixEM} \usage{ poisregmixEM(y, x, lambda = NULL, beta = NULL, k = 2, addintercept = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) } \description{ Returns EM algorithm output for mixtures of Poisson regressions with arbitrarily many components. } \arguments{ \item{y}{An n-vector of response values.} \item{x}{An nxp matrix of predictors. See \code{addintercept} below.} \item{lambda}{Initial value of mixing proportions. Entries should sum to 1. This determines number of components. If NULL, then \code{lambda} is random from uniform Dirichlet and number of components is determined by \code{beta}.} \item{beta}{Initial value of \code{beta} parameters. Should be a pxk matrix, where p is the number of columns of x and k is number of components. If NULL, then \code{beta} is generated by binning the data into k bins and using \code{glm} on the values in each of the bins. If both \code{lambda} and \code{beta} are NULL, then number of components is determined by \code{k}.} \item{k}{Number of components. Ignored unless \code{lambda} and \code{beta} are both NULL.} \item{addintercept}{If TRUE, a column of ones is appended to the x matrix before the value of p is calculated.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{poisregmixEM} returns a list of class \code{mixEM} with items: \item{x}{The predictor values.} \item{y}{The response values.} \item{lambda}{The final mixing proportions.} \item{beta}{The final Poisson regression coefficients.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{logisregmixEM}} } \references{ McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley \& Sons, Inc. Wang, P., Puterman, M. L., Cockburn, I. and Le, N. (1996) Mixed Poisson Regression Models with Covariate Dependent Rates, \emph{Biometrics}, \bold{52(2)}, 381--400. } \examples{ ## EM output for data generated from a 2-component model. set.seed(100) beta <- matrix(c(1, .5, .7, -.8), 2, 2) x <- runif(50, 0, 10) xbeta <- cbind(1, x)\%*\%beta w <- rbinom(50, 1, .5) y <- w*rpois(50, exp(xbeta[, 1]))+(1-w)*rpois(50, exp(xbeta[, 2])) out <- poisregmixEM(y, x, verb = TRUE, epsilon = 1e-03) out } \keyword{file} mixtools/man/ddirichlet.Rd0000755000175100001440000000071711736711146015342 0ustar hornikusers\name{ddirichlet} \alias{ddirichlet} \title{Density Function for the Dirichlet Distribution} \description{ Density function for the Dirichlet distribution. } \usage{ ddirichlet(x, alpha) } \arguments{ \item{x}{A k-dimensional vector of values that sum to 1 for which to calculate the density} \item{alpha}{A k-dimensional vector of the Dirichlet distribution parameters.} } \details{ This is usually not to be called by the user. } \keyword{internal} mixtools/man/regmixEM.lambda.Rd0000755000175100001440000000675212122214214016150 0ustar hornikusers\name{regmixEM.lambda} \title{EM Algorithm for Mixtures of Regressions with Local Lambda Estimates} \alias{regmixEM.lambda} \usage{ regmixEM.lambda(y, x, lambda = NULL, beta = NULL, sigma = NULL, k = 2, addintercept = TRUE, arbmean = TRUE, arbvar = TRUE, epsilon = 1e-8, maxit = 10000, verb = FALSE) } \description{ Returns output for one step of an EM algorithm output for mixtures of multiple regressions where the mixing proportions are estimated locally. } \arguments{ \item{y}{An n-vector of response values.} \item{x}{An nxp matrix of predictors. See \code{addintercept} below.} \item{lambda}{An nxk matrix of initial local values of mixing proportions. Entries should sum to 1. This determines number of components. If NULL, then \code{lambda} is simply one over the number of components.} \item{beta}{Initial value of \code{beta} parameters. Should be a pxk matrix, where p is the number of columns of x and k is number of components. If NULL, then \code{beta} has uniform standard normal entries. If both \code{lambda} and \code{beta} are NULL, then number of components is determined by \code{sigma}.} \item{sigma}{k-vector of initial global values of standard deviations. If NULL, then \eqn{1/\code{sigma}^2} has random standard exponential entries. If \code{lambda}, \code{beta}, and \code{sigma} are NULL, then number of components is determined by \code{k}.} \item{k}{The number of components. Ignored unless all of \code{lambda}, \code{beta}, and \code{sigma} are NULL.} \item{addintercept}{If TRUE, a column of ones is appended to the x matrix before the value of p is calculated.} \item{arbmean}{If TRUE, each mixture component is assumed to have a different set of regression coefficients (i.e., the \code{beta}s).} \item{arbvar}{If TRUE, each mixture component is assumed to have a different \code{sigma}.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{regmixEM.lambda} returns a list of class \code{mixEM} with items: \item{x}{The set of predictors (which includes a column of 1's if \code{addintercept} = TRUE).} \item{y}{The response values.} \item{lambda}{The inputted mixing proportions.} \item{beta}{The final regression coefficients.} \item{sigma}{The final standard deviations. If \code{arbmean} = FALSE, then only the smallest standard deviation is returned. See \code{scale} below.} \item{scale}{If \code{arbmean} = FALSE, then the scale factor for the component standard deviations is returned. Otherwise, this is omitted from the output.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \details{ Primarily used within \code{regmixEM.loc}. } \seealso{ \code{\link{regmixEM.loc}} } \examples{ ## Compare a 2-component and 3-component fit to NOdata. data(NOdata) attach(NOdata) set.seed(100) out1 <- regmixEM.lambda(Equivalence, NO) out2 <- regmixEM.lambda(Equivalence, NO, k = 3) c(out1$loglik, out2$loglik) } \keyword{file} mixtools/man/CO2data.Rd0000755000175100001440000000155611736343260014444 0ustar hornikusers\name{CO2data} \docType{data} \title{GNP and CO2 Data Set} \alias{CO2data} \usage{CO2data} \description{ This data set gives the gross national product (GNP) per capita in 1996 for various countries as well as their estimated carbon dioxide (CO2) emission per capita for the same year. } \format{This data frame consists of 28 countries and the following columns: \itemize{ \item{\code{GNP}}{The gross national product per capita in 1996.} \item{\code{CO2}}{The estimated carbon dioxide emission per capita in 1996.} \item{\code{country}}{An abbreviation pertaining to the country measured (e.g., "GRC" = Greece and "CH" = Switzerland).} } } \references{ Hurn, M., Justel, A. and Robert, C. P. (2003) Estimating Mixtures of Regressions, \emph{Journal of Computational and Graphical Statistics} \bold{12(1)}, 55--79. } \keyword{datasets} mixtools/man/spEMsymlocN01.Rd0000644000175100001440000001257712644764306015612 0ustar hornikusers\name{spEMsymlocN01} \alias{spEMsymlocN01} \title{semiparametric EM-like algorithm for univariate mixture in False Discovery Rate (FDR) estimation} \description{Return semiparametric EM-like algorithm output for a 2-components mixture model with one component set to Normal(0,1), and the other component being a unspecified but symmetric density with a location parameter. This model is tailored to FDR estimation on probit transform (\code{qnorm}) of p-values arising from multiple testing.} \usage{ spEMsymlocN01(x, mu0 = 2, bw = bw.nrd0(x), h=bw, eps = 1e-8, maxiter = 100, verbose = FALSE, plotf = FALSE)} \arguments{ \item{x}{A vector of length n consisting of the data, probit transform of pvalues, preferably sorted.} \item{mu0}{Starting value of vector of component means. If not set then the initial value is randomly generated by a \code{kmeans} of the data in two bins. Since component 1 is theoretically normal(0,1), \code{mu[1]} must be 0 and \code{mu[2]} some negative value (see details).} \item{bw}{Bandwidth for weighted kernel density estimation.} \item{h}{Alternative way to specify the bandwidth, to provide backward compatibility.} \item{eps}{Tolerance limit for declaring algorithm convergence. Convergence is declared before \code{maxiter} iterations whenever the maximum change in any coordinate of the \code{lambda} (mixing proportion estimates) and \code{mu} (mean of the semiparametric component) vector does not exceed \code{eps}} \item{maxiter}{The maximum number of iterations allowed; convergence may be declared before \code{maxiter} iterations (see \code{eps} above).} \item{verbose}{If TRUE, print updates for every iteration of the algorithm as it runs.} \item{plotf}{If TRUE, plots successive updates of the nonparametric density estimate over iterations. Mostly for testing purpose.} } \details{This algorithm is a specific version of semiparametric EM-like algorithm similar in spirit to \code{\link{spEMsymloc}}, but specialized for FDR estimation on probit transform (\code{qnorm}) of p-values in multiple testing framework. In this model, component 1 corresponds to the individuals under the null hypothesis, i.e. theoretically normal(0,1) distributed, whereas component 2 corresponds to individuals in the alternative hypothesis, with typically very small p-values and consequently negative values for probit(p) data. This model only assumes that these individuals come from an unspecified but symmetric density with a location parameter, as in Bordes and Vandekerkhove (2010) and Chauveau et al. (2014).} \value{ \code{spEMsymlocN01} returns a list of class \code{spEMN01} with the following items: \item{data}{The raw data (an \eqn{n\times r}{n x r} matrix).} \item{posteriors}{An \eqn{n\times 2}{n x 2} matrix of posterior probabilities for observations. This can be used in, e.g., \code{\link{plotFDR}} to plot False Discovery Rate estimates.} \item{bandwidth}{Same as the \code{bw} input argument, returned because this information is needed by any method that produces density estimates from the output.} \item{lambda}{The sequence of mixing proportions over iterations.} \item{lambdahat}{The final estimate for mixing proportions.} \item{mu}{the sequence of second component mean over iterations.} \item{muhat}{the final estimate of second component mean.} \item{symmetric}{Flag indicating that the kernel density estimate is using a symmetry assumption.} } \references{ \itemize{ \item Bordes, L. and Vandekerkhove, P. (2010). Semiparametric two-component mixture model with a known component: an asymptotically normal estimator. Mathematical Methods of Statistics, 19(1):22-41 \item Chauveau, D., Saby, N., Orton, T. G., Lemercier B., Walter, C. and Arrouys, D. (2014) Large-scale simultaneous hypothesis testing in monitoring carbon content from french soil database: A semi-parametric mixture approach. Geoderma 219-220 (2014): 117-124. } } \author{Didier Chauveau} \seealso{ \code{\link{spEMsymloc}}, \code{\link{normalmixEM}}, \code{\link{npEM}}, \code{\link{plot.spEMN01}}, \code{\link{plotFDR}} } \examples{ ## Probit transform of p-values ## from a Beta-Uniform mixture model ## comparion of parametric and semiparametric EM fit ## Note: in actual situations n=thousands set.seed(50) n=300 # nb of multiple tests m=2 # 2 mixture components a=c(1,0.1); b=c(1,1); lambda=c(0.6,0.4) # parameters z=sample(1:m, n, rep=TRUE, prob = lambda) p <- rbeta(n, shape1 = a[z], shape2 = b[z]) # p-values o <- order(p) cpd <- cbind(z,p)[o,] # sorted complete data, z=1 if H0, 2 if H1 p <- cpd[,2] # sorted p-values y <- qnorm(p) # probit transform of the pvalues # gaussian EM fit with component 1 constrained to N(0,1) s1 <- normalmixEM(y, mu=c(0,-4), mean.constr = c(0,NA), sd.constr = c(1,NA)) s2 <- spEMsymlocN01(y, mu0 = c(0,-3)) # spEM with N(0,1) fit hist(y, freq = FALSE, col = 8, main = "histogram of probit(pvalues)") plot(s2, add.plot = TRUE, lwd = 2) # Exemples of plot capabilities # Note: posteriors must be ordered by p for plot.FDR # plotFDR(s1$post) # when true complete data not observed # plotFDR(s1$post, s2$post) # comparing 2 strategies plotFDR(s1$post, s2$post, lg1 = "normalmixEM", lg2 = "spEMsymlocN01", complete.data = cpd) # with true FDR computed from z } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{file} mixtools/man/RanEffdata.Rd0000755000175100001440000000104011665556372015221 0ustar hornikusers\name{RanEffdata} \docType{data} \title{Simulated Data from 2-Component Mixture of Regressions with Random Effects} \alias{RanEffdata} \usage{RanEffdata} \description{ This data set was generated from a 2-component mixture of regressions with random effects. } \format{This data set consists of a list with 100 25x3 matrices. The first column is the response variable, the second column is a column of 1's and the last column is the predictor variable. } \seealso{ \code{\link{regmixEM.mixed}} } \keyword{datasets} mixtools/man/density.spEM.Rd0000755000175100001440000000365012122210306015526 0ustar hornikusers\name{density.spEM} \title{Normal kernel density estimate for semiparametric EM output} \alias{density.spEM} \usage{ \method{density}{spEM}(x, u=NULL, component=1, block=1, scale=FALSE, \dots) } \description{ Takes an object of class \code{spEM} and returns an object of class \code{\link{density}} giving the kernel density estimate. } \arguments{ \item{x}{An object of class \code{npEM} such as the output of the \code{\link{npEM}} or \code{\link{spEMsymloc}} functions.} \item{u}{Vector of points at which the density is to be evaluated} \item{component}{Mixture component number; should be an integer from 1 to the number of columns of \code{x$posteriors}.} \item{block}{Block of repeated measures. Only applicable in repeated measures case, for which \code{x$blockid} exists; should be an integer from 1 to \code{max(x$blockid)}.} \item{scale}{Logical: If TRUE, multiply the density values by the corresponding mixing proportions found in \code{x$lambdahat}} \item{\dots}{Additional arguments; not used by this method.} } \details{ The bandwidth is taken to be the same as that used to produce the \code{npEM} object, which is given by \code{x$bandwidth}. } \value{ \code{density.spEM} returns a list of type \code{"density"}. See \code{\link{density}} for details. In particular, the output of \code{density.spEM} may be used directly by functions such as \code{\link{plot}} or \code{\link{lines}}. } \seealso{ \code{\link{spEM}}, \code{\link{spEMsymloc}}, \code{\link{plot.spEM}} } \examples{ set.seed(100) mu <- matrix(c(0, 15), 2, 3) sigma <- matrix(c(1, 5), 2, 3) x <- rmvnormmix(300, lambda = c(.4,.6), mu = mu, sigma = sigma) d <- spEM(x, mu0 = 2, blockid = rep(1,3), constbw = TRUE) plot(d, xlim=c(-10, 40), ylim = c(0, .16), xlab = "", breaks = 30, cex.lab=1.5, cex.axis=1.5) # plot.spEM calls density.spEM here } \keyword{file} mixtools/man/RTdata2.Rd0000755000175100001440000000245111665556372014476 0ustar hornikusers\name{RTdata2} \docType{data} \title{Reaction Time (RT) Data Set \# 2} \alias{RTdata2} \usage{RTdata2} \description{ This data set involves normally developing children 9 years of age presented visual simuli on a computer monitor. There are three different experimental conditions, according to the length of the delay after which the stimulus was displayed on the screen. Each subject experienced each condition eight times, and these 24 trials were given in random order. These data give the 82 children for whom there are complete measurements among over 200 total subjects. } \format{This data frame consists of 82 children (the rows) and their 24 responses (the columns) to the stimulus presented. The response is recorded in milliseconds. The columns are not in the order in which the stimuli were presented to the children; rather, they are arranged into three blocks of eight columns each so that each eight-column block contains only trials from one of the three conditions. } \references{ Miller, C. A., Kail, R., Leonard, L. B. and Tomblin, J. B. (2001) Speed of Processing in Children with Specific Language Impairment, \emph{Journal of Speech, Language, and Hearing Research} \bold{44(2)}, 416--433. } \seealso{ \code{\link{RTdata}} } \keyword{datasets} mixtools/man/ldmult.Rd0000755000175100001440000000145012122211744014510 0ustar hornikusers\name{ldmult} \title{Log-Density for Multinomial Distribution} \alias{ldmult} \usage{ ldmult(y, theta) } \description{ Return the logarithm of the multinomial density function. } \arguments{ \item{y}{A vector of multinomial counts.} \item{theta}{A vector of multinomial probabilities. May have same number of components as or one fewer component than \code{y}. In the latter case, an extra component is appended so that theta sums to one.} } \value{ \code{ldmult} returns the logarithm of the multinomial density with parameter \code{theta}, evaluated at \code{y}. } \details{ This function is called by \code{multmixEM}. } \seealso{ \code{\link{multmixEM}} } \examples{ y <- c(2, 2, 10) theta <- c(0.2, 0.3, 0.5) ldmult(y, theta) } \keyword{internal} mixtools/man/summary.mvnpEM.Rd0000755000175100001440000000450012644775630016126 0ustar hornikusers\name{summary.mvnpEM} \alias{summary.mvnpEM} \alias{print.summary.mvnpEM} \title{Summarizing Fits for Nonparametric Mixture Models with Conditionally Independent Multivariate Component Densities} \usage{ \method{summary}{mvnpEM}(object, \dots) \method{print}{summary.mvnpEM}(x, digits=3, \dots) } \arguments{ \item{object,x}{an object of class \code{mvnpEM} such as a result of a call to \code{\link{mvnpEM}}} \item{digits}{Significant digits for printing values} \item{\dots}{further arguments passed to or from other methods.} } \description{ \code{\link[base]{summary}} method for class \code{mvnpEM}. } \details{ \code{\link{summary.mvnpEM}} prints means and variances of each block for each component. These quantities might not be part of the model, but they are estimated nonparametrically based on the posterior probabilities and the data. } \value{ The function \code{\link{summary.mvnpEM}} returns a list of type \code{summary.mvnpEM} with the following components: \item{n}{The number of observations} \item{m}{The number of mixture components} \item{B}{The number of blocks} \item{blockid}{The block ID (from 1 through B) for each of the coordinates of the multivariate observations. The \code{blockid} component is of length \eqn{r}, the dimension of each observation.} \item{means}{A \eqn{B\times m}{B x m} matrix giving the estimated mean of each block in each component.} \item{variances}{Same as \code{means} but giving the estimated variances instead.} } \references{ Benaglia, T., Chauveau, D., and Hunter, D. R. (2009), An EM-like algorithm for semi- and non-parametric estimation in multivariate mixtures, \emph{Journal of Computational and Graphical Statistics}, \bold{18(2)}, 505--526. Chauveau, D., and Hoang, V. T. L. (2015), Nonparametric mixture models with conditionally independent multivariate component densities, Preprint under revision. \url{https://hal.archives-ouvertes.fr/hal-01094837} } \seealso{ \code{\link{mvnpEM}}, \code{\link{plot.mvnpEM}} } \examples{ # Example as in Chauveau and Hoang (2015) with 6 coordinates \dontrun{ m=2; r=6; blockid <-c(1,1,2,2,3,3) # 3 bivariate blocks # generate some data x ... a <- mvnpEM(x, mu0=2, blockid, samebw=F) # adaptive bandwidth plot(a) # this S3 method produces 6 plots of univariate marginals summary(a)} } \keyword{file} mixtools/man/initializations.Rd0000755000175100001440000000431612112160306016421 0ustar hornikusers%gammamix things temporarily commented out by DRH on 8-29-2008 %gammamix things uncommented by DSY on 10-2-2009 \name{mixtools initializations} \alias{flaremix.init} \alias{gammamix.init} \alias{logisregmix.init} \alias{multmix.init} \alias{mvnormalmix.init} \alias{normalmix.init} \alias{poisregmix.init} %\alias{regmix.chgpt.init} \alias{regmix.init} \alias{regmix.lambda.init} \alias{regmix.mixed.init} \alias{repnormmix.init} \alias{segregmix.init} \title{Initializations for Various EM Algorithms in 'mixtools'} \description{ Internal intialization functions for EM algorithms in the package \code{mixtools}. } \usage{ flaremix.init(y, x, lambda = NULL, beta = NULL, sigma = NULL, alpha = NULL) gammamix.init(x, lambda = NULL, alpha = NULL, beta = NULL, k = 2) logisregmix.init(y, x, N, lambda = NULL, beta = NULL, k = 2) multmix.init(y, lambda = NULL, theta = NULL, k = 2) mvnormalmix.init(x, lambda = NULL, mu = NULL, sigma = NULL, k = 2, arbmean = TRUE, arbvar = TRUE) normalmix.init(x, lambda = NULL, mu = NULL, s = NULL, k = 2, arbmean = TRUE, arbvar = TRUE) poisregmix.init(y, x, lambda = NULL, beta = NULL, k = 2) %regmix.chgpt.init(y, x, lambda = NULL, beta = NULL, % gamma = NULL, sigma = NULL, t = NULL, k = 2) regmix.init(y, x, lambda = NULL, beta = NULL, s = NULL, k = 2, addintercept = TRUE, arbmean = TRUE, arbvar=TRUE) regmix.lambda.init(y, x, lambda = NULL, beta = NULL, s = NULL, k = 2, addintercept = TRUE, arbmean = TRUE, arbvar = TRUE) regmix.mixed.init(y, x, w = NULL, sigma = NULL, arb.sigma = TRUE, alpha = NULL, lambda = NULL, mu = NULL, R = NULL, arb.R = TRUE, k = 2, mixed = FALSE, addintercept.fixed = FALSE, addintercept.random = TRUE) repnormmix.init(x, lambda = NULL, mu = NULL, s = NULL, k = 2, arbmean = TRUE, arbvar = TRUE) segregmix.init(y, x, lambda = NULL, beta = NULL, s = NULL, k = 2, seg.Z, psi, psi.locs = NULL) } \details{ These are usually not to be called by the user. Definitions of the arguments appear in the respective EM algorithms. } \keyword{internal} mixtools/man/summary.mixEM.Rd0000644000175100001440000000306413055603106015725 0ustar hornikusers\name{summary.mixEM} \alias{summary.mixEM} \title{Summarizing EM mixture model fits} \usage{ \method{summary}{mixEM}(object, digits=6, \dots) } \arguments{ \item{object}{an object of class \code{mixEM} such as a result of a call to \code{\link{normalmixEM}}} \item{digits}{Significant digits for printing values} \item{\dots}{further arguments passed to \code{print} method.} } \description{ \code{\link[base]{summary}} method for class \code{mixEM}. } \details{ \code{\link{summary.mixEM}} prints parameter estimates for each component of a fitted mixture model. The estimates printed vary with the type of model. } \value{ The function \code{\link{summary.mixEM}} prints the final loglikelihood value at the solution as well as a matrix of values for each component that could include: \item{lambda}{The estimated mixing weights} \item{mu}{The estimated mean parameters} \item{sigma}{The estimated standard deviations} \item{theta}{The estimated multinomial parameters} \item{beta}{The estimated regression parameters} } \seealso{ \code{\link{normalmixEM}}, \code{\link{logisregmixEM}}, \code{\link{multmixEM}}, \code{\link{mvnormalmixEM}}, \code{\link{poisregmixEM}}, \code{\link{regmixEM}}, \code{\link{regmixEM.lambda}}, \code{\link{regmixEM.loc}}, \code{\link{regmixEM.mixed}}, \code{\link{regmixEM.chgpt}}, \code{\link{repnormmixEM}}, \code{\link{expRMM_EM}}, \code{\link{weibullRMM_SEM}} } \examples{ data(faithful) attach(faithful) set.seed(100) out <- normalmixEM(waiting, mu=c(50,80), sigma=c(5,5), lambda=c(.5,.5)) summary(out) } \keyword{file} mixtools/man/post.beta.Rd0000755000175100001440000000462612644763353015137 0ustar hornikusers\name{post.beta} \title{Summary of Posterior Regression Coefficients in Mixtures of Random Effects Regressions} \alias{post.beta} \usage{ post.beta(y, x, p.beta, p.z) } \description{ Returns a 2x2 matrix of plots summarizing the posterior intercept and slope terms in a mixture of random effects regression with arbitrarily many components. } \arguments{ \item{y}{A list of N response trajectories with (possibly) varying dimensions of length \eqn{n_i}.} \item{x}{A list of N predictor values of dimension \eqn{n_i}. Each trajectory in y has its own design vector.} \item{p.beta}{A list of N 2xk matrices giving the posterior intercept and slope values from the output of an EM algorithm.} \item{p.z}{An Nxk matrix of posterior membership probabilities from the output of an EM algorithm.} } \value{ \code{post.beta} returns a 2x2 matrix of plots giving: \item{(1, 1)}{The data plotted on the x-y axes with all posterior regression lines.} \item{(1, 2)}{The data plotted on the x-y axes with most probable posterior regression lines.} \item{(2, 1)}{A beta-space plot of all posterior regression coefficients.} \item{(1, 1)}{A beta-space plot of most probable posterior regression coefficients.} } \seealso{ \code{\link{regmixEM.mixed}}, \code{\link{plot.mixEM}} } \references{ Young, D. S. and Hunter, D. R. (2015) Random Effects Regression Mixtures for Analyzing Infant Habituation, \emph{Journal of Applied Statistics}, \bold{42(7)}, 1421--1441. } \examples{ ## EM output for simulated data from 2-component mixture of random effects. data(RanEffdata) set.seed(100) x <- lapply(1:length(RanEffdata), function(i) matrix(RanEffdata[[i]][, 2:3], ncol = 2)) x <- x[1:20] y <- lapply(1:length(RanEffdata), function(i) matrix(RanEffdata[[i]][, 1], ncol = 1)) y <- y[1:20] lambda <- c(0.45, 0.55) mu <- matrix(c(0, 4, 100, 12), 2, 2) sigma <- 2 R <- list(diag(1, 2), diag(1, 2)) em.out <- regmixEM.mixed(y, x, sigma = sigma, arb.sigma = FALSE, lambda = lambda, mu = mu, R = R, addintercept.random = FALSE, epsilon = 1e-02, verb = TRUE) ## Obtaining the 2x2 matrix of plots. x.ran <- lapply(1:length(x), function(i) x[[i]][, 2]) p.beta <- em.out$posterior.beta p.z <- em.out$posterior.z post.beta(y, x.ran, p.beta = p.beta, p.z = p.z) } \details{ This is primarily used for within \code{plot.mixEM}. } \keyword{internal} mixtools/man/perm.Rd0000755000175100001440000000143412112156012014147 0ustar hornikusers\name{perm} \title{Permutation Function} \alias{perm} \usage{ perm(n, r, v = 1:n) } \description{ Enumerates the possible permutations of a specified size from the elements of a vector having the same size. } \arguments{ \item{n}{Size of the source vector.} \item{r}{Size of the target vector.} \item{v}{Source vector. Must be a vector of length \code{n}.} } \value{ \code{perm} returns a matrix where each row contains one of the permutations of length \code{r}. } \details{ This function is called by \code{segregmixEM} and the associated internal functions. This is also a simplified version of the function \code{permutations} found in the package \code{gtools}. } \seealso{ \code{\link{segregmixEM}} } \examples{ perm(3, 3, 2:4) } \keyword{internal} mixtools/man/multmixEM.Rd0000755000175100001440000000602412122212350015124 0ustar hornikusers\name{multmixEM} \title{EM Algorithm for Mixtures of Multinomials} \alias{multmixEM} \usage{ multmixEM(y, lambda = NULL, theta = NULL, k = 2, maxit = 10000, epsilon = 1e-08, verb = FALSE) } \description{ Return EM algorithm output for mixtures of multinomial distributions. } \arguments{ \item{y}{Either An nxp matrix of data (multinomial counts), where n is the sample size and p is the number of multinomial bins, or the output of the \code{\link{makemultdata}} function. It is not necessary that all of the rows contain the same number of multinomial trials (i.e., the row sums of \code{y} need not be identical).} \item{lambda}{Initial value of mixing proportions. Entries should sum to 1. This determines number of components. If NULL, then \code{lambda} is random from uniform Dirichlet and number of components is determined by \code{theta}.} \item{theta}{Initial value of \code{theta} parameters. Should be a kxp matrix, where p is the number of columns of y and k is number of components. Each row of \code{theta} should sum to 1. If NULL, then each row is random from uniform Dirichlet. If both \code{lambda} and \code{theta} are NULL, then number of components is determined by k.} \item{k}{Number of components. Ignored unless \code{lambda} and \code{theta} are NULL.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{multmixEM} returns a list of class \code{mixEM} with items: \item{y}{The raw data.} \item{lambda}{The final mixing proportions.} \item{theta}{The final multinomial parameters.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{compCDF}}, \code{\link{makemultdata}}, \code{\link{multmixmodel.sel}} } \references{ \itemize{ \item McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley \& Sons, Inc. \item Elmore, R. T., Hettmansperger, T. P. and Xuan, F. (2004) The Sign Statistic, One-Way Layouts and Mixture Models, \emph{Statistical Science} \bold{19(4)}, 579--587. } } \examples{ ## The sulfur content of the coal seams in Texas set.seed(100) A <- c(1.51, 1.92, 1.08, 2.04, 2.14, 1.76, 1.17) B <- c(1.69, 0.64, .9, 1.41, 1.01, .84, 1.28, 1.59) C <- c(1.56, 1.22, 1.32, 1.39, 1.33, 1.54, 1.04, 2.25, 1.49) D <- c(1.3, .75, 1.26, .69, .62, .9, 1.2, .32) E <- c(.73, .8, .9, 1.24, .82, .72, .57, 1.18, .54, 1.3) dis.coal <- makemultdata(A, B, C, D, E, cuts = median(c(A, B, C, D, E))) em.out <- multmixEM(dis.coal) em.out[1:4] } \keyword{file} mixtools/man/normalmixMMlc.Rd0000755000175100001440000002062313046171330015773 0ustar hornikusers\name{normalmixMMlc} \title{EC-MM Algorithm for Mixtures of Univariate Normals with linear constraints} \alias{normalmixMMlc} \usage{ normalmixMMlc(x, lambda = NULL, mu = NULL, sigma = NULL, k = 2, mean.constr = NULL, mean.lincstr = NULL, mean.constant = NULL, var.lincstr = NULL, gparam = NULL, epsilon = 1e-08, maxit = 1000, maxrestarts=20, verb = FALSE) } \description{ Return EC-MM (see below) algorithm output for mixtures of normal distributions with linear constraints on the means and variances parameters, as in Chauveau and Hunter (2013). The linear constraint for the means is of the form \eqn{\mu = M \beta + C}, where \eqn{M} and \eqn{C} are matrix and vector specified as parameters. The linear constraints for the variances are actually specified on the inverse variances, by \eqn{\pi = A \gamma}, where \eqn{\pi} is the vector of inverse variances, and \eqn{A} is a matrix specified as a parameter (see below). } \details{ This is a specific "EC-MM" algorithm for normal mixtures with linear constraints on the means and variances parameters. EC-MM here means that this algorithm is similar to an ECM algorithm as in Meng and Rubin (1993), except that it uses conditional MM (Minorization-Maximization)-steps instead of simple M-steps. Conditional means that it alternates between maximizing with respect to the \code{mu} and \code{lambda} while holding \code{sigma} fixed, and maximizing with respect to \code{sigma} and \code{lambda} while holding \code{mu} fixed. This ECM generalization of EM is forced in the case of linear constraints because there is no closed-form EM algorithm. } \arguments{ \item{x}{A vector of length n consisting of the data.} \item{lambda}{Initial value of mixing proportions. Automatically repeated as necessary to produce a vector of length \code{k}, then normalized to sum to 1. If \code{NULL}, then \code{lambda} is random from a uniform Dirichlet distribution (i.e., its entries are uniform random and then it is normalized to sum to 1).} \item{mu}{Starting value of vector of component means. If non-NULL and a vector, \code{k} is set to \code{length(mu)}. If NULL, then the initial value is randomly generated from a normal distribution with center(s) determined by binning the data.} \item{sigma}{Starting value of vector of component standard deviations for algorithm. Obsolete for linear constraints on the inverse variances; use \code{gparam} instead to specify a starting value.} \item{k}{Number of components. Initial value ignored unless \code{mu} and \code{sigma} are both NULL.} \item{mean.constr}{First, simplest way to define equality constraints on the mean parameters, given as a vector of length \code{k}, as in \code{\link{normalmixEM}}. Each vector entry specifies the constraints, if any, on the corresponding mean parameter: If \code{NA}, the corresponding parameter is unconstrained. If numeric, the corresponding parameter is fixed at that value. If a character string consisting of a single character preceded by a coefficient, such as \code{"0.5a"} or \code{"-b"}, all parameters using the same single character in their constraints will fix these parameters equal to the coefficient times some the same free parameter. For instance, if \code{mean.constr = c(NA, 0, "a", "-a")}, then the first mean parameter is unconstrained, the second is fixed at zero, and the third and forth are constrained to be equal and opposite in sign. Note: if there are no linear constraints for the means, it is more efficient to use directly \code{\link{normalmixEM}}.} \item{mean.lincstr}{Matrix \eqn{M} \eqn{(k,p)} in the linear constraint for the means equation \eqn{\mu = M \beta + C}, with \eqn{p \le k}.} \item{mean.constant}{Vector of \eqn{k} constants \eqn{C} in the linear constraint for the means equation \eqn{\mu = M \beta + C}.} \item{var.lincstr}{Matrix \eqn{A} \eqn{(k,q)} in the linear constraint for the inverse variances equation \eqn{\pi = A \gamma}, with \eqn{q \le k}.} \item{gparam}{Vector of \eqn{q} starting values for the \eqn{\gamma} parameter in the linear constraint for the inverse variances; see \code{var.lincstr}. If NULL, a vector of randomly generated standard exponential variables is used.} \item{epsilon}{The convergence criterion. Convergence is declared when the change in the observed data log-likelihood increases by less than epsilon.} \item{maxit}{The maximum allowed number of iterations.} \item{maxrestarts}{The maximum number of restarts allowed in case of a problem with the particular starting values chosen due to one of the variance estimates getting too small (each restart uses randomly chosen starting values). It is well-known that when each component of a normal mixture may have its own mean and variance, the likelihood has no maximizer; in such cases, we hope to find a "nice" local maximum with this algorithm instead, but occasionally the algorithm finds a "not nice" solution and one of the variances goes to zero, driving the likelihood to infinity.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{normalmixMMlc} returns a list of class \code{mixEM} with items: \item{x}{The raw data.} \item{lambda}{The final mixing proportions.} \item{mu}{The final mean parameters.} \item{sigma}{The final standard deviation(s)} \item{scale}{Scale factor for the component standard deviations, if applicable.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood. This vector includes both the initial and the final values; thus, the number of iterations is one less than its length.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{beta}{The final \eqn{\beta} parameter estimate.} \item{gamma}{The final \eqn{\gamma} parameter estimate.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{normalmixEM}}, \code{\link{mvnormalmixEM}}, \code{\link{normalmixEM2comp}}, \code{\link{tauequivnormalmixEM}} } \references{ \itemize{ \item McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley & Sons, Inc. \item Meng, X.-L. and Rubin, D. B. (1993) Maximum Likelihood Estimation Via the ECM Algorithm: A General Framework, \emph{Biometrika} 80(2): 267-278. \item Chauveau, D. and Hunter, D.R. (2013) ECM and MM algorithms for mixtures with constrained parameters, \emph{preprint \url{http://hal.archives-ouvertes.fr/hal-00625285}}. \item Thomas, H., Lohaus, A., and Domsch, H. (2011) Stable Unstable Reliability Theory, \emph{British Journal of Mathematical and Statistical Psychology} 65(2): 201-221. } } \author{Didier Chauveau} \examples{ ## Analyzing synthetic data as in the tau equivalent model ## From Thomas et al (2011), see also Chauveau and Hunter (2013) ## a 3-component mixture of normals with linear constraints. lbd <- c(0.6,0.3,0.1); m <- length(lbd) sigma <- sig0 <- sqrt(c(1,9,9)) # means constaints mu = M beta M <- matrix(c(1,1,1,0,-1,1), 3, 2) beta <- c(1,5) # unknown constrained mean mu0 <- mu <- as.vector(M \%*\% beta) # linear constraint on the inverse variances pi = A.g A <- matrix(c(1,1,1,0,1,0), m, 2, byrow=TRUE) iv0 <- 1/(sig0^2) g0 <- c(iv0[2],iv0[1] - iv0[2]) # gamma^0 init # simulation and EM fits set.seed(50); n=100; x <- rnormmix(n,lbd,mu,sigma) s <- normalmixEM(x,mu=mu0,sigma=sig0,maxit=2000) # plain EM # EM with var and mean linear constraints sc <- normalmixMMlc(x, lambda=lbd, mu=mu0, sigma=sig0, mean.lincstr=M, var.lincstr=A, gparam=g0) # plot and compare both estimates dnormmixt <- function(t, lam, mu, sig){ m <- length(lam); f <- 0 for (j in 1:m) f <- f + lam[j]*dnorm(t,mean=mu[j],sd=sig[j]) f} t <- seq(min(x)-2, max(x)+2, len=200) hist(x, freq=FALSE, col="lightgrey", ylim=c(0,0.3), ylab="density",main="") lines(t, dnormmixt(t, lbd, mu, sigma), col="darkgrey", lwd=2) # true lines(t, dnormmixt(t, s$lambda, s$mu, s$sigma), lty=2) lines(t, dnormmixt(t, sc$lambda, sc$mu, sc$sigma), col=1, lty=3) legend("topleft", c("true","plain EM","constr EM"), col=c("darkgrey",1,1), lty=c(1,2,3), lwd=c(2,1,1)) } \keyword{file} mixtools/man/boot.se.Rd0000755000175100001440000000345312264135704014575 0ustar hornikusers\name{boot.se} \title{Performs Parametric Bootstrap for Standard Error Approximation} \alias{boot.se} \usage{ boot.se(em.fit, B = 100, arbmean = TRUE, arbvar = TRUE, N = NULL, ...) } \description{ Performs a parametric bootstrap by producing B bootstrap samples for the parameters in the specified mixture model. } \arguments{ \item{em.fit}{An object of class \code{mixEM}. The estimates produced in \code{em.fit} will be used as the parameters for the distribution from which we generate the bootstrap data.} \item{B}{The number of bootstrap samples to produce. The default is 100, but ideally, values of 1000 or more would be more acceptable.} \item{arbmean}{If FALSE, then a scale mixture analysis can be performed for \code{mvnormalmix}, \code{normalmix}, \code{regmix}, or \code{repnormmix}. The default is TRUE.} \item{arbvar}{If FALSE, then a location mixture analysis can be performed for \code{mvnormalmix}, \code{normalmix}, \code{regmix}, or \code{repnormmix}. The default is TRUE.} \item{N}{An n-vector of number of trials for the logistic regression type \code{logisregmix}. If NULL, then \code{N} is an n-vector of 1s for binary logistic regression.} \item{...}{Additional arguments passed to the various EM algorithms for the mixture of interest.} } \value{ \code{boot.se} returns a list with the bootstrap samples and standard errors for the mixture of interest. } \references{ McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley \& Sons, Inc. } \examples{ ## Bootstrapping standard errors for a regression mixture case. data(NOdata) attach(NOdata) set.seed(100) em.out <- regmixEM(Equivalence, NO, arbvar = FALSE) out.bs <- boot.se(em.out, B = 10, arbvar = FALSE) out.bs } \keyword{file} mixtools/man/density.npEM.Rd0000755000175100001440000000456013055645065015546 0ustar hornikusers\name{density.npEM} \title{Normal kernel density estimate for nonparametric EM output} \alias{density.npEM} \usage{ \method{density}{npEM}(x, u=NULL, component=1, block=1, scale=FALSE, \dots) } \description{ Takes an object of class \code{npEM} and returns an object of class \code{\link{density}} giving the kernel density estimate for the selected component and, if applicable, the selected block. } \arguments{ \item{x}{An object of class \code{npEM} such as the output of the \code{\link{npEM}} or \code{\link{spEMsymloc}} functions.} \item{u}{Vector of points at which the density is to be evaluated} \item{component}{Mixture component number; should be an integer from 1 to the number of columns of \code{x$posteriors}.} \item{block}{Block of repeated measures. Only applicable in repeated measures case, for which \code{x$blockid} exists; should be an integer from 1 to \code{max(x$blockid)}.} \item{scale}{Logical: If TRUE, multiply the density values by the corresponding mixing proportions found in \code{x$lambdahat}} \item{\dots}{Additional arguments; not used by this method.} } \details{ The bandwidth is taken to be the same as that used to produce the \code{npEM} object, which is given by \code{x$bandwidth}. } \value{ \code{density.npEM} returns a list of type \code{"density"}. See \code{\link{density}} for details. In particular, the output of \code{density.npEM} may be used directly by functions such as \code{\link{plot}} or \code{\link{lines}}. } \seealso{ \code{\link{npEM}}, \code{\link{spEMsymloc}}, \code{\link{plot.npEM}} } \examples{ ## Look at histogram of Old Faithful waiting times data(faithful) Minutes <- faithful$waiting hist(Minutes, freq=FALSE) ## Superimpose equal-variance normal mixture fit: set.seed(100) nm <- normalmixEM(Minutes, mu=c(50,80), sigma=5, arbvar=FALSE, fast=TRUE) x <- seq(min(Minutes), max(Minutes), len=200) for (j in 1:2) lines(x, nm$lambda[j]*dnorm(x, mean=nm$mu[j], sd=nm$sigma), lwd=3, lty=2) ## Superimpose several semiparametric fits with different bandwidths: bw <- c(1, 3, 5) for (i in 1:3) { sp <- spEMsymloc(Minutes, c(50,80), bw=bw[i], eps=1e-3) for (j in 1:2) lines(density(sp, component=j, scale=TRUE), col=1+i, lwd=2) } legend("topleft", legend=paste("Bandwidth =",bw), fill=2:4) } \keyword{file} mixtools/man/regmixEM.Rd0000755000175100001440000000732012514002272014725 0ustar hornikusers\name{regmixEM} \title{EM Algorithm for Mixtures of Regressions} \alias{regmixEM} \usage{ regmixEM(y, x, lambda = NULL, beta = NULL, sigma = NULL, k = 2, addintercept = TRUE, arbmean = TRUE, arbvar = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) } \description{ Returns EM algorithm output for mixtures of multiple regressions with arbitrarily many components. } \arguments{ \item{y}{An n-vector of response values.} \item{x}{An nxp matrix of predictors. See \code{addintercept} below.} \item{lambda}{Initial value of mixing proportions. Entries should sum to 1. This determines number of components. If NULL, then \code{lambda} is random from uniform Dirichlet and number of components is determined by \code{beta}.} \item{beta}{Initial value of \code{beta} parameters. Should be a pxk matrix, where p is the number of columns of x and k is number of components. If NULL, then \code{beta} has standard normal entries according to a binning method done on the data. If both \code{lambda} and \code{beta} are NULL, then number of components is determined by \code{sigma}.} \item{sigma}{A vector of standard deviations. If NULL, then 1/\code{sigma}^2 has random standard exponential entries according to a binning method done on the data. If \code{lambda}, \code{beta}, and \code{sigma} are NULL, then number of components is determined by \code{k}.} \item{k}{Number of components. Ignored unless all of \code{lambda}, \code{beta}, and \code{sigma} are NULL.} \item{addintercept}{If TRUE, a column of ones is appended to the x matrix before the value of p is calculated.} \item{arbmean}{If TRUE, each mixture component is assumed to have a different set of regression coefficients (i.e., the \code{beta}s).} \item{arbvar}{If TRUE, each mixture component is assumed to have a different \code{sigma}.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{regmixEM} returns a list of class \code{mixEM} with items: \item{x}{The set of predictors (which includes a column of 1's if \code{addintercept} = TRUE).} \item{y}{The response values.} \item{lambda}{The final mixing proportions.} \item{beta}{The final regression coefficients.} \item{sigma}{The final standard deviations. If \code{arbmean} = FALSE, then only the smallest standard deviation is returned. See \code{scale} below.} \item{scale}{If \code{arbmean} = FALSE, then the scale factor for the component standard deviations is returned. Otherwise, this is omitted from the output.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{regcr}}, \code{\link{regmixMH}} } \references{ de Veaux, R. D. (1989), Mixtures of Linear Regressions, \emph{Computational Statistics and Data Analysis} 8, 227-245. Hurn, M., Justel, A. and Robert, C. P. (2003) Estimating Mixtures of Regressions, \emph{Journal of Computational and Graphical Statistics} \bold{12(1)}, 55--79. McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley \& Sons, Inc. } \examples{ ## EM output for NOdata. data(NOdata) attach(NOdata) set.seed(100) em.out <- regmixEM(Equivalence, NO, verb = TRUE, epsilon = 1e-04) em.out[3:6] } \keyword{file} mixtools/man/normalmixEM2comp.Rd0000755000175100001440000000633212122212724016403 0ustar hornikusers\name{normalmixEM2comp} \title{Fast EM Algorithm for 2-Component Mixtures of Univariate Normals} \alias{normalmixEM2comp} \usage{ normalmixEM2comp(x, lambda, mu, sigsqrd, eps= 1e-8, maxit = 1000, verb=FALSE) } \description{ Return EM algorithm output for mixtures of univariate normal distributions for the special case of 2 components, exploiting the simple structure of the problem to speed up the code. } \arguments{ \item{x}{A vector of length \eqn{n} consisting of the data.} \item{lambda}{Initial value of first-component mixing proportion.} \item{mu}{A 2-vector of initial values for the mean parameters.} \item{sigsqrd}{Either a scalar or a 2-vector with initial value(s) for the variance parameters. If a scalar, the algorithm assumes that the two components have equal variances; if a 2-vector, it assumes that the two components do not have equal variances.} \item{eps}{The convergence criterion. Convergence is declared when the change in the observed data log-likelihood increases by less than epsilon.} \item{maxit}{The maximum possible number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \details{ This code is written to be very fast, sometimes more than an order of magnitude faster than \code{\link{normalmixEM}} for the same problem. It is less numerically stable that \code{\link{normalmixEM}} in the sense that it does not safeguard against underflow as carefully. Note that when the two components are assumed to have unequal variances, the loglikelihood is unbounded. However, in practice this is rarely a problem and quite often the algorithm converges to a "nice" local maximum. } \value{ \code{normalmixEM2comp} returns a list of class \code{mixEM} with items: \item{x}{The raw data.} \item{lambda}{The final mixing proportions (lambda and 1-lambda).} \item{mu}{The final two mean parameters.} \item{sigma}{The final one or two standard deviations. } \item{loglik}{The final log-likelihood.} \item{posterior}{An nx2 matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood. This vector includes both the initial and the final values; thus, the number of iterations is one less than its length.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values (always zero).} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{mvnormalmixEM}}, \code{\link{normalmixEM}} } \references{ McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley \& Sons, Inc. } \examples{ ##Analyzing the Old Faithful geyser data with a 2-component mixture of normals. data(faithful) attach(faithful) set.seed(100) system.time(out <- normalmixEM2comp(waiting, lambda=.5, mu=c(50,80), sigsqrd=100)) out$all.loglik # Note: must be monotone increasing # Compare elapsed time with more general version system.time(out2 <- normalmixEM(waiting, lambda=c(.5,.5), mu=c(50,80), sigma=c(10,10), arbvar=FALSE)) out2$all.loglik # Values should be identical to above } \keyword{file} mixtools/man/plotexpRMM.Rd0000644000175100001440000000467013055603106015265 0ustar hornikusers\name{plotexpRMM} \alias{plotexpRMM} %- Also NEED an '\alias' for EACH other topic documented here. \title{Plot sequences from the EM algorithm for censored mixture of exponentials } \description{Function for plotting sequences of estimates along iterations, from an object returned by the \code{\link{expRMM_EM}}, an EM algorithm for mixture of exponential distributions with randomly right censored data (see reference below). } \usage{ plotexpRMM(a, title=NULL, rowstyle=TRUE, subtitle=NULL, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{a}{An object returned by \code{\link{expRMM_EM}}.} \item{title}{The title of the plot, set to some default value if \code{NULL}.} \item{rowstyle}{Window organization, for plots in rows (the default) or columns.} \item{subtitle}{A subtitle for the plot, set to some default value if \code{NULL}.} \item{...}{Other parameters (such as \code{lwd}) passed to \code{plot}, \code{lines}, and \code{legend} commands.} } \value{The plot returned} \seealso{ Related functions: \code{\link{expRMM_EM}}, \code{\link{summary.mixEM}}, \code{\link{plot.mixEM}}. Other models and algorithms for censored lifetime data (name convention is model_algorithm): \code{\link{weibullRMM_SEM}}, \code{\link{spRMM_SEM}}. } \references{ \itemize{ \item Bordes, L., and Chauveau, D. (2016), Stochastic EM algorithms for parametric and semiparametric mixture models for right-censored lifetime data, Computational Statistics, Volume 31, Issue 4, pages 1513-1538. \url{http://link.springer.com/article/10.1007/s00180-016-0661-7} } } \author{Didier Chauveau} %% ~Make other sections like Warning with \section{Warning }{....} ~ \examples{ n=300 # sample size m=2 # number of mixture components lambda <- c(1/3,1-1/3); rate <- c(1,1/10) # mixture parameters set.seed(1234) x <- rexpmix(n, lambda, rate) # iid ~ exponential mixture cs=runif(n,0,max(x)) # Censoring (uniform) and incomplete data t <- apply(cbind(x,cs),1,min) # observed or censored data d <- 1*(x <= cs) # censoring indicator ###### EM for RMM, exponential lifetimes l0 <- rep(1/m,m); r0 <- c(1, 0.5) # "arbitrary" initial values a <- expRMM_EM(t, d, lambda=l0, rate=r0, k = m) summary(a) # EM estimates etc plotexpRMM(a, lwd=2) # plot of EM sequences %%\dontrun{ %%} } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{file} mixtools/man/repnormmixmodel.sel.Rd0000755000175100001440000000323113055645134017223 0ustar hornikusers\name{repnormmixmodel.sel} \title{Model Selection in Mixtures of Normals with Repeated Measures} \alias{repnormmixmodel.sel} \usage{ repnormmixmodel.sel(x, k = 2, ...) } \description{ Assess the number of components in a mixture model with normal components and repeated measures using the Akaike's information criterion (AIC), Schwartz's Bayesian information criterion (BIC), Bozdogan's consistent AIC (CAIC), and Integrated Completed Likelihood (ICL). } \arguments{ \item{x}{An mxn matrix of observations. The rows correspond to the repeated measures and the columns correspond to the subject.} \item{k}{The maximum number of components to assess.} \item{...}{Additional arguments passed to \code{repnormmixEM}.} } \value{ \code{repnormmixmodel.sel} returns a matrix of the AIC, BIC, CAIC, and ICL values along with the winner (i.e., the highest value given by the model selection criterion) for a mixture of normals with repeated measures. } \seealso{ \code{\link{repnormmixEM}} } \references{ Biernacki, C., Celeux, G., and Govaert, G. (2000). Assessing a Mixture Model for Clustering with the Integrated Completed Likelihood. \emph{IEEE Transactions on Pattern Analysis and Machine Intelligence}, 22(7):719-725. Bozdogan, H. (1987). Model Selection and Akaike's Information Criterion (AIC): The General Theory and its Analytical Extensions. \emph{Psychometrika}, 52:345-370. } \examples{ ## Assessing the number of components for the water-level task data set. data(Waterdata) water<-t(as.matrix(Waterdata[,3:10])) set.seed(100) out <- repnormmixmodel.sel(water, k = 3, epsilon = 5e-01) out } \keyword{file} mixtools/man/npMSL.Rd0000755000175100001440000001661512644763736014237 0ustar hornikusers\name{npMSL} \title{Nonparametric EM-like Algorithm for Mixtures of Independent Repeated Measurements - Maximum Smoothed Likelihood version} \alias{npMSL} \usage{ npMSL(x, mu0, blockid = 1:ncol(x), bw = bw.nrd0(as.vector(as.matrix(x))), samebw = TRUE, bwmethod = "S", h = bw, eps = 1e-8, maxiter=500, bwiter = maxiter, nbfold = NULL, ngrid=200, post=NULL, verb = TRUE) } \description{ Returns nonparametric Smoothed Likelihood algorithm output (Levine et al, 2011) for mixtures of multivariate (repeated measures) data where the coordinates of a row (case) in the data matrix are assumed to be independent, conditional on the mixture component (subpopulation) from which they are drawn. } \arguments{ \item{x}{An \eqn{n\times r}{n x r} matrix of data. Each of the \eqn{n} rows is a case, and each case has \eqn{r} repeated measurements. These measurements are assumed to be conditionally independent, conditional on the mixture component (subpopulation) from which the case is drawn.} \item{mu0}{Either an \eqn{m\times r}{m x r} matrix specifying the initial centers for the \link{kmeans} function, or an integer \eqn{m} specifying the number of initial centers, which are then choosen randomly in \link{kmeans}} \item{blockid}{A vector of length \eqn{r} identifying coordinates (columns of \code{x}) that are assumed to be identically distributed (i.e., in the same block). For instance, the default has all distinct elements, indicating that no two coordinates are assumed identically distributed and thus a separate set of \eqn{m} density estimates is produced for each column of \eqn{x}. On the other hand, if \code{blockid=rep(1,ncol(x))}, then the coordinates in each row are assumed conditionally i.i.d.} \item{bw}{Bandwidth for density estimation, equal to the standard deviation of the kernel density. By default, a simplistic application of the default \code{\link{bw.nrd0}} bandwidth used by \code{\link{density}} to the entire dataset.} \item{samebw}{Logical: If \code{TRUE}, use the same bandwidth for each iteration and for each component and block. If \code{FALSE}, use a separate bandwidth for each component and block, and update this bandwidth at each iteration of the algorithm until \code{bwiter} is reached (see below). Two adaptation methods are provided, see \code{bwmethod} below.} \item{bwmethod}{Define the adaptive bandwidth strategy when \code{samebw = FALSE}, in which case the bandwidth depends on each component, block, and iteration of the algorithm. If set to "S" (the default), adaptation is done using a suitably modified \code{\link{bw.nrd0}} method as described in Benaglia et al (2011). If set to "CV", an adaptive \eqn{k}-fold Cross Validation method is applied, as described in Chauveau et al (2014), where \code{nbfold} is the number of subsamples. This corresponds to a Leave-\eqn{[n/nbfold]}-Out CV. } \item{h}{Alternative way to specify the bandwidth, to provide backward compatibility.} \item{eps}{Tolerance limit for declaring algorithm convergence. Convergence is declared whenever the maximum change in any coordinate of the \code{lambda} vector (of mixing proportion estimates) does not exceed \code{eps}.} \item{maxiter}{The maximum number of iterations allowed, convergence may be declared before \code{maxiter} iterations (see \code{eps} above).} \item{bwiter}{The maximum number of iterations allowed for adaptive bandwidth stage, when \code{samebw = FALSE}. If set to \code{0}, then the initial bandwidth matrix is used without adaptation.} \item{nbfold}{A parameter passed to the internal function \code{wbs.kCV}, which controls the weighted bandwidth selection by k-fold cross-validation.} \item{ngrid}{Number of points in the discretization of the intervals over which are approximated the (univariate) integrals for non linear smoothing of the log-densities, as required in the E step of the npMSL algorithm, see Levine et al (2011).} \item{post}{If non-NULL, an \eqn{n\times m}{n x m} matrix specifying the initial posterior probability vectors for each of the observations, i.e., the initial values to start the EM-like algorithm.} \item{verb}{If TRUE, print updates for every iteration of the algorithm as it runs} } \value{ \code{npMSL} returns a list of class \code{npEM} with the following items: \item{data}{The raw data (an \eqn{n\times r}{n x r} matrix).} \item{posteriors}{An \eqn{n\times m}{n x m} matrix of posterior probabilities for observation.} \item{bandwidth}{If \code{samebw==TRUE}, same as the \code{bw} input argument; otherwise, value of \code{bw} matrix at final iteration. This information is needed by any method that produces density estimates from the output.} \item{blockid}{Same as the \code{blockid} input argument, but recoded to have positive integer values. Also needed by any method that produces density estimates from the output.} \item{lambda}{The sequence of mixing proportions over iterations.} \item{lambdahat}{The final mixing proportions.} \item{loglik}{The sequence of log-likelihoods over iterations.} \item{f}{An array of size \eqn{ngrid \times m \times l}{ngrid x m x l}, returning last values of density for component \eqn{j} and block \eqn{k} over \code{grid} points.} \item{meanNaN}{Average number of \code{NaN} that occured over iterations (for internal testing and control purpose).} \item{meanUdfl}{Average number of "underflow" that occured over iterations (for internal testing and control purpose).} } \seealso{ \code{\link{npEM}}, \code{\link{plot.npEM}}, \code{\link{normmixrm.sim}}, \code{\link{spEMsymloc}}, \code{\link{spEM}}, \code{\link{plotseq.npEM}} } \references{ \itemize{ \item Benaglia, T., Chauveau, D., and Hunter, D. R. (2009), An EM-like algorithm for semi- and non-parametric estimation in multivariate mixtures, Journal of Computational and Graphical Statistics, 18, 505-526. \item Benaglia, T., Chauveau, D. and Hunter, D.R. (2011), Bandwidth Selection in an EM-like algorithm for nonparametric multivariate mixtures. Nonparametric Statistics and Mixture Models: A Festschrift in Honor of Thomas P. Hettmansperger. World Scientific Publishing Co., pages 15-27. \item Chauveau D., Hunter D. R. and Levine M. (2014), Semi-Parametric Estimation for Conditional Independence Multivariate Finite Mixture Models. Preprint (under revision). \item Levine, M., Hunter, D. and Chauveau, D. (2011), Maximum Smoothed Likelihood for Multivariate Mixtures, Biometrika 98(2): 403-416. } } \examples{ ## Examine and plot water-level task data set. ## Block structure pairing clock angles that are directly opposite one ## another (1:00 with 7:00, 2:00 with 8:00, etc.) set.seed(111) # Ensure that results are exactly reproducible data(Waterdata) blockid <- c(4,3,2,1,3,4,1,2) # see Benaglia et al (2009a) \dontrun{ a <- npEM(Waterdata[,3:10], mu0=3, blockid=blockid, bw=4) # npEM solution b <- npMSL(Waterdata[,3:10], mu0=3, blockid=blockid, bw=4) # smoothed version # Comparisons on the 4 default plots, one for each block par(mfrow=c(2,2)) for (l in 1:4){ plot(a, blocks=l, breaks=5*(0:37)-92.5, xlim=c(-90,90), xaxt="n",ylim=c(0,.035), xlab="") plot(b, blocks=l, hist=FALSE, newplot=FALSE, addlegend=FALSE, lty=2, dens.col=1) axis(1, at=30*(1:7)-120, cex.axis=1) legend("topleft",c("npMSL"),lty=2, lwd=2)} } } \keyword{file} mixtools/man/plot.MCMC.Rd0000755000175100001440000000315212122213370014701 0ustar hornikusers\name{plot.mixMCMC} \title{Various Plots Pertaining to Mixture Model Output Using MCMC Methods} \alias{plot.mixMCMC} \usage{ \method{plot}{mixMCMC}(x, trace.plots = TRUE, summary.plots = FALSE, burnin = 2000, \dots) } \description{ Takes an object of class \code{mixMCMC} and returns various graphical output for select mixture models. } \arguments{ \item{x}{An object of class \code{mixMCMC}.} \item{trace.plots}{If TRUE, trace plots of the various parameters estimated by the MCMC methods is given.} \item{summary.plots}{Graphics pertaining to certain mixture models. The details are given below.} \item{burnin}{The values 1 to \code{burnin} are dropped when producing the plots in \code{summary.plots}.} \item{...}{Graphical parameters passed to \code{regcr} function.} } \value{ \code{plot.mixMCMC} returns trace plots of the various parameters estimated by the MCMC methods for all objects of class \code{mixMCMC}. In addition, other plots may be produced for the following k-component mixture model functions: \item{regmixMH}{Credible bands for the regression lines in a mixture of linear regressions. See \code{regcr} for more details.} } \seealso{ \code{\link{regcr}} } \examples{ ## M-H algorithm for NOdata with acceptance rate about 40\%. data(NOdata) attach(NOdata) set.seed(100) beta <- matrix(c(1.3, -0.1, 0.6, 0.1), 2, 2) sigma <- c(.02, .05) MH.out <- regmixMH(Equivalence, NO, beta = beta, s = sigma, sampsize = 2500, omega = .0013) plot(MH.out, summary.plots = TRUE, burnin = 2450, alpha = 0.01) } \keyword{file} mixtools/man/gammamixEM.Rd0000755000175100001440000000573012122210754015236 0ustar hornikusers\name{gammamixEM} \title{EM Algorithm for Mixtures of Gamma Distributions} \alias{gammamixEM} \usage{ gammamixEM(x, lambda = NULL, alpha = NULL, beta = NULL, k = 2, epsilon = 1e-08, maxit = 1000, maxrestarts=20, verb = FALSE) } \description{ Return EM algorithm output for mixtures of gamma distributions. } \arguments{ \item{x}{A vector of length n consisting of the data.} \item{lambda}{Initial value of mixing proportions. If \code{NULL}, then \code{lambda} is random from a uniform Dirichlet distribution (i.e., its entries are uniform random and then it is normalized to sum to 1).} \item{alpha}{Starting value of vector of component shape parameters. If non-NULL and a vector, \code{k} is set to \code{length(alpha)}. If NULL, then the initial value is estimated by partitioning the data into \code{k} regions (with \code{lambda} determining the proportion of values in each region) and then calculating the method of moments estimates.} \item{beta}{Starting value of vector of component scale parameters. If non-NULL and a vector, \code{k} is set to \code{length(beta)}. If NULL, then the initial value is estimated the same method described for \code{alpha}.} \item{k}{Number of components. Initial value ignored unless \code{alpha} and \code{beta} are both NULL.} \item{epsilon}{The convergence criterion. Convergence is declared when the change in the observed data log-likelihood increases by less than epsilon.} \item{maxit}{The maximum number of iterations.} \item{maxrestarts}{The maximum number of restarts allowed in case of a problem with the particular starting values chosen (each restart uses randomly chosen starting values).} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{gammamixEM} returns a list of class \code{mixEM} with items: \item{x}{The raw data.} \item{lambda}{The final mixing proportions.} \item{gamma.pars}{A 2xk matrix where each column provides the component estimates of \code{alpha} and \code{beta}.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood. This vector includes both the initial and the final values; thus, the number of iterations is one less than its length.} \item{ft}{A character vector giving the name of the function.} } \references{ Dempster, A. P., Laird, N. M., and Rubin, D. B. (1977) Maximum Likelihood From Incomplete Data Via the EM Algorithm, \emph{Journal of the Royal Statistical Society, Series B}, \bold{39(1)}, 1--38. } \examples{ ##Analyzing a 3-component mixture of gammas. set.seed(100) x <- c(rgamma(200, shape = 0.2, scale = 14), rgamma(200, shape = 32, scale = 10), rgamma(200, shape = 5, scale = 6)) out <- gammamixEM(x, lambda = c(1, 1, 1)/3, verb = TRUE) out[2:4] } \keyword{file} mixtools/man/test.equality.Rd0000755000175100001440000000443112122215712016023 0ustar hornikusers\name{test.equality} \title{Performs Chi-Square Tests for Scale and Location Mixtures} \alias{test.equality} \usage{ test.equality(y, x = NULL, arbmean = TRUE, arbvar = FALSE, mu = NULL, sigma = NULL, beta = NULL, lambda = NULL, ...) } \description{ Performs a likelihood ratio test of a location (or scale) normal or regression mixture versus the more general model. For a normal mixture, the alternative hypothesis is that each component has its own mean and variance, whereas the null is that all means (in the case of a scale mixture) or all variances (in the case of a location mixture) are equal. This test is asymptotically chi-square with degrees of freedom equal to k-1, where k is the number of components. } \arguments{ \item{y}{The responses for \code{regmixEM} or the data for \code{normalmixEM}.} \item{x}{The predictors for \code{regmixEM}.} \item{arbmean}{If FALSE, then a scale mixture analysis is performed for \code{normalmixEM} or \code{regmixEM}.} \item{arbvar}{If FALSE, then a location mixture analysis is performed for \code{normalmixEM} or \code{regmixEM}.} \item{mu}{An optional vector for starting values (under the null hypothesis) for \code{mu} in \code{normalmixEM}.} \item{sigma}{An optional vector for starting values (under the null hypothesis) for \code{sigma} in \code{normalmixEM} or \code{regmixEM}.} \item{beta}{An optional matrix for starting values (under the null hypothesis) for \code{beta} in \code{regmixEM}.} \item{lambda}{An otional vector for starting values (under the null hypothesis) for \code{lambda} in \code{normalmixEM} or \code{regmixEM}.} \item{...}{Additional arguments passed to the various EM algorithms for the mixture of interest.} } \value{ \code{test.equality} returns a list with the following items: \item{chi.sq}{The chi-squared test statistic.} \item{df}{The degrees of freedom for the chi-squared test statistic.} \item{p.value}{The p-value corresponding to this likelihood ratio test.} } \seealso{ \code{\link{test.equality.mixed}} } \examples{ ## Should a location mixture be used for the Old Faithful data? data(faithful) attach(faithful) set.seed(100) test.equality(y = waiting, arbmean = FALSE, arbvar = TRUE) } \keyword{file} mixtools/man/segregmixEM.Rd0000755000175100001440000001747012334534340015441 0ustar hornikusers\name{segregmixEM} \title{ECM Algorithm for Mixtures of Regressions with Changepoints} \alias{segregmixEM} \alias{regmixEM.chgpt} \usage{ segregmixEM(y, x, lambda = NULL, beta = NULL, sigma = NULL, k = 2, seg.Z, psi, psi.locs = NULL, delta = NULL, epsilon = 1e-08, maxit = 10000, verb = FALSE, max.restarts = 15) } \description{ Returns ECM algorithm output for mixtures of multiple regressions with changepoints and arbitrarily many components. } \arguments{ \item{y}{An n-vector of response values.} \item{x}{An nxp matrix of predictors. Note that this model assumes the presence of an intercept.} \item{lambda}{Initial value of mixing proportions. Entries should sum to 1. This determines number of components. If NULL, then \code{lambda} is random from uniform Dirichlet and the number of components is determined by \code{beta}.} \item{beta}{Initial value of \code{beta} parameters. This is a list of length \code{k} such that each element must contain a vector having length consistent with the defined changepoint structure. See \code{seg.Z}, \code{psi}, and \code{psi.loc} below. If NULL, then \code{beta} has standard normal entries according to a binning method done on the data. If both \code{lambda} and \code{beta} are NULL, then number of components is determined by \code{sigma}.} \item{sigma}{A vector of standard deviations. If NULL, then 1/\code{sigma}^2 has random standard exponential entries according to a binning method done on the data. If \code{lambda}, \code{beta}, and \code{sigma} are NULL, then number of components is determined by \code{k}.} \item{k}{Number of components. Ignored unless all of \code{lambda}, \code{beta}, and \code{sigma} are NULL.} \item{seg.Z}{A list of length \code{k} whose elements are right-hand side formulas, which are additive linear models of the predictors that have changepoints in their respective components. See below for more details.} \item{psi}{A kxp matrix specifying the number of changepoints for each predictor in each component. See below for more details.} \item{psi.locs}{A list of length \code{k} that has initial estimates for the changepoint locations. Each element of the list must have length equal to the number of chanegpoints specified in the corresponding row of the \code{psi} matrix. For components with no changepoints, simply set that element equal to NULL. See below for more details.} \item{delta}{An optional list of values quantifying the amount of separation at each changepoint if assuming discontinuities at the changepoints. This has the same dimensions as \code{psi.locs}.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} \item{max.restarts}{The number of times to try restarting the ECM algorithm if estimation problems occur - such as choice of poor initial values or a poorly chosen changepoint structure.} } \value{ \code{segregmixEM} returns a list of class \code{segregmixEM} with items: \item{x}{The set of predictors.} \item{y}{The response values.} \item{lambda}{The final mixing proportions.} \item{beta}{The final regression coefficients.} \item{sigma}{The final standard deviations.} \item{seg.Z}{The list of right-hand side formulas as defined by the user.} \item{psi.locs}{A list of length k with the final estimates for the changepoint locations.} \item{delta}{A list of the delta values that were optionally specified by the user.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \details{ \code{seg.Z} is defined as a list of right-hand side linear model formulas that are used to identify which predictors have changepoints in each component. For example, suppose you have a dataframe with three predictors: \code{V1}, \code{V2}, \code{V3}. Suppose now that you wish to model a 3-component mixture of regressions with changepoints structure such that the first component has changepoints in V1 and V2, the second component has changepoints in \code{V3}, and the third component has no changepoints. Then you would define \code{seg.Z = list(~V1+V2, ~V3, NULL)}. Note that you MUST place the variables in order with respect to how they appear in the predictor matrix \code{x}. \code{psi} is a kxp matrix specifying the number of changepoints for each predictor in each component. For the example given above, suppose there are three changepoints for \code{V1}, two changepoints for \code{V2}, and four changepoints for \code{V3}. Then you would define \code{psi = rbind(c(3, 2, 0), c(0, 0, 4), c(0, 0, 0))}. \code{psi.locs} is a list of length k whose elements give the initial locations of the changepoints for each component. Each element of the list must have length equal to the total number of changepoints for that component's regression equation. For the example given above, in component 1, assume that the three changepoints for \code{V1} are at 3, 7, and 10 and the two changepoints for \code{V1} are at 5, 20, and 30. In component 2, assume that the four changepoints for \code{V3} are at 2, 4, 6, and 8. Then you would define \code{psi.locs = list(c(3, 7, 10, 5, 20, 30), c(2, 4, 6, 8), NULL)}. Note that the order of the changepoints is determined by first sorting the predictors by how they appear in the formulas in \code{seg.Z} and then sorting in increasing order within each predictor. } \seealso{ \code{\link{regmixEM}} } \references{ Young, D. S. (2014) Mixtures of Regressions with Changepoints, \emph{Statistics and Computing}, \bold{24(2)}, 265--281. } \note{ As of version 0.4.6, this more general function has replaced the now defunct \code{regmixEM.chgpt} and associated internal functions. } \examples{ \dontrun{ ## Simulated example. set.seed(100) x <- 1:20 y1 <- 3 + x + rnorm(20) y2 <- 3 - x - 5*(x - 15)*(x > 15) + rnorm(20) y <- c(y1, y2) x <- c(x, x) set.seed(100) be <- list(c(3, -1, -5), c(3, 1)) s <- c(1, 1) psi.locs <- list(comp.1 = list(x = 15), comp.2 = NULL) out <- segregmixEM(y, cbind(1,x), verb = TRUE, k = 2, beta = be, sigma = s, lambda = c(1, 1)/2, seg.Z = list(~x, NULL), psi = rbind(1, 0), psi.locs = psi.locs, epsilon = 0.9) z <- seq(0, 21, len = 40) plot(x, y, col = apply(out$post, 1, which.max) + 1, pch = 19, cex.lab = 1.4, cex = 1.4) b <- out$beta d <- out$psi.locs lines(z, b[[1]][1] + b[[1]][2] * z + b[[1]][3] * (z - d[[1]][[1]]) * (z > d[[1]][[1]]) , col = 2, lwd = 2) lines(z, b[[2]][1] + b[[2]][2] * z, col = 3, lwd = 2) abline(v = out$psi.locs[[1]][1], col = 2, lty = 2) } \dontrun{ ## Example using the NOdata. data(NOdata) attach(NOdata) set.seed(100) be <- list(c(1.30, -0.13, 0.08), c(0.56, 0.09)) s <- c(0.02, 0.04) psi.locs <- list(comp.1 = list(NO = 1.57), comp.2 = NULL) out <- segregmixEM(Equivalence, cbind(NO), verb = TRUE, k = 2, beta = be, sigma = s, lambda = c(1, 1)/2, seg.Z = list(~NO, NULL), psi = rbind(1, 0), psi.locs = psi.locs, epsilon = 0.1) z <- seq(0, 5, len = 1000) plot(NOdata, col = apply(out$post, 1, which.max) + 1, pch = 19, cex.lab = 1.4, cex = 1.4, ylab = "Equivalence Ratio") b <- out$beta d <- out$psi.locs lines(z, b[[1]][1] + b[[1]][2] * z + b[[1]][3] * (z - d[[1]][[1]]) * (z > d[[1]][[1]]) , col = 2, lwd = 2) lines(z, b[[2]][1] + b[[2]][2] * z, col = 3, lwd = 2) abline(v = out$psi.locs[[1]][1], col = 2, lty = 2) detach(NOdata) } } \keyword{file} mixtools/man/regmixEM.loc.Rd0000755000175100001440000000723412122214260015502 0ustar hornikusers\name{regmixEM.loc} \title{Iterative Algorithm Using EM Algorithm for Mixtures of Regressions with Local Lambda Estimates} \alias{regmixEM.loc} \usage{ regmixEM.loc(y, x, lambda = NULL, beta = NULL, sigma = NULL, k = 2, addintercept = TRUE, kern.l = c("Gaussian", "Beta", "Triangle", "Cosinus", "Optcosinus"), epsilon = 1e-08, maxit = 10000, kernl.g = 0, kernl.h = 1, verb = FALSE) } \description{ Iterative algorithm returning EM algorithm output for mixtures of multiple regressions where the mixing proportions are estimated locally. } \arguments{ \item{y}{An n-vector of response values.} \item{x}{An nxp matrix of predictors. See \code{addintercept} below.} \item{lambda}{An nxk matrix of initial local values of mixing proportions. Entries should sum to 1. This determines number of components. If NULL, then \code{lambda} is simply one over the number of components.} \item{beta}{Initial global values of \code{beta} parameters. Should be a pxk matrix, where p is the number of columns of x and \code{k} is number of components. If NULL, then \code{beta} has uniform standard normal entries. If both \code{lambda} and \code{beta} are NULL, then number of components is determined by \code{sigma}.} \item{sigma}{A k-vector of initial global values of standard deviations. If NULL, then \eqn{1/\code{sigma}^2} has random standard exponential entries. If \code{lambda}, \code{beta}, and \code{sigma} are NULL, then number of components determined by \code{k}.} \item{k}{Number of components. Ignored unless all of \code{lambda}, \code{beta}, and \code{sigma} are NULL.} \item{addintercept}{If TRUE, a column of ones is appended to the x matrix before the value of p is calculated.} \item{kern.l}{The type of kernel to use in the local estimation of \code{lambda}.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{kernl.g}{A shape parameter required for the symmetric beta kernel for local estimation of \code{lambda}. The default is g = 0 which yields the uniform kernel. Some common values are g = 1 for the Epanechnikov kernel, g = 2 for the biweight kernel, and g = 3 for the triweight kernel.} \item{kernl.h}{The bandwidth controlling the size of the window used in the local estimation of lambda around x.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{regmixEM.loc} returns a list of class \code{mixEM} with items: \item{x}{The set of predictors (which includes a column of 1's if \code{addintercept} = TRUE).} \item{y}{The response values.} \item{lambda.x}{The final local mixing proportions.} \item{beta}{The final global regression coefficients.} \item{sigma}{The final global standard deviations.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{regmixEM.lambda}} } \examples{ ## Compare a 2-component and 3-component fit to NOdata. data(NOdata) attach(NOdata) set.seed(100) out1 <- regmixEM.loc(Equivalence, NO, kernl.h = 2, epsilon = 1e-02, verb = TRUE) out2 <- regmixEM.loc(Equivalence, NO, kernl.h = 2, k = 3, epsilon = 1e-02, verb = TRUE) c(out1$loglik, out2$loglik) } \keyword{file} mixtools/man/matsqrt.Rd0000755000175100001440000000076512122212260014704 0ustar hornikusers\name{matsqrt} \title{Calculates the Square Root of a Diagonalizable Matrix} \alias{matsqrt} \usage{ matsqrt(x) } \description{ Returns the square root of a diagonalizable matrix. } \arguments{ \item{x}{An nxn diagonalizable matrix.} } \value{ \code{matsqrt} returns the square root of \code{x}. } \details{ This function is called by \code{regcr}. } \seealso{ \code{\link{regcr}} } \examples{ a <- matrix(c(1, -0.2, -0.2, 1), 2, 2) matsqrt(a) } \keyword{internal} mixtools/man/npEM.Rd0000755000175100001440000001361012514002272014046 0ustar hornikusers\name{npEM} \title{Nonparametric EM-like Algorithm for Mixtures of Independent Repeated Measurements} \alias{npEM} \alias{npEMindrep} \alias{npEMindrepbw} \usage{ npEM(x, mu0, blockid = 1:ncol(x), bw = bw.nrd0(as.vector(as.matrix(x))), samebw = TRUE, h = bw, eps = 1e-8, maxiter = 500, stochastic = FALSE, verb = TRUE) } \description{ Returns nonparametric EM algorithm output (Benaglia et al, 2009) for mixtures of multivariate (repeated measures) data where the coordinates of a row (case) in the data matrix are assumed to be independent, conditional on the mixture component (subpopulation) from which they are drawn. } \arguments{ \item{x}{An \eqn{n\times r}{n x r} matrix of data. Each of the \eqn{n} rows is a case, and each case has \eqn{r} repeated measurements. These measurements are assumed to be conditionally independent, conditional on the mixture component (subpopulation) from which the case is drawn.} \item{mu0}{Either an \eqn{m\times r}{m x r} matrix specifying the initial centers for the \link{kmeans} function, or an integer \eqn{m} specifying the number of initial centers, which are then choosen randomly in \link{kmeans}} \item{blockid}{A vector of length \eqn{r} identifying coordinates (columns of \code{x}) that are assumed to be identically distributed (i.e., in the same block). For instance, the default has all distinct elements, indicating that no two coordinates are assumed identically distributed and thus a separate set of \eqn{m} density estimates is produced for each column of \eqn{x}. On the other hand, if \code{blockid=rep(1,ncol(x))}, then the coordinates in each row are assumed conditionally i.i.d.} \item{bw}{Bandwidth for density estimation, equal to the standard deviation of the kernel density. By default, a simplistic application of the default \code{\link{bw.nrd0}} bandwidth used by \code{\link{density}} to the entire dataset.} \item{samebw}{Logical: If \code{TRUE}, use the same bandwidth for each iteration and for each component and block. If \code{FALSE}, use a separate bandwidth for each component and block, and update this bandwidth at each iteration of the algorithm using a suitably modified \code{\link{bw.nrd0}} method as described in Benaglia et al (2011).} \item{h}{Alternative way to specify the bandwidth, to provide backward compatibility.} \item{eps}{Tolerance limit for declaring algorithm convergence. Convergence is declared whenever the maximum change in any coordinate of the \code{lambda} vector (of mixing proportion estimates) does not exceed \code{eps}.} \item{maxiter}{The maximum number of iterations allowed, for both stochastic and non-stochastic versions; for non-stochastic algorithms (\code{stochastic = FALSE}), convergence may be declared before \code{maxiter} iterations (see \code{eps} above).} \item{stochastic}{Flag, if FALSE (the default), runs the non-stochastic version of the npEM algorithm, as in Benaglia et al (2009). Set to TRUE to run a stochastic version which simulates the posteriors at each iteration, and runs for \code{maxiter} iterations.} \item{verb}{If TRUE, print updates for every iteration of the algorithm as it runs} } \value{ \code{npEM} returns a list of class \code{npEM} with the following items: \item{data}{The raw data (an \eqn{n\times r}{n x r} matrix).} \item{posteriors}{An \eqn{n\times m}{n x m} matrix of posterior probabilities for observation. If \code{stochastic = TRUE}, this matrix is computed from an average over the \code{maxiter} iterations.} \item{bandwidth}{If \code{samebw==TRUE}, same as the \code{bw} input argument; otherwise, value of \code{bw} matrix at final iteration. This information is needed by any method that produces density estimates from the output.} \item{blockid}{Same as the \code{blockid} input argument, but recoded to have positive integer values. Also needed by any method that produces density estimates from the output.} \item{lambda}{The sequence of mixing proportions over iterations.} \item{lambdahat}{The final mixing proportions if \code{stochastic = FALSE}, or the average mixing proportions if \code{stochastic = TRUE}.} \item{loglik}{The sequence of log-likelihoods over iterations.} } \seealso{ \code{\link{plot.npEM}}, \code{\link{normmixrm.sim}}, \code{\link{spEMsymloc}}, \code{\link{spEM}}, \code{\link{plotseq.npEM}} } \references{ \itemize{ \item Benaglia, T., Chauveau, D., and Hunter, D. R. (2009), An EM-like algorithm for semi- and non-parametric estimation in multivariate mixtures, Journal of Computational and Graphical Statistics, 18, 505-526. \item Benaglia, T., Chauveau, D., Hunter, D. R., and Young, D. (2009), mixtools: An R package for analyzing finite mixture models. Journal of Statistical Software, 32(6):1-29. \item Benaglia, T., Chauveau, D. and Hunter, D.R. (2011), Bandwidth Selection in an EM-like algorithm for nonparametric multivariate mixtures. Nonparametric Statistics and Mixture Models: A Festschrift in Honor of Thomas P. Hettmansperger. World Scientific Publishing Co., pages 15-27. \item Bordes, L., Chauveau, D., and Vandekerkhove, P. (2007), An EM algorithm for a semiparametric mixture model, Computational Statistics and Data Analysis, 51: 5429-5443. } } \examples{ ## Examine and plot water-level task data set. ## First, try a 3-component solution where no two coordinates are ## assumed i.d. data(Waterdata) set.seed(100) \dontrun{ a <- npEM(Waterdata[,3:10], mu0=3, bw=4) # Assume indep but not iid plot(a) # This produces 8 plots, one for each coordinate } ## Next, same thing but pairing clock angles that are directly opposite one ## another (1:00 with 7:00, 2:00 with 8:00, etc.) \dontrun{ b <- npEM(Waterdata[,3:10], mu0=3, blockid=c(4,3,2,1,3,4,1,2), bw=4) # iid in pairs plot(b) # Now only 4 plots, one for each block } } \keyword{file} mixtools/man/plotweibullRMM.Rd0000644000175100001440000000475513055603106016140 0ustar hornikusers\name{plotweibullRMM} \alias{plotweibullRMM} %- Also NEED an '\alias' for EACH other topic documented here. \title{Plot sequences from the Stochastic EM algorithm for mixture of Weibull } \description{Function for plotting sequences of estimates along iterations, from an object returned by \code{\link{weibullRMM_SEM}}, a Stochastic EM algorithm for mixture of Weibull distributions with randomly right censored data (see reference below). } \usage{ plotweibullRMM(a, title = NULL, rowstyle = TRUE, subtitle = NULL, ...) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{a}{An object returned by \code{\link{weibullRMM_SEM}}.} \item{title}{The title of the plot, set to some default value if \code{NULL}.} \item{rowstyle}{Window organization, for plots in rows (the default) or columns.} \item{subtitle}{A subtitle for the plot, set to some default value if \code{NULL}.} \item{...}{Other parameters (such as \code{lwd}) passed to \code{plot}, \code{lines}, and \code{legend} commands.} } \value{The plot returned} \seealso{ Related functions: \code{\link{weibullRMM_SEM}}, \code{\link{summary.mixEM}}. Other models and algorithms for censored lifetime data (name convention is model_algorithm): \code{\link{expRMM_EM}}, \code{\link{spRMM_SEM}} . } \references{ \itemize{ \item Bordes, L., and Chauveau, D. (2016), Stochastic EM algorithms for parametric and semiparametric mixture models for right-censored lifetime data, Computational Statistics, Volume 31, Issue 4, pages 1513-1538. \url{http://link.springer.com/article/10.1007/s00180-016-0661-7} } } \author{Didier Chauveau} %% ~Make other sections like Warning with \section{Warning }{....} ~ \examples{ n = 500 # sample size m = 2 # nb components lambda=c(0.4, 0.6) shape <- c(0.5,5); scale <- c(1,20) # model parameters set.seed(321) x <- rweibullmix(n, lambda, shape, scale) # iid ~ weibull mixture cs=runif(n,0,max(x)+10) # iid censoring times t <- apply(cbind(x,cs),1,min) # censored observations d <- 1*(x <= cs) # censoring indicator ## set arbitrary or "reasonable" (e.g., data-driven) initial values l0 <- rep(1/m,m); sh0 <- c(1, 2); sc0 <- c(2,10) # Stochastic EM algorithm a <- weibullRMM_SEM(t, d, lambda = l0, shape = sh0, scale = sc0, maxit = 200) summary(a) # Parameters estimates etc plotweibullRMM(a) # default plot of St-EM sequences %%\dontrun{ %%} } % Add one or more standard keywords, see file 'KEYWORDS' in the % R documentation directory. \keyword{file} mixtools/man/Habituationdata.Rd0000755000175100001440000000276711736707362016344 0ustar hornikusers\name{Habituationdata} \alias{Habituationdata} \docType{data} \title{Infant habituation data} \author{Hoben Thomas} \description{ From Thomas et al (2011): "Habituation is a standard method of studying infant behaviors. Indeed, much of what is known about infant memory and perception rests on habituation methods. Six-month infants (n = 51) were habituated to a checker-board pattern on two occasions, one week apart. On each occasion, the infant was presented with the checkerboard pattern and the length of time the infant viewed the pattern before disengaging was recorded; this denoted the end of a trial. After disengagement, another trial was presented. The procedure was implemented for eleven trials. The conventional index of habituation performance is the summed observed fixation to the checkerboard pattern over the eleven trials. Thus, an index of reliability focuses on how these fixation times, in seconds, on the two assessment occasions correlate: \eqn{r = .29}."} \usage{data(Habituationdata)} \format{A data frame with two variables, \code{m1} and \code{m2}, and 51 cases. The two variables are the summed observations times for the two occasions described above.} \source{ Original source: Thomas et al. (2011). See references section. } \references{ Thomas, H., Lohaus, A., and Domsch, H. (2011), Extensions of Reliability Theory, in Nonparametric Statistics and Mixture Models: A Festschrift in Honor of Thomas Hettmansperger (Singapore: World Scientific), pp. 309-316. } \keyword{datasets} mixtools/man/plotseq.npEM.Rd0000644000175100001440000000277613055031413015544 0ustar hornikusers\name{plotseq.npEM} \alias{plotseq.npEM} \title{Plotting sequences of estimates from non- or semiparametric EM-like Algorithm} \usage{ \method{plotseq}{npEM}(x, \dots) } \description{ Returns plots of the sequences of scalar parameter estimates along iterations from an object of class \code{npEM}. } \arguments{ \item{x}{an object of class \code{npEM}, as output by \code{\link{npEM}} or \code{\link{spEMsymloc}}} \item{\dots}{further parameters that are passed to \code{\link{plot}}} } \details{ \code{plotseq.npEM} returns a figure with one plot for each component proportion, and, in the case of \code{\link{spEMsymloc}}, one plot for each component mean. } \seealso{ \code{\link{plot.npEM}}, \code{\link{rnormmix}}, \code{\link{npEM}}, \code{\link{spEMsymloc}} } \references{ \itemize{ \item Benaglia, T., Chauveau, D., and Hunter, D. R. (2009), An EM-like algorithm for semi- and non-parametric estimation in multivariate mixtures, Journal of Computational and Graphical Statistics (to appear). \item Bordes, L., Chauveau, D., and Vandekerkhove, P. (2007), An EM algorithm for a semiparametric mixture model, Computational Statistics and Data Analysis, 51: 5429-5443. } } \examples{ ## Example from a normal location mixture n <- 200 set.seed(100) lambda <- c(1/3,2/3) mu <- c(0, 4); sigma<-rep(1, 2) x <- rnormmix(n, lambda, mu, sigma) b <- spEMsymloc(x, mu0=c(-1, 2), stochastic=FALSE) plotseq(b) bst <- spEMsymloc(x, mu0=c(-1, 2), stochastic=TRUE) plotseq(bst) } \keyword{file} mixtools/man/Waterdata.Rd0000755000175100001440000000667412263645472015157 0ustar hornikusers\name{Waterdata} \docType{data} \title{Water-Level Task Data Set} \alias{Waterdata} \alias{WaterdataFull} \usage{Waterdata} \description{ This data set arises from the water-level task proposed by the Swiss psychologist Jean Piaget to assess children's understanding of the physical world. This involves presenting a child with a rectangular vessel with a cap, affixed to a wall, that can be tilted (like the minute hand of a clock) to point in any direction. A separate disk with a water line indicated on it, which can similarly be spun so that the water line may assume any desired angle with the horizontal, is positioned so that by spinning this disk, the child subject may make the hypothetical surface of water inside the vessel assume any desired orientation. For each of eight different orientations of the vessel, corresponding to the clock angles at 1:00, 2:00, 4:00, 5:00, 7:00, 8:00, 10:00, and 11:00, the child subject is asked to position the water level as it would appear in reality if water were in the vessel. The measurement is the acute angle with the horizontal, in degrees, assumed by the water line after it is positioned by the child. A sign is attached to the measurement to indicate whether the line slopes up (positive) or down (negative) from left to right. Thus, each child has 8 repeated measurements, one for each vessel angle, and the range of possible values are from -90 to 90. The setup of the experiment, along with a photograph of the testing apparatus, is given by Thomas and Jamison (1975). A more detailed analysis using a subset of 405 of the original 579 subjects is given by Thomas and Lohaus (1993); further analyses using the functions in \code{mixtools} are given by Benaglia et al (2008) and Levine et al (2011), among others. There are two versions of the dataset included in \code{mixtools}. The full dataset, called \code{WaterdataFull}, has 579 individuals. The dataset called \code{Waterdata} is a subset of 405 individuals, comprising all children aged 11 years or more and omitting any individuals with any observations equal to 100, which in this context indicates a missing value (since all of the degree measurements should be in the range from -90 to +90, 100 is not a possible value). } \format{These data frames consist of 405 or 579 rows, one row for each child. There are ten columns: The age (in years) and sex (where 1=male and 0=female) are given for each individual along with the degree of deviation from the horizontal for 8 specified clock-hour orientations (11, 4, 2, 7, 10, 5, 1, and 8 o'clock, in order). } \source{ Benaglia, T., Chauveau, D., and Hunter, D.R. (2009), An EM-Like Algorithm for Semi- and Non-Parametric Estimation in Multivariate Mixtures, \emph{Journal of Computational and Graphical Statistics}, 18: 505-526. Levine, M., Hunter, D.R., and Chauveau, D. (2011), Maximum Smoothed Likelihood for Multivariate Mixtures, \emph{Biometrika}, 98(2): 403-416. Thomas, H. and Jamison, W. (1975), On the Acquisition of Understanding that Still Water is Horizontal, \emph{Merrill-Palmer Quarterly of Behavior and Development}, 21(1): 31-44. Thomas, H. and Lohaus, A. (1993), \emph{Modeling Growth and Individual Differences in Spatial Tasks}, University of Chicago Press, Chicago, available on JSTOR. } \keyword{datasets} mixtools/man/regmixEM.mixed.Rd0000755000175100001440000001272412644763360016056 0ustar hornikusers\name{regmixEM.mixed} \title{EM Algorithm for Mixtures of Regressions with Random Effects} \alias{regmixEM.mixed} \usage{ regmixEM.mixed(y, x, w = NULL, sigma = NULL, arb.sigma = TRUE, alpha = NULL, lambda = NULL, mu = NULL, rho = NULL, R = NULL, arb.R = TRUE, k = 2, ar.1 = FALSE, addintercept.fixed = FALSE, addintercept.random = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) } \description{ Returns EM algorithm output for mixtures of multiple regressions with random effects and an option to incorporate fixed effects and/or AR(1) errors. } \arguments{ \item{y}{A list of N response trajectories with (possibly) varying dimensions of length \eqn{n_i}.} \item{x}{A list of N design matrices of dimensions \eqn{(n_i)\times p}{(n_i) x p}. Each trajectory in y has its own design matrix.} \item{w}{A list of N known explanatory variables having dimensions \eqn{(n_i)\times q}{(n-1) x q}. If \code{mixed} = FALSE, then \code{w} is replaced by a list of N zeros.} \item{sigma}{A vector of standard deviations. If NULL, then \eqn{1/s^2} has random standard exponential entries according to a binning method done on the data.} \item{arb.sigma}{If TRUE, then \code{sigma} is k-dimensional. Else a common standard deviation is assumed.} \item{alpha}{A q-vector of unknown regression parameters for the fixed effects. If NULL and \code{mixed} = TRUE, then \code{alpha} is random from a normal distribution with mean and variance according to a binning method done on the data. If \code{mixed} = FALSE, then \code{alpha} = 0.} \item{lambda}{Initial value of mixing proportions for the assumed mixture structure on the regression coefficients. Entries should sum to 1. This determines number of components. If NULL, then \code{lambda} is random from uniform Dirichlet and the number of components is determined by \code{mu}.} \item{mu}{A pxk matrix of the mean for the mixture components of the random regression coefficients. If NULL, then the columns of \code{mu} are random from a multivariate normal distribution with mean and variance determined by a binning method done on the data.} \item{rho}{An Nxk matrix giving initial values for the correlation term in an AR(1) process. If NULL, then these values are simulated from a uniform distribution on the interval (-1, 1).} \item{R}{A list of N pxp covariance matrices for the mixture components of the random regression coefficients. If NULL, then each matrix is random from a standard Wishart distribution according to a binning method done on the data.} \item{arb.R}{If TRUE, then \code{R} is a list of N pxp covariance matrices. Else, one common covariance matrix is assumed.} \item{k}{Number of components. Ignored unless \code{lambda} is NULL.} \item{ar.1}{If TRUE, then an AR(1) process on the error terms is included. The default is FALSE.} \item{addintercept.fixed}{If TRUE, a column of ones is appended to the matrices in w.} \item{addintercept.random}{If TRUE, a column of ones is appended to the matrices in x before p is calculated.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{regmixEM} returns a list of class \code{mixEM} with items: \item{x}{The predictor values corresponding to the random effects.} \item{y}{The response values.} \item{w}{The predictor values corresponding to the (optional) fixed effects.} \item{lambda}{The final mixing proportions.} \item{mu}{The final mean vectors.} \item{R}{The final covariance matrices.} \item{sigma}{The final component error standard deviations.} \item{alpha}{The final regression coefficients for the fixed effects.} \item{rho}{The final error correlation values if an AR(1) process is included.} \item{loglik}{The final log-likelihood.} \item{posterior.z}{An Nxk matrix of posterior membership probabilities.} \item{posterior.beta}{A list of N pxk matrices giving the posterior regression coefficient values.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{regmixEM}}, \code{\link{post.beta}} } \references{ Xu, W. and Hedeker, D. (2001) A Random-Effects Mixture Model for Classifying Treatment Response in Longitudinal Clinical Trials, \emph{Journal of Biopharmaceutical Statistics}, \bold{11(4)}, 253--273. Young, D. S. and Hunter, D. R. (2015) Random Effects Regression Mixtures for Analyzing Infant Habituation, \emph{Journal of Applied Statistics}, \bold{42(7)}, 1421--1441. } \examples{ ## EM output for simulated data from 2-component mixture of random effects. data(RanEffdata) set.seed(100) x <- lapply(1:length(RanEffdata), function(i) matrix(RanEffdata[[i]][, 2:3], ncol = 2)) x <- x[1:20] y <- lapply(1:length(RanEffdata), function(i) matrix(RanEffdata[[i]][, 1], ncol = 1)) y <- y[1:20] lambda <- c(0.45, 0.55) mu <- matrix(c(0, 4, 100, 12), 2, 2) sigma <- 2 R <- list(diag(1, 2), diag(1, 2)) em.out <- regmixEM.mixed(y, x, sigma = sigma, arb.sigma = FALSE, lambda = lambda, mu = mu, R = R, addintercept.random = FALSE, epsilon = 1e-02, verb = TRUE) em.out[4:10] } \keyword{file} mixtools/man/spEMsymloc.Rd0000644000175100001440000000773412644764321015327 0ustar hornikusers\name{spEMsymloc} \title{Semiparametric EM-like Algorithm for univariate symmetric location mixture} \alias{spEMsymloc} \usage{ spEMsymloc(x, mu0, bw = bw.nrd0(x), h=bw, eps = 1e-8, maxiter = 100, stochastic = FALSE, verbose = FALSE) } \description{ Returns semiparametric EM algorithm output (Bordes et al, 2007, and Benaglia et al, 2009) for location mixtures of univariate data and symmetric component density. } \arguments{ \item{x}{A vector of length \eqn{n}{n} consisting of the data.} \item{mu0}{Either a vector specifying the initial centers for the \link{kmeans} function, and from which the number of component is obtained, or an integer \eqn{m} specifying the number of initial centers, which are then choosen randomly in \link{kmeans}.} \item{bw}{Bandwidth for density estimation, equal to the standard deviation of the kernel density.} \item{h}{Alternative way to specify the bandwidth, to provide backward compatibility.} \item{eps}{Tolerance limit for declaring algorithm convergence. Convergence is declared before \code{maxiter} iterations whenever the maximum change in any coordinate of the \code{lambda} (mixing proportion estimates) and \code{mu} (means) vector does not exceed \code{eps}.} \item{maxiter}{The maximum number of iterations allowed, for both stochastic and non-stochastic versions; for non-stochastic algorithms (\code{stochastic = FALSE}), convergence may be declared before \code{maxiter} iterations (see \code{eps} above).} \item{stochastic}{Flag, if FALSE (the default), runs the non-stochastic version of the algorithm, as in Benaglia et al (2009). Set to TRUE to run a stochastic version which simulates the posteriors at each iteration (as in Bordes et al, 2007), and runs for \code{maxiter} iterations.} \item{verbose}{If TRUE, print updates for every iteration of the algorithm as it runs} } \value{ \code{spEMsymloc} returns a list of class \code{npEM} with the following items: \item{data}{The raw data (an \eqn{n\times r}{n x r} matrix).} \item{posteriors}{An \eqn{n\times m}{n x m} matrix of posterior probabilities for observations. If \code{stochastic = TRUE}, this matrix is computed from an average over the \code{maxiter} iterations.} \item{bandwidth}{Same as the \code{bw} input argument, returned because this information is needed by any method that produces density estimates from the output.} \item{lambda}{The sequence of mixing proportions over iterations.} \item{lambdahat}{The final estimate for mixing proportions if \code{stochastic = FALSE}, the average over the sequence if \code{stochastic = TRUE}.} \item{mu}{the sequence of component means over iterations.} \item{muhat}{the final estimate of component means if \code{stochastic = FALSE}, the average over the sequence if \code{stochastic = TRUE}.} \item{symmetric}{Flag indicating that the kernel density estimate is using a symmetry assumption.} } \seealso{ \code{\link{plot.npEM}}, \code{\link{rnormmix}}, \code{\link{npEM}}, \code{\link{spEMsymlocN01}}, \code{\link{plotseq.npEM}} } \references{ \itemize{ \item Benaglia, T., Chauveau, D., and Hunter, D. R., An EM-like algorithm for semi- and non-parametric estimation in multivariate mixtures, Journal of Computational and Graphical Statistics, 18, 505-526, 2009. \item Benaglia, T., Chauveau, D., Hunter, D. R., and Young, D. mixtools: An R package for analyzing finite mixture models. Journal of Statistical Software, 32(6):1-29, 2009. \item Bordes, L., Chauveau, D., and Vandekerkhove, P. (2007), An EM algorithm for a semiparametric mixture model, Computational Statistics and Data Analysis, 51: 5429-5443. } } \examples{ ## Example from a normal location mixture set.seed(100) n <- 200 lambda <- c(1/3,2/3) mu <- c(0, 4); sigma<-rep(1, 2) x <- rnormmix(n, lambda, mu, sigma) out.stoc <- spEMsymloc(x, mu0=c(-1, 2), stochastic=TRUE) out.nonstoc <- spEMsymloc(x, mu0=c(-1, 2)) } \keyword{file} mixtools/man/dmvnorm.Rd0000755000175100001440000000235411736707362014715 0ustar hornikusers\name{dmvnorm} \alias{dmvnorm} \alias{logdmvnorm} \title{The Multivariate Normal Density} \description{ Density and log-density for the multivariate normal distribution with mean equal to \code{mu} and variance matrix equal to \code{sigma}. } \usage{ dmvnorm(y, mu=NULL, sigma=NULL) logdmvnorm(y, mu=NULL, sigma=NULL) } \arguments{ \item{y}{Either a \eqn{d} - vector or an \eqn{n\times d}{n x d} matrix, where \eqn{d} is the dimension of the normal distribution and \eqn{n} is the number of points at which the density is to be evaluated.} \item{mu}{\eqn{d} - vector: Mean of the normal distribution (or NULL uses the origin as default)} \item{sigma}{This \eqn{d\times d}{d x d} matrix is the variance matrix of the normal distribution (or NULL uses the identity matrix as default)} } \value{ \code{dmvnorm} gives the densities, while \code{logdmvnorm} gives the logarithm of the densities. } \details{ This code is written to be efficient, using the qr-decomposition of the covariance matrix (and using it only once, rather than recalculating it for both the determinant and the inverse of \code{sigma}). } \seealso{ \code{\link{qr}}, \code{\link{qr.solve}}, \code{\link{dnorm}}, \code{\link{rmvnorm}} } \keyword{distribution} mixtools/man/regcr.Rd0000755000175100001440000000652012122214144014311 0ustar hornikusers\name{regcr} \title{Add a Confidence Region or Bayesian Credible Region for Regression Lines to a Scatterplot} \alias{regcr} \usage{ regcr(beta, x, em.beta = NULL, em.sigma = NULL, alpha = .05, nonparametric = FALSE, plot = FALSE, xyaxes = TRUE, ...) } \description{ Produce a confidence or credible region for regression lines based on a sample of bootstrap beta values or posterior beta values. The beta parameters are the intercept and slope from a simple linear regression. } \arguments{ \item{beta}{An nx2 matrix of regression parameters. The first column gives the intercepts and the second column gives the slopes.} \item{x}{An n-vector of the predictor variable which is necessary when nonparametric = TRUE.} \item{em.beta}{The estimates for beta required when obtaining confidence regions. This is required for performing the standardization necessary when obtaining nonparametric confidence regions.} \item{em.sigma}{The estimates for the regression standard deviation required when obtaining confidence regions. This is required for performing the standardization necessary when obtaining nonparametric confidence regions.} \item{alpha}{The proportion of the beta sample to remove. In other words, 1-alpha is the level of the credible region.} \item{nonparametric}{ If nonparametric = TRUE, then the region is based on the convex hull of the remaining beta after trimming, which is accomplished using a data depth technique. If nonparametric = FALSE, then the region is based on the asymptotic normal approximation.} \item{plot}{If plot = TRUE, lines are added to the existing plot. The type of plot created depends on the value of xyaxes.} \item{xyaxes}{If xyaxes = TRUE and plot = TRUE, then a confidence or credible region for the regression lines is plotted on the x-y axes, presumably overlaid on a scatterplot of the data. If xyaxes = FALSE and plot = TRUE, the (convex) credible region for the regression line is plotted on the beta, or intercept-slope, axes, presumably overlaid on a scatterplot of beta.} \item{...}{Graphical parameters passed to \code{lines} or \code{plot} command.} } \value{ \code{regcr} returns a list containing the following items: \item{boundary}{A matrix of points in beta, or intercept-slope, space arrayed along the boundary of the confidence or credible region.} \item{upper}{A matrix of points in x-y space arrayed along the upper confidence or credible limit for the regression line.} \item{lower}{A matrix of points in x-y space arrayed along the lower confidence or credible limit for the regression line.} } \seealso{ \code{\link{regmixEM}}, \code{\link{regmixMH}} } \examples{ ## Nonparametric credible regions fit to NOdata. data(NOdata) attach(NOdata) set.seed(100) beta <- matrix(c(1.3, -0.1, 0.6, 0.1), 2, 2) sigma <- c(.02, .05) MH.out <- regmixMH(Equivalence, NO, beta = beta, s = sigma, sampsize = 2500, omega = .0013) attach(data.frame(MH.out$theta)) beta.c1 <- cbind(beta0.1[2400:2499], beta1.1[2400:2499]) beta.c2 <- cbind(beta0.2[2400:2499], beta1.2[2400:2499]) plot(NO, Equivalence) regcr(beta.c1, x = NO, nonparametric = TRUE, plot = TRUE, col = 2) regcr(beta.c2, x = NO, nonparametric = TRUE, plot = TRUE, col = 3) } \keyword{file} mixtools/man/mvnormalmixEM.Rd0000755000175100001440000000704412122212544016006 0ustar hornikusers\name{mvnormalmixEM} \title{EM Algorithm for Mixtures of Multivariate Normals} \alias{mvnormalmixEM} \usage{ mvnormalmixEM(x, lambda = NULL, mu = NULL, sigma = NULL, k = 2, arbmean = TRUE, arbvar = TRUE, epsilon = 1e-08, maxit = 10000, verb = FALSE) } \description{ Return EM algorithm output for mixtures of multivariate normal distributions. } \arguments{ \item{x}{A matrix of size nxp consisting of the data.} \item{lambda}{Initial value of mixing proportions. Entries should sum to 1. This determines number of components. If NULL, then \code{lambda} is random from uniform Dirichlet and number of components is determined by \code{mu}.} \item{mu}{A list of size k consisting of initial values for the p-vector mean parameters. If NULL, then the vectors are generated from a normal distribution with mean and standard deviation according to a binning method done on the data. If both \code{lambda} and \code{mu} are NULL, then number of components is determined by \code{sigma}.} \item{sigma}{A list of size k consisting of initial values for the pxp variance-covariance matrices. If NULL, then \code{sigma} is generated using the data. If \code{lambda}, \code{mu}, and \code{sigma} are NULL, then number of components is determined by \code{k}.} \item{k}{Number of components. Ignored unless \code{lambda}, \code{mu}, and \code{sigma} are all NULL.} \item{arbmean}{If TRUE, then the component densities are allowed to have different \code{mu}s. If FALSE, then a scale mixture will be fit.} \item{arbvar}{If TRUE, then the component densities are allowed to have different \code{sigma}s. If FALSE, then a location mixture will be fit.} \item{epsilon}{The convergence criterion.} \item{maxit}{The maximum number of iterations.} \item{verb}{If TRUE, then various updates are printed during each iteration of the algorithm.} } \value{ \code{normalmixEM} returns a list of class \code{mixEM} with items: \item{x}{The raw data.} \item{lambda}{The final mixing proportions.} \item{mu}{A list of with the final mean vectors.} \item{sigma}{A list with the final variance-covariance matrices.} \item{loglik}{The final log-likelihood.} \item{posterior}{An nxk matrix of posterior probabilities for observations.} \item{all.loglik}{A vector of each iteration's log-likelihood.} \item{restarts}{The number of times the algorithm restarted due to unacceptable choice of initial values.} \item{ft}{A character vector giving the name of the function.} } \seealso{ \code{\link{normalmixEM}} } \references{ McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley \& Sons, Inc. } \examples{ ##Fitting randomly generated data with a 2-component location mixture of bivariate normals. set.seed(100) x.1 <- rmvnorm(40, c(0, 0)) x.2 <- rmvnorm(60, c(3, 4)) X.1 <- rbind(x.1, x.2) mu <- list(c(0, 0), c(3, 4)) out.1 <- mvnormalmixEM(X.1, arbvar = FALSE, mu = mu, epsilon = 1e-02) out.1[2:5] ##Fitting randomly generated data with a 2-component scale mixture of bivariate normals. x.3 <- rmvnorm(40, c(0, 0), sigma = matrix(c(200, 1, 1, 150), 2, 2)) x.4 <- rmvnorm(60, c(0, 0)) X.2 <- rbind(x.3, x.4) lambda <- c(0.40, 0.60) sigma <- list(diag(1, 2), matrix(c(200, 1, 1, 150), 2, 2)) out.2 <- mvnormalmixEM(X.2, arbmean = FALSE, sigma = sigma, lambda = lambda, epsilon = 1e-02) out.2[2:5] } \keyword{file} mixtools/man/compCDF.Rd0000755000175100001440000000447212122210100014452 0ustar hornikusers\name{compCDF} \title{Plot the Component CDF} \alias{compCDF} \usage{ compCDF(data, weights, x=seq(min(data, na.rm=TRUE), max(data, na.rm=TRUE), len=250), comp=1:NCOL(weights), makeplot=TRUE, ...) } \description{ Plot the components' CDF via the posterior probabilities. } \arguments{ \item{data}{A matrix containing the raw data. Rows are subjects and columns are repeated measurements.} \item{weights}{The weights to compute the empirical CDF; however, most of time they are the posterior probabilities.} \item{x}{The points at which the CDFs are to be evaluated.} \item{comp}{The mixture components for which CDFs are desired.} \item{makeplot}{Logical: Should a plot be produced as a side effect?} \item{...}{Additional arguments (other than \code{lty} and \code{type}, which are already used) to be passed directly to \code{plot} and \code{lines} functions.} } \value{ A matrix with \code{length(comp)} rows and \code{length(x)} columns in which each row gives the CDF evaluated at each point of \code{x}. } \details{ When \code{makeplot} is \code{TRUE}, a line plot is produced of the CDFs evaluated at \code{x}. The plot is not a step function plot; the points \eqn{(x, CDF(x))} are simply joined by line segments. } \references{ McLachlan, G. J. and Peel, D. (2000) \emph{Finite Mixture Models}, John Wiley \& Sons, Inc. Elmore, R. T., Hettmansperger, T. P. and Xuan, F. (2004) The Sign Statistic, One-Way Layouts and Mixture Models, \emph{Statistical Science} \bold{19(4)}, 579--587. } \seealso{ \code{\link{makemultdata}}, \code{\link{multmixmodel.sel}}, \code{\link{multmixEM}}. } \examples{ ## The sulfur content of the coal seams in Texas set.seed(100) A <- c(1.51, 1.92, 1.08, 2.04, 2.14, 1.76, 1.17) B <- c(1.69, 0.64, .9, 1.41, 1.01, .84, 1.28, 1.59) C <- c(1.56, 1.22, 1.32, 1.39, 1.33, 1.54, 1.04, 2.25, 1.49) D <- c(1.3, .75, 1.26, .69, .62, .9, 1.2, .32) E <- c(.73, .8, .9, 1.24, .82, .72, .57, 1.18, .54, 1.3) dis.coal <- makemultdata(A, B, C, D, E, cuts = median(c(A, B, C, D, E))) temp <- multmixEM(dis.coal) ## Now plot the components' CDF via the posterior probabilities compCDF(dis.coal$x, temp$posterior, xlab="Sulfur", ylab="", main="empirical CDFs") } \keyword{file} mixtools/man/lambda.pert.Rd0000755000175100001440000000173612122211616015405 0ustar hornikusers\name{lambda.pert} \title{Perturbation of Mixing Proportions} \alias{lambda.pert} \usage{ lambda.pert(lambda, pert) } \description{ Perturbs a set of mixing proportions by first scaling the mixing proportions, then taking the logit of the scaled values, perturbing them, and inverting back to produce a set of new mixing proportions. } \arguments{ \item{lambda}{A vector of length k giving the mixing proportions which are to be perturbed.} \item{pert}{A vector (possibly of length k-1) for which to perturb \code{lambda}. If the length is less than k, then values of the vector are recycled. If length is greater than k, then only the first k values are used.} } \value{ \code{lambda.pert} returns new \code{lambda} values perturbed by \code{pert}. } \details{ This function is called by \code{regmixMH}. } \seealso{ \code{\link{regmixMH}} } \examples{ set.seed(100) x <- c(0.5, 0.2, 0.3) lambda.pert(x, rcauchy(3)) } \keyword{internal}