multcompView/0000755000176200001440000000000015144537041012751 5ustar liggesusersmultcompView/README0000644000176200001440000000055614414525367013646 0ustar liggesusers1. Put any C/C++/Fortran code in 'src' 2. If you have compiled code, add a .First.lib() function in 'R' to load the shared library 3. Edit the help file skeletons in 'man' 4. Run R CMD build to create the index files 5. Run R CMD check to check the package 6. Run R CMD build to make the package file Read "Writing R Extensions" for more information. multcompView/MD50000644000176200001440000000324315144537041013263 0ustar liggesusers4fc080e7a5ce0d176f3ae8e6f00d9545 *DESCRIPTION 8d38fc031a5468254212cf1db132ef17 *NAMESPACE 0da0e4ccf5042b120b974d0fa75843d8 *R/extract_p.R d87d2ed370569cc0ac2314842acfca7f *R/multcompBoxplot.R 3d7db0c69876c5055ec0e7d395bddc09 *R/multcompLetters.R f3ffb29139de0ed5b35da51b0e687c63 *R/multcompLetters2.R bf30220ebd681e3deb713bb4009e22ed *R/multcompLetters3.R dd820f0694cf2639612bc3497763cc7c *R/multcompLetters4.R 149a9f2ba890652e00380a29b8459dc0 *R/multcompTs.R 240af0c24be87c18724b33731c1f2314 *R/multcompView-package.R ae41acb58d2e01b54b8a1bb5063b20ba *R/plot.multcompLetters.R a4782a1926370b93f8c3e1287f86bb3e *R/plot.multcompTs.R 9454de82bc6b1201d71872a92a394658 *R/plotBoxes.R f9eacd6ba1cd57a639012c3524f9888f *R/plotLetters.R f94c777a2e3a863b1463744fdee8942b *R/plotTs.R 7ea0b252fa539464a7cf6b40b12718ba *R/print.multcompLetters.R d494a347a26b947624c92ba602402e93 *R/vec2mat.R 6e070b797eced6258c5c134e6ff79c4b *R/vec2mat2.R 23161c7eb305fec411df18388de0d35c *README 5474edcadd8b09248c9de2bbe788b896 *inst/extdata/VisualizingPairedComparisons.pdf 3d25390a1dbb27406054538ece014246 *man/extract_p.Rd 60818f377f16b7d7e5e18f700b8b3205 *man/multcompBoxplot.Rd 7a18f7308998939c5229c8251ccc7182 *man/multcompLetters.Rd 6799ca451a80074d2b05f40fe74738fb *man/multcompTs.Rd c61483827f646caa24e03be504bf74e4 *man/plot.multcompLetters.Rd 7e9f301eedce26ea3439f846415d1a14 *man/plot.multcompTs.Rd 53983b37a28602cfcccad779aaaa575f *man/plotBoxes.Rd 60174929fa46dd6c6832a953e88b4f09 *man/plotLetters.Rd bf6215fd2eaf2a4cc96e1cb34a9b5868 *man/plotTs.Rd 18565c85ccb345e977b157b0b926aae1 *man/print.multcompLetters.Rd 156387ebb60b98e61b307ff428980fd4 *man/vec2mat.Rd 04c1ff099b3c8930a85d7d099f46754d *man/vec2mat2.Rd multcompView/R/0000755000176200001440000000000015144410247013150 5ustar liggesusersmultcompView/R/multcompLetters.R0000644000176200001440000003534514571347663016526 0ustar liggesusers#' Letter summary of similarities and differences #' #' Convert a logical vector or a vector of p-values or a correlation or #' distance matrix into a character-based display in which common characters #' identify levels or groups that are not significantly different. Designed #' for use with the output of functions like TukeyHSD, diststats, simint, #' simtest, csimint, csimtestmultcomp, friedmanmc, kruskalmcpgirmess. #' #' Produces a "Letter-Based Representation of All- Pairwise Comparisons" as #' described by Piepho (2004). (The present algorithm does NOT perform his #' "sweeping" step.) \code{multcompLettersx} are wrapper of multcompLetters #' that will reorder the levels of the data so that the letters appear in a #' descending order of the mean. \code{mulcompletters3} is similar to #' \code{multcompletters2} except that it uses vector names to separate and the #' later has an formula interface. \code{multcompLetters4} will take a aov or #' lm object and a comparison test and will produce all the letters for the #' terms and interactions. #' #' @aliases multcompLetters multcompLetters2 multcompLetters3 multcompLetters4 #' @param x One of the following: (1) A square, symmetric matrix with row #' names. (2) A vector with hyphenated names, which identify individual items #' or factor levels after "strsplit". (3) An object of class "dist". If x (or #' x[1]) is not already of class "logical", it is replaced with #' do.call(compare, list(x, threshold)), which by default converts numbers #' (typically p-values) less than 0.05 to TRUE and everything else to FALSE. #' If x is a matrix, its diagonal must be or must convert to FALSE. #' @param compare function or binary operator; not used if class(x) is #' "logical". #' @param threshold Second (reference) argument to "compare". #' @param Letters Vector of distinct characters (or character strings) used to #' connect levels that are not significantly different. They should be #' recognizable when concatenated. The last element of "Letters" is used as a #' prefix for a reuse of "Letters" if more are needed than are provided. For #' example, with the default "Letters", if 53 distinct connection columns are #' required, they will be "a", ..., "z", "A", ..., "Z", and ".a". If 54 are #' required, the last one will be ".b". If 105 are required, the last one will #' be "..a", etc. (If the algorithm generates that many distinct groups, the #' display may be too busy to be useful, but the algorithm shouldn't break.) #' @param reversed A logical value indicating whether the order of the letters #' should be reversed. Defaults to FALSE. #' @param formula The formula used to make the test (lm, aov, glm, etc.). Like #' y ~ x. #' @param data Data used to make the test. #' @param y Value of the response variable. #' @param z Categorical variables used in the test. #' @param object An object of class aov or lm for the time being. #' @param comp A object with multiple comparison or a function name to perform #' a multiple comparison. #' @param ... Extra arguments passed to multcompLetters. #' @return An object of class 'multcompLetters', which is a list with the #' following components: \item{Letters }{character vector with names = the #' names of the levels or groups compared and with values = character strings #' in which common values of the function argument "Letters" identify levels or #' groups that are not significantly different (or more precisely for which the #' corresponding element of "x" was FALSE or was converted to FALSE by #' "compare"). } \item{monospacedLetters }{ Same as "Letters" but with spaces #' so the individual grouping letters will line up with a monospaced type font. #' } \item{LetterMatrix }{Logical matrix with one row for each level compared #' and one column for each "Letter" in the "letter-based representation". The #' output component "Letters" is obtained by concatenating the column names of #' all columns with TRUE in that row. } multcompLetters4 will return a named #' list with the terms containing a object of class 'multcompLetters' as #' produced by \code{multcompLetters}. #' @author Spencer Graves, Hans-Peter Piepho and Luciano Selzer #' @seealso \code{\link{multcompBoxplot}} \code{\link{plot.multcompLetters}} #' \code{\link{print.multcompLetters}} \code{\link{multcompTs}} #' \code{\link{vec2mat}} #' @references Piepho, Hans-Peter (2004) "An Algorithm for a Letter-Based #' Representation of All-Pairwise Comparisons", Journal of Computational and #' Graphical Statistics, 13(2)456-466. #' @keywords dplot #' @export #' @examples #' #' ## #' ## 1. a logical vector indicating signficant differences #' ## #' dif3 <- c(FALSE, FALSE, TRUE) #' names(dif3) <- c("A-B", "A-C", "B-C") #' dif3L <- multcompLetters(dif3) #' dif3L #' print(dif3L) #' print(dif3L, TRUE) #' #' ## #' ## 2. numeric vector indicating statistical significance #' ## #' dif4 <- c(.01, .02, .03, 1) #' names(dif4) <- c("a-b", "a-c", "b-d", "a-d") #' (diff4.T <- multcompLetters(dif4)) #' #' (dif4.L1 <- multcompLetters(dif4, #' Letters=c("*", "."))) #' # "Letters" can be any character strings, #' # but they should be recognizable when #' # concatenated. #' #' ## #' ## 3. distance matrix #' ## #' dJudge <- dist(USJudgeRatings) #' dJl <- multcompLetters(dJudge, compare='>', threshold = median(dJudge)) #' # comparison of 43 judges; compact but undecipherable: #' dJl #' #' x <- array(1:9, dim=c(3,3), #' dimnames=list(LETTERS[1:3], NULL) ) #' d3 <- dist(x) #' dxLtrs <- multcompLetters(d3, compare=">", threshold=2) #' #' d3d <- dist(x, diag=TRUE) #' dxdLtrs <- multcompLetters(d3d, compare=">", threshold=2) #' #' \dontshow{stopifnot(} #' all.equal(dxLtrs, dxdLtrs) #' \dontshow{)} #' #' d3u <- dist(x, upper=TRUE) #' dxuLtrs <- multcompLetters(d3d, compare=">", threshold=2) #' #' \dontshow{stopifnot(} #' all.equal(dxLtrs, dxuLtrs) #' \dontshow{)} #' #' ## #' ## 4. cor matrix #' ## #' set.seed(4) #' x100 <- matrix(rnorm(100), ncol=5, #' dimnames=list(NULL, LETTERS[1:5]) ) #' cx <- cor(x100) #' cxLtrs <- multcompLetters(abs(cx), threshold=.3) #' #' #' ## #' ##5. reversed #' ## #' #' dif3 <- c(FALSE, FALSE, TRUE) #' names(dif3) <- c("A-B", "A-C", "B-C") #' dif3L <- multcompLetters(dif3) #' dif3L.R <- multcompLetters(dif3, rev = TRUE) #' dif3L #' dif3L.R #' #' #' ## #' ##6. multcompletters2 usage #' #' experiment <- data.frame(treatments = gl(11, 20, labels = c("dtl", "ctrl", "treat1", #' "treat2", "treatA2", "treatB", "treatB2", #' "treatC", "treatD", "treatA1", "treatX")), #' y = c(rnorm(20, 10, 5), rnorm(20, 20, 5), rnorm(20, 22, 5), rnorm(20, 24, 5), #' rnorm(20, 35, 5), rnorm(20, 37, 5), rnorm(20, 40, 5), rnorm(20, 43, 5), #' rnorm(20, 45, 5), rnorm(20, 60, 5), rnorm(20, 60, 5))) #' exp_tukey <- TukeyHSD(exp_aov <- aov(y ~ treatments, data = experiment)) #' exp_letters1 <- multcompLetters(exp_tukey$treatments[,4]) #' exp_letters1 #' #Notice lowest mean treatments gets a "e" #' #Ordered letters #' multcompLetters2(y ~ treatments, exp_tukey$treatments[,"p adj"], experiment) #' multcompLetters2(y ~ treatments, exp_tukey$treatments[,"p adj"], experiment, reversed = TRUE) #' #' ##7. multcompletters3 usage #' #' multcompLetters3("treatments", "y", exp_tukey$treatments[,"p adj"], experiment) #' #' ##8. multcompletters4 usage #' #' #' multcompLetters4(exp_aov, exp_tukey) #' #' "multcompLetters" <- function(x, compare="<", threshold=0.05, Letters=c(letters, LETTERS, "."), reversed = FALSE){ ## ## 1. Covert to logical ## x.is <- deparse(substitute(x)) if(any(class(x)=="dist"))x <- as.matrix(x) if(!is.logical(x)) x <- do.call(compare, list(x, threshold)) ## ## 2. Create array of distinct pairs ## dimx <- dim(x) { if((length(dimx)==2) && (dimx[1]==dimx[2])){ Lvls <- dimnames(x)[[1]] if(length(Lvls)!=dimx[1]) stop("Names requred for ", x.is) else{ # Create a matrix with 2 columns # with the names of all pairs x2. <- t(outer(Lvls, Lvls, paste, sep="")) x2.n <- outer(Lvls, Lvls, function(x1, x2)nchar(x2)) x2.2 <- x2.[lower.tri(x2.)] x2.2n <- x2.n[lower.tri(x2.n)] x2a <- substring(x2.2, 1, x2.2n) x2b <- substring(x2.2, x2.2n+1) x2 <- cbind(x2a, x2b) x <- x[lower.tri(x)] } } else{ namx <- names(x) if(length(namx)!=length(x)) stop("Names required for ", x.is) x2 <- vec2mat2(namx) Lvls <- unique(as.vector(x2)) } } ## ## 3. Find the names of the levels ## n <- length(Lvls) # Generate an initial column LetMat <- array(TRUE, dim=c(n, 1), dimnames=list(Lvls, NULL)) ## ## 4. How many distinct pairs? ## k2 <- sum(x) if(k2==0){ Ltrs <- rep(Letters[1], n) names(Ltrs) <- Lvls dimnames(LetMat)[[2]] <- Letters[1] return(list(Letters=Ltrs, LetterMatrix=LetMat)) } ## ## 4. At last 2 levels are different: ## insert & absorb ## distinct.pairs <- x2[x,,drop=FALSE] absorb <- function(A.){ # Do the work in a recursive function: # Delete any column for which the TRUE # connections are a subset of another column k. <- dim(A.)[2] if(k.>1){ #i. <- 1; j. <- 2 for(i. in 1:(k.-1))for(j. in (i.+1):k.){ if(all(A.[A.[, j.], i.])){ #### drop a redundant column and recurse ### A. <- A.[, -j., drop=FALSE] return(absorb(A.)) } else { if(all(A.[A.[, i.], j.])){ #### drop a redundant column and recurse ### A. <- A.[, -i., drop=FALSE] return(absorb(A.)) } } } } #### end internal function absorb ####### A. } # Now apply this function for(i in 1:k2){ # i <- 1+i # Process the distinct differences one at a time # Insert i <- 1+i # Are (distinct) levels Td2[i, 1] and Td2[i,2] # connected in any columns of A? dpi <- distinct.pairs[i,] ijCols <- (LetMat[dpi[1],] & LetMat[dpi[2], ]) if(any(ijCols)){ # "Insert": Break this connection A1 <- LetMat[, ijCols, drop=FALSE] A1[dpi[1],] <- FALSE LetMat[dpi[2], ijCols] <- FALSE LetMat <- cbind(LetMat, A1) # Absorb A. <- A LetMat <- absorb(LetMat) } } ## ## 5. Sort the columns for visual appeal ## sortCols <- function(B){ firstRow <- apply(B, 2, function(x)which(x)[1]) B <- B[, order(firstRow)] # If ties, sort submatrices firstRow <- apply(B, 2, function(x)which(x)[1]) reps <- (diff(firstRow)==0) if(any(reps)){ # Break ties nrep <- table(which(reps)) irep <- as.numeric(names(nrep)) k <- dim(B)[1] for(i in irep){ i. <- i:(i+nrep[as.character(i)]) j. <- (firstRow[i]+1):k B[j., i.] <- sortCols(B[j., i., drop=FALSE]) } } #### end internal function sortCols ####### B } LetMat. <- sortCols(LetMat) ### Should the letters go in the reversed order? if(reversed) LetMat. <- LetMat.[ ,rev(1:ncol(LetMat.))] # DON'T Sweep #... ## ## 6. Create "Letters" for column names ## k.ltrs <- dim(LetMat.)[2] makeLtrs <- function(kl, ltrs=Letters){ kL <- length(ltrs) if(kl 1)) { Lvls <- levels(interaction(data[,fm[[2]]], sep = ":"))[oz] } else { Lvls <- levels(data[,fm[[2]]])[oz] } value <- vec2mat(x) value <- value[Lvls, Lvls] multcompLetters(value, ...) } #' @export #' @describeIn multcompLetters create a compact letters display and order the #' letters "multcompLetters3" <- function (z, y , x, data, ...) { y.z <- tapply(data[, y], data[, z], function(x) do.call(mean, list(x=x))) oz <- order(y.z, decreasing= T ) #This is to handle interactions if (length(z > 1)) { Lvls <- levels(interaction(data[, z], sep = ":"))[oz] } else { Lvls <- levels(data[, z])[oz] } value <- vec2mat(x) value <- value[Lvls, Lvls] multcompLetters(value, ...) } #' @export #' @describeIn multcompLetters create a compact letters display using a aov object #' "multcompLetters4" <- function (object, comp, ...) { #Extract needed data from object formula <- terms(object) Terms <- colnames(attr(terms(object), "factors")) data <- model.frame(object) fm <- as.character(formula) fm <- fm[-1] fms <- list() for (i in 1:length(Terms)){ fms[[i]] <- formula(paste(fm[1], "~", Terms[i])) } names(fms) <- Terms if(is.character(comp) | is.symbol(comp)) { comp <- match.fun(comp) comp <- comp(object) } comp <- extract_p(comp) ans <- list() for(i in 1:length(Terms)){ ans[[i]] <- list(formula = fms[[i]], p = comp[[i]]) } names(ans) <- Terms lapply(ans, function(x) multcompLetters2(x$formula, x$p, data, ...)) } multcompView/R/vec2mat.R0000644000176200001440000000747614571350160014652 0ustar liggesusers#' Convert a vector with hyphenated names into a matrix. #' #' Convert a vector with hypehnated names into a symmetric matrix with names #' #' x must have names each of which contains exactly one hyphen; if not, vec2mat #' issues an error message. If the same comparison is present multiple times, #' the last value is used; no check is made for duplicates. #' #' @param x Either (1) a vector with hyphenated names indicating pairs of #' factor levels, groups or items that are and are not significantly different #' or (2) a matrix indicating same. If x is already a matrix, it is checked #' for symmetry. NAs are not allowed. #' @param sep "strsplit" character to apply to names(x). #' @return A symmetric matrix of the same class as the input with names #' obtained from unique(strsplit(names(x))). All nonspecified elements will be #' 1 if class(x) is numeric, FALSE if logical and "" if character. Used by the #' functions 'multcompLetters' and 'multcompTs'. #' @author Spencer Graves #' @seealso \code{\link{multcompLetters}} \code{\link{multcompTs}} #' @keywords manip array #' @export #' @examples #' #' dif3 <- c(FALSE, FALSE, TRUE) #' names(dif3) <- c("a-b", "a-c", "b-c") #' vec2mat(dif3) #' #' dif3. <- 1:3 #' names(dif3.) <- c("a-b", "a-c", "b-c") #' vec2mat(dif3.) #' #' dif.ch <- c("this",'is','it') #' names(dif.ch) <- c("a-b", "a-c", "b-c") #' vec2mat(dif.ch) #' #' vec2mat(array(1, dim=c(2,2))) #' \dontshow{ #' try(vec2mat(array(1:24, dim=2:4)))# must be 2-d #' try(vec2mat(array(1:6, dim=2:3)))# must be square #' try(vec2mat(array(1:4, dim=c(2,2))))# must be symmetric #' try(vec2mat(array(1, dim=c(2,2)))) # diag should be 0 #' try(vec2mat(array(TRUE, dim=c(2,2)))) # diag should be FALSE #' try(vec2mat(array("a", dim=c(2,2)))) # diag should be "" #' #' try(vec2mat(c(1:3, NA))) # NAs not allowed #' try(vec2mat(1:3))# Error: No names #' #' errVec2 <- 1:3 #' names(errVec2) <- c("a", "b-a", "b-c") #' try(vec2mat(errVec2))# Error: missing hyphen (sep character) #' #' errVec3 <- 1:3 #' names(errVec3) <- c("a-c", "b-a", "b-c-d") #' try(vec2mat(errVec3)) #' # Error: multiple hyphens (sep characters) #' #' dif4 <- 1:4 #' names(dif4) <- c("a-b", "a-c", "b-c", "b-a") #' # Both "b-a" and "a-b" specified; #' # use the latest. #' vec2mat(dif4) #' } #' "vec2mat" <- function (x, sep = "-") { n.na <- sum(is.na(x)) x.is <- deparse(substitute(x)) if (n.na > 0) stop(n.na, " NAs not allowed, found in ", x.is) dimx <- dim(x) l.dimx <- length(dimx) clpse <- function(x, collapse = ", ") paste(x, collapse = collapse) x.not.sq <- ((l.dimx > 2) || ((l.dimx == 2) && (dimx[1] != dimx[2]))) if (x.not.sq) stop("Array of dim(", clpse(dimx), ") not allowed for ", x.is) if (l.dimx == 2) { if (any(x != t(x))) stop("Matrix not symmetric ", x.is) return(x) } namx <- names(x) if (length(namx) != length(x)) stop("Names required for ", deparse(substitute(x))) x.lvls <- vec2mat2(namx, sep) Lvls <- unique(as.vector(x.lvls)) n.lvls <- length(Lvls) x0 <- { if (is.numeric(x)) 1 else if (is.logical(x)) FALSE else if (is.character(x)) "" else stop("Must be class numeric, logical or ", "character; instead is ", class(x)) } X <- array(x0, dim = c(n.lvls, n.lvls), dimnames = list(Lvls, Lvls)) i.lvls <- 1:n.lvls names(i.lvls) <- Lvls ix.lvls <- array(i.lvls[x.lvls], dim = dim(x.lvls)) rev.ix <- (ix.lvls[, 1] > ix.lvls[, 2]) if (any(rev.ix)) ix.lvls[rev.ix, ] <- ix.lvls[rev.ix, 2:1] X[ix.lvls] <- x X[lower.tri(X)] <- t(X)[lower.tri(X)] X } multcompView/R/multcompLetters4.R0000644000176200001440000000137714414525367016603 0ustar liggesusers"multcompLetters4" <- function (object, comp, ...) { #Extract needed data from object formula <- terms(object) Terms <- colnames(attr(terms(object), "factors")) data <- model.frame(object) fm <- as.character(formula) fm <- fm[-1] fms <- list() for (i in 1:length(Terms)){ fms[[i]] <- formula(paste(fm[1], "~", Terms[i])) } names(fms) <- Terms if(is.character(comp) | is.symbol(comp)) { comp <- match.fun(comp) comp <- comp(object) } comp <- extract_p(comp) ans <- list() for(i in 1:length(Terms)){ ans[[i]] <- list(formula = fms[[i]], p = comp[[i]]) } names(ans) <- Terms lapply(ans, function(x) multcompLetters2(x$formula, x$p, data, ...)) } multcompView/R/multcompTs.R0000644000176200001440000001433115144410365015445 0ustar liggesusers#' "T" depiction of undifferentiated classes #' #' Convert a logical vector or a vector of p-values or a correlation or #' distance matrix into a matrix with an associated visual display to show #' whether the differences between items exceed a threshold. Designed for use #' with the output of functions like TukeyHSD, diststats, simint, simtest, #' csimint, csimtestmultcomp, friedmanmc, kruskalmcpgirmess. #' #' Produces a matrix of class "multcompTs", describing the "undifferentiated #' classes" that identify the other factor levels or items that are not #' distinct or not significantly different from the "base" of the "T"; if two #' or more levels have the same pattern of significant differences, the two are #' combined into one "T" with two "bases". The resulting T's are similar to #' the "undifferentiated classes" discussed by Donaghue (2004). #' #' @param x One of the following: (1) A square, symmetric matrix with row #' names. (2) A vector with hyphenated names, which identify individual items #' or factor levels after "strsplit(..., '-')". (3) An object of class "dist". #' #' If x (or x[1]) is not already of class "logical", it is replaced with #' do.call(compare, list(x, threshold)), which by default converts numbers #' (typically p-values) less than 0.05 to TRUE and everything else to FALSE. #' If x is a matrix, its diagonal must be or must convert to FALSE. #' @param compare function or binary operator; not used if class(x) is #' "logical". #' @param threshold Second (reference) argument to "compare". #' @param sep Concatenation character for names of objects with identical #' similarity / dissimilarity patterns. The output of multcompTs is matrix for #' which the number of rows = (number of columns + number of uses of the "sep" #' character). #' @return An object of class "multcompTs", which is a matrix of values -1, 0, #' 1, with one row for each level compared and one column for each "T", read as #' follows: 1 = base of the "T" represented by that column, 0 = level(s) not #' significantly different, and (-1) = levels(s) significantly different. If #' two or more levels have the same pattern of significant and insignificant #' differences, they are combined into a single column that can be represented #' by a "T" with multiple bases. The column name will be a character string #' concatenating all row names with "1" in that column separated by the "sep" #' character. Thus, the matrix should have as many 1's as it has rows. Also, #' the lower triangular portion should have as many "-1's" as there are "TRUE" #' (e.g., significant) differences among the comparisons. #' @author Spencer Graves and Hans-Peter Piepho #' @seealso \code{\link{multcompBoxplot}} \code{\link{multcompLetters}} #' \code{\link{plot.multcompTs}} \code{\link{vec2mat}} \code{\link{dist}} #' @references John R. Donaghue (2004) "Implementing Shaffer's multiple #' comparison procedure for a large number of groups", pp. 1-23 in Benjamini, #' Bretz and Sarkar (eds) Recent Developments in Multiple Comparison Procedures #' (Institute of Mathematical Statistics Lecture Notes-Monograph Series vol. #' 47) #' #' Spencer Graves and Hans-Peter Piepho (2006) "Simple Visualizations of Paired #' Comparisons". See \code{system.file("extdata", "VisualizingPairedComparisons.pdf", package = "multcompView")}. #' #' @keywords dplot #' @export #' @examples #' #' ## #' ## 0. Conference presentation comparing Ts and Letters #' ## #' dir(system.file('doc', package='multcompView'), #' pattern='\\.pdf$', full.name=TRUE) #' #' ## #' ## 1. logical vector indicating different pairs #' ## #' dif3 <- c(FALSE, FALSE, TRUE) #' names(dif3) <- c("a-b", "a-c", "b-c") #' multcompTs(dif3) #' #' ## #' ## 2. numeric vector indicating statistical significance #' ## #' dif4 <- c(.01, .02, .03, 1) #' names(dif4) <- c("a-b", "a-c", "b-d", "a-d") #' (diff4.T <- multcompTs(dif4)) #' plot(diff4.T) #' #' ## #' ## 3. Distance matrix #' ## #' dJudge <- dist(USJudgeRatings) #' dJt <- multcompTs(dJudge, compare='>', threshold = median(dJudge)) #' # comparison of 43 judges; compact but undecipherable: #' plot(dJt, cex.axis=.5) #' #' x <- array(1:9, dim=c(3,3), #' dimnames=list(LETTERS[1:3], NULL) ) #' d3 <- dist(x) #' dxTs <- multcompTs(d3, compare=">", threshold=2) #' plot(dxTs) #' #' d3d <- dist(x, diag=TRUE) #' dxdTs <- multcompTs(d3d, compare=">", threshold=2) #' #' \dontshow{stopifnot(} #' all.equal(dxTs, dxdTs) #' \dontshow{)} #' #' d3u <- dist(x, upper=TRUE) #' dxuTs <- multcompTs(d3d, compare=">", threshold=2) #' #' \dontshow{stopifnot(} #' all.equal(dxTs, dxuTs) #' \dontshow{)} #' #' ## #' ## 4. cor matrix #' ## #' set.seed(4) #' x100 <- matrix(rnorm(100), ncol=5, #' dimnames=list(NULL, LETTERS[1:5]) ) #' cx <- cor(x100) #' cxTs <- multcompTs(abs(cx), threshold=.3) #' plot(cxTs) #' #' "multcompTs" <- function(x, compare="<", threshold=0.05, sep="."){ ## ## 1. Covert to logical ## if(any(class(x) == "dist"))x <- as.matrix(x) if(!is.logical(x)) x <- do.call(compare, list(x, threshold)) ## ## 2. Convert to a symmetric matrix ## x. <- vec2mat(x) if(any(diag(x.))) stop("Diag(x) must be or translate to FALSE;", " x = ", paste(x, collapse=", ")) ## ## 3. Code insignificance as 0 ## and significance as (-1) ## k <- dim(x.)[1] x1 <- (1+x.) Dif <- array(c(0, -1)[x1], dim=c(k,k), dimnames=dimnames(x.)) diag(Dif) <- 1 ## ## 4. To find recodes 0's as 1 ## then duplicate columns will ## have inner product = k ## dup.5 <- array(c(1, -1)[x1], dim=c(k,k), dimnames=dimnames(x.)) # Dup <- (crossprod(dup.5)==k) ## ## 5. Look for dups only in the upper triangle ## and drop all that are found ## Dup[lower.tri(Dup, diag=TRUE)] <- FALSE dup.i <- which(colSums(Dup)>0) if(length(dup.i)>0){ for(i in dup.i){ j.i <- which(Dup[,i])[1] Dif[i, j.i] <- 1 colNms <- dimnames(Dif)[[2]] j.i.Nm <- paste(colNms[c(j.i, i)], collapse=sep) dimnames(Dif)[[2]][j.i] <- j.i.Nm } Dif <- Dif[, -dup.i, drop=FALSE] } ## ## 6. Done ## class(Dif) <- "multcompTs" Dif } multcompView/R/plot.multcompTs.R0000644000176200001440000002054614571350760016434 0ustar liggesusers#' plot multcomp graphics #' #' Plot graphic(s) for multcompTs or multcompLetters objects #' #' The requested graphic is either plotted by itself or added to an existing #' plot as specified by the arguments. The placement can be controlled by #' 'fig' and 'at'. #' #' The fontsize and fontface of a plot of a multcompLetters object with 'type = #' "Letters"' can be adjusted as describe on the \code{\link[grid]{gpar}} help #' page. #' #' @param x an object of class 'multcompTs' or 'multcompLetters'. #' @param horizontal A logical scalar indicating whether the list of items #' compared reads left to right (horizontal = TRUE) or top to bottom #' (horizontal = FALSE). If this multcomp graphic accompanies boxplots for #' different levels or groups compared, the 'boxplot' argument 'horizontal' is #' the negation of the multcomp plot 'horizontal' argument. #' @param col The color for each group of items or factor levels. The colors #' will cross the different items or factor levels and will therefore have the #' orientation specified via 'horizontal'. If the number of columns exceeds #' length(col), col is recycled. For alternative choices for col, see "Color #' Specification" in the \code{\link{par}} help page. #' @param type An alternative display for either multcompTs or multcompLetters #' is 'boxes' (or rectangles). If type="boxes" with "multcompTs", the #' "base(s)" of each "T" will be indicated by a triangle. #' @param orientation The "standard" orientation has the 'multcompTs' pointing #' towards the names of the items or factor levels; with the "reverse" #' orientation, the bases of the "Ts" point away. By default, the names are on #' the left or below unless the mean of the relevant 'fig' range is less than #' 0.5. #' @param add TRUE to add to an existing plot; FALSE to start a new plot. The #' names of the factor levels or items compared will be plotted only if #' add=FALSE. #' @param at A numeric vector or matrix or a list with components "at" and #' "width". If a list, both components must be either a numeric vector or #' matrix. The numeric vector "at" (whether the function argument or "at" #' component of the "at" list) must be either a numeric vector or matrix giving #' the locations where the "Ts" or "Letters" graphics should be drawn. #' length(at) is 1, 2 or 3 times the number of the number of factor levels or #' items compared. If length(at) is twice the number of levels or items #' compared, it gives the range of the display for that level; the base of a #' "T" will be at the midpoint. If length(at) is three times the number of #' items compared, the intermediate number will be the center of the base of #' the "T". #' @param width A numeric vector or matrix with as many rows as "Ts" or #' "groups" and with up to three columns. With one column, it will be the #' "center" of the plot range for that group. With two columns, they will #' delimit the range. With three, they will provide "bottom", "center", and #' "top" of the range for that set of grouping indicators. If "at" is a list, #' the argument "width" is ignored and is taken from the list "at". #' @param fig A numerical vector of the form 'c(x1, x2, y1, y2)' giving the #' coordinates of the figure region in the display region of the plot device, #' as described on the \code{\link{par}} help page. #' @param lwd width of line to connect elements of "T" graphics that might not #' otherwise be connected. #' @param label.levels NA for no labels or distance away from the plot for the #' labels as a proportion of the plot range. #' @param label.groups NA for no labels or distance away from the plot for the #' labels as a proportion of the plot range. #' @param T.base A numeric scalar giving the proportion of the available space #' devoted to the base of the Ts; used only when type="Ts". #' @param ... graphical parameters can be given as described on the #' \code{\link{plot}} help page or for plot.multcompLetters as describe on the #' \code{\link[grid]{gpar}} help page. #' @return A list with two components: \item{at }{ A matrix with three columns #' giving the middle and extremes of the display for each of the factor levels #' or items compared. } \item{width }{ A matrix with as many rows as "Ts" or #' comparator levels and with two columns giving the plot range for that #' comparator level. } #' @author Spencer Graves #' @seealso \code{\link{multcompTs}} \code{\link{multcompLetters}} #' \code{\link{multcompBoxplot}} \code{\link[grid]{gpar}} #' @keywords aplot #' @examples #' #' ## #' ## plot(multcompTs(...)) #' ## #' dif4 <- c(.1, .02, .03, 1) #' names(dif4) <- c("A-B", "A-C", "B-C", "A-D") #' (mcT4 <- multcompTs(dif4)) #' # Standard plot, base of "Ts" point left #' mcT4.1 <- plot(mcT4, label.groups=0.05) #' # Redo using "at" = list #' plot(mcT4, label.groups=0.05, at=mcT4.1) #' # Same plot with group labels closer to the figure #' plot(mcT4, label.groups=0.02) #' #' # Base of "Ts" point right #' plot(mcT4, label.groups=TRUE, orientation="r") #' # Base of "Ts" point down #' plot(mcT4, horizontal=TRUE, label.groups=0.05) #' # Base of "Ts" point up #' plot(mcT4, horizontal=TRUE, label.groups=0.05, #' orientation="r") #' #' # Same 4 plots but with boxes & triangles, not Ts #' plot(mcT4, label.groups=0.05, type="b") #' plot(mcT4, label.groups=0.05, orientation="r", #' type="b") #' plot(mcT4, horizontal=TRUE, label.groups=0.05, #' type="b") #' plot(mcT4, horizontal=TRUE, label.groups=0.05, #' orientation="r", type="b") #' #' ## #' ## plot(multcompLetters(...)) #' ## #' # ... using dif4 from above #' (mcL4 <- multcompLetters(dif4, Letters=LETTERS)) #' # Standard plot #' \dontrun{ #' # Requires (grid) #' mcL4.1 <- plot(mcL4, label.groups=0.05) #' # Redo using "at" = list #' plot(mcL4, label.groups=0.05, at=mcL4.1) #' #' # With bold face and larger font #' plot(mcL4, label.groups=0.05, #' fontsize=28, fontface="bold") #' #' # Horizontal rather than vertical #' plot(mcL4, horizontal=TRUE, label.groups=0.05) #' } #' #' # Same as boxes rather than letters #' plot(mcL4, label.groups=0.05, type="b") #' plot(mcL4, horizontal=TRUE, label.groups=0.05, #' type="b") #' @importFrom graphics par text lines polygon rect #' @export "plot.multcompTs" <- function(x, horizontal=FALSE, col=1:6, type=c("Ts", "boxes"), orientation=c("standard", "reverse"), add=FALSE, at, width, fig=c(0, 1, 0, 1), lwd=3, label.levels=if(add)NA else 0.05, label.groups=NA, T.base=0.4, ...){ ## ## 1. Get row and column names ## obj <- deparse(substitute(x)) lvls <- dimnames(x)[[1]] gps <- dimnames(x)[[2]] n <- length(lvls) k <- length(gps) if((n==0) | (k==0)) stop("dimnames required for ", obj) col <- rep(col, len=k) ## ## 2. Get plotting positions for lvls and gps ## At <- function(x, lvls, d){ N <- length(lvls) if(length(x)<=N) x <- t(outer(c(-0.4, 0, 0.4), x, "+")) else{ x <- apply(x, 2, sort) if(length(x)<(3*N)) x <- cbind(x[, 1], mean(x, 2, mean), x[, 2]) } dimnames(x) <- list(lvls, c("bottom", "center", "top")) x } # at.list <- FALSE missW <- missing(width) { if(missing(at)){ at <-{ if(horizontal) 1:n else n:1 } } else if(is.list(at)){ at.list <- TRUE if(is.null(names(at))) names(at) <- c("at", "width") width <- at$width at <- at$at } } # if(!at.list){ if(missW){ width <- { if(horizontal) k:1 else 1:k } } width <- At(width, gps) at <- At(at, lvls) } or. <- match.arg(orientation) ## ## 3. Set up the plot ## op <- { if(add)par(fig=fig, xpd=NA, new=TRUE) else par(fig=fig, xpd=NA) } on.exit(par(op)) # { if(match.arg(type)=="Ts") plotTs(obj=x, at=at, width=width, horizontal=horizontal, col=col, add=add, lwd=lwd, label.levels=label.levels, label.groups=label.groups, T.base=T.base, orientation=or., ...) else plotBoxes(obj=x, at=at, width=width, horizontal=horizontal, col=col, add=add, label.levels=label.levels, label.groups=label.groups, orientation=or., ...) } list(at=at, width=width) } multcompView/R/plot.multcompLetters.R0000644000176200001440000002067214571350730017465 0ustar liggesusers#' plot multcomp graphics #' #' Plot graphic(s) for multcompTs or multcompLetters objects #' #' The requested graphic is either plotted by itself or added to an existing #' plot as specified by the arguments. The placement can be controlled by #' 'fig' and 'at'. #' #' The fontsize and fontface of a plot of a multcompLetters object with 'type = #' "Letters"' can be adjusted as describe on the \code{\link[grid]{gpar}} help #' page. #' #' @aliases plot.multcomp #' @param x an object of class 'multcompTs' or 'multcompLetters'. #' @param horizontal A logical scalar indicating whether the list of items #' compared reads left to right (horizontal = TRUE) or top to bottom #' (horizontal = FALSE). If this multcomp graphic accompanies boxplots for #' different levels or groups compared, the 'boxplot' argument 'horizontal' is #' the negation of the multcomp plot 'horizontal' argument. #' @param col The color for each group of items or factor levels. The colors #' will cross the different items or factor levels and will therefore have the #' orientation specified via 'horizontal'. If the number of columns exceeds #' length(col), col is recycled. For alternative choices for col, see "Color #' Specification" in the \code{\link{par}} help page. #' @param type An alternative display for either multcompTs or multcompLetters #' is 'boxes' (or rectangles). If type="boxes" with "multcompTs", the #' "base(s)" of each "T" will be indicated by a triangle. #' @param add TRUE to add to an existing plot; FALSE to start a new plot. The #' names of the factor levels or items compared will be plotted only if #' add=FALSE. #' @param at A numeric vector or matrix or a list with components "at" and #' "width". If a list, both components must be either a numeric vector or #' matrix. The numeric vector "at" (whether the function argument or "at" #' component of the "at" list) must be either a numeric vector or matrix giving #' the locations where the "Ts" or "Letters" graphics should be drawn. #' length(at) is 1, 2 or 3 times the number of the number of factor levels or #' items compared. If length(at) is twice the number of levels or items #' compared, it gives the range of the display for that level; the base of a #' "T" will be at the midpoint. If length(at) is three times the number of #' items compared, the intermediate number will be the center of the base of #' the "T". #' @param width A numeric vector or matrix with as many rows as "Ts" or #' "groups" and with up to three columns. With one column, it will be the #' "center" of the plot range for that group. With two columns, they will #' delimit the range. With three, they will provide "bottom", "center", and #' "top" of the range for that set of grouping indicators. If "at" is a list, #' the argument "width" is ignored and is taken from the list "at". #' @param fig A numerical vector of the form 'c(x1, x2, y1, y2)' giving the #' coordinates of the figure region in the display region of the plot device, #' as described on the \code{\link{par}} help page. #' @param label.levels NA for no labels or distance away from the plot for the #' labels as a proportion of the plot range. #' @param label.groups NA for no labels or distance away from the plot for the #' labels as a proportion of the plot range. #' @param ... graphical parameters can be given as described on the #' \code{\link{plot}} help page or for plot.multcompLetters as describe on the #' \code{\link[grid]{gpar}} help page. #' @return A list with two components: \item{at }{ A matrix with three columns #' giving the middle and extremes of the display for each of the factor levels #' or items compared. } \item{width }{ A matrix with as many rows as "Ts" or #' comparator levels and with two columns giving the plot range for that #' comparator level. } #' @author Spencer Graves #' @seealso \code{\link{multcompTs}} \code{\link{multcompLetters}} #' \code{\link{multcompBoxplot}} \code{\link[grid]{gpar}} #' @keywords aplot #' @examples #' #' ## #' ## plot(multcompTs(...)) #' ## #' dif4 <- c(.1, .02, .03, 1) #' names(dif4) <- c("A-B", "A-C", "B-C", "A-D") #' (mcT4 <- multcompTs(dif4)) #' # Standard plot, base of "Ts" point left #' mcT4.1 <- plot(mcT4, label.groups=0.05) #' # Redo using "at" = list #' plot(mcT4, label.groups=0.05, at=mcT4.1) #' # Same plot with group labels closer to the figure #' plot(mcT4, label.groups=0.02) #' #' # Base of "Ts" point right #' plot(mcT4, label.groups=TRUE, orientation="r") #' # Base of "Ts" point down #' plot(mcT4, horizontal=TRUE, label.groups=0.05) #' # Base of "Ts" point up #' plot(mcT4, horizontal=TRUE, label.groups=0.05, #' orientation="r") #' #' # Same 4 plots but with boxes & triangles, not Ts #' plot(mcT4, label.groups=0.05, type="b") #' plot(mcT4, label.groups=0.05, orientation="r", #' type="b") #' plot(mcT4, horizontal=TRUE, label.groups=0.05, #' type="b") #' plot(mcT4, horizontal=TRUE, label.groups=0.05, #' orientation="r", type="b") #' #' ## #' ## plot(multcompLetters(...)) #' ## #' # ... using dif4 from above #' (mcL4 <- multcompLetters(dif4, Letters=LETTERS)) #' # Standard plot #' \dontrun{ #' # Requires (grid) #' mcL4.1 <- plot(mcL4, label.groups=0.05) #' # Redo using "at" = list #' plot(mcL4, label.groups=0.05, at=mcL4.1) #' #' # With bold face and larger font #' plot(mcL4, label.groups=0.05, #' fontsize=28, fontface="bold") #' #' # Horizontal rather than vertical #' plot(mcL4, horizontal=TRUE, label.groups=0.05) #' } #' #' # Same as boxes rather than letters #' plot(mcL4, label.groups=0.05, type="b") #' plot(mcL4, horizontal=TRUE, label.groups=0.05, #' type="b") #' #' @export "plot.multcompLetters" <- function(x, horizontal=FALSE, col=1:6, type=c("Letters", "boxes"), add=FALSE, at, width, fig=c(0, 1, 0, 1), label.levels=if(add)NA else 0.05, label.groups=NA, ...){ ## ## 1. Get row and column names ## obj <- deparse(substitute(x)) objMat <- x$LetterMatrix lvls <- dimnames(objMat)[[1]] gps <- dimnames(objMat)[[2]] n <- length(lvls) k <- length(gps) if((n==0) | (k==0)) stop("dimnames required for ", obj) col <- rep(col, len=k) ## ## 2. Get plotting positions for lvls and gps ## At <- function(x, lvls, d){ N <- length(lvls) if(length(x)<=N) x <- t(outer(c(-0.4, 0, 0.4), x, "+")) else{ x <- apply(x, 2, sort) if(length(x)<(3*N)) x <- cbind(x[, 1], mean(x, 2, mean), x[, 2]) } dimnames(x) <- list(lvls, c("bottom", "center", "top")) x } # at.list <- FALSE missW <- missing(width) { if(missing(at)){ at <-{ if(horizontal) 1:n else n:1 } } else if(is.list(at)){ at.list <- TRUE if(is.null(names(at))) names(at) <- c("at", "width") width <- at$width at <- at$at } } # if(!at.list){ if(missW){ width <- { if(horizontal) k:1 else 1:k } } width <- At(width, gps) at <- At(at, lvls) } ## ## 3. Adjust par as required ## op. <- par() parList <- list(fig=fig, xpd=NA, new=add) if(add)parList$mar <- (c(5, 0, 4, 0)+0.1) # dots <- list(...) dNames <- names(dots) nDots <- length(dNames) if(nDots>0)for(i in 1:nDots) if(dNames[i] %in% names(op.)){ parList[[dNames[i]]] <- dots[[dNames[i]]] dots[[dNames[i]]] <- NULL } op <- do.call("par", parList) on.exit(par(op)) ## ## 4. organize plot args ## plotL <- (match.arg(type)=="Letters") pArgs <- names(dots) k.pArgs <- length(pArgs) stdArgs <- c("obj", "at", "width", "horizontal", "col", "add", "label.levels") ks <- length(stdArgs) argNames <- { if(plotL) c(stdArgs, pArgs) else c(stdArgs, "label.groups", pArgs) } plotArgs <- vector(length(argNames), mode="list") names(plotArgs) <- argNames plotArgs$obj <- { if(plotL) objMat else (objMat-1) } plotArgs$at <- at plotArgs$width <- width plotArgs$horizontal <- horizontal plotArgs$col <- col plotArgs$add <- add plotArgs$label.levels <- label.levels # if(!plotL) plotArgs$label.groups <- label.groups if(k.pArgs>0)for(i. in 1:k.pArgs) plotArgs[[pArgs[i.]]] <- dots[[i.]] ## ## 5. Plot ## do.call(c("plotBoxes", "plotLetters")[1+plotL], plotArgs) ## ## 6. Done ## list(at=at, width=width) } multcompView/R/multcompLetters2.R0000644000176200001440000000130614414525367016571 0ustar liggesusers"multcompLetters2" <- function (formula, x, data, ...) { #Convert formula to character, get rid of "~" fm <- as.character(formula) fm <- fm[-1] #Split char vector with ":" as this points an #interaction and is not included in the data #per se fm <- strsplit(fm, ":", fixed = TRUE) y.z <- tapply(data[,fm[[1]]], data[,fm[[2]]], function(x) do.call(mean, list(x=x))) oz <- order(y.z, decreasing= T ) #This is to handle interactions if (length(fm[[2]] > 1)) { Lvls <- levels(interaction(data[,fm[[2]]], sep = ":"))[oz] } else { Lvls <- levels(data[,fm[[2]]])[oz] } value <- vec2mat(x) value <- value[Lvls, Lvls] multcompLetters(value, ...) } multcompView/R/plotBoxes.R0000644000176200001440000001555514571347724015301 0ustar liggesusers#' plot multcomp displays #' #' Helper functions for plot.multcompTs and plot.multcompLetters. These not #' intended to be called directly and are hidden in a namespace. You can use #' 'getAnywhere' to see them. #' #' The requested graphic is either plotted by itself or added to an existing #' plot as specified by the arguments. #' #' "plotTs" and "plotBoxes" use traditional R graphics and will not be #' discussed further here. #' #' "plotLetters" uses 'grid' graphics, because it seems to provide more support #' for controlling the side-by-side placement of "Letters" of possibly #' different colors and widths. The "Letters" display will be positioned in #' the "plot region" defined by fig and mar, assuming the entire device region #' is 37 lines both wide and tall. Thus, the plot region is diff(fig[1:2])*37 #' lines wide and diff(fig(1:2])*37 lines high. If, for example, fig = c(0.9, #' 1, 0, 1), this makes the plot region 3.7 lines wide. With the default #' mar=c(5, 4, 4, 2)+0.1 lines, the "width" of the plot region is therefore 3.7 #' - (4.1+2.1) = (-2.5) lines. "plotLetters" initially ignores this #' contradictory negative width, and centers the plot at the midpoint of h0 = #' fig[1]+mar[2]/37, h1 = fig[2]-mar[4]/37, v0 = fig[3]+mar[1]/37, and v1 = #' fig[4]-mar[3]/37. The "Letters" for the different levels compared are #' rescaled from at[, "center"] to fit inside At.rng = if(horizontal) c(h0, h1) #' else c(v0, v1). With "n" levels compared and at.rng = range(at[, #' "center"]), at[, "center"] is expanded to (at.rng+/-0.5) and rescaled to #' match At.rng; if(diff(At.rng)<=0), an error message is issued. #' #' Meanwhile, the "Letters" are centered at the midpoint of W.rng = #' if(horizontal) c(v0, v1) else v(h0, h1) [the opposite of At.rng]; the #' argument "width" used by plotTs and plotBoxes is not used (and not even #' accepted) by plotLetters. If(label.levels), these are positioned in the #' midpoint of the right margin in the "W" direction. #' #' @param obj a matrix describing which levels (rows) will be plotted with #' which groups (columns). For plotTs and plotBoxes, obj is a matrix of #' numbers from (-1, 0, 1). For plotLetters, obj is a logical matrix = TRUE if #' that "letter" (group or column of obj) is to be plotted with that level (row #' of obj). #' @param at an array with one row for each level and 3 columns giving low, #' middle and high levels for the display for that level. #' @param width an array with one row for each group of levels in the display #' and 3 columns giving low, middle and high levels for the display for that #' group. #' @param horizontal A logical scalar indicating whether the list of items #' compared reads left to right (horizontal = TRUE) or top to bottom #' (horizontal = FALSE). If this multcomp graphic accompanies boxplots for #' different levels or groups compared, the 'boxplot' argument 'horizontal' is #' the negation of the multcomp plot 'horizontal' argument. #' @param col The color for each group of items or factor levels. The colors #' will cross the different items or factor levels and will therefore have the #' orientation specified via 'horizontal'. If the number of columns exceeds #' length(col), col is recycled. For alternative choices for col, see "Color #' Specification" in the \code{\link{par}} help page. #' @param add TRUE to add to an existing plot; FALSE to start a new plot. The #' names of the factor levels or items compared will be plotted only if #' add=FALSE. #' @param label.levels Distance from the plot region to print the names of the #' levels as a proportion of the plot range; NA for no level labels. #' @param label.groups Distance from the plot region to print the names of the #' groups as a proportion of the plot range; NA for no level labels. #' @param orientation If 'reversed', the base(s) of each "T" or triangle #' indicating the master level(s) of that "undifferentiated class" will point #' right or up (depending on horizontal) rather than down or left. #' @param ... graphical parameters can be given as described on the #' \code{\link{plot}} help page or the \code{\link[grid]{gpar}} help page. #' @return "Done" #' @author Spencer Graves #' @seealso \code{\link{plot.multcompTs}} \code{\link{plot.multcompLetters}} #' \code{\link[grid]{gpar}} #' @keywords aplot internal #' @examples #' #' # Designed to be called from plot.multcompTs #' # or plot.multcompLetters, NOT directly by users. #' @importFrom graphics par text lines polygon rect #' @export "plotBoxes" <- function(obj, at, width, horizontal, col, add, label.levels, label.groups, orientation="", ...){ if(orientation=="reverse") width[,] <- width[, 3:1] lvl.rng <- range(at) gp.rng <- range(width) n <- dim(obj)[1] k <- dim(obj)[2] # Convert to character to use with "switch" ob. <- array(as.character(obj), dim=dim(obj), dimnames=dimnames(obj)) { if(horizontal){ plot(lvl.rng, gp.rng, type="n", xlab="", ylab="", bty="n", axes=FALSE, ...) for(i in 1:k){ for(j in 1:n) switch(ob.[j,i], "-1"=next, "0" =rect(at[j, "bottom"], width[i, "bottom"], at[j, "top"], width[i, "top"], density=(-1), col=col[i], lty="blank"), "1" =polygon( x=at[j, c("bottom", "top", "center", "bottom")], y=width[i, c("top", "top", "bottom", "top")], density=(-1), col=col[i], lty="blank") ) } # Labels? if(!is.na(label.levels)) text(at[, "center"], gp.rng[1]-label.levels*diff(gp.rng), dimnames(obj)[[1]]) if(!is.na(label.groups)) text(lvl.rng[1]-label.groups*diff(lvl.rng), width[, "center"], dimnames(obj)[[2]]) } else{ plot(gp.rng, lvl.rng, type="n", xlab="", ylab="", bty="n", axes=FALSE, ...) for(i in 1:k){ for(j in 1:n) switch(ob.[j,i], "-1"=next, "0" =rect(width[i, "bottom"],at[j, "bottom"], width[i, "top"],at[j, "top"], density=(-1), col=col[i], lty="blank"), "1" =polygon( x=width[i, c("top", "top", "bottom", "top")], y=at[j, c("bottom", "top", "center", "bottom")], density=(-1), col=col[i], lty="blank") ) } # Labels? if(!is.na(label.levels)){ text(gp.rng[1]-label.levels*diff(gp.rng), at[, "center"], dimnames(obj)[[1]]) } if(!is.na(label.groups)) text(width[, "center"], lvl.rng[1]-label.groups*diff(lvl.rng), dimnames(obj)[[2]]) } } "Done" } multcompView/R/multcompView-package.R0000644000176200001440000000364415144373640017373 0ustar liggesusers#' Summarize multiple paired comparisons #' #' Convert a logical vector, a vector of p-values, or a difference/distance #' matrix into a display identifying the pairs for which the differences were #' not significantly different, or for which the difference exceeded a #' threshold. #' #' \tabular{ll}{ #' Package: \tab multcompView\cr #' Type: \tab Package\cr #' Version: \tab 0.1-1\cr #' Date: \tab 2006-08-06\cr #' License: \tab GPL\cr #' } #' #' Convert a logical vector, a vector of p-values, or a difference/distance #' matrix into either a letter-based display using \code{\link{multcompLetters}} #' or a graphic roughly like a \dQuote{T} using \code{\link{multcompTs}} to #' identify factor levels or similar groupings that are or are not #' significantly different. #' #' Designed for use in conjunction with the output of functions like #' \code{\link[stats]{TukeyHSD}}, \code{diststats}, \code{simint}, #' \code{simtest}, \code{csimint}, \code{csimtestmultcomp}, #' \code{friedmanmc}, \code{kruskalmcpgirmess}. #' #' @name multcompView-package #' @aliases multcompView-package multcompView #' @author Spencer Graves, Hans-Peter Piepho and Luciano Selzer with help from Sundar Dorai-Raj #' @references #' Piepho, Hans-Peter (2004) \dQuote{An Algorithm for a Letter-Based #' Representation of All-Pairwise Comparisons}, \emph{Journal of Computational and #' Graphical Statistics}, 13(2), 456--466. #' #' Donaghue, John R. (2004) \dQuote{Implementing Shaffer's multiple comparison #' procedure for a large number of groups}, pp. 1--23 in Benjamini, Bretz and #' Sarkar (eds) \emph{Recent Developments in Multiple Comparison Procedures} #' (Institute of Mathematical Statistics Lecture Notes--Monograph Series, vol. 47). #' @keywords package aplot dplot htest #' @examples #' dif3 <- c(FALSE, FALSE, TRUE) #' names(dif3) <- c("a-b", "a-c", "b-c") #' multcompTs(dif3) #' multcompLe multcompView/R/vec2mat2.R0000644000176200001440000000277114571351132014725 0ustar liggesusers#' Convert a vector of hyphenated names into a character matrix. #' #' Convert a vector of hyphenated names into a character matrix with 2 columns #' containing the names split in each row. #' #' If each element of x does not contain exactly 1 "sep" character, an error is #' issued. #' #' @param x Vector of hyphenated names #' @param sep "strsplit" character to apply to names(x). #' @return A character matrix with rownames = x and with the character string #' preceding the "sep" character in the first column and the character string #' following the "sep" character in the second column. #' @author Spencer Graves #' @seealso \code{\link{vec2mat}} \code{\link{multcompLetters}} #' @keywords manip array #' @export #' @examples #' #' vec2mat2(c("a-b", "a-c", "b-c")) #' #' vec2mat2(c("a-b", "b-a")) #' #' \dontshow{ #' (tst3 <- substring(try( #' vec2mat2(c("a", "b-a", "b-c"))), 1, 20) #' =="Error in vec2mat2(c(") #' # Error: name without a sep character #' #' (tst4 <- substring(try( #' vec2mat2(c("a-c", "b-a", "b-c-d"))), 1, 20) #' =="Error in vec2mat2(c(") #' # Error: multiple hyphens (sep characters) #' #' } #' "vec2mat2" <- function (x, sep = "-") { splits <- strsplit(x, sep) n.spl <- sapply(splits, length) if (any(n.spl != 2)) stop("Names must contain exactly one '", sep, "' each; instead got ", paste(x, collapse = ", ")) x2 <- t(as.matrix(as.data.frame(splits))) dimnames(x2) <- list(x, NULL) x2 } multcompView/R/multcompLetters3.R0000644000176200001440000000066114414525367016575 0ustar liggesusers"multcompLetters3" <- function (z, y , x, data, ...) { y.z <- tapply(data[, y], data[, z], function(x) do.call(mean, list(x=x))) oz <- order(y.z, decreasing= T ) #This is to handle interactions if (length(z > 1)) { Lvls <- levels(interaction(data[, z], sep = ":"))[oz] } else { Lvls <- levels(data[, z])[oz] } value <- vec2mat(x) value <- value[Lvls, Lvls] multcompLetters(value, ...) }multcompView/R/print.multcompLetters.R0000644000176200001440000000216114414537027017636 0ustar liggesusers#' print a multcompLetters object #' #' print method for an object of class 'multcompLetters'. #' #' Prints only the Letters component of the 'multcompLetters' list unless #' all=TRUE. #' #' @param x an object of class 'multcompLetters' #' @param all FALSE to print only the character vector representations of the #' 'multcompLetters' comparison summary; TRUE to print also the matrix #' representation. #' @param ... Other optional print parameters as described on the #' \code{\link{print}} help page. #' @return the named, character vector representation of the #' 'multcompLetters' evaluation of the distance relationships #' @author Spencer Graves #' @seealso \code{\link{multcompLetters}} #' @keywords dplot #' @export #' @examples #' #' dif3 <- c(FALSE, FALSE, TRUE) #' names(dif3) <- c("A-B", "A-C", "B-C") #' dif3L <- multcompLetters(dif3) #' dif3L #' print(dif3L) #' print(dif3L, TRUE) #' "print.multcompLetters" <- function(x, all=FALSE, ...){ { if(all){ class(x) <- NULL print(x, ...) } else print(x$Letters, ...) } invisible(x$Letters) } multcompView/R/extract_p.R0000644000176200001440000000335114571350435015273 0ustar liggesusers#' Extracts p-values #' #' For a given object it will look for the column named "p adj" or "difference" #' and extract its value keeping its names #' #' #' @aliases extract_p extract_p.default extract_p.TukeyHSD extract_p.mc #' @param x A object that has p-values or logical values. #' @return A named vector with p-values or logical values. #' @author Luciano Selzer #' @seealso \code{\link{multcompLetters}} \code{\link{multcompTs}} #' @keywords manip array #' @export #' @examples #' #' experiment <- data.frame(treatments = gl(11, 20, labels = c("dtl", "ctrl", "treat1", #' "treat2", "treatA2", "treatB", "treatB2", #' "treatC", "treatD", "treatA1", "treatX")), #' y = c(rnorm(20, 10, 5), rnorm(20, 20, 5), rnorm(20, 22, 5), rnorm(20, 24, 5), #' rnorm(20, 35, 5), rnorm(20, 37, 5), rnorm(20, 40, 5), rnorm(20, 43, 5), #' rnorm(20, 45, 5), rnorm(20, 60, 5), rnorm(20, 60, 5))) #' exp_tukey <- TukeyHSD(exp_aov <- aov(y ~ treatments, data = experiment)) #' #' extract_p(exp_tukey) #' #' if(require(pgirmess)){ #' extract_p(kruskalmc(y ~ treatments, data = experiment)) #' } #' #' "extract_p" <- function(x) { UseMethod("extract_p") } #' @export #' @describeIn extract_p #' extract_p.default <- function(x){ ans <- x[ ,"p adj"] #To be sure that names are kept names(ans) <- rownames(x) ans } #' @export #' @describeIn extract_p extract p values from a TukeyHSD object extract_p.TukeyHSD <- function(x) { x <- lapply(x, extract_p.default) x } #' @export #' @describeIn extract_p #' extract_p.mc <- function(x){ ans <- x[["dif.com"]][, "stat.signif"] names(ans) <- rownames(x[["dif.com"]]) ans } multcompView/R/plotTs.R0000644000176200001440000001664414571351152014575 0ustar liggesusers#' plot multcomp displays #' #' Helper functions for plot.multcompTs and plot.multcompLetters. These not #' intended to be called directly and are hidden in a namespace. You can use #' 'getAnywhere' to see them. #' #' The requested graphic is either plotted by itself or added to an existing #' plot as specified by the arguments. #' #' "plotTs" and "plotBoxes" use traditional R graphics and will not be #' discussed further here. #' #' "plotLetters" uses 'grid' graphics, because it seems to provide more support #' for controlling the side-by-side placement of "Letters" of possibly #' different colors and widths. The "Letters" display will be positioned in #' the "plot region" defined by fig and mar, assuming the entire device region #' is 37 lines both wide and tall. Thus, the plot region is diff(fig[1:2])*37 #' lines wide and diff(fig(1:2])*37 lines high. If, for example, fig = c(0.9, #' 1, 0, 1), this makes the plot region 3.7 lines wide. With the default #' mar=c(5, 4, 4, 2)+0.1 lines, the "width" of the plot region is therefore 3.7 #' - (4.1+2.1) = (-2.5) lines. "plotLetters" initially ignores this #' contradictory negative width, and centers the plot at the midpoint of h0 = #' fig[1]+mar[2]/37, h1 = fig[2]-mar[4]/37, v0 = fig[3]+mar[1]/37, and v1 = #' fig[4]-mar[3]/37. The "Letters" for the different levels compared are #' rescaled from at[, "center"] to fit inside At.rng = if(horizontal) c(h0, h1) #' else c(v0, v1). With "n" levels compared and at.rng = range(at[, #' "center"]), at[, "center"] is expanded to (at.rng+/-0.5) and rescaled to #' match At.rng; if(diff(At.rng)<=0), an error message is issued. #' #' Meanwhile, the "Letters" are centered at the midpoint of W.rng = #' if(horizontal) c(v0, v1) else v(h0, h1) [the opposite of At.rng]; the #' argument "width" used by plotTs and plotBoxes is not used (and not even #' accepted) by plotLetters. If(label.levels), these are positioned in the #' midpoint of the right margin in the "W" direction. #' #' @aliases plotTs #' @param obj a matrix describing which levels (rows) will be plotted with #' which groups (columns). For plotTs and plotBoxes, obj is a matrix of #' numbers from (-1, 0, 1). For plotLetters, obj is a logical matrix = TRUE if #' that "letter" (group or column of obj) is to be plotted with that level (row #' of obj). #' @param at an array with one row for each level and 3 columns giving low, #' middle and high levels for the display for that level. #' @param width an array with one row for each group of levels in the display #' and 3 columns giving low, middle and high levels for the display for that #' group. #' @param horizontal A logical scalar indicating whether the list of items #' compared reads left to right (horizontal = TRUE) or top to bottom #' (horizontal = FALSE). If this multcomp graphic accompanies boxplots for #' different levels or groups compared, the 'boxplot' argument 'horizontal' is #' the negation of the multcomp plot 'horizontal' argument. #' @param col The color for each group of items or factor levels. The colors #' will cross the different items or factor levels and will therefore have the #' orientation specified via 'horizontal'. If the number of columns exceeds #' length(col), col is recycled. For alternative choices for col, see "Color #' Specification" in the \code{\link{par}} help page. #' @param add TRUE to add to an existing plot; FALSE to start a new plot. The #' names of the factor levels or items compared will be plotted only if #' add=FALSE. #' @param lwd line width for the display outline. #' @param label.levels Distance from the plot region to print the names of the #' levels as a proportion of the plot range; NA for no level labels. #' @param label.groups Distance from the plot region to print the names of the #' groups as a proportion of the plot range; NA for no level labels. #' @param T.base A numeric scalar giving the proportion of the available space #' devoted to the base of the Ts. #' @param orientation If 'reversed', the base(s) of each "T" or triangle #' indicating the master level(s) of that "undifferentiated class" will point #' right or up (depending on horizontal) rather than down or left. #' @param ... graphical parameters can be given as described on the #' \code{\link{plot}} help page or the \code{\link[grid]{gpar}} help page. #' @return "Done" #' @author Spencer Graves #' @seealso \code{\link{plot.multcompTs}} \code{\link{plot.multcompLetters}} #' \code{\link[grid]{gpar}} #' @keywords aplot internal #' @importFrom graphics par text lines polygon rect #' @examples #' #' # Designed to be called from plot.multcompTs #' # or plot.multcompLetters, NOT directly by users. #' #' @export #' "plotTs" <- function(obj, at, width, horizontal, col, add, lwd, label.levels, label.groups, T.base, orientation="", ...){ if(orientation=="reverse") width[,] <- width[, 3:1] lvl.rng <- range(at) gp.rng <- range(width) n <- dim(obj)[1] k <- dim(obj)[2] # compute the base of the Ts Tb <- T.base[1] a.b <- at[, "bottom"] a.c <- at[, "center"] a.t <- at[, "top"] at.5 <- cbind(a.c-Tb*(a.c-a.b), a.c+Tb*(a.t-a.c)) { if(horizontal){ plot(lvl.rng, gp.rng, type="n", xlab="", ylab="", bty="n", axes=FALSE, ...) for(i in 1:k){ for(j in 1:n){ if(obj[j,i]<0)next # Top of the "T" rect(at[j, "bottom"], width[i, "center"], at[j, "top"], width[i, "top"], density=(-1), col=col[i], lty="blank") if(obj[j,i]>0) rect(at.5[j, 1], width[i, "bottom"], at.5[j, 2], width[i, "top"], density=(-1), col=col[i], lty="blank") # Leg(s) of the "T" } # Bridge across the top in case of gaps lines(range(at[obj[, i]>(-1), ]), rep(width[i, "top"],2), col=col[i], lwd=lwd) } # Labels? if(!is.na(label.levels)){ text(at[, "center"], gp.rng[1]-label.levels*diff(gp.rng), dimnames(obj)[[1]]) } if(!is.na(label.groups)) text(lvl.rng[1]-label.groups*diff(lvl.rng), width[, "center"], dimnames(obj)[[2]]) } else{ plot(gp.rng, lvl.rng, type="n", xlab="", ylab="", bty="n", axes=FALSE, ...) for(i in 1:k){ for(j in 1:n){ if(obj[j,i]<0)next # Top of the "T" rect(width[i, "center"], at[j, "bottom"], width[i, "top"], at[j, "top"], density=(-1), col=col[i], lty="blank") if(obj[j,i]>0) rect(width[i, "bottom"],at.5[j, 1], width[i, "top"],at.5[j, 2], density=(-1), col=col[i], lty="blank") # Leg(s) of the "T" } # Bridge across the top in case of gaps lines(rep(width[i, "top"],2), range(at[obj[, i]>(-1), ]), col=col[i], lwd=lwd) } # Labels? dots <- list(...) cex <- (if(is.null(dots$cex.axis)) 1 else dots$cex.axis) if(!is.na(label.levels)){ text(gp.rng[1]-label.levels*diff(gp.rng), at[, "center"], dimnames(obj)[[1]], cex=cex) } if(!is.na(label.groups)) text(width[, "center"], lvl.rng[1]-label.groups*diff(lvl.rng), dimnames(obj)[[2]], cex=cex) } } "Done" } multcompView/R/multcompBoxplot.R0000644000176200001440000002263314571347114016516 0ustar liggesusers#' boxplot with multcomp graphics #' #' Create boxplots with multcompTs and / or multcompLetters #' #' For formula = y~z, if 'sortFn' is a function or the name of a function, #' 'multcompBoxplot' starts by applying sortFn to the subsets of y #' corresponding to each level of z, and then sorting those summaries in #' increasing or decreasing order, per 'decreasing'. If 'sortFn' is NULL or #' NA, this sort step is skipped. #' #' 'multcompBoxplot' then creates 'boxplot' as specified in 'plotList'. Next, #' 'compFn' is called to generate comparisons to feed to the functions #' (\code{\link{multcompTs}} and / or \code{\link{multcompLetters}}, whose #' output is then passed to (\code{\link{plot.multcomp}}) for plotting. #' Components of the relevant sublists of 'plotList' are made available to #' \code{\link{par}} or (for \code{\link{plot.multcompLetters}}) to #' \code{\link[grid]{gpar}}. #' #' @param formula a two sided formula like "y~z", where both "y" and "z" are #' columns of the data.frame "data", "y" is numeric, and "z" is a factor. This #' will be passed as the first argument for both 'boxplot' and 'compFn', and so #' must work in both contexts. NOTE: Any more complicated formula may produce #' errors or unanticipated results. #' @param data A data.frame for evaluating 'formula'. #' @param horizontal TRUE for horizontal boxplots and vertical multcompTs and / #' or multcompLetters; FALSE for the opposite. #' @param compFn a function whose output will serve as the the only non-default #' input to either 'multcompTs' or 'multcompLetters'. The default "TukeyHSD" #' actually translates to 'TukeyHSD(aov(formula, data))[[1]][, "p adj"]'. #' @param sortFn If sortFn is a function or a character string naming a #' function, it is used to summarize the subset of y corresponding to each #' level of z into a single number, which will then be used to sort the levels #' of z according to the argument 'decreasing'. This step is skipped if #' sortFn is NULL or NA or if it is neither a function nor a character string #' that might name a function. If sortFn is a character string but a function #' by that name is not found in the search path, multcompBoxplot stops with, #' 'Error in do.call(sortFn, list(x = x)) : could not find function ...'. #' @param decreasing If the levels of z are to be sorted using the output of #' 'sortFn', this is uses as the 'decreasing' in 'order' to sort the levels of #' z for plotting. #' @param plotList A list with names in c("boxplot", "multcompTs", #' "multcompLetters"). Replicates are allowed. If present, they produce, #' e.g., multiple "multcompTs" side by side. This can be used to compare the #' visual effects of different arguments to "plot.multcompTs". Each component #' of 'plotList' is itself a list of arguments to pass to either "boxplot", #' "plot.multcompTs" or "plot.multcompLetters". Placement can be controlled #' via 'fig' arguments passed (indirectly) of the form 'c(x1, x2, y1, y2)'. #' If(horizontal==TRUE), fig gives the coordinates of the figure region in the #' display region of the plot device, as described on the \code{\link{par}} #' help page; if(horizontal==FALSE), fig[c(3,4,1,2)] gives c(x1, x2, y1, y2) #' for placement of that portion of the plot. #' @return This function invisibly returns a list with one component for each #' component of plotList containing the output of the appropriate #' "plot.multcomp" call plus the output of "compFn". #' @author Spencer Graves #' @seealso \code{\link{boxplot}} \code{\link{multcompTs}} #' \code{\link{multcompLetters}} \code{\link{plot.multcomp}} #' \code{\link{TukeyHSD}} \code{\link{par}} \code{\link[grid]{gpar}} #' @keywords aplot #' @importFrom stats TukeyHSD aov model.frame terms #' @importFrom graphics plot #' @examples #' #' # Example from help("TukeyHSD") #' multcompBoxplot(breaks~tension, data=warpbreaks) #' # 'sortFn' can be either a function or a function name #' # default order is 'decreasing=TRUE' #' multcompBoxplot(breaks~tension, data=warpbreaks, #' sortFn=median, decreasing=FALSE) #' #' ################## #' library(multcomp) #' data(recovery) #' # Horizontal boxplots with both #' # multcomp Ts and Letters on the right #' # Using recovery{multcomp} data set #' multcompBoxplot(minutes~blanket, recovery) #' #' # Plotting boxes rather than letters and Ts #' #' multcompBoxplot(minutes~blanket, recovery, #' plotList=list( #' boxplot=list(fig=c(0, 0.75, 0, 1), las=1, #' cex.axis=1.5), #' multcompTs=list(fig=c(0.7, 0.85, 0, 1), #' type='boxes'), #' multcompLetters=list( #' fig=c(0.87, 0.97, 0.03, 0.98), #' type='boxes') ) ) #' #' #################### #' #' # Vertical boxplots with both #' # multcomp Ts and Letters on the top #' multcompBoxplot(minutes~blanket, recovery, #' horizontal=FALSE) #' #' # Horizontal boxplots with 2 different #' # displays of the "Ts" on the left #' multcompBoxplot(minutes~blanket, recovery, #' plotList=list( #' boxplot=list(fig=c(0.3, 1, 0, 1)), #' multcompTs=list(fig=c(0, 0.15, 0, 1), #' orientation="reverse"), #' multcompTs=list(fig=c(0.15, 0.3, 0, 1), #' type="boxes", orientation="reverse", #' mar=c(5,2, 4, 0)+.1) ) ) #' #' library(MASS) #' anorx <- #' multcompBoxplot(Postwt~Treat, data=anorexia) #' #' \dontrun{ #' # Confirm than sortFn=NULL or NA #' # leaves the order unchanged #' library(multcomp) #' data(cholesterol) #' cholesterol$trt3 <- with(cholesterol, factor( #' as.character(trt), levels=levels(trt)[c(5:4,1:3)])) #' multcompBoxplot(response ~ trt3, cholesterol, #' sortFn=NULL) #' multcompBoxplot(response ~ trt3, cholesterol, #' sortFn=NA) #' } #' #' @export "multcompBoxplot" <- function(formula, data, horizontal=TRUE, compFn="TukeyHSD", sortFn="mean", decreasing=TRUE, plotList=list( boxplot=list(fig=c(0, 0.75, 0, 1)), multcompTs=list(fig=c(0.7, 0.85, 0, 1)), multcompLetters=list(fig=c(0.87, 0.97, 0.03, 0.98), fontsize=20, fontface="bold"))){ ## ## 1. if(!horizontal)swap plotList$...$fig... ## n.mc <- length(plotList) if(!horizontal) for(i in 1:n.mc) if("fig" %in% names(plotList[[i]])) plotList[[i]]$fig <- plotList[[i]]$fig[c(3,4,1,2)] ## ## 2. Sort the levels of 'z' in the formula ## if(!is.null(sortFn) && (is.function(sortFn) || ((!is.na(sortFn)) && is.character(sortFn)))){ fm <- as.character(formula) data <- data[, fm[-1]] y.z <- tapply(data[, fm[2]], data[, fm[3]], function(x)do.call(sortFn, list(x=x))) oz <- order(y.z, decreasing=decreasing) data[, fm[3]] <- factor(data[, fm[3]], levels=names(y.z)[oz]) } ## ## 3. Create the desired boxplots ## bpArgs <- plotList$boxplot if("fig" %in% names(bpArgs)){ op <- par(fig=bpArgs$fig) on.exit(par(op)) bpArgs$fig <- NULL } # bpArgNames <- names(bpArgs) nArgs.bp <- length(bpArgNames) bpArg <- vector(3+nArgs.bp, mode="list") names(bpArg) <- c("formula", "data", "horizontal", bpArgNames) bpArg[[1]] <- formula bpArg[[2]] <- data bpArg[[3]] <- horizontal if(nArgs.bp>0)for(i in 1:nArgs.bp) bpArg[[3+i]] <- bpArgs[[i]] bp <- do.call("boxplot", bpArg) # Create list "out" and save this. out <- vector(n.mc+1, mode="list") plotNames <- names(plotList) names(out) <- c(plotNames[1], "compFn", plotNames[-1]) out[[1]] <- bp par(op) ## ## 4. Call "compFn" for the other portions of the ## display. ## Fn <- compFn if(compFn=="TukeyHSD"){ TukeyHSD. <- function(formula, data){ TukeyHSD(aov(formula, data))[[1]][, "p adj"] } Fn <- "TukeyHSD." } if (compFn == "kruskalmc"){ kruskalmc. <- function(formula, data){ extract_p(pgirmess::kruskalmc(resp = formula, data = data)) } Fn <- "kruskalmc." } fnValue <- do.call(Fn, list(formula=formula, data=data)) Fn.v0 <- vec2mat(fnValue) Lvls <- bp$names if(horizontal)Lvls <- rev(Lvls) FnValue <- Fn.v0[Lvls, Lvls] out[["compFn"]] <- fnValue ## ## 5. Process the remaining components of plotList ## if(n.mc>1){ mar2 <- (horizontal*c(5, 0, 4, 0)+ (!horizontal)*c(0, 4, 0, 2)+0.1) mcNames <- plotNames[-1] # plotNms <- paste("plot", mcNames, sep=".") if("multcompTs" %in% mcNames) mcTs <- multcompTs(FnValue) if("multcompLetters" %in% mcNames) mcLtrs <- multcompLetters(FnValue) # Create the desired multcompViews for(i in 1:(n.mc-1)){ pL.i <- plotList[[i+1]] { if("mar" %in% names(pL.i)){ mar <- pL.i$mar pL.i$mar <- NULL } else mar <- mar2 } op.i <- par(mar=mar) on.exit(par(op.i)) names.i <- names(pL.i) nm.i <- length(names.i) args.i <- vector(3+nm.i, mode="list") names(args.i) <- c("x", "horizontal", "add", names.i) args.i[[1]] <- { if(mcNames[i]=="multcompTs") mcTs else mcLtrs } args.i[[2]] <- !horizontal args.i[[3]] <- TRUE if(nm.i>0)for(ji in 1:nm.i) args.i[[3+ji]] <- pL.i[[ji]] out[[2+i]] <- do.call(plot, args.i) par(op.i) } } invisible(out) } multcompView/R/plotLetters.R0000644000176200001440000002053314571345613015626 0ustar liggesusers#' plot multcomp displays #' #' Helper functions for plot.multcompTs and plot.multcompLetters. These not #' intended to be called directly and are hidden in a namespace. You can use #' 'getAnywhere' to see them. #' #' The requested graphic is either plotted by itself or added to an existing #' plot as specified by the arguments. #' #' "plotTs" and "plotBoxes" use traditional R graphics and will not be #' discussed further here. #' #' "plotLetters" uses 'grid' graphics, because it seems to provide more support #' for controlling the side-by-side placement of "Letters" of possibly #' different colors and widths. The "Letters" display will be positioned in #' the "plot region" defined by fig and mar, assuming the entire device region #' is 37 lines both wide and tall. Thus, the plot region is diff(fig[1:2])*37 #' lines wide and diff(fig(1:2])*37 lines high. If, for example, fig = c(0.9, #' 1, 0, 1), this makes the plot region 3.7 lines wide. With the default #' mar=c(5, 4, 4, 2)+0.1 lines, the "width" of the plot region is therefore 3.7 #' - (4.1+2.1) = (-2.5) lines. "plotLetters" initially ignores this #' contradictory negative width, and centers the plot at the midpoint of h0 = #' fig[1]+mar[2]/37, h1 = fig[2]-mar[4]/37, v0 = fig[3]+mar[1]/37, and v1 = #' fig[4]-mar[3]/37. The "Letters" for the different levels compared are #' rescaled from at[, "center"] to fit inside At.rng = if(horizontal) c(h0, h1) #' else c(v0, v1). With "n" levels compared and at.rng = range(at[, #' "center"]), at[, "center"] is expanded to (at.rng+/-0.5) and rescaled to #' match At.rng; if(diff(At.rng)<=0), an error message is issued. #' #' Meanwhile, the "Letters" are centered at the midpoint of W.rng = #' if(horizontal) c(v0, v1) else v(h0, h1) [the opposite of At.rng]; the #' argument "width" used by plotTs and plotBoxes is not used (and not even #' accepted) by plotLetters. If(label.levels), these are positioned in the #' midpoint of the right margin in the "W" direction. #' #' @aliases plotLetters #' @param obj a matrix describing which levels (rows) will be plotted with #' which groups (columns). For plotTs and plotBoxes, obj is a matrix of #' numbers from (-1, 0, 1). For plotLetters, obj is a logical matrix = TRUE if #' that "letter" (group or column of obj) is to be plotted with that level (row #' of obj). #' @param at an array with one row for each level and 3 columns giving low, #' middle and high levels for the display for that level. #' @param horizontal A logical scalar indicating whether the list of items #' compared reads left to right (horizontal = TRUE) or top to bottom #' (horizontal = FALSE). If this multcomp graphic accompanies boxplots for #' different levels or groups compared, the 'boxplot' argument 'horizontal' is #' the negation of the multcomp plot 'horizontal' argument. #' @param col The color for each group of items or factor levels. The colors #' will cross the different items or factor levels and will therefore have the #' orientation specified via 'horizontal'. If the number of columns exceeds #' length(col), col is recycled. For alternative choices for col, see "Color #' Specification" in the \code{\link{par}} help page. #' @param add TRUE to add to an existing plot; FALSE to start a new plot. The #' names of the factor levels or items compared will be plotted only if #' add=FALSE. #' @param label.levels Distance from the plot region to print the names of the #' levels as a proportion of the plot range; NA for no level labels. #' @param font.family character string naming the font family used by #' "plotLetters". This function plots the different "Letters" in different #' colors by plotting one color at a time. It's currently not smart enough to #' align the letters properly except by assuming a mono-spaced font. #' @param fig figure region = (x0, x1, y0, y1) as a proportion of the device #' region. #' @param mar margin = (lower, left, upper, right) in lines. #' @param ... graphical parameters can be given as described on the #' \code{\link{plot}} help page or the \code{\link[grid]{gpar}} help page. #' @return "Done" #' @author Spencer Graves #' @seealso \code{\link{plot.multcompTs}} \code{\link{plot.multcompLetters}} #' \code{\link[grid]{gpar}} #' @keywords aplot internal #' @examples #' #' # Designed to be called from plot.multcompTs #' # or plot.multcompLetters, NOT directly by users. #' @importFrom grid grid.newpage viewport pushViewport unit textGrob gpar grobHeight #' @importFrom grid convertHeight grobWidth convertWidth grid.text popViewport #' @export "plotLetters" <- function(obj, at, horizontal, col, add, label.levels, font.family="mono", fig=par("fig"), mar=par("mar"), ...){ ## ## 1. Modify "par" ## if(!add) grid::grid.newpage() # op <- par(family=font.family) on.exit(par(op)) ## ## 2. Set up 'grid' graphics ## # Use 'grid' graphics for 2 reasons: # (1) I couldn't figure out how to get # consistent alignment with overlays # using 'text' # (2) 'grid' will compute the size # of characters, so I can use that # to determine plotting positions. vpFig <- grid::viewport(name="vp.fig") grid::pushViewport(vpFig) # angle <- 90*horizontal lvl.rng <- range(at[, "center"]) ## ## 3. Compute figure and plot regions ## n <- dim(obj)[1] k <- dim(obj)[2] # Figure region W.fig <- fig[(1:2)+2*horizontal] At.fig <- fig[(3:4)-2*horizontal] # Figure margins At.mar <- mar[c(1, 3)+horizontal] W.mar <- mar[c(2, 4)-horizontal] # Plot region At.rng <- (At.fig+c(1, -1)*At.mar/37) W.rng <- (W.fig+c(1, -1)*W.mar/37) ## ## 4. Rescale "at" to Grid's "npc" ## = "normalized parent coordinates" ## within fig and mar ## at.rng <- (range(at[, "center"])+c(-0.5, 0.5)) d.at <- diff(at.rng) d.At <- diff(At.rng) At <- (At.rng[1]+d.At*( at[, "center"]-at.rng[1])/d.at) # At.npc <- unit(At, "npc") # At.nat <- unit(At, "native") ## ## 5. Convert "Letters" to grobs = ## Grid "graphics objects" ## n <- dim(obj)[1] k <- dim(obj)[2] Ltrs <- dimnames(obj)[[2]] k1 <- k+1 LtrsM <- c(Ltrs, "M") LtrsM. <- c(Ltrs, "Ref.M.") gLtrs <- vector(k1, mode="list") names(gLtrs) <- LtrsM # npc0 <- unit(0, "npc") nat0 <- grid::unit(0, "native") for(j in 1:k1) gLtrs[[j]] <- grid::textGrob(LtrsM[j], rot=angle,x=nat0, y=nat0, name=LtrsM.[j], gp=grid::gpar(col=col[j], ...)) # name=LtrsM.[j], gp=gpar(...)) ## ## 6. Compute character widths ## wLtrs <- rep(NA, k1) names(wLtrs) <- LtrsM { if(horizontal) for(j in 1:k1){ gH.j <- grid::grobHeight(gLtrs[[j]]) wLtrs[j] <- grid::convertHeight(gH.j, "native", valueOnly=TRUE) } else for(j in 1:k1){ gW.j <- grid::grobWidth(gLtrs[[j]]) wLtrs[j] <- grid::convertWidth(gW.j, "npc", valueOnly=TRUE) } } ## ## 7. Rescale to W.rng ## # 7.1. maxX = max width including Ref.M. maxW <- max(wLtrs) # 7.2. w.Ltrs = adj. width excl. Ref.M. w.Ltrs <- 0.5*(wLtrs[-k1]+maxW) # 7.3. Convert to a scale in "npc" sumW <- cumsum(w.Ltrs) # 7.4. width(in "npc") = adjustment to W.rng w0 <- mean(W.rng) W <- (w0+sumW-mean(range(sumW))) # W.npc <- unit(W, "npc") # W.nat <- unit(W, "native") ## ## 8. Plot ## { if(horizontal) for(j in 1:k){ n.j <- sum(obj[, j]) Ltr.j <- rep(Ltrs[j], n.j) W.j <- rep(W[j], n.j) At.j <- At[obj[, j]] grid::grid.text(Ltr.j, At.j, W.j, rot=90, gp=grid::gpar(col=col[j], ...)) } else for(j in 1:k){ n.j <- sum(obj[, j]) Ltr.j <- rep(Ltrs[j], n.j) W.j <- rep(W[j], n.j) At.j <- At[obj[, j]] grid::grid.text(Ltr.j, W.j, At.j, gp=grid::gpar(col=col[j], ...)) } } ## ## 9. Label the levels? ## if(!is.na(label.levels)){ lvls <- dimnames(obj)[[1]] # W.mar = (W.rng[1]- 0.5*dW - label.levels) W.mar <- (W[1]-0.5*wLtrs[1]-label.levels) W.n <- rep(W.mar, n) if(horizontal){ grid::grid.text(lvls, At, W.n, rot=90) }else{ grid::grid.text(lvls, W.n, At) } } ## ## 10. Clean up and quit. ## grid::popViewport() # "Done" } multcompView/NAMESPACE0000644000176200001440000000210514414525367014175 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(extract_p,TukeyHSD) S3method(extract_p,default) S3method(extract_p,mc) S3method(plot,multcompLetters) S3method(plot,multcompTs) S3method(print,multcompLetters) export(extract_p) export(multcompBoxplot) export(multcompLetters) export(multcompLetters2) export(multcompLetters3) export(multcompLetters4) export(multcompTs) export(plotBoxes) export(plotLetters) export(plotTs) export(vec2mat) export(vec2mat2) importFrom(graphics,lines) importFrom(graphics,par) importFrom(graphics,plot) importFrom(graphics,polygon) importFrom(graphics,rect) importFrom(graphics,text) importFrom(grid,convertHeight) importFrom(grid,convertWidth) importFrom(grid,gpar) importFrom(grid,grid.newpage) importFrom(grid,grid.text) importFrom(grid,grobHeight) importFrom(grid,grobWidth) importFrom(grid,popViewport) importFrom(grid,pushViewport) importFrom(grid,textGrob) importFrom(grid,unit) importFrom(grid,viewport) importFrom(stats,TukeyHSD) importFrom(stats,aov) importFrom(stats,model.frame) importFrom(stats,terms) multcompView/inst/0000755000176200001440000000000015144402361013722 5ustar liggesusersmultcompView/inst/extdata/0000755000176200001440000000000015144402450015353 5ustar liggesusersmultcompView/inst/extdata/VisualizingPairedComparisons.pdf0000644000176200001440000037641315144400462023734 0ustar liggesusers%PDF-1.4 %âãÏÓ 46 0 obj <> endobj xref 46 28 0000000016 00000 n 0000001261 00000 n 0000001341 00000 n 0000001471 00000 n 0000001719 00000 n 0000002229 00000 n 0000002263 00000 n 0000002307 00000 n 0000002351 00000 n 0000002394 00000 n 0000002438 00000 n 0000002665 00000 n 0000002741 00000 n 0000003749 00000 n 0000004272 00000 n 0000004493 00000 n 0000004775 00000 n 0000007444 00000 n 0000008213 00000 n 0000015807 00000 n 0000015977 00000 n 0000017812 00000 n 0000017910 00000 n 0000022836 00000 n 0000023065 00000 n 0000072821 00000 n 0000086223 00000 n 0000000856 00000 n trailer <<2C674CD492B77C48BBDCD23C6EAD1114>]>> startxref 0 %%EOF 73 0 obj<>stream xÚb```¢ ¬ ,… ‚  cc`aàØàâ.áa¸ãð!´AE@êÓ În Xªz˜_N\Ï¡“ jQ…/”rž?-óxÈsèNÊ$¦, iËŸ±“,œ ¶Kª4Ìš—±*ÛУ{ÌsVÙ9te›<8Eu±« Oé8Á”¹<çÁé’ j³jÀn‹bA!¥ŠŽŽ ×%4Èh``` MƒŠ1„V É0 Ã$Ò€‚JêؼR Œ3WiI Ö‹(10$0\c¼ds!'dÐb>Çø’a7Ã.o¦û² ìœ Â2 ‡Y™X0\eL`ˆàëa8Î0Ÿ¡Nr>Pÿ4†¿ ‡¥›Î2œah‚…™&ãóƒ@š ˆ­X—ñÛR ÍÄÿ 5©l­ endstream endobj 47 0 obj<> endobj 48 0 obj<> endobj 49 0 obj<>/ColorSpace<>/Font<>/ProcSet[/PDF/Text/ImageC/ImageI]/ExtGState<>>> endobj 50 0 obj<> endobj 51 0 obj[/ICCBased 62 0 R] endobj 52 0 obj[/Indexed 51 0 R 255 63 0 R] endobj 53 0 obj[/Indexed 51 0 R 255 65 0 R] endobj 54 0 obj[/Indexed 51 0 R 15 67 0 R] endobj 55 0 obj[/Indexed 51 0 R 255 69 0 R] endobj 56 0 obj<> endobj 57 0 obj<> endobj 58 0 obj<>stream H‰ŒUËrÓHÝë+îÒ¦ìN¿»µ“ª™2e1,(*#Q¶$ŠùzÎí–í„10ÑBô=÷qÎ=þ\(j©JM^iš‡R‰2Pßo©+®ƒ§õ@RHiJ­/< k»Y)ú8žpIO!zFØ/>"9B—øKyÎi6ÅëSügS>ÉçͽAá1¾[-,ž£#ï‘\Jåh½+®þÜ)ºÞåyU\U•FÂj ƒ ‘æù†x焎¤ÊRµ{Ô›Ò•\Ÿ³¥äÖtiUîlÎ}JCÕ:?ª@Õ×b²jw÷Û†þi‡‡zÛþ[Ú}7дúħŒÈ\ £e¤êºH*Åí7´¬Û¾ù@‹ýî¾îÛá‡Êí±reRåù&I X ^˜È…c”¸ÎÕ¹Su:U÷n²ºoºuÓÓM_i†-¯_Òt…Ÿ¬öÛ‡éûê¶Píb‚òq…# ’%˜ÔÕŒVuG·û¡™Ñbê„›ü1ÅH'”`æ ãó²ä~­ ©ßÆ:# ·þªî†ù²9 ¬eÛÜßígô¦k¿4ýÐrÿ¨ÇK§s=!ž§nÄáa€¯öwMw×´»Ý4ý®î¾Qšà‹*ë‡ Ï:™kæÜ@?ܧƒl4ÔV¨vÔÎúáh‹ˆàÊÒrG:‘ ¦…”³I‰&bÚc¸Éá ky'žî†±˜DélºaͲê“ü«_­Öjñ7Po‘ý>¢‰¯é/z÷^Ò‡¼¸—ÁWÅoöÕà<Ö”WBѯ¥Px5¥–¶x‡ÔЧ‰Œò»*¦,ŠÿW¯„ói  žGŠÍ7ŽÐ¬]FÔï^N(9 ^|#eÃ&ˆŽñDÚIþ¬l÷n”â‰oö £H–¢¹yØoŸQ—mM`{GgÓG[c¦DƒÃ¦i‹Î˜¶ö2ƒkQ/V¿LÛÌt–ÊO,“íÅ%‰Å¨-ó¦• ‰K+˜B ÇÁ®D€Y¶%ý;É{ý?0tD v ´˜‘ó_Ôt¶ag„d“*Íë£gõG/ú2/ 3ìU’ ˫ҲgЇÃǺ?Œsg¦íK˱ÈbËq.ÉÃD+J x¾`zÉ­&Ï›~ÛvÿÉä`£…l9ŽI?Må¬åSÚE¸÷¥té`²dÇ~ä5¿wÐçŸ=£,SÌõ˜§ÃÿT<òþÀÑÆ!œŒ5/Åi'^öu·n‡õ~,î»à~µœ endstream endobj 59 0 obj<> endobj 60 0 obj<> endobj 61 0 obj<> endobj 62 0 obj<>stream H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= €x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(ЇR¡,¨*T2B-Ð ¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 N'çÎ)Î].ÂuæJ¸rî î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû endstream endobj 63 0 obj<>stream H‰¼Á[ORà6o>ø`s9Ž”–³h4ÝáÈñ’-aÓ&i–6úÒdy[Λs&º „¸ lˆÒ B':»€CÚqy2›J–¨4†hný‹¾/•JE’±x*•Â’I ‹&±èÖÞ¨èØïO&°5‰n¢°z„çžp1 ;ü²a¼×=ÛùT†›ÉÓXâ8d®í4I¤Î…Ä $&À«·ìÃÂUŽà¡R P¥xX–KÑà«´”–8vö}ÅÉ+€ ŒäS U@€8H À²Ëµ¨eÑ+7üݤ’XÀá4ŒíÏÚYV¯ÓEÊe$ÆO‡+âCµtŸip•ò+tiU‹„D¸r=óQ"^îáá©ùU¶¾q¤°RÀñ£à‘Õ•Ý‘ä”ZØóãâÓPP R‚±³ˆ{CPåÕ&&[[ݺ†¨e·;£Ñèbïs ¿,£oNÍÊsáÅþ1Ô`Ù³ÚÖxJ¯zÆÐ1°ÌW®O[~;>ÿ \iä$|hs ñYi£“¯ÜêC¡ÐØ%( ưDü diêþ¶`Ûÿº9}·[Áxhlîz+=ùà ‹ìáð®ßP×ñön·>Ž`§ö>.RRw¼µ£)¢‡×Ñ•Q¡—+;pzm-ýZbýÞª{¼è†òAŸQ}d=Ûry~©^;ÞY]3æÐ{ç®~Ž—GSóM=KKKv»]­Vs8œA|>ŸÕjâóùÇh4ºÝnƒ@ZZ™Lnooohh ‰YYY4­­­Íd2¥§§÷ôô(Šíím‚H$‚oš›ï÷J.RFFF233Q%ÙÙÙS%ƒƒƒ555,‹ÍfgddHòhîO6&“¹åñºÔ3»–%Ng¦µO^«_kTçÉb>stream H‰ìWÿoÇŸÝ5?lYĸòzLãÝs™óZj¥ÊI1W “ÐÖªVMcE Q£FEî~¨P[©jÒJúêÀA±Ì— `;Ƥ ª:BUÿ¦ÎîìÎÎÌÎîÞ³ãææƒ±ïfÞ{óæ}æ½yÀN‡ÿíSê…†"`ú¬ôhôÌÁ‘úîçmÓT툆Ø£6†œ^¶U{¢Q9pÒ«C„NŒÕ¿¢ÚÊa‚½î”‹ù?4¹Oµ/ÕÃè‡0€CþaÕ¾hTŽ—ÝfH>‚Ðy+º 4z†ù#蹄ÿ)X·uØk@¹(¬p6858 Úê`ÃX@$ù1ÆàX Ú%*a¼wÆG Qoø{ôýßK8=â90A#^×ý_O¡¥zSÇTû£Q%L{.~úác€;ÜÿUÕ.iTˆ=ná:CuÕiTÇ|Hë?Bþ)÷yÕ^iT…_']–7éSí•Feøõ)Üò!Zÿ!iT ?óêA|ùGpOú³uýøë!i°ü7a¿­Ú%Ê00¸»³Õ¯1ºGµOUÁª¹„wÊ¿8æ.]ÿ{?k¤?iÿOÂ[óß#°¾“üÇ­ØýOB–>=‚„|Â?> CcßUí“Feøó”ËÖÿ)~d©vJ£2|ÛõXþƒIoÂPí“FU0À8š@Lýwçþ¢Ú' ñ6tËÿòT»¤Q!œòìÛo¤î«vI£2˜ßŒÒ>~úÕ?=®Ú)êð‡~Ì;åjÌC?Pí’F…˜†,|gbÚÒÝïÀ 8þ÷˜ªÒ¨ Ö'Cbîÿ ª=Ò¨ß>WÿϪöH£BÔþ†fgXþ±ÿ9Õ>iTˆ½˜ó´þCØï¾û û¿^á°üc¸î‚mÔT»¥Q¾„ô§@Á°¥»ÿžùuÄòK€wÓ gp°!Öï}ªÝÒ¨¯O¹Lþ‡‡`ª¼¡Ú+ªpÁç/ÿ‰wÆw¢»¿ÞÁá~òð#mÀa0ìéÚßCx·,ÿ“è#ÕiT‰ùÑ€)ÿ¸ù‡ï¨vI£*Xæ÷†Çü8õ£î‚iCµ[UÁÞ?Ö€,ÿM÷w/¨vJ£*˜ @lû‘÷Ùª½Ò¨s,ÿøóÑAÕiTˆ‰qB;$?¾vFµKÕÁ‚.“ÿÈõú-ÓRí”Fe¸0î°õl„=F¯À›¬§õB?ý~¬Ú©/?pŠí’?­Á²ª-1mã]H~ÿó|Ïxj4:‡2t&yvÕøQ+û³­><ÞÕzÇäÃæyãÌáAøJ–ÿ‹+íkEKÜßl¯±•Ž:ÈZ¹È3‚|åmf›_Ð9Aý^by}1±ƒæ<âq´Þô§›Ñ}Õä ßt¼ƒ }¼˜i  8R7Í]/…©Ÿðóÿg3B”ýùqyÄŠ­\)Hרe¿nïùy̺ß~X¼| é Ît<è8P€Õà† ß0Á®´Zgä`|_C´ÎSI[&Hûz¹§Fãölúog$ÚÖåûÅÚí‹…fh:ÈÌerL”.q5#³š¿¼$ó¸._:Qæ!æúˆð}ÖÎè;‰'ýrçÞdn}›“àUà Äi`›æ±ÿhz?%2ÎKwÏ— 6 Jí” dæ¤KÊLt°©ò2›Ç…êEüÿ+c—”F9ÿá/oÖy/½…˜Ç?jxþtÚEvÏ¿iží÷}7列^LyÜ–Gÿv¡¡Ò•Šæå®ÉM”o!G»•#²*êð¿œ5K #’ÔuDÿ×ZØ¥õŸÊ#ßN8+¬ÿ3—±yûãF&ÇÄñ§Ï "WrcÊáAqü;#¡L 3—»(ƒV'–%Ÿ³<µ…Èãÿ®Äj9ÿáŸÃɽî0ýyV>p+~Iòïe\¶Ló­ÿøiÉ8f?Ÿÿ‰Ç›œyÙ[‚;ñÄÊãèëª4€e$<þou`¹–Œ’žoQ.Xè{ÿa[D^Dë—@Š\Š&¥õŸLLÓ&©N’éòê ã“Òuý7þà="sýƒ59þcbŸ$»y$Û;ÝW:²•"é£k÷ZtÞ쬶–üYxk†ú£¹µ­Ök´óD|Þj--±–ÿËŽÇïR÷ b#›ü߸‡Ý's·Z­{‚íÅé$H¨Èµ’—ÿñ'üÑ&6 òŸ`ü8ì²þ㠀؂¹%‘ÙHnIö¾%„Ý7Æ}é°Ä™—J˜9jë2÷5úrõnÆÎRžeÙ0s#°ÃLi¾—E¬õ.øÿ¨þ ®Ï%o€.ë?î À¿sÖd¦Éy~ «ƒø…‘"….–òJ˜9b5OqC°s%ÇrLµPlQOåç—–¹ÇÈ/2#—)ÿÅõ?„ÏÔÿä ÈžŒó'H¥è²þ›µ ÌùˆVŸÙÇÖI¼ždxWÎs2£7·ÿ+ÂÙkñ›ô*°.·ŠùœÞDìhz‹ÈfÈuC錄ŽRþ]çÅH°Ûûßi!b_³˜irû¯p*×2;'ÑÈ6Ä›²Hµ £—šë€ÿ%iª19×K,Çι\G¸äÜ ÷iýŸ@Q÷$—îéHP¨ÿh¾p‰ëÁF‚býö`.rßC¦-zk¾JïÿØ–oZœ§Ù}® #·s£A#u3»¶}ü‡>+R¬Ec«4±åùŸw|Á)Ó)ÿR7;âŸÜâýÒñ½aJsôwo$Èó?[œ?Âó|/ùw§q?Á~ÃâÁ—ËŸˆ:cëtf¯‚’Ðd[DŠ-I¤.±×!ÿ%Š5î»ÔòÃüÕ¨û—eƒòàSÎi9®ò"É]®T;ƒ–i¹0å¡©ŸF‚Ã4‚S.ÜØú.¸Y´ØZ ÿ’À7%Å[•ñßß!ÿïo ÿA“ãN`ú’ÙZ Q>kI¦l#ÿ5ÉLF±V+ #Ÿ–ør5;”ãc7ü ý¿‹ëºÙˆé$Õ=åÒr"þÏ‹Ý}$(Öÿþ÷ýs69>Då'À.kÿ¤ZÉ™¥ÕþŽ °=ùß•¢T 0ý ÏoŽ^‹¾Þ5ÿÀçù'iÝ9ÿâû/7aóFÒòI×½>V¢þo™ËyóÙHí,þÉÀzžÆDå\ÆH„µŒÇÿV±C’ú|ö5VPÿÏáúù÷|²Ëíža_µøï4ä;”ÿZ§*+™‚LÀÕÿU"T…btÿϰþ›`ÚE—ÿîû¬@\¼/Ø(åÿêÎæƒ ´rUnÊý§]lf1.ÿKR[ÿø;S>°4D7}xŸÿþ«•óÿA'zCì(þÉûŒ©î"®Èù—5Ýð¯¶þ[¶è¡"G`ÚdKÜÇxB$næKdµ£ø/Ýa-‡ÿ¥d\ì|¹úË<É1®–à€ˆá߇>0 I¼ò®¯TâZ¾Äí/ ÿ7„õé¹>Ç+püoÛW[ÿ7==~³‰¼ß—ÆKD©Yßñü/¹cUXÿ1=€Ë®þ¯IE(Tö&°Ç=˜è¼9P/ñ믨BP#—:5Z!ÿqwz±Àý¸…OŸˆ‰…¶|9Žÿä–ØÛVZÿîHr†ðBn¢H²CñŽ£¸[|¾9#Ÿ ßKЦŸFQ"P¦€ñQ)ù’ä¶%Ù9'ìÔ1ÿì”UÓbÖ6¿™ž¨PÖ]ÈúG?ëÙ9v{«9Ó\ÚÂ÷R…¢é§Q|:þ3Jô‹¸1‚–lœ%žAýî¿1ןS ÆQJ?Bó¨/ëß2u­06­Nâ÷ÿÎÿ²¸>í¸íçðßþûÕúÕqÅgwmÚ-«›”‚|¹.Ú½v+–Å[¥RÊm@² (ŠT“Å*V‘R%EH¤Iúµ*ôBm?5*íµÛß¿ÖöÚ•jЍZUUúÿtïcÞgfî^/Æ&9rÈÞ™óšó;çÌ™ @õóïÿ#åÁ‘Òèh©üõrÆK4ËC®îìŠ+ÀŠ7u÷'¹@ÛA±XJ½Ã#þøŒe*A‚s‡áçûÿ<áñŸÊºeüs]Æßc?òŒé¼mSü‡Ü+¥»º€©‚oÕt¬ öþM¬ÐCÉ>yÚî0ì<þlg%Õ{0ÿ;̃öä•3Ìý|<“ú?qð¡…9/IüĨïü-£Ë´-Ù'[¬¾ÿ£&Àˆ'¨ÿ3M¹ õÏ6Š¿ì”H– ß5D,"ñž¯lü 8‰Üçüöh]õ¿ÉGp“S-àe ½Ö‡ë5ZÉŒÝÆ¡;C®CïÏ©œø:tø Þ}!R“£@@[ ð÷•ø Ä?•„þïïÝæ±û}ÈØõþòeœ£û!xxKpßÿ7»‹¯vmü:þ‹û›<¨ ¡ÿ£Y1‚Ìž€ÿÛåj¹¿ÌUoùFÈØ}üÏ °vÚø¿Ÿ~NtÙüg’øYÂÁþ þÒå ã/6vSèÿa×ç±sÛW5êzÿÏ¢÷IáÇE69XZÖø¿"­@´oñ3¦I‹“ Ía¯ˆýH€ ¼ã<¶^ìªáõßõúï©z4¡ÂÍÒhVqþUÉU<´oñOæ¿’BdEª ¶â OÄ¿ÅõßUü/9ÿ˜±tVµ¦àþFGñÛÿø7µîkñ§óýt¼àO“DP%ôZ!$…þ †,uÿw*Åò›8”ûçÙ«~Ò£Œ€ø CìK‚ÿ.ê_žäþ€-ëñ/ ¹}ÒÿÓá?òêÍ›¯bú.v'W´EüGþ£êÿmz¤Èß/þ ÿt—LÛÑ7ˆ?[èd¸*ÌÿBÿw Á¨PòþÏé z~8Ñ%§Û":¾—ÑÆ`‡ó¾¹½Ûø üÿ¢Ç_l@ÿhJH€pÔãÁ#vêûßËCe=ê ;ÂýiêÑQŸ;ë—Cÿ§ÀTø©À_º‚%Mÿÿ©[Æ@úû_v¢§Çv<;†?Rz2 M 2‰ø×ãF")øÓÈn§LYÿ˜iƒÕñçZ’úÿ©bù¢7ì>{CÄ£«ýÿuÛóâ4‰º¿=® C[ÄûVð9,h…8þOc&KiŸÌF+HÝÿ“¡>·xïܹ·B¶çˆæƒ1§ýoÑý¼WÐýàkŠý0ÊÀŸF~p;`Jüã!§©±ÏÅ€?åÝú?ÛªÒG1OV¼»ÙÿG+ã\†ôœ•ì%p?ø°:Áÿ™ ÁhB·FPÿT÷y!ž…<š†þhÏôw¤ú· *¡nÖÿ7@2dȨ撃/…X $j£ÅvA‰ÁÂï—ÿ1Ï}R¾¶‚^þ¹ÿýémÚ!*#oeº€ÿ”F`Š-(¶AÀ:Æ¿a” Buî[àa&þÖ5*Ìÿ64­…ÔÍþÿ‹+c$;ªC÷Žþ„æØá£liVŸþie†y£ÒÛ÷‰¦§&}ŒÏvžðäúo—º{‘é8žw³Cü±ûAZôØjZÆ•!_o`ð§ ê ÀeD.2Ìû?š&ÜûþŸEùþ3I†ØÞéJ¡£öÐfücŽšð½¯ð_T»Ÿ ÚÌøÓŽòîÿì]·D;NÙÊw0ü·ÉB &äÞ3ŸÖ¾÷þOðŠfL†?‰„)lFí}ÿG—*l&•ÜÁuXþ–ű†<£PÕœI@¥³›ø¯™[ÖMöÓà¿÷õß{²Â$’sÁq¿ƒrÕ?bˆ¼£–ˆ–…ï(54ÛZA£æDß„Dd>®¨Õ1F_þ¡í®;øÞïôΪÜ~/O<íoˆ§WK`+ànX= ÇRá¿a’4Ê;À7ýÿçiúæ•“}lv¾yHïªÚýè÷c|âgÆÃ êÕµëj¸v Ýî± ð’'ÀÞàÆŸÕüqjÚO½CˆkßÒ:jcwDã‘£ÝUKXÐĈ|•idSà¿„—j ‘š¤Ri¢Cü›»ëÿ·Òôÿ¯•\&Cœá[ZG7¡E>"¦#ÇO#«©ãè.þ–Þ ¿p“8ÀLxiBÂ~½ãúÇ5m÷¡læM¦!¹áæFmÿÿÍÇ®{œ¦Få¶÷ZFe±M›P[Äï¿Åø{¹+‰R½#ü »GÁƪ^ΨXRÍD›3¢„V=Ùþ‡ï?Uò¡Ôý¿t$Ÿ=ZôXüKžá¯íÿèØN?Áðö „4³ËÛâvè=i †’\G¢È¾¼L,€3…Ňlu†?î5œ‹”¶åLTš°¦ÅX@œì*eÿ/—+NñŒÇŠºÎÙQßÿs¨0L3nôLUûò ðÒWx­â3OB:–eDt(ùáCq^â8 þ4'ÔÛ =H‚?~¯Û”øG½€[°‹'BFÃýž^ý¥Rµ<¢²RÐjwxƒ­ !´ÄCÓvÙ€¿Ï°Ü—ê]ÇGé?"£¨¬Ö¿Ê’²ÿÇгó¿mçCF}ÿ¿u’¤OaÈüƒÊ^Hÿݼ_à£.ªâ‡0˜Æ›Hw§(Ò¨YÃ@Œ·J´1)¯%2`Z™œêá¹Ç/”J£vþË"—¶çxµGe.¢) þÌœÿh}XS6÷†Å¿Ãï[³Z|w‰¿üÞn/=þÓ¼àçìD¸ÜIÿˆoÿNé|Ĩïÿ·lšåCè¨Êœæ¤‘÷ܰD&ÿÈ Å aÔ‰§X’-=¾‰ñŸWý-=®Ô9@‰ÁBü>V–xŽÍˆ#í¼ùã<Ç(Íÿ½(í\*ŸjGëý^É͆D' $ qŽ ”*p<à˜þØ]U7¨‚YÌ*¤©S€i›Ù©J¨ÒëŸ^½ÎЯ¯+Ž—¿~ã:OW?ýð^„¼ðˆùÈî±Òaã ÷Ô …)à0,­kx—Þà&°n$–{UP¸£¼±Œªd–FCT"5e²£pÆÞ(>¼Ô7άPƒª’ùT”ƒsø#OçŒýn2dŒ——iŠã5MI¨ã] kía°’î |¼ÏjmuÁÍtÔóÛ#ïdªáåà8åâ·Q&©¤õY½å7W¦…cêQËßY}°OYÓM6Ú°´êi±è”î·ï±¿J­a·4÷lÛ_jLv[m'tÞ¹Ð×oGøWÊÇo$Äo¢ž„ž»'µ`q_/e?ª ž¸ÿ÷{?I|§D”4/Gк}Š}•£?³«~8—_{Ñþ|E{IÙ\æh9zû…×ÿxV9k~E/'õöÛøí¸öö먧‘*Šø¹ç–ÕÙ­Í––tz é6®tìZlEÑB4âRY! 6׬f7k|‘˜³Äh¢›øYÜ/`bxóã8Ó²|„91÷ÿKè oÿäÌ=ç\­_^ ÀÉa?7½Qý'ÛŸKǬåJ³KµQÿ¯áè»æ1Ç~຿]Ü”ŽSF½ßÞˆNÇûö””t"È‡ÃæÇ?M}–ì~Øþ¢©3¼úÅÝ »í£ønQtgÐ1£Ë_2ÂzE:dH•uhí¨ÿ¿Š‡€C˜y©½~UÎôÊÒ™ C…'Ýîøe÷ãþ]œ~·¨ÃÛ{U4Ç°æŠ ÌK'äI'‚ŒXxÿ3¾ÉãöçÍÞì°û'û_í{~רÅdç·£æïãô»E™¼ïwlýãV¾ò‡Æöçï ˜n/íT² *é<©»¶ßjt‚ÐT¥¿½}FýÝRÙêF¥útºÿEÍö¼tÈÖØa°®ô´‰’`: f±ÿ9…G?‘M@P»Feô×x×_4·Òú›O¤£€¦•ÖäüQcA: d™ «éþg'?•ÎÙ;åCR½86§¥³@†Æy_TƹàçqÜð¥ó@¶XéV7Šî«ÇKv/·ÆT–NÙò¶êÆŸ<±æ¡_9¼¼ ‚+ D¿qÞØhÚÌTû«¨¾‹¼wƒvÍ¿°'2ÆÄoÝkûfY: Ð%{£ÿÕAþ'é$ b¡[ßÔ–šÅ÷¤£€€›Þ…ñkÑV³æié, âN³6ƒg(¿›xâÛ|Ón{„ËŸ“x͘¢1é A­­Ú™%Z¬ÚÆ RÒi cü¨ºÕšRù† ÛuL÷릤éVØ*v@çè´æL\¾6w ýßA9•Îý¤õ{„àž¤ä•ðMP}w°ÖOy'?ýeyôÿŸ?TP|‡¸¬I/3&¾ÓTùêÀêïM=ä?”"¸öoýk&}#Dè§+µòA¸$Äðý|´<±:kq-½øåpûsPRô\²2í¯ þâËÆÏ¨¾ƒNúëg4AÃ6®yï×Ó¤û“º…éï½¹1»™<LjæÃ)-²¥µ&uüOúêŸ`¸F'‹_'=öcõ¹=é45ÞßmÏ×þÁÏQxŠóï˜ÞùôXúԴ˃žIÇli*­Ñëë{¤y¡8„õÏ5:Yùn›¸òû£ñªtÀúýödo¼a–¥“€£Ü^tÓ“Î"žÜ£¦¾£QñÕÑkŽ ²Y@@¡tõZüëD0ˆà¤õsú¢^«ÍnH§œ~o=Ç è¨Ónë׳Q×èÝâæé@ýÜÀ¤´RýŽ*]ÏÑÆ¹t ³q\¿…Ãï° M„öﮤôZ:HBùÝ¥Õ\ò;qñǘ.ÒÞYÉìÄ•WÚ€‹rÉŸ>ìLap§±‡àá?6W׉ endstream endobj 65 0 obj<>stream H‰zóáÇ¥K—¢¢¢*Rllläääj–ÜÌö]q åÇ)«4Tž¼X`ѰçÔ”n&)sNL›6íß¿[¶lq0XRQQñïÇ’EGî¹ó䎄Ã(C µL+Œ endstream endobj 66 0 obj<>stream H‰\Wš¢0cûKi*WßÿE/I x‡ßºŠ!¤3™é0M?Æ:\œcLKJ9›~DyØhŒÅ·TR™¦?øäCÀù5¥%fç"‘ø«8w^hRJåçÁë„T`ýŒ+lÄÝ®ÛØ9¦§µ&†@šDb€³Õñgcÿob¦¨ºÙ ¬£>›ì¬ mÜø¹†ÉZ¼V³` ±fêÌñ ½á[ì ˜$WJÞsöj©È—§XªC@R FÄ\Ï Õ…=Œvbˆñ%Íëóº/Ô5Ñâ*+fäቨáx½)!ØÌO$r-N?±)¸x&µ°QN&x›®@–¸öiJ‡UL¬õ´/&ºˆ@Ï ùª3ŽÁ»ðôJJ’ÁÀðrˆV¹€ñ[@:&¥[£G’'dkC¨–`DÆÄ–:xzÊ'ŒNÎü¾ôhδMÆú<ò5ˆ§)Ú*HØQ'z2¡«º¬Ü7[Nð“ò $çÖ´ c«“)ÍÌ}ïïãކlgN²B` kZ$¯å¹Öi˜X‡0-àñ·Û›x5Ë<²zB=”%-Ø{œFÊ´R;L-M, l€_=<57(~NOHÏ:|£Ö¢p.º0#Öâ¼8çб¸ÈÓQN/·;ظalûžý Æßígz·Žf¬¡.š¶/ÈãÖ¿ üÞ¶.¤F+æi¿@øÏüteŠ}݈\>\‹Âç¾ÀtXøÉåõfäwòt#ÝGÊk7Å X`V2KL%˜¢û†¾ßsÞûÇ=fvÆÍÀ®ñ†¢jí!ð¡rf`áÔ½á¾A/ø»ƒS©YËS;MqÔÃV ËoæQ?žéh¼ÚJrJ,Xõò‚Ð;=?+ÕüJjôÐ.cCz鱿“°öjÆC:žo/ðGúùýmŠ^Á.¬î·ÐzZn{œÌ Û>þ‹¹‰yÿŸ¹/0€91{1¯ÿ€{ðÞ§ÿ4”–O„„±CwƒæpÐ’_¡ ZÇ*ßw/1ÎbvüÔ·'{ì? ìOê?R}„pÆã|¶7^ˆ7ms±c‘Cü (Êå1Ð; ˜È@¿’ÙŸ?¨’ª"ŒÇïR»:kLóíP;[Šöx÷sæÄB´§ë8¡™{|0ƒš]É jM0é6:KÄŠmz¨­Ëª*,Ó¦›y— 5A@â{¢n fŒ˜§#q«ÏÊ×%!x‘ëD¿¼ˆöŸfÎ&Î`›¶R}`&©žÐ B¼ÁFÌ3›.¢g¡dWBèØ§‚[ÆÁ!Bà äÛÑHµ^éÆ\`¿ÀfV«*ˆo"Žì{; šŸ/æÔhS* w‚Mï`Õú¾™¡9awk4/Jü-põÀQ·‰?ÿhæ,ƒ$66€Ç>É&[Ø­â"vrÓ“Y)©Fú=çљѳc`ÉÊùÏî`0cL‚eˆ×*êè+bREº%°unQ¢ÃÔLtë2X&†þ#x—p{DªÆ–*þWX«ÆãË Ïª%x‚¢“oÎs‘¤ØåÞû]u…w{°ñpƒÊÝ`ŠÎŽýe…qæ{p@‰˜9<Á˜'Ç~Bf S\C¯ˆ_M¯°y„ Ý_ଆ»¦e) [@ç6}ÀK³‡“ØÑh´¾NœúÞà\Nktr‚Z¯©Ux¥ï' ~ ìö."b“]RUŸ·Á†… kÖ æ×Uó4få¼]Ê„«³˜ã‡``_A-gmk¥¤¥à“ìn0AÎi]8¯'3¸û­ðPÊë…9æÐŒ¦³,iUÂÖ\ÔW;/Ð`†ŒÊ”¬àDJøëegm£K'5™y³<Œæà¡$‘Gà2½ÊÊkÍ…íh¸n¬qoý¡S0#÷y4ù¾«»qÉCôÂx€üšh¼¿6ú^ƒö î{(n0tƒ÷fN8(#çÏrÉ@—ý{v¦aØ"¿åu¹V¸Ww·¼“9‰ù³,K‡~V>¸¯Á‡Ms “&(`—õƒcÞÙ:Œš¤ [ÏLÃÙúêX<êcÑz€ÂÓXáÓ[̵Š=ÍêiM]†…õsöQ˜ L³Ï±t,äÂ(Ð`6íbªq>stream .ºþþàüàþãÙ¸þ endstream endobj 68 0 obj<>stream H‰ÌWËvã8­²­}4-î]m}@ÚVïc ÈÚ<ÜÏ¢NþÿI‰/'J­†'Ž-ˆ¢pqñüñc]?û¾ÿñÿº~–‚—íçetËå2=Ntw|åÈ9N¿xu®ZÿE—tùƒþŸwƒøÇ¥\ÇJòDxÖÿèˆÚp²ìQ8¾‹×æ+/€¢q!ÞÄTßlXúܺüÁíú»¯×jjQk[܈‘È„“½ à:mêŒ"êq„ÞA߃˜˜>¡!ÈrÄ’£[ ÃíówLÞ܈„nMƒ~ßhpWHPö=YÜHhcx´h¸&·Þa3AÛÀM“ÂÃÄÎtýÇëC~£p`6}RKpLÁ]XiøÄ•–Â’ãºAx ¿¡6zÓäµp‰ÏòI)&¿s htÊÒg4DdF{M=tfJÅj{áÞÇyˆ¼ê¹º‘r ·ûU!Ãx»À°&§6 Q¦Ÿ¿øyÝp^ï¯ßÇâZ×±¸Öp:úkˆU ´=³‰Bµu&¾¢A¬“rÂpƒ¾ÁC)Däã3!&ö&ÃPù㈃·ä3 +5Kê¾ÇKƃþ-»Ã¡Ú',.™É«•çÞ÷5 Π˜Rpãg®Ä0“ˆ8¬Åa%#zo¾š¨æÁ!åBZy@˜\ƒ‡Ä8£U ÔŸ 2j`}ì”ñ †yh}(µ8.z:…ô­xHŒI^jAÈ©™£ua ‡Æ~ê´„sJÐõ_ô<ü¼È<œ7Ä# Þ™Å_ѰÕêã’ô/q-­’Ü5ÈYó’.+”´Ä;¹÷¦®©ã¡YyhEC‰ ¢?C½unÙüÐÕÓýRíøÏÙ“·2¤ÕþAJ‚ÁÜE2äà`dO·+|Ú(Hu•;ð¾aˆÐ< ò߇ƒÌp® ‡ÝezJ¶F0üÅ ?ôwÄ{¡ß?JEyè¶Ÿï¿ßK ž0 ˜‰Ä´\v…CK,ˆG[éQg<Ò ‡L›']»' ã6 ôþÙ™Þ5 òÌÚcŒ€ƒsÆ|« þ\¼æ%¼ëèpGßÿuVIç«XÂó:-³ÛIƒA2pÊDª+ðï¿I1$ô°•ØgC8èqR,þQ&:„ÑYaè¥s iÌŠb ‚À· ”„ˆLW§Ñò^b°eÒ.íwüçâ}Àê‹SHfu}g£!Õ—fÈyàn‘<;dÂCÝ›²K  ;hÞÐáí[}ÑzÞ¼"ÎÚ78-Ú»J Š“^ê¯ -kº“œ†ŸÁaýS¹4–FìÃ-SÛà»Ëƒ®· †Pû#v(á mï{£¤#Ý.kÏŽ~†…OYKR6v’–ä³ÑÀŒó~0òÓçÆŒÀŸ×†Œ?çÖÞÛÊ  !ú—o¦(òâ– ÏI<¨ç¬Jå-zâ2²„ÁñÑE½¶÷nàIßó=ƒ·ÅÓ#–ô,­;ÓK¸æÕ«á£Œ°®ÓD/0…•‰iuxçôÚy±‘„¿F.1Ë·òϳ0…{UbйHªâöÅÙ˜SE&Ò7w¬<ÀáÚû¤‰©p%úN¬œ^ÿ+¬ OH§4±½¾—>áÁ7 p§@9-Hµèm`Ö[þ S{z.41QË•¸4ð¦B\ 9?W!›áƒ‹ÍŽŒA2¦¸ ÷°wÊ­ìÇádÅ­4$Aî Ì€ÓŽƒgVÎOhЙ žv7=aø{‹çZ0žçð.Ó\ì¯×vÈJÑÔÒ²QˆˆÊ•ðÑipû]IE~bØåa”B}縫Äê£,K|#ë–‚‡Éi¯¦Shƒåê`%Oû¸I Íîüó·®6ÙìÙç@5…0†o4/©FTTfdÝ6¿g÷ƒ Ä*®¤g¸‡ñÁCk»úlðuàRÊYuþ;ü}Ýä“ð¯å©×‹PÂ7%¾ðm«…šâ9>f4ðÅVáªpðýTsx¯6i9øSV_Úx˜\H‰ø÷>+2y"î£3o¡üñ7 Î»™ Æ(êFɨð~ “žlŒ¾¹ßï/QõC•ì2)Èëblì(oøÁrßj•)ÿÎ`…Ïà;Ï€ÿ¿U‡®Â ¿àä|C#Þ›ð°?-5x¸bo¼Z«6¸@¹â:íîÀo5w%#zÊÂA ¢Ä Hÿ H[>%|ƒÑýQæÕ@Z·„™íäò, ‡®–Qâ"ò€ZV nµp£ïŽ«‹LåÃÚ³pxÆÃyu*µ¶ÓÉå½ë¹ž‰¤Í~ó›u0iäx ŽÚžRBµþCˆ™å+{?åAT{½f<0uz£õÜÀ³ñ?æ«d¹qˆ¦lé>L‰wÅæxdæ.RÝw± øÿ_I¯àP¢<‡0ÑXH¢ß{½² :hŒC ê~É·ðXÕj!ÃWA‡L˜t·ÂÒ¢šM¾°Bòü¶ÿ}qOùëÿwýÚ»¯1zè¢Ëð0ÒFÿï]: fÇq|/L¾ü¦YTD·×Ò€•µ`"$É_¯/‡ƒš¾Œm†¨»y 4)ïqè:ó?ÓUI:ô@kÆ„NÒ_‹I‡ÖuäÿM‡Of†*Iƒ$ƒãŸÐ!ÿ€ªÇrXÔ±m²þ)õÚdãïŠü®"x÷Àþ(’äuÀXÖ!G÷æF±½jå(v ¸¶^$ÀáìJLƒ|=feHàÂOè.ë4)|ž1ªIêP¯’i£Dp§Ï„ƒEŒ€K]ý¦w½¸ôD#§ wðU[ŸZxh<Z‰…€iŒÃ‘íÜÅ2ÁðBZZoÈÑ(:¨õ\òõ›ZZœ%€¾àJ#†)5OÐýü“ »§øä¡hCÍKä’U=z<º e Çl0ü¤, ÷Ô30†ÐPYÓUr¿Vóú¢+ÑN¦4lÑ]Œ“µ{KÛ ñWJ“2œŽ²çu d€âv ˜Ø.ºR^†ýiiI+A ˆÌù•ª[60°’ߦÄA¤ˆØt¥»öï|Íÿž×sƒéPX_ÎM”f­«ªÉéµi!ó÷³Í|nqލQ\ˆð@êÔ÷Òý¬r<†šrëxÜàz}€úÓ~ú9é± ‡CX»¤];º"¿æïB6! ‹ÓëxB9X¾å6yȘèi4Bò&j©¤à6†~í’YRŸÙ˜ ÔJ§»%†ÁOæW±uÔ¬tàš@MJU5TåfIeøU /P£½B½Æ 1ÊB¼£xû0¶ )}°¢ ‹ƒFEÃϳOQžãCíß(9‰„Ó—\Fµ_ ñ4FËÑcýöc¯/ëÀãBFÁ Çûa·" ‡‹OXË]Ó—ð³<½Ê~9^h¾ƒâÕòø¡žüpÆëÇ!ÞkY‡8ËÏÌ{âw#-ýIýÎ}Ö³€}Î…õå\Á® æN1æÈ6#.Ò(ñ 5…ĘŸ¹òƒu©Ðnê°_ ù§%7®ˆá¸Z2‡ä„‹:„0TTcÒ;$þѳÝtý©×w(c†ªÞƒAâ׈h±—©ï±<¬%R=öZ$õ‡: UvvÙÒèUî(FÂx,‡µæ%ŠSx€;…07µˆaH:€s‡Á’‚ q×{ú%oä²/°]|dºƒ³d3Ã0YŸcÆëàƒƒ¡ÖST$õ…ò0î4ܲÖ2—0„ †à5H‡6šœœŽuV"ë¾^ü±­Ê@Å÷Ðxhˆè]Ip ó>n£Ôq¿¿çÏ…õO­A™u×oß|:ž<]¶/C­ꘆXÁÖ¼méPd»,PÒ  ÂZ%Ãö`poâœÄ¦Ã]RÁ*H‡x¼=ôíåU”ôL'j3`‰¡ÞÄ0òÛ3*†Ì¸†ñð€ÓWtXä¾ÈÏ߃!:¢CŒ †S†7ÂðÓtPÛ»:¥¥†©+ùNF˜êÀ`‡ªÎ„Ã¥}%-=ÖÚ$r¦j¨–ª(3Vf:’˜¨@ˆ`ëêÐ|~^oûÙ. ä[ ÛÄ¡@Œdù´…Áùàx ¯^q&ÒOÙ~{¤C›læ–ú5bá?9ÂpÞ endstream endobj 69 0 obj<>stream H‰ªYRðeGÃ; VhyòbA@EŠƒÁ’7~lÙ²¥¢¢‚!**jÚ´i­;n-:r§ áJ€Ã–„€#{*2ì(I¹‘r"'æBFÄ™U*köM¼t钇ś .&+î½þtäΓŸÿ~,ÙråÉ¿ÿÜ|ýáÇ)›'í»´íÇ)¿¾þ÷ï+Ã( URS endstream endobj 70 0 obj<>stream H‰¼—‰¢£ªE91Ô$Î1ãë¾ÿÿ‹¯ 'L4'麷–»vòC\l6ÁvˆÀðh‚Ð`ä­ l÷"äB†ú§”BÀ/%$£ð“R —¨ ¦ìQÅÉþ`NŽû4¤‡,Ï JÓœvAHY-Ÿo]ë<_AÈñulÔï)Ä’á$ƒ˜ 2'Iõ6¾ìK™ :7”Áaá£gß›ïñC”ëÜ1¿,‹Ûf»EB  øzzÞ ,úW0j e¤jv¡\ ‘FÚ»ãxÎw»*ß•—bÓãµÂ‡’VIcv\<ßºææ‡n‚5m^Nýñ„˜It0.Ù.ËãìP‹zò:'”»ùê§×så881P®G‘ö&øoYyÃß¡dRÃØ #D£;ÞñOQìvyVäY'q~9„iVÐ<¥4)sHR^Ê¥S—VíÙ”7i˄Ѭá q$’Øm]>¶ÿŠ£cé“=Cl6§Só„Å 8iý,n‚¦íˆÓßÍf]‚†1q‚V†"ä'‡‡ß²MÙ²´Ô,Š^æ¿URÈ]@PÆK Š#ä윒ãÂ8´ep±0ê˜GfÚÕjÚÒMû¢6êûŸ±|-ŠÛ)‹ÍöfûÑ¥³ï°G9ÀQjÏ_êb(¤ Ãoð¸»)#‘š>ÙÆ)&ÊGž?Jš¤ivIiÁÎÅ#£›jŸRÒ 0F_Ë ×1R:›éR)³Fm±‚ÌÒèäjéHÓžF€ql ŒM6ñäü¢¾³qO– mJ?èýSNØ=f§…vQ ¨&õ!3ÖmH"„ïMZVeÂè±:®ÉiÏÎç둤Ù¦–]J,næò5,­%°øbÕ:ç*›¹ÒH¥ƧŒGž£qš¨'l>Cõä\ßL€2¶0þ¯÷„ÍøszƒE„ñ®@#¹E¨võA½êø^„`ýuí"Ä+e ¹.¸ŠXÅ¢`4{äI•ÓâšXí€æ—ƒgÚÀ`¯r¯…Ð#ŒR'n¯bšµ] #yYÂŽc¶@òÃ8Àïw¦2@9ÄH]FF3é·ÆÒèþ°Zc ÞïQ´¨pi¤ÐÅù‡)´¾ÁÄPÙþ%öa^þ§4>“<Ýå`"A$ÝH~®IeÙWÈŠ/jé“Çh5Ñ#™6–ÁhÚŠ,m†öîÜ›k1b9ì²ûq›MÎ7§ŒžÒnm–!Œ¢`¼ÃÄþ,…… Ma(åGtˆ£ãw·ÖÚ\FU£ó ‹šã„ñ°‡™ùWIR&xGý27ÖÕ$c¯0â0ô#0® t¤Þá'‰zâ"O/J”ñ€C 3<øÃ“mò.ÎZiÓàÞw+`„êå†Ge˜¼5·Oa¨ã®/Õ¨…@£8ÕEÌo’tá?˜‰2;Äòœ‘äò€ü+IzÙ—%ežU䢙§/j–ñBO…±}=áÑLiöbŒýN˜»3[µŽ³j~4ƒcðÉpSGÒèñIœtRîÎCc8Ë(D]‹ñ{¬ÍÒfë8°Ì-bèê…“uȹòzÇ·µ81&i·Ù°³lÜQ»LÞ4L—¶&ÃÃŽQÜï )Q)¡åzNÊ38È3Ë.ùÊÅò,Ÿ–ê…Ñ$p*<0N}ÁF˜“ƒq˜Á÷¬Â µ+5n’¨ÇÊ81•ϾCƦÒŒ,Öi\ #Á½#  úvk,Vo«(eš’H¥M“-‹ÙÕÑ´Iš¡á,kCãX¹5èhüãwôPÂ$Ó?g du­òìS0zc¾æñÝÕƒ±cñäXÄßö` û+N'`?ÝáĽ0ͨ˫ٹ›2žæ®óv—†ÍôëKéöïß…,¶Õ ² ÁCðŽ7ͦêU4p»)¹ɶz‚Ù ‡,¶–ÒÁÆORb‘$P¾s¶?Èz]žö‡­_ˆðj8áýCù2Ÿ‚Ñ6Kû#õ´±‰Z¶‰Ú±èÀJŽ]á•]KS‘–ÆOM >Ëõ±ÛUKa¾D1_ã1ô~Y78eÍ{0în€œ¶† Œc4Õ °hŒ£dvgrcmaüÑÞz¢(ŠÍ••ÕÛG²ô\¯(}õÍ´|At;ßŠÛÆåIRi÷g¨cÒËÅŽò-‰FÒ~ù30ŠÖEÎçlHÇ÷]ÿw¿ƒ´3¤«*_4œkul…Ñ*¢¥²wÈÕìͽCÝëhDûH¡è9'ܾ4ÐgA\'‹äû0 Ÿ9tš9îMuúöŒä³~y†æû}Šþ7síã*æSá…Ñpß(/ŒuÑþW6Ø$ £‰ˆ<ÿ%Š6BÙ £Æ²¥³ Á-‹=$µqäø—kaTJI¤rv85‘|Ê"–'¸\á‹ãÔ¡ÉJk¤ë0@ø] ‡Uzûæ¥áÑ£Œ0+¶¯÷ŠiB똠8ºøŽ6Ú<í`LÏ¥~žøM#žŠÁk÷BWŸ½æ a£a y*4DÉÄì*‡ž‘zP4™X)<¸R¼…y¨–ô˜þBÞêêxÒžúWáq¼!°EÒ{ÁrKåø‚+‚£1]'"o¯±‰5ø}œ´4Yz“Vx4ØG­–{aôÕn”} F!•'<"’œk=lÈP§kô ŽV j˜ ás,ºèÖNZá÷o™âBÍ_ÆB6˜¿¼$:0¤”ÔF]æp¾ +TO]tq‰Šc×oL¡qŒb\ÑŒE'w¹Iï²ò˜Óf…ÂXàý² ¸%ƒ Œäì¯:êwº’Õô|N´üxFó[0ÞÈŒã2qéŸ+c’Õž£0fºuÕÒô?ñÐÛ÷©ÇQ)¼Š”lÞ=óé‚©œ¹VåëÂm)ˆ0.ÿY 'pu®`t=1LH´°§%ØDeg`|‰ú”"rËjgŠ’·ŽÄ·EË|áÐt`L{cÇ¿øŒãÙ}]•Çùt…(ÆIoˆËæê×G’²©YòšD‡ i;63B%OŠc)ËkÇ~Ÿ1 étÑUažF°“ÙÁŒ¾¯ªvde< ÇOf=#‡/×_'¼½Ó•\è•PñÐv™»3ìÌv,„­âÑn W„¢(Jfÿ\<£‰Ûë nÀ8ÔႆÝ}5þÜÑýôo2«´YbT/`Bt“q”Æa$éµf FËb9 œ‰‚}} ¼E®EY´ÿõr~Ú§ÇÒ,Qσ{—€¶~Ç­ˆ‡€©‘¾£d C¡BÛì¨Éýa¥T,ñ¿å ä1rTÂ(Âynãï(ã=ŒZ}@{¬þ`2k¾?‡“—|Ùm§ÎzˆA6ÒIIY0µ¼á— ãI¡ÊÚ£†›†ÆþŒÀ8LõÜFi9 ʽía„ÕƵáè’UåQÀ­Ï¢Dä‡4C‚äuì§ŠT `oÁ3Y Á×ò€Î@¡­*àøgÙ‘ó9ø´9Þ`‘lúW¤ñFdäÚ|ó?Öį†^*þXãûzƒtV›I¯ÅŠŒ \[ýÚGÕT/凵“)’Q$hñõZË€a&™½Ú»sÑD½´ù(^H³DHÒ! µËßÊPíŽý²ºõÚJk®< IQ“Ž1RÆŸ›´pÕ ŒQ#åô0%„6BÙ&ñ±Í²é¹Lû°ya4q«ÎLèßÜ€±¦—ï/z=°Óˉ!:óçE\.“ã:×$öç9Ï0öŠƒS‚¶™È•½bR•Ñ. „‰ö%UJ¸j`¦qŒ}­ÄP  ¦+«àE'i5HIi«ÚàèR¥; á¡»` Fýã¦!°$ŠUf£B° Ot1ÚÔD(£õ³kã\Šª/Ë _©àìðÒlÍé"µl¿#²8kŒ‡ a¶#94Ÿ¤{ú¼ù¤Oûz‹vˆ[³!¥ÜWU•ýnÿ]'kª:h{5ì…ÑDÃ^KèÃ^Q4jjìø¾•N5ãÑl‘Äù‰'…ÄÙyà·P!p)$0L0Œ0ºÅuµíyR c[œÏ…µz9è)k¹Ým%$ò{É}„gÑáí‰êÈŠ7õkFL¡ 7F:væ8³´/dÆMUñ±í×~Ïð6UsàV‡:Qž†L˜ˆÂhM¯‰vôY…‘Å¿“hË$ˆ\cÖ;¥Õ‡«VÍÁÕJz5þðÜpÑQÀIsŽÈ“È%0:ŸTƒNÖa`䨠>ÜIb $d"•‘¡ Y–?nièç|§DªŠ1L¿l4mRQg4(‡õz]„û,¾Æòx§yù¼ ô5¢-÷Â1ßì6 ö/59öDòòY ƒhì 58Õf_³¿ï¿ÉQáSXÕDð½ÚP`4=#"¯ˆd^tÂ2I`ʦå*üÏFÃvz/²#lr/Œ(…1ÉoVXøÏŒÞ…µ ïïïGsŽêÃ\´¥d;(SÛÆùñØ{<ÕÔP•#Y‹ŽZ¢’1ìX|ñJ-’Þº“IÛ¶¡{éäð ¯í`ìñ–Es5Õî£ü ²Ĭ9à§Ã¾ÁÕ®‘~f·©¥9 ¼û ¾Ùí uéù›0¤|.š¨ï‰ìåѪƒzíA¼_ž$<^ØVo‹¦—̉Èè£húÈ% qÿUÓ,ÄW•ÆeZ«¤Þ™izÉß”}HÁ6†Ý* ²Î‚iáÏÊLÍûù  mfh°.ß’xÂÂ:ÙØšå,j7ã¯htiòøë"Y¼7’õµ5” ?÷uvŠچŠÌ÷÷aûE"·5 éáÏ^:¬ò­ä†À­ ÄHi†ÜhUé ÃÇ‹¾¹QÙLQdzب–Ä™:2®¤W3c©J7Ó$RµçeÊez›Îþ;¤ÇÖÙ•¬€ é‘ù)ß"EQmÁÍ 7J )Z[„€×Çìd·C*ŽC7–ÐØÏ®Ô5{°Ž÷,šªF´>ê‘e¨G7YðyÙ}Q¯sØTæíÚîQGÙØÓ¢oâà Ã6Ë¿h!¶¶ÿÉ·ÑøÈDʇL‚:²‹ri4·*’QéÈq5ƒ"oÛ2ëlÒ'Ã¥ve;&%pRÕIŒH߆~æY—Ϋà+8pPÒC‡bl×ïÉÈÈâ1éÂÆ6ͳo_cÕÈ"VS/öûfûQ%h:ÕÒ™¦Á³û½i¾/¸Ï0H6ß»tä×4 íClOa©wõH6·IK¹´@$§ããÃ6=S1%Šƒƒ ²KeXYµz+'f:´šgƒdã*0š®‰vD;Yôh1lzó~Yaϱ‘Úòg[¼q ׯ ²a¼žä{s|¿îv.Z;>¡:ò†ž8]™A¡¬Š$jz–muøÞêÝ2Eú“,èYi:Ó0äÐ'Vtrá9 ŸØ´ Y=Ê¥‰bêÒÀë%)pZµ©1vF¹7;mº ¤‡@ÊÙ²| £XõK« \Pú"8zdWâK©»ÑªrøÔü<#Øl¥ì+š˜GY4‡-z¯®`j¤mFûô4%÷b¹ë‘õÒX‰.½"—y-²‚ôÃ?“·gǹ1©B€,£5ËãD@ ½GúɯiËû?^Â,2ú4’eýB|¤,?^êbœ·S¬—ýiÐbB¸˜2È)dÒ^í&“(ò…æi|À¥Ùá*ÌüŽÀ<1Œ-ùî€à5‹&ƒqz8g©)JKz¶‹À·Wvü¡û )kÿƒëk¸¯$äHe.ƒų́ÓÝsŸhæAïÖñX>öE „ÁEd\üfw¨+4©ªY5”âæˆèœ¶ûøí 7~èÖÜ,Œ³(&nŽÆr(øQ1™öÄ<«ÿÓ^.LªêJN„ÆqƒŠµkÆ:U÷žÿÿ o?’^Š3ûæœÙÊ#é|¬µún‚2FGòæ%‹ÆíHísé rùå#ä_í]°ôh~<²ÚÐt¨yÚU$ QW`œî@9Ÿß·Û¶ë…E/¾ÀÝgwi)4]íƒx윹´fФ¾?_ûÑoÍÀ"Á¸F#>1z.!²8.lø;í HrZs^|Q”q@pîÖ¸EyðhÂ`*£$ôy ÿ: 4FÔã-“jI•n¾F¢·z™Å$“áÆä·p‹­ÚH›m¢çG_äóŸÏŽv¥píõìŠîóОéߦtWw ÏŒ¾MõtJãÆå¥<Íœ} 1›Kã;0N.œq©¤l…¨‹X§b’žMY=fùÉì×ÿÊÁœ ñIÀ\¯è…ÒûIÉèïK1ß²¤nÉ4¦¥Xƒq D$nŒQ›KÃ(Å ºœ»Á×v.;žŠìtìÛó•¯è:wêLQœŽAO£Ë§ûóRŸ©">ÐsL:ï¨÷Ó0—L¤bø5,‰£xϪ¥[‚¹ŒcœüÛìM¾ÒÒ=ØHcÃÿôO¦c@iD[ÞÊ2Ò©.’"‡>j$@þ æ°ÆpoÂQTª¸äG{=µ¦;9VDwvýåä˜×^>¯¦ oä’«ü…q&0 ”ÔÖh¤(1Ÿ÷O]c…ÿèå6/Âw‹Ú˜çÍÚ­'mÎ꘷3o³X¿jyö%ø®88î}­Ë݇Àa³d(gÌÎ~³à<6Âè{±Ä‘ŠÙ]ÌááLwt×σé&;v<£îâç–þõÈ{½ÈgüQàLÎÊ0àãW»avJ#-¶³?FZ10ukOS4G}éŠ|õ5Èfce ¿„±!uÎ^R<ÊæÞøš#Â+">E1¥r4óҸͨór¥qÇ¡’θkKÆœ·ç©Twv†³£;_mr‘g1qÔ&ÒXÊÞÃÊ—g/VáoYÂtWñÇ‘‘»Hš×ŒÓ‘Y̲"‡7`ìý Ò ì¿Å¢­š×0BI@î5‚X­>¾ä?ö«(ª}?Ù©ÿ£4Æ{mô8j LOä–…D²$‰t×?cޤŽé5JczI ±.kûU˜÷`4YQ h…"Î&BO<¸Ë‰Ð<™àì<~@N€QZ 3»þýÈœ™…QÞçÇŇ2ÀȈ­\•ž·dػߴ±±5VU£Db}ßU ÿ iÔœŠ_ÛrÏ_Zc­*£Ž)‹šÖÖ¸`Ô#ðŸÕ¢Þ¶Àˆém‹GïÔèõÉSٌƆ×h2Fýèaz‡X'25äÌÔœÈ%:¼’FFPú Œ6ÆÞ‚éXÃñ.m‘ÊÕo9tC/ù]¬+ŽýÅJkÓ¦CÄQ^ámoô]M•qc%ÅÄÇ:ˆA9Ö®Ù$Œ#—i̼Ê@#5˜^êßO5coªj.l/÷ o\ÍMáFzv|7#¯¤R¼™JR†®ê%ŒÌ Ži4ø¢9æ8{ì …Âh~Ëb#äÕ|\Õøµû’cni*ʼn%q_Z#ÒV®(ñ½ªlyü³ÒnÍFš7¥”à)¬×ö`“0ši@Mpœ{Œ ÝÔ$ÜÅ}ˆH †?pi…1˜5Œæ‰‰ñke:ª1GDa¬o0À¨WÚ•Œ–ž¦F ?åuÍ:9‡zF#˲)øV¿µéÆÊ‡Â(úhkþŠ 0k·{¤ µ²6Þ‚ó¶ß¿qëò<ô¥cr!•¶ß±8Ó¬ØÆhrŒŒMç¡W|¸h¨FÍßÎw—HÉ‘½õ âð"pýq('SZò Ë0Þ$ÁÞiÄÕœ3~m„ð]É¥©²ÕFŸœuú[sÝã°¨gV—J¬¹á¿$Œ_ÂåÙ°<ikØŒ?>ö4ä:ËÜ5z‡2qžù¬ùVÄâ†/À¨œ 8…×ò¢¯ìæ&>òê|¼%ÒcþKkèý4ÃÅÑó5_+ã´S¢—”`_^FŽVLØ¡´mµÎOZ¯ñ¥KÞs9Rƒ±(™¨U\™’×?Ÿ#¨`’$¢êc¾ho)‹|bã•xƒOŸ?OG·ø‹W8͉5w1(x ¤(#ÿ¡Ü˜fS º[7\¦ðßP¹„©1©ºÛY¼•ì¬ÊbHâ´98µ¥mº+SKÕ1Tôð8ø_Ú&4æ9/Isr¿×.ÝOúST1 ÁXádìjÁ²–b0–zZïÒ½&w> uøoÄÆ›WÉe³)¢üY¨X1iŽýÈ:’hõ(I‰qèì^ø´ëºvw<>‡õŽ £øó=6K!jK‹ìE_ÔÎPUš£÷ʈD†¾¤AºüĤÐdJD§Äò›F§¨=z–bD}†ãõìŒé\ß_.V~ yc>}Ìë™ô#EE±æÊj&GæÎ(`üÇðï%xG–HÔ„‰ƒ›Ààß” ƒ='0P.Ì(ÚB€Ñ{¯õY×6WÝ›E™¡œrµÎÖÇÛu[úÿâ.¤‰]÷F¨Âhƒ02’Òùq%JkÅ5ê’Nú(ÍÂäVŒÔ¦2i®Œ‰oyYºQz$ ÑÊé¹kš=‰Ž\èža<|^úÞ¹©0ôcþ…Æ(©H̨ûÇÈIŒè›ÅÒ ‚ˆ)€Ñ(詌Æ|zã"±a–#ÿe‘*-' {0Ù¦’¹´2Ò c_ÀØ’+Ú]wº.»0òøB¼ï41 žÞL€Ý@^dªRSÕ<½ {• ÒøFé¹lèíæ{?zÐ`âá÷ý¢8÷B;9䳯¢ÑØ÷ÝÉ™îÏ!ËÚ,X*?j£Â(ʘQ%z9z£*¢c´;Ú¾ÞÔjÕºXý #} ¾U‰zy…›‚tµõ¤Ñ8ŸXˆˆù}ØG~]0£| £„B +´< OaìíŽx<ž%*7Ãè‘”ôÈLÊ L>ÑkYø5nëhäýK“N·…÷dáëÁ¹#š ˜RÝ;Þ(ô Þ¬lo <%ò)‹ƶ¿œì€s­N”6'Ü…‘“”Øt]W€}òœ~:t=(±Y#¥‰‘ŠŠ&†í•“ üK¯GãåÖ#üÆD.÷0fîn™fG–Ï¢!q´l׆©œ¹‚ñ³ “*?‚¶úéHwîxpôñxÈ/︫*£´t5§5F”׳®(e– ÿ‚o¹<0ÂH©â&IB7ú`]­o=ë(5»êg.²nÒ:†àÈpO®¿œô¯Ã©k× Ž&è3;»‡1Ky]ÈŒñÈ ¼ïT@Û6-glÃâCû9„©÷Ža€$$—lìâ„QŒ;—mæY‰HJ›BK¥£ÜL^½¾'¾™›d`Øxµ*NP¼2zÇã¥etßd1Œ†ó#77 ÙÅÏXrãn/šµÅ1_2cU9×ÒYbˆÇÆchjµ-ã5Cë§0âs]äidi<}(7vEáΟ—¶;ª j:µ^ÎL°Ê¯”Q2é|$g±ð£Âèà Š-‹ük“êËŽu=9Œ‘Èz¡1íJÝ8W­|Ö¹ö1#ýšO™ã—LöUñt¤?ã®í®»ÃãB~ù‡ËÅmFï^ÈÿáüÊï÷oUIKù_`‰,5XFF±å8¸½‡(­hcòm.ȆäîdwtË}¤Q£Û ×}bÔ§sÛwÆË™äѱ\ò)õVAC‹Œ°Üåɓ™y>çq^,¥[Tý—ÜÈ·¦UfûÌ¿–  œÅ¥ƒõ$[ôMc/AÞ&nM/VhôC`$«¦uÔ½OË(M áþ;ޤ£×‡ÓuçN$î||K«QÏ[úÎÎÞýÏ4ovôøicSÙýã× üø2ÑrG¢¨ÊX!2I›ÕÐ9NÏvæÿ¿pbZ/S}¦£«ÓƒéòÞ‹mØ+í^T{½&{-[†¤&o9å²:Ââa¦èæ_ºè”9³~€ÜØ„uO»ØG–ìIdž,b7ƒ?äê°"k¹‚ù0áôChR/kJÌpšßû Áh7„y#.+!©S¡-:5ÆF ~]xµÁ›ÿq’R¹a9 m?ˆ*ã©{Ç›g“GÝ|ϯÇ‚øÈaSÃ[“1!'Zl¤Ã^° á}K;Å ~¿¦4Ê7q&Ög'*f1;Ò|æ/É"U¨ÓÔu‡#©"Té2Ùù4¹z #Ó˜« sÀ×$£¸™­i”³ØS¤_ÓkÐ2~7]ÿº5s™­¼"PÇiÖNHŒ“†ëø(ÝPw&ÖHàžTwnGž,ö’ãµÈ¡,[ £K:ÇÙòbMan„âÍ®;Ž—®ÁWÄ·0ÈT²xó4w…ã;·´‘Oc¶rñ€µè¹Ðy‚‡§S=ƒ‡5…1U±ðX«ÿ£+N8‹*Ó 4Ï<1®`¸Ãý€èÈ3Æ´ ™\×À0§®ê7Yœõö ôN??)¤‚²«¬\:>~õ M€ì»¾¬ŒMwþþdª‚ËúéKNp=¨o)M˜.ÞaqE#oÕñnë ˆ|šÖOŒyñ(rGjBXm!éUtCá„+ùÈ•hÄÇÕëÓ}„DL–Òìà—Jat99˜ï–yBc´¡{ßìÅ­ºMª2(ŒD-‹“Ý„‘¬y¼¿+‰Xp{ÕöR‰e’$Ñ9Zäš+A±\zŠ×„±ëñ¶ÂiŠOÞÃKcˆ†ë9Ñ9BSŠkWº3‘Æft0Ùø7aD3Í0î$Aaˆìn§I—¥ÌÜVÎ]tƒÃHé“¥Ô F í–ÿÙÀý-])FàGk¸ŽÚ¼…™ŒG|–•ôµeµGTËiÞG±z$&öê"UÌ•¿ü4v–&ÂI¤e6åüÝ¡¡@Ä5Üïõ2M2Þc£–ý€#Qˆs…+Uz¥çVI$síL´oc¶1}G0ªY¨ ¬Ö»Lãztï°þcéz Ɖˆ±Æ®YTîée¿ý"k4BˆfUáæŸé¾›M…*EÎ*Фע褰¹œ»î}],vÚ•]<“cîp„ä „Џx6['Ãx½>VHHec{‡¿ÝÐ^SiÜ¢Q’)Ëê4Æ-;¹U‡Ý‰>,d9Íx> ü˜ñ=ŒGŸûð@eð$ûTÁúß7aܼµødyà®v¦,cƒÐ’+#|m®NL¶°³G¼eëðY麆PDfŠâ†Ä½KW0‚À¼bõ·m{X9Ó€²(Bh|_ £ÆO€–ú v#=ˆhxÓ˜GüÞÕ&TK¯¸“ñÊ,ö/G ™”ôršŒÅ€–*ãGÕpkCƒ¡|½KãNEE‘±,I#+QGôkØ®ž‚Ö`Ëͬ¹[w-Y…(RŸ™/ŽÆõþxA§•µŽmB£|@#œaö¥ê°jQGÑ{ÿãö<ž/íeàPÀ£Ñ«–ÀÈ9À9w #EJŠ GDÍxròÍ ás8âgÿÕö®´Íµ¬>Øá7‚‘úÐG› ŒXÖ†rѸ¢oƒÆdf6it@þ‚Œ¥Î…4R°4øÕž„P©÷žf·£éú¾Ï`ÍglXº!&±¨ Çõk°} ¿ c8Rh”¤1M›ëjˆÆF¶xEô0"õå뎟šeàÊr F× pG#} ‘É–lKÅû5íùÿŒh ¬º;Cï4Ðý‹)ŒV Œ†Í›"‚—Æ(7þŽ ev2²§–7سDá‰lœY„usjÎãp¯Iœ+íºLœb³Oã30^®—a$þ^ßÁ‘/£l9Ÿ–s·7·y ~áÅåý¢N#ŠbÌ´¶¥`¨D*]RÔUÍØÂ€˜e¼–ê[¼'mYñ²ã£ð@Û0$'ÉÉ’ý/Á¦ p$džÀ¸¡1S ãïÐʘµ70é’pãØhĵ™Âª,½¥£ʉãBã=qèjiKpÆKþ³}ŒO/Zcß»&&Ñ]U ‚¯ËrÕGQ¹ `Ñ:ô”÷k*'ŒV¸„?°°Ä•e÷ÅjèžÆ ÎLad¥ÌM†;Õ¤p ŸqlæÕ‘¤1…Q%Ûû0.î|ˆhœþgӈǪg¹§èn§¡¿±o÷ç¾î@kqŒ˜*_V€9ÔÿõŸcTÛ0â:zXíÊóÁÙ?÷„‘g Ö°F:øj.dÓšeN”Ñ;å·•e©_’gK–ÒEÔˆÆM›VñÖFãh\GÆß¤1…ñd>%sZ\È›‰HQÄ‚7 †öûëë2@÷rï’QŠ S‘iÞeñσQEâ„2 w}rÑf¿å`Ç.:*FÅ•ŸO b$ŒNaUIÃÃ?qZÍ”F2dGCF0’X",Ær‰£›…ߨ¤¶œT¾£šâJi\8}e|­`Ô,lÆ‹®§)¼"â—öF>=ôý@úFRàRÒŒÓi/×íFq, +‘¹ÊŽ18©5EVÿ(¿ÿ ιé §ÚsVw sÒÇÞû<Æ6!ƒÖu Gwÿ¡ýð~ ý‹“åèæÓ¯Ëy8L mlV/†nÖ„Q‹0ÖÄ¥¥›7ÒäèaŸq5·3°}#^À¦^@Œ_¼î!ïÁHQ¤Y™Äé~%šùøT”,þ6²ñI¹Ð±:²k»àã‡Öú ºD¼Kþ-IG¹5†qüÞòÝ©(N̾Ù$Ãí<´‡ºyÛKÃØõÐÐþçt~ïå@ã›qÿ&¨âŽ;š–zXQƒN­caæ—Â0ÿéØ¿Ä‚}Öj†~ᨌ "‘*àxFDј¿¢QýŽ%F‡Cn·´ªmàRLš·¹VX—æ×óc©u‡Í1˜çI£ç¾•,æþÆî09×È©<Îë|¾\Úarñ=A³¶³ÁC席öE‹0bûbñ/5$tŒ£Âè ÷ÖÚ)Ïâ–œ„„DN“FíÀ(¢hÖŒZí㨾KãÆŸ ²$‰–Mš0ä=A»nFk@ÈèNcšØÄaT¢Á†…¸ðLnSiÓŽwù8_Îóp¥í°ã•zÙ>GÓ¤)Õú/`ÆÝ ÁÉS•!´ÚQb¬3a„¥†ÍÄ¥ÃúÃUºQz*aôJŸL’k7al|:!WçŠ.½äwh\·‚UKÎLþüß¶¥ÈøzÖ<ú•##š‰k°8 ûƒx&ŒR©œ+ó›¡ èÜáÕ†yþ [……ßO§Ë<ÏWVÓ¤!Õw!f3`lîNx3¿CEa‘„qa„ß“cÅK.Ê›M%0ÞÅ[Јbªñæ%ÎÊw6/·DîÉ£Ú£q ‡ Š~ØU¸ >} &í‘í×daüÃÁ†ÜdÚ¥ñù0â"qÔÊÄÙ´ÛOîq>×cGŸãq˜/§³ÐH,J^tñ©ò¯‹Ï6Ù[#$Ku^,Vì¦WŸ`Ôµ.`Di„܈Âè”þÒÓœ„G:!Fri ¦PÖV–Ê%¯7ÿ4Šù®–C¢#uN…ÑÅXÇÒe ÛòïHcü\:Õ!tibìé‡w^£À"Ñ89–¾) ‘üe*ËóŽŸBNâü–0R! ¨btåDXzá½Uº©0®×Ó×åÄizÉXÔßRÙ¨›¦zݘ‘ÓIOz¶îp¨€{F…ÃZÂøa|¥åö,jm¬m)yÂh6ÿŒbÏISK7öˆ„ðÐD&ÓH‰0ÂÉãòs¹^S]b×Óò Œãh ¯Ó† ê;²eø56 škâ# úx(4‚Cš F€Qª,ìV êÀx«½€æµJ#K#Àˆßâñôk^§1¯Ä©UÀ7ßQIþÈ(úù,—毿R¶‚¨ìõ~“ñ«ä¼oFi4caàÆ­6¹Ë öìuÑ‘,úr¢W’á$Ö1³&FK=:zÉ0úÞ%< ¨?{žÿÀ"@næï™#¿=‚¨A«&7ßD1_ i*‹NÌ0Ö~ýÆIÃêb,ÖH#ü¸Ýðâø¤ˆ#diÔFüçré©›Û­¦lwJ“¾Ç¢¯ £ÃS`¤æ¨t… ‰]Á+{Ï2kÑ1“Fë×øHˆ“vÜT½ì5LŠwNÞ'üÀŸÑ™™š¥mã1Ø´Œþ0ºø@—Dr#ùµ{?.ï“flׯé|'CŽ Jè†(’(Œµk-rCì’ž©ËÒYiI F”rGqʨdÁ F- €|ÖŒbRÆ›À(Xã¸?1z†±„E³£èï½»¤='2Rcã†M;J¢ÿ ‰+{–]ßÚ #oÇÞ¤³$‰LÔx0™“È"FXá²ë?æËiî1O¥0¶+)8<ÅŒ 7ŸQ[Ì-ð³Ò,Œ5’¼””´ï±³XIâ`!!¾(íŒtE¤—ÐÌhÈé–ó¸P\¸ÄÓˆÄ ŒÝþ,õ ‹±KZ­ £ßÏ€ñG3ñR5wTìÒAËàøg1<·«Œ4ú܈|Ñ¡‚HfÍ ÷Zþû ›trËìÚ÷ýq8¦Òè£ÁêDs’ë³uë›:HÒÎ`“„Ñ´sÛ,Ò\â¬9†±Âû8 Á±³ÓµS•ïMBs‚°ãocæÖ| ki…o0Á_Ó¸ãå4ìõ.þ…ÿ0>ƒÅWk*ÀFÒ׆…W>äo׸)9¾Jml=Œ.ècV&Фñ{\Ê8"‰MrÕ¸2†Žm}ñË\§óÍqŒH£FEa’uD”#¬'!Q#”U»lij2c?Ÿv@‚î…êk14˜4FJ”HýnAµöX$‘„AÃ5®1ýõ_ÝÐ1?K†Èud÷nÿ’Ô¶U§,þx‹ÿ˜Fž¿€Q×ᱜM¤r«haTFcdQ`\¿f‰$c+,¦Øøà,ûÆ÷°òÆå—/sŸÛ.,…È›¥ÖNkÛºFN‘%ŠIÁ•ÀfpšaE“H‘~ØŠUžîˆrŒÓñ´´—ÌéEqçãadiœ&œ‚¾S]×mª»Úä'ãîe,VÕ†:¦’ö__šŒŸŸù³Ñ-Ýž2>£j—,ŠÚmÂèÏò¾-Æ=ªˆYìÞ/çáÚ³wÑ¥îðövàƒ……¹×e”!æEcnTG­-æ…‹9Šš&ÂØ‚€U| »?‘ í \h‘J‹y½-F7©—°A›aŒ,¨ŒJÍ—ó ydÚ Ç›34kÆm+K¦^Rô_e„ôT)‹Õg]>Ýåém¥öCãÿx/íÄq$ k$ËYЄ ˆÎž„ݳyÿܺI*Ë&YvtN·/ºÕ§¿þ2ƪ‹Ø¯ÿFj>f$=éâÄONuqÜï_ßÞölì â*ìiÞªy»E–!a°È€dæù¹ýås #|Cß>C:kpNÔÑYLâ¡ÆYS³t´ JGoÿö{¿¡ºh!2yéÑøµéj¿Q!zŒ/£m…Ñ„ïÉ0Ê„a ç{¾)(NX¼Fnˆ$±¨ožÏ3e>·[‚vC1S~C"ƒU«Æ0 s¿Ø²ˆµPbQÀï²#„D 4‚]$m¼¢à‰^¢ìØÎïµÒMX_Ï$ZM7ׯHg¢´¯µ(æ·4VŠVÏ©_Ö½Œk­­âHW«á»r…rc%1ößW0ðDiù‘`œÕ/_µ†Å8G‘çéˆ0ö9YE²€¡®yYã´54:Ê·3'$Ê-Ë0S³`ðÀèC‡wAq6ÎXt¢Šüùàj$ê—0öu¹®›Óèqx w>¸©(‘¹Fÿï§ÀBvc¼›EÖ]¦ÑLåTµ‡X<·,¶Û{Bµ9n #¢Á̦ KP(Ûø&Šs½¯`Üì³¶?„1àØÐI „¢lFÐBß1~C¼Bë¤"*ð.̱¼«Á< ÚxüµÝlÆ J£kØÁc D‰€cß³‚į¼Wœý´RôaüÁál`ä,M'XYžî Ü_̄ܦç¹mÊ"øÇsh_9î_¡íG#§½—Ðrrî]ä°‚H["0j "ÂEÇ’oTíLÇIéû Cbýcp 7@;([:p W¢1Åèê(U ÍWÚáÚÛ‘²€Eilh$aIlà vA`äzN+^éo<ÖX_ÐX zy’e,0.cä»&;ÝI?ÌK‘¿Æ\zvÙìÇñ„¢G)øã{EaýóOd#¯5) €ä¢–gà<ˆ9†ùâ†òSðÓ°²Ñ\¯)]¯…±Œ’ÍSë‰6…Çk’Óþd§í¯ÒØMµ”/ m+Öql¼„Öã£ì‹Ï…É|†"‚R:-…ŸOq%õK¡±ì@`“aEÙMèd…ÆLc¼Ç4>£‰0Ò¾ú[,–&6(§¦vh„ n)ÄðA†,уFG ®°¸ câ‚aU°¡VBT-Zn1ѸÍÎ^á £‡á¨s7`¤õ]ðÏøß{ȇd Ƥ×ÏûãjáV/䩸² )*嬊Öe EÏÆYë y:›©2{ ¨¯DzÅb†ñFñü,Ãû©‚ZtV6NB Yšæ ?KLôheÀÚÁ• –JZb Ê û¹£ðZ!Ù|€O=Èä´‚"ŸÑØ'UœѪLÓ6„TyK–häuâŸÃ¾ÿ=Rµ“µF^1«_tyK@ªùA”#J,FÉÞ/ýŒ…ˆ Ñ“²tÈ®+ÃXŽ-%iY ÉÕµ¬YRÆ¿+OWaDþ˜ôC3Á6£Ô‡hߪ$8q”jÑBs|9,t‡láÅ?P]£ââª`<üz{{{ÝŒ§C†±ïaw(€P@Ñ+yUp›ðÆÁ˜˜5WŸæaìˆÆ­(Å”Ïù—Œ5‰lU¤z.ææz5Ãh8â_ÐX( Ï`ñÝgÏ߈“ÁMÈ »Lr’«'žñï­` Â’papŸÐÇl)ò²`I¶LšJ‰"ŒjZM\À¢‡Œè§b'%-5‹À2Š-Q A»Ãáøñúúö: ŒÀ"U ! ?¡1„I7MW†‘ <ÙÒ(ÖÞ˜ÍöÃo6ÇÓxTÔ ýƒ…ñ’áÌyIÍRÏÉád‹ˆz¾¿ #õ›1òïÏ€1ô*laÙ:ƒ‹ ÖdaŒŠÅÕBcŠÚÿGãò…´9z‚.?ñê|Óª\dÏ‘ÅXmˆ<Ä£¡5´R„îCÈ)y3œn#_ ö aÛœ€Èƒ†ñÌaõ˜¨¹¡.£Ê¼K}54Jsåi…‘’ïaÿŽ(3…‰6––È&‹×f ?.[¼JÙ¼i·`Ä~3F«g°øÃûÿÔYjI1`'lŒtF U/¿+%fMqô@ë)KÓ– SóÌ|^•»xÖ…ÁG¶Iž3“³H á@«çIðÑêiˆ$ŒX­x«Xh ö™ŸÏφÅÝ8>ñîj(Â(1M²E{€ñ)M_D#’ªÕg6ÓèÆÝ¯=ÖÑ µÛ-7½/û½$rX$§l§¯gõ­— ÆŸO±ŒJ¦‘ŽÃü©’Aç%®K £a3B(ÖÛá±<]SÌc`¤i÷Ø5ÅXílž<¹te¾ Œ~ȧ>$.ºD4‚k(¥.¡0b ×Ùœµ#žO¨yY!0–ˆâ'ƒ1IÕ»ÏÝ¡K GBÇXŠA¤&Csš€·¨²¹Š©8Òª\¦Ñfi„]ܵ³‹4ê{SEÏ™„Ž+žEñÒ)Œ¶bi Œáç3`ÔÂØH#ÚŒ0”„]ªuÁ#;¨~±,òþO¸aDEcŽt #žOp¤1_óTÅ?‘è…ðƒeæÜ ñ(:dѵăz½&øàŠøˆ,¶F²;Œã.™—@ÛSYGâ¨oÑ[h³Tm ŒU³4öf3ÕîÒûQÅH Kò™FÝêyÕYºœ‡ £_]Æg°xé§SVš‰ÄâàHUõ¦K¤gí×~¥»yÆzâîþ„[$Ù`£da³CÓš8d5¾ Ϩ΋äœ"Fú‹ÕÊRjÈ6Ò½@¢¿Îq˜âµ££zU,rœ*»•¦_¿ä­U0——è[ÄQQ‘ÐÛT›¥WÙ÷§ýÛïýFí/ËsÁ1§[#¾q‰ÆÈÂs ƼˆŸkïW«ÕS`´ÞO4<“áTãTmNÒÁÁ,·x·i¬,>J#&é^œ˜ÀX¦èUE(3!iÿ¦a„[T@„2 /kI-C"+¸ŽR5™i"8Exâ”],¬>îv§ù[¡”œ«!ÅJÆßc7ƒÑ$UO +èFúpxÜ–l-,²­§]AÃJ:kr­Çö[7†3ÎóôtÑÕËh|]GC#“‚6ßåäçÉZ ÃMäî•FÍ¢m}¶I3ë­6+W/<.…IG·U,òå…ÔáL0V=Ø,¬ÅÖ!”X$³ìå+ÖH‹ÉÖP9ƒÞ³´*]*+Î>öÐFŽÍ4e!S8z”ÆèïƒQ”·à xkidûÓˆ+Û)ëU•90ŅƼ›M, C/<ÝhâßýR2öÿÀâ;иêŽ7i¤;^%é¯Ú#0fgèU»¼ð%%Ï0²vŒQdR;[ƒø°!§p`vWÒˆu(ʉ ’THCYýžcIšHÝ3‹I×.šE€d³O§ã!3gJR½Ê‹|ÒÓ„%Ôý0ºIC纪¸¥Îo~æ0nu‘…E¤6ÖåSQÞˆ3i$±Q®û xBiíƒùË@šÕêû˜ø…Û4⽜¥g†wÚa1ïpÿÚÚ&ŸÊæÏ‰øƒÃŒ)ôD=é¦ ÁX§à%¤0Õ”W ‡:‰™!®ÉNTñ‚0Æ–Åbì¤h¸rÆ,Œð¾*‹iLÑ4eÏM ¾&QÖ0eÛèL?n ÍF_Y<Ÿ ŒÔ¡ÚÏoBZy¬ÿ×á_YÜÖ!„¿$ˆ³ï_°‡»i H¾ãêxŸiT,êÓ^·“±5Žù$‡sÀ€ ©Å±(Wƒ›¢ B0*Q™@Ó-"h"¨‡ØYg Al©œ²h]É¥§í8ŽGVA#ј!À ë°wÑÈ,º²S&ï–†‘þë[ØÂh*Œ…ƹkü6tưÖXý\ÿ0TDàñòþÞ·Y«qäkþ•å}e±Ý–ÆË…j‰¼¢ŒÓ¡'0ºJc̤±¾é ²¨©ÚH²“„kã¹–Lˆ£¹ Ë]@+IæQ`½±èÊÕiÿЦ‘¥³q†[˜„Ü@ß³èˆ4ÛÂXÕ1Óh“¿Ɖ3z Æ"’D’ÿgËzȇjÉÎ*B«Ðs$27ŸÙR» cæM_ÏY´-‰rèK7 Æð_ÎËt¹u£ )*¦¨ÄË’múǽÉtMµçýp°p)z¹Íª$Š.ÀÁ ʪ+“¥T͹„‘ê³Æè”R„ Öµóu¾Ò$jZn·¢y HáúðÁÌ[¢3™Á5`$ÆâÙ=U4ߎTÕDÛV4Þ1íb;yÍµÌØÒL“/H3½ä5UŠÆlwQ$ËJ£^Úî ä$|%Š[a ã<¢Þ¾\Þ0]—:Õ±5±z¤›0C K5‡¯YÔ¢ŠŒ·o$Š¡×VgE¥` ,ÎËŒB=‘«˜C0úgÚ¨•£¤‘^é*°ª&aªeýÞƒgÂè‹&2/L0NÓ=ȰyÈkƒÀjõ I¥~idqi¾Œ[óºü<Î$ËíD#çæl(ªjÈãÈ.)atÆ…uÉ(äË1n}¿}{ ãrZ¿‡3n`¬:$Ú7t .ue´'4n`4‰F0Â؈«.ïçÓz8'¶i…DòG^´tb„ñóh¿k¦G%äÕ=ïd¶,sæ+86¤±iÅÆh±RP˜) #ܽ½ÆÖEAmÇuyŽeËeÜu·#— ‘Fnq óOµ,á&.Ž Æ[ £`ñ2ö¼ÀËÇïuO{lÊÅù`´Ãa`½.`m±èeÐÊ¢1ñË™c´B¤XœR6I<â÷3¿\ÒXBndŸ)*¤µÈZH'ó”EØò]iTþ9%|i|£Ú²¨]öÂ0q–C8ø!ù®‰F„qÌ ¼¡•uð½ãÇÎú„G†ñv»Ë"ÃØŒË×aÝÏÉP¨ŒAükZQå|àGÕ•½ž (—ƒLå%Œ—H# ^†_¾ëiFY\6kÆ¢šœúUçêUÆÏç0âøÄž€7ÉÛ`š',ÖßÐø\]cIÞC›kò»d×!îiý?¢ÑC£/‡± 4z £¿ÇrkUÅæ¢ãÆnãE|¡–1!~l(TF–F¡{D#ø‚I|ÅÉ6NZ·zŠ'à¹3tŽhQ˜P•ü‡ (б,ðk¿ˆë#‚QC7ްžv.Í™aœ>^‚ò“vaó^D‘£ìŽ6>‡±(kðÂÈ&W›× F”q‹¶…4ÚÑÁ•‚„ â|g§|‚q*Î+•¨°„d+ã–ÅŠL ãa|Lˆ4¢„$YØ…ß© Q†ˆÔøu:cñæ€B\Á_^¯š¯ ÔæÅwóyŸj†‹>„85[Í«,â˜ÀAÎÄ”mŸ¡˜êÖ`€;4>Åñr±McV4Þƒ±õ2å°´Ø^ðËå‚í‹u.˜KërÝàïIÇJù‹Ô°`˃G¨ùS„è=´/ë¢U·€š'<´lU ÐÅ„…´IcE‚µQ<Ìïv%‹ é±ðh9ŸæhÅûp%˜Â2“vãoû„¿‚ÅÝι_ÐÓ`Êžžfh©‹ìH]ˆÈãyÈ•GoóõáüÀ%’|3å×·‹Ca)#;g« ˆ&çÚiت6s‚sAJr /l¼ û‘Æ—…q9×ež—ó÷ñÜÅ6¥€±0“¤Šë«Óô†Æ˜ jK.«3Ÿ¿N|ÞŸÒ> ›€šÃ.GªÉå.ÿ'Y²òî}G%ãßï¿Í0<ÕÅNøú ŒOÚs Ã6¡»g°{vt¡Ôo±Hr× Jl¥ awž½ìdl‘íÇôq¯md/#ƒ} 2æé¾’ƲÛpéLÔþ2[+ý4ñ¼Ðý™Õt¢¾ … ei²‡Oå#˜Ðï¿_ÎÒ;jZܸ»‚CGvi…ïŒ\;go4 ¶,iüsy]«ã‹vœCÏR~.“4¢4ÒÉZNcÔá¿Jc$«Ž"Ñ¡#°l=L^Œ}ovQm]¿QF¤QS»Ñš{h_ðjÙwL#F…l_´FL®ø§Uf'©é•ÒV\Ç<5h‚‘ç›O Þ‡Lý½.£0J€¹§Š,«—L“› ó¶Ñƒlì.=¥ç_n%4¬ƒ8x¬ÒC½‚ÝÓÈVOÑNÓ/(c½wYÛ Œ …„µÐ° Ml°Ø«:K¥ ,„Ö ÂØ)2¡æß.˜àr%ŽÊFUÊ×¥2þèX5±1Ú,FœOûýù¼ÐBƒS‚FDq¸¨dÜ|^ÀXN/Y${ <Ç+0vFœfY¿ÇãºW Æ$TÃb8SšÁìËGG³MJÆÝô«"Ñ"pÄ×@ª7è@A$ úÀð„Ý„†Ä2 É£²Acþ¯ÁX™!*ãÆ>©à‡rÀÖ”Tcc_ ¥/N*F{*Gè„h5’;7fñ2H½Î«ŒŽüžú— 7ýí燲|¢QÉôYÑ‚,~“—ýùDòç|†6NˆAGÝiy ÆjòÈb²g)Šw#^º'ºsÿ}øZϧ…$3µ¸a¨$FªçjÇåc„ñj=̶–’ðûÛ´£ª*®ò1‰SÒ_ ã.`hÂ¥#:†‘ÇRò¸¥±JF‰‰g z쥬ċçù5GÕ,B,kX¿uŒ7,ûÞCbS ¿,§qÄŒ„‘ X¤1m8Oï¹YD% ¡MžÐc¥ã±Þ1=õqS iìûy=ëåëx<£ë†NºÖxÂrèʼmQ ÏR™ç z #oEëÓ ™ºÛ/TQ»R<˜“CÈYš³µqæ’/ØÕ‚­Ðbü#ÿØÐv‘HÊXXD!¸ˆCL1c;SnC÷2ŒmÒ<*cm˜4¯äqDiýÛ‚±ð $Ïÿþ ôàE%ΙzKG¦þ¯ #¯¡"ŒIû’ïóR¡­éÕ€pÞ¯äƒ*އ½Ï0ÆÇð/8LÿÁ*´‰®ãFr3¦)‚bß’ÍóFø¾ÇÉæe†’ñ […Ã<ùF¾žÅ#†‰ˆÏnú|‡D{}Ǩ°Ü¶êhGw&t/¤Žx“zLOŠAÙ‹ˆD¬±««ä0_«Æ-›0„§MÑ«„Ü÷LS5Òøÿ'»kŒ¼+pƒé†2 ÃxÙÀØ´2Œ [>BÁèPÜIév×e5 [ë—É¢Fù¢Ü˜Xà¸I϶,ö‰¸{’‰v“,²ÅÒXø(N½_!^ÎüHVtÉõÈE|TuÀø~uãîjb èÜ]³[¯F˜Õ"…T¢ƒx0¢„:'æ±@e«‹JDM…¢*Yáâ¶ FëdVCE~Ábyæ F¢K:ÆŸŸ#/ ´B!awض!ŒAe#õ ß±”—¶Š”`dXU?žË²lB±Æ~Yx7J¨I•‹FQ›¥b&¾«‹^'• 9:%šû0ú®lØ‚|Ÿö°Ë€ ÀÒ5F1˜¢CŠf`‚$m¯±t‘æµe±D‚ou†\{Fÿxmq ]Φ D¶¤±b±‚ñ>‹ Œoâa£Ô0&eÔõÈöÞæi7øAiüé3‹yJ :Ó8ŽCÞ·*²«Êfƒ `òi`áx*öû”Ê1Jn,p°´#¤+FØãÛÖ{,6’tDÐsIF˦ͦlšÓè èbÖ¯u ÐpΣ¡P· <ÔX'jLÏ]žeÂ$,âÉïÀ¸íBrNåô qüÎËE9N Ã<2ÄNb“‘+•djk«æý_pû¦VëÂØYΉm@€Ôýéÿ»£ÜÚ¸¶G¿vlû\‹^ÂÅjcûÆF³ÆEì_b¹6 ½„Í«b± WÓ¨ƒ¡f¹úQÑT(OŽÝç1„8”F*XÌ0RLø‚É,ß\´ „ 0&®Ð NÀ oò‰ NlMÚ®ã­Ä •ŦQç' nuZœr2žÿ~ÿþöœiE¦qònu££@Ч§}ÛOjÒ Ž¾ßqØ å'‚š(× C~V°rÉð.\œhÙø õûåJ„eM‡,.äø m`Z0ÄåÉ#F8ò6¾äá+_VèµP§ôJ=d‘a„mYãꬢü.Tð](° Rƒ\G¡? ÿÈ"G×Â8‹&v0Úq$š¸«~ü|y^ëœGo˜x¥ñ‚æ k¥¹ÌθäÃÃï?kl>c“tDÒQ{±L¨„bÃ{%Ddnls£|»L¡Z²ÃuåZt€Ñâ9°¹hìXô6kðþ Œ–#nkʈøÊûrrŒ-Øæ%·Û€ÆÇìÒF¬PFùÅÃʧoÇ@O‘® ‹óvŸÅ~SyÅŠÀâɇÍ\JŧgqÃ|æs©ÓâUãËâÏoßžs"æ½ÐÈ0zZÙ’w¶xxD!ê—[Èœýš¾†ßÒáq®Uh7©ì×Ç<üXÌ4ë×v+G¢Ú|.á8ÖE…Q¥±É~±5íšFP¡cA±àÈ—qÆÔÓoJ³ÜÊžY,0¢¸¢ x†1“ ºHʘ¶ ;:Y=éã]îXTóÆ-¸ c20ò Ô§g02k¤ñåù9U0…qeÌ0j0þ<ì ˜ÍfYaXñãå`èç a†²Ô v*k»Á¬4ö,Ö+­•ß7݇q“¦eÑk­-Gjoðö¼k-Œ×Ø;Á˜FCã|‡Æ[sÃÅèæŠyÞc±Ï¿òìAÝ„ /,‹ Ÿèi‘Þ׺éfxîZ¾¡Ì Í•3þ‰„UÙ+Pfé*00Òpa—Ê=H¿Òøøº>ãÆã-á Œ±ug„1Ó1€°Ðè-f4œ$fPÚÀøX`Z±ÔZ-b–ÅãaÁÇ!‹‰_²2Œm2f5%[ Íí†ý‹sD#i9O—rH£…±¢Q¯3k…‘I/÷Á£¡þ¦E9f•aÄ»ëÊ)€ên¡â\-uí~´,ê© Z1zmÝtŠ9ªµrÐè•FN¦1ÃèÓJ{ c¢N籇ñ‡µV £ÏT‘ó–§Œt¬(‘Qµ¸ÕÅRWW(–IŒqô"Œ`Ó}ó2b±2#¡Þ¬à Pv0òäO»îahôìÿen&— ÃLmdâFTÆ7÷/žvyݺrñ‘ËP¡1S×lG‹b9÷þ¬|V,Zå¶0ê ß°”«0c…1[òŽÞ¿ÜÀVb±é$¯qüŒ^]4¥L#D߯íÔé›zv]!×0ŽP¤ pT?Áæ )€0 7{de|Æ÷¼ã¡6ÁX›ôBšÈG”¥‹€=EF >72Ø„OAÜYV¯E«ÙT²ˆx1\0f›-‘Çfû˜eqÑÂ;W Jã¤ÒHÚ“Ã1ø?Ä&ç FÂõòÀès““JŠÊ­ÒeidêçJæ˜ç»š­cQíXÔÈNøâf×Ó3¨V®ݳXP±ë^P«Cy´Ò¢šM4š2ãtÚÁ¨,n°»ÙF€™dM #?ßTó8‚ÑaÕ.­AÒÍÍš­ù8œ» cžOQ½ï­I×G*igIÔø™,Œþ2aC!Xï‹åx_Þ—¡{ZÏåc¯˜Ãã¹â˜µ­YceÓŒ]Œ£I:³èp+°hÿº.ì»= 'èíupžì2»Ú§»&féçÍ×ï6˜9q+ƒÏ0º2 ØõJž@.½9RžfÅ€·¤aËØè7j3 5ÈV;óí(©ò¢dB$«‡hw{1’¥¤|ŽÆ…|€µmcEãîØè‡Q„Öz¶ÅFÌQNµj ˆ².ÓG,6lè¨N ‹©ïН iHc{%ûZé:Šy^”é}r!rŠQí–p›÷¬Œ[ÿ˜5é"‰B²] …|'½qãlöN\}ÄÜcq8¡8b°¤*ñ8†LSÁHuÐ'aÄCµ­ÜÐx:=F,Ú~%ÏKÍ-ÆÆ4f‘öVŽÈ,FÜ í: \n‡4z»ƒDÊú]m\ÔžËd„ÅdW8˜Ž¬ ,/¬ £±[–µ•Ç­B#šx{DÒL„nëY$©ì-ÖÝÃx‡E£½Kg;Èú½M–F ã„ ÈìRÁÈSÉÒØ²8»Ï&¯e–àq#ºtL*H ‹ÆÇíFÃbòm"Êù#™F¼Êè8¡èÖ¡yféÁà.~¦8écó:ý¿Ð¨0*¦”^#‡Åé€E\h—Y_~·‰"Œ0šÖ ¬«ÀOÂ8§dKŠÒÅ01öÛ1w/ĈŦvªç>b ¨¼'Œ¤‹¾}ukK£€ô–Ï7$èbN,„&)ŒF0½þþëõí¬Ä±×vzŸF¬ ¯úzÝ€Í>v>Í#sÄõ€E’$M-žte’À¬ø>6ê/t#>=}ùB#ÖÕ-È­aJt3fW hüW8âõr•Ö°Q9Õ`—"¨–Å©v醯!Œˆã}«¸fľ6]o2þ0ü ã*ÊØÀ(,JÛ4Xôfü€F_d¦äFu§éáá?ùøCH®;>UBú¡6šµFþÕ¦³P´4òÁÌ«ˆN#@,z_³rѳXÃ8¦q⧆0ÞjM}2YçߥÌ­aq®7ÖÊÈQ6ùg·óÛëë7RÇV¸ŠÓohŒZ¨^_MÖCþìIëwÓV”‘A?Ød5ŒÅ©u¦A¥¢Ð•M·ÿCw<­qNÁøÍ?ÐØ61†«`LÅd+Gƒg.vü‰DZBj]X˜òxbÑ)‹—A̪¹€ã’q|¯ô@¬<ãŒ4²©¬ÅªÓÈÑù’|¢yv¤÷=Œ s Fæ FÏ*õš—ׯ_ÿžñYPÏ cM£ZøÄ,ò‹·-n³<‰åÃú-dÔyÇ0ŽP$—.ðv4òn*‰¢¬ŽnG/ËiÝà¿ýdhü³ÊÖ6ûû.Žy¥s--íbÒ‘o+Œ9?Î:`Ûk¸„ iÆT±¸Ê4܈ť›þÆ ¯”ñ¶(‹„& 8€1ýæb¡H£³µ•†^—:gUƒmrÓîR¨, g/ß~ýúûó,‰G/\q4kß6 ξ6—oIðâ-ÃXI£º4ÛW¶=Œæù÷.±¼u!{hpP$ærr?ý·Ð¸V0Ó¸Gé¥1ei3ïÐ(0ªT˜QF&ñ¬Ý‘X’FYatËà°I—í[‰0.÷a¼ñMZ5ÃÓ|_2‹…ƹBÌ×0ûzN¥h’,C ±–I÷ùùü’ä=äÒ.]G4V ‹P^ó®!‰:ר,Œc[}/“«h¤¹™ÁX¼xÍ3#¹ÆBQ`\WwÏ©KcªÆIÈg £‘¹–F=êÆ§Ý–`W2éy'cDo¢ÞÅ{aT§õKÕ.E ±™òØ#‹i³^£O»åwÊ,»6³?«b¤ZŒšµe‘x_ˆB‡?Û‚Ž¸.¹Jéå|†ÿá#ã$0hôÿc½\›ÜV‘0Œ@ÒãÔœÄ3ž˜|Š?ìíÿÿÛWè–“SµT%cK˜KóðöÛ©‡zY¯RjT4…SyØ­hfe,9ä…Üџ˜vò¡ÇÝÅ\Spˆ\Öÿ„cÿs–¦u þ´ôhꘃ0š‚%ˆ×u0úHˆe„¹Pâ‰ÅxÊb³}Í”%G€à¸=F¯µ‰0 Œ?ŸTú…`` ­øÜ£èŠW"‹w+GgwXRrƒÑí$“Mü¸ßa!ë‚:=)ŒûLÝ+"ÌèI`Œ),!¸/ð3;Jtç'Iz£7¿vv¡‘‚ÁG"ezÚVÈœyF7¥w±5ÉðvFcõÍl4⣳¸mJuªÆya Ë*ÙEaŒ>|úþôéF‘’ …cº0É!Ž-~±î¤q£ámL£ö?*¦¾7—€v›Tnàd°¯ŒÚ¹¤Àó2dñ9º°ê#'Bñ‘ Œ{…´ƒ5Æ4‹$. F¯÷¢G›‡ó0âTÛlÓË¢]Œ2§êíÆQ¯kaµë¾ã°Q!è›âþŠ`lL9qŒ*¸Ê"ã([–KÓÞÓƒL>îú·0rh¥À §ULÛ›ÃÅÁ¨¹Ú÷ Æ3ìYÂMìKÄé²–\¦Œ&ôÏç¿M@ ÅÈ2n]=])·Yµ %óEÒóª0޶0d±3êÁØh’éÚ¹˜<½aÌñcXë·¿Þ¿RØK0F4º»ŒÒXênÊ1ŒsÌÄb>éšT…E3ï¦ Ê ¼¥ eRB‘§²¥œqç0r*ÕM‹UêéÙµŒžFHÁ欑4þ–Eî’ÜÔÿeqc‹Î29…ë±ÛÍÔY¡öœptf˜¥¹mO²ƒºÊaáÎ%dZû­¯öp`± cu*…*#<wiyz~2ªð9”Ï÷o÷;Ö/œ{éòµÑ!”–µœÃ˜ªu1‘3=ƒ‘wáÝ6Nl¿åR˜hXß|Æšl‡mY­óáøFï°ŠZ°$/ ÇÀFÁùÂNcë§OÆÇ9è+_²Ò.ÃÔª Òöµ£×©ɄþŠðsúiKÒâÎNY¬Æ/ryŒÿ˜EG£x«Æ¢ô*k”Bn#edßÞjúxû4†µõMÆ!Ž©Ñ8f•'Þ=9éÌðÒ;—H\ÐUG¹°*Âq9-ðàÓÏŸG¥Pâ7u ͼelD ]'Òx`±(í‡yl°¼ÊÉéË×+ùÈi"ËèX”6‹øÓÇãÚ³4mv€â¶€d YõPoññEeÄbt½’ …°8)ü¾ά†Ž” Šâǯ_ c14ˆ4†ó4=Œñ5¼µq&Á6ÁÚa¥€t< Ý@ÖÊÈ–^ïs‘äÓµz-w4r"Ö¶'EY Ì3uÙ¿c´²¯EÇã³#FeÔW“…£Y.WA$s{îY” a|Îöëä/iä-x´ùHXÀ¨fôŒF콫øž7|¼¥õ¸\÷YÆh!±¨ÄQ¯¹F˜PØí'íýá›§…º´‡1ΞÍ4T×AKls0V³H]@ÙHnd´ñ²8ë/M–vÇÙY´ió¦´¥ÒeÚ•/¾&q_F,Òîkµ‘z µL|Ü*úȪ¡ÀpóŠr%‹§lœI#,™—okºßÞ2J½³±;3Ó¾a„hy­M¾]J@83=OÇâÆµ·0‚Ñk£ñ„FëeñŒæ`ì£gZkQGÙ=ãìÒ†¬·fÔÈäôžt,ø¨å MžÄÙŠ´†â"™¸…*t–^HI2ùղ?˜7N=riVrUo?Þèuøz…UL$c½ëu­=<¼A ©Ùßqžo´Zw_7µàÁwFÑÒø(ø Š Ú/ñ0#Þ±E‚­ÞѸ/c†8¥qhR-Œ-­×“1]\’Üéb•Ñ£Ô¢˜¾À ‘dÛ û,MYI~,ZiX¤$çÅc¯ÇÎÿ¶î›=t#³ŠTQÉ‚(ÞßßÁ6FÊõ±- Ùž›Q¬†£‰&ÊmÙ³X–Lmª®kwS!xs¿âß4] ¼ë®úQMb%\`äÌæ`Œ¼¿£0þ àâôbæ@£ÝRª“ãæh0¾d1ëaì‡ãiŒ²ÜEú¨2ÆëFetÃ÷ËzS@O9ÎÀ¨ 4ái¶ù¼.‚†ÝS cØ+{wÃxì§®B•¼ï6åÂ(~ÿ~ûñë-±7´2µÉ¥Ïm„#Ô2YfÓ½Fg0f³éèX„a+Hßåʼn¾]r˜¨›ì ¸ ´8U·¢ÇÛ‚0PFúû÷”Cˆq 7R5š ¦ß%iIp­Phù ;gG‰îêRk©k†¨eØ(¸~ØêT;Œ6!/¨€SܵåÀH´;à@› cB­SÈÄÐÇ÷û Ü?0’F¢@~ŒûÞ^ÐI¹Zjw¡÷2÷GaÜ+[(õYKyа²Ë%1„SÛ*2Jd´ò–ö4*zz6ÀH4Šg”>;Aã@#‹¿#1œ{F£ Ò]u¹BçCòt,—l®¯žÀÖ¿‹4&ˆkF"Wy}câ4Éë -öRuúg0Â0}ãGc [¶$°`ýÈØnæ0Iãš3Ñhß š#Žq]Zîu³¬bô´‡\׃ET¿"1žs†ÿÃEXœÀÁòKññC9W«Ýœ@‡1Á¸¸¤£¤Œ\yOÇJìÆ£xAc›Íã'•c¬FܯV0tÑ$Žÿf*Lèh®…Ä76aeWÛš»Km%a”¥EY³£ñ©öå|2w¯‚¹¯¯ÄQÝ•fHà‰X#Ñ뉷ï÷F#ðh`¤v´Žì@`7%¦vS;t.èæ±tP†§q{Œ øÓuÂ<].%µ ЉªFÊA†Fã»úÉCO<­kÛ$‚øÀbóRÚØåÔh#+cí'ýñëý~»Ýïí\w4¢q3ñÐ+ ® ãFÏ B2½ƘS‹/°‡›XÔ$Û¬~,FyƒQ,…%Ј#/ô4þßaTi”…F…‘ "a¤Í>‹­cžŠ^Uo9›'úE®§©sÓÅ1— 0.VaXZñ¼ŒhÔ•„‹é*(R ©AõyÌÓöÂ4 ¶¥µ˜Ãþõþ‰òõÌMž.¸šÜô˜Gó∆ĪtO¹ ì—™žÂˆ‰,ˆ =°^'ðéT49u~_±¿Ã²¶,CiŒÝˆ¹é ø©¥Áȃ?÷dXä4‹G/Ùªãki$6t‹£œß 0>©š‰i{j®ŒAÑë4Ê ‰Î µ Ê$„X)!è’¥»x̤<ñ§ƒ±ö„«£¢&JŠæÍv‘Fé]H'! ß–Åã̉~5'þùÆoß>o·thmC#ßhH+kçÎÀØY|ŠF?s¹þ‹o4>ÇÈ®a¢ågêlíâÛ|•e‘3NHY¯•£1·¶V8z÷Ï[ƒÑZr‡Ü±D£(=”ahög]#`aLâIøKÙF¢2ˆå:íƒe`L21ϙ◅¼Ò¾€‚-zj*ÁèÅ`sÉ`7ÓÕß¼hX%±¢¸V 2Œ`Ü61EŸ·à||||~ô\Ý[»ÆMcúÙÁÛö0Â5ãgðµ–ôT1—’']|Y°¢2ª:ûµÕ7.ñ¬—ár㪄1W©Ê&¶œ˜­½·’~ÿ<Ý3YÞÍÞ{TÇ–- ˜î¬µP§…q2%‘Š/‹|9/þ´tyHãxì°¸QÏþ·;0îи^€æLïÀ_auT'¶´ÈÔ|Ádãœ#Õ†ö›îaLóõÐ.”>ÔÅ=à `£¨WoY6ÖAï–ÁoWb ãÜ`dUñotiMv/²ˆÎ'Oüòå|Y^^Ï—îìVKçÈ#wPiʉJÁ¹ Ÿ|vvx‡CjÇp¢¨ù°3†¡w4, Æìô¿…ò‘Jc õÕ}ž½?]Nãú(;^)ÜgÑõšWÂ^·‰qŸÆUøEWi4EáÜׇE•Wê"˜t8{€5$×­HžW羃‘+é4Cp¥P<‘­F-#MpGߘ`zÅ™.ÆÕÈk]—·óŸ€hò8\èŽyR¹lM˜„0¤bZz»Ui¦ƒU°Ø¥F™<6aví)ì9Éx‰Hllz +Ã¥ßñÿå×KUÙ–Òå_ƒ¡Dc›ìÐ8â¸V9j“5àˆ\¤/ag¨>Í;ˆ<^¯‚èĦšˆSÌ\ר‰M–uçVÑ¥ê ÛØ+Ky]ä⥃Œÿ¿ñ;0ˆÈâqžõ­Áˆ&Șåþ®¾ &à*/Fc†É·T)Y¿Y–éÁ1â¶4F´1=Œ´m&/©qêXÄ"QB'ugg,–Ç,¶GÛ†–ZµàMcªŒuå6¥oKZ›ÄKõ|¿¦´Fiù;›#hßâÙ¥Êhj÷`h\÷y‰1npL+[°¡œJ”›¤jsàÔ®3#4d’4^ÁþŠ•EîÈÀ@—(IŒ¥ø@4¥IÛ¯­ž‚ú£0bÑ•Cý }ºÒ8Kã"»& eÆ¥fŠ9 Ù¡ #,Ó¶„¬_VLÄÝF‰+«4j$€(fª”;Èé›FE(óĈŠÏ‹‚qu ¥çÔÒ3+­. Qÿl.Â*I#Œ§Ór¹`–Å0V«ø;Ÿ&Ž&<µv¸œB%,Ρ0tÛ¤›´¹Zi™c=°-®Íx¦†…õÜê˜2LR¶rRFÄFw‡×_§©Â茕•O`Ø\@Ô8ìÌ1T ³X» Sff?¨29Kjd…%ÆŒ}"÷çÙÆ}mk(áràluiù©ŽoШ“›$®§ýÑŒí믂§y†Å…,b€Þ›,%ë[¾Éb˜º>6J¡”Æ:(Ñ~%`¶þÅ °I€Õ|NÇ·óeYVWƒÿ[{òk–›) ¬x‡"AÙSÇP6>¸j#/s¦vøB™Äq-Ʉѫ0ŠyƒÏ¢h°ë©-ßÊb[t¾‰ÏÊ3œª#{“” ¨S—œeRÇãËÛb^0’T¹B-8t ú”ÃY[1qÕί7,–b)™ÎEîæhM&Œd_ UaTõÄ–`+••\êµÐ›å²2Ìb(ƒEŠÎÂXTuñ¿˜§r0o7îðG]¬“qÅi`±t:1ìAÝžÚɸáÆvr £«N³,'61—ó{øiW5©ýŒµºeÈ,uyæºS¯æç'¡SuQ¯o³4{Ýš5ýÞKãÙË®µ¢à5%iéø Ìs×ëÏŸr¶ ¼9·òrþÇ´ÈêT¯´à\ #Í?Ž,j"ÜXvÙQc 9ÖÛë½k¦0aÌšÐoåšWõÓ†F̽h² ¤w΃wWël0‚FƒñYϱ]9`@ã ý õº˜øüä¸cò:ü½°ØÀ*]‚éâ8[¼¹ƒÑ×þá1Œ±9 Žwt1S…]Ѧ Ä3˜´Äc²ÊmlÏ«ÑÓ.(–žŸ6\>kªl U½þ2‹çPñ&h׺±L÷ÊØ`ä·+„o‚í~£+I"(çv¼kõ1]ÄÿÍ‘½˜¶|سØhìIi4ž>?øïãü¶(Œ¾»ä‹µööä6Ðû_Æ™¸å¹}œ’Ô«sßfÝqUƲ¼¿ýºÀ§Ëv™c%þ´ÒÀ1FŽŸ{?]e;³Å ÌðTÊÇÙkQY/Ì¢±¨Õ÷Š’ï\c2{7Û[ O"ðV½±0¹Dýƒê£dHÑáÚœX§#gñÜW•JÈb½‚ke߇ÑkO#1’ºhâ Fj%ãjïôÆðˆÅ"w`lªø ûþòzþüX>64Þ³Õ=Øûa}¥hŸ^c•HaQ¬[]›Ûìê´£ö¤íÏÿ9/{>]O©Z\çøô¾£Ë(Ç´Ž{ÙmqûårñËy1YTCcñ6µ•vÖfpàù0ÚU¢“bÝÞRµ`- >+—F$­X…J%V]{Ÿ‰úi­%¾XÑõF[i…ñ&B õ+Œ|›°Ã4O%çÔhtÝã¨ùÒLí…ñÎËuIq‰Â²d;Zˆ] |ÔMEÀŽaÞÿ7o’R¾TU¬j†ƒe)óÓ9™É²ˆÆÛø<áëB·c×±\o^ì&Rú€.«#aÇXÖži„o§Ëççøœ¯OÜôéò!º¿ðÏ/T"…KnîÞx–*aqYÆYd‘òW`lÛXXšÁÞ'î˜7\îḒJ­MÌ0’°)YŸÑ$F“:jkšo±oüAßáçÿ¢ÝQÑø®`„r»ÍbùFáDB÷R±HúÜÂ+l‹Þ¥¢eQ™VE ˆQºš2Î Lþ½‚Q±¸ #®Ãoó`†ùò”R»bzÀúüØüý/û{ÉÔÔˆa³k3–&–u!© dWÉÚ¦4æ·¯¢âô¸èb>ÿ÷^Ù&xôù4Ýœ»ŒmN_ê#é$MˆÂ—¿©DŸP ÌÆÀ¡÷âÖMÇ tÒ“ÚG…E|°7)UÀ=v:†;®–¢ oú˜sʳd‚|èÏx#á˜YŒAјÁªF «ˆ¯œÍE¹[³Ti]ãªÌ\¢zç-|jK¿R¯5¯y˪ó{Ë5»E²6·3‰Q/;¿N haæhM£ºB0¢²„1ˆZYÀt²§+>áo0ãŠF]4¹ºu4Ìb™¼?Ÿ Æù •ç0žÛvR¿àÆGˆtQéG"*eýx4To/ããÜõ< C¾¥Ë0r$hÛ†•¨”@u ÑVÌ>¯…S™ƒL'·eó¤±7¨¡a!m #«=¶qig2«Å*10ŽT3¾¢oäžõx¥j²¥–Êo`,½‚aÔz²ëÒVE/]ÑQ ™ @ûŽE›&ýÐSˆµyEbš\4zF“$ušŽù‚0BÙ¸ Qw0Të7ýÁ³êüzúQ§Ó5Þ@dg°áµdQF6hëªrö)„‚¸†— º;œnó`FÀ±ëŽØû¡óAQ !$µ¨âkI#Nâû¤ïùb}ʈÆïQ\ÔËäƒMÇ(:¶‚1=þÿ…/þ³àå2CýFÁ¨üj«c«•qíÑBã6Œ-Õß|»=/·Å–\Óúßݵq;âsŸžãl¯—À8F÷<·Ã¢Z¤‚¾ÖÅ$1–}ú+ç P—S.MãføŽ®W¡–|ru+«WQGÏøv$”I-›R§ÐÏA¥ÜU Ïb|£BqÆ6ç`tØÃŒÃÒ'K=» cá®ä=ÿz3¾)‡.]b•ÛÌŠEÙ(¿3 ¦>T0¢0~ŽÏóù<Ÿøi•À]8Èý]1¨üü±gÒÅßáƒd;™Uf —}`. W‚8iƒGËÉ”5ˆø“eã·bQGç‹_Ö0F„Ñ&e Æ’à…ˆlÂX륰ØiÕÓÓ™EcRßY)ãŠ/4b£`û1Œ˜>¨e'tÀ]Û–|„Rà;{„qº~ží 0Æyr“ê\Þo'œ uø³Æúè2Œ ¼—ñãñçóBG(®ÎÖt–†úko¸Š\æ ãLXÃk'€I·ý2¾ërÏãýQ¬lÆf_ßï‹›0ª°{ð‰àŒoñH¥”Ñ¨ßæ ÿ FWÁØáñö.xD½ÊYó<<þ€Ö/y­Xé`¦ûA³¸˜1bÛE#ø—3ã—0 Žiø;d÷š:üÝùs‘Ò,%‹´~‚Ѧî5?¥ÐhY€6`ÌíÍt/“I Ï/uq¤ÎEô¾‚1fnÍ"¨&Û5°HýS|gKÖ9vžL¼G*[Áˆ?Ý…qIâ.Œ¥ °dðÁ¼ÎÛqÔѬpÜ„Qdí¹6E—a˜ŒµL-"¸„Zfj•”ä÷éÖÿ ŽÇ|öÁt!~ÑÁ‚1‹ô—4¶u[Ó÷wPÆûóâæq|¤PK±Xd‘¾É0ÖÈ4Æ"Œ5Œ´''Æá:`÷”Š€Òé¡ÉuÛõ^žºÉ0š¸Q#0¿ÅæMg©NºJsXú¬—Þ+ͶOo ¸cÓu!£/Œp¨Õeáë§0»D"&QʼÄaŽ'Þ¦}¼óSÛôE,«¶VŒCÁØòçw•‘¯Cú@W‘ߨ„7ÞÓ6®ó}:¹Á¦Õ°*â§TíËLÿ¨µ‰gÄË.k[¡‚1 #Á(°ó;“XŒbl2“`\¤r5â±1oVöe‹‘Ò™ŸÕ€…ƒx—T]6÷íªq‹Å—ØÛÌmá±°.á–KúÖ¥MT?Qßtý¡WaÔ§š`1õPgŸ9ÂÀλ„;rŽJ9QzY0öfúøóx<ÆI'iFžÖSÚo³‡¸ #D7÷-QO”š%ŠR}”b¤“«>¦*mšàþAVÍHȃwž.‡²WE"ÁLU¤/p”ÝAò~}E#YyC±¡]ãÅÿþ÷Ø…PŠËã1+Î¥Û:ÑIœ°8Éò!걜uØîFZ˜¯¯a¬»6ýÕý-;vNŸâ<ƒ]æM‘JE•Ô8!ñ…FÔF¡t+­Îròñ¼%º>=o·ùyòÃê•5‹ FìhÔ0æå®Ãê6YLÒh5Œ=UØyȳ‡Ëó:ÜfÁµS‘ábîáøÚœ¿ cUùÈ Á§ÛDÍÆî™ÆFhl”9q衘þ…Ù ¹ë1ÐôµoÅbRJ„qõ—a3à¥#ý»Ôâk“Å5‡Tlñ¿‡6r)y¿ÊEŸ´A¡˜bÎÒÒ×àì-üÿCÿ•i$C¥Ç/`T;â‹0Ó¤ ˆ§Â–Õ"V;ÿå墣:Ž„á`'h·–$@<ÃÑÒiľÿn]í²c ÇR‹W}þë¯Ìbba]éHôÖÔoQ]ìmûõ Ɔ0âEç㲜—e‘%·8"‡ÃW—Z¦šÆq€Èma¬Í7‚÷‚ÅL£’h’¬vfvg—8T ŒßõS2ŒëÔŒkÊÉ¿ƒ±’Î|²€‘häü÷O{ÌEÇ&G†st^¶?gcÈç¡B€ŽýÙê$ÙícBİ{Msî†4‚t¤ñq?]KŸ#  á;¤¦—©£ìIôA'Ö«al¨jb1œ‡ ÆP cº @¼].ÇÈ× Lãˆ$š ãµÂ=M+vG«Í—ù/›Æí è괻ʧ.`\k^h«Á³¡ë ˜@³o74AH0RÏ»}£ºN—0Ɵ¸rG£+†`V$„ðc1œ…F¹í3„¢ƒ5²T£-+JŠ›aTõ/ó|ÿë÷I—˜`tÞ®º#•ü¼:’4ª 7ÛÁ^ËXy¬€1þÆù4ϧ‹—( «5Šé¥`$¦®ßŒŠF‚„Yl­#ËEðÉÎ?åÉÿC})˜¦J°°v_¢—{Ðk°˜È¥·1ûV„a{^[Ö릂qÓᤳùg ã ™¨aF¯¿ïg=@tð n‰¾åñ®Üº Æèj‡B‡ÓÄórMÒ8*ŒLeÌËÈâµ ¢ç—:Ý·óg\4¢àýkó}çùrE‡Ko53%ŠFr¶`,iä:͈5c¡õãb.0r ‡hH5¯,K´-ˆž¦ŽÚ™ÑT‘i-™Rà>ÑøÆDcãZˆå–2QÀ—a¤-Çßdá—NÅqÀ?¸ÏÂHÙH±#z=&DúðJN/RÂ]4KNb,0Ú Š²£OÚ$×(±¶1Áhžï;ëww]ÄZ›OvHN5® c¡0nËt #²ÓñÖÕø™’cBM Eµ9N £t}I0=2¨f›ã8V0®9nßé•’Ot ë2-¼q’È^W…ĽJa\–Ó Âx»ß/| \ö|@’'}º¾ZŠáC¼|¹êq…ÑO%ŒcÎ}˜f‚H£_QVæu´EcÆ¡„±&â|yØÓUîûì)ÐŒ²áb=S"!iô›žÖ\mhPg‰Êè¥7Ci-‰é¾˜4Ó˜±ËèÔdNJc®þÑèÜO`ÄÑ€1ÑH{þÏÞT¨‚Mn¡›œ/XüýàZM¦˜‰p£ÿãõ,ú¯Ñ?îG©Ó #C9&s‹˜Ž~Ђ®céÉ‹"Õ"‚¢÷#¯§ù¢npä˜aÅ·0ZÑ,ì2#/^¶€Ñ[)ÖëºË¢hŸc·KÛOô; §,@{zUÆýºÇÏÆÔÍXÝ¿…ÑJ#ýžV.MCÂ4ÈrA^€žã_·óáôûï-ÉPï8Hb~ ãY‹Y\âá×eë¶±KPІÚÀ¢H† ­cvd/Ä0ƼæfƒcyÌÄòf`Ì8jf`ŒÆO70bH±RÿŒFisJ{ˆÇNfØ<ÆÇ™DàÖ_*ž]ÜxÆï ãßS9¹³#íÓ÷0VÒˆcB1Fž0ý¡j\ÕÇóé—ûýº€ˆ9Ç+ ÆÆôªŒÆ"9ÉX¼=îs–:=¢êÁ~jdÆNatI¯¼O.)Í[Ãh‚ð"»Ôd¾‚±ÆË¯ .èx¿-7^¿|˜²˜L#„?Õ3¶•±”Ff1Û»Úýš~ƒþ ÖÑ.7g:À¾²¸Õ<Öfë)UPÆi*ˆù¶0Zµò7`lÑØu_“J㾦‘£È=näqÔ,‹»®ýåþ€çžo ‘A÷Ùº–hlÂØ™1èŒÜry,ýùÀGñ-<©bèÄ2Ò…Aatn`Á¤9º6Œu¶ßJÍÏaäsøu\®÷%g’qt F©ã¨¾Þ •kL\|oZ±¼@8E!Œ 4ˆä“•QZÅ­¥‰ßÕñaTýTÓ„â‚0–4ö…8Æ0¢¯KŠîÊ€„N3’•6Za;‹G|òíx Ï·MŸÒ˜×–ÎP)­`Á+AA5ŒÜÃxÛ¿°2ÒÄóä #’>†Ñîþœì0ZËXø´ó -ÌñN6Ãé–ÌÂ(õ–&‚n" l¸7Pñ~6$Zcë…¤Á@xzàSÊ5BªØìñöçÓ™ùÝ ‘°ëŒ&j7äÆu #)cMcï[06X$Ç©4‹@£‘ÁÀÿ„ië%äk¹Ïg†ÃõpoÙ6íM©0Vy¥Èû~½Üä rè²úÎÂÈʈkëCVÆÞ«iÄÀ‰ ;ŸYìIŒÃ+ϨSœæswÀÕk¤]ìb£wê§y”ó´Þ°ˆ‰”h±q#‰5Œ»Ýó¹[WpZ‘NT%R06Q}ßo!õ~*¤Ñ‚ñ îŒAa\³4&ˆ°ö¡BL"Ñe—. `ŸqœoËå×¼¸¸,‰ÆŒ£Ò¨¯˜'«<5—é­Ø_¿ïŒ#«!P5hSÿ"0â+ ª©_Éu:â½Utl„_ÂÀ0Æ0Æb"ø^æ[·ÌGÓyzEç­ºèTi²7ßÀØçZÜ„±7Âøý”Iv4¨ÚùØ€1®ÁÙ©ÖÍKA#á"Ô†h, »j…hã»fÚÀ¸riÆ·økŠFfS›"åŸyzœ—ùס÷Ë|º-]VŒ£•Æ|´‚‘oì]—óíx[ð` @a?o¶a)oÞTiˆE’Æ@µ½•ê÷,ö¥e¬aôvüµôþ8/>:ë,R Çnñ-Œ˜]ûv´«r×Ú÷/ÞüéÙ%¢âé#i+Oƒ^úù’F i¢Ñ¿ƒ‘ ™ö£ÿ£xñïIŠºLE ²‰*5æìÕ1V0®Ó˜2`à¶‚yÂ(ƶNEzž¡ß8ŸæËãѱ$êhaôIb£ë‹!¦Ñû…æ=ç3# ãSa„n@žßY4òáê‡ú×£ê_Š~¬ÓúZ í·’ÅÂøéÿ<ÛÀWKOC„*ýO0æÒªÓnÜ£÷Ú²<ŸémÇ]çƒß˜FS®5¤…M|9H¦½³›­Ï0r¥ÖågjàúØè_XN -Œ“f  E‡"O™HDáiq8]ˆÅC·\»å­ãÞJ£¬5ÃØ2q?Bí÷çã|©:ô×Àì OKý¸®.Kc-$²½·}H¾ÂEëGj ;¥KŠ®ñœêßÈ0Z¤·C ü½ëÆ.n2Œ¦¬z>ä­ƒ2½ëv(žìÝûÌv‘…T´°˜ÌLXâ㺗0éj+\®‚‘ 8ýÈ,"çûÌå´r^Ft{aÂ?´hQ-)ôUàDÌÔð™#0yUë8X-ŒTîÛ0ƳïoC;],10±î„PÊŸ*¡Q¥ÆöÜ|Å{»¢„ñ”&•/geÃø¶J§WL‹ùÚu%‹[KtòQЀ1ì:‚1½±½d´¼Ý·¦+rX–bF¶’zƒ©¦©‘)YÄivnÊ($¶°Å`„ãã8Úãy ,—…ù1_–ãeCcƺƒQiì¶‘•Ú“îïöÁiÈjùCiÔ:½­†R¼Þ5E•nÀhiä)ÝG•F5.®Ì0ÆNi|j´OÉ74`ô!îÖW¶ÐÞYkøv2îqhåŽ=’é×( H"YF½½`1nXä³(˜NaĆåÿL¶fO²näå~ÓÏŠtÇp¡.>櫃æÒiê2j¶ Œ-Óuz»1©³ÓŠ•0n˜K=LSI§¢²W”ÂX70ôîUNÉkMŒ4†÷UZ/LçcÜ}ízêKž>ËQÆí,}+ˆkãL3Wãõ„F¬1+#õãTÂØ÷Žªß Tm—`¡ãx'T…Sö—•¿<9:«œJ#ì`ÒÅk\§Åù³Ôjéb¶0Æ­Ó’Ödð à ß~P­†ìYB –ô0]»FŒn£UÆ(4²¯KÕ§™ Ÿ…±€Ñc\cĶÄç²Õûø4HÞŠL|ãæ¶æ¢”ÆèÐJEÎ;k Ð8¡W¬htÅ·0rÙGú0%ºù§\·iv½µC!}”|`—ïfXÇÿ³^vËŽ«8ƧšSgzÿvèš_LUÞÿGZ 0‰Óg†ªîÛ`ƒøXZJ)¶WË«~‹oÄâûÏ·_ŸŸ²™",š“ÅÇ+Œ#cÚÇ#’ÕIlÁé´SCõòdFV>G³Ç±GÑ~ÌWÏ]<7ËýVÈýŒ|L^†±tó€1”Šw&Œ“¦VsttËãtéíÛ×Të‘õŒÝl»pî ŒA»kÔ&YšC¨0zV‡« ø¥h%çè ÃF’¿L9qôi®VaTÇH]ÈF*ãE´ï/ù›s Á(Ò¨bT{*ŒtkÉi £O™’uèI»R¢^/sÓxncƒhûî¼d,<÷õ ¦¿v0,ƒ}ÑlѯK>€1äKMT—Ò(Éúeð Œ(@%E„R„<ùô®œ)/¤V}î`ôÆF ‡b×Âhh´ÒH1ÿËuMŒå%«Æ’é•Î&ŒåÕïŸïç#±¸J #«’BGaiDÌE»˜Ð¹ÎQ¶’ "$Œ, T}òÈ0ªR «Q‹ ±Ï›jšZKòÝÅ\c¢¤Ü]«'‘©ãŠTmFeÛ»h'ÁHÞjq1¹h–ú*Œí+–E*ãÎ+îZý¬õ0Šp–DmÈ‹ôõGO#—”Qrv°UT/ÙÒØªÌÚÞßõŒ#öSè®U³ji[>ÉFñŒ=ŒžÅ1¤ŒzÈ £ºÆe!&÷§i;€Ù C#»'š’¥Âè'0ù½/"Vx4ûÆ"ŒGœRŸ-ñ~È"`äYÜn1ªáÒtÎ̄ŦŒuÅ´ò6Í„ö8篱Ø'ꎼó9™+RÅU‘ ¤Óá^ÑóY ›‹­!O§RÀˆ0j 0Jc€2®{=ïcŽ1³‚û„ñÚvŽØýžs(0JK0J\èöúFÝçRFjÍÐ:&V¸ÃÙ÷0.T*^(0”’8Ûz>2i}þ1Œ,‰´"‡ebeÙµÚ•n¬ˆ¾DÆ b]<ý…Œ–Ù0¸FüQiþ\Ø&…_«‡qH&†1ñòSYá5×Òu# Ç©2r£Q‡ Æca¤ØñN^Y‰Æ>T—]eƒÂ2 Œ{atRK0HÁ÷41…Ñ)Œ´£‡“=Œ°}”¨C›DqˆMÛÝ®ánfo)Fì%Ïó‹öýÙ¶Ö¡N*—*Šb¢2kÃm“‘>ÏXسˆr£<ÕÒ¶†-mdS2P E_SâËç¥$õ9‹x®0p³Ô£2ª…¢,ÖÍ`Äã•-ƒŸ=ݵ¢M·]ªf[˜Ç—Fì•KÁe­0Vá ^-wçÚ&_ •”1L”`\Üé …Fä)’Ô“…ŒÛV±úvxÆ ‘Ý÷‡Ç°Øß;u/¬s*ë]Ø(é=?L¨Œ”Ó¨>cÑÀÈÏ÷0¿¾’7 P*'@Bš§ÍÚ²(0rÒǺe”5粞¼™4òÓ+’ôÕÉž*qã´©+LFS3/ £IgF'RšRg(Û6÷3äz¦ÂÚgh¤ŸÉqñxõ±¼×vß´•5¨¹kuAoØ ’Kv2ǞœÂêÍí?ƒ“Ê »“º7´ùÔY8 £â8eÑÂè-Œeƪé:‘襸ƒ‘ß)2zÎW‡,*ŒdyN5£+‹@ôÔâƒÛëyÂ[@ª^&òhSµÉ®2%Ìüw©W©ËÒ5I Œ}̵Í0 X¶Ù!Ïx}aÞFdé…¾¾.\ƒT_>RôOâ>î‰'¬Jßnâ ÅdçSƒØÃØbd'ÄþI³4±8Ô?åª -L3hh´0ZˬÈÒcàUïiäωB–ÑS`a„itüûºT1ÔºyL޼îp“øFyò0òŸí´(®e™–6!¬Úñ,Išµ) 0òT(ÆÙÿ|˜@a×ÇhØîý©#¹¨4òëוµbï“ 0‘ôšE&=/ /uð’Ê"ñ·f:‰ Óèô¸t†QåQÀÇ8¢êŒLGèa,íDäc˜ÁH™cHÙ'ö);åë¼Uçfê×䥱ûHeÑ Ì9}#n_رÈ{DÛë6i6ø?ö µ®3ÂÈ9|ü¦£>½xú=À"LÝâr]jÉAq7Ë“À/79ð´ `ÄSúÿÄ!Ä-¡ðJwl eb –F¸©bZ>.?‡ÓÚ]457³Ø‡¸üÞ:+/Ã(—#ŒäOÙ3ó/‚1ì`DEÙj‘‡º.Wö5 Ÿ)~DH|ÉX£Œ.žÝlÿæ­ïFqZ…KÀ6í?Á‹1I¸¢§èæ>öx~ŒÉ.AÆÛŸ,‰÷ª*½©hXÊY ûÄÎû@#D!{˜Îá1EdÛŒ-¤9ðjÉ-žXF £þz#£¸Ýá=‘¤‰Fb±Û¯‹c§O,úžŒ¬Œ|Œh1´ Ï¡©8¶ôz­vña†.3ÂX,MuÜe}0Æ~‡ (U÷±Û·I¿@¶«^+‹¾E¢fiV¡"âíPWS±F_ºU?)#cº.¹ÀHcb}W7myÉ_q¥ 1Ày¹:VlzHÐá?!#IýFÙÛCa·M¤&…¥‘¾ÉšZa4•Ðê§Í4À"`]¼Ò¿Å­õïª(ÝÝ×`ìiœ(£[a#»F}aAqì]©Ú#)ËUémÓ‹]ö ÎŸJp¸Néw(e|•Ž['ÕôO…‘qX¬0fi…ÑÌ( Œôù+²ôùl£WÙ;U5KW òK0–î|5Òu."¶&öO ÆÅ@êG®/ÛñX¾§ˆÏæMpÞ5—Ma 2>‡¬ :èa¥Qçó÷Ïï)Œ® IñŒ1£€1§²vÐÛUU ƪB€‘,åÇ~·X3›Æ’¥!…ü/¥a/oi`¼ó¯ûårW™E󸽇0n#ŽFF«‹FOƒ0 ò 0€d¹#‹55¹õ‰€ºKÇïG¯?€š‚I4*8<€‘âñ2‹}Ö™6#eB_Ÿeõ3ùë5’8K%ïa” #¥£3;_†ŽÆQ.Z§R?°Z±Ê^™SI)_²0‚TLÖH2‰\ÔÜ‹4f l£±ÉL©ÑXY<áëX—Æß6\ÓŒ:a´Ú5²8äÓG·ªë:£Ñ71=»Ü*žÚ3¤!—¢ŒcžÒãq«Ò¨(½¿~üœ‡‚ܱ\°·•ÆIü×Jª–0 £Bti´….SwRá×Hœx¿sXBŠwÔ*ÜÛsþ&at›B#ûIR²Yp§âËÅhc ¬eÑÂxCÖQc*ÝÕͦê c;•¯JãwØ¥5­qw÷|iÌz[b?§¬—fÇ;ªÄ·MxHÎë±'ì HÿǶ(!¿¿}‹ÿz?}}H¢N6GŒb#¥¼\itt…úe #×F•üfÑ\Ê]#Xc.0r%ë¨ô)ÎL* ñØÎó"9d6 KràÁK ÂÒà9†’¨4,Îe4?€1As­´PÚP…¸Ò>†(Qà»VÆ=ŒìâEÿ0’4Þn;òýÉIúßßîý㭭Щº¹,6M*®VJcc ´k·¥lˆM‘¥¹‹êÆ@i9 0mœbÛ½[Å=¾A Ƥ‡æ’"S“Óxci<ñt‰|’Ô c zCqÑ¢‡ZµŒÅnÿe½L—Ç‘ $c@8‡DÙÆlï†õcbµïÿ€[Y’Ò´{š3-K$ˆ«>deŒmñ÷06TÁ¸„„ss5‘r•Óöò6lbØJ£>üӄ¼’Bd¥!ÿ½ ¬6mÁgIzÖìýa„6’q4ðoâû멬aýä,<² ñ¬“Å'‹è9)czYTÐhs„ešuÞÀÈ’˜„I½ e`µ°ã]õòÒ·z‡$Ý1Œ¤‹OÞ‡R€„ŽE…Q²{VMÖÅrñÈWÕÅnð;YúŸÀ¨éwj~OYôq¢‹áK©Hâ¶uÑGMØ *1F±܉><9üÈ FÁ> mK°˜M'‹Ô9hü¤î/šïóùâÜÉ•ê…PÄE@!Ù3*äBa·büèVâdÜnp,–‘Sc4›—4ô 84(‚‹ü·0Ê•£ƒJ2†HØ!³7¾¥t£ä²LÙ„q£¤ô±qhk‘éŒ#aü§0:!Î+Ø)SS«Ò|zDc“ªÓLÊÇ4k4#;)Ñ R^?ºAŠÐ6@´1…Åß ãÿB$ÜÒðú²úðç×Ës³ne4rm@‹ˆ•El¼‰‡j´ªÀ¹Ê"ÝŠ(`lZ¹8QÝ–F|ÂnfK‘¦Œ¡…ñ>!r¼hÌ0¢‹X :‹NŽŠ “iV3÷×Ne ›€´,6…ɯÂX#‡xP£€¾}ë}6¶½Nüœ( g4¢¿P Ú ø´9c/± 4oóþ½0¢^œˆ·õ|ñÿ¹²4–3ØÁˆÄj"<å‡Xwž&å9‰w0âû‹¼´0æEÒt8Æ>2|{PR*˜C3òõså1¹æ$k¡F¯Óy ÆSç Ïí&½oiœæh ›ÓPâ¡9{Çâ÷`<¤±(à^ó®{0Šo<ê@ÂÙ93{( mÞB ,Ot#5bátæ;ŒÔ÷éòöñùùõæ©]{aFÌ*Éå \XÈA8ÙÃØÄÔE’:»ÏšI™B½]¯,¸)[J·»Æ‡yÚÛðd¹§”\Û!‰?ý‰I>,ßçFB 0ªðÝdØŽÆy¶‘êI¨ñØÃ˜¿ÃâC9 ; ü.Œ*j/DÍuØ»‘ ==@&ˆˆÃÄpÎVÈÙó\çýÛ@™ÅÁ­ëëyç÷a´Ó"+Ÿ ŒŸ˜f…ÄN1‹mtÀÓ×>+ŒÅÑ"Îõ0 YÎVc,*ZnêQÝŒN+¢,<ÚNÙ»d‹QŽHqxk`¬,¢KƒñˆÆ’§ËÞ5÷Ê—Ÿ†ñoh<¢èŒh¼û†÷5`e® GT4¤>ž}½×T'6X.Ê´áWáÛ±èÜú~zþÈy}y#ï(“³SX ˜8ò阖dj…3¦1±[ŒF$oq• Œæù–eReDÝF:™ŒÅzÀ´1Ò´Ó8Ž•Ñ‘-_ L©•–Rõ•.F H$Û,mÍnÖeq„õÝ"©í·hùØÀ¸ÍÑ?Ï¢ÁxÆ^dôäï:Ž>¨¦ÑšT÷ß78IíE7{×8jªvyf$õ¨¦|Þ£ípjPmƒNéùícÅô¾¾V”2©1'O<&ðg‡Gò‚y ‚Á'zc i‡LN3Ÿ’aÁ(Â?¹ã¨ÝÄ6¤%ôX£ Ýe0¦›¡Ô­Œ¹æÉ£eáðI¬yHS(®/4Âh‹j ;YËìéI»–±ƒñû,ÿXw0îG*dYÜ/í·/ö*©4Öˆ‘zä/ÒT3Éë1óÌYÜñòE¬–R.ìy{c›EÞW™ÐûË…~üiDÏ£Ì~ Y þtð¶Ž…Æ0 ¥@ÁÓ4ÕÛenèX$a nèaìÊ–Ñ’}K)ß4ä´™l^LØÚ…1¥bZqáådþ”{Ë0=¤ÛE7 âª86{i,“Ê{ƒFûWXü%}wçF¿¯¼êÃ9á·.Dã ó¡Œ<Ï>¡>¥9C)!8ÔóÒÔÇ,ªçH£Ã——ËÇùßâëù9¯§0±(uäÄKXI½Á!¸ É³0"¾É Àiáô‹†×+æ>p}ë)1ÛшÕy˜ú´Nœa…•FžM5KßÊųZ&Î&œû#tÑÅq'ŒòÓ©Àohœ‹^3‹¾ßæ7,~Æ#©»Ü«[+¿ýp£Ò˜ZCï}}O6WŸ‘øe_dßWqÍÓè¨tSPå$~—ááâaõ!6pÎçËúz^óéõüúìYܸ<‹}D&u8#Q'"¬Y4‚'4®Wè Y:©ºæD~2ù9×z¢eµž"°–••N£úé¤Pk+ƒ1e†qB‡)e§rÃ"—!ëË£±HëœæöðßшŒPƒý]ïÁhÐí`ìU‘‡¢©UFy¹?)Ê"æm]70š¨ÙÜhÝãHA£íƒe¤ÝelBø³0JL‡'þòã5KŽÎ¨7™Å~ÕzŽ:#oè}Lœ¥+ 9q˜µð"`I)]_¹|‰Oôq½ˆ|J[m̹dÍ~Â¥U†{I·]\IR°î“\6Ÿ¨ÕÁržæZ‘Š˜H\ª06Iú6öÛw»U]dLæ2Y4|l¦l'eƒ±ñ]ùM^õ»d늮5³Õ^Dä”FéÎó´v™½„U韧v5¡Ä†î’0ÚÎøy^ÀIr`ÆXBøEû-¤s ŠxñD®9Ó=ô‹`ëas‡ä-àQìȘË⑥Ú6D8ÉëR–fÍüx)‡£„Ò ¬:e˜Ì% ƾLËÁUÙh“ J‘6“ÝcÙ̦j¢mz~¿¼^N0ºWÕt’EyÏ,yþ,†fôÜîéiãÑÁµVJ£4 ªŒ›¨f}Éo|‡•¼Ä©.› V˜Ò41ŽÙLãÂÂøàêfØÆ㾿ý8ÇËË{^_ΫwwXtù fÜPÔé®?¢pcÞ\§Óúõã_Þ¾ˆÈÈâ]¿£'y D˜9Š2¹5‘Á K>­ý(×·Ò¿|©0öò*.æ {n”¦! Žü3…CÛ·sXŸW\¸1Ïc3û;0ÞÓEâç#7"Èô”§-ŒG1a˜µ Ó(¾'´,æ=‹Fëìþ<†1—„°eºì4Gm\–§#Œ­2Ö`y•ÆÎÅÕýÒ_=Œ‡,æÓ× ŒÐ~6çÿbÂoa1Q ”‘‘ ¹NT‡i¦N4éi*4b±ƒ£úe¢OZ‚# ó›õ2ÔUku»Ýîc»ÅÞsw†uýBcÂäbqäîBTmCƒbùÊÝ\>ž×Ó7µ4:øÃ‹î(IÿŸòrÝm\ס°lÉAeè-I'êt€æÇÚïÿ€‡‹¤d]œtŽ0“¸ñM"?-.Æ«Žu¾ÛÞt0‚œjõMc³ó5«2§¥+t`t ãx¡˜åL“Þ…Ÿ÷oM[ÿ€>í8¿½¼þºœ~ãeqév9¥íh¦O$É‘‚XÀhV2ƒ©Þ³óf>ó'¸ö_Ѧhçî&3¹|“m`¼•Çþ@£Ïý‹m–_æ@[,UÑÈ o0Â1ÕË‘ûОϘb¨ õÈá]äQÁxEí`æ Æ¹RšQG•Fv¶ëG—ÃÎ Ål‡á„ÍuZUEÍõOøÆ´/ß¾^ß÷Yä =Wx€2Zò®ôa­Ÿókæ®;ïÍê^ÞŒ‡aÆT+Ë- ÒȲ»!ži`t‘-aˆÍòKÔxmä€å?je°Ý 5ÝV±È/­hä_Ÿ¿O/NgXýÃFã>‹{šEãsƒqºc¦ŠŸÅÐV±­_˜¡«G,0â`ù'%b¸€ ÔŒ3„qÙaŒßà«Mk5j}jj*øë3GÀQßòòJG¯§KØaqb«ÊÏzrYÎ7‡˜ßÂAý^#æ­P(߬H~æ2ä ²‚m±†1¥­Šo0v4Þ\kÿÞþÞnüQ °ì„©GC•Úiýv5‹ð ŒÖ¾¿žNß—_gj¢ñŒwY´.4žñ!‹Rhå²*¥ŸuÞQËt* Fñs6yJjc5pÙÁŒ0"fG•_Hã¶@[¥ª‡±$«T<+À1‡[^Šxdeâ|kb km’ÈèF#•Ñl¦1pÓd<«XBáy²Þ¦j¢…Å fãUbÛuµÒ¸ûÚ_-ºà¸m ¡qßHK O[S¹AÅ´ïÏÏïgÐh¦\¨ÓŒc&{"ßOO‡UXôaÌ®o`¬ê´ê›-Vi.ÉÞ2Œ^;?„q¾#³¸ã%©¥¼¢Ú³whÜ^×”<Ì‘•1žO§3È<6,Š.òƒò@,ÒÍA`$ô¤LOëªÁòûÉT"`°n¤¬Þ”iŒ€ÑÆ#½ ¦ÍõéÙö¯ä´§H²3«Ú@鿨dd‹9À˜iD‘öô¥R9a+B"iƒ±ž‹PsÀ­ØV±Ÿ¿_/ß_§gZ¶ÉÒ˜Ò®,Ö˜é« Sôt<ðæõf~H#㔥ï'+ôQtK´™«XëvCºÚÆŸ±ø‘EŠ‹¡êh"…+ø?иƒb ,[¿¾H¥F»ŠÅIt‘Óç²8y›èvΘõ0.xÃu͈hœ éèÂhI'ÁH`Ôm¥lu•.N„s±o[¹Z(9”¡þ!“4Ò(~ai&¡•Ú«ü¦[ ãMÛ*ûq~¾<'ÙЇÈ,¦žÄØA¶Ðƒ¡O蔎£‰aiëY`œ‡œç ç¬+ c¶ö1Œ{ý‹ZäÅÚªÁ°ÓlI‹$nlkS’ž6+ûúöì™Åâl3‹Îý­n„0+Åš"Kù&q$u\7?^ÁÆ`‘a®ö%Æž·ÐMl&Ë“w•RÆq4Á«B©ù9pÛ(Éæj-¤ŽFWh¤2m\#k£%bH&cQÆ”$| ¦Íâ¢Z ½Àçž± ,R\6y’r>F$s™ý Æ{,JiUÛRŸÆÈÊ8ÀHÙ`O2Âè×€&ËǪ¨²{ó])¦ •“ÖÁøÏ"Œ5‹„âÑ47²¹£Ö…%‘ŒxãSa‘]Ì‚ƒhBØXÄãYWÔªrèY—ÒØÅ®Ëèß\­µm˵¾¢ÑV¶Ñ‚FÕFŒH%÷$išZµ·IïR_–Ãèª9ÎЍÑÒ…>­â$B£Ÿ7·Wc¸Y¾ÂvNåÿ£^C/ËoØ8Ýê{u‹°kl/ŒÔ¥g‘鈔_´†3Þå…ó;÷ÓâÐ&Úêš™å•Kß¼à,•X,Ýkd˜CeךƫN òì¬ u:eD,”6ÃVŠ“ÀŠ”vI2lØ=©*–j-wvêXш P¯ÑÅ(‹ôÛba±Àx£{žO__¿iüyùà|z…±êv ¯n¿OÚ£´)ˆ¬<ãî¶y—Å £ç(Ó·Ì"Û½F®á;ÒhF7ÀÖµ—ª{1¢6*?v®óÂÙ¥¶L¦(w[ ãR™Sl±Ÿu\¨»â>p2´ýd®WOõÿÈá1A-¹“9©c<ŸNo§·3/C`¼µ©`4H X wÞ‰ƒEû-Dªg±Æpƒ‘íB cKd5ê3da‚Ú¡a =ŒV`X´kHœÝ NÄsßJÒ:9x´ôh¹›õ«ß—1Üæ¹Ö0Ö§"—¯†ÅƤ0Úœäk #‰µ8$©N¤1Y-ë Ò3"Óɦ×`ÂÀ2à*rž,¦‘$†¿·DžLrn30ô&©ÈÝoâüߒ㨎3ÙŒH2Eø-\¨1;Á͆iJÉ¢2u‰ãÃóëéå$ž1€ýt{#-9ȾIh¢‘ýˆŠi«Õi…ÑšaÄ–ÈŽRíêîИˆûU··wòð²Ô6iÑh¥òªÏ D¢öÑ/$Œš8fqêfZÃØ #éb܃1 c*½ßÖJ)ì€3¢é,¬ƒE(\è4Õd…QþdÅü#÷>ì+¡ ºüÔ±˜a”ÓþPH óÌ©Î8ÚÊ|@jf’DjÕ¼%"ýÕ^¯®‘XœÀb¥Àš³Ëéí×û–¢È¯ï²è롲¨zh²‰Òx‘HeA,4ÞƒqÏt)îÉO=l±Æ^­šãžQÕg\¸_d^¶¯a7æÕ 0¡p>f¾Iâ„Äl‹M_¦» …ƒVŒ\1±•—%È-U™^0±,Ö¬Ü7ºf W“Ò„cÞYJ*™{cJIA` ÛMõ¨èÀ@qÖ~…«téY)Íúh3ÚÑ’4°”¢Ðanb$m—”Úg‘(^N__§Ë»ÂQa¼""½l,Šcä @ -[þÀS—ìì7AŒn„qÐÁzà±rr6Òàݧ1òl¹ÔV×`×Õ­ µží.­‚ì|68UCF®‘€I¦>†`ô‹)«ú@5‰Æqk`–Ò»m+ £ôA,Œw`d‹õ„°°‹ÈUÚ;ˆáœ€K nõq Ë*n#€@íu°ãó²×%Ö!äÓ^ö;ñ¼,)Ê)§_nbcL‘ºY ¹EšÉšiÄNÑMUw’Ÿ{¾¼}ý~¹p*Ä]%«{,riVAda!P‡$EÚy¢ê™ž‘Æ¡ƒé cƒbˆ›èæ|Ö°naÌENþÔ*ÝÃè‡Ò­0* &P¸Ä¼ÀÕÀiç¸u°·õ1Érv©º[q:ò l‡ö%f§Ýž¡²Œq€Q£½"”\úÆÐKJÚD$éøf=ö ìeðL¡T/Æc¿mK«´›lZ7•¸r™ÙÑÆ¥¥QÄÑÆ[„Îx¶ñÆÒ¦Œt'Ç…€¦pªõÑ/¢á!ŒÎ}þó²mncE¢030³£-Ù‘F¶É:UÒ‡[5Ùÿÿÿ¶O7ï0rî'±4À@ópú4‡š}ÄÒâBd‘S&dàDD#))å†40šN+EŒ)>Î#8IŸ…˜ºT[‰qŸ©ãêMÝÅÇ[×Ó†2 (ÙuБBy JXÅç¸à¼)ØæÁÉuÊBGE!H°˜³´*ßH6ŒÐhjqÛ…Ç—e.•‡8y/6„„èai]tÔÞsÖÕ°¿âá;dr9ja98ióó_¿ÿ&âŠÑÄ#(“«Ö%}IwJCü5î\×2-䑨 ÇibÝc=Û•Óy÷—Ûý=Ÿ'¯ýÆ ºeYX$†ÄJãS¡fTMg¥èQªN`¥©Ƕòü¦ô+4’±{ƒÉ¸œ·LcMR­Î2 Ä| i”H,”FYÄ5†v­÷Ý9©½9ñá1±¸ÀScÁÜg #U•^Þ²Àht#®œàæó7©¥yüŒÛAÂgX0½B=—3Dê>yIª^¬ a…]aé|èÇð¥3 ¡,Âd𙱍I{êO÷מì2);J¦ÆaÃJ#f¶Ç÷ûë×=èžÁÈ,ÖU…†…ôÌ›U"zÌŒ×꟠nq,aH£êX¬˜90z{'··ûmK0Òˆ+èjàÄs‡ýÑ%‰´ °#©'|Av˜ì8ÍIÖÌy’³7ûI²ÐŽ+UbÁbÎÒL£çÉŒ9€Qûì>cƒc{y‘y˜çÔj%m´˜‚¬š.Çk œd"0u§+F—Ì’byÞcu/%ùq‹‘”#šb 2ÙÒ¨d$^Jf3¼@PI©Q7Á‘º»eµˆÙd2çm»Ý?Bøí*G4†‘œÚRŠbʧv%K ”sƒ £Ð’Nœc};kk 9¥ÄyQ>Üî瘮{›R—j•É…#ï9QW‹Ä*a£Ç_ÎÔ$3Ž‹Wë 5NÛÖI\>+a¤ÇÔA³/9„Qà+LJR‚4wáÎ-‹0Ý~€´m¬îä• ˆ·Ö ¨ (æïSÈÀñ¬³âä«—J1Æk+vgl€wÑJZ· .u05ja‹7Ñ‚âæYW>.rˆk¬_J雟ôÀµ$FSÄÀ¸ÀçØ™mÊ‚\­pQḭjĽ±Ã…,êÅšÝÆ3_§jªce‹6tñþ°¤dê`”¼úÆYÊDD ¡½Á¹9džѦÝRKÂÈ¡¢¦¬kÐÆJ«ª"(ë)¢¸w$0îÎòÿTbI@<ÞºÀ`p³OÛB­*r 5>€®©Lm޲V)¢§åAÔñ∹èJ¬"öÇ8®­‚ÐB_«ãÿiĶ¢ØÓ¢Åä*øw+å v-zá¹ uÕ‚f߉b˜ß´0²iÀŠ·Ëù~§l—j*wé`\ÎâóF?€‘š`Aè‡bNü!Ð'¤ìX¸Ù(Œ.‘µ_…Ҙż‰ãi:AYÍ€Âu«Œ)•òd9õ’ªxjó ìZ[ÑÇ •õ€Ê.ªïdLâi²Ó$4’Jq?<·ëõíF@f9{åè tKbn°ð¬ˆð.œ©sé©îjvÙÐ/ht4žIxeÃS ÍùvÿñŽBì<‚‘˜u5Æt&0¶ÏY X g¦ógà´ƒ4§v2/ #E($iFYTÁî*Y/³s~- B>ÈÍ%Œ>!Q°µ­ '¸ü[ñÄí‘Íê´¤V˜Æ+JÐRv–;ul‰Eщ.Ü%Éy7Od«•â±T/©buöq`„±¸/e‡½jr륆ÅÂHâaäÓ ÓéÊÈeQ¬^+²Y‘øOPLÒh“È5 oad^ówsLiƒ(àÌÖ¡øqKyºƒQ•'¡k; #¹s~߯±á{¶CœªßϨT87›G‰ *^vò¨i42øò0 „ cH'úˆÆdú‹åÇ£›S—!‰%‹âê,­ÄqR‘à6¯EŠ&ý/~ƃ»aÍ™B¹‹ö¾)b «WÛííöñv½ob8eº°9‡:bñ‰‡0³4îo£Ñű=M„±¹öMp°}W<¬`Œ"¤¦ê¡ÿRù•¡×²*?¥£/7± Š]$*±øFŒ@­YøÒØ/;fz4F1Á}¬.aä½x}líÛÚ©É¡w­í€›à«®qCÞ™z†WKßlg‰ÓºÆ#Ê0Ž…ñ[ýK¦qŸ¸åØ£zx(ˆ'yÆíR}ÙÀˆâÌæ‡€±š@X\[Ï&3Ƚí`D“édxÃb!Œ^EYˆBW E@)ªŸ)oÞÎ(¦-³qÉâ~ËVÖh–(ôj@I½÷1Iý£Ø~‡"õTÙ©‡od‘©kmÉÃMêr~G~Ótû«Dôøßùh endstream endobj 71 0 obj<>stream H‰ÔV{×NC9£h¦Óü,¨‚ûlM´âP^ ƒMçþÀyð€ >`2ÛÈ7Nõͨ¼9’Å~a?d ‚êà…QqÉ‘rºF)X­@QͤomÃV Ô€ú³ŠFŠÙ2ílEiýh¶ énIŸJg@JŠã0è`éË Ü{P:MOâJeáÓQûT‰§³™w_À÷gôy%\_€æ.߉œËcr£=ÓÔ€(IDc˜÷[rÍXôTï—&Š4·eŒ3×f¾–ÇHaÅ"M”å‰Å`(  QzN‚% '’Lˆö‡Wd–†5ùŠóÕ—Æôëñ^ Å"ÕsP„•\XÅu‹ºW~!ÚH>¶™¿Emó½£Pþ·81x4a e1Ô&âð$•…LËøóøÄ›)Häðb)êPM¢ «²àƒ‚)âÏ0§˜Bã9Á’ß-Yl&â' ³¹¬ø(ÄÉÛÆb0_G@Y©sÚ&Þ4ÄÓc•‹‡§‡ÿFd•««›¿ÛjSÄadc|ü ¨£.oc -)Tø~…¨Ëí©Ë-m,mBþ÷–þñc'Ü‹¾÷ÝX¡Ü2GÆ£ÓLÍÌ…ä“ÄS•²g”äƒúüî$ ´/7>Õ3)ºbâIÜÍ~­ï:‡'³NnÙeðìoÁŠü˜¤ëŸ©M3Ù›™´™S ú3yl>‰DøL„.@¢.ßÖÂ"11Ñ|jÌGͶK— )”eÐ@bŒSÑùóì¡£÷)ŽE€òIXZR軞ªÄ1´L4é÷ÓϨi‹³sš–åe¨Ú<ÛyÃ(¹¶GÛ;B«¯ ë²XÔ¶ÿåé’Ôýº7žÌx¿«+ nd˜ í›4Òèäîó¹ü¼¨É¹ÿ‚ÁˆK@ïäÎWÄáìb2e§ÐãyHßøž–VŽhâÄX¥×€jåÜ޶èKôàj^Ï\K»kÁa ww_¥^ZÎðŠ0zxHä\ën+~ãdÕéÙäï’ÂLÉl[ã_ûÃhz›æëÖåBa»qáÛa¶»rUû;Ì^Å9T‡_pÁÔÐjB«œô(¥ÊjoøGtDÙx“§îXOvÎbóÂõÆIÄ ÃþÓ5”÷­tTØ…§¡3Qè‚ O0~ !&S_R´&ŸûqQ$ ¾€.HàC´(Ú*h¸Zr‹à ¤Î²á™k1™SnÔ54††c1 ÉVm¨"ñb€—ƒ¤&8i(+a*àñ8,±å_L³ #ÜT£ï}ßz¹gõç¢v^Zò<Ç]þM¯ i)¤jDgç5Q‹ÇóíÔˆËR±DP®›—¡Bºòåcç +ƒ‘º:¥˜êÇvן,™,0Úì0qÌïðU+[¦4Ÿ_Ní®«mn#ØÏº^éÓïºÁ8.Sùö'­éU¤˜"t (£_±ÌMpdÛÛg)u9N2F8:¸h4×z®n2- ¡Ø éÅbð8|N¤qåð¸æHžSVûXÂáÑ,NÛ©½£æ>!íGÊ^‡REnLÓŒ2MƒÕòî¦ë€RB{‘ZW³èª‰µÙæå= Œ£¯ýÉotÛ{Õ&|kã]©RÓ"õ©ÇQqò&Ï¿ôm;?Ü ß!™,íB#M¯ÛÚØc/ÓâB>ùãÕ L6_ÿop†Ê³¹½ãÒ9Û\ùÚÚt0e°*q`›ÜŒqºØmµçá*å*Ë­˜~ËG=dü`•þjÈò•ñ^dùˆ3¤²/nÝöwrï$Tpû•mwå'”Vv‹Ñ©ÐŽþœœÿ7ˆ‘-¦µ€û5J=wœ¥¾Ìã¡\Û8>›¡±Œ=k¦Æ’åðÌ4„È2ÄX+ƒt²eÄ#gha*Žš')f¨‘Ça,Ù?RRJЍ‰o'D‹BÞghqZ>ïïû6ÿÌ羯ûyžû¾¯ßõ½®ëÔùú‘ÿ , @,Lö†8XÀ. D.Ntð¤ ÌÝ 'H "2(Oÿ¨`0çÒÁïH‚Iaá­”0Z8åãÎPßÛÙ÷Ž)(œ¿:&X½t ¥å ˜÷Á¤!Hû›‰V 50_ÓD\@‘Ešä’së$™ ¦ÊMÓñaë±ÎÓwXÃóÌ_ƒÔÔ[†9ýä¿÷ÃèvûðÛäe·h¿Ø_Êc™Ú•›¸„“›pb¦a³í›O+öô:hZ”_kOÍ$M…õŒem|$tk’ë¾þ²_G‚¿5‡Dv@+T:öfdÛí¢)¼®š‡ÅθVEmP0½ÀKf•üZâìªæ"U¾./nJ¡Ù´ê2rj¹ªo…°.~Ú©7t¦ʾ|¾`•v®rWËeÕ‚u9d¸’ÅÉ´ªOÍt¢Jê“‘²Köq»u$vBýMbÂç7žv”}Ý4/yl÷ÀuHh(A…0¡kÁûPÿV~…ÿˆ‘D®øÐ~ÊAÁJ Y¬7U%òYíW”+:Ö×äzí{3ܦß,NX (~z@†[…‚¸A¢ÁV•±ZVP@7èÅ ]@pðï[0³Ý6xÊêÀÜ™ûØØbVïˆâ5OžRïŠ/ŒcbâõöŠÖ韜sçò‡ŒSÖXó¯èܪ¼‡l{¦ÓðXéðÞ¾-"æ/×tÝm û5QÎÆ—rÒ\tBïH_Úztåè]ÿÔ˜˜^õC™ÇäÓÌÚñsÉ,–#÷œôÎO5U#_ŽvæSžf}’Íìl³Šõž¶¹íønHÞ%ëºj©2¡Ùî|Ä5—|÷z­Ôn~¨òù³6Ñ‘ËùsW\ÑÊÂvd£Ý3nÙNÎÍ\ѰeßT‹80:®žüs½ÑíQÜ+|¯ŸW \¢&9̲¤”‘½¦„Ù›%˜¡ü…¥ˆÁ°ü²„-Î ýð€!Þ Æú­ág¶;‚!Èùoÿ½0‚çeÿ±Œº]gr^A륮¹¨“ÅÞXýÂöòÛ,ñ&SúýŒòÇlG /Ÿ›¶®§Ú/H7”ìÆÝ›D6JcfܧÆ}»·eÕÞokÕÂw&N¦KÖLëÖ+ÃsD“T§KLXUó¢ªfQš—òjŸâsëäìö(j`ï´ÓrüŸ_Ä1´ç®z´¥Úˆv?ÒÞŠÞäèÞÎÊŠuH-²B¶,ˆ{D^¥zòˆ·ð¦@¿òX7QS‡ñ>³oMú_„'#³[HIUf¾÷þÎ…û'[¶Ì ÂGn -•QL¨%x#f‹®RE â|©‘ø& ?3ewëõ-˜IžA»¢ø€fiUòVm ±H`Ç"9@bnÂ7¹Ã¡Ÿý_ðòëÃA°U5°,Øæì I&Zº€ÈPý°ïYì¼"vS³‘4Jt=Ê@.‚h#E4|å‹H4ÄÎËçÆú'ŠÉƽ+,»9_hÚZ=üô5|Ö­¯0»ˆctþŒi§²ºN¶ýiåŠùt˜ûM¢5¯CÙ»d0—V-.L-Øo룜•™N|hµ™­ðÖ˜UVÕ•ÿÃc"pç_A./™ÇÐýÐw|¿»ì¼Ûõ"nÄ»ô"«ÂYbïw®²~›±7ÿ"*·+Y쯕NÓ¬~ǵÈÃ>k=S“Œc ɰ;ÜÄò|ÿ€·RdÉ­0ЫìÄǀ짜¹Š†ƒ®× 2é﯀ãĨK`P¸ûÏ#Qœ°Ü*ªöÓƒœ4Bò^U#Ä¿­fç…¿:£ÀT¾l¹Îðað`Š„„Cè`ºŽ„0 È&mqŒx€–HH„º8ƒà ú<àh&¨wllìâ¦3"hA‘þÁŒ/ËD )”šPK«i›÷Œ?ž­†Rƒ£¨=Œ_ú^½¬q'±|Aá‚Ïð1jFÉtþ@Põ¬ÒQ‡*INˆÔ4jë%·ÎhÏœSE&Ÿ›É W4‰‘LÖ§P²µVÝ^ý‹÷ ö˜ Î](¹Öë&ïƒñjyžø1î’àwx;ÎÙw5„VŠÝ—Œ–dNíî =›‹ ’Zêçýþ•ÌY߉ ÅN­ŠbV³,ö£}ÇËÛ–îÎŒ9ÄÛ¯¹Ü¼Åc%"™wÚnRI)TZOo4‹2‰ó)Ðü½B=òôå½Wk­w6Ò ½ããgLdîC¨I?ñ¹'e¯Úæy/(t+R¯·Å}o‰fÙÜÎaœ&Ìþ³§8&Ìœ2\Tv:œÚ"A•Ê{FRjÂ#££è—@z,-r7n% ·$S‰ ô0¤ð}œ ³dÀ~~’*’î!¤[`d 5 pg8€_Z­ëâŠq"YY“œHd/Œ‘h»™lk£'>ˆÏ~&)¶ƒ¶3õºyž8 «pæ ]{ Ë,úi õûÉ"„C jA „[724Ùþ•~eÙ'Ò‡\HU·B憦¿¡§ìÒ\ç*|Ù˜à˜×ÅM£OL{Î?ˆ58èQ)ýÛ Ÿ‘nÞý§ ßL­XÖÌá¢ï`}ýùæ×®“¢sµÛ Isbž…H¸èA-tÒ¹’îœ.fù.^ÉÉÁ:'ýì¾çû·ÓŒSCöE~m BF"ìzc·ÙÀWôú öÒ¿Y”"¨ ;šµj`¥ëÚ§{WuW›^3yïïü›ï*‹êºÂçÞûÞ€,a@E‰ox, Œ¨¸e\1Ö(Ôˆ­Jkì×bEùúÀ%~51ÚÖ…Jí§o\"&nŸý*]b4i£‰©V£¦Y4~Q[Syýß°|ئ}gÎÜsî9÷ܳÝûfšOd‡_m=Öʆïó]Ùü֦Ƚ}eË>˜˜™•üöÑxwöŠå¹í¿­8{ýP³×ùh‰¾íχNžpjÿ…󑣯­~éˆn‰¾0äü¥Y·{Uâ¦-«Ÿfþ3DªŽOcCÜ KYJÄÄQ¶‰d"y›œ‰ë£±säTÅ£$Î%‹$Ëx7K˜k¤^ÏÔéÓ¦“ƒèk.ßîø.ëtƒ½®íøÛ%S*¿Gýäv,7`‡Wi‘q³;~l܃̆ñ¾XÝ迟ÅÀ_t’ÆÿxºUµ|Ì7XèY Û¾YO1}¬ΣM”NïÐj¥Ùô#ÚÅRé>4\ð$ßg¨€ÆâFû´—–3qÐdØ>ËTšI¿¦Cô"3^§ ²R$-ÀýW›»éW¸ýŠi#§w¥0 £hJ¢!ä¦&:E÷X1k³qæÃÚJz—ÞãâÐrÒTüj Vþ-þe`ïÉ´÷é+ä§,’Ý‘JŒc£±Ùh7þ‹4ž£=t‚N~¸Ëdfg EÔËÆð8ƒ²á,h¢ ô¢ùÅö³ ì.áãx›˜.Ï5üBiØÏK>ÜÞ˨ŽVÑjZCÍ´Z`ý Ýf>D±x6”d™¬š-e[`çç©<ƒ?+†‰VqT\–FÉ/QbRðÈ¥‰ˆØø–Àò:䦞¿ŠÈŽÓ9Ø,eU¬†5³]ì;Ì¾à£øþ1¿/bEƒØ,öK…rùãKÛ:Þê¸kDeÆkÆ_Q©0 §Á40‘ŠPŒœ” Úoc§dçûôıŽ4ÚJÛi*ÓJûè0":K ?Ñ-úùˆdýÙÓl4Ë&°YlÓØËðä rô ûœ Á£y"`("-æn^Ë7ðm|×y‡H%☸&¾’H1’"”ž•ÖH/J¤‹òy‘¼FÞ*ï²$-þú‡u„uTuì︎(ãYÆóÆzã*²Ex™ ²‚U,ú'½iÇÔ¼9ÑT ˜Ae4—æS5NÌTʬ•ã*ú ¢lB^7ÑfÚB;i"}=ºŽÐ1Tÿ$jø&½M—ÑnÒGô Ý¥AjÄÂX82‰L$²äbϦ±26—-@ujÙ÷€f¶ýùÙÃZÙÖŽ,]d—ÙÇÌàïËãøžË'q'Ÿð𥼑¿À·óV~œÿ–_âWøUþ™D’-ªÄÏD `@gÄWâ±DR¨4FZ-Ý‘:d’mòD¹Y<#·ËïÈ‘¯[Ê,'-‚¼Á1¤#–}On‘ ꨖ٩Rœ@g]¦–Ël<…ݧ ÒEé ÏúS‘4ŽE‰ï°ÈÌ›8³WY¸\β œàS¢J^cI ´ Å¤âììàµËÎIƒXÛ-•ð9¼ŽçŠ*'FJSù%i„¸#`SD 'tÚ8ƒó˜ ½ˆJ¨–l"GvNvÖØQ™#G ÏfOOK:$%9)QM°)ƒŸŽ;0f@tÿ~}£"­O…‡…†ô ²ÈøÄ(Ý¥æû=Ù§KÉêäÉv“WË1QÞk§+˜ÊRGW|5åIM4«þCÓÑ©éèÑdVåzÆž®¸TE?çT•66Çí½Þ©zýN€ž ¥äÆfà ÅSíTtæS\z~]µæò9aÏ’§æU†ØÓÉ 2”ž¯.õ³üñ,@ð|WŽŸSp8¼Ò‹T§K/T¦ ºHr•/ÐKÜ—3ÎfóÚÓu–7_­ÐI¤G¤T(/°nÉÓƒÛ(5f8Ô¤øÓOkÍmVªð¥…-P”Ïõè¢Ük¨N½àù›1öô6Ö:Ó£÷Ékc4ÓsŒŠŒza½Óé5w‹Êó4öVš+¦F1YMkTônOo©ÍüözaÔž^\ê±ÁkÕÕ¬˜a”zÀ(‹É€“æœfgÀ•ªËœñ-Tô>ê$µZ[èC±b5JWÚÆ9Žרȥh3=ªMŸ§z˃üýH+]y¨Ð¡>)±§û­‘™ö?ÑE„…÷&*{d* nRðº;ÕÌôH-D‹èÊ|žxT'e™_•Y¤ÍÏ‚/CFk?ŸfÍ1 !'YUEû’ÐêÛOΔwÍX’¬_’IšíÒÓrwÓzZšžšjvJPJ ÏÆøÑöô:½X]jUôb¤ŒJí|˜î”þzprÏ'ÂÝ×U£³èÿ#®ì”ãø¸¿$'i%žär­).٧ᇛ==GQÓòU%_óiåmF}…ªXUÍ_\¬-uùºCj3N7ÅéŽfo5CRõÌÎlè}ó<"Ž{;)'@ÏP‹Ýs<ŠKóu®k&+À™#< ºÑá" ™†÷ÏK}|ïõð_Zº¦xvΣ×D<ÕJËŒ«Ò2ÚlÙK5–µ„{ñ½Ô샟‰Òûä‚þZð?ÅØb®…~%ð:ÐÔ€Ï7W·¬ƒn+p lä›vÌQ¬'·|‹Âävã ün,nÀ=šq<‹‚®†/>1‰¦ÀÆ`ð30ïZO ðo&øZð%—cÍ(9„Ö‚Ïl l> zŸTy7%É»Ò *‚ß÷°oÆ#‘ñôꮬð'WÚ ÿ‰fc>CšBó±.¯¥|žqZ:I™ Gþ›óòmêºâø¹ï·ã86i€ž!P©x,(âgñKø1:wÄBØüÐÄȪ„:°Á4âMJ4µ¢˜VÝÆ À–Š!@ÅPÚ†t#AÓJ$†H§’ m&Æ2„ŒQ4i¨Ù÷¼çXØþØ}ü}ïÞûî;÷ÜsÎuô±ƒ`Ü"ŒÏ6àÙäÓ´~œŽ¾Yx¶vÍ€Z "_¡õ˜óUå ~Y%ïÉ]·³ö7yÍÞšØþœMOáØûžÄ±Ïe 9dÛpØ®'!š-OǾ¦°/©Á¸oU®ˆ½°­ëš½)c ¢ç`óðee#Á}v.SOc}ÉÅ |=RÙOmò²ÑÑÞqÆÏ—¦"ÆŽ“)}~Íjk©‰íÁZÖ ö:xØH+`Çtè8å&•È›Á]¼ë‚ô2þ—ÈùŠýƒ¶…ˆ‹*ØüÀÀÂç1@¼~D1ÇhØÀûá½+¿xsçK…ˆßBú’㟈C¢“ïá™Eü<æ}>·mëAü=‰³GÌ2"o¿<œ}8J/‚0¸Ëq65`˜‡X-Áøq·;£'#˜7 ûæ;±ËëXI“±'£s¹óžÿ.˜âðÅÏs|ìå Ç.ÛêÍÍ1Ʊã©çÿ’à|àõr|yêäá z•í`pœyªŸF>Þ ©œ‹œ¬òHW¥4ã˜}ì©úÇÁÛì'ÞsÎSΕ!õìCÞrîxêäbÔÓ!ßäTLI- ßeÅåØÃ×èkÊO¡/Ñ$%É1½ÿúÆÒrøãCy ™yø¯AûùºÎ‰ë*Ø´w˜þ˜Ñ/‹Íê9êqü}™Þ’~G«\Ÿ‚.…Ïûìß};Ü_žzûò”¢Æqñ”÷Mj<Ó[9½ç*MåZÈõˆë!×$å÷bÈ÷«0×qhÎïOù˜ß‡û{¸r-åzæÅ£´{•[¿SÓ\øð âjð/ÜÏu_[Š3i%Î üpÖ6.p 5áþàC¯ö+aï7çxÙls.ß–ó8¯î«œølä1\ÿy<¯ƒmÓ.ÂߨùÆ\äãlZêäÛ¼qq–Ö*ŸÒé>jò»ˆ)´)\Ë_¦N=B¿ÜŠ6ŒÁºêqìßõ¨×¹š.Ï­¥ª†˜;øç~ žíBÌñœp¿Ÿ4m ÍRCð…÷.®¿ïºmN­ßDsxÍêjqö"W[xoó4ѸCI}βŒpcÃñÕYV×_Z-×Ej3f GgSÖƒ6ÏÀOåüèùJý5ÎöÏùˆjÙWÚaŒyžTsp}˜æ•¿œF½Ý½OÏ9gP)þ«Â™&źöP¾׸?Kóa“åpÜALbŒªàš×~г’óC¾‰ó1¤å£ÏÇ€]ˆ‰d1Ê*ÖBЙ˜÷jà£Üœ|Þq~`^y?|ŽøÍ{#|8ŽçÏcÆ8ã¹nò¥–’ÒŸÈòbx¸z1­¹õb1Ε~ðOãré"­Â¼gÀïÁ%pm{ݺ MP. ¡¼¥“vºx×OêpDÛÇÊ<Ù÷¿¶ÿ?Hýê1ÄN®oÈaÒo „=åZÒ`²AâûŒ^M!èhTmê3A ¸Œý™„öjä¨1`cî&økgE¥¥×)npIzÝ.PW5÷š‰þƒý×úå·š; úÀìošæ/ÅNüRMð·ˆÚÞkvŠ¢÷«ç˜áŠé+d4È€{@%Kt‘-ºìg¤Ÿ¬ê5“ ö¯½æ-&YO™wÚ ¶ßlÛÑkžKÌ3í|ŸgZõv½TŸ(à j?jï5»ASE‘¸Ni÷–‡ï Ø@«í|ŒßÌÏ4Ì1©b¶´ÊA$Aœ—À]`P_îJB_ˆ%Zâ*æºJqÐúÀu  µ&AHƒCÃFÝWíÁ¼c ½&u„:ÂV‡ÝïШ:T®¶ªíêxµFûBûÂû¬}ö¾ø>B á«Ánˆ7hTª ×X5v=¯‰7Æ|ákÀ­+hØÁ¾‚¾ fm³·IÖ{‡”Þ–Ù&¥wdvH÷:„ïz¿˜Ý³½o»”nÏ´KV»Ý.¥és™Dæœb*¦Z®”«Š)™²d’)$S˜rÈ –‹r9ì £"*[>+X%ªdÛg"!Ç}ñ`£Ü"ï–G7Ф/lM¾¦àn‘ö¥ƒEÆ— 柇|‡‚Ý"ëË/‰ŸýqOðšèóõóM=ä/×Ãþ¨nù«tÛŸÐãþF=éoÑ›ü»õ´ÿ žñŸÐù»õ¬ÿ’Þ㿦÷ùK‚ZP/×ÊuÅ»ˆjQ=¡%t#¨Õ°V£JTmTÕ¥E=¨TóM5(WèjªT;PãF5hQ›»Õtà š œPºÕlà’Ú¸¦öJ¨(\d¥‹Z¼W8°—„;ÅõSK¦A.»ò™+¿uå¢+¿qåW®¬ve•+µ®Ô¸RíÊ+®T¹2ΕRWJ\mo€>wÀmp | ÎnpœíàmÐZÁwÀ° lA¬õ ÖyÏŸÝ×]p¥×•OìÑлà3p¼³dÚß_¦S¬µm=sDÏ`¯~¤g¾¥g^Ó3ôÌ:=³RŸhL0ÂÆ8ãY£Ä(6FEF¡2 Œ|#Ï0 ÍP É@މì3rLŠ-¯±lÏŠ­g./ëy¯¬Êªe•"[£ØŠÊâì¬H U`Yvf$–Õãõµ'…x³.+ý SЊÚN1†ï[K³… jÏ ÍlÝUÊ:غ«®ŽFEžþ]‰X|ûDý³êæçºùmm±åhÊpSæs=ã4‹SqúalÝɱ4ôè˜ø¿|Ä¢oð"ãµ' ª¬[°ÚÕ÷%LN–ޝ«jšïØ?w|ñÎÒ.…ÄòGê²ùe•Ùà®)S*¸ EŽ» ÐÌuïœ;¾´KÉu…Ð<¤ÔÖTªy+>©TJ¤šSÍkSk›Ñ„·n4§¶6§`¡û5d0ß6oD¶FR”•mʆýF2.[˜Õmꔾ™k˜P†)'*þH&&} ¬&}µè”"Q~€¨{ä3Ò$¢ò/n†nR”¿§ZãGü‹íj nâ:£÷îjµ’,Y+iWoVZ­¬‡m=,ùl/¶Áv ØaŒIeC ǵ±‰#ÀÃË¡™ÆM˜â!N‡< ”àÁe"hCxdÚ<)!í3%‚mÜR$zW†ÒétfçÛ½w_ß=ßùÎÙå4(@´œûvüü}ÿBÿSçÑ3V¡§íE_M&PJÀïg“Œ4GK\.PˆS-sDMQ€‘nöºD⿾R*’P*i³ûècÔ}¤[i\ Çéó4NO"ó QßÇRÕ©L5•ˆ§#´&jÒi´i#êt¤$X·Y(+Z9Lew)]V)Ã9ŒÁb•?ƒ2 ŸCXb@jÃ1èË+Š€¼$e$U@«~D‰ááaÒ3´”d!Šž+ ‡ÊË4¥®"9tTꇼCʘ ­¯‚âØÅ¯Âñ/ÿ~äèµk³ßŒg衊p(ø<< ÛöÛ\˜7qò½ñQâÒå×¶‡‹?é{/Ñì4H~SX”9|àxϦ ¾8óNæ¢Çsè'oµ"E pƒ_ œGfÊå–|mT#sF-@« †ê ŠCzûõ~ ”$!!hAŸA¯Õôë!¥·ë?Õãz:53Ÿ©¦xñ4•IÅ«sÀeªpélV–ÇH©ËábI{ ò 6bN p¸3öJ C“RžÓдræ¿q ?Æ¥ûâ.”lzûÙkàH¦j±·´±~xåÜÑE¯Y_E\ºyêTçÎ,Y¬367ó¬dÔçɬû`ÇÞÚÂRäÖ»¤$ï_?Œ ¾ ^pý­¯P6(³`i'bÖnb­r­u3‘°¾N\1\1^´ÞpSe2c·) +',ÝfóYŒ&¨hœ``7&ÎKºqü,F ¾+Ðw†q¢X¥V#c–ð.šç].•gçñ-|¿‰?Äÿ‰Ÿæoóx…ð5è„„çIÖ¥âÕNA.ÆÙÃŒ¼ïÄE+ÉiY+Ä“ð¤ äž´+µýÚsZ‰6‰EÊü¬â)ॼvïMï/áÄžDé´X“Ô†8*IMj´†Рº Ä5†Èî|QþVê‚P·fÒJϤå —WXd³ëh™\V„Z¨cØhNÜCy!™ÛÛuì$ì@ ž«"¢ö0ˆÀŠ°ŽŸ­ÍB‹14àn’ׄõàa!Ý.·«¬´<Òã+š¤µO|÷Æ/ŽÛÇï^z:ûÝ_¾::ÐØXì?³ðÀô?Û·ÞûCüÑ6œùê‡Ôzê\å}ïö_ÎÞÛÿ6/ýöÄÖ†ž¦ÒÊÆµg>ºW‹Ø½Uxþ1ðƒ¸*,ZgßdǤåQµZ~޽ÊN³¸šc1 Ùu=N²¼GþèëÇqy€Roù„UTdÈÓê]ï}àÅmÞ1ïUï´WâMbõ‚QÙjYié·ì°ŒXnZîXH`зœÆ:'¢‚ýMnœÃ‚ä¸p®”X²EÙ©Ü¡”t*Ç”˜r‹ƒJêû 9©A!=u§:×4qT!Q}¥(QÐeÚœ"•á@AÊ;\î|„/BÐY ʃƒDPDMÉM"XÑ@ì¢pJÅszv çlj¯ó#kF^…mpÎPG[Ï8§2ª›>õîòåz=ïÎ~™}¦eimâøÏæ6ÿ$¾ºn˪—oÿÕ¢Ÿ;-fµÝcóEê˺ÞjlZ—õvã[ªû·Mìõ¶)ü4B,8,ø;¬’ÉŠ„ä]…žÌ(úÓ²öP$ѯÈ#e¦x³_?•AJeI¸MP«˜¸­‚j•M…©ÖÛD|D=FËŸ™•㚌ဤ†ÊÄ5³’\lfóhL¢£µ4&Å]i#œ£fº€$v3mÝÙ|kÄ”DxdÌ…ˆ¨09½ˆP…ã ¬T‹ÈhÐܬâ:¤øÉÌ*¢9¶ëÂÆù/goÍ>ÈLî¹â3]ðU§go|ݯ៯/ïš¶fSú,M/îüé‚’ª¾×O‹NוÌÿU DÁ'Be{¨;t0tQw¹âãùÒ¹ü\çÜyBÅü¡a>9ªÕTྻ½1a³¹Âµ=v¦•ÁZ˜ic’˜J(ˆäƒˆì¶r%¶½º'B¶ô¸ÔK{"h(ľ‰€j’˜Qp†kååæ`aoós/´ƒA!(Cð|ðN‰ŠA˜Š¬Šˆ ±%0¢QD„7'3i„xDäd&"^% ˆÃ8{6G4·È;ÑÂòa|ÈÀp…x’”rŽ\{Wøá"ºt<¢b© wÌÞ0+¸fõ²P­Ð2ÃSd_öQ{ï Ëe³Åîžy»cgöþçë–voéZýäêhìú±…ÏÒ>8¸bųϱÉCUKF~û~y\#ø J²¾ª¶PÛ®µFSÐÍ0ÄÖÞMK[žX\õ´Ñ_ t:»b{’ãÎĶ}»·=·çþÐÚÆzw醅ކ‘Ã%(´7@°¸  M~&µµ)‡¥IøàUIµú6F¡›ÊI>&Çjä-rLÇñü!fJ9Ì'ÌX«yÄŒ™'ÑŸ]¤pJü¨<)Ö|=“F#ÔÉ¡ÇýŠüË+õÕ×úýuõŸÃAÊÀ?“¹ÕUìj7êý¾Ú:Ÿ¯>s-ïþ_¹|º¹¹È‹-™A¶B(ÿ(ÊŸå«k£‡KÛH9‡dSôPPa­ªÔ`b‚ÌÃgr©‰E†ÿ“‰¥RßÒ˜œ]™o;ü>KAù2âÆ'­jôÞbd0d°7‹o®@2‰ŸpCðì14aAjaeø¿Ù¯úئ®+~î{ÏÏ~qüòüùlÇÄ/Ÿì@HB %Nœf á#¥!éhMp“˜|Øyq’µ„•­bt›“: ›ºª¬+mºv@þ ÒVMLÚʤiìN¶¬]§F T`ª{ç=hÖ­“š¦)Ï>ïžsîÇ»çÜ{çÜâü÷Ym ¾DØ¡¬¸ØdÊërhBÜ^ Ž ^ŸgtÏ/#Ê3¶IýEªXÅy¡äLÉ«%tÉ,qàŠ”¡Îàž/¼­Þã^Ú«Q.¤äá…ya]¼¸¨¼•]£˜$¨?4LA/Lv§–sjíãDÇ9ì]þ8î^¥F/hn› ®Œf“@ãÒ†ÆZ(µas©MÜŒ©nz£e©“”`·T‡~ ‘j3W÷ÃðÁ­þª†”)а~åyøD ª>%Ô¯­¨¨œ~ÉüØØ¾}ͧºR*|--^/yöpÝî7¿™zAWPáÚÍèÝõ*ûé‹àƒ?Ë{íãöí?±ÿÜ~Õþžý–]§qXo9~ã`ªlM6ª$¨±Pn½Ou¹[OôçÉA¿q^£-rwHÆ/vòq~Š?ÆŸæ¯ñi^›Ç»ù¿çøKü»¼ÎÍþ<µ'˜³W—Ð]Ò½72ƒ¬eî¡|ŠÊŸô-:ÚZF ì\U¦,ÀjáÖ°^O©:™ØúøCþ5ÕBž3AOmùÆñÅ‹á@ùƪôKÆÔÓ³sáíuMµ…+œš¼òÐ蛃—‹JZZJÔ®Æ:eïcäÚCÏâž žõW·ä~®øѲ“¹Ó¥¿ËåtzÒKÆÉíÕtIaá=gÑë¹Õ¿¾°„öq›¸îî;ÜóÜkÜϸ«ÜÜß8=ËÙ¸#Üï9³jZ{‰À«¹À•Àõ€S³@0QR•œ€âqd˜ÀÇþ59þœ#–i e±O‰ïŠÔ±SŒ‹Sâ1Ò¢Öâidñ<ù0h³å÷›¬¬Ikcé~/Ϋ°„a ìç‰)h>-ž/‰ocÛk"›'ñWˆaÖ !á™ó\ñÐnO‡òÌR6àÑ ¦™À±¥º@à‰ÄùVþ:Ï/ð_®Š{ùC¼Ž¿@Æwk8,cPP/KLÔÌG]° FìÚš0ò*—I8Å,卵ˆ3aÀ….¸“Ø{ü”²Î˜¸|"y1‹ê%IMé×7??68êÛzúäÐÃ_83Ù×°ÊZ==Ô9°ní±¬Û¹û§ÓGÇ›+-$ò£§;›½uî‚‚†dco[ÿ¶¦ÔÌ7ž ‡6yVŠ.sÁS»Ÿ|ù‰62Š+_‘¾A]Óxð6ºNè ±Y,L‚fsÁ $C«1|Ì%= Cg(Š™¥º€…\bzý¸ÎS‘vÒª ˜Ì‚9h>cž3_1³fs¾S5{~A¹Íc@ï,†k3×"5–V ­xÕQB`uE&3WVUW‘šFHýzKMã^]ˆ=u0yøûñíOêËO,¾¸ýуÏξ1ÕK6™·ÄÑ‚ éÌ+ˆ EðÛ ï«Ô4žÐ cwꬌ~Wî”Á–)S‡9§°£h Xæ}{ŽÅÂ[­ZNúÇ|žŠŽí$žøÆ2Y¨ØRtµº®¸þàb™½®„ëë Š×]:ÁuÜEq‚‹Ô¸.w X¸µ'¼íT‘ÿ²s“k…²È+8ò)švvpæSN¦ܽ‹º6Qò6æ&£µ7‰ÍzuIÆGÊq÷T–f@V£æ¿˜c(Øë©$_y<ñ݇»HsmÕ¦Ô[–¶³Sí¾‚0}qñ[ò“o|t–WÒMÆ¿§+kBº Ý=»Ú.“U. Õ™gûÿ‘oßQÇï#ßiþ²”Ø2¤{9CÜÀ'è½ é—Rî÷øçòð~(œY¦eZ¦eZ¦eZ¦eZ&…€ÊcZሉ…ð”.‘*ª–(0?ƒÏÃØ °AaW{Çcâ»èa ß6Ð/,4@+< ˆB/Ä`†`4ÆúOëåt:ý§Oÿ²^þWýç’ ÓwûÏ"‘l?%’-—³<‹üÕ,¯Å™ýYYY†ÃncdK–'à¢æ²<<õN–§Qÿ×,w/šÍò,òEY^ ¿ 77ÆzcÉØd´Gê‰$#Rw<1!Çzû’ÒÊÐ*imMͺ5øª–Úú¢Ò¶øP<9‘ˆJ¡¸œˆË‘d,>ä—ê$µÇˆ$GG¢òX´Ç/…¢CÉQy⬑"RRŽôD#r¿ß÷oG’ÆûbÝ}Ò`dBêŠâP½±‘dTÆyņ¤î¨œŒ`¹TŽôĺ•ö#þÖÛC ;ì·>Kú¯LOBLÝ=I¤I\¯"(Gë†8$`dµUj%X !X…åZ¨Áß:X“åªQ׆m¢XnÃ~CHIì›P5!”dä•wDýšÒÂ5õ¸s°¼÷UŠbÅrL•_#Š}’0ŠÚ‰Â"ÔÄÔ¶ÊL“ê¸=ØbKúQ‡}÷1' ƱG mïC^mË.µ‡œ=k#Ø:ªJ=ê,†T_)Åoy¿:O¥m:ÚñGЖV„íøýhßR»`§úQô‰bÇgµ¼ßºÿ?ªhD‚P àA4 6!$í¦n«1EA"RQ‘øð—éμڛ¯S¡é… ¯•+å…[c»S¯,~»Í=‡"—íÿ`[ò Ÿ endstream endobj 72 0 obj<> endobj 1 0 obj<> endobj 2 0 obj<>/ColorSpace<>/Font<>/ProcSet[/PDF/Text/ImageC]/ExtGState<>>> endobj 3 0 obj<>stream H‰¼VÛnÛF}×WÌ#U˜›½rɶ(Ð8i`ÃRKmQØy ©•D‡â*$e5ýŒ:ÜÙ]Š’å\Z ¨ hi‰³sæœÃÙy?bPˆ‚Î8$ŒC¬3F2 ýõèÙi›@Ñ%”ŠŒóOÜ´>öjÂ`ÑŽÀ‹& ÓÄí0ÇÝÝå¡.‚gøçóìÓÌG?ñϧ£gÓ©Äé#2ˆ3  4'Za ®2…éê–HÒD¸U2–º•ª4íN ÷±E|<½½œ†°ÓÉ—ª™œ¾Æ sDpœ(Ø£p ×o)ÌWiB0C¢ˆN`5J5h¡ FV£Éè=Æ2J‰–BR±ðð1BbÝøÒ)¡x‹¡Vq¶RðÂbý”$šªÌÁ@ø\â ÏR*=æaŒTÂIæ'«D*ÑŽ—;p—s—J¢œ´’pOꀗ#(vE£XŽ&¼s?oG×Ñ數f'ðÆ4sÛŒcM’h•×…Á¯;/»ü¶Çа¨ K9føH÷aüvzîð޵¢¡Â‚C¤èŽ„$ÆAÅ2s`Å’;y`l ip"N·.M·´³œž˜*R)GM”€s§ˆÆ=C²Á ßSšÊBô(aR1—_jdÅcB ƒ¦2¦/<’=$¸:µõ½i:Èi© Ø9TvQyÕŽcŽbgÑM4F¢³hzõËK° üôãÅäåÍ<]bF8|—Áɵ–õ 7éÊzÛeY,a—Më¶ï+g,€gÉÕº‡¸wü»ñQ©Hŧ ùìí)ºòÆÀ3ÿYÛÎçŠ1Cš$ì P½O6+[„Zt8~ ‹·€ àœ:͈82£ÇŽêè´W§o,€^UG–XÇ÷yµ1ŽV‡Á¹Ì…13ÇвlL»´Õ n"|ÆÁóŒ3ì%»:¼ë£Â6©q[CeÚCóúp§ØãêbωØ qÿÏ‹ð&ŠÎêÎ&3y[V`f ;33¸/ÛM^}Íé‚ã{-œþÅ×ê¿z ööQë™WijdðÞ´_5‚H¨k[Ÿ5¿$2hxa:„ßæ-Òט5*gê.hz½)Ízi£wNàüôÕ˜øžx">6·TI,“äfü9ù³Aþ¯æ;ÀL„öñðÚ”‹å­m>†n¡KÎêá…š¶Ã/¡¨¨-We•7€¦Ù·Gà‡ŽÎTŸfƒ;Îç¦A:ʼCvŠ*o[Ó~üðü©óÅÆ¸4YäØA§Ã®—Îv2D w"ÿ¿Æn#_e߀¯àM^¼ËV›ª+ìjýki¶ž5ÇÙv»%M¼n¬ëoÄ6 Ô±¯m˜2˜ðµ…OLÎÜQ)”;æ?q`f{çuô œÛe W$p¹ dâi‡ù{B}N줒güÐz¨‡zKDg«ueVN(ì`“eîdû«W\¹vD˜2U›¼Ìïçã!oʵ..=NÎäà“ÐMÍlƒ}ì{è0ä´Þ¬\hF”àB÷°µ½5;œݬÛ'°^“pzHAR­Tð¨–ûÊÓ!yæw`1PÖðÜÔwùª¬Ë¨¹¦½®£çéþ ä&Q^Ï`’7ïò&|Ñn3kwlïg!†S!Ožà÷. Œ]™‡æÞTvíØo–K$½§œ œhéüø ‹—(œîiÇY©ð„Íp×ð<Õì‘ Gõ¦¾Á3çue·éüTáKŠ%Îr§¿'lª=œÐ‘/óniVØûp‰k‚ØQp`¾À×AõU¥|79‰‡¢àµíL_ÚÚ.š|½ì%Q’¦OðÇœ˜¦ÄÂïmE@êÐ:qüþ[€#´Ñ endstream endobj 4 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<>/ColorSpace<>/Font<>/ProcSet[/PDF/Text/ImageC]/ExtGState<>>> endobj 7 0 obj<>stream H‰ÜW[o[Ç~ç¯Ø§â007{?{Š¢uŒ¢$ °ò@R¤E•™¤¬ø¥"ýÁýfgwÏ!%9’ׂuv4;;³3ß\öÃH‹µ)ÑvFmĤí´ìZqXŽ~»ÑׯA,ŽBI¥lgÌ3‹ãÛþ~¥Åûã(ü¨ Úè„N§Ú¢HÂtø—ôôjV£ªüߦ£¯§S‘é ˜tB ßÙzâ뢘nfÙƒ¥¯Ó:ÒWù³Âé‚~=Ž;žÞÞLYìõÕçnsõú;½…wÂH/…Vâ[ñîg%nØW1Hh^¶AlG±­m%$7£«ÑÈj¥dë¬SZLl2÷áÛ(–]àÿØzñÍ÷W2´ÊwdÌ7 ÓEå’9:™1òÁÈ.)Š}°R Zr éfßÅKßE'=…ÖI“\‡8à‡4¡K#Xä&¬ˆý8z×ü´^nn^‰ï—‡Õþ0ž´24ÛÙn±ÄŸûÕú4›¯Ç/u³áÏz¬±åôiüóô-9ùÃËh¢ÁX\Äï3úi#ÃáœÏx?dû“_&„ÇÃ;ØPF8ƒ«P\´ƒm®Ðä%ci«Ra}']Úšiø7’++ µgüNF7à·–,ïùm@Üü¨=?ZÙÙ­b{vôlÇŸmO;â¯åàpçZÙÙÎI;dãöfÀdÝ€MþNÊ.uæÒ’ÉÊØFìL~ÑÒŒTbŸÑ“RÞ¥x†W£v6J¤k/¨¥[¦ÏagÁغNª÷L{*3›žô”åv¹A¦¥=ŸQ:à'”öüVeÜ0íŒÏ¨,´–C¶ŽÔ…vô…ÖÒ ù*fÜYM¦¿nic¦+¿WÏüLÿ?È3ØÝÛ zbž8 p»²Ò·HHãÂÔzRu°ÊÉŽ´g*2ȘBdbÏÓù_Y‘´"žÃT¹p¦|*B] zPեʕ©Ê,‚Ì,~ú²$‹÷Ù%Û :å½ B¸gYM{‡ÖžÍzNçª>“9ç •S¾9ã3Y¾9ß ™Ó=“Ü“*—áT¹Ü‘ ×¹0<Ù¡¾ ô:Û ­r6 LvÖR}¬LÓÉ$ܦ‡LCKåêŽKp!=wM¾fu}éÇÜj1s3ù…Ê2‚¢æyåŒÌ ÇUŽ€G®ÂÁðr—¢éhæË¤·„9k"¹±-ad1*d/RŽ v91ØÊŠt‘áu9Ž)ÖÄlÂмÅè¶Œa‘5Ô™Ü'Þ5s5Ænm¤iæº_Zbrèš¹-Ó°FÎQýÑÆÑm¡+ žò#ea¦{~î…DáÖ©'³ëÐùe…‹§³5({ÁôüL÷üÚõ2¿v½³Ûôür»äo<‰²gþ6”¨d’ç9ù]à>ºYï7³Oâñv ߬w7ëŽ<‚^âÃðkž³Ç¥c–äÙ}’`÷ÂÀý~ïö§tÈô+VÛöà€îÓz·`þïôò‡vð›_fÛûÍòÏ¢§Í¹)=<§‡sžS“ÚÄy—†¿—ÖåªRÚdo ¥´â:7WäÉê®Õa¿s#æ§äÞ¹îä»ëÉÅ9>ƒˆÌíÓ &:¹ÕÆø¼¿i½Ä nø ¬ÛVÝï`Å-ê5!ó8Û2<±3‰]Ú­«¬ãÄýõÀ\­–‡åîÄ¿ŸNËÃ.§®nfcLwÍQ _Öyé­ þ—ŸÓé9Š^¦­ã¹:wž—«;ÝË¡;Ó—ž¶xm¤çV>4”ÔLÛòúìÓ:WݨüMå£é%þ*WÝ— ¢õ†zæôáߪ»X¡ik7¬™Óäh´€fGÇæÀ¥ñIeP] ·ÓSn¦â~¿ÞŽÃR0¨"ºãÍû„TA®›#àçŠX®!YÉÝÎN¥ú=_°t_uËûÃò¸,ÆÀO®„³…€? ÎGëÆ?áÑJõÿ:%4›õü0;|º®ðz<ÈÑÖ]$iZZö8dÖc(lvpµmPŽÿ=ߤ¿ÌÒ_vÿZž^ƒ‹ýÇ%TŒs(j[L ¶ô¦õ¦Wåûèrt¾ßO“ãÃá=ΩŠÓùIVìä0Åì&µ›šâv9C]z/æ›YVcÌ‘í;«¼Æôú Õ ÿ-Nÿ˜äDÛ¶ƒò¡+Žx””hoGLr7³Ã —Ž,òÄ]¯0O6 š«ë±ä‚Žúð_´¯~± endstream endobj 8 0 obj<> endobj 9 0 obj<>/ColorSpace<>/Font<>/ProcSet[/PDF/Text/ImageC]/ExtGState<>>> endobj 10 0 obj<>stream H‰ÜWKǾϯè#ÐŒûý‚" AŒØ‰³‚@ðär- äR"©(úÎÎWÕÝ3=Wºä¢,©©®÷³ßwJìD'EHZx¥E’R§m÷ñÔ}÷òìÅæ,ä ¥IZßx9opìO÷Jüzî¼ÀOz¢'àN?:"‰B'ü±œIÌc÷óHÿÇe÷ÝriA²|E}R¸ ‡à@ˆ§byhÔ2>zCO«T¤§t1Ë ýûØ-ìÝòm÷j™É^ÞÉšû—?èhðVèÁ‰BIñ£xý‹ÙWÑàݼ8t1ˆ`ÂÊ}wß½­’rÖX©DoX}PXØ À…8H¼‚t+þ|pâû#ì—ƒÒ%Rêk‹¢´¬Žb5:çõX°·ì¼”p>KHvö]¼ö]´ƒ£ÐÚA³ëüÈA=`‘›ðFèÝëÅ?wÛýà ñ·íéñxºëÃà‡ÕÓf‹O§ããî²Zïîz7¨Å>?vw G.Ÿî~Yþ@N~ÿ|6µÙ`L"Í-Ì€UÖiR“ÓáK¸Ÿ‹þì„ >0ž¼£¢¦€“¹GÙ„œ¨0ùG Ò²#•÷ƒÛ‡ÄG œL>:Â8Œx'ˆï$"[|¢Ä˜ðp¹lñ*æ4©°F6ë¯ý༗qP~Â{ oø†>¥œ‚#ìfô®Ÿña.?d‹—ämàƒ%ÂÉ?.¡ñ“~_àÿú’J:žñ3¸7†¨‘“†sò¾›rЪ† ì.ž' vTŒ6 /ÐÉÂÿ,¾‚vˆ-¶j_àœ­>gëˆ/Ùz˜`QÃÞù8ØïÑ ZzžÐâb‹wj ÚÂZN¸Ç7¶)OjgpÄNÂ3ºÀß45Å>ûøÐ½A•{´2ªµ«tÁ @š¢CEâˆN+4KÔ)qÐ ¤r­` ÜWÐ(zŒXãrÖU­©ÁZ+½€Åâ éA)ÚGlÄGÏŽØBZÅWße CöÉarô³ºŠK䫱ØQ)Þ¬uð z”\ RéÊ…^¡Rç¬e^ÁR勼‚<‘&,¤›çшMvF›äŒ3v=!£ž0!4êº`²Éô)§a]Î¥ ª:”1F+‘StŒ¥Ä®ÑɸQÙŒ,à7G™“F!ýhk *Q Lw 8^µÎ`¿%ɼ1ˆC„Rô©¼KjÝ›.CÔ‰ñÈ$6 X‹ » l:k)Ô‡E6ŽT¨ +¨2/¦ÊJÌÜtoÆ¥ æ4ÉÌÐþYA雑VѬèÒ— ¶@Ù ÅVäýüBÑ£gío# ÐÐÂMò´^цŒe‹T½=¼^¬å]¯Œ2C\¬½bÀ«æ¯pÕbmêò«P¯š®/»a†Ç¸ÆkL È*ð„¯C¡âëX¨øºÛTü¸y%Ç :ƒnÒôOø:ä*~r3k&|µŽýPñlão­M7TŒ"‘!‘ƒ_/|„5zŠZ¨;ô^ Ï’c%zEÊŸ°­-üµƒk®8’œ!.ˆ¾Â^ _¢Š®Î>¯åÝÆ'N{¾#A·ÅŠnH7¥¡î÷Ó'2ÛÍ>ÈÆe¥¡YO4Ñ7Ÿ^-›»˜VTi5†¶á¾ ùÒSVÉç°Ž7Œg°“ftckÔ{NÂ3Ø+5=‚)‹(TZ>d8‡<.5åfiT0yÆÿ&aÑÿ6Y[®Þ¶\Ç«`s ä*öØøîVÎ %((†( 掜¼â-/wE6r€Ù£§côzI=T?2]ñ–53é&i+…¯ª8%ép¢‰w¨RSž¬U‰RQØ¥1˜ŽnmÌ5SÝDUmn#»Ö£[+2¾5¤øÿ&iVŒM(žÅ=wÜ¢hyå3 «)•º$Ø(Ly"13Ì Y•ŽŒÆi1îóC¢ÕPú¨hr%ÖÔ+…†cÆ¡²Pgƒ O~äÒs YÒ«Á„YéU}{·åûu®ò« ~TÚèqˆ?lúì…¼)Å[B+b? êcTŠû6pxÖRÊSóôâC¢l4Šûœ“‰´ôùŒ¶·Ø¼©ÎŸ&äu–ð:Dª9OE[fžtÜö–çbÂPƒë Ç–‚À¢Ô¸±%Ì£ªÇ D4›•ÇeRéy<{ÉcvñÛ_¶—ËötþIó ’S5»ôaw~·_}Ú>B#} ¥Ž›ÙøÜ°Ï|¢‡–1¦‘A>bøÈi»¹¬ž~ÝoóÑ™•švYìºh9hàš,VnM|ΡFq²»ÈQºahÖ°ØI¢gþšæ$B›Cãƒt”›ÒÙD,Ü™³¼-ó>|Ø_6Çû¹Œ4Êà+JŸÑYÑ2µ¥ÿuäý^Êhÿ0WöpAh`rëaÙ&® ÒC ¶V…¼8ýýøñ,.oVq~³:mÅg¤¦4ªÖ!(â§¿.xÉa“FW®2Œ›eÂe÷´¹ˆ+ã¾ä¡¾¨‰§µhpÄö`kcldÝ^ý{ux·ßþNTå”n\Ïáu9¼‘5TMŸõ89š íB,Ú•œS“ôÆÕ|H_+±;‹§ãEŒ>z<bõôIƒ­8âßI”e„ (MÅYp± ìöÛm÷çb½Ý¬>œ·7L‚C5ùþhà^êÆ4zÎÌD£ÝÜ J“]ɳømÅ©w—7b-¡ÿƒX›üäüh´è ?ЬA+Í‘ýªä±\‰^ÏDëÏÄ}G'ÕU¿8\#nDZ;ž`¥X¸Ð‰ëMýƒÞtŽP¦Ô¥‰ýW€ïnWÁ endstream endobj 11 0 obj<> endobj 12 0 obj<>/ColorSpace<>/Font<>/ProcSet[/PDF/Text/ImageC]/ExtGState<>>> endobj 13 0 obj<>stream H‰ÜWÛnG}Ÿ¯èG*;}¿<-°J°ˆáÙˆ@y ¨‘Í@mm%¿‘ÝÞS}™îa¤äÙkfל®®kWU$Û³A0sR±µ’GÏNãð{¾ºžÛMLp!tTê™Å´Ã¶ÝHövßpÌG'Üãtú£-‚8TÄ¿$§‰¹þ=óÿs3|µÙ°lîÁÙ:2Á¬WÜ[0â×¶9tjiœ¦_#e _aC(7;úïiX٫ͯÃ7›Ìv}óWÖÜ\¦WÐàW¦¸eOL ö{ó‹`wÙWÁqHp–{ÇCðÌkÏÁù0Ü À+…àÞh#$[ë¤>8 ìa}àK°î`Å·˾>Â~Á6’P_,T Â$udRc°Nñ˜;ÁÖi.™už\B²³ïÂ¥ï‚á–Bk¸J®CðGZ“ѹ +‚Ÿ†7«Ÿ÷ãÃÝ—ì‡ñt<]­=w«Ãöq7âÓéx¿?oo÷WkËåê!ÿì¯$¶œ¿úeóŠ4PU[‘PùM‘Ž»¤Fg±‰´™Ó))f[ü6û4qöz<ŸÇÓÄJ4?¼œ¶}Úé¸ ÌèÀ½¥¹Q9ï2ov˜v5'³£Rð=܈0H¯y4Èò@= Ò )gš!&“¶Ú@‰auä±JHÁÆ™Dö¸¶2gÓLÃɪÇ#¡Ã‘¢?†~ ÷Чƒ½á·ƒ´N¸ƒ2®cvÐÕw‡;˜â{vmé2t8¢Ð)ï”ç±?_YÊaàÐV4×ÐM.äŒ6åšÉÏ”7gõŽüw¸ ×šî¸‰<%æÍÐ’MÊÝÆ& ]úL.sMF^8ܦ…¦““z•¶”­^´/dÊ͆æÜlpÎ͆[Åehxª2î¤Xð£5ôÇ;¡ÂqºE ¯†M.ô¦IJªBÏx'<á…þ?à/I}¸ ×ZP À]fOt´ÁJºñ‡:V!™Õeƒò¬SCËdtÞÃLÚ\í*sÜ ‰º)MC£Ë*“³Ý•ÔÜ¥“I˜å¢·ÏZTpfMàì°Ï‹3G¡8å°$Kð”áî"vÖÓŸ/¾ÂÅ1Ï^|´Ñ9¹õÚW²ÜúJæK_¨rç+U®|!ë¯djF Ù¨BæVTQ‡®¯CÚס¹/Jù†¨ÒÑ ‰j »S¥Í× ’¥]Rx ÅŒ #„Ú»AÕ"”ÁYÝêsã,i“'ÄyMýñÇœªå +,EŽô±H I˜¡ì©„"y»¡’( ¬2 T:-­vƒI—»&õ¸ÌQÖå°J&A•)©ÐtÛ ïêÜ`0ÄØÖB>ü ®´“eŒÉ¤á…®x­}.dEÂfÙ½Y¾VÖÈK²™¦Æ™˜ÏɨÕÞ-ÇorP ¹oV·âj-µDÝXÝJZReYݪöU§ñS¯ šÂŠ™™'‹29'À%Áí 9£µ%´6…ŠÖ§ uD(¨ë1×#è Öu`¦g¼5¸Œ··°¡áÕ¦äi<¬ŠO;O+™ãlq¯$§ÆìTà>…˜ª•¼Š.ÔŠ*œWšZ¹K§ÎyâhË…½OO£+nÏåæ—Õ3OÖ@rŠ<´Zméñ‚±\KE¿nŸ`´²²ÿ4?b0PÇo<·'@«ùÙ2g˜RtK—¤¿V©û’2éšrLH`ø£úòø¡1YÛ8agã”Æ.Ï]¢ÖPyáàùMÕ½§àW湤ܩ:'25:¼ ƒÐQ£ÐcðTƒ?¨ó\…©çspãâ LAÃÒª™u¡w/'=ú´Kgáæ¤L‘›É¢X OÑ9¢¶˜¢’¡2—έ|Ï‚U¥…J*óSãUì¬qË0<Ï›µK†${HòÍÁ…$;äœf2=ö<í@è\$ …+år'K½ŒÞzùí‚Jv2Ô«È/ ]Éf.”¶*ÂÍÎä¹àé§ä7@Ü®"üÓ%x=cÝoÁ¬Ð.Éß+þöÀ"3Uµž —,ýÀBÚž‘2œlÄ`’D*G¢Q¹õ\Ý…¦+¿¦¥´ló4¬~?|ܟƉާ‘íŽo÷çý§‘•Û,¹Œ!]ðÄî‰]$Æ÷§ãnœ¦ýãÛ´wÒ)qóÙ‡JMÞõöñ3ÛÞݱó‘mÙ´?¼Ùyüíü‚HW@m ÎÛ[0<íÏïŽÏìíiûþÝ~7e Ã+ìSÚËz„”Mëëã#íD5 Q{†ž&…›e™YYM»ß¬¾`Wmï›í´ø´‹ÞIá¬JªØIo£ÛQvv4 É_°×p›Þow°÷Ýö‘ýg3ý÷ìÒ{ý!r©Ïê&yëKVô¹wGÒèyÇÙfõ§ýôqû޼”õLõÃéØ{ÓªÑzÕëñ|OÓBsÑJ’W›©”ú†*†|ýÓ"Õ]öŠ¡ò[*½ ×\ ª Xx­JY{…ô'õ!£XdÔ`0ÓåkYW¶þ\zn Ó¶²ÎÛfmÇR$ðØáQ&#TûJÄ¥ÈjÁ…À›á HY°Ü endstream endobj 14 0 obj<> endobj 15 0 obj<>/ColorSpace<>/Font<>/ProcSet[/PDF/Text/ImageC]/ExtGState<>>> endobj 16 0 obj<>stream H‰äWÛnG}çWôãp¡÷ý¬ص½›HXŒÀÎMdzyqH ‚¿Ãùà=Õ·iR¶±@òf ÒLMuw®:]UýûL°5›qæ‚dVHÖ» †àØaœ½b»Ù“gGËVGÆÎUò3/džýçZ°»ãÌ2ürËœ·´Â-V§_Âi† ø‰v&3·³_êü-fO )‹[̬Œ3ãäà &â©=[lXÊz«è©…ðôäÆûlp±¢³ÎÎïg/iÚ³ë¯íæúÙO˜ô¼gr0ì Î~d¯ãì&ùÊÛ¬œeÛ™wÌ)7`æfv=ûsçƒÓJsÁzác†Æ¾!çŽWL]aßo {¾Çþù`7`¾Ôx‘Ásáˆcf¬B4l5 «ÁŒuä²|ç/}çõ`(´zÑuˆ~ÉA=mÁ"7áÔ³×ݯëqssÅ~·ûüwƒí¶ËÝjħÃþv}Z¾]Ï{3ˆn“ë¹ÀÓÇùo‹ÈÉ¿™M-´Ä_@`%Sø‹Dh¾úéë/sôB#kyD)l |óƒƒC¤7äŠ$’C8âdã8-á|3r]•Cò]‘½C=âfl£ŸÔAL:«] K•õp¦æ´Ô¤e¸lôJ”I/AôjÕrð™ƒ×ÓÎdpC(bUWpIÅoxvä ÅoÛ¼÷Úáy‰w=«D“gMÆÓk(JRj$œ"ŸqMê0 …CA#‹ˆ“B¦«ìë½–)…TÙ ^¶ú€L×è rA£6 G»¼ ”*&½´µª·èÚåÒ’oæ$ Ýê‰ËÒ"±M;S–2`‹rZ8i³ü ÎÍŒIŽß^È‘jžIC$¸ š:cLŠ€°H$¶ÈgTQ ¥£Û*+NP6“ ²¶jGgcRk1(ßè ‹I<ÊM£CÆô­iÜÎu–ö9éáÙη!¦î*ZÚ ¼‡ªm³3l¸5Ë“>AËÊÄÑoef¦I ÖöBî‘é>P%.3™0 `å屿UδôBÍAN61‰’§LQD•ø_DCå©j û³h<%“ª5:eç"ŠX1³„Ä‚YDê¥P6¡†Ø›åI_-g}I€ßüüÿ¨í…œK ‹i)û9-¥AE(ÔCe•tˆym5«²£:™&ê`Ik¦wçi@QÚD”¥ºd”«Á8±‚i€®fï rªÏ ò$äΑ§ªd¨«¯ÈÓä·21¦­²h*öªLðʼ,ÕU³œmúÚ>TðIXÍŽÓaE¿ $‚.9Øò´÷E<;©H›–œÍS2.¢Ž©:I5Ëg±"¦Q¤œ ²X²Sówñ4W«†–ÈRQV«Q™¥ogfŒ_âö¶.;ÍÜÕk\Õì£,n©‹LÅuêÙªºÈYkkU¹¨Óy¬Ú$fåŠ++ËS§g¦p &]Õª @ut¦ÚÆÓõ7Mkâ3]7osðÍt÷w/æ½ Dïèp(|{ŽoÚãðtú4K-®›=º{ÑmiˆëÆ#F(,ï;ù•Ô«N|aD¹º*´Õˆ&w)y&1ßÍ6´ÔV¹ª‘€ã¡¨“\ÕŽÇn²h£X”µ›ÌÚÚMž™ÔXŒgÅçM$5h(¨ò8Ñp¿¸Å îÝ™y¯pq˜ n%|Ì뛑õÛ¼¾«̹·&Þ!VQQ£JR r1¶pG&îp†É¤íó“³Ä5‡ò¥U‘9„º[ÎïñÚK”-ïÏó'yw\íÀ0k5-Aº·‡çO8À\Y'9®Cž´š&)rÖô Nnm´ËÞЈ‹8(­‰;nˆ§:I2²æ‚üq;31ÉZ›:tU(ž|T†@‘ýâÜ©ÃYB€L$l´H±B\@q’V–;³õy¥ñ&h­£ûk‚ˆ|I B€ge® ¡™Í_?û Ý©¢3b‘9‚¬8“+ÙE42$¯3CÌ:³Hªh®Q!+2¨søOHeö:6—3§y­ñÖEêYdI\-`¢˜Ñf4ÈêåbÿÅfÖF³Uhƒ ~ŽÕ Úd¡ãÐõÄôœ &1a‹@ìÁ!y_7©²5Å5ÝylMdkJsÂç®t«Èk&¹&ät4ã}zp†¦1¢›¼uÜà( Ü LbÀ ƒ2‚ì)ý£™@æïž½ÛoÆãi<ì7ìútó‘Ñ BR5)ÂܧP¦^ ÉùàaöwνþGšW’ œn™Õ§ÇL(§R¼ap\â)Hå”ÊGP†Ý¬ooÇø;±Óa\ž¶x;dB6Т LrµÑ8Æ86U¹)ÕR¨Îg¨¹fŠ%àKãqZoGöÑbÛ;¶ß­Æ'7Ë—Pz|‰˜Ó¦þok¦X“ј$cǧ"Ú:=¬“±?më|cÙ–Ž¶°3[šEé/±Ö#Ùœ)úˆ+F´=¹ëž¢'@Qc’íOïÆCT"ÌTÙ¾Â@‰£ì~êg€ÿ G+E¹ö7â‡Ð}8ìoîWã Ã6Ø1g*m„Ú°AräÄä?¸þ0bði½ß]±åqÚ~·I¼Zü-9.LÇ"N«'§ãxZïV'v{ØoÙr³Iþ;^žÝ¯&¼EŠ®VúQtÿšÍ]òÖ¿÷ö)ÑûršdG{ÿ”høÇ{Ù™Ãx¨ÔõÓr:-·½‡{áŽPgJŸ6ã ™,YèEßÎ1Kw÷Ÿ U•¥*-ƒ°ßìÓ"¯¢Ð˜r„x¹z7°ÊM]¹ JÚ»FT` ¾óìSz_öƒp¾,,`ë] \k"ºñPÒæéÔ¡СH޲{ÅÉt?¹­Òçuw=Ž‘hŸ¶÷›Ój¿ýP#ña¹úïòn$ /"5yK7Q£áâÏ# °ïö  nÁÀ+öñ$*>ân áRMNxìíÅþízy¼bÏû°xÙ½Üo±Ò}€ÚȽ̴º°<ŽÉÔ«ýæv½»WÑ*šW7Fe)“Q¢Ý¯ûãxwß}GÝ~õîíx¸co:Bx3¯‘ö9¹¡éV¶]YÚæþôãý¼GWÑmNëùmLÏ´P¯Qò]:nŧ•Ñ_âÅ3DfyX÷»cLi[‚·®”MÉp!#ˆocz²E~9žŽüµÈìηy»ÆHÄ£Ö½é®ÿy;ß!áœîOã›yn°ÿ'ÀO"xò endstream endobj 17 0 obj<> endobj 18 0 obj<>/ColorSpace<>/Font<>/ProcSet[/PDF/Text/ImageC]/ExtGState<>>> endobj 19 0 obj<>stream H‰¬VQoÛ6~ׯ¸GˆX’¢H lé6¬ÀŠ-0md‰N˜È’KÉóü3¶_¼;J¶oM†u`R¶îî»ï¾;êS$ÀAÄÁä´›\°Ü€·Ñ¯ÐF¯®{ UœqžäRþæ¯ð±nÜõ‘¼¸“iò°FïtÑ#œ,dŽŸçfýr²ÿ¶ˆ^…B“b9Ä9pHd&EC\UÅf+Ñ™NhUBd´ò4˦€EE_ûha–ÅCô]1š]ß>—Ííõ[4zƒ@²ö 8üï?r¨G®2Í0‚N™Ñ°‰2&1 -›è6ú„¶‚sfT¢¸€8 ðÑBaÞx“šŒqÜ¢i…Yü¸Iáu‡ùs¦ Os‚ð¥ÂÌ3®`D©–,µÂÀ©N˜€T¢„bÜe—ÜeŠ¥TZÅd ë€SÒX,¢ wô÷>z¿xçlS_ÁÏÖ¯;¿Œ Ó‹MÙVòÝÚ åÊ-㔉E3.n)ð‘á°üX¼!òˆ@b®(¨qA…!RT‡f:À˜e¬rz3VB^–î¾ïvm]®kÁí€û~pUÙÀu·Ùî×Þcç§Ø)q ÖD„ ’ (øWœgêëÑä— • B¡ r‚%‰IÁDšcI xˆ„n±ßï™·¾{°ÕÀ:wá¹üâÉ%® •“Óÿ×XT9qçzî-l›r@î6Э¡ºï\e‘JÂ+–q1÷‘œ˜àÄCÙ‚k+oËž˜nw›•õä‰<““øèÓ‘<‘OðŒUllY“±ý}kýУ?ègu¬.ë(ä¬ADé(")92M¨ãž¨ùH É&§)"ÆäÆ”ò£ØÅÈ‘ oïV»ÁÖ°-«ÇòÎöPwû¶éʺ\5È•ï6ðÇõÍ7oÿ$|('D$fp4jÛ;'D!ÐçÜ?,$vã gÓ‡å‹ ¦ú"Á‘–8¥"¦lœ÷Dã4©°…0GÌëÿ-¡)¢Nèå à?×e(p”é©Ë^nñ/Ô»> endobj 21 0 obj<>/ColorSpace<>/Font<>/ProcSet[/PDF/Text/ImageC]/ExtGState<>>> endobj 22 0 obj<>stream H‰ÜW]o\Ç }¿¿bí¢»™ï;÷ÕvQ4hƒ´ZA”µ”ÊÝ•I›ŸsHÎÜ»ª»± xï1‡yÈáü8wë&ïæ%º¢ÛÍKØ/³{¸žþáî¦/^?Vwxt~ï}ZbüÀÇãËþxÜ÷Suøë«›[¥…Xç_.ñÔˆ þÈ>ë67Ó_‡þ«Ëé‹ËË •Ëh,n·8ïÊ÷s"~ss—§[©¶šø›Chüõ¥5ÛðòÀÞO/ÚËËwÓ.UíõůæâõWPú¼sq_Ü{¼û‹ûæ[ïÞj¬ZÝc‡Zösu§©ÍnNóšÇébúºÁûýœSöÁí’¸Œs”¹í=>¡zÀ)þt*îÍ=Îï÷uöe¡p?f|Ä¥ù,îqc*5îÙ¸fl\jÚWêÌpo]{»–÷…©Íû(¡Cð—ÚñÐHÄ/ŠßOß¼øçíõñíïÝ××7÷/wó¾¾8]Ý®ñ_÷7·OWßݾܕ}xqÔŸÛ—Kž~~ùíå—ô v"Î BéOÁŽº¯âÆæÄyáœ8‡¸ñ,wÏü¢ž~:>îO?üýöúýË]D,ã‹®ÿ¾úþÚÝÞ¹¿9qyþH~ò‹IT—êb^ö…!Åw¨m¿¸€h͈¤O}Hýë0…˜j4ß×ãˬ` @J8h¬ËÓ"9£!ûÄ*ÝÂ0v6•ÕŸÃô¸)ŸÂ,–æI“¡„u4±G‹/a% °KD• ÊV¯#µ‰µŠkD‘ÁYÕ¬ecÖÀaÒ- nµÎ-Þüî7é¶´!ä0îôõÑc\É-çQ©,tXšaÿyiIzsõtÅ&´ínÏê#$P¡ÊÏÏ+U¬5ZSÃIl~}uûpýÖ½FE\=Ü>Þß9î÷!—êva–;½%Ô}¹øétºzøÙzâG:{ð‘.Á3v'¤T]fùHÀÿ%ž{6 ‚D³ɨĘ0ëÊt¶26A’PXÅ/´vŒ¼ÓƒÀÒ 0KäKTÑŒ\Bœ¹ž•ÛS¦‰CU]hz®…aÏXزmX²Ä›,½˜ù{çn†)â$1 ›ÄEôq­](‹ž%9ÎèÃÕåh]ð<ÅÒñF›»|´É¹Ñ_l±YÝ"–ÊeÂÔÎÅaúÏ×OO×[û—Ø,Gˆ(“úñ#8ÔÚ°_Î쿺ÿÏÇû§O¤Ø 6 °õçw¼4YÔf@¨ Ó¨ì ªÍ¥D:ÈÚ –"RÚêAc, 82e?GÁ½ðÑmÎ:ÖŠ‡‡i,*Âß¾h õ4¤w^ÔÉ~<ö1Ä3T9_–»"à¦%ÔôrµÂ4î.D¥K0M4Š„y 6ÑhôŽ˜DÁnè&% * Œ ¸j,‰T]éY|äTÜÕW‰O»IŠ\|¢P#Õd]ÌW¸IœãVªK׃hhÌuñç$‡ç³–™Å†¸ÈIgéèàµilЧÉÒ^õ+ûKÍ‹ÁÌ#btëBÞY<8ÈRŽWY‚»‘f];gAÚhJ`l0Çò¢> †}bž™>u!Á¬"9³`µ97tab’Î΢ѩ̅¹ÄÓyúÍdä‹)ò ÄQ‚…–è³xÁè|°|a^®žèµ ›ŸîO·÷w,`vµÕBS‘Åw›ò¿ÿîÝõáÉ©–Ü@m7PÐ%7îp¼zì­'qÖùôö™Ú±{´Ï_išfù“Û¦™þ?Ú&Ÿò8˜ 3Ì`&à”“’Lº…ý±€Áx˜ÌÃ:jyž+ÿ=L„àX“vPPÁ5©~Cµ5¦ˆëò]áûBN >:38(™EÌ¥~Ñ…:ÄqÔ¬-™“x4éÚ¨­’'(yØû˜Ý?ÈÍ 6â>E÷bû]ȹ‚^çÐbT;G¬D±Îzu¥TWÈè5²°J“ÌÒ ˜ayáL1Ë´\"IÁµòt H WàÄš—8)S{f„¸Ö°ôz¢’{Ûé¨yq!WÝFà±Ãªèñƒ)Ix‡ÊP3¸¯ü÷3f‡‰¶2"ù&,L$T`j)H£¤Hp¶ç:ŹS‚„¥®œHYf]–%ŠÝ‚©9N$4‰Ô)‘Jfšº#eÖœ˜“U¦)c/a±P"‘Óq¥DÂëG&sr"ã¹vN$=¯”Hxý‘剄˜ËJáDjÉŒ*)R›é–‘"-žY3R¤%[M()ÒÒX´F o²VHý,w^‡HÞÊ‚lE1*Œ†+,‘å/Ç0zGR^<ÜÞ}â y±F ÿ ý+vp$êU,Y×j mƒøÄ1€qµE×Õ‚LtbQ?º—Ü‹¤À0QÍÝFGb~´ÛÕÔ«÷¼¼Ìž£%k)“YÔÉqHBé³ÈbÐï…vH‚·HÚêÀ¼…‡žÜºjÑëM¬[ 0lÇT˜ý NÑ E:¶zß#`Z#©VŽÁ„#©T™xo¦ŒžÚJ†Œ]ñQp©Í#++"¡ h.»šæ¹í”è›vV‡Á"‡%CºÉ²¿©™og'aXÖ³ÈÁ’’׸‘kêÂã®ô0k!fª“ÄŽ§ÐNniÚ IâÀÌðГ䣯“±§QÅÎ×W{›Å3tÈk`º]QÜÛžd–A;ü ŒEfp¦ËgH¾š«Ñ-ÇFñ¶ú¨¸.–ºErÚ .Ù Íb}§l»¢|´*0lb66Èênॺ¡)¾mÎÐ+ÈôFUÎÌÕ*È„£‚jöúp¸±¹öâõWZ|Jî½›2öâë]Z"\ë  1]sá¼ð‘SfyÓœV¼ð.;Üd[åM.°|‘_‡Ø>lÕ—ÊÛs#—Ÿ!¯˜ñÒ*®¾ží^g¹»V9†ž°Ù½â²žëV÷[ëÜܪóQ·òÈ k#—9ò&Ï·Mpð^xÈ7î‰Üðg o,Â0—D~†wÖP4Ñ1+÷ŠpgÕ´U:<'_ƸǪ—à XÈ“£‚ÙfJÝg‹>(5M¢¼ì’™ÇQ ë%g“TÔo]’Òj­bÀK]À©m¨ oË[“Ý“åÆoÏùÌðoö¹áÏA_‚oÁ==û(fßøœp__ ᑇ«Èð9/‚ò³®—¥Ws¡ck:S²tw\YÆù"÷G‡#Gm¨7òº5ZQéÐdCQe#p¿=M„„ãt™>Ä"Ê›ç<‰×צðº&O>P×|õàÿ†[uwÜ |`«ñ­Ì;î•>°ûÀäÃ*ÖKhë%4ä•ÉF^KÛoÅE^qÐÐ1ž~«ž³“ÖÍ*ç½½ÕÇ›ôlûÔGdT ¯ÑCW.uÍŸÉW÷Unø3ÐW¢•e¶çáÆ­Cí„ieðؽò¬©¹ÉZiž9LYé:’ùã_ÇèþnèERd„¥-H‹ëRжëÙw·iP7ìZâËÖO‚m ³±FRÅÇÿ’wŒaºô›k ‰õ³!4Üåç;­;wùÅôêrÚA©d´ 7y>8Ð^žlô|<Ü¡øý/„W±rà ÝýíÁ-2ðÞ.]ë-×!î]‡þÿôIH`§Îå2ÄðéIB.-ýúÝ]‡Í!ôHÃFü‰@÷Ã6·Y?~­ÝûÚÉVH>¡ÄRV*üC%è¸ÂVQ ¶Š¢°½~ ¶,£°ÑÌà268¢ ôsƒu\a«’[•<\¤Áv1±±ëÍ®;k_§cá L|â8-x0ÏC§yF´ä`ËÙq_6P¼³eõ+òÒ£Ž |…%+!rîV?ÖHHûä%DÄéðòp×_|Nèƒq½¾µ©Ïk0r7Eø–ÄÌqÖd¶&“ãÒ¦pªäòè¹AB‚Gç”$TKüÿ މ«HÌýFÄ=“,X_Ÿ&¹4Á3³øJòtx´'5\‘—Pò*,C©=ª£ó(z£%³Ö Nàz{<Ý%)`¢“s‘[à~p`¥SÑý1¬_€»–ÆBâzj,$½Ô5ªr‚㱤9p_T¬¬’]v *tŽÉÉ {ì2þà‚sÉ¢šÜ¢7QVf›ª¹äÊÏŽ*Ã<‚Â3[‘ô@ú ¿étº$]Wއ~å#ÐÃpÃ,O¢ arHmJb8ÃãÉ Ç.àÀ‹ü)­?~‰yM{^ÛÓn‰ËË.6žoëžmhgÞ4pþ[ÁÝ endstream endobj 23 0 obj<> endobj 24 0 obj<>/ColorSpace<>/Font<>/ProcSet[/PDF/Text/ImageC]/ExtGState<>>> endobj 25 0 obj<>stream H‰Ì”ÍnÛ0 Çï~ ›¡V%Yö0ìÐ+¶¡[Œ Cуk+:ÛJm§Yžc{àQrÒ¦EÑÃÐÃb ’m‘üñOÒ· qPŒC¬3F2 ‰¾Cõ Ê(¡4É8fÓ—xìtÊàºàEèTy3ôî/„z žá/Äy3‹¾ÜÛæÑAž 4Égh‘Aœ©9Ñ q)äÍV¢R•øU0–ú•Ê4ÝÌKÿ·Šö²I~ä£ÙÑô¥l¦GŸÑè n€ +`>ÁÅ%…jÔ*U#(I´‚&J5èD´¬£it‹¶ŒR¢E"(ƒ8 øh!0o¼‘:%·hZb Çó§Di*3ø\à†g)‡ŒH*N²X ,UBH¥½$>ö¨]úT»TéK+ÒaðòÅ>i,–— wþõ*ºØûaM]íùéf®›Äš¨½¦hKƒ:7³Cqe'±$l¯;axdXO.ó3OÀ·sņì0$ÅîPDŒŒEæ`Æ‚ñ2¾%£:Tqºlš¢[¿ø ‹¢üY\øÝ,ë¡tÍâ›5«?¾ÌHÝH¯X<.X™­—ÅG)¶òŽÒT¼­·ü„ É<–Ð(Ö”%: xŒ0™a ?|,¹'Mi¾rpgûeQC ­éÁÍÚv¦Ï‹Ïz×öà‘)ÄŒpšð{‡Ì; * "Þcgêb°w óÎôsWW¨Å“œ_”usì`•†h¯*A¼£Á¶0y'Eoë5T¦t °Ñæ_Ð8[¯Šþ@Α4Ã`:^t½m\kݲ߇:<¯ŠSy¾~ü¡~"øÛ`•+¨¶CëüúÝ.±#àº+s[öÿI1ý¼mú9{¤È¡ûµ¨Ýà%95­é°†³e[Öµ€‹çÅð>Íñ¢sÕ²´í5ÜáÞ:L‡±ÃÜt€~®Ü0‡Þù›ÑZnýøñ@?W2~ßÿ 0Z]¢½ endstream endobj 26 0 obj<> endobj 27 0 obj<> endobj 28 0 obj<>stream ÿØÿîAdobed€ÿÛ„     $$''$$53335;;;;;;;;;;  %% ## ((%%((22022;;;;;;;;;;ÿÀ^¶"ÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?õT’I%)$’IJI$’SSªõ:_O¿:ÿ¡CwGwÑæJäþ¡u¾§Õz§QveÅõ¹­±µOµ„º!ì xªßã;©“f/Lc½­ûš’}¬‘÷•·õ £»§tQu¢/Í>«††Á#ËT:·8ãåLä=yt€zT’Iš’I$”¤’I%)$’IJI$’R’I$”¤’I%)$’IL}Jÿx}á<ˆžÞ+ÄF=ùJÌjOée›w·sàçÕn­˜þÕúu–ºÌsƒuÕ5ÄŽhƒ´žBÛÓä8cbwUb«Bú¨Ã pûÓ’’`y¯ ÇÆÉºŒŒŠÝìÄk_o¸ƒp`Ûó+¤Æê™™¿Qz•6:Ó‰m"·¸Ë¶½Í;IäÄ%jŸ!ÃU’ýQ‰Ón'Ó}Jÿx}áIxçDúµÕzåvÛ‚êÃhpkýG–™"t†•ê}[3öoDÈÊs¶ºŠNÓϾ6·þ’@°çåÆ9FŸ‰¢*«³æ_Xí³­}k¾¼`,u–·0Ïg>+Ô±kÇé}:Œ{,muÐÆÖc€}'Bó¿ñuU·ýa²÷5¶l©Ï±î瑾d­?ØøŸ]~±õsÕËìéÝ"Á…‡ŠÇ¹m›m;cÝ<$;²óÒ£ #lqt×µíak„µÀÈ ÷B̬j¬mVÚÆXÿ Ç8Ó@N«˜¦~¢ýHÈõž-û»ì²gp²×}®ã÷›0³±¿Å®Vèã3­Yu½{5žµ™…xÜÖ5ŸGk&"i=êKÌzÙ]{ê§Wú½Ö®´u«î~ËXòןM¶ ÷;óƒ\Ò<Ä-ñGŒÖýXû{¬²Ëó,wªlyp“œÆí9IOn’ó±Ð1kÿÝ7 ·äŠ:‹lͽž«¿ÛoƒeƒEÐŒþŸ^GÕ{óM–×v×Òjy`%ïegts¡IO^’óΡþ/ÖgæeeäÓ…ƒŒÚúmUÛî{j«w©kµüùÒ'Õo©Ù][ê¾/^ÁÍÉý­Uåí¥Öþ†ÁU¿GÝôtÊJ}y3œ œ@I'@^cÖ:3?ÆMÃmù"Ž¢Û3ogªèƒußË‹o­îúÓõ¨ýXõ__IéÔŒŽ¨ÚÝ´ÛeŸÍR\5ÛJJ{ r1ò]E¬µ Á,ppŸ’"ó¬=!Ÿâûªà}`èEõt»íýG ¹ÎdgÝ'€bx#ÍëÎHú¯õÇ¥õü+Âëòj/.a`-c¶!ÌrJ}Y1 I€5$®cëæ7Tú£“˜Ë¬oÙivn5”¼°ÚÉlÇ- ¬lÜ6ÛOÕ¯©”ä\Ì<úß“žýäÚú˜ß[ÓßÌ9äü’SÝ77 Õ:æäTja‡ØÒÐO‹¦K–Ãÿ'¨b×Yý‰Ô©¤[Šl|úÔÚmÐó·F÷I%<.M8lä\H­–]¸'ÜѧīŸUâÞ¬à=¬é·‡ n—ƒOQúÅ^ å«ò×–tKއ_èÙ=¦t_«}N¬ öïÆ´ÙcŽçºèÜäÐŽc4aP׋ ˆð«|ë¥É=kþ"ŸüþÅo¥ÿâ?­ÿÆãÕ*+þIë_ñÿçö+}/ÿýoþ7þ©ù?Ký®?û”_W~´gô0ú1+©íɱ¥æÀâGæéµÁuŸã3¨:®€Çö§—Ø']µÁxn(_âº߇ž^Ð蹑 ÍX\rÔþ¶œPâêëux¬Ú$‰ð'sŠ=HŒù¿–½«”¥ûÚ û«ü]`âÓІ]boÉ{½gž}„µ­øÊæuüϨ^z‹²éuÝ#¬¼dKy×—×:ÒH-^—Óz~?MÁ§ET·hžIîãæN¨=o¡tλ‚ü¥H¶§±ßžÇØîÄ'9Ù§Ç’Sýâjûtxÿñ‘ÔðúŸÕîö;…¸O>ˆsxu`:f| h»ð ÐáÙXÙ]?êu´¼›кù­®ýÖ†k÷¼íØ÷3"Šï¬Ë-c^Â58n 1¾sC7øÁúÙKèî鯹Í=Å•ûñ[?â›ÿ8¿ñ·çÇ,ÌzþÓõßë~s'ÓÆÀÄò SO?õµ§þ)¿ñ‹ÿwþ|rJjuÏÿ+=ÿ [ÿSµÿÆ?þ"úŸõkÿϵ¬~¼àÏñ±õ}Î0-÷$^#ñ[ãÿ}Hwsjx“mz”ìuoù3ÿ [ÿPåÍÿŠoüDâÿÆÝÿŸºN­ÿ#fÿák깿ñMÿˆœ_øÛ¿óã’SS®ùYèøRßúœ„Oñ}wÚºÿÖ¼§´ œ+ŸäÖlkGà‡×?ü¬ôü)oýNBø¿Ù~µýjé–9ö¯´4øµÎþL$§Oühc‹þ¤u $ÕéXß-¶²OÜJçíÁgÖ3õw&'7¡ÞÝÇ]¯ÛNÇüœ%t?ã:ïKêOPû­ô«hæK­fƒäªbaý‡ë/Õ|26œ~•unmm@þ))Æè^ìñq×z.d·;¢cäcXÃÎͯÙþlü”þ»Ž¥Òiú¹õ·§WêKjÈÝcct~i—6|Õñ‰M¿W:þWQ¡§ì?X°®ÆÉhzÛ6ÏÆv»ï^›Óªªî‹MÌm•¿¶½Ž´‚Á ‚’ž{üdô|Ÿªù}~šÞçà† œ)£_cÅlפ»é¹%Ϊ]3übŠÊç¤u|O^Ü9;G¥`¸3ú¾¥#äa$”“ ý[ë¸ÿYñòïò¼v^÷ºÃwAçÍwÝn›r:>m´¾Ûh±Œ`临€ä¦l¼Ä²N3  ªð|‚¯ª¿ZÚÇÕ^ÍeÀ -Á§pÝîìWDϪ=Kê~f(¯Öê–Wc©¬ƒ´1͆΀$•Þ¤•2ÏžÉ*Ò"¤%§ZîñßQð³zLê6õ:Ž… :%Ík5VÔ\Gu/¬·u @#uÄ}„†éåªì>»ç}êæQ¾ð(ož`èyÒU_ñ{‚ü^‡êÙH©Ù//?MÌ4»Aá.Áº}œÙˆYH€¯-^¡yî/Ö¬W­Íèù3:Ó{úeì—±ì²Ç={õÐnì|—¡$‹EãúÔ«mú›™Òz£›ûCª¾Ì¼«¡™öÿ˜ZOAúÍõ› táõw¨t<¬¾£ˆ 87RÝÔÚÑ£7ÙÀk{ÃÁz2I)ã°z/Sè_TúŽÇ=G®uBûó*©ÀM·…­qÒ+Ÿ½`}WÎúùõs¡×Òjú´üƒSžæÜëC~›‹µhž'Åz‚I)òþ¥Ñ~¸ßÓ:Ö—Ò÷õì ˲,Á:‘CÜ6Õ[d 3èƒÁ+IK­}wËÂÃwJ»¥ô¬K™•ŸnLƒcé;›E`µ²7sü;÷É$§'ëFF}ñÓð_Ôo¼}Ü@±®i|»÷W?þ,kë½;¦‰Õ:]˜lÇßk2Þæò÷Î̓ƒ¯Ší’IO}cgÖaõû­atK²±ºef†–½ \×ËšOÑSðFúÑÒº×FúÍG×>‡Šì±c]S š½Í€Ù :ÇJïÒIO lê^sðCú}ý; àZ2¯9mÙfEÍ£­¬ýÆžJ?Y³®·ëÎ^7H·' §c»%¯hi7?]Gø®É$”óŸ_¾¯ž¿õg'¦oˤzø€rl¯]£úÍ–¬Ž§ÔzßÕΧÓú“:~NN·§U™U ¹ÕYY. tû×t’Jx,Lž±fnwלΓxQ^'Mé‘9—ZßZÒØu$Å%Þ¤’”’I$¥$’I)äþ¸ÔÞ©›‰ÑP7Þ êÈ’VÒ÷FÒ6ŽÆWOCqñꡤ¹µ1¬êNÑV}µçe36úâÚ]úXòæ½£V–ìt®£ºÕI—$ý0€Ú7Þ*I$’bRI$’”’I$¥$’I)I$’JRI$’”’I$¥$’I)I$’JRI$’”£cK˜æ$DÌsæ”- 5òñ1ÏnRPjtÌGP×:Ç9î 1®x ;%£cx‰>e^Q­®k×»{€‚øOŒ$“"I$©$’I I$’R’I$”¤’I%)$’IJI$’R’I$”¤’I%)$’IOÿÙ endstream endobj 29 0 obj<> endobj 30 0 obj<>/DW 1000/Type/Font>> endobj 31 0 obj<> endobj 32 0 obj<>stream H‰ÜW PSW>y‰¼LЭKõEy„pÃK©†ðZH0 ‘ÚVMÂ…Dó"÷"*-‚VK[Å'µUQ¬âc;[ÇŽ(НЬUWêªõQ­øÙs¡ Úº;³3»³³÷Ι{ÿÿ|ÿ¾sþÿÏ€A °Àø$5ž21»ëÒ@è¥T‡GHÿ¸½ŸC:­!Ÿ‚_„×Öà'.Ûžcù¦3~'Ãì°§å˜ ³k®ÌM °ág ]ÖÑ…ÙB‘?cDŠÁÞR†Óóo-Ô,o÷Éíê¶¼Ž£‘!»OÝw{'êîµÊ§nƒZÿúÇ)j¾r¿|WuÃÂÀës3½È³¾Íõé>œy?x[æÔ*vw˜Þ;³Ô·)wÙiÿÌðÓÇ„œ1_-ÛZŸ6ñÚ­xÿíÚUóüÖšË&¦¬˜Q¿)æt—[ØÉúØ5LJê—R‚…xÅy¯}Ÿóæ‰k%OŠN×vÖvqº–'äÔ†]ø@@T<-d|8eµ¾É{sIç¾Â}ǵ«fºêå‡7|Þ]Ìñ?ïc—q6Ïqò‰PvûÁ´ï]–®ñ2g>åE¯hªXwm_2W·ôàU~îê-ÙúÄ„åËü#VúW,zœåúƽQþ6£Ãô_{¯n—Ýô{’œ¹ ¢)¹¼2ð–púÿ_×IFa}އÿsÏvÊåNÿ-ŠÏ·÷›óñÆ<é +n¥‡• °Òêߤôb……tJoÓݬ߾¤2¥ò\½÷TÓ9^±¾’+iné)ÿ(ù ·ìÚ)î¸êífM¹ñ¨Ë Wîç[±Ÿ7Äl s»pÇ6j›û¤éœheq‹FÙºO”ØÆo]²jÏÞ’ÖŽªúb<ÑË|råN†vã¡ïÄëâ:‹·dn:ãO\þ`Û¬µ>›’h|'ln÷&ƒõ; m™þdÕ´ÏL_ž,²‡ê†'ÁI;|)æ#ü—QÃÞ­+Ëv ½ÿáù‹{ª®.ÞüVyd‚[õÎöÅí>7±.»j¹WŸ¥|~|rò©1Ú{~͇FƇF´¬¹ô—ñ)?µYRò/7`=KZŠÛâçÕ£„‚‚q>2$‘¡Ø`³„£l#M”ÍQ.KWÓkØv1ÔB‘-Ñy-NÕ$ѹ#yÛç':É”c¢Ð‚x”™u$ #aL36Qèç¡Õ™MY:Êd³Âü s£í¹f†Z"À¼iÁUÀ›¬#¨ô(›Uâ…yô…‹ŠÈ²Ø¬Y’á˜/­a }úÝËG›£×í³yþ+æÑ׫ÈÉpHïÊt2 ¾òÄÈ-Y¿îs¨ÇR$UòÙBr[ÄPoŠˆ¹xÊø·èn|p[UñZ°Î¾wÔnYvãØ—;B°Õ™söÖÎ ÌYÕp©à'ÎåŸ;ªl翶鋱 ì—ÚÞUεyªä‹|Îçâ!§#a½yEœ?PpÓï[¸4v¶~>çhÀ°.Uu]ujÕ™±ŠÌgÑ-·hícC¢|C¼dã“¶åO2E[6 V¶t~r›5¢èŽO\ííéó9ýíÅ‚ò1g;|=ȃÜñ_ºÞüqnãìÝë5þßósæ<\XXQ—ÍÛ:éq·Ã¯«ì½Ã=ndêÒZwÅe]|:õÈû–Ô!;\P!otr~Àœœ³½Ñy]ÀfbãÓ¯žl6‹É©ÁJËi‰Á.-Áæ•xUýx\Öm\ywÌ1kü/|çzáœf=ú*Äüh&l£‡=bô—_ÿ—ÝÓ¥ h#ÍÅyîxÌÉŽ€áѦNvR¨ .e¤(;þ/ c½“µ¿Ôɪ×M$4Ê”m2è(šz †N6‚¤«ÆAdÂj DPgÍ‚&Š„y$‚‘¤&e.ä‘yú„‚”M)#ûá¹_º^Ò:E7DÔš(ÂBX)„˜óM’HÄZ$_g2ëôfšÉ‹Þú7uTïU§YËÃ,È ÂA´B˜ƒÈÍ#HŠÿ"Îæà!è3à‹1ÁˆèØHFêÒ|)ÒlyVJ‡XiMD…ÆFaQ‘¼ µáì…SŽ‘¢›¤$66æ%wJÍf¨¢$ú!"QO&²ÄP&Wi¤¸‚7YªRI\®†I¸Z–*ÅÓäIPªHЇSñ4µa1F+pEJÔLà µ*“Ñ+®îu‡'ã2©F‘¨Ö¨p™&õm¨ÎHœ(—i FI›ð´rŽþX)àq¥¦«¤2 .“#;ä M®Ð Úô¸úÌW{XTÇŸ™û‚" ¢Ñ D…uWA4*BÙE0ËsA@ƒ.Ë; « ò‰Xº AAE´•A ¾âZÔ 5MÅ‚M”ŒøJµöÓZ¡Ú¨hÕÐsïÊCR¿¯µÝßÞ½3gΜ9çÌ93gÕ1°ºHú•T÷[À‡„F¨B^鬌‹ˆRªÕü Uà„°@UŒB2H•€Þ¡Ê¨À`èö[Å…D‡ Óƒ ÀG€Ž1ª€(>"&*"\­ô‰ Q©ø°ðhÉÏ”¢“TJqB`x˜Zʇ¨+#Q+å³r!^¯.‘ø‘9 9éÆÐf2N;ø«{„Jm‹jW~Ì•Ü÷+ÜZö𲚠‚ vÔ­j^ÎÛÛ¦œK˜ø4rÖºå‡ÙÍXyeÃg†é‚ÙŠfHÔ_úûö•œ°Íóî VIõÿh»XøR¡sÙÐQ]÷çšî;}èLK~l×v*ûØÉ¤‚©+³v|Xþ¼¤Ô×CzgÏ _¿æ?»Ê‹éqp;é²ÿ…ûã߃–¬™É)„aP}Qƒlô€—Ì)ùЋ…†c°g!víÈÆN¤å¶´MÊd‡Âo/ Ûxê«ÂJë Çdª!ì–BUok°A±(e£4”lzït7¼#ÄÑ«0ZÚ_Έq”›¿L—¦O\–ž?¼œ¡‹1²ðŸrÓ²Õ°þ†™t„>Os<êŠ{ç=jÖ7±vvZv·mõ“ç]†&× Së3µ£wê´µ£´œþt¢wpÕáQ{6-Ûб¶õòêûžÚ­}Ž~Û©ºÅ´æT±OºÿÒ–ivÑ–æ6æÝ² ®êÔv¦µº9î /VݵvlŸÓ7É«*oyæÝ³nËÆM¾™¿šâ®9¿¸zMÑ—g=œô…ñÎ eÛ¾ÕèvñÌß³~K½¸¸ÿ’¦îÆøÜ?ŽÊ?[¸7½¸ùÇ·¸½MŸÿ¶ª™ë£—ü©dvèÂû§7DTý~žÙV«ì¸Î¾ëtÙ{î5—}mßíñ\vfzœUeÙɪÎÚ-•ùÝÑÚËv§õ;‹ñ¨èÎ î+/Æ_é¸`EMÿ÷ÿ]‰=úbDí•ÀnççAq%ë¾ *ÛèÖc§¤ñ2Ç¡1j1Ðá0„èÀ#·ÿvøÊerŸ©>3þ$D«S_Jm å½3£:ÚnÞòX<<¨Š ÎK#Ÿ™OÞö‚›pH÷äÛ[n•íÿl·aŸ_úk챈.ÊÊ­çÇ3V5–_¯°›³IUÔ k÷ºÔ{a™DQ5sfJgoÚ³òÂR—·¯mÞÇÌš—OšºÈòÝfG=üØOÛhÿØMëÒdso~s[‚cÉô 0…Æýyõ.ÿ¦ZwËöOá@ÃÜ8¼A“þ†þ!Ê¡ÿ’)Þ1èM¸jyäÿ€ÐÇNÆŸ 9'ÇFùÿ矎7ŽÈI8Ž‘…Ðú5ÒÂo-<ÉðlC5¨†4šxÐ4xŒÐšî0íh*Ò‹ôih5ü*ÐSÜ€JEÊl¤…q-p·ÂÛÆ’àE5x½øþ9*ÙI#i!-âè\;_à042í@ä­AŸ¡ø÷ÀS€6ÃØqÔ!ÌÉ5è êÅ€ üÜM"€Š…õAN&p×€¾¿C]èl‡ýp9><¶¤HÔÅ´šxZ¢¡8 ë°¯™· E|@ªŽ”‘zb$-T<íÇ´³¶¬/—R0"ˆB#ÀBAZRÃÊZ´|@ª 0Á‘8§ã­¸thÅÝ€Gċ̯ ØBihKú.“Éì´³1ÜGf,Èf‹œÜ7X¥„5"AçdôZ%¢°|YŒêP=Ú‰ö¢Ã¨ÖDWÑ Ô Þ±vùâ™8ÐãB\þ¨‚J¼7âfÐï,î$ãÁj²Àz“–kH-9BÎ’sä{r›Ü#)D™SK(-•Cí¦öQç©ót0]O勞Ñ×ÌEOÙ²vl[XÏ™s™\ ·‰ûˆ;&‘¢Q`—'Ø5î©$”–¬Fe¨\ܵÀ#è( Ýìô½²DÀL¬ÀA8b ^ŠsðÊ‹>Á{p>¶t.ã«ø&þîÑKXâ@&ØAÔ$–d’­dÙNöCD6’ä2¹6Þ&ÁF Ê–²§ÆQJ*M-¢VRk¨ƒT u•ê†}³¤çÐ~t ¶·Ñ·é»°“„¡7ƇyÎd3…L³"º›éf-E¯Ø²#ÙYìZ¶Žmd»Ø—œ=çÀ¹¤œœSsY\·»ÍÝ1;``ža®—x¢}H†>–½G!ºO‘v rÂW!–SÖÀÅ ¹G,¹,ó Ò(hÇ©±ìÔuÔK™£÷è6K-BYŒ–²àCáýT:€vsyø¥¡º©ÝŒ;ËäORKíãò9 w4}DmfÒ9)`*p™ ­Ç‘è ~ŒÃʹdjCëPÎCf¨Æì¶‚\k%ãq³‹ú ]O)™B<vp ÓN}ˆ|=²DÈbAvÂëï;Ã×{ÚT¹lŠÔËsò¤‰ÜÝÞquqæÇ{{ì§ÑŽ£ìíFÚŽ°±~ËÊÒBbnƱ .òTºix£»ÆH»»{ }×D $!hŒ<‚^ç1ò‘Ó8S‡qú›8ý8± ?Íöòä•®¼ñk…+ß„FÆA»RáÏ»Åv¨Ø¦ÝÅŽtœa¯tLWðF¬á•Æ ¼±_þ1mœgÎ6¾Ã` VÜ­çÞ@SŒù•e´¡Û€±Ò8ÀV»‹„mÀ-ÅÈd´Så©‹’¤óVÖþµ†ªk›tq{]gªNEÚ²EêS¤¬ÓÖI­ºì¿fÒþȤ-ìûÞ{P`YºJÓ¤I»ãsßç}žçý}ÇÇÕ@ÌöŠ6ŸâKÙ½ÍêÓD½9ͦCsr±qE/Ùi$æ®L*Éø±ˆfŽGYÕn­Wñk½_wxKÂËC­ÜWh(²Lýk¹b0ç÷GYo»|‘Ózú]H¿ëñëN³p¤eVTÕÓ²¶x4²9êb×hzCF­æe6ˆ>4*8š1HæcÓäN)æ‰="kåJ·2®>ÃfíQ5˜u]ÚÓï]^ûú²:Q\ÚN%÷ß]¬!u`v)蕃[#žÆ¢½š¯tqg•aTîØl¤6bº¥§3 £^_jH âÑ䄌‘DÍTßÎ.©vRíHð¢i¬_LµdQVoWdõ&áFPn|¼Õ7<ÖzûMb&»]6n9Ä×mÍíÖöîewŠèÃÖbdzy¿§ñ„R¦ì²Â’Q8‚JуÍXr—‹íò\ÉK#(h¹£^–iÄy‰¼Íî¨fбÈÊz¤ö+,’[lT)¸ßÀë¨V“6þªìu»ã5¡îáãñ ÈEKY½Ž4ÄÕ9gCLbkzð(ªj"÷¨15^ZË(²]Q‹¡:ˆ­O©´¶2çÔ¼óÑq‹ªíã«¡íöEÌNS”[&§9ê!6±u5LT1O´ö+ÛúÈ6YïpV 1:©¿ü‹´`Kƒêh¡üm*˜_¥ËÒE*ˆ÷R¡¼Ê`˜SqÌSAºLÛ;T({ŽÃr-p1|Áˆß§~im~ ¶‹Çu˜Ý ?°,QÁAýGü6Ç’ä°|ë;ôÕu¤? ¯¾wÑÇ›ˆ;A|_‚ï›ÐZZ°ia½¯²¿\³õkð×ãØËÇRîE[·ˆö¤e(æ'žßEyt’ÏU:…ú‡ £´dsÓ ÖŽ±ÞÖ³í[x9Ol[‹ÿ0ø,˜/ð9ëýlççÓò,,ïúæÁnĮ®ºmÛ:ÂÈ6ßéûï!lßö¿[ï„ÍŠûÓÊ÷\ß÷­íþfÃ~ÏÀ([÷oER9ñ[[Ùðƒ.3Øëvtæ÷)a®¥„ÔKIo%õô`»ª%oŸ\2}ùR_ä)]„‹\~Äå—ó\^áò"—¸œãäÒÇ¥—K7/—N.÷séàbåbábæ"x@Þ¿ïŸ7ÁÁë .‚óàp<~æÁS †õ6_çM¸¼Êåe./qù!—ç¹ø¹tq9Ä¥‹È¥Œ‹‰ y½Ðß‚_ƒ+à—àà2ø x,×À"ø˜ɾ¶šòšòù’pÂó/ˆùgÄüY1Ÿób~ŢÄü11ÿ°˜Šùˆøé^I–>/Ý-í‘RT#í’ìÒN©R²I’d•,’IÂ=ªí6‡L¡Án!¤­$(4"kTJ‚íèÃZ™Ò-h»BêvhínÍtFÿò( kEAxú”“}t,“ ¬:ë44¥:÷?Ž-¥PxömºG8@"®û–Ä{~.2ï ¼yÝ›gÞ¼îu—ÂÔŠÏÅ>G·iø“C¸ctKf ͦŽ%êŽúŽq]2UØ0Ÿ˜Óí®³Ouê“»ÏåxÒù–…„óTwo%>ævòtyºXo,ÚɾóŒãÉû\η„óFÈw5–¿+ñn3çð¿ÞŒI*Þ*ñš`¹&¼HdY£²5ó²ðG¢æÕöôÀŸpmmÙWíª®wU»rfú{ÎD«Tvåoí9Ëö.-ÐBÙa¼WÌTóSLx¥’Y¸…n௵åª,‹ –Å[1ýÝÚðÿS?ýŸì¨¤g7¾›¦ˆ ÛL”¸m}ư­° [¤*!“,å(}H6ldáªa›h§°î7S‹°fØj15¶ö°a‹”5}Ç—™šÍ¦ÇÆgä rkGG›—ýòát"›™ÎŒÎȾLvªIXÖ´<šNeO¤’M¼B «Ð*ÍN¥äÁÌÄñ™tfrºQN&n_+|äA¿¯ËýPzr, ¦=©±ãñìgõ§d8“™“ÓòDf,#§§ñ#u&O¦‹g•3£Û&‘ÉÆÙØšÈG,÷,e)Mc4N3$ÓЊ%î 6òÖ~ø#'Ì MƒQ=—ÕÏ¢…&Ø]4S¦¶¦õR šBÖ \“zæ'=´lôÐ ßF2…,™ÑîGiX“h¡Þ ¬Ägê+LGèAòcœ]䦇=‰ü¤¡Óz1ô3AqÔú´lÏ93c«Á3“X‰“ú<'`~VŽƒäÇ‘“¢ÇôºÂÇvéÎû–Ñk­¯r ?*©™ÎÒN[õgÜxÂÿ!À> endobj 34 0 obj<>/DW 1000/Type/Font>> endobj 35 0 obj<>stream H‰TP±NÄ0 Ýó91$`¨ºKD {.qK$êDn:ôïIJ{ˆÁ¶üì§÷lynŸ[ò äÛa‚Á“cœÃÂኣ'¨48oÓÞmÙN&‚ÌänN- êZÈ÷<œ¯p×÷•¾W'¯ì=zП閿qBJ  iÀá äùÅÄ‹™ä/óí׈ ·¾ÚÕƒÃ9‹lhD¨•z|jŽ‚äþÏÖu°_†Å±­•ÖÈÛ;^x媛»0gÛ雑bÁÞ¾C,j%Ĩjì endstream endobj 36 0 obj<> endobj 37 0 obj<>stream H‰ÜW Tgž¶gëâÑõA…â«¢ëkeÝj}Të« èþUÐÖÝsöœÝ³ggÎfîý¿{ÿïÿï½¹„ Ȥa!ã5XòÅ¢–ÉPsA„B•&I4œ*´3¤ƒP?Àx½ˆf3J¤"4´w"¨ÏÒlņÒ[f[.ÐàDÙˆµÝNIG¡½è°4HÁä X ¦ ä …2]«L‘ÆèÑàÕ5Сƒ<£G£2i:…W£¥‘ÒŸÅÿý 8×õ?sa9Ãs¯`:È) ¸kš%Kœþ;¹»êø{}='×´çw‹ Ýuú‘Ç{£îߨ|æ1 í/¿ÍúCËwÊwÖ4-¾9;Ó‡œ>óë<¿îÙBê3§V³»ÅßL§s^Õ™ÀÌð3Ç…œyQ_VmmLpãNl`ƒnÕœ€µ–²¦ É+¦7nŠ:Óå!>Õ½†É‚IýZJ° ¯ßµó9cOÞ(í,>³åÁ¶¢.N×òø¼ -a#/(À+ž‰0>ÊZmhö­+}°w¿pï ݪîåá Ÿ—•p/bv§n–ÇÀeBÅÝÇS¿u[²ÆÇ’ùŒ'[Ñ\±î2Û±6t¶~Éëü¼Õ›äâ—WF¬ ¬Xø4Ûý‡'ŸÂüm#Šé‡|å»ú¼âv@gR漊æ¤òÊà;ÂiÿI¼M: îu<ôŸÓx±SþwúoQ|q>¼_œ/êMO¸ Ü1…6œB5¿HéE0 è”®×ßnlX\™\y¡Ñwªù¯ÄPÉ•¶´>/ÿ8é,Suã4÷Ýš† 3³n=é2*Uûø6ô‡ QõbË÷ì#ê='NãÈT%­ZUÛ^QB;¿mñ¾©Ï÷”¶uT7–b >–S+w0t~#Yó ds榳øµëg®ýã¹äÓ{âÙÝ»™ Ö¯$´uZçªßjþâT±#Ì44LÜäw„b>Á~1dʶ²<™{Ø£.]Ù]}}QÝï:È£ã=jvœ_tÞoi3ëšG°Žû]Ú§ÉŸ˜”tzŒîa@ËÁá±âàˆÖ5Wÿ4.ùûvkrÁµ&t£wikI{ìœÚ'ËC¥a~O o_Üq#CîH‹æ .Mpxײ˜ &Ó§(§Ú6wGÛÆ[¶š¦F<¯?c&Lhý¯œú›#‰J{ú2#v«'Œf½hì9T¡žÀAz¾Áb&M8A…¼'%Ç £¤Q(ú2%i1"R-‹ÎB]Œ÷ÿã$¤Ihb¯Q|aa¡¤’ÐPb´[Ãa¶“fÊN…+Ò5ôvÂ!†" Æs$":¯%)ÚD:—£¤cѸ^?²Ds®™‚ b‰@aÑ“$ˆbj6vRèã¡Ó[ÌÙzÊl·‚)õ í¹f†F*@}iÁ]À›¤'M°ô(»Mêƒzõ…›϶ÚmÙÒ¡¨?­a ýúÜ+ G;ÑãöÅ<ÿ óð€ÁëUäbx"PïÎt1HcåÉᛳÿ~Óïàsk±\Å{bÍk• ÖlŠˆºrÚôWY7öV{uþFö³}ðð˜ÃZuëøÛCÑÕ™³öl™œ»ªéjá÷œk?tT?nàÿfÓçqóW²OQͶ{«• ýÎâb§#~½eEŒ?Xp;àk°$úÃ\α !]êšm5)ÕgãÒ2ã]ÅwXv—5¬øž_Ì–Ÿ¶¦ÏåX w ÊÇœëð÷"pÇ}9òàÍ–¥yGöçìZ¯ ü–Ÿ;ë§EÛrx['>í&ºÊÞ?ü`‚×­L}PjÛΘì+‚O¦oM¸=Þ òFç"êâœë‰ÎÛ6EP>ýêÍf³˜œZÔYNK ¶³SêS\ý·ŠnÓÊûcŽÛbä»Öÿ …äâ0áW!@3a3ÏÙƒP!Jùõ}Ù d1ÝJmá±¹($χºØQý0<ÚÔÅ‚êaµ!¥#Lå cÂÃÿEa¬w±ö9]¬F­ÉL#NPæ³QOáÀÜS0t²á$]5žƒ¸Íˆ‹€Þ– Ì òI#If#e)â‘ù†é¸‘”](úá¥_º^Ò ½‘¢"lMnÅm ™„ð M’H%(\¤@o¶è šÉ«Þú6ôT ïM¥Y+ÅVèâ\ALàyù8I‘ã^ÅÙ „¾¾SˆEGÂ0êa‡”àP‘jÏ·QzÈJgÆ E0„ z:*’—¡‘Cœ£ˆ0çš(ºIJ£££^s€ÜbjAÂ"öd<[JµVŽ¥ñ&ÉÕjyšSj@"¦Q¤È±Te"§%öëÃ)X*Û°„G£Ó°´ä ¯%P%ÁWLÓãKÂr­@Q£Uc mÊd ÉH˜ ThVE›ðtJ5ÿX¥õÃcª4®–+´˜B í ƒTešÒ¦—À4š ¸Þ?˜¯ò°(Ž,þªª{ñ£­ˆ€vðÀ%r ‡œ2‚"ê2œ¢À(W@ÀŒ#º€Êá™ Šx.Á($AÑD²¢®¸ºb\CÔDTpYõ#‰·a:oPÀew¿oÿÚoûMÏLU׫z¿ß;ªZp œçံȺŒTv!<}ü½=ßÚ¬Xà P*…TH‚¯‹w «~–ž^Úí£pñÀfJ¿ÁÍsž¯^Ý ÿ; þNh£K ·S€ààï§TLè\d¾§··àë7Oæ¬è$É[Ñ©àâç«TÌ Dã=¼' Š¯ç<Ï ·:]Æú!ªÁÕÉÇÉ]¡´” …LS¿_èçpUà(o%2í¢ÆÜG—©£zÇbtL"–…È!^¯«¨˜Èå›DpJÂÌKÆ’E¦¢~gp§¨b“#…Ä¥*Œƒxu’)„«ñQDç$ªDAžœð&£Ô q9#Ky³ÝàŒT½žN¶²}öšÉÿMšwõǪ£Õ¶Ñ1Qò5Gõ•DàÖ’kä‰aèz²þ…‚H Ák‰VžÇ :xøœI’‡u¤ò ¹éà^õPއb6««Ó*±“Ù˜ž¸»¦±1ª0[!6 sáŸO—ÐyÉ¿SéÌ9¹«~z{ô'µmÞ{Ó›’m°¬;(´ÇV‘î–¾»dÕÉ•SãȆÅ6/æ:䬬|2hZjSþC}ÁbgašLY3{ª˜kb{xÛ&ü\߸ºÃU=:ÿ¯›Kîn}Ô*Â…ºÇ ÿ+fñÇjÃÓ'¦º:ì^—û:kýTkÛÖƒÓ¦:žüõ­…–5xB—'ÿösì+1xC åyسæ°|X7K}˜Ý» ‡gŒž–¡]¯mG>²G‘³3æðHœØàSQ}±íÙáøsýŽÉýßÞ×ÎY>{ÏPÍ`PBÄA¨!ˆÂßxH*£­¦·Á×u¨éŒ¦¤„äȤ´‘¿ëu¤á´ž39·¬uWŽêÇ“#TȪŠÍ–: q‹Š¬Ï;¿ö¸v±s~îÂK³~œ³îóUÃŽþT|˜½ >]w7éJs“ËOÖ5©/ý–mrܧߥ{¹a›–6`×è¥Ò KËüÈ*+ÌbXj2妕xÍ6«ù›"ÈÑÚw¨ô½p«ø…ã¶ý}Ñ«ô]_&ŒÈ,;ôL9pçÓ–ÚÆœ’ÚQ«ŒšÛnÇ,TäEO{|úñþìõnëüv^mm:×;îکЯê—^+²RYŸÏlTÝ+ ºlkìzÄy&š|²+Ôä΋ÆUõéBµÉªƒCEHÉih)¼s18¯Y;óBþ¡lÝÅ“é÷'Ýo]ª%WðT×Ðã ‰–œÂ®ú [SýÿþJMáÔÀ¢&—G£^»-ÈÊù³[våãA¡½5X>ôÝ85ìnH †i÷ÞÎHÿêa'Çw ¹Ý”I“þK˜¶ô»¶WV¹z‹øÜd›‘Wï Z£Q¤¯Ž ‰›âœžòÝý+^šô* ¾ÞY+Fû9&>͸5Eº¿ž´ßéðõ§¾-ËõEp—Hð|? ›–o~Ùˆ¢Æ}ÏJ¤ÊK¡×壎WÃìv¡]ä7êÜÈ$CR§é~Ê/;ÞFâ=œmsñÎÛûž.X|Ä/ Ý2ñ¦•þòíýæR%,˜uЧÉ8ð‡3â‡ôCxûóá8œÛà @ÁŒd€ ÃF kaLçÌÄ*ð†F0ÆÀ ¢ ˜B4ì&7Á¼pp‡HÀï¹ØÿœLÃ'd°Wß ;á4ü~€a8£-\G×?¿¬(á'à6ïÌo(„CPµpŸØ’ý¤=«Äñ¨ev`!X}Â`3”â¸Cp‘Z°}¢™˜.þQ<ÃÑúrD] gq­gD A$œdiºWb¼XŽ<ôE›Ñz'Dã IpG^‡×¤Š– ô®()ŒÄ 7í ÄŠ·²a¢(‚8 Èd)¹DÓ~TCkx©¯Ô·OMÇ·¢»ø ×è £ÐÚù°RQs3lí¨YŠký ¥:ˆ=q ŽÄ“|²ž /èxú=}Íú3#6³P–ÁšÙK¾ÃO·CwEôS‘K‚œËГ.ˆs,‚Bhк<”d¯¥ù¬AùnÁ]”x1æxÄ(#ãPä(d6™CÉïI4I$;È1RMN“³¤<¡“©=Nýh¦+h- ´’ÖÐ{ô´rS°Dö+guì<»Êš8àæp*.†Kæ¶rÜ·\;÷„ÓñÀ[ Øò*~OÇ^—.D+:ˆaâ&±år<ÑŒ+Äã^ Ç%Q­€•(iÈÝ:D´v#wzöŽA5|QZ‡þ­‡+ЄønA3<‡—HŽŸ)EÞ'vÈï,⎲ý”B2ˆ†ä‘"ä¹’T¡œ!7¥Ñ`º„¦Ð º‰î ;é z†^GOˆL‚žÊÜ™›ÏBØ–ͳÙ'l7+aÕì «ç(7ƒó縵\·—;Êã¹›¼œwàsQ*ø*þß"1–˜K&K”’j©Ä Í Õ@_À9¨„ªÞ¹O²ÉR Ÿ‘VÆ1 m  ¨!½N´Üeb…˜I€ÏÃÝög´ð=r•N%óY8YˆüiI ]l8ÛËæ@O”ÌŸD€’Û¿ò߀ŠÏ¥Ÿ3Êç²ò’–ÃRÈ£Ë;ÊÄ`Ò”d?=ˆ“ 3Á†3ƒët:w‚XRZ#=BªÁQ*aÓÙ #lígwÑL¥iûüj nâ:ÃÿÙ]í®å ²0¶la´b‘[–ÍÅ7Õ–,É„Û2T ¤ÕÅ¢6C±':.%¥e(©e2™^¦™“&N¦=2Б3)õ[û’'fÜNé„KûPJ&Cè4ŨÿYÉÆN™¶éJßùïçÿ÷\öì~Œûçî­aîm|&Ü#”^Àêù_ ÏIè&—ž”û‹’õÜ%²{ñôâïùæ~Bª¹Ë}œWÜžÜ w ÀÅ'nÂ5îìÁ§FBß9ŸâÞû>iöÂc®÷SŸ#“Þžžî/yº:;ÚÛ¶mÝÒÚ²¹¹ÉÝèj¨®Î騤n´+¶ µë­5Õ–ªÊukÍå¦5e¥%ÅÆ"Y ¾µBcPí‹*Ô¥‚SݹÓÍd5†ŠØ E”*¨ê[íC•¨î¦¬öô¢çÁ/xzóžÞeObR<àq7*AU¡T%Kö E?P5…Þ×ù~œºPŠ‚ÝŽJÐ2P(‰*AÚw|,Œ°¿L±Ñ¯ú“Fw#dŒÅÈ#G«ÔÉ ©ê&:ÃU;3È¥X­QAZ­X ”wc£tp( XívÍÝH‰?¡Æ)¨½tKw¿ž†Š~*éi”qv;pNÉ4Χ^Ëš u•Œª£±ÊÇ4–£Ü…y´ê›w,OEìÜìœ]iµò© e\ab*uV¡o EVZí¬Õ4ìc9G_4Õ‡©_ÃQ …ÌÆÑ"”œÁ” »vWùûKªA¦‰Rh‘Ú«Ž¥EqnjR†§ì³55Þ¹ÜM¨ *©‘ˆj§=VU‹Ög* 5\êý¿¬ÖÄ Ñaú ËÖÉòZCûO].ÚÐÀ–ˆäÇ9Å»uy›»ñx–ó©“&  âØÆ´Îf~»Mð¹¬â(ÐSC‘¼¬@Ü: Þf—F¹(³Ì/YÖía–SK–åð¨Š+ù ž_ë¨ì\þ¯1U® ŽuRRùoÌɼ=VCCû"J0-Œmhd•”··/Û ]ëðV®ÀqV^·â¢<°ìÌ„H øõE=š•d\•º†(}ÔÝ™o5£Ýþ_esŸ°(< +”I;]«å®UòªòJR<,8¹ÐȾTʸÒlÐäâ'ÝØî}òÞã&ù¨>Œ+¯kÂGxª²ësÀW;Ä Ü1\˜àFaHœbìäOC'ÚFn´½Ž6ú)Ð×¹Ž\õ»Ÿ a„‚ˆ#4ÄnÄ·C\¼8‡±Ï("Œ7ü* {a#R³pj„ÛP'Za§pTÔ91ÿC ï0œ„ ©–ÅäþŒònÑ>Å^§ð!´cl—á Tbí;ÐÖn¨‡^ñæ» •ØÏÏÄ?‘CHw¨ƒÜø?`ß#XÇ¢AŒ}^pÁ~Þßups??Ò Ú×!Z„á=¹à9äYýmÈkHÇÑgc]hßãéÃZùOa?Òfìw?ÿ;¸N~—. ÿVá¬%Ÿëy=g c¶ãX(œ(’ÍHÿ†x$ï…zé.„°ÿ—(¿²±Ã~¼0¦SóøøŸÃ¡Â3lb¹d€{Âu®C†Üy¼wE¼€s~Ü86_‘î’ïâX è¸1¤ý Ø_;¢ ÑU@§á 1"ŠÑFy—8 É­Û„¹FØÚ@Ûf¬SG¡þÝ…úuŠu6ã¸ú–âÅ]Ѐ1.Þ á€e<Ä÷‡ø£Sr cŽa|7ׂßA'¹·ó?oνÁ›¹óTä¿£SŒ%—`½o˜¹:ü99'LJÜ_ÕÛô¶Go›YË5Ï6ÛlY®iö-Fgkë‘lòߪ±µÔ™mž:&Wy»×ÛnÎTÛn!Þ«kµ½êiµF4#Ž£Ìüêfêmu_ŸøÞÄY¡ *+q–Íå²7KnÿrOEQEQ[:K~ííÒ¿’Ò—¥ôפô¨”þ²”î“ÒÛ¥t“”vIi‡”Þ$UÈfÙ$—É%²Q–eQdN¹"›»éu±Í_!šÖ :oâXË6:> 8"søuG×ò!.î¥í®PVÊ Ó6WˆJƒû#B¦5ÔRîÕ,‘H–ä˜êŒ•Ús@HîÌykj Ñù„â }V³Äˆ*ƒÚK¨9¡‘^ Tï±ô˜»Ë;úÏh¢…Öõô²¸V^¡Á©ÁFޱ/rô²d{CbÚ0jÓº6Í´i]k©¥Bá©Õh+crµ¹ì»ê=ÁÞ¢j0‰ˆÒsÇÇ,ôT\Q2Þ«…g4žc4–¤WÕd€zÕ€’ñx†ù3ûÔ@NG"™Þd`ÖçõÕX@›ƒÏ4L¯J÷ý¥tsÐ@âÿÚc–ÄY— ,ãÀô32N3óË8Í2N³ŒÞ=cp<ÜKBƒ‘Œ ½>:½Ìqª¢V»Ö[išìÖç­ËnyÅúä(Ƴ¸ßëJÌäö¹}Ì„ †™ÊØ+_Ády¥Ëný€¼S0™P]®ö‚ë˜ë ×ËìKp<À€•Ìåæ¹S³f[«Kcç ÇŽ üúÃmŒ“ÖåÝ J Ô„FÑày®¦Hªåúv‹kÀôÐÓ¿è0=òô›=ÐãYô0´l¶—ÛËØàÚ†Ç ?ÿØk€à‰3¯Ÿr×¹øì+ûð䊷¬H‚šR±º¤ôuë¸cº=ý÷[6“ QÝèܶuû–ÖJîÆÂÅ7Þ¼¸ÀùòtA?[ÿÏ~ÚÿØ]FxeùýåÛù'°U´¥qD™<œhR±£±ÿàÔÌ:S‡1Í?I¥bÖ„Á ú„€ƒý…o—Xu -E©ˆ‚ѳ—Xc>µäK…,ÒÿÒ©k·B‡þˆþN:v­}9­c;H¸»wïî¾w3ª·ä\Ýqj6]£ªZZ+ÏR£üÈDÉ:šxÃA»ãUFÙb¼ÒnðwŠnaŠ7Œ ´3Á.VXÒÒ}—³„8÷!ù¹t(2šóU¢¶ðá‘/6S±¢qwè1äzŒ;½:~5Ø{Ô¶Å Íès&æ©Lù|ÏЬé'ð0Ä€wˆ*ÔɰÀXÔ\êçÝ1u5÷Kþé=¦º»ÎWjå 8áÿ7‰>‹eaòzáÏ»{]¾ø²N-¡º/çy|꿽o·ß—Ö‡UbZú½üLO2Ì endstream endobj 38 0 obj<> endobj 39 0 obj<> endobj 40 0 obj<> endobj 41 0 obj<> endobj 42 0 obj<> endobj 43 0 obj<> endobj 44 0 obj<>stream Acrobat Distiller 7.0.5 (Windows) PScript5.dll Version 5.2.2 2006-05-20T10:15:20-07:00 2006-05-20T10:15:20-07:00 application/pdf Microsoft PowerPoint - Visualizing paired comparisons.ppt spencerg uuid:28d6f688-f975-4318-9d8c-43849fdfb608 uuid:106edd56-f57f-4f43-84d8-3fda65c3679a endstream endobj 45 0 obj<> endobj xref 0 46 0000000000 65535 f 0000086470 00000 n 0000086597 00000 n 0000086793 00000 n 0000088251 00000 n 0000088488 00000 n 0000088615 00000 n 0000088799 00000 n 0000091425 00000 n 0000091553 00000 n 0000091749 00000 n 0000093930 00000 n 0000094060 00000 n 0000094234 00000 n 0000096221 00000 n 0000096351 00000 n 0000096536 00000 n 0000099084 00000 n 0000099214 00000 n 0000099399 00000 n 0000100561 00000 n 0000100691 00000 n 0000100865 00000 n 0000104141 00000 n 0000104271 00000 n 0000104444 00000 n 0000105278 00000 n 0000105664 00000 n 0000105786 00000 n 0000109544 00000 n 0000109777 00000 n 0000109970 00000 n 0000110130 00000 n 0000116723 00000 n 0000116853 00000 n 0000117037 00000 n 0000117324 00000 n 0000117553 00000 n 0000124629 00000 n 0000124868 00000 n 0000125106 00000 n 0000125270 00000 n 0000125305 00000 n 0000125329 00000 n 0000125434 00000 n 0000129082 00000 n trailer <> startxref 116 %%EOF multcompView/man/0000755000176200001440000000000015144373673013535 5ustar liggesusersmultcompView/man/plotBoxes.Rd0000644000176200001440000001112614571350202015766 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plotBoxes.R \name{plotBoxes} \alias{plotBoxes} \title{plot multcomp displays} \usage{ plotBoxes( obj, at, width, horizontal, col, add, label.levels, label.groups, orientation = "", ... ) } \arguments{ \item{obj}{a matrix describing which levels (rows) will be plotted with which groups (columns). For plotTs and plotBoxes, obj is a matrix of numbers from (-1, 0, 1). For plotLetters, obj is a logical matrix = TRUE if that "letter" (group or column of obj) is to be plotted with that level (row of obj).} \item{at}{an array with one row for each level and 3 columns giving low, middle and high levels for the display for that level.} \item{width}{an array with one row for each group of levels in the display and 3 columns giving low, middle and high levels for the display for that group.} \item{horizontal}{A logical scalar indicating whether the list of items compared reads left to right (horizontal = TRUE) or top to bottom (horizontal = FALSE). If this multcomp graphic accompanies boxplots for different levels or groups compared, the 'boxplot' argument 'horizontal' is the negation of the multcomp plot 'horizontal' argument.} \item{col}{The color for each group of items or factor levels. The colors will cross the different items or factor levels and will therefore have the orientation specified via 'horizontal'. If the number of columns exceeds length(col), col is recycled. For alternative choices for col, see "Color Specification" in the \code{\link{par}} help page.} \item{add}{TRUE to add to an existing plot; FALSE to start a new plot. The names of the factor levels or items compared will be plotted only if add=FALSE.} \item{label.levels}{Distance from the plot region to print the names of the levels as a proportion of the plot range; NA for no level labels.} \item{label.groups}{Distance from the plot region to print the names of the groups as a proportion of the plot range; NA for no level labels.} \item{orientation}{If 'reversed', the base(s) of each "T" or triangle indicating the master level(s) of that "undifferentiated class" will point right or up (depending on horizontal) rather than down or left.} \item{...}{graphical parameters can be given as described on the \code{\link{plot}} help page or the \code{\link[grid]{gpar}} help page.} } \value{ "Done" } \description{ Helper functions for plot.multcompTs and plot.multcompLetters. These not intended to be called directly and are hidden in a namespace. You can use 'getAnywhere' to see them. } \details{ The requested graphic is either plotted by itself or added to an existing plot as specified by the arguments. "plotTs" and "plotBoxes" use traditional R graphics and will not be discussed further here. "plotLetters" uses 'grid' graphics, because it seems to provide more support for controlling the side-by-side placement of "Letters" of possibly different colors and widths. The "Letters" display will be positioned in the "plot region" defined by fig and mar, assuming the entire device region is 37 lines both wide and tall. Thus, the plot region is diff(fig[1:2])*37 lines wide and diff(fig(1:2])*37 lines high. If, for example, fig = c(0.9, 1, 0, 1), this makes the plot region 3.7 lines wide. With the default mar=c(5, 4, 4, 2)+0.1 lines, the "width" of the plot region is therefore 3.7 - (4.1+2.1) = (-2.5) lines. "plotLetters" initially ignores this contradictory negative width, and centers the plot at the midpoint of h0 = fig[1]+mar[2]/37, h1 = fig[2]-mar[4]/37, v0 = fig[3]+mar[1]/37, and v1 = fig[4]-mar[3]/37. The "Letters" for the different levels compared are rescaled from at[, "center"] to fit inside At.rng = if(horizontal) c(h0, h1) else c(v0, v1). With "n" levels compared and at.rng = range(at[, "center"]), at[, "center"] is expanded to (at.rng+/-0.5) and rescaled to match At.rng; if(diff(At.rng)<=0), an error message is issued. Meanwhile, the "Letters" are centered at the midpoint of W.rng = if(horizontal) c(v0, v1) else v(h0, h1) [the opposite of At.rng]; the argument "width" used by plotTs and plotBoxes is not used (and not even accepted) by plotLetters. If(label.levels), these are positioned in the midpoint of the right margin in the "W" direction. } \examples{ # Designed to be called from plot.multcompTs # or plot.multcompLetters, NOT directly by users. } \seealso{ \code{\link{plot.multcompTs}} \code{\link{plot.multcompLetters}} \code{\link[grid]{gpar}} } \author{ Spencer Graves } \keyword{aplot} \keyword{internal} multcompView/man/print.multcompLetters.Rd0000644000176200001440000000217214414537040020351 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/print.multcompLetters.R \name{print.multcompLetters} \alias{print.multcompLetters} \title{print a multcompLetters object} \usage{ \method{print}{multcompLetters}(x, all = FALSE, ...) } \arguments{ \item{x}{an object of class 'multcompLetters'} \item{all}{FALSE to print only the character vector representations of the 'multcompLetters' comparison summary; TRUE to print also the matrix representation.} \item{...}{Other optional print parameters as described on the \code{\link{print}} help page.} } \value{ the named, character vector representation of the 'multcompLetters' evaluation of the distance relationships } \description{ print method for an object of class 'multcompLetters'. } \details{ Prints only the Letters component of the 'multcompLetters' list unless all=TRUE. } \examples{ dif3 <- c(FALSE, FALSE, TRUE) names(dif3) <- c("A-B", "A-C", "B-C") dif3L <- multcompLetters(dif3) dif3L print(dif3L) print(dif3L, TRUE) } \seealso{ \code{\link{multcompLetters}} } \author{ Spencer Graves } \keyword{dplot} multcompView/man/extract_p.Rd0000644000176200001440000000311514571351230016001 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/extract_p.R \name{extract_p} \alias{extract_p} \alias{extract_p.default} \alias{extract_p.TukeyHSD} \alias{extract_p.mc} \title{Extracts p-values} \usage{ extract_p(x) \method{extract_p}{default}(x) \method{extract_p}{TukeyHSD}(x) \method{extract_p}{mc}(x) } \arguments{ \item{x}{A object that has p-values or logical values.} } \value{ A named vector with p-values or logical values. } \description{ For a given object it will look for the column named "p adj" or "difference" and extract its value keeping its names } \section{Methods (by class)}{ \itemize{ \item \code{extract_p(default)}: \item \code{extract_p(TukeyHSD)}: extract p values from a TukeyHSD object \item \code{extract_p(mc)}: }} \examples{ experiment <- data.frame(treatments = gl(11, 20, labels = c("dtl", "ctrl", "treat1", "treat2", "treatA2", "treatB", "treatB2", "treatC", "treatD", "treatA1", "treatX")), y = c(rnorm(20, 10, 5), rnorm(20, 20, 5), rnorm(20, 22, 5), rnorm(20, 24, 5), rnorm(20, 35, 5), rnorm(20, 37, 5), rnorm(20, 40, 5), rnorm(20, 43, 5), rnorm(20, 45, 5), rnorm(20, 60, 5), rnorm(20, 60, 5))) exp_tukey <- TukeyHSD(exp_aov <- aov(y ~ treatments, data = experiment)) extract_p(exp_tukey) if(require(pgirmess)){ extract_p(kruskalmc(y ~ treatments, data = experiment)) } } \seealso{ \code{\link{multcompLetters}} \code{\link{multcompTs}} } \author{ Luciano Selzer } \keyword{array} \keyword{manip} multcompView/man/multcompTs.Rd0000644000176200001440000001145015144402442016157 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/multcompTs.R \name{multcompTs} \alias{multcompTs} \title{"T" depiction of undifferentiated classes} \usage{ multcompTs(x, compare = "<", threshold = 0.05, sep = ".") } \arguments{ \item{x}{One of the following: (1) A square, symmetric matrix with row names. (2) A vector with hyphenated names, which identify individual items or factor levels after "strsplit(..., '-')". (3) An object of class "dist". If x (or x[1]) is not already of class "logical", it is replaced with do.call(compare, list(x, threshold)), which by default converts numbers (typically p-values) less than 0.05 to TRUE and everything else to FALSE. If x is a matrix, its diagonal must be or must convert to FALSE.} \item{compare}{function or binary operator; not used if class(x) is "logical".} \item{threshold}{Second (reference) argument to "compare".} \item{sep}{Concatenation character for names of objects with identical similarity / dissimilarity patterns. The output of multcompTs is matrix for which the number of rows = (number of columns + number of uses of the "sep" character).} } \value{ An object of class "multcompTs", which is a matrix of values -1, 0, 1, with one row for each level compared and one column for each "T", read as follows: 1 = base of the "T" represented by that column, 0 = level(s) not significantly different, and (-1) = levels(s) significantly different. If two or more levels have the same pattern of significant and insignificant differences, they are combined into a single column that can be represented by a "T" with multiple bases. The column name will be a character string concatenating all row names with "1" in that column separated by the "sep" character. Thus, the matrix should have as many 1's as it has rows. Also, the lower triangular portion should have as many "-1's" as there are "TRUE" (e.g., significant) differences among the comparisons. } \description{ Convert a logical vector or a vector of p-values or a correlation or distance matrix into a matrix with an associated visual display to show whether the differences between items exceed a threshold. Designed for use with the output of functions like TukeyHSD, diststats, simint, simtest, csimint, csimtestmultcomp, friedmanmc, kruskalmcpgirmess. } \details{ Produces a matrix of class "multcompTs", describing the "undifferentiated classes" that identify the other factor levels or items that are not distinct or not significantly different from the "base" of the "T"; if two or more levels have the same pattern of significant differences, the two are combined into one "T" with two "bases". The resulting T's are similar to the "undifferentiated classes" discussed by Donaghue (2004). } \examples{ ## ## 0. Conference presentation comparing Ts and Letters ## dir(system.file('doc', package='multcompView'), pattern='\\\\.pdf$', full.name=TRUE) ## ## 1. logical vector indicating different pairs ## dif3 <- c(FALSE, FALSE, TRUE) names(dif3) <- c("a-b", "a-c", "b-c") multcompTs(dif3) ## ## 2. numeric vector indicating statistical significance ## dif4 <- c(.01, .02, .03, 1) names(dif4) <- c("a-b", "a-c", "b-d", "a-d") (diff4.T <- multcompTs(dif4)) plot(diff4.T) ## ## 3. Distance matrix ## dJudge <- dist(USJudgeRatings) dJt <- multcompTs(dJudge, compare='>', threshold = median(dJudge)) # comparison of 43 judges; compact but undecipherable: plot(dJt, cex.axis=.5) x <- array(1:9, dim=c(3,3), dimnames=list(LETTERS[1:3], NULL) ) d3 <- dist(x) dxTs <- multcompTs(d3, compare=">", threshold=2) plot(dxTs) d3d <- dist(x, diag=TRUE) dxdTs <- multcompTs(d3d, compare=">", threshold=2) \dontshow{stopifnot(} all.equal(dxTs, dxdTs) \dontshow{)} d3u <- dist(x, upper=TRUE) dxuTs <- multcompTs(d3d, compare=">", threshold=2) \dontshow{stopifnot(} all.equal(dxTs, dxuTs) \dontshow{)} ## ## 4. cor matrix ## set.seed(4) x100 <- matrix(rnorm(100), ncol=5, dimnames=list(NULL, LETTERS[1:5]) ) cx <- cor(x100) cxTs <- multcompTs(abs(cx), threshold=.3) plot(cxTs) } \references{ John R. Donaghue (2004) "Implementing Shaffer's multiple comparison procedure for a large number of groups", pp. 1-23 in Benjamini, Bretz and Sarkar (eds) Recent Developments in Multiple Comparison Procedures (Institute of Mathematical Statistics Lecture Notes-Monograph Series vol. 47) Spencer Graves and Hans-Peter Piepho (2006) "Simple Visualizations of Paired Comparisons". See \code{system.file("extdata", "VisualizingPairedComparisons.pdf", package = "multcompView")}. } \seealso{ \code{\link{multcompBoxplot}} \code{\link{multcompLetters}} \code{\link{plot.multcompTs}} \code{\link{vec2mat}} \code{\link{dist}} } \author{ Spencer Graves and Hans-Peter Piepho } \keyword{dplot} multcompView/man/plot.multcompTs.Rd0000644000176200001440000001454214571351231017143 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plot.multcompTs.R \name{plot.multcompTs} \alias{plot.multcompTs} \title{plot multcomp graphics} \usage{ \method{plot}{multcompTs}( x, horizontal = FALSE, col = 1:6, type = c("Ts", "boxes"), orientation = c("standard", "reverse"), add = FALSE, at, width, fig = c(0, 1, 0, 1), lwd = 3, label.levels = if (add) NA else 0.05, label.groups = NA, T.base = 0.4, ... ) } \arguments{ \item{x}{an object of class 'multcompTs' or 'multcompLetters'.} \item{horizontal}{A logical scalar indicating whether the list of items compared reads left to right (horizontal = TRUE) or top to bottom (horizontal = FALSE). If this multcomp graphic accompanies boxplots for different levels or groups compared, the 'boxplot' argument 'horizontal' is the negation of the multcomp plot 'horizontal' argument.} \item{col}{The color for each group of items or factor levels. The colors will cross the different items or factor levels and will therefore have the orientation specified via 'horizontal'. If the number of columns exceeds length(col), col is recycled. For alternative choices for col, see "Color Specification" in the \code{\link{par}} help page.} \item{type}{An alternative display for either multcompTs or multcompLetters is 'boxes' (or rectangles). If type="boxes" with "multcompTs", the "base(s)" of each "T" will be indicated by a triangle.} \item{orientation}{The "standard" orientation has the 'multcompTs' pointing towards the names of the items or factor levels; with the "reverse" orientation, the bases of the "Ts" point away. By default, the names are on the left or below unless the mean of the relevant 'fig' range is less than 0.5.} \item{add}{TRUE to add to an existing plot; FALSE to start a new plot. The names of the factor levels or items compared will be plotted only if add=FALSE.} \item{at}{A numeric vector or matrix or a list with components "at" and "width". If a list, both components must be either a numeric vector or matrix. The numeric vector "at" (whether the function argument or "at" component of the "at" list) must be either a numeric vector or matrix giving the locations where the "Ts" or "Letters" graphics should be drawn. length(at) is 1, 2 or 3 times the number of the number of factor levels or items compared. If length(at) is twice the number of levels or items compared, it gives the range of the display for that level; the base of a "T" will be at the midpoint. If length(at) is three times the number of items compared, the intermediate number will be the center of the base of the "T".} \item{width}{A numeric vector or matrix with as many rows as "Ts" or "groups" and with up to three columns. With one column, it will be the "center" of the plot range for that group. With two columns, they will delimit the range. With three, they will provide "bottom", "center", and "top" of the range for that set of grouping indicators. If "at" is a list, the argument "width" is ignored and is taken from the list "at".} \item{fig}{A numerical vector of the form 'c(x1, x2, y1, y2)' giving the coordinates of the figure region in the display region of the plot device, as described on the \code{\link{par}} help page.} \item{lwd}{width of line to connect elements of "T" graphics that might not otherwise be connected.} \item{label.levels}{NA for no labels or distance away from the plot for the labels as a proportion of the plot range.} \item{label.groups}{NA for no labels or distance away from the plot for the labels as a proportion of the plot range.} \item{T.base}{A numeric scalar giving the proportion of the available space devoted to the base of the Ts; used only when type="Ts".} \item{...}{graphical parameters can be given as described on the \code{\link{plot}} help page or for plot.multcompLetters as describe on the \code{\link[grid]{gpar}} help page.} } \value{ A list with two components: \item{at }{ A matrix with three columns giving the middle and extremes of the display for each of the factor levels or items compared. } \item{width }{ A matrix with as many rows as "Ts" or comparator levels and with two columns giving the plot range for that comparator level. } } \description{ Plot graphic(s) for multcompTs or multcompLetters objects } \details{ The requested graphic is either plotted by itself or added to an existing plot as specified by the arguments. The placement can be controlled by 'fig' and 'at'. The fontsize and fontface of a plot of a multcompLetters object with 'type = "Letters"' can be adjusted as describe on the \code{\link[grid]{gpar}} help page. } \examples{ ## ## plot(multcompTs(...)) ## dif4 <- c(.1, .02, .03, 1) names(dif4) <- c("A-B", "A-C", "B-C", "A-D") (mcT4 <- multcompTs(dif4)) # Standard plot, base of "Ts" point left mcT4.1 <- plot(mcT4, label.groups=0.05) # Redo using "at" = list plot(mcT4, label.groups=0.05, at=mcT4.1) # Same plot with group labels closer to the figure plot(mcT4, label.groups=0.02) # Base of "Ts" point right plot(mcT4, label.groups=TRUE, orientation="r") # Base of "Ts" point down plot(mcT4, horizontal=TRUE, label.groups=0.05) # Base of "Ts" point up plot(mcT4, horizontal=TRUE, label.groups=0.05, orientation="r") # Same 4 plots but with boxes & triangles, not Ts plot(mcT4, label.groups=0.05, type="b") plot(mcT4, label.groups=0.05, orientation="r", type="b") plot(mcT4, horizontal=TRUE, label.groups=0.05, type="b") plot(mcT4, horizontal=TRUE, label.groups=0.05, orientation="r", type="b") ## ## plot(multcompLetters(...)) ## # ... using dif4 from above (mcL4 <- multcompLetters(dif4, Letters=LETTERS)) # Standard plot \dontrun{ # Requires (grid) mcL4.1 <- plot(mcL4, label.groups=0.05) # Redo using "at" = list plot(mcL4, label.groups=0.05, at=mcL4.1) # With bold face and larger font plot(mcL4, label.groups=0.05, fontsize=28, fontface="bold") # Horizontal rather than vertical plot(mcL4, horizontal=TRUE, label.groups=0.05) } # Same as boxes rather than letters plot(mcL4, label.groups=0.05, type="b") plot(mcL4, horizontal=TRUE, label.groups=0.05, type="b") } \seealso{ \code{\link{multcompTs}} \code{\link{multcompLetters}} \code{\link{multcompBoxplot}} \code{\link[grid]{gpar}} } \author{ Spencer Graves } \keyword{aplot} multcompView/man/multcompBoxplot.Rd0000644000176200001440000001375114571346717017245 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/multcompBoxplot.R \name{multcompBoxplot} \alias{multcompBoxplot} \title{boxplot with multcomp graphics} \usage{ multcompBoxplot( formula, data, horizontal = TRUE, compFn = "TukeyHSD", sortFn = "mean", decreasing = TRUE, plotList = list(boxplot = list(fig = c(0, 0.75, 0, 1)), multcompTs = list(fig = c(0.7, 0.85, 0, 1)), multcompLetters = list(fig = c(0.87, 0.97, 0.03, 0.98), fontsize = 20, fontface = "bold")) ) } \arguments{ \item{formula}{a two sided formula like "y~z", where both "y" and "z" are columns of the data.frame "data", "y" is numeric, and "z" is a factor. This will be passed as the first argument for both 'boxplot' and 'compFn', and so must work in both contexts. NOTE: Any more complicated formula may produce errors or unanticipated results.} \item{data}{A data.frame for evaluating 'formula'.} \item{horizontal}{TRUE for horizontal boxplots and vertical multcompTs and / or multcompLetters; FALSE for the opposite.} \item{compFn}{a function whose output will serve as the the only non-default input to either 'multcompTs' or 'multcompLetters'. The default "TukeyHSD" actually translates to 'TukeyHSD(aov(formula, data))[[1]][, "p adj"]'.} \item{sortFn}{If sortFn is a function or a character string naming a function, it is used to summarize the subset of y corresponding to each level of z into a single number, which will then be used to sort the levels of z according to the argument 'decreasing'. This step is skipped if sortFn is NULL or NA or if it is neither a function nor a character string that might name a function. If sortFn is a character string but a function by that name is not found in the search path, multcompBoxplot stops with, 'Error in do.call(sortFn, list(x = x)) : could not find function ...'.} \item{decreasing}{If the levels of z are to be sorted using the output of 'sortFn', this is uses as the 'decreasing' in 'order' to sort the levels of z for plotting.} \item{plotList}{A list with names in c("boxplot", "multcompTs", "multcompLetters"). Replicates are allowed. If present, they produce, e.g., multiple "multcompTs" side by side. This can be used to compare the visual effects of different arguments to "plot.multcompTs". Each component of 'plotList' is itself a list of arguments to pass to either "boxplot", "plot.multcompTs" or "plot.multcompLetters". Placement can be controlled via 'fig' arguments passed (indirectly) of the form 'c(x1, x2, y1, y2)'. If(horizontal==TRUE), fig gives the coordinates of the figure region in the display region of the plot device, as described on the \code{\link{par}} help page; if(horizontal==FALSE), fig[c(3,4,1,2)] gives c(x1, x2, y1, y2) for placement of that portion of the plot.} } \value{ This function invisibly returns a list with one component for each component of plotList containing the output of the appropriate "plot.multcomp" call plus the output of "compFn". } \description{ Create boxplots with multcompTs and / or multcompLetters } \details{ For formula = y~z, if 'sortFn' is a function or the name of a function, 'multcompBoxplot' starts by applying sortFn to the subsets of y corresponding to each level of z, and then sorting those summaries in increasing or decreasing order, per 'decreasing'. If 'sortFn' is NULL or NA, this sort step is skipped. 'multcompBoxplot' then creates 'boxplot' as specified in 'plotList'. Next, 'compFn' is called to generate comparisons to feed to the functions (\code{\link{multcompTs}} and / or \code{\link{multcompLetters}}, whose output is then passed to (\code{\link{plot.multcomp}}) for plotting. Components of the relevant sublists of 'plotList' are made available to \code{\link{par}} or (for \code{\link{plot.multcompLetters}}) to \code{\link[grid]{gpar}}. } \examples{ # Example from help("TukeyHSD") multcompBoxplot(breaks~tension, data=warpbreaks) # 'sortFn' can be either a function or a function name # default order is 'decreasing=TRUE' multcompBoxplot(breaks~tension, data=warpbreaks, sortFn=median, decreasing=FALSE) ################## library(multcomp) data(recovery) # Horizontal boxplots with both # multcomp Ts and Letters on the right # Using recovery{multcomp} data set multcompBoxplot(minutes~blanket, recovery) # Plotting boxes rather than letters and Ts multcompBoxplot(minutes~blanket, recovery, plotList=list( boxplot=list(fig=c(0, 0.75, 0, 1), las=1, cex.axis=1.5), multcompTs=list(fig=c(0.7, 0.85, 0, 1), type='boxes'), multcompLetters=list( fig=c(0.87, 0.97, 0.03, 0.98), type='boxes') ) ) #################### # Vertical boxplots with both # multcomp Ts and Letters on the top multcompBoxplot(minutes~blanket, recovery, horizontal=FALSE) # Horizontal boxplots with 2 different # displays of the "Ts" on the left multcompBoxplot(minutes~blanket, recovery, plotList=list( boxplot=list(fig=c(0.3, 1, 0, 1)), multcompTs=list(fig=c(0, 0.15, 0, 1), orientation="reverse"), multcompTs=list(fig=c(0.15, 0.3, 0, 1), type="boxes", orientation="reverse", mar=c(5,2, 4, 0)+.1) ) ) library(MASS) anorx <- multcompBoxplot(Postwt~Treat, data=anorexia) \dontrun{ # Confirm than sortFn=NULL or NA # leaves the order unchanged library(multcomp) data(cholesterol) cholesterol$trt3 <- with(cholesterol, factor( as.character(trt), levels=levels(trt)[c(5:4,1:3)])) multcompBoxplot(response ~ trt3, cholesterol, sortFn=NULL) multcompBoxplot(response ~ trt3, cholesterol, sortFn=NA) } } \seealso{ \code{\link{boxplot}} \code{\link{multcompTs}} \code{\link{multcompLetters}} \code{\link{plot.multcomp}} \code{\link{TukeyHSD}} \code{\link{par}} \code{\link[grid]{gpar}} } \author{ Spencer Graves } \keyword{aplot} multcompView/man/multcompLetters.Rd0000644000176200001440000001730514571350201017216 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/multcompLetters.R \name{multcompLetters} \alias{multcompLetters} \alias{multcompLetters2} \alias{multcompLetters3} \alias{multcompLetters4} \title{Letter summary of similarities and differences} \usage{ multcompLetters( x, compare = "<", threshold = 0.05, Letters = c(letters, LETTERS, "."), reversed = FALSE ) multcompLetters2(formula, x, data, ...) multcompLetters3(z, y, x, data, ...) multcompLetters4(object, comp, ...) } \arguments{ \item{x}{One of the following: (1) A square, symmetric matrix with row names. (2) A vector with hyphenated names, which identify individual items or factor levels after "strsplit". (3) An object of class "dist". If x (or x[1]) is not already of class "logical", it is replaced with do.call(compare, list(x, threshold)), which by default converts numbers (typically p-values) less than 0.05 to TRUE and everything else to FALSE. If x is a matrix, its diagonal must be or must convert to FALSE.} \item{compare}{function or binary operator; not used if class(x) is "logical".} \item{threshold}{Second (reference) argument to "compare".} \item{Letters}{Vector of distinct characters (or character strings) used to connect levels that are not significantly different. They should be recognizable when concatenated. The last element of "Letters" is used as a prefix for a reuse of "Letters" if more are needed than are provided. For example, with the default "Letters", if 53 distinct connection columns are required, they will be "a", ..., "z", "A", ..., "Z", and ".a". If 54 are required, the last one will be ".b". If 105 are required, the last one will be "..a", etc. (If the algorithm generates that many distinct groups, the display may be too busy to be useful, but the algorithm shouldn't break.)} \item{reversed}{A logical value indicating whether the order of the letters should be reversed. Defaults to FALSE.} \item{formula}{The formula used to make the test (lm, aov, glm, etc.). Like y ~ x.} \item{data}{Data used to make the test.} \item{...}{Extra arguments passed to multcompLetters.} \item{z}{Categorical variables used in the test.} \item{y}{Value of the response variable.} \item{object}{An object of class aov or lm for the time being.} \item{comp}{A object with multiple comparison or a function name to perform a multiple comparison.} } \value{ An object of class 'multcompLetters', which is a list with the following components: \item{Letters }{character vector with names = the names of the levels or groups compared and with values = character strings in which common values of the function argument "Letters" identify levels or groups that are not significantly different (or more precisely for which the corresponding element of "x" was FALSE or was converted to FALSE by "compare"). } \item{monospacedLetters }{ Same as "Letters" but with spaces so the individual grouping letters will line up with a monospaced type font. } \item{LetterMatrix }{Logical matrix with one row for each level compared and one column for each "Letter" in the "letter-based representation". The output component "Letters" is obtained by concatenating the column names of all columns with TRUE in that row. } multcompLetters4 will return a named list with the terms containing a object of class 'multcompLetters' as produced by \code{multcompLetters}. } \description{ Convert a logical vector or a vector of p-values or a correlation or distance matrix into a character-based display in which common characters identify levels or groups that are not significantly different. Designed for use with the output of functions like TukeyHSD, diststats, simint, simtest, csimint, csimtestmultcomp, friedmanmc, kruskalmcpgirmess. } \details{ Produces a "Letter-Based Representation of All- Pairwise Comparisons" as described by Piepho (2004). (The present algorithm does NOT perform his "sweeping" step.) \code{multcompLettersx} are wrapper of multcompLetters that will reorder the levels of the data so that the letters appear in a descending order of the mean. \code{mulcompletters3} is similar to \code{multcompletters2} except that it uses vector names to separate and the later has an formula interface. \code{multcompLetters4} will take a aov or lm object and a comparison test and will produce all the letters for the terms and interactions. } \section{Functions}{ \itemize{ \item \code{multcompLetters2()}: \item \code{multcompLetters3()}: create a compact letters display and order the letters \item \code{multcompLetters4()}: create a compact letters display using a aov object }} \examples{ ## ## 1. a logical vector indicating signficant differences ## dif3 <- c(FALSE, FALSE, TRUE) names(dif3) <- c("A-B", "A-C", "B-C") dif3L <- multcompLetters(dif3) dif3L print(dif3L) print(dif3L, TRUE) ## ## 2. numeric vector indicating statistical significance ## dif4 <- c(.01, .02, .03, 1) names(dif4) <- c("a-b", "a-c", "b-d", "a-d") (diff4.T <- multcompLetters(dif4)) (dif4.L1 <- multcompLetters(dif4, Letters=c("*", "."))) # "Letters" can be any character strings, # but they should be recognizable when # concatenated. ## ## 3. distance matrix ## dJudge <- dist(USJudgeRatings) dJl <- multcompLetters(dJudge, compare='>', threshold = median(dJudge)) # comparison of 43 judges; compact but undecipherable: dJl x <- array(1:9, dim=c(3,3), dimnames=list(LETTERS[1:3], NULL) ) d3 <- dist(x) dxLtrs <- multcompLetters(d3, compare=">", threshold=2) d3d <- dist(x, diag=TRUE) dxdLtrs <- multcompLetters(d3d, compare=">", threshold=2) \dontshow{stopifnot(} all.equal(dxLtrs, dxdLtrs) \dontshow{)} d3u <- dist(x, upper=TRUE) dxuLtrs <- multcompLetters(d3d, compare=">", threshold=2) \dontshow{stopifnot(} all.equal(dxLtrs, dxuLtrs) \dontshow{)} ## ## 4. cor matrix ## set.seed(4) x100 <- matrix(rnorm(100), ncol=5, dimnames=list(NULL, LETTERS[1:5]) ) cx <- cor(x100) cxLtrs <- multcompLetters(abs(cx), threshold=.3) ## ##5. reversed ## dif3 <- c(FALSE, FALSE, TRUE) names(dif3) <- c("A-B", "A-C", "B-C") dif3L <- multcompLetters(dif3) dif3L.R <- multcompLetters(dif3, rev = TRUE) dif3L dif3L.R ## ##6. multcompletters2 usage experiment <- data.frame(treatments = gl(11, 20, labels = c("dtl", "ctrl", "treat1", "treat2", "treatA2", "treatB", "treatB2", "treatC", "treatD", "treatA1", "treatX")), y = c(rnorm(20, 10, 5), rnorm(20, 20, 5), rnorm(20, 22, 5), rnorm(20, 24, 5), rnorm(20, 35, 5), rnorm(20, 37, 5), rnorm(20, 40, 5), rnorm(20, 43, 5), rnorm(20, 45, 5), rnorm(20, 60, 5), rnorm(20, 60, 5))) exp_tukey <- TukeyHSD(exp_aov <- aov(y ~ treatments, data = experiment)) exp_letters1 <- multcompLetters(exp_tukey$treatments[,4]) exp_letters1 #Notice lowest mean treatments gets a "e" #Ordered letters multcompLetters2(y ~ treatments, exp_tukey$treatments[,"p adj"], experiment) multcompLetters2(y ~ treatments, exp_tukey$treatments[,"p adj"], experiment, reversed = TRUE) ##7. multcompletters3 usage multcompLetters3("treatments", "y", exp_tukey$treatments[,"p adj"], experiment) ##8. multcompletters4 usage multcompLetters4(exp_aov, exp_tukey) } \references{ Piepho, Hans-Peter (2004) "An Algorithm for a Letter-Based Representation of All-Pairwise Comparisons", Journal of Computational and Graphical Statistics, 13(2)456-466. } \seealso{ \code{\link{multcompBoxplot}} \code{\link{plot.multcompLetters}} \code{\link{print.multcompLetters}} \code{\link{multcompTs}} \code{\link{vec2mat}} } \author{ Spencer Graves, Hans-Peter Piepho and Luciano Selzer } \keyword{dplot} multcompView/man/plotLetters.Rd0000644000176200001440000001103314571345663016344 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plotLetters.R \name{plotLetters} \alias{plotLetters} \title{plot multcomp displays} \usage{ plotLetters( obj, at, horizontal, col, add, label.levels, font.family = "mono", fig = par("fig"), mar = par("mar"), ... ) } \arguments{ \item{obj}{a matrix describing which levels (rows) will be plotted with which groups (columns). For plotTs and plotBoxes, obj is a matrix of numbers from (-1, 0, 1). For plotLetters, obj is a logical matrix = TRUE if that "letter" (group or column of obj) is to be plotted with that level (row of obj).} \item{at}{an array with one row for each level and 3 columns giving low, middle and high levels for the display for that level.} \item{horizontal}{A logical scalar indicating whether the list of items compared reads left to right (horizontal = TRUE) or top to bottom (horizontal = FALSE). If this multcomp graphic accompanies boxplots for different levels or groups compared, the 'boxplot' argument 'horizontal' is the negation of the multcomp plot 'horizontal' argument.} \item{col}{The color for each group of items or factor levels. The colors will cross the different items or factor levels and will therefore have the orientation specified via 'horizontal'. If the number of columns exceeds length(col), col is recycled. For alternative choices for col, see "Color Specification" in the \code{\link{par}} help page.} \item{add}{TRUE to add to an existing plot; FALSE to start a new plot. The names of the factor levels or items compared will be plotted only if add=FALSE.} \item{label.levels}{Distance from the plot region to print the names of the levels as a proportion of the plot range; NA for no level labels.} \item{font.family}{character string naming the font family used by "plotLetters". This function plots the different "Letters" in different colors by plotting one color at a time. It's currently not smart enough to align the letters properly except by assuming a mono-spaced font.} \item{fig}{figure region = (x0, x1, y0, y1) as a proportion of the device region.} \item{mar}{margin = (lower, left, upper, right) in lines.} \item{...}{graphical parameters can be given as described on the \code{\link{plot}} help page or the \code{\link[grid]{gpar}} help page.} } \value{ "Done" } \description{ Helper functions for plot.multcompTs and plot.multcompLetters. These not intended to be called directly and are hidden in a namespace. You can use 'getAnywhere' to see them. } \details{ The requested graphic is either plotted by itself or added to an existing plot as specified by the arguments. "plotTs" and "plotBoxes" use traditional R graphics and will not be discussed further here. "plotLetters" uses 'grid' graphics, because it seems to provide more support for controlling the side-by-side placement of "Letters" of possibly different colors and widths. The "Letters" display will be positioned in the "plot region" defined by fig and mar, assuming the entire device region is 37 lines both wide and tall. Thus, the plot region is diff(fig[1:2])*37 lines wide and diff(fig(1:2])*37 lines high. If, for example, fig = c(0.9, 1, 0, 1), this makes the plot region 3.7 lines wide. With the default mar=c(5, 4, 4, 2)+0.1 lines, the "width" of the plot region is therefore 3.7 - (4.1+2.1) = (-2.5) lines. "plotLetters" initially ignores this contradictory negative width, and centers the plot at the midpoint of h0 = fig[1]+mar[2]/37, h1 = fig[2]-mar[4]/37, v0 = fig[3]+mar[1]/37, and v1 = fig[4]-mar[3]/37. The "Letters" for the different levels compared are rescaled from at[, "center"] to fit inside At.rng = if(horizontal) c(h0, h1) else c(v0, v1). With "n" levels compared and at.rng = range(at[, "center"]), at[, "center"] is expanded to (at.rng+/-0.5) and rescaled to match At.rng; if(diff(At.rng)<=0), an error message is issued. Meanwhile, the "Letters" are centered at the midpoint of W.rng = if(horizontal) c(v0, v1) else v(h0, h1) [the opposite of At.rng]; the argument "width" used by plotTs and plotBoxes is not used (and not even accepted) by plotLetters. If(label.levels), these are positioned in the midpoint of the right margin in the "W" direction. } \examples{ # Designed to be called from plot.multcompTs # or plot.multcompLetters, NOT directly by users. } \seealso{ \code{\link{plot.multcompTs}} \code{\link{plot.multcompLetters}} \code{\link[grid]{gpar}} } \author{ Spencer Graves } \keyword{aplot} \keyword{internal} multcompView/man/vec2mat2.Rd0000644000176200001440000000242714571351231015441 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/vec2mat2.R \name{vec2mat2} \alias{vec2mat2} \title{Convert a vector of hyphenated names into a character matrix.} \usage{ vec2mat2(x, sep = "-") } \arguments{ \item{x}{Vector of hyphenated names} \item{sep}{"strsplit" character to apply to names(x).} } \value{ A character matrix with rownames = x and with the character string preceding the "sep" character in the first column and the character string following the "sep" character in the second column. } \description{ Convert a vector of hyphenated names into a character matrix with 2 columns containing the names split in each row. } \details{ If each element of x does not contain exactly 1 "sep" character, an error is issued. } \examples{ vec2mat2(c("a-b", "a-c", "b-c")) vec2mat2(c("a-b", "b-a")) \dontshow{ (tst3 <- substring(try( vec2mat2(c("a", "b-a", "b-c"))), 1, 20) =="Error in vec2mat2(c(") # Error: name without a sep character (tst4 <- substring(try( vec2mat2(c("a-c", "b-a", "b-c-d"))), 1, 20) =="Error in vec2mat2(c(") # Error: multiple hyphens (sep characters) } } \seealso{ \code{\link{vec2mat}} \code{\link{multcompLetters}} } \author{ Spencer Graves } \keyword{array} \keyword{manip} multcompView/man/plotTs.Rd0000644000176200001440000001140214571351231015274 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plotTs.R \name{plotTs} \alias{plotTs} \title{plot multcomp displays} \usage{ plotTs( obj, at, width, horizontal, col, add, lwd, label.levels, label.groups, T.base, orientation = "", ... ) } \arguments{ \item{obj}{a matrix describing which levels (rows) will be plotted with which groups (columns). For plotTs and plotBoxes, obj is a matrix of numbers from (-1, 0, 1). For plotLetters, obj is a logical matrix = TRUE if that "letter" (group or column of obj) is to be plotted with that level (row of obj).} \item{at}{an array with one row for each level and 3 columns giving low, middle and high levels for the display for that level.} \item{width}{an array with one row for each group of levels in the display and 3 columns giving low, middle and high levels for the display for that group.} \item{horizontal}{A logical scalar indicating whether the list of items compared reads left to right (horizontal = TRUE) or top to bottom (horizontal = FALSE). If this multcomp graphic accompanies boxplots for different levels or groups compared, the 'boxplot' argument 'horizontal' is the negation of the multcomp plot 'horizontal' argument.} \item{col}{The color for each group of items or factor levels. The colors will cross the different items or factor levels and will therefore have the orientation specified via 'horizontal'. If the number of columns exceeds length(col), col is recycled. For alternative choices for col, see "Color Specification" in the \code{\link{par}} help page.} \item{add}{TRUE to add to an existing plot; FALSE to start a new plot. The names of the factor levels or items compared will be plotted only if add=FALSE.} \item{lwd}{line width for the display outline.} \item{label.levels}{Distance from the plot region to print the names of the levels as a proportion of the plot range; NA for no level labels.} \item{label.groups}{Distance from the plot region to print the names of the groups as a proportion of the plot range; NA for no level labels.} \item{T.base}{A numeric scalar giving the proportion of the available space devoted to the base of the Ts.} \item{orientation}{If 'reversed', the base(s) of each "T" or triangle indicating the master level(s) of that "undifferentiated class" will point right or up (depending on horizontal) rather than down or left.} \item{...}{graphical parameters can be given as described on the \code{\link{plot}} help page or the \code{\link[grid]{gpar}} help page.} } \value{ "Done" } \description{ Helper functions for plot.multcompTs and plot.multcompLetters. These not intended to be called directly and are hidden in a namespace. You can use 'getAnywhere' to see them. } \details{ The requested graphic is either plotted by itself or added to an existing plot as specified by the arguments. "plotTs" and "plotBoxes" use traditional R graphics and will not be discussed further here. "plotLetters" uses 'grid' graphics, because it seems to provide more support for controlling the side-by-side placement of "Letters" of possibly different colors and widths. The "Letters" display will be positioned in the "plot region" defined by fig and mar, assuming the entire device region is 37 lines both wide and tall. Thus, the plot region is diff(fig[1:2])*37 lines wide and diff(fig(1:2])*37 lines high. If, for example, fig = c(0.9, 1, 0, 1), this makes the plot region 3.7 lines wide. With the default mar=c(5, 4, 4, 2)+0.1 lines, the "width" of the plot region is therefore 3.7 - (4.1+2.1) = (-2.5) lines. "plotLetters" initially ignores this contradictory negative width, and centers the plot at the midpoint of h0 = fig[1]+mar[2]/37, h1 = fig[2]-mar[4]/37, v0 = fig[3]+mar[1]/37, and v1 = fig[4]-mar[3]/37. The "Letters" for the different levels compared are rescaled from at[, "center"] to fit inside At.rng = if(horizontal) c(h0, h1) else c(v0, v1). With "n" levels compared and at.rng = range(at[, "center"]), at[, "center"] is expanded to (at.rng+/-0.5) and rescaled to match At.rng; if(diff(At.rng)<=0), an error message is issued. Meanwhile, the "Letters" are centered at the midpoint of W.rng = if(horizontal) c(v0, v1) else v(h0, h1) [the opposite of At.rng]; the argument "width" used by plotTs and plotBoxes is not used (and not even accepted) by plotLetters. If(label.levels), these are positioned in the midpoint of the right margin in the "W" direction. } \examples{ # Designed to be called from plot.multcompTs # or plot.multcompLetters, NOT directly by users. } \seealso{ \code{\link{plot.multcompTs}} \code{\link{plot.multcompLetters}} \code{\link[grid]{gpar}} } \author{ Spencer Graves } \keyword{aplot} \keyword{internal} multcompView/man/vec2mat.Rd0000644000176200001440000000460514571350202015354 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/vec2mat.R \name{vec2mat} \alias{vec2mat} \title{Convert a vector with hyphenated names into a matrix.} \usage{ vec2mat(x, sep = "-") } \arguments{ \item{x}{Either (1) a vector with hyphenated names indicating pairs of factor levels, groups or items that are and are not significantly different or (2) a matrix indicating same. If x is already a matrix, it is checked for symmetry. NAs are not allowed.} \item{sep}{"strsplit" character to apply to names(x).} } \value{ A symmetric matrix of the same class as the input with names obtained from unique(strsplit(names(x))). All nonspecified elements will be 1 if class(x) is numeric, FALSE if logical and "" if character. Used by the functions 'multcompLetters' and 'multcompTs'. } \description{ Convert a vector with hypehnated names into a symmetric matrix with names } \details{ x must have names each of which contains exactly one hyphen; if not, vec2mat issues an error message. If the same comparison is present multiple times, the last value is used; no check is made for duplicates. } \examples{ dif3 <- c(FALSE, FALSE, TRUE) names(dif3) <- c("a-b", "a-c", "b-c") vec2mat(dif3) dif3. <- 1:3 names(dif3.) <- c("a-b", "a-c", "b-c") vec2mat(dif3.) dif.ch <- c("this",'is','it') names(dif.ch) <- c("a-b", "a-c", "b-c") vec2mat(dif.ch) vec2mat(array(1, dim=c(2,2))) \dontshow{ try(vec2mat(array(1:24, dim=2:4)))# must be 2-d try(vec2mat(array(1:6, dim=2:3)))# must be square try(vec2mat(array(1:4, dim=c(2,2))))# must be symmetric try(vec2mat(array(1, dim=c(2,2)))) # diag should be 0 try(vec2mat(array(TRUE, dim=c(2,2)))) # diag should be FALSE try(vec2mat(array("a", dim=c(2,2)))) # diag should be "" try(vec2mat(c(1:3, NA))) # NAs not allowed try(vec2mat(1:3))# Error: No names errVec2 <- 1:3 names(errVec2) <- c("a", "b-a", "b-c") try(vec2mat(errVec2))# Error: missing hyphen (sep character) errVec3 <- 1:3 names(errVec3) <- c("a-c", "b-a", "b-c-d") try(vec2mat(errVec3)) # Error: multiple hyphens (sep characters) dif4 <- 1:4 names(dif4) <- c("a-b", "a-c", "b-c", "b-a") # Both "b-a" and "a-b" specified; # use the latest. vec2mat(dif4) } } \seealso{ \code{\link{multcompLetters}} \code{\link{multcompTs}} } \author{ Spencer Graves } \keyword{array} \keyword{manip} multcompView/man/plot.multcompLetters.Rd0000644000176200001440000001344414571351231020177 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/plot.multcompLetters.R \name{plot.multcompLetters} \alias{plot.multcompLetters} \alias{plot.multcomp} \title{plot multcomp graphics} \usage{ \method{plot}{multcompLetters}( x, horizontal = FALSE, col = 1:6, type = c("Letters", "boxes"), add = FALSE, at, width, fig = c(0, 1, 0, 1), label.levels = if (add) NA else 0.05, label.groups = NA, ... ) } \arguments{ \item{x}{an object of class 'multcompTs' or 'multcompLetters'.} \item{horizontal}{A logical scalar indicating whether the list of items compared reads left to right (horizontal = TRUE) or top to bottom (horizontal = FALSE). If this multcomp graphic accompanies boxplots for different levels or groups compared, the 'boxplot' argument 'horizontal' is the negation of the multcomp plot 'horizontal' argument.} \item{col}{The color for each group of items or factor levels. The colors will cross the different items or factor levels and will therefore have the orientation specified via 'horizontal'. If the number of columns exceeds length(col), col is recycled. For alternative choices for col, see "Color Specification" in the \code{\link{par}} help page.} \item{type}{An alternative display for either multcompTs or multcompLetters is 'boxes' (or rectangles). If type="boxes" with "multcompTs", the "base(s)" of each "T" will be indicated by a triangle.} \item{add}{TRUE to add to an existing plot; FALSE to start a new plot. The names of the factor levels or items compared will be plotted only if add=FALSE.} \item{at}{A numeric vector or matrix or a list with components "at" and "width". If a list, both components must be either a numeric vector or matrix. The numeric vector "at" (whether the function argument or "at" component of the "at" list) must be either a numeric vector or matrix giving the locations where the "Ts" or "Letters" graphics should be drawn. length(at) is 1, 2 or 3 times the number of the number of factor levels or items compared. If length(at) is twice the number of levels or items compared, it gives the range of the display for that level; the base of a "T" will be at the midpoint. If length(at) is three times the number of items compared, the intermediate number will be the center of the base of the "T".} \item{width}{A numeric vector or matrix with as many rows as "Ts" or "groups" and with up to three columns. With one column, it will be the "center" of the plot range for that group. With two columns, they will delimit the range. With three, they will provide "bottom", "center", and "top" of the range for that set of grouping indicators. If "at" is a list, the argument "width" is ignored and is taken from the list "at".} \item{fig}{A numerical vector of the form 'c(x1, x2, y1, y2)' giving the coordinates of the figure region in the display region of the plot device, as described on the \code{\link{par}} help page.} \item{label.levels}{NA for no labels or distance away from the plot for the labels as a proportion of the plot range.} \item{label.groups}{NA for no labels or distance away from the plot for the labels as a proportion of the plot range.} \item{...}{graphical parameters can be given as described on the \code{\link{plot}} help page or for plot.multcompLetters as describe on the \code{\link[grid]{gpar}} help page.} } \value{ A list with two components: \item{at }{ A matrix with three columns giving the middle and extremes of the display for each of the factor levels or items compared. } \item{width }{ A matrix with as many rows as "Ts" or comparator levels and with two columns giving the plot range for that comparator level. } } \description{ Plot graphic(s) for multcompTs or multcompLetters objects } \details{ The requested graphic is either plotted by itself or added to an existing plot as specified by the arguments. The placement can be controlled by 'fig' and 'at'. The fontsize and fontface of a plot of a multcompLetters object with 'type = "Letters"' can be adjusted as describe on the \code{\link[grid]{gpar}} help page. } \examples{ ## ## plot(multcompTs(...)) ## dif4 <- c(.1, .02, .03, 1) names(dif4) <- c("A-B", "A-C", "B-C", "A-D") (mcT4 <- multcompTs(dif4)) # Standard plot, base of "Ts" point left mcT4.1 <- plot(mcT4, label.groups=0.05) # Redo using "at" = list plot(mcT4, label.groups=0.05, at=mcT4.1) # Same plot with group labels closer to the figure plot(mcT4, label.groups=0.02) # Base of "Ts" point right plot(mcT4, label.groups=TRUE, orientation="r") # Base of "Ts" point down plot(mcT4, horizontal=TRUE, label.groups=0.05) # Base of "Ts" point up plot(mcT4, horizontal=TRUE, label.groups=0.05, orientation="r") # Same 4 plots but with boxes & triangles, not Ts plot(mcT4, label.groups=0.05, type="b") plot(mcT4, label.groups=0.05, orientation="r", type="b") plot(mcT4, horizontal=TRUE, label.groups=0.05, type="b") plot(mcT4, horizontal=TRUE, label.groups=0.05, orientation="r", type="b") ## ## plot(multcompLetters(...)) ## # ... using dif4 from above (mcL4 <- multcompLetters(dif4, Letters=LETTERS)) # Standard plot \dontrun{ # Requires (grid) mcL4.1 <- plot(mcL4, label.groups=0.05) # Redo using "at" = list plot(mcL4, label.groups=0.05, at=mcL4.1) # With bold face and larger font plot(mcL4, label.groups=0.05, fontsize=28, fontface="bold") # Horizontal rather than vertical plot(mcL4, horizontal=TRUE, label.groups=0.05) } # Same as boxes rather than letters plot(mcL4, label.groups=0.05, type="b") plot(mcL4, horizontal=TRUE, label.groups=0.05, type="b") } \seealso{ \code{\link{multcompTs}} \code{\link{multcompLetters}} \code{\link{multcompBoxplot}} \code{\link[grid]{gpar}} } \author{ Spencer Graves } \keyword{aplot} multcompView/DESCRIPTION0000644000176200001440000000213115144537041014454 0ustar liggesusersPackage: multcompView Type: Package Title: Visualizations of Paired Comparisons Version: 0.1-11 Authors@R: c( person("Spencer", "Graves", role = "aut"), person("Hans-Peter", "Piepho", role = "aut"), person("Luciano", "Selzer", email = "luciano.selzer@gmail.com", role = c("aut", "cre")), person("Sundar", "Dorai-Raj", role = "ctb")) Description: Convert a logical vector or a vector of p-values or a correlation, difference, or distance matrix into a display identifying the pairs for which the differences were not significantly different. Designed for use in conjunction with the output of functions like TukeyHSD, dist (stats), simint, simtest, csimint, csimtest (multcomp), friedmanmc, kruskalmc (pgirmess). License: GPL-2 Imports: grid Suggests: multcomp, pgirmess, MASS RoxygenNote: 7.3.3 NeedsCompilation: no Packaged: 2026-02-15 18:53:35 UTC; lucia Author: Spencer Graves [aut], Hans-Peter Piepho [aut], Luciano Selzer [aut, cre], Sundar Dorai-Raj [ctb] Maintainer: Luciano Selzer Repository: CRAN Date/Publication: 2026-02-16 06:50:09 UTC